ngx-scandoc 1.3.2 → 1.3.4

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.
@@ -4,16 +4,18 @@ import { BaseComponent } from '../../../core/components/base.component';
4
4
  import { DialogsCoreProvider } from '../../../dialogs/dialogs.core.provider';
5
5
  import { NgxScandocCameraProvider } from '../../../providers/camera.provider';
6
6
  import { Platform } from '@angular/cdk/platform';
7
+ import { ScanProvider } from '../../../providers/scan.provider';
7
8
  import * as i0 from "@angular/core";
8
9
  export declare class ScanProfileComponent extends BaseComponent implements AfterViewInit, OnDestroy {
9
10
  dialogs: DialogsCoreProvider;
10
11
  cameraProvider: NgxScandocCameraProvider;
12
+ private scanProvider;
11
13
  dialogRef: MatDialogRef<ScanProfileComponent>;
12
14
  private platform;
13
15
  type: string;
14
16
  showDialog: boolean;
15
17
  handleTouchMove(event: any): void;
16
- constructor(dialogs: DialogsCoreProvider, cameraProvider: NgxScandocCameraProvider, dialogRef: MatDialogRef<ScanProfileComponent>, platform: Platform);
18
+ constructor(dialogs: DialogsCoreProvider, cameraProvider: NgxScandocCameraProvider, scanProvider: ScanProvider, dialogRef: MatDialogRef<ScanProfileComponent>, platform: Platform);
17
19
  ngAfterViewInit(): void;
18
20
  ngOnDestroy(): void;
19
21
  actions(event: any): void;
@@ -535,18 +535,22 @@ export class ScanComponent extends BaseComponent {
535
535
  // console.log('MODEL', this.model);
536
536
  this.actions.emit({
537
537
  type: 'scanFinish',
538
- model,
539
- results,
540
- });
541
- this.zone.run(() => {
542
- this.result = true;
543
- console.time('ff');
544
- this.cd.detectChanges();
545
- this.scanResults.next({ type: 'model', data: model });
546
- // this.cd.detectChanges();
547
- // });
548
- console.timeEnd('ff');
538
+ data: {
539
+ model: this.model,
540
+ images: this.images,
541
+ },
549
542
  });
543
+ if (!this.scanProvider.config.hideResults) {
544
+ this.zone.run(() => {
545
+ this.result = true;
546
+ console.time('ff');
547
+ this.cd.detectChanges();
548
+ this.scanResults.next({ type: 'model', data: model });
549
+ // this.cd.detectChanges();
550
+ // });
551
+ console.timeEnd('ff');
552
+ });
553
+ }
550
554
  }
551
555
  else {
552
556
  console.log('ERROR');
@@ -713,4 +717,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
713
717
  type: HostListener,
714
718
  args: ['window:resize', ['$event']]
715
719
  }] } });
716
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvY29yZS9jb21wb25lbnRzL3NjYW4vc2Nhbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvY29yZS9jb21wb25lbnRzL3NjYW4vc2Nhbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixNQUFNLEVBQ04sWUFBWSxFQUlaLHVCQUF1QixFQUN2QixLQUFLLEVBSUwsV0FBVyxHQUdaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQWdELE1BQU0sTUFBTSxDQUFDO0FBRzdFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQXlCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQU1oRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQTBCbEQsTUFBTSxPQUFPLGFBQ1gsU0FBUSxhQUFhO0lBZ0dyQixZQUNTLEVBQXFCLEVBQ3BCLElBQVksRUFDYixjQUF3QyxFQUN2QyxRQUFrQixFQUNsQixjQUE4QixFQUM5QixRQUFrQixFQUVsQixTQUEyQixFQUUzQixRQUFxQixFQUNyQixJQUFzQixFQUV0QixJQUFrQixDQUFDLDhCQUE4Qjs7UUFFekQsS0FBSyxFQUFFLENBQUM7UUFkRCxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNwQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ2IsbUJBQWMsR0FBZCxjQUFjLENBQTBCO1FBQ3ZDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFFbEIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFFM0IsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixTQUFJLEdBQUosSUFBSSxDQUFrQjtRQUV0QixTQUFJLEdBQUosSUFBSSxDQUFjO1FBMUc1QixrQkFBYSxHQUFRO1lBQ25CO2dCQUNFLEtBQUssRUFBRSwwQ0FBMEM7Z0JBQ2pELFdBQVcsRUFBRSxxREFBcUQ7Z0JBQ2xFLElBQUksRUFBRSxPQUFPO2FBQ2Q7WUFDRDtnQkFDRSxLQUFLLEVBQUUseUNBQXlDO2dCQUNoRCxXQUFXLEVBQUUsb0RBQW9EO2dCQUNqRSxRQUFRLEVBQUUsSUFBSTtnQkFDZCxJQUFJLEVBQUUsTUFBTTthQUNiO1NBQ0YsQ0FBQztRQUNPLFNBQUksR0FBRyxTQUFTLENBQUM7UUFFaEIsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFJdkMsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzVCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLGNBQVMsR0FBVyxDQUFDLENBQUM7UUFFdEIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFFdkIsMEJBQTBCO1FBQzFCLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUs3QixZQUFPLEdBQVEsSUFBSSxDQUFDO1FBR3BCLGNBQVMsR0FBRyxNQUFNLENBQUM7UUFDbkIsZ0JBQVcsR0FBUSx1QkFBdUIsQ0FBQztRQUUzQywwQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFDOUIsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUNkLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXBCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFFaEIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFLckIsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzdCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLFlBQU8sR0FBb0I7WUFDekIsd0JBQXdCLEVBQUUsSUFBSTtZQUM5QixPQUFPLEVBQUUsSUFBSTtZQUNiLFFBQVEsRUFBRSxJQUFJO1lBQ2QsY0FBYyxFQUFFLElBQUk7U0FDckIsQ0FBQztRQUVGLGNBQVMsR0FBUSxFQUFFLENBQUM7UUFFcEIsV0FBTSxHQUFRLElBQUksQ0FBQztRQUduQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGtCQUFhLEdBQVUsRUFBRSxDQUFDO1FBQzFCLGNBQVMsR0FBUSxDQUFDLENBQUM7UUFDWixZQUFPLEdBQW9CLElBQUksT0FBTyxFQUFVLENBQUM7UUFDeEQsK0ZBQStGO1FBQ3hGLGVBQVUsR0FBOEIsSUFBSSxPQUFPLEVBRXZELENBQUM7UUFDSixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixTQUFJLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLGFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUM3QyxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQzVCLHdCQUFtQixHQUFlO1lBQ2hDLElBQUksRUFBRSxDQUFDO1lBQ1AsSUFBSSxFQUFFLENBQUM7U0FDUixDQUFDO1FBK0JBLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtZQUN6QyxjQUFjO1lBQ2QsK0JBQStCO1lBQy9CLGdDQUFnQztZQUNoQyxtQ0FBbUM7WUFDbkMsZ0NBQWdDO1lBQ2hDLGlDQUFpQztZQUNqQyxLQUFLO1NBQ047SUFDSCxDQUFDO0lBeENELElBQWlDLEtBQUs7UUFDcEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFHRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFpQ08sWUFBWTtRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2IsT0FBTyxFQUFFLElBQUk7WUFDYixRQUFRLEVBQUUsSUFBSTtZQUNkLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLHdCQUF3QixFQUFFLElBQUk7U0FDL0IsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLG9CQUFvQjtRQUNwQixtQkFBbUI7UUFFbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7UUFFbEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDM0MsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7Z0JBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQzthQUN4QztZQUNELElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVNLFdBQVcsQ0FBQyxXQUF3QjtRQUN6QyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQzdCO1FBQ0QsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQy9CLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7WUFFbEMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRTtnQkFDckMsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztnQkFDMUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztnQkFDekIsZ0NBQWdDO2dCQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQzthQUN2QjtZQUVELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBRXJDLElBQUksV0FBVyxDQUFDLFNBQVMsRUFBRTtnQkFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDdkQ7WUFFRCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3hCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDckQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUU7b0JBQ3hDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7d0JBQ2pDLE1BQU0saUJBQWlCLEdBQ3JCLHlDQUF5Qzs0QkFDekMsR0FBRyxDQUFDLFlBQVk7NEJBQ2hCLDREQUE0RCxDQUFDO3dCQUMvRCxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO29CQUMzQyxDQUFDLENBQUMsQ0FBQztpQkFDSjtnQkFDRCxnREFBZ0Q7Z0JBRWhELE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3JCLGNBQWM7Z0JBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDcEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUMsa0JBQWtCO2dCQUNsQixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztnQkFDeEIsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDcEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7Z0JBRXZCLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2FBQzNDO2lCQUFNO2dCQUNMLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtvQkFDcEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2lCQUNiO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxlQUFlLENBQ3JCLFdBQWdCLEVBQ2hCLE1BQVcsRUFDWCxPQUEyQixPQUFPO1FBRWxDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUN4RSxJQUFJLENBQUMsV0FBVyxHQUFHLGdCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDcEQscUNBQXFDO1lBQ3JDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMvQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBRWpELDRDQUE0QztZQUM1QywyQ0FBMkM7WUFDM0MsSUFBSTtZQUVKLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7Z0JBQ3RCLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUV6QyxrREFBa0Q7Z0JBQ2xELElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBRXhCLElBQUksS0FBSyxHQUFHLGFBQWEsQ0FBQztnQkFDMUIsSUFBSSxJQUFJLElBQUksUUFBUSxFQUFFO29CQUNwQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUM3RCxLQUFLLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQztpQkFDckI7Z0JBRUQsSUFBSSxRQUFRLEtBQUssTUFBTSxFQUFFO29CQUN2Qiw0QkFBNEI7b0JBQzVCLElBQUksSUFBSSxLQUFLLE9BQU8sRUFBRTt3QkFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO3FCQUNyQzt5QkFBTTt3QkFDTCxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7cUJBQ3JDO29CQUVELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUU7d0JBQzlELE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBQ3ZCLElBQUksSUFBSSxJQUFJLFFBQVEsRUFBRTs0QkFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQzt5QkFDMUM7d0JBQ0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO3FCQUN4Qjt5QkFBTTt3QkFDTCxNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDckMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7d0JBRTNCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO3dCQUV6QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO3dCQUUzQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTs0QkFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7NEJBQ3ZCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7eUJBQ3pCO3dCQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsbUJBQW1CLENBQUM7cUJBQ3hDO2lCQUNGO3FCQUFNO29CQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztvQkFDcEMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDdkIsSUFBSSxJQUFJLElBQUksUUFBUSxFQUFFO3dCQUNwQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO3FCQUMxQztvQkFDRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7aUJBQ3hCO2dCQUVELElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO2dCQUV4QiwrQ0FBK0M7Z0JBRS9DLHlCQUF5QjthQUMxQjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztnQkFDeEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ2I7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFFeEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVNLGVBQWUsQ0FBQyxLQUFzQjtRQUMzQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNwRCxDQUFDO0lBRU8sVUFBVSxDQUFDLE9BQTJCLE9BQU87UUFDbkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVPLHFCQUFxQixDQUFDLElBQVM7UUFDckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLDhDQUE4QztRQUM5QyxnREFBZ0Q7UUFDaEQsSUFBSTtRQUNKLHVEQUF1RDtRQUV2RCxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuRSxDQUFDO0lBQ08seUJBQXlCLENBQy9CLEdBQVEsRUFDUixPQUEyQixPQUFPO1FBRWxDLGlDQUFpQztRQUNqQyxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUM7UUFDL0QsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUVsRCxJQUNFLElBQUksR0FBRyxlQUFlO1lBQ3RCLENBQUMsSUFBSSxDQUFDLHFCQUFxQjtRQUUzQixJQUFJO1FBQ0osc0NBQXNDO1VBQ3RDO1lBQ0EsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztZQUNsQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFFL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUNqQixrQ0FBa0M7Z0JBQ2xDLDhDQUE4QztnQkFDOUMsMkNBQTJDO2dCQUMzQyxNQUFNO2dCQUNOLHVCQUF1QjtnQkFDdkIsbUNBQW1DO2dCQUNuQyxNQUFNO2dCQUNOLEtBQUs7Z0JBRUwsb0RBQW9EO2dCQUNwRCwyQkFBMkI7Z0JBQzNCLE1BQU07Z0JBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7b0JBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO29CQUV6QiwwQkFBMEI7aUJBQzNCO2dCQUVELHNDQUFzQztnQkFDdEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBRTVCLDJCQUEyQjtnQkFDM0IseURBQXlEO2dCQUN6RCx3QkFBd0I7Z0JBQ3hCLGdCQUFnQjtnQkFDaEIsNkJBQTZCO2dCQUM3QixNQUFNO2dCQUNOLGlDQUFpQztnQkFDakMsd0NBQXdDO2dCQUN4QyxNQUFNO1lBQ1IsQ0FBQyxDQUFDLENBQUM7WUFDSCxxQ0FBcUM7WUFDckMsc0RBQXNEO1lBRXRELHdCQUF3QjtZQUN4QixrREFBa0Q7WUFDbEQsc0NBQXNDO1lBQ3RDLGdDQUFnQztZQUNoQyxzQ0FBc0M7WUFDdEMsMEJBQTBCO1lBQzFCLGlCQUFpQjtZQUNqQiw2Q0FBNkM7WUFDN0MsU0FBUztZQUNULGtCQUFrQjtZQUNsQixpQ0FBaUM7WUFDakMsU0FBUztZQUNULE9BQU87WUFDUCxpQkFBaUI7U0FDbEI7SUFDSCxDQUFDO0lBQ0QsZUFBZTtRQUNiLHVCQUF1QjtRQUV2QixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUV4QixzREFBc0Q7UUFFdEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbkUsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDekIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDMUQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWhCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTtZQUNoRSxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztZQUN6RSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7UUFFSCwrREFBK0Q7UUFDL0QsNEJBQTRCO1FBQzVCLGlCQUFpQjtRQUNqQixrQ0FBa0M7UUFDbEMscUNBQXFDO1FBQ3JDLFFBQVE7UUFFUiwwQ0FBMEM7UUFDMUMsa0NBQWtDO1FBQ2xDLDZDQUE2QztRQUU3QyxtREFBbUQ7UUFDbkQsdURBQXVEO1FBQ3ZELHNDQUFzQztRQUN0QywyQ0FBMkM7UUFDM0MsbUNBQW1DO1FBQ25DLFlBQVk7UUFFWixnREFBZ0Q7UUFFaEQsZ0RBQWdEO1FBQ2hELGlFQUFpRTtRQUNqRSxVQUFVO1FBRVYsb0NBQW9DO1FBQ3BDLGlFQUFpRTtRQUNqRSx5QkFBeUI7UUFDekIsaURBQWlEO1FBQ2pELDhDQUE4QztRQUM5Qyx1REFBdUQ7UUFDdkQsNkJBQTZCO1FBQzdCLG1DQUFtQztRQUNuQywrQkFBK0I7UUFFL0IseUVBQXlFO1FBQ3pFLGtDQUFrQztRQUVsQyxrRUFBa0U7UUFFbEUsMENBQTBDO1FBQzFDLFVBQVU7UUFDVixpQ0FBaUM7UUFDakMsVUFBVTtRQUNWLE1BQU07UUFDTixLQUFLO0lBQ1AsQ0FBQztJQUVELGlCQUFpQixDQUFDLE1BQVc7UUFDM0IsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUM7UUFFakMsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4RCxjQUFjLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUM3QixjQUFjLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUMvQixNQUFNLEdBQUcsR0FBUSxjQUFjLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFN0QsSUFBSSxHQUFHLEVBQUU7WUFDUCxHQUFHLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO1lBQ2xDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNoRCxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVM7UUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBRXpCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUMvQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN2QyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBUztRQUN0QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU8sWUFBWSxDQUFDLEdBQVE7UUFDM0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV0QixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3BFO1FBQ0QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFDRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztZQUNoRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDZCxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQiwwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN4QixPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sT0FBTyxHQUFRO1lBQ25CLHdCQUF3QixFQUFFLElBQUk7WUFDOUIsVUFBVSxFQUFFO2dCQUNWLGNBQWMsRUFBRSxRQUFRO2dCQUN4QixpQkFBaUIsRUFBRSxLQUFLO2dCQUN4QixhQUFhLEVBQUUsUUFBUTtnQkFDdkIsZ0JBQWdCLEVBQUUsS0FBSztnQkFDdkIsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO2dCQUNoQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7YUFDckU7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsY0FBYyxFQUFFLElBQUk7Z0JBQ3BCLHlCQUF5QixFQUFFLElBQUk7Z0JBQy9CLDBCQUEwQixFQUFFLElBQUk7Z0JBQ2hDLGtCQUFrQixFQUFFLElBQUk7Z0JBQ3hCLGNBQWMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWM7YUFDakQ7WUFDRCxxREFBcUQ7U0FDdEQsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLEdBQUcseUJBQXlCLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7UUFDNUUsSUFBSSxDQUFDLFNBQVMsR0FBRyx5QkFBeUIsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQztRQUMxRSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUU7WUFDaEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1NBQ3pDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFM0QsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsTUFBTSxDQUNULElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDdkMsVUFBVSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUN0QixxQ0FBcUM7Z0JBQ3JDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFFNUQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ2hDO1lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztnQkFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQUM7WUFDSCx5QkFBeUI7WUFDekIsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FDSCxDQUNGLENBQUMsU0FBUyxDQUNULENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDWixvQkFBb0I7WUFDcEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUMxQixPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFCLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsMEJBQTBCO1lBQzFCLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDekQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNyQixrQkFBa0I7WUFDbEIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztZQUNqQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUVyQixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssTUFBTSxFQUFFO2dCQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztnQkFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7Z0JBQ3hCLHFCQUFxQjtnQkFFckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3hCLE9BQU87YUFDUjtZQUNELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxNQUFNLEVBQUU7Z0JBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztnQkFDeEIscUJBQXFCO2dCQUVyQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztnQkFDcEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDeEIsT0FBTzthQUNSO1lBQ0QsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssTUFBTSxFQUFFO2dCQUNuRSxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFFbEQseUJBQXlCO2dCQUV6QixPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUMzQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDckQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDOUIsbUNBQW1DO2dCQUNuQywyQkFBMkI7Z0JBRTNCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBRTNCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUU7b0JBQzdCLEtBQUssQ0FBQyxPQUFPO3dCQUNYLHlCQUF5QixHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDO2lCQUN6RDtnQkFFRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFO29CQUM3QixNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztvQkFDckMsS0FBSyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLENBQVMsRUFBRSxFQUFFO3dCQUNyRCxPQUFPLEVBQUUsSUFBSSxFQUFFLHlCQUF5QixHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUM1RCxDQUFDLENBQUMsQ0FBQztpQkFDSjtnQkFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztnQkFDbkIsb0NBQW9DO2dCQUVwQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDaEIsSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLEtBQUs7b0JBQ0wsT0FBTztpQkFDUixDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO29CQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztvQkFDbkIsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDbkIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFFeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO29CQUN0RCwyQkFBMkI7b0JBQzNCLE9BQU87b0JBQ1AsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDeEIsQ0FBQyxDQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNyQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7b0JBQ3RCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDbEM7Z0JBQ0QscUJBQXFCO2dCQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7b0JBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO29CQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztvQkFDcEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDMUIsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gscUNBQXFDO2dCQUVyQyxnQkFBZ0I7YUFDakI7WUFFRCwyQkFBMkI7WUFDM0IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQixDQUFDLEVBQ0QsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNOLG1CQUFtQjtZQUNuQixxQkFBcUI7WUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDcEIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztZQUNqQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN2QixDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7WUFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTtnQkFDMUMsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDdkIsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTSxNQUFNO1FBQ1gsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTtZQUNwQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBRTVCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVoQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxHQUFHO1FBQ0QsZ0JBQWdCO1FBRWhCLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUU7WUFDcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3JFLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsT0FBTyxFQUFFO2dCQUN4QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQzthQUM1QztZQUNELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDM0I7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNoQixJQUFJLEVBQUUsZUFBZTtZQUNyQixJQUFJLEVBQUU7Z0JBQ0osS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07YUFDcEI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsTUFBTTtRQUNKLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDO1FBQ25DLElBQUksQ0FBQyxPQUFPO2FBQ1QsVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUM7YUFDdEIsV0FBVyxFQUFFO2FBQ2IsU0FBUyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDdkIsSUFBSSxJQUFJLEVBQUU7Z0JBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEIsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixFQUFFO29CQUN4QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztpQkFDM0I7Z0JBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7b0JBQ3BCLElBQUksRUFBRSxRQUFRO29CQUNkLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYztpQkFDMUIsQ0FBQyxDQUFDO2dCQUNILDRDQUE0QztnQkFDNUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQzthQUN6QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFNBQVMsQ0FBQyxFQUFPO1FBQ2YsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWM7UUFDdkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDNUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7WUFDM0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDUjtJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsR0FBWTtRQUNwQixJQUFJLEdBQUcsRUFBRTtZQUNQLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFO2dCQUMzQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDbkI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQ2hCLElBQUksRUFBRSxZQUFZO29CQUNsQixJQUFJLEVBQUUsRUFBRTtpQkFDVCxDQUFDLENBQUM7YUFDSjtTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztTQUMzQjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDaEM7UUFDRCxJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtZQUNqQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDN0M7UUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXhCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDOzswR0E5eUJVLGFBQWE7OEZBQWIsYUFBYSw0UkMzRDFCLHk5TUEyTkE7MkZEaEthLGFBQWE7a0JBTnpCLFNBQVM7K0JBQ0UsVUFBVSxtQkFHSCx1QkFBdUIsQ0FBQyxNQUFNO2tXQW1CdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSxPQUFPO3NCQUFoQixNQUFNO2dCQTJERSxVQUFVO3NCQUFsQixLQUFLO2dCQU0yQixLQUFLO3NCQUFyQyxXQUFXO3VCQUFDLGNBQWM7Z0JBSzNCLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIFZpZXdDaGlsZCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPdXRwdXQsXG4gIEhvc3RMaXN0ZW5lcixcbiAgRWxlbWVudFJlZixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBOZ1pvbmUsXG4gIEluamVjdG9yLFxuICBIb3N0QmluZGluZyxcbiAgVmlld1JlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSwgb2YsIGZvcmtKb2luLCBmcm9tLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IHN3aXRjaE1hcCwgbWFwLCBkZWxheSwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU2NhblByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vLi4vcHJvdmlkZXJzL3NjYW4ucHJvdmlkZXInO1xuaW1wb3J0IHsgV2ViY2FtSW1hZ2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2NvbXBvbmVudHMvd2ViY2FtL2RvbWFpbi93ZWJjYW0taW1hZ2UnO1xuaW1wb3J0IHsgV2ViY2FtSW5pdEVycm9yIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9jb21wb25lbnRzL3dlYmNhbS9kb21haW4vd2ViY2FtLWluaXQtZXJyb3InO1xuaW1wb3J0IHsgQXV0aFByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vLi4vcHJvdmlkZXJzL2F1dGgucHJvdmlkZXInO1xuaW1wb3J0IHsgTmd4U2NhbmRvY0NhbWVyYVByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vLi4vcHJvdmlkZXJzL2NhbWVyYS5wcm92aWRlcic7XG5pbXBvcnQgeyBMYXlvdXRQcm92aWRlciB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9sYXlvdXQucHJvdmlkZXInO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcblxuZXhwb3J0IGludGVyZmFjZSBJV2luZG93IGV4dGVuZHMgV2luZG93IHtcbiAgVGV4dERldGVjdG9yOiBhbnk7XG59XG5cbmludGVyZmFjZSBUcm91Ymxlc2hvb3Rpbmcge1xuICBSZXF1ZXN0OiBhbnk7XG4gIFJlc3BvbnNlOiBhbnk7XG4gIEV4cGVjdGVkT3V0cHV0OiBhbnk7XG4gIEFjY2VwdFRlcm1zQW5kQ29uZGl0aW9uczogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIFRpbWVzdGFtcHMge1xuICB0aW1lOiBudW1iZXI7XG4gIGxvYWQ6IG51bWJlcjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LXNjYW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vc2Nhbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NjYW4uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjYW5Db21wb25lbnRcbiAgZXh0ZW5kcyBCYXNlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XG57XG4gIHNjYW5CbGFzdERhdGE6IGFueSA9IFtcbiAgICB7XG4gICAgICB0aXRsZTogJ3Btcy5kaWFsb2dzLmNvbXBvbmVudHMuc2NhblByb2ZpbGUuZnJvbnQnLFxuICAgICAgZGVzY3JpcHRpb246ICdwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLmZyb250RGVzY3JpcHRpb24nLFxuICAgICAgc2lkZTogJ0ZST05UJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAncG1zLmRpYWxvZ3MuY29tcG9uZW50cy5zY2FuUHJvZmlsZS5iYWNrJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAncG1zLmRpYWxvZ3MuY29tcG9uZW50cy5zY2FuUHJvZmlsZS5iYWNrRGVzY3JpcHRpb24nLFxuICAgICAgZGlzYWJsZWQ6IHRydWUsXG4gICAgICBzaWRlOiAnQkFDSycsXG4gICAgfSxcbiAgXTtcbiAgQElucHV0KCkgdHlwZSA9ICdkZXNrdG9wJztcbiAgQElucHV0KCkgZGlhbG9nczogYW55O1xuICBAT3V0cHV0KCkgYWN0aW9ucyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgZGV2aWNlSWQ/OiBzdHJpbmc7XG5cbiAgc2NhblJlc3VsdHMgPSBuZXcgU3ViamVjdCgpO1xuICBzY2FuU2Vjb25kU2lkZSA9IGZhbHNlO1xuICBzdGFydFRpbWU6IG51bWJlciA9IDA7XG5cbiAgc2NhbkluUHJvZ3Jlc3MgPSBmYWxzZTtcblxuICAvLyB3ZWJjYW0gc25hcHNob3QgdHJpZ2dlclxuICBkb2N1bWVudFR5cGVTZWxlY3RlZCA9IGZhbHNlO1xuICBpbWFnZUhhbmRsZXJTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG4gIHNlbGVjdGVkU2lkZTogYW55O1xuICBpbWFnZXM6IGFueTtcbiAgc2NhblRpbWVvdXQ6IGFueTtcbiAgcHJldmlldzogYW55ID0gbnVsbDtcbiAgc2NhblR5cGU6IGFueTtcblxuICBlcnJvckNvZGUgPSAnMTAwMCc7XG4gIGRpc3BsYXlJbmZvOiBhbnkgPSAnc2NhbmRvYy5pbmZvLnBvc2l0aW9uJztcblxuICB2ZXJpZmljYXRpb25FcnJvclNlbnQgPSBmYWxzZTtcbiAgZXJyb3IgPSBmYWxzZTtcbiAgY2FtZXJhUmVhZHkgPSBmYWxzZTtcbiAgcmVzdWx0OiBhbnk7XG4gIHNjYW5pbmcgPSBmYWxzZTtcblxuICBwcm9tcHRNYW51YWwgPSBmYWxzZTtcblxuICBmcm9udEltYWdlOiBhbnk7XG4gIGJhY2tJbWFnZTogYW55O1xuXG4gIGltYWdlSGFuZGxlciA9IG5ldyBTdWJqZWN0KCk7XG4gIG1hbnVhbERhdGFTZXQgPSBmYWxzZTtcbiAgbG9nRGF0YTogVHJvdWJsZXNob290aW5nID0ge1xuICAgIEFjY2VwdFRlcm1zQW5kQ29uZGl0aW9uczogdHJ1ZSxcbiAgICBSZXF1ZXN0OiBudWxsLFxuICAgIFJlc3BvbnNlOiBudWxsLFxuICAgIEV4cGVjdGVkT3V0cHV0OiBudWxsLFxuICB9O1xuXG4gIHNjYW5EYXRhczogYW55ID0gW107XG4gIHNjYW5TaWRlOiBhbnk7XG4gIGlkU2NhbjogYW55ID0gbnVsbDtcbiAgd2ViY2FtSW1hZ2U/OiBXZWJjYW1JbWFnZTtcbiAgbW9kZWw6IGFueTtcbiAgdmFsaWRhdGlvbiA9IGZhbHNlO1xuICBzY2FubmVkSW1hZ2VzOiBhbnlbXSA9IFtdO1xuICBzY2FuRGVsYXk6IGFueSA9IDA7XG4gIHB1YmxpYyB0cmlnZ2VyOiBTdWJqZWN0PG51bWJlcj4gPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG4gIC8vIHN3aXRjaCB0byBuZXh0IC8gcHJldmlvdXMgLyBzcGVjaWZpYyB3ZWJjYW07IHRydWUvZmFsc2U6IGZvcndhcmQvYmFja3dhcmRzLCBzdHJpbmc6IGRldmljZUlkXG4gIHB1YmxpYyBuZXh0V2ViY2FtOiBTdWJqZWN0PGJvb2xlYW4gfCBzdHJpbmc+ID0gbmV3IFN1YmplY3Q8XG4gICAgYm9vbGVhbiB8IHN0cmluZ1xuICA+KCk7XG4gIGltYWdlVmVyaWZpZWQgPSBmYWxzZTtcbiAgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICBtYW51YWwgPSBmYWxzZTtcbiAgaXNNb2JpbGUgPSB0aGlzLnBsYXRmb3JtLklPUyB8fCB0aGlzLnBsYXRmb3JtLkFORFJPSUQ7XG4gIEBJbnB1dCgpIHNob3dEaWFsb2cgPSBmYWxzZTtcbiAgc2NhbkltYWdlVGltZXN0YW1wczogVGltZXN0YW1wcyA9IHtcbiAgICB0aW1lOiAwLFxuICAgIGxvYWQ6IDAsXG4gIH07XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tb2JpbGUnKSBnZXQgY2xhc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNNb2JpbGU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgb25SZXNpemUoKSB7XG4gICAgaWYgKHRoaXMucmVzdWx0KSB7XG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBzY2FuUHJvdmlkZXIhOiBTY2FuUHJvdmlkZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgICBwdWJsaWMgY2FtZXJhUHJvdmlkZXI6IE5neFNjYW5kb2NDYW1lcmFQcm92aWRlcixcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGxheW91dFByb3ZpZGVyOiBMYXlvdXRQcm92aWRlcixcbiAgICBwcml2YXRlIHBsYXRmb3JtOiBQbGF0Zm9ybSxcblxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIsXG4gICAgcHJpdmF0ZSB2aWV3OiBWaWV3Q29udGFpbmVyUmVmLFxuXG4gICAgcHJpdmF0ZSBhdXRoOiBBdXRoUHJvdmlkZXIgLy8gcHJpdmF0ZSBhcGk6IFNlcnZlclByb3ZpZGVyXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zY2FuUHJvdmlkZXIgPSB0aGlzLmluamVjdG9yLmdldChTY2FuUHJvdmlkZXIpO1xuXG4gICAgaWYgKCF0aGlzLnNjYW5Qcm92aWRlci5jb25maWcuZGV2ZWxvcG1lbnQpIHtcbiAgICAgIC8vIGNvbnNvbGUgPSB7XG4gICAgICAvLyAgIGxvZzogKC4uLmFyZ3M6IGFueSkgPT4ge30sXG4gICAgICAvLyAgIHRpbWU6ICguLi5hcmdzOiBhbnkpID0+IHt9LFxuICAgICAgLy8gICB0aW1lRW5kOiAoLi4uYXJnczogYW55KSA9PiB7fSxcbiAgICAgIC8vICAgd2FybjogKC4uLmFyZ3M6IGFueSkgPT4ge30sXG4gICAgICAvLyAgIGVycm9yOiAoLi4uYXJnczogYW55KSA9PiB7fSxcbiAgICAgIC8vIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNldExvZ0RhdGEoKSB7XG4gICAgdGhpcy5sb2dEYXRhID0ge1xuICAgICAgUmVxdWVzdDogbnVsbCxcbiAgICAgIFJlc3BvbnNlOiBudWxsLFxuICAgICAgRXhwZWN0ZWRPdXRwdXQ6IG51bGwsXG4gICAgICBBY2NlcHRUZXJtc0FuZENvbmRpdGlvbnM6IHRydWUsXG4gICAgfTtcbiAgfVxuXG4gIGluaXQoKSB7XG4gICAgdGhpcy5hdXRoLmFjY2VzVG9rZW4uc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5yZXNldExvZ0RhdGEoKTtcbiAgICAvLyB0aGlzLnJlc3VsdD10cnVlO1xuICAgIC8vIHRoaXMucmVzdWx0ID17fTtcblxuICAgIGNvbnNvbGUubG9nKCdJTklUIFNDQU4nKTtcbiAgfVxuXG4gIGNvbnRpbnVlKCkge1xuICAgIHRoaXMuZG9jdW1lbnRUeXBlU2VsZWN0ZWQgPSBmYWxzZTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zZWxlY3RlZFNpZGUuaW1hZ2UgPSB0aGlzLndlYmNhbUltYWdlO1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRTaWRlLnNpZGUgPT09ICdGUk9OVCcpIHtcbiAgICAgICAgdGhpcy5zY2FuQmxhc3REYXRhWzFdLmRpc2FibGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9LCAyMDApO1xuICB9XG5cbiAgc2NhbigpIHtcbiAgICB0aGlzLnRyaWdnZXIubmV4dChuZXcgRGF0ZSgpLmdldFRpbWUoKSk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlSW1hZ2Uod2ViY2FtSW1hZ2U6IFdlYmNhbUltYWdlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhcnRUaW1lID09PSAwKSB7XG4gICAgICB0aGlzLnN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgfVxuICAgIC8vIGNvbnNvbGUubG9nKCdbcmVjZWl2ZWQgd2ViY2FtIGltYWdlXScsIHdlYmNhbUltYWdlKTtcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgY29uc3QgdGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuXG4gICAgICBpZiAodGhpcy5zY2FuSW1hZ2VUaW1lc3RhbXBzLmxvYWQgPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgbG9hZCB9ID0gdGhpcy5zY2FuSW1hZ2VUaW1lc3RhbXBzO1xuICAgICAgICBjb25zdCBkaWZmID0gdGltZSAtIGxvYWQ7XG4gICAgICAgIC8vICAgY29uc29sZS5sb2coJ3RpbWU6JywgZGlmZik7XG4gICAgICAgIHRoaXMuc2NhbkRlbGF5ID0gZGlmZjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zY2FuSW1hZ2VUaW1lc3RhbXBzLmxvYWQgPSB0aW1lO1xuXG4gICAgICBpZiAod2ViY2FtSW1hZ2UuaW1hZ2VEYXRhKSB7XG4gICAgICAgIHRoaXMuc2Nhbm5lZEltYWdlcy5wdXNoKHdlYmNhbUltYWdlKTtcbiAgICAgICAgdGhpcy5oYW5kbGVMb25nVmFsaWRhdGlvbkVycm9yKHdlYmNhbUltYWdlLCAnd29ya2VyJyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgaWYgKHRoaXMuc2Nhbm5lZEltYWdlcy5sZW5ndGggPiA0ICYmICF0aGlzLnZhbGlkYXRpb24pIHtcbiAgICAgICAgaWYgKHRoaXMuc2NhblByb3ZpZGVyLmNvbmZpZy5kZXZlbG9wbWVudCkge1xuICAgICAgICAgIHRoaXMuc2Nhbm5lZEltYWdlcy5mb3JFYWNoKChpbWcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnNvbGVCYWNrZ3JvdW5kID1cbiAgICAgICAgICAgICAgXCJmb250LXNpemU6MTAwcHg7YmFja2dyb3VuZC1pbWFnZTogdXJsKCdcIiArXG4gICAgICAgICAgICAgIGltZy5pbWFnZVJlc2l6ZWQgK1xuICAgICAgICAgICAgICBcIicpO2JhY2tncm91bmQtc2l6ZTogY29udGFpbjsgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcIjtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCclYyAgICAnLCBjb25zb2xlQmFja2dyb3VuZCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gICB0aGlzLmZyb250SW1hZ2UgPSB3ZWJjYW1JbWFnZS5pbWFnZVJlc2l6ZWQ7XG5cbiAgICAgICAgY29uc29sZS50aW1lRW5kKCdzY2FuJyk7XG4gICAgICAgIGNvbnNvbGUudGltZSgnc2NhbicpO1xuICAgICAgICAvLyBnZXQgbGFzdCAxMFxuICAgICAgICBjb25zb2xlLmxvZygnQ0FQVFVSRUQ6JywgdGhpcy5zY2FubmVkSW1hZ2VzLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IGltYWdlcyA9IHRoaXMuc2Nhbm5lZEltYWdlcy5zbGljZSgtNSk7XG4gICAgICAgIC8vIHNldCBpbWFnZXMgdG8gMFxuICAgICAgICB0aGlzLnNjYW5uZWRJbWFnZXMgPSBbXTtcbiAgICAgICAgY29uc3QgaW1hZ2VzQXJyYXkgPSBpbWFnZXMubWFwKChtKSA9PiBtLmltYWdlUmVzaXplZC5zcGxpdCgnLCcpWzFdKTtcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLmhhbmRsZUJ1cnN0RGF0YShpbWFnZXNBcnJheSwgaW1hZ2VzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmNhbWVyYVJlYWR5KSB7XG4gICAgICAgICAgdGhpcy5zY2FuKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQnVyc3REYXRhKFxuICAgIGltYWdlc0FycmF5OiBhbnksXG4gICAgaW1hZ2VzOiBhbnksXG4gICAgdHlwZTogJ3dvcmtlcicgfCAncGxhaW4nID0gJ3BsYWluJ1xuICApIHtcbiAgICB0aGlzLl9fc3Vicyh0aGlzLnNjYW5Qcm92aWRlci5idXJzdChpbWFnZXNBcnJheSkpLnN1YnNjcmliZSgocmVzcDogYW55KSA9PiB7XG4gICAgICB0aGlzLmRpc3BsYXlJbmZvID0gJ3NjYW5kb2MuaW5mby5jJyArIHJlc3AuSW5mb0NvZGU7XG4gICAgICAvLyBjb25zb2xlLnRpbWVFbmQoJ3ZhbGlkYXRpb25QT1NUJyk7XG4gICAgICBjb25zb2xlLmxvZygnQW5hbHlzaXNUaW1lJywgcmVzcC5BbmFseXNpc1RpbWUpO1xuICAgICAgY29uc3QgeyBEb2NUeXBlLCBTZXJpZXMsIFNpZGUsIEluZm9Db2RlIH0gPSByZXNwO1xuXG4gICAgICAvLyBpZiAoSW5mb0NvZGUgPT09ICcxMDA2JyAmJiB0aGlzLmlkU2Nhbikge1xuICAgICAgLy8gICB0aGlzLmhhbmRsZUxvbmdWYWxpZGF0aW9uRXJyb3IoaW1hZ2UpO1xuICAgICAgLy8gfVxuXG4gICAgICBpZiAocmVzcC5WYWxpZGF0ZWQpIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5SW5mbyA9ICcnO1xuICAgICAgICBjb25zb2xlLmxvZygnW1NDQU5ORUQgSU5ERVhdJywgcmVzcC5JbmRleCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSW1hZ2UgPSBpbWFnZXNbcmVzcC5JbmRleF07XG5cbiAgICAgICAgLy8gdGhpcy5wcmV2aWV3ID0gdGhpcy53ZWJjYW1JbWFnZS5pbWFnZUFzRGF0YVVybDtcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgbGV0IGltYWdlID0gc2VsZWN0ZWRJbWFnZTtcbiAgICAgICAgaWYgKHR5cGUgPT0gJ3dvcmtlcicpIHtcbiAgICAgICAgICBjb25zdCBkYXRhVXJsID0gdGhpcy5oYW5kbGVCaXRtYXBJbWFnZShzZWxlY3RlZEltYWdlLmJpdG1hcCk7XG4gICAgICAgICAgaW1hZ2UgPSB7IGRhdGFVcmwgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChJbmZvQ29kZSA9PT0gJzEwMDcnKSB7XG4gICAgICAgICAgLy8gRm9yIElEIGFzayBmb3Igb3RoZXIgc2lkZVxuICAgICAgICAgIGlmIChTaWRlID09PSAnRlJPTlQnKSB7XG4gICAgICAgICAgICB0aGlzLnNjYW5CbGFzdERhdGFbMF0uaW1hZ2UgPSBpbWFnZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zY2FuQmxhc3REYXRhWzFdLmltYWdlID0gaW1hZ2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMuc2NhbkJsYXN0RGF0YVswXS5pbWFnZSAmJiB0aGlzLnNjYW5CbGFzdERhdGFbMV0uaW1hZ2UpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignVVBMT0FEJyk7XG4gICAgICAgICAgICBpZiAodHlwZSA9PSAnd29ya2VyJykge1xuICAgICAgICAgICAgICB0aGlzLmltYWdlSGFuZGxlci5uZXh0KHsgdHlwZTogJ3N0b3AnIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zY2FuQmxhc3RGaW5pc2goKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbnVtID0gU2lkZSA9PT0gJ0ZST05UJyA/IDEgOiAwO1xuICAgICAgICAgICAgdGhpcy5zY2FuU2Vjb25kU2lkZSA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMuc2luZ2xlU2Nhbih0aGlzLnNjYW5CbGFzdERhdGFbbnVtXSk7XG5cbiAgICAgICAgICAgIHRoaXMuaWRTY2FuID0gdGhpcy5zY2FuQmxhc3REYXRhW251bV0uc2lkZTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLnNob3dEaWFsb2cpIHtcbiAgICAgICAgICAgICAgdGhpcy5zaG93RGlhbG9nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZGlzcGxheUluZm8gPSAnc2NhbmRvYy5pbmZvLnR1cm4nO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNjYW5CbGFzdERhdGFbMF0uaW1hZ2UgPSBpbWFnZTtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ1VQTE9BRCcpO1xuICAgICAgICAgIGlmICh0eXBlID09ICd3b3JrZXInKSB7XG4gICAgICAgICAgICB0aGlzLmltYWdlSGFuZGxlci5uZXh0KHsgdHlwZTogJ3N0b3AnIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnNjYW5CbGFzdEZpbmlzaCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zY2FubmVkSW1hZ2VzID0gW107XG5cbiAgICAgICAgLy8gdGhpcy5zY2FuQmxhc3REYXRhWzBdLmltYWdlID0gc2VsZWN0ZWRJbWFnZTtcblxuICAgICAgICAvL3RoaXMuc2NhbkJsYXN0RmluaXNoKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnZhbGlkYXRpb24gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zY2FuKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjbG9zZURpYWxvZygpIHtcbiAgICB0aGlzLnNob3dEaWFsb2cgPSBmYWxzZTtcbiAgICB0aGlzLnZhbGlkYXRpb24gPSBmYWxzZTtcblxuICAgIHRoaXMuc2NhbigpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUluaXRFcnJvcihlcnJvcjogV2ViY2FtSW5pdEVycm9yKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coZXJyb3IpO1xuICB9XG5cbiAgZ2V0IHNjYW5CbGFzdENhblVwbG9hZCgpIHtcbiAgICByZXR1cm4gdGhpcy5zY2FuQmxhc3REYXRhWzBdLmltYWdlID8gdHJ1ZSA6IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBtYW51YWxNb2RlKHR5cGU6ICd3b3JrZXInIHwgJ3BsYWluJyA9ICdwbGFpbicpIHtcbiAgICB0aGlzLm1hbnVhbCA9IHRydWU7XG4gICAgdGhpcy5wcm9tcHRNYW51YWwgPSBmYWxzZTtcbiAgICB0aGlzLnNjYW5JblByb2dyZXNzID0gZmFsc2U7XG4gICAgdGhpcy5jYW1lcmFQcm92aWRlci4kc2hvd1N3aXRjaC5uZXh0KGZhbHNlKTtcblxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFeHRyYWN0aW9uRXJyb3IoZGF0YTogYW55KSB7XG4gICAgdGhpcy5sb2dEYXRhLkV4cGVjdGVkT3V0cHV0ID0ge307XG4gICAgLy8gaWYgKHRoaXMubG9nRGF0YS5FeHBlY3RlZE91dHB1dD8uX2F2YXRhcikge1xuICAgIC8vICAgZGVsZXRlIHRoaXMubG9nRGF0YS5FeHBlY3RlZE91dHB1dC5fYXZhdGFyO1xuICAgIC8vIH1cbiAgICAvLyB0aGlzLnNjYW5Qcm92aWRlci5zZW5kTG9nKHRoaXMubG9nRGF0YSkuc3Vic2NyaWJlKCk7XG5cbiAgICBjb25zb2xlLmxvZygnTE9HIERBVEEnLCB0aGlzLmxvZ0RhdGEpO1xuICAgIHRoaXMuX19zdWJzKHRoaXMuc2NhblByb3ZpZGVyLnNlbmRMb2codGhpcy5sb2dEYXRhKSkuc3Vic2NyaWJlKCk7XG4gIH1cbiAgcHJpdmF0ZSBoYW5kbGVMb25nVmFsaWRhdGlvbkVycm9yKFxuICAgIGltZzogYW55LFxuICAgIHR5cGU6ICd3b3JrZXInIHwgJ3BsYWluJyA9ICdwbGFpbidcbiAgKSB7XG4gICAgLy8gc2F2ZSBjdXJyZW50IGltYWdlIGFmdGVyIDEwc2VjXG4gICAgbGV0IE1BTlVBTF9JTlRFUlZBTCA9IHRoaXMuc2NhblByb3ZpZGVyLmNvbmZpZy5tYW51YWxTY2FuRGVsYXk7XG4gICAgY29uc3QgZGlmZiA9IChEYXRlLm5vdygpIC0gdGhpcy5zdGFydFRpbWUpIC8gMTAwMDtcblxuICAgIGlmIChcbiAgICAgIGRpZmYgPiBNQU5VQUxfSU5URVJWQUwgJiZcbiAgICAgICF0aGlzLnZlcmlmaWNhdGlvbkVycm9yU2VudFxuXG4gICAgICAvLyYmXG4gICAgICAvL3RoaXMuc2NhblByb3ZpZGVyLmNvbmZpZy5kZXZlbG9wbWVudFxuICAgICkge1xuICAgICAgdGhpcy52ZXJpZmljYXRpb25FcnJvclNlbnQgPSB0cnVlO1xuICAgICAgY29uc29sZS53YXJuKCdbSEFORExFIEVSUk9SXScpO1xuXG4gICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgLy8gY29uc3QgcmVmID0gdGhpcy5zbmFja0Jhci5vcGVuKFxuICAgICAgICAvLyAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3NjYW5kb2MubWFudWFsJyksXG4gICAgICAgIC8vICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnc2NhbmRvYy55ZXMnKSxcbiAgICAgICAgLy8gICB7XG4gICAgICAgIC8vICAgICBkdXJhdGlvbjogMTAwMDAsXG4gICAgICAgIC8vICAgICB2aWV3Q29udGFpbmVyUmVmOiB0aGlzLnZpZXcsXG4gICAgICAgIC8vICAgfVxuICAgICAgICAvLyApO1xuXG4gICAgICAgIC8vIHRoaXMuX19zdWJzKHJlZi5vbkFjdGlvbigpKS5zdWJzY3JpYmUoKHJlc3ApID0+IHtcbiAgICAgICAgLy8gICB0aGlzLm1hbnVhbE1vZGUodHlwZSk7XG4gICAgICAgIC8vIH0pO1xuICAgICAgICBpZiAoIXRoaXMuc2NhblNlY29uZFNpZGUpIHtcbiAgICAgICAgICB0aGlzLnByb21wdE1hbnVhbCA9IHRydWU7XG5cbiAgICAgICAgICAvLyAgTUFOVUFMX0lOVEVSVkFMICs9IDEwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdGhpcy52ZXJpZmljYXRpb25FcnJvclNlbnQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuXG4gICAgICAgIC8vdGhpcy5wcm9tcHRNYW51YWwgPSB0cnVlO1xuICAgICAgICAvLyB0aGlzLmRpYWxvZ3MucHJvbXB0TWFudWFsKCkuc3Vic2NyaWJlKChyZXNwOiBhbnkpID0+IHtcbiAgICAgICAgLy8gICBjb25zb2xlLndhcm4ocmVzcCk7XG4gICAgICAgIC8vICAgaWYgKHJlc3ApIHtcbiAgICAgICAgLy8gICAgIHRoaXMubWFudWFsTW9kZSh0eXBlKTtcbiAgICAgICAgLy8gICB9XG4gICAgICAgIC8vICAgdGhpcy5zdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICAvLyAgIHRoaXMudmVyaWZpY2F0aW9uRXJyb3JTZW50ID0gZmFsc2U7XG4gICAgICAgIC8vIH0pO1xuICAgICAgfSk7XG4gICAgICAvLyB0aGlzLnZlcmlmaWNhdGlvbkVycm9yU2VudCA9IHRydWU7XG4gICAgICAvLyBjb25zdCBkYXRhVXJsID0gdGhpcy5oYW5kbGVCaXRtYXBJbWFnZShpbWcuYml0bWFwKTtcblxuICAgICAgLy8gY29uc29sZS53YXJuKCdTRU5UJyk7XG4gICAgICAvLyAvLyAgdGhpcy5kaXNwbGF5SW5mbyA9ICdDYW50IGRldGVjdCBkb2N1bWVudCEnO1xuICAgICAgLy8gdGhpcy5sb2dEYXRhLlJlcXVlc3QgPSB0aGlzLl9fc3VicyhcbiAgICAgIC8vICAgdGhpcy5zY2FuUHJvdmlkZXIuc2VuZExvZyh7XG4gICAgICAvLyAgICAgQWNjZXB0VGVybXNBbmRDb25kaXRpb25zOiB0cnVlLFxuICAgICAgLy8gICAgIEV4cGVjdGVkT3V0cHV0OiB7fSxcbiAgICAgIC8vICAgICBSZXF1ZXN0OiB7XG4gICAgICAvLyAgICAgICB2ZXJpZmljYXRpb246IGRhdGFVcmwuc3BsaXQoJywnKVsxXSxcbiAgICAgIC8vICAgICB9LFxuICAgICAgLy8gICAgIFJlc3BvbnNlOiB7XG4gICAgICAvLyAgICAgICBUcmFuc2FjdGlvbklEOiB1dWlkdjQoKSxcbiAgICAgIC8vICAgICB9LFxuICAgICAgLy8gICB9KVxuICAgICAgLy8gKS5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIC8vICB0aGlzLnJlc3VsdCA9IHRydWU7XG5cbiAgICB0aGlzLmNhbWVyYVByb3ZpZGVyLiRzaG93U3dpdGNoLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAvLyB0aGlzLnNjYW5SZXN1bHRzLm5leHQoeyB0eXBlOiAnbW9kZWwnLCBkYXRhOiB7fSB9KTtcblxuICAgIHRoaXMuX19zdWJzKHRoaXMuY2FtZXJhUHJvdmlkZXIud2ViY2FtT2JzZXJ2YWJsZSkuc3Vic2NyaWJlKChyZXNwKSA9PiB7XG4gICAgICB0aGlzLmNhbWVyYVJlYWR5ID0gZmFsc2U7XG4gICAgICB0aGlzLnNjYW5JblByb2dyZXNzID0gZmFsc2U7XG4gICAgICB0aGlzLnNjYW5uZWRJbWFnZXMgPSBbXTtcbiAgICB9KTtcbiAgICB0aGlzLl9fc3Vicyh0aGlzLmNhbWVyYVByb3ZpZGVyLnNlbGZpZSQpLnN1YnNjcmliZSgocmVzcCkgPT4ge1xuICAgICAgdGhpcy5zZWxmaWUoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuYXV0b1NjYW4oKTtcblxuICAgIHRoaXMuX19zdWJzKHRoaXMubGF5b3V0UHJvdmlkZXIuYnJlYWtwb2ludCQpLnN1YnNjcmliZSgodjogYW55KSA9PiB7XG4gICAgICB0aGlzLmlzTW9iaWxlID0gIXYubWF0Y2hlcyB8fCB0aGlzLnBsYXRmb3JtLklPUyB8fCB0aGlzLnBsYXRmb3JtLkFORFJPSUQ7XG4gICAgICBjb25zb2xlLmxvZygnTU5PQklMRScsIHRoaXMuaXNNb2JpbGUpO1xuICAgIH0pO1xuXG4gICAgLy8gdGhpcy5pbWFnZUhhbmRsZXJTdWJzY3JpcHRpb24gPSB0aGlzLmltYWdlSGFuZGxlci5zdWJzY3JpYmUoXG4gICAgLy8gICAod2ViY2FtSW1hZ2U6IGFueSkgPT4ge1xuICAgIC8vICAgICAvLyByZXR1cm47XG4gICAgLy8gICAgIGlmICh0aGlzLnN0YXJ0VGltZSA9PT0gMCkge1xuICAgIC8vICAgICAgIHRoaXMuc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAvLyAgICAgfVxuXG4gICAgLy8gICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgLy8gICAgICAgaWYgKHdlYmNhbUltYWdlLmJhc2U2NCkge1xuICAgIC8vICAgICAgICAgY29uc3QgdGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuXG4gICAgLy8gICAgICAgICBpZiAodGhpcy5zY2FuSW1hZ2VUaW1lc3RhbXBzLmxvYWQgPiAwKSB7XG4gICAgLy8gICAgICAgICAgIGNvbnN0IHsgbG9hZCB9ID0gdGhpcy5zY2FuSW1hZ2VUaW1lc3RhbXBzO1xuICAgIC8vICAgICAgICAgICBjb25zdCBkaWZmID0gdGltZSAtIGxvYWQ7XG4gICAgLy8gICAgICAgICAgIC8vIGNvbnNvbGUud2FybignVElNRScsIGRpZmYpO1xuICAgIC8vICAgICAgICAgICB0aGlzLnNjYW5EZWxheSA9IGRpZmY7XG4gICAgLy8gICAgICAgICB9XG5cbiAgICAvLyAgICAgICAgIHRoaXMuc2NhbkltYWdlVGltZXN0YW1wcy5sb2FkID0gdGltZTtcblxuICAgIC8vICAgICAgICAgdGhpcy5zY2FubmVkSW1hZ2VzLnB1c2god2ViY2FtSW1hZ2UpO1xuICAgIC8vICAgICAgICAgdGhpcy5oYW5kbGVMb25nVmFsaWRhdGlvbkVycm9yKHdlYmNhbUltYWdlLCAnd29ya2VyJyk7XG4gICAgLy8gICAgICAgfVxuXG4gICAgLy8gICAgICAgLy8gdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgLy8gICAgICAgaWYgKHRoaXMuc2Nhbm5lZEltYWdlcy5sZW5ndGggPiA0ICYmICF0aGlzLnZhbGlkYXRpb24pIHtcbiAgICAvLyAgICAgICAgIC8vIGdldCBsYXN0IDEwXG4gICAgLy8gICAgICAgICBjb25zb2xlLnRpbWVFbmQoJ3ZhbGlkYXRpb25UT1RBTF9VSScpO1xuICAgIC8vICAgICAgICAgY29uc29sZS50aW1lKCd2YWxpZGF0aW9uVE9UQUxfVUknKTtcbiAgICAvLyAgICAgICAgIGNvbnN0IGltYWdlcyA9IHRoaXMuc2Nhbm5lZEltYWdlcy5zbGljZSgtNSk7XG4gICAgLy8gICAgICAgICAvLyBzZXQgaW1hZ2VzIHRvIDBcbiAgICAvLyAgICAgICAgIHRoaXMuc2Nhbm5lZEltYWdlcyA9IFtdO1xuICAgIC8vICAgICAgICAgY29uc29sZS5sb2coaW1hZ2VzKTtcblxuICAgIC8vICAgICAgICAgY29uc3QgaW1hZ2VzQXJyYXkgPSBpbWFnZXMubWFwKChtKSA9PiBtLmJhc2U2NC5zcGxpdCgnLCcpWzFdKTtcbiAgICAvLyAgICAgICAgIHRoaXMudmFsaWRhdGlvbiA9IHRydWU7XG5cbiAgICAvLyAgICAgICAgIC8vIHRoaXMuaGFuZGxlQnVyc3REYXRhKGltYWdlc0FycmF5LCBpbWFnZXMsICd3b3JrZXInKTtcblxuICAgIC8vICAgICAgICAgY29uc29sZS50aW1lKCd2YWxpZGF0aW9uUE9TVCcpO1xuICAgIC8vICAgICAgIH1cbiAgICAvLyAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAvLyAgICAgfSk7XG4gICAgLy8gICB9XG4gICAgLy8gKTtcbiAgfVxuXG4gIGhhbmRsZUJpdG1hcEltYWdlKGJpdG1hcDogYW55KSB7XG4gICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBiaXRtYXA7XG5cbiAgICBjb25zdCBvZmZzY3JlZW5TbWFsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgIG9mZnNjcmVlblNtYWxsLndpZHRoID0gd2lkdGg7XG4gICAgb2Zmc2NyZWVuU21hbGwuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIGNvbnN0IGN0eDogYW55ID0gb2Zmc2NyZWVuU21hbGwuZ2V0Q29udGV4dCgnYml0bWFwcmVuZGVyZXInKTtcblxuICAgIGlmIChjdHgpIHtcbiAgICAgIGN0eC5pbWFnZVNtb290aGluZ0VuYWJsZWQgPSBmYWxzZTtcbiAgICAgIGN0eC50cmFuc2ZlckZyb21JbWFnZUJpdG1hcChiaXRtYXApO1xuICAgICAgYml0bWFwLmNsb3NlKCk7XG4gICAgICBjb25zdCBkYXRhID0gY3R4LmNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL2pwZWcnKTtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGF1dG9TY2FuKCkge1xuICAgIGNvbnN0IHNpZGUgPSB0aGlzLnNjYW5CbGFzdERhdGFbMF07XG4gICAgdGhpcy5pZFNjYW4gPSBudWxsO1xuICAgIHRoaXMuc2luZ2xlU2NhbihzaWRlKTtcbiAgfVxuXG4gIHNpbmdsZVNjYW4oc2lkZTogYW55KSB7XG4gICAgdGhpcy5zY2FuVHlwZSA9IHNpZGUuc2lkZTtcbiAgICB0aGlzLnByZXZpZXcgPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0ZWRTaWRlID0gc2lkZTtcblxuICAgIHRoaXMuc2VsZWN0ZWRTaWRlLmltYWdlID0gbnVsbDtcbiAgICB0aGlzLmRvY3VtZW50VHlwZVNlbGVjdGVkID0gdHJ1ZTtcbiAgICB0aGlzLnNjYW5CbGFzdERhdGFbMV0uZGlzYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG1hbnVhbFNjYW5EYXRhKGRhdGE6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKGRhdGEpO1xuICAgIHRoaXMuc2NhbkJsYXN0RGF0YSA9IGRhdGE7XG4gICAgdGhpcy5tYW51YWwgPSBmYWxzZTtcbiAgICB0aGlzLm1hbnVhbERhdGFTZXQgPSB0cnVlO1xuICAgIHRoaXMuc2NhbkJsYXN0RmluaXNoKCk7XG4gIH1cblxuICBwcml2YXRlIGdldEltZ0Jhc2U2NChudW06IGFueSkge1xuICAgIGNvbnNvbGUubG9nKCdHRVQgNjQnKTtcblxuICAgIGlmICh0aGlzLm1hbnVhbERhdGFTZXQpIHtcbiAgICAgIHJldHVybiB0aGlzLnNjYW5CbGFzdERhdGFbbnVtXS5pbWFnZS5faW1hZ2VBc0RhdGFVcmwuc3BsaXQoJywnKVsxXTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2NhbkJsYXN0RGF0YVtudW1dLmltYWdlLmRhdGFVcmwuc3BsaXQoJywnKVsxXTtcbiAgfVxuICBzY2FuQmxhc3RGaW5pc2goKSB7XG4gICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLmNhbWVyYVByb3ZpZGVyLiRzaG93U3dpdGNoLm5leHQoZmFsc2UpO1xuICAgIH0pO1xuICAgIGNvbnNvbGUudGltZSgndXBsb2FkJyk7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ21vYmlsZScpIHtcbiAgICAgIHRoaXMuYWN0aW9ucy5lbWl0KHsgZGF0YTogdGhpcy5zY2FuQmxhc3REYXRhIH0pO1xuICAgICAgdGhpcy5yZXRha2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pZFNjYW4gPSBudWxsO1xuICAgIC8vIGNvbnN0IGxvYWRpbmcgPSB0aGlzLmRpYWxvZ3MubG9hZGluZygpO1xuICAgIHRoaXMuc2NhbmluZyA9IHRydWU7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgY29uc29sZS50aW1lKCdwYXlsb2FkJyk7XG4gICAgY29uc3QgcGF5bG9hZDogYW55ID0ge1xuICAgICAgQWNjZXB0VGVybXNBbmRDb25kaXRpb25zOiB0cnVlLFxuICAgICAgRGF0YUZpZWxkczoge1xuICAgICAgICBGcm9udEltYWdlVHlwZTogJ2Jhc2U2NCcsXG4gICAgICAgIEZyb250SW1hZ2VDcm9wcGVkOiBmYWxzZSxcbiAgICAgICAgQmFja0ltYWdlVHlwZTogJ2Jhc2U2NCcsXG4gICAgICAgIEJhY2tJbWFnZUNyb3BwZWQ6IGZhbHNlLFxuICAgICAgICBGcm9udEltYWdlOiB0aGlzLmdldEltZ0Jhc2U2NCgwKSxcbiAgICAgICAgQmFja0ltYWdlOiB0aGlzLnNjYW5CbGFzdERhdGFbMV0uaW1hZ2UgPyB0aGlzLmdldEltZ0Jhc2U2NCgxKSA6IG51bGwsXG4gICAgICB9LFxuICAgICAgU2V0dGluZ3M6IHtcbiAgICAgICAgU2hvdWxkVmFsaWRhdGU6IHRydWUsXG4gICAgICAgIFNob3VsZFJldHVybkRvY3VtZW50SW1hZ2U6IHRydWUsXG4gICAgICAgIFNob3VsZFJldHVybkZhY2VJZkRldGVjdGVkOiB0cnVlLFxuICAgICAgICBTa2lwSW1hZ2VTaXplQ2hlY2s6IHRydWUsXG4gICAgICAgIENhblN0b3JlSW1hZ2VzOiB0aGlzLnNjYW5Qcm92aWRlci5jYW5TdG9yZUltYWdlcyxcbiAgICAgIH0sXG4gICAgICAvLyBDYWxsQmFja1VybDogJ2h0dHA6Ly9kZW1vOjUwMDAvcmVwb3J0L2V4dHJhY3RlZC8nLFxuICAgIH07XG4gICAgdGhpcy5mcm9udEltYWdlID0gJ2RhdGE6aW1hZ2UvanBlZztiYXNlNjQsJyArIHBheWxvYWQuRGF0YUZpZWxkcy5Gcm9udEltYWdlO1xuICAgIHRoaXMuYmFja0ltYWdlID0gJ2RhdGE6aW1hZ2UvanBlZztiYXNlNjQsJyArIHBheWxvYWQuRGF0YUZpZWxkcy5CYWNrSW1hZ2U7XG4gICAgaWYgKCF0aGlzLnNjYW5CbGFzdERhdGFbMV0uaW1hZ2UpIHtcbiAgICAgIHBheWxvYWQuU2V0dGluZ3MuSWdub3JlQmFja0ltYWdlID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5sb2dEYXRhLlJlcXVlc3QgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHBheWxvYWQpKTtcblxuICAgIGNvbnNvbGUudGltZUVuZCgncGF5bG9hZCcpO1xuICAgIHRoaXMuX19zdWJzKFxuICAgICAgdGhpcy5zY2FuUHJvdmlkZXIuYmxhc3RQb3N0KHBheWxvYWQpLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoKGU6IGFueSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLm1hbnVhbERhdGFTZXQpIHtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUud2FybignTUFOVUFMIERBVEEgU0VUJyxlKTtcbiAgICAgICAgICAgIHRoaXMubG9nRGF0YS5SZXNwb25zZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZS5lcnJvcikpO1xuXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUV4dHJhY3Rpb25FcnJvcih7fSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygnRUVFJywgZSk7XG4gICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKS5zdWJzY3JpYmUoXG4gICAgICAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIC8vY29uc29sZS5sb2coZGF0YSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBkYXRhLkRhdGE7XG4gICAgICAgIGNvbnNvbGUudGltZUVuZCgndXBsb2FkJyk7XG4gICAgICAgIGNvbnNvbGUudGltZSgncGFyc2UnKTtcbiAgICAgICAgLy8gZGF0YS5JbmZvQ29kZSA9ICcxMDAxJztcbiAgICAgICAgY29uc29sZS50aW1lKCdwJyk7XG4gICAgICAgIHRoaXMubG9nRGF0YS5SZXNwb25zZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgICAgICBjb25zb2xlLnRpbWVFbmQoJ3AnKTtcbiAgICAgICAgLy9sb2FkaW5nLmNsb3NlKCk7XG4gICAgICAgIHRoaXMuZG9jdW1lbnRUeXBlU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnNjYW5pbmcgPSBmYWxzZTtcblxuICAgICAgICBpZiAoZGF0YS5JbmZvQ29kZSA9PT0gJzEwMDEnKSB7XG4gICAgICAgICAgdGhpcy5lcnJvciA9IHRydWU7XG4gICAgICAgICAgY29uc29sZS5sb2coJ1tFUlJPUl0gMTAwMScpO1xuICAgICAgICAgIHRoaXMuZXJyb3JDb2RlID0gJzEwMDEnO1xuICAgICAgICAgIC8vIHRoaXMuc2NhblNpZGUgPSAwO1xuXG4gICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGEuSW5mb0NvZGUgPT09ICcxMDAyJykge1xuICAgICAgICAgIHRoaXMuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdbRVJST1JdIDEwMDInKTtcbiAgICAgICAgICB0aGlzLmVycm9yQ29kZSA9ICcxMDAyJztcbiAgICAgICAgICAvLyB0aGlzLnNjYW5TaWRlID0gMDtcblxuICAgICAgICAgIHRoaXMucHJldmlldyA9IHRydWU7XG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXN1bHRzICYmIGRhdGEuTWV0YWRhdGEubGVuZ3RoID4gMCAmJiBkYXRhLkluZm9Db2RlID09PSAnMTAwMCcpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnRXh0cmFjdGlvbiB0aW1lJywgZGF0YS5BbmFseXNpc1RpbWUpO1xuXG4gICAgICAgICAgLy8gIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuXG4gICAgICAgICAgY29uc29sZS50aW1lKCdwYXJzZWJsYXN0Jyk7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5zY2FuUHJvdmlkZXIucGFyc2VCbGFzdChyZXN1bHRzKTtcbiAgICAgICAgICBjb25zb2xlLnRpbWVFbmQoJ3BhcnNlYmxhc3QnKTtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygnUkVTJywgdGhpcy5yZXN1bHQpO1xuICAgICAgICAgIC8vIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgICAgY29uc3QgbW9kZWwgPSByZXN1bHQubW9kZWw7XG5cbiAgICAgICAgICBpZiAoZGF0YS5JbWFnZURhdGE/LkZhY2VJbWFnZSkge1xuICAgICAgICAgICAgbW9kZWwuX2F2YXRhciA9XG4gICAgICAgICAgICAgICdkYXRhOmltYWdlL2pwZWc7YmFzZTY0LCcgKyBkYXRhLkltYWdlRGF0YT8uRmFjZUltYWdlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChkYXRhLkltYWdlRGF0YT8uRG9jdW1lbnRzKSB7XG4gICAgICAgICAgICBjb25zdCB7IERvY3VtZW50cyB9ID0gZGF0YS5JbWFnZURhdGE7XG4gICAgICAgICAgICBtb2RlbC5pbWFnZXMgPSBEb2N1bWVudHMubWFwKChpbWFnZTogYW55LCBpOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHsgZGF0YTogJ2RhdGE6aW1hZ2UvanBlZztiYXNlNjQsJyArIERvY3VtZW50c1tpXSB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMubW9kZWwgPSBtb2RlbDtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygnTU9ERUwnLCB0aGlzLm1vZGVsKTtcblxuICAgICAgICAgIHRoaXMuYWN0aW9ucy5lbWl0KHtcbiAgICAgICAgICAgIHR5cGU6ICdzY2FuRmluaXNoJyxcbiAgICAgICAgICAgIG1vZGVsLFxuICAgICAgICAgICAgcmVzdWx0cyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVzdWx0ID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnNvbGUudGltZSgnZmYnKTtcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgICAgICB0aGlzLnNjYW5SZXN1bHRzLm5leHQoeyB0eXBlOiAnbW9kZWwnLCBkYXRhOiBtb2RlbCB9KTtcbiAgICAgICAgICAgIC8vIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgLy8gIH0pO1xuICAgICAgICAgICAgY29uc29sZS50aW1lRW5kKCdmZicpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdFUlJPUicpO1xuICAgICAgICAgIGlmICh0aGlzLm1hbnVhbERhdGFTZXQpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXh0cmFjdGlvbkVycm9yKGRhdGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyB0aGlzLnNjYW5TaWRlID0gMDtcbiAgICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIC8vIHRoaXMuZG9jdW1lbnRUeXBlU2VsZWN0ZWQgPSBmYWxzZTtcblxuICAgICAgICAgIC8vIHRoaXMucmV0cnkoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICBjb25zb2xlLnRpbWVFbmQoJ3BhcnNlJyk7XG4gICAgICB9LFxuICAgICAgKGVycikgPT4ge1xuICAgICAgICAvLyBsb2FkaW5nLmNsb3NlKCk7XG4gICAgICAgIC8vIHRoaXMuc2NhblNpZGUgPSAwO1xuICAgICAgICB0aGlzLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5wcmV2aWV3ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5kb2N1bWVudFR5cGVTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuc2NhbmluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICByZXRyeSgpIHtcbiAgICB0aGlzLnByZXZpZXcgPSBmYWxzZTtcbiAgICB0aGlzLnZhbGlkYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmVycm9yQ29kZSA9ICcxMDAwJztcbiAgICB0aGlzLnJlc3VsdCA9IGZhbHNlO1xuICAgIHRoaXMuaWRTY2FuID0gbnVsbDtcbiAgICB0aGlzLmNhbWVyYVByb3ZpZGVyLiRzaG93U3dpdGNoLm5leHQodHJ1ZSk7XG4gICAgaWYgKHRoaXMuZXJyb3IpIHtcbiAgICAgIHRoaXMuZG9jdW1lbnRUeXBlU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2NhbkJsYXN0RGF0YS5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgZWxlbWVudC5pbWFnZSA9IG51bGw7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5lcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLmF1dG9TY2FuKCk7XG4gICAgdGhpcy5zY2FuKCk7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgcmV0YWtlKCkge1xuICAgIHRoaXMudmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgIHRoaXMucHJldmlldyA9IGZhbHNlO1xuICAgIHRoaXMuZXJyb3IgPSBmYWxzZTtcbiAgICB0aGlzLnJlc3VsdCA9IGZhbHNlO1xuICAgIHRoaXMuc2NhblNpZGUgPSAwO1xuICAgIHRoaXMuY2FtZXJhUHJvdmlkZXIuJHNob3dTd2l0Y2gubmV4dCh0cnVlKTtcbiAgICB0aGlzLmltYWdlVmVyaWZpZWQgPSBmYWxzZTtcbiAgICB0aGlzLnNjYW5EYXRhcyA9IFtdO1xuICAgIHRoaXMuc2NhbmluZyA9IGZhbHNlO1xuICAgIHRoaXMuaW1hZ2VzID0gW107XG4gICAgdGhpcy5zY2FuSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgIHRoaXMuc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLmlkU2NhbiA9IG51bGw7XG4gICAgdGhpcy5kb2N1bWVudFR5cGVTZWxlY3RlZCA9IGZhbHNlO1xuICAgIHRoaXMuc2NhbkJsYXN0RGF0YS5mb3JFYWNoKChtOiBhbnkpID0+IHtcbiAgICAgIG0uaW1hZ2UgPSBudWxsO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zY2FuU2Vjb25kU2lkZSA9IGZhbHNlO1xuXG4gICAgdGhpcy5hdXRvU2NhbigpO1xuXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICB1c2UoKSB7XG4gICAgLy8gc2F2ZSBpbWFnZXM/P1xuXG4gICAgaWYgKHRoaXMuc2NhblByb3ZpZGVyLmNhblN0b3JlSW1hZ2VzKSB7XG4gICAgICB0aGlzLmxvZ0RhdGEuRXhwZWN0ZWRPdXRwdXQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMubW9kZWwpKTtcbiAgICAgIGlmICh0aGlzLmxvZ0RhdGEuRXhwZWN0ZWRPdXRwdXQ/Ll9hdmF0YXIpIHtcbiAgICAgICAgZGVsZXRlIHRoaXMubG9nRGF0YS5FeHBlY3RlZE91dHB1dC5fYXZhdGFyO1xuICAgICAgfVxuICAgICAgdGhpcy5fX3N1YnModGhpcy5zY2FuUHJvdmlkZXIuc2VuZExvZyh0aGlzLmxvZ0RhdGEpKS5zdWJzY3JpYmUoKTtcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMubG9nRGF0YSk7XG4gICAgfVxuXG4gICAgdGhpcy5hY3Rpb25zLmVtaXQoe1xuICAgICAgdHlwZTogJ3NjYW5EYXRhQ2xvc2UnLFxuICAgICAgZGF0YToge1xuICAgICAgICBtb2RlbDogdGhpcy5tb2RlbCxcbiAgICAgICAgaW1hZ2VzOiB0aGlzLmltYWdlcyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgc2VsZmllKCkge1xuICAgIGNvbnN0IGF2YXRhciA9IHRoaXMubW9kZWw/Ll9hdmF0YXI7XG4gICAgdGhpcy5kaWFsb2dzXG4gICAgICAuc2NhblNlbGZpZSh7IGF2YXRhciB9KVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3A6IGFueSkgPT4ge1xuICAgICAgICBpZiAocmVzcCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3ApO1xuICAgICAgICAgIGlmICh0aGlzLnNjYW5Qcm92aWRlci5lbmFibGVWZXJpZmljYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VWZXJpZmllZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2NhblJlc3VsdHMubmV4dCh7XG4gICAgICAgICAgICB0eXBlOiAnYXZhdGFyJyxcbiAgICAgICAgICAgIGRhdGE6IHJlc3AuaW1hZ2VBc0RhdGFVcmwsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy8gdGhpcy5tb2RlbC5fYXZhdGFyID0gcmVzcC5pbWFnZUFzRGF0YVVybDtcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBjYW1lcmFPZmYoZXY6IGFueSkge1xuICAgIHRoaXMuY2FtZXJhUmVhZHkgPSBmYWxzZTtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHZpZGVvUmVhZHkoZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICBjb25zb2xlLmxvZygnUkVBRFknLCBldmVudCk7XG4gICAgdGhpcy5jYW1lcmFSZWFkeSA9IGV2ZW50O1xuICAgIGlmICh0aGlzLmNhbWVyYVJlYWR5ICYmICF0aGlzLnNjYW5JblByb2dyZXNzICYmICF0aGlzLm1hbnVhbCkge1xuICAgICAgdGhpcy5zY2FuSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5zY2FuKCk7XG4gICAgICB9LCAyMCk7XG4gICAgfVxuICB9XG5cbiAgbWFudWFsU2V0KGtleTogYm9vbGVhbikge1xuICAgIGlmIChrZXkpIHtcbiAgICAgIGlmICh0aGlzLnNjYW5Qcm92aWRlci5jb25maWcuc2hvd01hbnVhbE1vZGUpIHtcbiAgICAgICAgdGhpcy5tYW51YWxNb2RlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmFjdGlvbnMuZW1pdCh7XG4gICAgICAgICAgdHlwZTogJ21hbnVhbE1vZGUnLFxuICAgICAgICAgIGRhdGE6IHt9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcm9tcHRNYW51YWwgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zY2FuVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2NhblRpbWVvdXQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pbWFnZUhhbmRsZXJTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuaW1hZ2VIYW5kbGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coJ0RFU1RST1hZJyk7XG5cbiAgICB0aGlzLl9fZGVzdHJveSgpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyXG4gICpuZ0lmPVwiY2FtZXJhUHJvdmlkZXIucmVjdFBvc2l0aW9uLnQgPiAwICYmIGRpc3BsYXlJbmZvICYmICFyZXN1bHQgJiYgIW1hbnVhbFwiXG4+XG4gIDxkaXYgY2xhc3M9XCJoaW50XCIgW25nU3R5bGVdPVwieyB0b3A6IGNhbWVyYVByb3ZpZGVyLmhpbnRQb3NpdGlvbiArICdweCcgfVwiPlxuICAgIDxzcGFuIGNsYXNzPVwidGV4dFwiPlxuICAgICAge3sgZGlzcGxheUluZm8gfCB0cmFuc2xhdGUgfX1cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RGlhbG9nXCI+XG4gIDxkaXYgY2xhc3M9XCJwYWdlVHVyblwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5uZXJcIj5cbiAgICAgICAgPG1hdC1pY29uPjM2MDwvbWF0LWljb24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlkU2NhbiA9PT0gJ0JBQ0snXCI+XG4gICAgICAgICAgICB7eyBcInNjYW5kb2MudHVybkFuZENhcHR1cmUuYmFja1wiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlkU2NhbiA9PT0gJ0ZST05UJ1wiPlxuICAgICAgICAgICAge3sgXCJzY2FuZG9jLnR1cm5BbmRDYXB0dXJlLmZyb250XCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxmb290ZXI+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImNsb3NlRGlhbG9nKClcIiBtYXQtcmFpc2VkLWJ1dHRvbj5PazwvYnV0dG9uPlxuICAgICAgPC9mb290ZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9tcHRNYW51YWxcIj5cbiAgPGRpdiBjbGFzcz1cIm1hbnVhbE1vZGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImlubmVyXCI+XG4gICAgICAgIDxtYXQtaWNvbj5zY3JlZW5zaG90X2tleWJvYXJkPC9tYXQtaWNvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHRcIj5cbiAgICAgICAgICB7eyBcInNjYW5kb2MubWFudWFsXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxmb290ZXI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogOHB4XCJcbiAgICAgICAgICAoY2xpY2spPVwibWFudWFsU2V0KHRydWUpXCJcbiAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgICA+XG4gICAgICAgICAge3sgXCJzY2FuZG9jLnllc1wiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogOHB4XCJcbiAgICAgICAgICAoY2xpY2spPVwibWFudWFsU2V0KGZhbHNlKVwiXG4gICAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgPlxuICAgICAgICAgIHt7IFwic2NhbmRvYy5ub1wiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9mb290ZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG48bmctY29udGFpbmVyICpuZ0lmPVwicmVzdWx0XCI+XG4gIDxzZWN0aW9uPlxuICAgIDxuZ3gtc2Nhbi1yZXN1bHRzXG4gICAgICAoYWN0aW9uKT1cInNlbGZpZSgpXCJcbiAgICAgIFtmb3JtXT1cImZvcm1cIlxuICAgICAgW2RhdGFdPVwic2NhblJlc3VsdHNcIlxuICAgID48L25neC1zY2FuLXJlc3VsdHM+XG5cbiAgICA8Zm9vdGVyPlxuICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yLTRcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwicmV0YWtlKClcIj5cbiAgICAgICAgICB7eyBcInNjYW5kb2MucmVUYWtlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZXJyb3IgfHwgZm9ybS5pbnZhbGlkXCJcbiAgICAgICAgICBjbGFzcz1cIm1sLTRcIlxuICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgICAgKGNsaWNrKT1cInVzZSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IFwic2NhbmRvYy51c2VEYXRhXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvb3Rlcj5cbiAgPC9zZWN0aW9uPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJtYW51YWxcIj5cbiAgPHNlY3Rpb24+XG4gICAgPG5neC1tYW51YWwtc2NhbiAoYWN0aW9uKT1cIm1hbnVhbFNjYW5EYXRhKCRldmVudClcIj48L25neC1tYW51YWwtc2Nhbj5cbiAgPC9zZWN0aW9uPlxuPC9uZy1jb250YWluZXI+XG48bmctY29udGFpbmVyICpuZ0lmPVwiIXJlc3VsdCAmJiBkb2N1bWVudFR5cGVTZWxlY3RlZCAmJiAhbWFudWFsXCI+XG4gIDxzZWN0aW9uPlxuICAgIDxkaXYgI3dyYXBlciBjbGFzcz1cIndyYXBlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImxvYWRpbmdcIiAqbmdJZj1cIighY2FtZXJhUmVhZHkgJiYgIXByZXZpZXcpIHx8IHNjYW5pbmdcIj5cbiAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFlcnJvclwiPlxuICAgICAgICA8bmd4LXNjYW5kb2Mtd2ViY2FtXG4gICAgICAgICAgKm5nSWY9XCIhcHJldmlldyAmJiAhc2NhbmluZ1wiXG4gICAgICAgICAgY2xhc3M9XCJtYWluXCJcbiAgICAgICAgICAjd2ViY2FtXG4gICAgICAgICAgdHlwZT1cImRvY3VtZW50XCJcbiAgICAgICAgICBbdHJpZ2dlcl09XCJ0cmlnZ2VyXCJcbiAgICAgICAgICBbaW1hZ2VIYW5kbGVyXT1cImltYWdlSGFuZGxlclwiXG4gICAgICAgICAgKGltYWdlQ2FwdHVyZSk9XCJoYW5kbGVJbWFnZSgkZXZlbnQpXCJcbiAgICAgICAgICAoaW5pdEVycm9yKT1cImhhbmRsZUluaXRFcnJvcigkZXZlbnQpXCJcbiAgICAgICAgICAoZGVzdHJveWVkKT1cImNhbWVyYU9mZigkZXZlbnQpXCJcbiAgICAgICAgICAodmlkZW9SZWFkeSk9XCJ2aWRlb1JlYWR5KCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgIDwvbmd4LXNjYW5kb2Mtd2ViY2FtPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicHJldmlld0RhdGFcIlxuICAgICAgICAqbmdJZj1cInByZXZpZXdcIlxuICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgIHotaW5kZXg6IDIwO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInAtMTYgZXJyb3JcIiAqbmdJZj1cImVycm9yXCI+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24+ZXJyb3Jfb3V0bGluZTwvbWF0LWljb25cbiAgICAgICAgICAgICAgPjxzcGFuIGNsYXNzPVwibWwtOFwiPnt7XG4gICAgICAgICAgICAgICAgXCJzY2FuZG9jLnVuYWJsZVRvRGV0ZWN0SWRcIiB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXJyb3JDb2RlID09PSAnMTAwMSdcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICB7eyBcInNjYW5kb2MuZXh0cmFjdGlvbi5jMTAwMVwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXJyb3JDb2RlID09PSAnMTAwMidcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICB7eyBcInNjYW5kb2MuZXh0cmFjdGlvbi5jMTAwMlwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDx1bCAqbmdJZj1cImVycm9yQ29kZSA9PT0gJzEwMDAnXCI+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICB7eyBcInNjYW5kb2MucGxhY2VJZENsb3NlVG9EZXZpY2VcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAge3sgXCJzY2FuZG9jLmVuc3VyZVN1ZmZpY2llbnRMaWdodFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICB7eyBcInNjYW5kb2MuaG9sZERvY3VtZW50U3RlYWR5XCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIHt7IFwic2NhbmRvYy5tYWtlU3VyZUFsbEVkZ2VzT2ZUaGVJZEFyZVZpc2libGVcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgIFwic2NhbmRvYy5tYWtlU3VyZVRoZXJlQXJlTm9HbGFyZUFuZFNoYWRvd3NPblRoZUlkXCIgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNjYW5QcmV2aWV3XCIgKm5nSWY9XCIhZXJyb3IgJiYgIXNjYW5pbmdcIj5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJweS0xNlwiIHN0eWxlPVwiZm9udC1zaXplOiAxNnB4XCI+XG4gICAgICAgICAge3tcbiAgICAgICAgICAgIFwic2NhbmRvYy5lbnN1cmVBbGxUZXh0c0FyZVZpc2libGVcIlxuICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgIH19XG4gICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImltYWdlXCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWltYWdlXT1cIid1cmwoJyArIHByZXZpZXcgKyAnKSdcIlxuICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxmb290ZXIgKm5nSWY9XCJwcmV2aWV3XCI+XG4gICAgICA8IS0tIDxkaXYgY2xhc3M9XCJkaXNwbGF5SW5mb1wiICpuZ0lmPVwiIXByZXZpZXcgJiYgY2FtZXJhUmVhZHlcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5SW5mb1wiPlxuICAgICAgICB7eyBkaXNwbGF5SW5mbyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+IC0tPlxuICAgICAgPCEtLSA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiAyNnB4XCI+XG4gICAgICA8ZGl2XG4gICAgICAgIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyOyBmb250LXNpemU6IDE4cHhcIlxuICAgICAgICAqbmdJZj1cImlkU2NhbiAmJiAhcHJldmlldyAmJiBjYW1lcmFSZWFkeVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpZFNjYW4gPT09ICdCQUNLJ1wiPlxuICAgICAgICAgIFR1cm4gZG9jdW1lbnQgYW5kOlxuICAgICAgICAgIHt7IFwic2NhbmRvYy5jYXB0dXJlQmFja1wiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaWRTY2FuID09PSAnRlJPTlQnXCI+XG4gICAgICAgICAgVHVybiBkb2N1bWVudCBhbmQ6XG4gICAgICAgICAge3sgXCJzY2FuZG9jLmNhcHR1cmVGcm9udFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+IC0tPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiICpuZ0lmPVwicHJldmlld1wiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwibXItNFwiIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJyZXRyeSgpXCI+XG4gICAgICAgICAge3sgXCJzY2FuZG9jLnJldHJ5XCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIFtkaXNhYmxlZF09XCJlcnJvclwiXG4gICAgICAgICAgY2xhc3M9XCJtbC00XCJcbiAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgICAgIChjbGljayk9XCJjb250aW51ZSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IFwic2NhbmRvYy5jb250aW51ZVdpdGhTZWxlY3RlZEltYWdlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvb3Rlcj5cbiAgPC9zZWN0aW9uPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
720
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvY29yZS9jb21wb25lbnRzL3NjYW4vc2Nhbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvY29yZS9jb21wb25lbnRzL3NjYW4vc2Nhbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixNQUFNLEVBQ04sWUFBWSxFQUlaLHVCQUF1QixFQUN2QixLQUFLLEVBSUwsV0FBVyxHQUdaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQWdELE1BQU0sTUFBTSxDQUFDO0FBRzdFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQXlCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQU1oRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQTBCbEQsTUFBTSxPQUFPLGFBQ1gsU0FBUSxhQUFhO0lBZ0dyQixZQUNTLEVBQXFCLEVBQ3BCLElBQVksRUFDYixjQUF3QyxFQUN2QyxRQUFrQixFQUNsQixjQUE4QixFQUM5QixRQUFrQixFQUVsQixTQUEyQixFQUUzQixRQUFxQixFQUNyQixJQUFzQixFQUV0QixJQUFrQixDQUFDLDhCQUE4Qjs7UUFFekQsS0FBSyxFQUFFLENBQUM7UUFkRCxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNwQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ2IsbUJBQWMsR0FBZCxjQUFjLENBQTBCO1FBQ3ZDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFFbEIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFFM0IsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixTQUFJLEdBQUosSUFBSSxDQUFrQjtRQUV0QixTQUFJLEdBQUosSUFBSSxDQUFjO1FBMUc1QixrQkFBYSxHQUFRO1lBQ25CO2dCQUNFLEtBQUssRUFBRSwwQ0FBMEM7Z0JBQ2pELFdBQVcsRUFBRSxxREFBcUQ7Z0JBQ2xFLElBQUksRUFBRSxPQUFPO2FBQ2Q7WUFDRDtnQkFDRSxLQUFLLEVBQUUseUNBQXlDO2dCQUNoRCxXQUFXLEVBQUUsb0RBQW9EO2dCQUNqRSxRQUFRLEVBQUUsSUFBSTtnQkFDZCxJQUFJLEVBQUUsTUFBTTthQUNiO1NBQ0YsQ0FBQztRQUNPLFNBQUksR0FBRyxTQUFTLENBQUM7UUFFaEIsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFJdkMsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzVCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLGNBQVMsR0FBVyxDQUFDLENBQUM7UUFFdEIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFFdkIsMEJBQTBCO1FBQzFCLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUs3QixZQUFPLEdBQVEsSUFBSSxDQUFDO1FBR3BCLGNBQVMsR0FBRyxNQUFNLENBQUM7UUFDbkIsZ0JBQVcsR0FBUSx1QkFBdUIsQ0FBQztRQUUzQywwQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFDOUIsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUNkLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXBCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFFaEIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFLckIsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzdCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLFlBQU8sR0FBb0I7WUFDekIsd0JBQXdCLEVBQUUsSUFBSTtZQUM5QixPQUFPLEVBQUUsSUFBSTtZQUNiLFFBQVEsRUFBRSxJQUFJO1lBQ2QsY0FBYyxFQUFFLElBQUk7U0FDckIsQ0FBQztRQUVGLGNBQVMsR0FBUSxFQUFFLENBQUM7UUFFcEIsV0FBTSxHQUFRLElBQUksQ0FBQztRQUduQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGtCQUFhLEdBQVUsRUFBRSxDQUFDO1FBQzFCLGNBQVMsR0FBUSxDQUFDLENBQUM7UUFDWixZQUFPLEdBQW9CLElBQUksT0FBTyxFQUFVLENBQUM7UUFDeEQsK0ZBQStGO1FBQ3hGLGVBQVUsR0FBOEIsSUFBSSxPQUFPLEVBRXZELENBQUM7UUFDSixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixTQUFJLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLGFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUM3QyxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQzVCLHdCQUFtQixHQUFlO1lBQ2hDLElBQUksRUFBRSxDQUFDO1lBQ1AsSUFBSSxFQUFFLENBQUM7U0FDUixDQUFDO1FBK0JBLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtZQUN6QyxjQUFjO1lBQ2QsK0JBQStCO1lBQy9CLGdDQUFnQztZQUNoQyxtQ0FBbUM7WUFDbkMsZ0NBQWdDO1lBQ2hDLGlDQUFpQztZQUNqQyxLQUFLO1NBQ047SUFDSCxDQUFDO0lBeENELElBQWlDLEtBQUs7UUFDcEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFHRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFpQ08sWUFBWTtRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2IsT0FBTyxFQUFFLElBQUk7WUFDYixRQUFRLEVBQUUsSUFBSTtZQUNkLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLHdCQUF3QixFQUFFLElBQUk7U0FDL0IsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLG9CQUFvQjtRQUNwQixtQkFBbUI7UUFFbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7UUFFbEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDM0MsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7Z0JBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQzthQUN4QztZQUNELElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVNLFdBQVcsQ0FBQyxXQUF3QjtRQUN6QyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQzdCO1FBQ0QsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQy9CLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7WUFFbEMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRTtnQkFDckMsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztnQkFDMUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztnQkFDekIsZ0NBQWdDO2dCQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQzthQUN2QjtZQUVELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBRXJDLElBQUksV0FBVyxDQUFDLFNBQVMsRUFBRTtnQkFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDdkQ7WUFFRCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3hCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDckQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUU7b0JBQ3hDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7d0JBQ2pDLE1BQU0saUJBQWlCLEdBQ3JCLHlDQUF5Qzs0QkFDekMsR0FBRyxDQUFDLFlBQVk7NEJBQ2hCLDREQUE0RCxDQUFDO3dCQUMvRCxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO29CQUMzQyxDQUFDLENBQUMsQ0FBQztpQkFDSjtnQkFDRCxnREFBZ0Q7Z0JBRWhELE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3JCLGNBQWM7Z0JBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDcEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUMsa0JBQWtCO2dCQUNsQixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztnQkFDeEIsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDcEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7Z0JBRXZCLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2FBQzNDO2lCQUFNO2dCQUNMLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtvQkFDcEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2lCQUNiO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxlQUFlLENBQ3JCLFdBQWdCLEVBQ2hCLE1BQVcsRUFDWCxPQUEyQixPQUFPO1FBRWxDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUN4RSxJQUFJLENBQUMsV0FBVyxHQUFHLGdCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDcEQscUNBQXFDO1lBQ3JDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMvQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBRWpELDRDQUE0QztZQUM1QywyQ0FBMkM7WUFDM0MsSUFBSTtZQUVKLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7Z0JBQ3RCLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUV6QyxrREFBa0Q7Z0JBQ2xELElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBRXhCLElBQUksS0FBSyxHQUFHLGFBQWEsQ0FBQztnQkFDMUIsSUFBSSxJQUFJLElBQUksUUFBUSxFQUFFO29CQUNwQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUM3RCxLQUFLLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQztpQkFDckI7Z0JBRUQsSUFBSSxRQUFRLEtBQUssTUFBTSxFQUFFO29CQUN2Qiw0QkFBNEI7b0JBQzVCLElBQUksSUFBSSxLQUFLLE9BQU8sRUFBRTt3QkFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO3FCQUNyQzt5QkFBTTt3QkFDTCxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7cUJBQ3JDO29CQUVELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUU7d0JBQzlELE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBQ3ZCLElBQUksSUFBSSxJQUFJLFFBQVEsRUFBRTs0QkFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQzt5QkFDMUM7d0JBQ0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO3FCQUN4Qjt5QkFBTTt3QkFDTCxNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDckMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7d0JBRTNCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO3dCQUV6QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO3dCQUUzQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTs0QkFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7NEJBQ3ZCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7eUJBQ3pCO3dCQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsbUJBQW1CLENBQUM7cUJBQ3hDO2lCQUNGO3FCQUFNO29CQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztvQkFDcEMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDdkIsSUFBSSxJQUFJLElBQUksUUFBUSxFQUFFO3dCQUNwQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO3FCQUMxQztvQkFDRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7aUJBQ3hCO2dCQUVELElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO2dCQUV4QiwrQ0FBK0M7Z0JBRS9DLHlCQUF5QjthQUMxQjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztnQkFDeEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ2I7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFFeEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVNLGVBQWUsQ0FBQyxLQUFzQjtRQUMzQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNwRCxDQUFDO0lBRU8sVUFBVSxDQUFDLE9BQTJCLE9BQU87UUFDbkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVPLHFCQUFxQixDQUFDLElBQVM7UUFDckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLDhDQUE4QztRQUM5QyxnREFBZ0Q7UUFDaEQsSUFBSTtRQUNKLHVEQUF1RDtRQUV2RCxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuRSxDQUFDO0lBQ08seUJBQXlCLENBQy9CLEdBQVEsRUFDUixPQUEyQixPQUFPO1FBRWxDLGlDQUFpQztRQUNqQyxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUM7UUFDL0QsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUVsRCxJQUNFLElBQUksR0FBRyxlQUFlO1lBQ3RCLENBQUMsSUFBSSxDQUFDLHFCQUFxQjtRQUUzQixJQUFJO1FBQ0osc0NBQXNDO1VBQ3RDO1lBQ0EsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztZQUNsQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFFL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUNqQixrQ0FBa0M7Z0JBQ2xDLDhDQUE4QztnQkFDOUMsMkNBQTJDO2dCQUMzQyxNQUFNO2dCQUNOLHVCQUF1QjtnQkFDdkIsbUNBQW1DO2dCQUNuQyxNQUFNO2dCQUNOLEtBQUs7Z0JBRUwsb0RBQW9EO2dCQUNwRCwyQkFBMkI7Z0JBQzNCLE1BQU07Z0JBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7b0JBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO29CQUV6QiwwQkFBMEI7aUJBQzNCO2dCQUVELHNDQUFzQztnQkFDdEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBRTVCLDJCQUEyQjtnQkFDM0IseURBQXlEO2dCQUN6RCx3QkFBd0I7Z0JBQ3hCLGdCQUFnQjtnQkFDaEIsNkJBQTZCO2dCQUM3QixNQUFNO2dCQUNOLGlDQUFpQztnQkFDakMsd0NBQXdDO2dCQUN4QyxNQUFNO1lBQ1IsQ0FBQyxDQUFDLENBQUM7WUFDSCxxQ0FBcUM7WUFDckMsc0RBQXNEO1lBRXRELHdCQUF3QjtZQUN4QixrREFBa0Q7WUFDbEQsc0NBQXNDO1lBQ3RDLGdDQUFnQztZQUNoQyxzQ0FBc0M7WUFDdEMsMEJBQTBCO1lBQzFCLGlCQUFpQjtZQUNqQiw2Q0FBNkM7WUFDN0MsU0FBUztZQUNULGtCQUFrQjtZQUNsQixpQ0FBaUM7WUFDakMsU0FBUztZQUNULE9BQU87WUFDUCxpQkFBaUI7U0FDbEI7SUFDSCxDQUFDO0lBQ0QsZUFBZTtRQUNiLHVCQUF1QjtRQUV2QixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUV4QixzREFBc0Q7UUFFdEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbkUsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDekIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDMUQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWhCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTtZQUNoRSxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztZQUN6RSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7UUFFSCwrREFBK0Q7UUFDL0QsNEJBQTRCO1FBQzVCLGlCQUFpQjtRQUNqQixrQ0FBa0M7UUFDbEMscUNBQXFDO1FBQ3JDLFFBQVE7UUFFUiwwQ0FBMEM7UUFDMUMsa0NBQWtDO1FBQ2xDLDZDQUE2QztRQUU3QyxtREFBbUQ7UUFDbkQsdURBQXVEO1FBQ3ZELHNDQUFzQztRQUN0QywyQ0FBMkM7UUFDM0MsbUNBQW1DO1FBQ25DLFlBQVk7UUFFWixnREFBZ0Q7UUFFaEQsZ0RBQWdEO1FBQ2hELGlFQUFpRTtRQUNqRSxVQUFVO1FBRVYsb0NBQW9DO1FBQ3BDLGlFQUFpRTtRQUNqRSx5QkFBeUI7UUFDekIsaURBQWlEO1FBQ2pELDhDQUE4QztRQUM5Qyx1REFBdUQ7UUFDdkQsNkJBQTZCO1FBQzdCLG1DQUFtQztRQUNuQywrQkFBK0I7UUFFL0IseUVBQXlFO1FBQ3pFLGtDQUFrQztRQUVsQyxrRUFBa0U7UUFFbEUsMENBQTBDO1FBQzFDLFVBQVU7UUFDVixpQ0FBaUM7UUFDakMsVUFBVTtRQUNWLE1BQU07UUFDTixLQUFLO0lBQ1AsQ0FBQztJQUVELGlCQUFpQixDQUFDLE1BQVc7UUFDM0IsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUM7UUFFakMsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4RCxjQUFjLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUM3QixjQUFjLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUMvQixNQUFNLEdBQUcsR0FBUSxjQUFjLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFN0QsSUFBSSxHQUFHLEVBQUU7WUFDUCxHQUFHLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO1lBQ2xDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNoRCxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVM7UUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBRXpCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUMvQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN2QyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBUztRQUN0QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU8sWUFBWSxDQUFDLEdBQVE7UUFDM0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV0QixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3BFO1FBQ0QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFDRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztZQUNoRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDZCxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQiwwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN4QixPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sT0FBTyxHQUFRO1lBQ25CLHdCQUF3QixFQUFFLElBQUk7WUFDOUIsVUFBVSxFQUFFO2dCQUNWLGNBQWMsRUFBRSxRQUFRO2dCQUN4QixpQkFBaUIsRUFBRSxLQUFLO2dCQUN4QixhQUFhLEVBQUUsUUFBUTtnQkFDdkIsZ0JBQWdCLEVBQUUsS0FBSztnQkFDdkIsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO2dCQUNoQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7YUFDckU7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsY0FBYyxFQUFFLElBQUk7Z0JBQ3BCLHlCQUF5QixFQUFFLElBQUk7Z0JBQy9CLDBCQUEwQixFQUFFLElBQUk7Z0JBQ2hDLGtCQUFrQixFQUFFLElBQUk7Z0JBQ3hCLGNBQWMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWM7YUFDakQ7WUFDRCxxREFBcUQ7U0FDdEQsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLEdBQUcseUJBQXlCLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7UUFDNUUsSUFBSSxDQUFDLFNBQVMsR0FBRyx5QkFBeUIsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQztRQUMxRSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUU7WUFDaEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1NBQ3pDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFM0QsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsTUFBTSxDQUNULElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDdkMsVUFBVSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUN0QixxQ0FBcUM7Z0JBQ3JDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFFNUQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ2hDO1lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztnQkFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQUM7WUFDSCx5QkFBeUI7WUFDekIsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FDSCxDQUNGLENBQUMsU0FBUyxDQUNULENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDWixvQkFBb0I7WUFDcEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUMxQixPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFCLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsMEJBQTBCO1lBQzFCLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDekQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNyQixrQkFBa0I7WUFDbEIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztZQUNqQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUVyQixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssTUFBTSxFQUFFO2dCQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztnQkFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7Z0JBQ3hCLHFCQUFxQjtnQkFFckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3hCLE9BQU87YUFDUjtZQUNELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxNQUFNLEVBQUU7Z0JBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztnQkFDeEIscUJBQXFCO2dCQUVyQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztnQkFDcEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDeEIsT0FBTzthQUNSO1lBQ0QsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssTUFBTSxFQUFFO2dCQUNuRSxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFFbEQseUJBQXlCO2dCQUV6QixPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUMzQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDckQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDOUIsbUNBQW1DO2dCQUNuQywyQkFBMkI7Z0JBRTNCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBRTNCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUU7b0JBQzdCLEtBQUssQ0FBQyxPQUFPO3dCQUNYLHlCQUF5QixHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDO2lCQUN6RDtnQkFFRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFO29CQUM3QixNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztvQkFDckMsS0FBSyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLENBQVMsRUFBRSxFQUFFO3dCQUNyRCxPQUFPLEVBQUUsSUFBSSxFQUFFLHlCQUF5QixHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUM1RCxDQUFDLENBQUMsQ0FBQztpQkFDSjtnQkFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztnQkFDbkIsb0NBQW9DO2dCQUNwQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDaEIsSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLElBQUksRUFBRTt3QkFDSixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7d0JBQ2pCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtxQkFDcEI7aUJBQ0YsQ0FBQyxDQUFDO2dCQUVILElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUU7b0JBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTt3QkFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7d0JBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ25CLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7d0JBRXhCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQzt3QkFDdEQsMkJBQTJCO3dCQUMzQixPQUFPO3dCQUNQLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3hCLENBQUMsQ0FBQyxDQUFDO2lCQUNKO2FBQ0Y7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDckIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO29CQUN0QixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ2xDO2dCQUNELHFCQUFxQjtnQkFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO29CQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztvQkFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzFCLENBQUMsQ0FBQyxDQUFDO2dCQUNILHFDQUFxQztnQkFFckMsZ0JBQWdCO2FBQ2pCO1lBRUQsMkJBQTJCO1lBQzNCLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0IsQ0FBQyxFQUNELENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDTixtQkFBbUI7WUFDbkIscUJBQXFCO1lBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7WUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUU7Z0JBQzFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1osSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU0sTUFBTTtRQUNYLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDcEMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUU1QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFaEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsR0FBRztRQUNELGdCQUFnQjtRQUVoQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNyRSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLE9BQU8sRUFBRTtnQkFDeEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUM7YUFDNUM7WUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pFLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzNCO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDaEIsSUFBSSxFQUFFLGVBQWU7WUFDckIsSUFBSSxFQUFFO2dCQUNKLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2FBQ3BCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELE1BQU07UUFDSixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztRQUNuQyxJQUFJLENBQUMsT0FBTzthQUNULFVBQVUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDO2FBQ3RCLFdBQVcsRUFBRTthQUNiLFNBQVMsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ3ZCLElBQUksSUFBSSxFQUFFO2dCQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xCLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsRUFBRTtvQkFDeEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7aUJBQzNCO2dCQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO29CQUNwQixJQUFJLEVBQUUsUUFBUTtvQkFDZCxJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWM7aUJBQzFCLENBQUMsQ0FBQztnQkFDSCw0Q0FBNEM7Z0JBQzVDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDekI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxTQUFTLENBQUMsRUFBTztRQUNmLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFjO1FBQ3ZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQzVELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQzNCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2QsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQ1I7SUFDSCxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQVk7UUFDcEIsSUFBSSxHQUFHLEVBQUU7WUFDUCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRTtnQkFDM0MsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ25CO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO29CQUNoQixJQUFJLEVBQUUsWUFBWTtvQkFDbEIsSUFBSSxFQUFFLEVBQUU7aUJBQ1QsQ0FBQyxDQUFDO2FBQ0o7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ2hDO1FBQ0QsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUU7WUFDakMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzdDO1FBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV4QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQzs7MEdBbHpCVSxhQUFhOzhGQUFiLGFBQWEsNFJDM0QxQix5OU1BMk5BOzJGRGhLYSxhQUFhO2tCQU56QixTQUFTOytCQUNFLFVBQVUsbUJBR0gsdUJBQXVCLENBQUMsTUFBTTtrV0FtQnRDLElBQUk7c0JBQVosS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksT0FBTztzQkFBaEIsTUFBTTtnQkEyREUsVUFBVTtzQkFBbEIsS0FBSztnQkFNMkIsS0FBSztzQkFBckMsV0FBVzt1QkFBQyxjQUFjO2dCQUszQixRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBWaWV3Q2hpbGQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT3V0cHV0LFxuICBIb3N0TGlzdGVuZXIsXG4gIEVsZW1lbnRSZWYsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgTmdab25lLFxuICBJbmplY3RvcixcbiAgSG9zdEJpbmRpbmcsXG4gIFZpZXdSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUsIG9mLCBmb3JrSm9pbiwgZnJvbSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcblxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBzd2l0Y2hNYXAsIG1hcCwgZGVsYXksIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFNjYW5Qcm92aWRlciB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9zY2FuLnByb3ZpZGVyJztcbmltcG9ydCB7IFdlYmNhbUltYWdlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9jb21wb25lbnRzL3dlYmNhbS9kb21haW4vd2ViY2FtLWltYWdlJztcbmltcG9ydCB7IFdlYmNhbUluaXRFcnJvciB9IGZyb20gJy4uLy4uLy4uL2NvcmUvY29tcG9uZW50cy93ZWJjYW0vZG9tYWluL3dlYmNhbS1pbml0LWVycm9yJztcbmltcG9ydCB7IEF1dGhQcm92aWRlciB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9hdXRoLnByb3ZpZGVyJztcbmltcG9ydCB7IE5neFNjYW5kb2NDYW1lcmFQcm92aWRlciB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9jYW1lcmEucHJvdmlkZXInO1xuaW1wb3J0IHsgTGF5b3V0UHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9wcm92aWRlcnMvbGF5b3V0LnByb3ZpZGVyJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVdpbmRvdyBleHRlbmRzIFdpbmRvdyB7XG4gIFRleHREZXRlY3RvcjogYW55O1xufVxuXG5pbnRlcmZhY2UgVHJvdWJsZXNob290aW5nIHtcbiAgUmVxdWVzdDogYW55O1xuICBSZXNwb25zZTogYW55O1xuICBFeHBlY3RlZE91dHB1dDogYW55O1xuICBBY2NlcHRUZXJtc0FuZENvbmRpdGlvbnM6IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBUaW1lc3RhbXBzIHtcbiAgdGltZTogbnVtYmVyO1xuICBsb2FkOiBudW1iZXI7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1zY2FuJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NjYW4uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zY2FuLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY2FuQ29tcG9uZW50XG4gIGV4dGVuZHMgQmFzZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveVxue1xuICBzY2FuQmxhc3REYXRhOiBhbnkgPSBbXG4gICAge1xuICAgICAgdGl0bGU6ICdwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLmZyb250JyxcbiAgICAgIGRlc2NyaXB0aW9uOiAncG1zLmRpYWxvZ3MuY29tcG9uZW50cy5zY2FuUHJvZmlsZS5mcm9udERlc2NyaXB0aW9uJyxcbiAgICAgIHNpZGU6ICdGUk9OVCcsXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ3Btcy5kaWFsb2dzLmNvbXBvbmVudHMuc2NhblByb2ZpbGUuYmFjaycsXG4gICAgICBkZXNjcmlwdGlvbjogJ3Btcy5kaWFsb2dzLmNvbXBvbmVudHMuc2NhblByb2ZpbGUuYmFja0Rlc2NyaXB0aW9uJyxcbiAgICAgIGRpc2FibGVkOiB0cnVlLFxuICAgICAgc2lkZTogJ0JBQ0snLFxuICAgIH0sXG4gIF07XG4gIEBJbnB1dCgpIHR5cGUgPSAnZGVza3RvcCc7XG4gIEBJbnB1dCgpIGRpYWxvZ3M6IGFueTtcbiAgQE91dHB1dCgpIGFjdGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIGRldmljZUlkPzogc3RyaW5nO1xuXG4gIHNjYW5SZXN1bHRzID0gbmV3IFN1YmplY3QoKTtcbiAgc2NhblNlY29uZFNpZGUgPSBmYWxzZTtcbiAgc3RhcnRUaW1lOiBudW1iZXIgPSAwO1xuXG4gIHNjYW5JblByb2dyZXNzID0gZmFsc2U7XG5cbiAgLy8gd2ViY2FtIHNuYXBzaG90IHRyaWdnZXJcbiAgZG9jdW1lbnRUeXBlU2VsZWN0ZWQgPSBmYWxzZTtcbiAgaW1hZ2VIYW5kbGVyU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuICBzZWxlY3RlZFNpZGU6IGFueTtcbiAgaW1hZ2VzOiBhbnk7XG4gIHNjYW5UaW1lb3V0OiBhbnk7XG4gIHByZXZpZXc6IGFueSA9IG51bGw7XG4gIHNjYW5UeXBlOiBhbnk7XG5cbiAgZXJyb3JDb2RlID0gJzEwMDAnO1xuICBkaXNwbGF5SW5mbzogYW55ID0gJ3NjYW5kb2MuaW5mby5wb3NpdGlvbic7XG5cbiAgdmVyaWZpY2F0aW9uRXJyb3JTZW50ID0gZmFsc2U7XG4gIGVycm9yID0gZmFsc2U7XG4gIGNhbWVyYVJlYWR5ID0gZmFsc2U7XG4gIHJlc3VsdDogYW55O1xuICBzY2FuaW5nID0gZmFsc2U7XG5cbiAgcHJvbXB0TWFudWFsID0gZmFsc2U7XG5cbiAgZnJvbnRJbWFnZTogYW55O1xuICBiYWNrSW1hZ2U6IGFueTtcblxuICBpbWFnZUhhbmRsZXIgPSBuZXcgU3ViamVjdCgpO1xuICBtYW51YWxEYXRhU2V0ID0gZmFsc2U7XG4gIGxvZ0RhdGE6IFRyb3VibGVzaG9vdGluZyA9IHtcbiAgICBBY2NlcHRUZXJtc0FuZENvbmRpdGlvbnM6IHRydWUsXG4gICAgUmVxdWVzdDogbnVsbCxcbiAgICBSZXNwb25zZTogbnVsbCxcbiAgICBFeHBlY3RlZE91dHB1dDogbnVsbCxcbiAgfTtcblxuICBzY2FuRGF0YXM6IGFueSA9IFtdO1xuICBzY2FuU2lkZTogYW55O1xuICBpZFNjYW46IGFueSA9IG51bGw7XG4gIHdlYmNhbUltYWdlPzogV2ViY2FtSW1hZ2U7XG4gIG1vZGVsOiBhbnk7XG4gIHZhbGlkYXRpb24gPSBmYWxzZTtcbiAgc2Nhbm5lZEltYWdlczogYW55W10gPSBbXTtcbiAgc2NhbkRlbGF5OiBhbnkgPSAwO1xuICBwdWJsaWMgdHJpZ2dlcjogU3ViamVjdDxudW1iZXI+ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuICAvLyBzd2l0Y2ggdG8gbmV4dCAvIHByZXZpb3VzIC8gc3BlY2lmaWMgd2ViY2FtOyB0cnVlL2ZhbHNlOiBmb3J3YXJkL2JhY2t3YXJkcywgc3RyaW5nOiBkZXZpY2VJZFxuICBwdWJsaWMgbmV4dFdlYmNhbTogU3ViamVjdDxib29sZWFuIHwgc3RyaW5nPiA9IG5ldyBTdWJqZWN0PFxuICAgIGJvb2xlYW4gfCBzdHJpbmdcbiAgPigpO1xuICBpbWFnZVZlcmlmaWVkID0gZmFsc2U7XG4gIGZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgbWFudWFsID0gZmFsc2U7XG4gIGlzTW9iaWxlID0gdGhpcy5wbGF0Zm9ybS5JT1MgfHwgdGhpcy5wbGF0Zm9ybS5BTkRST0lEO1xuICBASW5wdXQoKSBzaG93RGlhbG9nID0gZmFsc2U7XG4gIHNjYW5JbWFnZVRpbWVzdGFtcHM6IFRpbWVzdGFtcHMgPSB7XG4gICAgdGltZTogMCxcbiAgICBsb2FkOiAwLFxuICB9O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MubW9iaWxlJykgZ2V0IGNsYXNzKCkge1xuICAgIHJldHVybiB0aGlzLmlzTW9iaWxlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gIG9uUmVzaXplKCkge1xuICAgIGlmICh0aGlzLnJlc3VsdCkge1xuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgc2NhblByb3ZpZGVyITogU2NhblByb3ZpZGVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICAgcHVibGljIGNhbWVyYVByb3ZpZGVyOiBOZ3hTY2FuZG9jQ2FtZXJhUHJvdmlkZXIsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBsYXlvdXRQcm92aWRlcjogTGF5b3V0UHJvdmlkZXIsXG4gICAgcHJpdmF0ZSBwbGF0Zm9ybTogUGxhdGZvcm0sXG5cbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcblxuICAgIHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxuICAgIHByaXZhdGUgdmlldzogVmlld0NvbnRhaW5lclJlZixcblxuICAgIHByaXZhdGUgYXV0aDogQXV0aFByb3ZpZGVyIC8vIHByaXZhdGUgYXBpOiBTZXJ2ZXJQcm92aWRlclxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc2NhblByb3ZpZGVyID0gdGhpcy5pbmplY3Rvci5nZXQoU2NhblByb3ZpZGVyKTtcblxuICAgIGlmICghdGhpcy5zY2FuUHJvdmlkZXIuY29uZmlnLmRldmVsb3BtZW50KSB7XG4gICAgICAvLyBjb25zb2xlID0ge1xuICAgICAgLy8gICBsb2c6ICguLi5hcmdzOiBhbnkpID0+IHt9LFxuICAgICAgLy8gICB0aW1lOiAoLi4uYXJnczogYW55KSA9PiB7fSxcbiAgICAgIC8vICAgdGltZUVuZDogKC4uLmFyZ3M6IGFueSkgPT4ge30sXG4gICAgICAvLyAgIHdhcm46ICguLi5hcmdzOiBhbnkpID0+IHt9LFxuICAgICAgLy8gICBlcnJvcjogKC4uLmFyZ3M6IGFueSkgPT4ge30sXG4gICAgICAvLyB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRMb2dEYXRhKCkge1xuICAgIHRoaXMubG9nRGF0YSA9IHtcbiAgICAgIFJlcXVlc3Q6IG51bGwsXG4gICAgICBSZXNwb25zZTogbnVsbCxcbiAgICAgIEV4cGVjdGVkT3V0cHV0OiBudWxsLFxuICAgICAgQWNjZXB0VGVybXNBbmRDb25kaXRpb25zOiB0cnVlLFxuICAgIH07XG4gIH1cblxuICBpbml0KCkge1xuICAgIHRoaXMuYXV0aC5hY2Nlc1Rva2VuLnN1YnNjcmliZSgpO1xuICAgIHRoaXMucmVzZXRMb2dEYXRhKCk7XG4gICAgLy8gdGhpcy5yZXN1bHQ9dHJ1ZTtcbiAgICAvLyB0aGlzLnJlc3VsdCA9e307XG5cbiAgICBjb25zb2xlLmxvZygnSU5JVCBTQ0FOJyk7XG4gIH1cblxuICBjb250aW51ZSgpIHtcbiAgICB0aGlzLmRvY3VtZW50VHlwZVNlbGVjdGVkID0gZmFsc2U7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRTaWRlLmltYWdlID0gdGhpcy53ZWJjYW1JbWFnZTtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkU2lkZS5zaWRlID09PSAnRlJPTlQnKSB7XG4gICAgICAgIHRoaXMuc2NhbkJsYXN0RGF0YVsxXS5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSwgMjAwKTtcbiAgfVxuXG4gIHNjYW4oKSB7XG4gICAgdGhpcy50cmlnZ2VyLm5leHQobmV3IERhdGUoKS5nZXRUaW1lKCkpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUltYWdlKHdlYmNhbUltYWdlOiBXZWJjYW1JbWFnZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXJ0VGltZSA9PT0gMCkge1xuICAgICAgdGhpcy5zdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIH1cbiAgICAvLyBjb25zb2xlLmxvZygnW3JlY2VpdmVkIHdlYmNhbSBpbWFnZV0nLCB3ZWJjYW1JbWFnZSk7XG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGNvbnN0IHRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcblxuICAgICAgaWYgKHRoaXMuc2NhbkltYWdlVGltZXN0YW1wcy5sb2FkID4gMCkge1xuICAgICAgICBjb25zdCB7IGxvYWQgfSA9IHRoaXMuc2NhbkltYWdlVGltZXN0YW1wcztcbiAgICAgICAgY29uc3QgZGlmZiA9IHRpbWUgLSBsb2FkO1xuICAgICAgICAvLyAgIGNvbnNvbGUubG9nKCd0aW1lOicsIGRpZmYpO1xuICAgICAgICB0aGlzLnNjYW5EZWxheSA9IGRpZmY7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2NhbkltYWdlVGltZXN0YW1wcy5sb2FkID0gdGltZTtcblxuICAgICAgaWYgKHdlYmNhbUltYWdlLmltYWdlRGF0YSkge1xuICAgICAgICB0aGlzLnNjYW5uZWRJbWFnZXMucHVzaCh3ZWJjYW1JbWFnZSk7XG4gICAgICAgIHRoaXMuaGFuZGxlTG9uZ1ZhbGlkYXRpb25FcnJvcih3ZWJjYW1JbWFnZSwgJ3dvcmtlcicpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIGlmICh0aGlzLnNjYW5uZWRJbWFnZXMubGVuZ3RoID4gNCAmJiAhdGhpcy52YWxpZGF0aW9uKSB7XG4gICAgICAgIGlmICh0aGlzLnNjYW5Qcm92aWRlci5jb25maWcuZGV2ZWxvcG1lbnQpIHtcbiAgICAgICAgICB0aGlzLnNjYW5uZWRJbWFnZXMuZm9yRWFjaCgoaW1nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb25zb2xlQmFja2dyb3VuZCA9XG4gICAgICAgICAgICAgIFwiZm9udC1zaXplOjEwMHB4O2JhY2tncm91bmQtaW1hZ2U6IHVybCgnXCIgK1xuICAgICAgICAgICAgICBpbWcuaW1hZ2VSZXNpemVkICtcbiAgICAgICAgICAgICAgXCInKTtiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47IGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XCI7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgICAgJywgY29uc29sZUJhY2tncm91bmQpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vICAgdGhpcy5mcm9udEltYWdlID0gd2ViY2FtSW1hZ2UuaW1hZ2VSZXNpemVkO1xuXG4gICAgICAgIGNvbnNvbGUudGltZUVuZCgnc2NhbicpO1xuICAgICAgICBjb25zb2xlLnRpbWUoJ3NjYW4nKTtcbiAgICAgICAgLy8gZ2V0IGxhc3QgMTBcbiAgICAgICAgY29uc29sZS5sb2coJ0NBUFRVUkVEOicsIHRoaXMuc2Nhbm5lZEltYWdlcy5sZW5ndGgpO1xuICAgICAgICBjb25zdCBpbWFnZXMgPSB0aGlzLnNjYW5uZWRJbWFnZXMuc2xpY2UoLTUpO1xuICAgICAgICAvLyBzZXQgaW1hZ2VzIHRvIDBcbiAgICAgICAgdGhpcy5zY2FubmVkSW1hZ2VzID0gW107XG4gICAgICAgIGNvbnN0IGltYWdlc0FycmF5ID0gaW1hZ2VzLm1hcCgobSkgPT4gbS5pbWFnZVJlc2l6ZWQuc3BsaXQoJywnKVsxXSk7XG4gICAgICAgIHRoaXMudmFsaWRhdGlvbiA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5oYW5kbGVCdXJzdERhdGEoaW1hZ2VzQXJyYXksIGltYWdlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5jYW1lcmFSZWFkeSkge1xuICAgICAgICAgIHRoaXMuc2NhbigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUJ1cnN0RGF0YShcbiAgICBpbWFnZXNBcnJheTogYW55LFxuICAgIGltYWdlczogYW55LFxuICAgIHR5cGU6ICd3b3JrZXInIHwgJ3BsYWluJyA9ICdwbGFpbidcbiAgKSB7XG4gICAgdGhpcy5fX3N1YnModGhpcy5zY2FuUHJvdmlkZXIuYnVyc3QoaW1hZ2VzQXJyYXkpKS5zdWJzY3JpYmUoKHJlc3A6IGFueSkgPT4ge1xuICAgICAgdGhpcy5kaXNwbGF5SW5mbyA9ICdzY2FuZG9jLmluZm8uYycgKyByZXNwLkluZm9Db2RlO1xuICAgICAgLy8gY29uc29sZS50aW1lRW5kKCd2YWxpZGF0aW9uUE9TVCcpO1xuICAgICAgY29uc29sZS5sb2coJ0FuYWx5c2lzVGltZScsIHJlc3AuQW5hbHlzaXNUaW1lKTtcbiAgICAgIGNvbnN0IHsgRG9jVHlwZSwgU2VyaWVzLCBTaWRlLCBJbmZvQ29kZSB9ID0gcmVzcDtcblxuICAgICAgLy8gaWYgKEluZm9Db2RlID09PSAnMTAwNicgJiYgdGhpcy5pZFNjYW4pIHtcbiAgICAgIC8vICAgdGhpcy5oYW5kbGVMb25nVmFsaWRhdGlvbkVycm9yKGltYWdlKTtcbiAgICAgIC8vIH1cblxuICAgICAgaWYgKHJlc3AuVmFsaWRhdGVkKSB7XG4gICAgICAgIHRoaXMuZGlzcGxheUluZm8gPSAnJztcbiAgICAgICAgY29uc29sZS5sb2coJ1tTQ0FOTkVEIElOREVYXScsIHJlc3AuSW5kZXgpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZEltYWdlID0gaW1hZ2VzW3Jlc3AuSW5kZXhdO1xuXG4gICAgICAgIC8vIHRoaXMucHJldmlldyA9IHRoaXMud2ViY2FtSW1hZ2UuaW1hZ2VBc0RhdGFVcmw7XG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIGxldCBpbWFnZSA9IHNlbGVjdGVkSW1hZ2U7XG4gICAgICAgIGlmICh0eXBlID09ICd3b3JrZXInKSB7XG4gICAgICAgICAgY29uc3QgZGF0YVVybCA9IHRoaXMuaGFuZGxlQml0bWFwSW1hZ2Uoc2VsZWN0ZWRJbWFnZS5iaXRtYXApO1xuICAgICAgICAgIGltYWdlID0geyBkYXRhVXJsIH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoSW5mb0NvZGUgPT09ICcxMDA3Jykge1xuICAgICAgICAgIC8vIEZvciBJRCBhc2sgZm9yIG90aGVyIHNpZGVcbiAgICAgICAgICBpZiAoU2lkZSA9PT0gJ0ZST05UJykge1xuICAgICAgICAgICAgdGhpcy5zY2FuQmxhc3REYXRhWzBdLmltYWdlID0gaW1hZ2U7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2NhbkJsYXN0RGF0YVsxXS5pbWFnZSA9IGltYWdlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLnNjYW5CbGFzdERhdGFbMF0uaW1hZ2UgJiYgdGhpcy5zY2FuQmxhc3REYXRhWzFdLmltYWdlKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1VQTE9BRCcpO1xuICAgICAgICAgICAgaWYgKHR5cGUgPT0gJ3dvcmtlcicpIHtcbiAgICAgICAgICAgICAgdGhpcy5pbWFnZUhhbmRsZXIubmV4dCh7IHR5cGU6ICdzdG9wJyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2NhbkJsYXN0RmluaXNoKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IFNpZGUgPT09ICdGUk9OVCcgPyAxIDogMDtcbiAgICAgICAgICAgIHRoaXMuc2NhblNlY29uZFNpZGUgPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLnNpbmdsZVNjYW4odGhpcy5zY2FuQmxhc3REYXRhW251bV0pO1xuXG4gICAgICAgICAgICB0aGlzLmlkU2NhbiA9IHRoaXMuc2NhbkJsYXN0RGF0YVtudW1dLnNpZGU7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5zaG93RGlhbG9nKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2hvd0RpYWxvZyA9IHRydWU7XG4gICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlJbmZvID0gJ3NjYW5kb2MuaW5mby50dXJuJztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zY2FuQmxhc3REYXRhWzBdLmltYWdlID0gaW1hZ2U7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdVUExPQUQnKTtcbiAgICAgICAgICBpZiAodHlwZSA9PSAnd29ya2VyJykge1xuICAgICAgICAgICAgdGhpcy5pbWFnZUhhbmRsZXIubmV4dCh7IHR5cGU6ICdzdG9wJyB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zY2FuQmxhc3RGaW5pc2goKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2Nhbm5lZEltYWdlcyA9IFtdO1xuXG4gICAgICAgIC8vIHRoaXMuc2NhbkJsYXN0RGF0YVswXS5pbWFnZSA9IHNlbGVjdGVkSW1hZ2U7XG5cbiAgICAgICAgLy90aGlzLnNjYW5CbGFzdEZpbmlzaCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2NhbigpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY2xvc2VEaWFsb2coKSB7XG4gICAgdGhpcy5zaG93RGlhbG9nID0gZmFsc2U7XG4gICAgdGhpcy52YWxpZGF0aW9uID0gZmFsc2U7XG5cbiAgICB0aGlzLnNjYW4oKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVJbml0RXJyb3IoZXJyb3I6IFdlYmNhbUluaXRFcnJvcik6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgfVxuXG4gIGdldCBzY2FuQmxhc3RDYW5VcGxvYWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2NhbkJsYXN0RGF0YVswXS5pbWFnZSA/IHRydWUgOiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgbWFudWFsTW9kZSh0eXBlOiAnd29ya2VyJyB8ICdwbGFpbicgPSAncGxhaW4nKSB7XG4gICAgdGhpcy5tYW51YWwgPSB0cnVlO1xuICAgIHRoaXMucHJvbXB0TWFudWFsID0gZmFsc2U7XG4gICAgdGhpcy5zY2FuSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgIHRoaXMuY2FtZXJhUHJvdmlkZXIuJHNob3dTd2l0Y2gubmV4dChmYWxzZSk7XG5cbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRXh0cmFjdGlvbkVycm9yKGRhdGE6IGFueSkge1xuICAgIHRoaXMubG9nRGF0YS5FeHBlY3RlZE91dHB1dCA9IHt9O1xuICAgIC8vIGlmICh0aGlzLmxvZ0RhdGEuRXhwZWN0ZWRPdXRwdXQ/Ll9hdmF0YXIpIHtcbiAgICAvLyAgIGRlbGV0ZSB0aGlzLmxvZ0RhdGEuRXhwZWN0ZWRPdXRwdXQuX2F2YXRhcjtcbiAgICAvLyB9XG4gICAgLy8gdGhpcy5zY2FuUHJvdmlkZXIuc2VuZExvZyh0aGlzLmxvZ0RhdGEpLnN1YnNjcmliZSgpO1xuXG4gICAgY29uc29sZS5sb2coJ0xPRyBEQVRBJywgdGhpcy5sb2dEYXRhKTtcbiAgICB0aGlzLl9fc3Vicyh0aGlzLnNjYW5Qcm92aWRlci5zZW5kTG9nKHRoaXMubG9nRGF0YSkpLnN1YnNjcmliZSgpO1xuICB9XG4gIHByaXZhdGUgaGFuZGxlTG9uZ1ZhbGlkYXRpb25FcnJvcihcbiAgICBpbWc6IGFueSxcbiAgICB0eXBlOiAnd29ya2VyJyB8ICdwbGFpbicgPSAncGxhaW4nXG4gICkge1xuICAgIC8vIHNhdmUgY3VycmVudCBpbWFnZSBhZnRlciAxMHNlY1xuICAgIGxldCBNQU5VQUxfSU5URVJWQUwgPSB0aGlzLnNjYW5Qcm92aWRlci5jb25maWcubWFudWFsU2NhbkRlbGF5O1xuICAgIGNvbnN0IGRpZmYgPSAoRGF0ZS5ub3coKSAtIHRoaXMuc3RhcnRUaW1lKSAvIDEwMDA7XG5cbiAgICBpZiAoXG4gICAgICBkaWZmID4gTUFOVUFMX0lOVEVSVkFMICYmXG4gICAgICAhdGhpcy52ZXJpZmljYXRpb25FcnJvclNlbnRcblxuICAgICAgLy8mJlxuICAgICAgLy90aGlzLnNjYW5Qcm92aWRlci5jb25maWcuZGV2ZWxvcG1lbnRcbiAgICApIHtcbiAgICAgIHRoaXMudmVyaWZpY2F0aW9uRXJyb3JTZW50ID0gdHJ1ZTtcbiAgICAgIGNvbnNvbGUud2FybignW0hBTkRMRSBFUlJPUl0nKTtcblxuICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgIC8vIGNvbnN0IHJlZiA9IHRoaXMuc25hY2tCYXIub3BlbihcbiAgICAgICAgLy8gICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdzY2FuZG9jLm1hbnVhbCcpLFxuICAgICAgICAvLyAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3NjYW5kb2MueWVzJyksXG4gICAgICAgIC8vICAge1xuICAgICAgICAvLyAgICAgZHVyYXRpb246IDEwMDAwLFxuICAgICAgICAvLyAgICAgdmlld0NvbnRhaW5lclJlZjogdGhpcy52aWV3LFxuICAgICAgICAvLyAgIH1cbiAgICAgICAgLy8gKTtcblxuICAgICAgICAvLyB0aGlzLl9fc3VicyhyZWYub25BY3Rpb24oKSkuc3Vic2NyaWJlKChyZXNwKSA9PiB7XG4gICAgICAgIC8vICAgdGhpcy5tYW51YWxNb2RlKHR5cGUpO1xuICAgICAgICAvLyB9KTtcbiAgICAgICAgaWYgKCF0aGlzLnNjYW5TZWNvbmRTaWRlKSB7XG4gICAgICAgICAgdGhpcy5wcm9tcHRNYW51YWwgPSB0cnVlO1xuXG4gICAgICAgICAgLy8gIE1BTlVBTF9JTlRFUlZBTCArPSAxMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRoaXMudmVyaWZpY2F0aW9uRXJyb3JTZW50ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcblxuICAgICAgICAvL3RoaXMucHJvbXB0TWFudWFsID0gdHJ1ZTtcbiAgICAgICAgLy8gdGhpcy5kaWFsb2dzLnByb21wdE1hbnVhbCgpLnN1YnNjcmliZSgocmVzcDogYW55KSA9PiB7XG4gICAgICAgIC8vICAgY29uc29sZS53YXJuKHJlc3ApO1xuICAgICAgICAvLyAgIGlmIChyZXNwKSB7XG4gICAgICAgIC8vICAgICB0aGlzLm1hbnVhbE1vZGUodHlwZSk7XG4gICAgICAgIC8vICAgfVxuICAgICAgICAvLyAgIHRoaXMuc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgLy8gICB0aGlzLnZlcmlmaWNhdGlvbkVycm9yU2VudCA9IGZhbHNlO1xuICAgICAgICAvLyB9KTtcbiAgICAgIH0pO1xuICAgICAgLy8gdGhpcy52ZXJpZmljYXRpb25FcnJvclNlbnQgPSB0cnVlO1xuICAgICAgLy8gY29uc3QgZGF0YVVybCA9IHRoaXMuaGFuZGxlQml0bWFwSW1hZ2UoaW1nLmJpdG1hcCk7XG5cbiAgICAgIC8vIGNvbnNvbGUud2FybignU0VOVCcpO1xuICAgICAgLy8gLy8gIHRoaXMuZGlzcGxheUluZm8gPSAnQ2FudCBkZXRlY3QgZG9jdW1lbnQhJztcbiAgICAgIC8vIHRoaXMubG9nRGF0YS5SZXF1ZXN0ID0gdGhpcy5fX3N1YnMoXG4gICAgICAvLyAgIHRoaXMuc2NhblByb3ZpZGVyLnNlbmRMb2coe1xuICAgICAgLy8gICAgIEFjY2VwdFRlcm1zQW5kQ29uZGl0aW9uczogdHJ1ZSxcbiAgICAgIC8vICAgICBFeHBlY3RlZE91dHB1dDoge30sXG4gICAgICAvLyAgICAgUmVxdWVzdDoge1xuICAgICAgLy8gICAgICAgdmVyaWZpY2F0aW9uOiBkYXRhVXJsLnNwbGl0KCcsJylbMV0sXG4gICAgICAvLyAgICAgfSxcbiAgICAgIC8vICAgICBSZXNwb25zZToge1xuICAgICAgLy8gICAgICAgVHJhbnNhY3Rpb25JRDogdXVpZHY0KCksXG4gICAgICAvLyAgICAgfSxcbiAgICAgIC8vICAgfSlcbiAgICAgIC8vICkuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAvLyAgdGhpcy5yZXN1bHQgPSB0cnVlO1xuXG4gICAgdGhpcy5jYW1lcmFQcm92aWRlci4kc2hvd1N3aXRjaC5uZXh0KHRydWUpO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgLy8gdGhpcy5zY2FuUmVzdWx0cy5uZXh0KHsgdHlwZTogJ21vZGVsJywgZGF0YToge30gfSk7XG5cbiAgICB0aGlzLl9fc3Vicyh0aGlzLmNhbWVyYVByb3ZpZGVyLndlYmNhbU9ic2VydmFibGUpLnN1YnNjcmliZSgocmVzcCkgPT4ge1xuICAgICAgdGhpcy5jYW1lcmFSZWFkeSA9IGZhbHNlO1xuICAgICAgdGhpcy5zY2FuSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgdGhpcy5zY2FubmVkSW1hZ2VzID0gW107XG4gICAgfSk7XG4gICAgdGhpcy5fX3N1YnModGhpcy5jYW1lcmFQcm92aWRlci5zZWxmaWUkKS5zdWJzY3JpYmUoKHJlc3ApID0+IHtcbiAgICAgIHRoaXMuc2VsZmllKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmF1dG9TY2FuKCk7XG5cbiAgICB0aGlzLl9fc3Vicyh0aGlzLmxheW91dFByb3ZpZGVyLmJyZWFrcG9pbnQkKS5zdWJzY3JpYmUoKHY6IGFueSkgPT4ge1xuICAgICAgdGhpcy5pc01vYmlsZSA9ICF2Lm1hdGNoZXMgfHwgdGhpcy5wbGF0Zm9ybS5JT1MgfHwgdGhpcy5wbGF0Zm9ybS5BTkRST0lEO1xuICAgICAgY29uc29sZS5sb2coJ01OT0JJTEUnLCB0aGlzLmlzTW9iaWxlKTtcbiAgICB9KTtcblxuICAgIC8vIHRoaXMuaW1hZ2VIYW5kbGVyU3Vic2NyaXB0aW9uID0gdGhpcy5pbWFnZUhhbmRsZXIuc3Vic2NyaWJlKFxuICAgIC8vICAgKHdlYmNhbUltYWdlOiBhbnkpID0+IHtcbiAgICAvLyAgICAgLy8gcmV0dXJuO1xuICAgIC8vICAgICBpZiAodGhpcy5zdGFydFRpbWUgPT09IDApIHtcbiAgICAvLyAgICAgICB0aGlzLnN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgLy8gICAgIH1cblxuICAgIC8vICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgIC8vICAgICAgIGlmICh3ZWJjYW1JbWFnZS5iYXNlNjQpIHtcbiAgICAvLyAgICAgICAgIGNvbnN0IHRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcblxuICAgIC8vICAgICAgICAgaWYgKHRoaXMuc2NhbkltYWdlVGltZXN0YW1wcy5sb2FkID4gMCkge1xuICAgIC8vICAgICAgICAgICBjb25zdCB7IGxvYWQgfSA9IHRoaXMuc2NhbkltYWdlVGltZXN0YW1wcztcbiAgICAvLyAgICAgICAgICAgY29uc3QgZGlmZiA9IHRpbWUgLSBsb2FkO1xuICAgIC8vICAgICAgICAgICAvLyBjb25zb2xlLndhcm4oJ1RJTUUnLCBkaWZmKTtcbiAgICAvLyAgICAgICAgICAgdGhpcy5zY2FuRGVsYXkgPSBkaWZmO1xuICAgIC8vICAgICAgICAgfVxuXG4gICAgLy8gICAgICAgICB0aGlzLnNjYW5JbWFnZVRpbWVzdGFtcHMubG9hZCA9IHRpbWU7XG5cbiAgICAvLyAgICAgICAgIHRoaXMuc2Nhbm5lZEltYWdlcy5wdXNoKHdlYmNhbUltYWdlKTtcbiAgICAvLyAgICAgICAgIHRoaXMuaGFuZGxlTG9uZ1ZhbGlkYXRpb25FcnJvcih3ZWJjYW1JbWFnZSwgJ3dvcmtlcicpO1xuICAgIC8vICAgICAgIH1cblxuICAgIC8vICAgICAgIC8vIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIC8vICAgICAgIGlmICh0aGlzLnNjYW5uZWRJbWFnZXMubGVuZ3RoID4gNCAmJiAhdGhpcy52YWxpZGF0aW9uKSB7XG4gICAgLy8gICAgICAgICAvLyBnZXQgbGFzdCAxMFxuICAgIC8vICAgICAgICAgY29uc29sZS50aW1lRW5kKCd2YWxpZGF0aW9uVE9UQUxfVUknKTtcbiAgICAvLyAgICAgICAgIGNvbnNvbGUudGltZSgndmFsaWRhdGlvblRPVEFMX1VJJyk7XG4gICAgLy8gICAgICAgICBjb25zdCBpbWFnZXMgPSB0aGlzLnNjYW5uZWRJbWFnZXMuc2xpY2UoLTUpO1xuICAgIC8vICAgICAgICAgLy8gc2V0IGltYWdlcyB0byAwXG4gICAgLy8gICAgICAgICB0aGlzLnNjYW5uZWRJbWFnZXMgPSBbXTtcbiAgICAvLyAgICAgICAgIGNvbnNvbGUubG9nKGltYWdlcyk7XG5cbiAgICAvLyAgICAgICAgIGNvbnN0IGltYWdlc0FycmF5ID0gaW1hZ2VzLm1hcCgobSkgPT4gbS5iYXNlNjQuc3BsaXQoJywnKVsxXSk7XG4gICAgLy8gICAgICAgICB0aGlzLnZhbGlkYXRpb24gPSB0cnVlO1xuXG4gICAgLy8gICAgICAgICAvLyB0aGlzLmhhbmRsZUJ1cnN0RGF0YShpbWFnZXNBcnJheSwgaW1hZ2VzLCAnd29ya2VyJyk7XG5cbiAgICAvLyAgICAgICAgIGNvbnNvbGUudGltZSgndmFsaWRhdGlvblBPU1QnKTtcbiAgICAvLyAgICAgICB9XG4gICAgLy8gICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgLy8gICAgIH0pO1xuICAgIC8vICAgfVxuICAgIC8vICk7XG4gIH1cblxuICBoYW5kbGVCaXRtYXBJbWFnZShiaXRtYXA6IGFueSkge1xuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gYml0bWFwO1xuXG4gICAgY29uc3Qgb2Zmc2NyZWVuU21hbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICBvZmZzY3JlZW5TbWFsbC53aWR0aCA9IHdpZHRoO1xuICAgIG9mZnNjcmVlblNtYWxsLmhlaWdodCA9IGhlaWdodDtcbiAgICBjb25zdCBjdHg6IGFueSA9IG9mZnNjcmVlblNtYWxsLmdldENvbnRleHQoJ2JpdG1hcHJlbmRlcmVyJyk7XG5cbiAgICBpZiAoY3R4KSB7XG4gICAgICBjdHguaW1hZ2VTbW9vdGhpbmdFbmFibGVkID0gZmFsc2U7XG4gICAgICBjdHgudHJhbnNmZXJGcm9tSW1hZ2VCaXRtYXAoYml0bWFwKTtcbiAgICAgIGJpdG1hcC5jbG9zZSgpO1xuICAgICAgY29uc3QgZGF0YSA9IGN0eC5jYW52YXMudG9EYXRhVVJMKCdpbWFnZS9qcGVnJyk7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBhdXRvU2NhbigpIHtcbiAgICBjb25zdCBzaWRlID0gdGhpcy5zY2FuQmxhc3REYXRhWzBdO1xuICAgIHRoaXMuaWRTY2FuID0gbnVsbDtcbiAgICB0aGlzLnNpbmdsZVNjYW4oc2lkZSk7XG4gIH1cblxuICBzaW5nbGVTY2FuKHNpZGU6IGFueSkge1xuICAgIHRoaXMuc2NhblR5cGUgPSBzaWRlLnNpZGU7XG4gICAgdGhpcy5wcmV2aWV3ID0gbnVsbDtcbiAgICB0aGlzLnNlbGVjdGVkU2lkZSA9IHNpZGU7XG5cbiAgICB0aGlzLnNlbGVjdGVkU2lkZS5pbWFnZSA9IG51bGw7XG4gICAgdGhpcy5kb2N1bWVudFR5cGVTZWxlY3RlZCA9IHRydWU7XG4gICAgdGhpcy5zY2FuQmxhc3REYXRhWzFdLmRpc2FibGVkID0gZmFsc2U7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBtYW51YWxTY2FuRGF0YShkYXRhOiBhbnkpIHtcbiAgICBjb25zb2xlLmxvZyhkYXRhKTtcbiAgICB0aGlzLnNjYW5CbGFzdERhdGEgPSBkYXRhO1xuICAgIHRoaXMubWFudWFsID0gZmFsc2U7XG4gICAgdGhpcy5tYW51YWxEYXRhU2V0ID0gdHJ1ZTtcbiAgICB0aGlzLnNjYW5CbGFzdEZpbmlzaCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbWdCYXNlNjQobnVtOiBhbnkpIHtcbiAgICBjb25zb2xlLmxvZygnR0VUIDY0Jyk7XG5cbiAgICBpZiAodGhpcy5tYW51YWxEYXRhU2V0KSB7XG4gICAgICByZXR1cm4gdGhpcy5zY2FuQmxhc3REYXRhW251bV0uaW1hZ2UuX2ltYWdlQXNEYXRhVXJsLnNwbGl0KCcsJylbMV07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNjYW5CbGFzdERhdGFbbnVtXS5pbWFnZS5kYXRhVXJsLnNwbGl0KCcsJylbMV07XG4gIH1cbiAgc2NhbkJsYXN0RmluaXNoKCkge1xuICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5jYW1lcmFQcm92aWRlci4kc2hvd1N3aXRjaC5uZXh0KGZhbHNlKTtcbiAgICB9KTtcbiAgICBjb25zb2xlLnRpbWUoJ3VwbG9hZCcpO1xuICAgIGlmICh0aGlzLnR5cGUgPT09ICdtb2JpbGUnKSB7XG4gICAgICB0aGlzLmFjdGlvbnMuZW1pdCh7IGRhdGE6IHRoaXMuc2NhbkJsYXN0RGF0YSB9KTtcbiAgICAgIHRoaXMucmV0YWtlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaWRTY2FuID0gbnVsbDtcbiAgICAvLyBjb25zdCBsb2FkaW5nID0gdGhpcy5kaWFsb2dzLmxvYWRpbmcoKTtcbiAgICB0aGlzLnNjYW5pbmcgPSB0cnVlO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIGNvbnNvbGUudGltZSgncGF5bG9hZCcpO1xuICAgIGNvbnN0IHBheWxvYWQ6IGFueSA9IHtcbiAgICAgIEFjY2VwdFRlcm1zQW5kQ29uZGl0aW9uczogdHJ1ZSxcbiAgICAgIERhdGFGaWVsZHM6IHtcbiAgICAgICAgRnJvbnRJbWFnZVR5cGU6ICdiYXNlNjQnLFxuICAgICAgICBGcm9udEltYWdlQ3JvcHBlZDogZmFsc2UsXG4gICAgICAgIEJhY2tJbWFnZVR5cGU6ICdiYXNlNjQnLFxuICAgICAgICBCYWNrSW1hZ2VDcm9wcGVkOiBmYWxzZSxcbiAgICAgICAgRnJvbnRJbWFnZTogdGhpcy5nZXRJbWdCYXNlNjQoMCksXG4gICAgICAgIEJhY2tJbWFnZTogdGhpcy5zY2FuQmxhc3REYXRhWzFdLmltYWdlID8gdGhpcy5nZXRJbWdCYXNlNjQoMSkgOiBudWxsLFxuICAgICAgfSxcbiAgICAgIFNldHRpbmdzOiB7XG4gICAgICAgIFNob3VsZFZhbGlkYXRlOiB0cnVlLFxuICAgICAgICBTaG91bGRSZXR1cm5Eb2N1bWVudEltYWdlOiB0cnVlLFxuICAgICAgICBTaG91bGRSZXR1cm5GYWNlSWZEZXRlY3RlZDogdHJ1ZSxcbiAgICAgICAgU2tpcEltYWdlU2l6ZUNoZWNrOiB0cnVlLFxuICAgICAgICBDYW5TdG9yZUltYWdlczogdGhpcy5zY2FuUHJvdmlkZXIuY2FuU3RvcmVJbWFnZXMsXG4gICAgICB9LFxuICAgICAgLy8gQ2FsbEJhY2tVcmw6ICdodHRwOi8vZGVtbzo1MDAwL3JlcG9ydC9leHRyYWN0ZWQvJyxcbiAgICB9O1xuICAgIHRoaXMuZnJvbnRJbWFnZSA9ICdkYXRhOmltYWdlL2pwZWc7YmFzZTY0LCcgKyBwYXlsb2FkLkRhdGFGaWVsZHMuRnJvbnRJbWFnZTtcbiAgICB0aGlzLmJhY2tJbWFnZSA9ICdkYXRhOmltYWdlL2pwZWc7YmFzZTY0LCcgKyBwYXlsb2FkLkRhdGFGaWVsZHMuQmFja0ltYWdlO1xuICAgIGlmICghdGhpcy5zY2FuQmxhc3REYXRhWzFdLmltYWdlKSB7XG4gICAgICBwYXlsb2FkLlNldHRpbmdzLklnbm9yZUJhY2tJbWFnZSA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMubG9nRGF0YS5SZXF1ZXN0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwYXlsb2FkKSk7XG5cbiAgICBjb25zb2xlLnRpbWVFbmQoJ3BheWxvYWQnKTtcbiAgICB0aGlzLl9fc3VicyhcbiAgICAgIHRoaXMuc2NhblByb3ZpZGVyLmJsYXN0UG9zdChwYXlsb2FkKS5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKChlOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5tYW51YWxEYXRhU2V0KSB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLndhcm4oJ01BTlVBTCBEQVRBIFNFVCcsZSk7XG4gICAgICAgICAgICB0aGlzLmxvZ0RhdGEuUmVzcG9uc2UgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGUuZXJyb3IpKTtcblxuICAgICAgICAgICAgdGhpcy5oYW5kbGVFeHRyYWN0aW9uRXJyb3Ioe30pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lcnJvciA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnByZXZpZXcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ0VFRScsIGUpO1xuICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICkuc3Vic2NyaWJlKFxuICAgICAgKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAvL2NvbnNvbGUubG9nKGRhdGEpO1xuICAgICAgICBjb25zdCByZXN1bHRzID0gZGF0YS5EYXRhO1xuICAgICAgICBjb25zb2xlLnRpbWVFbmQoJ3VwbG9hZCcpO1xuICAgICAgICBjb25zb2xlLnRpbWUoJ3BhcnNlJyk7XG4gICAgICAgIC8vIGRhdGEuSW5mb0NvZGUgPSAnMTAwMSc7XG4gICAgICAgIGNvbnNvbGUudGltZSgncCcpO1xuICAgICAgICB0aGlzLmxvZ0RhdGEuUmVzcG9uc2UgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgICAgICAgY29uc29sZS50aW1lRW5kKCdwJyk7XG4gICAgICAgIC8vbG9hZGluZy5jbG9zZSgpO1xuICAgICAgICB0aGlzLmRvY3VtZW50VHlwZVNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zY2FuaW5nID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKGRhdGEuSW5mb0NvZGUgPT09ICcxMDAxJykge1xuICAgICAgICAgIHRoaXMuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdbRVJST1JdIDEwMDEnKTtcbiAgICAgICAgICB0aGlzLmVycm9yQ29kZSA9ICcxMDAxJztcbiAgICAgICAgICAvLyB0aGlzLnNjYW5TaWRlID0gMDtcblxuICAgICAgICAgIHRoaXMucHJldmlldyA9IHRydWU7XG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhLkluZm9Db2RlID09PSAnMTAwMicpIHtcbiAgICAgICAgICB0aGlzLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnW0VSUk9SXSAxMDAyJyk7XG4gICAgICAgICAgdGhpcy5lcnJvckNvZGUgPSAnMTAwMic7XG4gICAgICAgICAgLy8gdGhpcy5zY2FuU2lkZSA9IDA7XG5cbiAgICAgICAgICB0aGlzLnByZXZpZXcgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzdWx0cyAmJiBkYXRhLk1ldGFkYXRhLmxlbmd0aCA+IDAgJiYgZGF0YS5JbmZvQ29kZSA9PT0gJzEwMDAnKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ0V4dHJhY3Rpb24gdGltZScsIGRhdGEuQW5hbHlzaXNUaW1lKTtcblxuICAgICAgICAgIC8vICB0aGlzLnpvbmUucnVuKCgpID0+IHtcblxuICAgICAgICAgIGNvbnNvbGUudGltZSgncGFyc2VibGFzdCcpO1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuc2NhblByb3ZpZGVyLnBhcnNlQmxhc3QocmVzdWx0cyk7XG4gICAgICAgICAgY29uc29sZS50aW1lRW5kKCdwYXJzZWJsYXN0Jyk7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ1JFUycsIHRoaXMucmVzdWx0KTtcbiAgICAgICAgICAvLyB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICAgIGNvbnN0IG1vZGVsID0gcmVzdWx0Lm1vZGVsO1xuXG4gICAgICAgICAgaWYgKGRhdGEuSW1hZ2VEYXRhPy5GYWNlSW1hZ2UpIHtcbiAgICAgICAgICAgIG1vZGVsLl9hdmF0YXIgPVxuICAgICAgICAgICAgICAnZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwnICsgZGF0YS5JbWFnZURhdGE/LkZhY2VJbWFnZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZGF0YS5JbWFnZURhdGE/LkRvY3VtZW50cykge1xuICAgICAgICAgICAgY29uc3QgeyBEb2N1bWVudHMgfSA9IGRhdGEuSW1hZ2VEYXRhO1xuICAgICAgICAgICAgbW9kZWwuaW1hZ2VzID0gRG9jdW1lbnRzLm1hcCgoaW1hZ2U6IGFueSwgaTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB7IGRhdGE6ICdkYXRhOmltYWdlL2pwZWc7YmFzZTY0LCcgKyBEb2N1bWVudHNbaV0gfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLm1vZGVsID0gbW9kZWw7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ01PREVMJywgdGhpcy5tb2RlbCk7XG4gICAgICAgICAgdGhpcy5hY3Rpb25zLmVtaXQoe1xuICAgICAgICAgICAgdHlwZTogJ3NjYW5GaW5pc2gnLFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICBtb2RlbDogdGhpcy5tb2RlbCxcbiAgICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmltYWdlcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAoIXRoaXMuc2NhblByb3ZpZGVyLmNvbmZpZy5oaWRlUmVzdWx0cykge1xuICAgICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMucmVzdWx0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgY29uc29sZS50aW1lKCdmZicpO1xuICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICAgICAgICB0aGlzLnNjYW5SZXN1bHRzLm5leHQoeyB0eXBlOiAnbW9kZWwnLCBkYXRhOiBtb2RlbCB9KTtcbiAgICAgICAgICAgICAgLy8gdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgIC8vICB9KTtcbiAgICAgICAgICAgICAgY29uc29sZS50aW1lRW5kKCdmZicpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdFUlJPUicpO1xuICAgICAgICAgIGlmICh0aGlzLm1hbnVhbERhdGFTZXQpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXh0cmFjdGlvbkVycm9yKGRhdGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyB0aGlzLnNjYW5TaWRlID0gMDtcbiAgICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIC8vIHRoaXMuZG9jdW1lbnRUeXBlU2VsZWN0ZWQgPSBmYWxzZTtcblxuICAgICAgICAgIC8vIHRoaXMucmV0cnkoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICBjb25zb2xlLnRpbWVFbmQoJ3BhcnNlJyk7XG4gICAgICB9LFxuICAgICAgKGVycikgPT4ge1xuICAgICAgICAvLyBsb2FkaW5nLmNsb3NlKCk7XG4gICAgICAgIC8vIHRoaXMuc2NhblNpZGUgPSAwO1xuICAgICAgICB0aGlzLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5wcmV2aWV3ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5kb2N1bWVudFR5cGVTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuc2NhbmluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICByZXRyeSgpIHtcbiAgICB0aGlzLnByZXZpZXcgPSBmYWxzZTtcbiAgICB0aGlzLnZhbGlkYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmVycm9yQ29kZSA9ICcxMDAwJztcbiAgICB0aGlzLnJlc3VsdCA9IGZhbHNlO1xuICAgIHRoaXMuaWRTY2FuID0gbnVsbDtcbiAgICB0aGlzLmNhbWVyYVByb3ZpZGVyLiRzaG93U3dpdGNoLm5leHQodHJ1ZSk7XG4gICAgaWYgKHRoaXMuZXJyb3IpIHtcbiAgICAgIHRoaXMuZG9jdW1lbnRUeXBlU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2NhbkJsYXN0RGF0YS5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgZWxlbWVudC5pbWFnZSA9IG51bGw7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5lcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLmF1dG9TY2FuKCk7XG4gICAgdGhpcy5zY2FuKCk7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgcmV0YWtlKCkge1xuICAgIHRoaXMudmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgIHRoaXMucHJldmlldyA9IGZhbHNlO1xuICAgIHRoaXMuZXJyb3IgPSBmYWxzZTtcbiAgICB0aGlzLnJlc3VsdCA9IGZhbHNlO1xuICAgIHRoaXMuc2NhblNpZGUgPSAwO1xuICAgIHRoaXMuY2FtZXJhUHJvdmlkZXIuJHNob3dTd2l0Y2gubmV4dCh0cnVlKTtcbiAgICB0aGlzLmltYWdlVmVyaWZpZWQgPSBmYWxzZTtcbiAgICB0aGlzLnNjYW5EYXRhcyA9IFtdO1xuICAgIHRoaXMuc2NhbmluZyA9IGZhbHNlO1xuICAgIHRoaXMuaW1hZ2VzID0gW107XG4gICAgdGhpcy5zY2FuSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgIHRoaXMuc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLmlkU2NhbiA9IG51bGw7XG4gICAgdGhpcy5kb2N1bWVudFR5cGVTZWxlY3RlZCA9IGZhbHNlO1xuICAgIHRoaXMuc2NhbkJsYXN0RGF0YS5mb3JFYWNoKChtOiBhbnkpID0+IHtcbiAgICAgIG0uaW1hZ2UgPSBudWxsO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zY2FuU2Vjb25kU2lkZSA9IGZhbHNlO1xuXG4gICAgdGhpcy5hdXRvU2NhbigpO1xuXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICB1c2UoKSB7XG4gICAgLy8gc2F2ZSBpbWFnZXM/P1xuXG4gICAgaWYgKHRoaXMuc2NhblByb3ZpZGVyLmNhblN0b3JlSW1hZ2VzKSB7XG4gICAgICB0aGlzLmxvZ0RhdGEuRXhwZWN0ZWRPdXRwdXQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMubW9kZWwpKTtcbiAgICAgIGlmICh0aGlzLmxvZ0RhdGEuRXhwZWN0ZWRPdXRwdXQ/Ll9hdmF0YXIpIHtcbiAgICAgICAgZGVsZXRlIHRoaXMubG9nRGF0YS5FeHBlY3RlZE91dHB1dC5fYXZhdGFyO1xuICAgICAgfVxuICAgICAgdGhpcy5fX3N1YnModGhpcy5zY2FuUHJvdmlkZXIuc2VuZExvZyh0aGlzLmxvZ0RhdGEpKS5zdWJzY3JpYmUoKTtcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMubG9nRGF0YSk7XG4gICAgfVxuXG4gICAgdGhpcy5hY3Rpb25zLmVtaXQoe1xuICAgICAgdHlwZTogJ3NjYW5EYXRhQ2xvc2UnLFxuICAgICAgZGF0YToge1xuICAgICAgICBtb2RlbDogdGhpcy5tb2RlbCxcbiAgICAgICAgaW1hZ2VzOiB0aGlzLmltYWdlcyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgc2VsZmllKCkge1xuICAgIGNvbnN0IGF2YXRhciA9IHRoaXMubW9kZWw/Ll9hdmF0YXI7XG4gICAgdGhpcy5kaWFsb2dzXG4gICAgICAuc2NhblNlbGZpZSh7IGF2YXRhciB9KVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3A6IGFueSkgPT4ge1xuICAgICAgICBpZiAocmVzcCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3ApO1xuICAgICAgICAgIGlmICh0aGlzLnNjYW5Qcm92aWRlci5lbmFibGVWZXJpZmljYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VWZXJpZmllZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2NhblJlc3VsdHMubmV4dCh7XG4gICAgICAgICAgICB0eXBlOiAnYXZhdGFyJyxcbiAgICAgICAgICAgIGRhdGE6IHJlc3AuaW1hZ2VBc0RhdGFVcmwsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy8gdGhpcy5tb2RlbC5fYXZhdGFyID0gcmVzcC5pbWFnZUFzRGF0YVVybDtcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBjYW1lcmFPZmYoZXY6IGFueSkge1xuICAgIHRoaXMuY2FtZXJhUmVhZHkgPSBmYWxzZTtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHZpZGVvUmVhZHkoZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICBjb25zb2xlLmxvZygnUkVBRFknLCBldmVudCk7XG4gICAgdGhpcy5jYW1lcmFSZWFkeSA9IGV2ZW50O1xuICAgIGlmICh0aGlzLmNhbWVyYVJlYWR5ICYmICF0aGlzLnNjYW5JblByb2dyZXNzICYmICF0aGlzLm1hbnVhbCkge1xuICAgICAgdGhpcy5zY2FuSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5zY2FuKCk7XG4gICAgICB9LCAyMCk7XG4gICAgfVxuICB9XG5cbiAgbWFudWFsU2V0KGtleTogYm9vbGVhbikge1xuICAgIGlmIChrZXkpIHtcbiAgICAgIGlmICh0aGlzLnNjYW5Qcm92aWRlci5jb25maWcuc2hvd01hbnVhbE1vZGUpIHtcbiAgICAgICAgdGhpcy5tYW51YWxNb2RlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmFjdGlvbnMuZW1pdCh7XG4gICAgICAgICAgdHlwZTogJ21hbnVhbE1vZGUnLFxuICAgICAgICAgIGRhdGE6IHt9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcm9tcHRNYW51YWwgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zY2FuVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2NhblRpbWVvdXQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pbWFnZUhhbmRsZXJTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuaW1hZ2VIYW5kbGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coJ0RFU1RST1hZJyk7XG5cbiAgICB0aGlzLl9fZGVzdHJveSgpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyXG4gICpuZ0lmPVwiY2FtZXJhUHJvdmlkZXIucmVjdFBvc2l0aW9uLnQgPiAwICYmIGRpc3BsYXlJbmZvICYmICFyZXN1bHQgJiYgIW1hbnVhbFwiXG4+XG4gIDxkaXYgY2xhc3M9XCJoaW50XCIgW25nU3R5bGVdPVwieyB0b3A6IGNhbWVyYVByb3ZpZGVyLmhpbnRQb3NpdGlvbiArICdweCcgfVwiPlxuICAgIDxzcGFuIGNsYXNzPVwidGV4dFwiPlxuICAgICAge3sgZGlzcGxheUluZm8gfCB0cmFuc2xhdGUgfX1cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RGlhbG9nXCI+XG4gIDxkaXYgY2xhc3M9XCJwYWdlVHVyblwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5uZXJcIj5cbiAgICAgICAgPG1hdC1pY29uPjM2MDwvbWF0LWljb24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlkU2NhbiA9PT0gJ0JBQ0snXCI+XG4gICAgICAgICAgICB7eyBcInNjYW5kb2MudHVybkFuZENhcHR1cmUuYmFja1wiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlkU2NhbiA9PT0gJ0ZST05UJ1wiPlxuICAgICAgICAgICAge3sgXCJzY2FuZG9jLnR1cm5BbmRDYXB0dXJlLmZyb250XCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxmb290ZXI+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImNsb3NlRGlhbG9nKClcIiBtYXQtcmFpc2VkLWJ1dHRvbj5PazwvYnV0dG9uPlxuICAgICAgPC9mb290ZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9tcHRNYW51YWxcIj5cbiAgPGRpdiBjbGFzcz1cIm1hbnVhbE1vZGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImlubmVyXCI+XG4gICAgICAgIDxtYXQtaWNvbj5zY3JlZW5zaG90X2tleWJvYXJkPC9tYXQtaWNvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHRcIj5cbiAgICAgICAgICB7eyBcInNjYW5kb2MubWFudWFsXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxmb290ZXI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogOHB4XCJcbiAgICAgICAgICAoY2xpY2spPVwibWFudWFsU2V0KHRydWUpXCJcbiAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgICA+XG4gICAgICAgICAge3sgXCJzY2FuZG9jLnllc1wiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogOHB4XCJcbiAgICAgICAgICAoY2xpY2spPVwibWFudWFsU2V0KGZhbHNlKVwiXG4gICAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgPlxuICAgICAgICAgIHt7IFwic2NhbmRvYy5ub1wiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9mb290ZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG48bmctY29udGFpbmVyICpuZ0lmPVwicmVzdWx0XCI+XG4gIDxzZWN0aW9uPlxuICAgIDxuZ3gtc2Nhbi1yZXN1bHRzXG4gICAgICAoYWN0aW9uKT1cInNlbGZpZSgpXCJcbiAgICAgIFtmb3JtXT1cImZvcm1cIlxuICAgICAgW2RhdGFdPVwic2NhblJlc3VsdHNcIlxuICAgID48L25neC1zY2FuLXJlc3VsdHM+XG5cbiAgICA8Zm9vdGVyPlxuICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yLTRcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwicmV0YWtlKClcIj5cbiAgICAgICAgICB7eyBcInNjYW5kb2MucmVUYWtlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZXJyb3IgfHwgZm9ybS5pbnZhbGlkXCJcbiAgICAgICAgICBjbGFzcz1cIm1sLTRcIlxuICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgICAgKGNsaWNrKT1cInVzZSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IFwic2NhbmRvYy51c2VEYXRhXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvb3Rlcj5cbiAgPC9zZWN0aW9uPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJtYW51YWxcIj5cbiAgPHNlY3Rpb24+XG4gICAgPG5neC1tYW51YWwtc2NhbiAoYWN0aW9uKT1cIm1hbnVhbFNjYW5EYXRhKCRldmVudClcIj48L25neC1tYW51YWwtc2Nhbj5cbiAgPC9zZWN0aW9uPlxuPC9uZy1jb250YWluZXI+XG48bmctY29udGFpbmVyICpuZ0lmPVwiIXJlc3VsdCAmJiBkb2N1bWVudFR5cGVTZWxlY3RlZCAmJiAhbWFudWFsXCI+XG4gIDxzZWN0aW9uPlxuICAgIDxkaXYgI3dyYXBlciBjbGFzcz1cIndyYXBlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImxvYWRpbmdcIiAqbmdJZj1cIighY2FtZXJhUmVhZHkgJiYgIXByZXZpZXcpIHx8IHNjYW5pbmdcIj5cbiAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFlcnJvclwiPlxuICAgICAgICA8bmd4LXNjYW5kb2Mtd2ViY2FtXG4gICAgICAgICAgKm5nSWY9XCIhcHJldmlldyAmJiAhc2NhbmluZ1wiXG4gICAgICAgICAgY2xhc3M9XCJtYWluXCJcbiAgICAgICAgICAjd2ViY2FtXG4gICAgICAgICAgdHlwZT1cImRvY3VtZW50XCJcbiAgICAgICAgICBbdHJpZ2dlcl09XCJ0cmlnZ2VyXCJcbiAgICAgICAgICBbaW1hZ2VIYW5kbGVyXT1cImltYWdlSGFuZGxlclwiXG4gICAgICAgICAgKGltYWdlQ2FwdHVyZSk9XCJoYW5kbGVJbWFnZSgkZXZlbnQpXCJcbiAgICAgICAgICAoaW5pdEVycm9yKT1cImhhbmRsZUluaXRFcnJvcigkZXZlbnQpXCJcbiAgICAgICAgICAoZGVzdHJveWVkKT1cImNhbWVyYU9mZigkZXZlbnQpXCJcbiAgICAgICAgICAodmlkZW9SZWFkeSk9XCJ2aWRlb1JlYWR5KCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgIDwvbmd4LXNjYW5kb2Mtd2ViY2FtPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicHJldmlld0RhdGFcIlxuICAgICAgICAqbmdJZj1cInByZXZpZXdcIlxuICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgIHotaW5kZXg6IDIwO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInAtMTYgZXJyb3JcIiAqbmdJZj1cImVycm9yXCI+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24+ZXJyb3Jfb3V0bGluZTwvbWF0LWljb25cbiAgICAgICAgICAgICAgPjxzcGFuIGNsYXNzPVwibWwtOFwiPnt7XG4gICAgICAgICAgICAgICAgXCJzY2FuZG9jLnVuYWJsZVRvRGV0ZWN0SWRcIiB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXJyb3JDb2RlID09PSAnMTAwMSdcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICB7eyBcInNjYW5kb2MuZXh0cmFjdGlvbi5jMTAwMVwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXJyb3JDb2RlID09PSAnMTAwMidcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICB7eyBcInNjYW5kb2MuZXh0cmFjdGlvbi5jMTAwMlwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDx1bCAqbmdJZj1cImVycm9yQ29kZSA9PT0gJzEwMDAnXCI+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICB7eyBcInNjYW5kb2MucGxhY2VJZENsb3NlVG9EZXZpY2VcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAge3sgXCJzY2FuZG9jLmVuc3VyZVN1ZmZpY2llbnRMaWdodFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICB7eyBcInNjYW5kb2MuaG9sZERvY3VtZW50U3RlYWR5XCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIHt7IFwic2NhbmRvYy5tYWtlU3VyZUFsbEVkZ2VzT2ZUaGVJZEFyZVZpc2libGVcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgIFwic2NhbmRvYy5tYWtlU3VyZVRoZXJlQXJlTm9HbGFyZUFuZFNoYWRvd3NPblRoZUlkXCIgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNjYW5QcmV2aWV3XCIgKm5nSWY9XCIhZXJyb3IgJiYgIXNjYW5pbmdcIj5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJweS0xNlwiIHN0eWxlPVwiZm9udC1zaXplOiAxNnB4XCI+XG4gICAgICAgICAge3tcbiAgICAgICAgICAgIFwic2NhbmRvYy5lbnN1cmVBbGxUZXh0c0FyZVZpc2libGVcIlxuICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgIH19XG4gICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImltYWdlXCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWltYWdlXT1cIid1cmwoJyArIHByZXZpZXcgKyAnKSdcIlxuICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxmb290ZXIgKm5nSWY9XCJwcmV2aWV3XCI+XG4gICAgICA8IS0tIDxkaXYgY2xhc3M9XCJkaXNwbGF5SW5mb1wiICpuZ0lmPVwiIXByZXZpZXcgJiYgY2FtZXJhUmVhZHlcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5SW5mb1wiPlxuICAgICAgICB7eyBkaXNwbGF5SW5mbyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+IC0tPlxuICAgICAgPCEtLSA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiAyNnB4XCI+XG4gICAgICA8ZGl2XG4gICAgICAgIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyOyBmb250LXNpemU6IDE4cHhcIlxuICAgICAgICAqbmdJZj1cImlkU2NhbiAmJiAhcHJldmlldyAmJiBjYW1lcmFSZWFkeVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpZFNjYW4gPT09ICdCQUNLJ1wiPlxuICAgICAgICAgIFR1cm4gZG9jdW1lbnQgYW5kOlxuICAgICAgICAgIHt7IFwic2NhbmRvYy5jYXB0dXJlQmFja1wiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaWRTY2FuID09PSAnRlJPTlQnXCI+XG4gICAgICAgICAgVHVybiBkb2N1bWVudCBhbmQ6XG4gICAgICAgICAge3sgXCJzY2FuZG9jLmNhcHR1cmVGcm9udFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+IC0tPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiICpuZ0lmPVwicHJldmlld1wiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwibXItNFwiIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJyZXRyeSgpXCI+XG4gICAgICAgICAge3sgXCJzY2FuZG9jLnJldHJ5XCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIFtkaXNhYmxlZF09XCJlcnJvclwiXG4gICAgICAgICAgY2xhc3M9XCJtbC00XCJcbiAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgICAgIChjbGljayk9XCJjb250aW51ZSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IFwic2NhbmRvYy5jb250aW51ZVdpdGhTZWxlY3RlZEltYWdlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvb3Rlcj5cbiAgPC9zZWN0aW9uPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -3,19 +3,21 @@ import { BaseComponent } from '../../../core/components/base.component';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "../../../dialogs/dialogs.core.provider";
5
5
  import * as i2 from "../../../providers/camera.provider";
6
- import * as i3 from "@angular/material/dialog";
7
- import * as i4 from "@angular/cdk/platform";
8
- import * as i5 from "@angular/common";
9
- import * as i6 from "@angular/material/icon";
10
- import * as i7 from "@angular/material/button";
11
- import * as i8 from "../../../core/components/scan/scan.component";
12
- import * as i9 from "../../../core/components/camera-switch/camera-switch.component";
13
- import * as i10 from "@ngx-translate/core";
6
+ import * as i3 from "../../../providers/scan.provider";
7
+ import * as i4 from "@angular/material/dialog";
8
+ import * as i5 from "@angular/cdk/platform";
9
+ import * as i6 from "@angular/common";
10
+ import * as i7 from "@angular/material/icon";
11
+ import * as i8 from "@angular/material/button";
12
+ import * as i9 from "../../../core/components/scan/scan.component";
13
+ import * as i10 from "../../../core/components/camera-switch/camera-switch.component";
14
+ import * as i11 from "@ngx-translate/core";
14
15
  export class ScanProfileComponent extends BaseComponent {
15
- constructor(dialogs, cameraProvider, dialogRef, platform) {
16
+ constructor(dialogs, cameraProvider, scanProvider, dialogRef, platform) {
16
17
  super();
17
18
  this.dialogs = dialogs;
18
19
  this.cameraProvider = cameraProvider;
20
+ this.scanProvider = scanProvider;
19
21
  this.dialogRef = dialogRef;
20
22
  this.platform = platform;
21
23
  this.type = 'desktop';
@@ -41,6 +43,11 @@ export class ScanProfileComponent extends BaseComponent {
41
43
  }
42
44
  actions(event) {
43
45
  switch (event.type) {
46
+ case 'scanFinish':
47
+ if (this.scanProvider.config.hideResults) {
48
+ this.dialogRef?.close(event.data);
49
+ }
50
+ break;
44
51
  case 'manualMode':
45
52
  this.dialogRef?.close({ manual: true });
46
53
  break;
@@ -58,15 +65,15 @@ export class ScanProfileComponent extends BaseComponent {
58
65
  this.dialogRef?.close();
59
66
  }
60
67
  }
61
- ScanProfileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanProfileComponent, deps: [{ token: i1.DialogsCoreProvider }, { token: i2.NgxScandocCameraProvider }, { token: i3.MatDialogRef }, { token: i4.Platform }], target: i0.ɵɵFactoryTarget.Component });
62
- ScanProfileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScanProfileComponent, selector: "app-scan-profile", inputs: { type: "type" }, host: { listeners: { "touchmove": "handleTouchMove($event)" } }, usesInheritance: true, ngImport: i0, template: "<header class=\"page-header\">\n <div class=\"title\" >\n {{ \"scandoc.title\" | translate }}\n </div>\n\n <span style=\"flex: 1\"></span>\n\n <ng-container *ngIf=\"cameraProvider.$showSwitch| async\">\n <div class=\"separator\"></div>\n <div style=\"padding: 0px 16px\">\n <ngx-scan-camera-switch></ngx-scan-camera-switch>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"type === 'desktop'\">\n <div class=\"separator\"></div>\n\n <button mat-button (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n </ng-container>\n</header>\n\n<ngx-scan\n (actions)=\"actions($event)\"\n [showDialog]=\"showDialog\"\n [dialogs]=\"dialogs\"\n></ngx-scan>\n", styles: [":host{display:flex;flex-direction:column!important;flex:1;background-color:#f5f5f5;overflow:hidden}.page-header{display:flex;flex-direction:row;align-items:center}.page-header button{height:100%}@media only screen and (max-width: 768px){header .title{font-size:12px!important;line-height:18px!important}}\n", ".page-header{z-index:2000;height:64px;padding:0;background-color:#fff;border-bottom:1px solid rgba(0,0,0,.12)}.page-header .title{padding-left:24px;line-height:64px;font-size:18px}.page-header .separator{width:1px;background-color:#0000001f;height:100%}.page-header .total{line-height:64px}.page-header .total span{font-weight:700}.page-footer{height:64px}.page-footer button{margin-left:24px;box-shadow:none!important}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i8.ScanComponent, selector: "ngx-scan", inputs: ["type", "dialogs", "showDialog"], outputs: ["actions"] }, { kind: "component", type: i9.CameraSwitchComponent, selector: "ngx-scan-camera-switch" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
68
+ ScanProfileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanProfileComponent, deps: [{ token: i1.DialogsCoreProvider }, { token: i2.NgxScandocCameraProvider }, { token: i3.ScanProvider }, { token: i4.MatDialogRef }, { token: i5.Platform }], target: i0.ɵɵFactoryTarget.Component });
69
+ ScanProfileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScanProfileComponent, selector: "app-scan-profile", inputs: { type: "type" }, host: { listeners: { "touchmove": "handleTouchMove($event)" } }, usesInheritance: true, ngImport: i0, template: "<header class=\"page-header\">\n <div class=\"title\" >\n {{ \"scandoc.title\" | translate }}\n </div>\n\n <span style=\"flex: 1\"></span>\n\n <ng-container *ngIf=\"cameraProvider.$showSwitch| async\">\n <div class=\"separator\"></div>\n <div style=\"padding: 0px 16px\">\n <ngx-scan-camera-switch></ngx-scan-camera-switch>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"type === 'desktop'\">\n <div class=\"separator\"></div>\n\n <button mat-button (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n </ng-container>\n</header>\n\n<ngx-scan\n (actions)=\"actions($event)\"\n [showDialog]=\"showDialog\"\n [dialogs]=\"dialogs\"\n></ngx-scan>\n", styles: [":host{display:flex;flex-direction:column!important;flex:1;background-color:#f5f5f5;overflow:hidden}.page-header{display:flex;flex-direction:row;align-items:center}.page-header button{height:100%}@media only screen and (max-width: 768px){header .title{font-size:12px!important;line-height:18px!important}}\n", ".page-header{z-index:2000;height:64px;padding:0;background-color:#fff;border-bottom:1px solid rgba(0,0,0,.12)}.page-header .title{padding-left:24px;line-height:64px;font-size:18px}.page-header .separator{width:1px;background-color:#0000001f;height:100%}.page-header .total{line-height:64px}.page-header .total span{font-weight:700}.page-footer{height:64px}.page-footer button{margin-left:24px;box-shadow:none!important}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.ScanComponent, selector: "ngx-scan", inputs: ["type", "dialogs", "showDialog"], outputs: ["actions"] }, { kind: "component", type: i10.CameraSwitchComponent, selector: "ngx-scan-camera-switch" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
63
70
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanProfileComponent, decorators: [{
64
71
  type: Component,
65
72
  args: [{ selector: 'app-scan-profile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<header class=\"page-header\">\n <div class=\"title\" >\n {{ \"scandoc.title\" | translate }}\n </div>\n\n <span style=\"flex: 1\"></span>\n\n <ng-container *ngIf=\"cameraProvider.$showSwitch| async\">\n <div class=\"separator\"></div>\n <div style=\"padding: 0px 16px\">\n <ngx-scan-camera-switch></ngx-scan-camera-switch>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"type === 'desktop'\">\n <div class=\"separator\"></div>\n\n <button mat-button (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n </ng-container>\n</header>\n\n<ngx-scan\n (actions)=\"actions($event)\"\n [showDialog]=\"showDialog\"\n [dialogs]=\"dialogs\"\n></ngx-scan>\n", styles: [":host{display:flex;flex-direction:column!important;flex:1;background-color:#f5f5f5;overflow:hidden}.page-header{display:flex;flex-direction:row;align-items:center}.page-header button{height:100%}@media only screen and (max-width: 768px){header .title{font-size:12px!important;line-height:18px!important}}\n", ".page-header{z-index:2000;height:64px;padding:0;background-color:#fff;border-bottom:1px solid rgba(0,0,0,.12)}.page-header .title{padding-left:24px;line-height:64px;font-size:18px}.page-header .separator{width:1px;background-color:#0000001f;height:100%}.page-header .total{line-height:64px}.page-header .total span{font-weight:700}.page-footer{height:64px}.page-footer button{margin-left:24px;box-shadow:none!important}\n"] }]
66
- }], ctorParameters: function () { return [{ type: i1.DialogsCoreProvider }, { type: i2.NgxScandocCameraProvider }, { type: i3.MatDialogRef }, { type: i4.Platform }]; }, propDecorators: { type: [{
73
+ }], ctorParameters: function () { return [{ type: i1.DialogsCoreProvider }, { type: i2.NgxScandocCameraProvider }, { type: i3.ScanProvider }, { type: i4.MatDialogRef }, { type: i5.Platform }]; }, propDecorators: { type: [{
67
74
  type: Input
68
75
  }], handleTouchMove: [{
69
76
  type: HostListener,
70
77
  args: ['touchmove', ['$event']]
71
78
  }] } });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi1wcm9maWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY2FuZG9jL3NyYy9kaWFsb2dzL2NvbXBvbmVudHMvc2Nhbi1wcm9maWxlL3NjYW4tcHJvZmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvZGlhbG9ncy9jb21wb25lbnRzL3NjYW4tcHJvZmlsZS9zY2FuLXByb2ZpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFJVCxZQUFZLEVBSVosdUJBQXVCLEVBQ3ZCLEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7Ozs7OztBQVd4RSxNQUFNLE9BQU8sb0JBQ1gsU0FBUSxhQUFhO0lBb0JyQixZQUNTLE9BQTRCLEVBQzVCLGNBQXdDLEVBQ3hDLFNBQTZDLEVBQzVDLFFBQWtCO1FBRTFCLEtBQUssRUFBRSxDQUFDO1FBTEQsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7UUFDNUIsbUJBQWMsR0FBZCxjQUFjLENBQTBCO1FBQ3hDLGNBQVMsR0FBVCxTQUFTLENBQW9DO1FBQzVDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFyQm5CLFNBQUksR0FBRyxTQUFTLENBQUM7UUFFMUIsZUFBVSxHQUFHLEtBQUssQ0FBQztJQXNCbkIsQ0FBQztJQXBCRCxlQUFlLENBQUMsS0FBVTtRQUN4QixzQkFBc0I7UUFDdEIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDNUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3hCO1FBQ0QseUNBQXlDO1FBRXpDLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUU7WUFDckIsMEJBQTBCO1lBQzFCLG9DQUFvQztTQUNyQztJQUNILENBQUM7SUFVRCxlQUFlO1FBQ2IsbUNBQW1DO0lBQ3JDLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFVO1FBQ2hCLFFBQVEsS0FBSyxDQUFDLElBQUksRUFBRTtZQUNsQixLQUFLLFlBQVk7Z0JBQ2YsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDeEMsTUFBTTtZQUNSLEtBQUssZUFBZTtnQkFDbEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsQyxNQUFNO1lBQ1IsS0FBSyxrQkFBa0I7Z0JBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtvQkFDaEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7Z0JBQzFCLENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU07U0FDVDtJQUNILENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUMxQixDQUFDOztpSEF2RFUsb0JBQW9CO3FHQUFwQixvQkFBb0IsMEtDekJqQyxnc0JBNEJBOzJGREhhLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDRSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTTttTUFNdEMsSUFBSTtzQkFBWixLQUFLO2dCQUlOLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIFZpZXdDaGlsZCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPdXRwdXQsXG4gIEhvc3RMaXN0ZW5lcixcbiAgRWxlbWVudFJlZixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29yZS9jb21wb25lbnRzL2Jhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IERpYWxvZ3NDb3JlUHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9kaWFsb2dzL2RpYWxvZ3MuY29yZS5wcm92aWRlcic7XG5pbXBvcnQgeyBOZ3hTY2FuZG9jQ2FtZXJhUHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9wcm92aWRlcnMvY2FtZXJhLnByb3ZpZGVyJztcbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXNjYW4tcHJvZmlsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zY2FuLXByb2ZpbGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zY2FuLXByb2ZpbGUuY29tcG9uZW50LnNjc3MnLCAnLi4vLi4vc2Nzcy9kaWFsb2cuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NhblByb2ZpbGVDb21wb25lbnRcbiAgZXh0ZW5kcyBCYXNlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XG57XG4gIEBJbnB1dCgpIHR5cGUgPSAnZGVza3RvcCc7XG5cbiAgc2hvd0RpYWxvZyA9IGZhbHNlO1xuICBASG9zdExpc3RlbmVyKCd0b3VjaG1vdmUnLCBbJyRldmVudCddKVxuICBoYW5kbGVUb3VjaE1vdmUoZXZlbnQ6IGFueSkge1xuICAgIC8vIGNvbnNvbGUubG9nKGV2ZW50KTtcbiAgICBpZiAoZXZlbnQudG91Y2hlcy5sZW5ndGggPiAxKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICAvLyBjb25zb2xlLmxvZyhkb2N1bWVudC5ib2R5LnN0eWxlLnpvb20pO1xuXG4gICAgaWYgKGV2ZW50LnNjYWxlICE9PSAxKSB7XG4gICAgICAvLyBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgLy8gZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZ3M6IERpYWxvZ3NDb3JlUHJvdmlkZXIsXG4gICAgcHVibGljIGNhbWVyYVByb3ZpZGVyOiBOZ3hTY2FuZG9jQ2FtZXJhUHJvdmlkZXIsXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFNjYW5Qcm9maWxlQ29tcG9uZW50PixcbiAgICBwcml2YXRlIHBsYXRmb3JtOiBQbGF0Zm9ybVxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmNhbWVyYVByb3ZpZGVyKVxuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX19kZXN0cm95KCk7XG4gICAgY29uc29sZS5sb2coJ0RFUycpO1xuICB9XG5cbiAgYWN0aW9ucyhldmVudDogYW55KSB7XG4gICAgc3dpdGNoIChldmVudC50eXBlKSB7XG4gICAgICBjYXNlICdtYW51YWxNb2RlJzpcbiAgICAgICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKHsgbWFudWFsOiB0cnVlIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NjYW5EYXRhQ2xvc2UnOlxuICAgICAgICB0aGlzLmRpYWxvZ1JlZj8uY2xvc2UoZXZlbnQuZGF0YSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndHVybkRvY3VtZW50T3Zlcic6XG4gICAgICAgIHRoaXMuX19zdWJzKHRoaXMuZGlhbG9ncy50dXJuRG9jdW1lbnQoZXZlbnQuc2lkZSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zaG93RGlhbG9nID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLmRpYWxvZ1JlZj8uY2xvc2UoKTtcbiAgfVxufVxuIiwiPGhlYWRlciBjbGFzcz1cInBhZ2UtaGVhZGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJ0aXRsZVwiID5cbiAgICB7eyBcInNjYW5kb2MudGl0bGVcIiB8IHRyYW5zbGF0ZSB9fVxuICA8L2Rpdj5cblxuICA8c3BhbiBzdHlsZT1cImZsZXg6IDFcIj48L3NwYW4+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhbWVyYVByb3ZpZGVyLiRzaG93U3dpdGNofCBhc3luY1wiPlxuICAgIDxkaXYgY2xhc3M9XCJzZXBhcmF0b3JcIj48L2Rpdj5cbiAgICA8ZGl2IHN0eWxlPVwicGFkZGluZzogMHB4IDE2cHhcIj5cbiAgICAgIDxuZ3gtc2Nhbi1jYW1lcmEtc3dpdGNoPjwvbmd4LXNjYW4tY2FtZXJhLXN3aXRjaD5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGUgPT09ICdkZXNrdG9wJ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJzZXBhcmF0b3JcIj48L2Rpdj5cblxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwiY2xvc2UoKVwiPlxuICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9uZy1jb250YWluZXI+XG48L2hlYWRlcj5cblxuPG5neC1zY2FuXG4gIChhY3Rpb25zKT1cImFjdGlvbnMoJGV2ZW50KVwiXG4gIFtzaG93RGlhbG9nXT1cInNob3dEaWFsb2dcIlxuICBbZGlhbG9nc109XCJkaWFsb2dzXCJcbj48L25neC1zY2FuPlxuIl19
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi1wcm9maWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY2FuZG9jL3NyYy9kaWFsb2dzL2NvbXBvbmVudHMvc2Nhbi1wcm9maWxlL3NjYW4tcHJvZmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvZGlhbG9ncy9jb21wb25lbnRzL3NjYW4tcHJvZmlsZS9zY2FuLXByb2ZpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFJVCxZQUFZLEVBSVosdUJBQXVCLEVBQ3ZCLEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFZeEUsTUFBTSxPQUFPLG9CQUNYLFNBQVEsYUFBYTtJQW9CckIsWUFDUyxPQUE0QixFQUM1QixjQUF3QyxFQUN2QyxZQUEwQixFQUMzQixTQUE2QyxFQUM1QyxRQUFrQjtRQUUxQixLQUFLLEVBQUUsQ0FBQztRQU5ELFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBQzVCLG1CQUFjLEdBQWQsY0FBYyxDQUEwQjtRQUN2QyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMzQixjQUFTLEdBQVQsU0FBUyxDQUFvQztRQUM1QyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBdEJuQixTQUFJLEdBQUcsU0FBUyxDQUFDO1FBRTFCLGVBQVUsR0FBRyxLQUFLLENBQUM7SUF1Qm5CLENBQUM7SUFyQkQsZUFBZSxDQUFDLEtBQVU7UUFDeEIsc0JBQXNCO1FBQ3RCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzVCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN4QjtRQUNELHlDQUF5QztRQUV6QyxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFO1lBQ3JCLDBCQUEwQjtZQUMxQixvQ0FBb0M7U0FDckM7SUFDSCxDQUFDO0lBV0QsZUFBZTtRQUNiLG1DQUFtQztJQUNyQyxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBVTtRQUNoQixRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDbEIsS0FBSyxZQUFZO2dCQUNmLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFO29CQUN4QyxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ25DO2dCQUNELE1BQU07WUFFUixLQUFLLFlBQVk7Z0JBQ2YsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDeEMsTUFBTTtZQUNSLEtBQUssZUFBZTtnQkFDbEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsQyxNQUFNO1lBQ1IsS0FBSyxrQkFBa0I7Z0JBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtvQkFDaEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7Z0JBQzFCLENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU07U0FDVDtJQUNILENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUMxQixDQUFDOztpSEE5RFUsb0JBQW9CO3FHQUFwQixvQkFBb0IsMEtDMUJqQyxnc0JBNEJBOzJGREZhLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDRSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTTs4TkFNdEMsSUFBSTtzQkFBWixLQUFLO2dCQUlOLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIFZpZXdDaGlsZCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPdXRwdXQsXG4gIEhvc3RMaXN0ZW5lcixcbiAgRWxlbWVudFJlZixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29yZS9jb21wb25lbnRzL2Jhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IERpYWxvZ3NDb3JlUHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9kaWFsb2dzL2RpYWxvZ3MuY29yZS5wcm92aWRlcic7XG5pbXBvcnQgeyBOZ3hTY2FuZG9jQ2FtZXJhUHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9wcm92aWRlcnMvY2FtZXJhLnByb3ZpZGVyJztcbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7IFNjYW5Qcm92aWRlciB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9zY2FuLnByb3ZpZGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXNjYW4tcHJvZmlsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zY2FuLXByb2ZpbGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zY2FuLXByb2ZpbGUuY29tcG9uZW50LnNjc3MnLCAnLi4vLi4vc2Nzcy9kaWFsb2cuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NhblByb2ZpbGVDb21wb25lbnRcbiAgZXh0ZW5kcyBCYXNlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XG57XG4gIEBJbnB1dCgpIHR5cGUgPSAnZGVza3RvcCc7XG5cbiAgc2hvd0RpYWxvZyA9IGZhbHNlO1xuICBASG9zdExpc3RlbmVyKCd0b3VjaG1vdmUnLCBbJyRldmVudCddKVxuICBoYW5kbGVUb3VjaE1vdmUoZXZlbnQ6IGFueSkge1xuICAgIC8vIGNvbnNvbGUubG9nKGV2ZW50KTtcbiAgICBpZiAoZXZlbnQudG91Y2hlcy5sZW5ndGggPiAxKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICAvLyBjb25zb2xlLmxvZyhkb2N1bWVudC5ib2R5LnN0eWxlLnpvb20pO1xuXG4gICAgaWYgKGV2ZW50LnNjYWxlICE9PSAxKSB7XG4gICAgICAvLyBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgLy8gZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZ3M6IERpYWxvZ3NDb3JlUHJvdmlkZXIsXG4gICAgcHVibGljIGNhbWVyYVByb3ZpZGVyOiBOZ3hTY2FuZG9jQ2FtZXJhUHJvdmlkZXIsXG4gICAgcHJpdmF0ZSBzY2FuUHJvdmlkZXI6IFNjYW5Qcm92aWRlcixcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8U2NhblByb2ZpbGVDb21wb25lbnQ+LFxuICAgIHByaXZhdGUgcGxhdGZvcm06IFBsYXRmb3JtXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY2FtZXJhUHJvdmlkZXIpXG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fX2Rlc3Ryb3koKTtcbiAgICBjb25zb2xlLmxvZygnREVTJyk7XG4gIH1cblxuICBhY3Rpb25zKGV2ZW50OiBhbnkpIHtcbiAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgIGNhc2UgJ3NjYW5GaW5pc2gnOlxuICAgICAgICBpZiAodGhpcy5zY2FuUHJvdmlkZXIuY29uZmlnLmhpZGVSZXN1bHRzKSB7XG4gICAgICAgICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKGV2ZW50LmRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdtYW51YWxNb2RlJzpcbiAgICAgICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKHsgbWFudWFsOiB0cnVlIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NjYW5EYXRhQ2xvc2UnOlxuICAgICAgICB0aGlzLmRpYWxvZ1JlZj8uY2xvc2UoZXZlbnQuZGF0YSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndHVybkRvY3VtZW50T3Zlcic6XG4gICAgICAgIHRoaXMuX19zdWJzKHRoaXMuZGlhbG9ncy50dXJuRG9jdW1lbnQoZXZlbnQuc2lkZSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zaG93RGlhbG9nID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLmRpYWxvZ1JlZj8uY2xvc2UoKTtcbiAgfVxufVxuIiwiPGhlYWRlciBjbGFzcz1cInBhZ2UtaGVhZGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJ0aXRsZVwiID5cbiAgICB7eyBcInNjYW5kb2MudGl0bGVcIiB8IHRyYW5zbGF0ZSB9fVxuICA8L2Rpdj5cblxuICA8c3BhbiBzdHlsZT1cImZsZXg6IDFcIj48L3NwYW4+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhbWVyYVByb3ZpZGVyLiRzaG93U3dpdGNofCBhc3luY1wiPlxuICAgIDxkaXYgY2xhc3M9XCJzZXBhcmF0b3JcIj48L2Rpdj5cbiAgICA8ZGl2IHN0eWxlPVwicGFkZGluZzogMHB4IDE2cHhcIj5cbiAgICAgIDxuZ3gtc2Nhbi1jYW1lcmEtc3dpdGNoPjwvbmd4LXNjYW4tY2FtZXJhLXN3aXRjaD5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGUgPT09ICdkZXNrdG9wJ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJzZXBhcmF0b3JcIj48L2Rpdj5cblxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwiY2xvc2UoKVwiPlxuICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9uZy1jb250YWluZXI+XG48L2hlYWRlcj5cblxuPG5neC1zY2FuXG4gIChhY3Rpb25zKT1cImFjdGlvbnMoJGV2ZW50KVwiXG4gIFtzaG93RGlhbG9nXT1cInNob3dEaWFsb2dcIlxuICBbZGlhbG9nc109XCJkaWFsb2dzXCJcbj48L25neC1zY2FuPlxuIl19
@@ -2843,18 +2843,22 @@ class ScanComponent extends BaseComponent {
2843
2843
  // console.log('MODEL', this.model);
2844
2844
  this.actions.emit({
2845
2845
  type: 'scanFinish',
2846
- model,
2847
- results,
2848
- });
2849
- this.zone.run(() => {
2850
- this.result = true;
2851
- console.time('ff');
2852
- this.cd.detectChanges();
2853
- this.scanResults.next({ type: 'model', data: model });
2854
- // this.cd.detectChanges();
2855
- // });
2856
- console.timeEnd('ff');
2846
+ data: {
2847
+ model: this.model,
2848
+ images: this.images,
2849
+ },
2857
2850
  });
2851
+ if (!this.scanProvider.config.hideResults) {
2852
+ this.zone.run(() => {
2853
+ this.result = true;
2854
+ console.time('ff');
2855
+ this.cd.detectChanges();
2856
+ this.scanResults.next({ type: 'model', data: model });
2857
+ // this.cd.detectChanges();
2858
+ // });
2859
+ console.timeEnd('ff');
2860
+ });
2861
+ }
2858
2862
  }
2859
2863
  else {
2860
2864
  console.log('ERROR');
@@ -3815,10 +3819,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
3815
3819
  }], ctorParameters: function () { return [{ type: i1$3.MatDialog }]; } });
3816
3820
 
3817
3821
  class ScanProfileComponent extends BaseComponent {
3818
- constructor(dialogs, cameraProvider, dialogRef, platform) {
3822
+ constructor(dialogs, cameraProvider, scanProvider, dialogRef, platform) {
3819
3823
  super();
3820
3824
  this.dialogs = dialogs;
3821
3825
  this.cameraProvider = cameraProvider;
3826
+ this.scanProvider = scanProvider;
3822
3827
  this.dialogRef = dialogRef;
3823
3828
  this.platform = platform;
3824
3829
  this.type = 'desktop';
@@ -3843,13 +3848,18 @@ class ScanProfileComponent extends BaseComponent {
3843
3848
  console.log('DES');
3844
3849
  }
3845
3850
  actions(event) {
3846
- var _a, _b;
3851
+ var _a, _b, _c;
3847
3852
  switch (event.type) {
3853
+ case 'scanFinish':
3854
+ if (this.scanProvider.config.hideResults) {
3855
+ (_a = this.dialogRef) === null || _a === void 0 ? void 0 : _a.close(event.data);
3856
+ }
3857
+ break;
3848
3858
  case 'manualMode':
3849
- (_a = this.dialogRef) === null || _a === void 0 ? void 0 : _a.close({ manual: true });
3859
+ (_b = this.dialogRef) === null || _b === void 0 ? void 0 : _b.close({ manual: true });
3850
3860
  break;
3851
3861
  case 'scanDataClose':
3852
- (_b = this.dialogRef) === null || _b === void 0 ? void 0 : _b.close(event.data);
3862
+ (_c = this.dialogRef) === null || _c === void 0 ? void 0 : _c.close(event.data);
3853
3863
  break;
3854
3864
  case 'turnDocumentOver':
3855
3865
  this.__subs(this.dialogs.turnDocument(event.side)).subscribe(() => {
@@ -3863,12 +3873,12 @@ class ScanProfileComponent extends BaseComponent {
3863
3873
  (_a = this.dialogRef) === null || _a === void 0 ? void 0 : _a.close();
3864
3874
  }
3865
3875
  }
3866
- ScanProfileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanProfileComponent, deps: [{ token: DialogsCoreProvider }, { token: NgxScandocCameraProvider }, { token: i1$3.MatDialogRef }, { token: i2.Platform }], target: i0.ɵɵFactoryTarget.Component });
3876
+ ScanProfileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanProfileComponent, deps: [{ token: DialogsCoreProvider }, { token: NgxScandocCameraProvider }, { token: ScanProvider }, { token: i1$3.MatDialogRef }, { token: i2.Platform }], target: i0.ɵɵFactoryTarget.Component });
3867
3877
  ScanProfileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScanProfileComponent, selector: "app-scan-profile", inputs: { type: "type" }, host: { listeners: { "touchmove": "handleTouchMove($event)" } }, usesInheritance: true, ngImport: i0, template: "<header class=\"page-header\">\n <div class=\"title\" >\n {{ \"scandoc.title\" | translate }}\n </div>\n\n <span style=\"flex: 1\"></span>\n\n <ng-container *ngIf=\"cameraProvider.$showSwitch| async\">\n <div class=\"separator\"></div>\n <div style=\"padding: 0px 16px\">\n <ngx-scan-camera-switch></ngx-scan-camera-switch>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"type === 'desktop'\">\n <div class=\"separator\"></div>\n\n <button mat-button (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n </ng-container>\n</header>\n\n<ngx-scan\n (actions)=\"actions($event)\"\n [showDialog]=\"showDialog\"\n [dialogs]=\"dialogs\"\n></ngx-scan>\n", styles: [":host{display:flex;flex-direction:column!important;flex:1;background-color:#f5f5f5;overflow:hidden}.page-header{display:flex;flex-direction:row;align-items:center}.page-header button{height:100%}@media only screen and (max-width: 768px){header .title{font-size:12px!important;line-height:18px!important}}\n", ".page-header{z-index:2000;height:64px;padding:0;background-color:#fff;border-bottom:1px solid rgba(0,0,0,.12)}.page-header .title{padding-left:24px;line-height:64px;font-size:18px}.page-header .separator{width:1px;background-color:#0000001f;height:100%}.page-header .total{line-height:64px}.page-header .total span{font-weight:700}.page-footer{height:64px}.page-footer button{margin-left:24px;box-shadow:none!important}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: ScanComponent, selector: "ngx-scan", inputs: ["type", "dialogs", "showDialog"], outputs: ["actions"] }, { kind: "component", type: CameraSwitchComponent, selector: "ngx-scan-camera-switch" }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3868
3878
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanProfileComponent, decorators: [{
3869
3879
  type: Component,
3870
3880
  args: [{ selector: 'app-scan-profile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<header class=\"page-header\">\n <div class=\"title\" >\n {{ \"scandoc.title\" | translate }}\n </div>\n\n <span style=\"flex: 1\"></span>\n\n <ng-container *ngIf=\"cameraProvider.$showSwitch| async\">\n <div class=\"separator\"></div>\n <div style=\"padding: 0px 16px\">\n <ngx-scan-camera-switch></ngx-scan-camera-switch>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"type === 'desktop'\">\n <div class=\"separator\"></div>\n\n <button mat-button (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n </ng-container>\n</header>\n\n<ngx-scan\n (actions)=\"actions($event)\"\n [showDialog]=\"showDialog\"\n [dialogs]=\"dialogs\"\n></ngx-scan>\n", styles: [":host{display:flex;flex-direction:column!important;flex:1;background-color:#f5f5f5;overflow:hidden}.page-header{display:flex;flex-direction:row;align-items:center}.page-header button{height:100%}@media only screen and (max-width: 768px){header .title{font-size:12px!important;line-height:18px!important}}\n", ".page-header{z-index:2000;height:64px;padding:0;background-color:#fff;border-bottom:1px solid rgba(0,0,0,.12)}.page-header .title{padding-left:24px;line-height:64px;font-size:18px}.page-header .separator{width:1px;background-color:#0000001f;height:100%}.page-header .total{line-height:64px}.page-header .total span{font-weight:700}.page-footer{height:64px}.page-footer button{margin-left:24px;box-shadow:none!important}\n"] }]
3871
- }], ctorParameters: function () { return [{ type: DialogsCoreProvider }, { type: NgxScandocCameraProvider }, { type: i1$3.MatDialogRef }, { type: i2.Platform }]; }, propDecorators: { type: [{
3881
+ }], ctorParameters: function () { return [{ type: DialogsCoreProvider }, { type: NgxScandocCameraProvider }, { type: ScanProvider }, { type: i1$3.MatDialogRef }, { type: i2.Platform }]; }, propDecorators: { type: [{
3872
3882
  type: Input
3873
3883
  }], handleTouchMove: [{
3874
3884
  type: HostListener,