tnx-shared 5.3.7 → 5.3.9

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.
@@ -47,7 +47,7 @@ export declare class PublicFunction {
47
47
  static getSignalrConfig(environment: any): import("ng2-signalr").SignalRConfiguration;
48
48
  static registerLocaleData(locale?: any, language?: any): void;
49
49
  static importRootModule(environment: any): (typeof HttpClientModule | import("@angular/core").ModuleWithProviders<TranslateModule> | typeof BrowserModule)[];
50
- static useRootProvider(enviromment: any): (typeof DatePipe | typeof DecimalPipe | typeof ConfirmationService | typeof MessageService | typeof TranslateService | typeof NotifierService | typeof EntityWorkflowHistoryService | typeof EntityWorkflowSettingService | typeof EntityPermissionService | typeof HtmlFormatPipe | typeof MasterDataPipe | typeof OrganizationFormatPipe | typeof OrganizationsFormatPipe | typeof SafeHtmlPipe | typeof UserFormatPipe | typeof UsersFormatPipe | {
50
+ static useRootProvider(enviromment: any): (typeof DecimalPipe | typeof DatePipe | typeof ConfirmationService | typeof MessageService | typeof TranslateService | typeof NotifierService | typeof EntityWorkflowHistoryService | typeof EntityWorkflowSettingService | typeof EntityPermissionService | typeof HtmlFormatPipe | typeof MasterDataPipe | typeof OrganizationFormatPipe | typeof OrganizationsFormatPipe | typeof SafeHtmlPipe | typeof UserFormatPipe | typeof UsersFormatPipe | {
51
51
  provide: import("@angular/core").InjectionToken<string>;
52
52
  useValue: string;
53
53
  useClass?: undefined;
@@ -1,6 +1,5 @@
1
1
  import { AnimationEvent } from '@angular/animations';
2
2
  import { AfterViewInit, ElementRef, EventEmitter, Injector, OnInit, Renderer2 } from '@angular/core';
3
- import { TranslateService } from '@ngx-translate/core';
4
3
  import { DeviceDetectorService } from 'ngx-device-detector';
5
4
  import { ComponentBase } from '../../../classes/base/component-base';
6
5
  import { IComponentBase } from '../../../classes/base/component-base.interface';
@@ -15,7 +14,6 @@ import { CrudFormComponent } from '../crud-form/crud-form.component';
15
14
  export declare class AdvanceSearchComponent extends ComponentBase implements OnInit, AfterViewInit, IComponentBase {
16
15
  private _customRouterService;
17
16
  private _notifierService;
18
- private _translateService;
19
17
  _deviceDetectorService: DeviceDetectorService;
20
18
  private _localCacheService;
21
19
  private _renderer;
@@ -56,7 +54,7 @@ export declare class AdvanceSearchComponent extends ComponentBase implements OnI
56
54
  _searchBoxMaxHeight: any;
57
55
  environment: any;
58
56
  hemisAdvanceSearch: boolean;
59
- constructor(_customRouterService: CustomRouterService, _injector: Injector, _notifierService: NotifierService, _translateService: TranslateService, _deviceDetectorService: DeviceDetectorService, _localCacheService: LocalCacheService, _renderer: Renderer2, _moduleConfig: ModuleConfigService);
57
+ constructor(_customRouterService: CustomRouterService, _injector: Injector, _notifierService: NotifierService, _deviceDetectorService: DeviceDetectorService, _localCacheService: LocalCacheService, _renderer: Renderer2, _moduleConfig: ModuleConfigService);
60
58
  ngOnInit(): void;
61
59
  initData(): Promise<void>;
62
60
  setDataDefault(formSchema: any): void;
@@ -1 +1 @@
1
- {"version":3,"file":"advance-search.component.d.ts","sourceRoot":"","sources":["../../../../../projects/tnx-shared/src/lib/components/crud/advance-search/advance-search.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"advance-search.component.d.ts","sourceRoot":"","sources":["../../../../../projects/tnx-shared/src/lib/components/crud/advance-search/advance-search.component.ts"],"names":[],"mappings":"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"}
@@ -124,7 +124,7 @@ export declare class CrudFormComponent extends ComponentBase implements OnInit,
124
124
  triggerChange(fieldPath: any): void;
125
125
  ngAfterViewInit(): void;
126
126
  setIsLoadedDataEdit(value: boolean): void;
127
- getControlType(control: any): "custom" | "address" | "button" | "label" | "table" | "template" | "textarea" | "title" | "mask" | "switch" | "text" | "datetime" | "spanControl" | "numberrange" | "money" | "phoneOrfax" | "reference-text" | "datetimerange" | "dropdown" | "editor" | "common-picker" | "autocomplete-picker" | "user-picker" | "entity-picker" | "organization-picker" | "cocautochuc-picker-new" | "cocautochuc-picker" | "cocautochuc" | "autocomplete" | "checkbox" | "checkboxlist" | "radiobuttonlist" | "imageuploader" | "fileUpload" | "serviceFileUpload" | "fileManager" | "colorPicker" | "colorControl" | "container" | "vanban" | "congviec" | "percent" | "chips" | "column";
127
+ getControlType(control: any): "custom" | "address" | "button" | "label" | "table" | "template" | "textarea" | "title" | "mask" | "switch" | "text" | "percent" | "datetime" | "spanControl" | "numberrange" | "money" | "phoneOrfax" | "reference-text" | "datetimerange" | "dropdown" | "editor" | "common-picker" | "autocomplete-picker" | "user-picker" | "entity-picker" | "organization-picker" | "cocautochuc-picker-new" | "cocautochuc-picker" | "cocautochuc" | "autocomplete" | "checkbox" | "checkboxlist" | "radiobuttonlist" | "imageuploader" | "fileUpload" | "serviceFileUpload" | "fileManager" | "colorPicker" | "colorControl" | "container" | "vanban" | "congviec" | "chips" | "column";
128
128
  getViewModeDataType(control: any): "user" | "address" | "html" | "label" | "table" | "title" | "mask" | "string" | "date" | "boolean" | "datetime" | "money" | "fileUpload" | "fileManager" | "colorPicker" | "colorControl" | "container" | "hasDataSource" | "fileServiceUpload" | "app-key-value";
129
129
  validateForm(setValidateForm?: boolean): Promise<boolean>;
130
130
  private validateModel;
@@ -1,7 +1,6 @@
1
1
  import { __awaiter } from "tslib";
2
2
  import { animate, style, transition, trigger } from '@angular/animations';
3
3
  import { Component, ElementRef, EventEmitter, Injector, Input, Output, Renderer2, ViewChild } from '@angular/core';
4
- import { TranslateService } from '@ngx-translate/core';
5
4
  import { DeviceDetectorService } from 'ngx-device-detector';
6
5
  import { DomHandler } from 'tn-custom-primeng/dom';
7
6
  import { ComponentContextService } from '../../../app-context/component-context.service';
@@ -16,12 +15,11 @@ import { SearchInfo } from '../../models/search';
16
15
  import { CrudFormComponent } from '../crud-form/crud-form.component';
17
16
  import { ComCtxConstants } from './../../../configs/component-context.constant';
18
17
  export class AdvanceSearchComponent extends ComponentBase {
19
- constructor(_customRouterService, _injector, _notifierService, _translateService, _deviceDetectorService, _localCacheService, _renderer, _moduleConfig) {
18
+ constructor(_customRouterService, _injector, _notifierService, _deviceDetectorService, _localCacheService, _renderer, _moduleConfig) {
20
19
  var _a, _b, _c, _d;
21
20
  super(_injector);
22
21
  this._customRouterService = _customRouterService;
23
22
  this._notifierService = _notifierService;
24
- this._translateService = _translateService;
25
23
  this._deviceDetectorService = _deviceDetectorService;
26
24
  this._localCacheService = _localCacheService;
27
25
  this._renderer = _renderer;
@@ -480,7 +478,6 @@ AdvanceSearchComponent.ctorParameters = () => [
480
478
  { type: CustomRouterService },
481
479
  { type: Injector },
482
480
  { type: NotifierService },
483
- { type: TranslateService },
484
481
  { type: DeviceDetectorService },
485
482
  { type: LocalCacheService },
486
483
  { type: Renderer2 },
@@ -498,4 +495,4 @@ AdvanceSearchComponent.propDecorators = {
498
495
  onFormEvent: [{ type: Output }],
499
496
  onInit: [{ type: Output }]
500
497
  };
501
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZS1zZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvY3J1ZC9hZHZhbmNlLXNlYXJjaC9hZHZhbmNlLXNlYXJjaC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQWtCLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUYsT0FBTyxFQUVILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUVyRSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUNwQixZQUFZLEVBQ1osZUFBZSxFQUNmLHFCQUFxQixFQUNyQixxQkFBcUIsRUFFckIsUUFBUSxFQUNSLGlCQUFpQixFQUNwQixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVB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QUNoQixxQkFBcUI7WUFrQnJCLGlCQUFpQjtZQXRCdEIsU0FBUztZQXVCSixtQkFBbUI7OztpQkEwQnZCLFNBQVMsU0FBQyxJQUFJO3VCQUNkLFNBQVMsU0FBQyxVQUFVOzJCQUNwQixTQUFTLFNBQUMsY0FBYzs0QkFFeEIsS0FBSzt5QkFFTCxLQUFLOzBDQVdMLEtBQUs7c0JBQ0wsS0FBSzt1QkFFTCxNQUFNOzBCQUNOLE1BQU07cUJBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIEFuaW1hdGlvbkV2ZW50LCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQge1xyXG4gICAgQWZ0ZXJWaWV3SW5pdCxcclxuICAgIENvbXBvbmVudCxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBJbmplY3RvcixcclxuICAgIElucHV0LFxyXG4gICAgT25Jbml0LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgUmVuZGVyZXIyLFxyXG4gICAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlIH0gZnJvbSAnbmd4LWRldmljZS1kZXRlY3Rvcic7XHJcbmltcG9ydCB7IERvbUhhbmRsZXIgfSBmcm9tICd0bi1jdXN0b20tcHJpbWVuZy9kb20nO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9iYXNlL2NvbXBvbmVudC1iYXNlJztcclxuaW1wb3J0IHsgSUNvbXBvbmVudEJhc2UgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Jhc2UvY29tcG9uZW50LWJhc2UuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtcclxuICAgIEFkdmFuY2VTZWFyY2hEYXRhLFxyXG4gICAgQWR2YW5jZVNlYXJjaFNldHRpbmcsXHJcbiAgICBDcnVkRm9ybURhdGEsXHJcbiAgICBDcnVkTGlzdFNldHRpbmcsXHJcbiAgICBEYXRlVGltZUNvbnRyb2xTY2hlbWEsXHJcbiAgICBEcm9wZG93bkNvbnRyb2xTY2hlbWEsXHJcbiAgICBGb3JtU2NoZW1hQmFzZSxcclxuICAgIE9wZXJhdG9yLFxyXG4gICAgVGV4dENvbnRyb2xTY2hlbWFcclxufSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuaW1wb3J0IHsgRmlsdGVyIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dyaWQtaW5mbyc7XHJcbmltcG9ydCB7IEN1c3RvbVJvdXRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jdXN0b20tcm91dGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2NhbENhY2hlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xvY2FsQ2FjaGUuc2VydmljZSc7XHJcbmltcG9ydCB7IE1vZHVsZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tb2R1bGUtY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOb3RpZmllclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9ub3RpZmllci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2VhcmNoSW5mbyB9IGZyb20gJy4uLy4uL21vZGVscy9zZWFyY2gnO1xyXG5pbXBvcnQgeyBDcnVkRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL2NydWQtZm9ybS9jcnVkLWZvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tQ3R4Q29uc3RhbnRzIH0gZnJvbSAnLi8uLi8uLi8uLi9jb25maWdzL2NvbXBvbmVudC1jb250ZXh0LmNvbnN0YW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBjb21wb25lbnQtc2VsZWN0b3JcclxuICAgIHNlbGVjdG9yOiAnYWR2YW5jZS1zZWFyY2gnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FkdmFuY2Utc2VhcmNoLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2FkdmFuY2Utc2VhcmNoLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtDb21wb25lbnRDb250ZXh0U2VydmljZV0sXHJcbiAgICBhbmltYXRpb25zOiBbXHJcbiAgICAgICAgdHJpZ2dlcignb3ZlcmxheUFuaW1hdGlvbicsIFtcclxuICAgICAgICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xyXG4gICAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICdzY2FsZVkoMC44KScgfSksXHJcbiAgICAgICAgICAgICAgICBhbmltYXRlKCd7e3Nob3dUcmFuc2l0aW9uUGFyYW1zfX0nKVxyXG4gICAgICAgICAgICBdKSxcclxuICAgICAgICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xyXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgne3toaWRlVHJhbnNpdGlvblBhcmFtc319Jywgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKVxyXG4gICAgICAgICAgICBdKVxyXG4gICAgICAgIF0pXHJcbiAgICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWR2YW5jZVNlYXJjaENvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEJhc2UgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIElDb21wb25lbnRCYXNlIHtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdlbCcpIGVsOiBFbGVtZW50UmVmO1xyXG4gICAgQFZpZXdDaGlsZCgnY3J1ZEZvcm0nKSBjcnVkRm9ybTogQ3J1ZEZvcm1Db21wb25lbnQ7XHJcbiAgICBAVmlld0NoaWxkKCdvdmVybGF5UGFuZWwnKSBvdmVybGF5UGFuZWw6IEVsZW1lbnRSZWY7XHJcblxyXG4gICAgQElucHV0KCkgcGFyZW50U2V0dGluZzogQ3J1ZExpc3RTZXR0aW5nO1xyXG4gICAgX3NlYXJjaEluZm86IFNlYXJjaEluZm87XHJcbiAgICBASW5wdXQoKSBzZXQgc2VhcmNoSW5mbyh2YWx1ZTogU2VhcmNoSW5mbykge1xyXG4gICAgICAgIHRoaXMuX3NlYXJjaEluZm8gPSB2YWx1ZTtcclxuICAgICAgICBpZiAodGhpcy5fc2VhcmNoSW5mbyAmJiB0aGlzLl9zZWFyY2hJbmZvLnNjaGVtYSkge1xyXG4gICAgICAgICAgICB0aGlzLmluaXREYXRhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBnZXQgc2VhcmNoSW5mbygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2VhcmNoSW5mbztcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKSBhbGxvd0xvYWREYXRhV2hlblBhcmVudE51bGwgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEBPdXRwdXQoKSBvblNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIG9uRm9ybUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25Jbml0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICAgX292ZXJsYXlQYW5lbDogSFRNTERpdkVsZW1lbnQ7XHJcbiAgICBvdmVybGF5U2hvd1RyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgPSAnLjEycyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSc7XHJcbiAgICBvdmVybGF5SGlkZVRyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgPSAnLjFzIGxpbmVhcic7XHJcbiAgICBhbGlnbk92ZXJsYXlUaW1lb3V0ID0gbnVsbDtcclxuXHJcbiAgICBtYXNrT3ZlcmxheTogSFRNTERpdkVsZW1lbnQ7XHJcbiAgICBtYXNrQ2xpY2tMaXN0ZW5lcjogRnVuY3Rpb247XHJcblxyXG4gICAgZG9jdW1lbnRSZXNpemVMaXN0ZW5lcjogYW55O1xyXG5cclxuICAgIGtleXdvcmQgPSAnJztcclxuICAgIG1vZGVsOiBBZHZhbmNlU2VhcmNoRGF0YSA9IG5ldyBBZHZhbmNlU2VhcmNoRGF0YSgpO1xyXG4gICAgbW9kZWxDcnVkRm9ybTogQ3J1ZEZvcm1EYXRhID0gbmV3IENydWRGb3JtRGF0YSgpO1xyXG4gICAgc2V0dGluZzogQWR2YW5jZVNlYXJjaFNldHRpbmcgPSBuZXcgQWR2YW5jZVNlYXJjaFNldHRpbmcoKTtcclxuICAgIHJlYWR5ID0gZmFsc2U7XHJcbiAgICBuZWVkQ2xlYXJUeXBlZFZhbHVlcyA9IHRydWU7XHJcbiAgICBzbmFwU2hvdCA9ICcnO1xyXG5cclxuICAgIGZpZWxkUGFyZW50TWFwOiBhbnkgPSB7fTtcclxuXHJcbiAgICB0YXJnZXQ6IGFueTtcclxuXHJcbiAgICBzaG93Rm9ybSA9IGZhbHNlO1xyXG4gICAgc2VhcmNoQm94VG9vbHRpcDtcclxuXHJcbiAgICBmaWx0ZXJfZm9ybTogRmlsdGVyW10gPSBbXTsgLy8gU2VhcmNoIG7hur91IHPhu60gZOG7pW5nIGNydWQgKEtoYWkgYsOhbyB0ZW1wbGF0ZSBmaWx0ZXIpXHJcbiAgICBmaWx0ZXJfa2V5d29yZDogRmlsdGVyW10gPSBbXTsgLy8gU2VhcmNoIHThu6sga2jDs2FcclxuICAgIGZpbHRlcl9xdWVyeTogRmlsdGVyW10gPSBbXTsgLy8gU2VhcmNoIG7hur91IHPhu60gZOG7pW5nIHF1ZXJ5IGJ1aWxkZXJcclxuXHJcbiAgICBfc2VhcmNoQm94TWF4SGVpZ2h0O1xyXG4gICAgZW52aXJvbm1lbnQ7XHJcbiAgICBoZW1pc0FkdmFuY2VTZWFyY2g6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIF9jdXN0b21Sb3V0ZXJTZXJ2aWNlOiBDdXN0b21Sb3V0ZXJTZXJ2aWNlLFxyXG4gICAgICAgIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJpdmF0ZSBfbm90aWZpZXJTZXJ2aWNlOiBOb3RpZmllclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgICAgICBwdWJsaWMgX2RldmljZURldGVjdG9yU2VydmljZTogRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2xvY2FsQ2FjaGVTZXJ2aWNlOiBMb2NhbENhY2hlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgICAgIHByaXZhdGUgX21vZHVsZUNvbmZpZzogTW9kdWxlQ29uZmlnU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoX2luamVjdG9yKTtcclxuICAgICAgICB0aGlzLm1vZGVsLmRhdGEgPSB7fTtcclxuICAgICAgICB0aGlzLmVudmlyb25tZW50ID0gdGhpcy5fbW9kdWxlQ29uZmlnLmdldENvbmZpZygpLmVudmlyb25tZW50O1xyXG4gICAgICAgIHRoaXMuaGVtaXNBZHZhbmNlU2VhcmNoID0gdGhpcy5lbnZpcm9ubWVudD8uYXBwTWV0YWRhdGE/Lm1haW4/LmhlbWlzQWR2YW5jZVNlYXJjaCA/PyBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmluaXREYXRhKCk7XHJcbiAgICAgICAgdGhpcy5nZXRTYXZlZEZpbHRlcnMoKTtcclxuICAgICAgICB0aGlzLm9uSW5pdC5lbWl0KHRoaXMuZ2V0RmlsdGVycygpKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBpbml0RGF0YSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoSW5mbyB8fCB0aGlzLnNlYXJjaEluZm8uc2NoZW1hID09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNlYXJjaEJveFRvb2x0aXAgPSB0aGlzLnNlYXJjaEluZm8udG9vbHRpcFNlYXJjaFRleHQ7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLnNjaGVtYSA9IDxGb3JtU2NoZW1hQmFzZVtdPih0aGlzLnNlYXJjaEluZm8uc2NoZW1hKTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuZmllbGREcm9wZG93biA9IHRoaXMuc2VhcmNoSW5mby5maWVsZERyb3Bkb3duO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5rZWVwSW5pdFNlYXJjaERhdGFOb3ROdWxsID0gdHJ1ZTtcclxuICAgICAgICBhd2FpdCB0aGlzLnBhcmVudFNldHRpbmcuZnVuY3Rpb24ubW9kaWZ5QWR2YW5jZVNlYWNoTW9kZWwodGhpcy5tb2RlbCwgdGhpcy5zZXR0aW5nKTtcclxuXHJcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5tb2RlbC5pbml0RGF0YSkuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMubW9kZWwuaW5pdERhdGFba2V5XSA9PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLmRhdGFba2V5XSA9IHRoaXMubW9kZWwuaW5pdERhdGFba2V5XSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlbC5kYXRhW2tleV0gPSB0aGlzLm1vZGVsLmluaXREYXRhW2tleV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLnNjaGVtYS5mb3JFYWNoKHNjaGVtYSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChzY2hlbWEgaW5zdGFuY2VvZiBEcm9wZG93bkNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IF9zY2hlbWEgPSA8RHJvcGRvd25Db250cm9sU2NoZW1hPnNjaGVtYTtcclxuICAgICAgICAgICAgICAgIF9zY2hlbWEuYWZ0ZXJHZXREYXRhID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghX3NjaGVtYS5pc1NlcnZlckxvYWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbVNlbGVjdGVkID0gX3NjaGVtYS5kYXRhU291cmNlLmZpbmQoaXRlbSA9PiBpdGVtLnZhbHVlID09IHRoaXMubW9kZWwuZGF0YVtzY2hlbWEuZmllbGRdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1TZWxlY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb2RlbC5kYXRhW3NjaGVtYS5maWVsZF0gPSBpdGVtU2VsZWN0ZWQudmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgX3NjaGVtYS5hcHBlbmRUbyA9ICdib2R5JztcclxuICAgICAgICAgICAgICAgIF9zY2hlbWEucGFuZWxDbGFzcyA9ICdkcm9wZG93bi1hZHZzJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuc2V0dGluZy5kaXNhYmxlQ2FjaGluZykge1xyXG4gICAgICAgICAgICB0aGlzLnNldERhdGFEZWZhdWx0KHRoaXMuc2V0dGluZy5zY2hlbWEpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5tb2RlbENydWRGb3JtLmRhdGEgPSB0aGlzLm1vZGVsLmRhdGE7XHJcbiAgICAgICAgdGhpcy5tb2RlbENydWRGb3JtLmRhdGEua2V5ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xyXG4gICAgICAgIHRoaXMucmVhZHkgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERhdGFEZWZhdWx0KGZvcm1TY2hlbWEpIHtcclxuICAgICAgICBjb25zdCBkYXRhQ2FjaGUgPSB0aGlzLl9sb2NhbENhY2hlU2VydmljZS5nZXREYXRhRGVmYXVsdCgpO1xyXG4gICAgICAgIGNvbnN0IGdldFNldHRpbmdEYXRhRGVmYXVsdCA9IHRoaXMuX21vZHVsZUNvbmZpZy5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5zZXR0aW5nRGF0YURlZmF1bHQ7XHJcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGZvcm1TY2hlbWEpIHtcclxuICAgICAgICAgICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBEcm9wZG93bkNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSAoPERyb3Bkb3duQ29udHJvbFNjaGVtYT5pdGVtKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IChjb250cm9sLmZpZWxkICsgKGNvbnRyb2wudmFsdWVGaWVsZCA9PSAnaWQnID8gJycgOiBjb250cm9sLnZhbHVlRmllbGQpKTtcclxuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGRhdGFDYWNoZVtrZXldO1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb2RlbC5kYXRhW2NvbnRyb2wuZmllbGRdID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChnZXRTZXR0aW5nRGF0YURlZmF1bHQpIHsgLy8gbOG6pXkgY+G6pXUgaMOsbmggZmllbGQgbWFwUGluZ1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkTWFwR2V0Q2FjaGUgPSBnZXRTZXR0aW5nRGF0YURlZmF1bHRbY29udHJvbC5maWVsZF07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkTWFwR2V0Q2FjaGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gKGZpZWxkTWFwR2V0Q2FjaGUgKyAoY29udHJvbC52YWx1ZUZpZWxkID09ICdpZCcgPyAnJyA6IGNvbnRyb2wudmFsdWVGaWVsZCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGRhdGFDYWNoZVtrZXldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW9kZWwuZGF0YVtjb250cm9sLmZpZWxkXSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBkYXRhQ2FjaGVbKDxGb3JtU2NoZW1hQmFzZT5pdGVtKS5maWVsZF07XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLmRhdGFbKDxGb3JtU2NoZW1hQmFzZT5pdGVtKS5maWVsZF0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2VkKGV2dCkge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyX2tleXdvcmQgPSBbXTtcclxuICAgICAgICBpZiAodGhpcy5rZXl3b3JkICE9IG51bGwgJiYgdGhpcy5rZXl3b3JkICE9ICcnICYmIHRoaXMucGFyZW50U2V0dGluZy5maWVsZFNlYXJjaFRleHQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJLZXlXb3JrID0gbmV3IEZpbHRlcih7XHJcbiAgICAgICAgICAgICAgICBsb2dpYzogJ29yJyxcclxuICAgICAgICAgICAgICAgIGZpbHRlcnM6IFtdXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZUtleVdvcmsgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmtleXdvcmQpO1xyXG4gICAgICAgICAgICB0aGlzLnBhcmVudFNldHRpbmcuZmllbGRTZWFyY2hUZXh0LmZvckVhY2goZmllbGQgPT4ge1xyXG4gICAgICAgICAgICAgICAgZmlsdGVyS2V5V29yay5maWx0ZXJzLnB1c2gobmV3IEZpbHRlcih7XHJcbiAgICAgICAgICAgICAgICAgICAgZmllbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW4sXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlS2V5V29ya1xyXG4gICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKGZpbHRlcktleVdvcmsuZmlsdGVycy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJfa2V5d29yZC5wdXNoKGZpbHRlcktleVdvcmsuZmlsdGVyc1swXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcl9rZXl3b3JkLnB1c2goZmlsdGVyS2V5V29yayk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5tZXJnZUZpbHRlckFuZEVtaXQoKTtcclxuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkVzYyhldnQpIHtcclxuICAgICAgICB0aGlzLmNsZWFyS2V5d29yZCgpO1xyXG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyS2V5d29yZCgpIHtcclxuICAgICAgICBpZiAodGhpcy5rZXl3b3JkICE9IG51bGwgJiYgdGhpcy5rZXl3b3JkICE9PSAnJykge1xyXG4gICAgICAgICAgICB0aGlzLmtleXdvcmQgPSAnJztcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJfa2V5d29yZCA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLm1lcmdlRmlsdGVyQW5kRW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbkRvU2VhcmNoaW5nKCkge1xyXG4gICAgICAgIHRoaXMub25TZWFyY2hpbmcoKTtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVTZWFyY2hCdWlsZGVyKGV2dCkge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyX3F1ZXJ5ID0gZXZ0O1xyXG4gICAgICAgIHRoaXMubWVyZ2VGaWx0ZXJBbmRFbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBvblNlYXJjaGluZygpIHtcclxuICAgICAgICBjb25zdCBpbnRlcm5hbEZvcm1TY2hlbWEgPSB0aGlzLnNldHRpbmcuc2NoZW1hO1xyXG4gICAgICAgIGNvbnN0IG1vZGVsRmlsdGVyID0gdGhpcy5tb2RlbENydWRGb3JtLmRhdGE7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNldHRpbmcua2VlcEluaXRTZWFyY2hEYXRhTm90TnVsbCkge1xyXG4gICAgICAgICAgICAvLyBSZXBsYWNlIG5o4buvbmcgZmllbGQgYuG7iyBudWxsIGLhurFuZyB2YWx1ZSBmaWx0ZXIgbeG6t2MgxJHhu4tuaFxyXG4gICAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLm1vZGVsLmluaXREYXRhKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAobW9kZWxGaWx0ZXJba2V5XSA9PSBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgfHwgbW9kZWxGaWx0ZXJba2V5XSA9PSAnJykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5tb2RlbC5pbml0RGF0YVtrZXldID09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWxGaWx0ZXJba2V5XSA9IHRoaXMubW9kZWwuaW5pdERhdGFba2V5XSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWxGaWx0ZXJba2V5XSA9IHRoaXMubW9kZWwuaW5pdERhdGFba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGNvbnN0IGluZGV4IGluIGludGVybmFsRm9ybVNjaGVtYSkge1xyXG4gICAgICAgICAgICBpZiAoaW50ZXJuYWxGb3JtU2NoZW1hW2luZGV4XSBpbnN0YW5jZW9mIERhdGVUaW1lQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmllbGQgPSBpbnRlcm5hbEZvcm1TY2hlbWFbaW5kZXhdLmZpZWxkO1xyXG4gICAgICAgICAgICAgICAgaWYgKG1vZGVsRmlsdGVyW2ZpZWxkXSA9PT0gJycpIHtcclxuICAgICAgICAgICAgICAgICAgICBtb2RlbEZpbHRlcltmaWVsZF0gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMucGFyZW50U2V0dGluZy5maWx0ZXJUZW1wbGF0ZUFkdnMgPT0gbnVsbCkgcmV0dXJuIFtdO1xyXG5cclxuICAgICAgICB0aGlzLmRlUXV5QW5kRW1pdFNlYXJjaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyU2VhcmNoKGV2dCkge1xyXG4gICAgICAgIGNvbnN0IGludGVybmFsRm9ybVNjaGVtYSA9IHRoaXMuc2V0dGluZy5zY2hlbWE7XHJcbiAgICAgICAgY29uc3QgbW9kZWxGaWx0ZXIgPSB0aGlzLm1vZGVsQ3J1ZEZvcm0uZGF0YTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbnRlcm5hbEZvcm1TY2hlbWEpIHtcclxuICAgICAgICAgICAgaWYgKGludGVybmFsRm9ybVNjaGVtYVtrZXldIGluc3RhbmNlb2YgRGF0ZVRpbWVDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgICAgICAgICBtb2RlbEZpbHRlcltpbnRlcm5hbEZvcm1TY2hlbWFba2V5XS5maWVsZF0gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBtb2RlbEZpbHRlcltpbnRlcm5hbEZvcm1TY2hlbWFba2V5XS5maWVsZF0gPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGVRdXlBbmRFbWl0U2VhcmNoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVRdXlBbmRFbWl0U2VhcmNoKCkge1xyXG4gICAgICAgIGNvbnN0IHRlbXBsYXRlRmlsdGVyID0gdGhpcy5wYXJlbnRTZXR0aW5nLmZpbHRlclRlbXBsYXRlQWR2cztcclxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9jcnVkU2VydmljZS5nZXRGaWx0ZXJGcm9tVGVtcGxhdGUodGVtcGxhdGVGaWx0ZXIsIHRoaXMubW9kZWxDcnVkRm9ybS5kYXRhKTtcclxuICAgICAgICB0aGlzLmhpZGVGb3JtU2VhcmNoKCk7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJfZm9ybSA9IHJlc3VsdDtcclxuICAgICAgICB0aGlzLm1lcmdlRmlsdGVyQW5kRW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEZpbHRlcnMoKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0OiBGaWx0ZXJbXSA9IFtdO1xyXG4gICAgICAgIGlmICh0aGlzLmZpbHRlcl9rZXl3b3JkKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLnRoaXMuZmlsdGVyX2tleXdvcmQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5maWx0ZXJfZm9ybSkge1xyXG4gICAgICAgICAgICByZXN1bHQucHVzaCguLi50aGlzLmZpbHRlcl9mb3JtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyX3F1ZXJ5KSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLnRoaXMuZmlsdGVyX3F1ZXJ5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBtZXJnZUZpbHRlckFuZEVtaXQoKSB7XHJcbiAgICAgICAgdGhpcy5vblNlYXJjaC5uZXh0KHRoaXMuZ2V0RmlsdGVycygpKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkZvcm1TaG93KGV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy5zbmFwU2hvdCA9IEpTT04uc3RyaW5naWZ5KHRoaXMubW9kZWwuZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tGaXhlZFBvc2l0aW9uKGVsZW0pIHtcclxuICAgICAgICB3aGlsZSAoZWxlbSAmJiBlbGVtLnRhZ05hbWUgIT09ICdCT0RZJykge1xyXG4gICAgICAgICAgICBjb25zdCBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW0pO1xyXG4gICAgICAgICAgICBpZiAoc3R5bGUucG9zaXRpb24gJiYgc3R5bGUucG9zaXRpb24udG9Mb3dlckNhc2UoKSA9PT0gJ2ZpeGVkJykgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIGVsZW0gPSBlbGVtLnBhcmVudE5vZGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRDb29yZHMoZWxlbSkge1xyXG4gICAgICAgIGNvbnN0IGlzRml4ZWQgPSB0aGlzLmNoZWNrRml4ZWRQb3NpdGlvbihlbGVtKTtcclxuICAgICAgICBjb25zdCBib3ggPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAgICAgICBjb25zdCBib2R5ID0gZG9jdW1lbnQuYm9keTtcclxuICAgICAgICBjb25zdCBkb2NFbCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcclxuXHJcbiAgICAgICAgY29uc3Qgc2Nyb2xsVG9wID0gaXNGaXhlZCA/IDAgOiB3aW5kb3cucGFnZVlPZmZzZXQgfHwgZG9jRWwuc2Nyb2xsVG9wIHx8IGJvZHkuc2Nyb2xsVG9wO1xyXG4gICAgICAgIGNvbnN0IHNjcm9sbExlZnQgPSBpc0ZpeGVkID8gMCA6IHdpbmRvdy5wYWdlWE9mZnNldCB8fCBkb2NFbC5zY3JvbGxMZWZ0IHx8IGJvZHkuc2Nyb2xsTGVmdDtcclxuXHJcbiAgICAgICAgY29uc3QgY2xpZW50VG9wID0gZG9jRWwuY2xpZW50VG9wIHx8IGJvZHkuY2xpZW50VG9wIHx8IDA7XHJcbiAgICAgICAgY29uc3QgY2xpZW50TGVmdCA9IGRvY0VsLmNsaWVudExlZnQgfHwgYm9keS5jbGllbnRMZWZ0IHx8IDA7XHJcblxyXG4gICAgICAgIGNvbnN0IHRvcCA9IGJveC50b3AgKyBzY3JvbGxUb3AgLSBjbGllbnRUb3A7XHJcbiAgICAgICAgY29uc3QgbGVmdCA9IGJveC5sZWZ0ICsgc2Nyb2xsTGVmdCAtIGNsaWVudExlZnQ7XHJcblxyXG4gICAgICAgIHJldHVybiB7IHRvcDogTWF0aC5yb3VuZCh0b3ApLCBsZWZ0OiBNYXRoLnJvdW5kKGxlZnQpIH07XHJcbiAgICB9XHJcblxyXG4gICAgb25Gb3JtSGlkZShldnQpIHtcclxuICAgICAgICBpZiAodGhpcy5uZWVkQ2xlYXJUeXBlZFZhbHVlcykge1xyXG4gICAgICAgICAgICBjb25zdCB0ZW1wID0gSlNPTi5wYXJzZSh0aGlzLnNuYXBTaG90KTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBwIGluIHRoaXMubW9kZWwuZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlbC5kYXRhW3BdID0gdGVtcFtwXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm5lZWRDbGVhclR5cGVkVmFsdWVzID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBvbkZvcm1FdmVudEhhbmRsZXIoZXZ0LCBzZWFyY2hNb2RlbCkge1xyXG4gICAgICAgIGV2dC5kYXRhU2VhcmNoTW9kZWwgPSBzZWFyY2hNb2RlbDtcclxuICAgICAgICAvLyBpZiAoZXZ0LmV2ZW50VHlwZSA9PSBcImNoYW5nZVwiKSB7XHJcbiAgICAgICAgaWYgKGV2dC5maWVsZC5lbmRzV2l0aCgnX2UnKSkge1xyXG4gICAgICAgICAgICBpZiAoZXZ0LmNvbnRyb2wgaW5zdGFuY2VvZiBEYXRlVGltZUNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICAgICAgICAgIGV2dC5mb3JtQ29udHJvbHNbZXZ0LmZpZWxkLnJlcGxhY2UoJ19lJywgJ19zJyldLm1heERhdGUgPSBldnQuZXZlbnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZXZ0LmNvbnRyb2wgaW5zdGFuY2VvZiBUZXh0Q29udHJvbFNjaGVtYSAmJiBldnQuY29udHJvbC5kYXRhRm9ybWF0ID09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgICAgICBldnQuZm9ybUNvbnRyb2xzW2V2dC5maWVsZC5yZXBsYWNlKCdfZScsICdfcycpXS5tYXggPSBwYXJzZUludChldnQuZXZlbnQudGFyZ2V0LnZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChldnQuZmllbGQuZW5kc1dpdGgoJ19zJykpIHtcclxuICAgICAgICAgICAgaWYgKGV2dC5jb250cm9sIGluc3RhbmNlb2YgRGF0ZVRpbWVDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgICAgICAgICBldnQuZm9ybUNvbnRyb2xzW2V2dC5maWVsZC5yZXBsYWNlKCdfcycsICdfZScpXS5taW5EYXRlID0gZXZ0LmV2ZW50O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2dC5jb250cm9sIGluc3RhbmNlb2YgVGV4dENvbnRyb2xTY2hlbWEgJiYgZXZ0LmNvbnRyb2wuZGF0YUZvcm1hdCA9PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICAgICAgZXZ0LmZvcm1Db250cm9sc1tldnQuZmllbGQucmVwbGFjZSgnX3MnLCAnX2UnKV0ubWluID0gcGFyc2VJbnQoZXZ0LmV2ZW50LnRhcmdldC52YWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIHRoaXMub25Gb3JtRXZlbnQubmV4dChldnQpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2xpY2soZXZ0KSB7XHJcbiAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGV2dC5jYW5jZWxCdWJibGUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGhpZGVGb3JtU2VhcmNoKCkge1xyXG4gICAgICAgIHRoaXMuc2hvd0Zvcm0gPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93Rm9ybVNlYXJjaCgpIHtcclxuICAgICAgICB0aGlzLnNob3dGb3JtID0gIXRoaXMuc2hvd0Zvcm07XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlU2F2ZVNldHRpbmcoZmlsdGVycykge1xyXG4gICAgICAgIGxldCBwYXRoTmFtZSA9IGxvY2F0aW9uLnBhdGhuYW1lO1xyXG4gICAgICAgIGlmICh0aGlzLnBhcmVudFNldHRpbmcuc2V0dGluZ0tleSkge1xyXG4gICAgICAgICAgICBwYXRoTmFtZSArPSAnLycgKyB0aGlzLnBhcmVudFNldHRpbmcuc2V0dGluZ0tleTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBmaWx0ZXJzQWxsID0gW107XHJcbiAgICAgICAgbGV0IGNoZWNrRXhpc3QgPSBmYWxzZTtcclxuICAgICAgICBjb25zdCBkYXRhRmlsdGVycyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKENvbUN0eENvbnN0YW50cy5MT0NBTFNUT1JBR0VfS0VZLkFEVkFOQ0VfRklMVEVSKTtcclxuICAgICAgICBpZiAoZGF0YUZpbHRlcnMpIHtcclxuICAgICAgICAgICAgZmlsdGVyc0FsbCA9IEpTT04ucGFyc2UoZGF0YUZpbHRlcnMpO1xyXG4gICAgICAgICAgICBmaWx0ZXJzQWxsLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5wYXRobmFtZSA9PT0gcGF0aE5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmZpbHRlcnMgPSBmaWx0ZXJzO1xyXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrRXhpc3QgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghY2hlY2tFeGlzdCkge1xyXG4gICAgICAgICAgICBmaWx0ZXJzQWxsLnB1c2goeyBwYXRobmFtZTogcGF0aE5hbWUsIGZpbHRlcnMgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShDb21DdHhDb25zdGFudHMuTE9DQUxTVE9SQUdFX0tFWS5BRFZBTkNFX0ZJTFRFUiwgSlNPTi5zdHJpbmdpZnkoZmlsdGVyc0FsbCkpO1xyXG4gICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93U3VjY2VzcygnTMawdSBi4buZIGzhu41jIHRow6BuaCBjw7RuZycpO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZURlbGV0ZVNhdmVTZXR0aW5nKCkge1xyXG4gICAgICAgIGxldCBwYXRoTmFtZSA9IGxvY2F0aW9uLnBhdGhuYW1lO1xyXG4gICAgICAgIGlmICh0aGlzLnBhcmVudFNldHRpbmcuc2V0dGluZ0tleSkge1xyXG4gICAgICAgICAgICBwYXRoTmFtZSArPSAnLycgKyB0aGlzLnBhcmVudFNldHRpbmcuc2V0dGluZ0tleTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBmaWx0ZXJzQWxsID0gW107XHJcbiAgICAgICAgY29uc3QgZGF0YUZpbHRlcnMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShDb21DdHhDb25zdGFudHMuTE9DQUxTVE9SQUdFX0tFWS5BRFZBTkNFX0ZJTFRFUik7XHJcbiAgICAgICAgaWYgKGRhdGFGaWx0ZXJzKSB7XHJcbiAgICAgICAgICAgIGZpbHRlcnNBbGwgPSBKU09OLnBhcnNlKGRhdGFGaWx0ZXJzKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBmaWx0ZXJzQWxsLmZpbmRJbmRleChwID0+IHAucGF0aG5hbWUgPT0gcGF0aE5hbWUpO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkgZmlsdGVyc0FsbC5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShDb21DdHhDb25zdGFudHMuTE9DQUxTVE9SQUdFX0tFWS5BRFZBTkNFX0ZJTFRFUiwgSlNPTi5zdHJpbmdpZnkoZmlsdGVyc0FsbCkpO1xyXG4gICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ1jDs2EgYuG7mSBs4buNYyDEkcOjIGzGsHUgdGjDoG5oIGPDtG5nJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldFNhdmVkRmlsdGVycygpIHtcclxuICAgICAgICBjb25zdCBkYXRhRmlsdGVycyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKENvbUN0eENvbnN0YW50cy5MT0NBTFNUT1JBR0VfS0VZLkFEVkFOQ0VfRklMVEVSKTtcclxuICAgICAgICB0aGlzLmZpbHRlcl9xdWVyeSA9IFtdO1xyXG4gICAgICAgIGlmIChkYXRhRmlsdGVycykge1xyXG4gICAgICAgICAgICBsZXQgZmlsdGVyczogRmlsdGVyW107XHJcbiAgICAgICAgICAgIGxldCBwYXRoTmFtZSA9IGxvY2F0aW9uLnBhdGhuYW1lO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wYXJlbnRTZXR0aW5nLnNldHRpbmdLZXkpIHtcclxuICAgICAgICAgICAgICAgIHBhdGhOYW1lICs9ICcvJyArIHRoaXMucGFyZW50U2V0dGluZy5zZXR0aW5nS2V5O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJzQWxsID0gSlNPTi5wYXJzZShkYXRhRmlsdGVycyk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsdGVyc0FsbC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IGZpbHRlcnNBbGxbaV07XHJcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5wYXRobmFtZSA9PT0gcGF0aE5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzID0gZWxlbWVudC5maWx0ZXJzO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoZmlsdGVycykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJfcXVlcnkgPSBmaWx0ZXJzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uV2luZG93UmVzaXplKCkge1xyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmFsaWduT3ZlcmxheVRpbWVvdXQpO1xyXG4gICAgICAgIHRoaXMuYWxpZ25PdmVybGF5VGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmFsaWduT3ZlcmxheSgpO1xyXG4gICAgICAgIH0sIDQwMCk7XHJcbiAgICB9XHJcblxyXG4gICAgYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKSB7XHJcbiAgICAgICAgdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyID0gdGhpcy5vbldpbmRvd1Jlc2l6ZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHVuYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcikge1xyXG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyKTtcclxuICAgICAgICAgICAgdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXBwZW5kT3ZlcmxheSgpIHtcclxuICAgICAgICBpZiAodGhpcy5fb3ZlcmxheVBhbmVsKSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5fb3ZlcmxheVBhbmVsKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX292ZXJsYXlQYW5lbC5zdHlsZS56SW5kZXggPSBTdHJpbmcoKytEb21IYW5kbGVyLnppbmRleCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFsaWduT3ZlcmxheSgpIHtcclxuICAgICAgICB0aGlzLmFwcGVuZE1hc2soKTtcclxuICAgICAgICBEb21IYW5kbGVyLmFic29sdXRlUG9zaXRpb24odGhpcy5fb3ZlcmxheVBhbmVsLCB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlc3RvcmVPdmVybGF5QXBwZW5kKCkge1xyXG4gICAgICAgIHRoaXMuX292ZXJsYXlQYW5lbCAmJiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fb3ZlcmxheVBhbmVsKTtcclxuICAgIH1cclxuXHJcbiAgICBvbk92ZXJsYXlIaWRlKCkge1xyXG4gICAgICAgIHRoaXMudW5iaW5kRG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpO1xyXG4gICAgICAgIHRoaXMudW5iaW5kTWFza0NsaWNrTGlzdGVuZXIoKTtcclxuICAgICAgICB0aGlzLl9vdmVybGF5UGFuZWwgPSBudWxsO1xyXG4gICAgICAgIHRoaXMucmVtb3ZlTWFzaygpO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUFkdmFuY2VTZWFyY2hQYW5lbFJlbmRlcmVkKCkge1xyXG4gICAgICAgIHRoaXMuX3NlYXJjaEJveE1heEhlaWdodCA9IGBjYWxjKDEwMHZoIC0gJHt0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgMTUwfXB4KWA7XHJcbiAgICB9XHJcblxyXG4gICAgb25PdmVybGF5QW5pbWF0aW9uU3RhcnQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XHJcbiAgICAgICAgc3dpdGNoIChldmVudC50b1N0YXRlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ3Zpc2libGUnOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5fb3ZlcmxheVBhbmVsID0gZXZlbnQuZWxlbWVudDtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kT3ZlcmxheSgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbk92ZXJsYXkoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgY2FzZSAndm9pZCc6XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uT3ZlcmxheUhpZGUoKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB1bmJpbmRNYXNrQ2xpY2tMaXN0ZW5lcigpIHtcclxuICAgICAgICBpZiAodGhpcy5tYXNrQ2xpY2tMaXN0ZW5lcikge1xyXG4gICAgICAgICAgICB0aGlzLm1hc2tDbGlja0xpc3RlbmVyKCk7XHJcbiAgICAgICAgICAgIHRoaXMubWFza0NsaWNrTGlzdGVuZXIgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhcHBlbmRNYXNrKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5tYXNrT3ZlcmxheSkge1xyXG4gICAgICAgICAgICB0aGlzLm1hc2tPdmVybGF5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgICAgIHRoaXMubWFza092ZXJsYXkuc3R5bGUuekluZGV4ID0gU3RyaW5nKHBhcnNlSW50KHRoaXMuX292ZXJsYXlQYW5lbC5zdHlsZS56SW5kZXgpIC0gMSk7XHJcbiAgICAgICAgICAgIERvbUhhbmRsZXIuYWRkQ2xhc3ModGhpcy5tYXNrT3ZlcmxheSwgJ2FkdmFuY2Utc2VhcmNoLW1hc2stb3ZlcmxheScpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5tYXNrQ2xpY2tMaXN0ZW5lciA9IHRoaXMuX3JlbmRlcmVyLmxpc3Rlbih0aGlzLm1hc2tPdmVybGF5LCAnY2xpY2snLCAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlRm9ybVNlYXJjaCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVNYXNrKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMubWFza092ZXJsYXkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVNYXNrKCkge1xyXG4gICAgICAgIGlmICh0aGlzLm1hc2tPdmVybGF5KSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5tYXNrT3ZlcmxheSk7XHJcbiAgICAgICAgICAgIHRoaXMudW5iaW5kTWFza0NsaWNrTGlzdGVuZXIoKTtcclxuICAgICAgICAgICAgdGhpcy5tYXNrT3ZlcmxheSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcblxyXG4gICAgICAgIHRoaXMucmVzdG9yZU92ZXJsYXlBcHBlbmQoKTtcclxuICAgICAgICB0aGlzLm9uT3ZlcmxheUhpZGUoKTtcclxuICAgIH1cclxufVxyXG4iXX0=
498
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZS1zZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvY3J1ZC9hZHZhbmNlLXNlYXJjaC9hZHZhbmNlLXNlYXJjaC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQWtCLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUYsT0FBTyxFQUVILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUVyRSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUNwQixZQUFZLEVBQ1osZUFBZSxFQUNmLHFCQUFxQixFQUNyQixxQkFBcUIsRUFFckIsUUFBUSxFQUNSLGlCQUFpQixFQUNwQixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFF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LFNBQVMsU0FBQyxjQUFjOzRCQUV4QixLQUFLO3lCQUVMLEtBQUs7MENBV0wsS0FBSztzQkFDTCxLQUFLO3VCQUVMLE1BQU07MEJBQ04sTUFBTTtxQkFDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgQW5pbWF0aW9uRXZlbnQsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7XHJcbiAgICBBZnRlclZpZXdJbml0LFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEluamVjdG9yLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkluaXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBSZW5kZXJlcjIsXHJcbiAgICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlIH0gZnJvbSAnbmd4LWRldmljZS1kZXRlY3Rvcic7XHJcbmltcG9ydCB7IERvbUhhbmRsZXIgfSBmcm9tICd0bi1jdXN0b20tcHJpbWVuZy9kb20nO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9iYXNlL2NvbXBvbmVudC1iYXNlJztcclxuaW1wb3J0IHsgSUNvbXBvbmVudEJhc2UgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Jhc2UvY29tcG9uZW50LWJhc2UuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtcclxuICAgIEFkdmFuY2VTZWFyY2hEYXRhLFxyXG4gICAgQWR2YW5jZVNlYXJjaFNldHRpbmcsXHJcbiAgICBDcnVkRm9ybURhdGEsXHJcbiAgICBDcnVkTGlzdFNldHRpbmcsXHJcbiAgICBEYXRlVGltZUNvbnRyb2xTY2hlbWEsXHJcbiAgICBEcm9wZG93bkNvbnRyb2xTY2hlbWEsXHJcbiAgICBGb3JtU2NoZW1hQmFzZSxcclxuICAgIE9wZXJhdG9yLFxyXG4gICAgVGV4dENvbnRyb2xTY2hlbWFcclxufSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuaW1wb3J0IHsgRmlsdGVyIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dyaWQtaW5mbyc7XHJcbmltcG9ydCB7IEN1c3RvbVJvdXRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jdXN0b20tcm91dGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2NhbENhY2hlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xvY2FsQ2FjaGUuc2VydmljZSc7XHJcbmltcG9ydCB7IE1vZHVsZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tb2R1bGUtY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOb3RpZmllclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9ub3RpZmllci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2VhcmNoSW5mbyB9IGZyb20gJy4uLy4uL21vZGVscy9zZWFyY2gnO1xyXG5pbXBvcnQgeyBDcnVkRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL2NydWQtZm9ybS9jcnVkLWZvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tQ3R4Q29uc3RhbnRzIH0gZnJvbSAnLi8uLi8uLi8uLi9jb25maWdzL2NvbXBvbmVudC1jb250ZXh0LmNvbnN0YW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBjb21wb25lbnQtc2VsZWN0b3JcclxuICAgIHNlbGVjdG9yOiAnYWR2YW5jZS1zZWFyY2gnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FkdmFuY2Utc2VhcmNoLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2FkdmFuY2Utc2VhcmNoLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtDb21wb25lbnRDb250ZXh0U2VydmljZV0sXHJcbiAgICBhbmltYXRpb25zOiBbXHJcbiAgICAgICAgdHJpZ2dlcignb3ZlcmxheUFuaW1hdGlvbicsIFtcclxuICAgICAgICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xyXG4gICAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICdzY2FsZVkoMC44KScgfSksXHJcbiAgICAgICAgICAgICAgICBhbmltYXRlKCd7e3Nob3dUcmFuc2l0aW9uUGFyYW1zfX0nKVxyXG4gICAgICAgICAgICBdKSxcclxuICAgICAgICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xyXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgne3toaWRlVHJhbnNpdGlvblBhcmFtc319Jywgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKVxyXG4gICAgICAgICAgICBdKVxyXG4gICAgICAgIF0pXHJcbiAgICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWR2YW5jZVNlYXJjaENvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEJhc2UgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIElDb21wb25lbnRCYXNlIHtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdlbCcpIGVsOiBFbGVtZW50UmVmO1xyXG4gICAgQFZpZXdDaGlsZCgnY3J1ZEZvcm0nKSBjcnVkRm9ybTogQ3J1ZEZvcm1Db21wb25lbnQ7XHJcbiAgICBAVmlld0NoaWxkKCdvdmVybGF5UGFuZWwnKSBvdmVybGF5UGFuZWw6IEVsZW1lbnRSZWY7XHJcblxyXG4gICAgQElucHV0KCkgcGFyZW50U2V0dGluZzogQ3J1ZExpc3RTZXR0aW5nO1xyXG4gICAgX3NlYXJjaEluZm86IFNlYXJjaEluZm87XHJcbiAgICBASW5wdXQoKSBzZXQgc2VhcmNoSW5mbyh2YWx1ZTogU2VhcmNoSW5mbykge1xyXG4gICAgICAgIHRoaXMuX3NlYXJjaEluZm8gPSB2YWx1ZTtcclxuICAgICAgICBpZiAodGhpcy5fc2VhcmNoSW5mbyAmJiB0aGlzLl9zZWFyY2hJbmZvLnNjaGVtYSkge1xyXG4gICAgICAgICAgICB0aGlzLmluaXREYXRhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBnZXQgc2VhcmNoSW5mbygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2VhcmNoSW5mbztcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKSBhbGxvd0xvYWREYXRhV2hlblBhcmVudE51bGwgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEBPdXRwdXQoKSBvblNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIG9uRm9ybUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25Jbml0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICAgX292ZXJsYXlQYW5lbDogSFRNTERpdkVsZW1lbnQ7XHJcbiAgICBvdmVybGF5U2hvd1RyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgPSAnLjEycyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSc7XHJcbiAgICBvdmVybGF5SGlkZVRyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgPSAnLjFzIGxpbmVhcic7XHJcbiAgICBhbGlnbk92ZXJsYXlUaW1lb3V0ID0gbnVsbDtcclxuXHJcbiAgICBtYXNrT3ZlcmxheTogSFRNTERpdkVsZW1lbnQ7XHJcbiAgICBtYXNrQ2xpY2tMaXN0ZW5lcjogRnVuY3Rpb247XHJcblxyXG4gICAgZG9jdW1lbnRSZXNpemVMaXN0ZW5lcjogYW55O1xyXG5cclxuICAgIGtleXdvcmQgPSAnJztcclxuICAgIG1vZGVsOiBBZHZhbmNlU2VhcmNoRGF0YSA9IG5ldyBBZHZhbmNlU2VhcmNoRGF0YSgpO1xyXG4gICAgbW9kZWxDcnVkRm9ybTogQ3J1ZEZvcm1EYXRhID0gbmV3IENydWRGb3JtRGF0YSgpO1xyXG4gICAgc2V0dGluZzogQWR2YW5jZVNlYXJjaFNldHRpbmcgPSBuZXcgQWR2YW5jZVNlYXJjaFNldHRpbmcoKTtcclxuICAgIHJlYWR5ID0gZmFsc2U7XHJcbiAgICBuZWVkQ2xlYXJUeXBlZFZhbHVlcyA9IHRydWU7XHJcbiAgICBzbmFwU2hvdCA9ICcnO1xyXG5cclxuICAgIGZpZWxkUGFyZW50TWFwOiBhbnkgPSB7fTtcclxuXHJcbiAgICB0YXJnZXQ6IGFueTtcclxuXHJcbiAgICBzaG93Rm9ybSA9IGZhbHNlO1xyXG4gICAgc2VhcmNoQm94VG9vbHRpcDtcclxuXHJcbiAgICBmaWx0ZXJfZm9ybTogRmlsdGVyW10gPSBbXTsgLy8gU2VhcmNoIG7hur91IHPhu60gZOG7pW5nIGNydWQgKEtoYWkgYsOhbyB0ZW1wbGF0ZSBmaWx0ZXIpXHJcbiAgICBmaWx0ZXJfa2V5d29yZDogRmlsdGVyW10gPSBbXTsgLy8gU2VhcmNoIHThu6sga2jDs2FcclxuICAgIGZpbHRlcl9xdWVyeTogRmlsdGVyW10gPSBbXTsgLy8gU2VhcmNoIG7hur91IHPhu60gZOG7pW5nIHF1ZXJ5IGJ1aWxkZXJcclxuXHJcbiAgICBfc2VhcmNoQm94TWF4SGVpZ2h0O1xyXG4gICAgZW52aXJvbm1lbnQ7XHJcbiAgICBoZW1pc0FkdmFuY2VTZWFyY2g6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIF9jdXN0b21Sb3V0ZXJTZXJ2aWNlOiBDdXN0b21Sb3V0ZXJTZXJ2aWNlLFxyXG4gICAgICAgIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJpdmF0ZSBfbm90aWZpZXJTZXJ2aWNlOiBOb3RpZmllclNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIF9kZXZpY2VEZXRlY3RvclNlcnZpY2U6IERldmljZURldGVjdG9yU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9sb2NhbENhY2hlU2VydmljZTogTG9jYWxDYWNoZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgICAgICBwcml2YXRlIF9tb2R1bGVDb25maWc6IE1vZHVsZUNvbmZpZ1NlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKF9pbmplY3Rvcik7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5kYXRhID0ge307XHJcbiAgICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IHRoaXMuX21vZHVsZUNvbmZpZy5nZXRDb25maWcoKS5lbnZpcm9ubWVudDtcclxuICAgICAgICB0aGlzLmhlbWlzQWR2YW5jZVNlYXJjaCA9IHRoaXMuZW52aXJvbm1lbnQ/LmFwcE1ldGFkYXRhPy5tYWluPy5oZW1pc0FkdmFuY2VTZWFyY2ggPz8gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5pbml0RGF0YSgpO1xyXG4gICAgICAgIHRoaXMuZ2V0U2F2ZWRGaWx0ZXJzKCk7XHJcbiAgICAgICAgdGhpcy5vbkluaXQuZW1pdCh0aGlzLmdldEZpbHRlcnMoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgaW5pdERhdGEoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNlYXJjaEluZm8gfHwgdGhpcy5zZWFyY2hJbmZvLnNjaGVtYSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZWFyY2hCb3hUb29sdGlwID0gdGhpcy5zZWFyY2hJbmZvLnRvb2x0aXBTZWFyY2hUZXh0O1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5zY2hlbWEgPSA8Rm9ybVNjaGVtYUJhc2VbXT4odGhpcy5zZWFyY2hJbmZvLnNjaGVtYSk7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmZpZWxkRHJvcGRvd24gPSB0aGlzLnNlYXJjaEluZm8uZmllbGREcm9wZG93bjtcclxuICAgICAgICB0aGlzLnNldHRpbmcua2VlcEluaXRTZWFyY2hEYXRhTm90TnVsbCA9IHRydWU7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5wYXJlbnRTZXR0aW5nLmZ1bmN0aW9uLm1vZGlmeUFkdmFuY2VTZWFjaE1vZGVsKHRoaXMubW9kZWwsIHRoaXMuc2V0dGluZyk7XHJcblxyXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMubW9kZWwuaW5pdERhdGEpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1vZGVsLmluaXREYXRhW2tleV0gPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlbC5kYXRhW2tleV0gPSB0aGlzLm1vZGVsLmluaXREYXRhW2tleV0oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubW9kZWwuZGF0YVtrZXldID0gdGhpcy5tb2RlbC5pbml0RGF0YVtrZXldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuc2V0dGluZy5zY2hlbWEuZm9yRWFjaChzY2hlbWEgPT4ge1xyXG4gICAgICAgICAgICBpZiAoc2NoZW1hIGluc3RhbmNlb2YgRHJvcGRvd25Db250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBfc2NoZW1hID0gPERyb3Bkb3duQ29udHJvbFNjaGVtYT5zY2hlbWE7XHJcbiAgICAgICAgICAgICAgICBfc2NoZW1hLmFmdGVyR2V0RGF0YSA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIV9zY2hlbWEuaXNTZXJ2ZXJMb2FkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1TZWxlY3RlZCA9IF9zY2hlbWEuZGF0YVNvdXJjZS5maW5kKGl0ZW0gPT4gaXRlbS52YWx1ZSA9PSB0aGlzLm1vZGVsLmRhdGFbc2NoZW1hLmZpZWxkXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtU2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW9kZWwuZGF0YVtzY2hlbWEuZmllbGRdID0gaXRlbVNlbGVjdGVkLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIF9zY2hlbWEuYXBwZW5kVG8gPSAnYm9keSc7XHJcbiAgICAgICAgICAgICAgICBfc2NoZW1hLnBhbmVsQ2xhc3MgPSAnZHJvcGRvd24tYWR2cyc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnNldHRpbmcuZGlzYWJsZUNhY2hpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXREYXRhRGVmYXVsdCh0aGlzLnNldHRpbmcuc2NoZW1hKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubW9kZWxDcnVkRm9ybS5kYXRhID0gdGhpcy5tb2RlbC5kYXRhO1xyXG4gICAgICAgIHRoaXMubW9kZWxDcnVkRm9ybS5kYXRhLmtleSA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcclxuICAgICAgICB0aGlzLnJlYWR5ID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBzZXREYXRhRGVmYXVsdChmb3JtU2NoZW1hKSB7XHJcbiAgICAgICAgY29uc3QgZGF0YUNhY2hlID0gdGhpcy5fbG9jYWxDYWNoZVNlcnZpY2UuZ2V0RGF0YURlZmF1bHQoKTtcclxuICAgICAgICBjb25zdCBnZXRTZXR0aW5nRGF0YURlZmF1bHQgPSB0aGlzLl9tb2R1bGVDb25maWcuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuc2V0dGluZ0RhdGFEZWZhdWx0O1xyXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBmb3JtU2NoZW1hKSB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgRHJvcGRvd25Db250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sID0gKDxEcm9wZG93bkNvbnRyb2xTY2hlbWE+aXRlbSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSAoY29udHJvbC5maWVsZCArIChjb250cm9sLnZhbHVlRmllbGQgPT0gJ2lkJyA/ICcnIDogY29udHJvbC52YWx1ZUZpZWxkKSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBkYXRhQ2FjaGVba2V5XTtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9kZWwuZGF0YVtjb250cm9sLmZpZWxkXSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZ2V0U2V0dGluZ0RhdGFEZWZhdWx0KSB7IC8vIGzhuqV5IGPhuqV1IGjDrG5oIGZpZWxkIG1hcFBpbmdcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZE1hcEdldENhY2hlID0gZ2V0U2V0dGluZ0RhdGFEZWZhdWx0W2NvbnRyb2wuZmllbGRdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZE1hcEdldENhY2hlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IChmaWVsZE1hcEdldENhY2hlICsgKGNvbnRyb2wudmFsdWVGaWVsZCA9PSAnaWQnID8gJycgOiBjb250cm9sLnZhbHVlRmllbGQpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBkYXRhQ2FjaGVba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLmRhdGFbY29udHJvbC5maWVsZF0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZGF0YUNhY2hlWyg8Rm9ybVNjaGVtYUJhc2U+aXRlbSkuZmllbGRdO1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb2RlbC5kYXRhWyg8Rm9ybVNjaGVtYUJhc2U+aXRlbSkuZmllbGRdID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIG9uQ2hhbmdlZChldnQpIHtcclxuICAgICAgICB0aGlzLmZpbHRlcl9rZXl3b3JkID0gW107XHJcbiAgICAgICAgaWYgKHRoaXMua2V5d29yZCAhPSBudWxsICYmIHRoaXMua2V5d29yZCAhPSAnJyAmJiB0aGlzLnBhcmVudFNldHRpbmcuZmllbGRTZWFyY2hUZXh0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgZmlsdGVyS2V5V29yayA9IG5ldyBGaWx0ZXIoe1xyXG4gICAgICAgICAgICAgICAgbG9naWM6ICdvcicsXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbXVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWVLZXlXb3JrID0gSlNPTi5zdHJpbmdpZnkodGhpcy5rZXl3b3JkKTtcclxuICAgICAgICAgICAgdGhpcy5wYXJlbnRTZXR0aW5nLmZpZWxkU2VhcmNoVGV4dC5mb3JFYWNoKGZpZWxkID0+IHtcclxuICAgICAgICAgICAgICAgIGZpbHRlcktleVdvcmsuZmlsdGVycy5wdXNoKG5ldyBGaWx0ZXIoe1xyXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5jb250YWluLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZUtleVdvcmtcclxuICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmIChmaWx0ZXJLZXlXb3JrLmZpbHRlcnMubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyX2tleXdvcmQucHVzaChmaWx0ZXJLZXlXb3JrLmZpbHRlcnNbMF0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJfa2V5d29yZC5wdXNoKGZpbHRlcktleVdvcmspO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubWVyZ2VGaWx0ZXJBbmRFbWl0KCk7XHJcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Fc2MoZXZ0KSB7XHJcbiAgICAgICAgdGhpcy5jbGVhcktleXdvcmQoKTtcclxuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhcktleXdvcmQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMua2V5d29yZCAhPSBudWxsICYmIHRoaXMua2V5d29yZCAhPT0gJycpIHtcclxuICAgICAgICAgICAgdGhpcy5rZXl3b3JkID0gJyc7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyX2tleXdvcmQgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5tZXJnZUZpbHRlckFuZEVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25Eb1NlYXJjaGluZygpIHtcclxuICAgICAgICB0aGlzLm9uU2VhcmNoaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlU2VhcmNoQnVpbGRlcihldnQpIHtcclxuICAgICAgICB0aGlzLmZpbHRlcl9xdWVyeSA9IGV2dDtcclxuICAgICAgICB0aGlzLm1lcmdlRmlsdGVyQW5kRW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgb25TZWFyY2hpbmcoKSB7XHJcbiAgICAgICAgY29uc3QgaW50ZXJuYWxGb3JtU2NoZW1hID0gdGhpcy5zZXR0aW5nLnNjaGVtYTtcclxuICAgICAgICBjb25zdCBtb2RlbEZpbHRlciA9IHRoaXMubW9kZWxDcnVkRm9ybS5kYXRhO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zZXR0aW5nLmtlZXBJbml0U2VhcmNoRGF0YU5vdE51bGwpIHtcclxuICAgICAgICAgICAgLy8gUmVwbGFjZSBuaOG7r25nIGZpZWxkIGLhu4sgbnVsbCBi4bqxbmcgdmFsdWUgZmlsdGVyIG3hurdjIMSR4buLbmhcclxuICAgICAgICAgICAgT2JqZWN0LmtleXModGhpcy5tb2RlbC5pbml0RGF0YSkuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKG1vZGVsRmlsdGVyW2tleV0gPT0gbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgIHx8IG1vZGVsRmlsdGVyW2tleV0gPT0gJycpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMubW9kZWwuaW5pdERhdGFba2V5XSA9PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsRmlsdGVyW2tleV0gPSB0aGlzLm1vZGVsLmluaXREYXRhW2tleV0oKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsRmlsdGVyW2tleV0gPSB0aGlzLm1vZGVsLmluaXREYXRhW2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChjb25zdCBpbmRleCBpbiBpbnRlcm5hbEZvcm1TY2hlbWEpIHtcclxuICAgICAgICAgICAgaWYgKGludGVybmFsRm9ybVNjaGVtYVtpbmRleF0gaW5zdGFuY2VvZiBEYXRlVGltZUNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gaW50ZXJuYWxGb3JtU2NoZW1hW2luZGV4XS5maWVsZDtcclxuICAgICAgICAgICAgICAgIGlmIChtb2RlbEZpbHRlcltmaWVsZF0gPT09ICcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbW9kZWxGaWx0ZXJbZmllbGRdID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnBhcmVudFNldHRpbmcuZmlsdGVyVGVtcGxhdGVBZHZzID09IG51bGwpIHJldHVybiBbXTtcclxuXHJcbiAgICAgICAgdGhpcy5kZVF1eUFuZEVtaXRTZWFyY2goKTtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhclNlYXJjaChldnQpIHtcclxuICAgICAgICBjb25zdCBpbnRlcm5hbEZvcm1TY2hlbWEgPSB0aGlzLnNldHRpbmcuc2NoZW1hO1xyXG4gICAgICAgIGNvbnN0IG1vZGVsRmlsdGVyID0gdGhpcy5tb2RlbENydWRGb3JtLmRhdGE7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW50ZXJuYWxGb3JtU2NoZW1hKSB7XHJcbiAgICAgICAgICAgIGlmIChpbnRlcm5hbEZvcm1TY2hlbWFba2V5XSBpbnN0YW5jZW9mIERhdGVUaW1lQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgICAgICAgICAgbW9kZWxGaWx0ZXJbaW50ZXJuYWxGb3JtU2NoZW1hW2tleV0uZmllbGRdID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbW9kZWxGaWx0ZXJbaW50ZXJuYWxGb3JtU2NoZW1hW2tleV0uZmllbGRdID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRlUXV5QW5kRW1pdFNlYXJjaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlUXV5QW5kRW1pdFNlYXJjaCgpIHtcclxuICAgICAgICBjb25zdCB0ZW1wbGF0ZUZpbHRlciA9IHRoaXMucGFyZW50U2V0dGluZy5maWx0ZXJUZW1wbGF0ZUFkdnM7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fY3J1ZFNlcnZpY2UuZ2V0RmlsdGVyRnJvbVRlbXBsYXRlKHRlbXBsYXRlRmlsdGVyLCB0aGlzLm1vZGVsQ3J1ZEZvcm0uZGF0YSk7XHJcbiAgICAgICAgdGhpcy5oaWRlRm9ybVNlYXJjaCgpO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyX2Zvcm0gPSByZXN1bHQ7XHJcbiAgICAgICAgdGhpcy5tZXJnZUZpbHRlckFuZEVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRGaWx0ZXJzKCkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdDogRmlsdGVyW10gPSBbXTtcclxuICAgICAgICBpZiAodGhpcy5maWx0ZXJfa2V5d29yZCkge1xyXG4gICAgICAgICAgICByZXN1bHQucHVzaCguLi50aGlzLmZpbHRlcl9rZXl3b3JkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyX2Zvcm0pIHtcclxuICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4udGhpcy5maWx0ZXJfZm9ybSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmZpbHRlcl9xdWVyeSkge1xyXG4gICAgICAgICAgICByZXN1bHQucHVzaCguLi50aGlzLmZpbHRlcl9xdWVyeSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgbWVyZ2VGaWx0ZXJBbmRFbWl0KCkge1xyXG4gICAgICAgIHRoaXMub25TZWFyY2gubmV4dCh0aGlzLmdldEZpbHRlcnMoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Gb3JtU2hvdyhldmVudCkge1xyXG4gICAgICAgIHRoaXMuc25hcFNob3QgPSBKU09OLnN0cmluZ2lmeSh0aGlzLm1vZGVsLmRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrRml4ZWRQb3NpdGlvbihlbGVtKSB7XHJcbiAgICAgICAgd2hpbGUgKGVsZW0gJiYgZWxlbS50YWdOYW1lICE9PSAnQk9EWScpIHtcclxuICAgICAgICAgICAgY29uc3Qgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtKTtcclxuICAgICAgICAgICAgaWYgKHN0eWxlLnBvc2l0aW9uICYmIHN0eWxlLnBvc2l0aW9uLnRvTG93ZXJDYXNlKCkgPT09ICdmaXhlZCcpIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICBlbGVtID0gZWxlbS5wYXJlbnROb2RlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Q29vcmRzKGVsZW0pIHtcclxuICAgICAgICBjb25zdCBpc0ZpeGVkID0gdGhpcy5jaGVja0ZpeGVkUG9zaXRpb24oZWxlbSk7XHJcbiAgICAgICAgY29uc3QgYm94ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgICAgICAgY29uc3QgYm9keSA9IGRvY3VtZW50LmJvZHk7XHJcbiAgICAgICAgY29uc3QgZG9jRWwgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XHJcblxyXG4gICAgICAgIGNvbnN0IHNjcm9sbFRvcCA9IGlzRml4ZWQgPyAwIDogd2luZG93LnBhZ2VZT2Zmc2V0IHx8IGRvY0VsLnNjcm9sbFRvcCB8fCBib2R5LnNjcm9sbFRvcDtcclxuICAgICAgICBjb25zdCBzY3JvbGxMZWZ0ID0gaXNGaXhlZCA/IDAgOiB3aW5kb3cucGFnZVhPZmZzZXQgfHwgZG9jRWwuc2Nyb2xsTGVmdCB8fCBib2R5LnNjcm9sbExlZnQ7XHJcblxyXG4gICAgICAgIGNvbnN0IGNsaWVudFRvcCA9IGRvY0VsLmNsaWVudFRvcCB8fCBib2R5LmNsaWVudFRvcCB8fCAwO1xyXG4gICAgICAgIGNvbnN0IGNsaWVudExlZnQgPSBkb2NFbC5jbGllbnRMZWZ0IHx8IGJvZHkuY2xpZW50TGVmdCB8fCAwO1xyXG5cclxuICAgICAgICBjb25zdCB0b3AgPSBib3gudG9wICsgc2Nyb2xsVG9wIC0gY2xpZW50VG9wO1xyXG4gICAgICAgIGNvbnN0IGxlZnQgPSBib3gubGVmdCArIHNjcm9sbExlZnQgLSBjbGllbnRMZWZ0O1xyXG5cclxuICAgICAgICByZXR1cm4geyB0b3A6IE1hdGgucm91bmQodG9wKSwgbGVmdDogTWF0aC5yb3VuZChsZWZ0KSB9O1xyXG4gICAgfVxyXG5cclxuICAgIG9uRm9ybUhpZGUoZXZ0KSB7XHJcbiAgICAgICAgaWYgKHRoaXMubmVlZENsZWFyVHlwZWRWYWx1ZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgdGVtcCA9IEpTT04ucGFyc2UodGhpcy5zbmFwU2hvdCk7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgcCBpbiB0aGlzLm1vZGVsLmRhdGEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubW9kZWwuZGF0YVtwXSA9IHRlbXBbcF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5uZWVkQ2xlYXJUeXBlZFZhbHVlcyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgb25Gb3JtRXZlbnRIYW5kbGVyKGV2dCwgc2VhcmNoTW9kZWwpIHtcclxuICAgICAgICBldnQuZGF0YVNlYXJjaE1vZGVsID0gc2VhcmNoTW9kZWw7XHJcbiAgICAgICAgLy8gaWYgKGV2dC5ldmVudFR5cGUgPT0gXCJjaGFuZ2VcIikge1xyXG4gICAgICAgIGlmIChldnQuZmllbGQuZW5kc1dpdGgoJ19lJykpIHtcclxuICAgICAgICAgICAgaWYgKGV2dC5jb250cm9sIGluc3RhbmNlb2YgRGF0ZVRpbWVDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgICAgICAgICBldnQuZm9ybUNvbnRyb2xzW2V2dC5maWVsZC5yZXBsYWNlKCdfZScsICdfcycpXS5tYXhEYXRlID0gZXZ0LmV2ZW50O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2dC5jb250cm9sIGluc3RhbmNlb2YgVGV4dENvbnRyb2xTY2hlbWEgJiYgZXZ0LmNvbnRyb2wuZGF0YUZvcm1hdCA9PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICAgICAgZXZ0LmZvcm1Db250cm9sc1tldnQuZmllbGQucmVwbGFjZSgnX2UnLCAnX3MnKV0ubWF4ID0gcGFyc2VJbnQoZXZ0LmV2ZW50LnRhcmdldC52YWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZXZ0LmZpZWxkLmVuZHNXaXRoKCdfcycpKSB7XHJcbiAgICAgICAgICAgIGlmIChldnQuY29udHJvbCBpbnN0YW5jZW9mIERhdGVUaW1lQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgICAgICAgICAgZXZ0LmZvcm1Db250cm9sc1tldnQuZmllbGQucmVwbGFjZSgnX3MnLCAnX2UnKV0ubWluRGF0ZSA9IGV2dC5ldmVudDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChldnQuY29udHJvbCBpbnN0YW5jZW9mIFRleHRDb250cm9sU2NoZW1hICYmIGV2dC5jb250cm9sLmRhdGFGb3JtYXQgPT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgICAgIGV2dC5mb3JtQ29udHJvbHNbZXZ0LmZpZWxkLnJlcGxhY2UoJ19zJywgJ19lJyldLm1pbiA9IHBhcnNlSW50KGV2dC5ldmVudC50YXJnZXQudmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIH1cclxuICAgICAgICB0aGlzLm9uRm9ybUV2ZW50Lm5leHQoZXZ0KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNsaWNrKGV2dCkge1xyXG4gICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICBldnQuY2FuY2VsQnViYmxlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBoaWRlRm9ybVNlYXJjaCgpIHtcclxuICAgICAgICB0aGlzLnNob3dGb3JtID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd0Zvcm1TZWFyY2goKSB7XHJcbiAgICAgICAgdGhpcy5zaG93Rm9ybSA9ICF0aGlzLnNob3dGb3JtO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZVNhdmVTZXR0aW5nKGZpbHRlcnMpIHtcclxuICAgICAgICBsZXQgcGF0aE5hbWUgPSBsb2NhdGlvbi5wYXRobmFtZTtcclxuICAgICAgICBpZiAodGhpcy5wYXJlbnRTZXR0aW5nLnNldHRpbmdLZXkpIHtcclxuICAgICAgICAgICAgcGF0aE5hbWUgKz0gJy8nICsgdGhpcy5wYXJlbnRTZXR0aW5nLnNldHRpbmdLZXk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgZmlsdGVyc0FsbCA9IFtdO1xyXG4gICAgICAgIGxldCBjaGVja0V4aXN0ID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3QgZGF0YUZpbHRlcnMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShDb21DdHhDb25zdGFudHMuTE9DQUxTVE9SQUdFX0tFWS5BRFZBTkNFX0ZJTFRFUik7XHJcbiAgICAgICAgaWYgKGRhdGFGaWx0ZXJzKSB7XHJcbiAgICAgICAgICAgIGZpbHRlcnNBbGwgPSBKU09OLnBhcnNlKGRhdGFGaWx0ZXJzKTtcclxuICAgICAgICAgICAgZmlsdGVyc0FsbC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQucGF0aG5hbWUgPT09IHBhdGhOYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5maWx0ZXJzID0gZmlsdGVycztcclxuICAgICAgICAgICAgICAgICAgICBjaGVja0V4aXN0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIWNoZWNrRXhpc3QpIHtcclxuICAgICAgICAgICAgZmlsdGVyc0FsbC5wdXNoKHsgcGF0aG5hbWU6IHBhdGhOYW1lLCBmaWx0ZXJzIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oQ29tQ3R4Q29uc3RhbnRzLkxPQ0FMU1RPUkFHRV9LRVkuQURWQU5DRV9GSUxURVIsIEpTT04uc3RyaW5naWZ5KGZpbHRlcnNBbGwpKTtcclxuICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ0zGsHUgYuG7mSBs4buNYyB0aMOgbmggY8O0bmcnKTtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVEZWxldGVTYXZlU2V0dGluZygpIHtcclxuICAgICAgICBsZXQgcGF0aE5hbWUgPSBsb2NhdGlvbi5wYXRobmFtZTtcclxuICAgICAgICBpZiAodGhpcy5wYXJlbnRTZXR0aW5nLnNldHRpbmdLZXkpIHtcclxuICAgICAgICAgICAgcGF0aE5hbWUgKz0gJy8nICsgdGhpcy5wYXJlbnRTZXR0aW5nLnNldHRpbmdLZXk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgZmlsdGVyc0FsbCA9IFtdO1xyXG4gICAgICAgIGNvbnN0IGRhdGFGaWx0ZXJzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oQ29tQ3R4Q29uc3RhbnRzLkxPQ0FMU1RPUkFHRV9LRVkuQURWQU5DRV9GSUxURVIpO1xyXG4gICAgICAgIGlmIChkYXRhRmlsdGVycykge1xyXG4gICAgICAgICAgICBmaWx0ZXJzQWxsID0gSlNPTi5wYXJzZShkYXRhRmlsdGVycyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gZmlsdGVyc0FsbC5maW5kSW5kZXgocCA9PiBwLnBhdGhuYW1lID09IHBhdGhOYW1lKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIGZpbHRlcnNBbGwuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oQ29tQ3R4Q29uc3RhbnRzLkxPQ0FMU1RPUkFHRV9LRVkuQURWQU5DRV9GSUxURVIsIEpTT04uc3RyaW5naWZ5KGZpbHRlcnNBbGwpKTtcclxuICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dTdWNjZXNzKCdYw7NhIGLhu5kgbOG7jWMgxJHDoyBsxrB1IHRow6BuaCBjw7RuZycpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRTYXZlZEZpbHRlcnMoKSB7XHJcbiAgICAgICAgY29uc3QgZGF0YUZpbHRlcnMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShDb21DdHhDb25zdGFudHMuTE9DQUxTVE9SQUdFX0tFWS5BRFZBTkNFX0ZJTFRFUik7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJfcXVlcnkgPSBbXTtcclxuICAgICAgICBpZiAoZGF0YUZpbHRlcnMpIHtcclxuICAgICAgICAgICAgbGV0IGZpbHRlcnM6IEZpbHRlcltdO1xyXG4gICAgICAgICAgICBsZXQgcGF0aE5hbWUgPSBsb2NhdGlvbi5wYXRobmFtZTtcclxuICAgICAgICAgICAgaWYgKHRoaXMucGFyZW50U2V0dGluZy5zZXR0aW5nS2V5KSB7XHJcbiAgICAgICAgICAgICAgICBwYXRoTmFtZSArPSAnLycgKyB0aGlzLnBhcmVudFNldHRpbmcuc2V0dGluZ0tleTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgZmlsdGVyc0FsbCA9IEpTT04ucGFyc2UoZGF0YUZpbHRlcnMpO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbHRlcnNBbGwubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBmaWx0ZXJzQWxsW2ldO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQucGF0aG5hbWUgPT09IHBhdGhOYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVycyA9IGVsZW1lbnQuZmlsdGVycztcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGZpbHRlcnMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyX3F1ZXJ5ID0gZmlsdGVycztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbldpbmRvd1Jlc2l6ZSgpIHtcclxuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5hbGlnbk92ZXJsYXlUaW1lb3V0KTtcclxuICAgICAgICB0aGlzLmFsaWduT3ZlcmxheVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5hbGlnbk92ZXJsYXkoKTtcclxuICAgICAgICB9LCA0MDApO1xyXG4gICAgfVxyXG5cclxuICAgIGJpbmREb2N1bWVudFJlc2l6ZUxpc3RlbmVyKCkge1xyXG4gICAgICAgIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lciA9IHRoaXMub25XaW5kb3dSZXNpemUuYmluZCh0aGlzKTtcclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyKTtcclxuICAgIH1cclxuXHJcbiAgICB1bmJpbmREb2N1bWVudFJlc2l6ZUxpc3RlbmVyKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIpIHtcclxuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcik7XHJcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lciA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFwcGVuZE92ZXJsYXkoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX292ZXJsYXlQYW5lbCkge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuX292ZXJsYXlQYW5lbCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5UGFuZWwuc3R5bGUuekluZGV4ID0gU3RyaW5nKCsrRG9tSGFuZGxlci56aW5kZXgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhbGlnbk92ZXJsYXkoKSB7XHJcbiAgICAgICAgdGhpcy5hcHBlbmRNYXNrKCk7XHJcbiAgICAgICAgRG9tSGFuZGxlci5hYnNvbHV0ZVBvc2l0aW9uKHRoaXMuX292ZXJsYXlQYW5lbCwgdGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICByZXN0b3JlT3ZlcmxheUFwcGVuZCgpIHtcclxuICAgICAgICB0aGlzLl9vdmVybGF5UGFuZWwgJiYgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX292ZXJsYXlQYW5lbCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25PdmVybGF5SGlkZSgpIHtcclxuICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKTtcclxuICAgICAgICB0aGlzLnVuYmluZE1hc2tDbGlja0xpc3RlbmVyKCk7XHJcbiAgICAgICAgdGhpcy5fb3ZlcmxheVBhbmVsID0gbnVsbDtcclxuICAgICAgICB0aGlzLnJlbW92ZU1hc2soKTtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVBZHZhbmNlU2VhcmNoUGFuZWxSZW5kZXJlZCgpIHtcclxuICAgICAgICB0aGlzLl9zZWFyY2hCb3hNYXhIZWlnaHQgPSBgY2FsYygxMDB2aCAtICR7dGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIDE1MH1weClgO1xyXG4gICAgfVxyXG5cclxuICAgIG9uT3ZlcmxheUFuaW1hdGlvblN0YXJ0KGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xyXG4gICAgICAgIHN3aXRjaCAoZXZlbnQudG9TdGF0ZSkge1xyXG4gICAgICAgICAgICBjYXNlICd2aXNpYmxlJzpcclxuICAgICAgICAgICAgICAgIHRoaXMuX292ZXJsYXlQYW5lbCA9IGV2ZW50LmVsZW1lbnQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZE92ZXJsYXkoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25PdmVybGF5KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJpbmREb2N1bWVudFJlc2l6ZUxpc3RlbmVyKCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ3ZvaWQnOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5vbk92ZXJsYXlIaWRlKCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdW5iaW5kTWFza0NsaWNrTGlzdGVuZXIoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubWFza0NsaWNrTGlzdGVuZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5tYXNrQ2xpY2tMaXN0ZW5lcigpO1xyXG4gICAgICAgICAgICB0aGlzLm1hc2tDbGlja0xpc3RlbmVyID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXBwZW5kTWFzaygpIHtcclxuICAgICAgICBpZiAoIXRoaXMubWFza092ZXJsYXkpIHtcclxuICAgICAgICAgICAgdGhpcy5tYXNrT3ZlcmxheSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgICAgICB0aGlzLm1hc2tPdmVybGF5LnN0eWxlLnpJbmRleCA9IFN0cmluZyhwYXJzZUludCh0aGlzLl9vdmVybGF5UGFuZWwuc3R5bGUuekluZGV4KSAtIDEpO1xyXG4gICAgICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKHRoaXMubWFza092ZXJsYXksICdhZHZhbmNlLXNlYXJjaC1tYXNrLW92ZXJsYXknKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMubWFza0NsaWNrTGlzdGVuZXIgPSB0aGlzLl9yZW5kZXJlci5saXN0ZW4odGhpcy5tYXNrT3ZlcmxheSwgJ2NsaWNrJywgKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGlkZUZvcm1TZWFyY2goKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlTWFzaygpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLm1hc2tPdmVybGF5KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlTWFzaygpIHtcclxuICAgICAgICBpZiAodGhpcy5tYXNrT3ZlcmxheSkge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMubWFza092ZXJsYXkpO1xyXG4gICAgICAgICAgICB0aGlzLnVuYmluZE1hc2tDbGlja0xpc3RlbmVyKCk7XHJcbiAgICAgICAgICAgIHRoaXMubWFza092ZXJsYXkgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG5cclxuICAgICAgICB0aGlzLnJlc3RvcmVPdmVybGF5QXBwZW5kKCk7XHJcbiAgICAgICAgdGhpcy5vbk92ZXJsYXlIaWRlKCk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -45446,12 +45446,11 @@ CongViecPickerComponent.propDecorators = {
45446
45446
  };
45447
45447
 
45448
45448
  class AdvanceSearchComponent extends ComponentBase {
45449
- constructor(_customRouterService, _injector, _notifierService, _translateService, _deviceDetectorService, _localCacheService, _renderer, _moduleConfig) {
45449
+ constructor(_customRouterService, _injector, _notifierService, _deviceDetectorService, _localCacheService, _renderer, _moduleConfig) {
45450
45450
  var _a, _b, _c, _d;
45451
45451
  super(_injector);
45452
45452
  this._customRouterService = _customRouterService;
45453
45453
  this._notifierService = _notifierService;
45454
- this._translateService = _translateService;
45455
45454
  this._deviceDetectorService = _deviceDetectorService;
45456
45455
  this._localCacheService = _localCacheService;
45457
45456
  this._renderer = _renderer;
@@ -45910,7 +45909,6 @@ AdvanceSearchComponent.ctorParameters = () => [
45910
45909
  { type: CustomRouterService },
45911
45910
  { type: Injector },
45912
45911
  { type: NotifierService },
45913
- { type: TranslateService },
45914
45912
  { type: DeviceDetectorService },
45915
45913
  { type: LocalCacheService },
45916
45914
  { type: Renderer2 },