valtech-components 2.0.938 → 2.0.939

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.
@@ -248,11 +248,11 @@ export class ContentReactionComponent {
248
248
  return this.i18n.t(key, 'ContentReaction') || translations[key] || key;
249
249
  }
250
250
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ContentReactionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
251
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ContentReactionComponent, isStandalone: true, selector: "val-content-reaction", inputs: { props: "props" }, outputs: { reactionSubmit: "reactionSubmit", reactionChange: "reactionChange" }, usesOnChanges: true, ngImport: i0, template: "@if (isConfigured()) {\n<div class=\"content-reaction\" [class.disabled]=\"resolvedProps().disabled\" [class.readonly]=\"resolvedProps().readonly\">\n <!-- Loading inicial -->\n @if (state().isLoading && !state().selectedValue) {\n <div class=\"loading-container\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @else {\n <!-- Pregunta -->\n <p class=\"question\">\n {{ state().selectedValue === 'negative' ? t('negativeFeedbackTitle') : resolvedProps().question }}\n </p>\n\n <!-- Botones de reacci\u00F3n -->\n <div class=\"reaction-buttons\">\n <ion-button\n [fill]=\"isSelected('positive') ? 'solid' : 'outline'\"\n shape=\"round\"\n color=\"dark\"\n [attr.aria-pressed]=\"isSelected('positive')\"\n [disabled]=\"resolvedProps().disabled || resolvedProps().readonly\"\n (click)=\"selectReaction('positive')\"\n >\n {{ t('positiveLabel') }}\n </ion-button>\n <ion-button\n [fill]=\"isSelected('negative') ? 'solid' : 'outline'\"\n shape=\"round\"\n color=\"dark\"\n [attr.aria-pressed]=\"isSelected('negative')\"\n [disabled]=\"resolvedProps().disabled || resolvedProps().readonly\"\n (click)=\"selectReaction('negative')\"\n >\n {{ t('negativeLabel') }}\n </ion-button>\n </div>\n\n <!-- Campo de comentario (solo si hay selecci\u00F3n) -->\n @if (showCommentField()) {\n <div class=\"comment-section\">\n <ion-textarea\n [value]=\"state().comment\"\n [placeholder]=\"resolvedProps().commentPlaceholder\"\n [maxlength]=\"resolvedProps().maxCommentLength\"\n [disabled]=\"resolvedProps().disabled\"\n [rows]=\"3\"\n class=\"comment-textarea\"\n (ionInput)=\"updateComment($event)\"\n ></ion-textarea>\n <span class=\"char-count\"> {{ state().comment.length }}/{{ resolvedProps().maxCommentLength }} </span>\n </div>\n }\n\n <!-- Bot\u00F3n de env\u00EDo -->\n @if (state().selectedValue && !state().isSubmitted) {\n <ion-button expand=\"block\" shape=\"round\" [disabled]=\"!canSubmit()\" (click)=\"submitReaction()\" class=\"submit-button\">\n @if (state().isLoading) {\n <ion-spinner name=\"crescent\"></ion-spinner>\n } @else { {{ state().hadPreviousReaction ? t('update') : t('submit') }} }\n </ion-button>\n }\n\n <!-- Mensaje de confirmaci\u00F3n -->\n @if (state().isSubmitted) {\n <p class=\"submitted-message\">{{ t('thankYou') }}</p>\n }\n\n <!-- Error -->\n @if (state().error) {\n <p class=\"error-message\">{{ state().error }}</p>\n } }\n</div>\n}\n", styles: [":host{display:block}.content-reaction{padding:16px;text-align:center}.content-reaction.disabled{opacity:.6;pointer-events:none}.content-reaction.readonly{pointer-events:none}.question{font-size:17px;font-weight:700;color:var(--ion-color-dark);margin:0 0 16px}.reaction-buttons{display:flex;justify-content:center;gap:12px;margin-bottom:20px}.comment-section{margin-top:16px;animation:slideIn .3s ease-out}.comment-section .comment-textarea{--background: transparent;--border-radius: 8px;--padding-start: 12px;--padding-end: 12px;width:100%}.comment-section .char-count{display:block;text-align:right;font-size:12px;color:var(--ion-color-medium);margin-top:4px}.submit-button{margin-top:16px;--border-radius: 8px}.submitted-message{margin-top:16px;color:var(--ion-color-success);font-weight:500;animation:fadeIn .3s ease-out}.error-message{margin-top:8px;color:var(--ion-color-danger);font-size:14px}.loading-container{display:flex;justify-content:center;padding:20px}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonTextarea, selector: "ion-textarea", inputs: ["autoGrow", "autocapitalize", "autofocus", "clearOnEdit", "color", "cols", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "maxlength", "minlength", "mode", "name", "placeholder", "readonly", "required", "rows", "shape", "spellcheck", "value", "wrap"] }] }); }
251
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ContentReactionComponent, isStandalone: true, selector: "val-content-reaction", inputs: { props: "props" }, outputs: { reactionSubmit: "reactionSubmit", reactionChange: "reactionChange" }, usesOnChanges: true, ngImport: i0, template: "@if (isConfigured()) {\n<div class=\"content-reaction\" [class.disabled]=\"resolvedProps().disabled\" [class.readonly]=\"resolvedProps().readonly\">\n <!-- Loading inicial -->\n @if (state().isLoading && !state().selectedValue) {\n <div class=\"loading-container\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @else {\n <!-- Pregunta -->\n <p class=\"question\">\n {{ state().selectedValue === 'negative' ? t('negativeFeedbackTitle') : resolvedProps().question }}\n </p>\n\n <!-- Botones de reacci\u00F3n -->\n <div class=\"reaction-buttons\">\n <ion-button\n [fill]=\"isSelected('positive') ? 'solid' : 'outline'\"\n shape=\"round\"\n color=\"dark\"\n [attr.aria-pressed]=\"isSelected('positive')\"\n [disabled]=\"resolvedProps().disabled || resolvedProps().readonly\"\n (click)=\"selectReaction('positive')\"\n >\n {{ t('positiveLabel') }}\n </ion-button>\n <ion-button\n [fill]=\"isSelected('negative') ? 'solid' : 'outline'\"\n shape=\"round\"\n color=\"dark\"\n [attr.aria-pressed]=\"isSelected('negative')\"\n [disabled]=\"resolvedProps().disabled || resolvedProps().readonly\"\n (click)=\"selectReaction('negative')\"\n >\n {{ t('negativeLabel') }}\n </ion-button>\n </div>\n\n <!-- Campo de comentario (solo si hay selecci\u00F3n) -->\n @if (showCommentField()) {\n <div class=\"comment-section\">\n <ion-textarea\n [value]=\"state().comment\"\n [placeholder]=\"resolvedProps().commentPlaceholder\"\n [maxlength]=\"resolvedProps().maxCommentLength\"\n [disabled]=\"resolvedProps().disabled\"\n [rows]=\"3\"\n class=\"comment-textarea\"\n (ionInput)=\"updateComment($event)\"\n ></ion-textarea>\n <span class=\"char-count\"> {{ state().comment.length }}/{{ resolvedProps().maxCommentLength }} </span>\n </div>\n }\n\n <!-- Bot\u00F3n de env\u00EDo -->\n @if (state().selectedValue && !state().isSubmitted) {\n <ion-button expand=\"block\" shape=\"round\" [disabled]=\"!canSubmit()\" (click)=\"submitReaction()\" class=\"submit-button\">\n @if (state().isLoading) {\n <ion-spinner name=\"crescent\"></ion-spinner>\n } @else { {{ state().hadPreviousReaction ? t('update') : t('submit') }} }\n </ion-button>\n }\n\n <!-- Mensaje de confirmaci\u00F3n -->\n @if (state().isSubmitted) {\n <p class=\"submitted-message\">{{ t('thankYou') }}</p>\n }\n\n <!-- Error -->\n @if (state().error) {\n <p class=\"error-message\">{{ state().error }}</p>\n } }\n</div>\n}\n", styles: [":host{display:block}.content-reaction{padding:16px;text-align:center}.content-reaction.disabled{opacity:.6;pointer-events:none}.content-reaction.readonly{pointer-events:none}.question{font-size:17px;font-weight:700;color:var(--ion-color-dark);margin:0 0 16px}.reaction-buttons{display:flex;justify-content:center;gap:12px;margin-bottom:20px}.comment-section{margin-top:16px;animation:slideIn .3s ease-out}.comment-section .comment-textarea{--background: transparent;--border-radius: 8px;--padding-start: 12px;--padding-end: 12px;width:100%}.comment-section .char-count{display:block;text-align:right;font-size:12px;color:var(--ion-color-medium);margin-top:4px}.submit-button{margin-top:16px}.submitted-message{margin-top:16px;color:var(--ion-color-success);font-weight:500;animation:fadeIn .3s ease-out}.error-message{margin-top:8px;color:var(--ion-color-danger);font-size:14px}.loading-container{display:flex;justify-content:center;padding:20px}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonTextarea, selector: "ion-textarea", inputs: ["autoGrow", "autocapitalize", "autofocus", "clearOnEdit", "color", "cols", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "maxlength", "minlength", "mode", "name", "placeholder", "readonly", "required", "rows", "shape", "spellcheck", "value", "wrap"] }] }); }
252
252
  }
253
253
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ContentReactionComponent, decorators: [{
254
254
  type: Component,
255
- args: [{ selector: 'val-content-reaction', standalone: true, imports: [CommonModule, FormsModule, IonButton, IonSpinner, IonTextarea], template: "@if (isConfigured()) {\n<div class=\"content-reaction\" [class.disabled]=\"resolvedProps().disabled\" [class.readonly]=\"resolvedProps().readonly\">\n <!-- Loading inicial -->\n @if (state().isLoading && !state().selectedValue) {\n <div class=\"loading-container\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @else {\n <!-- Pregunta -->\n <p class=\"question\">\n {{ state().selectedValue === 'negative' ? t('negativeFeedbackTitle') : resolvedProps().question }}\n </p>\n\n <!-- Botones de reacci\u00F3n -->\n <div class=\"reaction-buttons\">\n <ion-button\n [fill]=\"isSelected('positive') ? 'solid' : 'outline'\"\n shape=\"round\"\n color=\"dark\"\n [attr.aria-pressed]=\"isSelected('positive')\"\n [disabled]=\"resolvedProps().disabled || resolvedProps().readonly\"\n (click)=\"selectReaction('positive')\"\n >\n {{ t('positiveLabel') }}\n </ion-button>\n <ion-button\n [fill]=\"isSelected('negative') ? 'solid' : 'outline'\"\n shape=\"round\"\n color=\"dark\"\n [attr.aria-pressed]=\"isSelected('negative')\"\n [disabled]=\"resolvedProps().disabled || resolvedProps().readonly\"\n (click)=\"selectReaction('negative')\"\n >\n {{ t('negativeLabel') }}\n </ion-button>\n </div>\n\n <!-- Campo de comentario (solo si hay selecci\u00F3n) -->\n @if (showCommentField()) {\n <div class=\"comment-section\">\n <ion-textarea\n [value]=\"state().comment\"\n [placeholder]=\"resolvedProps().commentPlaceholder\"\n [maxlength]=\"resolvedProps().maxCommentLength\"\n [disabled]=\"resolvedProps().disabled\"\n [rows]=\"3\"\n class=\"comment-textarea\"\n (ionInput)=\"updateComment($event)\"\n ></ion-textarea>\n <span class=\"char-count\"> {{ state().comment.length }}/{{ resolvedProps().maxCommentLength }} </span>\n </div>\n }\n\n <!-- Bot\u00F3n de env\u00EDo -->\n @if (state().selectedValue && !state().isSubmitted) {\n <ion-button expand=\"block\" shape=\"round\" [disabled]=\"!canSubmit()\" (click)=\"submitReaction()\" class=\"submit-button\">\n @if (state().isLoading) {\n <ion-spinner name=\"crescent\"></ion-spinner>\n } @else { {{ state().hadPreviousReaction ? t('update') : t('submit') }} }\n </ion-button>\n }\n\n <!-- Mensaje de confirmaci\u00F3n -->\n @if (state().isSubmitted) {\n <p class=\"submitted-message\">{{ t('thankYou') }}</p>\n }\n\n <!-- Error -->\n @if (state().error) {\n <p class=\"error-message\">{{ state().error }}</p>\n } }\n</div>\n}\n", styles: [":host{display:block}.content-reaction{padding:16px;text-align:center}.content-reaction.disabled{opacity:.6;pointer-events:none}.content-reaction.readonly{pointer-events:none}.question{font-size:17px;font-weight:700;color:var(--ion-color-dark);margin:0 0 16px}.reaction-buttons{display:flex;justify-content:center;gap:12px;margin-bottom:20px}.comment-section{margin-top:16px;animation:slideIn .3s ease-out}.comment-section .comment-textarea{--background: transparent;--border-radius: 8px;--padding-start: 12px;--padding-end: 12px;width:100%}.comment-section .char-count{display:block;text-align:right;font-size:12px;color:var(--ion-color-medium);margin-top:4px}.submit-button{margin-top:16px;--border-radius: 8px}.submitted-message{margin-top:16px;color:var(--ion-color-success);font-weight:500;animation:fadeIn .3s ease-out}.error-message{margin-top:8px;color:var(--ion-color-danger);font-size:14px}.loading-container{display:flex;justify-content:center;padding:20px}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}\n"] }]
255
+ args: [{ selector: 'val-content-reaction', standalone: true, imports: [CommonModule, FormsModule, IonButton, IonSpinner, IonTextarea], template: "@if (isConfigured()) {\n<div class=\"content-reaction\" [class.disabled]=\"resolvedProps().disabled\" [class.readonly]=\"resolvedProps().readonly\">\n <!-- Loading inicial -->\n @if (state().isLoading && !state().selectedValue) {\n <div class=\"loading-container\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @else {\n <!-- Pregunta -->\n <p class=\"question\">\n {{ state().selectedValue === 'negative' ? t('negativeFeedbackTitle') : resolvedProps().question }}\n </p>\n\n <!-- Botones de reacci\u00F3n -->\n <div class=\"reaction-buttons\">\n <ion-button\n [fill]=\"isSelected('positive') ? 'solid' : 'outline'\"\n shape=\"round\"\n color=\"dark\"\n [attr.aria-pressed]=\"isSelected('positive')\"\n [disabled]=\"resolvedProps().disabled || resolvedProps().readonly\"\n (click)=\"selectReaction('positive')\"\n >\n {{ t('positiveLabel') }}\n </ion-button>\n <ion-button\n [fill]=\"isSelected('negative') ? 'solid' : 'outline'\"\n shape=\"round\"\n color=\"dark\"\n [attr.aria-pressed]=\"isSelected('negative')\"\n [disabled]=\"resolvedProps().disabled || resolvedProps().readonly\"\n (click)=\"selectReaction('negative')\"\n >\n {{ t('negativeLabel') }}\n </ion-button>\n </div>\n\n <!-- Campo de comentario (solo si hay selecci\u00F3n) -->\n @if (showCommentField()) {\n <div class=\"comment-section\">\n <ion-textarea\n [value]=\"state().comment\"\n [placeholder]=\"resolvedProps().commentPlaceholder\"\n [maxlength]=\"resolvedProps().maxCommentLength\"\n [disabled]=\"resolvedProps().disabled\"\n [rows]=\"3\"\n class=\"comment-textarea\"\n (ionInput)=\"updateComment($event)\"\n ></ion-textarea>\n <span class=\"char-count\"> {{ state().comment.length }}/{{ resolvedProps().maxCommentLength }} </span>\n </div>\n }\n\n <!-- Bot\u00F3n de env\u00EDo -->\n @if (state().selectedValue && !state().isSubmitted) {\n <ion-button expand=\"block\" shape=\"round\" [disabled]=\"!canSubmit()\" (click)=\"submitReaction()\" class=\"submit-button\">\n @if (state().isLoading) {\n <ion-spinner name=\"crescent\"></ion-spinner>\n } @else { {{ state().hadPreviousReaction ? t('update') : t('submit') }} }\n </ion-button>\n }\n\n <!-- Mensaje de confirmaci\u00F3n -->\n @if (state().isSubmitted) {\n <p class=\"submitted-message\">{{ t('thankYou') }}</p>\n }\n\n <!-- Error -->\n @if (state().error) {\n <p class=\"error-message\">{{ state().error }}</p>\n } }\n</div>\n}\n", styles: [":host{display:block}.content-reaction{padding:16px;text-align:center}.content-reaction.disabled{opacity:.6;pointer-events:none}.content-reaction.readonly{pointer-events:none}.question{font-size:17px;font-weight:700;color:var(--ion-color-dark);margin:0 0 16px}.reaction-buttons{display:flex;justify-content:center;gap:12px;margin-bottom:20px}.comment-section{margin-top:16px;animation:slideIn .3s ease-out}.comment-section .comment-textarea{--background: transparent;--border-radius: 8px;--padding-start: 12px;--padding-end: 12px;width:100%}.comment-section .char-count{display:block;text-align:right;font-size:12px;color:var(--ion-color-medium);margin-top:4px}.submit-button{margin-top:16px}.submitted-message{margin-top:16px;color:var(--ion-color-success);font-weight:500;animation:fadeIn .3s ease-out}.error-message{margin-top:8px;color:var(--ion-color-danger);font-size:14px}.loading-container{display:flex;justify-content:center;padding:20px}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}\n"] }]
256
256
  }], ctorParameters: () => [], propDecorators: { props: [{
257
257
  type: Input
258
258
  }], reactionSubmit: [{
@@ -260,4 +260,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
260
260
  }], reactionChange: [{
261
261
  type: Output
262
262
  }] } });
263
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1yZWFjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NvbnRlbnQtcmVhY3Rpb24vY29udGVudC1yZWFjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NvbnRlbnQtcmVhY3Rpb24vY29udGVudC1yZWFjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFJWixNQUFNLEVBQ04sUUFBUSxHQUVULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOztBQUdsRTs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxxQkFBcUIsR0FBRztJQUM1QixFQUFFLEVBQUU7UUFDRixRQUFRLEVBQUUsa0NBQWtDO1FBQzVDLGtCQUFrQixFQUFFLDZCQUE2QjtRQUNqRCxNQUFNLEVBQUUsZ0JBQWdCO1FBQ3hCLE1BQU0sRUFBRSxvQkFBb0I7UUFDNUIsUUFBUSxFQUFFLDBCQUEwQjtRQUNw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LElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUM7SUFDekUsQ0FBQzsrR0F0T1Usd0JBQXdCO21HQUF4Qix3QkFBd0Isa05DL0VyQyw4L0VBeUVBLGlwQ0RFWSxZQUFZLDhCQUFFLFdBQVcsK0JBQUUsU0FBUyxvUEFBRSxVQUFVLHlHQUFFLFdBQVc7OzRGQUk1RCx3QkFBd0I7a0JBUHBDLFNBQVM7K0JBQ0Usc0JBQXNCLGNBQ3BCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUM7d0RBWS9ELEtBQUs7c0JBQWIsS0FBSztnQkFDSSxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkluaXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgc2lnbmFsLFxuICBjb21wdXRlZCxcbiAgaXNEZXZNb2RlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElvbkJ1dHRvbiwgSW9uU3Bpbm5lciwgSW9uVGV4dGFyZWEgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IEZlZWRiYWNrU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZlZWRiYWNrL2ZlZWRiYWNrLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVhY3Rpb25WYWx1ZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZlZWRiYWNrL3R5cGVzJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udGVudFJlYWN0aW9uTWV0YWRhdGEsIENvbnRlbnRSZWFjdGlvblN0YXRlLCBSZWFjdGlvblN1Ym1pdEV2ZW50LCBSZWFjdGlvbkNoYW5nZUV2ZW50IH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogRGVmYXVsdHMgaTE4biBkZWwgY29tcG9uZW50ZSAoZXMvZW4pLiBFbCBjb21wb25lbnRlIGxvcyBhdXRvLXJlZ2lzdHJhIGVuIHN1XG4gKiBjb25zdHJ1Y3RvciBzaSBlbCBjb25zdW1lciBubyBwcm92ZXnDsyBlbCBuYW1lc3BhY2UgYENvbnRlbnRSZWFjdGlvbmAuIEVzdG9cbiAqIGdhcmFudGl6YSBxdWUgTlVOQ0EgaGF5YSB1bmEga2V5IGZhbHRhbnRlOiB1bmEga2V5IGZhbHRhbnRlIHNlIGV2YWzDumEgZW4gZWxcbiAqIHRlbXBsYXRlIHBvciBjYWRhIGNoYW5nZS1kZXRlY3Rpb24g4oaSIGBjb25zb2xlLndhcm5gIHBvciBDRCDihpIgY29uIGVsXG4gKiBgdmFsLWRlYnVnLWNvbnNvbGVgIGFjdGl2byAoZXNwZWphIGNvbnNvbGUuKiBhIHVuIHNpZ25hbCkgc2UgZGlzcGFyYSB1biBsb29wXG4gKiBpbmZpbml0byBxdWUgY29uZ2VsYSBlbCBuYXZlZ2Fkb3IgZW4gZGV2LiBBdXRvLXJlZ2lzdHJhciBsbyBlbGltaW5hIGRlIHJhw616LlxuICovXG5jb25zdCBDT05URU5UX1JFQUNUSU9OX0kxOE4gPSB7XG4gIGVzOiB7XG4gICAgcXVlc3Rpb246ICfCv1RlIHJlc3VsdMOzIMO6dGlsIGVzdGUgY29udGVuaWRvPycsXG4gICAgY29tbWVudFBsYWNlaG9sZGVyOiAnQ3XDqW50YW5vcyBtw6FzIChvcGNpb25hbCkuLi4nLFxuICAgIHN1Ym1pdDogJ0VudmlhciBvcGluacOzbicsXG4gICAgdXBkYXRlOiAnQWN0dWFsaXphciBvcGluacOzbicsXG4gICAgdGhhbmtZb3U6ICfCoUdyYWNpYXMgcG9yIHR1IG9waW5pw7NuIScsXG4gICAgc3VibWl0dGVkOiAnVHUgb3BpbmnDs24gaGEgc2lkbyByZWdpc3RyYWRhJyxcbiAgICBlcnJvclN1Ym1pdHRpbmc6ICdFcnJvciBhbCBlbnZpYXIuIEludGVudGEgZGUgbnVldm8uJyxcbiAgICBwb3NpdGl2ZUxhYmVsOiAnU8OtLCBtdWNobycsXG4gICAgbmVnYXRpdmVMYWJlbDogJ05vIHRhbnRvJyxcbiAgICBuZWdhdGl2ZUZlZWRiYWNrVGl0bGU6ICfCv0N1w6ludGFub3MgcXXDqSBubyB0ZSBndXN0w7M/JyxcbiAgfSxcbiAgZW46IHtcbiAgICBxdWVzdGlvbjogJ1dhcyB0aGlzIGNvbnRlbnQgaGVscGZ1bD8nLFxuICAgIGNvbW1lbnRQbGFjZWhvbGRlcjogJ1RlbGwgdXMgbW9yZSAob3B0aW9uYWwpLi4uJyxcbiAgICBzdWJtaXQ6ICdTZW5kIGZlZWRiYWNrJyxcbiAgICB1cGRhdGU6ICdVcGRhdGUgZmVlZGJhY2snLFxuICAgIHRoYW5rWW91OiAnVGhhbmtzIGZvciB5b3VyIGZlZWRiYWNrIScsXG4gICAgc3VibWl0dGVkOiAnWW91ciBmZWVkYmFjayBoYXMgYmVlbiByZWNvcmRlZCcsXG4gICAgZXJyb3JTdWJtaXR0aW5nOiAnRmFpbGVkIHRvIHNlbmQuIFBsZWFzZSB0cnkgYWdhaW4uJyxcbiAgICBwb3NpdGl2ZUxhYmVsOiAnWWVzLCBhIGxvdCcsXG4gICAgbmVnYXRpdmVMYWJlbDogJ05vdCByZWFsbHknLFxuICAgIG5lZ2F0aXZlRmVlZGJhY2tUaXRsZTogXCJUZWxsIHVzIHdoYXQgeW91IGRpZG4ndCBsaWtlP1wiLFxuICB9LFxufTtcblxuLyoqXG4gKiBDb21wb25lbnRlIHBhcmEgcmVhY2Npb25lcyBkZSBjb250ZW5pZG8gY29uIGVtb2ppcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPHZhbC1jb250ZW50LXJlYWN0aW9uXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgZW50aXR5UmVmOiB7IGVudGl0eVR5cGU6ICdhcnRpY2xlJywgZW50aXR5SWQ6ICdhcnQtMTIzJyB9LFxuICogICAgIHF1ZXN0aW9uOiAnwr9UZSBmdWUgw7p0aWwgZXN0ZSBhcnTDrWN1bG8/J1xuICogICB9XCJcbiAqICAgKHJlYWN0aW9uU3VibWl0KT1cIm9uUmVhY3Rpb25TdWJtaXQoJGV2ZW50KVwiXG4gKiAvPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1jb250ZW50LXJlYWN0aW9uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIElvbkJ1dHRvbiwgSW9uU3Bpbm5lciwgSW9uVGV4dGFyZWFdLFxuICB0ZW1wbGF0ZVVybDogJy4vY29udGVudC1yZWFjdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbnRlbnQtcmVhY3Rpb24uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29udGVudFJlYWN0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBwcml2YXRlIGZlZWRiYWNrU2VydmljZSA9IGluamVjdChGZWVkYmFja1NlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0ID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgYXV0aCA9IGluamVjdChBdXRoU2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICByZWFkb25seSBpc0NvbmZpZ3VyZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmZlZWRiYWNrU2VydmljZS5pc0NvbmZpZ3VyZWQoKSk7XG5cbiAgQElucHV0KCkgcHJvcHM6IFBhcnRpYWw8Q29udGVudFJlYWN0aW9uTWV0YWRhdGE+ID0ge307XG4gIEBPdXRwdXQoKSByZWFjdGlvblN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8UmVhY3Rpb25TdWJtaXRFdmVudD4oKTtcbiAgQE91dHB1dCgpIHJlYWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxSZWFjdGlvbkNoYW5nZUV2ZW50PigpO1xuXG4gIC8vIEVzdGFkbyByZWFjdGl2b1xuICBzdGF0ZSA9IHNpZ25hbDxDb250ZW50UmVhY3Rpb25TdGF0ZT4oe1xuICAgIHNlbGVjdGVkVmFsdWU6IG51bGwsXG4gICAgY29tbWVudDogJycsXG4gICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICBpc1N1Ym1pdHRlZDogZmFsc2UsXG4gICAgaGFkUHJldmlvdXNSZWFjdGlvbjogZmFsc2UsXG4gICAgZXJyb3I6IG51bGwsXG4gIH0pO1xuXG4gIC8vIFZhbG9yZXMgcG9yIGRlZmVjdG9cbiAgcmVhZG9ubHkgZGVmYXVsdEVtb2ppczogW3N0cmluZywgc3RyaW5nLCBzdHJpbmddID0gWyfwn5ieJywgJ/CfmJAnLCAn8J+YiiddO1xuICByZWFkb25seSBkZWZhdWx0TGFiZWxzOiBbc3RyaW5nLCBzdHJpbmcsIHN0cmluZ10gPSBbJ05vIG1lIGF5dWTDsycsICdSZWd1bGFyJywgJ011eSDDunRpbCddO1xuXG4gIC8vIENvbXB1dGVkIHByb3BlcnRpZXNcbiAgcmVzb2x2ZWRQcm9wcyA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgZW50aXR5UmVmOiB0aGlzLnByb3BzLmVudGl0eVJlZiEsXG4gICAgcXVlc3Rpb246IHRoaXMucHJvcHMucXVlc3Rpb24gfHwgdGhpcy50KCdxdWVzdGlvbicpLFxuICAgIHNob3dDb21tZW50OiB0aGlzLnByb3BzLnNob3dDb21tZW50ID8/IHRydWUsXG4gICAgY29tbWVudE9uVmFsdWVzOiB0aGlzLnByb3BzLmNvbW1lbnRPblZhbHVlcyxcbiAgICBjb21tZW50UGxhY2Vob2xkZXI6IHRoaXMucHJvcHMuY29tbWVudFBsYWNlaG9sZGVyIHx8IHRoaXMudCgnY29tbWVudFBsYWNlaG9sZGVyJyksXG4gICAgbWF4Q29tbWVudExlbmd0aDogdGhpcy5wcm9wcy5tYXhDb21tZW50TGVuZ3RoID8/IDUwMCxcbiAgICBlbW9qaXM6IHRoaXMucHJvcHMuZW1vamlzIHx8IHRoaXMuZGVmYXVsdEVtb2ppcyxcbiAgICBlbW9qaUxhYmVsczogdGhpcy5wcm9wcy5lbW9qaUxhYmVscyB8fCB0aGlzLmRlZmF1bHRMYWJlbHMsXG4gICAgc2hvd1RoYW5rWW91OiB0aGlzLnByb3BzLnNob3dUaGFua1lvdSA/PyB0cnVlLFxuICAgIHRoYW5rWW91TWVzc2FnZTogdGhpcy5wcm9wcy50aGFua1lvdU1lc3NhZ2UgfHwgdGhpcy50KCd0aGFua1lvdScpLFxuICAgIGRpc2FibGVkOiB0aGlzLnByb3BzLmRpc2FibGVkID8/IGZhbHNlLFxuICAgIHJlYWRvbmx5OiB0aGlzLnByb3BzLnJlYWRvbmx5ID8/IGZhbHNlLFxuICB9KSk7XG5cbiAgcmVhZG9ubHkgYWN0aXZlUmVhY3Rpb25WYWx1ZXMgPSBjb21wdXRlZDxSZWFjdGlvblZhbHVlW10+KCgpID0+XG4gICAgdGhpcy5yZXNvbHZlZFByb3BzKCkuZW1vamlzLmxlbmd0aCA9PT0gMiA/IFsnbmVnYXRpdmUnLCAncG9zaXRpdmUnXSA6IFsnbmVnYXRpdmUnLCAnbmV1dHJhbCcsICdwb3NpdGl2ZSddXG4gICk7XG5cbiAgc2hvd0NvbW1lbnRGaWVsZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzZWwgPSB0aGlzLnN0YXRlKCkuc2VsZWN0ZWRWYWx1ZTtcbiAgICBpZiAoIXNlbCkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGNvbW1lbnRPbiA9IHRoaXMucmVzb2x2ZWRQcm9wcygpLmNvbW1lbnRPblZhbHVlcztcbiAgICBpZiAoY29tbWVudE9uICE9PSB1bmRlZmluZWQpIHJldHVybiBjb21tZW50T24uaW5jbHVkZXMoc2VsKTtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZFByb3BzKCkuc2hvd0NvbW1lbnQ7XG4gIH0pO1xuXG4gIGNhblN1Ym1pdCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3RhdGUoKS5zZWxlY3RlZFZhbHVlICE9PSBudWxsICYmICF0aGlzLnN0YXRlKCkuaXNMb2FkaW5nKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBBdXRvLXJlZ2lzdHJvIGRlIGRlZmF1bHRzIGkxOG4gKGVzL2VuKSBzaSBlbCBjb25zdW1lciBubyBwcm92ZXnDsyBlbFxuICAgIC8vIG5hbWVzcGFjZS4gR2FyYW50aXphIHF1ZSBgdCgpYCBudW5jYSBjYWlnYSBlbiBrZXkgZmFsdGFudGUuIFZlclxuICAgIC8vIENPTlRFTlRfUkVBQ1RJT05fSTE4Ti4gSWRlbXBvdGVudGU6IHNvbG8gbGEgMcKqIGluc3RhbmNpYSByZWdpc3RyYS5cbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UoJ0NvbnRlbnRSZWFjdGlvbicpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJDb250ZW50KCdDb250ZW50UmVhY3Rpb24nLCBDT05URU5UX1JFQUNUSU9OX0kxOE4pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubG9hZFByZXZpb3VzUmVhY3Rpb24oKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1sncHJvcHMnXSAmJiAhY2hhbmdlc1sncHJvcHMnXS5maXJzdENoYW5nZSkge1xuICAgICAgdGhpcy5sb2FkUHJldmlvdXNSZWFjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZFByZXZpb3VzUmVhY3Rpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLnByb3BzLmVudGl0eVJlZikgcmV0dXJuO1xuXG4gICAgLy8gU2kgaGF5IGluaXRpYWxWYWx1ZSwgdXNhcmxvIGRpcmVjdGFtZW50ZSBzaW4gY29uc3VsdGFyXG4gICAgaWYgKHRoaXMucHJvcHMuaW5pdGlhbFZhbHVlKSB7XG4gICAgICB0aGlzLnN0YXRlLnVwZGF0ZShzID0+ICh7XG4gICAgICAgIC4uLnMsXG4gICAgICAgIHNlbGVjdGVkVmFsdWU6IHRoaXMucHJvcHMuaW5pdGlhbFZhbHVlISxcbiAgICAgICAgaGFkUHJldmlvdXNSZWFjdGlvbjogdHJ1ZSxcbiAgICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgaXNTdWJtaXR0ZWQ6IHRydWUsXG4gICAgICB9KSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2kgc2tpcEluaXRpYWxDaGVjayBlc3TDoSBhY3Rpdm8sIG5vIGNvbnN1bHRhclxuICAgIGlmICh0aGlzLnByb3BzLnNraXBJbml0aWFsQ2hlY2spIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0YXRlLnVwZGF0ZShzID0+ICh7IC4uLnMsIGlzTG9hZGluZzogdHJ1ZSwgZXJyb3I6IG51bGwgfSkpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNoZWNrID0gYXdhaXQgdGhpcy5mZWVkYmFja1NlcnZpY2UuY2hlY2tGZWVkYmFjayhcbiAgICAgICAgdGhpcy5wcm9wcy5lbnRpdHlSZWYuZW50aXR5VHlwZSxcbiAgICAgICAgdGhpcy5wcm9wcy5lbnRpdHlSZWYuZW50aXR5SWRcbiAgICAgICk7XG5cbiAgICAgIGlmIChjaGVjay5oYXNGZWVkYmFjayAmJiBjaGVjay5yZWFjdGlvblZhbHVlKSB7XG4gICAgICAgIHRoaXMuc3RhdGUudXBkYXRlKHMgPT4gKHtcbiAgICAgICAgICAuLi5zLFxuICAgICAgICAgIHNlbGVjdGVkVmFsdWU6IGNoZWNrLnJlYWN0aW9uVmFsdWUhLFxuICAgICAgICAgIGhhZFByZXZpb3VzUmVhY3Rpb246IHRydWUsXG4gICAgICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICBpc1N1Ym1pdHRlZDogdHJ1ZSxcbiAgICAgICAgfSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdGF0ZS51cGRhdGUocyA9PiAoeyAuLi5zLCBpc0xvYWRpbmc6IGZhbHNlIH0pKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBwcmV2aW91cyByZWFjdGlvbjonLCBlcnJvcik7XG4gICAgICB0aGlzLnN0YXRlLnVwZGF0ZShzID0+ICh7IC4uLnMsIGlzTG9hZGluZzogZmFsc2UgfSkpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFJlYWN0aW9uKHZhbHVlOiBSZWFjdGlvblZhbHVlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcygpLmRpc2FibGVkIHx8IHRoaXMucmVzb2x2ZWRQcm9wcygpLnJlYWRvbmx5KSByZXR1cm47XG5cbiAgICBjb25zdCBwcmV2aW91c1ZhbHVlID0gdGhpcy5zdGF0ZSgpLnNlbGVjdGVkVmFsdWU7XG5cbiAgICB0aGlzLnN0YXRlLnVwZGF0ZShzID0+ICh7XG4gICAgICAuLi5zLFxuICAgICAgc2VsZWN0ZWRWYWx1ZTogdmFsdWUsXG4gICAgICBpc1N1Ym1pdHRlZDogZmFsc2UsXG4gICAgICBlcnJvcjogbnVsbCxcbiAgICB9KSk7XG5cbiAgICB0aGlzLnJlYWN0aW9uQ2hhbmdlLmVtaXQoeyB2YWx1ZSwgcHJldmlvdXNWYWx1ZSB9KTtcbiAgfVxuXG4gIGFzeW5jIHN1Ym1pdFJlYWN0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGN1cnJlbnRTdGF0ZSA9IHRoaXMuc3RhdGUoKTtcbiAgICBjb25zdCBwcm9wcyA9IHRoaXMucmVzb2x2ZWRQcm9wcygpO1xuXG4gICAgaWYgKCFjdXJyZW50U3RhdGUuc2VsZWN0ZWRWYWx1ZSB8fCBwcm9wcy5kaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgdGhpcy5zdGF0ZS51cGRhdGUocyA9PiAoeyAuLi5zLCBpc0xvYWRpbmc6IHRydWUsIGVycm9yOiBudWxsIH0pKTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBEZXRlcm1pbmFyIHNpIHVzYXIgZW5kcG9pbnQgYW7Ds25pbW8gbyBhdXRlbnRpY2Fkb1xuICAgICAgY29uc3QgaXNBdXRoZW50aWNhdGVkID0gdGhpcy5hdXRoPy5pc0F1dGhlbnRpY2F0ZWQoKSA/PyBmYWxzZTtcbiAgICAgIGNvbnN0IHVzZUFub255bW91cyA9IHRoaXMucHJvcHMuYWxsb3dBbm9ueW1vdXMgJiYgIWlzQXV0aGVudGljYXRlZDtcblxuICAgICAgaWYgKHVzZUFub255bW91cykge1xuICAgICAgICAvLyBVc2FyIGVuZHBvaW50IGFuw7NuaW1vIChww7pibGljbylcbiAgICAgICAgYXdhaXQgdGhpcy5mZWVkYmFja1NlcnZpY2UuY3JlYXRlQW5vbnltb3VzUmVhY3Rpb24oXG4gICAgICAgICAgcHJvcHMuZW50aXR5UmVmLFxuICAgICAgICAgIGN1cnJlbnRTdGF0ZS5zZWxlY3RlZFZhbHVlLFxuICAgICAgICAgIGN1cnJlbnRTdGF0ZS5jb21tZW50IHx8IHVuZGVmaW5lZFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVXNhciBlbmRwb2ludCBhdXRlbnRpY2Fkb1xuICAgICAgICBhd2FpdCB0aGlzLmZlZWRiYWNrU2VydmljZS5jcmVhdGVSZWFjdGlvbihcbiAgICAgICAgICBwcm9wcy5lbnRpdHlSZWYsXG4gICAgICAgICAgY3VycmVudFN0YXRlLnNlbGVjdGVkVmFsdWUsXG4gICAgICAgICAgY3VycmVudFN0YXRlLmNvbW1lbnQgfHwgdW5kZWZpbmVkXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc3RhdGUudXBkYXRlKHMgPT4gKHtcbiAgICAgICAgLi4ucyxcbiAgICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgaXNTdWJtaXR0ZWQ6IHRydWUsXG4gICAgICAgIGhhZFByZXZpb3VzUmVhY3Rpb246ICF1c2VBbm9ueW1vdXMsIC8vIFNvbG8gcGFyYSBhdXRlbnRpY2Fkb3NcbiAgICAgIH0pKTtcblxuICAgICAgdGhpcy5yZWFjdGlvblN1Ym1pdC5lbWl0KHtcbiAgICAgICAgdmFsdWU6IGN1cnJlbnRTdGF0ZS5zZWxlY3RlZFZhbHVlLFxuICAgICAgICBjb21tZW50OiBjdXJyZW50U3RhdGUuY29tbWVudCB8fCB1bmRlZmluZWQsXG4gICAgICAgIGVudGl0eVJlZjogcHJvcHMuZW50aXR5UmVmLFxuICAgICAgICBpc1VwZGF0ZTogY3VycmVudFN0YXRlLmhhZFByZXZpb3VzUmVhY3Rpb24sXG4gICAgICB9KTtcblxuICAgICAgaWYgKHByb3BzLnNob3dUaGFua1lvdSkge1xuICAgICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICAgIG1lc3NhZ2U6IHByb3BzLnRoYW5rWW91TWVzc2FnZSxcbiAgICAgICAgICBkdXJhdGlvbjogMjAwMCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHN1Ym1pdHRpbmcgcmVhY3Rpb246JywgZXJyb3IpO1xuICAgICAgdGhpcy5zdGF0ZS51cGRhdGUocyA9PiAoe1xuICAgICAgICAuLi5zLFxuICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICBlcnJvcjogdGhpcy50KCdlcnJvclN1Ym1pdHRpbmcnKSxcbiAgICAgIH0pKTtcblxuICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy50KCdlcnJvclN1Ym1pdHRpbmcnKSxcbiAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVDb21tZW50KGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQuZGV0YWlsLnZhbHVlIHx8ICcnO1xuICAgIHRoaXMuc3RhdGUudXBkYXRlKHMgPT4gKHsgLi4ucywgY29tbWVudDogdmFsdWUgfSkpO1xuICB9XG5cbiAgZ2V0RW1vamkoaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRQcm9wcygpLmVtb2ppc1tpbmRleF07XG4gIH1cblxuICBnZXRFbW9qaUxhYmVsKGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVkUHJvcHMoKS5lbW9qaUxhYmVsc1tpbmRleF07XG4gIH1cblxuICBpc1NlbGVjdGVkKHZhbHVlOiBSZWFjdGlvblZhbHVlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUoKS5zZWxlY3RlZFZhbHVlID09PSB2YWx1ZTtcbiAgfVxuXG4gIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRyYW5zbGF0aW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIHF1ZXN0aW9uOiAnwr9UZSByZXN1bHTDsyDDunRpbCBlc3RlIGNvbnRlbmlkbz8nLFxuICAgICAgY29tbWVudFBsYWNlaG9sZGVyOiAnQ3XDqW50YW5vcyBtw6FzIChvcGNpb25hbCkuLi4nLFxuICAgICAgc3VibWl0OiAnRW52aWFyIG9waW5pw7NuJyxcbiAgICAgIHVwZGF0ZTogJ0FjdHVhbGl6YXIgb3BpbmnDs24nLFxuICAgICAgdGhhbmtZb3U6ICfCoUdyYWNpYXMgcG9yIHR1IG9waW5pw7NuIScsXG4gICAgICBzdWJtaXR0ZWQ6ICdUdSBvcGluacOzbiBoYSBzaWRvIHJlZ2lzdHJhZGEnLFxuICAgICAgZXJyb3JTdWJtaXR0aW5nOiAnRXJyb3IgYWwgZW52aWFyLiBJbnRlbnRhIGRlIG51ZXZvLicsXG4gICAgICBwb3NpdGl2ZUxhYmVsOiAnU8OtLCBtdWNobycsXG4gICAgICBuZWdhdGl2ZUxhYmVsOiAnTm8gdGFudG8nLFxuICAgICAgbmVnYXRpdmVGZWVkYmFja1RpdGxlOiAnwr9DdcOpbnRhbm9zIHF1w6kgbm8gdGUgZ3VzdMOzPycsXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCAnQ29udGVudFJlYWN0aW9uJykgfHwgdHJhbnNsYXRpb25zW2tleV0gfHwga2V5O1xuICB9XG59XG4iLCJAaWYgKGlzQ29uZmlndXJlZCgpKSB7XG48ZGl2IGNsYXNzPVwiY29udGVudC1yZWFjdGlvblwiIFtjbGFzcy5kaXNhYmxlZF09XCJyZXNvbHZlZFByb3BzKCkuZGlzYWJsZWRcIiBbY2xhc3MucmVhZG9ubHldPVwicmVzb2x2ZWRQcm9wcygpLnJlYWRvbmx5XCI+XG4gIDwhLS0gTG9hZGluZyBpbmljaWFsIC0tPlxuICBAaWYgKHN0YXRlKCkuaXNMb2FkaW5nICYmICFzdGF0ZSgpLnNlbGVjdGVkVmFsdWUpIHtcbiAgPGRpdiBjbGFzcz1cImxvYWRpbmctY29udGFpbmVyXCI+XG4gICAgPGlvbi1zcGlubmVyIG5hbWU9XCJjcmVzY2VudFwiPjwvaW9uLXNwaW5uZXI+XG4gIDwvZGl2PlxuICB9IEBlbHNlIHtcbiAgPCEtLSBQcmVndW50YSAtLT5cbiAgPHAgY2xhc3M9XCJxdWVzdGlvblwiPlxuICAgIHt7IHN0YXRlKCkuc2VsZWN0ZWRWYWx1ZSA9PT0gJ25lZ2F0aXZlJyA/IHQoJ25lZ2F0aXZlRmVlZGJhY2tUaXRsZScpIDogcmVzb2x2ZWRQcm9wcygpLnF1ZXN0aW9uIH19XG4gIDwvcD5cblxuICA8IS0tIEJvdG9uZXMgZGUgcmVhY2Npw7NuIC0tPlxuICA8ZGl2IGNsYXNzPVwicmVhY3Rpb24tYnV0dG9uc1wiPlxuICAgIDxpb24tYnV0dG9uXG4gICAgICBbZmlsbF09XCJpc1NlbGVjdGVkKCdwb3NpdGl2ZScpID8gJ3NvbGlkJyA6ICdvdXRsaW5lJ1wiXG4gICAgICBzaGFwZT1cInJvdW5kXCJcbiAgICAgIGNvbG9yPVwiZGFya1wiXG4gICAgICBbYXR0ci5hcmlhLXByZXNzZWRdPVwiaXNTZWxlY3RlZCgncG9zaXRpdmUnKVwiXG4gICAgICBbZGlzYWJsZWRdPVwicmVzb2x2ZWRQcm9wcygpLmRpc2FibGVkIHx8IHJlc29sdmVkUHJvcHMoKS5yZWFkb25seVwiXG4gICAgICAoY2xpY2spPVwic2VsZWN0UmVhY3Rpb24oJ3Bvc2l0aXZlJylcIlxuICAgID5cbiAgICAgIHt7IHQoJ3Bvc2l0aXZlTGFiZWwnKSB9fVxuICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8aW9uLWJ1dHRvblxuICAgICAgW2ZpbGxdPVwiaXNTZWxlY3RlZCgnbmVnYXRpdmUnKSA/ICdzb2xpZCcgOiAnb3V0bGluZSdcIlxuICAgICAgc2hhcGU9XCJyb3VuZFwiXG4gICAgICBjb2xvcj1cImRhcmtcIlxuICAgICAgW2F0dHIuYXJpYS1wcmVzc2VkXT1cImlzU2VsZWN0ZWQoJ25lZ2F0aXZlJylcIlxuICAgICAgW2Rpc2FibGVkXT1cInJlc29sdmVkUHJvcHMoKS5kaXNhYmxlZCB8fCByZXNvbHZlZFByb3BzKCkucmVhZG9ubHlcIlxuICAgICAgKGNsaWNrKT1cInNlbGVjdFJlYWN0aW9uKCduZWdhdGl2ZScpXCJcbiAgICA+XG4gICAgICB7eyB0KCduZWdhdGl2ZUxhYmVsJykgfX1cbiAgICA8L2lvbi1idXR0b24+XG4gIDwvZGl2PlxuXG4gIDwhLS0gQ2FtcG8gZGUgY29tZW50YXJpbyAoc29sbyBzaSBoYXkgc2VsZWNjacOzbikgLS0+XG4gIEBpZiAoc2hvd0NvbW1lbnRGaWVsZCgpKSB7XG4gIDxkaXYgY2xhc3M9XCJjb21tZW50LXNlY3Rpb25cIj5cbiAgICA8aW9uLXRleHRhcmVhXG4gICAgICBbdmFsdWVdPVwic3RhdGUoKS5jb21tZW50XCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJyZXNvbHZlZFByb3BzKCkuY29tbWVudFBsYWNlaG9sZGVyXCJcbiAgICAgIFttYXhsZW5ndGhdPVwicmVzb2x2ZWRQcm9wcygpLm1heENvbW1lbnRMZW5ndGhcIlxuICAgICAgW2Rpc2FibGVkXT1cInJlc29sdmVkUHJvcHMoKS5kaXNhYmxlZFwiXG4gICAgICBbcm93c109XCIzXCJcbiAgICAgIGNsYXNzPVwiY29tbWVudC10ZXh0YXJlYVwiXG4gICAgICAoaW9uSW5wdXQpPVwidXBkYXRlQ29tbWVudCgkZXZlbnQpXCJcbiAgICA+PC9pb24tdGV4dGFyZWE+XG4gICAgPHNwYW4gY2xhc3M9XCJjaGFyLWNvdW50XCI+IHt7IHN0YXRlKCkuY29tbWVudC5sZW5ndGggfX0ve3sgcmVzb2x2ZWRQcm9wcygpLm1heENvbW1lbnRMZW5ndGggfX0gPC9zcGFuPlxuICA8L2Rpdj5cbiAgfVxuXG4gIDwhLS0gQm90w7NuIGRlIGVudsOtbyAtLT5cbiAgQGlmIChzdGF0ZSgpLnNlbGVjdGVkVmFsdWUgJiYgIXN0YXRlKCkuaXNTdWJtaXR0ZWQpIHtcbiAgPGlvbi1idXR0b24gZXhwYW5kPVwiYmxvY2tcIiBzaGFwZT1cInJvdW5kXCIgW2Rpc2FibGVkXT1cIiFjYW5TdWJtaXQoKVwiIChjbGljayk9XCJzdWJtaXRSZWFjdGlvbigpXCIgY2xhc3M9XCJzdWJtaXQtYnV0dG9uXCI+XG4gICAgQGlmIChzdGF0ZSgpLmlzTG9hZGluZykge1xuICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIj48L2lvbi1zcGlubmVyPlxuICAgIH0gQGVsc2UgeyB7eyBzdGF0ZSgpLmhhZFByZXZpb3VzUmVhY3Rpb24gPyB0KCd1cGRhdGUnKSA6IHQoJ3N1Ym1pdCcpIH19IH1cbiAgPC9pb24tYnV0dG9uPlxuICB9XG5cbiAgPCEtLSBNZW5zYWplIGRlIGNvbmZpcm1hY2nDs24gLS0+XG4gIEBpZiAoc3RhdGUoKS5pc1N1Ym1pdHRlZCkge1xuICA8cCBjbGFzcz1cInN1Ym1pdHRlZC1tZXNzYWdlXCI+e3sgdCgndGhhbmtZb3UnKSB9fTwvcD5cbiAgfVxuXG4gIDwhLS0gRXJyb3IgLS0+XG4gIEBpZiAoc3RhdGUoKS5lcnJvcikge1xuICA8cCBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj57eyBzdGF0ZSgpLmVycm9yIH19PC9wPlxuICB9IH1cbjwvZGl2PlxufVxuIl19
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1yZWFjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NvbnRlbnQtcmVhY3Rpb24vY29udGVudC1yZWFjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NvbnRlbnQtcmVhY3Rpb24vY29udGVudC1yZWFjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFJWixNQUFNLEVBQ04sUUFBUSxHQUVULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOztBQUdsRTs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxxQkFBcUIsR0FBRztJQUM1QixFQUFFLEVBQUU7UUFDRixRQUFRLEVBQUUsa0NBQWtDO1FBQzVDLGtCQUFrQixFQUFFLDZCQUE2QjtRQUNqRCxNQUFNLEVBQUUsZ0JBQWdCO1FBQ3hCLE1BQU0sRUFBRSxvQkFBb0I7UUFDNUIsUUFBUSxFQUFFLDBCQUEwQjtRQUNw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LElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUM7SUFDekUsQ0FBQzsrR0F0T1Usd0JBQXdCO21HQUF4Qix3QkFBd0Isa05DL0VyQyw4L0VBeUVBLDRuQ0RFWSxZQUFZLDhCQUFFLFdBQVcsK0JBQUUsU0FBUyxvUEFBRSxVQUFVLHlHQUFFLFdBQVc7OzRGQUk1RCx3QkFBd0I7a0JBUHBDLFNBQVM7K0JBQ0Usc0JBQXNCLGNBQ3BCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUM7d0RBWS9ELEtBQUs7c0JBQWIsS0FBSztnQkFDSSxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkluaXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgc2lnbmFsLFxuICBjb21wdXRlZCxcbiAgaXNEZXZNb2RlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElvbkJ1dHRvbiwgSW9uU3Bpbm5lciwgSW9uVGV4dGFyZWEgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IEZlZWRiYWNrU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZlZWRiYWNrL2ZlZWRiYWNrLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVhY3Rpb25WYWx1ZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZlZWRiYWNrL3R5cGVzJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udGVudFJlYWN0aW9uTWV0YWRhdGEsIENvbnRlbnRSZWFjdGlvblN0YXRlLCBSZWFjdGlvblN1Ym1pdEV2ZW50LCBSZWFjdGlvbkNoYW5nZUV2ZW50IH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogRGVmYXVsdHMgaTE4biBkZWwgY29tcG9uZW50ZSAoZXMvZW4pLiBFbCBjb21wb25lbnRlIGxvcyBhdXRvLXJlZ2lzdHJhIGVuIHN1XG4gKiBjb25zdHJ1Y3RvciBzaSBlbCBjb25zdW1lciBubyBwcm92ZXnDsyBlbCBuYW1lc3BhY2UgYENvbnRlbnRSZWFjdGlvbmAuIEVzdG9cbiAqIGdhcmFudGl6YSBxdWUgTlVOQ0EgaGF5YSB1bmEga2V5IGZhbHRhbnRlOiB1bmEga2V5IGZhbHRhbnRlIHNlIGV2YWzDumEgZW4gZWxcbiAqIHRlbXBsYXRlIHBvciBjYWRhIGNoYW5nZS1kZXRlY3Rpb24g4oaSIGBjb25zb2xlLndhcm5gIHBvciBDRCDihpIgY29uIGVsXG4gKiBgdmFsLWRlYnVnLWNvbnNvbGVgIGFjdGl2byAoZXNwZWphIGNvbnNvbGUuKiBhIHVuIHNpZ25hbCkgc2UgZGlzcGFyYSB1biBsb29wXG4gKiBpbmZpbml0byBxdWUgY29uZ2VsYSBlbCBuYXZlZ2Fkb3IgZW4gZGV2LiBBdXRvLXJlZ2lzdHJhciBsbyBlbGltaW5hIGRlIHJhw616LlxuICovXG5jb25zdCBDT05URU5UX1JFQUNUSU9OX0kxOE4gPSB7XG4gIGVzOiB7XG4gICAgcXVlc3Rpb246ICfCv1RlIHJlc3VsdMOzIMO6dGlsIGVzdGUgY29udGVuaWRvPycsXG4gICAgY29tbWVudFBsYWNlaG9sZGVyOiAnQ3XDqW50YW5vcyBtw6FzIChvcGNpb25hbCkuLi4nLFxuICAgIHN1Ym1pdDogJ0VudmlhciBvcGluacOzbicsXG4gICAgdXBkYXRlOiAnQWN0dWFsaXphciBvcGluacOzbicsXG4gICAgdGhhbmtZb3U6ICfCoUdyYWNpYXMgcG9yIHR1IG9waW5pw7NuIScsXG4gICAgc3VibWl0dGVkOiAnVHUgb3BpbmnDs24gaGEgc2lkbyByZWdpc3RyYWRhJyxcbiAgICBlcnJvclN1Ym1pdHRpbmc6ICdFcnJvciBhbCBlbnZpYXIuIEludGVudGEgZGUgbnVldm8uJyxcbiAgICBwb3NpdGl2ZUxhYmVsOiAnU8OtLCBtdWNobycsXG4gICAgbmVnYXRpdmVMYWJlbDogJ05vIHRhbnRvJyxcbiAgICBuZWdhdGl2ZUZlZWRiYWNrVGl0bGU6ICfCv0N1w6ludGFub3MgcXXDqSBubyB0ZSBndXN0w7M/JyxcbiAgfSxcbiAgZW46IHtcbiAgICBxdWVzdGlvbjogJ1dhcyB0aGlzIGNvbnRlbnQgaGVscGZ1bD8nLFxuICAgIGNvbW1lbnRQbGFjZWhvbGRlcjogJ1RlbGwgdXMgbW9yZSAob3B0aW9uYWwpLi4uJyxcbiAgICBzdWJtaXQ6ICdTZW5kIGZlZWRiYWNrJyxcbiAgICB1cGRhdGU6ICdVcGRhdGUgZmVlZGJhY2snLFxuICAgIHRoYW5rWW91OiAnVGhhbmtzIGZvciB5b3VyIGZlZWRiYWNrIScsXG4gICAgc3VibWl0dGVkOiAnWW91ciBmZWVkYmFjayBoYXMgYmVlbiByZWNvcmRlZCcsXG4gICAgZXJyb3JTdWJtaXR0aW5nOiAnRmFpbGVkIHRvIHNlbmQuIFBsZWFzZSB0cnkgYWdhaW4uJyxcbiAgICBwb3NpdGl2ZUxhYmVsOiAnWWVzLCBhIGxvdCcsXG4gICAgbmVnYXRpdmVMYWJlbDogJ05vdCByZWFsbHknLFxuICAgIG5lZ2F0aXZlRmVlZGJhY2tUaXRsZTogXCJUZWxsIHVzIHdoYXQgeW91IGRpZG4ndCBsaWtlP1wiLFxuICB9LFxufTtcblxuLyoqXG4gKiBDb21wb25lbnRlIHBhcmEgcmVhY2Npb25lcyBkZSBjb250ZW5pZG8gY29uIGVtb2ppcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPHZhbC1jb250ZW50LXJlYWN0aW9uXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgZW50aXR5UmVmOiB7IGVudGl0eVR5cGU6ICdhcnRpY2xlJywgZW50aXR5SWQ6ICdhcnQtMTIzJyB9LFxuICogICAgIHF1ZXN0aW9uOiAnwr9UZSBmdWUgw7p0aWwgZXN0ZSBhcnTDrWN1bG8/J1xuICogICB9XCJcbiAqICAgKHJlYWN0aW9uU3VibWl0KT1cIm9uUmVhY3Rpb25TdWJtaXQoJGV2ZW50KVwiXG4gKiAvPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1jb250ZW50LXJlYWN0aW9uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIElvbkJ1dHRvbiwgSW9uU3Bpbm5lciwgSW9uVGV4dGFyZWFdLFxuICB0ZW1wbGF0ZVVybDogJy4vY29udGVudC1yZWFjdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbnRlbnQtcmVhY3Rpb24uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29udGVudFJlYWN0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBwcml2YXRlIGZlZWRiYWNrU2VydmljZSA9IGluamVjdChGZWVkYmFja1NlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0ID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgYXV0aCA9IGluamVjdChBdXRoU2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICByZWFkb25seSBpc0NvbmZpZ3VyZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmZlZWRiYWNrU2VydmljZS5pc0NvbmZpZ3VyZWQoKSk7XG5cbiAgQElucHV0KCkgcHJvcHM6IFBhcnRpYWw8Q29udGVudFJlYWN0aW9uTWV0YWRhdGE+ID0ge307XG4gIEBPdXRwdXQoKSByZWFjdGlvblN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8UmVhY3Rpb25TdWJtaXRFdmVudD4oKTtcbiAgQE91dHB1dCgpIHJlYWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxSZWFjdGlvbkNoYW5nZUV2ZW50PigpO1xuXG4gIC8vIEVzdGFkbyByZWFjdGl2b1xuICBzdGF0ZSA9IHNpZ25hbDxDb250ZW50UmVhY3Rpb25TdGF0ZT4oe1xuICAgIHNlbGVjdGVkVmFsdWU6IG51bGwsXG4gICAgY29tbWVudDogJycsXG4gICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICBpc1N1Ym1pdHRlZDogZmFsc2UsXG4gICAgaGFkUHJldmlvdXNSZWFjdGlvbjogZmFsc2UsXG4gICAgZXJyb3I6IG51bGwsXG4gIH0pO1xuXG4gIC8vIFZhbG9yZXMgcG9yIGRlZmVjdG9cbiAgcmVhZG9ubHkgZGVmYXVsdEVtb2ppczogW3N0cmluZywgc3RyaW5nLCBzdHJpbmddID0gWyfwn5ieJywgJ/CfmJAnLCAn8J+YiiddO1xuICByZWFkb25seSBkZWZhdWx0TGFiZWxzOiBbc3RyaW5nLCBzdHJpbmcsIHN0cmluZ10gPSBbJ05vIG1lIGF5dWTDsycsICdSZWd1bGFyJywgJ011eSDDunRpbCddO1xuXG4gIC8vIENvbXB1dGVkIHByb3BlcnRpZXNcbiAgcmVzb2x2ZWRQcm9wcyA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgZW50aXR5UmVmOiB0aGlzLnByb3BzLmVudGl0eVJlZiEsXG4gICAgcXVlc3Rpb246IHRoaXMucHJvcHMucXVlc3Rpb24gfHwgdGhpcy50KCdxdWVzdGlvbicpLFxuICAgIHNob3dDb21tZW50OiB0aGlzLnByb3BzLnNob3dDb21tZW50ID8/IHRydWUsXG4gICAgY29tbWVudE9uVmFsdWVzOiB0aGlzLnByb3BzLmNvbW1lbnRPblZhbHVlcyxcbiAgICBjb21tZW50UGxhY2Vob2xkZXI6IHRoaXMucHJvcHMuY29tbWVudFBsYWNlaG9sZGVyIHx8IHRoaXMudCgnY29tbWVudFBsYWNlaG9sZGVyJyksXG4gICAgbWF4Q29tbWVudExlbmd0aDogdGhpcy5wcm9wcy5tYXhDb21tZW50TGVuZ3RoID8/IDUwMCxcbiAgICBlbW9qaXM6IHRoaXMucHJvcHMuZW1vamlzIHx8IHRoaXMuZGVmYXVsdEVtb2ppcyxcbiAgICBlbW9qaUxhYmVsczogdGhpcy5wcm9wcy5lbW9qaUxhYmVscyB8fCB0aGlzLmRlZmF1bHRMYWJlbHMsXG4gICAgc2hvd1RoYW5rWW91OiB0aGlzLnByb3BzLnNob3dUaGFua1lvdSA/PyB0cnVlLFxuICAgIHRoYW5rWW91TWVzc2FnZTogdGhpcy5wcm9wcy50aGFua1lvdU1lc3NhZ2UgfHwgdGhpcy50KCd0aGFua1lvdScpLFxuICAgIGRpc2FibGVkOiB0aGlzLnByb3BzLmRpc2FibGVkID8/IGZhbHNlLFxuICAgIHJlYWRvbmx5OiB0aGlzLnByb3BzLnJlYWRvbmx5ID8/IGZhbHNlLFxuICB9KSk7XG5cbiAgcmVhZG9ubHkgYWN0aXZlUmVhY3Rpb25WYWx1ZXMgPSBjb21wdXRlZDxSZWFjdGlvblZhbHVlW10+KCgpID0+XG4gICAgdGhpcy5yZXNvbHZlZFByb3BzKCkuZW1vamlzLmxlbmd0aCA9PT0gMiA/IFsnbmVnYXRpdmUnLCAncG9zaXRpdmUnXSA6IFsnbmVnYXRpdmUnLCAnbmV1dHJhbCcsICdwb3NpdGl2ZSddXG4gICk7XG5cbiAgc2hvd0NvbW1lbnRGaWVsZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzZWwgPSB0aGlzLnN0YXRlKCkuc2VsZWN0ZWRWYWx1ZTtcbiAgICBpZiAoIXNlbCkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGNvbW1lbnRPbiA9IHRoaXMucmVzb2x2ZWRQcm9wcygpLmNvbW1lbnRPblZhbHVlcztcbiAgICBpZiAoY29tbWVudE9uICE9PSB1bmRlZmluZWQpIHJldHVybiBjb21tZW50T24uaW5jbHVkZXMoc2VsKTtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZFByb3BzKCkuc2hvd0NvbW1lbnQ7XG4gIH0pO1xuXG4gIGNhblN1Ym1pdCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3RhdGUoKS5zZWxlY3RlZFZhbHVlICE9PSBudWxsICYmICF0aGlzLnN0YXRlKCkuaXNMb2FkaW5nKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBBdXRvLXJlZ2lzdHJvIGRlIGRlZmF1bHRzIGkxOG4gKGVzL2VuKSBzaSBlbCBjb25zdW1lciBubyBwcm92ZXnDsyBlbFxuICAgIC8vIG5hbWVzcGFjZS4gR2FyYW50aXphIHF1ZSBgdCgpYCBudW5jYSBjYWlnYSBlbiBrZXkgZmFsdGFudGUuIFZlclxuICAgIC8vIENPTlRFTlRfUkVBQ1RJT05fSTE4Ti4gSWRlbXBvdGVudGU6IHNvbG8gbGEgMcKqIGluc3RhbmNpYSByZWdpc3RyYS5cbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UoJ0NvbnRlbnRSZWFjdGlvbicpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJDb250ZW50KCdDb250ZW50UmVhY3Rpb24nLCBDT05URU5UX1JFQUNUSU9OX0kxOE4pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubG9hZFByZXZpb3VzUmVhY3Rpb24oKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1sncHJvcHMnXSAmJiAhY2hhbmdlc1sncHJvcHMnXS5maXJzdENoYW5nZSkge1xuICAgICAgdGhpcy5sb2FkUHJldmlvdXNSZWFjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZFByZXZpb3VzUmVhY3Rpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLnByb3BzLmVudGl0eVJlZikgcmV0dXJuO1xuXG4gICAgLy8gU2kgaGF5IGluaXRpYWxWYWx1ZSwgdXNhcmxvIGRpcmVjdGFtZW50ZSBzaW4gY29uc3VsdGFyXG4gICAgaWYgKHRoaXMucHJvcHMuaW5pdGlhbFZhbHVlKSB7XG4gICAgICB0aGlzLnN0YXRlLnVwZGF0ZShzID0+ICh7XG4gICAgICAgIC4uLnMsXG4gICAgICAgIHNlbGVjdGVkVmFsdWU6IHRoaXMucHJvcHMuaW5pdGlhbFZhbHVlISxcbiAgICAgICAgaGFkUHJldmlvdXNSZWFjdGlvbjogdHJ1ZSxcbiAgICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgaXNTdWJtaXR0ZWQ6IHRydWUsXG4gICAgICB9KSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2kgc2tpcEluaXRpYWxDaGVjayBlc3TDoSBhY3Rpdm8sIG5vIGNvbnN1bHRhclxuICAgIGlmICh0aGlzLnByb3BzLnNraXBJbml0aWFsQ2hlY2spIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0YXRlLnVwZGF0ZShzID0+ICh7IC4uLnMsIGlzTG9hZGluZzogdHJ1ZSwgZXJyb3I6IG51bGwgfSkpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNoZWNrID0gYXdhaXQgdGhpcy5mZWVkYmFja1NlcnZpY2UuY2hlY2tGZWVkYmFjayhcbiAgICAgICAgdGhpcy5wcm9wcy5lbnRpdHlSZWYuZW50aXR5VHlwZSxcbiAgICAgICAgdGhpcy5wcm9wcy5lbnRpdHlSZWYuZW50aXR5SWRcbiAgICAgICk7XG5cbiAgICAgIGlmIChjaGVjay5oYXNGZWVkYmFjayAmJiBjaGVjay5yZWFjdGlvblZhbHVlKSB7XG4gICAgICAgIHRoaXMuc3RhdGUudXBkYXRlKHMgPT4gKHtcbiAgICAgICAgICAuLi5zLFxuICAgICAgICAgIHNlbGVjdGVkVmFsdWU6IGNoZWNrLnJlYWN0aW9uVmFsdWUhLFxuICAgICAgICAgIGhhZFByZXZpb3VzUmVhY3Rpb246IHRydWUsXG4gICAgICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICBpc1N1Ym1pdHRlZDogdHJ1ZSxcbiAgICAgICAgfSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdGF0ZS51cGRhdGUocyA9PiAoeyAuLi5zLCBpc0xvYWRpbmc6IGZhbHNlIH0pKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBwcmV2aW91cyByZWFjdGlvbjonLCBlcnJvcik7XG4gICAgICB0aGlzLnN0YXRlLnVwZGF0ZShzID0+ICh7IC4uLnMsIGlzTG9hZGluZzogZmFsc2UgfSkpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFJlYWN0aW9uKHZhbHVlOiBSZWFjdGlvblZhbHVlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcygpLmRpc2FibGVkIHx8IHRoaXMucmVzb2x2ZWRQcm9wcygpLnJlYWRvbmx5KSByZXR1cm47XG5cbiAgICBjb25zdCBwcmV2aW91c1ZhbHVlID0gdGhpcy5zdGF0ZSgpLnNlbGVjdGVkVmFsdWU7XG5cbiAgICB0aGlzLnN0YXRlLnVwZGF0ZShzID0+ICh7XG4gICAgICAuLi5zLFxuICAgICAgc2VsZWN0ZWRWYWx1ZTogdmFsdWUsXG4gICAgICBpc1N1Ym1pdHRlZDogZmFsc2UsXG4gICAgICBlcnJvcjogbnVsbCxcbiAgICB9KSk7XG5cbiAgICB0aGlzLnJlYWN0aW9uQ2hhbmdlLmVtaXQoeyB2YWx1ZSwgcHJldmlvdXNWYWx1ZSB9KTtcbiAgfVxuXG4gIGFzeW5jIHN1Ym1pdFJlYWN0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGN1cnJlbnRTdGF0ZSA9IHRoaXMuc3RhdGUoKTtcbiAgICBjb25zdCBwcm9wcyA9IHRoaXMucmVzb2x2ZWRQcm9wcygpO1xuXG4gICAgaWYgKCFjdXJyZW50U3RhdGUuc2VsZWN0ZWRWYWx1ZSB8fCBwcm9wcy5kaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgdGhpcy5zdGF0ZS51cGRhdGUocyA9PiAoeyAuLi5zLCBpc0xvYWRpbmc6IHRydWUsIGVycm9yOiBudWxsIH0pKTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBEZXRlcm1pbmFyIHNpIHVzYXIgZW5kcG9pbnQgYW7Ds25pbW8gbyBhdXRlbnRpY2Fkb1xuICAgICAgY29uc3QgaXNBdXRoZW50aWNhdGVkID0gdGhpcy5hdXRoPy5pc0F1dGhlbnRpY2F0ZWQoKSA/PyBmYWxzZTtcbiAgICAgIGNvbnN0IHVzZUFub255bW91cyA9IHRoaXMucHJvcHMuYWxsb3dBbm9ueW1vdXMgJiYgIWlzQXV0aGVudGljYXRlZDtcblxuICAgICAgaWYgKHVzZUFub255bW91cykge1xuICAgICAgICAvLyBVc2FyIGVuZHBvaW50IGFuw7NuaW1vIChww7pibGljbylcbiAgICAgICAgYXdhaXQgdGhpcy5mZWVkYmFja1NlcnZpY2UuY3JlYXRlQW5vbnltb3VzUmVhY3Rpb24oXG4gICAgICAgICAgcHJvcHMuZW50aXR5UmVmLFxuICAgICAgICAgIGN1cnJlbnRTdGF0ZS5zZWxlY3RlZFZhbHVlLFxuICAgICAgICAgIGN1cnJlbnRTdGF0ZS5jb21tZW50IHx8IHVuZGVmaW5lZFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVXNhciBlbmRwb2ludCBhdXRlbnRpY2Fkb1xuICAgICAgICBhd2FpdCB0aGlzLmZlZWRiYWNrU2VydmljZS5jcmVhdGVSZWFjdGlvbihcbiAgICAgICAgICBwcm9wcy5lbnRpdHlSZWYsXG4gICAgICAgICAgY3VycmVudFN0YXRlLnNlbGVjdGVkVmFsdWUsXG4gICAgICAgICAgY3VycmVudFN0YXRlLmNvbW1lbnQgfHwgdW5kZWZpbmVkXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc3RhdGUudXBkYXRlKHMgPT4gKHtcbiAgICAgICAgLi4ucyxcbiAgICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgaXNTdWJtaXR0ZWQ6IHRydWUsXG4gICAgICAgIGhhZFByZXZpb3VzUmVhY3Rpb246ICF1c2VBbm9ueW1vdXMsIC8vIFNvbG8gcGFyYSBhdXRlbnRpY2Fkb3NcbiAgICAgIH0pKTtcblxuICAgICAgdGhpcy5yZWFjdGlvblN1Ym1pdC5lbWl0KHtcbiAgICAgICAgdmFsdWU6IGN1cnJlbnRTdGF0ZS5zZWxlY3RlZFZhbHVlLFxuICAgICAgICBjb21tZW50OiBjdXJyZW50U3RhdGUuY29tbWVudCB8fCB1bmRlZmluZWQsXG4gICAgICAgIGVudGl0eVJlZjogcHJvcHMuZW50aXR5UmVmLFxuICAgICAgICBpc1VwZGF0ZTogY3VycmVudFN0YXRlLmhhZFByZXZpb3VzUmVhY3Rpb24sXG4gICAgICB9KTtcblxuICAgICAgaWYgKHByb3BzLnNob3dUaGFua1lvdSkge1xuICAgICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICAgIG1lc3NhZ2U6IHByb3BzLnRoYW5rWW91TWVzc2FnZSxcbiAgICAgICAgICBkdXJhdGlvbjogMjAwMCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHN1Ym1pdHRpbmcgcmVhY3Rpb246JywgZXJyb3IpO1xuICAgICAgdGhpcy5zdGF0ZS51cGRhdGUocyA9PiAoe1xuICAgICAgICAuLi5zLFxuICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICBlcnJvcjogdGhpcy50KCdlcnJvclN1Ym1pdHRpbmcnKSxcbiAgICAgIH0pKTtcblxuICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy50KCdlcnJvclN1Ym1pdHRpbmcnKSxcbiAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVDb21tZW50KGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQuZGV0YWlsLnZhbHVlIHx8ICcnO1xuICAgIHRoaXMuc3RhdGUudXBkYXRlKHMgPT4gKHsgLi4ucywgY29tbWVudDogdmFsdWUgfSkpO1xuICB9XG5cbiAgZ2V0RW1vamkoaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRQcm9wcygpLmVtb2ppc1tpbmRleF07XG4gIH1cblxuICBnZXRFbW9qaUxhYmVsKGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVkUHJvcHMoKS5lbW9qaUxhYmVsc1tpbmRleF07XG4gIH1cblxuICBpc1NlbGVjdGVkKHZhbHVlOiBSZWFjdGlvblZhbHVlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUoKS5zZWxlY3RlZFZhbHVlID09PSB2YWx1ZTtcbiAgfVxuXG4gIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRyYW5zbGF0aW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIHF1ZXN0aW9uOiAnwr9UZSByZXN1bHTDsyDDunRpbCBlc3RlIGNvbnRlbmlkbz8nLFxuICAgICAgY29tbWVudFBsYWNlaG9sZGVyOiAnQ3XDqW50YW5vcyBtw6FzIChvcGNpb25hbCkuLi4nLFxuICAgICAgc3VibWl0OiAnRW52aWFyIG9waW5pw7NuJyxcbiAgICAgIHVwZGF0ZTogJ0FjdHVhbGl6YXIgb3BpbmnDs24nLFxuICAgICAgdGhhbmtZb3U6ICfCoUdyYWNpYXMgcG9yIHR1IG9waW5pw7NuIScsXG4gICAgICBzdWJtaXR0ZWQ6ICdUdSBvcGluacOzbiBoYSBzaWRvIHJlZ2lzdHJhZGEnLFxuICAgICAgZXJyb3JTdWJtaXR0aW5nOiAnRXJyb3IgYWwgZW52aWFyLiBJbnRlbnRhIGRlIG51ZXZvLicsXG4gICAgICBwb3NpdGl2ZUxhYmVsOiAnU8OtLCBtdWNobycsXG4gICAgICBuZWdhdGl2ZUxhYmVsOiAnTm8gdGFudG8nLFxuICAgICAgbmVnYXRpdmVGZWVkYmFja1RpdGxlOiAnwr9DdcOpbnRhbm9zIHF1w6kgbm8gdGUgZ3VzdMOzPycsXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCAnQ29udGVudFJlYWN0aW9uJykgfHwgdHJhbnNsYXRpb25zW2tleV0gfHwga2V5O1xuICB9XG59XG4iLCJAaWYgKGlzQ29uZmlndXJlZCgpKSB7XG48ZGl2IGNsYXNzPVwiY29udGVudC1yZWFjdGlvblwiIFtjbGFzcy5kaXNhYmxlZF09XCJyZXNvbHZlZFByb3BzKCkuZGlzYWJsZWRcIiBbY2xhc3MucmVhZG9ubHldPVwicmVzb2x2ZWRQcm9wcygpLnJlYWRvbmx5XCI+XG4gIDwhLS0gTG9hZGluZyBpbmljaWFsIC0tPlxuICBAaWYgKHN0YXRlKCkuaXNMb2FkaW5nICYmICFzdGF0ZSgpLnNlbGVjdGVkVmFsdWUpIHtcbiAgPGRpdiBjbGFzcz1cImxvYWRpbmctY29udGFpbmVyXCI+XG4gICAgPGlvbi1zcGlubmVyIG5hbWU9XCJjcmVzY2VudFwiPjwvaW9uLXNwaW5uZXI+XG4gIDwvZGl2PlxuICB9IEBlbHNlIHtcbiAgPCEtLSBQcmVndW50YSAtLT5cbiAgPHAgY2xhc3M9XCJxdWVzdGlvblwiPlxuICAgIHt7IHN0YXRlKCkuc2VsZWN0ZWRWYWx1ZSA9PT0gJ25lZ2F0aXZlJyA/IHQoJ25lZ2F0aXZlRmVlZGJhY2tUaXRsZScpIDogcmVzb2x2ZWRQcm9wcygpLnF1ZXN0aW9uIH19XG4gIDwvcD5cblxuICA8IS0tIEJvdG9uZXMgZGUgcmVhY2Npw7NuIC0tPlxuICA8ZGl2IGNsYXNzPVwicmVhY3Rpb24tYnV0dG9uc1wiPlxuICAgIDxpb24tYnV0dG9uXG4gICAgICBbZmlsbF09XCJpc1NlbGVjdGVkKCdwb3NpdGl2ZScpID8gJ3NvbGlkJyA6ICdvdXRsaW5lJ1wiXG4gICAgICBzaGFwZT1cInJvdW5kXCJcbiAgICAgIGNvbG9yPVwiZGFya1wiXG4gICAgICBbYXR0ci5hcmlhLXByZXNzZWRdPVwiaXNTZWxlY3RlZCgncG9zaXRpdmUnKVwiXG4gICAgICBbZGlzYWJsZWRdPVwicmVzb2x2ZWRQcm9wcygpLmRpc2FibGVkIHx8IHJlc29sdmVkUHJvcHMoKS5yZWFkb25seVwiXG4gICAgICAoY2xpY2spPVwic2VsZWN0UmVhY3Rpb24oJ3Bvc2l0aXZlJylcIlxuICAgID5cbiAgICAgIHt7IHQoJ3Bvc2l0aXZlTGFiZWwnKSB9fVxuICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8aW9uLWJ1dHRvblxuICAgICAgW2ZpbGxdPVwiaXNTZWxlY3RlZCgnbmVnYXRpdmUnKSA/ICdzb2xpZCcgOiAnb3V0bGluZSdcIlxuICAgICAgc2hhcGU9XCJyb3VuZFwiXG4gICAgICBjb2xvcj1cImRhcmtcIlxuICAgICAgW2F0dHIuYXJpYS1wcmVzc2VkXT1cImlzU2VsZWN0ZWQoJ25lZ2F0aXZlJylcIlxuICAgICAgW2Rpc2FibGVkXT1cInJlc29sdmVkUHJvcHMoKS5kaXNhYmxlZCB8fCByZXNvbHZlZFByb3BzKCkucmVhZG9ubHlcIlxuICAgICAgKGNsaWNrKT1cInNlbGVjdFJlYWN0aW9uKCduZWdhdGl2ZScpXCJcbiAgICA+XG4gICAgICB7eyB0KCduZWdhdGl2ZUxhYmVsJykgfX1cbiAgICA8L2lvbi1idXR0b24+XG4gIDwvZGl2PlxuXG4gIDwhLS0gQ2FtcG8gZGUgY29tZW50YXJpbyAoc29sbyBzaSBoYXkgc2VsZWNjacOzbikgLS0+XG4gIEBpZiAoc2hvd0NvbW1lbnRGaWVsZCgpKSB7XG4gIDxkaXYgY2xhc3M9XCJjb21tZW50LXNlY3Rpb25cIj5cbiAgICA8aW9uLXRleHRhcmVhXG4gICAgICBbdmFsdWVdPVwic3RhdGUoKS5jb21tZW50XCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJyZXNvbHZlZFByb3BzKCkuY29tbWVudFBsYWNlaG9sZGVyXCJcbiAgICAgIFttYXhsZW5ndGhdPVwicmVzb2x2ZWRQcm9wcygpLm1heENvbW1lbnRMZW5ndGhcIlxuICAgICAgW2Rpc2FibGVkXT1cInJlc29sdmVkUHJvcHMoKS5kaXNhYmxlZFwiXG4gICAgICBbcm93c109XCIzXCJcbiAgICAgIGNsYXNzPVwiY29tbWVudC10ZXh0YXJlYVwiXG4gICAgICAoaW9uSW5wdXQpPVwidXBkYXRlQ29tbWVudCgkZXZlbnQpXCJcbiAgICA+PC9pb24tdGV4dGFyZWE+XG4gICAgPHNwYW4gY2xhc3M9XCJjaGFyLWNvdW50XCI+IHt7IHN0YXRlKCkuY29tbWVudC5sZW5ndGggfX0ve3sgcmVzb2x2ZWRQcm9wcygpLm1heENvbW1lbnRMZW5ndGggfX0gPC9zcGFuPlxuICA8L2Rpdj5cbiAgfVxuXG4gIDwhLS0gQm90w7NuIGRlIGVudsOtbyAtLT5cbiAgQGlmIChzdGF0ZSgpLnNlbGVjdGVkVmFsdWUgJiYgIXN0YXRlKCkuaXNTdWJtaXR0ZWQpIHtcbiAgPGlvbi1idXR0b24gZXhwYW5kPVwiYmxvY2tcIiBzaGFwZT1cInJvdW5kXCIgW2Rpc2FibGVkXT1cIiFjYW5TdWJtaXQoKVwiIChjbGljayk9XCJzdWJtaXRSZWFjdGlvbigpXCIgY2xhc3M9XCJzdWJtaXQtYnV0dG9uXCI+XG4gICAgQGlmIChzdGF0ZSgpLmlzTG9hZGluZykge1xuICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIj48L2lvbi1zcGlubmVyPlxuICAgIH0gQGVsc2UgeyB7eyBzdGF0ZSgpLmhhZFByZXZpb3VzUmVhY3Rpb24gPyB0KCd1cGRhdGUnKSA6IHQoJ3N1Ym1pdCcpIH19IH1cbiAgPC9pb24tYnV0dG9uPlxuICB9XG5cbiAgPCEtLSBNZW5zYWplIGRlIGNvbmZpcm1hY2nDs24gLS0+XG4gIEBpZiAoc3RhdGUoKS5pc1N1Ym1pdHRlZCkge1xuICA8cCBjbGFzcz1cInN1Ym1pdHRlZC1tZXNzYWdlXCI+e3sgdCgndGhhbmtZb3UnKSB9fTwvcD5cbiAgfVxuXG4gIDwhLS0gRXJyb3IgLS0+XG4gIEBpZiAoc3RhdGUoKS5lcnJvcikge1xuICA8cCBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj57eyBzdGF0ZSgpLmVycm9yIH19PC9wPlxuICB9IH1cbjwvZGl2PlxufVxuIl19
@@ -0,0 +1,115 @@
1
+ import { Injectable, inject } from '@angular/core';
2
+ import { Validators } from '@angular/forms';
3
+ import { ComponentStates, InputType, } from '../../components/types';
4
+ import { SolidDefaultBlock } from '../../components/atoms/button/factory';
5
+ import { I18nService } from '../i18n/i18n.service';
6
+ import * as i0 from "@angular/core";
7
+ export class RequestFormBuilderService {
8
+ constructor() {
9
+ this.i18n = inject(I18nService);
10
+ }
11
+ buildForm(schema, i18nNamespace, formName, submitLabelKey = 'submit', state = ComponentStates.ENABLED) {
12
+ const sorted = [...schema].sort((a, b) => a.order - b.order);
13
+ const fields = sorted.map(def => this.buildField(def, i18nNamespace, state));
14
+ const section = {
15
+ name: '',
16
+ order: 0,
17
+ fields,
18
+ };
19
+ return {
20
+ name: formName,
21
+ sections: [section],
22
+ actions: SolidDefaultBlock(this.i18n.t(submitLabelKey, i18nNamespace), 'submit'),
23
+ state,
24
+ };
25
+ }
26
+ buildField(def, i18nNamespace, state) {
27
+ const label = this.i18n.t(def.labelKey, i18nNamespace);
28
+ const placeholder = def.placeholder ? this.i18n.t(def.placeholder, i18nNamespace) : '';
29
+ const validators = this.parseValidators(def);
30
+ const errors = {};
31
+ if (def.required || (def.validators ?? []).includes('required')) {
32
+ errors['required'] = this.i18n.t('fieldRequired', '_common');
33
+ }
34
+ const options = def.options
35
+ ? def.options.map(o => ({ id: o.id, name: o.name, order: o.order }))
36
+ : undefined;
37
+ return {
38
+ token: def.name,
39
+ name: def.name,
40
+ label,
41
+ placeholder,
42
+ hint: '',
43
+ type: this.parseInputType(def.type),
44
+ order: def.order,
45
+ validators,
46
+ options,
47
+ errors,
48
+ state,
49
+ };
50
+ }
51
+ parseValidators(def) {
52
+ const result = [];
53
+ const entries = def.validators ?? [];
54
+ const hasRequired = def.required || entries.includes('required');
55
+ if (hasRequired) {
56
+ result.push(Validators.required);
57
+ }
58
+ for (const entry of entries) {
59
+ if (entry === 'required') {
60
+ // already handled above
61
+ continue;
62
+ }
63
+ if (entry === 'email') {
64
+ result.push(Validators.email);
65
+ continue;
66
+ }
67
+ const minLengthMatch = entry.match(/^minLength:(\d+)$/);
68
+ if (minLengthMatch) {
69
+ result.push(Validators.minLength(Number(minLengthMatch[1])));
70
+ continue;
71
+ }
72
+ const maxLengthMatch = entry.match(/^maxLength:(\d+)$/);
73
+ if (maxLengthMatch) {
74
+ result.push(Validators.maxLength(Number(maxLengthMatch[1])));
75
+ continue;
76
+ }
77
+ const minMatch = entry.match(/^min:(\d+)$/);
78
+ if (minMatch) {
79
+ result.push(Validators.min(Number(minMatch[1])));
80
+ continue;
81
+ }
82
+ const maxMatch = entry.match(/^max:(\d+)$/);
83
+ if (maxMatch) {
84
+ result.push(Validators.max(Number(maxMatch[1])));
85
+ continue;
86
+ }
87
+ }
88
+ return result;
89
+ }
90
+ parseInputType(typeStr) {
91
+ const map = {
92
+ TEXT: InputType.TEXT,
93
+ TEXTAREA: InputType.TEXTAREA,
94
+ EMAIL: InputType.EMAIL,
95
+ NUMBER: InputType.NUMBER,
96
+ DATE: InputType.DATE,
97
+ SELECT: InputType.SELECT,
98
+ MULTI_SELECT: InputType.MULTI_SELECT,
99
+ RADIO: InputType.RADIO,
100
+ TOGGLE: InputType.TOGGLE,
101
+ CHECK: InputType.CHECK,
102
+ FILE: InputType.FILE,
103
+ PHONE: InputType.PHONE,
104
+ CURRENCY: InputType.CURRENCY,
105
+ };
106
+ return map[typeStr] ?? InputType.TEXT;
107
+ }
108
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RequestFormBuilderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
109
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RequestFormBuilderService, providedIn: 'root' }); }
110
+ }
111
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RequestFormBuilderService, decorators: [{
112
+ type: Injectable,
113
+ args: [{ providedIn: 'root' }]
114
+ }] });
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1mb3JtLWJ1aWxkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvcmVxdWVzdHMvcmVxdWVzdC1mb3JtLWJ1aWxkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUVMLGVBQWUsRUFLZixTQUFTLEdBQ1YsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBSW5ELE1BQU0sT0FBTyx5QkFBeUI7SUFEdEM7UUFFVSxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0tBMEhwQztJQXhIQyxTQUFTLENBQ1AsTUFBd0IsRUFDeEIsYUFBcUIsRUFDckIsUUFBZ0IsRUFDaEIsaUJBQXlCLFFBQVEsRUFDakMsUUFBd0IsZUFBZSxDQUFDLE9BQU87UUFFL0MsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTdELE1BQU0sTUFBTSxHQUFvQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFOUYsTUFBTSxPQUFPLEdBQWdCO1lBQzNCLElBQUksRUFBRSxFQUFFO1lBQ1IsS0FBSyxFQUFF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LEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSztZQUN0QixNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU07WUFDeEIsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJO1lBQ3BCLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTTtZQUN4QixZQUFZLEVBQUUsU0FBUyxDQUFDLFlBQVk7WUFDcEMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLO1lBQ3RCLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTTtZQUN4QixLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUs7WUFDdEIsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJO1lBQ3BCLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSztZQUN0QixRQUFRLEVBQUUsU0FBUyxDQUFDLFFBQVE7U0FDN0IsQ0FBQztRQUNGLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUM7SUFDeEMsQ0FBQzsrR0ExSFUseUJBQXlCO21IQUF6Qix5QkFBeUIsY0FEWixNQUFNOzs0RkFDbkIseUJBQXlCO2tCQURyQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7XG4gIENvbXBvbmVudFN0YXRlLFxuICBDb21wb25lbnRTdGF0ZXMsXG4gIEZvcm1NZXRhZGF0YSxcbiAgRm9ybVNlY3Rpb24sXG4gIElucHV0TWV0YWRhdGEsXG4gIElucHV0T3B0aW9uLFxuICBJbnB1dFR5cGUsXG59IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvdHlwZXMnO1xuaW1wb3J0IHsgU29saWREZWZhdWx0QmxvY2sgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2F0b21zL2J1dHRvbi9mYWN0b3J5JztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vaTE4bi9pMThuLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmllbGRTY2hlbWFEZWYgfSBmcm9tICcuL3R5cGVzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBSZXF1ZXN0Rm9ybUJ1aWxkZXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcblxuICBidWlsZEZvcm0oXG4gICAgc2NoZW1hOiBGaWVsZFNjaGVtYURlZltdLFxuICAgIGkxOG5OYW1lc3BhY2U6IHN0cmluZyxcbiAgICBmb3JtTmFtZTogc3RyaW5nLFxuICAgIHN1Ym1pdExhYmVsS2V5OiBzdHJpbmcgPSAnc3VibWl0JyxcbiAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGUgPSBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRFxuICApOiBGb3JtTWV0YWRhdGEge1xuICAgIGNvbnN0IHNvcnRlZCA9IFsuLi5zY2hlbWFdLnNvcnQoKGEsIGIpID0+IGEub3JkZXIgLSBiLm9yZGVyKTtcblxuICAgIGNvbnN0IGZpZWxkczogSW5wdXRNZXRhZGF0YVtdID0gc29ydGVkLm1hcChkZWYgPT4gdGhpcy5idWlsZEZpZWxkKGRlZiwgaTE4bk5hbWVzcGFjZSwgc3RhdGUpKTtcblxuICAgIGNvbnN0IHNlY3Rpb246IEZvcm1TZWN0aW9uID0ge1xuICAgICAgbmFtZTogJycsXG4gICAgICBvcmRlcjogMCxcbiAgICAgIGZpZWxkcyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IGZvcm1OYW1lLFxuICAgICAgc2VjdGlvbnM6IFtzZWN0aW9uXSxcbiAgICAgIGFjdGlvbnM6IFNvbGlkRGVmYXVsdEJsb2NrKHRoaXMuaTE4bi50KHN1Ym1pdExhYmVsS2V5LCBpMThuTmFtZXNwYWNlKSwgJ3N1Ym1pdCcpLFxuICAgICAgc3RhdGUsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRGaWVsZChcbiAgICBkZWY6IEZpZWxkU2NoZW1hRGVmLFxuICAgIGkxOG5OYW1lc3BhY2U6IHN0cmluZyxcbiAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVcbiAgKTogSW5wdXRNZXRhZGF0YSB7XG4gICAgY29uc3QgbGFiZWwgPSB0aGlzLmkxOG4udChkZWYubGFiZWxLZXksIGkxOG5OYW1lc3BhY2UpO1xuICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gZGVmLnBsYWNlaG9sZGVyID8gdGhpcy5pMThuLnQoZGVmLnBsYWNlaG9sZGVyLCBpMThuTmFtZXNwYWNlKSA6ICcnO1xuXG4gICAgY29uc3QgdmFsaWRhdG9ycyA9IHRoaXMucGFyc2VWYWxpZGF0b3JzKGRlZik7XG5cbiAgICBjb25zdCBlcnJvcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICBpZiAoZGVmLnJlcXVpcmVkIHx8IChkZWYudmFsaWRhdG9ycyA/PyBbXSkuaW5jbHVkZXMoJ3JlcXVpcmVkJykpIHtcbiAgICAgIGVycm9yc1sncmVxdWlyZWQnXSA9IHRoaXMuaTE4bi50KCdmaWVsZFJlcXVpcmVkJywgJ19jb21tb24nKTtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25zOiBJbnB1dE9wdGlvbltdIHwgdW5kZWZpbmVkID0gZGVmLm9wdGlvbnNcbiAgICAgID8gZGVmLm9wdGlvbnMubWFwKG8gPT4gKHsgaWQ6IG8uaWQsIG5hbWU6IG8ubmFtZSwgb3JkZXI6IG8ub3JkZXIgfSkpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiB7XG4gICAgICB0b2tlbjogZGVmLm5hbWUsXG4gICAgICBuYW1lOiBkZWYubmFtZSxcbiAgICAgIGxhYmVsLFxuICAgICAgcGxhY2Vob2xkZXIsXG4gICAgICBoaW50OiAnJyxcbiAgICAgIHR5cGU6IHRoaXMucGFyc2VJbnB1dFR5cGUoZGVmLnR5cGUpLFxuICAgICAgb3JkZXI6IGRlZi5vcmRlcixcbiAgICAgIHZhbGlkYXRvcnMsXG4gICAgICBvcHRpb25zLFxuICAgICAgZXJyb3JzLFxuICAgICAgc3RhdGUsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VWYWxpZGF0b3JzKGRlZjogRmllbGRTY2hlbWFEZWYpOiBWYWxpZGF0b3JGbltdIHtcbiAgICBjb25zdCByZXN1bHQ6IFZhbGlkYXRvckZuW10gPSBbXTtcbiAgICBjb25zdCBlbnRyaWVzID0gZGVmLnZhbGlkYXRvcnMgPz8gW107XG4gICAgY29uc3QgaGFzUmVxdWlyZWQgPSBkZWYucmVxdWlyZWQgfHwgZW50cmllcy5pbmNsdWRlcygncmVxdWlyZWQnKTtcblxuICAgIGlmIChoYXNSZXF1aXJlZCkge1xuICAgICAgcmVzdWx0LnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICBpZiAoZW50cnkgPT09ICdyZXF1aXJlZCcpIHtcbiAgICAgICAgLy8gYWxyZWFkeSBoYW5kbGVkIGFib3ZlXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKGVudHJ5ID09PSAnZW1haWwnKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKFZhbGlkYXRvcnMuZW1haWwpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1pbkxlbmd0aE1hdGNoID0gZW50cnkubWF0Y2goL15taW5MZW5ndGg6KFxcZCspJC8pO1xuICAgICAgaWYgKG1pbkxlbmd0aE1hdGNoKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKE51bWJlcihtaW5MZW5ndGhNYXRjaFsxXSkpKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCBtYXhMZW5ndGhNYXRjaCA9IGVudHJ5Lm1hdGNoKC9ebWF4TGVuZ3RoOihcXGQrKSQvKTtcbiAgICAgIGlmIChtYXhMZW5ndGhNYXRjaCkge1xuICAgICAgICByZXN1bHQucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aChOdW1iZXIobWF4TGVuZ3RoTWF0Y2hbMV0pKSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgbWluTWF0Y2ggPSBlbnRyeS5tYXRjaCgvXm1pbjooXFxkKykkLyk7XG4gICAgICBpZiAobWluTWF0Y2gpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goVmFsaWRhdG9ycy5taW4oTnVtYmVyKG1pbk1hdGNoWzFdKSkpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1heE1hdGNoID0gZW50cnkubWF0Y2goL15tYXg6KFxcZCspJC8pO1xuICAgICAgaWYgKG1heE1hdGNoKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKFZhbGlkYXRvcnMubWF4KE51bWJlcihtYXhNYXRjaFsxXSkpKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VJbnB1dFR5cGUodHlwZVN0cjogc3RyaW5nKTogSW5wdXRUeXBlIHtcbiAgICBjb25zdCBtYXA6IFJlY29yZDxzdHJpbmcsIElucHV0VHlwZT4gPSB7XG4gICAgICBURVhUOiBJbnB1dFR5cGUuVEVYVCxcbiAgICAgIFRFWFRBUkVBOiBJbnB1dFR5cGUuVEVYVEFSRUEsXG4gICAgICBFTUFJTDogSW5wdXRUeXBlLkVNQUlMLFxuICAgICAgTlVNQkVSOiBJbnB1dFR5cGUuTlVNQkVSLFxuICAgICAgREFURTogSW5wdXRUeXBlLkRBVEUsXG4gICAgICBTRUxFQ1Q6IElucHV0VHlwZS5TRUxFQ1QsXG4gICAgICBNVUxUSV9TRUxFQ1Q6IElucHV0VHlwZS5NVUxUSV9TRUxFQ1QsXG4gICAgICBSQURJTzogSW5wdXRUeXBlLlJBRElPLFxuICAgICAgVE9HR0xFOiBJbnB1dFR5cGUuVE9HR0xFLFxuICAgICAgQ0hFQ0s6IElucHV0VHlwZS5DSEVDSyxcbiAgICAgIEZJTEU6IElucHV0VHlwZS5GSUxFLFxuICAgICAgUEhPTkU6IElucHV0VHlwZS5QSE9ORSxcbiAgICAgIENVUlJFTkNZOiBJbnB1dFR5cGUuQ1VSUkVOQ1ksXG4gICAgfTtcbiAgICByZXR1cm4gbWFwW3R5cGVTdHJdID8/IElucHV0VHlwZS5URVhUO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,83 @@
1
+ import { Injectable, Inject } from '@angular/core';
2
+ import { VALTECH_AUTH_CONFIG } from '../auth/config';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common/http";
5
+ export class RequestService {
6
+ constructor(config, http) {
7
+ this.config = config;
8
+ this.http = http;
9
+ }
10
+ get baseUrl() {
11
+ return `${this.config.apiUrl}/v2/requests`;
12
+ }
13
+ get typesUrl() {
14
+ return `${this.config.apiUrl}/v2/request-types`;
15
+ }
16
+ // ── Requests ──
17
+ createRequest(payload) {
18
+ return this.http.post(this.baseUrl, payload);
19
+ }
20
+ createAnonymousRequest(payload) {
21
+ return this.http.post(`${this.baseUrl}/anonymous`, payload);
22
+ }
23
+ listRequests(params) {
24
+ const qs = this.buildQueryString(params);
25
+ return this.http.get(`${this.baseUrl}${qs}`);
26
+ }
27
+ listMyRequests(params) {
28
+ const qs = this.buildQueryString(params);
29
+ return this.http.get(`${this.baseUrl}/my${qs}`);
30
+ }
31
+ getRequest(id) {
32
+ return this.http.get(`${this.baseUrl}/${id}`);
33
+ }
34
+ updateRequest(id, payload) {
35
+ return this.http.put(`${this.baseUrl}/${id}`, payload);
36
+ }
37
+ transition(id, payload) {
38
+ return this.http.post(`${this.baseUrl}/${id}/transition`, payload);
39
+ }
40
+ // ── Comments ──
41
+ addComment(requestId, payload) {
42
+ return this.http.post(`${this.baseUrl}/${requestId}/comments`, payload);
43
+ }
44
+ listComments(requestId) {
45
+ return this.http.get(`${this.baseUrl}/${requestId}/comments`);
46
+ }
47
+ // ── Request Types ──
48
+ listRequestTypes() {
49
+ return this.http.get(this.typesUrl);
50
+ }
51
+ getRequestType(typeId) {
52
+ return this.http.get(`${this.typesUrl}/${typeId}`);
53
+ }
54
+ createRequestType(payload) {
55
+ return this.http.post(this.typesUrl, payload);
56
+ }
57
+ // ── Helpers ──
58
+ buildQueryString(params) {
59
+ if (!params)
60
+ return '';
61
+ const qs = new URLSearchParams();
62
+ if (params.type)
63
+ qs.set('type', params.type);
64
+ if (params.status)
65
+ qs.set('status', params.status);
66
+ if (params.limit != null)
67
+ qs.set('limit', String(params.limit));
68
+ if (params.nextToken)
69
+ qs.set('nextToken', params.nextToken);
70
+ const str = qs.toString();
71
+ return str ? `?${str}` : '';
72
+ }
73
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RequestService, deps: [{ token: VALTECH_AUTH_CONFIG }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
74
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RequestService, providedIn: 'root' }); }
75
+ }
76
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RequestService, decorators: [{
77
+ type: Injectable,
78
+ args: [{ providedIn: 'root' }]
79
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
80
+ type: Inject,
81
+ args: [VALTECH_AUTH_CONFIG]
82
+ }] }, { type: i1.HttpClient }] });
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9yZXF1ZXN0cy9yZXF1ZXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQW1CckQsTUFBTSxPQUFPLGNBQWM7SUFDekIsWUFDdUMsTUFBeUIsRUFDdEQsSUFBZ0I7UUFEYSxXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQUN0RCxTQUFJLEdBQUosSUFBSSxDQUFZO0lBQ3ZCLENBQUM7SUFFSixJQUFZLE9BQU87UUFDakIsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxjQUFjLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQVksUUFBUTtRQUNsQixPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixDQUFDO0lBQ2xELENBQUM7SUFFRCxpQkFBaUI7SUFFakIsYUFBYSxDQUNYLE9BQTZCO1FBRTdCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQTZDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVELHNCQUFzQixDQUNwQixPQUE2QjtRQUU3QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNuQixHQUFHLElBQUksQ0FBQyxPQUFPLFlBQVksRUFDM0IsT0FBTyxDQUNSLENBQUM7SUFDSixDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQTJCO1FBQ3RDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUF1QixHQUFHLElBQUks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QUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM5QixDQUFDOytHQXhGVSxjQUFjLGtCQUVmLG1CQUFtQjttSEFGbEIsY0FBYyxjQURELE1BQU07OzRGQUNuQixjQUFjO2tCQUQxQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBRzdCLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBWQUxURUNIX0FVVEhfQ09ORklHIH0gZnJvbSAnLi4vYXV0aC9jb25maWcnO1xuaW1wb3J0IHsgVmFsdGVjaEF1dGhDb25maWcgfSBmcm9tICcuLi9hdXRoL3R5cGVzJztcbmltcG9ydCB7XG4gIEFwcFJlcXVlc3QsXG4gIFJlcXVlc3RDb21tZW50LFxuICBSZXF1ZXN0VHlwZUNvbmZpZyxcbiAgUmVxdWVzdFN0YXR1cyxcbiAgQ3JlYXRlUmVxdWVzdFBheWxvYWQsXG4gIFVwZGF0ZVJlcXVlc3RQYXlsb2FkLFxuICBUcmFuc2l0aW9uUGF5bG9hZCxcbiAgQWRkQ29tbWVudFBheWxvYWQsXG4gIExpc3RSZXF1ZXN0c1BhcmFtcyxcbiAgTGlzdFJlcXVlc3RzUmVzcG9uc2UsXG4gIExpc3RDb21tZW50c1Jlc3BvbnNlLFxuICBMaXN0UmVxdWVzdFR5cGVzUmVzcG9uc2UsXG4gIENyZWF0ZVJlcXVlc3RUeXBlUGF5bG9hZCxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUmVxdWVzdFNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFZBTFRFQ0hfQVVUSF9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBWYWx0ZWNoQXV0aENvbmZpZyxcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnRcbiAgKSB7fVxuXG4gIHByaXZhdGUgZ2V0IGJhc2VVcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5jb25maWcuYXBpVXJsfS92Mi9yZXF1ZXN0c2A7XG4gIH1cblxuICBwcml2YXRlIGdldCB0eXBlc1VybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmNvbmZpZy5hcGlVcmx9L3YyL3JlcXVlc3QtdHlwZXNgO1xuICB9XG5cbiAgLy8g4pSA4pSAIFJlcXVlc3RzIOKUgOKUgFxuXG4gIGNyZWF0ZVJlcXVlc3QoXG4gICAgcGF5bG9hZDogQ3JlYXRlUmVxdWVzdFBheWxvYWRcbiAgKTogT2JzZXJ2YWJsZTx7IHJlcXVlc3RJZDogc3RyaW5nOyByZXF1ZXN0OiBBcHBSZXF1ZXN0IH0+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8eyByZXF1ZXN0SWQ6IHN0cmluZzsgcmVxdWVzdDogQXBwUmVxdWVzdCB9Pih0aGlzLmJhc2VVcmwsIHBheWxvYWQpO1xuICB9XG5cbiAgY3JlYXRlQW5vbnltb3VzUmVxdWVzdChcbiAgICBwYXlsb2FkOiBDcmVhdGVSZXF1ZXN0UGF5bG9hZFxuICApOiBPYnNlcnZhYmxlPHsgcmVxdWVzdElkOiBzdHJpbmc7IHJlcXVlc3Q6IEFwcFJlcXVlc3QgfT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDx7IHJlcXVlc3RJZDogc3RyaW5nOyByZXF1ZXN0OiBBcHBSZXF1ZXN0IH0+KFxuICAgICAgYCR7dGhpcy5iYXNlVXJsfS9hbm9ueW1vdXNgLFxuICAgICAgcGF5bG9hZFxuICAgICk7XG4gIH1cblxuICBsaXN0UmVxdWVzdHMocGFyYW1zPzogTGlzdFJlcXVlc3RzUGFyYW1zKTogT2JzZXJ2YWJsZTxMaXN0UmVxdWVzdHNSZXNwb25zZT4ge1xuICAgIGNvbnN0IHFzID0gdGhpcy5idWlsZFF1ZXJ5U3RyaW5nKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TGlzdFJlcXVlc3RzUmVzcG9uc2U+KGAke3RoaXMuYmFzZVVybH0ke3FzfWApO1xuICB9XG5cbiAgbGlzdE15UmVxdWVzdHMocGFyYW1zPzogTGlzdFJlcXVlc3RzUGFyYW1zKTogT2JzZXJ2YWJsZTxMaXN0UmVxdWVzdHNSZXNwb25zZT4ge1xuICAgIGNvbnN0IHFzID0gdGhpcy5idWlsZFF1ZXJ5U3RyaW5nKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TGlzdFJlcXVlc3RzUmVzcG9uc2U+KGAke3RoaXMuYmFzZVVybH0vbXkke3FzfWApO1xuICB9XG5cbiAgZ2V0UmVxdWVzdChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxBcHBSZXF1ZXN0PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBwUmVxdWVzdD4oYCR7dGhpcy5iYXNlVXJsfS8ke2lkfWApO1xuICB9XG5cbiAgdXBkYXRlUmVxdWVzdChpZDogc3RyaW5nLCBwYXlsb2FkOiBVcGRhdGVSZXF1ZXN0UGF5bG9hZCk6IE9ic2VydmFibGU8QXBwUmVxdWVzdD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PEFwcFJlcXVlc3Q+KGAke3RoaXMuYmFzZVVybH0vJHtpZH1gLCBwYXlsb2FkKTtcbiAgfVxuXG4gIHRyYW5zaXRpb24oaWQ6IHN0cmluZywgcGF5bG9hZDogVHJhbnNpdGlvblBheWxvYWQpOiBPYnNlcnZhYmxlPHsgc3RhdHVzOiBSZXF1ZXN0U3RhdHVzIH0+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8eyBzdGF0dXM6IFJlcXVlc3RTdGF0dXMgfT4oYCR7dGhpcy5iYXNlVXJsfS8ke2lkfS90cmFuc2l0aW9uYCwgcGF5bG9hZCk7XG4gIH1cblxuICAvLyDilIDilIAgQ29tbWVudHMg4pSA4pSAXG5cbiAgYWRkQ29tbWVudChyZXF1ZXN0SWQ6IHN0cmluZywgcGF5bG9hZDogQWRkQ29tbWVudFBheWxvYWQpOiBPYnNlcnZhYmxlPFJlcXVlc3RDb21tZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFJlcXVlc3RDb21tZW50PihgJHt0aGlzLmJhc2VVcmx9LyR7cmVxdWVzdElkfS9jb21tZW50c2AsIHBheWxvYWQpO1xuICB9XG5cbiAgbGlzdENvbW1lbnRzKHJlcXVlc3RJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxMaXN0Q29tbWVudHNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PExpc3RDb21tZW50c1Jlc3BvbnNlPihgJHt0aGlzLmJhc2VVcmx9LyR7cmVxdWVzdElkfS9jb21tZW50c2ApO1xuICB9XG5cbiAgLy8g4pSA4pSAIFJlcXVlc3QgVHlwZXMg4pSA4pSAXG5cbiAgbGlzdFJlcXVlc3RUeXBlcygpOiBPYnNlcnZhYmxlPExpc3RSZXF1ZXN0VHlwZXNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PExpc3RSZXF1ZXN0VHlwZXNSZXNwb25zZT4odGhpcy50eXBlc1VybCk7XG4gIH1cblxuICBnZXRSZXF1ZXN0VHlwZSh0eXBlSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8UmVxdWVzdFR5cGVDb25maWc+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxSZXF1ZXN0VHlwZUNvbmZpZz4oYCR7dGhpcy50eXBlc1VybH0vJHt0eXBlSWR9YCk7XG4gIH1cblxuICBjcmVhdGVSZXF1ZXN0VHlwZShwYXlsb2FkOiBDcmVhdGVSZXF1ZXN0VHlwZVBheWxvYWQpOiBPYnNlcnZhYmxlPFJlcXVlc3RUeXBlQ29uZmlnPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFJlcXVlc3RUeXBlQ29uZmlnPih0aGlzLnR5cGVzVXJsLCBwYXlsb2FkKTtcbiAgfVxuXG4gIC8vIOKUgOKUgCBIZWxwZXJzIOKUgOKUgFxuXG4gIHByaXZhdGUgYnVpbGRRdWVyeVN0cmluZyhwYXJhbXM/OiBMaXN0UmVxdWVzdHNQYXJhbXMpOiBzdHJpbmcge1xuICAgIGlmICghcGFyYW1zKSByZXR1cm4gJyc7XG4gICAgY29uc3QgcXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgaWYgKHBhcmFtcy50eXBlKSBxcy5zZXQoJ3R5cGUnLCBwYXJhbXMudHlwZSk7XG4gICAgaWYgKHBhcmFtcy5zdGF0dXMpIHFzLnNldCgnc3RhdHVzJywgcGFyYW1zLnN0YXR1cyk7XG4gICAgaWYgKHBhcmFtcy5saW1pdCAhPSBudWxsKSBxcy5zZXQoJ2xpbWl0JywgU3RyaW5nKHBhcmFtcy5saW1pdCkpO1xuICAgIGlmIChwYXJhbXMubmV4dFRva2VuKSBxcy5zZXQoJ25leHRUb2tlbicsIHBhcmFtcy5uZXh0VG9rZW4pO1xuICAgIGNvbnN0IHN0ciA9IHFzLnRvU3RyaW5nKCk7XG4gICAgcmV0dXJuIHN0ciA/IGA/JHtzdHJ9YCA6ICcnO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,9 @@
1
+ export const REQUEST_STATUSES = [
2
+ 'pending',
3
+ 'in_review',
4
+ 'approved',
5
+ 'rejected',
6
+ 'cancelled',
7
+ 'closed',
8
+ ];
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3JlcXVlc3RzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFvQjtJQUMvQyxTQUFTO0lBQ1QsV0FBVztJQUNYLFVBQVU7SUFDVixVQUFVO0lBQ1YsV0FBVztJQUNYLFFBQVE7Q0FDVCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgUmVxdWVzdFN0YXR1cyA9XG4gIHwgJ3BlbmRpbmcnXG4gIHwgJ2luX3JldmlldydcbiAgfCAnYXBwcm92ZWQnXG4gIHwgJ3JlamVjdGVkJ1xuICB8ICdjYW5jZWxsZWQnXG4gIHwgJ2Nsb3NlZCc7XG5cbmV4cG9ydCBjb25zdCBSRVFVRVNUX1NUQVRVU0VTOiBSZXF1ZXN0U3RhdHVzW10gPSBbXG4gICdwZW5kaW5nJyxcbiAgJ2luX3JldmlldycsXG4gICdhcHByb3ZlZCcsXG4gICdyZWplY3RlZCcsXG4gICdjYW5jZWxsZWQnLFxuICAnY2xvc2VkJyxcbl07XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdEFjdG9yIHtcbiAgdXNlcklkPzogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIHBob25lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcFJlcXVlc3Qge1xuICBpZDogc3RyaW5nO1xuICBhcHBJZDogc3RyaW5nO1xuICBvcmdJZDogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG4gIHN0YXR1czogUmVxdWVzdFN0YXR1cztcbiAgdGl0bGU6IHN0cmluZztcbiAgZmllbGRzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgdGFncz86IHN0cmluZ1tdO1xuICBwcmlvcml0eT86IHN0cmluZztcbiAgc3VibWl0dGVyOiBSZXF1ZXN0QWN0b3I7XG4gIGFzc2lnbmVlPzogUmVxdWVzdEFjdG9yO1xuICBkdWVBdD86IHN0cmluZztcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIHVwZGF0ZWRBdDogc3RyaW5nO1xuICBjbG9zZWRBdD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0Q29tbWVudCB7XG4gIGNvbW1lbnRJZDogc3RyaW5nO1xuICByZXF1ZXN0SWQ6IHN0cmluZztcbiAgYXV0aG9yOiBSZXF1ZXN0QWN0b3I7XG4gIGJvZHk6IHN0cmluZztcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmllbGRPcHRpb24ge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIG9yZGVyOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmllbGRTY2hlbWFEZWYge1xuICAvKiogSW5wdXRUeXBlIGVudW0gbmFtZSBhcyBzdHJpbmc6ICdURVhUJywgJ1RFWFRBUkVBJywgJ1NFTEVDVCcsIGV0Yy4gKi9cbiAgdHlwZTogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGxhYmVsS2V5OiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICByZXF1aXJlZDogYm9vbGVhbjtcbiAgLyoqIGUuZy4gJ3JlcXVpcmVkJywgJ2VtYWlsJywgJ21heExlbmd0aDo1MDAnLCAnbWluTGVuZ3RoOjMnICovXG4gIHZhbGlkYXRvcnM/OiBzdHJpbmdbXTtcbiAgb3B0aW9ucz86IEZpZWxkT3B0aW9uW107XG4gIG9yZGVyOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdFR5cGVDb25maWcge1xuICB0eXBlSWQ6IHN0cmluZztcbiAgYXBwSWQ6IHN0cmluZztcbiAgb3JnSWQ6IHN0cmluZztcbiAgbGFiZWxFczogc3RyaW5nO1xuICBsYWJlbEVuOiBzdHJpbmc7XG4gIGZpZWxkU2NoZW1hOiBGaWVsZFNjaGVtYURlZltdO1xuICBhbGxvd0Fub255bW91czogYm9vbGVhbjtcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIHVwZGF0ZWRBdDogc3RyaW5nO1xufVxuXG4vLyDilIDilIAgUmVxdWVzdCAvIFJlc3BvbnNlIOKUgOKUgFxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVJlcXVlc3RQYXlsb2FkIHtcbiAgdHlwZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBmaWVsZHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgdGFncz86IHN0cmluZ1tdO1xuICBwcmlvcml0eT86IHN0cmluZztcbiAgLyoqIFBhcmEgc29saWNpdHVkZXMgYW7Ds25pbWFzICovXG4gIHN1Ym1pdHRlcj86IFJlcXVlc3RBY3RvcjtcbiAgZHVlQXQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlUmVxdWVzdFBheWxvYWQge1xuICB0aXRsZT86IHN0cmluZztcbiAgZmllbGRzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHRhZ3M/OiBzdHJpbmdbXTtcbiAgcHJpb3JpdHk/OiBzdHJpbmc7XG4gIGFzc2lnbmVlPzogUmVxdWVzdEFjdG9yO1xuICBkdWVBdD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2l0aW9uUGF5bG9hZCB7XG4gIHN0YXR1czogUmVxdWVzdFN0YXR1cztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGRDb21tZW50UGF5bG9hZCB7XG4gIGJvZHk6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0UmVxdWVzdHNQYXJhbXMge1xuICB0eXBlPzogc3RyaW5nO1xuICBzdGF0dXM/OiBzdHJpbmc7XG4gIGxpbWl0PzogbnVtYmVyO1xuICBuZXh0VG9rZW4/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdFJlcXVlc3RzUmVzcG9uc2Uge1xuICByZXF1ZXN0czogQXBwUmVxdWVzdFtdO1xuICBuZXh0VG9rZW4/OiBzdHJpbmc7XG4gIGNvdW50OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdENvbW1lbnRzUmVzcG9uc2Uge1xuICBjb21tZW50czogUmVxdWVzdENvbW1lbnRbXTtcbiAgY291bnQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0UmVxdWVzdFR5cGVzUmVzcG9uc2Uge1xuICB0eXBlczogUmVxdWVzdFR5cGVDb25maWdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVSZXF1ZXN0VHlwZVBheWxvYWQge1xuICB0eXBlSWQ6IHN0cmluZztcbiAgbGFiZWxFczogc3RyaW5nO1xuICBsYWJlbEVuOiBzdHJpbmc7XG4gIGZpZWxkU2NoZW1hOiBGaWVsZFNjaGVtYURlZltdO1xuICBhbGxvd0Fub255bW91czogYm9vbGVhbjtcbn1cbiJdfQ==
@@ -2,5 +2,5 @@
2
2
  * Current version of valtech-components.
3
3
  * This is automatically updated during the publish process.
4
4
  */
5
- export const VERSION = '2.0.938';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzIuMC45MzgnO1xuIl19
5
+ export const VERSION = '2.0.939';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzIuMC45MzknO1xuIl19