@cqa-lib/cqa-ui 1.1.125 → 1.1.126
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/live-conversation/live-conversation.component.mjs +3 -3
- package/fesm2015/cqa-lib-cqa-ui.mjs +2 -2
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +2 -2
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/styles.css +1 -1
|
@@ -137,10 +137,10 @@ export class LiveConversationComponent {
|
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
139
|
LiveConversationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: LiveConversationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
140
|
-
LiveConversationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: LiveConversationComponent, selector: "cqa-live-conversation", inputs: { conversation: "conversation", executionStatus: "executionStatus", stepFrom: "stepFrom", mode: "mode", stepId: "stepId", message: "message", remainingTime$: "remainingTime$", circleCircumference: "circleCircumference", showUserInputField: "showUserInputField", showUserInputFieldinDebug: "showUserInputFieldinDebug" }, outputs: { messageChange: "messageChange", sendMessage: "sendMessage", stopAgent: "stopAgent", stepAction: "stepAction", updateStepData: "updateStepData", redirectToCE: "redirectToCE", showUserInputFieldChange: "showUserInputFieldChange", showUserInputFieldinDebugChange: "showUserInputFieldinDebugChange" }, ngImport: i0, template: "<div class=\"cqa-ui-root\">\n <!-- Step Regular Mode Conversation Section -->\n <div\n *ngIf=\"shouldShowStepRegular\"\n class=\"conversation-section mt-2 p-3\"\n style=\"background-color: #FEF3C7; border-radius: 8px; border: 1px solid #FCD34D;\"\n >\n <div class=\"user-action-prompt\" *ngIf=\"!showUserInputField\">\n <div class=\"prompt-header d-flex align-items-center gap-2 mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 11V8\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 5H8.01\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <span style=\"font-weight: 600; color: #92400E;\">User input required to proceed</span>\n </div>\n <div class=\"prompt-actions d-flex gap-2\">\n <button\n class=\"action-btn primary\"\n (click)=\"onShowUserInputFieldChange(true)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Enter more details\n </button>\n <button\n class=\"action-btn secondary\"\n (click)=\"onStopAgent()\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Stop\n </button>\n </div>\n </div>\n\n <div class=\"user-input-section\" *ngIf=\"showUserInputField\">\n <div class=\"input-container d-flex gap-2 mb-2\">\n <textarea\n class=\"input-field\"\n placeholder=\"Type your response...\"\n [ngModel]=\"message\"\n (ngModelChange)=\"onMessageChange($event)\"\n (keyup.enter)=\"onSendMessage()\"\n rows=\"2\"\n autofocus\n style=\"flex: 1; padding: 8px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: #FFFFFF; color: #0A0A0A; resize: none;\"\n ></textarea>\n <button\n class=\"send-button\"\n [disabled]=\"!message\"\n (click)=\"onSendMessage()\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer;\"\n >\n Send\n </button>\n </div>\n <button\n class=\"cancel-button\"\n (click)=\"onShowUserInputFieldChange(false)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Back\n </button>\n </div>\n </div>\n\n <!-- Step Debug Mode Conversation Section -->\n <div\n *ngIf=\"shouldShowStepDebug\"\n class=\"conversation-section mt-2 p-3\"\n style=\"background-color: #FEF3C7; border-radius: 8px; border: 1px solid #FCD34D;\"\n >\n <div class=\"user-action-prompt\" *ngIf=\"!showUserInputFieldinDebug\">\n <div class=\"prompt-header d-flex align-items-center gap-2 mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 11V8\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 5H8.01\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <span style=\"font-weight: 600; color: #92400E;\">User input required to proceed</span>\n </div>\n <div class=\"prompt-actions d-flex gap-2\">\n <button\n class=\"action-btn primary\"\n (click)=\"onShowUserInputFieldinDebugChange(true)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Enter more details\n </button>\n <button\n class=\"action-btn secondary\"\n (click)=\"onStepAction('skip')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Skip Step\n </button>\n <button\n class=\"action-btn secondary\"\n (click)=\"onStepAction('skip_delete')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Delete Step\n </button>\n </div>\n </div>\n\n <div class=\"user-input-section\" *ngIf=\"showUserInputFieldinDebug\">\n <div class=\"input-container d-flex gap-2 mb-2\">\n <textarea\n class=\"input-field\"\n placeholder=\"Type your response...\"\n [ngModel]=\"message\"\n (ngModelChange)=\"onMessageChange($event)\"\n (keyup.enter)=\"onSendMessage()\"\n rows=\"2\"\n autofocus\n style=\"flex: 1; padding: 8px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: #FFFFFF; color: #0A0A0A; resize: none;\"\n ></textarea>\n </div>\n <div class=\"prompt-actions d-flex gap-2 mb-2\">\n <button\n class=\"action-btn primary\"\n [disabled]=\"!message\"\n (click)=\"onUpdateStepData('reRun', 'metadata')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Update and Rerun\n </button>\n <button\n class=\"action-btn primary\"\n [disabled]=\"!message\"\n (click)=\"onUpdateStepData('aiAgent', 'metadata')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Add New Steps and Rerun\n </button>\n </div>\n <button\n class=\"cancel-button\"\n (click)=\"onShowUserInputFieldinDebugChange(false)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Back\n </button>\n </div>\n </div>\n\n <!-- Test Case Group Level Conversation Input Section -->\n <div\n *ngIf=\"shouldShowTestCaseGroup\"\n class=\"conversation-input-section mt-3 p-3\"\n style=\"background-color: #EFF6FF; border-radius: 8px; border: 1px solid #BEDBFF;\"\n>\n <div class=\"d-flex justify-content-between align-items-center gap-2\">\n <div\n *ngIf=\"remainingTime$ | async as remainingTime\"\n class=\"mini-timer-container\"\n >\n <svg class=\"mini-progress-ring\" width=\"44\" height=\"44\">\n <circle\n class=\"mini-progress-ring__circle\"\n stroke=\"#3e98c7\"\n stroke-width=\"4\"\n fill=\"transparent\"\n r=\"20\"\n cx=\"22\"\n cy=\"22\"\n [style.strokeDasharray]=\"circleCircumference\"\n [style.strokeDashoffset.px]=\"getDashOffset(remainingTime)\"\n />\n </svg>\n <div class=\"mini-timer-text\" style=\"color: #374151; font-size: 12px; font-weight: 500;\">\n <span class=\"mini-time\">{{\n formatTime(remainingTime)\n }}</span>\n </div>\n </div>\n <input\n *ngIf=\"!isLocatorNotDetect\"\n [ngModel]=\"message\"\n (ngModelChange)=\"onMessageChange($event)\"\n [disabled]=\"isInputDisabled\"\n [type]=\"inputType\"\n class=\"form-control\"\n style=\"\n height: 36px;\n flex: 1;\n padding: 8px 12px;\n border-radius: 8px;\n border: 1px solid #D1D5DB;\n background-color: #FFFFFF;\n color: #0A0A0A;\n font-size: 14px;\n transition: border-color 0.2s ease, box-shadow 0.2s ease;\n outline: none;\n \"\n [style.border-color]=\"isInputDisabled ? '#E5E7EB' : '#D1D5DB'\"\n [style.background-color]=\"isInputDisabled ? '#F9FAFB' : '#FFFFFF'\"\n [style.color]=\"isInputDisabled ? '#9CA3AF' : '#0A0A0A'\"\n [style.cursor]=\"isInputDisabled ? 'not-allowed' : 'text'\"\n [placeholder]=\"inputPlaceholder\"\n onfocus=\"if (!this.disabled) { this.style.borderColor='#1447E6'; this.style.boxShadow='0 0 0 3px rgba(63, 67, 238, 0.1)'; }\"\n onblur=\"this.style.borderColor='#D1D5DB'; this.style.boxShadow='none';\"\n />\n <div\n *ngIf=\"isLocatorNotDetect\"\n (click)=\"onRedirectToCE()\"\n style=\"cursor: pointer;\"\n >\n <button\n class=\"btn\"\n style=\"\n padding: 8px 16px;\n border-radius: 8px;\n border: 1px solid #D1D5DB;\n background-color: #FFFFFF;\n color: #374151;\n cursor: pointer;\n font-weight: 500;\n font-size: 14px;\n transition: background-color 0.2s ease;\n \"\n onmouseover=\"this.style.backgroundColor='#F9FAFB'\"\n onmouseout=\"this.style.backgroundColor='#FFFFFF'\"\n >\n Record\n </button>\n </div>\n <button\n [disabled]=\"isResumeDisabled\"\n class=\"btn\"\n (click)=\"onSendMessage()\"\n style=\"\n height: 36px;\n padding: 8px 16px;\n border-radius: 8px;\n border: none;\n background-color: #1447E6;\n color: #FFFFFF;\n cursor: pointer;\n font-weight: 500;\n font-size: 14px;\n transition: background-color 0.2s ease;\n \"\n [style.background-color]=\"isResumeDisabled ? '#E2E2E3' : '#1447E6'\"\n [style.color]=\"isResumeDisabled ? '#9CA3AF' : '#FFFFFF'\"\n [style.cursor]=\"isResumeDisabled ? 'not-allowed' : 'pointer'\"\n onmouseover=\"if (!this.disabled) this.style.backgroundColor='#0F3CBA'\"\n onmouseout=\"if (!this.disabled) this.style.backgroundColor='#1447E6'\"\n >\n Resume\n </button>\n </div>\n</div>\n</div>", directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "async": i1.AsyncPipe } });
|
|
140
|
+
LiveConversationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: LiveConversationComponent, selector: "cqa-live-conversation", inputs: { conversation: "conversation", executionStatus: "executionStatus", stepFrom: "stepFrom", mode: "mode", stepId: "stepId", message: "message", remainingTime$: "remainingTime$", circleCircumference: "circleCircumference", showUserInputField: "showUserInputField", showUserInputFieldinDebug: "showUserInputFieldinDebug" }, outputs: { messageChange: "messageChange", sendMessage: "sendMessage", stopAgent: "stopAgent", stepAction: "stepAction", updateStepData: "updateStepData", redirectToCE: "redirectToCE", showUserInputFieldChange: "showUserInputFieldChange", showUserInputFieldinDebugChange: "showUserInputFieldinDebugChange" }, ngImport: i0, template: "<div class=\"cqa-ui-root\">\n <!-- Step Regular Mode Conversation Section -->\n <div\n *ngIf=\"shouldShowStepRegular\"\n class=\"conversation-section cqa-mt-2 cqa-p-3\"\n style=\"background-color: #FEF3C7; border-radius: 8px; border: 1px solid #FCD34D;\"\n >\n <div class=\"user-action-prompt\" *ngIf=\"!showUserInputField\">\n <div class=\"prompt-header cqa-flex cqa-items-center cqa-gap-2 cqa-mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 11V8\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 5H8.01\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <span style=\"font-weight: 600; color: #92400E;\">User input required to proceed</span>\n </div>\n <div class=\"prompt-actions cqa-flex cqa-gap-2\">\n <button\n class=\"action-btn primary\"\n (click)=\"onShowUserInputFieldChange(true)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Enter more details\n </button>\n <button\n class=\"action-btn secondary\"\n (click)=\"onStopAgent()\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Stop\n </button>\n </div>\n </div>\n\n <div class=\"user-input-section\" *ngIf=\"showUserInputField\">\n <div class=\"input-container cqa-flex cqa-gap-2 cqa-mb-2\">\n <textarea\n class=\"input-field\"\n placeholder=\"Type your response...\"\n [ngModel]=\"message\"\n (ngModelChange)=\"onMessageChange($event)\"\n (keyup.enter)=\"onSendMessage()\"\n rows=\"2\"\n autofocus\n style=\"flex: 1; padding: 8px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: #FFFFFF; color: #0A0A0A; resize: none;\"\n ></textarea>\n <button\n class=\"send-button\"\n [disabled]=\"!message\"\n (click)=\"onSendMessage()\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer;\"\n >\n Send\n </button>\n </div>\n <button\n class=\"cancel-button\"\n (click)=\"onShowUserInputFieldChange(false)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Back\n </button>\n </div>\n </div>\n\n <!-- Step Debug Mode Conversation Section -->\n <div\n *ngIf=\"shouldShowStepDebug\"\n class=\"conversation-section cqa-mt-2 cqa-p-3\"\n style=\"background-color: #FEF3C7; border-radius: 8px; border: 1px solid #FCD34D;\"\n >\n <div class=\"user-action-prompt\" *ngIf=\"!showUserInputFieldinDebug\">\n <div class=\"prompt-header cqa-flex cqa-items-center cqa-gap-2 cqa-mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 11V8\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 5H8.01\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <span style=\"font-weight: 600; color: #92400E;\">User input required to proceed</span>\n </div>\n <div class=\"prompt-actions cqa-flex cqa-gap-2\">\n <button\n class=\"action-btn primary\"\n (click)=\"onShowUserInputFieldinDebugChange(true)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Enter more details\n </button>\n <button\n class=\"action-btn secondary\"\n (click)=\"onStepAction('skip')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Skip Step\n </button>\n <button\n class=\"action-btn secondary\"\n (click)=\"onStepAction('skip_delete')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Delete Step\n </button>\n </div>\n </div>\n\n <div class=\"user-input-section\" *ngIf=\"showUserInputFieldinDebug\">\n <div class=\"input-container cqa-flex cqa-gap-2 cqa-mb-2\">\n <textarea\n class=\"input-field\"\n placeholder=\"Type your response...\"\n [ngModel]=\"message\"\n (ngModelChange)=\"onMessageChange($event)\"\n (keyup.enter)=\"onSendMessage()\"\n rows=\"2\"\n autofocus\n style=\"flex: 1; padding: 8px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: #FFFFFF; color: #0A0A0A; resize: none;\"\n ></textarea>\n </div>\n <div class=\"prompt-actions cqa-flex cqa-gap-2 cqa-mb-2\">\n <button\n class=\"action-btn primary\"\n [disabled]=\"!message\"\n (click)=\"onUpdateStepData('reRun', 'metadata')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Update and Rerun\n </button>\n <button\n class=\"action-btn primary\"\n [disabled]=\"!message\"\n (click)=\"onUpdateStepData('aiAgent', 'metadata')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Add New Steps and Rerun\n </button>\n </div>\n <button\n class=\"cancel-button\"\n (click)=\"onShowUserInputFieldinDebugChange(false)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Back\n </button>\n </div>\n </div>\n\n <!-- Test Case Group Level Conversation Input Section -->\n <div\n *ngIf=\"shouldShowTestCaseGroup\"\n class=\"conversation-input-section cqa-mt-3 cqa-p-3\"\n>\n <div class=\"cqa-flex cqa-justify-between cqa-items-center cqa-gap-2\">\n <div\n *ngIf=\"remainingTime$ | async as remainingTime\"\n class=\"mini-timer-container\"\n >\n <svg class=\"mini-progress-ring\" width=\"44\" height=\"44\">\n <circle\n class=\"mini-progress-ring__circle\"\n stroke=\"#3e98c7\"\n stroke-width=\"4\"\n fill=\"transparent\"\n r=\"20\"\n cx=\"22\"\n cy=\"22\"\n [style.strokeDasharray]=\"circleCircumference\"\n [style.strokeDashoffset.px]=\"getDashOffset(remainingTime)\"\n />\n </svg>\n <div class=\"mini-timer-text\" style=\"color: #374151; font-size: 12px; font-weight: 500;\">\n <span class=\"mini-time\">{{\n formatTime(remainingTime)\n }}</span>\n </div>\n </div>\n\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1\" style=\"flex:1 1 0;\">\n <div *ngIf=\"!isLocatorNotDetect\" class=\"cqa-text-md cqa-text-[#161617] cqa-font-medium cqa-font-inter\">Enter the timeout duration to continue execution.</div>\n <div class=\"cqa-flex cqa-justify-between cqa-items-center cqa-gap-2\">\n <input\n *ngIf=\"!isLocatorNotDetect\"\n [ngModel]=\"message\"\n (ngModelChange)=\"onMessageChange($event)\"\n [disabled]=\"isInputDisabled\"\n [type]=\"inputType\"\n class=\"form-control\"\n style=\"\n height: 36px;\n flex: 1;\n padding: 9px 13px;\n border-radius: 5px;\n border: 1px solid #E2E2E3;\n background-color: #FFFFFF;\n color: #0A0A0A;\n font-size: 14px;\n transition: border-color 0.2s ease, box-shadow 0.2s ease;\n outline: none;\n \"\n [style.border-color]=\"isInputDisabled ? '#E5E7EB' : '#D1D5DB'\"\n [style.background-color]=\"isInputDisabled ? '#F9FAFB' : '#FFFFFF'\"\n [style.color]=\"isInputDisabled ? '#9CA3AF' : '#0A0A0A'\"\n [style.cursor]=\"isInputDisabled ? 'not-allowed' : 'text'\"\n [placeholder]=\"inputPlaceholder\"\n onfocus=\"if (!this.disabled) { this.style.borderColor='#1447E6'; this.style.boxShadow='0 0 0 3px rgba(63, 67, 238, 0.1)'; }\"\n onblur=\"this.style.borderColor='#D1D5DB'; this.style.boxShadow='none';\"\n />\n <div\n *ngIf=\"isLocatorNotDetect\"\n (click)=\"onRedirectToCE()\"\n style=\"cursor: pointer;\"\n >\n <button\n class=\"btn\"\n style=\"\n padding: 8px 16px;\n border-radius: 8px;\n border: 1px solid #D1D5DB;\n background-color: #FFFFFF;\n color: #374151;\n cursor: pointer;\n font-weight: 500;\n font-size: 14px;\n transition: background-color 0.2s ease;\n \"\n onmouseover=\"this.style.backgroundColor='#F9FAFB'\"\n onmouseout=\"this.style.backgroundColor='#FFFFFF'\"\n >\n Record\n </button>\n </div>\n <button\n [disabled]=\"isResumeDisabled\"\n class=\"btn\"\n (click)=\"onSendMessage()\"\n style=\"\n height: 36px;\n padding: 8px 16px;\n border-radius: 8px;\n border: none;\n background-color: #1447E6;\n color: #FFFFFF;\n cursor: pointer;\n font-weight: 500;\n font-size: 14px;\n transition: background-color 0.2s ease;\n \"\n [style.background-color]=\"isResumeDisabled ? '#E2E2E3' : '#1447E6'\"\n [style.color]=\"isResumeDisabled ? '#9CA3AF' : '#FFFFFF'\"\n [style.cursor]=\"isResumeDisabled ? 'not-allowed' : 'pointer'\"\n onmouseover=\"if (!this.disabled) this.style.backgroundColor='#0F3CBA'\"\n onmouseout=\"if (!this.disabled) this.style.backgroundColor='#1447E6'\"\n >\n Resume\n </button>\n </div>\n </div>\n \n \n </div>\n</div>\n</div>", directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "async": i1.AsyncPipe } });
|
|
141
141
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: LiveConversationComponent, decorators: [{
|
|
142
142
|
type: Component,
|
|
143
|
-
args: [{ selector: 'cqa-live-conversation', template: "<div class=\"cqa-ui-root\">\n <!-- Step Regular Mode Conversation Section -->\n <div\n *ngIf=\"shouldShowStepRegular\"\n class=\"conversation-section mt-2 p-3\"\n style=\"background-color: #FEF3C7; border-radius: 8px; border: 1px solid #FCD34D;\"\n >\n <div class=\"user-action-prompt\" *ngIf=\"!showUserInputField\">\n <div class=\"prompt-header d-flex align-items-center gap-2 mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 11V8\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 5H8.01\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <span style=\"font-weight: 600; color: #92400E;\">User input required to proceed</span>\n </div>\n <div class=\"prompt-actions d-flex gap-2\">\n <button\n class=\"action-btn primary\"\n (click)=\"onShowUserInputFieldChange(true)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Enter more details\n </button>\n <button\n class=\"action-btn secondary\"\n (click)=\"onStopAgent()\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Stop\n </button>\n </div>\n </div>\n\n <div class=\"user-input-section\" *ngIf=\"showUserInputField\">\n <div class=\"input-container d-flex gap-2 mb-2\">\n <textarea\n class=\"input-field\"\n placeholder=\"Type your response...\"\n [ngModel]=\"message\"\n (ngModelChange)=\"onMessageChange($event)\"\n (keyup.enter)=\"onSendMessage()\"\n rows=\"2\"\n autofocus\n style=\"flex: 1; padding: 8px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: #FFFFFF; color: #0A0A0A; resize: none;\"\n ></textarea>\n <button\n class=\"send-button\"\n [disabled]=\"!message\"\n (click)=\"onSendMessage()\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer;\"\n >\n Send\n </button>\n </div>\n <button\n class=\"cancel-button\"\n (click)=\"onShowUserInputFieldChange(false)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Back\n </button>\n </div>\n </div>\n\n <!-- Step Debug Mode Conversation Section -->\n <div\n *ngIf=\"shouldShowStepDebug\"\n class=\"conversation-section mt-2 p-3\"\n style=\"background-color: #FEF3C7; border-radius: 8px; border: 1px solid #FCD34D;\"\n >\n <div class=\"user-action-prompt\" *ngIf=\"!showUserInputFieldinDebug\">\n <div class=\"prompt-header d-flex align-items-center gap-2 mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 11V8\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 5H8.01\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <span style=\"font-weight: 600; color: #92400E;\">User input required to proceed</span>\n </div>\n <div class=\"prompt-actions d-flex gap-2\">\n <button\n class=\"action-btn primary\"\n (click)=\"onShowUserInputFieldinDebugChange(true)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Enter more details\n </button>\n <button\n class=\"action-btn secondary\"\n (click)=\"onStepAction('skip')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Skip Step\n </button>\n <button\n class=\"action-btn secondary\"\n (click)=\"onStepAction('skip_delete')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Delete Step\n </button>\n </div>\n </div>\n\n <div class=\"user-input-section\" *ngIf=\"showUserInputFieldinDebug\">\n <div class=\"input-container d-flex gap-2 mb-2\">\n <textarea\n class=\"input-field\"\n placeholder=\"Type your response...\"\n [ngModel]=\"message\"\n (ngModelChange)=\"onMessageChange($event)\"\n (keyup.enter)=\"onSendMessage()\"\n rows=\"2\"\n autofocus\n style=\"flex: 1; padding: 8px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: #FFFFFF; color: #0A0A0A; resize: none;\"\n ></textarea>\n </div>\n <div class=\"prompt-actions d-flex gap-2 mb-2\">\n <button\n class=\"action-btn primary\"\n [disabled]=\"!message\"\n (click)=\"onUpdateStepData('reRun', 'metadata')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Update and Rerun\n </button>\n <button\n class=\"action-btn primary\"\n [disabled]=\"!message\"\n (click)=\"onUpdateStepData('aiAgent', 'metadata')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Add New Steps and Rerun\n </button>\n </div>\n <button\n class=\"cancel-button\"\n (click)=\"onShowUserInputFieldinDebugChange(false)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Back\n </button>\n </div>\n </div>\n\n <!-- Test Case Group Level Conversation Input Section -->\n <div\n *ngIf=\"shouldShowTestCaseGroup\"\n class=\"conversation-input-section mt-3 p-3\"\n style=\"background-color: #EFF6FF; border-radius: 8px; border: 1px solid #BEDBFF;\"\n>\n <div class=\"d-flex justify-content-between align-items-center gap-2\">\n <div\n *ngIf=\"remainingTime$ | async as remainingTime\"\n class=\"mini-timer-container\"\n >\n <svg class=\"mini-progress-ring\" width=\"44\" height=\"44\">\n <circle\n class=\"mini-progress-ring__circle\"\n stroke=\"#3e98c7\"\n stroke-width=\"4\"\n fill=\"transparent\"\n r=\"20\"\n cx=\"22\"\n cy=\"22\"\n [style.strokeDasharray]=\"circleCircumference\"\n [style.strokeDashoffset.px]=\"getDashOffset(remainingTime)\"\n />\n </svg>\n <div class=\"mini-timer-text\" style=\"color: #374151; font-size: 12px; font-weight: 500;\">\n <span class=\"mini-time\">{{\n formatTime(remainingTime)\n }}</span>\n </div>\n </div>\n <input\n *ngIf=\"!isLocatorNotDetect\"\n [ngModel]=\"message\"\n (ngModelChange)=\"onMessageChange($event)\"\n [disabled]=\"isInputDisabled\"\n [type]=\"inputType\"\n class=\"form-control\"\n style=\"\n height: 36px;\n flex: 1;\n padding: 8px 12px;\n border-radius: 8px;\n border: 1px solid #D1D5DB;\n background-color: #FFFFFF;\n color: #0A0A0A;\n font-size: 14px;\n transition: border-color 0.2s ease, box-shadow 0.2s ease;\n outline: none;\n \"\n [style.border-color]=\"isInputDisabled ? '#E5E7EB' : '#D1D5DB'\"\n [style.background-color]=\"isInputDisabled ? '#F9FAFB' : '#FFFFFF'\"\n [style.color]=\"isInputDisabled ? '#9CA3AF' : '#0A0A0A'\"\n [style.cursor]=\"isInputDisabled ? 'not-allowed' : 'text'\"\n [placeholder]=\"inputPlaceholder\"\n onfocus=\"if (!this.disabled) { this.style.borderColor='#1447E6'; this.style.boxShadow='0 0 0 3px rgba(63, 67, 238, 0.1)'; }\"\n onblur=\"this.style.borderColor='#D1D5DB'; this.style.boxShadow='none';\"\n />\n <div\n *ngIf=\"isLocatorNotDetect\"\n (click)=\"onRedirectToCE()\"\n style=\"cursor: pointer;\"\n >\n <button\n class=\"btn\"\n style=\"\n padding: 8px 16px;\n border-radius: 8px;\n border: 1px solid #D1D5DB;\n background-color: #FFFFFF;\n color: #374151;\n cursor: pointer;\n font-weight: 500;\n font-size: 14px;\n transition: background-color 0.2s ease;\n \"\n onmouseover=\"this.style.backgroundColor='#F9FAFB'\"\n onmouseout=\"this.style.backgroundColor='#FFFFFF'\"\n >\n Record\n </button>\n </div>\n <button\n [disabled]=\"isResumeDisabled\"\n class=\"btn\"\n (click)=\"onSendMessage()\"\n style=\"\n height: 36px;\n padding: 8px 16px;\n border-radius: 8px;\n border: none;\n background-color: #1447E6;\n color: #FFFFFF;\n cursor: pointer;\n font-weight: 500;\n font-size: 14px;\n transition: background-color 0.2s ease;\n \"\n [style.background-color]=\"isResumeDisabled ? '#E2E2E3' : '#1447E6'\"\n [style.color]=\"isResumeDisabled ? '#9CA3AF' : '#FFFFFF'\"\n [style.cursor]=\"isResumeDisabled ? 'not-allowed' : 'pointer'\"\n onmouseover=\"if (!this.disabled) this.style.backgroundColor='#0F3CBA'\"\n onmouseout=\"if (!this.disabled) this.style.backgroundColor='#1447E6'\"\n >\n Resume\n </button>\n </div>\n</div>\n</div>", styles: [] }]
|
|
143
|
+
args: [{ selector: 'cqa-live-conversation', template: "<div class=\"cqa-ui-root\">\n <!-- Step Regular Mode Conversation Section -->\n <div\n *ngIf=\"shouldShowStepRegular\"\n class=\"conversation-section cqa-mt-2 cqa-p-3\"\n style=\"background-color: #FEF3C7; border-radius: 8px; border: 1px solid #FCD34D;\"\n >\n <div class=\"user-action-prompt\" *ngIf=\"!showUserInputField\">\n <div class=\"prompt-header cqa-flex cqa-items-center cqa-gap-2 cqa-mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 11V8\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 5H8.01\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <span style=\"font-weight: 600; color: #92400E;\">User input required to proceed</span>\n </div>\n <div class=\"prompt-actions cqa-flex cqa-gap-2\">\n <button\n class=\"action-btn primary\"\n (click)=\"onShowUserInputFieldChange(true)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Enter more details\n </button>\n <button\n class=\"action-btn secondary\"\n (click)=\"onStopAgent()\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Stop\n </button>\n </div>\n </div>\n\n <div class=\"user-input-section\" *ngIf=\"showUserInputField\">\n <div class=\"input-container cqa-flex cqa-gap-2 cqa-mb-2\">\n <textarea\n class=\"input-field\"\n placeholder=\"Type your response...\"\n [ngModel]=\"message\"\n (ngModelChange)=\"onMessageChange($event)\"\n (keyup.enter)=\"onSendMessage()\"\n rows=\"2\"\n autofocus\n style=\"flex: 1; padding: 8px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: #FFFFFF; color: #0A0A0A; resize: none;\"\n ></textarea>\n <button\n class=\"send-button\"\n [disabled]=\"!message\"\n (click)=\"onSendMessage()\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer;\"\n >\n Send\n </button>\n </div>\n <button\n class=\"cancel-button\"\n (click)=\"onShowUserInputFieldChange(false)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Back\n </button>\n </div>\n </div>\n\n <!-- Step Debug Mode Conversation Section -->\n <div\n *ngIf=\"shouldShowStepDebug\"\n class=\"conversation-section cqa-mt-2 cqa-p-3\"\n style=\"background-color: #FEF3C7; border-radius: 8px; border: 1px solid #FCD34D;\"\n >\n <div class=\"user-action-prompt\" *ngIf=\"!showUserInputFieldinDebug\">\n <div class=\"prompt-header cqa-flex cqa-items-center cqa-gap-2 cqa-mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 11V8\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 5H8.01\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <span style=\"font-weight: 600; color: #92400E;\">User input required to proceed</span>\n </div>\n <div class=\"prompt-actions cqa-flex cqa-gap-2\">\n <button\n class=\"action-btn primary\"\n (click)=\"onShowUserInputFieldinDebugChange(true)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Enter more details\n </button>\n <button\n class=\"action-btn secondary\"\n (click)=\"onStepAction('skip')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Skip Step\n </button>\n <button\n class=\"action-btn secondary\"\n (click)=\"onStepAction('skip_delete')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Delete Step\n </button>\n </div>\n </div>\n\n <div class=\"user-input-section\" *ngIf=\"showUserInputFieldinDebug\">\n <div class=\"input-container cqa-flex cqa-gap-2 cqa-mb-2\">\n <textarea\n class=\"input-field\"\n placeholder=\"Type your response...\"\n [ngModel]=\"message\"\n (ngModelChange)=\"onMessageChange($event)\"\n (keyup.enter)=\"onSendMessage()\"\n rows=\"2\"\n autofocus\n style=\"flex: 1; padding: 8px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: #FFFFFF; color: #0A0A0A; resize: none;\"\n ></textarea>\n </div>\n <div class=\"prompt-actions cqa-flex cqa-gap-2 cqa-mb-2\">\n <button\n class=\"action-btn primary\"\n [disabled]=\"!message\"\n (click)=\"onUpdateStepData('reRun', 'metadata')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Update and Rerun\n </button>\n <button\n class=\"action-btn primary\"\n [disabled]=\"!message\"\n (click)=\"onUpdateStepData('aiAgent', 'metadata')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Add New Steps and Rerun\n </button>\n </div>\n <button\n class=\"cancel-button\"\n (click)=\"onShowUserInputFieldinDebugChange(false)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Back\n </button>\n </div>\n </div>\n\n <!-- Test Case Group Level Conversation Input Section -->\n <div\n *ngIf=\"shouldShowTestCaseGroup\"\n class=\"conversation-input-section cqa-mt-3 cqa-p-3\"\n>\n <div class=\"cqa-flex cqa-justify-between cqa-items-center cqa-gap-2\">\n <div\n *ngIf=\"remainingTime$ | async as remainingTime\"\n class=\"mini-timer-container\"\n >\n <svg class=\"mini-progress-ring\" width=\"44\" height=\"44\">\n <circle\n class=\"mini-progress-ring__circle\"\n stroke=\"#3e98c7\"\n stroke-width=\"4\"\n fill=\"transparent\"\n r=\"20\"\n cx=\"22\"\n cy=\"22\"\n [style.strokeDasharray]=\"circleCircumference\"\n [style.strokeDashoffset.px]=\"getDashOffset(remainingTime)\"\n />\n </svg>\n <div class=\"mini-timer-text\" style=\"color: #374151; font-size: 12px; font-weight: 500;\">\n <span class=\"mini-time\">{{\n formatTime(remainingTime)\n }}</span>\n </div>\n </div>\n\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1\" style=\"flex:1 1 0;\">\n <div *ngIf=\"!isLocatorNotDetect\" class=\"cqa-text-md cqa-text-[#161617] cqa-font-medium cqa-font-inter\">Enter the timeout duration to continue execution.</div>\n <div class=\"cqa-flex cqa-justify-between cqa-items-center cqa-gap-2\">\n <input\n *ngIf=\"!isLocatorNotDetect\"\n [ngModel]=\"message\"\n (ngModelChange)=\"onMessageChange($event)\"\n [disabled]=\"isInputDisabled\"\n [type]=\"inputType\"\n class=\"form-control\"\n style=\"\n height: 36px;\n flex: 1;\n padding: 9px 13px;\n border-radius: 5px;\n border: 1px solid #E2E2E3;\n background-color: #FFFFFF;\n color: #0A0A0A;\n font-size: 14px;\n transition: border-color 0.2s ease, box-shadow 0.2s ease;\n outline: none;\n \"\n [style.border-color]=\"isInputDisabled ? '#E5E7EB' : '#D1D5DB'\"\n [style.background-color]=\"isInputDisabled ? '#F9FAFB' : '#FFFFFF'\"\n [style.color]=\"isInputDisabled ? '#9CA3AF' : '#0A0A0A'\"\n [style.cursor]=\"isInputDisabled ? 'not-allowed' : 'text'\"\n [placeholder]=\"inputPlaceholder\"\n onfocus=\"if (!this.disabled) { this.style.borderColor='#1447E6'; this.style.boxShadow='0 0 0 3px rgba(63, 67, 238, 0.1)'; }\"\n onblur=\"this.style.borderColor='#D1D5DB'; this.style.boxShadow='none';\"\n />\n <div\n *ngIf=\"isLocatorNotDetect\"\n (click)=\"onRedirectToCE()\"\n style=\"cursor: pointer;\"\n >\n <button\n class=\"btn\"\n style=\"\n padding: 8px 16px;\n border-radius: 8px;\n border: 1px solid #D1D5DB;\n background-color: #FFFFFF;\n color: #374151;\n cursor: pointer;\n font-weight: 500;\n font-size: 14px;\n transition: background-color 0.2s ease;\n \"\n onmouseover=\"this.style.backgroundColor='#F9FAFB'\"\n onmouseout=\"this.style.backgroundColor='#FFFFFF'\"\n >\n Record\n </button>\n </div>\n <button\n [disabled]=\"isResumeDisabled\"\n class=\"btn\"\n (click)=\"onSendMessage()\"\n style=\"\n height: 36px;\n padding: 8px 16px;\n border-radius: 8px;\n border: none;\n background-color: #1447E6;\n color: #FFFFFF;\n cursor: pointer;\n font-weight: 500;\n font-size: 14px;\n transition: background-color 0.2s ease;\n \"\n [style.background-color]=\"isResumeDisabled ? '#E2E2E3' : '#1447E6'\"\n [style.color]=\"isResumeDisabled ? '#9CA3AF' : '#FFFFFF'\"\n [style.cursor]=\"isResumeDisabled ? 'not-allowed' : 'pointer'\"\n onmouseover=\"if (!this.disabled) this.style.backgroundColor='#0F3CBA'\"\n onmouseout=\"if (!this.disabled) this.style.backgroundColor='#1447E6'\"\n >\n Resume\n </button>\n </div>\n </div>\n \n \n </div>\n</div>\n</div>", styles: [] }]
|
|
144
144
|
}], propDecorators: { conversation: [{
|
|
145
145
|
type: Input
|
|
146
146
|
}], executionStatus: [{
|
|
@@ -178,4 +178,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
178
178
|
}], showUserInputFieldinDebugChange: [{
|
|
179
179
|
type: Output
|
|
180
180
|
}] } });
|
|
181
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZS1jb252ZXJzYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9saXZlLWNvbnZlcnNhdGlvbi9saXZlLWNvbnZlcnNhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2xpdmUtY29udmVyc2F0aW9uL2xpdmUtY29udmVyc2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBYyxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDOzs7O0FBZWpFLE1BQU0sT0FBTyx5QkFBeUI7SUFMdEM7UUFNVyxpQkFBWSxHQUE0QixJQUFJLENBQUM7UUFDN0Msb0JBQWUsR0FBVyxFQUFFLENBQUM7UUFDN0IsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUN0QixTQUFJLEdBQXFCLGNBQWMsQ0FBQztRQUV4QyxZQUFPLEdBQVcsRUFBRSxDQUFDO1FBRXJCLHdCQUFtQixHQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUMvQyx1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFDcEMsOEJBQXlCLEdBQVksS0FBSyxDQUFDO1FBRTFDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUMzQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFpQyxDQUFDO1FBQ2hFLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3JDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBK0MsQ0FBQztRQUM3RSxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUE2RSxDQUFDO1FBQy9HLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN4Qyw2QkFBd0IsR0FBRyxJQUFJLFlBQVksRUFB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QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0cseUJBQXlCO3NCQUFqQyxLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLHdCQUF3QjtzQkFBakMsTUFBTTtnQkFDRywrQkFBK0I7c0JBQXhDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udmVyc2F0aW9uRGF0YSB7XG4gIGlkPzogbnVtYmVyIHwgc3RyaW5nO1xuICByZXBseUJhY2tfaWQ/OiBzdHJpbmc7XG4gIHN0ZXBTdGF0dXM/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIENvbnZlcnNhdGlvbk1vZGUgPSAnc3RlcC1yZWd1bGFyJyB8ICdzdGVwLWRlYnVnJyB8ICd0ZXN0LWNhc2UtZ3JvdXAnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtbGl2ZS1jb252ZXJzYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vbGl2ZS1jb252ZXJzYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtdXG59KVxuZXhwb3J0IGNsYXNzIExpdmVDb252ZXJzYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGNvbnZlcnNhdGlvbjogQ29udmVyc2F0aW9uRGF0YSB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBleGVjdXRpb25TdGF0dXM6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzdGVwRnJvbTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIG1vZGU6IENvbnZlcnNhdGlvbk1vZGUgPSAnc3RlcC1yZWd1bGFyJztcbiAgQElucHV0KCkgc3RlcElkPzogbnVtYmVyIHwgc3RyaW5nO1xuICBASW5wdXQoKSBtZXNzYWdlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcmVtYWluaW5nVGltZSQ/OiBPYnNlcnZhYmxlPG51bWJlcj47XG4gIEBJbnB1dCgpIGNpcmNsZUNpcmN1bWZlcmVuY2U6IG51bWJlciA9IDIgKiBNYXRoLlBJICogNTI7XG4gIEBJbnB1dCgpIHNob3dVc2VySW5wdXRGaWVsZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93VXNlcklucHV0RmllbGRpbkRlYnVnOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIG1lc3NhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHNlbmRNZXNzYWdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHR5cGU/OiBzdHJpbmc7IGRhdGE/OiBhbnkgfT4oKTtcbiAgQE91dHB1dCgpIHN0b3BBZ2VudCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHN0ZXBBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgYWN0aW9uOiBzdHJpbmc7IHN0ZXBJZDogbnVtYmVyIHwgc3RyaW5nIH0+KCk7XG4gIEBPdXRwdXQoKSB1cGRhdGVTdGVwRGF0YSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBhY3Rpb246IHN0cmluZzsgdHlwZTogJ2xvY2F0b3InIHwgJ21ldGFkYXRhJzsgc3RlcElkOiBudW1iZXIgfCBzdHJpbmcgfT4oKTtcbiAgQE91dHB1dCgpIHJlZGlyZWN0VG9DRSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHNob3dVc2VySW5wdXRGaWVsZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHNob3dVc2VySW5wdXRGaWVsZGluRGVidWdDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgaW50ZXJuYWxSZW1haW5pbmdUaW1lJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcbiAgcHJpdmF0ZSB0aW1lclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJlbWFpbmluZ1RpbWUkKSB7XG4gICAgICB0aGlzLnJlbWFpbmluZ1RpbWUkID0gdGhpcy5pbnRlcm5hbFJlbWFpbmluZ1RpbWUkO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcFRpbWVyKCk7XG4gIH1cblxuICBvbk1lc3NhZ2VDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubWVzc2FnZSA9IHZhbHVlO1xuICAgIHRoaXMubWVzc2FnZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIG9uU2VuZE1lc3NhZ2UoKTogdm9pZCB7XG4gICAgLy8gRm9yIHRlc3QgY2FzZSBncm91cCBtb2RlIHdpdGggdGltZW91dFxuICAgIGlmICh0aGlzLmlzVGVzdENhc2VHcm91cE1vZGUgJiYgdGhpcy5pc1RpbWVvdXQgJiYgdGhpcy5tZXNzYWdlKSB7XG4gICAgICBjb25zdCB0aW1lVmFsdWUgPSBwYXJzZUludCh0aGlzLm1lc3NhZ2UsIDEwKTtcbiAgICAgIGlmICghaXNOYU4odGltZVZhbHVlKSkge1xuICAgICAgICB0aGlzLnNlbmRNZXNzYWdlLmVtaXQoe1xuICAgICAgICAgIHR5cGU6ICd0ZXN0X2Nhc2VfdGltZV9hZGQnLFxuICAgICAgICAgIGRhdGE6IHsgdGltZTogdGltZVZhbHVlIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gRGVmYXVsdFxuICAgIHRoaXMuc2VuZE1lc3NhZ2UuZW1pdCgpO1xuICB9XG5cbiAgb25TdG9wQWdlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9wQWdlbnQuZW1pdCgpO1xuICB9XG5cbiAgb25TdGVwQWN0aW9uKGFjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RlcElkKSB7XG4gICAgICB0aGlzLnN0ZXBBY3Rpb24uZW1pdCh7IGFjdGlvbiwgc3RlcElkOiB0aGlzLnN0ZXBJZCB9KTtcbiAgICB9XG4gIH1cblxuICBvblVwZGF0ZVN0ZXBEYXRhKGFjdGlvbjogc3RyaW5nLCB0eXBlOiAnbG9jYXRvcicgfCAnbWV0YWRhdGEnKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RlcElkKSB7XG4gICAgICB0aGlzLnVwZGF0ZVN0ZXBEYXRhLmVtaXQoeyBhY3Rpb24sIHR5cGUsIHN0ZXBJZDogdGhpcy5zdGVwSWQgfSk7XG4gICAgfVxuICB9XG5cbiAgb25SZWRpcmVjdFRvQ0UoKTogdm9pZCB7XG4gICAgdGhpcy5yZWRpcmVjdFRvQ0UuZW1pdCgpO1xuICB9XG5cbiAgb25TaG93VXNlcklucHV0RmllbGRDaGFuZ2UodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnNob3dVc2VySW5wdXRGaWVsZENoYW5nZS5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIG9uU2hvd1VzZXJJbnB1dEZpZWxkaW5EZWJ1Z0NoYW5nZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc2hvd1VzZXJJbnB1dEZpZWxkaW5EZWJ1Z0NoYW5nZS5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIGZvcm1hdFRpbWUoc2Vjb25kczogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcihzZWNvbmRzIC8gNjApO1xuICAgIGNvbnN0IHJlbWFpbmluZ1NlY29uZHMgPSBzZWNvbmRzICUgNjA7XG4gICAgcmV0dXJuIGAke21pbnV0ZXN9OiR7cmVtYWluaW5nU2Vjb25kcy50b1N0cmluZygpLnBhZFN0YXJ0KDIsIFwiMFwiKX1gO1xuICB9XG5cbiAgZ2V0RGFzaE9mZnNldChyZW1haW5pbmdUaW1lOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IHByb2dyZXNzID0gMSAtIHJlbWFpbmluZ1RpbWUgLyAoMiAqIDYwKTtcbiAgICByZXR1cm4gdGhpcy5jaXJjbGVDaXJjdW1mZXJlbmNlICogcHJvZ3Jlc3M7XG4gIH1cblxuICBwcml2YXRlIHN0b3BUaW1lcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50aW1lclN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy50aW1lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy50aW1lclN1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLy8gSGVscGVyIGdldHRlcnMgZm9yIHRlbXBsYXRlXG4gIGdldCBpc1N0ZXBSZWd1bGFyTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnc3RlcC1yZWd1bGFyJztcbiAgfVxuXG4gIGdldCBpc1N0ZXBEZWJ1Z01vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gJ3N0ZXAtZGVidWcnO1xuICB9XG5cbiAgZ2V0IGlzVGVzdENhc2VHcm91cE1vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gJ3Rlc3QtY2FzZS1ncm91cCc7XG4gIH1cblxuICBnZXQgc2hvdWxkU2hvd1N0ZXBSZWd1bGFyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhISh0aGlzLmlzU3RlcFJlZ3VsYXJNb2RlICYmXG4gICAgICB0aGlzLmNvbnZlcnNhdGlvbiAmJlxuICAgICAgdGhpcy5jb252ZXJzYXRpb24uaWQgPT09IHRoaXMuc3RlcElkICYmXG4gICAgICB0aGlzLmNvbnZlcnNhdGlvbi5zdGVwU3RhdHVzID09PSAnQ09OVkVSU0FUSU9OJyAmJlxuICAgICAgdGhpcy5zdGVwRnJvbSAhPT0gJ0RFQlVHR0VfV0lUSF9BSScpO1xuICB9XG5cbiAgZ2V0IHNob3VsZFNob3dTdGVwRGVidWcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKHRoaXMuaXNTdGVwRGVidWdNb2RlICYmXG4gICAgICB0aGlzLmNvbnZlcnNhdGlvbiAmJlxuICAgICAgdGhpcy5jb252ZXJzYXRpb24uaWQgPT09IHRoaXMuc3RlcElkICYmXG4gICAgICB0aGlzLmNvbnZlcnNhdGlvbi5zdGVwU3RhdHVzID09PSAnQ09OVkVSU0FUSU9OJyAmJlxuICAgICAgdGhpcy5zdGVwRnJvbSA9PT0gJ0RFQlVHR0VfV0lUSF9BSScpO1xuICB9XG5cbiAgZ2V0IHNob3VsZFNob3dUZXN0Q2FzZUdyb3VwKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhISh0aGlzLmlzVGVzdENhc2VHcm91cE1vZGUgJiZcbiAgICAgIHRoaXMuY29udmVyc2F0aW9uICYmXG4gICAgICB0aGlzLmV4ZWN1dGlvblN0YXR1cyAhPT0gJ0NPTVBMRVRFRCcpO1xuICB9XG5cbiAgZ2V0IGlzTG9jYXRvck5vdERldGVjdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb252ZXJzYXRpb24/LnN0ZXBTdGF0dXMgPT09ICdMT0NBVE9SX05PVF9ERVRFQ1QnO1xuICB9XG5cbiAgZ2V0IGlzVGltZW91dCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb252ZXJzYXRpb24/LnN0ZXBTdGF0dXMgPT09ICdUSU1FT1VUJztcbiAgfVxuXG4gIGdldCBpbnB1dFBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXNUaW1lb3V0ID8gJ0VudGVyIFRpbWVvdXQgaW4gc2VjJyA6ICdFbnRlciBJbnB1dCc7XG4gIH1cblxuICBnZXQgaW5wdXRUeXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXNUaW1lb3V0ID8gJ251bWJlcicgOiAndGV4dCc7XG4gIH1cblxuICBnZXQgaXNJbnB1dERpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5jb252ZXJzYXRpb24gfHwgIXRoaXMuY29udmVyc2F0aW9uPy5yZXBseUJhY2tfaWQ7XG4gIH1cblxuICBnZXQgaXNSZXN1bWVEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNMb2NhdG9yTm90RGV0ZWN0ICYmICghdGhpcy5tZXNzYWdlIHx8IHRoaXMubWVzc2FnZS50cmltKCkgPT09ICcnKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNxYS11aS1yb290XCI+XG4gIDwhLS0gU3RlcCBSZWd1bGFyIE1vZGUgQ29udmVyc2F0aW9uIFNlY3Rpb24gLS0+XG4gIDxkaXZcbiAgICAqbmdJZj1cInNob3VsZFNob3dTdGVwUmVndWxhclwiXG4gICAgY2xhc3M9XCJjb252ZXJzYXRpb24tc2VjdGlvbiBtdC0yIHAtM1wiXG4gICAgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAjRkVGM0M3OyBib3JkZXItcmFkaXVzOiA4cHg7IGJvcmRlcjogMXB4IHNvbGlkICNGQ0QzNEQ7XCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWFjdGlvbi1wcm9tcHRcIiAqbmdJZj1cIiFzaG93VXNlcklucHV0RmllbGRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwcm9tcHQtaGVhZGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgbWItMlwiPlxuICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICA8cGF0aCBkPVwiTTggMTRBNiA2IDAgMSAwIDggMmE2IDYgMCAwIDAgMCAxMnpcIiBzdHJva2U9XCIjOTI0MDBFXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNOCAxMVY4XCIgc3Ryb2tlPVwiIzkyNDAwRVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICA8cGF0aCBkPVwiTTggNUg4LjAxXCIgc3Ryb2tlPVwiIzkyNDAwRVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6ICM5MjQwMEU7XCI+VXNlciBpbnB1dCByZXF1aXJlZCB0byBwcm9jZWVkPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicHJvbXB0LWFjdGlvbnMgZC1mbGV4IGdhcC0yXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImFjdGlvbi1idG4gcHJpbWFyeVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU2hvd1VzZXJJbnB1dEZpZWxkQ2hhbmdlKHRydWUpXCJcbiAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDhweCAxNnB4OyBib3JkZXItcmFkaXVzOiA2cHg7IGJvcmRlcjogbm9uZTsgYmFja2dyb3VuZC1jb2xvcjogIzNGNDNFRTsgY29sb3I6IHdoaXRlOyBjdXJzb3I6IHBvaW50ZXI7IGZvbnQtc2l6ZTogMTRweDtcIlxuICAgICAgICA+XG4gICAgICAgICAgRW50ZXIgbW9yZSBkZXRhaWxzXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJhY3Rpb24tYnRuIHNlY29uZGFyeVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU3RvcEFnZW50KClcIlxuICAgICAgICAgIHN0eWxlPVwicGFkZGluZzogOHB4IDE2cHg7IGJvcmRlci1yYWRpdXM6IDZweDsgYm9yZGVyOiAxcHggc29saWQgI0QxRDVEQjsgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7IGN1cnNvcjogcG9pbnRlcjsgZm9udC1zaXplOiAxNHB4O1wiXG4gICAgICAgID5cbiAgICAgICAgICBTdG9wXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwidXNlci1pbnB1dC1zZWN0aW9uXCIgKm5nSWY9XCJzaG93VXNlcklucHV0RmllbGRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXIgZC1mbGV4IGdhcC0yIG1iLTJcIj5cbiAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgY2xhc3M9XCJpbnB1dC1maWVsZFwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJUeXBlIHlvdXIgcmVzcG9uc2UuLi5cIlxuICAgICAgICAgIFtuZ01vZGVsXT1cIm1lc3NhZ2VcIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uTWVzc2FnZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwib25TZW5kTWVzc2FnZSgpXCJcbiAgICAgICAgICByb3dzPVwiMlwiXG4gICAgICAgICAgYXV0b2ZvY3VzXG4gICAgICAgICAgc3R5bGU9XCJmbGV4OiAxOyBwYWRkaW5nOiA4cHg7IGJvcmRlci1yYWRpdXM6IDZweDsgYm9yZGVyOiAxcHggc29saWQgI0QxRDVEQjsgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsgY29sb3I6ICMwQTBBMEE7IHJlc2l6ZTogbm9uZTtcIlxuICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwic2VuZC1idXR0b25cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhbWVzc2FnZVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU2VuZE1lc3NhZ2UoKVwiXG4gICAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiA4cHggMTZweDsgYm9yZGVyLXJhZGl1czogNnB4OyBib3JkZXI6IG5vbmU7IGJhY2tncm91bmQtY29sb3I6ICMzRjQzRUU7IGNvbG9yOiB3aGl0ZTsgY3Vyc29yOiBwb2ludGVyO1wiXG4gICAgICAgID5cbiAgICAgICAgICBTZW5kXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiY2FuY2VsLWJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJvblNob3dVc2VySW5wdXRGaWVsZENoYW5nZShmYWxzZSlcIlxuICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDhweCAxNnB4OyBib3JkZXItcmFkaXVzOiA2cHg7IGJvcmRlcjogMXB4IHNvbGlkICNEMUQ1REI7IGJhY2tncm91bmQtY29sb3I6IHdoaXRlOyBjdXJzb3I6IHBvaW50ZXI7IGZvbnQtc2l6ZTogMTRweDtcIlxuICAgICAgPlxuICAgICAgICBCYWNrXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBTdGVwIERlYnVnIE1vZGUgQ29udmVyc2F0aW9uIFNlY3Rpb24gLS0+XG4gIDxkaXZcbiAgICAqbmdJZj1cInNob3VsZFNob3dTdGVwRGVidWdcIlxuICAgIGNsYXNzPVwiY29udmVyc2F0aW9uLXNlY3Rpb24gbXQtMiBwLTNcIlxuICAgIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogI0ZFRjNDNzsgYm9yZGVyLXJhZGl1czogOHB4OyBib3JkZXI6IDFweCBzb2xpZCAjRkNEMzREO1wiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwidXNlci1hY3Rpb24tcHJvbXB0XCIgKm5nSWY9XCIhc2hvd1VzZXJJbnB1dEZpZWxkaW5EZWJ1Z1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInByb21wdC1oZWFkZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBtYi0yXCI+XG4gICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNOCAxNEE2IDYgMCAxIDAgOCAyYTYgNiAwIDAgMCAwIDEyelwiIHN0cm9rZT1cIiM5MjQwMEVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgPHBhdGggZD1cIk04IDExVjhcIiBzdHJva2U9XCIjOTI0MDBFXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNOCA1SDguMDFcIiBzdHJva2U9XCIjOTI0MDBFXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgICAgPHNwYW4gc3R5bGU9XCJmb250LXdlaWdodDogNjAwOyBjb2xvcjogIzkyNDAwRTtcIj5Vc2VyIGlucHV0IHJlcXVpcmVkIHRvIHByb2NlZWQ8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwcm9tcHQtYWN0aW9ucyBkLWZsZXggZ2FwLTJcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWJ0biBwcmltYXJ5XCJcbiAgICAgICAgICAoY2xpY2spPVwib25TaG93VXNlcklucHV0RmllbGRpbkRlYnVnQ2hhbmdlKHRydWUpXCJcbiAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDhweCAxNnB4OyBib3JkZXItcmFkaXVzOiA2cHg7IGJvcmRlcjogbm9uZTsgYmFja2dyb3VuZC1jb2xvcjogIzNGNDNFRTsgY29sb3I6IHdoaXRlOyBjdXJzb3I6IHBvaW50ZXI7IGZvbnQtc2l6ZTogMTRweDtcIlxuICAgICAgICA+XG4gICAgICAgICAgRW50ZXIgbW9yZSBkZXRhaWxzXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJhY3Rpb24tYnRuIHNlY29uZGFyeVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU3RlcEFjdGlvbignc2tpcCcpXCJcbiAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDhweCAxNnB4OyBib3JkZXItcmFkaXVzOiA2cHg7IGJvcmRlcjogMXB4IHNvbGlkICNEMUQ1REI7IGJhY2tncm91bmQtY29sb3I6IHdoaXRlOyBjdXJzb3I6IHBvaW50ZXI7IGZvbnQtc2l6ZTogMTRweDtcIlxuICAgICAgICA+XG4gICAgICAgICAgU2tpcCBTdGVwXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJhY3Rpb24tYnRuIHNlY29uZGFyeVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU3RlcEFjdGlvbignc2tpcF9kZWxldGUnKVwiXG4gICAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiA4cHggMTZweDsgYm9yZGVyLXJhZGl1czogNnB4OyBib3JkZXI6IDFweCBzb2xpZCAjRDFENURCOyBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgY3Vyc29yOiBwb2ludGVyOyBmb250LXNpemU6IDE0cHg7XCJcbiAgICAgICAgPlxuICAgICAgICAgIERlbGV0ZSBTdGVwXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwidXNlci1pbnB1dC1zZWN0aW9uXCIgKm5nSWY9XCJzaG93VXNlcklucHV0RmllbGRpbkRlYnVnXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyIGQtZmxleCBnYXAtMiBtYi0yXCI+XG4gICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgIGNsYXNzPVwiaW5wdXQtZmllbGRcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVHlwZSB5b3VyIHJlc3BvbnNlLi4uXCJcbiAgICAgICAgICBbbmdNb2RlbF09XCJtZXNzYWdlXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbk1lc3NhZ2VDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgKGtleXVwLmVudGVyKT1cIm9uU2VuZE1lc3NhZ2UoKVwiXG4gICAgICAgICAgcm93cz1cIjJcIlxuICAgICAgICAgIGF1dG9mb2N1c1xuICAgICAgICAgIHN0eWxlPVwiZmxleDogMTsgcGFkZGluZzogOHB4OyBib3JkZXItcmFkaXVzOiA2cHg7IGJvcmRlcjogMXB4IHNvbGlkICNEMUQ1REI7IGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7IGNvbG9yOiAjMEEwQTBBOyByZXNpemU6IG5vbmU7XCJcbiAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwcm9tcHQtYWN0aW9ucyBkLWZsZXggZ2FwLTIgbWItMlwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJhY3Rpb24tYnRuIHByaW1hcnlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhbWVzc2FnZVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uVXBkYXRlU3RlcERhdGEoJ3JlUnVuJywgJ21ldGFkYXRhJylcIlxuICAgICAgICAgIHN0eWxlPVwicGFkZGluZzogOHB4IDE2cHg7IGJvcmRlci1yYWRpdXM6IDZweDsgYm9yZGVyOiBub25lOyBiYWNrZ3JvdW5kLWNvbG9yOiAjM0Y0M0VFOyBjb2xvcjogd2hpdGU7IGN1cnNvcjogcG9pbnRlcjsgZm9udC1zaXplOiAxNHB4O1wiXG4gICAgICAgID5cbiAgICAgICAgICBVcGRhdGUgYW5kIFJlcnVuXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJhY3Rpb24tYnRuIHByaW1hcnlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhbWVzc2FnZVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uVXBkYXRlU3RlcERhdGEoJ2FpQWdlbnQnLCAnbWV0YWRhdGEnKVwiXG4gICAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiA4cHggMTZweDsgYm9yZGVyLXJhZGl1czogNnB4OyBib3JkZXI6IG5vbmU7IGJhY2tncm91bmQtY29sb3I6ICMzRjQzRUU7IGNvbG9yOiB3aGl0ZTsgY3Vyc29yOiBwb2ludGVyOyBmb250LXNpemU6IDE0cHg7XCJcbiAgICAgICAgPlxuICAgICAgICAgIEFkZCBOZXcgU3RlcHMgYW5kIFJlcnVuXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiY2FuY2VsLWJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJvblNob3dVc2VySW5wdXRGaWVsZGluRGVidWdDaGFuZ2UoZmFsc2UpXCJcbiAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiA4cHggMTZweDsgYm9yZGVyLXJhZGl1czogNnB4OyBib3JkZXI6IDFweCBzb2xpZCAjRDFENURCOyBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgY3Vyc29yOiBwb2ludGVyOyBmb250LXNpemU6IDE0cHg7XCJcbiAgICAgID5cbiAgICAgICAgQmFja1xuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gVGVzdCBDYXNlIEdyb3VwIExldmVsIENvbnZlcnNhdGlvbiBJbnB1dCBTZWN0aW9uIC0tPlxuICA8ZGl2XG4gICpuZ0lmPVwic2hvdWxkU2hvd1Rlc3RDYXNlR3JvdXBcIlxuICBjbGFzcz1cImNvbnZlcnNhdGlvbi1pbnB1dC1zZWN0aW9uIG10LTMgcC0zXCJcbiAgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAjRUZGNkZGOyBib3JkZXItcmFkaXVzOiA4cHg7IGJvcmRlcjogMXB4IHNvbGlkICNCRURCRkY7XCJcbj5cbiAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cInJlbWFpbmluZ1RpbWUkIHwgYXN5bmMgYXMgcmVtYWluaW5nVGltZVwiXG4gICAgICBjbGFzcz1cIm1pbmktdGltZXItY29udGFpbmVyXCJcbiAgICA+XG4gICAgICA8c3ZnIGNsYXNzPVwibWluaS1wcm9ncmVzcy1yaW5nXCIgd2lkdGg9XCI0NFwiIGhlaWdodD1cIjQ0XCI+XG4gICAgICAgIDxjaXJjbGVcbiAgICAgICAgICBjbGFzcz1cIm1pbmktcHJvZ3Jlc3MtcmluZ19fY2lyY2xlXCJcbiAgICAgICAgICBzdHJva2U9XCIjM2U5OGM3XCJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCI0XCJcbiAgICAgICAgICBmaWxsPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgIHI9XCIyMFwiXG4gICAgICAgICAgY3g9XCIyMlwiXG4gICAgICAgICAgY3k9XCIyMlwiXG4gICAgICAgICAgW3N0eWxlLnN0cm9rZURhc2hhcnJheV09XCJjaXJjbGVDaXJjdW1mZXJlbmNlXCJcbiAgICAgICAgICBbc3R5bGUuc3Ryb2tlRGFzaG9mZnNldC5weF09XCJnZXREYXNoT2Zmc2V0KHJlbWFpbmluZ1RpbWUpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pbmktdGltZXItdGV4dFwiIHN0eWxlPVwiY29sb3I6ICMzNzQxNTE7IGZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IDUwMDtcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtaW5pLXRpbWVcIj57e1xuICAgICAgICAgIGZvcm1hdFRpbWUocmVtYWluaW5nVGltZSlcbiAgICAgICAgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8aW5wdXRcbiAgICAgICpuZ0lmPVwiIWlzTG9jYXRvck5vdERldGVjdFwiXG4gICAgICBbbmdNb2RlbF09XCJtZXNzYWdlXCJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uTWVzc2FnZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJpc0lucHV0RGlzYWJsZWRcIlxuICAgICAgW3R5cGVdPVwiaW5wdXRUeXBlXCJcbiAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgIHN0eWxlPVwiXG4gICAgICAgIGhlaWdodDogMzZweDtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgcGFkZGluZzogOHB4IDEycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0QxRDVEQjtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjtcbiAgICAgICAgY29sb3I6ICMwQTBBMEE7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMnMgZWFzZSwgYm94LXNoYWRvdyAwLjJzIGVhc2U7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICBcIlxuICAgICAgW3N0eWxlLmJvcmRlci1jb2xvcl09XCJpc0lucHV0RGlzYWJsZWQgPyAnI0U1RTdFQicgOiAnI0QxRDVEQidcIlxuICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiaXNJbnB1dERpc2FibGVkID8gJyNGOUZBRkInIDogJyNGRkZGRkYnXCJcbiAgICAgIFtzdHlsZS5jb2xvcl09XCJpc0lucHV0RGlzYWJsZWQgPyAnIzlDQTNBRicgOiAnIzBBMEEwQSdcIlxuICAgICAgW3N0eWxlLmN1cnNvcl09XCJpc0lucHV0RGlzYWJsZWQgPyAnbm90LWFsbG93ZWQnIDogJ3RleHQnXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJpbnB1dFBsYWNlaG9sZGVyXCJcbiAgICAgIG9uZm9jdXM9XCJpZiAoIXRoaXMuZGlzYWJsZWQpIHsgdGhpcy5zdHlsZS5ib3JkZXJDb2xvcj0nIzE0NDdFNic7IHRoaXMuc3R5bGUuYm94U2hhZG93PScwIDAgMCAzcHggcmdiYSg2MywgNjcsIDIzOCwgMC4xKSc7IH1cIlxuICAgICAgb25ibHVyPVwidGhpcy5zdHlsZS5ib3JkZXJDb2xvcj0nI0QxRDVEQic7IHRoaXMuc3R5bGUuYm94U2hhZG93PSdub25lJztcIlxuICAgIC8+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJpc0xvY2F0b3JOb3REZXRlY3RcIlxuICAgICAgKGNsaWNrKT1cIm9uUmVkaXJlY3RUb0NFKClcIlxuICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCJcbiAgICA+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuXCJcbiAgICAgICAgc3R5bGU9XCJcbiAgICAgICAgICBwYWRkaW5nOiA4cHggMTZweDtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0QxRDVEQjtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGO1xuICAgICAgICAgIGNvbG9yOiAjMzc0MTUxO1xuICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMnMgZWFzZTtcbiAgICAgICAgXCJcbiAgICAgICAgb25tb3VzZW92ZXI9XCJ0aGlzLnN0eWxlLmJhY2tncm91bmRDb2xvcj0nI0Y5RkFGQidcIlxuICAgICAgICBvbm1vdXNlb3V0PVwidGhpcy5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9JyNGRkZGRkYnXCJcbiAgICAgID5cbiAgICAgICAgUmVjb3JkXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8YnV0dG9uXG4gICAgICBbZGlzYWJsZWRdPVwiaXNSZXN1bWVEaXNhYmxlZFwiXG4gICAgICBjbGFzcz1cImJ0blwiXG4gICAgICAoY2xpY2spPVwib25TZW5kTWVzc2FnZSgpXCJcbiAgICAgIHN0eWxlPVwiXG4gICAgICAgIGhlaWdodDogMzZweDtcbiAgICAgICAgcGFkZGluZzogOHB4IDE2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTQ0N0U2O1xuICAgICAgICBjb2xvcjogI0ZGRkZGRjtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycyBlYXNlO1xuICAgICAgXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImlzUmVzdW1lRGlzYWJsZWQgPyAnI0UyRTJFMycgOiAnIzE0NDdFNidcIlxuICAgICAgW3N0eWxlLmNvbG9yXT1cImlzUmVzdW1lRGlzYWJsZWQgPyAnIzlDQTNBRicgOiAnI0ZGRkZGRidcIlxuICAgICAgW3N0eWxlLmN1cnNvcl09XCJpc1Jlc3VtZURpc2FibGVkID8gJ25vdC1hbGxvd2VkJyA6ICdwb2ludGVyJ1wiXG4gICAgICBvbm1vdXNlb3Zlcj1cImlmICghdGhpcy5kaXNhYmxlZCkgdGhpcy5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9JyMwRjNDQkEnXCJcbiAgICAgIG9ubW91c2VvdXQ9XCJpZiAoIXRoaXMuZGlzYWJsZWQpIHRoaXMuc3R5bGUuYmFja2dyb3VuZENvbG9yPScjMTQ0N0U2J1wiXG4gICAgPlxuICAgICAgUmVzdW1lXG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG48L2Rpdj4iXX0=
|
|
181
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZS1jb252ZXJzYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9saXZlLWNvbnZlcnNhdGlvbi9saXZlLWNvbnZlcnNhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2xpdmUtY29udmVyc2F0aW9uL2xpdmUtY29udmVyc2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBYyxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDOzs7O0FBZWpFLE1BQU0sT0FBTyx5QkFBeUI7SUFMdEM7UUFNVyxpQkFBWSxHQUE0QixJQUFJLENBQUM7UUFDN0Msb0JBQWUsR0FBVyxFQUFFLENBQUM7UUFDN0IsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUN0QixTQUFJLEdBQXFCLGNBQWMsQ0FBQztRQUV4QyxZQUFPLEdBQVcsRUFBRSxDQUFDO1FBRXJCLHdCQUFtQixHQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUMvQyx1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFDcEMsOEJBQXlCLEdBQVksS0FBSyxDQUFDO1FBRTFDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUMzQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFpQyxDQUFDO1FBQ2hFLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3JDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBK0MsQ0FBQztRQUM3RSxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUE2RSxDQUFDO1FBQy9HLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN4Qyw2QkFBd0IsR0FBRyxJQUFJLFlBQVksRUFB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QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0cseUJBQXlCO3NCQUFqQyxLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLHdCQUF3QjtzQkFBakMsTUFBTTtnQkFDRywrQkFBK0I7c0JBQXhDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udmVyc2F0aW9uRGF0YSB7XG4gIGlkPzogbnVtYmVyIHwgc3RyaW5nO1xuICByZXBseUJhY2tfaWQ/OiBzdHJpbmc7XG4gIHN0ZXBTdGF0dXM/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIENvbnZlcnNhdGlvbk1vZGUgPSAnc3RlcC1yZWd1bGFyJyB8ICdzdGVwLWRlYnVnJyB8ICd0ZXN0LWNhc2UtZ3JvdXAnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtbGl2ZS1jb252ZXJzYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vbGl2ZS1jb252ZXJzYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtdXG59KVxuZXhwb3J0IGNsYXNzIExpdmVDb252ZXJzYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGNvbnZlcnNhdGlvbjogQ29udmVyc2F0aW9uRGF0YSB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBleGVjdXRpb25TdGF0dXM6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzdGVwRnJvbTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIG1vZGU6IENvbnZlcnNhdGlvbk1vZGUgPSAnc3RlcC1yZWd1bGFyJztcbiAgQElucHV0KCkgc3RlcElkPzogbnVtYmVyIHwgc3RyaW5nO1xuICBASW5wdXQoKSBtZXNzYWdlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcmVtYWluaW5nVGltZSQ/OiBPYnNlcnZhYmxlPG51bWJlcj47XG4gIEBJbnB1dCgpIGNpcmNsZUNpcmN1bWZlcmVuY2U6IG51bWJlciA9IDIgKiBNYXRoLlBJICogNTI7XG4gIEBJbnB1dCgpIHNob3dVc2VySW5wdXRGaWVsZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93VXNlcklucHV0RmllbGRpbkRlYnVnOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIG1lc3NhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHNlbmRNZXNzYWdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHR5cGU/OiBzdHJpbmc7IGRhdGE/OiBhbnkgfT4oKTtcbiAgQE91dHB1dCgpIHN0b3BBZ2VudCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHN0ZXBBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgYWN0aW9uOiBzdHJpbmc7IHN0ZXBJZDogbnVtYmVyIHwgc3RyaW5nIH0+KCk7XG4gIEBPdXRwdXQoKSB1cGRhdGVTdGVwRGF0YSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBhY3Rpb246IHN0cmluZzsgdHlwZTogJ2xvY2F0b3InIHwgJ21ldGFkYXRhJzsgc3RlcElkOiBudW1iZXIgfCBzdHJpbmcgfT4oKTtcbiAgQE91dHB1dCgpIHJlZGlyZWN0VG9DRSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHNob3dVc2VySW5wdXRGaWVsZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHNob3dVc2VySW5wdXRGaWVsZGluRGVidWdDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgaW50ZXJuYWxSZW1haW5pbmdUaW1lJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcbiAgcHJpdmF0ZSB0aW1lclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJlbWFpbmluZ1RpbWUkKSB7XG4gICAgICB0aGlzLnJlbWFpbmluZ1RpbWUkID0gdGhpcy5pbnRlcm5hbFJlbWFpbmluZ1RpbWUkO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcFRpbWVyKCk7XG4gIH1cblxuICBvbk1lc3NhZ2VDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubWVzc2FnZSA9IHZhbHVlO1xuICAgIHRoaXMubWVzc2FnZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIG9uU2VuZE1lc3NhZ2UoKTogdm9pZCB7XG4gICAgLy8gRm9yIHRlc3QgY2FzZSBncm91cCBtb2RlIHdpdGggdGltZW91dFxuICAgIGlmICh0aGlzLmlzVGVzdENhc2VHcm91cE1vZGUgJiYgdGhpcy5pc1RpbWVvdXQgJiYgdGhpcy5tZXNzYWdlKSB7XG4gICAgICBjb25zdCB0aW1lVmFsdWUgPSBwYXJzZUludCh0aGlzLm1lc3NhZ2UsIDEwKTtcbiAgICAgIGlmICghaXNOYU4odGltZVZhbHVlKSkge1xuICAgICAgICB0aGlzLnNlbmRNZXNzYWdlLmVtaXQoe1xuICAgICAgICAgIHR5cGU6ICd0ZXN0X2Nhc2VfdGltZV9hZGQnLFxuICAgICAgICAgIGRhdGE6IHsgdGltZTogdGltZVZhbHVlIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gRGVmYXVsdFxuICAgIHRoaXMuc2VuZE1lc3NhZ2UuZW1pdCgpO1xuICB9XG5cbiAgb25TdG9wQWdlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9wQWdlbnQuZW1pdCgpO1xuICB9XG5cbiAgb25TdGVwQWN0aW9uKGFjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RlcElkKSB7XG4gICAgICB0aGlzLnN0ZXBBY3Rpb24uZW1pdCh7IGFjdGlvbiwgc3RlcElkOiB0aGlzLnN0ZXBJZCB9KTtcbiAgICB9XG4gIH1cblxuICBvblVwZGF0ZVN0ZXBEYXRhKGFjdGlvbjogc3RyaW5nLCB0eXBlOiAnbG9jYXRvcicgfCAnbWV0YWRhdGEnKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RlcElkKSB7XG4gICAgICB0aGlzLnVwZGF0ZVN0ZXBEYXRhLmVtaXQoeyBhY3Rpb24sIHR5cGUsIHN0ZXBJZDogdGhpcy5zdGVwSWQgfSk7XG4gICAgfVxuICB9XG5cbiAgb25SZWRpcmVjdFRvQ0UoKTogdm9pZCB7XG4gICAgdGhpcy5yZWRpcmVjdFRvQ0UuZW1pdCgpO1xuICB9XG5cbiAgb25TaG93VXNlcklucHV0RmllbGRDaGFuZ2UodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnNob3dVc2VySW5wdXRGaWVsZENoYW5nZS5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIG9uU2hvd1VzZXJJbnB1dEZpZWxkaW5EZWJ1Z0NoYW5nZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc2hvd1VzZXJJbnB1dEZpZWxkaW5EZWJ1Z0NoYW5nZS5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIGZvcm1hdFRpbWUoc2Vjb25kczogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcihzZWNvbmRzIC8gNjApO1xuICAgIGNvbnN0IHJlbWFpbmluZ1NlY29uZHMgPSBzZWNvbmRzICUgNjA7XG4gICAgcmV0dXJuIGAke21pbnV0ZXN9OiR7cmVtYWluaW5nU2Vjb25kcy50b1N0cmluZygpLnBhZFN0YXJ0KDIsIFwiMFwiKX1gO1xuICB9XG5cbiAgZ2V0RGFzaE9mZnNldChyZW1haW5pbmdUaW1lOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IHByb2dyZXNzID0gMSAtIHJlbWFpbmluZ1RpbWUgLyAoMiAqIDYwKTtcbiAgICByZXR1cm4gdGhpcy5jaXJjbGVDaXJjdW1mZXJlbmNlICogcHJvZ3Jlc3M7XG4gIH1cblxuICBwcml2YXRlIHN0b3BUaW1lcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50aW1lclN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy50aW1lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy50aW1lclN1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLy8gSGVscGVyIGdldHRlcnMgZm9yIHRlbXBsYXRlXG4gIGdldCBpc1N0ZXBSZWd1bGFyTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnc3RlcC1yZWd1bGFyJztcbiAgfVxuXG4gIGdldCBpc1N0ZXBEZWJ1Z01vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gJ3N0ZXAtZGVidWcnO1xuICB9XG5cbiAgZ2V0IGlzVGVzdENhc2VHcm91cE1vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gJ3Rlc3QtY2FzZS1ncm91cCc7XG4gIH1cblxuICBnZXQgc2hvdWxkU2hvd1N0ZXBSZWd1bGFyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhISh0aGlzLmlzU3RlcFJlZ3VsYXJNb2RlICYmXG4gICAgICB0aGlzLmNvbnZlcnNhdGlvbiAmJlxuICAgICAgdGhpcy5jb252ZXJzYXRpb24uaWQgPT09IHRoaXMuc3RlcElkICYmXG4gICAgICB0aGlzLmNvbnZlcnNhdGlvbi5zdGVwU3RhdHVzID09PSAnQ09OVkVSU0FUSU9OJyAmJlxuICAgICAgdGhpcy5zdGVwRnJvbSAhPT0gJ0RFQlVHR0VfV0lUSF9BSScpO1xuICB9XG5cbiAgZ2V0IHNob3VsZFNob3dTdGVwRGVidWcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKHRoaXMuaXNTdGVwRGVidWdNb2RlICYmXG4gICAgICB0aGlzLmNvbnZlcnNhdGlvbiAmJlxuICAgICAgdGhpcy5jb252ZXJzYXRpb24uaWQgPT09IHRoaXMuc3RlcElkICYmXG4gICAgICB0aGlzLmNvbnZlcnNhdGlvbi5zdGVwU3RhdHVzID09PSAnQ09OVkVSU0FUSU9OJyAmJlxuICAgICAgdGhpcy5zdGVwRnJvbSA9PT0gJ0RFQlVHR0VfV0lUSF9BSScpO1xuICB9XG5cbiAgZ2V0IHNob3VsZFNob3dUZXN0Q2FzZUdyb3VwKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhISh0aGlzLmlzVGVzdENhc2VHcm91cE1vZGUgJiZcbiAgICAgIHRoaXMuY29udmVyc2F0aW9uICYmXG4gICAgICB0aGlzLmV4ZWN1dGlvblN0YXR1cyAhPT0gJ0NPTVBMRVRFRCcpO1xuICB9XG5cbiAgZ2V0IGlzTG9jYXRvck5vdERldGVjdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb252ZXJzYXRpb24/LnN0ZXBTdGF0dXMgPT09ICdMT0NBVE9SX05PVF9ERVRFQ1QnO1xuICB9XG5cbiAgZ2V0IGlzVGltZW91dCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb252ZXJzYXRpb24/LnN0ZXBTdGF0dXMgPT09ICdUSU1FT1VUJztcbiAgfVxuXG4gIGdldCBpbnB1dFBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXNUaW1lb3V0ID8gJ0VudGVyIFRpbWVvdXQgaW4gc2VjJyA6ICdFbnRlciBJbnB1dCc7XG4gIH1cblxuICBnZXQgaW5wdXRUeXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXNUaW1lb3V0ID8gJ251bWJlcicgOiAndGV4dCc7XG4gIH1cblxuICBnZXQgaXNJbnB1dERpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5jb252ZXJzYXRpb24gfHwgIXRoaXMuY29udmVyc2F0aW9uPy5yZXBseUJhY2tfaWQ7XG4gIH1cblxuICBnZXQgaXNSZXN1bWVEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNMb2NhdG9yTm90RGV0ZWN0ICYmICghdGhpcy5tZXNzYWdlIHx8IHRoaXMubWVzc2FnZS50cmltKCkgPT09ICcnKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNxYS11aS1yb290XCI+XG4gIDwhLS0gU3RlcCBSZWd1bGFyIE1vZGUgQ29udmVyc2F0aW9uIFNlY3Rpb24gLS0+XG4gIDxkaXZcbiAgICAqbmdJZj1cInNob3VsZFNob3dTdGVwUmVndWxhclwiXG4gICAgY2xhc3M9XCJjb252ZXJzYXRpb24tc2VjdGlvbiBjcWEtbXQtMiBjcWEtcC0zXCJcbiAgICBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICNGRUYzQzc7IGJvcmRlci1yYWRpdXM6IDhweDsgYm9yZGVyOiAxcHggc29saWQgI0ZDRDM0RDtcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInVzZXItYWN0aW9uLXByb21wdFwiICpuZ0lmPVwiIXNob3dVc2VySW5wdXRGaWVsZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInByb21wdC1oZWFkZXIgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTIgY3FhLW1iLTJcIj5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgPHBhdGggZD1cIk04IDE0QTYgNiAwIDEgMCA4IDJhNiA2IDAgMCAwIDAgMTJ6XCIgc3Ryb2tlPVwiIzkyNDAwRVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICA8cGF0aCBkPVwiTTggMTFWOFwiIHN0cm9rZT1cIiM5MjQwMEVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgPHBhdGggZD1cIk04IDVIOC4wMVwiIHN0cm9rZT1cIiM5MjQwMEVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA2MDA7IGNvbG9yOiAjOTI0MDBFO1wiPlVzZXIgaW5wdXQgcmVxdWlyZWQgdG8gcHJvY2VlZDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInByb21wdC1hY3Rpb25zIGNxYS1mbGV4IGNxYS1nYXAtMlwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJhY3Rpb24tYnRuIHByaW1hcnlcIlxuICAgICAgICAgIChjbGljayk9XCJvblNob3dVc2VySW5wdXRGaWVsZENoYW5nZSh0cnVlKVwiXG4gICAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiA4cHggMTZweDsgYm9yZGVyLXJhZGl1czogNnB4OyBib3JkZXI6IG5vbmU7IGJhY2tncm91bmQtY29sb3I6ICMzRjQzRUU7IGNvbG9yOiB3aGl0ZTsgY3Vyc29yOiBwb2ludGVyOyBmb250LXNpemU6IDE0cHg7XCJcbiAgICAgICAgPlxuICAgICAgICAgIEVudGVyIG1vcmUgZGV0YWlsc1xuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWJ0biBzZWNvbmRhcnlcIlxuICAgICAgICAgIChjbGljayk9XCJvblN0b3BBZ2VudCgpXCJcbiAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDhweCAxNnB4OyBib3JkZXItcmFkaXVzOiA2cHg7IGJvcmRlcjogMXB4IHNvbGlkICNEMUQ1REI7IGJhY2tncm91bmQtY29sb3I6IHdoaXRlOyBjdXJzb3I6IHBvaW50ZXI7IGZvbnQtc2l6ZTogMTRweDtcIlxuICAgICAgICA+XG4gICAgICAgICAgU3RvcFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInVzZXItaW5wdXQtc2VjdGlvblwiICpuZ0lmPVwic2hvd1VzZXJJbnB1dEZpZWxkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyIGNxYS1mbGV4IGNxYS1nYXAtMiBjcWEtbWItMlwiPlxuICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICBjbGFzcz1cImlucHV0LWZpZWxkXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlR5cGUgeW91ciByZXNwb25zZS4uLlwiXG4gICAgICAgICAgW25nTW9kZWxdPVwibWVzc2FnZVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25NZXNzYWdlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJvblNlbmRNZXNzYWdlKClcIlxuICAgICAgICAgIHJvd3M9XCIyXCJcbiAgICAgICAgICBhdXRvZm9jdXNcbiAgICAgICAgICBzdHlsZT1cImZsZXg6IDE7IHBhZGRpbmc6IDhweDsgYm9yZGVyLXJhZGl1czogNnB4OyBib3JkZXI6IDFweCBzb2xpZCAjRDFENURCOyBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOyBjb2xvcjogIzBBMEEwQTsgcmVzaXplOiBub25lO1wiXG4gICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJzZW5kLWJ1dHRvblwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFtZXNzYWdlXCJcbiAgICAgICAgICAoY2xpY2spPVwib25TZW5kTWVzc2FnZSgpXCJcbiAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDhweCAxNnB4OyBib3JkZXItcmFkaXVzOiA2cHg7IGJvcmRlcjogbm9uZTsgYmFja2dyb3VuZC1jb2xvcjogIzNGNDNFRTsgY29sb3I6IHdoaXRlOyBjdXJzb3I6IHBvaW50ZXI7XCJcbiAgICAgICAgPlxuICAgICAgICAgIFNlbmRcbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJjYW5jZWwtYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uU2hvd1VzZXJJbnB1dEZpZWxkQ2hhbmdlKGZhbHNlKVwiXG4gICAgICAgIHN0eWxlPVwicGFkZGluZzogOHB4IDE2cHg7IGJvcmRlci1yYWRpdXM6IDZweDsgYm9yZGVyOiAxcHggc29saWQgI0QxRDVEQjsgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7IGN1cnNvcjogcG9pbnRlcjsgZm9udC1zaXplOiAxNHB4O1wiXG4gICAgICA+XG4gICAgICAgIEJhY2tcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIFN0ZXAgRGVidWcgTW9kZSBDb252ZXJzYXRpb24gU2VjdGlvbiAtLT5cbiAgPGRpdlxuICAgICpuZ0lmPVwic2hvdWxkU2hvd1N0ZXBEZWJ1Z1wiXG4gICAgY2xhc3M9XCJjb252ZXJzYXRpb24tc2VjdGlvbiBjcWEtbXQtMiBjcWEtcC0zXCJcbiAgICBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICNGRUYzQzc7IGJvcmRlci1yYWRpdXM6IDhweDsgYm9yZGVyOiAxcHggc29saWQgI0ZDRDM0RDtcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInVzZXItYWN0aW9uLXByb21wdFwiICpuZ0lmPVwiIXNob3dVc2VySW5wdXRGaWVsZGluRGVidWdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwcm9tcHQtaGVhZGVyIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yIGNxYS1tYi0yXCI+XG4gICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNOCAxNEE2IDYgMCAxIDAgOCAyYTYgNiAwIDAgMCAwIDEyelwiIHN0cm9rZT1cIiM5MjQwMEVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgPHBhdGggZD1cIk04IDExVjhcIiBzdHJva2U9XCIjOTI0MDBFXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNOCA1SDguMDFcIiBzdHJva2U9XCIjOTI0MDBFXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgICAgPHNwYW4gc3R5bGU9XCJmb250LXdlaWdodDogNjAwOyBjb2xvcjogIzkyNDAwRTtcIj5Vc2VyIGlucHV0IHJlcXVpcmVkIHRvIHByb2NlZWQ8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwcm9tcHQtYWN0aW9ucyBjcWEtZmxleCBjcWEtZ2FwLTJcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWJ0biBwcmltYXJ5XCJcbiAgICAgICAgICAoY2xpY2spPVwib25TaG93VXNlcklucHV0RmllbGRpbkRlYnVnQ2hhbmdlKHRydWUpXCJcbiAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDhweCAxNnB4OyBib3JkZXItcmFkaXVzOiA2cHg7IGJvcmRlcjogbm9uZTsgYmFja2dyb3VuZC1jb2xvcjogIzNGNDNFRTsgY29sb3I6IHdoaXRlOyBjdXJzb3I6IHBvaW50ZXI7IGZvbnQtc2l6ZTogMTRweDtcIlxuICAgICAgICA+XG4gICAgICAgICAgRW50ZXIgbW9yZSBkZXRhaWxzXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJhY3Rpb24tYnRuIHNlY29uZGFyeVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU3RlcEFjdGlvbignc2tpcCcpXCJcbiAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDhweCAxNnB4OyBib3JkZXItcmFkaXVzOiA2cHg7IGJvcmRlcjogMXB4IHNvbGlkICNEMUQ1REI7IGJhY2tncm91bmQtY29sb3I6IHdoaXRlOyBjdXJzb3I6IHBvaW50ZXI7IGZvbnQtc2l6ZTogMTRweDtcIlxuICAgICAgICA+XG4gICAgICAgICAgU2tpcCBTdGVwXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJhY3Rpb24tYnRuIHNlY29uZGFyeVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU3RlcEFjdGlvbignc2tpcF9kZWxldGUnKVwiXG4gICAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiA4cHggMTZweDsgYm9yZGVyLXJhZGl1czogNnB4OyBib3JkZXI6IDFweCBzb2xpZCAjRDFENURCOyBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgY3Vyc29yOiBwb2ludGVyOyBmb250LXNpemU6IDE0cHg7XCJcbiAgICAgICAgPlxuICAgICAgICAgIERlbGV0ZSBTdGVwXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwidXNlci1pbnB1dC1zZWN0aW9uXCIgKm5nSWY9XCJzaG93VXNlcklucHV0RmllbGRpbkRlYnVnXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyIGNxYS1mbGV4IGNxYS1nYXAtMiBjcWEtbWItMlwiPlxuICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICBjbGFzcz1cImlucHV0LWZpZWxkXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlR5cGUgeW91ciByZXNwb25zZS4uLlwiXG4gICAgICAgICAgW25nTW9kZWxdPVwibWVzc2FnZVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25NZXNzYWdlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJvblNlbmRNZXNzYWdlKClcIlxuICAgICAgICAgIHJvd3M9XCIyXCJcbiAgICAgICAgICBhdXRvZm9jdXNcbiAgICAgICAgICBzdHlsZT1cImZsZXg6IDE7IHBhZGRpbmc6IDhweDsgYm9yZGVyLXJhZGl1czogNnB4OyBib3JkZXI6IDFweCBzb2xpZCAjRDFENURCOyBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOyBjb2xvcjogIzBBMEEwQTsgcmVzaXplOiBub25lO1wiXG4gICAgICAgID48L3RleHRhcmVhPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicHJvbXB0LWFjdGlvbnMgY3FhLWZsZXggY3FhLWdhcC0yIGNxYS1tYi0yXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImFjdGlvbi1idG4gcHJpbWFyeVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFtZXNzYWdlXCJcbiAgICAgICAgICAoY2xpY2spPVwib25VcGRhdGVTdGVwRGF0YSgncmVSdW4nLCAnbWV0YWRhdGEnKVwiXG4gICAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiA4cHggMTZweDsgYm9yZGVyLXJhZGl1czogNnB4OyBib3JkZXI6IG5vbmU7IGJhY2tncm91bmQtY29sb3I6ICMzRjQzRUU7IGNvbG9yOiB3aGl0ZTsgY3Vyc29yOiBwb2ludGVyOyBmb250LXNpemU6IDE0cHg7XCJcbiAgICAgICAgPlxuICAgICAgICAgIFVwZGF0ZSBhbmQgUmVydW5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImFjdGlvbi1idG4gcHJpbWFyeVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFtZXNzYWdlXCJcbiAgICAgICAgICAoY2xpY2spPVwib25VcGRhdGVTdGVwRGF0YSgnYWlBZ2VudCcsICdtZXRhZGF0YScpXCJcbiAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDhweCAxNnB4OyBib3JkZXItcmFkaXVzOiA2cHg7IGJvcmRlcjogbm9uZTsgYmFja2dyb3VuZC1jb2xvcjogIzNGNDNFRTsgY29sb3I6IHdoaXRlOyBjdXJzb3I6IHBvaW50ZXI7IGZvbnQtc2l6ZTogMTRweDtcIlxuICAgICAgICA+XG4gICAgICAgICAgQWRkIE5ldyBTdGVwcyBhbmQgUmVydW5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJjYW5jZWwtYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uU2hvd1VzZXJJbnB1dEZpZWxkaW5EZWJ1Z0NoYW5nZShmYWxzZSlcIlxuICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDhweCAxNnB4OyBib3JkZXItcmFkaXVzOiA2cHg7IGJvcmRlcjogMXB4IHNvbGlkICNEMUQ1REI7IGJhY2tncm91bmQtY29sb3I6IHdoaXRlOyBjdXJzb3I6IHBvaW50ZXI7IGZvbnQtc2l6ZTogMTRweDtcIlxuICAgICAgPlxuICAgICAgICBCYWNrXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBUZXN0IENhc2UgR3JvdXAgTGV2ZWwgQ29udmVyc2F0aW9uIElucHV0IFNlY3Rpb24gLS0+XG4gIDxkaXZcbiAgKm5nSWY9XCJzaG91bGRTaG93VGVzdENhc2VHcm91cFwiXG4gIGNsYXNzPVwiY29udmVyc2F0aW9uLWlucHV0LXNlY3Rpb24gY3FhLW10LTMgY3FhLXAtM1wiXG4+XG4gIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtanVzdGlmeS1iZXR3ZWVuIGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yXCI+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJyZW1haW5pbmdUaW1lJCB8IGFzeW5jIGFzIHJlbWFpbmluZ1RpbWVcIlxuICAgICAgY2xhc3M9XCJtaW5pLXRpbWVyLWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPHN2ZyBjbGFzcz1cIm1pbmktcHJvZ3Jlc3MtcmluZ1wiIHdpZHRoPVwiNDRcIiBoZWlnaHQ9XCI0NFwiPlxuICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgY2xhc3M9XCJtaW5pLXByb2dyZXNzLXJpbmdfX2NpcmNsZVwiXG4gICAgICAgICAgc3Ryb2tlPVwiIzNlOThjN1wiXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiNFwiXG4gICAgICAgICAgZmlsbD1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICByPVwiMjBcIlxuICAgICAgICAgIGN4PVwiMjJcIlxuICAgICAgICAgIGN5PVwiMjJcIlxuICAgICAgICAgIFtzdHlsZS5zdHJva2VEYXNoYXJyYXldPVwiY2lyY2xlQ2lyY3VtZmVyZW5jZVwiXG4gICAgICAgICAgW3N0eWxlLnN0cm9rZURhc2hvZmZzZXQucHhdPVwiZ2V0RGFzaE9mZnNldChyZW1haW5pbmdUaW1lKVwiXG4gICAgICAgIC8+XG4gICAgICA8L3N2Zz5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaW5pLXRpbWVyLXRleHRcIiBzdHlsZT1cImNvbG9yOiAjMzc0MTUxOyBmb250LXNpemU6IDEycHg7IGZvbnQtd2VpZ2h0OiA1MDA7XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWluaS10aW1lXCI+e3tcbiAgICAgICAgICBmb3JtYXRUaW1lKHJlbWFpbmluZ1RpbWUpXG4gICAgICAgIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMVwiIHN0eWxlPVwiZmxleDoxIDEgMDtcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCIhaXNMb2NhdG9yTm90RGV0ZWN0XCIgY2xhc3M9XCJjcWEtdGV4dC1tZCBjcWEtdGV4dC1bIzE2MTYxN10gY3FhLWZvbnQtbWVkaXVtIGNxYS1mb250LWludGVyXCI+RW50ZXIgdGhlIHRpbWVvdXQgZHVyYXRpb24gdG8gY29udGludWUgZXhlY3V0aW9uLjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1qdXN0aWZ5LWJldHdlZW4gY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTJcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgKm5nSWY9XCIhaXNMb2NhdG9yTm90RGV0ZWN0XCJcbiAgICAgICAgICBbbmdNb2RlbF09XCJtZXNzYWdlXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbk1lc3NhZ2VDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzSW5wdXREaXNhYmxlZFwiXG4gICAgICAgICAgW3R5cGVdPVwiaW5wdXRUeXBlXCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgc3R5bGU9XCJcbiAgICAgICAgICAgIGhlaWdodDogMzZweDtcbiAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICBwYWRkaW5nOiA5cHggMTNweDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNFMkUyRTM7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGO1xuICAgICAgICAgICAgY29sb3I6ICMwQTBBMEE7XG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4ycyBlYXNlLCBib3gtc2hhZG93IDAuMnMgZWFzZTtcbiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgICAgXCJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyLWNvbG9yXT1cImlzSW5wdXREaXNhYmxlZCA/ICcjRTVFN0VCJyA6ICcjRDFENURCJ1wiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiaXNJbnB1dERpc2FibGVkID8gJyNGOUZBRkInIDogJyNGRkZGRkYnXCJcbiAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiaXNJbnB1dERpc2FibGVkID8gJyM5Q0EzQUYnIDogJyMwQTBBMEEnXCJcbiAgICAgICAgICBbc3R5bGUuY3Vyc29yXT1cImlzSW5wdXREaXNhYmxlZCA/ICdub3QtYWxsb3dlZCcgOiAndGV4dCdcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJpbnB1dFBsYWNlaG9sZGVyXCJcbiAgICAgICAgICBvbmZvY3VzPVwiaWYgKCF0aGlzLmRpc2FibGVkKSB7IHRoaXMuc3R5bGUuYm9yZGVyQ29sb3I9JyMxNDQ3RTYnOyB0aGlzLnN0eWxlLmJveFNoYWRvdz0nMCAwIDAgM3B4IHJnYmEoNjMsIDY3LCAyMzgsIDAuMSknOyB9XCJcbiAgICAgICAgICBvbmJsdXI9XCJ0aGlzLnN0eWxlLmJvcmRlckNvbG9yPScjRDFENURCJzsgdGhpcy5zdHlsZS5ib3hTaGFkb3c9J25vbmUnO1wiXG4gICAgICAgIC8+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiaXNMb2NhdG9yTm90RGV0ZWN0XCJcbiAgICAgICAgICAoY2xpY2spPVwib25SZWRpcmVjdFRvQ0UoKVwiXG4gICAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYnRuXCJcbiAgICAgICAgICAgIHN0eWxlPVwiXG4gICAgICAgICAgICAgIHBhZGRpbmc6IDhweCAxNnB4O1xuICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNEMUQ1REI7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7XG4gICAgICAgICAgICAgIGNvbG9yOiAjMzc0MTUxO1xuICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzIGVhc2U7XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgb25tb3VzZW92ZXI9XCJ0aGlzLnN0eWxlLmJhY2tncm91bmRDb2xvcj0nI0Y5RkFGQidcIlxuICAgICAgICAgICAgb25tb3VzZW91dD1cInRoaXMuc3R5bGUuYmFja2dyb3VuZENvbG9yPScjRkZGRkZGJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgUmVjb3JkXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzUmVzdW1lRGlzYWJsZWRcIlxuICAgICAgICAgIGNsYXNzPVwiYnRuXCJcbiAgICAgICAgICAoY2xpY2spPVwib25TZW5kTWVzc2FnZSgpXCJcbiAgICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgICAgaGVpZ2h0OiAzNnB4O1xuICAgICAgICAgICAgcGFkZGluZzogOHB4IDE2cHg7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTQ0N0U2O1xuICAgICAgICAgICAgY29sb3I6ICNGRkZGRkY7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzIGVhc2U7XG4gICAgICAgICAgXCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJpc1Jlc3VtZURpc2FibGVkID8gJyNFMkUyRTMnIDogJyMxNDQ3RTYnXCJcbiAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiaXNSZXN1bWVEaXNhYmxlZCA/ICcjOUNBM0FGJyA6ICcjRkZGRkZGJ1wiXG4gICAgICAgICAgW3N0eWxlLmN1cnNvcl09XCJpc1Jlc3VtZURpc2FibGVkID8gJ25vdC1hbGxvd2VkJyA6ICdwb2ludGVyJ1wiXG4gICAgICAgICAgb25tb3VzZW92ZXI9XCJpZiAoIXRoaXMuZGlzYWJsZWQpIHRoaXMuc3R5bGUuYmFja2dyb3VuZENvbG9yPScjMEYzQ0JBJ1wiXG4gICAgICAgICAgb25tb3VzZW91dD1cImlmICghdGhpcy5kaXNhYmxlZCkgdGhpcy5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9JyMxNDQ3RTYnXCJcbiAgICAgICAgPlxuICAgICAgICAgIFJlc3VtZVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIFxuICAgXG4gIDwvZGl2PlxuPC9kaXY+XG48L2Rpdj4iXX0=
|
|
@@ -12746,10 +12746,10 @@ class LiveConversationComponent {
|
|
|
12746
12746
|
}
|
|
12747
12747
|
}
|
|
12748
12748
|
LiveConversationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: LiveConversationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12749
|
-
LiveConversationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: LiveConversationComponent, selector: "cqa-live-conversation", inputs: { conversation: "conversation", executionStatus: "executionStatus", stepFrom: "stepFrom", mode: "mode", stepId: "stepId", message: "message", remainingTime$: "remainingTime$", circleCircumference: "circleCircumference", showUserInputField: "showUserInputField", showUserInputFieldinDebug: "showUserInputFieldinDebug" }, outputs: { messageChange: "messageChange", sendMessage: "sendMessage", stopAgent: "stopAgent", stepAction: "stepAction", updateStepData: "updateStepData", redirectToCE: "redirectToCE", showUserInputFieldChange: "showUserInputFieldChange", showUserInputFieldinDebugChange: "showUserInputFieldinDebugChange" }, ngImport: i0, template: "<div class=\"cqa-ui-root\">\n <!-- Step Regular Mode Conversation Section -->\n <div\n *ngIf=\"shouldShowStepRegular\"\n class=\"conversation-section mt-2 p-3\"\n style=\"background-color: #FEF3C7; border-radius: 8px; border: 1px solid #FCD34D;\"\n >\n <div class=\"user-action-prompt\" *ngIf=\"!showUserInputField\">\n <div class=\"prompt-header d-flex align-items-center gap-2 mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 11V8\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 5H8.01\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <span style=\"font-weight: 600; color: #92400E;\">User input required to proceed</span>\n </div>\n <div class=\"prompt-actions d-flex gap-2\">\n <button\n class=\"action-btn primary\"\n (click)=\"onShowUserInputFieldChange(true)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Enter more details\n </button>\n <button\n class=\"action-btn secondary\"\n (click)=\"onStopAgent()\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Stop\n </button>\n </div>\n </div>\n\n <div class=\"user-input-section\" *ngIf=\"showUserInputField\">\n <div class=\"input-container d-flex gap-2 mb-2\">\n <textarea\n class=\"input-field\"\n placeholder=\"Type your response...\"\n [ngModel]=\"message\"\n (ngModelChange)=\"onMessageChange($event)\"\n (keyup.enter)=\"onSendMessage()\"\n rows=\"2\"\n autofocus\n style=\"flex: 1; padding: 8px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: #FFFFFF; color: #0A0A0A; resize: none;\"\n ></textarea>\n <button\n class=\"send-button\"\n [disabled]=\"!message\"\n (click)=\"onSendMessage()\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer;\"\n >\n Send\n </button>\n </div>\n <button\n class=\"cancel-button\"\n (click)=\"onShowUserInputFieldChange(false)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Back\n </button>\n </div>\n </div>\n\n <!-- Step Debug Mode Conversation Section -->\n <div\n *ngIf=\"shouldShowStepDebug\"\n class=\"conversation-section mt-2 p-3\"\n style=\"background-color: #FEF3C7; border-radius: 8px; border: 1px solid #FCD34D;\"\n >\n <div class=\"user-action-prompt\" *ngIf=\"!showUserInputFieldinDebug\">\n <div class=\"prompt-header d-flex align-items-center gap-2 mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 11V8\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 5H8.01\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <span style=\"font-weight: 600; color: #92400E;\">User input required to proceed</span>\n </div>\n <div class=\"prompt-actions d-flex gap-2\">\n <button\n class=\"action-btn primary\"\n (click)=\"onShowUserInputFieldinDebugChange(true)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Enter more details\n </button>\n <button\n class=\"action-btn secondary\"\n (click)=\"onStepAction('skip')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Skip Step\n </button>\n <button\n class=\"action-btn secondary\"\n (click)=\"onStepAction('skip_delete')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Delete Step\n </button>\n </div>\n </div>\n\n <div class=\"user-input-section\" *ngIf=\"showUserInputFieldinDebug\">\n <div class=\"input-container d-flex gap-2 mb-2\">\n <textarea\n class=\"input-field\"\n placeholder=\"Type your response...\"\n [ngModel]=\"message\"\n (ngModelChange)=\"onMessageChange($event)\"\n (keyup.enter)=\"onSendMessage()\"\n rows=\"2\"\n autofocus\n style=\"flex: 1; padding: 8px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: #FFFFFF; color: #0A0A0A; resize: none;\"\n ></textarea>\n </div>\n <div class=\"prompt-actions d-flex gap-2 mb-2\">\n <button\n class=\"action-btn primary\"\n [disabled]=\"!message\"\n (click)=\"onUpdateStepData('reRun', 'metadata')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Update and Rerun\n </button>\n <button\n class=\"action-btn primary\"\n [disabled]=\"!message\"\n (click)=\"onUpdateStepData('aiAgent', 'metadata')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Add New Steps and Rerun\n </button>\n </div>\n <button\n class=\"cancel-button\"\n (click)=\"onShowUserInputFieldinDebugChange(false)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Back\n </button>\n </div>\n </div>\n\n <!-- Test Case Group Level Conversation Input Section -->\n <div\n *ngIf=\"shouldShowTestCaseGroup\"\n class=\"conversation-input-section mt-3 p-3\"\n style=\"background-color: #EFF6FF; border-radius: 8px; border: 1px solid #BEDBFF;\"\n>\n <div class=\"d-flex justify-content-between align-items-center gap-2\">\n <div\n *ngIf=\"remainingTime$ | async as remainingTime\"\n class=\"mini-timer-container\"\n >\n <svg class=\"mini-progress-ring\" width=\"44\" height=\"44\">\n <circle\n class=\"mini-progress-ring__circle\"\n stroke=\"#3e98c7\"\n stroke-width=\"4\"\n fill=\"transparent\"\n r=\"20\"\n cx=\"22\"\n cy=\"22\"\n [style.strokeDasharray]=\"circleCircumference\"\n [style.strokeDashoffset.px]=\"getDashOffset(remainingTime)\"\n />\n </svg>\n <div class=\"mini-timer-text\" style=\"color: #374151; font-size: 12px; font-weight: 500;\">\n <span class=\"mini-time\">{{\n formatTime(remainingTime)\n }}</span>\n </div>\n </div>\n <input\n *ngIf=\"!isLocatorNotDetect\"\n [ngModel]=\"message\"\n (ngModelChange)=\"onMessageChange($event)\"\n [disabled]=\"isInputDisabled\"\n [type]=\"inputType\"\n class=\"form-control\"\n style=\"\n height: 36px;\n flex: 1;\n padding: 8px 12px;\n border-radius: 8px;\n border: 1px solid #D1D5DB;\n background-color: #FFFFFF;\n color: #0A0A0A;\n font-size: 14px;\n transition: border-color 0.2s ease, box-shadow 0.2s ease;\n outline: none;\n \"\n [style.border-color]=\"isInputDisabled ? '#E5E7EB' : '#D1D5DB'\"\n [style.background-color]=\"isInputDisabled ? '#F9FAFB' : '#FFFFFF'\"\n [style.color]=\"isInputDisabled ? '#9CA3AF' : '#0A0A0A'\"\n [style.cursor]=\"isInputDisabled ? 'not-allowed' : 'text'\"\n [placeholder]=\"inputPlaceholder\"\n onfocus=\"if (!this.disabled) { this.style.borderColor='#1447E6'; this.style.boxShadow='0 0 0 3px rgba(63, 67, 238, 0.1)'; }\"\n onblur=\"this.style.borderColor='#D1D5DB'; this.style.boxShadow='none';\"\n />\n <div\n *ngIf=\"isLocatorNotDetect\"\n (click)=\"onRedirectToCE()\"\n style=\"cursor: pointer;\"\n >\n <button\n class=\"btn\"\n style=\"\n padding: 8px 16px;\n border-radius: 8px;\n border: 1px solid #D1D5DB;\n background-color: #FFFFFF;\n color: #374151;\n cursor: pointer;\n font-weight: 500;\n font-size: 14px;\n transition: background-color 0.2s ease;\n \"\n onmouseover=\"this.style.backgroundColor='#F9FAFB'\"\n onmouseout=\"this.style.backgroundColor='#FFFFFF'\"\n >\n Record\n </button>\n </div>\n <button\n [disabled]=\"isResumeDisabled\"\n class=\"btn\"\n (click)=\"onSendMessage()\"\n style=\"\n height: 36px;\n padding: 8px 16px;\n border-radius: 8px;\n border: none;\n background-color: #1447E6;\n color: #FFFFFF;\n cursor: pointer;\n font-weight: 500;\n font-size: 14px;\n transition: background-color 0.2s ease;\n \"\n [style.background-color]=\"isResumeDisabled ? '#E2E2E3' : '#1447E6'\"\n [style.color]=\"isResumeDisabled ? '#9CA3AF' : '#FFFFFF'\"\n [style.cursor]=\"isResumeDisabled ? 'not-allowed' : 'pointer'\"\n onmouseover=\"if (!this.disabled) this.style.backgroundColor='#0F3CBA'\"\n onmouseout=\"if (!this.disabled) this.style.backgroundColor='#1447E6'\"\n >\n Resume\n </button>\n </div>\n</div>\n</div>", directives: [{ type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "async": i2$1.AsyncPipe } });
|
|
12749
|
+
LiveConversationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: LiveConversationComponent, selector: "cqa-live-conversation", inputs: { conversation: "conversation", executionStatus: "executionStatus", stepFrom: "stepFrom", mode: "mode", stepId: "stepId", message: "message", remainingTime$: "remainingTime$", circleCircumference: "circleCircumference", showUserInputField: "showUserInputField", showUserInputFieldinDebug: "showUserInputFieldinDebug" }, outputs: { messageChange: "messageChange", sendMessage: "sendMessage", stopAgent: "stopAgent", stepAction: "stepAction", updateStepData: "updateStepData", redirectToCE: "redirectToCE", showUserInputFieldChange: "showUserInputFieldChange", showUserInputFieldinDebugChange: "showUserInputFieldinDebugChange" }, ngImport: i0, template: "<div class=\"cqa-ui-root\">\n <!-- Step Regular Mode Conversation Section -->\n <div\n *ngIf=\"shouldShowStepRegular\"\n class=\"conversation-section cqa-mt-2 cqa-p-3\"\n style=\"background-color: #FEF3C7; border-radius: 8px; border: 1px solid #FCD34D;\"\n >\n <div class=\"user-action-prompt\" *ngIf=\"!showUserInputField\">\n <div class=\"prompt-header cqa-flex cqa-items-center cqa-gap-2 cqa-mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 11V8\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 5H8.01\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <span style=\"font-weight: 600; color: #92400E;\">User input required to proceed</span>\n </div>\n <div class=\"prompt-actions cqa-flex cqa-gap-2\">\n <button\n class=\"action-btn primary\"\n (click)=\"onShowUserInputFieldChange(true)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Enter more details\n </button>\n <button\n class=\"action-btn secondary\"\n (click)=\"onStopAgent()\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Stop\n </button>\n </div>\n </div>\n\n <div class=\"user-input-section\" *ngIf=\"showUserInputField\">\n <div class=\"input-container cqa-flex cqa-gap-2 cqa-mb-2\">\n <textarea\n class=\"input-field\"\n placeholder=\"Type your response...\"\n [ngModel]=\"message\"\n (ngModelChange)=\"onMessageChange($event)\"\n (keyup.enter)=\"onSendMessage()\"\n rows=\"2\"\n autofocus\n style=\"flex: 1; padding: 8px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: #FFFFFF; color: #0A0A0A; resize: none;\"\n ></textarea>\n <button\n class=\"send-button\"\n [disabled]=\"!message\"\n (click)=\"onSendMessage()\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer;\"\n >\n Send\n </button>\n </div>\n <button\n class=\"cancel-button\"\n (click)=\"onShowUserInputFieldChange(false)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Back\n </button>\n </div>\n </div>\n\n <!-- Step Debug Mode Conversation Section -->\n <div\n *ngIf=\"shouldShowStepDebug\"\n class=\"conversation-section cqa-mt-2 cqa-p-3\"\n style=\"background-color: #FEF3C7; border-radius: 8px; border: 1px solid #FCD34D;\"\n >\n <div class=\"user-action-prompt\" *ngIf=\"!showUserInputFieldinDebug\">\n <div class=\"prompt-header cqa-flex cqa-items-center cqa-gap-2 cqa-mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 11V8\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 5H8.01\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <span style=\"font-weight: 600; color: #92400E;\">User input required to proceed</span>\n </div>\n <div class=\"prompt-actions cqa-flex cqa-gap-2\">\n <button\n class=\"action-btn primary\"\n (click)=\"onShowUserInputFieldinDebugChange(true)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Enter more details\n </button>\n <button\n class=\"action-btn secondary\"\n (click)=\"onStepAction('skip')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Skip Step\n </button>\n <button\n class=\"action-btn secondary\"\n (click)=\"onStepAction('skip_delete')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Delete Step\n </button>\n </div>\n </div>\n\n <div class=\"user-input-section\" *ngIf=\"showUserInputFieldinDebug\">\n <div class=\"input-container cqa-flex cqa-gap-2 cqa-mb-2\">\n <textarea\n class=\"input-field\"\n placeholder=\"Type your response...\"\n [ngModel]=\"message\"\n (ngModelChange)=\"onMessageChange($event)\"\n (keyup.enter)=\"onSendMessage()\"\n rows=\"2\"\n autofocus\n style=\"flex: 1; padding: 8px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: #FFFFFF; color: #0A0A0A; resize: none;\"\n ></textarea>\n </div>\n <div class=\"prompt-actions cqa-flex cqa-gap-2 cqa-mb-2\">\n <button\n class=\"action-btn primary\"\n [disabled]=\"!message\"\n (click)=\"onUpdateStepData('reRun', 'metadata')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Update and Rerun\n </button>\n <button\n class=\"action-btn primary\"\n [disabled]=\"!message\"\n (click)=\"onUpdateStepData('aiAgent', 'metadata')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Add New Steps and Rerun\n </button>\n </div>\n <button\n class=\"cancel-button\"\n (click)=\"onShowUserInputFieldinDebugChange(false)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Back\n </button>\n </div>\n </div>\n\n <!-- Test Case Group Level Conversation Input Section -->\n <div\n *ngIf=\"shouldShowTestCaseGroup\"\n class=\"conversation-input-section cqa-mt-3 cqa-p-3\"\n>\n <div class=\"cqa-flex cqa-justify-between cqa-items-center cqa-gap-2\">\n <div\n *ngIf=\"remainingTime$ | async as remainingTime\"\n class=\"mini-timer-container\"\n >\n <svg class=\"mini-progress-ring\" width=\"44\" height=\"44\">\n <circle\n class=\"mini-progress-ring__circle\"\n stroke=\"#3e98c7\"\n stroke-width=\"4\"\n fill=\"transparent\"\n r=\"20\"\n cx=\"22\"\n cy=\"22\"\n [style.strokeDasharray]=\"circleCircumference\"\n [style.strokeDashoffset.px]=\"getDashOffset(remainingTime)\"\n />\n </svg>\n <div class=\"mini-timer-text\" style=\"color: #374151; font-size: 12px; font-weight: 500;\">\n <span class=\"mini-time\">{{\n formatTime(remainingTime)\n }}</span>\n </div>\n </div>\n\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1\" style=\"flex:1 1 0;\">\n <div *ngIf=\"!isLocatorNotDetect\" class=\"cqa-text-md cqa-text-[#161617] cqa-font-medium cqa-font-inter\">Enter the timeout duration to continue execution.</div>\n <div class=\"cqa-flex cqa-justify-between cqa-items-center cqa-gap-2\">\n <input\n *ngIf=\"!isLocatorNotDetect\"\n [ngModel]=\"message\"\n (ngModelChange)=\"onMessageChange($event)\"\n [disabled]=\"isInputDisabled\"\n [type]=\"inputType\"\n class=\"form-control\"\n style=\"\n height: 36px;\n flex: 1;\n padding: 9px 13px;\n border-radius: 5px;\n border: 1px solid #E2E2E3;\n background-color: #FFFFFF;\n color: #0A0A0A;\n font-size: 14px;\n transition: border-color 0.2s ease, box-shadow 0.2s ease;\n outline: none;\n \"\n [style.border-color]=\"isInputDisabled ? '#E5E7EB' : '#D1D5DB'\"\n [style.background-color]=\"isInputDisabled ? '#F9FAFB' : '#FFFFFF'\"\n [style.color]=\"isInputDisabled ? '#9CA3AF' : '#0A0A0A'\"\n [style.cursor]=\"isInputDisabled ? 'not-allowed' : 'text'\"\n [placeholder]=\"inputPlaceholder\"\n onfocus=\"if (!this.disabled) { this.style.borderColor='#1447E6'; this.style.boxShadow='0 0 0 3px rgba(63, 67, 238, 0.1)'; }\"\n onblur=\"this.style.borderColor='#D1D5DB'; this.style.boxShadow='none';\"\n />\n <div\n *ngIf=\"isLocatorNotDetect\"\n (click)=\"onRedirectToCE()\"\n style=\"cursor: pointer;\"\n >\n <button\n class=\"btn\"\n style=\"\n padding: 8px 16px;\n border-radius: 8px;\n border: 1px solid #D1D5DB;\n background-color: #FFFFFF;\n color: #374151;\n cursor: pointer;\n font-weight: 500;\n font-size: 14px;\n transition: background-color 0.2s ease;\n \"\n onmouseover=\"this.style.backgroundColor='#F9FAFB'\"\n onmouseout=\"this.style.backgroundColor='#FFFFFF'\"\n >\n Record\n </button>\n </div>\n <button\n [disabled]=\"isResumeDisabled\"\n class=\"btn\"\n (click)=\"onSendMessage()\"\n style=\"\n height: 36px;\n padding: 8px 16px;\n border-radius: 8px;\n border: none;\n background-color: #1447E6;\n color: #FFFFFF;\n cursor: pointer;\n font-weight: 500;\n font-size: 14px;\n transition: background-color 0.2s ease;\n \"\n [style.background-color]=\"isResumeDisabled ? '#E2E2E3' : '#1447E6'\"\n [style.color]=\"isResumeDisabled ? '#9CA3AF' : '#FFFFFF'\"\n [style.cursor]=\"isResumeDisabled ? 'not-allowed' : 'pointer'\"\n onmouseover=\"if (!this.disabled) this.style.backgroundColor='#0F3CBA'\"\n onmouseout=\"if (!this.disabled) this.style.backgroundColor='#1447E6'\"\n >\n Resume\n </button>\n </div>\n </div>\n \n \n </div>\n</div>\n</div>", directives: [{ type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "async": i2$1.AsyncPipe } });
|
|
12750
12750
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: LiveConversationComponent, decorators: [{
|
|
12751
12751
|
type: Component,
|
|
12752
|
-
args: [{ selector: 'cqa-live-conversation', template: "<div class=\"cqa-ui-root\">\n <!-- Step Regular Mode Conversation Section -->\n <div\n *ngIf=\"shouldShowStepRegular\"\n class=\"conversation-section mt-2 p-3\"\n style=\"background-color: #FEF3C7; border-radius: 8px; border: 1px solid #FCD34D;\"\n >\n <div class=\"user-action-prompt\" *ngIf=\"!showUserInputField\">\n <div class=\"prompt-header d-flex align-items-center gap-2 mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 11V8\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 5H8.01\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <span style=\"font-weight: 600; color: #92400E;\">User input required to proceed</span>\n </div>\n <div class=\"prompt-actions d-flex gap-2\">\n <button\n class=\"action-btn primary\"\n (click)=\"onShowUserInputFieldChange(true)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Enter more details\n </button>\n <button\n class=\"action-btn secondary\"\n (click)=\"onStopAgent()\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Stop\n </button>\n </div>\n </div>\n\n <div class=\"user-input-section\" *ngIf=\"showUserInputField\">\n <div class=\"input-container d-flex gap-2 mb-2\">\n <textarea\n class=\"input-field\"\n placeholder=\"Type your response...\"\n [ngModel]=\"message\"\n (ngModelChange)=\"onMessageChange($event)\"\n (keyup.enter)=\"onSendMessage()\"\n rows=\"2\"\n autofocus\n style=\"flex: 1; padding: 8px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: #FFFFFF; color: #0A0A0A; resize: none;\"\n ></textarea>\n <button\n class=\"send-button\"\n [disabled]=\"!message\"\n (click)=\"onSendMessage()\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer;\"\n >\n Send\n </button>\n </div>\n <button\n class=\"cancel-button\"\n (click)=\"onShowUserInputFieldChange(false)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Back\n </button>\n </div>\n </div>\n\n <!-- Step Debug Mode Conversation Section -->\n <div\n *ngIf=\"shouldShowStepDebug\"\n class=\"conversation-section mt-2 p-3\"\n style=\"background-color: #FEF3C7; border-radius: 8px; border: 1px solid #FCD34D;\"\n >\n <div class=\"user-action-prompt\" *ngIf=\"!showUserInputFieldinDebug\">\n <div class=\"prompt-header d-flex align-items-center gap-2 mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 11V8\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 5H8.01\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <span style=\"font-weight: 600; color: #92400E;\">User input required to proceed</span>\n </div>\n <div class=\"prompt-actions d-flex gap-2\">\n <button\n class=\"action-btn primary\"\n (click)=\"onShowUserInputFieldinDebugChange(true)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Enter more details\n </button>\n <button\n class=\"action-btn secondary\"\n (click)=\"onStepAction('skip')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Skip Step\n </button>\n <button\n class=\"action-btn secondary\"\n (click)=\"onStepAction('skip_delete')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Delete Step\n </button>\n </div>\n </div>\n\n <div class=\"user-input-section\" *ngIf=\"showUserInputFieldinDebug\">\n <div class=\"input-container d-flex gap-2 mb-2\">\n <textarea\n class=\"input-field\"\n placeholder=\"Type your response...\"\n [ngModel]=\"message\"\n (ngModelChange)=\"onMessageChange($event)\"\n (keyup.enter)=\"onSendMessage()\"\n rows=\"2\"\n autofocus\n style=\"flex: 1; padding: 8px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: #FFFFFF; color: #0A0A0A; resize: none;\"\n ></textarea>\n </div>\n <div class=\"prompt-actions d-flex gap-2 mb-2\">\n <button\n class=\"action-btn primary\"\n [disabled]=\"!message\"\n (click)=\"onUpdateStepData('reRun', 'metadata')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Update and Rerun\n </button>\n <button\n class=\"action-btn primary\"\n [disabled]=\"!message\"\n (click)=\"onUpdateStepData('aiAgent', 'metadata')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Add New Steps and Rerun\n </button>\n </div>\n <button\n class=\"cancel-button\"\n (click)=\"onShowUserInputFieldinDebugChange(false)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Back\n </button>\n </div>\n </div>\n\n <!-- Test Case Group Level Conversation Input Section -->\n <div\n *ngIf=\"shouldShowTestCaseGroup\"\n class=\"conversation-input-section mt-3 p-3\"\n style=\"background-color: #EFF6FF; border-radius: 8px; border: 1px solid #BEDBFF;\"\n>\n <div class=\"d-flex justify-content-between align-items-center gap-2\">\n <div\n *ngIf=\"remainingTime$ | async as remainingTime\"\n class=\"mini-timer-container\"\n >\n <svg class=\"mini-progress-ring\" width=\"44\" height=\"44\">\n <circle\n class=\"mini-progress-ring__circle\"\n stroke=\"#3e98c7\"\n stroke-width=\"4\"\n fill=\"transparent\"\n r=\"20\"\n cx=\"22\"\n cy=\"22\"\n [style.strokeDasharray]=\"circleCircumference\"\n [style.strokeDashoffset.px]=\"getDashOffset(remainingTime)\"\n />\n </svg>\n <div class=\"mini-timer-text\" style=\"color: #374151; font-size: 12px; font-weight: 500;\">\n <span class=\"mini-time\">{{\n formatTime(remainingTime)\n }}</span>\n </div>\n </div>\n <input\n *ngIf=\"!isLocatorNotDetect\"\n [ngModel]=\"message\"\n (ngModelChange)=\"onMessageChange($event)\"\n [disabled]=\"isInputDisabled\"\n [type]=\"inputType\"\n class=\"form-control\"\n style=\"\n height: 36px;\n flex: 1;\n padding: 8px 12px;\n border-radius: 8px;\n border: 1px solid #D1D5DB;\n background-color: #FFFFFF;\n color: #0A0A0A;\n font-size: 14px;\n transition: border-color 0.2s ease, box-shadow 0.2s ease;\n outline: none;\n \"\n [style.border-color]=\"isInputDisabled ? '#E5E7EB' : '#D1D5DB'\"\n [style.background-color]=\"isInputDisabled ? '#F9FAFB' : '#FFFFFF'\"\n [style.color]=\"isInputDisabled ? '#9CA3AF' : '#0A0A0A'\"\n [style.cursor]=\"isInputDisabled ? 'not-allowed' : 'text'\"\n [placeholder]=\"inputPlaceholder\"\n onfocus=\"if (!this.disabled) { this.style.borderColor='#1447E6'; this.style.boxShadow='0 0 0 3px rgba(63, 67, 238, 0.1)'; }\"\n onblur=\"this.style.borderColor='#D1D5DB'; this.style.boxShadow='none';\"\n />\n <div\n *ngIf=\"isLocatorNotDetect\"\n (click)=\"onRedirectToCE()\"\n style=\"cursor: pointer;\"\n >\n <button\n class=\"btn\"\n style=\"\n padding: 8px 16px;\n border-radius: 8px;\n border: 1px solid #D1D5DB;\n background-color: #FFFFFF;\n color: #374151;\n cursor: pointer;\n font-weight: 500;\n font-size: 14px;\n transition: background-color 0.2s ease;\n \"\n onmouseover=\"this.style.backgroundColor='#F9FAFB'\"\n onmouseout=\"this.style.backgroundColor='#FFFFFF'\"\n >\n Record\n </button>\n </div>\n <button\n [disabled]=\"isResumeDisabled\"\n class=\"btn\"\n (click)=\"onSendMessage()\"\n style=\"\n height: 36px;\n padding: 8px 16px;\n border-radius: 8px;\n border: none;\n background-color: #1447E6;\n color: #FFFFFF;\n cursor: pointer;\n font-weight: 500;\n font-size: 14px;\n transition: background-color 0.2s ease;\n \"\n [style.background-color]=\"isResumeDisabled ? '#E2E2E3' : '#1447E6'\"\n [style.color]=\"isResumeDisabled ? '#9CA3AF' : '#FFFFFF'\"\n [style.cursor]=\"isResumeDisabled ? 'not-allowed' : 'pointer'\"\n onmouseover=\"if (!this.disabled) this.style.backgroundColor='#0F3CBA'\"\n onmouseout=\"if (!this.disabled) this.style.backgroundColor='#1447E6'\"\n >\n Resume\n </button>\n </div>\n</div>\n</div>", styles: [] }]
|
|
12752
|
+
args: [{ selector: 'cqa-live-conversation', template: "<div class=\"cqa-ui-root\">\n <!-- Step Regular Mode Conversation Section -->\n <div\n *ngIf=\"shouldShowStepRegular\"\n class=\"conversation-section cqa-mt-2 cqa-p-3\"\n style=\"background-color: #FEF3C7; border-radius: 8px; border: 1px solid #FCD34D;\"\n >\n <div class=\"user-action-prompt\" *ngIf=\"!showUserInputField\">\n <div class=\"prompt-header cqa-flex cqa-items-center cqa-gap-2 cqa-mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 11V8\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 5H8.01\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <span style=\"font-weight: 600; color: #92400E;\">User input required to proceed</span>\n </div>\n <div class=\"prompt-actions cqa-flex cqa-gap-2\">\n <button\n class=\"action-btn primary\"\n (click)=\"onShowUserInputFieldChange(true)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Enter more details\n </button>\n <button\n class=\"action-btn secondary\"\n (click)=\"onStopAgent()\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Stop\n </button>\n </div>\n </div>\n\n <div class=\"user-input-section\" *ngIf=\"showUserInputField\">\n <div class=\"input-container cqa-flex cqa-gap-2 cqa-mb-2\">\n <textarea\n class=\"input-field\"\n placeholder=\"Type your response...\"\n [ngModel]=\"message\"\n (ngModelChange)=\"onMessageChange($event)\"\n (keyup.enter)=\"onSendMessage()\"\n rows=\"2\"\n autofocus\n style=\"flex: 1; padding: 8px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: #FFFFFF; color: #0A0A0A; resize: none;\"\n ></textarea>\n <button\n class=\"send-button\"\n [disabled]=\"!message\"\n (click)=\"onSendMessage()\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer;\"\n >\n Send\n </button>\n </div>\n <button\n class=\"cancel-button\"\n (click)=\"onShowUserInputFieldChange(false)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Back\n </button>\n </div>\n </div>\n\n <!-- Step Debug Mode Conversation Section -->\n <div\n *ngIf=\"shouldShowStepDebug\"\n class=\"conversation-section cqa-mt-2 cqa-p-3\"\n style=\"background-color: #FEF3C7; border-radius: 8px; border: 1px solid #FCD34D;\"\n >\n <div class=\"user-action-prompt\" *ngIf=\"!showUserInputFieldinDebug\">\n <div class=\"prompt-header cqa-flex cqa-items-center cqa-gap-2 cqa-mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 11V8\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 5H8.01\" stroke=\"#92400E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <span style=\"font-weight: 600; color: #92400E;\">User input required to proceed</span>\n </div>\n <div class=\"prompt-actions cqa-flex cqa-gap-2\">\n <button\n class=\"action-btn primary\"\n (click)=\"onShowUserInputFieldinDebugChange(true)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Enter more details\n </button>\n <button\n class=\"action-btn secondary\"\n (click)=\"onStepAction('skip')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Skip Step\n </button>\n <button\n class=\"action-btn secondary\"\n (click)=\"onStepAction('skip_delete')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Delete Step\n </button>\n </div>\n </div>\n\n <div class=\"user-input-section\" *ngIf=\"showUserInputFieldinDebug\">\n <div class=\"input-container cqa-flex cqa-gap-2 cqa-mb-2\">\n <textarea\n class=\"input-field\"\n placeholder=\"Type your response...\"\n [ngModel]=\"message\"\n (ngModelChange)=\"onMessageChange($event)\"\n (keyup.enter)=\"onSendMessage()\"\n rows=\"2\"\n autofocus\n style=\"flex: 1; padding: 8px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: #FFFFFF; color: #0A0A0A; resize: none;\"\n ></textarea>\n </div>\n <div class=\"prompt-actions cqa-flex cqa-gap-2 cqa-mb-2\">\n <button\n class=\"action-btn primary\"\n [disabled]=\"!message\"\n (click)=\"onUpdateStepData('reRun', 'metadata')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Update and Rerun\n </button>\n <button\n class=\"action-btn primary\"\n [disabled]=\"!message\"\n (click)=\"onUpdateStepData('aiAgent', 'metadata')\"\n style=\"padding: 8px 16px; border-radius: 6px; border: none; background-color: #3F43EE; color: white; cursor: pointer; font-size: 14px;\"\n >\n Add New Steps and Rerun\n </button>\n </div>\n <button\n class=\"cancel-button\"\n (click)=\"onShowUserInputFieldinDebugChange(false)\"\n style=\"padding: 8px 16px; border-radius: 6px; border: 1px solid #D1D5DB; background-color: white; cursor: pointer; font-size: 14px;\"\n >\n Back\n </button>\n </div>\n </div>\n\n <!-- Test Case Group Level Conversation Input Section -->\n <div\n *ngIf=\"shouldShowTestCaseGroup\"\n class=\"conversation-input-section cqa-mt-3 cqa-p-3\"\n>\n <div class=\"cqa-flex cqa-justify-between cqa-items-center cqa-gap-2\">\n <div\n *ngIf=\"remainingTime$ | async as remainingTime\"\n class=\"mini-timer-container\"\n >\n <svg class=\"mini-progress-ring\" width=\"44\" height=\"44\">\n <circle\n class=\"mini-progress-ring__circle\"\n stroke=\"#3e98c7\"\n stroke-width=\"4\"\n fill=\"transparent\"\n r=\"20\"\n cx=\"22\"\n cy=\"22\"\n [style.strokeDasharray]=\"circleCircumference\"\n [style.strokeDashoffset.px]=\"getDashOffset(remainingTime)\"\n />\n </svg>\n <div class=\"mini-timer-text\" style=\"color: #374151; font-size: 12px; font-weight: 500;\">\n <span class=\"mini-time\">{{\n formatTime(remainingTime)\n }}</span>\n </div>\n </div>\n\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1\" style=\"flex:1 1 0;\">\n <div *ngIf=\"!isLocatorNotDetect\" class=\"cqa-text-md cqa-text-[#161617] cqa-font-medium cqa-font-inter\">Enter the timeout duration to continue execution.</div>\n <div class=\"cqa-flex cqa-justify-between cqa-items-center cqa-gap-2\">\n <input\n *ngIf=\"!isLocatorNotDetect\"\n [ngModel]=\"message\"\n (ngModelChange)=\"onMessageChange($event)\"\n [disabled]=\"isInputDisabled\"\n [type]=\"inputType\"\n class=\"form-control\"\n style=\"\n height: 36px;\n flex: 1;\n padding: 9px 13px;\n border-radius: 5px;\n border: 1px solid #E2E2E3;\n background-color: #FFFFFF;\n color: #0A0A0A;\n font-size: 14px;\n transition: border-color 0.2s ease, box-shadow 0.2s ease;\n outline: none;\n \"\n [style.border-color]=\"isInputDisabled ? '#E5E7EB' : '#D1D5DB'\"\n [style.background-color]=\"isInputDisabled ? '#F9FAFB' : '#FFFFFF'\"\n [style.color]=\"isInputDisabled ? '#9CA3AF' : '#0A0A0A'\"\n [style.cursor]=\"isInputDisabled ? 'not-allowed' : 'text'\"\n [placeholder]=\"inputPlaceholder\"\n onfocus=\"if (!this.disabled) { this.style.borderColor='#1447E6'; this.style.boxShadow='0 0 0 3px rgba(63, 67, 238, 0.1)'; }\"\n onblur=\"this.style.borderColor='#D1D5DB'; this.style.boxShadow='none';\"\n />\n <div\n *ngIf=\"isLocatorNotDetect\"\n (click)=\"onRedirectToCE()\"\n style=\"cursor: pointer;\"\n >\n <button\n class=\"btn\"\n style=\"\n padding: 8px 16px;\n border-radius: 8px;\n border: 1px solid #D1D5DB;\n background-color: #FFFFFF;\n color: #374151;\n cursor: pointer;\n font-weight: 500;\n font-size: 14px;\n transition: background-color 0.2s ease;\n \"\n onmouseover=\"this.style.backgroundColor='#F9FAFB'\"\n onmouseout=\"this.style.backgroundColor='#FFFFFF'\"\n >\n Record\n </button>\n </div>\n <button\n [disabled]=\"isResumeDisabled\"\n class=\"btn\"\n (click)=\"onSendMessage()\"\n style=\"\n height: 36px;\n padding: 8px 16px;\n border-radius: 8px;\n border: none;\n background-color: #1447E6;\n color: #FFFFFF;\n cursor: pointer;\n font-weight: 500;\n font-size: 14px;\n transition: background-color 0.2s ease;\n \"\n [style.background-color]=\"isResumeDisabled ? '#E2E2E3' : '#1447E6'\"\n [style.color]=\"isResumeDisabled ? '#9CA3AF' : '#FFFFFF'\"\n [style.cursor]=\"isResumeDisabled ? 'not-allowed' : 'pointer'\"\n onmouseover=\"if (!this.disabled) this.style.backgroundColor='#0F3CBA'\"\n onmouseout=\"if (!this.disabled) this.style.backgroundColor='#1447E6'\"\n >\n Resume\n </button>\n </div>\n </div>\n \n \n </div>\n</div>\n</div>", styles: [] }]
|
|
12753
12753
|
}], propDecorators: { conversation: [{
|
|
12754
12754
|
type: Input
|
|
12755
12755
|
}], executionStatus: [{
|