@bnsights/bbsf-admin-portal 1.0.67 → 1.0.69

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/README.md +15 -5
  2. package/{bnsights-bbsf-admin-portal-1.0.67.tgz → bnsights-bbsf-admin-portal-1.0.69.tgz} +0 -0
  3. package/bundles/bnsights-bbsf-admin-portal.umd.js +57 -112
  4. package/bundles/bnsights-bbsf-admin-portal.umd.js.map +1 -1
  5. package/esm2015/lib/Pages/_layout/components/topbar/topbar.component.js +1 -1
  6. package/esm2015/lib/Pages/departments/department/department.component.js +1 -2
  7. package/esm2015/lib/Pages/helpCenter/help-center/help-center.component.js +1 -3
  8. package/esm2015/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.js +1 -1
  9. package/esm2015/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.js +2 -4
  10. package/esm2015/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.js +2 -4
  11. package/esm2015/lib/Pages/lookups/lookup-group/lookup-group.component.js +1 -2
  12. package/esm2015/lib/Pages/lookups/lookup-item/lookup-item.component.js +2 -3
  13. package/esm2015/lib/Pages/roles/permissions/permissions.component.js +1 -2
  14. package/esm2015/lib/Pages/roles/permissionsets/permissionsets.component.js +1 -2
  15. package/esm2015/lib/Pages/sectors/sector/sector.component.js +1 -2
  16. package/esm2015/lib/Pages/shared/components/external-url/external-url.component.js +3 -1
  17. package/esm2015/lib/Pages/shared/components/survey/add-survey/add-survey.component.js +3 -2
  18. package/esm2015/lib/Pages/shared/components/survey/delete-survey/delete-survey.component.js +6 -7
  19. package/esm2015/lib/Pages/shared/components/survey/edit-survey/edit-survey.component.js +3 -3
  20. package/esm2015/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.js +4 -2
  21. package/esm2015/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.js +4 -2
  22. package/esm2015/lib/Pages/shared/components/survey/survey-info/preview/preview.component.js +10 -3
  23. package/esm2015/lib/Pages/shared/components/survey/survey-info/publish-survey/publish-survey.component.js +2 -2
  24. package/esm2015/lib/Pages/shared/components/survey/survey-info/result-question/result.component.js +2 -2
  25. package/esm2015/lib/Pages/shared/components/survey/survey-info/survey-info.component.js +20 -63
  26. package/esm2015/lib/Pages/shared/components/survey/survey-info/take-survey/take-survey.component.js +2 -2
  27. package/esm2015/lib/Pages/shared/components/survey/survey.component.js +2 -2
  28. package/esm2015/lib/Pages/shared/components/survey-form/survey-form.component.js +3 -3
  29. package/esm2015/lib/Pages/shared/models/SurveyModels/add-survey-submissio.js +1 -1
  30. package/esm2015/lib/Pages/shared/modules/survey.module.js +3 -3
  31. package/fesm2015/bnsights-bbsf-admin-portal.js +57 -112
  32. package/fesm2015/bnsights-bbsf-admin-portal.js.map +1 -1
  33. package/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.d.ts +2 -1
  34. package/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.d.ts +2 -1
  35. package/lib/Pages/shared/components/survey/survey-info/preview/preview.component.d.ts +2 -1
  36. package/lib/Pages/shared/components/survey/survey-info/survey-info.component.d.ts +3 -0
  37. package/lib/Pages/shared/models/SurveyModels/add-survey-submissio.d.ts +1 -0
  38. package/package.json +2 -2
  39. package/src/lib/assets/sass/custom-styles.scss +29 -0
@@ -607,7 +607,7 @@ export class EditQuestionComponent extends AppBaseComponent {
607
607
  }
608
608
  }
609
609
  EditQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: EditQuestionComponent, deps: [{ token: i0.Injector }, { token: i1.SurveyQuestionService }], target: i0.ɵɵFactoryTarget.Component });
610
- EditQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: EditQuestionComponent, selector: "app-edit-question", inputs: { pagingElement: "pagingElement" }, viewQueries: [{ propertyName: "EditModal", first: true, predicate: ["EditModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #EditModal let-modal>\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\" *ngIf=\"!isViewOnly\">\r\n {{l(\"Edit_Question\")}}\r\n </h4>\r\n <h4 class=\"modal-title\" *ngIf=\"isViewOnly\">\r\n {{l(\"Details\")}}\r\n </h4>\r\n <button type=\"button\" data-dismiss=\"modal\" class=\"btn btn-icon btn-sm\" (click)=\"modal.dismiss()\">\r\n <div class=\"svg-icon svg-icon-1 svg-icon-hover-brand\" [inlineSVG]=\"'/assets/images/modalclose.svg'\">\r\n </div>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <BBSF-Form [options]=\"editSurveyQuestionFormOptions\" (OnChange)=\"changeFormStatus($event)\">\r\n <BBSF-MultiLingualTextBox [options]=\"editQuestion\" [group]=\"editModelForm\"></BBSF-MultiLingualTextBox>\r\n <BBSF-MultiLingualTextArea [options]=\"editDescription\" [group]=\"editModelForm\"></BBSF-MultiLingualTextArea>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"surveyAudienceTypeID==audienceType.Both\">\r\n <BBSF-DropdownList [options]=\"audience\" [group]=\"editModelForm\"></BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"editQuestionType\" [group]=\"editModelForm\" (OnChange)=\"changeDataType($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"editSize\" [group]=\"editModelForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isSelect\" >\r\n <BBSF-Toggleslide [options]=\"editAllowScore\" [group]=\"editModelForm\" (OnChange)=\"changeScoring($event)\"></BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"editIsActive\" [group]=\"editModelForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6 col-sm-6\">\r\n <BBSF-Toggleslide [options]=\"editRequired\" [group]=\"editModelForm\"></BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"isText||isNumber\">\r\n <BBSF-TextBox [options]=\"editMinLength\" *ngIf=\"isText||isNumber\" [group]=\"editModelForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isText||isNumber\">\r\n <BBSF-TextBox [options]=\"editMaxLength\" *ngIf=\"isText||isNumber\" [group]=\"editModelForm\"></BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"isFile||isMultiFile||isImage\">\r\n <BBSF-TextBox [options]=\"editMaxFileSize\" *ngIf=\"isFile||isMultiFile||isImage\" [group]=\"editModelForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isMultiFile\">\r\n <BBSF-TextBox [options]=\"editMaxFileCount\" *ngIf=\"isMultiFile\" [group]=\"editModelForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isFile||isMultiFile\">\r\n <BBSF-DropdownList [options]=\"editFilesExtensions\" *ngIf=\"isFile||isMultiFile\" [group]=\"editModelForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <!-- <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"editDisplayOrder\" [group]=\"editModelForm\"></BBSF-TextBox>\r\n </div>\r\n </div> -->\r\n\r\n <div *ngIf=\"isSelect\" class=\"question-type-option\">\r\n <h5>{{l('Options')}}</h5>\r\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n <div class=\"card card-listing\" *ngFor=\"let Option of optionList;\" cdkDrag>\r\n <div class=\"card-header mb-0\">\r\n <div class=\"title fs-6 fw-bolder\">\r\n {{getCurrentFailOver(Option.Name)}}\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <span class=\"badge badge-square badge-dark me-4\" *ngIf=\"showScoreOption\" ngbTooltip=\"{{l('Score')}}\">\r\n {{Option.Score}}</span>\r\n \r\n <div class=\"badge badge-square badge-brand cursor-pointer me-4\" *ngIf=\"Option.LinkedQuestions?.length>0\" ngbTooltip=\"{{getLinkedQuestions(Option)}}\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" [inlineSVG]=\"'/assets/images/info.svg'\">\r\n </span>\r\n </div>\r\n \r\n <div class=\"badge badge-square badge-brand cursor-pointer me-4\" (click)=\"editOption(Option)\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" ngbTooltip=\"{{l('Edit')}}\" [inlineSVG]=\"'/assets/images/Edit.svg'\">\r\n </span>\r\n </div>\r\n <div class=\"badge badge-square badge-danger cursor-pointer\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" ngbTooltip=\"{{l('Delete')}}\" [inlineSVG]=\"'/assets/images/Trash.svg'\"\r\n (click)=\"deleteOption(Option)\" apppreventdoubleclick>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"required-text alert-danger\" *ngIf=\"errorMessage\">\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-danger me-4\"\r\n [inlineSVG]=\"'/assets/images/info.svg'\">\r\n\r\n </span>\r\n <div class=\"fw-bold\">\r\n <div class=\"fs-6 text-danger\">{{errorMessage}}</div>\r\n </div>\r\n </div>\r\n <div class=\"repeater-bg\" *ngIf=\"!isViewOnly\">\r\n <div class=\"row\">\r\n <BBSF-TextBox hidden=\"true\" [options]=\"editOptionId\" [group]=\"editOptionForm\">\r\n </BBSF-TextBox>\r\n\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"editNameOption\" [group]=\"editOptionForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"editOptionLinkedQuestions\" [group]=\"editOptionForm\">\r\n </BBSF-DropdownList>\r\n <BBSF-TextBox [options]=\"displayOrderOption\" [group]=\"editOptionForm\" hidden></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"idOption\" [group]=\"editOptionForm\" hidden></BBSF-TextBox>\r\n\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"showScoreOption\">\r\n <BBSF-TextBox [options]=\"scoreNumber\" [group]=\"editOptionForm\"></BBSF-TextBox>\r\n </div>\r\n\r\n </div>\r\n <button type=\"button\" (click)=\"addOption()\" *ngIf=\"!isOptionInEditMode\" class=\"btn btn-sm btn-brand w-100\">{{l(\"Add\")}}</button>\r\n <button type=\"button\" (click)=\"addOption()\" *ngIf=\"isOptionInEditMode\" class=\"btn btn-sm btn-brand w-100\">{{l(\"Edit\")}}</button>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"modal-footer pb-0 m-0\" >\r\n <button type=\"button\" class=\"btn btn-sm btn-light\" (click)=\"modal.dismiss()\">\r\n {{l(\"Cancel\")}}\r\n </button>\r\n <button appPreventDoubleClick type=\"submit\" [disabled]=\"!isEditFormChange\" *ngIf=\"!isViewOnly\" class=\"btn btn-sm btn-brand\">{{l(\"Save\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n\r\n</ng-template>\r\n", components: [{ type: i2.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["OnChange"] }, { type: i2.MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i2.MultiLingualTextAreaComponent, selector: "BBSF-MultiLingualTextArea", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i2.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { type: i2.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i2.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "forceEvalStyles", "evalScripts", "inlineSVG", "setSVGAttributes", "removeSVGAttributes", "fallbackImgUrl", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { type: i5.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "id", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListAutoScrollDisabled", "cdkDropListOrientation", "cdkDropListLockAxis", "cdkDropListData", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragDisabled", "cdkDragStartDelay", "cdkDragLockAxis", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragBoundary", "cdkDragRootElement", "cdkDragPreviewContainer", "cdkDragData", "cdkDragFreeDragPosition"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i6.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }] });
610
+ EditQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: EditQuestionComponent, selector: "app-edit-question", inputs: { pagingElement: "pagingElement", onSuccessEditHandler: "onSuccessEditHandler" }, viewQueries: [{ propertyName: "EditModal", first: true, predicate: ["EditModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #EditModal let-modal>\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\" *ngIf=\"!isViewOnly\">\r\n {{l(\"Edit_Question\")}}\r\n </h4>\r\n <h4 class=\"modal-title\" *ngIf=\"isViewOnly\">\r\n {{l(\"Details\")}}\r\n </h4>\r\n <button type=\"button\" data-dismiss=\"modal\" class=\"btn btn-icon btn-sm\" (click)=\"modal.dismiss()\">\r\n <div class=\"svg-icon svg-icon-1 svg-icon-hover-brand\" [inlineSVG]=\"'/assets/images/modalclose.svg'\">\r\n </div>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <BBSF-Form [options]=\"editSurveyQuestionFormOptions\" (OnChange)=\"changeFormStatus($event)\">\r\n <BBSF-MultiLingualTextBox [options]=\"editQuestion\" [group]=\"editModelForm\"></BBSF-MultiLingualTextBox>\r\n <BBSF-MultiLingualTextArea [options]=\"editDescription\" [group]=\"editModelForm\"></BBSF-MultiLingualTextArea>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"surveyAudienceTypeID==audienceType.Both\">\r\n <BBSF-DropdownList [options]=\"audience\" [group]=\"editModelForm\"></BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"editQuestionType\" [group]=\"editModelForm\" (OnChange)=\"changeDataType($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"editSize\" [group]=\"editModelForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isSelect\" >\r\n <BBSF-Toggleslide [options]=\"editAllowScore\" [group]=\"editModelForm\" (OnChange)=\"changeScoring($event)\"></BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"editIsActive\" [group]=\"editModelForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6 col-sm-6\">\r\n <BBSF-Toggleslide [options]=\"editRequired\" [group]=\"editModelForm\"></BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"isText||isNumber\">\r\n <BBSF-TextBox [options]=\"editMinLength\" *ngIf=\"isText||isNumber\" [group]=\"editModelForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isText||isNumber\">\r\n <BBSF-TextBox [options]=\"editMaxLength\" *ngIf=\"isText||isNumber\" [group]=\"editModelForm\"></BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"isFile||isMultiFile||isImage\">\r\n <BBSF-TextBox [options]=\"editMaxFileSize\" *ngIf=\"isFile||isMultiFile||isImage\" [group]=\"editModelForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isMultiFile\">\r\n <BBSF-TextBox [options]=\"editMaxFileCount\" *ngIf=\"isMultiFile\" [group]=\"editModelForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isFile||isMultiFile\">\r\n <BBSF-DropdownList [options]=\"editFilesExtensions\" *ngIf=\"isFile||isMultiFile\" [group]=\"editModelForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <!-- <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"editDisplayOrder\" [group]=\"editModelForm\"></BBSF-TextBox>\r\n </div>\r\n </div> -->\r\n\r\n <div *ngIf=\"isSelect\" class=\"question-type-option\">\r\n <h5>{{l('Options')}}</h5>\r\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n <div class=\"card card-listing\" *ngFor=\"let Option of optionList;\" cdkDrag>\r\n <div class=\"card-header mb-0\">\r\n <div class=\"title fs-6 fw-bolder\">\r\n {{getCurrentFailOver(Option.Name)}}\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <span class=\"badge badge-square badge-dark me-4\" *ngIf=\"showScoreOption\" ngbTooltip=\"{{l('Score')}}\">\r\n {{Option.Score}}</span>\r\n \r\n <div class=\"badge badge-square badge-brand cursor-pointer me-4\" *ngIf=\"Option.LinkedQuestions?.length>0\" ngbTooltip=\"{{getLinkedQuestions(Option)}}\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" [inlineSVG]=\"'/assets/images/info.svg'\">\r\n </span>\r\n </div>\r\n \r\n <div class=\"badge badge-square badge-brand cursor-pointer me-4\" (click)=\"editOption(Option)\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" ngbTooltip=\"{{l('Edit')}}\" [inlineSVG]=\"'/assets/images/Edit.svg'\">\r\n </span>\r\n </div>\r\n <div class=\"badge badge-square badge-danger cursor-pointer\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" ngbTooltip=\"{{l('Delete')}}\" [inlineSVG]=\"'/assets/images/Trash.svg'\"\r\n (click)=\"deleteOption(Option)\" apppreventdoubleclick>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"required-text alert-danger\" *ngIf=\"errorMessage\">\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-danger me-4\"\r\n [inlineSVG]=\"'/assets/images/info.svg'\">\r\n\r\n </span>\r\n <div class=\"fw-bold\">\r\n <div class=\"fs-6 text-danger\">{{errorMessage}}</div>\r\n </div>\r\n </div>\r\n <div class=\"repeater-bg\" *ngIf=\"!isViewOnly\">\r\n <div class=\"row\">\r\n <BBSF-TextBox hidden=\"true\" [options]=\"editOptionId\" [group]=\"editOptionForm\">\r\n </BBSF-TextBox>\r\n\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"editNameOption\" [group]=\"editOptionForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"editOptionLinkedQuestions\" [group]=\"editOptionForm\">\r\n </BBSF-DropdownList>\r\n <BBSF-TextBox [options]=\"displayOrderOption\" [group]=\"editOptionForm\" hidden></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"idOption\" [group]=\"editOptionForm\" hidden></BBSF-TextBox>\r\n\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"showScoreOption\">\r\n <BBSF-TextBox [options]=\"scoreNumber\" [group]=\"editOptionForm\"></BBSF-TextBox>\r\n </div>\r\n\r\n </div>\r\n <button type=\"button\" (click)=\"addOption()\" *ngIf=\"!isOptionInEditMode\" class=\"btn btn-sm btn-brand w-100\">{{l(\"Add\")}}</button>\r\n <button type=\"button\" (click)=\"addOption()\" *ngIf=\"isOptionInEditMode\" class=\"btn btn-sm btn-brand w-100\">{{l(\"Edit\")}}</button>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"modal-footer pb-0 m-0\" >\r\n <button type=\"button\" class=\"btn btn-sm btn-light\" (click)=\"modal.dismiss()\">\r\n {{l(\"Cancel\")}}\r\n </button>\r\n <button appPreventDoubleClick type=\"submit\" [disabled]=\"!isEditFormChange\" *ngIf=\"!isViewOnly\" class=\"btn btn-sm btn-brand\">{{l(\"Save\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n\r\n</ng-template>\r\n", components: [{ type: i2.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["OnChange"] }, { type: i2.MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i2.MultiLingualTextAreaComponent, selector: "BBSF-MultiLingualTextArea", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i2.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { type: i2.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i2.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "forceEvalStyles", "evalScripts", "inlineSVG", "setSVGAttributes", "removeSVGAttributes", "fallbackImgUrl", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { type: i5.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "id", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListAutoScrollDisabled", "cdkDropListOrientation", "cdkDropListLockAxis", "cdkDropListData", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragDisabled", "cdkDragStartDelay", "cdkDragLockAxis", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragBoundary", "cdkDragRootElement", "cdkDragPreviewContainer", "cdkDragData", "cdkDragFreeDragPosition"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i6.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }] });
611
611
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: EditQuestionComponent, decorators: [{
612
612
  type: Component,
613
613
  args: [{
@@ -619,5 +619,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
619
619
  args: ['EditModal', { static: false }]
620
620
  }], pagingElement: [{
621
621
  type: Input
622
+ }], onSuccessEditHandler: [{
623
+ type: Input
622
624
  }] } });
623
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1xdWVzdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL3NoYXJlZC9jb21wb25lbnRzL3N1cnZleS9zdXJ2ZXktaW5mby9lZGl0LXF1ZXN0aW9uL2VkaXQtcXVlc3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9zaGFyZWQvY29tcG9uZW50cy9zdXJ2ZXkvc3VydmV5LWluZm8vZWRpdC1xdWVzdGlvbi9lZGl0LXF1ZXN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUF3QixLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBbUIsU0FBUyxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQWtCLFdBQVcsRUFBRSxTQUFTLEVBQUUsMkJBQTJCLEVBQUUsMEJBQTBCLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWpSLE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNwRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQzs7Ozs7Ozs7QUFPakcsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGdC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QyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckMsT0FBTyxDQUFDLFlBQVksR0FBQyxLQUFLLEdBQUMsQ0FBQyxDQUFDO1NBQzlCO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixHQUFFLElBQUksQ0FBQztJQUM5QixDQUFDOzttSEExc0JVLHFCQUFxQjt1R0FBckIscUJBQXFCLG9PQ2RsQyxvdVBBa0pBOzRGRHBJYSxxQkFBcUI7a0JBSmpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsV0FBVyxFQUFFLGdDQUFnQztpQkFDOUM7bUlBa0M0QyxTQUFTO3NCQUFuRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBNkJoQyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50LCBDb250cm9sTGF5b3V0LCBDdXN0b21WYWxpZGF0aW9uLCBEcm9wZG93bk9wdGlvbnMsIEVuZ2xpc2hBcmFiaWNEVE8sIEZvcmNlRGlyZWN0aW9uLCBGb3JtT3B0aW9ucywgSW5wdXRUeXBlLCBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMsIE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zLCBSYW5nZU51bWJlciwgVGV4dEJveE9wdGlvbnMsIFRvZ2dsZVNsaWRlT3B0aW9ucyB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBdWRpZW5jZVR5cGUsIFN1cnZleU9wdGlvblR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9FbnVtcy9FbnVtcyc7XHJcbmltcG9ydCB7IFN1cnZleVF1ZXN0aW9uRFRPIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL1N1cnZleU1vZGVscy9zdXJ2ZXktcXVlc3Rpb24nO1xyXG5pbXBvcnQgeyBTdXJ2ZXlRdWVzdGlvbk9wdGlvbkRUTyB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9TdXJ2ZXlNb2RlbHMvc3VydmV5LXF1ZXN0aW9uLW9wdGlvbic7XHJcbmltcG9ydCB7IFN1cnZleVF1ZXN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL1NlcnZpY2VzL3N1cnZleS1xdWVzdGlvbi5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWVkaXQtcXVlc3Rpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lZGl0LXF1ZXN0aW9uLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRWRpdFF1ZXN0aW9uQ29tcG9uZW50IGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG5cclxuXHJcblxyXG4gIHF1ZXN0aW9uVHlwZTogU3VydmV5T3B0aW9uVHlwZTtcclxuICBpc051bWJlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzVGV4dDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzRmlsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzTXVsdGlGaWxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNJbWFnZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzU2VsZWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgU2l6ZUxpc3Q6IGFueVtdID0gW107XHJcblxyXG4gIGVkaXRNb2RlbEZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBlZGl0U3VydmV5UXVlc3Rpb25Gb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gIGVkaXRRdWVzdGlvbjogTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnM7XHJcbiAgZWRpdERlc2NyaXB0aW9uOiBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnM7XHJcbiAgZWRpdFF1ZXN0aW9uVHlwZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIGF1ZGllbmNlOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgZWRpdFJlcXVpcmVkOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgZWRpdEFsbG93U2NvcmU6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICBlZGl0SGFzU2VhcmNoOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgZWRpdElzQWN0aXZlOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgZWRpdE1pbkxlbmd0aDogVGV4dEJveE9wdGlvbnM7XHJcbiAgZWRpdE1heExlbmd0aDogVGV4dEJveE9wdGlvbnM7XHJcbiAgZWRpdFJvd3NOdW1iZXI6IFRleHRCb3hPcHRpb25zO1xyXG4gIGVkaXRNYXhGaWxlU2l6ZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgZWRpdE1heEZpbGVDb3VudDogVGV4dEJveE9wdGlvbnM7XHJcbiAgZWRpdEZpbGVzRXh0ZW5zaW9uczogRHJvcGRvd25PcHRpb25zO1xyXG4gIGVkaXRTaXplOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgaXNFZGl0Rm9ybUNoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG51bWJlclZhbGlkYXRpb246IEN1c3RvbVZhbGlkYXRpb24gPSBuZXcgQ3VzdG9tVmFsaWRhdGlvbigpO1xyXG4gIEBWaWV3Q2hpbGQoJ0VkaXRNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBFZGl0TW9kYWw6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGVkaXRPcHRpb25Gb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgZWRpdE5hbWVPcHRpb246IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIHNjb3JlTnVtYmVyOiBUZXh0Qm94T3B0aW9ucztcclxuICBvcHRpb25MaXN0OiBTdXJ2ZXlRdWVzdGlvbk9wdGlvbkRUT1tdID0gW11cclxuICBlZGl0T3B0aW9uTGlua2VkUXVlc3Rpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgc2hvd1Njb3JlT3B0aW9uOiBib29sZWFuID0gZmFsc2VcclxuICBzaG93T3B0aW9uczogYm9vbGVhbiA9IGZhbHNlXHJcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmcgPSBudWxsXHJcbiAgdG90YWxTY29yZTogbnVtYmVyID0gMFxyXG4gIG1haW5Gb3JtQ29udHJvbHM6IGFueVtdO1xyXG4gIHN1cnZleUlEOiBzdHJpbmdcclxuICBlZGl0T3B0aW9uSWQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIHF1ZXN0aW9uSUQ6IGFueTtcclxuICBxdWVzdGlvbjogYW55O1xyXG4gIGVkaXREaXNwbGF5T3JkZXI6IFRleHRCb3hPcHRpb25zO1xyXG4gIHB1YmxpYyBhdWRpZW5jZVR5cGUgPSBBdWRpZW5jZVR5cGU7XHJcbiAgYXVkaWVuY2VUeXBlSUQ6IGFueTtcclxuICBzdXJ2ZXlBdWRpZW5jZVR5cGVJRDogYW55O1xyXG4gIGRpc3BsYXlPcmRlck9wdGlvbjogVGV4dEJveE9wdGlvbnM7XHJcbiAgaXNPcHRpb25JbkVkaXRNb2RlOiBib29sZWFuO1xyXG4gIFF1ZXN0aW9uczogYW55W107XHJcbiAgaXNWaWV3T25seTogYm9vbGVhbjtcclxuICBpZE9wdGlvbjogVGV4dEJveE9wdGlvbnM7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLCBwcml2YXRlIHN1cnZleVF1ZXN0aW9uU2VydmljZTogU3VydmV5UXVlc3Rpb25TZXJ2aWNlKSB7XHJcbiAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHBhZ2luZ0VsZW1lbnQ7XHJcblxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgMTI7IGluZGV4KyspIHtcclxuICAgICAgdmFyIGl0ZW0gPSB7IGtleTogaW5kZXggKyAxLCB2YWx1ZTogYCR7aW5kZXggKyAxfWAgfTtcclxuICAgICAgdGhpcy5TaXplTGlzdC5wdXNoKGl0ZW0pO1xyXG5cclxuICAgIH1cclxuICAgIHRoaXMubnVtYmVyVmFsaWRhdGlvbi5mdW5jdGlvbkJvZHkgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9PiB7XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZS50b1N0cmluZygpLm1hdGNoKC9eWzAtOV0qJC8pKSB7XHJcbiAgICAgICAgdGhpcy5udW1iZXJWYWxpZGF0aW9uLm1hc3NhZ2UgPSB0aGlzLmwoXCJJbnRlZ2VyTnVtYmVyVmFsaWRhdGlvbktleVwiKVxyXG4gICAgICAgIHJldHVybiB7ICdjdXN0b21lckVycm9yJzogdHJ1ZSB9O1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZS50b1N0cmluZygpLm1hdGNoKC9eWytdPyhbLl1cXGQrfFxcZCtbLl0/XFxkKikkLykpIHtcclxuICAgICAgICB0aGlzLm51bWJlclZhbGlkYXRpb24ubWFzc2FnZSA9IHRoaXMubChcIlBvc2l0aXZlTnVtYmVyVmFsaWRhdGlvbktleVwiKVxyXG4gICAgICAgIHJldHVybiB7ICdjdXN0b21lckVycm9yJzogdHJ1ZSB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcblxyXG4gIH1cclxuXHJcbiAgY2hhbmdlU2NvcmluZyh2YWx1ZSkge1xyXG4gICAgdGhpcy5zaG93U2NvcmVPcHRpb24gPSB2YWx1ZTtcclxuICAgIGlmICghdmFsdWUgJiYgdGhpcy5lZGl0T3B0aW9uRm9ybS5jb250cm9sc1snU2NvcmUnXSkge1xyXG4gICAgICB0aGlzLmVkaXRPcHRpb25Gb3JtLmNvbnRyb2xzWydTY29yZSddLnJlc2V0KClcclxuICAgICAgdGhpcy5lZGl0T3B0aW9uRm9ybS5jb250cm9sc1snU2NvcmUnXS5jbGVhclZhbGlkYXRvcnMoKVxyXG4gICAgICB0aGlzLmVkaXRPcHRpb25Gb3JtLmNvbnRyb2xzWydTY29yZSddLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlRGF0YVR5cGUoa2V5KSB7XHJcbiAgICB0aGlzLnVwZGF0ZUZvcm1TdGF0dXMoa2V5KTtcclxuICAgIHN3aXRjaCAoa2V5KSB7XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5UZXh0OlxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuTXVsdGlsaW5lVGV4dDpcclxuICAgICAgICB0aGlzLmlzVGV4dCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc051bWJlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc011bHRpRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNTZWxlY3QgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5OdW1iZXI6XHJcbiAgICAgICAgdGhpcy5pc051bWJlciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc1RleHQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNNdWx0aUZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzSW1hZ2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzU2VsZWN0ID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5GaWxlOlxyXG4gICAgICAgIHRoaXMuaXNGaWxlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1RleHQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuTXVsdGlGaWxlOlxyXG4gICAgICAgIHRoaXMuaXNNdWx0aUZpbGUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaXNOdW1iZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzVGV4dCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLkltYWdlOlxyXG4gICAgICAgIHRoaXMuaXNJbWFnZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc011bHRpRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNOdW1iZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzVGV4dCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuTXVsdGlwbGVTZWxlY3Q6XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5TaW5nbGVTZWxlY3Q6XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5SYWRpb0J1dHRvbjpcclxuICAgICAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1RleHQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNNdWx0aUZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzU2VsZWN0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzSW1hZ2UgPSBmYWxzZTtcclxuICAgICAgICBicmVha1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMuaXNOdW1iZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzVGV4dCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc011bHRpRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNTZWxlY3QgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzSW1hZ2UgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcblxyXG4gIH1cclxuICBjaGFuZ2VGb3JtU3RhdHVzKHZhbHVlKSB7XHJcbiAgICB0aGlzLmlzRWRpdEZvcm1DaGFuZ2UgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGVkaXRNb2RhbCA9IChpZCxzdXJ2ZXlBdWRpZW5jZVR5cGVJRCxpc1ZpZXdPbmx5PWZhbHNlKSA9PiB7XHJcbiAgICB0aGlzLmlzVmlld09ubHk9aXNWaWV3T25seTtcclxuICAgIHRoaXMuaXNFZGl0Rm9ybUNoYW5nZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc051bWJlciA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1RleHQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNGaWxlID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzU2VsZWN0ID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzSW1hZ2UgPSBmYWxzZTtcclxuICAgIHRoaXMub3B0aW9uTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBudWxsXHJcbiAgICB0aGlzLnF1ZXN0aW9uSUQgPSBpZDtcclxuICAgIHRoaXMuc3VydmV5UXVlc3Rpb25TZXJ2aWNlLmdldChpZCkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgbGV0IHJlc3VsdCA9IHJlcyBhcyBhbnk7XHJcbiAgICAgIHRoaXMucXVlc3Rpb24gPSByZXN1bHQucXVlc3Rpb247XHJcbiAgICAgIHRoaXMuUXVlc3Rpb25zPXJlc3VsdC5xdWVzdGlvbnM7XHJcbiAgICAgIHRoaXMuc3VydmV5SUQgPSB0aGlzLnF1ZXN0aW9uLnN1cnZleUlEO1xyXG4gICAgICB0aGlzLmF1ZGllbmNlVHlwZUlEID0gdGhpcy5xdWVzdGlvbi5hdWRpZW5jZUl0ZW1JRDtcclxuICAgICAgdGhpcy5zdXJ2ZXlBdWRpZW5jZVR5cGVJRCA9IHN1cnZleUF1ZGllbmNlVHlwZUlEO1xyXG4gICAgICB0aGlzLmVkaXRNb2RlbEZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICAgICAgdGhpcy5lZGl0T3B0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG5cclxuICAgICAgdGhpcy5lZGl0U3VydmV5UXVlc3Rpb25Gb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuZWRpdE1vZGVsRm9ybTtcclxuICAgICAgdGhpcy5lZGl0U3VydmV5UXVlc3Rpb25Gb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRFZGl0TW9kZWw7XHJcbiAgICAgIHRoaXMuZWRpdFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXRFZGl0RnVuY3Rpb247XHJcbiAgICAgIHRoaXMuZWRpdFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMuUGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50O1xyXG4gICAgICB0aGlzLmVkaXRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zLk9uU3VjY2Vzc0hhbmRsZXIgPSB0aGlzLm9uU3VjY2Vzc0VkaXRIYW5kbGVyO1xyXG4gICAgICB0aGlzLmVkaXRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zLkRpc2FibGVTdWNjZXNzTm90aWZpY2F0aW9uID0gdHJ1ZTtcclxuXHJcbiAgICAgIGxldCB0ZXh0ID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgICAgdGV4dC5BcmFiaWMgPSB0aGlzLnF1ZXN0aW9uLnRleHQuYXJhYmljO1xyXG4gICAgICB0ZXh0LkVuZ2xpc2ggPSB0aGlzLnF1ZXN0aW9uLnRleHQuZW5nbGlzaDtcclxuXHJcbiAgICAgIHRoaXMuZWRpdFF1ZXN0aW9uID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdFF1ZXN0aW9uLk5hbWUgPSBcIlRleHRcIjtcclxuICAgICAgdGhpcy5lZGl0UXVlc3Rpb24uQXJhYmljTGFiZWxLZXkgPSBcIlF1ZXN0aW9uSW5BcmFiaWNcIjtcclxuICAgICAgdGhpcy5lZGl0UXVlc3Rpb24uRW5nbGlzaExhYmVsS2V5ID0gXCJRdWVzdGlvbkluRW5nbGlzaFwiO1xyXG4gICAgICB0aGlzLmVkaXRRdWVzdGlvbi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0UXVlc3Rpb24uTWF4TGVuZ3RoID0gNDAwMDtcclxuICAgICAgdGhpcy5lZGl0UXVlc3Rpb24uTGFuZ3VhZ2VNb2RlID0gdGhpcy5nZXRMYW5ndWFnZU1vZGVWYWx1ZSgpO1xyXG4gICAgICB0aGlzLmVkaXRRdWVzdGlvbi5WYWx1ZSA9IHRleHQ7XHJcbiAgICAgIHRoaXMuZWRpdFF1ZXN0aW9uLklzRGlzYWJsZWQgPSBpc1ZpZXdPbmx5O1xyXG5cclxuICAgICAgdGhpcy5lZGl0RGVzY3JpcHRpb24gPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdERlc2NyaXB0aW9uLk5hbWUgPSBcIkRlc2NyaXB0aW9uXCI7XHJcbiAgICAgIHRoaXMuZWRpdERlc2NyaXB0aW9uLkFyYWJpY0xhYmVsS2V5ID0gXCJEZXNjcmlwdGlvbkluQXJhYmljXCI7XHJcbiAgICAgIHRoaXMuZWRpdERlc2NyaXB0aW9uLkVuZ2xpc2hMYWJlbEtleSA9IFwiRGVzY3JpcHRpb25JbkVuZ2xpc2hcIjtcclxuICAgICAgdGhpcy5lZGl0RGVzY3JpcHRpb24uSXNSZXF1aXJlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmVkaXREZXNjcmlwdGlvbi5NYXhMZW5ndGggPSAyNTA7XHJcbiAgICAgIHRoaXMuZWRpdERlc2NyaXB0aW9uLlJvd3MgPSAyO1xyXG4gICAgICB0aGlzLmVkaXREZXNjcmlwdGlvbi5BcmFiaWNMYWJlbERlc2NyaXB0aW9uID0gdGhpcy5sKFwiUXVlc3Rpb25EZXNjcmlwdGlvbkhpbnRBcmFiaWNcIik7XHJcbiAgICAgIHRoaXMuZWRpdERlc2NyaXB0aW9uLkVuZ2xpc2hMYWJlbERlc2NyaXB0aW9uID0gdGhpcy5sKFwiUXVlc3Rpb25EZXNjcmlwdGlvbkhpbnRFbmdsaXNoXCIpO1xyXG4gICAgICB0aGlzLmVkaXREZXNjcmlwdGlvbi5Jc0Rpc2FibGVkID0gaXNWaWV3T25seTtcclxuXHJcbiAgICAgIHRoaXMuZWRpdERlc2NyaXB0aW9uLkxhbmd1YWdlTW9kZSA9IHRoaXMuZ2V0TGFuZ3VhZ2VNb2RlVmFsdWUoKTtcclxuICAgICAgbGV0IGRlc2NyaXB0aW9uID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgICAgZGVzY3JpcHRpb24uQXJhYmljID0gdGhpcy5xdWVzdGlvbi5kZXNjcmlwdGlvbi5hcmFiaWM7XHJcbiAgICAgIGRlc2NyaXB0aW9uLkVuZ2xpc2ggPSB0aGlzLnF1ZXN0aW9uLmRlc2NyaXB0aW9uLmVuZ2xpc2g7XHJcbiAgICAgIHRoaXMuZWRpdERlc2NyaXB0aW9uLlZhbHVlID0gZGVzY3JpcHRpb247XHJcbiAgICAgIFxyXG5cclxuICAgICAgdGhpcy5lZGl0UXVlc3Rpb25UeXBlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXRRdWVzdGlvblR5cGUuTmFtZSA9IFwiUXVlc3Rpb25UeXBlSXRlbUlEXCI7XHJcbiAgICAgIHRoaXMuZWRpdFF1ZXN0aW9uVHlwZS5MYWJlbEtleSA9IFwiUHJvcGVydHlUeXBlXCI7XHJcbiAgICAgIHRoaXMuZWRpdFF1ZXN0aW9uVHlwZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0UXVlc3Rpb25UeXBlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0UXVlc3Rpb25UeXBlLkRhdGFTb3VyY2UgPSByZXN1bHQub3B0aW9uVHlwZXNcclxuICAgICAgdGhpcy5lZGl0UXVlc3Rpb25UeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdFF1ZXN0aW9uVHlwZS5TZWxlY3RlZEl0ZW1zID0gdGhpcy5xdWVzdGlvbi5xdWVzdGlvblR5cGVJdGVtSUQ7XHJcbiAgICAgIHRoaXMuZWRpdFF1ZXN0aW9uVHlwZS5Ob3RGb3VuZFRleHQgPSB0aGlzLmwoXCJOb1Jlc3VsdEZvdW5kXCIpO1xyXG4gICAgICB0aGlzLmVkaXRRdWVzdGlvblR5cGUuSXNEaXNhYmxlZCA9IHRydWU7XHJcblxyXG5cclxuXHJcbiAgICAgIHRoaXMuYXVkaWVuY2UgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYXVkaWVuY2UuTmFtZSA9IFwiQXVkaWVuY2VJdGVtSURcIlxyXG4gICAgICB0aGlzLmF1ZGllbmNlLkxhYmVsS2V5ID0gXCJBdWRpZW5jZVwiXHJcbiAgICAgIHRoaXMuYXVkaWVuY2UuSXNSZXF1aXJlZCA9IHRydWVcclxuICAgICAgdGhpcy5hdWRpZW5jZS5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuVmVydGljYWxcclxuICAgICAgdGhpcy5hdWRpZW5jZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlXHJcbiAgICAgIHRoaXMuYXVkaWVuY2UuU2hvd0NoZWNrYm94ID0gZmFsc2VcclxuICAgICAgdGhpcy5hdWRpZW5jZS5EYXRhU291cmNlID0gcmVzdWx0LmF1ZGllbmNlc1xyXG4gICAgICB0aGlzLmF1ZGllbmNlLlNlbGVjdGVkSXRlbXMgPSB0aGlzLnF1ZXN0aW9uLmF1ZGllbmNlSXRlbUlEO1xyXG4gICAgICB0aGlzLmF1ZGllbmNlLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLmwoXCJBdWRpZW5jZURlc2NyaXB0aW9uSGludFwiKTtcclxuICAgICAgdGhpcy5hdWRpZW5jZS5Jc0Rpc2FibGVkID0gaXNWaWV3T25seTtcclxuXHJcblxyXG5cclxuICAgICAgdGhpcy5lZGl0U2l6ZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0U2l6ZS5OYW1lID0gXCJTaXplXCI7XHJcbiAgICAgIHRoaXMuZWRpdFNpemUuTGFiZWxLZXkgPSBcIlNpemVcIjtcclxuICAgICAgdGhpcy5lZGl0U2l6ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0U2l6ZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdFNpemUuRGF0YVNvdXJjZSA9IHRoaXMuU2l6ZUxpc3Q7XHJcbiAgICAgIHRoaXMuZWRpdFNpemUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0U2l6ZS5TZWxlY3RlZEl0ZW1zID0gdGhpcy5xdWVzdGlvbi5vcHRpb25zLnNpemU7XHJcbiAgICAgIHRoaXMuZWRpdFNpemUuTm90Rm91bmRUZXh0ID0gdGhpcy5sKFwiTm9SZXN1bHRGb3VuZFwiKTtcclxuICAgICAgdGhpcy5lZGl0U2l6ZS5Jc0Rpc2FibGVkID0gaXNWaWV3T25seTtcclxuXHJcbiAgICAgIHRoaXMuZWRpdFJlcXVpcmVkID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXRSZXF1aXJlZC5OYW1lID0gXCJJc1JlcXVpcmVkXCI7XHJcbiAgICAgIHRoaXMuZWRpdFJlcXVpcmVkLkxhYmVsS2V5ID0gXCJJc1JlcXVpcmVkXCI7XHJcbiAgICAgIHRoaXMuZWRpdFJlcXVpcmVkLlZhbHVlID0gdGhpcy5xdWVzdGlvbi5pc1JlcXVpcmVkO1xyXG4gICAgICB0aGlzLmVkaXRSZXF1aXJlZC5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5sKFwiUmVxdWlyZWREZXNjcmlwdGlvbkhpbnRcIik7XHJcbiAgICAgIHRoaXMuZWRpdFJlcXVpcmVkLklzRGlzYWJsZWQgPSBpc1ZpZXdPbmx5O1xyXG5cclxuXHJcbiAgICAgIHRoaXMuZWRpdEFsbG93U2NvcmUgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdEFsbG93U2NvcmUuTmFtZSA9IFwiSXNBbGxvd1Njb3JpbmdcIjtcclxuICAgICAgdGhpcy5lZGl0QWxsb3dTY29yZS5MYWJlbEtleSA9IFwiQWxsb3dTY29yZVwiO1xyXG4gICAgICB0aGlzLmVkaXRBbGxvd1Njb3JlLlZhbHVlID0gdGhpcy5xdWVzdGlvbi5pc0FsbG93U2NvcmluZztcclxuICAgICAgdGhpcy5lZGl0QWxsb3dTY29yZS5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5sKFwiQWxsb3dTY29yZURlc2NyaXB0aW9uXCIpO1xyXG4gICAgICB0aGlzLmVkaXRBbGxvd1Njb3JlLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLmwoXCJBbGxvd1Njb3JlRGVzY3JpcHRpb25cIik7XHJcbiAgICAgIHRoaXMuZWRpdEFsbG93U2NvcmUuSXNEaXNhYmxlZCA9IGlzVmlld09ubHk7XHJcblxyXG4gICAgICB0aGlzLmVkaXRIYXNTZWFyY2ggPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdEhhc1NlYXJjaC5OYW1lID0gXCJIYXNTZWFyY2hcIjtcclxuICAgICAgdGhpcy5lZGl0SGFzU2VhcmNoLkxhYmVsS2V5ID0gXCJIYXNTZWFyY2hcIjtcclxuICAgICAgdGhpcy5lZGl0SGFzU2VhcmNoLklzRGlzYWJsZWQgPSBpc1ZpZXdPbmx5O1xyXG5cclxuICAgICAgdGhpcy5lZGl0SXNBY3RpdmUgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdElzQWN0aXZlLk5hbWUgPSBcIklzVmlzaWJsZVwiO1xyXG4gICAgICB0aGlzLmVkaXRJc0FjdGl2ZS5MYWJlbEtleSA9IFwiVmlzaWJsZVwiO1xyXG4gICAgICB0aGlzLmVkaXRJc0FjdGl2ZS5WYWx1ZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdElzQWN0aXZlLlZhbHVlID0gdGhpcy5xdWVzdGlvbi5pc1Zpc2libGU7XHJcbiAgICAgIHRoaXMuZWRpdElzQWN0aXZlLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLmwoXCJWaXNpYmxlRGVzY3JpcHRpb25IaW50XCIpO1xyXG4gICAgICB0aGlzLmVkaXRJc0FjdGl2ZS5Jc0Rpc2FibGVkID0gaXNWaWV3T25seTtcclxuXHJcblxyXG4gICAgICAvLyB0aGlzLmVkaXREaXNwbGF5T3JkZXIgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgLy8gdGhpcy5lZGl0RGlzcGxheU9yZGVyLk5hbWUgPSBcIkRpc3BsYXlPcmRlclwiO1xyXG4gICAgICAvLyB0aGlzLmVkaXREaXNwbGF5T3JkZXIuTGFiZWxLZXkgPSBcIkRpc3BsYXlPcmRlclwiO1xyXG4gICAgICAvLyB0aGlzLmVkaXREaXNwbGF5T3JkZXIuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIC8vIHRoaXMuZWRpdERpc3BsYXlPcmRlci5OdW1iZXJSYW5nZSA9IG5ldyBSYW5nZU51bWJlcigpO1xyXG4gICAgICAvLyB0aGlzLmVkaXREaXNwbGF5T3JkZXIuTnVtYmVyUmFuZ2UuRnJvbSA9IDE7XHJcbiAgICAgIC8vIHRoaXMuZWRpdERpc3BsYXlPcmRlci5UeXBlID0gSW5wdXRUeXBlLk51bWJlcjtcclxuICAgICAgLy8gdGhpcy5lZGl0RGlzcGxheU9yZGVyLlZhbHVlID0gdGhpcy5xdWVzdGlvbi5kaXNwbGF5T3JkZXI7XHJcbiAgICAgIC8vIHRoaXMuZWRpdERpc3BsYXlPcmRlci5DdXN0b21WYWxpZGF0aW9uID0gW3RoaXMubnVtYmVyVmFsaWRhdGlvbl07XHJcblxyXG4gICAgICB0aGlzLmVkaXRNYXhMZW5ndGggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0TWF4TGVuZ3RoLk5hbWUgPSBcIk1heExlbmd0aFwiO1xyXG4gICAgICB0aGlzLmVkaXRNYXhMZW5ndGguTGFiZWxLZXkgPSBcIk1heExlbmd0aFwiO1xyXG4gICAgICB0aGlzLmVkaXRNYXhMZW5ndGguSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdE1heExlbmd0aC5OdW1iZXJSYW5nZSA9IG5ldyBSYW5nZU51bWJlcigpO1xyXG4gICAgICB0aGlzLmVkaXRNYXhMZW5ndGguTnVtYmVyUmFuZ2UuRnJvbSA9IDE7XHJcbiAgICAgIHRoaXMuZWRpdE1heExlbmd0aC5OdW1iZXJSYW5nZS5UbyA9IDQwMDA7XHJcbiAgICAgIHRoaXMuZWRpdE1heExlbmd0aC5UeXBlID0gSW5wdXRUeXBlLk51bWJlcjtcclxuICAgICAgdGhpcy5lZGl0TWF4TGVuZ3RoLlZhbHVlID0gdGhpcy5xdWVzdGlvbi5vcHRpb25zLm1heExlbmd0aDtcclxuICAgICAgdGhpcy5lZGl0TWF4TGVuZ3RoLklzRGlzYWJsZWQgPSBpc1ZpZXdPbmx5O1xyXG5cclxuXHJcbiAgICAgIHRoaXMuZWRpdE1pbkxlbmd0aCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXRNaW5MZW5ndGguTmFtZSA9IFwiTWluTGVuZ3RoXCI7XHJcbiAgICAgIHRoaXMuZWRpdE1pbkxlbmd0aC5MYWJlbEtleSA9IFwiTWluTGVuZ3RoXCI7XHJcbiAgICAgIHRoaXMuZWRpdE1pbkxlbmd0aC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0TWluTGVuZ3RoLk51bWJlclJhbmdlID0gbmV3IFJhbmdlTnVtYmVyKCk7XHJcbiAgICAgIHRoaXMuZWRpdE1pbkxlbmd0aC5OdW1iZXJSYW5nZS5Gcm9tID0gMTtcclxuICAgICAgdGhpcy5lZGl0TWluTGVuZ3RoLk51bWJlclJhbmdlLlRvID0gNDAwMDtcclxuICAgICAgdGhpcy5lZGl0TWluTGVuZ3RoLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICB0aGlzLmVkaXRNaW5MZW5ndGguVmFsdWUgPSB0aGlzLnF1ZXN0aW9uLm9wdGlvbnMubWluTGVuZ3RoO1xyXG4gICAgICB0aGlzLmVkaXRNaW5MZW5ndGguSXNEaXNhYmxlZCA9IGlzVmlld09ubHk7XHJcblxyXG4gICAgICB0aGlzLmVkaXRSb3dzTnVtYmVyID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdFJvd3NOdW1iZXIuTmFtZSA9IFwiUm93c1wiO1xyXG4gICAgICB0aGlzLmVkaXRSb3dzTnVtYmVyLkxhYmVsS2V5ID0gXCJSb3dzXCI7XHJcbiAgICAgIHRoaXMuZWRpdFJvd3NOdW1iZXIuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdFJvd3NOdW1iZXIuTnVtYmVyUmFuZ2UgPSBuZXcgUmFuZ2VOdW1iZXIoKTtcclxuICAgICAgdGhpcy5lZGl0Um93c051bWJlci5OdW1iZXJSYW5nZS5Gcm9tID0gMTtcclxuICAgICAgdGhpcy5lZGl0Um93c051bWJlci5OdW1iZXJSYW5nZS5UbyA9IDIwO1xyXG4gICAgICB0aGlzLmVkaXRSb3dzTnVtYmVyLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICB0aGlzLmVkaXRSb3dzTnVtYmVyLlZhbHVlID0gdGhpcy5xdWVzdGlvbi5vcHRpb25zLnJvd3M7XHJcbiAgICAgIHRoaXMuZWRpdFJvd3NOdW1iZXIuSXNEaXNhYmxlZCA9IGlzVmlld09ubHk7XHJcblxyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlU2l6ZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlU2l6ZS5OYW1lID0gXCJNYXhGaWxlU2l6ZUluTUJcIjtcclxuICAgICAgdGhpcy5lZGl0TWF4RmlsZVNpemUuTGFiZWxLZXkgPSBcIk1heEZpbGVTaXplSW5NQlwiO1xyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlU2l6ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0TWF4RmlsZVNpemUuTnVtYmVyUmFuZ2UgPSBuZXcgUmFuZ2VOdW1iZXIoKTtcclxuICAgICAgdGhpcy5lZGl0TWF4RmlsZVNpemUuTnVtYmVyUmFuZ2UuRnJvbSA9IDE7XHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVTaXplLk51bWJlclJhbmdlLlRvID0gMTAwO1xyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlU2l6ZS5UeXBlID0gSW5wdXRUeXBlLk51bWJlcjtcclxuICAgICAgdGhpcy5lZGl0TWF4RmlsZVNpemUuVmFsdWUgPSB0aGlzLnF1ZXN0aW9uLm9wdGlvbnMubWF4RmlsZVNpemVJbk1CO1xyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlU2l6ZS5Jc0Rpc2FibGVkID0gaXNWaWV3T25seTtcclxuXHJcblxyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlQ291bnQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0TWF4RmlsZUNvdW50Lk5hbWUgPSBcIk1heEZpbGVDb3VudFwiO1xyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlQ291bnQuTGFiZWxLZXkgPSBcIk1heEZpbGVzQ291bnRcIjtcclxuICAgICAgdGhpcy5lZGl0TWF4RmlsZUNvdW50LklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlQ291bnQuTnVtYmVyUmFuZ2UgPSBuZXcgUmFuZ2VOdW1iZXIoKTtcclxuICAgICAgdGhpcy5lZGl0TWF4RmlsZUNvdW50Lk51bWJlclJhbmdlLkZyb20gPSAxO1xyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlQ291bnQuTnVtYmVyUmFuZ2UuVG8gPSA1MDtcclxuICAgICAgdGhpcy5lZGl0TWF4RmlsZUNvdW50LlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlQ291bnQuVmFsdWUgPSB0aGlzLnF1ZXN0aW9uLm9wdGlvbnMubWF4RmlsZUNvdW50O1xyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlQ291bnQuQ3VzdG9tVmFsaWRhdGlvbiA9IFt0aGlzLm51bWJlclZhbGlkYXRpb25dO1xyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlQ291bnQuSXNEaXNhYmxlZCA9IGlzVmlld09ubHk7XHJcblxyXG4gICAgICBsZXQgRmlsZXNFeHRlbnNpb25SZXN1bHQgPSB0aGlzLnF1ZXN0aW9uLm9wdGlvbnMuYWxsb3dlZEV4dGVuc2lvbnMgYXMgc3RyaW5nW11cclxuICAgICAgbGV0IEZpbGVzRXh0ZW5zaW9ucyA9IEZpbGVzRXh0ZW5zaW9uUmVzdWx0ID8gcmVzdWx0LmV4dGVuc2lvbnMuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBGaWxlc0V4dGVuc2lvblJlc3VsdC5pbmNsdWRlcyhpdGVtLmtleSkgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSkgOiBbXTtcclxuICAgICAgdGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuTmFtZSA9IFwiQWxsb3dlZEV4dGVuc2lvbnNcIjtcclxuICAgICAgdGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLkxhYmVsS2V5ID0gXCJFeHRlbnNpb25zXCI7XHJcbiAgICAgIHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucy5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLkRhdGFTb3VyY2UgPSByZXN1bHQuZXh0ZW5zaW9ucztcclxuICAgICAgdGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLlNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuU2VsZWN0ZWRJdGVtcyA9IEZpbGVzRXh0ZW5zaW9ucztcclxuICAgICAgdGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLk5vdEZvdW5kVGV4dCA9IHRoaXMubChcIk5vUmVzdWx0Rm91bmRcIik7XHJcbiAgICAgIHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucy5Jc0Rpc2FibGVkID0gaXNWaWV3T25seTtcclxuXHJcblxyXG4gICAgICAvLyB0aGlzLmVkaXRNb2RlbEZvcm0uYWRkVmFsaWRhdG9ycyh0aGlzLmZyb21UbyhcIk1pbkxlbmd0aFwiLCBcIk1heExlbmd0aFwiKSk7XHJcblxyXG4gICAgICB0aGlzLmNoYW5nZURhdGFUeXBlKHRoaXMucXVlc3Rpb24ucXVlc3Rpb25UeXBlSXRlbUlEKTtcclxuICAgICAgdGhpcy5jaGFuZ2VTY29yaW5nKHRoaXMucXVlc3Rpb24uaXNBbGxvd1Njb3JpbmcpO1xyXG5cclxuICAgICAgdGhpcy5lZGl0T3B0aW9uSWQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0T3B0aW9uSWQuTmFtZSA9IFwiSWRcIlxyXG4gICAgICB0aGlzLmVkaXRPcHRpb25JZC5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICAgIHRoaXMuZWRpdE9wdGlvbklkLlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG5cclxuICAgICAgdGhpcy5lZGl0TmFtZU9wdGlvbiA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXROYW1lT3B0aW9uLk5hbWUgPSBcIk5hbWVPcHRpb25cIjtcclxuICAgICAgdGhpcy5lZGl0TmFtZU9wdGlvbi5BcmFiaWNMYWJlbEtleSA9IFwiTmFtZUluQXJhYmljXCI7XHJcbiAgICAgIHRoaXMuZWRpdE5hbWVPcHRpb24uRW5nbGlzaExhYmVsS2V5ID0gXCJOYW1lSW5FbmdsaXNoXCI7XHJcbiAgICAgIHRoaXMuZWRpdE5hbWVPcHRpb24uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdE5hbWVPcHRpb24uTWF4TGVuZ3RoID0gMjI1O1xyXG4gICAgICB0aGlzLmVkaXROYW1lT3B0aW9uLkxhbmd1YWdlTW9kZSA9IHRoaXMuZ2V0TGFuZ3VhZ2VNb2RlVmFsdWUoKTtcclxuXHJcbiAgICAgIHRoaXMuc2NvcmVOdW1iZXIgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5zY29yZU51bWJlci5OYW1lID0gXCJTY29yZVwiO1xyXG4gICAgICB0aGlzLnNjb3JlTnVtYmVyLkxhYmVsS2V5ID0gXCJTY29yZVwiO1xyXG4gICAgICB0aGlzLnNjb3JlTnVtYmVyLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNjb3JlTnVtYmVyLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICBsZXQgcmFuZ2VOdW1iZXIgPSBuZXcgUmFuZ2VOdW1iZXIoKVxyXG4gICAgICByYW5nZU51bWJlci5UbyA9IDEwMDAwMDBcclxuICAgICAgcmFuZ2VOdW1iZXIuRnJvbSA9IC0xMDAwMDAwXHJcbiAgICAgIHRoaXMuc2NvcmVOdW1iZXIuTnVtYmVyUmFuZ2UgPSByYW5nZU51bWJlcjtcclxuXHJcblxyXG4gICAgICB0aGlzLmRpc3BsYXlPcmRlck9wdGlvbiA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmRpc3BsYXlPcmRlck9wdGlvbi5OYW1lID0gXCJEaXNwbGF5T3JkZXJcIjtcclxuICAgICAgXHJcbiAgICAgIHRoaXMuaWRPcHRpb24gPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5pZE9wdGlvbi5OYW1lID0gXCJJZE9wdGlvblwiO1xyXG4gICAgICBcclxuICAgICAgdGhpcy5lZGl0T3B0aW9uTGlua2VkUXVlc3Rpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXRPcHRpb25MaW5rZWRRdWVzdGlvbnMuTmFtZSA9IFwiTGlua2VkUXVlc3Rpb25zXCI7XHJcbiAgICAgIHRoaXMuZWRpdE9wdGlvbkxpbmtlZFF1ZXN0aW9ucy5MYWJlbEtleSA9IFwiTGlua2VkUXVlc3Rpb25zXCI7XHJcbiAgICAgIHRoaXMuZWRpdE9wdGlvbkxpbmtlZFF1ZXN0aW9ucy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdE9wdGlvbkxpbmtlZFF1ZXN0aW9ucy5EYXRhU291cmNlID0gcmVzdWx0LnF1ZXN0aW9ucztcclxuICAgICAgdGhpcy5lZGl0T3B0aW9uTGlua2VkUXVlc3Rpb25zLlNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmVkaXRPcHRpb25MaW5rZWRRdWVzdGlvbnMuTm90Rm91bmRUZXh0ID0gdGhpcy5sKFwiTm9SZXN1bHRGb3VuZFwiKTtcclxuICAgICAgdGhpcy5lZGl0T3B0aW9uTGlua2VkUXVlc3Rpb25zLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLmwoXCJMaW5rZWRRdWVzdGlvbkRlc2NyaXB0aW9uSGludFwiKTtcclxuXHJcblxyXG4gICAgICBpZiAodGhpcy5xdWVzdGlvbi5xdWVzdGlvbk9wdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLnF1ZXN0aW9uLnF1ZXN0aW9uT3B0aW9ucy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnF1ZXN0aW9uLnF1ZXN0aW9uT3B0aW9uc1tpbmRleF07XHJcbiAgICAgICAgICB0aGlzLm9wdGlvbkxpc3QucHVzaChuZXcgU3VydmV5UXVlc3Rpb25PcHRpb25EVE8oZWxlbWVudCkpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLm9wZW5Nb2RhbCh0aGlzLkVkaXRNb2RhbCwgJ3hsJyk7XHJcbiAgICAgIHRoaXMuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRFZGl0TW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCByZXN1bHRPcHRpb25Nb2RlbCA9IHRoaXMuZWRpdE9wdGlvbkZvcm0udmFsdWU7XHJcbiAgICBsZXQgcmVzdWx0TW9kZWwgPSB0aGlzLmVkaXRNb2RlbEZvcm0udmFsdWU7XHJcbiAgICBpZiAodGhpcy5pc1NlbGVjdCkge1xyXG4gICAgICBpZiAoKHJlc3VsdE9wdGlvbk1vZGVsLk5hbWVPcHRpb24uQXJhYmljICE9IHVuZGVmaW5lZCAmJiByZXN1bHRPcHRpb25Nb2RlbC5OYW1lT3B0aW9uLkFyYWJpYyAhPSBcIlwiKSB8fCAocmVzdWx0T3B0aW9uTW9kZWwuTmFtZU9wdGlvbi5FbmdsaXNoICE9IHVuZGVmaW5lZCAmJiByZXN1bHRPcHRpb25Nb2RlbC5OYW1lT3B0aW9uLkVuZ2xpc2ggIT0gXCJcIikgfHwgKHJlc3VsdE9wdGlvbk1vZGVsLlNjb3JlICE9IHVuZGVmaW5lZCAmJiByZXN1bHRPcHRpb25Nb2RlbC5TY29yZSA+IDApKSB7XHJcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmwoXCJPcHRpb25QZW5kaW5nRGF0YUVycm9yTWVzc2FnZVwiKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbkxpc3QubGVuZ3RoID09IDAgJiYgdGhpcy5pc1NlbGVjdCkge1xyXG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5sKFwiT3B0aW9uRXJyb3JNZXNzYWdlXCIpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgbGV0IGVkaXRNb2RlbDogU3VydmV5UXVlc3Rpb25EVE8gPSBuZXcgU3VydmV5UXVlc3Rpb25EVE8oKTtcclxuICAgIGVkaXRNb2RlbC5JRF9HVUlEID0gdGhpcy5xdWVzdGlvbklEXHJcbiAgICBlZGl0TW9kZWwuU3VydmV5SUQgPSB0aGlzLnN1cnZleUlEXHJcbiAgICAvLyBlZGl0TW9kZWwuRGlzcGxheU9yZGVyID0gcmVzdWx0TW9kZWwuRGlzcGxheU9yZGVyO1xyXG4gICAgZWRpdE1vZGVsLlRleHQuQXJhYmljID0gcmVzdWx0TW9kZWwuVGV4dC5BcmFiaWM7XHJcbiAgICBlZGl0TW9kZWwuVGV4dC5FbmdsaXNoID0gcmVzdWx0TW9kZWwuVGV4dC5FbmdsaXNoO1xyXG4gICAgZWRpdE1vZGVsLkRlc2NyaXB0aW9uLkFyYWJpYyA9IHJlc3VsdE1vZGVsLkRlc2NyaXB0aW9uLkFyYWJpYztcclxuICAgIGVkaXRNb2RlbC5EZXNjcmlwdGlvbi5FbmdsaXNoID0gcmVzdWx0TW9kZWwuRGVzY3JpcHRpb24uRW5nbGlzaDtcclxuICAgIGVkaXRNb2RlbC5PcHRpb25zLkRlc2NyaXB0aW9uLkFyYWJpYyA9IHJlc3VsdE1vZGVsLkRlc2NyaXB0aW9uLkFyYWJpYztcclxuICAgIGVkaXRNb2RlbC5PcHRpb25zLkRlc2NyaXB0aW9uLkVuZ2xpc2ggPSByZXN1bHRNb2RlbC5EZXNjcmlwdGlvbi5FbmdsaXNoO1xyXG4gICAgaWYgKHRoaXMuc3VydmV5QXVkaWVuY2VUeXBlSUQgPT0gQXVkaWVuY2VUeXBlLkJvdGgpXHJcbiAgICAgIGVkaXRNb2RlbC5BdWRpZW5jZUl0ZW1JRCA9IHJlc3VsdE1vZGVsLkF1ZGllbmNlSXRlbUlEO1xyXG4gICAgZWxzZVxyXG4gICAgICBlZGl0TW9kZWwuQXVkaWVuY2VJdGVtSUQgPSB0aGlzLmF1ZGllbmNlVHlwZUlEO1xyXG4gICAgZWRpdE1vZGVsLlF1ZXN0aW9uVHlwZUl0ZW1JRCA9IHRoaXMucXVlc3Rpb24ucXVlc3Rpb25UeXBlSXRlbUlEO1xyXG4gICAgZWRpdE1vZGVsLklzQWxsb3dTY29yaW5nID0gcmVzdWx0TW9kZWwuSXNBbGxvd1Njb3Jpbmc7XHJcbiAgICBlZGl0TW9kZWwuT3B0aW9ucy5TaXplID0gcmVzdWx0TW9kZWwuU2l6ZTtcclxuICAgIGVkaXRNb2RlbC5PcHRpb25zLklzUmVxdWlyZWQgPSByZXN1bHRNb2RlbC5Jc1JlcXVpcmVkO1xyXG4gICAgZWRpdE1vZGVsLklzUmVxdWlyZWQgPSByZXN1bHRNb2RlbC5Jc1JlcXVpcmVkO1xyXG4gICAgZWRpdE1vZGVsLklzVmlzaWJsZSA9IHJlc3VsdE1vZGVsLklzVmlzaWJsZTtcclxuICAgIGVkaXRNb2RlbC5PcHRpb25zLkhhc1NlYXJjaCA9IHJlc3VsdE1vZGVsLkhhc1NlYXJjaDtcclxuXHJcbiAgICBpZiAodGhpcy5pc1RleHQgfHwgdGhpcy5pc051bWJlcikge1xyXG4gICAgICBlZGl0TW9kZWwuT3B0aW9ucy5NaW5MZW5ndGggPSByZXN1bHRNb2RlbC5NaW5MZW5ndGg7XHJcbiAgICAgIGVkaXRNb2RlbC5PcHRpb25zLk1heExlbmd0aCA9IHJlc3VsdE1vZGVsLk1heExlbmd0aDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc0ZpbGUgfHwgdGhpcy5pc011bHRpRmlsZSB8fCB0aGlzLmlzSW1hZ2UpXHJcbiAgICAgIGVkaXRNb2RlbC5PcHRpb25zLk1heEZpbGVTaXplSW5NQiA9IHJlc3VsdE1vZGVsLk1heEZpbGVTaXplSW5NQjtcclxuXHJcbiAgICBpZiAodGhpcy5pc011bHRpRmlsZSlcclxuICAgICAgZWRpdE1vZGVsLk9wdGlvbnMuTWF4RmlsZUNvdW50ID0gcmVzdWx0TW9kZWwuTWF4RmlsZUNvdW50O1xyXG5cclxuICAgIGlmICh0aGlzLmlzTXVsdGlGaWxlIHx8IHRoaXMuaXNGaWxlKVxyXG4gICAgICBlZGl0TW9kZWwuT3B0aW9ucy5BbGxvd2VkRXh0ZW5zaW9ucyA9IHJlc3VsdE1vZGVsLkFsbG93ZWRFeHRlbnNpb25zO1xyXG5cclxuICAgIGlmICh0aGlzLmlzU2VsZWN0KSB7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbkxpc3QubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25MaXN0W2luZGV4XS5EaXNwbGF5T3JkZXIgPSBpbmRleCArIDE7XHJcbiAgICAgICAgZWRpdE1vZGVsLlF1ZXN0aW9uT3B0aW9ucyA9IHRoaXMub3B0aW9uTGlzdDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHBhcmFtQXJyYXkucHVzaChlZGl0TW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG4gIGdldEVkaXRGdW5jdGlvbiA9IChlZGl0TW9kYWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgaWYgKCF0aGlzLmVycm9yTWVzc2FnZSlcclxuICAgICAgcmV0dXJuIHRoaXMuc3VydmV5UXVlc3Rpb25TZXJ2aWNlLmVkaXQoZWRpdE1vZGFsKTtcclxuICB9XHJcbiAgZ2V0TGlua2VkUXVlc3Rpb25zKG9wdGlvbjpTdXJ2ZXlRdWVzdGlvbk9wdGlvbkRUTylcclxuICB7XHJcbiAgICByZXR1cm4gdGhpcy5RdWVzdGlvbnMuZmlsdGVyKGl0ZW09Pm9wdGlvbi5MaW5rZWRRdWVzdGlvbnMuaW5jbHVkZXMoaXRlbS5rZXkpKS5tYXAoaXRlbT0+aXRlbS52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBhZGRPcHRpb24oKSB7XHJcbiAgICB0aGlzLnRvdGFsU2NvcmUgPSAwO1xyXG4gICAgdGhpcy5lZGl0T3B0aW9uRm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICBpZiAodGhpcy5lZGl0T3B0aW9uRm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IHJlc3VsdE1vZGVsID0gdGhpcy5lZGl0T3B0aW9uRm9ybS52YWx1ZTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25MaXN0Lmxlbmd0aCA+PSAxICYmIHRoaXMuc2hvd1Njb3JlT3B0aW9uKSB7XHJcblxyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5vcHRpb25MaXN0Lmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGxldCBlbGVtZW50ID0gdGhpcy5vcHRpb25MaXN0W2luZGV4XS5TY29yZTtcclxuICAgICAgICBpZiAoZWxlbWVudCA+IDEwMDAwMDApIHtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5sKFwiTWF4T3B0aW9uU2NvcmVFcnJvck1lc3NhZ2VcIik7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChlbGVtZW50IDwgLTEwMDAwMDApIHtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5sKFwiTWluT3B0aW9uU2NvcmVFcnJvck1lc3NhZ2VcIik7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG5cclxuICAgIH1cclxuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gbnVsbFxyXG4gICAgbGV0IG9wdGlvbiA9IG5ldyBTdXJ2ZXlRdWVzdGlvbk9wdGlvbkRUTygpO1xyXG4gICAgb3B0aW9uLk5hbWUuQXJhYmljID0gcmVzdWx0TW9kZWwuTmFtZU9wdGlvbi5BcmFiaWNcclxuICAgIG9wdGlvbi5OYW1lLkVuZ2xpc2ggPSByZXN1bHRNb2RlbC5OYW1lT3B0aW9uLkVuZ2xpc2hcclxuICAgIG9wdGlvbi5JRF9HVUlEPXJlc3VsdE1vZGVsLklkT3B0aW9uXHJcbiAgICBkZWJ1Z2dlcjtcclxuICAgIGlmIChyZXN1bHRNb2RlbC5EaXNwbGF5T3JkZXIpXHJcbiAgICAgIG9wdGlvbi5EaXNwbGF5T3JkZXIgPSByZXN1bHRNb2RlbC5EaXNwbGF5T3JkZXI7XHJcbiAgICBlbHNlXHJcbiAgICAgIG9wdGlvbi5EaXNwbGF5T3JkZXIgPSB0aGlzLm9wdGlvbkxpc3QubGVuZ3RoICsgMTtcclxuXHJcbiAgICBvcHRpb24uTGlua2VkUXVlc3Rpb25zID0gcmVzdWx0TW9kZWwuTGlua2VkUXVlc3Rpb25zO1xyXG4gICAgaWYgKHRoaXMuc2hvd1Njb3JlT3B0aW9uKVxyXG4gICAgICBvcHRpb24uU2NvcmUgPSBOdW1iZXIucGFyc2VGbG9hdChyZXN1bHRNb2RlbC5TY29yZSk7XHJcbiAgICB0aGlzLmVkaXRPcHRpb25Gb3JtLnJlc2V0KCk7XHJcbiAgICB0aGlzLmVkaXRPcHRpb25Gb3JtLmNvbnRyb2xzW1wiTmFtZU9wdGlvblwiXS5yZXNldCgpO1xyXG4gICAgdGhpcy5lZGl0T3B0aW9uRm9ybS5jb250cm9sc1tcIklkT3B0aW9uXCJdLnJlc2V0KCk7XHJcbiAgICB0aGlzLmVkaXRPcHRpb25Gb3JtLmNvbnRyb2xzW1wiRGlzcGxheU9yZGVyXCJdLnJlc2V0KCk7XHJcbiAgICB0aGlzLmVkaXRPcHRpb25Gb3JtLmNvbnRyb2xzW1wiTGlua2VkUXVlc3Rpb25zXCJdLnJlc2V0KCk7XHJcbiAgICBpZiAodGhpcy5zaG93U2NvcmVPcHRpb24pXHJcbiAgICAgIHRoaXMuZWRpdE9wdGlvbkZvcm0uY29udHJvbHNbXCJTY29yZVwiXS5yZXNldCgpO1xyXG4gICAgICB0aGlzLm9wdGlvbkxpc3Quc3BsaWNlKG9wdGlvbi5EaXNwbGF5T3JkZXItMSwgMCxvcHRpb24pO1xyXG4gICAgICB0aGlzLmlzRWRpdEZvcm1DaGFuZ2UgPSB0cnVlO1xyXG4gICAgICB0aGlzLmlzT3B0aW9uSW5FZGl0TW9kZT0gZmFsc2U7XHJcblxyXG4gIH1cclxuXHJcbiAgZGVsZXRlT3B0aW9uKG9wdGlvbikge1xyXG4gICAgdGhpcy5vcHRpb25MaXN0ID0gdGhpcy5vcHRpb25MaXN0LmZpbHRlcihpdGVtID0+IGl0ZW0gIT0gb3B0aW9uKVxyXG4gICAgdGhpcy5pc0VkaXRGb3JtQ2hhbmdlID0gdHJ1ZTtcclxuICB9XHJcblxyXG5cclxuICBlZGl0T3B0aW9uKG9wdGlvbjogU3VydmV5UXVlc3Rpb25PcHRpb25EVE8pIHtcclxuICAgIGRlYnVnZ2VyO1xyXG4gICAgaWYgKCh0aGlzLmVkaXRPcHRpb25Gb3JtLnRvdWNoZWQgPT0gdHJ1ZSAmJiB0aGlzLmVkaXRPcHRpb25Gb3JtLnZhbGlkKSB8fCB0aGlzLmVkaXRPcHRpb25Gb3JtLnRvdWNoZWQgPT0gZmFsc2UpXHJcbiAgICAgIHRoaXMuYWRkT3B0aW9uKCk7XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5lZGl0T3B0aW9uRm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IG5hbWUgPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgbmFtZS5BcmFiaWMgPSBvcHRpb24uTmFtZS5BcmFiaWMgPz8gbnVsbDtcclxuICAgIG5hbWUuRW5nbGlzaCA9IG9wdGlvbi5OYW1lLkVuZ2xpc2ggPz8gbnVsbDtcclxuICAgIHRoaXMuZWRpdE9wdGlvbkZvcm0uY29udHJvbHNbXCJOYW1lT3B0aW9uXCJdLnNldFZhbHVlKG5hbWUpO1xyXG4gICAgdGhpcy5lZGl0T3B0aW9uRm9ybS5jb250cm9sc1tcIklkT3B0aW9uXCJdLnNldFZhbHVlKG9wdGlvbi5JRF9HVUlEKTtcclxuICAgIHRoaXMuZWRpdE9wdGlvbkZvcm0uY29udHJvbHNbXCJEaXNwbGF5T3JkZXJcIl0uc2V0VmFsdWUob3B0aW9uLkRpc3BsYXlPcmRlcik7XHJcbiAgICB0aGlzLmVkaXRPcHRpb25Gb3JtLmNvbnRyb2xzW1wiTGlua2VkUXVlc3Rpb25zXCJdLnNldFZhbHVlKG9wdGlvbi5MaW5rZWRRdWVzdGlvbnMpO1xyXG4gICAgaWYgKHRoaXMuc2hvd1Njb3JlT3B0aW9uKVxyXG4gICAgICB0aGlzLmVkaXRPcHRpb25Gb3JtLmNvbnRyb2xzW1wiU2NvcmVcIl0uc2V0VmFsdWUob3B0aW9uLlNjb3JlKTtcclxuICAgIHRoaXMub3B0aW9uTGlzdCA9IHRoaXMub3B0aW9uTGlzdC5maWx0ZXIoaXRlbSA9PiBpdGVtICE9IG9wdGlvbilcclxuICAgIHRoaXMuaXNFZGl0Rm9ybUNoYW5nZSA9IHRydWU7XHJcbiAgICB0aGlzLmlzT3B0aW9uSW5FZGl0TW9kZT0gdHJ1ZTtcclxuICB9XHJcbiAgZnJvbVRvKGZyb21GaWVsZDogc3RyaW5nLCB0b0ZpZWxkOiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGZvcm1Hcm91cDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gfCBudWxsID0+IHtcclxuICAgICAgY29uc3QgZnJvbURhdGUgPSBmb3JtR3JvdXAuZ2V0KGZyb21GaWVsZCk7XHJcbiAgICAgIGNvbnN0IHRvRGF0ZSA9IGZvcm1Hcm91cC5nZXQodG9GaWVsZCk7XHJcbiAgICAgIGlmICgoZnJvbURhdGUgIT09IG51bGwgJiYgdG9EYXRlICE9PSBudWxsKSkge1xyXG4gICAgICAgIGlmICgoZnJvbURhdGUudmFsdWUgIT09IG51bGwgJiYgdG9EYXRlLnZhbHVlICE9PSBudWxsKSAmJiBwYXJzZUludChmcm9tRGF0ZS52YWx1ZSkgPiBwYXJzZUludCh0b0RhdGUudmFsdWUpKSB7XHJcbiAgICAgICAgICBmcm9tRGF0ZS5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgICB0b0RhdGUubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgICAgdG9EYXRlLnNldEVycm9ycyh7IFwiZXJyb3JNYXNzYWdlXCI6IHRoaXMubChcIkdyZWF0ZXJUaGFuT3JFcXVhbFRvXCIpIH0pO1xyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRvRGF0ZS5zZXRFcnJvcnMobnVsbCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcblxyXG4gIHVwZGF0ZUZvcm1TdGF0dXMoa2V5OiBhbnkpIHtcclxuICAgIHN3aXRjaCAoa2V5KSB7XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5UZXh0OlxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuTXVsdGlsaW5lVGV4dDpcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhMZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZSh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heExlbmd0aC5OYW1lKSwgdGhpcy5lZGl0TWF4TGVuZ3RoKVxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1pbkxlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWluTGVuZ3RoLk5hbWUpLCB0aGlzLmVkaXRNaW5MZW5ndGgpXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZVNpemUuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZSh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heEZpbGVTaXplLk5hbWUpLCB0aGlzLmVkaXRNYXhGaWxlU2l6ZSlcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlQ291bnQuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZSh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heEZpbGVDb3VudC5OYW1lKSwgdGhpcy5lZGl0TWF4RmlsZUNvdW50KVxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLk5hbWUpLCB0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMpXHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuTnVtYmVyOlxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heExlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4TGVuZ3RoLk5hbWUpLCB0aGlzLmVkaXRNYXhMZW5ndGgpXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWluTGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNaW5MZW5ndGguTmFtZSksIHRoaXMuZWRpdE1pbkxlbmd0aClcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlU2l6ZS5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZVNpemUuTmFtZSksIHRoaXMuZWRpdE1heEZpbGVTaXplKVxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heEZpbGVDb3VudC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZUNvdW50Lk5hbWUpLCB0aGlzLmVkaXRNYXhGaWxlQ291bnQpXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuTmFtZSksIHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucylcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5GaWxlOlxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heExlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4TGVuZ3RoLk5hbWUpLCB0aGlzLmVkaXRNYXhMZW5ndGgpXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWluTGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNaW5MZW5ndGguTmFtZSksIHRoaXMuZWRpdE1pbkxlbmd0aClcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlU2l6ZS5OYW1lKSlcclxuICAgICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZVNpemUuTmFtZSksIHRoaXMuZWRpdE1heEZpbGVTaXplKVxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heEZpbGVDb3VudC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZUNvdW50Lk5hbWUpLCB0aGlzLmVkaXRNYXhGaWxlQ291bnQpXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuTmFtZSksIHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucylcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5NdWx0aUZpbGU6XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4TGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhMZW5ndGguTmFtZSksIHRoaXMuZWRpdE1heExlbmd0aClcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNaW5MZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZSh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1pbkxlbmd0aC5OYW1lKSwgdGhpcy5lZGl0TWluTGVuZ3RoKVxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heEZpbGVTaXplLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlU2l6ZS5OYW1lKSwgdGhpcy5lZGl0TWF4RmlsZVNpemUpXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZUNvdW50Lk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlQ291bnQuTmFtZSksIHRoaXMuZWRpdE1heEZpbGVDb3VudClcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZSh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSwgdGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zKVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLkltYWdlOlxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heExlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4TGVuZ3RoLk5hbWUpLCB0aGlzLmVkaXRNYXhMZW5ndGgpXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWluTGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNaW5MZW5ndGguTmFtZSksIHRoaXMuZWRpdE1pbkxlbmd0aClcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlU2l6ZS5OYW1lKSlcclxuICAgICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZVNpemUuTmFtZSksIHRoaXMuZWRpdE1heEZpbGVTaXplKVxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heEZpbGVDb3VudC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZUNvdW50Lk5hbWUpLCB0aGlzLmVkaXRNYXhGaWxlQ291bnQpXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuTmFtZSksIHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucylcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5NdWx0aXBsZVNlbGVjdDpcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLlNpbmdsZVNlbGVjdDpcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhMZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZSh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heExlbmd0aC5OYW1lKSwgdGhpcy5lZGl0TWF4TGVuZ3RoKVxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1pbkxlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWluTGVuZ3RoLk5hbWUpLCB0aGlzLmVkaXRNaW5MZW5ndGgpXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZVNpemUuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZSh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heEZpbGVTaXplLk5hbWUpLCB0aGlzLmVkaXRNYXhGaWxlU2l6ZSlcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlQ291bnQuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZSh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heEZpbGVDb3VudC5OYW1lKSwgdGhpcy5lZGl0TWF4RmlsZUNvdW50KVxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLk5hbWUpLCB0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMpXHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heExlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4TGVuZ3RoLk5hbWUpLCB0aGlzLmVkaXRNYXhMZW5ndGgpXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWluTGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNaW5MZW5ndGguTmFtZSksIHRoaXMuZWRpdE1pbkxlbmd0aClcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlU2l6ZS5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZVNpemUuTmFtZSksIHRoaXMuZWRpdE1heEZpbGVTaXplKVxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heEZpbGVDb3VudC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZUNvdW50Lk5hbWUpLCB0aGlzLmVkaXRNYXhGaWxlQ291bnQpXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuTmFtZSksIHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucylcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuXHJcblxyXG4gIC8vZHJhZyBhbmQgZHJvcFxyXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPHN0cmluZ1tdPikge1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMub3B0aW9uTGlzdCwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbkxpc3QubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5vcHRpb25MaXN0W2luZGV4XTtcclxuICAgICAgZWxlbWVudC5EaXNwbGF5T3JkZXI9aW5kZXgrMTtcclxuICAgIH1cclxuICAgIHRoaXMuaXNFZGl0Rm9ybUNoYW5nZT0gdHJ1ZTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxuZy10ZW1wbGF0ZSAjRWRpdE1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICA8aDQgY2xhc3M9XCJtb2RhbC10aXRsZVwiICpuZ0lmPVwiIWlzVmlld09ubHlcIj5cclxuICAgICAge3tsKFwiRWRpdF9RdWVzdGlvblwiKX19XHJcbiAgICA8L2g0PlxyXG4gICAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGVcIiAqbmdJZj1cImlzVmlld09ubHlcIj5cclxuICAgICAge3tsKFwiRGV0YWlsc1wiKX19XHJcbiAgICA8L2g0PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBjbGFzcz1cImJ0biBidG4taWNvbiBidG4tc21cIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xIHN2Zy1pY29uLWhvdmVyLWJyYW5kXCIgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvbW9kYWxjbG9zZS5zdmcnXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiZWRpdFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnNcIiAoT25DaGFuZ2UpPVwiY2hhbmdlRm9ybVN0YXR1cygkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cImVkaXRRdWVzdGlvblwiIFtncm91cF09XCJlZGl0TW9kZWxGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0QXJlYSBbb3B0aW9uc109XCJlZGl0RGVzY3JpcHRpb25cIiBbZ3JvdXBdPVwiZWRpdE1vZGVsRm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0QXJlYT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJzdXJ2ZXlBdWRpZW5jZVR5cGVJRD09YXVkaWVuY2VUeXBlLkJvdGhcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiYXVkaWVuY2VcIiBbZ3JvdXBdPVwiZWRpdE1vZGVsRm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiZWRpdFF1ZXN0aW9uVHlwZVwiIFtncm91cF09XCJlZGl0TW9kZWxGb3JtXCIgKE9uQ2hhbmdlKT1cImNoYW5nZURhdGFUeXBlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImVkaXRTaXplXCIgW2dyb3VwXT1cImVkaXRNb2RlbEZvcm1cIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJpc1NlbGVjdFwiID5cclxuICAgICAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJlZGl0QWxsb3dTY29yZVwiIFtncm91cF09XCJlZGl0TW9kZWxGb3JtXCIgKE9uQ2hhbmdlKT1cImNoYW5nZVNjb3JpbmcoJGV2ZW50KVwiPjwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cImVkaXRJc0FjdGl2ZVwiIFtncm91cF09XCJlZGl0TW9kZWxGb3JtXCI+PC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiZWRpdFJlcXVpcmVkXCIgW2dyb3VwXT1cImVkaXRNb2RlbEZvcm1cIj48L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiaXNUZXh0fHxpc051bWJlclwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZWRpdE1pbkxlbmd0aFwiICpuZ0lmPVwiaXNUZXh0fHxpc051bWJlclwiIFtncm91cF09XCJlZGl0TW9kZWxGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImlzVGV4dHx8aXNOdW1iZXJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImVkaXRNYXhMZW5ndGhcIiAqbmdJZj1cImlzVGV4dHx8aXNOdW1iZXJcIiBbZ3JvdXBdPVwiZWRpdE1vZGVsRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImlzRmlsZXx8aXNNdWx0aUZpbGV8fGlzSW1hZ2VcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImVkaXRNYXhGaWxlU2l6ZVwiICpuZ0lmPVwiaXNGaWxlfHxpc011bHRpRmlsZXx8aXNJbWFnZVwiIFtncm91cF09XCJlZGl0TW9kZWxGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImlzTXVsdGlGaWxlXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJlZGl0TWF4RmlsZUNvdW50XCIgKm5nSWY9XCJpc011bHRpRmlsZVwiIFtncm91cF09XCJlZGl0TW9kZWxGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImlzRmlsZXx8aXNNdWx0aUZpbGVcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiZWRpdEZpbGVzRXh0ZW5zaW9uc1wiICpuZ0lmPVwiaXNGaWxlfHxpc011bHRpRmlsZVwiIFtncm91cF09XCJlZGl0TW9kZWxGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImVkaXREaXNwbGF5T3JkZXJcIiBbZ3JvdXBdPVwiZWRpdE1vZGVsRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc1NlbGVjdFwiIGNsYXNzPVwicXVlc3Rpb24tdHlwZS1vcHRpb25cIj5cclxuICAgICAgICAgIDxoNT57e2woJ09wdGlvbnMnKX19PC9oNT5cclxuICAgICAgICAgIDxkaXYgY2RrRHJvcExpc3QgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1saXN0aW5nXCIgKm5nRm9yPVwibGV0IE9wdGlvbiBvZiBvcHRpb25MaXN0O1wiIGNka0RyYWc+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIG1iLTBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZSBmcy02IGZ3LWJvbGRlclwiPlxyXG4gICAgICAgICAgICAgICAgICB7e2dldEN1cnJlbnRGYWlsT3ZlcihPcHRpb24uTmFtZSl9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2Utc3F1YXJlIGJhZGdlLWRhcmsgbWUtNFwiICpuZ0lmPVwic2hvd1Njb3JlT3B0aW9uXCIgbmdiVG9vbHRpcD1cInt7bCgnU2NvcmUnKX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3tPcHRpb24uU2NvcmV9fTwvc3Bhbj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2Utc3F1YXJlIGJhZGdlLWJyYW5kIGN1cnNvci1wb2ludGVyIG1lLTRcIiAqbmdJZj1cIk9wdGlvbi5MaW5rZWRRdWVzdGlvbnM/Lmxlbmd0aD4wXCIgbmdiVG9vbHRpcD1cInt7Z2V0TGlua2VkUXVlc3Rpb25zKE9wdGlvbil9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi00IHN2Zy1pY29uLXdoaXRlXCIgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvaW5mby5zdmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1zcXVhcmUgYmFkZ2UtYnJhbmQgY3Vyc29yLXBvaW50ZXIgbWUtNFwiIChjbGljayk9XCJlZGl0T3B0aW9uKE9wdGlvbilcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTQgc3ZnLWljb24td2hpdGVcIiBuZ2JUb29sdGlwPVwie3tsKCdFZGl0Jyl9fVwiIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL0VkaXQuc3ZnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1zcXVhcmUgYmFkZ2UtZGFuZ2VyIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi00IHN2Zy1pY29uLXdoaXRlXCIgbmdiVG9vbHRpcD1cInt7bCgnRGVsZXRlJyl9fVwiIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL1RyYXNoLnN2ZydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZU9wdGlvbihPcHRpb24pXCIgYXBwcHJldmVudGRvdWJsZWNsaWNrPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1aXJlZC10ZXh0IGFsZXJ0LWRhbmdlclwiICpuZ0lmPVwiZXJyb3JNZXNzYWdlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMnR4IHN2Zy1pY29uLWRhbmdlciBtZS00XCJcclxuICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9pbmZvLnN2ZydcIj5cclxuXHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtNiB0ZXh0LWRhbmdlclwiPnt7ZXJyb3JNZXNzYWdlfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXBlYXRlci1iZ1wiICpuZ0lmPVwiIWlzVmlld09ubHlcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggaGlkZGVuPVwidHJ1ZVwiIFtvcHRpb25zXT1cImVkaXRPcHRpb25JZFwiIFtncm91cF09XCJlZGl0T3B0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cImVkaXROYW1lT3B0aW9uXCIgW2dyb3VwXT1cImVkaXRPcHRpb25Gb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiZWRpdE9wdGlvbkxpbmtlZFF1ZXN0aW9uc1wiIFtncm91cF09XCJlZGl0T3B0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZGlzcGxheU9yZGVyT3B0aW9uXCIgW2dyb3VwXT1cImVkaXRPcHRpb25Gb3JtXCIgaGlkZGVuPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJpZE9wdGlvblwiIFtncm91cF09XCJlZGl0T3B0aW9uRm9ybVwiIGhpZGRlbj48L0JCU0YtVGV4dEJveD5cclxuXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJzaG93U2NvcmVPcHRpb25cIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwic2NvcmVOdW1iZXJcIiAgW2dyb3VwXT1cImVkaXRPcHRpb25Gb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFkZE9wdGlvbigpXCIgKm5nSWY9XCIhaXNPcHRpb25JbkVkaXRNb2RlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1icmFuZCB3LTEwMFwiPnt7bChcIkFkZFwiKX19PC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJhZGRPcHRpb24oKVwiICpuZ0lmPVwiaXNPcHRpb25JbkVkaXRNb2RlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1icmFuZCB3LTEwMFwiPnt7bChcIkVkaXRcIil9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXIgcGItMCBtLTBcIiA+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHRcIiAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgIHt7bChcIkNhbmNlbFwiKX19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGFwcFByZXZlbnREb3VibGVDbGljayB0eXBlPVwic3VibWl0XCIgIFtkaXNhYmxlZF09XCIhaXNFZGl0Rm9ybUNoYW5nZVwiICAgKm5nSWY9XCIhaXNWaWV3T25seVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tYnJhbmRcIj57e2woXCJTYXZlXCIpfX08L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPC9CQlNGLUZvcm0+XHJcbiAgPC9kaXY+XHJcblxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
625
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1xdWVzdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL3NoYXJlZC9jb21wb25lbnRzL3N1cnZleS9zdXJ2ZXktaW5mby9lZGl0LXF1ZXN0aW9uL2VkaXQtcXVlc3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9zaGFyZWQvY29tcG9uZW50cy9zdXJ2ZXkvc3VydmV5LWluZm8vZWRpdC1xdWVzdGlvbi9lZGl0LXF1ZXN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUF3QixLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBbUIsU0FBUyxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQWtCLFdBQVcsRUFBRSxTQUFTLEVBQUUsMkJBQTJCLEVBQUUsMEJBQTBCLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWpSLE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNwRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQzs7Ozs7Ozs7QUFPakcsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGdC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QyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckMsT0FBTyxDQUFDLFlBQVksR0FBQyxLQUFLLEdBQUMsQ0FBQyxDQUFDO1NBQzlCO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixHQUFFLElBQUksQ0FBQztJQUM5QixDQUFDOzttSEE1c0JVLHFCQUFxQjt1R0FBckIscUJBQXFCLGtSQ2RsQyxvdVBBa0pBOzRGRHBJYSxxQkFBcUI7a0JBSmpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsV0FBVyxFQUFFLGdDQUFnQztpQkFDOUM7bUlBa0M0QyxTQUFTO3NCQUFuRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBNkJoQyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQXBwQmFzZUNvbXBvbmVudCwgQ29udHJvbExheW91dCwgQ3VzdG9tVmFsaWRhdGlvbiwgRHJvcGRvd25PcHRpb25zLCBFbmdsaXNoQXJhYmljRFRPLCBGb3JjZURpcmVjdGlvbiwgRm9ybU9wdGlvbnMsIElucHV0VHlwZSwgTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zLCBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucywgUmFuZ2VOdW1iZXIsIFRleHRCb3hPcHRpb25zLCBUb2dnbGVTbGlkZU9wdGlvbnMgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXVkaWVuY2VUeXBlLCBTdXJ2ZXlPcHRpb25UeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vRW51bXMvRW51bXMnO1xyXG5pbXBvcnQgeyBTdXJ2ZXlRdWVzdGlvbkRUTyB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9TdXJ2ZXlNb2RlbHMvc3VydmV5LXF1ZXN0aW9uJztcclxuaW1wb3J0IHsgU3VydmV5UXVlc3Rpb25PcHRpb25EVE8gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvU3VydmV5TW9kZWxzL3N1cnZleS1xdWVzdGlvbi1vcHRpb24nO1xyXG5pbXBvcnQgeyBTdXJ2ZXlRdWVzdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9TZXJ2aWNlcy9zdXJ2ZXktcXVlc3Rpb24uc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1lZGl0LXF1ZXN0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZWRpdC1xdWVzdGlvbi5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEVkaXRRdWVzdGlvbkNvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuXHJcblxyXG5cclxuICBxdWVzdGlvblR5cGU6IFN1cnZleU9wdGlvblR5cGU7XHJcbiAgaXNOdW1iZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1RleHQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0ZpbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc011bHRpRmlsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzSW1hZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1NlbGVjdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFNpemVMaXN0OiBhbnlbXSA9IFtdO1xyXG5cclxuICBlZGl0TW9kZWxGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgZWRpdFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICBlZGl0UXVlc3Rpb246IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIGVkaXREZXNjcmlwdGlvbjogTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zO1xyXG4gIGVkaXRRdWVzdGlvblR5cGU6IERyb3Bkb3duT3B0aW9ucztcclxuICBhdWRpZW5jZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIGVkaXRSZXF1aXJlZDogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIGVkaXRBbGxvd1Njb3JlOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgZWRpdEhhc1NlYXJjaDogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIGVkaXRJc0FjdGl2ZTogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIGVkaXRNaW5MZW5ndGg6IFRleHRCb3hPcHRpb25zO1xyXG4gIGVkaXRNYXhMZW5ndGg6IFRleHRCb3hPcHRpb25zO1xyXG4gIGVkaXRSb3dzTnVtYmVyOiBUZXh0Qm94T3B0aW9ucztcclxuICBlZGl0TWF4RmlsZVNpemU6IFRleHRCb3hPcHRpb25zO1xyXG4gIGVkaXRNYXhGaWxlQ291bnQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIGVkaXRGaWxlc0V4dGVuc2lvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBlZGl0U2l6ZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIGlzRWRpdEZvcm1DaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBudW1iZXJWYWxpZGF0aW9uOiBDdXN0b21WYWxpZGF0aW9uID0gbmV3IEN1c3RvbVZhbGlkYXRpb24oKTtcclxuICBAVmlld0NoaWxkKCdFZGl0TW9kYWwnLCB7IHN0YXRpYzogZmFsc2UgfSkgRWRpdE1vZGFsOiBFbGVtZW50UmVmO1xyXG5cclxuICBlZGl0T3B0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIGVkaXROYW1lT3B0aW9uOiBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucztcclxuICBzY29yZU51bWJlcjogVGV4dEJveE9wdGlvbnM7XHJcbiAgb3B0aW9uTGlzdDogU3VydmV5UXVlc3Rpb25PcHRpb25EVE9bXSA9IFtdXHJcbiAgZWRpdE9wdGlvbkxpbmtlZFF1ZXN0aW9uczogRHJvcGRvd25PcHRpb25zO1xyXG4gIHNob3dTY29yZU9wdGlvbjogYm9vbGVhbiA9IGZhbHNlXHJcbiAgc2hvd09wdGlvbnM6IGJvb2xlYW4gPSBmYWxzZVxyXG4gIGVycm9yTWVzc2FnZTogc3RyaW5nID0gbnVsbFxyXG4gIHRvdGFsU2NvcmU6IG51bWJlciA9IDBcclxuICBtYWluRm9ybUNvbnRyb2xzOiBhbnlbXTtcclxuICBzdXJ2ZXlJRDogc3RyaW5nXHJcbiAgZWRpdE9wdGlvbklkOiBUZXh0Qm94T3B0aW9ucztcclxuICBxdWVzdGlvbklEOiBhbnk7XHJcbiAgcXVlc3Rpb246IGFueTtcclxuICBlZGl0RGlzcGxheU9yZGVyOiBUZXh0Qm94T3B0aW9ucztcclxuICBwdWJsaWMgYXVkaWVuY2VUeXBlID0gQXVkaWVuY2VUeXBlO1xyXG4gIGF1ZGllbmNlVHlwZUlEOiBhbnk7XHJcbiAgc3VydmV5QXVkaWVuY2VUeXBlSUQ6IGFueTtcclxuICBkaXNwbGF5T3JkZXJPcHRpb246IFRleHRCb3hPcHRpb25zO1xyXG4gIGlzT3B0aW9uSW5FZGl0TW9kZTogYm9vbGVhbjtcclxuICBRdWVzdGlvbnM6IGFueVtdO1xyXG4gIGlzVmlld09ubHk6IGJvb2xlYW47XHJcbiAgaWRPcHRpb246IFRleHRCb3hPcHRpb25zO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3RvciwgcHJpdmF0ZSBzdXJ2ZXlRdWVzdGlvblNlcnZpY2U6IFN1cnZleVF1ZXN0aW9uU2VydmljZSkge1xyXG4gICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gIH1cclxuICBASW5wdXQoKSBwYWdpbmdFbGVtZW50O1xyXG4gIEBJbnB1dCgpIG9uU3VjY2Vzc0VkaXRIYW5kbGVyO1xyXG5cclxuXHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCAxMjsgaW5kZXgrKykge1xyXG4gICAgICB2YXIgaXRlbSA9IHsga2V5OiBpbmRleCArIDEsIHZhbHVlOiBgJHtpbmRleCArIDF9YCB9O1xyXG4gICAgICB0aGlzLlNpemVMaXN0LnB1c2goaXRlbSk7XHJcblxyXG4gICAgfVxyXG4gICAgdGhpcy5udW1iZXJWYWxpZGF0aW9uLmZ1bmN0aW9uQm9keSA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlLnRvU3RyaW5nKCkubWF0Y2goL15bMC05XSokLykpIHtcclxuICAgICAgICB0aGlzLm51bWJlclZhbGlkYXRpb24ubWFzc2FnZSA9IHRoaXMubChcIkludGVnZXJOdW1iZXJWYWxpZGF0aW9uS2V5XCIpXHJcbiAgICAgICAgcmV0dXJuIHsgJ2N1c3RvbWVyRXJyb3InOiB0cnVlIH07XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlLnRvU3RyaW5nKCkubWF0Y2goL15bK10/KFsuXVxcZCt8XFxkK1suXT9cXGQqKSQvKSkge1xyXG4gICAgICAgIHRoaXMubnVtYmVyVmFsaWRhdGlvbi5tYXNzYWdlID0gdGhpcy5sKFwiUG9zaXRpdmVOdW1iZXJWYWxpZGF0aW9uS2V5XCIpXHJcbiAgICAgICAgcmV0dXJuIHsgJ2N1c3RvbWVyRXJyb3InOiB0cnVlIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuXHJcbiAgfVxyXG5cclxuICBjaGFuZ2VTY29yaW5nKHZhbHVlKSB7XHJcbiAgICB0aGlzLnNob3dTY29yZU9wdGlvbiA9IHZhbHVlO1xyXG4gICAgaWYgKCF2YWx1ZSAmJiB0aGlzLmVkaXRPcHRpb25Gb3JtLmNvbnRyb2xzWydTY29yZSddKSB7XHJcbiAgICAgIHRoaXMuZWRpdE9wdGlvbkZvcm0uY29udHJvbHNbJ1Njb3JlJ10ucmVzZXQoKVxyXG4gICAgICB0aGlzLmVkaXRPcHRpb25Gb3JtLmNvbnRyb2xzWydTY29yZSddLmNsZWFyVmFsaWRhdG9ycygpXHJcbiAgICAgIHRoaXMuZWRpdE9wdGlvbkZvcm0uY29udHJvbHNbJ1Njb3JlJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VEYXRhVHlwZShrZXkpIHtcclxuICAgIHRoaXMudXBkYXRlRm9ybVN0YXR1cyhrZXkpO1xyXG4gICAgc3dpdGNoIChrZXkpIHtcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLlRleHQ6XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5NdWx0aWxpbmVUZXh0OlxyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLk51bWJlcjpcclxuICAgICAgICB0aGlzLmlzTnVtYmVyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzVGV4dCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc011bHRpRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNTZWxlY3QgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLkZpbGU6XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaXNOdW1iZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzVGV4dCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNNdWx0aUZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzSW1hZ2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzU2VsZWN0ID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5NdWx0aUZpbGU6XHJcbiAgICAgICAgdGhpcy5pc011bHRpRmlsZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc051bWJlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzSW1hZ2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzU2VsZWN0ID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuSW1hZ2U6XHJcbiAgICAgICAgdGhpcy5pc0ltYWdlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc051bWJlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzU2VsZWN0ID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5NdWx0aXBsZVNlbGVjdDpcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLlNpbmdsZVNlbGVjdDpcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLlJhZGlvQnV0dG9uOlxyXG4gICAgICAgIHRoaXMuaXNOdW1iZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzVGV4dCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc011bHRpRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNTZWxlY3QgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhpcy5pc051bWJlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgfVxyXG4gIGNoYW5nZUZvcm1TdGF0dXModmFsdWUpIHtcclxuICAgIHRoaXMuaXNFZGl0Rm9ybUNoYW5nZSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZWRpdE1vZGFsID0gKGlkLHN1cnZleUF1ZGllbmNlVHlwZUlELGlzVmlld09ubHk9ZmFsc2UpID0+IHtcclxuICAgIHRoaXMuaXNWaWV3T25seT1pc1ZpZXdPbmx5O1xyXG4gICAgdGhpcy5pc0VkaXRGb3JtQ2hhbmdlID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzVGV4dCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNNdWx0aUZpbGUgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNTZWxlY3QgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5vcHRpb25MaXN0ID0gW107XHJcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IG51bGxcclxuICAgIHRoaXMucXVlc3Rpb25JRCA9IGlkO1xyXG4gICAgdGhpcy5zdXJ2ZXlRdWVzdGlvblNlcnZpY2UuZ2V0KGlkKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0ID0gcmVzIGFzIGFueTtcclxuICAgICAgdGhpcy5xdWVzdGlvbiA9IHJlc3VsdC5xdWVzdGlvbjtcclxuICAgICAgdGhpcy5RdWVzdGlvbnM9cmVzdWx0LnF1ZXN0aW9ucztcclxuICAgICAgdGhpcy5zdXJ2ZXlJRCA9IHRoaXMucXVlc3Rpb24uc3VydmV5SUQ7XHJcbiAgICAgIHRoaXMuYXVkaWVuY2VUeXBlSUQgPSB0aGlzLnF1ZXN0aW9uLmF1ZGllbmNlSXRlbUlEO1xyXG4gICAgICB0aGlzLnN1cnZleUF1ZGllbmNlVHlwZUlEID0gc3VydmV5QXVkaWVuY2VUeXBlSUQ7XHJcbiAgICAgIHRoaXMuZWRpdE1vZGVsRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgICB0aGlzLmVkaXRPcHRpb25Gb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcblxyXG4gICAgICB0aGlzLmVkaXRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5lZGl0TW9kZWxGb3JtO1xyXG4gICAgICB0aGlzLmVkaXRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEVkaXRNb2RlbDtcclxuICAgICAgdGhpcy5lZGl0U3VydmV5UXVlc3Rpb25Gb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldEVkaXRGdW5jdGlvbjtcclxuICAgICAgdGhpcy5lZGl0U3VydmV5UXVlc3Rpb25Gb3JtT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnQ7XHJcbiAgICAgIHRoaXMuZWRpdFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMuT25TdWNjZXNzSGFuZGxlciA9IHRoaXMub25TdWNjZXNzRWRpdEhhbmRsZXI7XHJcbiAgICAgIHRoaXMuZWRpdFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMuRGlzYWJsZVN1Y2Nlc3NOb3RpZmljYXRpb24gPSB0cnVlO1xyXG5cclxuICAgICAgbGV0IHRleHQgPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgICB0ZXh0LkFyYWJpYyA9IHRoaXMucXVlc3Rpb24udGV4dC5hcmFiaWM7XHJcbiAgICAgIHRleHQuRW5nbGlzaCA9IHRoaXMucXVlc3Rpb24udGV4dC5lbmdsaXNoO1xyXG5cclxuICAgICAgdGhpcy5lZGl0UXVlc3Rpb24gPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0UXVlc3Rpb24uTmFtZSA9IFwiVGV4dFwiO1xyXG4gICAgICB0aGlzLmVkaXRRdWVzdGlvbi5BcmFiaWNMYWJlbEtleSA9IFwiUXVlc3Rpb25JbkFyYWJpY1wiO1xyXG4gICAgICB0aGlzLmVkaXRRdWVzdGlvbi5FbmdsaXNoTGFiZWxLZXkgPSBcIlF1ZXN0aW9uSW5FbmdsaXNoXCI7XHJcbiAgICAgIHRoaXMuZWRpdFF1ZXN0aW9uLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRRdWVzdGlvbi5NYXhMZW5ndGggPSA0MDAwO1xyXG4gICAgICB0aGlzLmVkaXRRdWVzdGlvbi5MYW5ndWFnZU1vZGUgPSB0aGlzLmdldExhbmd1YWdlTW9kZVZhbHVlKCk7XHJcbiAgICAgIHRoaXMuZWRpdFF1ZXN0aW9uLlZhbHVlID0gdGV4dDtcclxuICAgICAgdGhpcy5lZGl0UXVlc3Rpb24uSXNEaXNhYmxlZCA9IGlzVmlld09ubHk7XHJcblxyXG4gICAgICB0aGlzLmVkaXREZXNjcmlwdGlvbiA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0RGVzY3JpcHRpb24uTmFtZSA9IFwiRGVzY3JpcHRpb25cIjtcclxuICAgICAgdGhpcy5lZGl0RGVzY3JpcHRpb24uQXJhYmljTGFiZWxLZXkgPSBcIkRlc2NyaXB0aW9uSW5BcmFiaWNcIjtcclxuICAgICAgdGhpcy5lZGl0RGVzY3JpcHRpb24uRW5nbGlzaExhYmVsS2V5ID0gXCJEZXNjcmlwdGlvbkluRW5nbGlzaFwiO1xyXG4gICAgICB0aGlzLmVkaXREZXNjcmlwdGlvbi5Jc1JlcXVpcmVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZWRpdERlc2NyaXB0aW9uLk1heExlbmd0aCA9IDI1MDtcclxuICAgICAgdGhpcy5lZGl0RGVzY3JpcHRpb24uUm93cyA9IDI7XHJcbiAgICAgIHRoaXMuZWRpdERlc2NyaXB0aW9uLkFyYWJpY0xhYmVsRGVzY3JpcHRpb24gPSB0aGlzLmwoXCJRdWVzdGlvbkRlc2NyaXB0aW9uSGludEFyYWJpY1wiKTtcclxuICAgICAgdGhpcy5lZGl0RGVzY3JpcHRpb24uRW5nbGlzaExhYmVsRGVzY3JpcHRpb24gPSB0aGlzLmwoXCJRdWVzdGlvbkRlc2NyaXB0aW9uSGludEVuZ2xpc2hcIik7XHJcbiAgICAgIHRoaXMuZWRpdERlc2NyaXB0aW9uLklzRGlzYWJsZWQgPSBpc1ZpZXdPbmx5O1xyXG5cclxuICAgICAgdGhpcy5lZGl0RGVzY3JpcHRpb24uTGFuZ3VhZ2VNb2RlID0gdGhpcy5nZXRMYW5ndWFnZU1vZGVWYWx1ZSgpO1xyXG4gICAgICBsZXQgZGVzY3JpcHRpb24gPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgICBkZXNjcmlwdGlvbi5BcmFiaWMgPSB0aGlzLnF1ZXN0aW9uLmRlc2NyaXB0aW9uLmFyYWJpYztcclxuICAgICAgZGVzY3JpcHRpb24uRW5nbGlzaCA9IHRoaXMucXVlc3Rpb24uZGVzY3JpcHRpb24uZW5nbGlzaDtcclxuICAgICAgdGhpcy5lZGl0RGVzY3JpcHRpb24uVmFsdWUgPSBkZXNjcmlwdGlvbjtcclxuXHJcblxyXG4gICAgICB0aGlzLmVkaXRRdWVzdGlvblR5cGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdFF1ZXN0aW9uVHlwZS5OYW1lID0gXCJRdWVzdGlvblR5cGVJdGVtSURcIjtcclxuICAgICAgdGhpcy5lZGl0UXVlc3Rpb25UeXBlLkxhYmVsS2V5ID0gXCJQcm9wZXJ0eVR5cGVcIjtcclxuICAgICAgdGhpcy5lZGl0UXVlc3Rpb25UeXBlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRRdWVzdGlvblR5cGUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRRdWVzdGlvblR5cGUuRGF0YVNvdXJjZSA9IHJlc3VsdC5vcHRpb25UeXBlc1xyXG4gICAgICB0aGlzLmVkaXRRdWVzdGlvblR5cGUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0UXVlc3Rpb25UeXBlLlNlbGVjdGVkSXRlbXMgPSB0aGlzLnF1ZXN0aW9uLnF1ZXN0aW9uVHlwZUl0ZW1JRDtcclxuICAgICAgdGhpcy5lZGl0UXVlc3Rpb25UeXBlLk5vdEZvdW5kVGV4dCA9IHRoaXMubChcIk5vUmVzdWx0Rm91bmRcIik7XHJcbiAgICAgIHRoaXMuZWRpdFF1ZXN0aW9uVHlwZS5Jc0Rpc2FibGVkID0gdHJ1ZTtcclxuXHJcblxyXG5cclxuICAgICAgdGhpcy5hdWRpZW5jZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5hdWRpZW5jZS5OYW1lID0gXCJBdWRpZW5jZUl0ZW1JRFwiXHJcbiAgICAgIHRoaXMuYXVkaWVuY2UuTGFiZWxLZXkgPSBcIkF1ZGllbmNlXCJcclxuICAgICAgdGhpcy5hdWRpZW5jZS5Jc1JlcXVpcmVkID0gdHJ1ZVxyXG4gICAgICB0aGlzLmF1ZGllbmNlLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbFxyXG4gICAgICB0aGlzLmF1ZGllbmNlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWVcclxuICAgICAgdGhpcy5hdWRpZW5jZS5TaG93Q2hlY2tib3ggPSBmYWxzZVxyXG4gICAgICB0aGlzLmF1ZGllbmNlLkRhdGFTb3VyY2UgPSByZXN1bHQuYXVkaWVuY2VzXHJcbiAgICAgIHRoaXMuYXVkaWVuY2UuU2VsZWN0ZWRJdGVtcyA9IHRoaXMucXVlc3Rpb24uYXVkaWVuY2VJdGVtSUQ7XHJcbiAgICAgIHRoaXMuYXVkaWVuY2UuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMubChcIkF1ZGllbmNlRGVzY3JpcHRpb25IaW50XCIpO1xyXG4gICAgICB0aGlzLmF1ZGllbmNlLklzRGlzYWJsZWQgPSBpc1ZpZXdPbmx5O1xyXG5cclxuXHJcblxyXG4gICAgICB0aGlzLmVkaXRTaXplID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXRTaXplLk5hbWUgPSBcIlNpemVcIjtcclxuICAgICAgdGhpcy5lZGl0U2l6ZS5MYWJlbEtleSA9IFwiU2l6ZVwiO1xyXG4gICAgICB0aGlzLmVkaXRTaXplLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRTaXplLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0U2l6ZS5EYXRhU291cmNlID0gdGhpcy5TaXplTGlzdDtcclxuICAgICAgdGhpcy5lZGl0U2l6ZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRTaXplLlNlbGVjdGVkSXRlbXMgPSB0aGlzLnF1ZXN0aW9uLm9wdGlvbnMuc2l6ZTtcclxuICAgICAgdGhpcy5lZGl0U2l6ZS5Ob3RGb3VuZFRleHQgPSB0aGlzLmwoXCJOb1Jlc3VsdEZvdW5kXCIpO1xyXG4gICAgICB0aGlzLmVkaXRTaXplLklzRGlzYWJsZWQgPSBpc1ZpZXdPbmx5O1xyXG5cclxuICAgICAgdGhpcy5lZGl0UmVxdWlyZWQgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdFJlcXVpcmVkLk5hbWUgPSBcIklzUmVxdWlyZWRcIjtcclxuICAgICAgdGhpcy5lZGl0UmVxdWlyZWQuTGFiZWxLZXkgPSBcIklzUmVxdWlyZWRcIjtcclxuICAgICAgdGhpcy5lZGl0UmVxdWlyZWQuVmFsdWUgPSB0aGlzLnF1ZXN0aW9uLmlzUmVxdWlyZWQ7XHJcbiAgICAgIHRoaXMuZWRpdFJlcXVpcmVkLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLmwoXCJSZXF1aXJlZERlc2NyaXB0aW9uSGludFwiKTtcclxuICAgICAgdGhpcy5lZGl0UmVxdWlyZWQuSXNEaXNhYmxlZCA9IGlzVmlld09ubHk7XHJcblxyXG5cclxuICAgICAgdGhpcy5lZGl0QWxsb3dTY29yZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0QWxsb3dTY29yZS5OYW1lID0gXCJJc0FsbG93U2NvcmluZ1wiO1xyXG4gICAgICB0aGlzLmVkaXRBbGxvd1Njb3JlLkxhYmVsS2V5ID0gXCJBbGxvd1Njb3JlXCI7XHJcbiAgICAgIHRoaXMuZWRpdEFsbG93U2NvcmUuVmFsdWUgPSB0aGlzLnF1ZXN0aW9uLmlzQWxsb3dTY29yaW5nO1xyXG4gICAgICB0aGlzLmVkaXRBbGxvd1Njb3JlLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLmwoXCJBbGxvd1Njb3JlRGVzY3JpcHRpb25cIik7XHJcbiAgICAgIHRoaXMuZWRpdEFsbG93U2NvcmUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMubChcIkFsbG93U2NvcmVEZXNjcmlwdGlvblwiKTtcclxuICAgICAgdGhpcy5lZGl0QWxsb3dTY29yZS5Jc0Rpc2FibGVkID0gaXNWaWV3T25seTtcclxuXHJcbiAgICAgIHRoaXMuZWRpdEhhc1NlYXJjaCA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0SGFzU2VhcmNoLk5hbWUgPSBcIkhhc1NlYXJjaFwiO1xyXG4gICAgICB0aGlzLmVkaXRIYXNTZWFyY2guTGFiZWxLZXkgPSBcIkhhc1NlYXJjaFwiO1xyXG4gICAgICB0aGlzLmVkaXRIYXNTZWFyY2guSXNEaXNhYmxlZCA9IGlzVmlld09ubHk7XHJcblxyXG4gICAgICB0aGlzLmVkaXRJc0FjdGl2ZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0SXNBY3RpdmUuTmFtZSA9IFwiSXNWaXNpYmxlXCI7XHJcbiAgICAgIHRoaXMuZWRpdElzQWN0aXZlLkxhYmVsS2V5ID0gXCJWaXNpYmxlXCI7XHJcbiAgICAgIHRoaXMuZWRpdElzQWN0aXZlLlZhbHVlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0SXNBY3RpdmUuVmFsdWUgPSB0aGlzLnF1ZXN0aW9uLmlzVmlzaWJsZTtcclxuICAgICAgdGhpcy5lZGl0SXNBY3RpdmUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMubChcIlZpc2libGVEZXNjcmlwdGlvbkhpbnRcIik7XHJcbiAgICAgIHRoaXMuZWRpdElzQWN0aXZlLklzRGlzYWJsZWQgPSBpc1ZpZXdPbmx5O1xyXG5cclxuXHJcbiAgICAgIC8vIHRoaXMuZWRpdERpc3BsYXlPcmRlciA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAvLyB0aGlzLmVkaXREaXNwbGF5T3JkZXIuTmFtZSA9IFwiRGlzcGxheU9yZGVyXCI7XHJcbiAgICAgIC8vIHRoaXMuZWRpdERpc3BsYXlPcmRlci5MYWJlbEtleSA9IFwiRGlzcGxheU9yZGVyXCI7XHJcbiAgICAgIC8vIHRoaXMuZWRpdERpc3BsYXlPcmRlci5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgLy8gdGhpcy5lZGl0RGlzcGxheU9yZGVyLk51bWJlclJhbmdlID0gbmV3IFJhbmdlTnVtYmVyKCk7XHJcbiAgICAgIC8vIHRoaXMuZWRpdERpc3BsYXlPcmRlci5OdW1iZXJSYW5nZS5Gcm9tID0gMTtcclxuICAgICAgLy8gdGhpcy5lZGl0RGlzcGxheU9yZGVyLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICAvLyB0aGlzLmVkaXREaXNwbGF5T3JkZXIuVmFsdWUgPSB0aGlzLnF1ZXN0aW9uLmRpc3BsYXlPcmRlcjtcclxuICAgICAgLy8gdGhpcy5lZGl0RGlzcGxheU9yZGVyLkN1c3RvbVZhbGlkYXRpb24gPSBbdGhpcy5udW1iZXJWYWxpZGF0aW9uXTtcclxuXHJcbiAgICAgIHRoaXMuZWRpdE1heExlbmd0aCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXRNYXhMZW5ndGguTmFtZSA9IFwiTWF4TGVuZ3RoXCI7XHJcbiAgICAgIHRoaXMuZWRpdE1heExlbmd0aC5MYWJlbEtleSA9IFwiTWF4TGVuZ3RoXCI7XHJcbiAgICAgIHRoaXMuZWRpdE1heExlbmd0aC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0TWF4TGVuZ3RoLk51bWJlclJhbmdlID0gbmV3IFJhbmdlTnVtYmVyKCk7XHJcbiAgICAgIHRoaXMuZWRpdE1heExlbmd0aC5OdW1iZXJSYW5nZS5Gcm9tID0gMTtcclxuICAgICAgdGhpcy5lZGl0TWF4TGVuZ3RoLk51bWJlclJhbmdlLlRvID0gNDAwMDtcclxuICAgICAgdGhpcy5lZGl0TWF4TGVuZ3RoLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICB0aGlzLmVkaXRNYXhMZW5ndGguVmFsdWUgPSB0aGlzLnF1ZXN0aW9uLm9wdGlvbnMubWF4TGVuZ3RoO1xyXG4gICAgICB0aGlzLmVkaXRNYXhMZW5ndGguSXNEaXNhYmxlZCA9IGlzVmlld09ubHk7XHJcblxyXG5cclxuICAgICAgdGhpcy5lZGl0TWluTGVuZ3RoID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdE1pbkxlbmd0aC5OYW1lID0gXCJNaW5MZW5ndGhcIjtcclxuICAgICAgdGhpcy5lZGl0TWluTGVuZ3RoLkxhYmVsS2V5ID0gXCJNaW5MZW5ndGhcIjtcclxuICAgICAgdGhpcy5lZGl0TWluTGVuZ3RoLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRNaW5MZW5ndGguTnVtYmVyUmFuZ2UgPSBuZXcgUmFuZ2VOdW1iZXIoKTtcclxuICAgICAgdGhpcy5lZGl0TWluTGVuZ3RoLk51bWJlclJhbmdlLkZyb20gPSAxO1xyXG4gICAgICB0aGlzLmVkaXRNaW5MZW5ndGguTnVtYmVyUmFuZ2UuVG8gPSA0MDAwO1xyXG4gICAgICB0aGlzLmVkaXRNaW5MZW5ndGguVHlwZSA9IElucHV0VHlwZS5OdW1iZXI7XHJcbiAgICAgIHRoaXMuZWRpdE1pbkxlbmd0aC5WYWx1ZSA9IHRoaXMucXVlc3Rpb24ub3B0aW9ucy5taW5MZW5ndGg7XHJcbiAgICAgIHRoaXMuZWRpdE1pbkxlbmd0aC5Jc0Rpc2FibGVkID0gaXNWaWV3T25seTtcclxuXHJcbiAgICAgIHRoaXMuZWRpdFJvd3NOdW1iZXIgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0Um93c051bWJlci5OYW1lID0gXCJSb3dzXCI7XHJcbiAgICAgIHRoaXMuZWRpdFJvd3NOdW1iZXIuTGFiZWxLZXkgPSBcIlJvd3NcIjtcclxuICAgICAgdGhpcy5lZGl0Um93c051bWJlci5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0Um93c051bWJlci5OdW1iZXJSYW5nZSA9IG5ldyBSYW5nZU51bWJlcigpO1xyXG4gICAgICB0aGlzLmVkaXRSb3dzTnVtYmVyLk51bWJlclJhbmdlLkZyb20gPSAxO1xyXG4gICAgICB0aGlzLmVkaXRSb3dzTnVtYmVyLk51bWJlclJhbmdlLlRvID0gMjA7XHJcbiAgICAgIHRoaXMuZWRpdFJvd3NOdW1iZXIuVHlwZSA9IElucHV0VHlwZS5OdW1iZXI7XHJcbiAgICAgIHRoaXMuZWRpdFJvd3NOdW1iZXIuVmFsdWUgPSB0aGlzLnF1ZXN0aW9uLm9wdGlvbnMucm93cztcclxuICAgICAgdGhpcy5lZGl0Um93c051bWJlci5Jc0Rpc2FibGVkID0gaXNWaWV3T25seTtcclxuXHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVTaXplID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVTaXplLk5hbWUgPSBcIk1heEZpbGVTaXplSW5NQlwiO1xyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlU2l6ZS5MYWJlbEtleSA9IFwiTWF4RmlsZVNpemVJbk1CXCI7XHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVTaXplLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlU2l6ZS5OdW1iZXJSYW5nZSA9IG5ldyBSYW5nZU51bWJlcigpO1xyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlU2l6ZS5OdW1iZXJSYW5nZS5Gcm9tID0gMTtcclxuICAgICAgdGhpcy5lZGl0TWF4RmlsZVNpemUuTnVtYmVyUmFuZ2UuVG8gPSAxMDA7XHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVTaXplLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlU2l6ZS5WYWx1ZSA9IHRoaXMucXVlc3Rpb24ub3B0aW9ucy5tYXhGaWxlU2l6ZUluTUI7XHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVTaXplLklzRGlzYWJsZWQgPSBpc1ZpZXdPbmx5O1xyXG5cclxuXHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVDb3VudCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlQ291bnQuTmFtZSA9IFwiTWF4RmlsZUNvdW50XCI7XHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVDb3VudC5MYWJlbEtleSA9IFwiTWF4RmlsZXNDb3VudFwiO1xyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlQ291bnQuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVDb3VudC5OdW1iZXJSYW5nZSA9IG5ldyBSYW5nZU51bWJlcigpO1xyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlQ291bnQuTnVtYmVyUmFuZ2UuRnJvbSA9IDE7XHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVDb3VudC5OdW1iZXJSYW5nZS5UbyA9IDUwO1xyXG4gICAgICB0aGlzLmVkaXRNYXhGaWxlQ291bnQuVHlwZSA9IElucHV0VHlwZS5OdW1iZXI7XHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVDb3VudC5WYWx1ZSA9IHRoaXMucXVlc3Rpb24ub3B0aW9ucy5tYXhGaWxlQ291bnQ7XHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVDb3VudC5DdXN0b21WYWxpZGF0aW9uID0gW3RoaXMubnVtYmVyVmFsaWRhdGlvbl07XHJcbiAgICAgIHRoaXMuZWRpdE1heEZpbGVDb3VudC5Jc0Rpc2FibGVkID0gaXNWaWV3T25seTtcclxuXHJcbiAgICAgIGxldCBGaWxlc0V4dGVuc2lvblJlc3VsdCA9IHRoaXMucXVlc3Rpb24ub3B0aW9ucy5hbGxvd2VkRXh0ZW5zaW9ucyBhcyBzdHJpbmdbXVxyXG4gICAgICBsZXQgRmlsZXNFeHRlbnNpb25zID0gRmlsZXNFeHRlbnNpb25SZXN1bHQgPyByZXN1bHQuZXh0ZW5zaW9ucy5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIEZpbGVzRXh0ZW5zaW9uUmVzdWx0LmluY2x1ZGVzKGl0ZW0ua2V5KSB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KSA6IFtdO1xyXG4gICAgICB0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucy5OYW1lID0gXCJBbGxvd2VkRXh0ZW5zaW9uc1wiO1xyXG4gICAgICB0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuTGFiZWxLZXkgPSBcIkV4dGVuc2lvbnNcIjtcclxuICAgICAgdGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuRGF0YVNvdXJjZSA9IHJlc3VsdC5leHRlbnNpb25zO1xyXG4gICAgICB0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuU2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucy5TZWxlY3RlZEl0ZW1zID0gRmlsZXNFeHRlbnNpb25zO1xyXG4gICAgICB0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuTm90Rm91bmRUZXh0ID0gdGhpcy5sKFwiTm9SZXN1bHRGb3VuZFwiKTtcclxuICAgICAgdGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLklzRGlzYWJsZWQgPSBpc1ZpZXdPbmx5O1xyXG5cclxuXHJcbiAgICAgIC8vIHRoaXMuZWRpdE1vZGVsRm9ybS5hZGRWYWxpZGF0b3JzKHRoaXMuZnJvbVRvKFwiTWluTGVuZ3RoXCIsIFwiTWF4TGVuZ3RoXCIpKTtcclxuXHJcbiAgICAgIHRoaXMuY2hhbmdlRGF0YVR5cGUodGhpcy5xdWVzdGlvbi5xdWVzdGlvblR5cGVJdGVtSUQpO1xyXG4gICAgICB0aGlzLmNoYW5nZVNjb3JpbmcodGhpcy5xdWVzdGlvbi5pc0FsbG93U2NvcmluZyk7XHJcblxyXG4gICAgICB0aGlzLmVkaXRPcHRpb25JZCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXRPcHRpb25JZC5OYW1lID0gXCJJZFwiXHJcbiAgICAgIHRoaXMuZWRpdE9wdGlvbklkLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgdGhpcy5lZGl0T3B0aW9uSWQuVHlwZSA9IElucHV0VHlwZS5UZXh0XHJcblxyXG4gICAgICB0aGlzLmVkaXROYW1lT3B0aW9uID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdE5hbWVPcHRpb24uTmFtZSA9IFwiTmFtZU9wdGlvblwiO1xyXG4gICAgICB0aGlzLmVkaXROYW1lT3B0aW9uLkFyYWJpY0xhYmVsS2V5ID0gXCJOYW1lSW5BcmFiaWNcIjtcclxuICAgICAgdGhpcy5lZGl0TmFtZU9wdGlvbi5FbmdsaXNoTGFiZWxLZXkgPSBcIk5hbWVJbkVuZ2xpc2hcIjtcclxuICAgICAgdGhpcy5lZGl0TmFtZU9wdGlvbi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0TmFtZU9wdGlvbi5NYXhMZW5ndGggPSAyMjU7XHJcbiAgICAgIHRoaXMuZWRpdE5hbWVPcHRpb24uTGFuZ3VhZ2VNb2RlID0gdGhpcy5nZXRMYW5ndWFnZU1vZGVWYWx1ZSgpO1xyXG5cclxuICAgICAgdGhpcy5zY29yZU51bWJlciA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLnNjb3JlTnVtYmVyLk5hbWUgPSBcIlNjb3JlXCI7XHJcbiAgICAgIHRoaXMuc2NvcmVOdW1iZXIuTGFiZWxLZXkgPSBcIlNjb3JlXCI7XHJcbiAgICAgIHRoaXMuc2NvcmVOdW1iZXIuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2NvcmVOdW1iZXIuVHlwZSA9IElucHV0VHlwZS5OdW1iZXI7XHJcbiAgICAgIGxldCByYW5nZU51bWJlciA9IG5ldyBSYW5nZU51bWJlcigpXHJcbiAgICAgIHJhbmdlTnVtYmVyLlRvID0gMTAwMDAwMFxyXG4gICAgICByYW5nZU51bWJlci5Gcm9tID0gLTEwMDAwMDBcclxuICAgICAgdGhpcy5zY29yZU51bWJlci5OdW1iZXJSYW5nZSA9IHJhbmdlTnVtYmVyO1xyXG5cclxuXHJcbiAgICAgIHRoaXMuZGlzcGxheU9yZGVyT3B0aW9uID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZGlzcGxheU9yZGVyT3B0aW9uLk5hbWUgPSBcIkRpc3BsYXlPcmRlclwiO1xyXG5cclxuICAgICAgdGhpcy5pZE9wdGlvbiA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmlkT3B0aW9uLk5hbWUgPSBcIklkT3B0aW9uXCI7XHJcblxyXG4gICAgICB0aGlzLmVkaXRPcHRpb25MaW5rZWRRdWVzdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdE9wdGlvbkxpbmtlZFF1ZXN0aW9ucy5OYW1lID0gXCJMaW5rZWRRdWVzdGlvbnNcIjtcclxuICAgICAgdGhpcy5lZGl0T3B0aW9uTGlua2VkUXVlc3Rpb25zLkxhYmVsS2V5ID0gXCJMaW5rZWRRdWVzdGlvbnNcIjtcclxuICAgICAgdGhpcy5lZGl0T3B0aW9uTGlua2VkUXVlc3Rpb25zLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0T3B0aW9uTGlua2VkUXVlc3Rpb25zLkRhdGFTb3VyY2UgPSByZXN1bHQucXVlc3Rpb25zO1xyXG4gICAgICB0aGlzLmVkaXRPcHRpb25MaW5rZWRRdWVzdGlvbnMuU2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZWRpdE9wdGlvbkxpbmtlZFF1ZXN0aW9ucy5Ob3RGb3VuZFRleHQgPSB0aGlzLmwoXCJOb1Jlc3VsdEZvdW5kXCIpO1xyXG4gICAgICB0aGlzLmVkaXRPcHRpb25MaW5rZWRRdWVzdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMubChcIkxpbmtlZFF1ZXN0aW9uRGVzY3JpcHRpb25IaW50XCIpO1xyXG5cclxuXHJcbiAgICAgIGlmICh0aGlzLnF1ZXN0aW9uLnF1ZXN0aW9uT3B0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMucXVlc3Rpb24ucXVlc3Rpb25PcHRpb25zLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMucXVlc3Rpb24ucXVlc3Rpb25PcHRpb25zW2luZGV4XTtcclxuICAgICAgICAgIHRoaXMub3B0aW9uTGlzdC5wdXNoKG5ldyBTdXJ2ZXlRdWVzdGlvbk9wdGlvbkRUTyhlbGVtZW50KSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMub3Blbk1vZGFsKHRoaXMuRWRpdE1vZGFsLCAneGwnKTtcclxuICAgICAgdGhpcy5zdG9wQmxvY2tVSSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldEVkaXRNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IHJlc3VsdE9wdGlvbk1vZGVsID0gdGhpcy5lZGl0T3B0aW9uRm9ybS52YWx1ZTtcclxuICAgIGxldCByZXN1bHRNb2RlbCA9IHRoaXMuZWRpdE1vZGVsRm9ybS52YWx1ZTtcclxuICAgIGlmICh0aGlzLmlzU2VsZWN0KSB7XHJcbiAgICAgIGlmICgocmVzdWx0T3B0aW9uTW9kZWwuTmFtZU9wdGlvbi5BcmFiaWMgIT0gdW5kZWZpbmVkICYmIHJlc3VsdE9wdGlvbk1vZGVsLk5hbWVPcHRpb24uQXJhYmljICE9IFwiXCIpIHx8IChyZXN1bHRPcHRpb25Nb2RlbC5OYW1lT3B0aW9uLkVuZ2xpc2ggIT0gdW5kZWZpbmVkICYmIHJlc3VsdE9wdGlvbk1vZGVsLk5hbWVPcHRpb24uRW5nbGlzaCAhPSBcIlwiKSB8fCAocmVzdWx0T3B0aW9uTW9kZWwuU2NvcmUgIT0gdW5kZWZpbmVkICYmIHJlc3VsdE9wdGlvbk1vZGVsLlNjb3JlID4gMCkpIHtcclxuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMubChcIk9wdGlvblBlbmRpbmdEYXRhRXJyb3JNZXNzYWdlXCIpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMub3B0aW9uTGlzdC5sZW5ndGggPT0gMCAmJiB0aGlzLmlzU2VsZWN0KSB7XHJcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmwoXCJPcHRpb25FcnJvck1lc3NhZ2VcIik7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICBsZXQgZWRpdE1vZGVsOiBTdXJ2ZXlRdWVzdGlvbkRUTyA9IG5ldyBTdXJ2ZXlRdWVzdGlvbkRUTygpO1xyXG4gICAgZWRpdE1vZGVsLklEX0dVSUQgPSB0aGlzLnF1ZXN0aW9uSURcclxuICAgIGVkaXRNb2RlbC5TdXJ2ZXlJRCA9IHRoaXMuc3VydmV5SURcclxuICAgIC8vIGVkaXRNb2RlbC5EaXNwbGF5T3JkZXIgPSByZXN1bHRNb2RlbC5EaXNwbGF5T3JkZXI7XHJcbiAgICBlZGl0TW9kZWwuVGV4dC5BcmFiaWMgPSByZXN1bHRNb2RlbC5UZXh0LkFyYWJpYztcclxuICAgIGVkaXRNb2RlbC5UZXh0LkVuZ2xpc2ggPSByZXN1bHRNb2RlbC5UZXh0LkVuZ2xpc2g7XHJcbiAgICBlZGl0TW9kZWwuRGVzY3JpcHRpb24uQXJhYmljID0gcmVzdWx0TW9kZWwuRGVzY3JpcHRpb24uQXJhYmljO1xyXG4gICAgZWRpdE1vZGVsLkRlc2NyaXB0aW9uLkVuZ2xpc2ggPSByZXN1bHRNb2RlbC5EZXNjcmlwdGlvbi5FbmdsaXNoO1xyXG4gICAgZWRpdE1vZGVsLk9wdGlvbnMuRGVzY3JpcHRpb24uQXJhYmljID0gcmVzdWx0TW9kZWwuRGVzY3JpcHRpb24uQXJhYmljO1xyXG4gICAgZWRpdE1vZGVsLk9wdGlvbnMuRGVzY3JpcHRpb24uRW5nbGlzaCA9IHJlc3VsdE1vZGVsLkRlc2NyaXB0aW9uLkVuZ2xpc2g7XHJcbiAgICBpZiAodGhpcy5zdXJ2ZXlBdWRpZW5jZVR5cGVJRCA9PSBBdWRpZW5jZVR5cGUuQm90aClcclxuICAgICAgZWRpdE1vZGVsLkF1ZGllbmNlSXRlbUlEID0gcmVzdWx0TW9kZWwuQXVkaWVuY2VJdGVtSUQ7XHJcbiAgICBlbHNlXHJcbiAgICAgIGVkaXRNb2RlbC5BdWRpZW5jZUl0ZW1JRCA9IHRoaXMuYXVkaWVuY2VUeXBlSUQ7XHJcbiAgICBlZGl0TW9kZWwuUXVlc3Rpb25UeXBlSXRlbUlEID0gdGhpcy5xdWVzdGlvbi5xdWVzdGlvblR5cGVJdGVtSUQ7XHJcbiAgICBlZGl0TW9kZWwuSXNBbGxvd1Njb3JpbmcgPSByZXN1bHRNb2RlbC5Jc0FsbG93U2NvcmluZztcclxuICAgIGVkaXRNb2RlbC5PcHRpb25zLlNpemUgPSByZXN1bHRNb2RlbC5TaXplO1xyXG4gICAgZWRpdE1vZGVsLk9wdGlvbnMuSXNSZXF1aXJlZCA9IHJlc3VsdE1vZGVsLklzUmVxdWlyZWQ7XHJcbiAgICBlZGl0TW9kZWwuSXNSZXF1aXJlZCA9IHJlc3VsdE1vZGVsLklzUmVxdWlyZWQ7XHJcbiAgICBlZGl0TW9kZWwuSXNWaXNpYmxlID0gcmVzdWx0TW9kZWwuSXNWaXNpYmxlO1xyXG4gICAgZWRpdE1vZGVsLk9wdGlvbnMuSGFzU2VhcmNoID0gcmVzdWx0TW9kZWwuSGFzU2VhcmNoO1xyXG5cclxuICAgIGlmICh0aGlzLmlzVGV4dCB8fCB0aGlzLmlzTnVtYmVyKSB7XHJcbiAgICAgIGVkaXRNb2RlbC5PcHRpb25zLk1pbkxlbmd0aCA9IHJlc3VsdE1vZGVsLk1pbkxlbmd0aDtcclxuICAgICAgZWRpdE1vZGVsLk9wdGlvbnMuTWF4TGVuZ3RoID0gcmVzdWx0TW9kZWwuTWF4TGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzRmlsZSB8fCB0aGlzLmlzTXVsdGlGaWxlIHx8IHRoaXMuaXNJbWFnZSlcclxuICAgICAgZWRpdE1vZGVsLk9wdGlvbnMuTWF4RmlsZVNpemVJbk1CID0gcmVzdWx0TW9kZWwuTWF4RmlsZVNpemVJbk1CO1xyXG5cclxuICAgIGlmICh0aGlzLmlzTXVsdGlGaWxlKVxyXG4gICAgICBlZGl0TW9kZWwuT3B0aW9ucy5NYXhGaWxlQ291bnQgPSByZXN1bHRNb2RlbC5NYXhGaWxlQ291bnQ7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNNdWx0aUZpbGUgfHwgdGhpcy5pc0ZpbGUpXHJcbiAgICAgIGVkaXRNb2RlbC5PcHRpb25zLkFsbG93ZWRFeHRlbnNpb25zID0gcmVzdWx0TW9kZWwuQWxsb3dlZEV4dGVuc2lvbnM7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNTZWxlY3QpIHtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMub3B0aW9uTGlzdC5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICB0aGlzLm9wdGlvbkxpc3RbaW5kZXhdLkRpc3BsYXlPcmRlciA9IGluZGV4ICsgMTtcclxuICAgICAgICBlZGl0TW9kZWwuUXVlc3Rpb25PcHRpb25zID0gdGhpcy5vcHRpb25MaXN0O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcGFyYW1BcnJheS5wdXNoKGVkaXRNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcbiAgZ2V0RWRpdEZ1bmN0aW9uID0gKGVkaXRNb2RhbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICBpZiAoIXRoaXMuZXJyb3JNZXNzYWdlKVxyXG4gICAgICByZXR1cm4gdGhpcy5zdXJ2ZXlRdWVzdGlvblNlcnZpY2UuZWRpdChlZGl0TW9kYWwpO1xyXG4gIH1cclxuICBnZXRMaW5rZWRRdWVzdGlvbnMob3B0aW9uOlN1cnZleVF1ZXN0aW9uT3B0aW9uRFRPKVxyXG4gIHtcclxuICAgIHJldHVybiB0aGlzLlF1ZXN0aW9ucy5maWx0ZXIoaXRlbT0+b3B0aW9uLkxpbmtlZFF1ZXN0aW9ucy5pbmNsdWRlcyhpdGVtLmtleSkpLm1hcChpdGVtPT5pdGVtLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIGFkZE9wdGlvbigpIHtcclxuICAgIHRoaXMudG90YWxTY29yZSA9IDA7XHJcbiAgICB0aGlzLmVkaXRPcHRpb25Gb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgIGlmICh0aGlzLmVkaXRPcHRpb25Gb3JtLmludmFsaWQpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgcmVzdWx0TW9kZWwgPSB0aGlzLmVkaXRPcHRpb25Gb3JtLnZhbHVlO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbkxpc3QubGVuZ3RoID49IDEgJiYgdGhpcy5zaG93U2NvcmVPcHRpb24pIHtcclxuXHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbkxpc3QubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgbGV0IGVsZW1lbnQgPSB0aGlzLm9wdGlvbkxpc3RbaW5kZXhdLlNjb3JlO1xyXG4gICAgICAgIGlmIChlbGVtZW50ID4gMTAwMDAwMCkge1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmwoXCJNYXhPcHRpb25TY29yZUVycm9yTWVzc2FnZVwiKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGVsZW1lbnQgPCAtMTAwMDAwMCkge1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmwoXCJNaW5PcHRpb25TY29yZUVycm9yTWVzc2FnZVwiKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgfVxyXG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBudWxsXHJcbiAgICBsZXQgb3B0aW9uID0gbmV3IFN1cnZleVF1ZXN0aW9uT3B0aW9uRFRPKCk7XHJcbiAgICBvcHRpb24uTmFtZS5BcmFiaWMgPSByZXN1bHRNb2RlbC5OYW1lT3B0aW9uLkFyYWJpY1xyXG4gICAgb3B0aW9uLk5hbWUuRW5nbGlzaCA9IHJlc3VsdE1vZGVsLk5hbWVPcHRpb24uRW5nbGlzaFxyXG4gICAgb3B0aW9uLklEX0dVSUQ9cmVzdWx0TW9kZWwuSWRPcHRpb25cclxuICAgIGRlYnVnZ2VyO1xyXG4gICAgaWYgKHJlc3VsdE1vZGVsLkRpc3BsYXlPcmRlcilcclxuICAgICAgb3B0aW9uLkRpc3BsYXlPcmRlciA9IHJlc3VsdE1vZGVsLkRpc3BsYXlPcmRlcjtcclxuICAgIGVsc2VcclxuICAgICAgb3B0aW9uLkRpc3BsYXlPcmRlciA9IHRoaXMub3B0aW9uTGlzdC5sZW5ndGggKyAxO1xyXG5cclxuICAgIG9wdGlvbi5MaW5rZWRRdWVzdGlvbnMgPSByZXN1bHRNb2RlbC5MaW5rZWRRdWVzdGlvbnM7XHJcbiAgICBpZiAodGhpcy5zaG93U2NvcmVPcHRpb24pXHJcbiAgICAgIG9wdGlvbi5TY29yZSA9IE51bWJlci5wYXJzZUZsb2F0KHJlc3VsdE1vZGVsLlNjb3JlKTtcclxuICAgIHRoaXMuZWRpdE9wdGlvbkZvcm0ucmVzZXQoKTtcclxuICAgIHRoaXMuZWRpdE9wdGlvbkZvcm0uY29udHJvbHNbXCJOYW1lT3B0aW9uXCJdLnJlc2V0KCk7XHJcbiAgICB0aGlzLmVkaXRPcHRpb25Gb3JtLmNvbnRyb2xzW1wiSWRPcHRpb25cIl0ucmVzZXQoKTtcclxuICAgIHRoaXMuZWRpdE9wdGlvbkZvcm0uY29udHJvbHNbXCJEaXNwbGF5T3JkZXJcIl0ucmVzZXQoKTtcclxuICAgIHRoaXMuZWRpdE9wdGlvbkZvcm0uY29udHJvbHNbXCJMaW5rZWRRdWVzdGlvbnNcIl0ucmVzZXQoKTtcclxuICAgIGlmICh0aGlzLnNob3dTY29yZU9wdGlvbilcclxuICAgICAgdGhpcy5lZGl0T3B0aW9uRm9ybS5jb250cm9sc1tcIlNjb3JlXCJdLnJlc2V0KCk7XHJcbiAgICAgIHRoaXMub3B0aW9uTGlzdC5zcGxpY2Uob3B0aW9uLkRpc3BsYXlPcmRlci0xLCAwLG9wdGlvbik7XHJcbiAgICAgIHRoaXMuaXNFZGl0Rm9ybUNoYW5nZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuaXNPcHRpb25JbkVkaXRNb2RlPSBmYWxzZTtcclxuXHJcbiAgfVxyXG5cclxuICBkZWxldGVPcHRpb24ob3B0aW9uKSB7XHJcbiAgICB0aGlzLm9wdGlvbkxpc3QgPSB0aGlzLm9wdGlvbkxpc3QuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPSBvcHRpb24pXHJcbiAgICB0aGlzLmlzRWRpdEZvcm1DaGFuZ2UgPSB0cnVlO1xyXG4gIH1cclxuXHJcblxyXG4gIGVkaXRPcHRpb24ob3B0aW9uOiBTdXJ2ZXlRdWVzdGlvbk9wdGlvbkRUTykge1xyXG4gICAgZGVidWdnZXI7XHJcbiAgICBpZiAoKHRoaXMuZWRpdE9wdGlvbkZvcm0udG91Y2hlZCA9PSB0cnVlICYmIHRoaXMuZWRpdE9wdGlvbkZvcm0udmFsaWQpIHx8IHRoaXMuZWRpdE9wdGlvbkZvcm0udG91Y2hlZCA9PSBmYWxzZSlcclxuICAgICAgdGhpcy5hZGRPcHRpb24oKTtcclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmVkaXRPcHRpb25Gb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgbmFtZSA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICBuYW1lLkFyYWJpYyA9IG9wdGlvbi5OYW1lLkFyYWJpYyA/PyBudWxsO1xyXG4gICAgbmFtZS5FbmdsaXNoID0gb3B0aW9uLk5hbWUuRW5nbGlzaCA/PyBudWxsO1xyXG4gICAgdGhpcy5lZGl0T3B0aW9uRm9ybS5jb250cm9sc1tcIk5hbWVPcHRpb25cIl0uc2V0VmFsdWUobmFtZSk7XHJcbiAgICB0aGlzLmVkaXRPcHRpb25Gb3JtLmNvbnRyb2xzW1wiSWRPcHRpb25cIl0uc2V0VmFsdWUob3B0aW9uLklEX0dVSUQpO1xyXG4gICAgdGhpcy5lZGl0T3B0aW9uRm9ybS5jb250cm9sc1tcIkRpc3BsYXlPcmRlclwiXS5zZXRWYWx1ZShvcHRpb24uRGlzcGxheU9yZGVyKTtcclxuICAgIHRoaXMuZWRpdE9wdGlvbkZvcm0uY29udHJvbHNbXCJMaW5rZWRRdWVzdGlvbnNcIl0uc2V0VmFsdWUob3B0aW9uLkxpbmtlZFF1ZXN0aW9ucyk7XHJcbiAgICBpZiAodGhpcy5zaG93U2NvcmVPcHRpb24pXHJcbiAgICAgIHRoaXMuZWRpdE9wdGlvbkZvcm0uY29udHJvbHNbXCJTY29yZVwiXS5zZXRWYWx1ZShvcHRpb24uU2NvcmUpO1xyXG4gICAgdGhpcy5vcHRpb25MaXN0ID0gdGhpcy5vcHRpb25MaXN0LmZpbHRlcihpdGVtID0+IGl0ZW0gIT0gb3B0aW9uKVxyXG4gICAgdGhpcy5pc0VkaXRGb3JtQ2hhbmdlID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNPcHRpb25JbkVkaXRNb2RlPSB0cnVlO1xyXG4gIH1cclxuICBmcm9tVG8oZnJvbUZpZWxkOiBzdHJpbmcsIHRvRmllbGQ6IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoZm9ybUdyb3VwOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSB8IG51bGwgPT4ge1xyXG4gICAgICBjb25zdCBmcm9tRGF0ZSA9IGZvcm1Hcm91cC5nZXQoZnJvbUZpZWxkKTtcclxuICAgICAgY29uc3QgdG9EYXRlID0gZm9ybUdyb3VwLmdldCh0b0ZpZWxkKTtcclxuICAgICAgaWYgKChmcm9tRGF0ZSAhPT0gbnVsbCAmJiB0b0RhdGUgIT09IG51bGwpKSB7XHJcbiAgICAgICAgaWYgKChmcm9tRGF0ZS52YWx1ZSAhPT0gbnVsbCAmJiB0b0RhdGUudmFsdWUgIT09IG51bGwpICYmIHBhcnNlSW50KGZyb21EYXRlLnZhbHVlKSA+IHBhcnNlSW50KHRvRGF0ZS52YWx1ZSkpIHtcclxuICAgICAgICAgIGZyb21EYXRlLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgICAgIHRvRGF0ZS5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgICB0b0RhdGUuc2V0RXJyb3JzKHsgXCJlcnJvck1hc3NhZ2VcIjogdGhpcy5sKFwiR3JlYXRlclRoYW5PckVxdWFsVG9cIikgfSk7XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdG9EYXRlLnNldEVycm9ycyhudWxsKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuXHJcbiAgdXBkYXRlRm9ybVN0YXR1cyhrZXk6IGFueSkge1xyXG4gICAgc3dpdGNoIChrZXkpIHtcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLlRleHQ6XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5NdWx0aWxpbmVUZXh0OlxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heExlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4TGVuZ3RoLk5hbWUpLCB0aGlzLmVkaXRNYXhMZW5ndGgpXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWluTGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNaW5MZW5ndGguTmFtZSksIHRoaXMuZWRpdE1pbkxlbmd0aClcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlU2l6ZS5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZVNpemUuTmFtZSksIHRoaXMuZWRpdE1heEZpbGVTaXplKVxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heEZpbGVDb3VudC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZUNvdW50Lk5hbWUpLCB0aGlzLmVkaXRNYXhGaWxlQ291bnQpXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuTmFtZSksIHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucylcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5OdW1iZXI6XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4TGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhMZW5ndGguTmFtZSksIHRoaXMuZWRpdE1heExlbmd0aClcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNaW5MZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZSh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1pbkxlbmd0aC5OYW1lKSwgdGhpcy5lZGl0TWluTGVuZ3RoKVxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heEZpbGVTaXplLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlU2l6ZS5OYW1lKSwgdGhpcy5lZGl0TWF4RmlsZVNpemUpXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZUNvdW50Lk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlQ291bnQuTmFtZSksIHRoaXMuZWRpdE1heEZpbGVDb3VudClcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZSh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSwgdGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zKVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLkZpbGU6XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4TGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhMZW5ndGguTmFtZSksIHRoaXMuZWRpdE1heExlbmd0aClcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNaW5MZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZSh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1pbkxlbmd0aC5OYW1lKSwgdGhpcy5lZGl0TWluTGVuZ3RoKVxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heEZpbGVTaXplLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlU2l6ZS5OYW1lKSwgdGhpcy5lZGl0TWF4RmlsZVNpemUpXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZUNvdW50Lk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlQ291bnQuTmFtZSksIHRoaXMuZWRpdE1heEZpbGVDb3VudClcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZSh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSwgdGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zKVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLk11bHRpRmlsZTpcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhMZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZSh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heExlbmd0aC5OYW1lKSwgdGhpcy5lZGl0TWF4TGVuZ3RoKVxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1pbkxlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWluTGVuZ3RoLk5hbWUpLCB0aGlzLmVkaXRNaW5MZW5ndGgpXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZVNpemUuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZSh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heEZpbGVTaXplLk5hbWUpLCB0aGlzLmVkaXRNYXhGaWxlU2l6ZSlcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlQ291bnQuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZSh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heEZpbGVDb3VudC5OYW1lKSwgdGhpcy5lZGl0TWF4RmlsZUNvdW50KVxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSlcclxuICAgICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLk5hbWUpLCB0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMpXHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuSW1hZ2U6XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4TGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhMZW5ndGguTmFtZSksIHRoaXMuZWRpdE1heExlbmd0aClcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNaW5MZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZSh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1pbkxlbmd0aC5OYW1lKSwgdGhpcy5lZGl0TWluTGVuZ3RoKVxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heEZpbGVTaXplLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlU2l6ZS5OYW1lKSwgdGhpcy5lZGl0TWF4RmlsZVNpemUpXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZUNvdW50Lk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlQ291bnQuTmFtZSksIHRoaXMuZWRpdE1heEZpbGVDb3VudClcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZSh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSwgdGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zKVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLk11bHRpcGxlU2VsZWN0OlxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuU2luZ2xlU2VsZWN0OlxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heExlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4TGVuZ3RoLk5hbWUpLCB0aGlzLmVkaXRNYXhMZW5ndGgpXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWluTGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNaW5MZW5ndGguTmFtZSksIHRoaXMuZWRpdE1pbkxlbmd0aClcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlU2l6ZS5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZVNpemUuTmFtZSksIHRoaXMuZWRpdE1heEZpbGVTaXplKVxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heEZpbGVDb3VudC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZUNvdW50Lk5hbWUpLCB0aGlzLmVkaXRNYXhGaWxlQ291bnQpXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuTmFtZSksIHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucylcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4TGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhMZW5ndGguTmFtZSksIHRoaXMuZWRpdE1heExlbmd0aClcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNaW5MZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZSh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1pbkxlbmd0aC5OYW1lKSwgdGhpcy5lZGl0TWluTGVuZ3RoKVxyXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdE1heEZpbGVTaXplLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlU2l6ZS5OYW1lKSwgdGhpcy5lZGl0TWF4RmlsZVNpemUpXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGVsRm9ybS5nZXQodGhpcy5lZGl0TWF4RmlsZUNvdW50Lk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRNYXhGaWxlQ291bnQuTmFtZSksIHRoaXMuZWRpdE1heEZpbGVDb3VudClcclxuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZWxGb3JtLmdldCh0aGlzLmVkaXRGaWxlc0V4dGVuc2lvbnMuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZSh0aGlzLmVkaXRNb2RlbEZvcm0uZ2V0KHRoaXMuZWRpdEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSwgdGhpcy5lZGl0RmlsZXNFeHRlbnNpb25zKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgLy9kcmFnIGFuZCBkcm9wXHJcbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8c3RyaW5nW10+KSB7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5vcHRpb25MaXN0LCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMub3B0aW9uTGlzdC5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLm9wdGlvbkxpc3RbaW5kZXhdO1xyXG4gICAgICBlbGVtZW50LkRpc3BsYXlPcmRlcj1pbmRleCsxO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc0VkaXRGb3JtQ2hhbmdlPSB0cnVlO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPG5nLXRlbXBsYXRlICNFZGl0TW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgKm5nSWY9XCIhaXNWaWV3T25seVwiPlxyXG4gICAgICB7e2woXCJFZGl0X1F1ZXN0aW9uXCIpfX1cclxuICAgIDwvaDQ+XHJcbiAgICA8aDQgY2xhc3M9XCJtb2RhbC10aXRsZVwiICpuZ0lmPVwiaXNWaWV3T25seVwiPlxyXG4gICAgICB7e2woXCJEZXRhaWxzXCIpfX1cclxuICAgIDwvaDQ+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGNsYXNzPVwiYnRuIGJ0bi1pY29uIGJ0bi1zbVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTEgc3ZnLWljb24taG92ZXItYnJhbmRcIiBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9tb2RhbGNsb3NlLnN2ZydcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJlZGl0U3VydmV5UXVlc3Rpb25Gb3JtT3B0aW9uc1wiIChPbkNoYW5nZSk9XCJjaGFuZ2VGb3JtU3RhdHVzKCRldmVudClcIj5cclxuICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwiZWRpdFF1ZXN0aW9uXCIgW2dyb3VwXT1cImVkaXRNb2RlbEZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEJveD5cclxuICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRBcmVhIFtvcHRpb25zXT1cImVkaXREZXNjcmlwdGlvblwiIFtncm91cF09XCJlZGl0TW9kZWxGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRBcmVhPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cInN1cnZleUF1ZGllbmNlVHlwZUlEPT1hdWRpZW5jZVR5cGUuQm90aFwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJhdWRpZW5jZVwiIFtncm91cF09XCJlZGl0TW9kZWxGb3JtXCI+PC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJlZGl0UXVlc3Rpb25UeXBlXCIgW2dyb3VwXT1cImVkaXRNb2RlbEZvcm1cIiAoT25DaGFuZ2UpPVwiY2hhbmdlRGF0YVR5cGUoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiZWRpdFNpemVcIiBbZ3JvdXBdPVwiZWRpdE1vZGVsRm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImlzU2VsZWN0XCIgPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cImVkaXRBbGxvd1Njb3JlXCIgW2dyb3VwXT1cImVkaXRNb2RlbEZvcm1cIiAoT25DaGFuZ2UpPVwiY2hhbmdlU2NvcmluZygkZXZlbnQpXCI+PC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiZWRpdElzQWN0aXZlXCIgW2dyb3VwXT1cImVkaXRNb2RlbEZvcm1cIj48L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJlZGl0UmVxdWlyZWRcIiBbZ3JvdXBdPVwiZWRpdE1vZGVsRm9ybVwiPjwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJpc1RleHR8fGlzTnVtYmVyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJlZGl0TWluTGVuZ3RoXCIgKm5nSWY9XCJpc1RleHR8fGlzTnVtYmVyXCIgW2dyb3VwXT1cImVkaXRNb2RlbEZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiaXNUZXh0fHxpc051bWJlclwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZWRpdE1heExlbmd0aFwiICpuZ0lmPVwiaXNUZXh0fHxpc051bWJlclwiIFtncm91cF09XCJlZGl0TW9kZWxGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiaXNGaWxlfHxpc011bHRpRmlsZXx8aXNJbWFnZVwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZWRpdE1heEZpbGVTaXplXCIgKm5nSWY9XCJpc0ZpbGV8fGlzTXVsdGlGaWxlfHxpc0ltYWdlXCIgW2dyb3VwXT1cImVkaXRNb2RlbEZvcm1cIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiaXNNdWx0aUZpbGVcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImVkaXRNYXhGaWxlQ291bnRcIiAqbmdJZj1cImlzTXVsdGlGaWxlXCIgW2dyb3VwXT1cImVkaXRNb2RlbEZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiaXNGaWxlfHxpc011bHRpRmlsZVwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJlZGl0RmlsZXNFeHRlbnNpb25zXCIgKm5nSWY9XCJpc0ZpbGV8fGlzTXVsdGlGaWxlXCIgW2dyb3VwXT1cImVkaXRNb2RlbEZvcm1cIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZWRpdERpc3BsYXlPcmRlclwiIFtncm91cF09XCJlZGl0TW9kZWxGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PiAtLT5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImlzU2VsZWN0XCIgY2xhc3M9XCJxdWVzdGlvbi10eXBlLW9wdGlvblwiPlxyXG4gICAgICAgICAgPGg1Pnt7bCgnT3B0aW9ucycpfX08L2g1PlxyXG4gICAgICAgICAgPGRpdiBjZGtEcm9wTGlzdCAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWxpc3RpbmdcIiAqbmdGb3I9XCJsZXQgT3B0aW9uIG9mIG9wdGlvbkxpc3Q7XCIgY2RrRHJhZz5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgbWItMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlIGZzLTYgZnctYm9sZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7Z2V0Q3VycmVudEZhaWxPdmVyKE9wdGlvbi5OYW1lKX19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1zcXVhcmUgYmFkZ2UtZGFyayBtZS00XCIgKm5nSWY9XCJzaG93U2NvcmVPcHRpb25cIiBuZ2JUb29sdGlwPVwie3tsKCdTY29yZScpfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICB7e09wdGlvbi5TY29yZX19PC9zcGFuPlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1zcXVhcmUgYmFkZ2UtYnJhbmQgY3Vyc29yLXBvaW50ZXIgbWUtNFwiICpuZ0lmPVwiT3B0aW9uLkxpbmtlZFF1ZXN0aW9ucz8ubGVuZ3RoPjBcIiBuZ2JUb29sdGlwPVwie3tnZXRMaW5rZWRRdWVzdGlvbnMoT3B0aW9uKX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTQgc3ZnLWljb24td2hpdGVcIiBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9pbmZvLnN2ZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLXNxdWFyZSBiYWRnZS1icmFuZCBjdXJzb3ItcG9pbnRlciBtZS00XCIgKGNsaWNrKT1cImVkaXRPcHRpb24oT3B0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tNCBzdmctaWNvbi13aGl0ZVwiIG5nYlRvb2x0aXA9XCJ7e2woJ0VkaXQnKX19XCIgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvRWRpdC5zdmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLXNxdWFyZSBiYWRnZS1kYW5nZXIgY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTQgc3ZnLWljb24td2hpdGVcIiBuZ2JUb29sdGlwPVwie3tsKCdEZWxldGUnKX19XCIgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvVHJhc2guc3ZnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlT3B0aW9uKE9wdGlvbilcIiBhcHBwcmV2ZW50ZG91YmxlY2xpY2s+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVpcmVkLXRleHQgYWxlcnQtZGFuZ2VyXCIgKm5nSWY9XCJlcnJvck1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0ydHggc3ZnLWljb24tZGFuZ2VyIG1lLTRcIlxyXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL2luZm8uc3ZnJ1wiPlxyXG5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy02IHRleHQtZGFuZ2VyXCI+e3tlcnJvck1lc3NhZ2V9fTwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlcGVhdGVyLWJnXCIgKm5nSWY9XCIhaXNWaWV3T25seVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBoaWRkZW49XCJ0cnVlXCIgW29wdGlvbnNdPVwiZWRpdE9wdGlvbklkXCIgW2dyb3VwXT1cImVkaXRPcHRpb25Gb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwiZWRpdE5hbWVPcHRpb25cIiBbZ3JvdXBdPVwiZWRpdE9wdGlvbkZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJlZGl0T3B0aW9uTGlua2VkUXVlc3Rpb25zXCIgW2dyb3VwXT1cImVkaXRPcHRpb25Gb3JtXCI+XHJcbiAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJkaXNwbGF5T3JkZXJPcHRpb25cIiBbZ3JvdXBdPVwiZWRpdE9wdGlvbkZvcm1cIiBoaWRkZW4+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImlkT3B0aW9uXCIgW2dyb3VwXT1cImVkaXRPcHRpb25Gb3JtXCIgaGlkZGVuPjwvQkJTRi1UZXh0Qm94PlxyXG5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cInNob3dTY29yZU9wdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJzY29yZU51bWJlclwiICBbZ3JvdXBdPVwiZWRpdE9wdGlvbkZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiYWRkT3B0aW9uKClcIiAqbmdJZj1cIiFpc09wdGlvbkluRWRpdE1vZGVcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWJyYW5kIHctMTAwXCI+e3tsKFwiQWRkXCIpfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFkZE9wdGlvbigpXCIgKm5nSWY9XCJpc09wdGlvbkluRWRpdE1vZGVcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWJyYW5kIHctMTAwXCI+e3tsKFwiRWRpdFwiKX19PC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlciBwYi0wIG0tMFwiID5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodFwiICAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAge3tsKFwiQ2FuY2VsXCIpfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gYXBwUHJldmVudERvdWJsZUNsaWNrIHR5cGU9XCJzdWJtaXRcIiAgW2Rpc2FibGVkXT1cIiFpc0VkaXRGb3JtQ2hhbmdlXCIgICAqbmdJZj1cIiFpc1ZpZXdPbmx5XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1icmFuZFwiPnt7bChcIlNhdmVcIil9fTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8L0JCU0YtRm9ybT5cclxuICA8L2Rpdj5cclxuXHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==