@cqa-lib/cqa-ui 1.1.180 → 1.1.182

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.
Files changed (63) hide show
  1. package/esm2020/lib/add-prerequisite-cases-section/add-prerequisite-cases-section.component.mjs +176 -0
  2. package/esm2020/lib/custom-textarea/custom-textarea.component.mjs +6 -3
  3. package/esm2020/lib/custom-toggle/custom-toggle.component.mjs +35 -0
  4. package/esm2020/lib/execution-screen/execution-step.models.mjs +1 -1
  5. package/esm2020/lib/execution-screen/main-step-collapse/main-step-collapse.component.mjs +36 -4
  6. package/esm2020/lib/file-upload/file-upload.component.mjs +87 -0
  7. package/esm2020/lib/item-list/item-list.component.mjs +59 -0
  8. package/esm2020/lib/item-list/item-list.model.mjs +2 -0
  9. package/esm2020/lib/step-builder/step-builder-ai-agent/step-builder-ai-agent.component.mjs +136 -0
  10. package/esm2020/lib/step-builder/step-builder-custom-code/step-builder-custom-code.component.mjs +65 -0
  11. package/esm2020/lib/step-builder/step-builder-database/step-builder-database.component.mjs +1 -1
  12. package/esm2020/lib/step-builder/step-builder-document/step-builder-document.component.mjs +241 -0
  13. package/esm2020/lib/step-builder/step-builder-document-generation-template-step/step-builder-document-generation-template-step.component.mjs +176 -0
  14. package/esm2020/lib/step-builder/step-builder-record-step/step-builder-record-step.component.mjs +31 -0
  15. package/esm2020/lib/test-case-details/custom-edit-step/custom-edit-step.component.mjs +3 -3
  16. package/esm2020/lib/test-case-details/element-list/element-list.component.mjs +50 -0
  17. package/esm2020/lib/test-case-details/element-popup/element-popup-data.mjs +5 -0
  18. package/esm2020/lib/test-case-details/element-popup/element-popup-ref.mjs +32 -0
  19. package/esm2020/lib/test-case-details/element-popup/element-popup.component.mjs +272 -0
  20. package/esm2020/lib/test-case-details/element-popup/element-popup.service.mjs +97 -0
  21. package/esm2020/lib/test-case-details/normal-step/normal-step.component.mjs +151 -19
  22. package/esm2020/lib/test-case-details/test-data-modal/test-data-modal-data.mjs +5 -0
  23. package/esm2020/lib/test-case-details/test-data-modal/test-data-modal-environment.model.mjs +10 -0
  24. package/esm2020/lib/test-case-details/test-data-modal/test-data-modal-parameter.model.mjs +8 -0
  25. package/esm2020/lib/test-case-details/test-data-modal/test-data-modal-ref.mjs +32 -0
  26. package/esm2020/lib/test-case-details/test-data-modal/test-data-modal.component.mjs +301 -0
  27. package/esm2020/lib/test-case-details/test-data-modal/test-data-modal.service.mjs +97 -0
  28. package/esm2020/lib/ui-kit.module.mjs +63 -3
  29. package/esm2020/lib/utils/tw-overlay-container.mjs +9 -4
  30. package/esm2020/public-api.mjs +20 -1
  31. package/fesm2015/cqa-lib-cqa-ui.mjs +3059 -1020
  32. package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
  33. package/fesm2020/cqa-lib-cqa-ui.mjs +3056 -1043
  34. package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
  35. package/lib/add-prerequisite-cases-section/add-prerequisite-cases-section.component.d.ts +88 -0
  36. package/lib/custom-textarea/custom-textarea.component.d.ts +2 -1
  37. package/lib/custom-toggle/custom-toggle.component.d.ts +12 -0
  38. package/lib/execution-screen/execution-step.models.d.ts +2 -0
  39. package/lib/execution-screen/main-step-collapse/main-step-collapse.component.d.ts +30 -1
  40. package/lib/file-upload/file-upload.component.d.ts +26 -0
  41. package/lib/item-list/item-list.component.d.ts +25 -0
  42. package/lib/item-list/item-list.model.d.ts +16 -0
  43. package/lib/step-builder/step-builder-ai-agent/step-builder-ai-agent.component.d.ts +47 -0
  44. package/lib/step-builder/step-builder-custom-code/step-builder-custom-code.component.d.ts +27 -0
  45. package/lib/step-builder/step-builder-document/step-builder-document.component.d.ts +81 -0
  46. package/lib/step-builder/step-builder-document-generation-template-step/step-builder-document-generation-template-step.component.d.ts +55 -0
  47. package/lib/step-builder/step-builder-record-step/step-builder-record-step.component.d.ts +16 -0
  48. package/lib/test-case-details/element-list/element-list.component.d.ts +26 -0
  49. package/lib/test-case-details/element-popup/element-popup-data.d.ts +16 -0
  50. package/lib/test-case-details/element-popup/element-popup-ref.d.ts +13 -0
  51. package/lib/test-case-details/element-popup/element-popup.component.d.ts +60 -0
  52. package/lib/test-case-details/element-popup/element-popup.service.d.ts +23 -0
  53. package/lib/test-case-details/normal-step/normal-step.component.d.ts +17 -2
  54. package/lib/test-case-details/test-data-modal/test-data-modal-data.d.ts +31 -0
  55. package/lib/test-case-details/test-data-modal/test-data-modal-environment.model.d.ts +12 -0
  56. package/lib/test-case-details/test-data-modal/test-data-modal-parameter.model.d.ts +11 -0
  57. package/lib/test-case-details/test-data-modal/test-data-modal-ref.d.ts +13 -0
  58. package/lib/test-case-details/test-data-modal/test-data-modal.component.d.ts +91 -0
  59. package/lib/test-case-details/test-data-modal/test-data-modal.service.d.ts +23 -0
  60. package/lib/ui-kit.module.d.ts +99 -87
  61. package/package.json +1 -1
  62. package/public-api.d.ts +19 -0
  63. package/styles.css +1 -1
@@ -0,0 +1,176 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import { Validators } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/forms";
5
+ import * as i2 from "../../dynamic-select/dynamic-select-field.component";
6
+ import * as i3 from "../../custom-input/custom-input.component";
7
+ import * as i4 from "../../segment-control/segment-control.component";
8
+ import * as i5 from "../../file-upload/file-upload.component";
9
+ import * as i6 from "../../button/button.component";
10
+ import * as i7 from "@angular/common";
11
+ export class StepBuilderDocumentGenerationTemplateStepComponent {
12
+ constructor(fb) {
13
+ this.fb = fb;
14
+ /** Options for document type dropdown */
15
+ this.documentTypeOptions = [];
16
+ /** Options for template source dropdown */
17
+ this.templateSourceOptions = [];
18
+ /** Options for value type dropdown */
19
+ this.valueTypeOptions = [
20
+ { id: 'variable', value: 'variable', name: 'Variable', label: 'Variable' },
21
+ { id: 'constant', value: 'constant', name: 'Constant', label: 'Constant' }
22
+ ];
23
+ /** Emit when step is created */
24
+ this.createStep = new EventEmitter();
25
+ /** Emit when cancelled */
26
+ this.cancelled = new EventEmitter();
27
+ this.selectedTemplateOption = 'use-existing';
28
+ this.templateSegments = [
29
+ { label: 'Use Existing Template', value: 'use-existing' },
30
+ { label: 'Upload Template', value: 'upload' },
31
+ { label: 'Create New', value: 'create-new' }
32
+ ];
33
+ this.documentForm = this.fb.group({
34
+ documentType: ['', Validators.required],
35
+ templateSource: [''],
36
+ templateName: [''],
37
+ templateDescription: [''],
38
+ outputVariable: ['', Validators.required],
39
+ mappings: this.fb.array([])
40
+ });
41
+ // Initialize cached configs
42
+ this.documentTypeConfig = {
43
+ key: 'documentType',
44
+ placeholder: 'Select document type',
45
+ multiple: false,
46
+ searchable: false,
47
+ options: []
48
+ };
49
+ this.templateSourceConfig = {
50
+ key: 'templateSource',
51
+ placeholder: 'Select Template dropdown',
52
+ multiple: false,
53
+ searchable: false,
54
+ options: []
55
+ };
56
+ this.valueTypeConfig = {
57
+ key: 'valueType',
58
+ placeholder: 'Select value type',
59
+ multiple: false,
60
+ searchable: false,
61
+ options: this.valueTypeOptions
62
+ };
63
+ }
64
+ ngOnInit() {
65
+ // Update configs with input options
66
+ this.updateConfigs();
67
+ // Add initial mapping row
68
+ this.addMapping();
69
+ }
70
+ ngOnChanges(changes) {
71
+ // Update configs when inputs change
72
+ if (changes['documentTypeOptions'] || changes['templateSourceOptions'] || changes['valueTypeOptions']) {
73
+ this.updateConfigs();
74
+ }
75
+ }
76
+ get mappingsFormArray() {
77
+ return this.documentForm.get('mappings');
78
+ }
79
+ getMappingGroup(index) {
80
+ return this.mappingsFormArray.at(index);
81
+ }
82
+ updateConfigs() {
83
+ this.documentTypeConfig = {
84
+ ...this.documentTypeConfig,
85
+ options: this.documentTypeOptions
86
+ };
87
+ this.templateSourceConfig = {
88
+ ...this.templateSourceConfig,
89
+ options: this.templateSourceOptions
90
+ };
91
+ this.valueTypeConfig = {
92
+ ...this.valueTypeConfig,
93
+ options: this.valueTypeOptions
94
+ };
95
+ }
96
+ addMapping() {
97
+ const mappingGroup = this.fb.group({
98
+ key: ['', Validators.required],
99
+ valueType: ['variable', Validators.required],
100
+ value: ['', Validators.required]
101
+ });
102
+ this.mappingsFormArray.push(mappingGroup);
103
+ }
104
+ removeMapping(index) {
105
+ if (this.mappingsFormArray.length > 1) {
106
+ this.mappingsFormArray.removeAt(index);
107
+ }
108
+ }
109
+ selectTemplateOption(option) {
110
+ if (typeof option === 'number') {
111
+ const options = ['use-existing', 'upload', 'create-new'];
112
+ this.selectedTemplateOption = options[option] || 'use-existing';
113
+ }
114
+ else {
115
+ this.selectedTemplateOption = option;
116
+ }
117
+ }
118
+ onTemplateOptionChange(value) {
119
+ this.selectTemplateOption(value);
120
+ }
121
+ onTemplateIndexChange(index) {
122
+ this.selectTemplateOption(index);
123
+ }
124
+ onFileSelected(file) {
125
+ // Handle file selection - you can store the file or emit it
126
+ console.log('File selected:', file.name);
127
+ // Optionally update the form or emit the file
128
+ }
129
+ onCreateTemplate() {
130
+ const templateName = this.documentForm.get('templateName')?.value;
131
+ const templateDescription = this.documentForm.get('templateDescription')?.value;
132
+ if (templateName && templateDescription) {
133
+ // Handle template creation
134
+ console.log('Creating template:', { templateName, templateDescription });
135
+ // You can emit an event or handle the creation logic here
136
+ }
137
+ }
138
+ onCancel() {
139
+ this.cancelled.emit();
140
+ }
141
+ onCreateStep() {
142
+ if (this.documentForm.valid) {
143
+ const formValue = this.documentForm.value;
144
+ const mappings = this.mappingsFormArray.controls.map(control => ({
145
+ key: control.get('key')?.value || '',
146
+ valueType: control.get('valueType')?.value || '',
147
+ value: control.get('value')?.value || ''
148
+ }));
149
+ const stepData = {
150
+ documentType: formValue.documentType || '',
151
+ templateSource: formValue.templateSource || '',
152
+ outputVariable: formValue.outputVariable || '',
153
+ templateOption: this.selectedTemplateOption,
154
+ mappings: mappings
155
+ };
156
+ this.createStep.emit(stepData);
157
+ }
158
+ }
159
+ }
160
+ StepBuilderDocumentGenerationTemplateStepComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StepBuilderDocumentGenerationTemplateStepComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
161
+ StepBuilderDocumentGenerationTemplateStepComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: StepBuilderDocumentGenerationTemplateStepComponent, selector: "cqa-step-builder-document-generation-template-step", inputs: { documentTypeOptions: "documentTypeOptions", templateSourceOptions: "templateSourceOptions", valueTypeOptions: "valueTypeOptions" }, outputs: { createStep: "createStep", cancelled: "cancelled" }, host: { classAttribute: "cqa-ui-root" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"cqa-flex cqa-flex-col cqa-bg-white cqa-px-4 cqa-py-2\">\n <!-- Header -->\n <h2 class=\"cqa-text-[12px] cqa-font-semibold cqa-text-black-100 cqa-mb-4\">\n Document Generation Template Step\n </h2>\n\n <div class=\"cqa-flex cqa-flex-col cqa-flex-1 cqa-max-h-[500px] cqa-overflow-y-auto\">\n <div class=\"cqa-flex cqa-flex-wrap cqa-custom-form-fields\">\n <!-- Document Type -->\n <div class=\"cqa-mb-3 cqa-w-1/2 cqa-custom-form-fields\">\n <label class=\"cqa-leading-[100%] cqa-block cqa-text-[14px] cqa-font-medium cqa-text-[#161617] cqa-mb-1\">\n Document Type <span class=\"cqa-text-red-500\">*</span>\n </label>\n <cqa-dynamic-select class=\"cqa-w-full\" [form]=\"documentForm\" [config]=\"documentTypeConfig\">\n </cqa-dynamic-select>\n <p class=\"cqa-text-[12px] cqa-text-[#0A0A0A] cqa-mt-1\">\n Choose the file format you want to generate.\n </p>\n </div>\n <!-- Output Variable -->\n <div class=\"cqa-w-1/2 cqa-pl-2\">\n <label class=\"cqa-leading-[100%] cqa-block cqa-text-[14px] cqa-font-medium cqa-text-[#161617] cqa-mb-1\">\n Output Variable <span class=\"cqa-text-red-500\">*</span>\n </label>\n <cqa-custom-input\n [placeholder]=\"'Input'\"\n [value]=\"documentForm.get('outputVariable')?.value\"\n [fullWidth]=\"true\"\n (valueChange)=\"documentForm.get('outputVariable')?.setValue($event)\">\n </cqa-custom-input>\n <p class=\"cqa-text-[12px] cqa-text-[#0A0A0A] cqa-mt-1\">\n Stores the generated file so it can be used in later steps\n </p>\n </div>\n\n </div>\n <!-- Template Source -->\n <div class=\"cqa-mb-3 cqa-w-full cqa-custom-form-fields\">\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-mb-3\">\n <label class=\"cqa-leading-[100%] cqa-block cqa-text-[14px] cqa-font-medium cqa-text-[#161617] cqa-mb-1\">\n Template Source\n </label>\n <div>\n <cqa-segment-control\n [segments]=\"templateSegments\"\n [value]=\"selectedTemplateOption\"\n (valueChange)=\"onTemplateOptionChange($event)\">\n </cqa-segment-control>\n </div> \n </div>\n \n <!-- Use Existing Template -->\n <div *ngIf=\"selectedTemplateOption === 'use-existing'\">\n <cqa-dynamic-select class=\"cqa-w-full\" [form]=\"documentForm\" [config]=\"templateSourceConfig\">\n </cqa-dynamic-select>\n </div>\n \n <!-- Upload Template -->\n <div *ngIf=\"selectedTemplateOption === 'upload'\">\n <cqa-file-upload\n accept=\".pdf,.doc,.docx,.txt\"\n acceptedFileTypes=\"PDF, DOC, or TXT files\"\n (fileSelected)=\"onFileSelected($event)\">\n </cqa-file-upload>\n </div>\n \n <!-- Create New Template -->\n <div *ngIf=\"selectedTemplateOption === 'create-new'\">\n <div class=\"cqa-flex cqa-flex-wrap cqa-custom-form-fields cqa-mb-3\">\n <!-- Template Name -->\n <div class=\"cqa-mb-2 cqa-w-1/2 cqa-pr-2\">\n <label class=\"cqa-leading-[100%] cqa-block cqa-text-[14px] cqa-font-medium cqa-text-[#161617] cqa-mb-1\">\n Template Name <span class=\"cqa-text-red-500\">*</span>\n </label>\n <cqa-custom-input\n [placeholder]=\"'PDF Document (.pdf)'\"\n [value]=\"documentForm.get('templateName')?.value\"\n [fullWidth]=\"true\"\n (valueChange)=\"documentForm.get('templateName')?.setValue($event)\">\n </cqa-custom-input>\n </div>\n \n <!-- Template Description -->\n <div class=\"cqa-w-1/2 cqa-pl-2\">\n <label class=\"cqa-leading-[100%] cqa-block cqa-text-[14px] cqa-font-medium cqa-text-[#161617] cqa-mb-1\">\n Template Description <span class=\"cqa-text-red-500\">*</span>\n </label>\n <cqa-custom-input\n [placeholder]=\"'PDF Document (.pdf)'\"\n [value]=\"documentForm.get('templateDescription')?.value\"\n [fullWidth]=\"true\"\n (valueChange)=\"documentForm.get('templateDescription')?.setValue($event)\">\n </cqa-custom-input>\n </div>\n </div>\n \n <!-- Create Template Button -->\n <div class=\"cqa-flex cqa-justify-end\">\n <cqa-button\n variant=\"filled\"\n text=\"Create Template\"\n [customClass]=\"'cqa-px-4 cqa-py-2'\"\n (clicked)=\"onCreateTemplate()\">\n </cqa-button>\n </div>\n </div>\n </div>\n\n <!-- Document Mapper Section -->\n <div class=\"cqa-mb-3\">\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-mb-2\">\n <div>\n <label class=\"cqa-leading-[100%] cqa-block cqa-text-[14px] cqa-font-medium cqa-text-[#161617] cqa-mb-1\">\n Document Mapper\n </label>\n <p class=\"cqa-text-[12px] cqa-text-[#64748B] cqa-m-0\">\n Map placeholders to dynamic values.\n </p>\n </div>\n <a href=\"#\" class=\"cqa-flex cqa-items-center cqa-gap-1 cqa-text-[#111827] cqa-text-[10px] cqa-no-underline hover:cqa-underline\">\n <svg width=\"17\" height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_1712_21527)\">\n <path d=\"M8.49984 14.6666C12.4119 14.6666 15.5832 11.6818 15.5832 7.99992C15.5832 4.31802 12.4119 1.33325 8.49984 1.33325C4.58782 1.33325 1.4165 4.31802 1.4165 7.99992C1.4165 11.6818 4.58782 14.6666 8.49984 14.6666Z\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M6.43896 5.99989C6.6055 5.55434 6.9342 5.17863 7.36685 4.93931C7.7995 4.7 8.30818 4.61252 8.8028 4.69237C9.29741 4.77222 9.74604 5.01424 10.0692 5.37558C10.3924 5.73691 10.5693 6.19424 10.5685 6.66656C10.5685 7.99989 8.44355 8.66656 8.44355 8.66656\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8.5 11.3333H8.50966\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_1712_21527\">\n <rect width=\"17\" height=\"16\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n \n Need help?\n </a>\n </div>\n\n <!-- Mapper Table -->\n <div class=\"cqa-border cqa-border-gray-200 cqa-rounded-lg cqa-overflow-hidden\">\n <table class=\"cqa-w-full\" style=\"table-layout: fixed;\">\n <thead>\n <tr class=\"cqa-bg-[#D8D9FC4D] cqa-border-b cqa-border-gray-200\">\n <th class=\"cqa-w-[40px] cqa-p-2\">\n <div class=\"cqa-flex cqa-items-center cqa-justify-center\">\n <input type=\"checkbox\" class=\"cqa-w-4 cqa-h-4\">\n </div>\n </th>\n <th class=\"cqa-text-left cqa-text-[12px] cqa-font-medium cqa-text-[#161617] cqa-p-2\" style=\"width: calc((100% - 40px) / 3);\">Key</th>\n <th class=\"cqa-text-left cqa-text-[12px] cqa-font-medium cqa-text-[#161617] cqa-p-2\" style=\"width: calc((100% - 40px) / 3);\">Value Type</th>\n <th class=\"cqa-text-left cqa-text-[12px] cqa-font-medium cqa-text-[#161617] cqa-p-2\" style=\"width: calc((100% - 40px) / 3);\">Value</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let mapping of mappingsFormArray.controls; let i = index\" class=\"cqa-border-b cqa-border-gray-200 cqa-last:border-b-0\">\n <!-- Checkbox -->\n <td class=\"cqa-w-[40px] cqa-p-2\">\n <div class=\"cqa-flex cqa-items-center cqa-justify-center\">\n <input type=\"checkbox\" class=\"cqa-w-4 cqa-h-4\">\n </div>\n </td>\n\n <!-- Key Input -->\n <td class=\"cqa-p-2\" style=\"width: calc((100% - 40px) / 3);\">\n <cqa-custom-input\n inputInlineStyle=\"height: 36px;color: #0A0A0A; font-size: 14px; border-radius: 5px;\"\n [placeholder]=\"'Key'\"\n [value]=\"getMappingGroup(i).get('key')?.value\"\n [fullWidth]=\"true\"\n (valueChange)=\"getMappingGroup(i).get('key')?.setValue($event)\">\n </cqa-custom-input>\n </td>\n\n <!-- Value Type Dropdown -->\n <td class=\"cqa-p-2\" style=\"width: calc((100% - 40px) / 3);\">\n <cqa-dynamic-select \n inputInlineStyle=\"height: 36px;color: #0A0A0A; font-size: 14px; box-shadow: none !important;\n border-radius: 5px !important;\"\n [form]=\"getMappingGroup(i)\" \n [config]=\"valueTypeConfig\">\n </cqa-dynamic-select>\n </td>\n\n <!-- Value Input with Delete Button -->\n <td class=\"cqa-p-2\" style=\"width: calc((100% - 40px) / 3);\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <cqa-custom-input\n inputInlineStyle=\"height: 36px;color: #0A0A0A; font-size: 14px; border-radius: 5px;\"\n [placeholder]=\"'Value'\"\n [value]=\"getMappingGroup(i).get('value')?.value\"\n [fullWidth]=\"true\"\n (valueChange)=\"getMappingGroup(i).get('value')?.setValue($event)\">\n </cqa-custom-input>\n <button\n type=\"button\"\n (click)=\"removeMapping(i)\"\n class=\"cqa-text-red-500 hover:cqa-text-red-700 cqa-p-1 cqa-flex-shrink-0\"\n [disabled]=\"mappingsFormArray.length === 1\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M10.6668 6V12.6667H5.3335V6H10.6668ZM9.66683 2H6.3335L5.66683 2.66667H3.3335V4H12.6668V2.66667H10.3335L9.66683 2ZM12.0002 4.66667H4.00016V12.6667C4.00016 13.4 4.60016 14 5.3335 14H10.6668C11.4002 14 12.0002 13.4 12.0002 12.6667V4.66667Z\" fill=\"#F9BFBF\"/>\n</svg>\n </button>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <!-- Add Mapping Button -->\n <div class=\"cqa-flex cqa-justify-end cqa-mt-2\">\n <button\n type=\"button\"\n (click)=\"addMapping()\"\n class=\"cqa-text-[#3F43EE] cqa-text-[12px] cqa-font-medium cqa-flex cqa-items-center cqa-gap-1 hover:cqa-underline\">\n <span>+</span>\n <span>Add Mapping</span>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Action Buttons -->\n <div class=\"cqa-flex cqa-w-full cqa-gap-2 cqa-mt-auto cqa-pt-4 cqa-border-t cqa-border-gray-200\">\n <cqa-button class=\"cqa-w-1/2 cqa-rounded-[10px]\" variant=\"outlined\" text=\"Cancel\" [customClass]=\"'cqa-flex-1 cqa-w-full'\"\n (clicked)=\"onCancel()\">\n </cqa-button>\n <cqa-button class=\"cqa-border-solid cqa-rounded-[9px] cqa-w-1/2 cqa-border cqa-border-[#3F43EE]\" variant=\"filled\" text=\"Create Step\" [customClass]=\"'cqa-flex-1 cqa-w-full'\"\n (clicked)=\"onCreateStep()\">\n </cqa-button>\n </div>\n</div>\n\n", components: [{ type: i2.DynamicSelectFieldComponent, selector: "cqa-dynamic-select", inputs: ["form", "config"], outputs: ["selectionChange", "selectClick", "searchChange", "loadMore"] }, { type: i3.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: i4.SegmentControlComponent, selector: "cqa-segment-control", inputs: ["segments", "value", "disabled", "containerBgColor"], outputs: ["valueChange"] }, { type: i5.FileUploadComponent, selector: "cqa-file-upload", inputs: ["accept", "acceptedFileTypes", "disabled"], outputs: ["fileSelected", "cancelled"] }, { type: i6.ButtonComponent, selector: "cqa-button", inputs: ["variant", "btnSize", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass", "inlineStyles", "tooltip", "tooltipPosition"], outputs: ["clicked"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
162
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StepBuilderDocumentGenerationTemplateStepComponent, decorators: [{
163
+ type: Component,
164
+ args: [{ selector: 'cqa-step-builder-document-generation-template-step', host: { class: 'cqa-ui-root' }, template: "<div class=\"cqa-flex cqa-flex-col cqa-bg-white cqa-px-4 cqa-py-2\">\n <!-- Header -->\n <h2 class=\"cqa-text-[12px] cqa-font-semibold cqa-text-black-100 cqa-mb-4\">\n Document Generation Template Step\n </h2>\n\n <div class=\"cqa-flex cqa-flex-col cqa-flex-1 cqa-max-h-[500px] cqa-overflow-y-auto\">\n <div class=\"cqa-flex cqa-flex-wrap cqa-custom-form-fields\">\n <!-- Document Type -->\n <div class=\"cqa-mb-3 cqa-w-1/2 cqa-custom-form-fields\">\n <label class=\"cqa-leading-[100%] cqa-block cqa-text-[14px] cqa-font-medium cqa-text-[#161617] cqa-mb-1\">\n Document Type <span class=\"cqa-text-red-500\">*</span>\n </label>\n <cqa-dynamic-select class=\"cqa-w-full\" [form]=\"documentForm\" [config]=\"documentTypeConfig\">\n </cqa-dynamic-select>\n <p class=\"cqa-text-[12px] cqa-text-[#0A0A0A] cqa-mt-1\">\n Choose the file format you want to generate.\n </p>\n </div>\n <!-- Output Variable -->\n <div class=\"cqa-w-1/2 cqa-pl-2\">\n <label class=\"cqa-leading-[100%] cqa-block cqa-text-[14px] cqa-font-medium cqa-text-[#161617] cqa-mb-1\">\n Output Variable <span class=\"cqa-text-red-500\">*</span>\n </label>\n <cqa-custom-input\n [placeholder]=\"'Input'\"\n [value]=\"documentForm.get('outputVariable')?.value\"\n [fullWidth]=\"true\"\n (valueChange)=\"documentForm.get('outputVariable')?.setValue($event)\">\n </cqa-custom-input>\n <p class=\"cqa-text-[12px] cqa-text-[#0A0A0A] cqa-mt-1\">\n Stores the generated file so it can be used in later steps\n </p>\n </div>\n\n </div>\n <!-- Template Source -->\n <div class=\"cqa-mb-3 cqa-w-full cqa-custom-form-fields\">\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-mb-3\">\n <label class=\"cqa-leading-[100%] cqa-block cqa-text-[14px] cqa-font-medium cqa-text-[#161617] cqa-mb-1\">\n Template Source\n </label>\n <div>\n <cqa-segment-control\n [segments]=\"templateSegments\"\n [value]=\"selectedTemplateOption\"\n (valueChange)=\"onTemplateOptionChange($event)\">\n </cqa-segment-control>\n </div> \n </div>\n \n <!-- Use Existing Template -->\n <div *ngIf=\"selectedTemplateOption === 'use-existing'\">\n <cqa-dynamic-select class=\"cqa-w-full\" [form]=\"documentForm\" [config]=\"templateSourceConfig\">\n </cqa-dynamic-select>\n </div>\n \n <!-- Upload Template -->\n <div *ngIf=\"selectedTemplateOption === 'upload'\">\n <cqa-file-upload\n accept=\".pdf,.doc,.docx,.txt\"\n acceptedFileTypes=\"PDF, DOC, or TXT files\"\n (fileSelected)=\"onFileSelected($event)\">\n </cqa-file-upload>\n </div>\n \n <!-- Create New Template -->\n <div *ngIf=\"selectedTemplateOption === 'create-new'\">\n <div class=\"cqa-flex cqa-flex-wrap cqa-custom-form-fields cqa-mb-3\">\n <!-- Template Name -->\n <div class=\"cqa-mb-2 cqa-w-1/2 cqa-pr-2\">\n <label class=\"cqa-leading-[100%] cqa-block cqa-text-[14px] cqa-font-medium cqa-text-[#161617] cqa-mb-1\">\n Template Name <span class=\"cqa-text-red-500\">*</span>\n </label>\n <cqa-custom-input\n [placeholder]=\"'PDF Document (.pdf)'\"\n [value]=\"documentForm.get('templateName')?.value\"\n [fullWidth]=\"true\"\n (valueChange)=\"documentForm.get('templateName')?.setValue($event)\">\n </cqa-custom-input>\n </div>\n \n <!-- Template Description -->\n <div class=\"cqa-w-1/2 cqa-pl-2\">\n <label class=\"cqa-leading-[100%] cqa-block cqa-text-[14px] cqa-font-medium cqa-text-[#161617] cqa-mb-1\">\n Template Description <span class=\"cqa-text-red-500\">*</span>\n </label>\n <cqa-custom-input\n [placeholder]=\"'PDF Document (.pdf)'\"\n [value]=\"documentForm.get('templateDescription')?.value\"\n [fullWidth]=\"true\"\n (valueChange)=\"documentForm.get('templateDescription')?.setValue($event)\">\n </cqa-custom-input>\n </div>\n </div>\n \n <!-- Create Template Button -->\n <div class=\"cqa-flex cqa-justify-end\">\n <cqa-button\n variant=\"filled\"\n text=\"Create Template\"\n [customClass]=\"'cqa-px-4 cqa-py-2'\"\n (clicked)=\"onCreateTemplate()\">\n </cqa-button>\n </div>\n </div>\n </div>\n\n <!-- Document Mapper Section -->\n <div class=\"cqa-mb-3\">\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-mb-2\">\n <div>\n <label class=\"cqa-leading-[100%] cqa-block cqa-text-[14px] cqa-font-medium cqa-text-[#161617] cqa-mb-1\">\n Document Mapper\n </label>\n <p class=\"cqa-text-[12px] cqa-text-[#64748B] cqa-m-0\">\n Map placeholders to dynamic values.\n </p>\n </div>\n <a href=\"#\" class=\"cqa-flex cqa-items-center cqa-gap-1 cqa-text-[#111827] cqa-text-[10px] cqa-no-underline hover:cqa-underline\">\n <svg width=\"17\" height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_1712_21527)\">\n <path d=\"M8.49984 14.6666C12.4119 14.6666 15.5832 11.6818 15.5832 7.99992C15.5832 4.31802 12.4119 1.33325 8.49984 1.33325C4.58782 1.33325 1.4165 4.31802 1.4165 7.99992C1.4165 11.6818 4.58782 14.6666 8.49984 14.6666Z\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M6.43896 5.99989C6.6055 5.55434 6.9342 5.17863 7.36685 4.93931C7.7995 4.7 8.30818 4.61252 8.8028 4.69237C9.29741 4.77222 9.74604 5.01424 10.0692 5.37558C10.3924 5.73691 10.5693 6.19424 10.5685 6.66656C10.5685 7.99989 8.44355 8.66656 8.44355 8.66656\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8.5 11.3333H8.50966\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_1712_21527\">\n <rect width=\"17\" height=\"16\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n \n Need help?\n </a>\n </div>\n\n <!-- Mapper Table -->\n <div class=\"cqa-border cqa-border-gray-200 cqa-rounded-lg cqa-overflow-hidden\">\n <table class=\"cqa-w-full\" style=\"table-layout: fixed;\">\n <thead>\n <tr class=\"cqa-bg-[#D8D9FC4D] cqa-border-b cqa-border-gray-200\">\n <th class=\"cqa-w-[40px] cqa-p-2\">\n <div class=\"cqa-flex cqa-items-center cqa-justify-center\">\n <input type=\"checkbox\" class=\"cqa-w-4 cqa-h-4\">\n </div>\n </th>\n <th class=\"cqa-text-left cqa-text-[12px] cqa-font-medium cqa-text-[#161617] cqa-p-2\" style=\"width: calc((100% - 40px) / 3);\">Key</th>\n <th class=\"cqa-text-left cqa-text-[12px] cqa-font-medium cqa-text-[#161617] cqa-p-2\" style=\"width: calc((100% - 40px) / 3);\">Value Type</th>\n <th class=\"cqa-text-left cqa-text-[12px] cqa-font-medium cqa-text-[#161617] cqa-p-2\" style=\"width: calc((100% - 40px) / 3);\">Value</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let mapping of mappingsFormArray.controls; let i = index\" class=\"cqa-border-b cqa-border-gray-200 cqa-last:border-b-0\">\n <!-- Checkbox -->\n <td class=\"cqa-w-[40px] cqa-p-2\">\n <div class=\"cqa-flex cqa-items-center cqa-justify-center\">\n <input type=\"checkbox\" class=\"cqa-w-4 cqa-h-4\">\n </div>\n </td>\n\n <!-- Key Input -->\n <td class=\"cqa-p-2\" style=\"width: calc((100% - 40px) / 3);\">\n <cqa-custom-input\n inputInlineStyle=\"height: 36px;color: #0A0A0A; font-size: 14px; border-radius: 5px;\"\n [placeholder]=\"'Key'\"\n [value]=\"getMappingGroup(i).get('key')?.value\"\n [fullWidth]=\"true\"\n (valueChange)=\"getMappingGroup(i).get('key')?.setValue($event)\">\n </cqa-custom-input>\n </td>\n\n <!-- Value Type Dropdown -->\n <td class=\"cqa-p-2\" style=\"width: calc((100% - 40px) / 3);\">\n <cqa-dynamic-select \n inputInlineStyle=\"height: 36px;color: #0A0A0A; font-size: 14px; box-shadow: none !important;\n border-radius: 5px !important;\"\n [form]=\"getMappingGroup(i)\" \n [config]=\"valueTypeConfig\">\n </cqa-dynamic-select>\n </td>\n\n <!-- Value Input with Delete Button -->\n <td class=\"cqa-p-2\" style=\"width: calc((100% - 40px) / 3);\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <cqa-custom-input\n inputInlineStyle=\"height: 36px;color: #0A0A0A; font-size: 14px; border-radius: 5px;\"\n [placeholder]=\"'Value'\"\n [value]=\"getMappingGroup(i).get('value')?.value\"\n [fullWidth]=\"true\"\n (valueChange)=\"getMappingGroup(i).get('value')?.setValue($event)\">\n </cqa-custom-input>\n <button\n type=\"button\"\n (click)=\"removeMapping(i)\"\n class=\"cqa-text-red-500 hover:cqa-text-red-700 cqa-p-1 cqa-flex-shrink-0\"\n [disabled]=\"mappingsFormArray.length === 1\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M10.6668 6V12.6667H5.3335V6H10.6668ZM9.66683 2H6.3335L5.66683 2.66667H3.3335V4H12.6668V2.66667H10.3335L9.66683 2ZM12.0002 4.66667H4.00016V12.6667C4.00016 13.4 4.60016 14 5.3335 14H10.6668C11.4002 14 12.0002 13.4 12.0002 12.6667V4.66667Z\" fill=\"#F9BFBF\"/>\n</svg>\n </button>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <!-- Add Mapping Button -->\n <div class=\"cqa-flex cqa-justify-end cqa-mt-2\">\n <button\n type=\"button\"\n (click)=\"addMapping()\"\n class=\"cqa-text-[#3F43EE] cqa-text-[12px] cqa-font-medium cqa-flex cqa-items-center cqa-gap-1 hover:cqa-underline\">\n <span>+</span>\n <span>Add Mapping</span>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Action Buttons -->\n <div class=\"cqa-flex cqa-w-full cqa-gap-2 cqa-mt-auto cqa-pt-4 cqa-border-t cqa-border-gray-200\">\n <cqa-button class=\"cqa-w-1/2 cqa-rounded-[10px]\" variant=\"outlined\" text=\"Cancel\" [customClass]=\"'cqa-flex-1 cqa-w-full'\"\n (clicked)=\"onCancel()\">\n </cqa-button>\n <cqa-button class=\"cqa-border-solid cqa-rounded-[9px] cqa-w-1/2 cqa-border cqa-border-[#3F43EE]\" variant=\"filled\" text=\"Create Step\" [customClass]=\"'cqa-flex-1 cqa-w-full'\"\n (clicked)=\"onCreateStep()\">\n </cqa-button>\n </div>\n</div>\n\n", styles: [] }]
165
+ }], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { documentTypeOptions: [{
166
+ type: Input
167
+ }], templateSourceOptions: [{
168
+ type: Input
169
+ }], valueTypeOptions: [{
170
+ type: Input
171
+ }], createStep: [{
172
+ type: Output
173
+ }], cancelled: [{
174
+ type: Output
175
+ }] } });
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1idWlsZGVyLWRvY3VtZW50LWdlbmVyYXRpb24tdGVtcGxhdGUtc3RlcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3N0ZXAtYnVpbGRlci9zdGVwLWJ1aWxkZXItZG9jdW1lbnQtZ2VuZXJhdGlvbi10ZW1wbGF0ZS1zdGVwL3N0ZXAtYnVpbGRlci1kb2N1bWVudC1nZW5lcmF0aW9uLXRlbXBsYXRlLXN0ZXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zdGVwLWJ1aWxkZXIvc3RlcC1idWlsZGVyLWRvY3VtZW50LWdlbmVyYXRpb24tdGVtcGxhdGUtc3RlcC9zdGVwLWJ1aWxkZXItZG9jdW1lbnQtZ2VuZXJhdGlvbi10ZW1wbGF0ZS1zdGVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQW9DLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBcUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQXVCL0UsTUFBTSxPQUFPLGtEQUFrRDtJQWdDN0QsWUFBb0IsRUFBZTtRQUFmLE9BQUUsR0FBRixFQUFFLENBQWE7UUEvQm5DLHlDQUF5QztRQUNoQyx3QkFBbUIsR0FBbUIsRUFBRSxDQUFDO1FBRWxELDJDQUEyQztRQUNsQywwQkFBcUIsR0FBbUIsRUFBRSxDQUFDO1FBRXBELHNDQUFzQztRQUM3QixxQkFBZ0IsR0FBbUI7WUFDMUMsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFO1lBQzFFLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTtTQUMzRSxDQUFDO1FBRUYsZ0NBQWdDO1FBQ3RCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBc0MsQ0FBQztRQUU5RSwwQkFBMEI7UUFDaEIsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFHL0MsMkJBQXNCLEdBQTZDLGNBQWMsQ0FBQztRQU1sRixxQkFBZ0IsR0FBRztZQUNqQixFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFO1lBQ3pELEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDN0MsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7U0FDN0MsQ0FBQztRQUdBLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDaEMsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDdkMsY0FBYyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3BCLFlBQVksRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNsQixtQkFBbUIsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUN6QixjQUFjLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUN6QyxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1NBQzVCLENBQUMsQ0FBQztRQUVILDRCQUE0QjtRQUM1QixJQUFJLENBQUMsa0JBQWtCLEdBQUc7WUFDeEIsR0FBRyxFQUFFLGNBQWM7WUFDbkIsV0FBVyxFQUFFLHNCQUFzQjtZQUNuQyxRQUFRLEVBQUUsS0FBSztZQUNmLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLE9BQU8sRUFBRSxFQUFFO1NBQ1osQ0FBQztRQUVGLElBQUksQ0FBQyxvQkFBb0IsR0FBRztZQUMxQixHQUFHLEVBQUUsZ0JBQWdCO1lBQ3JCLFdBQVcsRUFBRSwwQkFBMEI7WUFDdkMsUUFBUSxFQUFFLEtBQUs7WUFDZixVQUFVLEVBQUUsS0FBSztZQUNqQixPQUFPLEVBQUUsRUFBRTtTQUNaLENBQUM7UUFFRixJQUFJLENBQUMsZUFBZSxHQUFHO1lBQ3JCLEdBQUcsRUFBRSxXQUFXO1lBQ2hCLFdBQVcsRUFBRSxtQkFBbUI7WUFDaEMsUUFBUSxFQUFFLEtBQUs7WUFDZixVQUFVLEVBQUUsS0FBSztZQUNqQixPQUFPLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtTQUMvQixDQUFDO0lBQ0osQ0FBQztJQUVELFFBQVE7UUFDTixvQ0FBb0M7UUFDcEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLDBCQUEwQjtRQUMxQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxvQ0FBb0M7UUFDcEMsSUFBSSxPQUFPLENBQUMscUJBQXFCLENBQUMsSUFBSSxPQUFPLENBQUMsdUJBQXVCLENBQUMsSUFBSSxPQUFPLENBQUMsa0JBQWtCLENBQUMsRUFBRTtZQUNyRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDdEI7SUFDSCxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQWMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWE7UUFDM0IsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBYyxDQUFDO0lBQ3ZELENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxrQkFBa0IsR0FBRztZQUN4QixHQUFHLElBQUksQ0FBQyxrQkFBa0I7WUFDMUIsT0FBTyxFQUFFLElBQUksQ0FBQyxtQkFBbUI7U0FDbEMsQ0FBQztRQUNGLElBQUksQ0FBQyxvQkFBb0IsR0FBRztZQUMxQixHQUFHLElBQUksQ0FBQyxvQkFBb0I7WUFDNUIsT0FBTyxFQUFFLElBQUksQ0FBQyxxQkFBcUI7U0FDcEMsQ0FBQztRQUNGLElBQUksQ0FBQyxlQUFlLEdBQUc7WUFDckIsR0FBRyxJQUFJLENBQUMsZUFBZTtZQUN2QixPQUFPLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtTQUMvQixDQUFDO0lBQ0osQ0FBQztJQUdELFVBQVU7UUFDUixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUNqQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUM5QixTQUFTLEVBQUUsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUM1QyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztTQUNqQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFHRCxhQUFhLENBQUMsS0FBYTtRQUN6QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3JDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDO0lBR0Qsb0JBQW9CLENBQUMsTUFBeUQ7UUFDNUUsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUU7WUFDOUIsTUFBTSxPQUFPLEdBQWlELENBQUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUN2RyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLGNBQWMsQ0FBQztTQUNqRTthQUFNO1lBQ0wsSUFBSSxDQUFDLHNCQUFzQixHQUFHLE1BQU0sQ0FBQztTQUN0QztJQUNILENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxLQUFhO1FBQ2xDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFpRCxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELHFCQUFxQixDQUFDLEtBQWE7UUFDakMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBVTtRQUN2Qiw0REFBNEQ7UUFDNUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsOENBQThDO0lBQ2hELENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxLQUFLLENBQUM7UUFDbEUsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLEtBQUssQ0FBQztRQUVoRixJQUFJLFlBQVksSUFBSSxtQkFBbUIsRUFBRTtZQUN2QywyQkFBMkI7WUFDM0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUM7WUFDekUsMERBQTBEO1NBQzNEO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRTtZQUMzQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztZQUMxQyxNQUFNLFFBQVEsR0FBcUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRTtnQkFDcEMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsS0FBSyxJQUFJLEVBQUU7Z0JBQ2hELEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssSUFBSSxFQUFFO2FBQ3pDLENBQUMsQ0FBQyxDQUFDO1lBRUosTUFBTSxRQUFRLEdBQXVDO2dCQUNuRCxZQUFZLEVBQUUsU0FBUyxDQUFDLFlBQVksSUFBSSxFQUFFO2dCQUMxQyxjQUFjLEVBQUUsU0FBUyxDQUFDLGNBQWMsSUFBSSxFQUFFO2dCQUM5QyxjQUFjLEVBQUUsU0FBUyxDQUFDLGNBQWMsSUFBSSxFQUFFO2dCQUM5QyxjQUFjLEVBQUUsSUFBSSxDQUFDLHNCQUFzQjtnQkFDM0MsUUFBUSxFQUFFLFFBQVE7YUFDbkIsQ0FBQztZQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQzs7K0lBbkxVLGtEQUFrRDttSUFBbEQsa0RBQWtELHFXQ3hCL0Qsdy9XQXdPQTsyRkRoTmEsa0RBQWtEO2tCQU45RCxTQUFTOytCQUNFLG9EQUFvRCxRQUd4RCxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7a0dBSXJCLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFHRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBR0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQU1JLFVBQVU7c0JBQW5CLE1BQU07Z0JBR0csU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybUFycmF5LCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRHluYW1pY1NlbGVjdEZpZWxkQ29uZmlnLCBTZWxlY3RPcHRpb24gfSBmcm9tICcuLi8uLi9keW5hbWljLXNlbGVjdC9keW5hbWljLXNlbGVjdC1maWVsZC5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERvY3VtZW50TWFwcGVyIHtcbiAga2V5OiBzdHJpbmc7XG4gIHZhbHVlVHlwZTogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3VtZW50R2VuZXJhdGlvblRlbXBsYXRlRm9ybURhdGEge1xuICBkb2N1bWVudFR5cGU6IHN0cmluZztcbiAgdGVtcGxhdGVTb3VyY2U6IHN0cmluZztcbiAgb3V0cHV0VmFyaWFibGU6IHN0cmluZztcbiAgdGVtcGxhdGVPcHRpb246ICd1c2UtZXhpc3RpbmcnIHwgJ3VwbG9hZCcgfCAnY3JlYXRlLW5ldyc7XG4gIG1hcHBpbmdzOiBEb2N1bWVudE1hcHBlcltdO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtc3RlcC1idWlsZGVyLWRvY3VtZW50LWdlbmVyYXRpb24tdGVtcGxhdGUtc3RlcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdGVwLWJ1aWxkZXItZG9jdW1lbnQtZ2VuZXJhdGlvbi10ZW1wbGF0ZS1zdGVwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXSxcbiAgaG9zdDogeyBjbGFzczogJ2NxYS11aS1yb290JyB9XG59KVxuZXhwb3J0IGNsYXNzIFN0ZXBCdWlsZGVyRG9jdW1lbnRHZW5lcmF0aW9uVGVtcGxhdGVTdGVwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAvKiogT3B0aW9ucyBmb3IgZG9jdW1lbnQgdHlwZSBkcm9wZG93biAqL1xuICBASW5wdXQoKSBkb2N1bWVudFR5cGVPcHRpb25zOiBTZWxlY3RPcHRpb25bXSA9IFtdO1xuXG4gIC8qKiBPcHRpb25zIGZvciB0ZW1wbGF0ZSBzb3VyY2UgZHJvcGRvd24gKi9cbiAgQElucHV0KCkgdGVtcGxhdGVTb3VyY2VPcHRpb25zOiBTZWxlY3RPcHRpb25bXSA9IFtdO1xuXG4gIC8qKiBPcHRpb25zIGZvciB2YWx1ZSB0eXBlIGRyb3Bkb3duICovXG4gIEBJbnB1dCgpIHZhbHVlVHlwZU9wdGlvbnM6IFNlbGVjdE9wdGlvbltdID0gW1xuICAgIHsgaWQ6ICd2YXJpYWJsZScsIHZhbHVlOiAndmFyaWFibGUnLCBuYW1lOiAnVmFyaWFibGUnLCBsYWJlbDogJ1ZhcmlhYmxlJyB9LFxuICAgIHsgaWQ6ICdjb25zdGFudCcsIHZhbHVlOiAnY29uc3RhbnQnLCBuYW1lOiAnQ29uc3RhbnQnLCBsYWJlbDogJ0NvbnN0YW50JyB9XG4gIF07XG5cbiAgLyoqIEVtaXQgd2hlbiBzdGVwIGlzIGNyZWF0ZWQgKi9cbiAgQE91dHB1dCgpIGNyZWF0ZVN0ZXAgPSBuZXcgRXZlbnRFbWl0dGVyPERvY3VtZW50R2VuZXJhdGlvblRlbXBsYXRlRm9ybURhdGE+KCk7XG5cbiAgLyoqIEVtaXQgd2hlbiBjYW5jZWxsZWQgKi9cbiAgQE91dHB1dCgpIGNhbmNlbGxlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBkb2N1bWVudEZvcm06IEZvcm1Hcm91cDtcbiAgc2VsZWN0ZWRUZW1wbGF0ZU9wdGlvbjogJ3VzZS1leGlzdGluZycgfCAndXBsb2FkJyB8ICdjcmVhdGUtbmV3JyA9ICd1c2UtZXhpc3RpbmcnO1xuXG4gIC8vIENhY2hlZCBjb25maWdzIHRvIGF2b2lkIHJlY3JlYXRpbmcgb24gZXZlcnkgY2hhbmdlIGRldGVjdGlvblxuICBkb2N1bWVudFR5cGVDb25maWc6IER5bmFtaWNTZWxlY3RGaWVsZENvbmZpZztcbiAgdGVtcGxhdGVTb3VyY2VDb25maWc6IER5bmFtaWNTZWxlY3RGaWVsZENvbmZpZztcbiAgdmFsdWVUeXBlQ29uZmlnOiBEeW5hbWljU2VsZWN0RmllbGRDb25maWc7XG4gIHRlbXBsYXRlU2VnbWVudHMgPSBbXG4gICAgeyBsYWJlbDogJ1VzZSBFeGlzdGluZyBUZW1wbGF0ZScsIHZhbHVlOiAndXNlLWV4aXN0aW5nJyB9LFxuICAgIHsgbGFiZWw6ICdVcGxvYWQgVGVtcGxhdGUnLCB2YWx1ZTogJ3VwbG9hZCcgfSxcbiAgICB7IGxhYmVsOiAnQ3JlYXRlIE5ldycsIHZhbHVlOiAnY3JlYXRlLW5ldycgfVxuICBdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyKSB7XG4gICAgdGhpcy5kb2N1bWVudEZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGRvY3VtZW50VHlwZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHRlbXBsYXRlU291cmNlOiBbJyddLFxuICAgICAgdGVtcGxhdGVOYW1lOiBbJyddLFxuICAgICAgdGVtcGxhdGVEZXNjcmlwdGlvbjogWycnXSxcbiAgICAgIG91dHB1dFZhcmlhYmxlOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgbWFwcGluZ3M6IHRoaXMuZmIuYXJyYXkoW10pXG4gICAgfSk7XG5cbiAgICAvLyBJbml0aWFsaXplIGNhY2hlZCBjb25maWdzXG4gICAgdGhpcy5kb2N1bWVudFR5cGVDb25maWcgPSB7XG4gICAgICBrZXk6ICdkb2N1bWVudFR5cGUnLFxuICAgICAgcGxhY2Vob2xkZXI6ICdTZWxlY3QgZG9jdW1lbnQgdHlwZScsXG4gICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICBzZWFyY2hhYmxlOiBmYWxzZSxcbiAgICAgIG9wdGlvbnM6IFtdXG4gICAgfTtcblxuICAgIHRoaXMudGVtcGxhdGVTb3VyY2VDb25maWcgPSB7XG4gICAgICBrZXk6ICd0ZW1wbGF0ZVNvdXJjZScsXG4gICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBUZW1wbGF0ZSBkcm9wZG93bicsXG4gICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICBzZWFyY2hhYmxlOiBmYWxzZSxcbiAgICAgIG9wdGlvbnM6IFtdXG4gICAgfTtcblxuICAgIHRoaXMudmFsdWVUeXBlQ29uZmlnID0ge1xuICAgICAga2V5OiAndmFsdWVUeXBlJyxcbiAgICAgIHBsYWNlaG9sZGVyOiAnU2VsZWN0IHZhbHVlIHR5cGUnLFxuICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgc2VhcmNoYWJsZTogZmFsc2UsXG4gICAgICBvcHRpb25zOiB0aGlzLnZhbHVlVHlwZU9wdGlvbnNcbiAgICB9O1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gVXBkYXRlIGNvbmZpZ3Mgd2l0aCBpbnB1dCBvcHRpb25zXG4gICAgdGhpcy51cGRhdGVDb25maWdzKCk7XG4gICAgLy8gQWRkIGluaXRpYWwgbWFwcGluZyByb3dcbiAgICB0aGlzLmFkZE1hcHBpbmcoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAvLyBVcGRhdGUgY29uZmlncyB3aGVuIGlucHV0cyBjaGFuZ2VcbiAgICBpZiAoY2hhbmdlc1snZG9jdW1lbnRUeXBlT3B0aW9ucyddIHx8IGNoYW5nZXNbJ3RlbXBsYXRlU291cmNlT3B0aW9ucyddIHx8IGNoYW5nZXNbJ3ZhbHVlVHlwZU9wdGlvbnMnXSkge1xuICAgICAgdGhpcy51cGRhdGVDb25maWdzKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG1hcHBpbmdzRm9ybUFycmF5KCk6IEZvcm1BcnJheSB7XG4gICAgcmV0dXJuIHRoaXMuZG9jdW1lbnRGb3JtLmdldCgnbWFwcGluZ3MnKSBhcyBGb3JtQXJyYXk7XG4gIH1cblxuICBnZXRNYXBwaW5nR3JvdXAoaW5kZXg6IG51bWJlcik6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIHRoaXMubWFwcGluZ3NGb3JtQXJyYXkuYXQoaW5kZXgpIGFzIEZvcm1Hcm91cDtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29uZmlncygpOiB2b2lkIHtcbiAgICB0aGlzLmRvY3VtZW50VHlwZUNvbmZpZyA9IHtcbiAgICAgIC4uLnRoaXMuZG9jdW1lbnRUeXBlQ29uZmlnLFxuICAgICAgb3B0aW9uczogdGhpcy5kb2N1bWVudFR5cGVPcHRpb25zXG4gICAgfTtcbiAgICB0aGlzLnRlbXBsYXRlU291cmNlQ29uZmlnID0ge1xuICAgICAgLi4udGhpcy50ZW1wbGF0ZVNvdXJjZUNvbmZpZyxcbiAgICAgIG9wdGlvbnM6IHRoaXMudGVtcGxhdGVTb3VyY2VPcHRpb25zXG4gICAgfTtcbiAgICB0aGlzLnZhbHVlVHlwZUNvbmZpZyA9IHtcbiAgICAgIC4uLnRoaXMudmFsdWVUeXBlQ29uZmlnLFxuICAgICAgb3B0aW9uczogdGhpcy52YWx1ZVR5cGVPcHRpb25zXG4gICAgfTtcbiAgfVxuXG5cbiAgYWRkTWFwcGluZygpOiB2b2lkIHtcbiAgICBjb25zdCBtYXBwaW5nR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGtleTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHZhbHVlVHlwZTogWyd2YXJpYWJsZScsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgdmFsdWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICB9KTtcbiAgICB0aGlzLm1hcHBpbmdzRm9ybUFycmF5LnB1c2gobWFwcGluZ0dyb3VwKTtcbiAgfVxuXG5cbiAgcmVtb3ZlTWFwcGluZyhpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWFwcGluZ3NGb3JtQXJyYXkubGVuZ3RoID4gMSkge1xuICAgICAgdGhpcy5tYXBwaW5nc0Zvcm1BcnJheS5yZW1vdmVBdChpbmRleCk7XG4gICAgfVxuICB9XG5cblxuICBzZWxlY3RUZW1wbGF0ZU9wdGlvbihvcHRpb246ICd1c2UtZXhpc3RpbmcnIHwgJ3VwbG9hZCcgfCAnY3JlYXRlLW5ldycgfCBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ251bWJlcicpIHtcbiAgICAgIGNvbnN0IG9wdGlvbnM6ICgndXNlLWV4aXN0aW5nJyB8ICd1cGxvYWQnIHwgJ2NyZWF0ZS1uZXcnKVtdID0gWyd1c2UtZXhpc3RpbmcnLCAndXBsb2FkJywgJ2NyZWF0ZS1uZXcnXTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZU9wdGlvbiA9IG9wdGlvbnNbb3B0aW9uXSB8fCAndXNlLWV4aXN0aW5nJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZFRlbXBsYXRlT3B0aW9uID0gb3B0aW9uO1xuICAgIH1cbiAgfVxuXG4gIG9uVGVtcGxhdGVPcHRpb25DaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0VGVtcGxhdGVPcHRpb24odmFsdWUgYXMgJ3VzZS1leGlzdGluZycgfCAndXBsb2FkJyB8ICdjcmVhdGUtbmV3Jyk7XG4gIH1cblxuICBvblRlbXBsYXRlSW5kZXhDaGFuZ2UoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0VGVtcGxhdGVPcHRpb24oaW5kZXgpO1xuICB9XG5cbiAgb25GaWxlU2VsZWN0ZWQoZmlsZTogRmlsZSk6IHZvaWQge1xuICAgIC8vIEhhbmRsZSBmaWxlIHNlbGVjdGlvbiAtIHlvdSBjYW4gc3RvcmUgdGhlIGZpbGUgb3IgZW1pdCBpdFxuICAgIGNvbnNvbGUubG9nKCdGaWxlIHNlbGVjdGVkOicsIGZpbGUubmFtZSk7XG4gICAgLy8gT3B0aW9uYWxseSB1cGRhdGUgdGhlIGZvcm0gb3IgZW1pdCB0aGUgZmlsZVxuICB9XG5cbiAgb25DcmVhdGVUZW1wbGF0ZSgpOiB2b2lkIHtcbiAgICBjb25zdCB0ZW1wbGF0ZU5hbWUgPSB0aGlzLmRvY3VtZW50Rm9ybS5nZXQoJ3RlbXBsYXRlTmFtZScpPy52YWx1ZTtcbiAgICBjb25zdCB0ZW1wbGF0ZURlc2NyaXB0aW9uID0gdGhpcy5kb2N1bWVudEZvcm0uZ2V0KCd0ZW1wbGF0ZURlc2NyaXB0aW9uJyk/LnZhbHVlO1xuICAgIFxuICAgIGlmICh0ZW1wbGF0ZU5hbWUgJiYgdGVtcGxhdGVEZXNjcmlwdGlvbikge1xuICAgICAgLy8gSGFuZGxlIHRlbXBsYXRlIGNyZWF0aW9uXG4gICAgICBjb25zb2xlLmxvZygnQ3JlYXRpbmcgdGVtcGxhdGU6JywgeyB0ZW1wbGF0ZU5hbWUsIHRlbXBsYXRlRGVzY3JpcHRpb24gfSk7XG4gICAgICAvLyBZb3UgY2FuIGVtaXQgYW4gZXZlbnQgb3IgaGFuZGxlIHRoZSBjcmVhdGlvbiBsb2dpYyBoZXJlXG4gICAgfVxuICB9XG5cbiAgb25DYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5jYW5jZWxsZWQuZW1pdCgpO1xuICB9XG5cbiAgb25DcmVhdGVTdGVwKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRvY3VtZW50Rm9ybS52YWxpZCkge1xuICAgICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5kb2N1bWVudEZvcm0udmFsdWU7XG4gICAgICBjb25zdCBtYXBwaW5nczogRG9jdW1lbnRNYXBwZXJbXSA9IHRoaXMubWFwcGluZ3NGb3JtQXJyYXkuY29udHJvbHMubWFwKGNvbnRyb2wgPT4gKHtcbiAgICAgICAga2V5OiBjb250cm9sLmdldCgna2V5Jyk/LnZhbHVlIHx8ICcnLFxuICAgICAgICB2YWx1ZVR5cGU6IGNvbnRyb2wuZ2V0KCd2YWx1ZVR5cGUnKT8udmFsdWUgfHwgJycsXG4gICAgICAgIHZhbHVlOiBjb250cm9sLmdldCgndmFsdWUnKT8udmFsdWUgfHwgJydcbiAgICAgIH0pKTtcblxuICAgICAgY29uc3Qgc3RlcERhdGE6IERvY3VtZW50R2VuZXJhdGlvblRlbXBsYXRlRm9ybURhdGEgPSB7XG4gICAgICAgIGRvY3VtZW50VHlwZTogZm9ybVZhbHVlLmRvY3VtZW50VHlwZSB8fCAnJyxcbiAgICAgICAgdGVtcGxhdGVTb3VyY2U6IGZvcm1WYWx1ZS50ZW1wbGF0ZVNvdXJjZSB8fCAnJyxcbiAgICAgICAgb3V0cHV0VmFyaWFibGU6IGZvcm1WYWx1ZS5vdXRwdXRWYXJpYWJsZSB8fCAnJyxcbiAgICAgICAgdGVtcGxhdGVPcHRpb246IHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZU9wdGlvbixcbiAgICAgICAgbWFwcGluZ3M6IG1hcHBpbmdzXG4gICAgICB9O1xuICAgICAgdGhpcy5jcmVhdGVTdGVwLmVtaXQoc3RlcERhdGEpO1xuICAgIH1cbiAgfVxufVxuXG4iLCI8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1iZy13aGl0ZSBjcWEtcHgtNCBjcWEtcHktMlwiPlxuICA8IS0tIEhlYWRlciAtLT5cbiAgPGgyIGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LWJsYWNrLTEwMCBjcWEtbWItNFwiPlxuICAgIERvY3VtZW50IEdlbmVyYXRpb24gVGVtcGxhdGUgU3RlcFxuICA8L2gyPlxuXG4gIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWZsZXgtMSBjcWEtbWF4LWgtWzUwMHB4XSBjcWEtb3ZlcmZsb3cteS1hdXRvXCI+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LXdyYXAgY3FhLWN1c3RvbS1mb3JtLWZpZWxkc1wiPlxuICAgIDwhLS0gRG9jdW1lbnQgVHlwZSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLW1iLTMgY3FhLXctMS8yIGNxYS1jdXN0b20tZm9ybS1maWVsZHNcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImNxYS1sZWFkaW5nLVsxMDAlXSBjcWEtYmxvY2sgY3FhLXRleHQtWzE0cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzE2MTYxN10gY3FhLW1iLTFcIj5cbiAgICAgICAgRG9jdW1lbnQgVHlwZSA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXJlZC01MDBcIj4qPC9zcGFuPlxuICAgICAgPC9sYWJlbD5cbiAgICAgIDxjcWEtZHluYW1pYy1zZWxlY3QgY2xhc3M9XCJjcWEtdy1mdWxsXCIgW2Zvcm1dPVwiZG9jdW1lbnRGb3JtXCIgW2NvbmZpZ109XCJkb2N1bWVudFR5cGVDb25maWdcIj5cbiAgICAgIDwvY3FhLWR5bmFtaWMtc2VsZWN0PlxuICAgICAgPHAgY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLXRleHQtWyMwQTBBMEFdIGNxYS1tdC0xXCI+XG4gICAgICAgIENob29zZSB0aGUgZmlsZSBmb3JtYXQgeW91IHdhbnQgdG8gZ2VuZXJhdGUuXG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBPdXRwdXQgVmFyaWFibGUgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS13LTEvMiBjcWEtcGwtMlwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJjcWEtbGVhZGluZy1bMTAwJV0gY3FhLWJsb2NrIGNxYS10ZXh0LVsxNHB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyMxNjE2MTddIGNxYS1tYi0xXCI+XG4gICAgICAgICAgT3V0cHV0IFZhcmlhYmxlIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtcmVkLTUwMFwiPio8L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxjcWEtY3VzdG9tLWlucHV0XG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidJbnB1dCdcIlxuICAgICAgICAgIFt2YWx1ZV09XCJkb2N1bWVudEZvcm0uZ2V0KCdvdXRwdXRWYXJpYWJsZScpPy52YWx1ZVwiXG4gICAgICAgICAgW2Z1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiZG9jdW1lbnRGb3JtLmdldCgnb3V0cHV0VmFyaWFibGUnKT8uc2V0VmFsdWUoJGV2ZW50KVwiPlxuICAgICAgICA8L2NxYS1jdXN0b20taW5wdXQ+XG4gICAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS10ZXh0LVsjMEEwQTBBXSBjcWEtbXQtMVwiPlxuICAgICAgICAgIFN0b3JlcyB0aGUgZ2VuZXJhdGVkIGZpbGUgc28gaXQgY2FuIGJlIHVzZWQgaW4gbGF0ZXIgc3RlcHNcbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG5cbiAgICA8L2Rpdj5cbiAgICAgIDwhLS0gVGVtcGxhdGUgU291cmNlIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1tYi0zIGNxYS13LWZ1bGwgY3FhLWN1c3RvbS1mb3JtLWZpZWxkc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1iZXR3ZWVuIGNxYS1tYi0zXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjcWEtbGVhZGluZy1bMTAwJV0gY3FhLWJsb2NrIGNxYS10ZXh0LVsxNHB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyMxNjE2MTddIGNxYS1tYi0xXCI+XG4gICAgICAgICAgICAgICAgVGVtcGxhdGUgU291cmNlXG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxjcWEtc2VnbWVudC1jb250cm9sXG4gICAgICAgICAgICAgICAgICAgIFtzZWdtZW50c109XCJ0ZW1wbGF0ZVNlZ21lbnRzXCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInNlbGVjdGVkVGVtcGxhdGVPcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25UZW1wbGF0ZU9wdGlvbkNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPC9jcWEtc2VnbWVudC1jb250cm9sPlxuICAgICAgICAgICAgPC9kaXY+ICAgICAgICBcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIFxuICAgICAgICA8IS0tIFVzZSBFeGlzdGluZyBUZW1wbGF0ZSAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkVGVtcGxhdGVPcHRpb24gPT09ICd1c2UtZXhpc3RpbmcnXCI+XG4gICAgICAgICAgPGNxYS1keW5hbWljLXNlbGVjdCBjbGFzcz1cImNxYS13LWZ1bGxcIiBbZm9ybV09XCJkb2N1bWVudEZvcm1cIiBbY29uZmlnXT1cInRlbXBsYXRlU291cmNlQ29uZmlnXCI+XG4gICAgICAgICAgPC9jcWEtZHluYW1pYy1zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBcbiAgICAgICAgPCEtLSBVcGxvYWQgVGVtcGxhdGUgLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZFRlbXBsYXRlT3B0aW9uID09PSAndXBsb2FkJ1wiPlxuICAgICAgICAgIDxjcWEtZmlsZS11cGxvYWRcbiAgICAgICAgICAgIGFjY2VwdD1cIi5wZGYsLmRvYywuZG9jeCwudHh0XCJcbiAgICAgICAgICAgIGFjY2VwdGVkRmlsZVR5cGVzPVwiUERGLCBET0MsIG9yIFRYVCBmaWxlc1wiXG4gICAgICAgICAgICAoZmlsZVNlbGVjdGVkKT1cIm9uRmlsZVNlbGVjdGVkKCRldmVudClcIj5cbiAgICAgICAgICA8L2NxYS1maWxlLXVwbG9hZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIFxuICAgICAgICA8IS0tIENyZWF0ZSBOZXcgVGVtcGxhdGUgLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZFRlbXBsYXRlT3B0aW9uID09PSAnY3JlYXRlLW5ldydcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtd3JhcCBjcWEtY3VzdG9tLWZvcm0tZmllbGRzIGNxYS1tYi0zXCI+XG4gICAgICAgICAgICA8IS0tIFRlbXBsYXRlIE5hbWUgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLW1iLTIgY3FhLXctMS8yIGNxYS1wci0yXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNxYS1sZWFkaW5nLVsxMDAlXSBjcWEtYmxvY2sgY3FhLXRleHQtWzE0cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzE2MTYxN10gY3FhLW1iLTFcIj5cbiAgICAgICAgICAgICAgICBUZW1wbGF0ZSBOYW1lIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtcmVkLTUwMFwiPio8L3NwYW4+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDxjcWEtY3VzdG9tLWlucHV0XG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidQREYgRG9jdW1lbnQgKC5wZGYpJ1wiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRvY3VtZW50Rm9ybS5nZXQoJ3RlbXBsYXRlTmFtZScpPy52YWx1ZVwiXG4gICAgICAgICAgICAgICAgW2Z1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiZG9jdW1lbnRGb3JtLmdldCgndGVtcGxhdGVOYW1lJyk/LnNldFZhbHVlKCRldmVudClcIj5cbiAgICAgICAgICAgICAgPC9jcWEtY3VzdG9tLWlucHV0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIDwhLS0gVGVtcGxhdGUgRGVzY3JpcHRpb24gLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXctMS8yIGNxYS1wbC0yXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNxYS1sZWFkaW5nLVsxMDAlXSBjcWEtYmxvY2sgY3FhLXRleHQtWzE0cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzE2MTYxN10gY3FhLW1iLTFcIj5cbiAgICAgICAgICAgICAgICBUZW1wbGF0ZSBEZXNjcmlwdGlvbiA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXJlZC01MDBcIj4qPC9zcGFuPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8Y3FhLWN1c3RvbS1pbnB1dFxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInUERGIERvY3VtZW50ICgucGRmKSdcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkb2N1bWVudEZvcm0uZ2V0KCd0ZW1wbGF0ZURlc2NyaXB0aW9uJyk/LnZhbHVlXCJcbiAgICAgICAgICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJkb2N1bWVudEZvcm0uZ2V0KCd0ZW1wbGF0ZURlc2NyaXB0aW9uJyk/LnNldFZhbHVlKCRldmVudClcIj5cbiAgICAgICAgICAgICAgPC9jcWEtY3VzdG9tLWlucHV0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgXG4gICAgICAgICAgPCEtLSBDcmVhdGUgVGVtcGxhdGUgQnV0dG9uIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtanVzdGlmeS1lbmRcIj5cbiAgICAgICAgICAgIDxjcWEtYnV0dG9uXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJmaWxsZWRcIlxuICAgICAgICAgICAgICB0ZXh0PVwiQ3JlYXRlIFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgW2N1c3RvbUNsYXNzXT1cIidjcWEtcHgtNCBjcWEtcHktMidcIlxuICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJvbkNyZWF0ZVRlbXBsYXRlKClcIj5cbiAgICAgICAgICAgIDwvY3FhLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgIDwhLS0gRG9jdW1lbnQgTWFwcGVyIFNlY3Rpb24gLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1tYi0zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1iZXR3ZWVuIGNxYS1tYi0yXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY3FhLWxlYWRpbmctWzEwMCVdIGNxYS1ibG9jayBjcWEtdGV4dC1bMTRweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjMTYxNjE3XSBjcWEtbWItMVwiPlxuICAgICAgICAgICAgRG9jdW1lbnQgTWFwcGVyXG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8cCBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtdGV4dC1bIzY0NzQ4Ql0gY3FhLW0tMFwiPlxuICAgICAgICAgICAgTWFwIHBsYWNlaG9sZGVycyB0byBkeW5hbWljIHZhbHVlcy5cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YSBocmVmPVwiI1wiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTEgY3FhLXRleHQtWyMxMTE4MjddIGNxYS10ZXh0LVsxMHB4XSBjcWEtbm8tdW5kZXJsaW5lIGhvdmVyOmNxYS11bmRlcmxpbmVcIj5cbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxN1wiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNyAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTcxMl8yMTUyNylcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguNDk5ODQgMTQuNjY2NkMxMi40MTE5IDE0LjY2NjYgMTUuNTgzMiAxMS42ODE4IDE1LjU4MzIgNy45OTk5MkMxNS41ODMyIDQuMzE4MDIgMTIuNDExOSAxLjMzMzI1IDguNDk5ODQgMS4zMzMyNUM0LjU4NzgyIDEuMzMzMjUgMS40MTY1IDQuMzE4MDIgMS40MTY1IDcuOTk5OTJDMS40MTY1IDExLjY4MTggNC41ODc4MiAxNC42NjY2IDguNDk5ODQgMTQuNjY2NlpcIiBzdHJva2U9XCIjM0Y0M0VFXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi40Mzg5NiA1Ljk5OTg5QzYuNjA1NSA1LjU1NDM0IDYuOTM0MiA1LjE3ODYzIDcuMzY2ODUgNC45MzkzMUM3Ljc5OTUgNC43IDguMzA4MTggNC42MTI1MiA4LjgwMjggNC42OTIzN0M5LjI5NzQxIDQuNzcyMjIgOS43NDYwNCA1LjAxNDI0IDEwLjA2OTIgNS4zNzU1OEMxMC4zOTI0IDUuNzM2OTEgMTAuNTY5MyA2LjE5NDI0IDEwLjU2ODUgNi42NjY1NkMxMC41Njg1IDcuOTk5ODkgOC40NDM1NSA4LjY2NjU2IDguNDQzNTUgOC42NjY1NlwiIHN0cm9rZT1cIiMzRjQzRUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjUgMTEuMzMzM0g4LjUwOTY2XCIgc3Ryb2tlPVwiIzNGNDNFRVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTcxMl8yMTUyN1wiPlxuICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTdcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiLz5cbiAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICBcbiAgICAgICAgICBOZWVkIGhlbHA/XG4gICAgICAgIDwvYT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIE1hcHBlciBUYWJsZSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtYm9yZGVyIGNxYS1ib3JkZXItZ3JheS0yMDAgY3FhLXJvdW5kZWQtbGcgY3FhLW92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgICA8dGFibGUgY2xhc3M9XCJjcWEtdy1mdWxsXCIgc3R5bGU9XCJ0YWJsZS1sYXlvdXQ6IGZpeGVkO1wiPlxuICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cImNxYS1iZy1bI0Q4RDlGQzREXSBjcWEtYm9yZGVyLWIgY3FhLWJvcmRlci1ncmF5LTIwMFwiPlxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjcWEtdy1bNDBweF0gY3FhLXAtMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwiY3FhLXctNCBjcWEtaC00XCI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cImNxYS10ZXh0LWxlZnQgY3FhLXRleHQtWzEycHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzE2MTYxN10gY3FhLXAtMlwiIHN0eWxlPVwid2lkdGg6IGNhbGMoKDEwMCUgLSA0MHB4KSAvIDMpO1wiPktleTwvdGg+XG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cImNxYS10ZXh0LWxlZnQgY3FhLXRleHQtWzEycHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzE2MTYxN10gY3FhLXAtMlwiIHN0eWxlPVwid2lkdGg6IGNhbGMoKDEwMCUgLSA0MHB4KSAvIDMpO1wiPlZhbHVlIFR5cGU8L3RoPlxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjcWEtdGV4dC1sZWZ0IGNxYS10ZXh0LVsxMnB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyMxNjE2MTddIGNxYS1wLTJcIiBzdHlsZT1cIndpZHRoOiBjYWxjKCgxMDAlIC0gNDBweCkgLyAzKTtcIj5WYWx1ZTwvdGg+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBtYXBwaW5nIG9mIG1hcHBpbmdzRm9ybUFycmF5LmNvbnRyb2xzOyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJjcWEtYm9yZGVyLWIgY3FhLWJvcmRlci1ncmF5LTIwMCBjcWEtbGFzdDpib3JkZXItYi0wXCI+XG4gICAgICAgICAgICAgIDwhLS0gQ2hlY2tib3ggLS0+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNxYS13LVs0MHB4XSBjcWEtcC0yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJjcWEtdy00IGNxYS1oLTRcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgICA8IS0tIEtleSBJbnB1dCAtLT5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY3FhLXAtMlwiIHN0eWxlPVwid2lkdGg6IGNhbGMoKDEwMCUgLSA0MHB4KSAvIDMpO1wiPlxuICAgICAgICAgICAgICAgIDxjcWEtY3VzdG9tLWlucHV0XG4gICAgICAgICAgICAgICAgICBpbnB1dElubGluZVN0eWxlPVwiaGVpZ2h0OiAzNnB4O2NvbG9yOiAjMEEwQTBBOyBmb250LXNpemU6IDE0cHg7IGJvcmRlci1yYWRpdXM6IDVweDtcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidLZXknXCJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJnZXRNYXBwaW5nR3JvdXAoaSkuZ2V0KCdrZXknKT8udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgW2Z1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJnZXRNYXBwaW5nR3JvdXAoaSkuZ2V0KCdrZXknKT8uc2V0VmFsdWUoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDwvY3FhLWN1c3RvbS1pbnB1dD5cbiAgICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgICA8IS0tIFZhbHVlIFR5cGUgRHJvcGRvd24gLS0+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNxYS1wLTJcIiBzdHlsZT1cIndpZHRoOiBjYWxjKCgxMDAlIC0gNDBweCkgLyAzKTtcIj5cbiAgICAgICAgICAgICAgICA8Y3FhLWR5bmFtaWMtc2VsZWN0IFxuICAgICAgICAgICAgICAgICAgaW5wdXRJbmxpbmVTdHlsZT1cImhlaWdodDogMzZweDtjb2xvcjogIzBBMEEwQTsgZm9udC1zaXplOiAxNHB4OyBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4ICFpbXBvcnRhbnQ7XCJcbiAgICAgICAgICAgICAgICAgIFtmb3JtXT1cImdldE1hcHBpbmdHcm91cChpKVwiIFxuICAgICAgICAgICAgICAgICAgW2NvbmZpZ109XCJ2YWx1ZVR5cGVDb25maWdcIj5cbiAgICAgICAgICAgICAgICA8L2NxYS1keW5hbWljLXNlbGVjdD5cbiAgICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgICA8IS0tIFZhbHVlIElucHV0IHdpdGggRGVsZXRlIEJ1dHRvbiAtLT5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY3FhLXAtMlwiIHN0eWxlPVwid2lkdGg6IGNhbGMoKDEwMCUgLSA0MHB4KSAvIDMpO1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgPGNxYS1jdXN0b20taW5wdXRcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRJbmxpbmVTdHlsZT1cImhlaWdodDogMzZweDtjb2xvcjogIzBBMEEwQTsgZm9udC1zaXplOiAxNHB4OyBib3JkZXItcmFkaXVzOiA1cHg7XCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidWYWx1ZSdcIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZ2V0TWFwcGluZ0dyb3VwKGkpLmdldCgndmFsdWUnKT8udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiZ2V0TWFwcGluZ0dyb3VwKGkpLmdldCgndmFsdWUnKT8uc2V0VmFsdWUoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgPC9jcWEtY3VzdG9tLWlucHV0PlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZU1hcHBpbmcoaSlcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNxYS10ZXh0LXJlZC01MDAgaG92ZXI6Y3FhLXRleHQtcmVkLTcwMCBjcWEtcC0xIGNxYS1mbGV4LXNocmluay0wXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1hcHBpbmdzRm9ybUFycmF5Lmxlbmd0aCA9PT0gMVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxwYXRoIGQ9XCJNMTAuNjY2OCA2VjEyLjY2NjdINS4zMzM1VjZIMTAuNjY2OFpNOS42NjY4MyAySDYuMzMzNUw1LjY2NjgzIDIuNjY2NjdIMy4zMzM1VjRIMTIuNjY2OFYyLjY2NjY3SDEwLjMzMzVMOS42NjY4MyAyWk0xMi4wMDAyIDQuNjY2NjdINC4wMDAxNlYxMi42NjY3QzQuMDAwMTYgMTMuNCA0LjYwMDE2IDE0IDUuMzMzNSAxNEgxMC42NjY4QzExLjQwMDIgMTQgMTIuMDAwMiAxMy40IDEyLjAwMDIgMTIuNjY2N1Y0LjY2NjY3WlwiIGZpbGw9XCIjRjlCRkJGXCIvPlxuPC9zdmc+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgPC90YWJsZT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIEFkZCBNYXBwaW5nIEJ1dHRvbiAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtanVzdGlmeS1lbmQgY3FhLW10LTJcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJhZGRNYXBwaW5nKClcIlxuICAgICAgICAgIGNsYXNzPVwiY3FhLXRleHQtWyMzRjQzRUVdIGNxYS10ZXh0LVsxMnB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTEgaG92ZXI6Y3FhLXVuZGVybGluZVwiPlxuICAgICAgICAgIDxzcGFuPis8L3NwYW4+XG4gICAgICAgICAgPHNwYW4+QWRkIE1hcHBpbmc8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gQWN0aW9uIEJ1dHRvbnMgLS0+XG4gIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtdy1mdWxsIGNxYS1nYXAtMiBjcWEtbXQtYXV0byBjcWEtcHQtNCBjcWEtYm9yZGVyLXQgY3FhLWJvcmRlci1ncmF5LTIwMFwiPlxuICAgIDxjcWEtYnV0dG9uIGNsYXNzPVwiY3FhLXctMS8yIGNxYS1yb3VuZGVkLVsxMHB4XVwiIHZhcmlhbnQ9XCJvdXRsaW5lZFwiIHRleHQ9XCJDYW5jZWxcIiBbY3VzdG9tQ2xhc3NdPVwiJ2NxYS1mbGV4LTEgY3FhLXctZnVsbCdcIlxuICAgICAgKGNsaWNrZWQpPVwib25DYW5jZWwoKVwiPlxuICAgIDwvY3FhLWJ1dHRvbj5cbiAgICA8Y3FhLWJ1dHRvbiBjbGFzcz1cImNxYS1ib3JkZXItc29saWQgY3FhLXJvdW5kZWQtWzlweF0gY3FhLXctMS8yIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1bIzNGNDNFRV1cIiB2YXJpYW50PVwiZmlsbGVkXCIgdGV4dD1cIkNyZWF0ZSBTdGVwXCIgW2N1c3RvbUNsYXNzXT1cIidjcWEtZmxleC0xIGNxYS13LWZ1bGwnXCJcbiAgICAgIChjbGlja2VkKT1cIm9uQ3JlYXRlU3RlcCgpXCI+XG4gICAgPC9jcWEtYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG4iXX0=
@@ -0,0 +1,31 @@
1
+ import { Component, Output, EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../button/button.component";
4
+ export class StepBuilderRecordStepComponent {
5
+ constructor() {
6
+ /** Emit when cancelled */
7
+ this.cancelled = new EventEmitter();
8
+ /** Emit when recording is cancelled */
9
+ this.cancelRecording = new EventEmitter();
10
+ }
11
+ ngOnInit() {
12
+ // Component initialization
13
+ }
14
+ onCancel() {
15
+ this.cancelled.emit();
16
+ }
17
+ onCancelRecording() {
18
+ this.cancelRecording.emit();
19
+ }
20
+ }
21
+ StepBuilderRecordStepComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StepBuilderRecordStepComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22
+ StepBuilderRecordStepComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: StepBuilderRecordStepComponent, selector: "cqa-step-builder-record-step", outputs: { cancelled: "cancelled", cancelRecording: "cancelRecording" }, host: { classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div class=\"cqa-flex cqa-flex-col cqa-bg-white cqa-px-4 cqa-py-2\">\n <!-- Header -->\n <div class=\"cqa-mb-4\">\n <p class=\"cqa-text-[12px] cqa-font-semibold cqa-m-0\">\n Record steps with ContextAI Extension\n </p>\n </div>\n\n <div class=\"cqa-flex cqa-flex-col cqa-flex-1 cqa-max-h-[500px] cqa-overflow-y-auto\">\n <!-- Recording Mode Active Section -->\n <div class=\"cqa-flex cqa-flex-col cqa-items-center cqa-justify-center cqa-text-center cqa-gap-3 cqa-pt-10\">\n <!-- Video/Camera Icon -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-[64px] cqa-h-[64px] cqa-rounded-full cqa-bg-[#FEE2E2] cqa-border cqa-border-[#E7000B]\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M21.333 17.3333L28.297 21.9759C28.3974 22.0428 28.514 22.0811 28.6345 22.0868C28.7549 22.0926 28.8747 22.0656 28.981 22.0087C29.0873 21.9517 29.1762 21.8671 29.2382 21.7636C29.3002 21.6602 29.3329 21.5419 29.333 21.4213V10.4933C29.333 10.376 29.3021 10.2607 29.2434 10.1592C29.1846 10.0577 29.1001 9.97344 28.9984 9.91501C28.8967 9.85658 28.7814 9.82602 28.6641 9.82642C28.5468 9.82682 28.4317 9.85816 28.3303 9.91728L21.333 13.9999\" stroke=\"#E7000B\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M18.667 8H5.33366C3.8609 8 2.66699 9.19391 2.66699 10.6667V21.3333C2.66699 22.8061 3.8609 24 5.33366 24H18.667C20.1398 24 21.3337 22.8061 21.3337 21.3333V10.6667C21.3337 9.19391 20.1398 8 18.667 8Z\" stroke=\"#E7000B\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n\n <!-- Title -->\n <h4 class=\"cqa-m-0 cqa-text-[16px] cqa-leading-[24px] cqa-font-[600] cqa-text-[#0A0A0A]\">\n Recording Mode Active\n </h4>\n\n <!-- Subtitle -->\n <p class=\"cqa-m-0 cqa-text-[12px] cqa-leading-[18px] cqa-text-[#6B7280]\">\n Click on any element in the browser to capture it\n </p>\n </div>\n </div>\n\n <!-- Action Buttons -->\n <div class=\"cqa-flex cqa-justify-center cqa-w-full cqa-gap-2 cqa-mt-auto cqa-pt-4 cqa-border-t cqa-border-gray-200\">\n <cqa-button \n class=\"cqa-px-4 cqa-rounded-[10px]\" \n variant=\"outlined\" \n text=\"Cancel Recording\" \n [customClass]=\"'cqa-flex-1'\"\n (clicked)=\"onCancelRecording()\">\n </cqa-button>\n </div>\n</div>\n\n", components: [{ type: i1.ButtonComponent, selector: "cqa-button", inputs: ["variant", "btnSize", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass", "inlineStyles", "tooltip", "tooltipPosition"], outputs: ["clicked"] }] });
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StepBuilderRecordStepComponent, decorators: [{
24
+ type: Component,
25
+ args: [{ selector: 'cqa-step-builder-record-step', host: { class: 'cqa-ui-root' }, template: "<div class=\"cqa-flex cqa-flex-col cqa-bg-white cqa-px-4 cqa-py-2\">\n <!-- Header -->\n <div class=\"cqa-mb-4\">\n <p class=\"cqa-text-[12px] cqa-font-semibold cqa-m-0\">\n Record steps with ContextAI Extension\n </p>\n </div>\n\n <div class=\"cqa-flex cqa-flex-col cqa-flex-1 cqa-max-h-[500px] cqa-overflow-y-auto\">\n <!-- Recording Mode Active Section -->\n <div class=\"cqa-flex cqa-flex-col cqa-items-center cqa-justify-center cqa-text-center cqa-gap-3 cqa-pt-10\">\n <!-- Video/Camera Icon -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-[64px] cqa-h-[64px] cqa-rounded-full cqa-bg-[#FEE2E2] cqa-border cqa-border-[#E7000B]\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M21.333 17.3333L28.297 21.9759C28.3974 22.0428 28.514 22.0811 28.6345 22.0868C28.7549 22.0926 28.8747 22.0656 28.981 22.0087C29.0873 21.9517 29.1762 21.8671 29.2382 21.7636C29.3002 21.6602 29.3329 21.5419 29.333 21.4213V10.4933C29.333 10.376 29.3021 10.2607 29.2434 10.1592C29.1846 10.0577 29.1001 9.97344 28.9984 9.91501C28.8967 9.85658 28.7814 9.82602 28.6641 9.82642C28.5468 9.82682 28.4317 9.85816 28.3303 9.91728L21.333 13.9999\" stroke=\"#E7000B\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M18.667 8H5.33366C3.8609 8 2.66699 9.19391 2.66699 10.6667V21.3333C2.66699 22.8061 3.8609 24 5.33366 24H18.667C20.1398 24 21.3337 22.8061 21.3337 21.3333V10.6667C21.3337 9.19391 20.1398 8 18.667 8Z\" stroke=\"#E7000B\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n\n <!-- Title -->\n <h4 class=\"cqa-m-0 cqa-text-[16px] cqa-leading-[24px] cqa-font-[600] cqa-text-[#0A0A0A]\">\n Recording Mode Active\n </h4>\n\n <!-- Subtitle -->\n <p class=\"cqa-m-0 cqa-text-[12px] cqa-leading-[18px] cqa-text-[#6B7280]\">\n Click on any element in the browser to capture it\n </p>\n </div>\n </div>\n\n <!-- Action Buttons -->\n <div class=\"cqa-flex cqa-justify-center cqa-w-full cqa-gap-2 cqa-mt-auto cqa-pt-4 cqa-border-t cqa-border-gray-200\">\n <cqa-button \n class=\"cqa-px-4 cqa-rounded-[10px]\" \n variant=\"outlined\" \n text=\"Cancel Recording\" \n [customClass]=\"'cqa-flex-1'\"\n (clicked)=\"onCancelRecording()\">\n </cqa-button>\n </div>\n</div>\n\n", styles: [] }]
26
+ }], ctorParameters: function () { return []; }, propDecorators: { cancelled: [{
27
+ type: Output
28
+ }], cancelRecording: [{
29
+ type: Output
30
+ }] } });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1idWlsZGVyLXJlY29yZC1zdGVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc3RlcC1idWlsZGVyL3N0ZXAtYnVpbGRlci1yZWNvcmQtc3RlcC9zdGVwLWJ1aWxkZXItcmVjb3JkLXN0ZXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zdGVwLWJ1aWxkZXIvc3RlcC1idWlsZGVyLXJlY29yZC1zdGVwL3N0ZXAtYnVpbGRlci1yZWNvcmQtc3RlcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFTLE1BQU0sRUFBRSxZQUFZLEVBQVUsTUFBTSxlQUFlLENBQUM7OztBQVkvRSxNQUFNLE9BQU8sOEJBQThCO0lBT3pDO1FBTkEsMEJBQTBCO1FBQ2hCLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRS9DLHVDQUF1QztRQUM3QixvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFFdEMsQ0FBQztJQUVoQixRQUFRO1FBQ04sMkJBQTJCO0lBQzdCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDOzsySEFuQlUsOEJBQThCOytHQUE5Qiw4QkFBOEIsc0xDWjNDLHk2RUEyQ0E7MkZEL0JhLDhCQUE4QjtrQkFOMUMsU0FBUzsrQkFDRSw4QkFBOEIsUUFHbEMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFOzBFQUlwQixTQUFTO3NCQUFsQixNQUFNO2dCQUdHLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVjb3JkU3RlcEZvcm1EYXRhIHtcbiAgLy8gQWRkIGFueSBmb3JtIGRhdGEgZmllbGRzIGlmIG5lZWRlZCBpbiB0aGUgZnV0dXJlXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1zdGVwLWJ1aWxkZXItcmVjb3JkLXN0ZXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vc3RlcC1idWlsZGVyLXJlY29yZC1zdGVwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXSxcbiAgaG9zdDogeyBjbGFzczogJ2NxYS11aS1yb290JyB9XG59KVxuZXhwb3J0IGNsYXNzIFN0ZXBCdWlsZGVyUmVjb3JkU3RlcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKiBFbWl0IHdoZW4gY2FuY2VsbGVkICovXG4gIEBPdXRwdXQoKSBjYW5jZWxsZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqIEVtaXQgd2hlbiByZWNvcmRpbmcgaXMgY2FuY2VsbGVkICovXG4gIEBPdXRwdXQoKSBjYW5jZWxSZWNvcmRpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIENvbXBvbmVudCBpbml0aWFsaXphdGlvblxuICB9XG5cbiAgb25DYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5jYW5jZWxsZWQuZW1pdCgpO1xuICB9XG5cbiAgb25DYW5jZWxSZWNvcmRpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5jYW5jZWxSZWNvcmRpbmcuZW1pdCgpO1xuICB9XG59XG5cbiIsIjxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWJnLXdoaXRlIGNxYS1weC00IGNxYS1weS0yXCI+XG4gIDwhLS0gSGVhZGVyIC0tPlxuICA8ZGl2IGNsYXNzPVwiY3FhLW1iLTRcIj5cbiAgICA8cCBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtbS0wXCI+XG4gICAgICBSZWNvcmQgc3RlcHMgd2l0aCBDb250ZXh0QUkgRXh0ZW5zaW9uXG4gICAgPC9wPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1mbGV4LTEgY3FhLW1heC1oLVs1MDBweF0gY3FhLW92ZXJmbG93LXktYXV0b1wiPlxuICAgIDwhLS0gUmVjb3JkaW5nIE1vZGUgQWN0aXZlIFNlY3Rpb24gLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtdGV4dC1jZW50ZXIgY3FhLWdhcC0zIGNxYS1wdC0xMFwiPlxuICAgICAgPCEtLSBWaWRlby9DYW1lcmEgSWNvbiAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtdy1bNjRweF0gY3FhLWgtWzY0cHhdIGNxYS1yb3VuZGVkLWZ1bGwgY3FhLWJnLVsjRkVFMkUyXSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItWyNFNzAwMEJdXCI+XG4gICAgICAgIDxzdmcgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgdmlld0JveD1cIjAgMCAzMiAzMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMjEuMzMzIDE3LjMzMzNMMjguMjk3IDIxLjk3NTlDMjguMzk3NCAyMi4wNDI4IDI4LjUxNCAyMi4wODExIDI4LjYzNDUgMjIuMDg2OEMyOC43NTQ5IDIyLjA5MjYgMjguODc0NyAyMi4wNjU2IDI4Ljk4MSAyMi4wMDg3QzI5LjA4NzMgMjEuOTUxNyAyOS4xNzYyIDIxLjg2NzEgMjkuMjM4MiAyMS43NjM2QzI5LjMwMDIgMjEuNjYwMiAyOS4zMzI5IDIxLjU0MTkgMjkuMzMzIDIxLjQyMTNWMTAuNDkzM0MyOS4zMzMgMTAuMzc2IDI5LjMwMjEgMTAuMjYwNyAyOS4yNDM0IDEwLjE1OTJDMjkuMTg0NiAxMC4wNTc3IDI5LjEwMDEgOS45NzM0NCAyOC45OTg0IDkuOTE1MDFDMjguODk2NyA5Ljg1NjU4IDI4Ljc4MTQgOS44MjYwMiAyOC42NjQxIDkuODI2NDJDMjguNTQ2OCA5LjgyNjgyIDI4LjQzMTcgOS44NTgxNiAyOC4zMzAzIDkuOTE3MjhMMjEuMzMzIDEzLjk5OTlcIiBzdHJva2U9XCIjRTcwMDBCXCIgc3Ryb2tlLXdpZHRoPVwiMi42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICA8cGF0aCBkPVwiTTE4LjY2NyA4SDUuMzMzNjZDMy44NjA5IDggMi42NjY5OSA5LjE5MzkxIDIuNjY2OTkgMTAuNjY2N1YyMS4zMzMzQzIuNjY2OTkgMjIuODA2MSAzLjg2MDkgMjQgNS4zMzM2NiAyNEgxOC42NjdDMjAuMTM5OCAyNCAyMS4zMzM3IDIyLjgwNjEgMjEuMzMzNyAyMS4zMzMzVjEwLjY2NjdDMjEuMzMzNyA5LjE5MzkxIDIwLjEzOTggOCAxOC42NjcgOFpcIiBzdHJva2U9XCIjRTcwMDBCXCIgc3Ryb2tlLXdpZHRoPVwiMi42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBUaXRsZSAtLT5cbiAgICAgIDxoNCBjbGFzcz1cImNxYS1tLTAgY3FhLXRleHQtWzE2cHhdIGNxYS1sZWFkaW5nLVsyNHB4XSBjcWEtZm9udC1bNjAwXSBjcWEtdGV4dC1bIzBBMEEwQV1cIj5cbiAgICAgICAgUmVjb3JkaW5nIE1vZGUgQWN0aXZlXG4gICAgICA8L2g0PlxuXG4gICAgICA8IS0tIFN1YnRpdGxlIC0tPlxuICAgICAgPHAgY2xhc3M9XCJjcWEtbS0wIGNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMThweF0gY3FhLXRleHQtWyM2QjcyODBdXCI+XG4gICAgICAgIENsaWNrIG9uIGFueSBlbGVtZW50IGluIHRoZSBicm93c2VyIHRvIGNhcHR1cmUgaXRcbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBBY3Rpb24gQnV0dG9ucyAtLT5cbiAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtdy1mdWxsIGNxYS1nYXAtMiBjcWEtbXQtYXV0byBjcWEtcHQtNCBjcWEtYm9yZGVyLXQgY3FhLWJvcmRlci1ncmF5LTIwMFwiPlxuICAgIDxjcWEtYnV0dG9uIFxuICAgICAgY2xhc3M9XCJjcWEtcHgtNCBjcWEtcm91bmRlZC1bMTBweF1cIiBcbiAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiIFxuICAgICAgdGV4dD1cIkNhbmNlbCBSZWNvcmRpbmdcIiBcbiAgICAgIFtjdXN0b21DbGFzc109XCInY3FhLWZsZXgtMSdcIlxuICAgICAgKGNsaWNrZWQpPVwib25DYW5jZWxSZWNvcmRpbmcoKVwiPlxuICAgIDwvY3FhLWJ1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuIl19
@@ -49,10 +49,10 @@ export class CustomEditStepComponent {
49
49
  }
50
50
  }
51
51
  CustomEditStepComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CustomEditStepComponent, deps: [{ token: CUSTOM_EDIT_STEP_REF }, { token: CUSTOM_EDIT_STEP_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
52
- CustomEditStepComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: CustomEditStepComponent, selector: "cqa-custom-edit-step", outputs: { apply: "apply", cancel: "cancel", editInDepth: "editInDepth" }, 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-[500px] cqa-flex cqa-flex-col cqa-gap-[12px] cqa-p-2 cqa-box-border\">\n <!-- Header: title left; Need help? + close icon right -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-gap-2 cqa-px-4\">\n <h2 class=\"cqa-text-[16px] cqa-leading-[24px] cqa-font-bold cqa-text-[#111827] cqa-m-0 cqa-font-[600]\">\n Step Description\n </h2>\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <!-- Need help? with custom tooltip (works inside overlay) -->\n <div class=\"cqa-relative cqa-inline-flex\"\n (mouseenter)=\"showHelpTooltip = true\" (mouseleave)=\"showHelpTooltip = false\">\n <a *ngIf=\"helpUrl\" href=\"#\" (click)=\"onHelp($event)\"\n class=\"cqa-flex cqa-items-center cqa-gap-1 cqa-text-[#3F43EE] cqa-text-[12px] cqa-leading-[21px] cqa-no-underline hover:cqa-underline cqa-cursor-pointer\">\n <svg width=\"17\" height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"cqa-flex-shrink-0\" aria-hidden=\"true\">\n <g clip-path=\"url(#help-icon-clip)\">\n <path d=\"M8.50033 14.6663C12.4123 14.6663 15.5837 11.6816 15.5837 7.99967C15.5837 4.31778 12.4123 1.33301 8.50033 1.33301C4.58831 1.33301 1.41699 4.31778 1.41699 7.99967C1.41699 11.6816 4.58831 14.6663 8.50033 14.6663Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M6.43848 6.00038C6.60501 5.55483 6.93371 5.17912 7.36636 4.9398C7.79901 4.70049 8.30769 4.61301 8.80231 4.69285C9.29693 4.7727 9.74556 5.01473 10.0687 5.37607C10.3919 5.7374 10.5688 6.19473 10.5681 6.66705C10.5681 8.00038 8.44306 8.66705 8.44306 8.66705\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8.5 11.333H8.50966\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </g>\n <defs>\n <clipPath id=\"help-icon-clip\">\n <rect width=\"17\" height=\"16\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n Need help ?\n </a>\n <span *ngIf=\"!helpUrl\" class=\"cqa-flex cqa-items-center cqa-gap-1.5 cqa-font-[500] cqa-text-[10px] cqa-cursor-default\">\n <svg width=\"17\" height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"cqa-flex-shrink-0 cqa-text-[#3F43EE]\" aria-hidden=\"true\">\n <g clip-path=\"url(#help-icon-clip-nolink)\">\n <path d=\"M8.50033 14.6663C12.4123 14.6663 15.5837 11.6816 15.5837 7.99967C15.5837 4.31778 12.4123 1.33301 8.50033 1.33301C4.58831 1.33301 1.41699 4.31778 1.41699 7.99967C1.41699 11.6816 4.58831 14.6663 8.50033 14.6663Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M6.43848 6.00038C6.60501 5.55483 6.93371 5.17912 7.36636 4.9398C7.79901 4.70049 8.30769 4.61301 8.80231 4.69285C9.29693 4.7727 9.74556 5.01473 10.0687 5.37607C10.3919 5.7374 10.5688 6.19473 10.5681 6.66705C10.5681 8.00038 8.44306 8.66705 8.44306 8.66705\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8.5 11.333H8.50966\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </g>\n <defs>\n <clipPath id=\"help-icon-clip-nolink\">\n <rect width=\"17\" height=\"16\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n Need help ?\n </span>\n <!-- Custom tooltip (exact spec: 306\u00D720 content, 6px radius, #0A0A0A, no arrow) -->\n <div *ngIf=\"showHelpTooltip\" class=\"cqa-absolute cqa-pointer-events-none cqa-z-[100]\"\n style=\"top: -24px; left: -125px;\"\n role=\"tooltip\">\n <div class=\"cqa-text-white cqa-text-center cqa-whitespace-nowrap\"\n style=\"width: 306px; min-height: 20px; border-radius: 6px; opacity: 1; padding: 4px 8px; background-color: #0A0A0A; line-height: 20px; font-size: 8px;\">\n {{ helpTooltipText }}\n </div>\n </div>\n </div>\n <button type=\"button\" (click)=\"onClose()\"\n class=\"cqa-p-1 cqa-rounded cqa-text-[#6B7280] hover:cqa-bg-[#F3F4F6] cqa-flex cqa-items-center cqa-justify-center\"\n title=\"Close\" aria-label=\"Close\">\n <mat-icon class=\"!cqa-w-5 !cqa-h-5 !cqa-text-[20px]\">close</mat-icon>\n </button>\n </div>\n </div>\n\n <!-- Line below header (full width of modal, no side margin) -->\n <div class=\"cqa--mx-2 cqa-w-[calc(100%+1rem)] cqa-flex-shrink-0\">\n <div class=\"cqa-h-px cqa-w-full cqa-bg-[#E5E7EB]\" role=\"presentation\"></div>\n </div>\n\n <!-- Content: textarea + helper -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1.5\">\n <cqa-custom-textarea\n [(value)]=\"value\"\n placeholder=\"Enter description\"\n [fullWidth]=\"true\"\n [rows]=\"4\"\n resize=\"vertical\"\n size=\"md\">\n </cqa-custom-textarea>\n <p class=\"cqa-text-[12px] cqa-leading-[18px] cqa-text-[#0A0A0A] cqa-m-0\">\n Provide a clear description of the step's purpose\n </p>\n </div>\n\n <!-- Line below content (full width of modal, no side margin) -->\n <div class=\"cqa--mx-2 cqa-w-[calc(100%+1rem)] cqa-flex-shrink-0\">\n <div class=\"cqa-h-px cqa-w-full cqa-bg-[#E5E7EB]\" role=\"presentation\"></div>\n </div>\n\n <!-- Footer: Cancel, Apply (full width in one row) -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <div class=\"cqa-flex cqa-items-stretch cqa-gap-2 cqa-w-full\">\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <cqa-button variant=\"outlined\" btnSize=\"lg\" [text]=\"'Cancel'\" [fullWidth]=\"true\" (clicked)=\"onCancel()\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-border-[#414146]'\"></cqa-button>\n </div>\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <cqa-button variant=\"filled\" btnSize=\"lg\" [text]=\"'Apply'\" [fullWidth]=\"true\" (clicked)=\"onApply()\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-border-[#3F43EE]'\"></cqa-button>\n </div>\n </div>\n <a href=\"#\" (click)=\"onEditInDepth($event)\"\n class=\"cqa-text-[#3F43EE] cqa-text-[12px] cqa-leading-[18px] cqa-font-medium cqa-flex cqa-items-center cqa-gap-1.5 cqa-no-underline hover:cqa-no-underline cqa-self-center\">\n <mat-icon class=\"!cqa-w-4 !cqa-h-4 !cqa-text-[16px]\">open_in_new</mat-icon>\n Edit in depth (open detailed right panel)\n </a>\n </div>\n</div>\n", components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2.CustomTextareaComponent, selector: "cqa-custom-textarea", inputs: ["label", "placeholder", "value", "disabled", "errors", "required", "ariaLabel", "size", "fullWidth", "maxLength", "showCharCount", "rows", "cols", "resize", "textareaInlineStyle", "labelInlineStyle"], outputs: ["valueChange", "blurred", "focused"] }, { 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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
52
+ CustomEditStepComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: CustomEditStepComponent, selector: "cqa-custom-edit-step", outputs: { apply: "apply", cancel: "cancel", editInDepth: "editInDepth" }, 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-[500px] cqa-flex cqa-flex-col cqa-gap-[12px] cqa-p-2 cqa-box-border\">\n <!-- Header: title left; Need help? + close icon right -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-gap-2 cqa-px-4\">\n <h2 class=\"cqa-text-[16px] cqa-leading-[24px] cqa-font-bold cqa-text-[#111827] cqa-m-0 cqa-font-[600]\">\n Step Description\n </h2>\n <div class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-min-h-[28px]\">\n <!-- Need help? with custom tooltip (works inside overlay) -->\n <div class=\"cqa-relative cqa-inline-flex cqa-items-center\"\n (mouseenter)=\"showHelpTooltip = true\" (mouseleave)=\"showHelpTooltip = false\">\n <a *ngIf=\"helpUrl\" href=\"#\" (click)=\"onHelp($event)\"\n class=\"cqa-flex cqa-items-center cqa-gap-1 cqa-text-[#3F43EE] cqa-text-[12px] cqa-leading-[21px] cqa-no-underline hover:cqa-underline cqa-cursor-pointer\">\n <svg width=\"17\" height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"cqa-flex-shrink-0\" aria-hidden=\"true\">\n <g clip-path=\"url(#help-icon-clip)\">\n <path d=\"M8.50033 14.6663C12.4123 14.6663 15.5837 11.6816 15.5837 7.99967C15.5837 4.31778 12.4123 1.33301 8.50033 1.33301C4.58831 1.33301 1.41699 4.31778 1.41699 7.99967C1.41699 11.6816 4.58831 14.6663 8.50033 14.6663Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M6.43848 6.00038C6.60501 5.55483 6.93371 5.17912 7.36636 4.9398C7.79901 4.70049 8.30769 4.61301 8.80231 4.69285C9.29693 4.7727 9.74556 5.01473 10.0687 5.37607C10.3919 5.7374 10.5688 6.19473 10.5681 6.66705C10.5681 8.00038 8.44306 8.66705 8.44306 8.66705\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8.5 11.333H8.50966\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </g>\n <defs>\n <clipPath id=\"help-icon-clip\">\n <rect width=\"17\" height=\"16\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n Need help ?\n </a>\n <span *ngIf=\"!helpUrl\" class=\"cqa-flex cqa-items-center cqa-gap-1.5 cqa-font-[500] cqa-text-[10px] cqa-cursor-default\">\n <svg width=\"17\" height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"cqa-flex-shrink-0 cqa-text-[#3F43EE]\" aria-hidden=\"true\">\n <g clip-path=\"url(#help-icon-clip-nolink)\">\n <path d=\"M8.50033 14.6663C12.4123 14.6663 15.5837 11.6816 15.5837 7.99967C15.5837 4.31778 12.4123 1.33301 8.50033 1.33301C4.58831 1.33301 1.41699 4.31778 1.41699 7.99967C1.41699 11.6816 4.58831 14.6663 8.50033 14.6663Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M6.43848 6.00038C6.60501 5.55483 6.93371 5.17912 7.36636 4.9398C7.79901 4.70049 8.30769 4.61301 8.80231 4.69285C9.29693 4.7727 9.74556 5.01473 10.0687 5.37607C10.3919 5.7374 10.5688 6.19473 10.5681 6.66705C10.5681 8.00038 8.44306 8.66705 8.44306 8.66705\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8.5 11.333H8.50966\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </g>\n <defs>\n <clipPath id=\"help-icon-clip-nolink\">\n <rect width=\"17\" height=\"16\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n Need help ?\n </span>\n <!-- Custom tooltip (exact spec: 306\u00D720 content, 6px radius, #0A0A0A, no arrow) -->\n <div *ngIf=\"showHelpTooltip\"\n class=\"cqa-absolute cqa-pointer-events-none cqa-z-[100] cqa-top-[-24px] cqa-left-[-125px]\"\n role=\"tooltip\">\n <div\n class=\"cqa-text-white cqa-text-center cqa-whitespace-nowrap cqa-w-[306px] cqa-min-h-[20px] cqa-rounded-[6px] cqa-py-1 cqa-px-2 cqa-bg-[#0A0A0A] cqa-leading-[20px] cqa-text-[8px]\">\n {{ helpTooltipText }}\n </div>\n </div>\n </div>\n <button type=\"button\" (click)=\"onClose()\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-min-h-[28px] cqa-min-w-[28px] cqa-rounded cqa-text-[#6B7280] hover:cqa-bg-[#F3F4F6] cqa-p-0\"\n title=\"Close\" aria-label=\"Close\">\n <mat-icon class=\"!cqa-w-5 !cqa-h-5 !cqa-text-[20px] !cqa-block !cqa-leading-none\">close</mat-icon>\n </button>\n </div>\n </div>\n\n <!-- Line below header (full width of modal, no side margin) -->\n <div class=\"cqa--mx-2 cqa-w-[calc(100%+1rem)] cqa-flex-shrink-0\">\n <div class=\"cqa-h-px cqa-w-full cqa-bg-[#E5E7EB]\" role=\"presentation\"></div>\n </div>\n\n <!-- Content: textarea + helper -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1.5 cqa-px-2 cqa-py-1\">\n <cqa-custom-textarea\n [(value)]=\"value\"\n placeholder=\"Enter description\"\n [fullWidth]=\"true\"\n [rows]=\"4\"\n resize=\"vertical\"\n size=\"md\"\n customClass=\"cqa-p-2 cqa-text-[14px] cqa-leading-[20px]\">\n </cqa-custom-textarea>\n <p class=\"cqa-text-[12px] cqa-leading-[18px] cqa-text-[#0A0A0A] cqa-m-0\">\n Provide a clear description of the step's purpose\n </p>\n </div>\n\n <!-- Line below content (full width of modal, no side margin) -->\n <div class=\"cqa--mx-2 cqa-w-[calc(100%+1rem)] cqa-flex-shrink-0\">\n <div class=\"cqa-h-px cqa-w-full cqa-bg-[#E5E7EB]\" role=\"presentation\"></div>\n </div>\n\n <!-- Footer: Cancel, Apply (full width in one row) -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <div class=\"cqa-flex cqa-items-stretch cqa-gap-2 cqa-w-full\">\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <cqa-button variant=\"outlined\" btnSize=\"lg\" [text]=\"'Cancel'\" [fullWidth]=\"true\" (clicked)=\"onCancel()\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-border-[#414146]'\"></cqa-button>\n </div>\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <cqa-button variant=\"filled\" btnSize=\"lg\" [text]=\"'Apply'\" [fullWidth]=\"true\" (clicked)=\"onApply()\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-border-[#3F43EE]'\"></cqa-button>\n </div>\n </div>\n <a href=\"#\" (click)=\"onEditInDepth($event)\"\n class=\"cqa-text-[#3F43EE] cqa-text-[12px] cqa-leading-[18px] cqa-font-medium cqa-flex cqa-items-center cqa-gap-1.5 cqa-no-underline hover:cqa-no-underline cqa-self-center\">\n <mat-icon class=\"!cqa-w-4 !cqa-h-4 !cqa-text-[16px]\">open_in_new</mat-icon>\n Edit in depth (open detailed right panel)\n </a>\n </div>\n</div>\n", components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2.CustomTextareaComponent, selector: "cqa-custom-textarea", inputs: ["label", "placeholder", "value", "disabled", "errors", "required", "ariaLabel", "size", "fullWidth", "maxLength", "showCharCount", "rows", "cols", "resize", "textareaInlineStyle", "labelInlineStyle", "customClass"], outputs: ["valueChange", "blurred", "focused"] }, { 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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
53
53
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CustomEditStepComponent, decorators: [{
54
54
  type: Component,
55
- args: [{ selector: 'cqa-custom-edit-step', host: { class: 'cqa-ui-root' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"cqa-bg-white cqa-rounded-[12px] cqa-shadow-lg cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-w-[500px] cqa-flex cqa-flex-col cqa-gap-[12px] cqa-p-2 cqa-box-border\">\n <!-- Header: title left; Need help? + close icon right -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-gap-2 cqa-px-4\">\n <h2 class=\"cqa-text-[16px] cqa-leading-[24px] cqa-font-bold cqa-text-[#111827] cqa-m-0 cqa-font-[600]\">\n Step Description\n </h2>\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <!-- Need help? with custom tooltip (works inside overlay) -->\n <div class=\"cqa-relative cqa-inline-flex\"\n (mouseenter)=\"showHelpTooltip = true\" (mouseleave)=\"showHelpTooltip = false\">\n <a *ngIf=\"helpUrl\" href=\"#\" (click)=\"onHelp($event)\"\n class=\"cqa-flex cqa-items-center cqa-gap-1 cqa-text-[#3F43EE] cqa-text-[12px] cqa-leading-[21px] cqa-no-underline hover:cqa-underline cqa-cursor-pointer\">\n <svg width=\"17\" height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"cqa-flex-shrink-0\" aria-hidden=\"true\">\n <g clip-path=\"url(#help-icon-clip)\">\n <path d=\"M8.50033 14.6663C12.4123 14.6663 15.5837 11.6816 15.5837 7.99967C15.5837 4.31778 12.4123 1.33301 8.50033 1.33301C4.58831 1.33301 1.41699 4.31778 1.41699 7.99967C1.41699 11.6816 4.58831 14.6663 8.50033 14.6663Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M6.43848 6.00038C6.60501 5.55483 6.93371 5.17912 7.36636 4.9398C7.79901 4.70049 8.30769 4.61301 8.80231 4.69285C9.29693 4.7727 9.74556 5.01473 10.0687 5.37607C10.3919 5.7374 10.5688 6.19473 10.5681 6.66705C10.5681 8.00038 8.44306 8.66705 8.44306 8.66705\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8.5 11.333H8.50966\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </g>\n <defs>\n <clipPath id=\"help-icon-clip\">\n <rect width=\"17\" height=\"16\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n Need help ?\n </a>\n <span *ngIf=\"!helpUrl\" class=\"cqa-flex cqa-items-center cqa-gap-1.5 cqa-font-[500] cqa-text-[10px] cqa-cursor-default\">\n <svg width=\"17\" height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"cqa-flex-shrink-0 cqa-text-[#3F43EE]\" aria-hidden=\"true\">\n <g clip-path=\"url(#help-icon-clip-nolink)\">\n <path d=\"M8.50033 14.6663C12.4123 14.6663 15.5837 11.6816 15.5837 7.99967C15.5837 4.31778 12.4123 1.33301 8.50033 1.33301C4.58831 1.33301 1.41699 4.31778 1.41699 7.99967C1.41699 11.6816 4.58831 14.6663 8.50033 14.6663Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M6.43848 6.00038C6.60501 5.55483 6.93371 5.17912 7.36636 4.9398C7.79901 4.70049 8.30769 4.61301 8.80231 4.69285C9.29693 4.7727 9.74556 5.01473 10.0687 5.37607C10.3919 5.7374 10.5688 6.19473 10.5681 6.66705C10.5681 8.00038 8.44306 8.66705 8.44306 8.66705\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8.5 11.333H8.50966\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </g>\n <defs>\n <clipPath id=\"help-icon-clip-nolink\">\n <rect width=\"17\" height=\"16\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n Need help ?\n </span>\n <!-- Custom tooltip (exact spec: 306\u00D720 content, 6px radius, #0A0A0A, no arrow) -->\n <div *ngIf=\"showHelpTooltip\" class=\"cqa-absolute cqa-pointer-events-none cqa-z-[100]\"\n style=\"top: -24px; left: -125px;\"\n role=\"tooltip\">\n <div class=\"cqa-text-white cqa-text-center cqa-whitespace-nowrap\"\n style=\"width: 306px; min-height: 20px; border-radius: 6px; opacity: 1; padding: 4px 8px; background-color: #0A0A0A; line-height: 20px; font-size: 8px;\">\n {{ helpTooltipText }}\n </div>\n </div>\n </div>\n <button type=\"button\" (click)=\"onClose()\"\n class=\"cqa-p-1 cqa-rounded cqa-text-[#6B7280] hover:cqa-bg-[#F3F4F6] cqa-flex cqa-items-center cqa-justify-center\"\n title=\"Close\" aria-label=\"Close\">\n <mat-icon class=\"!cqa-w-5 !cqa-h-5 !cqa-text-[20px]\">close</mat-icon>\n </button>\n </div>\n </div>\n\n <!-- Line below header (full width of modal, no side margin) -->\n <div class=\"cqa--mx-2 cqa-w-[calc(100%+1rem)] cqa-flex-shrink-0\">\n <div class=\"cqa-h-px cqa-w-full cqa-bg-[#E5E7EB]\" role=\"presentation\"></div>\n </div>\n\n <!-- Content: textarea + helper -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1.5\">\n <cqa-custom-textarea\n [(value)]=\"value\"\n placeholder=\"Enter description\"\n [fullWidth]=\"true\"\n [rows]=\"4\"\n resize=\"vertical\"\n size=\"md\">\n </cqa-custom-textarea>\n <p class=\"cqa-text-[12px] cqa-leading-[18px] cqa-text-[#0A0A0A] cqa-m-0\">\n Provide a clear description of the step's purpose\n </p>\n </div>\n\n <!-- Line below content (full width of modal, no side margin) -->\n <div class=\"cqa--mx-2 cqa-w-[calc(100%+1rem)] cqa-flex-shrink-0\">\n <div class=\"cqa-h-px cqa-w-full cqa-bg-[#E5E7EB]\" role=\"presentation\"></div>\n </div>\n\n <!-- Footer: Cancel, Apply (full width in one row) -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <div class=\"cqa-flex cqa-items-stretch cqa-gap-2 cqa-w-full\">\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <cqa-button variant=\"outlined\" btnSize=\"lg\" [text]=\"'Cancel'\" [fullWidth]=\"true\" (clicked)=\"onCancel()\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-border-[#414146]'\"></cqa-button>\n </div>\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <cqa-button variant=\"filled\" btnSize=\"lg\" [text]=\"'Apply'\" [fullWidth]=\"true\" (clicked)=\"onApply()\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-border-[#3F43EE]'\"></cqa-button>\n </div>\n </div>\n <a href=\"#\" (click)=\"onEditInDepth($event)\"\n class=\"cqa-text-[#3F43EE] cqa-text-[12px] cqa-leading-[18px] cqa-font-medium cqa-flex cqa-items-center cqa-gap-1.5 cqa-no-underline hover:cqa-no-underline cqa-self-center\">\n <mat-icon class=\"!cqa-w-4 !cqa-h-4 !cqa-text-[16px]\">open_in_new</mat-icon>\n Edit in depth (open detailed right panel)\n </a>\n </div>\n</div>\n" }]
55
+ args: [{ selector: 'cqa-custom-edit-step', host: { class: 'cqa-ui-root' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"cqa-bg-white cqa-rounded-[12px] cqa-shadow-lg cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-w-[500px] cqa-flex cqa-flex-col cqa-gap-[12px] cqa-p-2 cqa-box-border\">\n <!-- Header: title left; Need help? + close icon right -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-gap-2 cqa-px-4\">\n <h2 class=\"cqa-text-[16px] cqa-leading-[24px] cqa-font-bold cqa-text-[#111827] cqa-m-0 cqa-font-[600]\">\n Step Description\n </h2>\n <div class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-min-h-[28px]\">\n <!-- Need help? with custom tooltip (works inside overlay) -->\n <div class=\"cqa-relative cqa-inline-flex cqa-items-center\"\n (mouseenter)=\"showHelpTooltip = true\" (mouseleave)=\"showHelpTooltip = false\">\n <a *ngIf=\"helpUrl\" href=\"#\" (click)=\"onHelp($event)\"\n class=\"cqa-flex cqa-items-center cqa-gap-1 cqa-text-[#3F43EE] cqa-text-[12px] cqa-leading-[21px] cqa-no-underline hover:cqa-underline cqa-cursor-pointer\">\n <svg width=\"17\" height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"cqa-flex-shrink-0\" aria-hidden=\"true\">\n <g clip-path=\"url(#help-icon-clip)\">\n <path d=\"M8.50033 14.6663C12.4123 14.6663 15.5837 11.6816 15.5837 7.99967C15.5837 4.31778 12.4123 1.33301 8.50033 1.33301C4.58831 1.33301 1.41699 4.31778 1.41699 7.99967C1.41699 11.6816 4.58831 14.6663 8.50033 14.6663Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M6.43848 6.00038C6.60501 5.55483 6.93371 5.17912 7.36636 4.9398C7.79901 4.70049 8.30769 4.61301 8.80231 4.69285C9.29693 4.7727 9.74556 5.01473 10.0687 5.37607C10.3919 5.7374 10.5688 6.19473 10.5681 6.66705C10.5681 8.00038 8.44306 8.66705 8.44306 8.66705\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8.5 11.333H8.50966\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </g>\n <defs>\n <clipPath id=\"help-icon-clip\">\n <rect width=\"17\" height=\"16\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n Need help ?\n </a>\n <span *ngIf=\"!helpUrl\" class=\"cqa-flex cqa-items-center cqa-gap-1.5 cqa-font-[500] cqa-text-[10px] cqa-cursor-default\">\n <svg width=\"17\" height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"cqa-flex-shrink-0 cqa-text-[#3F43EE]\" aria-hidden=\"true\">\n <g clip-path=\"url(#help-icon-clip-nolink)\">\n <path d=\"M8.50033 14.6663C12.4123 14.6663 15.5837 11.6816 15.5837 7.99967C15.5837 4.31778 12.4123 1.33301 8.50033 1.33301C4.58831 1.33301 1.41699 4.31778 1.41699 7.99967C1.41699 11.6816 4.58831 14.6663 8.50033 14.6663Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M6.43848 6.00038C6.60501 5.55483 6.93371 5.17912 7.36636 4.9398C7.79901 4.70049 8.30769 4.61301 8.80231 4.69285C9.29693 4.7727 9.74556 5.01473 10.0687 5.37607C10.3919 5.7374 10.5688 6.19473 10.5681 6.66705C10.5681 8.00038 8.44306 8.66705 8.44306 8.66705\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8.5 11.333H8.50966\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </g>\n <defs>\n <clipPath id=\"help-icon-clip-nolink\">\n <rect width=\"17\" height=\"16\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n Need help ?\n </span>\n <!-- Custom tooltip (exact spec: 306\u00D720 content, 6px radius, #0A0A0A, no arrow) -->\n <div *ngIf=\"showHelpTooltip\"\n class=\"cqa-absolute cqa-pointer-events-none cqa-z-[100] cqa-top-[-24px] cqa-left-[-125px]\"\n role=\"tooltip\">\n <div\n class=\"cqa-text-white cqa-text-center cqa-whitespace-nowrap cqa-w-[306px] cqa-min-h-[20px] cqa-rounded-[6px] cqa-py-1 cqa-px-2 cqa-bg-[#0A0A0A] cqa-leading-[20px] cqa-text-[8px]\">\n {{ helpTooltipText }}\n </div>\n </div>\n </div>\n <button type=\"button\" (click)=\"onClose()\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-min-h-[28px] cqa-min-w-[28px] cqa-rounded cqa-text-[#6B7280] hover:cqa-bg-[#F3F4F6] cqa-p-0\"\n title=\"Close\" aria-label=\"Close\">\n <mat-icon class=\"!cqa-w-5 !cqa-h-5 !cqa-text-[20px] !cqa-block !cqa-leading-none\">close</mat-icon>\n </button>\n </div>\n </div>\n\n <!-- Line below header (full width of modal, no side margin) -->\n <div class=\"cqa--mx-2 cqa-w-[calc(100%+1rem)] cqa-flex-shrink-0\">\n <div class=\"cqa-h-px cqa-w-full cqa-bg-[#E5E7EB]\" role=\"presentation\"></div>\n </div>\n\n <!-- Content: textarea + helper -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1.5 cqa-px-2 cqa-py-1\">\n <cqa-custom-textarea\n [(value)]=\"value\"\n placeholder=\"Enter description\"\n [fullWidth]=\"true\"\n [rows]=\"4\"\n resize=\"vertical\"\n size=\"md\"\n customClass=\"cqa-p-2 cqa-text-[14px] cqa-leading-[20px]\">\n </cqa-custom-textarea>\n <p class=\"cqa-text-[12px] cqa-leading-[18px] cqa-text-[#0A0A0A] cqa-m-0\">\n Provide a clear description of the step's purpose\n </p>\n </div>\n\n <!-- Line below content (full width of modal, no side margin) -->\n <div class=\"cqa--mx-2 cqa-w-[calc(100%+1rem)] cqa-flex-shrink-0\">\n <div class=\"cqa-h-px cqa-w-full cqa-bg-[#E5E7EB]\" role=\"presentation\"></div>\n </div>\n\n <!-- Footer: Cancel, Apply (full width in one row) -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <div class=\"cqa-flex cqa-items-stretch cqa-gap-2 cqa-w-full\">\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <cqa-button variant=\"outlined\" btnSize=\"lg\" [text]=\"'Cancel'\" [fullWidth]=\"true\" (clicked)=\"onCancel()\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-border-[#414146]'\"></cqa-button>\n </div>\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <cqa-button variant=\"filled\" btnSize=\"lg\" [text]=\"'Apply'\" [fullWidth]=\"true\" (clicked)=\"onApply()\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-border-[#3F43EE]'\"></cqa-button>\n </div>\n </div>\n <a href=\"#\" (click)=\"onEditInDepth($event)\"\n class=\"cqa-text-[#3F43EE] cqa-text-[12px] cqa-leading-[18px] cqa-font-medium cqa-flex cqa-items-center cqa-gap-1.5 cqa-no-underline hover:cqa-no-underline cqa-self-center\">\n <mat-icon class=\"!cqa-w-4 !cqa-h-4 !cqa-text-[16px]\">open_in_new</mat-icon>\n Edit in depth (open detailed right panel)\n </a>\n </div>\n</div>\n" }]
56
56
  }], ctorParameters: function () { return [{ type: i5.CustomEditStepRef, decorators: [{
57
57
  type: Inject,
58
58
  args: [CUSTOM_EDIT_STEP_REF]
@@ -68,4 +68,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
68
68
  }], editInDepth: [{
69
69
  type: Output
70
70
  }] } });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWVkaXQtc3RlcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2N1c3RvbS1lZGl0LXN0ZXAvY3VzdG9tLWVkaXQtc3RlcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2N1c3RvbS1lZGl0LXN0ZXAvY3VzdG9tLWVkaXQtc3RlcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLHFCQUFxQixFQUNyQiw4QkFBOEIsR0FFL0IsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsb0JBQW9CLEVBQXFCLE1BQU0sNENBQTRDLENBQUM7Ozs7Ozs7QUFRckcsTUFBTSxPQUFPLHVCQUF1QjtJQWFsQyxZQUN3QyxHQUFzQixFQUNqQixJQUF5QjtRQUQ5QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQWJwRCxVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNuQyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNsQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFakQsa0VBQWtFO1FBQ2xFLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQix1RUFBdUU7UUFDdkUsb0JBQWUsR0FBRyw4RUFBOEUsQ0FBQztRQUNqRyxrRkFBa0Y7UUFDbEYsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFNdEIsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7U0FDbkM7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBWTtRQUN4QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyw4QkFBcUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxNQUFNLENBQUMsS0FBWTtRQUNqQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztTQUNyQztJQUNILENBQUM7O29IQWhEVSx1QkFBdUIsa0JBY3hCLG9CQUFvQixhQUNSLHFCQUFxQjt3R0FmaEMsdUJBQXVCLGdMQ3JCcEMsMmtOQXdHQTsyRkRuRmEsdUJBQXVCO2tCQU5uQyxTQUFTOytCQUNFLHNCQUFzQixRQUUxQixFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsbUJBQ2IsdUJBQXVCLENBQUMsTUFBTTs7MEJBZ0I1QyxNQUFNOzJCQUFDLG9CQUFvQjs7MEJBQzNCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMscUJBQXFCOzRDQWRqQyxLQUFLO3NCQUFkLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDVVNUT01fRURJVF9TVEVQX0RBVEEsXG4gIENVU1RPTV9FRElUX1NURVBfRURJVF9JTl9ERVBUSCxcbiAgQ3VzdG9tRWRpdFN0ZXBEYXRhLFxufSBmcm9tICcuL2N1c3RvbS1lZGl0LXN0ZXAtZGF0YSc7XG5pbXBvcnQgeyBDVVNUT01fRURJVF9TVEVQX1JFRiwgQ3VzdG9tRWRpdFN0ZXBSZWYgfSBmcm9tICcuLy4uL2N1c3RvbS1lZGl0LXN0ZXAvY3VzdG9tLWVkaXQtc3RlcC1yZWYnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtY3VzdG9tLWVkaXQtc3RlcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jdXN0b20tZWRpdC1zdGVwLmNvbXBvbmVudC5odG1sJyxcbiAgaG9zdDogeyBjbGFzczogJ2NxYS11aS1yb290JyB9LFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ3VzdG9tRWRpdFN0ZXBDb21wb25lbnQge1xuICBAT3V0cHV0KCkgYXBwbHkgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIGNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGVkaXRJbkRlcHRoID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKiBMb2NhbCB2YWx1ZSB3aGlsZSBlZGl0aW5nIChmb3IgdHdvLXdheSBiaW5kaW5nIGluIHRleHRhcmVhKSAqL1xuICB2YWx1ZTogc3RyaW5nID0gJyc7XG4gIGhlbHBVcmw6IHN0cmluZyA9ICcnO1xuICAvKiogVG9vbHRpcCBzaG93biB3aGVuIGhvdmVyaW5nIG92ZXIgdGhlIFwiTmVlZCBoZWxwID9cIiBpY29uIGFuZCB0ZXh0ICovXG4gIGhlbHBUb29sdGlwVGV4dCA9ICdOb3Qgc3VyZSB3aGF0IHRvIGRvPyBDbGljayB0byBnbyB0byBvdXIgZGV0YWlsZWQgc3RlcCBjcmVhdGlvbiBkb2N1bWVudGF0aW9uJztcbiAgLyoqIFdoZXRoZXIgdGhlIGhlbHAgdG9vbHRpcCBpcyB2aXNpYmxlIChjdXN0b20gdG9vbHRpcCBmb3IgdXNlIGluc2lkZSBvdmVybGF5KSAqL1xuICBzaG93SGVscFRvb2x0aXAgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KENVU1RPTV9FRElUX1NURVBfUkVGKSBwcml2YXRlIHJlZjogQ3VzdG9tRWRpdFN0ZXBSZWYsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChDVVNUT01fRURJVF9TVEVQX0RBVEEpIGRhdGE/OiBDdXN0b21FZGl0U3RlcERhdGFcbiAgKSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBkYXRhLmRlc2NyaXB0aW9uID8/ICcnO1xuICAgICAgdGhpcy5oZWxwVXJsID0gZGF0YS5oZWxwVXJsID8/ICcnO1xuICAgIH1cbiAgfVxuXG4gIG9uQXBwbHkoKTogdm9pZCB7XG4gICAgdGhpcy5hcHBseS5lbWl0KHRoaXMudmFsdWUpO1xuICAgIHRoaXMucmVmLmNsb3NlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgb25DYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xuICAgIHRoaXMucmVmLmNsb3NlKHVuZGVmaW5lZCk7XG4gIH1cblxuICBvbkNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMub25DYW5jZWwoKTtcbiAgfVxuXG4gIG9uRWRpdEluRGVwdGgoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmVkaXRJbkRlcHRoLmVtaXQoKTtcbiAgICB0aGlzLnJlZi5jbG9zZShDVVNUT01fRURJVF9TVEVQX0VESVRfSU5fREVQVEggYXMgYW55KTtcbiAgfVxuXG4gIG9uSGVscChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oZWxwVXJsKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgd2luZG93Lm9wZW4odGhpcy5oZWxwVXJsLCAnX2JsYW5rJyk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiY3FhLWJnLXdoaXRlIGNxYS1yb3VuZGVkLVsxMnB4XSBjcWEtc2hhZG93LWxnIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyLVsjRTVFN0VCXSBjcWEtdy1bNTAwcHhdIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLVsxMnB4XSBjcWEtcC0yIGNxYS1ib3gtYm9yZGVyXCI+XG4gIDwhLS0gSGVhZGVyOiB0aXRsZSBsZWZ0OyBOZWVkIGhlbHA/ICsgY2xvc2UgaWNvbiByaWdodCAtLT5cbiAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktYmV0d2VlbiBjcWEtZ2FwLTIgY3FhLXB4LTRcIj5cbiAgICA8aDIgY2xhc3M9XCJjcWEtdGV4dC1bMTZweF0gY3FhLWxlYWRpbmctWzI0cHhdIGNxYS1mb250LWJvbGQgY3FhLXRleHQtWyMxMTE4MjddIGNxYS1tLTAgY3FhLWZvbnQtWzYwMF1cIj5cbiAgICAgIFN0ZXAgRGVzY3JpcHRpb25cbiAgICA8L2gyPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMlwiPlxuICAgICAgPCEtLSBOZWVkIGhlbHA/IHdpdGggY3VzdG9tIHRvb2x0aXAgKHdvcmtzIGluc2lkZSBvdmVybGF5KSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtcmVsYXRpdmUgY3FhLWlubGluZS1mbGV4XCJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwic2hvd0hlbHBUb29sdGlwID0gdHJ1ZVwiIChtb3VzZWxlYXZlKT1cInNob3dIZWxwVG9vbHRpcCA9IGZhbHNlXCI+XG4gICAgICAgIDxhICpuZ0lmPVwiaGVscFVybFwiIGhyZWY9XCIjXCIgKGNsaWNrKT1cIm9uSGVscCgkZXZlbnQpXCJcbiAgICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0xIGNxYS10ZXh0LVsjM0Y0M0VFXSBjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzIxcHhdIGNxYS1uby11bmRlcmxpbmUgaG92ZXI6Y3FhLXVuZGVybGluZSBjcWEtY3Vyc29yLXBvaW50ZXJcIj5cbiAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTdcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTcgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBjbGFzcz1cImNxYS1mbGV4LXNocmluay0wXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2hlbHAtaWNvbi1jbGlwKVwiPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguNTAwMzMgMTQuNjY2M0MxMi40MTIzIDE0LjY2NjMgMTUuNTgzNyAxMS42ODE2IDE1LjU4MzcgNy45OTk2N0MxNS41ODM3IDQuMzE3NzggMTIuNDEyMyAxLjMzMzAxIDguNTAwMzMgMS4zMzMwMUM0LjU4ODMxIDEuMzMzMDEgMS40MTY5OSA0LjMxNzc4IDEuNDE2OTkgNy45OTk2N0MxLjQxNjk5IDExLjY4MTYgNC41ODgzMSAxNC42NjYzIDguNTAwMzMgMTQuNjY2M1pcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi40Mzg0OCA2LjAwMDM4QzYuNjA1MDEgNS41NTQ4MyA2LjkzMzcxIDUuMTc5MTIgNy4zNjYzNiA0LjkzOThDNy43OTkwMSA0LjcwMDQ5IDguMzA3NjkgNC42MTMwMSA4LjgwMjMxIDQuNjkyODVDOS4yOTY5MyA0Ljc3MjcgOS43NDU1NiA1LjAxNDczIDEwLjA2ODcgNS4zNzYwN0MxMC4zOTE5IDUuNzM3NCAxMC41Njg4IDYuMTk0NzMgMTAuNTY4MSA2LjY2NzA1QzEwLjU2ODEgOC4wMDAzOCA4LjQ0MzA2IDguNjY3MDUgOC40NDMwNiA4LjY2NzA1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguNSAxMS4zMzNIOC41MDk2NlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJoZWxwLWljb24tY2xpcFwiPlxuICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTdcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiLz5cbiAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICBOZWVkIGhlbHAgP1xuICAgICAgICA8L2E+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWhlbHBVcmxcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0xLjUgY3FhLWZvbnQtWzUwMF0gY3FhLXRleHQtWzEwcHhdIGNxYS1jdXJzb3ItZGVmYXVsdFwiPlxuICAgICAgICAgIDxzdmcgd2lkdGg9XCIxN1wiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNyAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGNsYXNzPVwiY3FhLWZsZXgtc2hyaW5rLTAgY3FhLXRleHQtWyMzRjQzRUVdXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2hlbHAtaWNvbi1jbGlwLW5vbGluaylcIj5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjUwMDMzIDE0LjY2NjNDMTIuNDEyMyAxNC42NjYzIDE1LjU4MzcgMTEuNjgxNiAxNS41ODM3IDcuOTk5NjdDMTUuNTgzNyA0LjMxNzc4IDEyLjQxMjMgMS4zMzMwMSA4LjUwMDMzIDEuMzMzMDFDNC41ODgzMSAxLjMzMzAxIDEuNDE2OTkgNC4zMTc3OCAxLjQxNjk5IDcuOTk5NjdDMS40MTY5OSAxMS42ODE2IDQuNTg4MzEgMTQuNjY2MyA4LjUwMDMzIDE0LjY2NjNaXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuNDM4NDggNi4wMDAzOEM2LjYwNTAxIDUuNTU0ODMgNi45MzM3MSA1LjE3OTEyIDcuMzY2MzYgNC45Mzk4QzcuNzk5MDEgNC43MDA0OSA4LjMwNzY5IDQuNjEzMDEgOC44MDIzMSA0LjY5Mjg1QzkuMjk2OTMgNC43NzI3IDkuNzQ1NTYgNS4wMTQ3MyAxMC4wNjg3IDUuMzc2MDdDMTAuMzkxOSA1LjczNzQgMTAuNTY4OCA2LjE5NDczIDEwLjU2ODEgNi42NjcwNUMxMC41NjgxIDguMDAwMzggOC40NDMwNiA4LjY2NzA1IDguNDQzMDYgOC42NjcwNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjUgMTEuMzMzSDguNTA5NjZcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiaGVscC1pY29uLWNsaXAtbm9saW5rXCI+XG4gICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxN1wiIGhlaWdodD1cIjE2XCIgZmlsbD1cIndoaXRlXCIvPlxuICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIE5lZWQgaGVscCA/XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPCEtLSBDdXN0b20gdG9vbHRpcCAoZXhhY3Qgc3BlYzogMzA2w5cyMCBjb250ZW50LCA2cHggcmFkaXVzLCAjMEEwQTBBLCBubyBhcnJvdykgLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93SGVscFRvb2x0aXBcIiBjbGFzcz1cImNxYS1hYnNvbHV0ZSBjcWEtcG9pbnRlci1ldmVudHMtbm9uZSBjcWEtei1bMTAwXVwiXG4gICAgICAgICAgc3R5bGU9XCJ0b3A6IC0yNHB4OyBsZWZ0OiAtMTI1cHg7XCJcbiAgICAgICAgICByb2xlPVwidG9vbHRpcFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC13aGl0ZSBjcWEtdGV4dC1jZW50ZXIgY3FhLXdoaXRlc3BhY2Utbm93cmFwXCJcbiAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDMwNnB4OyBtaW4taGVpZ2h0OiAyMHB4OyBib3JkZXItcmFkaXVzOiA2cHg7IG9wYWNpdHk6IDE7IHBhZGRpbmc6IDRweCA4cHg7IGJhY2tncm91bmQtY29sb3I6ICMwQTBBMEE7IGxpbmUtaGVpZ2h0OiAyMHB4OyBmb250LXNpemU6IDhweDtcIj5cbiAgICAgICAgICAgIHt7IGhlbHBUb29sdGlwVGV4dCB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiXG4gICAgICAgIGNsYXNzPVwiY3FhLXAtMSBjcWEtcm91bmRlZCBjcWEtdGV4dC1bIzZCNzI4MF0gaG92ZXI6Y3FhLWJnLVsjRjNGNEY2XSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlclwiXG4gICAgICAgIHRpdGxlPVwiQ2xvc2VcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIj5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiIWNxYS13LTUgIWNxYS1oLTUgIWNxYS10ZXh0LVsyMHB4XVwiPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIExpbmUgYmVsb3cgaGVhZGVyIChmdWxsIHdpZHRoIG9mIG1vZGFsLCBubyBzaWRlIG1hcmdpbikgLS0+XG4gIDxkaXYgY2xhc3M9XCJjcWEtLW14LTIgY3FhLXctW2NhbGMoMTAwJSsxcmVtKV0gY3FhLWZsZXgtc2hyaW5rLTBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWgtcHggY3FhLXctZnVsbCBjcWEtYmctWyNFNUU3RUJdXCIgcm9sZT1cInByZXNlbnRhdGlvblwiPjwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIENvbnRlbnQ6IHRleHRhcmVhICsgaGVscGVyIC0tPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMS41XCI+XG4gICAgPGNxYS1jdXN0b20tdGV4dGFyZWFcbiAgICAgIFsodmFsdWUpXT1cInZhbHVlXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgZGVzY3JpcHRpb25cIlxuICAgICAgW2Z1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICAgIFtyb3dzXT1cIjRcIlxuICAgICAgcmVzaXplPVwidmVydGljYWxcIlxuICAgICAgc2l6ZT1cIm1kXCI+XG4gICAgPC9jcWEtY3VzdG9tLXRleHRhcmVhPlxuICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxOHB4XSBjcWEtdGV4dC1bIzBBMEEwQV0gY3FhLW0tMFwiPlxuICAgICAgUHJvdmlkZSBhIGNsZWFyIGRlc2NyaXB0aW9uIG9mIHRoZSBzdGVwJ3MgcHVycG9zZVxuICAgIDwvcD5cbiAgPC9kaXY+XG5cbiAgPCEtLSBMaW5lIGJlbG93IGNvbnRlbnQgKGZ1bGwgd2lkdGggb2YgbW9kYWwsIG5vIHNpZGUgbWFyZ2luKSAtLT5cbiAgPGRpdiBjbGFzcz1cImNxYS0tbXgtMiBjcWEtdy1bY2FsYygxMDAlKzFyZW0pXSBjcWEtZmxleC1zaHJpbmstMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtaC1weCBjcWEtdy1mdWxsIGNxYS1iZy1bI0U1RTdFQl1cIiByb2xlPVwicHJlc2VudGF0aW9uXCI+PC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gRm9vdGVyOiBDYW5jZWwsIEFwcGx5IChmdWxsIHdpZHRoIGluIG9uZSByb3cpIC0tPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtM1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtc3RyZXRjaCBjcWEtZ2FwLTIgY3FhLXctZnVsbFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4LTEgY3FhLW1pbi13LTBcIj5cbiAgICAgICAgPGNxYS1idXR0b24gdmFyaWFudD1cIm91dGxpbmVkXCIgYnRuU2l6ZT1cImxnXCIgW3RleHRdPVwiJ0NhbmNlbCdcIiBbZnVsbFdpZHRoXT1cInRydWVcIiAoY2xpY2tlZCk9XCJvbkNhbmNlbCgpXCJcbiAgICAgICAgICBbY3VzdG9tQ2xhc3NdPVwiJ2NxYS10ZXh0LVsxNHB4XSBjcWEtcHktWzlweF0gY3FhLWJvcmRlci1bIzQxNDE0Nl0nXCI+PC9jcWEtYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXgtMSBjcWEtbWluLXctMFwiPlxuICAgICAgICA8Y3FhLWJ1dHRvbiB2YXJpYW50PVwiZmlsbGVkXCIgYnRuU2l6ZT1cImxnXCIgW3RleHRdPVwiJ0FwcGx5J1wiIFtmdWxsV2lkdGhdPVwidHJ1ZVwiIChjbGlja2VkKT1cIm9uQXBwbHkoKVwiXG4gICAgICAgICAgW2N1c3RvbUNsYXNzXT1cIidjcWEtdGV4dC1bMTRweF0gY3FhLXB5LVs5cHhdIGNxYS1ib3JkZXItWyMzRjQzRUVdJ1wiPjwvY3FhLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxhIGhyZWY9XCIjXCIgKGNsaWNrKT1cIm9uRWRpdEluRGVwdGgoJGV2ZW50KVwiXG4gICAgICBjbGFzcz1cImNxYS10ZXh0LVsjM0Y0M0VFXSBjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzE4cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMS41IGNxYS1uby11bmRlcmxpbmUgaG92ZXI6Y3FhLW5vLXVuZGVybGluZSBjcWEtc2VsZi1jZW50ZXJcIj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIiFjcWEtdy00ICFjcWEtaC00ICFjcWEtdGV4dC1bMTZweF1cIj5vcGVuX2luX25ldzwvbWF0LWljb24+XG4gICAgICBFZGl0IGluIGRlcHRoIChvcGVuIGRldGFpbGVkIHJpZ2h0IHBhbmVsKVxuICAgIDwvYT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWVkaXQtc3RlcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2N1c3RvbS1lZGl0LXN0ZXAvY3VzdG9tLWVkaXQtc3RlcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2N1c3RvbS1lZGl0LXN0ZXAvY3VzdG9tLWVkaXQtc3RlcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLHFCQUFxQixFQUNyQiw4QkFBOEIsR0FFL0IsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsb0JBQW9CLEVBQXFCLE1BQU0sNENBQTRDLENBQUM7Ozs7Ozs7QUFRckcsTUFBTSxPQUFPLHVCQUF1QjtJQWFsQyxZQUN3QyxHQUFzQixFQUNqQixJQUF5QjtRQUQ5QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQWJwRCxVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNuQyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNsQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFakQsa0VBQWtFO1FBQ2xFLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQix1RUFBdUU7UUFDdkUsb0JBQWUsR0FBRyw4RUFBOEUsQ0FBQztRQUNqRyxrRkFBa0Y7UUFDbEYsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFNdEIsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7U0FDbkM7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBWTtRQUN4QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyw4QkFBcUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxNQUFNLENBQUMsS0FBWTtRQUNqQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztTQUNyQztJQUNILENBQUM7O29IQWhEVSx1QkFBdUIsa0JBY3hCLG9CQUFvQixhQUNSLHFCQUFxQjt3R0FmaEMsdUJBQXVCLGdMQ3JCcEMsMHROQXlHQTsyRkRwRmEsdUJBQXVCO2tCQU5uQyxTQUFTOytCQUNFLHNCQUFzQixRQUUxQixFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsbUJBQ2IsdUJBQXVCLENBQUMsTUFBTTs7MEJBZ0I1QyxNQUFNOzJCQUFDLG9CQUFvQjs7MEJBQzNCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMscUJBQXFCOzRDQWRqQyxLQUFLO3NCQUFkLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDVVNUT01fRURJVF9TVEVQX0RBVEEsXG4gIENVU1RPTV9FRElUX1NURVBfRURJVF9JTl9ERVBUSCxcbiAgQ3VzdG9tRWRpdFN0ZXBEYXRhLFxufSBmcm9tICcuL2N1c3RvbS1lZGl0LXN0ZXAtZGF0YSc7XG5pbXBvcnQgeyBDVVNUT01fRURJVF9TVEVQX1JFRiwgQ3VzdG9tRWRpdFN0ZXBSZWYgfSBmcm9tICcuLy4uL2N1c3RvbS1lZGl0LXN0ZXAvY3VzdG9tLWVkaXQtc3RlcC1yZWYnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtY3VzdG9tLWVkaXQtc3RlcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jdXN0b20tZWRpdC1zdGVwLmNvbXBvbmVudC5odG1sJyxcbiAgaG9zdDogeyBjbGFzczogJ2NxYS11aS1yb290JyB9LFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ3VzdG9tRWRpdFN0ZXBDb21wb25lbnQge1xuICBAT3V0cHV0KCkgYXBwbHkgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIGNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGVkaXRJbkRlcHRoID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKiBMb2NhbCB2YWx1ZSB3aGlsZSBlZGl0aW5nIChmb3IgdHdvLXdheSBiaW5kaW5nIGluIHRleHRhcmVhKSAqL1xuICB2YWx1ZTogc3RyaW5nID0gJyc7XG4gIGhlbHBVcmw6IHN0cmluZyA9ICcnO1xuICAvKiogVG9vbHRpcCBzaG93biB3aGVuIGhvdmVyaW5nIG92ZXIgdGhlIFwiTmVlZCBoZWxwID9cIiBpY29uIGFuZCB0ZXh0ICovXG4gIGhlbHBUb29sdGlwVGV4dCA9ICdOb3Qgc3VyZSB3aGF0IHRvIGRvPyBDbGljayB0byBnbyB0byBvdXIgZGV0YWlsZWQgc3RlcCBjcmVhdGlvbiBkb2N1bWVudGF0aW9uJztcbiAgLyoqIFdoZXRoZXIgdGhlIGhlbHAgdG9vbHRpcCBpcyB2aXNpYmxlIChjdXN0b20gdG9vbHRpcCBmb3IgdXNlIGluc2lkZSBvdmVybGF5KSAqL1xuICBzaG93SGVscFRvb2x0aXAgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KENVU1RPTV9FRElUX1NURVBfUkVGKSBwcml2YXRlIHJlZjogQ3VzdG9tRWRpdFN0ZXBSZWYsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChDVVNUT01fRURJVF9TVEVQX0RBVEEpIGRhdGE/OiBDdXN0b21FZGl0U3RlcERhdGFcbiAgKSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBkYXRhLmRlc2NyaXB0aW9uID8/ICcnO1xuICAgICAgdGhpcy5oZWxwVXJsID0gZGF0YS5oZWxwVXJsID8/ICcnO1xuICAgIH1cbiAgfVxuXG4gIG9uQXBwbHkoKTogdm9pZCB7XG4gICAgdGhpcy5hcHBseS5lbWl0KHRoaXMudmFsdWUpO1xuICAgIHRoaXMucmVmLmNsb3NlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgb25DYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xuICAgIHRoaXMucmVmLmNsb3NlKHVuZGVmaW5lZCk7XG4gIH1cblxuICBvbkNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMub25DYW5jZWwoKTtcbiAgfVxuXG4gIG9uRWRpdEluRGVwdGgoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmVkaXRJbkRlcHRoLmVtaXQoKTtcbiAgICB0aGlzLnJlZi5jbG9zZShDVVNUT01fRURJVF9TVEVQX0VESVRfSU5fREVQVEggYXMgYW55KTtcbiAgfVxuXG4gIG9uSGVscChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oZWxwVXJsKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgd2luZG93Lm9wZW4odGhpcy5oZWxwVXJsLCAnX2JsYW5rJyk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiY3FhLWJnLXdoaXRlIGNxYS1yb3VuZGVkLVsxMnB4XSBjcWEtc2hhZG93LWxnIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyLVsjRTVFN0VCXSBjcWEtdy1bNTAwcHhdIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLVsxMnB4XSBjcWEtcC0yIGNxYS1ib3gtYm9yZGVyXCI+XG4gIDwhLS0gSGVhZGVyOiB0aXRsZSBsZWZ0OyBOZWVkIGhlbHA/ICsgY2xvc2UgaWNvbiByaWdodCAtLT5cbiAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktYmV0d2VlbiBjcWEtZ2FwLTIgY3FhLXB4LTRcIj5cbiAgICA8aDIgY2xhc3M9XCJjcWEtdGV4dC1bMTZweF0gY3FhLWxlYWRpbmctWzI0cHhdIGNxYS1mb250LWJvbGQgY3FhLXRleHQtWyMxMTE4MjddIGNxYS1tLTAgY3FhLWZvbnQtWzYwMF1cIj5cbiAgICAgIFN0ZXAgRGVzY3JpcHRpb25cbiAgICA8L2gyPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtbWluLWgtWzI4cHhdXCI+XG4gICAgICA8IS0tIE5lZWQgaGVscD8gd2l0aCBjdXN0b20gdG9vbHRpcCAod29ya3MgaW5zaWRlIG92ZXJsYXkpIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1yZWxhdGl2ZSBjcWEtaW5saW5lLWZsZXggY3FhLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cInNob3dIZWxwVG9vbHRpcCA9IHRydWVcIiAobW91c2VsZWF2ZSk9XCJzaG93SGVscFRvb2x0aXAgPSBmYWxzZVwiPlxuICAgICAgICA8YSAqbmdJZj1cImhlbHBVcmxcIiBocmVmPVwiI1wiIChjbGljayk9XCJvbkhlbHAoJGV2ZW50KVwiXG4gICAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMSBjcWEtdGV4dC1bIzNGNDNFRV0gY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsyMXB4XSBjcWEtbm8tdW5kZXJsaW5lIGhvdmVyOmNxYS11bmRlcmxpbmUgY3FhLWN1cnNvci1wb2ludGVyXCI+XG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjE3XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE3IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgY2xhc3M9XCJjcWEtZmxleC1zaHJpbmstMFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNoZWxwLWljb24tY2xpcClcIj5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjUwMDMzIDE0LjY2NjNDMTIuNDEyMyAxNC42NjYzIDE1LjU4MzcgMTEuNjgxNiAxNS41ODM3IDcuOTk5NjdDMTUuNTgzNyA0LjMxNzc4IDEyLjQxMjMgMS4zMzMwMSA4LjUwMDMzIDEuMzMzMDFDNC41ODgzMSAxLjMzMzAxIDEuNDE2OTkgNC4zMTc3OCAxLjQxNjk5IDcuOTk5NjdDMS40MTY5OSAxMS42ODE2IDQuNTg4MzEgMTQuNjY2MyA4LjUwMDMzIDE0LjY2NjNaXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuNDM4NDggNi4wMDAzOEM2LjYwNTAxIDUuNTU0ODMgNi45MzM3MSA1LjE3OTEyIDcuMzY2MzYgNC45Mzk4QzcuNzk5MDEgNC43MDA0OSA4LjMwNzY5IDQuNjEzMDEgOC44MDIzMSA0LjY5Mjg1QzkuMjk2OTMgNC43NzI3IDkuNzQ1NTYgNS4wMTQ3MyAxMC4wNjg3IDUuMzc2MDdDMTAuMzkxOSA1LjczNzQgMTAuNTY4OCA2LjE5NDczIDEwLjU2ODEgNi42NjcwNUMxMC41NjgxIDguMDAwMzggOC40NDMwNiA4LjY2NzA1IDguNDQzMDYgOC42NjcwNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjUgMTEuMzMzSDguNTA5NjZcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiaGVscC1pY29uLWNsaXBcIj5cbiAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE3XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwid2hpdGVcIi8+XG4gICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgTmVlZCBoZWxwID9cbiAgICAgICAgPC9hPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFoZWxwVXJsXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMS41IGNxYS1mb250LVs1MDBdIGNxYS10ZXh0LVsxMHB4XSBjcWEtY3Vyc29yLWRlZmF1bHRcIj5cbiAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTdcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTcgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBjbGFzcz1cImNxYS1mbGV4LXNocmluay0wIGNxYS10ZXh0LVsjM0Y0M0VFXVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNoZWxwLWljb24tY2xpcC1ub2xpbmspXCI+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOC41MDAzMyAxNC42NjYzQzEyLjQxMjMgMTQuNjY2MyAxNS41ODM3IDExLjY4MTYgMTUuNTgzNyA3Ljk5OTY3QzE1LjU4MzcgNC4zMTc3OCAxMi40MTIzIDEuMzMzMDEgOC41MDAzMyAxLjMzMzAxQzQuNTg4MzEgMS4zMzMwMSAxLjQxNjk5IDQuMzE3NzggMS40MTY5OSA3Ljk5OTY3QzEuNDE2OTkgMTEuNjgxNiA0LjU4ODMxIDE0LjY2NjMgOC41MDAzMyAxNC42NjYzWlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjQzODQ4IDYuMDAwMzhDNi42MDUwMSA1LjU1NDgzIDYuOTMzNzEgNS4xNzkxMiA3LjM2NjM2IDQuOTM5OEM3Ljc5OTAxIDQuNzAwNDkgOC4zMDc2OSA0LjYxMzAxIDguODAyMzEgNC42OTI4NUM5LjI5NjkzIDQuNzcyNyA5Ljc0NTU2IDUuMDE0NzMgMTAuMDY4NyA1LjM3NjA3QzEwLjM5MTkgNS43Mzc0IDEwLjU2ODggNi4xOTQ3MyAxMC41NjgxIDYuNjY3MDVDMTAuNTY4MSA4LjAwMDM4IDguNDQzMDYgOC42NjcwNSA4LjQ0MzA2IDguNjY3MDVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOC41IDExLjMzM0g4LjUwOTY2XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImhlbHAtaWNvbi1jbGlwLW5vbGlua1wiPlxuICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTdcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiLz5cbiAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICBOZWVkIGhlbHAgP1xuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwhLS0gQ3VzdG9tIHRvb2x0aXAgKGV4YWN0IHNwZWM6IDMwNsOXMjAgY29udGVudCwgNnB4IHJhZGl1cywgIzBBMEEwQSwgbm8gYXJyb3cpIC0tPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0hlbHBUb29sdGlwXCJcbiAgICAgICAgICBjbGFzcz1cImNxYS1hYnNvbHV0ZSBjcWEtcG9pbnRlci1ldmVudHMtbm9uZSBjcWEtei1bMTAwXSBjcWEtdG9wLVstMjRweF0gY3FhLWxlZnQtWy0xMjVweF1cIlxuICAgICAgICAgIHJvbGU9XCJ0b29sdGlwXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjcWEtdGV4dC13aGl0ZSBjcWEtdGV4dC1jZW50ZXIgY3FhLXdoaXRlc3BhY2Utbm93cmFwIGNxYS13LVszMDZweF0gY3FhLW1pbi1oLVsyMHB4XSBjcWEtcm91bmRlZC1bNnB4XSBjcWEtcHktMSBjcWEtcHgtMiBjcWEtYmctWyMwQTBBMEFdIGNxYS1sZWFkaW5nLVsyMHB4XSBjcWEtdGV4dC1bOHB4XVwiPlxuICAgICAgICAgICAge3sgaGVscFRvb2x0aXBUZXh0IH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25DbG9zZSgpXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtbWluLWgtWzI4cHhdIGNxYS1taW4tdy1bMjhweF0gY3FhLXJvdW5kZWQgY3FhLXRleHQtWyM2QjcyODBdIGhvdmVyOmNxYS1iZy1bI0YzRjRGNl0gY3FhLXAtMFwiXG4gICAgICAgIHRpdGxlPVwiQ2xvc2VcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIj5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiIWNxYS13LTUgIWNxYS1oLTUgIWNxYS10ZXh0LVsyMHB4XSAhY3FhLWJsb2NrICFjcWEtbGVhZGluZy1ub25lXCI+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gTGluZSBiZWxvdyBoZWFkZXIgKGZ1bGwgd2lkdGggb2YgbW9kYWwsIG5vIHNpZGUgbWFyZ2luKSAtLT5cbiAgPGRpdiBjbGFzcz1cImNxYS0tbXgtMiBjcWEtdy1bY2FsYygxMDAlKzFyZW0pXSBjcWEtZmxleC1zaHJpbmstMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtaC1weCBjcWEtdy1mdWxsIGNxYS1iZy1bI0U1RTdFQl1cIiByb2xlPVwicHJlc2VudGF0aW9uXCI+PC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gQ29udGVudDogdGV4dGFyZWEgKyBoZWxwZXIgLS0+XG4gIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0xLjUgY3FhLXB4LTIgY3FhLXB5LTFcIj5cbiAgICA8Y3FhLWN1c3RvbS10ZXh0YXJlYVxuICAgICAgWyh2YWx1ZSldPVwidmFsdWVcIlxuICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBkZXNjcmlwdGlvblwiXG4gICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgW3Jvd3NdPVwiNFwiXG4gICAgICByZXNpemU9XCJ2ZXJ0aWNhbFwiXG4gICAgICBzaXplPVwibWRcIlxuICAgICAgY3VzdG9tQ2xhc3M9XCJjcWEtcC0yIGNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMjBweF1cIj5cbiAgICA8L2NxYS1jdXN0b20tdGV4dGFyZWE+XG4gICAgPHAgY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzE4cHhdIGNxYS10ZXh0LVsjMEEwQTBBXSBjcWEtbS0wXCI+XG4gICAgICBQcm92aWRlIGEgY2xlYXIgZGVzY3JpcHRpb24gb2YgdGhlIHN0ZXAncyBwdXJwb3NlXG4gICAgPC9wPlxuICA8L2Rpdj5cblxuICA8IS0tIExpbmUgYmVsb3cgY29udGVudCAoZnVsbCB3aWR0aCBvZiBtb2RhbCwgbm8gc2lkZSBtYXJnaW4pIC0tPlxuICA8ZGl2IGNsYXNzPVwiY3FhLS1teC0yIGNxYS13LVtjYWxjKDEwMCUrMXJlbSldIGNxYS1mbGV4LXNocmluay0wXCI+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1oLXB4IGNxYS13LWZ1bGwgY3FhLWJnLVsjRTVFN0VCXVwiIHJvbGU9XCJwcmVzZW50YXRpb25cIj48L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBGb290ZXI6IENhbmNlbCwgQXBwbHkgKGZ1bGwgd2lkdGggaW4gb25lIHJvdykgLS0+XG4gIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0zXCI+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1zdHJldGNoIGNxYS1nYXAtMiBjcWEtdy1mdWxsXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXgtMSBjcWEtbWluLXctMFwiPlxuICAgICAgICA8Y3FhLWJ1dHRvbiB2YXJpYW50PVwib3V0bGluZWRcIiBidG5TaXplPVwibGdcIiBbdGV4dF09XCInQ2FuY2VsJ1wiIFtmdWxsV2lkdGhdPVwidHJ1ZVwiIChjbGlja2VkKT1cIm9uQ2FuY2VsKClcIlxuICAgICAgICAgIFtjdXN0b21DbGFzc109XCInY3FhLXRleHQtWzE0cHhdIGNxYS1weS1bOXB4XSBjcWEtYm9yZGVyLVsjNDE0MTQ2XSdcIj48L2NxYS1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleC0xIGNxYS1taW4tdy0wXCI+XG4gICAgICAgIDxjcWEtYnV0dG9uIHZhcmlhbnQ9XCJmaWxsZWRcIiBidG5TaXplPVwibGdcIiBbdGV4dF09XCInQXBwbHknXCIgW2Z1bGxXaWR0aF09XCJ0cnVlXCIgKGNsaWNrZWQpPVwib25BcHBseSgpXCJcbiAgICAgICAgICBbY3VzdG9tQ2xhc3NdPVwiJ2NxYS10ZXh0LVsxNHB4XSBjcWEtcHktWzlweF0gY3FhLWJvcmRlci1bIzNGNDNFRV0nXCI+PC9jcWEtYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGEgaHJlZj1cIiNcIiAoY2xpY2spPVwib25FZGl0SW5EZXB0aCgkZXZlbnQpXCJcbiAgICAgIGNsYXNzPVwiY3FhLXRleHQtWyMzRjQzRUVdIGNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMThweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0xLjUgY3FhLW5vLXVuZGVybGluZSBob3ZlcjpjcWEtbm8tdW5kZXJsaW5lIGNxYS1zZWxmLWNlbnRlclwiPlxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwiIWNxYS13LTQgIWNxYS1oLTQgIWNxYS10ZXh0LVsxNnB4XVwiPm9wZW5faW5fbmV3PC9tYXQtaWNvbj5cbiAgICAgIEVkaXQgaW4gZGVwdGggKG9wZW4gZGV0YWlsZWQgcmlnaHQgcGFuZWwpXG4gICAgPC9hPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,50 @@
1
+ import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class ElementListComponent {
5
+ constructor() {
6
+ /** Array of items to display */
7
+ this.items = [];
8
+ /** Key to access the title property from each item (default: 'title') */
9
+ this.titleKey = 'title';
10
+ /** Key to access the selector property from each item (default: 'selector') */
11
+ this.selectorKey = 'selector';
12
+ /** Key to access the labels array from each item (default: 'labels') */
13
+ this.labelsKey = 'labels';
14
+ /** Maximum height for the scrollable container (default: '200px') */
15
+ this.maxHeight = '200px';
16
+ /** Emitted when an item is clicked */
17
+ this.itemClick = new EventEmitter();
18
+ }
19
+ /**
20
+ * Get the value from an item using the specified key
21
+ */
22
+ getItemValue(item, key) {
23
+ return item?.[key];
24
+ }
25
+ /**
26
+ * Handle item click
27
+ */
28
+ onItemClick(item) {
29
+ this.itemClick.emit(item);
30
+ }
31
+ }
32
+ ElementListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ElementListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
33
+ 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" }, outputs: { itemClick: "itemClick" }, host: { classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div \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-flex-col cqa-gap-2\"\n [style.max-height]=\"maxHeight\">\n <div *ngFor=\"let item of items\" (click)=\"onItemClick(item)\">\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\">\n <div>\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\">\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</div>\n\n", directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ElementListComponent, decorators: [{
35
+ type: Component,
36
+ args: [{ selector: 'cqa-element-list', host: { class: 'cqa-ui-root' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div \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-flex-col cqa-gap-2\"\n [style.max-height]=\"maxHeight\">\n <div *ngFor=\"let item of items\" (click)=\"onItemClick(item)\">\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\">\n <div>\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\">\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</div>\n\n" }]
37
+ }], propDecorators: { items: [{
38
+ type: Input
39
+ }], titleKey: [{
40
+ type: Input
41
+ }], selectorKey: [{
42
+ type: Input
43
+ }], labelsKey: [{
44
+ type: Input
45
+ }], maxHeight: [{
46
+ type: Input
47
+ }], itemClick: [{
48
+ type: Output
49
+ }] } });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvdGVzdC1jYXNlLWRldGFpbHMvZWxlbWVudC1saXN0L2VsZW1lbnQtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2VsZW1lbnQtbGlzdC9lbGVtZW50LWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBUWhHLE1BQU0sT0FBTyxvQkFBb0I7SUFOakM7UUFPRSxnQ0FBZ0M7UUFDdkIsVUFBSyxHQUFVLEVBQUUsQ0FBQztRQUUzQix5RUFBeUU7UUFDaEUsYUFBUSxHQUFXLE9BQU8sQ0FBQztRQUVwQywrRUFBK0U7UUFDdEUsZ0JBQVcsR0FBVyxVQUFVLENBQUM7UUFFMUMsd0VBQXdFO1FBQy9ELGNBQVMsR0FBVyxRQUFRLENBQUM7UUFFdEMscUVBQXFFO1FBQzVELGNBQVMsR0FBVyxPQUFPLENBQUM7UUFFckMsc0NBQXNDO1FBQzVCLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0tBZS9DO0lBYkM7O09BRUc7SUFDSCxZQUFZLENBQUMsSUFBUyxFQUFFLEdBQVc7UUFDakMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXLENBQUMsSUFBUztRQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDOztpSEEvQlUsb0JBQW9CO3FHQUFwQixvQkFBb0Isb1FDUmpDLDhyQ0F5QkE7MkZEakJhLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDRSxrQkFBa0IsUUFFdEIsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLG1CQUNiLHVCQUF1QixDQUFDLE1BQU07OEJBSXRDLEtBQUs7c0JBQWIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdJLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLWVsZW1lbnQtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9lbGVtZW50LWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBFbGVtZW50TGlzdENvbXBvbmVudCB7XG4gIC8qKiBBcnJheSBvZiBpdGVtcyB0byBkaXNwbGF5ICovXG4gIEBJbnB1dCgpIGl0ZW1zOiBhbnlbXSA9IFtdO1xuICBcbiAgLyoqIEtleSB0byBhY2Nlc3MgdGhlIHRpdGxlIHByb3BlcnR5IGZyb20gZWFjaCBpdGVtIChkZWZhdWx0OiAndGl0bGUnKSAqL1xuICBASW5wdXQoKSB0aXRsZUtleTogc3RyaW5nID0gJ3RpdGxlJztcbiAgXG4gIC8qKiBLZXkgdG8gYWNjZXNzIHRoZSBzZWxlY3RvciBwcm9wZXJ0eSBmcm9tIGVhY2ggaXRlbSAoZGVmYXVsdDogJ3NlbGVjdG9yJykgKi9cbiAgQElucHV0KCkgc2VsZWN0b3JLZXk6IHN0cmluZyA9ICdzZWxlY3Rvcic7XG4gIFxuICAvKiogS2V5IHRvIGFjY2VzcyB0aGUgbGFiZWxzIGFycmF5IGZyb20gZWFjaCBpdGVtIChkZWZhdWx0OiAnbGFiZWxzJykgKi9cbiAgQElucHV0KCkgbGFiZWxzS2V5OiBzdHJpbmcgPSAnbGFiZWxzJztcbiAgXG4gIC8qKiBNYXhpbXVtIGhlaWdodCBmb3IgdGhlIHNjcm9sbGFibGUgY29udGFpbmVyIChkZWZhdWx0OiAnMjAwcHgnKSAqL1xuICBASW5wdXQoKSBtYXhIZWlnaHQ6IHN0cmluZyA9ICcyMDBweCc7XG5cbiAgLyoqIEVtaXR0ZWQgd2hlbiBhbiBpdGVtIGlzIGNsaWNrZWQgKi9cbiAgQE91dHB1dCgpIGl0ZW1DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHZhbHVlIGZyb20gYW4gaXRlbSB1c2luZyB0aGUgc3BlY2lmaWVkIGtleVxuICAgKi9cbiAgZ2V0SXRlbVZhbHVlKGl0ZW06IGFueSwga2V5OiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiBpdGVtPy5ba2V5XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgaXRlbSBjbGlja1xuICAgKi9cbiAgb25JdGVtQ2xpY2soaXRlbTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5pdGVtQ2xpY2suZW1pdChpdGVtKTtcbiAgfVxufVxuXG4iLCI8ZGl2IFxuICBjbGFzcz1cImNxYS1tYXgtaC1bMjAwcHhdIGNxYS1vdmVyZmxvdy15LWF1dG8gY3FhLXNjcm9sbGJhci10aGluIGNxYS1zY3JvbGxiYXItdHJhY2stdHJhbnNwYXJlbnQgY3FhLXNjcm9sbGJhci10aHVtYi1bI0U1RTdFQl0gY3FhLXNjcm9sbGJhci10aHVtYi1yb3VuZGVkLWZ1bGwgY3FhLXNjcm9sbGJhci10aHVtYi1ob3ZlcjpjcWEtYmctWyNEMUQ1REJdIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTJcIlxuICBbc3R5bGUubWF4LWhlaWdodF09XCJtYXhIZWlnaHRcIj5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiIChjbGljayk9XCJvbkl0ZW1DbGljayhpdGVtKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJob3ZlcjpjcWEtYmctWyNGNUY1RjVdIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktYmV0d2VlbiBjcWEtYm9yZGVyIGNxYS1ib3JkZXItWyNGREU2OEFdXG4gICAgICAgICAgICAgY3FhLXJvdW5kZWQtbGcgY3FhLXAtMyBjcWEtY3Vyc29yLXBvaW50ZXJcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxoNiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMTAwJV0gY3FhLWZvbnQtWzQwMF0gY3FhLXRleHQtWyMxNzE3MTddXCI+XG4gICAgICAgICAge3sgZ2V0SXRlbVZhbHVlKGl0ZW0sIHRpdGxlS2V5KSB9fVxuICAgICAgICA8L2g2PlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTAwJV0gY3FhLXRleHQtWyM2QjcyODBdXCI+XG4gICAgICAgICAge3sgZ2V0SXRlbVZhbHVlKGl0ZW0sIHNlbGVjdG9yS2V5KSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZ2FwLTFcIj5cbiAgICAgICAgPHNwYW4gXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHRhZyBvZiBnZXRJdGVtVmFsdWUoaXRlbSwgbGFiZWxzS2V5KVwiIFxuICAgICAgICAgIGNsYXNzPVwiY3FhLXRleHQtWzExcHhdIGNxYS10ZXh0LVsjNGI3NGVjXSBjcWEtcm91bmRlZC1mdWxsIGNxYS1weC0yIGNxYS1iZy1bI2VmZjZmZl0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItWyNjOGUwZmZdXCI+XG4gICAgICAgICAge3sgdGFnIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG4iXX0=