ca-components 1.0.74 → 1.0.76

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/esm2022/lib/components/ca-comment/ca-comment.component.mjs +16 -5
  2. package/esm2022/lib/components/ca-custom-scrollbar/ca-custom-scrollbar.component.mjs +123 -120
  3. package/esm2022/lib/components/ca-custom-scrollbar/enums/event-type.enum.mjs +8 -0
  4. package/esm2022/lib/components/ca-custom-scrollbar/enums/index.mjs +3 -0
  5. package/esm2022/lib/components/ca-custom-scrollbar/enums/scroll-event-action.enum.mjs +6 -0
  6. package/esm2022/lib/components/ca-custom-scrollbar/models/index.mjs +3 -0
  7. package/esm2022/lib/components/ca-custom-scrollbar/models/scroll-bar-options.model.mjs +2 -0
  8. package/esm2022/lib/components/ca-custom-scrollbar/models/scroll-event.model.mjs +2 -0
  9. package/esm2022/lib/components/ca-filters/components/ca-dispatcher-filter/ca-dispatcher-filter.component.mjs +2 -6
  10. package/esm2022/lib/components/ca-filters/components/ca-location-filter/ca-location-filter.component.mjs +2 -6
  11. package/esm2022/lib/components/ca-filters/components/ca-user-filter/ca-user-filter.component.mjs +7 -9
  12. package/esm2022/lib/components/ca-filters/components/ca-violation-filter/ca-violation-filter.component.mjs +5 -5
  13. package/esm2022/lib/components/ca-input/ca-input.component.mjs +3 -4
  14. package/esm2022/lib/components/ca-input/pipes/input-class.pipe.mjs +2 -2
  15. package/esm2022/lib/components/ca-input/pipes/label-class.pipe.mjs +2 -1
  16. package/esm2022/lib/components/ca-input/pipes/show-placeholder-text.pipe.mjs +3 -3
  17. package/esm2022/lib/components/ca-input/pipes/show-valid-check.pipe.mjs +2 -2
  18. package/esm2022/lib/components/ca-input-address-dropdown/ca-input-address-dropdown.component.mjs +93 -83
  19. package/esm2022/lib/components/ca-input-address-dropdown/enums/input-address-type-string.enum.mjs +2 -1
  20. package/esm2022/lib/components/ca-input-dropdown/ca-input-dropdown.component.mjs +10 -23
  21. package/esm2022/lib/components/ca-input-dropdown/components/ca-input-dropdown-dispatch/ca-input-dropdown-dispatch.component.mjs +2 -6
  22. package/esm2022/lib/components/ca-input-dropdown/components/ca-input-dropdown-labels/ca-input-dropdown-labels.component.mjs +2 -6
  23. package/esm2022/lib/components/ca-input-dropdown/components/ca-input-dropdown-text-counter/ca-input-dropdown-text-counter.component.mjs +2 -6
  24. package/esm2022/lib/components/ca-logo-change/ca-logo-change.component.mjs +8 -23
  25. package/esm2022/lib/components/ca-main-table/ca-main-table.component.mjs +4 -5
  26. package/esm2022/lib/components/ca-map-dropdown/ca-map-dropdown.component.mjs +6 -6
  27. package/esm2022/lib/components/ca-modal-button/ca-modal-button.component.mjs +2 -4
  28. package/esm2022/lib/components/ca-modal-button/enums/index.mjs +2 -2
  29. package/esm2022/lib/components/ca-modal-button/enums/modal-button-class-type.enum.mjs +10 -0
  30. package/esm2022/lib/components/ca-modal-button/enums/modal-button-size.enum.mjs +3 -3
  31. package/esm2022/lib/components/ca-modal-button/pipes/modal-button-class.pipe.mjs +4 -12
  32. package/esm2022/lib/components/ca-progress-expiration/ca-progress-expiration.component.mjs +9 -6
  33. package/esm2022/lib/components/ca-progress-range/ca-progress-range.component.mjs +3 -3
  34. package/esm2022/lib/components/ca-progress-range/utils/directives/progress-range-tooltip-arrow-position.directive.mjs +1 -1
  35. package/esm2022/lib/components/ca-rating-review/components/ca-ratings-reviews-popup/ca-ratings-reviews-popup.component.mjs +8 -10
  36. package/esm2022/lib/components/ca-right-side-panel/components/ca-right-side-panel-menu/ca-right-side-panel-menu.component.mjs +3 -3
  37. package/esm2022/lib/components/ca-todo/components/ca-todo-card.component.mjs +1 -1
  38. package/esm2022/lib/components/ca-upload-files/ca-upload-files.component.mjs +59 -54
  39. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/ca-upload-dropzone.component.mjs +11 -7
  40. package/esm2022/lib/components/ca-upload-files/components/ca-upload-file/ca-upload-file.component.mjs +18 -15
  41. package/esm2022/lib/utils/helpers/file.helpers.mjs +14 -0
  42. package/fesm2022/ca-components.mjs +606 -587
  43. package/fesm2022/ca-components.mjs.map +1 -1
  44. package/lib/components/ca-custom-scrollbar/ca-custom-scrollbar.component.d.ts +38 -29
  45. package/lib/components/ca-custom-scrollbar/enums/event-type.enum.d.ts +6 -0
  46. package/lib/components/ca-custom-scrollbar/enums/index.d.ts +2 -0
  47. package/lib/components/ca-custom-scrollbar/enums/scroll-event-action.enum.d.ts +4 -0
  48. package/lib/components/ca-custom-scrollbar/models/index.d.ts +2 -0
  49. package/lib/components/ca-custom-scrollbar/models/scroll-bar-options.model.d.ts +6 -0
  50. package/lib/components/ca-custom-scrollbar/models/scroll-event.model.d.ts +6 -0
  51. package/lib/components/ca-input/pipes/input-class.pipe.d.ts +1 -1
  52. package/lib/components/ca-input/pipes/label-class.pipe.d.ts +1 -1
  53. package/lib/components/ca-input-address-dropdown/ca-input-address-dropdown.component.d.ts +9 -7
  54. package/lib/components/ca-input-address-dropdown/enums/input-address-type-string.enum.d.ts +2 -1
  55. package/lib/components/ca-input-dropdown/ca-input-dropdown.component.d.ts +2 -1
  56. package/lib/components/ca-logo-change/ca-logo-change.component.d.ts +0 -1
  57. package/lib/components/ca-modal-button/ca-modal-button.component.d.ts +2 -4
  58. package/lib/components/ca-modal-button/enums/index.d.ts +1 -1
  59. package/lib/components/ca-modal-button/enums/modal-button-class-type.enum.d.ts +8 -0
  60. package/lib/components/ca-modal-button/enums/modal-button-size.enum.d.ts +2 -2
  61. package/lib/components/ca-modal-button/pipes/modal-button-class.pipe.d.ts +2 -2
  62. package/lib/components/ca-progress-range/ca-progress-range.component.d.ts +1 -1
  63. package/lib/components/ca-progress-range/utils/directives/progress-range-tooltip-arrow-position.directive.d.ts +1 -1
  64. package/lib/components/ca-upload-files/ca-upload-files.component.d.ts +4 -3
  65. package/lib/utils/helpers/file.helpers.d.ts +3 -0
  66. package/package.json +1 -1
  67. package/esm2022/lib/components/ca-logo-change/pipes/logo-slider.pipe.mjs +0 -17
  68. package/esm2022/lib/components/ca-modal-button/enums/modal-button-type.enum.mjs +0 -10
  69. package/lib/components/ca-logo-change/pipes/logo-slider.pipe.d.ts +0 -7
  70. package/lib/components/ca-modal-button/enums/modal-button-type.enum.d.ts +0 -8
@@ -8,13 +8,11 @@ import { NgbModule, NgbPopoverModule, NgbTooltip, } from '@ng-bootstrap/ng-boots
8
8
  import { NgxMaskModule } from 'ngx-mask';
9
9
  //Components
10
10
  import { CaInputComponent } from '../../../ca-input/ca-input.component';
11
- import { CaAppTooltipV2Component } from '../../../ca-app-tooltip-v2/ca-app-tooltip-v2.component';
12
11
  import { CaSpinnerComponent } from '../../../ca-spinner/ca-spinner.component';
13
- import { CaLogoChangeComponent } from '../../../ca-logo-change/ca-logo-change.component';
14
12
  //Enums
15
13
  import { DocumentAction } from './enums';
16
14
  //Pipes
17
- import { ByteConvertPipe, FileNamePipe, UrlExtensionPipe, NgClassPipe, } from './pipes';
15
+ import { ByteConvertPipe, NgClassPipe, } from './pipes';
18
16
  //Routes
19
17
  import { UploadFileRoutes } from './utils/svg-routes';
20
18
  import * as i0 from "@angular/core";
@@ -148,8 +146,8 @@ export class CaUploadFileComponent {
148
146
  }
149
147
  handleDeleteAction() {
150
148
  this.isFileDelete = false;
151
- this.deleteAction.emit({
152
- id: this.config.id,
149
+ this.fileAction.emit({
150
+ file: this.config.file,
153
151
  action: DocumentAction.DELETE,
154
152
  });
155
153
  }
@@ -250,10 +248,15 @@ export class CaUploadFileComponent {
250
248
  this.config.file.tagGeneratedByUser = true;
251
249
  this.config.file.tagId = [item.tagId];
252
250
  this.config.file.tagChanged =
253
- this.config.file.savedTag != item.tagName ? true : false;
251
+ this.config.file.savedTag != item.tagName
252
+ ? true
253
+ : false;
254
254
  const action = 'tag';
255
255
  if (!this.t2.isOpen()) {
256
- this.fileAction.emit({ file: this.config.file, action });
256
+ this.fileAction.emit({
257
+ file: this.config.file,
258
+ action,
259
+ });
257
260
  }
258
261
  this.ref.detectChanges();
259
262
  }, 200);
@@ -269,7 +272,9 @@ export class CaUploadFileComponent {
269
272
  this.config.file.tags = [];
270
273
  this.config.file.tagId = [];
271
274
  const action = this.action.TAG;
272
- this.config.file.tagChanged = this.config.file.savedTag ? true : false;
275
+ this.config.file.tagChanged = this.config.file.savedTag
276
+ ? true
277
+ : false;
273
278
  this.fileAction.emit({ file: this.config.file, action });
274
279
  this.ref.detectChanges();
275
280
  }, 200);
@@ -301,7 +306,9 @@ export class CaUploadFileComponent {
301
306
  // modules
302
307
  CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i4.LowerCasePipe, name: "lowercase" }, { kind: "directive", type: NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "ngmodule", type: NgbModule }, { kind: "directive", type: i5.NgbPopover, selector: "[ngbPopover]", inputs: ["animation", "autoClose", "ngbPopover", "popoverTitle", "placement", "popperOptions", "triggers", "positionTarget", "container", "disablePopover", "popoverClass", "popoverContext", "openDelay", "closeDelay"], outputs: ["shown", "hidden"], exportAs: ["ngbPopover"] }, { kind: "ngmodule", type: NgbPopoverModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: AngularSvgIconModule }, { kind: "component", type: i7.SvgIconComponent, selector: "svg-icon", inputs: ["src", "name", "stretch", "applyClass", "applyCss", "svgClass", "class", "viewBox", "svgAriaLabel", "svgStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: NgxMaskModule }, { kind: "pipe", type:
303
308
  // pipes
304
- ByteConvertPipe, name: "byteConvert" }, { kind: "ngmodule", type: PdfViewerModule }, { kind: "component", type: i8.PdfViewerComponent, selector: "pdf-viewer", inputs: ["src", "c-maps-url", "page", "render-text", "render-text-mode", "original-size", "show-all", "stick-to-page", "zoom", "zoom-scale", "rotation", "external-link-target", "autoresize", "fit-to-page", "show-borders"], outputs: ["after-load-complete", "page-rendered", "pages-initialized", "text-layer-rendered", "error", "on-progress", "pageChange"] }, { kind: "pipe", type: NgClassPipe, name: "ngClassPipe" }, { kind: "component", type: CaSpinnerComponent, selector: "app-ca-spinner", inputs: ["size", "color", "isBarSpinner"] }, { kind: "component", type: CaInputComponent, selector: "app-ca-input", inputs: ["inputConfig", "incorrectValue", "selectedDropdownLabelColor", "template"], outputs: ["incorrectEvent", "blurInput", "focusInput", "change", "commandEvent", "clear", "showHideDropdown", "dropDownKeyNavigation"] }] }); }
309
+ ByteConvertPipe, name: "byteConvert" }, { kind: "ngmodule", type: PdfViewerModule }, { kind: "component", type: i8.PdfViewerComponent, selector: "pdf-viewer", inputs: ["src", "c-maps-url", "page", "render-text", "render-text-mode", "original-size", "show-all", "stick-to-page", "zoom", "zoom-scale", "rotation", "external-link-target", "autoresize", "fit-to-page", "show-borders"], outputs: ["after-load-complete", "page-rendered", "pages-initialized", "text-layer-rendered", "error", "on-progress", "pageChange"] }, { kind: "pipe", type: NgClassPipe, name: "ngClassPipe" }, { kind: "component", type:
310
+ //components
311
+ CaSpinnerComponent, selector: "app-ca-spinner", inputs: ["size", "color", "isBarSpinner"] }, { kind: "component", type: CaInputComponent, selector: "app-ca-input", inputs: ["inputConfig", "incorrectValue", "selectedDropdownLabelColor", "template"], outputs: ["incorrectEvent", "blurInput", "focusInput", "change", "commandEvent", "clear", "showHideDropdown", "dropDownKeyNavigation"] }] }); }
305
312
  }
306
313
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CaUploadFileComponent, decorators: [{
307
314
  type: Component,
@@ -317,15 +324,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
317
324
  NgxMaskModule,
318
325
  // pipes
319
326
  ByteConvertPipe,
320
- UrlExtensionPipe,
321
327
  PdfViewerModule,
322
- FileNamePipe,
323
328
  NgClassPipe,
324
- // components
325
- CaAppTooltipV2Component,
329
+ //components
326
330
  CaSpinnerComponent,
327
331
  CaInputComponent,
328
- CaLogoChangeComponent,
329
332
  ], encapsulation: ViewEncapsulation.Emulated, template: "<div\n class=\"ta-upload-file-container d-grid {{ config.customClassName }}\"\n [ngClass]=\"\n config\n | ngClassPipe: t2 : isArrowHovered : annotationHover : reviewFileConfig\n \"\n>\n <!-- File Header Actions (mouseenter)=\"hoverFile()\" -->\n\n <!-- Review Actions -->\n <ng-container *ngIf=\"reviewFileConfig.isReview\">\n <div\n class=\"ta-upload-file-header-review d-flex align-items-center justify-content-between\"\n >\n <ng-container *ngIf=\"reviewFileConfig.reviewMode === 'REVIEW_MODE'\">\n <div\n ngbTooltip\n mainTooltip=\"Download\"\n tooltipBackground=\"#6c6c6c\"\n position=\"top\"\n class=\"ta-upload-action-download-review d-flex align-items-center justify-content-center\"\n (click)=\"onAction(action.DOWNLOAD)\"\n >\n <svg-icon [src]=\"icons.download\"></svg-icon>\n </div>\n </ng-container>\n <ng-container *ngIf=\"reviewFileConfig.reviewMode === 'REVIEW_MODE'\">\n <div\n ngbTooltip\n mainTooltip=\"\n config.file?.incorrect && isIncorrectMarkHover\n ? 'Unmark'\n : 'Mark Incorrect'\n \"\n tooltipBackground=\"\n config.file?.incorrect && isIncorrectMarkHover ? '#6c6c6c' : '#EF5350'\n \"\n position=\"top\"\n class=\" {{\n config.file?.incorrect && isIncorrectMarkHover\n ? 'ta-upload-action-mark-correct'\n : 'ta-upload-action-mark-incorrect'\n }}\"\n [ngClass]=\"{ incorrect: config.file?.incorrect }\"\n (click)=\"\n onAction(\n config.file?.incorrect && isIncorrectMarkHover\n ? 'mark-correct'\n : 'mark-incorrect'\n )\n \"\n (mouseenter)=\"isIncorrectMarkHover = true\"\n (mouseleave)=\"isIncorrectMarkHover = false\"\n >\n <svg-icon\n [src]=\"\n config.file?.incorrect && isIncorrectMarkHover\n ? icons.confirm\n : icons.close\n \"\n ></svg-icon>\n </div>\n </ng-container>\n\n <!--COMMENT FOR NOW -->\n\n <!-- Review Message -->\n <!-- <ng-container>\n <div *ngIf=\"\n reviewMode === 'REVIEW_MODE' || reviewMode === 'FEEDBACK_MODE'\n \"\n class=\"review-feedback-container\"\n (mouseenter)=\"annotationHover = true\"\n (mouseleave)=\"annotationHover = false\"\n >\n <app-applicant-review-feedback\n [formControl]=\"documentReviewInputControl\"\n [displayAnnotationButton]=\"\n file?.incorrect && !documentReviewInputVisible\n \"\n [displayAnnotationTextArea]=\"\n file?.incorrect && documentReviewInputVisible\n \"\n [isFeedback]=\"reviewMode === 'FEEDBACK_MODE'\"\n [feedbackText]=\"feedbackText\"\n (annotationBtnClickEvent)=\"getAnnotationReviewEvent($event)\"\n ></app-applicant-review-feedback>\n </div> \n </ng-container> -->\n </div>\n </ng-container>\n\n <!-- No Review Actions -->\n <ng-container\n *ngIf=\"\n !isFileDelete &&\n (!reviewFileConfig.isReview ||\n (reviewFileConfig.isReview &&\n reviewFileConfig.reviewMode === 'FEEDBACK_MODE'))\n \"\n >\n <div class=\"ta-upload-file-header d-flex justify-content-between\">\n <!-- Left Side -->\n <ng-container *ngIf=\"config.customClassName === 'company-documents'\">\n <div class=\"rightside_bar\"></div>\n </ng-container>\n <ng-container *ngIf=\"config.customClassName !== 'company-documents'\">\n <div\n class=\"ta-upload-file-action-leftside d-flex justify-content-center align-items-center\"\n tabindex=\"0\"\n [ngClass]=\"{\n 'no-action-tag': !config.hasTagsDropdown,\n active: t2?.isOpen(),\n }\"\n #t2=\"ngbPopover\"\n [ngbPopover]=\"tagsPopover\"\n [popoverClass]=\"'tags_popover'\"\n [placement]=\"'right-top right-bottom'\"\n autoclose=\"outside\"\n [container]=\"'body'\"\n triggers=\"'manual'\"\n >\n <div\n ngbTooltip\n mainTooltip=\"Tag\"\n tooltipBackground=\"#2F2F2F\"\n position=\"top\"\n class=\"ta-upload-action-tag d-flex justify-content-center align-items-center\"\n (click)=\"onAction(action.TAG)\"\n >\n <svg-icon [src]=\"icons.tag\"></svg-icon>\n </div>\n </div>\n </ng-container>\n <!-- Right Side -->\n\n <ng-container *ngIf=\"!reviewFileConfig.isActionsHidden\">\n <div\n class=\"ta-upload-file-action-rightside d-flex justify-content-around align-items-center\"\n [ngClass]=\"{\n 'feedback-mode':\n reviewFileConfig.isReview &&\n reviewFileConfig.reviewMode === 'FEEDBACK_MODE',\n small:\n config.type === 'details' ||\n config.type === 'todo' ||\n reviewFileConfig.reviewMode == 'REVIEW_MODE',\n 'vertical-mode': config.customClassName == 'company-documents',\n }\"\n >\n <ng-container *ngIf=\"config.customClassName == 'company-documents'\">\n <div\n #t2=\"ngbPopover\"\n [ngbPopover]=\"tagsPopover\"\n [popoverClass]=\"'tags_popover_vertical'\"\n [placement]=\"'bottom-left'\"\n autoclose=\"outside\"\n [container]=\"'body'\"\n triggers=\"'manual'\"\n ngbTooltip\n mainTooltip=\"Tag\"\n tooltipBackground=\"#2F2F2F\"\n position=\"top\"\n class=\"ta-upload-action-tag d-flex justify-content-center align-items-center\"\n [ngClass]=\"{ active: t2?.isOpen() }\"\n (click)=\"onAction(action.TAG)\"\n >\n <svg-icon [src]=\"icons.tag\"></svg-icon>\n </div>\n </ng-container>\n <div\n ngbTooltip\n mainTooltip=\"Download\"\n tooltipBackground=\"#2F2F2F\"\n position=\"top\"\n class=\"ta-upload-action-download\"\n (click)=\"onAction(action.DOWNLOAD)\"\n >\n <svg-icon [src]=\"icons.download\"></svg-icon>\n </div>\n <ng-container\n *ngIf=\"\n config.type != 'details' &&\n config.type != 'todo' &&\n reviewFileConfig.reviewMode != 'REVIEW_MODE'\n \"\n >\n <ng-container *ngIf=\"config.file?.fileName\">\n <div\n ngbTooltip\n mainTooltip=\"Delete\"\n tooltipBackground=\"#EF5350\"\n position=\"top\"\n class=\"ta-upload-action-delete\"\n (click)=\"\n config.file.fileName\n ? openDeletePopup(config.file.fileName)\n : null\n \"\n >\n <svg-icon [src]=\"icons.trash\"></svg-icon>\n </div>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"\n reviewFileConfig.isReview &&\n reviewFileConfig.reviewMode === 'FEEDBACK_MODE'\n \"\n >\n <div\n ngbTooltip\n mainTooltip=\"Marked Incorrect\"\n tooltipBackground=\"#EF5350\"\n position=\"top\"\n class=\"ta-upload-action-feedback-incorrect-mark d-flex justify-content-center align-items-center\"\n (click)=\"onAction(action.MARK_INCORRECT)\"\n >\n <svg-icon [src]=\"icons.close\"></svg-icon>\n </div>\n </ng-container>\n </div>\n </ng-container>\n\n <!-- File Content -->\n <div class=\"ta-upload-file-content {{ config.customClassName }}\">\n <!-- Pdf Content -->\n <ng-container\n *ngIf=\"\n (config.file?.extension?.toLowerCase() === 'pdf' ||\n fileExtension === 'pdf') &&\n config.file?.url\n \"\n >\n <pdf-viewer\n [src]=\"config.file.url\"\n [(page)]=\"config.activePage\"\n style=\"display: block; height: 100%; width: 100%\"\n [rotation]=\"0\"\n [original-size]=\"false\"\n [show-all]=\"true\"\n [fit-to-page]=\"false\"\n [zoom]=\"1\"\n [zoom-scale]=\"'page-width'\"\n [stick-to-page]=\"false\"\n [render-text]=\"true\"\n [external-link-target]=\"'blank'\"\n [autoresize]=\"true\"\n [show-borders]=\"false\"\n (after-load-complete)=\"afterLoadComplete($event)\"\n (page-rendered)=\"pageRendered($event)\"\n ></pdf-viewer>\n </ng-container>\n\n <!-- Image Content -->\n <div\n class=\"image_main_holder d-flex justify-content-center align-items-center {{\n config.customClassName\n }}\"\n >\n <ng-container\n *ngIf=\"\n config.file?.extension?.toLowerCase() !== 'pdf' &&\n fileExtension !== 'pdf' &&\n config.file?.url\n \"\n >\n <img\n class=\"ta-upload-file-image\"\n [ngClass]=\"{\n details_image: config.type === 'details' || config.type === 'todo',\n }\"\n [src]=\"config.file.url\"\n [alt]=\"config.file?.fileName\"\n />\n </ng-container>\n <ng-container *ngIf=\"documentLoading\">\n <div class=\"spinner\">\n <app-ca-spinner\n [size]=\"'small'\"\n [color]=\"'blueDark'\"\n ></app-ca-spinner>\n </div>\n </ng-container>\n </div>\n\n <!-- Tag Content -->\n <ng-container\n *ngIf=\"\n (config.hasTagsDropdown ||\n config.customClassName === 'table-details' ||\n config.customClassName === 'driver-card-pdf') &&\n config.file?.tags &&\n config.file?.tags !== '' &&\n config.file?.tags !== 'No Tag'\n \"\n >\n <div\n class=\"ta-upload-file-tag\"\n [ngClass]=\"{\n default: !config.file?.tagGeneratedByUser,\n tagRemoving: config.file?.tags.length === 0,\n }\"\n >\n <span>{{\n config.file?.tags || reviewFileConfig.categoryTag || ''\n }}</span>\n </div>\n </ng-container>\n </div>\n\n <!-- File Delete Template -->\n <ng-container *ngIf=\"isFileDelete\">\n <div\n class=\"ta-upload-file-delete-template d-flex align-items-center flex-column {{\n config.customClassName\n }}\"\n >\n <div class=\"ta-upload-file-delete-text\">\n Are you sure you want to delete file?\n </div>\n <div\n class=\"ta-upload-file-btn d-flex align-items-center justify-content-center ta-upload-file-btn-delete\"\n (click)=\"onAction(action.DELETE)\"\n >\n DELETE\n </div>\n <div\n class=\"ta-upload-file-btn d-flex align-items-center justify-content-center ta-upload-file-btn-cancel\"\n (click)=\"onAction(action.CANCEL)\"\n >\n CANCEL\n </div>\n </div>\n </ng-container>\n\n <!-- File Footer Information -->\n <ng-container *ngIf=\"!reviewFileConfig.isFooterHidden\">\n <div\n class=\"ta-upload-file-footer\"\n [ngClass]=\"{ 'edit-mode': editFile }\"\n (click)=\"onEditFile()\"\n >\n <!-- No edit mode -->\n <ng-container *ngIf=\"!isFileDelete\">\n <div class=\"footer_info d-flex align-items-center\">\n <div\n class=\"ta-upload-file-ext ta-upload-file-ext-{{\n config.file?.extension ? (config.file?.extension | lowercase) : ''\n }}\"\n [ngClass]=\"{ 'no-tag': !config.file?.tags }\"\n >\n <div>\n {{ config.file?.extension | uppercase }}\n </div>\n </div>\n <div class=\"document_info_hold d-flex\">\n <ng-container *ngIf=\"numberOfFilePages\">\n <div class=\"pdf_page_size\">\n {{ numberOfFilePages }}\n </div>\n </ng-container>\n\n <div\n class=\"file_size\"\n [ngClass]=\"{\n has_pages: numberOfFilePages,\n }\"\n >\n {{ config.file?.size || 0 | byteConvert }}\n </div>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!editFile; else editMode\">\n <p\n class=\"ta-upload-file-name\"\n [ngClass]=\"{\n details_title: config.type === 'details',\n todo_title: config.type === 'todo',\n }\"\n >\n {{ fileName }}\n </p>\n </ng-container>\n\n <ng-template #editMode>\n <app-ca-input\n [formControl]=\"fileNewName\"\n [inputConfig]=\"{\n name: 'File Name',\n type: 'text',\n placeholder: 'Type File Name',\n blackInput: true,\n isDisabled: false,\n }\"\n (blurInput)=\"onBlurInput($event)\"\n ></app-ca-input>\n </ng-template>\n </div>\n </ng-container>\n</div>\n\n<ng-template #tagsPopover let-data=\"data\">\n <div class=\"tags_main_holder\">\n <ng-container *ngIf=\"config.file?.tags?.length\">\n <div class=\"remove_tag_holder\" (click)=\"removeTag()\">\n <div class=\"remove_tag\">Remove Tag</div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"config.file?.tags?.length\">\n <div class=\"remove_tag_border_holder\">\n <div class=\"remove_tag_border\"></div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"config.tagsOptions && config.tagsOptions.length\">\n <ng-container\n *ngFor=\"let tag of config.tagsOptions; trackBy: identity; index as i\"\n >\n <div\n class=\"tags_inner_holder d-flex align-items-center\"\n [ngClass]=\"{\n firstRow: i === 0,\n lastRow: i === config.tagsOptions.length - 1,\n }\"\n (click)=\"selectTag(tag?.tagName)\"\n >\n <div class=\"tag_options_holder d-flex align-items-center\">\n <div class=\"tag_name\" [ngClass]=\"{ checked: tag.checked }\">\n {{ tag.tagName }}\n </div>\n <div class=\"checked_icon\" [ngClass]=\"{ shown: tag.checked }\">\n <svg-icon [src]=\"icons.confirm\"></svg-icon>\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</ng-template>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\";@import\"https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css\";.ca-font-thin{font-weight:100!important}.ca-font-extra-light{font-weight:200!important}.ca-font-light{font-weight:300!important}.ca-font-regular{font-weight:400!important}.ca-font-medium,.ta-upload-file-container.driver-details-pdf .ta-upload-file-footer .footer_info .document_info_hold .file_size,.ta-upload-file-container.driver-card-pdf .ta-upload-file-footer .footer_info .document_info_hold .file_size,.ta-upload-file-container.landscape-details-view .ta-upload-file-footer .footer_info .document_info_hold .file_size,.ta-upload-file-container.todo-details .ta-upload-file-footer .footer_info .document_info_hold .file_size,.ta-upload-file-container.company-details-pdf .ta-upload-file-footer .footer_info .document_info_hold .file_size,.ta-upload-file-container.modals .ta-upload-file-footer .footer_info .document_info_hold .file_size,.ta-upload-file-container.table-details .ta-upload-file-footer .footer_info .document_info_hold .file_size,.ta-upload-file-container.company-documents .ta-upload-file-footer .footer_info .document_info_hold .file_size,.ta-upload-file-container .ta-upload-file-footer .document_info_hold .file_size,.ta-upload-file-container .ta-upload-file-delete-template .ta-upload-file-delete-text{font-weight:500!important}.ca-font-semi-bold,.ta-upload-file-container .ta-upload-file-content .ta-upload-file-number-of-pages{font-weight:600!important}.ca-font-bold,.tags_main_holder .tags_inner_holder .tag_options_holder .tag_name.checked,.tags_main_holder .remove_tag_holder .remove_tag,.ta-upload-file-container.driver-details-pdf .ta-upload-file-footer .footer_info .document_info_hold,.ta-upload-file-container.driver-card-pdf .ta-upload-file-footer .footer_info .document_info_hold,.ta-upload-file-container.landscape-details-view .ta-upload-file-footer .footer_info .document_info_hold,.ta-upload-file-container.todo-details .ta-upload-file-footer .footer_info .document_info_hold,.ta-upload-file-container.company-details-pdf .ta-upload-file-footer .footer_info .document_info_hold,.ta-upload-file-container.modals .ta-upload-file-footer .footer_info .document_info_hold,.ta-upload-file-container.table-details .ta-upload-file-footer .footer_info .document_info_hold,.ta-upload-file-container.company-documents .ta-upload-file-footer .footer_info .document_info_hold,.ta-upload-file-container .ta-upload-file-footer .document_info_hold,.ta-upload-file-container .ta-upload-file-delete-template .ta-upload-file-btn,.ta-upload-file-container .ta-upload-file-content .ta-upload-file-tag{font-weight:700!important}.ca-font-extra-bold{font-weight:800!important}.ca-font-black,.ta-upload-file-container .ta-upload-file-footer .footer_info .ta-upload-file-ext{font-weight:900!important}.pickup-delivery-popover{top:-38px!important;max-width:340px!important}.pickup-delivery-popover.bs-popover-top{top:auto!important;bottom:-38px!important}.pickup-delivery-popover.bs-popover-top .load-component .assigned-load-holder{order:3;margin-top:4px;margin-bottom:0!important}.pickup-delivery-popover.bs-popover-top .load-component .statusBar{order:2;margin-top:4px}.pickup-delivery-popover.bs-popover-top .load-component .animation-three-tabs{order:1}.gps_dropdown_popover{top:-38px;max-width:494px}.gps_dropdown_popover .popover-body{padding:0}.table-progress-popover{background-color:unset!important;margin-left:-10px}.table-progress-popover .progress-dropdown{margin-top:-6px;width:260px;height:200px;background:#2f2f2f;border-radius:3px;padding:8px;box-shadow:0 0 4px #00000026;overflow:hidden;-webkit-animation:progressAnimation .25s ease-in-out;animation:progressAnimation .25s ease-in-out}.table-progress-popover .progress-dropdown .progress-header .progress-title{font-size:18px;font-weight:600;color:#dadada}.table-progress-popover .progress-dropdown .progress-header .progress-title span{font-weight:400}.table-progress-popover .progress-dropdown .progress-header .progress-total{font-size:14px;line-height:17px;color:#dadada}.table-progress-popover .progress-dropdown .table-progress-bar-container{width:100%;height:8px;margin-top:6px;border-radius:2px;overflow:hidden}.table-progress-popover .progress-dropdown .table-progress-bar-container .table-progress-bar{height:100%}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-dual-info-container .progress-info-container{width:50%}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container{margin-top:10px}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container .progress-info-title{margin-bottom:2px;font-size:11px;font-weight:700;line-height:14px;color:#ffffffb2}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container .progress-info-text{font-size:14px;line-height:18px;color:#dadada}.table-progress-popover .progress-dropdown.credit-dropdown{height:100px}@-webkit-keyframes progressAnimation{0%{height:0px}to{height:220px}}@keyframes progressAnimation{0%{height:0px}to{height:220px}}ngb-popover-window{padding:unset!important;border:unset!important}ngb-popover-window .popover-arrow{display:none!important}ngb-popover-window .popover-body{padding:unset!important}.dispatch-note .popover-body{position:relative;top:-4px;left:-4px}.tooltip{font-size:12px;position:relative}.tooltip.show{opacity:.83}.tooltip.fade:after,.tooltip.fade:before{transform:translateY(-10px);transition:all .15s ease-in-out}.tooltip.fade:hover:after,.tooltip.fade:hover:before{opacity:1;transform:translate(0)}.tooltip-inner{padding:4px 10px;white-space:nowrap;max-width:none;border-radius:3px}.tooltip-inner:empty{padding:0}.placeholder-delete .tooltip-inner{background-color:#f66}.placeholder-delete .arrow:before{border-top-color:#f66}.custom-popup-owners-for-flag .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(126%) translate(-50%)!important;width:130px;border-radius:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-for-flag .arrow{bottom:-18%;transform:rotate(180deg);left:calc(50% + 2.7rem)}.custom-popup-owners-for-flag .tooltip{opacity:.93!important;width:0}.custom-popup-owners{z-index:999}.custom-popup-owners .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(132%);z-index:999;box-shadow:0 0 3px #0003}.custom-popup-owners .arrow{bottom:-20%;transform:rotate(180deg)}.custom-popup-owners .tooltip{transform:translateY(-61px)!important}.custom-popup-owners-year{z-index:999}.custom-popup-owners-year .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(132%);z-index:999;box-shadow:0 0 3px #0003}.custom-popup-owners-year .arrow{bottom:-20%;transform:rotate(180deg)}.custom-popup-owners-year .tooltip{transform:translate(70px,-61px)!important}.custom-popup-owners-info .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(-100%) translate(-10%);width:200px;height:36px;display:flex;justify-content:center;align-items:center;border-radius:3px;margin-top:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-info .tooltip{opacity:.93;width:0}.custom-popup-owners-info .arrow{display:none}.custom-popup-owners-info #phone-inside{position:relative;right:26px;bottom:0}.custom-popup-owners-info-at .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(-108%) translate(-7%);width:270px;height:36px;display:flex;justify-content:center;align-items:center;border-radius:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-info-at .tooltip{opacity:1;width:0}.custom-popup-owners-info-at .arrow{display:none}.custom-popup-owners-for-tag .tooltip-inner{color:#3b3b3b;background-color:#fff;width:100px;border-radius:3px;box-shadow:0 0 3px #0003!important}.custom-popup-owners-for-tag .tooltip{top:5px!important}.custom-popup-owners-for-tag .arrow{bottom:-24%}.align-items-flex-start{justify-content:center;align-items:center}.align-items-flex-end{display:flex;justify-content:center;flex-direction:column;align-self:flex-end;align-items:flex-start}.label-add{align-self:flex-start}.fadeInLoad{animation:fadeInLoad .25s}@keyframes fadeInLoad{0%{opacity:0}to{opacity:1}}.fadeIn{opacity:1;-webkit-transition:.25s;-moz-transition:.25s;-o-transition:.25s;transition:.25s}.thisText:hover .fadeIn{opacity:0}.fadeInLoad{animation-name:example;animation-duration:.25s}@keyframes example{0%{transform:scale(.5)}to{transform:scale(1)}}.tooltip.tooltip-table-icons{left:12px!important;opacity:1}.tooltip.tooltip-table-icons .arrow{display:none!important}.tooltip.tooltip-table-icons .tooltip-inner{border-radius:0 50px 50px;background:#28529f}.tooltip.show{opacity:1;animation:fadeIn ease .5s!important;-webkit-animation:fadeIn ease .5s!important;-moz-animation:fadeIn ease .5s!important;-o-animation:fadeIn ease .5s!important;-ms-animation:fadeIn ease .5s!important}.ta-tooltip{position:absolute;font-size:12px;text-align:center;color:#fff;line-height:22px;z-index:999999!important;opacity:0;white-space:nowrap;transform:scale(.7)}.ta-tooltip.ta-tooltip-show{opacity:.85;transform:scale(1);padding:0 12px}.ta-tooltip.ta-tooltip-bottom-right,.ta-tooltip.ta-tooltip-bottom-right-corner{transform-origin:top left;border-radius:0 15px 15px}.ta-tooltip.ta-tooltip-bottom-left{transform-origin:top right;border-radius:15px 0 15px 15px}@keyframes scaleItem{0%{transform:scale(.4)}to{transform:scale(1)}}.app-ca-main-tooltip{pointer-events:none}.app-ca-main-tooltip .tooltip-inner{padding:0;background-color:transparent;pointer-events:none}.app-ca-main-tooltip .tooltip-inner .tooltip-holder{display:flex;font-size:11px;font-weight:700;border-radius:2px;padding:2px 8px;animation:scaleItem .3s;white-space:normal}.app-ca-main-tooltip .tooltip-inner .tooltip-holder:empty{padding:0}.tooltip-arrow{display:none!important}.trucks.semitruck svg path,.trucks.semisleeper svg path,.trucks.flatbed svg path,.trucks.stepdeck svg path,.trucks.lowboyrgn svg path,.trucks.chassis svg path,.trucks.conestoga svg path,.trucks.sidekit svg path,.trucks.container svg path,.trailers.semitruck svg path,.trailers.semisleeper svg path,.trailers.flatbed svg path,.trailers.stepdeck svg path,.trailers.lowboyrgn svg path,.trailers.chassis svg path,.trailers.conestoga svg path,.trailers.sidekit svg path,.trailers.container svg path{fill:#92b1f5}.trucks.boxtruck svg path,.trucks.reefertruck svg path,.trucks.cargovan svg path,.trucks.dryvan svg path,.trucks.reefer svg path,.trailers.boxtruck svg path,.trailers.reefertruck svg path,.trailers.cargovan svg path,.trailers.dryvan svg path,.trailers.reefer svg path{fill:#fbc88b}.trucks.dumptruck svg path,.trucks.cementtruck svg path,.trucks.garbagetruck svg path,.trucks.enddump svg path,.trucks.bottomdump svg path,.trucks.hopper svg path,.trucks.tanker svg path,.trucks.pneumatictanker svg path,.trailers.dumptruck svg path,.trailers.cementtruck svg path,.trailers.garbagetruck svg path,.trailers.enddump svg path,.trailers.bottomdump svg path,.trailers.hopper svg path,.trailers.tanker svg path,.trailers.pneumatictanker svg path{fill:#ed9292}.trucks.towtruck svg path,.trucks.carhauler svg path,.trucks.spotter svg path,.trucks.carhaulerstigner svg path,.trailers.towtruck svg path,.trailers.carhauler svg path,.trailers.spotter svg path,.trailers.carhaulerstigner svg path{fill:#86c9c3}.trucks .svgtext-template-text,.trailers .svgtext-template-text{color:#fff;transition:color .3s ease-in-out}.colors .black svg #droplet{fill:#6c6c6c}.colors .brown svg #droplet{fill:#a1887f}.colors .darkgreen svg #droplet{fill:#4db6a2}.colors .lightgreen svg #droplet{fill:#81c784}.colors .darkblue svg #droplet{fill:#546fd2}.colors .lightblue svg #droplet{fill:#64b5f6}.colors .gray svg #droplet{fill:#aaa}.colors .purple svg #droplet{fill:#ba68c8}.colors .gold svg #droplet{fill:#bcad79}.colors .silver svg #droplet{fill:#dadada}.colors .red svg #droplet{fill:#f96b69}.colors .pink svg #droplet{fill:#f26ec2}.colors .white svg #droplet{fill:#f1f1f1}.colors .orange svg #droplet{fill:#ff8a65}.colors .yellow svg #droplet{fill:#ffd54f}.colors:hover{transition:all .3s ease-in-out}.colors:hover .black svg #droplet{fill:#3c3c3c}.colors:hover .brown svg #droplet{fill:#8d6e63}.colors:hover .darkgreen svg #droplet{fill:#26a690}.colors:hover .lightgreen svg #droplet{fill:#66bb6a}.colors:hover .darkblue svg #droplet{fill:#304fc1}.colors:hover .lightblue svg #droplet{fill:#42a5f5}.colors:hover .gray svg #droplet{fill:#919191}.colors:hover .purple svg #droplet{fill:#ab47bc}.colors:hover .gold svg #droplet{fill:#aa9c6e}.colors:hover .silver svg #droplet{fill:#b7b7b7}.colors:hover .red svg #droplet{fill:#ef5350}.colors:hover .pink svg #droplet{fill:#fa4daa}.colors:hover .white svg #droplet{fill:#fff}.colors:hover .orange svg #droplet{fill:#ff7043}.colors:hover .yellow svg #droplet{fill:#ffca28}.text-color-black{color:#424242!important}.text-color-black::-moz-selection{background:#42424233!important;color:#424242!important}.text-color-black::selection{background:#42424233!important;color:#424242!important}.text-color-black-2{color:#2f2f2f!important}.text-color-black-2::-moz-selection{background:#2f2f2f33!important;color:#2f2f2f!important}.text-color-black-2::selection{background:#2f2f2f33!important;color:#2f2f2f!important}.text-color-muted{color:#919191!important}.text-color-muted::-moz-selection{background:#91919133!important;color:#919191!important}.text-color-muted::selection{background:#91919133!important;color:#919191!important}.text-color-green{color:#56b4ac!important}.text-color-green::-moz-selection{background:#56b4ac33!important;color:#56b4ac!important}.text-color-green::selection{background:#56b4ac33!important;color:#56b4ac!important}.text-color-blue-13{color:#6692f1!important}.text-color-blue-13::-moz-selection{background:#66921833!important;color:#6692f1!important}.text-color-blue-13::selection{background:#66921833!important;color:#6692f1!important}.text-color-blue-18{color:#3b73ed!important}.text-color-blue-18::-moz-selection{background:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-18::selection{background:#3b73ed33!important;color:#3b73ed!important}.text-color-red-10{color:#e66767!important}.text-color-red-10::-moz-selection{background:#e6676733!important;color:#e66767!important}.text-color-red-10::selection{background:#e6676733!important;color:#e66767!important}.text-color-light-grey{color:#e5e5e5!important}.text-color-light-grey::-moz-selection{background:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey::selection{background:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey-2{color:#aaa!important}.text-color-light-grey-2::-moz-selection{background:#aaa3!important;color:#aaa!important}.text-color-light-grey-2::selection{background:#aaa3!important;color:#aaa!important}.text-color-light-grey-6{color:#ccc!important}.text-color-light-grey-6::-moz-selection{color:#ccc!important;background:#aaa3!important}.text-color-light-grey-6::selection{color:#ccc!important;background:#aaa3!important}.text-color-white{color:#dadada!important}.text-color-white::-moz-selection{color:#dadada!important;background:#fff3!important}.text-color-white::selection{color:#dadada!important;background:#fff3!important}.text-color-white-4{color:#ffffffb2!important}.text-color-white-4::-moz-selection{color:#ffffffb2!important;background:#fff3!important}.text-color-white-4::selection{color:#ffffffb2!important;background:#fff3!important}.text-color-dark-grey{color:#6c6c6c!important}.text-color-dark-grey::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-dark-grey::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw6-2{color:#6c6c6c!important}.text-color-bw6-2::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw6-2::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw-9{color:#dadada!important}.text-color-bw-9::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw-9::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-grey{color:#919191!important}.text-color-grey::-moz-selection{color:#919191!important;background:#91919133!important}.text-color-grey::selection{color:#919191!important;background:#91919133!important}.text-color-grey .address-text::-moz-selection,.text-color-grey .marker-bold-text::-moz-selection{color:#919191!important;background:#91919133!important}.text-color-grey .address-text::selection,.text-color-grey .marker-bold-text::selection{color:#919191!important;background:#91919133!important}.text-size-11{font-size:11px!important;line-height:14px!important}.text-size-14{font-size:14px!important;line-height:18px!important}.text-size-16{font-size:16px!important;line-height:19px!important}.text-size-18{font-size:18px!important;line-height:22px!important}.text-size-26{font-size:26px!important;line-height:32px!important}.text-size-28{font-size:28px!important;line-height:34px!important}@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.svg-fill-black svg path{fill:#424242!important}.svg-fill-muted svg path{fill:#919191!important}.svg-fill-bw-9 svg path{fill:#dadada!important}.svg-fill-light-grey-2 svg path{fill:#aaa!important}.svg-fill-light-grey-6 svg path{fill:#ccc!important}.svg-fill-blue-13 svg path{fill:#6692f1!important}.svg-fill-blue-19 svg path{fill:#92b1f5!important}.svg-fill-blue-26 svg path{fill:#4dc5eb!important}.svg-hover-muted svg path{transition:all .3s ease-in-out}.svg-hover-muted:hover svg path{fill:#919191!important}.svg-hover-black svg path{transition:all .3s ease-in-out}.svg-hover-black:hover svg path{fill:#424242!important}.svg-hover-blue-15 svg path{transition:all .3s ease-in-out}.svg-hover-blue-15:hover svg path{fill:#0b49d1!important}.svg-hover-bw6-2 svg path{transition:all .3s ease-in-out}.svg-hover-bw6-2:hover svg path{fill:#6c6c6c!important}.svg-hover-trash-red svg path{transition:all .3s ease-in-out}.svg-hover-trash-red:hover svg path{fill:#ff5050!important}.svg-hover-red-14 svg path{transition:all .3s ease-in-out}.svg-hover-red-14:hover svg path{fill:#c20c0c!important}.svg-size-12 svg{width:12px;height:12px}.svg-size-14 svg{width:14px;height:14px}.svg-size-16 svg{width:16px;height:16px}.svg-size-18 svg{width:18px;height:18px}.svg-size-44-16 svg{width:44px;height:16px}*{margin:0;font-family:Montserrat,sans-serif}html{scroll-behavior:auto!important}.gm-style-iw-chr,.gm-style-iw-tc{display:none}.gm-style .gm-style-iw-c{border-radius:0}.gm-style-iw{overflow-y:auto!important;overflow-x:hidden!important}.gm-style-iw>div{overflow:visible!important}.infoWindow{overflow:hidden!important}.gm-style-iw-d,.gm-style-iw.gm-style-iw-c{max-height:350px!important}::ng-deep .popover{--bs-popover-border-width: 0;--bs-popover-body-padding-y: 0;--bs-popover-body-padding-x: 0}::ng-deep .popover .popover-arrow{display:none}.ta-upload-file-container{width:148px;height:178px;border-radius:2px;grid-template-rows:160px 1fr;position:relative;transition:transform .3s ease-in-out;overflow:hidden}.ta-upload-file-container.modal{background-color:#f3f3f3}.ta-upload-file-container:hover,.ta-upload-file-container.keep_open{transition:transform .3s ease-in-out;background-color:#f3f3f3}.ta-upload-file-container:hover .ta-upload-file-header-review .ta-upload-action-download-review,.ta-upload-file-container:hover .ta-upload-file-header-review .ta-upload-file-action-leftside .ta-upload-action-mark-incorrect,.ta-upload-file-container:hover .ta-upload-file-header-review .ta-upload-action-mark-correct,.ta-upload-file-container.keep_open .ta-upload-file-header-review .ta-upload-action-download-review,.ta-upload-file-container.keep_open .ta-upload-file-header-review .ta-upload-file-action-leftside .ta-upload-action-mark-incorrect,.ta-upload-file-container.keep_open .ta-upload-file-header-review .ta-upload-action-mark-correct{opacity:1!important;pointer-events:all!important}.ta-upload-file-container.applicant_review{overflow:visible}.ta-upload-file-container.applicant_review .ta-upload-file-header-review .ta-upload-action-mark-incorrect{opacity:1!important;pointer-events:all!important}.ta-upload-file-container.annotation_hover .ta-upload-file-header-review .ta-upload-action-download-review{opacity:0!important;pointer-events:none!important}.ta-upload-file-container.applicant_feedback{overflow:visible}.ta-upload-file-container.applicant_feedback .ta-upload-file-header .ta-upload-file-action-rightside{opacity:0;pointer-events:none}.ta-upload-file-container.applicant_feedback .ta-upload-file-header .ta-upload-action-feedback-incorrect-mark,.ta-upload-file-container.applicant_feedback:hover .ta-upload-file-header .ta-upload-file-action-leftside,.ta-upload-file-container.applicant_feedback:hover .ta-upload-file-header .ta-upload-file-action-rightside{opacity:1!important;pointer-events:all!important}.ta-upload-file-container .ta-upload-file-header-review{position:absolute;top:4px;right:4px;width:140px;height:30px;z-index:10;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ta-upload-file-container .ta-upload-file-header-review .ta-upload-action-download-review,.ta-upload-file-container .ta-upload-file-header-review .ta-upload-action-mark-incorrect,.ta-upload-file-container .ta-upload-file-header-review .ta-upload-action-mark-correct{width:30px;height:30px;line-height:15px;background-color:#6c6c6ce6;border-radius:1px;position:absolute;right:0;transition:transform .3s ease-in-out;cursor:pointer;opacity:0;pointer-events:none}.ta-upload-file-container .ta-upload-file-header-review .ta-upload-action-download-review svg,.ta-upload-file-container .ta-upload-file-header-review .ta-upload-action-mark-incorrect svg,.ta-upload-file-container .ta-upload-file-header-review .ta-upload-action-mark-correct svg{height:18px;width:18px}.ta-upload-file-container .ta-upload-file-header-review .ta-upload-action-download-review svg path,.ta-upload-file-container .ta-upload-file-header-review .ta-upload-action-mark-incorrect svg path,.ta-upload-file-container .ta-upload-file-header-review .ta-upload-action-mark-correct svg path{fill:#dadada}.ta-upload-file-container .ta-upload-file-header-review .ta-upload-action-download-review:hover,.ta-upload-file-container .ta-upload-file-header-review .ta-upload-action-mark-incorrect:hover,.ta-upload-file-container .ta-upload-file-header-review .ta-upload-action-mark-correct:hover{background-color:#6c6c6c}.ta-upload-file-container .ta-upload-file-header-review .ta-upload-action-download-review:hover svg path,.ta-upload-file-container .ta-upload-file-header-review .ta-upload-action-mark-incorrect:hover svg path,.ta-upload-file-container .ta-upload-file-header-review .ta-upload-action-mark-correct:hover svg path{fill:#fff}.ta-upload-file-container .ta-upload-file-header-review .ta-upload-action-mark-incorrect{right:4px}.ta-upload-file-container .ta-upload-file-header-review .ta-upload-action-mark-incorrect svg{height:24px;width:24px}.ta-upload-file-container .ta-upload-file-header-review .ta-upload-action-mark-incorrect svg rect{fill:transparent!important}.ta-upload-file-container .ta-upload-file-header-review .ta-upload-action-mark-incorrect.incorrect{background-color:#ef5350}.ta-upload-file-container .ta-upload-file-header-review .ta-upload-action-mark-incorrect.incorrect svg path{fill:#fff}.ta-upload-file-container .ta-upload-file-header-review .ta-upload-action-mark-correct{right:4px}.ta-upload-file-container .ta-upload-file-header-review .review-feedback-container{position:absolute;left:170px;top:8px}.ta-upload-file-container .ta-upload-file-header{position:absolute;top:4px;right:4px;width:100%;height:30px;z-index:10;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-leftside{opacity:0;width:30px;margin-left:8px;height:30px;border-radius:1px;background-color:#6c6c6ce6;text-align:center;padding:6px;cursor:pointer;transition:transform .1s ease-in-out}.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-leftside:focus{transition:transform .1s ease-in-out;opacity:1!important}.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-leftside .ta-upload-action-tag{width:100%;height:100%}.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-leftside .ta-upload-action-tag svg{display:flex;height:18px;width:18px}.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-leftside .ta-upload-action-tag svg path{fill:#dadada}.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-leftside .ta-upload-action-tag:hover{transition:transform .1s ease-in-out}.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-leftside .ta-upload-action-tag:hover svg path{fill:#fff}.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-leftside.active{transition:transform .1s ease-in-out;background-color:#424242}.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-leftside.active .ta-upload-action-tag svg path{fill:#fff}.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-leftside.no-action-tag{opacity:0;visibility:none;pointer-events:none!important}.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-rightside{padding:6px;gap:12px;width:60px;height:30px;text-align:center;border-radius:1px;background-color:#6c6c6ce6;cursor:pointer}.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-rightside.vertical-mode{display:block;width:30px;height:90px}.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-rightside .ta-upload-action-download,.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-rightside .ta-upload-action-delete,.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-rightside .ta-upload-action-tag{display:flex;align-items:center;justify-content:center;width:100%;height:30px;line-height:15px}.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-rightside .ta-upload-action-download svg,.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-rightside .ta-upload-action-delete svg,.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-rightside .ta-upload-action-tag svg{height:18px;width:18px}.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-rightside .ta-upload-action-download svg path,.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-rightside .ta-upload-action-delete svg path,.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-rightside .ta-upload-action-tag svg path{fill:#dadada}.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-rightside .ta-upload-action-download:hover,.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-rightside .ta-upload-action-delete:hover,.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-rightside .ta-upload-action-tag:hover{transition:transform .3s ease-in-out}.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-rightside .ta-upload-action-download:hover svg path,.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-rightside .ta-upload-action-delete:hover svg path,.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-rightside .ta-upload-action-tag:hover svg path{fill:#fff}.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-rightside .ta-upload-action-download.active,.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-rightside .ta-upload-action-delete.active,.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-rightside .ta-upload-action-tag.active{transition:transform .1s ease-in-out;background-color:#424242}.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-rightside .ta-upload-action-download.active svg path,.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-rightside .ta-upload-action-delete.active svg path,.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-rightside .ta-upload-action-tag.active svg path{fill:#fff}.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-rightside .ta-upload-action-download.no-action-tag,.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-rightside .ta-upload-action-delete.no-action-tag,.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-rightside .ta-upload-action-tag.no-action-tag{opacity:0;height:0;padding:0;pointer-events:none!important}.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-rightside.feedback-mode{position:relative;left:15px}.ta-upload-file-container .ta-upload-file-header .ta-upload-file-action-rightside.small{width:30px;height:30px}.ta-upload-file-container .ta-upload-file-header .ta-upload-action-feedback-incorrect-mark{width:30px;height:30px;border-radius:2px;background-color:#ef5350e6;cursor:pointer;transition:transform .3s ease-in-out;opacity:0;pointer-events:none}.ta-upload-file-container .ta-upload-file-header .ta-upload-action-feedback-incorrect-mark svg-icon{width:18px;height:24px}.ta-upload-file-container .ta-upload-file-header .ta-upload-action-feedback-incorrect-mark:hover{background-color:#ef5350}.ta-upload-file-container .ta-upload-file-content{overflow:hidden;width:140px;height:140px;margin:4px;position:relative}.ta-upload-file-container .ta-upload-file-content .ng2-pdf-viewer-container{display:flex;align-items:center;justify-content:center;background-color:transparent!important;width:160px!important;height:160px!important;border-radius:1px!important;top:4px!important;-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important;z-index:2}.ta-upload-file-container .ta-upload-file-content .ng2-pdf-viewer-container .canvasWrapper{box-shadow:0 0 4px #00000026}.ta-upload-file-container .ta-upload-file-content .ng2-pdf-viewer-container .textLayer span,.ta-upload-file-container .ta-upload-file-content .ng2-pdf-viewer-container .textLayer input,.ta-upload-file-container .ta-upload-file-content .ng2-pdf-viewer-container .textLayer textarea,.ta-upload-file-container .ta-upload-file-content .ng2-pdf-viewer-container .annotationLayer section,.ta-upload-file-container .ta-upload-file-content .ng2-pdf-viewer-container .annotationLayer section input,.ta-upload-file-container .ta-upload-file-content .ng2-pdf-viewer-container .annotationLayer section textarea{background-image:none!important;pointer-events:none!important;-webkit-user-select:none!important;user-select:none!important;cursor:default!important}.ta-upload-file-container .ta-upload-file-content .ng2-pdf-viewer-container .canvasWrapper,.ta-upload-file-container .ta-upload-file-content .ng2-pdf-viewer-container .pdfViewer,.ta-upload-file-container .ta-upload-file-content .ng2-pdf-viewer-container .pdfViewer .page,.ta-upload-file-container .ta-upload-file-content .ng2-pdf-viewer-container canvas{width:160px!important;max-height:160px!important;margin:0!important;border-radius:1px!important}.ta-upload-file-container .ta-upload-file-content .ng2-pdf-viewer-container .canvasWrapper:not(:first-child),.ta-upload-file-container .ta-upload-file-content .ng2-pdf-viewer-container .pdfViewer:not(:first-child),.ta-upload-file-container .ta-upload-file-content .ng2-pdf-viewer-container .pdfViewer .page:not(:first-child),.ta-upload-file-container .ta-upload-file-content .ng2-pdf-viewer-container canvas:not(:first-child){opacity:0;height:0!important}.ta-upload-file-container .ta-upload-file-content .ng2-pdf-viewer-container .pdfViewer{box-shadow:0 0 4px #00000026}.ta-upload-file-container .ta-upload-file-content .image_main_holder{height:148px}.ta-upload-file-container .ta-upload-file-content .image_main_holder .spinner{position:absolute}.ta-upload-file-container .ta-upload-file-content .image_main_holder .ta-upload-file-image{max-width:160px;max-height:157px;object-fit:fill;border-radius:1px;vertical-align:middle;-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important;box-shadow:0 0 4px #00000026;z-index:2}.ta-upload-file-container .ta-upload-file-content .image_main_holder .ta-upload-file-image.details_image{left:49%;max-width:276px;max-height:276px}.ta-upload-file-container .ta-upload-file-content .image_main_holder.company-details-pdf{width:378px;height:378px}.ta-upload-file-container .ta-upload-file-content .image_main_holder.company-details-pdf .ta-upload-file-image{max-width:378px;max-height:378px}.ta-upload-file-container .ta-upload-file-content .image_main_holder.todo-details{height:186px;width:186px}.ta-upload-file-container .ta-upload-file-content .image_main_holder.table-details{margin-top:4px;width:192px;height:188px}.ta-upload-file-container .ta-upload-file-content .image_main_holder.table-details .ta-upload-file-image{max-width:192px;max-height:188px}.ta-upload-file-container .ta-upload-file-content .image_main_holder.driver-card-pdf{margin-top:4px;width:408px;height:408px}.ta-upload-file-container .ta-upload-file-content .image_main_holder.driver-card-pdf .ta-upload-file-image{max-width:408px;max-height:408px}.ta-upload-file-container .ta-upload-file-content .image_main_holder.driver-details-pdf{margin-top:4px;width:308px;height:306px}.ta-upload-file-container .ta-upload-file-content .image_main_holder.driver-details-pdf .ta-upload-file-image{max-width:308px;max-height:306px}.ta-upload-file-container .ta-upload-file-content .image_main_holder.company-documents{height:289px;width:294px;margin-top:4px}.ta-upload-file-container .ta-upload-file-content .image_main_holder.company-documents .ta-upload-file-image{max-width:294px;max-height:294px}.ta-upload-file-container .ta-upload-file-content .ta-upload-file-number-of-pages{position:absolute;bottom:-4px;left:0;height:18px;text-align:center;padding:2px 6px;border-radius:2px;background-color:#6c6c6ce6;color:#fff;font-size:11px;line-height:15px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ta-upload-file-container .ta-upload-file-content .ta-upload-file-tag{max-width:100%;height:18px;border-radius:1px;background-color:#3b73ed66;color:#fff;font-size:11px;bottom:20px;position:absolute;left:0;padding:2px 4px;opacity:1;-webkit-user-select:none!important;user-select:none!important;z-index:10;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ta-upload-file-container .ta-upload-file-content .ta-upload-file-tag.tagRemoving{opacity:0}.ta-upload-file-container .ta-upload-file-content .ta-upload-file-tag span{line-height:14px}.ta-upload-file-container .ta-upload-file-content .ta-upload-file-tag.no-tag{background-color:#919191!important}.ta-upload-file-container .ta-upload-file-content .ta-upload-file-tag:hover{transition:transform .3s ease-in-out;cursor:auto!important}.ta-upload-file-container .ta-upload-file-content.driver-details-pdf,.ta-upload-file-container .ta-upload-file-content.driver-card-pdf,.ta-upload-file-container .ta-upload-file-content.landscape-details-view,.ta-upload-file-container .ta-upload-file-content.todo-details,.ta-upload-file-container .ta-upload-file-content.company-details-pdf,.ta-upload-file-container .ta-upload-file-content.modals,.ta-upload-file-container .ta-upload-file-content.table-details,.ta-upload-file-container .ta-upload-file-content.company-documents{position:relative}.ta-upload-file-container .ta-upload-file-content.driver-details-pdf ::ng-deep .ng2-pdf-viewer-container,.ta-upload-file-container .ta-upload-file-content.driver-card-pdf ::ng-deep .ng2-pdf-viewer-container,.ta-upload-file-container .ta-upload-file-content.landscape-details-view ::ng-deep .ng2-pdf-viewer-container,.ta-upload-file-container .ta-upload-file-content.todo-details ::ng-deep .ng2-pdf-viewer-container,.ta-upload-file-container .ta-upload-file-content.company-details-pdf ::ng-deep .ng2-pdf-viewer-container,.ta-upload-file-container .ta-upload-file-content.modals ::ng-deep .ng2-pdf-viewer-container,.ta-upload-file-container .ta-upload-file-content.table-details ::ng-deep .ng2-pdf-viewer-container,.ta-upload-file-container .ta-upload-file-content.company-documents ::ng-deep .ng2-pdf-viewer-container{box-shadow:0 0 4px #00000026;overflow:hidden!important}.ta-upload-file-container .ta-upload-file-content.driver-details-pdf .ng2-pdf-viewer-container,.ta-upload-file-container .ta-upload-file-content.driver-card-pdf .ng2-pdf-viewer-container,.ta-upload-file-container .ta-upload-file-content.landscape-details-view .ng2-pdf-viewer-container,.ta-upload-file-container .ta-upload-file-content.todo-details .ng2-pdf-viewer-container,.ta-upload-file-container .ta-upload-file-content.company-details-pdf .ng2-pdf-viewer-container,.ta-upload-file-container .ta-upload-file-content.modals .ng2-pdf-viewer-container,.ta-upload-file-container .ta-upload-file-content.table-details .ng2-pdf-viewer-container,.ta-upload-file-container .ta-upload-file-content.company-documents .ng2-pdf-viewer-container{overflow:visible!important;background-color:transparent!important;border-radius:1px!important}.ta-upload-file-container .ta-upload-file-content.driver-details-pdf .ng2-pdf-viewer-container .canvasWrapper,.ta-upload-file-container .ta-upload-file-content.driver-details-pdf .ng2-pdf-viewer-container .pdfViewer,.ta-upload-file-container .ta-upload-file-content.driver-details-pdf .ng2-pdf-viewer-container .pdfViewer .page,.ta-upload-file-container .ta-upload-file-content.driver-details-pdf .ng2-pdf-viewer-container canvas,.ta-upload-file-container .ta-upload-file-content.driver-card-pdf .ng2-pdf-viewer-container .canvasWrapper,.ta-upload-file-container .ta-upload-file-content.driver-card-pdf .ng2-pdf-viewer-container .pdfViewer,.ta-upload-file-container .ta-upload-file-content.driver-card-pdf .ng2-pdf-viewer-container .pdfViewer .page,.ta-upload-file-container .ta-upload-file-content.driver-card-pdf .ng2-pdf-viewer-container canvas,.ta-upload-file-container .ta-upload-file-content.landscape-details-view .ng2-pdf-viewer-container .canvasWrapper,.ta-upload-file-container .ta-upload-file-content.landscape-details-view .ng2-pdf-viewer-container .pdfViewer,.ta-upload-file-container .ta-upload-file-content.landscape-details-view .ng2-pdf-viewer-container .pdfViewer .page,.ta-upload-file-container .ta-upload-file-content.landscape-details-view .ng2-pdf-viewer-container canvas,.ta-upload-file-container .ta-upload-file-content.todo-details .ng2-pdf-viewer-container .canvasWrapper,.ta-upload-file-container .ta-upload-file-content.todo-details .ng2-pdf-viewer-container .pdfViewer,.ta-upload-file-container .ta-upload-file-content.todo-details .ng2-pdf-viewer-container .pdfViewer .page,.ta-upload-file-container .ta-upload-file-content.todo-details .ng2-pdf-viewer-container canvas,.ta-upload-file-container .ta-upload-file-content.company-details-pdf .ng2-pdf-viewer-container .canvasWrapper,.ta-upload-file-container .ta-upload-file-content.company-details-pdf .ng2-pdf-viewer-container .pdfViewer,.ta-upload-file-container .ta-upload-file-content.company-details-pdf .ng2-pdf-viewer-container .pdfViewer .page,.ta-upload-file-container .ta-upload-file-content.company-details-pdf .ng2-pdf-viewer-container canvas,.ta-upload-file-container .ta-upload-file-content.modals .ng2-pdf-viewer-container .canvasWrapper,.ta-upload-file-container .ta-upload-file-content.modals .ng2-pdf-viewer-container .pdfViewer,.ta-upload-file-container .ta-upload-file-content.modals .ng2-pdf-viewer-container .pdfViewer .page,.ta-upload-file-container .ta-upload-file-content.modals .ng2-pdf-viewer-container canvas,.ta-upload-file-container .ta-upload-file-content.table-details .ng2-pdf-viewer-container .canvasWrapper,.ta-upload-file-container .ta-upload-file-content.table-details .ng2-pdf-viewer-container .pdfViewer,.ta-upload-file-container .ta-upload-file-content.table-details .ng2-pdf-viewer-container .pdfViewer .page,.ta-upload-file-container .ta-upload-file-content.table-details .ng2-pdf-viewer-container canvas,.ta-upload-file-container .ta-upload-file-content.company-documents .ng2-pdf-viewer-container .canvasWrapper,.ta-upload-file-container .ta-upload-file-content.company-documents .ng2-pdf-viewer-container .pdfViewer,.ta-upload-file-container .ta-upload-file-content.company-documents .ng2-pdf-viewer-container .pdfViewer .page,.ta-upload-file-container .ta-upload-file-content.company-documents .ng2-pdf-viewer-container canvas{margin:0!important;border-radius:1px!important;width:auto!important}.ta-upload-file-container .ta-upload-file-content.driver-details-pdf .ng2-pdf-viewer-container .canvasWrapper:not(:first-child),.ta-upload-file-container .ta-upload-file-content.driver-details-pdf .ng2-pdf-viewer-container .pdfViewer:not(:first-child),.ta-upload-file-container .ta-upload-file-content.driver-details-pdf .ng2-pdf-viewer-container .pdfViewer .page:not(:first-child),.ta-upload-file-container .ta-upload-file-content.driver-details-pdf .ng2-pdf-viewer-container canvas:not(:first-child),.ta-upload-file-container .ta-upload-file-content.driver-card-pdf .ng2-pdf-viewer-container .canvasWrapper:not(:first-child),.ta-upload-file-container .ta-upload-file-content.driver-card-pdf .ng2-pdf-viewer-container .pdfViewer:not(:first-child),.ta-upload-file-container .ta-upload-file-content.driver-card-pdf .ng2-pdf-viewer-container .pdfViewer .page:not(:first-child),.ta-upload-file-container .ta-upload-file-content.driver-card-pdf .ng2-pdf-viewer-container canvas:not(:first-child),.ta-upload-file-container .ta-upload-file-content.landscape-details-view .ng2-pdf-viewer-container .canvasWrapper:not(:first-child),.ta-upload-file-container .ta-upload-file-content.landscape-details-view .ng2-pdf-viewer-container .pdfViewer:not(:first-child),.ta-upload-file-container .ta-upload-file-content.landscape-details-view .ng2-pdf-viewer-container .pdfViewer .page:not(:first-child),.ta-upload-file-container .ta-upload-file-content.landscape-details-view .ng2-pdf-viewer-container canvas:not(:first-child),.ta-upload-file-container .ta-upload-file-content.todo-details .ng2-pdf-viewer-container .canvasWrapper:not(:first-child),.ta-upload-file-container .ta-upload-file-content.todo-details .ng2-pdf-viewer-container .pdfViewer:not(:first-child),.ta-upload-file-container .ta-upload-file-content.todo-details .ng2-pdf-viewer-container .pdfViewer .page:not(:first-child),.ta-upload-file-container .ta-upload-file-content.todo-details .ng2-pdf-viewer-container canvas:not(:first-child),.ta-upload-file-container .ta-upload-file-content.company-details-pdf .ng2-pdf-viewer-container .canvasWrapper:not(:first-child),.ta-upload-file-container .ta-upload-file-content.company-details-pdf .ng2-pdf-viewer-container .pdfViewer:not(:first-child),.ta-upload-file-container .ta-upload-file-content.company-details-pdf .ng2-pdf-viewer-container .pdfViewer .page:not(:first-child),.ta-upload-file-container .ta-upload-file-content.company-details-pdf .ng2-pdf-viewer-container canvas:not(:first-child),.ta-upload-file-container .ta-upload-file-content.modals .ng2-pdf-viewer-container .canvasWrapper:not(:first-child),.ta-upload-file-container .ta-upload-file-content.modals .ng2-pdf-viewer-container .pdfViewer:not(:first-child),.ta-upload-file-container .ta-upload-file-content.modals .ng2-pdf-viewer-container .pdfViewer .page:not(:first-child),.ta-upload-file-container .ta-upload-file-content.modals .ng2-pdf-viewer-container canvas:not(:first-child),.ta-upload-file-container .ta-upload-file-content.table-details .ng2-pdf-viewer-container .canvasWrapper:not(:first-child),.ta-upload-file-container .ta-upload-file-content.table-details .ng2-pdf-viewer-container .pdfViewer:not(:first-child),.ta-upload-file-container .ta-upload-file-content.table-details .ng2-pdf-viewer-container .pdfViewer .page:not(:first-child),.ta-upload-file-container .ta-upload-file-content.table-details .ng2-pdf-viewer-container canvas:not(:first-child),.ta-upload-file-container .ta-upload-file-content.company-documents .ng2-pdf-viewer-container .canvasWrapper:not(:first-child),.ta-upload-file-container .ta-upload-file-content.company-documents .ng2-pdf-viewer-container .pdfViewer:not(:first-child),.ta-upload-file-container .ta-upload-file-content.company-documents .ng2-pdf-viewer-container .pdfViewer .page:not(:first-child),.ta-upload-file-container .ta-upload-file-content.company-documents .ng2-pdf-viewer-container canvas:not(:first-child){opacity:0;height:0!important}.ta-upload-file-container .ta-upload-file-content.driver-details-pdf{width:312px;height:312px}.ta-upload-file-container .ta-upload-file-content.driver-details-pdf .ng2-pdf-viewer-container{width:304px!important;height:304px!important}.ta-upload-file-container .ta-upload-file-content.driver-details-pdf .ng2-pdf-viewer-container .canvasWrapper,.ta-upload-file-container .ta-upload-file-content.driver-details-pdf .ng2-pdf-viewer-container .pdfViewer,.ta-upload-file-container .ta-upload-file-content.driver-details-pdf .ng2-pdf-viewer-container .pdfViewer .page,.ta-upload-file-container .ta-upload-file-content.driver-details-pdf .ng2-pdf-viewer-container canvas{max-width:304px!important;max-height:304px!important;min-width:229px}.ta-upload-file-container .ta-upload-file-content.company-documents{width:302px;height:332px}.ta-upload-file-container .ta-upload-file-content.company-documents .ng2-pdf-viewer-container{width:294px!important;height:294px!important}.ta-upload-file-container .ta-upload-file-content.company-documents .ng2-pdf-viewer-container .canvasWrapper,.ta-upload-file-container .ta-upload-file-content.company-documents .ng2-pdf-viewer-container .pdfViewer,.ta-upload-file-container .ta-upload-file-content.company-documents .ng2-pdf-viewer-container .pdfViewer .page,.ta-upload-file-container .ta-upload-file-content.company-documents .ng2-pdf-viewer-container canvas{max-width:294px!important;max-height:294px!important;min-width:228px}.ta-upload-file-container .ta-upload-file-content.modals{width:140px;cursor:pointer;height:148px}.ta-upload-file-container .ta-upload-file-content.modals ::ng-deep .ng2-pdf-viewer-container{right:20px;width:100px;box-shadow:0 0 4px #00000026;overflow:hidden!important}.ta-upload-file-container .ta-upload-file-content.modals .ng2-pdf-viewer-container{box-shadow:0 0 4px #00000026;width:159px!important;height:156px!important}.ta-upload-file-container .ta-upload-file-content.modals .ng2-pdf-viewer-container .canvasWrapper,.ta-upload-file-container .ta-upload-file-content.modals .ng2-pdf-viewer-container .pdfViewer,.ta-upload-file-container .ta-upload-file-content.modals .ng2-pdf-viewer-container .pdfViewer .page,.ta-upload-file-container .ta-upload-file-content.modals .ng2-pdf-viewer-container canvas{box-shadow:0 0 4px #00000026;max-width:156px!important;max-height:156px!important;min-width:120px}.ta-upload-file-container .ta-upload-file-content.driver-card-pdf{width:416px;height:416px}.ta-upload-file-container .ta-upload-file-content.driver-card-pdf .ng2-pdf-viewer-container{width:408px!important;height:408px!important}.ta-upload-file-container .ta-upload-file-content.driver-card-pdf .ng2-pdf-viewer-container .canvasWrapper,.ta-upload-file-container .ta-upload-file-content.driver-card-pdf .ng2-pdf-viewer-container .pdfViewer,.ta-upload-file-container .ta-upload-file-content.driver-card-pdf .ng2-pdf-viewer-container .pdfViewer .page,.ta-upload-file-container .ta-upload-file-content.driver-card-pdf .ng2-pdf-viewer-container canvas{max-width:408px!important;max-height:408px!important;min-width:314px}.ta-upload-file-container .ta-upload-file-content.landscape-details-view{width:312px;max-height:200px;bottom:4px}.ta-upload-file-container .ta-upload-file-content.landscape-details-view .ng2-pdf-viewer-container{overflow:hidden!important;width:304px!important;max-height:192px!important}.ta-upload-file-container .ta-upload-file-content.landscape-details-view .ng2-pdf-viewer-container .canvasWrapper,.ta-upload-file-container .ta-upload-file-content.landscape-details-view .ng2-pdf-viewer-container .pdfViewer,.ta-upload-file-container .ta-upload-file-content.landscape-details-view .ng2-pdf-viewer-container .pdfViewer .page,.ta-upload-file-container .ta-upload-file-content.landscape-details-view .ng2-pdf-viewer-container canvas{overflow:hidden!important;max-width:304px!important;max-height:192px!important;min-width:304px}.ta-upload-file-container .ta-upload-file-content.todo-details{height:186px;left:21px}.ta-upload-file-container .ta-upload-file-content.todo-details .ng2-pdf-viewer-container{overflow:hidden!important;width:186px!important;height:186px!important;border-radius:1px!important}.ta-upload-file-container .ta-upload-file-content.todo-details .ng2-pdf-viewer-container .canvasWrapper,.ta-upload-file-container .ta-upload-file-content.todo-details .ng2-pdf-viewer-container .pdfViewer,.ta-upload-file-container .ta-upload-file-content.todo-details .ng2-pdf-viewer-container .pdfViewer .page,.ta-upload-file-container .ta-upload-file-content.todo-details .ng2-pdf-viewer-container canvas{overflow:hidden!important;max-width:186px!important;max-height:186px!important;min-width:150px}.ta-upload-file-container .ta-upload-file-content.table-details{width:200px;height:200px}.ta-upload-file-container .ta-upload-file-content.table-details .ng2-pdf-viewer-container{overflow:hidden!important;width:192px!important;height:192px!important;border-radius:1px!important}.ta-upload-file-container .ta-upload-file-content.table-details .ng2-pdf-viewer-container .canvasWrapper,.ta-upload-file-container .ta-upload-file-content.table-details .ng2-pdf-viewer-container .pdfViewer,.ta-upload-file-container .ta-upload-file-content.table-details .ng2-pdf-viewer-container .pdfViewer .page,.ta-upload-file-container .ta-upload-file-content.table-details .ng2-pdf-viewer-container canvas{overflow:hidden!important;max-width:192px!important;max-height:192px!important;min-width:150px}.ta-upload-file-container .ta-upload-file-content.company-details-pdf{width:378px;height:378px}.ta-upload-file-container .ta-upload-file-content.company-details-pdf .ng2-pdf-viewer-container{overflow:hidden!important;width:370px!important;height:370px!important;border-radius:1px!important}.ta-upload-file-container .ta-upload-file-content.company-details-pdf .ng2-pdf-viewer-container .canvasWrapper,.ta-upload-file-container .ta-upload-file-content.company-details-pdf .ng2-pdf-viewer-container .pdfViewer,.ta-upload-file-container .ta-upload-file-content.company-details-pdf .ng2-pdf-viewer-container .pdfViewer .page,.ta-upload-file-container .ta-upload-file-content.company-details-pdf .ng2-pdf-viewer-container canvas{max-width:370px!important;max-height:370px!important;min-width:229px}.ta-upload-file-container .ta-upload-file-delete-template{position:absolute;gap:4px;border-radius:2px;top:0;left:0;padding:4px;z-index:20;width:100%;height:100%;background-color:#f3f3f3e6}.ta-upload-file-container .ta-upload-file-delete-template .ta-upload-file-delete-text{font-size:14px;line-height:18px;color:#424242;width:116px;word-wrap:break-word;text-align:center;margin:18px 12px 20px}.ta-upload-file-container .ta-upload-file-delete-template .ta-upload-file-delete-text::-moz-selection{background-color:#6c6c6c33!important;color:#6c6c6c!important}.ta-upload-file-container .ta-upload-file-delete-template .ta-upload-file-delete-text::selection{background-color:#6c6c6c33!important;color:#6c6c6c!important}.ta-upload-file-container .ta-upload-file-delete-template .ta-upload-file-btn{width:140px;height:22px;border-radius:2px;background-color:#fff;color:#6c6c6c;font-size:11px;line-height:14px;text-align:center;cursor:pointer;padding:4px 0;-webkit-user-select:none;user-select:none}.ta-upload-file-container .ta-upload-file-delete-template .ta-upload-file-btn-delete{color:#df3c3c}.ta-upload-file-container .ta-upload-file-delete-template .ta-upload-file-btn-delete:hover{background-color:#df3c3c!important;color:#fff;transition:transform .3s ease-in-out}.ta-upload-file-container .ta-upload-file-delete-template .ta-upload-file-btn-cancel:hover{background-color:#6c6c6c!important;color:#fff;transition:transform .3s ease-in-out}.ta-upload-file-container .ta-upload-file-delete-template.company-documents{background-color:#ffffffe6}.ta-upload-file-container .ta-upload-file-delete-template.company-documents .ta-upload-file-btn{background-color:#f3f3f3}.ta-upload-file-container .ta-upload-file-footer{position:relative;height:26px;width:180px;z-index:30}.ta-upload-file-container .ta-upload-file-footer p{margin:0}.ta-upload-file-container .ta-upload-file-footer.edit-mode{padding:0!important}.ta-upload-file-container .ta-upload-file-footer input{padding:4px!important}.ta-upload-file-container .ta-upload-file-footer .footer_info{position:absolute;left:4px;bottom:30px}.ta-upload-file-container .ta-upload-file-footer .footer_info .ta-upload-file-ext{width:32px;height:18px;text-align:center;border-radius:1px;margin-right:4px;font-size:11px;color:#fff;line-height:18px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-transform:uppercase}.ta-upload-file-container .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpg,.ta-upload-file-container .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpeg,.ta-upload-file-container .ta-upload-file-footer .footer_info .ta-upload-file-ext-png{background:#f89b2e66}.ta-upload-file-container .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpg:hover,.ta-upload-file-container .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpeg:hover,.ta-upload-file-container .ta-upload-file-footer .footer_info .ta-upload-file-ext-png:hover{background-color:#fab15c}.ta-upload-file-container .ta-upload-file-footer .footer_info .ta-upload-file-ext-pdf{background-color:#df3c3c66}.ta-upload-file-container .ta-upload-file-footer .footer_info .ta-upload-file-ext-pdf:hover{background-color:#e66767}.ta-upload-file-container .ta-upload-file-footer .footer_info .ta-upload-file-ext:hover{transition:transform .3s ease-in-out;cursor:auto!important}.ta-upload-file-container .ta-upload-file-footer .document_info_hold{padding:2px 6px;background-color:#91919166!important;color:#fff;border-radius:1px;font-size:11px;line-height:14px;-webkit-user-select:none;user-select:none}.ta-upload-file-container .ta-upload-file-footer .document_info_hold .file_size.has_pages{margin-left:3px}.ta-upload-file-container .ta-upload-file-footer .ta-upload-file-name{flex:1;font-size:14px;color:#6c6c6c;max-width:161px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%;height:100%;padding:4px;line-height:18px}.ta-upload-file-container .ta-upload-file-footer .ta-upload-file-name::-moz-selection{background-color:#6c6c6c33!important;color:#6c6c6c!important}.ta-upload-file-container .ta-upload-file-footer .ta-upload-file-name::selection{background-color:#6c6c6c33!important;color:#6c6c6c!important}.ta-upload-file-container .ta-upload-file-footer .ta-upload-file-name.details_title{max-width:100%}.ta-upload-file-container .ta-upload-file-footer .ta-upload-file-name.todo_title{max-width:192px}.ta-upload-file-container:hover,.ta-upload-file-container.keep_open{transition:transform .3s ease-in-out}.ta-upload-file-container.driver-details-pdf .ta-upload-file-footer,.ta-upload-file-container.driver-card-pdf .ta-upload-file-footer,.ta-upload-file-container.landscape-details-view .ta-upload-file-footer,.ta-upload-file-container.todo-details .ta-upload-file-footer,.ta-upload-file-container.company-details-pdf .ta-upload-file-footer,.ta-upload-file-container.modals .ta-upload-file-footer,.ta-upload-file-container.table-details .ta-upload-file-footer,.ta-upload-file-container.company-documents .ta-upload-file-footer{opacity:0;border-radius:2px;cursor:default;transition:.1s transform ease-in-out}.ta-upload-file-container.driver-details-pdf .ta-upload-file-footer .footer_info,.ta-upload-file-container.driver-card-pdf .ta-upload-file-footer .footer_info,.ta-upload-file-container.landscape-details-view .ta-upload-file-footer .footer_info,.ta-upload-file-container.todo-details .ta-upload-file-footer .footer_info,.ta-upload-file-container.company-details-pdf .ta-upload-file-footer .footer_info,.ta-upload-file-container.modals .ta-upload-file-footer .footer_info,.ta-upload-file-container.table-details .ta-upload-file-footer .footer_info,.ta-upload-file-container.company-documents .ta-upload-file-footer .footer_info{left:0!important}.ta-upload-file-container.driver-details-pdf .ta-upload-file-tag,.ta-upload-file-container.driver-card-pdf .ta-upload-file-tag,.ta-upload-file-container.landscape-details-view .ta-upload-file-tag,.ta-upload-file-container.todo-details .ta-upload-file-tag,.ta-upload-file-container.company-details-pdf .ta-upload-file-tag,.ta-upload-file-container.modals .ta-upload-file-tag,.ta-upload-file-container.table-details .ta-upload-file-tag,.ta-upload-file-container.company-documents .ta-upload-file-tag{opacity:0;transition:.1s transform ease-in-out}.ta-upload-file-container.driver-details-pdf .ta-upload-file-footer,.ta-upload-file-container.driver-card-pdf .ta-upload-file-footer,.ta-upload-file-container.landscape-details-view .ta-upload-file-footer,.ta-upload-file-container.todo-details .ta-upload-file-footer,.ta-upload-file-container.company-details-pdf .ta-upload-file-footer,.ta-upload-file-container.modals .ta-upload-file-footer,.ta-upload-file-container.table-details .ta-upload-file-footer,.ta-upload-file-container.company-documents .ta-upload-file-footer{opacity:0}.ta-upload-file-container.driver-details-pdf .ta-upload-file-footer .ta-upload-file-name,.ta-upload-file-container.driver-card-pdf .ta-upload-file-footer .ta-upload-file-name,.ta-upload-file-container.landscape-details-view .ta-upload-file-footer .ta-upload-file-name,.ta-upload-file-container.todo-details .ta-upload-file-footer .ta-upload-file-name,.ta-upload-file-container.company-details-pdf .ta-upload-file-footer .ta-upload-file-name,.ta-upload-file-container.modals .ta-upload-file-footer .ta-upload-file-name,.ta-upload-file-container.table-details .ta-upload-file-footer .ta-upload-file-name,.ta-upload-file-container.company-documents .ta-upload-file-footer .ta-upload-file-name{background-color:#ffffffb3!important;transition:.1s transform ease-in-out}.ta-upload-file-container.driver-details-pdf .ta-upload-file-footer .ta-upload-file-name:hover,.ta-upload-file-container.driver-card-pdf .ta-upload-file-footer .ta-upload-file-name:hover,.ta-upload-file-container.landscape-details-view .ta-upload-file-footer .ta-upload-file-name:hover,.ta-upload-file-container.todo-details .ta-upload-file-footer .ta-upload-file-name:hover,.ta-upload-file-container.company-details-pdf .ta-upload-file-footer .ta-upload-file-name:hover,.ta-upload-file-container.modals .ta-upload-file-footer .ta-upload-file-name:hover,.ta-upload-file-container.table-details .ta-upload-file-footer .ta-upload-file-name:hover,.ta-upload-file-container.company-documents .ta-upload-file-footer .ta-upload-file-name:hover{transition:.1s transform ease-in-out;background-color:#ffffffe6!important}.ta-upload-file-container.driver-details-pdf .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpg,.ta-upload-file-container.driver-details-pdf .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpeg,.ta-upload-file-container.driver-details-pdf .ta-upload-file-footer .footer_info .ta-upload-file-ext-png,.ta-upload-file-container.driver-card-pdf .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpg,.ta-upload-file-container.driver-card-pdf .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpeg,.ta-upload-file-container.driver-card-pdf .ta-upload-file-footer .footer_info .ta-upload-file-ext-png,.ta-upload-file-container.landscape-details-view .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpg,.ta-upload-file-container.landscape-details-view .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpeg,.ta-upload-file-container.landscape-details-view .ta-upload-file-footer .footer_info .ta-upload-file-ext-png,.ta-upload-file-container.todo-details .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpg,.ta-upload-file-container.todo-details .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpeg,.ta-upload-file-container.todo-details .ta-upload-file-footer .footer_info .ta-upload-file-ext-png,.ta-upload-file-container.company-details-pdf .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpg,.ta-upload-file-container.company-details-pdf .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpeg,.ta-upload-file-container.company-details-pdf .ta-upload-file-footer .footer_info .ta-upload-file-ext-png,.ta-upload-file-container.modals .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpg,.ta-upload-file-container.modals .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpeg,.ta-upload-file-container.modals .ta-upload-file-footer .footer_info .ta-upload-file-ext-png,.ta-upload-file-container.table-details .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpg,.ta-upload-file-container.table-details .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpeg,.ta-upload-file-container.table-details .ta-upload-file-footer .footer_info .ta-upload-file-ext-png,.ta-upload-file-container.company-documents .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpg,.ta-upload-file-container.company-documents .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpeg,.ta-upload-file-container.company-documents .ta-upload-file-footer .footer_info .ta-upload-file-ext-png{background-color:#ffb74d80}.ta-upload-file-container.driver-details-pdf .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpg:hover,.ta-upload-file-container.driver-details-pdf .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpeg:hover,.ta-upload-file-container.driver-details-pdf .ta-upload-file-footer .footer_info .ta-upload-file-ext-png:hover,.ta-upload-file-container.driver-card-pdf .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpg:hover,.ta-upload-file-container.driver-card-pdf .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpeg:hover,.ta-upload-file-container.driver-card-pdf .ta-upload-file-footer .footer_info .ta-upload-file-ext-png:hover,.ta-upload-file-container.landscape-details-view .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpg:hover,.ta-upload-file-container.landscape-details-view .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpeg:hover,.ta-upload-file-container.landscape-details-view .ta-upload-file-footer .footer_info .ta-upload-file-ext-png:hover,.ta-upload-file-container.todo-details .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpg:hover,.ta-upload-file-container.todo-details .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpeg:hover,.ta-upload-file-container.todo-details .ta-upload-file-footer .footer_info .ta-upload-file-ext-png:hover,.ta-upload-file-container.company-details-pdf .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpg:hover,.ta-upload-file-container.company-details-pdf .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpeg:hover,.ta-upload-file-container.company-details-pdf .ta-upload-file-footer .footer_info .ta-upload-file-ext-png:hover,.ta-upload-file-container.modals .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpg:hover,.ta-upload-file-container.modals .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpeg:hover,.ta-upload-file-container.modals .ta-upload-file-footer .footer_info .ta-upload-file-ext-png:hover,.ta-upload-file-container.table-details .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpg:hover,.ta-upload-file-container.table-details .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpeg:hover,.ta-upload-file-container.table-details .ta-upload-file-footer .footer_info .ta-upload-file-ext-png:hover,.ta-upload-file-container.company-documents .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpg:hover,.ta-upload-file-container.company-documents .ta-upload-file-footer .footer_info .ta-upload-file-ext-jpeg:hover,.ta-upload-file-container.company-documents .ta-upload-file-footer .footer_info .ta-upload-file-ext-png:hover{background-color:#ffb74de6}.ta-upload-file-container.driver-details-pdf .ta-upload-file-footer .footer_info .ta-upload-file-ext-pdf,.ta-upload-file-container.driver-card-pdf .ta-upload-file-footer .footer_info .ta-upload-file-ext-pdf,.ta-upload-file-container.landscape-details-view .ta-upload-file-footer .footer_info .ta-upload-file-ext-pdf,.ta-upload-file-container.todo-details .ta-upload-file-footer .footer_info .ta-upload-file-ext-pdf,.ta-upload-file-container.company-details-pdf .ta-upload-file-footer .footer_info .ta-upload-file-ext-pdf,.ta-upload-file-container.modals .ta-upload-file-footer .footer_info .ta-upload-file-ext-pdf,.ta-upload-file-container.table-details .ta-upload-file-footer .footer_info .ta-upload-file-ext-pdf,.ta-upload-file-container.company-documents .ta-upload-file-footer .footer_info .ta-upload-file-ext-pdf{background-color:#ef535080}.ta-upload-file-container.driver-details-pdf .ta-upload-file-footer .footer_info .ta-upload-file-ext-pdf:hover,.ta-upload-file-container.driver-card-pdf .ta-upload-file-footer .footer_info .ta-upload-file-ext-pdf:hover,.ta-upload-file-container.landscape-details-view .ta-upload-file-footer .footer_info .ta-upload-file-ext-pdf:hover,.ta-upload-file-container.todo-details .ta-upload-file-footer .footer_info .ta-upload-file-ext-pdf:hover,.ta-upload-file-container.company-details-pdf .ta-upload-file-footer .footer_info .ta-upload-file-ext-pdf:hover,.ta-upload-file-container.modals .ta-upload-file-footer .footer_info .ta-upload-file-ext-pdf:hover,.ta-upload-file-container.table-details .ta-upload-file-footer .footer_info .ta-upload-file-ext-pdf:hover,.ta-upload-file-container.company-documents .ta-upload-file-footer .footer_info .ta-upload-file-ext-pdf:hover{background-color:#ef5350e6}.ta-upload-file-container.driver-details-pdf .ta-upload-file-footer .footer_info .document_info_hold,.ta-upload-file-container.driver-card-pdf .ta-upload-file-footer .footer_info .document_info_hold,.ta-upload-file-container.landscape-details-view .ta-upload-file-footer .footer_info .document_info_hold,.ta-upload-file-container.todo-details .ta-upload-file-footer .footer_info .document_info_hold,.ta-upload-file-container.company-details-pdf .ta-upload-file-footer .footer_info .document_info_hold,.ta-upload-file-container.modals .ta-upload-file-footer .footer_info .document_info_hold,.ta-upload-file-container.table-details .ta-upload-file-footer .footer_info .document_info_hold,.ta-upload-file-container.company-documents .ta-upload-file-footer .footer_info .document_info_hold{transition:.1s transform ease-in-out;padding:2px 6px;background-color:#91919166;color:#fff;border-radius:1px;font-size:11px;line-height:14px;-webkit-user-select:none;user-select:none}.ta-upload-file-container.driver-details-pdf .ta-upload-file-footer .footer_info .document_info_hold .file_size.has_pages,.ta-upload-file-container.driver-card-pdf .ta-upload-file-footer .footer_info .document_info_hold .file_size.has_pages,.ta-upload-file-container.landscape-details-view .ta-upload-file-footer .footer_info .document_info_hold .file_size.has_pages,.ta-upload-file-container.todo-details .ta-upload-file-footer .footer_info .document_info_hold .file_size.has_pages,.ta-upload-file-container.company-details-pdf .ta-upload-file-footer .footer_info .document_info_hold .file_size.has_pages,.ta-upload-file-container.modals .ta-upload-file-footer .footer_info .document_info_hold .file_size.has_pages,.ta-upload-file-container.table-details .ta-upload-file-footer .footer_info .document_info_hold .file_size.has_pages,.ta-upload-file-container.company-documents .ta-upload-file-footer .footer_info .document_info_hold .file_size.has_pages{margin-left:3px}.ta-upload-file-container.driver-details-pdf .ta-upload-file-tag,.ta-upload-file-container.driver-card-pdf .ta-upload-file-tag,.ta-upload-file-container.landscape-details-view .ta-upload-file-tag,.ta-upload-file-container.todo-details .ta-upload-file-tag,.ta-upload-file-container.company-details-pdf .ta-upload-file-tag,.ta-upload-file-container.modals .ta-upload-file-tag,.ta-upload-file-container.table-details .ta-upload-file-tag,.ta-upload-file-container.company-documents .ta-upload-file-tag{opacity:0;transition:.1s transform ease-in-out;background-color:#3b73ed66}.ta-upload-file-container.driver-details-pdf .ta-upload-file-tag:hover,.ta-upload-file-container.driver-card-pdf .ta-upload-file-tag:hover,.ta-upload-file-container.landscape-details-view .ta-upload-file-tag:hover,.ta-upload-file-container.todo-details .ta-upload-file-tag:hover,.ta-upload-file-container.company-details-pdf .ta-upload-file-tag:hover,.ta-upload-file-container.modals .ta-upload-file-tag:hover,.ta-upload-file-container.table-details .ta-upload-file-tag:hover,.ta-upload-file-container.company-documents .ta-upload-file-tag:hover{transition:.1s transform ease-in-out;background-color:#6692f1}.ta-upload-file-container.driver-details-pdf .ta-upload-file-tag.default,.ta-upload-file-container.driver-card-pdf .ta-upload-file-tag.default,.ta-upload-file-container.landscape-details-view .ta-upload-file-tag.default,.ta-upload-file-container.todo-details .ta-upload-file-tag.default,.ta-upload-file-container.company-details-pdf .ta-upload-file-tag.default,.ta-upload-file-container.modals .ta-upload-file-tag.default,.ta-upload-file-container.table-details .ta-upload-file-tag.default,.ta-upload-file-container.company-documents .ta-upload-file-tag.default{background-color:#42424280}.ta-upload-file-container.driver-details-pdf .ta-upload-file-tag.default:hover,.ta-upload-file-container.driver-card-pdf .ta-upload-file-tag.default:hover,.ta-upload-file-container.landscape-details-view .ta-upload-file-tag.default:hover,.ta-upload-file-container.todo-details .ta-upload-file-tag.default:hover,.ta-upload-file-container.company-details-pdf .ta-upload-file-tag.default:hover,.ta-upload-file-container.modals .ta-upload-file-tag.default:hover,.ta-upload-file-container.table-details .ta-upload-file-tag.default:hover,.ta-upload-file-container.company-documents .ta-upload-file-tag.default:hover{transition:.1s transform ease-in-out;background-color:#424242e6}.ta-upload-file-container.driver-details-pdf:hover .ta-upload-file-footer,.ta-upload-file-container.driver-card-pdf:hover .ta-upload-file-footer,.ta-upload-file-container.landscape-details-view:hover .ta-upload-file-footer,.ta-upload-file-container.todo-details:hover .ta-upload-file-footer,.ta-upload-file-container.company-details-pdf:hover .ta-upload-file-footer,.ta-upload-file-container.modals:hover .ta-upload-file-footer,.ta-upload-file-container.table-details:hover .ta-upload-file-footer,.ta-upload-file-container.company-documents:hover .ta-upload-file-footer{opacity:1;border-radius:1px}.ta-upload-file-container.driver-details-pdf:hover .ta-upload-file-tag,.ta-upload-file-container.driver-card-pdf:hover .ta-upload-file-tag,.ta-upload-file-container.landscape-details-view:hover .ta-upload-file-tag,.ta-upload-file-container.todo-details:hover .ta-upload-file-tag,.ta-upload-file-container.company-details-pdf:hover .ta-upload-file-tag,.ta-upload-file-container.modals:hover .ta-upload-file-tag,.ta-upload-file-container.table-details:hover .ta-upload-file-tag,.ta-upload-file-container.company-documents:hover .ta-upload-file-tag{opacity:1}.ta-upload-file-container.driver-details-pdf.table-details .ta-upload-file-tag,.ta-upload-file-container.driver-card-pdf.table-details .ta-upload-file-tag,.ta-upload-file-container.landscape-details-view.table-details .ta-upload-file-tag,.ta-upload-file-container.todo-details.table-details .ta-upload-file-tag,.ta-upload-file-container.company-details-pdf.table-details .ta-upload-file-tag,.ta-upload-file-container.modals.table-details .ta-upload-file-tag,.ta-upload-file-container.table-details.table-details .ta-upload-file-tag,.ta-upload-file-container.company-documents.table-details .ta-upload-file-tag{opacity:1!important;bottom:8px!important}.ta-upload-file-container.driver-details-pdf.table-details:hover .ta-upload-file-tag,.ta-upload-file-container.driver-card-pdf.table-details:hover .ta-upload-file-tag,.ta-upload-file-container.landscape-details-view.table-details:hover .ta-upload-file-tag,.ta-upload-file-container.todo-details.table-details:hover .ta-upload-file-tag,.ta-upload-file-container.company-details-pdf.table-details:hover .ta-upload-file-tag,.ta-upload-file-container.modals.table-details:hover .ta-upload-file-tag,.ta-upload-file-container.table-details.table-details:hover .ta-upload-file-tag,.ta-upload-file-container.company-documents.table-details:hover .ta-upload-file-tag{bottom:56px!important}.ta-upload-file-container.modals,.ta-upload-file-container.company-documents,.ta-upload-file-container.keep_open_modals{background-color:#eee!important}.ta-upload-file-container.modals .ta-upload-file-footer,.ta-upload-file-container.company-documents .ta-upload-file-footer,.ta-upload-file-container.keep_open_modals .ta-upload-file-footer{opacity:1}.ta-upload-file-container.modals .ta-upload-file-footer .ta-upload-file-name,.ta-upload-file-container.company-documents .ta-upload-file-footer .ta-upload-file-name,.ta-upload-file-container.keep_open_modals .ta-upload-file-footer .ta-upload-file-name{background-color:transparent!important;transition:.1s transform ease-in-out;cursor:pointer}.ta-upload-file-container.modals:hover,.ta-upload-file-container.company-documents:hover,.ta-upload-file-container.keep_open_modals:hover{background-color:#dadadada!important}.ta-upload-file-container.modals:hover .ta-upload-file-ext-jpg,.ta-upload-file-container.modals:hover .ta-upload-file-ext-jpeg,.ta-upload-file-container.modals:hover .ta-upload-file-ext-png,.ta-upload-file-container.company-documents:hover .ta-upload-file-ext-jpg,.ta-upload-file-container.company-documents:hover .ta-upload-file-ext-jpeg,.ta-upload-file-container.company-documents:hover .ta-upload-file-ext-png,.ta-upload-file-container.keep_open_modals:hover .ta-upload-file-ext-jpg,.ta-upload-file-container.keep_open_modals:hover .ta-upload-file-ext-jpeg,.ta-upload-file-container.keep_open_modals:hover .ta-upload-file-ext-png{background-color:#fab15c!important}.ta-upload-file-container.modals:hover .document_info_hold,.ta-upload-file-container.company-documents:hover .document_info_hold,.ta-upload-file-container.keep_open_modals:hover .document_info_hold{background-color:#919191!important}.ta-upload-file-container.modals:hover .ta-upload-file-tag,.ta-upload-file-container.company-documents:hover .ta-upload-file-tag,.ta-upload-file-container.keep_open_modals:hover .ta-upload-file-tag{background-color:#6692f1!important}.ta-upload-file-container.modals:hover .ta-upload-file-ext-pdf,.ta-upload-file-container.company-documents:hover .ta-upload-file-ext-pdf,.ta-upload-file-container.keep_open_modals:hover .ta-upload-file-ext-pdf{background-color:#e66767!important}.ta-upload-file-container.modals:hover .ta-upload-file-footer .ta-upload-file-name,.ta-upload-file-container.company-documents:hover .ta-upload-file-footer .ta-upload-file-name,.ta-upload-file-container.keep_open_modals:hover .ta-upload-file-footer .ta-upload-file-name{transition:.1s transform ease-in-out;background-color:#eee!important}.ta-upload-file-container.modals:hover .ta-upload-file-footer .ta-upload-file-name:hover,.ta-upload-file-container.company-documents:hover .ta-upload-file-footer .ta-upload-file-name:hover,.ta-upload-file-container.keep_open_modals:hover .ta-upload-file-footer .ta-upload-file-name:hover{background-color:#eee!important}.ta-upload-file-container.modals .ta-upload-file-tag,.ta-upload-file-container.company-documents .ta-upload-file-tag,.ta-upload-file-container.keep_open_modals .ta-upload-file-tag{opacity:1}.ta-upload-file-container.keep_open_modals{background-color:#dadadada!important}.ta-upload-file-container.keep_open_modals .ta-upload-file-footer .ta-upload-file-name{transition:.1s transform ease-in-out;background-color:#eee!important}.ta-upload-file-container.keep_open_modals .ta-upload-file-footer .ta-upload-file-name:hover{background-color:#fff!important}.ta-upload-file-container.company-documents .ta-upload-file-footer{opacity:1}.ta-upload-file-container.company-documents .ta-upload-file-footer .ta-upload-file-name{background-color:#eee!important}.ta-upload-file-container.driver-details-pdf{width:312px;height:312px;grid-template-rows:312px}.ta-upload-file-container.driver-details-pdf .ta-upload-file-footer{bottom:37px;right:-4px;width:304px}.ta-upload-file-container.driver-details-pdf .ta-upload-file-tag{bottom:56px}.ta-upload-file-container.driver-details-pdf .ta-upload-file-delete-template{width:304px;height:304px}.ta-upload-file-container.company-documents{width:302px;height:332px;grid-template-rows:332px;background-color:#dadada!important}.ta-upload-file-container.company-documents:hover{background-color:#ccc!important}.ta-upload-file-container.company-documents .ta-upload-file-footer{bottom:37px;right:-4px;width:294px}.ta-upload-file-container.company-documents .ta-upload-file-footer .ta-upload-file-name{max-width:294px}.ta-upload-file-container.company-documents .ta-upload-file-tag{top:4px}.ta-upload-file-container.company-documents .ta-upload-file-delete-template{width:302px;height:332px}.ta-upload-file-container.modals{width:148px;height:100%}.ta-upload-file-container.modals .ta-upload-file-footer{right:-4px;bottom:4px;width:140px}.ta-upload-file-container.modals .ta-upload-file-tag{bottom:56px}.ta-upload-file-container.driver-card-pdf{width:416px;height:416px;grid-template-rows:416px}.ta-upload-file-container.driver-card-pdf .ta-upload-file-footer{bottom:37px;right:-4px;width:408px}.ta-upload-file-container.driver-card-pdf .ta-upload-file-footer .ta-upload-file-name{max-width:408px}.ta-upload-file-container.driver-card-pdf .ta-upload-file-tag{bottom:56px}.ta-upload-file-container.driver-card-pdf .ta-upload-file-delete-template{width:420px;height:420px}.ta-upload-file-container.landscape-details-view{width:312px;max-height:200px;min-height:200px;grid-template-rows:200px;overflow:visible}.ta-upload-file-container.landscape-details-view .ta-upload-file-footer{bottom:37px;right:-4px;width:304px}.ta-upload-file-container.landscape-details-view .ta-upload-file-tag{opacity:0;bottom:31px}.ta-upload-file-container.landscape-details-view .ta-upload-file-delete-template{width:304px;min-height:192px}.ta-upload-file-container.todo-details{width:194px;height:194px;grid-template-rows:194px}.ta-upload-file-container.todo-details .ta-upload-file-footer{box-shadow:0 0 4px #00000026;bottom:32px;left:4px;width:186px}.ta-upload-file-container.todo-details .ta-upload-file-tag{bottom:56px}.ta-upload-file-container.todo-details .ta-upload-file-delete-template{width:192px;height:192px}.ta-upload-file-container.table-details{width:200px;height:200px;grid-template-rows:200px}.ta-upload-file-container.table-details .ta-upload-file-footer{bottom:37px;right:-4px;width:192px}.ta-upload-file-container.table-details .ta-upload-file-footer .ta-upload-file-name{max-width:192px}.ta-upload-file-container.table-details .ta-upload-file-tag{bottom:56px}.ta-upload-file-container.table-details .ta-upload-file-delete-template{width:192px;height:192px}.ta-upload-file-container.company-details-pdf{width:378px;height:378px;grid-template-rows:378px}.ta-upload-file-container.company-details-pdf .ta-upload-file-footer{bottom:37px;right:-4px;width:370px}.ta-upload-file-container.company-details-pdf .ta-upload-file-tag{bottom:56px}.ta-upload-file-container.company-details-pdf .ta-upload-file-delete-template{width:370px;height:370px}.ta-upload-file-container.keep_open .ta-upload-file-footer{opacity:1;border-radius:1px}.ta-upload-file-container.keep_open .ta-upload-file-tag{opacity:1}.tags_main_holder{z-index:100!important;width:196px;background-color:#2f2f2f;border-radius:3px;box-shadow:0 0 4px #00000026;cursor:pointer}.tags_main_holder .remove_tag_holder{padding:6px;border-radius:2px}.tags_main_holder .remove_tag_holder:hover{background-color:#1d1d1d}.tags_main_holder .remove_tag_holder .remove_tag{color:#e57373;font-size:11px;line-height:14px}.tags_main_holder .remove_tag_border_holder{width:100%;padding:0 4px;margin:4px 0}.tags_main_holder .remove_tag_border_holder .remove_tag_border{width:100%;height:1px;background-color:#aaa}.tags_main_holder .tags_inner_holder{z-index:100;height:26px;margin:2px 0;padding-left:4px;border-radius:2px}.tags_main_holder .tags_inner_holder.firstRow{margin-top:0}.tags_main_holder .tags_inner_holder.lastRow{margin-bottom:0}.tags_main_holder .tags_inner_holder .tag_options_holder{padding-right:6px;width:100%;height:100%}.tags_main_holder .tags_inner_holder .tag_options_holder .tag_name{flex:1;font-size:14px;line-height:18px;color:#fff}.tags_main_holder .tags_inner_holder .tag_options_holder .checked_icon{opacity:0;margin-left:4px}.tags_main_holder .tags_inner_holder .tag_options_holder .checked_icon.shown{opacity:1}.tags_main_holder .tags_inner_holder .tag_options_holder .checked_icon svg-icon svg{display:flex}.tags_main_holder .tags_inner_holder .tag_options_holder .checked_icon svg-icon svg path{fill:#6d82c7}.tags_main_holder .tags_inner_holder:hover{background-color:#1d1d1d}.tags_main_holder .tags_inner_holder:hover .tag_options_holder .checked_icon svg-icon svg path{fill:#536bc2}\n"] }]
330
333
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i0.ChangeDetectorRef }, { type: i2.UrlExtensionPipe }, { type: i2.FileNamePipe }, { type: i3.DocumentService }], propDecorators: { t2: [{
331
334
  type: ViewChild,
@@ -348,4 +351,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
348
351
  }], fileHover: [{
349
352
  type: Output
350
353
  }] } });
351
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtdXBsb2FkLWZpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtdXBsb2FkLWZpbGVzL2NvbXBvbmVudHMvY2EtdXBsb2FkLWZpbGUvY2EtdXBsb2FkLWZpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtdXBsb2FkLWZpbGVzL2NvbXBvbmVudHMvY2EtdXBsb2FkLWZpbGUvY2EtdXBsb2FkLWZpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbkUsT0FBTyxFQUFvQixlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUNMLFNBQVMsRUFFVCxnQkFBZ0IsRUFDaEIsVUFBVSxHQUNYLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV6QyxZQUFZO0FBQ1osT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUs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SztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csd0JBQXdCO3NCQUFqQyxNQUFNO2dCQUVHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFBERkRvY3VtZW50UHJveHksIFBkZlZpZXdlck1vZHVsZSB9IGZyb20gJ25nMi1wZGYtdmlld2VyJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBbmd1bGFyU3ZnSWNvbk1vZHVsZSB9IGZyb20gJ2FuZ3VsYXItc3ZnLWljb24nO1xuaW1wb3J0IHtcbiAgTmdiTW9kdWxlLFxuICBOZ2JQb3BvdmVyLFxuICBOZ2JQb3BvdmVyTW9kdWxlLFxuICBOZ2JUb29sdGlwLFxufSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBOZ3hNYXNrTW9kdWxlIH0gZnJvbSAnbmd4LW1hc2snO1xuXG4vL0NvbXBvbmVudHNcbmltcG9ydCB7IENhSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jYS1pbnB1dC9jYS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FBcHBUb29sdGlwVjJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jYS1hcHAtdG9vbHRpcC12Mi9jYS1hcHAtdG9vbHRpcC12Mi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY2Etc3Bpbm5lci9jYS1zcGlubmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUxvZ29DaGFuZ2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jYS1sb2dvLWNoYW5nZS9jYS1sb2dvLWNoYW5nZS5jb21wb25lbnQnO1xuXG4vL01vZGVsc1xuaW1wb3J0IHtcbiAgRG9jdW1lbnRSZXZpZXdJbnB1dEV2ZW50LFxuICBGaWxlT3B0aW9uQ29uZmlnLFxuICBSZXZpZXdGaWxlQ29uZmlnLFxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgRGVsZXRlQWN0aW9uLCBGaWxlQWN0aW9uRXZlbnQgfSBmcm9tICcuL21vZGVscyc7XG5cbi8vRW51bXNcbmltcG9ydCB7IERvY3VtZW50QWN0aW9uIH0gZnJvbSAnLi9lbnVtcyc7XG5cbi8vUGlwZXNcbmltcG9ydCB7XG4gIEJ5dGVDb252ZXJ0UGlwZSxcbiAgRmlsZU5hbWVQaXBlLFxuICBVcmxFeHRlbnNpb25QaXBlLFxuICBOZ0NsYXNzUGlwZSxcbn0gZnJvbSAnLi9waXBlcyc7XG5cbi8vU2VydmljZXNcbmltcG9ydCB7IERvY3VtZW50U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMnO1xuXG4vL1JvdXRlc1xuaW1wb3J0IHsgVXBsb2FkRmlsZVJvdXRlcyB9IGZyb20gJy4vdXRpbHMvc3ZnLXJvdXRlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ2FwcC1jYS11cGxvYWQtZmlsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYS11cGxvYWQtZmlsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhLXVwbG9hZC1maWxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGltcG9ydHM6IFtcbiAgICAvLyBtb2R1bGVzXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE5nYlRvb2x0aXAsXG4gICAgTmdiTW9kdWxlLFxuICAgIE5nYlBvcG92ZXJNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBBbmd1bGFyU3ZnSWNvbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOZ3hNYXNrTW9kdWxlLFxuICAgIC8vIHBpcGVzXG4gICAgQnl0ZUNvbnZlcnRQaXBlLFxuICAgIFVybEV4dGVuc2lvblBpcGUsXG4gICAgUGRmVmlld2VyTW9kdWxlLFxuICAgIEZpbGVOYW1lUGlwZSxcbiAgICBOZ0NsYXNzUGlwZSxcbiAgICAvLyBjb21wb25lbnRzXG4gICAgQ2FBcHBUb29sdGlwVjJDb21wb25lbnQsXG4gICAgQ2FTcGlubmVyQ29tcG9uZW50LFxuICAgIENhSW5wdXRDb21wb25lbnQsXG4gICAgQ2FMb2dvQ2hhbmdlQ29tcG9uZW50LFxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5FbXVsYXRlZCxcbn0pXG5leHBvcnQgY2xhc3MgQ2FVcGxvYWRGaWxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZCgndDInKSB0MiE6IE5nYlBvcG92ZXI7XG4gIEBWaWV3Q2hpbGQoQ2FJbnB1dENvbXBvbmVudCkgaW5wdXRSZWYhOiBDYUlucHV0Q29tcG9uZW50O1xuXG4gIEBJbnB1dCgpIGNvbmZpZyE6IEZpbGVPcHRpb25Db25maWc7XG4gIEBJbnB1dCgpIHJldmlld0ZpbGVDb25maWchOiBSZXZpZXdGaWxlQ29uZmlnO1xuXG4gIEBPdXRwdXQoKSBmaWxlQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlQWN0aW9uRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBkZWxldGVBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPERlbGV0ZUFjdGlvbj4oKTtcbiAgQE91dHB1dCgpIGRvY3VtZW50UmV2aWV3SW5wdXRFdmVudCA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxEb2N1bWVudFJldmlld0lucHV0RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBsYW5kc2NhcGVDaGVjayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGZpbGVIb3ZlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgZmlsZU5ld05hbWU6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gIHB1YmxpYyBkb2N1bWVudFJldmlld0lucHV0Q29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wobnVsbCk7XG4gIHB1YmxpYyBlZGl0RmlsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgaXNGaWxlRGVsZXRlOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBkb2N1bWVudFJldmlld0lucHV0VmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgaXNJbmNvcnJlY3RNYXJrSG92ZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGFubm90YXRpb25Ib3ZlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgZG9jdW1lbnRMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcbiAgcHVibGljIGlzQXJyb3dIb3ZlcmVkOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBmaWxlRXh0ZW5zaW9uOiBzdHJpbmcgPSAnJztcbiAgcHVibGljIG51bWJlck9mRmlsZVBhZ2VzOiBzdHJpbmcgPSAnJztcbiAgcHVibGljIGZpbGVOYW1lOiBzdHJpbmcgPSAnJztcbiAgcHVibGljIGljb25zID0gVXBsb2FkRmlsZVJvdXRlcy5pY29ucztcblxuICBwdWJsaWMgYWN0aW9uID0gRG9jdW1lbnRBY3Rpb247XG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG5cbiAgICAvL1BpcGVcbiAgICBwcml2YXRlIHVybEV4dDogVXJsRXh0ZW5zaW9uUGlwZSxcbiAgICBwcml2YXRlIGZpbGVOYW1lUGlwZTogRmlsZU5hbWVQaXBlLFxuXG4gICAgLy9TZXJ2aWNlXG4gICAgcHJpdmF0ZSBkZXRhaWxzRGF0YVNlcnZpY2U6IERvY3VtZW50U2VydmljZVxuICApIHt9XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0ZmlsZU5hbWUoKTtcblxuICAgIHRoaXMuaW5pdGlhbGl6ZUZpbGVFeHRlbnNpb24oKTtcblxuICAgIHRoaXMub25TcGlubmVyKCk7XG5cbiAgICB0aGlzLnJldmlld0lucHV0Q29udHJvbENoYW5nZSgpO1xuXG4gICAgdGhpcy5zZXRTYXZlZFRhZygpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0VGFncygpO1xuICAgIHRoaXMuc2V0Q2F0ZWdvcnlUYWcoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUZpbGVFeHRlbnNpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmZpbGUgJiYgdGhpcy5jb25maWcuZmlsZS5maWxlTmFtZSkge1xuICAgICAgdGhpcy5maWxlRXh0ZW5zaW9uID0gdGhpcy51cmxFeHQudHJhbnNmb3JtKHRoaXMuY29uZmlnLmZpbGUuZmlsZU5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblNwaW5uZXIoKTogdm9pZCB7XG4gICAgY29uc3QgaXNOb3RQZGYgPVxuICAgICAgKHRoaXMuY29uZmlnLmZpbGUuZXh0ZW5zaW9uIHx8XG4gICAgICAgIHRoaXMudXJsRXh0LnRyYW5zZm9ybSh0aGlzLmNvbmZpZy5maWxlLnVybCkpICE9PSAncGRmJztcbiAgICB0aGlzLmRvY3VtZW50TG9hZGluZyA9ICFpc05vdFBkZjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRmaWxlTmFtZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25maWcuZmlsZS5maWxlTmFtZSlcbiAgICAgIHRoaXMuZmlsZU5hbWUgPSB0aGlzLmZpbGVOYW1lUGlwZS50cmFuc2Zvcm0odGhpcy5jb25maWcuZmlsZS5maWxlTmFtZSk7XG4gIH1cblxuICBwdWJsaWMgb25CbHVySW5wdXQoZXZlbnQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIHRoaXMuZWRpdEZpbGUgPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLmZpbGVOZXdOYW1lLnZhbHVlKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLmZpbGUuZmlsZU5hbWUgPSB0aGlzLmZpbGVOYW1lO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vcGRmXG4gIHB1YmxpYyBhZnRlckxvYWRDb21wbGV0ZShwZGY6IFBERkRvY3VtZW50UHJveHkpOiB2b2lkIHtcbiAgICB0aGlzLmRvY3VtZW50TG9hZGluZyA9IGZhbHNlO1xuICAgIGNvbnN0IG51bWJlclBhZ2VzID0gcGRmLl9wZGZJbmZvLm51bVBhZ2VzO1xuXG4gICAgdGhpcy5udW1iZXJPZkZpbGVQYWdlcyA9IGAke251bWJlclBhZ2VzfSAke1xuICAgICAgbnVtYmVyUGFnZXMgPT09IDEgPyAnUEFHRScgOiAnUEFHRVMnXG4gICAgfWA7XG5cbiAgICBpZiAoIXRoaXMuY29uZmlnLmZpbGUuZXh0ZW5zaW9uICYmIHRoaXMuY29uZmlnLmZpbGUuZmlsZU5hbWUpIHtcbiAgICAgIHRoaXMuZmlsZUV4dGVuc2lvbiA9IHRoaXMudXJsRXh0LnRyYW5zZm9ybSh0aGlzLmNvbmZpZy5maWxlLmZpbGVOYW1lKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcGFnZVJlbmRlcmVkKFxuICAgIGV2ZW50OiBhbnkgLy8gbGVhdmUgYW55IGZvciBub3dcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgcGRmOiB7XG4gICAgICBwYWdlTnVtYmVyOiBudW1iZXI7XG4gICAgICBzb3VyY2U6IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfTtcbiAgICB9ID0gZXZlbnQ7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLmNvbmZpZy5oYXNMYW5kc2NhcGVPcHRpb24gJiZcbiAgICAgIHBkZi5wYWdlTnVtYmVyID09PSAxICYmXG4gICAgICBwZGYuc291cmNlLndpZHRoID4gcGRmLnNvdXJjZS5oZWlnaHRcbiAgICApIHtcbiAgICAgIHRoaXMubGFuZHNjYXBlQ2hlY2suZW1pdCh0cnVlKTtcbiAgICB9XG4gIH1cbiAgcHVibGljIG9uQWN0aW9uKGFjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5kZXRhaWxzRGF0YVNlcnZpY2Uuc2V0RG9jdW1lbnROYW1lKHRoaXMuZmlsZU5hbWUpO1xuICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICBjYXNlIERvY3VtZW50QWN0aW9uLlRBRzpcbiAgICAgICAgdGhpcy5oYW5kbGVUYWdBY3Rpb24oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIERvY3VtZW50QWN0aW9uLkRPV05MT0FEOlxuICAgICAgICB0aGlzLmhhbmRsZURvd25sb2FkQWN0aW9uKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBEb2N1bWVudEFjdGlvbi5ERUxFVEU6XG4gICAgICAgIHRoaXMuaGFuZGxlRGVsZXRlQWN0aW9uKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBEb2N1bWVudEFjdGlvbi5DQU5DRUw6XG4gICAgICAgIHRoaXMuaGFuZGxlQ2FuY2VsQWN0aW9uKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBEb2N1bWVudEFjdGlvbi5NQVJLX0lOQ09SUkVDVDpcbiAgICAgICAgdGhpcy5oYW5kbGVNYXJrSW5jb3JyZWN0QWN0aW9uKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBEb2N1bWVudEFjdGlvbi5NQVJLX0NPUlJFQ1Q6XG4gICAgICAgIHRoaXMuaGFuZGxlTWFya0NvcnJlY3RBY3Rpb24oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVRhZ0FjdGlvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25maWcuZmlsZS50YWdzKSB7XG4gICAgICB0aGlzLnNlbGVjdFRhZyh0aGlzLmNvbmZpZy5maWxlLnRhZ3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdFRhZygnTm8gVGFnJyk7XG4gICAgfVxuICAgIHRoaXMudDIub3BlbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVEb3dubG9hZEFjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmRvd25sb2FkRmlsZSh0aGlzLmNvbmZpZy5maWxlLnVybCwgdGhpcy5maWxlTmFtZSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZURlbGV0ZUFjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmlzRmlsZURlbGV0ZSA9IGZhbHNlO1xuICAgIHRoaXMuZGVsZXRlQWN0aW9uLmVtaXQoe1xuICAgICAgaWQ6IHRoaXMuY29uZmlnLmlkLFxuICAgICAgYWN0aW9uOiBEb2N1bWVudEFjdGlvbi5ERUxFVEUsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNhbmNlbEFjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmlzRmlsZURlbGV0ZSA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVNYXJrSW5jb3JyZWN0QWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlnLmZpbGUuaW5jb3JyZWN0ID0gdHJ1ZTtcbiAgICB0aGlzLmZpbGVBY3Rpb24uZW1pdCh7XG4gICAgICBmaWxlOiB0aGlzLmNvbmZpZy5maWxlLFxuICAgICAgYWN0aW9uOiBEb2N1bWVudEFjdGlvbi5NQVJLX0lOQ09SUkVDVCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTWFya0NvcnJlY3RBY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5jb25maWcuZmlsZS5pbmNvcnJlY3QgPSBmYWxzZTtcbiAgICB0aGlzLmZpbGVBY3Rpb24uZW1pdCh7XG4gICAgICBmaWxlOiB0aGlzLmNvbmZpZy5maWxlLFxuICAgICAgYWN0aW9uOiBEb2N1bWVudEFjdGlvbi5NQVJLX0NPUlJFQ1QsXG4gICAgfSk7XG4gICAgdGhpcy5kb2N1bWVudFJldmlld0lucHV0VmlzaWJsZSA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGRvd25sb2FkRmlsZSh1cmw6IHN0cmluZywgZmlsZW5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaHR0cC5nZXQodXJsLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pLnN1YnNjcmliZShcbiAgICAgIChibG9iOiBCbG9iKSA9PiB7XG4gICAgICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgIGNvbnN0IG9iamVjdFVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgIGEuaHJlZiA9IG9iamVjdFVybDtcbiAgICAgICAgYS5kb3dubG9hZCA9IGZpbGVuYW1lO1xuICAgICAgICBhLmNsaWNrKCk7XG4gICAgICB9LFxuICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGRvd25sb2FkaW5nIGZpbGU6JywgZXJyb3IpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgb25FZGl0RmlsZSgpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmNvbmZpZy5jdXN0b21DbGFzc05hbWUgIT09ICdkcml2ZXItZGV0YWlscy1wZGYnICYmXG4gICAgICB0aGlzLmNvbmZpZy5jdXN0b21DbGFzc05hbWUgIT09ICdsYW5kc2NhcGUtZGV0YWlscy12aWV3JyAmJlxuICAgICAgdGhpcy5yZXZpZXdGaWxlQ29uZmlnLnJldmlld01vZGUgIT09ICdSRVZJRVdfTU9ERScgJiZcbiAgICAgICF0aGlzLmlucHV0UmVmPy5pc0ZvY3VzSW5wdXRcbiAgICApIHtcbiAgICAgIHRoaXMuZWRpdEZpbGUgPSB0cnVlO1xuICAgICAgdGhpcy5maWxlTmV3TmFtZS5wYXRjaFZhbHVlKHRoaXMuZmlsZU5hbWUpO1xuICAgICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMuaW5wdXRSZWYuaW5wdXQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uRW5kID0gaW5wdXQudmFsdWUubGVuZ3RoO1xuICAgICAgICBpZiAoaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UpIHtcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb25FbmQsIHNlbGVjdGlvbkVuZCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZm9jdXNUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaW5wdXQuZm9jdXMoKTtcbiAgICAgICAgICBjbGVhclRpbWVvdXQoZm9jdXNUaW1lb3V0KTtcbiAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgfSwgMTAwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJldmlld0lucHV0Q29udHJvbENoYW5nZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZXZpZXdGaWxlQ29uZmlnLmlzUmV2aWV3KSB7XG4gICAgICB0aGlzLmRvY3VtZW50UmV2aWV3SW5wdXRDb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTUwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5kb2N1bWVudFJldmlld0lucHV0RXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBmaWxlOiB0aGlzLmNvbmZpZy5maWxlLFxuICAgICAgICAgICAgbWVzc2FnZTogdmFsdWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRBbm5vdGF0aW9uUmV2aWV3RXZlbnQoZXZlbnQ6IHsgdHlwZTogc3RyaW5nIH0pOiB2b2lkIHtcbiAgICB0aGlzLmRvY3VtZW50UmV2aWV3SW5wdXRWaXNpYmxlID0gZXZlbnQudHlwZSA9PT0gJ29wZW4nO1xuICB9XG5cbiAgcHVibGljIHNldFRhZ3MoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmhhc1RhZ3NEcm9wZG93biAmJiB0aGlzLmNvbmZpZy50YWdzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuY29uZmlnLnRhZ3MuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpdGVtID0ge1xuICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5jb25maWcudGFnc09wdGlvbnM/LnB1c2goaXRlbSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0Q2F0ZWdvcnlUYWcoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmZpbGUudGFncz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnJldmlld0ZpbGVDb25maWcuY2F0ZWdvcnlUYWcgPSB0aGlzLmNvbmZpZy5maWxlLnRhZ3NbMF07XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFNhdmVkVGFnKCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuY29uZmlnLmZpbGUudGFncyAmJlxuICAgICAgdGhpcy5jb25maWcuZmlsZS50YWdzLmxlbmd0aCAmJlxuICAgICAgdGhpcy5jb25maWcuaGFzVGFnc0Ryb3Bkb3duXG4gICAgKSB7XG4gICAgICB0aGlzLmNvbmZpZy5maWxlLnNhdmVkVGFnID0gdGhpcy5jb25maWcuZmlsZS50YWdzWzBdO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RUYWcodGFnOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbmZpZy50YWdzT3B0aW9ucz8uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaWYgKGl0ZW0udGFnTmFtZSA9PSB0YWcpIHtcbiAgICAgICAgaXRlbS5jaGVja2VkID0gdHJ1ZTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNvbmZpZy5maWxlLnRhZ3MgPSBpdGVtLnRhZ05hbWU7XG4gICAgICAgICAgdGhpcy5jb25maWcuZmlsZS50YWdHZW5lcmF0ZWRCeVVzZXIgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuY29uZmlnLmZpbGUudGFnSWQgPSBbaXRlbS50YWdJZF07XG4gICAgICAgICAgdGhpcy5jb25maWcuZmlsZS50YWdDaGFuZ2VkID1cbiAgICAgICAgICAgIHRoaXMuY29uZmlnLmZpbGUuc2F2ZWRUYWcgIT0gaXRlbS50YWdOYW1lID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICAgIGNvbnN0IGFjdGlvbiA9ICd0YWcnO1xuICAgICAgICAgIGlmICghdGhpcy50Mi5pc09wZW4oKSkge1xuICAgICAgICAgICAgdGhpcy5maWxlQWN0aW9uLmVtaXQoeyBmaWxlOiB0aGlzLmNvbmZpZy5maWxlLCBhY3Rpb24gfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSwgMjAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGl0ZW0uY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVUYWcoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbmZpZy5maWxlLnRhZ3MgPSBbXTtcbiAgICAgIHRoaXMuY29uZmlnLmZpbGUudGFnSWQgPSBbXTtcbiAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuYWN0aW9uLlRBRztcbiAgICAgIHRoaXMuY29uZmlnLmZpbGUudGFnQ2hhbmdlZCA9IHRoaXMuY29uZmlnLmZpbGUuc2F2ZWRUYWcgPyB0cnVlIDogZmFsc2U7XG4gICAgICB0aGlzLmZpbGVBY3Rpb24uZW1pdCh7IGZpbGU6IHRoaXMuY29uZmlnLmZpbGUsIGFjdGlvbiB9KTtcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9LCAyMDApO1xuICB9XG5cbiAgcHVibGljIG9wZW5EZWxldGVQb3B1cChuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmRldGFpbHNEYXRhU2VydmljZS5zZXREb2N1bWVudE5hbWUobmFtZSk7XG4gICAgdGhpcy5pc0ZpbGVEZWxldGUgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIGhvdmVyRmlsZSgpOiB2b2lkIHtcbiAgICB0aGlzLmZpbGVIb3Zlci5lbWl0KHRoaXMuY29uZmlnLmZpbGUpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUhvdmVyKG1vZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuY29uZmlnLmZpbGUubGFzdEhvdmVyZWQgPSBtb2Q7XG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIGhvdmVyQXJyb3cobW9kOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5pc0Fycm93SG92ZXJlZCA9IG1vZDtcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgaWRlbnRpdHkoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwidGEtdXBsb2FkLWZpbGUtY29udGFpbmVyIGQtZ3JpZCB7eyBjb25maWcuY3VzdG9tQ2xhc3NOYW1lIH19XCJcbiAgW25nQ2xhc3NdPVwiXG4gICAgY29uZmlnXG4gICAgICB8IG5nQ2xhc3NQaXBlOiB0MiA6IGlzQXJyb3dIb3ZlcmVkIDogYW5ub3RhdGlvbkhvdmVyIDogcmV2aWV3RmlsZUNvbmZpZ1xuICBcIlxuPlxuICA8IS0tIEZpbGUgSGVhZGVyIEFjdGlvbnMgKG1vdXNlZW50ZXIpPVwiaG92ZXJGaWxlKClcIiAtLT5cblxuICA8IS0tIFJldmlldyBBY3Rpb25zIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwicmV2aWV3RmlsZUNvbmZpZy5pc1Jldmlld1wiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwidGEtdXBsb2FkLWZpbGUtaGVhZGVyLXJldmlldyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmV2aWV3RmlsZUNvbmZpZy5yZXZpZXdNb2RlID09PSAnUkVWSUVXX01PREUnXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBuZ2JUb29sdGlwXG4gICAgICAgICAgbWFpblRvb2x0aXA9XCJEb3dubG9hZFwiXG4gICAgICAgICAgdG9vbHRpcEJhY2tncm91bmQ9XCIjNmM2YzZjXCJcbiAgICAgICAgICBwb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgY2xhc3M9XCJ0YS11cGxvYWQtYWN0aW9uLWRvd25sb2FkLXJldmlldyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgICAgICAgIChjbGljayk9XCJvbkFjdGlvbihhY3Rpb24uRE9XTkxPQUQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzdmctaWNvbiBbc3JjXT1cImljb25zLmRvd25sb2FkXCI+PC9zdmctaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXZpZXdGaWxlQ29uZmlnLnJldmlld01vZGUgPT09ICdSRVZJRVdfTU9ERSdcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgICBtYWluVG9vbHRpcD1cIlxuICAgICAgICAgICAgY29uZmlnLmZpbGU/LmluY29ycmVjdCAmJiBpc0luY29ycmVjdE1hcmtIb3ZlclxuICAgICAgICAgICAgICA/ICdVbm1hcmsnXG4gICAgICAgICAgICAgIDogJ01hcmsgSW5jb3JyZWN0J1xuICAgICAgICAgIFwiXG4gICAgICAgICAgdG9vbHRpcEJhY2tncm91bmQ9XCJcbiAgICAgICAgICBjb25maWcuZmlsZT8uaW5jb3JyZWN0ICYmIGlzSW5jb3JyZWN0TWFya0hvdmVyID8gJyM2YzZjNmMnIDogJyNFRjUzNTAnXG4gICAgICAgICAgXCJcbiAgICAgICAgICBwb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgY2xhc3M9XCIge3tcbiAgICAgICAgICAgIGNvbmZpZy5maWxlPy5pbmNvcnJlY3QgJiYgaXNJbmNvcnJlY3RNYXJrSG92ZXJcbiAgICAgICAgICAgICAgPyAndGEtdXBsb2FkLWFjdGlvbi1tYXJrLWNvcnJlY3QnXG4gICAgICAgICAgICAgIDogJ3RhLXVwbG9hZC1hY3Rpb24tbWFyay1pbmNvcnJlY3QnXG4gICAgICAgICAgfX1cIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgaW5jb3JyZWN0OiBjb25maWcuZmlsZT8uaW5jb3JyZWN0IH1cIlxuICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgIG9uQWN0aW9uKFxuICAgICAgICAgICAgICBjb25maWcuZmlsZT8uaW5jb3JyZWN0ICYmIGlzSW5jb3JyZWN0TWFya0hvdmVyXG4gICAgICAgICAgICAgICAgPyAnbWFyay1jb3JyZWN0J1xuICAgICAgICAgICAgICAgIDogJ21hcmstaW5jb3JyZWN0J1xuICAgICAgICAgICAgKVxuICAgICAgICAgIFwiXG4gICAgICAgICAgKG1vdXNlZW50ZXIpPVwiaXNJbmNvcnJlY3RNYXJrSG92ZXIgPSB0cnVlXCJcbiAgICAgICAgICAobW91c2VsZWF2ZSk9XCJpc0luY29ycmVjdE1hcmtIb3ZlciA9IGZhbHNlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgY29uZmlnLmZpbGU/LmluY29ycmVjdCAmJiBpc0luY29ycmVjdE1hcmtIb3ZlclxuICAgICAgICAgICAgICAgID8gaWNvbnMuY29uZmlybVxuICAgICAgICAgICAgICAgIDogaWNvbnMuY2xvc2VcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS1DT01NRU5UIEZPUiBOT1cgLS0+XG5cbiAgICAgIDwhLS0gUmV2aWV3IE1lc3NhZ2UgLS0+XG4gICAgICA8IS0tIDxuZy1jb250YWluZXI+XG4gICAgICAgPGRpdiAqbmdJZj1cIlxuICAgICAgICAgICAgICAgIHJldmlld01vZGUgPT09ICdSRVZJRVdfTU9ERScgfHwgcmV2aWV3TW9kZSA9PT0gJ0ZFRURCQUNLX01PREUnXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgY2xhc3M9XCJyZXZpZXctZmVlZGJhY2stY29udGFpbmVyXCJcbiAgICAgICAgICAgIChtb3VzZWVudGVyKT1cImFubm90YXRpb25Ib3ZlciA9IHRydWVcIlxuICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwiYW5ub3RhdGlvbkhvdmVyID0gZmFsc2VcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8YXBwLWFwcGxpY2FudC1yZXZpZXctZmVlZGJhY2tcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZG9jdW1lbnRSZXZpZXdJbnB1dENvbnRyb2xcIlxuICAgICAgICAgICAgICAgIFtkaXNwbGF5QW5ub3RhdGlvbkJ1dHRvbl09XCJcbiAgICAgICAgICAgICAgICAgICAgZmlsZT8uaW5jb3JyZWN0ICYmICFkb2N1bWVudFJldmlld0lucHV0VmlzaWJsZVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgW2Rpc3BsYXlBbm5vdGF0aW9uVGV4dEFyZWFdPVwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGU/LmluY29ycmVjdCAmJiBkb2N1bWVudFJldmlld0lucHV0VmlzaWJsZVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgW2lzRmVlZGJhY2tdPVwicmV2aWV3TW9kZSA9PT0gJ0ZFRURCQUNLX01PREUnXCJcbiAgICAgICAgICAgICAgICBbZmVlZGJhY2tUZXh0XT1cImZlZWRiYWNrVGV4dFwiXG4gICAgICAgICAgICAgICAgKGFubm90YXRpb25CdG5DbGlja0V2ZW50KT1cImdldEFubm90YXRpb25SZXZpZXdFdmVudCgkZXZlbnQpXCJcbiAgICAgICAgICAgID48L2FwcC1hcHBsaWNhbnQtcmV2aWV3LWZlZWRiYWNrPlxuICAgICAgICA8L2Rpdj4gXG4gICAgICA8L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gTm8gUmV2aWV3IEFjdGlvbnMgLS0+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIlxuICAgICAgIWlzRmlsZURlbGV0ZSAmJlxuICAgICAgKCFyZXZpZXdGaWxlQ29uZmlnLmlzUmV2aWV3IHx8XG4gICAgICAgIChyZXZpZXdGaWxlQ29uZmlnLmlzUmV2aWV3ICYmXG4gICAgICAgICAgcmV2aWV3RmlsZUNvbmZpZy5yZXZpZXdNb2RlID09PSAnRkVFREJBQ0tfTU9ERScpKVxuICAgIFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwidGEtdXBsb2FkLWZpbGUtaGVhZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgPCEtLSBMZWZ0IFNpZGUgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLmN1c3RvbUNsYXNzTmFtZSA9PT0gJ2NvbXBhbnktZG9jdW1lbnRzJ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHRzaWRlX2JhclwiPjwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLmN1c3RvbUNsYXNzTmFtZSAhPT0gJ2NvbXBhbnktZG9jdW1lbnRzJ1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJ0YS11cGxvYWQtZmlsZS1hY3Rpb24tbGVmdHNpZGUgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICduby1hY3Rpb24tdGFnJzogIWNvbmZpZy5oYXNUYWdzRHJvcGRvd24sXG4gICAgICAgICAgICBhY3RpdmU6IHQyPy5pc09wZW4oKSxcbiAgICAgICAgICB9XCJcbiAgICAgICAgICAjdDI9XCJuZ2JQb3BvdmVyXCJcbiAgICAgICAgICBbbmdiUG9wb3Zlcl09XCJ0YWdzUG9wb3ZlclwiXG4gICAgICAgICAgW3BvcG92ZXJDbGFzc109XCIndGFnc19wb3BvdmVyJ1wiXG4gICAgICAgICAgW3BsYWNlbWVudF09XCIncmlnaHQtdG9wIHJpZ2h0LWJvdHRvbSdcIlxuICAgICAgICAgIGF1dG9jbG9zZT1cIm91dHNpZGVcIlxuICAgICAgICAgIFtjb250YWluZXJdPVwiJ2JvZHknXCJcbiAgICAgICAgICB0cmlnZ2Vycz1cIidtYW51YWwnXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgICAgIG1haW5Ub29sdGlwPVwiVGFnXCJcbiAgICAgICAgICAgIHRvb2x0aXBCYWNrZ3JvdW5kPVwiIzJGMkYyRlwiXG4gICAgICAgICAgICBwb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgICBjbGFzcz1cInRhLXVwbG9hZC1hY3Rpb24tdGFnIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25BY3Rpb24oYWN0aW9uLlRBRylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzdmctaWNvbiBbc3JjXT1cImljb25zLnRhZ1wiPjwvc3ZnLWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8IS0tIFJpZ2h0IFNpZGUgLS0+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcmV2aWV3RmlsZUNvbmZpZy5pc0FjdGlvbnNIaWRkZW5cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwidGEtdXBsb2FkLWZpbGUtYWN0aW9uLXJpZ2h0c2lkZSBkLWZsZXgganVzdGlmeS1jb250ZW50LWFyb3VuZCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICdmZWVkYmFjay1tb2RlJzpcbiAgICAgICAgICAgICAgcmV2aWV3RmlsZUNvbmZpZy5pc1JldmlldyAmJlxuICAgICAgICAgICAgICByZXZpZXdGaWxlQ29uZmlnLnJldmlld01vZGUgPT09ICdGRUVEQkFDS19NT0RFJyxcbiAgICAgICAgICAgIHNtYWxsOlxuICAgICAgICAgICAgICBjb25maWcudHlwZSA9PT0gJ2RldGFpbHMnIHx8XG4gICAgICAgICAgICAgIGNvbmZpZy50eXBlID09PSAndG9kbycgfHxcbiAgICAgICAgICAgICAgcmV2aWV3RmlsZUNvbmZpZy5yZXZpZXdNb2RlID09ICdSRVZJRVdfTU9ERScsXG4gICAgICAgICAgICAndmVydGljYWwtbW9kZSc6IGNvbmZpZy5jdXN0b21DbGFzc05hbWUgPT0gJ2NvbXBhbnktZG9jdW1lbnRzJyxcbiAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcuY3VzdG9tQ2xhc3NOYW1lID09ICdjb21wYW55LWRvY3VtZW50cydcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgI3QyPVwibmdiUG9wb3ZlclwiXG4gICAgICAgICAgICAgIFtuZ2JQb3BvdmVyXT1cInRhZ3NQb3BvdmVyXCJcbiAgICAgICAgICAgICAgW3BvcG92ZXJDbGFzc109XCIndGFnc19wb3BvdmVyX3ZlcnRpY2FsJ1wiXG4gICAgICAgICAgICAgIFtwbGFjZW1lbnRdPVwiJ2JvdHRvbS1sZWZ0J1wiXG4gICAgICAgICAgICAgIGF1dG9jbG9zZT1cIm91dHNpZGVcIlxuICAgICAgICAgICAgICBbY29udGFpbmVyXT1cIidib2R5J1wiXG4gICAgICAgICAgICAgIHRyaWdnZXJzPVwiJ21hbnVhbCdcIlxuICAgICAgICAgICAgICBuZ2JUb29sdGlwXG4gICAgICAgICAgICAgIG1haW5Ub29sdGlwPVwiVGFnXCJcbiAgICAgICAgICAgICAgdG9vbHRpcEJhY2tncm91bmQ9XCIjMkYyRjJGXCJcbiAgICAgICAgICAgICAgcG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgICBjbGFzcz1cInRhLXVwbG9hZC1hY3Rpb24tdGFnIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiB0Mj8uaXNPcGVuKCkgfVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkFjdGlvbihhY3Rpb24uVEFHKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzdmctaWNvbiBbc3JjXT1cImljb25zLnRhZ1wiPjwvc3ZnLWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBuZ2JUb29sdGlwXG4gICAgICAgICAgICBtYWluVG9vbHRpcD1cIkRvd25sb2FkXCJcbiAgICAgICAgICAgIHRvb2x0aXBCYWNrZ3JvdW5kPVwiIzJGMkYyRlwiXG4gICAgICAgICAgICBwb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgICBjbGFzcz1cInRhLXVwbG9hZC1hY3Rpb24tZG93bmxvYWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uKGFjdGlvbi5ET1dOTE9BRClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzdmctaWNvbiBbc3JjXT1cImljb25zLmRvd25sb2FkXCI+PC9zdmctaWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICBjb25maWcudHlwZSAhPSAnZGV0YWlscycgJiZcbiAgICAgICAgICAgICAgY29uZmlnLnR5cGUgIT0gJ3RvZG8nICYmXG4gICAgICAgICAgICAgIHJldmlld0ZpbGVDb25maWcucmV2aWV3TW9kZSAhPSAnUkVWSUVXX01PREUnXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcuZmlsZT8uZmlsZU5hbWVcIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgICAgICAgICBtYWluVG9vbHRpcD1cIkRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgdG9vbHRpcEJhY2tncm91bmQ9XCIjRUY1MzUwXCJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YS11cGxvYWQtYWN0aW9uLWRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgY29uZmlnLmZpbGUuZmlsZU5hbWVcbiAgICAgICAgICAgICAgICAgICAgPyBvcGVuRGVsZXRlUG9wdXAoY29uZmlnLmZpbGUuZmlsZU5hbWUpXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3ZnLWljb24gW3NyY109XCJpY29ucy50cmFzaFwiPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgcmV2aWV3RmlsZUNvbmZpZy5pc1JldmlldyAmJlxuICAgICAgICAgIHJldmlld0ZpbGVDb25maWcucmV2aWV3TW9kZSA9PT0gJ0ZFRURCQUNLX01PREUnXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBuZ2JUb29sdGlwXG4gICAgICAgICAgbWFpblRvb2x0aXA9XCJNYXJrZWQgSW5jb3JyZWN0XCJcbiAgICAgICAgICB0b29sdGlwQmFja2dyb3VuZD1cIiNFRjUzNTBcIlxuICAgICAgICAgIHBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICBjbGFzcz1cInRhLXVwbG9hZC1hY3Rpb24tZmVlZGJhY2staW5jb3JyZWN0LW1hcmsgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAoY2xpY2spPVwib25BY3Rpb24oYWN0aW9uLk1BUktfSU5DT1JSRUNUKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3ZnLWljb24gW3NyY109XCJpY29ucy5jbG9zZVwiPjwvc3ZnLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gRmlsZSBDb250ZW50IC0tPlxuICA8ZGl2IGNsYXNzPVwidGEtdXBsb2FkLWZpbGUtY29udGVudCAge3sgY29uZmlnLmN1c3RvbUNsYXNzTmFtZSB9fVwiPlxuICAgIDwhLS0gUGRmIENvbnRlbnQgLS0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgKGNvbmZpZy5maWxlPy5leHRlbnNpb24/LnRvTG93ZXJDYXNlKCkgPT09ICdwZGYnIHx8XG4gICAgICAgICAgZmlsZUV4dGVuc2lvbiA9PT0gJ3BkZicpICYmXG4gICAgICAgIGNvbmZpZy5maWxlPy51cmxcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPHBkZi12aWV3ZXJcbiAgICAgICAgW3NyY109XCJjb25maWcuZmlsZS51cmxcIlxuICAgICAgICBbKHBhZ2UpXT1cImNvbmZpZy5hY3RpdmVQYWdlXCJcbiAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBibG9jazsgaGVpZ2h0OiAxMDAlOyB3aWR0aDogMTAwJVwiXG4gICAgICAgIFtyb3RhdGlvbl09XCIwXCJcbiAgICAgICAgW29yaWdpbmFsLXNpemVdPVwiZmFsc2VcIlxuICAgICAgICBbc2hvdy1hbGxdPVwidHJ1ZVwiXG4gICAgICAgIFtmaXQtdG8tcGFnZV09XCJmYWxzZVwiXG4gICAgICAgIFt6b29tXT1cIjFcIlxuICAgICAgICBbem9vbS1zY2FsZV09XCIncGFnZS13aWR0aCdcIlxuICAgICAgICBbc3RpY2stdG8tcGFnZV09XCJmYWxzZVwiXG4gICAgICAgIFtyZW5kZXItdGV4dF09XCJ0cnVlXCJcbiAgICAgICAgW2V4dGVybmFsLWxpbmstdGFyZ2V0XT1cIidibGFuaydcIlxuICAgICAgICBbYXV0b3Jlc2l6ZV09XCJ0cnVlXCJcbiAgICAgICAgW3Nob3ctYm9yZGVyc109XCJmYWxzZVwiXG4gICAgICAgIChhZnRlci1sb2FkLWNvbXBsZXRlKT1cImFmdGVyTG9hZENvbXBsZXRlKCRldmVudClcIlxuICAgICAgICAocGFnZS1yZW5kZXJlZCk9XCJwYWdlUmVuZGVyZWQoJGV2ZW50KVwiXG4gICAgICA+PC9wZGYtdmlld2VyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSBJbWFnZSBDb250ZW50IC0tPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiaW1hZ2VfbWFpbl9ob2xkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHt7XG4gICAgICAgIGNvbmZpZy5jdXN0b21DbGFzc05hbWVcbiAgICAgIH19XCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgY29uZmlnLmZpbGU/LmV4dGVuc2lvbj8udG9Mb3dlckNhc2UoKSAhPT0gJ3BkZicgJiZcbiAgICAgICAgICBmaWxlRXh0ZW5zaW9uICE9PSAncGRmJyAmJlxuICAgICAgICAgIGNvbmZpZy5maWxlPy51cmxcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGltZ1xuICAgICAgICAgIGNsYXNzPVwidGEtdXBsb2FkLWZpbGUtaW1hZ2VcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgIGRldGFpbHNfaW1hZ2U6IGNvbmZpZy50eXBlID09PSAnZGV0YWlscycgfHwgY29uZmlnLnR5cGUgPT09ICd0b2RvJyxcbiAgICAgICAgICB9XCJcbiAgICAgICAgICBbc3JjXT1cImNvbmZpZy5maWxlLnVybFwiXG4gICAgICAgICAgW2FsdF09XCJjb25maWcuZmlsZT8uZmlsZU5hbWVcIlxuICAgICAgICAvPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZG9jdW1lbnRMb2FkaW5nXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyXCI+XG4gICAgICAgICAgPGFwcC1jYS1zcGlubmVyXG4gICAgICAgICAgICBbc2l6ZV09XCInc21hbGwnXCJcbiAgICAgICAgICAgIFtjb2xvcl09XCInYmx1ZURhcmsnXCJcbiAgICAgICAgICA+PC9hcHAtY2Etc3Bpbm5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gVGFnIENvbnRlbnQgLS0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgKGNvbmZpZy5oYXNUYWdzRHJvcGRvd24gfHxcbiAgICAgICAgICBjb25maWcuY3VzdG9tQ2xhc3NOYW1lID09PSAndGFibGUtZGV0YWlscycgfHxcbiAgICAgICAgICBjb25maWcuY3VzdG9tQ2xhc3NOYW1lID09PSAnZHJpdmVyLWNhcmQtcGRmJykgJiZcbiAgICAgICAgY29uZmlnLmZpbGU/LnRhZ3MgJiZcbiAgICAgICAgY29uZmlnLmZpbGU/LnRhZ3MgIT09ICcnICYmXG4gICAgICAgIGNvbmZpZy5maWxlPy50YWdzICE9PSAnTm8gVGFnJ1xuICAgICAgXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidGEtdXBsb2FkLWZpbGUtdGFnXCJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgIGRlZmF1bHQ6ICFjb25maWcuZmlsZT8udGFnR2VuZXJhdGVkQnlVc2VyLFxuICAgICAgICAgIHRhZ1JlbW92aW5nOiBjb25maWcuZmlsZT8udGFncy5sZW5ndGggPT09IDAsXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICA8c3Bhbj57e1xuICAgICAgICAgIGNvbmZpZy5maWxlPy50YWdzIHx8IHJldmlld0ZpbGVDb25maWcuY2F0ZWdvcnlUYWcgfHwgJydcbiAgICAgICAgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBGaWxlIERlbGV0ZSBUZW1wbGF0ZSAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRmlsZURlbGV0ZVwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwidGEtdXBsb2FkLWZpbGUtZGVsZXRlLXRlbXBsYXRlIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW4ge3tcbiAgICAgICAgY29uZmlnLmN1c3RvbUNsYXNzTmFtZVxuICAgICAgfX1cIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0YS11cGxvYWQtZmlsZS1kZWxldGUtdGV4dFwiPlxuICAgICAgICBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIGZpbGU/XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ0YS11cGxvYWQtZmlsZS1idG4gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHRhLXVwbG9hZC1maWxlLWJ0bi1kZWxldGVcIlxuICAgICAgICAoY2xpY2spPVwib25BY3Rpb24oYWN0aW9uLkRFTEVURSlcIlxuICAgICAgPlxuICAgICAgICBERUxFVEVcbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInRhLXVwbG9hZC1maWxlLWJ0biBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgdGEtdXBsb2FkLWZpbGUtYnRuLWNhbmNlbFwiXG4gICAgICAgIChjbGljayk9XCJvbkFjdGlvbihhY3Rpb24uQ0FOQ0VMKVwiXG4gICAgICA+XG4gICAgICAgIENBTkNFTFxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gRmlsZSBGb290ZXIgSW5mb3JtYXRpb24gLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcmV2aWV3RmlsZUNvbmZpZy5pc0Zvb3RlckhpZGRlblwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwidGEtdXBsb2FkLWZpbGUtZm9vdGVyXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2VkaXQtbW9kZSc6IGVkaXRGaWxlIH1cIlxuICAgICAgKGNsaWNrKT1cIm9uRWRpdEZpbGUoKVwiXG4gICAgPlxuICAgICAgPCEtLSBObyBlZGl0IG1vZGUgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzRmlsZURlbGV0ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyX2luZm8gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwidGEtdXBsb2FkLWZpbGUtZXh0IHRhLXVwbG9hZC1maWxlLWV4dC17e1xuICAgICAgICAgICAgICBjb25maWcuZmlsZT8uZXh0ZW5zaW9uID8gKGNvbmZpZy5maWxlPy5leHRlbnNpb24gfCBsb3dlcmNhc2UpIDogJydcbiAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ25vLXRhZyc6ICFjb25maWcuZmlsZT8udGFncyB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICB7eyBjb25maWcuZmlsZT8uZXh0ZW5zaW9uIHwgdXBwZXJjYXNlIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnRfaW5mb19ob2xkIGQtZmxleFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm51bWJlck9mRmlsZVBhZ2VzXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZGZfcGFnZV9zaXplXCI+XG4gICAgICAgICAgICAgICAge3sgbnVtYmVyT2ZGaWxlUGFnZXMgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImZpbGVfc2l6ZVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICBoYXNfcGFnZXM6IG51bWJlck9mRmlsZVBhZ2VzLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgY29uZmlnLmZpbGU/LnNpemUgfHwgMCB8IGJ5dGVDb252ZXJ0IH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZWRpdEZpbGU7IGVsc2UgZWRpdE1vZGVcIj5cbiAgICAgICAgPHBcbiAgICAgICAgICBjbGFzcz1cInRhLXVwbG9hZC1maWxlLW5hbWVcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgIGRldGFpbHNfdGl0bGU6IGNvbmZpZy50eXBlID09PSAnZGV0YWlscycsXG4gICAgICAgICAgICB0b2RvX3RpdGxlOiBjb25maWcudHlwZSA9PT0gJ3RvZG8nLFxuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZmlsZU5hbWUgfX1cbiAgICAgICAgPC9wPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZWRpdE1vZGU+XG4gICAgICAgIDxhcHAtY2EtaW5wdXRcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZmlsZU5ld05hbWVcIlxuICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJ7XG4gICAgICAgICAgICBuYW1lOiAnRmlsZSBOYW1lJyxcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnVHlwZSBGaWxlIE5hbWUnLFxuICAgICAgICAgICAgYmxhY2tJbnB1dDogdHJ1ZSxcbiAgICAgICAgICAgIGlzRGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cIlxuICAgICAgICAgIChibHVySW5wdXQpPVwib25CbHVySW5wdXQoJGV2ZW50KVwiXG4gICAgICAgID48L2FwcC1jYS1pbnB1dD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjdGFnc1BvcG92ZXIgbGV0LWRhdGE9XCJkYXRhXCI+XG4gIDxkaXYgY2xhc3M9XCJ0YWdzX21haW5faG9sZGVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5maWxlPy50YWdzPy5sZW5ndGhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZW1vdmVfdGFnX2hvbGRlclwiIChjbGljayk9XCJyZW1vdmVUYWcoKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVtb3ZlX3RhZ1wiPlJlbW92ZSBUYWc8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcuZmlsZT8udGFncz8ubGVuZ3RoXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicmVtb3ZlX3RhZ19ib3JkZXJfaG9sZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZW1vdmVfdGFnX2JvcmRlclwiPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy50YWdzT3B0aW9ucyAmJiBjb25maWcudGFnc09wdGlvbnMubGVuZ3RoXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0Zvcj1cImxldCB0YWcgb2YgY29uZmlnLnRhZ3NPcHRpb25zOyB0cmFja0J5OiBpZGVudGl0eTsgaW5kZXggYXMgaVwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInRhZ3NfaW5uZXJfaG9sZGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgIGZpcnN0Um93OiBpID09PSAwLFxuICAgICAgICAgICAgbGFzdFJvdzogaSA9PT0gY29uZmlnLnRhZ3NPcHRpb25zLmxlbmd0aCAtIDEsXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFRhZyh0YWc/LnRhZ05hbWUpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWdfb3B0aW9uc19ob2xkZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhZ19uYW1lXCIgW25nQ2xhc3NdPVwieyBjaGVja2VkOiB0YWcuY2hlY2tlZCB9XCI+XG4gICAgICAgICAgICAgIHt7IHRhZy50YWdOYW1lIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2VkX2ljb25cIiBbbmdDbGFzc109XCJ7IHNob3duOiB0YWcuY2hlY2tlZCB9XCI+XG4gICAgICAgICAgICAgIDxzdmctaWNvbiBbc3JjXT1cImljb25zLmNvbmZpcm1cIj48L3N2Zy1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
354
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtdXBsb2FkLWZpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtdXBsb2FkLWZpbGVzL2NvbXBvbmVudHMvY2EtdXBsb2FkLWZpbGUvY2EtdXBsb2FkLWZpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtdXBsb2FkLWZpbGVzL2NvbXBvbmVudHMvY2EtdXBsb2FkLWZpbGUvY2EtdXBsb2FkLWZpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdILFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbkUsT0FBTyxFQUFvQixlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUNILFNBQVMsRUFFVCxnQkFBZ0IsRUFDaEIsVUFBVSxHQUNiLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV6QyxZQUFZO0FBQ1osT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUs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cnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBQREZEb2N1bWVudFByb3h5LCBQZGZWaWV3ZXJNb2R1bGUgfSBmcm9tICduZzItcGRmLXZpZXdlcic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQW5ndWxhclN2Z0ljb25Nb2R1bGUgfSBmcm9tICdhbmd1bGFyLXN2Zy1pY29uJztcbmltcG9ydCB7XG4gICAgTmdiTW9kdWxlLFxuICAgIE5nYlBvcG92ZXIsXG4gICAgTmdiUG9wb3Zlck1vZHVsZSxcbiAgICBOZ2JUb29sdGlwLFxufSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBOZ3hNYXNrTW9kdWxlIH0gZnJvbSAnbmd4LW1hc2snO1xuXG4vL0NvbXBvbmVudHNcbmltcG9ydCB7IENhSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jYS1pbnB1dC9jYS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY2Etc3Bpbm5lci9jYS1zcGlubmVyLmNvbXBvbmVudCc7XG5cbi8vTW9kZWxzXG5pbXBvcnQge1xuICAgIERvY3VtZW50UmV2aWV3SW5wdXRFdmVudCxcbiAgICBGaWxlT3B0aW9uQ29uZmlnLFxuICAgIFJldmlld0ZpbGVDb25maWcsXG59IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBEZWxldGVBY3Rpb24sIEZpbGVBY3Rpb25FdmVudCB9IGZyb20gJy4vbW9kZWxzJztcblxuLy9FbnVtc1xuaW1wb3J0IHsgRG9jdW1lbnRBY3Rpb24gfSBmcm9tICcuL2VudW1zJztcblxuLy9QaXBlc1xuaW1wb3J0IHtcbiAgICBCeXRlQ29udmVydFBpcGUsXG4gICAgRmlsZU5hbWVQaXBlLFxuICAgIFVybEV4dGVuc2lvblBpcGUsXG4gICAgTmdDbGFzc1BpcGUsXG59IGZyb20gJy4vcGlwZXMnO1xuXG4vL1NlcnZpY2VzXG5pbXBvcnQgeyBEb2N1bWVudFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzJztcblxuLy9Sb3V0ZXNcbmltcG9ydCB7IFVwbG9hZEZpbGVSb3V0ZXMgfSBmcm9tICcuL3V0aWxzL3N2Zy1yb3V0ZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnYXBwLWNhLXVwbG9hZC1maWxlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2EtdXBsb2FkLWZpbGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NhLXVwbG9hZC1maWxlLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgaW1wb3J0czogW1xuICAgICAgICAvLyBtb2R1bGVzXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgTmdiVG9vbHRpcCxcbiAgICAgICAgTmdiTW9kdWxlLFxuICAgICAgICBOZ2JQb3BvdmVyTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBBbmd1bGFyU3ZnSWNvbk1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIE5neE1hc2tNb2R1bGUsXG4gICAgICAgIC8vIHBpcGVzXG4gICAgICAgIEJ5dGVDb252ZXJ0UGlwZSxcbiAgICAgICAgUGRmVmlld2VyTW9kdWxlLFxuICAgICAgICBOZ0NsYXNzUGlwZSxcbiAgICAgICAgLy9jb21wb25lbnRzXG4gICAgICAgIENhU3Bpbm5lckNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dENvbXBvbmVudCxcbiAgICBdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkLFxufSlcbmV4cG9ydCBjbGFzcyBDYVVwbG9hZEZpbGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICAgIEBWaWV3Q2hpbGQoJ3QyJykgdDIhOiBOZ2JQb3BvdmVyO1xuICAgIEBWaWV3Q2hpbGQoQ2FJbnB1dENvbXBvbmVudCkgaW5wdXRSZWYhOiBDYUlucHV0Q29tcG9uZW50O1xuXG4gICAgQElucHV0KCkgY29uZmlnITogRmlsZU9wdGlvbkNvbmZpZztcbiAgICBASW5wdXQoKSByZXZpZXdGaWxlQ29uZmlnITogUmV2aWV3RmlsZUNvbmZpZztcblxuICAgIEBPdXRwdXQoKSBmaWxlQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlQWN0aW9uRXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIGRlbGV0ZUFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8RGVsZXRlQWN0aW9uPigpO1xuICAgIEBPdXRwdXQoKSBkb2N1bWVudFJldmlld0lucHV0RXZlbnQgPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPERvY3VtZW50UmV2aWV3SW5wdXRFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgbGFuZHNjYXBlQ2hlY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIGZpbGVIb3ZlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHB1YmxpYyBmaWxlTmV3TmFtZTogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgICBwdWJsaWMgZG9jdW1lbnRSZXZpZXdJbnB1dENvbnRyb2w6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKG51bGwpO1xuICAgIHB1YmxpYyBlZGl0RmlsZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBpc0ZpbGVEZWxldGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgZG9jdW1lbnRSZXZpZXdJbnB1dFZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgaXNJbmNvcnJlY3RNYXJrSG92ZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgYW5ub3RhdGlvbkhvdmVyOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGRvY3VtZW50TG9hZGluZzogYm9vbGVhbiA9IHRydWU7XG4gICAgcHVibGljIGlzQXJyb3dIb3ZlcmVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGZpbGVFeHRlbnNpb246IHN0cmluZyA9ICcnO1xuICAgIHB1YmxpYyBudW1iZXJPZkZpbGVQYWdlczogc3RyaW5nID0gJyc7XG4gICAgcHVibGljIGZpbGVOYW1lOiBzdHJpbmcgPSAnJztcbiAgICBwdWJsaWMgaWNvbnMgPSBVcGxvYWRGaWxlUm91dGVzLmljb25zO1xuXG4gICAgcHVibGljIGFjdGlvbiA9IERvY3VtZW50QWN0aW9uO1xuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICAgICAgcHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmLFxuXG4gICAgICAgIC8vUGlwZVxuICAgICAgICBwcml2YXRlIHVybEV4dDogVXJsRXh0ZW5zaW9uUGlwZSxcbiAgICAgICAgcHJpdmF0ZSBmaWxlTmFtZVBpcGU6IEZpbGVOYW1lUGlwZSxcblxuICAgICAgICAvL1NlcnZpY2VcbiAgICAgICAgcHJpdmF0ZSBkZXRhaWxzRGF0YVNlcnZpY2U6IERvY3VtZW50U2VydmljZVxuICAgICkge31cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5nZXRmaWxlTmFtZSgpO1xuXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUZpbGVFeHRlbnNpb24oKTtcblxuICAgICAgICB0aGlzLm9uU3Bpbm5lcigpO1xuXG4gICAgICAgIHRoaXMucmV2aWV3SW5wdXRDb250cm9sQ2hhbmdlKCk7XG5cbiAgICAgICAgdGhpcy5zZXRTYXZlZFRhZygpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRUYWdzKCk7XG4gICAgICAgIHRoaXMuc2V0Q2F0ZWdvcnlUYWcoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVGaWxlRXh0ZW5zaW9uKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jb25maWcuZmlsZSAmJiB0aGlzLmNvbmZpZy5maWxlLmZpbGVOYW1lKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVFeHRlbnNpb24gPSB0aGlzLnVybEV4dC50cmFuc2Zvcm0oXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcuZmlsZS5maWxlTmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvblNwaW5uZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlzTm90UGRmID1cbiAgICAgICAgICAgICh0aGlzLmNvbmZpZy5maWxlLmV4dGVuc2lvbiB8fFxuICAgICAgICAgICAgICAgIHRoaXMudXJsRXh0LnRyYW5zZm9ybSh0aGlzLmNvbmZpZy5maWxlLnVybCkpICE9PSAncGRmJztcbiAgICAgICAgdGhpcy5kb2N1bWVudExvYWRpbmcgPSAhaXNOb3RQZGY7XG4gICAgfVxuXG4gICAgcHVibGljIGdldGZpbGVOYW1lKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jb25maWcuZmlsZS5maWxlTmFtZSlcbiAgICAgICAgICAgIHRoaXMuZmlsZU5hbWUgPSB0aGlzLmZpbGVOYW1lUGlwZS50cmFuc2Zvcm0oXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcuZmlsZS5maWxlTmFtZVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25CbHVySW5wdXQoZXZlbnQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmVkaXRGaWxlID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAodGhpcy5maWxlTmV3TmFtZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmZpbGUuZmlsZU5hbWUgPSB0aGlzLmZpbGVOYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy9wZGZcbiAgICBwdWJsaWMgYWZ0ZXJMb2FkQ29tcGxldGUocGRmOiBQREZEb2N1bWVudFByb3h5KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnRMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IG51bWJlclBhZ2VzID0gcGRmLl9wZGZJbmZvLm51bVBhZ2VzO1xuXG4gICAgICAgIHRoaXMubnVtYmVyT2ZGaWxlUGFnZXMgPSBgJHtudW1iZXJQYWdlc30gJHtcbiAgICAgICAgICAgIG51bWJlclBhZ2VzID09PSAxID8gJ1BBR0UnIDogJ1BBR0VTJ1xuICAgICAgICB9YDtcblxuICAgICAgICBpZiAoIXRoaXMuY29uZmlnLmZpbGUuZXh0ZW5zaW9uICYmIHRoaXMuY29uZmlnLmZpbGUuZmlsZU5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZUV4dGVuc2lvbiA9IHRoaXMudXJsRXh0LnRyYW5zZm9ybShcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5maWxlLmZpbGVOYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHBhZ2VSZW5kZXJlZChcbiAgICAgICAgZXZlbnQ6IGFueSAvLyBsZWF2ZSBhbnkgZm9yIG5vd1xuICAgICk6IHZvaWQge1xuICAgICAgICBjb25zdCBwZGY6IHtcbiAgICAgICAgICAgIHBhZ2VOdW1iZXI6IG51bWJlcjtcbiAgICAgICAgICAgIHNvdXJjZTogeyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9O1xuICAgICAgICB9ID0gZXZlbnQ7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5jb25maWcuaGFzTGFuZHNjYXBlT3B0aW9uICYmXG4gICAgICAgICAgICBwZGYucGFnZU51bWJlciA9PT0gMSAmJlxuICAgICAgICAgICAgcGRmLnNvdXJjZS53aWR0aCA+IHBkZi5zb3VyY2UuaGVpZ2h0XG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5sYW5kc2NhcGVDaGVjay5lbWl0KHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHB1YmxpYyBvbkFjdGlvbihhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmRldGFpbHNEYXRhU2VydmljZS5zZXREb2N1bWVudE5hbWUodGhpcy5maWxlTmFtZSk7XG4gICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICAgICAgICBjYXNlIERvY3VtZW50QWN0aW9uLlRBRzpcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVRhZ0FjdGlvbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBEb2N1bWVudEFjdGlvbi5ET1dOTE9BRDpcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZURvd25sb2FkQWN0aW9uKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIERvY3VtZW50QWN0aW9uLkRFTEVURTpcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZURlbGV0ZUFjdGlvbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBEb2N1bWVudEFjdGlvbi5DQU5DRUw6XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVDYW5jZWxBY3Rpb24oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRG9jdW1lbnRBY3Rpb24uTUFSS19JTkNPUlJFQ1Q6XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVNYXJrSW5jb3JyZWN0QWN0aW9uKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIERvY3VtZW50QWN0aW9uLk1BUktfQ09SUkVDVDpcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZU1hcmtDb3JyZWN0QWN0aW9uKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVUYWdBY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5maWxlLnRhZ3MpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0VGFnKHRoaXMuY29uZmlnLmZpbGUudGFncyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdFRhZygnTm8gVGFnJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50Mi5vcGVuKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVEb3dubG9hZEFjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kb3dubG9hZEZpbGUodGhpcy5jb25maWcuZmlsZS51cmwsIHRoaXMuZmlsZU5hbWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlRGVsZXRlQWN0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzRmlsZURlbGV0ZSA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuZmlsZUFjdGlvbi5lbWl0KHtcbiAgICAgICAgICAgIGZpbGU6IHRoaXMuY29uZmlnLmZpbGUsXG4gICAgICAgICAgICBhY3Rpb246IERvY3VtZW50QWN0aW9uLkRFTEVURSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVDYW5jZWxBY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNGaWxlRGVsZXRlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVNYXJrSW5jb3JyZWN0QWN0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbmZpZy5maWxlLmluY29ycmVjdCA9IHRydWU7XG4gICAgICAgIHRoaXMuZmlsZUFjdGlvbi5lbWl0KHtcbiAgICAgICAgICAgIGZpbGU6IHRoaXMuY29uZmlnLmZpbGUsXG4gICAgICAgICAgICBhY3Rpb246IERvY3VtZW50QWN0aW9uLk1BUktfSU5DT1JSRUNULFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZU1hcmtDb3JyZWN0QWN0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbmZpZy5maWxlLmluY29ycmVjdCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZpbGVBY3Rpb24uZW1pdCh7XG4gICAgICAgICAgICBmaWxlOiB0aGlzLmNvbmZpZy5maWxlLFxuICAgICAgICAgICAgYWN0aW9uOiBEb2N1bWVudEFjdGlvbi5NQVJLX0NPUlJFQ1QsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRvY3VtZW50UmV2aWV3SW5wdXRWaXNpYmxlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGRvd25sb2FkRmlsZSh1cmw6IHN0cmluZywgZmlsZW5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmh0dHAuZ2V0KHVybCwgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9KS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAoYmxvYjogQmxvYikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2JqZWN0VXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICAgICAgICBhLmhyZWYgPSBvYmplY3RVcmw7XG4gICAgICAgICAgICAgICAgYS5kb3dubG9hZCA9IGZpbGVuYW1lO1xuICAgICAgICAgICAgICAgIGEuY2xpY2soKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBkb3dubG9hZGluZyBmaWxlOicsIGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25FZGl0RmlsZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5jb25maWcuY3VzdG9tQ2xhc3NOYW1lICE9PSAnZHJpdmVyLWRldGFpbHMtcGRmJyAmJlxuICAgICAgICAgICAgdGhpcy5jb25maWcuY3VzdG9tQ2xhc3NOYW1lICE9PSAnbGFuZHNjYXBlLWRldGFpbHMtdmlldycgJiZcbiAgICAgICAgICAgIHRoaXMucmV2aWV3RmlsZUNvbmZpZy5yZXZpZXdNb2RlICE9PSAnUkVWSUVXX01PREUnICYmXG4gICAgICAgICAgICAhdGhpcy5pbnB1dFJlZj8uaXNGb2N1c0lucHV0XG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5lZGl0RmlsZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmZpbGVOZXdOYW1lLnBhdGNoVmFsdWUodGhpcy5maWxlTmFtZSk7XG4gICAgICAgICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5wdXQgPSB0aGlzLmlucHV0UmVmLmlucHV0Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uRW5kID0gaW5wdXQudmFsdWUubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSkge1xuICAgICAgICAgICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb25FbmQsIHNlbGVjdGlvbkVuZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGZvY3VzVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpbnB1dC5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoZm9jdXNUaW1lb3V0KTtcbiAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJldmlld0lucHV0Q29udHJvbENoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmV2aWV3RmlsZUNvbmZpZy5pc1Jldmlldykge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudFJldmlld0lucHV0Q29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTUwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudFJldmlld0lucHV0RXZlbnQuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlOiB0aGlzLmNvbmZpZy5maWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFubm90YXRpb25SZXZpZXdFdmVudChldmVudDogeyB0eXBlOiBzdHJpbmcgfSk6IHZvaWQge1xuICAgICAgICB0aGlzLmRvY3VtZW50UmV2aWV3SW5wdXRWaXNpYmxlID0gZXZlbnQudHlwZSA9PT0gJ29wZW4nO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRUYWdzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jb25maWcuaGFzVGFnc0Ryb3Bkb3duICYmIHRoaXMuY29uZmlnLnRhZ3M/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5jb25maWcudGFncy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaXRlbSA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLnRhZ3NPcHRpb25zPy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0Q2F0ZWdvcnlUYWcoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5maWxlLnRhZ3M/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5yZXZpZXdGaWxlQ29uZmlnLmNhdGVnb3J5VGFnID0gdGhpcy5jb25maWcuZmlsZS50YWdzWzBdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldFNhdmVkVGFnKCk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5maWxlLnRhZ3MgJiZcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLmZpbGUudGFncy5sZW5ndGggJiZcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLmhhc1RhZ3NEcm9wZG93blxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLmZpbGUuc2F2ZWRUYWcgPSB0aGlzLmNvbmZpZy5maWxlLnRhZ3NbMF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZWN0VGFnKHRhZzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLnRhZ3NPcHRpb25zPy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS50YWdOYW1lID09IHRhZykge1xuICAgICAgICAgICAgICAgIGl0ZW0uY2hlY2tlZCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWcuZmlsZS50YWdzID0gaXRlbS50YWdOYW1lO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5maWxlLnRhZ0dlbmVyYXRlZEJ5VXNlciA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmZpbGUudGFnSWQgPSBbaXRlbS50YWdJZF07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmZpbGUudGFnQ2hhbmdlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5maWxlLnNhdmVkVGFnICE9IGl0ZW0udGFnTmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9ICd0YWcnO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMudDIuaXNPcGVuKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZUFjdGlvbi5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOiB0aGlzLmNvbmZpZy5maWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9LCAyMDApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpdGVtLmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlVGFnKCk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLmZpbGUudGFncyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5jb25maWcuZmlsZS50YWdJZCA9IFtdO1xuICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5hY3Rpb24uVEFHO1xuICAgICAgICAgICAgdGhpcy5jb25maWcuZmlsZS50YWdDaGFuZ2VkID0gdGhpcy5jb25maWcuZmlsZS5zYXZlZFRhZ1xuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmZpbGVBY3Rpb24uZW1pdCh7IGZpbGU6IHRoaXMuY29uZmlnLmZpbGUsIGFjdGlvbiB9KTtcbiAgICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSwgMjAwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3BlbkRlbGV0ZVBvcHVwKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmRldGFpbHNEYXRhU2VydmljZS5zZXREb2N1bWVudE5hbWUobmFtZSk7XG4gICAgICAgIHRoaXMuaXNGaWxlRGVsZXRlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaG92ZXJGaWxlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbGVIb3Zlci5lbWl0KHRoaXMuY29uZmlnLmZpbGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVIb3Zlcihtb2Q6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb25maWcuZmlsZS5sYXN0SG92ZXJlZCA9IG1vZDtcbiAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBob3ZlckFycm93KG1vZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmlzQXJyb3dIb3ZlcmVkID0gbW9kO1xuICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlkZW50aXR5KGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInRhLXVwbG9hZC1maWxlLWNvbnRhaW5lciBkLWdyaWQge3sgY29uZmlnLmN1c3RvbUNsYXNzTmFtZSB9fVwiXG4gIFtuZ0NsYXNzXT1cIlxuICAgIGNvbmZpZ1xuICAgICAgfCBuZ0NsYXNzUGlwZTogdDIgOiBpc0Fycm93SG92ZXJlZCA6IGFubm90YXRpb25Ib3ZlciA6IHJldmlld0ZpbGVDb25maWdcbiAgXCJcbj5cbiAgPCEtLSBGaWxlIEhlYWRlciBBY3Rpb25zIChtb3VzZWVudGVyKT1cImhvdmVyRmlsZSgpXCIgLS0+XG5cbiAgPCEtLSBSZXZpZXcgQWN0aW9ucyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJldmlld0ZpbGVDb25maWcuaXNSZXZpZXdcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInRhLXVwbG9hZC1maWxlLWhlYWRlci1yZXZpZXcgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJldmlld0ZpbGVDb25maWcucmV2aWV3TW9kZSA9PT0gJ1JFVklFV19NT0RFJ1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgIG1haW5Ub29sdGlwPVwiRG93bmxvYWRcIlxuICAgICAgICAgIHRvb2x0aXBCYWNrZ3JvdW5kPVwiIzZjNmM2Y1wiXG4gICAgICAgICAgcG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgIGNsYXNzPVwidGEtdXBsb2FkLWFjdGlvbi1kb3dubG9hZC1yZXZpZXcgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcbiAgICAgICAgICAoY2xpY2spPVwib25BY3Rpb24oYWN0aW9uLkRPV05MT0FEKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3ZnLWljb24gW3NyY109XCJpY29ucy5kb3dubG9hZFwiPjwvc3ZnLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmV2aWV3RmlsZUNvbmZpZy5yZXZpZXdNb2RlID09PSAnUkVWSUVXX01PREUnXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBuZ2JUb29sdGlwXG4gICAgICAgICAgbWFpblRvb2x0aXA9XCJcbiAgICAgICAgICAgIGNvbmZpZy5maWxlPy5pbmNvcnJlY3QgJiYgaXNJbmNvcnJlY3RNYXJrSG92ZXJcbiAgICAgICAgICAgICAgPyAnVW5tYXJrJ1xuICAgICAgICAgICAgICA6ICdNYXJrIEluY29ycmVjdCdcbiAgICAgICAgICBcIlxuICAgICAgICAgIHRvb2x0aXBCYWNrZ3JvdW5kPVwiXG4gICAgICAgICAgY29uZmlnLmZpbGU/LmluY29ycmVjdCAmJiBpc0luY29ycmVjdE1hcmtIb3ZlciA/ICcjNmM2YzZjJyA6ICcjRUY1MzUwJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgcG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgIGNsYXNzPVwiIHt7XG4gICAgICAgICAgICBjb25maWcuZmlsZT8uaW5jb3JyZWN0ICYmIGlzSW5jb3JyZWN0TWFya0hvdmVyXG4gICAgICAgICAgICAgID8gJ3RhLXVwbG9hZC1hY3Rpb24tbWFyay1jb3JyZWN0J1xuICAgICAgICAgICAgICA6ICd0YS11cGxvYWQtYWN0aW9uLW1hcmstaW5jb3JyZWN0J1xuICAgICAgICAgIH19XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7IGluY29ycmVjdDogY29uZmlnLmZpbGU/LmluY29ycmVjdCB9XCJcbiAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICBvbkFjdGlvbihcbiAgICAgICAgICAgICAgY29uZmlnLmZpbGU/LmluY29ycmVjdCAmJiBpc0luY29ycmVjdE1hcmtIb3ZlclxuICAgICAgICAgICAgICAgID8gJ21hcmstY29ycmVjdCdcbiAgICAgICAgICAgICAgICA6ICdtYXJrLWluY29ycmVjdCdcbiAgICAgICAgICAgIClcbiAgICAgICAgICBcIlxuICAgICAgICAgIChtb3VzZWVudGVyKT1cImlzSW5jb3JyZWN0TWFya0hvdmVyID0gdHJ1ZVwiXG4gICAgICAgICAgKG1vdXNlbGVhdmUpPVwiaXNJbmNvcnJlY3RNYXJrSG92ZXIgPSBmYWxzZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgIFtzcmNdPVwiXG4gICAgICAgICAgICAgIGNvbmZpZy5maWxlPy5pbmNvcnJlY3QgJiYgaXNJbmNvcnJlY3RNYXJrSG92ZXJcbiAgICAgICAgICAgICAgICA/IGljb25zLmNvbmZpcm1cbiAgICAgICAgICAgICAgICA6IGljb25zLmNsb3NlXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tQ09NTUVOVCBGT1IgTk9XIC0tPlxuXG4gICAgICA8IS0tIFJldmlldyBNZXNzYWdlIC0tPlxuICAgICAgPCEtLSA8bmctY29udGFpbmVyPlxuICAgICAgIDxkaXYgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICByZXZpZXdNb2RlID09PSAnUkVWSUVXX01PREUnIHx8IHJldmlld01vZGUgPT09ICdGRUVEQkFDS19NT0RFJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGNsYXNzPVwicmV2aWV3LWZlZWRiYWNrLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAobW91c2VlbnRlcik9XCJhbm5vdGF0aW9uSG92ZXIgPSB0cnVlXCJcbiAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cImFubm90YXRpb25Ib3ZlciA9IGZhbHNlXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGFwcC1hcHBsaWNhbnQtcmV2aWV3LWZlZWRiYWNrXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImRvY3VtZW50UmV2aWV3SW5wdXRDb250cm9sXCJcbiAgICAgICAgICAgICAgICBbZGlzcGxheUFubm90YXRpb25CdXR0b25dPVwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGU/LmluY29ycmVjdCAmJiAhZG9jdW1lbnRSZXZpZXdJbnB1dFZpc2libGVcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFtkaXNwbGF5QW5ub3RhdGlvblRleHRBcmVhXT1cIlxuICAgICAgICAgICAgICAgICAgICBmaWxlPy5pbmNvcnJlY3QgJiYgZG9jdW1lbnRSZXZpZXdJbnB1dFZpc2libGVcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFtpc0ZlZWRiYWNrXT1cInJldmlld01vZGUgPT09ICdGRUVEQkFDS19NT0RFJ1wiXG4gICAgICAgICAgICAgICAgW2ZlZWRiYWNrVGV4dF09XCJmZWVkYmFja1RleHRcIlxuICAgICAgICAgICAgICAgIChhbm5vdGF0aW9uQnRuQ2xpY2tFdmVudCk9XCJnZXRBbm5vdGF0aW9uUmV2aWV3RXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICA+PC9hcHAtYXBwbGljYW50LXJldmlldy1mZWVkYmFjaz5cbiAgICAgICAgPC9kaXY+IFxuICAgICAgPC9uZy1jb250YWluZXI+IC0tPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIE5vIFJldmlldyBBY3Rpb25zIC0tPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJcbiAgICAgICFpc0ZpbGVEZWxldGUgJiZcbiAgICAgICghcmV2aWV3RmlsZUNvbmZpZy5pc1JldmlldyB8fFxuICAgICAgICAocmV2aWV3RmlsZUNvbmZpZy5pc1JldmlldyAmJlxuICAgICAgICAgIHJldmlld0ZpbGVDb25maWcucmV2aWV3TW9kZSA9PT0gJ0ZFRURCQUNLX01PREUnKSlcbiAgICBcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInRhLXVwbG9hZC1maWxlLWhlYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cbiAgICAgIDwhLS0gTGVmdCBTaWRlIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5jdXN0b21DbGFzc05hbWUgPT09ICdjb21wYW55LWRvY3VtZW50cydcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0c2lkZV9iYXJcIj48L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5jdXN0b21DbGFzc05hbWUgIT09ICdjb21wYW55LWRvY3VtZW50cydcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwidGEtdXBsb2FkLWZpbGUtYWN0aW9uLWxlZnRzaWRlIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnbm8tYWN0aW9uLXRhZyc6ICFjb25maWcuaGFzVGFnc0Ryb3Bkb3duLFxuICAgICAgICAgICAgYWN0aXZlOiB0Mj8uaXNPcGVuKCksXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgI3QyPVwibmdiUG9wb3ZlclwiXG4gICAgICAgICAgW25nYlBvcG92ZXJdPVwidGFnc1BvcG92ZXJcIlxuICAgICAgICAgIFtwb3BvdmVyQ2xhc3NdPVwiJ3RhZ3NfcG9wb3ZlcidcIlxuICAgICAgICAgIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0LXRvcCByaWdodC1ib3R0b20nXCJcbiAgICAgICAgICBhdXRvY2xvc2U9XCJvdXRzaWRlXCJcbiAgICAgICAgICBbY29udGFpbmVyXT1cIidib2R5J1wiXG4gICAgICAgICAgdHJpZ2dlcnM9XCInbWFudWFsJ1wiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBuZ2JUb29sdGlwXG4gICAgICAgICAgICBtYWluVG9vbHRpcD1cIlRhZ1wiXG4gICAgICAgICAgICB0b29sdGlwQmFja2dyb3VuZD1cIiMyRjJGMkZcIlxuICAgICAgICAgICAgcG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0YS11cGxvYWQtYWN0aW9uLXRhZyBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uKGFjdGlvbi5UQUcpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnLWljb24gW3NyY109XCJpY29ucy50YWdcIj48L3N2Zy1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPCEtLSBSaWdodCBTaWRlIC0tPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXJldmlld0ZpbGVDb25maWcuaXNBY3Rpb25zSGlkZGVuXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInRhLXVwbG9hZC1maWxlLWFjdGlvbi1yaWdodHNpZGUgZC1mbGV4IGp1c3RpZnktY29udGVudC1hcm91bmQgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnZmVlZGJhY2stbW9kZSc6XG4gICAgICAgICAgICAgIHJldmlld0ZpbGVDb25maWcuaXNSZXZpZXcgJiZcbiAgICAgICAgICAgICAgcmV2aWV3RmlsZUNvbmZpZy5yZXZpZXdNb2RlID09PSAnRkVFREJBQ0tfTU9ERScsXG4gICAgICAgICAgICBzbWFsbDpcbiAgICAgICAgICAgICAgY29uZmlnLnR5cGUgPT09ICdkZXRhaWxzJyB8fFxuICAgICAgICAgICAgICBjb25maWcudHlwZSA9PT0gJ3RvZG8nIHx8XG4gICAgICAgICAgICAgIHJldmlld0ZpbGVDb25maWcucmV2aWV3TW9kZSA9PSAnUkVWSUVXX01PREUnLFxuICAgICAgICAgICAgJ3ZlcnRpY2FsLW1vZGUnOiBjb25maWcuY3VzdG9tQ2xhc3NOYW1lID09ICdjb21wYW55LWRvY3VtZW50cycsXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLmN1c3RvbUNsYXNzTmFtZSA9PSAnY29tcGFueS1kb2N1bWVudHMnXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICN0Mj1cIm5nYlBvcG92ZXJcIlxuICAgICAgICAgICAgICBbbmdiUG9wb3Zlcl09XCJ0YWdzUG9wb3ZlclwiXG4gICAgICAgICAgICAgIFtwb3BvdmVyQ2xhc3NdPVwiJ3RhZ3NfcG9wb3Zlcl92ZXJ0aWNhbCdcIlxuICAgICAgICAgICAgICBbcGxhY2VtZW50XT1cIidib3R0b20tbGVmdCdcIlxuICAgICAgICAgICAgICBhdXRvY2xvc2U9XCJvdXRzaWRlXCJcbiAgICAgICAgICAgICAgW2NvbnRhaW5lcl09XCInYm9keSdcIlxuICAgICAgICAgICAgICB0cmlnZ2Vycz1cIidtYW51YWwnXCJcbiAgICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgICBtYWluVG9vbHRpcD1cIlRhZ1wiXG4gICAgICAgICAgICAgIHRvb2x0aXBCYWNrZ3JvdW5kPVwiIzJGMkYyRlwiXG4gICAgICAgICAgICAgIHBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0YS11cGxvYWQtYWN0aW9uLXRhZyBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogdDI/LmlzT3BlbigpIH1cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25BY3Rpb24oYWN0aW9uLlRBRylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3ZnLWljb24gW3NyY109XCJpY29ucy50YWdcIj48L3N2Zy1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgbWFpblRvb2x0aXA9XCJEb3dubG9hZFwiXG4gICAgICAgICAgICB0b29sdGlwQmFja2dyb3VuZD1cIiMyRjJGMkZcIlxuICAgICAgICAgICAgcG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0YS11cGxvYWQtYWN0aW9uLWRvd25sb2FkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkFjdGlvbihhY3Rpb24uRE9XTkxPQUQpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnLWljb24gW3NyY109XCJpY29ucy5kb3dubG9hZFwiPjwvc3ZnLWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgY29uZmlnLnR5cGUgIT0gJ2RldGFpbHMnICYmXG4gICAgICAgICAgICAgIGNvbmZpZy50eXBlICE9ICd0b2RvJyAmJlxuICAgICAgICAgICAgICByZXZpZXdGaWxlQ29uZmlnLnJldmlld01vZGUgIT0gJ1JFVklFV19NT0RFJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLmZpbGU/LmZpbGVOYW1lXCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBuZ2JUb29sdGlwXG4gICAgICAgICAgICAgICAgbWFpblRvb2x0aXA9XCJEZWxldGVcIlxuICAgICAgICAgICAgICAgIHRvb2x0aXBCYWNrZ3JvdW5kPVwiI0VGNTM1MFwiXG4gICAgICAgICAgICAgICAgcG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGEtdXBsb2FkLWFjdGlvbi1kZWxldGVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgIGNvbmZpZy5maWxlLmZpbGVOYW1lXG4gICAgICAgICAgICAgICAgICAgID8gb3BlbkRlbGV0ZVBvcHVwKGNvbmZpZy5maWxlLmZpbGVOYW1lKVxuICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHN2Zy1pY29uIFtzcmNdPVwiaWNvbnMudHJhc2hcIj48L3N2Zy1pY29uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIHJldmlld0ZpbGVDb25maWcuaXNSZXZpZXcgJiZcbiAgICAgICAgICByZXZpZXdGaWxlQ29uZmlnLnJldmlld01vZGUgPT09ICdGRUVEQkFDS19NT0RFJ1xuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgIG1haW5Ub29sdGlwPVwiTWFya2VkIEluY29ycmVjdFwiXG4gICAgICAgICAgdG9vbHRpcEJhY2tncm91bmQ9XCIjRUY1MzUwXCJcbiAgICAgICAgICBwb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgY2xhc3M9XCJ0YS11cGxvYWQtYWN0aW9uLWZlZWRiYWNrLWluY29ycmVjdC1tYXJrIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uKGFjdGlvbi5NQVJLX0lOQ09SUkVDVClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHN2Zy1pY29uIFtzcmNdPVwiaWNvbnMuY2xvc2VcIj48L3N2Zy1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIEZpbGUgQ29udGVudCAtLT5cbiAgPGRpdiBjbGFzcz1cInRhLXVwbG9hZC1maWxlLWNvbnRlbnQgIHt7IGNvbmZpZy5jdXN0b21DbGFzc05hbWUgfX1cIj5cbiAgICA8IS0tIFBkZiBDb250ZW50IC0tPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiXG4gICAgICAgIChjb25maWcuZmlsZT8uZXh0ZW5zaW9uPy50b0xvd2VyQ2FzZSgpID09PSAncGRmJyB8fFxuICAgICAgICAgIGZpbGVFeHRlbnNpb24gPT09ICdwZGYnKSAmJlxuICAgICAgICBjb25maWcuZmlsZT8udXJsXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxwZGYtdmlld2VyXG4gICAgICAgIFtzcmNdPVwiY29uZmlnLmZpbGUudXJsXCJcbiAgICAgICAgWyhwYWdlKV09XCJjb25maWcuYWN0aXZlUGFnZVwiXG4gICAgICAgIHN0eWxlPVwiZGlzcGxheTogYmxvY2s7IGhlaWdodDogMTAwJTsgd2lkdGg6IDEwMCVcIlxuICAgICAgICBbcm90YXRpb25dPVwiMFwiXG4gICAgICAgIFtvcmlnaW5hbC1zaXplXT1cImZhbHNlXCJcbiAgICAgICAgW3Nob3ctYWxsXT1cInRydWVcIlxuICAgICAgICBbZml0LXRvLXBhZ2VdPVwiZmFsc2VcIlxuICAgICAgICBbem9vbV09XCIxXCJcbiAgICAgICAgW3pvb20tc2NhbGVdPVwiJ3BhZ2Utd2lkdGgnXCJcbiAgICAgICAgW3N0aWNrLXRvLXBhZ2VdPVwiZmFsc2VcIlxuICAgICAgICBbcmVuZGVyLXRleHRdPVwidHJ1ZVwiXG4gICAgICAgIFtleHRlcm5hbC1saW5rLXRhcmdldF09XCInYmxhbmsnXCJcbiAgICAgICAgW2F1dG9yZXNpemVdPVwidHJ1ZVwiXG4gICAgICAgIFtzaG93LWJvcmRlcnNdPVwiZmFsc2VcIlxuICAgICAgICAoYWZ0ZXItbG9hZC1jb21wbGV0ZSk9XCJhZnRlckxvYWRDb21wbGV0ZSgkZXZlbnQpXCJcbiAgICAgICAgKHBhZ2UtcmVuZGVyZWQpPVwicGFnZVJlbmRlcmVkKCRldmVudClcIlxuICAgICAgPjwvcGRmLXZpZXdlcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gSW1hZ2UgQ29udGVudCAtLT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImltYWdlX21haW5faG9sZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciB7e1xuICAgICAgICBjb25maWcuY3VzdG9tQ2xhc3NOYW1lXG4gICAgICB9fVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGNvbmZpZy5maWxlPy5leHRlbnNpb24/LnRvTG93ZXJDYXNlKCkgIT09ICdwZGYnICYmXG4gICAgICAgICAgZmlsZUV4dGVuc2lvbiAhPT0gJ3BkZicgJiZcbiAgICAgICAgICBjb25maWcuZmlsZT8udXJsXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICBjbGFzcz1cInRhLXVwbG9hZC1maWxlLWltYWdlXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICBkZXRhaWxzX2ltYWdlOiBjb25maWcudHlwZSA9PT0gJ2RldGFpbHMnIHx8IGNvbmZpZy50eXBlID09PSAndG9kbycsXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgW3NyY109XCJjb25maWcuZmlsZS51cmxcIlxuICAgICAgICAgIFthbHRdPVwiY29uZmlnLmZpbGU/LmZpbGVOYW1lXCJcbiAgICAgICAgLz5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvY3VtZW50TG9hZGluZ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lclwiPlxuICAgICAgICAgIDxhcHAtY2Etc3Bpbm5lclxuICAgICAgICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICAgICAgICBbY29sb3JdPVwiJ2JsdWVEYXJrJ1wiXG4gICAgICAgICAgPjwvYXBwLWNhLXNwaW5uZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFRhZyBDb250ZW50IC0tPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiXG4gICAgICAgIChjb25maWcuaGFzVGFnc0Ryb3Bkb3duIHx8XG4gICAgICAgICAgY29uZmlnLmN1c3RvbUNsYXNzTmFtZSA9PT0gJ3RhYmxlLWRldGFpbHMnIHx8XG4gICAgICAgICAgY29uZmlnLmN1c3RvbUNsYXNzTmFtZSA9PT0gJ2RyaXZlci1jYXJkLXBkZicpICYmXG4gICAgICAgIGNvbmZpZy5maWxlPy50YWdzICYmXG4gICAgICAgIGNvbmZpZy5maWxlPy50YWdzICE9PSAnJyAmJlxuICAgICAgICBjb25maWcuZmlsZT8udGFncyAhPT0gJ05vIFRhZydcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInRhLXVwbG9hZC1maWxlLXRhZ1wiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICBkZWZhdWx0OiAhY29uZmlnLmZpbGU/LnRhZ0dlbmVyYXRlZEJ5VXNlcixcbiAgICAgICAgICB0YWdSZW1vdmluZzogY29uZmlnLmZpbGU/LnRhZ3MubGVuZ3RoID09PSAwLFxuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4+e3tcbiAgICAgICAgICBjb25maWcuZmlsZT8udGFncyB8fCByZXZpZXdGaWxlQ29uZmlnLmNhdGVnb3J5VGFnIHx8ICcnXG4gICAgICAgIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDwhLS0gRmlsZSBEZWxldGUgVGVtcGxhdGUgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0ZpbGVEZWxldGVcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInRhLXVwbG9hZC1maWxlLWRlbGV0ZS10ZW1wbGF0ZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uIHt7XG4gICAgICAgIGNvbmZpZy5jdXN0b21DbGFzc05hbWVcbiAgICAgIH19XCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwidGEtdXBsb2FkLWZpbGUtZGVsZXRlLXRleHRcIj5cbiAgICAgICAgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSBmaWxlP1xuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidGEtdXBsb2FkLWZpbGUtYnRuIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciB0YS11cGxvYWQtZmlsZS1idG4tZGVsZXRlXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uKGFjdGlvbi5ERUxFVEUpXCJcbiAgICAgID5cbiAgICAgICAgREVMRVRFXG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ0YS11cGxvYWQtZmlsZS1idG4gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHRhLXVwbG9hZC1maWxlLWJ0bi1jYW5jZWxcIlxuICAgICAgICAoY2xpY2spPVwib25BY3Rpb24oYWN0aW9uLkNBTkNFTClcIlxuICAgICAgPlxuICAgICAgICBDQU5DRUxcbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIEZpbGUgRm9vdGVyIEluZm9ybWF0aW9uIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXJldmlld0ZpbGVDb25maWcuaXNGb290ZXJIaWRkZW5cIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInRhLXVwbG9hZC1maWxlLWZvb3RlclwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdlZGl0LW1vZGUnOiBlZGl0RmlsZSB9XCJcbiAgICAgIChjbGljayk9XCJvbkVkaXRGaWxlKClcIlxuICAgID5cbiAgICAgIDwhLS0gTm8gZWRpdCBtb2RlIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0ZpbGVEZWxldGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvb3Rlcl9pbmZvIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInRhLXVwbG9hZC1maWxlLWV4dCB0YS11cGxvYWQtZmlsZS1leHQte3tcbiAgICAgICAgICAgICAgY29uZmlnLmZpbGU/LmV4dGVuc2lvbiA/IChjb25maWcuZmlsZT8uZXh0ZW5zaW9uIHwgbG93ZXJjYXNlKSA6ICcnXG4gICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICduby10YWcnOiAhY29uZmlnLmZpbGU/LnRhZ3MgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAge3sgY29uZmlnLmZpbGU/LmV4dGVuc2lvbiB8IHVwcGVyY2FzZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRvY3VtZW50X2luZm9faG9sZCBkLWZsZXhcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJudW1iZXJPZkZpbGVQYWdlc1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGRmX3BhZ2Vfc2l6ZVwiPlxuICAgICAgICAgICAgICAgIHt7IG51bWJlck9mRmlsZVBhZ2VzIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJmaWxlX3NpemVcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgaGFzX3BhZ2VzOiBudW1iZXJPZkZpbGVQYWdlcyxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGNvbmZpZy5maWxlPy5zaXplIHx8IDAgfCBieXRlQ29udmVydCB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWVkaXRGaWxlOyBlbHNlIGVkaXRNb2RlXCI+XG4gICAgICAgIDxwXG4gICAgICAgICAgY2xhc3M9XCJ0YS11cGxvYWQtZmlsZS1uYW1lXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICBkZXRhaWxzX3RpdGxlOiBjb25maWcudHlwZSA9PT0gJ2RldGFpbHMnLFxuICAgICAgICAgICAgdG9kb190aXRsZTogY29uZmlnLnR5cGUgPT09ICd0b2RvJyxcbiAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGZpbGVOYW1lIH19XG4gICAgICAgIDwvcD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctdGVtcGxhdGUgI2VkaXRNb2RlPlxuICAgICAgICA8YXBwLWNhLWlucHV0XG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZpbGVOZXdOYW1lXCJcbiAgICAgICAgICBbaW5wdXRDb25maWddPVwie1xuICAgICAgICAgICAgbmFtZTogJ0ZpbGUgTmFtZScsXG4gICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1R5cGUgRmlsZSBOYW1lJyxcbiAgICAgICAgICAgIGJsYWNrSW5wdXQ6IHRydWUsXG4gICAgICAgICAgICBpc0Rpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgICB9XCJcbiAgICAgICAgICAoYmx1cklucHV0KT1cIm9uQmx1cklucHV0KCRldmVudClcIlxuICAgICAgICA+PC9hcHAtY2EtaW5wdXQ+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3RhZ3NQb3BvdmVyIGxldC1kYXRhPVwiZGF0YVwiPlxuICA8ZGl2IGNsYXNzPVwidGFnc19tYWluX2hvbGRlclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcuZmlsZT8udGFncz8ubGVuZ3RoXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicmVtb3ZlX3RhZ19ob2xkZXJcIiAoY2xpY2spPVwicmVtb3ZlVGFnKClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlbW92ZV90YWdcIj5SZW1vdmUgVGFnPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLmZpbGU/LnRhZ3M/Lmxlbmd0aFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJlbW92ZV90YWdfYm9yZGVyX2hvbGRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVtb3ZlX3RhZ19ib3JkZXJcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcudGFnc09wdGlvbnMgJiYgY29uZmlnLnRhZ3NPcHRpb25zLmxlbmd0aFwiPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdGb3I9XCJsZXQgdGFnIG9mIGNvbmZpZy50YWdzT3B0aW9uczsgdHJhY2tCeTogaWRlbnRpdHk7IGluZGV4IGFzIGlcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJ0YWdzX2lubmVyX2hvbGRlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICBmaXJzdFJvdzogaSA9PT0gMCxcbiAgICAgICAgICAgIGxhc3RSb3c6IGkgPT09IGNvbmZpZy50YWdzT3B0aW9ucy5sZW5ndGggLSAxLFxuICAgICAgICAgIH1cIlxuICAgICAgICAgIChjbGljayk9XCJzZWxlY3RUYWcodGFnPy50YWdOYW1lKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFnX29wdGlvbnNfaG9sZGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWdfbmFtZVwiIFtuZ0NsYXNzXT1cInsgY2hlY2tlZDogdGFnLmNoZWNrZWQgfVwiPlxuICAgICAgICAgICAgICB7eyB0YWcudGFnTmFtZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tlZF9pY29uXCIgW25nQ2xhc3NdPVwieyBzaG93bjogdGFnLmNoZWNrZWQgfVwiPlxuICAgICAgICAgICAgICA8c3ZnLWljb24gW3NyY109XCJpY29ucy5jb25maXJtXCI+PC9zdmctaWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -0,0 +1,14 @@
1
+ export class FileHelpers {
2
+ static base64ToFile(base64, filename) {
3
+ const arr = base64.split(',');
4
+ const match = arr[0].match(/:(.*?);/);
5
+ const mime = match ? match[1] : '';
6
+ const binaryString = atob(arr[1]);
7
+ let length = binaryString.length;
8
+ const u8arr = new Uint8Array(length);
9
+ while (length--)
10
+ u8arr[length] = binaryString.charCodeAt(length);
11
+ return new File([u8arr], filename, { type: mime });
12
+ }
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL3V0aWxzL2hlbHBlcnMvZmlsZS5oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxXQUFXO0lBQ3BCLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBYyxFQUFFLFFBQWdCO1FBQ2hELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUIsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ25DLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQyxJQUFJLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO1FBQ2pDLE1BQU0sS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXJDLE9BQU8sTUFBTSxFQUFFO1lBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLFlBQVksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFakUsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBGaWxlSGVscGVycyB7XG4gICAgc3RhdGljIGJhc2U2NFRvRmlsZShiYXNlNjQ6IHN0cmluZywgZmlsZW5hbWU6IHN0cmluZyk6IEZpbGUge1xuICAgICAgICBjb25zdCBhcnIgPSBiYXNlNjQuc3BsaXQoJywnKTtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBhcnJbMF0ubWF0Y2goLzooLio/KTsvKTtcbiAgICAgICAgY29uc3QgbWltZSA9IG1hdGNoID8gbWF0Y2hbMV0gOiAnJztcbiAgICAgICAgY29uc3QgYmluYXJ5U3RyaW5nID0gYXRvYihhcnJbMV0pO1xuICAgICAgICBsZXQgbGVuZ3RoID0gYmluYXJ5U3RyaW5nLmxlbmd0aDtcbiAgICAgICAgY29uc3QgdThhcnIgPSBuZXcgVWludDhBcnJheShsZW5ndGgpO1xuXG4gICAgICAgIHdoaWxlIChsZW5ndGgtLSkgdThhcnJbbGVuZ3RoXSA9IGJpbmFyeVN0cmluZy5jaGFyQ29kZUF0KGxlbmd0aCk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBGaWxlKFt1OGFycl0sIGZpbGVuYW1lLCB7IHR5cGU6IG1pbWUgfSk7XG4gICAgfVxufSJdfQ==