@hmcts/ccd-case-ui-toolkit 7.1.32-ungrey-back-button → 7.1.32-ungrey-back-button-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/esm2022/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.mjs +12 -9
  2. package/esm2022/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.mjs +19 -15
  3. package/esm2022/lib/shared/components/palette/base-field/abstract-field-write-journey.component.mjs +1 -1
  4. package/esm2022/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.mjs +8 -3
  5. package/esm2022/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.mjs +3 -3
  6. package/esm2022/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.mjs +36 -29
  7. package/esm2022/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.mjs +1 -1
  8. package/esm2022/lib/shared/components/palette/case-flag/read-case-flag-field.component.mjs +4 -3
  9. package/esm2022/lib/shared/components/palette/case-flag/write-case-flag-field.component.mjs +1 -1
  10. package/esm2022/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.mjs +2 -5
  11. package/esm2022/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.mjs +1 -1
  12. package/esm2022/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.mjs +1 -1
  13. package/esm2022/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.mjs +5 -5
  14. package/esm2022/lib/shared/services/journey/multipage-component-state.service.mjs +1 -1
  15. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +78 -61
  16. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  17. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts +1 -0
  18. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -1
  19. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts +3 -0
  20. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts.map +1 -1
  21. package/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.d.ts +4 -2
  22. package/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.d.ts.map +1 -1
  23. package/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.d.ts +1 -1
  24. package/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.d.ts.map +1 -1
  25. package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts +7 -2
  26. package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts.map +1 -1
  27. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.d.ts.map +1 -1
  28. package/lib/shared/components/palette/case-flag/read-case-flag-field.component.d.ts.map +1 -1
  29. package/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.d.ts +0 -1
  30. package/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.d.ts.map +1 -1
  31. package/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.d.ts +1 -1
  32. package/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.d.ts.map +1 -1
  33. package/lib/shared/services/journey/multipage-component-state.service.d.ts.map +1 -1
  34. package/package.json +1 -1
@@ -441,22 +441,26 @@ export class CaseEditSubmitComponent {
441
441
  }
442
442
  cancel() {
443
443
  if (this.caseEdit.isLinkedCasesSubmission) {
444
- // if they cancel on the last CYA page we should ensure there is no unsubmitted data in the caseDetails
445
- const linkedCasesTab = this.caseEdit.caseDetails.tabs.find((tab) => tab?.fields?.some((field) => field.id === 'caseLinks'))?.fields?.[0] ?? null;
446
- const initalLinks = this.linkedCasesService.initialCaseLinkRefs;
447
- if (linkedCasesTab && linkedCasesTab?.value.length !== initalLinks.length) {
448
- const initialCaseRefs = this.linkedCasesService.initialCaseLinkRefs;
449
- linkedCasesTab.value = linkedCasesTab.value.filter((item) => initialCaseRefs.includes(item.value.CaseReference));
450
- }
451
- this.linkedCasesService.resetLinkedCaseData();
444
+ this.handleLinkedCasesSubmission();
445
+ }
446
+ this.emitCancelEvent();
447
+ }
448
+ handleLinkedCasesSubmission() {
449
+ const linkedCasesTab = this.getLinkedCasesTab();
450
+ const initialLinks = this.linkedCasesService.initialCaseLinkRefs;
451
+ if (linkedCasesTab && linkedCasesTab.value.length !== initialLinks.length) {
452
+ linkedCasesTab.value = linkedCasesTab.value.filter((item) => initialLinks.includes(item.value.CaseReference));
452
453
  }
454
+ this.linkedCasesService.resetLinkedCaseData();
455
+ }
456
+ getLinkedCasesTab() {
457
+ return this.caseEdit.caseDetails.tabs.find((tab) => tab?.fields?.some((field) => field.id === 'caseLinks'))?.fields?.[0] ?? null;
458
+ }
459
+ emitCancelEvent() {
453
460
  if (this.eventTrigger.can_save_draft) {
454
- if (this.route.snapshot.queryParamMap.get(CaseEditComponent.ORIGIN_QUERY_PARAM) === 'viewDraft') {
455
- this.caseEdit.cancelled.emit({ status: CaseEditPageComponent.RESUMED_FORM_DISCARD });
456
- }
457
- else {
458
- this.caseEdit.cancelled.emit({ status: CaseEditPageComponent.NEW_FORM_DISCARD });
459
- }
461
+ const origin = this.route.snapshot.queryParamMap.get(CaseEditComponent.ORIGIN_QUERY_PARAM);
462
+ const status = origin === 'viewDraft' ? CaseEditPageComponent.RESUMED_FORM_DISCARD : CaseEditPageComponent.NEW_FORM_DISCARD;
463
+ this.caseEdit.cancelled.emit({ status });
460
464
  }
461
465
  else {
462
466
  this.caseEdit.cancelled.emit();
@@ -626,4 +630,4 @@ export class CaseEditSubmitComponent {
626
630
  args: [{ selector: 'ccd-case-edit-submit', template: "<div>\n <!-- Event trigger name -->\n <h1 class=\"govuk-heading-l\">{{eventTrigger.name | rpxTranslate}}</h1>\n\n <!--Case ID or Title -->\n <div *ngIf=\"getCaseTitle(); then titleBlock; else idBlock\"></div>\n <ng-template #titleBlock>\n <ccd-markdown [content]=\"getCaseTitle() | ccdCaseTitle: contextFields : editForm.controls['data']\"></ccd-markdown>\n </ng-template>\n <ng-template #idBlock>\n <h2 *ngIf=\"getCaseId()\" class=\"heading-h2\">#{{ getCaseId() | ccdCaseReference }}</h2>\n </ng-template>\n\n <ccd-case-edit-generic-errors [error]=\"caseEdit.error\"></ccd-case-edit-generic-errors>\n\n <ccd-callback-errors [callbackErrorsSubject]=\"caseEdit.callbackErrorsSubject\"\n (callbackErrorsContext)=\"callbackErrorsNotify($event)\"></ccd-callback-errors>\n\n <form class=\"check-your-answers\" [formGroup]=\"editForm\" (submit)=\"submit()\">\n <div *ngIf=\"!caseEdit.isEventCompletionChecksRequired\">\n <ng-container *ngIf=\"checkYourAnswerFieldsToDisplayExists()\">\n <h2 class=\"heading-h2\">{{pageTitle | rpxTranslate }}</h2>\n <span class=\"text-16\" *ngIf=\"!caseEdit.isCaseFlagSubmission\">{{'Check the information below carefully.' | rpxTranslate}}</span>\n\n <table class=\"form-table\" aria-describedby=\"check your answers table\">\n <tbody>\n <ng-container *ngFor=\"let page of wizard.pages\">\n <ng-container *ngIf=\"isShown(page)\">\n <ng-container *ngFor=\"let field of page\n | ccdPageFields: editForm\n | ccdReadFieldsFilter: false :undefined :true :allFieldsValues\n | ccdCYAPageLabelFilter\">\n <ng-container *ngIf=\"canShowFieldInCYA(field)\">\n <tr ccdLabelSubstitutor [caseField]=\"field\" [hidden]=\"field.hidden\"\n [formGroup]=\"editForm.controls['data']\" [contextFields]=\"contextFields\">\n <th *ngIf=\"!isLabel(field) && !caseEdit.isCaseFlagSubmission\" class=\"valign-top case-field-label\">\n <span class=\"text-16\">{{field.label | rpxTranslate}}</span>\n </th>\n <td class=\"form-cell case-field-content text-16\" [attr.colspan]=\"isLabel(field) ? '2' : '1'\">\n <ccd-field-read\n [formGroup]=\"editForm.controls['data']\" [topLevelFormGroup]=\"editForm.controls['data']\"\n [caseField]=\"summaryCaseField(field)\" [context]=\"paletteContext\" [caseFields]=\"contextFields\"></ccd-field-read>\n </td>\n <ng-container *ngIf=\"!caseEdit.isCaseFlagSubmission\">\n <td class=\"valign-top check-your-answers__change case-field-change\">\n <a *ngIf=\"isChangeAllowed(field)\" (click)=\"navigateToPage(page.id)\"\n href=\"javascript:void(0)\">\n <span class=\"text-16\" attr.aria-label=\"{{'Change' | rpxTranslate}} {{ field.label | rpxTranslate }}\">\n {{'Change' | rpxTranslate}}\n </span>\n </a>\n </td>\n </ng-container>\n </tr>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </tbody>\n </table>\n </ng-container>\n <ng-container *ngIf=\"readOnlySummaryFieldsToDisplayExists()\">\n\n <table class=\"summary-fields\" aria-describedby=\"summary fields table\">\n <tbody>\n <ng-container *ngFor=\"let field of showSummaryFields\">\n <ng-container [ngSwitch]=\"!(field | ccdIsCompound)\">\n <tr *ngSwitchCase=\"true\" ccdLabelSubstitutor [caseField]=\"field\" [formGroup]=\"editForm.controls['data']\" [contextFields]=\"contextFields\">\n <th id=\"summary-field-label\">{{field.label}}</th>\n <td class=\"form-cell\">\n <ccd-field-read [formGroup]=\"editForm.controls['data']\" [caseField]=\"summaryCaseField(field)\"></ccd-field-read>\n </td>\n </tr>\n <tr *ngSwitchCase=\"false\" class=\"compound-field\" ccdLabelSubstitutor [caseField]=\"field\" [formGroup]=\"editForm.controls['data']\" [contextFields]=\"contextFields\">\n <td colspan=\"2\">\n <ccd-field-read [formGroup]=\"editForm.controls['data']\" [caseField]=\"summaryCaseField(field)\" [caseFields]=\"contextFields\"></ccd-field-read>\n </td>\n </tr>\n </ng-container>\n </ng-container>\n </tbody>\n </table>\n </ng-container>\n <ng-container *ngIf=\"showEventNotes()\">\n <fieldset id=\"fieldset-event\" formGroupName=\"event\">\n <legend style=\"display: none;\"></legend>\n <div class=\"form-group\" [ngClass]=\"{'form-group-error': !!summary && !summary.valid && (summary.dirty || summary.touched)}\">\n <label for=\"field-trigger-summary\" class=\"form-label\">\n Event summary (optional)\n <span class=\"form-hint\">A few words describing the purpose of the event.</span>\n </label>\n <span class=\"error-message\" *ngIf=\"summary?.errors && (summary.dirty || summary.touched)\">\n {{summary.errors | ccdFirstError: eventSummaryLabel | rpxTranslate}}\n </span>\n <input type=\"text\" id=\"field-trigger-summary\" class=\"form-control bottom-30 width-50\"\n [ngClass]=\"{'govuk-input--error': summary?.errors && (summary.dirty || summary.touched)}\" formControlName=\"summary\" maxlength=\"1024\">\n </div>\n <div class=\"form-group\" [ngClass]=\"{'form-group-error': !!description && !description.valid && (description.dirty || description.touched)}\">\n <label for=\"field-trigger-description\" class=\"form-label\">Event description (optional)</label>\n <span class=\"error-message\" *ngIf=\"description?.errors && (description.dirty || description.touched)\">\n {{description.errors | ccdFirstError: eventDescriptionLabel | rpxTranslate}}\n </span>\n <textarea id=\"field-trigger-description\" class=\"form-control bottom-30 width-50\" formControlName=\"description\"\n [ngClass]=\"{'govuk-input--error': description?.errors && (description.dirty || description.touched)}\" maxlength=\"65536\"></textarea>\n </div>\n </fieldset>\n </ng-container>\n </div>\n <ccd-case-event-completion *ngIf=\"caseEdit.isEventCompletionChecksRequired\"\n [eventCompletionParams]=\"caseEdit.eventCompletionParams\"\n (eventCanBeCompleted)=\"onEventCanBeCompleted($event)\">\n </ccd-case-event-completion>\n <div class=\"form-group form-group-related\">\n <button class=\"button button-secondary\" type=\"button\" [disabled]=\"!hasPrevious() || caseEdit.isSubmitting\" (click)=\"previous()\">\n {{'Previous' | rpxTranslate}}\n </button>\n <button type=\"submit\" [disabled]=\"isDisabled\" class=\"button\">\n {{triggerText | rpxTranslate}}\n </button>\n </div>\n <p class=\"cancel\">\n <a (click)=\"cancel()\" href=\"javascript:void(0)\" [class.disabled]=\"caseEdit.isSubmitting\">{{getCancelText() | rpxTranslate}}</a>\n </p>\n </form>\n</div>\n\n", styles: ["#fieldset-case-data{margin-bottom:30px}#fieldset-case-data th{width:1%;white-space:nowrap;vertical-align:top}.compound-field td{padding:0}#confirmation-header{width:630px;background-color:#17958b;border:solid 1px #979797;color:#fff;text-align:center}#confirmation-body{width:630px;background-color:#fff}.valign-top{vertical-align:top}.summary-fields{margin-bottom:30px}.summary-fields tbody tr th,.summary-fields tbody tr td{border-bottom:0px}a.disabled{pointer-events:none;cursor:default}.case-field-label{width:45%}.case-field-content{width:50%}.no-bottom-border{border-bottom:none}.case-field-change{width:5%}\n"] }]
627
631
  }], () => [{ type: i1.CaseEditComponent }, { type: i2.FieldsUtils }, { type: i2.CaseFieldService }, { type: i3.ActivatedRoute }, { type: i2.OrderService }, { type: i2.ProfileNotifier }, { type: i2.MultipageComponentStateService }, { type: i2.FormValidatorsService }, { type: i4.CaseFlagStateService }, { type: i5.LinkedCasesService }], null); })();
628
632
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseEditSubmitComponent, { className: "CaseEditSubmitComponent", filePath: "lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.ts", lineNumber: 30 }); })();
629
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1lZGl0LXN1Ym1pdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvY2FzZS1lZGl0b3IvY2FzZS1lZGl0LXN1Ym1pdC9jYXNlLWVkaXQtc3VibWl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLWVkaXRvci9jYXNlLWVkaXQtc3VibWl0L2Nhc2UtZWRpdC1zdWJtaXQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJakQsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsOEJBQThCLEVBQzlCLHFCQUFxQixFQUNyQixZQUFZLEVBQ1osZUFBZSxFQUNoQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSx1QkFBdUIsRUFBeUIsTUFBTSxhQUFhLENBQUM7QUFDN0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVyRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQzs7Ozs7Ozs7Ozs7SUNoQjVGLHNCQUFpRTs7O0lB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O1lBQXZELDhMQUF5QixnQ0FBNEIsS0FBQztZQUFDLGlCQUFzQjtZQUVqRyxnQ0FBNEU7WUFBcEIsMklBQVUsWUFBUSxLQUFDO1lBMEZ6RSxBQXpGQSwwRUFBdUQseUdBMkZDO1lBR3RELEFBREYsK0JBQTJDLGtCQUN1RjtZQUFyQiwySUFBUyxjQUFVLEtBQUM7WUFDN0gsYUFDRjs7WUFBQSxpQkFBUztZQUNULG1DQUE2RDtZQUMzRCxhQUNGOztZQUNGLEFBREUsaUJBQVMsRUFDTDtZQUVKLEFBREYsOEJBQWtCLGFBQ3lFO1lBQXRGLHNJQUFTLFlBQVEsS0FBQztZQUFvRSxhQUFrQzs7WUFHakksQUFERSxBQURFLEFBRDZILGlCQUFJLEVBQzdILEVBQ0MsRUFDSDs7OztZQTFId0IsZUFBb0M7WUFBcEMsa0VBQW9DO1lBRzFELGVBQXNCO1lBQWlCLEFBQWpCLEFBQXRCLHlDQUFzQiwyQkFBaUIsd0JBQVk7WUFRM0IsZUFBd0I7WUFBeEIsMENBQXdCO1lBRWpDLGNBQXdEO1lBQXhELDBFQUF3RDtZQUc1QyxjQUFzQjtZQUF0Qix3Q0FBc0I7WUFDL0MsY0FBK0M7WUFBL0Msb0VBQStDO1lBeUZ6QixjQUE4QztZQUE5QyxtRUFBOEM7WUFLbEIsZUFBb0Q7WUFBcEQsMEVBQW9EO1lBQ3hHLGNBQ0Y7WUFERSxtRUFDRjtZQUNzQixlQUF1QjtZQUF2Qix5Q0FBdUI7WUFDM0MsY0FDRjtZQURFLHdFQUNGO1lBR2dELGVBQXdDO1lBQXhDLHFEQUF3QztZQUFDLGNBQWtDO1lBQWxDLGlFQUFrQzs7O2lGRDVGcEgsdUJBQXVCO2NBTG5DLFNBQVM7MkJBQ0Usc0JBQXNCOztrRkFJckIsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENhc2VFdmVudFRyaWdnZXIsIENhc2VGaWVsZCwgUHJvZmlsZSB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBUYXNrIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL3dvcmstYWxsb2NhdGlvbi9UYXNrJztcbmltcG9ydCB7XG4gIENhc2VGaWVsZFNlcnZpY2UsXG4gIEZpZWxkc1V0aWxzLFxuICBNdWx0aXBhZ2VDb21wb25lbnRTdGF0ZVNlcnZpY2UsXG4gIEZvcm1WYWxpZGF0b3JzU2VydmljZSxcbiAgT3JkZXJTZXJ2aWNlLFxuICBQcm9maWxlTm90aWZpZXJcbn0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgQ2FsbGJhY2tFcnJvcnNDb21wb25lbnQsIENhbGxiYWNrRXJyb3JzQ29udGV4dCB9IGZyb20gJy4uLy4uL2Vycm9yJztcbmltcG9ydCB7IFBhbGV0dGVDb250ZXh0IH0gZnJvbSAnLi4vLi4vcGFsZXR0ZSc7XG5pbXBvcnQgeyBDYXNlRWRpdFBhZ2VDb21wb25lbnQgfSBmcm9tICcuLi9jYXNlLWVkaXQtcGFnZS9jYXNlLWVkaXQtcGFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FzZUVkaXRDb21wb25lbnQgfSBmcm9tICcuLi9jYXNlLWVkaXQvY2FzZS1lZGl0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXaXphcmQsIFdpemFyZFBhZ2UgfSBmcm9tICcuLi9kb21haW4nO1xuaW1wb3J0IHsgQ2FzZUVkaXRTdWJtaXRUaXRsZXMgfSBmcm9tICcuL2Nhc2UtZWRpdC1zdWJtaXQtdGl0bGVzLmVudW0nO1xuaW1wb3J0IHsgQ2FzZUZsYWdTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jYXNlLWZsYWctc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBMaW5rZWRDYXNlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9wYWxldHRlL2xpbmtlZC1jYXNlcy9zZXJ2aWNlcy9saW5rZWQtY2FzZXMuc2VydmljZSc7XG5cbi8vIEBkeW5hbWljXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtY2FzZS1lZGl0LXN1Ym1pdCcsXG4gIHRlbXBsYXRlVXJsOiAnY2FzZS1lZGl0LXN1Ym1pdC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4uL2Nhc2UtZWRpdC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2FzZUVkaXRTdWJtaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBldmVudFRyaWdnZXI6IENhc2VFdmVudFRyaWdnZXI7XG4gIHB1YmxpYyBlZGl0Rm9ybTogRm9ybUdyb3VwO1xuICBwdWJsaWMgdHJpZ2dlclRleHQ6IHN0cmluZztcbiAgcHVibGljIHdpemFyZDogV2l6YXJkO1xuICBwdWJsaWMgcHJvZmlsZTogUHJvZmlsZTtcbiAgcHVibGljIHNob3dTdW1tYXJ5RmllbGRzOiBDYXNlRmllbGRbXTtcbiAgcHVibGljIHBhbGV0dGVDb250ZXh0OiBQYWxldHRlQ29udGV4dCA9IFBhbGV0dGVDb250ZXh0LkNIRUNLX1lPVVJfQU5TV0VSO1xuICBwdWJsaWMgcHJvZmlsZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgY29udGV4dEZpZWxkczogQ2FzZUZpZWxkW107XG4gIHB1YmxpYyB0YXNrOiBUYXNrO1xuICBwdWJsaWMgcGFnZVRpdGxlOiBzdHJpbmc7XG4gIHB1YmxpYyBtZXRhZGF0YUZpZWxkc09iamVjdDogb2JqZWN0O1xuICBwdWJsaWMgYWxsRmllbGRzVmFsdWVzOiBhbnk7XG4gIHB1YmxpYyBzdW1tYXJ5OiBBYnN0cmFjdENvbnRyb2w7XG4gIHB1YmxpYyBkZXNjcmlwdGlvbjogQWJzdHJhY3RDb250cm9sO1xuICBwdWJsaWMgZXZlbnRTdW1tYXJ5TGFiZWw6IHN0cmluZyA9ICdFdmVudCBzdW1tYXJ5JztcbiAgcHVibGljIGV2ZW50RGVzY3JpcHRpb25MYWJlbDogc3RyaW5nID0gJ0V2ZW50IGRlc2NyaXB0aW9uJztcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNIT1dfU1VNTUFSWV9DT05URU5UX0NPTVBBUkVfRlVOQ1RJT04gPSAoYTogQ2FzZUZpZWxkLCBiOiBDYXNlRmllbGQpOiBudW1iZXIgPT4ge1xuICAgIGNvbnN0IGFDYXNlRmllbGQgPSBhLnNob3dfc3VtbWFyeV9jb250ZW50X29wdGlvbiA9PT0gMCB8fCBhLnNob3dfc3VtbWFyeV9jb250ZW50X29wdGlvbjtcbiAgICBjb25zdCBiQ2FzZUZpZWxkID0gYi5zaG93X3N1bW1hcnlfY29udGVudF9vcHRpb24gPT09IDAgfHwgYi5zaG93X3N1bW1hcnlfY29udGVudF9vcHRpb247XG5cbiAgICBpZiAoIWFDYXNlRmllbGQpIHtcbiAgICAgIHJldHVybiAhYkNhc2VGaWVsZCA/IDAgOiAxO1xuICAgIH1cblxuICAgIGlmICghYkNhc2VGaWVsZCkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICByZXR1cm4gYS5zaG93X3N1bW1hcnlfY29udGVudF9vcHRpb24gLSBiLnNob3dfc3VtbWFyeV9jb250ZW50X29wdGlvbjtcbiAgfTtcblxuICBwdWJsaWMgZ2V0IGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgLy8gRVVJLTM0NTIuXG4gICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjaGVjayB0aGUgdmFsaWRpdHkgb2YgdGhlIGVkaXRGb3JtIGFzIGl0IGlzIHJlYWRvbmx5LlxuICAgIC8vIFRoaXMgd2FzIGNhdXNpbmcgaXNzdWVzIHdpdGggaGlkZGVuIGZpZWxkcyB0aGF0IGFyZW4ndCB3YW50ZWQgYnV0IGhhdmVcbiAgICAvLyBub3QgYmVlbiBkaXNhYmxlZC5cbiAgICByZXR1cm4gdGhpcy5jYXNlRWRpdC5pc1N1Ym1pdHRpbmcgfHwgdGhpcy5oYXNFcnJvcnM7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgY2FzZUVkaXQ6IENhc2VFZGl0Q29tcG9uZW50LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmllbGRzVXRpbHM6IEZpZWxkc1V0aWxzLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZUZpZWxkU2VydmljZTogQ2FzZUZpZWxkU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9yZGVyU2VydmljZTogT3JkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvZmlsZU5vdGlmaWVyOiBQcm9maWxlTm90aWZpZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBtdWx0aXBhZ2VDb21wb25lbnRTdGF0ZVNlcnZpY2U6IE11bHRpcGFnZUNvbXBvbmVudFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1WYWxpZGF0b3JzU2VydmljZTogRm9ybVZhbGlkYXRvcnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZUZsYWdTdGF0ZVNlcnZpY2U6IENhc2VGbGFnU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGlua2VkQ2FzZXNTZXJ2aWNlOiBMaW5rZWRDYXNlc1NlcnZpY2UsXG4gICkge1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucHJvZmlsZVN1YnNjcmlwdGlvbiA9IHRoaXMucHJvZmlsZU5vdGlmaWVyLnByb2ZpbGUuc3Vic2NyaWJlKChfKSA9PiB0aGlzLnByb2ZpbGUgPSBfKTtcbiAgICB0aGlzLmV2ZW50VHJpZ2dlciA9IHRoaXMuY2FzZUVkaXQuZXZlbnRUcmlnZ2VyO1xuICAgIHRoaXMudHJpZ2dlclRleHQgPSB0aGlzLmV2ZW50VHJpZ2dlci5lbmRfYnV0dG9uX2xhYmVsIHx8IENhbGxiYWNrRXJyb3JzQ29tcG9uZW50LlRSSUdHRVJfVEVYVF9TVUJNSVQ7XG4gICAgdGhpcy5lZGl0Rm9ybSA9IHRoaXMuY2FzZUVkaXQuZm9ybTtcbiAgICB0aGlzLndpemFyZCA9IHRoaXMuY2FzZUVkaXQud2l6YXJkO1xuICAgIHRoaXMuc2hvd1N1bW1hcnlGaWVsZHMgPSB0aGlzLnNvcnRGaWVsZHNCeVNob3dTdW1tYXJ5Q29udGVudCh0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcyk7XG4gICAgdGhpcy5jYXNlRWRpdC5pc1N1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmNvbnRleHRGaWVsZHMgPSB0aGlzLmdldENhc2VGaWVsZHMoKTtcbiAgICB0aGlzLm1ldGFkYXRhRmllbGRzT2JqZWN0ID0gdGhpcy5jYXNlRWRpdD8uY2FzZURldGFpbHM/Lm1ldGFkYXRhRmllbGRzPy5cbiAgICAgIHJlZHVjZSgobywga2V5KSA9PiBPYmplY3QuYXNzaWduKG8sIHsgW2tleS5pZF06IGtleS52YWx1ZSB9KSwge30pO1xuICAgIHRoaXMuYWxsRmllbGRzVmFsdWVzID0gT2JqZWN0LmFzc2lnbih0aGlzLm1ldGFkYXRhRmllbGRzT2JqZWN0ID8gdGhpcy5tZXRhZGF0YUZpZWxkc09iamVjdCA6IHt9LCB0aGlzLmVkaXRGb3JtLmdldFJhd1ZhbHVlKCkuZGF0YSk7XG4gICAgLy8gSW5kaWNhdGVzIGlmIHRoZSBzdWJtaXNzaW9uIGlzIGZvciBhIENhc2UgRmxhZywgYXMgb3Bwb3NlZCB0byBhIFwicmVndWxhclwiIGZvcm0gc3VibWlzc2lvbiwgYnkgdGhlIHByZXNlbmNlIG9mXG4gICAgLy8gYSBGbGFnTGF1bmNoZXIgZmllbGQgaW4gdGhlIGV2ZW50IHRyaWdnZXJcbiAgICB0aGlzLmNhc2VFZGl0LmlzQ2FzZUZsYWdTdWJtaXNzaW9uID1cbiAgICAgIHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzLnNvbWUoKGNhc2VGaWVsZCkgPT4gRmllbGRzVXRpbHMuaXNDYXNlRmllbGRPZlR5cGUoY2FzZUZpZWxkLCBbJ0ZsYWdMYXVuY2hlciddKSk7XG4gICAgdGhpcy5jYXNlRWRpdC5pc0xpbmtlZENhc2VzU3VibWlzc2lvbiA9XG4gICAgICB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcy5zb21lKGNhc2VGaWVsZCA9PiBGaWVsZHNVdGlscy5pc0Nhc2VGaWVsZE9mVHlwZShjYXNlRmllbGQsIFsnQ29tcG9uZW50TGF1bmNoZXInXSkpO1xuICAgIHRoaXMucGFnZVRpdGxlID0gdGhpcy5nZXRQYWdlVGl0bGUoKTtcblxuICAgIHRoaXMuc3VtbWFyeSA9IHRoaXMuZm9ybVZhbGlkYXRvcnNTZXJ2aWNlLmFkZE1hcmtEb3duVmFsaWRhdG9ycyh0aGlzLmVkaXRGb3JtLCAnZXZlbnQuc3VtbWFyeScpO1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSB0aGlzLmZvcm1WYWxpZGF0b3JzU2VydmljZS5hZGRNYXJrRG93blZhbGlkYXRvcnModGhpcy5lZGl0Rm9ybSwgJ2V2ZW50LmRlc2NyaXB0aW9uJyk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5wcm9maWxlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnByb2ZpbGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3VibWl0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN1bW1hcnkudmFsaWQgJiYgdGhpcy5kZXNjcmlwdGlvbi52YWxpZCkge1xuICAgICAgaWYgKHRoaXMuY2FzZUVkaXQuaXNMaW5rZWRDYXNlc1N1Ym1pc3Npb24pe1xuICAgICAgICAvLyBvbmNlIHRoZSB1c2VyIHN1Ym1pdHMgdGhlIGxpbmtlZCBjYXNlcyB3ZSBuZWVkIHRvIHJlc2V0IHRoZSBzZXJ2aWNlIHNvIGRhdGEgaXNudCByZXRhaW5lZCBpZiB0aGV5IG9wZW4gdGhlIGV2ZW50IGFnYWluXG4gICAgICAgIHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLnJlc2V0TGlua2VkQ2FzZURhdGEoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2FzZUVkaXQuc3VibWl0Rm9ybSh7XG4gICAgICAgIGV2ZW50VHJpZ2dlcjogdGhpcy5ldmVudFRyaWdnZXIsXG4gICAgICAgIGZvcm06IHRoaXMuZWRpdEZvcm0sXG4gICAgICAgIHN1Ym1pdDogdGhpcy5jYXNlRWRpdC5zdWJtaXQsXG4gICAgICAgIGNhc2VEZXRhaWxzOiB0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25FdmVudENhbkJlQ29tcGxldGVkKGV2ZW50Q2FuQmVDb21wbGV0ZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmNhc2VFZGl0Lm9uRXZlbnRDYW5CZUNvbXBsZXRlZCh7XG4gICAgICBldmVudFRyaWdnZXI6IHRoaXMuZXZlbnRUcmlnZ2VyLFxuICAgICAgZXZlbnRDYW5CZUNvbXBsZXRlZCxcbiAgICAgIGNhc2VEZXRhaWxzOiB0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzLFxuICAgICAgZm9ybTogdGhpcy5lZGl0Rm9ybSxcbiAgICAgIHN1Ym1pdDogdGhpcy5jYXNlRWRpdC5zdWJtaXRcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGFnZVRpdGxlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY2FzZUZsYWdGaWVsZCA9IHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzLmZpbmQoY2FzZUZpZWxkID0+IEZpZWxkc1V0aWxzLmlzQ2FzZUZpZWxkT2ZUeXBlKGNhc2VGaWVsZCwgWydGbGFnTGF1bmNoZXInXSkpO1xuICAgIGlmIChjYXNlRmxhZ0ZpZWxkKSB7XG4gICAgICBjb25zdCBpc0Nhc2VGbGFnRXh0ZXJuYWxNb2RlID0gY2FzZUZsYWdGaWVsZC5kaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyID09PSAnI0FSR1VNRU5UKFVQREFURSxFWFRFUk5BTCknIHx8XG4gICAgICAgIGNhc2VGbGFnRmllbGQuZGlzcGxheV9jb250ZXh0X3BhcmFtZXRlciA9PT0gJyNBUkdVTUVOVChDUkVBVEUsRVhURVJOQUwpJztcbiAgICAgIHJldHVybiBpc0Nhc2VGbGFnRXh0ZXJuYWxNb2RlXG4gICAgICAgID8gQ2FzZUVkaXRTdWJtaXRUaXRsZXMuUkVWSUVXX1NVUFBPUlRfUkVRVUVTVFxuICAgICAgICA6IENhc2VFZGl0U3VibWl0VGl0bGVzLlJFVklFV19GTEFHX0RFVEFJTFM7XG4gICAgfVxuICAgIHJldHVybiBDYXNlRWRpdFN1Ym1pdFRpdGxlcy5DSEVDS19ZT1VSX0FOU1dFUlM7XG4gIH1cblxuICBwcml2YXRlIGdldCBoYXNFcnJvcnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2FzZUVkaXQ/LmVycm9yPy5jYWxsYmFja0Vycm9ycz8ubGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIG5hdmlnYXRlVG9QYWdlKHBhZ2VJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jYXNlRWRpdC5uYXZpZ2F0ZVRvUGFnZShwYWdlSWQpO1xuICB9XG5cbiAgcHVibGljIGNhbGxiYWNrRXJyb3JzTm90aWZ5KGVycm9yQ29udGV4dDogQ2FsbGJhY2tFcnJvcnNDb250ZXh0KTogdm9pZCB7XG4gICAgdGhpcy5jYXNlRWRpdC5pZ25vcmVXYXJuaW5nID0gZXJyb3JDb250ZXh0Lmlnbm9yZVdhcm5pbmc7XG4gICAgdGhpcy50cmlnZ2VyVGV4dCA9IGVycm9yQ29udGV4dC50cmlnZ2VyVGV4dDtcbiAgfVxuXG4gIHB1YmxpYyBzdW1tYXJ5Q2FzZUZpZWxkKGZpZWxkOiBDYXNlRmllbGQpOiBDYXNlRmllbGQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKG51bGwgPT09IHRoaXMuZWRpdEZvcm0uZ2V0KCdkYXRhJykuZ2V0KGZpZWxkLmlkKSkge1xuICAgICAgLy8gSWYgbm90IGluIGZvcm0sIHJldHVybiBmaWVsZCBpdHNlbGZcbiAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBjb25zdCBjbG9uZUZpZWxkOiBDYXNlRmllbGQgPSB0aGlzLmZpZWxkc1V0aWxzLmNsb25lQ2FzZUZpZWxkKGZpZWxkKTtcbiAgICBjbG9uZUZpZWxkLnZhbHVlID0gdGhpcy5lZGl0Rm9ybS5nZXQoJ2RhdGEnKS5nZXQoZmllbGQuaWQpLnZhbHVlO1xuXG4gICAgcmV0dXJuIGNsb25lRmllbGQ7XG4gIH1cblxuICBwdWJsaWMgY2FuY2VsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhc2VFZGl0LmlzTGlua2VkQ2FzZXNTdWJtaXNzaW9uKXtcbiAgICAgIC8vIGlmIHRoZXkgY2FuY2VsIG9uIHRoZSBsYXN0IENZQSBwYWdlIHdlIHNob3VsZCBlbnN1cmUgdGhlcmUgaXMgbm8gdW5zdWJtaXR0ZWQgZGF0YSBpbiB0aGUgY2FzZURldGFpbHNcbiAgICAgIGNvbnN0IGxpbmtlZENhc2VzVGFiID0gdGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscy50YWJzLmZpbmQoKHRhYikgPT5cbiAgICAgICAgdGFiPy5maWVsZHM/LnNvbWUoKGZpZWxkKSA9PiBmaWVsZC5pZCA9PT0gJ2Nhc2VMaW5rcycpXG4gICAgICApPy5maWVsZHM/LlswXSA/PyBudWxsO1xuICAgICAgY29uc3QgaW5pdGFsTGlua3MgPSB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5pbml0aWFsQ2FzZUxpbmtSZWZzO1xuICAgICAgaWYgKGxpbmtlZENhc2VzVGFiICYmIGxpbmtlZENhc2VzVGFiPy52YWx1ZS5sZW5ndGggIT09IGluaXRhbExpbmtzLmxlbmd0aCl7XG4gICAgICAgIGNvbnN0IGluaXRpYWxDYXNlUmVmcyA9IHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLmluaXRpYWxDYXNlTGlua1JlZnM7XG4gICAgICAgIGxpbmtlZENhc2VzVGFiLnZhbHVlID0gbGlua2VkQ2FzZXNUYWIudmFsdWUuZmlsdGVyKChpdGVtKSA9PlxuICAgICAgICAgIGluaXRpYWxDYXNlUmVmcy5pbmNsdWRlcyhpdGVtLnZhbHVlLkNhc2VSZWZlcmVuY2UpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5yZXNldExpbmtlZENhc2VEYXRhKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmV2ZW50VHJpZ2dlci5jYW5fc2F2ZV9kcmFmdCkge1xuICAgICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQoQ2FzZUVkaXRDb21wb25lbnQuT1JJR0lOX1FVRVJZX1BBUkFNKSA9PT0gJ3ZpZXdEcmFmdCcpIHtcbiAgICAgICAgdGhpcy5jYXNlRWRpdC5jYW5jZWxsZWQuZW1pdCh7IHN0YXR1czogQ2FzZUVkaXRQYWdlQ29tcG9uZW50LlJFU1VNRURfRk9STV9ESVNDQVJEIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jYXNlRWRpdC5jYW5jZWxsZWQuZW1pdCh7IHN0YXR1czogQ2FzZUVkaXRQYWdlQ29tcG9uZW50Lk5FV19GT1JNX0RJU0NBUkQgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2FzZUVkaXQuY2FuY2VsbGVkLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNMYWJlbChmaWVsZDogQ2FzZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2FzZUZpZWxkU2VydmljZS5pc0xhYmVsKGZpZWxkKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0NoYW5nZUFsbG93ZWQoZmllbGQ6IENhc2VGaWVsZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5jYXNlRmllbGRTZXJ2aWNlLmlzUmVhZE9ubHkoZmllbGQpO1xuICB9XG5cbiAgcHVibGljIGNoZWNrWW91ckFuc3dlckZpZWxkc1RvRGlzcGxheUV4aXN0cygpOiBib29sZWFuIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLmV2ZW50VHJpZ2dlci5zaG93X3N1bW1hcnkgfHwgdGhpcy5ldmVudFRyaWdnZXIuc2hvd19zdW1tYXJ5ID09PSBudWxsKSB7XG4gICAgICBmb3IgKGNvbnN0IHBhZ2Ugb2YgdGhpcy53aXphcmQucGFnZXMpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKHBhZ2UuY2FzZV9maWVsZHMgJiYgdGhpcy5pc1Nob3duKHBhZ2UpKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBwYWdlLmNhc2VfZmllbGRzKSB7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgICAgaWYgKHRoaXMuY2FuU2hvd0ZpZWxkSW5DWUEoZmllbGQpKSB7XG4gICAgICAgICAgICAgIC8vIGF0IGxlYXN0IG9uZSBmaWVsZCBuZWVkcyBzaG93aW5nXG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBmb3VuZCBubyBmaWVsZHMgdG8gc2hvdyBpbiBDWUEgc3VtbWFyeSBwYWdlXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlYWRPbmx5U3VtbWFyeUZpZWxkc1RvRGlzcGxheUV4aXN0cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHMuc29tZSgoZmllbGQpID0+IGZpZWxkLnNob3dfc3VtbWFyeV9jb250ZW50X29wdGlvbiA+PSAwKTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93RXZlbnROb3RlcygpOiBib29sZWFuIHtcbiAgICAvLyBEaXNwbGF5IGV2ZW50IG5vdGVzIHJlbGF0ZWQgY29udHJvbHMgb25seSBpZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldFxuICAgIC8vIDEuIHNob3dfZXZlbnRfbm90ZXMgZmxhZyBpcyBzZXQgdG8gdHJ1ZVxuICAgIC8vIDIuIHByb2ZpbGUgaXMgbm90IGEgc29saWNpdG9yXG4gICAgLy8gMy4gaXMgbm90IGEgY2FzZSBmbGFncyBqb3VybmV5LCBhcyBpdCB1c2VzIGEgY3VzdG9tIGNoZWNrIHlvdXIgYW5zd2VycyBjb21wb25lbnRcbiAgICBpZiAodGhpcy5ldmVudFRyaWdnZXIuc2hvd19ldmVudF9ub3Rlcykge1xuICAgICAgcmV0dXJuICF0aGlzLnByb2ZpbGU/LmlzU29saWNpdG9yKClcbiAgICAgICAgJiYgIXRoaXMuY2FzZUVkaXQuaXNDYXNlRmxhZ1N1Ym1pc3Npb247XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TGFzdFBhZ2VTaG93bigpOiBXaXphcmRQYWdlIHtcbiAgICBsZXQgbGFzdFBhZ2U6IFdpemFyZFBhZ2U7XG4gICAgdGhpcy53aXphcmQucmV2ZXJzZSgpLmZvckVhY2goKHBhZ2UpID0+IHtcbiAgICAgIGlmICghbGFzdFBhZ2UgJiYgdGhpcy5pc1Nob3duKHBhZ2UpKSB7XG4gICAgICAgIGxhc3RQYWdlID0gcGFnZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBub2luc3BlY3Rpb24gSlNVbnVzZWRBc3NpZ25tZW50XG4gICAgcmV0dXJuIGxhc3RQYWdlO1xuICB9XG5cbiAgcHVibGljIHByZXZpb3VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhc2VFZGl0LmlzQ2FzZUZsYWdTdWJtaXNzaW9uKXtcbiAgICAgIC8vIGlmIHdlIGFyZSBpbiB0aGUgY2FzZWZsYWcgam91cm5leSB3ZSBuZWVkIHRvIHN0b3JlIHRoZSBsYXN0IHBhZ2UgaW5kZXggc28gdGhhdCB0aGUgcHJldmlvdXMgYnV0dG9uIG9uIENZQSB3aWxsIHRha2UgdG8gY29ycmVjdCBwYWdlXG4gICAgICB0aGlzLmNhc2VGbGFnU3RhdGVTZXJ2aWNlLmZpZWxkU3RhdGVUb05hdmlnYXRlID0gdGhpcy5jYXNlRmxhZ1N0YXRlU2VydmljZS5sYXN0UGFnZUZpZWxkU3RhdGU7XG4gICAgfVxuICAgIGlmICh0aGlzLmNhc2VFZGl0LmlzTGlua2VkQ2FzZXNTdWJtaXNzaW9uKXtcbiAgICAgIHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLmNhbWVGcm9tRmluYWxTdGVwID0gdHJ1ZTtcbiAgICB9XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5oYXNQcmV2aW91cygpKSB7XG4gICAgICB0aGlzLm5hdmlnYXRlVG9QYWdlKHRoaXMuZ2V0TGFzdFBhZ2VTaG93bigpLmlkKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFzUHJldmlvdXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5nZXRMYXN0UGFnZVNob3duKCk7XG4gIH1cblxuICBwdWJsaWMgaXNTaG93bihwYWdlOiBXaXphcmRQYWdlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5maWVsZHNVdGlsc1xuICAgICAgLm1lcmdlQ2FzZUZpZWxkc0FuZEZvcm1GaWVsZHModGhpcy5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHMsIHRoaXMuZWRpdEZvcm0uY29udHJvbHMuZGF0YS52YWx1ZSk7XG4gICAgcmV0dXJuIHBhZ2UucGFyc2VkU2hvd0NvbmRpdGlvbi5tYXRjaChmaWVsZHMpO1xuICB9XG5cbiAgcHVibGljIGNhblNob3dGaWVsZEluQ1lBKGZpZWxkOiBDYXNlRmllbGQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmllbGQuc2hvd19zdW1tYXJ5X2NoYW5nZV9vcHRpb247XG4gIH1cblxuICBwcml2YXRlIHNvcnRGaWVsZHNCeVNob3dTdW1tYXJ5Q29udGVudChmaWVsZHM6IENhc2VGaWVsZFtdKTogQ2FzZUZpZWxkW10ge1xuICAgIHJldHVybiB0aGlzLm9yZGVyU2VydmljZVxuICAgICAgLnNvcnQoZmllbGRzLCBDYXNlRWRpdFN1Ym1pdENvbXBvbmVudC5TSE9XX1NVTU1BUllfQ09OVEVOVF9DT01QQVJFX0ZVTkNUSU9OKVxuICAgICAgLmZpbHRlcigoY2YpID0+IGNmLnNob3dfc3VtbWFyeV9jb250ZW50X29wdGlvbik7XG4gIH1cblxuICBwcml2YXRlIGdldENhc2VGaWVsZHMoKTogQ2FzZUZpZWxkW10ge1xuICAgIGlmICh0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzKSB7XG4gICAgICByZXR1cm4gRmllbGRzVXRpbHMuZ2V0Q2FzZUZpZWxkcyh0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHM7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2FzZUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2FzZUVkaXQuZ2V0Q2FzZUlkKHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMpO1xuICB9XG5cbiAgcHVibGljIGdldENhc2VUaXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAodGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscyAmJiB0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzLnN0YXRlICYmXG4gICAgICB0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzLnN0YXRlLnRpdGxlX2Rpc3BsYXkgPyB0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzLnN0YXRlLnRpdGxlX2Rpc3BsYXkgOiAnJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2FuY2VsVGV4dCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmV2ZW50VHJpZ2dlci5jYW5fc2F2ZV9kcmFmdCkge1xuICAgICAgcmV0dXJuICdSZXR1cm4gdG8gY2FzZSBsaXN0JztcbiAgICB9XG4gICAgcmV0dXJuICdDYW5jZWwnO1xuICB9XG59XG5cbiIsIjxkaXY+XG4gIDwhLS0gRXZlbnQgdHJpZ2dlciBuYW1lIC0tPlxuICA8aDEgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLWxcIj57e2V2ZW50VHJpZ2dlci5uYW1lIHwgcnB4VHJhbnNsYXRlfX08L2gxPlxuXG4gIDwhLS1DYXNlIElEIG9yIFRpdGxlIC0tPlxuICA8ZGl2ICpuZ0lmPVwiZ2V0Q2FzZVRpdGxlKCk7IHRoZW4gdGl0bGVCbG9jazsgZWxzZSBpZEJsb2NrXCI+PC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjdGl0bGVCbG9jaz5cbiAgICA8Y2NkLW1hcmtkb3duIFtjb250ZW50XT1cImdldENhc2VUaXRsZSgpIHwgY2NkQ2FzZVRpdGxlOiBjb250ZXh0RmllbGRzIDogZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiPjwvY2NkLW1hcmtkb3duPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI2lkQmxvY2s+XG4gICAgPGgyICpuZ0lmPVwiZ2V0Q2FzZUlkKClcIiBjbGFzcz1cImhlYWRpbmctaDJcIj4je3sgZ2V0Q2FzZUlkKCkgfCBjY2RDYXNlUmVmZXJlbmNlIH19PC9oMj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8Y2NkLWNhc2UtZWRpdC1nZW5lcmljLWVycm9ycyBbZXJyb3JdPVwiY2FzZUVkaXQuZXJyb3JcIj48L2NjZC1jYXNlLWVkaXQtZ2VuZXJpYy1lcnJvcnM+XG5cbiAgPGNjZC1jYWxsYmFjay1lcnJvcnMgW2NhbGxiYWNrRXJyb3JzU3ViamVjdF09XCJjYXNlRWRpdC5jYWxsYmFja0Vycm9yc1N1YmplY3RcIlxuICAgICAgICAgICAgICAgICAgICAgIChjYWxsYmFja0Vycm9yc0NvbnRleHQpPVwiY2FsbGJhY2tFcnJvcnNOb3RpZnkoJGV2ZW50KVwiPjwvY2NkLWNhbGxiYWNrLWVycm9ycz5cblxuICA8Zm9ybSBjbGFzcz1cImNoZWNrLXlvdXItYW5zd2Vyc1wiIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm1cIiAoc3VibWl0KT1cInN1Ym1pdCgpXCI+XG4gICAgPGRpdiAqbmdJZj1cIiFjYXNlRWRpdC5pc0V2ZW50Q29tcGxldGlvbkNoZWNrc1JlcXVpcmVkXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hlY2tZb3VyQW5zd2VyRmllbGRzVG9EaXNwbGF5RXhpc3RzKClcIj5cbiAgICAgICAgPGgyIGNsYXNzPVwiaGVhZGluZy1oMlwiPnt7cGFnZVRpdGxlIHwgcnB4VHJhbnNsYXRlIH19PC9oMj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LTE2XCIgKm5nSWY9XCIhY2FzZUVkaXQuaXNDYXNlRmxhZ1N1Ym1pc3Npb25cIj57eydDaGVjayB0aGUgaW5mb3JtYXRpb24gYmVsb3cgY2FyZWZ1bGx5LicgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj5cblxuICAgICAgICA8dGFibGUgY2xhc3M9XCJmb3JtLXRhYmxlXCIgYXJpYS1kZXNjcmliZWRieT1cImNoZWNrIHlvdXIgYW5zd2VycyB0YWJsZVwiPlxuICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwYWdlIG9mIHdpemFyZC5wYWdlc1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzU2hvd24ocGFnZSlcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2YgcGFnZVxuICAgICAgICAgICAgICB8IGNjZFBhZ2VGaWVsZHM6IGVkaXRGb3JtXG4gICAgICAgICAgICAgIHwgY2NkUmVhZEZpZWxkc0ZpbHRlcjogZmFsc2UgOnVuZGVmaW5lZCA6dHJ1ZSA6YWxsRmllbGRzVmFsdWVzXG4gICAgICAgICAgICAgIHwgY2NkQ1lBUGFnZUxhYmVsRmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhblNob3dGaWVsZEluQ1lBKGZpZWxkKVwiPlxuICAgICAgICAgICAgICAgICAgPHRyIGNjZExhYmVsU3Vic3RpdHV0b3IgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtoaWRkZW5dPVwiZmllbGQuaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cImVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIiBbY29udGV4dEZpZWxkc109XCJjb250ZXh0RmllbGRzXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cIiFpc0xhYmVsKGZpZWxkKSAmJiAhY2FzZUVkaXQuaXNDYXNlRmxhZ1N1Ym1pc3Npb25cIiBjbGFzcz1cInZhbGlnbi10b3AgY2FzZS1maWVsZC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC0xNlwiPnt7ZmllbGQubGFiZWwgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZm9ybS1jZWxsIGNhc2UtZmllbGQtY29udGVudCB0ZXh0LTE2XCIgW2F0dHIuY29sc3Bhbl09XCJpc0xhYmVsKGZpZWxkKSA/ICcyJyA6ICcxJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxjY2QtZmllbGQtcmVhZFxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddXCIgW3RvcExldmVsRm9ybUdyb3VwXT1cImVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Nhc2VGaWVsZF09XCJzdW1tYXJ5Q2FzZUZpZWxkKGZpZWxkKVwiIFtjb250ZXh0XT1cInBhbGV0dGVDb250ZXh0XCIgW2Nhc2VGaWVsZHNdPVwiY29udGV4dEZpZWxkc1wiPjwvY2NkLWZpZWxkLXJlYWQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY2FzZUVkaXQuaXNDYXNlRmxhZ1N1Ym1pc3Npb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ2YWxpZ24tdG9wIGNoZWNrLXlvdXItYW5zd2Vyc19fY2hhbmdlIGNhc2UtZmllbGQtY2hhbmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cImlzQ2hhbmdlQWxsb3dlZChmaWVsZClcIiAoY2xpY2spPVwibmF2aWdhdGVUb1BhZ2UocGFnZS5pZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC0xNlwiIGF0dHIuYXJpYS1sYWJlbD1cInt7J0NoYW5nZScgfCBycHhUcmFuc2xhdGV9fSB7eyBmaWVsZC5sYWJlbCB8IHJweFRyYW5zbGF0ZSB9fVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J0NoYW5nZScgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZWFkT25seVN1bW1hcnlGaWVsZHNUb0Rpc3BsYXlFeGlzdHMoKVwiPlxuXG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInN1bW1hcnktZmllbGRzXCIgYXJpYS1kZXNjcmliZWRieT1cInN1bW1hcnkgZmllbGRzIHRhYmxlXCI+XG4gICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2Ygc2hvd1N1bW1hcnlGaWVsZHNcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCIhKGZpZWxkIHwgY2NkSXNDb21wb3VuZClcIj5cbiAgICAgICAgICAgICAgICAgIDx0ciAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiIGNjZExhYmVsU3Vic3RpdHV0b3IgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFtjb250ZXh0RmllbGRzXT1cImNvbnRleHRGaWVsZHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRoIGlkPVwic3VtbWFyeS1maWVsZC1sYWJlbFwiPnt7ZmllbGQubGFiZWx9fTwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImZvcm0tY2VsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxjY2QtZmllbGQtcmVhZCBbZm9ybUdyb3VwXT1cImVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIiBbY2FzZUZpZWxkXT1cInN1bW1hcnlDYXNlRmllbGQoZmllbGQpXCI+PC9jY2QtZmllbGQtcmVhZD5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICA8dHIgKm5nU3dpdGNoQ2FzZT1cImZhbHNlXCIgY2xhc3M9XCJjb21wb3VuZC1maWVsZFwiIGNjZExhYmVsU3Vic3RpdHV0b3IgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFtjb250ZXh0RmllbGRzXT1cImNvbnRleHRGaWVsZHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGNjZC1maWVsZC1yZWFkIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFtjYXNlRmllbGRdPVwic3VtbWFyeUNhc2VGaWVsZChmaWVsZClcIiBbY2FzZUZpZWxkc109XCJjb250ZXh0RmllbGRzXCI+PC9jY2QtZmllbGQtcmVhZD5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RXZlbnROb3RlcygpXCI+XG4gICAgICAgIDxmaWVsZHNldCBpZD1cImZpZWxkc2V0LWV2ZW50XCIgZm9ybUdyb3VwTmFtZT1cImV2ZW50XCI+XG4gICAgICAgICAgPGxlZ2VuZCBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCI+PC9sZWdlbmQ+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiBbbmdDbGFzc109XCJ7J2Zvcm0tZ3JvdXAtZXJyb3InOiAhIXN1bW1hcnkgJiYgIXN1bW1hcnkudmFsaWQgJiYgKHN1bW1hcnkuZGlydHkgfHwgc3VtbWFyeS50b3VjaGVkKX1cIj5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJmaWVsZC10cmlnZ2VyLXN1bW1hcnlcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5cbiAgICAgICAgICAgICAgRXZlbnQgc3VtbWFyeSAob3B0aW9uYWwpXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1oaW50XCI+QSBmZXcgd29yZHMgZGVzY3JpYmluZyB0aGUgcHVycG9zZSBvZiB0aGUgZXZlbnQuPC9zcGFuPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwic3VtbWFyeT8uZXJyb3JzICYmIChzdW1tYXJ5LmRpcnR5IHx8IHN1bW1hcnkudG91Y2hlZClcIj5cbiAgICAgICAgICAgICAge3tzdW1tYXJ5LmVycm9ycyB8IGNjZEZpcnN0RXJyb3I6IGV2ZW50U3VtbWFyeUxhYmVsIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGlkPVwiZmllbGQtdHJpZ2dlci1zdW1tYXJ5XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYm90dG9tLTMwIHdpZHRoLTUwXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydnb3Z1ay1pbnB1dC0tZXJyb3InOiBzdW1tYXJ5Py5lcnJvcnMgJiYgKHN1bW1hcnkuZGlydHkgfHwgc3VtbWFyeS50b3VjaGVkKX1cIiBmb3JtQ29udHJvbE5hbWU9XCJzdW1tYXJ5XCIgbWF4bGVuZ3RoPVwiMTAyNFwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW25nQ2xhc3NdPVwieydmb3JtLWdyb3VwLWVycm9yJzogISFkZXNjcmlwdGlvbiAmJiAhZGVzY3JpcHRpb24udmFsaWQgJiYgKGRlc2NyaXB0aW9uLmRpcnR5IHx8IGRlc2NyaXB0aW9uLnRvdWNoZWQpfVwiPlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cImZpZWxkLXRyaWdnZXItZGVzY3JpcHRpb25cIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5FdmVudCBkZXNjcmlwdGlvbiAob3B0aW9uYWwpPC9sYWJlbD5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwiZGVzY3JpcHRpb24/LmVycm9ycyAmJiAoZGVzY3JpcHRpb24uZGlydHkgfHwgZGVzY3JpcHRpb24udG91Y2hlZClcIj5cbiAgICAgICAgICAgICAge3tkZXNjcmlwdGlvbi5lcnJvcnMgfCBjY2RGaXJzdEVycm9yOiBldmVudERlc2NyaXB0aW9uTGFiZWwgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHRleHRhcmVhIGlkPVwiZmllbGQtdHJpZ2dlci1kZXNjcmlwdGlvblwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGJvdHRvbS0zMCB3aWR0aC01MFwiIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydnb3Z1ay1pbnB1dC0tZXJyb3InOiBkZXNjcmlwdGlvbj8uZXJyb3JzICYmIChkZXNjcmlwdGlvbi5kaXJ0eSB8fCBkZXNjcmlwdGlvbi50b3VjaGVkKX1cIiBtYXhsZW5ndGg9XCI2NTUzNlwiPjwvdGV4dGFyZWE+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZmllbGRzZXQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8Y2NkLWNhc2UtZXZlbnQtY29tcGxldGlvbiAqbmdJZj1cImNhc2VFZGl0LmlzRXZlbnRDb21wbGV0aW9uQ2hlY2tzUmVxdWlyZWRcIlxuICAgICAgW2V2ZW50Q29tcGxldGlvblBhcmFtc109XCJjYXNlRWRpdC5ldmVudENvbXBsZXRpb25QYXJhbXNcIlxuICAgICAgKGV2ZW50Q2FuQmVDb21wbGV0ZWQpPVwib25FdmVudENhbkJlQ29tcGxldGVkKCRldmVudClcIj5cbiAgICA8L2NjZC1jYXNlLWV2ZW50LWNvbXBsZXRpb24+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZm9ybS1ncm91cC1yZWxhdGVkXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cIiFoYXNQcmV2aW91cygpIHx8IGNhc2VFZGl0LmlzU3VibWl0dGluZ1wiIChjbGljayk9XCJwcmV2aW91cygpXCI+XG4gICAgICAgIHt7J1ByZXZpb3VzJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCIgY2xhc3M9XCJidXR0b25cIj5cbiAgICAgICAge3t0cmlnZ2VyVGV4dCB8IHJweFRyYW5zbGF0ZX19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8cCBjbGFzcz1cImNhbmNlbFwiPlxuICAgICAgPGEgKGNsaWNrKT1cImNhbmNlbCgpXCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIFtjbGFzcy5kaXNhYmxlZF09XCJjYXNlRWRpdC5pc1N1Ym1pdHRpbmdcIj57e2dldENhbmNlbFRleHQoKSB8IHJweFRyYW5zbGF0ZX19PC9hPlxuICAgIDwvcD5cbiAgPC9mb3JtPlxuPC9kaXY+XG5cbiJdfQ==
633
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1lZGl0LXN1Ym1pdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvY2FzZS1lZGl0b3IvY2FzZS1lZGl0LXN1Ym1pdC9jYXNlLWVkaXQtc3VibWl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLWVkaXRvci9jYXNlLWVkaXQtc3VibWl0L2Nhc2UtZWRpdC1zdWJtaXQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJakQsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsOEJBQThCLEVBQzlCLHFCQUFxQixFQUNyQixZQUFZLEVBQ1osZUFBZSxFQUNoQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSx1QkFBdUIsRUFBeUIsTUFBTSxhQUFhLENBQUM7QUFDN0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVyRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQzs7Ozs7Ozs7Ozs7SUNoQjVGLHNCQUFpRTs7O0lBRS9ELG1DQUFrSDs7OztJQUFwRyw2SEFBb0Y7OztJQUdsRyw4QkFBMkM7SUFBQSxZQUFxQzs7SUFBQSxpQkFBSzs7O0lBQTFDLGNBQXFDO0lBQXJDLHdFQUFxQzs7O0lBQWhGLHFGQUEyQzs7O0lBQXRDLHlDQUFpQjs7O0lBWWxCLGdDQUE2RDtJQUFBLFlBQTJEOztJQUFBLGlCQUFPOztJQUFsRSxjQUEyRDtJQUEzRCxvRkFBMkQ7OztJQWMxRyxBQURGLDhCQUFrRyxlQUMxRTtJQUFBLFlBQThCOztJQUN0RCxBQURzRCxpQkFBTyxFQUN4RDs7O0lBRG1CLGVBQThCO0lBQTlCLDBEQUE4Qjs7OztJQVNsRCw2QkFDNEI7SUFETSw2VEFBUyxpQ0FBdUIsS0FBQztJQUVqRSxnQ0FBcUc7OztJQUNuRyxZQUNGOztJQUNGLEFBREUsaUJBQU8sRUFDTDs7O0lBSG9CLGNBQThFO0lBQTlFLDJIQUE4RTtJQUNsRyxlQUNGO0lBREUsK0RBQ0Y7OztJQU5OLDZCQUFxRDtJQUNuRCw4QkFBb0U7SUFDbEUsdUtBQzRCO0lBSzlCLGlCQUFLOzs7OztJQU5DLGVBQTRCO0lBQTVCLHVEQUE0Qjs7O0lBYnhDLDZCQUErQztJQUM3Qyw4QkFDNEU7SUFDMUUseUpBQWtHO0lBR2xHLDhCQUE2RjtJQUMzRixxQ0FFaUg7SUFDbkgsaUJBQUs7SUFDTCw0S0FBcUQ7SUFVdkQsaUJBQUs7Ozs7O0lBcEJtQixjQUFtQjtJQUNDLEFBQXhDLEFBRHdDLEFBQXBCLG9DQUFtQiwyQkFBd0IsK0NBQ3hCLHVDQUFnQztJQUNwRSxjQUF1RDtJQUF2RCx5RkFBdUQ7SUFHWCxjQUEyQzs7SUFFeEYsY0FBdUM7SUFDMEIsQUFBM0IsQUFBdEMsQUFEd0MsQUFBeEMsNERBQXVDLHVEQUFnRCxnREFDbEQsa0NBQTJCLG9DQUE2QjtJQUVsRixjQUFvQztJQUFwQyw0REFBb0M7OztJQWZ6RCw2QkFHeUI7SUFDdkIsOEpBQStDOzs7OztJQUFoQyxjQUE4QjtJQUE5Qix5REFBOEI7OztJQUxqRCw2QkFBb0M7SUFDbEMsK0lBR3lCOzs7Ozs7OztJQUhPLGNBR1Q7SUFIUywwS0FHVDs7O0lBTDNCLDZCQUFnRDtJQUM5QyxnSUFBb0M7Ozs7O0lBQXJCLGNBQW1CO0lBQW5CLDhDQUFtQjs7O0lBUHhDLDZCQUE2RDtJQUMzRCw4QkFBdUI7SUFBQSxZQUE2Qjs7SUFBQSxpQkFBSztJQUN6RCxpR0FBNkQ7SUFHM0QsQUFERixpQ0FBc0UsWUFDN0Q7SUFDUCxpSEFBZ0Q7SUFpQ2xELEFBREUsaUJBQVEsRUFDRjs7OztJQXRDZSxlQUE2QjtJQUE3Qiw0REFBNkI7SUFDN0IsZUFBb0M7SUFBcEMsNERBQW9DO0lBSTFCLGVBQWU7SUFBZiw2Q0FBZTs7O0lBMENwQyxBQURGLDhCQUF5SSxhQUMxRztJQUFBLFlBQWU7SUFBQSxpQkFBSztJQUNqRCw4QkFBc0I7SUFDcEIscUNBQStHO0lBRW5ILEFBREUsaUJBQUssRUFDRjs7OztJQUxvRyxBQUF4QyxBQUFwQixvQ0FBbUIsK0NBQXdDLHVDQUFnQztJQUN6RyxlQUFlO0lBQWYsb0NBQWU7SUFFMUIsZUFBdUM7SUFBQyxBQUF4Qyw0REFBdUMsZ0RBQXNDOzs7SUFJL0YsQUFERiw4QkFBaUssYUFDL0k7SUFDZCxxQ0FBNEk7SUFFaEosQUFERSxpQkFBSyxFQUNGOzs7O0lBSjRILEFBQXhDLEFBQXBCLG9DQUFtQiwrQ0FBd0MsdUNBQWdDO0lBRTVJLGVBQXVDO0lBQXVDLEFBQXRDLEFBQXhDLDREQUF1QyxnREFBc0Msb0NBQTZCOzs7SUFUaEksQUFESiw2QkFBc0QsT0FDRTs7SUFPbEQsQUFOQSw0R0FBeUksK0ZBTXdCOzs7O0lBUHJKLGNBQXFDO0lBQXJDLDBEQUFxQztJQUM1QyxlQUFrQjtJQUFsQixtQ0FBa0I7SUFNbEIsY0FBbUI7SUFBbkIsb0NBQW1COzs7SUFacEMsNkJBQTZEO0lBR3pELEFBREYsaUNBQXNFLFlBQzdEO0lBQ0wsaUhBQXNEO0lBZ0IxRCxBQURFLGlCQUFRLEVBQ0Y7Ozs7SUFoQjRCLGVBQW9CO0lBQXBCLGtEQUFvQjs7O0lBMEJwRCxnQ0FBMEY7SUFDeEYsWUFDRjs7O0lBQUEsaUJBQU87OztJQURMLGNBQ0Y7SUFERSw0SEFDRjs7O0lBTUEsZ0NBQXNHO0lBQ3BHLFlBQ0Y7OztJQUFBLGlCQUFPOzs7SUFETCxjQUNGO0lBREUsb0lBQ0Y7OztJQWxCTiw2QkFBdUM7SUFDckMsb0NBQW9EO0lBQ2xELDZCQUF3QztJQUV0QyxBQURGLCtCQUE0SCxnQkFDcEU7SUFDcEQsMENBQ0E7SUFBQSxnQ0FBd0I7SUFBQSxnRUFBZ0Q7SUFDMUUsQUFEMEUsaUJBQU8sRUFDekU7SUFDUixpR0FBMEY7SUFHMUYsNEJBQ3VJO0lBQ3pJLGlCQUFNO0lBRUosQUFERixnQ0FBNEksaUJBQ2hGO0lBQUEsNkNBQTRCO0lBQUEsaUJBQVE7SUFDOUYsbUdBQXNHO0lBR3RHLGdDQUNxSTtJQUV6SSxBQURFLGlCQUFNLEVBQ0c7Ozs7SUFuQmUsZUFBbUc7SUFBbkcsbUpBQW1HO0lBSzVGLGVBQTJEO0lBQTNELGtJQUEyRDtJQUl0RixjQUF5RjtJQUF6RixpS0FBeUY7SUFFckUsY0FBbUg7SUFBbkgsb0tBQW1IO0lBRTVHLGVBQXVFO0lBQXZFLGtKQUF1RTtJQUlsRyxjQUFxRztJQUFyRyxrTEFBcUc7OztJQXBGL0csMkJBQXVEO0lBZ0VyRCxBQXRCQSxBQXpDQSxpR0FBNkQsb0ZBeUNBLHNGQXNCdEI7SUF3QnpDLGlCQUFNOzs7SUF2RlcsY0FBNEM7SUFBNUMsb0VBQTRDO0lBeUM1QyxjQUE0QztJQUE1QyxvRUFBNEM7SUFzQjVDLGNBQXNCO0lBQXRCLDhDQUFzQjs7OztJQXlCdkMscURBRXdEO0lBQXRELCtQQUF1QixvQ0FBNkIsS0FBQztJQUN2RCxpQkFBNEI7OztJQUYxQiw2RUFBd0Q7O0FEdEY5RCxXQUFXO0FBTVgsTUFBTSxPQUFPLHVCQUF1QjtJQTBDaEI7SUFDQztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFsRFosWUFBWSxDQUFtQjtJQUMvQixRQUFRLENBQVk7SUFDcEIsV0FBVyxDQUFTO0lBQ3BCLE1BQU0sQ0FBUztJQUNmLE9BQU8sQ0FBVTtJQUNqQixpQkFBaUIsQ0FBYztJQUMvQixjQUFjLEdBQW1CLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQztJQUNsRSxtQkFBbUIsQ0FBZTtJQUNsQyxhQUFhLENBQWM7SUFDM0IsSUFBSSxDQUFPO0lBQ1gsU0FBUyxDQUFTO0lBQ2xCLG9CQUFvQixDQUFTO0lBQzdCLGVBQWUsQ0FBTTtJQUNyQixPQUFPLENBQWtCO0lBQ3pCLFdBQVcsQ0FBa0I7SUFDN0IsaUJBQWlCLEdBQVcsZUFBZSxDQUFDO0lBQzVDLHFCQUFxQixHQUFXLG1CQUFtQixDQUFDO0lBRXBELE1BQU0sQ0FBVSxxQ0FBcUMsR0FBRyxDQUFDLENBQVksRUFBRSxDQUFZLEVBQVUsRUFBRTtRQUNwRyxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsMkJBQTJCLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQywyQkFBMkIsQ0FBQztRQUN4RixNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsMkJBQTJCLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQywyQkFBMkIsQ0FBQztRQUV4RixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ1osQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFDLDJCQUEyQixHQUFHLENBQUMsQ0FBQywyQkFBMkIsQ0FBQztJQUN2RSxDQUFDLENBQUM7SUFFRixJQUFXLFVBQVU7UUFDbkIsWUFBWTtRQUNaLHlFQUF5RTtRQUN6RSx5RUFBeUU7UUFDekUscUJBQXFCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsWUFDa0IsUUFBMkIsRUFDMUIsV0FBd0IsRUFDeEIsZ0JBQWtDLEVBQ2xDLEtBQXFCLEVBQ3JCLFlBQTBCLEVBQzFCLGVBQWdDLEVBQ2hDLDhCQUE4RCxFQUM5RCxxQkFBNEMsRUFDNUMsb0JBQTBDLEVBQzFDLGtCQUFzQztRQVR2QyxhQUFRLEdBQVIsUUFBUSxDQUFtQjtRQUMxQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxtQ0FBOEIsR0FBOUIsOEJBQThCLENBQWdDO1FBQzlELDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO0lBRXpELENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMzRixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO1FBQy9DLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsSUFBSSx1QkFBdUIsQ0FBQyxtQkFBbUIsQ0FBQztRQUNyRyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ25DLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDbkMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzVGLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUNuQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFO1lBQ3RFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuSSxnSEFBZ0g7UUFDaEgsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxRQUFRLENBQUMsb0JBQW9CO1lBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoSCxJQUFJLENBQUMsUUFBUSxDQUFDLHVCQUF1QjtZQUNuQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkgsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFckMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUNoRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUVNLFdBQVc7UUFDaEIsMEJBQTBCO1FBQzFCLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pDLENBQUM7SUFDSCxDQUFDO0lBRU0sTUFBTTtRQUNYLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNqRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztnQkFDMUMseUhBQXlIO2dCQUN6SCxJQUFJLENBQUMsa0JBQWtCLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUNoRCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7Z0JBQ3ZCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDL0IsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUNuQixNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNO2dCQUM1QixXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXO2FBQ3ZDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRU0scUJBQXFCLENBQUMsbUJBQTRCO1FBQ3ZELElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUM7WUFDbEMsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLG1CQUFtQjtZQUNuQixXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXO1lBQ3RDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUTtZQUNuQixNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNO1NBQzdCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxZQUFZO1FBQ2xCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEksSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixNQUFNLHNCQUFzQixHQUFHLGFBQWEsQ0FBQyx5QkFBeUIsS0FBSyw0QkFBNEI7Z0JBQ3JHLGFBQWEsQ0FBQyx5QkFBeUIsS0FBSyw0QkFBNEIsQ0FBQztZQUMzRSxPQUFPLHNCQUFzQjtnQkFDM0IsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLHNCQUFzQjtnQkFDN0MsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLG1CQUFtQixDQUFDO1FBQy9DLENBQUM7UUFDRCxPQUFPLG9CQUFvQixDQUFDLGtCQUFrQixDQUFDO0lBQ2pELENBQUM7SUFFRCxJQUFZLFNBQVM7UUFDbkIsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxDQUFDO0lBQ3RELENBQUM7SUFFTSxjQUFjLENBQUMsTUFBYztRQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU0sb0JBQW9CLENBQUMsWUFBbUM7UUFDN0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDLGFBQWEsQ0FBQztRQUN6RCxJQUFJLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUM7SUFDOUMsQ0FBQztJQUVNLGdCQUFnQixDQUFDLEtBQWdCO1FBQ3RDLDBCQUEwQjtRQUMxQixJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDckQsc0NBQXNDO1lBQ3RDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFjLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JFLFVBQVUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFFakUsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTywyQkFBMkI7UUFDakMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDaEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDO1FBRWpFLElBQUksY0FBYyxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMxRSxjQUFjLENBQUMsS0FBSyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDMUQsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUNoRCxDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDakQsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssV0FBVyxDQUFDLENBQ3ZELEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO0lBQ3pCLENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNyQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDM0YsTUFBTSxNQUFNLEdBQUcsTUFBTSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDO1lBQzVILElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDM0MsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqQyxDQUFDO0lBQ0gsQ0FBQztJQUVNLE9BQU8sQ0FBQyxLQUFnQjtRQUM3QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVNLGVBQWUsQ0FBQyxLQUFnQjtRQUNyQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRU0sb0NBQW9DO1FBQ3pDLDBCQUEwQjtRQUMxQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzlFLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDckMsMEJBQTBCO2dCQUMxQixJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUMzQyxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzt3QkFDckMsMEJBQTBCO3dCQUMxQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDOzRCQUNsQyxtQ0FBbUM7NEJBQ25DLE9BQU8sSUFBSSxDQUFDO3dCQUNkLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sOENBQThDO1lBQzlDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFFTSxvQ0FBb0M7UUFDekMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQywyQkFBMkIsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRU0sY0FBYztRQUNuQixnRkFBZ0Y7UUFDaEYsMENBQTBDO1FBQzFDLGdDQUFnQztRQUNoQyxtRkFBbUY7UUFDbkYsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDdkMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFO21CQUM5QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUM7UUFDM0MsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLFFBQW9CLENBQUM7UUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNsQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxrQ0FBa0M7UUFDbEMsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUN2QyxzSUFBc0k7WUFDdEksSUFBSSxDQUFDLG9CQUFvQixDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxrQkFBa0IsQ0FBQztRQUNoRyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUNuRCxDQUFDO1FBQ0QsMEJBQTBCO1FBQzFCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsRCxDQUFDO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVNLE9BQU8sQ0FBQyxJQUFnQjtRQUM3QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVzthQUM1Qiw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEcsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxLQUFnQjtRQUN2QyxPQUFPLEtBQUssQ0FBQywwQkFBMEIsQ0FBQztJQUMxQyxDQUFDO0lBRU8sOEJBQThCLENBQUMsTUFBbUI7UUFDeEQsT0FBTyxJQUFJLENBQUMsWUFBWTthQUNyQixJQUFJLENBQUMsTUFBTSxFQUFFLHVCQUF1QixDQUFDLHFDQUFxQyxDQUFDO2FBQzNFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVPLGFBQWE7UUFDbkIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzlCLE9BQU8sV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFTSxZQUFZO1FBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLO1lBQ2xFLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hHLENBQUM7SUFFTSxhQUFhO1FBQ2xCLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNyQyxPQUFPLHFCQUFxQixDQUFDO1FBQy9CLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO2lGQXhTVSx1QkFBdUI7NkRBQXZCLHVCQUF1Qjs7WUMzQmxDLEFBRkYsMkJBQUssWUFFeUI7WUFBQSxZQUFvQzs7WUFBQSxpQkFBSztZQU9yRSxBQUhBLEFBREEsd0VBQTJELDRHQUNsQyw0R0FHSDtZQUl0QixrREFBc0Y7WUFFdEYsK0NBQzJFO1lBQXZELDhMQUF5QixnQ0FBNEIsS0FBQztZQUFDLGlCQUFzQjtZQUVqRyxnQ0FBNEU7WUFBcEIsMklBQVUsWUFBUSxLQUFDO1lBMEZ6RSxBQXpGQSwwRUFBdUQseUdBMkZDO1lBR3RELEFBREYsK0JBQTJDLGtCQUN1RjtZQUFyQiwySUFBUyxjQUFVLEtBQUM7WUFDN0gsYUFDRjs7WUFBQSxpQkFBUztZQUNULG1DQUE2RDtZQUMzRCxhQUNGOztZQUNGLEFBREUsaUJBQVMsRUFDTDtZQUVKLEFBREYsOEJBQWtCLGFBQ3lFO1lBQXRGLHNJQUFTLFlBQVEsS0FBQztZQUFvRSxhQUFrQzs7WUFHakksQUFERSxBQURFLEFBRDZILGlCQUFJLEVBQzdILEVBQ0MsRUFDSDs7OztZQTFId0IsZUFBb0M7WUFBcEMsa0VBQW9DO1lBRzFELGVBQXNCO1lBQWlCLEFBQWpCLEFBQXRCLHlDQUFzQiwyQkFBaUIsd0JBQVk7WUFRM0IsZUFBd0I7WUFBeEIsMENBQXdCO1lBRWpDLGNBQXdEO1lBQXhELDBFQUF3RDtZQUc1QyxjQUFzQjtZQUF0Qix3Q0FBc0I7WUFDL0MsY0FBK0M7WUFBL0Msb0VBQStDO1lBeUZ6QixjQUE4QztZQUE5QyxtRUFBOEM7WUFLbEIsZUFBb0Q7WUFBcEQsMEVBQW9EO1lBQ3hHLGNBQ0Y7WUFERSxtRUFDRjtZQUNzQixlQUF1QjtZQUF2Qix5Q0FBdUI7WUFDM0MsY0FDRjtZQURFLHdFQUNGO1lBR2dELGVBQXdDO1lBQXhDLHFEQUF3QztZQUFDLGNBQWtDO1lBQWxDLGlFQUFrQzs7O2lGRDVGcEgsdUJBQXVCO2NBTG5DLFNBQVM7MkJBQ0Usc0JBQXNCOztrRkFJckIsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENhc2VFdmVudFRyaWdnZXIsIENhc2VGaWVsZCwgUHJvZmlsZSB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBUYXNrIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL3dvcmstYWxsb2NhdGlvbi9UYXNrJztcbmltcG9ydCB7XG4gIENhc2VGaWVsZFNlcnZpY2UsXG4gIEZpZWxkc1V0aWxzLFxuICBNdWx0aXBhZ2VDb21wb25lbnRTdGF0ZVNlcnZpY2UsXG4gIEZvcm1WYWxpZGF0b3JzU2VydmljZSxcbiAgT3JkZXJTZXJ2aWNlLFxuICBQcm9maWxlTm90aWZpZXJcbn0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgQ2FsbGJhY2tFcnJvcnNDb21wb25lbnQsIENhbGxiYWNrRXJyb3JzQ29udGV4dCB9IGZyb20gJy4uLy4uL2Vycm9yJztcbmltcG9ydCB7IFBhbGV0dGVDb250ZXh0IH0gZnJvbSAnLi4vLi4vcGFsZXR0ZSc7XG5pbXBvcnQgeyBDYXNlRWRpdFBhZ2VDb21wb25lbnQgfSBmcm9tICcuLi9jYXNlLWVkaXQtcGFnZS9jYXNlLWVkaXQtcGFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FzZUVkaXRDb21wb25lbnQgfSBmcm9tICcuLi9jYXNlLWVkaXQvY2FzZS1lZGl0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXaXphcmQsIFdpemFyZFBhZ2UgfSBmcm9tICcuLi9kb21haW4nO1xuaW1wb3J0IHsgQ2FzZUVkaXRTdWJtaXRUaXRsZXMgfSBmcm9tICcuL2Nhc2UtZWRpdC1zdWJtaXQtdGl0bGVzLmVudW0nO1xuaW1wb3J0IHsgQ2FzZUZsYWdTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jYXNlLWZsYWctc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBMaW5rZWRDYXNlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9wYWxldHRlL2xpbmtlZC1jYXNlcy9zZXJ2aWNlcy9saW5rZWQtY2FzZXMuc2VydmljZSc7XG5cbi8vIEBkeW5hbWljXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtY2FzZS1lZGl0LXN1Ym1pdCcsXG4gIHRlbXBsYXRlVXJsOiAnY2FzZS1lZGl0LXN1Ym1pdC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4uL2Nhc2UtZWRpdC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2FzZUVkaXRTdWJtaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBldmVudFRyaWdnZXI6IENhc2VFdmVudFRyaWdnZXI7XG4gIHB1YmxpYyBlZGl0Rm9ybTogRm9ybUdyb3VwO1xuICBwdWJsaWMgdHJpZ2dlclRleHQ6IHN0cmluZztcbiAgcHVibGljIHdpemFyZDogV2l6YXJkO1xuICBwdWJsaWMgcHJvZmlsZTogUHJvZmlsZTtcbiAgcHVibGljIHNob3dTdW1tYXJ5RmllbGRzOiBDYXNlRmllbGRbXTtcbiAgcHVibGljIHBhbGV0dGVDb250ZXh0OiBQYWxldHRlQ29udGV4dCA9IFBhbGV0dGVDb250ZXh0LkNIRUNLX1lPVVJfQU5TV0VSO1xuICBwdWJsaWMgcHJvZmlsZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgY29udGV4dEZpZWxkczogQ2FzZUZpZWxkW107XG4gIHB1YmxpYyB0YXNrOiBUYXNrO1xuICBwdWJsaWMgcGFnZVRpdGxlOiBzdHJpbmc7XG4gIHB1YmxpYyBtZXRhZGF0YUZpZWxkc09iamVjdDogb2JqZWN0O1xuICBwdWJsaWMgYWxsRmllbGRzVmFsdWVzOiBhbnk7XG4gIHB1YmxpYyBzdW1tYXJ5OiBBYnN0cmFjdENvbnRyb2w7XG4gIHB1YmxpYyBkZXNjcmlwdGlvbjogQWJzdHJhY3RDb250cm9sO1xuICBwdWJsaWMgZXZlbnRTdW1tYXJ5TGFiZWw6IHN0cmluZyA9ICdFdmVudCBzdW1tYXJ5JztcbiAgcHVibGljIGV2ZW50RGVzY3JpcHRpb25MYWJlbDogc3RyaW5nID0gJ0V2ZW50IGRlc2NyaXB0aW9uJztcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNIT1dfU1VNTUFSWV9DT05URU5UX0NPTVBBUkVfRlVOQ1RJT04gPSAoYTogQ2FzZUZpZWxkLCBiOiBDYXNlRmllbGQpOiBudW1iZXIgPT4ge1xuICAgIGNvbnN0IGFDYXNlRmllbGQgPSBhLnNob3dfc3VtbWFyeV9jb250ZW50X29wdGlvbiA9PT0gMCB8fCBhLnNob3dfc3VtbWFyeV9jb250ZW50X29wdGlvbjtcbiAgICBjb25zdCBiQ2FzZUZpZWxkID0gYi5zaG93X3N1bW1hcnlfY29udGVudF9vcHRpb24gPT09IDAgfHwgYi5zaG93X3N1bW1hcnlfY29udGVudF9vcHRpb247XG5cbiAgICBpZiAoIWFDYXNlRmllbGQpIHtcbiAgICAgIHJldHVybiAhYkNhc2VGaWVsZCA/IDAgOiAxO1xuICAgIH1cblxuICAgIGlmICghYkNhc2VGaWVsZCkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICByZXR1cm4gYS5zaG93X3N1bW1hcnlfY29udGVudF9vcHRpb24gLSBiLnNob3dfc3VtbWFyeV9jb250ZW50X29wdGlvbjtcbiAgfTtcblxuICBwdWJsaWMgZ2V0IGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgLy8gRVVJLTM0NTIuXG4gICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjaGVjayB0aGUgdmFsaWRpdHkgb2YgdGhlIGVkaXRGb3JtIGFzIGl0IGlzIHJlYWRvbmx5LlxuICAgIC8vIFRoaXMgd2FzIGNhdXNpbmcgaXNzdWVzIHdpdGggaGlkZGVuIGZpZWxkcyB0aGF0IGFyZW4ndCB3YW50ZWQgYnV0IGhhdmVcbiAgICAvLyBub3QgYmVlbiBkaXNhYmxlZC5cbiAgICByZXR1cm4gdGhpcy5jYXNlRWRpdC5pc1N1Ym1pdHRpbmcgfHwgdGhpcy5oYXNFcnJvcnM7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgY2FzZUVkaXQ6IENhc2VFZGl0Q29tcG9uZW50LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmllbGRzVXRpbHM6IEZpZWxkc1V0aWxzLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZUZpZWxkU2VydmljZTogQ2FzZUZpZWxkU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9yZGVyU2VydmljZTogT3JkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvZmlsZU5vdGlmaWVyOiBQcm9maWxlTm90aWZpZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBtdWx0aXBhZ2VDb21wb25lbnRTdGF0ZVNlcnZpY2U6IE11bHRpcGFnZUNvbXBvbmVudFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1WYWxpZGF0b3JzU2VydmljZTogRm9ybVZhbGlkYXRvcnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZUZsYWdTdGF0ZVNlcnZpY2U6IENhc2VGbGFnU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGlua2VkQ2FzZXNTZXJ2aWNlOiBMaW5rZWRDYXNlc1NlcnZpY2UsXG4gICkge1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucHJvZmlsZVN1YnNjcmlwdGlvbiA9IHRoaXMucHJvZmlsZU5vdGlmaWVyLnByb2ZpbGUuc3Vic2NyaWJlKChfKSA9PiB0aGlzLnByb2ZpbGUgPSBfKTtcbiAgICB0aGlzLmV2ZW50VHJpZ2dlciA9IHRoaXMuY2FzZUVkaXQuZXZlbnRUcmlnZ2VyO1xuICAgIHRoaXMudHJpZ2dlclRleHQgPSB0aGlzLmV2ZW50VHJpZ2dlci5lbmRfYnV0dG9uX2xhYmVsIHx8IENhbGxiYWNrRXJyb3JzQ29tcG9uZW50LlRSSUdHRVJfVEVYVF9TVUJNSVQ7XG4gICAgdGhpcy5lZGl0Rm9ybSA9IHRoaXMuY2FzZUVkaXQuZm9ybTtcbiAgICB0aGlzLndpemFyZCA9IHRoaXMuY2FzZUVkaXQud2l6YXJkO1xuICAgIHRoaXMuc2hvd1N1bW1hcnlGaWVsZHMgPSB0aGlzLnNvcnRGaWVsZHNCeVNob3dTdW1tYXJ5Q29udGVudCh0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcyk7XG4gICAgdGhpcy5jYXNlRWRpdC5pc1N1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmNvbnRleHRGaWVsZHMgPSB0aGlzLmdldENhc2VGaWVsZHMoKTtcbiAgICB0aGlzLm1ldGFkYXRhRmllbGRzT2JqZWN0ID0gdGhpcy5jYXNlRWRpdD8uY2FzZURldGFpbHM/Lm1ldGFkYXRhRmllbGRzPy5cbiAgICAgIHJlZHVjZSgobywga2V5KSA9PiBPYmplY3QuYXNzaWduKG8sIHsgW2tleS5pZF06IGtleS52YWx1ZSB9KSwge30pO1xuICAgIHRoaXMuYWxsRmllbGRzVmFsdWVzID0gT2JqZWN0LmFzc2lnbih0aGlzLm1ldGFkYXRhRmllbGRzT2JqZWN0ID8gdGhpcy5tZXRhZGF0YUZpZWxkc09iamVjdCA6IHt9LCB0aGlzLmVkaXRGb3JtLmdldFJhd1ZhbHVlKCkuZGF0YSk7XG4gICAgLy8gSW5kaWNhdGVzIGlmIHRoZSBzdWJtaXNzaW9uIGlzIGZvciBhIENhc2UgRmxhZywgYXMgb3Bwb3NlZCB0byBhIFwicmVndWxhclwiIGZvcm0gc3VibWlzc2lvbiwgYnkgdGhlIHByZXNlbmNlIG9mXG4gICAgLy8gYSBGbGFnTGF1bmNoZXIgZmllbGQgaW4gdGhlIGV2ZW50IHRyaWdnZXJcbiAgICB0aGlzLmNhc2VFZGl0LmlzQ2FzZUZsYWdTdWJtaXNzaW9uID1cbiAgICAgIHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzLnNvbWUoKGNhc2VGaWVsZCkgPT4gRmllbGRzVXRpbHMuaXNDYXNlRmllbGRPZlR5cGUoY2FzZUZpZWxkLCBbJ0ZsYWdMYXVuY2hlciddKSk7XG4gICAgdGhpcy5jYXNlRWRpdC5pc0xpbmtlZENhc2VzU3VibWlzc2lvbiA9XG4gICAgICB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcy5zb21lKGNhc2VGaWVsZCA9PiBGaWVsZHNVdGlscy5pc0Nhc2VGaWVsZE9mVHlwZShjYXNlRmllbGQsIFsnQ29tcG9uZW50TGF1bmNoZXInXSkpO1xuICAgIHRoaXMucGFnZVRpdGxlID0gdGhpcy5nZXRQYWdlVGl0bGUoKTtcblxuICAgIHRoaXMuc3VtbWFyeSA9IHRoaXMuZm9ybVZhbGlkYXRvcnNTZXJ2aWNlLmFkZE1hcmtEb3duVmFsaWRhdG9ycyh0aGlzLmVkaXRGb3JtLCAnZXZlbnQuc3VtbWFyeScpO1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSB0aGlzLmZvcm1WYWxpZGF0b3JzU2VydmljZS5hZGRNYXJrRG93blZhbGlkYXRvcnModGhpcy5lZGl0Rm9ybSwgJ2V2ZW50LmRlc2NyaXB0aW9uJyk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5wcm9maWxlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnByb2ZpbGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3VibWl0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN1bW1hcnkudmFsaWQgJiYgdGhpcy5kZXNjcmlwdGlvbi52YWxpZCkge1xuICAgICAgaWYgKHRoaXMuY2FzZUVkaXQuaXNMaW5rZWRDYXNlc1N1Ym1pc3Npb24pIHtcbiAgICAgICAgLy8gb25jZSB0aGUgdXNlciBzdWJtaXRzIHRoZSBsaW5rZWQgY2FzZXMgd2UgbmVlZCB0byByZXNldCB0aGUgc2VydmljZSBzbyBkYXRhIGlzbnQgcmV0YWluZWQgaWYgdGhleSBvcGVuIHRoZSBldmVudCBhZ2FpblxuICAgICAgICB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5yZXNldExpbmtlZENhc2VEYXRhKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmNhc2VFZGl0LnN1Ym1pdEZvcm0oe1xuICAgICAgICBldmVudFRyaWdnZXI6IHRoaXMuZXZlbnRUcmlnZ2VyLFxuICAgICAgICBmb3JtOiB0aGlzLmVkaXRGb3JtLFxuICAgICAgICBzdWJtaXQ6IHRoaXMuY2FzZUVkaXQuc3VibWl0LFxuICAgICAgICBjYXNlRGV0YWlsczogdGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlsc1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uRXZlbnRDYW5CZUNvbXBsZXRlZChldmVudENhbkJlQ29tcGxldGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5jYXNlRWRpdC5vbkV2ZW50Q2FuQmVDb21wbGV0ZWQoe1xuICAgICAgZXZlbnRUcmlnZ2VyOiB0aGlzLmV2ZW50VHJpZ2dlcixcbiAgICAgIGV2ZW50Q2FuQmVDb21wbGV0ZWQsXG4gICAgICBjYXNlRGV0YWlsczogdGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscyxcbiAgICAgIGZvcm06IHRoaXMuZWRpdEZvcm0sXG4gICAgICBzdWJtaXQ6IHRoaXMuY2FzZUVkaXQuc3VibWl0XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFBhZ2VUaXRsZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNhc2VGbGFnRmllbGQgPSB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcy5maW5kKGNhc2VGaWVsZCA9PiBGaWVsZHNVdGlscy5pc0Nhc2VGaWVsZE9mVHlwZShjYXNlRmllbGQsIFsnRmxhZ0xhdW5jaGVyJ10pKTtcbiAgICBpZiAoY2FzZUZsYWdGaWVsZCkge1xuICAgICAgY29uc3QgaXNDYXNlRmxhZ0V4dGVybmFsTW9kZSA9IGNhc2VGbGFnRmllbGQuZGlzcGxheV9jb250ZXh0X3BhcmFtZXRlciA9PT0gJyNBUkdVTUVOVChVUERBVEUsRVhURVJOQUwpJyB8fFxuICAgICAgICBjYXNlRmxhZ0ZpZWxkLmRpc3BsYXlfY29udGV4dF9wYXJhbWV0ZXIgPT09ICcjQVJHVU1FTlQoQ1JFQVRFLEVYVEVSTkFMKSc7XG4gICAgICByZXR1cm4gaXNDYXNlRmxhZ0V4dGVybmFsTW9kZVxuICAgICAgICA/IENhc2VFZGl0U3VibWl0VGl0bGVzLlJFVklFV19TVVBQT1JUX1JFUVVFU1RcbiAgICAgICAgOiBDYXNlRWRpdFN1Ym1pdFRpdGxlcy5SRVZJRVdfRkxBR19ERVRBSUxTO1xuICAgIH1cbiAgICByZXR1cm4gQ2FzZUVkaXRTdWJtaXRUaXRsZXMuQ0hFQ0tfWU9VUl9BTlNXRVJTO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaGFzRXJyb3JzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNhc2VFZGl0Py5lcnJvcj8uY2FsbGJhY2tFcnJvcnM/Lmxlbmd0aDtcbiAgfVxuXG4gIHB1YmxpYyBuYXZpZ2F0ZVRvUGFnZShwYWdlSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY2FzZUVkaXQubmF2aWdhdGVUb1BhZ2UocGFnZUlkKTtcbiAgfVxuXG4gIHB1YmxpYyBjYWxsYmFja0Vycm9yc05vdGlmeShlcnJvckNvbnRleHQ6IENhbGxiYWNrRXJyb3JzQ29udGV4dCk6IHZvaWQge1xuICAgIHRoaXMuY2FzZUVkaXQuaWdub3JlV2FybmluZyA9IGVycm9yQ29udGV4dC5pZ25vcmVXYXJuaW5nO1xuICAgIHRoaXMudHJpZ2dlclRleHQgPSBlcnJvckNvbnRleHQudHJpZ2dlclRleHQ7XG4gIH1cblxuICBwdWJsaWMgc3VtbWFyeUNhc2VGaWVsZChmaWVsZDogQ2FzZUZpZWxkKTogQ2FzZUZpZWxkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChudWxsID09PSB0aGlzLmVkaXRGb3JtLmdldCgnZGF0YScpLmdldChmaWVsZC5pZCkpIHtcbiAgICAgIC8vIElmIG5vdCBpbiBmb3JtLCByZXR1cm4gZmllbGQgaXRzZWxmXG4gICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgY29uc3QgY2xvbmVGaWVsZDogQ2FzZUZpZWxkID0gdGhpcy5maWVsZHNVdGlscy5jbG9uZUNhc2VGaWVsZChmaWVsZCk7XG4gICAgY2xvbmVGaWVsZC52YWx1ZSA9IHRoaXMuZWRpdEZvcm0uZ2V0KCdkYXRhJykuZ2V0KGZpZWxkLmlkKS52YWx1ZTtcblxuICAgIHJldHVybiBjbG9uZUZpZWxkO1xuICB9XG5cbiAgcHVibGljIGNhbmNlbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYXNlRWRpdC5pc0xpbmtlZENhc2VzU3VibWlzc2lvbikge1xuICAgICAgdGhpcy5oYW5kbGVMaW5rZWRDYXNlc1N1Ym1pc3Npb24oKTtcbiAgICB9XG4gICAgdGhpcy5lbWl0Q2FuY2VsRXZlbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTGlua2VkQ2FzZXNTdWJtaXNzaW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IGxpbmtlZENhc2VzVGFiID0gdGhpcy5nZXRMaW5rZWRDYXNlc1RhYigpO1xuICAgIGNvbnN0IGluaXRpYWxMaW5rcyA9IHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLmluaXRpYWxDYXNlTGlua1JlZnM7XG5cbiAgICBpZiAobGlua2VkQ2FzZXNUYWIgJiYgbGlua2VkQ2FzZXNUYWIudmFsdWUubGVuZ3RoICE9PSBpbml0aWFsTGlua3MubGVuZ3RoKSB7XG4gICAgICBsaW5rZWRDYXNlc1RhYi52YWx1ZSA9IGxpbmtlZENhc2VzVGFiLnZhbHVlLmZpbHRlcigoaXRlbSkgPT5cbiAgICAgICAgaW5pdGlhbExpbmtzLmluY2x1ZGVzKGl0ZW0udmFsdWUuQ2FzZVJlZmVyZW5jZSlcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLnJlc2V0TGlua2VkQ2FzZURhdGEoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TGlua2VkQ2FzZXNUYWIoKTogQ2FzZUZpZWxkIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMudGFicy5maW5kKCh0YWIpID0+XG4gICAgICB0YWI/LmZpZWxkcz8uc29tZSgoZmllbGQpID0+IGZpZWxkLmlkID09PSAnY2FzZUxpbmtzJylcbiAgICApPy5maWVsZHM/LlswXSA/PyBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0Q2FuY2VsRXZlbnQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZXZlbnRUcmlnZ2VyLmNhbl9zYXZlX2RyYWZ0KSB7XG4gICAgICBjb25zdCBvcmlnaW4gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KENhc2VFZGl0Q29tcG9uZW50Lk9SSUdJTl9RVUVSWV9QQVJBTSk7XG4gICAgICBjb25zdCBzdGF0dXMgPSBvcmlnaW4gPT09ICd2aWV3RHJhZnQnID8gQ2FzZUVkaXRQYWdlQ29tcG9uZW50LlJFU1VNRURfRk9STV9ESVNDQVJEIDogQ2FzZUVkaXRQYWdlQ29tcG9uZW50Lk5FV19GT1JNX0RJU0NBUkQ7XG4gICAgICB0aGlzLmNhc2VFZGl0LmNhbmNlbGxlZC5lbWl0KHsgc3RhdHVzIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhc2VFZGl0LmNhbmNlbGxlZC5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzTGFiZWwoZmllbGQ6IENhc2VGaWVsZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNhc2VGaWVsZFNlcnZpY2UuaXNMYWJlbChmaWVsZCk7XG4gIH1cblxuICBwdWJsaWMgaXNDaGFuZ2VBbGxvd2VkKGZpZWxkOiBDYXNlRmllbGQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuY2FzZUZpZWxkU2VydmljZS5pc1JlYWRPbmx5KGZpZWxkKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGVja1lvdXJBbnN3ZXJGaWVsZHNUb0Rpc3BsYXlFeGlzdHMoKTogYm9vbGVhbiB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5ldmVudFRyaWdnZXIuc2hvd19zdW1tYXJ5IHx8IHRoaXMuZXZlbnRUcmlnZ2VyLnNob3dfc3VtbWFyeSA9PT0gbnVsbCkge1xuICAgICAgZm9yIChjb25zdCBwYWdlIG9mIHRoaXMud2l6YXJkLnBhZ2VzKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChwYWdlLmNhc2VfZmllbGRzICYmIHRoaXMuaXNTaG93bihwYWdlKSkge1xuICAgICAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgcGFnZS5jYXNlX2ZpZWxkcykge1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICAgIGlmICh0aGlzLmNhblNob3dGaWVsZEluQ1lBKGZpZWxkKSkge1xuICAgICAgICAgICAgICAvLyBhdCBsZWFzdCBvbmUgZmllbGQgbmVlZHMgc2hvd2luZ1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZm91bmQgbm8gZmllbGRzIHRvIHNob3cgaW4gQ1lBIHN1bW1hcnkgcGFnZVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWFkT25seVN1bW1hcnlGaWVsZHNUb0Rpc3BsYXlFeGlzdHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzLnNvbWUoKGZpZWxkKSA9PiBmaWVsZC5zaG93X3N1bW1hcnlfY29udGVudF9vcHRpb24gPj0gMCk7XG4gIH1cblxuICBwdWJsaWMgc2hvd0V2ZW50Tm90ZXMoKTogYm9vbGVhbiB7XG4gICAgLy8gRGlzcGxheSBldmVudCBub3RlcyByZWxhdGVkIGNvbnRyb2xzIG9ubHkgaWYgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXRcbiAgICAvLyAxLiBzaG93X2V2ZW50X25vdGVzIGZsYWcgaXMgc2V0IHRvIHRydWVcbiAgICAvLyAyLiBwcm9maWxlIGlzIG5vdCBhIHNvbGljaXRvclxuICAgIC8vIDMuIGlzIG5vdCBhIGNhc2UgZmxhZ3Mgam91cm5leSwgYXMgaXQgdXNlcyBhIGN1c3RvbSBjaGVjayB5b3VyIGFuc3dlcnMgY29tcG9uZW50XG4gICAgaWYgKHRoaXMuZXZlbnRUcmlnZ2VyLnNob3dfZXZlbnRfbm90ZXMpIHtcbiAgICAgIHJldHVybiAhdGhpcy5wcm9maWxlPy5pc1NvbGljaXRvcigpXG4gICAgICAgICYmICF0aGlzLmNhc2VFZGl0LmlzQ2FzZUZsYWdTdWJtaXNzaW9uO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGdldExhc3RQYWdlU2hvd24oKTogV2l6YXJkUGFnZSB7XG4gICAgbGV0IGxhc3RQYWdlOiBXaXphcmRQYWdlO1xuICAgIHRoaXMud2l6YXJkLnJldmVyc2UoKS5mb3JFYWNoKChwYWdlKSA9PiB7XG4gICAgICBpZiAoIWxhc3RQYWdlICYmIHRoaXMuaXNTaG93bihwYWdlKSkge1xuICAgICAgICBsYXN0UGFnZSA9IHBhZ2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy8gbm9pbnNwZWN0aW9uIEpTVW51c2VkQXNzaWdubWVudFxuICAgIHJldHVybiBsYXN0UGFnZTtcbiAgfVxuXG4gIHB1YmxpYyBwcmV2aW91cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYXNlRWRpdC5pc0Nhc2VGbGFnU3VibWlzc2lvbikge1xuICAgICAgLy8gaWYgd2UgYXJlIGluIHRoZSBjYXNlZmxhZyBqb3VybmV5IHdlIG5lZWQgdG8gc3RvcmUgdGhlIGxhc3QgcGFnZSBpbmRleCBzbyB0aGF0IHRoZSBwcmV2aW91cyBidXR0b24gb24gQ1lBIHdpbGwgdGFrZSB0byBjb3JyZWN0IHBhZ2VcbiAgICAgIHRoaXMuY2FzZUZsYWdTdGF0ZVNlcnZpY2UuZmllbGRTdGF0ZVRvTmF2aWdhdGUgPSB0aGlzLmNhc2VGbGFnU3RhdGVTZXJ2aWNlLmxhc3RQYWdlRmllbGRTdGF0ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY2FzZUVkaXQuaXNMaW5rZWRDYXNlc1N1Ym1pc3Npb24pIHtcbiAgICAgIHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLmNhbWVGcm9tRmluYWxTdGVwID0gdHJ1ZTtcbiAgICB9XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5oYXNQcmV2aW91cygpKSB7XG4gICAgICB0aGlzLm5hdmlnYXRlVG9QYWdlKHRoaXMuZ2V0TGFzdFBhZ2VTaG93bigpLmlkKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFzUHJldmlvdXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5nZXRMYXN0UGFnZVNob3duKCk7XG4gIH1cblxuICBwdWJsaWMgaXNTaG93bihwYWdlOiBXaXphcmRQYWdlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5maWVsZHNVdGlsc1xuICAgICAgLm1lcmdlQ2FzZUZpZWxkc0FuZEZvcm1GaWVsZHModGhpcy5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHMsIHRoaXMuZWRpdEZvcm0uY29udHJvbHMuZGF0YS52YWx1ZSk7XG4gICAgcmV0dXJuIHBhZ2UucGFyc2VkU2hvd0NvbmRpdGlvbi5tYXRjaChmaWVsZHMpO1xuICB9XG5cbiAgcHVibGljIGNhblNob3dGaWVsZEluQ1lBKGZpZWxkOiBDYXNlRmllbGQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmllbGQuc2hvd19zdW1tYXJ5X2NoYW5nZV9vcHRpb247XG4gIH1cblxuICBwcml2YXRlIHNvcnRGaWVsZHNCeVNob3dTdW1tYXJ5Q29udGVudChmaWVsZHM6IENhc2VGaWVsZFtdKTogQ2FzZUZpZWxkW10ge1xuICAgIHJldHVybiB0aGlzLm9yZGVyU2VydmljZVxuICAgICAgLnNvcnQoZmllbGRzLCBDYXNlRWRpdFN1Ym1pdENvbXBvbmVudC5TSE9XX1NVTU1BUllfQ09OVEVOVF9DT01QQVJFX0ZVTkNUSU9OKVxuICAgICAgLmZpbHRlcigoY2YpID0+IGNmLnNob3dfc3VtbWFyeV9jb250ZW50X29wdGlvbik7XG4gIH1cblxuICBwcml2YXRlIGdldENhc2VGaWVsZHMoKTogQ2FzZUZpZWxkW10ge1xuICAgIGlmICh0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzKSB7XG4gICAgICByZXR1cm4gRmllbGRzVXRpbHMuZ2V0Q2FzZUZpZWxkcyh0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHM7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2FzZUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2FzZUVkaXQuZ2V0Q2FzZUlkKHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMpO1xuICB9XG5cbiAgcHVibGljIGdldENhc2VUaXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAodGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscyAmJiB0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzLnN0YXRlICYmXG4gICAgICB0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzLnN0YXRlLnRpdGxlX2Rpc3BsYXkgPyB0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzLnN0YXRlLnRpdGxlX2Rpc3BsYXkgOiAnJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2FuY2VsVGV4dCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmV2ZW50VHJpZ2dlci5jYW5fc2F2ZV9kcmFmdCkge1xuICAgICAgcmV0dXJuICdSZXR1cm4gdG8gY2FzZSBsaXN0JztcbiAgICB9XG4gICAgcmV0dXJuICdDYW5jZWwnO1xuICB9XG59XG5cbiIsIjxkaXY+XG4gIDwhLS0gRXZlbnQgdHJpZ2dlciBuYW1lIC0tPlxuICA8aDEgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLWxcIj57e2V2ZW50VHJpZ2dlci5uYW1lIHwgcnB4VHJhbnNsYXRlfX08L2gxPlxuXG4gIDwhLS1DYXNlIElEIG9yIFRpdGxlIC0tPlxuICA8ZGl2ICpuZ0lmPVwiZ2V0Q2FzZVRpdGxlKCk7IHRoZW4gdGl0bGVCbG9jazsgZWxzZSBpZEJsb2NrXCI+PC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjdGl0bGVCbG9jaz5cbiAgICA8Y2NkLW1hcmtkb3duIFtjb250ZW50XT1cImdldENhc2VUaXRsZSgpIHwgY2NkQ2FzZVRpdGxlOiBjb250ZXh0RmllbGRzIDogZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiPjwvY2NkLW1hcmtkb3duPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI2lkQmxvY2s+XG4gICAgPGgyICpuZ0lmPVwiZ2V0Q2FzZUlkKClcIiBjbGFzcz1cImhlYWRpbmctaDJcIj4je3sgZ2V0Q2FzZUlkKCkgfCBjY2RDYXNlUmVmZXJlbmNlIH19PC9oMj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8Y2NkLWNhc2UtZWRpdC1nZW5lcmljLWVycm9ycyBbZXJyb3JdPVwiY2FzZUVkaXQuZXJyb3JcIj48L2NjZC1jYXNlLWVkaXQtZ2VuZXJpYy1lcnJvcnM+XG5cbiAgPGNjZC1jYWxsYmFjay1lcnJvcnMgW2NhbGxiYWNrRXJyb3JzU3ViamVjdF09XCJjYXNlRWRpdC5jYWxsYmFja0Vycm9yc1N1YmplY3RcIlxuICAgICAgICAgICAgICAgICAgICAgIChjYWxsYmFja0Vycm9yc0NvbnRleHQpPVwiY2FsbGJhY2tFcnJvcnNOb3RpZnkoJGV2ZW50KVwiPjwvY2NkLWNhbGxiYWNrLWVycm9ycz5cblxuICA8Zm9ybSBjbGFzcz1cImNoZWNrLXlvdXItYW5zd2Vyc1wiIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm1cIiAoc3VibWl0KT1cInN1Ym1pdCgpXCI+XG4gICAgPGRpdiAqbmdJZj1cIiFjYXNlRWRpdC5pc0V2ZW50Q29tcGxldGlvbkNoZWNrc1JlcXVpcmVkXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hlY2tZb3VyQW5zd2VyRmllbGRzVG9EaXNwbGF5RXhpc3RzKClcIj5cbiAgICAgICAgPGgyIGNsYXNzPVwiaGVhZGluZy1oMlwiPnt7cGFnZVRpdGxlIHwgcnB4VHJhbnNsYXRlIH19PC9oMj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LTE2XCIgKm5nSWY9XCIhY2FzZUVkaXQuaXNDYXNlRmxhZ1N1Ym1pc3Npb25cIj57eydDaGVjayB0aGUgaW5mb3JtYXRpb24gYmVsb3cgY2FyZWZ1bGx5LicgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj5cblxuICAgICAgICA8dGFibGUgY2xhc3M9XCJmb3JtLXRhYmxlXCIgYXJpYS1kZXNjcmliZWRieT1cImNoZWNrIHlvdXIgYW5zd2VycyB0YWJsZVwiPlxuICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwYWdlIG9mIHdpemFyZC5wYWdlc1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzU2hvd24ocGFnZSlcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2YgcGFnZVxuICAgICAgICAgICAgICB8IGNjZFBhZ2VGaWVsZHM6IGVkaXRGb3JtXG4gICAgICAgICAgICAgIHwgY2NkUmVhZEZpZWxkc0ZpbHRlcjogZmFsc2UgOnVuZGVmaW5lZCA6dHJ1ZSA6YWxsRmllbGRzVmFsdWVzXG4gICAgICAgICAgICAgIHwgY2NkQ1lBUGFnZUxhYmVsRmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhblNob3dGaWVsZEluQ1lBKGZpZWxkKVwiPlxuICAgICAgICAgICAgICAgICAgPHRyIGNjZExhYmVsU3Vic3RpdHV0b3IgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtoaWRkZW5dPVwiZmllbGQuaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cImVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIiBbY29udGV4dEZpZWxkc109XCJjb250ZXh0RmllbGRzXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cIiFpc0xhYmVsKGZpZWxkKSAmJiAhY2FzZUVkaXQuaXNDYXNlRmxhZ1N1Ym1pc3Npb25cIiBjbGFzcz1cInZhbGlnbi10b3AgY2FzZS1maWVsZC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC0xNlwiPnt7ZmllbGQubGFiZWwgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZm9ybS1jZWxsIGNhc2UtZmllbGQtY29udGVudCB0ZXh0LTE2XCIgW2F0dHIuY29sc3Bhbl09XCJpc0xhYmVsKGZpZWxkKSA/ICcyJyA6ICcxJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxjY2QtZmllbGQtcmVhZFxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddXCIgW3RvcExldmVsRm9ybUdyb3VwXT1cImVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Nhc2VGaWVsZF09XCJzdW1tYXJ5Q2FzZUZpZWxkKGZpZWxkKVwiIFtjb250ZXh0XT1cInBhbGV0dGVDb250ZXh0XCIgW2Nhc2VGaWVsZHNdPVwiY29udGV4dEZpZWxkc1wiPjwvY2NkLWZpZWxkLXJlYWQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY2FzZUVkaXQuaXNDYXNlRmxhZ1N1Ym1pc3Npb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ2YWxpZ24tdG9wIGNoZWNrLXlvdXItYW5zd2Vyc19fY2hhbmdlIGNhc2UtZmllbGQtY2hhbmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cImlzQ2hhbmdlQWxsb3dlZChmaWVsZClcIiAoY2xpY2spPVwibmF2aWdhdGVUb1BhZ2UocGFnZS5pZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC0xNlwiIGF0dHIuYXJpYS1sYWJlbD1cInt7J0NoYW5nZScgfCBycHhUcmFuc2xhdGV9fSB7eyBmaWVsZC5sYWJlbCB8IHJweFRyYW5zbGF0ZSB9fVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J0NoYW5nZScgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZWFkT25seVN1bW1hcnlGaWVsZHNUb0Rpc3BsYXlFeGlzdHMoKVwiPlxuXG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInN1bW1hcnktZmllbGRzXCIgYXJpYS1kZXNjcmliZWRieT1cInN1bW1hcnkgZmllbGRzIHRhYmxlXCI+XG4gICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2Ygc2hvd1N1bW1hcnlGaWVsZHNcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCIhKGZpZWxkIHwgY2NkSXNDb21wb3VuZClcIj5cbiAgICAgICAgICAgICAgICAgIDx0ciAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiIGNjZExhYmVsU3Vic3RpdHV0b3IgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFtjb250ZXh0RmllbGRzXT1cImNvbnRleHRGaWVsZHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRoIGlkPVwic3VtbWFyeS1maWVsZC1sYWJlbFwiPnt7ZmllbGQubGFiZWx9fTwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImZvcm0tY2VsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxjY2QtZmllbGQtcmVhZCBbZm9ybUdyb3VwXT1cImVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIiBbY2FzZUZpZWxkXT1cInN1bW1hcnlDYXNlRmllbGQoZmllbGQpXCI+PC9jY2QtZmllbGQtcmVhZD5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICA8dHIgKm5nU3dpdGNoQ2FzZT1cImZhbHNlXCIgY2xhc3M9XCJjb21wb3VuZC1maWVsZFwiIGNjZExhYmVsU3Vic3RpdHV0b3IgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFtjb250ZXh0RmllbGRzXT1cImNvbnRleHRGaWVsZHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGNjZC1maWVsZC1yZWFkIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFtjYXNlRmllbGRdPVwic3VtbWFyeUNhc2VGaWVsZChmaWVsZClcIiBbY2FzZUZpZWxkc109XCJjb250ZXh0RmllbGRzXCI+PC9jY2QtZmllbGQtcmVhZD5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RXZlbnROb3RlcygpXCI+XG4gICAgICAgIDxmaWVsZHNldCBpZD1cImZpZWxkc2V0LWV2ZW50XCIgZm9ybUdyb3VwTmFtZT1cImV2ZW50XCI+XG4gICAgICAgICAgPGxlZ2VuZCBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCI+PC9sZWdlbmQ+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiBbbmdDbGFzc109XCJ7J2Zvcm0tZ3JvdXAtZXJyb3InOiAhIXN1bW1hcnkgJiYgIXN1bW1hcnkudmFsaWQgJiYgKHN1bW1hcnkuZGlydHkgfHwgc3VtbWFyeS50b3VjaGVkKX1cIj5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJmaWVsZC10cmlnZ2VyLXN1bW1hcnlcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5cbiAgICAgICAgICAgICAgRXZlbnQgc3VtbWFyeSAob3B0aW9uYWwpXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1oaW50XCI+QSBmZXcgd29yZHMgZGVzY3JpYmluZyB0aGUgcHVycG9zZSBvZiB0aGUgZXZlbnQuPC9zcGFuPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwic3VtbWFyeT8uZXJyb3JzICYmIChzdW1tYXJ5LmRpcnR5IHx8IHN1bW1hcnkudG91Y2hlZClcIj5cbiAgICAgICAgICAgICAge3tzdW1tYXJ5LmVycm9ycyB8IGNjZEZpcnN0RXJyb3I6IGV2ZW50U3VtbWFyeUxhYmVsIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGlkPVwiZmllbGQtdHJpZ2dlci1zdW1tYXJ5XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYm90dG9tLTMwIHdpZHRoLTUwXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydnb3Z1ay1pbnB1dC0tZXJyb3InOiBzdW1tYXJ5Py5lcnJvcnMgJiYgKHN1bW1hcnkuZGlydHkgfHwgc3VtbWFyeS50b3VjaGVkKX1cIiBmb3JtQ29udHJvbE5hbWU9XCJzdW1tYXJ5XCIgbWF4bGVuZ3RoPVwiMTAyNFwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW25nQ2xhc3NdPVwieydmb3JtLWdyb3VwLWVycm9yJzogISFkZXNjcmlwdGlvbiAmJiAhZGVzY3JpcHRpb24udmFsaWQgJiYgKGRlc2NyaXB0aW9uLmRpcnR5IHx8IGRlc2NyaXB0aW9uLnRvdWNoZWQpfVwiPlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cImZpZWxkLXRyaWdnZXItZGVzY3JpcHRpb25cIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5FdmVudCBkZXNjcmlwdGlvbiAob3B0aW9uYWwpPC9sYWJlbD5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwiZGVzY3JpcHRpb24/LmVycm9ycyAmJiAoZGVzY3JpcHRpb24uZGlydHkgfHwgZGVzY3JpcHRpb24udG91Y2hlZClcIj5cbiAgICAgICAgICAgICAge3tkZXNjcmlwdGlvbi5lcnJvcnMgfCBjY2RGaXJzdEVycm9yOiBldmVudERlc2NyaXB0aW9uTGFiZWwgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHRleHRhcmVhIGlkPVwiZmllbGQtdHJpZ2dlci1kZXNjcmlwdGlvblwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGJvdHRvbS0zMCB3aWR0aC01MFwiIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydnb3Z1ay1pbnB1dC0tZXJyb3InOiBkZXNjcmlwdGlvbj8uZXJyb3JzICYmIChkZXNjcmlwdGlvbi5kaXJ0eSB8fCBkZXNjcmlwdGlvbi50b3VjaGVkKX1cIiBtYXhsZW5ndGg9XCI2NTUzNlwiPjwvdGV4dGFyZWE+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZmllbGRzZXQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8Y2NkLWNhc2UtZXZlbnQtY29tcGxldGlvbiAqbmdJZj1cImNhc2VFZGl0LmlzRXZlbnRDb21wbGV0aW9uQ2hlY2tzUmVxdWlyZWRcIlxuICAgICAgW2V2ZW50Q29tcGxldGlvblBhcmFtc109XCJjYXNlRWRpdC5ldmVudENvbXBsZXRpb25QYXJhbXNcIlxuICAgICAgKGV2ZW50Q2FuQmVDb21wbGV0ZWQpPVwib25FdmVudENhbkJlQ29tcGxldGVkKCRldmVudClcIj5cbiAgICA8L2NjZC1jYXNlLWV2ZW50LWNvbXBsZXRpb24+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZm9ybS1ncm91cC1yZWxhdGVkXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cIiFoYXNQcmV2aW91cygpIHx8IGNhc2VFZGl0LmlzU3VibWl0dGluZ1wiIChjbGljayk9XCJwcmV2aW91cygpXCI+XG4gICAgICAgIHt7J1ByZXZpb3VzJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCIgY2xhc3M9XCJidXR0b25cIj5cbiAgICAgICAge3t0cmlnZ2VyVGV4dCB8IHJweFRyYW5zbGF0ZX19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8cCBjbGFzcz1cImNhbmNlbFwiPlxuICAgICAgPGEgKGNsaWNrKT1cImNhbmNlbCgpXCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIFtjbGFzcy5kaXNhYmxlZF09XCJjYXNlRWRpdC5pc1N1Ym1pdHRpbmdcIj57e2dldENhbmNlbFRleHQoKSB8IHJweFRyYW5zbGF0ZX19PC9hPlxuICAgIDwvcD5cbiAgPC9mb3JtPlxuPC9kaXY+XG5cbiJdfQ==
@@ -93,4 +93,4 @@ export class AbstractFieldWriteJourneyComponent extends AbstractFieldWriteCompon
93
93
  type: ViewChild,
94
94
  args: ['journeyChild']
95
95
  }] }); })();
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZmllbGQtd3JpdGUtam91cm5leS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9iYXNlLWZpZWxkL2Fic3RyYWN0LWZpZWxkLXdyaXRlLWpvdXJuZXkuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUUvRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQUduRSxNQUFNLE9BQWdCLGtDQUFtQyxTQUFRLDJCQUEyQjtJQWFsRDtJQVpqQyxzQkFBc0IsR0FBVyxDQUFDLENBQUM7SUFDbkMsb0JBQW9CLEdBQVcsQ0FBQyxDQUFDO0lBQ2pDLGlCQUFpQixHQUFXLENBQUMsQ0FBQztJQUM5Qix5QkFBeUIsR0FBVyxDQUFDLENBQUM7SUFHdEMsU0FBUyxHQUFXLFNBQVMsQ0FBQztJQUVuQyxVQUFVO0lBRUgsWUFBWSxDQUFXO0lBRTlCLFlBQXNDLDhCQUE4RDtRQUNsRyxLQUFLLEVBQUUsQ0FBQztRQUQ0QixtQ0FBOEIsR0FBOUIsOEJBQThCLENBQWdDO1FBRWxHLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO0lBQ3ZELENBQUM7SUFFTSxJQUFJO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUN4QixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0RixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQy9CLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRVMsWUFBWTtRQUNwQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLDZCQUE2QixFQUFDLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLENBQUM7WUFDRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFFUyxRQUFRO1FBQ2hCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsNkJBQTZCLEVBQUMsQ0FBQztnQkFDckQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDM0IsQ0FBQztZQUNELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1FBQ3JELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEUsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEtBQUssQ0FBQztZQUVsRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7WUFDM0MsSUFBSSxDQUFDLHNCQUFzQixHQUFHLHNCQUFzQixDQUFDO1lBQ3JELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxvQkFBb0IsQ0FBQztRQUNuRCxDQUFDO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLDhCQUE4QixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRU0sT0FBTyxLQUFjLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQSxDQUFDLENBQUM7SUFBQSxDQUFDO0lBRWpGLFdBQVcsS0FBYyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUEsQ0FBQyxDQUFDO0lBQUEsQ0FBQztJQUV2RixVQUFVLEtBQWMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEtBQUssSUFBSSxDQUFDLG9CQUFvQixDQUFBLENBQUMsQ0FBQztJQUFBLENBQUM7SUFFdEYsT0FBTyxLQUFjLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixLQUFLLElBQUksQ0FBQyxzQkFBc0IsQ0FBQSxDQUFDLENBQUM7SUFBQSxDQUFDO0lBRXJGLEtBQUssS0FBYSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUEsQ0FBQyxDQUFDO0lBQUEsQ0FBQztJQUUxQyxZQUFZLEtBQTBELENBQUM7SUFBQSxDQUFDOzRGQWpGN0Qsa0NBQWtDOzZEQUFsQyxrQ0FBa0M7Ozs7Ozs7aUZBQWxDLGtDQUFrQztjQUR2RCxTQUFTOytEQVFELFNBQVM7a0JBRGIsS0FBSztZQUtDLFlBQVk7a0JBRGxCLFNBQVM7bUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIE9uQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdEZpZWxkV3JpdGVDb21wb25lbnQgfSBmcm9tICcuL2Fic3RyYWN0LWZpZWxkLXdyaXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBKb3VybmV5IH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IE11bHRpcGFnZUNvbXBvbmVudFN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RGaWVsZFdyaXRlSm91cm5leUNvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RmllbGRXcml0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgSm91cm5leSB7XG4gIHB1YmxpYyBqb3VybmV5U3RhcnRQYWdlTnVtYmVyOiBudW1iZXIgPSAwO1xuICBwdWJsaWMgam91cm5leUVuZFBhZ2VOdW1iZXI6IG51bWJlciA9IDA7XG4gIHB1YmxpYyBqb3VybmV5UGFnZU51bWJlcjogbnVtYmVyID0gMDtcbiAgcHVibGljIGpvdXJuZXlQcmV2aW91c1BhZ2VOdW1iZXI6IG51bWJlciA9IDA7XG5cbiAgICBASW5wdXQoKVxuICBwdWJsaWMgam91cm5leUlkOiBzdHJpbmcgPSAnam91cm5leSc7XG5cbiAgICAvLyB0b2RvLi4uXG4gICAgQFZpZXdDaGlsZCgnam91cm5leUNoaWxkJylcbiAgICBwdWJsaWMgY2hpbGRKb3VybmV5ITogSm91cm5leTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgbXVsdGlwYWdlQ29tcG9uZW50U3RhdGVTZXJ2aWNlOiBNdWx0aXBhZ2VDb21wb25lbnRTdGF0ZVNlcnZpY2UpIHtcbiAgICAgIHN1cGVyKCk7XG4gICAgICB0aGlzLm11bHRpcGFnZUNvbXBvbmVudFN0YXRlU2VydmljZS5hZGRUb2pvdXJuZXlDb2xsZWN0aW9uKHRoaXMpO1xuICAgICAgdGhpcy5qb3VybmV5UGFnZU51bWJlciA9IHRoaXMuam91cm5leVN0YXJ0UGFnZU51bWJlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmV4dCgpOiB2b2lkIHtcbiAgICAgIGlmICghdGhpcy5oYXNOZXh0KCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5jaGlsZEpvdXJuZXkubmV4dCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwcmV2aW91cygpOiB2b2lkIHtcbiAgICAgIGlmICghdGhpcy5oYXNQcmV2aW91cygpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmNoaWxkSm91cm5leVsnY2FjaGVkRmxhZ1R5cGUnXSAmJiB0aGlzLmNoaWxkSm91cm5leVsnc3ViSm91cm5leUluZGV4J10gIT09IDApIHtcbiAgICAgICAgdGhpcy5jaGlsZEpvdXJuZXkucHJldmlvdXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucHJldmlvdXNQYWdlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHByZXZpb3VzUGFnZSgpOiB2b2lkIHtcbiAgICAgIGlmICh0aGlzLmhhc1ByZXZpb3VzKCkpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNoaWxkSm91cm5leT8uc2VhcmNoTGFuZ3VhZ2VJbnRlcnByZXRlckhpbnQpe1xuICAgICAgICAgIHRoaXMuam91cm5leVBhZ2VOdW1iZXItLTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uUGFnZUNoYW5nZSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBuZXh0UGFnZSgpOiB2b2lkIHtcbiAgICAgIGlmICh0aGlzLmhhc05leHQoKSkge1xuICAgICAgICBpZiAoIXRoaXMuY2hpbGRKb3VybmV5Py5zZWFyY2hMYW5ndWFnZUludGVycHJldGVySGludCl7XG4gICAgICAgICAgdGhpcy5qb3VybmV5UGFnZU51bWJlcisrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25QYWdlQ2hhbmdlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgdGhpcy5qb3VybmV5UGFnZU51bWJlciA9IHRoaXMuam91cm5leVN0YXJ0UGFnZU51bWJlcjtcbiAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5tdWx0aXBhZ2VDb21wb25lbnRTdGF0ZVNlcnZpY2UuZ2V0Sm91cm5leVN0YXRlKHRoaXMpO1xuICAgICAgaWYgKHN0YXRlKSB7XG4gICAgICAgIGNvbnN0IHsgam91cm5leVBhZ2VOdW1iZXIsIGpvdXJuZXlTdGFydFBhZ2VOdW1iZXIsIGpvdXJuZXlFbmRQYWdlTnVtYmVyIH0gPSBzdGF0ZTtcblxuICAgICAgICB0aGlzLmpvdXJuZXlQYWdlTnVtYmVyID0gam91cm5leVBhZ2VOdW1iZXI7XG4gICAgICAgIHRoaXMuam91cm5leVN0YXJ0UGFnZU51bWJlciA9IGpvdXJuZXlTdGFydFBhZ2VOdW1iZXI7XG4gICAgICAgIHRoaXMuam91cm5leUVuZFBhZ2VOdW1iZXIgPSBqb3VybmV5RW5kUGFnZU51bWJlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICB0aGlzLm11bHRpcGFnZUNvbXBvbmVudFN0YXRlU2VydmljZS5zZXRKb3VybmV5U3RhdGUodGhpcyk7XG4gICAgfVxuXG4gICAgcHVibGljIGhhc05leHQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmpvdXJuZXlQYWdlTnVtYmVyIDwgdGhpcy5qb3VybmV5RW5kUGFnZU51bWJlciB9O1xuXG4gICAgcHVibGljIGhhc1ByZXZpb3VzKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5qb3VybmV5UGFnZU51bWJlciA+IHRoaXMuam91cm5leVN0YXJ0UGFnZU51bWJlciB9O1xuXG4gICAgcHVibGljIGlzRmluaXNoZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmpvdXJuZXlQYWdlTnVtYmVyID09PSB0aGlzLmpvdXJuZXlFbmRQYWdlTnVtYmVyIH07XG5cbiAgICBwdWJsaWMgaXNTdGFydCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuam91cm5leVBhZ2VOdW1iZXIgPT09IHRoaXMuam91cm5leVN0YXJ0UGFnZU51bWJlciB9O1xuXG4gICAgcHVibGljIGdldElkKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLmpvdXJuZXlJZCB9O1xuXG4gICAgcHVibGljIG9uUGFnZUNoYW5nZSgpOiB2b2lkIHsgLyogVG8gYmUgaW1wbGVtZW50ZWQgYnkgc29tZSBjaGlsZCBjbGFzc2VzLiAqLyB9O1xufVxuIl19
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZmllbGQtd3JpdGUtam91cm5leS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9iYXNlLWZpZWxkL2Fic3RyYWN0LWZpZWxkLXdyaXRlLWpvdXJuZXkuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUUvRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQUduRSxNQUFNLE9BQWdCLGtDQUFtQyxTQUFRLDJCQUEyQjtJQWFsRDtJQVpqQyxzQkFBc0IsR0FBVyxDQUFDLENBQUM7SUFDbkMsb0JBQW9CLEdBQVcsQ0FBQyxDQUFDO0lBQ2pDLGlCQUFpQixHQUFXLENBQUMsQ0FBQztJQUM5Qix5QkFBeUIsR0FBVyxDQUFDLENBQUM7SUFHdEMsU0FBUyxHQUFXLFNBQVMsQ0FBQztJQUVuQyxVQUFVO0lBRUgsWUFBWSxDQUFXO0lBRTlCLFlBQXNDLDhCQUE4RDtRQUNsRyxLQUFLLEVBQUUsQ0FBQztRQUQ0QixtQ0FBOEIsR0FBOUIsOEJBQThCLENBQWdDO1FBRWxHLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO0lBQ3ZELENBQUM7SUFFTSxJQUFJO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUN4QixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0RixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQy9CLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRVMsWUFBWTtRQUNwQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLDZCQUE2QixFQUFFLENBQUM7Z0JBQ3RELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLENBQUM7WUFDRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFFUyxRQUFRO1FBQ2hCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsNkJBQTZCLEVBQUUsQ0FBQztnQkFDdEQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDM0IsQ0FBQztZQUNELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1FBQ3JELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEUsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEtBQUssQ0FBQztZQUVsRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7WUFDM0MsSUFBSSxDQUFDLHNCQUFzQixHQUFHLHNCQUFzQixDQUFDO1lBQ3JELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxvQkFBb0IsQ0FBQztRQUNuRCxDQUFDO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLDhCQUE4QixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRU0sT0FBTyxLQUFjLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQSxDQUFDLENBQUM7SUFBQSxDQUFDO0lBRWpGLFdBQVcsS0FBYyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUEsQ0FBQyxDQUFDO0lBQUEsQ0FBQztJQUV2RixVQUFVLEtBQWMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEtBQUssSUFBSSxDQUFDLG9CQUFvQixDQUFBLENBQUMsQ0FBQztJQUFBLENBQUM7SUFFdEYsT0FBTyxLQUFjLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixLQUFLLElBQUksQ0FBQyxzQkFBc0IsQ0FBQSxDQUFDLENBQUM7SUFBQSxDQUFDO0lBRXJGLEtBQUssS0FBYSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUEsQ0FBQyxDQUFDO0lBQUEsQ0FBQztJQUUxQyxZQUFZLEtBQTBELENBQUM7SUFBQSxDQUFDOzRGQWpGN0Qsa0NBQWtDOzZEQUFsQyxrQ0FBa0M7Ozs7Ozs7aUZBQWxDLGtDQUFrQztjQUR2RCxTQUFTOytEQVFELFNBQVM7a0JBRGIsS0FBSztZQUtDLFlBQVk7a0JBRGxCLFNBQVM7bUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIE9uQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdEZpZWxkV3JpdGVDb21wb25lbnQgfSBmcm9tICcuL2Fic3RyYWN0LWZpZWxkLXdyaXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBKb3VybmV5IH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IE11bHRpcGFnZUNvbXBvbmVudFN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RGaWVsZFdyaXRlSm91cm5leUNvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RmllbGRXcml0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgSm91cm5leSB7XG4gIHB1YmxpYyBqb3VybmV5U3RhcnRQYWdlTnVtYmVyOiBudW1iZXIgPSAwO1xuICBwdWJsaWMgam91cm5leUVuZFBhZ2VOdW1iZXI6IG51bWJlciA9IDA7XG4gIHB1YmxpYyBqb3VybmV5UGFnZU51bWJlcjogbnVtYmVyID0gMDtcbiAgcHVibGljIGpvdXJuZXlQcmV2aW91c1BhZ2VOdW1iZXI6IG51bWJlciA9IDA7XG5cbiAgICBASW5wdXQoKVxuICBwdWJsaWMgam91cm5leUlkOiBzdHJpbmcgPSAnam91cm5leSc7XG5cbiAgICAvLyB0b2RvLi4uXG4gICAgQFZpZXdDaGlsZCgnam91cm5leUNoaWxkJylcbiAgICBwdWJsaWMgY2hpbGRKb3VybmV5ITogSm91cm5leTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgbXVsdGlwYWdlQ29tcG9uZW50U3RhdGVTZXJ2aWNlOiBNdWx0aXBhZ2VDb21wb25lbnRTdGF0ZVNlcnZpY2UpIHtcbiAgICAgIHN1cGVyKCk7XG4gICAgICB0aGlzLm11bHRpcGFnZUNvbXBvbmVudFN0YXRlU2VydmljZS5hZGRUb2pvdXJuZXlDb2xsZWN0aW9uKHRoaXMpO1xuICAgICAgdGhpcy5qb3VybmV5UGFnZU51bWJlciA9IHRoaXMuam91cm5leVN0YXJ0UGFnZU51bWJlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmV4dCgpOiB2b2lkIHtcbiAgICAgIGlmICghdGhpcy5oYXNOZXh0KCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5jaGlsZEpvdXJuZXkubmV4dCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwcmV2aW91cygpOiB2b2lkIHtcbiAgICAgIGlmICghdGhpcy5oYXNQcmV2aW91cygpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmNoaWxkSm91cm5leVsnY2FjaGVkRmxhZ1R5cGUnXSAmJiB0aGlzLmNoaWxkSm91cm5leVsnc3ViSm91cm5leUluZGV4J10gIT09IDApIHtcbiAgICAgICAgdGhpcy5jaGlsZEpvdXJuZXkucHJldmlvdXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucHJldmlvdXNQYWdlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHByZXZpb3VzUGFnZSgpOiB2b2lkIHtcbiAgICAgIGlmICh0aGlzLmhhc1ByZXZpb3VzKCkpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNoaWxkSm91cm5leT8uc2VhcmNoTGFuZ3VhZ2VJbnRlcnByZXRlckhpbnQpIHtcbiAgICAgICAgICB0aGlzLmpvdXJuZXlQYWdlTnVtYmVyLS07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vblBhZ2VDaGFuZ2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbmV4dFBhZ2UoKTogdm9pZCB7XG4gICAgICBpZiAodGhpcy5oYXNOZXh0KCkpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNoaWxkSm91cm5leT8uc2VhcmNoTGFuZ3VhZ2VJbnRlcnByZXRlckhpbnQpIHtcbiAgICAgICAgICB0aGlzLmpvdXJuZXlQYWdlTnVtYmVyKys7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vblBhZ2VDaGFuZ2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICB0aGlzLmpvdXJuZXlQYWdlTnVtYmVyID0gdGhpcy5qb3VybmV5U3RhcnRQYWdlTnVtYmVyO1xuICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLm11bHRpcGFnZUNvbXBvbmVudFN0YXRlU2VydmljZS5nZXRKb3VybmV5U3RhdGUodGhpcyk7XG4gICAgICBpZiAoc3RhdGUpIHtcbiAgICAgICAgY29uc3QgeyBqb3VybmV5UGFnZU51bWJlciwgam91cm5leVN0YXJ0UGFnZU51bWJlciwgam91cm5leUVuZFBhZ2VOdW1iZXIgfSA9IHN0YXRlO1xuXG4gICAgICAgIHRoaXMuam91cm5leVBhZ2VOdW1iZXIgPSBqb3VybmV5UGFnZU51bWJlcjtcbiAgICAgICAgdGhpcy5qb3VybmV5U3RhcnRQYWdlTnVtYmVyID0gam91cm5leVN0YXJ0UGFnZU51bWJlcjtcbiAgICAgICAgdGhpcy5qb3VybmV5RW5kUGFnZU51bWJlciA9IGpvdXJuZXlFbmRQYWdlTnVtYmVyO1xuICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgIHRoaXMubXVsdGlwYWdlQ29tcG9uZW50U3RhdGVTZXJ2aWNlLnNldEpvdXJuZXlTdGF0ZSh0aGlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzTmV4dCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuam91cm5leVBhZ2VOdW1iZXIgPCB0aGlzLmpvdXJuZXlFbmRQYWdlTnVtYmVyIH07XG5cbiAgICBwdWJsaWMgaGFzUHJldmlvdXMoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmpvdXJuZXlQYWdlTnVtYmVyID4gdGhpcy5qb3VybmV5U3RhcnRQYWdlTnVtYmVyIH07XG5cbiAgICBwdWJsaWMgaXNGaW5pc2hlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuam91cm5leVBhZ2VOdW1iZXIgPT09IHRoaXMuam91cm5leUVuZFBhZ2VOdW1iZXIgfTtcblxuICAgIHB1YmxpYyBpc1N0YXJ0KCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5qb3VybmV5UGFnZU51bWJlciA9PT0gdGhpcy5qb3VybmV5U3RhcnRQYWdlTnVtYmVyIH07XG5cbiAgICBwdWJsaWMgZ2V0SWQoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuam91cm5leUlkIH07XG5cbiAgICBwdWJsaWMgb25QYWdlQ2hhbmdlKCk6IHZvaWQgeyAvKiBUbyBiZSBpbXBsZW1lbnRlZCBieSBzb21lIGNoaWxkIGNsYXNzZXMuICovIH07XG59XG4iXX0=
@@ -1,9 +1,9 @@
1
1
  import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
2
2
  import { FormControl, FormGroup } from '@angular/forms';
3
+ import { cloneDeep } from 'lodash';
3
4
  import { FieldsUtils } from '../../../../../services/fields';
4
5
  import { CaseFlagDisplayContextParameter, CaseFlagFieldState, CaseFlagStatus, CaseFlagWizardStepTitle, SelectFlagErrorMessage } from '../../enums';
5
6
  import { AbstractJourneyComponent } from '../../../base-field';
6
- import { cloneDeep } from 'lodash';
7
7
  import * as i0 from "@angular/core";
8
8
  const _c0 = a0 => ({ "form-group-error": a0 });
9
9
  function ManageCaseFlagsComponent_div_7_Template(rf, ctx) { if (rf & 1) {
@@ -131,7 +131,12 @@ export class ManageCaseFlagsComponent extends AbstractJourneyComponent {
131
131
  const originalFlagDetail = formattedValue.details?.find((detail) => detail.id === flagDetail.id);
132
132
  let statusToUse;
133
133
  if (flagsInstance.pathToFlagsFormGroup === originalPathToFlag) {
134
- statusToUse = originalStatusFromFG ? (originalStatusFromFG === originalFlagDetail.value?.status ? originalFlagDetail.value?.status : originalStatusFromFG) : originalFlagDetail.value?.status;
134
+ if (originalStatusFromFG) {
135
+ statusToUse = originalStatusFromFG === originalFlagDetail.value?.status ? originalFlagDetail.value?.status : originalStatusFromFG;
136
+ }
137
+ else {
138
+ statusToUse = originalFlagDetail.value?.status;
139
+ }
135
140
  }
136
141
  else {
137
142
  statusToUse = originalFlagDetail.value?.status;
@@ -264,4 +269,4 @@ export class ManageCaseFlagsComponent extends AbstractJourneyComponent {
264
269
  type: Output
265
270
  }] }); })();
266
271
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ManageCaseFlagsComponent, { className: "ManageCaseFlagsComponent", filePath: "lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.ts", lineNumber: 16 }); })();
267
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLWNhc2UtZmxhZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL2NvbXBvbmVudHMvbWFuYWdlLWNhc2UtZmxhZ3MvbWFuYWdlLWNhc2UtZmxhZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL2NvbXBvbmVudHMvbWFuYWdlLWNhc2UtZmxhZ3MvbWFuYWdlLWNhc2UtZmxhZ3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUU3RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLHVCQUF1QixFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25KLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7Ozs7SUNHM0IsQUFGRiw4QkFDNkMsY0FDUDtJQUFBLFlBQTJCOztJQUFBLGlCQUFPO0lBQUMsWUFDekU7O0lBQUEsaUJBQU07OztJQURnQyxlQUEyQjtJQUEzQixvREFBMkI7SUFBUSxlQUN6RTtJ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ZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRXJyb3JNZXNzYWdlLCBKb3VybmV5IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IEZpZWxkc1V0aWxzIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvZmllbGRzJztcbmltcG9ydCB7IENhc2VGbGFnU3RhdGUsIEZsYWdEZXRhaWwsIEZsYWdEZXRhaWxEaXNwbGF5V2l0aEZvcm1Hcm91cFBhdGgsIEZsYWdzLCBGbGFnc1dpdGhGb3JtR3JvdXBQYXRoIH0gZnJvbSAnLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IENhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIsIENhc2VGbGFnRmllbGRTdGF0ZSwgQ2FzZUZsYWdTdGF0dXMsIENhc2VGbGFnV2l6YXJkU3RlcFRpdGxlLCBTZWxlY3RGbGFnRXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xuaW1wb3J0IHsgQWJzdHJhY3RKb3VybmV5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vYmFzZS1maWVsZCc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtbWFuYWdlLWNhc2UtZmxhZ3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWFuYWdlLWNhc2UtZmxhZ3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tYW5hZ2UtY2FzZS1mbGFncy5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIE1hbmFnZUNhc2VGbGFnc0NvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0Sm91cm5leUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgSm91cm5leSB7XG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgcHVibGljIGZsYWdzRGF0YTogRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aFtdO1xuICBASW5wdXQoKSBwdWJsaWMgY2FzZVRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNwbGF5Q29udGV4dFBhcmFtZXRlcjogc3RyaW5nO1xuICBAT3V0cHV0KCkgcHVibGljIGNhc2VGbGFnU3RhdGVFbWl0dGVyOiBFdmVudEVtaXR0ZXI8Q2FzZUZsYWdTdGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPENhc2VGbGFnU3RhdGU+KCk7XG5cbiAgcHVibGljIG1hbmFnZUNhc2VGbGFnVGl0bGU6IENhc2VGbGFnV2l6YXJkU3RlcFRpdGxlO1xuICBwdWJsaWMgZXJyb3JNZXNzYWdlczogRXJyb3JNZXNzYWdlW10gPSBbXTtcbiAgcHVibGljIG1hbmFnZUNhc2VGbGFnU2VsZWN0ZWRFcnJvck1lc3NhZ2U6IFNlbGVjdEZsYWdFcnJvck1lc3NhZ2UgPSBudWxsO1xuICBwdWJsaWMgZmxhZ3NEaXNwbGF5RGF0YTogRmxhZ0RldGFpbERpc3BsYXlXaXRoRm9ybUdyb3VwUGF0aFtdO1xuICBwdWJsaWMgZmxhZ3M6IEZsYWdzO1xuICBwdWJsaWMgbm9GbGFnc0Vycm9yID0gZmFsc2U7XG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RlZENvbnRyb2xOYW1lID0gJ3NlbGVjdGVkTWFuYWdlQ2FzZUxvY2F0aW9uJztcbiAgcHJpdmF0ZSByZWFkb25seSBleGNsdWRlZEZsYWdTdGF0dXNlczogQ2FzZUZsYWdTdGF0dXNbXSA9IFtDYXNlRmxhZ1N0YXR1cy5JTkFDVElWRSwgQ2FzZUZsYWdTdGF0dXMuTk9UX0FQUFJPVkVEXTtcbiAgcHVibGljIGNhY2hlZENvbnRyb2xzO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm1hbmFnZUNhc2VGbGFnVGl0bGUgPSB0aGlzLnNldE1hbmFnZUNhc2VGbGFnVGl0bGUodGhpcy5kaXNwbGF5Q29udGV4dFBhcmFtZXRlcik7XG4gICAgbGV0IG9yaWdpbmFsU3RhdHVzO1xuICAgIGxldCBvcmlnaW5hbFBhdGhUb0ZsYWc7XG4gICAgLy8gaWYgdGhlIHVzZXIgaGFzIHByb2dyZXNzZWQgdG8gQ1lBIGFuZCB0aGVuIG5hdmlnYXRlZCBhd2F5LCB0aGUgZmxhZyB0aGV5IHNlbGVjdGVkIHdpbGwgYmUgc2V0IGFzIGluYWN0aXZlLCB3ZSBuZWVkIHRvIHJlc2V0IHRoaXNcbiAgICBjb25zdCBsb2NhdGlvbkNvbnRyb2wgPSB0aGlzLmZvcm1Hcm91cC5nZXQodGhpcy5zZWxlY3RlZENvbnRyb2xOYW1lKTtcbiAgICBpZiAobG9jYXRpb25Db250cm9sKSB7XG4gICAgICBvcmlnaW5hbFN0YXR1cyA9IGxvY2F0aW9uQ29udHJvbD8udmFsdWU/Lm9yaWdpbmFsU3RhdHVzO1xuICAgICAgb3JpZ2luYWxQYXRoVG9GbGFnID0gbG9jYXRpb25Db250cm9sPy52YWx1ZT8ucGF0aFRvRmxhZ3NGb3JtR3JvdXA7XG4gICAgICB0aGlzLmNhY2hlZENvbnRyb2xzID0gY2xvbmVEZWVwKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzKTtcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKChjb250cm9sTmFtZSkgPT4ge1xuICAgICAgICBpZiAoY29udHJvbE5hbWUgIT09IHRoaXMuc2VsZWN0ZWRDb250cm9sTmFtZSkge1xuICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woY29udHJvbE5hbWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBNYXAgZmxhZ3MgaW5zdGFuY2VzIHRvIG9iamVjdHMgZm9yIGRpc3BsYXksIGZpbHRlcmluZyBvdXQgYW55IHdoZXJlIHRoZSBvcmlnaW5hbCBzdGF0dXMgaXMgZWl0aGVyIFwiSW5hY3RpdmVcIiBvclxuICAgIC8vIFwiTm90IGFwcHJvdmVkXCJcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLmZsYWdzRGF0YSkge1xuICAgICAgdGhpcy5mbGFnc0Rpc3BsYXlEYXRhID0gdGhpcy5mbGFnc0RhdGEucmVkdWNlKChkaXNwbGF5RGF0YSwgZmxhZ3NJbnN0YW5jZSkgPT4ge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoZmxhZ3NJbnN0YW5jZS5mbGFncy5kZXRhaWxzICYmIGZsYWdzSW5zdGFuY2UuZmxhZ3MuZGV0YWlscy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZGlzcGxheURhdGEgPSBbXG4gICAgICAgICAgICAuLi5kaXNwbGF5RGF0YSxcbiAgICAgICAgICAgIC4uLmZsYWdzSW5zdGFuY2UuZmxhZ3MuZGV0YWlscy5tYXAoKGRldGFpbCkgPT4gdGhpcy5tYXBGbGFnRGV0YWlsRm9yRGlzcGxheShkZXRhaWwsIGZsYWdzSW5zdGFuY2UsIG9yaWdpbmFsU3RhdHVzLCBvcmlnaW5hbFBhdGhUb0ZsYWcpKVxuICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRpc3BsYXlEYXRhO1xuICAgICAgfSwgW10pLmZpbHRlcigoZmxhZ0ZvckRpc3BsYXkpID0+ICF0aGlzLmV4Y2x1ZGVkRmxhZ1N0YXR1c2VzLmluY2x1ZGVzKGZsYWdGb3JEaXNwbGF5Lm9yaWdpbmFsU3RhdHVzIGFzIENhc2VGbGFnU3RhdHVzKSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIGEgRm9ybUNvbnRyb2wgZm9yIHRoZSBzZWxlY3RlZCBjYXNlIGZsYWcgaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGZsYWdzIGluc3RhbmNlIHJlbWFpbmluZyBhZnRlciBtYXBwaW5nXG4gICAgaWYgKHRoaXMuZmxhZ3NEaXNwbGF5RGF0YSAmJiB0aGlzLmZsYWdzRGlzcGxheURhdGEubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbCh0aGlzLnNlbGVjdGVkQ29udHJvbE5hbWUsIG5ldyBGb3JtQ29udHJvbChudWxsKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5vIGZsYWdzIGRpc3BsYXkgZGF0YSBtZWFucyB0aGVyZSBhcmUgbm8gZmxhZ3MgdG8gc2VsZWN0IGZyb20uIFRoZSB1c2VyIGNhbm5vdCBwcm9jZWVkIHdpdGggYSBmbGFnIHVwZGF0ZS5cbiAgICAgIC8vIChXaWxsIG5lZWQgdG8gYmUgZXh0ZW5kZWQgdG8gY2hlY2sgZm9yIGNhc2UtbGV2ZWwgZmxhZ3MgaW4gZnV0dXJlKVxuICAgICAgdGhpcy5vbk5vRmxhZ3NFcnJvcigpO1xuICAgIH1cbiAgfVxuXG4gIG9uRmxhZ1NlbGVjdGlvbkNoYW5nZShzZWxlY3RlZEZsYWc6IEZvcm1Db250cm9sKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMuc2VsZWN0ZWRDb250cm9sTmFtZSkuc2V0VmFsdWUoc2VsZWN0ZWRGbGFnKTtcbiAgfVxuXG4gIGlzU2VsZWN0ZWQoZmxhZ0Rpc3BsYXk6IEZsYWdEZXRhaWxEaXNwbGF5V2l0aEZvcm1Hcm91cFBhdGgpOiBib29sZWFuIHtcbiAgICBjb25zdCBzZWxlY3RlZEZsYWcgPSB0aGlzLmZvcm1Hcm91cC5nZXQodGhpcy5zZWxlY3RlZENvbnRyb2xOYW1lKT8udmFsdWU7XG4gICAgcmV0dXJuIHNlbGVjdGVkRmxhZyAmJiB0aGlzLmdldEZsYWdJRChzZWxlY3RlZEZsYWcpID09PSB0aGlzLmdldEZsYWdJRChmbGFnRGlzcGxheSk7XG4gIH1cblxuICBnZXRGbGFnSUQoZmxhZzogRmxhZ0RldGFpbERpc3BsYXlXaXRoRm9ybUdyb3VwUGF0aCl7XG4gICAgcmV0dXJuIGZsYWc/LmZsYWdEZXRhaWxEaXNwbGF5Py5mbGFnRGV0YWlsPy5pZCB8fCAnJztcbiAgfVxuXG4gIHB1YmxpYyBtYXBGbGFnRGV0YWlsRm9yRGlzcGxheShmbGFnRGV0YWlsOiBGbGFnRGV0YWlsLCBmbGFnc0luc3RhbmNlOiBGbGFnc1dpdGhGb3JtR3JvdXBQYXRoLCBvcmlnaW5hbFN0YXR1c0Zyb21GRzogc3RyaW5nLCBvcmlnaW5hbFBhdGhUb0ZsYWc6IHN0cmluZyk6IEZsYWdEZXRhaWxEaXNwbGF5V2l0aEZvcm1Hcm91cFBhdGgge1xuICAgIC8vIFJlc2V0IHRoZSBmbGFnIHN0YXR1cyB3aXRoIHRoZSBvcmlnaW5hbCBwZXJzaXN0ZWQgc3RhdHVzLiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIG5nT25Jbml0KCkgbmVlZHMgdG8gZmlsdGVyXG4gICAgLy8gb3V0IGFueSBcIkluYWN0aXZlXCIgb3IgXCJOb3QgYXBwcm92ZWRcIiBmbGFncyBiYXNlZCBvbiB0aGVpciBzdGF0dXMgKmJlZm9yZSogbW9kaWZpY2F0aW9uLiBJZiB0aGUgdXNlciBjaGFuZ2VzIGFcbiAgICAvLyBmbGFnJ3Mgc3RhdHVzIHRoZW4gZGVjaWRlcyB0byByZXR1cm4gdG8gdGhlIHN0YXJ0IG9mIHRoZSBmbGFnIHVwZGF0ZSBqb3VybmV5LCB0aGUgZmxhZydzIHN0YXR1cyB3b3VsZCBub1xuICAgIC8vIGxvbmdlciByZWZsZWN0IGl0cyBhY3R1YWwgKnBlcnNpc3RlZCogc3RhdHVzXG4gICAgLy8gQWxzbyByZXNldCBjb21tZW50cyBhbmQgZGVzY3JpcHRpb24gZmllbGRzIChib3RoIEVuZ2xpc2ggYW5kIFdlbHNoKSB3aXRoIHRoZSBvcmlnaW5hbCBwZXJzaXN0ZWQgZGF0YSwgdG8gYXZvaWRcbiAgICAvLyB0aGUgVUkgY2FjaGluZyBhbnkgY2hhbmdlcyB0aGF0IHRoZSB1c2VyIG1pZ2h0IG5vdCB3YW50IHBlcnNpc3RlZCwgaWYgdGhleSBzdGFydCBvdmVyIGFuZCBkb24ndCBpbnRlbmQgdG8gYWRkXG4gICAgLy8gdHJhbnNsYXRpb25zIHN1YnNlcXVlbnRseVxuICAgIGxldCBvcmlnaW5hbFN0YXR1czogc3RyaW5nO1xuICAgIGxldCBmb3JtYXR0ZWRWYWx1ZSA9IGZsYWdzSW5zdGFuY2UuY2FzZUZpZWxkPy5mb3JtYXR0ZWRfdmFsdWU7XG4gICAgLy8gVXNlIHRoZSBwYXRoVG9GbGFnc0Zvcm1Hcm91cCBwcm9wZXJ0eSBmcm9tIHRoZSBzZWxlY3RlZCBmbGFnIGxvY2F0aW9uIHRvIGRyaWxsIGRvd24gdG8gdGhlIGNvcnJlY3QgcGFydCBvZiB0aGVcbiAgICAvLyBDYXNlRmllbGQgZm9ybWF0dGVkX3ZhbHVlIGZyb20gd2hpY2ggdG8gZ2V0IHRoZSBvcmlnaW5hbCBwZXJzaXN0ZWQgZGF0YVxuICAgIGNvbnN0IHBhdGhUb1ZhbHVlID0gZmxhZ3NJbnN0YW5jZS5wYXRoVG9GbGFnc0Zvcm1Hcm91cDtcbiAgICAvLyBSb290LWxldmVsIEZsYWdzIENhc2VGaWVsZHMgZG9uJ3QgaGF2ZSBhIGRvdC1kZWxpbWl0ZWQgcGF0aCAtIGp1c3QgdGhlIENhc2VGaWVsZCBJRCBpdHNlbGYgLSBzbyBkb24ndCBkcmlsbCBkb3duXG4gICAgaWYgKHBhdGhUb1ZhbHVlLmluZGV4T2YoJy4nKSA+IC0xKSB7XG4gICAgICBwYXRoVG9WYWx1ZS5zbGljZShwYXRoVG9WYWx1ZS5pbmRleE9mKCcuJykgKyAxKS5zcGxpdCgnLicpLmZvckVhY2goKHBhcnQpID0+IHtcbiAgICAgICAgaWYgKGZvcm1hdHRlZFZhbHVlICYmIEZpZWxkc1V0aWxzLmlzTm9uRW1wdHlPYmplY3QoZm9ybWF0dGVkVmFsdWUpKSB7XG4gICAgICAgICAgZm9ybWF0dGVkVmFsdWUgPSBmb3JtYXR0ZWRWYWx1ZVtwYXJ0XTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChmb3JtYXR0ZWRWYWx1ZSAmJiBGaWVsZHNVdGlscy5pc05vbkVtcHR5T2JqZWN0KGZvcm1hdHRlZFZhbHVlKSkge1xuICAgICAgY29uc3Qgb3JpZ2luYWxGbGFnRGV0YWlsID0gZm9ybWF0dGVkVmFsdWUuZGV0YWlscz8uZmluZCgoZGV0YWlsKSA9PiBkZXRhaWwuaWQgPT09IGZsYWdEZXRhaWwuaWQpO1xuICAgICAgbGV0IHN0YXR1c1RvVXNlO1xuICAgICAgaWYgKGZsYWdzSW5zdGFuY2UucGF0aFRvRmxhZ3NGb3JtR3JvdXAgPT09IG9yaWdpbmFsUGF0aFRvRmxhZyl7XG4gICAgICAgIHN0YXR1c1RvVXNlID0gb3JpZ2luYWxTdGF0dXNGcm9tRkcgPyAob3JpZ2luYWxTdGF0dXNGcm9tRkcgPT09IG9yaWdpbmFsRmxhZ0RldGFpbC52YWx1ZT8uc3RhdHVzID8gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlPy5zdGF0dXMgOiBvcmlnaW5hbFN0YXR1c0Zyb21GRykgOiBvcmlnaW5hbEZsYWdEZXRhaWwudmFsdWU/LnN0YXR1cztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXR1c1RvVXNlID0gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlPy5zdGF0dXM7XG4gICAgICB9XG4gICAgICBpZiAob3JpZ2luYWxGbGFnRGV0YWlsKSB7XG4gICAgICAgIG9yaWdpbmFsU3RhdHVzID0gc3RhdHVzVG9Vc2U7XG4gICAgICAgIGZsYWdEZXRhaWwuZmxhZ0NvbW1lbnQgPSBvcmlnaW5hbEZsYWdEZXRhaWwudmFsdWU/LmZsYWdDb21tZW50O1xuICAgICAgICBmbGFnRGV0YWlsLmZsYWdDb21tZW50X2N5ID0gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlPy5mbGFnQ29tbWVudF9jeTtcbiAgICAgICAgZmxhZ0RldGFpbC5vdGhlckRlc2NyaXB0aW9uID0gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlPy5vdGhlckRlc2NyaXB0aW9uO1xuICAgICAgICBmbGFnRGV0YWlsLm90aGVyRGVzY3JpcHRpb25fY3kgPSBvcmlnaW5hbEZsYWdEZXRhaWwudmFsdWU/Lm90aGVyRGVzY3JpcHRpb25fY3k7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBmbGFnRGV0YWlsRGlzcGxheToge1xuICAgICAgICBwYXJ0eU5hbWU6IGZsYWdzSW5zdGFuY2UuZmxhZ3M/LnBhcnR5TmFtZSxcbiAgICAgICAgZmxhZ0RldGFpbCxcbiAgICAgICAgZmxhZ3NDYXNlRmllbGRJZDogZmxhZ3NJbnN0YW5jZS5jYXNlRmllbGQ/LmlkLFxuICAgICAgICB2aXNpYmlsaXR5OiBmbGFnc0luc3RhbmNlLmZsYWdzPy52aXNpYmlsaXR5XG4gICAgICB9LFxuICAgICAgcGF0aFRvRmxhZ3NGb3JtR3JvdXA6IGZsYWdzSW5zdGFuY2UucGF0aFRvRmxhZ3NGb3JtR3JvdXAsXG4gICAgICBjYXNlRmllbGQ6IGZsYWdzSW5zdGFuY2UuY2FzZUZpZWxkLFxuICAgICAgcm9sZU9uQ2FzZTogZmxhZ3NJbnN0YW5jZS5mbGFncz8ucm9sZU9uQ2FzZSxcbiAgICAgIG9yaWdpbmFsU3RhdHVzXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBvbk5leHQoKTogdm9pZCB7XG4gICAgLy8gVmFsaWRhdGUgZmxhZyBzZWxlY3Rpb25cbiAgICB0aGlzLnZhbGlkYXRlU2VsZWN0aW9uKCk7XG4gICAgLy8gUmV0dXJuIGNhc2UgZmxhZyBmaWVsZCBzdGF0ZSwgZXJyb3IgbWVzc2FnZXMsIGFuZCBmbGFnIHNlbGVjdGlvbiB0byB0aGUgcGFyZW50XG4gICAgdGhpcy5jYXNlRmxhZ1N0YXRlRW1pdHRlci5lbWl0KHtcbiAgICAgIGN1cnJlbnRDYXNlRmxhZ0ZpZWxkU3RhdGU6IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX01BTkFHRV9DQVNFX0ZMQUdTLFxuICAgICAgZXJyb3JNZXNzYWdlczogdGhpcy5lcnJvck1lc3NhZ2VzLFxuICAgICAgc2VsZWN0ZWRGbGFnOiB0aGlzLmZvcm1Hcm91cC5nZXQodGhpcy5zZWxlY3RlZENvbnRyb2xOYW1lKS52YWx1ZVxuICAgICAgICA/IHRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLnNlbGVjdGVkQ29udHJvbE5hbWUpLnZhbHVlIGFzIEZsYWdEZXRhaWxEaXNwbGF5V2l0aEZvcm1Hcm91cFBhdGhcbiAgICAgICAgOiBudWxsXG4gICAgfSk7XG5cbiAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG4gIH1cblxuICBwdWJsaWMgc2V0TWFuYWdlQ2FzZUZsYWdUaXRsZShkaXNwbGF5Q29udGV4dFBhcmFtZXRlcjogc3RyaW5nKTogQ2FzZUZsYWdXaXphcmRTdGVwVGl0bGUge1xuICAgIHN3aXRjaCAoZGlzcGxheUNvbnRleHRQYXJhbWV0ZXIpIHtcbiAgICAgIGNhc2UgQ2FzZUZsYWdEaXNwbGF5Q29udGV4dFBhcmFtZXRlci5VUERBVEU6XG4gICAgICBjYXNlIENhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIuVVBEQVRFXzJfUE9JTlRfMTpcbiAgICAgICAgcmV0dXJuIENhc2VGbGFnV2l6YXJkU3RlcFRpdGxlLk1BTkFHRV9DQVNFX0ZMQUdTO1xuICAgICAgY2FzZSBDYXNlRmxhZ0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyLlVQREFURV9FWFRFUk5BTDpcbiAgICAgICAgcmV0dXJuIENhc2VGbGFnV2l6YXJkU3RlcFRpdGxlLk1BTkFHRV9TVVBQT1JUO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIENhc2VGbGFnV2l6YXJkU3RlcFRpdGxlLk5PTkU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLm1hbmFnZUNhc2VGbGFnU2VsZWN0ZWRFcnJvck1lc3NhZ2UgPSBudWxsO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlcyA9IFtdO1xuICAgIGlmICghdGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMuc2VsZWN0ZWRDb250cm9sTmFtZSkudmFsdWUpIHtcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IHRoaXMuZGlzcGxheUNvbnRleHRQYXJhbWV0ZXIgPT09IENhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIuVVBEQVRFX0VYVEVSTkFMID9cbiAgICAgICAgU2VsZWN0RmxhZ0Vycm9yTWVzc2FnZS5NQU5BR0VfU1VQUE9SVF9GTEFHX05PVF9TRUxFQ1RFRCA6IFNlbGVjdEZsYWdFcnJvck1lc3NhZ2UuTUFOQUdFX0NBU0VfRkxBR1NfRkxBR19OT1RfU0VMRUNURUQ7XG4gICAgICB0aGlzLm1hbmFnZUNhc2VGbGFnU2VsZWN0ZWRFcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2U7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZXMucHVzaCh7XG4gICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgZGVzY3JpcHRpb246IGVycm9yTWVzc2FnZSxcbiAgICAgICAgZmllbGRJZDogJ2NvbmRpdGlvbmFsLXJhZGlvcy1saXN0J1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvbk5vRmxhZ3NFcnJvcigpOiB2b2lkIHtcbiAgICAvLyBTZXQgZXJyb3IgZmxhZyBvbiBjb21wb25lbnQgdG8gcmVtb3ZlIHRoZSBcIk5leHRcIiBidXR0b24gKHVzZXIgY2Fubm90IHByb2NlZWQgd2l0aCBmbGFnIGNyZWF0aW9uKVxuICAgIHRoaXMubm9GbGFnc0Vycm9yID0gdHJ1ZTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZXMgPSBbXTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZXMucHVzaCh7IHRpdGxlOiAnJywgZGVzY3JpcHRpb246IFNlbGVjdEZsYWdFcnJvck1lc3NhZ2UuTk9fRkxBR1MsIGZpZWxkSWQ6ICdjb25kaXRpb25hbC1yYWRpb3MtbGlzdCcgfSk7XG4gICAgLy8gUmV0dXJuIGNhc2UgZmxhZyBmaWVsZCBzdGF0ZSBhbmQgZXJyb3IgbWVzc2FnZXMgdG8gdGhlIHBhcmVudFxuICAgIHRoaXMuY2FzZUZsYWdTdGF0ZUVtaXR0ZXIuZW1pdCh7XG4gICAgICBjdXJyZW50Q2FzZUZsYWdGaWVsZFN0YXRlOiBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19NQU5BR0VfQ0FTRV9GTEFHUyxcbiAgICAgIGVycm9yTWVzc2FnZXM6IHRoaXMuZXJyb3JNZXNzYWdlc1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5leHQoKSB7XG4gICAgdGhpcy5vbk5leHQoKTtcbiAgICBjb25zdCBjYWNoZWRDb250cm9sID0gdGhpcy5jYWNoZWRDb250cm9scz8uW3RoaXMuc2VsZWN0ZWRDb250cm9sTmFtZV07XG4gICAgaWYgKGNhY2hlZENvbnRyb2wgJiYgdGhpcy5nZXRGbGFnSUQoY2FjaGVkQ29udHJvbC52YWx1ZSkgPT09IHRoaXMuZ2V0RmxhZ0lEKHRoaXMuZm9ybUdyb3VwLnZhbHVlW3RoaXMuc2VsZWN0ZWRDb250cm9sTmFtZV0pKSB7XG4gICAgICB0aGlzLnJlYXBwbHlDYWNoZWRDb250cm9scygpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmVycm9yTWVzc2FnZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICBzdXBlci5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlYXBwbHlDYWNoZWRDb250cm9scygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYWNoZWRDb250cm9scykge1xuICAgICAgT2JqZWN0LmtleXModGhpcy5jYWNoZWRDb250cm9scykuZm9yRWFjaCgoY29udHJvbE5hbWUpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmZvcm1Hcm91cC5jb250YWlucyhjb250cm9sTmFtZSkpIHtcbiAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5hZGRDb250cm9sKGNvbnRyb2xOYW1lLCB0aGlzLmNhY2hlZENvbnRyb2xzW2NvbnRyb2xOYW1lXSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cFwiIFtuZ0NsYXNzXT1cInsnZm9ybS1ncm91cC1lcnJvcic6IGVycm9yTWVzc2FnZXMubGVuZ3RoID4gMH1cIj5cbiAgICA8ZmllbGRzZXQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldFwiIGFyaWEtZGVzY3JpYmVkYnk9XCJtYW5hZ2UtY2FzZS1mbGFnLWhlYWRpbmdcIj5cbiAgICAgIDxsZWdlbmQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldF9fbGVnZW5kIGdvdnVrLWZpZWxkc2V0X19sZWdlbmQtLW1cIj5cbiAgICAgICAgPGgxIGlkPVwibWFuYWdlLWNhc2UtZmxhZy1oZWFkaW5nXCIgY2xhc3M9XCJnb3Z1ay1maWVsZHNldF9faGVhZGluZ1wiPlxuICAgICAgICAgIHt7bWFuYWdlQ2FzZUZsYWdUaXRsZSB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgIDwvaDE+XG4gICAgICA8L2xlZ2VuZD5cbiAgICAgIDxkaXYgaWQ9XCJtYW5hZ2UtY2FzZS1mbGFnLW5vdC1zZWxlY3RlZC1lcnJvci1tZXNzYWdlXCIgY2xhc3M9XCJnb3Z1ay1lcnJvci1tZXNzYWdlXCJcbiAgICAgICAgKm5nSWY9XCJtYW5hZ2VDYXNlRmxhZ1NlbGVjdGVkRXJyb3JNZXNzYWdlXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstdmlzdWFsbHktaGlkZGVuXCI+e3snRXJyb3I6JyB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPiB7e21hbmFnZUNhc2VGbGFnU2VsZWN0ZWRFcnJvck1lc3NhZ2UgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zIGdvdnVrLXJhZGlvcy0tY29uZGl0aW9uYWxcIiBkYXRhLW1vZHVsZT1cImdvdnVrLXJhZGlvc1wiIGlkPVwiY29uZGl0aW9uYWwtcmFkaW9zLWxpc3RcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvc19faXRlbVwiICpuZ0Zvcj1cImxldCBmbGFnRGlzcGxheSBvZiBmbGFnc0Rpc3BsYXlEYXRhOyBpbmRleCBhcyBpXCI+XG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZ292dWstcmFkaW9zX19pbnB1dFwiIGlkPVwiZmxhZy1zZWxlY3Rpb24te3tpfX1cIlxuICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImlzU2VsZWN0ZWQoZmxhZ0Rpc3BsYXkpXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25GbGFnU2VsZWN0aW9uQ2hhbmdlKGZsYWdEaXNwbGF5KVwiLz5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1yYWRpb3NfX2xhYmVsXCIgZm9yPVwiZmxhZy1zZWxlY3Rpb24te3tpfX1cIiBbaW5uZXJIdG1sXT1cImZsYWdEaXNwbGF5IHwgbWFuYWdlQ2FzZUZsYWdzTGFiZWxEaXNwbGF5XCI+PC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZWxkc2V0PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPiJdfQ==
272
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLWNhc2UtZmxhZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL2NvbXBvbmVudHMvbWFuYWdlLWNhc2UtZmxhZ3MvbWFuYWdlLWNhc2UtZmxhZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL2NvbXBvbmVudHMvbWFuYWdlLWNhc2UtZmxhZ3MvbWFuYWdlLWNhc2UtZmxhZ3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQW1CLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRW5DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUU3RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLHVCQUF1QixFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25KLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7O0lDR3ZELEFBRkYsOEJBQzZDLGNBQ1A7SUFBQSxZQUEyQjs7SUFBQSxpQkFBTztJQUFDLFlBQ3pFOztJQUFBLGlCQUFNOzs7SUFEZ0MsZUFBMkI7SUFBM0Isb0RBQTJCO0lBQVEsZUFDekU7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b0JBQW9CO2tCQUFwQyxNQUFNOztrRkFMSSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEVycm9yTWVzc2FnZSwgSm91cm5leSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBGaWVsZHNVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL2ZpZWxkcyc7XG5pbXBvcnQgeyBDYXNlRmxhZ1N0YXRlLCBGbGFnRGV0YWlsLCBGbGFnRGV0YWlsRGlzcGxheVdpdGhGb3JtR3JvdXBQYXRoLCBGbGFncywgRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aCB9IGZyb20gJy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBDYXNlRmxhZ0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyLCBDYXNlRmxhZ0ZpZWxkU3RhdGUsIENhc2VGbGFnU3RhdHVzLCBDYXNlRmxhZ1dpemFyZFN0ZXBUaXRsZSwgU2VsZWN0RmxhZ0Vycm9yTWVzc2FnZSB9IGZyb20gJy4uLy4uL2VudW1zJztcbmltcG9ydCB7IEFic3RyYWN0Sm91cm5leUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2Jhc2UtZmllbGQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtbWFuYWdlLWNhc2UtZmxhZ3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWFuYWdlLWNhc2UtZmxhZ3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tYW5hZ2UtY2FzZS1mbGFncy5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIE1hbmFnZUNhc2VGbGFnc0NvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0Sm91cm5leUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgSm91cm5leSB7XG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgcHVibGljIGZsYWdzRGF0YTogRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aFtdO1xuICBASW5wdXQoKSBwdWJsaWMgY2FzZVRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNwbGF5Q29udGV4dFBhcmFtZXRlcjogc3RyaW5nO1xuICBAT3V0cHV0KCkgcHVibGljIGNhc2VGbGFnU3RhdGVFbWl0dGVyOiBFdmVudEVtaXR0ZXI8Q2FzZUZsYWdTdGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPENhc2VGbGFnU3RhdGU+KCk7XG5cbiAgcHVibGljIG1hbmFnZUNhc2VGbGFnVGl0bGU6IENhc2VGbGFnV2l6YXJkU3RlcFRpdGxlO1xuICBwdWJsaWMgZXJyb3JNZXNzYWdlczogRXJyb3JNZXNzYWdlW10gPSBbXTtcbiAgcHVibGljIG1hbmFnZUNhc2VGbGFnU2VsZWN0ZWRFcnJvck1lc3NhZ2U6IFNlbGVjdEZsYWdFcnJvck1lc3NhZ2UgPSBudWxsO1xuICBwdWJsaWMgZmxhZ3NEaXNwbGF5RGF0YTogRmxhZ0RldGFpbERpc3BsYXlXaXRoRm9ybUdyb3VwUGF0aFtdO1xuICBwdWJsaWMgZmxhZ3M6IEZsYWdzO1xuICBwdWJsaWMgbm9GbGFnc0Vycm9yID0gZmFsc2U7XG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RlZENvbnRyb2xOYW1lID0gJ3NlbGVjdGVkTWFuYWdlQ2FzZUxvY2F0aW9uJztcbiAgcHJpdmF0ZSByZWFkb25seSBleGNsdWRlZEZsYWdTdGF0dXNlczogQ2FzZUZsYWdTdGF0dXNbXSA9IFtDYXNlRmxhZ1N0YXR1cy5JTkFDVElWRSwgQ2FzZUZsYWdTdGF0dXMuTk9UX0FQUFJPVkVEXTtcbiAgcHVibGljIGNhY2hlZENvbnRyb2xzOntcbiAgICBba2V5OiBzdHJpbmddOiBBYnN0cmFjdENvbnRyb2w7XG4gIH07XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubWFuYWdlQ2FzZUZsYWdUaXRsZSA9IHRoaXMuc2V0TWFuYWdlQ2FzZUZsYWdUaXRsZSh0aGlzLmRpc3BsYXlDb250ZXh0UGFyYW1ldGVyKTtcbiAgICBsZXQgb3JpZ2luYWxTdGF0dXM6IHN0cmluZztcbiAgICBsZXQgb3JpZ2luYWxQYXRoVG9GbGFnOiBzdHJpbmc7XG4gICAgLy8gaWYgdGhlIHVzZXIgaGFzIHByb2dyZXNzZWQgdG8gQ1lBIGFuZCB0aGVuIG5hdmlnYXRlZCBhd2F5LCB0aGUgZmxhZyB0aGV5IHNlbGVjdGVkIHdpbGwgYmUgc2V0IGFzIGluYWN0aXZlLCB3ZSBuZWVkIHRvIHJlc2V0IHRoaXNcbiAgICBjb25zdCBsb2NhdGlvbkNvbnRyb2wgPSB0aGlzLmZvcm1Hcm91cC5nZXQodGhpcy5zZWxlY3RlZENvbnRyb2xOYW1lKTtcbiAgICBpZiAobG9jYXRpb25Db250cm9sKSB7XG4gICAgICBvcmlnaW5hbFN0YXR1cyA9IGxvY2F0aW9uQ29udHJvbD8udmFsdWU/Lm9yaWdpbmFsU3RhdHVzO1xuICAgICAgb3JpZ2luYWxQYXRoVG9GbGFnID0gbG9jYXRpb25Db250cm9sPy52YWx1ZT8ucGF0aFRvRmxhZ3NGb3JtR3JvdXA7XG4gICAgICB0aGlzLmNhY2hlZENvbnRyb2xzID0gY2xvbmVEZWVwKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzKTtcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKChjb250cm9sTmFtZSkgPT4ge1xuICAgICAgICBpZiAoY29udHJvbE5hbWUgIT09IHRoaXMuc2VsZWN0ZWRDb250cm9sTmFtZSkge1xuICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woY29udHJvbE5hbWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBNYXAgZmxhZ3MgaW5zdGFuY2VzIHRvIG9iamVjdHMgZm9yIGRpc3BsYXksIGZpbHRlcmluZyBvdXQgYW55IHdoZXJlIHRoZSBvcmlnaW5hbCBzdGF0dXMgaXMgZWl0aGVyIFwiSW5hY3RpdmVcIiBvclxuICAgIC8vIFwiTm90IGFwcHJvdmVkXCJcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLmZsYWdzRGF0YSkge1xuICAgICAgdGhpcy5mbGFnc0Rpc3BsYXlEYXRhID0gdGhpcy5mbGFnc0RhdGEucmVkdWNlKChkaXNwbGF5RGF0YSwgZmxhZ3NJbnN0YW5jZSkgPT4ge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoZmxhZ3NJbnN0YW5jZS5mbGFncy5kZXRhaWxzICYmIGZsYWdzSW5zdGFuY2UuZmxhZ3MuZGV0YWlscy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZGlzcGxheURhdGEgPSBbXG4gICAgICAgICAgICAuLi5kaXNwbGF5RGF0YSxcbiAgICAgICAgICAgIC4uLmZsYWdzSW5zdGFuY2UuZmxhZ3MuZGV0YWlscy5tYXAoKGRldGFpbCkgPT4gdGhpcy5tYXBGbGFnRGV0YWlsRm9yRGlzcGxheShkZXRhaWwsIGZsYWdzSW5zdGFuY2UsIG9yaWdpbmFsU3RhdHVzLCBvcmlnaW5hbFBhdGhUb0ZsYWcpKVxuICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRpc3BsYXlEYXRhO1xuICAgICAgfSwgW10pLmZpbHRlcigoZmxhZ0ZvckRpc3BsYXkpID0+ICF0aGlzLmV4Y2x1ZGVkRmxhZ1N0YXR1c2VzLmluY2x1ZGVzKGZsYWdGb3JEaXNwbGF5Lm9yaWdpbmFsU3RhdHVzIGFzIENhc2VGbGFnU3RhdHVzKSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIGEgRm9ybUNvbnRyb2wgZm9yIHRoZSBzZWxlY3RlZCBjYXNlIGZsYWcgaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGZsYWdzIGluc3RhbmNlIHJlbWFpbmluZyBhZnRlciBtYXBwaW5nXG4gICAgaWYgKHRoaXMuZmxhZ3NEaXNwbGF5RGF0YSAmJiB0aGlzLmZsYWdzRGlzcGxheURhdGEubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbCh0aGlzLnNlbGVjdGVkQ29udHJvbE5hbWUsIG5ldyBGb3JtQ29udHJvbChudWxsKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5vIGZsYWdzIGRpc3BsYXkgZGF0YSBtZWFucyB0aGVyZSBhcmUgbm8gZmxhZ3MgdG8gc2VsZWN0IGZyb20uIFRoZSB1c2VyIGNhbm5vdCBwcm9jZWVkIHdpdGggYSBmbGFnIHVwZGF0ZS5cbiAgICAgIC8vIChXaWxsIG5lZWQgdG8gYmUgZXh0ZW5kZWQgdG8gY2hlY2sgZm9yIGNhc2UtbGV2ZWwgZmxhZ3MgaW4gZnV0dXJlKVxuICAgICAgdGhpcy5vbk5vRmxhZ3NFcnJvcigpO1xuICAgIH1cbiAgfVxuXG4gIG9uRmxhZ1NlbGVjdGlvbkNoYW5nZShzZWxlY3RlZEZsYWc6IEZvcm1Db250cm9sKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMuc2VsZWN0ZWRDb250cm9sTmFtZSkuc2V0VmFsdWUoc2VsZWN0ZWRGbGFnKTtcbiAgfVxuXG4gIGlzU2VsZWN0ZWQoZmxhZ0Rpc3BsYXk6IEZsYWdEZXRhaWxEaXNwbGF5V2l0aEZvcm1Hcm91cFBhdGgpOiBib29sZWFuIHtcbiAgICBjb25zdCBzZWxlY3RlZEZsYWcgPSB0aGlzLmZvcm1Hcm91cC5nZXQodGhpcy5zZWxlY3RlZENvbnRyb2xOYW1lKT8udmFsdWU7XG4gICAgcmV0dXJuIHNlbGVjdGVkRmxhZyAmJiB0aGlzLmdldEZsYWdJRChzZWxlY3RlZEZsYWcpID09PSB0aGlzLmdldEZsYWdJRChmbGFnRGlzcGxheSk7XG4gIH1cblxuICBnZXRGbGFnSUQoZmxhZzogRmxhZ0RldGFpbERpc3BsYXlXaXRoRm9ybUdyb3VwUGF0aCkge1xuICAgIHJldHVybiBmbGFnPy5mbGFnRGV0YWlsRGlzcGxheT8uZmxhZ0RldGFpbD8uaWQgfHwgJyc7XG4gIH1cblxuICBwdWJsaWMgbWFwRmxhZ0RldGFpbEZvckRpc3BsYXkoZmxhZ0RldGFpbDogRmxhZ0RldGFpbCwgZmxhZ3NJbnN0YW5jZTogRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aCwgb3JpZ2luYWxTdGF0dXNGcm9tRkc6IHN0cmluZywgb3JpZ2luYWxQYXRoVG9GbGFnOiBzdHJpbmcpOiBGbGFnRGV0YWlsRGlzcGxheVdpdGhGb3JtR3JvdXBQYXRoIHtcbiAgICAvLyBSZXNldCB0aGUgZmxhZyBzdGF0dXMgd2l0aCB0aGUgb3JpZ2luYWwgcGVyc2lzdGVkIHN0YXR1cy4gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBuZ09uSW5pdCgpIG5lZWRzIHRvIGZpbHRlclxuICAgIC8vIG91dCBhbnkgXCJJbmFjdGl2ZVwiIG9yIFwiTm90IGFwcHJvdmVkXCIgZmxhZ3MgYmFzZWQgb24gdGhlaXIgc3RhdHVzICpiZWZvcmUqIG1vZGlmaWNhdGlvbi4gSWYgdGhlIHVzZXIgY2hhbmdlcyBhXG4gICAgLy8gZmxhZydzIHN0YXR1cyB0aGVuIGRlY2lkZXMgdG8gcmV0dXJuIHRvIHRoZSBzdGFydCBvZiB0aGUgZmxhZyB1cGRhdGUgam91cm5leSwgdGhlIGZsYWcncyBzdGF0dXMgd291bGQgbm9cbiAgICAvLyBsb25nZXIgcmVmbGVjdCBpdHMgYWN0dWFsICpwZXJzaXN0ZWQqIHN0YXR1c1xuICAgIC8vIEFsc28gcmVzZXQgY29tbWVudHMgYW5kIGRlc2NyaXB0aW9uIGZpZWxkcyAoYm90aCBFbmdsaXNoIGFuZCBXZWxzaCkgd2l0aCB0aGUgb3JpZ2luYWwgcGVyc2lzdGVkIGRhdGEsIHRvIGF2b2lkXG4gICAgLy8gdGhlIFVJIGNhY2hpbmcgYW55IGNoYW5nZXMgdGhhdCB0aGUgdXNlciBtaWdodCBub3Qgd2FudCBwZXJzaXN0ZWQsIGlmIHRoZXkgc3RhcnQgb3ZlciBhbmQgZG9uJ3QgaW50ZW5kIHRvIGFkZFxuICAgIC8vIHRyYW5zbGF0aW9ucyBzdWJzZXF1ZW50bHlcbiAgICBsZXQgb3JpZ2luYWxTdGF0dXM6IHN0cmluZztcbiAgICBsZXQgZm9ybWF0dGVkVmFsdWUgPSBmbGFnc0luc3RhbmNlLmNhc2VGaWVsZD8uZm9ybWF0dGVkX3ZhbHVlO1xuICAgIC8vIFVzZSB0aGUgcGF0aFRvRmxhZ3NGb3JtR3JvdXAgcHJvcGVydHkgZnJvbSB0aGUgc2VsZWN0ZWQgZmxhZyBsb2NhdGlvbiB0byBkcmlsbCBkb3duIHRvIHRoZSBjb3JyZWN0IHBhcnQgb2YgdGhlXG4gICAgLy8gQ2FzZUZpZWxkIGZvcm1hdHRlZF92YWx1ZSBmcm9tIHdoaWNoIHRvIGdldCB0aGUgb3JpZ2luYWwgcGVyc2lzdGVkIGRhdGFcbiAgICBjb25zdCBwYXRoVG9WYWx1ZSA9IGZsYWdzSW5zdGFuY2UucGF0aFRvRmxhZ3NGb3JtR3JvdXA7XG4gICAgLy8gUm9vdC1sZXZlbCBGbGFncyBDYXNlRmllbGRzIGRvbid0IGhhdmUgYSBkb3QtZGVsaW1pdGVkIHBhdGggLSBqdXN0IHRoZSBDYXNlRmllbGQgSUQgaXRzZWxmIC0gc28gZG9uJ3QgZHJpbGwgZG93blxuICAgIGlmIChwYXRoVG9WYWx1ZS5pbmRleE9mKCcuJykgPiAtMSkge1xuICAgICAgcGF0aFRvVmFsdWUuc2xpY2UocGF0aFRvVmFsdWUuaW5kZXhPZignLicpICsgMSkuc3BsaXQoJy4nKS5mb3JFYWNoKChwYXJ0KSA9PiB7XG4gICAgICAgIGlmIChmb3JtYXR0ZWRWYWx1ZSAmJiBGaWVsZHNVdGlscy5pc05vbkVtcHR5T2JqZWN0KGZvcm1hdHRlZFZhbHVlKSkge1xuICAgICAgICAgIGZvcm1hdHRlZFZhbHVlID0gZm9ybWF0dGVkVmFsdWVbcGFydF07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoZm9ybWF0dGVkVmFsdWUgJiYgRmllbGRzVXRpbHMuaXNOb25FbXB0eU9iamVjdChmb3JtYXR0ZWRWYWx1ZSkpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsRmxhZ0RldGFpbCA9IGZvcm1hdHRlZFZhbHVlLmRldGFpbHM/LmZpbmQoKGRldGFpbCkgPT4gZGV0YWlsLmlkID09PSBmbGFnRGV0YWlsLmlkKTtcbiAgICAgIGxldCBzdGF0dXNUb1VzZTtcbiAgICAgIGlmIChmbGFnc0luc3RhbmNlLnBhdGhUb0ZsYWdzRm9ybUdyb3VwID09PSBvcmlnaW5hbFBhdGhUb0ZsYWcpIHtcbiAgICAgICAgaWYgKG9yaWdpbmFsU3RhdHVzRnJvbUZHKSB7XG4gICAgICAgICAgc3RhdHVzVG9Vc2UgPSBvcmlnaW5hbFN0YXR1c0Zyb21GRyA9PT0gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlPy5zdGF0dXMgPyBvcmlnaW5hbEZsYWdEZXRhaWwudmFsdWU/LnN0YXR1cyA6IG9yaWdpbmFsU3RhdHVzRnJvbUZHO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXR1c1RvVXNlID0gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlPy5zdGF0dXM7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXR1c1RvVXNlID0gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlPy5zdGF0dXM7XG4gICAgICB9XG4gICAgICBpZiAob3JpZ2luYWxGbGFnRGV0YWlsKSB7XG4gICAgICAgIG9yaWdpbmFsU3RhdHVzID0gc3RhdHVzVG9Vc2U7XG4gICAgICAgIGZsYWdEZXRhaWwuZmxhZ0NvbW1lbnQgPSBvcmlnaW5hbEZsYWdEZXRhaWwudmFsdWU/LmZsYWdDb21tZW50O1xuICAgICAgICBmbGFnRGV0YWlsLmZsYWdDb21tZW50X2N5ID0gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlPy5mbGFnQ29tbWVudF9jeTtcbiAgICAgICAgZmxhZ0RldGFpbC5vdGhlckRlc2NyaXB0aW9uID0gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlPy5vdGhlckRlc2NyaXB0aW9uO1xuICAgICAgICBmbGFnRGV0YWlsLm90aGVyRGVzY3JpcHRpb25fY3kgPSBvcmlnaW5hbEZsYWdEZXRhaWwudmFsdWU/Lm90aGVyRGVzY3JpcHRpb25fY3k7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBmbGFnRGV0YWlsRGlzcGxheToge1xuICAgICAgICBwYXJ0eU5hbWU6IGZsYWdzSW5zdGFuY2UuZmxhZ3M/LnBhcnR5TmFtZSxcbiAgICAgICAgZmxhZ0RldGFpbCxcbiAgICAgICAgZmxhZ3NDYXNlRmllbGRJZDogZmxhZ3NJbnN0YW5jZS5jYXNlRmllbGQ/LmlkLFxuICAgICAgICB2aXNpYmlsaXR5OiBmbGFnc0luc3RhbmNlLmZsYWdzPy52aXNpYmlsaXR5XG4gICAgICB9LFxuICAgICAgcGF0aFRvRmxhZ3NGb3JtR3JvdXA6IGZsYWdzSW5zdGFuY2UucGF0aFRvRmxhZ3NGb3JtR3JvdXAsXG4gICAgICBjYXNlRmllbGQ6IGZsYWdzSW5zdGFuY2UuY2FzZUZpZWxkLFxuICAgICAgcm9sZU9uQ2FzZTogZmxhZ3NJbnN0YW5jZS5mbGFncz8ucm9sZU9uQ2FzZSxcbiAgICAgIG9yaWdpbmFsU3RhdHVzXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBvbk5leHQoKTogdm9pZCB7XG4gICAgLy8gVmFsaWRhdGUgZmxhZyBzZWxlY3Rpb25cbiAgICB0aGlzLnZhbGlkYXRlU2VsZWN0aW9uKCk7XG4gICAgLy8gUmV0dXJuIGNhc2UgZmxhZyBmaWVsZCBzdGF0ZSwgZXJyb3IgbWVzc2FnZXMsIGFuZCBmbGFnIHNlbGVjdGlvbiB0byB0aGUgcGFyZW50XG4gICAgdGhpcy5jYXNlRmxhZ1N0YXRlRW1pdHRlci5lbWl0KHtcbiAgICAgIGN1cnJlbnRDYXNlRmxhZ0ZpZWxkU3RhdGU6IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX01BTkFHRV9DQVNFX0ZMQUdTLFxuICAgICAgZXJyb3JNZXNzYWdlczogdGhpcy5lcnJvck1lc3NhZ2VzLFxuICAgICAgc2VsZWN0ZWRGbGFnOiB0aGlzLmZvcm1Hcm91cC5nZXQodGhpcy5zZWxlY3RlZENvbnRyb2xOYW1lKS52YWx1ZVxuICAgICAgICA/IHRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLnNlbGVjdGVkQ29udHJvbE5hbWUpLnZhbHVlIGFzIEZsYWdEZXRhaWxEaXNwbGF5V2l0aEZvcm1Hcm91cFBhdGhcbiAgICAgICAgOiBudWxsXG4gICAgfSk7XG5cbiAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG4gIH1cblxuICBwdWJsaWMgc2V0TWFuYWdlQ2FzZUZsYWdUaXRsZShkaXNwbGF5Q29udGV4dFBhcmFtZXRlcjogc3RyaW5nKTogQ2FzZUZsYWdXaXphcmRTdGVwVGl0bGUge1xuICAgIHN3aXRjaCAoZGlzcGxheUNvbnRleHRQYXJhbWV0ZXIpIHtcbiAgICAgIGNhc2UgQ2FzZUZsYWdEaXNwbGF5Q29udGV4dFBhcmFtZXRlci5VUERBVEU6XG4gICAgICBjYXNlIENhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIuVVBEQVRFXzJfUE9JTlRfMTpcbiAgICAgICAgcmV0dXJuIENhc2VGbGFnV2l6YXJkU3RlcFRpdGxlLk1BTkFHRV9DQVNFX0ZMQUdTO1xuICAgICAgY2FzZSBDYXNlRmxhZ0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyLlVQREFURV9FWFRFUk5BTDpcbiAgICAgICAgcmV0dXJuIENhc2VGbGFnV2l6YXJkU3RlcFRpdGxlLk1BTkFHRV9TVVBQT1JUO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIENhc2VGbGFnV2l6YXJkU3RlcFRpdGxlLk5PTkU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLm1hbmFnZUNhc2VGbGFnU2VsZWN0ZWRFcnJvck1lc3NhZ2UgPSBudWxsO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlcyA9IFtdO1xuICAgIGlmICghdGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMuc2VsZWN0ZWRDb250cm9sTmFtZSkudmFsdWUpIHtcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IHRoaXMuZGlzcGxheUNvbnRleHRQYXJhbWV0ZXIgPT09IENhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIuVVBEQVRFX0VYVEVSTkFMID9cbiAgICAgICAgU2VsZWN0RmxhZ0Vycm9yTWVzc2FnZS5NQU5BR0VfU1VQUE9SVF9GTEFHX05PVF9TRUxFQ1RFRCA6IFNlbGVjdEZsYWdFcnJvck1lc3NhZ2UuTUFOQUdFX0NBU0VfRkxBR1NfRkxBR19OT1RfU0VMRUNURUQ7XG4gICAgICB0aGlzLm1hbmFnZUNhc2VGbGFnU2VsZWN0ZWRFcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2U7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZXMucHVzaCh7XG4gICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgZGVzY3JpcHRpb246IGVycm9yTWVzc2FnZSxcbiAgICAgICAgZmllbGRJZDogJ2NvbmRpdGlvbmFsLXJhZGlvcy1saXN0J1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvbk5vRmxhZ3NFcnJvcigpOiB2b2lkIHtcbiAgICAvLyBTZXQgZXJyb3IgZmxhZyBvbiBjb21wb25lbnQgdG8gcmVtb3ZlIHRoZSBcIk5leHRcIiBidXR0b24gKHVzZXIgY2Fubm90IHByb2NlZWQgd2l0aCBmbGFnIGNyZWF0aW9uKVxuICAgIHRoaXMubm9GbGFnc0Vycm9yID0gdHJ1ZTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZXMgPSBbXTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZXMucHVzaCh7IHRpdGxlOiAnJywgZGVzY3JpcHRpb246IFNlbGVjdEZsYWdFcnJvck1lc3NhZ2UuTk9fRkxBR1MsIGZpZWxkSWQ6ICdjb25kaXRpb25hbC1yYWRpb3MtbGlzdCcgfSk7XG4gICAgLy8gUmV0dXJuIGNhc2UgZmxhZyBmaWVsZCBzdGF0ZSBhbmQgZXJyb3IgbWVzc2FnZXMgdG8gdGhlIHBhcmVudFxuICAgIHRoaXMuY2FzZUZsYWdTdGF0ZUVtaXR0ZXIuZW1pdCh7XG4gICAgICBjdXJyZW50Q2FzZUZsYWdGaWVsZFN0YXRlOiBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19NQU5BR0VfQ0FTRV9GTEFHUyxcbiAgICAgIGVycm9yTWVzc2FnZXM6IHRoaXMuZXJyb3JNZXNzYWdlc1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5leHQoKSB7XG4gICAgdGhpcy5vbk5leHQoKTtcbiAgICBjb25zdCBjYWNoZWRDb250cm9sID0gdGhpcy5jYWNoZWRDb250cm9scz8uW3RoaXMuc2VsZWN0ZWRDb250cm9sTmFtZV07XG4gICAgaWYgKGNhY2hlZENvbnRyb2wgJiYgdGhpcy5nZXRGbGFnSUQoY2FjaGVkQ29udHJvbC52YWx1ZSkgPT09IHRoaXMuZ2V0RmxhZ0lEKHRoaXMuZm9ybUdyb3VwLnZhbHVlW3RoaXMuc2VsZWN0ZWRDb250cm9sTmFtZV0pKSB7XG4gICAgICB0aGlzLnJlYXBwbHlDYWNoZWRDb250cm9scygpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmVycm9yTWVzc2FnZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICBzdXBlci5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlYXBwbHlDYWNoZWRDb250cm9scygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYWNoZWRDb250cm9scykge1xuICAgICAgT2JqZWN0LmtleXModGhpcy5jYWNoZWRDb250cm9scykuZm9yRWFjaCgoY29udHJvbE5hbWUpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmZvcm1Hcm91cC5jb250YWlucyhjb250cm9sTmFtZSkpIHtcbiAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5hZGRDb250cm9sKGNvbnRyb2xOYW1lLCB0aGlzLmNhY2hlZENvbnRyb2xzW2NvbnRyb2xOYW1lXSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cFwiIFtuZ0NsYXNzXT1cInsnZm9ybS1ncm91cC1lcnJvcic6IGVycm9yTWVzc2FnZXMubGVuZ3RoID4gMH1cIj5cbiAgICA8ZmllbGRzZXQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldFwiIGFyaWEtZGVzY3JpYmVkYnk9XCJtYW5hZ2UtY2FzZS1mbGFnLWhlYWRpbmdcIj5cbiAgICAgIDxsZWdlbmQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldF9fbGVnZW5kIGdvdnVrLWZpZWxkc2V0X19sZWdlbmQtLW1cIj5cbiAgICAgICAgPGgxIGlkPVwibWFuYWdlLWNhc2UtZmxhZy1oZWFkaW5nXCIgY2xhc3M9XCJnb3Z1ay1maWVsZHNldF9faGVhZGluZ1wiPlxuICAgICAgICAgIHt7bWFuYWdlQ2FzZUZsYWdUaXRsZSB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgIDwvaDE+XG4gICAgICA8L2xlZ2VuZD5cbiAgICAgIDxkaXYgaWQ9XCJtYW5hZ2UtY2FzZS1mbGFnLW5vdC1zZWxlY3RlZC1lcnJvci1tZXNzYWdlXCIgY2xhc3M9XCJnb3Z1ay1lcnJvci1tZXNzYWdlXCJcbiAgICAgICAgKm5nSWY9XCJtYW5hZ2VDYXNlRmxhZ1NlbGVjdGVkRXJyb3JNZXNzYWdlXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstdmlzdWFsbHktaGlkZGVuXCI+e3snRXJyb3I6JyB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPiB7e21hbmFnZUNhc2VGbGFnU2VsZWN0ZWRFcnJvck1lc3NhZ2UgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zIGdvdnVrLXJhZGlvcy0tY29uZGl0aW9uYWxcIiBkYXRhLW1vZHVsZT1cImdvdnVrLXJhZGlvc1wiIGlkPVwiY29uZGl0aW9uYWwtcmFkaW9zLWxpc3RcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvc19faXRlbVwiICpuZ0Zvcj1cImxldCBmbGFnRGlzcGxheSBvZiBmbGFnc0Rpc3BsYXlEYXRhOyBpbmRleCBhcyBpXCI+XG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZ292dWstcmFkaW9zX19pbnB1dFwiIGlkPVwiZmxhZy1zZWxlY3Rpb24te3tpfX1cIlxuICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImlzU2VsZWN0ZWQoZmxhZ0Rpc3BsYXkpXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25GbGFnU2VsZWN0aW9uQ2hhbmdlKGZsYWdEaXNwbGF5KVwiLz5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1yYWRpb3NfX2xhYmVsXCIgZm9yPVwiZmxhZy1zZWxlY3Rpb24te3tpfX1cIiBbaW5uZXJIdG1sXT1cImZsYWdEaXNwbGF5IHwgbWFuYWdlQ2FzZUZsYWdzTGFiZWxEaXNwbGF5XCI+PC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZWxkc2V0PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPiJdfQ==
@@ -83,11 +83,11 @@ export class SelectFlagLocationComponent extends AbstractJourneyComponent {
83
83
  errorMessages = [];
84
84
  flagLocationNotSelectedErrorMessage = null;
85
85
  filteredFlagsData;
86
+ cachedLocation;
86
87
  caseFlagsConfigError = false;
87
88
  selectedLocationControlName = 'selectedLocation';
88
89
  caseLevelFlagLabel = 'Case level';
89
90
  caseLevelCaseFlagsFieldId = 'caseFlags';
90
- cachedLocation;
91
91
  ngOnInit() {
92
92
  if (this.formGroup.get(this.selectedLocationControlName)) {
93
93
  this.cachedLocation = this.formGroup.get(this.selectedLocationControlName).value?.pathToFlagsFormGroup;
@@ -127,7 +127,7 @@ export class SelectFlagLocationComponent extends AbstractJourneyComponent {
127
127
  // Validate flag location selection
128
128
  this.validateSelection();
129
129
  //check if the user has changed their location selection
130
- if (this.cachedLocation !== this.formGroup.get(this.selectedLocationControlName).value?.pathToFlagsFormGroup) {
130
+ if (this.cachedLocation !== this.formGroup.get(this.selectedLocationControlName)?.value?.pathToFlagsFormGroup) {
131
131
  Object.keys(this.formGroup.controls).forEach((controlName) => {
132
132
  if (controlName !== this.selectedLocationControlName) {
133
133
  this.formGroup.removeControl(controlName);
@@ -204,4 +204,4 @@ export class SelectFlagLocationComponent extends AbstractJourneyComponent {
204
204
  type: Output
205
205
  }] }); })();
206
206
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SelectFlagLocationComponent, { className: "SelectFlagLocationComponent", filePath: "lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.ts", lineNumber: 12 }); })();
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWZsYWctbG9jYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL2NvbXBvbmVudHMvc2VsZWN0LWZsYWctbG9jYXRpb24vc2VsZWN0LWZsYWctbG9jYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL2NvbXBvbmVudHMvc2VsZWN0LWZsYWctbG9jYXRpb24vc2VsZWN0LWZsYWctbG9jYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQzs7Ozs7OztJQ0tsRixBQUZGLDhCQUM4QyxjQUNSO0lBQUEsWUFBMkI7O0lBQUEsaUJBQU87SUFBQyxZQUN6RTs7SUFBQSxpQkFBTTs7O0lBRGdDLGVBQTJCO0lBQTNCLG9EQUEyQjtJQUFRLGVBQ3pFO0lBRHlFLGlHQUN6RTs7O0lBUVEsNkJBQXFEO0lBQ25ELFlBQ0Y7Ozs7O0lBREUsY0FDRjtJQURFLDBGQUNGOzs7SUFKRiw2QkFBb0Q7SUFDbEQsWUFDQTtJQUFBLG9IQUFxRDs7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MkI7NkRBQTNCLDJCQUEyQjtZQ1h4QyxnQ0FBc0M7WUFJOUIsQUFERixBQURGLEFBREYsOEJBQXlGLGtCQUNiLGdCQUNQLFlBQ0E7WUFDN0QsWUFDRjs7WUFDRixBQURFLGlCQUFLLEVBQ0U7WUFDVCw0RUFDOEM7WUFHOUMsOEJBQTRHO1lBQzFHLDRFQUE0RjtZQWlCbEcsQUFERSxBQURFLGlCQUFNLEVBQ0csRUFDUDs7O1lBOUJNLHlDQUF1QjtZQUNMLGNBQTBEO1lBQTFELGtGQUEwRDtZQUloRixlQUNGO1lBREUsNEVBQ0Y7WUFHQyxlQUF5QztZQUF6Qyw4REFBeUM7WUFJZ0IsZUFBc0I7WUFBdEIsK0NBQXNCOzs7aUZERjNFLDJCQUEyQjtjQUp2QyxTQUFTOzJCQUNFLDBCQUEwQjtnQkFJcEIsU0FBUztrQkFBeEIsS0FBSztZQUNVLFNBQVM7a0JBQXhCLEtBQUs7WUFDVSxpQ0FBaUM7a0JBQWhELEtBQUs7WUFFVyxvQkFBb0I7a0JBQXBDLE1BQU07O2tGQUxJLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBFcnJvck1lc3NhZ2UsIEpvdXJuZXkgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kb21haW4nO1xuaW1wb3J0IHsgQ2FzZUZsYWdTdGF0ZSwgRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aCB9IGZyb20gJy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBDYXNlRmxhZ0ZpZWxkU3RhdGUsIENhc2VGbGFnV2l6YXJkU3RlcFRpdGxlLCBTZWxlY3RGbGFnTG9jYXRpb25FcnJvck1lc3NhZ2UgfSBmcm9tICcuLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBBYnN0cmFjdEpvdXJuZXlDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9iYXNlLWZpZWxkL2Fic3RyYWN0LWpvdXJuZXkuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXNlbGVjdC1mbGFnLWxvY2F0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC1mbGFnLWxvY2F0aW9uLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RGbGFnTG9jYXRpb25Db21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdEpvdXJuZXlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEpvdXJuZXkge1xuICBASW5wdXQoKSBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHB1YmxpYyBmbGFnc0RhdGE6IEZsYWdzV2l0aEZvcm1Hcm91cFBhdGhbXTtcbiAgQElucHV0KCkgcHVibGljIGlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJFeHRlcm5hbCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2FzZUZsYWdTdGF0ZUVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxDYXNlRmxhZ1N0YXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8Q2FzZUZsYWdTdGF0ZT4oKTtcblxuICBwdWJsaWMgZmxhZ0xvY2F0aW9uVGl0bGU6IENhc2VGbGFnV2l6YXJkU3RlcFRpdGxlO1xuICBwdWJsaWMgZXJyb3JNZXNzYWdlczogRXJyb3JNZXNzYWdlW10gPSBbXTtcbiAgcHVibGljIGZsYWdMb2NhdGlvbk5vdFNlbGVjdGVkRXJyb3JNZXNzYWdlOiBTZWxlY3RGbGFnTG9jYXRpb25FcnJvck1lc3NhZ2UgPSBudWxsO1xuICBwdWJsaWMgZmlsdGVyZWRGbGFnc0RhdGE6IEZsYWdzV2l0aEZvcm1Hcm91cFBhdGhbXTtcbiAgcHVibGljIGNhc2VGbGFnc0NvbmZpZ0Vycm9yID0gZmFsc2U7XG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RlZExvY2F0aW9uQ29udHJvbE5hbWUgPSAnc2VsZWN0ZWRMb2NhdGlvbic7XG4gIHB1YmxpYyByZWFkb25seSBjYXNlTGV2ZWxGbGFnTGFiZWwgPSAnQ2FzZSBsZXZlbCc7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2FzZUxldmVsQ2FzZUZsYWdzRmllbGRJZCA9ICdjYXNlRmxhZ3MnO1xuICBwdWJsaWMgY2FjaGVkTG9jYXRpb246IHN0cmluZztcblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLnNlbGVjdGVkTG9jYXRpb25Db250cm9sTmFtZSkpe1xuICAgICAgdGhpcy5jYWNoZWRMb2NhdGlvbiA9IHRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLnNlbGVjdGVkTG9jYXRpb25Db250cm9sTmFtZSkudmFsdWU/LnBhdGhUb0ZsYWdzRm9ybUdyb3VwO1xuICAgIH1cbiAgICB0aGlzLmZsYWdMb2NhdGlvblRpdGxlID0gdGhpcy5pc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyRXh0ZXJuYWwgP1xuICAgICAgQ2FzZUZsYWdXaXphcmRTdGVwVGl0bGUuU0VMRUNUX0ZMQUdfTE9DQVRJT05fRVhURVJOQUwgOiBDYXNlRmxhZ1dpemFyZFN0ZXBUaXRsZS5TRUxFQ1RfRkxBR19MT0NBVElPTjtcblxuICAgIC8vIEZpbHRlciBvdXQgYW55IGZsYWdzIGluc3RhbmNlcyB0aGF0IGRvbid0IGhhdmUgYSBwYXJ0eSBuYW1lLCB1bmxlc3MgdGhlIGluc3RhbmNlIGlzIGZvciBjYXNlLWxldmVsIGZsYWdzICh0aGlzXG4gICAgLy8gaXMgZXhwZWN0ZWQgbm90IHRvIGhhdmUgYSBwYXJ0eSBuYW1lKVxuICAgIC8vIEFsc28gZGUtZHVwbGljYXRlIGZsYWdzIGluc3RhbmNlcyB3aGVyZSB0aGUgZ3JvdXBJZCwgaWYgcHJlc2VudCwgaXMgdGhlIHNhbWVcbiAgICBpZiAodGhpcy5mbGFnc0RhdGEpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRGbGFnc0RhdGEgPVxuICAgICAgICB0aGlzLmZsYWdzRGF0YVxuICAgICAgICAuZmlsdGVyKChmKSA9PiBmLmZsYWdzLnBhcnR5TmFtZSAhPT0gbnVsbCB8fCBmLnBhdGhUb0ZsYWdzRm9ybUdyb3VwID09PSB0aGlzLmNhc2VMZXZlbENhc2VGbGFnc0ZpZWxkSWQpXG4gICAgICAgIC5maWx0ZXIoKHZhbHVlLCBpbmRleCwgcGFydHlMZXZlbEZsYWdzKSA9PiAhdmFsdWUuZmxhZ3MuZ3JvdXBJZFxuICAgICAgICAgID8gdmFsdWVcbiAgICAgICAgICA6IHBhcnR5TGV2ZWxGbGFncy5maW5kSW5kZXgoKHApID0+IHAuZmxhZ3MuZ3JvdXBJZCA9PT0gdmFsdWUuZmxhZ3MuZ3JvdXBJZCkgPT09IGluZGV4KTtcbiAgICB9XG4gICAgLy8gQWRkIGEgRm9ybUNvbnRyb2wgZm9yIHRoZSBzZWxlY3RlZCBmbGFnIGxvY2F0aW9uIGlmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBmbGFncyBpbnN0YW5jZSByZW1haW5pbmcgYWZ0ZXIgZmlsdGVyaW5nXG4gICAgaWYgKHRoaXMuZmlsdGVyZWRGbGFnc0RhdGEgJiYgdGhpcy5maWx0ZXJlZEZsYWdzRGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLnNlbGVjdGVkTG9jYXRpb25Db250cm9sTmFtZSk7XG5cbiAgICAgIGlmICghZm9ybUNvbnRyb2wpIHtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbCh0aGlzLnNlbGVjdGVkTG9jYXRpb25Db250cm9sTmFtZSwgbmV3IEZvcm1Db250cm9sKG51bGwpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5lZWRzIHRvIGJlIHNldFZhbHVlIGFzIHRoZXkgaGF2ZSBkaWZmZXJlbnQgb2JqZWN0IHJlZmVyZW5jZXMgLS0gd2UgdXNlIHRoZSBwYXRoVG9GbGFnc0Zvcm1Hcm91cCBrZXlcbiAgICAgICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUoXG4gICAgICAgICAgdGhpcy5maWx0ZXJlZEZsYWdzRGF0YS5maW5kKGl0ZW0gPT4gaXRlbS5wYXRoVG9GbGFnc0Zvcm1Hcm91cCA9PT0gZm9ybUNvbnRyb2wudmFsdWU/LnBhdGhUb0ZsYWdzRm9ybUdyb3VwKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBObyBmaWx0ZXJlZCBmbGFncyBpbnN0YW5jZXMgbWVhbiB0aGVyZSBhcmUgbm8gcGFydGllcyB0byBzZWxlY3QgZnJvbS4gVGhlIGNhc2UgaGFzIG5vdCBiZWVuIGNvbmZpZ3VyZWQgcHJvcGVybHlcbiAgICAgIC8vIGZvciBjYXNlIGZsYWdzIGFuZCB0aGUgdXNlciBjYW5ub3QgcHJvY2VlZCB3aXRoIGZsYWcgY3JlYXRpb24uIChXaWxsIG5lZWQgdG8gYmUgZXh0ZW5kZWQgdG8gY2hlY2sgZm9yIGNhc2UtbGV2ZWxcbiAgICAgIC8vIGZsYWdzIGluIGZ1dHVyZSlcbiAgICAgIHRoaXMub25DYXNlRmxhZ3NDb25maWdFcnJvcigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbk5leHQoKTogdm9pZCB7XG4gICAgLy8gVmFsaWRhdGUgZmxhZyBsb2NhdGlvbiBzZWxlY3Rpb25cbiAgICB0aGlzLnZhbGlkYXRlU2VsZWN0aW9uKCk7XG4gICAgLy9jaGVjayBpZiB0aGUgdXNlciBoYXMgY2hhbmdlZCB0aGVpciBsb2NhdGlvbiBzZWxlY3Rpb25cbiAgICBpZiAodGhpcy5jYWNoZWRMb2NhdGlvbiAhPT0gdGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMuc2VsZWN0ZWRMb2NhdGlvbkNvbnRyb2xOYW1lKS52YWx1ZT8ucGF0aFRvRmxhZ3NGb3JtR3JvdXApIHtcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKChjb250cm9sTmFtZSkgPT4ge1xuICAgICAgICBpZiAoY29udHJvbE5hbWUgIT09IHRoaXMuc2VsZWN0ZWRMb2NhdGlvbkNvbnRyb2xOYW1lKSB7XG4gICAgICAgICAgdGhpcy5mb3JtR3JvdXAucmVtb3ZlQ29udHJvbChjb250cm9sTmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBSZXR1cm4gY2FzZSBmbGFnIGZpZWxkIHN0YXRlLCBlcnJvciBtZXNzYWdlcywgYW5kIHNlbGVjdGVkIEZsYWdzV2l0aEZvcm1Hcm91cFBhdGggaW5zdGFuY2UgKGkuZS4gZmxhZyBsb2NhdGlvbikgdG9cbiAgICAvLyB0aGUgcGFyZW50XG4gICAgdGhpcy5jYXNlRmxhZ1N0YXRlRW1pdHRlci5lbWl0KHtcbiAgICAgIGN1cnJlbnRDYXNlRmxhZ0ZpZWxkU3RhdGU6IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX0xPQ0FUSU9OLFxuICAgICAgZXJyb3JNZXNzYWdlczogdGhpcy5lcnJvck1lc3NhZ2VzLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmZsYWdMb2NhdGlvbk5vdFNlbGVjdGVkRXJyb3JNZXNzYWdlID0gbnVsbDtcbiAgICB0aGlzLmVycm9yTWVzc2FnZXMgPSBbXTtcbiAgICBpZiAoIXRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLnNlbGVjdGVkTG9jYXRpb25Db250cm9sTmFtZSkudmFsdWUpIHtcbiAgICAgIHRoaXMuZmxhZ0xvY2F0aW9uTm90U2VsZWN0ZWRFcnJvck1lc3NhZ2UgPSBTZWxlY3RGbGFnTG9jYXRpb25FcnJvck1lc3NhZ2UuRkxBR19MT0NBVElPTl9OT1RfU0VMRUNURUQ7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZXMucHVzaCh7XG4gICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgZGVzY3JpcHRpb246IFNlbGVjdEZsYWdMb2NhdGlvbkVycm9yTWVzc2FnZS5GTEFHX0xPQ0FUSU9OX05PVF9TRUxFQ1RFRCxcbiAgICAgICAgZmllbGRJZDogJ2NvbmRpdGlvbmFsLXJhZGlvcy1saXN0J1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvbkNhc2VGbGFnc0NvbmZpZ0Vycm9yKCk6IHZvaWQge1xuICAgIC8vIFNldCBlcnJvciBmbGFnIG9uIGNvbXBvbmVudCB0byByZW1vdmUgdGhlIFwiTmV4dFwiIGJ1dHRvbiAodXNlciBjYW5ub3QgcHJvY2VlZCB3aXRoIGZsYWcgY3JlYXRpb24pXG4gICAgdGhpcy5jYXNlRmxhZ3NDb25maWdFcnJvciA9IHRydWU7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2VzID0gW107XG4gICAgdGhpcy5lcnJvck1lc3NhZ2VzLnB1c2goXG4gICAgICB7IHRpdGxlOiAnJywgZGVzY3JpcHRpb246IFNlbGVjdEZsYWdMb2NhdGlvbkVycm9yTWVzc2FnZS5GTEFHU19OT1RfQ09ORklHVVJFRCwgZmllbGRJZDogJ2NvbmRpdGlvbmFsLXJhZGlvcy1saXN0JyB9KTtcbiAgICAvLyBSZXR1cm4gY2FzZSBmbGFnIGZpZWxkIHN0YXRlIGFuZCBlcnJvciBtZXNzYWdlcyB0byB0aGUgcGFyZW50XG4gICAgdGhpcy5jYXNlRmxhZ1N0YXRlRW1pdHRlci5lbWl0KHsgY3VycmVudENhc2VGbGFnRmllbGRTdGF0ZTogQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfVFlQRSwgZXJyb3JNZXNzYWdlczogdGhpcy5lcnJvck1lc3NhZ2VzIH0pO1xuICB9XG5cbiAgcHVibGljIG5leHQoKSB7XG4gICAgdGhpcy5vbk5leHQoKTtcblxuICAgIGlmICh0aGlzLmVycm9yTWVzc2FnZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICBzdXBlci5uZXh0KCk7XG4gICAgfVxuICB9XG59XG4iLCI8bmctY29udGFpbmVyIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1mb3JtLWdyb3VwXCIgW25nQ2xhc3NdPVwieydmb3JtLWdyb3VwLWVycm9yJzogZXJyb3JNZXNzYWdlcy5sZW5ndGggPiAwfVwiPlxuICAgIDxmaWVsZHNldCBjbGFzcz1cImdvdnVrLWZpZWxkc2V0XCIgYXJpYS1kZXNjcmliZWRieT1cImZsYWctbG9jYXRpb24taGVhZGluZ1wiPlxuICAgICAgPGxlZ2VuZCBjbGFzcz1cImdvdnVrLWZpZWxkc2V0X19sZWdlbmQgZ292dWstZmllbGRzZXRfX2xlZ2VuZC0tbVwiPlxuICAgICAgICA8aDEgaWQ9XCJmbGFnLWxvY2F0aW9uLWhlYWRpbmdcIiBjbGFzcz1cImdvdnVrLWZpZWxkc2V0X19oZWFkaW5nXCI+XG4gICAgICAgICAge3tmbGFnTG9jYXRpb25UaXRsZSB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgIDwvaDE+XG4gICAgICA8L2xlZ2VuZD5cbiAgICAgIDxkaXYgaWQ9XCJmbGFnLWxvY2F0aW9uLW5vdC1zZWxlY3RlZC1lcnJvci1tZXNzYWdlXCIgY2xhc3M9XCJnb3Z1ay1lcnJvci1tZXNzYWdlXCJcbiAgICAgICAgKm5nSWY9XCJmbGFnTG9jYXRpb25Ob3RTZWxlY3RlZEVycm9yTWVzc2FnZVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXZpc3VhbGx5LWhpZGRlblwiPnt7J0Vycm9yOicgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj4ge3tmbGFnTG9jYXRpb25Ob3RTZWxlY3RlZEVycm9yTWVzc2FnZSB8IHJweFRyYW5zbGF0ZX19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1yYWRpb3MgZ292dWstcmFkaW9zLS1jb25kaXRpb25hbFwiIGRhdGEtbW9kdWxlPVwiZ292dWstcmFkaW9zXCIgaWQ9XCJjb25kaXRpb25hbC1yYWRpb3MtbGlzdFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zX19pdGVtXCIgKm5nRm9yPVwibGV0IGZsYWdzSW5zdGFuY2Ugb2YgZmlsdGVyZWRGbGFnc0RhdGE7IGluZGV4IGFzIGlcIj5cbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2lucHV0XCIgaWQ9XCJmbGFnLWxvY2F0aW9uLXt7aX19XCIgW25hbWVdPVwic2VsZWN0ZWRMb2NhdGlvbkNvbnRyb2xOYW1lXCJcbiAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiIFt2YWx1ZV09XCJmbGFnc0luc3RhbmNlXCIgW2Zvcm1Db250cm9sTmFtZV09XCJzZWxlY3RlZExvY2F0aW9uQ29udHJvbE5hbWVcIi8+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstcmFkaW9zX19sYWJlbFwiIGZvcj1cImZsYWctbG9jYXRpb24te3tpfX1cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmbGFnc0luc3RhbmNlLmZsYWdzLnBhcnR5TmFtZVwiPlxuICAgICAgICAgICAgICB7e2ZsYWdzSW5zdGFuY2UuZmxhZ3MucGFydHlOYW1lfX1cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZsYWdzSW5zdGFuY2UuZmxhZ3Mucm9sZU9uQ2FzZVwiPlxuICAgICAgICAgICAgICAgICh7e2ZsYWdzSW5zdGFuY2UuZmxhZ3Mucm9sZU9uQ2FzZSB8IHJweFRyYW5zbGF0ZX19KVxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmbGFnc0luc3RhbmNlLmZsYWdzLnBhcnR5TmFtZVwiPlxuICAgICAgICAgICAgICB7e2Nhc2VMZXZlbEZsYWdMYWJlbCB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZmllbGRzZXQ+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+Il19
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWZsYWctbG9jYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL2NvbXBvbmVudHMvc2VsZWN0LWZsYWctbG9jYXRpb24vc2VsZWN0LWZsYWctbG9jYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL2NvbXBvbmVudHMvc2VsZWN0LWZsYWctbG9jYXRpb24vc2VsZWN0LWZsYWctbG9jYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQzs7Ozs7OztJQ0tsRixBQUZGLDhCQUM4QyxjQUNSO0lBQUEsWUFBMkI7O0lBQUEsaUJBQU87SUFBQyxZQUN6RTs7SUFBQSxpQkFBTTs7O0lBRGdDLGVBQTJCO0lBQTNCLG9EQUEyQjtJQUFRLGVBQ3pFO0lBRHlFLGlHQUN6RTs7O0lBUVEsNkJBQXFEO0lBQ25ELFlBQ0Y7Ozs7O0lBREUsY0FDRjtJQURFLDBGQUNGOzs7SUFKRiw2QkFBb0Q7SUFDbEQsWUFDQTtJQUFBLG9IQUFxRDs7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MkI7NkRBQTNCLDJCQUEyQjtZQ1h4QyxnQ0FBc0M7WUFJOUIsQUFERixBQURGLEFBREYsOEJBQXlGLGtCQUNiLGdCQUNQLFlBQ0E7WUFDN0QsWUFDRjs7WUFDRixBQURFLGlCQUFLLEVBQ0U7WUFDVCw0RUFDOEM7WUFHOUMsOEJBQTRHO1lBQzFHLDRFQUE0RjtZQWlCbEcsQUFERSxBQURFLGlCQUFNLEVBQ0csRUFDUDs7O1lBOUJNLHlDQUF1QjtZQUNMLGNBQTBEO1lBQTFELGtGQUEwRDtZQUloRixlQUNGO1lBREUsNEVBQ0Y7WUFHQyxlQUF5QztZQUF6Qyw4REFBeUM7WUFJZ0IsZUFBc0I7WUFBdEIsK0NBQXNCOzs7aUZERjNFLDJCQUEyQjtjQUp2QyxTQUFTOzJCQUNFLDBCQUEwQjtnQkFJcEIsU0FBUztrQkFBeEIsS0FBSztZQUNVLFNBQVM7a0JBQXhCLEtBQUs7WUFDVSxpQ0FBaUM7a0JBQWhELEtBQUs7WUFFVyxvQkFBb0I7a0JBQXBDLE1BQU07O2tGQUxJLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBFcnJvck1lc3NhZ2UsIEpvdXJuZXkgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kb21haW4nO1xuaW1wb3J0IHsgQ2FzZUZsYWdTdGF0ZSwgRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aCB9IGZyb20gJy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBDYXNlRmxhZ0ZpZWxkU3RhdGUsIENhc2VGbGFnV2l6YXJkU3RlcFRpdGxlLCBTZWxlY3RGbGFnTG9jYXRpb25FcnJvck1lc3NhZ2UgfSBmcm9tICcuLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBBYnN0cmFjdEpvdXJuZXlDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9iYXNlLWZpZWxkL2Fic3RyYWN0LWpvdXJuZXkuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXNlbGVjdC1mbGFnLWxvY2F0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC1mbGFnLWxvY2F0aW9uLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RGbGFnTG9jYXRpb25Db21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdEpvdXJuZXlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEpvdXJuZXkge1xuICBASW5wdXQoKSBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHB1YmxpYyBmbGFnc0RhdGE6IEZsYWdzV2l0aEZvcm1Hcm91cFBhdGhbXTtcbiAgQElucHV0KCkgcHVibGljIGlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJFeHRlcm5hbCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2FzZUZsYWdTdGF0ZUVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxDYXNlRmxhZ1N0YXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8Q2FzZUZsYWdTdGF0ZT4oKTtcblxuICBwdWJsaWMgZmxhZ0xvY2F0aW9uVGl0bGU6IENhc2VGbGFnV2l6YXJkU3RlcFRpdGxlO1xuICBwdWJsaWMgZXJyb3JNZXNzYWdlczogRXJyb3JNZXNzYWdlW10gPSBbXTtcbiAgcHVibGljIGZsYWdMb2NhdGlvbk5vdFNlbGVjdGVkRXJyb3JNZXNzYWdlOiBTZWxlY3RGbGFnTG9jYXRpb25FcnJvck1lc3NhZ2UgPSBudWxsO1xuICBwdWJsaWMgZmlsdGVyZWRGbGFnc0RhdGE6IEZsYWdzV2l0aEZvcm1Hcm91cFBhdGhbXTtcbiAgcHVibGljIGNhY2hlZExvY2F0aW9uOiBzdHJpbmc7XG4gIHB1YmxpYyBjYXNlRmxhZ3NDb25maWdFcnJvciA9IGZhbHNlO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWRMb2NhdGlvbkNvbnRyb2xOYW1lID0gJ3NlbGVjdGVkTG9jYXRpb24nO1xuICBwdWJsaWMgcmVhZG9ubHkgY2FzZUxldmVsRmxhZ0xhYmVsID0gJ0Nhc2UgbGV2ZWwnO1xuICBwcml2YXRlIHJlYWRvbmx5IGNhc2VMZXZlbENhc2VGbGFnc0ZpZWxkSWQgPSAnY2FzZUZsYWdzJztcblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLnNlbGVjdGVkTG9jYXRpb25Db250cm9sTmFtZSkpIHtcbiAgICAgIHRoaXMuY2FjaGVkTG9jYXRpb24gPSB0aGlzLmZvcm1Hcm91cC5nZXQodGhpcy5zZWxlY3RlZExvY2F0aW9uQ29udHJvbE5hbWUpLnZhbHVlPy5wYXRoVG9GbGFnc0Zvcm1Hcm91cDtcbiAgICB9XG4gICAgdGhpcy5mbGFnTG9jYXRpb25UaXRsZSA9IHRoaXMuaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlckV4dGVybmFsID9cbiAgICAgIENhc2VGbGFnV2l6YXJkU3RlcFRpdGxlLlNFTEVDVF9GTEFHX0xPQ0FUSU9OX0VYVEVSTkFMIDogQ2FzZUZsYWdXaXphcmRTdGVwVGl0bGUuU0VMRUNUX0ZMQUdfTE9DQVRJT047XG5cbiAgICAvLyBGaWx0ZXIgb3V0IGFueSBmbGFncyBpbnN0YW5jZXMgdGhhdCBkb24ndCBoYXZlIGEgcGFydHkgbmFtZSwgdW5sZXNzIHRoZSBpbnN0YW5jZSBpcyBmb3IgY2FzZS1sZXZlbCBmbGFncyAodGhpc1xuICAgIC8vIGlzIGV4cGVjdGVkIG5vdCB0byBoYXZlIGEgcGFydHkgbmFtZSlcbiAgICAvLyBBbHNvIGRlLWR1cGxpY2F0ZSBmbGFncyBpbnN0YW5jZXMgd2hlcmUgdGhlIGdyb3VwSWQsIGlmIHByZXNlbnQsIGlzIHRoZSBzYW1lXG4gICAgaWYgKHRoaXMuZmxhZ3NEYXRhKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkRmxhZ3NEYXRhID1cbiAgICAgICAgdGhpcy5mbGFnc0RhdGFcbiAgICAgICAgLmZpbHRlcigoZikgPT4gZi5mbGFncy5wYXJ0eU5hbWUgIT09IG51bGwgfHwgZi5wYXRoVG9GbGFnc0Zvcm1Hcm91cCA9PT0gdGhpcy5jYXNlTGV2ZWxDYXNlRmxhZ3NGaWVsZElkKVxuICAgICAgICAuZmlsdGVyKCh2YWx1ZSwgaW5kZXgsIHBhcnR5TGV2ZWxGbGFncykgPT4gIXZhbHVlLmZsYWdzLmdyb3VwSWRcbiAgICAgICAgICA/IHZhbHVlXG4gICAgICAgICAgOiBwYXJ0eUxldmVsRmxhZ3MuZmluZEluZGV4KChwKSA9PiBwLmZsYWdzLmdyb3VwSWQgPT09IHZhbHVlLmZsYWdzLmdyb3VwSWQpID09PSBpbmRleCk7XG4gICAgfVxuICAgIC8vIEFkZCBhIEZvcm1Db250cm9sIGZvciB0aGUgc2VsZWN0ZWQgZmxhZyBsb2NhdGlvbiBpZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgZmxhZ3MgaW5zdGFuY2UgcmVtYWluaW5nIGFmdGVyIGZpbHRlcmluZ1xuICAgIGlmICh0aGlzLmZpbHRlcmVkRmxhZ3NEYXRhICYmIHRoaXMuZmlsdGVyZWRGbGFnc0RhdGEubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmZvcm1Hcm91cC5nZXQodGhpcy5zZWxlY3RlZExvY2F0aW9uQ29udHJvbE5hbWUpO1xuXG4gICAgICBpZiAoIWZvcm1Db250cm9sKSB7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2wodGhpcy5zZWxlY3RlZExvY2F0aW9uQ29udHJvbE5hbWUsIG5ldyBGb3JtQ29udHJvbChudWxsKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBOZWVkcyB0byBiZSBzZXRWYWx1ZSBhcyB0aGV5IGhhdmUgZGlmZmVyZW50IG9iamVjdCByZWZlcmVuY2VzIC0tIHdlIHVzZSB0aGUgcGF0aFRvRmxhZ3NGb3JtR3JvdXAga2V5XG4gICAgICAgIGZvcm1Db250cm9sLnNldFZhbHVlKFxuICAgICAgICAgIHRoaXMuZmlsdGVyZWRGbGFnc0RhdGEuZmluZChpdGVtID0+IGl0ZW0ucGF0aFRvRmxhZ3NGb3JtR3JvdXAgPT09IGZvcm1Db250cm9sLnZhbHVlPy5wYXRoVG9GbGFnc0Zvcm1Hcm91cClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTm8gZmlsdGVyZWQgZmxhZ3MgaW5zdGFuY2VzIG1lYW4gdGhlcmUgYXJlIG5vIHBhcnRpZXMgdG8gc2VsZWN0IGZyb20uIFRoZSBjYXNlIGhhcyBub3QgYmVlbiBjb25maWd1cmVkIHByb3Blcmx5XG4gICAgICAvLyBmb3IgY2FzZSBmbGFncyBhbmQgdGhlIHVzZXIgY2Fubm90IHByb2NlZWQgd2l0aCBmbGFnIGNyZWF0aW9uLiAoV2lsbCBuZWVkIHRvIGJlIGV4dGVuZGVkIHRvIGNoZWNrIGZvciBjYXNlLWxldmVsXG4gICAgICAvLyBmbGFncyBpbiBmdXR1cmUpXG4gICAgICB0aGlzLm9uQ2FzZUZsYWdzQ29uZmlnRXJyb3IoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25OZXh0KCk6IHZvaWQge1xuICAgIC8vIFZhbGlkYXRlIGZsYWcgbG9jYXRpb24gc2VsZWN0aW9uXG4gICAgdGhpcy52YWxpZGF0ZVNlbGVjdGlvbigpO1xuICAgIC8vY2hlY2sgaWYgdGhlIHVzZXIgaGFzIGNoYW5nZWQgdGhlaXIgbG9jYXRpb24gc2VsZWN0aW9uXG4gICAgaWYgKHRoaXMuY2FjaGVkTG9jYXRpb24gIT09IHRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLnNlbGVjdGVkTG9jYXRpb25Db250cm9sTmFtZSk/LnZhbHVlPy5wYXRoVG9GbGFnc0Zvcm1Hcm91cCkge1xuICAgICAgT2JqZWN0LmtleXModGhpcy5mb3JtR3JvdXAuY29udHJvbHMpLmZvckVhY2goKGNvbnRyb2xOYW1lKSA9PiB7XG4gICAgICAgIGlmIChjb250cm9sTmFtZSAhPT0gdGhpcy5zZWxlY3RlZExvY2F0aW9uQ29udHJvbE5hbWUpIHtcbiAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5yZW1vdmVDb250cm9sKGNvbnRyb2xOYW1lKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIC8vIFJldHVybiBjYXNlIGZsYWcgZmllbGQgc3RhdGUsIGVycm9yIG1lc3NhZ2VzLCBhbmQgc2VsZWN0ZWQgRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aCBpbnN0YW5jZSAoaS5lLiBmbGFnIGxvY2F0aW9uKSB0b1xuICAgIC8vIHRoZSBwYXJlbnRcbiAgICB0aGlzLmNhc2VGbGFnU3RhdGVFbWl0dGVyLmVtaXQoe1xuICAgICAgY3VycmVudENhc2VGbGFnRmllbGRTdGF0ZTogQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfTE9DQVRJT04sXG4gICAgICBlcnJvck1lc3NhZ2VzOiB0aGlzLmVycm9yTWVzc2FnZXMsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuZmxhZ0xvY2F0aW9uTm90U2VsZWN0ZWRFcnJvck1lc3NhZ2UgPSBudWxsO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlcyA9IFtdO1xuICAgIGlmICghdGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMuc2VsZWN0ZWRMb2NhdGlvbkNvbnRyb2xOYW1lKS52YWx1ZSkge1xuICAgICAgdGhpcy5mbGFnTG9jYXRpb25Ob3RTZWxlY3RlZEVycm9yTWVzc2FnZSA9IFNlbGVjdEZsYWdMb2NhdGlvbkVycm9yTWVzc2FnZS5GTEFHX0xPQ0FUSU9OX05PVF9TRUxFQ1RFRDtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgdGl0bGU6ICcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogU2VsZWN0RmxhZ0xvY2F0aW9uRXJyb3JNZXNzYWdlLkZMQUdfTE9DQVRJT05fTk9UX1NFTEVDVEVELFxuICAgICAgICBmaWVsZElkOiAnY29uZGl0aW9uYWwtcmFkaW9zLWxpc3QnXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9uQ2FzZUZsYWdzQ29uZmlnRXJyb3IoKTogdm9pZCB7XG4gICAgLy8gU2V0IGVycm9yIGZsYWcgb24gY29tcG9uZW50IHRvIHJlbW92ZSB0aGUgXCJOZXh0XCIgYnV0dG9uICh1c2VyIGNhbm5vdCBwcm9jZWVkIHdpdGggZmxhZyBjcmVhdGlvbilcbiAgICB0aGlzLmNhc2VGbGFnc0NvbmZpZ0Vycm9yID0gdHJ1ZTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZXMgPSBbXTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZXMucHVzaChcbiAgICAgIHsgdGl0bGU6ICcnLCBkZXNjcmlwdGlvbjogU2VsZWN0RmxhZ0xvY2F0aW9uRXJyb3JNZXNzYWdlLkZMQUdTX05PVF9DT05GSUdVUkVELCBmaWVsZElkOiAnY29uZGl0aW9uYWwtcmFkaW9zLWxpc3QnIH0pO1xuICAgIC8vIFJldHVybiBjYXNlIGZsYWcgZmllbGQgc3RhdGUgYW5kIGVycm9yIG1lc3NhZ2VzIHRvIHRoZSBwYXJlbnRcbiAgICB0aGlzLmNhc2VGbGFnU3RhdGVFbWl0dGVyLmVtaXQoeyBjdXJyZW50Q2FzZUZsYWdGaWVsZFN0YXRlOiBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19UWVBFLCBlcnJvck1lc3NhZ2VzOiB0aGlzLmVycm9yTWVzc2FnZXMgfSk7XG4gIH1cblxuICBwdWJsaWMgbmV4dCgpIHtcbiAgICB0aGlzLm9uTmV4dCgpO1xuXG4gICAgaWYgKHRoaXMuZXJyb3JNZXNzYWdlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHN1cGVyLm5leHQoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIiBbbmdDbGFzc109XCJ7J2Zvcm0tZ3JvdXAtZXJyb3InOiBlcnJvck1lc3NhZ2VzLmxlbmd0aCA+IDB9XCI+XG4gICAgPGZpZWxkc2V0IGNsYXNzPVwiZ292dWstZmllbGRzZXRcIiBhcmlhLWRlc2NyaWJlZGJ5PVwiZmxhZy1sb2NhdGlvbi1oZWFkaW5nXCI+XG4gICAgICA8bGVnZW5kIGNsYXNzPVwiZ292dWstZmllbGRzZXRfX2xlZ2VuZCBnb3Z1ay1maWVsZHNldF9fbGVnZW5kLS1tXCI+XG4gICAgICAgIDxoMSBpZD1cImZsYWctbG9jYXRpb24taGVhZGluZ1wiIGNsYXNzPVwiZ292dWstZmllbGRzZXRfX2hlYWRpbmdcIj5cbiAgICAgICAgICB7e2ZsYWdMb2NhdGlvblRpdGxlIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgPC9oMT5cbiAgICAgIDwvbGVnZW5kPlxuICAgICAgPGRpdiBpZD1cImZsYWctbG9jYXRpb24tbm90LXNlbGVjdGVkLWVycm9yLW1lc3NhZ2VcIiBjbGFzcz1cImdvdnVrLWVycm9yLW1lc3NhZ2VcIlxuICAgICAgICAqbmdJZj1cImZsYWdMb2NhdGlvbk5vdFNlbGVjdGVkRXJyb3JNZXNzYWdlXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstdmlzdWFsbHktaGlkZGVuXCI+e3snRXJyb3I6JyB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPiB7e2ZsYWdMb2NhdGlvbk5vdFNlbGVjdGVkRXJyb3JNZXNzYWdlIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvcyBnb3Z1ay1yYWRpb3MtLWNvbmRpdGlvbmFsXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1yYWRpb3NcIiBpZD1cImNvbmRpdGlvbmFsLXJhZGlvcy1saXN0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2l0ZW1cIiAqbmdGb3I9XCJsZXQgZmxhZ3NJbnN0YW5jZSBvZiBmaWx0ZXJlZEZsYWdzRGF0YTsgaW5kZXggYXMgaVwiPlxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImdvdnVrLXJhZGlvc19faW5wdXRcIiBpZD1cImZsYWctbG9jYXRpb24te3tpfX1cIiBbbmFtZV09XCJzZWxlY3RlZExvY2F0aW9uQ29udHJvbE5hbWVcIlxuICAgICAgICAgICAgdHlwZT1cInJhZGlvXCIgW3ZhbHVlXT1cImZsYWdzSW5zdGFuY2VcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInNlbGVjdGVkTG9jYXRpb25Db250cm9sTmFtZVwiLz5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1yYWRpb3NfX2xhYmVsXCIgZm9yPVwiZmxhZy1sb2NhdGlvbi17e2l9fVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZsYWdzSW5zdGFuY2UuZmxhZ3MucGFydHlOYW1lXCI+XG4gICAgICAgICAgICAgIHt7ZmxhZ3NJbnN0YW5jZS5mbGFncy5wYXJ0eU5hbWV9fVxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmxhZ3NJbnN0YW5jZS5mbGFncy5yb2xlT25DYXNlXCI+XG4gICAgICAgICAgICAgICAgKHt7ZmxhZ3NJbnN0YW5jZS5mbGFncy5yb2xlT25DYXNlIHwgcnB4VHJhbnNsYXRlfX0pXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZsYWdzSW5zdGFuY2UuZmxhZ3MucGFydHlOYW1lXCI+XG4gICAgICAgICAgICAgIHt7Y2FzZUxldmVsRmxhZ0xhYmVsIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9maWVsZHNldD5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj4iXX0=