@bnsights/bbsf-admin-portal 1.0.12 → 1.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bnsights-bbsf-admin-portal-1.0.13.tgz +0 -0
- package/bundles/bnsights-bbsf-admin-portal.umd.js +479 -307
- package/bundles/bnsights-bbsf-admin-portal.umd.js.map +1 -1
- package/esm2015/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.js +2 -2
- package/esm2015/lib/Pages/anonymouslayout/activation/activation.component.js +4 -2
- package/esm2015/lib/Pages/anonymouslayout/anonymouslayout-routing.module.js +3 -1
- package/esm2015/lib/Pages/anonymouslayout/anonymouslayout.module.js +9 -5
- package/esm2015/lib/Pages/anonymouslayout/error/error.component.js +52 -0
- package/esm2015/lib/Pages/anonymouslayout/forgot-password/forgot-password.component.js +3 -2
- package/esm2015/lib/Pages/anonymouslayout/rest-password/rest-password.component.js +4 -2
- package/esm2015/lib/Pages/anonymouslayout/upload-license/upload-license.component.js +4 -2
- package/esm2015/lib/Pages/configurations/configuration/configuration.component.js +109 -85
- package/esm2015/lib/Pages/core/authentication/admin.guard.js +5 -5
- package/esm2015/lib/Pages/core/authentication/auth.guard.js +17 -7
- package/esm2015/lib/Pages/departments/department/department.component.js +4 -2
- package/esm2015/lib/Pages/departments/department-info/department-info.component.js +2 -2
- package/esm2015/lib/Pages/helpCenter/help-center/help-center.component.js +2 -2
- package/esm2015/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.js +2 -2
- package/esm2015/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.js +2 -2
- package/esm2015/lib/Pages/license/license/license.component.js +8 -2
- package/esm2015/lib/Pages/localizations/localizations.component.js +20 -3
- package/esm2015/lib/Pages/lookups/lookup/lookup.component.js +2 -2
- package/esm2015/lib/Pages/lookups/lookup-group/lookup-group.component.js +2 -2
- package/esm2015/lib/Pages/lookups/lookup-item/lookup-item.component.js +2 -2
- package/esm2015/lib/Pages/notifications/master-layouts/master-layouts.component.js +2 -2
- package/esm2015/lib/Pages/notifications/templates/templates.component.js +2 -2
- package/esm2015/lib/Pages/providers/provider/provider.component.js +2 -2
- package/esm2015/lib/Pages/publicHolidays/public-holiday/public-holiday.component.js +4 -2
- package/esm2015/lib/Pages/roles/permission-set-info/permission-set-info.component.js +2 -2
- package/esm2015/lib/Pages/roles/permissions/permissions.component.js +2 -2
- package/esm2015/lib/Pages/roles/permissionsets/permissionsets.component.js +2 -2
- package/esm2015/lib/Pages/sectors/department-info/department-info.component.js +2 -2
- package/esm2015/lib/Pages/sectors/sector/sector.component.js +4 -2
- package/esm2015/lib/Pages/sectors/sector-info/sector-info.component.js +2 -2
- package/esm2015/lib/Pages/shared/Services/HttpErrorInterceptor.service.js +1 -2
- package/esm2015/lib/Pages/shared/Services/localizationsService.service .js +5 -2
- package/esm2015/lib/Pages/shared/Services/userService.service.js +2 -2
- package/esm2015/lib/Pages/users/users.component.js +13 -19
- package/esm2015/lib/Pages/workflows/tabs/tabs.component.js +3 -3
- package/esm2015/lib/Pages/workflows/workflow/workflow.component.js +2 -3
- package/fesm2015/bnsights-bbsf-admin-portal.js +452 -281
- package/fesm2015/bnsights-bbsf-admin-portal.js.map +1 -1
- package/lib/Pages/anonymouslayout/anonymouslayout.module.d.ts +10 -8
- package/lib/Pages/anonymouslayout/error/error.component.d.ts +23 -0
- package/lib/Pages/configurations/configuration/configuration.component.d.ts +1 -2
- package/lib/Pages/core/authentication/admin.guard.d.ts +2 -2
- package/lib/Pages/core/authentication/auth.guard.d.ts +3 -2
- package/lib/Pages/license/license/license.component.d.ts +1 -0
- package/lib/Pages/localizations/localizations.component.d.ts +1 -0
- package/lib/Pages/shared/Services/localizationsService.service .d.ts +1 -0
- package/lib/Pages/users/users.component.d.ts +1 -1
- package/lib/Pages/workflows/tabs/tabs.component.d.ts +0 -1
- package/lib/Pages/workflows/workflow/workflow.component.d.ts +0 -1
- package/package.json +3 -3
- package/src/lib/assets/css/anonymousBundle-Dark-RTL.css +3 -0
- package/src/lib/assets/css/anonymousBundle-Dark.css +4 -0
- package/src/lib/assets/css/anonymousBundle-light-RTL.css +4 -0
- package/src/lib/assets/css/anonymousBundle-light.css +3 -0
- package/bnsights-bbsf-admin-portal-1.0.12.tgz +0 -0
package/esm2015/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.js
CHANGED
|
@@ -437,7 +437,7 @@ export class ImpersonationRulesComponent {
|
|
|
437
437
|
}
|
|
438
438
|
}
|
|
439
439
|
ImpersonationRulesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ImpersonationRulesComponent, deps: [{ token: i1.AuthService }, { token: i2.PageInfoService }, { token: i1.UtilityService }, { token: i1.BBSFTranslateService }, { token: i1.EnvironmentService }, { token: i3.ImpersonationRuleService }, { token: i4.NgbModal }, { token: i1.RequestHandlerService }], target: i0.ɵɵFactoryTarget.Component });
|
|
440
|
-
ImpersonationRulesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: ImpersonationRulesComponent, selector: "lib-impersonation-rules", viewQueries: [{ propertyName: "pagingElement", first: true, predicate: ["ImpersonationPagingViewElement"], descendants: true }, { propertyName: "ConfirmationModalControl", first: true, predicate: ["ConfirmationModalControl"], descendants: true }], ngImport: i0, template: "<block-ui></block-ui>\r\n<!-- Page Content -->\r\n<div *ngIf=\"ShowPageContent\" class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\" *ngIf=\"IsFilterLoaded\">\r\n <form [formGroup]=\"ImpersonationForm\">\r\n <BBSF-TextBox (OnChange)=\"searchClientSide($event)\" [options]=\"searchTextBox\" [group]=\"ImpersonationForm\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <!-- begin::Menu -->\r\n <button type=\"button\" class=\"btn btn-sm btn-primary\" title=\"Add\" (click)=\"showAddImpersonationModal(AddImpersonationModal)\">\r\n <i class=\"fas fa-plus me-1\"></i>\r\n {{utilityService.getResourceValue(\"Add\")}}\r\n </button>\r\n\r\n <!-- end::Menu -->\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3\">\r\n <div class=\"table-responsive\">\r\n <!--begin::Permission list-->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n\r\n <th class=\"min-w-150px\"> [{{utilityService.getResourceValue(\"ParticipantType\")}}]{{utilityService.getResourceValue(\"Source\")}}</th>\r\n <th class=\"min-w-150px\"> [{{utilityService.getResourceValue(\"ParticipantType\")}}]{{utilityService.getResourceValue(\"Destination\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"ExpiresAt\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Active\")}}</th>\r\n <th class=\"min-w-50px\">{{utilityService.getResourceValue(\"Action\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n\r\n <tr *ngFor=\"let Impersonation of clientSidePagingResult\">\r\n\r\n <td>\r\n <span class=\"text-dark\">\r\n [{{Impersonation.sourceParticipantDTO.participantTypeItemNameStr}}] {{Impersonation.sourceParticipantDTO.participantNameStr}}\r\n </span>\r\n\r\n </td>\r\n <td> [{{Impersonation.destinationParticipantDTO.participantTypeItemNameStr}}] {{Impersonation.destinationParticipantDTO.participantNameStr}}</td>\r\n\r\n <td>{{Impersonation.expiresAt}}</td>\r\n <td>{{Impersonation.isActive}}</td>\r\n\r\n <td>\r\n\r\n <div>\r\n <button mat-button [matMenuTriggerFor]=\"menu\" class=\"btn btn-sm btn-icon btn-light btn-active-light-primary\">\r\n <i class=\"fa fa-ellipsis-h\" aria-hidden=\"true\"></i>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <a class=\"drop-item px-3\" ngbDropdownItem\r\n (click)=\"showEditImpersonationModal(Impersonation.id,Impersonation.idEncrypted,EditImpersonationModal)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"Edit\")}}</span>\r\n </a>\r\n <a ngbDropdownItem class=\"drop-item px-3\"\r\n (click)=\"showDeleteImpersonationModal(Impersonation.idEncrypted)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"Delete\")}}</span>\r\n </a>\r\n </mat-menu>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"clientSidePagingResult.length == 0\">\r\n <td colspan=\"5\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n <!--end::Permission list-->\r\n </div>\r\n\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setImpersonationListResult($event)\" *ngIf=\"IsFilterLoaded\"\r\n [options]=\"ImpersonationPaging\" [group]=\"ImpersonationForm\" #ImpersonationPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n<!-- Add Modal -->\r\n<ng-template #AddImpersonationModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"Add\")}} {{utilityService.getResourceValue(\"ImpersonationRule\")}}</h1>\r\n </div>\r\n\r\n <BBSF-Form [options]=\"AddImpersonationFormOptions\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"AddSourceParticipantType\" (OnChange)=\"addSourceParticipantOnChange($event)\" [group]=\"AddImpersonationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"AddSourcePermissionSetList\" *ngIf=\"AddShowSourcePermissionList\" [group]=\"AddImpersonationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <BBSF-AutocompleteTextBox [options]=\"AddSourceUserAutoComplete\" *ngIf=\"AddShowSourceUserAutoComplete\" [group]=\"AddImpersonationForm\">\r\n </BBSF-AutocompleteTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"AddDestinationParticipantType\" (OnChange)=\"addDestinationParticipantOnChange($event)\" [group]=\"AddImpersonationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"AddDestinationPermissionSetList\" *ngIf=\"AddShowDestinationPermissionList\" [group]=\"AddImpersonationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <BBSF-AutocompleteTextBox [options]=\"AddDestinationUserAutoComplete\" *ngIf=\"AddShowDestinationUserAutoComplete\" [group]=\"AddImpersonationForm\">\r\n </BBSF-AutocompleteTextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"AddIsActive\" [group]=\"AddImpersonationForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DateTimePicker [options]=\"AddExpiresAt\" [group]=\"AddImpersonationForm\">\r\n\r\n </BBSF-DateTimePicker>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button CloseImpersonationModal id=\"CloseImpersonationModal\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!--Edit Modal-->\r\n<ng-template #EditImpersonationModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"Edit\")}} {{utilityService.getResourceValue(\"ImpersonationRule\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"EditImpersonationFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditSourceParticipantType\" (OnChange)=\"editSourceParticipantOnChange($event)\" [group]=\"EditImpersonationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditSourcePermissionSetList\" *ngIf=\"EditShowSourcePermissionList\" [group]=\"EditImpersonationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <BBSF-AutocompleteTextBox [options]=\"EditSourceUserAutoComplete\" *ngIf=\"EditShowSourceUserAutoComplete\" [group]=\"EditImpersonationForm\">\r\n </BBSF-AutocompleteTextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditDestinationParticipantType\" (OnChange)=\"editDestinationParticipantOnChange($event)\" [group]=\"EditImpersonationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditDestinationPermissionSetList\" *ngIf=\"EditShowDestinationPermissionList\" [group]=\"EditImpersonationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <BBSF-AutocompleteTextBox [options]=\"EditDestinationUserAutoComplete\" *ngIf=\"EditShowDestinationUserAutoComplete\" [group]=\"EditImpersonationForm\">\r\n </BBSF-AutocompleteTextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"EditIsActive\" [group]=\"EditImpersonationForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DateTimePicker [options]=\"EditExpiresAt\" [group]=\"EditImpersonationForm\">\r\n\r\n </BBSF-DateTimePicker>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseEditImpersonationModal id=\"CloseEditImpersonationModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3\" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n<!--delete Modal-->\r\n<BBSF-ConfirmationModal *ngIf=\"deleteControlLoaded\" [options]=\"DeleteConfirmationOptions\" id=\"ConfirmationModalControl\" #ConfirmationModalControl></BBSF-ConfirmationModal>\r\n\r\n", components: [{ type: i5.BlockUIComponent, selector: "block-ui", inputs: ["name", "template", "message", "delayStart", "delayStop"] }, { type: i6.ɵd, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i7.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8.EmptyDataComponent, selector: "lib-empty-data", inputs: ["Message", "ShowImage", "ImgURL"] }, { type: i6.ɵs, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items"] }, { type: i6.ɵv, selector: "BBSF-Form", inputs: ["options"] }, { type: i6.ɵh, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { type: i6.ɵq, selector: "BBSF-AutocompleteTextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i6.ɵg, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i6.ɵa, selector: "BBSF-DateTimePicker", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i6.ɵw, selector: "BBSF-ConfirmationModal", inputs: ["options"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i10.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["matMenuTriggerRestoreFocus", "mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { type: i4.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { type: i11.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "forceEvalStyles", "evalScripts", "inlineSVG", "setSVGAttributes", "removeSVGAttributes", "fallbackImgUrl", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }] });
|
|
440
|
+
ImpersonationRulesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: ImpersonationRulesComponent, selector: "lib-impersonation-rules", viewQueries: [{ propertyName: "pagingElement", first: true, predicate: ["ImpersonationPagingViewElement"], descendants: true }, { propertyName: "ConfirmationModalControl", first: true, predicate: ["ConfirmationModalControl"], descendants: true }], ngImport: i0, template: "<block-ui></block-ui>\r\n<!-- Page Content -->\r\n<div *ngIf=\"ShowPageContent\" class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\" *ngIf=\"IsFilterLoaded\">\r\n <form [formGroup]=\"ImpersonationForm\">\r\n <!--(OnChange)=\"searchClientSide($event)\" -->\r\n <BBSF-TextBox [options]=\"searchTextBox\" [group]=\"ImpersonationForm\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <!-- begin::Menu -->\r\n <button type=\"button\" class=\"btn btn-sm btn-primary\" title=\"Add\" (click)=\"showAddImpersonationModal(AddImpersonationModal)\">\r\n <i class=\"fas fa-plus me-1\"></i>\r\n {{utilityService.getResourceValue(\"Add\")}}\r\n </button>\r\n\r\n <!-- end::Menu -->\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3\">\r\n <div class=\"table-responsive\">\r\n <!--begin::Permission list-->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n\r\n <th class=\"min-w-150px\"> [{{utilityService.getResourceValue(\"ParticipantType\")}}]{{utilityService.getResourceValue(\"Source\")}}</th>\r\n <th class=\"min-w-150px\"> [{{utilityService.getResourceValue(\"ParticipantType\")}}]{{utilityService.getResourceValue(\"Destination\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"ExpiresAt\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Active\")}}</th>\r\n <th class=\"min-w-50px\">{{utilityService.getResourceValue(\"Action\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n\r\n <tr *ngFor=\"let Impersonation of clientSidePagingResult\">\r\n\r\n <td>\r\n <span class=\"text-dark\">\r\n [{{Impersonation.sourceParticipantDTO.participantTypeItemNameStr}}] {{Impersonation.sourceParticipantDTO.participantNameStr}}\r\n </span>\r\n\r\n </td>\r\n <td> [{{Impersonation.destinationParticipantDTO.participantTypeItemNameStr}}] {{Impersonation.destinationParticipantDTO.participantNameStr}}</td>\r\n\r\n <td>{{Impersonation.expiresAt}}</td>\r\n <td>{{Impersonation.isActive}}</td>\r\n\r\n <td>\r\n\r\n <div>\r\n <button mat-button [matMenuTriggerFor]=\"menu\" class=\"btn btn-sm btn-icon btn-light btn-active-light-primary\">\r\n <i class=\"fa fa-ellipsis-h\" aria-hidden=\"true\"></i>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <a class=\"drop-item px-3\" ngbDropdownItem\r\n (click)=\"showEditImpersonationModal(Impersonation.id,Impersonation.idEncrypted,EditImpersonationModal)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"Edit\")}}</span>\r\n </a>\r\n <a ngbDropdownItem class=\"drop-item px-3\"\r\n (click)=\"showDeleteImpersonationModal(Impersonation.idEncrypted)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"Delete\")}}</span>\r\n </a>\r\n </mat-menu>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"clientSidePagingResult.length == 0\">\r\n <td colspan=\"5\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n <!--end::Permission list-->\r\n </div>\r\n\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setImpersonationListResult($event)\" *ngIf=\"IsFilterLoaded\"\r\n [options]=\"ImpersonationPaging\" [group]=\"ImpersonationForm\" #ImpersonationPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n<!-- Add Modal -->\r\n<ng-template #AddImpersonationModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"Add\")}} {{utilityService.getResourceValue(\"ImpersonationRule\")}}</h1>\r\n </div>\r\n\r\n <BBSF-Form [options]=\"AddImpersonationFormOptions\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"AddSourceParticipantType\" (OnChange)=\"addSourceParticipantOnChange($event)\" [group]=\"AddImpersonationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"AddSourcePermissionSetList\" *ngIf=\"AddShowSourcePermissionList\" [group]=\"AddImpersonationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <BBSF-AutocompleteTextBox [options]=\"AddSourceUserAutoComplete\" *ngIf=\"AddShowSourceUserAutoComplete\" [group]=\"AddImpersonationForm\">\r\n </BBSF-AutocompleteTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"AddDestinationParticipantType\" (OnChange)=\"addDestinationParticipantOnChange($event)\" [group]=\"AddImpersonationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"AddDestinationPermissionSetList\" *ngIf=\"AddShowDestinationPermissionList\" [group]=\"AddImpersonationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <BBSF-AutocompleteTextBox [options]=\"AddDestinationUserAutoComplete\" *ngIf=\"AddShowDestinationUserAutoComplete\" [group]=\"AddImpersonationForm\">\r\n </BBSF-AutocompleteTextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"AddIsActive\" [group]=\"AddImpersonationForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DateTimePicker [options]=\"AddExpiresAt\" [group]=\"AddImpersonationForm\">\r\n\r\n </BBSF-DateTimePicker>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button CloseImpersonationModal id=\"CloseImpersonationModal\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!--Edit Modal-->\r\n<ng-template #EditImpersonationModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"Edit\")}} {{utilityService.getResourceValue(\"ImpersonationRule\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"EditImpersonationFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditSourceParticipantType\" (OnChange)=\"editSourceParticipantOnChange($event)\" [group]=\"EditImpersonationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditSourcePermissionSetList\" *ngIf=\"EditShowSourcePermissionList\" [group]=\"EditImpersonationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <BBSF-AutocompleteTextBox [options]=\"EditSourceUserAutoComplete\" *ngIf=\"EditShowSourceUserAutoComplete\" [group]=\"EditImpersonationForm\">\r\n </BBSF-AutocompleteTextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditDestinationParticipantType\" (OnChange)=\"editDestinationParticipantOnChange($event)\" [group]=\"EditImpersonationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditDestinationPermissionSetList\" *ngIf=\"EditShowDestinationPermissionList\" [group]=\"EditImpersonationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <BBSF-AutocompleteTextBox [options]=\"EditDestinationUserAutoComplete\" *ngIf=\"EditShowDestinationUserAutoComplete\" [group]=\"EditImpersonationForm\">\r\n </BBSF-AutocompleteTextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"EditIsActive\" [group]=\"EditImpersonationForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DateTimePicker [options]=\"EditExpiresAt\" [group]=\"EditImpersonationForm\">\r\n\r\n </BBSF-DateTimePicker>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseEditImpersonationModal id=\"CloseEditImpersonationModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3\" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n<!--delete Modal-->\r\n<BBSF-ConfirmationModal *ngIf=\"deleteControlLoaded\" [options]=\"DeleteConfirmationOptions\" id=\"ConfirmationModalControl\" #ConfirmationModalControl></BBSF-ConfirmationModal>\r\n\r\n", components: [{ type: i5.BlockUIComponent, selector: "block-ui", inputs: ["name", "template", "message", "delayStart", "delayStop"] }, { type: i6.ɵd, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i7.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8.EmptyDataComponent, selector: "lib-empty-data", inputs: ["Message", "ShowImage", "ImgURL"] }, { type: i6.ɵs, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items"] }, { type: i6.ɵv, selector: "BBSF-Form", inputs: ["options"] }, { type: i6.ɵh, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { type: i6.ɵq, selector: "BBSF-AutocompleteTextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i6.ɵg, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i6.ɵa, selector: "BBSF-DateTimePicker", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i6.ɵw, selector: "BBSF-ConfirmationModal", inputs: ["options"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i10.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["matMenuTriggerRestoreFocus", "mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { type: i4.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { type: i11.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "forceEvalStyles", "evalScripts", "inlineSVG", "setSVGAttributes", "removeSVGAttributes", "fallbackImgUrl", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }] });
|
|
441
441
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ImpersonationRulesComponent, decorators: [{
|
|
442
442
|
type: Component,
|
|
443
443
|
args: [{
|
|
@@ -451,4 +451,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
|
|
|
451
451
|
type: ViewChild,
|
|
452
452
|
args: ['ConfirmationModalControl', { static: false }]
|
|
453
453
|
}] } });
|
|
454
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wZXJzb25hdGlvbi1ydWxlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL2ltcGVyc29uYXRpb24tcnVsZXMvaW1wZXJzb25hdGlvbi1ydWxlcy9pbXBlcnNvbmF0aW9uLXJ1bGVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvaW1wZXJzb25hdGlvbi1ydWxlcy9pbXBlcnNvbmF0aW9uLXJ1bGVzL2ltcGVyc29uYXRpb24tcnVsZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSx3QkFBd0IsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbFQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFFNUcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBS3JGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU9yRSxNQUFNLE9BQU8sMkJBQTJCO0lBNkR0QyxZQUFvQixXQUF3QixFQUFVLGVBQWdDLEVBQVMsY0FBOEIsRUFDbkgs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QUEyQjtrQkFKdkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxXQUFXLEVBQUUsc0NBQXNDO2lCQUNwRDttVUFjaUUsYUFBYTtzQkFBNUUsU0FBUzt1QkFBQyxnQ0FBZ0MsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBOENKLHdCQUF3QjtzQkFBakYsU0FBUzt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQXV0b2NvbXBsZXRlRFRPLCBBdXRvY29tcGxldGVPcHRpb25zLCBDaGVja0JveE9wdGlvbnMsIENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucywgRGF0ZVBpY2tlck9wdGlvbnMsIERyb3Bkb3duT3B0aW9ucywgRmlsdGVySXRlbSwgRmlsdGVyVHlwZSwgRm9yY2VEaXJlY3Rpb24sIEZvcm1PcHRpb25zLCBJbnB1dFR5cGUsIFBhZ2luZ0FjdGlvbk1vZGUsIFBhZ2luZ09wdGlvbnMsIFBpY2tlclR5cGUsIFNlbGVjdE1vZGUsIFN0YXJ0VmlldywgVGV4dEJveE9wdGlvbnMgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7IEltcGVyc29uYXRpb25SdWxlTW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL0ltcGVyc29uYXRpb25SdWxlTW9kZWxzL0ltcGVyc29uYXRpb25SdWxlTW9kZWwnO1xyXG5pbXBvcnQgeyBJbXBlcnNvbmF0aW9uUnVsZVNlcnZpY2UgfSBmcm9tICcuLy4uLy4uL3NoYXJlZC9TZXJ2aWNlcy9JbXBlcnNvbmF0aW9uUnVsZVNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXRyb25pYy9jb3JlL3NlcnZpY2VzL3BhZ2UtaW5mby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBVdGlsaXR5U2VydmljZSwgQkJTRlRyYW5zbGF0ZVNlcnZpY2UsIEVudmlyb25tZW50U2VydmljZSwgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgUGFnaW5nQ29tcG9uZW50IH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMvbGliL2NvbnRyb2xzL1BhZ2luZy9QYWdpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBQYXJ0aWNpcGFudFR5cGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvRW51bXMvUGFydGljaXBhbnRUeXBlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uTW9kYWxDb21wb25lbnQgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scy9saWIvY29udHJvbHMvQ29uZmlybWF0aW9uTW9kYWwvQ29uZmlybWF0aW9uTW9kYWwuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWltcGVyc29uYXRpb24tcnVsZXMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbXBlcnNvbmF0aW9uLXJ1bGVzLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgSW1wZXJzb25hdGlvblJ1bGVzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAvL1BhZ2UgcmVxdWlyZW1lbnRzXHJcbiAgU2hvd1BhZ2VDb250ZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQXBpVXJsID0gXCIvYXBpL2FkbWluL0ltcGVyc29uYXRpb25SdWxlL1wiXHJcblxyXG4gIC8vRmlsdGVyIGFuZCBwYWdpbmcgY29tcG9uZW50c1xyXG4gIHNlYXJjaFRleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIFRleHRJbnB1dEZpbHRlcjogRmlsdGVySXRlbTtcclxuICBJbXBlcnNvbmF0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEltcGVyc29uYXRpb25QYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdDogYW55W10gPSBbXTtcclxuICBJbXBlcnNvbmF0aW9uUGFnaW5nOiBQYWdpbmdPcHRpb25zO1xyXG4gIElzRmlsdGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnSW1wZXJzb25hdGlvblBhZ2luZ1ZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIHBhZ2luZ0VsZW1lbnQ6IFBhZ2luZ0NvbXBvbmVudDxhbnk+O1xyXG5cclxuICAvL1JlcXVpcmVkIGxpc3RzXHJcbiAgUGVybWlzc2lvblNldExpc3Q6IGFueVtdID0gW107XHJcbiAgUGFydGljaXBhbnRUeXBlTGlzdDogYW55W10gPSBbXTtcclxuXHJcbiAgLy9BZGQgTW9kZWwgQ29udHJvbHNcclxuICBBZGRJbXBlcnNvbmF0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEFkZEltcGVyc29uYXRpb25Gb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucztcclxuICBBZGRTb3VyY2VQYXJ0aWNpcGFudFR5cGU6IERyb3Bkb3duT3B0aW9ucztcclxuICBBZGREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIEFkZFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0OiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgQWRkRGVzdGluYXRpb25QZXJtaXNzaW9uU2V0TGlzdDogRHJvcGRvd25PcHRpb25zO1xyXG4gIEFkZFNvdXJjZVVzZXJBdXRvQ29tcGxldGU6IEF1dG9jb21wbGV0ZU9wdGlvbnM7XHJcbiAgQWRkRGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlOiBBdXRvY29tcGxldGVPcHRpb25zO1xyXG4gIEFkZElzQWN0aXZlOiBDaGVja0JveE9wdGlvbnM7XHJcbiAgQWRkRXhwaXJlc0F0OiBEYXRlUGlja2VyT3B0aW9ucztcclxuICBBZGRTaG93U291cmNlUGVybWlzc2lvbkxpc3Q6Ym9vbGVhbj1mYWxzZTtcclxuICBBZGRTaG93U291cmNlVXNlckF1dG9Db21wbGV0ZTpib29sZWFuPWZhbHNlO1xyXG4gIEFkZFNob3dEZXN0aW5hdGlvblBlcm1pc3Npb25MaXN0OmJvb2xlYW49ZmFsc2U7XHJcbiAgQWRkU2hvd0Rlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZTpib29sZWFuPWZhbHNlO1xyXG5cclxuXHJcbiAgLy9FZGl0IE1vZGVsIENvbnRyb2xzXHJcbiAgRWRpdEltcGVyc29uYXRpb25Gb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgRWRpdEltcGVyc29uYXRpb25Gb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucztcclxuICBFZGl0U291cmNlUGFydGljaXBhbnRUeXBlOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgRWRpdERlc3RpbmF0aW9uUGFydGljaXBhbnRUeXBlOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgRWRpdFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0OiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgRWRpdERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3Q6IERyb3Bkb3duT3B0aW9ucztcclxuICBFZGl0U291cmNlVXNlckF1dG9Db21wbGV0ZTogQXV0b2NvbXBsZXRlT3B0aW9ucztcclxuICBFZGl0RGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlOiBBdXRvY29tcGxldGVPcHRpb25zO1xyXG4gIEVkaXRJc0FjdGl2ZTogQ2hlY2tCb3hPcHRpb25zO1xyXG4gIEVkaXRFeHBpcmVzQXQ6IERhdGVQaWNrZXJPcHRpb25zO1xyXG4gIEVkaXRTaG93U291cmNlUGVybWlzc2lvbkxpc3Q6Ym9vbGVhbj1mYWxzZTtcclxuICBFZGl0U2hvd1NvdXJjZVVzZXJBdXRvQ29tcGxldGU6Ym9vbGVhbj1mYWxzZTtcclxuICBFZGl0U2hvd0Rlc3RpbmF0aW9uUGVybWlzc2lvbkxpc3Q6Ym9vbGVhbj1mYWxzZTtcclxuICBFZGl0U2hvd0Rlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZTpib29sZWFuPWZhbHNlO1xyXG4gIEltcGVyc29uYXRpb25JZDogbnVtYmVyO1xyXG4gIFNvdXJjZVBhcnRpY2lwYW50SWQ6IG51bWJlcjtcclxuICBEZXN0aW5hdGlvblBhcnRpY2lwYW50SWQ6IG51bWJlcjtcclxuXHJcbiAgLy9kZWxldGUgIE1vZGVsIENvbnRyb2xzXHJcbiAgZGVsZXRlSW1wZXJzb25hdGlvblJ1bGVJZDogc3RyaW5nO1xyXG4gIERlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnM6IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucztcclxuICBkZWxldGVDb250cm9sTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnQ29uZmlybWF0aW9uTW9kYWxDb250cm9sJywgeyBzdGF0aWM6IGZhbHNlIH0pIENvbmZpcm1hdGlvbk1vZGFsQ29udHJvbDogQ29uZmlybWF0aW9uTW9kYWxDb21wb25lbnQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLCBwdWJsaWMgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBiYnNmVHJhbnNsYXRlU2VydmljZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UsIHByaXZhdGUgZW52aXJvbm1lbnRTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIEltcGVyc29uYXRpb25SdWxlU2VydmljZTogSW1wZXJzb25hdGlvblJ1bGVTZXJ2aWNlLCBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsIHByaXZhdGUgcmVxdWVzdEhhbmRsZXJTZXJ2aWNlOiBSZXF1ZXN0SGFuZGxlclNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5TaG93UGFnZUNvbnRlbnQ9dHJ1ZTtcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlVGl0bGU9dGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSW1wZXJzb25hdGlvblJ1bGVzXCIpXHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzPVtcclxuICAgICAgIHt0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSG9tZVwiKSAsIHBhdGg6ICcvQWRtaW4vSG9tZScsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlfSxcclxuICAgICAgIHt0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlfVxyXG5cclxuICAgIF07XHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVUaXRsZSgpO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlQnJlYWRjcnVtYnMoKTtcclxuICAgIHRoaXMuYmJzZlRyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoZXZlbnQpPT57XHJcbiAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgIH0pXHJcbiAgICB0aGlzLmluaXRpYWxpemVQYWdlKCk7XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplUGFnZSgpIHtcclxuICAgIC8vIFRleHRCb3ggaW5pdFxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guTmFtZSA9IFwic2VhcmNoVGV4dEJveFwiXHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guSGlkZUxhYmVsID0gdHJ1ZVxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LlBsYWNlaG9sZGVyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VhcmNoQnlOYW1lXCIpXHJcblxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID0gXCJzZWFyY2hUZXh0Qm94XCJcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSBcInNlYXJjaFRleHRcIlxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWVcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlRleHRCb3hcclxuXHJcbiAgICB0aGlzLkltcGVyc29uYXRpb25QYWdpbmcgPSBuZXcgUGFnaW5nT3B0aW9ucygpO1xyXG4gICAgdGhpcy5JbXBlcnNvbmF0aW9uUGFnaW5nLkFjdGlvblBvc3RVUkwgPSB0aGlzLkFwaVVybCArICdHZXRJbXBlcnNvbmF0aW9uUnVsZUJ5RmlsdGVyJztcclxuICAgIHRoaXMuSW1wZXJzb25hdGlvblBhZ2luZy5PbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcyA9IFtcInNlYXJjaFRleHRCb3hcIl1cclxuICAgIHRoaXMuSW1wZXJzb25hdGlvblBhZ2luZy5GaWx0ZXJzID0gW3RoaXMuVGV4dElucHV0RmlsdGVyXVxyXG4gICAgdGhpcy5JbXBlcnNvbmF0aW9uUGFnaW5nLlZhbGlkYXRpb25Ub2tlbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKClcclxuICAgIHRoaXMuSXNGaWx0ZXJMb2FkZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy9QYWdpbmcgZnVuY3Rpb25zXHJcbiAgc2V0SW1wZXJzb25hdGlvbkxpc3RSZXN1bHQocmVzdWx0KSB7XHJcbiAgICB0aGlzLkltcGVyc29uYXRpb25QYWdpbmdSZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLlNob3dQYWdlQ29udGVudCA9IHRydWU7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKClcclxuICB9XHJcblxyXG4gIHNlYXJjaENsaWVudFNpZGUoc2VhcmNoVmFsdWUpIHtcclxuICAgIGlmIChzZWFyY2hWYWx1ZSlcclxuICAgICAgdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0ID0gdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0LmZpbHRlcihcclxuICAgICAgICBmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgICAgdmFyIHNvdXJjZVBhcnRpY2lwYW50TmFtZSA9IGl0ZW0uc291cmNlUGFydGljaXBhbnREVE8ucGFydGljaXBhbnROYW1lO1xyXG4gICAgICAgICAgdmFyIGRlc3RpbmF0aW9uUGFydGljaXBhbnROYW1lID0gaXRlbS5kZXN0aW5hdGlvblBhcnRpY2lwYW50RFRPLnBhcnRpY2lwYW50TmFtZTtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIHNvdXJjZVBhcnRpY2lwYW50TmFtZS5lbmdsaXNoLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKSlcclxuICAgICAgICAgICAgfHwgc291cmNlUGFydGljaXBhbnROYW1lLmFyYWJpYy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpXHJcbiAgICAgICAgICAgIHx8IGRlc3RpbmF0aW9uUGFydGljaXBhbnROYW1lLmFyYWJpYy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpXHJcbiAgICAgICAgICAgIHx8IGRlc3RpbmF0aW9uUGFydGljaXBhbnROYW1lLmFyYWJpYy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgICAgICB9KVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQgPSB0aGlzLkltcGVyc29uYXRpb25QYWdpbmdSZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvL0FkZCBpbXBlcnNvbmF0aW9uIHJ1bGUgZnVuY3Rpb25zXHJcbiAgc2hvd0FkZEltcGVyc29uYXRpb25Nb2RhbChBZGRJbXBlcnNvbmF0aW9uTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcblxyXG4gICAgdGhpcy5JbXBlcnNvbmF0aW9uUnVsZVNlcnZpY2UubG9hZEFkZERyb3Bkb3ducygpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCBEcm9wZG93bkxpc3RzID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgdGhpcy5QZXJtaXNzaW9uU2V0TGlzdCA9IERyb3Bkb3duTGlzdHMucGVybWlzc2lvbkxpc3Q7XHJcbiAgICAgIHRoaXMuUGFydGljaXBhbnRUeXBlTGlzdCA9IERyb3Bkb3duTGlzdHMucGFydGljaXBhbnRUeXBlTGlzdDtcclxuICAgICAgdGhpcy5BZGRJbXBlcnNvbmF0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pXHJcblxyXG4gICAgICB0aGlzLkFkZEltcGVyc29uYXRpb25Gb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZEltcGVyc29uYXRpb25Gb3JtT3B0aW9ucy5Gb3JtR3JvdXAgPSB0aGlzLkFkZEltcGVyc29uYXRpb25Gb3JtXHJcbiAgICAgIHRoaXMuQWRkSW1wZXJzb25hdGlvbkZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEFkZEltcGVyc29uYXRpb25SdWxlTW9kZWw7XHJcbiAgICAgIHRoaXMuQWRkSW1wZXJzb25hdGlvbkZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0QWRkSW1wZXJzb25hdGlvblJ1bGVGdW5jdGlvbjtcclxuICAgICAgdGhpcy5BZGRJbXBlcnNvbmF0aW9uRm9ybU9wdGlvbnMuUGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50XHJcblxyXG4gICAgICB0aGlzLkFkZFNob3dEZXN0aW5hdGlvblBlcm1pc3Npb25MaXN0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuQWRkU2hvd0Rlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLkFkZFNob3dTb3VyY2VQZXJtaXNzaW9uTGlzdCA9IGZhbHNlXHJcbiAgICAgIHRoaXMuQWRkU2hvd1NvdXJjZVVzZXJBdXRvQ29tcGxldGUgPSBmYWxzZVxyXG5cclxuICAgICAgdGhpcy5BZGRTb3VyY2VQYXJ0aWNpcGFudFR5cGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkU291cmNlUGFydGljaXBhbnRUeXBlLk5hbWUgPSBcIkFkZFNvdXJjZVBhcnRpY2lwYW50VHlwZVwiXHJcbiAgICAgIHRoaXMuQWRkU291cmNlUGFydGljaXBhbnRUeXBlLkxhYmVsS2V5ID0gXCJTb3VyY2VQYXJ0aWNpcGFudFR5cGVcIlxyXG4gICAgICB0aGlzLkFkZFNvdXJjZVBhcnRpY2lwYW50VHlwZS5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgdGhpcy5BZGRTb3VyY2VQYXJ0aWNpcGFudFR5cGUuRGF0YVNvdXJjZSA9IHRoaXMuUGFydGljaXBhbnRUeXBlTGlzdFxyXG4gICAgICB0aGlzLkFkZFNvdXJjZVBhcnRpY2lwYW50VHlwZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLkFkZFNvdXJjZVBhcnRpY2lwYW50VHlwZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkU291cmNlUGFydGljaXBhbnRUeXBlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZS5OYW1lID0gXCJBZGREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZVwiXHJcbiAgICAgIHRoaXMuQWRkRGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGUuTGFiZWxLZXkgPSBcIkRlc3RpbmF0aW9uUGFydGljaXBhbnRUeXBlXCJcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZS5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZS5EYXRhU291cmNlID0gdGhpcy5QYXJ0aWNpcGFudFR5cGVMaXN0XHJcbiAgICAgIHRoaXMuQWRkRGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkRGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLkFkZFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0Lk5hbWUgPSBcIkFkZFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0XCJcclxuICAgICAgdGhpcy5BZGRTb3VyY2VQZXJtaXNzaW9uU2V0TGlzdC5MYWJlbEtleSA9IFwiU291cmNlUGVybWlzc2lvblNldExpc3RcIlxyXG4gICAgICB0aGlzLkFkZFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0LlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICB0aGlzLkFkZFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0LkRhdGFTb3VyY2UgPSB0aGlzLlBlcm1pc3Npb25TZXRMaXN0XHJcbiAgICAgIHRoaXMuQWRkU291cmNlUGVybWlzc2lvblNldExpc3QuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGRTb3VyY2VQZXJtaXNzaW9uU2V0TGlzdC5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkU291cmNlUGVybWlzc2lvblNldExpc3QuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLkFkZERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3QgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkRGVzdGluYXRpb25QZXJtaXNzaW9uU2V0TGlzdC5OYW1lID0gXCJBZGREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0XCJcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0LkxhYmVsVmFsdWUgPSBcIkRlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3RcIlxyXG4gICAgICB0aGlzLkFkZERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3QuTGFiZWxLZXkgPSBcIkRlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3RcIlxyXG4gICAgICB0aGlzLkFkZERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3QuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgIHRoaXMuQWRkRGVzdGluYXRpb25QZXJtaXNzaW9uU2V0TGlzdC5EYXRhU291cmNlID0gdGhpcy5QZXJtaXNzaW9uU2V0TGlzdFxyXG4gICAgICB0aGlzLkFkZERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3QuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0LkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0LklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5BZGRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlID0gbmV3IEF1dG9jb21wbGV0ZU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlLk5hbWUgPSBcIkFkZFNvdXJjZVVzZXJBdXRvQ29tcGxldGVcIjtcclxuICAgICAgdGhpcy5BZGRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlLkxhYmVsS2V5ID0gXCJVc2VyXCI7XHJcbiAgICAgIHRoaXMuQWRkU291cmNlVXNlckF1dG9Db21wbGV0ZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuQWRkU291cmNlVXNlckF1dG9Db21wbGV0ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlLlZhbHVlID0gbnVsbDtcclxuICAgICAgdGhpcy5BZGRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlLkZvcmNlRGlyZWN0aW9uID0gRm9yY2VEaXJlY3Rpb24uRW5nbGlzaDtcclxuICAgICAgdGhpcy5BZGRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlLkFjdGlvblVSTCA9IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEFwaVVybCgpICsgdGhpcy5BcGlVcmwgKyBcIkF1dG9Db21wbGV0ZVVzZXJcIlxyXG4gICAgICB0aGlzLkFkZFNvdXJjZVVzZXJBdXRvQ29tcGxldGUuVmFsaWRhdGlvblRva2VuID0gdGhpcy5hdXRoU2VydmljZS5hdXRob3JpemF0aW9uSGVhZGVyVmFsdWUoKVxyXG5cclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUgPSBuZXcgQXV0b2NvbXBsZXRlT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZS5OYW1lID0gXCJBZGREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGVcIjtcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUuTGFiZWxLZXkgPSBcIlVzZXJcIjtcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLkFkZERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUuVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLkFkZERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZS5BY3Rpb25VUkwgPSB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRBcGlVcmwoKSArIHRoaXMuQXBpVXJsICsgXCJBdXRvQ29tcGxldGVVc2VyXCJcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUuVmFsaWRhdGlvblRva2VuID0gdGhpcy5hdXRoU2VydmljZS5hdXRob3JpemF0aW9uSGVhZGVyVmFsdWUoKVxyXG5cclxuICAgICAgdGhpcy5BZGRJc0FjdGl2ZSA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGRJc0FjdGl2ZS5OYW1lID0gXCJBZGRJc0FjdGl2ZVwiXHJcbiAgICAgIHRoaXMuQWRkSXNBY3RpdmUuTGFiZWxLZXkgPSBcIkFjdGl2ZVwiXHJcbiAgICAgIHRoaXMuQWRkSXNBY3RpdmUuSXNEaXNhYmxlZCA9IHRydWVcclxuICAgICAgdGhpcy5BZGRJc0FjdGl2ZS5WYWx1ZSA9IHRydWVcclxuXHJcbiAgICAgIHRoaXMuQWRkRXhwaXJlc0F0ID0gbmV3IERhdGVQaWNrZXJPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkRXhwaXJlc0F0Lk5hbWUgPSBcIkFkZEV4cGlyZXNBdFwiXHJcbiAgICAgIHRoaXMuQWRkRXhwaXJlc0F0LkxhYmVsS2V5ID0gXCJFeHBpcmVzQXRcIlxyXG4gICAgICB0aGlzLkFkZEV4cGlyZXNBdC5Jc1JlcXVpcmVkID0gdHJ1ZVxyXG4gICAgICB0aGlzLkFkZEV4cGlyZXNBdC5TdGFydFZpZXcgPSBTdGFydFZpZXcuTW9udGhcclxuICAgICAgdGhpcy5BZGRFeHBpcmVzQXQuUGlja2VyVHlwZSA9IFBpY2tlclR5cGUuQ2FsZW5kYXJcclxuICAgICAgdGhpcy5BZGRFeHBpcmVzQXQuU2VsZWN0TW9kZSA9IFNlbGVjdE1vZGUuU2luZ2xlXHJcblxyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEFkZEltcGVyc29uYXRpb25Nb2RhbCk7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0pO1xyXG5cclxuXHJcbiAgfVxyXG4gIGdldEFkZEltcGVyc29uYXRpb25SdWxlTW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuQWRkSW1wZXJzb25hdGlvbkZvcm0udmFsdWU7XHJcblxyXG4gICAgbGV0IEFkZE1vZGVsOiBJbXBlcnNvbmF0aW9uUnVsZU1vZGVsID0gbmV3IEltcGVyc29uYXRpb25SdWxlTW9kZWwoKTtcclxuICAgIEFkZE1vZGVsLlNvdXJjZVBhcnRpY2lwYW50RFRPLlBhcnRpY2lwYW50VHlwZUl0ZW1JRCA9IE51bWJlcihSZXN1bHRNb2RlbC5BZGRTb3VyY2VQYXJ0aWNpcGFudFR5cGUpXHJcbiAgICBBZGRNb2RlbC5EZXN0aW5hdGlvblBhcnRpY2lwYW50RFRPLlBhcnRpY2lwYW50VHlwZUl0ZW1JRCA9IE51bWJlcihSZXN1bHRNb2RlbC5BZGREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZSlcclxuICAgIEFkZE1vZGVsLkV4cGlyZXNBdCA9IFJlc3VsdE1vZGVsLkFkZEV4cGlyZXNBdFxyXG4gICAgQWRkTW9kZWwuSXNBY3RpdmUgPSBSZXN1bHRNb2RlbC5BZGRJc0FjdGl2ZVxyXG4gICAgaWYgKFJlc3VsdE1vZGVsLkFkZERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZSAhPSBudWxsICYmIFJlc3VsdE1vZGVsLkFkZERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZSAhPSB1bmRlZmluZWQpXHJcbiAgICAgIEFkZE1vZGVsLkRlc3RpbmF0aW9uUGFydGljaXBhbnREVE8uVXNlcklEID0gTnVtYmVyKFJlc3VsdE1vZGVsLkFkZERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZS5rZXkpXHJcbiAgICBlbHNlXHJcbiAgICAgIEFkZE1vZGVsLkRlc3RpbmF0aW9uUGFydGljaXBhbnREVE8uUGVybWlzc2lvblNldElEID0gTnVtYmVyKFJlc3VsdE1vZGVsLkFkZERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3QpXHJcbiAgICBpZiAoUmVzdWx0TW9kZWwuQWRkU291cmNlVXNlckF1dG9Db21wbGV0ZSAhPSBudWxsICYmIFJlc3VsdE1vZGVsLkFkZFNvdXJjZVVzZXJBdXRvQ29tcGxldGUgIT0gdW5kZWZpbmVkKVxyXG4gICAgICBBZGRNb2RlbC5Tb3VyY2VQYXJ0aWNpcGFudERUTy5Vc2VySUQgPSBOdW1iZXIoUmVzdWx0TW9kZWwuQWRkU291cmNlVXNlckF1dG9Db21wbGV0ZS5rZXkpXHJcbiAgICBlbHNlXHJcbiAgICAgIEFkZE1vZGVsLlNvdXJjZVBhcnRpY2lwYW50RFRPLlBlcm1pc3Npb25TZXRJRCA9IE51bWJlcihSZXN1bHRNb2RlbC5BZGRTb3VyY2VQZXJtaXNzaW9uU2V0TGlzdClcclxuICAgIHBhcmFtQXJyYXkucHVzaChBZGRNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcblxyXG4gIGdldEFkZEltcGVyc29uYXRpb25SdWxlRnVuY3Rpb24gPSAoQWRkTW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuSW1wZXJzb25hdGlvblJ1bGVTZXJ2aWNlLmFkZEltcGVyc29uYXRpb25SdWxlKEFkZE1vZGVsKVxyXG4gIH1cclxuXHJcblxyXG4gIGFkZERlc3RpbmF0aW9uUGFydGljaXBhbnRPbkNoYW5nZShrZXkpIHtcclxuICAgIGxldCBzb3VyY2VJdGVtID0gdGhpcy5QYXJ0aWNpcGFudFR5cGVMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gcGFyc2VJbnQoaXRlbS5rZXkpID09IGtleTsgfSkubWFwKChpdGVtKSA9PiBpdGVtKVswXTtcclxuICAgIC8vY29uc29sZS5sb2coc291cmNlSXRlbSlcclxuXHJcbiAgICBzd2l0Y2ggKHNvdXJjZUl0ZW0udmFsdWUpIHtcclxuICAgICAgY2FzZSBcIlBlcm1pc3Npb25TZXRcIjpcclxuICAgICAgICB0aGlzLkFkZFNob3dEZXN0aW5hdGlvblBlcm1pc3Npb25MaXN0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLkFkZFNob3dEZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIlVzZXJcIjpcclxuICAgICAgICB0aGlzLkFkZFNob3dEZXN0aW5hdGlvblBlcm1pc3Npb25MaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5BZGRTaG93RGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgYWRkU291cmNlUGFydGljaXBhbnRPbkNoYW5nZShrZXkpIHtcclxuICAgIGxldCBzb3VyY2VJdGVtID0gdGhpcy5QYXJ0aWNpcGFudFR5cGVMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gcGFyc2VJbnQoaXRlbS5rZXkpID09IGtleTsgfSkubWFwKChpdGVtKSA9PiBpdGVtKVswXTtcclxuICAgIC8vY29uc29sZS5sb2coc291cmNlSXRlbSlcclxuXHJcbiAgICBzd2l0Y2ggKHNvdXJjZUl0ZW0udmFsdWUpIHtcclxuICAgICAgY2FzZSBcIlBlcm1pc3Npb25TZXRcIjpcclxuICAgICAgICB0aGlzLkFkZFNob3dTb3VyY2VQZXJtaXNzaW9uTGlzdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5BZGRTaG93U291cmNlVXNlckF1dG9Db21wbGV0ZSA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiVXNlclwiOlxyXG4gICAgICAgIHRoaXMuQWRkU2hvd1NvdXJjZVBlcm1pc3Npb25MaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5BZGRTaG93U291cmNlVXNlckF1dG9Db21wbGV0ZSA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9FZGl0IGltcGVyc29uYXRpb24gcnVsZSBmdW5jdGlvbnNcclxuICBzaG93RWRpdEltcGVyc29uYXRpb25Nb2RhbChpbXBlcnNvbmF0aW9uSUQ6IG51bWJlciwgaW1wZXJzb25hdGlvbklERW5jOiBzdHJpbmcsIGVkaXRJbXBlcnNvbmF0aW9uTW9kYWwpIHtcclxuICAgIHRoaXMuSW1wZXJzb25hdGlvbklkID0gaW1wZXJzb25hdGlvbklEO1xyXG5cclxuICAgIHRoaXMuSW1wZXJzb25hdGlvblJ1bGVTZXJ2aWNlLmdldEVkaXRJbXBlcnNvbmF0aW9uUnVsZShpbXBlcnNvbmF0aW9uSURFbmMpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCByZXN1bHRPYmogPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICBsZXQgaW1wZXJzb25hdGlvbiA9IHJlc3VsdE9iai5tb2RlbDtcclxuICAgICAgbGV0IGxpc3RzID0gcmVzdWx0T2JqLmxpc3RzO1xyXG4gICAgICB0aGlzLlBlcm1pc3Npb25TZXRMaXN0ID0gbGlzdHMucGVybWlzc2lvbkxpc3Q7XHJcbiAgICAgIHRoaXMuUGFydGljaXBhbnRUeXBlTGlzdCA9IGxpc3RzLnBhcnRpY2lwYW50VHlwZUxpc3Q7XHJcblxyXG4gICAgICB0aGlzLkVkaXRJbXBlcnNvbmF0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pXHJcblxyXG4gICAgICB0aGlzLkVkaXRJbXBlcnNvbmF0aW9uRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0SW1wZXJzb25hdGlvbkZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuRWRpdEltcGVyc29uYXRpb25Gb3JtXHJcbiAgICAgIHRoaXMuRWRpdEltcGVyc29uYXRpb25Gb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRFZGl0SW1wZXJzb25hdGlvblJ1bGVNb2RlbDtcclxuICAgICAgdGhpcy5FZGl0SW1wZXJzb25hdGlvbkZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdEltcGVyc29uYXRpb25SdWxlRnVuY3Rpb247XHJcbiAgICAgIHRoaXMuRWRpdEltcGVyc29uYXRpb25Gb3JtT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnRcclxuICAgICAgdGhpcy5FZGl0SW1wZXJzb25hdGlvbkZvcm1PcHRpb25zLlBhZ2luZ0FjdGlvbk1vZGUgPSBQYWdpbmdBY3Rpb25Nb2RlLlVwZGF0ZVxyXG5cclxuICAgICAgdGhpcy5FZGl0U2hvd0Rlc3RpbmF0aW9uUGVybWlzc2lvbkxpc3QgPSBmYWxzZTtcclxuICAgICAgdGhpcy5FZGl0U2hvd0Rlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLkVkaXRTaG93U291cmNlUGVybWlzc2lvbkxpc3QgPSBmYWxzZVxyXG4gICAgICB0aGlzLkVkaXRTaG93U291cmNlVXNlckF1dG9Db21wbGV0ZSA9IGZhbHNlXHJcblxyXG4gICAgICBpZiAoaW1wZXJzb25hdGlvbi5zb3VyY2VQYXJ0aWNpcGFudERUTy5wYXJ0aWNpcGFudFR5cGVJdGVtSUQgIT0gbnVsbCAmJiBpbXBlcnNvbmF0aW9uLmRlc3RpbmF0aW9uUGFydGljaXBhbnREVE8ucGFydGljaXBhbnRUeXBlSXRlbUlEKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0RGVzdGluYXRpb25QYXJ0aWNpcGFudE9uQ2hhbmdlKGltcGVyc29uYXRpb24uZGVzdGluYXRpb25QYXJ0aWNpcGFudERUTy5wYXJ0aWNpcGFudFR5cGVJdGVtSUQpO1xyXG4gICAgICAgIHRoaXMuZWRpdFNvdXJjZVBhcnRpY2lwYW50T25DaGFuZ2UoaW1wZXJzb25hdGlvbi5zb3VyY2VQYXJ0aWNpcGFudERUTy5wYXJ0aWNpcGFudFR5cGVJdGVtSUQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG5cclxuICAgICAgdGhpcy5Tb3VyY2VQYXJ0aWNpcGFudElkID0gaW1wZXJzb25hdGlvbi5zb3VyY2VQYXJ0aWNpcGFudERUTy5pZDtcclxuICAgICAgdGhpcy5EZXN0aW5hdGlvblBhcnRpY2lwYW50SWQgPSBpbXBlcnNvbmF0aW9uLmRlc3RpbmF0aW9uUGFydGljaXBhbnREVE8uaWQ7XHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVBhcnRpY2lwYW50VHlwZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0U291cmNlUGFydGljaXBhbnRUeXBlLk5hbWUgPSBcIkVkaXRTb3VyY2VQYXJ0aWNpcGFudFR5cGVcIlxyXG4gICAgICB0aGlzLkVkaXRTb3VyY2VQYXJ0aWNpcGFudFR5cGUuTGFiZWxLZXkgPSBcIlNvdXJjZVBhcnRpY2lwYW50VHlwZVwiXHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVBhcnRpY2lwYW50VHlwZS5TZWxlY3RlZEl0ZW1zID0gdGhpcy5QYXJ0aWNpcGFudFR5cGVMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gcGFyc2VJbnQoaXRlbS5rZXkpID09IGltcGVyc29uYXRpb24uc291cmNlUGFydGljaXBhbnREVE8ucGFydGljaXBhbnRUeXBlSXRlbUlEOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTtcclxuICAgICAgdGhpcy5FZGl0U291cmNlUGFydGljaXBhbnRUeXBlLkRhdGFTb3VyY2UgPSB0aGlzLlBhcnRpY2lwYW50VHlwZUxpc3RcclxuICAgICAgdGhpcy5FZGl0U291cmNlUGFydGljaXBhbnRUeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVBhcnRpY2lwYW50VHlwZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVBhcnRpY2lwYW50VHlwZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uUGFydGljaXBhbnRUeXBlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZS5OYW1lID0gXCJFZGl0RGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGVcIlxyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZS5MYWJlbEtleSA9IFwiRGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGVcIlxyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZS5TZWxlY3RlZEl0ZW1zID0gdGhpcy5QYXJ0aWNpcGFudFR5cGVMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gcGFyc2VJbnQoaXRlbS5rZXkpID09IGltcGVyc29uYXRpb24uZGVzdGluYXRpb25QYXJ0aWNpcGFudERUTy5wYXJ0aWNpcGFudFR5cGVJdGVtSUQ7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdOztcclxuICAgICAgdGhpcy5FZGl0RGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGUuRGF0YVNvdXJjZSA9IHRoaXMuUGFydGljaXBhbnRUeXBlTGlzdFxyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uUGFydGljaXBhbnRUeXBlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgbGV0IHNvdXJjZVBlcm1pc3Npb25TZXRTZWxlY3RlZEl0ZW07XHJcbiAgICAgIGxldCBzb3VyY2VVc2VyTW9kZWwgPSBuZXcgQXV0b2NvbXBsZXRlRFRPKCk7XHJcbiAgICAgIGlmIChpbXBlcnNvbmF0aW9uLnNvdXJjZVBhcnRpY2lwYW50RFRPLnBhcnRpY2lwYW50VHlwZUl0ZW1JRCA9PSBQYXJ0aWNpcGFudFR5cGUuVXNlcikge1xyXG4gICAgICAgIHNvdXJjZVVzZXJNb2RlbC5rZXkgPSBpbXBlcnNvbmF0aW9uLnNvdXJjZVBhcnRpY2lwYW50RFRPLnVzZXJJRFxyXG4gICAgICAgIHNvdXJjZVVzZXJNb2RlbC52YWx1ZSA9IGltcGVyc29uYXRpb24uc291cmNlUGFydGljaXBhbnREVE8ucGFydGljaXBhbnROYW1lU3RyO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHNvdXJjZVBlcm1pc3Npb25TZXRTZWxlY3RlZEl0ZW0gPSB0aGlzLlBlcm1pc3Npb25TZXRMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gcGFyc2VJbnQoaXRlbS5rZXkpID09IGltcGVyc29uYXRpb24uc291cmNlUGFydGljaXBhbnREVE8ucGVybWlzc2lvblNldElEOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLkVkaXRTb3VyY2VQZXJtaXNzaW9uU2V0TGlzdCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0U291cmNlUGVybWlzc2lvblNldExpc3QuTmFtZSA9IFwiRWRpdFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0XCJcclxuICAgICAgdGhpcy5FZGl0U291cmNlUGVybWlzc2lvblNldExpc3QuTGFiZWxLZXkgPSBcIlNvdXJjZVBlcm1pc3Npb25TZXRMaXN0XCJcclxuICAgICAgdGhpcy5FZGl0U291cmNlUGVybWlzc2lvblNldExpc3QuU2VsZWN0ZWRJdGVtcyA9IHNvdXJjZVBlcm1pc3Npb25TZXRTZWxlY3RlZEl0ZW07XHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0LkRhdGFTb3VyY2UgPSB0aGlzLlBlcm1pc3Npb25TZXRMaXN0XHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0LlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0LkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0U291cmNlUGVybWlzc2lvblNldExpc3QuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLkVkaXRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlID0gbmV3IEF1dG9jb21wbGV0ZU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0U291cmNlVXNlckF1dG9Db21wbGV0ZS5OYW1lID0gXCJFZGl0U291cmNlVXNlckF1dG9Db21wbGV0ZVwiO1xyXG4gICAgICB0aGlzLkVkaXRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlLkxhYmVsS2V5ID0gXCJVc2VyXCI7XHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVVzZXJBdXRvQ29tcGxldGUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLkVkaXRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlLlNlbGVjdGVkVmFsdWUgPSBzb3VyY2VVc2VyTW9kZWw7XHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVVzZXJBdXRvQ29tcGxldGUuQWN0aW9uVVJMID0gdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0QXBpVXJsKCkgKyB0aGlzLkFwaVVybCArIFwiQXV0b0NvbXBsZXRlVXNlclwiXHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVVzZXJBdXRvQ29tcGxldGUuVmFsaWRhdGlvblRva2VuID0gdGhpcy5hdXRoU2VydmljZS5hdXRob3JpemF0aW9uSGVhZGVyVmFsdWUoKVxyXG5cclxuICAgICAgbGV0IGRlc3RpbmF0aW9uUGVybWlzc2lvblNldFNlbGVjdGVkSXRlbTtcclxuICAgICAgbGV0IGRlc3RpbmF0aW9uVXNlck1vZGVsID0gbmV3IEF1dG9jb21wbGV0ZURUTygpO1xyXG4gICAgICBpZiAoaW1wZXJzb25hdGlvbi5kZXN0aW5hdGlvblBhcnRpY2lwYW50RFRPLnBhcnRpY2lwYW50VHlwZUl0ZW1JRCA9PSBQYXJ0aWNpcGFudFR5cGUuVXNlcikge1xyXG4gICAgICAgIGRlc3RpbmF0aW9uVXNlck1vZGVsLmtleSA9IGltcGVyc29uYXRpb24uZGVzdGluYXRpb25QYXJ0aWNpcGFudERUTy51c2VySURcclxuICAgICAgICBkZXN0aW5hdGlvblVzZXJNb2RlbC52YWx1ZSA9IGltcGVyc29uYXRpb24uZGVzdGluYXRpb25QYXJ0aWNpcGFudERUTy5wYXJ0aWNpcGFudE5hbWVTdHI7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgZGVzdGluYXRpb25QZXJtaXNzaW9uU2V0U2VsZWN0ZWRJdGVtID0gdGhpcy5QZXJtaXNzaW9uU2V0TGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIHBhcnNlSW50KGl0ZW0ua2V5KSA9PSBpbXBlcnNvbmF0aW9uLmRlc3RpbmF0aW9uUGFydGljaXBhbnREVE8ucGVybWlzc2lvblNldElEOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0Lk5hbWUgPSBcIkVkaXREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0XCJcclxuICAgICAgdGhpcy5FZGl0RGVzdGluYXRpb25QZXJtaXNzaW9uU2V0TGlzdC5MYWJlbEtleSA9IFwiRGVzdGluYXRpb25QZXJtaXNzaW9uU2V0TGlzdFwiXHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3QuU2VsZWN0ZWRJdGVtcyA9IGRlc3RpbmF0aW9uUGVybWlzc2lvblNldFNlbGVjdGVkSXRlbVxyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0LkRhdGFTb3VyY2UgPSB0aGlzLlBlcm1pc3Npb25TZXRMaXN0XHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3QuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0RGVzdGluYXRpb25QZXJtaXNzaW9uU2V0TGlzdC5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3QuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG5cclxuICAgICAgdGhpcy5FZGl0RGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlID0gbmV3IEF1dG9jb21wbGV0ZU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0RGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlLk5hbWUgPSBcIkVkaXREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGVcIjtcclxuICAgICAgdGhpcy5FZGl0RGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlLkxhYmVsS2V5ID0gXCJVc2VyXCI7XHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0RGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlLlNlbGVjdGVkVmFsdWUgPSBkZXN0aW5hdGlvblVzZXJNb2RlbFxyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUuQWN0aW9uVVJMID0gdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0QXBpVXJsKCkgKyB0aGlzLkFwaVVybCArIFwiQXV0b0NvbXBsZXRlVXNlclwiXHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZS5WYWxpZGF0aW9uVG9rZW4gPSB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhvcml6YXRpb25IZWFkZXJWYWx1ZSgpXHJcblxyXG4gICAgICB0aGlzLkVkaXRJc0FjdGl2ZSA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0SXNBY3RpdmUuTmFtZSA9IFwiRWRpdElzQWN0aXZlXCJcclxuICAgICAgdGhpcy5FZGl0SXNBY3RpdmUuTGFiZWxLZXkgPSBcIkFjdGl2ZVwiXHJcbiAgICAgIHRoaXMuRWRpdElzQWN0aXZlLklzRGlzYWJsZWQgPSB0cnVlXHJcbiAgICAgIHRoaXMuRWRpdElzQWN0aXZlLlZhbHVlID0gdHJ1ZVxyXG5cclxuICAgICAgdGhpcy5FZGl0RXhwaXJlc0F0ID0gbmV3IERhdGVQaWNrZXJPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdEV4cGlyZXNBdC5OYW1lID0gXCJFZGl0RXhwaXJlc0F0XCJcclxuICAgICAgdGhpcy5FZGl0RXhwaXJlc0F0LkxhYmVsS2V5ID0gXCJFeHBpcmVzQXRcIlxyXG4gICAgICB0aGlzLkVkaXRFeHBpcmVzQXQuSXNSZXF1aXJlZCA9IHRydWVcclxuICAgICAgdGhpcy5FZGl0RXhwaXJlc0F0LlZhbHVlID0gaW1wZXJzb25hdGlvbi5leHBpcmVzQXRcclxuICAgICAgdGhpcy5FZGl0RXhwaXJlc0F0LlN0YXJ0VmlldyA9IFN0YXJ0Vmlldy5Nb250aFxyXG4gICAgICB0aGlzLkVkaXRFeHBpcmVzQXQuUGlja2VyVHlwZSA9IFBpY2tlclR5cGUuQ2FsZW5kYXJcclxuICAgICAgdGhpcy5FZGl0RXhwaXJlc0F0LlNlbGVjdE1vZGUgPSBTZWxlY3RNb2RlLlNpbmdsZVxyXG5cclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihlZGl0SW1wZXJzb25hdGlvbk1vZGFsKTtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBnZXRFZGl0SW1wZXJzb25hdGlvblJ1bGVNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5FZGl0SW1wZXJzb25hdGlvbkZvcm0udmFsdWU7XHJcblxyXG4gICAgbGV0IEVkaXRNb2RlbDogSW1wZXJzb25hdGlvblJ1bGVNb2RlbCA9IG5ldyBJbXBlcnNvbmF0aW9uUnVsZU1vZGVsKCk7XHJcbiAgICBFZGl0TW9kZWwuSUQgPSB0aGlzLkltcGVyc29uYXRpb25JZFxyXG4gICAgRWRpdE1vZGVsLkRlc3RpbmF0aW9uUGFydGljaXBhbnREVE8uSUQgPSB0aGlzLkRlc3RpbmF0aW9uUGFydGljaXBhbnRJZFxyXG4gICAgRWRpdE1vZGVsLlNvdXJjZVBhcnRpY2lwYW50RFRPLklEID0gdGhpcy5Tb3VyY2VQYXJ0aWNpcGFudElkXHJcbiAgICBFZGl0TW9kZWwuU291cmNlUGFydGljaXBhbnREVE8uUGFydGljaXBhbnRUeXBlSXRlbUlEID0gTnVtYmVyKFJlc3VsdE1vZGVsLkVkaXRTb3VyY2VQYXJ0aWNpcGFudFR5cGUpXHJcbiAgICBFZGl0TW9kZWwuRGVzdGluYXRpb25QYXJ0aWNpcGFudERUTy5QYXJ0aWNpcGFudFR5cGVJdGVtSUQgPSBOdW1iZXIoUmVzdWx0TW9kZWwuRWRpdERlc3RpbmF0aW9uUGFydGljaXBhbnRUeXBlKVxyXG4gICAgRWRpdE1vZGVsLkV4cGlyZXNBdCA9IFJlc3VsdE1vZGVsLkVkaXRFeHBpcmVzQXRcclxuICAgIEVkaXRNb2RlbC5Jc0FjdGl2ZSA9IFJlc3VsdE1vZGVsLkVkaXRJc0FjdGl2ZVxyXG4gICAgY29uc29sZS5sb2coXCJEYXRhOlwiKTtcclxuICAgIGNvbnNvbGUubG9nKFJlc3VsdE1vZGVsKTtcclxuICAgIGlmIChFZGl0TW9kZWwuRGVzdGluYXRpb25QYXJ0aWNpcGFudERUTy5QYXJ0aWNpcGFudFR5cGVJdGVtSUQgPT0gUGFydGljaXBhbnRUeXBlLlVzZXIpXHJcbiAgICAgIEVkaXRNb2RlbC5EZXN0aW5hdGlvblBhcnRpY2lwYW50RFRPLlVzZXJJRCA9IE51bWJlcihSZXN1bHRNb2RlbC5FZGl0RGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlLmtleSlcclxuICAgIGVsc2VcclxuICAgICAgRWRpdE1vZGVsLkRlc3RpbmF0aW9uUGFydGljaXBhbnREVE8uUGVybWlzc2lvblNldElEID0gTnVtYmVyKFJlc3VsdE1vZGVsLkVkaXREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0KVxyXG4gICAgaWYgKEVkaXRNb2RlbC5Tb3VyY2VQYXJ0aWNpcGFudERUTy5QYXJ0aWNpcGFudFR5cGVJdGVtSUQgPT0gUGFydGljaXBhbnRUeXBlLlVzZXIpXHJcbiAgICAgIEVkaXRNb2RlbC5Tb3VyY2VQYXJ0aWNpcGFudERUTy5Vc2VySUQgPSBOdW1iZXIoUmVzdWx0TW9kZWwuRWRpdFNvdXJjZVVzZXJBdXRvQ29tcGxldGUua2V5KVxyXG4gICAgZWxzZVxyXG4gICAgICBFZGl0TW9kZWwuU291cmNlUGFydGljaXBhbnREVE8uUGVybWlzc2lvblNldElEID0gTnVtYmVyKFJlc3VsdE1vZGVsLkVkaXRTb3VyY2VQZXJtaXNzaW9uU2V0TGlzdClcclxuICAgIHBhcmFtQXJyYXkucHVzaChFZGl0TW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0SW1wZXJzb25hdGlvblJ1bGVGdW5jdGlvbiA9IChFZGl0TW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuSW1wZXJzb25hdGlvblJ1bGVTZXJ2aWNlLmVkaXRJbXBlcnNvbmF0aW9uUnVsZShFZGl0TW9kZWwpXHJcbiAgfVxyXG5cclxuICBlZGl0RGVzdGluYXRpb25QYXJ0aWNpcGFudE9uQ2hhbmdlKGtleSkge1xyXG4gICAgbGV0IHNvdXJjZUl0ZW0gPSB0aGlzLlBhcnRpY2lwYW50VHlwZUxpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBwYXJzZUludChpdGVtLmtleSkgPT0ga2V5OyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0pWzBdO1xyXG4gICAgc3dpdGNoIChzb3VyY2VJdGVtLnZhbHVlKSB7XHJcbiAgICAgIGNhc2UgXCJQZXJtaXNzaW9uU2V0XCI6XHJcbiAgICAgICAgdGhpcy5FZGl0U2hvd0Rlc3RpbmF0aW9uUGVybWlzc2lvbkxpc3QgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuRWRpdFNob3dEZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIlVzZXJcIjpcclxuICAgICAgICB0aGlzLkVkaXRTaG93RGVzdGluYXRpb25QZXJtaXNzaW9uTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuRWRpdFNob3dEZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGVkaXRTb3VyY2VQYXJ0aWNpcGFudE9uQ2hhbmdlKGtleSkge1xyXG4gICAgbGV0IHNvdXJjZUl0ZW0gPSB0aGlzLlBhcnRpY2lwYW50VHlwZUxpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBwYXJzZUludChpdGVtLmtleSkgPT0ga2V5OyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0pWzBdO1xyXG4gICAgc3dpdGNoIChzb3VyY2VJdGVtLnZhbHVlKSB7XHJcbiAgICAgIGNhc2UgXCJQZXJtaXNzaW9uU2V0XCI6XHJcbiAgICAgICAgdGhpcy5FZGl0U2hvd1NvdXJjZVBlcm1pc3Npb25MaXN0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLkVkaXRTaG93U291cmNlVXNlckF1dG9Db21wbGV0ZSA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiVXNlclwiOlxyXG4gICAgICAgIHRoaXMuRWRpdFNob3dTb3VyY2VQZXJtaXNzaW9uTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuRWRpdFNob3dTb3VyY2VVc2VyQXV0b0NvbXBsZXRlID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vRGVsZXRlIEltcGVyc29uYXRpb25SdWxlXHJcbiAgc2hvd0RlbGV0ZUltcGVyc29uYXRpb25Nb2RhbChpbXBlcnNvbmF0aW9uUnVsZUlEOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZGVsZXRlSW1wZXJzb25hdGlvblJ1bGVJZCA9IGltcGVyc29uYXRpb25SdWxlSUQ7XHJcblxyXG4gICAgLy9hcnJheSBzZW50IHRvIHNlcnZpY2UgZnVuY3Rpb25cclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgcGFyYW1BcnJheS5wdXNoKHRoaXMuZGVsZXRlSW1wZXJzb25hdGlvblJ1bGVJZCk7XHJcblxyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zID0gbmV3IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucygpO1xyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZGVsZXRlSW1wZXJzb25hdGlvbjtcclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5TZXJ2aWNlU3VibWl0TW9kZWwgPSBwYXJhbUFycmF5O1xyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudDtcclxuXHJcbiAgICB0aGlzLmRlbGV0ZUNvbnRyb2xMb2FkZWQgPSB0cnVlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuQ29uZmlybWF0aW9uTW9kYWxDb250cm9sLnNob3dNb2RhbCgpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUltcGVyc29uYXRpb24gPSAoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5JbXBlcnNvbmF0aW9uUnVsZVNlcnZpY2UuZGVsZXRlSW1wZXJzb25hdGlvblJ1bGUoaWQpO1xyXG4gIH1cclxuXHJcbiAgLy9PbiBkZXN0cm95XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcXVlc3RIYW5kbGVyU2VydmljZS5kZXN0cm95SGFuZGxlcigpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGJsb2NrLXVpPjwvYmxvY2stdWk+XHJcbjwhLS0gUGFnZSBDb250ZW50IC0tPlxyXG48ZGl2ICpuZ0lmPVwiU2hvd1BhZ2VDb250ZW50XCIgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWN1c3RvbS1oXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtNVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiICpuZ0lmPVwiSXNGaWx0ZXJMb2FkZWRcIj5cclxuICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIkltcGVyc29uYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94IChPbkNoYW5nZSk9XCJzZWFyY2hDbGllbnRTaWRlKCRldmVudClcIiBbb3B0aW9uc109XCJzZWFyY2hUZXh0Qm94XCIgW2dyb3VwXT1cIkltcGVyc29uYXRpb25Gb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgPC9mb3JtPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgIDwhLS0gYmVnaW46Ok1lbnUgLS0+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5XCIgdGl0bGU9XCJBZGRcIiAoY2xpY2spPVwic2hvd0FkZEltcGVyc29uYXRpb25Nb2RhbChBZGRJbXBlcnNvbmF0aW9uTW9kYWwpXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1wbHVzIG1lLTFcIj48L2k+XHJcbiAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGRcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICA8IS0tIGVuZDo6TWVudSAtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktM1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgIDwhLS1iZWdpbjo6UGVybWlzc2lvbiBsaXN0LS0+XHJcbiAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXJcIj5cclxuICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuXHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj4gW3t7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlBhcnRpY2lwYW50VHlwZVwiKX19XXt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNvdXJjZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPiBbe3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUGFydGljaXBhbnRUeXBlXCIpfX1de3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGVzdGluYXRpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFeHBpcmVzQXRcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3RpdmVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGlvblwiKX19PC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICA8dGJvZHkgaWQ9XCJsaXN0aW5nQ29udGFpbmVyXCIgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuXHJcbiAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgSW1wZXJzb25hdGlvbiBvZiBjbGllbnRTaWRlUGFnaW5nUmVzdWx0XCI+XHJcblxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYXJrXCI+XHJcbiAgICAgICAgICAgICAgICAgIFt7e0ltcGVyc29uYXRpb24uc291cmNlUGFydGljaXBhbnREVE8ucGFydGljaXBhbnRUeXBlSXRlbU5hbWVTdHJ9fV0ge3tJbXBlcnNvbmF0aW9uLnNvdXJjZVBhcnRpY2lwYW50RFRPLnBhcnRpY2lwYW50TmFtZVN0cn19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPiAgW3t7SW1wZXJzb25hdGlvbi5kZXN0aW5hdGlvblBhcnRpY2lwYW50RFRPLnBhcnRpY2lwYW50VHlwZUl0ZW1OYW1lU3RyfX1dIHt7SW1wZXJzb25hdGlvbi5kZXN0aW5hdGlvblBhcnRpY2lwYW50RFRPLnBhcnRpY2lwYW50TmFtZVN0cn19PC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgPHRkPnt7SW1wZXJzb25hdGlvbi5leHBpcmVzQXR9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPnt7SW1wZXJzb25hdGlvbi5pc0FjdGl2ZX19PC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgPHRkPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tbGlnaHQgYnRuLWFjdGl2ZS1saWdodC1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lbGxpcHNpcy1oXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcC1pdGVtIHB4LTNcIiBuZ2JEcm9wZG93bkl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0VkaXRJbXBlcnNvbmF0aW9uTW9kYWwoSW1wZXJzb25hdGlvbi5pZCxJbXBlcnNvbmF0aW9uLmlkRW5jcnlwdGVkLEVkaXRJbXBlcnNvbmF0aW9uTW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3AtbGluayBweC0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRWRpdFwiKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBuZ2JEcm9wZG93bkl0ZW0gY2xhc3M9XCJkcm9wLWl0ZW0gcHgtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dEZWxldGVJbXBlcnNvbmF0aW9uTW9kYWwoSW1wZXJzb25hdGlvbi5pZEVuY3J5cHRlZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWxldGVcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8dHIgKm5nSWY9XCJjbGllbnRTaWRlUGFnaW5nUmVzdWx0Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI1XCI+XHJcbiAgICAgICAgICAgICAgICA8bGliLWVtcHR5LWRhdGE+PC9saWItZW1wdHktZGF0YT5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICA8L3RhYmxlPlxyXG5cclxuICAgICAgICA8IS0tZW5kOjpQZXJtaXNzaW9uIGxpc3QtLT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgYm9yZGVyLTBcIj5cclxuICAgICAgPEJCU0YtUGFnaW5nIChJdGVtcyk9XCJzZXRJbXBlcnNvbmF0aW9uTGlzdFJlc3VsdCgkZXZlbnQpXCIgKm5nSWY9XCJJc0ZpbHRlckxvYWRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJJbXBlcnNvbmF0aW9uUGFnaW5nXCIgW2dyb3VwXT1cIkltcGVyc29uYXRpb25Gb3JtXCIgI0ltcGVyc29uYXRpb25QYWdpbmdWaWV3RWxlbWVudD5cclxuICAgICAgPC9CQlNGLVBhZ2luZz5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcbjwhLS0gQWRkIE1vZGFsIC0tPlxyXG48bmctdGVtcGxhdGUgI0FkZEltcGVyc29uYXRpb25Nb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkXCIpfX0ge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSW1wZXJzb25hdGlvblJ1bGVcIil9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIkFkZEltcGVyc29uYXRpb25Gb3JtT3B0aW9uc1wiPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJBZGRTb3VyY2VQYXJ0aWNpcGFudFR5cGVcIiAoT25DaGFuZ2UpPVwiYWRkU291cmNlUGFydGljaXBhbnRPbkNoYW5nZSgkZXZlbnQpXCIgW2dyb3VwXT1cIkFkZEltcGVyc29uYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJBZGRTb3VyY2VQZXJtaXNzaW9uU2V0TGlzdFwiICpuZ0lmPVwiQWRkU2hvd1NvdXJjZVBlcm1pc3Npb25MaXN0XCIgW2dyb3VwXT1cIkFkZEltcGVyc29uYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLUF1dG9jb21wbGV0ZVRleHRCb3ggW29wdGlvbnNdPVwiQWRkU291cmNlVXNlckF1dG9Db21wbGV0ZVwiICpuZ0lmPVwiQWRkU2hvd1NvdXJjZVVzZXJBdXRvQ29tcGxldGVcIiBbZ3JvdXBdPVwiQWRkSW1wZXJzb25hdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1BdXRvY29tcGxldGVUZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiQWRkRGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGVcIiAoT25DaGFuZ2UpPVwiYWRkRGVzdGluYXRpb25QYXJ0aWNpcGFudE9uQ2hhbmdlKCRldmVudClcIiBbZ3JvdXBdPVwiQWRkSW1wZXJzb25hdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkFkZERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3RcIiAqbmdJZj1cIkFkZFNob3dEZXN0aW5hdGlvblBlcm1pc3Npb25MaXN0XCIgW2dyb3VwXT1cIkFkZEltcGVyc29uYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLUF1dG9jb21wbGV0ZVRleHRCb3ggW29wdGlvbnNdPVwiQWRkRGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlXCIgKm5nSWY9XCJBZGRTaG93RGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlXCIgW2dyb3VwXT1cIkFkZEltcGVyc29uYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtQXV0b2NvbXBsZXRlVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJBZGRJc0FjdGl2ZVwiIFtncm91cF09XCJBZGRJbXBlcnNvbmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1EYXRlVGltZVBpY2tlciBbb3B0aW9uc109XCJBZGRFeHBpcmVzQXRcIiBbZ3JvdXBdPVwiQWRkSW1wZXJzb25hdGlvbkZvcm1cIj5cclxuXHJcbiAgICAgICAgICA8L0JCU0YtRGF0ZVRpbWVQaWNrZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgIDxidXR0b24gQ2xvc2VJbXBlcnNvbmF0aW9uTW9kYWwgaWQ9XCJDbG9zZUltcGVyc29uYXRpb25Nb2RhbFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9CQlNGLUZvcm0+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tRWRpdCBNb2RhbC0tPlxyXG48bmctdGVtcGxhdGUgI0VkaXRJbXBlcnNvbmF0aW9uTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVkaXRcIil9fSB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJJbXBlcnNvbmF0aW9uUnVsZVwiKX19PC9oMT5cclxuICAgIDwvZGl2PlxyXG4gICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJFZGl0SW1wZXJzb25hdGlvbkZvcm1PcHRpb25zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdFNvdXJjZVBhcnRpY2lwYW50VHlwZVwiIChPbkNoYW5nZSk9XCJlZGl0U291cmNlUGFydGljaXBhbnRPbkNoYW5nZSgkZXZlbnQpXCIgW2dyb3VwXT1cIkVkaXRJbXBlcnNvbmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0XCIgKm5nSWY9XCJFZGl0U2hvd1NvdXJjZVBlcm1pc3Npb25MaXN0XCIgW2dyb3VwXT1cIkVkaXRJbXBlcnNvbmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1BdXRvY29tcGxldGVUZXh0Qm94IFtvcHRpb25zXT1cIkVkaXRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlXCIgKm5nSWY9XCJFZGl0U2hvd1NvdXJjZVVzZXJBdXRvQ29tcGxldGVcIiBbZ3JvdXBdPVwiRWRpdEltcGVyc29uYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtQXV0b2NvbXBsZXRlVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdERlc3RpbmF0aW9uUGFydGljaXBhbnRUeXBlXCIgKE9uQ2hhbmdlKT1cImVkaXREZXN0aW5hdGlvblBhcnRpY2lwYW50T25DaGFuZ2UoJGV2ZW50KVwiIFtncm91cF09XCJFZGl0SW1wZXJzb25hdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVkaXREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0XCIgKm5nSWY9XCJFZGl0U2hvd0Rlc3RpbmF0aW9uUGVybWlzc2lvbkxpc3RcIiBbZ3JvdXBdPVwiRWRpdEltcGVyc29uYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLUF1dG9jb21wbGV0ZVRleHRCb3ggW29wdGlvbnNdPVwiRWRpdERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZVwiICpuZ0lmPVwiRWRpdFNob3dEZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGVcIiBbZ3JvdXBdPVwiRWRpdEltcGVyc29uYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtQXV0b2NvbXBsZXRlVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJFZGl0SXNBY3RpdmVcIiBbZ3JvdXBdPVwiRWRpdEltcGVyc29uYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURhdGVUaW1lUGlja2VyIFtvcHRpb25zXT1cIkVkaXRFeHBpcmVzQXRcIiBbZ3JvdXBdPVwiRWRpdEltcGVyc29uYXRpb25Gb3JtXCI+XHJcblxyXG4gICAgICAgICAgPC9CQlNGLURhdGVUaW1lUGlja2VyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZUVkaXRJbXBlcnNvbmF0aW9uTW9kYWwgaWQ9XCJDbG9zZUVkaXRJbXBlcnNvbmF0aW9uTW9kYWxcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gIG1lLTNcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuXHJcbjwhLS1kZWxldGUgTW9kYWwtLT5cclxuPEJCU0YtQ29uZmlybWF0aW9uTW9kYWwgKm5nSWY9XCJkZWxldGVDb250cm9sTG9hZGVkXCIgW29wdGlvbnNdPVwiRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9uc1wiIGlkPVwiQ29uZmlybWF0aW9uTW9kYWxDb250cm9sXCIgI0NvbmZpcm1hdGlvbk1vZGFsQ29udHJvbD48L0JCU0YtQ29uZmlybWF0aW9uTW9kYWw+XHJcblxyXG4iXX0=
|
|
454
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wZXJzb25hdGlvbi1ydWxlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL2ltcGVyc29uYXRpb24tcnVsZXMvaW1wZXJzb25hdGlvbi1ydWxlcy9pbXBlcnNvbmF0aW9uLXJ1bGVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvaW1wZXJzb25hdGlvbi1ydWxlcy9pbXBlcnNvbmF0aW9uLXJ1bGVzL2ltcGVyc29uYXRpb24tcnVsZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSx3QkFBd0IsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbFQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFFNUcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBS3JGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU9yRSxNQUFNLE9BQU8sMkJBQTJCO0lBNkR0QyxZQUFvQixXQUF3QixFQUFVLGVBQWdDLEVBQVMsY0FBOEIsRUFDbkgs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QUEyQjtrQkFKdkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxXQUFXLEVBQUUsc0NBQXNDO2lCQUNwRDttVUFjaUUsYUFBYTtzQkFBNUUsU0FBUzt1QkFBQyxnQ0FBZ0MsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBOENKLHdCQUF3QjtzQkFBakYsU0FBUzt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQXV0b2NvbXBsZXRlRFRPLCBBdXRvY29tcGxldGVPcHRpb25zLCBDaGVja0JveE9wdGlvbnMsIENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucywgRGF0ZVBpY2tlck9wdGlvbnMsIERyb3Bkb3duT3B0aW9ucywgRmlsdGVySXRlbSwgRmlsdGVyVHlwZSwgRm9yY2VEaXJlY3Rpb24sIEZvcm1PcHRpb25zLCBJbnB1dFR5cGUsIFBhZ2luZ0FjdGlvbk1vZGUsIFBhZ2luZ09wdGlvbnMsIFBpY2tlclR5cGUsIFNlbGVjdE1vZGUsIFN0YXJ0VmlldywgVGV4dEJveE9wdGlvbnMgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7IEltcGVyc29uYXRpb25SdWxlTW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL0ltcGVyc29uYXRpb25SdWxlTW9kZWxzL0ltcGVyc29uYXRpb25SdWxlTW9kZWwnO1xyXG5pbXBvcnQgeyBJbXBlcnNvbmF0aW9uUnVsZVNlcnZpY2UgfSBmcm9tICcuLy4uLy4uL3NoYXJlZC9TZXJ2aWNlcy9JbXBlcnNvbmF0aW9uUnVsZVNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXRyb25pYy9jb3JlL3NlcnZpY2VzL3BhZ2UtaW5mby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBVdGlsaXR5U2VydmljZSwgQkJTRlRyYW5zbGF0ZVNlcnZpY2UsIEVudmlyb25tZW50U2VydmljZSwgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgUGFnaW5nQ29tcG9uZW50IH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMvbGliL2NvbnRyb2xzL1BhZ2luZy9QYWdpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBQYXJ0aWNpcGFudFR5cGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvRW51bXMvUGFydGljaXBhbnRUeXBlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uTW9kYWxDb21wb25lbnQgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scy9saWIvY29udHJvbHMvQ29uZmlybWF0aW9uTW9kYWwvQ29uZmlybWF0aW9uTW9kYWwuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWltcGVyc29uYXRpb24tcnVsZXMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbXBlcnNvbmF0aW9uLXJ1bGVzLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgSW1wZXJzb25hdGlvblJ1bGVzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAvL1BhZ2UgcmVxdWlyZW1lbnRzXHJcbiAgU2hvd1BhZ2VDb250ZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQXBpVXJsID0gXCIvYXBpL2FkbWluL0ltcGVyc29uYXRpb25SdWxlL1wiXHJcblxyXG4gIC8vRmlsdGVyIGFuZCBwYWdpbmcgY29tcG9uZW50c1xyXG4gIHNlYXJjaFRleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIFRleHRJbnB1dEZpbHRlcjogRmlsdGVySXRlbTtcclxuICBJbXBlcnNvbmF0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEltcGVyc29uYXRpb25QYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdDogYW55W10gPSBbXTtcclxuICBJbXBlcnNvbmF0aW9uUGFnaW5nOiBQYWdpbmdPcHRpb25zO1xyXG4gIElzRmlsdGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnSW1wZXJzb25hdGlvblBhZ2luZ1ZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIHBhZ2luZ0VsZW1lbnQ6IFBhZ2luZ0NvbXBvbmVudDxhbnk+O1xyXG5cclxuICAvL1JlcXVpcmVkIGxpc3RzXHJcbiAgUGVybWlzc2lvblNldExpc3Q6IGFueVtdID0gW107XHJcbiAgUGFydGljaXBhbnRUeXBlTGlzdDogYW55W10gPSBbXTtcclxuXHJcbiAgLy9BZGQgTW9kZWwgQ29udHJvbHNcclxuICBBZGRJbXBlcnNvbmF0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEFkZEltcGVyc29uYXRpb25Gb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucztcclxuICBBZGRTb3VyY2VQYXJ0aWNpcGFudFR5cGU6IERyb3Bkb3duT3B0aW9ucztcclxuICBBZGREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIEFkZFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0OiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgQWRkRGVzdGluYXRpb25QZXJtaXNzaW9uU2V0TGlzdDogRHJvcGRvd25PcHRpb25zO1xyXG4gIEFkZFNvdXJjZVVzZXJBdXRvQ29tcGxldGU6IEF1dG9jb21wbGV0ZU9wdGlvbnM7XHJcbiAgQWRkRGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlOiBBdXRvY29tcGxldGVPcHRpb25zO1xyXG4gIEFkZElzQWN0aXZlOiBDaGVja0JveE9wdGlvbnM7XHJcbiAgQWRkRXhwaXJlc0F0OiBEYXRlUGlja2VyT3B0aW9ucztcclxuICBBZGRTaG93U291cmNlUGVybWlzc2lvbkxpc3Q6Ym9vbGVhbj1mYWxzZTtcclxuICBBZGRTaG93U291cmNlVXNlckF1dG9Db21wbGV0ZTpib29sZWFuPWZhbHNlO1xyXG4gIEFkZFNob3dEZXN0aW5hdGlvblBlcm1pc3Npb25MaXN0OmJvb2xlYW49ZmFsc2U7XHJcbiAgQWRkU2hvd0Rlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZTpib29sZWFuPWZhbHNlO1xyXG5cclxuXHJcbiAgLy9FZGl0IE1vZGVsIENvbnRyb2xzXHJcbiAgRWRpdEltcGVyc29uYXRpb25Gb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgRWRpdEltcGVyc29uYXRpb25Gb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucztcclxuICBFZGl0U291cmNlUGFydGljaXBhbnRUeXBlOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgRWRpdERlc3RpbmF0aW9uUGFydGljaXBhbnRUeXBlOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgRWRpdFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0OiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgRWRpdERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3Q6IERyb3Bkb3duT3B0aW9ucztcclxuICBFZGl0U291cmNlVXNlckF1dG9Db21wbGV0ZTogQXV0b2NvbXBsZXRlT3B0aW9ucztcclxuICBFZGl0RGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlOiBBdXRvY29tcGxldGVPcHRpb25zO1xyXG4gIEVkaXRJc0FjdGl2ZTogQ2hlY2tCb3hPcHRpb25zO1xyXG4gIEVkaXRFeHBpcmVzQXQ6IERhdGVQaWNrZXJPcHRpb25zO1xyXG4gIEVkaXRTaG93U291cmNlUGVybWlzc2lvbkxpc3Q6Ym9vbGVhbj1mYWxzZTtcclxuICBFZGl0U2hvd1NvdXJjZVVzZXJBdXRvQ29tcGxldGU6Ym9vbGVhbj1mYWxzZTtcclxuICBFZGl0U2hvd0Rlc3RpbmF0aW9uUGVybWlzc2lvbkxpc3Q6Ym9vbGVhbj1mYWxzZTtcclxuICBFZGl0U2hvd0Rlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZTpib29sZWFuPWZhbHNlO1xyXG4gIEltcGVyc29uYXRpb25JZDogbnVtYmVyO1xyXG4gIFNvdXJjZVBhcnRpY2lwYW50SWQ6IG51bWJlcjtcclxuICBEZXN0aW5hdGlvblBhcnRpY2lwYW50SWQ6IG51bWJlcjtcclxuXHJcbiAgLy9kZWxldGUgIE1vZGVsIENvbnRyb2xzXHJcbiAgZGVsZXRlSW1wZXJzb25hdGlvblJ1bGVJZDogc3RyaW5nO1xyXG4gIERlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnM6IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucztcclxuICBkZWxldGVDb250cm9sTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnQ29uZmlybWF0aW9uTW9kYWxDb250cm9sJywgeyBzdGF0aWM6IGZhbHNlIH0pIENvbmZpcm1hdGlvbk1vZGFsQ29udHJvbDogQ29uZmlybWF0aW9uTW9kYWxDb21wb25lbnQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLCBwdWJsaWMgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBiYnNmVHJhbnNsYXRlU2VydmljZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UsIHByaXZhdGUgZW52aXJvbm1lbnRTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIEltcGVyc29uYXRpb25SdWxlU2VydmljZTogSW1wZXJzb25hdGlvblJ1bGVTZXJ2aWNlLCBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsIHByaXZhdGUgcmVxdWVzdEhhbmRsZXJTZXJ2aWNlOiBSZXF1ZXN0SGFuZGxlclNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5TaG93UGFnZUNvbnRlbnQ9dHJ1ZTtcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlVGl0bGU9dGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSW1wZXJzb25hdGlvblJ1bGVzXCIpXHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzPVtcclxuICAgICAgIHt0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSG9tZVwiKSAsIHBhdGg6ICcvQWRtaW4vSG9tZScsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlfSxcclxuICAgICAgIHt0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlfVxyXG5cclxuICAgIF07XHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVUaXRsZSgpO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlQnJlYWRjcnVtYnMoKTtcclxuICAgIHRoaXMuYmJzZlRyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoZXZlbnQpPT57XHJcbiAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgIH0pXHJcbiAgICB0aGlzLmluaXRpYWxpemVQYWdlKCk7XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplUGFnZSgpIHtcclxuICAgIC8vIFRleHRCb3ggaW5pdFxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guTmFtZSA9IFwic2VhcmNoVGV4dEJveFwiXHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guSGlkZUxhYmVsID0gdHJ1ZVxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LlBsYWNlaG9sZGVyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VhcmNoQnlOYW1lXCIpXHJcblxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID0gXCJzZWFyY2hUZXh0Qm94XCJcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSBcInNlYXJjaFRleHRcIlxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWVcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlRleHRCb3hcclxuXHJcbiAgICB0aGlzLkltcGVyc29uYXRpb25QYWdpbmcgPSBuZXcgUGFnaW5nT3B0aW9ucygpO1xyXG4gICAgdGhpcy5JbXBlcnNvbmF0aW9uUGFnaW5nLkFjdGlvblBvc3RVUkwgPSB0aGlzLkFwaVVybCArICdHZXRJbXBlcnNvbmF0aW9uUnVsZUJ5RmlsdGVyJztcclxuICAgIHRoaXMuSW1wZXJzb25hdGlvblBhZ2luZy5PbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcyA9IFtcInNlYXJjaFRleHRCb3hcIl1cclxuICAgIHRoaXMuSW1wZXJzb25hdGlvblBhZ2luZy5GaWx0ZXJzID0gW3RoaXMuVGV4dElucHV0RmlsdGVyXVxyXG4gICAgdGhpcy5JbXBlcnNvbmF0aW9uUGFnaW5nLlZhbGlkYXRpb25Ub2tlbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKClcclxuICAgIHRoaXMuSXNGaWx0ZXJMb2FkZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy9QYWdpbmcgZnVuY3Rpb25zXHJcbiAgc2V0SW1wZXJzb25hdGlvbkxpc3RSZXN1bHQocmVzdWx0KSB7XHJcbiAgICB0aGlzLkltcGVyc29uYXRpb25QYWdpbmdSZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLlNob3dQYWdlQ29udGVudCA9IHRydWU7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKClcclxuICB9XHJcblxyXG4gIHNlYXJjaENsaWVudFNpZGUoc2VhcmNoVmFsdWUpIHtcclxuICAgIGlmIChzZWFyY2hWYWx1ZSlcclxuICAgICAgdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0ID0gdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0LmZpbHRlcihcclxuICAgICAgICBmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgICAgdmFyIHNvdXJjZVBhcnRpY2lwYW50TmFtZSA9IGl0ZW0uc291cmNlUGFydGljaXBhbnREVE8ucGFydGljaXBhbnROYW1lO1xyXG4gICAgICAgICAgdmFyIGRlc3RpbmF0aW9uUGFydGljaXBhbnROYW1lID0gaXRlbS5kZXN0aW5hdGlvblBhcnRpY2lwYW50RFRPLnBhcnRpY2lwYW50TmFtZTtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIHNvdXJjZVBhcnRpY2lwYW50TmFtZS5lbmdsaXNoLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKSlcclxuICAgICAgICAgICAgfHwgc291cmNlUGFydGljaXBhbnROYW1lLmFyYWJpYy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpXHJcbiAgICAgICAgICAgIHx8IGRlc3RpbmF0aW9uUGFydGljaXBhbnROYW1lLmFyYWJpYy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpXHJcbiAgICAgICAgICAgIHx8IGRlc3RpbmF0aW9uUGFydGljaXBhbnROYW1lLmFyYWJpYy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgICAgICB9KVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQgPSB0aGlzLkltcGVyc29uYXRpb25QYWdpbmdSZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvL0FkZCBpbXBlcnNvbmF0aW9uIHJ1bGUgZnVuY3Rpb25zXHJcbiAgc2hvd0FkZEltcGVyc29uYXRpb25Nb2RhbChBZGRJbXBlcnNvbmF0aW9uTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcblxyXG4gICAgdGhpcy5JbXBlcnNvbmF0aW9uUnVsZVNlcnZpY2UubG9hZEFkZERyb3Bkb3ducygpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCBEcm9wZG93bkxpc3RzID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgdGhpcy5QZXJtaXNzaW9uU2V0TGlzdCA9IERyb3Bkb3duTGlzdHMucGVybWlzc2lvbkxpc3Q7XHJcbiAgICAgIHRoaXMuUGFydGljaXBhbnRUeXBlTGlzdCA9IERyb3Bkb3duTGlzdHMucGFydGljaXBhbnRUeXBlTGlzdDtcclxuICAgICAgdGhpcy5BZGRJbXBlcnNvbmF0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pXHJcblxyXG4gICAgICB0aGlzLkFkZEltcGVyc29uYXRpb25Gb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZEltcGVyc29uYXRpb25Gb3JtT3B0aW9ucy5Gb3JtR3JvdXAgPSB0aGlzLkFkZEltcGVyc29uYXRpb25Gb3JtXHJcbiAgICAgIHRoaXMuQWRkSW1wZXJzb25hdGlvbkZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEFkZEltcGVyc29uYXRpb25SdWxlTW9kZWw7XHJcbiAgICAgIHRoaXMuQWRkSW1wZXJzb25hdGlvbkZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0QWRkSW1wZXJzb25hdGlvblJ1bGVGdW5jdGlvbjtcclxuICAgICAgdGhpcy5BZGRJbXBlcnNvbmF0aW9uRm9ybU9wdGlvbnMuUGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50XHJcblxyXG4gICAgICB0aGlzLkFkZFNob3dEZXN0aW5hdGlvblBlcm1pc3Npb25MaXN0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuQWRkU2hvd0Rlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLkFkZFNob3dTb3VyY2VQZXJtaXNzaW9uTGlzdCA9IGZhbHNlXHJcbiAgICAgIHRoaXMuQWRkU2hvd1NvdXJjZVVzZXJBdXRvQ29tcGxldGUgPSBmYWxzZVxyXG5cclxuICAgICAgdGhpcy5BZGRTb3VyY2VQYXJ0aWNpcGFudFR5cGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkU291cmNlUGFydGljaXBhbnRUeXBlLk5hbWUgPSBcIkFkZFNvdXJjZVBhcnRpY2lwYW50VHlwZVwiXHJcbiAgICAgIHRoaXMuQWRkU291cmNlUGFydGljaXBhbnRUeXBlLkxhYmVsS2V5ID0gXCJTb3VyY2VQYXJ0aWNpcGFudFR5cGVcIlxyXG4gICAgICB0aGlzLkFkZFNvdXJjZVBhcnRpY2lwYW50VHlwZS5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgdGhpcy5BZGRTb3VyY2VQYXJ0aWNpcGFudFR5cGUuRGF0YVNvdXJjZSA9IHRoaXMuUGFydGljaXBhbnRUeXBlTGlzdFxyXG4gICAgICB0aGlzLkFkZFNvdXJjZVBhcnRpY2lwYW50VHlwZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLkFkZFNvdXJjZVBhcnRpY2lwYW50VHlwZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkU291cmNlUGFydGljaXBhbnRUeXBlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZS5OYW1lID0gXCJBZGREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZVwiXHJcbiAgICAgIHRoaXMuQWRkRGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGUuTGFiZWxLZXkgPSBcIkRlc3RpbmF0aW9uUGFydGljaXBhbnRUeXBlXCJcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZS5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZS5EYXRhU291cmNlID0gdGhpcy5QYXJ0aWNpcGFudFR5cGVMaXN0XHJcbiAgICAgIHRoaXMuQWRkRGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkRGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLkFkZFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0Lk5hbWUgPSBcIkFkZFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0XCJcclxuICAgICAgdGhpcy5BZGRTb3VyY2VQZXJtaXNzaW9uU2V0TGlzdC5MYWJlbEtleSA9IFwiU291cmNlUGVybWlzc2lvblNldExpc3RcIlxyXG4gICAgICB0aGlzLkFkZFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0LlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICB0aGlzLkFkZFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0LkRhdGFTb3VyY2UgPSB0aGlzLlBlcm1pc3Npb25TZXRMaXN0XHJcbiAgICAgIHRoaXMuQWRkU291cmNlUGVybWlzc2lvblNldExpc3QuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGRTb3VyY2VQZXJtaXNzaW9uU2V0TGlzdC5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkU291cmNlUGVybWlzc2lvblNldExpc3QuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLkFkZERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3QgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkRGVzdGluYXRpb25QZXJtaXNzaW9uU2V0TGlzdC5OYW1lID0gXCJBZGREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0XCJcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0LkxhYmVsVmFsdWUgPSBcIkRlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3RcIlxyXG4gICAgICB0aGlzLkFkZERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3QuTGFiZWxLZXkgPSBcIkRlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3RcIlxyXG4gICAgICB0aGlzLkFkZERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3QuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgIHRoaXMuQWRkRGVzdGluYXRpb25QZXJtaXNzaW9uU2V0TGlzdC5EYXRhU291cmNlID0gdGhpcy5QZXJtaXNzaW9uU2V0TGlzdFxyXG4gICAgICB0aGlzLkFkZERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3QuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0LkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0LklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5BZGRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlID0gbmV3IEF1dG9jb21wbGV0ZU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlLk5hbWUgPSBcIkFkZFNvdXJjZVVzZXJBdXRvQ29tcGxldGVcIjtcclxuICAgICAgdGhpcy5BZGRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlLkxhYmVsS2V5ID0gXCJVc2VyXCI7XHJcbiAgICAgIHRoaXMuQWRkU291cmNlVXNlckF1dG9Db21wbGV0ZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuQWRkU291cmNlVXNlckF1dG9Db21wbGV0ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlLlZhbHVlID0gbnVsbDtcclxuICAgICAgdGhpcy5BZGRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlLkZvcmNlRGlyZWN0aW9uID0gRm9yY2VEaXJlY3Rpb24uRW5nbGlzaDtcclxuICAgICAgdGhpcy5BZGRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlLkFjdGlvblVSTCA9IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEFwaVVybCgpICsgdGhpcy5BcGlVcmwgKyBcIkF1dG9Db21wbGV0ZVVzZXJcIlxyXG4gICAgICB0aGlzLkFkZFNvdXJjZVVzZXJBdXRvQ29tcGxldGUuVmFsaWRhdGlvblRva2VuID0gdGhpcy5hdXRoU2VydmljZS5hdXRob3JpemF0aW9uSGVhZGVyVmFsdWUoKVxyXG5cclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUgPSBuZXcgQXV0b2NvbXBsZXRlT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZS5OYW1lID0gXCJBZGREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGVcIjtcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUuTGFiZWxLZXkgPSBcIlVzZXJcIjtcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLkFkZERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUuVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLkFkZERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZS5BY3Rpb25VUkwgPSB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRBcGlVcmwoKSArIHRoaXMuQXBpVXJsICsgXCJBdXRvQ29tcGxldGVVc2VyXCJcclxuICAgICAgdGhpcy5BZGREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUuVmFsaWRhdGlvblRva2VuID0gdGhpcy5hdXRoU2VydmljZS5hdXRob3JpemF0aW9uSGVhZGVyVmFsdWUoKVxyXG5cclxuICAgICAgdGhpcy5BZGRJc0FjdGl2ZSA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGRJc0FjdGl2ZS5OYW1lID0gXCJBZGRJc0FjdGl2ZVwiXHJcbiAgICAgIHRoaXMuQWRkSXNBY3RpdmUuTGFiZWxLZXkgPSBcIkFjdGl2ZVwiXHJcbiAgICAgIHRoaXMuQWRkSXNBY3RpdmUuSXNEaXNhYmxlZCA9IHRydWVcclxuICAgICAgdGhpcy5BZGRJc0FjdGl2ZS5WYWx1ZSA9IHRydWVcclxuXHJcbiAgICAgIHRoaXMuQWRkRXhwaXJlc0F0ID0gbmV3IERhdGVQaWNrZXJPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkRXhwaXJlc0F0Lk5hbWUgPSBcIkFkZEV4cGlyZXNBdFwiXHJcbiAgICAgIHRoaXMuQWRkRXhwaXJlc0F0LkxhYmVsS2V5ID0gXCJFeHBpcmVzQXRcIlxyXG4gICAgICB0aGlzLkFkZEV4cGlyZXNBdC5Jc1JlcXVpcmVkID0gdHJ1ZVxyXG4gICAgICB0aGlzLkFkZEV4cGlyZXNBdC5TdGFydFZpZXcgPSBTdGFydFZpZXcuTW9udGhcclxuICAgICAgdGhpcy5BZGRFeHBpcmVzQXQuUGlja2VyVHlwZSA9IFBpY2tlclR5cGUuQ2FsZW5kYXJcclxuICAgICAgdGhpcy5BZGRFeHBpcmVzQXQuU2VsZWN0TW9kZSA9IFNlbGVjdE1vZGUuU2luZ2xlXHJcblxyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEFkZEltcGVyc29uYXRpb25Nb2RhbCk7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0pO1xyXG5cclxuXHJcbiAgfVxyXG4gIGdldEFkZEltcGVyc29uYXRpb25SdWxlTW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuQWRkSW1wZXJzb25hdGlvbkZvcm0udmFsdWU7XHJcblxyXG4gICAgbGV0IEFkZE1vZGVsOiBJbXBlcnNvbmF0aW9uUnVsZU1vZGVsID0gbmV3IEltcGVyc29uYXRpb25SdWxlTW9kZWwoKTtcclxuICAgIEFkZE1vZGVsLlNvdXJjZVBhcnRpY2lwYW50RFRPLlBhcnRpY2lwYW50VHlwZUl0ZW1JRCA9IE51bWJlcihSZXN1bHRNb2RlbC5BZGRTb3VyY2VQYXJ0aWNpcGFudFR5cGUpXHJcbiAgICBBZGRNb2RlbC5EZXN0aW5hdGlvblBhcnRpY2lwYW50RFRPLlBhcnRpY2lwYW50VHlwZUl0ZW1JRCA9IE51bWJlcihSZXN1bHRNb2RlbC5BZGREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZSlcclxuICAgIEFkZE1vZGVsLkV4cGlyZXNBdCA9IFJlc3VsdE1vZGVsLkFkZEV4cGlyZXNBdFxyXG4gICAgQWRkTW9kZWwuSXNBY3RpdmUgPSBSZXN1bHRNb2RlbC5BZGRJc0FjdGl2ZVxyXG4gICAgaWYgKFJlc3VsdE1vZGVsLkFkZERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZSAhPSBudWxsICYmIFJlc3VsdE1vZGVsLkFkZERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZSAhPSB1bmRlZmluZWQpXHJcbiAgICAgIEFkZE1vZGVsLkRlc3RpbmF0aW9uUGFydGljaXBhbnREVE8uVXNlcklEID0gTnVtYmVyKFJlc3VsdE1vZGVsLkFkZERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZS5rZXkpXHJcbiAgICBlbHNlXHJcbiAgICAgIEFkZE1vZGVsLkRlc3RpbmF0aW9uUGFydGljaXBhbnREVE8uUGVybWlzc2lvblNldElEID0gTnVtYmVyKFJlc3VsdE1vZGVsLkFkZERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3QpXHJcbiAgICBpZiAoUmVzdWx0TW9kZWwuQWRkU291cmNlVXNlckF1dG9Db21wbGV0ZSAhPSBudWxsICYmIFJlc3VsdE1vZGVsLkFkZFNvdXJjZVVzZXJBdXRvQ29tcGxldGUgIT0gdW5kZWZpbmVkKVxyXG4gICAgICBBZGRNb2RlbC5Tb3VyY2VQYXJ0aWNpcGFudERUTy5Vc2VySUQgPSBOdW1iZXIoUmVzdWx0TW9kZWwuQWRkU291cmNlVXNlckF1dG9Db21wbGV0ZS5rZXkpXHJcbiAgICBlbHNlXHJcbiAgICAgIEFkZE1vZGVsLlNvdXJjZVBhcnRpY2lwYW50RFRPLlBlcm1pc3Npb25TZXRJRCA9IE51bWJlcihSZXN1bHRNb2RlbC5BZGRTb3VyY2VQZXJtaXNzaW9uU2V0TGlzdClcclxuICAgIHBhcmFtQXJyYXkucHVzaChBZGRNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcblxyXG4gIGdldEFkZEltcGVyc29uYXRpb25SdWxlRnVuY3Rpb24gPSAoQWRkTW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuSW1wZXJzb25hdGlvblJ1bGVTZXJ2aWNlLmFkZEltcGVyc29uYXRpb25SdWxlKEFkZE1vZGVsKVxyXG4gIH1cclxuXHJcblxyXG4gIGFkZERlc3RpbmF0aW9uUGFydGljaXBhbnRPbkNoYW5nZShrZXkpIHtcclxuICAgIGxldCBzb3VyY2VJdGVtID0gdGhpcy5QYXJ0aWNpcGFudFR5cGVMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gcGFyc2VJbnQoaXRlbS5rZXkpID09IGtleTsgfSkubWFwKChpdGVtKSA9PiBpdGVtKVswXTtcclxuICAgIC8vY29uc29sZS5sb2coc291cmNlSXRlbSlcclxuXHJcbiAgICBzd2l0Y2ggKHNvdXJjZUl0ZW0udmFsdWUpIHtcclxuICAgICAgY2FzZSBcIlBlcm1pc3Npb25TZXRcIjpcclxuICAgICAgICB0aGlzLkFkZFNob3dEZXN0aW5hdGlvblBlcm1pc3Npb25MaXN0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLkFkZFNob3dEZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIlVzZXJcIjpcclxuICAgICAgICB0aGlzLkFkZFNob3dEZXN0aW5hdGlvblBlcm1pc3Npb25MaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5BZGRTaG93RGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgYWRkU291cmNlUGFydGljaXBhbnRPbkNoYW5nZShrZXkpIHtcclxuICAgIGxldCBzb3VyY2VJdGVtID0gdGhpcy5QYXJ0aWNpcGFudFR5cGVMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gcGFyc2VJbnQoaXRlbS5rZXkpID09IGtleTsgfSkubWFwKChpdGVtKSA9PiBpdGVtKVswXTtcclxuICAgIC8vY29uc29sZS5sb2coc291cmNlSXRlbSlcclxuXHJcbiAgICBzd2l0Y2ggKHNvdXJjZUl0ZW0udmFsdWUpIHtcclxuICAgICAgY2FzZSBcIlBlcm1pc3Npb25TZXRcIjpcclxuICAgICAgICB0aGlzLkFkZFNob3dTb3VyY2VQZXJtaXNzaW9uTGlzdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5BZGRTaG93U291cmNlVXNlckF1dG9Db21wbGV0ZSA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiVXNlclwiOlxyXG4gICAgICAgIHRoaXMuQWRkU2hvd1NvdXJjZVBlcm1pc3Npb25MaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5BZGRTaG93U291cmNlVXNlckF1dG9Db21wbGV0ZSA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9FZGl0IGltcGVyc29uYXRpb24gcnVsZSBmdW5jdGlvbnNcclxuICBzaG93RWRpdEltcGVyc29uYXRpb25Nb2RhbChpbXBlcnNvbmF0aW9uSUQ6IG51bWJlciwgaW1wZXJzb25hdGlvbklERW5jOiBzdHJpbmcsIGVkaXRJbXBlcnNvbmF0aW9uTW9kYWwpIHtcclxuICAgIHRoaXMuSW1wZXJzb25hdGlvbklkID0gaW1wZXJzb25hdGlvbklEO1xyXG5cclxuICAgIHRoaXMuSW1wZXJzb25hdGlvblJ1bGVTZXJ2aWNlLmdldEVkaXRJbXBlcnNvbmF0aW9uUnVsZShpbXBlcnNvbmF0aW9uSURFbmMpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCByZXN1bHRPYmogPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICBsZXQgaW1wZXJzb25hdGlvbiA9IHJlc3VsdE9iai5tb2RlbDtcclxuICAgICAgbGV0IGxpc3RzID0gcmVzdWx0T2JqLmxpc3RzO1xyXG4gICAgICB0aGlzLlBlcm1pc3Npb25TZXRMaXN0ID0gbGlzdHMucGVybWlzc2lvbkxpc3Q7XHJcbiAgICAgIHRoaXMuUGFydGljaXBhbnRUeXBlTGlzdCA9IGxpc3RzLnBhcnRpY2lwYW50VHlwZUxpc3Q7XHJcblxyXG4gICAgICB0aGlzLkVkaXRJbXBlcnNvbmF0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pXHJcblxyXG4gICAgICB0aGlzLkVkaXRJbXBlcnNvbmF0aW9uRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0SW1wZXJzb25hdGlvbkZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuRWRpdEltcGVyc29uYXRpb25Gb3JtXHJcbiAgICAgIHRoaXMuRWRpdEltcGVyc29uYXRpb25Gb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRFZGl0SW1wZXJzb25hdGlvblJ1bGVNb2RlbDtcclxuICAgICAgdGhpcy5FZGl0SW1wZXJzb25hdGlvbkZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdEltcGVyc29uYXRpb25SdWxlRnVuY3Rpb247XHJcbiAgICAgIHRoaXMuRWRpdEltcGVyc29uYXRpb25Gb3JtT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnRcclxuICAgICAgdGhpcy5FZGl0SW1wZXJzb25hdGlvbkZvcm1PcHRpb25zLlBhZ2luZ0FjdGlvbk1vZGUgPSBQYWdpbmdBY3Rpb25Nb2RlLlVwZGF0ZVxyXG5cclxuICAgICAgdGhpcy5FZGl0U2hvd0Rlc3RpbmF0aW9uUGVybWlzc2lvbkxpc3QgPSBmYWxzZTtcclxuICAgICAgdGhpcy5FZGl0U2hvd0Rlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLkVkaXRTaG93U291cmNlUGVybWlzc2lvbkxpc3QgPSBmYWxzZVxyXG4gICAgICB0aGlzLkVkaXRTaG93U291cmNlVXNlckF1dG9Db21wbGV0ZSA9IGZhbHNlXHJcblxyXG4gICAgICBpZiAoaW1wZXJzb25hdGlvbi5zb3VyY2VQYXJ0aWNpcGFudERUTy5wYXJ0aWNpcGFudFR5cGVJdGVtSUQgIT0gbnVsbCAmJiBpbXBlcnNvbmF0aW9uLmRlc3RpbmF0aW9uUGFydGljaXBhbnREVE8ucGFydGljaXBhbnRUeXBlSXRlbUlEKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0RGVzdGluYXRpb25QYXJ0aWNpcGFudE9uQ2hhbmdlKGltcGVyc29uYXRpb24uZGVzdGluYXRpb25QYXJ0aWNpcGFudERUTy5wYXJ0aWNpcGFudFR5cGVJdGVtSUQpO1xyXG4gICAgICAgIHRoaXMuZWRpdFNvdXJjZVBhcnRpY2lwYW50T25DaGFuZ2UoaW1wZXJzb25hdGlvbi5zb3VyY2VQYXJ0aWNpcGFudERUTy5wYXJ0aWNpcGFudFR5cGVJdGVtSUQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG5cclxuICAgICAgdGhpcy5Tb3VyY2VQYXJ0aWNpcGFudElkID0gaW1wZXJzb25hdGlvbi5zb3VyY2VQYXJ0aWNpcGFudERUTy5pZDtcclxuICAgICAgdGhpcy5EZXN0aW5hdGlvblBhcnRpY2lwYW50SWQgPSBpbXBlcnNvbmF0aW9uLmRlc3RpbmF0aW9uUGFydGljaXBhbnREVE8uaWQ7XHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVBhcnRpY2lwYW50VHlwZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0U291cmNlUGFydGljaXBhbnRUeXBlLk5hbWUgPSBcIkVkaXRTb3VyY2VQYXJ0aWNpcGFudFR5cGVcIlxyXG4gICAgICB0aGlzLkVkaXRTb3VyY2VQYXJ0aWNpcGFudFR5cGUuTGFiZWxLZXkgPSBcIlNvdXJjZVBhcnRpY2lwYW50VHlwZVwiXHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVBhcnRpY2lwYW50VHlwZS5TZWxlY3RlZEl0ZW1zID0gdGhpcy5QYXJ0aWNpcGFudFR5cGVMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gcGFyc2VJbnQoaXRlbS5rZXkpID09IGltcGVyc29uYXRpb24uc291cmNlUGFydGljaXBhbnREVE8ucGFydGljaXBhbnRUeXBlSXRlbUlEOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTtcclxuICAgICAgdGhpcy5FZGl0U291cmNlUGFydGljaXBhbnRUeXBlLkRhdGFTb3VyY2UgPSB0aGlzLlBhcnRpY2lwYW50VHlwZUxpc3RcclxuICAgICAgdGhpcy5FZGl0U291cmNlUGFydGljaXBhbnRUeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVBhcnRpY2lwYW50VHlwZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVBhcnRpY2lwYW50VHlwZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uUGFydGljaXBhbnRUeXBlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZS5OYW1lID0gXCJFZGl0RGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGVcIlxyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZS5MYWJlbEtleSA9IFwiRGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGVcIlxyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZS5TZWxlY3RlZEl0ZW1zID0gdGhpcy5QYXJ0aWNpcGFudFR5cGVMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gcGFyc2VJbnQoaXRlbS5rZXkpID09IGltcGVyc29uYXRpb24uZGVzdGluYXRpb25QYXJ0aWNpcGFudERUTy5wYXJ0aWNpcGFudFR5cGVJdGVtSUQ7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdOztcclxuICAgICAgdGhpcy5FZGl0RGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGUuRGF0YVNvdXJjZSA9IHRoaXMuUGFydGljaXBhbnRUeXBlTGlzdFxyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uUGFydGljaXBhbnRUeXBlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgbGV0IHNvdXJjZVBlcm1pc3Npb25TZXRTZWxlY3RlZEl0ZW07XHJcbiAgICAgIGxldCBzb3VyY2VVc2VyTW9kZWwgPSBuZXcgQXV0b2NvbXBsZXRlRFRPKCk7XHJcbiAgICAgIGlmIChpbXBlcnNvbmF0aW9uLnNvdXJjZVBhcnRpY2lwYW50RFRPLnBhcnRpY2lwYW50VHlwZUl0ZW1JRCA9PSBQYXJ0aWNpcGFudFR5cGUuVXNlcikge1xyXG4gICAgICAgIHNvdXJjZVVzZXJNb2RlbC5rZXkgPSBpbXBlcnNvbmF0aW9uLnNvdXJjZVBhcnRpY2lwYW50RFRPLnVzZXJJRFxyXG4gICAgICAgIHNvdXJjZVVzZXJNb2RlbC52YWx1ZSA9IGltcGVyc29uYXRpb24uc291cmNlUGFydGljaXBhbnREVE8ucGFydGljaXBhbnROYW1lU3RyO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHNvdXJjZVBlcm1pc3Npb25TZXRTZWxlY3RlZEl0ZW0gPSB0aGlzLlBlcm1pc3Npb25TZXRMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gcGFyc2VJbnQoaXRlbS5rZXkpID09IGltcGVyc29uYXRpb24uc291cmNlUGFydGljaXBhbnREVE8ucGVybWlzc2lvblNldElEOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLkVkaXRTb3VyY2VQZXJtaXNzaW9uU2V0TGlzdCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0U291cmNlUGVybWlzc2lvblNldExpc3QuTmFtZSA9IFwiRWRpdFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0XCJcclxuICAgICAgdGhpcy5FZGl0U291cmNlUGVybWlzc2lvblNldExpc3QuTGFiZWxLZXkgPSBcIlNvdXJjZVBlcm1pc3Npb25TZXRMaXN0XCJcclxuICAgICAgdGhpcy5FZGl0U291cmNlUGVybWlzc2lvblNldExpc3QuU2VsZWN0ZWRJdGVtcyA9IHNvdXJjZVBlcm1pc3Npb25TZXRTZWxlY3RlZEl0ZW07XHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0LkRhdGFTb3VyY2UgPSB0aGlzLlBlcm1pc3Npb25TZXRMaXN0XHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0LlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0LkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0U291cmNlUGVybWlzc2lvblNldExpc3QuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLkVkaXRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlID0gbmV3IEF1dG9jb21wbGV0ZU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0U291cmNlVXNlckF1dG9Db21wbGV0ZS5OYW1lID0gXCJFZGl0U291cmNlVXNlckF1dG9Db21wbGV0ZVwiO1xyXG4gICAgICB0aGlzLkVkaXRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlLkxhYmVsS2V5ID0gXCJVc2VyXCI7XHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVVzZXJBdXRvQ29tcGxldGUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLkVkaXRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlLlNlbGVjdGVkVmFsdWUgPSBzb3VyY2VVc2VyTW9kZWw7XHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVVzZXJBdXRvQ29tcGxldGUuQWN0aW9uVVJMID0gdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0QXBpVXJsKCkgKyB0aGlzLkFwaVVybCArIFwiQXV0b0NvbXBsZXRlVXNlclwiXHJcbiAgICAgIHRoaXMuRWRpdFNvdXJjZVVzZXJBdXRvQ29tcGxldGUuVmFsaWRhdGlvblRva2VuID0gdGhpcy5hdXRoU2VydmljZS5hdXRob3JpemF0aW9uSGVhZGVyVmFsdWUoKVxyXG5cclxuICAgICAgbGV0IGRlc3RpbmF0aW9uUGVybWlzc2lvblNldFNlbGVjdGVkSXRlbTtcclxuICAgICAgbGV0IGRlc3RpbmF0aW9uVXNlck1vZGVsID0gbmV3IEF1dG9jb21wbGV0ZURUTygpO1xyXG4gICAgICBpZiAoaW1wZXJzb25hdGlvbi5kZXN0aW5hdGlvblBhcnRpY2lwYW50RFRPLnBhcnRpY2lwYW50VHlwZUl0ZW1JRCA9PSBQYXJ0aWNpcGFudFR5cGUuVXNlcikge1xyXG4gICAgICAgIGRlc3RpbmF0aW9uVXNlck1vZGVsLmtleSA9IGltcGVyc29uYXRpb24uZGVzdGluYXRpb25QYXJ0aWNpcGFudERUTy51c2VySURcclxuICAgICAgICBkZXN0aW5hdGlvblVzZXJNb2RlbC52YWx1ZSA9IGltcGVyc29uYXRpb24uZGVzdGluYXRpb25QYXJ0aWNpcGFudERUTy5wYXJ0aWNpcGFudE5hbWVTdHI7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgZGVzdGluYXRpb25QZXJtaXNzaW9uU2V0U2VsZWN0ZWRJdGVtID0gdGhpcy5QZXJtaXNzaW9uU2V0TGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIHBhcnNlSW50KGl0ZW0ua2V5KSA9PSBpbXBlcnNvbmF0aW9uLmRlc3RpbmF0aW9uUGFydGljaXBhbnREVE8ucGVybWlzc2lvblNldElEOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0Lk5hbWUgPSBcIkVkaXREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0XCJcclxuICAgICAgdGhpcy5FZGl0RGVzdGluYXRpb25QZXJtaXNzaW9uU2V0TGlzdC5MYWJlbEtleSA9IFwiRGVzdGluYXRpb25QZXJtaXNzaW9uU2V0TGlzdFwiXHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3QuU2VsZWN0ZWRJdGVtcyA9IGRlc3RpbmF0aW9uUGVybWlzc2lvblNldFNlbGVjdGVkSXRlbVxyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0LkRhdGFTb3VyY2UgPSB0aGlzLlBlcm1pc3Npb25TZXRMaXN0XHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3QuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0RGVzdGluYXRpb25QZXJtaXNzaW9uU2V0TGlzdC5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3QuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG5cclxuICAgICAgdGhpcy5FZGl0RGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlID0gbmV3IEF1dG9jb21wbGV0ZU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0RGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlLk5hbWUgPSBcIkVkaXREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGVcIjtcclxuICAgICAgdGhpcy5FZGl0RGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlLkxhYmVsS2V5ID0gXCJVc2VyXCI7XHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0RGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlLlNlbGVjdGVkVmFsdWUgPSBkZXN0aW5hdGlvblVzZXJNb2RlbFxyXG4gICAgICB0aGlzLkVkaXREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUuQWN0aW9uVVJMID0gdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0QXBpVXJsKCkgKyB0aGlzLkFwaVVybCArIFwiQXV0b0NvbXBsZXRlVXNlclwiXHJcbiAgICAgIHRoaXMuRWRpdERlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZS5WYWxpZGF0aW9uVG9rZW4gPSB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhvcml6YXRpb25IZWFkZXJWYWx1ZSgpXHJcblxyXG4gICAgICB0aGlzLkVkaXRJc0FjdGl2ZSA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0SXNBY3RpdmUuTmFtZSA9IFwiRWRpdElzQWN0aXZlXCJcclxuICAgICAgdGhpcy5FZGl0SXNBY3RpdmUuTGFiZWxLZXkgPSBcIkFjdGl2ZVwiXHJcbiAgICAgIHRoaXMuRWRpdElzQWN0aXZlLklzRGlzYWJsZWQgPSB0cnVlXHJcbiAgICAgIHRoaXMuRWRpdElzQWN0aXZlLlZhbHVlID0gdHJ1ZVxyXG5cclxuICAgICAgdGhpcy5FZGl0RXhwaXJlc0F0ID0gbmV3IERhdGVQaWNrZXJPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdEV4cGlyZXNBdC5OYW1lID0gXCJFZGl0RXhwaXJlc0F0XCJcclxuICAgICAgdGhpcy5FZGl0RXhwaXJlc0F0LkxhYmVsS2V5ID0gXCJFeHBpcmVzQXRcIlxyXG4gICAgICB0aGlzLkVkaXRFeHBpcmVzQXQuSXNSZXF1aXJlZCA9IHRydWVcclxuICAgICAgdGhpcy5FZGl0RXhwaXJlc0F0LlZhbHVlID0gaW1wZXJzb25hdGlvbi5leHBpcmVzQXRcclxuICAgICAgdGhpcy5FZGl0RXhwaXJlc0F0LlN0YXJ0VmlldyA9IFN0YXJ0Vmlldy5Nb250aFxyXG4gICAgICB0aGlzLkVkaXRFeHBpcmVzQXQuUGlja2VyVHlwZSA9IFBpY2tlclR5cGUuQ2FsZW5kYXJcclxuICAgICAgdGhpcy5FZGl0RXhwaXJlc0F0LlNlbGVjdE1vZGUgPSBTZWxlY3RNb2RlLlNpbmdsZVxyXG5cclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihlZGl0SW1wZXJzb25hdGlvbk1vZGFsKTtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBnZXRFZGl0SW1wZXJzb25hdGlvblJ1bGVNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5FZGl0SW1wZXJzb25hdGlvbkZvcm0udmFsdWU7XHJcblxyXG4gICAgbGV0IEVkaXRNb2RlbDogSW1wZXJzb25hdGlvblJ1bGVNb2RlbCA9IG5ldyBJbXBlcnNvbmF0aW9uUnVsZU1vZGVsKCk7XHJcbiAgICBFZGl0TW9kZWwuSUQgPSB0aGlzLkltcGVyc29uYXRpb25JZFxyXG4gICAgRWRpdE1vZGVsLkRlc3RpbmF0aW9uUGFydGljaXBhbnREVE8uSUQgPSB0aGlzLkRlc3RpbmF0aW9uUGFydGljaXBhbnRJZFxyXG4gICAgRWRpdE1vZGVsLlNvdXJjZVBhcnRpY2lwYW50RFRPLklEID0gdGhpcy5Tb3VyY2VQYXJ0aWNpcGFudElkXHJcbiAgICBFZGl0TW9kZWwuU291cmNlUGFydGljaXBhbnREVE8uUGFydGljaXBhbnRUeXBlSXRlbUlEID0gTnVtYmVyKFJlc3VsdE1vZGVsLkVkaXRTb3VyY2VQYXJ0aWNpcGFudFR5cGUpXHJcbiAgICBFZGl0TW9kZWwuRGVzdGluYXRpb25QYXJ0aWNpcGFudERUTy5QYXJ0aWNpcGFudFR5cGVJdGVtSUQgPSBOdW1iZXIoUmVzdWx0TW9kZWwuRWRpdERlc3RpbmF0aW9uUGFydGljaXBhbnRUeXBlKVxyXG4gICAgRWRpdE1vZGVsLkV4cGlyZXNBdCA9IFJlc3VsdE1vZGVsLkVkaXRFeHBpcmVzQXRcclxuICAgIEVkaXRNb2RlbC5Jc0FjdGl2ZSA9IFJlc3VsdE1vZGVsLkVkaXRJc0FjdGl2ZVxyXG4gICAgY29uc29sZS5sb2coXCJEYXRhOlwiKTtcclxuICAgIGNvbnNvbGUubG9nKFJlc3VsdE1vZGVsKTtcclxuICAgIGlmIChFZGl0TW9kZWwuRGVzdGluYXRpb25QYXJ0aWNpcGFudERUTy5QYXJ0aWNpcGFudFR5cGVJdGVtSUQgPT0gUGFydGljaXBhbnRUeXBlLlVzZXIpXHJcbiAgICAgIEVkaXRNb2RlbC5EZXN0aW5hdGlvblBhcnRpY2lwYW50RFRPLlVzZXJJRCA9IE51bWJlcihSZXN1bHRNb2RlbC5FZGl0RGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlLmtleSlcclxuICAgIGVsc2VcclxuICAgICAgRWRpdE1vZGVsLkRlc3RpbmF0aW9uUGFydGljaXBhbnREVE8uUGVybWlzc2lvblNldElEID0gTnVtYmVyKFJlc3VsdE1vZGVsLkVkaXREZXN0aW5hdGlvblBlcm1pc3Npb25TZXRMaXN0KVxyXG4gICAgaWYgKEVkaXRNb2RlbC5Tb3VyY2VQYXJ0aWNpcGFudERUTy5QYXJ0aWNpcGFudFR5cGVJdGVtSUQgPT0gUGFydGljaXBhbnRUeXBlLlVzZXIpXHJcbiAgICAgIEVkaXRNb2RlbC5Tb3VyY2VQYXJ0aWNpcGFudERUTy5Vc2VySUQgPSBOdW1iZXIoUmVzdWx0TW9kZWwuRWRpdFNvdXJjZVVzZXJBdXRvQ29tcGxldGUua2V5KVxyXG4gICAgZWxzZVxyXG4gICAgICBFZGl0TW9kZWwuU291cmNlUGFydGljaXBhbnREVE8uUGVybWlzc2lvblNldElEID0gTnVtYmVyKFJlc3VsdE1vZGVsLkVkaXRTb3VyY2VQZXJtaXNzaW9uU2V0TGlzdClcclxuICAgIHBhcmFtQXJyYXkucHVzaChFZGl0TW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0SW1wZXJzb25hdGlvblJ1bGVGdW5jdGlvbiA9IChFZGl0TW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuSW1wZXJzb25hdGlvblJ1bGVTZXJ2aWNlLmVkaXRJbXBlcnNvbmF0aW9uUnVsZShFZGl0TW9kZWwpXHJcbiAgfVxyXG5cclxuICBlZGl0RGVzdGluYXRpb25QYXJ0aWNpcGFudE9uQ2hhbmdlKGtleSkge1xyXG4gICAgbGV0IHNvdXJjZUl0ZW0gPSB0aGlzLlBhcnRpY2lwYW50VHlwZUxpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBwYXJzZUludChpdGVtLmtleSkgPT0ga2V5OyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0pWzBdO1xyXG4gICAgc3dpdGNoIChzb3VyY2VJdGVtLnZhbHVlKSB7XHJcbiAgICAgIGNhc2UgXCJQZXJtaXNzaW9uU2V0XCI6XHJcbiAgICAgICAgdGhpcy5FZGl0U2hvd0Rlc3RpbmF0aW9uUGVybWlzc2lvbkxpc3QgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuRWRpdFNob3dEZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIlVzZXJcIjpcclxuICAgICAgICB0aGlzLkVkaXRTaG93RGVzdGluYXRpb25QZXJtaXNzaW9uTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuRWRpdFNob3dEZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGUgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGVkaXRTb3VyY2VQYXJ0aWNpcGFudE9uQ2hhbmdlKGtleSkge1xyXG4gICAgbGV0IHNvdXJjZUl0ZW0gPSB0aGlzLlBhcnRpY2lwYW50VHlwZUxpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBwYXJzZUludChpdGVtLmtleSkgPT0ga2V5OyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0pWzBdO1xyXG4gICAgc3dpdGNoIChzb3VyY2VJdGVtLnZhbHVlKSB7XHJcbiAgICAgIGNhc2UgXCJQZXJtaXNzaW9uU2V0XCI6XHJcbiAgICAgICAgdGhpcy5FZGl0U2hvd1NvdXJjZVBlcm1pc3Npb25MaXN0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLkVkaXRTaG93U291cmNlVXNlckF1dG9Db21wbGV0ZSA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiVXNlclwiOlxyXG4gICAgICAgIHRoaXMuRWRpdFNob3dTb3VyY2VQZXJtaXNzaW9uTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuRWRpdFNob3dTb3VyY2VVc2VyQXV0b0NvbXBsZXRlID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vRGVsZXRlIEltcGVyc29uYXRpb25SdWxlXHJcbiAgc2hvd0RlbGV0ZUltcGVyc29uYXRpb25Nb2RhbChpbXBlcnNvbmF0aW9uUnVsZUlEOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZGVsZXRlSW1wZXJzb25hdGlvblJ1bGVJZCA9IGltcGVyc29uYXRpb25SdWxlSUQ7XHJcblxyXG4gICAgLy9hcnJheSBzZW50IHRvIHNlcnZpY2UgZnVuY3Rpb25cclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgcGFyYW1BcnJheS5wdXNoKHRoaXMuZGVsZXRlSW1wZXJzb25hdGlvblJ1bGVJZCk7XHJcblxyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zID0gbmV3IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucygpO1xyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZGVsZXRlSW1wZXJzb25hdGlvbjtcclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5TZXJ2aWNlU3VibWl0TW9kZWwgPSBwYXJhbUFycmF5O1xyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudDtcclxuXHJcbiAgICB0aGlzLmRlbGV0ZUNvbnRyb2xMb2FkZWQgPSB0cnVlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuQ29uZmlybWF0aW9uTW9kYWxDb250cm9sLnNob3dNb2RhbCgpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUltcGVyc29uYXRpb24gPSAoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5JbXBlcnNvbmF0aW9uUnVsZVNlcnZpY2UuZGVsZXRlSW1wZXJzb25hdGlvblJ1bGUoaWQpO1xyXG4gIH1cclxuXHJcbiAgLy9PbiBkZXN0cm95XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcXVlc3RIYW5kbGVyU2VydmljZS5kZXN0cm95SGFuZGxlcigpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGJsb2NrLXVpPjwvYmxvY2stdWk+XHJcbjwhLS0gUGFnZSBDb250ZW50IC0tPlxyXG48ZGl2ICpuZ0lmPVwiU2hvd1BhZ2VDb250ZW50XCIgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWN1c3RvbS1oXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtNVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiICpuZ0lmPVwiSXNGaWx0ZXJMb2FkZWRcIj5cclxuICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIkltcGVyc29uYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICAgPCEtLShPbkNoYW5nZSk9XCJzZWFyY2hDbGllbnRTaWRlKCRldmVudClcIiAtLT5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggIFtvcHRpb25zXT1cInNlYXJjaFRleHRCb3hcIiBbZ3JvdXBdPVwiSW1wZXJzb25hdGlvbkZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8L2Zvcm0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgPCEtLSBiZWdpbjo6TWVudSAtLT5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIiB0aXRsZT1cIkFkZFwiIChjbGljayk9XCJzaG93QWRkSW1wZXJzb25hdGlvbk1vZGFsKEFkZEltcGVyc29uYXRpb25Nb2RhbClcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBsdXMgbWUtMVwiPjwvaT5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZFwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDwhLS0gZW5kOjpNZW51IC0tPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgPCEtLWJlZ2luOjpQZXJtaXNzaW9uIGxpc3QtLT5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlclwiPlxyXG4gICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPiBbe3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUGFydGljaXBhbnRUeXBlXCIpfX1de3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU291cmNlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+IFt7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQYXJ0aWNpcGFudFR5cGVcIil9fV17e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZXN0aW5hdGlvblwiKX19PC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkV4cGlyZXNBdFwiKX19PC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGl2ZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy01MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aW9uXCIpfX08L3RoPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgIDx0Ym9keSBpZD1cImxpc3RpbmdDb250YWluZXJcIiBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG5cclxuICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBJbXBlcnNvbmF0aW9uIG9mIGNsaWVudFNpZGVQYWdpbmdSZXN1bHRcIj5cclxuXHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhcmtcIj5cclxuICAgICAgICAgICAgICAgICAgW3t7SW1wZXJzb25hdGlvbi5zb3VyY2VQYXJ0aWNpcGFudERUTy5wYXJ0aWNpcGFudFR5cGVJdGVtTmFtZVN0cn19XSB7e0ltcGVyc29uYXRpb24uc291cmNlUGFydGljaXBhbnREVE8ucGFydGljaXBhbnROYW1lU3RyfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+ICBbe3tJbXBlcnNvbmF0aW9uLmRlc3RpbmF0aW9uUGFydGljaXBhbnREVE8ucGFydGljaXBhbnRUeXBlSXRlbU5hbWVTdHJ9fV0ge3tJbXBlcnNvbmF0aW9uLmRlc3RpbmF0aW9uUGFydGljaXBhbnREVE8ucGFydGljaXBhbnROYW1lU3RyfX08L3RkPlxyXG5cclxuICAgICAgICAgICAgICA8dGQ+e3tJbXBlcnNvbmF0aW9uLmV4cGlyZXNBdH19PC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+e3tJbXBlcnNvbmF0aW9uLmlzQWN0aXZlfX08L3RkPlxyXG5cclxuICAgICAgICAgICAgICA8dGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1saWdodCBidG4tYWN0aXZlLWxpZ2h0LXByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVsbGlwc2lzLWhcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wLWl0ZW0gcHgtM1wiIG5nYkRyb3Bkb3duSXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RWRpdEltcGVyc29uYXRpb25Nb2RhbChJbXBlcnNvbmF0aW9uLmlkLEltcGVyc29uYXRpb24uaWRFbmNyeXB0ZWQsRWRpdEltcGVyc29uYXRpb25Nb2RhbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFZGl0XCIpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIG5nYkRyb3Bkb3duSXRlbSBjbGFzcz1cImRyb3AtaXRlbSBweC0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0RlbGV0ZUltcGVyc29uYXRpb25Nb2RhbChJbXBlcnNvbmF0aW9uLmlkRW5jcnlwdGVkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wLWxpbmsgcHgtM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlbGV0ZVwiKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDx0ciAqbmdJZj1cImNsaWVudFNpZGVQYWdpbmdSZXN1bHQubGVuZ3RoID09IDBcIj5cclxuICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjVcIj5cclxuICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcblxyXG4gICAgICAgIDwhLS1lbmQ6OlBlcm1pc3Npb24gbGlzdC0tPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMFwiPlxyXG4gICAgICA8QkJTRi1QYWdpbmcgKEl0ZW1zKT1cInNldEltcGVyc29uYXRpb25MaXN0UmVzdWx0KCRldmVudClcIiAqbmdJZj1cIklzRmlsdGVyTG9hZGVkXCJcclxuICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIkltcGVyc29uYXRpb25QYWdpbmdcIiBbZ3JvdXBdPVwiSW1wZXJzb25hdGlvbkZvcm1cIiAjSW1wZXJzb25hdGlvblBhZ2luZ1ZpZXdFbGVtZW50PlxyXG4gICAgICA8L0JCU0YtUGFnaW5nPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuPCEtLSBBZGQgTW9kYWwgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjQWRkSW1wZXJzb25hdGlvbk1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGRcIil9fSB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJJbXBlcnNvbmF0aW9uUnVsZVwiKX19PC9oMT5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiQWRkSW1wZXJzb25hdGlvbkZvcm1PcHRpb25zXCI+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkFkZFNvdXJjZVBhcnRpY2lwYW50VHlwZVwiIChPbkNoYW5nZSk9XCJhZGRTb3VyY2VQYXJ0aWNpcGFudE9uQ2hhbmdlKCRldmVudClcIiBbZ3JvdXBdPVwiQWRkSW1wZXJzb25hdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkFkZFNvdXJjZVBlcm1pc3Npb25TZXRMaXN0XCIgKm5nSWY9XCJBZGRTaG93U291cmNlUGVybWlzc2lvbkxpc3RcIiBbZ3JvdXBdPVwiQWRkSW1wZXJzb25hdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtQXV0b2NvbXBsZXRlVGV4dEJveCBbb3B0aW9uc109XCJBZGRTb3VyY2VVc2VyQXV0b0NvbXBsZXRlXCIgKm5nSWY9XCJBZGRTaG93U291cmNlVXNlckF1dG9Db21wbGV0ZVwiIFtncm91cF09XCJBZGRJbXBlcnNvbmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLUF1dG9jb21wbGV0ZVRleHRCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJBZGREZXN0aW5hdGlvblBhcnRpY2lwYW50VHlwZVwiIChPbkNoYW5nZSk9XCJhZGREZXN0aW5hdGlvblBhcnRpY2lwYW50T25DaGFuZ2UoJGV2ZW50KVwiIFtncm91cF09XCJBZGRJbXBlcnNvbmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiQWRkRGVzdGluYXRpb25QZXJtaXNzaW9uU2V0TGlzdFwiICpuZ0lmPVwiQWRkU2hvd0Rlc3RpbmF0aW9uUGVybWlzc2lvbkxpc3RcIiBbZ3JvdXBdPVwiQWRkSW1wZXJzb25hdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtQXV0b2NvbXBsZXRlVGV4dEJveCBbb3B0aW9uc109XCJBZGREZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGVcIiAqbmdJZj1cIkFkZFNob3dEZXN0aW5hdGlvblVzZXJBdXRvQ29tcGxldGVcIiBbZ3JvdXBdPVwiQWRkSW1wZXJzb25hdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1BdXRvY29tcGxldGVUZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cIkFkZElzQWN0aXZlXCIgW2dyb3VwXT1cIkFkZEltcGVyc29uYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURhdGVUaW1lUGlja2VyIFtvcHRpb25zXT1cIkFkZEV4cGlyZXNBdFwiIFtncm91cF09XCJBZGRJbXBlcnNvbmF0aW9uRm9ybVwiPlxyXG5cclxuICAgICAgICAgIDwvQkJTRi1EYXRlVGltZVBpY2tlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBDbG9zZUltcGVyc29uYXRpb25Nb2RhbCBpZD1cIkNsb3NlSW1wZXJzb25hdGlvbk1vZGFsXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBtZS0zIGJ0bi1zbVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDYW5jZWxMYWJlbFwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX08L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L0JCU0YtRm9ybT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS1FZGl0IE1vZGFsLS0+XHJcbjxuZy10ZW1wbGF0ZSAjRWRpdEltcGVyc29uYXRpb25Nb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRWRpdFwiKX19IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkltcGVyc29uYXRpb25SdWxlXCIpfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIkVkaXRJbXBlcnNvbmF0aW9uRm9ybU9wdGlvbnNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJFZGl0U291cmNlUGFydGljaXBhbnRUeXBlXCIgKE9uQ2hhbmdlKT1cImVkaXRTb3VyY2VQYXJ0aWNpcGFudE9uQ2hhbmdlKCRldmVudClcIiBbZ3JvdXBdPVwiRWRpdEltcGVyc29uYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJFZGl0U291cmNlUGVybWlzc2lvblNldExpc3RcIiAqbmdJZj1cIkVkaXRTaG93U291cmNlUGVybWlzc2lvbkxpc3RcIiBbZ3JvdXBdPVwiRWRpdEltcGVyc29uYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLUF1dG9jb21wbGV0ZVRleHRCb3ggW29wdGlvbnNdPVwiRWRpdFNvdXJjZVVzZXJBdXRvQ29tcGxldGVcIiAqbmdJZj1cIkVkaXRTaG93U291cmNlVXNlckF1dG9Db21wbGV0ZVwiIFtncm91cF09XCJFZGl0SW1wZXJzb25hdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1BdXRvY29tcGxldGVUZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJFZGl0RGVzdGluYXRpb25QYXJ0aWNpcGFudFR5cGVcIiAoT25DaGFuZ2UpPVwiZWRpdERlc3RpbmF0aW9uUGFydGljaXBhbnRPbkNoYW5nZSgkZXZlbnQpXCIgW2dyb3VwXT1cIkVkaXRJbXBlcnNvbmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdERlc3RpbmF0aW9uUGVybWlzc2lvblNldExpc3RcIiAqbmdJZj1cIkVkaXRTaG93RGVzdGluYXRpb25QZXJtaXNzaW9uTGlzdFwiIFtncm91cF09XCJFZGl0SW1wZXJzb25hdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtQXV0b2NvbXBsZXRlVGV4dEJveCBbb3B0aW9uc109XCJFZGl0RGVzdGluYXRpb25Vc2VyQXV0b0NvbXBsZXRlXCIgKm5nSWY9XCJFZGl0U2hvd0Rlc3RpbmF0aW9uVXNlckF1dG9Db21wbGV0ZVwiIFtncm91cF09XCJFZGl0SW1wZXJzb25hdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1BdXRvY29tcGxldGVUZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cIkVkaXRJc0FjdGl2ZVwiIFtncm91cF09XCJFZGl0SW1wZXJzb25hdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRGF0ZVRpbWVQaWNrZXIgW29wdGlvbnNdPVwiRWRpdEV4cGlyZXNBdFwiIFtncm91cF09XCJFZGl0SW1wZXJzb25hdGlvbkZvcm1cIj5cclxuXHJcbiAgICAgICAgICA8L0JCU0YtRGF0ZVRpbWVQaWNrZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgIDxidXR0b24gI0Nsb3NlRWRpdEltcGVyc29uYXRpb25Nb2RhbCBpZD1cIkNsb3NlRWRpdEltcGVyc29uYXRpb25Nb2RhbFwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbSAgbWUtM1wiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9CQlNGLUZvcm0+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuPCEtLWRlbGV0ZSBNb2RhbC0tPlxyXG48QkJTRi1Db25maXJtYXRpb25Nb2RhbCAqbmdJZj1cImRlbGV0ZUNvbnRyb2xMb2FkZWRcIiBbb3B0aW9uc109XCJEZWxldGVDb25maXJtYXRpb25PcHRpb25zXCIgaWQ9XCJDb25maXJtYXRpb25Nb2RhbENvbnRyb2xcIiAjQ29uZmlybWF0aW9uTW9kYWxDb250cm9sPjwvQkJTRi1Db25maXJtYXRpb25Nb2RhbD5cclxuXHJcbiJdfQ==
|