@bnsights/bbsf-admin-portal 1.1.74 → 1.1.76
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/README.md +10 -0
- package/esm2022/lib/Pages/anonymouslayout/upload-license/upload-license.component.mjs +3 -3
- package/esm2022/lib/Pages/configurations/configuration/configuration.component.mjs +3 -3
- package/esm2022/lib/Pages/departments/department-info/department-info.component.mjs +3 -3
- package/esm2022/lib/Pages/documents/document-master-layouts/document-master-layouts.component.mjs +3 -3
- package/esm2022/lib/Pages/documents/document-templates/document-templates.component.mjs +3 -3
- package/esm2022/lib/Pages/helpCenter/help-center/help-center.component.mjs +3 -3
- package/esm2022/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.mjs +3 -3
- package/esm2022/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.mjs +3 -3
- package/esm2022/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.mjs +3 -3
- package/esm2022/lib/Pages/license/license/license.component.mjs +3 -3
- package/esm2022/lib/Pages/localizations/localizations.component.mjs +3 -3
- package/esm2022/lib/Pages/lookups/lookup/lookup.component.mjs +3 -3
- package/esm2022/lib/Pages/lookups/lookup-group/lookup-group.component.mjs +3 -3
- package/esm2022/lib/Pages/lookups/lookup-item/lookup-item.component.mjs +3 -3
- package/esm2022/lib/Pages/notifications/templates/templates.component.mjs +3 -3
- package/esm2022/lib/Pages/providers/provider/provider.component.mjs +3 -3
- package/esm2022/lib/Pages/publicHolidays/public-holiday/public-holiday.component.mjs +3 -3
- package/esm2022/lib/Pages/roles/permission-set-info/permission-set-info.component.mjs +3 -3
- package/esm2022/lib/Pages/sectors/sector/sector.component.mjs +3 -3
- package/esm2022/lib/Pages/sectors/sector-info/sector-info.component.mjs +3 -3
- package/esm2022/lib/Pages/sectors/sectors-department-info/sectors-department-info.component.mjs +3 -3
- package/esm2022/lib/Pages/users/users.component.mjs +3 -3
- package/esm2022/lib/Pages/workflows/instance-info/instance-info.component.mjs +3 -3
- package/esm2022/lib/Pages/workflows/workflow/workflow.component.mjs +3 -3
- package/fesm2022/bnsights-bbsf-admin-portal.mjs +48 -48
- package/fesm2022/bnsights-bbsf-admin-portal.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -848,11 +848,11 @@ export class ConfigurationComponent {
|
|
|
848
848
|
this.requestHandlerService.destroyHandler();
|
|
849
849
|
}
|
|
850
850
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConfigurationComponent, deps: [{ token: i1.AuthService }, { token: i2.PageInfoService }, { token: i1.UtilityService }, { token: i1.BBSFTranslateService }, { token: i1.EnvironmentService }, { token: i3.ConfigurationsService }, { token: i4.NgbModal }, { token: i1.RequestHandlerService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
851
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ConfigurationComponent, selector: "lib-configuration", viewQueries: [{ propertyName: "pagingElement", first: true, predicate: ["ConfigurationPagingViewElement"], descendants: true }, { propertyName: "organizationDDL", first: true, predicate: ["organizationDDL"], descendants: true }, { propertyName: "ConfirmationModalControl", first: true, predicate: ["ConfirmationModalControl"], descendants: true }, { propertyName: "reloadConfirmationModalControl", first: true, predicate: ["ReloadConfirmationModalControl"], descendants: true }], ngImport: i0, template: "<block-ui></block-ui>\r\n<!-- Page Content -->\r\n<div class=\"container-fluid\">\r\n <div *ngIf=\"showPageContent\">\r\n <!-- begin::Header -->\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]=\"ConfigurationForm\">\r\n <BBSF-TextBox [options]=\"searchTextBox\" [group]=\"ConfigurationForm\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div\r\n *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\"\r\n ngbDropdown\r\n class=\"d-inline-block\"\r\n [ngStyle]=\"{ display: showPageContent == true ? 'block' : 'none' }\">\r\n <button\r\n (click)=\"loadLists()\"\r\n ngbDropdownToggle\r\n href=\"javascript:;\"\r\n type=\"button\"\r\n class=\"btn btn-sm btn-light-primary me-3\"\r\n id=\"FiltersDropdown\"\r\n title=\"Filter\">\r\n <i class=\"fas fa-filter me-1\"></i>\r\n {{ utilityService.getResourceValue('Filter') }}\r\n </button>\r\n <div\r\n *ngIf=\"isFilterLoaded\"\r\n ngbDropdownMenu\r\n aria-labelledby=\"FiltersDropdown\"\r\n class=\"filter-container menu menu-sub menu-sub-dropdown menu-column menu-rounded menu-gray-800 menu-state-bg-light-primary w-250px w-md-500px fw-bold py-3 dropdown-menu dropdown-menu-right\">\r\n <form [formGroup]=\"ConfigurationForm\">\r\n <div class=\"px-7 py-5\">\r\n <div class=\"row\" *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\">\r\n <div>\r\n <BBSF-DropdownList #organizationDDL [options]=\"organizationOptions\" [group]=\"ConfigurationForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-end\">\r\n <button class=\"btn btn-light btn-active-light-primary pv-reset btn-sm\" name=\"configurationResetButton\">\r\n {{ utilityService.getResourceValue('Reset') }}\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n\r\n <!-- begin::Menu -->\r\n <button id=\"btnActivate\" type=\"button\" class=\"btn btn-sm btn-light-primary me-3\" (click)=\"showReloadResourceModal()\">\r\n <i class=\"fas fa-sync-alt me-1\"></i>\r\n {{ utilityService.getResourceValue('Reload') }}\r\n </button>\r\n\r\n <button type=\"button\" class=\"btn btn-sm btn-primary\" title=\"Add\" (click)=\"showAddConfigurationModal(AddConfigurationModal)\">\r\n <i class=\"fas fa-plus me-1\"></i>\r\n {{ utilityService.getResourceValue('Add') }}\r\n </button>\r\n <!-- end::Menu -->\r\n </div>\r\n </div>\r\n <!-- end::Header -->\r\n <!-- begin::Body -->\r\n <div class=\"card-body py-3\">\r\n <!-- begin::Table container -->\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\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 <th class=\"min-w-150px\">{{ utilityService.getResourceValue('Key') }}</th>\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('Value') }}</th>\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('Type') }}</th>\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('Scope') }}</th>\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('UserPermissionSet') }}</th>\r\n <th class=\"min-w-150\" *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\">{{ utilityService.getResourceValue('Organization') }}</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 <tr *ngFor=\"let Configuration of clientSidePagingResult\">\r\n <td class=\"text-dark\">{{ Configuration.key }}</td>\r\n <td>{{ Configuration.value }}</td>\r\n <td>{{ Configuration.valueTypeNameStr }}</td>\r\n <td>{{ Configuration.scopeName }}</td>\r\n <td>{{ Configuration.permissionSetName }}{{ Configuration.userName }}</td>\r\n <td *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\">{{ Configuration.organizationName ?? '-' }}</td>\r\n <td>\r\n <div>\r\n <button mat-button [matMenuTriggerFor]=\"config\" 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 class=\"mat-menu-content\" #config=\"matMenu\">\r\n <button\r\n class=\"drop-item px-3\"\r\n ngbDropdownItem\r\n (click)=\"showEditConfigurationModal(Configuration.iD_GUID, EditConfigurationModal)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('Edit') }}</span>\r\n </button>\r\n <button ngbDropdownItem class=\"drop-item px-3\" id=\"btnResetPass\" (click)=\"showDeleteConfigurationModal(Configuration.iD_GUID)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('Delete') }}</span>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"clientSidePagingResult.length == 0\">\r\n <td colspan=\"6\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <!-- end::Table -->\r\n </div>\r\n <!-- end::Table container -->\r\n </div>\r\n <!-- begin paging-->\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging\r\n (Items)=\"setConfigurationListResult($event)\"\r\n *ngIf=\"isFilterLoaded\"\r\n [options]=\"ConfigurationPaging\"\r\n [group]=\"ConfigurationForm\"\r\n #ConfigurationPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n <!-- End paging-->\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- #region Add modal -->\r\n<ng-template #AddConfigurationModal 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('AddConfiguration') }}</h1>\r\n </div>\r\n\r\n <BBSF-Form [options]=\"addConfigurationFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"Key\" [group]=\"addConfigurationForm\"> </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"loadJsonToggle\" [group]=\"addConfigurationForm\"> </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Category\" [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Scope\" (onChange)=\"ChangeScopeValue($event)\" [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\" [options]=\"addOrganization\" [group]=\"addConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"PermissionSet\" *ngIf=\"ShowPermissionList\" [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"User\" *ngIf=\"ShowUsersList\" [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Type\" (onChange)=\"ChangeTypeValue($event)\" [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"Value\" *ngIf=\"ShowValueAndDefaultValue\" [group]=\"addConfigurationForm\"> </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"DefaultValue\" *ngIf=\"ShowValueAndDefaultValue\" [group]=\"addConfigurationForm\"> </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"ValueToggel\" *ngIf=\"ShowValueToggleAndDefaultValue\" [group]=\"addConfigurationForm\"> </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"DefaultValueToggel\" *ngIf=\"ShowValueToggleAndDefaultValue\" [group]=\"addConfigurationForm\"> </BBSF-Toggleslide>\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]=\"Source\" *ngIf=\"ShowDropDownSource\" (onChange)=\"ChangeSource($event)\" [group]=\"addConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"ShowSourceFunctionPath\">\r\n <div class=\"row\">\r\n <div class=\"col-md-9\">\r\n <BBSF-TextBox [options]=\"FunctionSourcePath\" [group]=\"addConfigurationForm\" (onChange)=\"changeSourceFunction()\"> </BBSF-TextBox>\r\n <div *ngIf=\"showFunctionNotFoundError\" class=\"text-danger\">\r\n {{ utilityService.getResourceValue('SourceFunctionNotFound') }}\r\n </div>\r\n </div>\r\n <div class=\"col-md-3 d-flex justify-content-end align-items-center mb-4\">\r\n <button type=\"button\" class=\"btn btn-sm btn-secondary\" (click)=\"SearchForFunction(true)\">\r\n <span class=\"float-right\"><i class=\"fas fa-search\"></i>{{ utilityService.getResourceValue('Search') }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"SourceFuncValue\" *ngIf=\"ShowSourceFunctionData\" [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"SourceFuncDefaultValue\" *ngIf=\"ShowSourceFunctionData\" [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"ShowLookupList\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Lookup\" (onChange)=\"ChangeLookup($event, true)\" [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"LookupValue\" *ngIf=\"ShowLookupItemsList\" [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"LookupDefaultValue\" *ngIf=\"ShowLookupItemsList\" [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-center pt-7\">\r\n <button #CloseConfigurationModal id=\"CloseConfigurationModal\" type=\"button\" class=\"btn btn-light me-3 btn-sm\" (click)=\"modal.dismiss()\">\r\n {{ utilityService.getResourceValue('CancelLabel') }}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\" [disabled]=\"sourceFunctionDataNotLoaded\">\r\n {{ utilityService.getResourceValue('SaveLabel') }}\r\n </button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n<!-- #endregion -->\r\n\r\n<!-- #region edit modal -->\r\n<ng-template #EditConfigurationModal 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('Configuration') }}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"EditConfigurationFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"EditKey\" [group]=\"EditConfigurationForm\"> </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"editLoadJsonToggle\" [group]=\"EditConfigurationForm\"> </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\" [options]=\"editOrganization\" [group]=\"EditConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditPermissionSet\" *ngIf=\"ShowPermissionList\" [group]=\"EditConfigurationForm\"> </BBSF-DropdownList>\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]=\"EditUser\" *ngIf=\"ShowUsersList\" [group]=\"EditConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"EditTextValue\" *ngIf=\"ShowValueAndDefaultValue\" [group]=\"EditConfigurationForm\"> </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"EditTextDefaultValue\" *ngIf=\"ShowValueAndDefaultValue\" [group]=\"EditConfigurationForm\"> </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"EditValueToggele\" *ngIf=\"ShowValueToggleAndDefaultValue\" [group]=\"EditConfigurationForm\"> </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"EditDefaultValueToggele\" *ngIf=\"ShowValueToggleAndDefaultValue\" [group]=\"EditConfigurationForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"ShowSourceFunctionPath\">\r\n <div class=\"col-md-9\">\r\n <BBSF-TextBox [options]=\"EditFunctionSourcePath\" [group]=\"EditConfigurationForm\" (onChange)=\"changeSourceFunction()\"> </BBSF-TextBox>\r\n <div *ngIf=\"showFunctionNotFoundError\" class=\"text-danger\">\r\n {{ utilityService.getResourceValue('SourceFunctionNotFound') }}\r\n </div>\r\n </div>\r\n <div class=\"col-md-3 d-flex justify-content-end align-items-center mb-4\">\r\n <button type=\"button\" class=\"btn btn-sm btn-secondary\" (click)=\"SearchForFunction(false)\">\r\n <span class=\"float-right\"><i class=\"fas fa-search\"></i>{{ utilityService.getResourceValue('Search') }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditSourceFuncValue\" *ngIf=\"ShowSourceFunctionData\" [group]=\"EditConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditSourceFuncDefaultValue\" *ngIf=\"ShowSourceFunctionData\" [group]=\"EditConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditLookup\" *ngIf=\"ShowLookupList\" (onChange)=\"ChangeLookup($event, false)\" [group]=\"EditConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"ShowLookupItemsList\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditLookupValue\" [group]=\"EditConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"ShowLookupItemsList\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditLookupDefaultValue\" [group]=\"EditConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-center pt-7\">\r\n <button\r\n #CloseEditConfigurationModal\r\n id=\"CloseEditConfigurationModal\"\r\n type=\"button\"\r\n class=\"btn btn-light btn-sm me-3\"\r\n data-dismiss=\"modal\"\r\n (click)=\"modal.dismiss()\">\r\n {{ utilityService.getResourceValue('CancelLabel') }}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\" [disabled]=\"sourceFunctionDataNotLoaded\">\r\n {{ utilityService.getResourceValue('SaveLabel') }}\r\n </button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n<!-- #endregion -->\r\n\r\n<!-- #region delete modal -->\r\n<BBSF-ConfirmationModal\r\n *ngIf=\"deleteControlLoaded\"\r\n [options]=\"DeleteConfirmationOptions\"\r\n id=\"ConfirmationModalControl\"\r\n #ConfirmationModalControl></BBSF-ConfirmationModal>\r\n<!-- #endregion -->\r\n\r\n<!-- #region reload modal -->\r\n<BBSF-ConfirmationModal\r\n *ngIf=\"reloadControlLoaded\"\r\n [options]=\"reloadConfirmationOptions\"\r\n id=\"ReloadConfirmationModalControl\"\r\n #ReloadConfirmationModalControl></BBSF-ConfirmationModal>\r\n<!-- #endregion -->\r\n", dependencies: [{ kind: "component", type: i5.BlockUIComponent, selector: "block-ui", inputs: ["name", "message", "delayStart", "delayStop", "template"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i8.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["onChange", "onBlur"] }, { kind: "component", type: i8.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options", "DropdownTemplateVariable"], outputs: ["onChange", "onClear"] }, { kind: "component", type: i8.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i8.PagingComponent, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items", "pageStateRestored"] }, { kind: "component", type: i8.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["onChange"] }, { kind: "component", type: i8.ConfirmationModalComponent, selector: "BBSF-ConfirmationModal", inputs: ["options"] }, { kind: "directive", type: i4.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i4.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i4.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i4.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["tabindex", "disabled"] }, { kind: "directive", type: i4.NgbDropdownButtonItem, selector: "button[ngbDropdownItem]" }, { kind: "component", type: i9.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i9.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i10.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["inlineSVG", "resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "setSVGAttributes", "removeSVGAttributes", "forceEvalStyles", "evalScripts", "fallbackImgUrl", "fallbackSVG", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { kind: "component", type: i11.EmptyDataComponent, selector: "lib-empty-data", inputs: ["Message", "ShowImage", "ImgURL"] }] }); }
|
|
851
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ConfigurationComponent, selector: "lib-configuration", viewQueries: [{ propertyName: "pagingElement", first: true, predicate: ["ConfigurationPagingViewElement"], descendants: true }, { propertyName: "organizationDDL", first: true, predicate: ["organizationDDL"], descendants: true }, { propertyName: "ConfirmationModalControl", first: true, predicate: ["ConfirmationModalControl"], descendants: true }, { propertyName: "reloadConfirmationModalControl", first: true, predicate: ["ReloadConfirmationModalControl"], descendants: true }], ngImport: i0, template: "<block-ui></block-ui>\r\n<!-- Page Content -->\r\n<div class=\"container-fluid\">\r\n <div *ngIf=\"showPageContent\">\r\n <!-- begin::Header -->\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]=\"ConfigurationForm\">\r\n <BBSF-TextBox [options]=\"searchTextBox\" [group]=\"ConfigurationForm\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\" ngbDropdown class=\"d-inline-block\"\r\n [ngStyle]=\"{ display: showPageContent == true ? 'block' : 'none' }\">\r\n <button (click)=\"loadLists()\" ngbDropdownToggle href=\"javascript:;\" type=\"button\"\r\n class=\"btn btn-sm btn-light-primary me-3\" id=\"FiltersDropdown\" title=\"Filter\">\r\n <i class=\"fas fa-filter me-1\"></i>\r\n {{ utilityService.getResourceValue('Filter') }}\r\n </button>\r\n <div *ngIf=\"isFilterLoaded\" ngbDropdownMenu aria-labelledby=\"FiltersDropdown\"\r\n class=\"filter-container menu menu-sub menu-sub-dropdown menu-column menu-rounded menu-gray-800 menu-state-bg-light-primary w-250px w-md-500px fw-bold py-3 dropdown-menu dropdown-menu-right\">\r\n <form [formGroup]=\"ConfigurationForm\">\r\n <div class=\"px-7 py-5\">\r\n <div class=\"row\" *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\">\r\n <div>\r\n <BBSF-DropdownList #organizationDDL [options]=\"organizationOptions\"\r\n [group]=\"ConfigurationForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-end\">\r\n <button class=\"btn btn-light btn-active-light-primary pv-reset btn-sm\"\r\n name=\"configurationResetButton\">\r\n {{ utilityService.getResourceValue('Reset') }}\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n\r\n <!-- begin::Menu -->\r\n <button id=\"btnActivate\" type=\"button\" class=\"btn btn-sm btn-light-primary me-3\"\r\n (click)=\"showReloadResourceModal()\">\r\n <i class=\"fas fa-sync-alt me-1\"></i>\r\n {{ utilityService.getResourceValue('Reload') }}\r\n </button>\r\n\r\n <button type=\"button\" class=\"btn btn-sm btn-primary\" title=\"Add\"\r\n (click)=\"showAddConfigurationModal(AddConfigurationModal)\">\r\n <i class=\"fas fa-plus me-1\"></i>\r\n {{ utilityService.getResourceValue('Add') }}\r\n </button>\r\n <!-- end::Menu -->\r\n </div>\r\n </div>\r\n <!-- end::Header -->\r\n <!-- begin::Body -->\r\n <div class=\"card-body py-3\">\r\n <!-- begin::Table container -->\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\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 <th class=\"min-w-150px\">{{ utilityService.getResourceValue('Key') }}</th>\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('Value') }}</th>\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('Type') }}</th>\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('Scope') }}</th>\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('UserPermissionSet') }}</th>\r\n <th class=\"min-w-150\" *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\">\r\n {{ utilityService.getResourceValue('Organization') }}</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 <tr *ngFor=\"let Configuration of clientSidePagingResult\">\r\n <td class=\"text-dark\">{{ Configuration.key }}</td>\r\n <td>{{ Configuration.value }}</td>\r\n <td>{{ Configuration.valueTypeNameStr }}</td>\r\n <td>{{ Configuration.scopeName }}</td>\r\n <td>{{ Configuration.permissionSetName }}{{ Configuration.userName }}</td>\r\n <td *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\">{{ Configuration.organizationName ?? '-' }}</td>\r\n <td>\r\n <div>\r\n <button mat-button [matMenuTriggerFor]=\"config\"\r\n 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 class=\"mat-menu-content\" #config=\"matMenu\">\r\n <button class=\"drop-item px-3\" ngbDropdownItem\r\n (click)=\"showEditConfigurationModal(Configuration.iD_GUID, EditConfigurationModal)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('Edit') }}</span>\r\n </button>\r\n <button ngbDropdownItem class=\"drop-item px-3\" id=\"btnResetPass\"\r\n (click)=\"showDeleteConfigurationModal(Configuration.iD_GUID)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('Delete') }}</span>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"clientSidePagingResult.length == 0\">\r\n <td colspan=\"6\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <!-- end::Table -->\r\n </div>\r\n <!-- end::Table container -->\r\n </div>\r\n <!-- begin paging-->\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setConfigurationListResult($event)\" *ngIf=\"isFilterLoaded\" [options]=\"ConfigurationPaging\"\r\n [group]=\"ConfigurationForm\" #ConfigurationPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n <!-- End paging-->\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- #region Add modal -->\r\n<ng-template #AddConfigurationModal 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\"\r\n (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('AddConfiguration') }}</h1>\r\n </div>\r\n\r\n <BBSF-Form [options]=\"addConfigurationFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"Key\" [group]=\"addConfigurationForm\"> </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"loadJsonToggle\" [group]=\"addConfigurationForm\"> </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Category\" [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Scope\" (onChange)=\"ChangeScopeValue($event)\" [group]=\"addConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\" [options]=\"addOrganization\"\r\n [group]=\"addConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"PermissionSet\" *ngIf=\"ShowPermissionList\" [group]=\"addConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"User\" *ngIf=\"ShowUsersList\" [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Type\" (onChange)=\"ChangeTypeValue($event)\" [group]=\"addConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"Value\" *ngIf=\"ShowValueAndDefaultValue\" [group]=\"addConfigurationForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"DefaultValue\" *ngIf=\"ShowValueAndDefaultValue\" [group]=\"addConfigurationForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"ValueToggel\" *ngIf=\"ShowValueToggleAndDefaultValue\"\r\n [group]=\"addConfigurationForm\"> </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"DefaultValueToggel\" *ngIf=\"ShowValueToggleAndDefaultValue\"\r\n [group]=\"addConfigurationForm\"> </BBSF-Toggleslide>\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]=\"Source\" *ngIf=\"ShowDropDownSource\" (onChange)=\"ChangeSource($event)\"\r\n [group]=\"addConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"ShowSourceFunctionPath\">\r\n <div class=\"row\">\r\n <div class=\"col-md-9\">\r\n <BBSF-TextBox [options]=\"FunctionSourcePath\" [group]=\"addConfigurationForm\"\r\n (onChange)=\"changeSourceFunction()\"> </BBSF-TextBox>\r\n <div *ngIf=\"showFunctionNotFoundError\" class=\"text-danger\">\r\n {{ utilityService.getResourceValue('SourceFunctionNotFound') }}\r\n </div>\r\n </div>\r\n <div class=\"col-md-3 d-flex justify-content-end align-items-center mb-4\">\r\n <button type=\"button\" class=\"btn btn-sm btn-secondary\" (click)=\"SearchForFunction(true)\">\r\n <span class=\"float-right\"><i\r\n class=\"fas fa-search\"></i>{{ utilityService.getResourceValue('Search') }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"SourceFuncValue\" *ngIf=\"ShowSourceFunctionData\"\r\n [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"SourceFuncDefaultValue\" *ngIf=\"ShowSourceFunctionData\"\r\n [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"ShowLookupList\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Lookup\" (onChange)=\"ChangeLookup($event, true)\"\r\n [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"LookupValue\" *ngIf=\"ShowLookupItemsList\" [group]=\"addConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"LookupDefaultValue\" *ngIf=\"ShowLookupItemsList\"\r\n [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-center pt-7\">\r\n <button #CloseConfigurationModal id=\"CloseConfigurationModal\" 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\" [disabled]=\"sourceFunctionDataNotLoaded\">\r\n {{ utilityService.getResourceValue('SaveLabel') }}\r\n </button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n<!-- #endregion -->\r\n\r\n<!-- #region edit modal -->\r\n<ng-template #EditConfigurationModal 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\"\r\n (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') }}\r\n {{ utilityService.getResourceValue('Configuration') }}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"EditConfigurationFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"EditKey\" [group]=\"EditConfigurationForm\"> </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"editLoadJsonToggle\" [group]=\"EditConfigurationForm\"> </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\" [options]=\"editOrganization\"\r\n [group]=\"EditConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditPermissionSet\" *ngIf=\"ShowPermissionList\" [group]=\"EditConfigurationForm\">\r\n </BBSF-DropdownList>\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]=\"EditUser\" *ngIf=\"ShowUsersList\" [group]=\"EditConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"EditTextValue\" *ngIf=\"ShowValueAndDefaultValue\" [group]=\"EditConfigurationForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"EditTextDefaultValue\" *ngIf=\"ShowValueAndDefaultValue\"\r\n [group]=\"EditConfigurationForm\"> </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"EditValueToggele\" *ngIf=\"ShowValueToggleAndDefaultValue\"\r\n [group]=\"EditConfigurationForm\"> </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"EditDefaultValueToggele\" *ngIf=\"ShowValueToggleAndDefaultValue\"\r\n [group]=\"EditConfigurationForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"ShowSourceFunctionPath\">\r\n <div class=\"col-md-9\">\r\n <BBSF-TextBox [options]=\"EditFunctionSourcePath\" [group]=\"EditConfigurationForm\"\r\n (onChange)=\"changeSourceFunction()\"> </BBSF-TextBox>\r\n <div *ngIf=\"showFunctionNotFoundError\" class=\"text-danger\">\r\n {{ utilityService.getResourceValue('SourceFunctionNotFound') }}\r\n </div>\r\n </div>\r\n <div class=\"col-md-3 d-flex justify-content-end align-items-center mb-4\">\r\n <button type=\"button\" class=\"btn btn-sm btn-secondary\" (click)=\"SearchForFunction(false)\">\r\n <span class=\"float-right\"><i\r\n class=\"fas fa-search\"></i>{{ utilityService.getResourceValue('Search') }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditSourceFuncValue\" *ngIf=\"ShowSourceFunctionData\"\r\n [group]=\"EditConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditSourceFuncDefaultValue\" *ngIf=\"ShowSourceFunctionData\"\r\n [group]=\"EditConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditLookup\" *ngIf=\"ShowLookupList\" (onChange)=\"ChangeLookup($event, false)\"\r\n [group]=\"EditConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"ShowLookupItemsList\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditLookupValue\" [group]=\"EditConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"ShowLookupItemsList\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditLookupDefaultValue\" [group]=\"EditConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-center pt-7\">\r\n <button #CloseEditConfigurationModal id=\"CloseEditConfigurationModal\" 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\" [disabled]=\"sourceFunctionDataNotLoaded\">\r\n {{ utilityService.getResourceValue('SaveLabel') }}\r\n </button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n<!-- #endregion -->\r\n\r\n<!-- #region delete modal -->\r\n<BBSF-ConfirmationModal *ngIf=\"deleteControlLoaded\" [options]=\"DeleteConfirmationOptions\" id=\"ConfirmationModalControl\"\r\n #ConfirmationModalControl></BBSF-ConfirmationModal>\r\n<!-- #endregion -->\r\n\r\n<!-- #region reload modal -->\r\n<BBSF-ConfirmationModal *ngIf=\"reloadControlLoaded\" [options]=\"reloadConfirmationOptions\"\r\n id=\"ReloadConfirmationModalControl\" #ReloadConfirmationModalControl></BBSF-ConfirmationModal>\r\n<!-- #endregion -->", dependencies: [{ kind: "component", type: i5.BlockUIComponent, selector: "block-ui", inputs: ["name", "message", "delayStart", "delayStop", "template"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i8.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["onChange", "onBlur"] }, { kind: "component", type: i8.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options", "DropdownTemplateVariable"], outputs: ["onChange", "onClear"] }, { kind: "component", type: i8.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i8.PagingComponent, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items", "pageStateRestored"] }, { kind: "component", type: i8.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["onChange"] }, { kind: "component", type: i8.ConfirmationModalComponent, selector: "BBSF-ConfirmationModal", inputs: ["options"] }, { kind: "directive", type: i4.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i4.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i4.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i4.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["tabindex", "disabled"] }, { kind: "directive", type: i4.NgbDropdownButtonItem, selector: "button[ngbDropdownItem]" }, { kind: "component", type: i9.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i9.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i10.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["inlineSVG", "resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "setSVGAttributes", "removeSVGAttributes", "forceEvalStyles", "evalScripts", "fallbackImgUrl", "fallbackSVG", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { kind: "component", type: i11.EmptyDataComponent, selector: "lib-empty-data", inputs: ["Message", "ShowImage", "ImgURL"] }] }); }
|
|
852
852
|
}
|
|
853
853
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConfigurationComponent, decorators: [{
|
|
854
854
|
type: Component,
|
|
855
|
-
args: [{ selector: 'lib-configuration', template: "<block-ui></block-ui>\r\n<!-- Page Content -->\r\n<div class=\"container-fluid\">\r\n <div *ngIf=\"showPageContent\">\r\n <!-- begin::Header -->\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]=\"ConfigurationForm\">\r\n <BBSF-TextBox [options]=\"searchTextBox\" [group]=\"ConfigurationForm\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div\r\n *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\"\r\n ngbDropdown\r\n class=\"d-inline-block\"\r\n [ngStyle]=\"{ display: showPageContent == true ? 'block' : 'none' }\">\r\n <button\r\n (click)=\"loadLists()\"\r\n ngbDropdownToggle\r\n href=\"javascript:;\"\r\n type=\"button\"\r\n class=\"btn btn-sm btn-light-primary me-3\"\r\n id=\"FiltersDropdown\"\r\n title=\"Filter\">\r\n <i class=\"fas fa-filter me-1\"></i>\r\n {{ utilityService.getResourceValue('Filter') }}\r\n </button>\r\n <div\r\n *ngIf=\"isFilterLoaded\"\r\n ngbDropdownMenu\r\n aria-labelledby=\"FiltersDropdown\"\r\n class=\"filter-container menu menu-sub menu-sub-dropdown menu-column menu-rounded menu-gray-800 menu-state-bg-light-primary w-250px w-md-500px fw-bold py-3 dropdown-menu dropdown-menu-right\">\r\n <form [formGroup]=\"ConfigurationForm\">\r\n <div class=\"px-7 py-5\">\r\n <div class=\"row\" *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\">\r\n <div>\r\n <BBSF-DropdownList #organizationDDL [options]=\"organizationOptions\" [group]=\"ConfigurationForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-end\">\r\n <button class=\"btn btn-light btn-active-light-primary pv-reset btn-sm\" name=\"configurationResetButton\">\r\n {{ utilityService.getResourceValue('Reset') }}\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n\r\n <!-- begin::Menu -->\r\n <button id=\"btnActivate\" type=\"button\" class=\"btn btn-sm btn-light-primary me-3\" (click)=\"showReloadResourceModal()\">\r\n <i class=\"fas fa-sync-alt me-1\"></i>\r\n {{ utilityService.getResourceValue('Reload') }}\r\n </button>\r\n\r\n <button type=\"button\" class=\"btn btn-sm btn-primary\" title=\"Add\" (click)=\"showAddConfigurationModal(AddConfigurationModal)\">\r\n <i class=\"fas fa-plus me-1\"></i>\r\n {{ utilityService.getResourceValue('Add') }}\r\n </button>\r\n <!-- end::Menu -->\r\n </div>\r\n </div>\r\n <!-- end::Header -->\r\n <!-- begin::Body -->\r\n <div class=\"card-body py-3\">\r\n <!-- begin::Table container -->\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\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 <th class=\"min-w-150px\">{{ utilityService.getResourceValue('Key') }}</th>\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('Value') }}</th>\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('Type') }}</th>\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('Scope') }}</th>\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('UserPermissionSet') }}</th>\r\n <th class=\"min-w-150\" *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\">{{ utilityService.getResourceValue('Organization') }}</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 <tr *ngFor=\"let Configuration of clientSidePagingResult\">\r\n <td class=\"text-dark\">{{ Configuration.key }}</td>\r\n <td>{{ Configuration.value }}</td>\r\n <td>{{ Configuration.valueTypeNameStr }}</td>\r\n <td>{{ Configuration.scopeName }}</td>\r\n <td>{{ Configuration.permissionSetName }}{{ Configuration.userName }}</td>\r\n <td *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\">{{ Configuration.organizationName ?? '-' }}</td>\r\n <td>\r\n <div>\r\n <button mat-button [matMenuTriggerFor]=\"config\" 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 class=\"mat-menu-content\" #config=\"matMenu\">\r\n <button\r\n class=\"drop-item px-3\"\r\n ngbDropdownItem\r\n (click)=\"showEditConfigurationModal(Configuration.iD_GUID, EditConfigurationModal)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('Edit') }}</span>\r\n </button>\r\n <button ngbDropdownItem class=\"drop-item px-3\" id=\"btnResetPass\" (click)=\"showDeleteConfigurationModal(Configuration.iD_GUID)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('Delete') }}</span>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"clientSidePagingResult.length == 0\">\r\n <td colspan=\"6\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <!-- end::Table -->\r\n </div>\r\n <!-- end::Table container -->\r\n </div>\r\n <!-- begin paging-->\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging\r\n (Items)=\"setConfigurationListResult($event)\"\r\n *ngIf=\"isFilterLoaded\"\r\n [options]=\"ConfigurationPaging\"\r\n [group]=\"ConfigurationForm\"\r\n #ConfigurationPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n <!-- End paging-->\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- #region Add modal -->\r\n<ng-template #AddConfigurationModal 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('AddConfiguration') }}</h1>\r\n </div>\r\n\r\n <BBSF-Form [options]=\"addConfigurationFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"Key\" [group]=\"addConfigurationForm\"> </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"loadJsonToggle\" [group]=\"addConfigurationForm\"> </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Category\" [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Scope\" (onChange)=\"ChangeScopeValue($event)\" [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\" [options]=\"addOrganization\" [group]=\"addConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"PermissionSet\" *ngIf=\"ShowPermissionList\" [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"User\" *ngIf=\"ShowUsersList\" [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Type\" (onChange)=\"ChangeTypeValue($event)\" [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"Value\" *ngIf=\"ShowValueAndDefaultValue\" [group]=\"addConfigurationForm\"> </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"DefaultValue\" *ngIf=\"ShowValueAndDefaultValue\" [group]=\"addConfigurationForm\"> </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"ValueToggel\" *ngIf=\"ShowValueToggleAndDefaultValue\" [group]=\"addConfigurationForm\"> </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"DefaultValueToggel\" *ngIf=\"ShowValueToggleAndDefaultValue\" [group]=\"addConfigurationForm\"> </BBSF-Toggleslide>\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]=\"Source\" *ngIf=\"ShowDropDownSource\" (onChange)=\"ChangeSource($event)\" [group]=\"addConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"ShowSourceFunctionPath\">\r\n <div class=\"row\">\r\n <div class=\"col-md-9\">\r\n <BBSF-TextBox [options]=\"FunctionSourcePath\" [group]=\"addConfigurationForm\" (onChange)=\"changeSourceFunction()\"> </BBSF-TextBox>\r\n <div *ngIf=\"showFunctionNotFoundError\" class=\"text-danger\">\r\n {{ utilityService.getResourceValue('SourceFunctionNotFound') }}\r\n </div>\r\n </div>\r\n <div class=\"col-md-3 d-flex justify-content-end align-items-center mb-4\">\r\n <button type=\"button\" class=\"btn btn-sm btn-secondary\" (click)=\"SearchForFunction(true)\">\r\n <span class=\"float-right\"><i class=\"fas fa-search\"></i>{{ utilityService.getResourceValue('Search') }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"SourceFuncValue\" *ngIf=\"ShowSourceFunctionData\" [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"SourceFuncDefaultValue\" *ngIf=\"ShowSourceFunctionData\" [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"ShowLookupList\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Lookup\" (onChange)=\"ChangeLookup($event, true)\" [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"LookupValue\" *ngIf=\"ShowLookupItemsList\" [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"LookupDefaultValue\" *ngIf=\"ShowLookupItemsList\" [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-center pt-7\">\r\n <button #CloseConfigurationModal id=\"CloseConfigurationModal\" type=\"button\" class=\"btn btn-light me-3 btn-sm\" (click)=\"modal.dismiss()\">\r\n {{ utilityService.getResourceValue('CancelLabel') }}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\" [disabled]=\"sourceFunctionDataNotLoaded\">\r\n {{ utilityService.getResourceValue('SaveLabel') }}\r\n </button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n<!-- #endregion -->\r\n\r\n<!-- #region edit modal -->\r\n<ng-template #EditConfigurationModal 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('Configuration') }}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"EditConfigurationFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"EditKey\" [group]=\"EditConfigurationForm\"> </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"editLoadJsonToggle\" [group]=\"EditConfigurationForm\"> </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\" [options]=\"editOrganization\" [group]=\"EditConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditPermissionSet\" *ngIf=\"ShowPermissionList\" [group]=\"EditConfigurationForm\"> </BBSF-DropdownList>\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]=\"EditUser\" *ngIf=\"ShowUsersList\" [group]=\"EditConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"EditTextValue\" *ngIf=\"ShowValueAndDefaultValue\" [group]=\"EditConfigurationForm\"> </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"EditTextDefaultValue\" *ngIf=\"ShowValueAndDefaultValue\" [group]=\"EditConfigurationForm\"> </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"EditValueToggele\" *ngIf=\"ShowValueToggleAndDefaultValue\" [group]=\"EditConfigurationForm\"> </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"EditDefaultValueToggele\" *ngIf=\"ShowValueToggleAndDefaultValue\" [group]=\"EditConfigurationForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"ShowSourceFunctionPath\">\r\n <div class=\"col-md-9\">\r\n <BBSF-TextBox [options]=\"EditFunctionSourcePath\" [group]=\"EditConfigurationForm\" (onChange)=\"changeSourceFunction()\"> </BBSF-TextBox>\r\n <div *ngIf=\"showFunctionNotFoundError\" class=\"text-danger\">\r\n {{ utilityService.getResourceValue('SourceFunctionNotFound') }}\r\n </div>\r\n </div>\r\n <div class=\"col-md-3 d-flex justify-content-end align-items-center mb-4\">\r\n <button type=\"button\" class=\"btn btn-sm btn-secondary\" (click)=\"SearchForFunction(false)\">\r\n <span class=\"float-right\"><i class=\"fas fa-search\"></i>{{ utilityService.getResourceValue('Search') }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditSourceFuncValue\" *ngIf=\"ShowSourceFunctionData\" [group]=\"EditConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditSourceFuncDefaultValue\" *ngIf=\"ShowSourceFunctionData\" [group]=\"EditConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditLookup\" *ngIf=\"ShowLookupList\" (onChange)=\"ChangeLookup($event, false)\" [group]=\"EditConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"ShowLookupItemsList\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditLookupValue\" [group]=\"EditConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"ShowLookupItemsList\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditLookupDefaultValue\" [group]=\"EditConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-center pt-7\">\r\n <button\r\n #CloseEditConfigurationModal\r\n id=\"CloseEditConfigurationModal\"\r\n type=\"button\"\r\n class=\"btn btn-light btn-sm me-3\"\r\n data-dismiss=\"modal\"\r\n (click)=\"modal.dismiss()\">\r\n {{ utilityService.getResourceValue('CancelLabel') }}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\" [disabled]=\"sourceFunctionDataNotLoaded\">\r\n {{ utilityService.getResourceValue('SaveLabel') }}\r\n </button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n<!-- #endregion -->\r\n\r\n<!-- #region delete modal -->\r\n<BBSF-ConfirmationModal\r\n *ngIf=\"deleteControlLoaded\"\r\n [options]=\"DeleteConfirmationOptions\"\r\n id=\"ConfirmationModalControl\"\r\n #ConfirmationModalControl></BBSF-ConfirmationModal>\r\n<!-- #endregion -->\r\n\r\n<!-- #region reload modal -->\r\n<BBSF-ConfirmationModal\r\n *ngIf=\"reloadControlLoaded\"\r\n [options]=\"reloadConfirmationOptions\"\r\n id=\"ReloadConfirmationModalControl\"\r\n #ReloadConfirmationModalControl></BBSF-ConfirmationModal>\r\n<!-- #endregion -->\r\n" }]
|
|
855
|
+
args: [{ selector: 'lib-configuration', template: "<block-ui></block-ui>\r\n<!-- Page Content -->\r\n<div class=\"container-fluid\">\r\n <div *ngIf=\"showPageContent\">\r\n <!-- begin::Header -->\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]=\"ConfigurationForm\">\r\n <BBSF-TextBox [options]=\"searchTextBox\" [group]=\"ConfigurationForm\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\" ngbDropdown class=\"d-inline-block\"\r\n [ngStyle]=\"{ display: showPageContent == true ? 'block' : 'none' }\">\r\n <button (click)=\"loadLists()\" ngbDropdownToggle href=\"javascript:;\" type=\"button\"\r\n class=\"btn btn-sm btn-light-primary me-3\" id=\"FiltersDropdown\" title=\"Filter\">\r\n <i class=\"fas fa-filter me-1\"></i>\r\n {{ utilityService.getResourceValue('Filter') }}\r\n </button>\r\n <div *ngIf=\"isFilterLoaded\" ngbDropdownMenu aria-labelledby=\"FiltersDropdown\"\r\n class=\"filter-container menu menu-sub menu-sub-dropdown menu-column menu-rounded menu-gray-800 menu-state-bg-light-primary w-250px w-md-500px fw-bold py-3 dropdown-menu dropdown-menu-right\">\r\n <form [formGroup]=\"ConfigurationForm\">\r\n <div class=\"px-7 py-5\">\r\n <div class=\"row\" *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\">\r\n <div>\r\n <BBSF-DropdownList #organizationDDL [options]=\"organizationOptions\"\r\n [group]=\"ConfigurationForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-end\">\r\n <button class=\"btn btn-light btn-active-light-primary pv-reset btn-sm\"\r\n name=\"configurationResetButton\">\r\n {{ utilityService.getResourceValue('Reset') }}\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n\r\n <!-- begin::Menu -->\r\n <button id=\"btnActivate\" type=\"button\" class=\"btn btn-sm btn-light-primary me-3\"\r\n (click)=\"showReloadResourceModal()\">\r\n <i class=\"fas fa-sync-alt me-1\"></i>\r\n {{ utilityService.getResourceValue('Reload') }}\r\n </button>\r\n\r\n <button type=\"button\" class=\"btn btn-sm btn-primary\" title=\"Add\"\r\n (click)=\"showAddConfigurationModal(AddConfigurationModal)\">\r\n <i class=\"fas fa-plus me-1\"></i>\r\n {{ utilityService.getResourceValue('Add') }}\r\n </button>\r\n <!-- end::Menu -->\r\n </div>\r\n </div>\r\n <!-- end::Header -->\r\n <!-- begin::Body -->\r\n <div class=\"card-body py-3\">\r\n <!-- begin::Table container -->\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\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 <th class=\"min-w-150px\">{{ utilityService.getResourceValue('Key') }}</th>\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('Value') }}</th>\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('Type') }}</th>\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('Scope') }}</th>\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('UserPermissionSet') }}</th>\r\n <th class=\"min-w-150\" *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\">\r\n {{ utilityService.getResourceValue('Organization') }}</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 <tr *ngFor=\"let Configuration of clientSidePagingResult\">\r\n <td class=\"text-dark\">{{ Configuration.key }}</td>\r\n <td>{{ Configuration.value }}</td>\r\n <td>{{ Configuration.valueTypeNameStr }}</td>\r\n <td>{{ Configuration.scopeName }}</td>\r\n <td>{{ Configuration.permissionSetName }}{{ Configuration.userName }}</td>\r\n <td *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\">{{ Configuration.organizationName ?? '-' }}</td>\r\n <td>\r\n <div>\r\n <button mat-button [matMenuTriggerFor]=\"config\"\r\n 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 class=\"mat-menu-content\" #config=\"matMenu\">\r\n <button class=\"drop-item px-3\" ngbDropdownItem\r\n (click)=\"showEditConfigurationModal(Configuration.iD_GUID, EditConfigurationModal)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('Edit') }}</span>\r\n </button>\r\n <button ngbDropdownItem class=\"drop-item px-3\" id=\"btnResetPass\"\r\n (click)=\"showDeleteConfigurationModal(Configuration.iD_GUID)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('Delete') }}</span>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"clientSidePagingResult.length == 0\">\r\n <td colspan=\"6\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <!-- end::Table -->\r\n </div>\r\n <!-- end::Table container -->\r\n </div>\r\n <!-- begin paging-->\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setConfigurationListResult($event)\" *ngIf=\"isFilterLoaded\" [options]=\"ConfigurationPaging\"\r\n [group]=\"ConfigurationForm\" #ConfigurationPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n <!-- End paging-->\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- #region Add modal -->\r\n<ng-template #AddConfigurationModal 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\"\r\n (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('AddConfiguration') }}</h1>\r\n </div>\r\n\r\n <BBSF-Form [options]=\"addConfigurationFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"Key\" [group]=\"addConfigurationForm\"> </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"loadJsonToggle\" [group]=\"addConfigurationForm\"> </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Category\" [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Scope\" (onChange)=\"ChangeScopeValue($event)\" [group]=\"addConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\" [options]=\"addOrganization\"\r\n [group]=\"addConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"PermissionSet\" *ngIf=\"ShowPermissionList\" [group]=\"addConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"User\" *ngIf=\"ShowUsersList\" [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Type\" (onChange)=\"ChangeTypeValue($event)\" [group]=\"addConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"Value\" *ngIf=\"ShowValueAndDefaultValue\" [group]=\"addConfigurationForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"DefaultValue\" *ngIf=\"ShowValueAndDefaultValue\" [group]=\"addConfigurationForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"ValueToggel\" *ngIf=\"ShowValueToggleAndDefaultValue\"\r\n [group]=\"addConfigurationForm\"> </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"DefaultValueToggel\" *ngIf=\"ShowValueToggleAndDefaultValue\"\r\n [group]=\"addConfigurationForm\"> </BBSF-Toggleslide>\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]=\"Source\" *ngIf=\"ShowDropDownSource\" (onChange)=\"ChangeSource($event)\"\r\n [group]=\"addConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"ShowSourceFunctionPath\">\r\n <div class=\"row\">\r\n <div class=\"col-md-9\">\r\n <BBSF-TextBox [options]=\"FunctionSourcePath\" [group]=\"addConfigurationForm\"\r\n (onChange)=\"changeSourceFunction()\"> </BBSF-TextBox>\r\n <div *ngIf=\"showFunctionNotFoundError\" class=\"text-danger\">\r\n {{ utilityService.getResourceValue('SourceFunctionNotFound') }}\r\n </div>\r\n </div>\r\n <div class=\"col-md-3 d-flex justify-content-end align-items-center mb-4\">\r\n <button type=\"button\" class=\"btn btn-sm btn-secondary\" (click)=\"SearchForFunction(true)\">\r\n <span class=\"float-right\"><i\r\n class=\"fas fa-search\"></i>{{ utilityService.getResourceValue('Search') }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"SourceFuncValue\" *ngIf=\"ShowSourceFunctionData\"\r\n [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"SourceFuncDefaultValue\" *ngIf=\"ShowSourceFunctionData\"\r\n [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"ShowLookupList\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Lookup\" (onChange)=\"ChangeLookup($event, true)\"\r\n [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"LookupValue\" *ngIf=\"ShowLookupItemsList\" [group]=\"addConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"LookupDefaultValue\" *ngIf=\"ShowLookupItemsList\"\r\n [group]=\"addConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-center pt-7\">\r\n <button #CloseConfigurationModal id=\"CloseConfigurationModal\" 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\" [disabled]=\"sourceFunctionDataNotLoaded\">\r\n {{ utilityService.getResourceValue('SaveLabel') }}\r\n </button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n<!-- #endregion -->\r\n\r\n<!-- #region edit modal -->\r\n<ng-template #EditConfigurationModal 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\"\r\n (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') }}\r\n {{ utilityService.getResourceValue('Configuration') }}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"EditConfigurationFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"EditKey\" [group]=\"EditConfigurationForm\"> </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"editLoadJsonToggle\" [group]=\"EditConfigurationForm\"> </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\" [options]=\"editOrganization\"\r\n [group]=\"EditConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditPermissionSet\" *ngIf=\"ShowPermissionList\" [group]=\"EditConfigurationForm\">\r\n </BBSF-DropdownList>\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]=\"EditUser\" *ngIf=\"ShowUsersList\" [group]=\"EditConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"EditTextValue\" *ngIf=\"ShowValueAndDefaultValue\" [group]=\"EditConfigurationForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"EditTextDefaultValue\" *ngIf=\"ShowValueAndDefaultValue\"\r\n [group]=\"EditConfigurationForm\"> </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"EditValueToggele\" *ngIf=\"ShowValueToggleAndDefaultValue\"\r\n [group]=\"EditConfigurationForm\"> </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"EditDefaultValueToggele\" *ngIf=\"ShowValueToggleAndDefaultValue\"\r\n [group]=\"EditConfigurationForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"ShowSourceFunctionPath\">\r\n <div class=\"col-md-9\">\r\n <BBSF-TextBox [options]=\"EditFunctionSourcePath\" [group]=\"EditConfigurationForm\"\r\n (onChange)=\"changeSourceFunction()\"> </BBSF-TextBox>\r\n <div *ngIf=\"showFunctionNotFoundError\" class=\"text-danger\">\r\n {{ utilityService.getResourceValue('SourceFunctionNotFound') }}\r\n </div>\r\n </div>\r\n <div class=\"col-md-3 d-flex justify-content-end align-items-center mb-4\">\r\n <button type=\"button\" class=\"btn btn-sm btn-secondary\" (click)=\"SearchForFunction(false)\">\r\n <span class=\"float-right\"><i\r\n class=\"fas fa-search\"></i>{{ utilityService.getResourceValue('Search') }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditSourceFuncValue\" *ngIf=\"ShowSourceFunctionData\"\r\n [group]=\"EditConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditSourceFuncDefaultValue\" *ngIf=\"ShowSourceFunctionData\"\r\n [group]=\"EditConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditLookup\" *ngIf=\"ShowLookupList\" (onChange)=\"ChangeLookup($event, false)\"\r\n [group]=\"EditConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"ShowLookupItemsList\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditLookupValue\" [group]=\"EditConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"ShowLookupItemsList\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditLookupDefaultValue\" [group]=\"EditConfigurationForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-center pt-7\">\r\n <button #CloseEditConfigurationModal id=\"CloseEditConfigurationModal\" 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\" [disabled]=\"sourceFunctionDataNotLoaded\">\r\n {{ utilityService.getResourceValue('SaveLabel') }}\r\n </button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n<!-- #endregion -->\r\n\r\n<!-- #region delete modal -->\r\n<BBSF-ConfirmationModal *ngIf=\"deleteControlLoaded\" [options]=\"DeleteConfirmationOptions\" id=\"ConfirmationModalControl\"\r\n #ConfirmationModalControl></BBSF-ConfirmationModal>\r\n<!-- #endregion -->\r\n\r\n<!-- #region reload modal -->\r\n<BBSF-ConfirmationModal *ngIf=\"reloadControlLoaded\" [options]=\"reloadConfirmationOptions\"\r\n id=\"ReloadConfirmationModalControl\" #ReloadConfirmationModalControl></BBSF-ConfirmationModal>\r\n<!-- #endregion -->" }]
|
|
856
856
|
}], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.PageInfoService }, { type: i1.UtilityService }, { type: i1.BBSFTranslateService }, { type: i1.EnvironmentService }, { type: i3.ConfigurationsService }, { type: i4.NgbModal }, { type: i1.RequestHandlerService }], propDecorators: { pagingElement: [{
|
|
857
857
|
type: ViewChild,
|
|
858
858
|
args: ['ConfigurationPagingViewElement', { static: false }]
|
|
@@ -866,4 +866,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
866
866
|
type: ViewChild,
|
|
867
867
|
args: ['ReloadConfirmationModalControl', { static: false }]
|
|
868
868
|
}] } });
|
|
869
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL2NvbmZpZ3VyYXRpb25zL2NvbmZpZ3VyYXRpb24vY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL2NvbmZpZ3VyYXRpb25zL2NvbmZpZ3VyYXRpb24vY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQXNFLGNBQWMsRUFBb0IsTUFBTSx5QkFBeUIsQ0FBQztBQUVyVixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUVoRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFHckYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU0zRyxNQUFNLE9BQU8sc0JBQXNCO0lBa0NTLENBQUM7SUFrRjNDLFlBQVk7SUFHWixZQUFvQixXQUF3QixFQUNsQyxlQUFnQyxFQUNqQyxjQUE4QixFQUM3QixvQkFBMEMsRUFDMUMsa0JBQXNDLEVB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Z0JBcUZXLHdCQUF3QjtzQkFBakYsU0FBUzt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBTVEsOEJBQThCO3NCQUE3RixTQUFTO3VCQUFDLGdDQUFnQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb250cm9sTGF5b3V0LCBGaWx0ZXJJdGVtLCBGaWx0ZXJUeXBlLCBJbnB1dFR5cGUsIFBhZ2luZ09wdGlvbnMsIFRleHRCb3hPcHRpb25zLCBEcm9wZG93bk9wdGlvbnMsIFRvZ2dsZVNsaWRlT3B0aW9ucywgRm9ybU9wdGlvbnMsIENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucywgUGFnaW5nQWN0aW9uTW9kZSwgU3R5bGVDb25maXJtYXRpb25Nb2RlLCBQYWdpbmdDb21wb25lbnQsIENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50LCBEcm9wZG93bkxpc3RDb21wb25lbnQsIFBlcm1pc3Npb25TZXRzLCBEcm9wZG93bkxpc3RJdGVtIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvU2VydmljZXMvQ29uZmlndXJhdGlvbnNTZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL0NvbmZpZ3VyYXRpb25Nb2RlbHMvQ29uZmlndXJhdGlvbk1vZGVsJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXRyb25pYy9jb3JlL3NlcnZpY2VzL3BhZ2UtaW5mby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlLCBCQlNGVHJhbnNsYXRlU2VydmljZSwgRW52aXJvbm1lbnRTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25ERExTb3VyY2UsIENvbmZpZ3VyYXRpb25WYWx1ZVR5cGVzLCBDb25zdGFudHMsIFNjb3BlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2NvbnN0YW50cyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1jb25maWd1cmF0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIC8vUGFnZSByZXF1aXJlbWVudHNcclxuICBzaG93UGFnZUNvbnRlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBBcGlVcmwgPSBcIi9hcGkvYWRtaW4vQ29uZmlndXJhdGlvbi9cIjtcclxuICBQcm9kdWN0aW9uTW9kZTogYm9vbGVhbjtcclxuICBpc0ZpbHRlckRhdGFMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjdXJyZW50VXNlclByb2ZpbGU6IGFueTtcclxuICBwZXJtaXNzaW9uU2V0cyA9IFBlcm1pc3Npb25TZXRzO1xyXG4gIGlzTXVsdGlUZW5hbmN5QWxsb3dlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzU3VwZXJBZG1pbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvL0ZpbHRlciBhbmQgcGFnaW5nIGNvbXBvbmVudHNcclxuICBDb25maWd1cmF0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIHNlYXJjaFRleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIFRleHRJbnB1dEZpbHRlcjogRmlsdGVySXRlbTtcclxuICBDb25maWd1cmF0aW9uUGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIGNsaWVudFNpZGVQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgQ29uZmlndXJhdGlvblBhZ2luZzogUGFnaW5nT3B0aW9ucztcclxuICBvcmdhbml6YXRpb25PcHRpb25zOiBEcm9wZG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgb3JnYW5pemF0aW9uc0ZpbHRlcjogRmlsdGVySXRlbTtcclxuXHJcbiAgaXNGaWx0ZXJMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdDb25maWd1cmF0aW9uUGFnaW5nVmlld0VsZW1lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgcGFnaW5nRWxlbWVudDogUGFnaW5nQ29tcG9uZW50PGFueT47XHJcbiAgQFZpZXdDaGlsZCgnb3JnYW5pemF0aW9uRERMJywgeyBzdGF0aWM6IGZhbHNlIH0pIG9yZ2FuaXphdGlvbkRETDogRHJvcGRvd25MaXN0Q29tcG9uZW50O1xyXG5cclxuICAvL1JlcXVpcmVkIGxpc3RzXHJcbiAgU2NvcGVzTGlzdDogYW55W10gPSBbXTtcclxuICBQZXJtaXNzaW9uTGlzdDogYW55W10gPSBbXTtcclxuICBVc2Vyc0xpc3Q6IGFueVtdID0gW107XHJcbiAgTG9va3Vwc0xpc3Q6IGFueVtdID0gW107XHJcbiAgTG9va3VwSXRlbXNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIFZhbHVlVHlwZUxpc3Q6IGFueVtdID0gW107XHJcbiAgVmFsdWVTb3VyY2VMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIENhdGVnb3J5TGlzdDogYW55W10gPSBbXTtcclxuICBvcmdhbml6YXRpb25MaXN0OiBEcm9wZG93bkxpc3RJdGVtW10gPSBbXTs7XHJcblxyXG5cclxuICAvL0FkZCxFZGl0IHJlcXVpcmVkIGZsYWdzXHJcbiAgU2hvd1Blcm1pc3Npb25MaXN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgU2hvd1VzZXJzTGlzdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFNob3dMb29rdXBMaXN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgU2hvd1ZhbHVlQW5kRGVmYXVsdFZhbHVlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgU2hvd1ZhbHVlVG9nZ2xlQW5kRGVmYXVsdFZhbHVlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgU2hvd1NvdXJjZUZ1bmN0aW9uUGF0aDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFNob3dEcm9wRG93blNvdXJjZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFNob3dMb29rdXBJdGVtc0xpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBTaG93U291cmNlRnVuY3Rpb25EYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd0Z1bmN0aW9uTm90Rm91bmRFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNvdXJjZUZ1bmN0aW9uRGF0YU5vdExvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNvbmZpZ3VyYXRpb246IGFueSA9IG51bGw7XHJcblxyXG4gIC8vI3JlZ2lvbiBhZGQgbW9kYWwgY29udHJvbFxyXG4gIGFkZENvbmZpZ3VyYXRpb25Gb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgYWRkQ29uZmlndXJhdGlvbkZvcm1PcHRpb25zOiBGb3JtT3B0aW9ucztcclxuICBLZXk6IFRleHRCb3hPcHRpb25zO1xyXG4gIFZhbHVlOiBUZXh0Qm94T3B0aW9ucztcclxuICBEZWZhdWx0VmFsdWU6IFRleHRCb3hPcHRpb25zO1xyXG4gIEZ1bmN0aW9uU291cmNlUGF0aDogVGV4dEJveE9wdGlvbnM7XHJcbiAgU291cmNlRnVuY1ZhbHVlOiBEcm9wZG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgU291cmNlRnVuY0RlZmF1bHRWYWx1ZTogRHJvcGRvd25PcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gIGxvYWRKc29uVG9nZ2xlOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgVmFsdWVUb2dnZWw6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICBEZWZhdWx0VmFsdWVUb2dnZWw6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICBTY29wZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIFR5cGU6IERyb3Bkb3duT3B0aW9ucztcclxuICBDYXRlZ29yeTogRHJvcGRvd25PcHRpb25zO1xyXG4gIFBlcm1pc3Npb25TZXQ6IERyb3Bkb3duT3B0aW9ucztcclxuICBVc2VyOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgU291cmNlOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgTG9va3VwOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgTG9va3VwVmFsdWU6IERyb3Bkb3duT3B0aW9ucztcclxuICBMb29rdXBEZWZhdWx0VmFsdWU6IERyb3Bkb3duT3B0aW9ucztcclxuICBhZGRPcmdhbml6YXRpb246IERyb3Bkb3duT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBlZGl0IG1vZGVsIGNvbnRyb2xcclxuICBFZGl0Q29uZmlndXJhdGlvbkZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBFZGl0Q29uZmlndXJhdGlvbkZvcm1PcHRpb25zOiBGb3JtT3B0aW9ucztcclxuICBFZGl0S2V5OiBUZXh0Qm94T3B0aW9ucyA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gIEVkaXRUZXh0VmFsdWU6IFRleHRCb3hPcHRpb25zID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgRWRpdFRleHREZWZhdWx0VmFsdWU6IFRleHRCb3hPcHRpb25zID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgRWRpdFNvdXJjZVBhdGg6IFRleHRCb3hPcHRpb25zID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgRWRpdEZ1bmN0aW9uU291cmNlUGF0aDogVGV4dEJveE9wdGlvbnMgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICBFZGl0VmFsdWVUb2dnZWxlOiBUb2dnbGVTbGlkZU9wdGlvbnMgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgRWRpdERlZmF1bHRWYWx1ZVRvZ2dlbGU6IFRvZ2dsZVNsaWRlT3B0aW9ucyA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICBFZGl0U2NvcGU6IERyb3Bkb3duT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICBFZGl0VHlwZTogRHJvcGRvd25PcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gIEVkaXRQZXJtaXNzaW9uU2V0OiBEcm9wZG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgRWRpdFVzZXI6IERyb3Bkb3duT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICBFZGl0U291cmNlOiBEcm9wZG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgRWRpdExvb2t1cDogRHJvcGRvd25PcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gIEVkaXRMb29rdXBWYWx1ZTogRHJvcGRvd25PcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gIEVkaXRMb29rdXBEZWZhdWx0VmFsdWU6IERyb3Bkb3duT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICBFZGl0U291cmNlRnVuY1ZhbHVlOiBEcm9wZG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWU6IERyb3Bkb3duT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICBlZGl0T3JnYW5pemF0aW9uOiBEcm9wZG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcblxyXG4gIENvbmZpZ3VyYXRpb25JZDogc3RyaW5nO1xyXG4gIENvbmZpZ3VyYXRpb25WYWx1ZVR5cGVJRF9HVUlEOiBzdHJpbmc7XHJcbiAgRWRpdENvbmZpZ3VyYXRpb25TY29wZUlEX0dVSUQ6IHN0cmluZztcclxuICBFZGl0Q29uZmlndXJhdGlvbkRETFNvdXJjZUlEX0dVSUQ6IHN0cmluZztcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIGRlbGV0ZSAgTW9kZWwgQ29udHJvbHNcclxuICBkZWxldGVDb25maWd1cmF0aW9uSWQ6IHN0cmluZztcclxuICBEZWxldGVDb25maXJtYXRpb25PcHRpb25zOiBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnM7XHJcbiAgZGVsZXRlQ29udHJvbExvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ0NvbmZpcm1hdGlvbk1vZGFsQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBDb25maXJtYXRpb25Nb2RhbENvbnRyb2w6IENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50O1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gUmVsb2FkIEpzb24gTW9kZWwgQ29udHJvbHNcclxuICByZWxvYWRDb25maXJtYXRpb25PcHRpb25zOiBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnM7XHJcbiAgcmVsb2FkQ29udHJvbExvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ1JlbG9hZENvbmZpcm1hdGlvbk1vZGFsQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSByZWxvYWRDb25maXJtYXRpb25Nb2RhbENvbnRyb2w6IENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50O1xyXG4gIGVkaXRMb2FkSnNvblRvZ2dsZTogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLFxyXG4gICAgcHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgYmJzZlRyYW5zbGF0ZVNlcnZpY2U6IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlbnZpcm9ubWVudFNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgQ29uZmlndXJhdGlvbnNTZXJ2aWNlOiBDb25maWd1cmF0aW9uc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXHJcbiAgICBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuc2hvd1BhZ2VDb250ZW50ID0gdHJ1ZTtcclxuICAgIC8vUGFnZSBoZWFkZXIgKGJyZWFkY3J1bWIgYW5kIHRpdGxlKVxyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VUaXRsZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNvbmZpZ3VyYXRpb25cIik7XHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzID0gW1xyXG4gICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJIb21lXCIpLCBwYXRoOiAnL0FkbWluL0hvbWUnLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICB7IHRpdGxlOiAnJywgcGF0aDogJycsIGlzU2VwYXJhdG9yOiB0cnVlLCBpc0FjdGl2ZTogZmFsc2UgfVxyXG5cclxuICAgIF07XHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVUaXRsZSgpO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlQnJlYWRjcnVtYnMoKTtcclxuXHJcbiAgICAvL29uIGxhbmcgY2hhbmdlZFxyXG4gICAgdGhpcy5iYnNmVHJhbnNsYXRlU2VydmljZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICB0aGlzLnNob3dQYWdlQ29udGVudCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuUHJvZHVjdGlvbk1vZGUgPSB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRQcm9kdWN0aW9uTW9kZSgpO1xyXG5cclxuICAgIHRoaXMuaXNNdWx0aVRlbmFuY3lBbGxvd2VkID0gdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0QWxsb3dNdWx0aVRlbmFuY3koKTtcclxuICAgIHRoaXMuY3VycmVudFVzZXJQcm9maWxlID0gdGhpcy5hdXRoU2VydmljZS5nZXRDdXJyZW50VXNlcigpLnByb2ZpbGU7XHJcbiAgICB0aGlzLmlzU3VwZXJBZG1pbiA9IHRoaXMuY3VycmVudFVzZXJQcm9maWxlLnBlcm1pc3Npb25TZXRTSUQgPT0gdGhpcy5wZXJtaXNzaW9uU2V0cy5BZG1pbjtcclxuXHJcbiAgICAvL2luaXRpYWxpemUgcGFnZVxyXG4gICAgdGhpcy5pbml0aWFsaXplUGFnZSgpO1xyXG4gIH1cclxuICBpbml0aWFsaXplUGFnZSgpIHtcclxuICAgIC8vIFRleHRCb3ggaW5pdFxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3gubmFtZSA9IFwic2VhcmNoVGV4dEJveFwiO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5wbGFjZWhvbGRlciA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlYXJjaEJ5TmFtZVwiKTtcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5oaWRlTGFiZWwgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMub3JnYW5pemF0aW9uT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgIHRoaXMub3JnYW5pemF0aW9uT3B0aW9ucy5uYW1lID0gXCJvcmdhbml6YXRpb25cIjtcclxuICAgIHRoaXMub3JnYW5pemF0aW9uT3B0aW9ucy5sYWJlbEtleSA9IFwiT3JnYW5pemF0aW9uc1wiO1xyXG4gICAgdGhpcy5vcmdhbml6YXRpb25PcHRpb25zLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICB0aGlzLm9yZ2FuaXphdGlvbk9wdGlvbnMuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLmZvcm1Db250cm9sTmFtZSA9IHRoaXMuc2VhcmNoVGV4dEJveC5uYW1lO1xyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuYWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwic2VhcmNoVGV4dFwiO1xyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuaXNGb3JtQ29udHJvbCA9IHRydWU7XHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5maWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94O1xyXG5cclxuICAgIHRoaXMuQ29uZmlndXJhdGlvblBhZ2luZyA9IG5ldyBQYWdpbmdPcHRpb25zKCk7XHJcbiAgICB0aGlzLkNvbmZpZ3VyYXRpb25QYWdpbmcuYWN0aW9uUG9zdFVSTCA9IHRoaXMuQXBpVXJsICsgJ0dldENvbmZpZ3VyYXRpb25zQnlGaWx0ZXInO1xyXG4gICAgdGhpcy5Db25maWd1cmF0aW9uUGFnaW5nLm9uS2V5UHJlc3NGaWx0ZXJzQ29udHJvbE5hbWVzID0gW3RoaXMuc2VhcmNoVGV4dEJveC5uYW1lXTtcclxuICAgIHRoaXMuQ29uZmlndXJhdGlvblBhZ2luZy5maWx0ZXJzID0gW3RoaXMuVGV4dElucHV0RmlsdGVyXTtcclxuICAgIHRoaXMuQ29uZmlndXJhdGlvblBhZ2luZy52YWxpZGF0aW9uVG9rZW4gPSB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhvcml6YXRpb25IZWFkZXJWYWx1ZSgpO1xyXG4gICAgdGhpcy5Db25maWd1cmF0aW9uUGFnaW5nLnJlc2V0RmlsdGVyQnV0dG9uTmFtZSA9ICdjb25maWd1cmF0aW9uUmVzZXRCdXR0b24nO1xyXG5cclxuICAgIGlmICh0aGlzLmlzTXVsdGlUZW5hbmN5QWxsb3dlZCAmJiB0aGlzLmlzU3VwZXJBZG1pbikge1xyXG4gICAgICB0aGlzLkNvbmZpZ3VyYXRpb25QYWdpbmcuZmlsdGVycyA9IHRoaXMuQ29uZmlndXJhdGlvblBhZ2luZy5maWx0ZXJzID8/IFtdO1xyXG4gICAgICB0aGlzLkNvbmZpZ3VyYXRpb25QYWdpbmcuZHJvcGRvd25GaWx0ZXJzQ29udHJvbE5hbWVzID0gdGhpcy5Db25maWd1cmF0aW9uUGFnaW5nLmRyb3Bkb3duRmlsdGVyc0NvbnRyb2xOYW1lcyA/PyBbXTtcclxuXHJcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uc0ZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uc0ZpbHRlci5mb3JtQ29udHJvbE5hbWUgPSB0aGlzLm9yZ2FuaXphdGlvbk9wdGlvbnMubmFtZTtcclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25zRmlsdGVyLmFjdGlvblBhcmFtZXRlck5hbWUgPSBcIm9yZ2FuaXphdGlvbklkXCI7XHJcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uc0ZpbHRlci5pc0Zvcm1Db250cm9sID0gdHJ1ZTtcclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25zRmlsdGVyLmZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLkRyb3Bkb3duTGlzdDtcclxuXHJcbiAgICAgIHRoaXMuQ29uZmlndXJhdGlvblBhZ2luZy5maWx0ZXJzLnB1c2godGhpcy5vcmdhbml6YXRpb25zRmlsdGVyKTtcclxuICAgICAgdGhpcy5Db25maWd1cmF0aW9uUGFnaW5nLmRyb3Bkb3duRmlsdGVyc0NvbnRyb2xOYW1lcy5wdXNoKHRoaXMub3JnYW5pemF0aW9uc0ZpbHRlci5mb3JtQ29udHJvbE5hbWUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc0ZpbHRlckxvYWRlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBsb2FkTGlzdHMoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNGaWx0ZXJEYXRhTG9hZGVkKSB7XHJcbiAgICAgIHRoaXMuQ29uZmlndXJhdGlvbnNTZXJ2aWNlLmxvYWREcm9wZG93bkZvckZpbHRlcnMoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGxldCBkcm9wZG93bnNSZXNwb25zZU1vZGVsID0gcmVzdWx0O1xyXG4gICAgICAgIGxldCBmaWx0ZXJPcmdhbml6YXRpb25MaXN0ID0gWzxEcm9wZG93bkxpc3RJdGVtPntcclxuICAgICAgICAgIGtleTogQ29uc3RhbnRzLk5vdEFzc2lnbmVkVG9Pcmdhbml6YXRpb24sXHJcbiAgICAgICAgICB2YWx1ZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTm90QXNzaWduZWRcIiksXHJcbiAgICAgICAgfV0uY29uY2F0KGRyb3Bkb3duc1Jlc3BvbnNlTW9kZWwub3JnYW5pemF0aW9uKTtcclxuICAgICAgICBsZXQgb3JnYW5pemF0aW9uc0VsZW1lbnQgPSB0aGlzLm9yZ2FuaXphdGlvbkRETDtcclxuICAgICAgICBvcmdhbml6YXRpb25zRWxlbWVudC51cGRhdGVEYXRhU291cmNlKGZpbHRlck9yZ2FuaXphdGlvbkxpc3QpO1xyXG5cclxuICAgICAgICB0aGlzLmlzRmlsdGVyRGF0YUxvYWRlZCA9IHRydWU7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9QYWdpbmcgZnVuY3Rpb25zXHJcbiAgc2V0Q29uZmlndXJhdGlvbkxpc3RSZXN1bHQocmVzdWx0KSB7XHJcbiAgICB0aGlzLkNvbmZpZ3VyYXRpb25QYWdpbmdSZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLnNob3dQYWdlQ29udGVudCA9IHRydWU7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgfVxyXG4gIHNlYXJjaENsaWVudFNpZGUoc2VhcmNoVmFsdWUpIHtcclxuICAgIGlmIChzZWFyY2hWYWx1ZSlcclxuICAgICAgdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0ID0gdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0LmZpbHRlcihcclxuICAgICAgICBmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgICAgcmV0dXJuIGl0ZW0ua2V5LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdCA9IHRoaXMuQ29uZmlndXJhdGlvblBhZ2luZ1Jlc3VsdDtcclxuICB9XHJcblxyXG5cclxuICAvLyNyZWdpb24gQWRkIGNvbmZpZ3VyYXRpb25cclxuICBzaG93QWRkQ29uZmlndXJhdGlvbk1vZGFsKEFkZENvbmZpZ3VyYXRpb25Nb2RhbCkge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKTtcclxuXHJcbiAgICB0aGlzLlNob3dQZXJtaXNzaW9uTGlzdCA9IGZhbHNlO1xyXG4gICAgdGhpcy5TaG93VXNlcnNMaXN0ID0gZmFsc2U7XHJcbiAgICB0aGlzLlNob3dMb29rdXBMaXN0ID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5yZXNldENvbmZpZ3VyYXRpb25GbGFncygpO1xyXG4gICAgdGhpcy5Db25maWd1cmF0aW9uc1NlcnZpY2UubG9hZEFkZERyb3Bkb3ducygpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIC8vTGlzdHMgbG9hZGluZ1xyXG4gICAgICBsZXQgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgdGhpcy5TY29wZXNMaXN0ID0gcmVzdWx0T2JqLnNjb3BlcztcclxuICAgICAgdGhpcy5QZXJtaXNzaW9uTGlzdCA9IHJlc3VsdE9iai5wZXJtaXNzaW9uTGlzdDtcclxuICAgICAgdGhpcy5Vc2Vyc0xpc3QgPSByZXN1bHRPYmoudXNlcnM7XHJcbiAgICAgIHRoaXMuTG9va3Vwc0xpc3QgPSByZXN1bHRPYmoubG9va3VwcztcclxuICAgICAgdGhpcy5WYWx1ZVR5cGVMaXN0ID0gcmVzdWx0T2JqLnZhbHVlVHlwZTtcclxuICAgICAgdGhpcy5WYWx1ZVNvdXJjZUxpc3QgPSByZXN1bHRPYmoudmFsdWVTb3VyY2U7XHJcbiAgICAgIHRoaXMuQ2F0ZWdvcnlMaXN0ID0gcmVzdWx0T2JqLmNhdGVnb3J5O1xyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvbkxpc3QgPSByZXN1bHRPYmoub3JnYW5pemF0aW9ucztcclxuXHJcblxyXG4gICAgICAvL0Zvcm0gYW5kIGNvbnRyb2xzIHJlaW5pdGlhbGl6ZVxyXG4gICAgICB0aGlzLmFkZENvbmZpZ3VyYXRpb25Gb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgICAgIHRoaXMuYWRkQ29uZmlndXJhdGlvbkZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkQ29uZmlndXJhdGlvbkZvcm1PcHRpb25zLmZvcm1Hcm91cCA9IHRoaXMuYWRkQ29uZmlndXJhdGlvbkZvcm07XHJcbiAgICAgIHRoaXMuYWRkQ29uZmlndXJhdGlvbkZvcm1PcHRpb25zLmdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEFkZENvbmZpZ3VyYXRpb25Nb2RlbDtcclxuICAgICAgdGhpcy5hZGRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnMuc2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRDb25maWd1cmF0aW9uRnVuY3Rpb247XHJcbiAgICAgIHRoaXMuYWRkQ29uZmlndXJhdGlvbkZvcm1PcHRpb25zLnBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudDtcclxuXHJcbiAgICAgIC8vU3RhdGljIGNvbnRyb2xzXHJcblxyXG4gICAgICB0aGlzLmFkZE9yZ2FuaXphdGlvbi5uYW1lID0gXCJPcmdhbml6YXRpb25JRF9HVUlEXCI7XHJcbiAgICAgIHRoaXMuYWRkT3JnYW5pemF0aW9uLmxhYmVsS2V5ID0gXCJPcmdhbml6YXRpb25cIjtcclxuICAgICAgdGhpcy5hZGRPcmdhbml6YXRpb24uc2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgIHRoaXMuYWRkT3JnYW5pemF0aW9uLmRhdGFTb3VyY2UgPSB0aGlzLm9yZ2FuaXphdGlvbkxpc3Q7XHJcbiAgICAgIHRoaXMuYWRkT3JnYW5pemF0aW9uLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWRkT3JnYW5pemF0aW9uLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hZGRPcmdhbml6YXRpb24uaXNSZXF1aXJlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgdGhpcy5LZXkgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5LZXkubmFtZSA9IFwiS2V5XCI7XHJcbiAgICAgIHRoaXMuS2V5LmxhYmVsS2V5ID0gXCJLZXlcIjtcclxuICAgICAgdGhpcy5LZXkudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLktleS5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5LZXkudmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLktleS5tYXhMZW5ndGggPSAyNTY7XHJcblxyXG4gICAgICB0aGlzLlNjb3BlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlNjb3BlLm5hbWUgPSBcIlNjb3BlXCI7XHJcbiAgICAgIHRoaXMuU2NvcGUubGFiZWxLZXkgPSBcIlNjb3BlXCI7XHJcbiAgICAgIHRoaXMuU2NvcGUuc2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgIHRoaXMuU2NvcGUuZGF0YVNvdXJjZSA9IHRoaXMuU2NvcGVzTGlzdDtcclxuICAgICAgdGhpcy5TY29wZS5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLlNjb3BlLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5TY29wZS5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuVHlwZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5UeXBlLm5hbWUgPSBcIlR5cGVcIjtcclxuICAgICAgdGhpcy5UeXBlLmxhYmVsS2V5ID0gXCJUeXBlXCI7XHJcbiAgICAgIHRoaXMuVHlwZS5zZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgdGhpcy5UeXBlLmRhdGFTb3VyY2UgPSB0aGlzLlZhbHVlVHlwZUxpc3Q7XHJcbiAgICAgIHRoaXMuVHlwZS5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLlR5cGUuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLlR5cGUuaXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLkNhdGVnb3J5ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkNhdGVnb3J5Lm5hbWUgPSBcIkNhdGVnb3J5XCI7XHJcbiAgICAgIHRoaXMuQ2F0ZWdvcnkubGFiZWxLZXkgPSBcIkNhdGVnb3J5XCI7XHJcbiAgICAgIHRoaXMuQ2F0ZWdvcnkuc2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgIHRoaXMuQ2F0ZWdvcnkuZGF0YVNvdXJjZSA9IHRoaXMuQ2F0ZWdvcnlMaXN0O1xyXG4gICAgICB0aGlzLkNhdGVnb3J5LnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuQ2F0ZWdvcnkuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLkNhdGVnb3J5LmlzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5QZXJtaXNzaW9uU2V0ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlBlcm1pc3Npb25TZXQubmFtZSA9IFwiUGVybWlzc2lvblNldFwiO1xyXG4gICAgICB0aGlzLlBlcm1pc3Npb25TZXQubGFiZWxLZXkgPSBcIlBlcm1pc3Npb25TZXRcIjtcclxuICAgICAgdGhpcy5QZXJtaXNzaW9uU2V0LnNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICB0aGlzLlBlcm1pc3Npb25TZXQuZGF0YVNvdXJjZSA9IHRoaXMuUGVybWlzc2lvbkxpc3Q7XHJcbiAgICAgIHRoaXMuUGVybWlzc2lvblNldC5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLlBlcm1pc3Npb25TZXQuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLlBlcm1pc3Npb25TZXQuaXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLlVzZXIgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuVXNlci5uYW1lID0gXCJVc2VyXCI7XHJcbiAgICAgIHRoaXMuVXNlci5sYWJlbEtleSA9IFwiVXNlclwiO1xyXG4gICAgICB0aGlzLlVzZXIuc2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgIHRoaXMuVXNlci5kYXRhU291cmNlID0gdGhpcy5Vc2Vyc0xpc3Q7XHJcbiAgICAgIHRoaXMuVXNlci5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLlVzZXIuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLlVzZXIuaXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLmxvYWRKc29uVG9nZ2xlID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmxvYWRKc29uVG9nZ2xlLm5hbWUgPSBcIklzTG9hZEluSnNvblwiO1xyXG4gICAgICB0aGlzLmxvYWRKc29uVG9nZ2xlLmxhYmVsS2V5ID0gXCJMb2FkSnNvblRvZ2dsZVwiO1xyXG4gICAgICB0aGlzLmxvYWRKc29uVG9nZ2xlLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMubG9hZEpzb25Ub2dnbGUudmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcblxyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEFkZENvbmZpZ3VyYXRpb25Nb2RhbCk7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIENoYW5nZVR5cGVWYWx1ZShrZXkpIHtcclxuICAgIHRoaXMucmVzZXRDb25maWd1cmF0aW9uRmxhZ3MoKTtcclxuICAgIHRoaXMucmVtb3ZlRm9ybUNvbnRyb2xzKCk7XHJcbiAgICBrZXkgPSBrZXkudG9Mb3dlckNhc2UoKTtcclxuICAgIHN3aXRjaCAoa2V5KSB7XHJcbiAgICAgIGNhc2UgQ29uZmlndXJhdGlvblZhbHVlVHlwZXMuVGV4dDpcclxuICAgICAgICB0aGlzLlZhbHVlID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5WYWx1ZS5uYW1lID0gXCJWYWx1ZVwiO1xyXG4gICAgICAgIHRoaXMuVmFsdWUubGFiZWxLZXkgPSBcIlZhbHVlXCI7XHJcbiAgICAgICAgdGhpcy5WYWx1ZS50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgdGhpcy5WYWx1ZS52YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5WYWx1ZS5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLlZhbHVlLm1heExlbmd0aCA9IDUwMDA7XHJcblxyXG4gICAgICAgIHRoaXMuRGVmYXVsdFZhbHVlID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5EZWZhdWx0VmFsdWUubmFtZSA9IFwiRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgdGhpcy5EZWZhdWx0VmFsdWUubGFiZWxLZXkgPSBcIkRlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgIHRoaXMuRGVmYXVsdFZhbHVlLnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICB0aGlzLkRlZmF1bHRWYWx1ZS52YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5EZWZhdWx0VmFsdWUuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5EZWZhdWx0VmFsdWUubWF4TGVuZ3RoID0gNTAwMDtcclxuXHJcbiAgICAgICAgdGhpcy5TaG93VmFsdWVBbmREZWZhdWx0VmFsdWUgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbmZpZ3VyYXRpb25WYWx1ZVR5cGVzLlRvZ2dsZTpcclxuICAgICAgICB0aGlzLlZhbHVlVG9nZ2VsID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuVmFsdWVUb2dnZWwubmFtZSA9IFwiVmFsdWVUb2dnZWxcIjtcclxuICAgICAgICB0aGlzLlZhbHVlVG9nZ2VsLmxhYmVsS2V5ID0gXCJWYWx1ZVwiO1xyXG4gICAgICAgIHRoaXMuVmFsdWVUb2dnZWwudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLlZhbHVlVG9nZ2VsLnZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG5cclxuICAgICAgICB0aGlzLkRlZmF1bHRWYWx1ZVRvZ2dlbCA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLkRlZmF1bHRWYWx1ZVRvZ2dlbC5uYW1lID0gXCJEZWZhdWx0VmFsdWVUb2dnZWxcIjtcclxuICAgICAgICB0aGlzLkRlZmF1bHRWYWx1ZVRvZ2dlbC5sYWJlbEtleSA9IFwiRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgdGhpcy5EZWZhdWx0VmFsdWVUb2dnZWwudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLkRlZmF1bHRWYWx1ZVRvZ2dlbC52aWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuICAgICAgICB0aGlzLlNob3dWYWx1ZVRvZ2dsZUFuZERlZmF1bHRWYWx1ZSA9IHRydWU7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbmZpZ3VyYXRpb25WYWx1ZVR5cGVzLkRyb3Bkb3duTGlzdDpcclxuICAgICAgICB0aGlzLlNvdXJjZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLlNvdXJjZS5uYW1lID0gXCJTb3VyY2VcIjtcclxuICAgICAgICB0aGlzLlNvdXJjZS5sYWJlbEtleSA9IFwiU291cmNlXCI7XHJcbiAgICAgICAgdGhpcy5Tb3VyY2Uuc2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5Tb3VyY2UuZGF0YVNvdXJjZSA9IHRoaXMuVmFsdWVTb3VyY2VMaXN0O1xyXG4gICAgICAgIHRoaXMuU291cmNlLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5Tb3VyY2UuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuU291cmNlLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuU2hvd0Ryb3BEb3duU291cmNlID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIENoYW5nZVNvdXJjZShrZXkpIHtcclxuICAgIGtleSA9IGtleS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgc3dpdGNoIChrZXkpIHtcclxuICAgICAgY2FzZSBDb25maWd1cmF0aW9uRERMU291cmNlLkxvb2t1cDpcclxuICAgICAgICB0aGlzLmFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJGdW5jdGlvblNvdXJjZVBhdGhcIik7XHJcbiAgICAgICAgdGhpcy5hZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiU291cmNlRnVuY1ZhbHVlXCIpO1xyXG4gICAgICAgIHRoaXMuYWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWVcIik7XHJcbiAgICAgICAgdGhpcy5Mb29rdXAgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5Mb29rdXAubmFtZSA9IFwiTG9va3VwXCI7XHJcbiAgICAgICAgdGhpcy5Mb29rdXAubGFiZWxLZXkgPSBcIkxvb2t1cFwiO1xyXG4gICAgICAgIHRoaXMuTG9va3VwLnNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuTG9va3VwLmRhdGFTb3VyY2UgPSB0aGlzLkxvb2t1cHNMaXN0O1xyXG4gICAgICAgIHRoaXMuTG9va3VwLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5Mb29rdXAuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuTG9va3VwLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLlNob3dMb29rdXBMaXN0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLlNob3dTb3VyY2VGdW5jdGlvblBhdGggPSBmYWxzZTtcclxuICAgICAgICB0aGlzLlNob3dTb3VyY2VGdW5jdGlvbkRhdGEgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNvdXJjZUZ1bmN0aW9uRGF0YU5vdExvYWRlZCA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbmZpZ3VyYXRpb25ERExTb3VyY2UuRnVuY3Rpb246XHJcbiAgICAgICAgdGhpcy5hZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiTG9va3VwXCIpO1xyXG4gICAgICAgIHRoaXMuYWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIkxvb2t1cFZhbHVlXCIpO1xyXG4gICAgICAgIHRoaXMuYWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIkxvb2t1cERlZmF1bHRWYWx1ZVwiKTtcclxuXHJcbiAgICAgICAgdGhpcy5GdW5jdGlvblNvdXJjZVBhdGggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLkZ1bmN0aW9uU291cmNlUGF0aC5uYW1lID0gXCJGdW5jdGlvblNvdXJjZVBhdGhcIjtcclxuICAgICAgICB0aGlzLkZ1bmN0aW9uU291cmNlUGF0aC5sYWJlbFZhbHVlID0gXCJTb3VyY2VQYXRoXCI7XHJcbiAgICAgICAgdGhpcy5GdW5jdGlvblNvdXJjZVBhdGgubGFiZWxLZXkgPSBcIlNvdXJjZVBhdGhcIjtcclxuICAgICAgICB0aGlzLkZ1bmN0aW9uU291cmNlUGF0aC50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgdGhpcy5GdW5jdGlvblNvdXJjZVBhdGgudmFsdWUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuRnVuY3Rpb25Tb3VyY2VQYXRoLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLlNob3dTb3VyY2VGdW5jdGlvblBhdGggPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc291cmNlRnVuY3Rpb25EYXRhTm90TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLlNob3dMb29rdXBMaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5TaG93TG9va3VwSXRlbXNMaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW1vdmVGb3JtQ29udHJvbHMoKSB7XHJcbiAgICB0aGlzLmFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJWYWx1ZVwiKTtcclxuICAgIHRoaXMuYWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIkRlZmF1bHRWYWx1ZVwiKTtcclxuICAgIHRoaXMuYWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIlZhbHVlVG9nZ2VsXCIpO1xyXG4gICAgdGhpcy5hZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiRGVmYXVsdFZhbHVlVG9nZ2VsXCIpO1xyXG4gICAgdGhpcy5hZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiU291cmNlXCIpO1xyXG4gICAgdGhpcy5hZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiTG9va3VwXCIpO1xyXG4gICAgdGhpcy5hZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiTG9va3VwVmFsdWVcIik7XHJcbiAgICB0aGlzLmFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJMb29rdXBEZWZhdWx0VmFsdWVcIik7XHJcbiAgICB0aGlzLmFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJGdW5jdGlvblNvdXJjZVBhdGhcIik7XHJcbiAgICB0aGlzLmFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJTb3VyY2VGdW5jVmFsdWVcIik7XHJcbiAgICB0aGlzLmFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJTb3VyY2VGdW5jRGVmYXVsdFZhbHVlXCIpO1xyXG4gIH1cclxuXHJcbiAgQ2hhbmdlTG9va3VwKGtleSwgaXNBZGQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuQ29uZmlndXJhdGlvbnNTZXJ2aWNlLmxvYWRMb29rdXBJdGVtcyhrZXkpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCBSZXN1bHQgPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICB0aGlzLkxvb2t1cEl0ZW1zTGlzdCA9IFJlc3VsdC5sb29rdXBJdGVtcztcclxuICAgICAgaWYgKHRoaXMuU2hvd0xvb2t1cEl0ZW1zTGlzdCkge1xyXG4gICAgICAgIGlmIChpc0FkZCkge1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBWYWx1ZS5zZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuTG9va3VwRGVmYXVsdFZhbHVlLnNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBWYWx1ZS5kYXRhU291cmNlID0gdGhpcy5Mb29rdXBJdGVtc0xpc3Q7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cERlZmF1bHRWYWx1ZS5kYXRhU291cmNlID0gdGhpcy5Mb29rdXBJdGVtc0xpc3Q7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUuc2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUuc2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZS5kYXRhU291cmNlID0gdGhpcy5Mb29rdXBJdGVtc0xpc3Q7XHJcbiAgICAgICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUuZGF0YVNvdXJjZSA9IHRoaXMuTG9va3VwSXRlbXNMaXN0O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAoaXNBZGQpIHtcclxuICAgICAgICAgIHRoaXMuTG9va3VwVmFsdWUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cFZhbHVlLm5hbWUgPSBcIkxvb2t1cFZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cFZhbHVlLmxhYmVsS2V5ID0gXCJWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBWYWx1ZS5zZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuTG9va3VwVmFsdWUuZGF0YVNvdXJjZSA9IHRoaXMuTG9va3VwSXRlbXNMaXN0O1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBWYWx1ZS5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBWYWx1ZS5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cFZhbHVlLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBWYWx1ZS5zaG93QXN0ZXJpc2sgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIHRoaXMuTG9va3VwRGVmYXVsdFZhbHVlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBEZWZhdWx0VmFsdWUubmFtZSA9IFwiTG9va3VwRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cERlZmF1bHRWYWx1ZS5sYWJlbEtleSA9IFwiRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cERlZmF1bHRWYWx1ZS5zZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuTG9va3VwRGVmYXVsdFZhbHVlLmRhdGFTb3VyY2UgPSB0aGlzLkxvb2t1cEl0ZW1zTGlzdDtcclxuICAgICAgICAgIHRoaXMuTG9va3VwRGVmYXVsdFZhbHVlLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cERlZmF1bHRWYWx1ZS5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cERlZmF1bHRWYWx1ZS5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLlNob3dMb29rdXBJdGVtc0xpc3QgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLm5hbWUgPSBcIkVkaXRMb29rdXBWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUubGFiZWxLZXkgPSBcIlZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZS5zZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLmRhdGFTb3VyY2UgPSB0aGlzLkxvb2t1cEl0ZW1zTGlzdDtcclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZS5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZS5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUubmFtZSA9IFwiRWRpdExvb2t1cERlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLmxhYmVsS2V5ID0gXCJEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5zZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5kYXRhU291cmNlID0gdGhpcy5Mb29rdXBJdGVtc0xpc3Q7XHJcbiAgICAgICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuU2hvd0xvb2t1cEl0ZW1zTGlzdCA9IHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldEFkZENvbmZpZ3VyYXRpb25Nb2RlbCA9ICgpOiBDb25maWd1cmF0aW9uTW9kZWxbXSA9PiB7XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLmFkZENvbmZpZ3VyYXRpb25Gb3JtLnZhbHVlIGFzIGFueTtcclxuICAgIGxldCBhZGRNb2RlbDogQ29uZmlndXJhdGlvbk1vZGVsID0gbmV3IENvbmZpZ3VyYXRpb25Nb2RlbCgpO1xyXG4gICAgYWRkTW9kZWwua2V5ID0gUmVzdWx0TW9kZWwuS2V5O1xyXG4gICAgYWRkTW9kZWwuc2NvcGVJRF9HVUlEID0gUmVzdWx0TW9kZWwuU2NvcGU7XHJcbiAgICBhZGRNb2RlbC52YWx1ZVR5cGVJRF9HVUlEID0gUmVzdWx0TW9kZWwuVHlwZTtcclxuICAgIGFkZE1vZGVsLmNhdGVnb3J5SURfR1VJRCA9IFJlc3VsdE1vZGVsLkNhdGVnb3J5O1xyXG4gICAgYWRkTW9kZWwudGV4dFZhbHVlID0gUmVzdWx0TW9kZWwuVmFsdWU7XHJcbiAgICBhZGRNb2RlbC5kZWZhdWx0VGV4dFZhbHVlID0gUmVzdWx0TW9kZWwuRGVmYXVsdFZhbHVlO1xyXG4gICAgYWRkTW9kZWwuYm9vbFZhbHVlID0gUmVzdWx0TW9kZWwuVmFsdWVUb2dnZWw7XHJcbiAgICBhZGRNb2RlbC5pc0xvYWRJbkpzb24gPSBSZXN1bHRNb2RlbC5Jc0xvYWRJbkpzb247XHJcbiAgICBhZGRNb2RlbC5kZWZhdWx0Qm9vbFZhbHVlID0gUmVzdWx0TW9kZWwuRGVmYXVsdFZhbHVlVG9nZ2VsO1xyXG4gICAgYWRkTW9kZWwuc291cmNlRnVuY3Rpb25OYW1lID0gUmVzdWx0TW9kZWwuRnVuY3Rpb25Tb3VyY2VQYXRoO1xyXG4gICAgYWRkTW9kZWwudXNlcklEX0dVSUQgPSBSZXN1bHRNb2RlbC5Vc2VyO1xyXG4gICAgYWRkTW9kZWwuc2VsZWN0ZWRMb29rdXBJRF9HVUlEID0gUmVzdWx0TW9kZWwuTG9va3VwO1xyXG4gICAgYWRkTW9kZWwudmFsdWUgPSBSZXN1bHRNb2RlbC5Mb29rdXBWYWx1ZTtcclxuICAgIGFkZE1vZGVsLmRlZmF1bHRWYWx1ZSA9IFJlc3VsdE1vZGVsLkxvb2t1cERlZmF1bHRWYWx1ZTtcclxuICAgIGFkZE1vZGVsLnBlcm1pc3Npb25TZXRJRF9HVUlEID0gUmVzdWx0TW9kZWwuUGVybWlzc2lvblNldDtcclxuICAgIGFkZE1vZGVsLnZhbHVlU291cmNlSURfR1VJRCA9IFJlc3VsdE1vZGVsLlNvdXJjZTtcclxuICAgIGFkZE1vZGVsLm9yZ2FuaXphdGlvbklEX0dVSUQgPSBSZXN1bHRNb2RlbFt0aGlzLmFkZE9yZ2FuaXphdGlvbi5uYW1lXTtcclxuXHJcbiAgICBsZXQgc291cmNlSXRlbSA9IHRoaXMuVmFsdWVTb3VyY2VMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gaXRlbS5rZXkudG9Mb3dlckNhc2UoKSA9PSBhZGRNb2RlbC52YWx1ZVNvdXJjZUlEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbSlbMF07XHJcbiAgICBpZiAoc291cmNlSXRlbSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgbGV0IENvbmZpZ3VyYXRpb25ERExTb3VyY2VOYW1lID0gc291cmNlSXRlbS52YWx1ZTtcclxuICAgICAgaWYgKENvbmZpZ3VyYXRpb25ERExTb3VyY2VOYW1lID09IFwiRnVuY3Rpb25cIikge1xyXG4gICAgICAgIGFkZE1vZGVsLnZhbHVlID0gUmVzdWx0TW9kZWwuU291cmNlRnVuY1ZhbHVlO1xyXG4gICAgICAgIGFkZE1vZGVsLmRlZmF1bHRWYWx1ZSA9IFJlc3VsdE1vZGVsLlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gQXJyYXkoYWRkTW9kZWwpO1xyXG4gIH07XHJcblxyXG4gIGdldEFkZENvbmZpZ3VyYXRpb25GdW5jdGlvbiA9IChhZGRNb2RlbDogQ29uZmlndXJhdGlvbk1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLkNvbmZpZ3VyYXRpb25zU2VydmljZS5hZGRDb25maWd1cmF0aW9uKGFkZE1vZGVsKTtcclxuICB9O1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuXHJcbiAgLy8jcmVnaW9uIEVkaXQgY29uZmlndXJhdGlvblxyXG4gIHNob3dFZGl0Q29uZmlndXJhdGlvbk1vZGFsKGNvbmZpZ3VyYXRpb25JZDogc3RyaW5nLCBFZGl0Q29uZmlndXJhdGlvbk1vZGFsKSB7XHJcbiAgICB0aGlzLkNvbmZpZ3VyYXRpb25JZCA9IGNvbmZpZ3VyYXRpb25JZDtcclxuICAgIHRoaXMucmVzZXRDb25maWd1cmF0aW9uRmxhZ3MoKTtcclxuICAgIHRoaXMuQ29uZmlndXJhdGlvbnNTZXJ2aWNlLmdldEVkaXRDb25maWd1cmF0aW9uRGF0YShjb25maWd1cmF0aW9uSWQpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgbGV0IHJlc3VsdE9iaiA9IHJlc3VsdCBhcyBhbnk7XHJcbiAgICAgIC8vRWRpdCBtb2RlbFxyXG4gICAgICBsZXQgY29uZmlndXJhdGlvbiA9IHJlc3VsdE9iai5tb2RlbDtcclxuICAgICAgLy9Mb2FkIGxvb2t1cHMgbGlzdFxyXG4gICAgICB0aGlzLkxvb2t1cHNMaXN0ID0gcmVzdWx0T2JqLmxvb2t1cHM7XHJcbiAgICAgIC8vTG9hZCBsb29rdXBJdGVtcyBsaXN0XHJcbiAgICAgIGxldCBsb29rdXBJdGVtcyA9IHJlc3VsdE9iai5sb29rdXBJdGVtc1NvdXJjZTtcclxuICAgICAgLy9Mb2FkIHBlcm1pc3Npb25zZXRzIGxpc3RcclxuICAgICAgdGhpcy5QZXJtaXNzaW9uTGlzdCA9IHJlc3VsdE9iai5wZXJtaXNzaW9uU2V0TGlzdDtcclxuICAgICAgLy9Mb2FkIHVzZXJzIGxpc3RcclxuICAgICAgdGhpcy5Vc2Vyc0xpc3QgPSByZXN1bHRPYmoudXNlcnM7XHJcbiAgICAgIC8vTG9hZCBvcmdhbml6YXRpb24gTGlzdFxyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvbkxpc3QgPSByZXN1bHRPYmoub3JnYW5pemF0aW9ucztcclxuXHJcbiAgICAgIC8vRm9ybSBhbmQgY29udHJvbHMgcmVpbml0aWFsaXplXHJcbiAgICAgIHRoaXMuRWRpdENvbmZpZ3VyYXRpb25Gb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgICAgIHRoaXMuRWRpdENvbmZpZ3VyYXRpb25Gb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnMuZm9ybUdyb3VwID0gdGhpcy5FZGl0Q29uZmlndXJhdGlvbkZvcm07XHJcbiAgICAgIHRoaXMuRWRpdENvbmZpZ3VyYXRpb25Gb3JtT3B0aW9ucy5nZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRFZGl0Q29uZmlndXJhdGlvbk1vZGVsO1xyXG4gICAgICB0aGlzLkVkaXRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnMuc2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXRFZGl0Q29uZmlndXJhdGlvbkZ1bmN0aW9uO1xyXG4gICAgICB0aGlzLkVkaXRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnMucGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50O1xyXG4gICAgICB0aGlzLkVkaXRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnMucGFnaW5nQWN0aW9uTW9kZSA9IFBhZ2luZ0FjdGlvbk1vZGUuVXBkYXRlO1xyXG5cclxuICAgICAgdGhpcy5Db25maWd1cmF0aW9uVmFsdWVUeXBlSURfR1VJRCA9IGNvbmZpZ3VyYXRpb24udmFsdWVUeXBlSURfR1VJRD8udG9Mb3dlckNhc2UoKTtcclxuICAgICAgdGhpcy5FZGl0Q29uZmlndXJhdGlvblNjb3BlSURfR1VJRCA9IGNvbmZpZ3VyYXRpb24uc2NvcGVJRF9HVUlELnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIHRoaXMuRWRpdENvbmZpZ3VyYXRpb25ERExTb3VyY2VJRF9HVUlEID0gY29uZmlndXJhdGlvbi52YWx1ZVNvdXJjZUlEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uO1xyXG5cclxuICAgICAgdGhpcy5FZGl0S2V5ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdEtleS5uYW1lID0gXCJLZXlcIjtcclxuICAgICAgdGhpcy5FZGl0S2V5LmxhYmVsS2V5ID0gXCJLZXlcIjtcclxuICAgICAgdGhpcy5FZGl0S2V5LnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5FZGl0S2V5LmlzUmVxdWlyZWQgPSAhdGhpcy5Qcm9kdWN0aW9uTW9kZTtcclxuICAgICAgdGhpcy5FZGl0S2V5LnZhbHVlID0gY29uZmlndXJhdGlvbi5rZXk7XHJcbiAgICAgIHRoaXMuRWRpdEtleS5tYXhMZW5ndGggPSAyNTY7XHJcbiAgICAgIHRoaXMuRWRpdEtleS5pc0Rpc2FibGVkID0gdGhpcy5Qcm9kdWN0aW9uTW9kZTtcclxuXHJcbiAgICAgIHRoaXMuZWRpdE9yZ2FuaXphdGlvbi5uYW1lID0gXCJPcmdhbml6YXRpb25JRF9HVUlEXCI7XHJcbiAgICAgIHRoaXMuZWRpdE9yZ2FuaXphdGlvbi5sYWJlbEtleSA9IFwiT3JnYW5pemF0aW9uXCI7XHJcbiAgICAgIHRoaXMuZWRpdE9yZ2FuaXphdGlvbi5zZWxlY3RlZEl0ZW1zID0gY29uZmlndXJhdGlvbi5vcmdhbml6YXRpb25JRF9HVUlEPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICB0aGlzLmVkaXRPcmdhbml6YXRpb24uZGF0YVNvdXJjZSA9IHRoaXMub3JnYW5pemF0aW9uTGlzdDtcclxuICAgICAgdGhpcy5lZGl0T3JnYW5pemF0aW9uLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdE9yZ2FuaXphdGlvbi5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdE9yZ2FuaXphdGlvbi5pc1JlcXVpcmVkID0gZmFsc2U7XHJcblxyXG4gICAgICB0aGlzLmVkaXRMb2FkSnNvblRvZ2dsZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0TG9hZEpzb25Ub2dnbGUubmFtZSA9IFwiSXNMb2FkSW5Kc29uXCI7XHJcbiAgICAgIHRoaXMuZWRpdExvYWRKc29uVG9nZ2xlLmxhYmVsS2V5ID0gXCJMb2FkSnNvblRvZ2dsZVwiO1xyXG4gICAgICB0aGlzLmVkaXRMb2FkSnNvblRvZ2dsZS52YWx1ZSA9IGNvbmZpZ3VyYXRpb24uaXNMb2FkSW5Kc29uO1xyXG4gICAgICB0aGlzLmVkaXRMb2FkSnNvblRvZ2dsZS52aWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuXHJcbiAgICAgIHN3aXRjaCAodGhpcy5Db25maWd1cmF0aW9uVmFsdWVUeXBlSURfR1VJRCkge1xyXG4gICAgICAgIGNhc2UgQ29uZmlndXJhdGlvblZhbHVlVHlwZXMuVGV4dDpcclxuICAgICAgICAgIHRoaXMuU2hvd1ZhbHVlQW5kRGVmYXVsdFZhbHVlID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFRleHRWYWx1ZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VGV4dFZhbHVlLm5hbWUgPSBcIkVkaXRUZXh0VmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFRleHRWYWx1ZS5sYWJlbEtleSA9IFwiVmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFRleHRWYWx1ZS50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgICB0aGlzLkVkaXRUZXh0VmFsdWUudmFsdWUgPSBjb25maWd1cmF0aW9uLnRleHRWYWx1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFRleHRWYWx1ZS5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFRleHRWYWx1ZS5tYXhMZW5ndGggPSA1MDAwO1xyXG5cclxuXHJcbiAgICAgICAgICB0aGlzLkVkaXRUZXh0RGVmYXVsdFZhbHVlID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLkVkaXRUZXh0RGVmYXVsdFZhbHVlLm5hbWUgPSBcIkVkaXRUZXh0RGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXRUZXh0RGVmYXVsdFZhbHVlLmxhYmVsS2V5ID0gXCJEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFRleHREZWZhdWx0VmFsdWUudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgICAgdGhpcy5FZGl0VGV4dERlZmF1bHRWYWx1ZS52YWx1ZSA9IGNvbmZpZ3VyYXRpb24uZGVmYXVsdFRleHRWYWx1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFRleHREZWZhdWx0VmFsdWUuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRUZXh0RGVmYXVsdFZhbHVlLm1heExlbmd0aCA9IDUwMDA7XHJcblxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25maWd1cmF0aW9uVmFsdWVUeXBlcy5Ub2dnbGU6XHJcbiAgICAgICAgICB0aGlzLlNob3dWYWx1ZVRvZ2dsZUFuZERlZmF1bHRWYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRWYWx1ZVRvZ2dlbGUgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLkVkaXRWYWx1ZVRvZ2dlbGUubmFtZSA9IFwiRWRpdFZhbHVlVG9nZ2VsZVwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VmFsdWVUb2dnZWxlLmxhYmVsS2V5ID0gXCJWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VmFsdWVUb2dnZWxlLnZhbHVlID0gY29uZmlndXJhdGlvbi5ib29sVmFsdWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRWYWx1ZVRvZ2dlbGUudmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcblxyXG4gICAgICAgICAgdGhpcy5FZGl0RGVmYXVsdFZhbHVlVG9nZ2VsZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuRWRpdERlZmF1bHRWYWx1ZVRvZ2dlbGUubmFtZSA9IFwiRWRpdERlZmF1bHRWYWx1ZVRvZ2dlbGVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdERlZmF1bHRWYWx1ZVRvZ2dlbGUubGFiZWxLZXkgPSBcIkRlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0RGVmYXVsdFZhbHVlVG9nZ2VsZS52YWx1ZSA9IGNvbmZpZ3VyYXRpb24uZGVmYXVsdEJvb2xWYWx1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdERlZmF1bHRWYWx1ZVRvZ2dlbGUudmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbmZpZ3VyYXRpb25WYWx1ZVR5cGVzLkRyb3Bkb3duTGlzdDpcclxuICAgICAgICAgIHN3aXRjaCAodGhpcy5FZGl0Q29uZmlndXJhdGlvbkRETFNvdXJjZUlEX0dVSUQpIHtcclxuICAgICAgICAgICAgY2FzZSBDb25maWd1cmF0aW9uRERMU291cmNlLkxvb2t1cDpcclxuICAgICAgICAgICAgICB0aGlzLlNob3dMb29rdXBMaXN0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLlNob3dMb29rdXBJdGVtc0xpc3QgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXAubmFtZSA9IFwiRWRpdExvb2t1cFwiO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cC5sYWJlbEtleSA9IFwiTG9va3VwXCI7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwLnNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cC5kYXRhU291cmNlID0gdGhpcy5Mb29rdXBzTGlzdDtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXAuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXAuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cC5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXAuc2VsZWN0ZWRJdGVtcyA9IGNvbmZpZ3VyYXRpb24uc2VsZWN0ZWRMb29rdXBJRF9HVUlEPy50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZS5uYW1lID0gXCJFZGl0TG9va3VwVmFsdWVcIjtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZS5sYWJlbEtleSA9IFwiVmFsdWVcIjtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZS5kYXRhU291cmNlID0gbG9va3VwSXRlbXM7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZS5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUuc2VsZWN0ZWRJdGVtcyA9IGNvbmZpZ3VyYXRpb24udmFsdWU/LnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUubmFtZSA9IFwiRWRpdExvb2t1cERlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5sYWJlbEtleSA9IFwiRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLmRhdGFTb3VyY2UgPSBsb29rdXBJdGVtcztcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUuc2VsZWN0ZWRJdGVtcyA9IGNvbmZpZ3VyYXRpb24uZGVmYXVsdFZhbHVlPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIENvbmZpZ3VyYXRpb25ERExTb3VyY2UuRnVuY3Rpb246XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0RnVuY3Rpb25Tb3VyY2VQYXRoID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0RnVuY3Rpb25Tb3VyY2VQYXRoLm5hbWUgPSBcIkVkaXRGdW5jdGlvblNvdXJjZVBhdGhcIjtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRGdW5jdGlvblNvdXJjZVBhdGgubGFiZWxLZXkgPSBcIlNvdXJjZVBhdGhcIjtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRGdW5jdGlvblNvdXJjZVBhdGgudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdEZ1bmN0aW9uU291cmNlUGF0aC52YWx1ZSA9IGNvbmZpZ3VyYXRpb24uc291cmNlRnVuY3Rpb25OYW1lO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdEZ1bmN0aW9uU291cmNlUGF0aC5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuQ29uZmlndXJhdGlvbnNTZXJ2aWNlLmxvYWRTb3VyY2VGdW5jdGlvbkRyb3BEb3duSXRlbXMoY29uZmlndXJhdGlvbi5zb3VyY2VGdW5jdGlvbk5hbWUpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZFNvdXJjZUZ1bmNWYWx1ZSA9IHJlc3VsdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5ID09IGNvbmZpZ3VyYXRpb24udmFsdWU7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLm5hbWUgPSBcIkVkaXRTb3VyY2VGdW5jVmFsdWVcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZS5sYWJlbEtleSA9IFwiVmFsdWVcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZS5kYXRhU291cmNlID0gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jVmFsdWUuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLnNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZFNvdXJjZUZ1bmNWYWx1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlID0gcmVzdWx0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gaXRlbS5rZXkgPT0gY29uZmlndXJhdGlvbi5kZWZhdWx0VmFsdWU7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUubmFtZSA9IFwiRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUubGFiZWxLZXkgPSBcIkRlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZS5kYXRhU291cmNlID0gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZS5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZS5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZS5zZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5TaG93U291cmNlRnVuY3Rpb25QYXRoID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuU2hvd1NvdXJjZUZ1bmN0aW9uRGF0YSA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xyXG5cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICAvL3Jlc2V0IHNjb3BlXHJcbiAgICAgIHRoaXMuU2hvd1Blcm1pc3Npb25MaXN0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuU2hvd1VzZXJzTGlzdCA9IGZhbHNlO1xyXG4gICAgICAvL2NvbnNvbGUubG9nKHNjb3BJdGVtKTtcclxuICAgICAgc3dpdGNoICh0aGlzLkVkaXRDb25maWd1cmF0aW9uU2NvcGVJRF9HVUlEKSB7XHJcbiAgICAgICAgY2FzZSBTY29wZS5QZXJtaXNzaW9uc2V0OlxyXG4gICAgICAgICAgdGhpcy5TaG93UGVybWlzc2lvbkxpc3QgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0UGVybWlzc2lvblNldCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXQubmFtZSA9IFwiRWRpdFBlcm1pc3Npb25TZXRcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXQubGFiZWxLZXkgPSBcIlBlcm1pc3Npb25TZXRcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXQuc2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLkVkaXRQZXJtaXNzaW9uU2V0LmRhdGFTb3VyY2UgPSB0aGlzLlBlcm1pc3Npb25MaXN0O1xyXG4gICAgICAgICAgdGhpcy5FZGl0UGVybWlzc2lvblNldC5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0UGVybWlzc2lvblNldC5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRQZXJtaXNzaW9uU2V0LmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0UGVybWlzc2lvblNldC5zZWxlY3RlZEl0ZW1zID0gY29uZmlndXJhdGlvbi5wZXJtaXNzaW9uU2V0SURfR1VJRD8udG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgU2NvcGUuVXNlcjpcclxuICAgICAgICAgIHRoaXMuU2hvd1VzZXJzTGlzdCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRVc2VyID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VXNlci5uYW1lID0gXCJFZGl0VXNlclwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VXNlci5sYWJlbEtleSA9IFwiVXNlclwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VXNlci5zZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuRWRpdFVzZXIuZGF0YVNvdXJjZSA9IHRoaXMuVXNlcnNMaXN0O1xyXG4gICAgICAgICAgdGhpcy5FZGl0VXNlci5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VXNlci5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRVc2VyLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VXNlci5zZWxlY3RlZEl0ZW1zID0gY29uZmlndXJhdGlvbi51c2VySURfR1VJRD8udG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEVkaXRDb25maWd1cmF0aW9uTW9kYWwpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0Q29uZmlndXJhdGlvbk1vZGVsID0gKCk6IENvbmZpZ3VyYXRpb25Nb2RlbFtdID0+IHtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuRWRpdENvbmZpZ3VyYXRpb25Gb3JtLnZhbHVlIGFzIGFueTtcclxuICAgIGxldCBlZGl0TW9kZWw6IENvbmZpZ3VyYXRpb25Nb2RlbCA9IG5ldyBDb25maWd1cmF0aW9uTW9kZWwoKTtcclxuICAgIGVkaXRNb2RlbC5pRF9HVUlEID0gdGhpcy5Db25maWd1cmF0aW9uSWQ7XHJcbiAgICBlZGl0TW9kZWwudmFsdWVUeXBlSURfR1VJRCA9IHRoaXMuQ29uZmlndXJhdGlvblZhbHVlVHlwZUlEX0dVSUQ7XHJcbiAgICBlZGl0TW9kZWwuc2NvcGVJRF9HVUlEID0gdGhpcy5FZGl0Q29uZmlndXJhdGlvblNjb3BlSURfR1VJRDtcclxuICAgIGVkaXRNb2RlbC5rZXkgPSB0aGlzLlByb2R1Y3Rpb25Nb2RlID8gdGhpcy5jb25maWd1cmF0aW9uLmtleSA6IFJlc3VsdE1vZGVsLktleTtcclxuICAgIGVkaXRNb2RlbC52YWx1ZVNvdXJjZUlEX0dVSUQgPSB0aGlzLkVkaXRDb25maWd1cmF0aW9uRERMU291cmNlSURfR1VJRDtcclxuICAgIGVkaXRNb2RlbC5pc0xvYWRJbkpzb24gPSBSZXN1bHRNb2RlbC5Jc0xvYWRJbkpzb247XHJcbiAgICBlZGl0TW9kZWwub3JnYW5pemF0aW9uSURfR1VJRCA9IFJlc3VsdE1vZGVsW3RoaXMuZWRpdE9yZ2FuaXphdGlvbi5uYW1lXTtcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMuQ29uZmlndXJhdGlvblZhbHVlVHlwZUlEX0dVSUQpIHtcclxuICAgICAgY2FzZSBDb25maWd1cmF0aW9uVmFsdWVUeXBlcy5UZXh0OlxyXG4gICAgICAgIGVkaXRNb2RlbC50ZXh0VmFsdWUgPSBSZXN1bHRNb2RlbC5FZGl0VGV4dFZhbHVlO1xyXG4gICAgICAgIGVkaXRNb2RlbC5kZWZhdWx0VGV4dFZhbHVlID0gUmVzdWx0TW9kZWwuRWRpdFRleHREZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ29uZmlndXJhdGlvblZhbHVlVHlwZXMuVG9nZ2xlOlxyXG4gICAgICAgIGVkaXRNb2RlbC5ib29sVmFsdWUgPSBSZXN1bHRNb2RlbC5FZGl0VmFsdWVUb2dnZWxlO1xyXG4gICAgICAgIGVkaXRNb2RlbC5kZWZhdWx0Qm9vbFZhbHVlID0gUmVzdWx0TW9kZWwuRWRpdERlZmF1bHRWYWx1ZVRvZ2dlbGU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ29uZmlndXJhdGlvblZhbHVlVHlwZXMuRHJvcGRvd25MaXN0OlxyXG4gICAgICAgIGlmICh0aGlzLkVkaXRDb25maWd1cmF0aW9uRERMU291cmNlSURfR1VJRCA9PSBDb25maWd1cmF0aW9uRERMU291cmNlLkxvb2t1cCkge1xyXG4gICAgICAgICAgZWRpdE1vZGVsLnNlbGVjdGVkTG9va3VwSURfR1VJRCA9IFJlc3VsdE1vZGVsLkVkaXRMb29rdXA7XHJcbiAgICAgICAgICBlZGl0TW9kZWwudmFsdWUgPSBSZXN1bHRNb2RlbC5FZGl0TG9va3VwVmFsdWUgYXMgc3RyaW5nO1xyXG4gICAgICAgICAgZWRpdE1vZGVsLmRlZmF1bHRWYWx1ZSA9IFJlc3VsdE1vZGVsLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUgYXMgc3RyaW5nO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLkVkaXRDb25maWd1cmF0aW9uRERMU291cmNlSURfR1VJRCA9PSBDb25maWd1cmF0aW9uRERMU291cmNlLkZ1bmN0aW9uKSB7XHJcbiAgICAgICAgICBlZGl0TW9kZWwuc291cmNlRnVuY3Rpb25OYW1lID0gUmVzdWx0TW9kZWwuRWRpdEZ1bmN0aW9uU291cmNlUGF0aDtcclxuICAgICAgICAgIGVkaXRNb2RlbC52YWx1ZSA9IFJlc3VsdE1vZGVsLkVkaXRTb3VyY2VGdW5jVmFsdWU7XHJcbiAgICAgICAgICBlZGl0TW9kZWwuZGVmYXVsdFZhbHVlID0gUmVzdWx0TW9kZWwuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIHN3aXRjaCAodGhpcy5FZGl0Q29uZmlndXJhdGlvblNjb3BlSURfR1VJRCkge1xyXG4gICAgICBjYXNlIFNjb3BlLlVzZXI6XHJcbiAgICAgICAgZWRpdE1vZGVsLnVzZXJJRF9HVUlEID0gUmVzdWx0TW9kZWwuRWRpdFVzZXI7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgU2NvcGUuUGVybWlzc2lvbnNldDpcclxuICAgICAgICBlZGl0TW9kZWwucGVybWlzc2lvblNldElEX0dVSUQgPSBSZXN1bHRNb2RlbC5FZGl0UGVybWlzc2lvblNldDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gQXJyYXkoZWRpdE1vZGVsKTtcclxuICB9O1xyXG5cclxuICBnZXRFZGl0Q29uZmlndXJhdGlvbkZ1bmN0aW9uID0gKEVkaXRNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5Db25maWd1cmF0aW9uc1NlcnZpY2UuZWRpdENvbmZpZ3VyYXRpb24oRWRpdE1vZGVsKTtcclxuICB9O1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gYWRkL2VkaXQgcmVxdWlyZWQgZnVuY3Rpb25cclxuICBDaGFuZ2VTY29wZVZhbHVlKGtleSkge1xyXG4gICAga2V5ID0ga2V5LnRvTG93ZXJDYXNlKCk7XHJcbiAgICBzd2l0Y2ggKGtleSkge1xyXG4gICAgICBjYXNlIFNjb3BlLkFwcDpcclxuICAgICAgICB0aGlzLlNob3dQZXJtaXNzaW9uTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuU2hvd1VzZXJzTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuYWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIlVzZXJcIik7XHJcbiAgICAgICAgdGhpcy5hZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiUGVybWlzc2lvblNldFwiKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTY29wZS5QZXJtaXNzaW9uc2V0OlxyXG4gICAgICAgIHRoaXMuU2hvd1Blcm1pc3Npb25MaXN0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLlNob3dVc2Vyc0xpc3QgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJVc2VyXCIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFNjb3BlLlVzZXI6XHJcbiAgICAgICAgdGhpcy5TaG93UGVybWlzc2lvbkxpc3QgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLlNob3dVc2Vyc0xpc3QgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIlBlcm1pc3Npb25TZXRcIik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJlc2V0Q29uZmlndXJhdGlvbkZsYWdzKCkge1xyXG4gICAgdGhpcy5TaG93TG9va3VwTGlzdCA9IGZhbHNlO1xyXG4gICAgdGhpcy5TaG93VmFsdWVBbmREZWZhdWx0VmFsdWUgPSBmYWxzZTtcclxuICAgIHRoaXMuU2hvd1ZhbHVlVG9nZ2xlQW5kRGVmYXVsdFZhbHVlID0gZmFsc2U7XHJcbiAgICB0aGlzLlNob3dTb3VyY2VGdW5jdGlvblBhdGggPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0Z1bmN0aW9uTm90Rm91bmRFcnJvciA9IGZhbHNlO1xyXG4gICAgdGhpcy5TaG93RHJvcERvd25Tb3VyY2UgPSBmYWxzZTtcclxuICAgIHRoaXMuU2hvd0xvb2t1cEl0ZW1zTGlzdCA9IGZhbHNlO1xyXG4gICAgdGhpcy5TaG93U291cmNlRnVuY3Rpb25EYXRhID0gZmFsc2U7XHJcbiAgICB0aGlzLnNvdXJjZUZ1bmN0aW9uRGF0YU5vdExvYWRlZCA9IGZhbHNlO1xyXG4gIH1cclxuICBTZWFyY2hGb3JGdW5jdGlvbihpc0FkZDogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgIGxldCBSZXN1bHRNb2RlbDogYW55ID0gaXNBZGQgPyB0aGlzLmFkZENvbmZpZ3VyYXRpb25Gb3JtLnZhbHVlIDogdGhpcy5FZGl0Q29uZmlndXJhdGlvbkZvcm0udmFsdWU7XHJcbiAgICBsZXQgZnVuY3Rpb25OYW1lID0gaXNBZGQgPyBSZXN1bHRNb2RlbC5GdW5jdGlvblNvdXJjZVBhdGggOiBSZXN1bHRNb2RlbC5FZGl0RnVuY3Rpb25Tb3VyY2VQYXRoO1xyXG4gICAgdGhpcy5Db25maWd1cmF0aW9uc1NlcnZpY2UubG9hZFNvdXJjZUZ1bmN0aW9uRHJvcERvd25JdGVtcyhmdW5jdGlvbk5hbWUpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5zaG93RnVuY3Rpb25Ob3RGb3VuZEVycm9yID0gZmFsc2U7XHJcbiAgICAgIGlmICh0aGlzLlNob3dTb3VyY2VGdW5jdGlvbkRhdGEpIHtcclxuICAgICAgICBpZiAoaXNBZGQpIHtcclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY1ZhbHVlLnNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5Tb3VyY2VGdW5jRGVmYXVsdFZhbHVlLnNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG5cclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY1ZhbHVlLmRhdGFTb3VyY2UgPSByZXN1bHQ7XHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuZGF0YVNvdXJjZSA9IHJlc3VsdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jVmFsdWUuc2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlLnNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG5cclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZS5kYXRhU291cmNlID0gcmVzdWx0O1xyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZS5kYXRhU291cmNlID0gcmVzdWx0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKGlzQWRkKSB7XHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNWYWx1ZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY1ZhbHVlLm5hbWUgPSBcIlNvdXJjZUZ1bmNWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5Tb3VyY2VGdW5jVmFsdWUubGFiZWxLZXkgPSBcIlZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNWYWx1ZS5kYXRhU291cmNlID0gcmVzdWx0O1xyXG4gICAgICAgICAgdGhpcy5Tb3VyY2VGdW5jVmFsdWUuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY1ZhbHVlLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY1ZhbHVlLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY0RlZmF1bHRWYWx1ZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY0RlZmF1bHRWYWx1ZS5uYW1lID0gXCJTb3VyY2VGdW5jRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUubGFiZWxLZXkgPSBcIkRlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5Tb3VyY2VGdW5jRGVmYXVsdFZhbHVlLmRhdGFTb3VyY2UgPSByZXN1bHQ7XHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY0RlZmF1bHRWYWx1ZS5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLm5hbWUgPSBcIkVkaXRTb3VyY2VGdW5jVmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZS5sYWJlbEtleSA9IFwiVmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZS5kYXRhU291cmNlID0gcmVzdWx0O1xyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jVmFsdWUuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlLm5hbWUgPSBcIkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlLmxhYmVsS2V5ID0gXCJEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuZGF0YVNvdXJjZSA9IHJlc3VsdDtcclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZS5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5TaG93U291cmNlRnVuY3Rpb25EYXRhID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNvdXJjZUZ1bmN0aW9uRGF0YU5vdExvYWRlZCA9IGZhbHNlO1xyXG4gICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNTAwKSB7XHJcbiAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uubm90aWZ5RXJyb3JNZXNzYWdlKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHsgLy80MDRcclxuICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICAgICAgdGhpcy5zaG93RnVuY3Rpb25Ob3RGb3VuZEVycm9yID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLlNob3dTb3VyY2VGdW5jdGlvbkRhdGEgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNvdXJjZUZ1bmN0aW9uRGF0YU5vdExvYWRlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9KTtcclxuICB9XHJcbiAgY2hhbmdlU291cmNlRnVuY3Rpb24oKSB7XHJcbiAgICB0aGlzLlNob3dTb3VyY2VGdW5jdGlvbkRhdGEgPSBmYWxzZTtcclxuICAgIHRoaXMuc291cmNlRnVuY3Rpb25EYXRhTm90TG9hZGVkID0gdHJ1ZTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBkZWxldGUgY29uZmlndXJhdGlvblxyXG4gIHNob3dEZWxldGVDb25maWd1cmF0aW9uTW9kYWwoY29uZmlndXJhdGlvbklEOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZGVsZXRlQ29uZmlndXJhdGlvbklkID0gY29uZmlndXJhdGlvbklEO1xyXG5cclxuICAgIC8vYXJyYXkgc2VudCB0byBzZXJ2aWNlIGZ1bmN0aW9uXHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIHBhcmFtQXJyYXkucHVzaCh0aGlzLmRlbGV0ZUNvbmZpZ3VyYXRpb25JZCk7XHJcblxyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zID0gbmV3IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucygpO1xyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zLnNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZGVsZXRlQ29uZmlndXJhdGlvbjtcclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5zZXJ2aWNlU3VibWl0TW9kZWwgPSBwYXJhbUFycmF5O1xyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zLnBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudDtcclxuICAgIHRoaXMuZGVsZXRlQ29udHJvbExvYWRlZCA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5Db25maXJtYXRpb25Nb2RhbENvbnRyb2wuc2hvd01vZGFsKCk7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuICBkZWxldGVDb25maWd1cmF0aW9uID0gKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuQ29uZmlndXJhdGlvbnNTZXJ2aWNlLmRlbGV0ZUNvbmZpZ3VyYXRpb24oaWQpO1xyXG4gIH07XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG5cclxuICAvLy8vLy8vLy8vL1N0YXJ0IG9mICBSZWxvYWQgUmVzb3VyY2UgcGFydC8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICBzaG93UmVsb2FkUmVzb3VyY2VNb2RhbCgpIHtcclxuXHJcbiAgICB0aGlzLnJlbG9hZENvbnRyb2xMb2FkZWQgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLnJlbG9hZENvbmZpcm1hdGlvbk9wdGlvbnMgPSBuZXcgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zKCk7XHJcbiAgICB0aGlzLnJlbG9hZENvbmZpcm1hdGlvbk9wdGlvbnMuc2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5yZWxvYWRKc29uRnVuY3Rpb247XHJcbiAgICB0aGlzLnJlbG9hZENvbmZpcm1hdGlvbk9wdGlvbnMucGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50O1xyXG4gICAgdGhpcy5yZWxvYWRDb25maXJtYXRpb25PcHRpb25zLmNvbmZpcm1hdGlvbkJvZHkgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJSZWxvYWRDb25maWd1cmF0aW9uc0NvbmZpcm1hdGlvblwiKTtcclxuICAgIHRoaXMucmVsb2FkQ29uZmlybWF0aW9uT3B0aW9ucy5jb25maXJtYXRpb25IZWFkZXIgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJSZWxvYWRDb25maWd1cmF0aW9uc1wiKTtcclxuICAgIHRoaXMucmVsb2FkQ29uZmlybWF0aW9uT3B0aW9ucy5zdWJtaXRCdXR0b25UZXh0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUmVsb2FkXCIpO1xyXG4gICAgdGhpcy5yZWxvYWRDb25maXJtYXRpb25PcHRpb25zLnN0eWxlQ29uZmlybWF0aW9uTW9kZSA9IFN0eWxlQ29uZmlybWF0aW9uTW9kZS5EYW5nZXI7XHJcbiAgICB0aGlzLnJlbG9hZENvbmZpcm1hdGlvbk9wdGlvbnMuc3VjY2Vzc05vdGlmaWNhdGlvbk1lc3NhZ2UgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTdWNjZXNzTWVzc2FnZVwiKTtcclxuXHJcblxyXG4gICAgdGhpcy5yZWxvYWRDb250cm9sTG9hZGVkID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnJlbG9hZENvbmZpcm1hdGlvbk1vZGFsQ29udHJvbC5zaG93TW9kYWwoKTtcclxuICAgIH0sIDIwMCk7XHJcbiAgfVxyXG5cclxuICByZWxvYWRKc29uRnVuY3Rpb24gPSAoKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLkNvbmZpZ3VyYXRpb25zU2VydmljZS5yZWxvYWRKc29uRmlsZSgpO1xyXG4gIH07XHJcblxyXG4gIC8vT24gZGVzdHJveVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXF1ZXN0SGFuZGxlclNlcnZpY2UuZGVzdHJveUhhbmRsZXIoKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxibG9jay11aT48L2Jsb2NrLXVpPlxyXG48IS0tIFBhZ2UgQ29udGVudCAtLT5cclxuPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gIDxkaXYgKm5nSWY9XCJzaG93UGFnZUNvbnRlbnRcIj5cclxuICAgIDwhLS0gYmVnaW46OkhlYWRlciAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtY3VzdG9tLWhcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiICpuZ0lmPVwiaXNGaWx0ZXJMb2FkZWRcIj5cclxuICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJzZWFyY2hUZXh0Qm94XCIgW2dyb3VwXT1cIkNvbmZpZ3VyYXRpb25Gb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdJZj1cImlzTXVsdGlUZW5hbmN5QWxsb3dlZCAmJiBpc1N1cGVyQWRtaW5cIlxyXG4gICAgICAgICAgICBuZ2JEcm9wZG93blxyXG4gICAgICAgICAgICBjbGFzcz1cImQtaW5saW5lLWJsb2NrXCJcclxuICAgICAgICAgICAgW25nU3R5bGVdPVwieyBkaXNwbGF5OiBzaG93UGFnZUNvbnRlbnQgPT0gdHJ1ZSA/ICdibG9jaycgOiAnbm9uZScgfVwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImxvYWRMaXN0cygpXCJcclxuICAgICAgICAgICAgICBuZ2JEcm9wZG93blRvZ2dsZVxyXG4gICAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQtcHJpbWFyeSBtZS0zXCJcclxuICAgICAgICAgICAgICBpZD1cIkZpbHRlcnNEcm9wZG93blwiXHJcbiAgICAgICAgICAgICAgdGl0bGU9XCJGaWx0ZXJcIj5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1maWx0ZXIgbWUtMVwiPjwvaT5cclxuICAgICAgICAgICAgICB7eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdGaWx0ZXInKSB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiaXNGaWx0ZXJMb2FkZWRcIlxyXG4gICAgICAgICAgICAgIG5nYkRyb3Bkb3duTWVudVxyXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cIkZpbHRlcnNEcm9wZG93blwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItY29udGFpbmVyIG1lbnUgbWVudS1zdWIgbWVudS1zdWItZHJvcGRvd24gbWVudS1jb2x1bW4gbWVudS1yb3VuZGVkIG1lbnUtZ3JheS04MDAgbWVudS1zdGF0ZS1iZy1saWdodC1wcmltYXJ5IHctMjUwcHggdy1tZC01MDBweCBmdy1ib2xkIHB5LTMgZHJvcGRvd24tbWVudSBkcm9wZG93bi1tZW51LXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTcgcHktNVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJpc011bHRpVGVuYW5jeUFsbG93ZWQgJiYgaXNTdXBlckFkbWluXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAjb3JnYW5pemF0aW9uRERMIFtvcHRpb25zXT1cIm9yZ2FuaXphdGlvbk9wdGlvbnNcIiBbZ3JvdXBdPVwiQ29uZmlndXJhdGlvbkZvcm1cIj48L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLWFjdGl2ZS1saWdodC1wcmltYXJ5IHB2LXJlc2V0IGJ0bi1zbVwiIG5hbWU9XCJjb25maWd1cmF0aW9uUmVzZXRCdXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ1Jlc2V0JykgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSBiZWdpbjo6TWVudSAtLT5cclxuICAgICAgICAgIDxidXR0b24gaWQ9XCJidG5BY3RpdmF0ZVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpZ2h0LXByaW1hcnkgbWUtM1wiIChjbGljayk9XCJzaG93UmVsb2FkUmVzb3VyY2VNb2RhbCgpXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXN5bmMtYWx0IG1lLTFcIj48L2k+XHJcbiAgICAgICAgICAgIHt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ1JlbG9hZCcpIH19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIiB0aXRsZT1cIkFkZFwiIChjbGljayk9XCJzaG93QWRkQ29uZmlndXJhdGlvbk1vZGFsKEFkZENvbmZpZ3VyYXRpb25Nb2RhbClcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtcGx1cyBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAgICB7eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdBZGQnKSB9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8IS0tIGVuZDo6TWVudSAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS0gZW5kOjpIZWFkZXIgLS0+XHJcbiAgICAgIDwhLS0gYmVnaW46OkJvZHkgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktM1wiPlxyXG4gICAgICAgIDwhLS0gYmVnaW46OlRhYmxlIGNvbnRhaW5lciAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgPCEtLSBiZWdpbjo6VGFibGUgLS0+XHJcbiAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlclwiPlxyXG4gICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnS2V5JykgfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdWYWx1ZScpIH19PC90aD5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnVHlwZScpIH19PC90aD5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnU2NvcGUnKSB9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ1VzZXJQZXJtaXNzaW9uU2V0JykgfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwXCIgKm5nSWY9XCJpc011bHRpVGVuYW5jeUFsbG93ZWQgJiYgaXNTdXBlckFkbWluXCI+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnT3JnYW5pemF0aW9uJykgfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctNTBweFwiPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0FjdGlvbicpIH19PC90aD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICA8dGJvZHkgaWQ9XCJsaXN0aW5nQ29udGFpbmVyXCIgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IENvbmZpZ3VyYXRpb24gb2YgY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdFwiPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1kYXJrXCI+e3sgQ29uZmlndXJhdGlvbi5rZXkgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPnt7IENvbmZpZ3VyYXRpb24udmFsdWUgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPnt7IENvbmZpZ3VyYXRpb24udmFsdWVUeXBlTmFtZVN0ciB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQ+e3sgQ29uZmlndXJhdGlvbi5zY29wZU5hbWUgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPnt7IENvbmZpZ3VyYXRpb24ucGVybWlzc2lvblNldE5hbWUgfX17eyBDb25maWd1cmF0aW9uLnVzZXJOYW1lIH19PC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImlzTXVsdGlUZW5hbmN5QWxsb3dlZCAmJiBpc1N1cGVyQWRtaW5cIj57eyBDb25maWd1cmF0aW9uLm9yZ2FuaXphdGlvbk5hbWUgPz8gJy0nIH19PC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cImNvbmZpZ1wiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tbGlnaHQgYnRuLWFjdGl2ZS1saWdodC1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVsbGlwc2lzLWhcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1tZW51IGNsYXNzPVwibWF0LW1lbnUtY29udGVudFwiICNjb25maWc9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcC1pdGVtIHB4LTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZ2JEcm9wZG93bkl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dFZGl0Q29uZmlndXJhdGlvbk1vZGFsKENvbmZpZ3VyYXRpb24uaURfR1VJRCwgRWRpdENvbmZpZ3VyYXRpb25Nb2RhbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wLWxpbmsgcHgtM1wiPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0VkaXQnKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gY2xhc3M9XCJkcm9wLWl0ZW0gcHgtM1wiIGlkPVwiYnRuUmVzZXRQYXNzXCIgKGNsaWNrKT1cInNob3dEZWxldGVDb25maWd1cmF0aW9uTW9kYWwoQ29uZmlndXJhdGlvbi5pRF9HVUlEKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3AtbGluayBweC0zXCI+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnRGVsZXRlJykgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8dHIgKm5nSWY9XCJjbGllbnRTaWRlUGFnaW5nUmVzdWx0Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjZcIj5cclxuICAgICAgICAgICAgICAgICAgPGxpYi1lbXB0eS1kYXRhPjwvbGliLWVtcHR5LWRhdGE+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgPCEtLSBlbmQ6OlRhYmxlIC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS0gZW5kOjpUYWJsZSBjb250YWluZXIgLS0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tIGJlZ2luIHBhZ2luZy0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgYm9yZGVyLTBcIj5cclxuICAgICAgICA8QkJTRi1QYWdpbmdcclxuICAgICAgICAgIChJdGVtcyk9XCJzZXRDb25maWd1cmF0aW9uTGlzdFJlc3VsdCgkZXZlbnQpXCJcclxuICAgICAgICAgICpuZ0lmPVwiaXNGaWx0ZXJMb2FkZWRcIlxyXG4gICAgICAgICAgW29wdGlvbnNdPVwiQ29uZmlndXJhdGlvblBhZ2luZ1wiXHJcbiAgICAgICAgICBbZ3JvdXBdPVwiQ29uZmlndXJhdGlvbkZvcm1cIlxyXG4gICAgICAgICAgI0NvbmZpZ3VyYXRpb25QYWdpbmdWaWV3RWxlbWVudD5cclxuICAgICAgICA8L0JCU0YtUGFnaW5nPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSBFbmQgcGFnaW5nLS0+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48IS0tICNyZWdpb24gQWRkIG1vZGFsIC0tPlxyXG48bmctdGVtcGxhdGUgI0FkZENvbmZpZ3VyYXRpb25Nb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnQWRkQ29uZmlndXJhdGlvbicpIH19PC9oMT5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiYWRkQ29uZmlndXJhdGlvbkZvcm1PcHRpb25zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiS2V5XCIgW2dyb3VwXT1cImFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+IDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwibG9hZEpzb25Ub2dnbGVcIiBbZ3JvdXBdPVwiYWRkQ29uZmlndXJhdGlvbkZvcm1cIj4gPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJDYXRlZ29yeVwiIFtncm91cF09XCJhZGRDb25maWd1cmF0aW9uRm9ybVwiPiA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJTY29wZVwiIChvbkNoYW5nZSk9XCJDaGFuZ2VTY29wZVZhbHVlKCRldmVudClcIiBbZ3JvdXBdPVwiYWRkQ29uZmlndXJhdGlvbkZvcm1cIj4gPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAqbmdJZj1cImlzTXVsdGlUZW5hbmN5QWxsb3dlZCAmJiBpc1N1cGVyQWRtaW5cIiBbb3B0aW9uc109XCJhZGRPcmdhbml6YXRpb25cIiBbZ3JvdXBdPVwiYWRkQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIlBlcm1pc3Npb25TZXRcIiAqbmdJZj1cIlNob3dQZXJtaXNzaW9uTGlzdFwiIFtncm91cF09XCJhZGRDb25maWd1cmF0aW9uRm9ybVwiPiA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJVc2VyXCIgKm5nSWY9XCJTaG93VXNlcnNMaXN0XCIgW2dyb3VwXT1cImFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+IDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIlR5cGVcIiAob25DaGFuZ2UpPVwiQ2hhbmdlVHlwZVZhbHVlKCRldmVudClcIiBbZ3JvdXBdPVwiYWRkQ29uZmlndXJhdGlvbkZvcm1cIj4gPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJWYWx1ZVwiICpuZ0lmPVwiU2hvd1ZhbHVlQW5kRGVmYXVsdFZhbHVlXCIgW2dyb3VwXT1cImFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+IDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkRlZmF1bHRWYWx1ZVwiICpuZ0lmPVwiU2hvd1ZhbHVlQW5kRGVmYXVsdFZhbHVlXCIgW2dyb3VwXT1cImFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+IDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJWYWx1ZVRvZ2dlbFwiICpuZ0lmPVwiU2hvd1ZhbHVlVG9nZ2xlQW5kRGVmYXVsdFZhbHVlXCIgW2dyb3VwXT1cImFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+IDwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiRGVmYXVsdFZhbHVlVG9nZ2VsXCIgKm5nSWY9XCJTaG93VmFsdWVUb2dnbGVBbmREZWZhdWx0VmFsdWVcIiBbZ3JvdXBdPVwiYWRkQ29uZmlndXJhdGlvbkZvcm1cIj4gPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiU291cmNlXCIgKm5nSWY9XCJTaG93RHJvcERvd25Tb3VyY2VcIiAob25DaGFuZ2UpPVwiQ2hhbmdlU291cmNlKCRldmVudClcIiBbZ3JvdXBdPVwiYWRkQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiAqbmdJZj1cIlNob3dTb3VyY2VGdW5jdGlvblBhdGhcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTlcIj5cclxuICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJGdW5jdGlvblNvdXJjZVBhdGhcIiBbZ3JvdXBdPVwiYWRkQ29uZmlndXJhdGlvbkZvcm1cIiAob25DaGFuZ2UpPVwiY2hhbmdlU291cmNlRnVuY3Rpb24oKVwiPiA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dGdW5jdGlvbk5vdEZvdW5kRXJyb3JcIiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+XHJcbiAgICAgICAgICAgICAge3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnU291cmNlRnVuY3Rpb25Ob3RGb3VuZCcpIH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24taXRlbXMtY2VudGVyIG1iLTRcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1zZWNvbmRhcnlcIiAoY2xpY2spPVwiU2VhcmNoRm9yRnVuY3Rpb24odHJ1ZSlcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsb2F0LXJpZ2h0XCI+PGkgY2xhc3M9XCJmYXMgZmEtc2VhcmNoXCI+PC9pPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ1NlYXJjaCcpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIlNvdXJjZUZ1bmNWYWx1ZVwiICpuZ0lmPVwiU2hvd1NvdXJjZUZ1bmN0aW9uRGF0YVwiIFtncm91cF09XCJhZGRDb25maWd1cmF0aW9uRm9ybVwiPiA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiU291cmNlRnVuY0RlZmF1bHRWYWx1ZVwiICpuZ0lmPVwiU2hvd1NvdXJjZUZ1bmN0aW9uRGF0YVwiIFtncm91cF09XCJhZGRDb25maWd1cmF0aW9uRm9ybVwiPiA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiAqbmdJZj1cIlNob3dMb29rdXBMaXN0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiTG9va3VwXCIgKG9uQ2hhbmdlKT1cIkNoYW5nZUxvb2t1cCgkZXZlbnQsIHRydWUpXCIgW2dyb3VwXT1cImFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+IDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJMb29rdXBWYWx1ZVwiICpuZ0lmPVwiU2hvd0xvb2t1cEl0ZW1zTGlzdFwiIFtncm91cF09XCJhZGRDb25maWd1cmF0aW9uRm9ybVwiPiA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiTG9va3VwRGVmYXVsdFZhbHVlXCIgKm5nSWY9XCJTaG93TG9va3VwSXRlbXNMaXN0XCIgW2dyb3VwXT1cImFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+IDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgIDxidXR0b24gI0Nsb3NlQ29uZmlndXJhdGlvbk1vZGFsIGlkPVwiQ2xvc2VDb25maWd1cmF0aW9uTW9kYWxcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnQ2FuY2VsTGFiZWwnKSB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiIFtkaXNhYmxlZF09XCJzb3VyY2VGdW5jdGlvbkRhdGFOb3RMb2FkZWRcIj5cclxuICAgICAgICAgIHt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ1NhdmVMYWJlbCcpIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9CQlNGLUZvcm0+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbjwhLS0gI3JlZ2lvbiBlZGl0IG1vZGFsIC0tPlxyXG48bmctdGVtcGxhdGUgI0VkaXRDb25maWd1cmF0aW9uTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0VkaXQnKSB9fSB7eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdDb25maWd1cmF0aW9uJykgfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJFZGl0S2V5XCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiPiA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cImVkaXRMb2FkSnNvblRvZ2dsZVwiIFtncm91cF09XCJFZGl0Q29uZmlndXJhdGlvbkZvcm1cIj4gPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0ICpuZ0lmPVwiaXNNdWx0aVRlbmFuY3lBbGxvd2VkICYmIGlzU3VwZXJBZG1pblwiIFtvcHRpb25zXT1cImVkaXRPcmdhbml6YXRpb25cIiBbZ3JvdXBdPVwiRWRpdENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJFZGl0UGVybWlzc2lvblNldFwiICpuZ0lmPVwiU2hvd1Blcm1pc3Npb25MaXN0XCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiPiA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdFVzZXJcIiAqbmdJZj1cIlNob3dVc2Vyc0xpc3RcIiBbZ3JvdXBdPVwiRWRpdENvbmZpZ3VyYXRpb25Gb3JtXCI+IDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJFZGl0VGV4dFZhbHVlXCIgKm5nSWY9XCJTaG93VmFsdWVBbmREZWZhdWx0VmFsdWVcIiBbZ3JvdXBdPVwiRWRpdENvbmZpZ3VyYXRpb25Gb3JtXCI+IDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkVkaXRUZXh0RGVmYXVsdFZhbHVlXCIgKm5nSWY9XCJTaG93VmFsdWVBbmREZWZhdWx0VmFsdWVcIiBbZ3JvdXBdPVwiRWRpdENvbmZpZ3VyYXRpb25Gb3JtXCI+IDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJFZGl0VmFsdWVUb2dnZWxlXCIgKm5nSWY9XCJTaG93VmFsdWVUb2dnbGVBbmREZWZhdWx0VmFsdWVcIiBbZ3JvdXBdPVwiRWRpdENvbmZpZ3VyYXRpb25Gb3JtXCI+IDwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiRWRpdERlZmF1bHRWYWx1ZVRvZ2dlbGVcIiAqbmdJZj1cIlNob3dWYWx1ZVRvZ2dsZUFuZERlZmF1bHRWYWx1ZVwiIFtncm91cF09XCJFZGl0Q29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cIlNob3dTb3VyY2VGdW5jdGlvblBhdGhcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTlcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiRWRpdEZ1bmN0aW9uU291cmNlUGF0aFwiIFtncm91cF09XCJFZGl0Q29uZmlndXJhdGlvbkZvcm1cIiAob25DaGFuZ2UpPVwiY2hhbmdlU291cmNlRnVuY3Rpb24oKVwiPiA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93RnVuY3Rpb25Ob3RGb3VuZEVycm9yXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPlxyXG4gICAgICAgICAgICB7eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdTb3VyY2VGdW5jdGlvbk5vdEZvdW5kJykgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItNFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1zZWNvbmRhcnlcIiAoY2xpY2spPVwiU2VhcmNoRm9yRnVuY3Rpb24oZmFsc2UpXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxvYXQtcmlnaHRcIj48aSBjbGFzcz1cImZhcyBmYS1zZWFyY2hcIj48L2k+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnU2VhcmNoJykgfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdFNvdXJjZUZ1bmNWYWx1ZVwiICpuZ0lmPVwiU2hvd1NvdXJjZUZ1bmN0aW9uRGF0YVwiIFtncm91cF09XCJFZGl0Q29uZmlndXJhdGlvbkZvcm1cIj4gPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWVcIiAqbmdJZj1cIlNob3dTb3VyY2VGdW5jdGlvbkRhdGFcIiBbZ3JvdXBdPVwiRWRpdENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJFZGl0TG9va3VwXCIgKm5nSWY9XCJTaG93TG9va3VwTGlzdFwiIChvbkNoYW5nZSk9XCJDaGFuZ2VMb29rdXAoJGV2ZW50LCBmYWxzZSlcIiBbZ3JvdXBdPVwiRWRpdENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiU2hvd0xvb2t1cEl0ZW1zTGlzdFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJFZGl0TG9va3VwVmFsdWVcIiBbZ3JvdXBdPVwiRWRpdENvbmZpZ3VyYXRpb25Gb3JtXCI+IDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJTaG93TG9va3VwSXRlbXNMaXN0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVkaXRMb29rdXBEZWZhdWx0VmFsdWVcIiBbZ3JvdXBdPVwiRWRpdENvbmZpZ3VyYXRpb25Gb3JtXCI+IDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAjQ2xvc2VFZGl0Q29uZmlndXJhdGlvbk1vZGFsXHJcbiAgICAgICAgICBpZD1cIkNsb3NlRWRpdENvbmZpZ3VyYXRpb25Nb2RhbFwiXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gbWUtM1wiXHJcbiAgICAgICAgICBkYXRhLWRpc21pc3M9XCJtb2RhbFwiXHJcbiAgICAgICAgICAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICB7eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdDYW5jZWxMYWJlbCcpIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCIgW2Rpc2FibGVkXT1cInNvdXJjZUZ1bmN0aW9uRGF0YU5vdExvYWRlZFwiPlxyXG4gICAgICAgICAge3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnU2F2ZUxhYmVsJykgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L0JCU0YtRm9ybT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuPCEtLSAjcmVnaW9uIGRlbGV0ZSBtb2RhbCAtLT5cclxuPEJCU0YtQ29uZmlybWF0aW9uTW9kYWxcclxuICAqbmdJZj1cImRlbGV0ZUNvbnRyb2xMb2FkZWRcIlxyXG4gIFtvcHRpb25zXT1cIkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnNcIlxyXG4gIGlkPVwiQ29uZmlybWF0aW9uTW9kYWxDb250cm9sXCJcclxuICAjQ29uZmlybWF0aW9uTW9kYWxDb250cm9sPjwvQkJTRi1Db25maXJtYXRpb25Nb2RhbD5cclxuPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuPCEtLSAjcmVnaW9uIHJlbG9hZCBtb2RhbCAtLT5cclxuPEJCU0YtQ29uZmlybWF0aW9uTW9kYWxcclxuICAqbmdJZj1cInJlbG9hZENvbnRyb2xMb2FkZWRcIlxyXG4gIFtvcHRpb25zXT1cInJlbG9hZENvbmZpcm1hdGlvbk9wdGlvbnNcIlxyXG4gIGlkPVwiUmVsb2FkQ29uZmlybWF0aW9uTW9kYWxDb250cm9sXCJcclxuICAjUmVsb2FkQ29uZmlybWF0aW9uTW9kYWxDb250cm9sPjwvQkJTRi1Db25maXJtYXRpb25Nb2RhbD5cclxuPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG4iXX0=
|
|
869
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL2NvbmZpZ3VyYXRpb25zL2NvbmZpZ3VyYXRpb24vY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL2NvbmZpZ3VyYXRpb25zL2NvbmZpZ3VyYXRpb24vY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQXNFLGNBQWMsRUFBb0IsTUFBTSx5QkFBeUIsQ0FBQztBQUVyVixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUVoRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFHckYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU0zRyxNQUFNLE9BQU8sc0JBQXNCO0lBa0NTLENBQUM7SUFrRjNDLFlBQVk7SUFHWixZQUFvQixXQUF3QixFQUNsQyxlQUFnQyxFQUNqQyxjQUE4QixFQUM3QixvQkFBMEMsRUFDMUMsa0JBQXNDLEVB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O2dCQXFGVyx3QkFBd0I7c0JBQWpGLFNBQVM7dUJBQUMsMEJBQTBCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQU1RLDhCQUE4QjtzQkFBN0YsU0FBUzt1QkFBQyxnQ0FBZ0MsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29udHJvbExheW91dCwgRmlsdGVySXRlbSwgRmlsdGVyVHlwZSwgSW5wdXRUeXBlLCBQYWdpbmdPcHRpb25zLCBUZXh0Qm94T3B0aW9ucywgRHJvcGRvd25PcHRpb25zLCBUb2dnbGVTbGlkZU9wdGlvbnMsIEZvcm1PcHRpb25zLCBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnMsIFBhZ2luZ0FjdGlvbk1vZGUsIFN0eWxlQ29uZmlybWF0aW9uTW9kZSwgUGFnaW5nQ29tcG9uZW50LCBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudCwgRHJvcGRvd25MaXN0Q29tcG9uZW50LCBQZXJtaXNzaW9uU2V0cywgRHJvcGRvd25MaXN0SXRlbSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL1NlcnZpY2VzL0NvbmZpZ3VyYXRpb25zU2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9Db25maWd1cmF0aW9uTW9kZWxzL0NvbmZpZ3VyYXRpb25Nb2RlbCc7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWV0cm9uaWMvY29yZS9zZXJ2aWNlcy9wYWdlLWluZm8uc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBVdGlsaXR5U2VydmljZSwgQkJTRlRyYW5zbGF0ZVNlcnZpY2UsIEVudmlyb25tZW50U2VydmljZSwgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uRERMU291cmNlLCBDb25maWd1cmF0aW9uVmFsdWVUeXBlcywgQ29uc3RhbnRzLCBTY29wZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9jb25zdGFudHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItY29uZmlndXJhdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb25maWd1cmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAvL1BhZ2UgcmVxdWlyZW1lbnRzXHJcbiAgc2hvd1BhZ2VDb250ZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQXBpVXJsID0gXCIvYXBpL2FkbWluL0NvbmZpZ3VyYXRpb24vXCI7XHJcbiAgUHJvZHVjdGlvbk1vZGU6IGJvb2xlYW47XHJcbiAgaXNGaWx0ZXJEYXRhTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY3VycmVudFVzZXJQcm9maWxlOiBhbnk7XHJcbiAgcGVybWlzc2lvblNldHMgPSBQZXJtaXNzaW9uU2V0cztcclxuICBpc011bHRpVGVuYW5jeUFsbG93ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1N1cGVyQWRtaW46IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy9GaWx0ZXIgYW5kIHBhZ2luZyBjb21wb25lbnRzXHJcbiAgQ29uZmlndXJhdGlvbkZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBzZWFyY2hUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBUZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgQ29uZmlndXJhdGlvblBhZ2luZ1Jlc3VsdDogYW55W10gPSBbXTtcclxuICBjbGllbnRTaWRlUGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIENvbmZpZ3VyYXRpb25QYWdpbmc6IFBhZ2luZ09wdGlvbnM7XHJcbiAgb3JnYW5pemF0aW9uT3B0aW9uczogRHJvcGRvd25PcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gIG9yZ2FuaXphdGlvbnNGaWx0ZXI6IEZpbHRlckl0ZW07XHJcblxyXG4gIGlzRmlsdGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnQ29uZmlndXJhdGlvblBhZ2luZ1ZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIHBhZ2luZ0VsZW1lbnQ6IFBhZ2luZ0NvbXBvbmVudDxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ29yZ2FuaXphdGlvbkRETCcsIHsgc3RhdGljOiBmYWxzZSB9KSBvcmdhbml6YXRpb25EREw6IERyb3Bkb3duTGlzdENvbXBvbmVudDtcclxuXHJcbiAgLy9SZXF1aXJlZCBsaXN0c1xyXG4gIFNjb3Blc0xpc3Q6IGFueVtdID0gW107XHJcbiAgUGVybWlzc2lvbkxpc3Q6IGFueVtdID0gW107XHJcbiAgVXNlcnNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIExvb2t1cHNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIExvb2t1cEl0ZW1zTGlzdDogYW55W10gPSBbXTtcclxuICBWYWx1ZVR5cGVMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIFZhbHVlU291cmNlTGlzdDogYW55W10gPSBbXTtcclxuICBDYXRlZ29yeUxpc3Q6IGFueVtdID0gW107XHJcbiAgb3JnYW5pemF0aW9uTGlzdDogRHJvcGRvd25MaXN0SXRlbVtdID0gW107O1xyXG5cclxuXHJcbiAgLy9BZGQsRWRpdCByZXF1aXJlZCBmbGFnc1xyXG4gIFNob3dQZXJtaXNzaW9uTGlzdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFNob3dVc2Vyc0xpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBTaG93TG9va3VwTGlzdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFNob3dWYWx1ZUFuZERlZmF1bHRWYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFNob3dWYWx1ZVRvZ2dsZUFuZERlZmF1bHRWYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFNob3dTb3VyY2VGdW5jdGlvblBhdGg6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBTaG93RHJvcERvd25Tb3VyY2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBTaG93TG9va3VwSXRlbXNMaXN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgU2hvd1NvdXJjZUZ1bmN0aW9uRGF0YTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dGdW5jdGlvbk5vdEZvdW5kRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzb3VyY2VGdW5jdGlvbkRhdGFOb3RMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjb25maWd1cmF0aW9uOiBhbnkgPSBudWxsO1xyXG5cclxuICAvLyNyZWdpb24gYWRkIG1vZGFsIGNvbnRyb2xcclxuICBhZGRDb25maWd1cmF0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIGFkZENvbmZpZ3VyYXRpb25Gb3JtT3B0aW9uczogRm9ybU9wdGlvbnM7XHJcbiAgS2V5OiBUZXh0Qm94T3B0aW9ucztcclxuICBWYWx1ZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgRGVmYXVsdFZhbHVlOiBUZXh0Qm94T3B0aW9ucztcclxuICBGdW5jdGlvblNvdXJjZVBhdGg6IFRleHRCb3hPcHRpb25zO1xyXG4gIFNvdXJjZUZ1bmNWYWx1ZTogRHJvcGRvd25PcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gIFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWU6IERyb3Bkb3duT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICBsb2FkSnNvblRvZ2dsZTogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIFZhbHVlVG9nZ2VsOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgRGVmYXVsdFZhbHVlVG9nZ2VsOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgU2NvcGU6IERyb3Bkb3duT3B0aW9ucztcclxuICBUeXBlOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgQ2F0ZWdvcnk6IERyb3Bkb3duT3B0aW9ucztcclxuICBQZXJtaXNzaW9uU2V0OiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgVXNlcjogRHJvcGRvd25PcHRpb25zO1xyXG4gIFNvdXJjZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIExvb2t1cDogRHJvcGRvd25PcHRpb25zO1xyXG4gIExvb2t1cFZhbHVlOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgTG9va3VwRGVmYXVsdFZhbHVlOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgYWRkT3JnYW5pemF0aW9uOiBEcm9wZG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gZWRpdCBtb2RlbCBjb250cm9sXHJcbiAgRWRpdENvbmZpZ3VyYXRpb25Gb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgRWRpdENvbmZpZ3VyYXRpb25Gb3JtT3B0aW9uczogRm9ybU9wdGlvbnM7XHJcbiAgRWRpdEtleTogVGV4dEJveE9wdGlvbnMgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICBFZGl0VGV4dFZhbHVlOiBUZXh0Qm94T3B0aW9ucyA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gIEVkaXRUZXh0RGVmYXVsdFZhbHVlOiBUZXh0Qm94T3B0aW9ucyA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gIEVkaXRTb3VyY2VQYXRoOiBUZXh0Qm94T3B0aW9ucyA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gIEVkaXRGdW5jdGlvblNvdXJjZVBhdGg6IFRleHRCb3hPcHRpb25zID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgRWRpdFZhbHVlVG9nZ2VsZTogVG9nZ2xlU2xpZGVPcHRpb25zID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gIEVkaXREZWZhdWx0VmFsdWVUb2dnZWxlOiBUb2dnbGVTbGlkZU9wdGlvbnMgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgRWRpdFNjb3BlOiBEcm9wZG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgRWRpdFR5cGU6IERyb3Bkb3duT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICBFZGl0UGVybWlzc2lvblNldDogRHJvcGRvd25PcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gIEVkaXRVc2VyOiBEcm9wZG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgRWRpdFNvdXJjZTogRHJvcGRvd25PcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gIEVkaXRMb29rdXA6IERyb3Bkb3duT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICBFZGl0TG9va3VwVmFsdWU6IERyb3Bkb3duT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICBFZGl0TG9va3VwRGVmYXVsdFZhbHVlOiBEcm9wZG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgRWRpdFNvdXJjZUZ1bmNWYWx1ZTogRHJvcGRvd25PcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gIEVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlOiBEcm9wZG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgZWRpdE9yZ2FuaXphdGlvbjogRHJvcGRvd25PcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG5cclxuICBDb25maWd1cmF0aW9uSWQ6IHN0cmluZztcclxuICBDb25maWd1cmF0aW9uVmFsdWVUeXBlSURfR1VJRDogc3RyaW5nO1xyXG4gIEVkaXRDb25maWd1cmF0aW9uU2NvcGVJRF9HVUlEOiBzdHJpbmc7XHJcbiAgRWRpdENvbmZpZ3VyYXRpb25ERExTb3VyY2VJRF9HVUlEOiBzdHJpbmc7XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBkZWxldGUgIE1vZGVsIENvbnRyb2xzXHJcbiAgZGVsZXRlQ29uZmlndXJhdGlvbklkOiBzdHJpbmc7XHJcbiAgRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9uczogQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zO1xyXG4gIGRlbGV0ZUNvbnRyb2xMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdDb25maXJtYXRpb25Nb2RhbENvbnRyb2wnLCB7IHN0YXRpYzogZmFsc2UgfSkgQ29uZmlybWF0aW9uTW9kYWxDb250cm9sOiBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudDtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIFJlbG9hZCBKc29uIE1vZGVsIENvbnRyb2xzXHJcbiAgcmVsb2FkQ29uZmlybWF0aW9uT3B0aW9uczogQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zO1xyXG4gIHJlbG9hZENvbnRyb2xMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdSZWxvYWRDb25maXJtYXRpb25Nb2RhbENvbnRyb2wnLCB7IHN0YXRpYzogZmFsc2UgfSkgcmVsb2FkQ29uZmlybWF0aW9uTW9kYWxDb250cm9sOiBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudDtcclxuICBlZGl0TG9hZEpzb25Ub2dnbGU6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICAvLyNlbmRyZWdpb25cclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBwYWdlSW5mb1NlcnZpY2U6IFBhZ2VJbmZvU2VydmljZSxcclxuICAgIHB1YmxpYyB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGJic2ZUcmFuc2xhdGVTZXJ2aWNlOiBCQlNGVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgZW52aXJvbm1lbnRTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIENvbmZpZ3VyYXRpb25zU2VydmljZTogQ29uZmlndXJhdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxyXG4gICAgcHJpdmF0ZSByZXF1ZXN0SGFuZGxlclNlcnZpY2U6IFJlcXVlc3RIYW5kbGVyU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnNob3dQYWdlQ29udGVudCA9IHRydWU7XHJcbiAgICAvL1BhZ2UgaGVhZGVyIChicmVhZGNydW1iIGFuZCB0aXRsZSlcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlVGl0bGUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDb25maWd1cmF0aW9uXCIpO1xyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VCcmVhZGNydW1icyA9IFtcclxuICAgICAgeyB0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSG9tZVwiKSwgcGF0aDogJy9BZG1pbi9Ib21lJywgaXNTZXBhcmF0b3I6IGZhbHNlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgeyB0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlIH1cclxuXHJcbiAgICBdO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlVGl0bGUoKTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZUJyZWFkY3J1bWJzKCk7XHJcblxyXG4gICAgLy9vbiBsYW5nIGNoYW5nZWRcclxuICAgIHRoaXMuYmJzZlRyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuICAgICAgdGhpcy5zaG93UGFnZUNvbnRlbnQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLlByb2R1Y3Rpb25Nb2RlID0gdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0UHJvZHVjdGlvbk1vZGUoKTtcclxuXHJcbiAgICB0aGlzLmlzTXVsdGlUZW5hbmN5QWxsb3dlZCA9IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEFsbG93TXVsdGlUZW5hbmN5KCk7XHJcbiAgICB0aGlzLmN1cnJlbnRVc2VyUHJvZmlsZSA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0Q3VycmVudFVzZXIoKS5wcm9maWxlO1xyXG4gICAgdGhpcy5pc1N1cGVyQWRtaW4gPSB0aGlzLmN1cnJlbnRVc2VyUHJvZmlsZS5wZXJtaXNzaW9uU2V0U0lEID09IHRoaXMucGVybWlzc2lvblNldHMuQWRtaW47XHJcblxyXG4gICAgLy9pbml0aWFsaXplIHBhZ2VcclxuICAgIHRoaXMuaW5pdGlhbGl6ZVBhZ2UoKTtcclxuICB9XHJcbiAgaW5pdGlhbGl6ZVBhZ2UoKSB7XHJcbiAgICAvLyBUZXh0Qm94IGluaXRcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94Lm5hbWUgPSBcInNlYXJjaFRleHRCb3hcIjtcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3gucGxhY2Vob2xkZXIgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZWFyY2hCeU5hbWVcIik7XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guaGlkZUxhYmVsID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLm9yZ2FuaXphdGlvbk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICB0aGlzLm9yZ2FuaXphdGlvbk9wdGlvbnMubmFtZSA9IFwib3JnYW5pemF0aW9uXCI7XHJcbiAgICB0aGlzLm9yZ2FuaXphdGlvbk9wdGlvbnMubGFiZWxLZXkgPSBcIk9yZ2FuaXphdGlvbnNcIjtcclxuICAgIHRoaXMub3JnYW5pemF0aW9uT3B0aW9ucy5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgdGhpcy5vcmdhbml6YXRpb25PcHRpb25zLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5mb3JtQ29udHJvbE5hbWUgPSB0aGlzLnNlYXJjaFRleHRCb3gubmFtZTtcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLmFjdGlvblBhcmFtZXRlck5hbWUgPSBcInNlYXJjaFRleHRcIjtcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLmlzRm9ybUNvbnRyb2wgPSB0cnVlO1xyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuZmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuVGV4dEJveDtcclxuXHJcbiAgICB0aGlzLkNvbmZpZ3VyYXRpb25QYWdpbmcgPSBuZXcgUGFnaW5nT3B0aW9ucygpO1xyXG4gICAgdGhpcy5Db25maWd1cmF0aW9uUGFnaW5nLmFjdGlvblBvc3RVUkwgPSB0aGlzLkFwaVVybCArICdHZXRDb25maWd1cmF0aW9uc0J5RmlsdGVyJztcclxuICAgIHRoaXMuQ29uZmlndXJhdGlvblBhZ2luZy5vbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcyA9IFt0aGlzLnNlYXJjaFRleHRCb3gubmFtZV07XHJcbiAgICB0aGlzLkNvbmZpZ3VyYXRpb25QYWdpbmcuZmlsdGVycyA9IFt0aGlzLlRleHRJbnB1dEZpbHRlcl07XHJcbiAgICB0aGlzLkNvbmZpZ3VyYXRpb25QYWdpbmcudmFsaWRhdGlvblRva2VuID0gdGhpcy5hdXRoU2VydmljZS5hdXRob3JpemF0aW9uSGVhZGVyVmFsdWUoKTtcclxuICAgIHRoaXMuQ29uZmlndXJhdGlvblBhZ2luZy5yZXNldEZpbHRlckJ1dHRvbk5hbWUgPSAnY29uZmlndXJhdGlvblJlc2V0QnV0dG9uJztcclxuXHJcbiAgICBpZiAodGhpcy5pc011bHRpVGVuYW5jeUFsbG93ZWQgJiYgdGhpcy5pc1N1cGVyQWRtaW4pIHtcclxuICAgICAgdGhpcy5Db25maWd1cmF0aW9uUGFnaW5nLmZpbHRlcnMgPSB0aGlzLkNvbmZpZ3VyYXRpb25QYWdpbmcuZmlsdGVycyA/PyBbXTtcclxuICAgICAgdGhpcy5Db25maWd1cmF0aW9uUGFnaW5nLmRyb3Bkb3duRmlsdGVyc0NvbnRyb2xOYW1lcyA9IHRoaXMuQ29uZmlndXJhdGlvblBhZ2luZy5kcm9wZG93bkZpbHRlcnNDb250cm9sTmFtZXMgPz8gW107XHJcblxyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvbnNGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvbnNGaWx0ZXIuZm9ybUNvbnRyb2xOYW1lID0gdGhpcy5vcmdhbml6YXRpb25PcHRpb25zLm5hbWU7XHJcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uc0ZpbHRlci5hY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJvcmdhbml6YXRpb25JZFwiO1xyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvbnNGaWx0ZXIuaXNGb3JtQ29udHJvbCA9IHRydWU7XHJcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uc0ZpbHRlci5maWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5Ecm9wZG93bkxpc3Q7XHJcblxyXG4gICAgICB0aGlzLkNvbmZpZ3VyYXRpb25QYWdpbmcuZmlsdGVycy5wdXNoKHRoaXMub3JnYW5pemF0aW9uc0ZpbHRlcik7XHJcbiAgICAgIHRoaXMuQ29uZmlndXJhdGlvblBhZ2luZy5kcm9wZG93bkZpbHRlcnNDb250cm9sTmFtZXMucHVzaCh0aGlzLm9yZ2FuaXphdGlvbnNGaWx0ZXIuZm9ybUNvbnRyb2xOYW1lKTtcclxuICAgIH1cclxuICAgIHRoaXMuaXNGaWx0ZXJMb2FkZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgbG9hZExpc3RzKCkge1xyXG4gICAgaWYgKCF0aGlzLmlzRmlsdGVyRGF0YUxvYWRlZCkge1xyXG4gICAgICB0aGlzLkNvbmZpZ3VyYXRpb25zU2VydmljZS5sb2FkRHJvcGRvd25Gb3JGaWx0ZXJzKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBsZXQgZHJvcGRvd25zUmVzcG9uc2VNb2RlbCA9IHJlc3VsdDtcclxuICAgICAgICBsZXQgZmlsdGVyT3JnYW5pemF0aW9uTGlzdCA9IFs8RHJvcGRvd25MaXN0SXRlbT57XHJcbiAgICAgICAgICBrZXk6IENvbnN0YW50cy5Ob3RBc3NpZ25lZFRvT3JnYW5pemF0aW9uLFxyXG4gICAgICAgICAgdmFsdWU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk5vdEFzc2lnbmVkXCIpLFxyXG4gICAgICAgIH1dLmNvbmNhdChkcm9wZG93bnNSZXNwb25zZU1vZGVsLm9yZ2FuaXphdGlvbik7XHJcbiAgICAgICAgbGV0IG9yZ2FuaXphdGlvbnNFbGVtZW50ID0gdGhpcy5vcmdhbml6YXRpb25EREw7XHJcbiAgICAgICAgb3JnYW5pemF0aW9uc0VsZW1lbnQudXBkYXRlRGF0YVNvdXJjZShmaWx0ZXJPcmdhbml6YXRpb25MaXN0KTtcclxuXHJcbiAgICAgICAgdGhpcy5pc0ZpbHRlckRhdGFMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vUGFnaW5nIGZ1bmN0aW9uc1xyXG4gIHNldENvbmZpZ3VyYXRpb25MaXN0UmVzdWx0KHJlc3VsdCkge1xyXG4gICAgdGhpcy5Db25maWd1cmF0aW9uUGFnaW5nUmVzdWx0ID0gcmVzdWx0O1xyXG4gICAgdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0ID0gcmVzdWx0O1xyXG4gICAgdGhpcy5zaG93UGFnZUNvbnRlbnQgPSB0cnVlO1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gIH1cclxuICBzZWFyY2hDbGllbnRTaWRlKHNlYXJjaFZhbHVlKSB7XHJcbiAgICBpZiAoc2VhcmNoVmFsdWUpXHJcbiAgICAgIHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdCA9IHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdC5maWx0ZXIoXHJcbiAgICAgICAgZnVuY3Rpb24gKGl0ZW0pIHtcclxuICAgICAgICAgIHJldHVybiBpdGVtLmtleS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQgPSB0aGlzLkNvbmZpZ3VyYXRpb25QYWdpbmdSZXN1bHQ7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8jcmVnaW9uIEFkZCBjb25maWd1cmF0aW9uXHJcbiAgc2hvd0FkZENvbmZpZ3VyYXRpb25Nb2RhbChBZGRDb25maWd1cmF0aW9uTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcblxyXG4gICAgdGhpcy5TaG93UGVybWlzc2lvbkxpc3QgPSBmYWxzZTtcclxuICAgIHRoaXMuU2hvd1VzZXJzTGlzdCA9IGZhbHNlO1xyXG4gICAgdGhpcy5TaG93TG9va3VwTGlzdCA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMucmVzZXRDb25maWd1cmF0aW9uRmxhZ3MoKTtcclxuICAgIHRoaXMuQ29uZmlndXJhdGlvbnNTZXJ2aWNlLmxvYWRBZGREcm9wZG93bnMoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAvL0xpc3RzIGxvYWRpbmdcclxuICAgICAgbGV0IHJlc3VsdE9iaiA9IHJlc3VsdCBhcyBhbnk7XHJcbiAgICAgIHRoaXMuU2NvcGVzTGlzdCA9IHJlc3VsdE9iai5zY29wZXM7XHJcbiAgICAgIHRoaXMuUGVybWlzc2lvbkxpc3QgPSByZXN1bHRPYmoucGVybWlzc2lvbkxpc3Q7XHJcbiAgICAgIHRoaXMuVXNlcnNMaXN0ID0gcmVzdWx0T2JqLnVzZXJzO1xyXG4gICAgICB0aGlzLkxvb2t1cHNMaXN0ID0gcmVzdWx0T2JqLmxvb2t1cHM7XHJcbiAgICAgIHRoaXMuVmFsdWVUeXBlTGlzdCA9IHJlc3VsdE9iai52YWx1ZVR5cGU7XHJcbiAgICAgIHRoaXMuVmFsdWVTb3VyY2VMaXN0ID0gcmVzdWx0T2JqLnZhbHVlU291cmNlO1xyXG4gICAgICB0aGlzLkNhdGVnb3J5TGlzdCA9IHJlc3VsdE9iai5jYXRlZ29yeTtcclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25MaXN0ID0gcmVzdWx0T2JqLm9yZ2FuaXphdGlvbnM7XHJcblxyXG5cclxuICAgICAgLy9Gb3JtIGFuZCBjb250cm9scyByZWluaXRpYWxpemVcclxuICAgICAgdGhpcy5hZGRDb25maWd1cmF0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgICB0aGlzLmFkZENvbmZpZ3VyYXRpb25Gb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFkZENvbmZpZ3VyYXRpb25Gb3JtT3B0aW9ucy5mb3JtR3JvdXAgPSB0aGlzLmFkZENvbmZpZ3VyYXRpb25Gb3JtO1xyXG4gICAgICB0aGlzLmFkZENvbmZpZ3VyYXRpb25Gb3JtT3B0aW9ucy5nZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRDb25maWd1cmF0aW9uTW9kZWw7XHJcbiAgICAgIHRoaXMuYWRkQ29uZmlndXJhdGlvbkZvcm1PcHRpb25zLnNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0QWRkQ29uZmlndXJhdGlvbkZ1bmN0aW9uO1xyXG4gICAgICB0aGlzLmFkZENvbmZpZ3VyYXRpb25Gb3JtT3B0aW9ucy5wYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnQ7XHJcblxyXG4gICAgICAvL1N0YXRpYyBjb250cm9sc1xyXG5cclxuICAgICAgdGhpcy5hZGRPcmdhbml6YXRpb24ubmFtZSA9IFwiT3JnYW5pemF0aW9uSURfR1VJRFwiO1xyXG4gICAgICB0aGlzLmFkZE9yZ2FuaXphdGlvbi5sYWJlbEtleSA9IFwiT3JnYW5pemF0aW9uXCI7XHJcbiAgICAgIHRoaXMuYWRkT3JnYW5pemF0aW9uLnNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICB0aGlzLmFkZE9yZ2FuaXphdGlvbi5kYXRhU291cmNlID0gdGhpcy5vcmdhbml6YXRpb25MaXN0O1xyXG4gICAgICB0aGlzLmFkZE9yZ2FuaXphdGlvbi5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZE9yZ2FuaXphdGlvbi5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWRkT3JnYW5pemF0aW9uLmlzUmVxdWlyZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgIHRoaXMuS2V5ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuS2V5Lm5hbWUgPSBcIktleVwiO1xyXG4gICAgICB0aGlzLktleS5sYWJlbEtleSA9IFwiS2V5XCI7XHJcbiAgICAgIHRoaXMuS2V5LnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5LZXkuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuS2V5LnZhbHVlID0gbnVsbDtcclxuICAgICAgdGhpcy5LZXkubWF4TGVuZ3RoID0gMjU2O1xyXG5cclxuICAgICAgdGhpcy5TY29wZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5TY29wZS5uYW1lID0gXCJTY29wZVwiO1xyXG4gICAgICB0aGlzLlNjb3BlLmxhYmVsS2V5ID0gXCJTY29wZVwiO1xyXG4gICAgICB0aGlzLlNjb3BlLnNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICB0aGlzLlNjb3BlLmRhdGFTb3VyY2UgPSB0aGlzLlNjb3Blc0xpc3Q7XHJcbiAgICAgIHRoaXMuU2NvcGUuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5TY29wZS5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuU2NvcGUuaXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLlR5cGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuVHlwZS5uYW1lID0gXCJUeXBlXCI7XHJcbiAgICAgIHRoaXMuVHlwZS5sYWJlbEtleSA9IFwiVHlwZVwiO1xyXG4gICAgICB0aGlzLlR5cGUuc2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgIHRoaXMuVHlwZS5kYXRhU291cmNlID0gdGhpcy5WYWx1ZVR5cGVMaXN0O1xyXG4gICAgICB0aGlzLlR5cGUuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5UeXBlLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5UeXBlLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5DYXRlZ29yeSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5DYXRlZ29yeS5uYW1lID0gXCJDYXRlZ29yeVwiO1xyXG4gICAgICB0aGlzLkNhdGVnb3J5LmxhYmVsS2V5ID0gXCJDYXRlZ29yeVwiO1xyXG4gICAgICB0aGlzLkNhdGVnb3J5LnNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICB0aGlzLkNhdGVnb3J5LmRhdGFTb3VyY2UgPSB0aGlzLkNhdGVnb3J5TGlzdDtcclxuICAgICAgdGhpcy5DYXRlZ29yeS5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLkNhdGVnb3J5LmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5DYXRlZ29yeS5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuUGVybWlzc2lvblNldCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5QZXJtaXNzaW9uU2V0Lm5hbWUgPSBcIlBlcm1pc3Npb25TZXRcIjtcclxuICAgICAgdGhpcy5QZXJtaXNzaW9uU2V0LmxhYmVsS2V5ID0gXCJQZXJtaXNzaW9uU2V0XCI7XHJcbiAgICAgIHRoaXMuUGVybWlzc2lvblNldC5zZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgdGhpcy5QZXJtaXNzaW9uU2V0LmRhdGFTb3VyY2UgPSB0aGlzLlBlcm1pc3Npb25MaXN0O1xyXG4gICAgICB0aGlzLlBlcm1pc3Npb25TZXQuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5QZXJtaXNzaW9uU2V0LmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5QZXJtaXNzaW9uU2V0LmlzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5Vc2VyID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlVzZXIubmFtZSA9IFwiVXNlclwiO1xyXG4gICAgICB0aGlzLlVzZXIubGFiZWxLZXkgPSBcIlVzZXJcIjtcclxuICAgICAgdGhpcy5Vc2VyLnNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICB0aGlzLlVzZXIuZGF0YVNvdXJjZSA9IHRoaXMuVXNlcnNMaXN0O1xyXG4gICAgICB0aGlzLlVzZXIuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5Vc2VyLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5Vc2VyLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5sb2FkSnNvblRvZ2dsZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5sb2FkSnNvblRvZ2dsZS5uYW1lID0gXCJJc0xvYWRJbkpzb25cIjtcclxuICAgICAgdGhpcy5sb2FkSnNvblRvZ2dsZS5sYWJlbEtleSA9IFwiTG9hZEpzb25Ub2dnbGVcIjtcclxuICAgICAgdGhpcy5sb2FkSnNvblRvZ2dsZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmxvYWRKc29uVG9nZ2xlLnZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG5cclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihBZGRDb25maWd1cmF0aW9uTW9kYWwpO1xyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBDaGFuZ2VUeXBlVmFsdWUoa2V5KSB7XHJcbiAgICB0aGlzLnJlc2V0Q29uZmlndXJhdGlvbkZsYWdzKCk7XHJcbiAgICB0aGlzLnJlbW92ZUZvcm1Db250cm9scygpO1xyXG4gICAga2V5ID0ga2V5LnRvTG93ZXJDYXNlKCk7XHJcbiAgICBzd2l0Y2ggKGtleSkge1xyXG4gICAgICBjYXNlIENvbmZpZ3VyYXRpb25WYWx1ZVR5cGVzLlRleHQ6XHJcbiAgICAgICAgdGhpcy5WYWx1ZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuVmFsdWUubmFtZSA9IFwiVmFsdWVcIjtcclxuICAgICAgICB0aGlzLlZhbHVlLmxhYmVsS2V5ID0gXCJWYWx1ZVwiO1xyXG4gICAgICAgIHRoaXMuVmFsdWUudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgIHRoaXMuVmFsdWUudmFsdWUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuVmFsdWUuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5WYWx1ZS5tYXhMZW5ndGggPSA1MDAwO1xyXG5cclxuICAgICAgICB0aGlzLkRlZmF1bHRWYWx1ZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuRGVmYXVsdFZhbHVlLm5hbWUgPSBcIkRlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgIHRoaXMuRGVmYXVsdFZhbHVlLmxhYmVsS2V5ID0gXCJEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICB0aGlzLkRlZmF1bHRWYWx1ZS50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgdGhpcy5EZWZhdWx0VmFsdWUudmFsdWUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuRGVmYXVsdFZhbHVlLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuRGVmYXVsdFZhbHVlLm1heExlbmd0aCA9IDUwMDA7XHJcblxyXG4gICAgICAgIHRoaXMuU2hvd1ZhbHVlQW5kRGVmYXVsdFZhbHVlID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb25maWd1cmF0aW9uVmFsdWVUeXBlcy5Ub2dnbGU6XHJcbiAgICAgICAgdGhpcy5WYWx1ZVRvZ2dlbCA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLlZhbHVlVG9nZ2VsLm5hbWUgPSBcIlZhbHVlVG9nZ2VsXCI7XHJcbiAgICAgICAgdGhpcy5WYWx1ZVRvZ2dlbC5sYWJlbEtleSA9IFwiVmFsdWVcIjtcclxuICAgICAgICB0aGlzLlZhbHVlVG9nZ2VsLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5WYWx1ZVRvZ2dlbC52aWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuXHJcbiAgICAgICAgdGhpcy5EZWZhdWx0VmFsdWVUb2dnZWwgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5EZWZhdWx0VmFsdWVUb2dnZWwubmFtZSA9IFwiRGVmYXVsdFZhbHVlVG9nZ2VsXCI7XHJcbiAgICAgICAgdGhpcy5EZWZhdWx0VmFsdWVUb2dnZWwubGFiZWxLZXkgPSBcIkRlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgIHRoaXMuRGVmYXVsdFZhbHVlVG9nZ2VsLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5EZWZhdWx0VmFsdWVUb2dnZWwudmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgICAgdGhpcy5TaG93VmFsdWVUb2dnbGVBbmREZWZhdWx0VmFsdWUgPSB0cnVlO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb25maWd1cmF0aW9uVmFsdWVUeXBlcy5Ecm9wZG93bkxpc3Q6XHJcbiAgICAgICAgdGhpcy5Tb3VyY2UgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5Tb3VyY2UubmFtZSA9IFwiU291cmNlXCI7XHJcbiAgICAgICAgdGhpcy5Tb3VyY2UubGFiZWxLZXkgPSBcIlNvdXJjZVwiO1xyXG4gICAgICAgIHRoaXMuU291cmNlLnNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuU291cmNlLmRhdGFTb3VyY2UgPSB0aGlzLlZhbHVlU291cmNlTGlzdDtcclxuICAgICAgICB0aGlzLlNvdXJjZS5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuU291cmNlLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLlNvdXJjZS5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLlNob3dEcm9wRG93blNvdXJjZSA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBDaGFuZ2VTb3VyY2Uoa2V5KSB7XHJcbiAgICBrZXkgPSBrZXkudG9Mb3dlckNhc2UoKTtcclxuICAgIHN3aXRjaCAoa2V5KSB7XHJcbiAgICAgIGNhc2UgQ29uZmlndXJhdGlvbkRETFNvdXJjZS5Mb29rdXA6XHJcbiAgICAgICAgdGhpcy5hZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiRnVuY3Rpb25Tb3VyY2VQYXRoXCIpO1xyXG4gICAgICAgIHRoaXMuYWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIlNvdXJjZUZ1bmNWYWx1ZVwiKTtcclxuICAgICAgICB0aGlzLmFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJTb3VyY2VGdW5jRGVmYXVsdFZhbHVlXCIpO1xyXG4gICAgICAgIHRoaXMuTG9va3VwID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuTG9va3VwLm5hbWUgPSBcIkxvb2t1cFwiO1xyXG4gICAgICAgIHRoaXMuTG9va3VwLmxhYmVsS2V5ID0gXCJMb29rdXBcIjtcclxuICAgICAgICB0aGlzLkxvb2t1cC5zZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgICB0aGlzLkxvb2t1cC5kYXRhU291cmNlID0gdGhpcy5Mb29rdXBzTGlzdDtcclxuICAgICAgICB0aGlzLkxvb2t1cC5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuTG9va3VwLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLkxvb2t1cC5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5TaG93TG9va3VwTGlzdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5TaG93U291cmNlRnVuY3Rpb25QYXRoID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5TaG93U291cmNlRnVuY3Rpb25EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zb3VyY2VGdW5jdGlvbkRhdGFOb3RMb2FkZWQgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb25maWd1cmF0aW9uRERMU291cmNlLkZ1bmN0aW9uOlxyXG4gICAgICAgIHRoaXMuYWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIkxvb2t1cFwiKTtcclxuICAgICAgICB0aGlzLmFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJMb29rdXBWYWx1ZVwiKTtcclxuICAgICAgICB0aGlzLmFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJMb29rdXBEZWZhdWx0VmFsdWVcIik7XHJcblxyXG4gICAgICAgIHRoaXMuRnVuY3Rpb25Tb3VyY2VQYXRoID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5GdW5jdGlvblNvdXJjZVBhdGgubmFtZSA9IFwiRnVuY3Rpb25Tb3VyY2VQYXRoXCI7XHJcbiAgICAgICAgdGhpcy5GdW5jdGlvblNvdXJjZVBhdGgubGFiZWxWYWx1ZSA9IFwiU291cmNlUGF0aFwiO1xyXG4gICAgICAgIHRoaXMuRnVuY3Rpb25Tb3VyY2VQYXRoLmxhYmVsS2V5ID0gXCJTb3VyY2VQYXRoXCI7XHJcbiAgICAgICAgdGhpcy5GdW5jdGlvblNvdXJjZVBhdGgudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgIHRoaXMuRnVuY3Rpb25Tb3VyY2VQYXRoLnZhbHVlID0gbnVsbDtcclxuICAgICAgICB0aGlzLkZ1bmN0aW9uU291cmNlUGF0aC5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5TaG93U291cmNlRnVuY3Rpb25QYXRoID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNvdXJjZUZ1bmN0aW9uRGF0YU5vdExvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5TaG93TG9va3VwTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuU2hvd0xvb2t1cEl0ZW1zTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlRm9ybUNvbnRyb2xzKCkge1xyXG4gICAgdGhpcy5hZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiVmFsdWVcIik7XHJcbiAgICB0aGlzLmFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJEZWZhdWx0VmFsdWVcIik7XHJcbiAgICB0aGlzLmFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJWYWx1ZVRvZ2dlbFwiKTtcclxuICAgIHRoaXMuYWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIkRlZmF1bHRWYWx1ZVRvZ2dlbFwiKTtcclxuICAgIHRoaXMuYWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIlNvdXJjZVwiKTtcclxuICAgIHRoaXMuYWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIkxvb2t1cFwiKTtcclxuICAgIHRoaXMuYWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIkxvb2t1cFZhbHVlXCIpO1xyXG4gICAgdGhpcy5hZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiTG9va3VwRGVmYXVsdFZhbHVlXCIpO1xyXG4gICAgdGhpcy5hZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiRnVuY3Rpb25Tb3VyY2VQYXRoXCIpO1xyXG4gICAgdGhpcy5hZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiU291cmNlRnVuY1ZhbHVlXCIpO1xyXG4gICAgdGhpcy5hZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiU291cmNlRnVuY0RlZmF1bHRWYWx1ZVwiKTtcclxuICB9XHJcblxyXG4gIENoYW5nZUxvb2t1cChrZXksIGlzQWRkOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLkNvbmZpZ3VyYXRpb25zU2VydmljZS5sb2FkTG9va3VwSXRlbXMoa2V5KS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgUmVzdWx0ID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgdGhpcy5Mb29rdXBJdGVtc0xpc3QgPSBSZXN1bHQubG9va3VwSXRlbXM7XHJcbiAgICAgIGlmICh0aGlzLlNob3dMb29rdXBJdGVtc0xpc3QpIHtcclxuICAgICAgICBpZiAoaXNBZGQpIHtcclxuICAgICAgICAgIHRoaXMuTG9va3VwVmFsdWUuc2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cERlZmF1bHRWYWx1ZS5zZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuTG9va3VwVmFsdWUuZGF0YVNvdXJjZSA9IHRoaXMuTG9va3VwSXRlbXNMaXN0O1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBEZWZhdWx0VmFsdWUuZGF0YVNvdXJjZSA9IHRoaXMuTG9va3VwSXRlbXNMaXN0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLnNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLnNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUuZGF0YVNvdXJjZSA9IHRoaXMuTG9va3VwSXRlbXNMaXN0O1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLmRhdGFTb3VyY2UgPSB0aGlzLkxvb2t1cEl0ZW1zTGlzdDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKGlzQWRkKSB7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cFZhbHVlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBWYWx1ZS5uYW1lID0gXCJMb29rdXBWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBWYWx1ZS5sYWJlbEtleSA9IFwiVmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuTG9va3VwVmFsdWUuc2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cFZhbHVlLmRhdGFTb3VyY2UgPSB0aGlzLkxvb2t1cEl0ZW1zTGlzdDtcclxuICAgICAgICAgIHRoaXMuTG9va3VwVmFsdWUuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuTG9va3VwVmFsdWUuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBWYWx1ZS5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuTG9va3VwVmFsdWUuc2hvd0FzdGVyaXNrID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB0aGlzLkxvb2t1cERlZmF1bHRWYWx1ZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuTG9va3VwRGVmYXVsdFZhbHVlLm5hbWUgPSBcIkxvb2t1cERlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBEZWZhdWx0VmFsdWUubGFiZWxLZXkgPSBcIkRlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBEZWZhdWx0VmFsdWUuc2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cERlZmF1bHRWYWx1ZS5kYXRhU291cmNlID0gdGhpcy5Mb29rdXBJdGVtc0xpc3Q7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cERlZmF1bHRWYWx1ZS5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBEZWZhdWx0VmFsdWUuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBEZWZhdWx0VmFsdWUuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5TaG93TG9va3VwSXRlbXNMaXN0ID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZS5uYW1lID0gXCJFZGl0TG9va3VwVmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLmxhYmVsS2V5ID0gXCJWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUuc2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZS5kYXRhU291cmNlID0gdGhpcy5Mb29rdXBJdGVtc0xpc3Q7XHJcbiAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZS5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUuaXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLm5hbWUgPSBcIkVkaXRMb29rdXBEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5sYWJlbEtleSA9IFwiRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUuc2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUuZGF0YVNvdXJjZSA9IHRoaXMuTG9va3VwSXRlbXNMaXN0O1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLlNob3dMb29rdXBJdGVtc0xpc3QgPSB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRBZGRDb25maWd1cmF0aW9uTW9kZWwgPSAoKTogQ29uZmlndXJhdGlvbk1vZGVsW10gPT4ge1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5hZGRDb25maWd1cmF0aW9uRm9ybS52YWx1ZSBhcyBhbnk7XHJcbiAgICBsZXQgYWRkTW9kZWw6IENvbmZpZ3VyYXRpb25Nb2RlbCA9IG5ldyBDb25maWd1cmF0aW9uTW9kZWwoKTtcclxuICAgIGFkZE1vZGVsLmtleSA9IFJlc3VsdE1vZGVsLktleTtcclxuICAgIGFkZE1vZGVsLnNjb3BlSURfR1VJRCA9IFJlc3VsdE1vZGVsLlNjb3BlO1xyXG4gICAgYWRkTW9kZWwudmFsdWVUeXBlSURfR1VJRCA9IFJlc3VsdE1vZGVsLlR5cGU7XHJcbiAgICBhZGRNb2RlbC5jYXRlZ29yeUlEX0dVSUQgPSBSZXN1bHRNb2RlbC5DYXRlZ29yeTtcclxuICAgIGFkZE1vZGVsLnRleHRWYWx1ZSA9IFJlc3VsdE1vZGVsLlZhbHVlO1xyXG4gICAgYWRkTW9kZWwuZGVmYXVsdFRleHRWYWx1ZSA9IFJlc3VsdE1vZGVsLkRlZmF1bHRWYWx1ZTtcclxuICAgIGFkZE1vZGVsLmJvb2xWYWx1ZSA9IFJlc3VsdE1vZGVsLlZhbHVlVG9nZ2VsO1xyXG4gICAgYWRkTW9kZWwuaXNMb2FkSW5Kc29uID0gUmVzdWx0TW9kZWwuSXNMb2FkSW5Kc29uO1xyXG4gICAgYWRkTW9kZWwuZGVmYXVsdEJvb2xWYWx1ZSA9IFJlc3VsdE1vZGVsLkRlZmF1bHRWYWx1ZVRvZ2dlbDtcclxuICAgIGFkZE1vZGVsLnNvdXJjZUZ1bmN0aW9uTmFtZSA9IFJlc3VsdE1vZGVsLkZ1bmN0aW9uU291cmNlUGF0aDtcclxuICAgIGFkZE1vZGVsLnVzZXJJRF9HVUlEID0gUmVzdWx0TW9kZWwuVXNlcjtcclxuICAgIGFkZE1vZGVsLnNlbGVjdGVkTG9va3VwSURfR1VJRCA9IFJlc3VsdE1vZGVsLkxvb2t1cDtcclxuICAgIGFkZE1vZGVsLnZhbHVlID0gUmVzdWx0TW9kZWwuTG9va3VwVmFsdWU7XHJcbiAgICBhZGRNb2RlbC5kZWZhdWx0VmFsdWUgPSBSZXN1bHRNb2RlbC5Mb29rdXBEZWZhdWx0VmFsdWU7XHJcbiAgICBhZGRNb2RlbC5wZXJtaXNzaW9uU2V0SURfR1VJRCA9IFJlc3VsdE1vZGVsLlBlcm1pc3Npb25TZXQ7XHJcbiAgICBhZGRNb2RlbC52YWx1ZVNvdXJjZUlEX0dVSUQgPSBSZXN1bHRNb2RlbC5Tb3VyY2U7XHJcbiAgICBhZGRNb2RlbC5vcmdhbml6YXRpb25JRF9HVUlEID0gUmVzdWx0TW9kZWxbdGhpcy5hZGRPcmdhbml6YXRpb24ubmFtZV07XHJcblxyXG4gICAgbGV0IHNvdXJjZUl0ZW0gPSB0aGlzLlZhbHVlU291cmNlTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5LnRvTG93ZXJDYXNlKCkgPT0gYWRkTW9kZWwudmFsdWVTb3VyY2VJRF9HVUlEPy50b0xvd2VyQ2FzZSgpOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0pWzBdO1xyXG4gICAgaWYgKHNvdXJjZUl0ZW0gIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGxldCBDb25maWd1cmF0aW9uRERMU291cmNlTmFtZSA9IHNvdXJjZUl0ZW0udmFsdWU7XHJcbiAgICAgIGlmIChDb25maWd1cmF0aW9uRERMU291cmNlTmFtZSA9PSBcIkZ1bmN0aW9uXCIpIHtcclxuICAgICAgICBhZGRNb2RlbC52YWx1ZSA9IFJlc3VsdE1vZGVsLlNvdXJjZUZ1bmNWYWx1ZTtcclxuICAgICAgICBhZGRNb2RlbC5kZWZhdWx0VmFsdWUgPSBSZXN1bHRNb2RlbC5Tb3VyY2VGdW5jRGVmYXVsdFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIEFycmF5KGFkZE1vZGVsKTtcclxuICB9O1xyXG5cclxuICBnZXRBZGRDb25maWd1cmF0aW9uRnVuY3Rpb24gPSAoYWRkTW9kZWw6IENvbmZpZ3VyYXRpb25Nb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5Db25maWd1cmF0aW9uc1NlcnZpY2UuYWRkQ29uZmlndXJhdGlvbihhZGRNb2RlbCk7XHJcbiAgfTtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcblxyXG4gIC8vI3JlZ2lvbiBFZGl0IGNvbmZpZ3VyYXRpb25cclxuICBzaG93RWRpdENvbmZpZ3VyYXRpb25Nb2RhbChjb25maWd1cmF0aW9uSWQ6IHN0cmluZywgRWRpdENvbmZpZ3VyYXRpb25Nb2RhbCkge1xyXG4gICAgdGhpcy5Db25maWd1cmF0aW9uSWQgPSBjb25maWd1cmF0aW9uSWQ7XHJcbiAgICB0aGlzLnJlc2V0Q29uZmlndXJhdGlvbkZsYWdzKCk7XHJcbiAgICB0aGlzLkNvbmZpZ3VyYXRpb25zU2VydmljZS5nZXRFZGl0Q29uZmlndXJhdGlvbkRhdGEoY29uZmlndXJhdGlvbklkKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgIGxldCByZXN1bHRPYmogPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICAvL0VkaXQgbW9kZWxcclxuICAgICAgbGV0IGNvbmZpZ3VyYXRpb24gPSByZXN1bHRPYmoubW9kZWw7XHJcbiAgICAgIC8vTG9hZCBsb29rdXBzIGxpc3RcclxuICAgICAgdGhpcy5Mb29rdXBzTGlzdCA9IHJlc3VsdE9iai5sb29rdXBzO1xyXG4gICAgICAvL0xvYWQgbG9va3VwSXRlbXMgbGlzdFxyXG4gICAgICBsZXQgbG9va3VwSXRlbXMgPSByZXN1bHRPYmoubG9va3VwSXRlbXNTb3VyY2U7XHJcbiAgICAgIC8vTG9hZCBwZXJtaXNzaW9uc2V0cyBsaXN0XHJcbiAgICAgIHRoaXMuUGVybWlzc2lvbkxpc3QgPSByZXN1bHRPYmoucGVybWlzc2lvblNldExpc3Q7XHJcbiAgICAgIC8vTG9hZCB1c2VycyBsaXN0XHJcbiAgICAgIHRoaXMuVXNlcnNMaXN0ID0gcmVzdWx0T2JqLnVzZXJzO1xyXG4gICAgICAvL0xvYWQgb3JnYW5pemF0aW9uIExpc3RcclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25MaXN0ID0gcmVzdWx0T2JqLm9yZ2FuaXphdGlvbnM7XHJcblxyXG4gICAgICAvL0Zvcm0gYW5kIGNvbnRyb2xzIHJlaW5pdGlhbGl6ZVxyXG4gICAgICB0aGlzLkVkaXRDb25maWd1cmF0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgICB0aGlzLkVkaXRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0Q29uZmlndXJhdGlvbkZvcm1PcHRpb25zLmZvcm1Hcm91cCA9IHRoaXMuRWRpdENvbmZpZ3VyYXRpb25Gb3JtO1xyXG4gICAgICB0aGlzLkVkaXRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnMuZ2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdENvbmZpZ3VyYXRpb25Nb2RlbDtcclxuICAgICAgdGhpcy5FZGl0Q29uZmlndXJhdGlvbkZvcm1PcHRpb25zLnNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdENvbmZpZ3VyYXRpb25GdW5jdGlvbjtcclxuICAgICAgdGhpcy5FZGl0Q29uZmlndXJhdGlvbkZvcm1PcHRpb25zLnBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudDtcclxuICAgICAgdGhpcy5FZGl0Q29uZmlndXJhdGlvbkZvcm1PcHRpb25zLnBhZ2luZ0FjdGlvbk1vZGUgPSBQYWdpbmdBY3Rpb25Nb2RlLlVwZGF0ZTtcclxuXHJcbiAgICAgIHRoaXMuQ29uZmlndXJhdGlvblZhbHVlVHlwZUlEX0dVSUQgPSBjb25maWd1cmF0aW9uLnZhbHVlVHlwZUlEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIHRoaXMuRWRpdENvbmZpZ3VyYXRpb25TY29wZUlEX0dVSUQgPSBjb25maWd1cmF0aW9uLnNjb3BlSURfR1VJRC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICB0aGlzLkVkaXRDb25maWd1cmF0aW9uRERMU291cmNlSURfR1VJRCA9IGNvbmZpZ3VyYXRpb24udmFsdWVTb3VyY2VJRF9HVUlEPy50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjtcclxuXHJcbiAgICAgIHRoaXMuRWRpdEtleSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRLZXkubmFtZSA9IFwiS2V5XCI7XHJcbiAgICAgIHRoaXMuRWRpdEtleS5sYWJlbEtleSA9IFwiS2V5XCI7XHJcbiAgICAgIHRoaXMuRWRpdEtleS50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuRWRpdEtleS5pc1JlcXVpcmVkID0gIXRoaXMuUHJvZHVjdGlvbk1vZGU7XHJcbiAgICAgIHRoaXMuRWRpdEtleS52YWx1ZSA9IGNvbmZpZ3VyYXRpb24ua2V5O1xyXG4gICAgICB0aGlzLkVkaXRLZXkubWF4TGVuZ3RoID0gMjU2O1xyXG4gICAgICB0aGlzLkVkaXRLZXkuaXNEaXNhYmxlZCA9IHRoaXMuUHJvZHVjdGlvbk1vZGU7XHJcblxyXG4gICAgICB0aGlzLmVkaXRPcmdhbml6YXRpb24ubmFtZSA9IFwiT3JnYW5pemF0aW9uSURfR1VJRFwiO1xyXG4gICAgICB0aGlzLmVkaXRPcmdhbml6YXRpb24ubGFiZWxLZXkgPSBcIk9yZ2FuaXphdGlvblwiO1xyXG4gICAgICB0aGlzLmVkaXRPcmdhbml6YXRpb24uc2VsZWN0ZWRJdGVtcyA9IGNvbmZpZ3VyYXRpb24ub3JnYW5pemF0aW9uSURfR1VJRD8udG9Mb3dlckNhc2UoKTtcclxuICAgICAgdGhpcy5lZGl0T3JnYW5pemF0aW9uLmRhdGFTb3VyY2UgPSB0aGlzLm9yZ2FuaXphdGlvbkxpc3Q7XHJcbiAgICAgIHRoaXMuZWRpdE9yZ2FuaXphdGlvbi5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRPcmdhbml6YXRpb24uYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRPcmdhbml6YXRpb24uaXNSZXF1aXJlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgdGhpcy5lZGl0TG9hZEpzb25Ub2dnbGUgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdExvYWRKc29uVG9nZ2xlLm5hbWUgPSBcIklzTG9hZEluSnNvblwiO1xyXG4gICAgICB0aGlzLmVkaXRMb2FkSnNvblRvZ2dsZS5sYWJlbEtleSA9IFwiTG9hZEpzb25Ub2dnbGVcIjtcclxuICAgICAgdGhpcy5lZGl0TG9hZEpzb25Ub2dnbGUudmFsdWUgPSBjb25maWd1cmF0aW9uLmlzTG9hZEluSnNvbjtcclxuICAgICAgdGhpcy5lZGl0TG9hZEpzb25Ub2dnbGUudmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcblxyXG4gICAgICBzd2l0Y2ggKHRoaXMuQ29uZmlndXJhdGlvblZhbHVlVHlwZUlEX0dVSUQpIHtcclxuICAgICAgICBjYXNlIENvbmZpZ3VyYXRpb25WYWx1ZVR5cGVzLlRleHQ6XHJcbiAgICAgICAgICB0aGlzLlNob3dWYWx1ZUFuZERlZmF1bHRWYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRUZXh0VmFsdWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuRWRpdFRleHRWYWx1ZS5uYW1lID0gXCJFZGl0VGV4dFZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXRUZXh0VmFsdWUubGFiZWxLZXkgPSBcIlZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXRUZXh0VmFsdWUudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgICAgdGhpcy5FZGl0VGV4dFZhbHVlLnZhbHVlID0gY29uZmlndXJhdGlvbi50ZXh0VmFsdWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRUZXh0VmFsdWUuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRUZXh0VmFsdWUubWF4TGVuZ3RoID0gNTAwMDtcclxuXHJcblxyXG4gICAgICAgICAgdGhpcy5FZGl0VGV4dERlZmF1bHRWYWx1ZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VGV4dERlZmF1bHRWYWx1ZS5uYW1lID0gXCJFZGl0VGV4dERlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VGV4dERlZmF1bHRWYWx1ZS5sYWJlbEtleSA9IFwiRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXRUZXh0RGVmYXVsdFZhbHVlLnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICAgIHRoaXMuRWRpdFRleHREZWZhdWx0VmFsdWUudmFsdWUgPSBjb25maWd1cmF0aW9uLmRlZmF1bHRUZXh0VmFsdWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRUZXh0RGVmYXVsdFZhbHVlLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VGV4dERlZmF1bHRWYWx1ZS5tYXhMZW5ndGggPSA1MDAwO1xyXG5cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uZmlndXJhdGlvblZhbHVlVHlwZXMuVG9nZ2xlOlxyXG4gICAgICAgICAgdGhpcy5TaG93VmFsdWVUb2dnbGVBbmREZWZhdWx0VmFsdWUgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VmFsdWVUb2dnZWxlID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VmFsdWVUb2dnZWxlLm5hbWUgPSBcIkVkaXRWYWx1ZVRvZ2dlbGVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFZhbHVlVG9nZ2VsZS5sYWJlbEtleSA9IFwiVmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFZhbHVlVG9nZ2VsZS52YWx1ZSA9IGNvbmZpZ3VyYXRpb24uYm9vbFZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VmFsdWVUb2dnZWxlLnZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG5cclxuICAgICAgICAgIHRoaXMuRWRpdERlZmF1bHRWYWx1ZVRvZ2dlbGUgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLkVkaXREZWZhdWx0VmFsdWVUb2dnZWxlLm5hbWUgPSBcIkVkaXREZWZhdWx0VmFsdWVUb2dnZWxlXCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXREZWZhdWx0VmFsdWVUb2dnZWxlLmxhYmVsS2V5ID0gXCJEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdERlZmF1bHRWYWx1ZVRvZ2dlbGUudmFsdWUgPSBjb25maWd1cmF0aW9uLmRlZmF1bHRCb29sVmFsdWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXREZWZhdWx0VmFsdWVUb2dnZWxlLnZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25maWd1cmF0aW9uVmFsdWVUeXBlcy5Ecm9wZG93bkxpc3Q6XHJcbiAgICAgICAgICBzd2l0Y2ggKHRoaXMuRWRpdENvbmZpZ3VyYXRpb25ERExTb3VyY2VJRF9HVUlEKSB7XHJcbiAgICAgICAgICAgIGNhc2UgQ29uZmlndXJhdGlvbkRETFNvdXJjZS5Mb29rdXA6XHJcbiAgICAgICAgICAgICAgdGhpcy5TaG93TG9va3VwTGlzdCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5TaG93TG9va3VwSXRlbXNMaXN0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXAgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwLm5hbWUgPSBcIkVkaXRMb29rdXBcIjtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXAubGFiZWxLZXkgPSBcIkxvb2t1cFwiO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cC5zZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXAuZGF0YVNvdXJjZSA9IHRoaXMuTG9va3Vwc0xpc3Q7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXAuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwLnNlbGVjdGVkSXRlbXMgPSBjb25maWd1cmF0aW9uLnNlbGVjdGVkTG9va3VwSURfR1VJRD8udG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUubmFtZSA9IFwiRWRpdExvb2t1cFZhbHVlXCI7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUubGFiZWxLZXkgPSBcIlZhbHVlXCI7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUuZGF0YVNvdXJjZSA9IGxvb2t1cEl0ZW1zO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLnNlbGVjdGVkSXRlbXMgPSBjb25maWd1cmF0aW9uLnZhbHVlPy50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLm5hbWUgPSBcIkVkaXRMb29rdXBEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUubGFiZWxLZXkgPSBcIkRlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5kYXRhU291cmNlID0gbG9va3VwSXRlbXM7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLnNlbGVjdGVkSXRlbXMgPSBjb25maWd1cmF0aW9uLmRlZmF1bHRWYWx1ZT8udG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBDb25maWd1cmF0aW9uRERMU291cmNlLkZ1bmN0aW9uOlxyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdEZ1bmN0aW9uU291cmNlUGF0aCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdEZ1bmN0aW9uU291cmNlUGF0aC5uYW1lID0gXCJFZGl0RnVuY3Rpb25Tb3VyY2VQYXRoXCI7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0RnVuY3Rpb25Tb3VyY2VQYXRoLmxhYmVsS2V5ID0gXCJTb3VyY2VQYXRoXCI7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0RnVuY3Rpb25Tb3VyY2VQYXRoLnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRGdW5jdGlvblNvdXJjZVBhdGgudmFsdWUgPSBjb25maWd1cmF0aW9uLnNvdXJjZUZ1bmN0aW9uTmFtZTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRGdW5jdGlvblNvdXJjZVBhdGguaXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG5cclxuICAgICAgICAgICAgICB0aGlzLkNvbmZpZ3VyYXRpb25zU2VydmljZS5sb2FkU291cmNlRnVuY3Rpb25Ecm9wRG93bkl0ZW1zKGNvbmZpZ3VyYXRpb24uc291cmNlRnVuY3Rpb25OYW1lKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRTb3VyY2VGdW5jVmFsdWUgPSByZXN1bHQuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmtleSA9PSBjb25maWd1cmF0aW9uLnZhbHVlOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZS5uYW1lID0gXCJFZGl0U291cmNlRnVuY1ZhbHVlXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jVmFsdWUubGFiZWxLZXkgPSBcIlZhbHVlXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jVmFsdWUuZGF0YVNvdXJjZSA9IHJlc3VsdDtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZS5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZS5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZS5zZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRTb3VyY2VGdW5jVmFsdWU7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkU291cmNlRnVuY0RlZmF1bHRWYWx1ZSA9IHJlc3VsdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5ID09IGNvbmZpZ3VyYXRpb24uZGVmYXVsdFZhbHVlOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlLm5hbWUgPSBcIkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlLmxhYmVsS2V5ID0gXCJEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuZGF0YVNvdXJjZSA9IHJlc3VsdDtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZS5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuc2VsZWN0ZWRJdGVtcyA9IHNlbGVjdGVkU291cmNlRnVuY0RlZmF1bHRWYWx1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuU2hvd1NvdXJjZUZ1bmN0aW9uUGF0aCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlNob3dTb3VyY2VGdW5jdGlvbkRhdGEgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgLy9yZXNldCBzY29wZVxyXG4gICAgICB0aGlzLlNob3dQZXJtaXNzaW9uTGlzdCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLlNob3dVc2Vyc0xpc3QgPSBmYWxzZTtcclxuICAgICAgLy9jb25zb2xlLmxvZyhzY29wSXRlbSk7XHJcbiAgICAgIHN3aXRjaCAodGhpcy5FZGl0Q29uZmlndXJhdGlvblNjb3BlSURfR1VJRCkge1xyXG4gICAgICAgIGNhc2UgU2NvcGUuUGVybWlzc2lvbnNldDpcclxuICAgICAgICAgIHRoaXMuU2hvd1Blcm1pc3Npb25MaXN0ID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXQgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLkVkaXRQZXJtaXNzaW9uU2V0Lm5hbWUgPSBcIkVkaXRQZXJtaXNzaW9uU2V0XCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXRQZXJtaXNzaW9uU2V0LmxhYmVsS2V5ID0gXCJQZXJtaXNzaW9uU2V0XCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXRQZXJtaXNzaW9uU2V0LnNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5FZGl0UGVybWlzc2lvblNldC5kYXRhU291cmNlID0gdGhpcy5QZXJtaXNzaW9uTGlzdDtcclxuICAgICAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXQuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXQuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0UGVybWlzc2lvblNldC5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXQuc2VsZWN0ZWRJdGVtcyA9IGNvbmZpZ3VyYXRpb24ucGVybWlzc2lvblNldElEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFNjb3BlLlVzZXI6XHJcbiAgICAgICAgICB0aGlzLlNob3dVc2Vyc0xpc3QgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VXNlciA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuRWRpdFVzZXIubmFtZSA9IFwiRWRpdFVzZXJcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFVzZXIubGFiZWxLZXkgPSBcIlVzZXJcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFVzZXIuc2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLkVkaXRVc2VyLmRhdGFTb3VyY2UgPSB0aGlzLlVzZXJzTGlzdDtcclxuICAgICAgICAgIHRoaXMuRWRpdFVzZXIuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFVzZXIuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VXNlci5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFVzZXIuc2VsZWN0ZWRJdGVtcyA9IGNvbmZpZ3VyYXRpb24udXNlcklEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihFZGl0Q29uZmlndXJhdGlvbk1vZGFsKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdENvbmZpZ3VyYXRpb25Nb2RlbCA9ICgpOiBDb25maWd1cmF0aW9uTW9kZWxbXSA9PiB7XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLkVkaXRDb25maWd1cmF0aW9uRm9ybS52YWx1ZSBhcyBhbnk7XHJcbiAgICBsZXQgZWRpdE1vZGVsOiBDb25maWd1cmF0aW9uTW9kZWwgPSBuZXcgQ29uZmlndXJhdGlvbk1vZGVsKCk7XHJcbiAgICBlZGl0TW9kZWwuaURfR1VJRCA9IHRoaXMuQ29uZmlndXJhdGlvbklkO1xyXG4gICAgZWRpdE1vZGVsLnZhbHVlVHlwZUlEX0dVSUQgPSB0aGlzLkNvbmZpZ3VyYXRpb25WYWx1ZVR5cGVJRF9HVUlEO1xyXG4gICAgZWRpdE1vZGVsLnNjb3BlSURfR1VJRCA9IHRoaXMuRWRpdENvbmZpZ3VyYXRpb25TY29wZUlEX0dVSUQ7XHJcbiAgICBlZGl0TW9kZWwua2V5ID0gdGhpcy5Qcm9kdWN0aW9uTW9kZSA/IHRoaXMuY29uZmlndXJhdGlvbi5rZXkgOiBSZXN1bHRNb2RlbC5LZXk7XHJcbiAgICBlZGl0TW9kZWwudmFsdWVTb3VyY2VJRF9HVUlEID0gdGhpcy5FZGl0Q29uZmlndXJhdGlvbkRETFNvdXJjZUlEX0dVSUQ7XHJcbiAgICBlZGl0TW9kZWwuaXNMb2FkSW5Kc29uID0gUmVzdWx0TW9kZWwuSXNMb2FkSW5Kc29uO1xyXG4gICAgZWRpdE1vZGVsLm9yZ2FuaXphdGlvbklEX0dVSUQgPSBSZXN1bHRNb2RlbFt0aGlzLmVkaXRPcmdhbml6YXRpb24ubmFtZV07XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLkNvbmZpZ3VyYXRpb25WYWx1ZVR5cGVJRF9HVUlEKSB7XHJcbiAgICAgIGNhc2UgQ29uZmlndXJhdGlvblZhbHVlVHlwZXMuVGV4dDpcclxuICAgICAgICBlZGl0TW9kZWwudGV4dFZhbHVlID0gUmVzdWx0TW9kZWwuRWRpdFRleHRWYWx1ZTtcclxuICAgICAgICBlZGl0TW9kZWwuZGVmYXVsdFRleHRWYWx1ZSA9IFJlc3VsdE1vZGVsLkVkaXRUZXh0RGVmYXVsdFZhbHVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbmZpZ3VyYXRpb25WYWx1ZVR5cGVzLlRvZ2dsZTpcclxuICAgICAgICBlZGl0TW9kZWwuYm9vbFZhbHVlID0gUmVzdWx0TW9kZWwuRWRpdFZhbHVlVG9nZ2VsZTtcclxuICAgICAgICBlZGl0TW9kZWwuZGVmYXVsdEJvb2xWYWx1ZSA9IFJlc3VsdE1vZGVsLkVkaXREZWZhdWx0VmFsdWVUb2dnZWxlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbmZpZ3VyYXRpb25WYWx1ZVR5cGVzLkRyb3Bkb3duTGlzdDpcclxuICAgICAgICBpZiAodGhpcy5FZGl0Q29uZmlndXJhdGlvbkRETFNvdXJjZUlEX0dVSUQgPT0gQ29uZmlndXJhdGlvbkRETFNvdXJjZS5Mb29rdXApIHtcclxuICAgICAgICAgIGVkaXRNb2RlbC5zZWxlY3RlZExvb2t1cElEX0dVSUQgPSBSZXN1bHRNb2RlbC5FZGl0TG9va3VwO1xyXG4gICAgICAgICAgZWRpdE1vZGVsLnZhbHVlID0gUmVzdWx0TW9kZWwuRWRpdExvb2t1cFZhbHVlIGFzIHN0cmluZztcclxuICAgICAgICAgIGVkaXRNb2RlbC5kZWZhdWx0VmFsdWUgPSBSZXN1bHRNb2RlbC5FZGl0TG9va3VwRGVmYXVsdFZhbHVlIGFzIHN0cmluZztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5FZGl0Q29uZmlndXJhdGlvbkRETFNvdXJjZUlEX0dVSUQgPT0gQ29uZmlndXJhdGlvbkRETFNvdXJjZS5GdW5jdGlvbikge1xyXG4gICAgICAgICAgZWRpdE1vZGVsLnNvdXJjZUZ1bmN0aW9uTmFtZSA9IFJlc3VsdE1vZGVsLkVkaXRGdW5jdGlvblNvdXJjZVBhdGg7XHJcbiAgICAgICAgICBlZGl0TW9kZWwudmFsdWUgPSBSZXN1bHRNb2RlbC5FZGl0U291cmNlRnVuY1ZhbHVlO1xyXG4gICAgICAgICAgZWRpdE1vZGVsLmRlZmF1bHRWYWx1ZSA9IFJlc3VsdE1vZGVsLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMuRWRpdENvbmZpZ3VyYXRpb25TY29wZUlEX0dVSUQpIHtcclxuICAgICAgY2FzZSBTY29wZS5Vc2VyOlxyXG4gICAgICAgIGVkaXRNb2RlbC51c2VySURfR1VJRCA9IFJlc3VsdE1vZGVsLkVkaXRVc2VyO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFNjb3BlLlBlcm1pc3Npb25zZXQ6XHJcbiAgICAgICAgZWRpdE1vZGVsLnBlcm1pc3Npb25TZXRJRF9HVUlEID0gUmVzdWx0TW9kZWwuRWRpdFBlcm1pc3Npb25TZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIEFycmF5KGVkaXRNb2RlbCk7XHJcbiAgfTtcclxuXHJcbiAgZ2V0RWRpdENvbmZpZ3VyYXRpb25GdW5jdGlvbiA9IChFZGl0TW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuQ29uZmlndXJhdGlvbnNTZXJ2aWNlLmVkaXRDb25maWd1cmF0aW9uKEVkaXRNb2RlbCk7XHJcbiAgfTtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIGFkZC9lZGl0IHJlcXVpcmVkIGZ1bmN0aW9uXHJcbiAgQ2hhbmdlU2NvcGVWYWx1ZShrZXkpIHtcclxuICAgIGtleSA9IGtleS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgc3dpdGNoIChrZXkpIHtcclxuICAgICAgY2FzZSBTY29wZS5BcHA6XHJcbiAgICAgICAgdGhpcy5TaG93UGVybWlzc2lvbkxpc3QgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLlNob3dVc2Vyc0xpc3QgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJVc2VyXCIpO1xyXG4gICAgICAgIHRoaXMuYWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIlBlcm1pc3Npb25TZXRcIik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgU2NvcGUuUGVybWlzc2lvbnNldDpcclxuICAgICAgICB0aGlzLlNob3dQZXJtaXNzaW9uTGlzdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5TaG93VXNlcnNMaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5hZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiVXNlclwiKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTY29wZS5Vc2VyOlxyXG4gICAgICAgIHRoaXMuU2hvd1Blcm1pc3Npb25MaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5TaG93VXNlcnNMaXN0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJQZXJtaXNzaW9uU2V0XCIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXNldENvbmZpZ3VyYXRpb25GbGFncygpIHtcclxuICAgIHRoaXMuU2hvd0xvb2t1cExpc3QgPSBmYWxzZTtcclxuICAgIHRoaXMuU2hvd1ZhbHVlQW5kRGVmYXVsdFZhbHVlID0gZmFsc2U7XHJcbiAgICB0aGlzLlNob3dWYWx1ZVRvZ2dsZUFuZERlZmF1bHRWYWx1ZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5TaG93U291cmNlRnVuY3Rpb25QYXRoID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dGdW5jdGlvbk5vdEZvdW5kRXJyb3IgPSBmYWxzZTtcclxuICAgIHRoaXMuU2hvd0Ryb3BEb3duU291cmNlID0gZmFsc2U7XHJcbiAgICB0aGlzLlNob3dMb29rdXBJdGVtc0xpc3QgPSBmYWxzZTtcclxuICAgIHRoaXMuU2hvd1NvdXJjZUZ1bmN0aW9uRGF0YSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zb3VyY2VGdW5jdGlvbkRhdGFOb3RMb2FkZWQgPSBmYWxzZTtcclxuICB9XHJcbiAgU2VhcmNoRm9yRnVuY3Rpb24oaXNBZGQ6IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICBsZXQgUmVzdWx0TW9kZWw6IGFueSA9IGlzQWRkID8gdGhpcy5hZGRDb25maWd1cmF0aW9uRm9ybS52YWx1ZSA6IHRoaXMuRWRpdENvbmZpZ3VyYXRpb25Gb3JtLnZhbHVlO1xyXG4gICAgbGV0IGZ1bmN0aW9uTmFtZSA9IGlzQWRkID8gUmVzdWx0TW9kZWwuRnVuY3Rpb25Tb3VyY2VQYXRoIDogUmVzdWx0TW9kZWwuRWRpdEZ1bmN0aW9uU291cmNlUGF0aDtcclxuICAgIHRoaXMuQ29uZmlndXJhdGlvbnNTZXJ2aWNlLmxvYWRTb3VyY2VGdW5jdGlvbkRyb3BEb3duSXRlbXMoZnVuY3Rpb25OYW1lKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc2hvd0Z1bmN0aW9uTm90Rm91bmRFcnJvciA9IGZhbHNlO1xyXG4gICAgICBpZiAodGhpcy5TaG93U291cmNlRnVuY3Rpb25EYXRhKSB7XHJcbiAgICAgICAgaWYgKGlzQWRkKSB7XHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNWYWx1ZS5zZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY0RlZmF1bHRWYWx1ZS5zZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuXHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNWYWx1ZS5kYXRhU291cmNlID0gcmVzdWx0O1xyXG4gICAgICAgICAgdGhpcy5Tb3VyY2VGdW5jRGVmYXVsdFZhbHVlLmRhdGFTb3VyY2UgPSByZXN1bHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLnNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZS5zZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuXHJcbiAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jVmFsdWUuZGF0YVNvdXJjZSA9IHJlc3VsdDtcclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuZGF0YVNvdXJjZSA9IHJlc3VsdDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChpc0FkZCkge1xyXG4gICAgICAgICAgdGhpcy5Tb3VyY2VGdW5jVmFsdWUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNWYWx1ZS5uYW1lID0gXCJTb3VyY2VGdW5jVmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY1ZhbHVlLmxhYmVsS2V5ID0gXCJWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5Tb3VyY2VGdW5jVmFsdWUuZGF0YVNvdXJjZSA9IHJlc3VsdDtcclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY1ZhbHVlLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNWYWx1ZS5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNWYWx1ZS5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUubmFtZSA9IFwiU291cmNlRnVuY0RlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5Tb3VyY2VGdW5jRGVmYXVsdFZhbHVlLmxhYmVsS2V5ID0gXCJEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY0RlZmF1bHRWYWx1ZS5kYXRhU291cmNlID0gcmVzdWx0O1xyXG4gICAgICAgICAgdGhpcy5Tb3VyY2VGdW5jRGVmYXVsdFZhbHVlLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5Tb3VyY2VGdW5jRGVmYXVsdFZhbHVlLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZS5uYW1lID0gXCJFZGl0U291cmNlRnVuY1ZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jVmFsdWUubGFiZWxLZXkgPSBcIlZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jVmFsdWUuZGF0YVNvdXJjZSA9IHJlc3VsdDtcclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZS5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZS5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZS5uYW1lID0gXCJFZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZS5sYWJlbEtleSA9IFwiRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlLmRhdGFTb3VyY2UgPSByZXN1bHQ7XHJcbiAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuU2hvd1NvdXJjZUZ1bmN0aW9uRGF0YSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zb3VyY2VGdW5jdGlvbkRhdGFOb3RMb2FkZWQgPSBmYWxzZTtcclxuICAgIH0sIChlcnJvcikgPT4ge1xyXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDUwMCkge1xyXG4gICAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeUVycm9yTWVzc2FnZShlcnJvcik7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7IC8vNDA0XHJcbiAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgICAgIHRoaXMuc2hvd0Z1bmN0aW9uTm90Rm91bmRFcnJvciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5TaG93U291cmNlRnVuY3Rpb25EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zb3VyY2VGdW5jdGlvbkRhdGFOb3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGNoYW5nZVNvdXJjZUZ1bmN0aW9uKCkge1xyXG4gICAgdGhpcy5TaG93U291cmNlRnVuY3Rpb25EYXRhID0gZmFsc2U7XHJcbiAgICB0aGlzLnNvdXJjZUZ1bmN0aW9uRGF0YU5vdExvYWRlZCA9IHRydWU7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gZGVsZXRlIGNvbmZpZ3VyYXRpb25cclxuICBzaG93RGVsZXRlQ29uZmlndXJhdGlvbk1vZGFsKGNvbmZpZ3VyYXRpb25JRDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRlbGV0ZUNvbmZpZ3VyYXRpb25JZCA9IGNvbmZpZ3VyYXRpb25JRDtcclxuXHJcbiAgICAvL2FycmF5IHNlbnQgdG8gc2VydmljZSBmdW5jdGlvblxyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBwYXJhbUFycmF5LnB1c2godGhpcy5kZWxldGVDb25maWd1cmF0aW9uSWQpO1xyXG5cclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucyA9IG5ldyBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnMoKTtcclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5zZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmRlbGV0ZUNvbmZpZ3VyYXRpb247XHJcbiAgICB0aGlzLkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMuc2VydmljZVN1Ym1pdE1vZGVsID0gcGFyYW1BcnJheTtcclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5wYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnQ7XHJcbiAgICB0aGlzLmRlbGV0ZUNvbnRyb2xMb2FkZWQgPSB0cnVlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuQ29uZmlybWF0aW9uTW9kYWxDb250cm9sLnNob3dNb2RhbCgpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcbiAgZGVsZXRlQ29uZmlndXJhdGlvbiA9IChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLkNvbmZpZ3VyYXRpb25zU2VydmljZS5kZWxldGVDb25maWd1cmF0aW9uKGlkKTtcclxuICB9O1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuXHJcbiAgLy8vLy8vLy8vLy9TdGFydCBvZiAgUmVsb2FkIFJlc291cmNlIHBhcnQvLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgc2hvd1JlbG9hZFJlc291cmNlTW9kYWwoKSB7XHJcblxyXG4gICAgdGhpcy5yZWxvYWRDb250cm9sTG9hZGVkID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5yZWxvYWRDb25maXJtYXRpb25PcHRpb25zID0gbmV3IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucygpO1xyXG4gICAgdGhpcy5yZWxvYWRDb25maXJtYXRpb25PcHRpb25zLnNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMucmVsb2FkSnNvbkZ1bmN0aW9uO1xyXG4gICAgdGhpcy5yZWxvYWRDb25maXJtYXRpb25PcHRpb25zLnBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudDtcclxuICAgIHRoaXMucmVsb2FkQ29uZmlybWF0aW9uT3B0aW9ucy5jb25maXJtYXRpb25Cb2R5ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUmVsb2FkQ29uZmlndXJhdGlvbnNDb25maXJtYXRpb25cIik7XHJcbiAgICB0aGlzLnJlbG9hZENvbmZpcm1hdGlvbk9wdGlvbnMuY29uZmlybWF0aW9uSGVhZGVyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUmVsb2FkQ29uZmlndXJhdGlvbnNcIik7XHJcbiAgICB0aGlzLnJlbG9hZENvbmZpcm1hdGlvbk9wdGlvbnMuc3VibWl0QnV0dG9uVGV4dCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlJlbG9hZFwiKTtcclxuICAgIHRoaXMucmVsb2FkQ29uZmlybWF0aW9uT3B0aW9ucy5zdHlsZUNvbmZpcm1hdGlvbk1vZGUgPSBTdHlsZUNvbmZpcm1hdGlvbk1vZGUuRGFuZ2VyO1xyXG4gICAgdGhpcy5yZWxvYWRDb25maXJtYXRpb25PcHRpb25zLnN1Y2Nlc3NOb3RpZmljYXRpb25NZXNzYWdlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU3VjY2Vzc01lc3NhZ2VcIik7XHJcblxyXG5cclxuICAgIHRoaXMucmVsb2FkQ29udHJvbExvYWRlZCA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5yZWxvYWRDb25maXJtYXRpb25Nb2RhbENvbnRyb2wuc2hvd01vZGFsKCk7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuXHJcbiAgcmVsb2FkSnNvbkZ1bmN0aW9uID0gKCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5Db25maWd1cmF0aW9uc1NlcnZpY2UucmVsb2FkSnNvbkZpbGUoKTtcclxuICB9O1xyXG5cclxuICAvL09uIGRlc3Ryb3lcclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVxdWVzdEhhbmRsZXJTZXJ2aWNlLmRlc3Ryb3lIYW5kbGVyKCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8YmxvY2stdWk+PC9ibG9jay11aT5cclxuPCEtLSBQYWdlIENvbnRlbnQgLS0+XHJcbjxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICA8ZGl2ICpuZ0lmPVwic2hvd1BhZ2VDb250ZW50XCI+XHJcbiAgICA8IS0tIGJlZ2luOjpIZWFkZXIgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWN1c3RvbS1oXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC01XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIiAqbmdJZj1cImlzRmlsdGVyTG9hZGVkXCI+XHJcbiAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIkNvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwic2VhcmNoVGV4dEJveFwiIFtncm91cF09XCJDb25maWd1cmF0aW9uRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc011bHRpVGVuYW5jeUFsbG93ZWQgJiYgaXNTdXBlckFkbWluXCIgbmdiRHJvcGRvd24gY2xhc3M9XCJkLWlubGluZS1ibG9ja1wiXHJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgZGlzcGxheTogc2hvd1BhZ2VDb250ZW50ID09IHRydWUgPyAnYmxvY2snIDogJ25vbmUnIH1cIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwibG9hZExpc3RzKClcIiBuZ2JEcm9wZG93blRvZ2dsZSBocmVmPVwiamF2YXNjcmlwdDo7XCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodC1wcmltYXJ5IG1lLTNcIiBpZD1cIkZpbHRlcnNEcm9wZG93blwiIHRpdGxlPVwiRmlsdGVyXCI+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZmlsdGVyIG1lLTFcIj48L2k+XHJcbiAgICAgICAgICAgICAge3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnRmlsdGVyJykgfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0ZpbHRlckxvYWRlZFwiIG5nYkRyb3Bkb3duTWVudSBhcmlhLWxhYmVsbGVkYnk9XCJGaWx0ZXJzRHJvcGRvd25cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLWNvbnRhaW5lciBtZW51IG1lbnUtc3ViIG1lbnUtc3ViLWRyb3Bkb3duIG1lbnUtY29sdW1uIG1lbnUtcm91bmRlZCBtZW51LWdyYXktODAwIG1lbnUtc3RhdGUtYmctbGlnaHQtcHJpbWFyeSB3LTI1MHB4IHctbWQtNTAwcHggZnctYm9sZCBweS0zIGRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS1yaWdodFwiPlxyXG4gICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC03IHB5LTVcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiaXNNdWx0aVRlbmFuY3lBbGxvd2VkICYmIGlzU3VwZXJBZG1pblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgI29yZ2FuaXphdGlvbkRETCBbb3B0aW9uc109XCJvcmdhbml6YXRpb25PcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwXT1cIkNvbmZpZ3VyYXRpb25Gb3JtXCI+PC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1hY3RpdmUtbGlnaHQtcHJpbWFyeSBwdi1yZXNldCBidG4tc21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImNvbmZpZ3VyYXRpb25SZXNldEJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnUmVzZXQnKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIGJlZ2luOjpNZW51IC0tPlxyXG4gICAgICAgICAgPGJ1dHRvbiBpZD1cImJ0bkFjdGl2YXRlXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQtcHJpbWFyeSBtZS0zXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInNob3dSZWxvYWRSZXNvdXJjZU1vZGFsKClcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtc3luYy1hbHQgbWUtMVwiPjwvaT5cclxuICAgICAgICAgICAge3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnUmVsb2FkJykgfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeVwiIHRpdGxlPVwiQWRkXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInNob3dBZGRDb25maWd1cmF0aW9uTW9kYWwoQWRkQ29uZmlndXJhdGlvbk1vZGFsKVwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1wbHVzIG1lLTFcIj48L2k+XHJcbiAgICAgICAgICAgIHt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0FkZCcpIH19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwhLS0gZW5kOjpNZW51IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSBlbmQ6OkhlYWRlciAtLT5cclxuICAgICAgPCEtLSBiZWdpbjo6Qm9keSAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zXCI+XHJcbiAgICAgICAgPCEtLSBiZWdpbjo6VGFibGUgY29udGFpbmVyIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyXCI+XHJcbiAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdLZXknKSB9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ1ZhbHVlJykgfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdUeXBlJykgfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdTY29wZScpIH19PC90aD5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnVXNlclBlcm1pc3Npb25TZXQnKSB9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBcIiAqbmdJZj1cImlzTXVsdGlUZW5hbmN5QWxsb3dlZCAmJiBpc1N1cGVyQWRtaW5cIj5cclxuICAgICAgICAgICAgICAgICAge3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnT3JnYW5pemF0aW9uJykgfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctNTBweFwiPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0FjdGlvbicpIH19PC90aD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICA8dGJvZHkgaWQ9XCJsaXN0aW5nQ29udGFpbmVyXCIgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IENvbmZpZ3VyYXRpb24gb2YgY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdFwiPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1kYXJrXCI+e3sgQ29uZmlndXJhdGlvbi5rZXkgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPnt7IENvbmZpZ3VyYXRpb24udmFsdWUgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPnt7IENvbmZpZ3VyYXRpb24udmFsdWVUeXBlTmFtZVN0ciB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQ+e3sgQ29uZmlndXJhdGlvbi5zY29wZU5hbWUgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPnt7IENvbmZpZ3VyYXRpb24ucGVybWlzc2lvblNldE5hbWUgfX17eyBDb25maWd1cmF0aW9uLnVzZXJOYW1lIH19PC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImlzTXVsdGlUZW5hbmN5QWxsb3dlZCAmJiBpc1N1cGVyQWRtaW5cIj57eyBDb25maWd1cmF0aW9uLm9yZ2FuaXphdGlvbk5hbWUgPz8gJy0nIH19PC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cImNvbmZpZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWxpZ2h0IGJ0bi1hY3RpdmUtbGlnaHQtcHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lbGxpcHNpcy1oXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtbWVudSBjbGFzcz1cIm1hdC1tZW51LWNvbnRlbnRcIiAjY29uZmlnPVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3AtaXRlbSBweC0zXCIgbmdiRHJvcGRvd25JdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RWRpdENvbmZpZ3VyYXRpb25Nb2RhbChDb25maWd1cmF0aW9uLmlEX0dVSUQsIEVkaXRDb25maWd1cmF0aW9uTW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdFZGl0JykgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIGNsYXNzPVwiZHJvcC1pdGVtIHB4LTNcIiBpZD1cImJ0blJlc2V0UGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RGVsZXRlQ29uZmlndXJhdGlvbk1vZGFsKENvbmZpZ3VyYXRpb24uaURfR1VJRClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wLWxpbmsgcHgtM1wiPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0RlbGV0ZScpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPHRyICpuZ0lmPVwiY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdC5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI2XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgIDwhLS0gZW5kOjpUYWJsZSAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIGVuZDo6VGFibGUgY29udGFpbmVyIC0tPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSBiZWdpbiBwYWdpbmctLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJvcmRlci0wXCI+XHJcbiAgICAgICAgPEJCU0YtUGFnaW5nIChJdGVtcyk9XCJzZXRDb25maWd1cmF0aW9uTGlzdFJlc3VsdCgkZXZlbnQpXCIgKm5nSWY9XCJpc0ZpbHRlckxvYWRlZFwiIFtvcHRpb25zXT1cIkNvbmZpZ3VyYXRpb25QYWdpbmdcIlxyXG4gICAgICAgICAgW2dyb3VwXT1cIkNvbmZpZ3VyYXRpb25Gb3JtXCIgI0NvbmZpZ3VyYXRpb25QYWdpbmdWaWV3RWxlbWVudD5cclxuICAgICAgICA8L0JCU0YtUGFnaW5nPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSBFbmQgcGFnaW5nLS0+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48IS0tICNyZWdpb24gQWRkIG1vZGFsIC0tPlxyXG48bmctdGVtcGxhdGUgI0FkZENvbmZpZ3VyYXRpb25Nb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIlxyXG4gICAgICAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnQWRkQ29uZmlndXJhdGlvbicpIH19PC9oMT5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiYWRkQ29uZmlndXJhdGlvbkZvcm1PcHRpb25zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiS2V5XCIgW2dyb3VwXT1cImFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+IDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwibG9hZEpzb25Ub2dnbGVcIiBbZ3JvdXBdPVwiYWRkQ29uZmlndXJhdGlvbkZvcm1cIj4gPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJDYXRlZ29yeVwiIFtncm91cF09XCJhZGRDb25maWd1cmF0aW9uRm9ybVwiPiA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJTY29wZVwiIChvbkNoYW5nZSk9XCJDaGFuZ2VTY29wZVZhbHVlKCRldmVudClcIiBbZ3JvdXBdPVwiYWRkQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgKm5nSWY9XCJpc011bHRpVGVuYW5jeUFsbG93ZWQgJiYgaXNTdXBlckFkbWluXCIgW29wdGlvbnNdPVwiYWRkT3JnYW5pemF0aW9uXCJcclxuICAgICAgICAgICAgW2dyb3VwXT1cImFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJQZXJtaXNzaW9uU2V0XCIgKm5nSWY9XCJTaG93UGVybWlzc2lvbkxpc3RcIiBbZ3JvdXBdPVwiYWRkQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIlVzZXJcIiAqbmdJZj1cIlNob3dVc2Vyc0xpc3RcIiBbZ3JvdXBdPVwiYWRkQ29uZmlndXJhdGlvbkZvcm1cIj4gPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiVHlwZVwiIChvbkNoYW5nZSk9XCJDaGFuZ2VUeXBlVmFsdWUoJGV2ZW50KVwiIFtncm91cF09XCJhZGRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJWYWx1ZVwiICpuZ0lmPVwiU2hvd1ZhbHVlQW5kRGVmYXVsdFZhbHVlXCIgW2dyb3VwXT1cImFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJEZWZhdWx0VmFsdWVcIiAqbmdJZj1cIlNob3dWYWx1ZUFuZERlZmF1bHRWYWx1ZVwiIFtncm91cF09XCJhZGRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cIlZhbHVlVG9nZ2VsXCIgKm5nSWY9XCJTaG93VmFsdWVUb2dnbGVBbmREZWZhdWx0VmFsdWVcIlxyXG4gICAgICAgICAgICBbZ3JvdXBdPVwiYWRkQ29uZmlndXJhdGlvbkZvcm1cIj4gPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJEZWZhdWx0VmFsdWVUb2dnZWxcIiAqbmdJZj1cIlNob3dWYWx1ZVRvZ2dsZUFuZERlZmF1bHRWYWx1ZVwiXHJcbiAgICAgICAgICAgIFtncm91cF09XCJhZGRDb25maWd1cmF0aW9uRm9ybVwiPiA8L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJTb3VyY2VcIiAqbmdJZj1cIlNob3dEcm9wRG93blNvdXJjZVwiIChvbkNoYW5nZSk9XCJDaGFuZ2VTb3VyY2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIFtncm91cF09XCJhZGRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiU2hvd1NvdXJjZUZ1bmN0aW9uUGF0aFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiPlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkZ1bmN0aW9uU291cmNlUGF0aFwiIFtncm91cF09XCJhZGRDb25maWd1cmF0aW9uRm9ybVwiXHJcbiAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImNoYW5nZVNvdXJjZUZ1bmN0aW9uKClcIj4gPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93RnVuY3Rpb25Ob3RGb3VuZEVycm9yXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPlxyXG4gICAgICAgICAgICAgIHt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ1NvdXJjZUZ1bmN0aW9uTm90Rm91bmQnKSB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWl0ZW1zLWNlbnRlciBtYi00XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cIlNlYXJjaEZvckZ1bmN0aW9uKHRydWUpXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmbG9hdC1yaWdodFwiPjxpXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmFzIGZhLXNlYXJjaFwiPjwvaT57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdTZWFyY2gnKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJTb3VyY2VGdW5jVmFsdWVcIiAqbmdJZj1cIlNob3dTb3VyY2VGdW5jdGlvbkRhdGFcIlxyXG4gICAgICAgICAgICAgIFtncm91cF09XCJhZGRDb25maWd1cmF0aW9uRm9ybVwiPiA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiU291cmNlRnVuY0RlZmF1bHRWYWx1ZVwiICpuZ0lmPVwiU2hvd1NvdXJjZUZ1bmN0aW9uRGF0YVwiXHJcbiAgICAgICAgICAgICAgW2dyb3VwXT1cImFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+IDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiU2hvd0xvb2t1cExpc3RcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJMb29rdXBcIiAob25DaGFuZ2UpPVwiQ2hhbmdlTG9va3VwKCRldmVudCwgdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgIFtncm91cF09XCJhZGRDb25maWd1cmF0aW9uRm9ybVwiPiA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiTG9va3VwVmFsdWVcIiAqbmdJZj1cIlNob3dMb29rdXBJdGVtc0xpc3RcIiBbZ3JvdXBdPVwiYWRkQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkxvb2t1cERlZmF1bHRWYWx1ZVwiICpuZ0lmPVwiU2hvd0xvb2t1cEl0ZW1zTGlzdFwiXHJcbiAgICAgICAgICAgICAgW2dyb3VwXT1cImFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+IDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgIDxidXR0b24gI0Nsb3NlQ29uZmlndXJhdGlvbk1vZGFsIGlkPVwiQ2xvc2VDb25maWd1cmF0aW9uTW9kYWxcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCJcclxuICAgICAgICAgIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgIHt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0NhbmNlbExhYmVsJykgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiBbZGlzYWJsZWRdPVwic291cmNlRnVuY3Rpb25EYXRhTm90TG9hZGVkXCI+XHJcbiAgICAgICAgICB7eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdTYXZlTGFiZWwnKSB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG48IS0tICNyZWdpb24gZWRpdCBtb2RhbCAtLT5cclxuPG5nLXRlbXBsYXRlICNFZGl0Q29uZmlndXJhdGlvbk1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiXHJcbiAgICAgIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdFZGl0JykgfX1cclxuICAgICAgICB7eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdDb25maWd1cmF0aW9uJykgfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJFZGl0S2V5XCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiPiA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cImVkaXRMb2FkSnNvblRvZ2dsZVwiIFtncm91cF09XCJFZGl0Q29uZmlndXJhdGlvbkZvcm1cIj4gPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0ICpuZ0lmPVwiaXNNdWx0aVRlbmFuY3lBbGxvd2VkICYmIGlzU3VwZXJBZG1pblwiIFtvcHRpb25zXT1cImVkaXRPcmdhbml6YXRpb25cIlxyXG4gICAgICAgICAgICBbZ3JvdXBdPVwiRWRpdENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJFZGl0UGVybWlzc2lvblNldFwiICpuZ0lmPVwiU2hvd1Blcm1pc3Npb25MaXN0XCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVkaXRVc2VyXCIgKm5nSWY9XCJTaG93VXNlcnNMaXN0XCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkVkaXRUZXh0VmFsdWVcIiAqbmdJZj1cIlNob3dWYWx1ZUFuZERlZmF1bHRWYWx1ZVwiIFtncm91cF09XCJFZGl0Q29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkVkaXRUZXh0RGVmYXVsdFZhbHVlXCIgKm5nSWY9XCJTaG93VmFsdWVBbmREZWZhdWx0VmFsdWVcIlxyXG4gICAgICAgICAgICBbZ3JvdXBdPVwiRWRpdENvbmZpZ3VyYXRpb25Gb3JtXCI+IDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJFZGl0VmFsdWVUb2dnZWxlXCIgKm5nSWY9XCJTaG93VmFsdWVUb2dnbGVBbmREZWZhdWx0VmFsdWVcIlxyXG4gICAgICAgICAgICBbZ3JvdXBdPVwiRWRpdENvbmZpZ3VyYXRpb25Gb3JtXCI+IDwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiRWRpdERlZmF1bHRWYWx1ZVRvZ2dlbGVcIiAqbmdJZj1cIlNob3dWYWx1ZVRvZ2dsZUFuZERlZmF1bHRWYWx1ZVwiXHJcbiAgICAgICAgICAgIFtncm91cF09XCJFZGl0Q29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cIlNob3dTb3VyY2VGdW5jdGlvblBhdGhcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTlcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiRWRpdEZ1bmN0aW9uU291cmNlUGF0aFwiIFtncm91cF09XCJFZGl0Q29uZmlndXJhdGlvbkZvcm1cIlxyXG4gICAgICAgICAgICAob25DaGFuZ2UpPVwiY2hhbmdlU291cmNlRnVuY3Rpb24oKVwiPiA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93RnVuY3Rpb25Ob3RGb3VuZEVycm9yXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPlxyXG4gICAgICAgICAgICB7eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdTb3VyY2VGdW5jdGlvbk5vdEZvdW5kJykgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItNFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1zZWNvbmRhcnlcIiAoY2xpY2spPVwiU2VhcmNoRm9yRnVuY3Rpb24oZmFsc2UpXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxvYXQtcmlnaHRcIj48aVxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmYXMgZmEtc2VhcmNoXCI+PC9pPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ1NlYXJjaCcpIH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVkaXRTb3VyY2VGdW5jVmFsdWVcIiAqbmdJZj1cIlNob3dTb3VyY2VGdW5jdGlvbkRhdGFcIlxyXG4gICAgICAgICAgICBbZ3JvdXBdPVwiRWRpdENvbmZpZ3VyYXRpb25Gb3JtXCI+IDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlXCIgKm5nSWY9XCJTaG93U291cmNlRnVuY3Rpb25EYXRhXCJcclxuICAgICAgICAgICAgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdExvb2t1cFwiICpuZ0lmPVwiU2hvd0xvb2t1cExpc3RcIiAob25DaGFuZ2UpPVwiQ2hhbmdlTG9va3VwKCRldmVudCwgZmFsc2UpXCJcclxuICAgICAgICAgICAgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cIlNob3dMb29rdXBJdGVtc0xpc3RcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdExvb2t1cFZhbHVlXCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiPiA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiU2hvd0xvb2t1cEl0ZW1zTGlzdFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJFZGl0TG9va3VwRGVmYXVsdFZhbHVlXCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiPiA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgPGJ1dHRvbiAjQ2xvc2VFZGl0Q29uZmlndXJhdGlvbk1vZGFsIGlkPVwiQ2xvc2VFZGl0Q29uZmlndXJhdGlvbk1vZGFsXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtIG1lLTNcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgIHt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0NhbmNlbExhYmVsJykgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiBbZGlzYWJsZWRdPVwic291cmNlRnVuY3Rpb25EYXRhTm90TG9hZGVkXCI+XHJcbiAgICAgICAgICB7eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdTYXZlTGFiZWwnKSB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG48IS0tICNyZWdpb24gZGVsZXRlIG1vZGFsIC0tPlxyXG48QkJTRi1Db25maXJtYXRpb25Nb2RhbCAqbmdJZj1cImRlbGV0ZUNvbnRyb2xMb2FkZWRcIiBbb3B0aW9uc109XCJEZWxldGVDb25maXJtYXRpb25PcHRpb25zXCIgaWQ9XCJDb25maXJtYXRpb25Nb2RhbENvbnRyb2xcIlxyXG4gICNDb25maXJtYXRpb25Nb2RhbENvbnRyb2w+PC9CQlNGLUNvbmZpcm1hdGlvbk1vZGFsPlxyXG48IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG48IS0tICNyZWdpb24gcmVsb2FkIG1vZGFsIC0tPlxyXG48QkJTRi1Db25maXJtYXRpb25Nb2RhbCAqbmdJZj1cInJlbG9hZENvbnRyb2xMb2FkZWRcIiBbb3B0aW9uc109XCJyZWxvYWRDb25maXJtYXRpb25PcHRpb25zXCJcclxuICBpZD1cIlJlbG9hZENvbmZpcm1hdGlvbk1vZGFsQ29udHJvbFwiICNSZWxvYWRDb25maXJtYXRpb25Nb2RhbENvbnRyb2w+PC9CQlNGLUNvbmZpcm1hdGlvbk1vZGFsPlxyXG48IS0tICNlbmRyZWdpb24gLS0+Il19
|