@alfresco/adf-process-services-cloud 6.9.0 → 6.10.0-10006186111

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 (169) hide show
  1. package/esm2020/lib/app/app-list-cloud.module.mjs +5 -5
  2. package/esm2020/lib/app/components/app-details-cloud.component.mjs +5 -5
  3. package/esm2020/lib/app/components/app-list-cloud.component.mjs +4 -4
  4. package/esm2020/lib/app/services/apps-process-cloud.service.mjs +4 -4
  5. package/esm2020/lib/common/date-range-filter/date-range-filter.component.mjs +6 -6
  6. package/esm2020/lib/common/date-range-filter/date-range-filter.service.mjs +4 -4
  7. package/esm2020/lib/common/process-common.module.mjs +5 -5
  8. package/esm2020/lib/form/components/cloud-form-rendering.service.mjs +4 -4
  9. package/esm2020/lib/form/components/form-cloud-custom-outcomes.component.mjs +4 -4
  10. package/esm2020/lib/form/components/form-cloud.component.mjs +10 -12
  11. package/esm2020/lib/form/components/form-definition-selector-cloud.component.mjs +4 -4
  12. package/esm2020/lib/form/components/spinner/form-spinner.component.mjs +4 -4
  13. package/esm2020/lib/form/components/widgets/attach-file/attach-file-cloud-widget.component.mjs +11 -12
  14. package/esm2020/lib/form/components/widgets/attach-file/file-properties-table-cloud.component.mjs +5 -5
  15. package/esm2020/lib/form/components/widgets/attach-file/upload-cloud.widget.mjs +6 -7
  16. package/esm2020/lib/form/components/widgets/data-table/data-table-adapter.widget.mjs +7 -7
  17. package/esm2020/lib/form/components/widgets/data-table/data-table.widget.mjs +5 -5
  18. package/esm2020/lib/form/components/widgets/data-table/helpers/data-table-path-parser.helper.mjs +11 -3
  19. package/esm2020/lib/form/components/widgets/date/date-cloud.widget.mjs +10 -11
  20. package/esm2020/lib/form/components/widgets/display-external-property/display-external-property.widget.mjs +5 -5
  21. package/esm2020/lib/form/components/widgets/display-rich-text/display-rich-text.widget.mjs +4 -4
  22. package/esm2020/lib/form/components/widgets/dropdown/dropdown-cloud.widget.mjs +20 -10
  23. package/esm2020/lib/form/components/widgets/file-viewer/file-viewer.widget.mjs +4 -4
  24. package/esm2020/lib/form/components/widgets/group/group-cloud.widget.mjs +7 -8
  25. package/esm2020/lib/form/components/widgets/people/people-cloud.widget.mjs +7 -8
  26. package/esm2020/lib/form/components/widgets/properties-viewer/properties-viewer-wrapper/properties-viewer-wrapper.component.mjs +4 -4
  27. package/esm2020/lib/form/components/widgets/properties-viewer/properties-viewer.widget.mjs +4 -4
  28. package/esm2020/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.widget.mjs +6 -7
  29. package/esm2020/lib/form/form-cloud.module.mjs +5 -5
  30. package/esm2020/lib/form/services/content-cloud-node-selector.service.mjs +8 -8
  31. package/esm2020/lib/form/services/display-mode.service.mjs +4 -4
  32. package/esm2020/lib/form/services/form-cloud.service.mjs +7 -7
  33. package/esm2020/lib/form/services/form-definition-selector-cloud.service.mjs +4 -4
  34. package/esm2020/lib/form/services/process-cloud-content.service.mjs +10 -10
  35. package/esm2020/lib/form/services/spinner/form-cloud-spinner.service.mjs +4 -4
  36. package/esm2020/lib/group/components/group-cloud.component.mjs +12 -13
  37. package/esm2020/lib/group/group-cloud.module.mjs +5 -5
  38. package/esm2020/lib/group/pipe/group-initial.pipe.mjs +4 -4
  39. package/esm2020/lib/group/services/identity-group.service.mjs +4 -4
  40. package/esm2020/lib/material.module.mjs +135 -38
  41. package/esm2020/lib/people/components/people-cloud.component.mjs +12 -13
  42. package/esm2020/lib/people/people-cloud.module.mjs +5 -5
  43. package/esm2020/lib/people/services/identity-user.service.mjs +4 -4
  44. package/esm2020/lib/pipes/process-name-cloud.pipe.mjs +4 -4
  45. package/esm2020/lib/pipes/process-services-cloud-pipe.module.mjs +5 -5
  46. package/esm2020/lib/process/directives/cancel-process.directive.mjs +4 -4
  47. package/esm2020/lib/process/directives/process-directive.module.mjs +5 -5
  48. package/esm2020/lib/process/process-cloud.module.mjs +5 -5
  49. package/esm2020/lib/process/process-filters/components/edit-process-filter-cloud.component.mjs +34 -35
  50. package/esm2020/lib/process/process-filters/components/process-filter-dialog-cloud.component.mjs +7 -7
  51. package/esm2020/lib/process/process-filters/components/process-filters-cloud.component.mjs +5 -5
  52. package/esm2020/lib/process/process-filters/process-filters-cloud.module.mjs +5 -5
  53. package/esm2020/lib/process/process-filters/services/process-filter-cloud.service.mjs +4 -4
  54. package/esm2020/lib/process/process-header/components/process-header-cloud.component.mjs +10 -12
  55. package/esm2020/lib/process/process-header/process-header-cloud.module.mjs +5 -5
  56. package/esm2020/lib/process/process-list/components/process-list-cloud.component.mjs +4 -4
  57. package/esm2020/lib/process/process-list/process-list-cloud.module.mjs +5 -5
  58. package/esm2020/lib/process/process-list/services/process-list-cloud.service.mjs +4 -4
  59. package/esm2020/lib/process/process-list/services/process-task-list-cloud.service.mjs +4 -4
  60. package/esm2020/lib/process/services/process-cloud.service.mjs +4 -4
  61. package/esm2020/lib/process/start-process/components/start-process-cloud.component.mjs +14 -7
  62. package/esm2020/lib/process/start-process/services/start-process-cloud.service.mjs +4 -4
  63. package/esm2020/lib/process/start-process/start-process-cloud.module.mjs +5 -5
  64. package/esm2020/lib/process-services-cloud.module.mjs +5 -5
  65. package/esm2020/lib/rich-text-editor/rich-text-editor.component.mjs +13 -19
  66. package/esm2020/lib/rich-text-editor/rich-text-editor.module.mjs +5 -5
  67. package/esm2020/lib/services/base-cloud.service.mjs +4 -4
  68. package/esm2020/lib/services/local-preference-cloud.service.mjs +4 -4
  69. package/esm2020/lib/services/notification-cloud.service.mjs +4 -4
  70. package/esm2020/lib/services/user-preference-cloud.service.mjs +4 -4
  71. package/esm2020/lib/services/variable-mapper.sevice.mjs +4 -4
  72. package/esm2020/lib/task/directives/claim-task-cloud.directive.mjs +4 -4
  73. package/esm2020/lib/task/directives/complete-task.directive.mjs +4 -4
  74. package/esm2020/lib/task/directives/task-directive.module.mjs +5 -5
  75. package/esm2020/lib/task/directives/unclaim-task-cloud.directive.mjs +4 -4
  76. package/esm2020/lib/task/services/start-task-cloud.service.mjs +4 -4
  77. package/esm2020/lib/task/services/task-cloud.service.mjs +4 -4
  78. package/esm2020/lib/task/start-task/components/start-task-cloud.component.mjs +8 -8
  79. package/esm2020/lib/task/start-task/start-task-cloud.module.mjs +5 -5
  80. package/esm2020/lib/task/task-cloud.module.mjs +5 -5
  81. package/esm2020/lib/task/task-filters/components/base-task-filters-cloud.component.mjs +4 -4
  82. package/esm2020/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.mjs +4 -4
  83. package/esm2020/lib/task/task-filters/components/edit-task-filters/edit-service-task-filter-cloud.component.mjs +13 -14
  84. package/esm2020/lib/task/task-filters/components/edit-task-filters/edit-task-filter-cloud.component.mjs +13 -14
  85. package/esm2020/lib/task/task-filters/components/service-task-filters-cloud.component.mjs +5 -5
  86. package/esm2020/lib/task/task-filters/components/task-assignment-filter/task-assignment-filter.component.mjs +4 -4
  87. package/esm2020/lib/task/task-filters/components/task-filter-dialog/task-filter-dialog-cloud.component.mjs +7 -7
  88. package/esm2020/lib/task/task-filters/components/task-filters-cloud.component.mjs +5 -5
  89. package/esm2020/lib/task/task-filters/services/service-task-filter-cloud.service.mjs +4 -4
  90. package/esm2020/lib/task/task-filters/services/task-filter-cloud.service.mjs +4 -4
  91. package/esm2020/lib/task/task-filters/task-filters-cloud.module.mjs +5 -5
  92. package/esm2020/lib/task/task-form/components/task-form-cloud.component.mjs +12 -6
  93. package/esm2020/lib/task/task-form/task-form.module.mjs +5 -5
  94. package/esm2020/lib/task/task-header/components/task-header-cloud.component.mjs +5 -5
  95. package/esm2020/lib/task/task-header/task-header-cloud.module.mjs +5 -5
  96. package/esm2020/lib/task/task-list/components/base-task-list-cloud.component.mjs +5 -5
  97. package/esm2020/lib/task/task-list/components/service-task-list-cloud.component.mjs +4 -4
  98. package/esm2020/lib/task/task-list/components/task-list-cloud.component.mjs +4 -4
  99. package/esm2020/lib/task/task-list/services/service-task-list-cloud.service.mjs +4 -4
  100. package/esm2020/lib/task/task-list/services/task-list-cloud.service.mjs +4 -4
  101. package/esm2020/lib/task/task-list/task-list-cloud.module.mjs +5 -5
  102. package/fesm2015/adf-process-services-cloud.mjs +5869 -5741
  103. package/fesm2015/adf-process-services-cloud.mjs.map +1 -1
  104. package/fesm2020/adf-process-services-cloud.mjs +3771 -3643
  105. package/fesm2020/adf-process-services-cloud.mjs.map +1 -1
  106. package/lib/app/components/app-details-cloud.component.d.ts +1 -1
  107. package/lib/app/components/app-list-cloud.component.d.ts +1 -1
  108. package/lib/common/date-range-filter/date-range-filter.component.d.ts +1 -1
  109. package/lib/form/components/form-cloud-custom-outcomes.component.d.ts +1 -1
  110. package/lib/form/components/form-cloud.component.d.ts +2 -2
  111. package/lib/form/components/form-cloud.component.scss +5 -8
  112. package/lib/form/components/form-definition-selector-cloud.component.d.ts +1 -1
  113. package/lib/form/components/spinner/form-spinner.component.d.ts +1 -1
  114. package/lib/form/components/widgets/attach-file/attach-file-cloud-widget.component.d.ts +1 -1
  115. package/lib/form/components/widgets/attach-file/attach-file-cloud-widget.component.scss +1 -3
  116. package/lib/form/components/widgets/attach-file/file-properties-table-cloud.component.d.ts +1 -1
  117. package/lib/form/components/widgets/attach-file/upload-cloud.widget.d.ts +1 -1
  118. package/lib/form/components/widgets/data-table/data-table.widget.d.ts +1 -1
  119. package/lib/form/components/widgets/data-table/helpers/data-table-path-parser.helper.d.ts +1 -0
  120. package/lib/form/components/widgets/date/date-cloud.widget.d.ts +1 -1
  121. package/lib/form/components/widgets/date/date-cloud.widget.scss +7 -7
  122. package/lib/form/components/widgets/display-external-property/display-external-property.widget.d.ts +1 -1
  123. package/lib/form/components/widgets/display-external-property/display-external-property.widget.scss +1 -0
  124. package/lib/form/components/widgets/display-rich-text/display-rich-text.widget.d.ts +1 -1
  125. package/lib/form/components/widgets/dropdown/dropdown-cloud.widget.d.ts +3 -1
  126. package/lib/form/components/widgets/file-viewer/file-viewer.widget.d.ts +1 -1
  127. package/lib/form/components/widgets/group/group-cloud.widget.d.ts +1 -1
  128. package/lib/form/components/widgets/people/people-cloud.widget.d.ts +1 -1
  129. package/lib/form/components/widgets/properties-viewer/properties-viewer-wrapper/properties-viewer-wrapper.component.d.ts +1 -1
  130. package/lib/form/components/widgets/properties-viewer/properties-viewer.widget.d.ts +1 -1
  131. package/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.widget.d.ts +1 -1
  132. package/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.widget.scss +12 -0
  133. package/lib/group/components/group-cloud.component.d.ts +1 -1
  134. package/lib/material.module.d.ts +4 -5
  135. package/lib/models/process-instance-variable.model.d.ts +1 -1
  136. package/lib/people/components/people-cloud.component.d.ts +1 -1
  137. package/lib/process/directives/cancel-process.directive.d.ts +1 -1
  138. package/lib/process/process-filters/components/edit-process-filter-cloud.component.d.ts +1 -1
  139. package/lib/process/process-filters/components/process-filter-dialog-cloud.component.d.ts +1 -1
  140. package/lib/process/process-filters/components/process-filters-cloud.component.d.ts +1 -1
  141. package/lib/process/process-header/components/process-header-cloud.component.d.ts +3 -3
  142. package/lib/process/process-list/components/process-list-cloud.component.d.ts +1 -1
  143. package/lib/process/process-list/models/perocess-instance-cloud-view.model.d.ts +1 -1
  144. package/lib/process/start-process/components/start-process-cloud.component.d.ts +5 -2
  145. package/lib/rich-text-editor/rich-text-editor.component.d.ts +1 -3
  146. package/lib/rich-text-editor/rich-text-editor.component.scss +10 -0
  147. package/lib/services/form-fields.interfaces.d.ts +1 -1
  148. package/lib/task/directives/claim-task-cloud.directive.d.ts +1 -1
  149. package/lib/task/directives/complete-task.directive.d.ts +1 -1
  150. package/lib/task/directives/unclaim-task-cloud.directive.d.ts +1 -1
  151. package/lib/task/start-task/components/start-task-cloud.component.d.ts +1 -1
  152. package/lib/task/start-task/models/task-details-cloud.model.d.ts +2 -2
  153. package/lib/task/task-filters/components/base-task-filters-cloud.component.d.ts +1 -1
  154. package/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.d.ts +1 -1
  155. package/lib/task/task-filters/components/edit-task-filters/edit-service-task-filter-cloud.component.d.ts +1 -1
  156. package/lib/task/task-filters/components/edit-task-filters/edit-task-filter-cloud.component.d.ts +1 -1
  157. package/lib/task/task-filters/components/service-task-filters-cloud.component.d.ts +1 -1
  158. package/lib/task/task-filters/components/task-assignment-filter/task-assignment-filter.component.d.ts +1 -1
  159. package/lib/task/task-filters/components/task-filter-dialog/task-filter-dialog-cloud.component.d.ts +1 -1
  160. package/lib/task/task-filters/components/task-filters-cloud.component.d.ts +1 -1
  161. package/lib/task/task-form/components/task-form-cloud.component.d.ts +5 -2
  162. package/lib/task/task-form/components/task-form-cloud.component.scss +15 -9
  163. package/lib/task/task-header/components/task-header-cloud.component.d.ts +1 -1
  164. package/lib/task/task-list/components/base-task-list-cloud.component.d.ts +1 -1
  165. package/lib/task/task-list/components/service-task-list-cloud.component.d.ts +1 -1
  166. package/lib/task/task-list/components/task-list-cloud.component.d.ts +1 -1
  167. package/lib/task/task-list/models/task-cloud-view.model.d.ts +1 -1
  168. package/lib/types.d.ts +1 -1
  169. package/package.json +6 -6
@@ -31,15 +31,18 @@ import * as i4 from "@alfresco/adf-content-services";
31
31
  import * as i5 from "@angular/common";
32
32
  import * as i6 from "@angular/material/button";
33
33
  import * as i7 from "@angular/material/icon";
34
- import * as i8 from "@angular/material/tooltip";
35
- import * as i9 from "./file-properties-table-cloud.component";
36
- import * as i10 from "@ngx-translate/core";
34
+ import * as i8 from "./file-properties-table-cloud.component";
35
+ import * as i9 from "@ngx-translate/core";
37
36
  export const RETRIEVE_METADATA_OPTION = 'retrieveMetadata';
38
37
  export const ALIAS_ROOT_FOLDER = '-root-';
39
38
  export const ALIAS_USER_FOLDER = '-my-';
40
39
  export const APP_NAME = '-appname-';
41
40
  export const VALID_ALIAS = [ALIAS_ROOT_FOLDER, ALIAS_USER_FOLDER, '-shared-'];
42
41
  export class AttachFileCloudWidgetComponent extends UploadCloudWidgetComponent {
42
+ get nodesApi() {
43
+ this._nodesApi = this._nodesApi ?? new NodesApi(this.apiService.getInstance());
44
+ return this._nodesApi;
45
+ }
43
46
  constructor(formService, thumbnails, processCloudContentService, notificationService, contentNodeSelectorService, appConfigService, apiService, contentNodeSelectorPanelService, newVersionUploaderService) {
44
47
  super(formService, thumbnails, processCloudContentService, notificationService);
45
48
  this.contentNodeSelectorService = contentNodeSelectorService;
@@ -53,10 +56,6 @@ export class AttachFileCloudWidgetComponent extends UploadCloudWidgetComponent {
53
56
  this.previewState = false;
54
57
  this.displayedColumns = ['icon', 'fileName', 'action'];
55
58
  }
56
- get nodesApi() {
57
- this._nodesApi = this._nodesApi ?? new NodesApi(this.apiService.getInstance());
58
- return this._nodesApi;
59
- }
60
59
  ngOnInit() {
61
60
  super.ngOnInit();
62
61
  if (this.hasFile && this.field.value.length > 0) {
@@ -230,9 +229,9 @@ export class AttachFileCloudWidgetComponent extends UploadCloudWidgetComponent {
230
229
  this.previewState = this.formService.getPreviewState();
231
230
  }
232
231
  }
233
- AttachFileCloudWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: AttachFileCloudWidgetComponent, deps: [{ token: i1.FormService }, { token: i1.ThumbnailService }, { token: i2.ProcessCloudContentService }, { token: i1.NotificationService }, { token: i3.ContentCloudNodeSelectorService }, { token: i1.AppConfigService }, { token: i1.AlfrescoApiService }, { token: i4.ContentNodeSelectorPanelService }, { token: i4.NewVersionUploaderService }], target: i0.ɵɵFactoryTarget.Component });
234
- AttachFileCloudWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: AttachFileCloudWidgetComponent, selector: "adf-cloud-attach-file-cloud-widget", outputs: { error: "error" }, host: { listeners: { "click": "event($event)", "blur": "event($event)", "change": "event($event)", "focus": "event($event)", "focusin": "event($event)", "focusout": "event($event)", "input": "event($event)", "invalid": "event($event)", "select": "event($event)" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"adf-attach-file-widget-container\">\n <div class=\"adf-attach-widget {{field.className}}\"\n [class.adf-readonly]=\"field.readOnly\">\n <label class=\"adf-label\" [attr.for]=\"field.id\">{{field.name}}\n <span class=\"adf-asterisk\" *ngIf=\"isRequired()\">*</span>\n </label>\n <div class=\"adf-attach-widget-container\" (focusout)=\"markAsTouched()\">\n <div class=\"adf-attach-widget__menu-upload\" *ngIf=\"isUploadButtonVisible()\">\n <button\n (click)=\"openSelectDialog()\"\n mat-raised-button\n class=\"adf-attach-widget__menu-upload__button\"\n color=\"primary\"\n [id]=\"field.id\"\n [matTooltip]=\"field.tooltip\"\n matTooltipPosition=\"above\"\n matTooltipShowDelay=\"1000\">\n {{ 'FORM.FIELD.ATTACH' | translate }}\n <mat-icon class=\"adf-attach-widget__menu-upload__button__icon\">{{getWidgetIcon()}}</mat-icon>\n </button>\n </div>\n </div>\n </div>\n\n <div data-automation-id=\"adf-attach-widget-readonly-list\" class=\"adf-attach-widget-readonly-table\">\n <adf-cloud-file-properties-table\n [uploadedFiles]=\"uploadedFiles\"\n [hasFile]=\"hasFile\"\n [selectedNode]=\"selectedNode\"\n [field]=\"field\"\n [displayedColumns]=\"displayedColumns\"\n [mimeTypeIcon]=\"mimeTypeIcon\"\n (rowClick)=\"onRowClicked($event)\"\n (attachFileClick)=\"onAttachFileClicked($event)\"\n (downloadFile)=\"downloadContent($event)\"\n (uploadNewFileVersion)=\"onUploadNewFileVersion($event)\"\n (contentModelFileHandler)=\"contentModelFormFileHandler($event)\"\n (removeAttachFile)=\"onRemoveAttachFile($event)\"\n ></adf-cloud-file-properties-table>\n <div *ngIf=\"!hasFile && field.readOnly\" id=\"{{'adf-attach-empty-list-'+field.id}}\">\n {{ 'FORM.FIELD.NO_FILE_ATTACHED' | translate }}\n </div>\n\n </div>\n\n <error-widget [error]=\"field.validationSummary\"></error-widget>\n <error-widget *ngIf=\"!field.isValid && isTouched() && !isSelected()\" required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\"></error-widget>\n</div>\n", styles: [".adf-attach-widget-container{display:flex;align-items:center}.adf-attach-widget-container input{cursor:pointer;height:100%;right:0;opacity:0;position:absolute;top:0;width:300px;z-index:4}.adf-attach-widget__menu-upload{display:flex;align-items:center;margin-right:8px}.adf-attach-widget__menu-upload .adf-attach-widget__menu-upload__button{line-height:28px;font-size:var(--theme-caption-font-size)}.adf-attach-widget__menu-upload button span{font-size:var(--theme-caption-font-size)}.adf-attach-widget__input-type{width:.1px;height:.1px;opacity:0;overflow:hidden;position:absolute;z-index:-1}.adf-attach-widget__image-logo{padding-left:5px}.adf-attach-widget{display:flex;justify-content:space-between;word-break:break-all;padding:.4375em;border-bottom:none;background:var(--adf-theme-mat-grey-color-a200);min-height:27px;margin-bottom:12px}.adf-attach-widget .adf-label{width:32px;font-size:var(--theme-caption-font-size);line-height:var(--theme-headline-line-height);text-align:left;white-space:nowrap;margin-left:8px}.adf-attach-widget__icon{font-size:var(--theme-adf-picture-1-font-size);height:var(--theme-adf-picture-1-font-size);width:var(--theme-adf-picture-1-font-size);line-height:calc(var(--theme-adf-picture-1-font-size) - 2px)}.adf-attach-widget__reset{margin-top:-2px}.adf-attach-files-row>div:first-child{cursor:pointer}.adf-attach-files-row .adf-file{margin-bottom:0}.adf-attach-selected-file-row>div:first-child .adf-datatable-selected{color:var(--theme-primary-color);padding-right:6px}.adf-attach-file-widget-container{margin:15px}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i1.ErrorWidgetComponent, selector: "error-widget", inputs: ["error", "required"] }, { kind: "component", type: i9.FilePropertiesTableCloudComponent, selector: "adf-cloud-file-properties-table", inputs: ["uploadedFiles", "hasFile", "selectedNode", "field", "displayedColumns", "mimeTypeIcon"], outputs: ["rowClick", "attachFileClick", "downloadFile", "uploadNewFileVersion", "contentModelFileHandler", "removeAttachFile"] }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
235
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: AttachFileCloudWidgetComponent, decorators: [{
232
+ AttachFileCloudWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AttachFileCloudWidgetComponent, deps: [{ token: i1.FormService }, { token: i1.ThumbnailService }, { token: i2.ProcessCloudContentService }, { token: i1.NotificationService }, { token: i3.ContentCloudNodeSelectorService }, { token: i1.AppConfigService }, { token: i1.AlfrescoApiService }, { token: i4.ContentNodeSelectorPanelService }, { token: i4.NewVersionUploaderService }], target: i0.ɵɵFactoryTarget.Component });
233
+ AttachFileCloudWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AttachFileCloudWidgetComponent, selector: "adf-cloud-attach-file-cloud-widget", outputs: { error: "error" }, host: { listeners: { "click": "event($event)", "blur": "event($event)", "change": "event($event)", "focus": "event($event)", "focusin": "event($event)", "focusout": "event($event)", "input": "event($event)", "invalid": "event($event)", "select": "event($event)" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"adf-attach-file-widget-container\">\n <div class=\"adf-attach-widget {{field.className}}\"\n [class.adf-readonly]=\"field.readOnly\">\n <label class=\"adf-label\" [attr.for]=\"field.id\">{{field.name}}\n <span class=\"adf-asterisk\" *ngIf=\"isRequired()\">*</span>\n </label>\n <div class=\"adf-attach-widget-container\" (focusout)=\"markAsTouched()\">\n <div class=\"adf-attach-widget__menu-upload\" *ngIf=\"isUploadButtonVisible()\">\n <button\n (click)=\"openSelectDialog()\"\n mat-raised-button\n class=\"adf-attach-widget__menu-upload__button\"\n color=\"primary\"\n [id]=\"field.id\"\n [title]=\"field.tooltip\">\n {{ 'FORM.FIELD.ATTACH' | translate }}\n <mat-icon class=\"adf-attach-widget__menu-upload__button__icon\">{{getWidgetIcon()}}</mat-icon>\n </button>\n </div>\n </div>\n </div>\n\n <div data-automation-id=\"adf-attach-widget-readonly-list\" class=\"adf-attach-widget-readonly-table\">\n <adf-cloud-file-properties-table\n [uploadedFiles]=\"uploadedFiles\"\n [hasFile]=\"hasFile\"\n [selectedNode]=\"selectedNode\"\n [field]=\"field\"\n [displayedColumns]=\"displayedColumns\"\n [mimeTypeIcon]=\"mimeTypeIcon\"\n (rowClick)=\"onRowClicked($event)\"\n (attachFileClick)=\"onAttachFileClicked($event)\"\n (downloadFile)=\"downloadContent($event)\"\n (uploadNewFileVersion)=\"onUploadNewFileVersion($event)\"\n (contentModelFileHandler)=\"contentModelFormFileHandler($event)\"\n (removeAttachFile)=\"onRemoveAttachFile($event)\"\n ></adf-cloud-file-properties-table>\n <div *ngIf=\"!hasFile && field.readOnly\" id=\"{{'adf-attach-empty-list-'+field.id}}\">\n {{ 'FORM.FIELD.NO_FILE_ATTACHED' | translate }}\n </div>\n\n </div>\n\n <error-widget [error]=\"field.validationSummary\"></error-widget>\n <error-widget *ngIf=\"!field.isValid && isTouched() && !isSelected()\" required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\"></error-widget>\n</div>\n", styles: [".adf-attach-widget-container{display:flex;align-items:center}.adf-attach-widget-container input{cursor:pointer;height:100%;right:0;opacity:0;position:absolute;top:0;width:300px;z-index:4}.adf-attach-widget__menu-upload{display:flex;align-items:center;margin-right:8px}.adf-attach-widget__menu-upload .adf-attach-widget__menu-upload__button{line-height:28px;font-size:var(--theme-caption-font-size)}.adf-attach-widget__menu-upload button span{font-size:var(--theme-caption-font-size)}.adf-attach-widget__input-type{width:.1px;height:.1px;opacity:0;overflow:hidden;position:absolute;z-index:-1}.adf-attach-widget__image-logo{padding-left:5px}.adf-attach-widget{display:flex;justify-content:space-between;word-break:break-all;padding:.4375em;border-bottom:none;background:var(--adf-theme-mat-grey-color-a200);min-height:27px;margin-bottom:12px}.adf-attach-widget .adf-label{width:32px;font-size:var(--theme-caption-font-size);line-height:var(--theme-headline-line-height);text-align:left;white-space:nowrap;margin-left:8px}.adf-attach-widget__icon{font-size:var(--theme-adf-picture-1-font-size);height:var(--theme-adf-picture-1-font-size);width:var(--theme-adf-picture-1-font-size);line-height:calc(var(--theme-adf-picture-1-font-size) - 2px)}.adf-attach-widget__reset{margin-top:-2px}.adf-attach-files-row{margin-bottom:0}.adf-attach-files-row>div:first-child{cursor:pointer}.adf-attach-selected-file-row>div:first-child .adf-datatable-selected{color:var(--theme-primary-color);padding-right:6px}.adf-attach-file-widget-container{margin:15px}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i1.ErrorWidgetComponent, selector: "error-widget", inputs: ["error", "required"] }, { kind: "component", type: i8.FilePropertiesTableCloudComponent, selector: "adf-cloud-file-properties-table", inputs: ["uploadedFiles", "hasFile", "selectedNode", "field", "displayedColumns", "mimeTypeIcon"], outputs: ["rowClick", "attachFileClick", "downloadFile", "uploadNewFileVersion", "contentModelFileHandler", "removeAttachFile"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
234
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AttachFileCloudWidgetComponent, decorators: [{
236
235
  type: Component,
237
236
  args: [{ selector: 'adf-cloud-attach-file-cloud-widget', host: {
238
237
  '(click)': 'event($event)',
@@ -244,8 +243,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
244
243
  '(input)': 'event($event)',
245
244
  '(invalid)': 'event($event)',
246
245
  '(select)': 'event($event)'
247
- }, encapsulation: ViewEncapsulation.None, template: "<div class=\"adf-attach-file-widget-container\">\n <div class=\"adf-attach-widget {{field.className}}\"\n [class.adf-readonly]=\"field.readOnly\">\n <label class=\"adf-label\" [attr.for]=\"field.id\">{{field.name}}\n <span class=\"adf-asterisk\" *ngIf=\"isRequired()\">*</span>\n </label>\n <div class=\"adf-attach-widget-container\" (focusout)=\"markAsTouched()\">\n <div class=\"adf-attach-widget__menu-upload\" *ngIf=\"isUploadButtonVisible()\">\n <button\n (click)=\"openSelectDialog()\"\n mat-raised-button\n class=\"adf-attach-widget__menu-upload__button\"\n color=\"primary\"\n [id]=\"field.id\"\n [matTooltip]=\"field.tooltip\"\n matTooltipPosition=\"above\"\n matTooltipShowDelay=\"1000\">\n {{ 'FORM.FIELD.ATTACH' | translate }}\n <mat-icon class=\"adf-attach-widget__menu-upload__button__icon\">{{getWidgetIcon()}}</mat-icon>\n </button>\n </div>\n </div>\n </div>\n\n <div data-automation-id=\"adf-attach-widget-readonly-list\" class=\"adf-attach-widget-readonly-table\">\n <adf-cloud-file-properties-table\n [uploadedFiles]=\"uploadedFiles\"\n [hasFile]=\"hasFile\"\n [selectedNode]=\"selectedNode\"\n [field]=\"field\"\n [displayedColumns]=\"displayedColumns\"\n [mimeTypeIcon]=\"mimeTypeIcon\"\n (rowClick)=\"onRowClicked($event)\"\n (attachFileClick)=\"onAttachFileClicked($event)\"\n (downloadFile)=\"downloadContent($event)\"\n (uploadNewFileVersion)=\"onUploadNewFileVersion($event)\"\n (contentModelFileHandler)=\"contentModelFormFileHandler($event)\"\n (removeAttachFile)=\"onRemoveAttachFile($event)\"\n ></adf-cloud-file-properties-table>\n <div *ngIf=\"!hasFile && field.readOnly\" id=\"{{'adf-attach-empty-list-'+field.id}}\">\n {{ 'FORM.FIELD.NO_FILE_ATTACHED' | translate }}\n </div>\n\n </div>\n\n <error-widget [error]=\"field.validationSummary\"></error-widget>\n <error-widget *ngIf=\"!field.isValid && isTouched() && !isSelected()\" required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\"></error-widget>\n</div>\n", styles: [".adf-attach-widget-container{display:flex;align-items:center}.adf-attach-widget-container input{cursor:pointer;height:100%;right:0;opacity:0;position:absolute;top:0;width:300px;z-index:4}.adf-attach-widget__menu-upload{display:flex;align-items:center;margin-right:8px}.adf-attach-widget__menu-upload .adf-attach-widget__menu-upload__button{line-height:28px;font-size:var(--theme-caption-font-size)}.adf-attach-widget__menu-upload button span{font-size:var(--theme-caption-font-size)}.adf-attach-widget__input-type{width:.1px;height:.1px;opacity:0;overflow:hidden;position:absolute;z-index:-1}.adf-attach-widget__image-logo{padding-left:5px}.adf-attach-widget{display:flex;justify-content:space-between;word-break:break-all;padding:.4375em;border-bottom:none;background:var(--adf-theme-mat-grey-color-a200);min-height:27px;margin-bottom:12px}.adf-attach-widget .adf-label{width:32px;font-size:var(--theme-caption-font-size);line-height:var(--theme-headline-line-height);text-align:left;white-space:nowrap;margin-left:8px}.adf-attach-widget__icon{font-size:var(--theme-adf-picture-1-font-size);height:var(--theme-adf-picture-1-font-size);width:var(--theme-adf-picture-1-font-size);line-height:calc(var(--theme-adf-picture-1-font-size) - 2px)}.adf-attach-widget__reset{margin-top:-2px}.adf-attach-files-row>div:first-child{cursor:pointer}.adf-attach-files-row .adf-file{margin-bottom:0}.adf-attach-selected-file-row>div:first-child .adf-datatable-selected{color:var(--theme-primary-color);padding-right:6px}.adf-attach-file-widget-container{margin:15px}\n"] }]
246
+ }, encapsulation: ViewEncapsulation.None, template: "<div class=\"adf-attach-file-widget-container\">\n <div class=\"adf-attach-widget {{field.className}}\"\n [class.adf-readonly]=\"field.readOnly\">\n <label class=\"adf-label\" [attr.for]=\"field.id\">{{field.name}}\n <span class=\"adf-asterisk\" *ngIf=\"isRequired()\">*</span>\n </label>\n <div class=\"adf-attach-widget-container\" (focusout)=\"markAsTouched()\">\n <div class=\"adf-attach-widget__menu-upload\" *ngIf=\"isUploadButtonVisible()\">\n <button\n (click)=\"openSelectDialog()\"\n mat-raised-button\n class=\"adf-attach-widget__menu-upload__button\"\n color=\"primary\"\n [id]=\"field.id\"\n [title]=\"field.tooltip\">\n {{ 'FORM.FIELD.ATTACH' | translate }}\n <mat-icon class=\"adf-attach-widget__menu-upload__button__icon\">{{getWidgetIcon()}}</mat-icon>\n </button>\n </div>\n </div>\n </div>\n\n <div data-automation-id=\"adf-attach-widget-readonly-list\" class=\"adf-attach-widget-readonly-table\">\n <adf-cloud-file-properties-table\n [uploadedFiles]=\"uploadedFiles\"\n [hasFile]=\"hasFile\"\n [selectedNode]=\"selectedNode\"\n [field]=\"field\"\n [displayedColumns]=\"displayedColumns\"\n [mimeTypeIcon]=\"mimeTypeIcon\"\n (rowClick)=\"onRowClicked($event)\"\n (attachFileClick)=\"onAttachFileClicked($event)\"\n (downloadFile)=\"downloadContent($event)\"\n (uploadNewFileVersion)=\"onUploadNewFileVersion($event)\"\n (contentModelFileHandler)=\"contentModelFormFileHandler($event)\"\n (removeAttachFile)=\"onRemoveAttachFile($event)\"\n ></adf-cloud-file-properties-table>\n <div *ngIf=\"!hasFile && field.readOnly\" id=\"{{'adf-attach-empty-list-'+field.id}}\">\n {{ 'FORM.FIELD.NO_FILE_ATTACHED' | translate }}\n </div>\n\n </div>\n\n <error-widget [error]=\"field.validationSummary\"></error-widget>\n <error-widget *ngIf=\"!field.isValid && isTouched() && !isSelected()\" required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\"></error-widget>\n</div>\n", styles: [".adf-attach-widget-container{display:flex;align-items:center}.adf-attach-widget-container input{cursor:pointer;height:100%;right:0;opacity:0;position:absolute;top:0;width:300px;z-index:4}.adf-attach-widget__menu-upload{display:flex;align-items:center;margin-right:8px}.adf-attach-widget__menu-upload .adf-attach-widget__menu-upload__button{line-height:28px;font-size:var(--theme-caption-font-size)}.adf-attach-widget__menu-upload button span{font-size:var(--theme-caption-font-size)}.adf-attach-widget__input-type{width:.1px;height:.1px;opacity:0;overflow:hidden;position:absolute;z-index:-1}.adf-attach-widget__image-logo{padding-left:5px}.adf-attach-widget{display:flex;justify-content:space-between;word-break:break-all;padding:.4375em;border-bottom:none;background:var(--adf-theme-mat-grey-color-a200);min-height:27px;margin-bottom:12px}.adf-attach-widget .adf-label{width:32px;font-size:var(--theme-caption-font-size);line-height:var(--theme-headline-line-height);text-align:left;white-space:nowrap;margin-left:8px}.adf-attach-widget__icon{font-size:var(--theme-adf-picture-1-font-size);height:var(--theme-adf-picture-1-font-size);width:var(--theme-adf-picture-1-font-size);line-height:calc(var(--theme-adf-picture-1-font-size) - 2px)}.adf-attach-widget__reset{margin-top:-2px}.adf-attach-files-row{margin-bottom:0}.adf-attach-files-row>div:first-child{cursor:pointer}.adf-attach-selected-file-row>div:first-child .adf-datatable-selected{color:var(--theme-primary-color);padding-right:6px}.adf-attach-file-widget-container{margin:15px}\n"] }]
248
247
  }], ctorParameters: function () { return [{ type: i1.FormService }, { type: i1.ThumbnailService }, { type: i2.ProcessCloudContentService }, { type: i1.NotificationService }, { type: i3.ContentCloudNodeSelectorService }, { type: i1.AppConfigService }, { type: i1.AlfrescoApiService }, { type: i4.ContentNodeSelectorPanelService }, { type: i4.NewVersionUploaderService }]; }, propDecorators: { error: [{
249
248
  type: Output
250
249
  }] } });
251
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNoLWZpbGUtY2xvdWQtd2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvZm9ybS9jb21wb25lbnRzL3dpZGdldHMvYXR0YWNoLWZpbGUvYXR0YWNoLWZpbGUtY2xvdWQtd2lkZ2V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvZm9ybS9jb21wb25lbnRzL3dpZGdldHMvYXR0YWNoLWZpbGUvYXR0YWNoLWZpbGUtY2xvdWQtd2lkZ2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBcUIsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFDSCxXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUVuQixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQiw0QkFBNEIsRUFFL0IsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQVEsUUFBUSxFQUFnQyxNQUFNLGtCQUFrQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3hHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25FLE9BQU8sRUFBOEIseUJBQXlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUN4SCxPQUFPLEVBQ0gsK0JBQStCLEVBQy9CLDRCQUE0QixFQUU1Qix5QkFBeUIsRUFFNUIs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QUM1QixVQUFVLEVBQUUsZUFBZTtxQkFDOUIsaUJBQ2MsaUJBQWlCLENBQUMsSUFBSTtnWkFRckMsS0FBSztzQkFESixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNCBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBGb3JtU2VydmljZSxcbiAgICBUaHVtYm5haWxTZXJ2aWNlLFxuICAgIE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgRm9ybVZhbHVlcyxcbiAgICBDb250ZW50TGlua01vZGVsLFxuICAgIEFwcENvbmZpZ1NlcnZpY2UsXG4gICAgQWxmcmVzY29BcGlTZXJ2aWNlLFxuICAgIFVwbG9hZFdpZGdldENvbnRlbnRMaW5rTW9kZWwsXG4gICAgRGVzdGluYXRpb25Gb2xkZXJQYXRoXG59IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBOb2RlLCBOb2Rlc0FwaSwgUmVsYXRlZENvbnRlbnRSZXByZXNlbnRhdGlvbiB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgQ29udGVudENsb3VkTm9kZVNlbGVjdG9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NvbnRlbnQtY2xvdWQtbm9kZS1zZWxlY3Rvci5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2Nlc3NDbG91ZENvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcHJvY2Vzcy1jbG91ZC1jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgVXBsb2FkQ2xvdWRXaWRnZXRDb21wb25lbnQgfSBmcm9tICcuL3VwbG9hZC1jbG91ZC53aWRnZXQnO1xuaW1wb3J0IHsgRGVzdGluYXRpb25Gb2xkZXJQYXRoTW9kZWwsIERlc3RpbmF0aW9uRm9sZGVyUGF0aFR5cGUgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZm9ybS1jbG91ZC1yZXByZXNlbnRhdGlvbi5tb2RlbCc7XG5pbXBvcnQge1xuICAgIENvbnRlbnROb2RlU2VsZWN0b3JQYW5lbFNlcnZpY2UsXG4gICAgTmV3VmVyc2lvblVwbG9hZGVyRGF0YUFjdGlvbixcbiAgICBOZXdWZXJzaW9uVXBsb2FkZXJEaWFsb2dEYXRhLFxuICAgIE5ld1ZlcnNpb25VcGxvYWRlclNlcnZpY2UsXG4gICAgVmVyc2lvbk1hbmFnZXJVcGxvYWREYXRhXG59IGZyb20gJ0BhbGZyZXNjby9hZGYtY29udGVudC1zZXJ2aWNlcyc7XG5cbmV4cG9ydCBjb25zdCBSRVRSSUVWRV9NRVRBREFUQV9PUFRJT04gPSAncmV0cmlldmVNZXRhZGF0YSc7XG5leHBvcnQgY29uc3QgQUxJQVNfUk9PVF9GT0xERVIgPSAnLXJvb3QtJztcbmV4cG9ydCBjb25zdCBBTElBU19VU0VSX0ZPTERFUiA9ICctbXktJztcbmV4cG9ydCBjb25zdCBBUFBfTkFNRSA9ICctYXBwbmFtZS0nO1xuZXhwb3J0IGNvbnN0IFZBTElEX0FMSUFTID0gW0FMSUFTX1JPT1RfRk9MREVSLCBBTElBU19VU0VSX0ZPTERFUiwgJy1zaGFyZWQtJ107XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWNsb3VkLWF0dGFjaC1maWxlLWNsb3VkLXdpZGdldCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2F0dGFjaC1maWxlLWNsb3VkLXdpZGdldC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYXR0YWNoLWZpbGUtY2xvdWQtd2lkZ2V0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICAnKGNsaWNrKSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhibHVyKSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhjaGFuZ2UpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGZvY3VzKSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhmb2N1c2luKSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhmb2N1c291dCknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoaW5wdXQpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGludmFsaWQpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKHNlbGVjdCknOiAnZXZlbnQoJGV2ZW50KSdcbiAgICB9LFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgQXR0YWNoRmlsZUNsb3VkV2lkZ2V0Q29tcG9uZW50IGV4dGVuZHMgVXBsb2FkQ2xvdWRXaWRnZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgdHlwZUlkID0gJ0F0dGFjaEZpbGVDbG91ZFdpZGdldENvbXBvbmVudCc7XG4gICAgcm9vdE5vZGVJZCA9IEFMSUFTX1VTRVJfRk9MREVSO1xuICAgIHNlbGVjdGVkTm9kZTogTm9kZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIGVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBwcml2YXRlIHByZXZpZXdTdGF0ZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgX25vZGVzQXBpOiBOb2Rlc0FwaTtcbiAgICBnZXQgbm9kZXNBcGkoKTogTm9kZXNBcGkge1xuICAgICAgICB0aGlzLl9ub2Rlc0FwaSA9IHRoaXMuX25vZGVzQXBpID8/IG5ldyBOb2Rlc0FwaSh0aGlzLmFwaVNlcnZpY2UuZ2V0SW5zdGFuY2UoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9ub2Rlc0FwaTtcbiAgICB9XG4gICAgZGlzcGxheWVkQ29sdW1ucyA9IFsnaWNvbicsICdmaWxlTmFtZScsICdhY3Rpb24nXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBmb3JtU2VydmljZTogRm9ybVNlcnZpY2UsXG4gICAgICAgIHRodW1ibmFpbHM6IFRodW1ibmFpbFNlcnZpY2UsXG4gICAgICAgIHByb2Nlc3NDbG91ZENvbnRlbnRTZXJ2aWNlOiBQcm9jZXNzQ2xvdWRDb250ZW50U2VydmljZSxcbiAgICAgICAgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb250ZW50Tm9kZVNlbGVjdG9yU2VydmljZTogQ29udGVudENsb3VkTm9kZVNlbGVjdG9yU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhcHBDb25maWdTZXJ2aWNlOiBBcHBDb25maWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFwaVNlcnZpY2U6IEFsZnJlc2NvQXBpU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb250ZW50Tm9kZVNlbGVjdG9yUGFuZWxTZXJ2aWNlOiBDb250ZW50Tm9kZVNlbGVjdG9yUGFuZWxTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG5ld1ZlcnNpb25VcGxvYWRlclNlcnZpY2U6IE5ld1ZlcnNpb25VcGxvYWRlclNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZm9ybVNlcnZpY2UsIHRodW1ibmFpbHMsIHByb2Nlc3NDbG91ZENvbnRlbnRTZXJ2aWNlLCBub3RpZmljYXRpb25TZXJ2aWNlKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgaWYgKHRoaXMuaGFzRmlsZSAmJiB0aGlzLmZpZWxkLnZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gdGhpcy5maWVsZC52YWx1ZSB8fCB0aGlzLmZpZWxkLmZvcm0udmFsdWVzW3RoaXMuZmllbGQuaWRdO1xuICAgICAgICAgICAgdGhpcy5jb250ZW50TW9kZWxGb3JtRmlsZUhhbmRsZXIoZmlsZXNbMF0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmllbGQucGFyYW1zLmRpc3BsYXlhYmxlQ01Qcm9wZXJ0aWVzID0gdGhpcy5maWVsZC5wYXJhbXMuZGlzcGxheWFibGVDTVByb3BlcnRpZXMgPz8gW107XG4gICAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucy5zcGxpY2UoMiwgMCwgLi4uKHRoaXMuZmllbGQucGFyYW1zLmRpc3BsYXlhYmxlQ01Qcm9wZXJ0aWVzPy5tYXAoKHByb3BlcnR5KSA9PiBwcm9wZXJ0eT8ubmFtZSkgfHwgW10pKTtcbiAgICAgICAgdGhpcy5zZXRQcmV2aWV3U3RhdGUoKTtcbiAgICB9XG5cbiAgICBpc1BhdGhTdGF0aWNUeXBlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZC5wYXJhbXM/LmZpbGVTb3VyY2U/LmRlc3RpbmF0aW9uRm9sZGVyUGF0aD8udHlwZSA9PT0gRGVzdGluYXRpb25Gb2xkZXJQYXRoVHlwZS5TVEFUSUNfVFlQRTtcbiAgICB9XG5cbiAgICBpc1VwbG9hZEJ1dHRvblZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoIXRoaXMuaGFzRmlsZSB8fCB0aGlzLm11bHRpcGxlT3B0aW9uKSAmJiAhdGhpcy5maWVsZC5yZWFkT25seTtcbiAgICB9XG5cbiAgICBvblJlbW92ZUF0dGFjaEZpbGUoZmlsZTogRmlsZSB8IFJlbGF0ZWRDb250ZW50UmVwcmVzZW50YXRpb24gfCBOb2RlKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlRmlsZShmaWxlKTtcbiAgICAgICAgaWYgKGZpbGVbJ2lkJ10gPT09IHRoaXMuc2VsZWN0ZWROb2RlPy5pZCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29udGVudE1vZGVsRm9ybUZpbGVIYW5kbGVyKHRoaXMuZmllbGQudmFsdWUubGVuZ3RoID4gMCA/IHRoaXMuZmllbGQudmFsdWVbMF0gOiBudWxsKTtcbiAgICB9XG5cbiAgICBmZXRjaEFwcE5hbWVGcm9tQXBwQ29uZmlnKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuZ2V0KCdhbGZyZXNjby1kZXBsb3llZC1hcHBzJylbMF0/Lm5hbWU7XG4gICAgfVxuXG4gICAgcmVwbGFjZUFwcE5hbWVBbGlhc1dpdGhWYWx1ZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBpZiAocGF0aD8ubWF0Y2goQVBQX05BTUUpKSB7XG4gICAgICAgICAgICBjb25zdCBhcHBOYW1lID0gdGhpcy5mZXRjaEFwcE5hbWVGcm9tQXBwQ29uZmlnKCk7XG4gICAgICAgICAgICByZXR1cm4gcGF0aC5yZXBsYWNlKEFQUF9OQU1FLCBhcHBOYW1lKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGF0aDtcbiAgICB9XG5cbiAgICBhc3luYyBvcGVuU2VsZWN0RGlhbG9nKCkge1xuICAgICAgICBpZiAodGhpcy5wcmV2aWV3U3RhdGUpIHtcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zaG93V2FybmluZygnRk9STS5QUkVWSUVXLkFUVEFDSF9GSUxFX1dJREdFVC5PTl9BVFRBQ0hfRklMRV9DTElDSycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRNb2RlID0gdGhpcy5maWVsZC5wYXJhbXMubXVsdGlwbGUgPyAnbXVsdGlwbGUnIDogJ3NpbmdsZSc7XG4gICAgICAgICAgICBjb25zdCBub2RlSWQgPSBhd2FpdCB0aGlzLmdldERlc3RpbmF0aW9uRm9sZGVyTm9kZUlkKCk7XG4gICAgICAgICAgICB0aGlzLnJvb3ROb2RlSWQgPSBub2RlSWQgPyBub2RlSWQgOiBBTElBU19VU0VSX0ZPTERFUjtcbiAgICAgICAgICAgIHRoaXMuY29udGVudE5vZGVTZWxlY3RvclBhbmVsU2VydmljZS5jdXN0b21Nb2RlbHMgPSB0aGlzLmZpZWxkLnBhcmFtcy5jdXN0b21Nb2RlbHM7XG5cbiAgICAgICAgICAgIHRoaXMuY29udGVudE5vZGVTZWxlY3RvclNlcnZpY2VcbiAgICAgICAgICAgICAgICAub3BlblVwbG9hZEZpbGVEaWFsb2codGhpcy5yb290Tm9kZUlkLCBzZWxlY3RlZE1vZGUsIHRoaXMuaXNBbGZyZXNjb0FuZExvY2FsKCksIHRydWUpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoc2VsZWN0aW9uczogTm9kZVtdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbnMuZm9yRWFjaCgobm9kZSkgPT4gKG5vZGVbJ2lzRXh0ZXJuYWwnXSA9IHRydWUpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uV2l0aG91dER1cGxpY2F0aW9uID0gdGhpcy5yZW1vdmVFeGlzdGluZ1NlbGVjdGlvbihzZWxlY3Rpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFkRmlsZXNBdHRhY2hlZCA9IHRoaXMuZmllbGQudmFsdWU/Lmxlbmd0aCA+IDA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZml4SW5jb21wYXRpYmlsaXR5RnJvbVByZXZpb3VzQW5kTmV3Rm9ybShzZWxlY3Rpb25XaXRob3V0RHVwbGljYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWhhZEZpbGVzQXR0YWNoZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudE1vZGVsRm9ybUZpbGVIYW5kbGVyKHRoaXMuZmllbGQudmFsdWUubGVuZ3RoID4gMCA/IHRoaXMuZmllbGQudmFsdWVbMF0gOiBudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBnZXREZXN0aW5hdGlvbkZvbGRlck5vZGVJZCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBsZXQgcm9vdE5vZGVJZDogc3RyaW5nO1xuXG4gICAgICAgIHN3aXRjaCAodGhpcy5maWVsZD8ucGFyYW1zPy5maWxlU291cmNlPy5kZXN0aW5hdGlvbkZvbGRlclBhdGg/LnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgRGVzdGluYXRpb25Gb2xkZXJQYXRoVHlwZS5TVEFUSUNfVFlQRTpcbiAgICAgICAgICAgICAgICByb290Tm9kZUlkID0gYXdhaXQgdGhpcy5nZXROb2RlSWRGcm9tUGF0aCh0aGlzLmZpZWxkLnBhcmFtcy5maWxlU291cmNlLmRlc3RpbmF0aW9uRm9sZGVyUGF0aCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIERlc3RpbmF0aW9uRm9sZGVyUGF0aFR5cGUuU1RSSU5HX1RZUEU6XG4gICAgICAgICAgICAgICAgcm9vdE5vZGVJZCA9IGF3YWl0IHRoaXMuZ2V0Tm9kZUlkRnJvbVBhdGgodGhpcy5maWVsZC5wYXJhbXMuZmlsZVNvdXJjZS5kZXN0aW5hdGlvbkZvbGRlclBhdGgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBEZXN0aW5hdGlvbkZvbGRlclBhdGhUeXBlLkZPTERFUl9UWVBFOlxuICAgICAgICAgICAgICAgIHJvb3ROb2RlSWQgPSBhd2FpdCB0aGlzLmdldE5vZGVJZEZyb21Gb2xkZXJWYXJpYWJsZVZhbHVlKHRoaXMuZmllbGQucGFyYW1zLmZpbGVTb3VyY2UuZGVzdGluYXRpb25Gb2xkZXJQYXRoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcm9vdE5vZGVJZCA9IGF3YWl0IHRoaXMuZ2V0Tm9kZUlkRnJvbVBhdGgoeyB0eXBlOiAnJywgdmFsdWU6IEFMSUFTX1VTRVJfRk9MREVSIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJvb3ROb2RlSWQ7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0Tm9kZUlkRnJvbVBhdGgoZGVzdGluYXRpb25Gb2xkZXJQYXRoOiBEZXN0aW5hdGlvbkZvbGRlclBhdGgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBsZXQgbm9kZUlkOiBzdHJpbmc7XG4gICAgICAgIGNvbnN0IGRlc3RpbmF0aW9uUGF0aCA9IHRoaXMuZ2V0QWxpYXNBbmRSZWxhdGl2ZVBhdGhGcm9tRGVzdGluYXRpb25Gb2xkZXJQYXRoKGRlc3RpbmF0aW9uRm9sZGVyUGF0aC52YWx1ZSk7XG4gICAgICAgIGRlc3RpbmF0aW9uUGF0aC5wYXRoID0gdGhpcy5yZXBsYWNlQXBwTmFtZUFsaWFzV2l0aFZhbHVlKGRlc3RpbmF0aW9uUGF0aC5wYXRoKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIG5vZGVJZCA9IGF3YWl0IHRoaXMuY29udGVudE5vZGVTZWxlY3RvclNlcnZpY2UuZ2V0Tm9kZUlkRnJvbVBhdGgoZGVzdGluYXRpb25QYXRoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3IuZW1pdChlcnJvcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbm9kZUlkO1xuICAgIH1cblxuICAgIGFzeW5jIGdldE5vZGVJZEZyb21Gb2xkZXJWYXJpYWJsZVZhbHVlKGRlc3RpbmF0aW9uRm9sZGVyUGF0aDogRGVzdGluYXRpb25Gb2xkZXJQYXRoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgbGV0IG5vZGVJZDogc3RyaW5nO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbm9kZUlkID0gYXdhaXQgdGhpcy5jb250ZW50Tm9kZVNlbGVjdG9yU2VydmljZS5nZXROb2RlSWRGcm9tRm9sZGVyVmFyaWFibGVWYWx1ZShkZXN0aW5hdGlvbkZvbGRlclBhdGgudmFsdWUsIEFMSUFTX1VTRVJfRk9MREVSKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3IuZW1pdChlcnJvcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbm9kZUlkO1xuICAgIH1cblxuICAgIGdldEFsaWFzQW5kUmVsYXRpdmVQYXRoRnJvbURlc3RpbmF0aW9uRm9sZGVyUGF0aChkZXN0aW5hdGlvbkZvbGRlclBhdGg6IHN0cmluZyk6IERlc3RpbmF0aW9uRm9sZGVyUGF0aE1vZGVsIHtcbiAgICAgICAgbGV0IGFsaWFzOiBzdHJpbmc7XG4gICAgICAgIGxldCBwYXRoOiBzdHJpbmc7XG4gICAgICAgIGlmIChkZXN0aW5hdGlvbkZvbGRlclBhdGgpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0T2ZSZWxhdGl2ZVBhdGhJbmRleCA9IGRlc3RpbmF0aW9uRm9sZGVyUGF0aC5pbmRleE9mKCcvJyk7XG4gICAgICAgICAgICBpZiAoc3RhcnRPZlJlbGF0aXZlUGF0aEluZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICBhbGlhcyA9IGRlc3RpbmF0aW9uRm9sZGVyUGF0aC5zdWJzdHJpbmcoMCwgc3RhcnRPZlJlbGF0aXZlUGF0aEluZGV4KTtcbiAgICAgICAgICAgICAgICBwYXRoID0gZGVzdGluYXRpb25Gb2xkZXJQYXRoLnN1YnN0cmluZyhzdGFydE9mUmVsYXRpdmVQYXRoSW5kZXgsIGRlc3RpbmF0aW9uRm9sZGVyUGF0aC5sZW5ndGgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhbGlhcyA9IGRlc3RpbmF0aW9uRm9sZGVyUGF0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWRBbGlhcyhhbGlhcykgPyB7IGFsaWFzLCBwYXRoIH0gOiB7IGFsaWFzOiBBTElBU19VU0VSX0ZPTERFUiwgcGF0aDogdW5kZWZpbmVkIH07XG4gICAgfVxuXG4gICAgcmVtb3ZlRXhpc3RpbmdTZWxlY3Rpb24oc2VsZWN0aW9uczogTm9kZVtdKSB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nTm9kZTogTm9kZVtdID0gWy4uLih0aGlzLmZpZWxkLnZhbHVlIHx8IFtdKV07XG4gICAgICAgIHJldHVybiBzZWxlY3Rpb25zLmZpbHRlcigob3B0KSA9PiAhZXhpc3RpbmdOb2RlLnNvbWUoKG5vZGUpID0+IG5vZGUuaWQgPT09IG9wdC5pZCkpO1xuICAgIH1cblxuICAgIGRvd25sb2FkQ29udGVudChmaWxlOiBOb2RlKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvY2Vzc0Nsb3VkQ29udGVudFNlcnZpY2UuZG93bmxvYWRGaWxlKGZpbGUuaWQpO1xuICAgIH1cblxuICAgIG9uVXBsb2FkTmV3RmlsZVZlcnNpb24obm9kZTogTmV3VmVyc2lvblVwbG9hZGVyRGlhbG9nRGF0YSk6IHZvaWQge1xuICAgICAgICB0aGlzLm5ld1ZlcnNpb25VcGxvYWRlclNlcnZpY2Uub3BlblVwbG9hZE5ld1ZlcnNpb25EaWFsb2cobm9kZSkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgKG5ld1ZlcnNpb25VcGxvYWRlckRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobmV3VmVyc2lvblVwbG9hZGVyRGF0YS5hY3Rpb24gPT09IE5ld1ZlcnNpb25VcGxvYWRlckRhdGFBY3Rpb24udXBsb2FkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVwbGFjZU9sZEZpbGVWZXJzaW9uV2l0aE5ldyhuZXdWZXJzaW9uVXBsb2FkZXJEYXRhIGFzIFZlcnNpb25NYW5hZ2VyVXBsb2FkRGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChlcnJvcikgPT4gdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnNob3dFcnJvcihlcnJvci52YWx1ZSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvbkF0dGFjaEZpbGVDbGlja2VkKG5vZGVTZWxlY3RvcjogYW55KSB7XG4gICAgICAgIG5vZGVTZWxlY3Rvci5ub2RlSWQgPSBub2RlU2VsZWN0b3IuaWQ7XG4gICAgICAgIHRoaXMuZmlsZUNsaWNrZWQobmV3IENvbnRlbnRMaW5rTW9kZWwobm9kZVNlbGVjdG9yKSk7XG4gICAgfVxuXG4gICAgZ2V0V2lkZ2V0SWNvbigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0FsZnJlc2NvQW5kTG9jYWwoKSA/ICdmaWxlX3VwbG9hZCcgOiAnYXR0YWNoX2ZpbGUnO1xuICAgIH1cblxuICAgIG9uUm93Q2xpY2tlZChmaWxlPzogTm9kZSkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZE5vZGU/LmlkID09PSBmaWxlPy5pZCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGUgPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGUgPSBmaWxlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29udGVudE1vZGVsRm9ybUZpbGVIYW5kbGVyKHRoaXMuc2VsZWN0ZWROb2RlKTtcbiAgICB9XG5cbiAgICBjb250ZW50TW9kZWxGb3JtRmlsZUhhbmRsZXIoZmlsZT86IGFueSkge1xuICAgICAgICBpZiAoZmlsZT8uaWQgJiYgdGhpcy5pc1JldHJpZXZlTWV0YWRhdGFPcHRpb25FbmFibGVkKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlczogRm9ybVZhbHVlcyA9IHt9O1xuICAgICAgICAgICAgdGhpcy5ub2Rlc0FwaS5nZXROb2RlKGZpbGUuaWQpLnRoZW4oKGFjc05vZGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXRhZGF0YSA9IGFjc05vZGU/LmVudHJ5Py5wcm9wZXJ0aWVzO1xuICAgICAgICAgICAgICAgIGlmIChtZXRhZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMobWV0YWRhdGEpO1xuICAgICAgICAgICAgICAgICAgICBrZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2FuaXRpemVkS2V5ID0ga2V5LnJlcGxhY2UoJzonLCAnXycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzW3Nhbml0aXplZEtleV0gPSBtZXRhZGF0YVtrZXldO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtU2VydmljZS51cGRhdGVGb3JtVmFsdWVzUmVxdWVzdGVkLm5leHQodmFsdWVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbGVDbGlja2VkKG5ldyBVcGxvYWRXaWRnZXRDb250ZW50TGlua01vZGVsKGZpbGUsIHRoaXMuZmllbGQuaWQpKTtcbiAgICB9XG5cbiAgICBpc1JldHJpZXZlTWV0YWRhdGFPcHRpb25FbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZD8ucGFyYW1zPy5tZW51T3B0aW9ucyAmJiB0aGlzLmZpZWxkLnBhcmFtcy5tZW51T3B0aW9uc1tSRVRSSUVWRV9NRVRBREFUQV9PUFRJT05dO1xuICAgIH1cblxuICAgIGlzVmFsaWRBbGlhcyhhbGlhczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBhbGlhcyAmJiBWQUxJRF9BTElBUy5pbmNsdWRlcyhhbGlhcyk7XG4gICAgfVxuXG4gICAgaXNTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzRmlsZTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5jb250ZW50Tm9kZVNlbGVjdG9yUGFuZWxTZXJ2aWNlLmN1c3RvbU1vZGVscyA9IFtdO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0UHJldmlld1N0YXRlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByZXZpZXdTdGF0ZSA9IHRoaXMuZm9ybVNlcnZpY2UuZ2V0UHJldmlld1N0YXRlKCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImFkZi1hdHRhY2gtZmlsZS13aWRnZXQtY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImFkZi1hdHRhY2gtd2lkZ2V0IHt7ZmllbGQuY2xhc3NOYW1lfX1cIlxuICAgICAgICBbY2xhc3MuYWRmLXJlYWRvbmx5XT1cImZpZWxkLnJlYWRPbmx5XCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImFkZi1sYWJlbFwiIFthdHRyLmZvcl09XCJmaWVsZC5pZFwiPnt7ZmllbGQubmFtZX19XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkZi1hc3Rlcmlza1wiICpuZ0lmPVwiaXNSZXF1aXJlZCgpXCI+Kjwvc3Bhbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1hdHRhY2gtd2lkZ2V0LWNvbnRhaW5lclwiIChmb2N1c291dCk9XCJtYXJrQXNUb3VjaGVkKClcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtYXR0YWNoLXdpZGdldF9fbWVudS11cGxvYWRcIiAqbmdJZj1cImlzVXBsb2FkQnV0dG9uVmlzaWJsZSgpXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlblNlbGVjdERpYWxvZygpXCJcbiAgICAgICAgICAgICAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtYXR0YWNoLXdpZGdldF9fbWVudS11cGxvYWRfX2J1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCJmaWVsZC5pZFwiXG4gICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImZpZWxkLnRvb2x0aXBcIlxuICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiXG4gICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCIxMDAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAnRk9STS5GSUVMRC5BVFRBQ0gnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJhZGYtYXR0YWNoLXdpZGdldF9fbWVudS11cGxvYWRfX2J1dHRvbl9faWNvblwiPnt7Z2V0V2lkZ2V0SWNvbigpfX08L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtYXR0YWNoLXdpZGdldC1yZWFkb25seS1saXN0XCIgY2xhc3M9XCJhZGYtYXR0YWNoLXdpZGdldC1yZWFkb25seS10YWJsZVwiPlxuICAgICAgICA8YWRmLWNsb3VkLWZpbGUtcHJvcGVydGllcy10YWJsZVxuICAgICAgICAgICAgW3VwbG9hZGVkRmlsZXNdPVwidXBsb2FkZWRGaWxlc1wiXG4gICAgICAgICAgICBbaGFzRmlsZV09XCJoYXNGaWxlXCJcbiAgICAgICAgICAgIFtzZWxlY3RlZE5vZGVdPVwic2VsZWN0ZWROb2RlXCJcbiAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXG4gICAgICAgICAgICBbZGlzcGxheWVkQ29sdW1uc109XCJkaXNwbGF5ZWRDb2x1bW5zXCJcbiAgICAgICAgICAgIFttaW1lVHlwZUljb25dPVwibWltZVR5cGVJY29uXCJcbiAgICAgICAgICAgIChyb3dDbGljayk9XCJvblJvd0NsaWNrZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoYXR0YWNoRmlsZUNsaWNrKT1cIm9uQXR0YWNoRmlsZUNsaWNrZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoZG93bmxvYWRGaWxlKT1cImRvd25sb2FkQ29udGVudCgkZXZlbnQpXCJcbiAgICAgICAgICAgICh1cGxvYWROZXdGaWxlVmVyc2lvbik9XCJvblVwbG9hZE5ld0ZpbGVWZXJzaW9uKCRldmVudClcIlxuICAgICAgICAgICAgKGNvbnRlbnRNb2RlbEZpbGVIYW5kbGVyKT1cImNvbnRlbnRNb2RlbEZvcm1GaWxlSGFuZGxlcigkZXZlbnQpXCJcbiAgICAgICAgICAgIChyZW1vdmVBdHRhY2hGaWxlKT1cIm9uUmVtb3ZlQXR0YWNoRmlsZSgkZXZlbnQpXCJcbiAgICAgICAgPjwvYWRmLWNsb3VkLWZpbGUtcHJvcGVydGllcy10YWJsZT5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFoYXNGaWxlICYmIGZpZWxkLnJlYWRPbmx5XCIgaWQ9XCJ7eydhZGYtYXR0YWNoLWVtcHR5LWxpc3QtJytmaWVsZC5pZH19XCI+XG4gICAgICAgICAgICB7eyAnRk9STS5GSUVMRC5OT19GSUxFX0FUVEFDSEVEJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgIDwvZGl2PlxuXG4gICAgPGVycm9yLXdpZGdldCBbZXJyb3JdPVwiZmllbGQudmFsaWRhdGlvblN1bW1hcnlcIj48L2Vycm9yLXdpZGdldD5cbiAgICA8ZXJyb3Itd2lkZ2V0ICpuZ0lmPVwiIWZpZWxkLmlzVmFsaWQgJiYgaXNUb3VjaGVkKCkgJiYgIWlzU2VsZWN0ZWQoKVwiIHJlcXVpcmVkPVwie3sgJ0ZPUk0uRklFTEQuUkVRVUlSRUQnIHwgdHJhbnNsYXRlIH19XCI+PC9lcnJvci13aWRnZXQ+XG48L2Rpdj5cbiJdfQ==
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNoLWZpbGUtY2xvdWQtd2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvZm9ybS9jb21wb25lbnRzL3dpZGdldHMvYXR0YWNoLWZpbGUvYXR0YWNoLWZpbGUtY2xvdWQtd2lkZ2V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvZm9ybS9jb21wb25lbnRzL3dpZGdldHMvYXR0YWNoLWZpbGUvYXR0YWNoLWZpbGUtY2xvdWQtd2lkZ2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBcUIsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFDSCxXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUVuQixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQiw0QkFBNEIsRUFFL0IsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQVEsUUFBUSxFQUFnQyxNQUFNLGtCQUFrQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3hHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25FLE9BQU8sRUFBOEIseUJBQXlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUN4SCxPQUFPLEVBQ0gsK0JBQStCLEVBQy9CLDRCQUE0QixFQUU1Qix5QkFBeUIsRUFFNUIs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LFVBQVUsRUFBRSxlQUFlO3FCQUM5QixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJO2daQVFyQyxLQUFLO3NCQURKLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI0IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IgKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEZvcm1TZXJ2aWNlLFxuICAgIFRodW1ibmFpbFNlcnZpY2UsXG4gICAgTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBGb3JtVmFsdWVzLFxuICAgIENvbnRlbnRMaW5rTW9kZWwsXG4gICAgQXBwQ29uZmlnU2VydmljZSxcbiAgICBBbGZyZXNjb0FwaVNlcnZpY2UsXG4gICAgVXBsb2FkV2lkZ2V0Q29udGVudExpbmtNb2RlbCxcbiAgICBEZXN0aW5hdGlvbkZvbGRlclBhdGhcbn0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IE5vZGUsIE5vZGVzQXBpLCBSZWxhdGVkQ29udGVudFJlcHJlc2VudGF0aW9uIH0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBDb250ZW50Q2xvdWROb2RlU2VsZWN0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY29udGVudC1jbG91ZC1ub2RlLXNlbGVjdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvY2Vzc0Nsb3VkQ29udGVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wcm9jZXNzLWNsb3VkLWNvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBVcGxvYWRDbG91ZFdpZGdldENvbXBvbmVudCB9IGZyb20gJy4vdXBsb2FkLWNsb3VkLndpZGdldCc7XG5pbXBvcnQgeyBEZXN0aW5hdGlvbkZvbGRlclBhdGhNb2RlbCwgRGVzdGluYXRpb25Gb2xkZXJQYXRoVHlwZSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9mb3JtLWNsb3VkLXJlcHJlc2VudGF0aW9uLm1vZGVsJztcbmltcG9ydCB7XG4gICAgQ29udGVudE5vZGVTZWxlY3RvclBhbmVsU2VydmljZSxcbiAgICBOZXdWZXJzaW9uVXBsb2FkZXJEYXRhQWN0aW9uLFxuICAgIE5ld1ZlcnNpb25VcGxvYWRlckRpYWxvZ0RhdGEsXG4gICAgTmV3VmVyc2lvblVwbG9hZGVyU2VydmljZSxcbiAgICBWZXJzaW9uTWFuYWdlclVwbG9hZERhdGFcbn0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb250ZW50LXNlcnZpY2VzJztcblxuZXhwb3J0IGNvbnN0IFJFVFJJRVZFX01FVEFEQVRBX09QVElPTiA9ICdyZXRyaWV2ZU1ldGFkYXRhJztcbmV4cG9ydCBjb25zdCBBTElBU19ST09UX0ZPTERFUiA9ICctcm9vdC0nO1xuZXhwb3J0IGNvbnN0IEFMSUFTX1VTRVJfRk9MREVSID0gJy1teS0nO1xuZXhwb3J0IGNvbnN0IEFQUF9OQU1FID0gJy1hcHBuYW1lLSc7XG5leHBvcnQgY29uc3QgVkFMSURfQUxJQVMgPSBbQUxJQVNfUk9PVF9GT0xERVIsIEFMSUFTX1VTRVJfRk9MREVSLCAnLXNoYXJlZC0nXTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhZGYtY2xvdWQtYXR0YWNoLWZpbGUtY2xvdWQtd2lkZ2V0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXR0YWNoLWZpbGUtY2xvdWQtd2lkZ2V0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9hdHRhY2gtZmlsZS1jbG91ZC13aWRnZXQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICcoY2xpY2spJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGJsdXIpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGNoYW5nZSknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoZm9jdXMpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGZvY3VzaW4pJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGZvY3Vzb3V0KSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhpbnB1dCknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoaW52YWxpZCknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoc2VsZWN0KSc6ICdldmVudCgkZXZlbnQpJ1xuICAgIH0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBBdHRhY2hGaWxlQ2xvdWRXaWRnZXRDb21wb25lbnQgZXh0ZW5kcyBVcGxvYWRDbG91ZFdpZGdldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICB0eXBlSWQgPSAnQXR0YWNoRmlsZUNsb3VkV2lkZ2V0Q29tcG9uZW50JztcbiAgICByb290Tm9kZUlkID0gQUxJQVNfVVNFUl9GT0xERVI7XG4gICAgc2VsZWN0ZWROb2RlOiBOb2RlO1xuXG4gICAgQE91dHB1dCgpXG4gICAgZXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIHByaXZhdGUgcHJldmlld1N0YXRlID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfbm9kZXNBcGk6IE5vZGVzQXBpO1xuICAgIGdldCBub2Rlc0FwaSgpOiBOb2Rlc0FwaSB7XG4gICAgICAgIHRoaXMuX25vZGVzQXBpID0gdGhpcy5fbm9kZXNBcGkgPz8gbmV3IE5vZGVzQXBpKHRoaXMuYXBpU2VydmljZS5nZXRJbnN0YW5jZSgpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVzQXBpO1xuICAgIH1cbiAgICBkaXNwbGF5ZWRDb2x1bW5zID0gWydpY29uJywgJ2ZpbGVOYW1lJywgJ2FjdGlvbiddO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGZvcm1TZXJ2aWNlOiBGb3JtU2VydmljZSxcbiAgICAgICAgdGh1bWJuYWlsczogVGh1bWJuYWlsU2VydmljZSxcbiAgICAgICAgcHJvY2Vzc0Nsb3VkQ29udGVudFNlcnZpY2U6IFByb2Nlc3NDbG91ZENvbnRlbnRTZXJ2aWNlLFxuICAgICAgICBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbnRlbnROb2RlU2VsZWN0b3JTZXJ2aWNlOiBDb250ZW50Q2xvdWROb2RlU2VsZWN0b3JTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFwcENvbmZpZ1NlcnZpY2U6IEFwcENvbmZpZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYXBpU2VydmljZTogQWxmcmVzY29BcGlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbnRlbnROb2RlU2VsZWN0b3JQYW5lbFNlcnZpY2U6IENvbnRlbnROb2RlU2VsZWN0b3JQYW5lbFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbmV3VmVyc2lvblVwbG9hZGVyU2VydmljZTogTmV3VmVyc2lvblVwbG9hZGVyU2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcihmb3JtU2VydmljZSwgdGh1bWJuYWlscywgcHJvY2Vzc0Nsb3VkQ29udGVudFNlcnZpY2UsIG5vdGlmaWNhdGlvblNlcnZpY2UpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICBpZiAodGhpcy5oYXNGaWxlICYmIHRoaXMuZmllbGQudmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgZmlsZXMgPSB0aGlzLmZpZWxkLnZhbHVlIHx8IHRoaXMuZmllbGQuZm9ybS52YWx1ZXNbdGhpcy5maWVsZC5pZF07XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRNb2RlbEZvcm1GaWxlSGFuZGxlcihmaWxlc1swXSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWVsZC5wYXJhbXMuZGlzcGxheWFibGVDTVByb3BlcnRpZXMgPSB0aGlzLmZpZWxkLnBhcmFtcy5kaXNwbGF5YWJsZUNNUHJvcGVydGllcyA/PyBbXTtcbiAgICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLnNwbGljZSgyLCAwLCAuLi4odGhpcy5maWVsZC5wYXJhbXMuZGlzcGxheWFibGVDTVByb3BlcnRpZXM/Lm1hcCgocHJvcGVydHkpID0+IHByb3BlcnR5Py5uYW1lKSB8fCBbXSkpO1xuICAgICAgICB0aGlzLnNldFByZXZpZXdTdGF0ZSgpO1xuICAgIH1cblxuICAgIGlzUGF0aFN0YXRpY1R5cGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpZWxkLnBhcmFtcz8uZmlsZVNvdXJjZT8uZGVzdGluYXRpb25Gb2xkZXJQYXRoPy50eXBlID09PSBEZXN0aW5hdGlvbkZvbGRlclBhdGhUeXBlLlNUQVRJQ19UWVBFO1xuICAgIH1cblxuICAgIGlzVXBsb2FkQnV0dG9uVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICghdGhpcy5oYXNGaWxlIHx8IHRoaXMubXVsdGlwbGVPcHRpb24pICYmICF0aGlzLmZpZWxkLnJlYWRPbmx5O1xuICAgIH1cblxuICAgIG9uUmVtb3ZlQXR0YWNoRmlsZShmaWxlOiBGaWxlIHwgUmVsYXRlZENvbnRlbnRSZXByZXNlbnRhdGlvbiB8IE5vZGUpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVGaWxlKGZpbGUpO1xuICAgICAgICBpZiAoZmlsZVsnaWQnXSA9PT0gdGhpcy5zZWxlY3RlZE5vZGU/LmlkKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb250ZW50TW9kZWxGb3JtRmlsZUhhbmRsZXIodGhpcy5maWVsZC52YWx1ZS5sZW5ndGggPiAwID8gdGhpcy5maWVsZC52YWx1ZVswXSA6IG51bGwpO1xuICAgIH1cblxuICAgIGZldGNoQXBwTmFtZUZyb21BcHBDb25maWcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwQ29uZmlnU2VydmljZS5nZXQoJ2FsZnJlc2NvLWRlcGxveWVkLWFwcHMnKVswXT8ubmFtZTtcbiAgICB9XG5cbiAgICByZXBsYWNlQXBwTmFtZUFsaWFzV2l0aFZhbHVlKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmIChwYXRoPy5tYXRjaChBUFBfTkFNRSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGFwcE5hbWUgPSB0aGlzLmZldGNoQXBwTmFtZUZyb21BcHBDb25maWcoKTtcbiAgICAgICAgICAgIHJldHVybiBwYXRoLnJlcGxhY2UoQVBQX05BTUUsIGFwcE5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cblxuICAgIGFzeW5jIG9wZW5TZWxlY3REaWFsb2coKSB7XG4gICAgICAgIGlmICh0aGlzLnByZXZpZXdTdGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnNob3dXYXJuaW5nKCdGT1JNLlBSRVZJRVcuQVRUQUNIX0ZJTEVfV0lER0VULk9OX0FUVEFDSF9GSUxFX0NMSUNLJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZE1vZGUgPSB0aGlzLmZpZWxkLnBhcmFtcy5tdWx0aXBsZSA/ICdtdWx0aXBsZScgOiAnc2luZ2xlJztcbiAgICAgICAgICAgIGNvbnN0IG5vZGVJZCA9IGF3YWl0IHRoaXMuZ2V0RGVzdGluYXRpb25Gb2xkZXJOb2RlSWQoKTtcbiAgICAgICAgICAgIHRoaXMucm9vdE5vZGVJZCA9IG5vZGVJZCA/IG5vZGVJZCA6IEFMSUFTX1VTRVJfRk9MREVSO1xuICAgICAgICAgICAgdGhpcy5jb250ZW50Tm9kZVNlbGVjdG9yUGFuZWxTZXJ2aWNlLmN1c3RvbU1vZGVscyA9IHRoaXMuZmllbGQucGFyYW1zLmN1c3RvbU1vZGVscztcblxuICAgICAgICAgICAgdGhpcy5jb250ZW50Tm9kZVNlbGVjdG9yU2VydmljZVxuICAgICAgICAgICAgICAgIC5vcGVuVXBsb2FkRmlsZURpYWxvZyh0aGlzLnJvb3ROb2RlSWQsIHNlbGVjdGVkTW9kZSwgdGhpcy5pc0FsZnJlc2NvQW5kTG9jYWwoKSwgdHJ1ZSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChzZWxlY3Rpb25zOiBOb2RlW10pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9ucy5mb3JFYWNoKChub2RlKSA9PiAobm9kZVsnaXNFeHRlcm5hbCddID0gdHJ1ZSkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3Rpb25XaXRob3V0RHVwbGljYXRpb24gPSB0aGlzLnJlbW92ZUV4aXN0aW5nU2VsZWN0aW9uKHNlbGVjdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBoYWRGaWxlc0F0dGFjaGVkID0gdGhpcy5maWVsZC52YWx1ZT8ubGVuZ3RoID4gMDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maXhJbmNvbXBhdGliaWxpdHlGcm9tUHJldmlvdXNBbmROZXdGb3JtKHNlbGVjdGlvbldpdGhvdXREdXBsaWNhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaGFkRmlsZXNBdHRhY2hlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50TW9kZWxGb3JtRmlsZUhhbmRsZXIodGhpcy5maWVsZC52YWx1ZS5sZW5ndGggPiAwID8gdGhpcy5maWVsZC52YWx1ZVswXSA6IG51bGwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGdldERlc3RpbmF0aW9uRm9sZGVyTm9kZUlkKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGxldCByb290Tm9kZUlkOiBzdHJpbmc7XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLmZpZWxkPy5wYXJhbXM/LmZpbGVTb3VyY2U/LmRlc3RpbmF0aW9uRm9sZGVyUGF0aD8udHlwZSkge1xuICAgICAgICAgICAgY2FzZSBEZXN0aW5hdGlvbkZvbGRlclBhdGhUeXBlLlNUQVRJQ19UWVBFOlxuICAgICAgICAgICAgICAgIHJvb3ROb2RlSWQgPSBhd2FpdCB0aGlzLmdldE5vZGVJZEZyb21QYXRoKHRoaXMuZmllbGQucGFyYW1zLmZpbGVTb3VyY2UuZGVzdGluYXRpb25Gb2xkZXJQYXRoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRGVzdGluYXRpb25Gb2xkZXJQYXRoVHlwZS5TVFJJTkdfVFlQRTpcbiAgICAgICAgICAgICAgICByb290Tm9kZUlkID0gYXdhaXQgdGhpcy5nZXROb2RlSWRGcm9tUGF0aCh0aGlzLmZpZWxkLnBhcmFtcy5maWxlU291cmNlLmRlc3RpbmF0aW9uRm9sZGVyUGF0aCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIERlc3RpbmF0aW9uRm9sZGVyUGF0aFR5cGUuRk9MREVSX1RZUEU6XG4gICAgICAgICAgICAgICAgcm9vdE5vZGVJZCA9IGF3YWl0IHRoaXMuZ2V0Tm9kZUlkRnJvbUZvbGRlclZhcmlhYmxlVmFsdWUodGhpcy5maWVsZC5wYXJhbXMuZmlsZVNvdXJjZS5kZXN0aW5hdGlvbkZvbGRlclBhdGgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByb290Tm9kZUlkID0gYXdhaXQgdGhpcy5nZXROb2RlSWRGcm9tUGF0aCh7IHR5cGU6ICcnLCB2YWx1ZTogQUxJQVNfVVNFUl9GT0xERVIgfSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcm9vdE5vZGVJZDtcbiAgICB9XG5cbiAgICBhc3luYyBnZXROb2RlSWRGcm9tUGF0aChkZXN0aW5hdGlvbkZvbGRlclBhdGg6IERlc3RpbmF0aW9uRm9sZGVyUGF0aCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGxldCBub2RlSWQ6IHN0cmluZztcbiAgICAgICAgY29uc3QgZGVzdGluYXRpb25QYXRoID0gdGhpcy5nZXRBbGlhc0FuZFJlbGF0aXZlUGF0aEZyb21EZXN0aW5hdGlvbkZvbGRlclBhdGgoZGVzdGluYXRpb25Gb2xkZXJQYXRoLnZhbHVlKTtcbiAgICAgICAgZGVzdGluYXRpb25QYXRoLnBhdGggPSB0aGlzLnJlcGxhY2VBcHBOYW1lQWxpYXNXaXRoVmFsdWUoZGVzdGluYXRpb25QYXRoLnBhdGgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbm9kZUlkID0gYXdhaXQgdGhpcy5jb250ZW50Tm9kZVNlbGVjdG9yU2VydmljZS5nZXROb2RlSWRGcm9tUGF0aChkZXN0aW5hdGlvblBhdGgpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhpcy5lcnJvci5lbWl0KGVycm9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBub2RlSWQ7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0Tm9kZUlkRnJvbUZvbGRlclZhcmlhYmxlVmFsdWUoZGVzdGluYXRpb25Gb2xkZXJQYXRoOiBEZXN0aW5hdGlvbkZvbGRlclBhdGgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBsZXQgbm9kZUlkOiBzdHJpbmc7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBub2RlSWQgPSBhd2FpdCB0aGlzLmNvbnRlbnROb2RlU2VsZWN0b3JTZXJ2aWNlLmdldE5vZGVJZEZyb21Gb2xkZXJWYXJpYWJsZVZhbHVlKGRlc3RpbmF0aW9uRm9sZGVyUGF0aC52YWx1ZSwgQUxJQVNfVVNFUl9GT0xERVIpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhpcy5lcnJvci5lbWl0KGVycm9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBub2RlSWQ7XG4gICAgfVxuXG4gICAgZ2V0QWxpYXNBbmRSZWxhdGl2ZVBhdGhGcm9tRGVzdGluYXRpb25Gb2xkZXJQYXRoKGRlc3RpbmF0aW9uRm9sZGVyUGF0aDogc3RyaW5nKTogRGVzdGluYXRpb25Gb2xkZXJQYXRoTW9kZWwge1xuICAgICAgICBsZXQgYWxpYXM6IHN0cmluZztcbiAgICAgICAgbGV0IHBhdGg6IHN0cmluZztcbiAgICAgICAgaWYgKGRlc3RpbmF0aW9uRm9sZGVyUGF0aCkge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRPZlJlbGF0aXZlUGF0aEluZGV4ID0gZGVzdGluYXRpb25Gb2xkZXJQYXRoLmluZGV4T2YoJy8nKTtcbiAgICAgICAgICAgIGlmIChzdGFydE9mUmVsYXRpdmVQYXRoSW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgIGFsaWFzID0gZGVzdGluYXRpb25Gb2xkZXJQYXRoLnN1YnN0cmluZygwLCBzdGFydE9mUmVsYXRpdmVQYXRoSW5kZXgpO1xuICAgICAgICAgICAgICAgIHBhdGggPSBkZXN0aW5hdGlvbkZvbGRlclBhdGguc3Vic3RyaW5nKHN0YXJ0T2ZSZWxhdGl2ZVBhdGhJbmRleCwgZGVzdGluYXRpb25Gb2xkZXJQYXRoLmxlbmd0aCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFsaWFzID0gZGVzdGluYXRpb25Gb2xkZXJQYXRoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZEFsaWFzKGFsaWFzKSA/IHsgYWxpYXMsIHBhdGggfSA6IHsgYWxpYXM6IEFMSUFTX1VTRVJfRk9MREVSLCBwYXRoOiB1bmRlZmluZWQgfTtcbiAgICB9XG5cbiAgICByZW1vdmVFeGlzdGluZ1NlbGVjdGlvbihzZWxlY3Rpb25zOiBOb2RlW10pIHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmdOb2RlOiBOb2RlW10gPSBbLi4uKHRoaXMuZmllbGQudmFsdWUgfHwgW10pXTtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGlvbnMuZmlsdGVyKChvcHQpID0+ICFleGlzdGluZ05vZGUuc29tZSgobm9kZSkgPT4gbm9kZS5pZCA9PT0gb3B0LmlkKSk7XG4gICAgfVxuXG4gICAgZG93bmxvYWRDb250ZW50KGZpbGU6IE5vZGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzQ2xvdWRDb250ZW50U2VydmljZS5kb3dubG9hZEZpbGUoZmlsZS5pZCk7XG4gICAgfVxuXG4gICAgb25VcGxvYWROZXdGaWxlVmVyc2lvbihub2RlOiBOZXdWZXJzaW9uVXBsb2FkZXJEaWFsb2dEYXRhKTogdm9pZCB7XG4gICAgICAgIHRoaXMubmV3VmVyc2lvblVwbG9hZGVyU2VydmljZS5vcGVuVXBsb2FkTmV3VmVyc2lvbkRpYWxvZyhub2RlKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAobmV3VmVyc2lvblVwbG9hZGVyRGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChuZXdWZXJzaW9uVXBsb2FkZXJEYXRhLmFjdGlvbiA9PT0gTmV3VmVyc2lvblVwbG9hZGVyRGF0YUFjdGlvbi51cGxvYWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXBsYWNlT2xkRmlsZVZlcnNpb25XaXRoTmV3KG5ld1ZlcnNpb25VcGxvYWRlckRhdGEgYXMgVmVyc2lvbk1hbmFnZXJVcGxvYWREYXRhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKGVycm9yKSA9PiB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc2hvd0Vycm9yKGVycm9yLnZhbHVlKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG9uQXR0YWNoRmlsZUNsaWNrZWQobm9kZVNlbGVjdG9yOiBhbnkpIHtcbiAgICAgICAgbm9kZVNlbGVjdG9yLm5vZGVJZCA9IG5vZGVTZWxlY3Rvci5pZDtcbiAgICAgICAgdGhpcy5maWxlQ2xpY2tlZChuZXcgQ29udGVudExpbmtNb2RlbChub2RlU2VsZWN0b3IpKTtcbiAgICB9XG5cbiAgICBnZXRXaWRnZXRJY29uKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzQWxmcmVzY29BbmRMb2NhbCgpID8gJ2ZpbGVfdXBsb2FkJyA6ICdhdHRhY2hfZmlsZSc7XG4gICAgfVxuXG4gICAgb25Sb3dDbGlja2VkKGZpbGU/OiBOb2RlKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkTm9kZT8uaWQgPT09IGZpbGU/LmlkKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IGZpbGU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb250ZW50TW9kZWxGb3JtRmlsZUhhbmRsZXIodGhpcy5zZWxlY3RlZE5vZGUpO1xuICAgIH1cblxuICAgIGNvbnRlbnRNb2RlbEZvcm1GaWxlSGFuZGxlcihmaWxlPzogYW55KSB7XG4gICAgICAgIGlmIChmaWxlPy5pZCAmJiB0aGlzLmlzUmV0cmlldmVNZXRhZGF0YU9wdGlvbkVuYWJsZWQoKSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVzOiBGb3JtVmFsdWVzID0ge307XG4gICAgICAgICAgICB0aGlzLm5vZGVzQXBpLmdldE5vZGUoZmlsZS5pZCkudGhlbigoYWNzTm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1ldGFkYXRhID0gYWNzTm9kZT8uZW50cnk/LnByb3BlcnRpZXM7XG4gICAgICAgICAgICAgICAgaWYgKG1ldGFkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhtZXRhZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzYW5pdGl6ZWRLZXkgPSBrZXkucmVwbGFjZSgnOicsICdfJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXNbc2FuaXRpemVkS2V5XSA9IG1ldGFkYXRhW2tleV07XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLnVwZGF0ZUZvcm1WYWx1ZXNSZXF1ZXN0ZWQubmV4dCh2YWx1ZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmlsZUNsaWNrZWQobmV3IFVwbG9hZFdpZGdldENvbnRlbnRMaW5rTW9kZWwoZmlsZSwgdGhpcy5maWVsZC5pZCkpO1xuICAgIH1cblxuICAgIGlzUmV0cmlldmVNZXRhZGF0YU9wdGlvbkVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpZWxkPy5wYXJhbXM/Lm1lbnVPcHRpb25zICYmIHRoaXMuZmllbGQucGFyYW1zLm1lbnVPcHRpb25zW1JFVFJJRVZFX01FVEFEQVRBX09QVElPTl07XG4gICAgfVxuXG4gICAgaXNWYWxpZEFsaWFzKGFsaWFzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGFsaWFzICYmIFZBTElEX0FMSUFTLmluY2x1ZGVzKGFsaWFzKTtcbiAgICB9XG5cbiAgICBpc1NlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNGaWxlO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmNvbnRlbnROb2RlU2VsZWN0b3JQYW5lbFNlcnZpY2UuY3VzdG9tTW9kZWxzID0gW107XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRQcmV2aWV3U3RhdGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJldmlld1N0YXRlID0gdGhpcy5mb3JtU2VydmljZS5nZXRQcmV2aWV3U3RhdGUoKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYWRmLWF0dGFjaC1maWxlLXdpZGdldC1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYWRmLWF0dGFjaC13aWRnZXQge3tmaWVsZC5jbGFzc05hbWV9fVwiXG4gICAgICAgIFtjbGFzcy5hZGYtcmVhZG9ubHldPVwiZmllbGQucmVhZE9ubHlcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiYWRmLWxhYmVsXCIgW2F0dHIuZm9yXT1cImZpZWxkLmlkXCI+e3tmaWVsZC5uYW1lfX1cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWRmLWFzdGVyaXNrXCIgKm5nSWY9XCJpc1JlcXVpcmVkKClcIj4qPC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLWF0dGFjaC13aWRnZXQtY29udGFpbmVyXCIgKGZvY3Vzb3V0KT1cIm1hcmtBc1RvdWNoZWQoKVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1hdHRhY2gtd2lkZ2V0X19tZW51LXVwbG9hZFwiICpuZ0lmPVwiaXNVcGxvYWRCdXR0b25WaXNpYmxlKClcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuU2VsZWN0RGlhbG9nKClcIlxuICAgICAgICAgICAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1hdHRhY2gtd2lkZ2V0X19tZW51LXVwbG9hZF9fYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImZpZWxkLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImZpZWxkLnRvb2x0aXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdGT1JNLkZJRUxELkFUVEFDSCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFkZi1hdHRhY2gtd2lkZ2V0X19tZW51LXVwbG9hZF9fYnV0dG9uX19pY29uXCI+e3tnZXRXaWRnZXRJY29uKCl9fTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi1hdHRhY2gtd2lkZ2V0LXJlYWRvbmx5LWxpc3RcIiBjbGFzcz1cImFkZi1hdHRhY2gtd2lkZ2V0LXJlYWRvbmx5LXRhYmxlXCI+XG4gICAgICAgIDxhZGYtY2xvdWQtZmlsZS1wcm9wZXJ0aWVzLXRhYmxlXG4gICAgICAgICAgICBbdXBsb2FkZWRGaWxlc109XCJ1cGxvYWRlZEZpbGVzXCJcbiAgICAgICAgICAgIFtoYXNGaWxlXT1cImhhc0ZpbGVcIlxuICAgICAgICAgICAgW3NlbGVjdGVkTm9kZV09XCJzZWxlY3RlZE5vZGVcIlxuICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcbiAgICAgICAgICAgIFtkaXNwbGF5ZWRDb2x1bW5zXT1cImRpc3BsYXllZENvbHVtbnNcIlxuICAgICAgICAgICAgW21pbWVUeXBlSWNvbl09XCJtaW1lVHlwZUljb25cIlxuICAgICAgICAgICAgKHJvd0NsaWNrKT1cIm9uUm93Q2xpY2tlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChhdHRhY2hGaWxlQ2xpY2spPVwib25BdHRhY2hGaWxlQ2xpY2tlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChkb3dubG9hZEZpbGUpPVwiZG93bmxvYWRDb250ZW50KCRldmVudClcIlxuICAgICAgICAgICAgKHVwbG9hZE5ld0ZpbGVWZXJzaW9uKT1cIm9uVXBsb2FkTmV3RmlsZVZlcnNpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICAoY29udGVudE1vZGVsRmlsZUhhbmRsZXIpPVwiY29udGVudE1vZGVsRm9ybUZpbGVIYW5kbGVyKCRldmVudClcIlxuICAgICAgICAgICAgKHJlbW92ZUF0dGFjaEZpbGUpPVwib25SZW1vdmVBdHRhY2hGaWxlKCRldmVudClcIlxuICAgICAgICA+PC9hZGYtY2xvdWQtZmlsZS1wcm9wZXJ0aWVzLXRhYmxlPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWhhc0ZpbGUgJiYgZmllbGQucmVhZE9ubHlcIiBpZD1cInt7J2FkZi1hdHRhY2gtZW1wdHktbGlzdC0nK2ZpZWxkLmlkfX1cIj5cbiAgICAgICAgICAgIHt7ICdGT1JNLkZJRUxELk5PX0ZJTEVfQVRUQUNIRUQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG5cbiAgICA8ZXJyb3Itd2lkZ2V0IFtlcnJvcl09XCJmaWVsZC52YWxpZGF0aW9uU3VtbWFyeVwiPjwvZXJyb3Itd2lkZ2V0PlxuICAgIDxlcnJvci13aWRnZXQgKm5nSWY9XCIhZmllbGQuaXNWYWxpZCAmJiBpc1RvdWNoZWQoKSAmJiAhaXNTZWxlY3RlZCgpXCIgcmVxdWlyZWQ9XCJ7eyAnRk9STS5GSUVMRC5SRVFVSVJFRCcgfCB0cmFuc2xhdGUgfX1cIj48L2Vycm9yLXdpZGdldD5cbjwvZGl2PlxuIl19
@@ -87,11 +87,11 @@ export class FilePropertiesTableCloudComponent {
87
87
  return this.field?.params?.menuOptions ? this.field.params.menuOptions[option] : option !== RETRIEVE_METADATA_OPTION;
88
88
  }
89
89
  }
90
- FilePropertiesTableCloudComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: FilePropertiesTableCloudComponent, deps: [{ token: i1.LocalizedDatePipe }, { token: i1.ThumbnailService }], target: i0.ɵɵFactoryTarget.Component });
91
- FilePropertiesTableCloudComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: FilePropertiesTableCloudComponent, selector: "adf-cloud-file-properties-table", inputs: { uploadedFiles: "uploadedFiles", hasFile: "hasFile", selectedNode: "selectedNode", field: "field", displayedColumns: "displayedColumns", mimeTypeIcon: "mimeTypeIcon" }, outputs: { rowClick: "rowClick", attachFileClick: "attachFileClick", downloadFile: "downloadFile", uploadNewFileVersion: "uploadNewFileVersion", contentModelFileHandler: "contentModelFileHandler", removeAttachFile: "removeAttachFile" }, ngImport: i0, template: "<div class=\"adf-file-properties-table-container\">\n <table mat-table [dataSource]=\"uploadedFiles\" class=\"adf-properties-table adf-file-properties-table mat-elevation-z0\" *ngIf=\"hasFile\">\n <ng-container matColumnDef=\"icon\">\n <th mat-header-cell *matHeaderCellDef></th>\n <td mat-cell class=\"adf-file-properties-table-cell\" *matCellDef=\"let element\">\n <mat-icon mat-list-icon class=\"adf-datatable-selected\"\n *ngIf=\"selectedNode && element.id === selectedNode.id\" (click)=\"onRowClicked(element)\">\n check_circle\n </mat-icon>\n <img mat-list-icon class=\"adf-attach-widget__icon\"\n *ngIf=\"!selectedNode || element.id !== selectedNode.id\" [id]=\"'file-'+element?.id+'-icon'\"\n (click)=\"onRowClicked(element)\"\n (keyup.enter)=\"onRowClicked(element)\"\n [src]=\"element.content ? getIcon(element.content.mimeType) : getIcon(element['mimeType'])\"\n [alt]=\"mimeTypeIcon\" role=\"button\" tabindex=\"0\" />\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"fileName\">\n <th mat-header-cell *matHeaderCellDef>{{ 'FORM.FIELD.FILE_NAME' | translate }}</th>\n <td mat-cell class=\"adf-file-properties-table-cell\" *matCellDef=\"let element\">\n <span matLine id=\"{{'file-'+element?.id}}\"\n role=\"button\"\n tabindex=\"0\"\n class=\"adf-file\"\n (keyup.enter)=\"onAttachFileClicked(element)\"\n (click)=\"onAttachFileClicked(element)\"\n >{{ element.name }}</span>\n </td>\n </ng-container>\n\n <ng-container *ngFor=\"let columnName of field?.params?.displayableCMProperties\"\n [matColumnDef]=\"columnName.name\">\n <th mat-header-cell *matHeaderCellDef>{{\n columnName.title ? columnName.title : columnName.name | titlecase\n }}\n </th>\n <td mat-cell class=\"adf-file-properties-table-cell\" *matCellDef=\"let row\">\n <span matLine id=\"{{'fileProperty-'+row?.id+'-'+columnName?.name}}\" role=\"button\" tabindex=\"0\"\n (keyup.enter)=\"onRowClicked(row)\"\n (click)=\"onRowClicked(row)\">{{ getColumnValue(row, columnName) }}</span>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"action\">\n <th mat-header-cell *matHeaderCellDef></th>\n <td mat-cell class=\"adf-file-properties-table-cell\" *matCellDef=\"let element\">\n <button id=\"{{'file-'+element?.id+'-option-menu'}}\" mat-icon-button [matMenuTriggerFor]=\"fileActionMenu\"\n *ngIf=\"!!element.content?.mimeType\"\n [attr.aria-label]=\"'ADF_PROCESS_LIST.DETAILS.BUTTON.FILE_OPTION_MENU' | translate\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #fileActionMenu=\"matMenu\" xPosition=\"before\">\n <button *ngIf=\"displayMenuOption('show') && !!element.content?.mimeType\"\n id=\"{{'file-'+element?.id+'-show-file'}}\" mat-menu-item\n (click)=\"onAttachFileClicked(element)\">\n <mat-icon>visibility</mat-icon>\n <span>{{ 'FORM.FIELD.VIEW_FILE' | translate }}</span>\n </button>\n <button *ngIf=\"displayMenuOption('download') && !!element.content?.mimeType\"\n id=\"{{'file-'+element?.id+'-download-file'}}\" mat-menu-item\n (click)=\"downloadContent(element)\">\n <mat-icon>file_download</mat-icon>\n <span>{{ 'FORM.FIELD.DOWNLOAD_FILE' | translate }}</span>\n </button>\n <button *ngIf=\"displayMenuOption('retrieveMetadata') && !!element.content?.mimeType\"\n id=\"{{'file-'+element?.id+'-retrieve-file-metadata'}}\" mat-menu-item\n (click)=\"contentModelFormFileHandler(element)\">\n <mat-icon class=\"mat-24\">low_priority</mat-icon>\n <span>{{ 'ADF_CLOUD_FORM_COMPONENT.RETRIEVE_METADATA' | translate }}</span>\n </button>\n <button *ngIf=\"!field.readOnly && displayMenuOption('remove')\"\n id=\"{{'file-'+element?.id+'-remove-file'}}\" mat-menu-item\n [id]=\"'file-'+element?.id+'-remove'\"\n (click)=\"onRemoveAttachFile(element);\" (keyup.enter)=\"onRemoveAttachFile(element);\">\n <mat-icon class=\"mat-24\">highlight_off</mat-icon>\n <span>{{ 'FORM.FIELD.REMOVE_FILE' | translate }}</span>\n </button>\n <div *ngIf=\"displayMenuOption('newVersion')\">\n <button [adf-upload]=\"true\" [mode]=\"['click']\"\n (upload-files)=\"onUploadNewFileVersion($event, element);\"\n id=\"{{'file-'+ element?.id +'-upload-new-version'}}\" mat-menu-item>\n <mat-icon class=\"mat-24\">file_upload</mat-icon>\n <span>{{ 'ADF_VERSION_LIST.ACTIONS.UPLOAD.TITLE' | translate }}</span>\n </button>\n </div>\n </mat-menu>\n </td>\n </ng-container>\n <tr mat-header-row class=\"adf-file-properties-table-header-row\" *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n\n </table>\n</div>\n", styles: [".adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table{width:100%;border:1px solid var(--adf-theme-foreground-text-color-007);box-shadow:none}.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table .adf-file{cursor:pointer}.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table .adf-file:hover{text-decoration:underline}.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table .adf-datatable-selected{padding:6px}.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table tr.adf-file-properties-table-header-row{height:32px}.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table th{font-weight:700;padding-right:0}.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table td{max-width:50px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:0}.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table td.adf-file-properties-table-cell:first-of-type,.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table td.adf-file-properties-table-cell:last-of-type{width:18%}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i4.MatLine, selector: "[mat-line], [matLine]" }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.MatListIconCssMatStyler, selector: "[mat-list-icon], [matListIcon]" }, { kind: "component", type: i7.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i7.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i7.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i7.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i7.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i7.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i7.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i7.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i7.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i7.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i1.UploadDirective, selector: "[adf-upload]", inputs: ["adf-upload", "adf-upload-data", "mode", "multiple", "accept", "directory"] }, { kind: "pipe", type: i2.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] });
92
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: FilePropertiesTableCloudComponent, decorators: [{
90
+ FilePropertiesTableCloudComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FilePropertiesTableCloudComponent, deps: [{ token: i1.LocalizedDatePipe }, { token: i1.ThumbnailService }], target: i0.ɵɵFactoryTarget.Component });
91
+ FilePropertiesTableCloudComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FilePropertiesTableCloudComponent, selector: "adf-cloud-file-properties-table", inputs: { uploadedFiles: "uploadedFiles", hasFile: "hasFile", selectedNode: "selectedNode", field: "field", displayedColumns: "displayedColumns", mimeTypeIcon: "mimeTypeIcon" }, outputs: { rowClick: "rowClick", attachFileClick: "attachFileClick", downloadFile: "downloadFile", uploadNewFileVersion: "uploadNewFileVersion", contentModelFileHandler: "contentModelFileHandler", removeAttachFile: "removeAttachFile" }, ngImport: i0, template: "<div class=\"adf-file-properties-table-container\">\n <table mat-table [dataSource]=\"uploadedFiles\" class=\"adf-properties-table adf-file-properties-table mat-elevation-z0\" *ngIf=\"hasFile\">\n <ng-container matColumnDef=\"icon\">\n <th mat-header-cell *matHeaderCellDef></th>\n <td class=\"adf-file-properties-table-cell\" mat-cell *matCellDef=\"let element\">\n <mat-icon matListItemLine class=\"adf-datatable-selected\"\n *ngIf=\"selectedNode && element.id === selectedNode.id\" (click)=\"onRowClicked(element)\">\n check_circle\n </mat-icon>\n <img matListItemLine class=\"adf-attach-widget__icon\"\n *ngIf=\"!selectedNode || element.id !== selectedNode.id\" [id]=\"'file-'+element?.id+'-icon'\"\n (click)=\"onRowClicked(element)\"\n (keyup.enter)=\"onRowClicked(element)\"\n [src]=\"element.content ? getIcon(element.content.mimeType) : getIcon(element['mimeType'])\"\n [alt]=\"mimeTypeIcon\" role=\"button\" tabindex=\"0\" />\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"fileName\">\n <th mat-header-cell *matHeaderCellDef>{{ 'FORM.FIELD.FILE_NAME' | translate }}</th>\n <td mat-cell class=\"adf-file-properties-table-cell\" *matCellDef=\"let element\">\n <span matLine id=\"{{'file-'+element?.id}}\"\n role=\"button\"\n tabindex=\"0\"\n class=\"adf-file\"\n (keyup.enter)=\"onAttachFileClicked(element)\"\n (click)=\"onAttachFileClicked(element)\"\n >{{ element.name }}</span>\n </td>\n </ng-container>\n\n <ng-container *ngFor=\"let columnName of field?.params?.displayableCMProperties\"\n [matColumnDef]=\"columnName.name\">\n <th mat-header-cell *matHeaderCellDef>{{\n columnName.title ? columnName.title : columnName.name | titlecase\n }}\n </th>\n <td mat-cell class=\"adf-file-properties-table-cell\" *matCellDef=\"let row\">\n <span matLine id=\"{{'fileProperty-'+row?.id+'-'+columnName?.name}}\" role=\"button\" tabindex=\"0\"\n (keyup.enter)=\"onRowClicked(row)\"\n (click)=\"onRowClicked(row)\">{{ getColumnValue(row, columnName) }}</span>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"action\">\n <th mat-header-cell *matHeaderCellDef></th>\n <td mat-cell class=\"adf-file-properties-table-cell\" *matCellDef=\"let element\">\n <button id=\"{{'file-'+element?.id+'-option-menu'}}\" mat-icon-button [matMenuTriggerFor]=\"fileActionMenu\"\n *ngIf=\"!!element.content?.mimeType\"\n [attr.aria-label]=\"'ADF_PROCESS_LIST.DETAILS.BUTTON.FILE_OPTION_MENU' | translate\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #fileActionMenu=\"matMenu\" xPosition=\"before\">\n <button *ngIf=\"displayMenuOption('show') && !!element.content?.mimeType\"\n id=\"{{'file-'+element?.id+'-show-file'}}\" mat-menu-item\n (click)=\"onAttachFileClicked(element)\">\n <mat-icon>visibility</mat-icon>\n <span>{{ 'FORM.FIELD.VIEW_FILE' | translate }}</span>\n </button>\n <button *ngIf=\"displayMenuOption('download') && !!element.content?.mimeType\"\n id=\"{{'file-'+element?.id+'-download-file'}}\" mat-menu-item\n (click)=\"downloadContent(element)\">\n <mat-icon>file_download</mat-icon>\n <span>{{ 'FORM.FIELD.DOWNLOAD_FILE' | translate }}</span>\n </button>\n <button *ngIf=\"displayMenuOption('retrieveMetadata') && !!element.content?.mimeType\"\n id=\"{{'file-'+element?.id+'-retrieve-file-metadata'}}\" mat-menu-item\n (click)=\"contentModelFormFileHandler(element)\">\n <mat-icon class=\"mat-24\">low_priority</mat-icon>\n <span>{{ 'ADF_CLOUD_FORM_COMPONENT.RETRIEVE_METADATA' | translate }}</span>\n </button>\n <button *ngIf=\"!field.readOnly && displayMenuOption('remove')\"\n id=\"{{'file-'+element?.id+'-remove-file'}}\" mat-menu-item\n [id]=\"'file-'+element?.id+'-remove'\"\n (click)=\"onRemoveAttachFile(element);\" (keyup.enter)=\"onRemoveAttachFile(element);\">\n <mat-icon class=\"mat-24\">highlight_off</mat-icon>\n <span>{{ 'FORM.FIELD.REMOVE_FILE' | translate }}</span>\n </button>\n <div *ngIf=\"displayMenuOption('newVersion')\">\n <button [adf-upload]=\"true\" [mode]=\"['click']\"\n (upload-files)=\"onUploadNewFileVersion($event, element);\"\n id=\"{{'file-'+ element?.id +'-upload-new-version'}}\" mat-menu-item>\n <mat-icon class=\"mat-24\">file_upload</mat-icon>\n <span>{{ 'ADF_VERSION_LIST.ACTIONS.UPLOAD.TITLE' | translate }}</span>\n </button>\n </div>\n </mat-menu>\n </td>\n </ng-container>\n <tr mat-header-row class=\"adf-file-properties-table-header-row\" *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n\n </table>\n</div>\n", styles: [".adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table{width:100%;border:1px solid var(--adf-theme-foreground-text-color-007);box-shadow:none}.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table .adf-file{cursor:pointer}.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table .adf-file:hover{text-decoration:underline}.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table .adf-datatable-selected{padding:6px}.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table tr.adf-file-properties-table-header-row{height:32px}.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table th{font-weight:700;padding-right:0}.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table td{max-width:50px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:0}.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table td.adf-file-properties-table-cell:first-of-type,.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table td.adf-file-properties-table-cell:last-of-type{width:18%}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i4.MatLine, selector: "[mat-line], [matLine]" }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.MatListItemLine, selector: "[matListItemLine]" }, { kind: "component", type: i7.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i7.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i7.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i7.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i7.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i7.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i7.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i7.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i7.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i7.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i1.UploadDirective, selector: "[adf-upload]", inputs: ["adf-upload", "adf-upload-data", "mode", "multiple", "accept", "directory"] }, { kind: "pipe", type: i2.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] });
92
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FilePropertiesTableCloudComponent, decorators: [{
93
93
  type: Component,
94
- args: [{ selector: 'adf-cloud-file-properties-table', template: "<div class=\"adf-file-properties-table-container\">\n <table mat-table [dataSource]=\"uploadedFiles\" class=\"adf-properties-table adf-file-properties-table mat-elevation-z0\" *ngIf=\"hasFile\">\n <ng-container matColumnDef=\"icon\">\n <th mat-header-cell *matHeaderCellDef></th>\n <td mat-cell class=\"adf-file-properties-table-cell\" *matCellDef=\"let element\">\n <mat-icon mat-list-icon class=\"adf-datatable-selected\"\n *ngIf=\"selectedNode && element.id === selectedNode.id\" (click)=\"onRowClicked(element)\">\n check_circle\n </mat-icon>\n <img mat-list-icon class=\"adf-attach-widget__icon\"\n *ngIf=\"!selectedNode || element.id !== selectedNode.id\" [id]=\"'file-'+element?.id+'-icon'\"\n (click)=\"onRowClicked(element)\"\n (keyup.enter)=\"onRowClicked(element)\"\n [src]=\"element.content ? getIcon(element.content.mimeType) : getIcon(element['mimeType'])\"\n [alt]=\"mimeTypeIcon\" role=\"button\" tabindex=\"0\" />\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"fileName\">\n <th mat-header-cell *matHeaderCellDef>{{ 'FORM.FIELD.FILE_NAME' | translate }}</th>\n <td mat-cell class=\"adf-file-properties-table-cell\" *matCellDef=\"let element\">\n <span matLine id=\"{{'file-'+element?.id}}\"\n role=\"button\"\n tabindex=\"0\"\n class=\"adf-file\"\n (keyup.enter)=\"onAttachFileClicked(element)\"\n (click)=\"onAttachFileClicked(element)\"\n >{{ element.name }}</span>\n </td>\n </ng-container>\n\n <ng-container *ngFor=\"let columnName of field?.params?.displayableCMProperties\"\n [matColumnDef]=\"columnName.name\">\n <th mat-header-cell *matHeaderCellDef>{{\n columnName.title ? columnName.title : columnName.name | titlecase\n }}\n </th>\n <td mat-cell class=\"adf-file-properties-table-cell\" *matCellDef=\"let row\">\n <span matLine id=\"{{'fileProperty-'+row?.id+'-'+columnName?.name}}\" role=\"button\" tabindex=\"0\"\n (keyup.enter)=\"onRowClicked(row)\"\n (click)=\"onRowClicked(row)\">{{ getColumnValue(row, columnName) }}</span>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"action\">\n <th mat-header-cell *matHeaderCellDef></th>\n <td mat-cell class=\"adf-file-properties-table-cell\" *matCellDef=\"let element\">\n <button id=\"{{'file-'+element?.id+'-option-menu'}}\" mat-icon-button [matMenuTriggerFor]=\"fileActionMenu\"\n *ngIf=\"!!element.content?.mimeType\"\n [attr.aria-label]=\"'ADF_PROCESS_LIST.DETAILS.BUTTON.FILE_OPTION_MENU' | translate\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #fileActionMenu=\"matMenu\" xPosition=\"before\">\n <button *ngIf=\"displayMenuOption('show') && !!element.content?.mimeType\"\n id=\"{{'file-'+element?.id+'-show-file'}}\" mat-menu-item\n (click)=\"onAttachFileClicked(element)\">\n <mat-icon>visibility</mat-icon>\n <span>{{ 'FORM.FIELD.VIEW_FILE' | translate }}</span>\n </button>\n <button *ngIf=\"displayMenuOption('download') && !!element.content?.mimeType\"\n id=\"{{'file-'+element?.id+'-download-file'}}\" mat-menu-item\n (click)=\"downloadContent(element)\">\n <mat-icon>file_download</mat-icon>\n <span>{{ 'FORM.FIELD.DOWNLOAD_FILE' | translate }}</span>\n </button>\n <button *ngIf=\"displayMenuOption('retrieveMetadata') && !!element.content?.mimeType\"\n id=\"{{'file-'+element?.id+'-retrieve-file-metadata'}}\" mat-menu-item\n (click)=\"contentModelFormFileHandler(element)\">\n <mat-icon class=\"mat-24\">low_priority</mat-icon>\n <span>{{ 'ADF_CLOUD_FORM_COMPONENT.RETRIEVE_METADATA' | translate }}</span>\n </button>\n <button *ngIf=\"!field.readOnly && displayMenuOption('remove')\"\n id=\"{{'file-'+element?.id+'-remove-file'}}\" mat-menu-item\n [id]=\"'file-'+element?.id+'-remove'\"\n (click)=\"onRemoveAttachFile(element);\" (keyup.enter)=\"onRemoveAttachFile(element);\">\n <mat-icon class=\"mat-24\">highlight_off</mat-icon>\n <span>{{ 'FORM.FIELD.REMOVE_FILE' | translate }}</span>\n </button>\n <div *ngIf=\"displayMenuOption('newVersion')\">\n <button [adf-upload]=\"true\" [mode]=\"['click']\"\n (upload-files)=\"onUploadNewFileVersion($event, element);\"\n id=\"{{'file-'+ element?.id +'-upload-new-version'}}\" mat-menu-item>\n <mat-icon class=\"mat-24\">file_upload</mat-icon>\n <span>{{ 'ADF_VERSION_LIST.ACTIONS.UPLOAD.TITLE' | translate }}</span>\n </button>\n </div>\n </mat-menu>\n </td>\n </ng-container>\n <tr mat-header-row class=\"adf-file-properties-table-header-row\" *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n\n </table>\n</div>\n", styles: [".adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table{width:100%;border:1px solid var(--adf-theme-foreground-text-color-007);box-shadow:none}.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table .adf-file{cursor:pointer}.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table .adf-file:hover{text-decoration:underline}.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table .adf-datatable-selected{padding:6px}.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table tr.adf-file-properties-table-header-row{height:32px}.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table th{font-weight:700;padding-right:0}.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table td{max-width:50px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:0}.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table td.adf-file-properties-table-cell:first-of-type,.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table td.adf-file-properties-table-cell:last-of-type{width:18%}\n"] }]
94
+ args: [{ selector: 'adf-cloud-file-properties-table', template: "<div class=\"adf-file-properties-table-container\">\n <table mat-table [dataSource]=\"uploadedFiles\" class=\"adf-properties-table adf-file-properties-table mat-elevation-z0\" *ngIf=\"hasFile\">\n <ng-container matColumnDef=\"icon\">\n <th mat-header-cell *matHeaderCellDef></th>\n <td class=\"adf-file-properties-table-cell\" mat-cell *matCellDef=\"let element\">\n <mat-icon matListItemLine class=\"adf-datatable-selected\"\n *ngIf=\"selectedNode && element.id === selectedNode.id\" (click)=\"onRowClicked(element)\">\n check_circle\n </mat-icon>\n <img matListItemLine class=\"adf-attach-widget__icon\"\n *ngIf=\"!selectedNode || element.id !== selectedNode.id\" [id]=\"'file-'+element?.id+'-icon'\"\n (click)=\"onRowClicked(element)\"\n (keyup.enter)=\"onRowClicked(element)\"\n [src]=\"element.content ? getIcon(element.content.mimeType) : getIcon(element['mimeType'])\"\n [alt]=\"mimeTypeIcon\" role=\"button\" tabindex=\"0\" />\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"fileName\">\n <th mat-header-cell *matHeaderCellDef>{{ 'FORM.FIELD.FILE_NAME' | translate }}</th>\n <td mat-cell class=\"adf-file-properties-table-cell\" *matCellDef=\"let element\">\n <span matLine id=\"{{'file-'+element?.id}}\"\n role=\"button\"\n tabindex=\"0\"\n class=\"adf-file\"\n (keyup.enter)=\"onAttachFileClicked(element)\"\n (click)=\"onAttachFileClicked(element)\"\n >{{ element.name }}</span>\n </td>\n </ng-container>\n\n <ng-container *ngFor=\"let columnName of field?.params?.displayableCMProperties\"\n [matColumnDef]=\"columnName.name\">\n <th mat-header-cell *matHeaderCellDef>{{\n columnName.title ? columnName.title : columnName.name | titlecase\n }}\n </th>\n <td mat-cell class=\"adf-file-properties-table-cell\" *matCellDef=\"let row\">\n <span matLine id=\"{{'fileProperty-'+row?.id+'-'+columnName?.name}}\" role=\"button\" tabindex=\"0\"\n (keyup.enter)=\"onRowClicked(row)\"\n (click)=\"onRowClicked(row)\">{{ getColumnValue(row, columnName) }}</span>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"action\">\n <th mat-header-cell *matHeaderCellDef></th>\n <td mat-cell class=\"adf-file-properties-table-cell\" *matCellDef=\"let element\">\n <button id=\"{{'file-'+element?.id+'-option-menu'}}\" mat-icon-button [matMenuTriggerFor]=\"fileActionMenu\"\n *ngIf=\"!!element.content?.mimeType\"\n [attr.aria-label]=\"'ADF_PROCESS_LIST.DETAILS.BUTTON.FILE_OPTION_MENU' | translate\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #fileActionMenu=\"matMenu\" xPosition=\"before\">\n <button *ngIf=\"displayMenuOption('show') && !!element.content?.mimeType\"\n id=\"{{'file-'+element?.id+'-show-file'}}\" mat-menu-item\n (click)=\"onAttachFileClicked(element)\">\n <mat-icon>visibility</mat-icon>\n <span>{{ 'FORM.FIELD.VIEW_FILE' | translate }}</span>\n </button>\n <button *ngIf=\"displayMenuOption('download') && !!element.content?.mimeType\"\n id=\"{{'file-'+element?.id+'-download-file'}}\" mat-menu-item\n (click)=\"downloadContent(element)\">\n <mat-icon>file_download</mat-icon>\n <span>{{ 'FORM.FIELD.DOWNLOAD_FILE' | translate }}</span>\n </button>\n <button *ngIf=\"displayMenuOption('retrieveMetadata') && !!element.content?.mimeType\"\n id=\"{{'file-'+element?.id+'-retrieve-file-metadata'}}\" mat-menu-item\n (click)=\"contentModelFormFileHandler(element)\">\n <mat-icon class=\"mat-24\">low_priority</mat-icon>\n <span>{{ 'ADF_CLOUD_FORM_COMPONENT.RETRIEVE_METADATA' | translate }}</span>\n </button>\n <button *ngIf=\"!field.readOnly && displayMenuOption('remove')\"\n id=\"{{'file-'+element?.id+'-remove-file'}}\" mat-menu-item\n [id]=\"'file-'+element?.id+'-remove'\"\n (click)=\"onRemoveAttachFile(element);\" (keyup.enter)=\"onRemoveAttachFile(element);\">\n <mat-icon class=\"mat-24\">highlight_off</mat-icon>\n <span>{{ 'FORM.FIELD.REMOVE_FILE' | translate }}</span>\n </button>\n <div *ngIf=\"displayMenuOption('newVersion')\">\n <button [adf-upload]=\"true\" [mode]=\"['click']\"\n (upload-files)=\"onUploadNewFileVersion($event, element);\"\n id=\"{{'file-'+ element?.id +'-upload-new-version'}}\" mat-menu-item>\n <mat-icon class=\"mat-24\">file_upload</mat-icon>\n <span>{{ 'ADF_VERSION_LIST.ACTIONS.UPLOAD.TITLE' | translate }}</span>\n </button>\n </div>\n </mat-menu>\n </td>\n </ng-container>\n <tr mat-header-row class=\"adf-file-properties-table-header-row\" *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n\n </table>\n</div>\n", styles: [".adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table{width:100%;border:1px solid var(--adf-theme-foreground-text-color-007);box-shadow:none}.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table .adf-file{cursor:pointer}.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table .adf-file:hover{text-decoration:underline}.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table .adf-datatable-selected{padding:6px}.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table tr.adf-file-properties-table-header-row{height:32px}.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table th{font-weight:700;padding-right:0}.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table td{max-width:50px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:0}.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table td.adf-file-properties-table-cell:first-of-type,.adf-file-properties-table-container .adf-file-properties-table.adf-properties-table table td.adf-file-properties-table-cell:last-of-type{width:18%}\n"] }]
95
95
  }], ctorParameters: function () { return [{ type: i1.LocalizedDatePipe }, { type: i1.ThumbnailService }]; }, propDecorators: { uploadedFiles: [{
96
96
  type: Input
97
97
  }], hasFile: [{
@@ -117,4 +117,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
117
117
  }], removeAttachFile: [{
118
118
  type: Output
119
119
  }] } });
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1wcm9wZXJ0aWVzLXRhYmxlLWNsb3VkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvZm9ybS9jb21wb25lbnRzL3dpZGdldHMvYXR0YWNoLWZpbGUvZmlsZS1wcm9wZXJ0aWVzLXRhYmxlLWNsb3VkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvZm9ybS9jb21wb25lbnRzL3dpZGdldHMvYXR0YWNoLWZpbGUvZmlsZS1wcm9wZXJ0aWVzLXRhYmxlLWNsb3VkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFHeEMsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsa0JBQWtCLENBQUM7QUFPM0QsTUFBTSxPQUFPLGlDQUFpQztJQXFDMUMsWUFBb0IsaUJBQW9DLEVBQVUsZ0JBQWtDO1FBQWhGLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFBVSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBakJwRyxhQUFRLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFHeEQsb0JBQWUsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUc3RCxpQkFBWSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRzVELHlC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QUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLHdCQUF3QixDQUFDO0lBQ3pILENBQUM7OzhIQTVGUSxpQ0FBaUM7a0hBQWpDLGlDQUFpQyxzZUMvQjlDLHU0TEE4RkE7MkZEL0RhLGlDQUFpQztrQkFMN0MsU0FBUzsrQkFDSSxpQ0FBaUM7dUlBTTNDLGFBQWE7c0JBRFosS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLEtBQUs7c0JBREosS0FBSztnQkFJTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxNQUFNO2dCQUlQLGVBQWU7c0JBRGQsTUFBTTtnQkFJUCxZQUFZO3NCQURYLE1BQU07Z0JBSVAsb0JBQW9CO3NCQURuQixNQUFNO2dCQUlQLHVCQUF1QjtzQkFEdEIsTUFBTTtnQkFJUCxnQkFBZ0I7c0JBRGYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9jYWxpemVkRGF0ZVBpcGUsIFRodW1ibmFpbFNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgTm9kZSB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgTmV3VmVyc2lvblVwbG9hZGVyRGlhbG9nRGF0YSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29udGVudC1zZXJ2aWNlcyc7XG5cbmV4cG9ydCBjb25zdCBSRVRSSUVWRV9NRVRBREFUQV9PUFRJT04gPSAncmV0cmlldmVNZXRhZGF0YSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWNsb3VkLWZpbGUtcHJvcGVydGllcy10YWJsZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtcHJvcGVydGllcy10YWJsZS1jbG91ZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZmlsZS1wcm9wZXJ0aWVzLXRhYmxlLWNsb3VkLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmlsZVByb3BlcnRpZXNUYWJsZUNsb3VkQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKVxuICAgIHVwbG9hZGVkRmlsZXM7XG5cbiAgICBASW5wdXQoKVxuICAgIGhhc0ZpbGU6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGVkTm9kZTogTm9kZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZmllbGQ7XG5cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXllZENvbHVtbnM7XG5cbiAgICBASW5wdXQoKVxuICAgIG1pbWVUeXBlSWNvbjtcblxuICAgIEBPdXRwdXQoKVxuICAgIHJvd0NsaWNrOiBFdmVudEVtaXR0ZXI8Tm9kZT4gPSBuZXcgRXZlbnRFbWl0dGVyPE5vZGU+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBhdHRhY2hGaWxlQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBkb3dubG9hZEZpbGU6IEV2ZW50RW1pdHRlcjxOb2RlPiA9IG5ldyBFdmVudEVtaXR0ZXI8Tm9kZT4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHVwbG9hZE5ld0ZpbGVWZXJzaW9uOiBFdmVudEVtaXR0ZXI8TmV3VmVyc2lvblVwbG9hZGVyRGlhbG9nRGF0YT4gPSBuZXcgRXZlbnRFbWl0dGVyPE5ld1ZlcnNpb25VcGxvYWRlckRpYWxvZ0RhdGE+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBjb250ZW50TW9kZWxGaWxlSGFuZGxlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPE5vZGU+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICByZW1vdmVBdHRhY2hGaWxlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBsb2NhbGl6ZWREYXRlUGlwZTogTG9jYWxpemVkRGF0ZVBpcGUsIHByaXZhdGUgdGh1bWJuYWlsU2VydmljZTogVGh1bWJuYWlsU2VydmljZSkge31cblxuICAgIG9uUm93Q2xpY2tlZChmaWxlPzogTm9kZSkge1xuICAgICAgICB0aGlzLnJvd0NsaWNrLmVtaXQoZmlsZSk7XG4gICAgfVxuXG4gICAgb25BdHRhY2hGaWxlQ2xpY2tlZChub2RlU2VsZWN0b3I6IGFueSkge1xuICAgICAgICB0aGlzLmF0dGFjaEZpbGVDbGljay5lbWl0KG5vZGVTZWxlY3Rvcik7XG4gICAgfVxuXG4gICAgZG93bmxvYWRDb250ZW50KGZpbGU6IE5vZGUpIHtcbiAgICAgICAgdGhpcy5kb3dubG9hZEZpbGUuZW1pdChmaWxlKTtcbiAgICB9XG5cbiAgICBvblVwbG9hZE5ld0ZpbGVWZXJzaW9uKGN1c3RvbUV2ZW50OiBhbnksIG5vZGU6IE5vZGUpe1xuICAgICAgICBjb25zdCBuZXdWZXJzaW9uVXBsb2FkZXJEaWFsb2dEYXRhOiBOZXdWZXJzaW9uVXBsb2FkZXJEaWFsb2dEYXRhID0ge1xuICAgICAgICAgICAgZmlsZTogY3VzdG9tRXZlbnQuZGV0YWlsLmZpbGVzWzBdLmZpbGUsXG4gICAgICAgICAgICBub2RlXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudXBsb2FkTmV3RmlsZVZlcnNpb24uZW1pdChuZXdWZXJzaW9uVXBsb2FkZXJEaWFsb2dEYXRhKTtcbiAgICB9XG5cbiAgICBjb250ZW50TW9kZWxGb3JtRmlsZUhhbmRsZXIoZmlsZT86IGFueSkge1xuICAgICAgICB0aGlzLmNvbnRlbnRNb2RlbEZpbGVIYW5kbGVyLmVtaXQoZmlsZSk7XG4gICAgfVxuXG4gICAgb25SZW1vdmVBdHRhY2hGaWxlKGZpbGU6IGFueSkge1xuICAgICAgICB0aGlzLnJlbW92ZUF0dGFjaEZpbGUuZW1pdChmaWxlKTtcbiAgICB9XG5cbiAgICBnZXRJY29uKG1pbWVUeXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy50aHVtYm5haWxTZXJ2aWNlLmdldE1pbWVUeXBlSWNvbihtaW1lVHlwZSk7XG4gICAgfVxuXG4gICAgZ2V0Q29sdW1uVmFsdWUoZmlsZSwgZGlzcGxheWFibGVDTVByb3BlcnR5KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFmaWxlLnByb3BlcnRpZXNbZGlzcGxheWFibGVDTVByb3BlcnR5LnByZWZpeGVkTmFtZV0pIHtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkUHJvcGVydHkgPSB0aGlzLmZpZWxkLnBhcmFtcy5kaXNwbGF5YWJsZUNNUHJvcGVydGllcz8uZmluZChwcm9wZXJ0eSA9PiBwcm9wZXJ0eS5uYW1lID09PSBkaXNwbGF5YWJsZUNNUHJvcGVydHkubmFtZSk7XG4gICAgICAgICAgICByZXR1cm4gZmllbGRQcm9wZXJ0eS5kZWZhdWx0VmFsdWUgPyB0aGlzLmNoZWNrRGF0ZVR5cGVBbmRUcmFuc2Zvcm0oZGlzcGxheWFibGVDTVByb3BlcnR5LmRhdGFUeXBlLCBmaWVsZFByb3BlcnR5LmRlZmF1bHRWYWx1ZSkgOiAnLS0nIDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsZS5wcm9wZXJ0aWVzW2Rpc3BsYXlhYmxlQ01Qcm9wZXJ0eS5wcmVmaXhlZE5hbWVdID9cbiAgICAgICAgICAgIHRoaXMuY2hlY2tEYXRlVHlwZUFuZFRyYW5zZm9ybShkaXNwbGF5YWJsZUNNUHJvcGVydHkuZGF0YVR5cGUsIGZpbGUucHJvcGVydGllc1tkaXNwbGF5YWJsZUNNUHJvcGVydHkucHJlZml4ZWROYW1lXSkgOlxuICAgICAgICAgICAgJy0tJyA7XG4gICAgfVxuXG4gICAgY2hlY2tEYXRlVHlwZUFuZFRyYW5zZm9ybShkYXRhVHlwZSwgdmFsdWUpOiBzdHJpbmcge1xuICAgICAgICBpZiAoZGF0YVR5cGUgPT09ICdkOmRhdGUnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGl6ZWREYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGRhdGFUeXBlID09PSAnZDpkYXRldGltZScpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsaXplZERhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgJ21lZGl1bScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBkaXNwbGF5TWVudU9wdGlvbihvcHRpb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZD8ucGFyYW1zPy5tZW51T3B0aW9ucyA/IHRoaXMuZmllbGQucGFyYW1zLm1lbnVPcHRpb25zW29wdGlvbl0gOiBvcHRpb24gIT09IFJFVFJJRVZFX01FVEFEQVRBX09QVElPTjtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYWRmLWZpbGUtcHJvcGVydGllcy10YWJsZS1jb250YWluZXJcIj5cbiAgICA8dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cInVwbG9hZGVkRmlsZXNcIiBjbGFzcz1cImFkZi1wcm9wZXJ0aWVzLXRhYmxlIGFkZi1maWxlLXByb3BlcnRpZXMtdGFibGUgbWF0LWVsZXZhdGlvbi16MFwiICpuZ0lmPVwiaGFzRmlsZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImljb25cIj5cbiAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+PC90aD5cbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCBjbGFzcz1cImFkZi1maWxlLXByb3BlcnRpZXMtdGFibGUtY2VsbFwiICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gbWF0LWxpc3QtaWNvbiBjbGFzcz1cImFkZi1kYXRhdGFibGUtc2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkTm9kZSAmJiBlbGVtZW50LmlkID09PSBzZWxlY3RlZE5vZGUuaWRcIiAoY2xpY2spPVwib25Sb3dDbGlja2VkKGVsZW1lbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrX2NpcmNsZVxuICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPGltZyBtYXQtbGlzdC1pY29uIGNsYXNzPVwiYWRmLWF0dGFjaC13aWRnZXRfX2ljb25cIlxuICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhc2VsZWN0ZWROb2RlIHx8IGVsZW1lbnQuaWQgIT09IHNlbGVjdGVkTm9kZS5pZFwiIFtpZF09XCInZmlsZS0nK2VsZW1lbnQ/LmlkKyctaWNvbidcIlxuICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUm93Q2xpY2tlZChlbGVtZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwib25Sb3dDbGlja2VkKGVsZW1lbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiZWxlbWVudC5jb250ZW50ID8gZ2V0SWNvbihlbGVtZW50LmNvbnRlbnQubWltZVR5cGUpIDogZ2V0SWNvbihlbGVtZW50WydtaW1lVHlwZSddKVwiXG4gICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIm1pbWVUeXBlSWNvblwiIHJvbGU9XCJidXR0b25cIiB0YWJpbmRleD1cIjBcIiAvPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJmaWxlTmFtZVwiPlxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj57eyAnRk9STS5GSUVMRC5GSUxFX05BTUUnIHwgdHJhbnNsYXRlIH19PC90aD5cbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCBjbGFzcz1cImFkZi1maWxlLXByb3BlcnRpZXMtdGFibGUtY2VsbFwiICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBtYXRMaW5lIGlkPVwie3snZmlsZS0nK2VsZW1lbnQ/LmlkfX1cIlxuICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIm9uQXR0YWNoRmlsZUNsaWNrZWQoZWxlbWVudClcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkF0dGFjaEZpbGVDbGlja2VkKGVsZW1lbnQpXCJcbiAgICAgICAgICAgICAgICA+e3sgZWxlbWVudC5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uTmFtZSBvZiBmaWVsZD8ucGFyYW1zPy5kaXNwbGF5YWJsZUNNUHJvcGVydGllc1wiXG4gICAgICAgICAgICAgICAgICAgICAgW21hdENvbHVtbkRlZl09XCJjb2x1bW5OYW1lLm5hbWVcIj5cbiAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+e3tcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uTmFtZS50aXRsZSA/IGNvbHVtbk5hbWUudGl0bGUgOiBjb2x1bW5OYW1lLm5hbWUgfCB0aXRsZWNhc2VcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCBjbGFzcz1cImFkZi1maWxlLXByb3BlcnRpZXMtdGFibGUtY2VsbFwiICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIG1hdExpbmUgaWQ9XCJ7eydmaWxlUHJvcGVydHktJytyb3c/LmlkKyctJytjb2x1bW5OYW1lPy5uYW1lfX1cIiByb2xlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwib25Sb3dDbGlja2VkKHJvdylcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblJvd0NsaWNrZWQocm93KVwiPnt7IGdldENvbHVtblZhbHVlKHJvdywgY29sdW1uTmFtZSkgfX08L3NwYW4+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImFjdGlvblwiPlxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj48L3RoPlxuICAgICAgICAgICAgPHRkIG1hdC1jZWxsIGNsYXNzPVwiYWRmLWZpbGUtcHJvcGVydGllcy10YWJsZS1jZWxsXCIgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9XCJ7eydmaWxlLScrZWxlbWVudD8uaWQrJy1vcHRpb24tbWVudSd9fVwiIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiZmlsZUFjdGlvbk1lbnVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhIWVsZW1lbnQuY29udGVudD8ubWltZVR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX1BST0NFU1NfTElTVC5ERVRBSUxTLkJVVFRPTi5GSUxFX09QVElPTl9NRU5VJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+bW9yZV92ZXJ0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8bWF0LW1lbnUgI2ZpbGVBY3Rpb25NZW51PVwibWF0TWVudVwiIHhQb3NpdGlvbj1cImJlZm9yZVwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZGlzcGxheU1lbnVPcHRpb24oJ3Nob3cnKSAmJiAhIWVsZW1lbnQuY29udGVudD8ubWltZVR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwie3snZmlsZS0nK2VsZW1lbnQ/LmlkKyctc2hvdy1maWxlJ319XCIgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkF0dGFjaEZpbGVDbGlja2VkKGVsZW1lbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+dmlzaWJpbGl0eTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyAnRk9STS5GSUVMRC5WSUVXX0ZJTEUnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImRpc3BsYXlNZW51T3B0aW9uKCdkb3dubG9hZCcpICYmICEhZWxlbWVudC5jb250ZW50Py5taW1lVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eydmaWxlLScrZWxlbWVudD8uaWQrJy1kb3dubG9hZC1maWxlJ319XCIgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZENvbnRlbnQoZWxlbWVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5maWxlX2Rvd25sb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdGT1JNLkZJRUxELkRPV05MT0FEX0ZJTEUnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImRpc3BsYXlNZW51T3B0aW9uKCdyZXRyaWV2ZU1ldGFkYXRhJykgJiYgISFlbGVtZW50LmNvbnRlbnQ/Lm1pbWVUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInt7J2ZpbGUtJytlbGVtZW50Py5pZCsnLXJldHJpZXZlLWZpbGUtbWV0YWRhdGEnfX1cIiBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbnRlbnRNb2RlbEZvcm1GaWxlSGFuZGxlcihlbGVtZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0LTI0XCI+bG93X3ByaW9yaXR5PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdBREZfQ0xPVURfRk9STV9DT01QT05FTlQuUkVUUklFVkVfTUVUQURBVEEnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFmaWVsZC5yZWFkT25seSAmJiBkaXNwbGF5TWVudU9wdGlvbigncmVtb3ZlJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwie3snZmlsZS0nK2VsZW1lbnQ/LmlkKyctcmVtb3ZlLWZpbGUnfX1cIiBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidmaWxlLScrZWxlbWVudD8uaWQrJy1yZW1vdmUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25SZW1vdmVBdHRhY2hGaWxlKGVsZW1lbnQpO1wiIChrZXl1cC5lbnRlcik9XCJvblJlbW92ZUF0dGFjaEZpbGUoZWxlbWVudCk7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtMjRcIj5oaWdobGlnaHRfb2ZmPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdGT1JNLkZJRUxELlJFTU9WRV9GSUxFJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkaXNwbGF5TWVudU9wdGlvbignbmV3VmVyc2lvbicpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFthZGYtdXBsb2FkXT1cInRydWVcIiBbbW9kZV09XCJbJ2NsaWNrJ11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodXBsb2FkLWZpbGVzKT1cIm9uVXBsb2FkTmV3RmlsZVZlcnNpb24oJGV2ZW50LCBlbGVtZW50KTtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInt7J2ZpbGUtJysgZWxlbWVudD8uaWQgKyctdXBsb2FkLW5ldy12ZXJzaW9uJ319XCIgbWF0LW1lbnUtaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtMjRcIj5maWxlX3VwbG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgJ0FERl9WRVJTSU9OX0xJU1QuQUNUSU9OUy5VUExPQUQuVElUTEUnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPHRyIG1hdC1oZWFkZXItcm93IGNsYXNzPVwiYWRmLWZpbGUtcHJvcGVydGllcy10YWJsZS1oZWFkZXItcm93XCIgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNcIj48L3RyPlxuICAgICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1uc1wiPjwvdHI+XG5cbiAgICA8L3RhYmxlPlxuPC9kaXY+XG4iXX0=
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1wcm9wZXJ0aWVzLXRhYmxlLWNsb3VkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvZm9ybS9jb21wb25lbnRzL3dpZGdldHMvYXR0YWNoLWZpbGUvZmlsZS1wcm9wZXJ0aWVzLXRhYmxlLWNsb3VkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvZm9ybS9jb21wb25lbnRzL3dpZGdldHMvYXR0YWNoLWZpbGUvZmlsZS1wcm9wZXJ0aWVzLXRhYmxlLWNsb3VkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFHeEMsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsa0JBQWtCLENBQUM7QUFPM0QsTUFBTSxPQUFPLGlDQUFpQztJQXFDMUMsWUFBb0IsaUJBQW9DLEVBQVUsZ0JBQWtDO1FBQWhGLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFBVSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBakJwRyxhQUFRLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFHeEQsb0JBQWUsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUc3RCxpQkFBWSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRzVELHlC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QUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLHdCQUF3QixDQUFDO0lBQ3pILENBQUM7OytIQTVGUSxpQ0FBaUM7bUhBQWpDLGlDQUFpQyxzZUMvQjlDLGc0TEE4RkE7NEZEL0RhLGlDQUFpQztrQkFMN0MsU0FBUzsrQkFDSSxpQ0FBaUM7dUlBTTNDLGFBQWE7c0JBRFosS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLEtBQUs7c0JBREosS0FBSztnQkFJTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxNQUFNO2dCQUlQLGVBQWU7c0JBRGQsTUFBTTtnQkFJUCxZQUFZO3NCQURYLE1BQU07Z0JBSVAsb0JBQW9CO3NCQURuQixNQUFNO2dCQUlQLHVCQUF1QjtzQkFEdEIsTUFBTTtnQkFJUCxnQkFBZ0I7c0JBRGYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9jYWxpemVkRGF0ZVBpcGUsIFRodW1ibmFpbFNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgTm9kZSB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgTmV3VmVyc2lvblVwbG9hZGVyRGlhbG9nRGF0YSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29udGVudC1zZXJ2aWNlcyc7XG5cbmV4cG9ydCBjb25zdCBSRVRSSUVWRV9NRVRBREFUQV9PUFRJT04gPSAncmV0cmlldmVNZXRhZGF0YSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWNsb3VkLWZpbGUtcHJvcGVydGllcy10YWJsZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtcHJvcGVydGllcy10YWJsZS1jbG91ZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZmlsZS1wcm9wZXJ0aWVzLXRhYmxlLWNsb3VkLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmlsZVByb3BlcnRpZXNUYWJsZUNsb3VkQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKVxuICAgIHVwbG9hZGVkRmlsZXM7XG5cbiAgICBASW5wdXQoKVxuICAgIGhhc0ZpbGU6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGVkTm9kZTogTm9kZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZmllbGQ7XG5cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXllZENvbHVtbnM7XG5cbiAgICBASW5wdXQoKVxuICAgIG1pbWVUeXBlSWNvbjtcblxuICAgIEBPdXRwdXQoKVxuICAgIHJvd0NsaWNrOiBFdmVudEVtaXR0ZXI8Tm9kZT4gPSBuZXcgRXZlbnRFbWl0dGVyPE5vZGU+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBhdHRhY2hGaWxlQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBkb3dubG9hZEZpbGU6IEV2ZW50RW1pdHRlcjxOb2RlPiA9IG5ldyBFdmVudEVtaXR0ZXI8Tm9kZT4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHVwbG9hZE5ld0ZpbGVWZXJzaW9uOiBFdmVudEVtaXR0ZXI8TmV3VmVyc2lvblVwbG9hZGVyRGlhbG9nRGF0YT4gPSBuZXcgRXZlbnRFbWl0dGVyPE5ld1ZlcnNpb25VcGxvYWRlckRpYWxvZ0RhdGE+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBjb250ZW50TW9kZWxGaWxlSGFuZGxlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPE5vZGU+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICByZW1vdmVBdHRhY2hGaWxlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBsb2NhbGl6ZWREYXRlUGlwZTogTG9jYWxpemVkRGF0ZVBpcGUsIHByaXZhdGUgdGh1bWJuYWlsU2VydmljZTogVGh1bWJuYWlsU2VydmljZSkge31cblxuICAgIG9uUm93Q2xpY2tlZChmaWxlPzogTm9kZSkge1xuICAgICAgICB0aGlzLnJvd0NsaWNrLmVtaXQoZmlsZSk7XG4gICAgfVxuXG4gICAgb25BdHRhY2hGaWxlQ2xpY2tlZChub2RlU2VsZWN0b3I6IGFueSkge1xuICAgICAgICB0aGlzLmF0dGFjaEZpbGVDbGljay5lbWl0KG5vZGVTZWxlY3Rvcik7XG4gICAgfVxuXG4gICAgZG93bmxvYWRDb250ZW50KGZpbGU6IE5vZGUpIHtcbiAgICAgICAgdGhpcy5kb3dubG9hZEZpbGUuZW1pdChmaWxlKTtcbiAgICB9XG5cbiAgICBvblVwbG9hZE5ld0ZpbGVWZXJzaW9uKGN1c3RvbUV2ZW50OiBhbnksIG5vZGU6IE5vZGUpe1xuICAgICAgICBjb25zdCBuZXdWZXJzaW9uVXBsb2FkZXJEaWFsb2dEYXRhOiBOZXdWZXJzaW9uVXBsb2FkZXJEaWFsb2dEYXRhID0ge1xuICAgICAgICAgICAgZmlsZTogY3VzdG9tRXZlbnQuZGV0YWlsLmZpbGVzWzBdLmZpbGUsXG4gICAgICAgICAgICBub2RlXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudXBsb2FkTmV3RmlsZVZlcnNpb24uZW1pdChuZXdWZXJzaW9uVXBsb2FkZXJEaWFsb2dEYXRhKTtcbiAgICB9XG5cbiAgICBjb250ZW50TW9kZWxGb3JtRmlsZUhhbmRsZXIoZmlsZT86IGFueSkge1xuICAgICAgICB0aGlzLmNvbnRlbnRNb2RlbEZpbGVIYW5kbGVyLmVtaXQoZmlsZSk7XG4gICAgfVxuXG4gICAgb25SZW1vdmVBdHRhY2hGaWxlKGZpbGU6IGFueSkge1xuICAgICAgICB0aGlzLnJlbW92ZUF0dGFjaEZpbGUuZW1pdChmaWxlKTtcbiAgICB9XG5cbiAgICBnZXRJY29uKG1pbWVUeXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy50aHVtYm5haWxTZXJ2aWNlLmdldE1pbWVUeXBlSWNvbihtaW1lVHlwZSk7XG4gICAgfVxuXG4gICAgZ2V0Q29sdW1uVmFsdWUoZmlsZSwgZGlzcGxheWFibGVDTVByb3BlcnR5KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFmaWxlLnByb3BlcnRpZXNbZGlzcGxheWFibGVDTVByb3BlcnR5LnByZWZpeGVkTmFtZV0pIHtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkUHJvcGVydHkgPSB0aGlzLmZpZWxkLnBhcmFtcy5kaXNwbGF5YWJsZUNNUHJvcGVydGllcz8uZmluZChwcm9wZXJ0eSA9PiBwcm9wZXJ0eS5uYW1lID09PSBkaXNwbGF5YWJsZUNNUHJvcGVydHkubmFtZSk7XG4gICAgICAgICAgICByZXR1cm4gZmllbGRQcm9wZXJ0eS5kZWZhdWx0VmFsdWUgPyB0aGlzLmNoZWNrRGF0ZVR5cGVBbmRUcmFuc2Zvcm0oZGlzcGxheWFibGVDTVByb3BlcnR5LmRhdGFUeXBlLCBmaWVsZFByb3BlcnR5LmRlZmF1bHRWYWx1ZSkgOiAnLS0nIDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsZS5wcm9wZXJ0aWVzW2Rpc3BsYXlhYmxlQ01Qcm9wZXJ0eS5wcmVmaXhlZE5hbWVdID9cbiAgICAgICAgICAgIHRoaXMuY2hlY2tEYXRlVHlwZUFuZFRyYW5zZm9ybShkaXNwbGF5YWJsZUNNUHJvcGVydHkuZGF0YVR5cGUsIGZpbGUucHJvcGVydGllc1tkaXNwbGF5YWJsZUNNUHJvcGVydHkucHJlZml4ZWROYW1lXSkgOlxuICAgICAgICAgICAgJy0tJyA7XG4gICAgfVxuXG4gICAgY2hlY2tEYXRlVHlwZUFuZFRyYW5zZm9ybShkYXRhVHlwZSwgdmFsdWUpOiBzdHJpbmcge1xuICAgICAgICBpZiAoZGF0YVR5cGUgPT09ICdkOmRhdGUnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGl6ZWREYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGRhdGFUeXBlID09PSAnZDpkYXRldGltZScpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsaXplZERhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgJ21lZGl1bScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBkaXNwbGF5TWVudU9wdGlvbihvcHRpb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZD8ucGFyYW1zPy5tZW51T3B0aW9ucyA/IHRoaXMuZmllbGQucGFyYW1zLm1lbnVPcHRpb25zW29wdGlvbl0gOiBvcHRpb24gIT09IFJFVFJJRVZFX01FVEFEQVRBX09QVElPTjtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYWRmLWZpbGUtcHJvcGVydGllcy10YWJsZS1jb250YWluZXJcIj5cbiAgICA8dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cInVwbG9hZGVkRmlsZXNcIiBjbGFzcz1cImFkZi1wcm9wZXJ0aWVzLXRhYmxlIGFkZi1maWxlLXByb3BlcnRpZXMtdGFibGUgbWF0LWVsZXZhdGlvbi16MFwiICpuZ0lmPVwiaGFzRmlsZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImljb25cIj5cbiAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+PC90aD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImFkZi1maWxlLXByb3BlcnRpZXMtdGFibGUtY2VsbFwiIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gbWF0TGlzdEl0ZW1MaW5lIGNsYXNzPVwiYWRmLWRhdGF0YWJsZS1zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWROb2RlICYmIGVsZW1lbnQuaWQgPT09IHNlbGVjdGVkTm9kZS5pZFwiIChjbGljayk9XCJvblJvd0NsaWNrZWQoZWxlbWVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgY2hlY2tfY2lyY2xlXG4gICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8aW1nIG1hdExpc3RJdGVtTGluZSBjbGFzcz1cImFkZi1hdHRhY2gtd2lkZ2V0X19pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhc2VsZWN0ZWROb2RlIHx8IGVsZW1lbnQuaWQgIT09IHNlbGVjdGVkTm9kZS5pZFwiIFtpZF09XCInZmlsZS0nK2VsZW1lbnQ/LmlkKyctaWNvbidcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Sb3dDbGlja2VkKGVsZW1lbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIm9uUm93Q2xpY2tlZChlbGVtZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiZWxlbWVudC5jb250ZW50ID8gZ2V0SWNvbihlbGVtZW50LmNvbnRlbnQubWltZVR5cGUpIDogZ2V0SWNvbihlbGVtZW50WydtaW1lVHlwZSddKVwiXG4gICAgICAgICAgICAgICAgICAgIFthbHRdPVwibWltZVR5cGVJY29uXCIgcm9sZT1cImJ1dHRvblwiIHRhYmluZGV4PVwiMFwiIC8+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImZpbGVOYW1lXCI+XG4gICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPnt7ICdGT1JNLkZJRUxELkZJTEVfTkFNRScgfCB0cmFuc2xhdGUgfX08L3RoPlxuICAgICAgICAgICAgPHRkIG1hdC1jZWxsIGNsYXNzPVwiYWRmLWZpbGUtcHJvcGVydGllcy10YWJsZS1jZWxsXCIgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIG1hdExpbmUgaWQ9XCJ7eydmaWxlLScrZWxlbWVudD8uaWR9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwib25BdHRhY2hGaWxlQ2xpY2tlZChlbGVtZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQXR0YWNoRmlsZUNsaWNrZWQoZWxlbWVudClcIlxuICAgICAgICAgICAgICAgID57eyBlbGVtZW50Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW5OYW1lIG9mIGZpZWxkPy5wYXJhbXM/LmRpc3BsYXlhYmxlQ01Qcm9wZXJ0aWVzXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0Q29sdW1uRGVmXT1cImNvbHVtbk5hbWUubmFtZVwiPlxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj57e1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW5OYW1lLnRpdGxlID8gY29sdW1uTmFtZS50aXRsZSA6IGNvbHVtbk5hbWUubmFtZSB8IHRpdGxlY2FzZVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRkIG1hdC1jZWxsIGNsYXNzPVwiYWRmLWZpbGUtcHJvcGVydGllcy10YWJsZS1jZWxsXCIgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gbWF0TGluZSBpZD1cInt7J2ZpbGVQcm9wZXJ0eS0nK3Jvdz8uaWQrJy0nK2NvbHVtbk5hbWU/Lm5hbWV9fVwiIHJvbGU9XCJidXR0b25cIiB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJvblJvd0NsaWNrZWQocm93KVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUm93Q2xpY2tlZChyb3cpXCI+e3sgZ2V0Q29sdW1uVmFsdWUocm93LCBjb2x1bW5OYW1lKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiYWN0aW9uXCI+XG4gICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPjwvdGg+XG4gICAgICAgICAgICA8dGQgbWF0LWNlbGwgY2xhc3M9XCJhZGYtZmlsZS1wcm9wZXJ0aWVzLXRhYmxlLWNlbGxcIiAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD1cInt7J2ZpbGUtJytlbGVtZW50Py5pZCsnLW9wdGlvbi1tZW51J319XCIgbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJmaWxlQWN0aW9uTWVudVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiEhZWxlbWVudC5jb250ZW50Py5taW1lVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBREZfUFJPQ0VTU19MSVNULkRFVEFJTFMuQlVUVE9OLkZJTEVfT1BUSU9OX01FTlUnIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxtYXQtbWVudSAjZmlsZUFjdGlvbk1lbnU9XCJtYXRNZW51XCIgeFBvc2l0aW9uPVwiYmVmb3JlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJkaXNwbGF5TWVudU9wdGlvbignc2hvdycpICYmICEhZWxlbWVudC5jb250ZW50Py5taW1lVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eydmaWxlLScrZWxlbWVudD8uaWQrJy1zaG93LWZpbGUnfX1cIiBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQXR0YWNoRmlsZUNsaWNrZWQoZWxlbWVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj52aXNpYmlsaXR5PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdGT1JNLkZJRUxELlZJRVdfRklMRScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZGlzcGxheU1lbnVPcHRpb24oJ2Rvd25sb2FkJykgJiYgISFlbGVtZW50LmNvbnRlbnQ/Lm1pbWVUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInt7J2ZpbGUtJytlbGVtZW50Py5pZCsnLWRvd25sb2FkLWZpbGUnfX1cIiBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkQ29udGVudChlbGVtZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmZpbGVfZG93bmxvYWQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgJ0ZPUk0uRklFTEQuRE9XTkxPQURfRklMRScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZGlzcGxheU1lbnVPcHRpb24oJ3JldHJpZXZlTWV0YWRhdGEnKSAmJiAhIWVsZW1lbnQuY29udGVudD8ubWltZVR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwie3snZmlsZS0nK2VsZW1lbnQ/LmlkKyctcmV0cmlldmUtZmlsZS1tZXRhZGF0YSd9fVwiIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29udGVudE1vZGVsRm9ybUZpbGVIYW5kbGVyKGVsZW1lbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtMjRcIj5sb3dfcHJpb3JpdHk8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgJ0FERl9DTE9VRF9GT1JNX0NPTVBPTkVOVC5SRVRSSUVWRV9NRVRBREFUQScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWZpZWxkLnJlYWRPbmx5ICYmIGRpc3BsYXlNZW51T3B0aW9uKCdyZW1vdmUnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eydmaWxlLScrZWxlbWVudD8uaWQrJy1yZW1vdmUtZmlsZSd9fVwiIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ2ZpbGUtJytlbGVtZW50Py5pZCsnLXJlbW92ZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblJlbW92ZUF0dGFjaEZpbGUoZWxlbWVudCk7XCIgKGtleXVwLmVudGVyKT1cIm9uUmVtb3ZlQXR0YWNoRmlsZShlbGVtZW50KTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdC0yNFwiPmhpZ2hsaWdodF9vZmY8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgJ0ZPUk0uRklFTEQuUkVNT1ZFX0ZJTEUnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRpc3BsYXlNZW51T3B0aW9uKCduZXdWZXJzaW9uJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gW2FkZi11cGxvYWRdPVwidHJ1ZVwiIFttb2RlXT1cIlsnY2xpY2snXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1cGxvYWQtZmlsZXMpPVwib25VcGxvYWROZXdGaWxlVmVyc2lvbigkZXZlbnQsIGVsZW1lbnQpO1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwie3snZmlsZS0nKyBlbGVtZW50Py5pZCArJy11cGxvYWQtbmV3LXZlcnNpb24nfX1cIiBtYXQtbWVudS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdC0yNFwiPmZpbGVfdXBsb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyAnQURGX1ZFUlNJT05fTElTVC5BQ1RJT05TLlVQTE9BRC5USVRMRScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8dHIgbWF0LWhlYWRlci1yb3cgY2xhc3M9XCJhZGYtZmlsZS1wcm9wZXJ0aWVzLXRhYmxlLWhlYWRlci1yb3dcIiAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1wiPjwvdHI+XG4gICAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zXCI+PC90cj5cblxuICAgIDwvdGFibGU+XG48L2Rpdj5cbiJdfQ==