@wavemaker/app-ng-runtime 11.14.1-rc.6311 → 11.14.2-rc.242

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 (407) hide show
  1. package/components/advanced/carousel/bundles/index.umd.js +15 -1
  2. package/components/advanced/carousel/carousel.directive.d.ts +1 -0
  3. package/components/advanced/carousel/esm2022/carousel.directive.mjs +16 -2
  4. package/components/advanced/carousel/fesm2022/index.mjs +15 -1
  5. package/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
  6. package/components/advanced/login/bundles/index.umd.js +24 -3
  7. package/components/advanced/login/esm2022/login.component.mjs +25 -4
  8. package/components/advanced/login/fesm2022/index.mjs +24 -3
  9. package/components/advanced/login/fesm2022/index.mjs.map +1 -1
  10. package/components/advanced/login/login.component.d.ts +5 -2
  11. package/components/base/bundles/index.umd.js +323 -28
  12. package/components/base/directives/show-in-device.directive.d.ts +2 -1
  13. package/components/base/esm2022/directives/show-in-device.directive.mjs +22 -4
  14. package/components/base/esm2022/pipes/custom-pipes.mjs +1 -1
  15. package/components/base/esm2022/utils/widget-utils.mjs +3 -3
  16. package/components/base/esm2022/widgets/common/base/base-container.component.mjs +27 -1
  17. package/components/base/esm2022/widgets/common/base/base-field-validations.mjs +18 -1
  18. package/components/base/esm2022/widgets/common/base/base.component.mjs +68 -7
  19. package/components/base/esm2022/widgets/common/base/custom-widget-container.directive.mjs +9 -1
  20. package/components/base/esm2022/widgets/common/base/dataset-aware-nav.component.mjs +44 -11
  21. package/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +20 -1
  22. package/components/base/esm2022/widgets/common/item-template/item-template.directive.mjs +26 -1
  23. package/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +44 -4
  24. package/components/base/esm2022/widgets/common/partial-param/partial-param.directive.mjs +16 -1
  25. package/components/base/esm2022/widgets/common/pull-to-refresh/pull-to-refresh.mjs +22 -1
  26. package/components/base/esm2022/widgets/framework/property-change-handler.mjs +7 -2
  27. package/components/base/esm2022/widgets/framework/widget-proxy-provider.mjs +5 -3
  28. package/components/base/esm2022/widgets/framework/widget-registry.mjs +6 -3
  29. package/components/base/fesm2022/index.mjs +319 -26
  30. package/components/base/fesm2022/index.mjs.map +1 -1
  31. package/components/base/widgets/common/base/base-container.component.d.ts +3 -2
  32. package/components/base/widgets/common/base/base-field-validations.d.ts +1 -0
  33. package/components/base/widgets/common/base/custom-widget-container.directive.d.ts +3 -2
  34. package/components/base/widgets/common/base/dataset-aware-nav.component.d.ts +6 -2
  35. package/components/base/widgets/common/base/partial-container.directive.d.ts +3 -2
  36. package/components/base/widgets/common/item-template/item-template.directive.d.ts +3 -2
  37. package/components/base/widgets/common/lazy-load/lazy-load.directive.d.ts +1 -1
  38. package/components/base/widgets/common/partial-param/partial-param.directive.d.ts +3 -2
  39. package/components/base/widgets/common/pull-to-refresh/pull-to-refresh.d.ts +3 -2
  40. package/components/basic/anchor/bundles/index.umd.js +13 -1
  41. package/components/basic/anchor/esm2022/anchor.component.mjs +14 -2
  42. package/components/basic/anchor/fesm2022/index.mjs +13 -1
  43. package/components/basic/anchor/fesm2022/index.mjs.map +1 -1
  44. package/components/basic/html/bundles/index.umd.js +13 -1
  45. package/components/basic/html/esm2022/html.directive.mjs +14 -2
  46. package/components/basic/html/fesm2022/index.mjs +13 -1
  47. package/components/basic/html/fesm2022/index.mjs.map +1 -1
  48. package/components/basic/label/bundles/index.umd.js +17 -1
  49. package/components/basic/label/esm2022/label.directive.mjs +18 -2
  50. package/components/basic/label/fesm2022/index.mjs +17 -1
  51. package/components/basic/label/fesm2022/index.mjs.map +1 -1
  52. package/components/basic/label/label.directive.d.ts +3 -2
  53. package/components/basic/progress/progress-circle/bundles/index.umd.js +10 -0
  54. package/components/basic/progress/progress-circle/esm2022/progress-circle.component.mjs +11 -1
  55. package/components/basic/progress/progress-circle/fesm2022/index.mjs +10 -0
  56. package/components/basic/progress/progress-circle/fesm2022/index.mjs.map +1 -1
  57. package/components/basic/progress/progress-circle/progress-circle.component.d.ts +3 -2
  58. package/components/basic/search/bundles/index.umd.js +27 -1
  59. package/components/basic/search/esm2022/scrollable.directive.mjs +11 -2
  60. package/components/basic/search/esm2022/search.component.mjs +18 -1
  61. package/components/basic/search/fesm2022/index.mjs +27 -1
  62. package/components/basic/search/fesm2022/index.mjs.map +1 -1
  63. package/components/basic/search/scrollable.directive.d.ts +4 -2
  64. package/components/basic/search/search.component.d.ts +3 -2
  65. package/components/basic/spinner/bundles/index.umd.js +9 -1
  66. package/components/basic/spinner/esm2022/spinner.component.mjs +10 -2
  67. package/components/basic/spinner/fesm2022/index.mjs +9 -1
  68. package/components/basic/spinner/fesm2022/index.mjs.map +1 -1
  69. package/components/basic/spinner/spinner.component.d.ts +4 -2
  70. package/components/chart/bundles/index.umd.js +21 -3
  71. package/components/chart/esm2022/chart.component.mjs +22 -4
  72. package/components/chart/fesm2022/index.mjs +21 -3
  73. package/components/chart/fesm2022/index.mjs.map +1 -1
  74. package/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +3 -2
  75. package/components/containers/accordion/accordion.directive.d.ts +5 -2
  76. package/components/containers/accordion/bundles/index.umd.js +49 -2
  77. package/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +10 -1
  78. package/components/containers/accordion/esm2022/accordion.directive.mjs +41 -3
  79. package/components/containers/accordion/fesm2022/index.mjs +49 -2
  80. package/components/containers/accordion/fesm2022/index.mjs.map +1 -1
  81. package/components/containers/panel/bundles/index.umd.js +13 -0
  82. package/components/containers/panel/esm2022/panel.component.mjs +14 -1
  83. package/components/containers/panel/fesm2022/index.mjs +13 -0
  84. package/components/containers/panel/fesm2022/index.mjs.map +1 -1
  85. package/components/containers/panel/panel.component.d.ts +3 -2
  86. package/components/containers/tabs/bundles/index.umd.js +54 -2
  87. package/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +10 -1
  88. package/components/containers/tabs/esm2022/tabs.component.mjs +46 -3
  89. package/components/containers/tabs/fesm2022/index.mjs +54 -2
  90. package/components/containers/tabs/fesm2022/index.mjs.map +1 -1
  91. package/components/containers/tabs/tab-pane/tab-pane.component.d.ts +3 -2
  92. package/components/containers/tabs/tabs.component.d.ts +5 -2
  93. package/components/containers/wizard/bundles/index.umd.js +47 -3
  94. package/components/containers/wizard/esm2022/wizard-step/wizard-step.component.mjs +16 -3
  95. package/components/containers/wizard/esm2022/wizard.component.mjs +33 -2
  96. package/components/containers/wizard/fesm2022/index.mjs +47 -3
  97. package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
  98. package/components/containers/wizard/wizard-step/wizard-step.component.d.ts +3 -2
  99. package/components/containers/wizard/wizard.component.d.ts +4 -2
  100. package/components/data/card/bundles/index.umd.js +17 -1
  101. package/components/data/card/card-content/card-content.component.d.ts +3 -2
  102. package/components/data/card/card.component.d.ts +4 -2
  103. package/components/data/card/esm2022/card-content/card-content.component.mjs +6 -1
  104. package/components/data/card/esm2022/card.component.mjs +13 -2
  105. package/components/data/card/fesm2022/index.mjs +17 -1
  106. package/components/data/card/fesm2022/index.mjs.map +1 -1
  107. package/components/data/form/bundles/index.umd.js +92 -0
  108. package/components/data/form/esm2022/form-action/form-action.directive.mjs +7 -1
  109. package/components/data/form/esm2022/form-field/form-field.directive.mjs +28 -1
  110. package/components/data/form/esm2022/form-widget.directive.mjs +8 -1
  111. package/components/data/form/esm2022/form.component.mjs +27 -1
  112. package/components/data/form/esm2022/live-actions/live-actions.directive.mjs +7 -1
  113. package/components/data/form/esm2022/live-filter/live-filter.directive.mjs +12 -1
  114. package/components/data/form/esm2022/live-form/live-form.directive.mjs +10 -1
  115. package/components/data/form/fesm2022/index.mjs +92 -0
  116. package/components/data/form/fesm2022/index.mjs.map +1 -1
  117. package/components/data/form/form-action/form-action.directive.d.ts +3 -2
  118. package/components/data/form/form-field/form-field.directive.d.ts +3 -2
  119. package/components/data/form/form-widget.directive.d.ts +3 -2
  120. package/components/data/form/live-actions/live-actions.directive.d.ts +3 -1
  121. package/components/data/form/live-filter/live-filter.directive.d.ts +3 -1
  122. package/components/data/form/live-form/live-form.directive.d.ts +3 -1
  123. package/components/data/list/bundles/index.umd.js +180 -17
  124. package/components/data/list/esm2022/list-item.directive.mjs +95 -11
  125. package/components/data/list/esm2022/list.component.mjs +87 -8
  126. package/components/data/list/fesm2022/index.mjs +180 -17
  127. package/components/data/list/fesm2022/index.mjs.map +1 -1
  128. package/components/data/list/list-item.directive.d.ts +7 -2
  129. package/components/data/list/list.component.d.ts +3 -0
  130. package/components/data/live-table/bundles/index.umd.js +13 -1
  131. package/components/data/live-table/esm2022/live-table.component.mjs +14 -2
  132. package/components/data/live-table/fesm2022/index.mjs +13 -1
  133. package/components/data/live-table/fesm2022/index.mjs.map +1 -1
  134. package/components/data/live-table/live-table.component.d.ts +4 -2
  135. package/components/data/pagination/bundles/index.umd.js +57 -4
  136. package/components/data/pagination/esm2022/pagination.component.mjs +58 -5
  137. package/components/data/pagination/fesm2022/index.mjs +57 -4
  138. package/components/data/pagination/fesm2022/index.mjs.map +1 -1
  139. package/components/data/pagination/pagination.component.d.ts +4 -2
  140. package/components/data/table/bundles/index.umd.js +311 -12
  141. package/components/data/table/esm2022/table-action/table-action.directive.mjs +8 -1
  142. package/components/data/table/esm2022/table-column/table-column.directive.mjs +107 -3
  143. package/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +9 -1
  144. package/components/data/table/esm2022/table-cud.directive.mjs +8 -2
  145. package/components/data/table/esm2022/table-filter.directive.mjs +12 -2
  146. package/components/data/table/esm2022/table-row/table-row.directive.mjs +8 -1
  147. package/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +8 -1
  148. package/components/data/table/esm2022/table.component.mjs +159 -9
  149. package/components/data/table/fesm2022/index.mjs +311 -12
  150. package/components/data/table/fesm2022/index.mjs.map +1 -1
  151. package/components/data/table/table-action/table-action.directive.d.ts +3 -2
  152. package/components/data/table/table-column/table-column.directive.d.ts +3 -2
  153. package/components/data/table/table-column-group/table-column-group.directive.d.ts +3 -2
  154. package/components/data/table/table-cud.directive.d.ts +3 -1
  155. package/components/data/table/table-filter.directive.d.ts +3 -1
  156. package/components/data/table/table-row/table-row.directive.d.ts +3 -2
  157. package/components/data/table/table-row-action/table-row-action.directive.d.ts +3 -2
  158. package/components/data/table/table.component.d.ts +2 -2
  159. package/components/dialogs/alert-dialog/alert-dialog.component.d.ts +3 -2
  160. package/components/dialogs/alert-dialog/bundles/index.umd.js +5 -0
  161. package/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +6 -1
  162. package/components/dialogs/alert-dialog/fesm2022/index.mjs +5 -0
  163. package/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
  164. package/components/dialogs/confirm-dialog/bundles/index.umd.js +5 -0
  165. package/components/dialogs/confirm-dialog/confirm-dialog.component.d.ts +3 -2
  166. package/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +6 -1
  167. package/components/dialogs/confirm-dialog/fesm2022/index.mjs +5 -0
  168. package/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
  169. package/components/dialogs/default/bundles/index.umd.js +15 -2
  170. package/components/dialogs/default/dialog-body/dialog-body.directive.d.ts +4 -2
  171. package/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +16 -3
  172. package/components/dialogs/default/fesm2022/index.mjs +15 -2
  173. package/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  174. package/components/dialogs/design-dialog/bundles/index.umd.js +7 -0
  175. package/components/dialogs/design-dialog/dialog.component.d.ts +3 -2
  176. package/components/dialogs/design-dialog/esm2022/dialog.component.mjs +8 -1
  177. package/components/dialogs/design-dialog/fesm2022/index.mjs +7 -0
  178. package/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
  179. package/components/dialogs/iframe-dialog/bundles/index.umd.js +5 -0
  180. package/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +6 -1
  181. package/components/dialogs/iframe-dialog/fesm2022/index.mjs +5 -0
  182. package/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
  183. package/components/dialogs/iframe-dialog/iframe-dialog.component.d.ts +3 -2
  184. package/components/dialogs/partial-dialog/bundles/index.umd.js +23 -3
  185. package/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +24 -4
  186. package/components/dialogs/partial-dialog/fesm2022/index.mjs +23 -3
  187. package/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
  188. package/components/dialogs/partial-dialog/partial-dialog.component.d.ts +4 -2
  189. package/components/input/base-form/base-form.component.d.ts +4 -2
  190. package/components/input/base-form/bundles/index.umd.js +16 -2
  191. package/components/input/base-form/esm2022/base-form.component.mjs +17 -3
  192. package/components/input/base-form/fesm2022/index.mjs +16 -2
  193. package/components/input/base-form/fesm2022/index.mjs.map +1 -1
  194. package/components/input/base-form-custom/base-form-custom.component.d.ts +3 -2
  195. package/components/input/base-form-custom/bundles/index.umd.js +13 -2
  196. package/components/input/base-form-custom/esm2022/base-form-custom.component.mjs +14 -3
  197. package/components/input/base-form-custom/fesm2022/index.mjs +13 -2
  198. package/components/input/base-form-custom/fesm2022/index.mjs.map +1 -1
  199. package/components/input/checkbox/bundles/index.umd.js +7 -0
  200. package/components/input/checkbox/checkbox.component.d.ts +3 -2
  201. package/components/input/checkbox/esm2022/checkbox.component.mjs +8 -1
  202. package/components/input/checkbox/fesm2022/index.mjs +7 -0
  203. package/components/input/checkbox/fesm2022/index.mjs.map +1 -1
  204. package/components/input/checkboxset/bundles/index.umd.js +18 -2
  205. package/components/input/checkboxset/checkboxset.component.d.ts +4 -2
  206. package/components/input/checkboxset/esm2022/checkboxset.component.mjs +19 -3
  207. package/components/input/checkboxset/fesm2022/index.mjs +18 -2
  208. package/components/input/checkboxset/fesm2022/index.mjs.map +1 -1
  209. package/components/input/chips/bundles/index.umd.js +45 -5
  210. package/components/input/chips/chips.component.d.ts +3 -2
  211. package/components/input/chips/esm2022/chips.component.mjs +46 -6
  212. package/components/input/chips/fesm2022/index.mjs +45 -5
  213. package/components/input/chips/fesm2022/index.mjs.map +1 -1
  214. package/components/input/color-picker/bundles/index.umd.js +8 -0
  215. package/components/input/color-picker/color-picker.component.d.ts +3 -2
  216. package/components/input/color-picker/esm2022/color-picker.component.mjs +9 -1
  217. package/components/input/color-picker/fesm2022/index.mjs +8 -0
  218. package/components/input/color-picker/fesm2022/index.mjs.map +1 -1
  219. package/components/input/composite/bundles/index.umd.js +10 -1
  220. package/components/input/composite/composite.directive.d.ts +3 -2
  221. package/components/input/composite/esm2022/composite.directive.mjs +11 -2
  222. package/components/input/composite/fesm2022/index.mjs +10 -1
  223. package/components/input/composite/fesm2022/index.mjs.map +1 -1
  224. package/components/input/currency/bundles/index.umd.js +7 -0
  225. package/components/input/currency/currency.component.d.ts +3 -2
  226. package/components/input/currency/esm2022/currency.component.mjs +8 -1
  227. package/components/input/currency/fesm2022/index.mjs +7 -0
  228. package/components/input/currency/fesm2022/index.mjs.map +1 -1
  229. package/components/input/dataset-aware-form/bundles/index.umd.js +26 -2
  230. package/components/input/dataset-aware-form/esm2022/dataset-aware-form.component.mjs +27 -3
  231. package/components/input/dataset-aware-form/fesm2022/index.mjs +26 -2
  232. package/components/input/dataset-aware-form/fesm2022/index.mjs.map +1 -1
  233. package/components/input/epoch/date/bundles/index.umd.js +22 -0
  234. package/components/input/epoch/date/date.component.d.ts +1 -0
  235. package/components/input/epoch/date/esm2022/date.component.mjs +23 -1
  236. package/components/input/epoch/date/fesm2022/index.mjs +22 -0
  237. package/components/input/epoch/date/fesm2022/index.mjs.map +1 -1
  238. package/components/input/file-upload/bundles/index.umd.js +25 -8
  239. package/components/input/file-upload/esm2022/file-upload.component.mjs +26 -9
  240. package/components/input/file-upload/fesm2022/index.mjs +25 -8
  241. package/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  242. package/components/input/file-upload/file-upload.component.d.ts +3 -0
  243. package/components/input/number/bundles/index.umd.js +8 -0
  244. package/components/input/number/esm2022/number.component.mjs +9 -1
  245. package/components/input/number/fesm2022/index.mjs +8 -0
  246. package/components/input/number/fesm2022/index.mjs.map +1 -1
  247. package/components/input/number/number.component.d.ts +3 -2
  248. package/components/input/radioset/bundles/index.umd.js +18 -2
  249. package/components/input/radioset/esm2022/radioset.component.mjs +19 -3
  250. package/components/input/radioset/fesm2022/index.mjs +18 -2
  251. package/components/input/radioset/fesm2022/index.mjs.map +1 -1
  252. package/components/input/radioset/radioset.component.d.ts +4 -2
  253. package/components/input/rating/bundles/index.umd.js +10 -0
  254. package/components/input/rating/esm2022/rating.component.mjs +11 -1
  255. package/components/input/rating/fesm2022/index.mjs +10 -0
  256. package/components/input/rating/fesm2022/index.mjs.map +1 -1
  257. package/components/input/rating/rating.component.d.ts +3 -2
  258. package/components/input/select/bundles/index.umd.js +6 -0
  259. package/components/input/select/esm2022/select.component.mjs +7 -1
  260. package/components/input/select/fesm2022/index.mjs +6 -0
  261. package/components/input/select/fesm2022/index.mjs.map +1 -1
  262. package/components/input/select/select.component.d.ts +3 -2
  263. package/components/input/slider/bundles/index.umd.js +10 -0
  264. package/components/input/slider/esm2022/slider.component.mjs +11 -1
  265. package/components/input/slider/fesm2022/index.mjs +10 -0
  266. package/components/input/slider/fesm2022/index.mjs.map +1 -1
  267. package/components/input/slider/slider.component.d.ts +3 -2
  268. package/components/input/switch/bundles/index.umd.js +22 -2
  269. package/components/input/switch/esm2022/switch.component.mjs +23 -3
  270. package/components/input/switch/fesm2022/index.mjs +22 -2
  271. package/components/input/switch/fesm2022/index.mjs.map +1 -1
  272. package/components/input/switch/switch.component.d.ts +3 -2
  273. package/components/input/text/bundles/index.umd.js +36 -0
  274. package/components/input/text/esm2022/input-calendar/input-calendar.component.mjs +8 -1
  275. package/components/input/text/esm2022/input-color/input-color.component.mjs +8 -1
  276. package/components/input/text/esm2022/input-email/input-email.component.mjs +8 -1
  277. package/components/input/text/esm2022/input-number/input-number.component.mjs +8 -1
  278. package/components/input/text/esm2022/input-text/input-text.component.mjs +9 -1
  279. package/components/input/text/fesm2022/index.mjs +36 -0
  280. package/components/input/text/fesm2022/index.mjs.map +1 -1
  281. package/components/input/text/input-calendar/input-calendar.component.d.ts +3 -2
  282. package/components/input/text/input-color/input-color.component.d.ts +3 -2
  283. package/components/input/text/input-email/input-email.component.d.ts +3 -2
  284. package/components/input/text/input-number/input-number.component.d.ts +3 -2
  285. package/components/input/text/input-text/input-text.component.d.ts +3 -2
  286. package/components/input/textarea/bundles/index.umd.js +7 -0
  287. package/components/input/textarea/esm2022/textarea.component.mjs +8 -1
  288. package/components/input/textarea/fesm2022/index.mjs +7 -0
  289. package/components/input/textarea/fesm2022/index.mjs.map +1 -1
  290. package/components/input/textarea/textarea.component.d.ts +3 -2
  291. package/components/navigation/menu/bundles/index.umd.js +55 -6
  292. package/components/navigation/menu/esm2022/menu-adapator.component.mjs +17 -3
  293. package/components/navigation/menu/esm2022/menu.component.mjs +10 -3
  294. package/components/navigation/menu/esm2022/nav/nav-item/nav-item.directive.mjs +6 -1
  295. package/components/navigation/menu/esm2022/nav/nav.component.mjs +11 -1
  296. package/components/navigation/menu/esm2022/nav/navigation-control.directive.mjs +16 -3
  297. package/components/navigation/menu/fesm2022/index.mjs +55 -6
  298. package/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  299. package/components/navigation/menu/menu-adapator.component.d.ts +4 -2
  300. package/components/navigation/menu/nav/nav-item/nav-item.directive.d.ts +3 -2
  301. package/components/navigation/menu/nav/nav.component.d.ts +3 -2
  302. package/components/navigation/menu/nav/navigation-control.directive.d.ts +4 -2
  303. package/components/navigation/navbar/bundles/index.umd.js +5 -0
  304. package/components/navigation/navbar/esm2022/navbar.component.mjs +6 -1
  305. package/components/navigation/navbar/fesm2022/index.mjs +5 -0
  306. package/components/navigation/navbar/fesm2022/index.mjs.map +1 -1
  307. package/components/navigation/navbar/navbar.component.d.ts +3 -2
  308. package/components/navigation/popover/bundles/index.umd.js +65 -13
  309. package/components/navigation/popover/esm2022/popover.component.mjs +63 -11
  310. package/components/navigation/popover/fesm2022/index.mjs +62 -10
  311. package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  312. package/components/navigation/popover/popover.component.d.ts +11 -3
  313. package/components/page/default/bundles/index.umd.js +20 -2
  314. package/components/page/default/esm2022/layout.directive.mjs +9 -1
  315. package/components/page/default/esm2022/page-content/page-content.component.mjs +13 -3
  316. package/components/page/default/fesm2022/index.mjs +20 -2
  317. package/components/page/default/fesm2022/index.mjs.map +1 -1
  318. package/components/page/default/layout.directive.d.ts +3 -2
  319. package/components/page/default/page-content/page-content.component.d.ts +3 -2
  320. package/components/page/left-panel/bundles/index.umd.js +16 -0
  321. package/components/page/left-panel/esm2022/left-panel.directive.mjs +17 -1
  322. package/components/page/left-panel/fesm2022/index.mjs +16 -0
  323. package/components/page/left-panel/fesm2022/index.mjs.map +1 -1
  324. package/components/page/left-panel/left-panel.directive.d.ts +3 -2
  325. package/components/page/top-nav/bundles/index.umd.js +2 -1
  326. package/components/page/top-nav/esm2022/top-nav.props.mjs +3 -2
  327. package/components/page/top-nav/fesm2022/index.mjs +2 -1
  328. package/components/page/top-nav/fesm2022/index.mjs.map +1 -1
  329. package/components/prefab/bundles/index.umd.js +4 -0
  330. package/components/prefab/esm2022/prefab.directive.mjs +5 -1
  331. package/components/prefab/fesm2022/index.mjs +4 -0
  332. package/components/prefab/fesm2022/index.mjs.map +1 -1
  333. package/core/bundles/index.umd.js +391 -94
  334. package/core/esm2022/public_api.mjs +3 -3
  335. package/core/esm2022/services/viewport.service.mjs +24 -10
  336. package/core/esm2022/types/types.mjs +1 -1
  337. package/core/esm2022/utils/dom.mjs +18 -2
  338. package/core/esm2022/utils/event-notifier.mjs +5 -2
  339. package/core/esm2022/utils/lru-cache.mjs +16 -2
  340. package/core/esm2022/utils/utils.mjs +6 -2
  341. package/core/esm2022/utils/watcher.mjs +323 -81
  342. package/core/fesm2022/index.mjs +390 -96
  343. package/core/fesm2022/index.mjs.map +1 -1
  344. package/core/public_api.d.ts +2 -2
  345. package/core/services/viewport.service.d.ts +5 -2
  346. package/core/types/types.d.ts +1 -0
  347. package/core/utils/lru-cache.d.ts +6 -0
  348. package/core/utils/utils.d.ts +1 -0
  349. package/core/utils/watcher.d.ts +26 -5
  350. package/http/bundles/index.umd.js +31 -1
  351. package/http/esm2022/http.service.mjs +32 -2
  352. package/http/fesm2022/index.mjs +31 -1
  353. package/http/fesm2022/index.mjs.map +1 -1
  354. package/http/http.service.d.ts +6 -2
  355. package/npm-shrinkwrap.json +2 -2
  356. package/oAuth/bundles/index.umd.js +9 -0
  357. package/oAuth/esm2022/oAuth.service.mjs +10 -1
  358. package/oAuth/fesm2022/index.mjs +9 -0
  359. package/oAuth/fesm2022/index.mjs.map +1 -1
  360. package/oAuth/oAuth.service.d.ts +3 -1
  361. package/package-lock.json +2 -2
  362. package/package.json +1 -1
  363. package/runtime/base/bundles/index.umd.js +364 -30
  364. package/runtime/base/components/app-component/app.component.d.ts +4 -0
  365. package/runtime/base/components/prefab-preview.component.d.ts +5 -2
  366. package/runtime/base/directives/accessroles.directive.d.ts +4 -3
  367. package/runtime/base/directives/prefab.directive.d.ts +3 -2
  368. package/runtime/base/esm2022/components/app-component/app.component.mjs +40 -9
  369. package/runtime/base/esm2022/components/base-custom-widget.component.mjs +33 -2
  370. package/runtime/base/esm2022/components/base-layout.component.mjs +7 -1
  371. package/runtime/base/esm2022/components/base-page.component.mjs +36 -3
  372. package/runtime/base/esm2022/components/base-partial.component.mjs +37 -3
  373. package/runtime/base/esm2022/components/base-prefab.component.mjs +32 -3
  374. package/runtime/base/esm2022/components/base-spa-page.component.mjs +37 -3
  375. package/runtime/base/esm2022/components/prefab-preview.component.mjs +23 -4
  376. package/runtime/base/esm2022/directives/accessroles.directive.mjs +11 -2
  377. package/runtime/base/esm2022/directives/prefab.directive.mjs +9 -1
  378. package/runtime/base/esm2022/services/app.manager.service.mjs +37 -10
  379. package/runtime/base/esm2022/services/app.service.mjs +34 -2
  380. package/runtime/base/esm2022/services/dynamic-component-ref-provider.service.mjs +4 -1
  381. package/runtime/base/esm2022/services/pipe-provider.service.mjs +7 -4
  382. package/runtime/base/esm2022/services/spinner.service.mjs +15 -1
  383. package/runtime/base/esm2022/util/fragment-monitor.mjs +23 -2
  384. package/runtime/base/fesm2022/index.mjs +365 -31
  385. package/runtime/base/fesm2022/index.mjs.map +1 -1
  386. package/runtime/base/services/app.manager.service.d.ts +6 -1
  387. package/runtime/base/services/app.service.d.ts +12 -2
  388. package/runtime/base/services/dynamic-component-ref-provider.service.d.ts +2 -1
  389. package/runtime/base/services/spinner.service.d.ts +3 -1
  390. package/runtime/base/util/fragment-monitor.d.ts +6 -0
  391. package/runtime/dynamic/bundles/index.umd.js +5 -0
  392. package/runtime/dynamic/esm2022/app/components/page-wrapper.component.mjs +6 -1
  393. package/runtime/dynamic/fesm2022/index.mjs +5 -0
  394. package/runtime/dynamic/fesm2022/index.mjs.map +1 -1
  395. package/scripts/datatable/datatable.js +100 -14
  396. package/security/bundles/index.umd.js +41 -2
  397. package/security/esm2022/security.service.mjs +42 -3
  398. package/security/fesm2022/index.mjs +41 -2
  399. package/security/fesm2022/index.mjs.map +1 -1
  400. package/security/security.service.d.ts +5 -2
  401. package/variables/bundles/index.umd.js +50 -6
  402. package/variables/esm2022/manager/action/notification-action.manager.mjs +18 -3
  403. package/variables/esm2022/manager/variable/base-variable.manager.mjs +15 -2
  404. package/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +13 -3
  405. package/variables/esm2022/service/variables.service.mjs +8 -2
  406. package/variables/fesm2022/index.mjs +50 -6
  407. package/variables/fesm2022/index.mjs.map +1 -1
@@ -24,6 +24,13 @@ export class TextareaComponent extends BaseInput {
24
24
  ngAfterViewChecked() {
25
25
  this.charlength = this.inputEl.nativeElement.value.length;
26
26
  }
27
+ ngOnDestroy() {
28
+ // MEMORY LEAK FIX: Clear ViewChild references
29
+ this.inputEl = null;
30
+ this.ngModel = null;
31
+ // Call parent ngOnDestroy
32
+ super.ngOnDestroy();
33
+ }
27
34
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextareaComponent, deps: [{ token: i0.Injector }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
28
35
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: TextareaComponent, isStandalone: true, selector: "wm-textarea", providers: [
29
36
  provideAs(TextareaComponent, NG_VALUE_ACCESSOR, true),
@@ -50,4 +57,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
50
57
  type: ViewChild,
51
58
  args: [NgModel]
52
59
  }] } });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2lucHV0L3RleHRhcmVhL3NyYy90ZXh0YXJlYS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvdGV4dGFyZWEvc3JjL3RleHRhcmVhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFtQixTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQUMsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBQyxTQUFTLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7O0FBRXRELE1BQU0sYUFBYSxHQUFHO0lBQ2xCLFVBQVUsRUFBRSxhQUFhO0lBQ3pCLFNBQVMsRUFBRSxtQkFBbUI7Q0FDakMsQ0FBQztBQWFGLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxTQUFTO2FBQ3JDLG9CQUFlLEdBQUcsYUFBYSxFQUFFLEFBQWxCLENBQW1CO0lBb0J6QyxZQUFZLEdBQWEsRUFBMEMsZUFBb0I7UUFDbkYsS0FBSyxDQUFDLEdBQUcsRUFBRSxhQUFhLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFOeEMsZUFBVSxHQUFXLENBQUMsQ0FBQztJQU85QixDQUFDO0lBRU0sYUFBYTtRQUNoQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDOUQsQ0FBQztJQUNELGtCQUFrQjtRQUNkLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUM1RCxDQUFDOytHQTlCTSxpQkFBaUIsMENBcUJTLGtCQUFrQjttR0FyQjVDLGlCQUFpQiwwREFOZjtZQUNQLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLENBQUM7WUFDckQsU0FBUyxDQUFDLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUM7WUFDakQsa0JBQWtCLENBQUMsaUJBQWlCLENBQUM7U0FDeEMsdUtBcUJVLE9BQU8sdUVDN0N0Qixpd0JBMEJBLDJDRFRjLFlBQVksaU5BQUUsV0FBVzs7NEZBUzFCLGlCQUFpQjtrQkFYN0IsU0FBUztpQ0FDTSxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLFlBQzFCLGFBQWEsYUFFWjt3QkFDUCxTQUFTLG9CQUFvQixpQkFBaUIsRUFBRSxJQUFJLENBQUM7d0JBQ3JELFNBQVMsb0JBQW9CLGFBQWEsRUFBRSxJQUFJLENBQUM7d0JBQ2pELGtCQUFrQixtQkFBbUI7cUJBQ3hDOzswQkF1QjJCLE1BQU07MkJBQUMsa0JBQWtCOzswQkFBRyxRQUFRO3lDQUh6QixPQUFPO3NCQUE3QyxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBQ2pCLE9BQU87c0JBQTFCLFNBQVM7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7QWZ0ZXJWaWV3Q2hlY2tlZCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIEluamVjdG9yLCBPcHRpb25hbCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IsIE5nTW9kZWx9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtwcm92aWRlQXMsIHByb3ZpZGVBc1dpZGdldFJlZn0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5cbmltcG9ydCB7cmVnaXN0ZXJQcm9wc30gZnJvbSAnLi90ZXh0YXJlYS5wcm9wcyc7XG5pbXBvcnQgeyBCYXNlSW5wdXQgfSBmcm9tICdAd20vY29tcG9uZW50cy9pbnB1dC90ZXh0JztcblxuY29uc3QgV0lER0VUX0NPTkZJRyA9IHtcbiAgICB3aWRnZXRUeXBlOiAnd20tdGV4dGFyZWEnLFxuICAgIGhvc3RDbGFzczogJ2FwcC1pbnB1dC13cmFwcGVyJ1xufTtcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZV0sXG4gICAgc2VsZWN0b3I6ICd3bS10ZXh0YXJlYScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RleHRhcmVhLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzKFRleHRhcmVhQ29tcG9uZW50LCBOR19WQUxVRV9BQ0NFU1NPUiwgdHJ1ZSksXG4gICAgICAgIHByb3ZpZGVBcyhUZXh0YXJlYUNvbXBvbmVudCwgTkdfVkFMSURBVE9SUywgdHJ1ZSksXG4gICAgICAgIHByb3ZpZGVBc1dpZGdldFJlZihUZXh0YXJlYUNvbXBvbmVudClcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRleHRhcmVhQ29tcG9uZW50IGV4dGVuZHMgQmFzZUlucHV0IGltcGxlbWVudHMgQWZ0ZXJWaWV3Q2hlY2tlZCB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcbiAgICBwdWJsaWMgcmVxdWlyZWQ6IGJvb2xlYW47XG4gICAgcHVibGljIG1heGNoYXJzOiBudW1iZXI7XG4gICAgcHVibGljIGRpc2FibGVkOiBib29sZWFuO1xuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG4gICAgcHVibGljIHJlYWRvbmx5OiBib29sZWFuO1xuICAgIHB1YmxpYyBjb25kaXRpb25hbGNsYXNzOiBhbnk7XG4gICAgcHVibGljIGNvbmRpdGlvbmFsc3R5bGU6IGFueTtcbiAgICBwdWJsaWMgdGFiaW5kZXg6IGFueTtcbiAgICBwdWJsaWMgcGxhY2Vob2xkZXI6IGFueTtcbiAgICBwdWJsaWMgc2hvcnRjdXRrZXk6IHN0cmluZztcbiAgICBwdWJsaWMgYXV0b2ZvY3VzOiBib29sZWFuO1xuICAgIHB1YmxpYyBoaW50OiBzdHJpbmc7XG4gICAgcHVibGljIGFyaWFsYWJlbDogc3RyaW5nO1xuICAgIHB1YmxpYyBsaW1pdGRpc3BsYXl0ZXh0OiBzdHJpbmc7XG4gICAgcHVibGljIGNoYXJsZW5ndGg6IG51bWJlciA9IDA7XG5cbiAgICBAVmlld0NoaWxkKCd0ZXh0YXJlYScsIHtzdGF0aWM6IHRydWV9KSBpbnB1dEVsOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoTmdNb2RlbCkgbmdNb2RlbDogTmdNb2RlbDtcblxuICAgIGNvbnN0cnVjdG9yKGluajogSW5qZWN0b3IsIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueSkge1xuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9DT05GSUcsIGV4cGxpY2l0Q29udGV4dCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uSW5wdXRDaGFuZ2UoKSB7XG4gICAgICAgIHRoaXMuY2hhcmxlbmd0aCA9IHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LnZhbHVlLmxlbmd0aDtcbiAgICB9XG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoYXJsZW5ndGggPSB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZS5sZW5ndGg7XG4gICAgICB9XG59XG4iLCI8dGV4dGFyZWEgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYXBwLXRleHRhcmVhXCJcbiAgZm9jdXMtdGFyZ2V0XG4gIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gIFsobmdNb2RlbCldPVwiZGF0YXZhbHVlXCJcbiAgW25nTW9kZWxPcHRpb25zXT1cIm5nTW9kZWxPcHRpb25zXCJcbiAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgW21heGxlbmd0aF09XCJtYXhjaGFyc1wiXG4gIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICBbYXR0ci5hY2Nlc3NrZXldPVwic2hvcnRjdXRrZXlcIlxuICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFsYWJlbFwiXG4gIGFyaWEtbXVsdGlsaW5lPVwidHJ1ZVwiXG4gIFthdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCJcbiAgW25nQ2xhc3NdPVwiY29uZGl0aW9uYWxjbGFzc1wiXG4gIFtuZ1N0eWxlXT1cImNvbmRpdGlvbmFsc3R5bGVcIlxuICAoYmx1cik9XCJoYW5kbGVCbHVyKCRldmVudClcIlxuICAoaW5wdXQpPVwib25JbnB1dENoYW5nZSgpXCJcbiAgKG5nTW9kZWxDaGFuZ2UpPVwiaGFuZGxlQ2hhbmdlKCRldmVudCk7IG9uSW5wdXRDaGFuZ2UoKTtcIlxuICAjdGV4dGFyZWFcbj48L3RleHRhcmVhPlxuXG5AaWYgKG1heGNoYXJzKSB7XG4gIDxkaXYgY2xhc3M9XCJ0ZXh0YXJlYS1jb3VudFwiICA+e3tsaW1pdGRpc3BsYXl0ZXh0fX08L2Rpdj5cbn1cbiJdfQ==
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2lucHV0L3RleHRhcmVhL3NyYy90ZXh0YXJlYS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvdGV4dGFyZWEvc3JjL3RleHRhcmVhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFtQixTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQWEsUUFBUSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUMsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBQyxTQUFTLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7O0FBRXRELE1BQU0sYUFBYSxHQUFHO0lBQ2xCLFVBQVUsRUFBRSxhQUFhO0lBQ3pCLFNBQVMsRUFBRSxtQkFBbUI7Q0FDakMsQ0FBQztBQWFGLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxTQUFTO2FBQ3JDLG9CQUFlLEdBQUcsYUFBYSxFQUFFLEFBQWxCLENBQW1CO0lBb0J6QyxZQUFZLEdBQWEsRUFBMEMsZUFBb0I7UUFDbkYsS0FBSyxDQUFDLEdBQUcsRUFBRSxhQUFhLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFOeEMsZUFBVSxHQUFXLENBQUMsQ0FBQztJQU85QixDQUFDO0lBRU0sYUFBYTtRQUNoQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDOUQsQ0FBQztJQUNELGtCQUFrQjtRQUNkLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUM1RCxDQUFDO0lBRUgsV0FBVztRQUNQLDhDQUE4QztRQUM5QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUVwQiwwQkFBMEI7UUFDMUIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7K0dBdkNRLGlCQUFpQiwwQ0FxQlMsa0JBQWtCO21HQXJCNUMsaUJBQWlCLDBEQU5mO1lBQ1AsU0FBUyxDQUFDLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLElBQUksQ0FBQztZQUNyRCxTQUFTLENBQUMsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQztZQUNqRCxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQztTQUN4Qyx1S0FxQlUsT0FBTyx1RUM3Q3RCLGl3QkEwQkEsMkNEVGMsWUFBWSxpTkFBRSxXQUFXOzs0RkFTMUIsaUJBQWlCO2tCQVg3QixTQUFTO2lDQUNNLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsWUFDMUIsYUFBYSxhQUVaO3dCQUNQLFNBQVMsb0JBQW9CLGlCQUFpQixFQUFFLElBQUksQ0FBQzt3QkFDckQsU0FBUyxvQkFBb0IsYUFBYSxFQUFFLElBQUksQ0FBQzt3QkFDakQsa0JBQWtCLG1CQUFtQjtxQkFDeEM7OzBCQXVCMkIsTUFBTTsyQkFBQyxrQkFBa0I7OzBCQUFHLFFBQVE7eUNBSHpCLE9BQU87c0JBQTdDLFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFDakIsT0FBTztzQkFBMUIsU0FBUzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtBZnRlclZpZXdDaGVja2VkLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdCwgSW5qZWN0b3IsIE9uRGVzdHJveSwgT3B0aW9uYWwsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBOZ01vZGVsfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7cHJvdmlkZUFzLCBwcm92aWRlQXNXaWRnZXRSZWZ9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuXG5pbXBvcnQge3JlZ2lzdGVyUHJvcHN9IGZyb20gJy4vdGV4dGFyZWEucHJvcHMnO1xuaW1wb3J0IHsgQmFzZUlucHV0IH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvaW5wdXQvdGV4dCc7XG5cbmNvbnN0IFdJREdFVF9DT05GSUcgPSB7XG4gICAgd2lkZ2V0VHlwZTogJ3dtLXRleHRhcmVhJyxcbiAgICBob3N0Q2xhc3M6ICdhcHAtaW5wdXQtd3JhcHBlcidcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGVdLFxuICAgIHNlbGVjdG9yOiAnd20tdGV4dGFyZWEnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90ZXh0YXJlYS5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVBcyhUZXh0YXJlYUNvbXBvbmVudCwgTkdfVkFMVUVfQUNDRVNTT1IsIHRydWUpLFxuICAgICAgICBwcm92aWRlQXMoVGV4dGFyZWFDb21wb25lbnQsIE5HX1ZBTElEQVRPUlMsIHRydWUpLFxuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoVGV4dGFyZWFDb21wb25lbnQpXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUZXh0YXJlYUNvbXBvbmVudCBleHRlbmRzIEJhc2VJbnB1dCBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveSB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcbiAgICBwdWJsaWMgcmVxdWlyZWQ6IGJvb2xlYW47XG4gICAgcHVibGljIG1heGNoYXJzOiBudW1iZXI7XG4gICAgcHVibGljIGRpc2FibGVkOiBib29sZWFuO1xuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG4gICAgcHVibGljIHJlYWRvbmx5OiBib29sZWFuO1xuICAgIHB1YmxpYyBjb25kaXRpb25hbGNsYXNzOiBhbnk7XG4gICAgcHVibGljIGNvbmRpdGlvbmFsc3R5bGU6IGFueTtcbiAgICBwdWJsaWMgdGFiaW5kZXg6IGFueTtcbiAgICBwdWJsaWMgcGxhY2Vob2xkZXI6IGFueTtcbiAgICBwdWJsaWMgc2hvcnRjdXRrZXk6IHN0cmluZztcbiAgICBwdWJsaWMgYXV0b2ZvY3VzOiBib29sZWFuO1xuICAgIHB1YmxpYyBoaW50OiBzdHJpbmc7XG4gICAgcHVibGljIGFyaWFsYWJlbDogc3RyaW5nO1xuICAgIHB1YmxpYyBsaW1pdGRpc3BsYXl0ZXh0OiBzdHJpbmc7XG4gICAgcHVibGljIGNoYXJsZW5ndGg6IG51bWJlciA9IDA7XG5cbiAgICBAVmlld0NoaWxkKCd0ZXh0YXJlYScsIHtzdGF0aWM6IHRydWV9KSBpbnB1dEVsOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoTmdNb2RlbCkgbmdNb2RlbDogTmdNb2RlbDtcblxuICAgIGNvbnN0cnVjdG9yKGluajogSW5qZWN0b3IsIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueSkge1xuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9DT05GSUcsIGV4cGxpY2l0Q29udGV4dCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uSW5wdXRDaGFuZ2UoKSB7XG4gICAgICAgIHRoaXMuY2hhcmxlbmd0aCA9IHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LnZhbHVlLmxlbmd0aDtcbiAgICB9XG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoYXJsZW5ndGggPSB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZS5sZW5ndGg7XG4gICAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBDbGVhciBWaWV3Q2hpbGQgcmVmZXJlbmNlc1xuICAgICAgICB0aGlzLmlucHV0RWwgPSBudWxsO1xuICAgICAgICB0aGlzLm5nTW9kZWwgPSBudWxsO1xuXG4gICAgICAgIC8vIENhbGwgcGFyZW50IG5nT25EZXN0cm95XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIiwiPHRleHRhcmVhIGNsYXNzPVwiZm9ybS1jb250cm9sIGFwcC10ZXh0YXJlYVwiXG4gIGZvY3VzLXRhcmdldFxuICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICBbKG5nTW9kZWwpXT1cImRhdGF2YWx1ZVwiXG4gIFtuZ01vZGVsT3B0aW9uc109XCJuZ01vZGVsT3B0aW9uc1wiXG4gIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFttYXhsZW5ndGhdPVwibWF4Y2hhcnNcIlxuICBbYXR0ci50YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgW2F0dHIuYWNjZXNza2V5XT1cInNob3J0Y3V0a2V5XCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhbGFiZWxcIlxuICBhcmlhLW11bHRpbGluZT1cInRydWVcIlxuICBbYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gIFtuZ0NsYXNzXT1cImNvbmRpdGlvbmFsY2xhc3NcIlxuICBbbmdTdHlsZV09XCJjb25kaXRpb25hbHN0eWxlXCJcbiAgKGJsdXIpPVwiaGFuZGxlQmx1cigkZXZlbnQpXCJcbiAgKGlucHV0KT1cIm9uSW5wdXRDaGFuZ2UoKVwiXG4gIChuZ01vZGVsQ2hhbmdlKT1cImhhbmRsZUNoYW5nZSgkZXZlbnQpOyBvbklucHV0Q2hhbmdlKCk7XCJcbiAgI3RleHRhcmVhXG4+PC90ZXh0YXJlYT5cblxuQGlmIChtYXhjaGFycykge1xuICA8ZGl2IGNsYXNzPVwidGV4dGFyZWEtY291bnRcIiAgPnt7bGltaXRkaXNwbGF5dGV4dH19PC9kaXY+XG59XG4iXX0=
@@ -52,6 +52,13 @@ class TextareaComponent extends BaseInput {
52
52
  ngAfterViewChecked() {
53
53
  this.charlength = this.inputEl.nativeElement.value.length;
54
54
  }
55
+ ngOnDestroy() {
56
+ // MEMORY LEAK FIX: Clear ViewChild references
57
+ this.inputEl = null;
58
+ this.ngModel = null;
59
+ // Call parent ngOnDestroy
60
+ super.ngOnDestroy();
61
+ }
55
62
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextareaComponent, deps: [{ token: i0.Injector }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
56
63
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: TextareaComponent, isStandalone: true, selector: "wm-textarea", providers: [
57
64
  provideAs(TextareaComponent, NG_VALUE_ACCESSOR, true),
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/input/textarea/src/textarea.props.ts","../../../../../projects/components/widgets/input/textarea/src/textarea.component.ts","../../../../../projects/components/widgets/input/textarea/src/textarea.component.html","../../../../../projects/components/widgets/input/textarea/src/index.ts"],"sourcesContent":["import {PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register, registerFormWidget} from '@wm/components/base';\nimport {FormWidgetType} from '@wm/core';\n\nexport const textareaProps = new Map(\n [\n ['autofocus', PROP_BOOLEAN],\n ['autotrim', {value: true, ...PROP_BOOLEAN}],\n ['class', PROP_STRING],\n ['datavaluesource', PROP_ANY],\n ['datavalue', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['hint', PROP_STRING],\n ['arialabel', PROP_STRING],\n ['maxchars', PROP_NUMBER],\n ['name', PROP_STRING],\n ['placeholder', {value: 'Place your text', ...PROP_STRING}],\n ['readonly', PROP_BOOLEAN],\n ['required', PROP_BOOLEAN],\n ['shortcutkey', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['tabindex', {value: 0, ...PROP_NUMBER}],\n ['updateon', PROP_STRING],\n ['limitdisplaytext', PROP_STRING],\n ['charlength', PROP_NUMBER],\n ['conditionalclass', PROP_ANY],\n ['conditionalstyle', PROP_ANY]\n ]\n);\n\nexport const registerProps = () => {\n register(\n 'wm-textarea',\n textareaProps\n );\n registerFormWidget(\n FormWidgetType.TEXTAREA,\n new Map(textareaProps)\n );\n};\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport {AfterViewChecked, Component, ElementRef, Inject, Injector, Optional, ViewChild} from '@angular/core';\nimport {NG_VALIDATORS, NG_VALUE_ACCESSOR, NgModel} from '@angular/forms';\n\nimport {provideAs, provideAsWidgetRef} from '@wm/components/base';\n\nimport {registerProps} from './textarea.props';\nimport { BaseInput } from '@wm/components/input/text';\n\nconst WIDGET_CONFIG = {\n widgetType: 'wm-textarea',\n hostClass: 'app-input-wrapper'\n};\n\n@Component({\n standalone: true,\n imports: [CommonModule, FormsModule],\n selector: 'wm-textarea',\n templateUrl: './textarea.component.html',\n providers: [\n provideAs(TextareaComponent, NG_VALUE_ACCESSOR, true),\n provideAs(TextareaComponent, NG_VALIDATORS, true),\n provideAsWidgetRef(TextareaComponent)\n ]\n})\nexport class TextareaComponent extends BaseInput implements AfterViewChecked {\n static initializeProps = registerProps();\n public required: boolean;\n public maxchars: number;\n public disabled: boolean;\n public name: string;\n public readonly: boolean;\n public conditionalclass: any;\n public conditionalstyle: any;\n public tabindex: any;\n public placeholder: any;\n public shortcutkey: string;\n public autofocus: boolean;\n public hint: string;\n public arialabel: string;\n public limitdisplaytext: string;\n public charlength: number = 0;\n\n @ViewChild('textarea', {static: true}) inputEl: ElementRef;\n @ViewChild(NgModel) ngModel: NgModel;\n\n constructor(inj: Injector, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n }\n\n public onInputChange() {\n this.charlength = this.inputEl.nativeElement.value.length;\n }\n ngAfterViewChecked(): void {\n this.charlength = this.inputEl.nativeElement.value.length;\n }\n}\n","<textarea class=\"form-control app-textarea\"\n focus-target\n [attr.name]=\"name\"\n [(ngModel)]=\"datavalue\"\n [ngModelOptions]=\"ngModelOptions\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [maxlength]=\"maxchars\"\n [attr.tabindex]=\"tabindex\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [attr.aria-label]=\"arialabel\"\n aria-multiline=\"true\"\n [autofocus]=\"autofocus\"\n [ngClass]=\"conditionalclass\"\n [ngStyle]=\"conditionalstyle\"\n (blur)=\"handleBlur($event)\"\n (input)=\"onInputChange()\"\n (ngModelChange)=\"handleChange($event); onInputChange();\"\n #textarea\n></textarea>\n\n@if (maxchars) {\n <div class=\"textarea-count\" >{{limitdisplaytext}}</div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/input/textarea/src/textarea.props.ts","../../../../../projects/components/widgets/input/textarea/src/textarea.component.ts","../../../../../projects/components/widgets/input/textarea/src/textarea.component.html","../../../../../projects/components/widgets/input/textarea/src/index.ts"],"sourcesContent":["import {PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register, registerFormWidget} from '@wm/components/base';\nimport {FormWidgetType} from '@wm/core';\n\nexport const textareaProps = new Map(\n [\n ['autofocus', PROP_BOOLEAN],\n ['autotrim', {value: true, ...PROP_BOOLEAN}],\n ['class', PROP_STRING],\n ['datavaluesource', PROP_ANY],\n ['datavalue', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['hint', PROP_STRING],\n ['arialabel', PROP_STRING],\n ['maxchars', PROP_NUMBER],\n ['name', PROP_STRING],\n ['placeholder', {value: 'Place your text', ...PROP_STRING}],\n ['readonly', PROP_BOOLEAN],\n ['required', PROP_BOOLEAN],\n ['shortcutkey', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['tabindex', {value: 0, ...PROP_NUMBER}],\n ['updateon', PROP_STRING],\n ['limitdisplaytext', PROP_STRING],\n ['charlength', PROP_NUMBER],\n ['conditionalclass', PROP_ANY],\n ['conditionalstyle', PROP_ANY]\n ]\n);\n\nexport const registerProps = () => {\n register(\n 'wm-textarea',\n textareaProps\n );\n registerFormWidget(\n FormWidgetType.TEXTAREA,\n new Map(textareaProps)\n );\n};\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport {AfterViewChecked, Component, ElementRef, Inject, Injector, OnDestroy, Optional, ViewChild} from '@angular/core';\nimport {NG_VALIDATORS, NG_VALUE_ACCESSOR, NgModel} from '@angular/forms';\n\nimport {provideAs, provideAsWidgetRef} from '@wm/components/base';\n\nimport {registerProps} from './textarea.props';\nimport { BaseInput } from '@wm/components/input/text';\n\nconst WIDGET_CONFIG = {\n widgetType: 'wm-textarea',\n hostClass: 'app-input-wrapper'\n};\n\n@Component({\n standalone: true,\n imports: [CommonModule, FormsModule],\n selector: 'wm-textarea',\n templateUrl: './textarea.component.html',\n providers: [\n provideAs(TextareaComponent, NG_VALUE_ACCESSOR, true),\n provideAs(TextareaComponent, NG_VALIDATORS, true),\n provideAsWidgetRef(TextareaComponent)\n ]\n})\nexport class TextareaComponent extends BaseInput implements AfterViewChecked, OnDestroy {\n static initializeProps = registerProps();\n public required: boolean;\n public maxchars: number;\n public disabled: boolean;\n public name: string;\n public readonly: boolean;\n public conditionalclass: any;\n public conditionalstyle: any;\n public tabindex: any;\n public placeholder: any;\n public shortcutkey: string;\n public autofocus: boolean;\n public hint: string;\n public arialabel: string;\n public limitdisplaytext: string;\n public charlength: number = 0;\n\n @ViewChild('textarea', {static: true}) inputEl: ElementRef;\n @ViewChild(NgModel) ngModel: NgModel;\n\n constructor(inj: Injector, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n }\n\n public onInputChange() {\n this.charlength = this.inputEl.nativeElement.value.length;\n }\n ngAfterViewChecked(): void {\n this.charlength = this.inputEl.nativeElement.value.length;\n }\n\n ngOnDestroy() {\n // MEMORY LEAK FIX: Clear ViewChild references\n this.inputEl = null;\n this.ngModel = null;\n\n // Call parent ngOnDestroy\n super.ngOnDestroy();\n }\n}\n","<textarea class=\"form-control app-textarea\"\n focus-target\n [attr.name]=\"name\"\n [(ngModel)]=\"datavalue\"\n [ngModelOptions]=\"ngModelOptions\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [maxlength]=\"maxchars\"\n [attr.tabindex]=\"tabindex\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [attr.aria-label]=\"arialabel\"\n aria-multiline=\"true\"\n [autofocus]=\"autofocus\"\n [ngClass]=\"conditionalclass\"\n [ngStyle]=\"conditionalstyle\"\n (blur)=\"handleBlur($event)\"\n (input)=\"onInputChange()\"\n (ngModelChange)=\"handleChange($event); onInputChange();\"\n #textarea\n></textarea>\n\n@if (maxchars) {\n <div class=\"textarea-count\" >{{limitdisplaytext}}</div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;AAGO,MAAM,aAAa,GAAG,IAAI,GAAG,CAChC;IACI,CAAC,WAAW,EAAE,YAAY,CAAC;IAC3B,CAAC,UAAU,EAAE,EAAC,KAAK,EAAE,IAAI,EAAE,GAAG,YAAY,EAAC,CAAC;IAC5C,CAAC,OAAO,EAAE,WAAW,CAAC;IACtB,CAAC,iBAAiB,EAAE,QAAQ,CAAC;IAC7B,CAAC,WAAW,EAAE,WAAW,CAAC;IAC1B,CAAC,UAAU,EAAE,YAAY,CAAC;IAC1B,CAAC,MAAM,EAAE,WAAW,CAAC;IACrB,CAAC,WAAW,EAAE,WAAW,CAAC;IAC1B,CAAC,UAAU,EAAE,WAAW,CAAC;IACzB,CAAC,MAAM,EAAE,WAAW,CAAC;IACrB,CAAC,aAAa,EAAE,EAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,WAAW,EAAC,CAAC;IAC3D,CAAC,UAAU,EAAE,YAAY,CAAC;IAC1B,CAAC,UAAU,EAAE,YAAY,CAAC;IAC1B,CAAC,aAAa,EAAE,WAAW,CAAC;IAC5B,CAAC,MAAM,EAAE,EAAC,KAAK,EAAE,IAAI,EAAE,GAAG,YAAY,EAAC,CAAC;IACxC,CAAC,UAAU,EAAE,EAAC,KAAK,EAAE,CAAC,EAAE,GAAG,WAAW,EAAC,CAAC;IACxC,CAAC,UAAU,EAAE,WAAW,CAAC;IACzB,CAAC,kBAAkB,EAAE,WAAW,CAAC;IACjC,CAAC,YAAY,EAAE,WAAW,CAAC;IAC3B,CAAC,kBAAkB,EAAE,QAAQ,CAAC;IAC9B,CAAC,kBAAkB,EAAE,QAAQ;AAChC,CAAA,CACJ;AAEM,MAAM,aAAa,GAAG,MAAK;AAC9B,IAAA,QAAQ,CACJ,aAAa,EACb,aAAa,CAChB;IACD,kBAAkB,CACd,cAAc,CAAC,QAAQ,EACvB,IAAI,GAAG,CAAC,aAAa,CAAC,CACzB;AACL,CAAC;;AC5BD,MAAM,aAAa,GAAG;AAClB,IAAA,UAAU,EAAE,aAAa;AACzB,IAAA,SAAS,EAAE;CACd;AAaK,MAAO,iBAAkB,SAAQ,SAAS,CAAA;AACrC,IAAA,SAAA,IAAA,CAAA,eAAe,GAAG,aAAa,EAAhB,CAAmB;IAoBzC,WAAA,CAAY,GAAa,EAA0C,eAAoB,EAAA;AACnF,QAAA,KAAK,CAAC,GAAG,EAAE,aAAa,EAAE,eAAe,CAAC;QANvC,IAAA,CAAA,UAAU,GAAW,CAAC;IAO7B;IAEO,aAAa,GAAA;AAChB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM;IAC7D;IACA,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM;IAC3D;IAEF,WAAW,GAAA;;AAEP,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;;QAGnB,KAAK,CAAC,WAAW,EAAE;IACvB;AAvCS,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,0CAqBS,kBAAkB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AArB5C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EANf;AACP,YAAA,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,IAAI,CAAC;AACrD,YAAA,SAAS,CAAC,iBAAiB,EAAE,aAAa,EAAE,IAAI,CAAC;YACjD,kBAAkB,CAAC,iBAAiB;AACvC,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAqBU,OAAO,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7CtB,iwBA0BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDTc,YAAY,iNAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAS1B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAX7B,SAAS;iCACM,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,WAAW,CAAC,EAAA,QAAA,EAC1B,aAAa,EAAA,SAAA,EAEZ;AACP,wBAAA,SAAS,CAAA,iBAAA,EAAoB,iBAAiB,EAAE,IAAI,CAAC;AACrD,wBAAA,SAAS,CAAA,iBAAA,EAAoB,aAAa,EAAE,IAAI,CAAC;AACjD,wBAAA,kBAAkB,CAAA,iBAAA;AACrB,qBAAA,EAAA,QAAA,EAAA,iwBAAA,EAAA;;0BAuB2B,MAAM;2BAAC,kBAAkB;;0BAAG;yCAHjB,OAAO,EAAA,CAAA;sBAA7C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC;gBACjB,OAAO,EAAA,CAAA;sBAA1B,SAAS;uBAAC,OAAO;;;AE7CtB;;AAEG;;;;"}
@@ -1,8 +1,8 @@
1
- import { AfterViewChecked, ElementRef, Injector } from '@angular/core';
1
+ import { AfterViewChecked, ElementRef, Injector, OnDestroy } from '@angular/core';
2
2
  import { NgModel } from '@angular/forms';
3
3
  import { BaseInput } from '@wm/components/input/text';
4
4
  import * as i0 from "@angular/core";
5
- export declare class TextareaComponent extends BaseInput implements AfterViewChecked {
5
+ export declare class TextareaComponent extends BaseInput implements AfterViewChecked, OnDestroy {
6
6
  static initializeProps: void;
7
7
  required: boolean;
8
8
  maxchars: number;
@@ -24,6 +24,7 @@ export declare class TextareaComponent extends BaseInput implements AfterViewChe
24
24
  constructor(inj: Injector, explicitContext: any);
25
25
  onInputChange(): void;
26
26
  ngAfterViewChecked(): void;
27
+ ngOnDestroy(): void;
27
28
  static ɵfac: i0.ɵɵFactoryDeclaration<TextareaComponent, [null, { optional: true; }]>;
28
29
  static ɵcmp: i0.ɵɵComponentDeclaration<TextareaComponent, "wm-textarea", never, {}, {}, never, never, true, never>;
29
30
  }
@@ -33,18 +33,31 @@
33
33
  class NavigationControlDirective {
34
34
  set wmNavigationControl(val) {
35
35
  this._link = val;
36
+ // MEMORY LEAK FIX: Remove existing listener before adding new one
37
+ if (this.boundContextMenuHandler) {
38
+ this.nativeElement.removeEventListener('contextmenu', this.boundContextMenuHandler);
39
+ this.boundContextMenuHandler = null;
40
+ }
36
41
  if (val && !this.disableMenuContext) {
37
42
  i2.setAttr(this.nativeElement, 'href', val);
38
- this.nativeElement.removeEventListener('contextmenu', disableContextMenu);
39
43
  }
40
44
  else {
41
45
  i2.setAttr(this.nativeElement, 'href', 'javascript:void(0)');
42
- this.nativeElement.addEventListener('contextmenu', disableContextMenu);
46
+ // MEMORY LEAK FIX: Store bound function reference for cleanup
47
+ this.boundContextMenuHandler = disableContextMenu;
48
+ this.nativeElement.addEventListener('contextmenu', this.boundContextMenuHandler);
43
49
  }
44
50
  }
45
51
  constructor(eleRef) {
46
52
  this.nativeElement = eleRef.nativeElement;
47
53
  }
54
+ ngOnDestroy() {
55
+ // MEMORY LEAK FIX: Remove event listener using stored bound function reference
56
+ if (this.boundContextMenuHandler) {
57
+ this.nativeElement.removeEventListener('contextmenu', this.boundContextMenuHandler);
58
+ this.boundContextMenuHandler = null;
59
+ }
60
+ }
48
61
  static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: NavigationControlDirective, deps: [{ token: i0__namespace.ElementRef }], target: i0__namespace.ɵɵFactoryTarget.Directive }); }
49
62
  static { this.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: NavigationControlDirective, isStandalone: true, selector: "[wmNavigationControl]", inputs: { disableMenuContext: "disableMenuContext", wmNavigationControl: "wmNavigationControl" }, ngImport: i0__namespace }); }
50
63
  }
@@ -92,6 +105,11 @@
92
105
  i2.removeClass(this.nativeElement, 'active', true);
93
106
  super.ngOnDetach();
94
107
  }
108
+ ngOnDestroy() {
109
+ // MEMORY LEAK FIX: Clear ContentChild reference
110
+ this.innerLink = null;
111
+ super.ngOnDestroy();
112
+ }
95
113
  static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: NavItemDirective, deps: [{ token: i0__namespace.Injector }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0__namespace.ɵɵFactoryTarget.Directive }); }
96
114
  static { this.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: NavItemDirective, isStandalone: true, selector: "[wmNavItem]", host: { listeners: { "click": "makeActive()", "keydown.enter": "makeActive()" } }, providers: [
97
115
  base.provideAsWidgetRef(NavItemDirective)
@@ -235,6 +253,16 @@
235
253
  this.selecteditem = lodashEs.omit($item, ['children', 'value']);
236
254
  this.invokeEventCallback('select', { $event, $item: this.selecteditem });
237
255
  }
256
+ ngOnDestroy() {
257
+ // MEMORY LEAK FIX: Cleanup
258
+ // Note: Subscription is already cleaned up via registerDestroyListener in constructor
259
+ // but adding explicit OnDestroy to ensure proper cleanup lifecycle
260
+ // Clear references
261
+ this.selecteditem = null;
262
+ this.pageScope = null;
263
+ this.itemActionFn = null;
264
+ super.ngOnDestroy();
265
+ }
238
266
  static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: NavComponent, deps: [{ token: i0__namespace.Injector }, { token: i0__namespace.ChangeDetectorRef }, { token: i1__namespace.Router }, { token: i2__namespace.UserDefinedExecutionContext }, { token: i2__namespace.App }, { token: 'select.event', attribute: true }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0__namespace.ɵɵFactoryTarget.Component }); }
239
267
  static { this.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: NavComponent, isStandalone: true, selector: "[wmNav]", providers: [
240
268
  base.provideAsWidgetRef(NavComponent)
@@ -724,6 +752,8 @@
724
752
  }
725
753
  onPropertyChange(key, nv, ov) {
726
754
  if (key === 'tabindex') {
755
+ // Let the base class handle tabindex setting via setAttr
756
+ super.onPropertyChange(key, nv, ov);
727
757
  return;
728
758
  }
729
759
  if (key === 'autoclose') {
@@ -768,18 +798,23 @@
768
798
  }
769
799
  ngAfterViewInit() {
770
800
  super.ngAfterViewInit();
801
+ // Fix tabindex if it's NaN (ensure it's fixed after view initialization)
802
+ if (this.widget.tabindex !== undefined && (typeof this.widget.tabindex === 'number' && isNaN(this.widget.tabindex))) {
803
+ this.widget.tabindex = 0;
804
+ this.tabindex = 0;
805
+ }
771
806
  base.styler(this.nativeElement.querySelector('.dropdown-toggle'), this);
772
807
  }
773
808
  static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: MenuComponent, deps: [{ token: i0__namespace.Injector }, { token: i1__namespace.Router }, { token: i2__namespace.UserDefinedExecutionContext }, { token: i2__namespace.App }, { token: i3$1__namespace.BsDropdownDirective, optional: true, self: true }, { token: NavComponent, optional: true }, { token: 'select.event', attribute: true }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0__namespace.ɵɵFactoryTarget.Component }); }
774
809
  static { this.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MenuComponent, isStandalone: true, selector: "[wmMenu]", host: { listeners: { "onShown": "onShow()", "onHidden": "onHide()", "keydown.arrowup": "onKeyDown($event,\"UP-ARROW\")", "mouseenter": "onKeyDown($event,\"MOUSE-ENTER\")", "mouseleave": "onKeyDown($event,\"MOUSE-LEAVE\")", "keydown.arrowdown": "onKeyDown($event,\"DOWN-ARROW\")", "keydown.arrowright": "onKeyDown($event,\"RIGHT-ARROW\")", "keydown.arrowleft": "onKeyDown($event,\"LEFT-ARROW\")", "keydown.enter": "onKeyDown($event,\"ENTER\")" } }, providers: [
775
810
  base.provideAsWidgetRef(MenuComponent),
776
- ], usesInheritance: true, ngImport: i0__namespace, template: "\n\n<ng-template #innerTemplate>\n <i class=\"app-icon {{iconclass}}\"></i>\n <span class=\"caption\" [textContent]=\"caption\"></span>\n <span class=\"pull-right caret fa {{menuCaret}}\"></span>\n</ng-template>\n\n@if (type === 'anchor') {\n <a wmAnchor\n dropdownToggle\n [attr.aria-label]=\"arialabel || 'Menu'\"\n href=\"javascript:void(0);\"\n role=\"button\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n hint.bind=\"hint\"\n class=\"dropdown-toggle {{menuclass}}\"\n shortcutkey.bind=\"shortcutkey\"\n tabindex.bind=\"tabindex\"\n caption.bind=\"caption\"\n iconclass.bind=\"iconclass\"\n iconposition.bind=\"iconposition\"\n badgevalue.bind=\"badgevalue\"\n >\n <span class=\"pull-right caret fa\" [ngClass]=\"[menuCaret]\"></span>\n </a>\n} @else {\n <button wmButton\n dropdownToggle\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n [attr.aria-label]=\"arialabel || 'Menu'\"\n class=\"btn app-button dropdown-toggle {{menuclass}}\"\n hint.bind=\"hint\"\n shortcutkey.bind=\"shortcutkey\"\n tabindex.bind=\"tabindex\"\n caption.bind=\"caption\"\n iconclass.bind=\"iconclass\"\n iconposition.bind=\"iconposition\">\n <span class=\"pull-right caret fa\" [ngClass]=\"[menuCaret]\"></span>\n </button>\n}\n\n<ul *dropdownMenu [items]=\"nodes\" [ngClass]=\"menulayout\" class=\"icon-position-{{iconposition}}\" role=\"menubar\"\nwmMenuDropdown></ul>\n", dependencies: [{ kind: "ngmodule", type: i3$1.BsDropdownModule }, { kind: "directive", type: i3$1__namespace.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i3$1__namespace.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "ngmodule", type: i3.CommonModule }, { kind: "directive", type: i3__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: base.TextContentDirective, selector: "[textContent]", inputs: ["textContent"] }, { kind: "component", type: anchor.AnchorComponent, selector: "a[wmAnchor]", exportAs: ["wmAnchor"] }, { kind: "component", type: button.ButtonComponent, selector: "button[wmButton]", exportAs: ["wmButton"] }, { kind: "component", type: MenuDropdownComponent, selector: "ul[wmMenuDropdown]", inputs: ["items"] }] }); }
811
+ ], usesInheritance: true, ngImport: i0__namespace, template: "\n\n<ng-template #innerTemplate>\n <i class=\"app-icon {{iconclass}}\"></i>\n <span class=\"caption\" [textContent]=\"caption\"></span>\n <span class=\"pull-right caret fa {{menuCaret}}\"></span>\n</ng-template>\n\n@if (type === 'anchor') {\n <a wmAnchor\n dropdownToggle\n [attr.aria-label]=\"arialabel || 'Menu'\"\n href=\"javascript:void(0);\"\n role=\"button\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n hint.bind=\"hint\"\n class=\"dropdown-toggle {{menuclass}}\"\n shortcutkey.bind=\"shortcutkey\"\n tabindex.bind=\"tabindex\"\n caption.bind=\"caption\"\n iconclass.bind=\"iconclass\"\n iconposition.bind=\"iconposition\"\n badgevalue.bind=\"badgevalue\"\n >\n <span class=\"pull-right caret fa\" [ngClass]=\"[menuCaret]\"></span>\n </a>\n} @else {\n <button wmButton\n dropdownToggle\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n [attr.aria-label]=\"arialabel || 'Menu'\"\n class=\"btn app-button dropdown-toggle {{menuclass}}\"\n hint.bind=\"hint\"\n shortcutkey.bind=\"shortcutkey\"\n tabindex.bind=\"tabindex\"\n caption.bind=\"caption\"\n iconclass.bind=\"iconclass\"\n iconposition.bind=\"iconposition\"\n type=\"button\">\n <span class=\"pull-right caret fa\" [ngClass]=\"[menuCaret]\"></span>\n </button>\n}\n\n<ul *dropdownMenu [items]=\"nodes\" [ngClass]=\"menulayout\" class=\"icon-position-{{iconposition}}\" role=\"menubar\"\nwmMenuDropdown></ul>\n", dependencies: [{ kind: "ngmodule", type: i3$1.BsDropdownModule }, { kind: "directive", type: i3$1__namespace.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i3$1__namespace.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "ngmodule", type: i3.CommonModule }, { kind: "directive", type: i3__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: base.TextContentDirective, selector: "[textContent]", inputs: ["textContent"] }, { kind: "component", type: anchor.AnchorComponent, selector: "a[wmAnchor]", exportAs: ["wmAnchor"] }, { kind: "component", type: button.ButtonComponent, selector: "button[wmButton]", exportAs: ["wmButton"] }, { kind: "component", type: MenuDropdownComponent, selector: "ul[wmMenuDropdown]", inputs: ["items"] }] }); }
777
812
  }
778
813
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: MenuComponent, decorators: [{
779
814
  type: i0.Component,
780
815
  args: [{ standalone: true, imports: [i3$1.BsDropdownModule, i3.CommonModule, base.TextContentDirective, anchor.AnchorComponent, button.ButtonComponent, MenuDropdownComponent], selector: '[wmMenu]', providers: [
781
816
  base.provideAsWidgetRef(MenuComponent),
782
- ], template: "\n\n<ng-template #innerTemplate>\n <i class=\"app-icon {{iconclass}}\"></i>\n <span class=\"caption\" [textContent]=\"caption\"></span>\n <span class=\"pull-right caret fa {{menuCaret}}\"></span>\n</ng-template>\n\n@if (type === 'anchor') {\n <a wmAnchor\n dropdownToggle\n [attr.aria-label]=\"arialabel || 'Menu'\"\n href=\"javascript:void(0);\"\n role=\"button\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n hint.bind=\"hint\"\n class=\"dropdown-toggle {{menuclass}}\"\n shortcutkey.bind=\"shortcutkey\"\n tabindex.bind=\"tabindex\"\n caption.bind=\"caption\"\n iconclass.bind=\"iconclass\"\n iconposition.bind=\"iconposition\"\n badgevalue.bind=\"badgevalue\"\n >\n <span class=\"pull-right caret fa\" [ngClass]=\"[menuCaret]\"></span>\n </a>\n} @else {\n <button wmButton\n dropdownToggle\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n [attr.aria-label]=\"arialabel || 'Menu'\"\n class=\"btn app-button dropdown-toggle {{menuclass}}\"\n hint.bind=\"hint\"\n shortcutkey.bind=\"shortcutkey\"\n tabindex.bind=\"tabindex\"\n caption.bind=\"caption\"\n iconclass.bind=\"iconclass\"\n iconposition.bind=\"iconposition\">\n <span class=\"pull-right caret fa\" [ngClass]=\"[menuCaret]\"></span>\n </button>\n}\n\n<ul *dropdownMenu [items]=\"nodes\" [ngClass]=\"menulayout\" class=\"icon-position-{{iconposition}}\" role=\"menubar\"\nwmMenuDropdown></ul>\n" }]
817
+ ], template: "\n\n<ng-template #innerTemplate>\n <i class=\"app-icon {{iconclass}}\"></i>\n <span class=\"caption\" [textContent]=\"caption\"></span>\n <span class=\"pull-right caret fa {{menuCaret}}\"></span>\n</ng-template>\n\n@if (type === 'anchor') {\n <a wmAnchor\n dropdownToggle\n [attr.aria-label]=\"arialabel || 'Menu'\"\n href=\"javascript:void(0);\"\n role=\"button\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n hint.bind=\"hint\"\n class=\"dropdown-toggle {{menuclass}}\"\n shortcutkey.bind=\"shortcutkey\"\n tabindex.bind=\"tabindex\"\n caption.bind=\"caption\"\n iconclass.bind=\"iconclass\"\n iconposition.bind=\"iconposition\"\n badgevalue.bind=\"badgevalue\"\n >\n <span class=\"pull-right caret fa\" [ngClass]=\"[menuCaret]\"></span>\n </a>\n} @else {\n <button wmButton\n dropdownToggle\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n [attr.aria-label]=\"arialabel || 'Menu'\"\n class=\"btn app-button dropdown-toggle {{menuclass}}\"\n hint.bind=\"hint\"\n shortcutkey.bind=\"shortcutkey\"\n tabindex.bind=\"tabindex\"\n caption.bind=\"caption\"\n iconclass.bind=\"iconclass\"\n iconposition.bind=\"iconposition\"\n type=\"button\">\n <span class=\"pull-right caret fa\" [ngClass]=\"[menuCaret]\"></span>\n </button>\n}\n\n<ul *dropdownMenu [items]=\"nodes\" [ngClass]=\"menulayout\" class=\"icon-position-{{iconposition}}\" role=\"menubar\"\nwmMenuDropdown></ul>\n" }]
783
818
  }], ctorParameters: () => [{ type: i0__namespace.Injector }, { type: i1__namespace.Router }, { type: i2__namespace.UserDefinedExecutionContext }, { type: i2__namespace.App }, { type: i3$1__namespace.BsDropdownDirective, decorators: [{
784
819
  type: i0.Self
785
820
  }, {
@@ -848,13 +883,27 @@
848
883
  if (this.menuRefQL['first']) {
849
884
  this.setMenuProperty();
850
885
  }
851
- const subscriber = this.menuRefQL.changes.subscribe((menuRefQL) => {
886
+ this.menuRefQLSubscription = this.menuRefQL.changes.subscribe((menuRefQL) => {
852
887
  if (menuRefQL.first) {
853
888
  this.setMenuProperty();
854
- subscriber.unsubscribe();
889
+ if (this.menuRefQLSubscription) {
890
+ this.menuRefQLSubscription.unsubscribe();
891
+ this.menuRefQLSubscription = null;
892
+ }
855
893
  }
856
894
  });
857
895
  }
896
+ ngOnDestroy() {
897
+ // MEMORY LEAK FIX: Unsubscribe from QueryList changes
898
+ if (this.menuRefQLSubscription) {
899
+ this.menuRefQLSubscription.unsubscribe();
900
+ this.menuRefQLSubscription = null;
901
+ }
902
+ // MEMORY LEAK FIX: Clear QueryList reference
903
+ this.menuRefQL = null;
904
+ this.menuRef = null;
905
+ super.ngOnDestroy();
906
+ }
858
907
  setMenuProperty() {
859
908
  if (this.menuRefQL['first']) {
860
909
  if (this.menuRefQL.first) {
@@ -28,13 +28,27 @@ export class MenuAdapterComponent extends BaseContainerComponent {
28
28
  if (this.menuRefQL['first']) {
29
29
  this.setMenuProperty();
30
30
  }
31
- const subscriber = this.menuRefQL.changes.subscribe((menuRefQL) => {
31
+ this.menuRefQLSubscription = this.menuRefQL.changes.subscribe((menuRefQL) => {
32
32
  if (menuRefQL.first) {
33
33
  this.setMenuProperty();
34
- subscriber.unsubscribe();
34
+ if (this.menuRefQLSubscription) {
35
+ this.menuRefQLSubscription.unsubscribe();
36
+ this.menuRefQLSubscription = null;
37
+ }
35
38
  }
36
39
  });
37
40
  }
41
+ ngOnDestroy() {
42
+ // MEMORY LEAK FIX: Unsubscribe from QueryList changes
43
+ if (this.menuRefQLSubscription) {
44
+ this.menuRefQLSubscription.unsubscribe();
45
+ this.menuRefQLSubscription = null;
46
+ }
47
+ // MEMORY LEAK FIX: Clear QueryList reference
48
+ this.menuRefQL = null;
49
+ this.menuRef = null;
50
+ super.ngOnDestroy();
51
+ }
38
52
  setMenuProperty() {
39
53
  if (this.menuRefQL['first']) {
40
54
  if (this.menuRefQL.first) {
@@ -63,4 +77,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
63
77
  type: ViewChildren,
64
78
  args: [MenuComponent]
65
79
  }] } });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1hZGFwYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvbmF2aWdhdGlvbi9tZW51L3NyYy9tZW51LWFkYXBhdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBRXJDLE1BQU0sU0FBUyxHQUFHLENBQUMsV0FBVyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUdsRyxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsc0JBQXNCO0lBZTVELFlBQ0ksR0FBRyxFQUNILGFBQWEsRUFDMkIsZUFBb0I7UUFFNUQsS0FBSyxDQUFDLEdBQUcsRUFBRSxhQUFhLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFFM0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVELGdCQUFnQixDQUFDLEdBQVcsRUFBRSxFQUFPLEVBQUUsRUFBUTtRQUMzQyxJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNoQyxDQUFDO2FBQU0sQ0FBQztZQUNKLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZTtRQUNYLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQzFCLENBQUM7WUFBQSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFBQSxDQUFDO1FBQ3pCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQW1DLEVBQUUsRUFBRTtZQUN4RixJQUFJLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFBO2dCQUN0QixVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDN0IsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNTLGVBQWU7UUFDckIsSUFBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDekIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO2dCQUNwQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ3ZCLE1BQU0sUUFBUSxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7b0JBQy9CLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7d0JBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUM1QyxDQUFDO29CQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwQyxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQzsrR0EvRFEsb0JBQW9CO21HQUFwQixvQkFBb0Isd0RBYWYsYUFBYTs7NEZBYmxCLG9CQUFvQjtrQkFEaEMsU0FBUzs7MEJBbUJELE1BQU07MkJBQUMsa0JBQWtCOzswQkFBRyxRQUFRO3lDQUxKLFNBQVM7c0JBQTdDLFlBQVk7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkcmVuLCBEaXJlY3RpdmUsIE9wdGlvbmFsLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1lbnVDb21wb25lbnQgfSBmcm9tICcuL21lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IEJhc2VDb250YWluZXJDb21wb25lbnQgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7IGluY2x1ZGVzIH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5jb25zdCBtZW51UHJvcHMgPSBbJ2l0ZW1sYWJlbCcsICdpdGVtaWNvbicsICdpdGVtbGluaycsICdpdGVtYWN0aW9uJywgJ2l0ZW1jaGlsZHJlbicsICd1c2Vycm9sZSddO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBNZW51QWRhcHRlckNvbXBvbmVudCBleHRlbmRzIEJhc2VDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcblxuICAgIHByaXZhdGUgaXRlbWxhYmVsO1xuICAgIHByaXZhdGUgbWVudVJlZjtcbiAgICBwcml2YXRlIHBhZ2VTY29wZTtcblxuICAgIHByaXZhdGUgYmluZGl0ZW1sYWJlbDtcbiAgICBwcml2YXRlIGJpbmRpdGVtaWNvbjtcbiAgICBwcml2YXRlIGJpbmRpdGVtYWN0aW9uO1xuICAgIHByaXZhdGUgYmluZGl0ZW1jaGlsZHJlbjtcbiAgICBwcml2YXRlIGJpbmRpdGVtbGluaztcbiAgICBwcml2YXRlIGJpbmR1c2Vycm9sZTtcblxuICAgIEBWaWV3Q2hpbGRyZW4oTWVudUNvbXBvbmVudCkgcHJpdmF0ZSBtZW51UmVmUUw6IFF1ZXJ5TGlzdDxNZW51Q29tcG9uZW50PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmosXG4gICAgICAgIFdJREdFVF9DT05GSUcsXG4gICAgICAgIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueVxuICAgICkge1xuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9DT05GSUcsIGV4cGxpY2l0Q29udGV4dCk7XG5cbiAgICAgICAgdGhpcy5wYWdlU2NvcGUgPSB0aGlzLnZpZXdQYXJlbnQ7XG4gICAgICAgIHRoaXMuYmluZGl0ZW1sYWJlbCA9IHRoaXMubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2l0ZW1sYWJlbC5iaW5kJyk7XG4gICAgICAgIHRoaXMuYmluZGl0ZW1pY29uID0gdGhpcy5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnaXRlbWljb24uYmluZCcpO1xuICAgICAgICB0aGlzLmJpbmRpdGVtYWN0aW9uID0gdGhpcy5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnaXRlbWFjdGlvbi5iaW5kJyk7XG4gICAgICAgIHRoaXMuYmluZGl0ZW1saW5rID0gdGhpcy5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnaXRlbWxpbmsuYmluZCcpO1xuICAgICAgICB0aGlzLmJpbmR1c2Vycm9sZSA9IHRoaXMubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3VzZXJyb2xlLmJpbmQnKTtcbiAgICAgICAgdGhpcy5iaW5kaXRlbWNoaWxkcmVuID0gdGhpcy5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnaXRlbWNoaWxkcmVuLmJpbmQnKTtcbiAgICB9XG5cbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdj86IGFueSkge1xuICAgICAgICBpZiAoaW5jbHVkZXMobWVudVByb3BzLCBrZXkpICYmIHRoaXMubWVudVJlZikge1xuICAgICAgICAgICAgdGhpcy5tZW51UmVmLml0ZW1sYWJlbCA9IG52O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICBpZih0aGlzLm1lbnVSZWZRTFsnZmlyc3QnXSlcbiAgICAgICAge3RoaXMuc2V0TWVudVByb3BlcnR5KCk7fVxuICAgICAgICBjb25zdCBzdWJzY3JpYmVyID0gdGhpcy5tZW51UmVmUUwuY2hhbmdlcy5zdWJzY3JpYmUoKG1lbnVSZWZRTDogUXVlcnlMaXN0PE1lbnVDb21wb25lbnQ+KSA9PiB7XG4gICAgICAgICAgICBpZiAobWVudVJlZlFMLmZpcnN0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRNZW51UHJvcGVydHkoKVxuICAgICAgICAgICAgICAgIHN1YnNjcmliZXIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBzZXRNZW51UHJvcGVydHkoKXtcbiAgICAgICAgaWYodGhpcy5tZW51UmVmUUxbJ2ZpcnN0J10pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1lbnVSZWZRTC5maXJzdCkge1xuICAgICAgICAgICAgICAgIHRoaXMubWVudVJlZiA9IHRoaXMubWVudVJlZlFMLmZpcnN0O1xuICAgICAgICAgICAgICAgIG1lbnVQcm9wcy5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJpbmRQcm9wID0gYGJpbmQke3Byb3B9YDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXNbYmluZFByb3BdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1lbnVSZWZbYmluZFByb3BdID0gdGhpc1tiaW5kUHJvcF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tZW51UmVmW3Byb3BdID0gdGhpc1twcm9wXTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1hZGFwYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvbmF2aWdhdGlvbi9tZW51L3NyYy9tZW51LWFkYXBhdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDL0csT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBRXJDLE1BQU0sU0FBUyxHQUFHLENBQUMsV0FBVyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUdsRyxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsc0JBQXNCO0lBZ0I1RCxZQUNJLEdBQUcsRUFDSCxhQUFhLEVBQzJCLGVBQW9CO1FBRTVELEtBQUssQ0FBQyxHQUFHLEVBQUUsYUFBYSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBRTNDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNqQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLFlB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QkFBRyxRQUFRO3lDQU5KLFNBQVM7c0JBQTdDLFlBQVk7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkcmVuLCBEaXJlY3RpdmUsIE9wdGlvbmFsLCBJbmplY3QsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWVudUNvbXBvbmVudCB9IGZyb20gJy4vbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmFzZUNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHsgaW5jbHVkZXMgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmNvbnN0IG1lbnVQcm9wcyA9IFsnaXRlbWxhYmVsJywgJ2l0ZW1pY29uJywgJ2l0ZW1saW5rJywgJ2l0ZW1hY3Rpb24nLCAnaXRlbWNoaWxkcmVuJywgJ3VzZXJyb2xlJ107XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIE1lbnVBZGFwdGVyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgICBwcml2YXRlIGl0ZW1sYWJlbDtcbiAgICBwcml2YXRlIG1lbnVSZWY7XG4gICAgcHJpdmF0ZSBwYWdlU2NvcGU7XG5cbiAgICBwcml2YXRlIGJpbmRpdGVtbGFiZWw7XG4gICAgcHJpdmF0ZSBiaW5kaXRlbWljb247XG4gICAgcHJpdmF0ZSBiaW5kaXRlbWFjdGlvbjtcbiAgICBwcml2YXRlIGJpbmRpdGVtY2hpbGRyZW47XG4gICAgcHJpdmF0ZSBiaW5kaXRlbWxpbms7XG4gICAgcHJpdmF0ZSBiaW5kdXNlcnJvbGU7XG5cbiAgICBAVmlld0NoaWxkcmVuKE1lbnVDb21wb25lbnQpIHByaXZhdGUgbWVudVJlZlFMOiBRdWVyeUxpc3Q8TWVudUNvbXBvbmVudD47XG4gICAgcHJpdmF0ZSBtZW51UmVmUUxTdWJzY3JpcHRpb246IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmosXG4gICAgICAgIFdJREdFVF9DT05GSUcsXG4gICAgICAgIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueVxuICAgICkge1xuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9DT05GSUcsIGV4cGxpY2l0Q29udGV4dCk7XG5cbiAgICAgICAgdGhpcy5wYWdlU2NvcGUgPSB0aGlzLnZpZXdQYXJlbnQ7XG4gICAgICAgIHRoaXMuYmluZGl0ZW1sYWJlbCA9IHRoaXMubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2l0ZW1sYWJlbC5iaW5kJyk7XG4gICAgICAgIHRoaXMuYmluZGl0ZW1pY29uID0gdGhpcy5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnaXRlbWljb24uYmluZCcpO1xuICAgICAgICB0aGlzLmJpbmRpdGVtYWN0aW9uID0gdGhpcy5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnaXRlbWFjdGlvbi5iaW5kJyk7XG4gICAgICAgIHRoaXMuYmluZGl0ZW1saW5rID0gdGhpcy5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnaXRlbWxpbmsuYmluZCcpO1xuICAgICAgICB0aGlzLmJpbmR1c2Vycm9sZSA9IHRoaXMubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3VzZXJyb2xlLmJpbmQnKTtcbiAgICAgICAgdGhpcy5iaW5kaXRlbWNoaWxkcmVuID0gdGhpcy5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnaXRlbWNoaWxkcmVuLmJpbmQnKTtcbiAgICB9XG5cbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdj86IGFueSkge1xuICAgICAgICBpZiAoaW5jbHVkZXMobWVudVByb3BzLCBrZXkpICYmIHRoaXMubWVudVJlZikge1xuICAgICAgICAgICAgdGhpcy5tZW51UmVmLml0ZW1sYWJlbCA9IG52O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICBpZih0aGlzLm1lbnVSZWZRTFsnZmlyc3QnXSlcbiAgICAgICAge3RoaXMuc2V0TWVudVByb3BlcnR5KCk7fVxuICAgICAgICB0aGlzLm1lbnVSZWZRTFN1YnNjcmlwdGlvbiA9IHRoaXMubWVudVJlZlFMLmNoYW5nZXMuc3Vic2NyaWJlKChtZW51UmVmUUw6IFF1ZXJ5TGlzdDxNZW51Q29tcG9uZW50PikgPT4ge1xuICAgICAgICAgICAgaWYgKG1lbnVSZWZRTC5maXJzdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0TWVudVByb3BlcnR5KCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWVudVJlZlFMU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWVudVJlZlFMU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWVudVJlZlFMU3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IFVuc3Vic2NyaWJlIGZyb20gUXVlcnlMaXN0IGNoYW5nZXNcbiAgICAgICAgaWYgKHRoaXMubWVudVJlZlFMU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVSZWZRTFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5tZW51UmVmUUxTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBDbGVhciBRdWVyeUxpc3QgcmVmZXJlbmNlXG4gICAgICAgIHRoaXMubWVudVJlZlFMID0gbnVsbDtcbiAgICAgICAgdGhpcy5tZW51UmVmID0gbnVsbDtcblxuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXRNZW51UHJvcGVydHkoKXtcbiAgICAgICAgaWYodGhpcy5tZW51UmVmUUxbJ2ZpcnN0J10pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1lbnVSZWZRTC5maXJzdCkge1xuICAgICAgICAgICAgICAgIHRoaXMubWVudVJlZiA9IHRoaXMubWVudVJlZlFMLmZpcnN0O1xuICAgICAgICAgICAgICAgIG1lbnVQcm9wcy5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJpbmRQcm9wID0gYGJpbmQke3Byb3B9YDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXNbYmluZFByb3BdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1lbnVSZWZbYmluZFByb3BdID0gdGhpc1tiaW5kUHJvcF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tZW51UmVmW3Byb3BdID0gdGhpc1twcm9wXTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19
@@ -174,6 +174,8 @@ export class MenuComponent extends DatasetAwareNavComponent {
174
174
  }
175
175
  onPropertyChange(key, nv, ov) {
176
176
  if (key === 'tabindex') {
177
+ // Let the base class handle tabindex setting via setAttr
178
+ super.onPropertyChange(key, nv, ov);
177
179
  return;
178
180
  }
179
181
  if (key === 'autoclose') {
@@ -218,18 +220,23 @@ export class MenuComponent extends DatasetAwareNavComponent {
218
220
  }
219
221
  ngAfterViewInit() {
220
222
  super.ngAfterViewInit();
223
+ // Fix tabindex if it's NaN (ensure it's fixed after view initialization)
224
+ if (this.widget.tabindex !== undefined && (typeof this.widget.tabindex === 'number' && isNaN(this.widget.tabindex))) {
225
+ this.widget.tabindex = 0;
226
+ this.tabindex = 0;
227
+ }
221
228
  styler(this.nativeElement.querySelector('.dropdown-toggle'), this);
222
229
  }
223
230
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MenuComponent, deps: [{ token: i0.Injector }, { token: i1.Router }, { token: i2.UserDefinedExecutionContext }, { token: i2.App }, { token: i3.BsDropdownDirective, optional: true, self: true }, { token: i4.NavComponent, optional: true }, { token: 'select.event', attribute: true }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
224
231
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MenuComponent, isStandalone: true, selector: "[wmMenu]", host: { listeners: { "onShown": "onShow()", "onHidden": "onHide()", "keydown.arrowup": "onKeyDown($event,\"UP-ARROW\")", "mouseenter": "onKeyDown($event,\"MOUSE-ENTER\")", "mouseleave": "onKeyDown($event,\"MOUSE-LEAVE\")", "keydown.arrowdown": "onKeyDown($event,\"DOWN-ARROW\")", "keydown.arrowright": "onKeyDown($event,\"RIGHT-ARROW\")", "keydown.arrowleft": "onKeyDown($event,\"LEFT-ARROW\")", "keydown.enter": "onKeyDown($event,\"ENTER\")" } }, providers: [
225
232
  provideAsWidgetRef(MenuComponent),
226
- ], usesInheritance: true, ngImport: i0, template: "\n\n<ng-template #innerTemplate>\n <i class=\"app-icon {{iconclass}}\"></i>\n <span class=\"caption\" [textContent]=\"caption\"></span>\n <span class=\"pull-right caret fa {{menuCaret}}\"></span>\n</ng-template>\n\n@if (type === 'anchor') {\n <a wmAnchor\n dropdownToggle\n [attr.aria-label]=\"arialabel || 'Menu'\"\n href=\"javascript:void(0);\"\n role=\"button\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n hint.bind=\"hint\"\n class=\"dropdown-toggle {{menuclass}}\"\n shortcutkey.bind=\"shortcutkey\"\n tabindex.bind=\"tabindex\"\n caption.bind=\"caption\"\n iconclass.bind=\"iconclass\"\n iconposition.bind=\"iconposition\"\n badgevalue.bind=\"badgevalue\"\n >\n <span class=\"pull-right caret fa\" [ngClass]=\"[menuCaret]\"></span>\n </a>\n} @else {\n <button wmButton\n dropdownToggle\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n [attr.aria-label]=\"arialabel || 'Menu'\"\n class=\"btn app-button dropdown-toggle {{menuclass}}\"\n hint.bind=\"hint\"\n shortcutkey.bind=\"shortcutkey\"\n tabindex.bind=\"tabindex\"\n caption.bind=\"caption\"\n iconclass.bind=\"iconclass\"\n iconposition.bind=\"iconposition\">\n <span class=\"pull-right caret fa\" [ngClass]=\"[menuCaret]\"></span>\n </button>\n}\n\n<ul *dropdownMenu [items]=\"nodes\" [ngClass]=\"menulayout\" class=\"icon-position-{{iconposition}}\" role=\"menubar\"\nwmMenuDropdown></ul>\n", dependencies: [{ kind: "ngmodule", type: BsDropdownModule }, { kind: "directive", type: i3.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i3.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: TextContentDirective, selector: "[textContent]", inputs: ["textContent"] }, { kind: "component", type: AnchorComponent, selector: "a[wmAnchor]", exportAs: ["wmAnchor"] }, { kind: "component", type: ButtonComponent, selector: "button[wmButton]", exportAs: ["wmButton"] }, { kind: "component", type: MenuDropdownComponent, selector: "ul[wmMenuDropdown]", inputs: ["items"] }] }); }
233
+ ], usesInheritance: true, ngImport: i0, template: "\n\n<ng-template #innerTemplate>\n <i class=\"app-icon {{iconclass}}\"></i>\n <span class=\"caption\" [textContent]=\"caption\"></span>\n <span class=\"pull-right caret fa {{menuCaret}}\"></span>\n</ng-template>\n\n@if (type === 'anchor') {\n <a wmAnchor\n dropdownToggle\n [attr.aria-label]=\"arialabel || 'Menu'\"\n href=\"javascript:void(0);\"\n role=\"button\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n hint.bind=\"hint\"\n class=\"dropdown-toggle {{menuclass}}\"\n shortcutkey.bind=\"shortcutkey\"\n tabindex.bind=\"tabindex\"\n caption.bind=\"caption\"\n iconclass.bind=\"iconclass\"\n iconposition.bind=\"iconposition\"\n badgevalue.bind=\"badgevalue\"\n >\n <span class=\"pull-right caret fa\" [ngClass]=\"[menuCaret]\"></span>\n </a>\n} @else {\n <button wmButton\n dropdownToggle\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n [attr.aria-label]=\"arialabel || 'Menu'\"\n class=\"btn app-button dropdown-toggle {{menuclass}}\"\n hint.bind=\"hint\"\n shortcutkey.bind=\"shortcutkey\"\n tabindex.bind=\"tabindex\"\n caption.bind=\"caption\"\n iconclass.bind=\"iconclass\"\n iconposition.bind=\"iconposition\"\n type=\"button\">\n <span class=\"pull-right caret fa\" [ngClass]=\"[menuCaret]\"></span>\n </button>\n}\n\n<ul *dropdownMenu [items]=\"nodes\" [ngClass]=\"menulayout\" class=\"icon-position-{{iconposition}}\" role=\"menubar\"\nwmMenuDropdown></ul>\n", dependencies: [{ kind: "ngmodule", type: BsDropdownModule }, { kind: "directive", type: i3.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i3.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: TextContentDirective, selector: "[textContent]", inputs: ["textContent"] }, { kind: "component", type: AnchorComponent, selector: "a[wmAnchor]", exportAs: ["wmAnchor"] }, { kind: "component", type: ButtonComponent, selector: "button[wmButton]", exportAs: ["wmButton"] }, { kind: "component", type: MenuDropdownComponent, selector: "ul[wmMenuDropdown]", inputs: ["items"] }] }); }
227
234
  }
228
235
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MenuComponent, decorators: [{
229
236
  type: Component,
230
237
  args: [{ standalone: true, imports: [BsDropdownModule, CommonModule, TextContentDirective, AnchorComponent, ButtonComponent, MenuDropdownComponent], selector: '[wmMenu]', providers: [
231
238
  provideAsWidgetRef(MenuComponent),
232
- ], template: "\n\n<ng-template #innerTemplate>\n <i class=\"app-icon {{iconclass}}\"></i>\n <span class=\"caption\" [textContent]=\"caption\"></span>\n <span class=\"pull-right caret fa {{menuCaret}}\"></span>\n</ng-template>\n\n@if (type === 'anchor') {\n <a wmAnchor\n dropdownToggle\n [attr.aria-label]=\"arialabel || 'Menu'\"\n href=\"javascript:void(0);\"\n role=\"button\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n hint.bind=\"hint\"\n class=\"dropdown-toggle {{menuclass}}\"\n shortcutkey.bind=\"shortcutkey\"\n tabindex.bind=\"tabindex\"\n caption.bind=\"caption\"\n iconclass.bind=\"iconclass\"\n iconposition.bind=\"iconposition\"\n badgevalue.bind=\"badgevalue\"\n >\n <span class=\"pull-right caret fa\" [ngClass]=\"[menuCaret]\"></span>\n </a>\n} @else {\n <button wmButton\n dropdownToggle\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n [attr.aria-label]=\"arialabel || 'Menu'\"\n class=\"btn app-button dropdown-toggle {{menuclass}}\"\n hint.bind=\"hint\"\n shortcutkey.bind=\"shortcutkey\"\n tabindex.bind=\"tabindex\"\n caption.bind=\"caption\"\n iconclass.bind=\"iconclass\"\n iconposition.bind=\"iconposition\">\n <span class=\"pull-right caret fa\" [ngClass]=\"[menuCaret]\"></span>\n </button>\n}\n\n<ul *dropdownMenu [items]=\"nodes\" [ngClass]=\"menulayout\" class=\"icon-position-{{iconposition}}\" role=\"menubar\"\nwmMenuDropdown></ul>\n" }]
239
+ ], template: "\n\n<ng-template #innerTemplate>\n <i class=\"app-icon {{iconclass}}\"></i>\n <span class=\"caption\" [textContent]=\"caption\"></span>\n <span class=\"pull-right caret fa {{menuCaret}}\"></span>\n</ng-template>\n\n@if (type === 'anchor') {\n <a wmAnchor\n dropdownToggle\n [attr.aria-label]=\"arialabel || 'Menu'\"\n href=\"javascript:void(0);\"\n role=\"button\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n hint.bind=\"hint\"\n class=\"dropdown-toggle {{menuclass}}\"\n shortcutkey.bind=\"shortcutkey\"\n tabindex.bind=\"tabindex\"\n caption.bind=\"caption\"\n iconclass.bind=\"iconclass\"\n iconposition.bind=\"iconposition\"\n badgevalue.bind=\"badgevalue\"\n >\n <span class=\"pull-right caret fa\" [ngClass]=\"[menuCaret]\"></span>\n </a>\n} @else {\n <button wmButton\n dropdownToggle\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n [attr.aria-label]=\"arialabel || 'Menu'\"\n class=\"btn app-button dropdown-toggle {{menuclass}}\"\n hint.bind=\"hint\"\n shortcutkey.bind=\"shortcutkey\"\n tabindex.bind=\"tabindex\"\n caption.bind=\"caption\"\n iconclass.bind=\"iconclass\"\n iconposition.bind=\"iconposition\"\n type=\"button\">\n <span class=\"pull-right caret fa\" [ngClass]=\"[menuCaret]\"></span>\n </button>\n}\n\n<ul *dropdownMenu [items]=\"nodes\" [ngClass]=\"menulayout\" class=\"icon-position-{{iconposition}}\" role=\"menubar\"\nwmMenuDropdown></ul>\n" }]
233
240
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.Router }, { type: i2.UserDefinedExecutionContext }, { type: i2.App }, { type: i3.BsDropdownDirective, decorators: [{
234
241
  type: Self
235
242
  }, {
@@ -272,4 +279,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
272
279
  type: HostListener,
273
280
  args: ['keydown.enter', ['$event', '"ENTER"']]
274
281
  }] } });
275
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvbmF2aWdhdGlvbi9tZW51L3NyYy9tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9uYXZpZ2F0aW9uL21lbnUvc3JjL21lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBRUgsU0FBUyxFQUNULFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFHUixRQUFRLEVBQ1IsSUFBSSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUV2QyxPQUFPLEVBQUMsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUU3RSxPQUFPLEVBQ0gsVUFBVSxFQUNWLFFBQVEsRUFDUixHQUFHLEVBQ0gsV0FBVyxFQUNYLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsMkJBQTJCLEVBQzlCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFDSCxjQUFjLEVBQ2Qsd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsTUFBTSxFQUNOLG9CQUFvQixFQUN2QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzNDLE9BQU8sRUFB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MEJBQUksUUFBUTs7MEJBQ2hCLFFBQVE7OzBCQUNSLFNBQVM7MkJBQUMsY0FBYzs7MEJBQ3hCLE1BQU07MkJBQUMsa0JBQWtCOzswQkFBRyxRQUFRO3lDQTlEaEIsTUFBTTtzQkFBOUIsWUFBWTt1QkFBQyxTQUFTO2dCQVNHLE1BQU07c0JBQS9CLFlBQVk7dUJBQUMsVUFBVTtnQkFlOEIsU0FBUztzQkFOOUQsWUFBWTt1QkFBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUM7O3NCQUN4RCxZQUFZO3VCQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUM7O3NCQUN0RCxZQUFZO3VCQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUM7O3NCQUN0RCxZQUFZO3VCQUFDLG1CQUFtQixFQUFFLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQzs7c0JBQzVELFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDOztzQkFDOUQsWUFBWTt1QkFBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUM7O3NCQUM1RCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvaW5wdXQvYnV0dG9uJztcbmltcG9ydCB7IE1lbnVEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4vbWVudS1kcm9wZG93bi9tZW51LWRyb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQXR0cmlidXRlLFxuICAgIENvbXBvbmVudCxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdG9yLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge0JzRHJvcGRvd25EaXJlY3RpdmUsIEJzRHJvcGRvd25Nb2R1bGV9IGZyb20gJ25neC1ib290c3RyYXAvZHJvcGRvd24nO1xuXG5pbXBvcnQge1xuICAgICRhcHBEaWdlc3QsXG4gICAgYWRkQ2xhc3MsXG4gICAgQXBwLFxuICAgIHJlbW92ZUNsYXNzLFxuICAgIHRvZ2dsZUNsYXNzLFxuICAgIHRyaWdnZXJJdGVtQWN0aW9uLFxuICAgIFVzZXJEZWZpbmVkRXhlY3V0aW9uQ29udGV4dFxufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQge1xuICAgIEFVVE9DTE9TRV9UWVBFLFxuICAgIERhdGFzZXRBd2FyZU5hdkNvbXBvbmVudCxcbiAgICBoYXNMaW5rVG9DdXJyZW50UGFnZSxcbiAgICBwcm92aWRlQXNXaWRnZXRSZWYsXG4gICAgc3R5bGVyLFxuICAgIFRleHRDb250ZW50RGlyZWN0aXZlXG59IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHtOYXZDb21wb25lbnR9IGZyb20gJy4vbmF2L25hdi5jb21wb25lbnQnO1xuXG5pbXBvcnQge3JlZ2lzdGVyUHJvcHN9IGZyb20gJy4vbWVudS5wcm9wcyc7XG5pbXBvcnQge2Nsb25lLCBmb3JFYWNoLCBpbmNsdWRlcywgaXNFbXB0eX0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHsgQW5jaG9yQ29tcG9uZW50IH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzaWMvYW5jaG9yJztcblxuZXhwb3J0IGNvbnN0IEtFWUJPQVJEX01PVkVNRU5UUyA9IHtcbiAgICBNT1ZFX1VQOiAnVVAtQVJST1cnLFxuICAgIE1PVkVfTEVGVDogJ0xFRlQtQVJST1cnLFxuICAgIE1PVkVfUklHSFQ6ICdSSUdIVC1BUlJPVycsXG4gICAgTU9WRV9ET1dOOiAnRE9XTi1BUlJPVycsXG4gICAgT05fRU5URVI6ICdFTlRFUicsXG4gICAgT05fTU9VU0VfRU5URVI6ICdNT1VTRS1FTlRFUicsXG4gICAgT05fTU9VU0VfTEVBVkU6ICdNT1VTRS1MRUFWRScsXG4gICAgT05fVEFCOiAnVEFCJyxcbiAgICBPTl9TSElGVF9UQUI6ICdTSElGVC1UQUInLFxuICAgIE9OX0VTQ0FQRTogJ0VTQydcbn07XG5cbmV4cG9ydCBjb25zdCBNRU5VX1BPU0lUSU9OID0ge1xuICAgIFVQX0xFRlQ6ICd1cCxsZWZ0JyxcbiAgICBVUF9SSUdIVDogJ3VwLHJpZ2h0JyxcbiAgICBET1dOX0xFRlQ6ICdkb3duLGxlZnQnLFxuICAgIERPV05fUklHSFQ6ICdkb3duLHJpZ2h0JyxcbiAgICBJTkxJTkU6ICdpbmxpbmUnXG59O1xuXG5jb25zdCBQT1NJVElPTiA9IHtcbiAgICBET1dOX1JJR0hUOiAnZG93bixyaWdodCcsXG4gICAgRE9XTl9MRUZUOiAnZG93bixsZWZ0JyxcbiAgICBVUF9SSUdIVDogJ3VwLHJpZ2h0JyxcbiAgICBVUF9MRUZUOiAndXAsbGVmdCcsXG4gICAgSU5MSU5FOiAnaW5saW5lJ1xufTtcbmNvbnN0IENBUkVUX0NMUyA9IHtcbiAgICBVUDogJ2ZhLWNhcmV0LXVwJyxcbiAgICBET1dOOiAnZmEtY2FyZXQtZG93bidcbn07XG5jb25zdCBQVUxMX0NMUyA9IHtcbiAgICBMRUZUOiAncHVsbC1sZWZ0JyxcbiAgICBSSUdIVDogJ3B1bGwtcmlnaHQnXG59O1xuXG5jb25zdCBBVVRPX09QRU4gPSB7XG4gICAgTkVWRVI6ICduZXZlcicsXG4gICAgQUNUSVZFX1BBR0U6ICdhY3RpdmVwYWdlJyxcbiAgICBBTFdBWVM6ICdhbHdheXMnXG59O1xuXG5jb25zdCBXSURHRVRfQ09ORklHID0geyB3aWRnZXRUeXBlOiAnd20tbWVudScsIGhvc3RDbGFzczogJ2Ryb3Bkb3duIGFwcC1tZW51JyB9O1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQnNEcm9wZG93bk1vZHVsZSwgQ29tbW9uTW9kdWxlLCBUZXh0Q29udGVudERpcmVjdGl2ZSwgQW5jaG9yQ29tcG9uZW50LCBCdXR0b25Db21wb25lbnQsIE1lbnVEcm9wZG93bkNvbXBvbmVudF0sXG4gICAgc2VsZWN0b3I6ICdbd21NZW51XScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL21lbnUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoTWVudUNvbXBvbmVudCksXG5cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE1lbnVDb21wb25lbnQgZXh0ZW5kcyBEYXRhc2V0QXdhcmVOYXZDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcblxuICAgIHB1YmxpYyBtZW51YWxpZ246IHN0cmluZztcbiAgICBwdWJsaWMgbWVudXBvc2l0aW9uOiBzdHJpbmc7XG4gICAgcHVibGljIG1lbnVsYXlvdXQ6IHN0cmluZztcbiAgICBwdWJsaWMgbWVudWNsYXNzOiBzdHJpbmc7XG4gICAgcHVibGljIGxpbmt0YXJnZXQ6IHN0cmluZztcbiAgICBwdWJsaWMgaWNvbmNsYXNzOiBzdHJpbmc7XG4gICAgcHVibGljIGFuaW1hdGVpdGVtczogc3RyaW5nO1xuICAgIHB1YmxpYyBkaXNhYmxlTWVudUNvbnRleHQ6IGJvb2xlYW47XG4gICAgcHVibGljIHNob3dvbmhvdmVyOiBib29sZWFuO1xuICAgIHB1YmxpYyBhdXRvY2xvc2U6IHN0cmluZztcbiAgICBwdWJsaWMgYXV0b29wZW46IHN0cmluZztcbiAgICBwdWJsaWMgaGludDogc3RyaW5nO1xuICAgIHB1YmxpYyBhcmlhbGFiZWw6IHN0cmluZztcblxuICAgIHByaXZhdGUgaXRlbUFjdGlvbkZuOiBGdW5jdGlvbjtcbiAgICBwcml2YXRlIG1lbnVDYXJldCA9ICdmYS1jYXJldC1kb3duJztcbiAgICBwcml2YXRlIF9zZWxlY3RGaXJzdEl0ZW0gPSBmYWxzZTtcblxuICAgIHB1YmxpYyB0eXBlOiBhbnk7XG4gICAgcHVibGljIF9tZW51cG9zaXRpb246IHN0cmluZztcblxuICAgIEBIb3N0TGlzdGVuZXIoJ29uU2hvd24nKSBvblNob3coKSB7XG4gICAgICAgIHRoaXMuX21lbnVwb3NpdGlvbiA9IHRoaXMubWVudXBvc2l0aW9uO1xuICAgICAgICBpZiAodGhpcy5fc2VsZWN0Rmlyc3RJdGVtKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLiRlbGVtZW50LmZpbmQoJz4gdWxbd21tZW51ZHJvcGRvd25dIGxpLmFwcC1tZW51LWl0ZW0nKS5maXJzdCgpLmZpbmQoJz4gYScpLmZvY3VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAkYXBwRGlnZXN0KCk7XG4gICAgfVxuICAgIEBIb3N0TGlzdGVuZXIoJ29uSGlkZGVuJykgb25IaWRlKCkge1xuICAgICAgICB0aGlzLiRlbGVtZW50LmZpbmQoJ2xpJykucmVtb3ZlQ2xhc3MoJ29wZW4nKTtcbiAgICAgICAgdGhpcy5fc2VsZWN0Rmlyc3RJdGVtID0gZmFsc2U7XG4gICAgICAgIC8vIHJlc2V0IHRoZSBtZW51cG9zaXRpb24gd2hlbiBkcm9wZG93biBpcyBjbG9zZWRcbiAgICAgICAgdGhpcy5tZW51cG9zaXRpb24gPSB0aGlzLl9tZW51cG9zaXRpb24gPyB0aGlzLl9tZW51cG9zaXRpb24gOiBNRU5VX1BPU0lUSU9OLkRPV05fUklHSFQ7XG4gICAgICAgIHRoaXMuc2V0TWVudVBvc2l0aW9uKCk7XG4gICAgICAgICRhcHBEaWdlc3QoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93dXAnLCBbJyRldmVudCcsICdcIlVQLUFSUk9XXCInXSlcbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJywgWyckZXZlbnQnLCAnXCJNT1VTRS1FTlRFUlwiJ10pXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScsIFsnJGV2ZW50JywgJ1wiTU9VU0UtTEVBVkVcIiddKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYXJyb3dkb3duJywgWyckZXZlbnQnLCAnXCJET1dOLUFSUk9XXCInXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93cmlnaHQnLCBbJyRldmVudCcsICdcIlJJR0hULUFSUk9XXCInXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93bGVmdCcsIFsnJGV2ZW50JywgJ1wiTEVGVC1BUlJPV1wiJ10pXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lbnRlcicsIFsnJGV2ZW50JywgJ1wiRU5URVJcIiddKSBvbktleURvd24oJGV2ZW50LCBldmVudEFjdGlvbikge1xuICAgICAgICBjb25zdCBLRVlfTU9WRU1FTlRTID0gY2xvbmUoS0VZQk9BUkRfTU9WRU1FTlRTKTtcbiAgICAgICAgaWYgKHRoaXMubWVudXBvc2l0aW9uID09PSBNRU5VX1BPU0lUSU9OLlVQX1JJR0hUKSB7XG4gICAgICAgICAgICBLRVlfTU9WRU1FTlRTLk1PVkVfVVAgPSAnRE9XTi1BUlJPVyc7XG4gICAgICAgICAgICBLRVlfTU9WRU1FTlRTLk1PVkVfRE9XTiA9ICdVUC1BUlJPVyc7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tZW51cG9zaXRpb24gPT09IE1FTlVfUE9TSVRJT04uVVBfTEVGVCkge1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX1VQID0gJ0RPV04tQVJST1cnO1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX0RPV04gPSAnVVAtQVJST1cnO1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX0xFRlQgPSAnUklHSFQtQVJST1cnO1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX1JJR0hUID0gJ0xFRlQtQVJST1cnO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubWVudXBvc2l0aW9uID09PSBNRU5VX1BPU0lUSU9OLkRPV05fTEVGVCkge1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX0xFRlQgPSAnUklHSFQtQVJST1cnO1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX1JJR0hUID0gJ0xFRlQtQVJST1cnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGluY2x1ZGVzKFtLRVlfTU9WRU1FTlRTLk1PVkVfRE9XTiwgS0VZX01PVkVNRU5UUy5NT1ZFX1JJR0hUXSwgZXZlbnRBY3Rpb24pKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuYnNEcm9wZG93bi5pc09wZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RGaXJzdEl0ZW0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuYnNEcm9wZG93bi5zaG93KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQuZmluZCgnPiB1bFt3bW1lbnVkcm9wZG93bl0gbGkuYXBwLW1lbnUtaXRlbScpLmZpcnN0KCkuZmluZCgnPiBhJykuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChldmVudEFjdGlvbiA9PT0gS0VZX01PVkVNRU5UUy5PTl9FTlRFUiB8fCAoZXZlbnRBY3Rpb24gPT09IEtFWV9NT1ZFTUVOVFMuT05fTU9VU0VfRU5URVIgJiYgdGhpcy5zaG93b25ob3ZlcikpIHtcbiAgICAgICAgICAgIHRoaXMuYnNEcm9wZG93bi50b2dnbGUodHJ1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5jbHVkZXMoW0tFWV9NT1ZFTUVOVFMuTU9WRV9VUCwgS0VZX01PVkVNRU5UUy5NT1ZFX0xFRlRdLCBldmVudEFjdGlvbikgfHwgKGV2ZW50QWN0aW9uID09IEtFWV9NT1ZFTUVOVFMuT05fTU9VU0VfTEVBVkUgJiYgdGhpcy5hdXRvY2xvc2UgPT0gQVVUT0NMT1NFX1RZUEUuQUxXQVlTICYmIHRoaXMuc2hvd29uaG92ZXIpKSB7XG4gICAgICAgICAgICB0aGlzLmJzRHJvcGRvd24uaGlkZSgpO1xuICAgICAgICB9XG4gICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmo6IEluamVjdG9yLFxuICAgICAgICBwdWJsaWMgcm91dGU6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSB1c2VyRGVmaW5lZEV4ZWN1dGlvbkNvbnRleHQ6IFVzZXJEZWZpbmVkRXhlY3V0aW9uQ29udGV4dCxcbiAgICAgICAgcHJpdmF0ZSBhcHA6IEFwcCxcbiAgICAgICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBwdWJsaWMgYnNEcm9wZG93bjogQnNEcm9wZG93bkRpcmVjdGl2ZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBwYXJlbnROYXY6IE5hdkNvbXBvbmVudCxcbiAgICAgICAgQEF0dHJpYnV0ZSgnc2VsZWN0LmV2ZW50JykgcHVibGljIHNlbGVjdEV2ZW50Q0I6IHN0cmluZyxcbiAgICAgICAgQEluamVjdCgnRVhQTElDSVRfQ09OVEVYVCcpIEBPcHRpb25hbCgpIGV4cGxpY2l0Q29udGV4dDogYW55XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0NPTkZJRywgZXhwbGljaXRDb250ZXh0KTtcbiAgICAgICAgaWYgKHBhcmVudE5hdikge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlTWVudUNvbnRleHQgPSAhIXBhcmVudE5hdi5kaXNhYmxlTWVudUNvbnRleHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVNZW51Q29udGV4dCA9ICEhc2VsZWN0RXZlbnRDQjtcbiAgICAgICAgfVxuICAgICAgICAvLyBGb3Igc2VsZWN0aW5nIHRoZSBpdGVtIG9uIGxvYWRcbiAgICAgICAgY29uc3QgZGF0YXNldFN1YnNjcmlwdGlvbiA9IHRoaXMubm9kZXMkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWlzRW1wdHkodGhpcy5ub2RlcykpIHtcbiAgICAgICAgICAgICAgICBpZiAoaGFzTGlua1RvQ3VycmVudFBhZ2UodGhpcy5ub2RlcywgdGhpcy5yb3V0ZS51cmwpKSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZHJvcGRvd24tdG9nZ2xlJykgYXMgSFRNTEVsZW1lbnQsICdhY3RpdmUnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gSWYgbWVudSB3aWRnZXQgaXMgaW5zaWRlIG5hdiB3aWRnZXQgdGhlbiBkb250IGNoZWNrIGZvciBpdGVtIGlzYWN0aXZlIHByb3BlcnR5IGJlY2F1c2UgdGhlc2Ugd2lsbCBiZSBoYW5kbGVkIGZvcm0gbmF2IHdpZGdldC5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYXJlbnROYXYpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgaXRlbUZvdW5kID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29uc3QgZ2V0SXRlbSA9IChub2RlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBmb3JFYWNoKG5vZGVzLCAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1Gb3VuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmlzYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbUZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTWVudUl0ZW1TZWxlY3QoeyAkZXZlbnQ6IHt9LCAkaXRlbTogaXRlbSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUcmlnZ2VyIHRoZSBhY3Rpb24gYXNzb2NpYXRlZCB3aXRoIGFjdGl2ZSBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlckl0ZW1BY3Rpb24odGhpcywgaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0VtcHR5KGl0ZW0uY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SXRlbShpdGVtLmNoaWxkcmVuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGdldEl0ZW0odGhpcy5ub2Rlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKCgpID0+IGRhdGFzZXRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG5cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzZXROb2RlcygpIHtcbiAgICAgICAgc3VwZXIucmVzZXROb2RlcygpO1xuICAgICAgICAvLyBvcGVuIHRoZSBtZW51IGlmIGFueSBvZiBpdHMgbWVudSBpdGVtcyBoYXMgbGluayB0byBjdXJyZW50IHBhZ2UgYW5kIGlmIGF1dG9vcGVuIHZhbHVlIGlzICdhY3RpdmUgcGFnZSdcbiAgICAgICAgaWYgKCh0aGlzLmF1dG9vcGVuID09PSBBVVRPX09QRU4uQUNUSVZFX1BBR0UgJiYgaGFzTGlua1RvQ3VycmVudFBhZ2UodGhpcy5ub2RlcywgdGhpcy5yb3V0ZS51cmwpKSB8fCB0aGlzLmF1dG9vcGVuID09PSBBVVRPX09QRU4uQUxXQVlTKSB7XG4gICAgICAgICAgICB0aGlzLmJzRHJvcGRvd24uc2hvdygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuc2V0TWVudVBvc2l0aW9uKCk7XG5cbiAgICAgICAgY29uc3QgY2FuY2VsU3Vic2NyaXB0aW9uID0gdGhpcy5hcHAuc3Vic2NyaWJlKFwiaGlnaGxpZ2h0QWN0aXZlTGlua1wiLCAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgdG9nZ2xlQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5kcm9wZG93bi10b2dnbGUnKSBhcyBIVE1MRWxlbWVudCwgJ2FjdGl2ZScsIGhhc0xpbmtUb0N1cnJlbnRQYWdlKHRoaXMubm9kZXMsIHRoaXMucm91dGUudXJsICkpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcigoKSA9PiBjYW5jZWxTdWJzY3JpcHRpb24oKSk7XG4gICAgfVxuXG4gICAgb25Qcm9wZXJ0eUNoYW5nZShrZXk6IHN0cmluZywgbnY6IGFueSwgb3Y/OiBhbnkpIHtcblxuICAgICAgICBpZiAoa2V5ID09PSAndGFiaW5kZXgnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoa2V5ID09PSAnYXV0b2Nsb3NlJykge1xuICAgICAgICAgICAgdGhpcy5ic0Ryb3Bkb3duLmF1dG9DbG9zZSA9IG52ICE9PSBBVVRPQ0xPU0VfVFlQRS5ESVNBQkxFRDtcbiAgICAgICAgICAgIHRoaXMuYXV0b2Nsb3NlID0gbnY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRNZW51UG9zaXRpb24oKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5tZW51cG9zaXRpb24pIHtcbiAgICAgICAgICAgIGNhc2UgUE9TSVRJT04uRE9XTl9SSUdIVDpcbiAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsICdkcm9wdXAnKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVhbGlnbiA9IFBVTExfQ0xTLkxFRlQ7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51Q2FyZXQgPSBDQVJFVF9DTFMuRE9XTjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUE9TSVRJT04uRE9XTl9MRUZUOlxuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMubmF0aXZlRWxlbWVudCwgJ2Ryb3B1cCcpO1xuICAgICAgICAgICAgICAgIHRoaXMubWVudWFsaWduID0gUFVMTF9DTFMuUklHSFQ7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51Q2FyZXQgPSBDQVJFVF9DTFMuRE9XTjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUE9TSVRJT04uVVBfTEVGVDpcbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsICdkcm9wdXAnKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVhbGlnbiA9IFBVTExfQ0xTLlJJR0hUO1xuICAgICAgICAgICAgICAgIHRoaXMubWVudUNhcmV0ID0gQ0FSRVRfQ0xTLlVQO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBQT1NJVElPTi5VUF9SSUdIVDpcbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsICdkcm9wdXAnKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVhbGlnbiA9IFBVTExfQ0xTLkxFRlQ7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51Q2FyZXQgPSBDQVJFVF9DTFMuVVA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFBPU0lUSU9OLklOTElORTpcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVhbGlnbiA9ICdkcm9waW5saW5lLW1lbnUnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uTWVudUl0ZW1TZWxlY3QoYXJncykge1xuICAgICAgICBjb25zdCB7ICRldmVudCB9ID0gYXJncztcbiAgICAgICAgY29uc3QgJGl0ZW0gPSBhcmdzLiRpdGVtLnZhbHVlO1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3NlbGVjdCcsIHsgJGV2ZW50LCAkaXRlbSB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICBzdHlsZXIodGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5kcm9wZG93bi10b2dnbGUnKSBhcyBIVE1MRWxlbWVudCwgdGhpcyk7XG4gICAgfVxufVxuIiwiXG5cbjxuZy10ZW1wbGF0ZSAjaW5uZXJUZW1wbGF0ZT5cbiAgPGkgY2xhc3M9XCJhcHAtaWNvbiB7e2ljb25jbGFzc319XCI+PC9pPlxuICA8c3BhbiBjbGFzcz1cImNhcHRpb25cIiBbdGV4dENvbnRlbnRdPVwiY2FwdGlvblwiPjwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJwdWxsLXJpZ2h0IGNhcmV0IGZhIHt7bWVudUNhcmV0fX1cIj48L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG5AaWYgKHR5cGUgPT09ICdhbmNob3InKSB7XG4gIDxhIHdtQW5jaG9yXG4gICAgZHJvcGRvd25Ub2dnbGVcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFsYWJlbCB8fCAnTWVudSdcIlxuICAgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCJcbiAgICByb2xlPVwiYnV0dG9uXCJcbiAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcbiAgICBoaW50LmJpbmQ9XCJoaW50XCJcbiAgICBjbGFzcz1cImRyb3Bkb3duLXRvZ2dsZSB7e21lbnVjbGFzc319XCJcbiAgICBzaG9ydGN1dGtleS5iaW5kPVwic2hvcnRjdXRrZXlcIlxuICAgIHRhYmluZGV4LmJpbmQ9XCJ0YWJpbmRleFwiXG4gICAgY2FwdGlvbi5iaW5kPVwiY2FwdGlvblwiXG4gICAgaWNvbmNsYXNzLmJpbmQ9XCJpY29uY2xhc3NcIlxuICAgIGljb25wb3NpdGlvbi5iaW5kPVwiaWNvbnBvc2l0aW9uXCJcbiAgICBiYWRnZXZhbHVlLmJpbmQ9XCJiYWRnZXZhbHVlXCJcbiAgICA+XG4gICAgPHNwYW4gY2xhc3M9XCJwdWxsLXJpZ2h0IGNhcmV0IGZhXCIgW25nQ2xhc3NdPVwiW21lbnVDYXJldF1cIj48L3NwYW4+XG4gIDwvYT5cbn0gQGVsc2Uge1xuICA8YnV0dG9uIHdtQnV0dG9uXG4gICAgZHJvcGRvd25Ub2dnbGVcbiAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFsYWJlbCB8fCAnTWVudSdcIlxuICAgIGNsYXNzPVwiYnRuIGFwcC1idXR0b24gZHJvcGRvd24tdG9nZ2xlIHt7bWVudWNsYXNzfX1cIlxuICAgIGhpbnQuYmluZD1cImhpbnRcIlxuICAgIHNob3J0Y3V0a2V5LmJpbmQ9XCJzaG9ydGN1dGtleVwiXG4gICAgdGFiaW5kZXguYmluZD1cInRhYmluZGV4XCJcbiAgICBjYXB0aW9uLmJpbmQ9XCJjYXB0aW9uXCJcbiAgICBpY29uY2xhc3MuYmluZD1cImljb25jbGFzc1wiXG4gICAgaWNvbnBvc2l0aW9uLmJpbmQ9XCJpY29ucG9zaXRpb25cIj5cbiAgICA8c3BhbiBjbGFzcz1cInB1bGwtcmlnaHQgY2FyZXQgZmFcIiBbbmdDbGFzc109XCJbbWVudUNhcmV0XVwiPjwvc3Bhbj5cbiAgPC9idXR0b24+XG59XG5cbjx1bCAqZHJvcGRvd25NZW51IFtpdGVtc109XCJub2Rlc1wiIFtuZ0NsYXNzXT1cIm1lbnVsYXlvdXRcIiBjbGFzcz1cImljb24tcG9zaXRpb24te3tpY29ucG9zaXRpb259fVwiIHJvbGU9XCJtZW51YmFyXCJcbndtTWVudURyb3Bkb3duPjwvdWw+XG4iXX0=
282
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvbmF2aWdhdGlvbi9tZW51L3NyYy9tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9uYXZpZ2F0aW9uL21lbnUvc3JjL21lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBRUgsU0FBUyxFQUNULFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFHUixRQUFRLEVBQ1IsSUFBSSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUV2QyxPQUFPLEVBQUMsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUU3RSxPQUFPLEVBQ0gsVUFBVSxFQUNWLFFBQVEsRUFDUixHQUFHLEVBQ0gsV0FBVyxFQUNYLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsMkJBQTJCLEVBQzlCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFDSCxjQUFjLEVBQ2Qsd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsTUFBTSxFQUNOLG9CQUFvQixFQUN2QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzNDLE9BQU8sRUFB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bnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2lucHV0L2J1dHRvbic7XG5pbXBvcnQgeyBNZW51RHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL21lbnUtZHJvcGRvd24vbWVudS1kcm9wZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIEF0dHJpYnV0ZSxcbiAgICBDb21wb25lbnQsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbmplY3RvcixcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIFNlbGZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtCc0Ryb3Bkb3duRGlyZWN0aXZlLCBCc0Ryb3Bkb3duTW9kdWxlfSBmcm9tICduZ3gtYm9vdHN0cmFwL2Ryb3Bkb3duJztcblxuaW1wb3J0IHtcbiAgICAkYXBwRGlnZXN0LFxuICAgIGFkZENsYXNzLFxuICAgIEFwcCxcbiAgICByZW1vdmVDbGFzcyxcbiAgICB0b2dnbGVDbGFzcyxcbiAgICB0cmlnZ2VySXRlbUFjdGlvbixcbiAgICBVc2VyRGVmaW5lZEV4ZWN1dGlvbkNvbnRleHRcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBVVRPQ0xPU0VfVFlQRSxcbiAgICBEYXRhc2V0QXdhcmVOYXZDb21wb25lbnQsXG4gICAgaGFzTGlua1RvQ3VycmVudFBhZ2UsXG4gICAgcHJvdmlkZUFzV2lkZ2V0UmVmLFxuICAgIHN0eWxlcixcbiAgICBUZXh0Q29udGVudERpcmVjdGl2ZVxufSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7TmF2Q29tcG9uZW50fSBmcm9tICcuL25hdi9uYXYuY29tcG9uZW50JztcblxuaW1wb3J0IHtyZWdpc3RlclByb3BzfSBmcm9tICcuL21lbnUucHJvcHMnO1xuaW1wb3J0IHtjbG9uZSwgZm9yRWFjaCwgaW5jbHVkZXMsIGlzRW1wdHl9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IEFuY2hvckNvbXBvbmVudCB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2ljL2FuY2hvcic7XG5cbmV4cG9ydCBjb25zdCBLRVlCT0FSRF9NT1ZFTUVOVFMgPSB7XG4gICAgTU9WRV9VUDogJ1VQLUFSUk9XJyxcbiAgICBNT1ZFX0xFRlQ6ICdMRUZULUFSUk9XJyxcbiAgICBNT1ZFX1JJR0hUOiAnUklHSFQtQVJST1cnLFxuICAgIE1PVkVfRE9XTjogJ0RPV04tQVJST1cnLFxuICAgIE9OX0VOVEVSOiAnRU5URVInLFxuICAgIE9OX01PVVNFX0VOVEVSOiAnTU9VU0UtRU5URVInLFxuICAgIE9OX01PVVNFX0xFQVZFOiAnTU9VU0UtTEVBVkUnLFxuICAgIE9OX1RBQjogJ1RBQicsXG4gICAgT05fU0hJRlRfVEFCOiAnU0hJRlQtVEFCJyxcbiAgICBPTl9FU0NBUEU6ICdFU0MnXG59O1xuXG5leHBvcnQgY29uc3QgTUVOVV9QT1NJVElPTiA9IHtcbiAgICBVUF9MRUZUOiAndXAsbGVmdCcsXG4gICAgVVBfUklHSFQ6ICd1cCxyaWdodCcsXG4gICAgRE9XTl9MRUZUOiAnZG93bixsZWZ0JyxcbiAgICBET1dOX1JJR0hUOiAnZG93bixyaWdodCcsXG4gICAgSU5MSU5FOiAnaW5saW5lJ1xufTtcblxuY29uc3QgUE9TSVRJT04gPSB7XG4gICAgRE9XTl9SSUdIVDogJ2Rvd24scmlnaHQnLFxuICAgIERPV05fTEVGVDogJ2Rvd24sbGVmdCcsXG4gICAgVVBfUklHSFQ6ICd1cCxyaWdodCcsXG4gICAgVVBfTEVGVDogJ3VwLGxlZnQnLFxuICAgIElOTElORTogJ2lubGluZSdcbn07XG5jb25zdCBDQVJFVF9DTFMgPSB7XG4gICAgVVA6ICdmYS1jYXJldC11cCcsXG4gICAgRE9XTjogJ2ZhLWNhcmV0LWRvd24nXG59O1xuY29uc3QgUFVMTF9DTFMgPSB7XG4gICAgTEVGVDogJ3B1bGwtbGVmdCcsXG4gICAgUklHSFQ6ICdwdWxsLXJpZ2h0J1xufTtcblxuY29uc3QgQVVUT19PUEVOID0ge1xuICAgIE5FVkVSOiAnbmV2ZXInLFxuICAgIEFDVElWRV9QQUdFOiAnYWN0aXZlcGFnZScsXG4gICAgQUxXQVlTOiAnYWx3YXlzJ1xufTtcblxuY29uc3QgV0lER0VUX0NPTkZJRyA9IHsgd2lkZ2V0VHlwZTogJ3dtLW1lbnUnLCBob3N0Q2xhc3M6ICdkcm9wZG93biBhcHAtbWVudScgfTtcbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0JzRHJvcGRvd25Nb2R1bGUsIENvbW1vbk1vZHVsZSwgVGV4dENvbnRlbnREaXJlY3RpdmUsIEFuY2hvckNvbXBvbmVudCwgQnV0dG9uQ29tcG9uZW50LCBNZW51RHJvcGRvd25Db21wb25lbnRdLFxuICAgIHNlbGVjdG9yOiAnW3dtTWVudV0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKE1lbnVDb21wb25lbnQpLFxuXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBNZW51Q29tcG9uZW50IGV4dGVuZHMgRGF0YXNldEF3YXJlTmF2Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICAgIHN0YXRpYyBpbml0aWFsaXplUHJvcHMgPSByZWdpc3RlclByb3BzKCk7XG5cbiAgICBwdWJsaWMgbWVudWFsaWduOiBzdHJpbmc7XG4gICAgcHVibGljIG1lbnVwb3NpdGlvbjogc3RyaW5nO1xuICAgIHB1YmxpYyBtZW51bGF5b3V0OiBzdHJpbmc7XG4gICAgcHVibGljIG1lbnVjbGFzczogc3RyaW5nO1xuICAgIHB1YmxpYyBsaW5rdGFyZ2V0OiBzdHJpbmc7XG4gICAgcHVibGljIGljb25jbGFzczogc3RyaW5nO1xuICAgIHB1YmxpYyBhbmltYXRlaXRlbXM6IHN0cmluZztcbiAgICBwdWJsaWMgZGlzYWJsZU1lbnVDb250ZXh0OiBib29sZWFuO1xuICAgIHB1YmxpYyBzaG93b25ob3ZlcjogYm9vbGVhbjtcbiAgICBwdWJsaWMgYXV0b2Nsb3NlOiBzdHJpbmc7XG4gICAgcHVibGljIGF1dG9vcGVuOiBzdHJpbmc7XG4gICAgcHVibGljIGhpbnQ6IHN0cmluZztcbiAgICBwdWJsaWMgYXJpYWxhYmVsOiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIGl0ZW1BY3Rpb25GbjogRnVuY3Rpb247XG4gICAgcHJpdmF0ZSBtZW51Q2FyZXQgPSAnZmEtY2FyZXQtZG93bic7XG4gICAgcHJpdmF0ZSBfc2VsZWN0Rmlyc3RJdGVtID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgdHlwZTogYW55O1xuICAgIHB1YmxpYyBfbWVudXBvc2l0aW9uOiBzdHJpbmc7XG5cbiAgICBASG9zdExpc3RlbmVyKCdvblNob3duJykgb25TaG93KCkge1xuICAgICAgICB0aGlzLl9tZW51cG9zaXRpb24gPSB0aGlzLm1lbnVwb3NpdGlvbjtcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdEZpcnN0SXRlbSkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy4kZWxlbWVudC5maW5kKCc+IHVsW3dtbWVudWRyb3Bkb3duXSBsaS5hcHAtbWVudS1pdGVtJykuZmlyc3QoKS5maW5kKCc+IGEnKS5mb2N1cygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgJGFwcERpZ2VzdCgpO1xuICAgIH1cbiAgICBASG9zdExpc3RlbmVyKCdvbkhpZGRlbicpIG9uSGlkZSgpIHtcbiAgICAgICAgdGhpcy4kZWxlbWVudC5maW5kKCdsaScpLnJlbW92ZUNsYXNzKCdvcGVuJyk7XG4gICAgICAgIHRoaXMuX3NlbGVjdEZpcnN0SXRlbSA9IGZhbHNlO1xuICAgICAgICAvLyByZXNldCB0aGUgbWVudXBvc2l0aW9uIHdoZW4gZHJvcGRvd24gaXMgY2xvc2VkXG4gICAgICAgIHRoaXMubWVudXBvc2l0aW9uID0gdGhpcy5fbWVudXBvc2l0aW9uID8gdGhpcy5fbWVudXBvc2l0aW9uIDogTUVOVV9QT1NJVElPTi5ET1dOX1JJR0hUO1xuICAgICAgICB0aGlzLnNldE1lbnVQb3NpdGlvbigpO1xuICAgICAgICAkYXBwRGlnZXN0KCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5hcnJvd3VwJywgWyckZXZlbnQnLCAnXCJVUC1BUlJPV1wiJ10pXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicsIFsnJGV2ZW50JywgJ1wiTU9VU0UtRU5URVJcIiddKVxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBbJyRldmVudCcsICdcIk1PVVNFLUxFQVZFXCInXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93ZG93bicsIFsnJGV2ZW50JywgJ1wiRE9XTi1BUlJPV1wiJ10pXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5hcnJvd3JpZ2h0JywgWyckZXZlbnQnLCAnXCJSSUdIVC1BUlJPV1wiJ10pXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5hcnJvd2xlZnQnLCBbJyRldmVudCcsICdcIkxFRlQtQVJST1dcIiddKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uZW50ZXInLCBbJyRldmVudCcsICdcIkVOVEVSXCInXSkgb25LZXlEb3duKCRldmVudCwgZXZlbnRBY3Rpb24pIHtcbiAgICAgICAgY29uc3QgS0VZX01PVkVNRU5UUyA9IGNsb25lKEtFWUJPQVJEX01PVkVNRU5UUyk7XG4gICAgICAgIGlmICh0aGlzLm1lbnVwb3NpdGlvbiA9PT0gTUVOVV9QT1NJVElPTi5VUF9SSUdIVCkge1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX1VQID0gJ0RPV04tQVJST1cnO1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX0RPV04gPSAnVVAtQVJST1cnO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubWVudXBvc2l0aW9uID09PSBNRU5VX1BPU0lUSU9OLlVQX0xFRlQpIHtcbiAgICAgICAgICAgIEtFWV9NT1ZFTUVOVFMuTU9WRV9VUCA9ICdET1dOLUFSUk9XJztcbiAgICAgICAgICAgIEtFWV9NT1ZFTUVOVFMuTU9WRV9ET1dOID0gJ1VQLUFSUk9XJztcbiAgICAgICAgICAgIEtFWV9NT1ZFTUVOVFMuTU9WRV9MRUZUID0gJ1JJR0hULUFSUk9XJztcbiAgICAgICAgICAgIEtFWV9NT1ZFTUVOVFMuTU9WRV9SSUdIVCA9ICdMRUZULUFSUk9XJztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1lbnVwb3NpdGlvbiA9PT0gTUVOVV9QT1NJVElPTi5ET1dOX0xFRlQpIHtcbiAgICAgICAgICAgIEtFWV9NT1ZFTUVOVFMuTU9WRV9MRUZUID0gJ1JJR0hULUFSUk9XJztcbiAgICAgICAgICAgIEtFWV9NT1ZFTUVOVFMuTU9WRV9SSUdIVCA9ICdMRUZULUFSUk9XJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbmNsdWRlcyhbS0VZX01PVkVNRU5UUy5NT1ZFX0RPV04sIEtFWV9NT1ZFTUVOVFMuTU9WRV9SSUdIVF0sIGV2ZW50QWN0aW9uKSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmJzRHJvcGRvd24uaXNPcGVuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0Rmlyc3RJdGVtID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmJzRHJvcGRvd24uc2hvdygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRlbGVtZW50LmZpbmQoJz4gdWxbd21tZW51ZHJvcGRvd25dIGxpLmFwcC1tZW51LWl0ZW0nKS5maXJzdCgpLmZpbmQoJz4gYScpLmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnRBY3Rpb24gPT09IEtFWV9NT1ZFTUVOVFMuT05fRU5URVIgfHwgKGV2ZW50QWN0aW9uID09PSBLRVlfTU9WRU1FTlRTLk9OX01PVVNFX0VOVEVSICYmIHRoaXMuc2hvd29uaG92ZXIpKSB7XG4gICAgICAgICAgICB0aGlzLmJzRHJvcGRvd24udG9nZ2xlKHRydWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGluY2x1ZGVzKFtLRVlfTU9WRU1FTlRTLk1PVkVfVVAsIEtFWV9NT1ZFTUVOVFMuTU9WRV9MRUZUXSwgZXZlbnRBY3Rpb24pIHx8IChldmVudEFjdGlvbiA9PSBLRVlfTU9WRU1FTlRTLk9OX01PVVNFX0xFQVZFICYmIHRoaXMuYXV0b2Nsb3NlID09IEFVVE9DTE9TRV9UWVBFLkFMV0FZUyAmJiB0aGlzLnNob3dvbmhvdmVyKSkge1xuICAgICAgICAgICAgdGhpcy5ic0Ryb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgfVxuICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgaW5qOiBJbmplY3RvcixcbiAgICAgICAgcHVibGljIHJvdXRlOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgdXNlckRlZmluZWRFeGVjdXRpb25Db250ZXh0OiBVc2VyRGVmaW5lZEV4ZWN1dGlvbkNvbnRleHQsXG4gICAgICAgIHByaXZhdGUgYXBwOiBBcHAsXG4gICAgICAgIEBTZWxmKCkgQE9wdGlvbmFsKCkgcHVibGljIGJzRHJvcGRvd246IEJzRHJvcGRvd25EaXJlY3RpdmUsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcGFyZW50TmF2OiBOYXZDb21wb25lbnQsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ3NlbGVjdC5ldmVudCcpIHB1YmxpYyBzZWxlY3RFdmVudENCOiBzdHJpbmcsXG4gICAgICAgIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueVxuICAgICkge1xuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9DT05GSUcsIGV4cGxpY2l0Q29udGV4dCk7XG4gICAgICAgIGlmIChwYXJlbnROYXYpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZU1lbnVDb250ZXh0ID0gISFwYXJlbnROYXYuZGlzYWJsZU1lbnVDb250ZXh0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlTWVudUNvbnRleHQgPSAhIXNlbGVjdEV2ZW50Q0I7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRm9yIHNlbGVjdGluZyB0aGUgaXRlbSBvbiBsb2FkXG4gICAgICAgIGNvbnN0IGRhdGFzZXRTdWJzY3JpcHRpb24gPSB0aGlzLm5vZGVzJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFpc0VtcHR5KHRoaXMubm9kZXMpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGhhc0xpbmtUb0N1cnJlbnRQYWdlKHRoaXMubm9kZXMsIHRoaXMucm91dGUudXJsKSkge1xuICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmRyb3Bkb3duLXRvZ2dsZScpIGFzIEhUTUxFbGVtZW50LCAnYWN0aXZlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIElmIG1lbnUgd2lkZ2V0IGlzIGluc2lkZSBuYXYgd2lkZ2V0IHRoZW4gZG9udCBjaGVjayBmb3IgaXRlbSBpc2FjdGl2ZSBwcm9wZXJ0eSBiZWNhdXNlIHRoZXNlIHdpbGwgYmUgaGFuZGxlZCBmb3JtIG5hdiB3aWRnZXQuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGFyZW50TmF2KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IGl0ZW1Gb3VuZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdldEl0ZW0gPSAobm9kZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZm9yRWFjaChub2RlcywgKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtRm91bmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5pc2FjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1Gb3VuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk1lbnVJdGVtU2VsZWN0KHsgJGV2ZW50OiB7fSwgJGl0ZW06IGl0ZW0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVHJpZ2dlciB0aGUgYWN0aW9uIGFzc29jaWF0ZWQgd2l0aCBhY3RpdmUgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJJdGVtQWN0aW9uKHRoaXMsIGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNFbXB0eShpdGVtLmNoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEl0ZW0oaXRlbS5jaGlsZHJlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBnZXRJdGVtKHRoaXMubm9kZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcigoKSA9PiBkYXRhc2V0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xuXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlc2V0Tm9kZXMoKSB7XG4gICAgICAgIHN1cGVyLnJlc2V0Tm9kZXMoKTtcbiAgICAgICAgLy8gb3BlbiB0aGUgbWVudSBpZiBhbnkgb2YgaXRzIG1lbnUgaXRlbXMgaGFzIGxpbmsgdG8gY3VycmVudCBwYWdlIGFuZCBpZiBhdXRvb3BlbiB2YWx1ZSBpcyAnYWN0aXZlIHBhZ2UnXG4gICAgICAgIGlmICgodGhpcy5hdXRvb3BlbiA9PT0gQVVUT19PUEVOLkFDVElWRV9QQUdFICYmIGhhc0xpbmtUb0N1cnJlbnRQYWdlKHRoaXMubm9kZXMsIHRoaXMucm91dGUudXJsKSkgfHwgdGhpcy5hdXRvb3BlbiA9PT0gQVVUT19PUEVOLkFMV0FZUykge1xuICAgICAgICAgICAgdGhpcy5ic0Ryb3Bkb3duLnNob3coKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLnNldE1lbnVQb3NpdGlvbigpO1xuXG4gICAgICAgIGNvbnN0IGNhbmNlbFN1YnNjcmlwdGlvbiA9IHRoaXMuYXBwLnN1YnNjcmliZShcImhpZ2hsaWdodEFjdGl2ZUxpbmtcIiwgKGRhdGEpID0+IHtcbiAgICAgICAgICAgIHRvZ2dsZUNsYXNzKHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZHJvcGRvd24tdG9nZ2xlJykgYXMgSFRNTEVsZW1lbnQsICdhY3RpdmUnLCBoYXNMaW5rVG9DdXJyZW50UGFnZSh0aGlzLm5vZGVzLCB0aGlzLnJvdXRlLnVybCApKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4gY2FuY2VsU3Vic2NyaXB0aW9uKCkpO1xuICAgIH1cblxuICAgIG9uUHJvcGVydHlDaGFuZ2Uoa2V5OiBzdHJpbmcsIG52OiBhbnksIG92PzogYW55KSB7XG5cbiAgICAgICAgaWYgKGtleSA9PT0gJ3RhYmluZGV4Jykge1xuICAgICAgICAgICAgLy8gTGV0IHRoZSBiYXNlIGNsYXNzIGhhbmRsZSB0YWJpbmRleCBzZXR0aW5nIHZpYSBzZXRBdHRyXG4gICAgICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChrZXkgPT09ICdhdXRvY2xvc2UnKSB7XG4gICAgICAgICAgICB0aGlzLmJzRHJvcGRvd24uYXV0b0Nsb3NlID0gbnYgIT09IEFVVE9DTE9TRV9UWVBFLkRJU0FCTEVEO1xuICAgICAgICAgICAgdGhpcy5hdXRvY2xvc2UgPSBudjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldE1lbnVQb3NpdGlvbigpIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLm1lbnVwb3NpdGlvbikge1xuICAgICAgICAgICAgY2FzZSBQT1NJVElPTi5ET1dOX1JJR0hUOlxuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMubmF0aXZlRWxlbWVudCwgJ2Ryb3B1cCcpO1xuICAgICAgICAgICAgICAgIHRoaXMubWVudWFsaWduID0gUFVMTF9DTFMuTEVGVDtcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVDYXJldCA9IENBUkVUX0NMUy5ET1dOO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBQT1NJVElPTi5ET1dOX0xFRlQ6XG4gICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LCAnZHJvcHVwJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51YWxpZ24gPSBQVUxMX0NMUy5SSUdIVDtcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVDYXJldCA9IENBUkVUX0NMUy5ET1dOO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBQT1NJVElPTi5VUF9MRUZUOlxuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMubmF0aXZlRWxlbWVudCwgJ2Ryb3B1cCcpO1xuICAgICAgICAgICAgICAgIHRoaXMubWVudWFsaWduID0gUFVMTF9DTFMuUklHSFQ7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51Q2FyZXQgPSBDQVJFVF9DTFMuVVA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFBPU0lUSU9OLlVQX1JJR0hUOlxuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMubmF0aXZlRWxlbWVudCwgJ2Ryb3B1cCcpO1xuICAgICAgICAgICAgICAgIHRoaXMubWVudWFsaWduID0gUFVMTF9DTFMuTEVGVDtcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVDYXJldCA9IENBUkVUX0NMUy5VUDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUE9TSVRJT04uSU5MSU5FOlxuICAgICAgICAgICAgICAgIHRoaXMubWVudWFsaWduID0gJ2Ryb3BpbmxpbmUtbWVudSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25NZW51SXRlbVNlbGVjdChhcmdzKSB7XG4gICAgICAgIGNvbnN0IHsgJGV2ZW50IH0gPSBhcmdzO1xuICAgICAgICBjb25zdCAkaXRlbSA9IGFyZ3MuJGl0ZW0udmFsdWU7XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnc2VsZWN0JywgeyAkZXZlbnQsICRpdGVtIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICAgIC8vIEZpeCB0YWJpbmRleCBpZiBpdCdzIE5hTiAoZW5zdXJlIGl0J3MgZml4ZWQgYWZ0ZXIgdmlldyBpbml0aWFsaXphdGlvbilcbiAgICAgICAgaWYgKHRoaXMud2lkZ2V0LnRhYmluZGV4ICE9PSB1bmRlZmluZWQgJiYgKHR5cGVvZiB0aGlzLndpZGdldC50YWJpbmRleCA9PT0gJ251bWJlcicgJiYgaXNOYU4odGhpcy53aWRnZXQudGFiaW5kZXgpKSkge1xuICAgICAgICAgICAgdGhpcy53aWRnZXQudGFiaW5kZXggPSAwO1xuICAgICAgICAgICAgKHRoaXMgYXMgYW55KS50YWJpbmRleCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgc3R5bGVyKHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZHJvcGRvd24tdG9nZ2xlJykgYXMgSFRNTEVsZW1lbnQsIHRoaXMpO1xuICAgIH1cbn1cbiIsIlxuXG48bmctdGVtcGxhdGUgI2lubmVyVGVtcGxhdGU+XG4gIDxpIGNsYXNzPVwiYXBwLWljb24ge3tpY29uY2xhc3N9fVwiPjwvaT5cbiAgPHNwYW4gY2xhc3M9XCJjYXB0aW9uXCIgW3RleHRDb250ZW50XT1cImNhcHRpb25cIj48L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwicHVsbC1yaWdodCBjYXJldCBmYSB7e21lbnVDYXJldH19XCI+PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuQGlmICh0eXBlID09PSAnYW5jaG9yJykge1xuICA8YSB3bUFuY2hvclxuICAgIGRyb3Bkb3duVG9nZ2xlXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhbGFiZWwgfHwgJ01lbnUnXCJcbiAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiXG4gICAgcm9sZT1cImJ1dHRvblwiXG4gICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXG4gICAgaGludC5iaW5kPVwiaGludFwiXG4gICAgY2xhc3M9XCJkcm9wZG93bi10b2dnbGUge3ttZW51Y2xhc3N9fVwiXG4gICAgc2hvcnRjdXRrZXkuYmluZD1cInNob3J0Y3V0a2V5XCJcbiAgICB0YWJpbmRleC5iaW5kPVwidGFiaW5kZXhcIlxuICAgIGNhcHRpb24uYmluZD1cImNhcHRpb25cIlxuICAgIGljb25jbGFzcy5iaW5kPVwiaWNvbmNsYXNzXCJcbiAgICBpY29ucG9zaXRpb24uYmluZD1cImljb25wb3NpdGlvblwiXG4gICAgYmFkZ2V2YWx1ZS5iaW5kPVwiYmFkZ2V2YWx1ZVwiXG4gICAgPlxuICAgIDxzcGFuIGNsYXNzPVwicHVsbC1yaWdodCBjYXJldCBmYVwiIFtuZ0NsYXNzXT1cIlttZW51Q2FyZXRdXCI+PC9zcGFuPlxuICA8L2E+XG59IEBlbHNlIHtcbiAgPGJ1dHRvbiB3bUJ1dHRvblxuICAgIGRyb3Bkb3duVG9nZ2xlXG4gICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhbGFiZWwgfHwgJ01lbnUnXCJcbiAgICBjbGFzcz1cImJ0biBhcHAtYnV0dG9uIGRyb3Bkb3duLXRvZ2dsZSB7e21lbnVjbGFzc319XCJcbiAgICBoaW50LmJpbmQ9XCJoaW50XCJcbiAgICBzaG9ydGN1dGtleS5iaW5kPVwic2hvcnRjdXRrZXlcIlxuICAgIHRhYmluZGV4LmJpbmQ9XCJ0YWJpbmRleFwiXG4gICAgY2FwdGlvbi5iaW5kPVwiY2FwdGlvblwiXG4gICAgaWNvbmNsYXNzLmJpbmQ9XCJpY29uY2xhc3NcIlxuICAgIGljb25wb3NpdGlvbi5iaW5kPVwiaWNvbnBvc2l0aW9uXCJcbiAgICB0eXBlPVwiYnV0dG9uXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJwdWxsLXJpZ2h0IGNhcmV0IGZhXCIgW25nQ2xhc3NdPVwiW21lbnVDYXJldF1cIj48L3NwYW4+XG4gIDwvYnV0dG9uPlxufVxuXG48dWwgKmRyb3Bkb3duTWVudSBbaXRlbXNdPVwibm9kZXNcIiBbbmdDbGFzc109XCJtZW51bGF5b3V0XCIgY2xhc3M9XCJpY29uLXBvc2l0aW9uLXt7aWNvbnBvc2l0aW9ufX1cIiByb2xlPVwibWVudWJhclwiXG53bU1lbnVEcm9wZG93bj48L3VsPlxuIl19
@@ -28,6 +28,11 @@ export class NavItemDirective extends StylableComponent {
28
28
  removeClass(this.nativeElement, 'active', true);
29
29
  super.ngOnDetach();
30
30
  }
31
+ ngOnDestroy() {
32
+ // MEMORY LEAK FIX: Clear ContentChild reference
33
+ this.innerLink = null;
34
+ super.ngOnDestroy();
35
+ }
31
36
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NavItemDirective, deps: [{ token: i0.Injector }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
32
37
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: NavItemDirective, isStandalone: true, selector: "[wmNavItem]", host: { listeners: { "click": "makeActive()", "keydown.enter": "makeActive()" } }, providers: [
33
38
  provideAsWidgetRef(NavItemDirective)
@@ -58,4 +63,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
58
63
  type: HostListener,
59
64
  args: ['keydown.enter']
60
65
  }] } });
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LWl0ZW0uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL25hdmlnYXRpb24vbWVudS9zcmMvbmF2L25hdi1pdGVtL25hdi1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFpQixRQUFRLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRS9HLE9BQU8sRUFBQyxRQUFRLEVBQUUsV0FBVyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQUlqRCxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUM7QUFDbkMsTUFBTSxhQUFhLEdBQUcsRUFBQyxVQUFVLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUMsQ0FBQztBQVUxRSxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsaUJBQWlCO2FBQzVDLG9CQUFlLEdBQUcsYUFBYSxFQUFFLEFBQWxCLENBQW1CO0lBS3pDLFVBQVU7UUFDTixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQztRQUNqRCxDQUFDLENBQUMsVUFBeUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkUsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEIsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDM0MsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZLEdBQWEsRUFBMEMsZUFBb0I7UUFDbkYsS0FBSyxDQUFDLEdBQUcsRUFBRSxhQUFhLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDM0MsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTSxlQUFlO1FBQ2xCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELENBQUM7SUFDTCxDQUFDO0lBRU0sVUFBVTtRQUNiLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNoRCxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdkIsQ0FBQzsrR0E1QlEsZ0JBQWdCLDBDQWNVLGtCQUFrQjttR0FkNUMsZ0JBQWdCLDZJQUpkO1lBQ1Asa0JBQWtCLENBQUMsZ0JBQWdCLENBQUM7U0FDdkMsaUVBSWEsZUFBZTs7NEZBRnBCLGdCQUFnQjtrQkFSNUIsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDZCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLFNBQVMsRUFBRTt3QkFDUCxrQkFBa0Isa0JBQWtCO3FCQUN2QztpQkFDSjs7MEJBZStCLE1BQU07MkJBQUMsa0JBQWtCOzswQkFBRyxRQUFRO3lDQVpqQyxTQUFTO3NCQUF2QyxZQUFZO3VCQUFDLGVBQWU7Z0JBSTdCLFVBQVU7c0JBRlQsWUFBWTt1QkFBQyxPQUFPOztzQkFDcEIsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb250ZW50Q2hpbGQsIERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBJbmplY3RvciwgQWZ0ZXJWaWV3SW5pdCwgT3B0aW9uYWwsIEluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7YWRkQ2xhc3MsIHJlbW92ZUNsYXNzfSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBBUFBMWV9TVFlMRVNfVFlQRSwgcHJvdmlkZUFzV2lkZ2V0UmVmLCBTdHlsYWJsZUNvbXBvbmVudCwgc3R5bGVyIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQgeyBBbmNob3JDb21wb25lbnQgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNpYy9hbmNob3InO1xuXG5pbXBvcnQgeyByZWdpc3RlclByb3BzIH0gZnJvbSAnLi9uYXYtaXRlbS5wcm9wcyc7XG5cbmRlY2xhcmUgY29uc3QgJDtcblxuY29uc3QgREVGQVVMVF9DTFMgPSAnYXBwLW5hdi1pdGVtJztcbmNvbnN0IFdJREdFVF9DT05GSUcgPSB7d2lkZ2V0VHlwZTogJ3dtLW5hdi1pdGVtJywgaG9zdENsYXNzOiBERUZBVUxUX0NMU307XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW3dtTmF2SXRlbV0nLFxuICAgIGV4cG9ydEFzOiAnbmF2SXRlbVJlZicsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVBc1dpZGdldFJlZihOYXZJdGVtRGlyZWN0aXZlKVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTmF2SXRlbURpcmVjdGl2ZSBleHRlbmRzIFN0eWxhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuICAgIEBDb250ZW50Q2hpbGQoQW5jaG9yQ29tcG9uZW50KSBpbm5lckxpbms7XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lbnRlcicpXG4gICAgbWFrZUFjdGl2ZSgpIHtcbiAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IHRoaXMubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlO1xuICAgICAgICAkKHBhcmVudE5vZGUgYXMgSFRNTEVsZW1lbnQpLmZpbmQoJz4gbGkuYWN0aXZlJykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpO1xuICAgICAgICBpZiAodGhpcy5pc0F0dGFjaGVkKSB7XG4gICAgICAgICAgICBhZGRDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsICdhY3RpdmUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGluajogSW5qZWN0b3IsIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueSkge1xuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9DT05GSUcsIGV4cGxpY2l0Q29udGV4dCk7XG4gICAgICAgIHN0eWxlcih0aGlzLm5hdGl2ZUVsZW1lbnQsIHRoaXMsIEFQUExZX1NUWUxFU19UWVBFLkNPTlRBSU5FUik7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5uZXJMaW5rKSB7XG4gICAgICAgICAgICB0aGlzLmlubmVyTGluay5vbkFjdGl2ZSgoKSA9PiB0aGlzLm1ha2VBY3RpdmUoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRldGFjaCgpIHtcbiAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LCAnYWN0aXZlJywgdHJ1ZSk7XG4gICAgICAgIHN1cGVyLm5nT25EZXRhY2goKTtcbiAgICB9XG59XG4iXX0=
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LWl0ZW0uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL25hdmlnYXRpb24vbWVudS9zcmMvbmF2L25hdi1pdGVtL25hdi1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUE0QixRQUFRLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTFILE9BQU8sRUFBQyxRQUFRLEVBQUUsV0FBVyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQUlqRCxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUM7QUFDbkMsTUFBTSxhQUFhLEdBQUcsRUFBQyxVQUFVLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUMsQ0FBQztBQVUxRSxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsaUJBQWlCO2FBQzVDLG9CQUFlLEdBQUcsYUFBYSxFQUFFLEFBQWxCLENBQW1CO0lBS3pDLFVBQVU7UUFDTixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQztRQUNqRCxDQUFDLENBQUMsVUFBeUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkUsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEIsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDM0MsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZLEdBQWEsRUFBMEMsZUFBb0I7UUFDbkYsS0FBSyxDQUFDLEdBQUcsRUFBRSxhQUFhLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDM0MsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTSxlQUFlO1FBQ2xCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELENBQUM7SUFDTCxDQUFDO0lBRU0sVUFBVTtRQUNiLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNoRCxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELFdBQVc7UUFDUCxnREFBZ0Q7UUFDaEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFFdEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7K0dBbkNRLGdCQUFnQiwwQ0FjVSxrQkFBa0I7bUdBZDVDLGdCQUFnQiw2SUFKZDtZQUNQLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDO1NBQ3ZDLGlFQUlhLGVBQWU7OzRGQUZwQixnQkFBZ0I7a0JBUjVCLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFFBQVEsRUFBRSxZQUFZO29CQUN0QixTQUFTLEVBQUU7d0JBQ1Asa0JBQWtCLGtCQUFrQjtxQkFDdkM7aUJBQ0o7OzBCQWUrQixNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQUcsUUFBUTt5Q0FaakMsU0FBUztzQkFBdkMsWUFBWTt1QkFBQyxlQUFlO2dCQUk3QixVQUFVO3NCQUZULFlBQVk7dUJBQUMsT0FBTzs7c0JBQ3BCLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29udGVudENoaWxkLCBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgSW5qZWN0b3IsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT3B0aW9uYWwsIEluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7YWRkQ2xhc3MsIHJlbW92ZUNsYXNzfSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBBUFBMWV9TVFlMRVNfVFlQRSwgcHJvdmlkZUFzV2lkZ2V0UmVmLCBTdHlsYWJsZUNvbXBvbmVudCwgc3R5bGVyIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQgeyBBbmNob3JDb21wb25lbnQgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNpYy9hbmNob3InO1xuXG5pbXBvcnQgeyByZWdpc3RlclByb3BzIH0gZnJvbSAnLi9uYXYtaXRlbS5wcm9wcyc7XG5cbmRlY2xhcmUgY29uc3QgJDtcblxuY29uc3QgREVGQVVMVF9DTFMgPSAnYXBwLW5hdi1pdGVtJztcbmNvbnN0IFdJREdFVF9DT05GSUcgPSB7d2lkZ2V0VHlwZTogJ3dtLW5hdi1pdGVtJywgaG9zdENsYXNzOiBERUZBVUxUX0NMU307XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW3dtTmF2SXRlbV0nLFxuICAgIGV4cG9ydEFzOiAnbmF2SXRlbVJlZicsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVBc1dpZGdldFJlZihOYXZJdGVtRGlyZWN0aXZlKVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTmF2SXRlbURpcmVjdGl2ZSBleHRlbmRzIFN0eWxhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuICAgIEBDb250ZW50Q2hpbGQoQW5jaG9yQ29tcG9uZW50KSBpbm5lckxpbms7XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lbnRlcicpXG4gICAgbWFrZUFjdGl2ZSgpIHtcbiAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IHRoaXMubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlO1xuICAgICAgICAkKHBhcmVudE5vZGUgYXMgSFRNTEVsZW1lbnQpLmZpbmQoJz4gbGkuYWN0aXZlJykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpO1xuICAgICAgICBpZiAodGhpcy5pc0F0dGFjaGVkKSB7XG4gICAgICAgICAgICBhZGRDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsICdhY3RpdmUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGluajogSW5qZWN0b3IsIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueSkge1xuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9DT05GSUcsIGV4cGxpY2l0Q29udGV4dCk7XG4gICAgICAgIHN0eWxlcih0aGlzLm5hdGl2ZUVsZW1lbnQsIHRoaXMsIEFQUExZX1NUWUxFU19UWVBFLkNPTlRBSU5FUik7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5uZXJMaW5rKSB7XG4gICAgICAgICAgICB0aGlzLmlubmVyTGluay5vbkFjdGl2ZSgoKSA9PiB0aGlzLm1ha2VBY3RpdmUoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRldGFjaCgpIHtcbiAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LCAnYWN0aXZlJywgdHJ1ZSk7XG4gICAgICAgIHN1cGVyLm5nT25EZXRhY2goKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBDbGVhciBDb250ZW50Q2hpbGQgcmVmZXJlbmNlXG4gICAgICAgIHRoaXMuaW5uZXJMaW5rID0gbnVsbDtcblxuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cbiJdfQ==