@alauda-fe/common 1.3.0 → 1.3.1

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 (508) hide show
  1. package/api/helpers.d.ts +8 -16
  2. package/array-form-table/form/component.d.ts +1 -1
  3. package/business/resource-select/internals/namespace-list/component.d.ts +3 -1
  4. package/business/resource-select/module.d.ts +2 -1
  5. package/core/components/tree/toggle.d.ts +3 -3
  6. package/core/constants/constants.d.ts +4 -1
  7. package/core/constants/patterns.d.ts +8 -0
  8. package/core/constants/status-icons.d.ts +2 -1
  9. package/core/services/encode-url-param.interceptor.d.ts +12 -0
  10. package/core/services/public-api.d.ts +1 -0
  11. package/core/services/time.service.d.ts +1 -0
  12. package/core/types/k8s/crd.d.ts +11 -5
  13. package/core/types/k8s/raw.d.ts +25 -38
  14. package/core/types/resource-definitions.d.ts +57 -71
  15. package/core/utils/common.d.ts +5 -11
  16. package/core/utils/disabled-state.d.ts +20 -0
  17. package/core/utils/public-api.d.ts +2 -0
  18. package/core/utils/workload.d.ts +66 -0
  19. package/esm2022/abnormal-page/abnormal-page.component.mjs +5 -4
  20. package/esm2022/abnormal-page/abnormal-page.module.mjs +2 -2
  21. package/esm2022/api/acp-common-api.service.mjs +3 -3
  22. package/esm2022/api/api-compatible.interceptor.mjs +1 -1
  23. package/esm2022/api/api-gateway.interceptor.mjs +3 -3
  24. package/esm2022/api/api-gateway.service.mjs +2 -2
  25. package/esm2022/api/cluster-version.service.mjs +3 -3
  26. package/esm2022/api/crypto.interceptor.mjs +4 -4
  27. package/esm2022/api/helpers.mjs +1 -1
  28. package/esm2022/api/k8s-api-resource.service.mjs +4 -4
  29. package/esm2022/api/k8s-api.service.mjs +6 -6
  30. package/esm2022/api/page-visibility.service.mjs +2 -2
  31. package/esm2022/api/platform-ui.service.mjs +2 -2
  32. package/esm2022/api/product.service.mjs +3 -3
  33. package/esm2022/api/project-api.service.mjs +3 -3
  34. package/esm2022/api/resource-update.service.mjs +3 -3
  35. package/esm2022/array-form-table/base-string-map-form.component.mjs +3 -3
  36. package/esm2022/array-form-table/form/component.mjs +104 -111
  37. package/esm2022/array-form-table/form/module.mjs +2 -2
  38. package/esm2022/array-form-table/key-value-form/component.mjs +53 -58
  39. package/esm2022/array-form-table/key-value-table/component.mjs +7 -7
  40. package/esm2022/array-form-table/string-array-form/component.mjs +48 -52
  41. package/esm2022/async-data/async-data-loader.mjs +1 -1
  42. package/esm2022/async-data/async-data.module.mjs +2 -2
  43. package/esm2022/async-data/error-page/component.mjs +21 -22
  44. package/esm2022/async-data/page-state/component.mjs +16 -15
  45. package/esm2022/authorization/app-init-url.mjs +1 -1
  46. package/esm2022/authorization/guard.service.mjs +4 -4
  47. package/esm2022/authorization/interceptor.service.mjs +4 -4
  48. package/esm2022/authorization/session-manage.service.mjs +5 -5
  49. package/esm2022/authorization/state.service.mjs +2 -2
  50. package/esm2022/authorization/storage-token.mjs +2 -2
  51. package/esm2022/business/module-info/api.service.mjs +3 -3
  52. package/esm2022/business/notification-disabled-container/component.mjs +14 -14
  53. package/esm2022/business/resource-select/base-list.mjs +3 -3
  54. package/esm2022/business/resource-select/context.service.mjs +3 -3
  55. package/esm2022/business/resource-select/exports/cluster-selector/component.mjs +22 -20
  56. package/esm2022/business/resource-select/exports/mesh-group-selector/component.mjs +22 -20
  57. package/esm2022/business/resource-select/exports/namespace-page/component.mjs +6 -5
  58. package/esm2022/business/resource-select/exports/namespace-selector/component.mjs +37 -35
  59. package/esm2022/business/resource-select/exports/project-page/component.mjs +6 -5
  60. package/esm2022/business/resource-select/exports/project-selector/component.mjs +23 -22
  61. package/esm2022/business/resource-select/helpers.directive.mjs +2 -2
  62. package/esm2022/business/resource-select/internals/cluster-list/component.mjs +7 -6
  63. package/esm2022/business/resource-select/internals/data-grid/component.mjs +173 -176
  64. package/esm2022/business/resource-select/internals/icon/component.mjs +3 -2
  65. package/esm2022/business/resource-select/internals/meshgroup-list/component.mjs +5 -4
  66. package/esm2022/business/resource-select/internals/namespace-list/component.mjs +145 -100
  67. package/esm2022/business/resource-select/internals/no-data/component.mjs +12 -14
  68. package/esm2022/business/resource-select/internals/project-list/component.mjs +5 -4
  69. package/esm2022/business/resource-select/internals/resource-dashboard/component.mjs +7 -6
  70. package/esm2022/business/resource-select/internals/selector-popup/component.mjs +6 -5
  71. package/esm2022/business/resource-select/internals/selector-popup/ref.mjs +1 -1
  72. package/esm2022/business/resource-select/internals/selector-popup/service.mjs +3 -3
  73. package/esm2022/business/resource-select/module.mjs +17 -14
  74. package/esm2022/business/resource-select/project.service.mjs +3 -3
  75. package/esm2022/business/resource-select/utils.mjs +1 -1
  76. package/esm2022/chart/chart.module.mjs +2 -2
  77. package/esm2022/chart/chart.service.mjs +4 -4
  78. package/esm2022/chart/common/axis/axis-label.component.mjs +4 -3
  79. package/esm2022/chart/common/axis/x-axis-ticks.component.mjs +27 -27
  80. package/esm2022/chart/common/axis/x-axis.component.mjs +6 -5
  81. package/esm2022/chart/common/axis/x-plot-lines.component.mjs +7 -6
  82. package/esm2022/chart/common/axis/y-axis-ticks.component.mjs +35 -35
  83. package/esm2022/chart/common/axis/y-axis.component.mjs +9 -8
  84. package/esm2022/chart/common/axis/y-plot-lines.component.mjs +6 -5
  85. package/esm2022/chart/common/chart/chart.component.mjs +41 -43
  86. package/esm2022/chart/common/legend/legend.component.mjs +62 -65
  87. package/esm2022/chart/common/range-area/range-area.component.mjs +13 -11
  88. package/esm2022/chart/common/reference-area/reference-area.component.mjs +4 -3
  89. package/esm2022/chart/common/series/area-series.component.mjs +15 -14
  90. package/esm2022/chart/common/series/bar-path.component.mjs +20 -21
  91. package/esm2022/chart/common/series/bar-series.component.mjs +8 -7
  92. package/esm2022/chart/common/series/line-series.component.mjs +7 -6
  93. package/esm2022/chart/common/series/series.component.mjs +3 -3
  94. package/esm2022/chart/common/tooltip/tooltip.component.mjs +73 -81
  95. package/esm2022/chart/custom-template/dropdown-legend.mjs +23 -25
  96. package/esm2022/chart/utils.mjs +1 -1
  97. package/esm2022/code/code-display-dialog/component.mjs +9 -8
  98. package/esm2022/code/code-editor-configs.mjs +2 -2
  99. package/esm2022/code/code.module.mjs +2 -2
  100. package/esm2022/code/k8s-yaml-display-dialog/component.mjs +9 -8
  101. package/esm2022/code/resource-yaml-display/component.mjs +21 -22
  102. package/esm2022/core/abstract/base-form-container.mjs +3 -3
  103. package/esm2022/core/abstract/base-nested-form-control.mjs +5 -5
  104. package/esm2022/core/components/tree/module.mjs +2 -2
  105. package/esm2022/core/components/tree/node/component.mjs +7 -6
  106. package/esm2022/core/components/tree/outlet.mjs +4 -4
  107. package/esm2022/core/components/tree/padding.mjs +6 -6
  108. package/esm2022/core/components/tree/toggle.mjs +9 -9
  109. package/esm2022/core/components/tree/tree/component.mjs +4 -3
  110. package/esm2022/core/constants/constants.mjs +4 -1
  111. package/esm2022/core/constants/patterns.mjs +10 -1
  112. package/esm2022/core/constants/status-icons.mjs +2 -1
  113. package/esm2022/core/constants/tokens.mjs +1 -1
  114. package/esm2022/core/directives/aui-code-editor.directive.mjs +3 -3
  115. package/esm2022/core/directives/click-outside.directive.mjs +4 -4
  116. package/esm2022/core/directives/declare.directive.mjs +2 -2
  117. package/esm2022/core/directives/disabled.directive.mjs +4 -4
  118. package/esm2022/core/directives/feature-gate.directive.mjs +4 -4
  119. package/esm2022/core/directives/intercept-deactivate.directive.mjs +4 -4
  120. package/esm2022/core/directives/last-form-item.directive.mjs +3 -3
  121. package/esm2022/core/directives/page-header-content.directive.mjs +3 -3
  122. package/esm2022/core/directives/readonly-field.directive.mjs +8 -7
  123. package/esm2022/core/directives/resize.directive.mjs +3 -3
  124. package/esm2022/core/directives/scroll-border-observer.directive.mjs +4 -4
  125. package/esm2022/core/directives/scroll-to-first-invalid.directive.mjs +5 -5
  126. package/esm2022/core/guards/feature.guard.mjs +4 -4
  127. package/esm2022/core/guards/intercept-deactivate.guard.mjs +3 -3
  128. package/esm2022/core/guards/leave-edit-page.guard.mjs +3 -3
  129. package/esm2022/core/guards/project-namespace.guard.mjs +5 -5
  130. package/esm2022/core/module.mjs +2 -2
  131. package/esm2022/core/pipes/calc.pipe.mjs +2 -2
  132. package/esm2022/core/pipes/cron-human-readable.pipe.mjs +2 -2
  133. package/esm2022/core/pipes/crontab-next.pipe.mjs +3 -3
  134. package/esm2022/core/pipes/duration.pipe.mjs +3 -3
  135. package/esm2022/core/pipes/field-not-available.pipe.mjs +2 -2
  136. package/esm2022/core/pipes/img-header.pipe.mjs +2 -2
  137. package/esm2022/core/pipes/img-theme.pipe.mjs +3 -3
  138. package/esm2022/core/pipes/k8s-util.pipe.mjs +24 -24
  139. package/esm2022/core/pipes/k8s-util.pipe.module.mjs +2 -2
  140. package/esm2022/core/pipes/keyvalue.pipe.mjs +3 -3
  141. package/esm2022/core/pipes/marked.pipe.mjs +2 -2
  142. package/esm2022/core/pipes/minimum-format.pipe.mjs +3 -3
  143. package/esm2022/core/pipes/page-env.pipe.mjs +5 -5
  144. package/esm2022/core/pipes/parse-json-translate.pipe.mjs +3 -3
  145. package/esm2022/core/pipes/parse-json.pipe.mjs +2 -2
  146. package/esm2022/core/pipes/pure.pipe.mjs +2 -2
  147. package/esm2022/core/pipes/pure.pipe.module.mjs +2 -2
  148. package/esm2022/core/pipes/safe.pipe.mjs +3 -3
  149. package/esm2022/core/pipes/sanitize.pipe.mjs +3 -3
  150. package/esm2022/core/pipes/time.pipe.mjs +9 -9
  151. package/esm2022/core/pipes/timezone-display.pipe.mjs +2 -2
  152. package/esm2022/core/services/aui-paginator-intl.service.mjs +3 -3
  153. package/esm2022/core/services/aui-tooltip-copy-intl.service.mjs +3 -3
  154. package/esm2022/core/services/context.service.mjs +4 -4
  155. package/esm2022/core/services/custom-code-editor-intl.service.mjs +3 -3
  156. package/esm2022/core/services/encode-url-param.interceptor.mjs +32 -0
  157. package/esm2022/core/services/feature-gate.service.mjs +3 -3
  158. package/esm2022/core/services/form-row-duplicate/form-row-duplicate.service.mjs +3 -3
  159. package/esm2022/core/services/intercept-deactivate.service.mjs +3 -3
  160. package/esm2022/core/services/k8s-util.service.mjs +3 -3
  161. package/esm2022/core/services/on-resize.service.mjs +5 -5
  162. package/esm2022/core/services/public-api.mjs +2 -1
  163. package/esm2022/core/services/silently-navigate.service.mjs +3 -3
  164. package/esm2022/core/services/time.service.mjs +4 -3
  165. package/esm2022/core/services/ui-state.service.mjs +2 -2
  166. package/esm2022/core/services/workspace-helper.service.mjs +2 -2
  167. package/esm2022/core/services/yaml-util.service.mjs +4 -4
  168. package/esm2022/core/types/k8s/crd.mjs +1 -1
  169. package/esm2022/core/types/k8s/raw.mjs +1 -1
  170. package/esm2022/core/types/resource-definitions.mjs +42 -65
  171. package/esm2022/core/utils/cache-store.mjs +1 -1
  172. package/esm2022/core/utils/common.mjs +3 -2
  173. package/esm2022/core/utils/create-recursive-filter.mjs +1 -1
  174. package/esm2022/core/utils/cron-util.mjs +1 -1
  175. package/esm2022/core/utils/decorators.mjs +1 -1
  176. package/esm2022/core/utils/disabled-state.mjs +47 -0
  177. package/esm2022/core/utils/format-number.mjs +1 -1
  178. package/esm2022/core/utils/k8s-util.mjs +1 -1
  179. package/esm2022/core/utils/observable.mjs +1 -1
  180. package/esm2022/core/utils/operators.mjs +1 -1
  181. package/esm2022/core/utils/public-api.mjs +3 -1
  182. package/esm2022/core/utils/request-pool.mjs +1 -1
  183. package/esm2022/core/utils/resources.mjs +1 -1
  184. package/esm2022/core/utils/sort-fn.mjs +1 -1
  185. package/esm2022/core/utils/tree.mjs +1 -1
  186. package/esm2022/core/utils/unit.mjs +1 -1
  187. package/esm2022/core/utils/version.mjs +1 -1
  188. package/esm2022/core/utils/workload.mjs +183 -0
  189. package/esm2022/core/utils/workspace.mjs +1 -1
  190. package/esm2022/core/utils/yaml.mjs +1 -1
  191. package/esm2022/custom-columns-setting/component.mjs +30 -23
  192. package/esm2022/disabled-container/disabled-container.component.mjs +4 -3
  193. package/esm2022/disabled-container/disabled-container.module.mjs +2 -2
  194. package/esm2022/editable-text/component.mjs +14 -12
  195. package/esm2022/editable-text/module.mjs +2 -2
  196. package/esm2022/effect-directive/coerce-number.directive.mjs +4 -4
  197. package/esm2022/effect-directive/e2e-attribute-binding.directive.mjs +3 -3
  198. package/esm2022/effect-directive/event.directive.mjs +3 -3
  199. package/esm2022/effect-directive/min-max.directive.mjs +3 -3
  200. package/esm2022/effect-directive/module.mjs +2 -2
  201. package/esm2022/effect-directive/trim.directive.mjs +3 -3
  202. package/esm2022/effect-directive/validators.directive.mjs +3 -3
  203. package/esm2022/exec/module.mjs +2 -2
  204. package/esm2022/exec/placeholder/component.mjs +4 -3
  205. package/esm2022/exec/service.mjs +3 -3
  206. package/esm2022/exec/terminal/component.mjs +77 -69
  207. package/esm2022/exec/terminal-group/component.mjs +42 -44
  208. package/esm2022/feature-gate-forbidden/component/component.mjs +9 -8
  209. package/esm2022/feature-gate-forbidden/module.mjs +2 -2
  210. package/esm2022/form/directives/value-trace.directive.mjs +4 -4
  211. package/esm2022/form/errors-mapper/base-errors-mapper.mjs +3 -3
  212. package/esm2022/form/errors-mapper/default-errors-mapper.service.mjs +3 -3
  213. package/esm2022/form/errors-mapper/errors-mapper-component/component.mjs +6 -5
  214. package/esm2022/form/errors-mapper/errors-mapper.directive.mjs +7 -6
  215. package/esm2022/form/errors-mapper/errors-mapper.module.mjs +2 -2
  216. package/esm2022/form/labels-editor/component.mjs +36 -36
  217. package/esm2022/form/taints-editor/component.mjs +42 -42
  218. package/esm2022/form/upload-file/component.mjs +9 -7
  219. package/esm2022/form/utils.mjs +1 -1
  220. package/esm2022/form/validators/async-function-validator.directive.mjs +4 -3
  221. package/esm2022/form/validators/dns1123-subdomain.mjs +1 -1
  222. package/esm2022/form/validators/function-validator.directive.mjs +4 -3
  223. package/esm2022/form/validators/maxlength-minlength-validator.directive.mjs +9 -7
  224. package/esm2022/form/validators/module.mjs +7 -8
  225. package/esm2022/form/validators/not-be-validator.directive.mjs +4 -3
  226. package/esm2022/form/validators/one-of-validator.directive.mjs +4 -3
  227. package/esm2022/form/validators/resource-limit.mjs +1 -1
  228. package/esm2022/form/validators/strong-password/strong-password-tooltip/component.mjs +30 -28
  229. package/esm2022/form/validators/strong-password/strong-password-validator.directive.mjs +3 -3
  230. package/esm2022/form/validators/strong-password/strong-password-validator.module.mjs +6 -7
  231. package/esm2022/form/validators/utils.mjs +1 -1
  232. package/esm2022/graph-canvas/components/graph-actions.component.mjs +3 -2
  233. package/esm2022/graph-canvas/components/graph-canvas.component.mjs +25 -23
  234. package/esm2022/graph-canvas/components/graph-link.component.mjs +12 -13
  235. package/esm2022/graph-canvas/components/graph-links.component.mjs +3 -2
  236. package/esm2022/graph-canvas/components/graph-node.directive.mjs +4 -4
  237. package/esm2022/graph-canvas/graph-canvas.module.mjs +2 -2
  238. package/esm2022/graph-canvas/graph-store.service.mjs +2 -2
  239. package/esm2022/grid-layout/components/grid/component.mjs +5 -4
  240. package/esm2022/grid-layout/components/grid-items/component.mjs +8 -7
  241. package/esm2022/grid-layout/directives/drag-handler.directive.mjs +3 -3
  242. package/esm2022/grid-layout/directives/placeholder.directive.mjs +3 -3
  243. package/esm2022/grid-layout/directives/remove-handler.directive.mjs +3 -3
  244. package/esm2022/grid-layout/directives/resize-handler.directive.mjs +3 -3
  245. package/esm2022/grid-layout/grid-layout.service.mjs +2 -2
  246. package/esm2022/grid-layout/grid-placeholder.service.mjs +3 -3
  247. package/esm2022/grid-layout/module.mjs +2 -2
  248. package/esm2022/grid-layout/utils/grid.utils.mjs +1 -1
  249. package/esm2022/grid-layout/utils/react-grid-layout.utils.mjs +1 -1
  250. package/esm2022/grid-layout/utils/scroll.utils.mjs +1 -1
  251. package/esm2022/help-document/component.mjs +18 -16
  252. package/esm2022/help-document/directive.mjs +4 -4
  253. package/esm2022/help-document/module.mjs +2 -2
  254. package/esm2022/help-document/service.mjs +4 -4
  255. package/esm2022/iframe-config/config.service.mjs +3 -3
  256. package/esm2022/k8s-resource-list/footer/component.mjs +53 -51
  257. package/esm2022/k8s-resource-list/k8s-resource-list.mjs +3 -6
  258. package/esm2022/k8s-resource-list/k8s-resource-list.module.mjs +2 -2
  259. package/esm2022/k8s-resource-list/k8s-resource-paged-list.mjs +1 -1
  260. package/esm2022/k8s-resource-list/utils.mjs +1 -1
  261. package/esm2022/k8s-shared/constants.mjs +53 -0
  262. package/esm2022/k8s-shared/k8s-resource-translate-key.pipe.mjs +30 -0
  263. package/esm2022/k8s-shared/k8s-shared-util.service.mjs +3 -3
  264. package/esm2022/k8s-shared/public-api.mjs +2 -1
  265. package/esm2022/k8s-shared/update-description-dialog/component.mjs +10 -9
  266. package/esm2022/k8s-shared/update-display-name-dialog/component.mjs +22 -20
  267. package/esm2022/k8s-shared/update-key-value-dialog/component.mjs +13 -11
  268. package/esm2022/lazy-component/lazy-load-component.mjs +25 -26
  269. package/esm2022/lazy-component/visibility.service.mjs +2 -2
  270. package/esm2022/license/license-api.mjs +3 -3
  271. package/esm2022/license/license-error/component.mjs +25 -25
  272. package/esm2022/license/license-error/module.mjs +2 -2
  273. package/esm2022/license/license.guard.mjs +4 -4
  274. package/esm2022/license/license.service.mjs +4 -4
  275. package/esm2022/list-display/component.mjs +39 -40
  276. package/esm2022/metric-chart/common-chart.service.mjs +3 -3
  277. package/esm2022/metric-chart/helpers.mjs +1 -1
  278. package/esm2022/metric-chart/metric-chart.component.mjs +6 -5
  279. package/esm2022/metric-chart/metric-chart.module.mjs +2 -2
  280. package/esm2022/metric-chart/metric-time-pick.mjs +20 -17
  281. package/esm2022/metric-chart/utils.mjs +1 -1
  282. package/esm2022/multi-search/action-input/component.mjs +180 -181
  283. package/esm2022/multi-search/form/component.mjs +26 -22
  284. package/esm2022/multi-search/multi-search-tags/component.mjs +33 -31
  285. package/esm2022/mutable/element.mjs +1 -1
  286. package/esm2022/mutable/mosaic/mosaic.component.mjs +6 -5
  287. package/esm2022/mutable/mosaic/mosaic.directive.mjs +3 -3
  288. package/esm2022/mutable/mutable.directive.mjs +4 -4
  289. package/esm2022/mutable/mutable.module.mjs +2 -2
  290. package/esm2022/notification/feedback-notification/component.mjs +22 -23
  291. package/esm2022/notification/notification-util.service.mjs +3 -3
  292. package/esm2022/notification/resource-error.interceptor.mjs +3 -3
  293. package/esm2022/overview-banner/overview-banner.component.mjs +3 -2
  294. package/esm2022/overview-banner/overview-banner.module.mjs +2 -2
  295. package/esm2022/page-guard/component/component.mjs +70 -78
  296. package/esm2022/page-guard/component/helper-directives.mjs +5 -5
  297. package/esm2022/page-guard/module.mjs +2 -2
  298. package/esm2022/page-scaffold/module.mjs +2 -2
  299. package/esm2022/page-scaffold/navigation/breadcrumb/breadcrumb-slot.directive.mjs +3 -3
  300. package/esm2022/page-scaffold/navigation/breadcrumb/breadcrumb.component.mjs +177 -88
  301. package/esm2022/page-scaffold/navigation/breadcrumb/breadcrumb.service.mjs +2 -2
  302. package/esm2022/page-scaffold/navigation/breadcrumb/module.mjs +2 -2
  303. package/esm2022/page-scaffold/navigation/lottie-icons/animation-data.mjs +1 -3
  304. package/esm2022/page-scaffold/navigation/lottie-icons/lottie-icon.directive.mjs +3 -3
  305. package/esm2022/page-scaffold/navigation/lottie-icons/module.mjs +2 -2
  306. package/esm2022/page-scaffold/navigation/lottie-icons/replace-lottie-colors.mjs +11 -11
  307. package/esm2022/page-scaffold/navigation/module.mjs +2 -2
  308. package/esm2022/page-scaffold/navigation/nav-menu/nav-item-li/nav-item-li.component.mjs +128 -99
  309. package/esm2022/page-scaffold/navigation/nav-menu/nav-item-ul/nav-item-ul.component.mjs +30 -32
  310. package/esm2022/page-scaffold/navigation/nav-menu/nav-menu.component.mjs +21 -19
  311. package/esm2022/page-scaffold/navigation/nav-menu/nav-menu.module.mjs +4 -4
  312. package/esm2022/page-scaffold/navigation/nav-menu/nav-menu.types.mjs +1 -1
  313. package/esm2022/page-scaffold/navigation/navconfig-loader/navconfig-loader.service.mjs +6 -5
  314. package/esm2022/page-scaffold/page/context.service.mjs +2 -2
  315. package/esm2022/page-scaffold/page/helper-directives.mjs +10 -10
  316. package/esm2022/page-scaffold/page/notices/maintenance.component.mjs +11 -11
  317. package/esm2022/page-scaffold/page/notices/notice.component.mjs +15 -15
  318. package/esm2022/page-scaffold/page/page.component.mjs +20 -20
  319. package/esm2022/page-scaffold/page/page.module.mjs +2 -2
  320. package/esm2022/page-scaffold/page-header/account-menu/component/component.mjs +40 -39
  321. package/esm2022/page-scaffold/page-header/account-menu/module.mjs +2 -2
  322. package/esm2022/page-scaffold/page-header/common-layout/common-layout.module.mjs +2 -2
  323. package/esm2022/page-scaffold/page-header/common-layout/context.service.mjs +4 -4
  324. package/esm2022/page-scaffold/page-header/common-layout/namespace-select/component.mjs +58 -59
  325. package/esm2022/page-scaffold/page-header/common-layout/product-select/component.mjs +64 -65
  326. package/esm2022/page-scaffold/page-header/common-layout/product-select/service.mjs +2 -2
  327. package/esm2022/page-scaffold/page-header/common-layout/project-select/base-selection.mjs +3 -3
  328. package/esm2022/page-scaffold/page-header/common-layout/store.service.mjs +3 -3
  329. package/esm2022/page-scaffold/page-header/component.mjs +24 -25
  330. package/esm2022/page-scaffold/page-header/enterprise-support-status/component.mjs +15 -14
  331. package/esm2022/page-scaffold/page-header/header-notify/component/header-notify.component.mjs +27 -27
  332. package/esm2022/page-scaffold/page-header/header-notify/component/notification-list/notification-list.component.mjs +22 -21
  333. package/esm2022/page-scaffold/page-header/header-notify/header-notify.module.mjs +2 -2
  334. package/esm2022/page-scaffold/page-header/header-notify/notify.service.mjs +5 -5
  335. package/esm2022/page-scaffold/page-header/help-menu/component/component.mjs +59 -62
  336. package/esm2022/page-scaffold/page-header/help-menu/module.mjs +2 -2
  337. package/esm2022/page-scaffold/page-header/module.mjs +2 -2
  338. package/esm2022/permission/helpers.mjs +1 -1
  339. package/esm2022/permission/k8s-permission.service.mjs +3 -3
  340. package/esm2022/permission/permission.guard.mjs +3 -3
  341. package/esm2022/pie-derivative-chart/donut-status/component.mjs +29 -28
  342. package/esm2022/pie-derivative-chart/indicator-color.directive.mjs +3 -3
  343. package/esm2022/pie-derivative-chart/numerical-limit.pipe.mjs +3 -3
  344. package/esm2022/pie-derivative-chart/pie-derivative-chart.module.mjs +2 -2
  345. package/esm2022/pie-derivative-chart/radial-bar/radial-bar-chart.component.mjs +54 -59
  346. package/esm2022/pod-status/component.mjs +167 -0
  347. package/esm2022/pod-status/public-api.mjs +4 -0
  348. package/esm2022/pod-status/status.mjs +84 -0
  349. package/esm2022/pod-status/typings.mjs +19 -0
  350. package/esm2022/public-api.mjs +3 -1
  351. package/esm2022/searchable-selector/component.mjs +73 -75
  352. package/esm2022/searchable-selector/module.mjs +2 -2
  353. package/esm2022/skeleton/item/component.mjs +4 -3
  354. package/esm2022/skeleton/module.mjs +2 -2
  355. package/esm2022/skeleton/nav-skeleton/component.mjs +8 -7
  356. package/esm2022/table/component.mjs +253 -271
  357. package/esm2022/table/helper.mjs +1 -1
  358. package/esm2022/table/helpers.directive.mjs +3 -3
  359. package/esm2022/table/module.mjs +40 -31
  360. package/esm2022/table/util.service.mjs +4 -4
  361. package/esm2022/translate/helpers.mjs +1 -1
  362. package/esm2022/translate/i18n-config.mjs +3 -8
  363. package/esm2022/translate/translate.directive.mjs +9 -9
  364. package/esm2022/translate/translate.module.mjs +2 -2
  365. package/esm2022/translate/translate.pipe.mjs +3 -3
  366. package/esm2022/translate/translate.service.mjs +4 -4
  367. package/esm2022/view-chart/custom-template/dropdown-legend.mjs +24 -26
  368. package/esm2022/view-chart/legend/legend.component.mjs +66 -70
  369. package/esm2022/view-chart/view-chart.component.mjs +90 -98
  370. package/esm2022/view-chart/view-chart.module.mjs +2 -2
  371. package/esm2022/view-zchart/custom-template/dropdown-legend.mjs +24 -26
  372. package/esm2022/view-zchart/legend/legend.component.mjs +77 -82
  373. package/esm2022/view-zchart/units.mjs +1 -1
  374. package/esm2022/view-zchart/view-zchart.component.mjs +111 -120
  375. package/esm2022/view-zchart/view-zchart.module.mjs +2 -2
  376. package/esm2022/widget/card-section/card-section.component.mjs +13 -12
  377. package/esm2022/widget/confirm-delete/confirm-delete.component.mjs +45 -46
  378. package/esm2022/widget/current-time/component.mjs +4 -3
  379. package/esm2022/widget/date-range-picker/component.mjs +42 -40
  380. package/esm2022/widget/field-set/column/component.mjs +5 -3
  381. package/esm2022/widget/field-set/group/component.mjs +3 -2
  382. package/esm2022/widget/field-set/item/component.mjs +8 -7
  383. package/esm2022/widget/foldable-block/component.mjs +25 -24
  384. package/esm2022/widget/foldable-item-in-table/component.mjs +41 -42
  385. package/esm2022/widget/loading-mask/loading-mask.component.mjs +9 -9
  386. package/esm2022/widget/password-input/component.mjs +72 -71
  387. package/esm2022/widget/relative-time/component.mjs +4 -3
  388. package/esm2022/widget/resource-multi-select/component.mjs +20 -19
  389. package/esm2022/widget/resource-multi-select/util.mjs +1 -1
  390. package/esm2022/widget/search-panel/component.mjs +3 -2
  391. package/esm2022/widget/search-panel/helper.directive.mjs +2 -2
  392. package/esm2022/widget/search-panel/search-item/component.mjs +3 -2
  393. package/esm2022/widget/select-prefix-label/directive.mjs +4 -4
  394. package/esm2022/widget/status-icon/status-icon.component.mjs +16 -15
  395. package/esm2022/widget/tags-label/component.mjs +61 -62
  396. package/esm2022/widget/terminating-tag/component.mjs +4 -3
  397. package/esm2022/widget/text-ellipsis/component.mjs +11 -11
  398. package/esm2022/widget/text-tooltip/directive.mjs +3 -3
  399. package/esm2022/widget/text-with-url/component.mjs +8 -8
  400. package/esm2022/widget/widget.module.mjs +2 -2
  401. package/esm2022/widget/zero-state/zero-state.component.mjs +17 -17
  402. package/esm2022/window-channel/base-window-channel.mjs +1 -1
  403. package/esm2022/window-channel/directives/host-link.directive.mjs +2 -2
  404. package/esm2022/window-channel/host-window-channel.service.mjs +3 -3
  405. package/esm2022/window-channel/plugin-window-channel.service.mjs +3 -3
  406. package/esm2022/workload-status-icon/component.mjs +72 -0
  407. package/esm2022/workload-status-icon/public-api.mjs +2 -0
  408. package/esm2022/xterm/xterm-terminal/xterm-terminal.component.mjs +68 -71
  409. package/esm2022/xterm/xterm-terminal/xterm-terminal.directive.mjs +3 -3
  410. package/esm2022/xterm/xterm.component.mjs +5 -4
  411. package/exec/terminal/component.d.ts +0 -1
  412. package/form/validators/async-function-validator.directive.d.ts +1 -1
  413. package/form/validators/function-validator.directive.d.ts +1 -1
  414. package/form/validators/maxlength-minlength-validator.directive.d.ts +2 -2
  415. package/form/validators/module.d.ts +8 -8
  416. package/form/validators/not-be-validator.directive.d.ts +1 -1
  417. package/form/validators/one-of-validator.directive.d.ts +1 -1
  418. package/form/validators/resource-limit.d.ts +1 -1
  419. package/form/validators/strong-password/strong-password-validator.module.d.ts +2 -2
  420. package/graph-canvas/components/graph-canvas.component.d.ts +2 -2
  421. package/k8s-resource-list/footer/component.d.ts +2 -1
  422. package/k8s-shared/constants.d.ts +7 -0
  423. package/k8s-shared/k8s-resource-translate-key.pipe.d.ts +9 -0
  424. package/k8s-shared/public-api.d.ts +1 -0
  425. package/license/license-api.d.ts +1 -1
  426. package/license/license-error/component.d.ts +1 -1
  427. package/metric-chart/helpers.d.ts +1 -1
  428. package/package.json +2 -1
  429. package/page-guard/component/component.d.ts +1 -1
  430. package/page-scaffold/navigation/breadcrumb/breadcrumb.component.d.ts +2 -0
  431. package/page-scaffold/navigation/nav-menu/nav-item-li/nav-item-li.component.d.ts +1 -0
  432. package/page-scaffold/navigation/nav-menu/nav-menu.types.d.ts +8 -1
  433. package/page-scaffold/navigation/navconfig-loader/navconfig-loader.service.d.ts +2 -1
  434. package/page-scaffold/page-header/header-notify/utils.d.ts +3 -3
  435. package/pod-status/component.d.ts +27 -0
  436. package/pod-status/public-api.d.ts +3 -0
  437. package/pod-status/status.d.ts +4 -0
  438. package/pod-status/typings.d.ts +16 -0
  439. package/public-api.d.ts +2 -0
  440. package/styles/ansi-color.scss +131 -0
  441. package/styles/global.scss +3 -1
  442. package/styles/tailwind-preset.scss +1 -1
  443. package/table/component.d.ts +2 -1
  444. package/table/module.d.ts +22 -6
  445. package/widget/zero-state/zero-state.component.d.ts +1 -1
  446. package/workload-status-icon/component.d.ts +36 -0
  447. package/workload-status-icon/public-api.d.ts +1 -0
  448. package/a-chart/a-chart.module.d.ts +0 -16
  449. package/a-chart/base-chart.d.ts +0 -24
  450. package/a-chart/chart-status.component.d.ts +0 -15
  451. package/a-chart/chart.component.d.ts +0 -56
  452. package/a-chart/components/base-component.d.ts +0 -12
  453. package/a-chart/components/legend/base-legend.component.d.ts +0 -31
  454. package/a-chart/components/legend/dropdown-legend.d.ts +0 -17
  455. package/a-chart/components/legend/legend.component.d.ts +0 -17
  456. package/a-chart/components/legend/public-api.d.ts +0 -3
  457. package/a-chart/components/public-api.d.ts +0 -3
  458. package/a-chart/components/title.component.d.ts +0 -17
  459. package/a-chart/constant.d.ts +0 -6
  460. package/a-chart/public-api.d.ts +0 -12
  461. package/a-chart/types.d.ts +0 -38
  462. package/a-chart/utils.d.ts +0 -13
  463. package/a-metric-chart/a-metric-chart.component.d.ts +0 -154
  464. package/a-metric-chart/a-metric-chart.module.d.ts +0 -16
  465. package/a-metric-chart/bar-gauge/bar-gauge.component.d.ts +0 -25
  466. package/a-metric-chart/base-chart.component.d.ts +0 -14
  467. package/a-metric-chart/metric-chart-refresh.service.d.ts +0 -8
  468. package/a-metric-chart/public-api.d.ts +0 -14
  469. package/a-metric-chart/stat-chart/stat-chart.component.d.ts +0 -11
  470. package/a-metric-chart/table-chart/table-chart.component.d.ts +0 -29
  471. package/a-metric-chart/types.d.ts +0 -130
  472. package/a-metric-chart/utils/public-api.d.ts +0 -3
  473. package/a-metric-chart/utils/range.d.ts +0 -1
  474. package/a-metric-chart/utils/unit.d.ts +0 -48
  475. package/a-metric-chart/utils/util.d.ts +0 -45
  476. package/api/monitor-api.service.d.ts +0 -104
  477. package/esm2022/a-chart/a-chart.module.mjs +0 -76
  478. package/esm2022/a-chart/base-chart.mjs +0 -98
  479. package/esm2022/a-chart/chart-status.component.mjs +0 -195
  480. package/esm2022/a-chart/chart.component.mjs +0 -307
  481. package/esm2022/a-chart/components/base-component.mjs +0 -23
  482. package/esm2022/a-chart/components/legend/base-legend.component.mjs +0 -111
  483. package/esm2022/a-chart/components/legend/dropdown-legend.mjs +0 -199
  484. package/esm2022/a-chart/components/legend/legend.component.mjs +0 -102
  485. package/esm2022/a-chart/components/legend/public-api.mjs +0 -4
  486. package/esm2022/a-chart/components/public-api.mjs +0 -4
  487. package/esm2022/a-chart/components/title.component.mjs +0 -99
  488. package/esm2022/a-chart/constant.mjs +0 -24
  489. package/esm2022/a-chart/public-api.mjs +0 -13
  490. package/esm2022/a-chart/types.mjs +0 -7
  491. package/esm2022/a-chart/utils.mjs +0 -37
  492. package/esm2022/a-metric-chart/a-metric-chart.component.mjs +0 -937
  493. package/esm2022/a-metric-chart/a-metric-chart.module.mjs +0 -74
  494. package/esm2022/a-metric-chart/bar-gauge/bar-gauge.component.mjs +0 -166
  495. package/esm2022/a-metric-chart/base-chart.component.mjs +0 -30
  496. package/esm2022/a-metric-chart/metric-chart-refresh.service.mjs +0 -18
  497. package/esm2022/a-metric-chart/public-api.mjs +0 -15
  498. package/esm2022/a-metric-chart/stat-chart/stat-chart.component.mjs +0 -122
  499. package/esm2022/a-metric-chart/table-chart/table-chart.component.mjs +0 -201
  500. package/esm2022/a-metric-chart/types.mjs +0 -26
  501. package/esm2022/a-metric-chart/utils/public-api.mjs +0 -4
  502. package/esm2022/a-metric-chart/utils/range.mjs +0 -35
  503. package/esm2022/a-metric-chart/utils/unit.mjs +0 -83
  504. package/esm2022/a-metric-chart/utils/util.mjs +0 -243
  505. package/esm2022/api/monitor-api.service.mjs +0 -158
  506. package/esm2022/notification/notification-util.module.mjs +0 -32
  507. package/esm2022/page-scaffold/navigation/lottie-icons/animations/dashboard.json +0 -1
  508. package/notification/notification-util.module.d.ts +0 -10
@@ -2,7 +2,7 @@ import { HttpClient } from '@angular/common/http';
2
2
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, TemplateRef, } from '@angular/core';
3
3
  import { memoize, partition, uniq } from 'lodash-es';
4
4
  import { ReplaySubject, combineLatest, forkJoin, of, catchError, finalize, map, startWith, switchMap, takeUntil, tap, } from 'rxjs';
5
- import { API_GATEWAY, K8sUtilService, publishRef, } from '../../../../core/public-api';
5
+ import { API_GATEWAY, K8sUtilService, publishRef, getDomainAnnotation, DISPLAY_NAME, } from '../../../../core/public-api';
6
6
  import { CommonLayoutContextService } from '../../../../page-scaffold/public-api';
7
7
  import { ResourceListBase } from '../../base-list';
8
8
  import { ResourceSelectContextService } from '../../context.service';
@@ -14,110 +14,123 @@ import * as i2 from "./../../../../api/public-api";
14
14
  import * as i3 from "@angular/common/http";
15
15
  import * as i4 from "../../context.service";
16
16
  import * as i5 from "../../../../core/public-api";
17
+ const _c0 = ["*"];
18
+ const _c1 = () => [];
19
+ const _c2 = (a0, a1) => ({ name: a0, displayName: a1 });
17
20
  function NamespaceListComponent_aui_option_6_Template(rf, ctx) { if (rf & 1) {
18
- i0.ɵɵelementStart(0, "aui-option", 6);
21
+ i0.ɵɵelementStart(0, "aui-option", 7);
19
22
  i0.ɵɵpipe(1, "aclUnionDisplayName");
20
23
  i0.ɵɵtext(2);
21
24
  i0.ɵɵpipe(3, "aclUnionDisplayName");
22
25
  i0.ɵɵelementEnd();
23
26
  } if (rf & 2) {
24
- const project_r5 = ctx.$implicit;
25
- i0.ɵɵproperty("value", project_r5)("label", i0.ɵɵpipeBind1(1, 3, project_r5));
27
+ const project_r2 = ctx.$implicit;
28
+ i0.ɵɵproperty("value", project_r2)("label", i0.ɵɵpipeBind1(1, 3, project_r2));
26
29
  i0.ɵɵadvance(2);
27
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 5, project_r5), " ");
30
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 5, project_r2), " ");
28
31
  } }
29
- function NamespaceListComponent_aui_form_item_7_aui_option_5_ng_container_4_Template(rf, ctx) { if (rf & 1) {
32
+ function NamespaceListComponent_aui_form_item_10_aui_option_5_ng_container_4_Template(rf, ctx) { if (rf & 1) {
30
33
  i0.ɵɵelementContainerStart(0);
31
34
  i0.ɵɵtext(1);
32
35
  i0.ɵɵelementContainerEnd();
33
36
  } if (rf & 2) {
34
- const mesh_r7 = i0.ɵɵnextContext().$implicit;
35
- i0.ɵɵadvance(1);
36
- i0.ɵɵtextInterpolate1("(Istio ", mesh_r7.spec.istioVersion, ")");
37
+ const mesh_r5 = i0.ɵɵnextContext().$implicit;
38
+ i0.ɵɵadvance();
39
+ i0.ɵɵtextInterpolate1(" (Istio ", mesh_r5.spec.istioVersion, ") ");
37
40
  } }
38
- function NamespaceListComponent_aui_form_item_7_aui_option_5_Template(rf, ctx) { if (rf & 1) {
39
- i0.ɵɵelementStart(0, "aui-option", 6);
41
+ function NamespaceListComponent_aui_form_item_10_aui_option_5_Template(rf, ctx) { if (rf & 1) {
42
+ i0.ɵɵelementStart(0, "aui-option", 7);
40
43
  i0.ɵɵpipe(1, "aclName");
41
44
  i0.ɵɵtext(2);
42
45
  i0.ɵɵpipe(3, "aclName");
43
- i0.ɵɵtemplate(4, NamespaceListComponent_aui_form_item_7_aui_option_5_ng_container_4_Template, 2, 1, "ng-container", 4);
46
+ i0.ɵɵtemplate(4, NamespaceListComponent_aui_form_item_10_aui_option_5_ng_container_4_Template, 2, 1, "ng-container", 5);
44
47
  i0.ɵɵelementEnd();
45
48
  } if (rf & 2) {
46
- const mesh_r7 = ctx.$implicit;
47
- i0.ɵɵproperty("value", mesh_r7)("label", i0.ɵɵpipeBind1(1, 4, mesh_r7) + ((mesh_r7.spec == null ? null : mesh_r7.spec.istioVersion) ? "(Istio " + mesh_r7.spec.istioVersion + ")" : ""));
49
+ const mesh_r5 = ctx.$implicit;
50
+ i0.ɵɵproperty("value", mesh_r5)("label", i0.ɵɵpipeBind1(1, 4, mesh_r5) + ((mesh_r5.spec == null ? null : mesh_r5.spec.istioVersion) ? " (Istio " + mesh_r5.spec.istioVersion + ")" : ""));
48
51
  i0.ɵɵadvance(2);
49
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 6, mesh_r7), "");
52
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 6, mesh_r5), " ");
50
53
  i0.ɵɵadvance(2);
51
- i0.ɵɵproperty("ngIf", mesh_r7.spec == null ? null : mesh_r7.spec.istioVersion);
54
+ i0.ɵɵproperty("ngIf", mesh_r5.spec == null ? null : mesh_r5.spec.istioVersion);
52
55
  } }
53
- function NamespaceListComponent_aui_form_item_7_Template(rf, ctx) { if (rf & 1) {
54
- const _r11 = i0.ɵɵgetCurrentView();
55
- i0.ɵɵelementStart(0, "aui-form-item")(1, "label", 1);
56
+ function NamespaceListComponent_aui_form_item_10_Template(rf, ctx) { if (rf & 1) {
57
+ const _r3 = i0.ɵɵgetCurrentView();
58
+ i0.ɵɵelementStart(0, "aui-form-item")(1, "label", 2);
56
59
  i0.ɵɵtext(2);
57
60
  i0.ɵɵpipe(3, "translate");
58
61
  i0.ɵɵelementEnd();
59
62
  i0.ɵɵelementStart(4, "aui-select", 11);
60
- i0.ɵɵlistener("ngModelChange", function NamespaceListComponent_aui_form_item_7_Template_aui_select_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r10 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r10.selectedServiceMesh = $event); })("valueChange", function NamespaceListComponent_aui_form_item_7_Template_aui_select_valueChange_4_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r12 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r12.selectServiceMesh($event)); });
61
- i0.ɵɵtemplate(5, NamespaceListComponent_aui_form_item_7_aui_option_5_Template, 5, 8, "aui-option", 3);
63
+ i0.ɵɵtwoWayListener("ngModelChange", function NamespaceListComponent_aui_form_item_10_Template_aui_select_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r3 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r3.selectedServiceMesh, $event) || (ctx_r3.selectedServiceMesh = $event); return i0.ɵɵresetView($event); });
64
+ i0.ɵɵlistener("valueChange", function NamespaceListComponent_aui_form_item_10_Template_aui_select_valueChange_4_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.selectServiceMesh($event)); });
65
+ i0.ɵɵtemplate(5, NamespaceListComponent_aui_form_item_10_aui_option_5_Template, 5, 8, "aui-option", 4);
62
66
  i0.ɵɵelementStart(6, "aui-option-placeholder");
63
67
  i0.ɵɵtext(7);
64
68
  i0.ɵɵpipe(8, "translate");
65
69
  i0.ɵɵelementEnd()()();
66
70
  } if (rf & 2) {
67
- const ctx_r1 = i0.ɵɵnextContext();
71
+ const ctx_r3 = i0.ɵɵnextContext();
68
72
  i0.ɵɵadvance(2);
69
73
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 6, "service_mesh"));
70
74
  i0.ɵɵadvance(2);
71
- i0.ɵɵproperty("ngModel", ctx_r1.selectedServiceMesh)("trackFn", ctx_r1.serviceMeshTrackFn)("loading", !ctx_r1.projects.length && ctx_r1.projectsLoading);
72
- i0.ɵɵadvance(1);
73
- i0.ɵɵproperty("ngForOf", ctx_r1.projectServiceMeshes);
75
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r3.selectedServiceMesh);
76
+ i0.ɵɵproperty("trackFn", ctx_r3.serviceMeshTrackFn)("loading", !ctx_r3.projects.length && ctx_r3.projectsLoading);
77
+ i0.ɵɵadvance();
78
+ i0.ɵɵproperty("ngForOf", ctx_r3.projectServiceMeshes);
74
79
  i0.ɵɵadvance(2);
75
80
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(8, 8, "no_data"), " ");
76
81
  } }
77
- function NamespaceListComponent_aui_option_17_ng_container_6_Template(rf, ctx) { if (rf & 1) {
82
+ function NamespaceListComponent_ng_container_20_aui_option_1_ng_container_6_Template(rf, ctx) { if (rf & 1) {
78
83
  i0.ɵɵelementContainer(0);
79
84
  } }
80
- const _c0 = function (a0) { return { cluster: a0 }; };
81
- function NamespaceListComponent_aui_option_17_Template(rf, ctx) { if (rf & 1) {
82
- i0.ɵɵelementStart(0, "aui-option", 12);
83
- i0.ɵɵpipe(1, "async");
84
- i0.ɵɵpipe(2, "pure");
85
+ function NamespaceListComponent_ng_container_20_aui_option_1_Template(rf, ctx) { if (rf & 1) {
86
+ i0.ɵɵelementStart(0, "aui-option", 13);
87
+ i0.ɵɵpipe(1, "pure");
88
+ i0.ɵɵpipe(2, "async");
85
89
  i0.ɵɵpipe(3, "translate");
86
- i0.ɵɵpipe(4, "async");
87
- i0.ɵɵpipe(5, "pure");
88
- i0.ɵɵtemplate(6, NamespaceListComponent_aui_option_17_ng_container_6_Template, 1, 0, "ng-container", 13);
90
+ i0.ɵɵpipe(4, "pure");
91
+ i0.ɵɵpipe(5, "async");
92
+ i0.ɵɵtemplate(6, NamespaceListComponent_ng_container_20_aui_option_1_ng_container_6_Template, 1, 0, "ng-container", 14);
89
93
  i0.ɵɵelementEnd();
90
94
  } if (rf & 2) {
91
- const cluster_r13 = ctx.$implicit;
92
- const ctx_r2 = i0.ɵɵnextContext();
93
- const _r3 = i0.ɵɵreference(19);
94
- i0.ɵɵproperty("value", cluster_r13)("label", _r3)("disabled", i0.ɵɵpipeBind1(1, 8, i0.ɵɵpipeBind2(2, 10, cluster_r13, ctx_r2.checkClusterError$)))("auiTooltip", i0.ɵɵpipeBind1(3, 13, "current_cluster_status_abnormal"))("auiTooltipDisabled", !i0.ɵɵpipeBind1(4, 15, i0.ɵɵpipeBind2(5, 17, cluster_r13, ctx_r2.checkClusterError$)))("labelContext", i0.ɵɵpureFunction1(20, _c0, cluster_r13));
95
+ const cluster_r6 = ctx.declare;
96
+ const clusterName_r7 = i0.ɵɵnextContext().$implicit;
97
+ const ctx_r3 = i0.ɵɵnextContext();
98
+ const clusterLabel_r8 = i0.ɵɵreference(25);
99
+ i0.ɵɵproperty("value", clusterName_r7)("label", clusterLabel_r8)("labelContext", cluster_r6)("disabled", i0.ɵɵpipeBind1(2, 11, i0.ɵɵpipeBind2(1, 8, clusterName_r7, ctx_r3.checkClusterError$)))("auiTooltip", i0.ɵɵpipeBind1(3, 13, "current_cluster_status_abnormal"))("auiTooltipDisabled", !i0.ɵɵpipeBind1(5, 18, i0.ɵɵpipeBind2(4, 15, clusterName_r7, ctx_r3.checkClusterError$)));
95
100
  i0.ɵɵadvance(6);
96
- i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(22, _c0, cluster_r13));
101
+ i0.ɵɵproperty("ngTemplateOutlet", clusterLabel_r8)("ngTemplateOutletContext", cluster_r6);
102
+ } }
103
+ function NamespaceListComponent_ng_container_20_Template(rf, ctx) { if (rf & 1) {
104
+ i0.ɵɵelementContainerStart(0);
105
+ i0.ɵɵtemplate(1, NamespaceListComponent_ng_container_20_aui_option_1_Template, 7, 20, "aui-option", 12);
106
+ i0.ɵɵpipe(2, "pure");
107
+ i0.ɵɵpipe(3, "async");
108
+ i0.ɵɵelementContainerEnd();
109
+ } if (rf & 2) {
110
+ const clusterName_r7 = ctx.$implicit;
111
+ const ctx_r3 = i0.ɵɵnextContext();
112
+ i0.ɵɵadvance();
113
+ i0.ɵɵproperty("declare", i0.ɵɵpureFunction2(6, _c2, clusterName_r7, i0.ɵɵpipeBind1(3, 4, i0.ɵɵpipeBind2(2, 1, clusterName_r7, ctx_r3.getClusterDisplayName$))));
97
114
  } }
98
- function NamespaceListComponent_ng_template_18_ng_container_1_Template(rf, ctx) { if (rf & 1) {
115
+ function NamespaceListComponent_ng_template_24_ng_container_1_Template(rf, ctx) { if (rf & 1) {
99
116
  i0.ɵɵelementContainerStart(0);
100
117
  i0.ɵɵtext(1);
101
118
  i0.ɵɵelementContainerEnd();
102
119
  } if (rf & 2) {
103
- const displayName_r17 = ctx.ngIf;
104
- i0.ɵɵadvance(1);
105
- i0.ɵɵtextInterpolate1(" (", displayName_r17, ") ");
120
+ const displayName_r9 = i0.ɵɵnextContext().displayName;
121
+ i0.ɵɵadvance();
122
+ i0.ɵɵtextInterpolate1("(", displayName_r9, ")");
106
123
  } }
107
- function NamespaceListComponent_ng_template_18_Template(rf, ctx) { if (rf & 1) {
124
+ function NamespaceListComponent_ng_template_24_Template(rf, ctx) { if (rf & 1) {
108
125
  i0.ɵɵtext(0);
109
- i0.ɵɵtemplate(1, NamespaceListComponent_ng_template_18_ng_container_1_Template, 2, 1, "ng-container", 4);
110
- i0.ɵɵpipe(2, "async");
111
- i0.ɵɵpipe(3, "pure");
126
+ i0.ɵɵtemplate(1, NamespaceListComponent_ng_template_24_ng_container_1_Template, 2, 1, "ng-container", 5);
112
127
  } if (rf & 2) {
113
- const cluster_r15 = ctx.cluster;
114
- const ctx_r4 = i0.ɵɵnextContext();
115
- i0.ɵɵtextInterpolate1(" ", cluster_r15, " ");
116
- i0.ɵɵadvance(1);
117
- i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(2, 2, i0.ɵɵpipeBind2(3, 4, cluster_r15, ctx_r4.getClusterDisplayName$)));
128
+ const name_r10 = ctx.name;
129
+ const displayName_r9 = ctx.displayName;
130
+ i0.ɵɵtextInterpolate1(" ", name_r10, " ");
131
+ i0.ɵɵadvance();
132
+ i0.ɵɵproperty("ngIf", displayName_r9);
118
133
  } }
119
- const _c1 = function () { return []; };
120
- const _c2 = ["*"];
121
134
  export class NamespaceListComponent extends ResourceListBase {
122
135
  constructor(commonLayoutService, k8sService, http, contextService, cdr, k8sUtil) {
123
136
  super(cdr, k8sUtil, contextService);
@@ -174,14 +187,29 @@ export class NamespaceListComponent extends ResourceListBase {
174
187
  }), map((lists) => lists.flat()))
175
188
  : of([]);
176
189
  }), takeUntil(this.destroy$$), publishRef());
177
- this.projectFilterFn = (searchText = '', option) => this.k8sUtil
178
- .getName(option.value)
179
- .toLowerCase()
180
- .includes(searchText.toLowerCase()) ||
181
- this.k8sUtil
182
- .getDisplayName(option.value)
183
- ?.toLowerCase()
184
- ?.includes(searchText.toLowerCase());
190
+ this.projectFilterFn = (keyword = '', option) => {
191
+ const k = keyword.toLowerCase();
192
+ return (option.value.metadata.name.includes(k) ||
193
+ getDomainAnnotation(DISPLAY_NAME, option.value)
194
+ ?.toLowerCase()
195
+ ?.includes(k));
196
+ };
197
+ this.clusterFilterFn = (keyword = '', option) => {
198
+ const k = keyword.toLowerCase();
199
+ if (option.value === '__all') {
200
+ return option.label.toLowerCase().includes(k);
201
+ }
202
+ const { name, displayName } = option.labelContext;
203
+ return name.includes(k) || displayName?.toLowerCase()?.includes(k);
204
+ };
205
+ this.serviceMeshFilterFn = (keyword = '', option) => {
206
+ const k = keyword.toLowerCase();
207
+ const version = option.value.spec?.istioVersion
208
+ ? `Istio ${option.value.spec.istioVersion}`
209
+ : '';
210
+ return (option.value.metadata.name.includes(k) ||
211
+ version.toLowerCase()?.includes(k));
212
+ };
185
213
  this.projectTrackFn = (project) => project?.metadata.name;
186
214
  this.serviceMeshTrackFn = (mesh) => mesh?.metadata.name;
187
215
  this.mapResource = (list, { isMultiArch, clusters, }) => list.map(item => {
@@ -358,65 +386,81 @@ export class NamespaceListComponent extends ResourceListBase {
358
386
  'False');
359
387
  }
360
388
  static { this.ɵfac = function NamespaceListComponent_Factory(t) { return new (t || NamespaceListComponent)(i0.ɵɵdirectiveInject(i1.CommonLayoutContextService), i0.ɵɵdirectiveInject(i2.K8sApiService), i0.ɵɵdirectiveInject(i3.HttpClient), i0.ɵɵdirectiveInject(i4.ResourceSelectContextService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i5.K8sUtilService)); }; }
361
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NamespaceListComponent, selectors: [["acl-namespace-list"]], inputs: { actionTemplateRef: "actionTemplateRef", disableFn: "disableFn", value: "value", displayServiceMesh: "displayServiceMesh" }, outputs: { clusterChange: "clusterChange", projectChange: "projectChange" }, features: [i0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c2, decls: 23, vars: 31, consts: [[1, "filter"], ["auiFormItemLabel", ""], ["auiFormItemControl", "", "name", "project", 3, "ngClass", "ngModel", "filterFn", "trackFn", "loading", "ngModelChange", "valueChange"], [3, "value", "label", 4, "ngFor", "ngForOf"], [4, "ngIf"], ["auiFormItemControl", "", "name", "project", 3, "ngClass", "ngModel", "loading", "ngModelChange", "valueChange"], [3, "value", "label"], [3, "value", "label", "disabled", "auiTooltip", "auiTooltipDisabled", "labelContext", 4, "ngFor", "ngForOf"], ["clusterLabel", ""], [3, "data", "fields", "context", "actionTemplateRef", "selectedUid", "loading", "selectItem", "reload"], ["aclResourceGridHeader", ""], ["auiFormItemControl", "", "name", "serviceMeshProject", 1, "lang-not-zh:!tw-w-[230px]", 3, "ngModel", "trackFn", "loading", "ngModelChange", "valueChange"], [3, "value", "label", "disabled", "auiTooltip", "auiTooltipDisabled", "labelContext"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"]], template: function NamespaceListComponent_Template(rf, ctx) { if (rf & 1) {
389
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NamespaceListComponent, selectors: [["acl-namespace-list"]], inputs: { actionTemplateRef: "actionTemplateRef", disableFn: "disableFn", value: "value", displayServiceMesh: "displayServiceMesh" }, outputs: { clusterChange: "clusterChange", projectChange: "projectChange" }, features: [i0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c0, decls: 29, vars: 38, consts: [["clusterLabel", ""], [1, "filter"], ["auiFormItemLabel", ""], ["auiFormItemControl", "", "name", "project", 3, "ngModelChange", "valueChange", "ngClass", "ngModel", "filterFn", "trackFn", "loading"], [3, "value", "label", 4, "ngFor", "ngForOf"], [4, "ngIf"], ["auiFormItemControl", "", "name", "cluster", 3, "ngModelChange", "valueChange", "ngClass", "filterFn", "loading", "ngModel"], [3, "value", "label"], [4, "ngFor", "ngForOf"], [3, "selectItem", "reload", "data", "fields", "context", "actionTemplateRef", "selectedUid", "loading"], ["aclResourceGridHeader", ""], ["auiFormItemControl", "", "name", "serviceMeshProject", 1, "lang-not-zh:!tw-w-[230px]", 3, "ngModelChange", "valueChange", "ngModel", "trackFn", "loading"], [3, "value", "label", "labelContext", "disabled", "auiTooltip", "auiTooltipDisabled", 4, "declare"], [3, "value", "label", "labelContext", "disabled", "auiTooltip", "auiTooltipDisabled"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"]], template: function NamespaceListComponent_Template(rf, ctx) { if (rf & 1) {
390
+ const _r1 = i0.ɵɵgetCurrentView();
362
391
  i0.ɵɵprojectionDef();
363
- i0.ɵɵelementStart(0, "div", 0)(1, "aui-form-item")(2, "label", 1);
392
+ i0.ɵɵelementStart(0, "div", 1)(1, "aui-form-item")(2, "label", 2);
364
393
  i0.ɵɵtext(3);
365
394
  i0.ɵɵpipe(4, "translate");
366
395
  i0.ɵɵelementEnd();
367
- i0.ɵɵelementStart(5, "aui-select", 2);
368
- i0.ɵɵlistener("ngModelChange", function NamespaceListComponent_Template_aui_select_ngModelChange_5_listener($event) { return ctx.selectedProject = $event; })("valueChange", function NamespaceListComponent_Template_aui_select_valueChange_5_listener($event) { return ctx.selectProject($event); });
369
- i0.ɵɵtemplate(6, NamespaceListComponent_aui_option_6_Template, 4, 7, "aui-option", 3);
370
- i0.ɵɵelementEnd()();
371
- i0.ɵɵtemplate(7, NamespaceListComponent_aui_form_item_7_Template, 9, 10, "aui-form-item", 4);
372
- i0.ɵɵelementStart(8, "aui-form-item")(9, "label", 1);
373
- i0.ɵɵtext(10);
374
- i0.ɵɵpipe(11, "translate");
375
- i0.ɵɵelementEnd();
376
- i0.ɵɵelementStart(12, "aui-select", 5);
377
- i0.ɵɵlistener("ngModelChange", function NamespaceListComponent_Template_aui_select_ngModelChange_12_listener($event) { return ctx.selectedCluster = $event; })("valueChange", function NamespaceListComponent_Template_aui_select_valueChange_12_listener($event) { return ctx.selectCluster($event); });
378
- i0.ɵɵelementStart(13, "aui-option", 6);
396
+ i0.ɵɵelementStart(5, "aui-select", 3);
397
+ i0.ɵɵtwoWayListener("ngModelChange", function NamespaceListComponent_Template_aui_select_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r1); i0.ɵɵtwoWayBindingSet(ctx.selectedProject, $event) || (ctx.selectedProject = $event); return i0.ɵɵresetView($event); });
398
+ i0.ɵɵlistener("valueChange", function NamespaceListComponent_Template_aui_select_valueChange_5_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.selectProject($event)); });
399
+ i0.ɵɵtemplate(6, NamespaceListComponent_aui_option_6_Template, 4, 7, "aui-option", 4);
400
+ i0.ɵɵelementStart(7, "aui-option-placeholder");
401
+ i0.ɵɵtext(8);
402
+ i0.ɵɵpipe(9, "translate");
403
+ i0.ɵɵelementEnd()()();
404
+ i0.ɵɵtemplate(10, NamespaceListComponent_aui_form_item_10_Template, 9, 10, "aui-form-item", 5);
405
+ i0.ɵɵelementStart(11, "aui-form-item")(12, "label", 2);
406
+ i0.ɵɵtext(13);
379
407
  i0.ɵɵpipe(14, "translate");
380
- i0.ɵɵtext(15);
381
- i0.ɵɵpipe(16, "translate");
382
408
  i0.ɵɵelementEnd();
383
- i0.ɵɵtemplate(17, NamespaceListComponent_aui_option_17_Template, 7, 24, "aui-option", 7);
409
+ i0.ɵɵelementStart(15, "aui-select", 6);
410
+ i0.ɵɵtwoWayListener("ngModelChange", function NamespaceListComponent_Template_aui_select_ngModelChange_15_listener($event) { i0.ɵɵrestoreView(_r1); i0.ɵɵtwoWayBindingSet(ctx.selectedCluster, $event) || (ctx.selectedCluster = $event); return i0.ɵɵresetView($event); });
411
+ i0.ɵɵlistener("valueChange", function NamespaceListComponent_Template_aui_select_valueChange_15_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.selectCluster($event)); });
412
+ i0.ɵɵelementStart(16, "aui-option", 7);
413
+ i0.ɵɵpipe(17, "translate");
414
+ i0.ɵɵtext(18);
415
+ i0.ɵɵpipe(19, "translate");
384
416
  i0.ɵɵelementEnd();
385
- i0.ɵɵtemplate(18, NamespaceListComponent_ng_template_18_Template, 4, 7, "ng-template", null, 8, i0.ɵɵtemplateRefExtractor);
386
- i0.ɵɵelementEnd()();
387
- i0.ɵɵelementStart(20, "acl-resource-data-grid", 9);
388
- i0.ɵɵlistener("selectItem", function NamespaceListComponent_Template_acl_resource_data_grid_selectItem_20_listener($event) { return ctx.onSelect($event); })("reload", function NamespaceListComponent_Template_acl_resource_data_grid_reload_20_listener() { return ctx.reload(); });
389
- i0.ɵɵelementContainerStart(21, 10);
390
- i0.ɵɵprojection(22);
417
+ i0.ɵɵtemplate(20, NamespaceListComponent_ng_container_20_Template, 4, 9, "ng-container", 8);
418
+ i0.ɵɵelementStart(21, "aui-option-placeholder");
419
+ i0.ɵɵtext(22);
420
+ i0.ɵɵpipe(23, "translate");
421
+ i0.ɵɵelementEnd();
422
+ i0.ɵɵtemplate(24, NamespaceListComponent_ng_template_24_Template, 2, 2, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
423
+ i0.ɵɵelementEnd()()();
424
+ i0.ɵɵelementStart(26, "acl-resource-data-grid", 9);
425
+ i0.ɵɵlistener("selectItem", function NamespaceListComponent_Template_acl_resource_data_grid_selectItem_26_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onSelect($event)); })("reload", function NamespaceListComponent_Template_acl_resource_data_grid_reload_26_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.reload()); });
426
+ i0.ɵɵelementContainerStart(27, 10);
427
+ i0.ɵɵprojection(28);
391
428
  i0.ɵɵelementContainerEnd();
392
429
  i0.ɵɵelementEnd();
393
430
  } if (rf & 2) {
394
431
  i0.ɵɵadvance(3);
395
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 22, "project"));
432
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 25, "project"));
396
433
  i0.ɵɵadvance(2);
397
- i0.ɵɵproperty("ngClass", ctx.displayServiceMesh ? "lang-not-zh:!tw-w-[230px]" : "")("ngModel", ctx.selectedProject)("filterFn", ctx.projectFilterFn)("trackFn", ctx.projectTrackFn)("loading", !ctx.projects.length && ctx.projectsLoading);
398
- i0.ɵɵadvance(1);
434
+ i0.ɵɵproperty("ngClass", ctx.displayServiceMesh ? "lang-not-zh:!tw-w-[230px]" : "");
435
+ i0.ɵɵtwoWayProperty("ngModel", ctx.selectedProject);
436
+ i0.ɵɵproperty("filterFn", ctx.projectFilterFn)("trackFn", ctx.projectTrackFn)("loading", !ctx.projects.length && ctx.projectsLoading);
437
+ i0.ɵɵadvance();
399
438
  i0.ɵɵproperty("ngForOf", ctx.projects);
400
- i0.ɵɵadvance(1);
439
+ i0.ɵɵadvance(2);
440
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(9, 27, "no_data"), " ");
441
+ i0.ɵɵadvance(2);
401
442
  i0.ɵɵproperty("ngIf", ctx.displayServiceMesh);
402
443
  i0.ɵɵadvance(3);
403
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 24, "cluster"));
444
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 29, "cluster"));
404
445
  i0.ɵɵadvance(2);
405
- i0.ɵɵproperty("ngClass", ctx.displayServiceMesh ? "lang-not-zh:!tw-w-[230px]" : "")("ngModel", ctx.selectedCluster)("loading", !ctx.projects.length && ctx.projectsLoading);
406
- i0.ɵɵadvance(1);
407
- i0.ɵɵproperty("value", "__all")("label", i0.ɵɵpipeBind1(14, 26, "all"));
446
+ i0.ɵɵproperty("ngClass", ctx.displayServiceMesh ? "lang-not-zh:!tw-w-[230px]" : "")("filterFn", ctx.clusterFilterFn)("loading", !ctx.projects.length && ctx.projectsLoading);
447
+ i0.ɵɵtwoWayProperty("ngModel", ctx.selectedCluster);
448
+ i0.ɵɵadvance();
449
+ i0.ɵɵproperty("value", "__all")("label", i0.ɵɵpipeBind1(17, 31, "all"));
408
450
  i0.ɵɵadvance(2);
409
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(16, 28, "all_clusters"), " ");
451
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(19, 33, "all"), " ");
410
452
  i0.ɵɵadvance(2);
411
453
  i0.ɵɵproperty("ngForOf", ctx.clusters);
412
- i0.ɵɵadvance(3);
413
- i0.ɵɵproperty("data", ctx.displayedData || i0.ɵɵpureFunction0(30, _c1))("fields", ctx.fields)("context", ctx.context)("actionTemplateRef", ctx.actionTemplateRef)("selectedUid", ctx.selectedUid)("loading", ctx.forceLoading || !(ctx.displayedData == null ? null : ctx.displayedData.length) && ctx.loading);
454
+ i0.ɵɵadvance(2);
455
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(23, 35, "no_data"), " ");
456
+ i0.ɵɵadvance(4);
457
+ i0.ɵɵproperty("data", ctx.displayedData || i0.ɵɵpureFunction0(37, _c1))("fields", ctx.fields)("context", ctx.context)("actionTemplateRef", ctx.actionTemplateRef)("selectedUid", ctx.selectedUid)("loading", ctx.forceLoading || !(ctx.displayedData == null ? null : ctx.displayedData.length) && ctx.loading);
414
458
  } }, styles: ["[_nghost-%COMP%]{display:flex;flex:1;flex-direction:column}.filter[_ngcontent-%COMP%]{display:flex;padding:20px;margin-bottom:20px;box-shadow:0 0 4px rgba(var(--aui-color-n-1),.16);background-color:rgb(var(--aui-color-n-10));border-radius:4px}.filter[_ngcontent-%COMP%] aui-form-item[_ngcontent-%COMP%]{margin-right:20px}.filter[_ngcontent-%COMP%] aui-form-item[_ngcontent-%COMP%] .aui-form-item{margin-bottom:0}.filter[_ngcontent-%COMP%] aui-form-item[_ngcontent-%COMP%] .aui-form-item__label-wrapper{width:auto!important}.filter[_ngcontent-%COMP%] aui-form-item[_ngcontent-%COMP%] .aui-input{color:rgb(var(--aui-color-n-2))}.filter[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{font-weight:500}.filter[_ngcontent-%COMP%] aui-select[_ngcontent-%COMP%]{width:260px}"], changeDetection: 0 }); }
415
459
  }
416
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NamespaceListComponent, [{
460
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NamespaceListComponent, [{
417
461
  type: Component,
418
- args: [{ selector: 'acl-namespace-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"filter\">\n <aui-form-item>\n <label auiFormItemLabel>{{ 'project' | translate }}</label>\n <aui-select\n [ngClass]=\"displayServiceMesh ? 'lang-not-zh:!tw-w-[230px]' : ''\"\n auiFormItemControl\n name=\"project\"\n [(ngModel)]=\"selectedProject\"\n [filterFn]=\"projectFilterFn\"\n [trackFn]=\"projectTrackFn\"\n (valueChange)=\"selectProject($event)\"\n [loading]=\"!projects.length && projectsLoading\"\n >\n <aui-option\n *ngFor=\"let project of projects\"\n [value]=\"project\"\n [label]=\"project | aclUnionDisplayName\"\n >\n {{ project | aclUnionDisplayName }}\n </aui-option>\n </aui-select>\n </aui-form-item>\n <!-- ASM \u9009\u62E9\u7F51\u683C\u8FC7\u6EE4\u96C6\u7FA4\u9009\u9879 -->\n <aui-form-item *ngIf=\"displayServiceMesh\">\n <label auiFormItemLabel>{{ 'service_mesh' | translate }}</label>\n <aui-select\n class=\"lang-not-zh:!tw-w-[230px]\"\n auiFormItemControl\n name=\"serviceMeshProject\"\n [(ngModel)]=\"selectedServiceMesh\"\n [trackFn]=\"serviceMeshTrackFn\"\n (valueChange)=\"selectServiceMesh($event)\"\n [loading]=\"!projects.length && projectsLoading\"\n >\n <aui-option\n *ngFor=\"let mesh of projectServiceMeshes\"\n [value]=\"mesh\"\n [label]=\"\n (mesh | aclName) +\n (mesh.spec?.istioVersion\n ? '(Istio ' + mesh.spec.istioVersion + ')'\n : '')\n \"\n >\n {{ mesh | aclName\n }}<ng-container *ngIf=\"mesh.spec?.istioVersion\"\n >(Istio {{ mesh.spec.istioVersion }})</ng-container\n >\n </aui-option>\n <aui-option-placeholder>\n {{ 'no_data' | translate }}\n </aui-option-placeholder>\n </aui-select>\n </aui-form-item>\n <aui-form-item>\n <label auiFormItemLabel>{{ 'cluster' | translate }}</label>\n <aui-select\n [ngClass]=\"displayServiceMesh ? 'lang-not-zh:!tw-w-[230px]' : ''\"\n auiFormItemControl\n name=\"project\"\n [(ngModel)]=\"selectedCluster\"\n (valueChange)=\"selectCluster($event)\"\n [loading]=\"!projects.length && projectsLoading\"\n >\n <aui-option\n [value]=\"'__all'\"\n [label]=\"'all' | translate\"\n >\n {{ 'all_clusters' | translate }}\n </aui-option>\n <aui-option\n *ngFor=\"let cluster of clusters\"\n [value]=\"cluster\"\n [label]=\"clusterLabel\"\n [disabled]=\"cluster | pure: checkClusterError$ | async\"\n [auiTooltip]=\"'current_cluster_status_abnormal' | translate\"\n [auiTooltipDisabled]=\"!(cluster | pure: checkClusterError$ | async)\"\n [labelContext]=\"{ cluster: cluster }\"\n >\n <ng-container\n *ngTemplateOutlet=\"clusterLabel; context: { cluster: cluster }\"\n ></ng-container>\n </aui-option>\n </aui-select>\n <ng-template\n #clusterLabel\n let-cluster=\"cluster\"\n >\n {{ cluster }}\n <ng-container\n *ngIf=\"cluster | pure: getClusterDisplayName$ | async as displayName\"\n >\n ({{ displayName }})\n </ng-container>\n </ng-template>\n </aui-form-item>\n</div>\n<acl-resource-data-grid\n [data]=\"displayedData || []\"\n [fields]=\"fields\"\n [context]=\"context\"\n (selectItem)=\"onSelect($event)\"\n [actionTemplateRef]=\"actionTemplateRef\"\n [selectedUid]=\"selectedUid\"\n [loading]=\"forceLoading || (!displayedData?.length && loading)\"\n (reload)=\"reload()\"\n>\n <ng-container aclResourceGridHeader>\n <ng-content></ng-content>\n </ng-container>\n</acl-resource-data-grid>\n", styles: [":host{display:flex;flex:1;flex-direction:column}.filter{display:flex;padding:20px;margin-bottom:20px;box-shadow:0 0 4px rgba(var(--aui-color-n-1),.16);background-color:rgb(var(--aui-color-n-10));border-radius:4px}.filter aui-form-item{margin-right:20px}.filter aui-form-item ::ng-deep .aui-form-item{margin-bottom:0}.filter aui-form-item ::ng-deep .aui-form-item__label-wrapper{width:auto!important}.filter aui-form-item ::ng-deep .aui-input{color:rgb(var(--aui-color-n-2))}.filter label{font-weight:500}.filter aui-select{width:260px}\n"] }]
419
- }], function () { return [{ type: i1.CommonLayoutContextService }, { type: i2.K8sApiService }, { type: i3.HttpClient }, { type: i4.ResourceSelectContextService }, { type: i0.ChangeDetectorRef }, { type: i5.K8sUtilService }]; }, { actionTemplateRef: [{
462
+ args: [{ selector: 'acl-namespace-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"filter\">\n <aui-form-item>\n <label auiFormItemLabel>{{ 'project' | translate }}</label>\n <aui-select\n [ngClass]=\"displayServiceMesh ? 'lang-not-zh:!tw-w-[230px]' : ''\"\n auiFormItemControl\n name=\"project\"\n [(ngModel)]=\"selectedProject\"\n [filterFn]=\"projectFilterFn\"\n [trackFn]=\"projectTrackFn\"\n (valueChange)=\"selectProject($event)\"\n [loading]=\"!projects.length && projectsLoading\"\n >\n <aui-option\n *ngFor=\"let project of projects\"\n [value]=\"project\"\n [label]=\"project | aclUnionDisplayName\"\n >\n {{ project | aclUnionDisplayName }}\n </aui-option>\n <aui-option-placeholder>\n {{ 'no_data' | translate }}\n </aui-option-placeholder>\n </aui-select>\n </aui-form-item>\n <!-- ASM \u9009\u62E9\u7F51\u683C\u8FC7\u6EE4\u96C6\u7FA4\u9009\u9879 -->\n <aui-form-item *ngIf=\"displayServiceMesh\">\n <label auiFormItemLabel>{{ 'service_mesh' | translate }}</label>\n <aui-select\n class=\"lang-not-zh:!tw-w-[230px]\"\n auiFormItemControl\n name=\"serviceMeshProject\"\n [(ngModel)]=\"selectedServiceMesh\"\n [trackFn]=\"serviceMeshTrackFn\"\n (valueChange)=\"selectServiceMesh($event)\"\n [loading]=\"!projects.length && projectsLoading\"\n >\n <aui-option\n *ngFor=\"let mesh of projectServiceMeshes\"\n [value]=\"mesh\"\n [label]=\"\n (mesh | aclName) +\n (mesh.spec?.istioVersion\n ? ' (Istio ' + mesh.spec.istioVersion + ')'\n : '')\n \"\n >\n {{ mesh | aclName }}\n <ng-container *ngIf=\"mesh.spec?.istioVersion\">\n (Istio {{ mesh.spec.istioVersion }})\n </ng-container>\n </aui-option>\n <aui-option-placeholder>\n {{ 'no_data' | translate }}\n </aui-option-placeholder>\n </aui-select>\n </aui-form-item>\n <aui-form-item>\n <label auiFormItemLabel>{{ 'cluster' | translate }}</label>\n <aui-select\n [ngClass]=\"displayServiceMesh ? 'lang-not-zh:!tw-w-[230px]' : ''\"\n auiFormItemControl\n name=\"cluster\"\n [filterFn]=\"clusterFilterFn\"\n [loading]=\"!projects.length && projectsLoading\"\n [(ngModel)]=\"selectedCluster\"\n (valueChange)=\"selectCluster($event)\"\n >\n <aui-option\n [value]=\"'__all'\"\n [label]=\"'all' | translate\"\n >\n {{ 'all' | translate }}\n </aui-option>\n <ng-container *ngFor=\"let clusterName of clusters\">\n <aui-option\n *declare=\"{\n name: clusterName,\n displayName: clusterName | pure: getClusterDisplayName$ | async\n } as cluster\"\n [value]=\"clusterName\"\n [label]=\"clusterLabel\"\n [labelContext]=\"cluster\"\n [disabled]=\"clusterName | pure: checkClusterError$ | async\"\n [auiTooltip]=\"'current_cluster_status_abnormal' | translate\"\n [auiTooltipDisabled]=\"\n !(clusterName | pure: checkClusterError$ | async)\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"clusterLabel; context: cluster\"\n ></ng-container>\n </aui-option>\n </ng-container>\n <aui-option-placeholder>\n {{ 'no_data' | translate }}\n </aui-option-placeholder>\n <ng-template\n #clusterLabel\n let-name=\"name\"\n let-displayName=\"displayName\"\n >\n {{ name }}\n <ng-container *ngIf=\"displayName\">({{ displayName }})</ng-container>\n </ng-template>\n </aui-select>\n </aui-form-item>\n</div>\n<acl-resource-data-grid\n [data]=\"displayedData || []\"\n [fields]=\"fields\"\n [context]=\"context\"\n (selectItem)=\"onSelect($event)\"\n [actionTemplateRef]=\"actionTemplateRef\"\n [selectedUid]=\"selectedUid\"\n [loading]=\"forceLoading || (!displayedData?.length && loading)\"\n (reload)=\"reload()\"\n>\n <ng-container aclResourceGridHeader>\n <ng-content></ng-content>\n </ng-container>\n</acl-resource-data-grid>\n", styles: [":host{display:flex;flex:1;flex-direction:column}.filter{display:flex;padding:20px;margin-bottom:20px;box-shadow:0 0 4px rgba(var(--aui-color-n-1),.16);background-color:rgb(var(--aui-color-n-10));border-radius:4px}.filter aui-form-item{margin-right:20px}.filter aui-form-item ::ng-deep .aui-form-item{margin-bottom:0}.filter aui-form-item ::ng-deep .aui-form-item__label-wrapper{width:auto!important}.filter aui-form-item ::ng-deep .aui-input{color:rgb(var(--aui-color-n-2))}.filter label{font-weight:500}.filter aui-select{width:260px}\n"] }]
463
+ }], () => [{ type: i1.CommonLayoutContextService }, { type: i2.K8sApiService }, { type: i3.HttpClient }, { type: i4.ResourceSelectContextService }, { type: i0.ChangeDetectorRef }, { type: i5.K8sUtilService }], { actionTemplateRef: [{
420
464
  type: Input
421
465
  }], disableFn: [{
422
466
  type: Input
@@ -429,4 +473,5 @@ export class NamespaceListComponent extends ResourceListBase {
429
473
  }], projectChange: [{
430
474
  type: Output
431
475
  }] }); })();
432
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2J1c2luZXNzL3Jlc291cmNlLXNlbGVjdC9pbnRlcm5hbHMvbmFtZXNwYWNlLWxpc3QvY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2J1c2luZXNzL3Jlc291cmNlLXNlbGVjdC9pbnRlcm5hbHMvbmFtZXNwYWNlLWxpc3QvdGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFdBQVcsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckQsT0FBTyxFQUNMLGFBQWEsRUFDYixhQUFhLEVBQ2IsUUFBUSxFQUNSLEVBQUUsRUFDRixVQUFVLEVBQ1YsUUFBUSxFQUNSLEdBQUcsRUFDSCxTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsRUFDVCxHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQ0wsV0FBVyxFQUVYLGNBQWMsRUFFZCxVQUFVLEdBSVgsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FB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Z0IsSUFBQyx5R0FJckIsWUFBUSxJQUphO1lBTS9CLGtDQUFvQztZQUNsQyxtQkFBeUI7WUFDM0IsMEJBQWU7WUFDakIsaUJBQXlCOztZQTVHRyxlQUEyQjtZQUEzQixzREFBMkI7WUFFakQsZUFBaUU7WUFBakUsbUZBQWlFLGdDQUFBLGlDQUFBLCtCQUFBLHdEQUFBO1lBVTNDLGVBQVc7WUFBWCxzQ0FBVztZQVNyQixlQUF3QjtZQUF4Qiw2Q0FBd0I7WUFnQ2QsZUFBMkI7WUFBM0IsdURBQTJCO1lBRWpELGVBQWlFO1lBQWpFLG1GQUFpRSxnQ0FBQSx3REFBQTtZQVEvRCxlQUFpQjtZQUFqQiwrQkFBaUIsd0NBQUE7WUFHakIsZUFDRjtZQURFLHVFQUNGO1lBRXNCLGVBQVc7WUFBWCxzQ0FBVztZQTJCckMsZUFBNEI7WUFBNUIsdUVBQTRCLHNCQUFBLHdCQUFBLDRDQUFBLGdDQUFBLDhHQUFBOzs7dUZEekNqQixzQkFBc0I7Y0FObEMsU0FBUzsyQkFDRSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTTswT0FPL0MsaUJBQWlCO2tCQURoQixLQUFLO1lBSU4sU0FBUztrQkFEUixLQUFLO1lBSU4sS0FBSztrQkFESixLQUFLO1lBSU4sa0JBQWtCO2tCQURqQixLQUFLO1lBSU4sYUFBYTtrQkFEWixNQUFNO1lBSVAsYUFBYTtrQkFEWixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VsZWN0RmlsdGVyT3B0aW9uIH0gZnJvbSAnQGFsYXVkYS91aSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG1lbW9pemUsIHBhcnRpdGlvbiwgdW5pcSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge1xuICBSZXBsYXlTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBmb3JrSm9pbixcbiAgb2YsXG4gIGNhdGNoRXJyb3IsXG4gIGZpbmFsaXplLFxuICBtYXAsXG4gIHN0YXJ0V2l0aCxcbiAgc3dpdGNoTWFwLFxuICB0YWtlVW50aWwsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIEFQSV9HQVRFV0FZLFxuICBDbHVzdGVyLFxuICBLOHNVdGlsU2VydmljZSxcbiAgUHJvamVjdCxcbiAgcHVibGlzaFJlZixcbiAgU2VydmljZU1lc2hHcm91cCxcbiAgS3ViZXJuZXRlc1Jlc291cmNlLFxuICBLdWJlcm5ldGVzUmVzb3VyY2VMaXN0LFxufSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgQ29tbW9uTGF5b3V0Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9wYWdlLXNjYWZmb2xkL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgUmVzb3VyY2VMaXN0QmFzZSB9IGZyb20gJy4uLy4uL2Jhc2UtbGlzdCc7XG5pbXBvcnQgeyBSZXNvdXJjZVNlbGVjdENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IGdldERpc3BsYXlBcmNoLCBnZXRXb3Jrc3BhY2VQYXJhbXMgfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbmltcG9ydCB7IEs4c0FwaVNlcnZpY2UgfSBmcm9tICcuLy4uLy4uLy4uLy4uL2FwaS9wdWJsaWMtYXBpJztcbmltcG9ydCB7XG4gIENsdXN0ZXJBcmNoLFxuICBEaXNhYmxlRm4sXG4gIE5hbWVzcGFjZURhdGFJdGVtLFxuICBTZWxlY3RlZE5hbWVzcGFjZVZhbHVlLFxufSBmcm9tICcuLy4uLy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNsLW5hbWVzcGFjZS1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RlbXBsYXRlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdHlsZS5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOYW1lc3BhY2VMaXN0Q29tcG9uZW50XG4gIGV4dGVuZHMgUmVzb3VyY2VMaXN0QmFzZVxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XG57XG4gIEBJbnB1dCgpXG4gIGFjdGlvblRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVGbjogRGlzYWJsZUZuO1xuXG4gIEBJbnB1dCgpXG4gIHZhbHVlOiBTZWxlY3RlZE5hbWVzcGFjZVZhbHVlO1xuXG4gIEBJbnB1dCgpXG4gIGRpc3BsYXlTZXJ2aWNlTWVzaCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKVxuICBjbHVzdGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHByb2plY3RDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBwcm9qZWN0czogUHJvamVjdFtdID0gW107XG5cbiAgc2VsZWN0ZWRQcm9qZWN0OiBQcm9qZWN0O1xuICBzZWxlY3RlZENsdXN0ZXI6IHN0cmluZztcbiAgY2x1c3RlcnM6IHN0cmluZ1tdID0gW107XG4gIHByb2plY3RzTG9hZGluZyA9IHRydWU7XG5cbiAgc2VydmljZU1lc2hlczogU2VydmljZU1lc2hHcm91cFtdID0gW107XG4gIHByb2plY3RTZXJ2aWNlTWVzaGVzOiBTZXJ2aWNlTWVzaEdyb3VwW10gPSBbXTtcbiAgc2VsZWN0ZWRTZXJ2aWNlTWVzaDogU2VydmljZU1lc2hHcm91cDtcblxuICB0eXBlID0gJ25hbWVzcGFjZSc7XG5cbiAgZGlzcGxheWVkRGF0YTogTmFtZXNwYWNlRGF0YUl0ZW1bXSA9IFtdO1xuXG4gIG5hbWVzcGFjZUNsdXN0ZXJNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICBncmlkU3RhdGVNYXA6IFJlY29yZDxzdHJpbmcsIFJldHVyblR5cGU8RGlzYWJsZUZuPj4gPSB7fTtcblxuICBzZWxlY3RlZFVpZDogc3RyaW5nO1xuXG4gIGxvYWQkJCA9IG5ldyBSZXBsYXlTdWJqZWN0PHsgcHJvamVjdDogUHJvamVjdDsgY2x1c3Rlcjogc3RyaW5nIH0+KDEpO1xuXG4gIHNlcnZpY2VNZXNoZXMkID0gdGhpcy5rOHNTZXJ2aWNlXG4gICAgLmdldEdsb2JhbFJlc291cmNlTGlzdDxTZXJ2aWNlTWVzaEdyb3VwPih7XG4gICAgICBkZWZpbml0aW9uOiB7XG4gICAgICAgIGFwaUdyb3VwOiAnYXNtLmFsYXVkYS5pbycsXG4gICAgICAgIGFwaVZlcnNpb246ICd2MWFscGhhMScsXG4gICAgICAgIHR5cGU6ICdzZXJ2aWNlbWVzaGdyb3VwcycsXG4gICAgICB9LFxuICAgICAgbmFtZXNwYWNlZDogdHJ1ZSxcbiAgICB9KVxuICAgIC5waXBlKG1hcChyZXMgPT4gcmVzLml0ZW1zKSk7XG5cbiAgY2x1c3RlcnMkID0gdGhpcy5odHRwXG4gICAgLmdldDxLdWJlcm5ldGVzUmVzb3VyY2VMaXN0PENsdXN0ZXI+PihcbiAgICAgIGAke0FQSV9HQVRFV0FZfS9hdXRoL3YxL2NsdXN0ZXJzP2F2YWlsYWJsZUNsdXN0ZXJzPWZhbHNlYCxcbiAgICApXG4gICAgLnBpcGUoXG4gICAgICBtYXAocmVzID0+IHJlcz8uaXRlbXMpLFxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihbXSBhcyBDbHVzdGVyW10pKSxcbiAgICAgIHB1Ymxpc2hSZWYoKSxcbiAgICApO1xuXG4gIGdldENsdXN0ZXJEaXNwbGF5TmFtZSQgPSBtZW1vaXplKChjbHVzdGVyOiBzdHJpbmcpID0+XG4gICAgdGhpcy5jbHVzdGVycyQucGlwZShcbiAgICAgIG1hcChjbHVzdGVycyA9PlxuICAgICAgICB0aGlzLms4c1V0aWwuZ2V0RGlzcGxheU5hbWUoXG4gICAgICAgICAgY2x1c3RlcnMuZmluZChpID0+IHRoaXMuazhzVXRpbC5nZXROYW1lKGkpID09PSBjbHVzdGVyKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKSxcbiAgKTtcblxuICBjaGVja0NsdXN0ZXJFcnJvciQgPSBtZW1vaXplKChjbHVzdGVyOiBzdHJpbmcpID0+XG4gICAgdGhpcy5jbHVzdGVycyQucGlwZShcbiAgICAgIG1hcChjbHVzdGVycyA9PiB0aGlzLmNoZWNrQ2x1c3RlckVycm9yKGNsdXN0ZXJzLCBjbHVzdGVyKSksXG4gICAgKSxcbiAgKTtcblxuICBuYW1lc3BhY2VzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMubG9hZCQkLFxuICAgIHRoaXMucmVsb2FkJCQucGlwZShzdGFydFdpdGgobnVsbCBhcyB2b2lkKSksXG4gIF0pLnBpcGUoXG4gICAgc3dpdGNoTWFwKChbeyBwcm9qZWN0LCBjbHVzdGVyIH1dKSA9PiB7XG4gICAgICBpZiAoIXByb2plY3QgfHwgIWNsdXN0ZXIpIHtcbiAgICAgICAgcmV0dXJuIG9mKFtdIGFzIEt1YmVybmV0ZXNSZXNvdXJjZVtdKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNsdXN0ZXJzID0gY2x1c3RlciA9PT0gJ19fYWxsJyA/IHRoaXMuY2x1c3RlcnMgOiBbY2x1c3Rlcl07XG4gICAgICByZXR1cm4gY2x1c3RlcnMubGVuZ3RoXG4gICAgICAgID8gZm9ya0pvaW4oXG4gICAgICAgICAgICBjbHVzdGVycy5tYXAoY2x1c3RlciA9PlxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxheW91dFNlcnZpY2VcbiAgICAgICAgICAgICAgICAuZ2V0Q2x1c3Rlck5hbWVzcGFjZXMocHJvamVjdC5tZXRhZGF0YS5uYW1lLCBjbHVzdGVyKVxuICAgICAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YoW10pKSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICkucGlwZShcbiAgICAgICAgICAgIHRhcChsaXN0cyA9PiB7XG4gICAgICAgICAgICAgIHRoaXMubmFtZXNwYWNlQ2x1c3Rlck1hcCA9IGxpc3RzLnJlZHVjZShcbiAgICAgICAgICAgICAgICAoYWNjLCBjdXIsIGkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgICAgICAuLi5jdXIucmVkdWNlKFxuICAgICAgICAgICAgICAgICAgICAoc3ViQWNjLCBzdWJDdXJyKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgIC4uLnN1YkFjYyxcbiAgICAgICAgICAgICAgICAgICAgICBbc3ViQ3Vyci5tZXRhZGF0YS51aWRdOiBjbHVzdGVyc1tpXSxcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKChsaXN0czogS3ViZXJuZXRlc1Jlc291cmNlW11bXSkgPT4gbGlzdHMuZmxhdCgpKSxcbiAgICAgICAgICApXG4gICAgICAgIDogb2YoW10gYXMgS3ViZXJuZXRlc1Jlc291cmNlW10pO1xuICAgIH0pLFxuICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkJCksXG4gICAgcHVibGlzaFJlZigpLFxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29tbW9uTGF5b3V0U2VydmljZTogQ29tbW9uTGF5b3V0Q29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrOHNTZXJ2aWNlOiBLOHNBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCxcbiAgICBjb250ZXh0U2VydmljZTogUmVzb3VyY2VTZWxlY3RDb250ZXh0U2VydmljZSxcbiAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIGs4c1V0aWw6IEs4c1V0aWxTZXJ2aWNlLFxuICApIHtcbiAgICBzdXBlcihjZHIsIGs4c1V0aWwsIGNvbnRleHRTZXJ2aWNlKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIEZyb20gY2FjaGVcbiAgICB0aGlzLnByb2plY3RzID0gdGhpcy5jb250ZXh0U2VydmljZS5jYWNoZWRQcm9qZWN0UmVzb3VyY2VzO1xuICAgIHRoaXMuc2VydmljZU1lc2hlcyA9IHRoaXMuY29udGV4dFNlcnZpY2UuY2FjaGVkU2VydmljZU1lc2hHcm91cFJlc291cmNlcztcbiAgICBpZiAodGhpcy5wcm9qZWN0cy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuaW5pdFByb2plY3QodGhpcy5wcm9qZWN0cyk7XG4gICAgfVxuXG4gICAgLy8gR2V0IGxhdGVzdCBkYXRhIGluIHRoZSBiYWNrZ3JvdW5kXG4gICAgZm9ya0pvaW4oW1xuICAgICAgdGhpcy5jb21tb25MYXlvdXRTZXJ2aWNlXG4gICAgICAgIC5nZXRQcm9qZWN0cygpXG4gICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YoW10gYXMgUHJvamVjdFtdKSkpLFxuICAgICAgdGhpcy5kaXNwbGF5U2VydmljZU1lc2hcbiAgICAgICAgPyB0aGlzLnNlcnZpY2VNZXNoZXMkXG4gICAgICAgIDogb2YoW10gYXMgU2VydmljZU1lc2hHcm91cFtdKSxcbiAgICBdKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnByb2plY3RzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKFtwcm9qZWN0cywgc2VydmljZU1lc2hlc10pID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZGlzcGxheVNlcnZpY2VNZXNoKSB7XG4gICAgICAgICAgdGhpcy5zZXJ2aWNlTWVzaGVzID0gc2VydmljZU1lc2hlcztcbiAgICAgICAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLmNhY2hlZFNlcnZpY2VNZXNoR3JvdXBSZXNvdXJjZXMgPSBzZXJ2aWNlTWVzaGVzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucHJvamVjdHMgPSBwcm9qZWN0cztcbiAgICAgICAgaWYgKCF0aGlzLmNvbnRleHRTZXJ2aWNlLmNhY2hlZFByb2plY3RSZXNvdXJjZXM/Lmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMuaW5pdFByb2plY3QocHJvamVjdHMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UuY2FjaGVkUHJvamVjdFJlc291cmNlcyA9IHRoaXMucHJvamVjdHM7XG4gICAgICB9KTtcblxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuY2x1c3RlcnMkLCB0aGlzLm5hbWVzcGFjZXMkXSkuc3Vic2NyaWJlKFxuICAgICAgKFtjbHVzdGVycywgZGF0YV0pID0+IHtcbiAgICAgICAgY29uc3QgaXNNdWx0aUFyY2ggPVxuICAgICAgICAgIHVuaXEoY2x1c3RlcnMubWFwKGMgPT4gdGhpcy5rOHNVdGlsLmdldExhYmVsKGMsICdhcmNoJykpKS5sZW5ndGggPiAxO1xuICAgICAgICB0aGlzLmRpc3BsYXllZERhdGEgPSB0aGlzLm1hcFJlc291cmNlKGRhdGEsIHtcbiAgICAgICAgICBjbHVzdGVycyxcbiAgICAgICAgICBpc011bHRpQXJjaCxcbiAgICAgICAgfSkuZmlsdGVyKG5zID0+IHRoaXMuY29udGV4dCA9PT0gJ3BhZ2UnIHx8ICFucy5zdGF0ZT8uZGlzYWJsZWQpO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkTmFtZXNwYWNlKHRoaXMuZGlzcGxheWVkRGF0YSk7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVWlkKSB7XG4gICAgICAgICAgdGhpcy5kaXNwbGF5ZWREYXRhID0gdGhpcy5nZXRTb3J0ZWROYW1lc3BhY2UoXG4gICAgICAgICAgICB0aGlzLmRpc3BsYXllZERhdGEsXG4gICAgICAgICAgICB0aGlzLnZhbHVlLm5hbWUsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mb3JjZUxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdG9yZU5hbWVzcGFjZXMoKTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBnZXRTb3J0ZWROYW1lc3BhY2UocmF3RGF0YTogTmFtZXNwYWNlRGF0YUl0ZW1bXSwgbmFtZXNwYWNlPzogc3RyaW5nKSB7XG4gICAgaWYgKCFuYW1lc3BhY2UpIHtcbiAgICAgIHJldHVybiByYXdEYXRhO1xuICAgIH1cbiAgICBjb25zdCBbc2VsZWN0ZWQsIG90aGVyc10gPSBwYXJ0aXRpb24oXG4gICAgICB0aGlzLmRpc3BsYXllZERhdGEsXG4gICAgICBpdGVtID0+IGl0ZW0ubmFtZSA9PT0gbmFtZXNwYWNlLFxuICAgICk7XG4gICAgcmV0dXJuIFsuLi5zZWxlY3RlZCwgLi4ub3RoZXJzXTtcbiAgfVxuXG4gIHN0b3JlTmFtZXNwYWNlcygpIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRQcm9qZWN0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnNlbGVjdGVkQ2x1c3RlciA9PT0gJ19fYWxsJykge1xuICAgICAgZm9yIChjb25zdCBjbHVzdGVyIG9mIHRoaXMuY2x1c3RlcnMpIHtcbiAgICAgICAgdGhpcy5jb250ZXh0U2VydmljZS5zdG9yZU5hbWVzcGFjZXMoXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2plY3QubWV0YWRhdGEubmFtZSxcbiAgICAgICAgICBjbHVzdGVyLFxuICAgICAgICAgIHRoaXMuZGlzcGxheWVkRGF0YS5maWx0ZXIoaXRlbSA9PiBpdGVtLmNsdXN0ZXIgPT09IGNsdXN0ZXIpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLnN0b3JlTmFtZXNwYWNlcyhcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcm9qZWN0Lm1ldGFkYXRhLm5hbWUsXG4gICAgICB0aGlzLnNlbGVjdGVkQ2x1c3RlcixcbiAgICAgIHRoaXMuZGlzcGxheWVkRGF0YSxcbiAgICApO1xuICB9XG5cbiAgcHJvamVjdEZpbHRlckZuID0gKFxuICAgIHNlYXJjaFRleHQgPSAnJyxcbiAgICBvcHRpb246IFNlbGVjdEZpbHRlck9wdGlvbjxQcm9qZWN0PixcbiAgKTogYm9vbGVhbiA9PlxuICAgIHRoaXMuazhzVXRpbFxuICAgICAgLmdldE5hbWUob3B0aW9uLnZhbHVlKVxuICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgIC5pbmNsdWRlcyhzZWFyY2hUZXh0LnRvTG93ZXJDYXNlKCkpIHx8XG4gICAgdGhpcy5rOHNVdGlsXG4gICAgICAuZ2V0RGlzcGxheU5hbWUob3B0aW9uLnZhbHVlKVxuICAgICAgPy50b0xvd2VyQ2FzZSgpXG4gICAgICA/LmluY2x1ZGVzKHNlYXJjaFRleHQudG9Mb3dlckNhc2UoKSk7XG5cbiAgcHJvamVjdFRyYWNrRm4gPSAocHJvamVjdDogUHJvamVjdCkgPT4gcHJvamVjdD8ubWV0YWRhdGEubmFtZTtcbiAgc2VydmljZU1lc2hUcmFja0ZuID0gKG1lc2g6IFNlcnZpY2VNZXNoR3JvdXApID0+IG1lc2g/Lm1ldGFkYXRhLm5hbWU7XG5cbiAgcHJpdmF0ZSBpbml0UHJvamVjdChwcm9qZWN0czogUHJvamVjdFtdKSB7XG4gICAgdGhpcy5zZWxlY3RQcm9qZWN0KFxuICAgICAgKHByb2plY3RzIHx8IFtdKS5sZW5ndGhcbiAgICAgICAgPyBwcm9qZWN0cy5maW5kKGl0ZW0gPT4gaXRlbS5tZXRhZGF0YS5uYW1lID09PSB0aGlzLnZhbHVlPy5wcm9qZWN0KSB8fFxuICAgICAgICAgICAgcHJvamVjdHNbMF1cbiAgICAgICAgOiBudWxsLFxuICAgICAgdHJ1ZSxcbiAgICApO1xuICAgIHRoaXMubG9hZC5lbWl0KHtcbiAgICAgIHByb2plY3Q6IHByb2plY3RzLmxlbmd0aCxcbiAgICAgIGNsdXN0ZXI6IHVuaXEoXG4gICAgICAgIHByb2plY3RzLnJlZHVjZShcbiAgICAgICAgICAoYWNjLCBjdXIpID0+IFsuLi5hY2MsIC4uLihjdXIuc3BlYy5jbHVzdGVycyB8fCBbXSkubWFwKGMgPT4gYy5uYW1lKV0sXG4gICAgICAgICAgW10sXG4gICAgICAgICksXG4gICAgICApLmxlbmd0aCxcbiAgICB9KTtcbiAgfVxuXG4gIHNlbGVjdFNlcnZpY2VNZXNoKHNlcnZpY2VNZXNoOiBTZXJ2aWNlTWVzaEdyb3VwKSB7XG4gICAgdGhpcy5zZWxlY3RlZFNlcnZpY2VNZXNoID0gc2VydmljZU1lc2g7XG4gICAgdGhpcy5jbHVzdGVycyA9ICh0aGlzLnNlbGVjdGVkUHJvamVjdC5zcGVjLmNsdXN0ZXJzIHx8IFtdKVxuICAgICAgLm1hcChjID0+IGMubmFtZSlcbiAgICAgIC5maWx0ZXIoY2x1c3RlciA9PlxuICAgICAgICB0aGlzLnNlcnZpY2VNZXNoZXNcbiAgICAgICAgICAuZmluZChcbiAgICAgICAgICAgIG1lc2ggPT5cbiAgICAgICAgICAgICAgdGhpcy5rOHNVdGlsLmdldE5hbWUobWVzaCkgPT09IHRoaXMuazhzVXRpbC5nZXROYW1lKHNlcnZpY2VNZXNoKSxcbiAgICAgICAgICApXG4gICAgICAgICAgLnNwZWMuY2x1c3RlcnMuaW5jbHVkZXMoY2x1c3RlciksXG4gICAgICApO1xuICAgIHRoaXMuc2VsZWN0Q2x1c3RlcignX19hbGwnKTtcbiAgfVxuXG4gIHNlbGVjdFByb2plY3QocHJvamVjdDogUHJvamVjdCwgaW5pdGlhbCA9IGZhbHNlKSB7XG4gICAgdGhpcy5wcm9qZWN0Q2hhbmdlLmVtaXQocHJvamVjdD8ubWV0YWRhdGEubmFtZSk7XG4gICAgdGhpcy5zZWxlY3RlZFByb2plY3QgPSBwcm9qZWN0O1xuICAgIHRoaXMuY2x1c3RlcnMgPSBwcm9qZWN0XG4gICAgICA/IChwcm9qZWN0LnNwZWMuY2x1c3RlcnMgfHwgW10pLm1hcChjID0+IGMubmFtZSlcbiAgICAgIDogW107XG4gICAgaWYgKHRoaXMuZGlzcGxheVNlcnZpY2VNZXNoKSB7XG4gICAgICB0aGlzLnByb2plY3RTZXJ2aWNlTWVzaGVzID0gdGhpcy5zZXJ2aWNlTWVzaGVzLmZpbHRlcihtZXNoID0+XG4gICAgICAgIG1lc2guc3BlYy5jbHVzdGVycy5zb21lKGNsdXN0ZXIgPT4gdGhpcy5jbHVzdGVycy5pbmNsdWRlcyhjbHVzdGVyKSksXG4gICAgICApO1xuICAgICAgaWYgKHRoaXMucHJvamVjdFNlcnZpY2VNZXNoZXM/Lmxlbmd0aCkge1xuICAgICAgICBsZXQgbWVzaE5hbWUgPSB0aGlzLnZhbHVlPy5zZXJ2aWNlbWVzaDtcblxuICAgICAgICBpZiAoIW1lc2hOYW1lKSB7XG4gICAgICAgICAgdGhpcy5hdXRoLmdldEFjY291bnRJbmZvKCkuc3Vic2NyaWJlKCh7IGVtYWlsIH0pID0+IHtcbiAgICAgICAgICAgIG1lc2hOYW1lID0gZ2V0V29ya3NwYWNlUGFyYW1zKGVtYWlsKT8uc2VydmljZW1lc2g7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzZWxlY3RlZFNlcnZpY2VNZXNoID1cbiAgICAgICAgICB0aGlzLnByb2plY3RTZXJ2aWNlTWVzaGVzLmZpbmQoXG4gICAgICAgICAgICBtZXNoID0+IHRoaXMuazhzVXRpbC5nZXROYW1lKG1lc2gpID09PSBtZXNoTmFtZSxcbiAgICAgICAgICApIHx8IHRoaXMucHJvamVjdFNlcnZpY2VNZXNoZXNbMF07XG4gICAgICAgIHRoaXMuc2VsZWN0U2VydmljZU1lc2goc2VsZWN0ZWRTZXJ2aWNlTWVzaCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGVkU2VydmljZU1lc2ggPSBudWxsO1xuICAgICAgICB0aGlzLmNsdXN0ZXJzID0gW107XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0Q2x1c3RlcignX19hbGwnLCBpbml0aWFsKTtcbiAgfVxuXG4gIHNlbGVjdENsdXN0ZXIoY2x1c3Rlck5hbWU6IHN0cmluZywgaW5pdGlhbCA9IGZhbHNlKSB7XG4gICAgdGhpcy5zZWxlY3RlZENsdXN0ZXIgPSBjbHVzdGVyTmFtZTtcbiAgICBjb25zdCBkaXNwbGF5ZWREYXRhID1cbiAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UuZ2V0Q2FjaGVkTmFtZXNwYWNlcyhcbiAgICAgICAgdGhpcy5zZWxlY3RlZFByb2plY3Q/Lm1ldGFkYXRhLm5hbWUsXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDbHVzdGVyLFxuICAgICAgKSB8fCBbXTtcbiAgICB0aGlzLmRpc3BsYXllZERhdGEgPSB0aGlzLmdldFNvcnRlZE5hbWVzcGFjZShcbiAgICAgIGRpc3BsYXllZERhdGEsXG4gICAgICBpbml0aWFsID8gdGhpcy52YWx1ZT8ubmFtZSA6IG51bGwsXG4gICAgKTtcbiAgICB0aGlzLnNldFNlbGVjdGVkTmFtZXNwYWNlKHRoaXMuZGlzcGxheWVkRGF0YSk7XG5cbiAgICB0aGlzLmNsdXN0ZXJDaGFuZ2UuZW1pdChcbiAgICAgIHRoaXMuc2VsZWN0ZWRDbHVzdGVyID09PSAnX19hbGwnID8gbnVsbCA6IGNsdXN0ZXJOYW1lLFxuICAgICk7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmxvYWQkJC5uZXh0KHtcbiAgICAgIHByb2plY3Q6IHRoaXMuc2VsZWN0ZWRQcm9qZWN0LFxuICAgICAgY2x1c3RlcjogY2x1c3Rlck5hbWUsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldFNlbGVjdGVkTmFtZXNwYWNlKGRhdGE6IE5hbWVzcGFjZURhdGFJdGVtW10pIHtcbiAgICBjb25zdCBzZWxlY3RlZE5hbWVzcGFjZSA9IHRoaXMudmFsdWVcbiAgICAgID8gZGF0YS5maW5kKFxuICAgICAgICAgIGl0ZW0gPT5cbiAgICAgICAgICAgIGl0ZW0ubmFtZSA9PT0gdGhpcy52YWx1ZS5uYW1lICYmXG4gICAgICAgICAgICB0aGlzLnZhbHVlLmNsdXN0ZXIgPT09IGl0ZW0uY2x1c3RlcixcbiAgICAgICAgKVxuICAgICAgOiBudWxsO1xuICAgIHRoaXMuc2VsZWN0ZWRVaWQgPSBzZWxlY3RlZE5hbWVzcGFjZVxuICAgICAgPyBzZWxlY3RlZE5hbWVzcGFjZS5fX29yaWdpbi5tZXRhZGF0YS51aWRcbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIG1hcFJlc291cmNlID0gKFxuICAgIGxpc3Q6IEt1YmVybmV0ZXNSZXNvdXJjZVtdLFxuICAgIHtcbiAgICAgIGlzTXVsdGlBcmNoLFxuICAgICAgY2x1c3RlcnMsXG4gICAgfToge1xuICAgICAgaXNNdWx0aUFyY2g6IGJvb2xlYW47XG4gICAgICBjbHVzdGVyczogQ2x1c3RlcltdO1xuICAgIH0sXG4gICk6IE5hbWVzcGFjZURhdGFJdGVtW10gPT5cbiAgICBsaXN0Lm1hcChpdGVtID0+IHtcbiAgICAgIGNvbnN0IGNsdXN0ZXIgPSB0aGlzLm5hbWVzcGFjZUNsdXN0ZXJNYXBbaXRlbS5tZXRhZGF0YS51aWRdO1xuICAgICAgY29uc3QgaXRlbURpc2FibGVkID0gdGhpcy5kaXNhYmxlRm4gPyB0aGlzLmRpc2FibGVGbihpdGVtKSA6IG51bGw7XG4gICAgICBjb25zdCBjYWNoZWRJdGVtID0gdGhpcy5kaXNwbGF5ZWREYXRhLmZpbmQoXG4gICAgICAgIG5zID0+IG5zLl9fb3JpZ2luLm1ldGFkYXRhLnVpZCA9PT0gaXRlbS5tZXRhZGF0YS51aWQsXG4gICAgICApO1xuICAgICAgY29uc3Qgc2VydmljZW1lc2ggPSB0aGlzLnNlcnZpY2VNZXNoZXMuZmluZChpdGVtID0+XG4gICAgICAgIGl0ZW0uc3BlYy5jbHVzdGVycy5pbmNsdWRlcyhjYWNoZWRJdGVtPy5jbHVzdGVyIHx8IGNsdXN0ZXIpLFxuICAgICAgKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IHRoaXMuazhzVXRpbC5nZXROYW1lKGl0ZW0pLFxuICAgICAgICBkaXNwbGF5TmFtZTogdGhpcy5rOHNVdGlsLmdldERpc3BsYXlOYW1lKGl0ZW0pLFxuICAgICAgICBjbHVzdGVyOiBjYWNoZWRJdGVtPy5jbHVzdGVyIHx8IGNsdXN0ZXIsXG4gICAgICAgIGNsdXN0ZXJEaXNwbGF5TmFtZTpcbiAgICAgICAgICBjYWNoZWRJdGVtPy5jbHVzdGVyRGlzcGxheU5hbWUgfHxcbiAgICAgICAgICB0aGlzLms4c1V0aWwuZ2V0RGlzcGxheU5hbWUoXG4gICAgICAgICAgICBjbHVzdGVycy5maW5kKGMgPT4gYy5tZXRhZGF0YS5uYW1lID09PSBjbHVzdGVyKSxcbiAgICAgICAgICApLFxuICAgICAgICBjbHVzdGVyQXJjaDpcbiAgICAgICAgICBjYWNoZWRJdGVtPy5jbHVzdGVyQXJjaCB8fCBpc011bHRpQXJjaFxuICAgICAgICAgICAgPyB0aGlzLmdldENsdXN0ZXJBcmNoKFxuICAgICAgICAgICAgICAgIGNsdXN0ZXJzLmZpbmQoYyA9PiBjLm1ldGFkYXRhLm5hbWUgPT09IGNsdXN0ZXIpLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgIHNlcnZpY2VNZXNoTmFtZTogc2VydmljZW1lc2ggPyB0aGlzLms4c1V0aWwuZ2V0TmFtZShzZXJ2aWNlbWVzaCkgOiAnJyxcbiAgICAgICAgc2VydmljZU1lc2hDbHVzdGVyczogc2VydmljZW1lc2ggPyBzZXJ2aWNlbWVzaC5zcGVjLmNsdXN0ZXJzIDogW10sXG4gICAgICAgIHNlcnZpY2VNZXNoSXN0aW9WZXJzaW9uOiBzZXJ2aWNlbWVzaFxuICAgICAgICAgID8gc2VydmljZW1lc2guc3BlYy5pc3Rpb1ZlcnNpb25cbiAgICAgICAgICA6ICcnLFxuICAgICAgICBhZG1pbjogY2FjaGVkSXRlbT8uYWRtaW4gfHwgJy0nLFxuICAgICAgICB0aW1lc3RhbXA6IHRoaXMuazhzVXRpbC5nZXRDcmVhdGlvblRpbWVzdGFtcChpdGVtKSxcbiAgICAgICAgc3RhdGU6IHtcbiAgICAgICAgICBkaXNhYmxlZDpcbiAgICAgICAgICAgIHRoaXMuZ3JpZFN0YXRlTWFwW2NsdXN0ZXJdPy5kaXNhYmxlZCB8fFxuICAgICAgICAgICAgaXRlbURpc2FibGVkPy5kaXNhYmxlZCB8fFxuICAgICAgICAgICAgdGhpcy5jaGVja0NsdXN0ZXJFcnJvcihjbHVzdGVycywgY2FjaGVkSXRlbT8uY2x1c3RlciB8fCBjbHVzdGVyKSB8fFxuICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgdG9vbHRpcDogdGhpcy5ncmlkU3RhdGVNYXBbY2x1c3Rlcl0/LmRpc2FibGVkXG4gICAgICAgICAgICA/IHRoaXMuZ3JpZFN0YXRlTWFwW2NsdXN0ZXJdPy50b29sdGlwIHx8ICcnXG4gICAgICAgICAgICA6IGl0ZW1EaXNhYmxlZD8udG9vbHRpcCxcbiAgICAgICAgfSxcbiAgICAgICAgX19vcmlnaW46IGl0ZW0sXG4gICAgICB9O1xuICAgIH0pO1xuXG4gIHByaXZhdGUgZ2V0Q2x1c3RlckFyY2goY2x1c3RlcjogQ2x1c3Rlcikge1xuICAgIHJldHVybiBnZXREaXNwbGF5QXJjaChcbiAgICAgIHRoaXMuazhzVXRpbC5nZXRMYWJlbChjbHVzdGVyLCAnYXJjaCcpLFxuICAgICkgYXMgQ2x1c3RlckFyY2g7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrQ2x1c3RlckVycm9yKGNsdXN0ZXJzOiBDbHVzdGVyW10sIGNsdXN0ZXI6IHN0cmluZykge1xuICAgIHJldHVybiAoXG4gICAgICBjbHVzdGVyc1xuICAgICAgICAuZmluZChpID0+IHRoaXMuazhzVXRpbC5nZXROYW1lKGkpID09PSBjbHVzdGVyKVxuICAgICAgICA/LnN0YXR1cy5jb25kaXRpb25zLmZpbmQoYyA9PiBjLnR5cGUgPT09ICdOb2RlTm90UmVhZHknKT8uc3RhdHVzICE9PVxuICAgICAgJ0ZhbHNlJ1xuICAgICk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmaWx0ZXJcIj5cbiAgPGF1aS1mb3JtLWl0ZW0+XG4gICAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3sgJ3Byb2plY3QnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICA8YXVpLXNlbGVjdFxuICAgICAgW25nQ2xhc3NdPVwiZGlzcGxheVNlcnZpY2VNZXNoID8gJ2xhbmctbm90LXpoOiF0dy13LVsyMzBweF0nIDogJydcIlxuICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICBuYW1lPVwicHJvamVjdFwiXG4gICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkUHJvamVjdFwiXG4gICAgICBbZmlsdGVyRm5dPVwicHJvamVjdEZpbHRlckZuXCJcbiAgICAgIFt0cmFja0ZuXT1cInByb2plY3RUcmFja0ZuXCJcbiAgICAgICh2YWx1ZUNoYW5nZSk9XCJzZWxlY3RQcm9qZWN0KCRldmVudClcIlxuICAgICAgW2xvYWRpbmddPVwiIXByb2plY3RzLmxlbmd0aCAmJiBwcm9qZWN0c0xvYWRpbmdcIlxuICAgID5cbiAgICAgIDxhdWktb3B0aW9uXG4gICAgICAgICpuZ0Zvcj1cImxldCBwcm9qZWN0IG9mIHByb2plY3RzXCJcbiAgICAgICAgW3ZhbHVlXT1cInByb2plY3RcIlxuICAgICAgICBbbGFiZWxdPVwicHJvamVjdCB8IGFjbFVuaW9uRGlzcGxheU5hbWVcIlxuICAgICAgPlxuICAgICAgICB7eyBwcm9qZWN0IHwgYWNsVW5pb25EaXNwbGF5TmFtZSB9fVxuICAgICAgPC9hdWktb3B0aW9uPlxuICAgIDwvYXVpLXNlbGVjdD5cbiAgPC9hdWktZm9ybS1pdGVtPlxuICA8IS0tIEFTTSDpgInmi6nnvZHmoLzov4fmu6Tpm4bnvqTpgInpobkgLS0+XG4gIDxhdWktZm9ybS1pdGVtICpuZ0lmPVwiZGlzcGxheVNlcnZpY2VNZXNoXCI+XG4gICAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3sgJ3NlcnZpY2VfbWVzaCcgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgIDxhdWktc2VsZWN0XG4gICAgICBjbGFzcz1cImxhbmctbm90LXpoOiF0dy13LVsyMzBweF1cIlxuICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICBuYW1lPVwic2VydmljZU1lc2hQcm9qZWN0XCJcbiAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRTZXJ2aWNlTWVzaFwiXG4gICAgICBbdHJhY2tGbl09XCJzZXJ2aWNlTWVzaFRyYWNrRm5cIlxuICAgICAgKHZhbHVlQ2hhbmdlKT1cInNlbGVjdFNlcnZpY2VNZXNoKCRldmVudClcIlxuICAgICAgW2xvYWRpbmddPVwiIXByb2plY3RzLmxlbmd0aCAmJiBwcm9qZWN0c0xvYWRpbmdcIlxuICAgID5cbiAgICAgIDxhdWktb3B0aW9uXG4gICAgICAgICpuZ0Zvcj1cImxldCBtZXNoIG9mIHByb2plY3RTZXJ2aWNlTWVzaGVzXCJcbiAgICAgICAgW3ZhbHVlXT1cIm1lc2hcIlxuICAgICAgICBbbGFiZWxdPVwiXG4gICAgICAgICAgKG1lc2ggfCBhY2xOYW1lKSArXG4gICAgICAgICAgKG1lc2guc3BlYz8uaXN0aW9WZXJzaW9uXG4gICAgICAgICAgICA/ICcoSXN0aW8gJyArIG1lc2guc3BlYy5pc3Rpb1ZlcnNpb24gKyAnKSdcbiAgICAgICAgICAgIDogJycpXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIHt7IG1lc2ggfCBhY2xOYW1lXG4gICAgICAgIH19PG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lc2guc3BlYz8uaXN0aW9WZXJzaW9uXCJcbiAgICAgICAgICA+KElzdGlvIHt7IG1lc2guc3BlYy5pc3Rpb1ZlcnNpb24gfX0pPC9uZy1jb250YWluZXJcbiAgICAgICAgPlxuICAgICAgPC9hdWktb3B0aW9uPlxuICAgICAgPGF1aS1vcHRpb24tcGxhY2Vob2xkZXI+XG4gICAgICAgIHt7ICdub19kYXRhJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9hdWktb3B0aW9uLXBsYWNlaG9sZGVyPlxuICAgIDwvYXVpLXNlbGVjdD5cbiAgPC9hdWktZm9ybS1pdGVtPlxuICA8YXVpLWZvcm0taXRlbT5cbiAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57eyAnY2x1c3RlcicgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgIDxhdWktc2VsZWN0XG4gICAgICBbbmdDbGFzc109XCJkaXNwbGF5U2VydmljZU1lc2ggPyAnbGFuZy1ub3Qtemg6IXR3LXctWzIzMHB4XScgOiAnJ1wiXG4gICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgIG5hbWU9XCJwcm9qZWN0XCJcbiAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRDbHVzdGVyXCJcbiAgICAgICh2YWx1ZUNoYW5nZSk9XCJzZWxlY3RDbHVzdGVyKCRldmVudClcIlxuICAgICAgW2xvYWRpbmddPVwiIXByb2plY3RzLmxlbmd0aCAmJiBwcm9qZWN0c0xvYWRpbmdcIlxuICAgID5cbiAgICAgIDxhdWktb3B0aW9uXG4gICAgICAgIFt2YWx1ZV09XCInX19hbGwnXCJcbiAgICAgICAgW2xhYmVsXT1cIidhbGwnIHwgdHJhbnNsYXRlXCJcbiAgICAgID5cbiAgICAgICAge3sgJ2FsbF9jbHVzdGVycycgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvYXVpLW9wdGlvbj5cbiAgICAgIDxhdWktb3B0aW9uXG4gICAgICAgICpuZ0Zvcj1cImxldCBjbHVzdGVyIG9mIGNsdXN0ZXJzXCJcbiAgICAgICAgW3ZhbHVlXT1cImNsdXN0ZXJcIlxuICAgICAgICBbbGFiZWxdPVwiY2x1c3RlckxhYmVsXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImNsdXN0ZXIgfCBwdXJlOiBjaGVja0NsdXN0ZXJFcnJvciQgfCBhc3luY1wiXG4gICAgICAgIFthdWlUb29sdGlwXT1cIidjdXJyZW50X2NsdXN0ZXJfc3RhdHVzX2Fibm9ybWFsJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFthdWlUb29sdGlwRGlzYWJsZWRdPVwiIShjbHVzdGVyIHwgcHVyZTogY2hlY2tDbHVzdGVyRXJyb3IkIHwgYXN5bmMpXCJcbiAgICAgICAgW2xhYmVsQ29udGV4dF09XCJ7IGNsdXN0ZXI6IGNsdXN0ZXIgfVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNsdXN0ZXJMYWJlbDsgY29udGV4dDogeyBjbHVzdGVyOiBjbHVzdGVyIH1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2F1aS1vcHRpb24+XG4gICAgPC9hdWktc2VsZWN0PlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgI2NsdXN0ZXJMYWJlbFxuICAgICAgbGV0LWNsdXN0ZXI9XCJjbHVzdGVyXCJcbiAgICA+XG4gICAgICB7eyBjbHVzdGVyIH19XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwiY2x1c3RlciB8IHB1cmU6IGdldENsdXN0ZXJEaXNwbGF5TmFtZSQgfCBhc3luYyBhcyBkaXNwbGF5TmFtZVwiXG4gICAgICA+XG4gICAgICAgICh7eyBkaXNwbGF5TmFtZSB9fSlcbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvYXVpLWZvcm0taXRlbT5cbjwvZGl2PlxuPGFjbC1yZXNvdXJjZS1kYXRhLWdyaWRcbiAgW2RhdGFdPVwiZGlzcGxheWVkRGF0YSB8fCBbXVwiXG4gIFtmaWVsZHNdPVwiZmllbGRzXCJcbiAgW2NvbnRleHRdPVwiY29udGV4dFwiXG4gIChzZWxlY3RJdGVtKT1cIm9uU2VsZWN0KCRldmVudClcIlxuICBbYWN0aW9uVGVtcGxhdGVSZWZdPVwiYWN0aW9uVGVtcGxhdGVSZWZcIlxuICBbc2VsZWN0ZWRVaWRdPVwic2VsZWN0ZWRVaWRcIlxuICBbbG9hZGluZ109XCJmb3JjZUxvYWRpbmcgfHwgKCFkaXNwbGF5ZWREYXRhPy5sZW5ndGggJiYgbG9hZGluZylcIlxuICAocmVsb2FkKT1cInJlbG9hZCgpXCJcbj5cbiAgPG5nLWNvbnRhaW5lciBhY2xSZXNvdXJjZUdyaWRIZWFkZXI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvYWNsLXJlc291cmNlLWRhdGEtZ3JpZD5cbiJdfQ==
476
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NamespaceListComponent, { className: "NamespaceListComponent" }); })();
477
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2J1c2luZXNzL3Jlc291cmNlLXNlbGVjdC9pbnRlcm5hbHMvbmFtZXNwYWNlLWxpc3QvY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2J1c2luZXNzL3Jlc291cmNlLXNlbGVjdC9pbnRlcm5hbHMvbmFtZXNwYWNlLWxpc3QvdGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFdBQVcsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckQsT0FBTyxFQUNMLGFBQWEsRUFDYixhQUFhLEVBQ2IsUUFBUSxFQUNSLEVBQUUsRUFDRixVQUFVLEVBQ1YsUUFBUSxFQUNSLEdBQUcsRUFDSCxTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsRUFDVCxHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQ0wsV0FBVyxFQUVYLGNBQWMsRUFFZCxVQUFVLEVBSVYsbUJBQW1CLEVBQ25CLFlBQVksR0FDYixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsa0JBQWtC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RFIsS0FBSztZQUlOLEtBQUs7a0JBREosS0FBSztZQUlOLGtCQUFrQjtrQkFEakIsS0FBSztZQUlOLGFBQWE7a0JBRFosTUFBTTtZQUlQLGFBQWE7a0JBRFosTUFBTTs7a0ZBbkJJLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdEZpbHRlck9wdGlvbiB9IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtZW1vaXplLCBwYXJ0aXRpb24sIHVuaXEgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtcbiAgUmVwbGF5U3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgZm9ya0pvaW4sXG4gIG9mLFxuICBjYXRjaEVycm9yLFxuICBmaW5hbGl6ZSxcbiAgbWFwLFxuICBzdGFydFdpdGgsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZVVudGlsLFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBBUElfR0FURVdBWSxcbiAgQ2x1c3RlcixcbiAgSzhzVXRpbFNlcnZpY2UsXG4gIFByb2plY3QsXG4gIHB1Ymxpc2hSZWYsXG4gIFNlcnZpY2VNZXNoR3JvdXAsXG4gIEt1YmVybmV0ZXNSZXNvdXJjZSxcbiAgS3ViZXJuZXRlc1Jlc291cmNlTGlzdCxcbiAgZ2V0RG9tYWluQW5ub3RhdGlvbixcbiAgRElTUExBWV9OQU1FLFxufSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgQ29tbW9uTGF5b3V0Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9wYWdlLXNjYWZmb2xkL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgUmVzb3VyY2VMaXN0QmFzZSB9IGZyb20gJy4uLy4uL2Jhc2UtbGlzdCc7XG5pbXBvcnQgeyBSZXNvdXJjZVNlbGVjdENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IGdldERpc3BsYXlBcmNoLCBnZXRXb3Jrc3BhY2VQYXJhbXMgfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbmltcG9ydCB7IEs4c0FwaVNlcnZpY2UgfSBmcm9tICcuLy4uLy4uLy4uLy4uL2FwaS9wdWJsaWMtYXBpJztcbmltcG9ydCB7XG4gIENsdXN0ZXJBcmNoLFxuICBEaXNhYmxlRm4sXG4gIE5hbWVzcGFjZURhdGFJdGVtLFxuICBTZWxlY3RlZE5hbWVzcGFjZVZhbHVlLFxufSBmcm9tICcuLy4uLy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNsLW5hbWVzcGFjZS1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RlbXBsYXRlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdHlsZS5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOYW1lc3BhY2VMaXN0Q29tcG9uZW50XG4gIGV4dGVuZHMgUmVzb3VyY2VMaXN0QmFzZVxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XG57XG4gIEBJbnB1dCgpXG4gIGFjdGlvblRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVGbjogRGlzYWJsZUZuO1xuXG4gIEBJbnB1dCgpXG4gIHZhbHVlOiBTZWxlY3RlZE5hbWVzcGFjZVZhbHVlO1xuXG4gIEBJbnB1dCgpXG4gIGRpc3BsYXlTZXJ2aWNlTWVzaCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKVxuICBjbHVzdGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHByb2plY3RDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBwcm9qZWN0czogUHJvamVjdFtdID0gW107XG5cbiAgc2VsZWN0ZWRQcm9qZWN0OiBQcm9qZWN0O1xuICBzZWxlY3RlZENsdXN0ZXI6IHN0cmluZztcbiAgY2x1c3RlcnM6IHN0cmluZ1tdID0gW107XG4gIHByb2plY3RzTG9hZGluZyA9IHRydWU7XG5cbiAgc2VydmljZU1lc2hlczogU2VydmljZU1lc2hHcm91cFtdID0gW107XG4gIHByb2plY3RTZXJ2aWNlTWVzaGVzOiBTZXJ2aWNlTWVzaEdyb3VwW10gPSBbXTtcbiAgc2VsZWN0ZWRTZXJ2aWNlTWVzaDogU2VydmljZU1lc2hHcm91cDtcblxuICB0eXBlID0gJ25hbWVzcGFjZSc7XG5cbiAgZGlzcGxheWVkRGF0YTogTmFtZXNwYWNlRGF0YUl0ZW1bXSA9IFtdO1xuXG4gIG5hbWVzcGFjZUNsdXN0ZXJNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICBncmlkU3RhdGVNYXA6IFJlY29yZDxzdHJpbmcsIFJldHVyblR5cGU8RGlzYWJsZUZuPj4gPSB7fTtcblxuICBzZWxlY3RlZFVpZDogc3RyaW5nO1xuXG4gIGxvYWQkJCA9IG5ldyBSZXBsYXlTdWJqZWN0PHsgcHJvamVjdDogUHJvamVjdDsgY2x1c3Rlcjogc3RyaW5nIH0+KDEpO1xuXG4gIHNlcnZpY2VNZXNoZXMkID0gdGhpcy5rOHNTZXJ2aWNlXG4gICAgLmdldEdsb2JhbFJlc291cmNlTGlzdDxTZXJ2aWNlTWVzaEdyb3VwPih7XG4gICAgICBkZWZpbml0aW9uOiB7XG4gICAgICAgIGFwaUdyb3VwOiAnYXNtLmFsYXVkYS5pbycsXG4gICAgICAgIGFwaVZlcnNpb246ICd2MWFscGhhMScsXG4gICAgICAgIHR5cGU6ICdzZXJ2aWNlbWVzaGdyb3VwcycsXG4gICAgICB9LFxuICAgICAgbmFtZXNwYWNlZDogdHJ1ZSxcbiAgICB9KVxuICAgIC5waXBlKG1hcChyZXMgPT4gcmVzLml0ZW1zKSk7XG5cbiAgY2x1c3RlcnMkID0gdGhpcy5odHRwXG4gICAgLmdldDxLdWJlcm5ldGVzUmVzb3VyY2VMaXN0PENsdXN0ZXI+PihcbiAgICAgIGAke0FQSV9HQVRFV0FZfS9hdXRoL3YxL2NsdXN0ZXJzP2F2YWlsYWJsZUNsdXN0ZXJzPWZhbHNlYCxcbiAgICApXG4gICAgLnBpcGUoXG4gICAgICBtYXAocmVzID0+IHJlcz8uaXRlbXMpLFxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihbXSBhcyBDbHVzdGVyW10pKSxcbiAgICAgIHB1Ymxpc2hSZWYoKSxcbiAgICApO1xuXG4gIGdldENsdXN0ZXJEaXNwbGF5TmFtZSQgPSBtZW1vaXplKChjbHVzdGVyOiBzdHJpbmcpID0+XG4gICAgdGhpcy5jbHVzdGVycyQucGlwZShcbiAgICAgIG1hcChjbHVzdGVycyA9PlxuICAgICAgICB0aGlzLms4c1V0aWwuZ2V0RGlzcGxheU5hbWUoXG4gICAgICAgICAgY2x1c3RlcnMuZmluZChpID0+IHRoaXMuazhzVXRpbC5nZXROYW1lKGkpID09PSBjbHVzdGVyKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKSxcbiAgKTtcblxuICBjaGVja0NsdXN0ZXJFcnJvciQgPSBtZW1vaXplKChjbHVzdGVyOiBzdHJpbmcpID0+XG4gICAgdGhpcy5jbHVzdGVycyQucGlwZShcbiAgICAgIG1hcChjbHVzdGVycyA9PiB0aGlzLmNoZWNrQ2x1c3RlckVycm9yKGNsdXN0ZXJzLCBjbHVzdGVyKSksXG4gICAgKSxcbiAgKTtcblxuICBuYW1lc3BhY2VzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMubG9hZCQkLFxuICAgIHRoaXMucmVsb2FkJCQucGlwZShzdGFydFdpdGgobnVsbCBhcyB2b2lkKSksXG4gIF0pLnBpcGUoXG4gICAgc3dpdGNoTWFwKChbeyBwcm9qZWN0LCBjbHVzdGVyIH1dKSA9PiB7XG4gICAgICBpZiAoIXByb2plY3QgfHwgIWNsdXN0ZXIpIHtcbiAgICAgICAgcmV0dXJuIG9mKFtdIGFzIEt1YmVybmV0ZXNSZXNvdXJjZVtdKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNsdXN0ZXJzID0gY2x1c3RlciA9PT0gJ19fYWxsJyA/IHRoaXMuY2x1c3RlcnMgOiBbY2x1c3Rlcl07XG4gICAgICByZXR1cm4gY2x1c3RlcnMubGVuZ3RoXG4gICAgICAgID8gZm9ya0pvaW4oXG4gICAgICAgICAgICBjbHVzdGVycy5tYXAoY2x1c3RlciA9PlxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxheW91dFNlcnZpY2VcbiAgICAgICAgICAgICAgICAuZ2V0Q2x1c3Rlck5hbWVzcGFjZXMocHJvamVjdC5tZXRhZGF0YS5uYW1lLCBjbHVzdGVyKVxuICAgICAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YoW10pKSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICkucGlwZShcbiAgICAgICAgICAgIHRhcChsaXN0cyA9PiB7XG4gICAgICAgICAgICAgIHRoaXMubmFtZXNwYWNlQ2x1c3Rlck1hcCA9IGxpc3RzLnJlZHVjZShcbiAgICAgICAgICAgICAgICAoYWNjLCBjdXIsIGkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgICAgICAuLi5jdXIucmVkdWNlKFxuICAgICAgICAgICAgICAgICAgICAoc3ViQWNjLCBzdWJDdXJyKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgIC4uLnN1YkFjYyxcbiAgICAgICAgICAgICAgICAgICAgICBbc3ViQ3Vyci5tZXRhZGF0YS51aWRdOiBjbHVzdGVyc1tpXSxcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKChsaXN0czogS3ViZXJuZXRlc1Jlc291cmNlW11bXSkgPT4gbGlzdHMuZmxhdCgpKSxcbiAgICAgICAgICApXG4gICAgICAgIDogb2YoW10gYXMgS3ViZXJuZXRlc1Jlc291cmNlW10pO1xuICAgIH0pLFxuICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkJCksXG4gICAgcHVibGlzaFJlZigpLFxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29tbW9uTGF5b3V0U2VydmljZTogQ29tbW9uTGF5b3V0Q29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrOHNTZXJ2aWNlOiBLOHNBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCxcbiAgICBjb250ZXh0U2VydmljZTogUmVzb3VyY2VTZWxlY3RDb250ZXh0U2VydmljZSxcbiAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIGs4c1V0aWw6IEs4c1V0aWxTZXJ2aWNlLFxuICApIHtcbiAgICBzdXBlcihjZHIsIGs4c1V0aWwsIGNvbnRleHRTZXJ2aWNlKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIEZyb20gY2FjaGVcbiAgICB0aGlzLnByb2plY3RzID0gdGhpcy5jb250ZXh0U2VydmljZS5jYWNoZWRQcm9qZWN0UmVzb3VyY2VzO1xuICAgIHRoaXMuc2VydmljZU1lc2hlcyA9IHRoaXMuY29udGV4dFNlcnZpY2UuY2FjaGVkU2VydmljZU1lc2hHcm91cFJlc291cmNlcztcbiAgICBpZiAodGhpcy5wcm9qZWN0cy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuaW5pdFByb2plY3QodGhpcy5wcm9qZWN0cyk7XG4gICAgfVxuXG4gICAgLy8gR2V0IGxhdGVzdCBkYXRhIGluIHRoZSBiYWNrZ3JvdW5kXG4gICAgZm9ya0pvaW4oW1xuICAgICAgdGhpcy5jb21tb25MYXlvdXRTZXJ2aWNlXG4gICAgICAgIC5nZXRQcm9qZWN0cygpXG4gICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YoW10gYXMgUHJvamVjdFtdKSkpLFxuICAgICAgdGhpcy5kaXNwbGF5U2VydmljZU1lc2hcbiAgICAgICAgPyB0aGlzLnNlcnZpY2VNZXNoZXMkXG4gICAgICAgIDogb2YoW10gYXMgU2VydmljZU1lc2hHcm91cFtdKSxcbiAgICBdKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnByb2plY3RzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKFtwcm9qZWN0cywgc2VydmljZU1lc2hlc10pID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZGlzcGxheVNlcnZpY2VNZXNoKSB7XG4gICAgICAgICAgdGhpcy5zZXJ2aWNlTWVzaGVzID0gc2VydmljZU1lc2hlcztcbiAgICAgICAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLmNhY2hlZFNlcnZpY2VNZXNoR3JvdXBSZXNvdXJjZXMgPSBzZXJ2aWNlTWVzaGVzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucHJvamVjdHMgPSBwcm9qZWN0cztcbiAgICAgICAgaWYgKCF0aGlzLmNvbnRleHRTZXJ2aWNlLmNhY2hlZFByb2plY3RSZXNvdXJjZXM/Lmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMuaW5pdFByb2plY3QocHJvamVjdHMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UuY2FjaGVkUHJvamVjdFJlc291cmNlcyA9IHRoaXMucHJvamVjdHM7XG4gICAgICB9KTtcblxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuY2x1c3RlcnMkLCB0aGlzLm5hbWVzcGFjZXMkXSkuc3Vic2NyaWJlKFxuICAgICAgKFtjbHVzdGVycywgZGF0YV0pID0+IHtcbiAgICAgICAgY29uc3QgaXNNdWx0aUFyY2ggPVxuICAgICAgICAgIHVuaXEoY2x1c3RlcnMubWFwKGMgPT4gdGhpcy5rOHNVdGlsLmdldExhYmVsKGMsICdhcmNoJykpKS5sZW5ndGggPiAxO1xuICAgICAgICB0aGlzLmRpc3BsYXllZERhdGEgPSB0aGlzLm1hcFJlc291cmNlKGRhdGEsIHtcbiAgICAgICAgICBjbHVzdGVycyxcbiAgICAgICAgICBpc011bHRpQXJjaCxcbiAgICAgICAgfSkuZmlsdGVyKG5zID0+IHRoaXMuY29udGV4dCA9PT0gJ3BhZ2UnIHx8ICFucy5zdGF0ZT8uZGlzYWJsZWQpO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkTmFtZXNwYWNlKHRoaXMuZGlzcGxheWVkRGF0YSk7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVWlkKSB7XG4gICAgICAgICAgdGhpcy5kaXNwbGF5ZWREYXRhID0gdGhpcy5nZXRTb3J0ZWROYW1lc3BhY2UoXG4gICAgICAgICAgICB0aGlzLmRpc3BsYXllZERhdGEsXG4gICAgICAgICAgICB0aGlzLnZhbHVlLm5hbWUsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mb3JjZUxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdG9yZU5hbWVzcGFjZXMoKTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBnZXRTb3J0ZWROYW1lc3BhY2UocmF3RGF0YTogTmFtZXNwYWNlRGF0YUl0ZW1bXSwgbmFtZXNwYWNlPzogc3RyaW5nKSB7XG4gICAgaWYgKCFuYW1lc3BhY2UpIHtcbiAgICAgIHJldHVybiByYXdEYXRhO1xuICAgIH1cbiAgICBjb25zdCBbc2VsZWN0ZWQsIG90aGVyc10gPSBwYXJ0aXRpb24oXG4gICAgICB0aGlzLmRpc3BsYXllZERhdGEsXG4gICAgICBpdGVtID0+IGl0ZW0ubmFtZSA9PT0gbmFtZXNwYWNlLFxuICAgICk7XG4gICAgcmV0dXJuIFsuLi5zZWxlY3RlZCwgLi4ub3RoZXJzXTtcbiAgfVxuXG4gIHN0b3JlTmFtZXNwYWNlcygpIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRQcm9qZWN0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnNlbGVjdGVkQ2x1c3RlciA9PT0gJ19fYWxsJykge1xuICAgICAgZm9yIChjb25zdCBjbHVzdGVyIG9mIHRoaXMuY2x1c3RlcnMpIHtcbiAgICAgICAgdGhpcy5jb250ZXh0U2VydmljZS5zdG9yZU5hbWVzcGFjZXMoXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2plY3QubWV0YWRhdGEubmFtZSxcbiAgICAgICAgICBjbHVzdGVyLFxuICAgICAgICAgIHRoaXMuZGlzcGxheWVkRGF0YS5maWx0ZXIoaXRlbSA9PiBpdGVtLmNsdXN0ZXIgPT09IGNsdXN0ZXIpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLnN0b3JlTmFtZXNwYWNlcyhcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcm9qZWN0Lm1ldGFkYXRhLm5hbWUsXG4gICAgICB0aGlzLnNlbGVjdGVkQ2x1c3RlcixcbiAgICAgIHRoaXMuZGlzcGxheWVkRGF0YSxcbiAgICApO1xuICB9XG5cbiAgcHJvamVjdEZpbHRlckZuID0gKGtleXdvcmQgPSAnJywgb3B0aW9uOiBTZWxlY3RGaWx0ZXJPcHRpb248UHJvamVjdD4pID0+IHtcbiAgICBjb25zdCBrID0ga2V5d29yZC50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiAoXG4gICAgICBvcHRpb24udmFsdWUubWV0YWRhdGEubmFtZS5pbmNsdWRlcyhrKSB8fFxuICAgICAgZ2V0RG9tYWluQW5ub3RhdGlvbihESVNQTEFZX05BTUUsIG9wdGlvbi52YWx1ZSlcbiAgICAgICAgPy50b0xvd2VyQ2FzZSgpXG4gICAgICAgID8uaW5jbHVkZXMoaylcbiAgICApO1xuICB9O1xuXG4gIGNsdXN0ZXJGaWx0ZXJGbiA9IChrZXl3b3JkID0gJycsIG9wdGlvbjogU2VsZWN0RmlsdGVyT3B0aW9uPHN0cmluZz4pID0+IHtcbiAgICBjb25zdCBrID0ga2V5d29yZC50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChvcHRpb24udmFsdWUgPT09ICdfX2FsbCcpIHtcbiAgICAgIHJldHVybiAob3B0aW9uLmxhYmVsIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhrKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IG5hbWUsIGRpc3BsYXlOYW1lIH0gPSBvcHRpb24ubGFiZWxDb250ZXh0IGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICByZXR1cm4gbmFtZS5pbmNsdWRlcyhrKSB8fCBkaXNwbGF5TmFtZT8udG9Mb3dlckNhc2UoKT8uaW5jbHVkZXMoayk7XG4gIH07XG5cbiAgc2VydmljZU1lc2hGaWx0ZXJGbiA9IChcbiAgICBrZXl3b3JkID0gJycsXG4gICAgb3B0aW9uOiBTZWxlY3RGaWx0ZXJPcHRpb248U2VydmljZU1lc2hHcm91cD4sXG4gICkgPT4ge1xuICAgIGNvbnN0IGsgPSBrZXl3b3JkLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgdmVyc2lvbiA9IG9wdGlvbi52YWx1ZS5zcGVjPy5pc3Rpb1ZlcnNpb25cbiAgICAgID8gYElzdGlvICR7b3B0aW9uLnZhbHVlLnNwZWMuaXN0aW9WZXJzaW9ufWBcbiAgICAgIDogJyc7XG4gICAgcmV0dXJuIChcbiAgICAgIG9wdGlvbi52YWx1ZS5tZXRhZGF0YS5uYW1lLmluY2x1ZGVzKGspIHx8XG4gICAgICB2ZXJzaW9uLnRvTG93ZXJDYXNlKCk/LmluY2x1ZGVzKGspXG4gICAgKTtcbiAgfTtcblxuICBwcm9qZWN0VHJhY2tGbiA9IChwcm9qZWN0OiBQcm9qZWN0KSA9PiBwcm9qZWN0Py5tZXRhZGF0YS5uYW1lO1xuXG4gIHNlcnZpY2VNZXNoVHJhY2tGbiA9IChtZXNoOiBTZXJ2aWNlTWVzaEdyb3VwKSA9PiBtZXNoPy5tZXRhZGF0YS5uYW1lO1xuXG4gIHByaXZhdGUgaW5pdFByb2plY3QocHJvamVjdHM6IFByb2plY3RbXSkge1xuICAgIHRoaXMuc2VsZWN0UHJvamVjdChcbiAgICAgIChwcm9qZWN0cyB8fCBbXSkubGVuZ3RoXG4gICAgICAgID8gcHJvamVjdHMuZmluZChpdGVtID0+IGl0ZW0ubWV0YWRhdGEubmFtZSA9PT0gdGhpcy52YWx1ZT8ucHJvamVjdCkgfHxcbiAgICAgICAgICAgIHByb2plY3RzWzBdXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHRydWUsXG4gICAgKTtcbiAgICB0aGlzLmxvYWQuZW1pdCh7XG4gICAgICBwcm9qZWN0OiBwcm9qZWN0cy5sZW5ndGgsXG4gICAgICBjbHVzdGVyOiB1bmlxKFxuICAgICAgICBwcm9qZWN0cy5yZWR1Y2UoXG4gICAgICAgICAgKGFjYywgY3VyKSA9PiBbLi4uYWNjLCAuLi4oY3VyLnNwZWMuY2x1c3RlcnMgfHwgW10pLm1hcChjID0+IGMubmFtZSldLFxuICAgICAgICAgIFtdLFxuICAgICAgICApLFxuICAgICAgKS5sZW5ndGgsXG4gICAgfSk7XG4gIH1cblxuICBzZWxlY3RTZXJ2aWNlTWVzaChzZXJ2aWNlTWVzaDogU2VydmljZU1lc2hHcm91cCkge1xuICAgIHRoaXMuc2VsZWN0ZWRTZXJ2aWNlTWVzaCA9IHNlcnZpY2VNZXNoO1xuICAgIHRoaXMuY2x1c3RlcnMgPSAodGhpcy5zZWxlY3RlZFByb2plY3Quc3BlYy5jbHVzdGVycyB8fCBbXSlcbiAgICAgIC5tYXAoYyA9PiBjLm5hbWUpXG4gICAgICAuZmlsdGVyKGNsdXN0ZXIgPT5cbiAgICAgICAgdGhpcy5zZXJ2aWNlTWVzaGVzXG4gICAgICAgICAgLmZpbmQoXG4gICAgICAgICAgICBtZXNoID0+XG4gICAgICAgICAgICAgIHRoaXMuazhzVXRpbC5nZXROYW1lKG1lc2gpID09PSB0aGlzLms4c1V0aWwuZ2V0TmFtZShzZXJ2aWNlTWVzaCksXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zcGVjLmNsdXN0ZXJzLmluY2x1ZGVzKGNsdXN0ZXIpLFxuICAgICAgKTtcbiAgICB0aGlzLnNlbGVjdENsdXN0ZXIoJ19fYWxsJyk7XG4gIH1cblxuICBzZWxlY3RQcm9qZWN0KHByb2plY3Q6IFByb2plY3QsIGluaXRpYWwgPSBmYWxzZSkge1xuICAgIHRoaXMucHJvamVjdENoYW5nZS5lbWl0KHByb2plY3Q/Lm1ldGFkYXRhLm5hbWUpO1xuICAgIHRoaXMuc2VsZWN0ZWRQcm9qZWN0ID0gcHJvamVjdDtcbiAgICB0aGlzLmNsdXN0ZXJzID0gcHJvamVjdFxuICAgICAgPyAocHJvamVjdC5zcGVjLmNsdXN0ZXJzIHx8IFtdKS5tYXAoYyA9PiBjLm5hbWUpXG4gICAgICA6IFtdO1xuICAgIGlmICh0aGlzLmRpc3BsYXlTZXJ2aWNlTWVzaCkge1xuICAgICAgdGhpcy5wcm9qZWN0U2VydmljZU1lc2hlcyA9IHRoaXMuc2VydmljZU1lc2hlcy5maWx0ZXIobWVzaCA9PlxuICAgICAgICBtZXNoLnNwZWMuY2x1c3RlcnMuc29tZShjbHVzdGVyID0+IHRoaXMuY2x1c3RlcnMuaW5jbHVkZXMoY2x1c3RlcikpLFxuICAgICAgKTtcbiAgICAgIGlmICh0aGlzLnByb2plY3RTZXJ2aWNlTWVzaGVzPy5sZW5ndGgpIHtcbiAgICAgICAgbGV0IG1lc2hOYW1lID0gdGhpcy52YWx1ZT8uc2VydmljZW1lc2g7XG5cbiAgICAgICAgaWYgKCFtZXNoTmFtZSkge1xuICAgICAgICAgIHRoaXMuYXV0aC5nZXRBY2NvdW50SW5mbygpLnN1YnNjcmliZSgoeyBlbWFpbCB9KSA9PiB7XG4gICAgICAgICAgICBtZXNoTmFtZSA9IGdldFdvcmtzcGFjZVBhcmFtcyhlbWFpbCk/LnNlcnZpY2VtZXNoO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRTZXJ2aWNlTWVzaCA9XG4gICAgICAgICAgdGhpcy5wcm9qZWN0U2VydmljZU1lc2hlcy5maW5kKFxuICAgICAgICAgICAgbWVzaCA9PiB0aGlzLms4c1V0aWwuZ2V0TmFtZShtZXNoKSA9PT0gbWVzaE5hbWUsXG4gICAgICAgICAgKSB8fCB0aGlzLnByb2plY3RTZXJ2aWNlTWVzaGVzWzBdO1xuICAgICAgICB0aGlzLnNlbGVjdFNlcnZpY2VNZXNoKHNlbGVjdGVkU2VydmljZU1lc2gpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFNlcnZpY2VNZXNoID0gbnVsbDtcbiAgICAgICAgdGhpcy5jbHVzdGVycyA9IFtdO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNlbGVjdENsdXN0ZXIoJ19fYWxsJywgaW5pdGlhbCk7XG4gIH1cblxuICBzZWxlY3RDbHVzdGVyKGNsdXN0ZXJOYW1lOiBzdHJpbmcsIGluaXRpYWwgPSBmYWxzZSkge1xuICAgIHRoaXMuc2VsZWN0ZWRDbHVzdGVyID0gY2x1c3Rlck5hbWU7XG4gICAgY29uc3QgZGlzcGxheWVkRGF0YSA9XG4gICAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLmdldENhY2hlZE5hbWVzcGFjZXMoXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9qZWN0Py5tZXRhZGF0YS5uYW1lLFxuICAgICAgICB0aGlzLnNlbGVjdGVkQ2x1c3RlcixcbiAgICAgICkgfHwgW107XG4gICAgdGhpcy5kaXNwbGF5ZWREYXRhID0gdGhpcy5nZXRTb3J0ZWROYW1lc3BhY2UoXG4gICAgICBkaXNwbGF5ZWREYXRhLFxuICAgICAgaW5pdGlhbCA/IHRoaXMudmFsdWU/Lm5hbWUgOiBudWxsLFxuICAgICk7XG4gICAgdGhpcy5zZXRTZWxlY3RlZE5hbWVzcGFjZSh0aGlzLmRpc3BsYXllZERhdGEpO1xuXG4gICAgdGhpcy5jbHVzdGVyQ2hhbmdlLmVtaXQoXG4gICAgICB0aGlzLnNlbGVjdGVkQ2x1c3RlciA9PT0gJ19fYWxsJyA/IG51bGwgOiBjbHVzdGVyTmFtZSxcbiAgICApO1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5sb2FkJCQubmV4dCh7XG4gICAgICBwcm9qZWN0OiB0aGlzLnNlbGVjdGVkUHJvamVjdCxcbiAgICAgIGNsdXN0ZXI6IGNsdXN0ZXJOYW1lLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTZWxlY3RlZE5hbWVzcGFjZShkYXRhOiBOYW1lc3BhY2VEYXRhSXRlbVtdKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWROYW1lc3BhY2UgPSB0aGlzLnZhbHVlXG4gICAgICA/IGRhdGEuZmluZChcbiAgICAgICAgICBpdGVtID0+XG4gICAgICAgICAgICBpdGVtLm5hbWUgPT09IHRoaXMudmFsdWUubmFtZSAmJlxuICAgICAgICAgICAgdGhpcy52YWx1ZS5jbHVzdGVyID09PSBpdGVtLmNsdXN0ZXIsXG4gICAgICAgIClcbiAgICAgIDogbnVsbDtcbiAgICB0aGlzLnNlbGVjdGVkVWlkID0gc2VsZWN0ZWROYW1lc3BhY2VcbiAgICAgID8gc2VsZWN0ZWROYW1lc3BhY2UuX19vcmlnaW4ubWV0YWRhdGEudWlkXG4gICAgICA6IG51bGw7XG4gIH1cblxuICBtYXBSZXNvdXJjZSA9IChcbiAgICBsaXN0OiBLdWJlcm5ldGVzUmVzb3VyY2VbXSxcbiAgICB7XG4gICAgICBpc011bHRpQXJjaCxcbiAgICAgIGNsdXN0ZXJzLFxuICAgIH06IHtcbiAgICAgIGlzTXVsdGlBcmNoOiBib29sZWFuO1xuICAgICAgY2x1c3RlcnM6IENsdXN0ZXJbXTtcbiAgICB9LFxuICApOiBOYW1lc3BhY2VEYXRhSXRlbVtdID0+XG4gICAgbGlzdC5tYXAoaXRlbSA9PiB7XG4gICAgICBjb25zdCBjbHVzdGVyID0gdGhpcy5uYW1lc3BhY2VDbHVzdGVyTWFwW2l0ZW0ubWV0YWRhdGEudWlkXTtcbiAgICAgIGNvbnN0IGl0ZW1EaXNhYmxlZCA9IHRoaXMuZGlzYWJsZUZuID8gdGhpcy5kaXNhYmxlRm4oaXRlbSkgOiBudWxsO1xuICAgICAgY29uc3QgY2FjaGVkSXRlbSA9IHRoaXMuZGlzcGxheWVkRGF0YS5maW5kKFxuICAgICAgICBucyA9PiBucy5fX29yaWdpbi5tZXRhZGF0YS51aWQgPT09IGl0ZW0ubWV0YWRhdGEudWlkLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHNlcnZpY2VtZXNoID0gdGhpcy5zZXJ2aWNlTWVzaGVzLmZpbmQoaXRlbSA9PlxuICAgICAgICBpdGVtLnNwZWMuY2x1c3RlcnMuaW5jbHVkZXMoY2FjaGVkSXRlbT8uY2x1c3RlciB8fCBjbHVzdGVyKSxcbiAgICAgICk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiB0aGlzLms4c1V0aWwuZ2V0TmFtZShpdGVtKSxcbiAgICAgICAgZGlzcGxheU5hbWU6IHRoaXMuazhzVXRpbC5nZXREaXNwbGF5TmFtZShpdGVtKSxcbiAgICAgICAgY2x1c3RlcjogY2FjaGVkSXRlbT8uY2x1c3RlciB8fCBjbHVzdGVyLFxuICAgICAgICBjbHVzdGVyRGlzcGxheU5hbWU6XG4gICAgICAgICAgY2FjaGVkSXRlbT8uY2x1c3RlckRpc3BsYXlOYW1lIHx8XG4gICAgICAgICAgdGhpcy5rOHNVdGlsLmdldERpc3BsYXlOYW1lKFxuICAgICAgICAgICAgY2x1c3RlcnMuZmluZChjID0+IGMubWV0YWRhdGEubmFtZSA9PT0gY2x1c3RlciksXG4gICAgICAgICAgKSxcbiAgICAgICAgY2x1c3RlckFyY2g6XG4gICAgICAgICAgY2FjaGVkSXRlbT8uY2x1c3RlckFyY2ggfHwgaXNNdWx0aUFyY2hcbiAgICAgICAgICAgID8gdGhpcy5nZXRDbHVzdGVyQXJjaChcbiAgICAgICAgICAgICAgICBjbHVzdGVycy5maW5kKGMgPT4gYy5tZXRhZGF0YS5uYW1lID09PSBjbHVzdGVyKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICBzZXJ2aWNlTWVzaE5hbWU6IHNlcnZpY2VtZXNoID8gdGhpcy5rOHNVdGlsLmdldE5hbWUoc2VydmljZW1lc2gpIDogJycsXG4gICAgICAgIHNlcnZpY2VNZXNoQ2x1c3RlcnM6IHNlcnZpY2VtZXNoID8gc2VydmljZW1lc2guc3BlYy5jbHVzdGVycyA6IFtdLFxuICAgICAgICBzZXJ2aWNlTWVzaElzdGlvVmVyc2lvbjogc2VydmljZW1lc2hcbiAgICAgICAgICA/IHNlcnZpY2VtZXNoLnNwZWMuaXN0aW9WZXJzaW9uXG4gICAgICAgICAgOiAnJyxcbiAgICAgICAgYWRtaW46IGNhY2hlZEl0ZW0/LmFkbWluIHx8ICctJyxcbiAgICAgICAgdGltZXN0YW1wOiB0aGlzLms4c1V0aWwuZ2V0Q3JlYXRpb25UaW1lc3RhbXAoaXRlbSksXG4gICAgICAgIHN0YXRlOiB7XG4gICAgICAgICAgZGlzYWJsZWQ6XG4gICAgICAgICAgICB0aGlzLmdyaWRTdGF0ZU1hcFtjbHVzdGVyXT8uZGlzYWJsZWQgfHxcbiAgICAgICAgICAgIGl0ZW1EaXNhYmxlZD8uZGlzYWJsZWQgfHxcbiAgICAgICAgICAgIHRoaXMuY2hlY2tDbHVzdGVyRXJyb3IoY2x1c3RlcnMsIGNhY2hlZEl0ZW0/LmNsdXN0ZXIgfHwgY2x1c3RlcikgfHxcbiAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgIHRvb2x0aXA6IHRoaXMuZ3JpZFN0YXRlTWFwW2NsdXN0ZXJdPy5kaXNhYmxlZFxuICAgICAgICAgICAgPyB0aGlzLmdyaWRTdGF0ZU1hcFtjbHVzdGVyXT8udG9vbHRpcCB8fCAnJ1xuICAgICAgICAgICAgOiBpdGVtRGlzYWJsZWQ/LnRvb2x0aXAsXG4gICAgICAgIH0sXG4gICAgICAgIF9fb3JpZ2luOiBpdGVtLFxuICAgICAgfTtcbiAgICB9KTtcblxuICBwcml2YXRlIGdldENsdXN0ZXJBcmNoKGNsdXN0ZXI6IENsdXN0ZXIpIHtcbiAgICByZXR1cm4gZ2V0RGlzcGxheUFyY2goXG4gICAgICB0aGlzLms4c1V0aWwuZ2V0TGFiZWwoY2x1c3RlciwgJ2FyY2gnKSxcbiAgICApIGFzIENsdXN0ZXJBcmNoO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0NsdXN0ZXJFcnJvcihjbHVzdGVyczogQ2x1c3RlcltdLCBjbHVzdGVyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgY2x1c3RlcnNcbiAgICAgICAgLmZpbmQoaSA9PiB0aGlzLms4c1V0aWwuZ2V0TmFtZShpKSA9PT0gY2x1c3RlcilcbiAgICAgICAgPy5zdGF0dXMuY29uZGl0aW9ucy5maW5kKGMgPT4gYy50eXBlID09PSAnTm9kZU5vdFJlYWR5Jyk/LnN0YXR1cyAhPT1cbiAgICAgICdGYWxzZSdcbiAgICApO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmlsdGVyXCI+XG4gIDxhdWktZm9ybS1pdGVtPlxuICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPnt7ICdwcm9qZWN0JyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgPGF1aS1zZWxlY3RcbiAgICAgIFtuZ0NsYXNzXT1cImRpc3BsYXlTZXJ2aWNlTWVzaCA/ICdsYW5nLW5vdC16aDohdHctdy1bMjMwcHhdJyA6ICcnXCJcbiAgICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgICAgbmFtZT1cInByb2plY3RcIlxuICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFByb2plY3RcIlxuICAgICAgW2ZpbHRlckZuXT1cInByb2plY3RGaWx0ZXJGblwiXG4gICAgICBbdHJhY2tGbl09XCJwcm9qZWN0VHJhY2tGblwiXG4gICAgICAodmFsdWVDaGFuZ2UpPVwic2VsZWN0UHJvamVjdCgkZXZlbnQpXCJcbiAgICAgIFtsb2FkaW5nXT1cIiFwcm9qZWN0cy5sZW5ndGggJiYgcHJvamVjdHNMb2FkaW5nXCJcbiAgICA+XG4gICAgICA8YXVpLW9wdGlvblxuICAgICAgICAqbmdGb3I9XCJsZXQgcHJvamVjdCBvZiBwcm9qZWN0c1wiXG4gICAgICAgIFt2YWx1ZV09XCJwcm9qZWN0XCJcbiAgICAgICAgW2xhYmVsXT1cInByb2plY3QgfCBhY2xVbmlvbkRpc3BsYXlOYW1lXCJcbiAgICAgID5cbiAgICAgICAge3sgcHJvamVjdCB8IGFjbFVuaW9uRGlzcGxheU5hbWUgfX1cbiAgICAgIDwvYXVpLW9wdGlvbj5cbiAgICAgIDxhdWktb3B0aW9uLXBsYWNlaG9sZGVyPlxuICAgICAgICB7eyAnbm9fZGF0YScgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvYXVpLW9wdGlvbi1wbGFjZWhvbGRlcj5cbiAgICA8L2F1aS1zZWxlY3Q+XG4gIDwvYXVpLWZvcm0taXRlbT5cbiAgPCEtLSBBU00g6YCJ5oup572R5qC86L+H5ruk6ZuG576k6YCJ6aG5IC0tPlxuICA8YXVpLWZvcm0taXRlbSAqbmdJZj1cImRpc3BsYXlTZXJ2aWNlTWVzaFwiPlxuICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPnt7ICdzZXJ2aWNlX21lc2gnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICA8YXVpLXNlbGVjdFxuICAgICAgY2xhc3M9XCJsYW5nLW5vdC16aDohdHctdy1bMjMwcHhdXCJcbiAgICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgICAgbmFtZT1cInNlcnZpY2VNZXNoUHJvamVjdFwiXG4gICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkU2VydmljZU1lc2hcIlxuICAgICAgW3RyYWNrRm5dPVwic2VydmljZU1lc2hUcmFja0ZuXCJcbiAgICAgICh2YWx1ZUNoYW5nZSk9XCJzZWxlY3RTZXJ2aWNlTWVzaCgkZXZlbnQpXCJcbiAgICAgIFtsb2FkaW5nXT1cIiFwcm9qZWN0cy5sZW5ndGggJiYgcHJvamVjdHNMb2FkaW5nXCJcbiAgICA+XG4gICAgICA8YXVpLW9wdGlvblxuICAgICAgICAqbmdGb3I9XCJsZXQgbWVzaCBvZiBwcm9qZWN0U2VydmljZU1lc2hlc1wiXG4gICAgICAgIFt2YWx1ZV09XCJtZXNoXCJcbiAgICAgICAgW2xhYmVsXT1cIlxuICAgICAgICAgIChtZXNoIHwgYWNsTmFtZSkgK1xuICAgICAgICAgIChtZXNoLnNwZWM/LmlzdGlvVmVyc2lvblxuICAgICAgICAgICAgPyAnIChJc3RpbyAnICsgbWVzaC5zcGVjLmlzdGlvVmVyc2lvbiArICcpJ1xuICAgICAgICAgICAgOiAnJylcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAge3sgbWVzaCB8IGFjbE5hbWUgfX1cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lc2guc3BlYz8uaXN0aW9WZXJzaW9uXCI+XG4gICAgICAgICAgKElzdGlvIHt7IG1lc2guc3BlYy5pc3Rpb1ZlcnNpb24gfX0pXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9hdWktb3B0aW9uPlxuICAgICAgPGF1aS1vcHRpb24tcGxhY2Vob2xkZXI+XG4gICAgICAgIHt7ICdub19kYXRhJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9hdWktb3B0aW9uLXBsYWNlaG9sZGVyPlxuICAgIDwvYXVpLXNlbGVjdD5cbiAgPC9hdWktZm9ybS1pdGVtPlxuICA8YXVpLWZvcm0taXRlbT5cbiAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57eyAnY2x1c3RlcicgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgIDxhdWktc2VsZWN0XG4gICAgICBbbmdDbGFzc109XCJkaXNwbGF5U2VydmljZU1lc2ggPyAnbGFuZy1ub3Qtemg6IXR3LXctWzIzMHB4XScgOiAnJ1wiXG4gICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgIG5hbWU9XCJjbHVzdGVyXCJcbiAgICAgIFtmaWx0ZXJGbl09XCJjbHVzdGVyRmlsdGVyRm5cIlxuICAgICAgW2xvYWRpbmddPVwiIXByb2plY3RzLmxlbmd0aCAmJiBwcm9qZWN0c0xvYWRpbmdcIlxuICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZENsdXN0ZXJcIlxuICAgICAgKHZhbHVlQ2hhbmdlKT1cInNlbGVjdENsdXN0ZXIoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPGF1aS1vcHRpb25cbiAgICAgICAgW3ZhbHVlXT1cIidfX2FsbCdcIlxuICAgICAgICBbbGFiZWxdPVwiJ2FsbCcgfCB0cmFuc2xhdGVcIlxuICAgICAgPlxuICAgICAgICB7eyAnYWxsJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9hdWktb3B0aW9uPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2x1c3Rlck5hbWUgb2YgY2x1c3RlcnNcIj5cbiAgICAgICAgPGF1aS1vcHRpb25cbiAgICAgICAgICAqZGVjbGFyZT1cIntcbiAgICAgICAgICAgIG5hbWU6IGNsdXN0ZXJOYW1lLFxuICAgICAgICAgICAgZGlzcGxheU5hbWU6IGNsdXN0ZXJOYW1lIHwgcHVyZTogZ2V0Q2x1c3RlckRpc3BsYXlOYW1lJCB8IGFzeW5jXG4gICAgICAgICAgfSBhcyBjbHVzdGVyXCJcbiAgICAgICAgICBbdmFsdWVdPVwiY2x1c3Rlck5hbWVcIlxuICAgICAgICAgIFtsYWJlbF09XCJjbHVzdGVyTGFiZWxcIlxuICAgICAgICAgIFtsYWJlbENvbnRleHRdPVwiY2x1c3RlclwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImNsdXN0ZXJOYW1lIHwgcHVyZTogY2hlY2tDbHVzdGVyRXJyb3IkIHwgYXN5bmNcIlxuICAgICAgICAgIFthdWlUb29sdGlwXT1cIidjdXJyZW50X2NsdXN0ZXJfc3RhdHVzX2Fibm9ybWFsJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW2F1aVRvb2x0aXBEaXNhYmxlZF09XCJcbiAgICAgICAgICAgICEoY2x1c3Rlck5hbWUgfCBwdXJlOiBjaGVja0NsdXN0ZXJFcnJvciQgfCBhc3luYylcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjbHVzdGVyTGFiZWw7IGNvbnRleHQ6IGNsdXN0ZXJcIlxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9hdWktb3B0aW9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8YXVpLW9wdGlvbi1wbGFjZWhvbGRlcj5cbiAgICAgICAge3sgJ25vX2RhdGEnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2F1aS1vcHRpb24tcGxhY2Vob2xkZXI+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgI2NsdXN0ZXJMYWJlbFxuICAgICAgICBsZXQtbmFtZT1cIm5hbWVcIlxuICAgICAgICBsZXQtZGlzcGxheU5hbWU9XCJkaXNwbGF5TmFtZVwiXG4gICAgICA+XG4gICAgICAgIHt7IG5hbWUgfX1cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlOYW1lXCI+KHt7IGRpc3BsYXlOYW1lIH19KTwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2F1aS1zZWxlY3Q+XG4gIDwvYXVpLWZvcm0taXRlbT5cbjwvZGl2PlxuPGFjbC1yZXNvdXJjZS1kYXRhLWdyaWRcbiAgW2RhdGFdPVwiZGlzcGxheWVkRGF0YSB8fCBbXVwiXG4gIFtmaWVsZHNdPVwiZmllbGRzXCJcbiAgW2NvbnRleHRdPVwiY29udGV4dFwiXG4gIChzZWxlY3RJdGVtKT1cIm9uU2VsZWN0KCRldmVudClcIlxuICBbYWN0aW9uVGVtcGxhdGVSZWZdPVwiYWN0aW9uVGVtcGxhdGVSZWZcIlxuICBbc2VsZWN0ZWRVaWRdPVwic2VsZWN0ZWRVaWRcIlxuICBbbG9hZGluZ109XCJmb3JjZUxvYWRpbmcgfHwgKCFkaXNwbGF5ZWREYXRhPy5sZW5ndGggJiYgbG9hZGluZylcIlxuICAocmVsb2FkKT1cInJlbG9hZCgpXCJcbj5cbiAgPG5nLWNvbnRhaW5lciBhY2xSZXNvdXJjZUdyaWRIZWFkZXI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvYWNsLXJlc291cmNlLWRhdGEtZ3JpZD5cbiJdfQ==