@hmcts/ccd-case-ui-toolkit 7.0.2-welsh-testing-fix-v1 → 7.0.3-case-flags-v2-1-release
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.mjs +4 -5
- package/esm2020/lib/shared/components/case-editor/services/wizard-page-field-to-case-field.mapper.mjs +4 -3
- package/esm2020/lib/shared/components/palette/address/write-address-field.component.mjs +20 -19
- package/esm2020/lib/shared/components/palette/case-link/write-case-link-field.component.mjs +6 -5
- package/esm2020/lib/shared/components/palette/collection/write-collection-field.component.mjs +26 -25
- package/esm2020/lib/shared/components/palette/complex/read-complex-field.component.mjs +1 -1
- package/esm2020/lib/shared/components/palette/complex/write-complex-field.component.mjs +6 -5
- package/esm2020/lib/shared/components/palette/date/write-date-field.component.mjs +6 -5
- package/esm2020/lib/shared/components/palette/datetime-picker/datetime-picker.component.mjs +6 -5
- package/esm2020/lib/shared/components/palette/document/write-document-field.component.mjs +24 -23
- package/esm2020/lib/shared/components/palette/dynamic-list/write-dynamic-list-field.component.mjs +6 -5
- package/esm2020/lib/shared/components/palette/dynamic-radio-list/write-dynamic-radio-list-field.component.mjs +6 -5
- package/esm2020/lib/shared/components/palette/email/write-email-field.component.mjs +6 -5
- package/esm2020/lib/shared/components/palette/fixed-list/write-fixed-list-field.component.mjs +6 -5
- package/esm2020/lib/shared/components/palette/fixed-radio-list/write-fixed-radio-list-field.component.mjs +6 -5
- package/esm2020/lib/shared/components/palette/history/event-log/event-log-table.component.mjs +7 -9
- package/esm2020/lib/shared/components/palette/markdown/markdown.component.mjs +7 -9
- package/esm2020/lib/shared/components/palette/money-gbp/write-money-gbp-field.component.mjs +6 -5
- package/esm2020/lib/shared/components/palette/multi-select-list/write-multi-select-list-field.component.mjs +6 -5
- package/esm2020/lib/shared/components/palette/number/write-number-field.component.mjs +6 -5
- package/esm2020/lib/shared/components/palette/palette.module.mjs +1 -1
- package/esm2020/lib/shared/components/palette/phone-uk/write-phone-uk-field.component.mjs +6 -5
- package/esm2020/lib/shared/components/palette/text/write-text-field.component.mjs +6 -5
- package/esm2020/lib/shared/components/palette/text-area/write-text-area-field.component.mjs +6 -5
- package/esm2020/lib/shared/components/palette/utils/field-label.pipe.mjs +7 -14
- package/esm2020/lib/shared/components/palette/yes-no/write-yes-no-field.component.mjs +6 -5
- package/esm2020/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.mjs +4 -2
- package/esm2020/lib/shared/pipes/complex/fields-filter.pipe.mjs +4 -2
- package/esm2020/lib/shared/services/fields/fields.utils.mjs +6 -1
- package/esm2020/lib/shared/services/form/form-value.service.mjs +2 -2
- package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs +183 -163
- package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
- package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs +183 -163
- package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
- package/lib/shared/components/case-editor/services/wizard-page-field-to-case-field.mapper.d.ts.map +1 -1
- package/lib/shared/components/palette/complex/read-complex-field.component.d.ts.map +1 -1
- package/lib/shared/components/palette/utils/field-label.pipe.d.ts +0 -3
- package/lib/shared/components/palette/utils/field-label.pipe.d.ts.map +1 -1
- package/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.d.ts.map +1 -1
- package/lib/shared/pipes/complex/fields-filter.pipe.d.ts.map +1 -1
- package/lib/shared/services/fields/fields.utils.d.ts +1 -0
- package/lib/shared/services/fields/fields.utils.d.ts.map +1 -1
- package/package.json +1 -1
package/esm2020/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.mjs
CHANGED
|
@@ -48,12 +48,11 @@ function CaseEditSubmitComponent_div_0_ng_container_12_span_4_Template(rf, ctx)
|
|
|
48
48
|
function CaseEditSubmitComponent_div_0_ng_container_12_ng_container_7_ng_container_1_ng_container_1_ng_container_1_th_2_Template(rf, ctx) { if (rf & 1) {
|
|
49
49
|
i0.ɵɵelementStart(0, "th", 25)(1, "span", 20);
|
|
50
50
|
i0.ɵɵtext(2);
|
|
51
|
-
i0.ɵɵpipe(3, "rpxTranslate");
|
|
52
51
|
i0.ɵɵelementEnd()();
|
|
53
52
|
} if (rf & 2) {
|
|
54
53
|
const field_r17 = i0.ɵɵnextContext(2).$implicit;
|
|
55
54
|
i0.ɵɵadvance(2);
|
|
56
|
-
i0.ɵɵtextInterpolate(
|
|
55
|
+
i0.ɵɵtextInterpolate(field_r17.label);
|
|
57
56
|
} }
|
|
58
57
|
function CaseEditSubmitComponent_div_0_ng_container_12_ng_container_7_ng_container_1_ng_container_1_ng_container_1_ng_container_5_a_2_Template(rf, ctx) { if (rf & 1) {
|
|
59
58
|
const _r25 = i0.ɵɵgetCurrentView();
|
|
@@ -87,7 +86,7 @@ function CaseEditSubmitComponent_div_0_ng_container_12_ng_container_7_ng_contain
|
|
|
87
86
|
function CaseEditSubmitComponent_div_0_ng_container_12_ng_container_7_ng_container_1_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
88
87
|
i0.ɵɵelementContainerStart(0);
|
|
89
88
|
i0.ɵɵelementStart(1, "tr", 21);
|
|
90
|
-
i0.ɵɵtemplate(2, CaseEditSubmitComponent_div_0_ng_container_12_ng_container_7_ng_container_1_ng_container_1_ng_container_1_th_2_Template,
|
|
89
|
+
i0.ɵɵtemplate(2, CaseEditSubmitComponent_div_0_ng_container_12_ng_container_7_ng_container_1_ng_container_1_ng_container_1_th_2_Template, 3, 1, "th", 22);
|
|
91
90
|
i0.ɵɵelementStart(3, "td", 23);
|
|
92
91
|
i0.ɵɵelement(4, "ccd-field-read", 24);
|
|
93
92
|
i0.ɵɵelementEnd();
|
|
@@ -537,6 +536,6 @@ CaseEditSubmitComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Cas
|
|
|
537
536
|
} }, styles: ["#fieldset-case-data[_ngcontent-%COMP%]{margin-bottom:30px}#fieldset-case-data[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{width:1%;white-space:nowrap;vertical-align:top}.compound-field[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:0}#confirmation-header[_ngcontent-%COMP%]{width:630px;background-color:#17958b;border:solid 1px #979797;color:#fff;text-align:center}#confirmation-body[_ngcontent-%COMP%]{width:630px;background-color:#fff}.valign-top[_ngcontent-%COMP%]{vertical-align:top}.summary-fields[_ngcontent-%COMP%]{margin-bottom:30px}.summary-fields[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .summary-fields[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-bottom:0px}a.disabled[_ngcontent-%COMP%]{pointer-events:none;cursor:default}.case-field-label[_ngcontent-%COMP%]{width:45%}.case-field-content[_ngcontent-%COMP%]{width:50%}.no-bottom-border[_ngcontent-%COMP%]{border-bottom:none}.case-field-change[_ngcontent-%COMP%]{width:5%}"] });
|
|
538
537
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseEditSubmitComponent, [{
|
|
539
538
|
type: Component,
|
|
540
|
-
args: [{ selector: 'ccd-case-edit-submit', template: "<div *ngIf=\"!caseEdit.isEventCompletionChecksRequired\">\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 <ng-container *ngIf=\"checkYourAnswerFieldsToDisplayExists()\">\n\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\"
|
|
539
|
+
args: [{ selector: 'ccd-case-edit-submit', template: "<div *ngIf=\"!caseEdit.isEventCompletionChecksRequired\">\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 <ng-container *ngIf=\"checkYourAnswerFieldsToDisplayExists()\">\n\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\"><span class=\"text-16\">{{field.label}}</span></th>\n <td class=\"form-cell case-field-content\" [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\">\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 <input type=\"text\" id=\"field-trigger-summary\" class=\"form-control bottom-30 width-50\" formControlName=\"summary\" maxlength=\"1024\">\n </div>\n <div class=\"form-group\">\n <label for=\"field-trigger-description\" class=\"form-label\">Event description (optional)</label>\n <textarea id=\"field-trigger-description\" class=\"form-control bottom-30 width-50\" formControlName=\"description\"\n maxlength=\"65536\"></textarea>\n </div>\n </fieldset>\n </ng-container>\n <div class=\"form-group form-group-related\">\n <button *ngIf=\"!caseEdit.isCaseFlagSubmission\" 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<ccd-case-event-completion *ngIf=\"caseEdit.isEventCompletionChecksRequired\"\n [eventCompletionParams]=\"caseEdit.eventCompletionParams\"\n (eventCanBeCompleted)=\"onEventCanBeCompleted($event)\">\n</ccd-case-event-completion>\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"] }]
|
|
541
540
|
}], function () { return [{ type: i1.CaseEditComponent }, { type: i2.FieldsUtils }, { type: i2.CaseFieldService }, { type: i3.ActivatedRoute }, { type: i2.OrderService }, { type: i2.ProfileNotifier }]; }, null); })();
|
|
542
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1lZGl0LXN1Ym1pdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvY2FzZS1lZGl0b3IvY2FzZS1lZGl0LXN1Ym1pdC9jYXNlLWVkaXQtc3VibWl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLWVkaXRvci9jYXNlLWVkaXQtc3VibWl0L2Nhc2UtZWRpdC1zdWJtaXQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJakQsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsWUFBWSxFQUNaLGVBQWUsR0FDaEIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsdUJBQXVCLEVBQXlCLE1BQU0sYUFBYSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7OztJQ1pwRSxzQkFBaUU7OztJQUUvRCxtQ0FBa0g7Ozs7SUFBcEcsNkhBQW9GOzs7SUFHbEcsOEJBQTJDO0lBQUEsWUFBcUM7O0lBQUEsaUJBQUs7OztJQUExQyxlQUFxQztJQUFyQyx5RUFBcUM7OztJQUFoRiwyRkFBcUY7OztJQUFoRix5Q0FBaUI7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QUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4RyxDQUFDO0lBRU0sYUFBYTtRQUNsQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFO1lBQ3BDLE9BQU8scUJBQXFCLENBQUM7U0FDOUI7YUFBTTtZQUNMLE9BQU8sUUFBUSxDQUFDO1NBQ2pCO0lBQ0gsQ0FBQzs7QUEzT3NCLDZEQUFxQyxHQUFHLENBQUMsQ0FBWSxFQUFFLENBQVksRUFBVSxFQUFFO0lBQ3BHLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQywyQkFBMkIsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLDJCQUEyQixDQUFDO0lBQ3hGLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQywyQkFBMkIsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLDJCQUEyQixDQUFDO0lBRXhGLElBQUksQ0FBQyxVQUFVLEVBQUU7UUFDZixPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUM1QjtJQUVELElBQUksQ0FBQyxVQUFVLEVBQUU7UUFDZixPQUFPLENBQUMsQ0FBQyxDQUFDO0tBQ1g7SUFDRCxPQUFPLENBQUMsQ0FBQywyQkFBMkIsR0FBRyxDQUFDLENBQUMsMkJBQTJCLENBQUM7QUFDdkUsQ0FBQyxDQUFBOzhGQTNCVSx1QkFBdUI7MEVBQXZCLHVCQUF1QjtRQ3pCcEMsMEVBZ0hNO1FBQ04sb0hBRzRCOztRQXBIdEIsb0VBQStDO1FBaUh6QixlQUE4QztRQUE5QyxtRUFBOEM7O3VGRHhGN0QsdUJBQXVCO2NBTG5DLFNBQVM7MkJBQ0Usc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDYXNlRXZlbnRUcmlnZ2VyLCBDYXNlRmllbGQsIFByb2ZpbGUgfSBmcm9tICcuLi8uLi8uLi9kb21haW4nO1xuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi93b3JrLWFsbG9jYXRpb24vVGFzayc7XG5pbXBvcnQge1xuICBDYXNlRmllbGRTZXJ2aWNlLFxuICBGaWVsZHNVdGlscyxcbiAgT3JkZXJTZXJ2aWNlLFxuICBQcm9maWxlTm90aWZpZXIsXG59IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IENhbGxiYWNrRXJyb3JzQ29tcG9uZW50LCBDYWxsYmFja0Vycm9yc0NvbnRleHQgfSBmcm9tICcuLi8uLi9lcnJvcic7XG5pbXBvcnQgeyBQYWxldHRlQ29udGV4dCB9IGZyb20gJy4uLy4uL3BhbGV0dGUnO1xuaW1wb3J0IHsgQ2FzZUVkaXRQYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vY2FzZS1lZGl0LXBhZ2UvY2FzZS1lZGl0LXBhZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IENhc2VFZGl0Q29tcG9uZW50IH0gZnJvbSAnLi4vY2FzZS1lZGl0L2Nhc2UtZWRpdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgV2l6YXJkLCBXaXphcmRQYWdlIH0gZnJvbSAnLi4vZG9tYWluJztcbmltcG9ydCB7IENhc2VFZGl0U3VibWl0VGl0bGVzIH0gZnJvbSAnLi9jYXNlLWVkaXQtc3VibWl0LXRpdGxlcy5lbnVtJztcblxuLy8gQGR5bmFtaWNcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1jYXNlLWVkaXQtc3VibWl0JyxcbiAgdGVtcGxhdGVVcmw6ICdjYXNlLWVkaXQtc3VibWl0Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi4vY2FzZS1lZGl0LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDYXNlRWRpdFN1Ym1pdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHVibGljIGV2ZW50VHJpZ2dlcjogQ2FzZUV2ZW50VHJpZ2dlcjtcbiAgcHVibGljIGVkaXRGb3JtOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyB0cmlnZ2VyVGV4dDogc3RyaW5nO1xuICBwdWJsaWMgd2l6YXJkOiBXaXphcmQ7XG4gIHB1YmxpYyBwcm9maWxlOiBQcm9maWxlO1xuICBwdWJsaWMgc2hvd1N1bW1hcnlGaWVsZHM6IENhc2VGaWVsZFtdO1xuICBwdWJsaWMgcGFsZXR0ZUNvbnRleHQ6IFBhbGV0dGVDb250ZXh0ID0gUGFsZXR0ZUNvbnRleHQuQ0hFQ0tfWU9VUl9BTlNXRVI7XG4gIHB1YmxpYyBwcm9maWxlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBjb250ZXh0RmllbGRzOiBDYXNlRmllbGRbXTtcbiAgcHVibGljIHRhc2s6IFRhc2s7XG4gIHB1YmxpYyBwYWdlVGl0bGU6IHN0cmluZztcbiAgcHVibGljIG1ldGFkYXRhRmllbGRzT2JqZWN0OiBvYmplY3Q7XG4gIHB1YmxpYyBhbGxGaWVsZHNWYWx1ZXM6IGFueTtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNIT1dfU1VNTUFSWV9DT05URU5UX0NPTVBBUkVfRlVOQ1RJT04gPSAoYTogQ2FzZUZpZWxkLCBiOiBDYXNlRmllbGQpOiBudW1iZXIgPT4ge1xuICAgIGNvbnN0IGFDYXNlRmllbGQgPSBhLnNob3dfc3VtbWFyeV9jb250ZW50X29wdGlvbiA9PT0gMCB8fCBhLnNob3dfc3VtbWFyeV9jb250ZW50X29wdGlvbjtcbiAgICBjb25zdCBiQ2FzZUZpZWxkID0gYi5zaG93X3N1bW1hcnlfY29udGVudF9vcHRpb24gPT09IDAgfHwgYi5zaG93X3N1bW1hcnlfY29udGVudF9vcHRpb247XG5cbiAgICBpZiAoIWFDYXNlRmllbGQpIHtcbiAgICAgIHJldHVybiAhYkNhc2VGaWVsZCA/IDAgOiAxO1xuICAgIH1cblxuICAgIGlmICghYkNhc2VGaWVsZCkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICByZXR1cm4gYS5zaG93X3N1bW1hcnlfY29udGVudF9vcHRpb24gLSBiLnNob3dfc3VtbWFyeV9jb250ZW50X29wdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAvLyBFVUktMzQ1Mi5cbiAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNoZWNrIHRoZSB2YWxpZGl0eSBvZiB0aGUgZWRpdEZvcm0gYXMgaXQgaXMgcmVhZG9ubHkuXG4gICAgLy8gVGhpcyB3YXMgY2F1c2luZyBpc3N1ZXMgd2l0aCBoaWRkZW4gZmllbGRzIHRoYXQgYXJlbid0IHdhbnRlZCBidXQgaGF2ZVxuICAgIC8vIG5vdCBiZWVuIGRpc2FibGVkLlxuICAgIHJldHVybiB0aGlzLmNhc2VFZGl0LmlzU3VibWl0dGluZyB8fCB0aGlzLmhhc0Vycm9ycztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBjYXNlRWRpdDogQ2FzZUVkaXRDb21wb25lbnQsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmaWVsZHNVdGlsczogRmllbGRzVXRpbHMsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXNlRmllbGRTZXJ2aWNlOiBDYXNlRmllbGRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3JkZXJTZXJ2aWNlOiBPcmRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9maWxlTm90aWZpZXI6IFByb2ZpbGVOb3RpZmllcixcbiAgKSB7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5wcm9maWxlU3Vic2NyaXB0aW9uID0gdGhpcy5wcm9maWxlTm90aWZpZXIucHJvZmlsZS5zdWJzY3JpYmUoXyA9PiB0aGlzLnByb2ZpbGUgPSBfKTtcbiAgICB0aGlzLmV2ZW50VHJpZ2dlciA9IHRoaXMuY2FzZUVkaXQuZXZlbnRUcmlnZ2VyO1xuICAgIHRoaXMudHJpZ2dlclRleHQgPSB0aGlzLmV2ZW50VHJpZ2dlci5lbmRfYnV0dG9uX2xhYmVsIHx8IENhbGxiYWNrRXJyb3JzQ29tcG9uZW50LlRSSUdHRVJfVEVYVF9TVUJNSVQ7XG4gICAgdGhpcy5lZGl0Rm9ybSA9IHRoaXMuY2FzZUVkaXQuZm9ybTtcbiAgICB0aGlzLndpemFyZCA9IHRoaXMuY2FzZUVkaXQud2l6YXJkO1xuICAgIHRoaXMuc2hvd1N1bW1hcnlGaWVsZHMgPSB0aGlzLnNvcnRGaWVsZHNCeVNob3dTdW1tYXJ5Q29udGVudCh0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcyk7XG4gICAgdGhpcy5jYXNlRWRpdC5pc1N1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmNvbnRleHRGaWVsZHMgPSB0aGlzLmdldENhc2VGaWVsZHMoKTtcbiAgICB0aGlzLm1ldGFkYXRhRmllbGRzT2JqZWN0ID0gdGhpcy5jYXNlRWRpdD8uY2FzZURldGFpbHM/Lm1ldGFkYXRhRmllbGRzPy5cbiAgICAgIHJlZHVjZSgobywga2V5KSA9PiBPYmplY3QuYXNzaWduKG8sIHtba2V5LmlkXToga2V5LnZhbHVlfSksIHt9KTtcbiAgICB0aGlzLmFsbEZpZWxkc1ZhbHVlcyA9IE9iamVjdC5hc3NpZ24odGhpcy5tZXRhZGF0YUZpZWxkc09iamVjdCA/IHRoaXMubWV0YWRhdGFGaWVsZHNPYmplY3QgOiB7fSwgdGhpcy5lZGl0Rm9ybS5nZXRSYXdWYWx1ZSgpLmRhdGEpO1xuICAgIC8vIEluZGljYXRlcyBpZiB0aGUgc3VibWlzc2lvbiBpcyBmb3IgYSBDYXNlIEZsYWcsIGFzIG9wcG9zZWQgdG8gYSBcInJlZ3VsYXJcIiBmb3JtIHN1Ym1pc3Npb24sIGJ5IHRoZSBwcmVzZW5jZSBvZlxuICAgIC8vIGEgRmxhZ0xhdW5jaGVyIGZpZWxkIGluIHRoZSBldmVudCB0cmlnZ2VyXG4gICAgdGhpcy5jYXNlRWRpdC5pc0Nhc2VGbGFnU3VibWlzc2lvbiA9XG4gICAgICB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcy5zb21lKGNhc2VGaWVsZCA9PiBGaWVsZHNVdGlscy5pc0Nhc2VGaWVsZE9mVHlwZShjYXNlRmllbGQsIFsnRmxhZ0xhdW5jaGVyJ10pKTtcbiAgICB0aGlzLmNhc2VFZGl0LmlzTGlua2VkQ2FzZXNTdWJtaXNzaW9uID1cbiAgICAgIHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzLnNvbWUoY2FzZUZpZWxkID0+IEZpZWxkc1V0aWxzLmlzQ2FzZUZpZWxkT2ZUeXBlKGNhc2VGaWVsZCwgWydDb21wb25lbnRMYXVuY2hlciddKSk7XG4gICAgdGhpcy5wYWdlVGl0bGUgPSB0aGlzLmdldFBhZ2VUaXRsZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMucHJvZmlsZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5wcm9maWxlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN1Ym1pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhc2VFZGl0LnN1Ym1pdEZvcm0oe1xuICAgICAgZXZlbnRUcmlnZ2VyOiB0aGlzLmV2ZW50VHJpZ2dlcixcbiAgICAgIGZvcm06IHRoaXMuZWRpdEZvcm0sXG4gICAgICBzdWJtaXQ6IHRoaXMuY2FzZUVkaXQuc3VibWl0LFxuICAgICAgY2FzZURldGFpbHM6IHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25FdmVudENhbkJlQ29tcGxldGVkKGV2ZW50Q2FuQmVDb21wbGV0ZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmNhc2VFZGl0Lm9uRXZlbnRDYW5CZUNvbXBsZXRlZCh7XG4gICAgICBldmVudFRyaWdnZXI6IHRoaXMuZXZlbnRUcmlnZ2VyLFxuICAgICAgZXZlbnRDYW5CZUNvbXBsZXRlZCxcbiAgICAgIGNhc2VEZXRhaWxzOiB0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzLFxuICAgICAgZm9ybTogdGhpcy5lZGl0Rm9ybSxcbiAgICAgIHN1Ym1pdDogdGhpcy5jYXNlRWRpdC5zdWJtaXQsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFBhZ2VUaXRsZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNhc2VGbGFnRmllbGQgPSB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcy5maW5kKGNhc2VGaWVsZCA9PiBGaWVsZHNVdGlscy5pc0Nhc2VGaWVsZE9mVHlwZShjYXNlRmllbGQsIFsnRmxhZ0xhdW5jaGVyJ10pKTtcbiAgICBpZiAoY2FzZUZsYWdGaWVsZCkge1xuICAgICAgY29uc3QgaXNDYXNlRmxhZ0V4dGVybmFsTW9kZSA9IGNhc2VGbGFnRmllbGQuZGlzcGxheV9jb250ZXh0X3BhcmFtZXRlciA9PT0gJyNBUkdVTUVOVChVUERBVEUsRVhURVJOQUwpJyB8fFxuICAgICAgICBjYXNlRmxhZ0ZpZWxkLmRpc3BsYXlfY29udGV4dF9wYXJhbWV0ZXIgPT09ICcjQVJHVU1FTlQoQ1JFQVRFLEVYVEVSTkFMKSc7XG4gICAgICByZXR1cm4gaXNDYXNlRmxhZ0V4dGVybmFsTW9kZVxuICAgICAgICA/IENhc2VFZGl0U3VibWl0VGl0bGVzLlJFVklFV19TVVBQT1JUX1JFUVVFU1RcbiAgICAgICAgOiBDYXNlRWRpdFN1Ym1pdFRpdGxlcy5SRVZJRVdfRkxBR19ERVRBSUxTO1xuICAgIH1cbiAgICByZXR1cm4gQ2FzZUVkaXRTdWJtaXRUaXRsZXMuQ0hFQ0tfWU9VUl9BTlNXRVJTO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaGFzRXJyb3JzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNhc2VFZGl0Py5lcnJvcj8uY2FsbGJhY2tFcnJvcnM/Lmxlbmd0aDtcbiAgfVxuXG4gIHB1YmxpYyBuYXZpZ2F0ZVRvUGFnZShwYWdlSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY2FzZUVkaXQubmF2aWdhdGVUb1BhZ2UocGFnZUlkKTtcbiAgfVxuXG4gIHB1YmxpYyBjYWxsYmFja0Vycm9yc05vdGlmeShlcnJvckNvbnRleHQ6IENhbGxiYWNrRXJyb3JzQ29udGV4dCk6IHZvaWQge1xuICAgIHRoaXMuY2FzZUVkaXQuaWdub3JlV2FybmluZyA9IGVycm9yQ29udGV4dC5pZ25vcmVXYXJuaW5nO1xuICAgIHRoaXMudHJpZ2dlclRleHQgPSBlcnJvckNvbnRleHQudHJpZ2dlclRleHQ7XG4gIH1cblxuICBwdWJsaWMgc3VtbWFyeUNhc2VGaWVsZChmaWVsZDogQ2FzZUZpZWxkKTogQ2FzZUZpZWxkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChudWxsID09PSB0aGlzLmVkaXRGb3JtLmdldCgnZGF0YScpLmdldChmaWVsZC5pZCkpIHtcbiAgICAgIC8vIElmIG5vdCBpbiBmb3JtLCByZXR1cm4gZmllbGQgaXRzZWxmXG4gICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgY29uc3QgY2xvbmVGaWVsZDogQ2FzZUZpZWxkID0gdGhpcy5maWVsZHNVdGlscy5jbG9uZUNhc2VGaWVsZChmaWVsZCk7XG4gICAgY2xvbmVGaWVsZC52YWx1ZSA9IHRoaXMuZWRpdEZvcm0uZ2V0KCdkYXRhJykuZ2V0KGZpZWxkLmlkKS52YWx1ZTtcblxuICAgIHJldHVybiBjbG9uZUZpZWxkO1xuICB9XG5cbiAgcHVibGljIGNhbmNlbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ldmVudFRyaWdnZXIuY2FuX3NhdmVfZHJhZnQpIHtcbiAgICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KENhc2VFZGl0Q29tcG9uZW50Lk9SSUdJTl9RVUVSWV9QQVJBTSkgPT09ICd2aWV3RHJhZnQnKSB7XG4gICAgICAgIHRoaXMuY2FzZUVkaXQuY2FuY2VsbGVkLmVtaXQoeyBzdGF0dXM6IENhc2VFZGl0UGFnZUNvbXBvbmVudC5SRVNVTUVEX0ZPUk1fRElTQ0FSRCB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2FzZUVkaXQuY2FuY2VsbGVkLmVtaXQoeyBzdGF0dXM6IENhc2VFZGl0UGFnZUNvbXBvbmVudC5ORVdfRk9STV9ESVNDQVJEIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhc2VFZGl0LmNhbmNlbGxlZC5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzTGFiZWwoZmllbGQ6IENhc2VGaWVsZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNhc2VGaWVsZFNlcnZpY2UuaXNMYWJlbChmaWVsZCk7XG4gIH1cblxuICBwdWJsaWMgaXNDaGFuZ2VBbGxvd2VkKGZpZWxkOiBDYXNlRmllbGQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuY2FzZUZpZWxkU2VydmljZS5pc1JlYWRPbmx5KGZpZWxkKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGVja1lvdXJBbnN3ZXJGaWVsZHNUb0Rpc3BsYXlFeGlzdHMoKTogYm9vbGVhbiB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5ldmVudFRyaWdnZXIuc2hvd19zdW1tYXJ5IHx8IHRoaXMuZXZlbnRUcmlnZ2VyLnNob3dfc3VtbWFyeSA9PT0gbnVsbCkge1xuICAgICAgZm9yIChjb25zdCBwYWdlIG9mIHRoaXMud2l6YXJkLnBhZ2VzKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChwYWdlLmNhc2VfZmllbGRzICYmIHRoaXMuaXNTaG93bihwYWdlKSkge1xuICAgICAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgcGFnZS5jYXNlX2ZpZWxkcykge1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICAgIGlmICh0aGlzLmNhblNob3dGaWVsZEluQ1lBKGZpZWxkKSkge1xuICAgICAgICAgICAgICAvLyBhdCBsZWFzdCBvbmUgZmllbGQgbmVlZHMgc2hvd2luZ1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZm91bmQgbm8gZmllbGRzIHRvIHNob3cgaW4gQ1lBIHN1bW1hcnkgcGFnZVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWFkT25seVN1bW1hcnlGaWVsZHNUb0Rpc3BsYXlFeGlzdHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzLnNvbWUoZmllbGQgPT4gZmllbGQuc2hvd19zdW1tYXJ5X2NvbnRlbnRfb3B0aW9uID49IDApO1xuICB9XG5cbiAgcHVibGljIHNob3dFdmVudE5vdGVzKCk6IGJvb2xlYW4ge1xuICAgIC8vIERpc3BsYXkgZXZlbnQgbm90ZXMgcmVsYXRlZCBjb250cm9scyBvbmx5IGlmIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0XG4gICAgLy8gMS4gc2hvd19ldmVudF9ub3RlcyBmbGFnIGlzIHNldCB0byB0cnVlXG4gICAgLy8gMi4gcHJvZmlsZSBpcyBub3QgYSBzb2xpY2l0b3JcbiAgICAvLyAzLiBpcyBub3QgYSBjYXNlIGZsYWdzIGpvdXJuZXksIGFzIGl0IHVzZXMgYSBjdXN0b20gY2hlY2sgeW91ciBhbnN3ZXJzIGNvbXBvbmVudFxuICAgIGlmICh0aGlzLmV2ZW50VHJpZ2dlci5zaG93X2V2ZW50X25vdGVzKSB7XG4gICAgICByZXR1cm4gIXRoaXMucHJvZmlsZT8uaXNTb2xpY2l0b3IoKVxuICAgICAgICAmJiAhdGhpcy5jYXNlRWRpdC5pc0Nhc2VGbGFnU3VibWlzc2lvbjtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMYXN0UGFnZVNob3duKCk6IFdpemFyZFBhZ2Uge1xuICAgIGxldCBsYXN0UGFnZTogV2l6YXJkUGFnZTtcbiAgICB0aGlzLndpemFyZC5yZXZlcnNlKCkuZm9yRWFjaChwYWdlID0+IHtcbiAgICAgIGlmICghbGFzdFBhZ2UgJiYgdGhpcy5pc1Nob3duKHBhZ2UpKSB7XG4gICAgICAgIGxhc3RQYWdlID0gcGFnZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBub2luc3BlY3Rpb24gSlNVbnVzZWRBc3NpZ25tZW50XG4gICAgcmV0dXJuIGxhc3RQYWdlO1xuICB9XG5cbiAgcHVibGljIHByZXZpb3VzKCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuaGFzUHJldmlvdXMoKSkge1xuICAgICAgdGhpcy5uYXZpZ2F0ZVRvUGFnZSh0aGlzLmdldExhc3RQYWdlU2hvd24oKS5pZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhc1ByZXZpb3VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZ2V0TGFzdFBhZ2VTaG93bigpO1xuICB9XG5cbiAgcHVibGljIGlzU2hvd24ocGFnZTogV2l6YXJkUGFnZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZmllbGRzVXRpbHNcbiAgICAgIC5tZXJnZUNhc2VGaWVsZHNBbmRGb3JtRmllbGRzKHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzLCB0aGlzLmVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ10udmFsdWUpO1xuICAgIHJldHVybiBwYWdlLnBhcnNlZFNob3dDb25kaXRpb24ubWF0Y2goZmllbGRzKTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5TaG93RmllbGRJbkNZQShmaWVsZDogQ2FzZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZpZWxkLnNob3dfc3VtbWFyeV9jaGFuZ2Vfb3B0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBzb3J0RmllbGRzQnlTaG93U3VtbWFyeUNvbnRlbnQoZmllbGRzOiBDYXNlRmllbGRbXSk6IENhc2VGaWVsZFtdIHtcbiAgICByZXR1cm4gdGhpcy5vcmRlclNlcnZpY2VcbiAgICAgIC5zb3J0KGZpZWxkcywgQ2FzZUVkaXRTdWJtaXRDb21wb25lbnQuU0hPV19TVU1NQVJZX0NPTlRFTlRfQ09NUEFSRV9GVU5DVElPTilcbiAgICAgIC5maWx0ZXIoY2YgPT4gY2Yuc2hvd19zdW1tYXJ5X2NvbnRlbnRfb3B0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2FzZUZpZWxkcygpOiBDYXNlRmllbGRbXSB7XG4gICAgaWYgKHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMpIHtcbiAgICAgIHJldHVybiBGaWVsZHNVdGlscy5nZXRDYXNlRmllbGRzKHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcztcbiAgfVxuXG4gIHB1YmxpYyBnZXRDYXNlSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jYXNlRWRpdC5nZXRDYXNlSWQodGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2FzZVRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzICYmIHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMuc3RhdGUgJiZcbiAgICAgIHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMuc3RhdGUudGl0bGVfZGlzcGxheSA/IHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMuc3RhdGUudGl0bGVfZGlzcGxheSA6ICcnKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDYW5jZWxUZXh0KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuZXZlbnRUcmlnZ2VyLmNhbl9zYXZlX2RyYWZ0KSB7XG4gICAgICByZXR1cm4gJ1JldHVybiB0byBjYXNlIGxpc3QnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ0NhbmNlbCc7XG4gICAgfVxuICB9XG59XG5cbiIsIjxkaXYgKm5nSWY9XCIhY2FzZUVkaXQuaXNFdmVudENvbXBsZXRpb25DaGVja3NSZXF1aXJlZFwiPlxuICA8IS0tIEV2ZW50IHRyaWdnZXIgbmFtZSAtLT5cbiAgPGgxIGNsYXNzPVwiZ292dWstaGVhZGluZy1sXCI+e3tldmVudFRyaWdnZXIubmFtZSB8IHJweFRyYW5zbGF0ZX19PC9oMT5cblxuICA8IS0tQ2FzZSBJRCBvciBUaXRsZSAtLT5cbiAgPGRpdiAqbmdJZj1cImdldENhc2VUaXRsZSgpOyB0aGVuIHRpdGxlQmxvY2s7IGVsc2UgaWRCbG9ja1wiPjwvZGl2PlxuICA8bmctdGVtcGxhdGUgI3RpdGxlQmxvY2s+XG4gICAgPGNjZC1tYXJrZG93biBbY29udGVudF09XCJnZXRDYXNlVGl0bGUoKSB8IGNjZENhc2VUaXRsZTogY29udGV4dEZpZWxkcyA6IGVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIj48L2NjZC1tYXJrZG93bj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICNpZEJsb2NrPlxuICAgIDxoMiAqbmdJZj1cImdldENhc2VJZCgpXCIgY2xhc3M9XCJoZWFkaW5nLWgyXCI+I3t7IGdldENhc2VJZCgpIHwgY2NkQ2FzZVJlZmVyZW5jZSB9fTwvaDI+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPGNjZC1jYXNlLWVkaXQtZ2VuZXJpYy1lcnJvcnMgW2Vycm9yXT1cImNhc2VFZGl0LmVycm9yXCI+PC9jY2QtY2FzZS1lZGl0LWdlbmVyaWMtZXJyb3JzPlxuXG4gIDxjY2QtY2FsbGJhY2stZXJyb3JzIFtjYWxsYmFja0Vycm9yc1N1YmplY3RdPVwiY2FzZUVkaXQuY2FsbGJhY2tFcnJvcnNTdWJqZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2FsbGJhY2tFcnJvcnNDb250ZXh0KT1cImNhbGxiYWNrRXJyb3JzTm90aWZ5KCRldmVudClcIj48L2NjZC1jYWxsYmFjay1lcnJvcnM+XG5cbiAgPGZvcm0gY2xhc3M9XCJjaGVjay15b3VyLWFuc3dlcnNcIiBbZm9ybUdyb3VwXT1cImVkaXRGb3JtXCIgKHN1Ym1pdCk9XCJzdWJtaXQoKVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaGVja1lvdXJBbnN3ZXJGaWVsZHNUb0Rpc3BsYXlFeGlzdHMoKVwiPlxuXG4gICAgICA8aDIgY2xhc3M9XCJoZWFkaW5nLWgyXCI+e3twYWdlVGl0bGUgfCBycHhUcmFuc2xhdGUgfX08L2gyPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LTE2XCIgKm5nSWY9XCIhY2FzZUVkaXQuaXNDYXNlRmxhZ1N1Ym1pc3Npb25cIj57eydDaGVjayB0aGUgaW5mb3JtYXRpb24gYmVsb3cgY2FyZWZ1bGx5LicgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj5cblxuICAgICAgPHRhYmxlIGNsYXNzPVwiZm9ybS10YWJsZVwiIGFyaWEtZGVzY3JpYmVkYnk9XCJjaGVjayB5b3VyIGFuc3dlcnMgdGFibGVcIj5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwYWdlIG9mIHdpemFyZC5wYWdlc1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1Nob3duKHBhZ2UpXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBwYWdlXG4gICAgICAgICAgICB8IGNjZFBhZ2VGaWVsZHM6IGVkaXRGb3JtXG4gICAgICAgICAgICB8IGNjZFJlYWRGaWVsZHNGaWx0ZXI6IGZhbHNlIDp1bmRlZmluZWQgOnRydWUgOmFsbEZpZWxkc1ZhbHVlc1xuICAgICAgICAgICAgfCBjY2RDWUFQYWdlTGFiZWxGaWx0ZXJcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhblNob3dGaWVsZEluQ1lBKGZpZWxkKVwiPlxuICAgICAgICAgICAgICAgIDx0ciBjY2RMYWJlbFN1YnN0aXR1dG9yIFtjYXNlRmllbGRdPVwiZmllbGRcIiBbaGlkZGVuXT1cImZpZWxkLmhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFtjb250ZXh0RmllbGRzXT1cImNvbnRleHRGaWVsZHNcIj5cbiAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cIiFpc0xhYmVsKGZpZWxkKSAmJiAhY2FzZUVkaXQuaXNDYXNlRmxhZ1N1Ym1pc3Npb25cIiBjbGFzcz1cInZhbGlnbi10b3AgY2FzZS1maWVsZC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtMTZcIj57e2ZpZWxkLmxhYmVsIHwgcnB4VHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZm9ybS1jZWxsIGNhc2UtZmllbGQtY29udGVudFwiIFthdHRyLmNvbHNwYW5dPVwiaXNMYWJlbChmaWVsZCkgPyAnMicgOiAnMSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGNjZC1maWVsZC1yZWFkXG4gICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddXCIgW3RvcExldmVsRm9ybUdyb3VwXT1cImVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIlxuICAgICAgICAgICAgICAgICAgICAgIFtjYXNlRmllbGRdPVwic3VtbWFyeUNhc2VGaWVsZChmaWVsZClcIiBbY29udGV4dF09XCJwYWxldHRlQ29udGV4dFwiIFtjYXNlRmllbGRzXT1cImNvbnRleHRGaWVsZHNcIj48L2NjZC1maWVsZC1yZWFkPlxuICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY2FzZUVkaXQuaXNDYXNlRmxhZ1N1Ym1pc3Npb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidmFsaWduLXRvcCBjaGVjay15b3VyLWFuc3dlcnNfX2NoYW5nZSBjYXNlLWZpZWxkLWNoYW5nZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwiaXNDaGFuZ2VBbGxvd2VkKGZpZWxkKVwiIChjbGljayk9XCJuYXZpZ2F0ZVRvUGFnZShwYWdlLmlkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtMTZcIiBhdHRyLmFyaWEtbGFiZWw9XCJ7eydDaGFuZ2UnIHwgcnB4VHJhbnNsYXRlfX0ge3sgZmllbGQubGFiZWwgfCBycHhUcmFuc2xhdGUgfX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3snQ2hhbmdlJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZWFkT25seVN1bW1hcnlGaWVsZHNUb0Rpc3BsYXlFeGlzdHMoKVwiPlxuXG4gICAgICA8dGFibGUgY2xhc3M9XCJzdW1tYXJ5LWZpZWxkc1wiIGFyaWEtZGVzY3JpYmVkYnk9XCJzdW1tYXJ5IGZpZWxkcyB0YWJsZVwiPlxuICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2Ygc2hvd1N1bW1hcnlGaWVsZHNcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiIShmaWVsZCB8IGNjZElzQ29tcG91bmQpXCI+XG4gICAgICAgICAgICAgICAgPHRyICpuZ1N3aXRjaENhc2U9XCJ0cnVlXCIgY2NkTGFiZWxTdWJzdGl0dXRvciBbY2FzZUZpZWxkXT1cImZpZWxkXCIgW2Zvcm1Hcm91cF09XCJlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddXCIgW2NvbnRleHRGaWVsZHNdPVwiY29udGV4dEZpZWxkc1wiPlxuICAgICAgICAgICAgICAgICAgPHRoIGlkPVwic3VtbWFyeS1maWVsZC1sYWJlbFwiPnt7ZmllbGQubGFiZWx9fTwvdGg+XG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJmb3JtLWNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGNjZC1maWVsZC1yZWFkIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFtjYXNlRmllbGRdPVwic3VtbWFyeUNhc2VGaWVsZChmaWVsZClcIj48L2NjZC1maWVsZC1yZWFkPlxuICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDx0ciAqbmdTd2l0Y2hDYXNlPVwiZmFsc2VcIiBjbGFzcz1cImNvbXBvdW5kLWZpZWxkXCIgY2NkTGFiZWxTdWJzdGl0dXRvciBbY2FzZUZpZWxkXT1cImZpZWxkXCIgW2Zvcm1Hcm91cF09XCJlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddXCIgW2NvbnRleHRGaWVsZHNdPVwiY29udGV4dEZpZWxkc1wiPlxuICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxjY2QtZmllbGQtcmVhZCBbZm9ybUdyb3VwXT1cImVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIiBbY2FzZUZpZWxkXT1cInN1bW1hcnlDYXNlRmllbGQoZmllbGQpXCIgW2Nhc2VGaWVsZHNdPVwiY29udGV4dEZpZWxkc1wiPjwvY2NkLWZpZWxkLXJlYWQ+XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RXZlbnROb3RlcygpXCI+XG4gICAgICA8ZmllbGRzZXQgaWQ9XCJmaWVsZHNldC1ldmVudFwiIGZvcm1Hcm91cE5hbWU9XCJldmVudFwiPlxuICAgICAgICA8bGVnZW5kIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIj48L2xlZ2VuZD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwiZmllbGQtdHJpZ2dlci1zdW1tYXJ5XCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+XG4gICAgICAgICAgICBFdmVudCBzdW1tYXJ5IChvcHRpb25hbClcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1oaW50XCI+QSBmZXcgd29yZHMgZGVzY3JpYmluZyB0aGUgcHVycG9zZSBvZiB0aGUgZXZlbnQuPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJmaWVsZC10cmlnZ2VyLXN1bW1hcnlcIiBjbGFzcz1cImZvcm0tY29udHJvbCBib3R0b20tMzAgd2lkdGgtNTBcIiBmb3JtQ29udHJvbE5hbWU9XCJzdW1tYXJ5XCIgbWF4bGVuZ3RoPVwiMTAyNFwiPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwiZmllbGQtdHJpZ2dlci1kZXNjcmlwdGlvblwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkV2ZW50IGRlc2NyaXB0aW9uIChvcHRpb25hbCk8L2xhYmVsPlxuICAgICAgICAgIDx0ZXh0YXJlYSBpZD1cImZpZWxkLXRyaWdnZXItZGVzY3JpcHRpb25cIiBjbGFzcz1cImZvcm0tY29udHJvbCBib3R0b20tMzAgd2lkdGgtNTBcIiBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjY1NTM2XCI+PC90ZXh0YXJlYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2ZpZWxkc2V0PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGZvcm0tZ3JvdXAtcmVsYXRlZFwiPlxuICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFjYXNlRWRpdC5pc0Nhc2VGbGFnU3VibWlzc2lvblwiIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cIiFoYXNQcmV2aW91cygpIHx8IGNhc2VFZGl0LmlzU3VibWl0dGluZ1wiIChjbGljayk9XCJwcmV2aW91cygpXCI+XG4gICAgICAgIHt7J1ByZXZpb3VzJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCIgY2xhc3M9XCJidXR0b25cIj5cbiAgICAgICAge3t0cmlnZ2VyVGV4dCB8IHJweFRyYW5zbGF0ZX19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8cCBjbGFzcz1cImNhbmNlbFwiPlxuICAgICAgPGEgKGNsaWNrKT1cImNhbmNlbCgpXCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIFtjbGFzcy5kaXNhYmxlZF09XCJjYXNlRWRpdC5pc1N1Ym1pdHRpbmdcIj57e2dldENhbmNlbFRleHQoKSB8IHJweFRyYW5zbGF0ZX19PC9hPlxuICAgIDwvcD5cbiAgPC9mb3JtPlxuPC9kaXY+XG48Y2NkLWNhc2UtZXZlbnQtY29tcGxldGlvbiAqbmdJZj1cImNhc2VFZGl0LmlzRXZlbnRDb21wbGV0aW9uQ2hlY2tzUmVxdWlyZWRcIlxuICBbZXZlbnRDb21wbGV0aW9uUGFyYW1zXT1cImNhc2VFZGl0LmV2ZW50Q29tcGxldGlvblBhcmFtc1wiXG4gIChldmVudENhbkJlQ29tcGxldGVkKT1cIm9uRXZlbnRDYW5CZUNvbXBsZXRlZCgkZXZlbnQpXCI+XG48L2NjZC1jYXNlLWV2ZW50LWNvbXBsZXRpb24+XG4iXX0=
|
|
541
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1lZGl0LXN1Ym1pdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvY2FzZS1lZGl0b3IvY2FzZS1lZGl0LXN1Ym1pdC9jYXNlLWVkaXQtc3VibWl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLWVkaXRvci9jYXNlLWVkaXQtc3VibWl0L2Nhc2UtZWRpdC1zdWJtaXQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJakQsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsWUFBWSxFQUNaLGVBQWUsR0FDaEIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsdUJBQXVCLEVBQXlCLE1BQU0sYUFBYSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7OztJQ1pwRSxzQkFBaUU7OztJQUUvRCxtQ0FBa0g7Ozs7SUFBcEcsNkhBQW9GOzs7SUFHbEcsOEJBQTJDO0lBQUEsWUFBcUM7O0lBQUEsaUJBQUs7OztJQUExQyxlQUFxQztJQUFyQyx5RUFBcUM7OztJQUFoRiwyRkFBcUY7OztJQUFoRix5Q0FBaUI7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LENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4RyxDQUFDO0lBRU0sYUFBYTtRQUNsQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFO1lBQ3BDLE9BQU8scUJBQXFCLENBQUM7U0FDOUI7YUFBTTtZQUNMLE9BQU8sUUFBUSxDQUFDO1NBQ2pCO0lBQ0gsQ0FBQzs7QUEzT3NCLDZEQUFxQyxHQUFHLENBQUMsQ0FBWSxFQUFFLENBQVksRUFBVSxFQUFFO0lBQ3BHLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQywyQkFBMkIsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLDJCQUEyQixDQUFDO0lBQ3hGLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQywyQkFBMkIsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLDJCQUEyQixDQUFDO0lBRXhGLElBQUksQ0FBQyxVQUFVLEVBQUU7UUFDZixPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUM1QjtJQUVELElBQUksQ0FBQyxVQUFVLEVBQUU7UUFDZixPQUFPLENBQUMsQ0FBQyxDQUFDO0tBQ1g7SUFDRCxPQUFPLENBQUMsQ0FBQywyQkFBMkIsR0FBRyxDQUFDLENBQUMsMkJBQTJCLENBQUM7QUFDdkUsQ0FBQyxDQUFBOzhGQTNCVSx1QkFBdUI7MEVBQXZCLHVCQUF1QjtRQ3pCcEMsMEVBOEdNO1FBQ04sb0hBRzRCOztRQWxIdEIsb0VBQStDO1FBK0d6QixlQUE4QztRQUE5QyxtRUFBOEM7O3VGRHRGN0QsdUJBQXVCO2NBTG5DLFNBQVM7MkJBQ0Usc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDYXNlRXZlbnRUcmlnZ2VyLCBDYXNlRmllbGQsIFByb2ZpbGUgfSBmcm9tICcuLi8uLi8uLi9kb21haW4nO1xuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi93b3JrLWFsbG9jYXRpb24vVGFzayc7XG5pbXBvcnQge1xuICBDYXNlRmllbGRTZXJ2aWNlLFxuICBGaWVsZHNVdGlscyxcbiAgT3JkZXJTZXJ2aWNlLFxuICBQcm9maWxlTm90aWZpZXIsXG59IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IENhbGxiYWNrRXJyb3JzQ29tcG9uZW50LCBDYWxsYmFja0Vycm9yc0NvbnRleHQgfSBmcm9tICcuLi8uLi9lcnJvcic7XG5pbXBvcnQgeyBQYWxldHRlQ29udGV4dCB9IGZyb20gJy4uLy4uL3BhbGV0dGUnO1xuaW1wb3J0IHsgQ2FzZUVkaXRQYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vY2FzZS1lZGl0LXBhZ2UvY2FzZS1lZGl0LXBhZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IENhc2VFZGl0Q29tcG9uZW50IH0gZnJvbSAnLi4vY2FzZS1lZGl0L2Nhc2UtZWRpdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgV2l6YXJkLCBXaXphcmRQYWdlIH0gZnJvbSAnLi4vZG9tYWluJztcbmltcG9ydCB7IENhc2VFZGl0U3VibWl0VGl0bGVzIH0gZnJvbSAnLi9jYXNlLWVkaXQtc3VibWl0LXRpdGxlcy5lbnVtJztcblxuLy8gQGR5bmFtaWNcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1jYXNlLWVkaXQtc3VibWl0JyxcbiAgdGVtcGxhdGVVcmw6ICdjYXNlLWVkaXQtc3VibWl0Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi4vY2FzZS1lZGl0LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDYXNlRWRpdFN1Ym1pdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHVibGljIGV2ZW50VHJpZ2dlcjogQ2FzZUV2ZW50VHJpZ2dlcjtcbiAgcHVibGljIGVkaXRGb3JtOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyB0cmlnZ2VyVGV4dDogc3RyaW5nO1xuICBwdWJsaWMgd2l6YXJkOiBXaXphcmQ7XG4gIHB1YmxpYyBwcm9maWxlOiBQcm9maWxlO1xuICBwdWJsaWMgc2hvd1N1bW1hcnlGaWVsZHM6IENhc2VGaWVsZFtdO1xuICBwdWJsaWMgcGFsZXR0ZUNvbnRleHQ6IFBhbGV0dGVDb250ZXh0ID0gUGFsZXR0ZUNvbnRleHQuQ0hFQ0tfWU9VUl9BTlNXRVI7XG4gIHB1YmxpYyBwcm9maWxlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBjb250ZXh0RmllbGRzOiBDYXNlRmllbGRbXTtcbiAgcHVibGljIHRhc2s6IFRhc2s7XG4gIHB1YmxpYyBwYWdlVGl0bGU6IHN0cmluZztcbiAgcHVibGljIG1ldGFkYXRhRmllbGRzT2JqZWN0OiBvYmplY3Q7XG4gIHB1YmxpYyBhbGxGaWVsZHNWYWx1ZXM6IGFueTtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNIT1dfU1VNTUFSWV9DT05URU5UX0NPTVBBUkVfRlVOQ1RJT04gPSAoYTogQ2FzZUZpZWxkLCBiOiBDYXNlRmllbGQpOiBudW1iZXIgPT4ge1xuICAgIGNvbnN0IGFDYXNlRmllbGQgPSBhLnNob3dfc3VtbWFyeV9jb250ZW50X29wdGlvbiA9PT0gMCB8fCBhLnNob3dfc3VtbWFyeV9jb250ZW50X29wdGlvbjtcbiAgICBjb25zdCBiQ2FzZUZpZWxkID0gYi5zaG93X3N1bW1hcnlfY29udGVudF9vcHRpb24gPT09IDAgfHwgYi5zaG93X3N1bW1hcnlfY29udGVudF9vcHRpb247XG5cbiAgICBpZiAoIWFDYXNlRmllbGQpIHtcbiAgICAgIHJldHVybiAhYkNhc2VGaWVsZCA/IDAgOiAxO1xuICAgIH1cblxuICAgIGlmICghYkNhc2VGaWVsZCkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICByZXR1cm4gYS5zaG93X3N1bW1hcnlfY29udGVudF9vcHRpb24gLSBiLnNob3dfc3VtbWFyeV9jb250ZW50X29wdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAvLyBFVUktMzQ1Mi5cbiAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNoZWNrIHRoZSB2YWxpZGl0eSBvZiB0aGUgZWRpdEZvcm0gYXMgaXQgaXMgcmVhZG9ubHkuXG4gICAgLy8gVGhpcyB3YXMgY2F1c2luZyBpc3N1ZXMgd2l0aCBoaWRkZW4gZmllbGRzIHRoYXQgYXJlbid0IHdhbnRlZCBidXQgaGF2ZVxuICAgIC8vIG5vdCBiZWVuIGRpc2FibGVkLlxuICAgIHJldHVybiB0aGlzLmNhc2VFZGl0LmlzU3VibWl0dGluZyB8fCB0aGlzLmhhc0Vycm9ycztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBjYXNlRWRpdDogQ2FzZUVkaXRDb21wb25lbnQsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmaWVsZHNVdGlsczogRmllbGRzVXRpbHMsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXNlRmllbGRTZXJ2aWNlOiBDYXNlRmllbGRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3JkZXJTZXJ2aWNlOiBPcmRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9maWxlTm90aWZpZXI6IFByb2ZpbGVOb3RpZmllcixcbiAgKSB7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5wcm9maWxlU3Vic2NyaXB0aW9uID0gdGhpcy5wcm9maWxlTm90aWZpZXIucHJvZmlsZS5zdWJzY3JpYmUoXyA9PiB0aGlzLnByb2ZpbGUgPSBfKTtcbiAgICB0aGlzLmV2ZW50VHJpZ2dlciA9IHRoaXMuY2FzZUVkaXQuZXZlbnRUcmlnZ2VyO1xuICAgIHRoaXMudHJpZ2dlclRleHQgPSB0aGlzLmV2ZW50VHJpZ2dlci5lbmRfYnV0dG9uX2xhYmVsIHx8IENhbGxiYWNrRXJyb3JzQ29tcG9uZW50LlRSSUdHRVJfVEVYVF9TVUJNSVQ7XG4gICAgdGhpcy5lZGl0Rm9ybSA9IHRoaXMuY2FzZUVkaXQuZm9ybTtcbiAgICB0aGlzLndpemFyZCA9IHRoaXMuY2FzZUVkaXQud2l6YXJkO1xuICAgIHRoaXMuc2hvd1N1bW1hcnlGaWVsZHMgPSB0aGlzLnNvcnRGaWVsZHNCeVNob3dTdW1tYXJ5Q29udGVudCh0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcyk7XG4gICAgdGhpcy5jYXNlRWRpdC5pc1N1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmNvbnRleHRGaWVsZHMgPSB0aGlzLmdldENhc2VGaWVsZHMoKTtcbiAgICB0aGlzLm1ldGFkYXRhRmllbGRzT2JqZWN0ID0gdGhpcy5jYXNlRWRpdD8uY2FzZURldGFpbHM/Lm1ldGFkYXRhRmllbGRzPy5cbiAgICAgIHJlZHVjZSgobywga2V5KSA9PiBPYmplY3QuYXNzaWduKG8sIHtba2V5LmlkXToga2V5LnZhbHVlfSksIHt9KTtcbiAgICB0aGlzLmFsbEZpZWxkc1ZhbHVlcyA9IE9iamVjdC5hc3NpZ24odGhpcy5tZXRhZGF0YUZpZWxkc09iamVjdCA/IHRoaXMubWV0YWRhdGFGaWVsZHNPYmplY3QgOiB7fSwgdGhpcy5lZGl0Rm9ybS5nZXRSYXdWYWx1ZSgpLmRhdGEpO1xuICAgIC8vIEluZGljYXRlcyBpZiB0aGUgc3VibWlzc2lvbiBpcyBmb3IgYSBDYXNlIEZsYWcsIGFzIG9wcG9zZWQgdG8gYSBcInJlZ3VsYXJcIiBmb3JtIHN1Ym1pc3Npb24sIGJ5IHRoZSBwcmVzZW5jZSBvZlxuICAgIC8vIGEgRmxhZ0xhdW5jaGVyIGZpZWxkIGluIHRoZSBldmVudCB0cmlnZ2VyXG4gICAgdGhpcy5jYXNlRWRpdC5pc0Nhc2VGbGFnU3VibWlzc2lvbiA9XG4gICAgICB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcy5zb21lKGNhc2VGaWVsZCA9PiBGaWVsZHNVdGlscy5pc0Nhc2VGaWVsZE9mVHlwZShjYXNlRmllbGQsIFsnRmxhZ0xhdW5jaGVyJ10pKTtcbiAgICB0aGlzLmNhc2VFZGl0LmlzTGlua2VkQ2FzZXNTdWJtaXNzaW9uID1cbiAgICAgIHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzLnNvbWUoY2FzZUZpZWxkID0+IEZpZWxkc1V0aWxzLmlzQ2FzZUZpZWxkT2ZUeXBlKGNhc2VGaWVsZCwgWydDb21wb25lbnRMYXVuY2hlciddKSk7XG4gICAgdGhpcy5wYWdlVGl0bGUgPSB0aGlzLmdldFBhZ2VUaXRsZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMucHJvZmlsZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5wcm9maWxlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN1Ym1pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhc2VFZGl0LnN1Ym1pdEZvcm0oe1xuICAgICAgZXZlbnRUcmlnZ2VyOiB0aGlzLmV2ZW50VHJpZ2dlcixcbiAgICAgIGZvcm06IHRoaXMuZWRpdEZvcm0sXG4gICAgICBzdWJtaXQ6IHRoaXMuY2FzZUVkaXQuc3VibWl0LFxuICAgICAgY2FzZURldGFpbHM6IHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25FdmVudENhbkJlQ29tcGxldGVkKGV2ZW50Q2FuQmVDb21wbGV0ZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmNhc2VFZGl0Lm9uRXZlbnRDYW5CZUNvbXBsZXRlZCh7XG4gICAgICBldmVudFRyaWdnZXI6IHRoaXMuZXZlbnRUcmlnZ2VyLFxuICAgICAgZXZlbnRDYW5CZUNvbXBsZXRlZCxcbiAgICAgIGNhc2VEZXRhaWxzOiB0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzLFxuICAgICAgZm9ybTogdGhpcy5lZGl0Rm9ybSxcbiAgICAgIHN1Ym1pdDogdGhpcy5jYXNlRWRpdC5zdWJtaXQsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFBhZ2VUaXRsZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNhc2VGbGFnRmllbGQgPSB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcy5maW5kKGNhc2VGaWVsZCA9PiBGaWVsZHNVdGlscy5pc0Nhc2VGaWVsZE9mVHlwZShjYXNlRmllbGQsIFsnRmxhZ0xhdW5jaGVyJ10pKTtcbiAgICBpZiAoY2FzZUZsYWdGaWVsZCkge1xuICAgICAgY29uc3QgaXNDYXNlRmxhZ0V4dGVybmFsTW9kZSA9IGNhc2VGbGFnRmllbGQuZGlzcGxheV9jb250ZXh0X3BhcmFtZXRlciA9PT0gJyNBUkdVTUVOVChVUERBVEUsRVhURVJOQUwpJyB8fFxuICAgICAgICBjYXNlRmxhZ0ZpZWxkLmRpc3BsYXlfY29udGV4dF9wYXJhbWV0ZXIgPT09ICcjQVJHVU1FTlQoQ1JFQVRFLEVYVEVSTkFMKSc7XG4gICAgICByZXR1cm4gaXNDYXNlRmxhZ0V4dGVybmFsTW9kZVxuICAgICAgICA/IENhc2VFZGl0U3VibWl0VGl0bGVzLlJFVklFV19TVVBQT1JUX1JFUVVFU1RcbiAgICAgICAgOiBDYXNlRWRpdFN1Ym1pdFRpdGxlcy5SRVZJRVdfRkxBR19ERVRBSUxTO1xuICAgIH1cbiAgICByZXR1cm4gQ2FzZUVkaXRTdWJtaXRUaXRsZXMuQ0hFQ0tfWU9VUl9BTlNXRVJTO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaGFzRXJyb3JzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNhc2VFZGl0Py5lcnJvcj8uY2FsbGJhY2tFcnJvcnM/Lmxlbmd0aDtcbiAgfVxuXG4gIHB1YmxpYyBuYXZpZ2F0ZVRvUGFnZShwYWdlSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY2FzZUVkaXQubmF2aWdhdGVUb1BhZ2UocGFnZUlkKTtcbiAgfVxuXG4gIHB1YmxpYyBjYWxsYmFja0Vycm9yc05vdGlmeShlcnJvckNvbnRleHQ6IENhbGxiYWNrRXJyb3JzQ29udGV4dCk6IHZvaWQge1xuICAgIHRoaXMuY2FzZUVkaXQuaWdub3JlV2FybmluZyA9IGVycm9yQ29udGV4dC5pZ25vcmVXYXJuaW5nO1xuICAgIHRoaXMudHJpZ2dlclRleHQgPSBlcnJvckNvbnRleHQudHJpZ2dlclRleHQ7XG4gIH1cblxuICBwdWJsaWMgc3VtbWFyeUNhc2VGaWVsZChmaWVsZDogQ2FzZUZpZWxkKTogQ2FzZUZpZWxkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChudWxsID09PSB0aGlzLmVkaXRGb3JtLmdldCgnZGF0YScpLmdldChmaWVsZC5pZCkpIHtcbiAgICAgIC8vIElmIG5vdCBpbiBmb3JtLCByZXR1cm4gZmllbGQgaXRzZWxmXG4gICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgY29uc3QgY2xvbmVGaWVsZDogQ2FzZUZpZWxkID0gdGhpcy5maWVsZHNVdGlscy5jbG9uZUNhc2VGaWVsZChmaWVsZCk7XG4gICAgY2xvbmVGaWVsZC52YWx1ZSA9IHRoaXMuZWRpdEZvcm0uZ2V0KCdkYXRhJykuZ2V0KGZpZWxkLmlkKS52YWx1ZTtcblxuICAgIHJldHVybiBjbG9uZUZpZWxkO1xuICB9XG5cbiAgcHVibGljIGNhbmNlbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ldmVudFRyaWdnZXIuY2FuX3NhdmVfZHJhZnQpIHtcbiAgICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KENhc2VFZGl0Q29tcG9uZW50Lk9SSUdJTl9RVUVSWV9QQVJBTSkgPT09ICd2aWV3RHJhZnQnKSB7XG4gICAgICAgIHRoaXMuY2FzZUVkaXQuY2FuY2VsbGVkLmVtaXQoeyBzdGF0dXM6IENhc2VFZGl0UGFnZUNvbXBvbmVudC5SRVNVTUVEX0ZPUk1fRElTQ0FSRCB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2FzZUVkaXQuY2FuY2VsbGVkLmVtaXQoeyBzdGF0dXM6IENhc2VFZGl0UGFnZUNvbXBvbmVudC5ORVdfRk9STV9ESVNDQVJEIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhc2VFZGl0LmNhbmNlbGxlZC5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzTGFiZWwoZmllbGQ6IENhc2VGaWVsZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNhc2VGaWVsZFNlcnZpY2UuaXNMYWJlbChmaWVsZCk7XG4gIH1cblxuICBwdWJsaWMgaXNDaGFuZ2VBbGxvd2VkKGZpZWxkOiBDYXNlRmllbGQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuY2FzZUZpZWxkU2VydmljZS5pc1JlYWRPbmx5KGZpZWxkKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGVja1lvdXJBbnN3ZXJGaWVsZHNUb0Rpc3BsYXlFeGlzdHMoKTogYm9vbGVhbiB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5ldmVudFRyaWdnZXIuc2hvd19zdW1tYXJ5IHx8IHRoaXMuZXZlbnRUcmlnZ2VyLnNob3dfc3VtbWFyeSA9PT0gbnVsbCkge1xuICAgICAgZm9yIChjb25zdCBwYWdlIG9mIHRoaXMud2l6YXJkLnBhZ2VzKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChwYWdlLmNhc2VfZmllbGRzICYmIHRoaXMuaXNTaG93bihwYWdlKSkge1xuICAgICAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgcGFnZS5jYXNlX2ZpZWxkcykge1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICAgIGlmICh0aGlzLmNhblNob3dGaWVsZEluQ1lBKGZpZWxkKSkge1xuICAgICAgICAgICAgICAvLyBhdCBsZWFzdCBvbmUgZmllbGQgbmVlZHMgc2hvd2luZ1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZm91bmQgbm8gZmllbGRzIHRvIHNob3cgaW4gQ1lBIHN1bW1hcnkgcGFnZVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWFkT25seVN1bW1hcnlGaWVsZHNUb0Rpc3BsYXlFeGlzdHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzLnNvbWUoZmllbGQgPT4gZmllbGQuc2hvd19zdW1tYXJ5X2NvbnRlbnRfb3B0aW9uID49IDApO1xuICB9XG5cbiAgcHVibGljIHNob3dFdmVudE5vdGVzKCk6IGJvb2xlYW4ge1xuICAgIC8vIERpc3BsYXkgZXZlbnQgbm90ZXMgcmVsYXRlZCBjb250cm9scyBvbmx5IGlmIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0XG4gICAgLy8gMS4gc2hvd19ldmVudF9ub3RlcyBmbGFnIGlzIHNldCB0byB0cnVlXG4gICAgLy8gMi4gcHJvZmlsZSBpcyBub3QgYSBzb2xpY2l0b3JcbiAgICAvLyAzLiBpcyBub3QgYSBjYXNlIGZsYWdzIGpvdXJuZXksIGFzIGl0IHVzZXMgYSBjdXN0b20gY2hlY2sgeW91ciBhbnN3ZXJzIGNvbXBvbmVudFxuICAgIGlmICh0aGlzLmV2ZW50VHJpZ2dlci5zaG93X2V2ZW50X25vdGVzKSB7XG4gICAgICByZXR1cm4gIXRoaXMucHJvZmlsZT8uaXNTb2xpY2l0b3IoKVxuICAgICAgICAmJiAhdGhpcy5jYXNlRWRpdC5pc0Nhc2VGbGFnU3VibWlzc2lvbjtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMYXN0UGFnZVNob3duKCk6IFdpemFyZFBhZ2Uge1xuICAgIGxldCBsYXN0UGFnZTogV2l6YXJkUGFnZTtcbiAgICB0aGlzLndpemFyZC5yZXZlcnNlKCkuZm9yRWFjaChwYWdlID0+IHtcbiAgICAgIGlmICghbGFzdFBhZ2UgJiYgdGhpcy5pc1Nob3duKHBhZ2UpKSB7XG4gICAgICAgIGxhc3RQYWdlID0gcGFnZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBub2luc3BlY3Rpb24gSlNVbnVzZWRBc3NpZ25tZW50XG4gICAgcmV0dXJuIGxhc3RQYWdlO1xuICB9XG5cbiAgcHVibGljIHByZXZpb3VzKCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuaGFzUHJldmlvdXMoKSkge1xuICAgICAgdGhpcy5uYXZpZ2F0ZVRvUGFnZSh0aGlzLmdldExhc3RQYWdlU2hvd24oKS5pZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhc1ByZXZpb3VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZ2V0TGFzdFBhZ2VTaG93bigpO1xuICB9XG5cbiAgcHVibGljIGlzU2hvd24ocGFnZTogV2l6YXJkUGFnZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZmllbGRzVXRpbHNcbiAgICAgIC5tZXJnZUNhc2VGaWVsZHNBbmRGb3JtRmllbGRzKHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzLCB0aGlzLmVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ10udmFsdWUpO1xuICAgIHJldHVybiBwYWdlLnBhcnNlZFNob3dDb25kaXRpb24ubWF0Y2goZmllbGRzKTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5TaG93RmllbGRJbkNZQShmaWVsZDogQ2FzZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZpZWxkLnNob3dfc3VtbWFyeV9jaGFuZ2Vfb3B0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBzb3J0RmllbGRzQnlTaG93U3VtbWFyeUNvbnRlbnQoZmllbGRzOiBDYXNlRmllbGRbXSk6IENhc2VGaWVsZFtdIHtcbiAgICByZXR1cm4gdGhpcy5vcmRlclNlcnZpY2VcbiAgICAgIC5zb3J0KGZpZWxkcywgQ2FzZUVkaXRTdWJtaXRDb21wb25lbnQuU0hPV19TVU1NQVJZX0NPTlRFTlRfQ09NUEFSRV9GVU5DVElPTilcbiAgICAgIC5maWx0ZXIoY2YgPT4gY2Yuc2hvd19zdW1tYXJ5X2NvbnRlbnRfb3B0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2FzZUZpZWxkcygpOiBDYXNlRmllbGRbXSB7XG4gICAgaWYgKHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMpIHtcbiAgICAgIHJldHVybiBGaWVsZHNVdGlscy5nZXRDYXNlRmllbGRzKHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcztcbiAgfVxuXG4gIHB1YmxpYyBnZXRDYXNlSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jYXNlRWRpdC5nZXRDYXNlSWQodGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2FzZVRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzICYmIHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMuc3RhdGUgJiZcbiAgICAgIHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMuc3RhdGUudGl0bGVfZGlzcGxheSA/IHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMuc3RhdGUudGl0bGVfZGlzcGxheSA6ICcnKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDYW5jZWxUZXh0KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuZXZlbnRUcmlnZ2VyLmNhbl9zYXZlX2RyYWZ0KSB7XG4gICAgICByZXR1cm4gJ1JldHVybiB0byBjYXNlIGxpc3QnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ0NhbmNlbCc7XG4gICAgfVxuICB9XG59XG5cbiIsIjxkaXYgKm5nSWY9XCIhY2FzZUVkaXQuaXNFdmVudENvbXBsZXRpb25DaGVja3NSZXF1aXJlZFwiPlxuICA8IS0tIEV2ZW50IHRyaWdnZXIgbmFtZSAtLT5cbiAgPGgxIGNsYXNzPVwiZ292dWstaGVhZGluZy1sXCI+e3tldmVudFRyaWdnZXIubmFtZSB8IHJweFRyYW5zbGF0ZX19PC9oMT5cblxuICA8IS0tQ2FzZSBJRCBvciBUaXRsZSAtLT5cbiAgPGRpdiAqbmdJZj1cImdldENhc2VUaXRsZSgpOyB0aGVuIHRpdGxlQmxvY2s7IGVsc2UgaWRCbG9ja1wiPjwvZGl2PlxuICA8bmctdGVtcGxhdGUgI3RpdGxlQmxvY2s+XG4gICAgPGNjZC1tYXJrZG93biBbY29udGVudF09XCJnZXRDYXNlVGl0bGUoKSB8IGNjZENhc2VUaXRsZTogY29udGV4dEZpZWxkcyA6IGVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIj48L2NjZC1tYXJrZG93bj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICNpZEJsb2NrPlxuICAgIDxoMiAqbmdJZj1cImdldENhc2VJZCgpXCIgY2xhc3M9XCJoZWFkaW5nLWgyXCI+I3t7IGdldENhc2VJZCgpIHwgY2NkQ2FzZVJlZmVyZW5jZSB9fTwvaDI+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPGNjZC1jYXNlLWVkaXQtZ2VuZXJpYy1lcnJvcnMgW2Vycm9yXT1cImNhc2VFZGl0LmVycm9yXCI+PC9jY2QtY2FzZS1lZGl0LWdlbmVyaWMtZXJyb3JzPlxuXG4gIDxjY2QtY2FsbGJhY2stZXJyb3JzIFtjYWxsYmFja0Vycm9yc1N1YmplY3RdPVwiY2FzZUVkaXQuY2FsbGJhY2tFcnJvcnNTdWJqZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2FsbGJhY2tFcnJvcnNDb250ZXh0KT1cImNhbGxiYWNrRXJyb3JzTm90aWZ5KCRldmVudClcIj48L2NjZC1jYWxsYmFjay1lcnJvcnM+XG5cbiAgPGZvcm0gY2xhc3M9XCJjaGVjay15b3VyLWFuc3dlcnNcIiBbZm9ybUdyb3VwXT1cImVkaXRGb3JtXCIgKHN1Ym1pdCk9XCJzdWJtaXQoKVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaGVja1lvdXJBbnN3ZXJGaWVsZHNUb0Rpc3BsYXlFeGlzdHMoKVwiPlxuXG4gICAgICA8aDIgY2xhc3M9XCJoZWFkaW5nLWgyXCI+e3twYWdlVGl0bGUgfCBycHhUcmFuc2xhdGUgfX08L2gyPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LTE2XCIgKm5nSWY9XCIhY2FzZUVkaXQuaXNDYXNlRmxhZ1N1Ym1pc3Npb25cIj57eydDaGVjayB0aGUgaW5mb3JtYXRpb24gYmVsb3cgY2FyZWZ1bGx5LicgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj5cblxuICAgICAgPHRhYmxlIGNsYXNzPVwiZm9ybS10YWJsZVwiIGFyaWEtZGVzY3JpYmVkYnk9XCJjaGVjayB5b3VyIGFuc3dlcnMgdGFibGVcIj5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwYWdlIG9mIHdpemFyZC5wYWdlc1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1Nob3duKHBhZ2UpXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBwYWdlXG4gICAgICAgICAgICB8IGNjZFBhZ2VGaWVsZHM6IGVkaXRGb3JtXG4gICAgICAgICAgICB8IGNjZFJlYWRGaWVsZHNGaWx0ZXI6IGZhbHNlIDp1bmRlZmluZWQgOnRydWUgOmFsbEZpZWxkc1ZhbHVlc1xuICAgICAgICAgICAgfCBjY2RDWUFQYWdlTGFiZWxGaWx0ZXJcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhblNob3dGaWVsZEluQ1lBKGZpZWxkKVwiPlxuICAgICAgICAgICAgICAgIDx0ciBjY2RMYWJlbFN1YnN0aXR1dG9yIFtjYXNlRmllbGRdPVwiZmllbGRcIiBbaGlkZGVuXT1cImZpZWxkLmhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFtjb250ZXh0RmllbGRzXT1cImNvbnRleHRGaWVsZHNcIj5cbiAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cIiFpc0xhYmVsKGZpZWxkKSAmJiAhY2FzZUVkaXQuaXNDYXNlRmxhZ1N1Ym1pc3Npb25cIiBjbGFzcz1cInZhbGlnbi10b3AgY2FzZS1maWVsZC1sYWJlbFwiPjxzcGFuIGNsYXNzPVwidGV4dC0xNlwiPnt7ZmllbGQubGFiZWx9fTwvc3Bhbj48L3RoPlxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZm9ybS1jZWxsIGNhc2UtZmllbGQtY29udGVudFwiIFthdHRyLmNvbHNwYW5dPVwiaXNMYWJlbChmaWVsZCkgPyAnMicgOiAnMSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGNjZC1maWVsZC1yZWFkXG4gICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddXCIgW3RvcExldmVsRm9ybUdyb3VwXT1cImVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIlxuICAgICAgICAgICAgICAgICAgICAgIFtjYXNlRmllbGRdPVwic3VtbWFyeUNhc2VGaWVsZChmaWVsZClcIiBbY29udGV4dF09XCJwYWxldHRlQ29udGV4dFwiIFtjYXNlRmllbGRzXT1cImNvbnRleHRGaWVsZHNcIj48L2NjZC1maWVsZC1yZWFkPlxuICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY2FzZUVkaXQuaXNDYXNlRmxhZ1N1Ym1pc3Npb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidmFsaWduLXRvcCBjaGVjay15b3VyLWFuc3dlcnNfX2NoYW5nZSBjYXNlLWZpZWxkLWNoYW5nZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwiaXNDaGFuZ2VBbGxvd2VkKGZpZWxkKVwiIChjbGljayk9XCJuYXZpZ2F0ZVRvUGFnZShwYWdlLmlkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtMTZcIiBhdHRyLmFyaWEtbGFiZWw9XCJ7eydDaGFuZ2UnIHwgcnB4VHJhbnNsYXRlfX0ge3sgZmllbGQubGFiZWwgfCBycHhUcmFuc2xhdGUgfX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3snQ2hhbmdlJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZWFkT25seVN1bW1hcnlGaWVsZHNUb0Rpc3BsYXlFeGlzdHMoKVwiPlxuXG4gICAgICA8dGFibGUgY2xhc3M9XCJzdW1tYXJ5LWZpZWxkc1wiIGFyaWEtZGVzY3JpYmVkYnk9XCJzdW1tYXJ5IGZpZWxkcyB0YWJsZVwiPlxuICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2Ygc2hvd1N1bW1hcnlGaWVsZHNcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiIShmaWVsZCB8IGNjZElzQ29tcG91bmQpXCI+XG4gICAgICAgICAgICAgICAgPHRyICpuZ1N3aXRjaENhc2U9XCJ0cnVlXCIgY2NkTGFiZWxTdWJzdGl0dXRvciBbY2FzZUZpZWxkXT1cImZpZWxkXCIgW2Zvcm1Hcm91cF09XCJlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddXCIgW2NvbnRleHRGaWVsZHNdPVwiY29udGV4dEZpZWxkc1wiPlxuICAgICAgICAgICAgICAgICAgPHRoIGlkPVwic3VtbWFyeS1maWVsZC1sYWJlbFwiPnt7ZmllbGQubGFiZWx9fTwvdGg+XG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJmb3JtLWNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGNjZC1maWVsZC1yZWFkIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFtjYXNlRmllbGRdPVwic3VtbWFyeUNhc2VGaWVsZChmaWVsZClcIj48L2NjZC1maWVsZC1yZWFkPlxuICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDx0ciAqbmdTd2l0Y2hDYXNlPVwiZmFsc2VcIiBjbGFzcz1cImNvbXBvdW5kLWZpZWxkXCIgY2NkTGFiZWxTdWJzdGl0dXRvciBbY2FzZUZpZWxkXT1cImZpZWxkXCIgW2Zvcm1Hcm91cF09XCJlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddXCIgW2NvbnRleHRGaWVsZHNdPVwiY29udGV4dEZpZWxkc1wiPlxuICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxjY2QtZmllbGQtcmVhZCBbZm9ybUdyb3VwXT1cImVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIiBbY2FzZUZpZWxkXT1cInN1bW1hcnlDYXNlRmllbGQoZmllbGQpXCIgW2Nhc2VGaWVsZHNdPVwiY29udGV4dEZpZWxkc1wiPjwvY2NkLWZpZWxkLXJlYWQ+XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RXZlbnROb3RlcygpXCI+XG4gICAgICA8ZmllbGRzZXQgaWQ9XCJmaWVsZHNldC1ldmVudFwiIGZvcm1Hcm91cE5hbWU9XCJldmVudFwiPlxuICAgICAgICA8bGVnZW5kIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIj48L2xlZ2VuZD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwiZmllbGQtdHJpZ2dlci1zdW1tYXJ5XCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+XG4gICAgICAgICAgICBFdmVudCBzdW1tYXJ5IChvcHRpb25hbClcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1oaW50XCI+QSBmZXcgd29yZHMgZGVzY3JpYmluZyB0aGUgcHVycG9zZSBvZiB0aGUgZXZlbnQuPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJmaWVsZC10cmlnZ2VyLXN1bW1hcnlcIiBjbGFzcz1cImZvcm0tY29udHJvbCBib3R0b20tMzAgd2lkdGgtNTBcIiBmb3JtQ29udHJvbE5hbWU9XCJzdW1tYXJ5XCIgbWF4bGVuZ3RoPVwiMTAyNFwiPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwiZmllbGQtdHJpZ2dlci1kZXNjcmlwdGlvblwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkV2ZW50IGRlc2NyaXB0aW9uIChvcHRpb25hbCk8L2xhYmVsPlxuICAgICAgICAgIDx0ZXh0YXJlYSBpZD1cImZpZWxkLXRyaWdnZXItZGVzY3JpcHRpb25cIiBjbGFzcz1cImZvcm0tY29udHJvbCBib3R0b20tMzAgd2lkdGgtNTBcIiBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjY1NTM2XCI+PC90ZXh0YXJlYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2ZpZWxkc2V0PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGZvcm0tZ3JvdXAtcmVsYXRlZFwiPlxuICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFjYXNlRWRpdC5pc0Nhc2VGbGFnU3VibWlzc2lvblwiIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cIiFoYXNQcmV2aW91cygpIHx8IGNhc2VFZGl0LmlzU3VibWl0dGluZ1wiIChjbGljayk9XCJwcmV2aW91cygpXCI+XG4gICAgICAgIHt7J1ByZXZpb3VzJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCIgY2xhc3M9XCJidXR0b25cIj5cbiAgICAgICAge3t0cmlnZ2VyVGV4dCB8IHJweFRyYW5zbGF0ZX19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8cCBjbGFzcz1cImNhbmNlbFwiPlxuICAgICAgPGEgKGNsaWNrKT1cImNhbmNlbCgpXCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIFtjbGFzcy5kaXNhYmxlZF09XCJjYXNlRWRpdC5pc1N1Ym1pdHRpbmdcIj57e2dldENhbmNlbFRleHQoKSB8IHJweFRyYW5zbGF0ZX19PC9hPlxuICAgIDwvcD5cbiAgPC9mb3JtPlxuPC9kaXY+XG48Y2NkLWNhc2UtZXZlbnQtY29tcGxldGlvbiAqbmdJZj1cImNhc2VFZGl0LmlzRXZlbnRDb21wbGV0aW9uQ2hlY2tzUmVxdWlyZWRcIlxuICBbZXZlbnRDb21wbGV0aW9uUGFyYW1zXT1cImNhc2VFZGl0LmV2ZW50Q29tcGxldGlvblBhcmFtc1wiXG4gIChldmVudENhbkJlQ29tcGxldGVkKT1cIm9uRXZlbnRDYW5CZUNvbXBsZXRlZCgkZXZlbnQpXCI+XG48L2NjZC1jYXNlLWV2ZW50LWNvbXBsZXRpb24+XG4iXX0=
|
|
@@ -88,7 +88,8 @@ export class WizardPageFieldToCaseFieldMapper {
|
|
|
88
88
|
childrenCaseFields.forEach(e => this.hideParentIfAllChildrenHidden(e));
|
|
89
89
|
if (childrenCaseFields.length > 0 && this.allCaseFieldsHidden(childrenCaseFields)) {
|
|
90
90
|
caseField.hidden = true;
|
|
91
|
-
|
|
91
|
+
// marking display_context as special hidden so field not being deleted in event submission
|
|
92
|
+
caseField.display_context = 'HIDDEN_TEMP';
|
|
92
93
|
}
|
|
93
94
|
}
|
|
94
95
|
getCaseFieldChildren(caseField) {
|
|
@@ -102,7 +103,7 @@ export class WizardPageFieldToCaseFieldMapper {
|
|
|
102
103
|
return childrenCaseFields;
|
|
103
104
|
}
|
|
104
105
|
allCaseFieldsHidden(children) {
|
|
105
|
-
return
|
|
106
|
+
return children.every(e => e.display_context === 'HIDDEN' || e.display_context === 'HIDDEN_TEMP');
|
|
106
107
|
}
|
|
107
108
|
}
|
|
108
109
|
WizardPageFieldToCaseFieldMapper.ɵfac = function WizardPageFieldToCaseFieldMapper_Factory(t) { return new (t || WizardPageFieldToCaseFieldMapper)(); };
|
|
@@ -113,4 +114,4 @@ WizardPageFieldToCaseFieldMapper.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable(
|
|
|
113
114
|
providedIn: 'root',
|
|
114
115
|
}]
|
|
115
116
|
}], null, null); })();
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLXBhZ2UtZmllbGQtdG8tY2FzZS1maWVsZC5tYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvY2FzZS1lZGl0b3Ivc2VydmljZXMvd2l6YXJkLXBhZ2UtZmllbGQtdG8tY2FzZS1maWVsZC5tYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0VBQW9FLENBQUM7O0FBUW5HLE1BQU0sT0FBTyxnQ0FBZ0M7SUFDcEMsTUFBTSxDQUFDLGdCQUFtQyxFQUFFLFVBQXVCO1FBQ3hFLE9BQU8sZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ3hDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sR0FBRyxDQUFDLGVBQWdDLEVBQUUsVUFBdUI7UUFDbkUsTUFBTSxTQUFTLEdBQWMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzFGLFNBQVMsQ0FBQyxXQUFXLEdBQUcsZUFBZSxDQUFDO1FBQ3hDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQztRQUV4QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXpDLElBQUksZUFBZSxDQUFDLHVCQUF1QixJQUFJLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2pHLGVBQWUsQ0FBQyx1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QUFTLENBQUMsQ0FBQztRQUVoRSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV2RSxJQUFJLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLGtCQUFrQixDQUFDLEVBQUU7WUFDakYsU0FBUyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDeEIsU0FBUyxDQUFDLGVBQWUsR0FBRyxRQUFRLENBQUM7U0FDdEM7SUFDSCxDQUFDO0lBRU8sb0JBQW9CLENBQUMsU0FBb0I7UUFDL0MsSUFBSSxrQkFBa0IsR0FBRyxFQUFFLENBQUM7UUFDNUIsSUFBSSxTQUFTLENBQUMsWUFBWSxFQUFFLEVBQUU7WUFDNUIsa0JBQWtCLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDO1NBQ3RGO2FBQU0sSUFBSSxTQUFTLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDaEMsa0JBQWtCLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDO1NBQ2hFO1FBQ0QsT0FBTyxrQkFBa0IsQ0FBQztJQUM1QixDQUFDO0lBRU8sbUJBQW1CLENBQUMsUUFBcUI7UUFDL0MsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ2hELENBQUM7O2dIQXJIVSxnQ0FBZ0M7c0ZBQWhDLGdDQUFnQyxXQUFoQyxnQ0FBZ0MsbUJBRi9CLE1BQU07dUZBRVAsZ0NBQWdDO2NBSDVDLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNob3dDb25kaXRpb24gfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzL2NvbmRpdGlvbmFsLXNob3cvZG9tYWluL2NvbmRpdGlvbmFsLXNob3cubW9kZWwnO1xuaW1wb3J0IHsgQ2FzZUZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2RlZmluaXRpb24vY2FzZS1maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBDb21wbGV4RmllbGRPdmVycmlkZSB9IGZyb20gJy4uL2RvbWFpbi93aXphcmQtcGFnZS1maWVsZC1jb21wbGV4LW92ZXJyaWRlLm1vZGVsJztcbmltcG9ydCB7IFdpemFyZFBhZ2VGaWVsZCB9IGZyb20gJy4uL2RvbWFpbi93aXphcmQtcGFnZS1maWVsZC5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBXaXphcmRQYWdlRmllbGRUb0Nhc2VGaWVsZE1hcHBlciB7XG4gIHB1YmxpYyBtYXBBbGwod2l6YXJkUGFnZUZpZWxkczogV2l6YXJkUGFnZUZpZWxkW10sIGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdKTogQ2FzZUZpZWxkW10ge1xuICAgIHJldHVybiB3aXphcmRQYWdlRmllbGRzLm1hcCh3aXphcmRGaWVsZCA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5tYXAod2l6YXJkRmllbGQsIGNhc2VGaWVsZHMpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXAod2l6YXJkUGFnZUZpZWxkOiBXaXphcmRQYWdlRmllbGQsIGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdKTogQ2FzZUZpZWxkIHtcbiAgICBjb25zdCBjYXNlRmllbGQ6IENhc2VGaWVsZCA9IGNhc2VGaWVsZHMuZmluZChlID0+IGUuaWQgPT09IHdpemFyZFBhZ2VGaWVsZC5jYXNlX2ZpZWxkX2lkKTtcbiAgICBjYXNlRmllbGQud2l6YXJkUHJvcHMgPSB3aXphcmRQYWdlRmllbGQ7XG4gICAgY2FzZUZpZWxkLm9yZGVyID0gd2l6YXJkUGFnZUZpZWxkLm9yZGVyO1xuXG4gICAgdGhpcy5maXhTaG93Q29uZGl0aW9uUGF0aChjYXNlRmllbGQsICcnKTtcblxuICAgIGlmICh3aXphcmRQYWdlRmllbGQuY29tcGxleF9maWVsZF9vdmVycmlkZXMgJiYgd2l6YXJkUGFnZUZpZWxkLmNvbXBsZXhfZmllbGRfb3ZlcnJpZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHdpemFyZFBhZ2VGaWVsZC5jb21wbGV4X2ZpZWxkX292ZXJyaWRlcy5mb3JFYWNoKChvdmVycmlkZTogQ29tcGxleEZpZWxkT3ZlcnJpZGUpID0+IHtcbiAgICAgICAgdGhpcy5wcm9jZXNzQ29tcGxleEZpZWxkT3ZlcnJpZGUob3ZlcnJpZGUsIGNhc2VGaWVsZCwgY2FzZUZpZWxkcyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyB0aGlzIHdpbGwgZml4IHRoZSBDYXNlTGluayB0eXBlIGFzIHdlIGV4Y2x1ZGUgaXQgaW4gY2NkRmllbGRzRmlsdGVyIGRpcmVjdGl2ZVxuICAgIHRoaXMuaGlkZVBhcmVudElmQWxsQ2hpbGRyZW5IaWRkZW4oY2FzZUZpZWxkKTtcblxuICAgIHJldHVybiBjYXNlRmllbGQ7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NDb21wbGV4RmllbGRPdmVycmlkZShvdmVycmlkZTogQ29tcGxleEZpZWxkT3ZlcnJpZGUsIGNhc2VGaWVsZDogQ2FzZUZpZWxkLCBjYXNlRmllbGRzOiBDYXNlRmllbGRbXSkge1xuICAgIGNvbnN0IGNhc2VGaWVsZElkcyA9IG92ZXJyaWRlLmNvbXBsZXhfZmllbGRfZWxlbWVudF9pZC5zcGxpdCgnLicpO1xuICAgIGxldCBjYXNlRmllbGRMZWFmOiBDYXNlRmllbGQ7XG5cbiAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2FzZUZpZWxkQ2hpbGRyZW4oY2FzZUZpZWxkKTtcblxuICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBbXywgLi4udGFpbF0gPSBjYXNlRmllbGRJZHM7XG4gICAgICBjYXNlRmllbGRMZWFmID0gdGhpcy5nZXRDYXNlRmllbGRMZWFmKHRhaWwsIGNoaWxkcmVuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FzZUZpZWxkTGVhZiA9IHRoaXMuZ2V0Q2FzZUZpZWxkTGVhZihjYXNlRmllbGRJZHMsIGNhc2VGaWVsZHMpO1xuICAgIH1cblxuICAgIGlmIChvdmVycmlkZS5kaXNwbGF5X2NvbnRleHQgIT09ICdISURERU4nKSB7XG4gICAgICBjYXNlRmllbGRMZWFmLmhpZGRlbiA9IGZhbHNlO1xuICAgICAgY2FzZUZpZWxkTGVhZi5kaXNwbGF5X2NvbnRleHQgPSBvdmVycmlkZS5kaXNwbGF5X2NvbnRleHQ7XG4gICAgICBpZiAob3ZlcnJpZGUubGFiZWwgJiYgb3ZlcnJpZGUubGFiZWwubGVuZ3RoID4gMCkge1xuICAgICAgICBjYXNlRmllbGRMZWFmLmxhYmVsID0gb3ZlcnJpZGUubGFiZWw7XG4gICAgICB9XG4gICAgICBpZiAob3ZlcnJpZGUuaGludF90ZXh0ICYmIG92ZXJyaWRlLmhpbnRfdGV4dC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNhc2VGaWVsZExlYWYuaGludF90ZXh0ID0gb3ZlcnJpZGUuaGludF90ZXh0O1xuICAgICAgfVxuICAgICAgaWYgKG92ZXJyaWRlLnNob3dfY29uZGl0aW9uICYmIG92ZXJyaWRlLnNob3dfY29uZGl0aW9uLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY2FzZUZpZWxkTGVhZi5zaG93X2NvbmRpdGlvbiA9IG92ZXJyaWRlLnNob3dfY29uZGl0aW9uO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjYXNlRmllbGRMZWFmLmhpZGRlbiA9IHRydWU7XG4gICAgICBjYXNlRmllbGRMZWFmLmRpc3BsYXlfY29udGV4dCA9IG92ZXJyaWRlLmRpc3BsYXlfY29udGV4dDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZpeFNob3dDb25kaXRpb25QYXRoKGNhc2VGaWVsZDogQ2FzZUZpZWxkLCBwYXRoUHJlZml4OiBzdHJpbmcpIHtcbiAgICBpZiAoY2FzZUZpZWxkLnNob3dfY29uZGl0aW9uKSB7XG4gICAgICBjYXNlRmllbGQuc2hvd19jb25kaXRpb24gPSBTaG93Q29uZGl0aW9uLmFkZFBhdGhQcmVmaXhUb0NvbmRpdGlvbihjYXNlRmllbGQuc2hvd19jb25kaXRpb24sIHBhdGhQcmVmaXgpO1xuICAgIH1cblxuICAgIGNvbnN0IGNoaWxkcmVuQ2FzZUZpZWxkcyA9IHRoaXMuZ2V0Q2FzZUZpZWxkQ2hpbGRyZW4oY2FzZUZpZWxkKTtcblxuICAgIGNoaWxkcmVuQ2FzZUZpZWxkcy5mb3JFYWNoKGNvbGxlY3Rpb25DYXNlRmllbGQgPT4ge1xuICAgICAgdGhpcy5maXhTaG93Q29uZGl0aW9uUGF0aChjb2xsZWN0aW9uQ2FzZUZpZWxkLCB0aGlzLnByZXBhcmVQYXRoUHJlZml4KHBhdGhQcmVmaXgsIGNhc2VGaWVsZC5pZCkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmVwYXJlUGF0aFByZWZpeChwYXRoUHJlZml4OiBzdHJpbmcsIGNhc2VGaWVsZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHBhdGhQcmVmaXgubGVuZ3RoID09PSAwID8gY2FzZUZpZWxkIDogYCR7cGF0aFByZWZpeH0uJHtjYXNlRmllbGR9YDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2FzZUZpZWxkTGVhZihjYXNlRmllbGRJZDogc3RyaW5nW10sIGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdKTogQ2FzZUZpZWxkIHtcbiAgICBjb25zdCBbaGVhZCwgLi4udGFpbF0gPSBjYXNlRmllbGRJZDtcbiAgICBpZiAoY2FzZUZpZWxkSWQubGVuZ3RoID09PSAxKSB7XG4gICAgICBjb25zdCBjYXNlTGVhZiA9IGNhc2VGaWVsZHMuZmluZChlID0+IGUuaWQgPT09IGhlYWQpO1xuICAgICAgaWYgKCFjYXNlTGVhZikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIGxlYWYgZm9yIGNhc2VGaWVsZElkICR7Y2FzZUZpZWxkSWQuam9pbignLicpfWApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNhc2VMZWFmO1xuICAgIH0gZWxzZSBpZiAoY2FzZUZpZWxkSWQubGVuZ3RoID4gMSkge1xuICAgICAgY29uc3QgY2FzZUZpZWxkID0gY2FzZUZpZWxkcy5maW5kKGUgPT4gZS5pZCA9PT0gaGVhZCk7XG4gICAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2FzZUZpZWxkQ2hpbGRyZW4oY2FzZUZpZWxkKTtcblxuICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGZpZWxkX3R5cGUgb3IgY29tcGxleF9maWVsZHMgbWlzc2luZyBmb3IgJHtjYXNlRmllbGRJZC5qb2luKCcuJyl9YCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5nZXRDYXNlRmllbGRMZWFmKHRhaWwsIGNoaWxkcmVuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBsZWFmIGZvciBjYXNlRmllbGRJZCAke2Nhc2VGaWVsZElkLmpvaW4oJy4nKX1gKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhpZGVQYXJlbnRJZkFsbENoaWxkcmVuSGlkZGVuKGNhc2VGaWVsZDogQ2FzZUZpZWxkKSB7XG4gICAgY29uc3QgY2hpbGRyZW5DYXNlRmllbGRzID0gdGhpcy5nZXRDYXNlRmllbGRDaGlsZHJlbihjYXNlRmllbGQpO1xuXG4gICAgY2hpbGRyZW5DYXNlRmllbGRzLmZvckVhY2goZSA9PiB0aGlzLmhpZGVQYXJlbnRJZkFsbENoaWxkcmVuSGlkZGVuKGUpKTtcblxuICAgIGlmIChjaGlsZHJlbkNhc2VGaWVsZHMubGVuZ3RoID4gMCAmJiB0aGlzLmFsbENhc2VGaWVsZHNIaWRkZW4oY2hpbGRyZW5DYXNlRmllbGRzKSkge1xuICAgICAgY2FzZUZpZWxkLmhpZGRlbiA9IHRydWU7XG4gICAgICBjYXNlRmllbGQuZGlzcGxheV9jb250ZXh0ID0gJ0hJRERFTic7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDYXNlRmllbGRDaGlsZHJlbihjYXNlRmllbGQ6IENhc2VGaWVsZCkge1xuICAgIGxldCBjaGlsZHJlbkNhc2VGaWVsZHMgPSBbXTtcbiAgICBpZiAoY2FzZUZpZWxkLmlzQ29sbGVjdGlvbigpKSB7XG4gICAgICBjaGlsZHJlbkNhc2VGaWVsZHMgPSBjYXNlRmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMgfHwgW107XG4gICAgfSBlbHNlIGlmIChjYXNlRmllbGQuaXNDb21wbGV4KCkpIHtcbiAgICAgIGNoaWxkcmVuQ2FzZUZpZWxkcyA9IGNhc2VGaWVsZC5maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzIHx8IFtdO1xuICAgIH1cbiAgICByZXR1cm4gY2hpbGRyZW5DYXNlRmllbGRzO1xuICB9XG5cbiAgcHJpdmF0ZSBhbGxDYXNlRmllbGRzSGlkZGVuKGNoaWxkcmVuOiBDYXNlRmllbGRbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhY2hpbGRyZW4uc29tZShlID0+IGUuaGlkZGVuICE9PSB0cnVlKTtcbiAgfVxufVxuIl19
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLXBhZ2UtZmllbGQtdG8tY2FzZS1maWVsZC5tYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvY2FzZS1lZGl0b3Ivc2VydmljZXMvd2l6YXJkLXBhZ2UtZmllbGQtdG8tY2FzZS1maWVsZC5tYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0VBQW9FLENBQUM7O0FBUW5HLE1BQU0sT0FBTyxnQ0FBZ0M7SUFDcEMsTUFBTSxDQUFDLGdCQUFtQyxFQUFFLFVBQXVCO1FBQ3hFLE9BQU8sZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ3hDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sR0FBRyxDQUFDLGVBQWdDLEVBQUUsVUFBdUI7UUFDbkUsTUFBTSxTQUFTLEdBQWMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzFGLFNBQVMsQ0FBQyxXQUFXLEdBQUcsZUFBZSxDQUFDO1FBQ3hDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQztRQUV4QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXpDLElBQUksZUFBZSxDQUFDLHVCQUF1QixJQUFJLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2pHLGVBQWUsQ0FBQyx1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bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2hvd0NvbmRpdGlvbiB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvY29uZGl0aW9uYWwtc2hvdy9kb21haW4vY29uZGl0aW9uYWwtc2hvdy5tb2RlbCc7XG5pbXBvcnQgeyBDYXNlRmllbGQgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vZGVmaW5pdGlvbi9jYXNlLWZpZWxkLm1vZGVsJztcbmltcG9ydCB7IENvbXBsZXhGaWVsZE92ZXJyaWRlIH0gZnJvbSAnLi4vZG9tYWluL3dpemFyZC1wYWdlLWZpZWxkLWNvbXBsZXgtb3ZlcnJpZGUubW9kZWwnO1xuaW1wb3J0IHsgV2l6YXJkUGFnZUZpZWxkIH0gZnJvbSAnLi4vZG9tYWluL3dpemFyZC1wYWdlLWZpZWxkLm1vZGVsJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFdpemFyZFBhZ2VGaWVsZFRvQ2FzZUZpZWxkTWFwcGVyIHtcbiAgcHVibGljIG1hcEFsbCh3aXphcmRQYWdlRmllbGRzOiBXaXphcmRQYWdlRmllbGRbXSwgY2FzZUZpZWxkczogQ2FzZUZpZWxkW10pOiBDYXNlRmllbGRbXSB7XG4gICAgcmV0dXJuIHdpemFyZFBhZ2VGaWVsZHMubWFwKHdpemFyZEZpZWxkID0+IHtcbiAgICAgIHJldHVybiB0aGlzLm1hcCh3aXphcmRGaWVsZCwgY2FzZUZpZWxkcyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG1hcCh3aXphcmRQYWdlRmllbGQ6IFdpemFyZFBhZ2VGaWVsZCwgY2FzZUZpZWxkczogQ2FzZUZpZWxkW10pOiBDYXNlRmllbGQge1xuICAgIGNvbnN0IGNhc2VGaWVsZDogQ2FzZUZpZWxkID0gY2FzZUZpZWxkcy5maW5kKGUgPT4gZS5pZCA9PT0gd2l6YXJkUGFnZUZpZWxkLmNhc2VfZmllbGRfaWQpO1xuICAgIGNhc2VGaWVsZC53aXphcmRQcm9wcyA9IHdpemFyZFBhZ2VGaWVsZDtcbiAgICBjYXNlRmllbGQub3JkZXIgPSB3aXphcmRQYWdlRmllbGQub3JkZXI7XG5cbiAgICB0aGlzLmZpeFNob3dDb25kaXRpb25QYXRoKGNhc2VGaWVsZCwgJycpO1xuXG4gICAgaWYgKHdpemFyZFBhZ2VGaWVsZC5jb21wbGV4X2ZpZWxkX292ZXJyaWRlcyAmJiB3aXphcmRQYWdlRmllbGQuY29tcGxleF9maWVsZF9vdmVycmlkZXMubGVuZ3RoID4gMCkge1xuICAgICAgd2l6YXJkUGFnZUZpZWxkLmNvbXBsZXhfZmllbGRfb3ZlcnJpZGVzLmZvckVhY2goKG92ZXJyaWRlOiBDb21wbGV4RmllbGRPdmVycmlkZSkgPT4ge1xuICAgICAgICB0aGlzLnByb2Nlc3NDb21wbGV4RmllbGRPdmVycmlkZShvdmVycmlkZSwgY2FzZUZpZWxkLCBjYXNlRmllbGRzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIHRoaXMgd2lsbCBmaXggdGhlIENhc2VMaW5rIHR5cGUgYXMgd2UgZXhjbHVkZSBpdCBpbiBjY2RGaWVsZHNGaWx0ZXIgZGlyZWN0aXZlXG4gICAgdGhpcy5oaWRlUGFyZW50SWZBbGxDaGlsZHJlbkhpZGRlbihjYXNlRmllbGQpO1xuXG4gICAgcmV0dXJuIGNhc2VGaWVsZDtcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc0NvbXBsZXhGaWVsZE92ZXJyaWRlKG92ZXJyaWRlOiBDb21wbGV4RmllbGRPdmVycmlkZSwgY2FzZUZpZWxkOiBDYXNlRmllbGQsIGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdKSB7XG4gICAgY29uc3QgY2FzZUZpZWxkSWRzID0gb3ZlcnJpZGUuY29tcGxleF9maWVsZF9lbGVtZW50X2lkLnNwbGl0KCcuJyk7XG4gICAgbGV0IGNhc2VGaWVsZExlYWY6IENhc2VGaWVsZDtcblxuICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5nZXRDYXNlRmllbGRDaGlsZHJlbihjYXNlRmllbGQpO1xuXG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IFtfLCAuLi50YWlsXSA9IGNhc2VGaWVsZElkcztcbiAgICAgIGNhc2VGaWVsZExlYWYgPSB0aGlzLmdldENhc2VGaWVsZExlYWYodGFpbCwgY2hpbGRyZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXNlRmllbGRMZWFmID0gdGhpcy5nZXRDYXNlRmllbGRMZWFmKGNhc2VGaWVsZElkcywgY2FzZUZpZWxkcyk7XG4gICAgfVxuXG4gICAgaWYgKG92ZXJyaWRlLmRpc3BsYXlfY29udGV4dCAhPT0gJ0hJRERFTicpIHtcbiAgICAgIGNhc2VGaWVsZExlYWYuaGlkZGVuID0gZmFsc2U7XG4gICAgICBjYXNlRmllbGRMZWFmLmRpc3BsYXlfY29udGV4dCA9IG92ZXJyaWRlLmRpc3BsYXlfY29udGV4dDtcbiAgICAgIGlmIChvdmVycmlkZS5sYWJlbCAmJiBvdmVycmlkZS5sYWJlbC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNhc2VGaWVsZExlYWYubGFiZWwgPSBvdmVycmlkZS5sYWJlbDtcbiAgICAgIH1cbiAgICAgIGlmIChvdmVycmlkZS5oaW50X3RleHQgJiYgb3ZlcnJpZGUuaGludF90ZXh0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgY2FzZUZpZWxkTGVhZi5oaW50X3RleHQgPSBvdmVycmlkZS5oaW50X3RleHQ7XG4gICAgICB9XG4gICAgICBpZiAob3ZlcnJpZGUuc2hvd19jb25kaXRpb24gJiYgb3ZlcnJpZGUuc2hvd19jb25kaXRpb24ubGVuZ3RoID4gMCkge1xuICAgICAgICBjYXNlRmllbGRMZWFmLnNob3dfY29uZGl0aW9uID0gb3ZlcnJpZGUuc2hvd19jb25kaXRpb247XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhc2VGaWVsZExlYWYuaGlkZGVuID0gdHJ1ZTtcbiAgICAgIGNhc2VGaWVsZExlYWYuZGlzcGxheV9jb250ZXh0ID0gb3ZlcnJpZGUuZGlzcGxheV9jb250ZXh0O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZml4U2hvd0NvbmRpdGlvblBhdGgoY2FzZUZpZWxkOiBDYXNlRmllbGQsIHBhdGhQcmVmaXg6IHN0cmluZykge1xuICAgIGlmIChjYXNlRmllbGQuc2hvd19jb25kaXRpb24pIHtcbiAgICAgIGNhc2VGaWVsZC5zaG93X2NvbmRpdGlvbiA9IFNob3dDb25kaXRpb24uYWRkUGF0aFByZWZpeFRvQ29uZGl0aW9uKGNhc2VGaWVsZC5zaG93X2NvbmRpdGlvbiwgcGF0aFByZWZpeCk7XG4gICAgfVxuXG4gICAgY29uc3QgY2hpbGRyZW5DYXNlRmllbGRzID0gdGhpcy5nZXRDYXNlRmllbGRDaGlsZHJlbihjYXNlRmllbGQpO1xuXG4gICAgY2hpbGRyZW5DYXNlRmllbGRzLmZvckVhY2goY29sbGVjdGlvbkNhc2VGaWVsZCA9PiB7XG4gICAgICB0aGlzLmZpeFNob3dDb25kaXRpb25QYXRoKGNvbGxlY3Rpb25DYXNlRmllbGQsIHRoaXMucHJlcGFyZVBhdGhQcmVmaXgocGF0aFByZWZpeCwgY2FzZUZpZWxkLmlkKSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHByZXBhcmVQYXRoUHJlZml4KHBhdGhQcmVmaXg6IHN0cmluZywgY2FzZUZpZWxkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gcGF0aFByZWZpeC5sZW5ndGggPT09IDAgPyBjYXNlRmllbGQgOiBgJHtwYXRoUHJlZml4fS4ke2Nhc2VGaWVsZH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDYXNlRmllbGRMZWFmKGNhc2VGaWVsZElkOiBzdHJpbmdbXSwgY2FzZUZpZWxkczogQ2FzZUZpZWxkW10pOiBDYXNlRmllbGQge1xuICAgIGNvbnN0IFtoZWFkLCAuLi50YWlsXSA9IGNhc2VGaWVsZElkO1xuICAgIGlmIChjYXNlRmllbGRJZC5sZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IGNhc2VMZWFmID0gY2FzZUZpZWxkcy5maW5kKGUgPT4gZS5pZCA9PT0gaGVhZCk7XG4gICAgICBpZiAoIWNhc2VMZWFmKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgbGVhZiBmb3IgY2FzZUZpZWxkSWQgJHtjYXNlRmllbGRJZC5qb2luKCcuJyl9YCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY2FzZUxlYWY7XG4gICAgfSBlbHNlIGlmIChjYXNlRmllbGRJZC5sZW5ndGggPiAxKSB7XG4gICAgICBjb25zdCBjYXNlRmllbGQgPSBjYXNlRmllbGRzLmZpbmQoZSA9PiBlLmlkID09PSBoZWFkKTtcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5nZXRDYXNlRmllbGRDaGlsZHJlbihjYXNlRmllbGQpO1xuXG4gICAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgZmllbGRfdHlwZSBvciBjb21wbGV4X2ZpZWxkcyBtaXNzaW5nIGZvciAke2Nhc2VGaWVsZElkLmpvaW4oJy4nKX1gKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmdldENhc2VGaWVsZExlYWYodGFpbCwgY2hpbGRyZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIGxlYWYgZm9yIGNhc2VGaWVsZElkICR7Y2FzZUZpZWxkSWQuam9pbignLicpfWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGlkZVBhcmVudElmQWxsQ2hpbGRyZW5IaWRkZW4oY2FzZUZpZWxkOiBDYXNlRmllbGQpIHtcbiAgICBjb25zdCBjaGlsZHJlbkNhc2VGaWVsZHMgPSB0aGlzLmdldENhc2VGaWVsZENoaWxkcmVuKGNhc2VGaWVsZCk7XG5cbiAgICBjaGlsZHJlbkNhc2VGaWVsZHMuZm9yRWFjaChlID0+IHRoaXMuaGlkZVBhcmVudElmQWxsQ2hpbGRyZW5IaWRkZW4oZSkpO1xuXG4gICAgaWYgKGNoaWxkcmVuQ2FzZUZpZWxkcy5sZW5ndGggPiAwICYmIHRoaXMuYWxsQ2FzZUZpZWxkc0hpZGRlbihjaGlsZHJlbkNhc2VGaWVsZHMpKSB7XG4gICAgICBjYXNlRmllbGQuaGlkZGVuID0gdHJ1ZTtcbiAgICAgIC8vIG1hcmtpbmcgZGlzcGxheV9jb250ZXh0IGFzIHNwZWNpYWwgaGlkZGVuIHNvIGZpZWxkIG5vdCBiZWluZyBkZWxldGVkIGluIGV2ZW50IHN1Ym1pc3Npb25cbiAgICAgIGNhc2VGaWVsZC5kaXNwbGF5X2NvbnRleHQgPSAnSElEREVOX1RFTVAnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2FzZUZpZWxkQ2hpbGRyZW4oY2FzZUZpZWxkOiBDYXNlRmllbGQpIHtcbiAgICBsZXQgY2hpbGRyZW5DYXNlRmllbGRzID0gW107XG4gICAgaWYgKGNhc2VGaWVsZC5pc0NvbGxlY3Rpb24oKSkge1xuICAgICAgY2hpbGRyZW5DYXNlRmllbGRzID0gY2FzZUZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzIHx8IFtdO1xuICAgIH0gZWxzZSBpZiAoY2FzZUZpZWxkLmlzQ29tcGxleCgpKSB7XG4gICAgICBjaGlsZHJlbkNhc2VGaWVsZHMgPSBjYXNlRmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcyB8fCBbXTtcbiAgICB9XG4gICAgcmV0dXJuIGNoaWxkcmVuQ2FzZUZpZWxkcztcbiAgfVxuXG4gIHByaXZhdGUgYWxsQ2FzZUZpZWxkc0hpZGRlbihjaGlsZHJlbjogQ2FzZUZpZWxkW10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gY2hpbGRyZW4uZXZlcnkoZSA9PiBlLmRpc3BsYXlfY29udGV4dCA9PT0gJ0hJRERFTicgfHwgZS5kaXNwbGF5X2NvbnRleHQgPT09ICdISURERU5fVEVNUCcpO1xuICB9XG59XG4iXX0=
|
|
@@ -11,7 +11,7 @@ import * as i0 from "@angular/core";
|
|
|
11
11
|
import * as i1 from "../../../services/addresses/addresses.service";
|
|
12
12
|
import * as i2 from "../utils/is-compound.pipe";
|
|
13
13
|
const _c0 = ["writeComplexFieldComponent"];
|
|
14
|
-
function
|
|
14
|
+
function WriteAddressFieldComponent_div_1_div_5_span_5_Template(rf, ctx) { if (rf & 1) {
|
|
15
15
|
i0.ɵɵelementStart(0, "span", 14);
|
|
16
16
|
i0.ɵɵtext(1);
|
|
17
17
|
i0.ɵɵpipe(2, "rpxTranslate");
|
|
@@ -22,16 +22,16 @@ function WriteAddressFieldComponent_div_1_div_4_span_5_Template(rf, ctx) { if (r
|
|
|
22
22
|
} }
|
|
23
23
|
const _c1 = function (a0) { return { "form-group-error": a0 }; };
|
|
24
24
|
const _c2 = function (a0) { return { "govuk-input--error": a0 }; };
|
|
25
|
-
function
|
|
25
|
+
function WriteAddressFieldComponent_div_1_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
26
26
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
27
27
|
i0.ɵɵelementStart(0, "div", 8)(1, "label", 9)(2, "span", 10);
|
|
28
28
|
i0.ɵɵtext(3);
|
|
29
29
|
i0.ɵɵpipe(4, "rpxTranslate");
|
|
30
30
|
i0.ɵɵelementEnd()();
|
|
31
|
-
i0.ɵɵtemplate(5,
|
|
31
|
+
i0.ɵɵtemplate(5, WriteAddressFieldComponent_div_1_div_5_span_5_Template, 3, 3, "span", 11);
|
|
32
32
|
i0.ɵɵelement(6, "input", 12);
|
|
33
33
|
i0.ɵɵelementStart(7, "button", 13);
|
|
34
|
-
i0.ɵɵlistener("click", function
|
|
34
|
+
i0.ɵɵlistener("click", function WriteAddressFieldComponent_div_1_div_5_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r7); const ctx_r6 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r6.findAddress()); });
|
|
35
35
|
i0.ɵɵtext(8);
|
|
36
36
|
i0.ɵɵpipe(9, "rpxTranslate");
|
|
37
37
|
i0.ɵɵelementEnd()();
|
|
@@ -49,7 +49,7 @@ function WriteAddressFieldComponent_div_1_div_4_Template(rf, ctx) { if (rf & 1)
|
|
|
49
49
|
i0.ɵɵadvance(2);
|
|
50
50
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(9, 11, "Find address"));
|
|
51
51
|
} }
|
|
52
|
-
function
|
|
52
|
+
function WriteAddressFieldComponent_div_1_div_6_option_6_Template(rf, ctx) { if (rf & 1) {
|
|
53
53
|
i0.ɵɵelementStart(0, "option", 18);
|
|
54
54
|
i0.ɵɵtext(1);
|
|
55
55
|
i0.ɵɵpipe(2, "rpxTranslate");
|
|
@@ -60,15 +60,15 @@ function WriteAddressFieldComponent_div_1_div_5_option_6_Template(rf, ctx) { if
|
|
|
60
60
|
i0.ɵɵadvance(1);
|
|
61
61
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, addressOption_r9.description), " ");
|
|
62
62
|
} }
|
|
63
|
-
function
|
|
63
|
+
function WriteAddressFieldComponent_div_1_div_6_Template(rf, ctx) { if (rf & 1) {
|
|
64
64
|
const _r11 = i0.ɵɵgetCurrentView();
|
|
65
65
|
i0.ɵɵelementStart(0, "div", 15)(1, "label", 9)(2, "span", 10);
|
|
66
66
|
i0.ɵɵtext(3);
|
|
67
67
|
i0.ɵɵpipe(4, "rpxTranslate");
|
|
68
68
|
i0.ɵɵelementEnd()();
|
|
69
69
|
i0.ɵɵelementStart(5, "select", 16);
|
|
70
|
-
i0.ɵɵlistener("change", function
|
|
71
|
-
i0.ɵɵtemplate(6,
|
|
70
|
+
i0.ɵɵlistener("change", function WriteAddressFieldComponent_div_1_div_6_Template_select_change_5_listener() { i0.ɵɵrestoreView(_r11); const ctx_r10 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r10.addressSelected()); });
|
|
71
|
+
i0.ɵɵtemplate(6, WriteAddressFieldComponent_div_1_div_6_option_6_Template, 3, 4, "option", 17);
|
|
72
72
|
i0.ɵɵelementEnd()();
|
|
73
73
|
} if (rf & 2) {
|
|
74
74
|
const ctx_r3 = i0.ɵɵnextContext(2);
|
|
@@ -81,10 +81,10 @@ function WriteAddressFieldComponent_div_1_div_5_Template(rf, ctx) { if (rf & 1)
|
|
|
81
81
|
i0.ɵɵadvance(1);
|
|
82
82
|
i0.ɵɵproperty("ngForOf", ctx_r3.addressOptions);
|
|
83
83
|
} }
|
|
84
|
-
function
|
|
84
|
+
function WriteAddressFieldComponent_div_1_a_7_Template(rf, ctx) { if (rf & 1) {
|
|
85
85
|
const _r13 = i0.ɵɵgetCurrentView();
|
|
86
86
|
i0.ɵɵelementStart(0, "a", 19);
|
|
87
|
-
i0.ɵɵlistener("click", function
|
|
87
|
+
i0.ɵɵlistener("click", function WriteAddressFieldComponent_div_1_a_7_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r12 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r12.blankAddress()); });
|
|
88
88
|
i0.ɵɵtext(1);
|
|
89
89
|
i0.ɵɵpipe(2, "rpxTranslate");
|
|
90
90
|
i0.ɵɵelementEnd();
|
|
@@ -95,17 +95,18 @@ function WriteAddressFieldComponent_div_1_a_6_Template(rf, ctx) { if (rf & 1) {
|
|
|
95
95
|
function WriteAddressFieldComponent_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
96
96
|
i0.ɵɵelementStart(0, "div")(1, "h2", 4);
|
|
97
97
|
i0.ɵɵtext(2);
|
|
98
|
-
i0.ɵɵpipe(3, "
|
|
98
|
+
i0.ɵɵpipe(3, "rpxTranslate");
|
|
99
|
+
i0.ɵɵpipe(4, "ccdFieldLabel");
|
|
99
100
|
i0.ɵɵelementEnd();
|
|
100
|
-
i0.ɵɵtemplate(
|
|
101
|
-
i0.ɵɵtemplate(
|
|
102
|
-
i0.ɵɵtemplate(
|
|
101
|
+
i0.ɵɵtemplate(5, WriteAddressFieldComponent_div_1_div_5_Template, 10, 17, "div", 5);
|
|
102
|
+
i0.ɵɵtemplate(6, WriteAddressFieldComponent_div_1_div_6_Template, 7, 7, "div", 6);
|
|
103
|
+
i0.ɵɵtemplate(7, WriteAddressFieldComponent_div_1_a_7_Template, 3, 3, "a", 7);
|
|
103
104
|
i0.ɵɵelementEnd();
|
|
104
105
|
} if (rf & 2) {
|
|
105
106
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
106
107
|
i0.ɵɵadvance(2);
|
|
107
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 4, ctx_r0.caseField));
|
|
108
|
-
i0.ɵɵadvance(
|
|
108
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 4, i0.ɵɵpipeBind1(4, 6, ctx_r0.caseField)));
|
|
109
|
+
i0.ɵɵadvance(3);
|
|
109
110
|
i0.ɵɵproperty("ngIf", !ctx_r0.isExpanded);
|
|
110
111
|
i0.ɵɵadvance(1);
|
|
111
112
|
i0.ɵɵproperty("ngIf", ctx_r0.addressOptions);
|
|
@@ -220,7 +221,7 @@ WriteAddressFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
|
|
|
220
221
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.focusElementDirectives = _t);
|
|
221
222
|
} }, inputs: { formGroup: "formGroup" }, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 4, vars: 9, consts: [[1, "form-group", 3, "id"], [4, "ngIf"], [3, "hidden", "caseField", "renderLabel", "parent", "formGroup", "ignoreMandatory", "idPrefix"], ["writeComplexFieldComponent", ""], [1, "heading-h2"], ["class", "form-group bottom-30 postcodeLookup", 3, "id", "ngClass", 4, "ngIf"], ["class", "form-group", "id", "selectAddress", 4, "ngIf"], ["class", "manual-link bottom-30", "href", "javascript:void(0)", 3, "click", 4, "ngIf"], [1, "form-group", "bottom-30", "postcodeLookup", 3, "id", "ngClass"], [3, "for"], [1, "form-label"], ["class", "error-message", 4, "ngIf"], ["type", "text", "name", "postcode", 1, "form-control", "postcodeinput", "inline-block", 3, "ngClass", "id", "formControl"], ["type", "button", 1, "button", "button-30", 3, "click"], [1, "error-message"], ["id", "selectAddress", 1, "form-group"], ["name", "address", "focusElement", "", 1, "form-control", "ccd-dropdown", "addressList", 3, "id", "formControl", "change"], [3, "ngValue", 4, "ngFor", "ngForOf"], [3, "ngValue"], ["href", "javascript:void(0)", 1, "manual-link", "bottom-30", 3, "click"]], template: function WriteAddressFieldComponent_Template(rf, ctx) { if (rf & 1) {
|
|
222
223
|
i0.ɵɵelementStart(0, "div", 0);
|
|
223
|
-
i0.ɵɵtemplate(1, WriteAddressFieldComponent_div_1_Template,
|
|
224
|
+
i0.ɵɵtemplate(1, WriteAddressFieldComponent_div_1_Template, 8, 8, "div", 1);
|
|
224
225
|
i0.ɵɵelement(2, "ccd-write-complex-type-field", 2, 3);
|
|
225
226
|
i0.ɵɵelementEnd();
|
|
226
227
|
} if (rf & 2) {
|
|
@@ -232,7 +233,7 @@ WriteAddressFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
|
|
|
232
233
|
} }, styles: [".manual-link[_ngcontent-%COMP%]{cursor:pointer;display:block;text-decoration:underline}"] });
|
|
233
234
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WriteAddressFieldComponent, [{
|
|
234
235
|
type: Component,
|
|
235
|
-
args: [{ selector: 'ccd-write-address-field', template: "<div class=\"form-group\" [id]=\"id()\">\n <div *ngIf=\"!isComplexWithHiddenFields()\">\n <h2 class=\"heading-h2\">{{caseField | ccdFieldLabel}}</h2>\n\n <div class=\"form-group bottom-30 postcodeLookup\" [id]=\"createElementId('postcodeLookup')\" [ngClass]=\"{'form-group-error': missingPostcode}\" *ngIf=\"!isExpanded\">\n <label [for]=\"createElementId('postcodeInput')\">\n <span class=\"form-label\">{{'Enter a UK postcode' | rpxTranslate}}</span>\n </label>\n <span class=\"error-message\" *ngIf=\"missingPostcode\">{{'Enter the Postcode' | rpxTranslate}}</span>\n <input type=\"text\" [ngClass]=\"{'govuk-input--error': missingPostcode}\"\n [id]=\"createElementId('postcodeInput')\" name=\"postcode\" class=\"form-control postcodeinput inline-block\" [formControl]=\"postcode\">\n <button type=\"button\" class=\"button button-30\" (click)=\"findAddress()\">{{'Find address' | rpxTranslate}}</button>\n </div>\n\n <div class=\"form-group\" *ngIf=\"addressOptions\" id=\"selectAddress\">\n <label [for]=\"createElementId('addressList')\">\n <span class=\"form-label\">{{'Select an address' | rpxTranslate}}</span>\n </label>\n\n <select class=\"form-control ccd-dropdown addressList\" [id]=\"createElementId('addressList')\" name=\"address\" [formControl]=\"addressList\" (change)=\"addressSelected()\" focusElement>\n <option *ngFor=\"let addressOption of addressOptions\" [ngValue]=\"addressOption.value\">\n {{addressOption.description | rpxTranslate}}\n </option>\n </select>\n </div>\n\n <a class=\"manual-link bottom-30\" *ngIf=\"!shouldShowDetailFields()\" (click)=\"blankAddress()\" href=\"javascript:void(0)\">\n {{\"I can't enter a UK postcode\" | rpxTranslate}}\n </a>\n </div>\n\n <ccd-write-complex-type-field\n [hidden]=\"!shouldShowDetailFields()\"\n [caseField]=\"caseField\"\n [renderLabel]=\"false\"\n [parent]=\"parent\"\n [formGroup]=\"formGroup\"\n [ignoreMandatory]=\"true\"\n [idPrefix]=\"buildIdPrefix('detail')\"\n #writeComplexFieldComponent>\n </ccd-write-complex-type-field>\n</div>\n", styles: [".manual-link{cursor:pointer;display:block;text-decoration:underline}\n"] }]
|
|
236
|
+
args: [{ selector: 'ccd-write-address-field', template: "<div class=\"form-group\" [id]=\"id()\">\n <div *ngIf=\"!isComplexWithHiddenFields()\">\n <h2 class=\"heading-h2\">{{caseField | ccdFieldLabel | rpxTranslate}}</h2>\n\n <div class=\"form-group bottom-30 postcodeLookup\" [id]=\"createElementId('postcodeLookup')\" [ngClass]=\"{'form-group-error': missingPostcode}\" *ngIf=\"!isExpanded\">\n <label [for]=\"createElementId('postcodeInput')\">\n <span class=\"form-label\">{{'Enter a UK postcode' | rpxTranslate}}</span>\n </label>\n <span class=\"error-message\" *ngIf=\"missingPostcode\">{{'Enter the Postcode' | rpxTranslate}}</span>\n <input type=\"text\" [ngClass]=\"{'govuk-input--error': missingPostcode}\"\n [id]=\"createElementId('postcodeInput')\" name=\"postcode\" class=\"form-control postcodeinput inline-block\" [formControl]=\"postcode\">\n <button type=\"button\" class=\"button button-30\" (click)=\"findAddress()\">{{'Find address' | rpxTranslate}}</button>\n </div>\n\n <div class=\"form-group\" *ngIf=\"addressOptions\" id=\"selectAddress\">\n <label [for]=\"createElementId('addressList')\">\n <span class=\"form-label\">{{'Select an address' | rpxTranslate}}</span>\n </label>\n\n <select class=\"form-control ccd-dropdown addressList\" [id]=\"createElementId('addressList')\" name=\"address\" [formControl]=\"addressList\" (change)=\"addressSelected()\" focusElement>\n <option *ngFor=\"let addressOption of addressOptions\" [ngValue]=\"addressOption.value\">\n {{addressOption.description | rpxTranslate}}\n </option>\n </select>\n </div>\n\n <a class=\"manual-link bottom-30\" *ngIf=\"!shouldShowDetailFields()\" (click)=\"blankAddress()\" href=\"javascript:void(0)\">\n {{\"I can't enter a UK postcode\" | rpxTranslate}}\n </a>\n </div>\n\n <ccd-write-complex-type-field\n [hidden]=\"!shouldShowDetailFields()\"\n [caseField]=\"caseField\"\n [renderLabel]=\"false\"\n [parent]=\"parent\"\n [formGroup]=\"formGroup\"\n [ignoreMandatory]=\"true\"\n [idPrefix]=\"buildIdPrefix('detail')\"\n #writeComplexFieldComponent>\n </ccd-write-complex-type-field>\n</div>\n", styles: [".manual-link{cursor:pointer;display:block;text-decoration:underline}\n"] }]
|
|
236
237
|
}], function () { return [{ type: i1.AddressesService }, { type: i2.IsCompoundPipe }]; }, { writeComplexFieldComponent: [{
|
|
237
238
|
type: ViewChild,
|
|
238
239
|
args: ['writeComplexFieldComponent', { static: false }]
|
|
@@ -242,4 +243,4 @@ WriteAddressFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
|
|
|
242
243
|
}], formGroup: [{
|
|
243
244
|
type: Input
|
|
244
245
|
}] }); })();
|
|
245
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtYWRkcmVzcy1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9hZGRyZXNzL3dyaXRlLWFkZHJlc3MtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvYWRkcmVzcy93cml0ZS1hZGRyZXNzLWZpZWxkLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBaUIsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SCxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMzRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7SUNBakQsZ0NBQW9EO0lBQUEsWUFBdUM7O0lBQUEsaUJBQU87O0lBQTlDLGVBQXVDO0lBQXZDLGdFQUF1Qzs7Ozs7O0lBSjdGLDhCQUFnSyxlQUFBLGVBQUE7SUFFbkksWUFBd0M7O0lBQUEsaUJBQU8sRUFBQTtJQUUxRSwwRkFBa0c7SUFDbEcsNEJBQ2lJO0lBQ2pJLGtDQUF1RTtJQUF4Qiw4S0FBUyxlQUFBLG9CQUFhLENBQUEsSUFBQztJQUFDLFlBQWlDOztJQUFBLGlCQUFTLEVBQUE7OztJQVBsRSw2REFBd0MsZ0VBQUE7SUFDaEYsZUFBd0M7SUFBeEMsNkRBQXdDO0lBQ3BCLGVBQXdDO0lBQXhDLGlFQUF3QztJQUV0QyxlQUFxQjtJQUFyQiw2Q0FBcUI7SUFDL0IsZUFBbUQ7SUFBbkQsNkVBQW1ELCtDQUFBLGdDQUFBO0lBRUMsZUFBaUM7SUFBakMsMkRBQWlDOzs7SUFTdEcsa0NBQXFGO0lBQ25GLFlBQ0Y7O0lBQUEsaUJBQVM7OztJQUY0QyxnREFBK0I7SUFDbEYsZUFDRjtJQURFLG1GQUNGOzs7O0lBUkosK0JBQWtFLGVBQUEsZUFBQTtJQUVyQyxZQUFzQzs7SUFBQSxpQkFBTyxFQUFBO0lBR3hFLGtDQUFpTDtJQUExQyxrTEFBVSxlQUFBLHlCQUFpQixDQUFBLElBQUM7SUFDakssOEZBRVM7SUFDWCxpQkFBUyxFQUFBOzs7SUFSRixlQUFzQztJQUF0QywyREFBc0M7SUFDbEIsZUFBc0M7SUFBdEMsK0RBQXNDO0lBR1gsZUFBcUM7SUFBckMsMERBQXFDLG1DQUFBO0lBQ3ZELGVBQWlCO0lBQWpCLCtDQUFpQjs7OztJQU12RCw2QkFBc0g7SUFBbkQseUtBQVMsZUFBQSxzQkFBYyxDQUFBLElBQUM7SUFDekYsWUFDRjs7SUFBQSxpQkFBSTs7SUFERixlQUNGO0lBREUsb0ZBQ0Y7OztJQTNCRiwyQkFBMEMsWUFBQTtJQUNqQixZQUE2Qjs7SUFBQSxpQkFBSztJQUV6RCxtRkFRTTtJQUVOLGlGQVVNO0lBRU4sNkVBRUk7SUFDTixpQkFBTTs7O0lBM0JtQixlQUE2QjtJQUE3Qiw0REFBNkI7SUFFeUYsZUFBaUI7SUFBakIseUNBQWlCO0lBVXJJLGVBQW9CO0lBQXBCLDRDQUFvQjtJQVlYLGVBQStCO0lBQS9CLHVEQUErQjs7QURYckUsTUFBTSxPQUFPLDBCQUEyQixTQUFRLDJCQUEyQjtJQW9CekUsWUFBWSxnQkFBa0MsRUFBbUIsY0FBOEI7UUFDN0YsS0FBSyxFQUFFLENBQUM7UUFEdUQsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBUnhGLHFCQUFnQixHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBTXJDLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBSTdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztJQUMzQyxDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM1RCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUMvRDtJQUNILENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRTtZQUN4QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztTQUM3QjthQUFNO1lBQ0wsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7WUFDN0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFDckMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQzVCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FDOUYsTUFBTSxDQUFDLEVBQUU7Z0JBQ1AsTUFBTSxDQUFDLE9BQU8sQ0FDWixPQUFPLENBQUMsRUFBRTtvQkFDUixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLGFBQWEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDN0QsQ0FBQyxDQUNGLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQ3pCLElBQUksYUFBYSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FDNUUsQ0FBQztZQUNKLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsdURBQXVELFFBQVEsS0FBSyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUN6RixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FDekIsSUFBSSxhQUFhLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUM1RSxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7WUFDTCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBRU0sY0FBYztRQUNuQixJQUFJLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN6RSxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzNDO0lBQ0gsQ0FBQztJQUVNLFlBQVk7UUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVNLHlCQUF5QjtRQUM5QixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsY0FBYztlQUNyRSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsRUFBRTtZQUM1RSxPQUFPLElBQUksQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQUVNLHNCQUFzQjtRQUMzQixJQUFJLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxFQUFFO1lBQ3BDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLElBQUksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsWUFBWSxFQUFFO1lBQ3JGLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztRQUNuRSxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxPQUFPLEVBQUU7WUFDWCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNuQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUU7b0JBQ3pCLFVBQVUsR0FBRyxJQUFJLENBQUM7aUJBQ25CO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFTSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQzlDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU0sV0FBVyxDQUFDLE9BQXNCO1FBQ3ZDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0IsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BDLElBQUksTUFBTSxFQUFFO1lBQ1YsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQUVNLGFBQWEsQ0FBQyxTQUFpQjtRQUNwQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxTQUFTLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRU8sWUFBWSxDQUFDLGlCQUFpQjtRQUNwQyxPQUFPLGlCQUFpQixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCO1lBQ2pELENBQUMsQ0FBQyxHQUFHLGlCQUFpQixHQUFHLGlCQUFpQixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxhQUFhLE9BQU8sQ0FBQztJQUMxRixDQUFDO0lBRU8sWUFBWTtRQUNsQixJQUFJLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxZQUFZLEVBQUU7WUFDaEQsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFlBQVksQ0FBQyxRQUFRLENBQ25ELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUNyQixDQUFDO1NBQ0g7SUFDSCxDQUFDOztvR0FuSVUsMEJBQTBCOzZFQUExQiwwQkFBMEI7O3VCQUl2QixxQkFBcUI7Ozs7OztRQ25CckMsOEJBQW9DO1FBQ2xDLDJFQTRCTTtRQUVOLHFEQVMrQjtRQUNqQyxpQkFBTTs7UUF6Q2tCLDZCQUFXO1FBQzNCLGVBQWtDO1FBQWxDLHVEQUFrQztRQStCdEMsZUFBb0M7UUFBcEMsc0RBQW9DLDRCQUFBLHNCQUFBLHNCQUFBLDRCQUFBLHlCQUFBLHlDQUFBOzt1RkRqQjNCLDBCQUEwQjtjQUx0QyxTQUFTOzJCQUNFLHlCQUF5QjtnR0FNNUIsMEJBQTBCO2tCQURoQyxTQUFTO21CQUFDLDRCQUE0QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUluRCxzQkFBc0I7a0JBRDVCLFlBQVk7bUJBQUMscUJBQXFCO1lBTTVCLFNBQVM7a0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBRdWVyeUxpc3QsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9jdXNFbGVtZW50RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcy9mb2N1cy1lbGVtZW50JztcbmltcG9ydCB7IEFkZHJlc3NNb2RlbCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9hZGRyZXNzZXMvYWRkcmVzcy5tb2RlbCc7XG5pbXBvcnQgeyBBZGRyZXNzZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYWRkcmVzc2VzL2FkZHJlc3Nlcy5zZXJ2aWNlJztcbmltcG9ydCB7IEFic3RyYWN0RmllbGRXcml0ZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtZmllbGQvYWJzdHJhY3QtZmllbGQtd3JpdGUuY29tcG9uZW50JztcbmltcG9ydCB7IFdyaXRlQ29tcGxleEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcGxleC93cml0ZS1jb21wbGV4LWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJc0NvbXBvdW5kUGlwZSB9IGZyb20gJy4uL3V0aWxzL2lzLWNvbXBvdW5kLnBpcGUnO1xuaW1wb3J0IHsgQWRkcmVzc09wdGlvbiB9IGZyb20gJy4vYWRkcmVzcy1vcHRpb24ubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2Qtd3JpdGUtYWRkcmVzcy1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnd3JpdGUtYWRkcmVzcy1maWVsZC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ3dyaXRlLWFkZHJlc3MtZmllbGQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFdyaXRlQWRkcmVzc0ZpZWxkQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RGaWVsZFdyaXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBAVmlld0NoaWxkKCd3cml0ZUNvbXBsZXhGaWVsZENvbXBvbmVudCcsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBwdWJsaWMgd3JpdGVDb21wbGV4RmllbGRDb21wb25lbnQ6IFdyaXRlQ29tcGxleEZpZWxkQ29tcG9uZW50O1xuXG4gIEBWaWV3Q2hpbGRyZW4oRm9jdXNFbGVtZW50RGlyZWN0aXZlKVxuICBwdWJsaWMgZm9jdXNFbGVtZW50RGlyZWN0aXZlczogUXVlcnlMaXN0PEZvY3VzRWxlbWVudERpcmVjdGl2ZT47XG5cbiAgcHVibGljIGFkZHJlc3Nlc1NlcnZpY2U6IEFkZHJlc3Nlc1NlcnZpY2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuXG4gIHB1YmxpYyBhZGRyZXNzRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gIHB1YmxpYyBwb3N0Y29kZTogRm9ybUNvbnRyb2w7XG4gIHB1YmxpYyBhZGRyZXNzTGlzdDogRm9ybUNvbnRyb2w7XG5cbiAgcHVibGljIGFkZHJlc3NPcHRpb25zOiBBZGRyZXNzT3B0aW9uW107XG5cbiAgcHVibGljIG1pc3NpbmdQb3N0Y29kZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKGFkZHJlc3Nlc1NlcnZpY2U6IEFkZHJlc3Nlc1NlcnZpY2UsIHByaXZhdGUgcmVhZG9ubHkgaXNDb21wb3VuZFBpcGU6IElzQ29tcG91bmRQaXBlKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZHJlc3Nlc1NlcnZpY2UgPSBhZGRyZXNzZXNTZXJ2aWNlO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0NvbXBsZXhXaXRoSGlkZGVuRmllbGRzKCkpIHtcbiAgICAgIHRoaXMucG9zdGNvZGUgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuICAgICAgdGhpcy5hZGRyZXNzRm9ybUdyb3VwLmFkZENvbnRyb2woJ3Bvc3Rjb2RlJywgdGhpcy5wb3N0Y29kZSk7XG4gICAgICB0aGlzLmFkZHJlc3NMaXN0ID0gbmV3IEZvcm1Db250cm9sKCcnKTtcbiAgICAgIHRoaXMuYWRkcmVzc0Zvcm1Hcm91cC5hZGRDb250cm9sKCdhZGRyZXNzJywgdGhpcy5hZGRyZXNzTGlzdCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZpbmRBZGRyZXNzKCkge1xuICAgIGlmICghdGhpcy5wb3N0Y29kZS52YWx1ZSkge1xuICAgICAgdGhpcy5taXNzaW5nUG9zdGNvZGUgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1pc3NpbmdQb3N0Y29kZSA9IGZhbHNlO1xuICAgICAgY29uc3QgcG9zdGNvZGUgPSB0aGlzLnBvc3Rjb2RlLnZhbHVlO1xuICAgICAgdGhpcy5jYXNlRmllbGQudmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy5hZGRyZXNzT3B0aW9ucyA9IFtdO1xuICAgICAgdGhpcy5hZGRyZXNzZXNTZXJ2aWNlLmdldEFkZHJlc3Nlc0ZvclBvc3Rjb2RlKHBvc3Rjb2RlLnJlcGxhY2UoJyAnLCAnJykudG9VcHBlckNhc2UoKSkuc3Vic2NyaWJlKFxuICAgICAgICByZXN1bHQgPT4ge1xuICAgICAgICAgIHJlc3VsdC5mb3JFYWNoKFxuICAgICAgICAgICAgYWRkcmVzcyA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuYWRkcmVzc09wdGlvbnMucHVzaChuZXcgQWRkcmVzc09wdGlvbihhZGRyZXNzLCBudWxsKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmFkZHJlc3NPcHRpb25zLnVuc2hpZnQoXG4gICAgICAgICAgICBuZXcgQWRkcmVzc09wdGlvbih1bmRlZmluZWQsIHRoaXMuZGVmYXVsdExhYmVsKHRoaXMuYWRkcmVzc09wdGlvbnMubGVuZ3RoKSlcbiAgICAgICAgICApO1xuICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgQW4gZXJyb3Igb2NjdXJyZWQgcmV0cmlldmluZyBhZGRyZXNzZXMgZm9yIHBvc3Rjb2RlICR7cG9zdGNvZGV9LiAke2Vycm9yfWApO1xuICAgICAgICAgIHRoaXMuYWRkcmVzc09wdGlvbnMudW5zaGlmdChcbiAgICAgICAgICAgIG5ldyBBZGRyZXNzT3B0aW9uKHVuZGVmaW5lZCwgdGhpcy5kZWZhdWx0TGFiZWwodGhpcy5hZGRyZXNzT3B0aW9ucy5sZW5ndGgpKVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgdGhpcy5hZGRyZXNzTGlzdC5zZXRWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5yZWZvY3VzRWxlbWVudCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWZvY3VzRWxlbWVudCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb2N1c0VsZW1lbnREaXJlY3RpdmVzICYmIHRoaXMuZm9jdXNFbGVtZW50RGlyZWN0aXZlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmZvY3VzRWxlbWVudERpcmVjdGl2ZXMuZmlyc3QuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYmxhbmtBZGRyZXNzKCkge1xuICAgIHRoaXMuY2FzZUZpZWxkLnZhbHVlID0gbmV3IEFkZHJlc3NNb2RlbCgpO1xuICAgIHRoaXMuc2V0Rm9ybVZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgaXNDb21wbGV4V2l0aEhpZGRlbkZpZWxkcygpIHtcbiAgICBpZiAodGhpcy5jYXNlRmllbGQuaXNDb21wbGV4KCkgJiYgdGhpcy5jYXNlRmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkc1xuICAgICAgJiYgdGhpcy5jYXNlRmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcy5zb21lKGNmID0+IGNmLmhpZGRlbiA9PT0gdHJ1ZSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzaG91bGRTaG93RGV0YWlsRmllbGRzKCkge1xuICAgIGlmICh0aGlzLmlzQ29tcGxleFdpdGhIaWRkZW5GaWVsZHMoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzRXhwYW5kZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoIXRoaXMud3JpdGVDb21wbGV4RmllbGRDb21wb25lbnQgfHwgIXRoaXMud3JpdGVDb21wbGV4RmllbGRDb21wb25lbnQuY29tcGxleEdyb3VwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGFkZHJlc3MgPSB0aGlzLndyaXRlQ29tcGxleEZpZWxkQ29tcG9uZW50LmNvbXBsZXhHcm91cC52YWx1ZTtcbiAgICBsZXQgaGFzQWRkcmVzcyA9IGZhbHNlO1xuICAgIGlmIChhZGRyZXNzKSB7XG4gICAgICBPYmplY3Qua2V5cyhhZGRyZXNzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgaWYgKGFkZHJlc3Nba2V5XSAhPT0gbnVsbCkge1xuICAgICAgICAgIGhhc0FkZHJlc3MgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc0FkZHJlc3M7XG4gIH1cblxuICBwdWJsaWMgYWRkcmVzc1NlbGVjdGVkKCkge1xuICAgIHRoaXMuY2FzZUZpZWxkLnZhbHVlID0gdGhpcy5hZGRyZXNzTGlzdC52YWx1ZTtcbiAgICB0aGlzLnNldEZvcm1WYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICBjb25zdCBjaGFuZ2UgPSBjaGFuZ2VzWydjYXNlRmllbGQnXTtcbiAgICBpZiAoY2hhbmdlKSB7XG4gICAgICB0aGlzLnNldEZvcm1WYWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBidWlsZElkUHJlZml4KGVsZW1lbnRJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5pZFByZWZpeH1fJHtlbGVtZW50SWR9YDtcbiAgfVxuXG4gIHByaXZhdGUgZGVmYXVsdExhYmVsKG51bWJlck9mQWRkcmVzc2VzKSB7XG4gICAgcmV0dXJuIG51bWJlck9mQWRkcmVzc2VzID09PSAwID8gJ05vIGFkZHJlc3MgZm91bmQnXG4gICAgICA6IGAke251bWJlck9mQWRkcmVzc2VzfSR7bnVtYmVyT2ZBZGRyZXNzZXMgPT09IDEgPyAnIGFkZHJlc3MgJyA6ICcgYWRkcmVzc2VzICd9Zm91bmRgO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRGb3JtVmFsdWUoKSB7XG4gICAgaWYgKHRoaXMud3JpdGVDb21wbGV4RmllbGRDb21wb25lbnQuY29tcGxleEdyb3VwKSB7XG4gICAgICB0aGlzLndyaXRlQ29tcGxleEZpZWxkQ29tcG9uZW50LmNvbXBsZXhHcm91cC5zZXRWYWx1ZShcbiAgICAgICAgdGhpcy5jYXNlRmllbGQudmFsdWVcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiIFtpZF09XCJpZCgpXCI+XG4gIDxkaXYgKm5nSWY9XCIhaXNDb21wbGV4V2l0aEhpZGRlbkZpZWxkcygpXCI+XG4gICAgPGgyIGNsYXNzPVwiaGVhZGluZy1oMlwiPnt7Y2FzZUZpZWxkIHwgY2NkRmllbGRMYWJlbH19PC9oMj5cblxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGJvdHRvbS0zMCBwb3N0Y29kZUxvb2t1cFwiIFtpZF09XCJjcmVhdGVFbGVtZW50SWQoJ3Bvc3Rjb2RlTG9va3VwJylcIiBbbmdDbGFzc109XCJ7J2Zvcm0tZ3JvdXAtZXJyb3InOiBtaXNzaW5nUG9zdGNvZGV9XCIgKm5nSWY9XCIhaXNFeHBhbmRlZFwiPlxuICAgICAgPGxhYmVsIFtmb3JdPVwiY3JlYXRlRWxlbWVudElkKCdwb3N0Y29kZUlucHV0JylcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3snRW50ZXIgYSBVSyBwb3N0Y29kZScgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgICA8c3BhbiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cIm1pc3NpbmdQb3N0Y29kZVwiPnt7J0VudGVyIHRoZSBQb3N0Y29kZScgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtuZ0NsYXNzXT1cInsnZ292dWstaW5wdXQtLWVycm9yJzogbWlzc2luZ1Bvc3Rjb2RlfVwiXG4gICAgICBbaWRdPVwiY3JlYXRlRWxlbWVudElkKCdwb3N0Y29kZUlucHV0JylcIiBuYW1lPVwicG9zdGNvZGVcIiBjbGFzcz1cImZvcm0tY29udHJvbCBwb3N0Y29kZWlucHV0IGlubGluZS1ibG9ja1wiIFtmb3JtQ29udHJvbF09XCJwb3N0Y29kZVwiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidXR0b24gYnV0dG9uLTMwXCIgKGNsaWNrKT1cImZpbmRBZGRyZXNzKClcIj57eydGaW5kIGFkZHJlc3MnIHwgcnB4VHJhbnNsYXRlfX08L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgKm5nSWY9XCJhZGRyZXNzT3B0aW9uc1wiIGlkPVwic2VsZWN0QWRkcmVzc1wiPlxuICAgICAgPGxhYmVsIFtmb3JdPVwiY3JlYXRlRWxlbWVudElkKCdhZGRyZXNzTGlzdCcpXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7J1NlbGVjdCBhbiBhZGRyZXNzJyB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgPC9sYWJlbD5cblxuICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBjY2QtZHJvcGRvd24gYWRkcmVzc0xpc3RcIiBbaWRdPVwiY3JlYXRlRWxlbWVudElkKCdhZGRyZXNzTGlzdCcpXCIgbmFtZT1cImFkZHJlc3NcIiBbZm9ybUNvbnRyb2xdPVwiYWRkcmVzc0xpc3RcIiAoY2hhbmdlKT1cImFkZHJlc3NTZWxlY3RlZCgpXCIgZm9jdXNFbGVtZW50PlxuICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBhZGRyZXNzT3B0aW9uIG9mIGFkZHJlc3NPcHRpb25zXCIgW25nVmFsdWVdPVwiYWRkcmVzc09wdGlvbi52YWx1ZVwiPlxuICAgICAgICAgIHt7YWRkcmVzc09wdGlvbi5kZXNjcmlwdGlvbiB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgIDwvb3B0aW9uPlxuICAgICAgPC9zZWxlY3Q+XG4gICAgPC9kaXY+XG5cbiAgICA8YSBjbGFzcz1cIm1hbnVhbC1saW5rIGJvdHRvbS0zMFwiICpuZ0lmPVwiIXNob3VsZFNob3dEZXRhaWxGaWVsZHMoKVwiIChjbGljayk9XCJibGFua0FkZHJlc3MoKVwiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIj5cbiAgICAgIHt7XCJJIGNhbid0IGVudGVyIGEgVUsgcG9zdGNvZGVcIiB8IHJweFRyYW5zbGF0ZX19XG4gICAgPC9hPlxuICA8L2Rpdj5cblxuICA8Y2NkLXdyaXRlLWNvbXBsZXgtdHlwZS1maWVsZFxuICAgIFtoaWRkZW5dPVwiIXNob3VsZFNob3dEZXRhaWxGaWVsZHMoKVwiXG4gICAgW2Nhc2VGaWVsZF09XCJjYXNlRmllbGRcIlxuICAgIFtyZW5kZXJMYWJlbF09XCJmYWxzZVwiXG4gICAgW3BhcmVudF09XCJwYXJlbnRcIlxuICAgIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcbiAgICBbaWdub3JlTWFuZGF0b3J5XT1cInRydWVcIlxuICAgIFtpZFByZWZpeF09XCJidWlsZElkUHJlZml4KCdkZXRhaWwnKVwiXG4gICAgI3dyaXRlQ29tcGxleEZpZWxkQ29tcG9uZW50PlxuICA8L2NjZC13cml0ZS1jb21wbGV4LXR5cGUtZmllbGQ+XG48L2Rpdj5cbiJdfQ==
|
|
246
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtYWRkcmVzcy1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9hZGRyZXNzL3dyaXRlLWFkZHJlc3MtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvYWRkcmVzcy93cml0ZS1hZGRyZXNzLWZpZWxkLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBaUIsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SCxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMzRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7SUNBakQsZ0NBQW9EO0lBQUEsWUFBdUM7O0lBQUEsaUJBQU87O0lBQTlDLGVBQXVDO0lBQXZDLGdFQUF1Qzs7Ozs7O0lBSjdGLDhCQUFnSyxlQUFBLGVBQUE7SUFF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QkFBQyw0QkFBNEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFJbkQsc0JBQXNCO2tCQUQ1QixZQUFZO21CQUFDLHFCQUFxQjtZQU01QixTQUFTO2tCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgUXVlcnlMaXN0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZvY3VzRWxlbWVudERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvZm9jdXMtZWxlbWVudCc7XG5pbXBvcnQgeyBBZGRyZXNzTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vYWRkcmVzc2VzL2FkZHJlc3MubW9kZWwnO1xuaW1wb3J0IHsgQWRkcmVzc2VzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FkZHJlc3Nlcy9hZGRyZXNzZXMuc2VydmljZSc7XG5pbXBvcnQgeyBBYnN0cmFjdEZpZWxkV3JpdGVDb21wb25lbnQgfSBmcm9tICcuLi9iYXNlLWZpZWxkL2Fic3RyYWN0LWZpZWxkLXdyaXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXcml0ZUNvbXBsZXhGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBsZXgvd3JpdGUtY29tcGxleC1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSXNDb21wb3VuZFBpcGUgfSBmcm9tICcuLi91dGlscy9pcy1jb21wb3VuZC5waXBlJztcbmltcG9ydCB7IEFkZHJlc3NPcHRpb24gfSBmcm9tICcuL2FkZHJlc3Mtb3B0aW9uLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXdyaXRlLWFkZHJlc3MtZmllbGQnLFxuICB0ZW1wbGF0ZVVybDogJ3dyaXRlLWFkZHJlc3MtZmllbGQuaHRtbCcsXG4gIHN0eWxlVXJsczogWyd3cml0ZS1hZGRyZXNzLWZpZWxkLnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBXcml0ZUFkZHJlc3NGaWVsZENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RmllbGRXcml0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQFZpZXdDaGlsZCgnd3JpdGVDb21wbGV4RmllbGRDb21wb25lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHVibGljIHdyaXRlQ29tcGxleEZpZWxkQ29tcG9uZW50OiBXcml0ZUNvbXBsZXhGaWVsZENvbXBvbmVudDtcblxuICBAVmlld0NoaWxkcmVuKEZvY3VzRWxlbWVudERpcmVjdGl2ZSlcbiAgcHVibGljIGZvY3VzRWxlbWVudERpcmVjdGl2ZXM6IFF1ZXJ5TGlzdDxGb2N1c0VsZW1lbnREaXJlY3RpdmU+O1xuXG4gIHB1YmxpYyBhZGRyZXNzZXNTZXJ2aWNlOiBBZGRyZXNzZXNTZXJ2aWNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcblxuICBwdWJsaWMgYWRkcmVzc0Zvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICBwdWJsaWMgcG9zdGNvZGU6IEZvcm1Db250cm9sO1xuICBwdWJsaWMgYWRkcmVzc0xpc3Q6IEZvcm1Db250cm9sO1xuXG4gIHB1YmxpYyBhZGRyZXNzT3B0aW9uczogQWRkcmVzc09wdGlvbltdO1xuXG4gIHB1YmxpYyBtaXNzaW5nUG9zdGNvZGUgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihhZGRyZXNzZXNTZXJ2aWNlOiBBZGRyZXNzZXNTZXJ2aWNlLCBwcml2YXRlIHJlYWRvbmx5IGlzQ29tcG91bmRQaXBlOiBJc0NvbXBvdW5kUGlwZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hZGRyZXNzZXNTZXJ2aWNlID0gYWRkcmVzc2VzU2VydmljZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNDb21wbGV4V2l0aEhpZGRlbkZpZWxkcygpKSB7XG4gICAgICB0aGlzLnBvc3Rjb2RlID0gbmV3IEZvcm1Db250cm9sKCcnKTtcbiAgICAgIHRoaXMuYWRkcmVzc0Zvcm1Hcm91cC5hZGRDb250cm9sKCdwb3N0Y29kZScsIHRoaXMucG9zdGNvZGUpO1xuICAgICAgdGhpcy5hZGRyZXNzTGlzdCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG4gICAgICB0aGlzLmFkZHJlc3NGb3JtR3JvdXAuYWRkQ29udHJvbCgnYWRkcmVzcycsIHRoaXMuYWRkcmVzc0xpc3QpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmaW5kQWRkcmVzcygpIHtcbiAgICBpZiAoIXRoaXMucG9zdGNvZGUudmFsdWUpIHtcbiAgICAgIHRoaXMubWlzc2luZ1Bvc3Rjb2RlID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5taXNzaW5nUG9zdGNvZGUgPSBmYWxzZTtcbiAgICAgIGNvbnN0IHBvc3Rjb2RlID0gdGhpcy5wb3N0Y29kZS52YWx1ZTtcbiAgICAgIHRoaXMuY2FzZUZpZWxkLnZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMuYWRkcmVzc09wdGlvbnMgPSBbXTtcbiAgICAgIHRoaXMuYWRkcmVzc2VzU2VydmljZS5nZXRBZGRyZXNzZXNGb3JQb3N0Y29kZShwb3N0Y29kZS5yZXBsYWNlKCcgJywgJycpLnRvVXBwZXJDYXNlKCkpLnN1YnNjcmliZShcbiAgICAgICAgcmVzdWx0ID0+IHtcbiAgICAgICAgICByZXN1bHQuZm9yRWFjaChcbiAgICAgICAgICAgIGFkZHJlc3MgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmFkZHJlc3NPcHRpb25zLnB1c2gobmV3IEFkZHJlc3NPcHRpb24oYWRkcmVzcywgbnVsbCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5hZGRyZXNzT3B0aW9ucy51bnNoaWZ0KFxuICAgICAgICAgICAgbmV3IEFkZHJlc3NPcHRpb24odW5kZWZpbmVkLCB0aGlzLmRlZmF1bHRMYWJlbCh0aGlzLmFkZHJlc3NPcHRpb25zLmxlbmd0aCkpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2coYEFuIGVycm9yIG9jY3VycmVkIHJldHJpZXZpbmcgYWRkcmVzc2VzIGZvciBwb3N0Y29kZSAke3Bvc3Rjb2RlfS4gJHtlcnJvcn1gKTtcbiAgICAgICAgICB0aGlzLmFkZHJlc3NPcHRpb25zLnVuc2hpZnQoXG4gICAgICAgICAgICBuZXcgQWRkcmVzc09wdGlvbih1bmRlZmluZWQsIHRoaXMuZGVmYXVsdExhYmVsKHRoaXMuYWRkcmVzc09wdGlvbnMubGVuZ3RoKSlcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIHRoaXMuYWRkcmVzc0xpc3Quc2V0VmFsdWUodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMucmVmb2N1c0VsZW1lbnQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVmb2N1c0VsZW1lbnQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZm9jdXNFbGVtZW50RGlyZWN0aXZlcyAmJiB0aGlzLmZvY3VzRWxlbWVudERpcmVjdGl2ZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5mb2N1c0VsZW1lbnREaXJlY3RpdmVzLmZpcnN0LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGJsYW5rQWRkcmVzcygpIHtcbiAgICB0aGlzLmNhc2VGaWVsZC52YWx1ZSA9IG5ldyBBZGRyZXNzTW9kZWwoKTtcbiAgICB0aGlzLnNldEZvcm1WYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGlzQ29tcGxleFdpdGhIaWRkZW5GaWVsZHMoKSB7XG4gICAgaWYgKHRoaXMuY2FzZUZpZWxkLmlzQ29tcGxleCgpICYmIHRoaXMuY2FzZUZpZWxkLmZpZWxkX3R5cGUuY29tcGxleF9maWVsZHNcbiAgICAgICYmIHRoaXMuY2FzZUZpZWxkLmZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMuc29tZShjZiA9PiBjZi5oaWRkZW4gPT09IHRydWUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2hvdWxkU2hvd0RldGFpbEZpZWxkcygpIHtcbiAgICBpZiAodGhpcy5pc0NvbXBsZXhXaXRoSGlkZGVuRmllbGRzKCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0V4cGFuZGVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLndyaXRlQ29tcGxleEZpZWxkQ29tcG9uZW50IHx8ICF0aGlzLndyaXRlQ29tcGxleEZpZWxkQ29tcG9uZW50LmNvbXBsZXhHcm91cCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBhZGRyZXNzID0gdGhpcy53cml0ZUNvbXBsZXhGaWVsZENvbXBvbmVudC5jb21wbGV4R3JvdXAudmFsdWU7XG4gICAgbGV0IGhhc0FkZHJlc3MgPSBmYWxzZTtcbiAgICBpZiAoYWRkcmVzcykge1xuICAgICAgT2JqZWN0LmtleXMoYWRkcmVzcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIGlmIChhZGRyZXNzW2tleV0gIT09IG51bGwpIHtcbiAgICAgICAgICBoYXNBZGRyZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBoYXNBZGRyZXNzO1xuICB9XG5cbiAgcHVibGljIGFkZHJlc3NTZWxlY3RlZCgpIHtcbiAgICB0aGlzLmNhc2VGaWVsZC52YWx1ZSA9IHRoaXMuYWRkcmVzc0xpc3QudmFsdWU7XG4gICAgdGhpcy5zZXRGb3JtVmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XG4gICAgY29uc3QgY2hhbmdlID0gY2hhbmdlc1snY2FzZUZpZWxkJ107XG4gICAgaWYgKGNoYW5nZSkge1xuICAgICAgdGhpcy5zZXRGb3JtVmFsdWUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYnVpbGRJZFByZWZpeChlbGVtZW50SWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuaWRQcmVmaXh9XyR7ZWxlbWVudElkfWA7XG4gIH1cblxuICBwcml2YXRlIGRlZmF1bHRMYWJlbChudW1iZXJPZkFkZHJlc3Nlcykge1xuICAgIHJldHVybiBudW1iZXJPZkFkZHJlc3NlcyA9PT0gMCA/ICdObyBhZGRyZXNzIGZvdW5kJ1xuICAgICAgOiBgJHtudW1iZXJPZkFkZHJlc3Nlc30ke251bWJlck9mQWRkcmVzc2VzID09PSAxID8gJyBhZGRyZXNzICcgOiAnIGFkZHJlc3NlcyAnfWZvdW5kYDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Rm9ybVZhbHVlKCkge1xuICAgIGlmICh0aGlzLndyaXRlQ29tcGxleEZpZWxkQ29tcG9uZW50LmNvbXBsZXhHcm91cCkge1xuICAgICAgdGhpcy53cml0ZUNvbXBsZXhGaWVsZENvbXBvbmVudC5jb21wbGV4R3JvdXAuc2V0VmFsdWUoXG4gICAgICAgIHRoaXMuY2FzZUZpZWxkLnZhbHVlXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiBbaWRdPVwiaWQoKVwiPlxuICA8ZGl2ICpuZ0lmPVwiIWlzQ29tcGxleFdpdGhIaWRkZW5GaWVsZHMoKVwiPlxuICAgIDxoMiBjbGFzcz1cImhlYWRpbmctaDJcIj57e2Nhc2VGaWVsZCB8IGNjZEZpZWxkTGFiZWwgfCBycHhUcmFuc2xhdGV9fTwvaDI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBib3R0b20tMzAgcG9zdGNvZGVMb29rdXBcIiBbaWRdPVwiY3JlYXRlRWxlbWVudElkKCdwb3N0Y29kZUxvb2t1cCcpXCIgW25nQ2xhc3NdPVwieydmb3JtLWdyb3VwLWVycm9yJzogbWlzc2luZ1Bvc3Rjb2RlfVwiICpuZ0lmPVwiIWlzRXhwYW5kZWRcIj5cbiAgICAgIDxsYWJlbCBbZm9yXT1cImNyZWF0ZUVsZW1lbnRJZCgncG9zdGNvZGVJbnB1dCcpXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7J0VudGVyIGEgVUsgcG9zdGNvZGUnIHwgcnB4VHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgICAgPHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJtaXNzaW5nUG9zdGNvZGVcIj57eydFbnRlciB0aGUgUG9zdGNvZGUnIHwgcnB4VHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbbmdDbGFzc109XCJ7J2dvdnVrLWlucHV0LS1lcnJvcic6IG1pc3NpbmdQb3N0Y29kZX1cIlxuICAgICAgW2lkXT1cImNyZWF0ZUVsZW1lbnRJZCgncG9zdGNvZGVJbnB1dCcpXCIgbmFtZT1cInBvc3Rjb2RlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcG9zdGNvZGVpbnB1dCBpbmxpbmUtYmxvY2tcIiBbZm9ybUNvbnRyb2xdPVwicG9zdGNvZGVcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi0zMFwiIChjbGljayk9XCJmaW5kQWRkcmVzcygpXCI+e3snRmluZCBhZGRyZXNzJyB8IHJweFRyYW5zbGF0ZX19PC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiICpuZ0lmPVwiYWRkcmVzc09wdGlvbnNcIiBpZD1cInNlbGVjdEFkZHJlc3NcIj5cbiAgICAgIDxsYWJlbCBbZm9yXT1cImNyZWF0ZUVsZW1lbnRJZCgnYWRkcmVzc0xpc3QnKVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImZvcm0tbGFiZWxcIj57eydTZWxlY3QgYW4gYWRkcmVzcycgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG5cbiAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY2NkLWRyb3Bkb3duIGFkZHJlc3NMaXN0XCIgW2lkXT1cImNyZWF0ZUVsZW1lbnRJZCgnYWRkcmVzc0xpc3QnKVwiIG5hbWU9XCJhZGRyZXNzXCIgW2Zvcm1Db250cm9sXT1cImFkZHJlc3NMaXN0XCIgKGNoYW5nZSk9XCJhZGRyZXNzU2VsZWN0ZWQoKVwiIGZvY3VzRWxlbWVudD5cbiAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgYWRkcmVzc09wdGlvbiBvZiBhZGRyZXNzT3B0aW9uc1wiIFtuZ1ZhbHVlXT1cImFkZHJlc3NPcHRpb24udmFsdWVcIj5cbiAgICAgICAgICB7e2FkZHJlc3NPcHRpb24uZGVzY3JpcHRpb24gfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICA8L29wdGlvbj5cbiAgICAgIDwvc2VsZWN0PlxuICAgIDwvZGl2PlxuXG4gICAgPGEgY2xhc3M9XCJtYW51YWwtbGluayBib3R0b20tMzBcIiAqbmdJZj1cIiFzaG91bGRTaG93RGV0YWlsRmllbGRzKClcIiAoY2xpY2spPVwiYmxhbmtBZGRyZXNzKClcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCI+XG4gICAgICB7e1wiSSBjYW4ndCBlbnRlciBhIFVLIHBvc3Rjb2RlXCIgfCBycHhUcmFuc2xhdGV9fVxuICAgIDwvYT5cbiAgPC9kaXY+XG5cbiAgPGNjZC13cml0ZS1jb21wbGV4LXR5cGUtZmllbGRcbiAgICBbaGlkZGVuXT1cIiFzaG91bGRTaG93RGV0YWlsRmllbGRzKClcIlxuICAgIFtjYXNlRmllbGRdPVwiY2FzZUZpZWxkXCJcbiAgICBbcmVuZGVyTGFiZWxdPVwiZmFsc2VcIlxuICAgIFtwYXJlbnRdPVwicGFyZW50XCJcbiAgICBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiXG4gICAgW2lnbm9yZU1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICBbaWRQcmVmaXhdPVwiYnVpbGRJZFByZWZpeCgnZGV0YWlsJylcIlxuICAgICN3cml0ZUNvbXBsZXhGaWVsZENvbXBvbmVudD5cbiAgPC9jY2Qtd3JpdGUtY29tcGxleC10eXBlLWZpZWxkPlxuPC9kaXY+XG4iXX0=
|