@alauda-fe/common 1.4.39-beta.0 → 1.4.40

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 (583) hide show
  1. package/api/k8s-api.service.d.ts +3 -1
  2. package/array-form-table/form/component.d.ts +1 -1
  3. package/core/abstract/base-nested-form-control.d.ts +1 -1
  4. package/core/services/feature-gate.service.d.ts +1 -1
  5. package/core/types/k8s/crd.d.ts +16 -0
  6. package/core/types/k8s/raw.d.ts +4 -0
  7. package/core/types/resource-definitions.d.ts +1 -9
  8. package/core/utils/version.d.ts +1 -1
  9. package/esm2022/api/auth-api.service.mjs +7 -3
  10. package/esm2022/api/k8s-api.service.mjs +17 -7
  11. package/esm2022/business/resource-select/exports/namespace-selector/component.mjs +7 -7
  12. package/esm2022/code/resource-yaml-display/component.mjs +2 -2
  13. package/esm2022/code/resource-yaml-editor/component.mjs +2 -2
  14. package/esm2022/core/types/k8s/crd.mjs +1 -1
  15. package/esm2022/core/types/k8s/raw.mjs +1 -1
  16. package/esm2022/core/types/resource-definitions.mjs +1 -5
  17. package/esm2022/page-scaffold/navigation/nav-menu/nav-menu.types.mjs +1 -1
  18. package/esm2022/page-scaffold/page/helper-directives.mjs +14 -1
  19. package/esm2022/page-scaffold/page/page.component.mjs +32 -13
  20. package/esm2022/page-scaffold/page/page.module.mjs +8 -4
  21. package/esm2022/page-scaffold/public-api.mjs +2 -1
  22. package/esm2022/page-scaffold/trademark-footer/public-api.mjs +2 -0
  23. package/esm2022/page-scaffold/trademark-footer/trademark-footer.component.mjs +126 -0
  24. package/esm2022/permission/k8s-permission.service.mjs +4 -3
  25. package/esm2022/pod-status/component.mjs +19 -7
  26. package/esm2022/pod-status/status.mjs +44 -15
  27. package/esm2022/table/component.mjs +298 -255
  28. package/esm2022/table/types.mjs +1 -1
  29. package/k8s-resource-list/k8s-resource-paged-list.d.ts +2 -2
  30. package/package.json +1 -1
  31. package/page-scaffold/navigation/nav-menu/nav-menu.types.d.ts +8 -0
  32. package/page-scaffold/page/helper-directives.d.ts +6 -0
  33. package/page-scaffold/page/page.component.d.ts +2 -1
  34. package/page-scaffold/page/page.module.d.ts +1 -1
  35. package/page-scaffold/public-api.d.ts +1 -0
  36. package/page-scaffold/trademark-footer/public-api.d.ts +1 -0
  37. package/page-scaffold/trademark-footer/trademark-footer.component.d.ts +40 -0
  38. package/permission/k8s-permission.service.d.ts +1 -1
  39. package/styles/mixins.scss +14 -5
  40. package/table/component.d.ts +2 -1
  41. package/table/helper.d.ts +1 -1
  42. package/table/types.d.ts +1 -0
  43. package/abnormal-page/abnormal-page.component.d.ts.map +0 -1
  44. package/abnormal-page/abnormal-page.module.d.ts.map +0 -1
  45. package/abnormal-page/public-api.d.ts.map +0 -1
  46. package/alauda-fe-common.d.ts.map +0 -1
  47. package/api/acp-common-api.service.d.ts.map +0 -1
  48. package/api/api-compatible.interceptor.d.ts.map +0 -1
  49. package/api/api-gateway.interceptor.d.ts.map +0 -1
  50. package/api/api-gateway.service.d.ts.map +0 -1
  51. package/api/auth-api.service.d.ts.map +0 -1
  52. package/api/cluster-version.service.d.ts.map +0 -1
  53. package/api/crypto.interceptor.d.ts.map +0 -1
  54. package/api/helpers.d.ts.map +0 -1
  55. package/api/k8s-api-resource.service.d.ts.map +0 -1
  56. package/api/k8s-api.service.d.ts.map +0 -1
  57. package/api/page-visibility.service.d.ts.map +0 -1
  58. package/api/platform-ui.service.d.ts.map +0 -1
  59. package/api/product.service.d.ts.map +0 -1
  60. package/api/project-api.service.d.ts.map +0 -1
  61. package/api/public-api.d.ts.map +0 -1
  62. package/api/resource-update.service.d.ts.map +0 -1
  63. package/api/types.d.ts.map +0 -1
  64. package/array-form-table/base-string-map-form.component.d.ts.map +0 -1
  65. package/array-form-table/form/component.d.ts.map +0 -1
  66. package/array-form-table/form/module.d.ts.map +0 -1
  67. package/array-form-table/key-value-form/component.d.ts.map +0 -1
  68. package/array-form-table/key-value-table/component.d.ts.map +0 -1
  69. package/array-form-table/public-api.d.ts.map +0 -1
  70. package/array-form-table/string-array-form/component.d.ts.map +0 -1
  71. package/async-data/async-data-loader.d.ts.map +0 -1
  72. package/async-data/async-data.module.d.ts.map +0 -1
  73. package/async-data/error-page/component.d.ts.map +0 -1
  74. package/async-data/page-state/component.d.ts.map +0 -1
  75. package/async-data/public-api.d.ts.map +0 -1
  76. package/async-data/types.d.ts.map +0 -1
  77. package/authorization/app-init-url.d.ts.map +0 -1
  78. package/authorization/authorization.d.ts.map +0 -1
  79. package/authorization/constants.d.ts.map +0 -1
  80. package/authorization/guard.service.d.ts.map +0 -1
  81. package/authorization/interceptor.service.d.ts.map +0 -1
  82. package/authorization/public-api.d.ts.map +0 -1
  83. package/authorization/runtime.d.ts +0 -33
  84. package/authorization/runtime.d.ts.map +0 -1
  85. package/authorization/session-manage.service.d.ts.map +0 -1
  86. package/authorization/state.service.d.ts.map +0 -1
  87. package/authorization/storage-token.d.ts.map +0 -1
  88. package/business/notification-disabled-container/component.d.ts.map +0 -1
  89. package/business/notification-disabled-container/public-api.d.ts.map +0 -1
  90. package/business/public-api.d.ts.map +0 -1
  91. package/business/resource-select/base-list.d.ts.map +0 -1
  92. package/business/resource-select/context.service.d.ts.map +0 -1
  93. package/business/resource-select/exports/cluster-list/component.d.ts.map +0 -1
  94. package/business/resource-select/exports/cluster-selector/component.d.ts.map +0 -1
  95. package/business/resource-select/exports/icon/component.d.ts.map +0 -1
  96. package/business/resource-select/exports/mesh-group-selector/component.d.ts.map +0 -1
  97. package/business/resource-select/exports/namespace-list/component.d.ts.map +0 -1
  98. package/business/resource-select/exports/namespace-page/component.d.ts.map +0 -1
  99. package/business/resource-select/exports/namespace-selector/component.d.ts.map +0 -1
  100. package/business/resource-select/exports/project-list/component.d.ts.map +0 -1
  101. package/business/resource-select/exports/project-page/component.d.ts.map +0 -1
  102. package/business/resource-select/exports/project-selector/component.d.ts.map +0 -1
  103. package/business/resource-select/helpers.directive.d.ts.map +0 -1
  104. package/business/resource-select/internals/data-grid/component.d.ts.map +0 -1
  105. package/business/resource-select/internals/meshgroup-list/component.d.ts.map +0 -1
  106. package/business/resource-select/internals/no-data/component.d.ts.map +0 -1
  107. package/business/resource-select/internals/resource-dashboard/component.d.ts.map +0 -1
  108. package/business/resource-select/internals/selector-popup/component.d.ts.map +0 -1
  109. package/business/resource-select/internals/selector-popup/ref.d.ts.map +0 -1
  110. package/business/resource-select/internals/selector-popup/service.d.ts.map +0 -1
  111. package/business/resource-select/module.d.ts.map +0 -1
  112. package/business/resource-select/project.service.d.ts.map +0 -1
  113. package/business/resource-select/public-api.d.ts.map +0 -1
  114. package/business/resource-select/types.d.ts.map +0 -1
  115. package/business/resource-select/utils.d.ts.map +0 -1
  116. package/chart/chart.module.d.ts.map +0 -1
  117. package/chart/chart.service.d.ts.map +0 -1
  118. package/chart/common/axis/axis-label.component.d.ts.map +0 -1
  119. package/chart/common/axis/x-axis-ticks.component.d.ts.map +0 -1
  120. package/chart/common/axis/x-axis.component.d.ts.map +0 -1
  121. package/chart/common/axis/x-plot-lines.component.d.ts.map +0 -1
  122. package/chart/common/axis/y-axis-ticks.component.d.ts.map +0 -1
  123. package/chart/common/axis/y-axis.component.d.ts.map +0 -1
  124. package/chart/common/axis/y-plot-lines.component.d.ts.map +0 -1
  125. package/chart/common/chart/chart.component.d.ts.map +0 -1
  126. package/chart/common/legend/legend.component.d.ts.map +0 -1
  127. package/chart/common/public-api.d.ts.map +0 -1
  128. package/chart/common/range-area/range-area.component.d.ts.map +0 -1
  129. package/chart/common/reference-area/reference-area.component.d.ts.map +0 -1
  130. package/chart/common/series/area-series.component.d.ts.map +0 -1
  131. package/chart/common/series/bar-path.component.d.ts.map +0 -1
  132. package/chart/common/series/bar-series.component.d.ts.map +0 -1
  133. package/chart/common/series/line-series.component.d.ts.map +0 -1
  134. package/chart/common/series/series.component.d.ts.map +0 -1
  135. package/chart/common/tooltip/tooltip.component.d.ts.map +0 -1
  136. package/chart/constants.d.ts.map +0 -1
  137. package/chart/custom-template/dropdown-legend.d.ts.map +0 -1
  138. package/chart/public-api.d.ts.map +0 -1
  139. package/chart/types.d.ts.map +0 -1
  140. package/chart/utils.d.ts.map +0 -1
  141. package/code/code-display-dialog/component.d.ts.map +0 -1
  142. package/code/code-editor-configs.d.ts.map +0 -1
  143. package/code/code.module.d.ts.map +0 -1
  144. package/code/k8s-yaml-display-dialog/component.d.ts.map +0 -1
  145. package/code/managed-fields-folder.util.d.ts.map +0 -1
  146. package/code/public-api.d.ts.map +0 -1
  147. package/code/resource-yaml-display/component.d.ts.map +0 -1
  148. package/code/resource-yaml-editor/component.d.ts.map +0 -1
  149. package/code/yaml-examples.d.ts.map +0 -1
  150. package/code/yaml-sidebar/component.d.ts.map +0 -1
  151. package/code/yaml-sidebar/types.d.ts.map +0 -1
  152. package/core/abstract/base-form-container.d.ts.map +0 -1
  153. package/core/abstract/base-nested-form-control.d.ts.map +0 -1
  154. package/core/abstract/public-api.d.ts.map +0 -1
  155. package/core/components/public-api.d.ts.map +0 -1
  156. package/core/components/tree/module.d.ts.map +0 -1
  157. package/core/components/tree/node/component.d.ts.map +0 -1
  158. package/core/components/tree/outlet.d.ts.map +0 -1
  159. package/core/components/tree/padding.d.ts.map +0 -1
  160. package/core/components/tree/toggle.d.ts.map +0 -1
  161. package/core/components/tree/tree/component.d.ts.map +0 -1
  162. package/core/constants/constants.d.ts.map +0 -1
  163. package/core/constants/patterns.d.ts.map +0 -1
  164. package/core/constants/public-api.d.ts.map +0 -1
  165. package/core/constants/status-icons.d.ts.map +0 -1
  166. package/core/constants/timezones.d.ts.map +0 -1
  167. package/core/constants/tokens.d.ts.map +0 -1
  168. package/core/directives/aui-code-editor.directive.d.ts.map +0 -1
  169. package/core/directives/click-outside.directive.d.ts.map +0 -1
  170. package/core/directives/declare.directive.d.ts.map +0 -1
  171. package/core/directives/disabled.directive.d.ts.map +0 -1
  172. package/core/directives/feature-gate.directive.d.ts.map +0 -1
  173. package/core/directives/intercept-deactivate.directive.d.ts.map +0 -1
  174. package/core/directives/last-form-item.directive.d.ts.map +0 -1
  175. package/core/directives/page-header-content.directive.d.ts.map +0 -1
  176. package/core/directives/public-api.d.ts.map +0 -1
  177. package/core/directives/readonly-field.directive.d.ts.map +0 -1
  178. package/core/directives/resize.directive.d.ts.map +0 -1
  179. package/core/directives/scroll-border-observer.directive.d.ts.map +0 -1
  180. package/core/directives/scroll-to-first-invalid.directive.d.ts.map +0 -1
  181. package/core/guards/feature.guard.d.ts.map +0 -1
  182. package/core/guards/intercept-deactivate.guard.d.ts.map +0 -1
  183. package/core/guards/leave-edit-page.guard.d.ts.map +0 -1
  184. package/core/guards/project-namespace.guard.d.ts.map +0 -1
  185. package/core/guards/public-api.d.ts.map +0 -1
  186. package/core/module.d.ts.map +0 -1
  187. package/core/pipes/calc.pipe.d.ts.map +0 -1
  188. package/core/pipes/cron-human-readable.pipe.d.ts.map +0 -1
  189. package/core/pipes/crontab-next.pipe.d.ts.map +0 -1
  190. package/core/pipes/duration.pipe.d.ts.map +0 -1
  191. package/core/pipes/field-not-available.pipe.d.ts.map +0 -1
  192. package/core/pipes/img-header.pipe.d.ts.map +0 -1
  193. package/core/pipes/img-theme.pipe.d.ts.map +0 -1
  194. package/core/pipes/k8s-util.pipe.d.ts.map +0 -1
  195. package/core/pipes/k8s-util.pipe.module.d.ts.map +0 -1
  196. package/core/pipes/keyvalue.pipe.d.ts.map +0 -1
  197. package/core/pipes/marked.pipe.d.ts.map +0 -1
  198. package/core/pipes/minimum-format.pipe.d.ts.map +0 -1
  199. package/core/pipes/page-env.pipe.d.ts.map +0 -1
  200. package/core/pipes/parse-json-translate.pipe.d.ts.map +0 -1
  201. package/core/pipes/parse-json.pipe.d.ts.map +0 -1
  202. package/core/pipes/public-api.d.ts.map +0 -1
  203. package/core/pipes/pure.pipe.d.ts.map +0 -1
  204. package/core/pipes/pure.pipe.module.d.ts.map +0 -1
  205. package/core/pipes/safe.pipe.d.ts.map +0 -1
  206. package/core/pipes/sanitize.pipe.d.ts.map +0 -1
  207. package/core/pipes/time.pipe.d.ts.map +0 -1
  208. package/core/pipes/timezone-display.pipe.d.ts.map +0 -1
  209. package/core/public-api.d.ts.map +0 -1
  210. package/core/services/aui-paginator-intl.service.d.ts.map +0 -1
  211. package/core/services/aui-tooltip-copy-intl.service.d.ts.map +0 -1
  212. package/core/services/context.service.d.ts.map +0 -1
  213. package/core/services/custom-code-editor-intl.service.d.ts.map +0 -1
  214. package/core/services/disaster-recovery.service.d.ts.map +0 -1
  215. package/core/services/encode-url-param.interceptor.d.ts.map +0 -1
  216. package/core/services/feature-gate.service.d.ts.map +0 -1
  217. package/core/services/form-row-duplicate/form-row-duplicate.service.d.ts.map +0 -1
  218. package/core/services/intercept-deactivate.service.d.ts.map +0 -1
  219. package/core/services/k8s-util.service.d.ts.map +0 -1
  220. package/core/services/kubernetes-schema.service.d.ts.map +0 -1
  221. package/core/services/on-resize.service.d.ts.map +0 -1
  222. package/core/services/plugin-util.service.d.ts.map +0 -1
  223. package/core/services/public-api.d.ts.map +0 -1
  224. package/core/services/silently-navigate.service.d.ts.map +0 -1
  225. package/core/services/time.service.d.ts.map +0 -1
  226. package/core/services/ui-state.service.d.ts.map +0 -1
  227. package/core/services/workspace-helper.service.d.ts.map +0 -1
  228. package/core/services/yaml-util.service.d.ts.map +0 -1
  229. package/core/types/commons.d.ts.map +0 -1
  230. package/core/types/helpers.d.ts.map +0 -1
  231. package/core/types/k8s/core.d.ts.map +0 -1
  232. package/core/types/k8s/crd.d.ts.map +0 -1
  233. package/core/types/k8s/public-api.d.ts.map +0 -1
  234. package/core/types/k8s/raw.d.ts.map +0 -1
  235. package/core/types/openapi.d.ts.map +0 -1
  236. package/core/types/public-api.d.ts.map +0 -1
  237. package/core/types/resource-definitions.d.ts.map +0 -1
  238. package/core/types/schema.d.ts.map +0 -1
  239. package/core/utils/browser.d.ts.map +0 -1
  240. package/core/utils/cache-store.d.ts.map +0 -1
  241. package/core/utils/color-helpers.d.ts.map +0 -1
  242. package/core/utils/common.d.ts.map +0 -1
  243. package/core/utils/create-recursive-filter.d.ts.map +0 -1
  244. package/core/utils/cron-util.d.ts.map +0 -1
  245. package/core/utils/decorators.d.ts.map +0 -1
  246. package/core/utils/dev-helpers.d.ts.map +0 -1
  247. package/core/utils/disabled-state.d.ts.map +0 -1
  248. package/core/utils/format-number.d.ts.map +0 -1
  249. package/core/utils/k8s-util.d.ts.map +0 -1
  250. package/core/utils/local-storage-constants.d.ts.map +0 -1
  251. package/core/utils/node.d.ts.map +0 -1
  252. package/core/utils/observable.d.ts.map +0 -1
  253. package/core/utils/operators.d.ts.map +0 -1
  254. package/core/utils/public-api.d.ts.map +0 -1
  255. package/core/utils/request-pool.d.ts.map +0 -1
  256. package/core/utils/resources.d.ts.map +0 -1
  257. package/core/utils/router.d.ts.map +0 -1
  258. package/core/utils/sort-fn.d.ts.map +0 -1
  259. package/core/utils/tree.d.ts.map +0 -1
  260. package/core/utils/unit.d.ts.map +0 -1
  261. package/core/utils/version.d.ts.map +0 -1
  262. package/core/utils/with-load-state.d.ts.map +0 -1
  263. package/core/utils/workload.d.ts.map +0 -1
  264. package/core/utils/workspace.d.ts.map +0 -1
  265. package/core/utils/yaml.d.ts.map +0 -1
  266. package/custom-columns-setting/component.d.ts.map +0 -1
  267. package/custom-columns-setting/public-api.d.ts.map +0 -1
  268. package/disabled-container/disabled-container.component.d.ts.map +0 -1
  269. package/disabled-container/disabled-container.module.d.ts.map +0 -1
  270. package/disabled-container/public-api.d.ts.map +0 -1
  271. package/editable/editable.component.d.ts.map +0 -1
  272. package/editable/editable.directive.d.ts.map +0 -1
  273. package/editable/editable.type.d.ts.map +0 -1
  274. package/editable/public-api.d.ts.map +0 -1
  275. package/editable-text/component.d.ts.map +0 -1
  276. package/editable-text/module.d.ts.map +0 -1
  277. package/editable-text/public-api.d.ts.map +0 -1
  278. package/effect-directive/coerce-number.directive.d.ts.map +0 -1
  279. package/effect-directive/e2e-attribute-binding.directive.d.ts.map +0 -1
  280. package/effect-directive/event.directive.d.ts.map +0 -1
  281. package/effect-directive/min-max.directive.d.ts.map +0 -1
  282. package/effect-directive/module.d.ts.map +0 -1
  283. package/effect-directive/public-api.d.ts.map +0 -1
  284. package/effect-directive/trim.directive.d.ts.map +0 -1
  285. package/effect-directive/validators.directive.d.ts.map +0 -1
  286. package/esm2022/authorization/runtime.mjs +0 -96
  287. package/exec/constants.d.ts.map +0 -1
  288. package/exec/module.d.ts.map +0 -1
  289. package/exec/placeholder/component.d.ts.map +0 -1
  290. package/exec/public-api.d.ts.map +0 -1
  291. package/exec/service.d.ts.map +0 -1
  292. package/exec/terminal/component.d.ts.map +0 -1
  293. package/exec/terminal-group/component.d.ts.map +0 -1
  294. package/exec/types.d.ts.map +0 -1
  295. package/feature-gate-forbidden/component/component.d.ts.map +0 -1
  296. package/feature-gate-forbidden/module.d.ts.map +0 -1
  297. package/feature-gate-forbidden/public-api.d.ts.map +0 -1
  298. package/form/directives/value-trace.directive.d.ts.map +0 -1
  299. package/form/errors-mapper/base-errors-mapper.d.ts.map +0 -1
  300. package/form/errors-mapper/default-errors-mapper.service.d.ts.map +0 -1
  301. package/form/errors-mapper/errors-mapper-component/component.d.ts.map +0 -1
  302. package/form/errors-mapper/errors-mapper.directive.d.ts.map +0 -1
  303. package/form/errors-mapper/errors-mapper.module.d.ts.map +0 -1
  304. package/form/errors-mapper/public-api.d.ts.map +0 -1
  305. package/form/errors-mapper/types.d.ts.map +0 -1
  306. package/form/labels-editor/component.d.ts.map +0 -1
  307. package/form/public-api.d.ts.map +0 -1
  308. package/form/taints-editor/component.d.ts.map +0 -1
  309. package/form/upload-file/component.d.ts.map +0 -1
  310. package/form/utils.d.ts.map +0 -1
  311. package/form/validators/async-function-validator.directive.d.ts.map +0 -1
  312. package/form/validators/dns1123-subdomain.d.ts.map +0 -1
  313. package/form/validators/function-validator.directive.d.ts.map +0 -1
  314. package/form/validators/maxlength-minlength-validator.directive.d.ts.map +0 -1
  315. package/form/validators/module.d.ts.map +0 -1
  316. package/form/validators/not-be-validator.directive.d.ts.map +0 -1
  317. package/form/validators/one-of-validator.directive.d.ts.map +0 -1
  318. package/form/validators/public-api.d.ts.map +0 -1
  319. package/form/validators/resource-limit.d.ts.map +0 -1
  320. package/form/validators/strong-password/public-api.d.ts.map +0 -1
  321. package/form/validators/strong-password/strong-password-tooltip/component.d.ts.map +0 -1
  322. package/form/validators/strong-password/strong-password-validator.directive.d.ts.map +0 -1
  323. package/form/validators/strong-password/strong-password-validator.module.d.ts.map +0 -1
  324. package/form/validators/utils.d.ts.map +0 -1
  325. package/graph-canvas/components/graph-actions.component.d.ts.map +0 -1
  326. package/graph-canvas/components/graph-canvas.component.d.ts.map +0 -1
  327. package/graph-canvas/components/graph-link.component.d.ts.map +0 -1
  328. package/graph-canvas/components/graph-links.component.d.ts.map +0 -1
  329. package/graph-canvas/components/graph-node.directive.d.ts.map +0 -1
  330. package/graph-canvas/graph-canvas.module.d.ts.map +0 -1
  331. package/graph-canvas/graph-store.service.d.ts.map +0 -1
  332. package/graph-canvas/public-api.d.ts.map +0 -1
  333. package/graph-canvas/types.d.ts.map +0 -1
  334. package/graph-canvas/utils.d.ts.map +0 -1
  335. package/grid-layout/components/grid/component.d.ts.map +0 -1
  336. package/grid-layout/components/grid-items/component.d.ts.map +0 -1
  337. package/grid-layout/constant.d.ts.map +0 -1
  338. package/grid-layout/directives/drag-handler.directive.d.ts.map +0 -1
  339. package/grid-layout/directives/placeholder.directive.d.ts.map +0 -1
  340. package/grid-layout/directives/remove-handler.directive.d.ts.map +0 -1
  341. package/grid-layout/directives/resize-handler.directive.d.ts.map +0 -1
  342. package/grid-layout/grid-layout.service.d.ts.map +0 -1
  343. package/grid-layout/grid-placeholder.service.d.ts.map +0 -1
  344. package/grid-layout/module.d.ts.map +0 -1
  345. package/grid-layout/public-api.d.ts.map +0 -1
  346. package/grid-layout/type.d.ts.map +0 -1
  347. package/grid-layout/utils/client-rect.utils.d.ts.map +0 -1
  348. package/grid-layout/utils/grid.utils.d.ts.map +0 -1
  349. package/grid-layout/utils/mouse.utils.d.ts.map +0 -1
  350. package/grid-layout/utils/operator.d.ts.map +0 -1
  351. package/grid-layout/utils/react-grid-layout.utils.d.ts.map +0 -1
  352. package/grid-layout/utils/scroll.utils.d.ts.map +0 -1
  353. package/help-document/component.d.ts.map +0 -1
  354. package/help-document/directive.d.ts.map +0 -1
  355. package/help-document/module.d.ts.map +0 -1
  356. package/help-document/public-api.d.ts.map +0 -1
  357. package/help-document/service.d.ts.map +0 -1
  358. package/iframe-config/config.service.d.ts.map +0 -1
  359. package/iframe-config/constants.d.ts.map +0 -1
  360. package/iframe-config/public-api.d.ts.map +0 -1
  361. package/k8s-resource-list/footer/component.d.ts.map +0 -1
  362. package/k8s-resource-list/k8s-resource-list.d.ts.map +0 -1
  363. package/k8s-resource-list/k8s-resource-list.module.d.ts.map +0 -1
  364. package/k8s-resource-list/k8s-resource-paged-list.d.ts.map +0 -1
  365. package/k8s-resource-list/public-api.d.ts.map +0 -1
  366. package/k8s-resource-list/types.d.ts.map +0 -1
  367. package/k8s-resource-list/utils.d.ts.map +0 -1
  368. package/k8s-shared/constants.d.ts.map +0 -1
  369. package/k8s-shared/k8s-resource-translate-key.pipe.d.ts.map +0 -1
  370. package/k8s-shared/k8s-shared-util.service.d.ts.map +0 -1
  371. package/k8s-shared/public-api.d.ts.map +0 -1
  372. package/k8s-shared/resource-mark/k8s-resource-mark.component.d.ts.map +0 -1
  373. package/k8s-shared/resource-mark/util.d.ts.map +0 -1
  374. package/k8s-shared/update-description-dialog/component.d.ts.map +0 -1
  375. package/k8s-shared/update-display-name-dialog/component.d.ts.map +0 -1
  376. package/k8s-shared/update-key-value-dialog/component.d.ts.map +0 -1
  377. package/lazy-component/lazy-load-component.d.ts.map +0 -1
  378. package/lazy-component/public-api.d.ts.map +0 -1
  379. package/lazy-component/visibility.service.d.ts.map +0 -1
  380. package/license/license-api.d.ts.map +0 -1
  381. package/license/license-error/component.d.ts.map +0 -1
  382. package/license/license-error/module.d.ts.map +0 -1
  383. package/license/license.guard.d.ts.map +0 -1
  384. package/license/license.service.d.ts.map +0 -1
  385. package/license/license.type.d.ts.map +0 -1
  386. package/license/public-api.d.ts.map +0 -1
  387. package/list-display/component.d.ts.map +0 -1
  388. package/list-display/public-api.d.ts.map +0 -1
  389. package/metric-chart/common-chart.service.d.ts.map +0 -1
  390. package/metric-chart/helpers.d.ts.map +0 -1
  391. package/metric-chart/metric-chart.component.d.ts.map +0 -1
  392. package/metric-chart/metric-chart.module.d.ts.map +0 -1
  393. package/metric-chart/metric-time-pick.d.ts.map +0 -1
  394. package/metric-chart/public-api.d.ts.map +0 -1
  395. package/metric-chart/types.d.ts.map +0 -1
  396. package/metric-chart/utils.d.ts.map +0 -1
  397. package/multi-search/action-input/component.d.ts.map +0 -1
  398. package/multi-search/form/component.d.ts.map +0 -1
  399. package/multi-search/multi-search-tags/component.d.ts.map +0 -1
  400. package/multi-search/public-api.d.ts.map +0 -1
  401. package/multi-search/types.d.ts.map +0 -1
  402. package/multi-search/utils.d.ts.map +0 -1
  403. package/mutable/element.d.ts.map +0 -1
  404. package/mutable/mosaic/mosaic.component.d.ts.map +0 -1
  405. package/mutable/mosaic/mosaic.directive.d.ts.map +0 -1
  406. package/mutable/mutable.directive.d.ts.map +0 -1
  407. package/mutable/mutable.module.d.ts.map +0 -1
  408. package/mutable/public-api.d.ts.map +0 -1
  409. package/mutable/util.d.ts.map +0 -1
  410. package/notification/errors-mapper.d.ts.map +0 -1
  411. package/notification/feedback-notification/component.d.ts.map +0 -1
  412. package/notification/helpers.d.ts.map +0 -1
  413. package/notification/notification-util.service.d.ts.map +0 -1
  414. package/notification/public-api.d.ts.map +0 -1
  415. package/notification/resource-error.interceptor.d.ts.map +0 -1
  416. package/overview-banner/overview-banner.component.d.ts.map +0 -1
  417. package/overview-banner/overview-banner.module.d.ts.map +0 -1
  418. package/overview-banner/overview-banner.types.d.ts.map +0 -1
  419. package/overview-banner/public-api.d.ts.map +0 -1
  420. package/page-guard/component/component.d.ts.map +0 -1
  421. package/page-guard/component/helper-directives.d.ts.map +0 -1
  422. package/page-guard/component/page-guard.type.d.ts.map +0 -1
  423. package/page-guard/module.d.ts.map +0 -1
  424. package/page-guard/public-api.d.ts.map +0 -1
  425. package/page-scaffold/module.d.ts.map +0 -1
  426. package/page-scaffold/navigation/breadcrumb/breadcrumb-slot.directive.d.ts.map +0 -1
  427. package/page-scaffold/navigation/breadcrumb/breadcrumb.component.d.ts.map +0 -1
  428. package/page-scaffold/navigation/breadcrumb/breadcrumb.service.d.ts.map +0 -1
  429. package/page-scaffold/navigation/breadcrumb/module.d.ts.map +0 -1
  430. package/page-scaffold/navigation/breadcrumb/public-api.d.ts.map +0 -1
  431. package/page-scaffold/navigation/lottie-icons/animation-data.d.ts.map +0 -1
  432. package/page-scaffold/navigation/lottie-icons/lottie-icon.directive.d.ts.map +0 -1
  433. package/page-scaffold/navigation/lottie-icons/module.d.ts.map +0 -1
  434. package/page-scaffold/navigation/lottie-icons/public-api.d.ts.map +0 -1
  435. package/page-scaffold/navigation/lottie-icons/replace-lottie-colors.d.ts.map +0 -1
  436. package/page-scaffold/navigation/module.d.ts.map +0 -1
  437. package/page-scaffold/navigation/nav-menu/nav-item-li/nav-item-li.component.d.ts.map +0 -1
  438. package/page-scaffold/navigation/nav-menu/nav-item-ul/nav-item-ul.component.d.ts.map +0 -1
  439. package/page-scaffold/navigation/nav-menu/nav-menu.component.d.ts.map +0 -1
  440. package/page-scaffold/navigation/nav-menu/nav-menu.module.d.ts.map +0 -1
  441. package/page-scaffold/navigation/nav-menu/nav-menu.types.d.ts.map +0 -1
  442. package/page-scaffold/navigation/nav-menu/public-api.d.ts.map +0 -1
  443. package/page-scaffold/navigation/navconfig-loader/navconfig-loader.service.d.ts.map +0 -1
  444. package/page-scaffold/navigation/navconfig-loader/public-api.d.ts.map +0 -1
  445. package/page-scaffold/navigation/public-api.d.ts.map +0 -1
  446. package/page-scaffold/navigation/utils.d.ts.map +0 -1
  447. package/page-scaffold/page/context.service.d.ts.map +0 -1
  448. package/page-scaffold/page/helper-directives.d.ts.map +0 -1
  449. package/page-scaffold/page/notices/maintenance.component.d.ts.map +0 -1
  450. package/page-scaffold/page/notices/notice.component.d.ts.map +0 -1
  451. package/page-scaffold/page/page.component.d.ts.map +0 -1
  452. package/page-scaffold/page/page.module.d.ts.map +0 -1
  453. package/page-scaffold/page/public-api.d.ts.map +0 -1
  454. package/page-scaffold/page-header/account-menu/component/component.d.ts.map +0 -1
  455. package/page-scaffold/page-header/account-menu/module.d.ts.map +0 -1
  456. package/page-scaffold/page-header/account-menu/public-api.d.ts.map +0 -1
  457. package/page-scaffold/page-header/common-layout/common-layout.module.d.ts.map +0 -1
  458. package/page-scaffold/page-header/common-layout/context.service.d.ts.map +0 -1
  459. package/page-scaffold/page-header/common-layout/namespace-select/component.d.ts.map +0 -1
  460. package/page-scaffold/page-header/common-layout/product-select/component.d.ts.map +0 -1
  461. package/page-scaffold/page-header/common-layout/product-select/service.d.ts.map +0 -1
  462. package/page-scaffold/page-header/common-layout/project-select/base-selection.d.ts.map +0 -1
  463. package/page-scaffold/page-header/common-layout/public-api.d.ts.map +0 -1
  464. package/page-scaffold/page-header/common-layout/store.service.d.ts.map +0 -1
  465. package/page-scaffold/page-header/common-layout/utils.d.ts.map +0 -1
  466. package/page-scaffold/page-header/component.d.ts.map +0 -1
  467. package/page-scaffold/page-header/enterprise-support-status/component.d.ts.map +0 -1
  468. package/page-scaffold/page-header/header-notify/component/header-notify.component.d.ts.map +0 -1
  469. package/page-scaffold/page-header/header-notify/component/notification-list/notification-list.component.d.ts.map +0 -1
  470. package/page-scaffold/page-header/header-notify/header-notify.module.d.ts.map +0 -1
  471. package/page-scaffold/page-header/header-notify/notify.service.d.ts.map +0 -1
  472. package/page-scaffold/page-header/header-notify/public-api.d.ts.map +0 -1
  473. package/page-scaffold/page-header/header-notify/utils.d.ts.map +0 -1
  474. package/page-scaffold/page-header/help-menu/component/component.d.ts.map +0 -1
  475. package/page-scaffold/page-header/help-menu/module.d.ts.map +0 -1
  476. package/page-scaffold/page-header/help-menu/public-api.d.ts.map +0 -1
  477. package/page-scaffold/page-header/module.d.ts.map +0 -1
  478. package/page-scaffold/page-header/public-api.d.ts.map +0 -1
  479. package/page-scaffold/public-api.d.ts.map +0 -1
  480. package/permission/constants.d.ts.map +0 -1
  481. package/permission/helpers.d.ts.map +0 -1
  482. package/permission/k8s-permission.service.d.ts.map +0 -1
  483. package/permission/permission.guard.d.ts.map +0 -1
  484. package/permission/public-api.d.ts.map +0 -1
  485. package/permission/types.d.ts.map +0 -1
  486. package/pie-derivative-chart/donut-status/component.d.ts.map +0 -1
  487. package/pie-derivative-chart/indicator-color.directive.d.ts.map +0 -1
  488. package/pie-derivative-chart/numerical-limit.pipe.d.ts.map +0 -1
  489. package/pie-derivative-chart/pie-derivative-chart.module.d.ts.map +0 -1
  490. package/pie-derivative-chart/public-api.d.ts.map +0 -1
  491. package/pie-derivative-chart/radial-bar/radial-bar-chart.component.d.ts.map +0 -1
  492. package/pie-derivative-chart/units.d.ts.map +0 -1
  493. package/pod-status/component.d.ts.map +0 -1
  494. package/pod-status/public-api.d.ts.map +0 -1
  495. package/pod-status/status.d.ts.map +0 -1
  496. package/pod-status/typings.d.ts.map +0 -1
  497. package/public-api.d.ts.map +0 -1
  498. package/searchable-selector/component.d.ts.map +0 -1
  499. package/searchable-selector/module.d.ts.map +0 -1
  500. package/searchable-selector/public-api.d.ts.map +0 -1
  501. package/skeleton/item/component.d.ts.map +0 -1
  502. package/skeleton/module.d.ts.map +0 -1
  503. package/skeleton/nav-skeleton/component.d.ts.map +0 -1
  504. package/skeleton/public-api.d.ts.map +0 -1
  505. package/table/component.d.ts.map +0 -1
  506. package/table/constants.d.ts.map +0 -1
  507. package/table/helper.d.ts.map +0 -1
  508. package/table/helpers.directive.d.ts.map +0 -1
  509. package/table/module.d.ts.map +0 -1
  510. package/table/public-api.d.ts.map +0 -1
  511. package/table/types.d.ts.map +0 -1
  512. package/table/util.service.d.ts.map +0 -1
  513. package/translate/constants.d.ts.map +0 -1
  514. package/translate/helpers.d.ts.map +0 -1
  515. package/translate/i18n-assets-loader.d.ts.map +0 -1
  516. package/translate/i18n-config.d.ts.map +0 -1
  517. package/translate/intl-format.pipes.d.ts.map +0 -1
  518. package/translate/public-api.d.ts.map +0 -1
  519. package/translate/relative-time-manager.service.d.ts.map +0 -1
  520. package/translate/tokens.d.ts.map +0 -1
  521. package/translate/translate.directive.d.ts.map +0 -1
  522. package/translate/translate.module.d.ts.map +0 -1
  523. package/translate/translate.pipe.d.ts.map +0 -1
  524. package/translate/translate.service.d.ts.map +0 -1
  525. package/translate/types.d.ts.map +0 -1
  526. package/view-chart/custom-template/dropdown-legend.d.ts.map +0 -1
  527. package/view-chart/legend/legend.component.d.ts.map +0 -1
  528. package/view-chart/public-api.d.ts.map +0 -1
  529. package/view-chart/types.d.ts.map +0 -1
  530. package/view-chart/view-chart.component.d.ts.map +0 -1
  531. package/view-chart/view-chart.module.d.ts.map +0 -1
  532. package/view-zchart/custom-template/dropdown-legend.d.ts.map +0 -1
  533. package/view-zchart/legend/legend.component.d.ts.map +0 -1
  534. package/view-zchart/public-api.d.ts.map +0 -1
  535. package/view-zchart/types.d.ts.map +0 -1
  536. package/view-zchart/units.d.ts.map +0 -1
  537. package/view-zchart/view-zchart.component.d.ts.map +0 -1
  538. package/view-zchart/view-zchart.module.d.ts.map +0 -1
  539. package/widget/card-section/card-section.component.d.ts.map +0 -1
  540. package/widget/confirm-delete/confirm-delete.component.d.ts.map +0 -1
  541. package/widget/confirm-delete/utils.d.ts.map +0 -1
  542. package/widget/current-time/component.d.ts.map +0 -1
  543. package/widget/date-range-picker/component.d.ts.map +0 -1
  544. package/widget/date-range-picker/public-api.d.ts.map +0 -1
  545. package/widget/date-range-picker/type.d.ts.map +0 -1
  546. package/widget/date-range-picker/util.d.ts.map +0 -1
  547. package/widget/field-set/column/component.d.ts.map +0 -1
  548. package/widget/field-set/group/component.d.ts.map +0 -1
  549. package/widget/field-set/index.d.ts.map +0 -1
  550. package/widget/field-set/item/component.d.ts.map +0 -1
  551. package/widget/foldable-block/component.d.ts.map +0 -1
  552. package/widget/foldable-item-in-table/component.d.ts.map +0 -1
  553. package/widget/loading-mask/loading-mask.component.d.ts.map +0 -1
  554. package/widget/password-input/component.d.ts.map +0 -1
  555. package/widget/public-api.d.ts.map +0 -1
  556. package/widget/relative-time/component.d.ts.map +0 -1
  557. package/widget/resource-label/component.d.ts.map +0 -1
  558. package/widget/resource-multi-select/component.d.ts.map +0 -1
  559. package/widget/resource-multi-select/util.d.ts.map +0 -1
  560. package/widget/search-panel/component.d.ts.map +0 -1
  561. package/widget/search-panel/helper.directive.d.ts.map +0 -1
  562. package/widget/search-panel/search-item/component.d.ts.map +0 -1
  563. package/widget/select-prefix-label/directive.d.ts.map +0 -1
  564. package/widget/status-icon/status-icon.component.d.ts.map +0 -1
  565. package/widget/tags-label/component.d.ts.map +0 -1
  566. package/widget/terminating-tag/component.d.ts.map +0 -1
  567. package/widget/text-ellipsis/component.d.ts.map +0 -1
  568. package/widget/text-tooltip/directive.d.ts.map +0 -1
  569. package/widget/text-with-url/component.d.ts.map +0 -1
  570. package/widget/widget.module.d.ts.map +0 -1
  571. package/widget/zero-state/zero-state.component.d.ts.map +0 -1
  572. package/window-channel/base-window-channel.d.ts.map +0 -1
  573. package/window-channel/directives/host-link.directive.d.ts.map +0 -1
  574. package/window-channel/host-window-channel.service.d.ts.map +0 -1
  575. package/window-channel/plugin-window-channel.service.d.ts.map +0 -1
  576. package/window-channel/public-api.d.ts.map +0 -1
  577. package/window-channel/utils.d.ts.map +0 -1
  578. package/workload-status-icon/component.d.ts.map +0 -1
  579. package/workload-status-icon/public-api.d.ts.map +0 -1
  580. package/xterm/public-api.d.ts.map +0 -1
  581. package/xterm/xterm-terminal/xterm-terminal.component.d.ts.map +0 -1
  582. package/xterm/xterm-terminal/xterm-terminal.directive.d.ts.map +0 -1
  583. package/xterm/xterm.component.d.ts.map +0 -1
@@ -5,6 +5,7 @@
5
5
  import { HttpClient } from '@angular/common/http';
6
6
  import { Observable } from 'rxjs';
7
7
  import { KubernetesResource, KubernetesResourceList, Status } from '../core/public-api';
8
+ import { K8sPermissionService } from '../permission/k8s-permission.service';
8
9
  import { K8sApiResourceService } from './k8s-api-resource.service';
9
10
  import { PageVisibilityService } from './page-visibility.service';
10
11
  import { ErebusResourceDeleteParams, ErebusResourceListParams, ErebusResourceParams, ErebusResourcePatchParams, ErebusResourceWriteParams, GlobalResourceDeleteParams, GlobalResourceListParams, GlobalResourceParams, GlobalResourcePatchParams, GlobalResourceWriteParams, WatchAPIResponse, WatchErebusResourceListParams, WatchErebusResourceParams, WatchGlobalResourceListParams, WatchGlobalResourceParams, ErebusResourceBatchDeleteParams } from './types';
@@ -15,8 +16,9 @@ export declare class K8sApiService<R extends string = string> {
15
16
  private readonly http;
16
17
  private readonly k8sApiResource;
17
18
  private readonly pageVisibility;
19
+ private readonly k8sPermission;
18
20
  private readonly globalNamespace;
19
- constructor(http: HttpClient, k8sApiResource: K8sApiResourceService, pageVisibility: PageVisibilityService, globalNamespace: string);
21
+ constructor(http: HttpClient, k8sApiResource: K8sApiResourceService, pageVisibility: PageVisibilityService, k8sPermission: K8sPermissionService, globalNamespace: string);
20
22
  /**
21
23
  * 获取 Global 集群单个资源对象
22
24
  */
@@ -83,7 +83,7 @@ export declare class ArrayFormTableComponent implements OnDestroy {
83
83
  addDisabled: boolean | '';
84
84
  actionColumnDivider: boolean | '';
85
85
  showZeroState: boolean;
86
- get formDirective(): FormGroupDirective | NgForm;
86
+ get formDirective(): NgForm | FormGroupDirective;
87
87
  /**
88
88
  * 自定义是否展示错误内容
89
89
  * 例如 control 是 FormGroup,只有在内部子 control 错误时才需要展示错误内容
@@ -21,7 +21,7 @@ export declare class BaseNestedFormControl<V, M = V> implements AfterViewInit, O
21
21
  protected asyncValidator: boolean;
22
22
  protected cdr: ChangeDetectorRef;
23
23
  protected destroy$$: Subject<void>;
24
- protected hostForm: FormGroupDirective | NgForm;
24
+ protected hostForm: NgForm | FormGroupDirective;
25
25
  constructor();
26
26
  ngAfterViewInit(): void;
27
27
  ngOnDestroy(): void;
@@ -9,7 +9,7 @@ export declare class FeatureGateService {
9
9
  private readonly http;
10
10
  private readonly cacheStore;
11
11
  constructor(http: HttpClient);
12
- loadState(cluster?: string): Observable<"loading" | "loaded" | "loadFailed">;
12
+ loadState(cluster?: string): Observable<"loaded" | "loadFailed" | "loading">;
13
13
  /**
14
14
  * check gate status
15
15
  * @param gate - specified feature gate
@@ -611,6 +611,22 @@ export interface UserList extends KubernetesResourceList<User> {
611
611
  */
612
612
  export interface UserBinding extends KubernetesResource {
613
613
  spec?: UserBindingSpec;
614
+ status?: UserBindingStatus;
615
+ }
616
+ export interface UserBindingStatus {
617
+ phase?: 'Success' | 'Failture' | 'Unknown';
618
+ delegationClusters?: UserBindingDelegationClustersStatus;
619
+ }
620
+ export interface UserBindingDelegationClustersStatus {
621
+ ready?: boolean;
622
+ statuses?: UserBindingDelegationStatus[];
623
+ }
624
+ export interface UserBindingDelegationStatus {
625
+ cluster?: string;
626
+ clusterRole: string;
627
+ status: 'True' | 'False' | 'Unknown';
628
+ reason?: string;
629
+ message?: string;
614
630
  }
615
631
  export interface UserBindingSpec {
616
632
  subjects: Array<{
@@ -116,8 +116,12 @@ export interface Container {
116
116
  volumeMounts?: VolumeMount[];
117
117
  livenessProbe?: Probe;
118
118
  readinessProbe?: Probe;
119
+ startupProbe?: Probe;
119
120
  lifecycle?: PodLifeCycle;
120
121
  restartPolicy?: string;
122
+ stdin?: boolean;
123
+ stdinOnce?: boolean;
124
+ tty?: boolean;
121
125
  }
122
126
  export interface EnvVarSource {
123
127
  configMapKeyRef?: ConfigMapKeyRef;
@@ -558,10 +558,6 @@ export declare const COMMON_RESOURCE_DEFINITIONS: {
558
558
  readonly apiVersion: string;
559
559
  readonly type: string;
560
560
  };
561
- readonly CERTIFICATE: {
562
- readonly type: string;
563
- readonly apiGroup: string;
564
- };
565
561
  readonly SECURITY_RULE: {
566
562
  readonly type: string;
567
563
  readonly apiGroup: string;
@@ -768,7 +764,6 @@ export declare const RESOURCE_TYPES: {
768
764
  readonly CODING: "CODING";
769
765
  readonly TI_MATRIX: "TI_MATRIX";
770
766
  readonly SYSTEM_CONFIG: "SYSTEM_CONFIG";
771
- readonly CERTIFICATE: "CERTIFICATE";
772
767
  readonly SECURITY_RULE: "SECURITY_RULE";
773
768
  readonly REGION: "REGION";
774
769
  readonly TOPOLVM_CLUSTER_V2: "TOPOLVM_CLUSTER_V2";
@@ -788,7 +783,7 @@ export declare const RESOURCE_TYPES: {
788
783
  readonly TUNNEL_CLUSTER: "TUNNEL_CLUSTER";
789
784
  readonly K8S_CLUSTER: "K8S_CLUSTER";
790
785
  };
791
- export declare const getYamlApiVersion: (definition: "PROJECT" | "ALAUDA_LOADBALANCER2" | "ALB2" | "HELM_REQUEST" | "HELM_REQUEST_V1" | "DEPLOYMENT" | "DAEMONSET" | "STATEFULSET" | "FRONTEND" | "RULE" | "POD" | "PODS_EXEC" | "PODS_ROOT_EXEC" | "CONFIG_MAP" | "ALERT_TEMPLATE" | "APPLICATION" | "APPLICATION_HISTORY" | "CLUSTER" | "CLUSTER_VIEW" | "DAEMON_SET" | "STATEFUL_SET" | "DOMAIN" | "FEATURE" | "ALAUDA_FEATURE_GATE" | "CLUSTER_ALAUDA_FEATURE_GATE" | "HORIZONTAL_POD_AUTOSCALER" | "LOG" | "PROMETHEUS_RULE" | "ALERT_HISTORY" | "SELF_SUBJECT_ACCESS_REVIEW" | "VIEW" | "SERVICE" | "LIMIT_RANGE" | "SECRET" | "CRON_JOB" | "ADVANCED_CRON_JOB" | "JOB" | "INGRESS" | "PERSISTENT_VOLUME_CLAIM" | "NAMESPACE" | "NODE" | "NODE_METRICS" | "PV" | "CRD" | "CHART_REPO" | "CHART" | "NETWORK_POLICY" | "SERVICE_ACCOUNT" | "REPLICA_SET" | "POD_SECURITY_POLICY" | "NAMESPACE_OVERVIEW" | "CSP" | "RESOURCE_QUOTA" | "CLUSTER_NETWORK_POLICY" | "PROJECT_QUOTA" | "TKE_CLUSTER" | "TKE_MACHINE" | "MACHINE" | "NODE_GROUP" | "CLUSTERSERVICEVERSION" | "TENANT" | "SUBSCRIPTION" | "PACKAGE_MANIFEST" | "BUCKET_CLASS" | "PRODUCT_CONFIG" | "STORAGE_CLASS" | "VOLUME_SNAPSHOT_CLASS" | "PRODUCT_BASE" | "MODULE_INFO" | "MODULE_CONFIG" | "MODULE_PLUGIN" | "PRODUCT_ENTRY" | "PRODUCT_DOCS_ENTRY" | "SERVICEMESH_GROUP" | "CLUSTER_MODULE" | "USER_SECURITY_POLICY" | "CONNECTOR" | "ACCESS_TOKEN_INFO" | "FUNCTION_RESOURCE" | "USER_BINDING" | "USER" | "GROUP" | "PROJECT_MEMBER" | "ROLE_TEMPLATE" | "BATCH_ACTION" | "EVENT" | "SERVICE_MONITOR" | "OAM_APPLICATION" | "ARGOCD_APPLICATION_SET" | "ARGOCD_APPLICATION" | "OPERATOR_VIEW" | "MODULE_PLUGIN_VIEW" | "RESOURCE_PATCH" | "COMPONENT_PROBER" | "INSPECTION" | "INSPECTION_DETAILS" | "INSPECTION_ITEMS" | "MESSAGE" | "MODULE_HEALTH" | "MODULE_HEALTH_RECORD" | "AUDIT" | "LOG_POLICY" | "FUNCTION_TEST" | "PROJECT_BINDING" | "PROBE" | "REPORT" | "NAMESPACE_RESOURCE_RATIO" | "CUSTOM_RESOURCE_DEFINITION" | "LICENSE" | "RECORD" | "CSI_NODE" | "TSF" | "TDSQL" | "PORTAL" | "NAMESPACE_IMPORT" | "CLUSTER_ADDON_TYPE" | "CLUSTER_CREDENTIAL" | "CODING" | "TI_MATRIX" | "SYSTEM_CONFIG" | "CERTIFICATE" | "SECURITY_RULE" | "REGION" | "TOPOLVM_CLUSTER_V2" | "BUCKET" | "SCHEDULE" | "BACKUP_STORAGE_LOCATION" | "BACKUP_STORAGE_LOCATION_REPO" | "BACKUP" | "DELETE_BACKUP_REQUEST" | "ETCD_BACKUP_RECORD" | "RESTORE" | "RAW_DEVICE" | "APP_RELEASES" | "NOTIFICATION_TEMPLATE" | "NOTIFICATION_GROUP" | "NOTIFICATION" | "TUNNEL_CLUSTER" | "K8S_CLUSTER" | {
786
+ export declare const getYamlApiVersion: (definition: "ALAUDA_LOADBALANCER2" | "ALB2" | "HELM_REQUEST" | "HELM_REQUEST_V1" | "DEPLOYMENT" | "DAEMONSET" | "STATEFULSET" | "FRONTEND" | "RULE" | "POD" | "PODS_EXEC" | "PODS_ROOT_EXEC" | "CONFIG_MAP" | "ALERT_TEMPLATE" | "APPLICATION" | "APPLICATION_HISTORY" | "CLUSTER" | "CLUSTER_VIEW" | "DAEMON_SET" | "STATEFUL_SET" | "DOMAIN" | "FEATURE" | "ALAUDA_FEATURE_GATE" | "CLUSTER_ALAUDA_FEATURE_GATE" | "HORIZONTAL_POD_AUTOSCALER" | "LOG" | "PROJECT" | "PROMETHEUS_RULE" | "ALERT_HISTORY" | "SELF_SUBJECT_ACCESS_REVIEW" | "VIEW" | "SERVICE" | "LIMIT_RANGE" | "SECRET" | "CRON_JOB" | "ADVANCED_CRON_JOB" | "JOB" | "INGRESS" | "PERSISTENT_VOLUME_CLAIM" | "NAMESPACE" | "NODE" | "NODE_METRICS" | "PV" | "CRD" | "CHART_REPO" | "CHART" | "NETWORK_POLICY" | "SERVICE_ACCOUNT" | "REPLICA_SET" | "POD_SECURITY_POLICY" | "NAMESPACE_OVERVIEW" | "CSP" | "RESOURCE_QUOTA" | "CLUSTER_NETWORK_POLICY" | "PROJECT_QUOTA" | "TKE_CLUSTER" | "TKE_MACHINE" | "MACHINE" | "NODE_GROUP" | "CLUSTERSERVICEVERSION" | "TENANT" | "SUBSCRIPTION" | "PACKAGE_MANIFEST" | "BUCKET_CLASS" | "PRODUCT_CONFIG" | "STORAGE_CLASS" | "VOLUME_SNAPSHOT_CLASS" | "PRODUCT_BASE" | "MODULE_INFO" | "MODULE_CONFIG" | "MODULE_PLUGIN" | "PRODUCT_ENTRY" | "PRODUCT_DOCS_ENTRY" | "SERVICEMESH_GROUP" | "CLUSTER_MODULE" | "USER_SECURITY_POLICY" | "CONNECTOR" | "ACCESS_TOKEN_INFO" | "FUNCTION_RESOURCE" | "USER_BINDING" | "USER" | "GROUP" | "PROJECT_MEMBER" | "ROLE_TEMPLATE" | "BATCH_ACTION" | "EVENT" | "SERVICE_MONITOR" | "OAM_APPLICATION" | "ARGOCD_APPLICATION_SET" | "ARGOCD_APPLICATION" | "OPERATOR_VIEW" | "MODULE_PLUGIN_VIEW" | "RESOURCE_PATCH" | "COMPONENT_PROBER" | "INSPECTION" | "INSPECTION_DETAILS" | "INSPECTION_ITEMS" | "MESSAGE" | "MODULE_HEALTH" | "MODULE_HEALTH_RECORD" | "AUDIT" | "LOG_POLICY" | "FUNCTION_TEST" | "PROJECT_BINDING" | "PROBE" | "REPORT" | "NAMESPACE_RESOURCE_RATIO" | "CUSTOM_RESOURCE_DEFINITION" | "LICENSE" | "RECORD" | "CSI_NODE" | "TSF" | "TDSQL" | "PORTAL" | "NAMESPACE_IMPORT" | "CLUSTER_ADDON_TYPE" | "CLUSTER_CREDENTIAL" | "CODING" | "TI_MATRIX" | "SYSTEM_CONFIG" | "SECURITY_RULE" | "REGION" | "TOPOLVM_CLUSTER_V2" | "BUCKET" | "SCHEDULE" | "BACKUP_STORAGE_LOCATION" | "BACKUP_STORAGE_LOCATION_REPO" | "BACKUP" | "DELETE_BACKUP_REQUEST" | "ETCD_BACKUP_RECORD" | "RESTORE" | "RAW_DEVICE" | "APP_RELEASES" | "NOTIFICATION_TEMPLATE" | "NOTIFICATION_GROUP" | "NOTIFICATION" | "TUNNEL_CLUSTER" | "K8S_CLUSTER" | {
792
787
  apiGroup: string;
793
788
  type: string;
794
789
  } | {
@@ -1203,9 +1198,6 @@ export declare const getYamlApiVersion: (definition: "PROJECT" | "ALAUDA_LOADBAL
1203
1198
  apiGroup: string;
1204
1199
  apiVersion: string;
1205
1200
  type: string;
1206
- } | {
1207
- type: string;
1208
- apiGroup: string;
1209
1201
  } | {
1210
1202
  type: string;
1211
1203
  apiGroup: string;
@@ -36,4 +36,4 @@ export declare const compareVersion: {
36
36
  gte: (v1: string, v2: string) => boolean;
37
37
  cmp: (v1: string, v2: string, operator: CompareOperator) => boolean;
38
38
  };
39
- export declare const compareMinorVersion: (v1: string, v2: string) => 1 | 0 | -1;
39
+ export declare const compareMinorVersion: (v1: string, v2: string) => 0 | 1 | -1;
@@ -4,6 +4,10 @@ import { map } from 'rxjs';
4
4
  import { API_GATEWAY, } from '../core/public-api';
5
5
  import * as i0 from "@angular/core";
6
6
  const AUTH_URL = API_GATEWAY + '/auth/v2';
7
+ // Notification member resolution moved from apollo (/auth/v2) to courier, served
8
+ // as plain courier /v1 APIs (like /v1/alerts) reached through the courier-api
9
+ // ingress which forwards the caller's token.
10
+ const NOTIFICATION_URL = API_GATEWAY + '/v1';
7
11
  export class AuthApiService {
8
12
  constructor() {
9
13
  this.http = inject(HttpClient);
@@ -30,10 +34,10 @@ export class AuthApiService {
30
34
  return this.http.get(`${AUTH_URL}/users/${name}`);
31
35
  }
32
36
  getNotificationUsers(namespace, name) {
33
- return this.http.get(`${AUTH_URL}/namespaces/${namespace}/notifications/${name}/users`);
37
+ return this.http.get(`${NOTIFICATION_URL}/notifications/${namespace}/${name}/users`);
34
38
  }
35
39
  getNotificationGroupUsers(namespace, name) {
36
- return this.http.get(`${AUTH_URL}/namespaces/${namespace}/notificationgroups/${name}/users`);
40
+ return this.http.get(`${NOTIFICATION_URL}/notificationgroups/${namespace}/${name}/users`);
37
41
  }
38
42
  getClusters(params) {
39
43
  return this.http.get(API_GATEWAY + '/auth/v1/clusters', { params });
@@ -54,4 +58,4 @@ export class AuthApiService {
54
58
  type: Injectable,
55
59
  args: [{ providedIn: 'root' }]
56
60
  }], null, null); })();
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hcGkvYXV0aC1hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzQixPQUFPLEVBQ0wsV0FBVyxHQVVaLE1BQU0sb0JBQW9CLENBQUM7O0FBRTVCLE1BQU0sUUFBUSxHQUFHLFdBQVcsR0FBRyxVQUFVLENBQUM7QUFHMUMsTUFBTSxPQUFPLGNBQWM7SUFEM0I7UUFFVSxTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBMEVuQztJQXhFQyxrQkFBa0IsQ0FBQyxNQUEwQjtRQUMzQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixRQUFRLEdBQUcsZUFBZSxFQUMxQjtZQUNFLE1BQU07U0FDUCxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsZUFBZSxDQUFDLE1BQTJDO1FBQ3pELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLFFBQVEsR0FBRyxhQUFhLEVBQ3hCO1lBQ0UsTUFBTTtTQUNQLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxNQUEwQjtRQUM1QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixRQUFRLEdBQUcsZ0JBQWdCLEVBQzNCO1lBQ0UsTUFBTTtTQUNQLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXLENBQUMsTUFBd0M7UUFDbEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBVyxRQUFRLEdBQUcsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsT0FBTyxDQUFDLElBQVk7UUFDbEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBTyxHQUFHLFFBQVEsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxTQUFpQixFQUFFLElBQVk7UUFDbEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsR0FBRyxRQUFRLGVBQWUsU0FBUyxrQkFBa0IsSUFBSSxRQUFRLENBQ2xFLENBQUM7SUFDSixDQUFDO0lBRUQseUJBQXlCLENBQUMsU0FBaUIsRUFBRSxJQUFZO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLEdBQUcsUUFBUSxlQUFlLFNBQVMsdUJBQXVCLElBQUksUUFBUSxDQUN2RSxDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUErQjtRQUN6QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixXQUFXLEdBQUcsbUJBQW1CLEVBQ2pDLEVBQUUsTUFBTSxFQUFFLENBQ1gsQ0FBQztJQUNKLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3RFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDM0IsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXLENBQUMsTUFBK0I7UUFDekMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsV0FBVyxHQUFHLG1CQUFtQixFQUNqQyxFQUFFLE1BQU0sRUFBRSxDQUNYLENBQUM7SUFDSixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUN0RSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQzNCLENBQUM7SUFDSixDQUFDOytFQTFFVSxjQUFjO3VFQUFkLGNBQWMsV0FBZCxjQUFjLG1CQURELE1BQU07O2lGQUNuQixjQUFjO2NBRDFCLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgQVBJX0dBVEVXQVksXG4gIENsdXN0ZXIsXG4gIEt1YmVybmV0ZXNSZXNvdXJjZUxpc3QsXG4gIFByb2plY3QsXG4gIFJlc291cmNlTGlzdFBhcmFtcyxcbiAgUm9sZVRlbXBsYXRlLFxuICBVc2VyLFxuICBVc2VyQmluZGluZyxcbiAgVXNlckxpc3QsXG4gIFVzZXJSb2xlLFxufSBmcm9tICcuLi9jb3JlL3B1YmxpYy1hcGknO1xuXG5jb25zdCBBVVRIX1VSTCA9IEFQSV9HQVRFV0FZICsgJy9hdXRoL3YyJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBdXRoQXBpU2VydmljZSB7XG4gIHByaXZhdGUgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcblxuICBnZXRVc2VyQmluZGluZ0xpc3QocGFyYW1zOiBSZXNvdXJjZUxpc3RQYXJhbXMpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxLdWJlcm5ldGVzUmVzb3VyY2VMaXN0PFVzZXJCaW5kaW5nPj4oXG4gICAgICBBVVRIX1VSTCArICcvdXNlcmJpbmRpbmdzJyxcbiAgICAgIHtcbiAgICAgICAgcGFyYW1zLFxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgZ2V0VXNlclJvbGVMaXN0KHBhcmFtczogeyB1c2Vyczogc3RyaW5nOyBwcm9qZWN0Pzogc3RyaW5nIH0pIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxLdWJlcm5ldGVzUmVzb3VyY2VMaXN0PFVzZXJSb2xlPj4oXG4gICAgICBBVVRIX1VSTCArICcvdXNlcnNyb2xlcycsXG4gICAgICB7XG4gICAgICAgIHBhcmFtcyxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIGdldFJvbGVUZW1wbGF0ZUxpc3QocGFyYW1zOiBSZXNvdXJjZUxpc3RQYXJhbXMpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxLdWJlcm5ldGVzUmVzb3VyY2VMaXN0PFJvbGVUZW1wbGF0ZT4+KFxuICAgICAgQVVUSF9VUkwgKyAnL3JvbGV0ZW1wbGF0ZXMnLFxuICAgICAge1xuICAgICAgICBwYXJhbXMsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBnZXRVc2VyTGlzdChwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VXNlckxpc3Q+KEFVVEhfVVJMICsgJy91c2VycycsIHsgcGFyYW1zIH0pO1xuICB9XG5cbiAgZ2V0VXNlcihuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxVc2VyPihgJHtBVVRIX1VSTH0vdXNlcnMvJHtuYW1lfWApO1xuICB9XG5cbiAgZ2V0Tm90aWZpY2F0aW9uVXNlcnMobmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEt1YmVybmV0ZXNSZXNvdXJjZUxpc3Q8VXNlcj4+KFxuICAgICAgYCR7QVVUSF9VUkx9L25hbWVzcGFjZXMvJHtuYW1lc3BhY2V9L25vdGlmaWNhdGlvbnMvJHtuYW1lfS91c2Vyc2AsXG4gICAgKTtcbiAgfVxuXG4gIGdldE5vdGlmaWNhdGlvbkdyb3VwVXNlcnMobmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEt1YmVybmV0ZXNSZXNvdXJjZUxpc3Q8VXNlcj4+KFxuICAgICAgYCR7QVVUSF9VUkx9L25hbWVzcGFjZXMvJHtuYW1lc3BhY2V9L25vdGlmaWNhdGlvbmdyb3Vwcy8ke25hbWV9L3VzZXJzYCxcbiAgICApO1xuICB9XG5cbiAgZ2V0Q2x1c3RlcnMocGFyYW1zPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPikge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEt1YmVybmV0ZXNSZXNvdXJjZUxpc3Q8Q2x1c3Rlcj4+KFxuICAgICAgQVBJX0dBVEVXQVkgKyAnL2F1dGgvdjEvY2x1c3RlcnMnLFxuICAgICAgeyBwYXJhbXMgfSxcbiAgICApO1xuICB9XG5cbiAgZ2V0Q2x1c3RlcihuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRDbHVzdGVycyh7IGZpZWxkU2VsZWN0b3I6IGBtZXRhZGF0YS5uYW1lPSR7bmFtZX1gIH0pLnBpcGUoXG4gICAgICBtYXAobGlzdCA9PiBsaXN0Lml0ZW1zWzBdKSxcbiAgICApO1xuICB9XG5cbiAgZ2V0UHJvamVjdHMocGFyYW1zPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPikge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEt1YmVybmV0ZXNSZXNvdXJjZUxpc3Q8UHJvamVjdD4+KFxuICAgICAgQVBJX0dBVEVXQVkgKyAnL2F1dGgvdjEvcHJvamVjdHMnLFxuICAgICAgeyBwYXJhbXMgfSxcbiAgICApO1xuICB9XG5cbiAgZ2V0UHJvamVjdChuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRQcm9qZWN0cyh7IGZpZWxkU2VsZWN0b3I6IGBtZXRhZGF0YS5uYW1lPSR7bmFtZX1gIH0pLnBpcGUoXG4gICAgICBtYXAobGlzdCA9PiBsaXN0Lml0ZW1zWzBdKSxcbiAgICApO1xuICB9XG59XG4iXX0=
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hcGkvYXV0aC1hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzQixPQUFPLEVBQ0wsV0FBVyxHQVVaLE1BQU0sb0JBQW9CLENBQUM7O0FBRTVCLE1BQU0sUUFBUSxHQUFHLFdBQVcsR0FBRyxVQUFVLENBQUM7QUFFMUMsaUZBQWlGO0FBQ2pGLDhFQUE4RTtBQUM5RSw2Q0FBNkM7QUFDN0MsTUFBTSxnQkFBZ0IsR0FBRyxXQUFXLEdBQUcsS0FBSyxDQUFDO0FBRzdDLE1BQU0sT0FBTyxjQUFjO0lBRDNCO1FBRVUsU0FBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztLQTBFbkM7SUF4RUMsa0JBQWtCLENBQUMsTUFBMEI7UUFDM0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsUUFBUSxHQUFHLGVBQWUsRUFDMUI7WUFDRSxNQUFNO1NBQ1AsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUEyQztRQUN6RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixRQUFRLEdBQUcsYUFBYSxFQUN4QjtZQUNFLE1BQU07U0FDUCxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsbUJBQW1CLENBQUMsTUFBMEI7UUFDNUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsUUFBUSxHQUFHLGdCQUFnQixFQUMzQjtZQUNFLE1BQU07U0FDUCxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQXdDO1FBQ2xELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQVcsUUFBUSxHQUFHLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFZO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQU8sR0FBRyxRQUFRLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsU0FBaUIsRUFBRSxJQUFZO1FBQ2xELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLEdBQUcsZ0JBQWdCLGtCQUFrQixTQUFTLElBQUksSUFBSSxRQUFRLENBQy9ELENBQUM7SUFDSixDQUFDO0lBRUQseUJBQXlCLENBQUMsU0FBaUIsRUFBRSxJQUFZO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLEdBQUcsZ0JBQWdCLHVCQUF1QixTQUFTLElBQUksSUFBSSxRQUFRLENBQ3BFLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQStCO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLFdBQVcsR0FBRyxtQkFBbUIsRUFDakMsRUFBRSxNQUFNLEVBQUUsQ0FDWCxDQUFDO0lBQ0osQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDdEUsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUMzQixDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUErQjtRQUN6QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixXQUFXLEdBQUcsbUJBQW1CLEVBQ2pDLEVBQUUsTUFBTSxFQUFFLENBQ1gsQ0FBQztJQUNKLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3RFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDM0IsQ0FBQztJQUNKLENBQUM7K0VBMUVVLGNBQWM7dUVBQWQsY0FBYyxXQUFkLGNBQWMsbUJBREQsTUFBTTs7aUZBQ25CLGNBQWM7Y0FEMUIsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBBUElfR0FURVdBWSxcbiAgQ2x1c3RlcixcbiAgS3ViZXJuZXRlc1Jlc291cmNlTGlzdCxcbiAgUHJvamVjdCxcbiAgUmVzb3VyY2VMaXN0UGFyYW1zLFxuICBSb2xlVGVtcGxhdGUsXG4gIFVzZXIsXG4gIFVzZXJCaW5kaW5nLFxuICBVc2VyTGlzdCxcbiAgVXNlclJvbGUsXG59IGZyb20gJy4uL2NvcmUvcHVibGljLWFwaSc7XG5cbmNvbnN0IEFVVEhfVVJMID0gQVBJX0dBVEVXQVkgKyAnL2F1dGgvdjInO1xuXG4vLyBOb3RpZmljYXRpb24gbWVtYmVyIHJlc29sdXRpb24gbW92ZWQgZnJvbSBhcG9sbG8gKC9hdXRoL3YyKSB0byBjb3VyaWVyLCBzZXJ2ZWRcbi8vIGFzIHBsYWluIGNvdXJpZXIgL3YxIEFQSXMgKGxpa2UgL3YxL2FsZXJ0cykgcmVhY2hlZCB0aHJvdWdoIHRoZSBjb3VyaWVyLWFwaVxuLy8gaW5ncmVzcyB3aGljaCBmb3J3YXJkcyB0aGUgY2FsbGVyJ3MgdG9rZW4uXG5jb25zdCBOT1RJRklDQVRJT05fVVJMID0gQVBJX0dBVEVXQVkgKyAnL3YxJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBdXRoQXBpU2VydmljZSB7XG4gIHByaXZhdGUgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcblxuICBnZXRVc2VyQmluZGluZ0xpc3QocGFyYW1zOiBSZXNvdXJjZUxpc3RQYXJhbXMpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxLdWJlcm5ldGVzUmVzb3VyY2VMaXN0PFVzZXJCaW5kaW5nPj4oXG4gICAgICBBVVRIX1VSTCArICcvdXNlcmJpbmRpbmdzJyxcbiAgICAgIHtcbiAgICAgICAgcGFyYW1zLFxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgZ2V0VXNlclJvbGVMaXN0KHBhcmFtczogeyB1c2Vyczogc3RyaW5nOyBwcm9qZWN0Pzogc3RyaW5nIH0pIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxLdWJlcm5ldGVzUmVzb3VyY2VMaXN0PFVzZXJSb2xlPj4oXG4gICAgICBBVVRIX1VSTCArICcvdXNlcnNyb2xlcycsXG4gICAgICB7XG4gICAgICAgIHBhcmFtcyxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIGdldFJvbGVUZW1wbGF0ZUxpc3QocGFyYW1zOiBSZXNvdXJjZUxpc3RQYXJhbXMpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxLdWJlcm5ldGVzUmVzb3VyY2VMaXN0PFJvbGVUZW1wbGF0ZT4+KFxuICAgICAgQVVUSF9VUkwgKyAnL3JvbGV0ZW1wbGF0ZXMnLFxuICAgICAge1xuICAgICAgICBwYXJhbXMsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBnZXRVc2VyTGlzdChwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VXNlckxpc3Q+KEFVVEhfVVJMICsgJy91c2VycycsIHsgcGFyYW1zIH0pO1xuICB9XG5cbiAgZ2V0VXNlcihuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxVc2VyPihgJHtBVVRIX1VSTH0vdXNlcnMvJHtuYW1lfWApO1xuICB9XG5cbiAgZ2V0Tm90aWZpY2F0aW9uVXNlcnMobmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEt1YmVybmV0ZXNSZXNvdXJjZUxpc3Q8VXNlcj4+KFxuICAgICAgYCR7Tk9USUZJQ0FUSU9OX1VSTH0vbm90aWZpY2F0aW9ucy8ke25hbWVzcGFjZX0vJHtuYW1lfS91c2Vyc2AsXG4gICAgKTtcbiAgfVxuXG4gIGdldE5vdGlmaWNhdGlvbkdyb3VwVXNlcnMobmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEt1YmVybmV0ZXNSZXNvdXJjZUxpc3Q8VXNlcj4+KFxuICAgICAgYCR7Tk9USUZJQ0FUSU9OX1VSTH0vbm90aWZpY2F0aW9uZ3JvdXBzLyR7bmFtZXNwYWNlfS8ke25hbWV9L3VzZXJzYCxcbiAgICApO1xuICB9XG5cbiAgZ2V0Q2x1c3RlcnMocGFyYW1zPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPikge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEt1YmVybmV0ZXNSZXNvdXJjZUxpc3Q8Q2x1c3Rlcj4+KFxuICAgICAgQVBJX0dBVEVXQVkgKyAnL2F1dGgvdjEvY2x1c3RlcnMnLFxuICAgICAgeyBwYXJhbXMgfSxcbiAgICApO1xuICB9XG5cbiAgZ2V0Q2x1c3RlcihuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRDbHVzdGVycyh7IGZpZWxkU2VsZWN0b3I6IGBtZXRhZGF0YS5uYW1lPSR7bmFtZX1gIH0pLnBpcGUoXG4gICAgICBtYXAobGlzdCA9PiBsaXN0Lml0ZW1zWzBdKSxcbiAgICApO1xuICB9XG5cbiAgZ2V0UHJvamVjdHMocGFyYW1zPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPikge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEt1YmVybmV0ZXNSZXNvdXJjZUxpc3Q8UHJvamVjdD4+KFxuICAgICAgQVBJX0dBVEVXQVkgKyAnL2F1dGgvdjEvcHJvamVjdHMnLFxuICAgICAgeyBwYXJhbXMgfSxcbiAgICApO1xuICB9XG5cbiAgZ2V0UHJvamVjdChuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRQcm9qZWN0cyh7IGZpZWxkU2VsZWN0b3I6IGBtZXRhZGF0YS5uYW1lPSR7bmFtZX1gIH0pLnBpcGUoXG4gICAgICBtYXAobGlzdCA9PiBsaXN0Lml0ZW1zWzBdKSxcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -2,17 +2,18 @@
2
2
  * @packageDocumentation
3
3
  * @module api
4
4
  */
5
- import { HttpClient, HttpEventType, } from '@angular/common/http';
5
+ import { HttpClient, HttpErrorResponse, HttpEventType, } from '@angular/common/http';
6
6
  import { Inject, Injectable } from '@angular/core';
7
7
  import { get, set } from 'lodash-es';
8
8
  import { NEVER, Observable, combineLatest, from, of, throwError, filter, map, retryWhen, startWith, switchMap, concatMap, delay, distinctUntilChanged, } from 'rxjs';
9
9
  import { API_GATEWAY, DOWNGRADE_WATCH_ENABLED, NOTIFY_ON_ERROR_HEADERS, NOT_NOTIFY_ON_ERROR_HEADERS, TRUE, } from '../core/constants/constants';
10
10
  import { TOKEN_GLOBAL_NAMESPACE } from '../core/constants/tokens';
11
- import { CRYPTO_HEADER_KEY, } from '../core/public-api';
11
+ import { CRYPTO_HEADER_KEY, K8sResourceAction, } from '../core/public-api';
12
12
  import { METADATA, NAME, NAMESPACE } from '../core/services/public-api';
13
13
  import { createPollObservable } from '../core/utils/observable';
14
14
  import { isEqual, parseJSONStream } from '../core/utils/public-api';
15
15
  import { normalizeParams } from '../k8s-resource-list/utils';
16
+ import { K8sPermissionService } from '../permission/k8s-permission.service';
16
17
  import { getApiPrefixParts, getMetadataHeaders, isResourceEvent, reduceWatchEvents, } from './helpers';
17
18
  import { K8sApiResourceService } from './k8s-api-resource.service';
18
19
  import { PageVisibilityService } from './page-visibility.service';
@@ -21,16 +22,18 @@ import * as i0 from "@angular/core";
21
22
  import * as i1 from "@angular/common/http";
22
23
  import * as i2 from "./k8s-api-resource.service";
23
24
  import * as i3 from "./page-visibility.service";
25
+ import * as i4 from "../permission/k8s-permission.service";
24
26
  // 名称前缀 Erebus 参考 http://confluence.alauda.cn/pages/viewpage.action?pageId=44663484 指 /kubernetes/ 开头的 api 组件
25
27
  export const TIMEOUT_SECONDS = 59;
26
28
  export const SEARCH_URL_PREFIX = '/acp/v1/resources/search';
27
29
  const RETRY_DELAY = 5000;
28
30
  const RETRY_COUNT = 3;
29
31
  export class K8sApiService {
30
- constructor(http, k8sApiResource, pageVisibility, globalNamespace) {
32
+ constructor(http, k8sApiResource, pageVisibility, k8sPermission, globalNamespace) {
31
33
  this.http = http;
32
34
  this.k8sApiResource = k8sApiResource;
33
35
  this.pageVisibility = pageVisibility;
36
+ this.k8sPermission = k8sPermission;
34
37
  this.globalNamespace = globalNamespace;
35
38
  // @internal
36
39
  this._getHeaders = ({ notifyOnError, onlyMetadata, customAccept, crypto }, isList) => {
@@ -114,7 +117,14 @@ export class K8sApiService {
114
117
  watchResource(params) {
115
118
  return DOWNGRADE_WATCH_ENABLED && params.downgradePolling
116
119
  ? createPollObservable(this._getResource(params), this._getDowngradePolling(params)).pipe(distinctUntilChanged((a, b) => isEqual(a, b)))
117
- : this._watchResource(params);
120
+ : this.k8sPermission
121
+ .isAllowed({
122
+ ...params,
123
+ action: K8sResourceAction.GET,
124
+ })
125
+ .pipe(switchMap(allowed => allowed
126
+ ? this._watchResource(params)
127
+ : throwError(() => new HttpErrorResponse({ status: 403 }))));
118
128
  }
119
129
  /**
120
130
  * 监听资源列表变化
@@ -381,14 +391,14 @@ export class K8sApiService {
381
391
  .getPageVisibility()
382
392
  .pipe(map(visible => (visible ? downgradePolling : 0)));
383
393
  }
384
- static { this.ɵfac = function K8sApiService_Factory(t) { return new (t || K8sApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.K8sApiResourceService), i0.ɵɵinject(i3.PageVisibilityService), i0.ɵɵinject(TOKEN_GLOBAL_NAMESPACE)); }; }
394
+ static { this.ɵfac = function K8sApiService_Factory(t) { return new (t || K8sApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.K8sApiResourceService), i0.ɵɵinject(i3.PageVisibilityService), i0.ɵɵinject(i4.K8sPermissionService), i0.ɵɵinject(TOKEN_GLOBAL_NAMESPACE)); }; }
385
395
  static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: K8sApiService, factory: K8sApiService.ɵfac, providedIn: 'root' }); }
386
396
  }
387
397
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(K8sApiService, [{
388
398
  type: Injectable,
389
399
  args: [{ providedIn: 'root' }]
390
- }], () => [{ type: i1.HttpClient }, { type: i2.K8sApiResourceService }, { type: i3.PageVisibilityService }, { type: undefined, decorators: [{
400
+ }], () => [{ type: i1.HttpClient }, { type: i2.K8sApiResourceService }, { type: i3.PageVisibilityService }, { type: i4.K8sPermissionService }, { type: undefined, decorators: [{
391
401
  type: Inject,
392
402
  args: [TOKEN_GLOBAL_NAMESPACE]
393
403
  }] }], null); })();
394
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiazhzLWFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2FwaS9rOHMtYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUNMLFVBQVUsRUFFVixhQUFhLEdBQ2QsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQ0wsS0FBSyxFQUNMLFVBQVUsRUFFVixhQUFhLEVBQ2IsSUFBSSxFQUNKLEVBQUUsRUFDRixVQUFVLEVBQ1YsTUFBTSxFQUNOLEdBQUcsRUFDSCxTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsS0FBSyxFQUNMLG9CQUFvQixHQUNyQixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFDTCxXQUFXLEVBQ1gsdUJBQXVCLEVBQ3ZCLHVCQUF1QixFQUN2QiwyQkFBMkIsRUFDM0IsSUFBSSxHQUNMLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbEUsT0FBTyxFQUNMLGlCQUFpQixHQUlsQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTdELE9BQU8sRUFDTCxpQkFBaUIsRUFD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QUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQzs4RUE5ZlUsYUFBYSx3SEFLZCxzQkFBc0I7dUVBTHJCLGFBQWEsV0FBYixhQUFhLG1CQURBLE1BQU07O2lGQUNuQixhQUFhO2NBRHpCLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O3NCQU03QixNQUFNO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKiBAbW9kdWxlIGFwaVxuICovXG5cbmltcG9ydCB7XG4gIEh0dHBDbGllbnQsXG4gIEh0dHBEb3dubG9hZFByb2dyZXNzRXZlbnQsXG4gIEh0dHBFdmVudFR5cGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0LCBzZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtcbiAgTkVWRVIsXG4gIE9ic2VydmFibGUsXG4gIFN1YnNjcmlwdGlvbixcbiAgY29tYmluZUxhdGVzdCxcbiAgZnJvbSxcbiAgb2YsXG4gIHRocm93RXJyb3IsXG4gIGZpbHRlcixcbiAgbWFwLFxuICByZXRyeVdoZW4sXG4gIHN0YXJ0V2l0aCxcbiAgc3dpdGNoTWFwLFxuICBjb25jYXRNYXAsXG4gIGRlbGF5LFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIEFQSV9HQVRFV0FZLFxuICBET1dOR1JBREVfV0FUQ0hfRU5BQkxFRCxcbiAgTk9USUZZX09OX0VSUk9SX0hFQURFUlMsXG4gIE5PVF9OT1RJRllfT05fRVJST1JfSEVBREVSUyxcbiAgVFJVRSxcbn0gZnJvbSAnLi4vY29yZS9jb25zdGFudHMvY29uc3RhbnRzJztcbmltcG9ydCB7IFRPS0VOX0dMT0JBTF9OQU1FU1BBQ0UgfSBmcm9tICcuLi9jb3JlL2NvbnN0YW50cy90b2tlbnMnO1xuaW1wb3J0IHtcbiAgQ1JZUFRPX0hFQURFUl9LRVksXG4gIEt1YmVybmV0ZXNSZXNvdXJjZSxcbiAgS3ViZXJuZXRlc1Jlc291cmNlTGlzdCxcbiAgU3RhdHVzLFxufSBmcm9tICcuLi9jb3JlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgTUVUQURBVEEsIE5BTUUsIE5BTUVTUEFDRSB9IGZyb20gJy4uL2NvcmUvc2VydmljZXMvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBjcmVhdGVQb2xsT2JzZXJ2YWJsZSB9IGZyb20gJy4uL2NvcmUvdXRpbHMvb2JzZXJ2YWJsZSc7XG5pbXBvcnQgeyBpc0VxdWFsLCBwYXJzZUpTT05TdHJlYW0gfSBmcm9tICcuLi9jb3JlL3V0aWxzL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgbm9ybWFsaXplUGFyYW1zIH0gZnJvbSAnLi4vazhzLXJlc291cmNlLWxpc3QvdXRpbHMnO1xuXG5pbXBvcnQge1xuICBnZXRBcGlQcmVmaXhQYXJ0cyxcbiAgZ2V0TWV0YWRhdGFIZWFkZXJzLFxuICBpc1Jlc291cmNlRXZlbnQsXG4gIHJlZHVjZVdhdGNoRXZlbnRzLFxufSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgSzhzQXBpUmVzb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi9rOHMtYXBpLXJlc291cmNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGFnZVZpc2liaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi9wYWdlLXZpc2liaWxpdHkuc2VydmljZSc7XG5pbXBvcnQge1xuICBBcGlCYXNlUGFyYW1zLFxuICBFcmVidXNSZXNvdXJjZURlbGV0ZVBhcmFtcyxcbiAgRXJlYnVzUmVzb3VyY2VMaXN0UGFyYW1zLFxuICBFcmVidXNSZXNvdXJjZVBhcmFtcyxcbiAgRXJlYnVzUmVzb3VyY2VQYXRjaFBhcmFtcyxcbiAgRXJlYnVzUmVzb3VyY2VXcml0ZVBhcmFtcyxcbiAgR2xvYmFsUmVzb3VyY2VEZWxldGVQYXJhbXMsXG4gIEdsb2JhbFJlc291cmNlTGlzdFBhcmFtcyxcbiAgR2xvYmFsUmVzb3VyY2VQYXJhbXMsXG4gIEdsb2JhbFJlc291cmNlUGF0Y2hQYXJhbXMsXG4gIEdsb2JhbFJlc291cmNlV3JpdGVQYXJhbXMsXG4gIFBhdGNoT3BlcmF0aW9uLFxuICBSZXNvdXJjZUFwaVBhcmFtcyxcbiAgUmVzb3VyY2VEZWxldGVQYXJhbXMsXG4gIFJlc291cmNlTGlzdFJlYWRQYXJhbXMsXG4gIFJlc291cmNlUGF0Y2hQYXJhbXMsXG4gIFJlc291cmNlUmVhZFBhcmFtcyxcbiAgUmVzb3VyY2VXcml0ZVBhcmFtcyxcbiAgV2F0Y2hBUElSZXNwb25zZSxcbiAgV2F0Y2hBcGlQYXJhbXMsXG4gIFdhdGNoRXJlYnVzUmVzb3VyY2VMaXN0UGFyYW1zLFxuICBXYXRjaEVyZWJ1c1Jlc291cmNlUGFyYW1zLFxuICBXYXRjaEV2ZW50LFxuICBXYXRjaEdsb2JhbFJlc291cmNlTGlzdFBhcmFtcyxcbiAgV2F0Y2hHbG9iYWxSZXNvdXJjZVBhcmFtcyxcbiAgV2F0Y2hSZXNvdXJjZUxpc3RSZWFkUGFyYW1zLFxuICBXYXRjaFJlc291cmNlUmVhZFBhcmFtcyxcbiAgRXJlYnVzUmVzb3VyY2VCYXRjaERlbGV0ZVBhcmFtcyxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIOWQjeensOWJjee8gCBFcmVidXMg5Y+C6ICDIGh0dHA6Ly9jb25mbHVlbmNlLmFsYXVkYS5jbi9wYWdlcy92aWV3cGFnZS5hY3Rpb24/cGFnZUlkPTQ0NjYzNDg0IOaMhyAva3ViZXJuZXRlcy8g5byA5aS055qEIGFwaSDnu4Tku7ZcblxuZXhwb3J0IGNvbnN0IFRJTUVPVVRfU0VDT05EUyA9IDU5O1xuZXhwb3J0IGNvbnN0IFNFQVJDSF9VUkxfUFJFRklYID0gJy9hY3AvdjEvcmVzb3VyY2VzL3NlYXJjaCc7XG5cbmNvbnN0IFJFVFJZX0RFTEFZID0gNTAwMDtcblxuY29uc3QgUkVUUllfQ09VTlQgPSAzO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEs4c0FwaVNlcnZpY2U8UiBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrOHNBcGlSZXNvdXJjZTogSzhzQXBpUmVzb3VyY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFnZVZpc2liaWxpdHk6IFBhZ2VWaXNpYmlsaXR5U2VydmljZSxcbiAgICBASW5qZWN0KFRPS0VOX0dMT0JBTF9OQU1FU1BBQ0UpIHByaXZhdGUgcmVhZG9ubHkgZ2xvYmFsTmFtZXNwYWNlOiBzdHJpbmcsXG4gICkge31cblxuICAvKipcbiAgICog6I635Y+WIEdsb2JhbCDpm4bnvqTljZXkuKrotYTmupDlr7nosaFcbiAgICovXG4gIGdldEdsb2JhbFJlc291cmNlPFQgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2U+KFxuICAgIHBhcmFtczogR2xvYmFsUmVzb3VyY2VQYXJhbXM8Uj4sXG4gICkge1xuICAgIHJldHVybiB0aGlzLl9nZXRSZXNvdXJjZTxUPihwYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIOebkeWQrCBHbG9iYWwg6ZuG576k5Y2V5Liq6LWE5rqQ5a+56LGhXG4gICAqL1xuICB3YXRjaEdsb2JhbFJlc291cmNlPFQgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2U+KFxuICAgIHBhcmFtczogV2F0Y2hHbG9iYWxSZXNvdXJjZVBhcmFtczxSPixcbiAgKSB7XG4gICAgcmV0dXJuIERPV05HUkFERV9XQVRDSF9FTkFCTEVEICYmIHBhcmFtcy5kb3duZ3JhZGVQb2xsaW5nXG4gICAgICA/IGNyZWF0ZVBvbGxPYnNlcnZhYmxlPFQ+KFxuICAgICAgICAgIHRoaXMuZ2V0R2xvYmFsUmVzb3VyY2UocGFyYW1zKSxcbiAgICAgICAgICB0aGlzLl9nZXREb3duZ3JhZGVQb2xsaW5nKHBhcmFtcyksXG4gICAgICAgICkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gaXNFcXVhbChhLCBiKSkpXG4gICAgICA6IHRoaXMuX3dhdGNoUmVzb3VyY2U8VD4ocGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDnm5HlkKwgR2xvYmFsIOmbhue+pOi1hOa6kOWIl+ihqOWPmOWMllxuICAgKi9cbiAgd2F0Y2hHbG9iYWxSZXNvdXJjZUNoYW5nZTxUIGV4dGVuZHMgS3ViZXJuZXRlc1Jlc291cmNlPihcbiAgICBzZWVkVmVyc2lvbjogc3RyaW5nLFxuICAgIHBhcmFtczogV2F0Y2hHbG9iYWxSZXNvdXJjZUxpc3RQYXJhbXM8Uj4sXG4gICkge1xuICAgIHJldHVybiB0aGlzLl9rZWVwV2F0Y2hSZXNvdXJjZUNoYW5nZTxUPihzZWVkVmVyc2lvbiwgcGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5YgR2xvYmFsIOmbhue+pOi1hOa6kOWvueixoeWIl+ihqO+8jOWMheWQq+WIhumhteS/oeaBr1xuICAgKi9cbiAgZ2V0R2xvYmFsUmVzb3VyY2VMaXN0PFQgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2U+KFxuICAgIHBhcmFtczogR2xvYmFsUmVzb3VyY2VMaXN0UGFyYW1zPFI+LFxuICApIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0UmVzb3VyY2VMaXN0PFQ+KHBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICog5Yib5bu6IEdsb2JhbCDpm4bnvqTotYTmupBcbiAgICovXG4gIHBvc3RHbG9iYWxSZXNvdXJjZTxUIGV4dGVuZHMgS3ViZXJuZXRlc1Jlc291cmNlPihcbiAgICBwYXJhbXM6IEdsb2JhbFJlc291cmNlV3JpdGVQYXJhbXM8VCwgUj4sXG4gICkge1xuICAgIHJldHVybiB0aGlzLl9wb3N0UmVzb3VyY2U8VD4ocGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDlrozmlbTopobnm5bmm7TmlrAgR2xvYmFsIOmbhue+pOWNleS4qui1hOa6kOWvueixoVxuICAgKi9cbiAgcHV0R2xvYmFsUmVzb3VyY2U8VCBleHRlbmRzIEt1YmVybmV0ZXNSZXNvdXJjZT4oXG4gICAgcGFyYW1zOiBHbG9iYWxSZXNvdXJjZVdyaXRlUGFyYW1zPFQsIFI+LFxuICApIHtcbiAgICByZXR1cm4gdGhpcy5fcHV0UmVzb3VyY2U8VD4ocGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDlop7ph4/mm7TmlrAgR2xvYmFsIOmbhue+pOWNleS4qui1hOa6kOWvueixoeeahOmDqOWIhuWxnuaAp1xuICAgKi9cbiAgcGF0Y2hHbG9iYWxSZXNvdXJjZTxUIGV4dGVuZHMgS3ViZXJuZXRlc1Jlc291cmNlPihcbiAgICBwYXJhbXM6IEdsb2JhbFJlc291cmNlUGF0Y2hQYXJhbXM8VCwgUj4sXG4gICkge1xuICAgIHJldHVybiB0aGlzLl9wYXRjaFJlc291cmNlPFQ+KHBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICog5Yig6ZmkIEdsb2JhbCDpm4bnvqTljZXkuKrotYTmupBcbiAgICovXG4gIGRlbGV0ZUdsb2JhbFJlc291cmNlPFxuICAgIFMgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2UgPSBTdGF0dXMsXG4gICAgVCBleHRlbmRzIEt1YmVybmV0ZXNSZXNvdXJjZSA9IFMgZXh0ZW5kcyBTdGF0dXMgPyBLdWJlcm5ldGVzUmVzb3VyY2UgOiBTLFxuICA+KHBhcmFtczogR2xvYmFsUmVzb3VyY2VEZWxldGVQYXJhbXM8VCwgUj4pIHtcbiAgICByZXR1cm4gdGhpcy5fZGVsZXRlUmVzb3VyY2U8UywgVD4ocGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5bkuJrliqHpm4bnvqTljZXkuKrotYTmupDlr7nosaFcbiAgICovXG4gIGdldFJlc291cmNlPFQgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2U+KHBhcmFtczogRXJlYnVzUmVzb3VyY2VQYXJhbXM8Uj4pIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0UmVzb3VyY2U8VD4ocGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDnm5HlkKzkuJrliqHpm4bnvqTljZXkuKrotYTmupDlr7nosaFcbiAgICovXG4gIHdhdGNoUmVzb3VyY2U8VCBleHRlbmRzIEt1YmVybmV0ZXNSZXNvdXJjZT4oXG4gICAgcGFyYW1zOiBXYXRjaEVyZWJ1c1Jlc291cmNlUGFyYW1zPFI+LFxuICApIHtcbiAgICByZXR1cm4gRE9XTkdSQURFX1dBVENIX0VOQUJMRUQgJiYgcGFyYW1zLmRvd25ncmFkZVBvbGxpbmdcbiAgICAgID8gY3JlYXRlUG9sbE9ic2VydmFibGU8VD4oXG4gICAgICAgICAgdGhpcy5fZ2V0UmVzb3VyY2U8VD4ocGFyYW1zKSxcbiAgICAgICAgICB0aGlzLl9nZXREb3duZ3JhZGVQb2xsaW5nKHBhcmFtcyksXG4gICAgICAgICkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gaXNFcXVhbChhLCBiKSkpXG4gICAgICA6IHRoaXMuX3dhdGNoUmVzb3VyY2U8VD4ocGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDnm5HlkKzotYTmupDliJfooajlj5jljJZcbiAgICovXG4gIHdhdGNoUmVzb3VyY2VDaGFuZ2U8VCBleHRlbmRzIEt1YmVybmV0ZXNSZXNvdXJjZT4oXG4gICAgc2VlZFZlcnNpb246IHN0cmluZyxcbiAgICBwYXJhbXM6IFdhdGNoRXJlYnVzUmVzb3VyY2VMaXN0UGFyYW1zPFI+LFxuICApIHtcbiAgICByZXR1cm4gdGhpcy5fa2VlcFdhdGNoUmVzb3VyY2VDaGFuZ2U8VD4oc2VlZFZlcnNpb24sIHBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICog6I635Y+W5Lia5Yqh6ZuG576k6LWE5rqQ5a+56LGh5YiX6KGo77yM5YyF5ZCr5YiG6aG15L+h5oGvXG4gICAqL1xuICBnZXRSZXNvdXJjZUxpc3Q8VCBleHRlbmRzIEt1YmVybmV0ZXNSZXNvdXJjZT4oXG4gICAgcGFyYW1zOiBFcmVidXNSZXNvdXJjZUxpc3RQYXJhbXM8Uj4sXG4gICkge1xuICAgIHJldHVybiB0aGlzLl9nZXRSZXNvdXJjZUxpc3Q8VD4ocGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDliJvlu7rkuJrliqHpm4bnvqTotYTmupBcbiAgICovXG4gIHBvc3RSZXNvdXJjZTxUIGV4dGVuZHMgS3ViZXJuZXRlc1Jlc291cmNlPihcbiAgICBwYXJhbXM6IEVyZWJ1c1Jlc291cmNlV3JpdGVQYXJhbXM8VCwgUj4sXG4gICkge1xuICAgIHJldHVybiB0aGlzLl9wb3N0UmVzb3VyY2U8VD4ocGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDlrozmlbTopobnm5bmm7TmlrDkuJrliqHpm4bnvqTljZXkuKrotYTmupDlr7nosaFcbiAgICovXG4gIHB1dFJlc291cmNlPFQgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2U+KFxuICAgIHBhcmFtczogRXJlYnVzUmVzb3VyY2VXcml0ZVBhcmFtczxULCBSPixcbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMuX3B1dFJlc291cmNlPFQ+KHBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICog5aKe6YeP5pu05paw5Lia5Yqh6ZuG576k5Y2V5Liq6LWE5rqQ5a+56LGh55qE6YOo5YiG5bGe5oCnXG4gICAqL1xuICBwYXRjaFJlc291cmNlPFQgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2U+KFxuICAgIHBhcmFtczogRXJlYnVzUmVzb3VyY2VQYXRjaFBhcmFtczxULCBSPixcbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhdGNoUmVzb3VyY2U8VD4ocGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDliKDpmaTkuJrliqHpm4bnvqTljZXkuKrotYTmupBcbiAgICovXG4gIGRlbGV0ZVJlc291cmNlPFxuICAgIFMgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2UgPSBTdGF0dXMsXG4gICAgVCBleHRlbmRzIEt1YmVybmV0ZXNSZXNvdXJjZSA9IFMgZXh0ZW5kcyBTdGF0dXMgPyBLdWJlcm5ldGVzUmVzb3VyY2UgOiBTLFxuICA+KHBhcmFtczogRXJlYnVzUmVzb3VyY2VEZWxldGVQYXJhbXM8VCwgUj4pIHtcbiAgICBpZiAoJ25hbWUnIGluIHBhcmFtcyAmJiAhcGFyYW1zLm5hbWUpIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignZGVsZXRlIHJlc291cmNlIG5lZWQgcmVzb3VyY2UgbmFtZScpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2RlbGV0ZVJlc291cmNlPFMsIFQ+KHBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICog5om56YeP5Yig6Zmk5Lia5Yqh6ZuG576k55qE6LWE5rqQXG4gICAqL1xuICBiYXRjaERlbGV0ZVJlc291cmNlPFxuICAgIFMgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2UgPSBTdGF0dXMsXG4gICAgVCBleHRlbmRzIEt1YmVybmV0ZXNSZXNvdXJjZSA9IFMgZXh0ZW5kcyBTdGF0dXMgPyBLdWJlcm5ldGVzUmVzb3VyY2UgOiBTLFxuICA+KHBhcmFtczogRXJlYnVzUmVzb3VyY2VCYXRjaERlbGV0ZVBhcmFtczxSPikge1xuICAgIHJldHVybiB0aGlzLl9iYXRjaERlbGV0ZVJlc291cmNlPFQ+KHBhcmFtcyk7XG4gIH1cblxuICAvLyBAaW50ZXJuYWxcbiAgcHJpdmF0ZSBfZ2V0UmVzb3VyY2VEZWZpbml0aW9uKHBhcmFtczogUmVzb3VyY2VBcGlQYXJhbXM8Uj4pIHtcbiAgICBjb25zdCBkZWZpbml0aW9uID0gdGhpcy5rOHNBcGlSZXNvdXJjZS5nZXREZWZpbml0aW9uKFxuICAgICAgJ2RlZmluaXRpb24nIGluIHBhcmFtcyAmJiBwYXJhbXMuZGVmaW5pdGlvblxuICAgICAgICA/IHBhcmFtcy5kZWZpbml0aW9uXG4gICAgICAgIDogJ3R5cGUnIGluIHBhcmFtcyAmJiBwYXJhbXMudHlwZSxcbiAgICApO1xuICAgIGlmICgncmVzb3VyY2UnIGluIHBhcmFtcyAmJiBwYXJhbXMucmVzb3VyY2UpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IGRlZmluaXRpb24udHlwZSxcbiAgICAgICAgLi4uZ2V0QXBpUHJlZml4UGFydHMocGFyYW1zLnJlc291cmNlLmFwaVZlcnNpb24pLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGRlZmluaXRpb247XG4gIH1cblxuICAvLyBAaW50ZXJuYWxcbiAgcHJpdmF0ZSBfZ2V0QXBpUGF0aChwYXJhbXM6IFJlc291cmNlQXBpUGFyYW1zPFI+LCBpZ25vcmVOYW1lID0gZmFsc2UpIHtcbiAgICByZXR1cm4gdGhpcy5rOHNBcGlSZXNvdXJjZS5nZXRBcGlQYXRoKHtcbiAgICAgIC4uLnRoaXMuX2dldFJlc291cmNlRGVmaW5pdGlvbihwYXJhbXMpLFxuICAgICAgY2x1c3RlcjogJ2NsdXN0ZXInIGluIHBhcmFtcyAmJiBwYXJhbXMuY2x1c3RlcixcbiAgICAgIG5hbWVzcGFjZTogdGhpcy5fZ2V0TmFtZXNwYWNlKHBhcmFtcyksXG4gICAgICBuYW1lOiBpZ25vcmVOYW1lID8gbnVsbCA6IHRoaXMuX2dldE5hbWUocGFyYW1zKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEBpbnRlcm5hbFxuICBwcml2YXRlIF9nZXROYW1lc3BhY2UocGFyYW1zOiBSZXNvdXJjZUFwaVBhcmFtczxSPikge1xuICAgIHJldHVybiAnbmFtZXNwYWNlJyBpbiBwYXJhbXMgJiYgcGFyYW1zLm5hbWVzcGFjZVxuICAgICAgPyBwYXJhbXMubmFtZXNwYWNlXG4gICAgICA6ICduYW1lc3BhY2VkJyBpbiBwYXJhbXMgJiYgcGFyYW1zLm5hbWVzcGFjZWRcbiAgICAgID8gdGhpcy5nbG9iYWxOYW1lc3BhY2VcbiAgICAgIDogJ3Jlc291cmNlJyBpbiBwYXJhbXMgJiYgZ2V0KHBhcmFtcy5yZXNvdXJjZSwgW01FVEFEQVRBLCBOQU1FU1BBQ0VdKTtcbiAgfVxuXG4gIC8vIEBpbnRlcm5hbFxuICBwcml2YXRlIF9nZXROYW1lKHBhcmFtczogUmVzb3VyY2VBcGlQYXJhbXM8Uj4pIHtcbiAgICByZXR1cm4gJ25hbWUnIGluIHBhcmFtc1xuICAgICAgPyBwYXJhbXMubmFtZVxuICAgICAgOiAncmVzb3VyY2UnIGluIHBhcmFtcyAmJiBnZXQocGFyYW1zLnJlc291cmNlLCBbTUVUQURBVEEsIE5BTUVdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBrOHMgbGlzdCBhcGkg6L+U5Zue55qE57uT5p6c6YeM77yMaXRlbXMg57y65aSxIGtpbmQg5ZKMIGFwaVZlcnNpb24g5a2X5q61XG4gICAqIOinhOWImeWmgiBTZXJ2aWNlIOexu+Wei+WvueW6lCBraW5kOiBTZXJ2aWNlTGlzdO+8jOWOu+aOieacgOWQjuWbm+S4quWtl+espuWPr+W+l+WIsOi1hOa6kOeahCBraW5kXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBfZ2V0Tm9ybWFsaXplZExpc3Q8VCBleHRlbmRzIEt1YmVybmV0ZXNSZXNvdXJjZUxpc3Q+KGxpc3Q6IFQpOiBUIHtcbiAgICBjb25zdCB7IGFwaVZlcnNpb24sIGl0ZW1zIH0gPSBsaXN0O1xuXG4gICAgaWYgKCFpdGVtcyB8fCBpdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmxpc3QsXG4gICAgICAgIGl0ZW1zOiBbXSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3Qga2luZCA9IGxpc3Qua2luZC5zbGljZSgwLCAtNCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmxpc3QsXG4gICAgICBpdGVtczogaXRlbXMubWFwKGl0ZW0gPT4gKHtcbiAgICAgICAgLy8ga2V5IOmhuuW6j+S8muW9seWTjei9rCB5YW1sIOWQjueahOmhuuW6j1xuICAgICAgICBraW5kLFxuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICAuLi5pdGVtLFxuICAgICAgfSkpLFxuICAgIH07XG4gIH1cblxuICAvLyBAaW50ZXJuYWxcbiAgcHJpdmF0ZSBfZ2V0UmVzb3VyY2U8VCBleHRlbmRzIEt1YmVybmV0ZXNSZXNvdXJjZT4oXG4gICAgcGFyYW1zOiBSZXNvdXJjZVJlYWRQYXJhbXM8Uj4sXG4gICkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFQ+KHRoaXMuX2dldEFwaVBhdGgocGFyYW1zKSwge1xuICAgICAgaGVhZGVyczogdGhpcy5fZ2V0SGVhZGVycyhwYXJhbXMpLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gQGludGVybmFsXG4gIHByaXZhdGUgX3dhdGNoUmVzb3VyY2U8VCBleHRlbmRzIEt1YmVybmV0ZXNSZXNvdXJjZT4oXG4gICAgcGFyYW1zOiBXYXRjaFJlc291cmNlUmVhZFBhcmFtczxSPixcbiAgKSB7XG4gICAgY29uc3QgZGV0YWlsUGFyYW1zID0ge1xuICAgICAgLi4ucGFyYW1zLFxuICAgICAgcXVlcnlQYXJhbXM6IHsgZmllbGRTZWxlY3RvcjogJ21ldGFkYXRhLm5hbWU9JyArIHRoaXMuX2dldE5hbWUocGFyYW1zKSB9LFxuICAgIH07XG4gICAgY29uc3QgZGVmYXVsdFJldHJ5ID0ge1xuICAgICAgY291bnQ6IFJFVFJZX0NPVU5ULFxuICAgICAgZGVsYXk6IFJFVFJZX0RFTEFZLFxuICAgIH07XG4gICAgY29uc3QgeyBjb3VudCwgZGVsYXk6IGRlbGF5VGltZSB9ID1cbiAgICAgIHBhcmFtcy5yZXRyeSA9PT0gdHJ1ZVxuICAgICAgICA/IHtcbiAgICAgICAgICAgIC4uLmRlZmF1bHRSZXRyeSxcbiAgICAgICAgICAgIGNvdW50OiBJbmZpbml0eSxcbiAgICAgICAgICB9XG4gICAgICAgIDoge1xuICAgICAgICAgICAgLi4uZGVmYXVsdFJldHJ5LFxuICAgICAgICAgICAgLi4ucGFyYW1zLnJldHJ5LFxuICAgICAgICAgIH07XG4gICAgbGV0IHNvRmFyID0gMDtcbiAgICByZXR1cm4gdGhpcy5fZ2V0UmVzb3VyY2VMaXN0PFQ+KGRldGFpbFBhcmFtcykucGlwZShcbiAgICAgIHN3aXRjaE1hcChsaXN0ID0+XG4gICAgICAgIHRoaXMuX2tlZXBXYXRjaFJlc291cmNlQ2hhbmdlPFQ+KFxuICAgICAgICAgIGxpc3QubWV0YWRhdGEucmVzb3VyY2VWZXJzaW9uLFxuICAgICAgICAgIGRldGFpbFBhcmFtcyxcbiAgICAgICAgKS5waXBlKFxuICAgICAgICAgIGZpbHRlcihpc1Jlc291cmNlRXZlbnQpLFxuICAgICAgICAgIG1hcChyZXMgPT4gKHJlcy50eXBlID09PSBXYXRjaEV2ZW50LkRlbGV0ZWQgPyBudWxsIDogcmVzLm9iamVjdCkpLFxuICAgICAgICAgIHN0YXJ0V2l0aChsaXN0Lml0ZW1zWzBdID8/IG51bGwpLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICAgIHJldHJ5V2hlbihlcnIkID0+XG4gICAgICAgIGVyciQucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAoZXJyID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIgPT09IFdhdGNoRXZlbnQuRXJyb3IgfHwgKGNvdW50ICYmIHNvRmFyKysgPCBjb3VudCkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKGVycikucGlwZShkZWxheShjb3VudCA/IGRlbGF5VGltZSA6IDApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycik7XG4gICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICAvLyBAaW50ZXJuYWxcbiAgcHJpdmF0ZSBfa2VlcFdhdGNoUmVzb3VyY2VDaGFuZ2U8VCBleHRlbmRzIEt1YmVybmV0ZXNSZXNvdXJjZT4oXG4gICAgc2VlZFZlcnNpb246IHN0cmluZyxcbiAgICBwYXJhbXM6IFdhdGNoUmVzb3VyY2VMaXN0UmVhZFBhcmFtczxSPixcbiAgKSB7XG4gICAgbGV0IHJlc291cmNlVmVyc2lvbiA9IHNlZWRWZXJzaW9uO1xuICAgIGxldCBzdWI6IFN1YnNjcmlwdGlvbjtcblxuICAgIGNvbnN0IHdhdGNoJCA9IG5ldyBPYnNlcnZhYmxlPFdhdGNoQVBJUmVzcG9uc2U8VD4+KG9ic2VydmVyID0+IHtcbiAgICAgIGNvbnN0IHVuc3Vic2NyaWJlID0gKCkgPT4ge1xuICAgICAgICBpZiAoc3ViICYmICFzdWIuY2xvc2VkKSB7XG4gICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHdhdGNoID0gKCkgPT4ge1xuICAgICAgICB1bnN1YnNjcmliZSgpO1xuICAgICAgICBzdWIgPSB0aGlzLl93YXRjaFJlc291cmNlQ2hhbmdlPFQ+KHtcbiAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgcXVlcnlQYXJhbXM6IG5vcm1hbGl6ZVBhcmFtcyh7XG4gICAgICAgICAgICAuLi5wYXJhbXMucXVlcnlQYXJhbXMsXG4gICAgICAgICAgICB3YXRjaDogVFJVRSxcbiAgICAgICAgICAgIGFsbG93V2F0Y2hCb29rbWFya3M6IFRSVUUsXG4gICAgICAgICAgICB0aW1lb3V0U2Vjb25kczogU3RyaW5nKFRJTUVPVVRfU0VDT05EUyksXG4gICAgICAgICAgICByZXNvdXJjZVZlcnNpb24sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dChyZXMpIHtcbiAgICAgICAgICAgIGlmIChyZXMudHlwZSA9PT0gV2F0Y2hFdmVudC5FcnJvcikge1xuICAgICAgICAgICAgICBvYnNlcnZlci5lcnJvcihyZXMudHlwZSk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzb3VyY2VWZXJzaW9uID0gcmVzLm9iamVjdC5tZXRhZGF0YS5yZXNvdXJjZVZlcnNpb247XG4gICAgICAgICAgICBvYnNlcnZlci5uZXh0KHJlcyk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcihlcnIpIHtcbiAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKGVycik7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb21wbGV0ZTogd2F0Y2gsXG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgd2F0Y2goKTtcbiAgICAgIHJldHVybiB1bnN1YnNjcmliZTtcbiAgICB9KTtcblxuICAgIHJldHVybiBwYXJhbXMua2VlcGFsaXZlXG4gICAgICA/IHdhdGNoJFxuICAgICAgOiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICB0aGlzLnBhZ2VWaXNpYmlsaXR5LmdldFBhZ2VWaXNpYmlsaXR5KCksXG4gICAgICAgICAgcGFyYW1zLmFjdGl2ZSQgfHwgb2YodHJ1ZSksXG4gICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKChbdmlzaWJsZSwgYWN0aXZlXSkgPT5cbiAgICAgICAgICAgIHZpc2libGUgJiYgYWN0aXZlID8gd2F0Y2gkIDogTkVWRVIsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgfVxuXG4gIC8vIEBpbnRlcm5hbFxuICBwcml2YXRlIF93YXRjaFJlc291cmNlQ2hhbmdlPFQgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2U+KFxuICAgIHBhcmFtczogUmVzb3VyY2VMaXN0UmVhZFBhcmFtczxSPixcbiAgKTogT2JzZXJ2YWJsZTxXYXRjaEFQSVJlc3BvbnNlPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldCh0aGlzLl9nZXRBcGlQYXRoKHBhcmFtcywgdHJ1ZSksIHtcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCcsXG4gICAgICAgIG9ic2VydmU6ICdldmVudHMnLFxuICAgICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZSxcbiAgICAgICAgaGVhZGVyczogdGhpcy5fZ2V0SGVhZGVycyhwYXJhbXMpLFxuICAgICAgICBwYXJhbXM6IHBhcmFtcy5xdWVyeVBhcmFtcyxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKGV2ID0+IGV2LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuRG93bmxvYWRQcm9ncmVzcyksXG4gICAgICAgIGZpbHRlcihcbiAgICAgICAgICAoeyBwYXJ0aWFsVGV4dCB9OiBIdHRwRG93bmxvYWRQcm9ncmVzc0V2ZW50KSA9PiAhIXBhcnRpYWxUZXh0Py50cmltKCksXG4gICAgICAgICksXG4gICAgICAgIGNvbmNhdE1hcCgoeyBwYXJ0aWFsVGV4dCB9KSA9PlxuICAgICAgICAgIGZyb20oXG4gICAgICAgICAgICByZWR1Y2VXYXRjaEV2ZW50cyhcbiAgICAgICAgICAgICAgcGFyc2VKU09OU3RyZWFtPFdhdGNoQVBJUmVzcG9uc2U8VD4+KHBhcnRpYWxUZXh0KSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gIH1cblxuICAvLyBAaW50ZXJuYWxcbiAgcHJpdmF0ZSBfZ2V0UmVzb3VyY2VMaXN0PFQgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2U+KFxuICAgIHBhcmFtczogUmVzb3VyY2VMaXN0UmVhZFBhcmFtczxSPixcbiAgKSB7XG4gICAgLy8g5YyF5ZCrIGtleXdvcmQg5YmN57yA6ZyA6KaB5Yqg5LiK5YmN57yAICdhY3AvdjEvcmVzb3VyY2VzL3NlYXJjaCdcbiAgICAvLyDlj4LogIMgaHR0cDovL2NvbmZsdWVuY2UuYWxhdWRhLmNuL3BhZ2VzL3ZpZXdwYWdlLmFjdGlvbj9wYWdlSWQ9NDg3MzEwNThcbiAgICBsZXQgdXJsID0gdGhpcy5fZ2V0QXBpUGF0aChwYXJhbXMsIHRydWUpO1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0geyAuLi5wYXJhbXMucXVlcnlQYXJhbXMgfTtcbiAgICBpZiAocXVlcnlQYXJhbXMua2V5d29yZCkge1xuICAgICAgdXJsID0gdXJsLnJlcGxhY2UoQVBJX0dBVEVXQVksIGAke0FQSV9HQVRFV0FZfSR7U0VBUkNIX1VSTF9QUkVGSVh9YCk7XG4gICAgICBpZiAoIXF1ZXJ5UGFyYW1zLmZpZWxkKSB7XG4gICAgICAgIHF1ZXJ5UGFyYW1zLmZpZWxkID0gJ21ldGFkYXRhLm5hbWUnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PEt1YmVybmV0ZXNSZXNvdXJjZUxpc3Q8VD4+KHVybCwge1xuICAgICAgICBwYXJhbXM6IHF1ZXJ5UGFyYW1zLFxuICAgICAgICBoZWFkZXJzOiB0aGlzLl9nZXRIZWFkZXJzKHBhcmFtcywgdHJ1ZSksXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwKHRoaXMuX2dldE5vcm1hbGl6ZWRMaXN0KSk7XG4gIH1cblxuICAvLyBAaW50ZXJuYWxcbiAgcHJpdmF0ZSBfcG9zdFJlc291cmNlPFQgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2U+KFxuICAgIHBhcmFtczogUmVzb3VyY2VXcml0ZVBhcmFtczxSLCBUPixcbiAgKSB7XG4gICAgaWYgKFxuICAgICAgKCduYW1lc3BhY2UnIGluIHBhcmFtcyAmJiBwYXJhbXMubmFtZXNwYWNlKSB8fFxuICAgICAgKCduYW1lc3BhY2VkJyBpbiBwYXJhbXMgJiYgcGFyYW1zLm5hbWVzcGFjZWQpXG4gICAgKSB7XG4gICAgICBjb25zdCByZXNvdXJjZU5hbWVzcGFjZSA9IGdldChwYXJhbXMucmVzb3VyY2UsIFtNRVRBREFUQSwgTkFNRVNQQUNFXSk7XG4gICAgICBpZiAoIXJlc291cmNlTmFtZXNwYWNlKSB7XG4gICAgICAgIHNldChcbiAgICAgICAgICBwYXJhbXMucmVzb3VyY2UsXG4gICAgICAgICAgW01FVEFEQVRBLCBOQU1FU1BBQ0VdLFxuICAgICAgICAgIHBhcmFtcy5uYW1lc3BhY2UgfHwgdGhpcy5nbG9iYWxOYW1lc3BhY2UsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxUPih0aGlzLl9nZXRBcGlQYXRoKHBhcmFtcywgdHJ1ZSksIHBhcmFtcy5yZXNvdXJjZSwge1xuICAgICAgaGVhZGVyczogdGhpcy5fZ2V0SGVhZGVycyhwYXJhbXMpLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gQGludGVybmFsXG4gIHByaXZhdGUgX3B1dFJlc291cmNlPFQgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2U+KFxuICAgIHBhcmFtczogUmVzb3VyY2VXcml0ZVBhcmFtczxSLCBUPixcbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8VD4odGhpcy5fZ2V0QXBpUGF0aChwYXJhbXMpLCBwYXJhbXMucmVzb3VyY2UsIHtcbiAgICAgIGhlYWRlcnM6IHRoaXMuX2dldEhlYWRlcnMocGFyYW1zKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEBpbnRlcm5hbFxuICBwcml2YXRlIF9wYXRjaFJlc291cmNlPFQgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2U+KFxuICAgIHBhcmFtczogUmVzb3VyY2VQYXRjaFBhcmFtczxSLCBUPixcbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaDxUPih0aGlzLl9nZXRBcGlQYXRoKHBhcmFtcyksIHBhcmFtcy5wYXJ0LCB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIC4uLnRoaXMuX2dldEhlYWRlcnMocGFyYW1zKSxcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6IHBhcmFtcy5vcGVyYXRpb24gfHwgUGF0Y2hPcGVyYXRpb24uTWVyZ2UsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLy8gQGludGVybmFsXG4gIHByaXZhdGUgX2RlbGV0ZVJlc291cmNlPFxuICAgIFMgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2UsXG4gICAgVCBleHRlbmRzIEt1YmVybmV0ZXNSZXNvdXJjZSxcbiAgPihwYXJhbXM6IFJlc291cmNlRGVsZXRlUGFyYW1zPFIsIFQ+KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5yZXF1ZXN0PFM+KCdkZWxldGUnLCB0aGlzLl9nZXRBcGlQYXRoKHBhcmFtcyksIHtcbiAgICAgIGhlYWRlcnM6IHRoaXMuX2dldEhlYWRlcnMocGFyYW1zKSxcbiAgICAgIGJvZHk6IHBhcmFtcy5ib2R5LFxuICAgIH0pO1xuICB9XG5cbiAgLy8gQGludGVybmFsXG4gIHByaXZhdGUgX2JhdGNoRGVsZXRlUmVzb3VyY2U8UyBleHRlbmRzIEt1YmVybmV0ZXNSZXNvdXJjZT4oXG4gICAgcGFyYW1zOiBFcmVidXNSZXNvdXJjZUJhdGNoRGVsZXRlUGFyYW1zPFI+LFxuICApIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnJlcXVlc3Q8Uz4oJ2RlbGV0ZScsIHRoaXMuX2dldEFwaVBhdGgocGFyYW1zKSwge1xuICAgICAgaGVhZGVyczogdGhpcy5fZ2V0SGVhZGVycyhwYXJhbXMpLFxuICAgICAgYm9keTogcGFyYW1zLmJvZHksXG4gICAgICBwYXJhbXM6IHBhcmFtcy5xdWVyeVBhcmFtcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEBpbnRlcm5hbFxuICBwcml2YXRlIHJlYWRvbmx5IF9nZXRIZWFkZXJzID0gKFxuICAgIHsgbm90aWZ5T25FcnJvciwgb25seU1ldGFkYXRhLCBjdXN0b21BY2NlcHQsIGNyeXB0byB9OiBBcGlCYXNlUGFyYW1zPFI+LFxuICAgIGlzTGlzdD86IGJvb2xlYW4sXG4gICkgPT4ge1xuICAgIGNvbnN0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdPiA9IHt9O1xuICAgIGlmICh0eXBlb2Ygbm90aWZ5T25FcnJvciA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICBPYmplY3QuYXNzaWduKFxuICAgICAgICBoZWFkZXJzLFxuICAgICAgICBub3RpZnlPbkVycm9yID8gTk9USUZZX09OX0VSUk9SX0hFQURFUlMgOiBOT1RfTk9USUZZX09OX0VSUk9SX0hFQURFUlMsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoY3J5cHRvKSB7XG4gICAgICBPYmplY3QuYXNzaWduKGhlYWRlcnMsIHtcbiAgICAgICAgW0NSWVBUT19IRUFERVJfS0VZXTogY3J5cHRvLFxuICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2t1YmVybmV0ZXMvZGVzaWduLXByb3Bvc2Fscy1hcmNoaXZlL2Jsb2IvbWFpbi9hcGktbWFjaGluZXJ5L2FsdGVybmF0ZS1hcGktcmVwcmVzZW50YXRpb25zLm1kXG4gICAgICovXG4gICAgaWYgKG9ubHlNZXRhZGF0YSkge1xuICAgICAgT2JqZWN0LmFzc2lnbihoZWFkZXJzLCBnZXRNZXRhZGF0YUhlYWRlcnMoaXNMaXN0LCBjdXN0b21BY2NlcHQpKTtcbiAgICB9XG4gICAgcmV0dXJuIGhlYWRlcnM7XG4gIH07XG5cbiAgcHJpdmF0ZSBfZ2V0RG93bmdyYWRlUG9sbGluZyh7XG4gICAga2VlcGFsaXZlLFxuICAgIGRvd25ncmFkZVBvbGxpbmcsXG4gIH06IFdhdGNoQXBpUGFyYW1zKSB7XG4gICAgcmV0dXJuIGtlZXBhbGl2ZVxuICAgICAgPyBkb3duZ3JhZGVQb2xsaW5nXG4gICAgICA6IHRoaXMucGFnZVZpc2liaWxpdHlcbiAgICAgICAgICAuZ2V0UGFnZVZpc2liaWxpdHkoKVxuICAgICAgICAgIC5waXBlKG1hcCh2aXNpYmxlID0+ICh2aXNpYmxlID8gZG93bmdyYWRlUG9sbGluZyA6IDApKSk7XG4gIH1cbn1cbiJdfQ==
404
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiazhzLWFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2FwaS9rOHMtYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUNMLFVBQVUsRUFFVixpQkFBaUIsRUFDakIsYUFBYSxHQUNkLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxFQUNMLEtBQUssRUFDTCxVQUFVLEVBRVYsYUFBYSxFQUNiLElBQUksRUFDSixFQUFFLEVBQ0YsVUFBVSxFQUNWLE1BQU0sRUFDTixHQUFHLEVBQ0gsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxFQUNULEtBQUssRUFDTCxvQkFBb0IsR0FDckIsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQ0wsV0FBVyxFQUNYLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDdkIsMkJBQTJCLEVBQzNCLElBQUksR0FDTCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xFLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsaUJBQWlCLEdBSWxCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDeEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFNUUsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLGlCQUFpQixHQUNsQixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBWUwsY0FBYyxFQVdkLFVBQVUsR0FNWCxNQUFNLFNBQVMsQ0FBQzs7Ozs7O0FBRWpCLDZHQUE2RztBQUU3RyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDO0FBQ2xDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLDBCQUEwQixDQUFDO0FBRTVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQztBQUV6QixNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFHdEIsTUFBTSxPQUFPLGFBQWE7SUFDeEIsWUFDbUIsSUFBZ0IsRUFDaEIsY0FBcUMsRUFDckMsY0FBcUMsRUFDckMsYUFBbUMsRUFDSCxlQUF1QjtRQUp2RCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQUNyQyxtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFDckMsa0JBQWEsR0FBYixhQUFhLENBQXNCO1FBQ0gsb0JBQWUsR0FBZixlQUFlLENBQVE7UUFpZTFFLFlBQVk7UUFDSyxnQkFBVyxHQUFHLENBQzdCLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFvQixFQUN2RSxNQUFnQixFQUNoQixFQUFFO1lBQ0YsTUFBTSxPQUFPLEdBQXNDLEVBQUUsQ0FBQztZQUN0RCxJQUFJLE9BQU8sYUFBYSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUN2QyxNQUFNLENBQUMsTUFBTSxDQUNYLE9BQU8sRUFDUCxhQUFhLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQywyQkFBMkIsQ0FDdEUsQ0FBQztZQUNKLENBQUM7WUFDRCxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO29CQUNyQixDQUFDLGlCQUFpQixDQUFDLEVBQUUsTUFBTTtpQkFDNUIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNEOztlQUVHO1lBQ0gsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDakIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDbkUsQ0FBQztZQUNELE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUMsQ0FBQztJQXhmQyxDQUFDO0lBRUo7O09BRUc7SUFDSCxpQkFBaUIsQ0FDZixNQUErQjtRQUUvQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUksTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CLENBQ2pCLE1BQW9DO1FBRXBDLE9BQU8sdUJBQXVCLElBQUksTUFBTSxDQUFDLGdCQUFnQjtZQUN2RCxDQUFDLENBQUMsb0JBQW9CLENBQ2xCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsRUFDOUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUNsQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2RCxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBSSxNQUFNLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCx5QkFBeUIsQ0FDdkIsV0FBbUIsRUFDbkIsTUFBd0M7UUFFeEMsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUksV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRDs7T0FFRztJQUNILHFCQUFxQixDQUNuQixNQUFtQztRQUVuQyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBSSxNQUFNLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxrQkFBa0IsQ0FDaEIsTUFBdUM7UUFFdkMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFJLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQixDQUNmLE1BQXVDO1FBRXZDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBSSxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUIsQ0FDakIsTUFBdUM7UUFFdkMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFJLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7T0FFRztJQUNILG9CQUFvQixDQUdsQixNQUF3QztRQUN4QyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQU8sTUFBTSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVyxDQUErQixNQUErQjtRQUN2RSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUksTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYSxDQUNYLE1BQW9DO1FBRXBDLE9BQU8sdUJBQXVCLElBQUksTUFBTSxDQUFDLGdCQUFnQjtZQUN2RCxDQUFDLENBQUMsb0JBQW9CLENBQ2xCLElBQUksQ0FBQyxZQUFZLENBQUksTUFBTSxDQUFDLEVBQzVCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FDbEMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkQsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhO2lCQUNmLFNBQVMsQ0FBQztnQkFDVCxHQUFHLE1BQU07Z0JBQ1QsTUFBTSxFQUFFLGlCQUFpQixDQUFDLEdBQUc7YUFDOUIsQ0FBQztpQkFDRCxJQUFJLENBQ0gsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQ2xCLE9BQU87Z0JBQ0wsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUksTUFBTSxDQUFDO2dCQUNoQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksaUJBQWlCLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUM3RCxDQUNGLENBQUM7SUFDVixDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUIsQ0FDakIsV0FBbUIsRUFDbkIsTUFBd0M7UUFFeEMsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUksV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRDs7T0FFRztJQUNILGVBQWUsQ0FDYixNQUFtQztRQUVuQyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBSSxNQUFNLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZLENBQ1YsTUFBdUM7UUFFdkMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFJLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVcsQ0FDVCxNQUF1QztRQUV2QyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUksTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYSxDQUNYLE1BQXVDO1FBRXZDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBSSxNQUFNLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjLENBR1osTUFBd0M7UUFDeEMsSUFBSSxNQUFNLElBQUksTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JDLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUMsQ0FBQztRQUMzRSxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFPLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7T0FFRztJQUNILG1CQUFtQixDQUdqQixNQUEwQztRQUMxQyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBSSxNQUFNLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsWUFBWTtJQUNKLHNCQUFzQixDQUFDLE1BQTRCO1FBQ3pELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUNsRCxZQUFZLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxVQUFVO1lBQ3pDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVTtZQUNuQixDQUFDLENBQUMsTUFBTSxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUNwQyxDQUFDO1FBQ0YsSUFBSSxVQUFVLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM1QyxPQUFPO2dCQUNMLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTtnQkFDckIsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQzthQUNqRCxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxZQUFZO0lBQ0osV0FBVyxDQUFDLE1BQTRCLEVBQUUsVUFBVSxHQUFHLEtBQUs7UUFDbEUsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztZQUNwQyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUM7WUFDdEMsT0FBTyxFQUFFLFNBQVMsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLE9BQU87WUFDOUMsU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQ3JDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7U0FDaEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVk7SUFDSixhQUFhLENBQUMsTUFBNEI7UUFDaEQsT0FBTyxXQUFXLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxTQUFTO1lBQzlDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUztZQUNsQixDQUFDLENBQUMsWUFBWSxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsVUFBVTtnQkFDM0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlO2dCQUN0QixDQUFDLENBQUMsVUFBVSxJQUFJLE1BQU0sSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxZQUFZO0lBQ0osUUFBUSxDQUFDLE1BQTRCO1FBQzNDLE9BQU8sTUFBTSxJQUFJLE1BQU07WUFDckIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJO1lBQ2IsQ0FBQyxDQUFDLFVBQVUsSUFBSSxNQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGtCQUFrQixDQUFtQyxJQUFPO1FBQ2xFLE1BQU0sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBRW5DLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNqQyxPQUFPO2dCQUNMLEdBQUcsSUFBSTtnQkFDUCxLQUFLLEVBQUUsRUFBRTthQUNWLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEMsT0FBTztZQUNMLEdBQUcsSUFBSTtZQUNQLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDeEIsdUJBQXVCO2dCQUN2QixJQUFJO2dCQUNKLFVBQVU7Z0JBQ1YsR0FBRyxJQUFJO2FBQ1IsQ0FBQyxDQUFDO1NBQ0osQ0FBQztJQUNKLENBQUM7SUFFRCxZQUFZO0lBQ0osWUFBWSxDQUNsQixNQUE2QjtRQUU3QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDaEQsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO1NBQ2xDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZO0lBQ0osY0FBYyxDQUNwQixNQUFrQztRQUVsQyxNQUFNLFlBQVksR0FBRztZQUNuQixHQUFHLE1BQU07WUFDVCxXQUFXLEVBQUUsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtTQUN6RSxDQUFDO1FBQ0YsTUFBTSxZQUFZLEdBQUc7WUFDbkIsS0FBSyxFQUFFLFdBQVc7WUFDbEIsS0FBSyxFQUFFLFdBQVc7U0FDbkIsQ0FBQztRQUNGLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUMvQixNQUFNLENBQUMsS0FBSyxLQUFLLElBQUk7WUFDbkIsQ0FBQyxDQUFDO2dCQUNFLEdBQUcsWUFBWTtnQkFDZixLQUFLLEVBQUUsUUFBUTthQUNoQjtZQUNILENBQUMsQ0FBQztnQkFDRSxHQUFHLFlBQVk7Z0JBQ2YsR0FBRyxNQUFNLENBQUMsS0FBSzthQUNoQixDQUFDO1FBQ1IsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUksWUFBWSxDQUFDLENBQUMsSUFBSSxDQUNoRCxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDZixJQUFJLENBQUMsd0JBQXdCLENBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUM3QixZQUFZLENBQ2IsQ0FBQyxJQUFJLENBQ0osTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUN2QixHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDakUsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQ2pDLENBQ0YsRUFDRCxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDZixJQUFJLENBQUMsSUFBSSxDQUNQLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNkLElBQUksR0FBRyxLQUFLLFVBQVUsQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDM0QsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwRCxDQUFDO1lBQ0QsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQ0gsQ0FDRixDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsWUFBWTtJQUNKLHdCQUF3QixDQUM5QixXQUFtQixFQUNuQixNQUFzQztRQUV0QyxJQUFJLGVBQWUsR0FBRyxXQUFXLENBQUM7UUFDbEMsSUFBSSxHQUFpQixDQUFDO1FBRXRCLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxDQUFzQixRQUFRLENBQUMsRUFBRTtZQUM1RCxNQUFNLFdBQVcsR0FBRyxHQUFHLEVBQUU7Z0JBQ3ZCLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUN2QixHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3BCLENBQUM7WUFDSCxDQUFDLENBQUM7WUFFRixNQUFNLEtBQUssR0FBRyxHQUFHLEVBQUU7Z0JBQ2pCLFdBQVcsRUFBRSxDQUFDO2dCQUNkLEdBQUcsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUk7b0JBQ2pDLEdBQUcsTUFBTTtvQkFDVCxXQUFXLEVBQUUsZUFBZSxDQUFDO3dCQUMzQixHQUFHLE1BQU0sQ0FBQyxXQUFXO3dCQUNyQixLQUFLLEVBQUUsSUFBSTt3QkFDWCxtQkFBbUIsRUFBRSxJQUFJO3dCQUN6QixjQUFjLEVBQUUsTUFBTSxDQUFDLGVBQWUsQ0FBQzt3QkFDdkMsZUFBZTtxQkFDaEIsQ0FBQztpQkFDSCxDQUFDLENBQUMsU0FBUyxDQUFDO29CQUNYLElBQUksQ0FBQyxHQUFHO3dCQUNOLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7NEJBQ2xDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDOzRCQUN6QixPQUFPO3dCQUNULENBQUM7d0JBRUQsZUFBZSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQzt3QkFDdEQsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDckIsQ0FBQztvQkFDRCxLQUFLLENBQUMsR0FBRzt3QkFDUCxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUN0QixDQUFDO29CQUNELFFBQVEsRUFBRSxLQUFLO2lCQUNoQixDQUFDLENBQUM7WUFDTCxDQUFDLENBQUM7WUFFRixLQUFLLEVBQUUsQ0FBQztZQUNSLE9BQU8sV0FBVyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUFNLENBQUMsU0FBUztZQUNyQixDQUFDLENBQUMsTUFBTTtZQUNSLENBQUMsQ0FBQyxhQUFhLENBQUM7Z0JBQ1osSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsRUFBRTtnQkFDdkMsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDO2FBQzNCLENBQUMsQ0FBQyxJQUFJLENBQ0wsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUM5QixPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FDbkMsQ0FDRixDQUFDO0lBQ1IsQ0FBQztJQUVELFlBQVk7SUFDSixvQkFBb0IsQ0FDMUIsTUFBaUM7UUFFakMsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNuQyxZQUFZLEVBQUUsTUFBTTtZQUNwQixPQUFPLEVBQUUsUUFBUTtZQUNqQixjQUFjLEVBQUUsSUFBSTtZQUNwQixPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7WUFDakMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxXQUFXO1NBQzNCLENBQUM7YUFDRCxJQUFJLENBQ0gsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsRUFDeEQsTUFBTSxDQUNKLENBQUMsRUFBRSxXQUFXLEVBQTZCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQ3RFLEVBQ0QsU0FBUyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQzVCLElBQUksQ0FDRixpQkFBaUIsQ0FDZixlQUFlLENBQXNCLFdBQVcsQ0FBQyxDQUNsRCxDQUNGLENBQ0YsQ0FDRixDQUFDO0lBQ04sQ0FBQztJQUVELFlBQVk7SUFDSixnQkFBZ0IsQ0FDdEIsTUFBaUM7UUFFakMsZ0RBQWdEO1FBQ2hELHVFQUF1RTtRQUN2RSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN6QyxNQUFNLFdBQVcsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzlDLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3hCLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxHQUFHLFdBQVcsR0FBRyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7WUFDckUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDdkIsV0FBVyxDQUFDLEtBQUssR0FBRyxlQUFlLENBQUM7WUFDdEMsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsR0FBRyxDQUE0QixHQUFHLEVBQUU7WUFDbkMsTUFBTSxFQUFFLFdBQVc7WUFDbkIsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztTQUN4QyxDQUFDO2FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxZQUFZO0lBQ0osYUFBYSxDQUNuQixNQUFpQztRQUVqQyxJQUNFLENBQUMsV0FBVyxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDO1lBQzNDLENBQUMsWUFBWSxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQzdDLENBQUM7WUFDRCxNQUFNLGlCQUFpQixHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDdEUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3ZCLEdBQUcsQ0FDRCxNQUFNLENBQUMsUUFBUSxFQUNmLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxFQUNyQixNQUFNLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQ3pDLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUN4RSxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7U0FDbEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVk7SUFDSixZQUFZLENBQ2xCLE1BQWlDO1FBRWpDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFO1lBQ2pFLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztTQUNsQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWTtJQUNKLGNBQWMsQ0FDcEIsTUFBaUM7UUFFakMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDL0QsT0FBTyxFQUFFO2dCQUNQLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7Z0JBQzNCLGNBQWMsRUFBRSxNQUFNLENBQUMsU0FBUyxJQUFJLGNBQWMsQ0FBQyxLQUFLO2FBQ3pEO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVk7SUFDSixlQUFlLENBR3JCLE1BQWtDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUksUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDOUQsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO1lBQ2pDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtTQUNsQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWTtJQUNKLG9CQUFvQixDQUMxQixNQUEwQztRQUUxQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFJLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzlELE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztZQUNqQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7WUFDakIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxXQUFXO1NBQzNCLENBQUMsQ0FBQztJQUNMLENBQUM7SUE0Qk8sb0JBQW9CLENBQUMsRUFDM0IsU0FBUyxFQUNULGdCQUFnQixHQUNEO1FBQ2YsT0FBTyxTQUFTO1lBQ2QsQ0FBQyxDQUFDLGdCQUFnQjtZQUNsQixDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWM7aUJBQ2hCLGlCQUFpQixFQUFFO2lCQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQzs4RUExZ0JVLGFBQWEsOEpBTWQsc0JBQXNCO3VFQU5yQixhQUFhLFdBQWIsYUFBYSxtQkFEQSxNQUFNOztpRkFDbkIsYUFBYTtjQUR6QixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztzQkFPN0IsTUFBTTt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICogQG1vZHVsZSBhcGlcbiAqL1xuXG5pbXBvcnQge1xuICBIdHRwQ2xpZW50LFxuICBIdHRwRG93bmxvYWRQcm9ncmVzc0V2ZW50LFxuICBIdHRwRXJyb3JSZXNwb25zZSxcbiAgSHR0cEV2ZW50VHlwZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXQsIHNldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge1xuICBORVZFUixcbiAgT2JzZXJ2YWJsZSxcbiAgU3Vic2NyaXB0aW9uLFxuICBjb21iaW5lTGF0ZXN0LFxuICBmcm9tLFxuICBvZixcbiAgdGhyb3dFcnJvcixcbiAgZmlsdGVyLFxuICBtYXAsXG4gIHJldHJ5V2hlbixcbiAgc3RhcnRXaXRoLFxuICBzd2l0Y2hNYXAsXG4gIGNvbmNhdE1hcCxcbiAgZGVsYXksXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgQVBJX0dBVEVXQVksXG4gIERPV05HUkFERV9XQVRDSF9FTkFCTEVELFxuICBOT1RJRllfT05fRVJST1JfSEVBREVSUyxcbiAgTk9UX05PVElGWV9PTl9FUlJPUl9IRUFERVJTLFxuICBUUlVFLFxufSBmcm9tICcuLi9jb3JlL2NvbnN0YW50cy9jb25zdGFudHMnO1xuaW1wb3J0IHsgVE9LRU5fR0xPQkFMX05BTUVTUEFDRSB9IGZyb20gJy4uL2NvcmUvY29uc3RhbnRzL3Rva2Vucyc7XG5pbXBvcnQge1xuICBDUllQVE9fSEVBREVSX0tFWSxcbiAgSzhzUmVzb3VyY2VBY3Rpb24sXG4gIEt1YmVybmV0ZXNSZXNvdXJjZSxcbiAgS3ViZXJuZXRlc1Jlc291cmNlTGlzdCxcbiAgU3RhdHVzLFxufSBmcm9tICcuLi9jb3JlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgTUVUQURBVEEsIE5BTUUsIE5BTUVTUEFDRSB9IGZyb20gJy4uL2NvcmUvc2VydmljZXMvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBjcmVhdGVQb2xsT2JzZXJ2YWJsZSB9IGZyb20gJy4uL2NvcmUvdXRpbHMvb2JzZXJ2YWJsZSc7XG5pbXBvcnQgeyBpc0VxdWFsLCBwYXJzZUpTT05TdHJlYW0gfSBmcm9tICcuLi9jb3JlL3V0aWxzL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgbm9ybWFsaXplUGFyYW1zIH0gZnJvbSAnLi4vazhzLXJlc291cmNlLWxpc3QvdXRpbHMnO1xuaW1wb3J0IHsgSzhzUGVybWlzc2lvblNlcnZpY2UgfSBmcm9tICcuLi9wZXJtaXNzaW9uL2s4cy1wZXJtaXNzaW9uLnNlcnZpY2UnO1xuXG5pbXBvcnQge1xuICBnZXRBcGlQcmVmaXhQYXJ0cyxcbiAgZ2V0TWV0YWRhdGFIZWFkZXJzLFxuICBpc1Jlc291cmNlRXZlbnQsXG4gIHJlZHVjZVdhdGNoRXZlbnRzLFxufSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgSzhzQXBpUmVzb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi9rOHMtYXBpLXJlc291cmNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGFnZVZpc2liaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi9wYWdlLXZpc2liaWxpdHkuc2VydmljZSc7XG5pbXBvcnQge1xuICBBcGlCYXNlUGFyYW1zLFxuICBFcmVidXNSZXNvdXJjZURlbGV0ZVBhcmFtcyxcbiAgRXJlYnVzUmVzb3VyY2VMaXN0UGFyYW1zLFxuICBFcmVidXNSZXNvdXJjZVBhcmFtcyxcbiAgRXJlYnVzUmVzb3VyY2VQYXRjaFBhcmFtcyxcbiAgRXJlYnVzUmVzb3VyY2VXcml0ZVBhcmFtcyxcbiAgR2xvYmFsUmVzb3VyY2VEZWxldGVQYXJhbXMsXG4gIEdsb2JhbFJlc291cmNlTGlzdFBhcmFtcyxcbiAgR2xvYmFsUmVzb3VyY2VQYXJhbXMsXG4gIEdsb2JhbFJlc291cmNlUGF0Y2hQYXJhbXMsXG4gIEdsb2JhbFJlc291cmNlV3JpdGVQYXJhbXMsXG4gIFBhdGNoT3BlcmF0aW9uLFxuICBSZXNvdXJjZUFwaVBhcmFtcyxcbiAgUmVzb3VyY2VEZWxldGVQYXJhbXMsXG4gIFJlc291cmNlTGlzdFJlYWRQYXJhbXMsXG4gIFJlc291cmNlUGF0Y2hQYXJhbXMsXG4gIFJlc291cmNlUmVhZFBhcmFtcyxcbiAgUmVzb3VyY2VXcml0ZVBhcmFtcyxcbiAgV2F0Y2hBUElSZXNwb25zZSxcbiAgV2F0Y2hBcGlQYXJhbXMsXG4gIFdhdGNoRXJlYnVzUmVzb3VyY2VMaXN0UGFyYW1zLFxuICBXYXRjaEVyZWJ1c1Jlc291cmNlUGFyYW1zLFxuICBXYXRjaEV2ZW50LFxuICBXYXRjaEdsb2JhbFJlc291cmNlTGlzdFBhcmFtcyxcbiAgV2F0Y2hHbG9iYWxSZXNvdXJjZVBhcmFtcyxcbiAgV2F0Y2hSZXNvdXJjZUxpc3RSZWFkUGFyYW1zLFxuICBXYXRjaFJlc291cmNlUmVhZFBhcmFtcyxcbiAgRXJlYnVzUmVzb3VyY2VCYXRjaERlbGV0ZVBhcmFtcyxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIOWQjeensOWJjee8gCBFcmVidXMg5Y+C6ICDIGh0dHA6Ly9jb25mbHVlbmNlLmFsYXVkYS5jbi9wYWdlcy92aWV3cGFnZS5hY3Rpb24/cGFnZUlkPTQ0NjYzNDg0IOaMhyAva3ViZXJuZXRlcy8g5byA5aS055qEIGFwaSDnu4Tku7ZcblxuZXhwb3J0IGNvbnN0IFRJTUVPVVRfU0VDT05EUyA9IDU5O1xuZXhwb3J0IGNvbnN0IFNFQVJDSF9VUkxfUFJFRklYID0gJy9hY3AvdjEvcmVzb3VyY2VzL3NlYXJjaCc7XG5cbmNvbnN0IFJFVFJZX0RFTEFZID0gNTAwMDtcblxuY29uc3QgUkVUUllfQ09VTlQgPSAzO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEs4c0FwaVNlcnZpY2U8UiBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrOHNBcGlSZXNvdXJjZTogSzhzQXBpUmVzb3VyY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFnZVZpc2liaWxpdHk6IFBhZ2VWaXNpYmlsaXR5U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGs4c1Blcm1pc3Npb246IEs4c1Blcm1pc3Npb25TZXJ2aWNlLFxuICAgIEBJbmplY3QoVE9LRU5fR0xPQkFMX05BTUVTUEFDRSkgcHJpdmF0ZSByZWFkb25seSBnbG9iYWxOYW1lc3BhY2U6IHN0cmluZyxcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiDojrflj5YgR2xvYmFsIOmbhue+pOWNleS4qui1hOa6kOWvueixoVxuICAgKi9cbiAgZ2V0R2xvYmFsUmVzb3VyY2U8VCBleHRlbmRzIEt1YmVybmV0ZXNSZXNvdXJjZT4oXG4gICAgcGFyYW1zOiBHbG9iYWxSZXNvdXJjZVBhcmFtczxSPixcbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldFJlc291cmNlPFQ+KHBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICog55uR5ZCsIEdsb2JhbCDpm4bnvqTljZXkuKrotYTmupDlr7nosaFcbiAgICovXG4gIHdhdGNoR2xvYmFsUmVzb3VyY2U8VCBleHRlbmRzIEt1YmVybmV0ZXNSZXNvdXJjZT4oXG4gICAgcGFyYW1zOiBXYXRjaEdsb2JhbFJlc291cmNlUGFyYW1zPFI+LFxuICApIHtcbiAgICByZXR1cm4gRE9XTkdSQURFX1dBVENIX0VOQUJMRUQgJiYgcGFyYW1zLmRvd25ncmFkZVBvbGxpbmdcbiAgICAgID8gY3JlYXRlUG9sbE9ic2VydmFibGU8VD4oXG4gICAgICAgICAgdGhpcy5nZXRHbG9iYWxSZXNvdXJjZShwYXJhbXMpLFxuICAgICAgICAgIHRoaXMuX2dldERvd25ncmFkZVBvbGxpbmcocGFyYW1zKSxcbiAgICAgICAgKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiBpc0VxdWFsKGEsIGIpKSlcbiAgICAgIDogdGhpcy5fd2F0Y2hSZXNvdXJjZTxUPihwYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIOebkeWQrCBHbG9iYWwg6ZuG576k6LWE5rqQ5YiX6KGo5Y+Y5YyWXG4gICAqL1xuICB3YXRjaEdsb2JhbFJlc291cmNlQ2hhbmdlPFQgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2U+KFxuICAgIHNlZWRWZXJzaW9uOiBzdHJpbmcsXG4gICAgcGFyYW1zOiBXYXRjaEdsb2JhbFJlc291cmNlTGlzdFBhcmFtczxSPixcbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMuX2tlZXBXYXRjaFJlc291cmNlQ2hhbmdlPFQ+KHNlZWRWZXJzaW9uLCBwYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIOiOt+WPliBHbG9iYWwg6ZuG576k6LWE5rqQ5a+56LGh5YiX6KGo77yM5YyF5ZCr5YiG6aG15L+h5oGvXG4gICAqL1xuICBnZXRHbG9iYWxSZXNvdXJjZUxpc3Q8VCBleHRlbmRzIEt1YmVybmV0ZXNSZXNvdXJjZT4oXG4gICAgcGFyYW1zOiBHbG9iYWxSZXNvdXJjZUxpc3RQYXJhbXM8Uj4sXG4gICkge1xuICAgIHJldHVybiB0aGlzLl9nZXRSZXNvdXJjZUxpc3Q8VD4ocGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDliJvlu7ogR2xvYmFsIOmbhue+pOi1hOa6kFxuICAgKi9cbiAgcG9zdEdsb2JhbFJlc291cmNlPFQgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2U+KFxuICAgIHBhcmFtczogR2xvYmFsUmVzb3VyY2VXcml0ZVBhcmFtczxULCBSPixcbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Bvc3RSZXNvdXJjZTxUPihwYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIOWujOaVtOimhuebluabtOaWsCBHbG9iYWwg6ZuG576k5Y2V5Liq6LWE5rqQ5a+56LGhXG4gICAqL1xuICBwdXRHbG9iYWxSZXNvdXJjZTxUIGV4dGVuZHMgS3ViZXJuZXRlc1Jlc291cmNlPihcbiAgICBwYXJhbXM6IEdsb2JhbFJlc291cmNlV3JpdGVQYXJhbXM8VCwgUj4sXG4gICkge1xuICAgIHJldHVybiB0aGlzLl9wdXRSZXNvdXJjZTxUPihwYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIOWinumHj+abtOaWsCBHbG9iYWwg6ZuG576k5Y2V5Liq6LWE5rqQ5a+56LGh55qE6YOo5YiG5bGe5oCnXG4gICAqL1xuICBwYXRjaEdsb2JhbFJlc291cmNlPFQgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2U+KFxuICAgIHBhcmFtczogR2xvYmFsUmVzb3VyY2VQYXRjaFBhcmFtczxULCBSPixcbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhdGNoUmVzb3VyY2U8VD4ocGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDliKDpmaQgR2xvYmFsIOmbhue+pOWNleS4qui1hOa6kFxuICAgKi9cbiAgZGVsZXRlR2xvYmFsUmVzb3VyY2U8XG4gICAgUyBleHRlbmRzIEt1YmVybmV0ZXNSZXNvdXJjZSA9IFN0YXR1cyxcbiAgICBUIGV4dGVuZHMgS3ViZXJuZXRlc1Jlc291cmNlID0gUyBleHRlbmRzIFN0YXR1cyA/IEt1YmVybmV0ZXNSZXNvdXJjZSA6IFMsXG4gID4ocGFyYW1zOiBHbG9iYWxSZXNvdXJjZURlbGV0ZVBhcmFtczxULCBSPikge1xuICAgIHJldHVybiB0aGlzLl9kZWxldGVSZXNvdXJjZTxTLCBUPihwYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIOiOt+WPluS4muWKoembhue+pOWNleS4qui1hOa6kOWvueixoVxuICAgKi9cbiAgZ2V0UmVzb3VyY2U8VCBleHRlbmRzIEt1YmVybmV0ZXNSZXNvdXJjZT4ocGFyYW1zOiBFcmVidXNSZXNvdXJjZVBhcmFtczxSPikge1xuICAgIHJldHVybiB0aGlzLl9nZXRSZXNvdXJjZTxUPihwYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIOebkeWQrOS4muWKoembhue+pOWNleS4qui1hOa6kOWvueixoVxuICAgKi9cbiAgd2F0Y2hSZXNvdXJjZTxUIGV4dGVuZHMgS3ViZXJuZXRlc1Jlc291cmNlPihcbiAgICBwYXJhbXM6IFdhdGNoRXJlYnVzUmVzb3VyY2VQYXJhbXM8Uj4sXG4gICkge1xuICAgIHJldHVybiBET1dOR1JBREVfV0FUQ0hfRU5BQkxFRCAmJiBwYXJhbXMuZG93bmdyYWRlUG9sbGluZ1xuICAgICAgPyBjcmVhdGVQb2xsT2JzZXJ2YWJsZTxUPihcbiAgICAgICAgICB0aGlzLl9nZXRSZXNvdXJjZTxUPihwYXJhbXMpLFxuICAgICAgICAgIHRoaXMuX2dldERvd25ncmFkZVBvbGxpbmcocGFyYW1zKSxcbiAgICAgICAgKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiBpc0VxdWFsKGEsIGIpKSlcbiAgICAgIDogdGhpcy5rOHNQZXJtaXNzaW9uXG4gICAgICAgICAgLmlzQWxsb3dlZCh7XG4gICAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgICBhY3Rpb246IEs4c1Jlc291cmNlQWN0aW9uLkdFVCxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKGFsbG93ZWQgPT5cbiAgICAgICAgICAgICAgYWxsb3dlZFxuICAgICAgICAgICAgICAgID8gdGhpcy5fd2F0Y2hSZXNvdXJjZTxUPihwYXJhbXMpXG4gICAgICAgICAgICAgICAgOiB0aHJvd0Vycm9yKCgpID0+IG5ldyBIdHRwRXJyb3JSZXNwb25zZSh7IHN0YXR1czogNDAzIH0pKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDnm5HlkKzotYTmupDliJfooajlj5jljJZcbiAgICovXG4gIHdhdGNoUmVzb3VyY2VDaGFuZ2U8VCBleHRlbmRzIEt1YmVybmV0ZXNSZXNvdXJjZT4oXG4gICAgc2VlZFZlcnNpb246IHN0cmluZyxcbiAgICBwYXJhbXM6IFdhdGNoRXJlYnVzUmVzb3VyY2VMaXN0UGFyYW1zPFI+LFxuICApIHtcbiAgICByZXR1cm4gdGhpcy5fa2VlcFdhdGNoUmVzb3VyY2VDaGFuZ2U8VD4oc2VlZFZlcnNpb24sIHBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICog6I635Y+W5Lia5Yqh6ZuG576k6LWE5rqQ5a+56LGh5YiX6KGo77yM5YyF5ZCr5YiG6aG15L+h5oGvXG4gICAqL1xuICBnZXRSZXNvdXJjZUxpc3Q8VCBleHRlbmRzIEt1YmVybmV0ZXNSZXNvdXJjZT4oXG4gICAgcGFyYW1zOiBFcmVidXNSZXNvdXJjZUxpc3RQYXJhbXM8Uj4sXG4gICkge1xuICAgIHJldHVybiB0aGlzLl9nZXRSZXNvdXJjZUxpc3Q8VD4ocGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDliJvlu7rkuJrliqHpm4bnvqTotYTmupBcbiAgICovXG4gIHBvc3RSZXNvdXJjZTxUIGV4dGVuZHMgS3ViZXJuZXRlc1Jlc291cmNlPihcbiAgICBwYXJhbXM6IEVyZWJ1c1Jlc291cmNlV3JpdGVQYXJhbXM8VCwgUj4sXG4gICkge1xuICAgIHJldHVybiB0aGlzLl9wb3N0UmVzb3VyY2U8VD4ocGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDlrozmlbTopobnm5bmm7TmlrDkuJrliqHpm4bnvqTljZXkuKrotYTmupDlr7nosaFcbiAgICovXG4gIHB1dFJlc291cmNlPFQgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2U+KFxuICAgIHBhcmFtczogRXJlYnVzUmVzb3VyY2VXcml0ZVBhcmFtczxULCBSPixcbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMuX3B1dFJlc291cmNlPFQ+KHBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICog5aKe6YeP5pu05paw5Lia5Yqh6ZuG576k5Y2V5Liq6LWE5rqQ5a+56LGh55qE6YOo5YiG5bGe5oCnXG4gICAqL1xuICBwYXRjaFJlc291cmNlPFQgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2U+KFxuICAgIHBhcmFtczogRXJlYnVzUmVzb3VyY2VQYXRjaFBhcmFtczxULCBSPixcbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhdGNoUmVzb3VyY2U8VD4ocGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDliKDpmaTkuJrliqHpm4bnvqTljZXkuKrotYTmupBcbiAgICovXG4gIGRlbGV0ZVJlc291cmNlPFxuICAgIFMgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2UgPSBTdGF0dXMsXG4gICAgVCBleHRlbmRzIEt1YmVybmV0ZXNSZXNvdXJjZSA9IFMgZXh0ZW5kcyBTdGF0dXMgPyBLdWJlcm5ldGVzUmVzb3VyY2UgOiBTLFxuICA+KHBhcmFtczogRXJlYnVzUmVzb3VyY2VEZWxldGVQYXJhbXM8VCwgUj4pIHtcbiAgICBpZiAoJ25hbWUnIGluIHBhcmFtcyAmJiAhcGFyYW1zLm5hbWUpIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignZGVsZXRlIHJlc291cmNlIG5lZWQgcmVzb3VyY2UgbmFtZScpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2RlbGV0ZVJlc291cmNlPFMsIFQ+KHBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICog5om56YeP5Yig6Zmk5Lia5Yqh6ZuG576k55qE6LWE5rqQXG4gICAqL1xuICBiYXRjaERlbGV0ZVJlc291cmNlPFxuICAgIFMgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2UgPSBTdGF0dXMsXG4gICAgVCBleHRlbmRzIEt1YmVybmV0ZXNSZXNvdXJjZSA9IFMgZXh0ZW5kcyBTdGF0dXMgPyBLdWJlcm5ldGVzUmVzb3VyY2UgOiBTLFxuICA+KHBhcmFtczogRXJlYnVzUmVzb3VyY2VCYXRjaERlbGV0ZVBhcmFtczxSPikge1xuICAgIHJldHVybiB0aGlzLl9iYXRjaERlbGV0ZVJlc291cmNlPFQ+KHBhcmFtcyk7XG4gIH1cblxuICAvLyBAaW50ZXJuYWxcbiAgcHJpdmF0ZSBfZ2V0UmVzb3VyY2VEZWZpbml0aW9uKHBhcmFtczogUmVzb3VyY2VBcGlQYXJhbXM8Uj4pIHtcbiAgICBjb25zdCBkZWZpbml0aW9uID0gdGhpcy5rOHNBcGlSZXNvdXJjZS5nZXREZWZpbml0aW9uKFxuICAgICAgJ2RlZmluaXRpb24nIGluIHBhcmFtcyAmJiBwYXJhbXMuZGVmaW5pdGlvblxuICAgICAgICA/IHBhcmFtcy5kZWZpbml0aW9uXG4gICAgICAgIDogJ3R5cGUnIGluIHBhcmFtcyAmJiBwYXJhbXMudHlwZSxcbiAgICApO1xuICAgIGlmICgncmVzb3VyY2UnIGluIHBhcmFtcyAmJiBwYXJhbXMucmVzb3VyY2UpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IGRlZmluaXRpb24udHlwZSxcbiAgICAgICAgLi4uZ2V0QXBpUHJlZml4UGFydHMocGFyYW1zLnJlc291cmNlLmFwaVZlcnNpb24pLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGRlZmluaXRpb247XG4gIH1cblxuICAvLyBAaW50ZXJuYWxcbiAgcHJpdmF0ZSBfZ2V0QXBpUGF0aChwYXJhbXM6IFJlc291cmNlQXBpUGFyYW1zPFI+LCBpZ25vcmVOYW1lID0gZmFsc2UpIHtcbiAgICByZXR1cm4gdGhpcy5rOHNBcGlSZXNvdXJjZS5nZXRBcGlQYXRoKHtcbiAgICAgIC4uLnRoaXMuX2dldFJlc291cmNlRGVmaW5pdGlvbihwYXJhbXMpLFxuICAgICAgY2x1c3RlcjogJ2NsdXN0ZXInIGluIHBhcmFtcyAmJiBwYXJhbXMuY2x1c3RlcixcbiAgICAgIG5hbWVzcGFjZTogdGhpcy5fZ2V0TmFtZXNwYWNlKHBhcmFtcyksXG4gICAgICBuYW1lOiBpZ25vcmVOYW1lID8gbnVsbCA6IHRoaXMuX2dldE5hbWUocGFyYW1zKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEBpbnRlcm5hbFxuICBwcml2YXRlIF9nZXROYW1lc3BhY2UocGFyYW1zOiBSZXNvdXJjZUFwaVBhcmFtczxSPikge1xuICAgIHJldHVybiAnbmFtZXNwYWNlJyBpbiBwYXJhbXMgJiYgcGFyYW1zLm5hbWVzcGFjZVxuICAgICAgPyBwYXJhbXMubmFtZXNwYWNlXG4gICAgICA6ICduYW1lc3BhY2VkJyBpbiBwYXJhbXMgJiYgcGFyYW1zLm5hbWVzcGFjZWRcbiAgICAgICAgPyB0aGlzLmdsb2JhbE5hbWVzcGFjZVxuICAgICAgICA6ICdyZXNvdXJjZScgaW4gcGFyYW1zICYmIGdldChwYXJhbXMucmVzb3VyY2UsIFtNRVRBREFUQSwgTkFNRVNQQUNFXSk7XG4gIH1cblxuICAvLyBAaW50ZXJuYWxcbiAgcHJpdmF0ZSBfZ2V0TmFtZShwYXJhbXM6IFJlc291cmNlQXBpUGFyYW1zPFI+KSB7XG4gICAgcmV0dXJuICduYW1lJyBpbiBwYXJhbXNcbiAgICAgID8gcGFyYW1zLm5hbWVcbiAgICAgIDogJ3Jlc291cmNlJyBpbiBwYXJhbXMgJiYgZ2V0KHBhcmFtcy5yZXNvdXJjZSwgW01FVEFEQVRBLCBOQU1FXSk7XG4gIH1cblxuICAvKipcbiAgICogazhzIGxpc3QgYXBpIOi/lOWbnueahOe7k+aenOmHjO+8jGl0ZW1zIOe8uuWksSBraW5kIOWSjCBhcGlWZXJzaW9uIOWtl+autVxuICAgKiDop4TliJnlpoIgU2VydmljZSDnsbvlnovlr7nlupQga2luZDogU2VydmljZUxpc3TvvIzljrvmjonmnIDlkI7lm5vkuKrlrZfnrKblj6/lvpfliLDotYTmupDnmoQga2luZFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgX2dldE5vcm1hbGl6ZWRMaXN0PFQgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2VMaXN0PihsaXN0OiBUKTogVCB7XG4gICAgY29uc3QgeyBhcGlWZXJzaW9uLCBpdGVtcyB9ID0gbGlzdDtcblxuICAgIGlmICghaXRlbXMgfHwgaXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5saXN0LFxuICAgICAgICBpdGVtczogW10sXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGtpbmQgPSBsaXN0LmtpbmQuc2xpY2UoMCwgLTQpO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5saXN0LFxuICAgICAgaXRlbXM6IGl0ZW1zLm1hcChpdGVtID0+ICh7XG4gICAgICAgIC8vIGtleSDpobrluo/kvJrlvbHlk43ovawgeWFtbCDlkI7nmoTpobrluo9cbiAgICAgICAga2luZCxcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgLi4uaXRlbSxcbiAgICAgIH0pKSxcbiAgICB9O1xuICB9XG5cbiAgLy8gQGludGVybmFsXG4gIHByaXZhdGUgX2dldFJlc291cmNlPFQgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2U+KFxuICAgIHBhcmFtczogUmVzb3VyY2VSZWFkUGFyYW1zPFI+LFxuICApIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxUPih0aGlzLl9nZXRBcGlQYXRoKHBhcmFtcyksIHtcbiAgICAgIGhlYWRlcnM6IHRoaXMuX2dldEhlYWRlcnMocGFyYW1zKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEBpbnRlcm5hbFxuICBwcml2YXRlIF93YXRjaFJlc291cmNlPFQgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2U+KFxuICAgIHBhcmFtczogV2F0Y2hSZXNvdXJjZVJlYWRQYXJhbXM8Uj4sXG4gICkge1xuICAgIGNvbnN0IGRldGFpbFBhcmFtcyA9IHtcbiAgICAgIC4uLnBhcmFtcyxcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7IGZpZWxkU2VsZWN0b3I6ICdtZXRhZGF0YS5uYW1lPScgKyB0aGlzLl9nZXROYW1lKHBhcmFtcykgfSxcbiAgICB9O1xuICAgIGNvbnN0IGRlZmF1bHRSZXRyeSA9IHtcbiAgICAgIGNvdW50OiBSRVRSWV9DT1VOVCxcbiAgICAgIGRlbGF5OiBSRVRSWV9ERUxBWSxcbiAgICB9O1xuICAgIGNvbnN0IHsgY291bnQsIGRlbGF5OiBkZWxheVRpbWUgfSA9XG4gICAgICBwYXJhbXMucmV0cnkgPT09IHRydWVcbiAgICAgICAgPyB7XG4gICAgICAgICAgICAuLi5kZWZhdWx0UmV0cnksXG4gICAgICAgICAgICBjb3VudDogSW5maW5pdHksXG4gICAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIC4uLmRlZmF1bHRSZXRyeSxcbiAgICAgICAgICAgIC4uLnBhcmFtcy5yZXRyeSxcbiAgICAgICAgICB9O1xuICAgIGxldCBzb0ZhciA9IDA7XG4gICAgcmV0dXJuIHRoaXMuX2dldFJlc291cmNlTGlzdDxUPihkZXRhaWxQYXJhbXMpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAobGlzdCA9PlxuICAgICAgICB0aGlzLl9rZWVwV2F0Y2hSZXNvdXJjZUNoYW5nZTxUPihcbiAgICAgICAgICBsaXN0Lm1ldGFkYXRhLnJlc291cmNlVmVyc2lvbixcbiAgICAgICAgICBkZXRhaWxQYXJhbXMsXG4gICAgICAgICkucGlwZShcbiAgICAgICAgICBmaWx0ZXIoaXNSZXNvdXJjZUV2ZW50KSxcbiAgICAgICAgICBtYXAocmVzID0+IChyZXMudHlwZSA9PT0gV2F0Y2hFdmVudC5EZWxldGVkID8gbnVsbCA6IHJlcy5vYmplY3QpKSxcbiAgICAgICAgICBzdGFydFdpdGgobGlzdC5pdGVtc1swXSA/PyBudWxsKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgICByZXRyeVdoZW4oZXJyJCA9PlxuICAgICAgICBlcnIkLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKGVyciA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyID09PSBXYXRjaEV2ZW50LkVycm9yIHx8IChjb3VudCAmJiBzb0ZhcisrIDwgY291bnQpKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvZihlcnIpLnBpcGUoZGVsYXkoY291bnQgPyBkZWxheVRpbWUgOiAwKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnIpO1xuICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgLy8gQGludGVybmFsXG4gIHByaXZhdGUgX2tlZXBXYXRjaFJlc291cmNlQ2hhbmdlPFQgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2U+KFxuICAgIHNlZWRWZXJzaW9uOiBzdHJpbmcsXG4gICAgcGFyYW1zOiBXYXRjaFJlc291cmNlTGlzdFJlYWRQYXJhbXM8Uj4sXG4gICkge1xuICAgIGxldCByZXNvdXJjZVZlcnNpb24gPSBzZWVkVmVyc2lvbjtcbiAgICBsZXQgc3ViOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdCB3YXRjaCQgPSBuZXcgT2JzZXJ2YWJsZTxXYXRjaEFQSVJlc3BvbnNlPFQ+PihvYnNlcnZlciA9PiB7XG4gICAgICBjb25zdCB1bnN1YnNjcmliZSA9ICgpID0+IHtcbiAgICAgICAgaWYgKHN1YiAmJiAhc3ViLmNsb3NlZCkge1xuICAgICAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB3YXRjaCA9ICgpID0+IHtcbiAgICAgICAgdW5zdWJzY3JpYmUoKTtcbiAgICAgICAgc3ViID0gdGhpcy5fd2F0Y2hSZXNvdXJjZUNoYW5nZTxUPih7XG4gICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAgIHF1ZXJ5UGFyYW1zOiBub3JtYWxpemVQYXJhbXMoe1xuICAgICAgICAgICAgLi4ucGFyYW1zLnF1ZXJ5UGFyYW1zLFxuICAgICAgICAgICAgd2F0Y2g6IFRSVUUsXG4gICAgICAgICAgICBhbGxvd1dhdGNoQm9va21hcmtzOiBUUlVFLFxuICAgICAgICAgICAgdGltZW91dFNlY29uZHM6IFN0cmluZyhUSU1FT1VUX1NFQ09ORFMpLFxuICAgICAgICAgICAgcmVzb3VyY2VWZXJzaW9uLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KS5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQocmVzKSB7XG4gICAgICAgICAgICBpZiAocmVzLnR5cGUgPT09IFdhdGNoRXZlbnQuRXJyb3IpIHtcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IocmVzLnR5cGUpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc291cmNlVmVyc2lvbiA9IHJlcy5vYmplY3QubWV0YWRhdGEucmVzb3VyY2VWZXJzaW9uO1xuICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChyZXMpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3IoZXJyKSB7XG4gICAgICAgICAgICBvYnNlcnZlci5lcnJvcihlcnIpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY29tcGxldGU6IHdhdGNoLFxuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIHdhdGNoKCk7XG4gICAgICByZXR1cm4gdW5zdWJzY3JpYmU7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcGFyYW1zLmtlZXBhbGl2ZVxuICAgICAgPyB3YXRjaCRcbiAgICAgIDogY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgdGhpcy5wYWdlVmlzaWJpbGl0eS5nZXRQYWdlVmlzaWJpbGl0eSgpLFxuICAgICAgICAgIHBhcmFtcy5hY3RpdmUkIHx8IG9mKHRydWUpLFxuICAgICAgICBdKS5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcCgoW3Zpc2libGUsIGFjdGl2ZV0pID0+XG4gICAgICAgICAgICB2aXNpYmxlICYmIGFjdGl2ZSA/IHdhdGNoJCA6IE5FVkVSLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gIH1cblxuICAvLyBAaW50ZXJuYWxcbiAgcHJpdmF0ZSBfd2F0Y2hSZXNvdXJjZUNoYW5nZTxUIGV4dGVuZHMgS3ViZXJuZXRlc1Jlc291cmNlPihcbiAgICBwYXJhbXM6IFJlc291cmNlTGlzdFJlYWRQYXJhbXM8Uj4sXG4gICk6IE9ic2VydmFibGU8V2F0Y2hBUElSZXNwb25zZTxUPj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQodGhpcy5fZ2V0QXBpUGF0aChwYXJhbXMsIHRydWUpLCB7XG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnLFxuICAgICAgICBvYnNlcnZlOiAnZXZlbnRzJyxcbiAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuX2dldEhlYWRlcnMocGFyYW1zKSxcbiAgICAgICAgcGFyYW1zOiBwYXJhbXMucXVlcnlQYXJhbXMsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcihldiA9PiBldi50eXBlID09PSBIdHRwRXZlbnRUeXBlLkRvd25sb2FkUHJvZ3Jlc3MpLFxuICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgKHsgcGFydGlhbFRleHQgfTogSHR0cERvd25sb2FkUHJvZ3Jlc3NFdmVudCkgPT4gISFwYXJ0aWFsVGV4dD8udHJpbSgpLFxuICAgICAgICApLFxuICAgICAgICBjb25jYXRNYXAoKHsgcGFydGlhbFRleHQgfSkgPT5cbiAgICAgICAgICBmcm9tKFxuICAgICAgICAgICAgcmVkdWNlV2F0Y2hFdmVudHMoXG4gICAgICAgICAgICAgIHBhcnNlSlNPTlN0cmVhbTxXYXRjaEFQSVJlc3BvbnNlPFQ+PihwYXJ0aWFsVGV4dCksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApO1xuICB9XG5cbiAgLy8gQGludGVybmFsXG4gIHByaXZhdGUgX2dldFJlc291cmNlTGlzdDxUIGV4dGVuZHMgS3ViZXJuZXRlc1Jlc291cmNlPihcbiAgICBwYXJhbXM6IFJlc291cmNlTGlzdFJlYWRQYXJhbXM8Uj4sXG4gICkge1xuICAgIC8vIOWMheWQqyBrZXl3b3JkIOWJjee8gOmcgOimgeWKoOS4iuWJjee8gCAnYWNwL3YxL3Jlc291cmNlcy9zZWFyY2gnXG4gICAgLy8g5Y+C6ICDIGh0dHA6Ly9jb25mbHVlbmNlLmFsYXVkYS5jbi9wYWdlcy92aWV3cGFnZS5hY3Rpb24/cGFnZUlkPTQ4NzMxMDU4XG4gICAgbGV0IHVybCA9IHRoaXMuX2dldEFwaVBhdGgocGFyYW1zLCB0cnVlKTtcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHsgLi4ucGFyYW1zLnF1ZXJ5UGFyYW1zIH07XG4gICAgaWYgKHF1ZXJ5UGFyYW1zLmtleXdvcmQpIHtcbiAgICAgIHVybCA9IHVybC5yZXBsYWNlKEFQSV9HQVRFV0FZLCBgJHtBUElfR0FURVdBWX0ke1NFQVJDSF9VUkxfUFJFRklYfWApO1xuICAgICAgaWYgKCFxdWVyeVBhcmFtcy5maWVsZCkge1xuICAgICAgICBxdWVyeVBhcmFtcy5maWVsZCA9ICdtZXRhZGF0YS5uYW1lJztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxLdWJlcm5ldGVzUmVzb3VyY2VMaXN0PFQ+Pih1cmwsIHtcbiAgICAgICAgcGFyYW1zOiBxdWVyeVBhcmFtcyxcbiAgICAgICAgaGVhZGVyczogdGhpcy5fZ2V0SGVhZGVycyhwYXJhbXMsIHRydWUpLFxuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcCh0aGlzLl9nZXROb3JtYWxpemVkTGlzdCkpO1xuICB9XG5cbiAgLy8gQGludGVybmFsXG4gIHByaXZhdGUgX3Bvc3RSZXNvdXJjZTxUIGV4dGVuZHMgS3ViZXJuZXRlc1Jlc291cmNlPihcbiAgICBwYXJhbXM6IFJlc291cmNlV3JpdGVQYXJhbXM8UiwgVD4sXG4gICkge1xuICAgIGlmIChcbiAgICAgICgnbmFtZXNwYWNlJyBpbiBwYXJhbXMgJiYgcGFyYW1zLm5hbWVzcGFjZSkgfHxcbiAgICAgICgnbmFtZXNwYWNlZCcgaW4gcGFyYW1zICYmIHBhcmFtcy5uYW1lc3BhY2VkKVxuICAgICkge1xuICAgICAgY29uc3QgcmVzb3VyY2VOYW1lc3BhY2UgPSBnZXQocGFyYW1zLnJlc291cmNlLCBbTUVUQURBVEEsIE5BTUVTUEFDRV0pO1xuICAgICAgaWYgKCFyZXNvdXJjZU5hbWVzcGFjZSkge1xuICAgICAgICBzZXQoXG4gICAgICAgICAgcGFyYW1zLnJlc291cmNlLFxuICAgICAgICAgIFtNRVRBREFUQSwgTkFNRVNQQUNFXSxcbiAgICAgICAgICBwYXJhbXMubmFtZXNwYWNlIHx8IHRoaXMuZ2xvYmFsTmFtZXNwYWNlLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8VD4odGhpcy5fZ2V0QXBpUGF0aChwYXJhbXMsIHRydWUpLCBwYXJhbXMucmVzb3VyY2UsIHtcbiAgICAgIGhlYWRlcnM6IHRoaXMuX2dldEhlYWRlcnMocGFyYW1zKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEBpbnRlcm5hbFxuICBwcml2YXRlIF9wdXRSZXNvdXJjZTxUIGV4dGVuZHMgS3ViZXJuZXRlc1Jlc291cmNlPihcbiAgICBwYXJhbXM6IFJlc291cmNlV3JpdGVQYXJhbXM8UiwgVD4sXG4gICkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PFQ+KHRoaXMuX2dldEFwaVBhdGgocGFyYW1zKSwgcGFyYW1zLnJlc291cmNlLCB7XG4gICAgICBoZWFkZXJzOiB0aGlzLl9nZXRIZWFkZXJzKHBhcmFtcyksXG4gICAgfSk7XG4gIH1cblxuICAvLyBAaW50ZXJuYWxcbiAgcHJpdmF0ZSBfcGF0Y2hSZXNvdXJjZTxUIGV4dGVuZHMgS3ViZXJuZXRlc1Jlc291cmNlPihcbiAgICBwYXJhbXM6IFJlc291cmNlUGF0Y2hQYXJhbXM8UiwgVD4sXG4gICkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2g8VD4odGhpcy5fZ2V0QXBpUGF0aChwYXJhbXMpLCBwYXJhbXMucGFydCwge1xuICAgICAgaGVhZGVyczoge1xuICAgICAgICAuLi50aGlzLl9nZXRIZWFkZXJzKHBhcmFtcyksXG4gICAgICAgICdDb250ZW50LVR5cGUnOiBwYXJhbXMub3BlcmF0aW9uIHx8IFBhdGNoT3BlcmF0aW9uLk1lcmdlLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEBpbnRlcm5hbFxuICBwcml2YXRlIF9kZWxldGVSZXNvdXJjZTxcbiAgICBTIGV4dGVuZHMgS3ViZXJuZXRlc1Jlc291cmNlLFxuICAgIFQgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2UsXG4gID4ocGFyYW1zOiBSZXNvdXJjZURlbGV0ZVBhcmFtczxSLCBUPikge1xuICAgIHJldHVybiB0aGlzLmh0dHAucmVxdWVzdDxTPignZGVsZXRlJywgdGhpcy5fZ2V0QXBpUGF0aChwYXJhbXMpLCB7XG4gICAgICBoZWFkZXJzOiB0aGlzLl9nZXRIZWFkZXJzKHBhcmFtcyksXG4gICAgICBib2R5OiBwYXJhbXMuYm9keSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEBpbnRlcm5hbFxuICBwcml2YXRlIF9iYXRjaERlbGV0ZVJlc291cmNlPFMgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2U+KFxuICAgIHBhcmFtczogRXJlYnVzUmVzb3VyY2VCYXRjaERlbGV0ZVBhcmFtczxSPixcbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5yZXF1ZXN0PFM+KCdkZWxldGUnLCB0aGlzLl9nZXRBcGlQYXRoKHBhcmFtcyksIHtcbiAgICAgIGhlYWRlcnM6IHRoaXMuX2dldEhlYWRlcnMocGFyYW1zKSxcbiAgICAgIGJvZHk6IHBhcmFtcy5ib2R5LFxuICAgICAgcGFyYW1zOiBwYXJhbXMucXVlcnlQYXJhbXMsXG4gICAgfSk7XG4gIH1cblxuICAvLyBAaW50ZXJuYWxcbiAgcHJpdmF0ZSByZWFkb25seSBfZ2V0SGVhZGVycyA9IChcbiAgICB7IG5vdGlmeU9uRXJyb3IsIG9ubHlNZXRhZGF0YSwgY3VzdG9tQWNjZXB0LCBjcnlwdG8gfTogQXBpQmFzZVBhcmFtczxSPixcbiAgICBpc0xpc3Q/OiBib29sZWFuLFxuICApID0+IHtcbiAgICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXT4gPSB7fTtcbiAgICBpZiAodHlwZW9mIG5vdGlmeU9uRXJyb3IgPT09ICdib29sZWFuJykge1xuICAgICAgT2JqZWN0LmFzc2lnbihcbiAgICAgICAgaGVhZGVycyxcbiAgICAgICAgbm90aWZ5T25FcnJvciA/IE5PVElGWV9PTl9FUlJPUl9IRUFERVJTIDogTk9UX05PVElGWV9PTl9FUlJPUl9IRUFERVJTLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGNyeXB0bykge1xuICAgICAgT2JqZWN0LmFzc2lnbihoZWFkZXJzLCB7XG4gICAgICAgIFtDUllQVE9fSEVBREVSX0tFWV06IGNyeXB0byxcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9rdWJlcm5ldGVzL2Rlc2lnbi1wcm9wb3NhbHMtYXJjaGl2ZS9ibG9iL21haW4vYXBpLW1hY2hpbmVyeS9hbHRlcm5hdGUtYXBpLXJlcHJlc2VudGF0aW9ucy5tZFxuICAgICAqL1xuICAgIGlmIChvbmx5TWV0YWRhdGEpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24oaGVhZGVycywgZ2V0TWV0YWRhdGFIZWFkZXJzKGlzTGlzdCwgY3VzdG9tQWNjZXB0KSk7XG4gICAgfVxuICAgIHJldHVybiBoZWFkZXJzO1xuICB9O1xuXG4gIHByaXZhdGUgX2dldERvd25ncmFkZVBvbGxpbmcoe1xuICAgIGtlZXBhbGl2ZSxcbiAgICBkb3duZ3JhZGVQb2xsaW5nLFxuICB9OiBXYXRjaEFwaVBhcmFtcykge1xuICAgIHJldHVybiBrZWVwYWxpdmVcbiAgICAgID8gZG93bmdyYWRlUG9sbGluZ1xuICAgICAgOiB0aGlzLnBhZ2VWaXNpYmlsaXR5XG4gICAgICAgICAgLmdldFBhZ2VWaXNpYmlsaXR5KClcbiAgICAgICAgICAucGlwZShtYXAodmlzaWJsZSA9PiAodmlzaWJsZSA/IGRvd25ncmFkZVBvbGxpbmcgOiAwKSkpO1xuICB9XG59XG4iXX0=
@@ -36,9 +36,9 @@ function NamespaceSelectorComponent_div_9_Template(rf, ctx) { if (rf & 1) {
36
36
  i0.ɵɵadvance(4);
37
37
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 3, "service_mesh"), " ");
38
38
  i0.ɵɵadvance(3);
39
- i0.ɵɵtextInterpolate1("", ctx_r2.value.servicemesh, " ");
39
+ i0.ɵɵtextInterpolate1("", ctx_r2.value == null ? null : ctx_r2.value.servicemesh, " ");
40
40
  i0.ɵɵadvance();
41
- i0.ɵɵproperty("ngIf", ctx_r2.value.istioVersion);
41
+ i0.ɵɵproperty("ngIf", ctx_r2.value == null ? null : ctx_r2.value.istioVersion);
42
42
  } }
43
43
  function NamespaceSelectorComponent_ng_template_24_Template(rf, ctx) { if (rf & 1) {
44
44
  const _r4 = i0.ɵɵgetCurrentView();
@@ -150,22 +150,22 @@ export class NamespaceSelectorComponent {
150
150
  i0.ɵɵadvance(5);
151
151
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 8, "project"), " ");
152
152
  i0.ɵɵadvance(3);
153
- i0.ɵɵtextInterpolate(ctx.value.project);
153
+ i0.ɵɵtextInterpolate(ctx.value == null ? null : ctx.value.project);
154
154
  i0.ɵɵadvance();
155
155
  i0.ɵɵproperty("ngIf", ctx.displayServiceMesh);
156
156
  i0.ɵɵadvance(5);
157
157
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(15, 10, "namespace"), " ");
158
158
  i0.ɵɵadvance(3);
159
- i0.ɵɵtextInterpolate1("", ctx.value.name, " (");
159
+ i0.ɵɵtextInterpolate1("", ctx.value == null ? null : ctx.value.name, " (");
160
160
  i0.ɵɵadvance(2);
161
161
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(20, 12, "cluster"), " ");
162
162
  i0.ɵɵadvance(2);
163
- i0.ɵɵtextInterpolate1("", ctx.value.cluster, ") ");
163
+ i0.ɵɵtextInterpolate1("", ctx.value == null ? null : ctx.value.cluster, ") ");
164
164
  } }, styles: ["[_nghost-%COMP%]{display:flex}[_nghost-%COMP%] .icon-wrapper{position:relative;display:flex;justify-content:center;align-items:center;width:16px;height:16px;flex-shrink:0;font-size:var(--aui-icon-size-m)}:root [_nghost-%COMP%] .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}html[aui-theme-mode=light] [_nghost-%COMP%] .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] [_nghost-%COMP%] .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}}html[aui-theme-mode=dark] [_nghost-%COMP%] .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}[_nghost-%COMP%] .with-colon{display:inline-flex;word-break:keep-all;flex-shrink:0;font-weight:500}[_nghost-%COMP%] .with-colon:after{content:\":\";margin-right:8px}[_nghost-%COMP%] .text-truncate{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}[_nghost-%COMP%] .acl-resource-selector{user-select:none;display:flex;color:var(--acl-page-header-title-color);cursor:pointer;padding:0 8px}[_nghost-%COMP%] .acl-resource-selector .selected-name{color:var(--acl-page-header-text-color)}[_nghost-%COMP%] .acl-resource-selector--active, [_nghost-%COMP%] .acl-resource-selector:hover{background-color:rgb(var(--aui-color-primary));color:#fff;border-radius:2px}:root [_nghost-%COMP%] .acl-resource-selector--active .icon-wrapper, :root [_nghost-%COMP%] .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: rgb(var(--aui-color-p-4))}html[aui-theme-mode=light] [_nghost-%COMP%] .acl-resource-selector--active .icon-wrapper, html[aui-theme-mode=light] [_nghost-%COMP%] .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: rgb(var(--aui-color-p-4))}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] [_nghost-%COMP%] .acl-resource-selector--active .icon-wrapper, html[aui-theme-mode=system] [_nghost-%COMP%] .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: #b3d7fc}}html[aui-theme-mode=dark] [_nghost-%COMP%] .acl-resource-selector--active .icon-wrapper, html[aui-theme-mode=dark] [_nghost-%COMP%] .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: #b3d7fc}[_nghost-%COMP%] .acl-resource-selector--active .selected-name, [_nghost-%COMP%] .acl-resource-selector:hover .selected-name{color:#fff}[_nghost-%COMP%] .acl-resource-selector--lite{padding:0 4px;color:rgb(var(--aui-color-n-2))}[_nghost-%COMP%] .acl-resource-selector--lite:hover{background-color:rgb(var(--aui-color-b-6))}[_nghost-%COMP%] .acl-resource-selector--lite:hover .selected-name, [_nghost-%COMP%] .acl-resource-selector--lite:hover .acl-resource-selector__arrow{color:rgb(var(--aui-color-n-2))}[_nghost-%COMP%] .acl-resource-selector--lite .acl-resource-selector__item{height:26px}[_nghost-%COMP%] .acl-resource-selector--lite:hover, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active:hover{background-color:rgb(var(--aui-color-b-5))}[_nghost-%COMP%] .acl-resource-selector--lite:hover aui-icon, [_nghost-%COMP%] .acl-resource-selector--lite:hover .with-colon, [_nghost-%COMP%] .acl-resource-selector--lite:hover .selected-name, [_nghost-%COMP%] .acl-resource-selector--lite:hover .acl-resource-selector__arrow, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active aui-icon, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active .with-colon, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active .selected-name, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active .acl-resource-selector__arrow, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active:hover aui-icon, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active:hover .with-colon, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active:hover .selected-name, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active:hover .acl-resource-selector__arrow{color:rgb(var(--aui-color-primary))}[_nghost-%COMP%] .acl-resource-selector__item{margin-right:20px;height:32px;display:inline-flex;align-items:center;font-size:12px;max-width:270px}@media screen and (width <= 1280px){[_nghost-%COMP%] .acl-resource-selector__item{max-width:178px;margin-right:8px}}[_nghost-%COMP%] .acl-resource-selector__item .icon-wrapper{margin-right:4px}[_nghost-%COMP%] .acl-resource-selector__arrow{margin-left:-16px;align-items:center;display:inline-flex;width:16px;justify-content:center}@media screen and (width <= 1280px){[_nghost-%COMP%] .acl-resource-selector__arrow{margin-left:-4px}}"], changeDetection: 0 }); }
165
165
  }
166
166
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NamespaceSelectorComponent, [{
167
167
  type: Component,
168
- args: [{ selector: 'acl-namespace-selector', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"acl-resource-selector\"\n [ngClass]=\"{ 'acl-resource-selector--active': isActive }\"\n (click)=\"openPopup()\"\n>\n <div class=\"acl-resource-selector__item project\">\n <span class=\"icon-wrapper tw-flex\">\n <aui-icon icon=\"bicolor:project\"></aui-icon>\n </span>\n <span class=\"with-colon\">\n {{ 'project' | translate }}\n </span>\n <span class=\"selected-name text-truncate\">{{ value.project }}</span>\n </div>\n <div\n *ngIf=\"displayServiceMesh\"\n class=\"acl-resource-selector__item namespace\"\n >\n <span class=\"icon-wrapper\">\n <aui-icon icon=\"bicolor:service_mesh\"></aui-icon>\n </span>\n <span class=\"with-colon\"> {{ 'service_mesh' | translate }} </span>\n <span class=\"selected-name text-truncate\"\n >{{ value.servicemesh }}\n <ng-container *ngIf=\"value.istioVersion as istioVersion\"\n >(Istio {{ istioVersion }})</ng-container\n >\n </span>\n </div>\n <div class=\"acl-resource-selector__item namespace\">\n <span class=\"icon-wrapper\">\n <aui-icon icon=\"bicolor:namespace\"></aui-icon>\n </span>\n <span class=\"with-colon\">\n {{ 'namespace' | translate }}\n </span>\n <span class=\"selected-name text-truncate\"\n >{{ value.name }} (<span class=\"with-colon\">\n {{ 'cluster' | translate }} </span\n >{{ value.cluster }})\n </span>\n </div>\n <div class=\"acl-resource-selector__arrow\">\n <aui-icon icon=\"caret_down_s\"></aui-icon>\n </div>\n</div>\n\n<ng-template #popup>\n <acl-namespace-list\n [context]=\"'popup'\"\n [fields]=\"fields || displayFields\"\n (selectItem)=\"onSelect($event)\"\n [disableFn]=\"disableFn\"\n [value]=\"value\"\n [displayServiceMesh]=\"displayServiceMesh\"\n (clusterChange)=\"clusterChange.emit($event)\"\n (projectChange)=\"projectChange.emit($event)\"\n ></acl-namespace-list>\n</ng-template>\n", styles: [":host{display:flex}:host::ng-deep .icon-wrapper{position:relative;display:flex;justify-content:center;align-items:center;width:16px;height:16px;flex-shrink:0;font-size:var(--aui-icon-size-m)}:root :host::ng-deep .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}html[aui-theme-mode=light] :host::ng-deep .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] :host::ng-deep .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}}html[aui-theme-mode=dark] :host::ng-deep .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}:host::ng-deep .with-colon{display:inline-flex;word-break:keep-all;flex-shrink:0;font-weight:500}:host::ng-deep .with-colon:after{content:\":\";margin-right:8px}:host::ng-deep .text-truncate{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}:host::ng-deep .acl-resource-selector{user-select:none;display:flex;color:var(--acl-page-header-title-color);cursor:pointer;padding:0 8px}:host::ng-deep .acl-resource-selector .selected-name{color:var(--acl-page-header-text-color)}:host::ng-deep .acl-resource-selector--active,:host::ng-deep .acl-resource-selector:hover{background-color:rgb(var(--aui-color-primary));color:#fff;border-radius:2px}:root :host::ng-deep .acl-resource-selector--active .icon-wrapper,:root :host::ng-deep .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: rgb(var(--aui-color-p-4))}html[aui-theme-mode=light] :host::ng-deep .acl-resource-selector--active .icon-wrapper,html[aui-theme-mode=light] :host::ng-deep .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: rgb(var(--aui-color-p-4))}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] :host::ng-deep .acl-resource-selector--active .icon-wrapper,html[aui-theme-mode=system] :host::ng-deep .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: #b3d7fc}}html[aui-theme-mode=dark] :host::ng-deep .acl-resource-selector--active .icon-wrapper,html[aui-theme-mode=dark] :host::ng-deep .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: #b3d7fc}:host::ng-deep .acl-resource-selector--active .selected-name,:host::ng-deep .acl-resource-selector:hover .selected-name{color:#fff}:host::ng-deep .acl-resource-selector--lite{padding:0 4px;color:rgb(var(--aui-color-n-2))}:host::ng-deep .acl-resource-selector--lite:hover{background-color:rgb(var(--aui-color-b-6))}:host::ng-deep .acl-resource-selector--lite:hover .selected-name,:host::ng-deep .acl-resource-selector--lite:hover .acl-resource-selector__arrow{color:rgb(var(--aui-color-n-2))}:host::ng-deep .acl-resource-selector--lite .acl-resource-selector__item{height:26px}:host::ng-deep .acl-resource-selector--lite:hover,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active:hover{background-color:rgb(var(--aui-color-b-5))}:host::ng-deep .acl-resource-selector--lite:hover aui-icon,:host::ng-deep .acl-resource-selector--lite:hover .with-colon,:host::ng-deep .acl-resource-selector--lite:hover .selected-name,:host::ng-deep .acl-resource-selector--lite:hover .acl-resource-selector__arrow,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active aui-icon,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active .with-colon,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active .selected-name,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active .acl-resource-selector__arrow,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active:hover aui-icon,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active:hover .with-colon,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active:hover .selected-name,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active:hover .acl-resource-selector__arrow{color:rgb(var(--aui-color-primary))}:host::ng-deep .acl-resource-selector__item{margin-right:20px;height:32px;display:inline-flex;align-items:center;font-size:12px;max-width:270px}@media screen and (width <= 1280px){:host::ng-deep .acl-resource-selector__item{max-width:178px;margin-right:8px}}:host::ng-deep .acl-resource-selector__item .icon-wrapper{margin-right:4px}:host::ng-deep .acl-resource-selector__arrow{margin-left:-16px;align-items:center;display:inline-flex;width:16px;justify-content:center}@media screen and (width <= 1280px){:host::ng-deep .acl-resource-selector__arrow{margin-left:-4px}}\n"] }]
168
+ args: [{ selector: 'acl-namespace-selector', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"acl-resource-selector\"\n [ngClass]=\"{ 'acl-resource-selector--active': isActive }\"\n (click)=\"openPopup()\"\n>\n <div class=\"acl-resource-selector__item project\">\n <span class=\"icon-wrapper tw-flex\">\n <aui-icon icon=\"bicolor:project\"></aui-icon>\n </span>\n <span class=\"with-colon\">\n {{ 'project' | translate }}\n </span>\n <span class=\"selected-name text-truncate\">{{ value?.project }}</span>\n </div>\n <div\n *ngIf=\"displayServiceMesh\"\n class=\"acl-resource-selector__item namespace\"\n >\n <span class=\"icon-wrapper\">\n <aui-icon icon=\"bicolor:service_mesh\"></aui-icon>\n </span>\n <span class=\"with-colon\"> {{ 'service_mesh' | translate }} </span>\n <span class=\"selected-name text-truncate\"\n >{{ value?.servicemesh }}\n <ng-container *ngIf=\"value?.istioVersion as istioVersion\"\n >(Istio {{ istioVersion }})</ng-container\n >\n </span>\n </div>\n <div class=\"acl-resource-selector__item namespace\">\n <span class=\"icon-wrapper\">\n <aui-icon icon=\"bicolor:namespace\"></aui-icon>\n </span>\n <span class=\"with-colon\">\n {{ 'namespace' | translate }}\n </span>\n <span class=\"selected-name text-truncate\"\n >{{ value?.name }} (<span class=\"with-colon\">\n {{ 'cluster' | translate }} </span\n >{{ value?.cluster }})\n </span>\n </div>\n <div class=\"acl-resource-selector__arrow\">\n <aui-icon icon=\"caret_down_s\"></aui-icon>\n </div>\n</div>\n\n<ng-template #popup>\n <acl-namespace-list\n [context]=\"'popup'\"\n [fields]=\"fields || displayFields\"\n (selectItem)=\"onSelect($event)\"\n [disableFn]=\"disableFn\"\n [value]=\"value\"\n [displayServiceMesh]=\"displayServiceMesh\"\n (clusterChange)=\"clusterChange.emit($event)\"\n (projectChange)=\"projectChange.emit($event)\"\n ></acl-namespace-list>\n</ng-template>\n", styles: [":host{display:flex}:host::ng-deep .icon-wrapper{position:relative;display:flex;justify-content:center;align-items:center;width:16px;height:16px;flex-shrink:0;font-size:var(--aui-icon-size-m)}:root :host::ng-deep .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}html[aui-theme-mode=light] :host::ng-deep .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] :host::ng-deep .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}}html[aui-theme-mode=dark] :host::ng-deep .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}:host::ng-deep .with-colon{display:inline-flex;word-break:keep-all;flex-shrink:0;font-weight:500}:host::ng-deep .with-colon:after{content:\":\";margin-right:8px}:host::ng-deep .text-truncate{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}:host::ng-deep .acl-resource-selector{user-select:none;display:flex;color:var(--acl-page-header-title-color);cursor:pointer;padding:0 8px}:host::ng-deep .acl-resource-selector .selected-name{color:var(--acl-page-header-text-color)}:host::ng-deep .acl-resource-selector--active,:host::ng-deep .acl-resource-selector:hover{background-color:rgb(var(--aui-color-primary));color:#fff;border-radius:2px}:root :host::ng-deep .acl-resource-selector--active .icon-wrapper,:root :host::ng-deep .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: rgb(var(--aui-color-p-4))}html[aui-theme-mode=light] :host::ng-deep .acl-resource-selector--active .icon-wrapper,html[aui-theme-mode=light] :host::ng-deep .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: rgb(var(--aui-color-p-4))}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] :host::ng-deep .acl-resource-selector--active .icon-wrapper,html[aui-theme-mode=system] :host::ng-deep .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: #b3d7fc}}html[aui-theme-mode=dark] :host::ng-deep .acl-resource-selector--active .icon-wrapper,html[aui-theme-mode=dark] :host::ng-deep .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: #b3d7fc}:host::ng-deep .acl-resource-selector--active .selected-name,:host::ng-deep .acl-resource-selector:hover .selected-name{color:#fff}:host::ng-deep .acl-resource-selector--lite{padding:0 4px;color:rgb(var(--aui-color-n-2))}:host::ng-deep .acl-resource-selector--lite:hover{background-color:rgb(var(--aui-color-b-6))}:host::ng-deep .acl-resource-selector--lite:hover .selected-name,:host::ng-deep .acl-resource-selector--lite:hover .acl-resource-selector__arrow{color:rgb(var(--aui-color-n-2))}:host::ng-deep .acl-resource-selector--lite .acl-resource-selector__item{height:26px}:host::ng-deep .acl-resource-selector--lite:hover,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active:hover{background-color:rgb(var(--aui-color-b-5))}:host::ng-deep .acl-resource-selector--lite:hover aui-icon,:host::ng-deep .acl-resource-selector--lite:hover .with-colon,:host::ng-deep .acl-resource-selector--lite:hover .selected-name,:host::ng-deep .acl-resource-selector--lite:hover .acl-resource-selector__arrow,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active aui-icon,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active .with-colon,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active .selected-name,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active .acl-resource-selector__arrow,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active:hover aui-icon,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active:hover .with-colon,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active:hover .selected-name,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active:hover .acl-resource-selector__arrow{color:rgb(var(--aui-color-primary))}:host::ng-deep .acl-resource-selector__item{margin-right:20px;height:32px;display:inline-flex;align-items:center;font-size:12px;max-width:270px}@media screen and (width <= 1280px){:host::ng-deep .acl-resource-selector__item{max-width:178px;margin-right:8px}}:host::ng-deep .acl-resource-selector__item .icon-wrapper{margin-right:4px}:host::ng-deep .acl-resource-selector__arrow{margin-left:-16px;align-items:center;display:inline-flex;width:16px;justify-content:center}@media screen and (width <= 1280px){:host::ng-deep .acl-resource-selector__arrow{margin-left:-4px}}\n"] }]
169
169
  }], () => [{ type: i1.ResourceSelectorPopupService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i2.K8sUtilService }, { type: i3.AuthorizationStateService }], { popupTemplate: [{
170
170
  type: ViewChild,
171
171
  args: ['popup', { static: true }]
@@ -185,4 +185,4 @@ export class NamespaceSelectorComponent {
185
185
  type: Output
186
186
  }] }); })();
187
187
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NamespaceSelectorComponent, { className: "NamespaceSelectorComponent" }); })();
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2J1c2luZXNzL3Jlc291cmNlLXNlbGVjdC9leHBvcnRzL25hbWVzcGFjZS1zZWxlY3Rvci9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvYnVzaW5lc3MvcmVzb3VyY2Utc2VsZWN0L2V4cG9ydHMvbmFtZXNwYWNlLXNlbGVjdG9yL3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV0RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN0RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFckUsT0FBTyxFQUNMLGlCQUFpQixHQUlsQixNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7SUNBakIsNkJBQ0c7SUFBQSxZQUEwQjs7OztJQUExQixjQUEwQjtJQUExQixzREFBMEI7OztJQVAvQixBQUpGLDhCQUdDLGNBQzRCO0lBQ3pCLCtCQUFpRDtJQUNuRCxpQkFBTztJQUNQLCtCQUF5QjtJQUFDLFlBQWlDOztJQUFBLGlCQUFPO0lBQ2xFLCtCQUNHO0lBQUEsWUFDRDtJQUFBLG9HQUNHO0lBR1AsQUFERSxpQkFBTyxFQUNIOzs7SUFQc0IsZUFBaUM7SUFBakMscUVBQWlDO0lBRXhELGVBQ0Q7SUFEQyx3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SVAsYUFBYTtrQkFEWixNQUFNO1lBSVAsV0FBVztrQkFEVixNQUFNOztrRkF0QkksMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEF1dGhvcml6YXRpb25TdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9hdXRob3JpemF0aW9uL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgSzhzVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2VzL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgUmVzb3VyY2VTZWxlY3RvclBvcHVwUmVmIH0gZnJvbSAnLi4vLi4vaW50ZXJuYWxzL3NlbGVjdG9yLXBvcHVwL3JlZic7XG5pbXBvcnQgeyBSZXNvdXJjZVNlbGVjdG9yUG9wdXBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaW50ZXJuYWxzL3NlbGVjdG9yLXBvcHVwL3NlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0V29ya3NwYWNlUGFyYW1zLCBzZXRXb3Jrc3BhY2VQYXJhbXMgfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbmltcG9ydCB7XG4gIENvbmZpZ3VyYWJsZUZpZWxkLFxuICBEYXRhSXRlbUJhc2UsXG4gIERpc2FibGVGbixcbiAgU2VsZWN0ZWROYW1lc3BhY2VWYWx1ZSxcbn0gZnJvbSAnLi8uLi8uLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjbC1uYW1lc3BhY2Utc2VsZWN0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vdGVtcGxhdGUuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuLy4uL2NsdXN0ZXItc2VsZWN0b3Ivc3R5bGUuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmFtZXNwYWNlU2VsZWN0b3JDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZCgncG9wdXAnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwb3B1cFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVGbjogRGlzYWJsZUZuO1xuXG4gIEBJbnB1dCgpXG4gIHZhbHVlOiBTZWxlY3RlZE5hbWVzcGFjZVZhbHVlO1xuXG4gIEBJbnB1dCgpXG4gIGZpZWxkczogQ29uZmlndXJhYmxlRmllbGRbXTtcblxuICBASW5wdXQoKVxuICBkaXNwbGF5U2VydmljZU1lc2ggPSBmYWxzZTtcblxuICBAT3V0cHV0KClcbiAgY2x1c3RlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwcm9qZWN0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3RlZE5hbWVzcGFjZVZhbHVlPigpO1xuXG4gIGRpc3BsYXlGaWVsZHM6IENvbmZpZ3VyYWJsZUZpZWxkW10gPSBbXG4gICAgQ29uZmlndXJhYmxlRmllbGQuQ2x1c3RlcixcbiAgICBDb25maWd1cmFibGVGaWVsZC5UaW1lLFxuICBdO1xuXG4gIGlzQWN0aXZlID0gZmFsc2U7XG5cbiAgcG9wdXBSZWY6IFJlc291cmNlU2VsZWN0b3JQb3B1cFJlZjtcblxuICBsb2FkaW5nID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvcHVwU2VydmljZTogUmVzb3VyY2VTZWxlY3RvclBvcHVwU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgazhzVXRpbDogSzhzVXRpbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdXRoOiBBdXRob3JpemF0aW9uU3RhdGVTZXJ2aWNlLFxuICApIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGVtYWlsID0gdGhpcy5hdXRoLnBheWxvYWRTbmFwc2hvdD8uZW1haWw7XG4gICAgY29uc3QgcGFyYW1zID0gZ2V0V29ya3NwYWNlUGFyYW1zKGVtYWlsKTtcbiAgICBpZiAodGhpcy52YWx1ZSAmJiAhcGFyYW1zKSB7XG4gICAgICBzZXRXb3Jrc3BhY2VQYXJhbXModGhpcy52YWx1ZSwgZW1haWwpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5Qb3B1cCgpIHtcbiAgICBpZiAodGhpcy5pc0FjdGl2ZSkge1xuICAgICAgdGhpcy5jbG9zZVBvcHVwKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNBY3RpdmUgPSB0cnVlO1xuICAgICAgdGhpcy5wb3B1cFJlZiA9IHRoaXMucG9wdXBTZXJ2aWNlLm9wZW4oe1xuICAgICAgICBvcmlnaW46IHRoaXMuZWxlbWVudFJlZixcbiAgICAgICAgY29udGVudDogdGhpcy5wb3B1cFRlbXBsYXRlLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnBvcHVwUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlUG9wdXAoKSB7XG4gICAgdGhpcy5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMucG9wdXBSZWYuY2xvc2UoKTtcbiAgfVxuXG4gIG9uU2VsZWN0KGl0ZW06IERhdGFJdGVtQmFzZSkge1xuICAgIHRoaXMudmFsdWUgPSB7XG4gICAgICBwcm9qZWN0OiB0aGlzLms4c1V0aWwuZ2V0TGFiZWwoaXRlbS5fX29yaWdpbiwgJ3Byb2plY3QnKSxcbiAgICAgIGNsdXN0ZXI6IGl0ZW0uY2x1c3RlcixcbiAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcbiAgICAgIHNlcnZpY2VtZXNoOiBpdGVtLnNlcnZpY2VNZXNoTmFtZSxcbiAgICAgIGlzdGlvVmVyc2lvbjogaXRlbS5zZXJ2aWNlTWVzaElzdGlvVmVyc2lvbixcbiAgICB9O1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLmNsb3NlUG9wdXAoKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImFjbC1yZXNvdXJjZS1zZWxlY3RvclwiXG4gIFtuZ0NsYXNzXT1cInsgJ2FjbC1yZXNvdXJjZS1zZWxlY3Rvci0tYWN0aXZlJzogaXNBY3RpdmUgfVwiXG4gIChjbGljayk9XCJvcGVuUG9wdXAoKVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJhY2wtcmVzb3VyY2Utc2VsZWN0b3JfX2l0ZW0gcHJvamVjdFwiPlxuICAgIDxzcGFuIGNsYXNzPVwiaWNvbi13cmFwcGVyIHR3LWZsZXhcIj5cbiAgICAgIDxhdWktaWNvbiBpY29uPVwiYmljb2xvcjpwcm9qZWN0XCI+PC9hdWktaWNvbj5cbiAgICA8L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJ3aXRoLWNvbG9uXCI+XG4gICAgICB7eyAncHJvamVjdCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJzZWxlY3RlZC1uYW1lIHRleHQtdHJ1bmNhdGVcIj57eyB2YWx1ZS5wcm9qZWN0IH19PC9zcGFuPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgICpuZ0lmPVwiZGlzcGxheVNlcnZpY2VNZXNoXCJcbiAgICBjbGFzcz1cImFjbC1yZXNvdXJjZS1zZWxlY3Rvcl9faXRlbSBuYW1lc3BhY2VcIlxuICA+XG4gICAgPHNwYW4gY2xhc3M9XCJpY29uLXdyYXBwZXJcIj5cbiAgICAgIDxhdWktaWNvbiBpY29uPVwiYmljb2xvcjpzZXJ2aWNlX21lc2hcIj48L2F1aS1pY29uPlxuICAgIDwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cIndpdGgtY29sb25cIj4ge3sgJ3NlcnZpY2VfbWVzaCcgfCB0cmFuc2xhdGUgfX0gPC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0ZWQtbmFtZSB0ZXh0LXRydW5jYXRlXCJcbiAgICAgID57eyB2YWx1ZS5zZXJ2aWNlbWVzaCB9fVxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZhbHVlLmlzdGlvVmVyc2lvbiBhcyBpc3Rpb1ZlcnNpb25cIlxuICAgICAgICA+KElzdGlvIHt7IGlzdGlvVmVyc2lvbiB9fSk8L25nLWNvbnRhaW5lclxuICAgICAgPlxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJhY2wtcmVzb3VyY2Utc2VsZWN0b3JfX2l0ZW0gbmFtZXNwYWNlXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJpY29uLXdyYXBwZXJcIj5cbiAgICAgIDxhdWktaWNvbiBpY29uPVwiYmljb2xvcjpuYW1lc3BhY2VcIj48L2F1aS1pY29uPlxuICAgIDwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cIndpdGgtY29sb25cIj5cbiAgICAgIHt7ICduYW1lc3BhY2UnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0ZWQtbmFtZSB0ZXh0LXRydW5jYXRlXCJcbiAgICAgID57eyB2YWx1ZS5uYW1lIH19ICg8c3BhbiBjbGFzcz1cIndpdGgtY29sb25cIj5cbiAgICAgICAge3sgJ2NsdXN0ZXInIHwgdHJhbnNsYXRlIH19IDwvc3BhblxuICAgICAgPnt7IHZhbHVlLmNsdXN0ZXIgfX0pXG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImFjbC1yZXNvdXJjZS1zZWxlY3Rvcl9fYXJyb3dcIj5cbiAgICA8YXVpLWljb24gaWNvbj1cImNhcmV0X2Rvd25fc1wiPjwvYXVpLWljb24+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjcG9wdXA+XG4gIDxhY2wtbmFtZXNwYWNlLWxpc3RcbiAgICBbY29udGV4dF09XCIncG9wdXAnXCJcbiAgICBbZmllbGRzXT1cImZpZWxkcyB8fCBkaXNwbGF5RmllbGRzXCJcbiAgICAoc2VsZWN0SXRlbSk9XCJvblNlbGVjdCgkZXZlbnQpXCJcbiAgICBbZGlzYWJsZUZuXT1cImRpc2FibGVGblwiXG4gICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICBbZGlzcGxheVNlcnZpY2VNZXNoXT1cImRpc3BsYXlTZXJ2aWNlTWVzaFwiXG4gICAgKGNsdXN0ZXJDaGFuZ2UpPVwiY2x1c3RlckNoYW5nZS5lbWl0KCRldmVudClcIlxuICAgIChwcm9qZWN0Q2hhbmdlKT1cInByb2plY3RDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgPjwvYWNsLW5hbWVzcGFjZS1saXN0PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2J1c2luZXNzL3Jlc291cmNlLXNlbGVjdC9leHBvcnRzL25hbWVzcGFjZS1zZWxlY3Rvci9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvYnVzaW5lc3MvcmVzb3VyY2Utc2VsZWN0L2V4cG9ydHMvbmFtZXNwYWNlLXNlbGVjdG9yL3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV0RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN0RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFckUsT0FBTyxFQUNMLGlCQUFpQixHQUlsQixNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7SUNBakIsNkJBQ0c7SUFBQSxZQUEwQjs7OztJQUExQixjQUEwQjtJQUExQixzREFBMEI7OztJQVAvQixBQUpGLDhCQUdDLGNBQzRCO0lBQ3pCLCtCQUFpRDtJQUNuRCxpQkFBTztJQUNQLCtCQUF5QjtJQUFDLFlBQWlDOztJQUFBLGlCQUFPO0lBQ2xFLCtCQUNHO0lBQUEsWUFDRDtJQUFBLG9HQUNHO0lBR1AsQUFERSxpQkFBTyxFQUNIOzs7SUFQc0IsZUFBaUM7SUFBakMscUVBQWlDO0lBRXhELGVBQ0Q7SUFEQyxz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SVAsYUFBYTtrQkFEWixNQUFNO1lBSVAsV0FBVztrQkFEVixNQUFNOztrRkF0QkksMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEF1dGhvcml6YXRpb25TdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9hdXRob3JpemF0aW9uL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgSzhzVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2VzL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgUmVzb3VyY2VTZWxlY3RvclBvcHVwUmVmIH0gZnJvbSAnLi4vLi4vaW50ZXJuYWxzL3NlbGVjdG9yLXBvcHVwL3JlZic7XG5pbXBvcnQgeyBSZXNvdXJjZVNlbGVjdG9yUG9wdXBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaW50ZXJuYWxzL3NlbGVjdG9yLXBvcHVwL3NlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0V29ya3NwYWNlUGFyYW1zLCBzZXRXb3Jrc3BhY2VQYXJhbXMgfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbmltcG9ydCB7XG4gIENvbmZpZ3VyYWJsZUZpZWxkLFxuICBEYXRhSXRlbUJhc2UsXG4gIERpc2FibGVGbixcbiAgU2VsZWN0ZWROYW1lc3BhY2VWYWx1ZSxcbn0gZnJvbSAnLi8uLi8uLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjbC1uYW1lc3BhY2Utc2VsZWN0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vdGVtcGxhdGUuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuLy4uL2NsdXN0ZXItc2VsZWN0b3Ivc3R5bGUuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmFtZXNwYWNlU2VsZWN0b3JDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZCgncG9wdXAnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwb3B1cFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVGbjogRGlzYWJsZUZuO1xuXG4gIEBJbnB1dCgpXG4gIHZhbHVlOiBTZWxlY3RlZE5hbWVzcGFjZVZhbHVlO1xuXG4gIEBJbnB1dCgpXG4gIGZpZWxkczogQ29uZmlndXJhYmxlRmllbGRbXTtcblxuICBASW5wdXQoKVxuICBkaXNwbGF5U2VydmljZU1lc2ggPSBmYWxzZTtcblxuICBAT3V0cHV0KClcbiAgY2x1c3RlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwcm9qZWN0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3RlZE5hbWVzcGFjZVZhbHVlPigpO1xuXG4gIGRpc3BsYXlGaWVsZHM6IENvbmZpZ3VyYWJsZUZpZWxkW10gPSBbXG4gICAgQ29uZmlndXJhYmxlRmllbGQuQ2x1c3RlcixcbiAgICBDb25maWd1cmFibGVGaWVsZC5UaW1lLFxuICBdO1xuXG4gIGlzQWN0aXZlID0gZmFsc2U7XG5cbiAgcG9wdXBSZWY6IFJlc291cmNlU2VsZWN0b3JQb3B1cFJlZjtcblxuICBsb2FkaW5nID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvcHVwU2VydmljZTogUmVzb3VyY2VTZWxlY3RvclBvcHVwU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgazhzVXRpbDogSzhzVXRpbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdXRoOiBBdXRob3JpemF0aW9uU3RhdGVTZXJ2aWNlLFxuICApIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGVtYWlsID0gdGhpcy5hdXRoLnBheWxvYWRTbmFwc2hvdD8uZW1haWw7XG4gICAgY29uc3QgcGFyYW1zID0gZ2V0V29ya3NwYWNlUGFyYW1zKGVtYWlsKTtcbiAgICBpZiAodGhpcy52YWx1ZSAmJiAhcGFyYW1zKSB7XG4gICAgICBzZXRXb3Jrc3BhY2VQYXJhbXModGhpcy52YWx1ZSwgZW1haWwpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5Qb3B1cCgpIHtcbiAgICBpZiAodGhpcy5pc0FjdGl2ZSkge1xuICAgICAgdGhpcy5jbG9zZVBvcHVwKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNBY3RpdmUgPSB0cnVlO1xuICAgICAgdGhpcy5wb3B1cFJlZiA9IHRoaXMucG9wdXBTZXJ2aWNlLm9wZW4oe1xuICAgICAgICBvcmlnaW46IHRoaXMuZWxlbWVudFJlZixcbiAgICAgICAgY29udGVudDogdGhpcy5wb3B1cFRlbXBsYXRlLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnBvcHVwUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlUG9wdXAoKSB7XG4gICAgdGhpcy5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMucG9wdXBSZWYuY2xvc2UoKTtcbiAgfVxuXG4gIG9uU2VsZWN0KGl0ZW06IERhdGFJdGVtQmFzZSkge1xuICAgIHRoaXMudmFsdWUgPSB7XG4gICAgICBwcm9qZWN0OiB0aGlzLms4c1V0aWwuZ2V0TGFiZWwoaXRlbS5fX29yaWdpbiwgJ3Byb2plY3QnKSxcbiAgICAgIGNsdXN0ZXI6IGl0ZW0uY2x1c3RlcixcbiAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcbiAgICAgIHNlcnZpY2VtZXNoOiBpdGVtLnNlcnZpY2VNZXNoTmFtZSxcbiAgICAgIGlzdGlvVmVyc2lvbjogaXRlbS5zZXJ2aWNlTWVzaElzdGlvVmVyc2lvbixcbiAgICB9O1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLmNsb3NlUG9wdXAoKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImFjbC1yZXNvdXJjZS1zZWxlY3RvclwiXG4gIFtuZ0NsYXNzXT1cInsgJ2FjbC1yZXNvdXJjZS1zZWxlY3Rvci0tYWN0aXZlJzogaXNBY3RpdmUgfVwiXG4gIChjbGljayk9XCJvcGVuUG9wdXAoKVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJhY2wtcmVzb3VyY2Utc2VsZWN0b3JfX2l0ZW0gcHJvamVjdFwiPlxuICAgIDxzcGFuIGNsYXNzPVwiaWNvbi13cmFwcGVyIHR3LWZsZXhcIj5cbiAgICAgIDxhdWktaWNvbiBpY29uPVwiYmljb2xvcjpwcm9qZWN0XCI+PC9hdWktaWNvbj5cbiAgICA8L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJ3aXRoLWNvbG9uXCI+XG4gICAgICB7eyAncHJvamVjdCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJzZWxlY3RlZC1uYW1lIHRleHQtdHJ1bmNhdGVcIj57eyB2YWx1ZT8ucHJvamVjdCB9fTwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICAqbmdJZj1cImRpc3BsYXlTZXJ2aWNlTWVzaFwiXG4gICAgY2xhc3M9XCJhY2wtcmVzb3VyY2Utc2VsZWN0b3JfX2l0ZW0gbmFtZXNwYWNlXCJcbiAgPlxuICAgIDxzcGFuIGNsYXNzPVwiaWNvbi13cmFwcGVyXCI+XG4gICAgICA8YXVpLWljb24gaWNvbj1cImJpY29sb3I6c2VydmljZV9tZXNoXCI+PC9hdWktaWNvbj5cbiAgICA8L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJ3aXRoLWNvbG9uXCI+IHt7ICdzZXJ2aWNlX21lc2gnIHwgdHJhbnNsYXRlIH19IDwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cInNlbGVjdGVkLW5hbWUgdGV4dC10cnVuY2F0ZVwiXG4gICAgICA+e3sgdmFsdWU/LnNlcnZpY2VtZXNoIH19XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmFsdWU/LmlzdGlvVmVyc2lvbiBhcyBpc3Rpb1ZlcnNpb25cIlxuICAgICAgICA+KElzdGlvIHt7IGlzdGlvVmVyc2lvbiB9fSk8L25nLWNvbnRhaW5lclxuICAgICAgPlxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJhY2wtcmVzb3VyY2Utc2VsZWN0b3JfX2l0ZW0gbmFtZXNwYWNlXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJpY29uLXdyYXBwZXJcIj5cbiAgICAgIDxhdWktaWNvbiBpY29uPVwiYmljb2xvcjpuYW1lc3BhY2VcIj48L2F1aS1pY29uPlxuICAgIDwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cIndpdGgtY29sb25cIj5cbiAgICAgIHt7ICduYW1lc3BhY2UnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0ZWQtbmFtZSB0ZXh0LXRydW5jYXRlXCJcbiAgICAgID57eyB2YWx1ZT8ubmFtZSB9fSAoPHNwYW4gY2xhc3M9XCJ3aXRoLWNvbG9uXCI+XG4gICAgICAgIHt7ICdjbHVzdGVyJyB8IHRyYW5zbGF0ZSB9fSA8L3NwYW5cbiAgICAgID57eyB2YWx1ZT8uY2x1c3RlciB9fSlcbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYWNsLXJlc291cmNlLXNlbGVjdG9yX19hcnJvd1wiPlxuICAgIDxhdWktaWNvbiBpY29uPVwiY2FyZXRfZG93bl9zXCI+PC9hdWktaWNvbj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNwb3B1cD5cbiAgPGFjbC1uYW1lc3BhY2UtbGlzdFxuICAgIFtjb250ZXh0XT1cIidwb3B1cCdcIlxuICAgIFtmaWVsZHNdPVwiZmllbGRzIHx8IGRpc3BsYXlGaWVsZHNcIlxuICAgIChzZWxlY3RJdGVtKT1cIm9uU2VsZWN0KCRldmVudClcIlxuICAgIFtkaXNhYmxlRm5dPVwiZGlzYWJsZUZuXCJcbiAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgIFtkaXNwbGF5U2VydmljZU1lc2hdPVwiZGlzcGxheVNlcnZpY2VNZXNoXCJcbiAgICAoY2x1c3RlckNoYW5nZSk9XCJjbHVzdGVyQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgKHByb2plY3RDaGFuZ2UpPVwicHJvamVjdENoYW5nZS5lbWl0KCRldmVudClcIlxuICA+PC9hY2wtbmFtZXNwYWNlLWxpc3Q+XG48L25nLXRlbXBsYXRlPlxuIl19