@alfresco/adf-content-services 8.1.0-15045781057 → 8.1.0-15049531320

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 (202) hide show
  1. package/esm2022/lib/agent/services/agent.service.mjs +4 -4
  2. package/esm2022/lib/alfresco-icon/alfresco-icon.component.mjs +4 -4
  3. package/esm2022/lib/api-factories/alfresco-api-no-auth.service.mjs +4 -4
  4. package/esm2022/lib/api-factories/alfresco-api-v2-loader.service.mjs +4 -4
  5. package/esm2022/lib/aspect-list/aspect-list-dialog.component.mjs +4 -4
  6. package/esm2022/lib/aspect-list/aspect-list.component.mjs +4 -4
  7. package/esm2022/lib/aspect-list/aspect-list.module.mjs +5 -5
  8. package/esm2022/lib/aspect-list/services/aspect-list.service.mjs +4 -4
  9. package/esm2022/lib/aspect-list/services/dialog-aspect-list.service.mjs +4 -4
  10. package/esm2022/lib/aspect-list/services/node-aspect.service.mjs +4 -4
  11. package/esm2022/lib/auth-loader/content-auth-loader.service.mjs +4 -4
  12. package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +4 -4
  13. package/esm2022/lib/breadcrumb/breadcrumb.module.mjs +5 -5
  14. package/esm2022/lib/breadcrumb/dropdown-breadcrumb.component.mjs +4 -4
  15. package/esm2022/lib/category/categories-management/categories-management.component.mjs +4 -4
  16. package/esm2022/lib/category/category.module.mjs +5 -5
  17. package/esm2022/lib/category/services/category-tree-datasource.service.mjs +4 -4
  18. package/esm2022/lib/category/services/category.service.mjs +4 -4
  19. package/esm2022/lib/common/services/card-view-content-update.service.mjs +4 -4
  20. package/esm2022/lib/common/services/content.service.mjs +4 -4
  21. package/esm2022/lib/common/services/discovery-api.service.mjs +4 -4
  22. package/esm2022/lib/common/services/favorites-api.service.mjs +4 -4
  23. package/esm2022/lib/common/services/nodes-api.service.mjs +4 -4
  24. package/esm2022/lib/common/services/people-content.service.mjs +4 -4
  25. package/esm2022/lib/common/services/rendition.service.mjs +4 -4
  26. package/esm2022/lib/common/services/saved-searches.service.mjs +4 -4
  27. package/esm2022/lib/common/services/sites.service.mjs +4 -4
  28. package/esm2022/lib/common/services/upload.service.mjs +4 -4
  29. package/esm2022/lib/content-metadata/components/content-metadata/content-metadata-header.component.mjs +4 -4
  30. package/esm2022/lib/content-metadata/components/content-metadata/content-metadata.component.mjs +4 -4
  31. package/esm2022/lib/content-metadata/components/content-metadata-card/content-metadata-card.component.mjs +4 -4
  32. package/esm2022/lib/content-metadata/content-metadata.module.mjs +5 -5
  33. package/esm2022/lib/content-metadata/services/basic-properties.service.mjs +4 -4
  34. package/esm2022/lib/content-metadata/services/config/content-metadata-config.factory.mjs +4 -4
  35. package/esm2022/lib/content-metadata/services/content-metadata.service.mjs +4 -4
  36. package/esm2022/lib/content-metadata/services/content-type-property.service.mjs +4 -4
  37. package/esm2022/lib/content-metadata/services/property-descriptors.service.mjs +4 -4
  38. package/esm2022/lib/content-metadata/services/property-groups-translator.service.mjs +4 -4
  39. package/esm2022/lib/content-node-selector/content-node-dialog.service.mjs +4 -4
  40. package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.component.mjs +4 -4
  41. package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.service.mjs +4 -4
  42. package/esm2022/lib/content-node-selector/content-node-selector.component.mjs +4 -4
  43. package/esm2022/lib/content-node-selector/content-node-selector.module.mjs +5 -5
  44. package/esm2022/lib/content-node-selector/name-location-cell/name-location-cell.component.mjs +4 -4
  45. package/esm2022/lib/content-node-selector/site-dropdown/sites-dropdown.component.mjs +4 -4
  46. package/esm2022/lib/content-node-share/content-node-share.dialog.mjs +4 -4
  47. package/esm2022/lib/content-node-share/content-node-share.directive.mjs +4 -4
  48. package/esm2022/lib/content-node-share/content-node-share.module.mjs +5 -5
  49. package/esm2022/lib/content-node-share/services/shared-links-api.service.mjs +4 -4
  50. package/esm2022/lib/content-type/content-type-dialog.component.mjs +4 -4
  51. package/esm2022/lib/content-type/content-type.service.mjs +4 -4
  52. package/esm2022/lib/content.module.mjs +5 -5
  53. package/esm2022/lib/dialogs/category-selector/category-selector.dialog.mjs +4 -4
  54. package/esm2022/lib/dialogs/dialog.module.mjs +5 -5
  55. package/esm2022/lib/dialogs/download-zip/download-zip.dialog.mjs +4 -4
  56. package/esm2022/lib/dialogs/download-zip/download-zip.dialog.module.mjs +5 -5
  57. package/esm2022/lib/dialogs/download-zip/services/download-zip.service.mjs +4 -4
  58. package/esm2022/lib/dialogs/folder/folder.dialog.mjs +4 -4
  59. package/esm2022/lib/dialogs/library/library.dialog.mjs +4 -4
  60. package/esm2022/lib/dialogs/node-lock/node-lock.dialog.mjs +4 -4
  61. package/esm2022/lib/directives/auto-focus.directive.mjs +4 -4
  62. package/esm2022/lib/directives/check-allowable-operation.directive.mjs +4 -4
  63. package/esm2022/lib/directives/content-directive.module.mjs +5 -5
  64. package/esm2022/lib/directives/library-favorite.directive.mjs +4 -4
  65. package/esm2022/lib/directives/library-membership.directive.mjs +4 -4
  66. package/esm2022/lib/directives/node-counter.directive.mjs +7 -7
  67. package/esm2022/lib/directives/node-delete.directive.mjs +4 -4
  68. package/esm2022/lib/directives/node-download.directive.mjs +4 -4
  69. package/esm2022/lib/directives/node-favorite.directive.mjs +4 -4
  70. package/esm2022/lib/directives/node-lock.directive.mjs +4 -4
  71. package/esm2022/lib/directives/node-restore.directive.mjs +4 -4
  72. package/esm2022/lib/document-list/components/content-action/content-action-list.component.mjs +4 -4
  73. package/esm2022/lib/document-list/components/content-action/content-action.component.mjs +4 -4
  74. package/esm2022/lib/document-list/components/document-list.component.mjs +4 -4
  75. package/esm2022/lib/document-list/components/file-auto-download/file-auto-download.component.mjs +4 -4
  76. package/esm2022/lib/document-list/components/filter-header/filter-header.component.mjs +4 -4
  77. package/esm2022/lib/document-list/components/library-name-column/library-name-column.component.mjs +4 -4
  78. package/esm2022/lib/document-list/components/library-role-column/library-role-column.component.mjs +4 -4
  79. package/esm2022/lib/document-list/components/library-status-column/library-status-column.component.mjs +4 -4
  80. package/esm2022/lib/document-list/components/name-column/name-column.component.mjs +4 -4
  81. package/esm2022/lib/document-list/components/trashcan-name-column/trashcan-name-column.component.mjs +4 -4
  82. package/esm2022/lib/document-list/document-list.module.mjs +5 -5
  83. package/esm2022/lib/document-list/services/custom-resources.service.mjs +4 -4
  84. package/esm2022/lib/document-list/services/document-actions.service.mjs +4 -4
  85. package/esm2022/lib/document-list/services/document-list.service.mjs +4 -4
  86. package/esm2022/lib/document-list/services/folder-actions.service.mjs +4 -4
  87. package/esm2022/lib/document-list/services/lock.service.mjs +4 -4
  88. package/esm2022/lib/document-list/services/node-actions.service.mjs +4 -4
  89. package/esm2022/lib/group/services/group.service.mjs +4 -4
  90. package/esm2022/lib/legal-hold/services/legal-hold.service.mjs +4 -4
  91. package/esm2022/lib/material.module.mjs +5 -5
  92. package/esm2022/lib/mock/alfresco-api.service.mock.mjs +4 -4
  93. package/esm2022/lib/mock/search.component.mock.mjs +4 -4
  94. package/esm2022/lib/new-version-uploader/new-version-uploader.dialog.mjs +4 -4
  95. package/esm2022/lib/new-version-uploader/new-version-uploader.module.mjs +5 -5
  96. package/esm2022/lib/new-version-uploader/new-version-uploader.service.mjs +4 -4
  97. package/esm2022/lib/node-comments/node-comments.component.mjs +4 -4
  98. package/esm2022/lib/node-comments/node-comments.module.mjs +5 -5
  99. package/esm2022/lib/node-comments/services/node-comments.service.mjs +4 -4
  100. package/esm2022/lib/permission-manager/components/add-permission/add-permission-dialog.component.mjs +4 -4
  101. package/esm2022/lib/permission-manager/components/add-permission/add-permission-panel.component.mjs +4 -4
  102. package/esm2022/lib/permission-manager/components/add-permission/add-permission.component.mjs +4 -4
  103. package/esm2022/lib/permission-manager/components/add-permission/search-config-permission.service.mjs +4 -4
  104. package/esm2022/lib/permission-manager/components/inherited-button.directive.mjs +4 -4
  105. package/esm2022/lib/permission-manager/components/node-path-column/node-path-column.component.mjs +4 -4
  106. package/esm2022/lib/permission-manager/components/permission-container/permission-container.component.mjs +4 -4
  107. package/esm2022/lib/permission-manager/components/permission-list/permission-list.component.mjs +4 -4
  108. package/esm2022/lib/permission-manager/components/permission-list/permission-list.service.mjs +4 -4
  109. package/esm2022/lib/permission-manager/components/pop-over.directive.mjs +4 -4
  110. package/esm2022/lib/permission-manager/components/user-icon-column/user-icon-column.component.mjs +4 -4
  111. package/esm2022/lib/permission-manager/components/user-name-column/user-name-column.component.mjs +4 -4
  112. package/esm2022/lib/permission-manager/components/user-role-column/user-role-column.component.mjs +4 -4
  113. package/esm2022/lib/permission-manager/permission-manager.module.mjs +5 -5
  114. package/esm2022/lib/permission-manager/services/node-permission-dialog.service.mjs +4 -4
  115. package/esm2022/lib/permission-manager/services/node-permission.service.mjs +4 -4
  116. package/esm2022/lib/pipes/content-pipe.module.mjs +5 -5
  117. package/esm2022/lib/pipes/node-name-tooltip.pipe.mjs +4 -4
  118. package/esm2022/lib/prediction/services/prediction.service.mjs +4 -4
  119. package/esm2022/lib/search/components/empty-search-result.component.mjs +4 -4
  120. package/esm2022/lib/search/components/reset-search.directive.mjs +4 -4
  121. package/esm2022/lib/search/components/search-check-list/search-check-list.component.mjs +4 -4
  122. package/esm2022/lib/search/components/search-chip-autocomplete-input/search-chip-autocomplete-input.component.mjs +4 -4
  123. package/esm2022/lib/search/components/search-chip-list/search-chip-list.component.mjs +4 -4
  124. package/esm2022/lib/search/components/search-control.component.mjs +4 -4
  125. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.component.mjs +5 -5
  126. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range-tabbed.component.mjs +4 -4
  127. package/esm2022/lib/search/components/search-datetime-range/search-datetime-range.component.mjs +4 -4
  128. package/esm2022/lib/search/components/search-facet-field/search-facet-field.component.mjs +4 -4
  129. package/esm2022/lib/search/components/search-filter/search-filter-card/search-filter-card.component.mjs +4 -4
  130. package/esm2022/lib/search/components/search-filter/search-filter.component.mjs +4 -4
  131. package/esm2022/lib/search/components/search-filter-autocomplete-chips/search-filter-autocomplete-chips.component.mjs +4 -4
  132. package/esm2022/lib/search/components/search-filter-chips/search-facet-chip/search-facet-chip.component.mjs +4 -4
  133. package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-chip-tabbed.component.mjs +4 -4
  134. package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-tabbed-content.component.mjs +4 -4
  135. package/esm2022/lib/search/components/search-filter-chips/search-filter-chips.component.mjs +4 -4
  136. package/esm2022/lib/search/components/search-filter-chips/search-filter-menu-card/search-filter-menu-card.component.mjs +4 -4
  137. package/esm2022/lib/search/components/search-filter-chips/search-widget-chip/search-widget-chip.component.mjs +4 -4
  138. package/esm2022/lib/search/components/search-filter-container/search-filter-container.component.mjs +4 -4
  139. package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tab.directive.mjs +4 -4
  140. package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tabbed.component.mjs +4 -4
  141. package/esm2022/lib/search/components/search-form/search-form.component.mjs +4 -4
  142. package/esm2022/lib/search/components/search-input/search-input.component.mjs +4 -4
  143. package/esm2022/lib/search/components/search-logical-filter/search-logical-filter.component.mjs +4 -4
  144. package/esm2022/lib/search/components/search-number-range/search-number-range.component.mjs +4 -4
  145. package/esm2022/lib/search/components/search-panel/search-panel.component.mjs +4 -4
  146. package/esm2022/lib/search/components/search-properties/search-properties.component.mjs +4 -4
  147. package/esm2022/lib/search/components/search-radio/search-radio.component.mjs +4 -4
  148. package/esm2022/lib/search/components/search-slider/search-slider.component.mjs +4 -4
  149. package/esm2022/lib/search/components/search-sorting-picker/search-sorting-picker.component.mjs +4 -4
  150. package/esm2022/lib/search/components/search-text/search-text.component.mjs +4 -4
  151. package/esm2022/lib/search/components/search-widget-container/search-widget-container.component.mjs +4 -4
  152. package/esm2022/lib/search/components/search.component.mjs +4 -4
  153. package/esm2022/lib/search/search.module.mjs +5 -5
  154. package/esm2022/lib/search/services/search-configuration.service.mjs +4 -4
  155. package/esm2022/lib/search/services/search-facet-filters.service.mjs +4 -4
  156. package/esm2022/lib/search/services/search-filter.service.mjs +4 -4
  157. package/esm2022/lib/search/services/search-header-query-builder.service.mjs +4 -4
  158. package/esm2022/lib/search/services/search-query-builder.service.mjs +4 -4
  159. package/esm2022/lib/search/services/search.service.mjs +4 -4
  160. package/esm2022/lib/search-ai/services/search-ai.service.mjs +4 -4
  161. package/esm2022/lib/security/services/security-controls-groups-marks-security.service.mjs +4 -4
  162. package/esm2022/lib/services/alfresco-api.service.mjs +4 -4
  163. package/esm2022/lib/tag/services/tag.service.mjs +4 -4
  164. package/esm2022/lib/tag/tag-actions/tag-actions.component.mjs +4 -4
  165. package/esm2022/lib/tag/tag-list/tag-list.component.mjs +4 -4
  166. package/esm2022/lib/tag/tag-node-list/tag-node-list.component.mjs +4 -4
  167. package/esm2022/lib/tag/tag.module.mjs +5 -5
  168. package/esm2022/lib/tag/tags-creator/tags-creator.component.mjs +4 -4
  169. package/esm2022/lib/testing/content.testing.module.mjs +5 -5
  170. package/esm2022/lib/tree/components/tree.component.mjs +4 -4
  171. package/esm2022/lib/tree/services/tree.service.mjs +4 -4
  172. package/esm2022/lib/tree/tree.module.mjs +5 -5
  173. package/esm2022/lib/tree-view/components/tree-view.component.mjs +4 -4
  174. package/esm2022/lib/tree-view/data/tree-view-datasource.mjs +4 -4
  175. package/esm2022/lib/tree-view/services/tree-view.service.mjs +4 -4
  176. package/esm2022/lib/tree-view/tree-view.module.mjs +5 -5
  177. package/esm2022/lib/upload/components/base-upload/upload-base.mjs +4 -4
  178. package/esm2022/lib/upload/components/file-uploading-dialog.component.mjs +4 -4
  179. package/esm2022/lib/upload/components/file-uploading-list-row.component.mjs +4 -4
  180. package/esm2022/lib/upload/components/file-uploading-list.component.mjs +4 -4
  181. package/esm2022/lib/upload/components/upload-button.component.mjs +4 -4
  182. package/esm2022/lib/upload/components/upload-drag-area.component.mjs +4 -4
  183. package/esm2022/lib/upload/components/upload-version-button.component.mjs +4 -4
  184. package/esm2022/lib/upload/directives/file-draggable.directive.mjs +4 -4
  185. package/esm2022/lib/upload/directives/toggle-icon.directive.mjs +4 -4
  186. package/esm2022/lib/upload/pipes/file-upload-error.pipe.mjs +4 -4
  187. package/esm2022/lib/upload/upload.module.mjs +5 -5
  188. package/esm2022/lib/version-compatibility/version-compatibility.directive.mjs +4 -4
  189. package/esm2022/lib/version-compatibility/version-compatibility.module.mjs +5 -5
  190. package/esm2022/lib/version-compatibility/version-compatibility.service.mjs +4 -4
  191. package/esm2022/lib/version-manager/content-version.service.mjs +4 -4
  192. package/esm2022/lib/version-manager/version-comparison.component.mjs +4 -4
  193. package/esm2022/lib/version-manager/version-list.component.mjs +4 -4
  194. package/esm2022/lib/version-manager/version-manager.component.mjs +4 -4
  195. package/esm2022/lib/version-manager/version-manager.module.mjs +5 -5
  196. package/esm2022/lib/version-manager/version-upload.component.mjs +4 -4
  197. package/esm2022/lib/viewer/alfresco-viewer.module.mjs +5 -5
  198. package/esm2022/lib/viewer/components/alfresco-viewer.component.mjs +4 -4
  199. package/fesm2022/adf-content-services.mjs +629 -629
  200. package/fesm2022/adf-content-services.mjs.map +1 -1
  201. package/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.component.d.ts +1 -1
  202. package/package.json +3 -3
@@ -439,10 +439,10 @@ export class ContentMetadataComponent {
439
439
  this.invalidProperties.delete(this.targetProperty.key);
440
440
  }
441
441
  }
442
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ContentMetadataComponent, deps: [{ token: i1.ContentMetadataService }, { token: i2.CardViewContentUpdateService }, { token: i3.NodesApiService }, { token: i4.TranslationService }, { token: i4.AppConfigService }, { token: i5.TagService }, { token: i6.CategoryService }, { token: i7.ContentService }, { token: i4.NotificationService }], target: i0.ɵɵFactoryTarget.Component }); }
443
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: ContentMetadataComponent, isStandalone: true, selector: "adf-content-metadata", inputs: { node: "node", displayEmpty: "displayEmpty", expanded: "expanded", multi: "multi", preset: "preset", displayDefaultProperties: "displayDefaultProperties", displayAspect: "displayAspect", copyToClipboardAction: "copyToClipboardAction", useChipsForMultiValueProperty: "useChipsForMultiValueProperty", displayTags: "displayTags", displayCategories: "displayCategories", customPanels: "customPanels", readOnly: "readOnly" }, host: { classAttribute: "adf-content-metadata" }, usesOnChanges: true, ngImport: i0, template: "<mat-accordion displayMode=\"flat\" [multi]=\"multi\" class=\"adf-metadata-properties\">\n <mat-expansion-panel\n *ngIf=\"displayDefaultProperties\"\n class=\"adf-content-metadata-panel\"\n [expanded]=\"currentPanel.panelTitle === DefaultPanels.PROPERTIES && currentPanel.expanded\"\n (opened)=\"expandPanel(DefaultPanels.PROPERTIES)\"\n (closed)=\"closePanel(DefaultPanels.PROPERTIES)\"\n [attr.data-automation-id]=\"'adf-metadata-group-properties'\"\n hideToggle>\n <mat-expansion-panel-header\n class=\"adf-metadata-properties-header\"\n [class.adf-metadata-properties-header-expanded]=\"currentPanel.panelTitle === DefaultPanels.PROPERTIES && currentPanel.expanded\">\n <adf-content-metadata-header\n [title]=\"'CORE.METADATA.BASIC.HEADER'\"\n [expanded]=\"currentPanel.panelTitle === DefaultPanels.PROPERTIES && currentPanel.expanded\">\n <button\n *ngIf=\"!readOnly && !isPanelEditing(DefaultPanels.PROPERTIES)\"\n mat-icon-button\n (click)=\"toggleGroupEditing(DefaultPanels.PROPERTIES, $event)\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n [attr.aria-label]=\"'CORE.METADATA.ACCESSIBILITY.EDIT' | translate\"\n data-automation-id=\"meta-data-general-info-edit\"\n class=\"adf-edit-icon-buttons\">\n <mat-icon>mode_edit</mat-icon>\n </button>\n <div *ngIf=\"isPanelEditing(DefaultPanels.PROPERTIES)\" class=\"adf-metadata-action-buttons\">\n <button\n mat-icon-button\n [attr.title]=\"'CORE.METADATA.ACTIONS.CANCEL' | translate\"\n (click)=\"cancelGroupEditing(DefaultPanels.PROPERTIES, $event)\"\n data-automation-id=\"reset-metadata\"\n class=\"adf-metadata-action-buttons-clear\">\n <mat-icon>clear</mat-icon>\n </button>\n <button\n mat-icon-button\n [attr.title]=\"'CORE.METADATA.ACTIONS.SAVE' | translate\"\n (click)=\"saveChanges($event)\"\n color=\"primary\"\n data-automation-id=\"save-general-info-metadata\"\n [disabled]=\"!hasMetadataChanged || invalidProperties.size > 0\">\n <mat-icon>check</mat-icon>\n </button>\n </div>\n </adf-content-metadata-header>\n </mat-expansion-panel-header>\n <adf-card-view\n class=\"adf-metadata-properties-expansion-panel\"\n (keydown)=\"keyDown($event)\"\n [properties]=\"basicProperties$ | async\"\n [editable]=\"!readOnly && isPanelEditing(DefaultPanels.PROPERTIES)\"\n [displayEmpty]=\"displayEmpty\"\n [copyToClipboardAction]=\"copyToClipboardAction\"\n [useChipsForMultiValueProperty]=\"useChipsForMultiValueProperty\"\n [multiValueSeparator]=\"multiValueSeparator\" />\n </mat-expansion-panel>\n\n <ng-container *ngIf=\"displayTags\">\n <mat-expansion-panel\n hideToggle\n [expanded]=\"currentPanel.panelTitle === DefaultPanels.TAGS && currentPanel.expanded\"\n (opened)=\"expandPanel(DefaultPanels.TAGS)\"\n (closed)=\"closePanel(DefaultPanels.TAGS)\"\n class=\"adf-content-metadata-panel\"\n data-automation-id=\"adf-content-metadata-tags-panel\">\n <mat-expansion-panel-header\n class=\"adf-metadata-properties-header\"\n [class.adf-metadata-properties-header-expanded]=\"currentPanel.panelTitle === DefaultPanels.TAGS && currentPanel.expanded\">\n <adf-content-metadata-header [title]=\"'METADATA.BASIC.TAGS'\" [expanded]=\"currentPanel.panelTitle === DefaultPanels.TAGS && currentPanel.expanded\">\n <button\n *ngIf=\"!readOnly && !isPanelEditing(DefaultPanels.TAGS)\"\n mat-icon-button\n (click)=\"toggleGroupEditing(DefaultPanels.TAGS, $event)\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n [attr.aria-label]=\"'CORE.METADATA.ACCESSIBILITY.EDIT' | translate\"\n data-automation-id=\"showing-tag-input-button\"\n class=\"adf-edit-icon-buttons\">\n <mat-icon>mode_edit</mat-icon>\n </button>\n <div *ngIf=\"isPanelEditing(DefaultPanels.TAGS)\" class=\"adf-metadata-action-buttons\">\n <button\n mat-icon-button\n [attr.title]=\"'CORE.METADATA.ACTIONS.CANCEL' | translate\"\n (click)=\"cancelGroupEditing(DefaultPanels.TAGS, $event)\"\n data-automation-id=\"reset-tags-metadata\"\n class=\"adf-metadata-action-buttons-clear\">\n <mat-icon>clear</mat-icon>\n </button>\n <button\n mat-icon-button\n [attr.title]=\"'CORE.METADATA.ACTIONS.SAVE' | translate\"\n (click)=\"saveChanges($event)\"\n color=\"primary\"\n data-automation-id=\"save-tags-metadata\"\n [disabled]=\"!hasMetadataChanged\">\n <mat-icon>check</mat-icon>\n </button>\n </div>\n </adf-content-metadata-header>\n </mat-expansion-panel-header>\n <div *ngIf=\"currentPanel.panelTitle === DefaultPanels.TAGS && !editing\"\n class=\"adf-metadata-properties-tags\">\n <adf-dynamic-chip-list [chips]=\"tagsToDisplay\" [showDelete]=\"false\" />\n </div>\n <div *ngIf=\"showEmptyTagMessage\" class=\"adf-metadata-no-item-added\">\n {{ 'METADATA.BASIC.NO_TAGS_ADDED' | translate }}\n </div>\n <adf-tags-creator\n *ngIf=\"!readOnly && isPanelEditing(DefaultPanels.TAGS)\"\n class=\"adf-metadata-properties-tags\"\n [tagNameControlVisible]=\"editing\"\n (tagsChange)=\"storeTagsToAssign($event)\"\n [mode]=\"tagsCreatorMode\"\n [tags]=\"assignedTags\"\n [disabledTagsRemoving]=\"saving\" />\n </mat-expansion-panel>\n </ng-container>\n\n <ng-container *ngIf=\"displayCategories\">\n <mat-expansion-panel\n hideToggle\n [expanded]=\"currentPanel.panelTitle === DefaultPanels.CATEGORIES && currentPanel.expanded\"\n (opened)=\"expandPanel(DefaultPanels.CATEGORIES)\"\n (closed)=\"closePanel(DefaultPanels.CATEGORIES)\"\n class=\"adf-content-metadata-panel\"\n data-automation-id=\"adf-content-metadata-categories-panel\">\n <mat-expansion-panel-header\n class=\"adf-metadata-properties-header\"\n [class.adf-metadata-properties-header-expanded]=\"currentPanel.panelTitle === DefaultPanels.CATEGORIES && currentPanel.expanded\">\n <adf-content-metadata-header\n [title]=\"'CATEGORIES_MANAGEMENT.CATEGORIES_TITLE'\"\n [expanded]=\"currentPanel.panelTitle === DefaultPanels.CATEGORIES && currentPanel.expanded\">\n <button\n *ngIf=\"!readOnly && !isPanelEditing(DefaultPanels.CATEGORIES)\"\n mat-icon-button\n (click)=\"toggleGroupEditing(DefaultPanels.CATEGORIES, $event)\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n [attr.aria-label]=\"'CORE.METADATA.ACCESSIBILITY.EDIT' | translate\"\n data-automation-id=\"meta-data-categories-edit\"\n class=\"adf-categories-button adf-edit-icon-buttons\">\n <mat-icon>mode_edit</mat-icon>\n </button>\n <div *ngIf=\"isPanelEditing(DefaultPanels.CATEGORIES)\" class=\"adf-metadata-action-buttons\">\n <button\n mat-icon-button\n [attr.title]=\"'CORE.METADATA.ACTIONS.CANCEL' | translate\"\n (click)=\"cancelGroupEditing(DefaultPanels.CATEGORIES, $event)\"\n data-automation-id=\"reset-metadata\"\n class=\"adf-metadata-action-buttons-clear\">\n <mat-icon>clear</mat-icon>\n </button>\n <button\n mat-icon-button\n [attr.title]=\"'CORE.METADATA.ACTIONS.SAVE' | translate\"\n (click)=\"saveChanges($event)\"\n color=\"primary\"\n data-automation-id=\"save-categories-metadata\"\n [disabled]=\"!hasMetadataChanged\">\n <mat-icon>check</mat-icon>\n </button>\n </div>\n </adf-content-metadata-header>\n </mat-expansion-panel-header>\n <div *ngIf=\"currentPanel.panelTitle === DefaultPanels.CATEGORIES && !editing\">\n <p *ngFor=\"let category of categories\" class=\"adf-metadata-categories\">{{ category.name }}</p>\n </div>\n <div *ngIf=\"showEmptyCategoryMessage\" class=\"adf-metadata-no-item-added\">\n {{ 'CATEGORIES_MANAGEMENT.NO_CATEGORIES_ADDED' | translate }}\n </div>\n <adf-categories-management\n *ngIf=\"!readOnly && isPanelEditing(DefaultPanels.CATEGORIES)\"\n class=\"adf-metadata-categories-header\"\n [categoryNameControlVisible]=\"editing\"\n [disableRemoval]=\"saving\"\n [categories]=\"categories\"\n [managementMode]=\"categoriesManagementMode\"\n [classifiableChanged]=\"classifiableChanged\"\n (categoriesChange)=\"storeCategoriesToAssign($event)\" />\n </mat-expansion-panel>\n </ng-container>\n\n <mat-expansion-panel\n *ngFor=\"let customPanel of customPanels\"\n [expanded]=\"currentPanel.panelTitle === customPanel.panelTitle && currentPanel.expanded\"\n (opened)=\"expandPanel(customPanel.panelTitle)\"\n (closed)=\"closePanel(customPanel.panelTitle)\"\n class=\"adf-content-metadata-panel\"\n hideToggle>\n <mat-expansion-panel-header\n class=\"adf-metadata-properties-header\"\n [class.adf-metadata-properties-header-expanded]=\"currentPanel.panelTitle === customPanel.panelTitle && currentPanel.expanded\">\n <adf-content-metadata-header\n class=\"adf-metadata-custom-panel-title\"\n [title]=\"customPanel.panelTitle\"\n [expanded]=\"currentPanel.panelTitle === customPanel.panelTitle && currentPanel.expanded\" />\n </mat-expansion-panel-header>\n <adf-dynamic-component [id]=\"customPanel.component\" [data]=\"{ node }\" />\n </mat-expansion-panel>\n\n <ng-container *ngIf=\"groupedProperties$ | async; else loading; let groupedProperties\">\n <div *ngFor=\"let group of groupedProperties; let first = first\" class=\"adf-metadata-grouped-properties-container\">\n <mat-expansion-panel\n [attr.data-automation-id]=\"'adf-metadata-group-' + group.title\"\n [expanded]=\"multi ? !displayDefaultProperties && first || group.expanded : !displayDefaultProperties && first || currentPanel.panelTitle === group.title && currentPanel.expanded\"\n (opened)=\"expandPanel(group.title); group.expanded = true\"\n (closed)=\"closePanel(group.title); group.expanded = false\"\n class=\"adf-content-metadata-panel\"\n hideToggle>\n <mat-expansion-panel-header\n class=\"adf-metadata-properties-header\"\n [class.adf-metadata-properties-header-expanded]=\"currentPanel.panelTitle === group.title && currentPanel.expanded\">\n <adf-content-metadata-header [title]=\"group.title\" [expanded]=\"currentPanel.panelTitle === group.title && currentPanel.expanded\">\n <button\n *ngIf=\"group.editable && !this.readOnly && !isPanelEditing(group.title)\"\n mat-icon-button\n [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n [attr.aria-label]=\"'CORE.METADATA.ACCESSIBILITY.EDIT' | translate\"\n data-automation-id=\"meta-data-card-toggle-edit\"\n class=\"adf-edit-icon-buttons\"\n (click)=\"toggleGroupEditing(group.title, $event)\">\n <mat-icon>mode_edit</mat-icon>\n </button>\n <div class=\"adf-metadata-action-buttons\" *ngIf=\"group.editable && isPanelEditing(group.title)\">\n <button\n mat-icon-button\n [attr.title]=\"'CORE.METADATA.ACTIONS.CANCEL' | translate\"\n (click)=\"cancelGroupEditing(group.title, $event)\"\n data-automation-id=\"reset-metadata\"\n class=\"adf-metadata-action-buttons-clear\">\n <mat-icon>clear</mat-icon>\n </button>\n <button\n mat-icon-button\n [attr.title]=\"'CORE.METADATA.ACTIONS.SAVE' | translate\"\n (click)=\"saveChanges($event)\"\n color=\"primary\"\n data-automation-id=\"save-metadata\"\n [disabled]=\"!hasMetadataChanged || invalidProperties.size > 0\">\n <mat-icon>check</mat-icon>\n </button>\n </div>\n </adf-content-metadata-header>\n </mat-expansion-panel-header>\n <div *ngIf=\"!showGroup(group) && group.editable && !editing\" class=\"adf-metadata-no-item-added\">\n {{ 'METADATA.BASIC.NO_ITEMS_MESSAGE' | translate : { groupTitle: group.title | translate } }}\n </div>\n <adf-card-view\n (keydown)=\"keyDown($event)\"\n [properties]=\"group.properties\"\n [editable]=\"!readOnly && group.editable && isPanelEditing(group.title)\"\n [displayEmpty]=\"displayEmpty\"\n [copyToClipboardAction]=\"copyToClipboardAction\"\n [useChipsForMultiValueProperty]=\"useChipsForMultiValueProperty\"\n [multiValueSeparator]=\"multiValueSeparator\"\n [displayLabelForChips]=\"true\" />\n </mat-expansion-panel>\n </div>\n </ng-container>\n\n <ng-template #loading>\n <mat-progress-bar mode=\"indeterminate\" [attr.aria-label]=\"'DATA_LOADING' | translate\" />\n </ng-template>\n</mat-accordion>\n", styles: [".adf-metadata-properties .adf-content-metadata-panel{box-shadow:none;border:1px solid var(--adf-metadata-property-panel-border-color);border-radius:12px;margin:12px}.adf-metadata-properties .adf-content-metadata-panel adf-card-view-textitem .mat-mdc-form-field-subscript-wrapper{display:none}.adf-metadata-properties .adf-content-metadata-panel adf-card-view-textitem .mat-mdc-form-field-infix{padding-bottom:0}.adf-metadata-properties .adf-content-metadata-panel .adf-property-list .adf-property .adf-property-field .adf-property-value:not(.adf-card-view-selectitem .adf-property-value){margin-top:10px;height:32px}.adf-metadata-properties .adf-content-metadata-panel .adf-property-list .adf-property .adf-property-field .adf-property-value:not(.adf-card-view-selectitem .adf-property-value):is(textarea){padding-top:6px}.adf-metadata-properties .adf-content-metadata-panel .adf-property-list .adf-property .adf-property-field label{font-size:19px;line-height:20px}.adf-metadata-properties .adf-metadata-properties-header{height:56px;padding:0 12px;border-radius:12px 12px 0 0}.adf-metadata-properties .adf-metadata-properties-header.adf-metadata-properties-header-expanded{border-bottom:1px solid var(--adf-metadata-property-panel-border-color)}.adf-metadata-properties .mat-expansion-panel-body{padding-top:16px}.adf-metadata-properties .mat-expansion-panel-body input{border-color:transparent;width:100%}.adf-metadata-properties .mat-expansion-panel-body input:focus-visible{outline:none}.adf-metadata-properties .adf-edit-icon-buttons{color:var(--adf-theme-foreground-text-color-054)}.adf-metadata-properties .mat-mdc-chip.metadata-properties-tag-chip .mdc-evolution-chip__cell--primary,.adf-metadata-properties .mat-mdc-chip.metadata-properties-tag-chip .mdc-evolution-chip__action--primary,.adf-metadata-properties .mat-mdc-chip.metadata-properties-tag-chip .mat-mdc-chip-action-label{overflow:hidden}.adf-metadata-properties .adf-metadata-no-item-added{word-break:break-all;font-size:15px;padding:0 0 0 12px}.adf-metadata-properties-tags .adf-dynamic-chip-list-chip{padding:0}.adf-metadata-action-buttons{display:flex;justify-content:space-evenly}.adf-metadata-action-buttons-clear{color:var(--adf-metadata-action-button-clear-color)}.adf-metadata-categories-header .adf-categories-button{display:flex;justify-content:space-between;align-items:center;font-size:15px;height:56px}.adf-metadata-categories-header .adf-categories-button [hidden]{visibility:hidden}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i8.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "directive", type: i9.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i9.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i9.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "component", type: ContentMetadataHeaderComponent, selector: "adf-content-metadata-header", inputs: ["title", "expanded"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i10.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: CategoriesManagementComponent, selector: "adf-categories-management", inputs: ["categories", "categoryNameControlVisible", "classifiableChanged", "disableRemoval", "managementMode", "parentId", "multiSelect"], outputs: ["categoriesChange", "categoryNameControlVisibleChange"] }, { kind: "component", type: DynamicExtensionComponent, selector: "adf-dynamic-component", inputs: ["id", "data"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i13.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: TagsCreatorComponent, selector: "adf-tags-creator", inputs: ["mode", "disabledTagsRemoving", "tags", "tagNameControlVisible"], outputs: ["existingTagsPanelVisibilityChange", "tagsChange"] }, { kind: "component", type: CardViewComponent, selector: "adf-card-view", inputs: ["properties", "editable", "displayEmpty", "displayNoneOption", "displayClearAction", "copyToClipboardAction", "useChipsForMultiValueProperty", "multiValueSeparator", "displayLabelForChips"] }, { kind: "component", type: DynamicChipListComponent, selector: "adf-dynamic-chip-list", inputs: ["pagination", "chips", "showDelete", "disableDelete", "limitChipsDisplayed", "roundUpChips"], outputs: ["displayNext", "removedChip"] }], encapsulation: i0.ViewEncapsulation.None }); }
442
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContentMetadataComponent, deps: [{ token: i1.ContentMetadataService }, { token: i2.CardViewContentUpdateService }, { token: i3.NodesApiService }, { token: i4.TranslationService }, { token: i4.AppConfigService }, { token: i5.TagService }, { token: i6.CategoryService }, { token: i7.ContentService }, { token: i4.NotificationService }], target: i0.ɵɵFactoryTarget.Component }); }
443
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ContentMetadataComponent, isStandalone: true, selector: "adf-content-metadata", inputs: { node: "node", displayEmpty: "displayEmpty", expanded: "expanded", multi: "multi", preset: "preset", displayDefaultProperties: "displayDefaultProperties", displayAspect: "displayAspect", copyToClipboardAction: "copyToClipboardAction", useChipsForMultiValueProperty: "useChipsForMultiValueProperty", displayTags: "displayTags", displayCategories: "displayCategories", customPanels: "customPanels", readOnly: "readOnly" }, host: { classAttribute: "adf-content-metadata" }, usesOnChanges: true, ngImport: i0, template: "<mat-accordion displayMode=\"flat\" [multi]=\"multi\" class=\"adf-metadata-properties\">\n <mat-expansion-panel\n *ngIf=\"displayDefaultProperties\"\n class=\"adf-content-metadata-panel\"\n [expanded]=\"currentPanel.panelTitle === DefaultPanels.PROPERTIES && currentPanel.expanded\"\n (opened)=\"expandPanel(DefaultPanels.PROPERTIES)\"\n (closed)=\"closePanel(DefaultPanels.PROPERTIES)\"\n [attr.data-automation-id]=\"'adf-metadata-group-properties'\"\n hideToggle>\n <mat-expansion-panel-header\n class=\"adf-metadata-properties-header\"\n [class.adf-metadata-properties-header-expanded]=\"currentPanel.panelTitle === DefaultPanels.PROPERTIES && currentPanel.expanded\">\n <adf-content-metadata-header\n [title]=\"'CORE.METADATA.BASIC.HEADER'\"\n [expanded]=\"currentPanel.panelTitle === DefaultPanels.PROPERTIES && currentPanel.expanded\">\n <button\n *ngIf=\"!readOnly && !isPanelEditing(DefaultPanels.PROPERTIES)\"\n mat-icon-button\n (click)=\"toggleGroupEditing(DefaultPanels.PROPERTIES, $event)\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n [attr.aria-label]=\"'CORE.METADATA.ACCESSIBILITY.EDIT' | translate\"\n data-automation-id=\"meta-data-general-info-edit\"\n class=\"adf-edit-icon-buttons\">\n <mat-icon>mode_edit</mat-icon>\n </button>\n <div *ngIf=\"isPanelEditing(DefaultPanels.PROPERTIES)\" class=\"adf-metadata-action-buttons\">\n <button\n mat-icon-button\n [attr.title]=\"'CORE.METADATA.ACTIONS.CANCEL' | translate\"\n (click)=\"cancelGroupEditing(DefaultPanels.PROPERTIES, $event)\"\n data-automation-id=\"reset-metadata\"\n class=\"adf-metadata-action-buttons-clear\">\n <mat-icon>clear</mat-icon>\n </button>\n <button\n mat-icon-button\n [attr.title]=\"'CORE.METADATA.ACTIONS.SAVE' | translate\"\n (click)=\"saveChanges($event)\"\n color=\"primary\"\n data-automation-id=\"save-general-info-metadata\"\n [disabled]=\"!hasMetadataChanged || invalidProperties.size > 0\">\n <mat-icon>check</mat-icon>\n </button>\n </div>\n </adf-content-metadata-header>\n </mat-expansion-panel-header>\n <adf-card-view\n class=\"adf-metadata-properties-expansion-panel\"\n (keydown)=\"keyDown($event)\"\n [properties]=\"basicProperties$ | async\"\n [editable]=\"!readOnly && isPanelEditing(DefaultPanels.PROPERTIES)\"\n [displayEmpty]=\"displayEmpty\"\n [copyToClipboardAction]=\"copyToClipboardAction\"\n [useChipsForMultiValueProperty]=\"useChipsForMultiValueProperty\"\n [multiValueSeparator]=\"multiValueSeparator\" />\n </mat-expansion-panel>\n\n <ng-container *ngIf=\"displayTags\">\n <mat-expansion-panel\n hideToggle\n [expanded]=\"currentPanel.panelTitle === DefaultPanels.TAGS && currentPanel.expanded\"\n (opened)=\"expandPanel(DefaultPanels.TAGS)\"\n (closed)=\"closePanel(DefaultPanels.TAGS)\"\n class=\"adf-content-metadata-panel\"\n data-automation-id=\"adf-content-metadata-tags-panel\">\n <mat-expansion-panel-header\n class=\"adf-metadata-properties-header\"\n [class.adf-metadata-properties-header-expanded]=\"currentPanel.panelTitle === DefaultPanels.TAGS && currentPanel.expanded\">\n <adf-content-metadata-header [title]=\"'METADATA.BASIC.TAGS'\" [expanded]=\"currentPanel.panelTitle === DefaultPanels.TAGS && currentPanel.expanded\">\n <button\n *ngIf=\"!readOnly && !isPanelEditing(DefaultPanels.TAGS)\"\n mat-icon-button\n (click)=\"toggleGroupEditing(DefaultPanels.TAGS, $event)\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n [attr.aria-label]=\"'CORE.METADATA.ACCESSIBILITY.EDIT' | translate\"\n data-automation-id=\"showing-tag-input-button\"\n class=\"adf-edit-icon-buttons\">\n <mat-icon>mode_edit</mat-icon>\n </button>\n <div *ngIf=\"isPanelEditing(DefaultPanels.TAGS)\" class=\"adf-metadata-action-buttons\">\n <button\n mat-icon-button\n [attr.title]=\"'CORE.METADATA.ACTIONS.CANCEL' | translate\"\n (click)=\"cancelGroupEditing(DefaultPanels.TAGS, $event)\"\n data-automation-id=\"reset-tags-metadata\"\n class=\"adf-metadata-action-buttons-clear\">\n <mat-icon>clear</mat-icon>\n </button>\n <button\n mat-icon-button\n [attr.title]=\"'CORE.METADATA.ACTIONS.SAVE' | translate\"\n (click)=\"saveChanges($event)\"\n color=\"primary\"\n data-automation-id=\"save-tags-metadata\"\n [disabled]=\"!hasMetadataChanged\">\n <mat-icon>check</mat-icon>\n </button>\n </div>\n </adf-content-metadata-header>\n </mat-expansion-panel-header>\n <div *ngIf=\"currentPanel.panelTitle === DefaultPanels.TAGS && !editing\"\n class=\"adf-metadata-properties-tags\">\n <adf-dynamic-chip-list [chips]=\"tagsToDisplay\" [showDelete]=\"false\" />\n </div>\n <div *ngIf=\"showEmptyTagMessage\" class=\"adf-metadata-no-item-added\">\n {{ 'METADATA.BASIC.NO_TAGS_ADDED' | translate }}\n </div>\n <adf-tags-creator\n *ngIf=\"!readOnly && isPanelEditing(DefaultPanels.TAGS)\"\n class=\"adf-metadata-properties-tags\"\n [tagNameControlVisible]=\"editing\"\n (tagsChange)=\"storeTagsToAssign($event)\"\n [mode]=\"tagsCreatorMode\"\n [tags]=\"assignedTags\"\n [disabledTagsRemoving]=\"saving\" />\n </mat-expansion-panel>\n </ng-container>\n\n <ng-container *ngIf=\"displayCategories\">\n <mat-expansion-panel\n hideToggle\n [expanded]=\"currentPanel.panelTitle === DefaultPanels.CATEGORIES && currentPanel.expanded\"\n (opened)=\"expandPanel(DefaultPanels.CATEGORIES)\"\n (closed)=\"closePanel(DefaultPanels.CATEGORIES)\"\n class=\"adf-content-metadata-panel\"\n data-automation-id=\"adf-content-metadata-categories-panel\">\n <mat-expansion-panel-header\n class=\"adf-metadata-properties-header\"\n [class.adf-metadata-properties-header-expanded]=\"currentPanel.panelTitle === DefaultPanels.CATEGORIES && currentPanel.expanded\">\n <adf-content-metadata-header\n [title]=\"'CATEGORIES_MANAGEMENT.CATEGORIES_TITLE'\"\n [expanded]=\"currentPanel.panelTitle === DefaultPanels.CATEGORIES && currentPanel.expanded\">\n <button\n *ngIf=\"!readOnly && !isPanelEditing(DefaultPanels.CATEGORIES)\"\n mat-icon-button\n (click)=\"toggleGroupEditing(DefaultPanels.CATEGORIES, $event)\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n [attr.aria-label]=\"'CORE.METADATA.ACCESSIBILITY.EDIT' | translate\"\n data-automation-id=\"meta-data-categories-edit\"\n class=\"adf-categories-button adf-edit-icon-buttons\">\n <mat-icon>mode_edit</mat-icon>\n </button>\n <div *ngIf=\"isPanelEditing(DefaultPanels.CATEGORIES)\" class=\"adf-metadata-action-buttons\">\n <button\n mat-icon-button\n [attr.title]=\"'CORE.METADATA.ACTIONS.CANCEL' | translate\"\n (click)=\"cancelGroupEditing(DefaultPanels.CATEGORIES, $event)\"\n data-automation-id=\"reset-metadata\"\n class=\"adf-metadata-action-buttons-clear\">\n <mat-icon>clear</mat-icon>\n </button>\n <button\n mat-icon-button\n [attr.title]=\"'CORE.METADATA.ACTIONS.SAVE' | translate\"\n (click)=\"saveChanges($event)\"\n color=\"primary\"\n data-automation-id=\"save-categories-metadata\"\n [disabled]=\"!hasMetadataChanged\">\n <mat-icon>check</mat-icon>\n </button>\n </div>\n </adf-content-metadata-header>\n </mat-expansion-panel-header>\n <div *ngIf=\"currentPanel.panelTitle === DefaultPanels.CATEGORIES && !editing\">\n <p *ngFor=\"let category of categories\" class=\"adf-metadata-categories\">{{ category.name }}</p>\n </div>\n <div *ngIf=\"showEmptyCategoryMessage\" class=\"adf-metadata-no-item-added\">\n {{ 'CATEGORIES_MANAGEMENT.NO_CATEGORIES_ADDED' | translate }}\n </div>\n <adf-categories-management\n *ngIf=\"!readOnly && isPanelEditing(DefaultPanels.CATEGORIES)\"\n class=\"adf-metadata-categories-header\"\n [categoryNameControlVisible]=\"editing\"\n [disableRemoval]=\"saving\"\n [categories]=\"categories\"\n [managementMode]=\"categoriesManagementMode\"\n [classifiableChanged]=\"classifiableChanged\"\n (categoriesChange)=\"storeCategoriesToAssign($event)\" />\n </mat-expansion-panel>\n </ng-container>\n\n <mat-expansion-panel\n *ngFor=\"let customPanel of customPanels\"\n [expanded]=\"currentPanel.panelTitle === customPanel.panelTitle && currentPanel.expanded\"\n (opened)=\"expandPanel(customPanel.panelTitle)\"\n (closed)=\"closePanel(customPanel.panelTitle)\"\n class=\"adf-content-metadata-panel\"\n hideToggle>\n <mat-expansion-panel-header\n class=\"adf-metadata-properties-header\"\n [class.adf-metadata-properties-header-expanded]=\"currentPanel.panelTitle === customPanel.panelTitle && currentPanel.expanded\">\n <adf-content-metadata-header\n class=\"adf-metadata-custom-panel-title\"\n [title]=\"customPanel.panelTitle\"\n [expanded]=\"currentPanel.panelTitle === customPanel.panelTitle && currentPanel.expanded\" />\n </mat-expansion-panel-header>\n <adf-dynamic-component [id]=\"customPanel.component\" [data]=\"{ node }\" />\n </mat-expansion-panel>\n\n <ng-container *ngIf=\"groupedProperties$ | async; else loading; let groupedProperties\">\n <div *ngFor=\"let group of groupedProperties; let first = first\" class=\"adf-metadata-grouped-properties-container\">\n <mat-expansion-panel\n [attr.data-automation-id]=\"'adf-metadata-group-' + group.title\"\n [expanded]=\"multi ? !displayDefaultProperties && first || group.expanded : !displayDefaultProperties && first || currentPanel.panelTitle === group.title && currentPanel.expanded\"\n (opened)=\"expandPanel(group.title); group.expanded = true\"\n (closed)=\"closePanel(group.title); group.expanded = false\"\n class=\"adf-content-metadata-panel\"\n hideToggle>\n <mat-expansion-panel-header\n class=\"adf-metadata-properties-header\"\n [class.adf-metadata-properties-header-expanded]=\"currentPanel.panelTitle === group.title && currentPanel.expanded\">\n <adf-content-metadata-header [title]=\"group.title\" [expanded]=\"currentPanel.panelTitle === group.title && currentPanel.expanded\">\n <button\n *ngIf=\"group.editable && !this.readOnly && !isPanelEditing(group.title)\"\n mat-icon-button\n [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n [attr.aria-label]=\"'CORE.METADATA.ACCESSIBILITY.EDIT' | translate\"\n data-automation-id=\"meta-data-card-toggle-edit\"\n class=\"adf-edit-icon-buttons\"\n (click)=\"toggleGroupEditing(group.title, $event)\">\n <mat-icon>mode_edit</mat-icon>\n </button>\n <div class=\"adf-metadata-action-buttons\" *ngIf=\"group.editable && isPanelEditing(group.title)\">\n <button\n mat-icon-button\n [attr.title]=\"'CORE.METADATA.ACTIONS.CANCEL' | translate\"\n (click)=\"cancelGroupEditing(group.title, $event)\"\n data-automation-id=\"reset-metadata\"\n class=\"adf-metadata-action-buttons-clear\">\n <mat-icon>clear</mat-icon>\n </button>\n <button\n mat-icon-button\n [attr.title]=\"'CORE.METADATA.ACTIONS.SAVE' | translate\"\n (click)=\"saveChanges($event)\"\n color=\"primary\"\n data-automation-id=\"save-metadata\"\n [disabled]=\"!hasMetadataChanged || invalidProperties.size > 0\">\n <mat-icon>check</mat-icon>\n </button>\n </div>\n </adf-content-metadata-header>\n </mat-expansion-panel-header>\n <div *ngIf=\"!showGroup(group) && group.editable && !editing\" class=\"adf-metadata-no-item-added\">\n {{ 'METADATA.BASIC.NO_ITEMS_MESSAGE' | translate : { groupTitle: group.title | translate } }}\n </div>\n <adf-card-view\n (keydown)=\"keyDown($event)\"\n [properties]=\"group.properties\"\n [editable]=\"!readOnly && group.editable && isPanelEditing(group.title)\"\n [displayEmpty]=\"displayEmpty\"\n [copyToClipboardAction]=\"copyToClipboardAction\"\n [useChipsForMultiValueProperty]=\"useChipsForMultiValueProperty\"\n [multiValueSeparator]=\"multiValueSeparator\"\n [displayLabelForChips]=\"true\" />\n </mat-expansion-panel>\n </div>\n </ng-container>\n\n <ng-template #loading>\n <mat-progress-bar mode=\"indeterminate\" [attr.aria-label]=\"'DATA_LOADING' | translate\" />\n </ng-template>\n</mat-accordion>\n", styles: [".adf-metadata-properties .adf-content-metadata-panel{box-shadow:none;border:1px solid var(--adf-metadata-property-panel-border-color);border-radius:12px;margin:12px}.adf-metadata-properties .adf-content-metadata-panel adf-card-view-textitem .mat-mdc-form-field-subscript-wrapper{display:none}.adf-metadata-properties .adf-content-metadata-panel adf-card-view-textitem .mat-mdc-form-field-infix{padding-bottom:0}.adf-metadata-properties .adf-content-metadata-panel .adf-property-list .adf-property .adf-property-field .adf-property-value:not(.adf-card-view-selectitem .adf-property-value){margin-top:10px;height:32px}.adf-metadata-properties .adf-content-metadata-panel .adf-property-list .adf-property .adf-property-field .adf-property-value:not(.adf-card-view-selectitem .adf-property-value):is(textarea){padding-top:6px}.adf-metadata-properties .adf-content-metadata-panel .adf-property-list .adf-property .adf-property-field label{font-size:19px;line-height:20px}.adf-metadata-properties .adf-metadata-properties-header{height:56px;padding:0 12px;border-radius:12px 12px 0 0}.adf-metadata-properties .adf-metadata-properties-header.adf-metadata-properties-header-expanded{border-bottom:1px solid var(--adf-metadata-property-panel-border-color)}.adf-metadata-properties .mat-expansion-panel-body{padding-top:16px}.adf-metadata-properties .mat-expansion-panel-body input{border-color:transparent;width:100%}.adf-metadata-properties .mat-expansion-panel-body input:focus-visible{outline:none}.adf-metadata-properties .adf-edit-icon-buttons{color:var(--adf-theme-foreground-text-color-054)}.adf-metadata-properties .mat-mdc-chip.metadata-properties-tag-chip .mdc-evolution-chip__cell--primary,.adf-metadata-properties .mat-mdc-chip.metadata-properties-tag-chip .mdc-evolution-chip__action--primary,.adf-metadata-properties .mat-mdc-chip.metadata-properties-tag-chip .mat-mdc-chip-action-label{overflow:hidden}.adf-metadata-properties .adf-metadata-no-item-added{word-break:break-all;font-size:15px;padding:0 0 0 12px}.adf-metadata-properties-tags .adf-dynamic-chip-list-chip{padding:0}.adf-metadata-action-buttons{display:flex;justify-content:space-evenly}.adf-metadata-action-buttons-clear{color:var(--adf-metadata-action-button-clear-color)}.adf-metadata-categories-header .adf-categories-button{display:flex;justify-content:space-between;align-items:center;font-size:15px;height:56px}.adf-metadata-categories-header .adf-categories-button [hidden]{visibility:hidden}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i8.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "directive", type: i9.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i9.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i9.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "component", type: ContentMetadataHeaderComponent, selector: "adf-content-metadata-header", inputs: ["title", "expanded"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i10.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: CategoriesManagementComponent, selector: "adf-categories-management", inputs: ["categories", "categoryNameControlVisible", "classifiableChanged", "disableRemoval", "managementMode", "parentId", "multiSelect"], outputs: ["categoriesChange", "categoryNameControlVisibleChange"] }, { kind: "component", type: DynamicExtensionComponent, selector: "adf-dynamic-component", inputs: ["id", "data"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i13.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: TagsCreatorComponent, selector: "adf-tags-creator", inputs: ["mode", "disabledTagsRemoving", "tags", "tagNameControlVisible"], outputs: ["existingTagsPanelVisibilityChange", "tagsChange"] }, { kind: "component", type: CardViewComponent, selector: "adf-card-view", inputs: ["properties", "editable", "displayEmpty", "displayNoneOption", "displayClearAction", "copyToClipboardAction", "useChipsForMultiValueProperty", "multiValueSeparator", "displayLabelForChips"] }, { kind: "component", type: DynamicChipListComponent, selector: "adf-dynamic-chip-list", inputs: ["pagination", "chips", "showDelete", "disableDelete", "limitChipsDisplayed", "roundUpChips"], outputs: ["displayNext", "removedChip"] }], encapsulation: i0.ViewEncapsulation.None }); }
444
444
  }
445
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ContentMetadataComponent, decorators: [{
445
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContentMetadataComponent, decorators: [{
446
446
  type: Component,
447
447
  args: [{ selector: 'adf-content-metadata', standalone: true, imports: [
448
448
  CommonModule,
@@ -488,4 +488,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
488
488
  }], readOnly: [{
489
489
  type: Input
490
490
  }] } });
491
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1tZXRhZGF0YS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL2NvbnRlbnQtbWV0YWRhdGEvY29tcG9uZW50cy9jb250ZW50LW1ldGFkYXRhL2NvbnRlbnQtbWV0YWRhdGEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvbnRlbnQtc2VydmljZXMvc3JjL2xpYi9jb250ZW50LW1ldGFkYXRhL2NvbXBvbmVudHMvY29udGVudC1tZXRhZGF0YS9jb250ZW50LW1ldGFkYXRhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQW9DLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFILE9BQU8sRUFBMkIsZ0JBQWdCLEVBQWtCLElBQUksRUFBRSxPQUFPLEVBQXVCLE1BQU0sa0JBQWtCLENBQUM7QUFDakksT0FBTyxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RCxPQUFPLEVBQ0gsZ0JBQWdCLEVBRWhCLGlCQUFpQixFQUdqQix3QkFBd0IsRUFDeEIsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUVyQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRWpGLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9ELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0Q0FBNEMs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QixZQUFZO3NCQURYLEtBQUs7Z0JBUU4sUUFBUTtzQkFEUCxLQUFLO2dCQUtOLEtBQUs7c0JBREosS0FBSztnQkFLTixNQUFNO3NCQURMLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUt6Qix3QkFBd0I7c0JBRHZCLEtBQUs7Z0JBS04sYUFBYTtzQkFEWixLQUFLO2dCQUtOLHFCQUFxQjtzQkFEcEIsS0FBSztnQkFLTiw2QkFBNkI7c0JBRDVCLEtBQUs7Z0JBS04sV0FBVztzQkFEVixLQUFLO2dCQUtOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBUU4sUUFBUTtzQkFEUCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIERlc3Ryb3lSZWYsIGluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2F0ZWdvcnksIENhdGVnb3J5RW50cnksIENhdGVnb3J5TGlua0JvZHksIENhdGVnb3J5UGFnaW5nLCBOb2RlLCBUYWdCb2R5LCBUYWdFbnRyeSwgVGFnUGFnaW5nIH0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIHppcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBBcHBDb25maWdTZXJ2aWNlLFxuICAgIENhcmRWaWV3QmFzZUl0ZW1Nb2RlbCxcbiAgICBDYXJkVmlld0NvbXBvbmVudCxcbiAgICBDYXJkVmlld0l0ZW0sXG4gICAgQ2hpcCxcbiAgICBEeW5hbWljQ2hpcExpc3RDb21wb25lbnQsXG4gICAgTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBUcmFuc2xhdGlvblNlcnZpY2UsXG4gICAgVXBkYXRlTm90aWZpY2F0aW9uXG59IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBDb250ZW50TWV0YWRhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29udGVudC1tZXRhZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IENhcmRWaWV3R3JvdXAsIENvbnRlbnRNZXRhZGF0YUN1c3RvbVBhbmVsLCBDb250ZW50TWV0YWRhdGFQYW5lbCwgUHJlc2V0Q29uZmlnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jb250ZW50LW1ldGFkYXRhLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZGVib3VuY2VUaW1lLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDYXJkVmlld0NvbnRlbnRVcGRhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3NlcnZpY2VzL2NhcmQtdmlldy1jb250ZW50LXVwZGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5vZGVzQXBpU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9zZXJ2aWNlcy9ub2Rlcy1hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBUYWdzQ3JlYXRvck1vZGUgfSBmcm9tICcuLi8uLi8uLi90YWcvdGFncy1jcmVhdG9yL3RhZ3MtY3JlYXRvci1tb2RlJztcbmltcG9ydCB7IFRhZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi90YWcvc2VydmljZXMvdGFnLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2F0ZWdvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY2F0ZWdvcnkvc2VydmljZXMvY2F0ZWdvcnkuc2VydmljZSc7XG5pbXBvcnQgeyBDYXRlZ29yaWVzTWFuYWdlbWVudE1vZGUgfSBmcm9tICcuLi8uLi8uLi9jYXRlZ29yeS9jYXRlZ29yaWVzLW1hbmFnZW1lbnQvY2F0ZWdvcmllcy1tYW5hZ2VtZW50LW1vZGUnO1xuaW1wb3J0IHsgQWxsb3dhYmxlT3BlcmF0aW9uc0VudW0gfSBmcm9tICcuLi8uLi8uLi9jb21tb24vbW9kZWxzL2FsbG93YWJsZS1vcGVyYXRpb25zLmVudW0nO1xuaW1wb3J0IHsgQ29udGVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vc2VydmljZXMvY29udGVudC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Q2hpcHNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XG5pbXBvcnQgeyBNYXRFeHBhbnNpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9leHBhbnNpb24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgRHluYW1pY0V4dGVuc2lvbkNvbXBvbmVudCB9IGZyb20gJ0BhbGZyZXNjby9hZGYtZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XG5pbXBvcnQgeyBUYWdzQ3JlYXRvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3RhZyc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IENvbnRlbnRNZXRhZGF0YUhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vY29udGVudC1tZXRhZGF0YS1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENhdGVnb3JpZXNNYW5hZ2VtZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY2F0ZWdvcnkvY2F0ZWdvcmllcy1tYW5hZ2VtZW50L2NhdGVnb3JpZXMtbWFuYWdlbWVudC5jb21wb25lbnQnO1xuXG5jb25zdCBERUZBVUxUX1NFUEFSQVRPUiA9ICcsICc7XG5cbmVudW0gRGVmYXVsdFBhbmVscyB7XG4gICAgUFJPUEVSVElFUyA9ICdQcm9wZXJ0aWVzJyxcbiAgICBUQUdTID0gJ1RhZ3MnLFxuICAgIENBVEVHT1JJRVMgPSAnQ2F0ZWdvcmllcydcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhZGYtY29udGVudC1tZXRhZGF0YScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgTWF0RXhwYW5zaW9uTW9kdWxlLFxuICAgICAgICBDb250ZW50TWV0YWRhdGFIZWFkZXJDb21wb25lbnQsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBNYXRDaGlwc01vZHVsZSxcbiAgICAgICAgQ2F0ZWdvcmllc01hbmFnZW1lbnRDb21wb25lbnQsXG4gICAgICAgIER5bmFtaWNFeHRlbnNpb25Db21wb25lbnQsXG4gICAgICAgIE1hdFByb2dyZXNzQmFyTW9kdWxlLFxuICAgICAgICBUYWdzQ3JlYXRvckNvbXBvbmVudCxcbiAgICAgICAgQ2FyZFZpZXdDb21wb25lbnQsXG4gICAgICAgIER5bmFtaWNDaGlwTGlzdENvbXBvbmVudFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbnRlbnQtbWV0YWRhdGEuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NvbnRlbnQtbWV0YWRhdGEuY29tcG9uZW50LnNjc3MnXSxcbiAgICBob3N0OiB7IGNsYXNzOiAnYWRmLWNvbnRlbnQtbWV0YWRhdGEnIH0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBDb250ZW50TWV0YWRhdGFDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCB7XG4gICAgLyoqIChyZXF1aXJlZCkgVGhlIG5vZGUgZW50aXR5IHRvIGZldGNoIG1ldGFkYXRhIGFib3V0ICovXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICBub2RlOiBOb2RlO1xuXG4gICAgLyoqIFRvZ2dsZXMgd2hldGhlciB0byBkaXNwbGF5IGVtcHR5IHZhbHVlcyBpbiB0aGUgY2FyZCB2aWV3ICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5RW1wdHk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZXMgYmV0d2VlbiBleHBhbmRlZCAoaWUsIGZ1bGwgaW5mb3JtYXRpb24pIGFuZCBjb2xsYXBzZWRcbiAgICAgKiAoaWUsIHJlZHVjZWQgaW5mb3JtYXRpb24pIGluIHRoZSBkaXNwbGF5XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBleHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIFRoZSBtdWx0aSBwYXJhbWV0ZXIgb2YgdGhlIHVuZGVybHlpbmcgbWF0ZXJpYWwgZXhwYW5zaW9uIHBhbmVsLCBzZXQgdG8gdHJ1ZSB0byBhbGxvdyBtdWx0aSBhY2NvcmRpb24gdG8gYmUgZXhwYW5kZWQgYXQgdGhlIHNhbWUgdGltZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgbXVsdGkgPSBmYWxzZTtcblxuICAgIC8qKiBOYW1lIG9yIGNvbmZpZ3VyYXRpb24gb2YgdGhlIG1ldGFkYXRhIHByZXNldCwgd2hpY2ggZGVmaW5lcyBhc3BlY3RzIGFuZCB0aGVpciBwcm9wZXJ0aWVzICovXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICBwcmVzZXQ6IHN0cmluZyB8IFByZXNldENvbmZpZztcblxuICAgIC8qKiBUb2dnbGVzIHdoZXRoZXIgdGhlIG1ldGFkYXRhIHByb3BlcnRpZXMgc2hvdWxkIGJlIHNob3duICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5RGVmYXVsdFByb3BlcnRpZXM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgLyoqIChvcHRpb25hbCkgc2hvd3MgdGhlIGdpdmVuIGFzcGVjdCBpbiB0aGUgZXhwYW5kZWQgIGNhcmQgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlBc3BlY3Q6IHN0cmluZyA9IG51bGw7XG5cbiAgICAvKiogVG9nZ2xlcyB3aGV0aGVyIG9yIG5vdCB0byBlbmFibGUgY29weSB0byBjbGlwYm9hcmQgYWN0aW9uLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29weVRvQ2xpcGJvYXJkQWN0aW9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKiBUb2dnbGVzIHdoZXRoZXIgb3Igbm90IHRvIGVuYWJsZSBjaGlwcyBmb3IgbXVsdGl2YWx1ZWQgcHJvcGVydGllcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHVzZUNoaXBzRm9yTXVsdGlWYWx1ZVByb3BlcnR5OiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKiBUcnVlIGlmIHRhZ3Mgc2hvdWxkIGJlIGRpc3BsYXllZCwgZmFsc2Ugb3RoZXJ3aXNlICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5VGFncyA9IGZhbHNlO1xuXG4gICAgLyoqIFRydWUgaWYgY2F0ZWdvcmllcyBzaG91bGQgYmUgZGlzcGxheWVkLCBmYWxzZSBvdGhlcndpc2UgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlDYXRlZ29yaWVzID0gZmFsc2U7XG5cbiAgICAvKiogTGlzdCBvZiBjdXN0b20gbWV0YWRhdGEgcGFuZWxzIHRvIGJlIGRpc3BsYXllZCB3aXRoIHJlZ2lzdGVyZWQgY3VzdG9tIGNvbXBvbmVudHMgKi9cbiAgICBASW5wdXQoKVxuICAgIGN1c3RvbVBhbmVsczogQ29udGVudE1ldGFkYXRhQ3VzdG9tUGFuZWxbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogKG9wdGlvbmFsKSBUaGlzIGZsYWcgc2V0cyB0aGUgbWV0YWRhdGEgaW4gcmVhZC1vbmx5IG1vZGUsXG4gICAgICogcHJldmVudGluZyBjaGFuZ2VzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVhZE9ubHkgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgX2Fzc2lnbmVkVGFnczogc3RyaW5nW10gPSBbXTtcbiAgICBwcml2YXRlIGFzc2lnbmVkVGFnc0VudHJpZXM6IFRhZ0VudHJ5W10gPSBbXTtcbiAgICBwcml2YXRlIF90YWdzQ3JlYXRvck1vZGUgPSBUYWdzQ3JlYXRvck1vZGUuQ1JFQVRFX0FORF9BU1NJR047XG4gICAgcHJpdmF0ZSBfdGFnczogc3RyaW5nW10gPSBbXTtcbiAgICBwcml2YXRlIHRhcmdldFByb3BlcnR5OiBDYXJkVmlld0Jhc2VJdGVtTW9kZWw7XG4gICAgcHJpdmF0ZSBjbGFzc2lmaWFibGVDaGFuZ2VkU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSBfc2F2aW5nID0gZmFsc2U7XG5cbiAgICBEZWZhdWx0UGFuZWxzID0gRGVmYXVsdFBhbmVscztcbiAgICBtdWx0aVZhbHVlU2VwYXJhdG9yOiBzdHJpbmc7XG4gICAgYmFzaWNQcm9wZXJ0aWVzJDogT2JzZXJ2YWJsZTxDYXJkVmlld0l0ZW1bXT47XG4gICAgZ3JvdXBlZFByb3BlcnRpZXMkOiBPYnNlcnZhYmxlPENhcmRWaWV3R3JvdXBbXT47XG5cbiAgICB0YWdzVG9EaXNwbGF5OiBDaGlwW107XG4gICAgY2hhbmdlZFByb3BlcnRpZXMgPSB7fTtcbiAgICBoYXNNZXRhZGF0YUNoYW5nZWQgPSBmYWxzZTtcbiAgICBhc3NpZ25lZENhdGVnb3JpZXM6IENhdGVnb3J5W10gPSBbXTtcbiAgICBjYXRlZ29yaWVzOiBDYXRlZ29yeVtdID0gW107XG4gICAgY2F0ZWdvcmllc01hbmFnZW1lbnRNb2RlID0gQ2F0ZWdvcmllc01hbmFnZW1lbnRNb2RlLkFTU0lHTjtcbiAgICBjbGFzc2lmaWFibGVDaGFuZ2VkID0gdGhpcy5jbGFzc2lmaWFibGVDaGFuZ2VkU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBlZGl0aW5nID0gZmFsc2U7XG4gICAgaW52YWxpZFByb3BlcnRpZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBlZGl0ZWRQYW5lbFRpdGxlID0gJyc7XG4gICAgY3VycmVudFBhbmVsOiBDb250ZW50TWV0YWRhdGFQYW5lbCA9IHtcbiAgICAgICAgZXhwYW5kZWQ6IGZhbHNlLFxuICAgICAgICBwYW5lbFRpdGxlOiAnJ1xuICAgIH07XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjb250ZW50TWV0YWRhdGFTZXJ2aWNlOiBDb250ZW50TWV0YWRhdGFTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNhcmRWaWV3Q29udGVudFVwZGF0ZVNlcnZpY2U6IENhcmRWaWV3Q29udGVudFVwZGF0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbm9kZXNBcGlTZXJ2aWNlOiBOb2Rlc0FwaVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRpb25TZXJ2aWNlOiBUcmFuc2xhdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYXBwQ29uZmlnOiBBcHBDb25maWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHRhZ1NlcnZpY2U6IFRhZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY2F0ZWdvcnlTZXJ2aWNlOiBDYXRlZ29yeVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29udGVudFNlcnZpY2U6IENvbnRlbnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5jb3B5VG9DbGlwYm9hcmRBY3Rpb24gPSB0aGlzLmFwcENvbmZpZy5nZXQ8Ym9vbGVhbj4oJ2NvbnRlbnQtbWV0YWRhdGEuY29weS10by1jbGlwYm9hcmQtYWN0aW9uJyk7XG4gICAgICAgIHRoaXMubXVsdGlWYWx1ZVNlcGFyYXRvciA9IHRoaXMuYXBwQ29uZmlnLmdldDxzdHJpbmc+KCdjb250ZW50LW1ldGFkYXRhLm11bHRpLXZhbHVlLXBpcGUtc2VwYXJhdG9yJykgfHwgREVGQVVMVF9TRVBBUkFUT1I7XG4gICAgICAgIHRoaXMudXNlQ2hpcHNGb3JNdWx0aVZhbHVlUHJvcGVydHkgPSB0aGlzLmFwcENvbmZpZy5nZXQ8Ym9vbGVhbj4oJ2NvbnRlbnQtbWV0YWRhdGEubXVsdGktdmFsdWUtY2hpcHMnKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5jYXJkVmlld0NvbnRlbnRVcGRhdGVTZXJ2aWNlLml0ZW1VcGRhdGVkJFxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDUwMCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgodXBkYXRlZE5vZGU6IFVwZGF0ZU5vdGlmaWNhdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFzTWV0YWRhdGFDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhcmdldFByb3BlcnR5ID0gdXBkYXRlZE5vZGUudGFyZ2V0O1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlSW52YWxpZFByb3BlcnRpZXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNoYW5nZXModXBkYXRlZE5vZGUuY2hhbmdlZCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNhcmRWaWV3Q29udGVudFVwZGF0ZVNlcnZpY2UudXBkYXRlZEFzcGVjdCQucGlwZShkZWJvdW5jZVRpbWUoNTAwKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgobm9kZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5ub2RlLmFzcGVjdE5hbWVzID0gbm9kZT8uYXNwZWN0TmFtZXM7XG4gICAgICAgICAgICB0aGlzLmxvYWRQcm9wZXJ0aWVzKG5vZGUpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmxvYWRQcm9wZXJ0aWVzKHRoaXMubm9kZSk7XG4gICAgICAgIHRoaXMudmVyaWZ5QWxsb3dhYmxlT3BlcmF0aW9ucygpO1xuXG4gICAgICAgIHRoaXMuY3VycmVudFBhbmVsLnBhbmVsVGl0bGUgPSB0aGlzLmRpc3BsYXlBc3BlY3QgPz8gdGhpcy5EZWZhdWx0UGFuZWxzLlBST1BFUlRJRVM7XG4gICAgICAgIHRoaXMuY3VycmVudFBhbmVsLmV4cGFuZGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZlcmlmeUFsbG93YWJsZU9wZXJhdGlvbnMoKSB7XG4gICAgICAgIGlmICghdGhpcy5ub2RlPy5hbGxvd2FibGVPcGVyYXRpb25zIHx8ICF0aGlzLmNvbnRlbnRTZXJ2aWNlLmhhc0FsbG93YWJsZU9wZXJhdGlvbnModGhpcy5ub2RlLCBBbGxvd2FibGVPcGVyYXRpb25zRW51bS5VUERBVEUpKSB7XG4gICAgICAgICAgICB0aGlzLnJlYWRPbmx5ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBhc3NpZ25lZFRhZ3MoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXNzaWduZWRUYWdzO1xuICAgIH1cblxuICAgIHNldCB0YWdzKHRhZ3M6IHN0cmluZ1tdKSB7XG4gICAgICAgIHRoaXMuX3RhZ3MgPSB0YWdzO1xuICAgICAgICB0aGlzLnRhZ3NUb0Rpc3BsYXkgPSB0aGlzLnRhZ3MubWFwKCh0YWcpID0+ICh7IGlkOiB0YWcsIG5hbWU6IHRhZyB9KSk7XG4gICAgfVxuXG4gICAgZ2V0IHRhZ3MoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFncztcbiAgICB9XG5cbiAgICBnZXQgdGFnc0NyZWF0b3JNb2RlKCk6IFRhZ3NDcmVhdG9yTW9kZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWdzQ3JlYXRvck1vZGU7XG4gICAgfVxuXG4gICAgZ2V0IHNhdmluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NhdmluZztcbiAgICB9XG5cbiAgICBpc1BhbmVsRWRpdGluZyhwYW5lbFRpdGxlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuZWRpdGluZyAmJlxuICAgICAgICAgICAgKCh0aGlzLmN1cnJlbnRQYW5lbC5wYW5lbFRpdGxlID09PSBwYW5lbFRpdGxlICYmIHRoaXMuZWRpdGVkUGFuZWxUaXRsZSA9PT0gcGFuZWxUaXRsZSkgfHwgdGhpcy5lZGl0ZWRQYW5lbFRpdGxlID09PSBwYW5lbFRpdGxlKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBoYW5kbGVVcGRhdGVFcnJvcihlcnJvcjogRXJyb3IpIHtcbiAgICAgICAgbGV0IHN0YXR1c0NvZGUgPSAwO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBzdGF0dXNDb2RlID0gSlNPTi5wYXJzZShlcnJvci5tZXNzYWdlKS5lcnJvci5zdGF0dXNDb2RlO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIC8qIGVtcHR5ICovXG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbWVzc2FnZSA9IGBNRVRBREFUQS5FUlJPUlMuJHtzdGF0dXNDb2RlfWA7XG5cbiAgICAgICAgaWYgKHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmluc3RhbnQobWVzc2FnZSkgPT09IG1lc3NhZ2UpIHtcbiAgICAgICAgICAgIG1lc3NhZ2UgPSAnTUVUQURBVEEuRVJST1JTLkdFTkVSSUMnO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb250ZW50TWV0YWRhdGFTZXJ2aWNlLmVycm9yLm5leHQoe1xuICAgICAgICAgICAgc3RhdHVzQ29kZSxcbiAgICAgICAgICAgIG1lc3NhZ2VcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoY2hhbmdlcy5ub2RlICYmICFjaGFuZ2VzLm5vZGUuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZFByb3BlcnRpZXMoY2hhbmdlcy5ub2RlLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcy5yZWFkT25seT8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0RWRpdGluZygpO1xuICAgICAgICAgICAgdGhpcy5sb2FkUHJvcGVydGllcyh0aGlzLm5vZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXMuZGlzcGxheUFzcGVjdD8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRQYW5lbC5wYW5lbFRpdGxlID0gY2hhbmdlcy5kaXNwbGF5QXNwZWN0LmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFBhbmVsLmV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzLmRpc3BsYXlEZWZhdWx0UHJvcGVydGllcz8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmV4cGFuZFBhbmVsKHRoaXMuRGVmYXVsdFBhbmVscy5QUk9QRVJUSUVTKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZUNoYW5nZXModXBkYXRlZE5vZGVDaGFuZ2VzKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKHVwZGF0ZWROb2RlQ2hhbmdlcykubWFwKChwcm9wZXJ0eUdyb3VwOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdXBkYXRlZE5vZGVDaGFuZ2VzW3Byb3BlcnR5R3JvdXBdID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZFByb3BlcnRpZXNbcHJvcGVydHlHcm91cF0gPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY2hhbmdlZFByb3BlcnRpZXNbcHJvcGVydHlHcm91cF0sXG4gICAgICAgICAgICAgICAgICAgIC4uLnVwZGF0ZWROb2RlQ2hhbmdlc1twcm9wZXJ0eUdyb3VwXVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZFByb3BlcnRpZXNbcHJvcGVydHlHcm91cF0gPSB1cGRhdGVkTm9kZUNoYW5nZXNbcHJvcGVydHlHcm91cF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNhdmVDaGFuZ2VzKGV2ZW50PzogTW91c2VFdmVudCkge1xuICAgICAgICBldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMucmVzZXRFZGl0aW5nKCk7XG4gICAgICAgIHRoaXMuX3NhdmluZyA9IHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzQ29udGVudFR5cGVDaGFuZ2VkKHRoaXMuY2hhbmdlZFByb3BlcnRpZXMpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRNZXRhZGF0YVNlcnZpY2Uub3BlbkNvbmZpcm1EaWFsb2codGhpcy5jaGFuZ2VkUHJvcGVydGllcykuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU5vZGUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVOb2RlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlciBhbGwgdGFncyB3aGljaCBzaG91bGQgYmUgYXNzaWduZWQgdG8gbm9kZS4gUGxlYXNlIG5vdGUgdGhhdCB0aGV5IGFyZSBqdXN0IGluIFwicmVnaXN0ZXJcIiBzdGF0ZSBhbmQgYXJlIG5vdCB5ZXQgc2F2ZWRcbiAgICAgKiB1bnRpbCBidXR0b24gZm9yIHNhdmluZyBkYXRhIGlzIGNsaWNrZWQuIENhbGxpbmcgdGhhdCBmdW5jdGlvbiBjYXVzZXMgdGhhdCBzYXZlIGJ1dHRvbiBpcyBlbmFibGVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHRhZ3MgYXJyYXkgb2YgdGFncyB0byByZWdpc3RlciwgdGhleSBhcmUgbm90IHNhdmVkIHlldCB1bnRpbCB3ZSBjbGljayBzYXZlIGJ1dHRvbi5cbiAgICAgKi9cbiAgICBzdG9yZVRhZ3NUb0Fzc2lnbih0YWdzOiBzdHJpbmdbXSkge1xuICAgICAgICB0aGlzLnRhZ3MgPSB0YWdzO1xuICAgICAgICB0aGlzLl9hc3NpZ25lZFRhZ3MgPSB0YWdzO1xuICAgICAgICB0aGlzLmhhc01ldGFkYXRhQ2hhbmdlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3RvcmUgYWxsIGNhdGVnb3JpZXMgdGhhdCBub2RlIHNob3VsZCBiZSBhc3NpZ25lZCB0by4gUGxlYXNlIG5vdGUgdGhhdCB0aGV5IGFyZSBqdXN0IGluIFwic3RvcmVkXCIgc3RhdGUgYW5kIGFyZSBub3QgeWV0IHNhdmVkXG4gICAgICogdW50aWwgYnV0dG9uIGZvciBzYXZpbmcgZGF0YSBpcyBjbGlja2VkLiBDYWxsaW5nIHRoYXQgZnVuY3Rpb24gY2F1c2VzIHRoYXQgc2F2ZSBidXR0b24gaXMgZW5hYmxlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXRlZ29yaWVzVG9Bc3NpZ24gYXJyYXkgb2YgY2F0ZWdvcmllcyB0byBzdG9yZS5cbiAgICAgKi9cbiAgICBzdG9yZUNhdGVnb3JpZXNUb0Fzc2lnbihjYXRlZ29yaWVzVG9Bc3NpZ246IENhdGVnb3J5W10pIHtcbiAgICAgICAgdGhpcy5jYXRlZ29yaWVzID0gY2F0ZWdvcmllc1RvQXNzaWduO1xuICAgICAgICB0aGlzLmhhc01ldGFkYXRhQ2hhbmdlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV2ZXJ0Q2hhbmdlcygpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VkUHJvcGVydGllcyA9IHt9O1xuICAgICAgICB0aGlzLmhhc01ldGFkYXRhQ2hhbmdlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCBzaG93RW1wdHlUYWdNZXNzYWdlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50YWdzPy5sZW5ndGggPT09IDAgJiYgdGhpcy5jdXJyZW50UGFuZWwucGFuZWxUaXRsZSA9PT0gJ1RhZ3MnICYmICF0aGlzLmVkaXRpbmc7XG4gICAgfVxuXG4gICAgZ2V0IHNob3dFbXB0eUNhdGVnb3J5TWVzc2FnZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2F0ZWdvcmllcz8ubGVuZ3RoID09PSAwICYmIHRoaXMuY3VycmVudFBhbmVsLnBhbmVsVGl0bGUgPT09ICdDYXRlZ29yaWVzJyAmJiAhdGhpcy5lZGl0aW5nO1xuICAgIH1cblxuICAgIHRvZ2dsZUdyb3VwRWRpdGluZyhwYW5lbFRpdGxlOiBzdHJpbmcsIGV2ZW50PzogTW91c2VFdmVudCkge1xuICAgICAgICBldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmICh0aGlzLmVkaXRpbmcgJiYgdGhpcy5oYXNNZXRhZGF0YUNoYW5nZWQpIHtcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zaG93RXJyb3IoJ01FVEFEQVRBLkJBU0lDLlNBVkVfT1JfRElTQ0FSRF9DSEFOR0VTJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lZGl0aW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5lZGl0ZWRQYW5lbFRpdGxlID0gcGFuZWxUaXRsZTtcbiAgICAgICAgdGhpcy5leHBhbmRQYW5lbChwYW5lbFRpdGxlKTtcbiAgICB9XG5cbiAgICBjYW5jZWxHcm91cEVkaXRpbmcocGFuZWxUaXRsZTogc3RyaW5nLCBldmVudD86IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnJlc2V0RWRpdGluZygpO1xuICAgICAgICB0aGlzLnJldmVydENoYW5nZXMoKTtcbiAgICAgICAgY29uc3QgbG9hZEJhc2ljUHJvcHMgPSBwYW5lbFRpdGxlID09PSB0aGlzLkRlZmF1bHRQYW5lbHMuUFJPUEVSVElFUztcbiAgICAgICAgY29uc3QgbG9hZFRhZ3MgPSBwYW5lbFRpdGxlID09PSB0aGlzLkRlZmF1bHRQYW5lbHMuVEFHUztcbiAgICAgICAgY29uc3QgbG9hZENhdGVnb3JpZXMgPSBwYW5lbFRpdGxlID09PSB0aGlzLkRlZmF1bHRQYW5lbHMuQ0FURUdPUklFUztcbiAgICAgICAgY29uc3QgbG9hZEdyb3VwZWRQcm9wcyA9ICFsb2FkQmFzaWNQcm9wcyAmJiAhbG9hZFRhZ3MgJiYgIWxvYWRDYXRlZ29yaWVzO1xuICAgICAgICB0aGlzLmxvYWRQcm9wZXJ0aWVzKHRoaXMubm9kZSwgbG9hZEJhc2ljUHJvcHMsIGxvYWRHcm91cGVkUHJvcHMsIGxvYWRUYWdzLCBsb2FkQ2F0ZWdvcmllcyk7XG4gICAgfVxuXG4gICAgZXhwYW5kUGFuZWwocGFuZWxUaXRsZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFBhbmVsLnBhbmVsVGl0bGUgPSBwYW5lbFRpdGxlO1xuICAgICAgICB0aGlzLmN1cnJlbnRQYW5lbC5leHBhbmRlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgY2xvc2VQYW5lbChwYW5lbFRpdGxlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFBhbmVsLnBhbmVsVGl0bGUgPT09IHBhbmVsVGl0bGUpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFBhbmVsLmV4cGFuZGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXNldEVkaXRpbmcoKSB7XG4gICAgICAgIHRoaXMuZWRpdGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmVkaXRlZFBhbmVsVGl0bGUgPSAnJztcbiAgICB9XG5cbiAgICBzaG93R3JvdXAoZ3JvdXA6IENhcmRWaWV3R3JvdXApOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXMuZmlsdGVyKChwcm9wZXJ0eSkgPT4gIXRoaXMuaXNFbXB0eShwcm9wZXJ0eS5kaXNwbGF5VmFsdWUpKTtcblxuICAgICAgICByZXR1cm4gcHJvcGVydGllcy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIGtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDM3IHx8IGV2ZW50LmtleUNvZGUgPT09IDM5KSB7XG4gICAgICAgICAgICAvLyBBcnJvd0xlZnQgJiYgQXJyb3dSaWdodFxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZU5vZGUoKSB7XG4gICAgICAgIGZvcmtKb2luKHtcbiAgICAgICAgICAgIHVwZGF0ZWROb2RlOiB0aGlzLm5vZGVzQXBpU2VydmljZS51cGRhdGVOb2RlKHRoaXMubm9kZS5pZCwgdGhpcy5jaGFuZ2VkUHJvcGVydGllcyksXG4gICAgICAgICAgICAuLi4odGhpcy5kaXNwbGF5VGFncyA/IHRoaXMuc2F2ZVRhZ3MoKSA6IHt9KSxcbiAgICAgICAgICAgIC4uLih0aGlzLmRpc3BsYXlDYXRlZ29yaWVzID8gdGhpcy5zYXZlQ2F0ZWdvcmllcygpIDoge30pXG4gICAgICAgIH0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYXJkVmlld0NvbnRlbnRVcGRhdGVTZXJ2aWNlLnVwZGF0ZUVsZW1lbnQodGhpcy50YXJnZXRQcm9wZXJ0eSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlVXBkYXRlRXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2F2aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmV2ZXJ0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRQcm9wZXJ0aWVzKHRoaXMubm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVW5kZWZpbmVkTm9kZVByb3BlcnRpZXMocmVzdWx0LnVwZGF0ZWROb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaGFzQ29udGVudFR5cGVDaGFuZ2VkKHRoaXMuY2hhbmdlZFByb3BlcnRpZXMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhcmRWaWV3Q29udGVudFVwZGF0ZVNlcnZpY2UudXBkYXRlTm9kZUFzcGVjdCh0aGlzLm5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmV2ZXJ0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMubm9kZSwgcmVzdWx0LnVwZGF0ZWROb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2Rlc0FwaVNlcnZpY2Uubm9kZVVwZGF0ZWQubmV4dCh0aGlzLm5vZGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMocmVzdWx0KS5sZW5ndGggPiAxICYmIHRoaXMuZGlzcGxheVRhZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZFRhZ3NGb3JOb2RlKHRoaXMubm9kZS5pZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGlzcGxheUNhdGVnb3JpZXMgJiYgISFyZXN1bHQuTGlua2luZ0NhdGVnb3JpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXNzaWduZWRDYXRlZ29yaWVzID0gcmVzdWx0LkxpbmtpbmdDYXRlZ29yaWVzLmxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHJlc3VsdC5MaW5raW5nQ2F0ZWdvcmllcy5saXN0LmVudHJpZXMubWFwKChlbnRyeTogQ2F0ZWdvcnlFbnRyeSkgPT4gZW50cnkuZW50cnkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBbcmVzdWx0LkxpbmtpbmdDYXRlZ29yaWVzLmVudHJ5XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLl9zYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzQ29udGVudFR5cGVDaGFuZ2VkKGNoYW5nZWRQcm9wZXJ0aWVzKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIWNoYW5nZWRQcm9wZXJ0aWVzPy5ub2RlVHlwZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVVuZGVmaW5lZE5vZGVQcm9wZXJ0aWVzKG5vZGU6IE5vZGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFub2RlLnByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIG5vZGUucHJvcGVydGllcyA9IHt9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkUHJvcGVydGllcyhub2RlOiBOb2RlLCBsb2FkQmFzaWNQcm9wcyA9IHRydWUsIGxvYWRHcm91cGVkUHJvcHMgPSB0cnVlLCBsb2FkVGFncyA9IHRydWUsIGxvYWRDYXRlZ29yaWVzID0gdHJ1ZSkge1xuICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgaWYgKGxvYWRCYXNpY1Byb3BzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iYXNpY1Byb3BlcnRpZXMkID0gdGhpcy5nZXRQcm9wZXJ0aWVzKG5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxvYWRHcm91cGVkUHJvcHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3VwZWRQcm9wZXJ0aWVzJCA9IHRoaXMuY29udGVudE1ldGFkYXRhU2VydmljZS5nZXRHcm91cGVkUHJvcGVydGllcyhub2RlLCB0aGlzLnByZXNldCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmRpc3BsYXlUYWdzICYmIGxvYWRUYWdzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkVGFnc0Zvck5vZGUobm9kZS5pZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmRpc3BsYXlDYXRlZ29yaWVzICYmIGxvYWRDYXRlZ29yaWVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkQ2F0ZWdvcmllc0Zvck5vZGUobm9kZS5pZCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBhc3BlY3ROYW1lcyA9IG5vZGUuYXNwZWN0TmFtZXMgfHwgW107XG4gICAgICAgICAgICAgICAgaWYgKCFhc3BlY3ROYW1lcy5pbmNsdWRlcygnZ2VuZXJhbGNsYXNzaWZpYWJsZScpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2F0ZWdvcmllcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsYXNzaWZpYWJsZUNoYW5nZWRTdWJqZWN0Lm5leHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFByb3BlcnRpZXMobm9kZTogTm9kZSkge1xuICAgICAgICBjb25zdCBwcm9wZXJ0aWVzJCA9IHRoaXMuY29udGVudE1ldGFkYXRhU2VydmljZS5nZXRCYXNpY1Byb3BlcnRpZXMobm9kZSk7XG4gICAgICAgIGNvbnN0IGNvbnRlbnRUeXBlUHJvcGVydHkkID0gdGhpcy5jb250ZW50TWV0YWRhdGFTZXJ2aWNlLmdldENvbnRlbnRUeXBlUHJvcGVydHkobm9kZSk7XG4gICAgICAgIHJldHVybiB6aXAocHJvcGVydGllcyQsIGNvbnRlbnRUeXBlUHJvcGVydHkkKS5waXBlKFxuICAgICAgICAgICAgbWFwKChbcHJvcGVydGllcywgY29udGVudFR5cGVQcm9wZXJ0eV0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZFByb3BlcnRpZXMgPSBjb250ZW50VHlwZVByb3BlcnR5LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKHByb3BlcnR5KSA9PiBwcm9wZXJ0aWVzLmZpbmRJbmRleCgoYmFzZVByb3BlcnR5KSA9PiBiYXNlUHJvcGVydHkua2V5ID09PSBwcm9wZXJ0eS5rZXkpID09PSAtMVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5wcm9wZXJ0aWVzLCAuLi5maWx0ZXJlZFByb3BlcnRpZXNdO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRW1wdHkodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJyc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkQ2F0ZWdvcmllc0Zvck5vZGUobm9kZUlkOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5hc3NpZ25lZENhdGVnb3JpZXMgPSBbXTtcbiAgICAgICAgdGhpcy5jYXRlZ29yeVNlcnZpY2UuZ2V0Q2F0ZWdvcnlMaW5rc0Zvck5vZGUobm9kZUlkKS5zdWJzY3JpYmUoKGNhdGVnb3J5UGFnaW5nKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNhdGVnb3JpZXMgPSBjYXRlZ29yeVBhZ2luZy5saXN0LmVudHJpZXMubWFwKChjYXRlZ29yeUVudHJ5KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IGNhdGVnb3J5RW50cnkuZW50cnkucGF0aCA/IGNhdGVnb3J5RW50cnkuZW50cnkucGF0aC5zcGxpdCgnLycpLnNwbGljZSgzKS5qb2luKCcvJykgOiBudWxsO1xuICAgICAgICAgICAgICAgIGNhdGVnb3J5RW50cnkuZW50cnkubmFtZSA9IHBhdGggPyBgJHtwYXRofS8ke2NhdGVnb3J5RW50cnkuZW50cnkubmFtZX1gIDogY2F0ZWdvcnlFbnRyeS5lbnRyeS5uYW1lO1xuICAgICAgICAgICAgICAgIHJldHVybiBjYXRlZ29yeUVudHJ5LmVudHJ5O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmFzc2lnbmVkQ2F0ZWdvcmllcyA9IFsuLi50aGlzLmNhdGVnb3JpZXNdO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNhdmVDYXRlZ29yaWVzKCk6IHsgW2tleTogc3RyaW5nXTogT2JzZXJ2YWJsZTxDYXRlZ29yeVBhZ2luZyB8IENhdGVnb3J5RW50cnkgfCB2b2lkPiB9IHtcbiAgICAgICAgY29uc3Qgb2JzZXJ2YWJsZXM6IHsgW2tleTogc3RyaW5nXTogT2JzZXJ2YWJsZTxDYXRlZ29yeVBhZ2luZyB8IENhdGVnb3J5RW50cnkgfCB2b2lkPiB9ID0ge307XG4gICAgICAgIGlmICh0aGlzLmNhdGVnb3JpZXMpIHtcbiAgICAgICAgICAgIHRoaXMuYXNzaWduZWRDYXRlZ29yaWVzLmZvckVhY2goKGFzc2lnbmVkQ2F0ZWdvcnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jYXRlZ29yaWVzLmV2ZXJ5KChjYXRlZ29yeSkgPT4gY2F0ZWdvcnkubmFtZSAhPT0gYXNzaWduZWRDYXRlZ29yeS5uYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICBvYnNlcnZhYmxlc1tgUmVtb3ZpbmcgJHthc3NpZ25lZENhdGVnb3J5LmlkfWBdID0gdGhpcy5jYXRlZ29yeVNlcnZpY2UudW5saW5rTm9kZUZyb21DYXRlZ29yeSh0aGlzLm5vZGUuaWQsIGFzc2lnbmVkQ2F0ZWdvcnkuaWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgY2F0ZWdvcnlMaW5rQm9kaWVzID0gdGhpcy5jYXRlZ29yaWVzLm1hcCgoY2F0ZWdvcnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjYXRlZ29yeUxpbmtCb2R5ID0gbmV3IENhdGVnb3J5TGlua0JvZHkoKTtcbiAgICAgICAgICAgICAgICBjYXRlZ29yeUxpbmtCb2R5LmNhdGVnb3J5SWQgPSBjYXRlZ29yeS5pZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2F0ZWdvcnlMaW5rQm9keTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGNhdGVnb3J5TGlua0JvZGllcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgb2JzZXJ2YWJsZXNbJ0xpbmtpbmdDYXRlZ29yaWVzJ10gPSB0aGlzLmNhdGVnb3J5U2VydmljZS5saW5rTm9kZVRvQ2F0ZWdvcnkodGhpcy5ub2RlLmlkLCBjYXRlZ29yeUxpbmtCb2RpZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYnNlcnZhYmxlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRUYWdzRm9yTm9kZShpZDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMudGFnU2VydmljZS5nZXRUYWdzQnlOb2RlSWQoaWQpLnN1YnNjcmliZSgodGFnUGFnaW5nKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFzc2lnbmVkVGFnc0VudHJpZXMgPSB0YWdQYWdpbmcubGlzdC5lbnRyaWVzO1xuICAgICAgICAgICAgdGhpcy50YWdzID0gdGFnUGFnaW5nLmxpc3QuZW50cmllcy5tYXAoKHRhZ0VudHJ5KSA9PiB0YWdFbnRyeS5lbnRyeS50YWcpO1xuICAgICAgICAgICAgdGhpcy5fYXNzaWduZWRUYWdzID0gWy4uLnRoaXMudGFnc107XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2F2ZVRhZ3MoKTogeyBba2V5OiBzdHJpbmddOiBPYnNlcnZhYmxlPFRhZ1BhZ2luZyB8IFRhZ0VudHJ5IHwgdm9pZD4gfSB7XG4gICAgICAgIGNvbnN0IG9ic2VydmFibGVzOiB7IFtrZXk6IHN0cmluZ106IE9ic2VydmFibGU8VGFnUGFnaW5nIHwgVGFnRW50cnkgfCB2b2lkPiB9ID0ge307XG4gICAgICAgIGlmICh0aGlzLnRhZ3MpIHtcbiAgICAgICAgICAgIHRoaXMuYXNzaWduZWRUYWdzRW50cmllcy5mb3JFYWNoKCh0YWdFbnRyeSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy50YWdzLnNvbWUoKHRhZykgPT4gdGFnRW50cnkuZW50cnkudGFnID09PSB0YWcpKSB7XG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmFibGVzW2Ake3RhZ0VudHJ5LmVudHJ5LmlkfVJlbW92aW5nYF0gPSB0aGlzLnRhZ1NlcnZpY2UucmVtb3ZlVGFnKHRoaXMubm9kZS5pZCwgdGFnRW50cnkuZW50cnkuaWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHRoaXMudGFncy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBvYnNlcnZhYmxlcy50YWdzQXNzaWduaW5nID0gdGhpcy50YWdTZXJ2aWNlLmFzc2lnblRhZ3NUb05vZGUoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS5pZCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWdzLm1hcCgodGFnKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YWdCb2R5ID0gbmV3IFRhZ0JvZHkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ0JvZHkudGFnID0gdGFnO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRhZ0JvZHk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVJbnZhbGlkUHJvcGVydGllcygpIHtcbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0UHJvcGVydHk/LmlzVmFsaWRWYWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMuaW52YWxpZFByb3BlcnRpZXMuYWRkKHRoaXMudGFyZ2V0UHJvcGVydHkua2V5KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnRhcmdldFByb3BlcnR5Py5pc1ZhbGlkVmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHRoaXMuaW52YWxpZFByb3BlcnRpZXMuZGVsZXRlKHRoaXMudGFyZ2V0UHJvcGVydHkua2V5KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxtYXQtYWNjb3JkaW9uIGRpc3BsYXlNb2RlPVwiZmxhdFwiIFttdWx0aV09XCJtdWx0aVwiIGNsYXNzPVwiYWRmLW1ldGFkYXRhLXByb3BlcnRpZXNcIj5cbiAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbFxuICAgICAgICAqbmdJZj1cImRpc3BsYXlEZWZhdWx0UHJvcGVydGllc1wiXG4gICAgICAgIGNsYXNzPVwiYWRmLWNvbnRlbnQtbWV0YWRhdGEtcGFuZWxcIlxuICAgICAgICBbZXhwYW5kZWRdPVwiY3VycmVudFBhbmVsLnBhbmVsVGl0bGUgPT09IERlZmF1bHRQYW5lbHMuUFJPUEVSVElFUyAmJiBjdXJyZW50UGFuZWwuZXhwYW5kZWRcIlxuICAgICAgICAob3BlbmVkKT1cImV4cGFuZFBhbmVsKERlZmF1bHRQYW5lbHMuUFJPUEVSVElFUylcIlxuICAgICAgICAoY2xvc2VkKT1cImNsb3NlUGFuZWwoRGVmYXVsdFBhbmVscy5QUk9QRVJUSUVTKVwiXG4gICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInYWRmLW1ldGFkYXRhLWdyb3VwLXByb3BlcnRpZXMnXCJcbiAgICAgICAgaGlkZVRvZ2dsZT5cbiAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyXG4gICAgICAgICAgICBjbGFzcz1cImFkZi1tZXRhZGF0YS1wcm9wZXJ0aWVzLWhlYWRlclwiXG4gICAgICAgICAgICBbY2xhc3MuYWRmLW1ldGFkYXRhLXByb3BlcnRpZXMtaGVhZGVyLWV4cGFuZGVkXT1cImN1cnJlbnRQYW5lbC5wYW5lbFRpdGxlID09PSBEZWZhdWx0UGFuZWxzLlBST1BFUlRJRVMgJiYgY3VycmVudFBhbmVsLmV4cGFuZGVkXCI+XG4gICAgICAgICAgICA8YWRmLWNvbnRlbnQtbWV0YWRhdGEtaGVhZGVyXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIidDT1JFLk1FVEFEQVRBLkJBU0lDLkhFQURFUidcIlxuICAgICAgICAgICAgICAgIFtleHBhbmRlZF09XCJjdXJyZW50UGFuZWwucGFuZWxUaXRsZSA9PT0gRGVmYXVsdFBhbmVscy5QUk9QRVJUSUVTICYmIGN1cnJlbnRQYW5lbC5leHBhbmRlZFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhcmVhZE9ubHkgJiYgIWlzUGFuZWxFZGl0aW5nKERlZmF1bHRQYW5lbHMuUFJPUEVSVElFUylcIlxuICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUdyb3VwRWRpdGluZyhEZWZhdWx0UGFuZWxzLlBST1BFUlRJRVMsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCInQ09SRS5NRVRBREFUQS5BQ1RJT05TLkVESVQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQ09SRS5NRVRBREFUQS5BQ0NFU1NJQklMSVRZLkVESVQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwibWV0YS1kYXRhLWdlbmVyYWwtaW5mby1lZGl0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtZWRpdC1pY29uLWJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPm1vZGVfZWRpdDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzUGFuZWxFZGl0aW5nKERlZmF1bHRQYW5lbHMuUFJPUEVSVElFUylcIiBjbGFzcz1cImFkZi1tZXRhZGF0YS1hY3Rpb24tYnV0dG9uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cIidDT1JFLk1FVEFEQVRBLkFDVElPTlMuQ0FOQ0VMJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsR3JvdXBFZGl0aW5nKERlZmF1bHRQYW5lbHMuUFJPUEVSVElFUywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJyZXNldC1tZXRhZGF0YVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1tZXRhZGF0YS1hY3Rpb24tYnV0dG9ucy1jbGVhclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiJ0NPUkUuTUVUQURBVEEuQUNUSU9OUy5TQVZFJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZUNoYW5nZXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwic2F2ZS1nZW5lcmFsLWluZm8tbWV0YWRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFoYXNNZXRhZGF0YUNoYW5nZWQgfHwgaW52YWxpZFByb3BlcnRpZXMuc2l6ZSA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jaGVjazwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hZGYtY29udGVudC1tZXRhZGF0YS1oZWFkZXI+XG4gICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgIDxhZGYtY2FyZC12aWV3XG4gICAgICAgICAgICBjbGFzcz1cImFkZi1tZXRhZGF0YS1wcm9wZXJ0aWVzLWV4cGFuc2lvbi1wYW5lbFwiXG4gICAgICAgICAgICAoa2V5ZG93bik9XCJrZXlEb3duKCRldmVudClcIlxuICAgICAgICAgICAgW3Byb3BlcnRpZXNdPVwiYmFzaWNQcm9wZXJ0aWVzJCB8IGFzeW5jXCJcbiAgICAgICAgICAgIFtlZGl0YWJsZV09XCIhcmVhZE9ubHkgJiYgaXNQYW5lbEVkaXRpbmcoRGVmYXVsdFBhbmVscy5QUk9QRVJUSUVTKVwiXG4gICAgICAgICAgICBbZGlzcGxheUVtcHR5XT1cImRpc3BsYXlFbXB0eVwiXG4gICAgICAgICAgICBbY29weVRvQ2xpcGJvYXJkQWN0aW9uXT1cImNvcHlUb0NsaXBib2FyZEFjdGlvblwiXG4gICAgICAgICAgICBbdXNlQ2hpcHNGb3JNdWx0aVZhbHVlUHJvcGVydHldPVwidXNlQ2hpcHNGb3JNdWx0aVZhbHVlUHJvcGVydHlcIlxuICAgICAgICAgICAgW211bHRpVmFsdWVTZXBhcmF0b3JdPVwibXVsdGlWYWx1ZVNlcGFyYXRvclwiIC8+XG4gICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlUYWdzXCI+XG4gICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsXG4gICAgICAgICAgICBoaWRlVG9nZ2xlXG4gICAgICAgICAgICBbZXhwYW5kZWRdPVwiY3VycmVudFBhbmVsLnBhbmVsVGl0bGUgPT09IERlZmF1bHRQYW5lbHMuVEFHUyAmJiBjdXJyZW50UGFuZWwuZXhwYW5kZWRcIlxuICAgICAgICAgICAgKG9wZW5lZCk9XCJleHBhbmRQYW5lbChEZWZhdWx0UGFuZWxzLlRBR1MpXCJcbiAgICAgICAgICAgIChjbG9zZWQpPVwiY2xvc2VQYW5lbChEZWZhdWx0UGFuZWxzLlRBR1MpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWRmLWNvbnRlbnQtbWV0YWRhdGEtcGFuZWxcIlxuICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLWNvbnRlbnQtbWV0YWRhdGEtdGFncy1wYW5lbFwiPlxuICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtbWV0YWRhdGEtcHJvcGVydGllcy1oZWFkZXJcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5hZGYtbWV0YWRhdGEtcHJvcGVydGllcy1oZWFkZXItZXhwYW5kZWRdPVwiY3VycmVudFBhbmVsLnBhbmVsVGl0bGUgPT09IERlZmF1bHRQYW5lbHMuVEFHUyAmJiBjdXJyZW50UGFuZWwuZXhwYW5kZWRcIj5cbiAgICAgICAgICAgICAgICA8YWRmLWNvbnRlbnQtbWV0YWRhdGEtaGVhZGVyIFt0aXRsZV09XCInTUVUQURBVEEuQkFTSUMuVEFHUydcIiBbZXhwYW5kZWRdPVwiY3VycmVudFBhbmVsLnBhbmVsVGl0bGUgPT09IERlZmF1bHRQYW5lbHMuVEFHUyAmJiBjdXJyZW50UGFuZWwuZXhwYW5kZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhcmVhZE9ubHkgJiYgIWlzUGFuZWxFZGl0aW5nKERlZmF1bHRQYW5lbHMuVEFHUylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlR3JvdXBFZGl0aW5nKERlZmF1bHRQYW5lbHMuVEFHUywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCInQ09SRS5NRVRBREFUQS5BQ1RJT05TLkVESVQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0NPUkUuTUVUQURBVEEuQUNDRVNTSUJJTElUWS5FRElUJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJzaG93aW5nLXRhZy1pbnB1dC1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtZWRpdC1pY29uLWJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5tb2RlX2VkaXQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzUGFuZWxFZGl0aW5nKERlZmF1bHRQYW5lbHMuVEFHUylcIiBjbGFzcz1cImFkZi1tZXRhZGF0YS1hY3Rpb24tYnV0dG9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cIidDT1JFLk1FVEFEQVRBLkFDVElPTlMuQ0FOQ0VMJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNhbmNlbEdyb3VwRWRpdGluZyhEZWZhdWx0UGFuZWxzLlRBR1MsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cInJlc2V0LXRhZ3MtbWV0YWRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLW1ldGFkYXRhLWFjdGlvbi1idXR0b25zLWNsZWFyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cIidDT1JFLk1FVEFEQVRBLkFDVElPTlMuU0FWRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzYXZlQ2hhbmdlcygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cInNhdmUtdGFncy1tZXRhZGF0YVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFoYXNNZXRhZGF0YUNoYW5nZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2hlY2s8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYWRmLWNvbnRlbnQtbWV0YWRhdGEtaGVhZGVyPlxuICAgICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjdXJyZW50UGFuZWwucGFuZWxUaXRsZSA9PT0gRGVmYXVsdFBhbmVscy5UQUdTICYmICFlZGl0aW5nXCJcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtbWV0YWRhdGEtcHJvcGVydGllcy10YWdzXCI+XG4gICAgICAgICAgICAgICAgPGFkZi1keW5hbWljLWNoaXAtbGlzdCBbY2hpcHNdPVwidGFnc1RvRGlzcGxheVwiIFtzaG93RGVsZXRlXT1cImZhbHNlXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dFbXB0eVRhZ01lc3NhZ2VcIiBjbGFzcz1cImFkZi1tZXRhZGF0YS1uby1pdGVtLWFkZGVkXCI+XG4gICAgICAgICAgICAgICAge3sgJ01FVEFEQVRBLkJBU0lDLk5PX1RBR1NfQURERUQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxhZGYtdGFncy1jcmVhdG9yXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhcmVhZE9ubHkgJiYgaXNQYW5lbEVkaXRpbmcoRGVmYXVsdFBhbmVscy5UQUdTKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtbWV0YWRhdGEtcHJvcGVydGllcy10YWdzXCJcbiAgICAgICAgICAgICAgICBbdGFnTmFtZUNvbnRyb2xWaXNpYmxlXT1cImVkaXRpbmdcIlxuICAgICAgICAgICAgICAgICh0YWdzQ2hhbmdlKT1cInN0b3JlVGFnc1RvQXNzaWduKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFttb2RlXT1cInRhZ3NDcmVhdG9yTW9kZVwiXG4gICAgICAgICAgICAgICAgW3RhZ3NdPVwiYXNzaWduZWRUYWdzXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRUYWdzUmVtb3ZpbmddPVwic2F2aW5nXCIgLz5cbiAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlDYXRlZ29yaWVzXCI+XG4gICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsXG4gICAgICAgICAgICBoaWRlVG9nZ2xlXG4gICAgICAgICAgICBbZXhwYW5kZWRdPVwiY3VycmVudFBhbmVsLnBhbmVsVGl0bGUgPT09IERlZmF1bHRQYW5lbHMuQ0FURUdPUklFUyAmJiBjdXJyZW50UGFuZWwuZXhwYW5kZWRcIlxuICAgICAgICAgICAgKG9wZW5lZCk9XCJleHBhbmRQYW5lbChEZWZhdWx0UGFuZWxzLkNBVEVHT1JJRVMpXCJcbiAgICAgICAgICAgIChjbG9zZWQpPVwiY2xvc2VQYW5lbChEZWZhdWx0UGFuZWxzLkNBVEVHT1JJRVMpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWRmLWNvbnRlbnQtbWV0YWRhdGEtcGFuZWxcIlxuICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLWNvbnRlbnQtbWV0YWRhdGEtY2F0ZWdvcmllcy1wYW5lbFwiPlxuICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtbWV0YWRhdGEtcHJvcGVydGllcy1oZWFkZXJcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5hZGYtbWV0YWRhdGEtcHJvcGVydGllcy1oZWFkZXItZXhwYW5kZWRdPVwiY3VycmVudFBhbmVsLnBhbmVsVGl0bGUgPT09IERlZmF1bHRQYW5lbHMuQ0FURUdPUklFUyAmJiBjdXJyZW50UGFuZWwuZXhwYW5kZWRcIj5cbiAgICAgICAgICAgICAgICA8YWRmLWNvbnRlbnQtbWV0YWRhdGEtaGVhZGVyXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQ0FURUdPUklFU19NQU5BR0VNRU5ULkNBVEVHT1JJRVNfVElUTEUnXCJcbiAgICAgICAgICAgICAgICAgICAgW2V4cGFuZGVkXT1cImN1cnJlbnRQYW5lbC5wYW5lbFRpdGxlID09PSBEZWZhdWx0UGFuZWxzLkNBVEVHT1JJRVMgJiYgY3VycmVudFBhbmVsLmV4cGFuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXJlYWRPbmx5ICYmICFpc1BhbmVsRWRpdGluZyhEZWZhdWx0UGFuZWxzLkNBVEVHT1JJRVMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUdyb3VwRWRpdGluZyhEZWZhdWx0UGFuZWxzLkNBVEVHT1JJRVMsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiJ0NPUkUuTUVUQURBVEEuQUNUSU9OUy5FRElUJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidDT1JFLk1FVEFEQVRBLkFDQ0VTU0lCSUxJVFkuRURJVCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwibWV0YS1kYXRhLWNhdGVnb3JpZXMtZWRpdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1jYXRlZ29yaWVzLWJ1dHRvbiBhZGYtZWRpdC1pY29uLWJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5tb2RlX2VkaXQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzUGFuZWxFZGl0aW5nKERlZmF1bHRQYW5lbHMuQ0FURUdPUklFUylcIiBjbGFzcz1cImFkZi1tZXRhZGF0YS1hY3Rpb24tYnV0dG9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cIidDT1JFLk1FVEFEQVRBLkFDVElPTlMuQ0FOQ0VMJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNhbmNlbEdyb3VwRWRpdGluZyhEZWZhdWx0UGFuZWxzLkNBVEVHT1JJRVMsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cInJlc2V0LW1ldGFkYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1tZXRhZGF0YS1hY3Rpb24tYnV0dG9ucy1jbGVhclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCInQ09SRS5NRVRBREFUQS5BQ1RJT05TLlNBVkUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZUNoYW5nZXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJzYXZlLWNhdGVnb3JpZXMtbWV0YWRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaGFzTWV0YWRhdGFDaGFuZ2VkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNoZWNrPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2FkZi1jb250ZW50LW1ldGFkYXRhLWhlYWRlcj5cbiAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY3VycmVudFBhbmVsLnBhbmVsVGl0bGUgPT09IERlZmF1bHRQYW5lbHMuQ0FURUdPUklFUyAmJiAhZWRpdGluZ1wiPlxuICAgICAgICAgICAgICAgIDxwICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBjYXRlZ29yaWVzXCIgY2xhc3M9XCJhZGYtbWV0YWRhdGEtY2F0ZWdvcmllc1wiPnt7IGNhdGVnb3J5Lm5hbWUgfX08L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93RW1wdHlDYXRlZ29yeU1lc3NhZ2VcIiBjbGFzcz1cImFkZi1tZXRhZGF0YS1uby1pdGVtLWFkZGVkXCI+XG4gICAgICAgICAgICAgICAge3sgJ0NBVEVHT1JJRVNfTUFOQUdFTUVOVC5OT19DQVRFR09SSUVTX0FEREVEJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YWRmLWNhdGVnb3JpZXMtbWFuYWdlbWVudFxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIXJlYWRPbmx5ICYmIGlzUGFuZWxFZGl0aW5nKERlZmF1bHRQYW5lbHMuQ0FURUdPUklFUylcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLW1ldGFkYXRhLWNhdGVnb3JpZXMtaGVhZGVyXCJcbiAgICAgICAgICAgICAgICBbY2F0ZWdvcnlOYW1lQ29udHJvbFZpc2libGVdPVwiZWRpdGluZ1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVSZW1vdmFsXT1cInNhdmluZ1wiXG4gICAgICAgICAgICAgICAgW2NhdGVnb3JpZXNdPVwiY2F0ZWdvcmllc1wiXG4gICAgICAgICAgICAgICAgW21hbmFnZW1lbnRNb2RlXT1cImNhdGVnb3JpZXNNYW5hZ2VtZW50TW9kZVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzaWZpYWJsZUNoYW5nZWRdPVwiY2xhc3NpZmlhYmxlQ2hhbmdlZFwiXG4gICAgICAgICAgICAgICAgKGNhdGVnb3JpZXNDaGFuZ2UpPVwic3RvcmVDYXRlZ29yaWVzVG9Bc3NpZ24oJGV2ZW50KVwiIC8+XG4gICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsXG4gICAgICAgICpuZ0Zvcj1cImxldCBjdXN0b21QYW5lbCBvZiBjdXN0b21QYW5lbHNcIlxuICAgICAgICBbZXhwYW5kZWRdPVwiY3VycmVudFBhbmVsLnBhbmVsVGl0bGUgPT09IGN1c3RvbVBhbmVsLnBhbmVsVGl0bGUgJiYgY3VycmVudFBhbmVsLmV4cGFuZGVkXCJcbiAgICAgICAgKG9wZW5lZCk9XCJleHBhbmRQYW5lbChjdXN0b21QYW5lbC5wYW5lbFRpdGxlKVwiXG4gICAgICAgIChjbG9zZWQpPVwiY2xvc2VQYW5lbChjdXN0b21QYW5lbC5wYW5lbFRpdGxlKVwiXG4gICAgICAgIGNsYXNzPVwiYWRmLWNvbnRlbnQtbWV0YWRhdGEtcGFuZWxcIlxuICAgICAgICBoaWRlVG9nZ2xlPlxuICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJcbiAgICAgICAgICAgIGNsYXNzPVwiYWRmLW1ldGFkYXRhLXByb3BlcnRpZXMtaGVhZGVyXCJcbiAgICAgICAgICAgIFtjbGFzcy5hZGYtbWV0YWRhdGEtcHJvcGVydGllcy1oZWFkZXItZXhwYW5kZWRdPVwiY3VycmVudFBhbmVsLnBhbmVsVGl0bGUgPT09IGN1c3RvbVBhbmVsLnBhbmVsVGl0bGUgJiYgY3VycmVudFBhbmVsLmV4cGFuZGVkXCI+XG4gICAgICAgICAgICA8YWRmLWNvbnRlbnQtbWV0YWRhdGEtaGVhZGVyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtbWV0YWRhdGEtY3VzdG9tLXBhbmVsLXRpdGxlXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiY3VzdG9tUGFuZWwucGFuZWxUaXRsZVwiXG4gICAgICAgICAgICAgICAgW2V4cGFuZGVkXT1cImN1cnJlbnRQYW5lbC5wYW5lbFRpdGxlID09PSBjdXN0b21QYW5lbC5wYW5lbFRpdGxlICYmIGN1cnJlbnRQYW5lbC5leHBhbmRlZFwiIC8+XG4gICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgIDxhZGYtZHluYW1pYy1jb21wb25lbnQgW2lkXT1cImN1c3RvbVBhbmVsLmNvbXBvbmVudFwiIFtkYXRhXT1cInsgbm9kZSB9XCIgLz5cbiAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JvdXBlZFByb3BlcnRpZXMkIHwgYXN5bmM7IGVsc2UgbG9hZGluZzsgbGV0IGdyb3VwZWRQcm9wZXJ0aWVzXCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGdyb3VwZWRQcm9wZXJ0aWVzOyBsZXQgZmlyc3QgPSBmaXJzdFwiIGNsYXNzPVwiYWRmLW1ldGFkYXRhLWdyb3VwZWQtcHJvcGVydGllcy1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidhZGYtbWV0YWRhdGEtZ3JvdXAtJyArIGdyb3VwLnRpdGxlXCJcbiAgICAgICAgICAgICAgICBbZXhwYW5kZWRdPVwibXVsdGkgPyAhZGlzcGxheURlZmF1bHRQcm9wZXJ0aWVzICYmIGZpcnN0IHx8IGdyb3VwLmV4cGFuZGVkIDogIWRpc3BsYXlEZWZhdWx0UHJvcGVydGllcyAmJiBmaXJzdCB8fCBjdXJyZW50UGFuZWwucGFuZWxUaXRsZSA9PT0gZ3JvdXAudGl0bGUgJiYgY3VycmVudFBhbmVsLmV4cGFuZGVkXCJcbiAgICAgICAgICAgICAgICAob3BlbmVkKT1cImV4cGFuZFBhbmVsKGdyb3VwLnRpdGxlKTsgZ3JvdXAuZXhwYW5kZWQgPSB0cnVlXCJcbiAgICAgICAgICAgICAgICAoY2xvc2VkKT1cImNsb3NlUGFuZWwoZ3JvdXAudGl0bGUpOyBncm91cC5leHBhbmRlZCA9IGZhbHNlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1jb250ZW50LW1ldGFkYXRhLXBhbmVsXCJcbiAgICAgICAgICAgICAgICBoaWRlVG9nZ2xlPlxuICAgICAgICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1tZXRhZGF0YS1wcm9wZXJ0aWVzLWhlYWRlclwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hZGYtbWV0YWRhdGEtcHJvcGVydGllcy1oZWFkZXItZXhwYW5kZWRdPVwiY3VycmVudFBhbmVsLnBhbmVsVGl0bGUgPT09IGdyb3VwLnRpdGxlICYmIGN1cnJlbnRQYW5lbC5leHBhbmRlZFwiPlxuICAgICAgICAgICAgICAgICAgICA8YWRmLWNvbnRlbnQtbWV0YWRhdGEtaGVhZGVyIFt0aXRsZV09XCJncm91cC50aXRsZVwiIFtleHBhbmRlZF09XCJjdXJyZW50UGFuZWwucGFuZWxUaXRsZSA9PT0gZ3JvdXAudGl0bGUgJiYgY3VycmVudFBhbmVsLmV4cGFuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJncm91cC5lZGl0YWJsZSAmJiAhdGhpcy5yZWFkT25seSAmJiAhaXNQYW5lbEVkaXRpbmcoZ3JvdXAudGl0bGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCInQ09SRS5NRVRBREFUQS5BQ1RJT05TLkVESVQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidDT1JFLk1FVEFEQVRBLkFDQ0VTU0lCSUxJVFkuRURJVCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cIm1ldGEtZGF0YS1jYXJkLXRvZ2dsZS1lZGl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1lZGl0LWljb24tYnV0dG9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUdyb3VwRWRpdGluZyhncm91cC50aXRsZSwgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5tb2RlX2VkaXQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLW1ldGFkYXRhLWFjdGlvbi1idXR0b25zXCIgKm5nSWY9XCJncm91cC5lZGl0YWJsZSAmJiBpc1BhbmVsRWRpdGluZyhncm91cC50aXRsZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCInQ09SRS5NRVRBREFUQS5BQ1RJT05TLkNBTkNFTCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsR3JvdXBFZGl0aW5nKGdyb3VwLnRpdGxlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwicmVzZXQtbWV0YWRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1tZXRhZGF0YS1hY3Rpb24tYnV0dG9ucy1jbGVhclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xlYXI8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cIidDT1JFLk1FVEFEQVRBLkFDVElPTlMuU0FWRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZUNoYW5nZXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cInNhdmUtbWV0YWRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWhhc01ldGFkYXRhQ2hhbmdlZCB8fCBpbnZhbGlkUHJvcGVydGllcy5zaXplID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2hlY2s8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvYWRmLWNvbnRlbnQtbWV0YWRhdGEtaGVhZGVyPlxuICAgICAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFzaG93R3JvdXAoZ3JvdXApICYmIGdyb3VwLmVkaXRhYmxlICYmICFlZGl0aW5nXCIgY2xhc3M9XCJhZGYtbWV0YWRhdGEtbm8taXRlbS1hZGRlZFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnTUVUQURBVEEuQkFTSUMuTk9fSVRFTVNfTUVTU0FHRScgfCB0cmFuc2xhdGUgOiB7IGdyb3VwVGl0bGU6IGdyb3VwLnRpdGxlIHwgdHJhbnNsYXRlIH0gfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YWRmLWNhcmQtdmlld1xuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJrZXlEb3duKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbcHJvcGVydGllc109XCJncm91cC5wcm9wZXJ0aWVzXCJcbiAgICAgICAgICAgICAgICAgICAgW2VkaXRhYmxlXT1cIiFyZWFkT25seSAmJiBncm91cC5lZGl0YWJsZSAmJiBpc1BhbmVsRWRpdGluZyhncm91cC50aXRsZSlcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUVtcHR5XT1cImRpc3BsYXlFbXB0eVwiXG4gICAgICAgICAgICAgICAgICAgIFtjb3B5VG9DbGlwYm9hcmRBY3Rpb25dPVwiY29weVRvQ2xpcGJvYXJkQWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgW3VzZUNoaXBzRm9yTXVsdGlWYWx1ZVByb3BlcnR5XT1cInVzZUNoaXBzRm9yTXVsdGlWYWx1ZVByb3BlcnR5XCJcbiAgICAgICAgICAgICAgICAgICAgW211bHRpVmFsdWVTZXBhcmF0b3JdPVwibXVsdGlWYWx1ZVNlcGFyYXRvclwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5TGFiZWxGb3JDaGlwc109XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIG1vZGU9XCJpbmRldGVybWluYXRlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInREFUQV9MT0FESU5HJyB8IHRyYW5zbGF0ZVwiIC8+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvbWF0LWFjY29yZGlvbj5cbiJdfQ==
491
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1tZXRhZGF0YS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL2NvbnRlbnQtbWV0YWRhdGEvY29tcG9uZW50cy9jb250ZW50LW1ldGFkYXRhL2NvbnRlbnQtbWV0YWRhdGEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvbnRlbnQtc2VydmljZXMvc3JjL2xpYi9jb250ZW50LW1ldGFkYXRhL2NvbXBvbmVudHMvY29udGVudC1tZXRhZGF0YS9jb250ZW50LW1ldGFkYXRhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQW9DLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFILE9BQU8sRUFBMkIsZ0JBQWdCLEVBQWtCLElBQUksRUFBRSxPQUFPLEVBQXVCLE1BQU0sa0JBQWtCLENBQUM7QUFDakksT0FBTyxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RCxPQUFPLEVBQ0gsZ0JBQWdCLEVBRWhCLGlCQUFpQixFQUdqQix3QkFBd0IsRUFDeEIsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUVyQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRWpGLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9ELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0Q0FBNEMs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QixZQUFZO3NCQURYLEtBQUs7Z0JBUU4sUUFBUTtzQkFEUCxLQUFLO2dCQUtOLEtBQUs7c0JBREosS0FBSztnQkFLTixNQUFNO3NCQURMLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUt6Qix3QkFBd0I7c0JBRHZCLEtBQUs7Z0JBS04sYUFBYTtzQkFEWixLQUFLO2dCQUtOLHFCQUFxQjtzQkFEcEIsS0FBSztnQkFLTiw2QkFBNkI7c0JBRDVCLEtBQUs7Z0JBS04sV0FBVztzQkFEVixLQUFLO2dCQUtOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBUU4sUUFBUTtzQkFEUCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIERlc3Ryb3lSZWYsIGluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2F0ZWdvcnksIENhdGVnb3J5RW50cnksIENhdGVnb3J5TGlua0JvZHksIENhdGVnb3J5UGFnaW5nLCBOb2RlLCBUYWdCb2R5LCBUYWdFbnRyeSwgVGFnUGFnaW5nIH0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIHppcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBBcHBDb25maWdTZXJ2aWNlLFxuICAgIENhcmRWaWV3QmFzZUl0ZW1Nb2RlbCxcbiAgICBDYXJkVmlld0NvbXBvbmVudCxcbiAgICBDYXJkVmlld0l0ZW0sXG4gICAgQ2hpcCxcbiAgICBEeW5hbWljQ2hpcExpc3RDb21wb25lbnQsXG4gICAgTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBUcmFuc2xhdGlvblNlcnZpY2UsXG4gICAgVXBkYXRlTm90aWZpY2F0aW9uXG59IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBDb250ZW50TWV0YWRhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29udGVudC1tZXRhZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IENhcmRWaWV3R3JvdXAsIENvbnRlbnRNZXRhZGF0YUN1c3RvbVBhbmVsLCBDb250ZW50TWV0YWRhdGFQYW5lbCwgUHJlc2V0Q29uZmlnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jb250ZW50LW1ldGFkYXRhLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZGVib3VuY2VUaW1lLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDYXJkVmlld0NvbnRlbnRVcGRhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3NlcnZpY2VzL2NhcmQtdmlldy1jb250ZW50LXVwZGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5vZGVzQXBpU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9zZXJ2aWNlcy9ub2Rlcy1hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBUYWdzQ3JlYXRvck1vZGUgfSBmcm9tICcuLi8uLi8uLi90YWcvdGFncy1jcmVhdG9yL3RhZ3MtY3JlYXRvci1tb2RlJztcbmltcG9ydCB7IFRhZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi90YWcvc2VydmljZXMvdGFnLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2F0ZWdvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY2F0ZWdvcnkvc2VydmljZXMvY2F0ZWdvcnkuc2VydmljZSc7XG5pbXBvcnQgeyBDYXRlZ29yaWVzTWFuYWdlbWVudE1vZGUgfSBmcm9tICcuLi8uLi8uLi9jYXRlZ29yeS9jYXRlZ29yaWVzLW1hbmFnZW1lbnQvY2F0ZWdvcmllcy1tYW5hZ2VtZW50LW1vZGUnO1xuaW1wb3J0IHsgQWxsb3dhYmxlT3BlcmF0aW9uc0VudW0gfSBmcm9tICcuLi8uLi8uLi9jb21tb24vbW9kZWxzL2FsbG93YWJsZS1vcGVyYXRpb25zLmVudW0nO1xuaW1wb3J0IHsgQ29udGVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vc2VydmljZXMvY29udGVudC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Q2hpcHNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XG5pbXBvcnQgeyBNYXRFeHBhbnNpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9leHBhbnNpb24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgRHluYW1pY0V4dGVuc2lvbkNvbXBvbmVudCB9IGZyb20gJ0BhbGZyZXNjby9hZGYtZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XG5pbXBvcnQgeyBUYWdzQ3JlYXRvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3RhZyc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IENvbnRlbnRNZXRhZGF0YUhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vY29udGVudC1tZXRhZGF0YS1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENhdGVnb3JpZXNNYW5hZ2VtZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY2F0ZWdvcnkvY2F0ZWdvcmllcy1tYW5hZ2VtZW50L2NhdGVnb3JpZXMtbWFuYWdlbWVudC5jb21wb25lbnQnO1xuXG5jb25zdCBERUZBVUxUX1NFUEFSQVRPUiA9ICcsICc7XG5cbmVudW0gRGVmYXVsdFBhbmVscyB7XG4gICAgUFJPUEVSVElFUyA9ICdQcm9wZXJ0aWVzJyxcbiAgICBUQUdTID0gJ1RhZ3MnLFxuICAgIENBVEVHT1JJRVMgPSAnQ2F0ZWdvcmllcydcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhZGYtY29udGVudC1tZXRhZGF0YScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgTWF0RXhwYW5zaW9uTW9kdWxlLFxuICAgICAgICBDb250ZW50TWV0YWRhdGFIZWFkZXJDb21wb25lbnQsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBNYXRDaGlwc01vZHVsZSxcbiAgICAgICAgQ2F0ZWdvcmllc01hbmFnZW1lbnRDb21wb25lbnQsXG4gICAgICAgIER5bmFtaWNFeHRlbnNpb25Db21wb25lbnQsXG4gICAgICAgIE1hdFByb2dyZXNzQmFyTW9kdWxlLFxuICAgICAgICBUYWdzQ3JlYXRvckNvbXBvbmVudCxcbiAgICAgICAgQ2FyZFZpZXdDb21wb25lbnQsXG4gICAgICAgIER5bmFtaWNDaGlwTGlzdENvbXBvbmVudFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbnRlbnQtbWV0YWRhdGEuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NvbnRlbnQtbWV0YWRhdGEuY29tcG9uZW50LnNjc3MnXSxcbiAgICBob3N0OiB7IGNsYXNzOiAnYWRmLWNvbnRlbnQtbWV0YWRhdGEnIH0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBDb250ZW50TWV0YWRhdGFDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCB7XG4gICAgLyoqIChyZXF1aXJlZCkgVGhlIG5vZGUgZW50aXR5IHRvIGZldGNoIG1ldGFkYXRhIGFib3V0ICovXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICBub2RlOiBOb2RlO1xuXG4gICAgLyoqIFRvZ2dsZXMgd2hldGhlciB0byBkaXNwbGF5IGVtcHR5IHZhbHVlcyBpbiB0aGUgY2FyZCB2aWV3ICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5RW1wdHk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZXMgYmV0d2VlbiBleHBhbmRlZCAoaWUsIGZ1bGwgaW5mb3JtYXRpb24pIGFuZCBjb2xsYXBzZWRcbiAgICAgKiAoaWUsIHJlZHVjZWQgaW5mb3JtYXRpb24pIGluIHRoZSBkaXNwbGF5XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBleHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIFRoZSBtdWx0aSBwYXJhbWV0ZXIgb2YgdGhlIHVuZGVybHlpbmcgbWF0ZXJpYWwgZXhwYW5zaW9uIHBhbmVsLCBzZXQgdG8gdHJ1ZSB0byBhbGxvdyBtdWx0aSBhY2NvcmRpb24gdG8gYmUgZXhwYW5kZWQgYXQgdGhlIHNhbWUgdGltZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgbXVsdGkgPSBmYWxzZTtcblxuICAgIC8qKiBOYW1lIG9yIGNvbmZpZ3VyYXRpb24gb2YgdGhlIG1ldGFkYXRhIHByZXNldCwgd2hpY2ggZGVmaW5lcyBhc3BlY3RzIGFuZCB0aGVpciBwcm9wZXJ0aWVzICovXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICBwcmVzZXQ6IHN0cmluZyB8IFByZXNldENvbmZpZztcblxuICAgIC8qKiBUb2dnbGVzIHdoZXRoZXIgdGhlIG1ldGFkYXRhIHByb3BlcnRpZXMgc2hvdWxkIGJlIHNob3duICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5RGVmYXVsdFByb3BlcnRpZXM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgLyoqIChvcHRpb25hbCkgc2hvd3MgdGhlIGdpdmVuIGFzcGVjdCBpbiB0aGUgZXhwYW5kZWQgIGNhcmQgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlBc3BlY3Q6IHN0cmluZyA9IG51bGw7XG5cbiAgICAvKiogVG9nZ2xlcyB3aGV0aGVyIG9yIG5vdCB0byBlbmFibGUgY29weSB0byBjbGlwYm9hcmQgYWN0aW9uLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29weVRvQ2xpcGJvYXJkQWN0aW9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKiBUb2dnbGVzIHdoZXRoZXIgb3Igbm90IHRvIGVuYWJsZSBjaGlwcyBmb3IgbXVsdGl2YWx1ZWQgcHJvcGVydGllcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHVzZUNoaXBzRm9yTXVsdGlWYWx1ZVByb3BlcnR5OiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKiBUcnVlIGlmIHRhZ3Mgc2hvdWxkIGJlIGRpc3BsYXllZCwgZmFsc2Ugb3RoZXJ3aXNlICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5VGFncyA9IGZhbHNlO1xuXG4gICAgLyoqIFRydWUgaWYgY2F0ZWdvcmllcyBzaG91bGQgYmUgZGlzcGxheWVkLCBmYWxzZSBvdGhlcndpc2UgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlDYXRlZ29yaWVzID0gZmFsc2U7XG5cbiAgICAvKiogTGlzdCBvZiBjdXN0b20gbWV0YWRhdGEgcGFuZWxzIHRvIGJlIGRpc3BsYXllZCB3aXRoIHJlZ2lzdGVyZWQgY3VzdG9tIGNvbXBvbmVudHMgKi9cbiAgICBASW5wdXQoKVxuICAgIGN1c3RvbVBhbmVsczogQ29udGVudE1ldGFkYXRhQ3VzdG9tUGFuZWxbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogKG9wdGlvbmFsKSBUaGlzIGZsYWcgc2V0cyB0aGUgbWV0YWRhdGEgaW4gcmVhZC1vbmx5IG1vZGUsXG4gICAgICogcHJldmVudGluZyBjaGFuZ2VzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVhZE9ubHkgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgX2Fzc2lnbmVkVGFnczogc3RyaW5nW10gPSBbXTtcbiAgICBwcml2YXRlIGFzc2lnbmVkVGFnc0VudHJpZXM6IFRhZ0VudHJ5W10gPSBbXTtcbiAgICBwcml2YXRlIF90YWdzQ3JlYXRvck1vZGUgPSBUYWdzQ3JlYXRvck1vZGUuQ1JFQVRFX0FORF9BU1NJR047XG4gICAgcHJpdmF0ZSBfdGFnczogc3RyaW5nW10gPSBbXTtcbiAgICBwcml2YXRlIHRhcmdldFByb3BlcnR5OiBDYXJkVmlld0Jhc2VJdGVtTW9kZWw7XG4gICAgcHJpdmF0ZSBjbGFzc2lmaWFibGVDaGFuZ2VkU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSBfc2F2aW5nID0gZmFsc2U7XG5cbiAgICBEZWZhdWx0UGFuZWxzID0gRGVmYXVsdFBhbmVscztcbiAgICBtdWx0aVZhbHVlU2VwYXJhdG9yOiBzdHJpbmc7XG4gICAgYmFzaWNQcm9wZXJ0aWVzJDogT2JzZXJ2YWJsZTxDYXJkVmlld0l0ZW1bXT47XG4gICAgZ3JvdXBlZFByb3BlcnRpZXMkOiBPYnNlcnZhYmxlPENhcmRWaWV3R3JvdXBbXT47XG5cbiAgICB0YWdzVG9EaXNwbGF5OiBDaGlwW107XG4gICAgY2hhbmdlZFByb3BlcnRpZXMgPSB7fTtcbiAgICBoYXNNZXRhZGF0YUNoYW5nZWQgPSBmYWxzZTtcbiAgICBhc3NpZ25lZENhdGVnb3JpZXM6IENhdGVnb3J5W10gPSBbXTtcbiAgICBjYXRlZ29yaWVzOiBDYXRlZ29yeVtdID0gW107XG4gICAgY2F0ZWdvcmllc01hbmFnZW1lbnRNb2RlID0gQ2F0ZWdvcmllc01hbmFnZW1lbnRNb2RlLkFTU0lHTjtcbiAgICBjbGFzc2lmaWFibGVDaGFuZ2VkID0gdGhpcy5jbGFzc2lmaWFibGVDaGFuZ2VkU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBlZGl0aW5nID0gZmFsc2U7XG4gICAgaW52YWxpZFByb3BlcnRpZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBlZGl0ZWRQYW5lbFRpdGxlID0gJyc7XG4gICAgY3VycmVudFBhbmVsOiBDb250ZW50TWV0YWRhdGFQYW5lbCA9IHtcbiAgICAgICAgZXhwYW5kZWQ6IGZhbHNlLFxuICAgICAgICBwYW5lbFRpdGxlOiAnJ1xuICAgIH07XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjb250ZW50TWV0YWRhdGFTZXJ2aWNlOiBDb250ZW50TWV0YWRhdGFTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNhcmRWaWV3Q29udGVudFVwZGF0ZVNlcnZpY2U6IENhcmRWaWV3Q29udGVudFVwZGF0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbm9kZXNBcGlTZXJ2aWNlOiBOb2Rlc0FwaVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRpb25TZXJ2aWNlOiBUcmFuc2xhdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYXBwQ29uZmlnOiBBcHBDb25maWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHRhZ1NlcnZpY2U6IFRhZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY2F0ZWdvcnlTZXJ2aWNlOiBDYXRlZ29yeVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29udGVudFNlcnZpY2U6IENvbnRlbnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5jb3B5VG9DbGlwYm9hcmRBY3Rpb24gPSB0aGlzLmFwcENvbmZpZy5nZXQ8Ym9vbGVhbj4oJ2NvbnRlbnQtbWV0YWRhdGEuY29weS10by1jbGlwYm9hcmQtYWN0aW9uJyk7XG4gICAgICAgIHRoaXMubXVsdGlWYWx1ZVNlcGFyYXRvciA9IHRoaXMuYXBwQ29uZmlnLmdldDxzdHJpbmc+KCdjb250ZW50LW1ldGFkYXRhLm11bHRpLXZhbHVlLXBpcGUtc2VwYXJhdG9yJykgfHwgREVGQVVMVF9TRVBBUkFUT1I7XG4gICAgICAgIHRoaXMudXNlQ2hpcHNGb3JNdWx0aVZhbHVlUHJvcGVydHkgPSB0aGlzLmFwcENvbmZpZy5nZXQ8Ym9vbGVhbj4oJ2NvbnRlbnQtbWV0YWRhdGEubXVsdGktdmFsdWUtY2hpcHMnKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5jYXJkVmlld0NvbnRlbnRVcGRhdGVTZXJ2aWNlLml0ZW1VcGRhdGVkJFxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDUwMCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgodXBkYXRlZE5vZGU6IFVwZGF0ZU5vdGlmaWNhdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFzTWV0YWRhdGFDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhcmdldFByb3BlcnR5ID0gdXBkYXRlZE5vZGUudGFyZ2V0O1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlSW52YWxpZFByb3BlcnRpZXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNoYW5nZXModXBkYXRlZE5vZGUuY2hhbmdlZCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNhcmRWaWV3Q29udGVudFVwZGF0ZVNlcnZpY2UudXBkYXRlZEFzcGVjdCQucGlwZShkZWJvdW5jZVRpbWUoNTAwKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgobm9kZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5ub2RlLmFzcGVjdE5hbWVzID0gbm9kZT8uYXNwZWN0TmFtZXM7XG4gICAgICAgICAgICB0aGlzLmxvYWRQcm9wZXJ0aWVzKG5vZGUpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmxvYWRQcm9wZXJ0aWVzKHRoaXMubm9kZSk7XG4gICAgICAgIHRoaXMudmVyaWZ5QWxsb3dhYmxlT3BlcmF0aW9ucygpO1xuXG4gICAgICAgIHRoaXMuY3VycmVudFBhbmVsLnBhbmVsVGl0bGUgPSB0aGlzLmRpc3BsYXlBc3BlY3QgPz8gdGhpcy5EZWZhdWx0UGFuZWxzLlBST1BFUlRJRVM7XG4gICAgICAgIHRoaXMuY3VycmVudFBhbmVsLmV4cGFuZGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZlcmlmeUFsbG93YWJsZU9wZXJhdGlvbnMoKSB7XG4gICAgICAgIGlmICghdGhpcy5ub2RlPy5hbGxvd2FibGVPcGVyYXRpb25zIHx8ICF0aGlzLmNvbnRlbnRTZXJ2aWNlLmhhc0FsbG93YWJsZU9wZXJhdGlvbnModGhpcy5ub2RlLCBBbGxvd2FibGVPcGVyYXRpb25zRW51bS5VUERBVEUpKSB7XG4gICAgICAgICAgICB0aGlzLnJlYWRPbmx5ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBhc3NpZ25lZFRhZ3MoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXNzaWduZWRUYWdzO1xuICAgIH1cblxuICAgIHNldCB0YWdzKHRhZ3M6IHN0cmluZ1tdKSB7XG4gICAgICAgIHRoaXMuX3RhZ3MgPSB0YWdzO1xuICAgICAgICB0aGlzLnRhZ3NUb0Rpc3BsYXkgPSB0aGlzLnRhZ3MubWFwKCh0YWcpID0+ICh7IGlkOiB0YWcsIG5hbWU6IHRhZyB9KSk7XG4gICAgfVxuXG4gICAgZ2V0IHRhZ3MoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFncztcbiAgICB9XG5cbiAgICBnZXQgdGFnc0NyZWF0b3JNb2RlKCk6IFRhZ3NDcmVhdG9yTW9kZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWdzQ3JlYXRvck1vZGU7XG4gICAgfVxuXG4gICAgZ2V0IHNhdmluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NhdmluZztcbiAgICB9XG5cbiAgICBpc1BhbmVsRWRpdGluZyhwYW5lbFRpdGxlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuZWRpdGluZyAmJlxuICAgICAgICAgICAgKCh0aGlzLmN1cnJlbnRQYW5lbC5wYW5lbFRpdGxlID09PSBwYW5lbFRpdGxlICYmIHRoaXMuZWRpdGVkUGFuZWxUaXRsZSA9PT0gcGFuZWxUaXRsZSkgfHwgdGhpcy5lZGl0ZWRQYW5lbFRpdGxlID09PSBwYW5lbFRpdGxlKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBoYW5kbGVVcGRhdGVFcnJvcihlcnJvcjogRXJyb3IpIHtcbiAgICAgICAgbGV0IHN0YXR1c0NvZGUgPSAwO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBzdGF0dXNDb2RlID0gSlNPTi5wYXJzZShlcnJvci5tZXNzYWdlKS5lcnJvci5zdGF0dXNDb2RlO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIC8qIGVtcHR5ICovXG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbWVzc2FnZSA9IGBNRVRBREFUQS5FUlJPUlMuJHtzdGF0dXNDb2RlfWA7XG5cbiAgICAgICAgaWYgKHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmluc3RhbnQobWVzc2FnZSkgPT09IG1lc3NhZ2UpIHtcbiAgICAgICAgICAgIG1lc3NhZ2UgPSAnTUVUQURBVEEuRVJST1JTLkdFTkVSSUMnO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb250ZW50TWV0YWRhdGFTZXJ2aWNlLmVycm9yLm5leHQoe1xuICAgICAgICAgICAgc3RhdHVzQ29kZSxcbiAgICAgICAgICAgIG1lc3NhZ2VcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoY2hhbmdlcy5ub2RlICYmICFjaGFuZ2VzLm5vZGUuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZFByb3BlcnRpZXMoY2hhbmdlcy5ub2RlLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcy5yZWFkT25seT8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0RWRpdGluZygpO1xuICAgICAgICAgICAgdGhpcy5sb2FkUHJvcGVydGllcyh0aGlzLm5vZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXMuZGlzcGxheUFzcGVjdD8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRQYW5lbC5wYW5lbFRpdGxlID0gY2hhbmdlcy5kaXNwbGF5QXNwZWN0LmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFBhbmVsLmV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzLmRpc3BsYXlEZWZhdWx0UHJvcGVydGllcz8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmV4cGFuZFBhbmVsKHRoaXMuRGVmYXVsdFBhbmVscy5QUk9QRVJUSUVTKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZUNoYW5nZXModXBkYXRlZE5vZGVDaGFuZ2VzKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKHVwZGF0ZWROb2RlQ2hhbmdlcykubWFwKChwcm9wZXJ0eUdyb3VwOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdXBkYXRlZE5vZGVDaGFuZ2VzW3Byb3BlcnR5R3JvdXBdID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZFByb3BlcnRpZXNbcHJvcGVydHlHcm91cF0gPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY2hhbmdlZFByb3BlcnRpZXNbcHJvcGVydHlHcm91cF0sXG4gICAgICAgICAgICAgICAgICAgIC4uLnVwZGF0ZWROb2RlQ2hhbmdlc1twcm9wZXJ0eUdyb3VwXVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZFByb3BlcnRpZXNbcHJvcGVydHlHcm91cF0gPSB1cGRhdGVkTm9kZUNoYW5nZXNbcHJvcGVydHlHcm91cF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNhdmVDaGFuZ2VzKGV2ZW50PzogTW91c2VFdmVudCkge1xuICAgICAgICBldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMucmVzZXRFZGl0aW5nKCk7XG4gICAgICAgIHRoaXMuX3NhdmluZyA9IHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzQ29udGVudFR5cGVDaGFuZ2VkKHRoaXMuY2hhbmdlZFByb3BlcnRpZXMpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRNZXRhZGF0YVNlcnZpY2Uub3BlbkNvbmZpcm1EaWFsb2codGhpcy5jaGFuZ2VkUHJvcGVydGllcykuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU5vZGUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVOb2RlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlciBhbGwgdGFncyB3aGljaCBzaG91bGQgYmUgYXNzaWduZWQgdG8gbm9kZS4gUGxlYXNlIG5vdGUgdGhhdCB0aGV5IGFyZSBqdXN0IGluIFwicmVnaXN0ZXJcIiBzdGF0ZSBhbmQgYXJlIG5vdCB5ZXQgc2F2ZWRcbiAgICAgKiB1bnRpbCBidXR0b24gZm9yIHNhdmluZyBkYXRhIGlzIGNsaWNrZWQuIENhbGxpbmcgdGhhdCBmdW5jdGlvbiBjYXVzZXMgdGhhdCBzYXZlIGJ1dHRvbiBpcyBlbmFibGVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHRhZ3MgYXJyYXkgb2YgdGFncyB0byByZWdpc3RlciwgdGhleSBhcmUgbm90IHNhdmVkIHlldCB1bnRpbCB3ZSBjbGljayBzYXZlIGJ1dHRvbi5cbiAgICAgKi9cbiAgICBzdG9yZVRhZ3NUb0Fzc2lnbih0YWdzOiBzdHJpbmdbXSkge1xuICAgICAgICB0aGlzLnRhZ3MgPSB0YWdzO1xuICAgICAgICB0aGlzLl9hc3NpZ25lZFRhZ3MgPSB0YWdzO1xuICAgICAgICB0aGlzLmhhc01ldGFkYXRhQ2hhbmdlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3RvcmUgYWxsIGNhdGVnb3JpZXMgdGhhdCBub2RlIHNob3VsZCBiZSBhc3NpZ25lZCB0by4gUGxlYXNlIG5vdGUgdGhhdCB0aGV5IGFyZSBqdXN0IGluIFwic3RvcmVkXCIgc3RhdGUgYW5kIGFyZSBub3QgeWV0IHNhdmVkXG4gICAgICogdW50aWwgYnV0dG9uIGZvciBzYXZpbmcgZGF0YSBpcyBjbGlja2VkLiBDYWxsaW5nIHRoYXQgZnVuY3Rpb24gY2F1c2VzIHRoYXQgc2F2ZSBidXR0b24gaXMgZW5hYmxlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXRlZ29yaWVzVG9Bc3NpZ24gYXJyYXkgb2YgY2F0ZWdvcmllcyB0byBzdG9yZS5cbiAgICAgKi9cbiAgICBzdG9yZUNhdGVnb3JpZXNUb0Fzc2lnbihjYXRlZ29yaWVzVG9Bc3NpZ246IENhdGVnb3J5W10pIHtcbiAgICAgICAgdGhpcy5jYXRlZ29yaWVzID0gY2F0ZWdvcmllc1RvQXNzaWduO1xuICAgICAgICB0aGlzLmhhc01ldGFkYXRhQ2hhbmdlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV2ZXJ0Q2hhbmdlcygpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VkUHJvcGVydGllcyA9IHt9O1xuICAgICAgICB0aGlzLmhhc01ldGFkYXRhQ2hhbmdlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCBzaG93RW1wdHlUYWdNZXNzYWdlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50YWdzPy5sZW5ndGggPT09IDAgJiYgdGhpcy5jdXJyZW50UGFuZWwucGFuZWxUaXRsZSA9PT0gJ1RhZ3MnICYmICF0aGlzLmVkaXRpbmc7XG4gICAgfVxuXG4gICAgZ2V0IHNob3dFbXB0eUNhdGVnb3J5TWVzc2FnZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2F0ZWdvcmllcz8ubGVuZ3RoID09PSAwICYmIHRoaXMuY3VycmVudFBhbmVsLnBhbmVsVGl0bGUgPT09ICdDYXRlZ29yaWVzJyAmJiAhdGhpcy5lZGl0aW5nO1xuICAgIH1cblxuICAgIHRvZ2dsZUdyb3VwRWRpdGluZyhwYW5lbFRpdGxlOiBzdHJpbmcsIGV2ZW50PzogTW91c2VFdmVudCkge1xuICAgICAgICBldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmICh0aGlzLmVkaXRpbmcgJiYgdGhpcy5oYXNNZXRhZGF0YUNoYW5nZWQpIHtcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zaG93RXJyb3IoJ01FVEFEQVRBLkJBU0lDLlNBVkVfT1JfRElTQ0FSRF9DSEFOR0VTJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lZGl0aW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5lZGl0ZWRQYW5lbFRpdGxlID0gcGFuZWxUaXRsZTtcbiAgICAgICAgdGhpcy5leHBhbmRQYW5lbChwYW5lbFRpdGxlKTtcbiAgICB9XG5cbiAgICBjYW5jZWxHcm91cEVkaXRpbmcocGFuZWxUaXRsZTogc3RyaW5nLCBldmVudD86IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnJlc2V0RWRpdGluZygpO1xuICAgICAgICB0aGlzLnJldmVydENoYW5nZXMoKTtcbiAgICAgICAgY29uc3QgbG9hZEJhc2ljUHJvcHMgPSBwYW5lbFRpdGxlID09PSB0aGlzLkRlZmF1bHRQYW5lbHMuUFJPUEVSVElFUztcbiAgICAgICAgY29uc3QgbG9hZFRhZ3MgPSBwYW5lbFRpdGxlID09PSB0aGlzLkRlZmF1bHRQYW5lbHMuVEFHUztcbiAgICAgICAgY29uc3QgbG9hZENhdGVnb3JpZXMgPSBwYW5lbFRpdGxlID09PSB0aGlzLkRlZmF1bHRQYW5lbHMuQ0FURUdPUklFUztcbiAgICAgICAgY29uc3QgbG9hZEdyb3VwZWRQcm9wcyA9ICFsb2FkQmFzaWNQcm9wcyAmJiAhbG9hZFRhZ3MgJiYgIWxvYWRDYXRlZ29yaWVzO1xuICAgICAgICB0aGlzLmxvYWRQcm9wZXJ0aWVzKHRoaXMubm9kZSwgbG9hZEJhc2ljUHJvcHMsIGxvYWRHcm91cGVkUHJvcHMsIGxvYWRUYWdzLCBsb2FkQ2F0ZWdvcmllcyk7XG4gICAgfVxuXG4gICAgZXhwYW5kUGFuZWwocGFuZWxUaXRsZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFBhbmVsLnBhbmVsVGl0bGUgPSBwYW5lbFRpdGxlO1xuICAgICAgICB0aGlzLmN1cnJlbnRQYW5lbC5leHBhbmRlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgY2xvc2VQYW5lbChwYW5lbFRpdGxlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFBhbmVsLnBhbmVsVGl0bGUgPT09IHBhbmVsVGl0bGUpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFBhbmVsLmV4cGFuZGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXNldEVkaXRpbmcoKSB7XG4gICAgICAgIHRoaXMuZWRpdGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmVkaXRlZFBhbmVsVGl0bGUgPSAnJztcbiAgICB9XG5cbiAgICBzaG93R3JvdXAoZ3JvdXA6IENhcmRWaWV3R3JvdXApOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXMuZmlsdGVyKChwcm9wZXJ0eSkgPT4gIXRoaXMuaXNFbXB0eShwcm9wZXJ0eS5kaXNwbGF5VmFsdWUpKTtcblxuICAgICAgICByZXR1cm4gcHJvcGVydGllcy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIGtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDM3IHx8IGV2ZW50LmtleUNvZGUgPT09IDM5KSB7XG4gICAgICAgICAgICAvLyBBcnJvd0xlZnQgJiYgQXJyb3dSaWdodFxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZU5vZGUoKSB7XG4gICAgICAgIGZvcmtKb2luKHtcbiAgICAgICAgICAgIHVwZGF0ZWROb2RlOiB0aGlzLm5vZGVzQXBpU2VydmljZS51cGRhdGVOb2RlKHRoaXMubm9kZS5pZCwgdGhpcy5jaGFuZ2VkUHJvcGVydGllcyksXG4gICAgICAgICAgICAuLi4odGhpcy5kaXNwbGF5VGFncyA/IHRoaXMuc2F2ZVRhZ3MoKSA6IHt9KSxcbiAgICAgICAgICAgIC4uLih0aGlzLmRpc3BsYXlDYXRlZ29yaWVzID8gdGhpcy5zYXZlQ2F0ZWdvcmllcygpIDoge30pXG4gICAgICAgIH0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYXJkVmlld0NvbnRlbnRVcGRhdGVTZXJ2aWNlLnVwZGF0ZUVsZW1lbnQodGhpcy50YXJnZXRQcm9wZXJ0eSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlVXBkYXRlRXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2F2aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmV2ZXJ0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRQcm9wZXJ0aWVzKHRoaXMubm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVW5kZWZpbmVkTm9kZVByb3BlcnRpZXMocmVzdWx0LnVwZGF0ZWROb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaGFzQ29udGVudFR5cGVDaGFuZ2VkKHRoaXMuY2hhbmdlZFByb3BlcnRpZXMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhcmRWaWV3Q29udGVudFVwZGF0ZVNlcnZpY2UudXBkYXRlTm9kZUFzcGVjdCh0aGlzLm5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmV2ZXJ0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMubm9kZSwgcmVzdWx0LnVwZGF0ZWROb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2Rlc0FwaVNlcnZpY2Uubm9kZVVwZGF0ZWQubmV4dCh0aGlzLm5vZGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMocmVzdWx0KS5sZW5ndGggPiAxICYmIHRoaXMuZGlzcGxheVRhZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZFRhZ3NGb3JOb2RlKHRoaXMubm9kZS5pZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGlzcGxheUNhdGVnb3JpZXMgJiYgISFyZXN1bHQuTGlua2luZ0NhdGVnb3JpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXNzaWduZWRDYXRlZ29yaWVzID0gcmVzdWx0LkxpbmtpbmdDYXRlZ29yaWVzLmxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHJlc3VsdC5MaW5raW5nQ2F0ZWdvcmllcy5saXN0LmVudHJpZXMubWFwKChlbnRyeTogQ2F0ZWdvcnlFbnRyeSkgPT4gZW50cnkuZW50cnkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBbcmVzdWx0LkxpbmtpbmdDYXRlZ29yaWVzLmVudHJ5XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLl9zYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzQ29udGVudFR5cGVDaGFuZ2VkKGNoYW5nZWRQcm9wZXJ0aWVzKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIWNoYW5nZWRQcm9wZXJ0aWVzPy5ub2RlVHlwZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVVuZGVmaW5lZE5vZGVQcm9wZXJ0aWVzKG5vZGU6IE5vZGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFub2RlLnByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIG5vZGUucHJvcGVydGllcyA9IHt9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkUHJvcGVydGllcyhub2RlOiBOb2RlLCBsb2FkQmFzaWNQcm9wcyA9IHRydWUsIGxvYWRHcm91cGVkUHJvcHMgPSB0cnVlLCBsb2FkVGFncyA9IHRydWUsIGxvYWRDYXRlZ29yaWVzID0gdHJ1ZSkge1xuICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgaWYgKGxvYWRCYXNpY1Byb3BzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iYXNpY1Byb3BlcnRpZXMkID0gdGhpcy5nZXRQcm9wZXJ0aWVzKG5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxvYWRHcm91cGVkUHJvcHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3VwZWRQcm9wZXJ0aWVzJCA9IHRoaXMuY29udGVudE1ldGFkYXRhU2VydmljZS5nZXRHcm91cGVkUHJvcGVydGllcyhub2RlLCB0aGlzLnByZXNldCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmRpc3BsYXlUYWdzICYmIGxvYWRUYWdzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkVGFnc0Zvck5vZGUobm9kZS5pZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmRpc3BsYXlDYXRlZ29yaWVzICYmIGxvYWRDYXRlZ29yaWVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkQ2F0ZWdvcmllc0Zvck5vZGUobm9kZS5pZCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBhc3BlY3ROYW1lcyA9IG5vZGUuYXNwZWN0TmFtZXMgfHwgW107XG4gICAgICAgICAgICAgICAgaWYgKCFhc3BlY3ROYW1lcy5pbmNsdWRlcygnZ2VuZXJhbGNsYXNzaWZpYWJsZScpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2F0ZWdvcmllcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsYXNzaWZpYWJsZUNoYW5nZWRTdWJqZWN0Lm5leHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFByb3BlcnRpZXMobm9kZTogTm9kZSkge1xuICAgICAgICBjb25zdCBwcm9wZXJ0aWVzJCA9IHRoaXMuY29udGVudE1ldGFkYXRhU2VydmljZS5nZXRCYXNpY1Byb3BlcnRpZXMobm9kZSk7XG4gICAgICAgIGNvbnN0IGNvbnRlbnRUeXBlUHJvcGVydHkkID0gdGhpcy5jb250ZW50TWV0YWRhdGFTZXJ2aWNlLmdldENvbnRlbnRUeXBlUHJvcGVydHkobm9kZSk7XG4gICAgICAgIHJldHVybiB6aXAocHJvcGVydGllcyQsIGNvbnRlbnRUeXBlUHJvcGVydHkkKS5waXBlKFxuICAgICAgICAgICAgbWFwKChbcHJvcGVydGllcywgY29udGVudFR5cGVQcm9wZXJ0eV0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZFByb3BlcnRpZXMgPSBjb250ZW50VHlwZVByb3BlcnR5LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKHByb3BlcnR5KSA9PiBwcm9wZXJ0aWVzLmZpbmRJbmRleCgoYmFzZVByb3BlcnR5KSA9PiBiYXNlUHJvcGVydHkua2V5ID09PSBwcm9wZXJ0eS5rZXkpID09PSAtMVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5wcm9wZXJ0aWVzLCAuLi5maWx0ZXJlZFByb3BlcnRpZXNdO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRW1wdHkodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJyc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkQ2F0ZWdvcmllc0Zvck5vZGUobm9kZUlkOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5hc3NpZ25lZENhdGVnb3JpZXMgPSBbXTtcbiAgICAgICAgdGhpcy5jYXRlZ29yeVNlcnZpY2UuZ2V0Q2F0ZWdvcnlMaW5rc0Zvck5vZGUobm9kZUlkKS5zdWJzY3JpYmUoKGNhdGVnb3J5UGFnaW5nKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNhdGVnb3JpZXMgPSBjYXRlZ29yeVBhZ2luZy5saXN0LmVudHJpZXMubWFwKChjYXRlZ29yeUVudHJ5KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IGNhdGVnb3J5RW50cnkuZW50cnkucGF0aCA/IGNhdGVnb3J5RW50cnkuZW50cnkucGF0aC5zcGxpdCgnLycpLnNwbGljZSgzKS5qb2luKCcvJykgOiBudWxsO1xuICAgICAgICAgICAgICAgIGNhdGVnb3J5RW50cnkuZW50cnkubmFtZSA9IHBhdGggPyBgJHtwYXRofS8ke2NhdGVnb3J5RW50cnkuZW50cnkubmFtZX1gIDogY2F0ZWdvcnlFbnRyeS5lbnRyeS5uYW1lO1xuICAgICAgICAgICAgICAgIHJldHVybiBjYXRlZ29yeUVudHJ5LmVudHJ5O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmFzc2lnbmVkQ2F0ZWdvcmllcyA9IFsuLi50aGlzLmNhdGVnb3JpZXNdO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNhdmVDYXRlZ29yaWVzKCk6IHsgW2tleTogc3RyaW5nXTogT2JzZXJ2YWJsZTxDYXRlZ29yeVBhZ2luZyB8IENhdGVnb3J5RW50cnkgfCB2b2lkPiB9IHtcbiAgICAgICAgY29uc3Qgb2JzZXJ2YWJsZXM6IHsgW2tleTogc3RyaW5nXTogT2JzZXJ2YWJsZTxDYXRlZ29yeVBhZ2luZyB8IENhdGVnb3J5RW50cnkgfCB2b2lkPiB9ID0ge307XG4gICAgICAgIGlmICh0aGlzLmNhdGVnb3JpZXMpIHtcbiAgICAgICAgICAgIHRoaXMuYXNzaWduZWRDYXRlZ29yaWVzLmZvckVhY2goKGFzc2lnbmVkQ2F0ZWdvcnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jYXRlZ29yaWVzLmV2ZXJ5KChjYXRlZ29yeSkgPT4gY2F0ZWdvcnkubmFtZSAhPT0gYXNzaWduZWRDYXRlZ29yeS5uYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICBvYnNlcnZhYmxlc1tgUmVtb3ZpbmcgJHthc3NpZ25lZENhdGVnb3J5LmlkfWBdID0gdGhpcy5jYXRlZ29yeVNlcnZpY2UudW5saW5rTm9kZUZyb21DYXRlZ29yeSh0aGlzLm5vZGUuaWQsIGFzc2lnbmVkQ2F0ZWdvcnkuaWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgY2F0ZWdvcnlMaW5rQm9kaWVzID0gdGhpcy5jYXRlZ29yaWVzLm1hcCgoY2F0ZWdvcnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjYXRlZ29yeUxpbmtCb2R5ID0gbmV3IENhdGVnb3J5TGlua0JvZHkoKTtcbiAgICAgICAgICAgICAgICBjYXRlZ29yeUxpbmtCb2R5LmNhdGVnb3J5SWQgPSBjYXRlZ29yeS5pZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2F0ZWdvcnlMaW5rQm9keTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGNhdGVnb3J5TGlua0JvZGllcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgb2JzZXJ2YWJsZXNbJ0xpbmtpbmdDYXRlZ29yaWVzJ10gPSB0aGlzLmNhdGVnb3J5U2VydmljZS5saW5rTm9kZVRvQ2F0ZWdvcnkodGhpcy5ub2RlLmlkLCBjYXRlZ29yeUxpbmtCb2RpZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYnNlcnZhYmxlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRUYWdzRm9yTm9kZShpZDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMudGFnU2VydmljZS5nZXRUYWdzQnlOb2RlSWQoaWQpLnN1YnNjcmliZSgodGFnUGFnaW5nKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFzc2lnbmVkVGFnc0VudHJpZXMgPSB0YWdQYWdpbmcubGlzdC5lbnRyaWVzO1xuICAgICAgICAgICAgdGhpcy50YWdzID0gdGFnUGFnaW5nLmxpc3QuZW50cmllcy5tYXAoKHRhZ0VudHJ5KSA9PiB0YWdFbnRyeS5lbnRyeS50YWcpO1xuICAgICAgICAgICAgdGhpcy5fYXNzaWduZWRUYWdzID0gWy4uLnRoaXMudGFnc107XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2F2ZVRhZ3MoKTogeyBba2V5OiBzdHJpbmddOiBPYnNlcnZhYmxlPFRhZ1BhZ2luZyB8IFRhZ0VudHJ5IHwgdm9pZD4gfSB7XG4gICAgICAgIGNvbnN0IG9ic2VydmFibGVzOiB7IFtrZXk6IHN0cmluZ106IE9ic2VydmFibGU8VGFnUGFnaW5nIHwgVGFnRW50cnkgfCB2b2lkPiB9ID0ge307XG4gICAgICAgIGlmICh0aGlzLnRhZ3MpIHtcbiAgICAgICAgICAgIHRoaXMuYXNzaWduZWRUYWdzRW50cmllcy5mb3JFYWNoKCh0YWdFbnRyeSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy50YWdzLnNvbWUoKHRhZykgPT4gdGFnRW50cnkuZW50cnkudGFnID09PSB0YWcpKSB7XG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmFibGVzW2Ake3RhZ0VudHJ5LmVudHJ5LmlkfVJlbW92aW5nYF0gPSB0aGlzLnRhZ1NlcnZpY2UucmVtb3ZlVGFnKHRoaXMubm9kZS5pZCwgdGFnRW50cnkuZW50cnkuaWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHRoaXMudGFncy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBvYnNlcnZhYmxlcy50YWdzQXNzaWduaW5nID0gdGhpcy50YWdTZXJ2aWNlLmFzc2lnblRhZ3NUb05vZGUoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS5pZCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWdzLm1hcCgodGFnKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YWdCb2R5ID0gbmV3IFRhZ0JvZHkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ0JvZHkudGFnID0gdGFnO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRhZ0JvZHk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVJbnZhbGlkUHJvcGVydGllcygpIHtcbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0UHJvcGVydHk/LmlzVmFsaWRWYWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMuaW52YWxpZFByb3BlcnRpZXMuYWRkKHRoaXMudGFyZ2V0UHJvcGVydHkua2V5KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnRhcmdldFByb3BlcnR5Py5pc1ZhbGlkVmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHRoaXMuaW52YWxpZFByb3BlcnRpZXMuZGVsZXRlKHRoaXMudGFyZ2V0UHJvcGVydHkua2V5KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxtYXQtYWNjb3JkaW9uIGRpc3BsYXlNb2RlPVwiZmxhdFwiIFttdWx0aV09XCJtdWx0aVwiIGNsYXNzPVwiYWRmLW1ldGFkYXRhLXByb3BlcnRpZXNcIj5cbiAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbFxuICAgICAgICAqbmdJZj1cImRpc3BsYXlEZWZhdWx0UHJvcGVydGllc1wiXG4gICAgICAgIGNsYXNzPVwiYWRmLWNvbnRlbnQtbWV0YWRhdGEtcGFuZWxcIlxuICAgICAgICBbZXhwYW5kZWRdPVwiY3VycmVudFBhbmVsLnBhbmVsVGl0bGUgPT09IERlZmF1bHRQYW5lbHMuUFJPUEVSVElFUyAmJiBjdXJyZW50UGFuZWwuZXhwYW5kZWRcIlxuICAgICAgICAob3BlbmVkKT1cImV4cGFuZFBhbmVsKERlZmF1bHRQYW5lbHMuUFJPUEVSVElFUylcIlxuICAgICAgICAoY2xvc2VkKT1cImNsb3NlUGFuZWwoRGVmYXVsdFBhbmVscy5QUk9QRVJUSUVTKVwiXG4gICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInYWRmLW1ldGFkYXRhLWdyb3VwLXByb3BlcnRpZXMnXCJcbiAgICAgICAgaGlkZVRvZ2dsZT5cbiAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyXG4gICAgICAgICAgICBjbGFzcz1cImFkZi1tZXRhZGF0YS1wcm9wZXJ0aWVzLWhlYWRlclwiXG4gICAgICAgICAgICBbY2xhc3MuYWRmLW1ldGFkYXRhLXByb3BlcnRpZXMtaGVhZGVyLWV4cGFuZGVkXT1cImN1cnJlbnRQYW5lbC5wYW5lbFRpdGxlID09PSBEZWZhdWx0UGFuZWxzLlBST1BFUlRJRVMgJiYgY3VycmVudFBhbmVsLmV4cGFuZGVkXCI+XG4gICAgICAgICAgICA8YWRmLWNvbnRlbnQtbWV0YWRhdGEtaGVhZGVyXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIidDT1JFLk1FVEFEQVRBLkJBU0lDLkhFQURFUidcIlxuICAgICAgICAgICAgICAgIFtleHBhbmRlZF09XCJjdXJyZW50UGFuZWwucGFuZWxUaXRsZSA9PT0gRGVmYXVsdFBhbmVscy5QUk9QRVJUSUVTICYmIGN1cnJlbnRQYW5lbC5leHBhbmRlZFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhcmVhZE9ubHkgJiYgIWlzUGFuZWxFZGl0aW5nKERlZmF1bHRQYW5lbHMuUFJPUEVSVElFUylcIlxuICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUdyb3VwRWRpdGluZyhEZWZhdWx0UGFuZWxzLlBST1BFUlRJRVMsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCInQ09SRS5NRVRBREFUQS5BQ1RJT05TLkVESVQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQ09SRS5NRVRBREFUQS5BQ0NFU1NJQklMSVRZLkVESVQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwibWV0YS1kYXRhLWdlbmVyYWwtaW5mby1lZGl0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtZWRpdC1pY29uLWJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPm1vZGVfZWRpdDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzUGFuZWxFZGl0aW5nKERlZmF1bHRQYW5lbHMuUFJPUEVSVElFUylcIiBjbGFzcz1cImFkZi1tZXRhZGF0YS1hY3Rpb24tYnV0dG9uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cIidDT1JFLk1FVEFEQVRBLkFDVElPTlMuQ0FOQ0VMJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsR3JvdXBFZGl0aW5nKERlZmF1bHRQYW5lbHMuUFJPUEVSVElFUywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJyZXNldC1tZXRhZGF0YVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1tZXRhZGF0YS1hY3Rpb24tYnV0dG9ucy1jbGVhclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiJ0NPUkUuTUVUQURBVEEuQUNUSU9OUy5TQVZFJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZUNoYW5nZXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwic2F2ZS1nZW5lcmFsLWluZm8tbWV0YWRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFoYXNNZXRhZGF0YUNoYW5nZWQgfHwgaW52YWxpZFByb3BlcnRpZXMuc2l6ZSA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jaGVjazwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hZGYtY29udGVudC1tZXRhZGF0YS1oZWFkZXI+XG4gICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgIDxhZGYtY2FyZC12aWV3XG4gICAgICAgICAgICBjbGFzcz1cImFkZi1tZXRhZGF0YS1wcm9wZXJ0aWVzLWV4cGFuc2lvbi1wYW5lbFwiXG4gICAgICAgICAgICAoa2V5ZG93bik9XCJrZXlEb3duKCRldmVudClcIlxuICAgICAgICAgICAgW3Byb3BlcnRpZXNdPVwiYmFzaWNQcm9wZXJ0aWVzJCB8IGFzeW5jXCJcbiAgICAgICAgICAgIFtlZGl0YWJsZV09XCIhcmVhZE9ubHkgJiYgaXNQYW5lbEVkaXRpbmcoRGVmYXVsdFBhbmVscy5QUk9QRVJUSUVTKVwiXG4gICAgICAgICAgICBbZGlzcGxheUVtcHR5XT1cImRpc3BsYXlFbXB0eVwiXG4gICAgICAgICAgICBbY29weVRvQ2xpcGJvYXJkQWN0aW9uXT1cImNvcHlUb0NsaXBib2FyZEFjdGlvblwiXG4gICAgICAgICAgICBbdXNlQ2hpcHNGb3JNdWx0aVZhbHVlUHJvcGVydHldPVwidXNlQ2hpcHNGb3JNdWx0aVZhbHVlUHJvcGVydHlcIlxuICAgICAgICAgICAgW211bHRpVmFsdWVTZXBhcmF0b3JdPVwibXVsdGlWYWx1ZVNlcGFyYXRvclwiIC8+XG4gICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlUYWdzXCI+XG4gICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsXG4gICAgICAgICAgICBoaWRlVG9nZ2xlXG4gICAgICAgICAgICBbZXhwYW5kZWRdPVwiY3VycmVudFBhbmVsLnBhbmVsVGl0bGUgPT09IERlZmF1bHRQYW5lbHMuVEFHUyAmJiBjdXJyZW50UGFuZWwuZXhwYW5kZWRcIlxuICAgICAgICAgICAgKG9wZW5lZCk9XCJleHBhbmRQYW5lbChEZWZhdWx0UGFuZWxzLlRBR1MpXCJcbiAgICAgICAgICAgIChjbG9zZWQpPVwiY2xvc2VQYW5lbChEZWZhdWx0UGFuZWxzLlRBR1MpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWRmLWNvbnRlbnQtbWV0YWRhdGEtcGFuZWxcIlxuICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLWNvbnRlbnQtbWV0YWRhdGEtdGFncy1wYW5lbFwiPlxuICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtbWV0YWRhdGEtcHJvcGVydGllcy1oZWFkZXJcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5hZGYtbWV0YWRhdGEtcHJvcGVydGllcy1oZWFkZXItZXhwYW5kZWRdPVwiY3VycmVudFBhbmVsLnBhbmVsVGl0bGUgPT09IERlZmF1bHRQYW5lbHMuVEFHUyAmJiBjdXJyZW50UGFuZWwuZXhwYW5kZWRcIj5cbiAgICAgICAgICAgICAgICA8YWRmLWNvbnRlbnQtbWV0YWRhdGEtaGVhZGVyIFt0aXRsZV09XCInTUVUQURBVEEuQkFTSUMuVEFHUydcIiBbZXhwYW5kZWRdPVwiY3VycmVudFBhbmVsLnBhbmVsVGl0bGUgPT09IERlZmF1bHRQYW5lbHMuVEFHUyAmJiBjdXJyZW50UGFuZWwuZXhwYW5kZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhcmVhZE9ubHkgJiYgIWlzUGFuZWxFZGl0aW5nKERlZmF1bHRQYW5lbHMuVEFHUylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlR3JvdXBFZGl0aW5nKERlZmF1bHRQYW5lbHMuVEFHUywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCInQ09SRS5NRVRBREFUQS5BQ1RJT05TLkVESVQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0NPUkUuTUVUQURBVEEuQUNDRVNTSUJJTElUWS5FRElUJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJzaG93aW5nLXRhZy1pbnB1dC1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtZWRpdC1pY29uLWJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5tb2RlX2VkaXQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzUGFuZWxFZGl0aW5nKERlZmF1bHRQYW5lbHMuVEFHUylcIiBjbGFzcz1cImFkZi1tZXRhZGF0YS1hY3Rpb24tYnV0dG9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cIidDT1JFLk1FVEFEQVRBLkFDVElPTlMuQ0FOQ0VMJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNhbmNlbEdyb3VwRWRpdGluZyhEZWZhdWx0UGFuZWxzLlRBR1MsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cInJlc2V0LXRhZ3MtbWV0YWRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLW1ldGFkYXRhLWFjdGlvbi1idXR0b25zLWNsZWFyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cIidDT1JFLk1FVEFEQVRBLkFDVElPTlMuU0FWRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzYXZlQ2hhbmdlcygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cInNhdmUtdGFncy1tZXRhZGF0YVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFoYXNNZXRhZGF0YUNoYW5nZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2hlY2s8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYWRmLWNvbnRlbnQtbWV0YWRhdGEtaGVhZGVyPlxuICAgICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjdXJyZW50UGFuZWwucGFuZWxUaXRsZSA9PT0gRGVmYXVsdFBhbmVscy5UQUdTICYmICFlZGl0aW5nXCJcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtbWV0YWRhdGEtcHJvcGVydGllcy10YWdzXCI+XG4gICAgICAgICAgICAgICAgPGFkZi1keW5hbWljLWNoaXAtbGlzdCBbY2hpcHNdPVwidGFnc1RvRGlzcGxheVwiIFtzaG93RGVsZXRlXT1cImZhbHNlXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dFbXB0eVRhZ01lc3NhZ2VcIiBjbGFzcz1cImFkZi1tZXRhZGF0YS1uby1pdGVtLWFkZGVkXCI+XG4gICAgICAgICAgICAgICAge3sgJ01FVEFEQVRBLkJBU0lDLk5PX1RBR1NfQURERUQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxhZGYtdGFncy1jcmVhdG9yXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhcmVhZE9ubHkgJiYgaXNQYW5lbEVkaXRpbmcoRGVmYXVsdFBhbmVscy5UQUdTKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtbWV0YWRhdGEtcHJvcGVydGllcy10YWdzXCJcbiAgICAgICAgICAgICAgICBbdGFnTmFtZUNvbnRyb2xWaXNpYmxlXT1cImVkaXRpbmdcIlxuICAgICAgICAgICAgICAgICh0YWdzQ2hhbmdlKT1cInN0b3JlVGFnc1RvQXNzaWduKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFttb2RlXT1cInRhZ3NDcmVhdG9yTW9kZVwiXG4gICAgICAgICAgICAgICAgW3RhZ3NdPVwiYXNzaWduZWRUYWdzXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRUYWdzUmVtb3ZpbmddPVwic2F2aW5nXCIgLz5cbiAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlDYXRlZ29yaWVzXCI+XG4gICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsXG4gICAgICAgICAgICBoaWRlVG9nZ2xlXG4gICAgICAgICAgICBbZXhwYW5kZWRdPVwiY3VycmVudFBhbmVsLnBhbmVsVGl0bGUgPT09IERlZmF1bHRQYW5lbHMuQ0FURUdPUklFUyAmJiBjdXJyZW50UGFuZWwuZXhwYW5kZWRcIlxuICAgICAgICAgICAgKG9wZW5lZCk9XCJleHBhbmRQYW5lbChEZWZhdWx0UGFuZWxzLkNBVEVHT1JJRVMpXCJcbiAgICAgICAgICAgIChjbG9zZWQpPVwiY2xvc2VQYW5lbChEZWZhdWx0UGFuZWxzLkNBVEVHT1JJRVMpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWRmLWNvbnRlbnQtbWV0YWRhdGEtcGFuZWxcIlxuICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLWNvbnRlbnQtbWV0YWRhdGEtY2F0ZWdvcmllcy1wYW5lbFwiPlxuICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtbWV0YWRhdGEtcHJvcGVydGllcy1oZWFkZXJcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5hZGYtbWV0YWRhdGEtcHJvcGVydGllcy1oZWFkZXItZXhwYW5kZWRdPVwiY3VycmVudFBhbmVsLnBhbmVsVGl0bGUgPT09IERlZmF1bHRQYW5lbHMuQ0FURUdPUklFUyAmJiBjdXJyZW50UGFuZWwuZXhwYW5kZWRcIj5cbiAgICAgICAgICAgICAgICA8YWRmLWNvbnRlbnQtbWV0YWRhdGEtaGVhZGVyXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQ0FURUdPUklFU19NQU5BR0VNRU5ULkNBVEVHT1JJRVNfVElUTEUnXCJcbiAgICAgICAgICAgICAgICAgICAgW2V4cGFuZGVkXT1cImN1cnJlbnRQYW5lbC5wYW5lbFRpdGxlID09PSBEZWZhdWx0UGFuZWxzLkNBVEVHT1JJRVMgJiYgY3VycmVudFBhbmVsLmV4cGFuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXJlYWRPbmx5ICYmICFpc1BhbmVsRWRpdGluZyhEZWZhdWx0UGFuZWxzLkNBVEVHT1JJRVMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUdyb3VwRWRpdGluZyhEZWZhdWx0UGFuZWxzLkNBVEVHT1JJRVMsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiJ0NPUkUuTUVUQURBVEEuQUNUSU9OUy5FRElUJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidDT1JFLk1FVEFEQVRBLkFDQ0VTU0lCSUxJVFkuRURJVCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwibWV0YS1kYXRhLWNhdGVnb3JpZXMtZWRpdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1jYXRlZ29yaWVzLWJ1dHRvbiBhZGYtZWRpdC1pY29uLWJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5tb2RlX2VkaXQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzUGFuZWxFZGl0aW5nKERlZmF1bHRQYW5lbHMuQ0FURUdPUklFUylcIiBjbGFzcz1cImFkZi1tZXRhZGF0YS1hY3Rpb24tYnV0dG9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cIidDT1JFLk1FVEFEQVRBLkFDVElPTlMuQ0FOQ0VMJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNhbmNlbEdyb3VwRWRpdGluZyhEZWZhdWx0UGFuZWxzLkNBVEVHT1JJRVMsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cInJlc2V0LW1ldGFkYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1tZXRhZGF0YS1hY3Rpb24tYnV0dG9ucy1jbGVhclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCInQ09SRS5NRVRBREFUQS5BQ1RJT05TLlNBVkUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZUNoYW5nZXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJzYXZlLWNhdGVnb3JpZXMtbWV0YWRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaGFzTWV0YWRhdGFDaGFuZ2VkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNoZWNrPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2FkZi1jb250ZW50LW1ldGFkYXRhLWhlYWRlcj5cbiAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY3VycmVudFBhbmVsLnBhbmVsVGl0bGUgPT09IERlZmF1bHRQYW5lbHMuQ0FURUdPUklFUyAmJiAhZWRpdGluZ1wiPlxuICAgICAgICAgICAgICAgIDxwICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBjYXRlZ29yaWVzXCIgY2xhc3M9XCJhZGYtbWV0YWRhdGEtY2F0ZWdvcmllc1wiPnt7IGNhdGVnb3J5Lm5hbWUgfX08L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93RW1wdHlDYXRlZ29yeU1lc3NhZ2VcIiBjbGFzcz1cImFkZi1tZXRhZGF0YS1uby1pdGVtLWFkZGVkXCI+XG4gICAgICAgICAgICAgICAge3sgJ0NBVEVHT1JJRVNfTUFOQUdFTUVOVC5OT19DQVRFR09SSUVTX0FEREVEJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YWRmLWNhdGVnb3JpZXMtbWFuYWdlbWVudFxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIXJlYWRPbmx5ICYmIGlzUGFuZWxFZGl0aW5nKERlZmF1bHRQYW5lbHMuQ0FURUdPUklFUylcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLW1ldGFkYXRhLWNhdGVnb3JpZXMtaGVhZGVyXCJcbiAgICAgICAgICAgICAgICBbY2F0ZWdvcnlOYW1lQ29udHJvbFZpc2libGVdPVwiZWRpdGluZ1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVSZW1vdmFsXT1cInNhdmluZ1wiXG4gICAgICAgICAgICAgICAgW2NhdGVnb3JpZXNdPVwiY2F0ZWdvcmllc1wiXG4gICAgICAgICAgICAgICAgW21hbmFnZW1lbnRNb2RlXT1cImNhdGVnb3JpZXNNYW5hZ2VtZW50TW9kZVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzaWZpYWJsZUNoYW5nZWRdPVwiY2xhc3NpZmlhYmxlQ2hhbmdlZFwiXG4gICAgICAgICAgICAgICAgKGNhdGVnb3JpZXNDaGFuZ2UpPVwic3RvcmVDYXRlZ29yaWVzVG9Bc3NpZ24oJGV2ZW50KVwiIC8+XG4gICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsXG4gICAgICAgICpuZ0Zvcj1cImxldCBjdXN0b21QYW5lbCBvZiBjdXN0b21QYW5lbHNcIlxuICAgICAgICBbZXhwYW5kZWRdPVwiY3VycmVudFBhbmVsLnBhbmVsVGl0bGUgPT09IGN1c3RvbVBhbmVsLnBhbmVsVGl0bGUgJiYgY3VycmVudFBhbmVsLmV4cGFuZGVkXCJcbiAgICAgICAgKG9wZW5lZCk9XCJleHBhbmRQYW5lbChjdXN0b21QYW5lbC5wYW5lbFRpdGxlKVwiXG4gICAgICAgIChjbG9zZWQpPVwiY2xvc2VQYW5lbChjdXN0b21QYW5lbC5wYW5lbFRpdGxlKVwiXG4gICAgICAgIGNsYXNzPVwiYWRmLWNvbnRlbnQtbWV0YWRhdGEtcGFuZWxcIlxuICAgICAgICBoaWRlVG9nZ2xlPlxuICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJcbiAgICAgICAgICAgIGNsYXNzPVwiYWRmLW1ldGFkYXRhLXByb3BlcnRpZXMtaGVhZGVyXCJcbiAgICAgICAgICAgIFtjbGFzcy5hZGYtbWV0YWRhdGEtcHJvcGVydGllcy1oZWFkZXItZXhwYW5kZWRdPVwiY3VycmVudFBhbmVsLnBhbmVsVGl0bGUgPT09IGN1c3RvbVBhbmVsLnBhbmVsVGl0bGUgJiYgY3VycmVudFBhbmVsLmV4cGFuZGVkXCI+XG4gICAgICAgICAgICA8YWRmLWNvbnRlbnQtbWV0YWRhdGEtaGVhZGVyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtbWV0YWRhdGEtY3VzdG9tLXBhbmVsLXRpdGxlXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiY3VzdG9tUGFuZWwucGFuZWxUaXRsZVwiXG4gICAgICAgICAgICAgICAgW2V4cGFuZGVkXT1cImN1cnJlbnRQYW5lbC5wYW5lbFRpdGxlID09PSBjdXN0b21QYW5lbC5wYW5lbFRpdGxlICYmIGN1cnJlbnRQYW5lbC5leHBhbmRlZFwiIC8+XG4gICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgIDxhZGYtZHluYW1pYy1jb21wb25lbnQgW2lkXT1cImN1c3RvbVBhbmVsLmNvbXBvbmVudFwiIFtkYXRhXT1cInsgbm9kZSB9XCIgLz5cbiAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JvdXBlZFByb3BlcnRpZXMkIHwgYXN5bmM7IGVsc2UgbG9hZGluZzsgbGV0IGdyb3VwZWRQcm9wZXJ0aWVzXCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGdyb3VwZWRQcm9wZXJ0aWVzOyBsZXQgZmlyc3QgPSBmaXJzdFwiIGNsYXNzPVwiYWRmLW1ldGFkYXRhLWdyb3VwZWQtcHJvcGVydGllcy1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidhZGYtbWV0YWRhdGEtZ3JvdXAtJyArIGdyb3VwLnRpdGxlXCJcbiAgICAgICAgICAgICAgICBbZXhwYW5kZWRdPVwibXVsdGkgPyAhZGlzcGxheURlZmF1bHRQcm9wZXJ0aWVzICYmIGZpcnN0IHx8IGdyb3VwLmV4cGFuZGVkIDogIWRpc3BsYXlEZWZhdWx0UHJvcGVydGllcyAmJiBmaXJzdCB8fCBjdXJyZW50UGFuZWwucGFuZWxUaXRsZSA9PT0gZ3JvdXAudGl0bGUgJiYgY3VycmVudFBhbmVsLmV4cGFuZGVkXCJcbiAgICAgICAgICAgICAgICAob3BlbmVkKT1cImV4cGFuZFBhbmVsKGdyb3VwLnRpdGxlKTsgZ3JvdXAuZXhwYW5kZWQgPSB0cnVlXCJcbiAgICAgICAgICAgICAgICAoY2xvc2VkKT1cImNsb3NlUGFuZWwoZ3JvdXAudGl0bGUpOyBncm91cC5leHBhbmRlZCA9IGZhbHNlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1jb250ZW50LW1ldGFkYXRhLXBhbmVsXCJcbiAgICAgICAgICAgICAgICBoaWRlVG9nZ2xlPlxuICAgICAgICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1tZXRhZGF0YS1wcm9wZXJ0aWVzLWhlYWRlclwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hZGYtbWV0YWRhdGEtcHJvcGVydGllcy1oZWFkZXItZXhwYW5kZWRdPVwiY3VycmVudFBhbmVsLnBhbmVsVGl0bGUgPT09IGdyb3VwLnRpdGxlICYmIGN1cnJlbnRQYW5lbC5leHBhbmRlZFwiPlxuICAgICAgICAgICAgICAgICAgICA8YWRmLWNvbnRlbnQtbWV0YWRhdGEtaGVhZGVyIFt0aXRsZV09XCJncm91cC50aXRsZVwiIFtleHBhbmRlZF09XCJjdXJyZW50UGFuZWwucGFuZWxUaXRsZSA9PT0gZ3JvdXAudGl0bGUgJiYgY3VycmVudFBhbmVsLmV4cGFuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJncm91cC5lZGl0YWJsZSAmJiAhdGhpcy5yZWFkT25seSAmJiAhaXNQYW5lbEVkaXRpbmcoZ3JvdXAudGl0bGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCInQ09SRS5NRVRBREFUQS5BQ1RJT05TLkVESVQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidDT1JFLk1FVEFEQVRBLkFDQ0VTU0lCSUxJVFkuRURJVCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cIm1ldGEtZGF0YS1jYXJkLXRvZ2dsZS1lZGl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1lZGl0LWljb24tYnV0dG9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUdyb3VwRWRpdGluZyhncm91cC50aXRsZSwgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5tb2RlX2VkaXQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLW1ldGFkYXRhLWFjdGlvbi1idXR0b25zXCIgKm5nSWY9XCJncm91cC5lZGl0YWJsZSAmJiBpc1BhbmVsRWRpdGluZyhncm91cC50aXRsZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCInQ09SRS5NRVRBREFUQS5BQ1RJT05TLkNBTkNFTCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsR3JvdXBFZGl0aW5nKGdyb3VwLnRpdGxlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwicmVzZXQtbWV0YWRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1tZXRhZGF0YS1hY3Rpb24tYnV0dG9ucy1jbGVhclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xlYXI8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cIidDT1JFLk1FVEFEQVRBLkFDVElPTlMuU0FWRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZUNoYW5nZXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cInNhdmUtbWV0YWRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWhhc01ldGFkYXRhQ2hhbmdlZCB8fCBpbnZhbGlkUHJvcGVydGllcy5zaXplID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2hlY2s8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvYWRmLWNvbnRlbnQtbWV0YWRhdGEtaGVhZGVyPlxuICAgICAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFzaG93R3JvdXAoZ3JvdXApICYmIGdyb3VwLmVkaXRhYmxlICYmICFlZGl0aW5nXCIgY2xhc3M9XCJhZGYtbWV0YWRhdGEtbm8taXRlbS1hZGRlZFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnTUVUQURBVEEuQkFTSUMuTk9fSVRFTVNfTUVTU0FHRScgfCB0cmFuc2xhdGUgOiB7IGdyb3VwVGl0bGU6IGdyb3VwLnRpdGxlIHwgdHJhbnNsYXRlIH0gfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YWRmLWNhcmQtdmlld1xuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJrZXlEb3duKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbcHJvcGVydGllc109XCJncm91cC5wcm9wZXJ0aWVzXCJcbiAgICAgICAgICAgICAgICAgICAgW2VkaXRhYmxlXT1cIiFyZWFkT25seSAmJiBncm91cC5lZGl0YWJsZSAmJiBpc1BhbmVsRWRpdGluZyhncm91cC50aXRsZSlcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUVtcHR5XT1cImRpc3BsYXlFbXB0eVwiXG4gICAgICAgICAgICAgICAgICAgIFtjb3B5VG9DbGlwYm9hcmRBY3Rpb25dPVwiY29weVRvQ2xpcGJvYXJkQWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgW3VzZUNoaXBzRm9yTXVsdGlWYWx1ZVByb3BlcnR5XT1cInVzZUNoaXBzRm9yTXVsdGlWYWx1ZVByb3BlcnR5XCJcbiAgICAgICAgICAgICAgICAgICAgW211bHRpVmFsdWVTZXBhcmF0b3JdPVwibXVsdGlWYWx1ZVNlcGFyYXRvclwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5TGFiZWxGb3JDaGlwc109XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIG1vZGU9XCJpbmRldGVybWluYXRlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInREFUQV9MT0FESU5HJyB8IHRyYW5zbGF0ZVwiIC8+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvbWF0LWFjY29yZGlvbj5cbiJdfQ==
@@ -95,10 +95,10 @@ export class ContentMetadataCardComponent {
95
95
  isEditAspectSupported() {
96
96
  return !this.readOnly && this.hasAllowableOperations() && this.editAspectSupported;
97
97
  }
98
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ContentMetadataCardComponent, deps: [{ token: i1.ContentService }, { token: i2.NodeAspectService }, { token: i3.VersionCompatibilityService }], target: i0.ɵɵFactoryTarget.Component }); }
99
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: ContentMetadataCardComponent, isStandalone: true, selector: "adf-content-metadata-card", inputs: { node: "node", displayEmpty: "displayEmpty", displayAspect: "displayAspect", displayTags: "displayTags", displayCategories: "displayCategories", preset: "preset", readOnly: "readOnly", multi: "multi", editable: "editable", customPanels: "customPanels", displayDefaultProperties: "displayDefaultProperties" }, host: { classAttribute: "adf-content-metadata-card" }, usesOnChanges: true, ngImport: i0, template: "<mat-card appearance=\"outlined\" *ngIf=\"node\" class=\"adf-content-metadata-card-view\">\n <mat-card-content class=\"adf-content-metadata-card-view-content\">\n <adf-content-metadata\n [displayDefaultProperties]=\"displayDefaultProperties\"\n [expanded]=\"expanded\"\n [node]=\"node\"\n [displayEmpty]=\"displayEmpty\"\n [readOnly]=\"!editable\"\n [multi]=\"multi\"\n [displayAspect]=\"displayAspect\"\n [preset]=\"preset\"\n [displayTags]=\"displayTags\"\n [displayCategories]=\"displayCategories\"\n [customPanels]=\"customPanels\" />\n </mat-card-content>\n <mat-card-footer class=\"adf-content-metadata-card-footer adf-content-metadata-card-view-footer\">\n <div>\n <button *ngIf=\"isEditAspectSupported()\"\n mat-icon-button\n (click)=\"openAspectDialog()\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT_ASPECTS' | translate\"\n [attr.aria-label]=\"'CORE.METADATA.ACCESSIBILITY.EDIT_ASPECTS' | translate\"\n data-automation-id=\"meta-data-card-edit-aspect\">\n <mat-icon>menu</mat-icon>\n </button>\n </div>\n </mat-card-footer>\n</mat-card>\n", styles: [".adf-content-metadata-card .adf-content-metadata-card-view{padding:0}.adf-content-metadata-card .adf-content-metadata-card-view .adf-content-metadata-card-view-content{margin-bottom:0}.adf-content-metadata-card-footer.adf-content-metadata-card-view-footer{margin:0;padding:8px 12px;border-top:1px solid var(--adf-theme-foreground-text-color-007);display:flex;place-content:stretch space-between;align-items:stretch;max-height:100%}.adf-content-metadata-card-footer.adf-content-metadata-card-view-footer button{color:var(--adf-theme-foreground-text-color-054)}.adf-content-metadata-card-footer.adf-content-metadata-card-view-footer button:hover{color:var(--adf-theme-foreground-text-color-087)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i5.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i5.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i5.MatCardFooter, selector: "mat-card-footer" }, { kind: "component", type: ContentMetadataComponent, selector: "adf-content-metadata", inputs: ["node", "displayEmpty", "expanded", "multi", "preset", "displayDefaultProperties", "displayAspect", "copyToClipboardAction", "useChipsForMultiValueProperty", "displayTags", "displayCategories", "customPanels", "readOnly"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
98
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContentMetadataCardComponent, deps: [{ token: i1.ContentService }, { token: i2.NodeAspectService }, { token: i3.VersionCompatibilityService }], target: i0.ɵɵFactoryTarget.Component }); }
99
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ContentMetadataCardComponent, isStandalone: true, selector: "adf-content-metadata-card", inputs: { node: "node", displayEmpty: "displayEmpty", displayAspect: "displayAspect", displayTags: "displayTags", displayCategories: "displayCategories", preset: "preset", readOnly: "readOnly", multi: "multi", editable: "editable", customPanels: "customPanels", displayDefaultProperties: "displayDefaultProperties" }, host: { classAttribute: "adf-content-metadata-card" }, usesOnChanges: true, ngImport: i0, template: "<mat-card appearance=\"outlined\" *ngIf=\"node\" class=\"adf-content-metadata-card-view\">\n <mat-card-content class=\"adf-content-metadata-card-view-content\">\n <adf-content-metadata\n [displayDefaultProperties]=\"displayDefaultProperties\"\n [expanded]=\"expanded\"\n [node]=\"node\"\n [displayEmpty]=\"displayEmpty\"\n [readOnly]=\"!editable\"\n [multi]=\"multi\"\n [displayAspect]=\"displayAspect\"\n [preset]=\"preset\"\n [displayTags]=\"displayTags\"\n [displayCategories]=\"displayCategories\"\n [customPanels]=\"customPanels\" />\n </mat-card-content>\n <mat-card-footer class=\"adf-content-metadata-card-footer adf-content-metadata-card-view-footer\">\n <div>\n <button *ngIf=\"isEditAspectSupported()\"\n mat-icon-button\n (click)=\"openAspectDialog()\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT_ASPECTS' | translate\"\n [attr.aria-label]=\"'CORE.METADATA.ACCESSIBILITY.EDIT_ASPECTS' | translate\"\n data-automation-id=\"meta-data-card-edit-aspect\">\n <mat-icon>menu</mat-icon>\n </button>\n </div>\n </mat-card-footer>\n</mat-card>\n", styles: [".adf-content-metadata-card .adf-content-metadata-card-view{padding:0}.adf-content-metadata-card .adf-content-metadata-card-view .adf-content-metadata-card-view-content{margin-bottom:0}.adf-content-metadata-card-footer.adf-content-metadata-card-view-footer{margin:0;padding:8px 12px;border-top:1px solid var(--adf-theme-foreground-text-color-007);display:flex;place-content:stretch space-between;align-items:stretch;max-height:100%}.adf-content-metadata-card-footer.adf-content-metadata-card-view-footer button{color:var(--adf-theme-foreground-text-color-054)}.adf-content-metadata-card-footer.adf-content-metadata-card-view-footer button:hover{color:var(--adf-theme-foreground-text-color-087)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i5.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i5.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i5.MatCardFooter, selector: "mat-card-footer" }, { kind: "component", type: ContentMetadataComponent, selector: "adf-content-metadata", inputs: ["node", "displayEmpty", "expanded", "multi", "preset", "displayDefaultProperties", "displayAspect", "copyToClipboardAction", "useChipsForMultiValueProperty", "displayTags", "displayCategories", "customPanels", "readOnly"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
100
100
  }
101
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ContentMetadataCardComponent, decorators: [{
101
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContentMetadataCardComponent, decorators: [{
102
102
  type: Component,
103
103
  args: [{ selector: 'adf-content-metadata-card', standalone: true, imports: [CommonModule, MatCardModule, ContentMetadataComponent, MatButtonModule, MatIconModule, TranslateModule], encapsulation: ViewEncapsulation.None, host: { class: 'adf-content-metadata-card' }, template: "<mat-card appearance=\"outlined\" *ngIf=\"node\" class=\"adf-content-metadata-card-view\">\n <mat-card-content class=\"adf-content-metadata-card-view-content\">\n <adf-content-metadata\n [displayDefaultProperties]=\"displayDefaultProperties\"\n [expanded]=\"expanded\"\n [node]=\"node\"\n [displayEmpty]=\"displayEmpty\"\n [readOnly]=\"!editable\"\n [multi]=\"multi\"\n [displayAspect]=\"displayAspect\"\n [preset]=\"preset\"\n [displayTags]=\"displayTags\"\n [displayCategories]=\"displayCategories\"\n [customPanels]=\"customPanels\" />\n </mat-card-content>\n <mat-card-footer class=\"adf-content-metadata-card-footer adf-content-metadata-card-view-footer\">\n <div>\n <button *ngIf=\"isEditAspectSupported()\"\n mat-icon-button\n (click)=\"openAspectDialog()\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT_ASPECTS' | translate\"\n [attr.aria-label]=\"'CORE.METADATA.ACCESSIBILITY.EDIT_ASPECTS' | translate\"\n data-automation-id=\"meta-data-card-edit-aspect\">\n <mat-icon>menu</mat-icon>\n </button>\n </div>\n </mat-card-footer>\n</mat-card>\n", styles: [".adf-content-metadata-card .adf-content-metadata-card-view{padding:0}.adf-content-metadata-card .adf-content-metadata-card-view .adf-content-metadata-card-view-content{margin-bottom:0}.adf-content-metadata-card-footer.adf-content-metadata-card-view-footer{margin:0;padding:8px 12px;border-top:1px solid var(--adf-theme-foreground-text-color-007);display:flex;place-content:stretch space-between;align-items:stretch;max-height:100%}.adf-content-metadata-card-footer.adf-content-metadata-card-view-footer button{color:var(--adf-theme-foreground-text-color-054)}.adf-content-metadata-card-footer.adf-content-metadata-card-view-footer button:hover{color:var(--adf-theme-foreground-text-color-087)}\n"] }]
104
104
  }], ctorParameters: () => [{ type: i1.ContentService }, { type: i2.NodeAspectService }, { type: i3.VersionCompatibilityService }], propDecorators: { node: [{
@@ -126,4 +126,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
126
126
  }], displayDefaultProperties: [{
127
127
  type: Input
128
128
  }] } });
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1tZXRhZGF0YS1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvY29udGVudC1tZXRhZGF0YS9jb21wb25lbnRzL2NvbnRlbnQtbWV0YWRhdGEtY2FyZC9jb250ZW50LW1ldGFkYXRhLWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvbnRlbnQtc2VydmljZXMvc3JjL2xpYi9jb250ZW50LW1ldGFkYXRhL2NvbXBvbmVudHMvY29udGVudC1tZXRhZGF0YS1jYXJkL2NvbnRlbnQtbWV0YWRhdGEtY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBNEIsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBRXRGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQzNHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1B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Szt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBT3pCLFFBQVE7c0JBRFAsS0FBSztnQkFRTixLQUFLO3NCQURKLEtBQUs7Z0JBS04sUUFBUTtzQkFEUCxLQUFLO2dCQUtOLFlBQVk7c0JBRFgsS0FBSztnQkFTRix3QkFBd0I7c0JBRDNCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vZGUgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IE5vZGVBc3BlY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXNwZWN0LWxpc3Qvc2VydmljZXMvbm9kZS1hc3BlY3Quc2VydmljZSc7XG5pbXBvcnQgeyBDb250ZW50TWV0YWRhdGFDdXN0b21QYW5lbCwgUHJlc2V0Q29uZmlnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jb250ZW50LW1ldGFkYXRhLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgVmVyc2lvbkNvbXBhdGliaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdmVyc2lvbi1jb21wYXRpYmlsaXR5L3ZlcnNpb24tY29tcGF0aWJpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3NlcnZpY2VzL2NvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBBbGxvd2FibGVPcGVyYXRpb25zRW51bSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9tb2RlbHMvYWxsb3dhYmxlLW9wZXJhdGlvbnMuZW51bSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0Q2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xuaW1wb3J0IHsgQ29udGVudE1ldGFkYXRhQ29tcG9uZW50IH0gZnJvbSAnLi4vY29udGVudC1tZXRhZGF0YS9jb250ZW50LW1ldGFkYXRhLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWNvbnRlbnQtbWV0YWRhdGEtY2FyZCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRDYXJkTW9kdWxlLCBDb250ZW50TWV0YWRhdGFDb21wb25lbnQsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29udGVudC1tZXRhZGF0YS1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb250ZW50LW1ldGFkYXRhLWNhcmQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHsgY2xhc3M6ICdhZGYtY29udGVudC1tZXRhZGF0YS1jYXJkJyB9XG59KVxuZXhwb3J0IGNsYXNzIENvbnRlbnRNZXRhZGF0YUNhcmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIC8qKiAocmVxdWlyZWQpIFRoZSBub2RlIGVudGl0eSB0byBmZXRjaCBtZXRhZGF0YSBhYm91dCAqL1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gICAgbm9kZTogTm9kZTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZmxhZyBkaXNwbGF5cy9oaWRlcyBlbXB0eSBtZXRhZGF0YVxuICAgICAqIGZpZWxkcy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlFbXB0eT86IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZmxhZyBkaXNwbGF5cyBkZXNpcmVkIGFzcGVjdCB3aGVuIG9wZW4gZm9yIHRoZSBmaXJzdCB0aW1lIGZpZWxkcy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlBc3BlY3Q/OiBzdHJpbmcgPSBudWxsO1xuXG4gICAgLyoqIERpc3BsYXkgdGFncyBpbiB0aGUgY2FyZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheVRhZ3MgPSB0cnVlO1xuXG4gICAgLyoqIERpc3BsYXkgY2F0ZWdvcmllcyBpbiB0aGUgY2FyZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheUNhdGVnb3JpZXMgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogTmFtZSBvciBjb25maWd1cmF0aW9uIG9mIHRoZSBtZXRhZGF0YSBwcmVzZXQsIHdoaWNoIGRlZmluZXMgYXNwZWN0c1xuICAgICAqIGFuZCB0aGVpciBwcm9wZXJ0aWVzLlxuICAgICAqL1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gICAgcHJlc2V0OiBzdHJpbmcgfCBQcmVzZXRDb25maWc7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZsYWcgc2V0cyB0aGUgbWV0YWRhdGEgaW4gcmVhZCBvbmx5IG1vZGUgcHJldmVudGluZyBjaGFuZ2VzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVhZE9ubHk/ID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZsYWcgYWxsb3dzIHRoZSBjb21wb25lbnQgdG8gZGlzcGxheSBtb3JlXG4gICAgICogdGhhbiBvbmUgYWNjb3JkaW9uIGF0IGEgdGltZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG11bHRpPyA9IGZhbHNlO1xuXG4gICAgLyoqIFRoaXMgZmxhZyB0b2dnbGVzIGVkaXRhYmxlIG9mIGNvbnRlbnQuICovXG4gICAgQElucHV0KClcbiAgICBlZGl0YWJsZT8gPSBmYWxzZTtcblxuICAgIC8qKiBMaXN0IG9mIGN1c3RvbSBtZXRhZGF0YSBwYW5lbHMgdG8gYmUgZGlzcGxheWVkIHdpdGggcmVnaXN0ZXJlZCBjdXN0b20gY29tcG9uZW50cyAqL1xuICAgIEBJbnB1dCgpXG4gICAgY3VzdG9tUGFuZWxzOiBDb250ZW50TWV0YWRhdGFDdXN0b21QYW5lbFtdO1xuXG4gICAgcHJpdmF0ZSBfZGlzcGxheURlZmF1bHRQcm9wZXJ0aWVzOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZmxhZyBkaXNwbGF5cy9oaWRlcyB0aGUgbWV0YWRhdGEgcHJvcGVydGllcy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBkaXNwbGF5RGVmYXVsdFByb3BlcnRpZXModmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZGlzcGxheURlZmF1bHRQcm9wZXJ0aWVzID0gdmFsdWU7XG4gICAgICAgIHRoaXMub25EaXNwbGF5RGVmYXVsdFByb3BlcnRpZXNDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICBnZXQgZGlzcGxheURlZmF1bHRQcm9wZXJ0aWVzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGxheURlZmF1bHRQcm9wZXJ0aWVzO1xuICAgIH1cblxuICAgIGV4cGFuZGVkOiBib29sZWFuO1xuXG4gICAgZWRpdEFzcGVjdFN1cHBvcnRlZCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgY29udGVudFNlcnZpY2U6IENvbnRlbnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG5vZGVBc3BlY3RTZXJ2aWNlOiBOb2RlQXNwZWN0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB2ZXJzaW9uQ29tcGF0aWJpbGl0eVNlcnZpY2U6IFZlcnNpb25Db21wYXRpYmlsaXR5U2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLmVkaXRBc3BlY3RTdXBwb3J0ZWQgPSB0aGlzLnZlcnNpb25Db21wYXRpYmlsaXR5U2VydmljZS5pc1ZlcnNpb25TdXBwb3J0ZWQoJzcnKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmRpc3BsYXlBc3BlY3Q/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5leHBhbmRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRpc3BsYXlEZWZhdWx0UHJvcGVydGllc0NoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5leHBhbmRlZCA9ICF0aGlzLl9kaXNwbGF5RGVmYXVsdFByb3BlcnRpZXM7XG4gICAgfVxuXG4gICAgaGFzQWxsb3dhYmxlT3BlcmF0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudFNlcnZpY2UuaGFzQWxsb3dhYmxlT3BlcmF0aW9ucyh0aGlzLm5vZGUsIEFsbG93YWJsZU9wZXJhdGlvbnNFbnVtLlVQREFURSk7XG4gICAgfVxuXG4gICAgb3BlbkFzcGVjdERpYWxvZygpIHtcbiAgICAgICAgdGhpcy5ub2RlQXNwZWN0U2VydmljZS51cGRhdGVOb2RlQXNwZWN0cyh0aGlzLm5vZGUuaWQpO1xuICAgIH1cblxuICAgIGlzRWRpdEFzcGVjdFN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnJlYWRPbmx5ICYmIHRoaXMuaGFzQWxsb3dhYmxlT3BlcmF0aW9ucygpICYmIHRoaXMuZWRpdEFzcGVjdFN1cHBvcnRlZDtcbiAgICB9XG59XG4iLCI8bWF0LWNhcmQgYXBwZWFyYW5jZT1cIm91dGxpbmVkXCIgKm5nSWY9XCJub2RlXCIgY2xhc3M9XCJhZGYtY29udGVudC1tZXRhZGF0YS1jYXJkLXZpZXdcIj5cbiAgICA8bWF0LWNhcmQtY29udGVudCBjbGFzcz1cImFkZi1jb250ZW50LW1ldGFkYXRhLWNhcmQtdmlldy1jb250ZW50XCI+XG4gICAgICAgIDxhZGYtY29udGVudC1tZXRhZGF0YVxuICAgICAgICAgICAgW2Rpc3BsYXlEZWZhdWx0UHJvcGVydGllc109XCJkaXNwbGF5RGVmYXVsdFByb3BlcnRpZXNcIlxuICAgICAgICAgICAgW2V4cGFuZGVkXT1cImV4cGFuZGVkXCJcbiAgICAgICAgICAgIFtub2RlXT1cIm5vZGVcIlxuICAgICAgICAgICAgW2Rpc3BsYXlFbXB0eV09XCJkaXNwbGF5RW1wdHlcIlxuICAgICAgICAgICAgW3JlYWRPbmx5XT1cIiFlZGl0YWJsZVwiXG4gICAgICAgICAgICBbbXVsdGldPVwibXVsdGlcIlxuICAgICAgICAgICAgW2Rpc3BsYXlBc3BlY3RdPVwiZGlzcGxheUFzcGVjdFwiXG4gICAgICAgICAgICBbcHJlc2V0XT1cInByZXNldFwiXG4gICAgICAgICAgICBbZGlzcGxheVRhZ3NdPVwiZGlzcGxheVRhZ3NcIlxuICAgICAgICAgICAgW2Rpc3BsYXlDYXRlZ29yaWVzXT1cImRpc3BsYXlDYXRlZ29yaWVzXCJcbiAgICAgICAgICAgIFtjdXN0b21QYW5lbHNdPVwiY3VzdG9tUGFuZWxzXCIgLz5cbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gICAgPG1hdC1jYXJkLWZvb3RlciBjbGFzcz1cImFkZi1jb250ZW50LW1ldGFkYXRhLWNhcmQtZm9vdGVyIGFkZi1jb250ZW50LW1ldGFkYXRhLWNhcmQtdmlldy1mb290ZXJcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpc0VkaXRBc3BlY3RTdXBwb3J0ZWQoKVwiXG4gICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5Bc3BlY3REaWFsb2coKVwiXG4gICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiJ0NPUkUuTUVUQURBVEEuQUNUSU9OUy5FRElUX0FTUEVDVFMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidDT1JFLk1FVEFEQVRBLkFDQ0VTU0lCSUxJVFkuRURJVF9BU1BFQ1RTJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwibWV0YS1kYXRhLWNhcmQtZWRpdC1hc3BlY3RcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+bWVudTwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9tYXQtY2FyZC1mb290ZXI+XG48L21hdC1jYXJkPlxuIl19
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1tZXRhZGF0YS1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvY29udGVudC1tZXRhZGF0YS9jb21wb25lbnRzL2NvbnRlbnQtbWV0YWRhdGEtY2FyZC9jb250ZW50LW1ldGFkYXRhLWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvbnRlbnQtc2VydmljZXMvc3JjL2xpYi9jb250ZW50LW1ldGFkYXRhL2NvbXBvbmVudHMvY29udGVudC1tZXRhZGF0YS1jYXJkL2NvbnRlbnQtbWV0YWRhdGEtY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBNEIsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBRXRGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQzNHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1B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Szt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBT3pCLFFBQVE7c0JBRFAsS0FBSztnQkFRTixLQUFLO3NCQURKLEtBQUs7Z0JBS04sUUFBUTtzQkFEUCxLQUFLO2dCQUtOLFlBQVk7c0JBRFgsS0FBSztnQkFTRix3QkFBd0I7c0JBRDNCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vZGUgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IE5vZGVBc3BlY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXNwZWN0LWxpc3Qvc2VydmljZXMvbm9kZS1hc3BlY3Quc2VydmljZSc7XG5pbXBvcnQgeyBDb250ZW50TWV0YWRhdGFDdXN0b21QYW5lbCwgUHJlc2V0Q29uZmlnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jb250ZW50LW1ldGFkYXRhLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgVmVyc2lvbkNvbXBhdGliaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdmVyc2lvbi1jb21wYXRpYmlsaXR5L3ZlcnNpb24tY29tcGF0aWJpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3NlcnZpY2VzL2NvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBBbGxvd2FibGVPcGVyYXRpb25zRW51bSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9tb2RlbHMvYWxsb3dhYmxlLW9wZXJhdGlvbnMuZW51bSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0Q2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xuaW1wb3J0IHsgQ29udGVudE1ldGFkYXRhQ29tcG9uZW50IH0gZnJvbSAnLi4vY29udGVudC1tZXRhZGF0YS9jb250ZW50LW1ldGFkYXRhLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWNvbnRlbnQtbWV0YWRhdGEtY2FyZCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRDYXJkTW9kdWxlLCBDb250ZW50TWV0YWRhdGFDb21wb25lbnQsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29udGVudC1tZXRhZGF0YS1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb250ZW50LW1ldGFkYXRhLWNhcmQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHsgY2xhc3M6ICdhZGYtY29udGVudC1tZXRhZGF0YS1jYXJkJyB9XG59KVxuZXhwb3J0IGNsYXNzIENvbnRlbnRNZXRhZGF0YUNhcmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIC8qKiAocmVxdWlyZWQpIFRoZSBub2RlIGVudGl0eSB0byBmZXRjaCBtZXRhZGF0YSBhYm91dCAqL1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gICAgbm9kZTogTm9kZTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZmxhZyBkaXNwbGF5cy9oaWRlcyBlbXB0eSBtZXRhZGF0YVxuICAgICAqIGZpZWxkcy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlFbXB0eT86IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZmxhZyBkaXNwbGF5cyBkZXNpcmVkIGFzcGVjdCB3aGVuIG9wZW4gZm9yIHRoZSBmaXJzdCB0aW1lIGZpZWxkcy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlBc3BlY3Q/OiBzdHJpbmcgPSBudWxsO1xuXG4gICAgLyoqIERpc3BsYXkgdGFncyBpbiB0aGUgY2FyZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheVRhZ3MgPSB0cnVlO1xuXG4gICAgLyoqIERpc3BsYXkgY2F0ZWdvcmllcyBpbiB0aGUgY2FyZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheUNhdGVnb3JpZXMgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogTmFtZSBvciBjb25maWd1cmF0aW9uIG9mIHRoZSBtZXRhZGF0YSBwcmVzZXQsIHdoaWNoIGRlZmluZXMgYXNwZWN0c1xuICAgICAqIGFuZCB0aGVpciBwcm9wZXJ0aWVzLlxuICAgICAqL1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gICAgcHJlc2V0OiBzdHJpbmcgfCBQcmVzZXRDb25maWc7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZsYWcgc2V0cyB0aGUgbWV0YWRhdGEgaW4gcmVhZCBvbmx5IG1vZGUgcHJldmVudGluZyBjaGFuZ2VzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVhZE9ubHk/ID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZsYWcgYWxsb3dzIHRoZSBjb21wb25lbnQgdG8gZGlzcGxheSBtb3JlXG4gICAgICogdGhhbiBvbmUgYWNjb3JkaW9uIGF0IGEgdGltZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG11bHRpPyA9IGZhbHNlO1xuXG4gICAgLyoqIFRoaXMgZmxhZyB0b2dnbGVzIGVkaXRhYmxlIG9mIGNvbnRlbnQuICovXG4gICAgQElucHV0KClcbiAgICBlZGl0YWJsZT8gPSBmYWxzZTtcblxuICAgIC8qKiBMaXN0IG9mIGN1c3RvbSBtZXRhZGF0YSBwYW5lbHMgdG8gYmUgZGlzcGxheWVkIHdpdGggcmVnaXN0ZXJlZCBjdXN0b20gY29tcG9uZW50cyAqL1xuICAgIEBJbnB1dCgpXG4gICAgY3VzdG9tUGFuZWxzOiBDb250ZW50TWV0YWRhdGFDdXN0b21QYW5lbFtdO1xuXG4gICAgcHJpdmF0ZSBfZGlzcGxheURlZmF1bHRQcm9wZXJ0aWVzOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZmxhZyBkaXNwbGF5cy9oaWRlcyB0aGUgbWV0YWRhdGEgcHJvcGVydGllcy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBkaXNwbGF5RGVmYXVsdFByb3BlcnRpZXModmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZGlzcGxheURlZmF1bHRQcm9wZXJ0aWVzID0gdmFsdWU7XG4gICAgICAgIHRoaXMub25EaXNwbGF5RGVmYXVsdFByb3BlcnRpZXNDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICBnZXQgZGlzcGxheURlZmF1bHRQcm9wZXJ0aWVzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGxheURlZmF1bHRQcm9wZXJ0aWVzO1xuICAgIH1cblxuICAgIGV4cGFuZGVkOiBib29sZWFuO1xuXG4gICAgZWRpdEFzcGVjdFN1cHBvcnRlZCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgY29udGVudFNlcnZpY2U6IENvbnRlbnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG5vZGVBc3BlY3RTZXJ2aWNlOiBOb2RlQXNwZWN0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB2ZXJzaW9uQ29tcGF0aWJpbGl0eVNlcnZpY2U6IFZlcnNpb25Db21wYXRpYmlsaXR5U2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLmVkaXRBc3BlY3RTdXBwb3J0ZWQgPSB0aGlzLnZlcnNpb25Db21wYXRpYmlsaXR5U2VydmljZS5pc1ZlcnNpb25TdXBwb3J0ZWQoJzcnKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmRpc3BsYXlBc3BlY3Q/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5leHBhbmRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRpc3BsYXlEZWZhdWx0UHJvcGVydGllc0NoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5leHBhbmRlZCA9ICF0aGlzLl9kaXNwbGF5RGVmYXVsdFByb3BlcnRpZXM7XG4gICAgfVxuXG4gICAgaGFzQWxsb3dhYmxlT3BlcmF0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudFNlcnZpY2UuaGFzQWxsb3dhYmxlT3BlcmF0aW9ucyh0aGlzLm5vZGUsIEFsbG93YWJsZU9wZXJhdGlvbnNFbnVtLlVQREFURSk7XG4gICAgfVxuXG4gICAgb3BlbkFzcGVjdERpYWxvZygpIHtcbiAgICAgICAgdGhpcy5ub2RlQXNwZWN0U2VydmljZS51cGRhdGVOb2RlQXNwZWN0cyh0aGlzLm5vZGUuaWQpO1xuICAgIH1cblxuICAgIGlzRWRpdEFzcGVjdFN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnJlYWRPbmx5ICYmIHRoaXMuaGFzQWxsb3dhYmxlT3BlcmF0aW9ucygpICYmIHRoaXMuZWRpdEFzcGVjdFN1cHBvcnRlZDtcbiAgICB9XG59XG4iLCI8bWF0LWNhcmQgYXBwZWFyYW5jZT1cIm91dGxpbmVkXCIgKm5nSWY9XCJub2RlXCIgY2xhc3M9XCJhZGYtY29udGVudC1tZXRhZGF0YS1jYXJkLXZpZXdcIj5cbiAgICA8bWF0LWNhcmQtY29udGVudCBjbGFzcz1cImFkZi1jb250ZW50LW1ldGFkYXRhLWNhcmQtdmlldy1jb250ZW50XCI+XG4gICAgICAgIDxhZGYtY29udGVudC1tZXRhZGF0YVxuICAgICAgICAgICAgW2Rpc3BsYXlEZWZhdWx0UHJvcGVydGllc109XCJkaXNwbGF5RGVmYXVsdFByb3BlcnRpZXNcIlxuICAgICAgICAgICAgW2V4cGFuZGVkXT1cImV4cGFuZGVkXCJcbiAgICAgICAgICAgIFtub2RlXT1cIm5vZGVcIlxuICAgICAgICAgICAgW2Rpc3BsYXlFbXB0eV09XCJkaXNwbGF5RW1wdHlcIlxuICAgICAgICAgICAgW3JlYWRPbmx5XT1cIiFlZGl0YWJsZVwiXG4gICAgICAgICAgICBbbXVsdGldPVwibXVsdGlcIlxuICAgICAgICAgICAgW2Rpc3BsYXlBc3BlY3RdPVwiZGlzcGxheUFzcGVjdFwiXG4gICAgICAgICAgICBbcHJlc2V0XT1cInByZXNldFwiXG4gICAgICAgICAgICBbZGlzcGxheVRhZ3NdPVwiZGlzcGxheVRhZ3NcIlxuICAgICAgICAgICAgW2Rpc3BsYXlDYXRlZ29yaWVzXT1cImRpc3BsYXlDYXRlZ29yaWVzXCJcbiAgICAgICAgICAgIFtjdXN0b21QYW5lbHNdPVwiY3VzdG9tUGFuZWxzXCIgLz5cbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gICAgPG1hdC1jYXJkLWZvb3RlciBjbGFzcz1cImFkZi1jb250ZW50LW1ldGFkYXRhLWNhcmQtZm9vdGVyIGFkZi1jb250ZW50LW1ldGFkYXRhLWNhcmQtdmlldy1mb290ZXJcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpc0VkaXRBc3BlY3RTdXBwb3J0ZWQoKVwiXG4gICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5Bc3BlY3REaWFsb2coKVwiXG4gICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiJ0NPUkUuTUVUQURBVEEuQUNUSU9OUy5FRElUX0FTUEVDVFMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidDT1JFLk1FVEFEQVRBLkFDQ0VTU0lCSUxJVFkuRURJVF9BU1BFQ1RTJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwibWV0YS1kYXRhLWNhcmQtZWRpdC1hc3BlY3RcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+bWVudTwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9tYXQtY2FyZC1mb290ZXI+XG48L21hdC1jYXJkPlxuIl19