primeng 18.0.0-rc.2 → 19.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1091) hide show
  1. package/LICENSE.md +1 -1
  2. package/autocomplete/autocomplete.d.ts +11 -11
  3. package/base/style/basestyle.d.ts +11 -11
  4. package/config/primeng.d.ts +12 -6
  5. package/config/provideprimeng.d.ts +1 -12
  6. package/config/themeprovider.d.ts +10 -4
  7. package/confirmdialog/confirmdialog.d.ts +1 -0
  8. package/fesm2022/primeng-accordion.mjs +12 -12
  9. package/fesm2022/primeng-accordion.mjs.map +1 -1
  10. package/fesm2022/primeng-animateonscroll.mjs +1 -1
  11. package/fesm2022/primeng-animateonscroll.mjs.map +1 -1
  12. package/fesm2022/primeng-api.mjs +5 -5
  13. package/fesm2022/primeng-api.mjs.map +1 -1
  14. package/fesm2022/primeng-autocomplete.mjs +135 -136
  15. package/fesm2022/primeng-autocomplete.mjs.map +1 -1
  16. package/fesm2022/primeng-autofocus.mjs +1 -1
  17. package/fesm2022/primeng-autofocus.mjs.map +1 -1
  18. package/fesm2022/primeng-avatar.mjs +2 -2
  19. package/fesm2022/primeng-avatar.mjs.map +1 -1
  20. package/fesm2022/primeng-avatargroup.mjs +2 -2
  21. package/fesm2022/primeng-avatargroup.mjs.map +1 -1
  22. package/fesm2022/primeng-badge.mjs +3 -3
  23. package/fesm2022/primeng-badge.mjs.map +1 -1
  24. package/fesm2022/primeng-basecomponent.mjs +1 -1
  25. package/fesm2022/primeng-basecomponent.mjs.map +1 -1
  26. package/fesm2022/primeng-blockui.mjs +2 -2
  27. package/fesm2022/primeng-blockui.mjs.map +1 -1
  28. package/fesm2022/primeng-breadcrumb.mjs +2 -2
  29. package/fesm2022/primeng-breadcrumb.mjs.map +1 -1
  30. package/fesm2022/primeng-button.mjs +5 -5
  31. package/fesm2022/primeng-button.mjs.map +1 -1
  32. package/fesm2022/primeng-buttongroup.mjs +2 -2
  33. package/fesm2022/primeng-buttongroup.mjs.map +1 -1
  34. package/fesm2022/primeng-calendar.mjs +3 -3
  35. package/fesm2022/primeng-calendar.mjs.map +1 -1
  36. package/fesm2022/primeng-card.mjs +2 -2
  37. package/fesm2022/primeng-card.mjs.map +1 -1
  38. package/fesm2022/primeng-carousel.mjs +2 -2
  39. package/fesm2022/primeng-carousel.mjs.map +1 -1
  40. package/fesm2022/primeng-cascadeselect.mjs +6 -6
  41. package/fesm2022/primeng-cascadeselect.mjs.map +1 -1
  42. package/fesm2022/primeng-chart.mjs +2 -2
  43. package/fesm2022/primeng-chart.mjs.map +1 -1
  44. package/fesm2022/primeng-checkbox.mjs +3 -4
  45. package/fesm2022/primeng-checkbox.mjs.map +1 -1
  46. package/fesm2022/primeng-chip.mjs +2 -2
  47. package/fesm2022/primeng-chip.mjs.map +1 -1
  48. package/fesm2022/primeng-colorpicker.mjs +3 -3
  49. package/fesm2022/primeng-colorpicker.mjs.map +1 -1
  50. package/fesm2022/primeng-config.mjs +39 -40
  51. package/fesm2022/primeng-config.mjs.map +1 -1
  52. package/fesm2022/primeng-confirmdialog.mjs +13 -10
  53. package/fesm2022/primeng-confirmdialog.mjs.map +1 -1
  54. package/fesm2022/primeng-confirmpopup.mjs +2 -2
  55. package/fesm2022/primeng-confirmpopup.mjs.map +1 -1
  56. package/fesm2022/primeng-contextmenu.mjs +6 -6
  57. package/fesm2022/primeng-contextmenu.mjs.map +1 -1
  58. package/fesm2022/primeng-dataview.mjs +2 -2
  59. package/fesm2022/primeng-dataview.mjs.map +1 -1
  60. package/fesm2022/primeng-datepicker.mjs +5 -5
  61. package/fesm2022/primeng-datepicker.mjs.map +1 -1
  62. package/fesm2022/primeng-defer.mjs +1 -1
  63. package/fesm2022/primeng-dialog.mjs +18 -19
  64. package/fesm2022/primeng-dialog.mjs.map +1 -1
  65. package/fesm2022/primeng-divider.mjs +2 -2
  66. package/fesm2022/primeng-divider.mjs.map +1 -1
  67. package/fesm2022/primeng-dock.mjs +3 -4
  68. package/fesm2022/primeng-dock.mjs.map +1 -1
  69. package/fesm2022/primeng-dragdrop.mjs +2 -2
  70. package/fesm2022/primeng-dragdrop.mjs.map +1 -1
  71. package/fesm2022/primeng-drawer.mjs +5 -5
  72. package/fesm2022/primeng-drawer.mjs.map +1 -1
  73. package/fesm2022/primeng-dropdown.mjs +4 -4
  74. package/fesm2022/primeng-dropdown.mjs.map +1 -1
  75. package/fesm2022/primeng-dynamicdialog.mjs +4 -4
  76. package/fesm2022/primeng-dynamicdialog.mjs.map +1 -1
  77. package/fesm2022/primeng-editor.mjs +2 -2
  78. package/fesm2022/primeng-editor.mjs.map +1 -1
  79. package/fesm2022/primeng-fieldset.mjs +2 -2
  80. package/fesm2022/primeng-fieldset.mjs.map +1 -1
  81. package/fesm2022/primeng-fileupload.mjs +3 -4
  82. package/fesm2022/primeng-fileupload.mjs.map +1 -1
  83. package/fesm2022/primeng-floatlabel.mjs +2 -2
  84. package/fesm2022/primeng-floatlabel.mjs.map +1 -1
  85. package/fesm2022/primeng-fluid.mjs +2 -2
  86. package/fesm2022/primeng-fluid.mjs.map +1 -1
  87. package/fesm2022/primeng-focustrap.mjs +1 -1
  88. package/fesm2022/primeng-focustrap.mjs.map +1 -1
  89. package/fesm2022/primeng-galleria.mjs +10 -10
  90. package/fesm2022/primeng-galleria.mjs.map +1 -1
  91. package/fesm2022/primeng-iconfield.mjs +2 -2
  92. package/fesm2022/primeng-iconfield.mjs.map +1 -1
  93. package/fesm2022/primeng-icons-angledoubledown.mjs +2 -2
  94. package/fesm2022/primeng-icons-angledoubledown.mjs.map +1 -1
  95. package/fesm2022/primeng-icons-angledoubleleft.mjs +2 -2
  96. package/fesm2022/primeng-icons-angledoubleleft.mjs.map +1 -1
  97. package/fesm2022/primeng-icons-angledoubleright.mjs +2 -2
  98. package/fesm2022/primeng-icons-angledoubleright.mjs.map +1 -1
  99. package/fesm2022/primeng-icons-angledoubleup.mjs +2 -2
  100. package/fesm2022/primeng-icons-angledoubleup.mjs.map +1 -1
  101. package/fesm2022/primeng-icons-angledown.mjs +2 -2
  102. package/fesm2022/primeng-icons-angledown.mjs.map +1 -1
  103. package/fesm2022/primeng-icons-angleleft.mjs +2 -2
  104. package/fesm2022/primeng-icons-angleleft.mjs.map +1 -1
  105. package/fesm2022/primeng-icons-angleright.mjs +2 -2
  106. package/fesm2022/primeng-icons-angleright.mjs.map +1 -1
  107. package/fesm2022/primeng-icons-angleup.mjs +2 -2
  108. package/fesm2022/primeng-icons-angleup.mjs.map +1 -1
  109. package/fesm2022/primeng-icons-arrowdown.mjs +2 -2
  110. package/fesm2022/primeng-icons-arrowdown.mjs.map +1 -1
  111. package/fesm2022/primeng-icons-arrowdownleft.mjs +2 -2
  112. package/fesm2022/primeng-icons-arrowdownleft.mjs.map +1 -1
  113. package/fesm2022/primeng-icons-arrowdownright.mjs +2 -2
  114. package/fesm2022/primeng-icons-arrowdownright.mjs.map +1 -1
  115. package/fesm2022/primeng-icons-arrowleft.mjs +2 -2
  116. package/fesm2022/primeng-icons-arrowleft.mjs.map +1 -1
  117. package/fesm2022/primeng-icons-arrowright.mjs +2 -2
  118. package/fesm2022/primeng-icons-arrowright.mjs.map +1 -1
  119. package/fesm2022/primeng-icons-arrowup.mjs +2 -2
  120. package/fesm2022/primeng-icons-arrowup.mjs.map +1 -1
  121. package/fesm2022/primeng-icons-ban.mjs +2 -2
  122. package/fesm2022/primeng-icons-ban.mjs.map +1 -1
  123. package/fesm2022/primeng-icons-bars.mjs +2 -2
  124. package/fesm2022/primeng-icons-bars.mjs.map +1 -1
  125. package/fesm2022/primeng-icons-baseicon.mjs +2 -2
  126. package/fesm2022/primeng-icons-baseicon.mjs.map +1 -1
  127. package/fesm2022/primeng-icons-blank.mjs +2 -2
  128. package/fesm2022/primeng-icons-blank.mjs.map +1 -1
  129. package/fesm2022/primeng-icons-calendar.mjs +2 -2
  130. package/fesm2022/primeng-icons-calendar.mjs.map +1 -1
  131. package/fesm2022/primeng-icons-caretleft.mjs +2 -2
  132. package/fesm2022/primeng-icons-caretleft.mjs.map +1 -1
  133. package/fesm2022/primeng-icons-caretright.mjs +2 -2
  134. package/fesm2022/primeng-icons-caretright.mjs.map +1 -1
  135. package/fesm2022/primeng-icons-check.mjs +2 -2
  136. package/fesm2022/primeng-icons-check.mjs.map +1 -1
  137. package/fesm2022/primeng-icons-chevrondown.mjs +2 -2
  138. package/fesm2022/primeng-icons-chevrondown.mjs.map +1 -1
  139. package/fesm2022/primeng-icons-chevronleft.mjs +2 -2
  140. package/fesm2022/primeng-icons-chevronleft.mjs.map +1 -1
  141. package/fesm2022/primeng-icons-chevronright.mjs +2 -2
  142. package/fesm2022/primeng-icons-chevronright.mjs.map +1 -1
  143. package/fesm2022/primeng-icons-chevronup.mjs +2 -2
  144. package/fesm2022/primeng-icons-chevronup.mjs.map +1 -1
  145. package/fesm2022/primeng-icons-exclamationtriangle.mjs +2 -2
  146. package/fesm2022/primeng-icons-exclamationtriangle.mjs.map +1 -1
  147. package/fesm2022/primeng-icons-eye.mjs +2 -2
  148. package/fesm2022/primeng-icons-eye.mjs.map +1 -1
  149. package/fesm2022/primeng-icons-eyeslash.mjs +2 -2
  150. package/fesm2022/primeng-icons-eyeslash.mjs.map +1 -1
  151. package/fesm2022/primeng-icons-filter.mjs +2 -2
  152. package/fesm2022/primeng-icons-filter.mjs.map +1 -1
  153. package/fesm2022/primeng-icons-filterslash.mjs +2 -2
  154. package/fesm2022/primeng-icons-filterslash.mjs.map +1 -1
  155. package/fesm2022/primeng-icons-home.mjs +2 -2
  156. package/fesm2022/primeng-icons-home.mjs.map +1 -1
  157. package/fesm2022/primeng-icons-infocircle.mjs +2 -2
  158. package/fesm2022/primeng-icons-infocircle.mjs.map +1 -1
  159. package/fesm2022/primeng-icons-minus.mjs +2 -2
  160. package/fesm2022/primeng-icons-minus.mjs.map +1 -1
  161. package/fesm2022/primeng-icons-pencil.mjs +2 -2
  162. package/fesm2022/primeng-icons-pencil.mjs.map +1 -1
  163. package/fesm2022/primeng-icons-plus.mjs +2 -2
  164. package/fesm2022/primeng-icons-plus.mjs.map +1 -1
  165. package/fesm2022/primeng-icons-refresh.mjs +2 -2
  166. package/fesm2022/primeng-icons-refresh.mjs.map +1 -1
  167. package/fesm2022/primeng-icons-search.mjs +2 -2
  168. package/fesm2022/primeng-icons-search.mjs.map +1 -1
  169. package/fesm2022/primeng-icons-searchminus.mjs +2 -2
  170. package/fesm2022/primeng-icons-searchminus.mjs.map +1 -1
  171. package/fesm2022/primeng-icons-searchplus.mjs +2 -2
  172. package/fesm2022/primeng-icons-searchplus.mjs.map +1 -1
  173. package/fesm2022/primeng-icons-sortalt.mjs +2 -2
  174. package/fesm2022/primeng-icons-sortalt.mjs.map +1 -1
  175. package/fesm2022/primeng-icons-sortamountdown.mjs +2 -2
  176. package/fesm2022/primeng-icons-sortamountdown.mjs.map +1 -1
  177. package/fesm2022/primeng-icons-sortamountupalt.mjs +2 -2
  178. package/fesm2022/primeng-icons-sortamountupalt.mjs.map +1 -1
  179. package/fesm2022/primeng-icons-spinner.mjs +2 -2
  180. package/fesm2022/primeng-icons-spinner.mjs.map +1 -1
  181. package/fesm2022/primeng-icons-star.mjs +2 -2
  182. package/fesm2022/primeng-icons-star.mjs.map +1 -1
  183. package/fesm2022/primeng-icons-starfill.mjs +2 -2
  184. package/fesm2022/primeng-icons-starfill.mjs.map +1 -1
  185. package/fesm2022/primeng-icons-thlarge.mjs +2 -2
  186. package/fesm2022/primeng-icons-thlarge.mjs.map +1 -1
  187. package/fesm2022/primeng-icons-times.mjs +2 -2
  188. package/fesm2022/primeng-icons-times.mjs.map +1 -1
  189. package/fesm2022/primeng-icons-timescircle.mjs +2 -2
  190. package/fesm2022/primeng-icons-timescircle.mjs.map +1 -1
  191. package/fesm2022/primeng-icons-trash.mjs +2 -2
  192. package/fesm2022/primeng-icons-trash.mjs.map +1 -1
  193. package/fesm2022/primeng-icons-undo.mjs +2 -2
  194. package/fesm2022/primeng-icons-undo.mjs.map +1 -1
  195. package/fesm2022/primeng-icons-upload.mjs +2 -2
  196. package/fesm2022/primeng-icons-upload.mjs.map +1 -1
  197. package/fesm2022/primeng-icons-windowmaximize.mjs +2 -2
  198. package/fesm2022/primeng-icons-windowmaximize.mjs.map +1 -1
  199. package/fesm2022/primeng-icons-windowminimize.mjs +2 -2
  200. package/fesm2022/primeng-icons-windowminimize.mjs.map +1 -1
  201. package/fesm2022/primeng-iftalabel.mjs +2 -2
  202. package/fesm2022/primeng-iftalabel.mjs.map +1 -1
  203. package/fesm2022/primeng-image.mjs +3 -3
  204. package/fesm2022/primeng-image.mjs.map +1 -1
  205. package/fesm2022/primeng-imagecompare.mjs +2 -2
  206. package/fesm2022/primeng-imagecompare.mjs.map +1 -1
  207. package/fesm2022/primeng-inplace.mjs +6 -6
  208. package/fesm2022/primeng-inplace.mjs.map +1 -1
  209. package/fesm2022/primeng-inputgroup.mjs +2 -2
  210. package/fesm2022/primeng-inputgroup.mjs.map +1 -1
  211. package/fesm2022/primeng-inputgroupaddon.mjs +2 -2
  212. package/fesm2022/primeng-inputgroupaddon.mjs.map +1 -1
  213. package/fesm2022/primeng-inputicon.mjs +2 -2
  214. package/fesm2022/primeng-inputicon.mjs.map +1 -1
  215. package/fesm2022/primeng-inputmask.mjs +4 -4
  216. package/fesm2022/primeng-inputmask.mjs.map +1 -1
  217. package/fesm2022/primeng-inputnumber.mjs +5 -6
  218. package/fesm2022/primeng-inputnumber.mjs.map +1 -1
  219. package/fesm2022/primeng-inputotp.mjs +4 -4
  220. package/fesm2022/primeng-inputotp.mjs.map +1 -1
  221. package/fesm2022/primeng-inputswitch.mjs +2 -2
  222. package/fesm2022/primeng-inputswitch.mjs.map +1 -1
  223. package/fesm2022/primeng-inputtext.mjs +10 -9
  224. package/fesm2022/primeng-inputtext.mjs.map +1 -1
  225. package/fesm2022/primeng-inputtextarea.mjs +1 -1
  226. package/fesm2022/primeng-inputtextarea.mjs.map +1 -1
  227. package/fesm2022/primeng-keyfilter.mjs +1 -1
  228. package/fesm2022/primeng-keyfilter.mjs.map +1 -1
  229. package/fesm2022/primeng-knob.mjs +2 -2
  230. package/fesm2022/primeng-knob.mjs.map +1 -1
  231. package/fesm2022/primeng-listbox.mjs +2 -2
  232. package/fesm2022/primeng-listbox.mjs.map +1 -1
  233. package/fesm2022/primeng-megamenu.mjs +5 -5
  234. package/fesm2022/primeng-megamenu.mjs.map +1 -1
  235. package/fesm2022/primeng-menu.mjs +7 -7
  236. package/fesm2022/primeng-menu.mjs.map +1 -1
  237. package/fesm2022/primeng-menubar.mjs +6 -6
  238. package/fesm2022/primeng-menubar.mjs.map +1 -1
  239. package/fesm2022/primeng-message.mjs +2 -2
  240. package/fesm2022/primeng-message.mjs.map +1 -1
  241. package/fesm2022/primeng-messages.mjs +2 -2
  242. package/fesm2022/primeng-messages.mjs.map +1 -1
  243. package/fesm2022/primeng-metergroup.mjs +4 -4
  244. package/fesm2022/primeng-metergroup.mjs.map +1 -1
  245. package/fesm2022/primeng-multiselect.mjs +6 -9
  246. package/fesm2022/primeng-multiselect.mjs.map +1 -1
  247. package/fesm2022/primeng-orderlist.mjs +4 -4
  248. package/fesm2022/primeng-orderlist.mjs.map +1 -1
  249. package/fesm2022/primeng-organizationchart.mjs +5 -5
  250. package/fesm2022/primeng-organizationchart.mjs.map +1 -1
  251. package/fesm2022/primeng-overlay.mjs +3 -3
  252. package/fesm2022/primeng-overlay.mjs.map +1 -1
  253. package/fesm2022/primeng-overlaybadge.mjs +2 -2
  254. package/fesm2022/primeng-overlaybadge.mjs.map +1 -1
  255. package/fesm2022/primeng-overlaypanel.mjs +7 -4
  256. package/fesm2022/primeng-overlaypanel.mjs.map +1 -1
  257. package/fesm2022/primeng-paginator.mjs +2 -2
  258. package/fesm2022/primeng-paginator.mjs.map +1 -1
  259. package/fesm2022/primeng-panel.mjs +3 -4
  260. package/fesm2022/primeng-panel.mjs.map +1 -1
  261. package/fesm2022/primeng-panelmenu.mjs +9 -9
  262. package/fesm2022/primeng-panelmenu.mjs.map +1 -1
  263. package/fesm2022/primeng-password.mjs +30 -7
  264. package/fesm2022/primeng-password.mjs.map +1 -1
  265. package/fesm2022/primeng-picklist.mjs +135 -139
  266. package/fesm2022/primeng-picklist.mjs.map +1 -1
  267. package/fesm2022/primeng-popover.mjs +9 -8
  268. package/fesm2022/primeng-popover.mjs.map +1 -1
  269. package/fesm2022/primeng-progressbar.mjs +2 -2
  270. package/fesm2022/primeng-progressbar.mjs.map +1 -1
  271. package/fesm2022/primeng-progressspinner.mjs +2 -2
  272. package/fesm2022/primeng-progressspinner.mjs.map +1 -1
  273. package/fesm2022/primeng-radiobutton.mjs +2 -2
  274. package/fesm2022/primeng-radiobutton.mjs.map +1 -1
  275. package/fesm2022/primeng-rating.mjs +4 -4
  276. package/fesm2022/primeng-rating.mjs.map +1 -1
  277. package/fesm2022/primeng-ripple.mjs +5 -2
  278. package/fesm2022/primeng-ripple.mjs.map +1 -1
  279. package/fesm2022/primeng-scroller.mjs +2 -2
  280. package/fesm2022/primeng-scroller.mjs.map +1 -1
  281. package/fesm2022/primeng-scrollpanel.mjs +2 -2
  282. package/fesm2022/primeng-scrollpanel.mjs.map +1 -1
  283. package/fesm2022/primeng-scrolltop.mjs +2 -2
  284. package/fesm2022/primeng-scrolltop.mjs.map +1 -1
  285. package/fesm2022/primeng-select.mjs +9 -11
  286. package/fesm2022/primeng-select.mjs.map +1 -1
  287. package/fesm2022/primeng-selectbutton.mjs +3 -4
  288. package/fesm2022/primeng-selectbutton.mjs.map +1 -1
  289. package/fesm2022/primeng-sidebar.mjs +4 -5
  290. package/fesm2022/primeng-sidebar.mjs.map +1 -1
  291. package/fesm2022/primeng-skeleton.mjs +2 -2
  292. package/fesm2022/primeng-skeleton.mjs.map +1 -1
  293. package/fesm2022/primeng-slider.mjs +2 -2
  294. package/fesm2022/primeng-slider.mjs.map +1 -1
  295. package/fesm2022/primeng-speeddial.mjs +2 -2
  296. package/fesm2022/primeng-speeddial.mjs.map +1 -1
  297. package/fesm2022/primeng-splitbutton.mjs +2 -2
  298. package/fesm2022/primeng-splitbutton.mjs.map +1 -1
  299. package/fesm2022/primeng-splitter.mjs +30 -19
  300. package/fesm2022/primeng-splitter.mjs.map +1 -1
  301. package/fesm2022/primeng-stepper.mjs +16 -16
  302. package/fesm2022/primeng-stepper.mjs.map +1 -1
  303. package/fesm2022/primeng-steps.mjs +2 -2
  304. package/fesm2022/primeng-steps.mjs.map +1 -1
  305. package/fesm2022/primeng-styleclass.mjs +1 -1
  306. package/fesm2022/primeng-styleclass.mjs.map +1 -1
  307. package/fesm2022/primeng-table.mjs +6392 -6520
  308. package/fesm2022/primeng-table.mjs.map +1 -1
  309. package/fesm2022/primeng-tabmenu.mjs +2 -2
  310. package/fesm2022/primeng-tabmenu.mjs.map +1 -1
  311. package/fesm2022/primeng-tabs.mjs +11 -11
  312. package/fesm2022/primeng-tabs.mjs.map +1 -1
  313. package/fesm2022/primeng-tabview.mjs +5 -5
  314. package/fesm2022/primeng-tabview.mjs.map +1 -1
  315. package/fesm2022/primeng-tag.mjs +2 -2
  316. package/fesm2022/primeng-tag.mjs.map +1 -1
  317. package/fesm2022/primeng-terminal.mjs +2 -2
  318. package/fesm2022/primeng-terminal.mjs.map +1 -1
  319. package/fesm2022/primeng-textarea.mjs +8 -8
  320. package/fesm2022/primeng-textarea.mjs.map +1 -1
  321. package/fesm2022/primeng-tieredmenu.mjs +6 -6
  322. package/fesm2022/primeng-tieredmenu.mjs.map +1 -1
  323. package/fesm2022/primeng-timeline.mjs +2 -2
  324. package/fesm2022/primeng-timeline.mjs.map +1 -1
  325. package/fesm2022/primeng-toast.mjs +6 -7
  326. package/fesm2022/primeng-toast.mjs.map +1 -1
  327. package/fesm2022/primeng-togglebutton.mjs +3 -4
  328. package/fesm2022/primeng-togglebutton.mjs.map +1 -1
  329. package/fesm2022/primeng-toggleswitch.mjs +2 -2
  330. package/fesm2022/primeng-toggleswitch.mjs.map +1 -1
  331. package/fesm2022/primeng-toolbar.mjs +2 -2
  332. package/fesm2022/primeng-toolbar.mjs.map +1 -1
  333. package/fesm2022/primeng-tooltip.mjs +5 -3
  334. package/fesm2022/primeng-tooltip.mjs.map +1 -1
  335. package/fesm2022/primeng-tree.mjs +112 -63
  336. package/fesm2022/primeng-tree.mjs.map +1 -1
  337. package/fesm2022/primeng-treeselect.mjs +5 -10
  338. package/fesm2022/primeng-treeselect.mjs.map +1 -1
  339. package/fesm2022/primeng-treetable.mjs +31 -29
  340. package/fesm2022/primeng-treetable.mjs.map +1 -1
  341. package/inputtext/inputtext.d.ts +2 -2
  342. package/package.json +176 -524
  343. package/password/password.d.ts +5 -1
  344. package/popover/popover.d.ts +1 -1
  345. package/speeddial/speeddial.d.ts +2 -2
  346. package/splitter/splitter.d.ts +2 -3
  347. package/splitter/style/splitterstyle.d.ts +0 -13
  348. package/table/table.d.ts +928 -1030
  349. package/textarea/textarea.d.ts +2 -2
  350. package/tree/style/treestyle.d.ts +1 -1
  351. package/tree/tree.d.ts +4 -2
  352. package/treetable/treetable.d.ts +1 -1
  353. package/esm2022/accordion/accordion.mjs +0 -1266
  354. package/esm2022/accordion/primeng-accordion.mjs +0 -5
  355. package/esm2022/accordion/public_api.mjs +0 -3
  356. package/esm2022/accordion/style/accordionstyle.mjs +0 -163
  357. package/esm2022/animateonscroll/animateonscroll.mjs +0 -174
  358. package/esm2022/animateonscroll/primeng-animateonscroll.mjs +0 -5
  359. package/esm2022/animateonscroll/public_api.mjs +0 -2
  360. package/esm2022/api/blockableui.mjs +0 -2
  361. package/esm2022/api/confirmaeventtype.mjs +0 -10
  362. package/esm2022/api/confirmation.mjs +0 -2
  363. package/esm2022/api/confirmationservice.mjs +0 -43
  364. package/esm2022/api/contextmenuservice.mjs +0 -22
  365. package/esm2022/api/filtermatchmode.mjs +0 -23
  366. package/esm2022/api/filtermetadata.mjs +0 -2
  367. package/esm2022/api/filteroperator.mjs +0 -5
  368. package/esm2022/api/filterservice.mjs +0 -224
  369. package/esm2022/api/lazyloadevent.mjs +0 -2
  370. package/esm2022/api/lazyloadmeta.mjs +0 -2
  371. package/esm2022/api/megamenuitem.mjs +0 -2
  372. package/esm2022/api/menuitem.mjs +0 -2
  373. package/esm2022/api/messageservice.mjs +0 -47
  374. package/esm2022/api/overlayoptions.mjs +0 -2
  375. package/esm2022/api/overlayservice.mjs +0 -19
  376. package/esm2022/api/primeicons.mjs +0 -314
  377. package/esm2022/api/primeng-api.mjs +0 -5
  378. package/esm2022/api/public_api.mjs +0 -33
  379. package/esm2022/api/scrolleroptions.mjs +0 -2
  380. package/esm2022/api/selectitem.mjs +0 -2
  381. package/esm2022/api/selectitemgroup.mjs +0 -2
  382. package/esm2022/api/shared.mjs +0 -76
  383. package/esm2022/api/sortevent.mjs +0 -2
  384. package/esm2022/api/sortmeta.mjs +0 -2
  385. package/esm2022/api/tablestate.mjs +0 -2
  386. package/esm2022/api/toastmessage.mjs +0 -2
  387. package/esm2022/api/tooltipoptions.mjs +0 -2
  388. package/esm2022/api/translation.mjs +0 -2
  389. package/esm2022/api/translationkeys.mjs +0 -51
  390. package/esm2022/api/treedragdropservice.mjs +0 -21
  391. package/esm2022/api/treenode.mjs +0 -2
  392. package/esm2022/api/treenodedragevent.mjs +0 -2
  393. package/esm2022/api/treetablenode.mjs +0 -2
  394. package/esm2022/autocomplete/autocomplete.interface.mjs +0 -2
  395. package/esm2022/autocomplete/autocomplete.mjs +0 -2225
  396. package/esm2022/autocomplete/primeng-autocomplete.mjs +0 -5
  397. package/esm2022/autocomplete/public_api.mjs +0 -4
  398. package/esm2022/autocomplete/style/autocompletestyle.mjs +0 -408
  399. package/esm2022/autofocus/autofocus.mjs +0 -86
  400. package/esm2022/autofocus/primeng-autofocus.mjs +0 -5
  401. package/esm2022/autofocus/public_api.mjs +0 -2
  402. package/esm2022/avatar/avatar.mjs +0 -193
  403. package/esm2022/avatar/primeng-avatar.mjs +0 -5
  404. package/esm2022/avatar/public_api.mjs +0 -3
  405. package/esm2022/avatar/style/avatarstyle.mjs +0 -130
  406. package/esm2022/avatargroup/avatargroup.mjs +0 -80
  407. package/esm2022/avatargroup/primeng-avatargroup.mjs +0 -5
  408. package/esm2022/avatargroup/public_api.mjs +0 -3
  409. package/esm2022/avatargroup/style/avatargroupstyle.mjs +0 -29
  410. package/esm2022/badge/badge.mjs +0 -332
  411. package/esm2022/badge/primeng-badge.mjs +0 -5
  412. package/esm2022/badge/public_api.mjs +0 -3
  413. package/esm2022/badge/style/badgestyle.mjs +0 -143
  414. package/esm2022/base/base.mjs +0 -19
  415. package/esm2022/base/primeng-base.mjs +0 -5
  416. package/esm2022/base/public_api.mjs +0 -3
  417. package/esm2022/base/style/basestyle.mjs +0 -256
  418. package/esm2022/basecomponent/basecomponent.mjs +0 -183
  419. package/esm2022/basecomponent/primeng-basecomponent.mjs +0 -5
  420. package/esm2022/basecomponent/public_api.mjs +0 -3
  421. package/esm2022/basecomponent/style/basecomponentstyle.mjs +0 -13
  422. package/esm2022/blockui/blockui.interface.mjs +0 -2
  423. package/esm2022/blockui/blockui.mjs +0 -210
  424. package/esm2022/blockui/primeng-blockui.mjs +0 -5
  425. package/esm2022/blockui/public_api.mjs +0 -4
  426. package/esm2022/blockui/style/blockuistyle.mjs +0 -50
  427. package/esm2022/breadcrumb/breadcrumb.interface.mjs +0 -2
  428. package/esm2022/breadcrumb/breadcrumb.mjs +0 -583
  429. package/esm2022/breadcrumb/primeng-breadcrumb.mjs +0 -5
  430. package/esm2022/breadcrumb/public_api.mjs +0 -4
  431. package/esm2022/breadcrumb/style/breadcrumbstyle.mjs +0 -133
  432. package/esm2022/button/button.interface.mjs +0 -2
  433. package/esm2022/button/button.mjs +0 -896
  434. package/esm2022/button/primeng-button.mjs +0 -5
  435. package/esm2022/button/public_api.mjs +0 -4
  436. package/esm2022/button/style/buttonstyle.mjs +0 -707
  437. package/esm2022/buttongroup/buttongroup.mjs +0 -47
  438. package/esm2022/buttongroup/primeng-buttongroup.mjs +0 -5
  439. package/esm2022/buttongroup/public_api.mjs +0 -3
  440. package/esm2022/buttongroup/style/buttongroupstyle.mjs +0 -120
  441. package/esm2022/calendar/calendar.interface.mjs +0 -2
  442. package/esm2022/calendar/calendar.mjs +0 -4504
  443. package/esm2022/calendar/primeng-calendar.mjs +0 -5
  444. package/esm2022/calendar/public_api.mjs +0 -4
  445. package/esm2022/calendar/style/calendarstyle.mjs +0 -472
  446. package/esm2022/card/card.interface.mjs +0 -2
  447. package/esm2022/card/card.mjs +0 -243
  448. package/esm2022/card/primeng-card.mjs +0 -5
  449. package/esm2022/card/public_api.mjs +0 -4
  450. package/esm2022/card/style/cardstyle.mjs +0 -100
  451. package/esm2022/carousel/carousel.interface.mjs +0 -2
  452. package/esm2022/carousel/carousel.mjs +0 -1181
  453. package/esm2022/carousel/primeng-carousel.mjs +0 -5
  454. package/esm2022/carousel/public_api.mjs +0 -4
  455. package/esm2022/carousel/style/carouselstyle.mjs +0 -234
  456. package/esm2022/cascadeselect/cascadeselect.interface.mjs +0 -2
  457. package/esm2022/cascadeselect/cascadeselect.mjs +0 -1840
  458. package/esm2022/cascadeselect/primeng-cascadeselect.mjs +0 -5
  459. package/esm2022/cascadeselect/public_api.mjs +0 -4
  460. package/esm2022/cascadeselect/style/cascadeselectstyle.mjs +0 -379
  461. package/esm2022/chart/chart.mjs +0 -210
  462. package/esm2022/chart/primeng-chart.mjs +0 -5
  463. package/esm2022/chart/public_api.mjs +0 -3
  464. package/esm2022/chart/style/chartstyle.mjs +0 -36
  465. package/esm2022/checkbox/checkbox.interface.mjs +0 -2
  466. package/esm2022/checkbox/checkbox.mjs +0 -450
  467. package/esm2022/checkbox/primeng-checkbox.mjs +0 -5
  468. package/esm2022/checkbox/public_api.mjs +0 -4
  469. package/esm2022/checkbox/style/checkboxstyle.mjs +0 -191
  470. package/esm2022/chip/chip.interface.mjs +0 -2
  471. package/esm2022/chip/chip.mjs +0 -337
  472. package/esm2022/chip/primeng-chip.mjs +0 -5
  473. package/esm2022/chip/public_api.mjs +0 -4
  474. package/esm2022/chip/style/chipstyle.mjs +0 -104
  475. package/esm2022/colorpicker/colorpicker.interface.mjs +0 -2
  476. package/esm2022/colorpicker/colorpicker.mjs +0 -856
  477. package/esm2022/colorpicker/primeng-colorpicker.mjs +0 -5
  478. package/esm2022/colorpicker/public_api.mjs +0 -4
  479. package/esm2022/colorpicker/style/colorpickerstyle.mjs +0 -213
  480. package/esm2022/config/primeng-config.mjs +0 -5
  481. package/esm2022/config/primeng.mjs +0 -189
  482. package/esm2022/config/provideprimeng.mjs +0 -11
  483. package/esm2022/config/public_api.mjs +0 -4
  484. package/esm2022/config/themeprovider.mjs +0 -74
  485. package/esm2022/confirmdialog/confirmdialog.interface.mjs +0 -2
  486. package/esm2022/confirmdialog/confirmdialog.mjs +0 -810
  487. package/esm2022/confirmdialog/primeng-confirmdialog.mjs +0 -5
  488. package/esm2022/confirmdialog/public_api.mjs +0 -4
  489. package/esm2022/confirmdialog/style/confirmdialogstyle.mjs +0 -67
  490. package/esm2022/confirmpopup/confirmpopup.interface.mjs +0 -2
  491. package/esm2022/confirmpopup/confirmpopup.mjs +0 -619
  492. package/esm2022/confirmpopup/primeng-confirmpopup.mjs +0 -5
  493. package/esm2022/confirmpopup/public_api.mjs +0 -4
  494. package/esm2022/confirmpopup/style/confirmpopupstyle.mjs +0 -170
  495. package/esm2022/contextmenu/contextmenu.mjs +0 -1436
  496. package/esm2022/contextmenu/primeng-contextmenu.mjs +0 -5
  497. package/esm2022/contextmenu/public_api.mjs +0 -3
  498. package/esm2022/contextmenu/style/contextmenustyle.mjs +0 -244
  499. package/esm2022/dataview/dataview.interface.mjs +0 -2
  500. package/esm2022/dataview/dataview.mjs +0 -819
  501. package/esm2022/dataview/primeng-dataview.mjs +0 -5
  502. package/esm2022/dataview/public_api.mjs +0 -4
  503. package/esm2022/dataview/style/dataviewstyle.mjs +0 -115
  504. package/esm2022/datepicker/datepicker.interface.mjs +0 -2
  505. package/esm2022/datepicker/datepicker.mjs +0 -4539
  506. package/esm2022/datepicker/primeng-datepicker.mjs +0 -5
  507. package/esm2022/datepicker/public_api.mjs +0 -4
  508. package/esm2022/datepicker/style/datepickerstyle.mjs +0 -663
  509. package/esm2022/defer/defer.mjs +0 -100
  510. package/esm2022/defer/primeng-defer.mjs +0 -5
  511. package/esm2022/defer/public_api.mjs +0 -2
  512. package/esm2022/dialog/dialog.interface.mjs +0 -2
  513. package/esm2022/dialog/dialog.mjs +0 -1384
  514. package/esm2022/dialog/primeng-dialog.mjs +0 -5
  515. package/esm2022/dialog/public_api.mjs +0 -4
  516. package/esm2022/dialog/style/dialogstyle.mjs +0 -283
  517. package/esm2022/divider/divider.mjs +0 -119
  518. package/esm2022/divider/primeng-divider.mjs +0 -5
  519. package/esm2022/divider/public_api.mjs +0 -3
  520. package/esm2022/divider/style/dividerstyle.mjs +0 -138
  521. package/esm2022/dock/dock.interface.mjs +0 -2
  522. package/esm2022/dock/dock.mjs +0 -447
  523. package/esm2022/dock/primeng-dock.mjs +0 -5
  524. package/esm2022/dock/public_api.mjs +0 -4
  525. package/esm2022/dock/style/dockstyle.mjs +0 -210
  526. package/esm2022/dom/connectedoverlayscrollhandler.mjs +0 -30
  527. package/esm2022/dom/domhandler.mjs +0 -725
  528. package/esm2022/dom/primeng-dom.mjs +0 -5
  529. package/esm2022/dom/public_api.mjs +0 -3
  530. package/esm2022/dragdrop/dragdrop.mjs +0 -323
  531. package/esm2022/dragdrop/primeng-dragdrop.mjs +0 -5
  532. package/esm2022/dragdrop/public_api.mjs +0 -2
  533. package/esm2022/drawer/drawer.interface.mjs +0 -2
  534. package/esm2022/drawer/drawer.mjs +0 -663
  535. package/esm2022/drawer/primeng-drawer.mjs +0 -5
  536. package/esm2022/drawer/public_api.mjs +0 -4
  537. package/esm2022/drawer/style/drawerstyle.mjs +0 -283
  538. package/esm2022/dropdown/dropdown.interface.mjs +0 -2
  539. package/esm2022/dropdown/dropdown.mjs +0 -2498
  540. package/esm2022/dropdown/primeng-dropdown.mjs +0 -5
  541. package/esm2022/dropdown/public_api.mjs +0 -4
  542. package/esm2022/dropdown/style/dropdownstyle.mjs +0 -264
  543. package/esm2022/dynamicdialog/dialogservice.mjs +0 -105
  544. package/esm2022/dynamicdialog/dynamicdialog-config.mjs +0 -182
  545. package/esm2022/dynamicdialog/dynamicdialog-injector.mjs +0 -15
  546. package/esm2022/dynamicdialog/dynamicdialog-ref.mjs +0 -119
  547. package/esm2022/dynamicdialog/dynamicdialog.mjs +0 -875
  548. package/esm2022/dynamicdialog/dynamicdialogcontent.mjs +0 -18
  549. package/esm2022/dynamicdialog/primeng-dynamicdialog.mjs +0 -5
  550. package/esm2022/dynamicdialog/public_api.mjs +0 -8
  551. package/esm2022/dynamicdialog/style/dynamicdialogstyle.mjs +0 -60
  552. package/esm2022/editor/editor.interface.mjs +0 -2
  553. package/esm2022/editor/editor.mjs +0 -427
  554. package/esm2022/editor/primeng-editor.mjs +0 -5
  555. package/esm2022/editor/public_api.mjs +0 -4
  556. package/esm2022/editor/style/editorstyle.mjs +0 -1008
  557. package/esm2022/fieldset/fieldset.interface.mjs +0 -2
  558. package/esm2022/fieldset/fieldset.mjs +0 -427
  559. package/esm2022/fieldset/primeng-fieldset.mjs +0 -5
  560. package/esm2022/fieldset/public_api.mjs +0 -4
  561. package/esm2022/fieldset/style/fieldsetstyle.mjs +0 -143
  562. package/esm2022/fileupload/fileupload.interface.mjs +0 -2
  563. package/esm2022/fileupload/fileupload.mjs +0 -1597
  564. package/esm2022/fileupload/primeng-fileupload.mjs +0 -5
  565. package/esm2022/fileupload/public_api.mjs +0 -4
  566. package/esm2022/fileupload/style/fileuploadstyle.mjs +0 -194
  567. package/esm2022/floatlabel/floatlabel.mjs +0 -61
  568. package/esm2022/floatlabel/primeng-floatlabel.mjs +0 -5
  569. package/esm2022/floatlabel/public_api.mjs +0 -3
  570. package/esm2022/floatlabel/style/floatlabelstyle.mjs +0 -133
  571. package/esm2022/fluid/fluid.mjs +0 -50
  572. package/esm2022/fluid/primeng-fluid.mjs +0 -5
  573. package/esm2022/fluid/public_api.mjs +0 -3
  574. package/esm2022/fluid/style/fluidstyle.mjs +0 -38
  575. package/esm2022/focustrap/focustrap.mjs +0 -104
  576. package/esm2022/focustrap/primeng-focustrap.mjs +0 -5
  577. package/esm2022/focustrap/public_api.mjs +0 -2
  578. package/esm2022/galleria/galleria.interface.mjs +0 -2
  579. package/esm2022/galleria/galleria.mjs +0 -1858
  580. package/esm2022/galleria/primeng-galleria.mjs +0 -5
  581. package/esm2022/galleria/public_api.mjs +0 -4
  582. package/esm2022/galleria/style/galleriastyle.mjs +0 -644
  583. package/esm2022/iconfield/iconfield.mjs +0 -73
  584. package/esm2022/iconfield/primeng-iconfield.mjs +0 -5
  585. package/esm2022/iconfield/public_api.mjs +0 -3
  586. package/esm2022/iconfield/style/iconfieldstyle.mjs +0 -77
  587. package/esm2022/icons/angledoubledown/angledoubledown.mjs +0 -34
  588. package/esm2022/icons/angledoubledown/primeng-icons-angledoubledown.mjs +0 -5
  589. package/esm2022/icons/angledoubledown/public_api.mjs +0 -2
  590. package/esm2022/icons/angledoubleleft/angledoubleleft.mjs +0 -34
  591. package/esm2022/icons/angledoubleleft/primeng-icons-angledoubleleft.mjs +0 -5
  592. package/esm2022/icons/angledoubleleft/public_api.mjs +0 -2
  593. package/esm2022/icons/angledoubleright/angledoubleright.mjs +0 -34
  594. package/esm2022/icons/angledoubleright/primeng-icons-angledoubleright.mjs +0 -5
  595. package/esm2022/icons/angledoubleright/public_api.mjs +0 -2
  596. package/esm2022/icons/angledoubleup/angledoubleup.mjs +0 -34
  597. package/esm2022/icons/angledoubleup/primeng-icons-angledoubleup.mjs +0 -5
  598. package/esm2022/icons/angledoubleup/public_api.mjs +0 -2
  599. package/esm2022/icons/angledown/angledown.mjs +0 -32
  600. package/esm2022/icons/angledown/primeng-icons-angledown.mjs +0 -5
  601. package/esm2022/icons/angledown/public_api.mjs +0 -2
  602. package/esm2022/icons/angleleft/angleleft.mjs +0 -32
  603. package/esm2022/icons/angleleft/primeng-icons-angleleft.mjs +0 -5
  604. package/esm2022/icons/angleleft/public_api.mjs +0 -2
  605. package/esm2022/icons/angleright/angleright.mjs +0 -32
  606. package/esm2022/icons/angleright/primeng-icons-angleright.mjs +0 -5
  607. package/esm2022/icons/angleright/public_api.mjs +0 -2
  608. package/esm2022/icons/angleup/angleup.mjs +0 -32
  609. package/esm2022/icons/angleup/primeng-icons-angleup.mjs +0 -5
  610. package/esm2022/icons/angleup/public_api.mjs +0 -2
  611. package/esm2022/icons/arrowdown/arrowdown.mjs +0 -53
  612. package/esm2022/icons/arrowdown/primeng-icons-arrowdown.mjs +0 -5
  613. package/esm2022/icons/arrowdown/public_api.mjs +0 -2
  614. package/esm2022/icons/arrowdownleft/arrowdownleft.mjs +0 -32
  615. package/esm2022/icons/arrowdownleft/primeng-icons-arrowdownleft.mjs +0 -5
  616. package/esm2022/icons/arrowdownleft/public_api.mjs +0 -2
  617. package/esm2022/icons/arrowdownright/arrowdownright.mjs +0 -32
  618. package/esm2022/icons/arrowdownright/primeng-icons-arrowdownright.mjs +0 -5
  619. package/esm2022/icons/arrowdownright/public_api.mjs +0 -2
  620. package/esm2022/icons/arrowleft/arrowleft.mjs +0 -53
  621. package/esm2022/icons/arrowleft/primeng-icons-arrowleft.mjs +0 -5
  622. package/esm2022/icons/arrowleft/public_api.mjs +0 -2
  623. package/esm2022/icons/arrowright/arrowright.mjs +0 -34
  624. package/esm2022/icons/arrowright/primeng-icons-arrowright.mjs +0 -5
  625. package/esm2022/icons/arrowright/public_api.mjs +0 -2
  626. package/esm2022/icons/arrowup/arrowup.mjs +0 -53
  627. package/esm2022/icons/arrowup/primeng-icons-arrowup.mjs +0 -5
  628. package/esm2022/icons/arrowup/public_api.mjs +0 -2
  629. package/esm2022/icons/ban/ban.mjs +0 -51
  630. package/esm2022/icons/ban/primeng-icons-ban.mjs +0 -5
  631. package/esm2022/icons/ban/public_api.mjs +0 -2
  632. package/esm2022/icons/bars/bars.mjs +0 -34
  633. package/esm2022/icons/bars/primeng-icons-bars.mjs +0 -5
  634. package/esm2022/icons/bars/public_api.mjs +0 -2
  635. package/esm2022/icons/baseicon/baseicon.mjs +0 -54
  636. package/esm2022/icons/baseicon/primeng-icons-baseicon.mjs +0 -5
  637. package/esm2022/icons/baseicon/public_api.mjs +0 -3
  638. package/esm2022/icons/baseicon/style/baseiconstyle.mjs +0 -57
  639. package/esm2022/icons/blank/blank.mjs +0 -26
  640. package/esm2022/icons/blank/primeng-icons-blank.mjs +0 -5
  641. package/esm2022/icons/blank/public_api.mjs +0 -2
  642. package/esm2022/icons/calendar/calendar.mjs +0 -32
  643. package/esm2022/icons/calendar/primeng-icons-calendar.mjs +0 -5
  644. package/esm2022/icons/calendar/public_api.mjs +0 -2
  645. package/esm2022/icons/caretleft/caretleft.mjs +0 -32
  646. package/esm2022/icons/caretleft/primeng-icons-caretleft.mjs +0 -5
  647. package/esm2022/icons/caretleft/public_api.mjs +0 -2
  648. package/esm2022/icons/caretright/caretright.mjs +0 -32
  649. package/esm2022/icons/caretright/primeng-icons-caretright.mjs +0 -5
  650. package/esm2022/icons/caretright/public_api.mjs +0 -2
  651. package/esm2022/icons/check/check.mjs +0 -32
  652. package/esm2022/icons/check/primeng-icons-check.mjs +0 -5
  653. package/esm2022/icons/check/public_api.mjs +0 -2
  654. package/esm2022/icons/chevrondown/chevrondown.mjs +0 -32
  655. package/esm2022/icons/chevrondown/primeng-icons-chevrondown.mjs +0 -5
  656. package/esm2022/icons/chevrondown/public_api.mjs +0 -2
  657. package/esm2022/icons/chevronleft/chevronleft.mjs +0 -32
  658. package/esm2022/icons/chevronleft/primeng-icons-chevronleft.mjs +0 -5
  659. package/esm2022/icons/chevronleft/public_api.mjs +0 -2
  660. package/esm2022/icons/chevronright/chevronright.mjs +0 -32
  661. package/esm2022/icons/chevronright/primeng-icons-chevronright.mjs +0 -5
  662. package/esm2022/icons/chevronright/public_api.mjs +0 -2
  663. package/esm2022/icons/chevronup/chevronup.mjs +0 -32
  664. package/esm2022/icons/chevronup/primeng-icons-chevronup.mjs +0 -5
  665. package/esm2022/icons/chevronup/public_api.mjs +0 -2
  666. package/esm2022/icons/exclamationtriangle/exclamationtriangle.mjs +0 -59
  667. package/esm2022/icons/exclamationtriangle/primeng-icons-exclamationtriangle.mjs +0 -5
  668. package/esm2022/icons/exclamationtriangle/public_api.mjs +0 -2
  669. package/esm2022/icons/eye/eye.mjs +0 -34
  670. package/esm2022/icons/eye/primeng-icons-eye.mjs +0 -5
  671. package/esm2022/icons/eye/public_api.mjs +0 -2
  672. package/esm2022/icons/eyeslash/eyeslash.mjs +0 -53
  673. package/esm2022/icons/eyeslash/primeng-icons-eyeslash.mjs +0 -5
  674. package/esm2022/icons/eyeslash/public_api.mjs +0 -2
  675. package/esm2022/icons/filter/filter.mjs +0 -51
  676. package/esm2022/icons/filter/primeng-icons-filter.mjs +0 -5
  677. package/esm2022/icons/filter/public_api.mjs +0 -2
  678. package/esm2022/icons/filterslash/filterslash.mjs +0 -53
  679. package/esm2022/icons/filterslash/primeng-icons-filterslash.mjs +0 -5
  680. package/esm2022/icons/filterslash/public_api.mjs +0 -2
  681. package/esm2022/icons/home/home.mjs +0 -53
  682. package/esm2022/icons/home/primeng-icons-home.mjs +0 -5
  683. package/esm2022/icons/home/public_api.mjs +0 -2
  684. package/esm2022/icons/infocircle/infocircle.mjs +0 -53
  685. package/esm2022/icons/infocircle/primeng-icons-infocircle.mjs +0 -5
  686. package/esm2022/icons/infocircle/public_api.mjs +0 -2
  687. package/esm2022/icons/minus/minus.mjs +0 -32
  688. package/esm2022/icons/minus/primeng-icons-minus.mjs +0 -5
  689. package/esm2022/icons/minus/public_api.mjs +0 -2
  690. package/esm2022/icons/pencil/pencil.mjs +0 -51
  691. package/esm2022/icons/pencil/primeng-icons-pencil.mjs +0 -5
  692. package/esm2022/icons/pencil/public_api.mjs +0 -2
  693. package/esm2022/icons/plus/plus.mjs +0 -51
  694. package/esm2022/icons/plus/primeng-icons-plus.mjs +0 -5
  695. package/esm2022/icons/plus/public_api.mjs +0 -2
  696. package/esm2022/icons/primeng-icons.mjs +0 -5
  697. package/esm2022/icons/public_api.mjs +0 -58
  698. package/esm2022/icons/refresh/primeng-icons-refresh.mjs +0 -5
  699. package/esm2022/icons/refresh/public_api.mjs +0 -2
  700. package/esm2022/icons/refresh/refresh.mjs +0 -53
  701. package/esm2022/icons/search/primeng-icons-search.mjs +0 -5
  702. package/esm2022/icons/search/public_api.mjs +0 -2
  703. package/esm2022/icons/search/search.mjs +0 -53
  704. package/esm2022/icons/searchminus/primeng-icons-searchminus.mjs +0 -5
  705. package/esm2022/icons/searchminus/public_api.mjs +0 -2
  706. package/esm2022/icons/searchminus/searchminus.mjs +0 -53
  707. package/esm2022/icons/searchplus/primeng-icons-searchplus.mjs +0 -5
  708. package/esm2022/icons/searchplus/public_api.mjs +0 -2
  709. package/esm2022/icons/searchplus/searchplus.mjs +0 -53
  710. package/esm2022/icons/sortalt/primeng-icons-sortalt.mjs +0 -5
  711. package/esm2022/icons/sortalt/public_api.mjs +0 -2
  712. package/esm2022/icons/sortalt/sortalt.mjs +0 -57
  713. package/esm2022/icons/sortamountdown/primeng-icons-sortamountdown.mjs +0 -5
  714. package/esm2022/icons/sortamountdown/public_api.mjs +0 -2
  715. package/esm2022/icons/sortamountdown/sortamountdown.mjs +0 -51
  716. package/esm2022/icons/sortamountupalt/primeng-icons-sortamountupalt.mjs +0 -5
  717. package/esm2022/icons/sortamountupalt/public_api.mjs +0 -2
  718. package/esm2022/icons/sortamountupalt/sortamountupalt.mjs +0 -51
  719. package/esm2022/icons/spinner/primeng-icons-spinner.mjs +0 -5
  720. package/esm2022/icons/spinner/public_api.mjs +0 -2
  721. package/esm2022/icons/spinner/spinner.mjs +0 -51
  722. package/esm2022/icons/star/primeng-icons-star.mjs +0 -5
  723. package/esm2022/icons/star/public_api.mjs +0 -2
  724. package/esm2022/icons/star/star.mjs +0 -51
  725. package/esm2022/icons/starfill/primeng-icons-starfill.mjs +0 -5
  726. package/esm2022/icons/starfill/public_api.mjs +0 -2
  727. package/esm2022/icons/starfill/starfill.mjs +0 -51
  728. package/esm2022/icons/thlarge/primeng-icons-thlarge.mjs +0 -5
  729. package/esm2022/icons/thlarge/public_api.mjs +0 -2
  730. package/esm2022/icons/thlarge/thlarge.mjs +0 -53
  731. package/esm2022/icons/times/primeng-icons-times.mjs +0 -5
  732. package/esm2022/icons/times/public_api.mjs +0 -2
  733. package/esm2022/icons/times/times.mjs +0 -32
  734. package/esm2022/icons/timescircle/primeng-icons-timescircle.mjs +0 -5
  735. package/esm2022/icons/timescircle/public_api.mjs +0 -2
  736. package/esm2022/icons/timescircle/timescircle.mjs +0 -53
  737. package/esm2022/icons/trash/primeng-icons-trash.mjs +0 -5
  738. package/esm2022/icons/trash/public_api.mjs +0 -2
  739. package/esm2022/icons/trash/trash.mjs +0 -53
  740. package/esm2022/icons/undo/primeng-icons-undo.mjs +0 -5
  741. package/esm2022/icons/undo/public_api.mjs +0 -2
  742. package/esm2022/icons/undo/undo.mjs +0 -53
  743. package/esm2022/icons/upload/primeng-icons-upload.mjs +0 -5
  744. package/esm2022/icons/upload/public_api.mjs +0 -2
  745. package/esm2022/icons/upload/upload.mjs +0 -53
  746. package/esm2022/icons/windowmaximize/primeng-icons-windowmaximize.mjs +0 -5
  747. package/esm2022/icons/windowmaximize/public_api.mjs +0 -2
  748. package/esm2022/icons/windowmaximize/windowmaximize.mjs +0 -53
  749. package/esm2022/icons/windowminimize/primeng-icons-windowminimize.mjs +0 -5
  750. package/esm2022/icons/windowminimize/public_api.mjs +0 -2
  751. package/esm2022/icons/windowminimize/windowminimize.mjs +0 -53
  752. package/esm2022/iftalabel/iftalabel.mjs +0 -49
  753. package/esm2022/iftalabel/primeng-iftalabel.mjs +0 -5
  754. package/esm2022/iftalabel/public_api.mjs +0 -3
  755. package/esm2022/iftalabel/style/iftalabelstyle.mjs +0 -96
  756. package/esm2022/image/image.interface.mjs +0 -2
  757. package/esm2022/image/image.mjs +0 -747
  758. package/esm2022/image/primeng-image.mjs +0 -5
  759. package/esm2022/image/public_api.mjs +0 -4
  760. package/esm2022/image/style/imagestyle.mjs +0 -219
  761. package/esm2022/imagecompare/imagecompare.mjs +0 -158
  762. package/esm2022/imagecompare/primeng-imagecompare.mjs +0 -5
  763. package/esm2022/imagecompare/public_api.mjs +0 -3
  764. package/esm2022/imagecompare/style/imagecomparestyle.mjs +0 -124
  765. package/esm2022/inplace/inplace.interface.mjs +0 -2
  766. package/esm2022/inplace/inplace.mjs +0 -344
  767. package/esm2022/inplace/primeng-inplace.mjs +0 -5
  768. package/esm2022/inplace/public_api.mjs +0 -4
  769. package/esm2022/inplace/style/inplacestyle.mjs +0 -69
  770. package/esm2022/inputgroup/inputgroup.mjs +0 -68
  771. package/esm2022/inputgroup/primeng-inputgroup.mjs +0 -5
  772. package/esm2022/inputgroup/public_api.mjs +0 -3
  773. package/esm2022/inputgroup/style/inputgroupstyle.mjs +0 -145
  774. package/esm2022/inputgroupaddon/inputgroupaddon.mjs +0 -74
  775. package/esm2022/inputgroupaddon/primeng-inputgroupaddon.mjs +0 -5
  776. package/esm2022/inputgroupaddon/public_api.mjs +0 -3
  777. package/esm2022/inputgroupaddon/style/inputgroupaddonstyle.mjs +0 -16
  778. package/esm2022/inputicon/inputicon.mjs +0 -66
  779. package/esm2022/inputicon/primeng-inputicon.mjs +0 -5
  780. package/esm2022/inputicon/public_api.mjs +0 -3
  781. package/esm2022/inputicon/style/inputiconstyle.mjs +0 -16
  782. package/esm2022/inputmask/inputmask.interface.mjs +0 -2
  783. package/esm2022/inputmask/inputmask.mjs +0 -911
  784. package/esm2022/inputmask/primeng-inputmask.mjs +0 -5
  785. package/esm2022/inputmask/public_api.mjs +0 -4
  786. package/esm2022/inputmask/style/inputmaskstyle.mjs +0 -62
  787. package/esm2022/inputnumber/inputnumber.interface.mjs +0 -2
  788. package/esm2022/inputnumber/inputnumber.mjs +0 -1745
  789. package/esm2022/inputnumber/primeng-inputnumber.mjs +0 -5
  790. package/esm2022/inputnumber/public_api.mjs +0 -4
  791. package/esm2022/inputnumber/style/inputnumberstyle.mjs +0 -240
  792. package/esm2022/inputotp/inputotp.mjs +0 -406
  793. package/esm2022/inputotp/primeng-inputotp.mjs +0 -5
  794. package/esm2022/inputotp/public_api.mjs +0 -3
  795. package/esm2022/inputotp/style/inputotpstyle.mjs +0 -60
  796. package/esm2022/inputswitch/inputswitch.interface.mjs +0 -2
  797. package/esm2022/inputswitch/inputswitch.mjs +0 -241
  798. package/esm2022/inputswitch/primeng-inputswitch.mjs +0 -5
  799. package/esm2022/inputswitch/public_api.mjs +0 -4
  800. package/esm2022/inputswitch/style/inputswitchstyle.mjs +0 -130
  801. package/esm2022/inputtext/inputtext.mjs +0 -103
  802. package/esm2022/inputtext/primeng-inputtext.mjs +0 -5
  803. package/esm2022/inputtext/public_api.mjs +0 -3
  804. package/esm2022/inputtext/style/inputtextstyle.mjs +0 -117
  805. package/esm2022/inputtextarea/inputtextarea.mjs +0 -156
  806. package/esm2022/inputtextarea/primeng-inputtextarea.mjs +0 -5
  807. package/esm2022/inputtextarea/public_api.mjs +0 -3
  808. package/esm2022/inputtextarea/style/textareastyle.mjs +0 -107
  809. package/esm2022/keyfilter/keyfilter.interface.mjs +0 -2
  810. package/esm2022/keyfilter/keyfilter.mjs +0 -263
  811. package/esm2022/keyfilter/primeng-keyfilter.mjs +0 -5
  812. package/esm2022/keyfilter/public_api.mjs +0 -3
  813. package/esm2022/knob/knob.mjs +0 -471
  814. package/esm2022/knob/primeng-knob.mjs +0 -5
  815. package/esm2022/knob/public_api.mjs +0 -3
  816. package/esm2022/knob/style/knobstyle.mjs +0 -83
  817. package/esm2022/listbox/listbox.interface.mjs +0 -2
  818. package/esm2022/listbox/listbox.mjs +0 -2044
  819. package/esm2022/listbox/primeng-listbox.mjs +0 -5
  820. package/esm2022/listbox/public_api.mjs +0 -4
  821. package/esm2022/listbox/style/listboxstyle.mjs +0 -206
  822. package/esm2022/megamenu/megamenu.interface.mjs +0 -2
  823. package/esm2022/megamenu/megamenu.mjs +0 -1607
  824. package/esm2022/megamenu/primeng-megamenu.mjs +0 -5
  825. package/esm2022/megamenu/public_api.mjs +0 -4
  826. package/esm2022/megamenu/style/megamenustyle.mjs +0 -487
  827. package/esm2022/menu/menu.mjs +0 -1193
  828. package/esm2022/menu/primeng-menu.mjs +0 -5
  829. package/esm2022/menu/public_api.mjs +0 -3
  830. package/esm2022/menu/style/menustyle.mjs +0 -179
  831. package/esm2022/menubar/menubar.interface.mjs +0 -2
  832. package/esm2022/menubar/menubar.mjs +0 -1484
  833. package/esm2022/menubar/primeng-menubar.mjs +0 -5
  834. package/esm2022/menubar/public_api.mjs +0 -4
  835. package/esm2022/menubar/style/menubarstyle.mjs +0 -375
  836. package/esm2022/message/message.mjs +0 -421
  837. package/esm2022/message/primeng-message.mjs +0 -5
  838. package/esm2022/message/public_api.mjs +0 -3
  839. package/esm2022/message/style/messagestyle.mjs +0 -357
  840. package/esm2022/messages/messages.interface.mjs +0 -2
  841. package/esm2022/messages/messages.mjs +0 -529
  842. package/esm2022/messages/primeng-messages.mjs +0 -5
  843. package/esm2022/messages/public_api.mjs +0 -4
  844. package/esm2022/messages/style/messagesstyle.mjs +0 -229
  845. package/esm2022/metergroup/metergroup.interface.mjs +0 -2
  846. package/esm2022/metergroup/metergroup.mjs +0 -423
  847. package/esm2022/metergroup/primeng-metergroup.mjs +0 -5
  848. package/esm2022/metergroup/public_api.mjs +0 -4
  849. package/esm2022/metergroup/style/metergroupstyle.mjs +0 -169
  850. package/esm2022/multiselect/multiselect.interface.mjs +0 -2
  851. package/esm2022/multiselect/multiselect.mjs +0 -2924
  852. package/esm2022/multiselect/primeng-multiselect.mjs +0 -5
  853. package/esm2022/multiselect/public_api.mjs +0 -4
  854. package/esm2022/multiselect/style/multiselectstyle.mjs +0 -376
  855. package/esm2022/orderlist/orderlist.interface.mjs +0 -2
  856. package/esm2022/orderlist/orderlist.mjs +0 -1121
  857. package/esm2022/orderlist/primeng-orderlist.mjs +0 -5
  858. package/esm2022/orderlist/public_api.mjs +0 -4
  859. package/esm2022/orderlist/style/orderliststyle.mjs +0 -51
  860. package/esm2022/organizationchart/organizationchart.interface.mjs +0 -2
  861. package/esm2022/organizationchart/organizationchart.mjs +0 -591
  862. package/esm2022/organizationchart/primeng-organizationchart.mjs +0 -5
  863. package/esm2022/organizationchart/public_api.mjs +0 -4
  864. package/esm2022/organizationchart/style/organizationchartstyle.mjs +0 -191
  865. package/esm2022/overlay/overlay.mjs +0 -668
  866. package/esm2022/overlay/primeng-overlay.mjs +0 -5
  867. package/esm2022/overlay/public_api.mjs +0 -3
  868. package/esm2022/overlay/style/overlaystyle.mjs +0 -93
  869. package/esm2022/overlaybadge/overlaybadge.mjs +0 -121
  870. package/esm2022/overlaybadge/primeng-overlaybadge.mjs +0 -5
  871. package/esm2022/overlaybadge/public_api.mjs +0 -3
  872. package/esm2022/overlaybadge/style/overlaybadgestyle.mjs +0 -34
  873. package/esm2022/overlaypanel/overlaypanel.mjs +0 -529
  874. package/esm2022/overlaypanel/primeng-overlaypanel.mjs +0 -5
  875. package/esm2022/overlaypanel/public_api.mjs +0 -3
  876. package/esm2022/overlaypanel/style/popoverstyle.mjs +0 -119
  877. package/esm2022/paginator/paginator.interface.mjs +0 -2
  878. package/esm2022/paginator/paginator.mjs +0 -893
  879. package/esm2022/paginator/primeng-paginator.mjs +0 -5
  880. package/esm2022/paginator/public_api.mjs +0 -4
  881. package/esm2022/paginator/style/paginatorstyle.mjs +0 -243
  882. package/esm2022/panel/panel.mjs +0 -585
  883. package/esm2022/panel/primeng-panel.mjs +0 -5
  884. package/esm2022/panel/public_api.mjs +0 -3
  885. package/esm2022/panel/style/panelstyle.mjs +0 -120
  886. package/esm2022/panelmenu/panelmenu.interface.mjs +0 -2
  887. package/esm2022/panelmenu/panelmenu.mjs +0 -1628
  888. package/esm2022/panelmenu/primeng-panelmenu.mjs +0 -5
  889. package/esm2022/panelmenu/public_api.mjs +0 -4
  890. package/esm2022/panelmenu/style/panelmenustyle.mjs +0 -291
  891. package/esm2022/password/password.mjs +0 -1178
  892. package/esm2022/password/primeng-password.mjs +0 -5
  893. package/esm2022/password/public_api.mjs +0 -3
  894. package/esm2022/password/style/passwordstyle.mjs +0 -182
  895. package/esm2022/picklist/picklist.interface.mjs +0 -2
  896. package/esm2022/picklist/picklist.mjs +0 -2298
  897. package/esm2022/picklist/primeng-picklist.mjs +0 -5
  898. package/esm2022/picklist/public_api.mjs +0 -4
  899. package/esm2022/picklist/style/pickliststyle.mjs +0 -79
  900. package/esm2022/popover/popover.mjs +0 -518
  901. package/esm2022/popover/primeng-popover.mjs +0 -5
  902. package/esm2022/popover/public_api.mjs +0 -3
  903. package/esm2022/popover/style/popoverstyle.mjs +0 -99
  904. package/esm2022/primeng.mjs +0 -5
  905. package/esm2022/progressbar/primeng-progressbar.mjs +0 -5
  906. package/esm2022/progressbar/progressbar.mjs +0 -197
  907. package/esm2022/progressbar/public_api.mjs +0 -3
  908. package/esm2022/progressbar/style/progressbarstyle.mjs +0 -165
  909. package/esm2022/progressspinner/primeng-progressspinner.mjs +0 -5
  910. package/esm2022/progressspinner/progressspinner.mjs +0 -105
  911. package/esm2022/progressspinner/public_api.mjs +0 -3
  912. package/esm2022/progressspinner/style/progressspinnerstyle.mjs +0 -115
  913. package/esm2022/public_api.mjs +0 -2
  914. package/esm2022/radiobutton/primeng-radiobutton.mjs +0 -5
  915. package/esm2022/radiobutton/public_api.mjs +0 -4
  916. package/esm2022/radiobutton/radiobutton.interface.mjs +0 -2
  917. package/esm2022/radiobutton/radiobutton.mjs +0 -356
  918. package/esm2022/radiobutton/style/radiobuttonstyle.mjs +0 -196
  919. package/esm2022/rating/primeng-rating.mjs +0 -5
  920. package/esm2022/rating/public_api.mjs +0 -4
  921. package/esm2022/rating/rating.interface.mjs +0 -2
  922. package/esm2022/rating/rating.mjs +0 -425
  923. package/esm2022/rating/style/ratingstyle.mjs +0 -103
  924. package/esm2022/ripple/primeng-ripple.mjs +0 -5
  925. package/esm2022/ripple/public_api.mjs +0 -3
  926. package/esm2022/ripple/ripple.mjs +0 -131
  927. package/esm2022/ripple/style/ripplestyle.mjs +0 -63
  928. package/esm2022/scroller/primeng-scroller.mjs +0 -5
  929. package/esm2022/scroller/public_api.mjs +0 -4
  930. package/esm2022/scroller/scroller.interface.mjs +0 -2
  931. package/esm2022/scroller/scroller.mjs +0 -1290
  932. package/esm2022/scroller/style/scrollerstyle.mjs +0 -104
  933. package/esm2022/scrollpanel/primeng-scrollpanel.mjs +0 -5
  934. package/esm2022/scrollpanel/public_api.mjs +0 -4
  935. package/esm2022/scrollpanel/scrollpanel.interface.mjs +0 -2
  936. package/esm2022/scrollpanel/scrollpanel.mjs +0 -506
  937. package/esm2022/scrollpanel/style/scrollpanelstyle.mjs +0 -120
  938. package/esm2022/scrolltop/primeng-scrolltop.mjs +0 -5
  939. package/esm2022/scrolltop/public_api.mjs +0 -4
  940. package/esm2022/scrolltop/scrolltop.interface.mjs +0 -2
  941. package/esm2022/scrolltop/scrolltop.mjs +0 -336
  942. package/esm2022/scrolltop/style/scrolltopstyle.mjs +0 -77
  943. package/esm2022/select/primeng-select.mjs +0 -5
  944. package/esm2022/select/public_api.mjs +0 -4
  945. package/esm2022/select/select.interface.mjs +0 -2
  946. package/esm2022/select/select.mjs +0 -2617
  947. package/esm2022/select/style/selectstyle.mjs +0 -368
  948. package/esm2022/selectbutton/primeng-selectbutton.mjs +0 -5
  949. package/esm2022/selectbutton/public_api.mjs +0 -4
  950. package/esm2022/selectbutton/selectbutton.interface.mjs +0 -2
  951. package/esm2022/selectbutton/selectbutton.mjs +0 -373
  952. package/esm2022/selectbutton/style/selectbuttonstyle.mjs +0 -73
  953. package/esm2022/sidebar/primeng-sidebar.mjs +0 -5
  954. package/esm2022/sidebar/public_api.mjs +0 -4
  955. package/esm2022/sidebar/sidebar.interface.mjs +0 -2
  956. package/esm2022/sidebar/sidebar.mjs +0 -578
  957. package/esm2022/sidebar/style/drawerstyle.mjs +0 -174
  958. package/esm2022/skeleton/primeng-skeleton.mjs +0 -5
  959. package/esm2022/skeleton/public_api.mjs +0 -3
  960. package/esm2022/skeleton/skeleton.mjs +0 -121
  961. package/esm2022/skeleton/style/skeletonstyle.mjs +0 -93
  962. package/esm2022/slider/primeng-slider.mjs +0 -5
  963. package/esm2022/slider/public_api.mjs +0 -4
  964. package/esm2022/slider/slider.interface.mjs +0 -2
  965. package/esm2022/slider/slider.mjs +0 -820
  966. package/esm2022/slider/style/sliderstyle.mjs +0 -141
  967. package/esm2022/speeddial/primeng-speeddial.mjs +0 -5
  968. package/esm2022/speeddial/public_api.mjs +0 -4
  969. package/esm2022/speeddial/speeddial.interface.mjs +0 -2
  970. package/esm2022/speeddial/speeddial.mjs +0 -866
  971. package/esm2022/speeddial/style/speeddialstyle.mjs +0 -167
  972. package/esm2022/splitbutton/primeng-splitbutton.mjs +0 -5
  973. package/esm2022/splitbutton/public_api.mjs +0 -4
  974. package/esm2022/splitbutton/splitbutton.interface.mjs +0 -2
  975. package/esm2022/splitbutton/splitbutton.mjs +0 -579
  976. package/esm2022/splitbutton/style/splitbuttonstyle.mjs +0 -100
  977. package/esm2022/splitter/primeng-splitter.mjs +0 -5
  978. package/esm2022/splitter/public_api.mjs +0 -4
  979. package/esm2022/splitter/splitter.interface.mjs +0 -2
  980. package/esm2022/splitter/splitter.mjs +0 -616
  981. package/esm2022/splitter/style/splitterstyle.mjs +0 -126
  982. package/esm2022/stepper/primeng-stepper.mjs +0 -5
  983. package/esm2022/stepper/public_api.mjs +0 -3
  984. package/esm2022/stepper/stepper.mjs +0 -521
  985. package/esm2022/stepper/style/stepperstyle.mjs +0 -228
  986. package/esm2022/steps/primeng-steps.mjs +0 -5
  987. package/esm2022/steps/public_api.mjs +0 -3
  988. package/esm2022/steps/steps.mjs +0 -405
  989. package/esm2022/steps/style/stepsstyle.mjs +0 -180
  990. package/esm2022/styleclass/primeng-styleclass.mjs +0 -5
  991. package/esm2022/styleclass/public_api.mjs +0 -2
  992. package/esm2022/styleclass/styleclass.mjs +0 -315
  993. package/esm2022/table/columnfilter.interface.mjs +0 -2
  994. package/esm2022/table/primeng-table.mjs +0 -5
  995. package/esm2022/table/public_api.mjs +0 -5
  996. package/esm2022/table/style/tablestyle.mjs +0 -906
  997. package/esm2022/table/table.interface.mjs +0 -2
  998. package/esm2022/table/table.mjs +0 -7982
  999. package/esm2022/tabmenu/primeng-tabmenu.mjs +0 -5
  1000. package/esm2022/tabmenu/public_api.mjs +0 -4
  1001. package/esm2022/tabmenu/style/tabmenustyle.mjs +0 -192
  1002. package/esm2022/tabmenu/tabmenu.interface.mjs +0 -2
  1003. package/esm2022/tabmenu/tabmenu.mjs +0 -730
  1004. package/esm2022/tabs/primeng-tabs.mjs +0 -5
  1005. package/esm2022/tabs/public_api.mjs +0 -7
  1006. package/esm2022/tabs/style/tabsstyle.mjs +0 -211
  1007. package/esm2022/tabs/tab.mjs +0 -175
  1008. package/esm2022/tabs/tablist.mjs +0 -297
  1009. package/esm2022/tabs/tabpanel.mjs +0 -60
  1010. package/esm2022/tabs/tabpanels.mjs +0 -38
  1011. package/esm2022/tabs/tabs.mjs +0 -105
  1012. package/esm2022/tabview/primeng-tabview.mjs +0 -5
  1013. package/esm2022/tabview/public_api.mjs +0 -4
  1014. package/esm2022/tabview/style/tabsstyle.mjs +0 -211
  1015. package/esm2022/tabview/tabview.interface.mjs +0 -2
  1016. package/esm2022/tabview/tabview.mjs +0 -1089
  1017. package/esm2022/tag/primeng-tag.mjs +0 -5
  1018. package/esm2022/tag/public_api.mjs +0 -4
  1019. package/esm2022/tag/style/tagstyle.mjs +0 -108
  1020. package/esm2022/tag/tag.interface.mjs +0 -2
  1021. package/esm2022/tag/tag.mjs +0 -168
  1022. package/esm2022/terminal/primeng-terminal.mjs +0 -5
  1023. package/esm2022/terminal/public_api.mjs +0 -4
  1024. package/esm2022/terminal/style/terminalstyle.mjs +0 -113
  1025. package/esm2022/terminal/terminal.mjs +0 -195
  1026. package/esm2022/terminal/terminalservice.mjs +0 -25
  1027. package/esm2022/textarea/primeng-textarea.mjs +0 -5
  1028. package/esm2022/textarea/public_api.mjs +0 -3
  1029. package/esm2022/textarea/style/textareastyle.mjs +0 -120
  1030. package/esm2022/textarea/textarea.mjs +0 -165
  1031. package/esm2022/tieredmenu/primeng-tieredmenu.mjs +0 -5
  1032. package/esm2022/tieredmenu/public_api.mjs +0 -4
  1033. package/esm2022/tieredmenu/style/tieredmenustyle.mjs +0 -276
  1034. package/esm2022/tieredmenu/tieredmenu.interface.mjs +0 -2
  1035. package/esm2022/tieredmenu/tieredmenu.mjs +0 -1444
  1036. package/esm2022/timeline/primeng-timeline.mjs +0 -5
  1037. package/esm2022/timeline/public_api.mjs +0 -4
  1038. package/esm2022/timeline/style/timelinestyle.mjs +0 -217
  1039. package/esm2022/timeline/timeline.interface.mjs +0 -2
  1040. package/esm2022/timeline/timeline.mjs +0 -223
  1041. package/esm2022/toast/primeng-toast.mjs +0 -5
  1042. package/esm2022/toast/public_api.mjs +0 -4
  1043. package/esm2022/toast/style/toaststyle.mjs +0 -351
  1044. package/esm2022/toast/toast.interface.mjs +0 -2
  1045. package/esm2022/toast/toast.mjs +0 -738
  1046. package/esm2022/togglebutton/primeng-togglebutton.mjs +0 -5
  1047. package/esm2022/togglebutton/public_api.mjs +0 -3
  1048. package/esm2022/togglebutton/style/togglebuttonstyle.mjs +0 -170
  1049. package/esm2022/togglebutton/togglebutton.interface.mjs +0 -2
  1050. package/esm2022/togglebutton/togglebutton.mjs +0 -353
  1051. package/esm2022/toggleswitch/primeng-toggleswitch.mjs +0 -5
  1052. package/esm2022/toggleswitch/public_api.mjs +0 -4
  1053. package/esm2022/toggleswitch/style/toggleswitchstyle.mjs +0 -165
  1054. package/esm2022/toggleswitch/toggleswitch.interface.mjs +0 -2
  1055. package/esm2022/toggleswitch/toggleswitch.mjs +0 -278
  1056. package/esm2022/toolbar/primeng-toolbar.mjs +0 -5
  1057. package/esm2022/toolbar/public_api.mjs +0 -4
  1058. package/esm2022/toolbar/style/toolbarstyle.mjs +0 -69
  1059. package/esm2022/toolbar/toolbar.interface.mjs +0 -2
  1060. package/esm2022/toolbar/toolbar.mjs +0 -172
  1061. package/esm2022/tooltip/primeng-tooltip.mjs +0 -5
  1062. package/esm2022/tooltip/public_api.mjs +0 -3
  1063. package/esm2022/tooltip/style/tooltipstyle.mjs +0 -113
  1064. package/esm2022/tooltip/tooltip.mjs +0 -715
  1065. package/esm2022/tree/primeng-tree.mjs +0 -5
  1066. package/esm2022/tree/public_api.mjs +0 -4
  1067. package/esm2022/tree/style/treestyle.mjs +0 -323
  1068. package/esm2022/tree/tree.interface.mjs +0 -2
  1069. package/esm2022/tree/tree.mjs +0 -2248
  1070. package/esm2022/treeselect/primeng-treeselect.mjs +0 -5
  1071. package/esm2022/treeselect/public_api.mjs +0 -4
  1072. package/esm2022/treeselect/style/treeselectstyle.mjs +0 -274
  1073. package/esm2022/treeselect/treeselect.interface.mjs +0 -2
  1074. package/esm2022/treeselect/treeselect.mjs +0 -1372
  1075. package/esm2022/treetable/primeng-treetable.mjs +0 -5
  1076. package/esm2022/treetable/public_api.mjs +0 -4
  1077. package/esm2022/treetable/style/treetablestyle.mjs +0 -621
  1078. package/esm2022/treetable/treetable.interface.mjs +0 -2
  1079. package/esm2022/treetable/treetable.mjs +0 -4642
  1080. package/esm2022/ts-helpers/primeng-ts-helpers.mjs +0 -5
  1081. package/esm2022/ts-helpers/public_api.mjs +0 -2
  1082. package/esm2022/ts-helpers/ts-helpers.mjs +0 -2
  1083. package/esm2022/usestyle/primeng-usestyle.mjs +0 -5
  1084. package/esm2022/usestyle/public_api.mjs +0 -2
  1085. package/esm2022/usestyle/usestyle.mjs +0 -44
  1086. package/esm2022/utils/inpututils.mjs +0 -7
  1087. package/esm2022/utils/objectutils.mjs +0 -276
  1088. package/esm2022/utils/primeng-utils.mjs +0 -5
  1089. package/esm2022/utils/public_api.mjs +0 -6
  1090. package/esm2022/utils/uniquecomponentid.mjs +0 -6
  1091. package/esm2022/utils/zindexutils.mjs +0 -35
@@ -1,1484 +0,0 @@
1
- import { CommonModule, DOCUMENT, isPlatformBrowser } from '@angular/common';
2
- import { booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, effect, EventEmitter, Inject, inject, Injectable, Input, NgModule, numberAttribute, Output, PLATFORM_ID, signal, ViewChild, ViewEncapsulation } from '@angular/core';
3
- import { RouterModule } from '@angular/router';
4
- import { findLastIndex, findSingle, focus, isEmpty, isNotEmpty, isPrintableCharacter, isTouchDevice, resolve, uuid } from '@primeuix/utils';
5
- import { SharedModule } from 'primeng/api';
6
- import { BadgeModule } from 'primeng/badge';
7
- import { BaseComponent } from 'primeng/basecomponent';
8
- import { AngleDownIcon, AngleRightIcon, BarsIcon } from 'primeng/icons';
9
- import { Ripple } from 'primeng/ripple';
10
- import { TooltipModule } from 'primeng/tooltip';
11
- import { ZIndexUtils } from 'primeng/utils';
12
- import { interval, Subject } from 'rxjs';
13
- import { debounce, filter } from 'rxjs/operators';
14
- import { MenuBarStyle } from './style/menubarstyle';
15
- import * as i0 from "@angular/core";
16
- import * as i1 from "@angular/common";
17
- import * as i2 from "@angular/router";
18
- import * as i3 from "primeng/tooltip";
19
- import * as i4 from "primeng/badge";
20
- const _c0 = ["menubar"];
21
- const _c1 = (a0, a1) => ({ "p-menubar-submenu": a0, "p-menubar-root-list": a1 });
22
- const _c2 = a0 => ({ "p-menubar-item-link": true, "p-disabled": a0 });
23
- const _c3 = () => ({ exact: false });
24
- const _c4 = (a0, a1) => ({ $implicit: a0, root: a1 });
25
- const _c5 = a0 => ({ display: a0 });
26
- function MenubarSub_ng_template_2_li_0_Template(rf, ctx) { if (rf & 1) {
27
- i0.ɵɵelement(0, "li", 8);
28
- } if (rf & 2) {
29
- const processedItem_r2 = i0.ɵɵnextContext().$implicit;
30
- const ctx_r2 = i0.ɵɵnextContext();
31
- i0.ɵɵstyleMap(ctx_r2.getItemProp(processedItem_r2, "style"));
32
- i0.ɵɵproperty("ngClass", ctx_r2.getSeparatorItemClass(processedItem_r2));
33
- i0.ɵɵattribute("id", ctx_r2.getItemId(processedItem_r2))("data-pc-section", "separator");
34
- } }
35
- function MenubarSub_ng_template_2_li_1_ng_container_3_a_1_span_1_Template(rf, ctx) { if (rf & 1) {
36
- i0.ɵɵelement(0, "span", 19);
37
- } if (rf & 2) {
38
- const processedItem_r2 = i0.ɵɵnextContext(4).$implicit;
39
- const ctx_r2 = i0.ɵɵnextContext();
40
- i0.ɵɵproperty("ngClass", ctx_r2.getItemProp(processedItem_r2, "icon"))("ngStyle", ctx_r2.getItemProp(processedItem_r2, "iconStyle"));
41
- i0.ɵɵattribute("data-pc-section", "icon")("tabindex", -1);
42
- } }
43
- function MenubarSub_ng_template_2_li_1_ng_container_3_a_1_span_2_Template(rf, ctx) { if (rf & 1) {
44
- i0.ɵɵelementStart(0, "span", 20);
45
- i0.ɵɵtext(1);
46
- i0.ɵɵelementEnd();
47
- } if (rf & 2) {
48
- const processedItem_r2 = i0.ɵɵnextContext(4).$implicit;
49
- const ctx_r2 = i0.ɵɵnextContext();
50
- i0.ɵɵproperty("id", ctx_r2.getItemLabelId(processedItem_r2));
51
- i0.ɵɵattribute("data-pc-section", "label");
52
- i0.ɵɵadvance();
53
- i0.ɵɵtextInterpolate1(" ", ctx_r2.getItemLabel(processedItem_r2), " ");
54
- } }
55
- function MenubarSub_ng_template_2_li_1_ng_container_3_a_1_ng_template_3_Template(rf, ctx) { if (rf & 1) {
56
- i0.ɵɵelement(0, "span", 21);
57
- } if (rf & 2) {
58
- const processedItem_r2 = i0.ɵɵnextContext(4).$implicit;
59
- const ctx_r2 = i0.ɵɵnextContext();
60
- i0.ɵɵproperty("innerHTML", ctx_r2.getItemLabel(processedItem_r2), i0.ɵɵsanitizeHtml)("id", ctx_r2.getItemLabelId(processedItem_r2));
61
- i0.ɵɵattribute("data-pc-section", "label");
62
- } }
63
- function MenubarSub_ng_template_2_li_1_ng_container_3_a_1_p_badge_5_Template(rf, ctx) { if (rf & 1) {
64
- i0.ɵɵelement(0, "p-badge", 22);
65
- } if (rf & 2) {
66
- const processedItem_r2 = i0.ɵɵnextContext(4).$implicit;
67
- const ctx_r2 = i0.ɵɵnextContext();
68
- i0.ɵɵproperty("styleClass", ctx_r2.getItemProp(processedItem_r2, "badgeStyleClass"))("value", ctx_r2.getItemProp(processedItem_r2, "badge"));
69
- } }
70
- function MenubarSub_ng_template_2_li_1_ng_container_3_a_1_ng_container_6_ng_container_1_AngleDownIcon_1_Template(rf, ctx) { if (rf & 1) {
71
- i0.ɵɵelement(0, "AngleDownIcon", 25);
72
- } if (rf & 2) {
73
- i0.ɵɵattribute("data-pc-section", "submenuicon");
74
- } }
75
- function MenubarSub_ng_template_2_li_1_ng_container_3_a_1_ng_container_6_ng_container_1_AngleRightIcon_2_Template(rf, ctx) { if (rf & 1) {
76
- i0.ɵɵelement(0, "AngleRightIcon", 25);
77
- } if (rf & 2) {
78
- i0.ɵɵattribute("data-pc-section", "submenuicon");
79
- } }
80
- function MenubarSub_ng_template_2_li_1_ng_container_3_a_1_ng_container_6_ng_container_1_Template(rf, ctx) { if (rf & 1) {
81
- i0.ɵɵelementContainerStart(0);
82
- i0.ɵɵtemplate(1, MenubarSub_ng_template_2_li_1_ng_container_3_a_1_ng_container_6_ng_container_1_AngleDownIcon_1_Template, 1, 1, "AngleDownIcon", 24)(2, MenubarSub_ng_template_2_li_1_ng_container_3_a_1_ng_container_6_ng_container_1_AngleRightIcon_2_Template, 1, 1, "AngleRightIcon", 24);
83
- i0.ɵɵelementContainerEnd();
84
- } if (rf & 2) {
85
- const ctx_r2 = i0.ɵɵnextContext(6);
86
- i0.ɵɵadvance();
87
- i0.ɵɵproperty("ngIf", ctx_r2.root);
88
- i0.ɵɵadvance();
89
- i0.ɵɵproperty("ngIf", !ctx_r2.root);
90
- } }
91
- function MenubarSub_ng_template_2_li_1_ng_container_3_a_1_ng_container_6_2_ng_template_0_Template(rf, ctx) { }
92
- function MenubarSub_ng_template_2_li_1_ng_container_3_a_1_ng_container_6_2_Template(rf, ctx) { if (rf & 1) {
93
- i0.ɵɵtemplate(0, MenubarSub_ng_template_2_li_1_ng_container_3_a_1_ng_container_6_2_ng_template_0_Template, 0, 0, "ng-template", 26);
94
- } if (rf & 2) {
95
- i0.ɵɵproperty("data-pc-section", "submenuicon");
96
- } }
97
- function MenubarSub_ng_template_2_li_1_ng_container_3_a_1_ng_container_6_Template(rf, ctx) { if (rf & 1) {
98
- i0.ɵɵelementContainerStart(0);
99
- i0.ɵɵtemplate(1, MenubarSub_ng_template_2_li_1_ng_container_3_a_1_ng_container_6_ng_container_1_Template, 3, 2, "ng-container", 11)(2, MenubarSub_ng_template_2_li_1_ng_container_3_a_1_ng_container_6_2_Template, 1, 1, null, 23);
100
- i0.ɵɵelementContainerEnd();
101
- } if (rf & 2) {
102
- const ctx_r2 = i0.ɵɵnextContext(5);
103
- i0.ɵɵadvance();
104
- i0.ɵɵproperty("ngIf", !ctx_r2.submenuiconTemplate);
105
- i0.ɵɵadvance();
106
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.submenuiconTemplate);
107
- } }
108
- function MenubarSub_ng_template_2_li_1_ng_container_3_a_1_Template(rf, ctx) { if (rf & 1) {
109
- i0.ɵɵelementStart(0, "a", 15);
110
- i0.ɵɵtemplate(1, MenubarSub_ng_template_2_li_1_ng_container_3_a_1_span_1_Template, 1, 4, "span", 16)(2, MenubarSub_ng_template_2_li_1_ng_container_3_a_1_span_2_Template, 2, 3, "span", 17)(3, MenubarSub_ng_template_2_li_1_ng_container_3_a_1_ng_template_3_Template, 1, 3, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor)(5, MenubarSub_ng_template_2_li_1_ng_container_3_a_1_p_badge_5_Template, 1, 2, "p-badge", 18)(6, MenubarSub_ng_template_2_li_1_ng_container_3_a_1_ng_container_6_Template, 3, 2, "ng-container", 11);
111
- i0.ɵɵelementEnd();
112
- } if (rf & 2) {
113
- const htmlLabel_r5 = i0.ɵɵreference(4);
114
- const processedItem_r2 = i0.ɵɵnextContext(3).$implicit;
115
- const ctx_r2 = i0.ɵɵnextContext();
116
- i0.ɵɵproperty("target", ctx_r2.getItemProp(processedItem_r2, "target"))("ngClass", i0.ɵɵpureFunction1(11, _c2, ctx_r2.getItemProp(processedItem_r2, "disabled")));
117
- i0.ɵɵattribute("href", ctx_r2.getItemProp(processedItem_r2, "url"), i0.ɵɵsanitizeUrl)("data-automationid", ctx_r2.getItemProp(processedItem_r2, "automationId"))("data-pc-section", "action")("tabindex", -1);
118
- i0.ɵɵadvance();
119
- i0.ɵɵproperty("ngIf", ctx_r2.getItemProp(processedItem_r2, "icon"));
120
- i0.ɵɵadvance();
121
- i0.ɵɵproperty("ngIf", ctx_r2.getItemProp(processedItem_r2, "escape"))("ngIfElse", htmlLabel_r5);
122
- i0.ɵɵadvance(3);
123
- i0.ɵɵproperty("ngIf", ctx_r2.getItemProp(processedItem_r2, "badge"));
124
- i0.ɵɵadvance();
125
- i0.ɵɵproperty("ngIf", ctx_r2.isItemGroup(processedItem_r2));
126
- } }
127
- function MenubarSub_ng_template_2_li_1_ng_container_3_a_2_span_1_Template(rf, ctx) { if (rf & 1) {
128
- i0.ɵɵelement(0, "span", 19);
129
- } if (rf & 2) {
130
- const processedItem_r2 = i0.ɵɵnextContext(4).$implicit;
131
- const ctx_r2 = i0.ɵɵnextContext();
132
- i0.ɵɵproperty("ngClass", ctx_r2.getItemProp(processedItem_r2, "icon"))("ngStyle", ctx_r2.getItemProp(processedItem_r2, "iconStyle"));
133
- i0.ɵɵattribute("data-pc-section", "icon")("tabindex", -1);
134
- } }
135
- function MenubarSub_ng_template_2_li_1_ng_container_3_a_2_span_2_Template(rf, ctx) { if (rf & 1) {
136
- i0.ɵɵelementStart(0, "span", 29);
137
- i0.ɵɵtext(1);
138
- i0.ɵɵelementEnd();
139
- } if (rf & 2) {
140
- const processedItem_r2 = i0.ɵɵnextContext(4).$implicit;
141
- const ctx_r2 = i0.ɵɵnextContext();
142
- i0.ɵɵadvance();
143
- i0.ɵɵtextInterpolate(ctx_r2.getItemLabel(processedItem_r2));
144
- } }
145
- function MenubarSub_ng_template_2_li_1_ng_container_3_a_2_ng_template_3_Template(rf, ctx) { if (rf & 1) {
146
- i0.ɵɵelement(0, "span", 30);
147
- } if (rf & 2) {
148
- const processedItem_r2 = i0.ɵɵnextContext(4).$implicit;
149
- const ctx_r2 = i0.ɵɵnextContext();
150
- i0.ɵɵproperty("innerHTML", ctx_r2.getItemLabel(processedItem_r2), i0.ɵɵsanitizeHtml);
151
- i0.ɵɵattribute("data-pc-section", "label");
152
- } }
153
- function MenubarSub_ng_template_2_li_1_ng_container_3_a_2_p_badge_5_Template(rf, ctx) { if (rf & 1) {
154
- i0.ɵɵelement(0, "p-badge", 22);
155
- } if (rf & 2) {
156
- const processedItem_r2 = i0.ɵɵnextContext(4).$implicit;
157
- const ctx_r2 = i0.ɵɵnextContext();
158
- i0.ɵɵproperty("styleClass", ctx_r2.getItemProp(processedItem_r2, "badgeStyleClass"))("value", ctx_r2.getItemProp(processedItem_r2, "badge"));
159
- } }
160
- function MenubarSub_ng_template_2_li_1_ng_container_3_a_2_ng_container_6_ng_container_1_AngleDownIcon_1_Template(rf, ctx) { if (rf & 1) {
161
- i0.ɵɵelement(0, "AngleDownIcon", 25);
162
- } if (rf & 2) {
163
- i0.ɵɵattribute("data-pc-section", "submenuicon");
164
- } }
165
- function MenubarSub_ng_template_2_li_1_ng_container_3_a_2_ng_container_6_ng_container_1_AngleRightIcon_2_Template(rf, ctx) { if (rf & 1) {
166
- i0.ɵɵelement(0, "AngleRightIcon", 25);
167
- } if (rf & 2) {
168
- i0.ɵɵattribute("data-pc-section", "submenuicon");
169
- } }
170
- function MenubarSub_ng_template_2_li_1_ng_container_3_a_2_ng_container_6_ng_container_1_Template(rf, ctx) { if (rf & 1) {
171
- i0.ɵɵelementContainerStart(0);
172
- i0.ɵɵtemplate(1, MenubarSub_ng_template_2_li_1_ng_container_3_a_2_ng_container_6_ng_container_1_AngleDownIcon_1_Template, 1, 1, "AngleDownIcon", 24)(2, MenubarSub_ng_template_2_li_1_ng_container_3_a_2_ng_container_6_ng_container_1_AngleRightIcon_2_Template, 1, 1, "AngleRightIcon", 24);
173
- i0.ɵɵelementContainerEnd();
174
- } if (rf & 2) {
175
- const ctx_r2 = i0.ɵɵnextContext(6);
176
- i0.ɵɵadvance();
177
- i0.ɵɵproperty("ngIf", ctx_r2.root);
178
- i0.ɵɵadvance();
179
- i0.ɵɵproperty("ngIf", !ctx_r2.root);
180
- } }
181
- function MenubarSub_ng_template_2_li_1_ng_container_3_a_2_ng_container_6_2_ng_template_0_Template(rf, ctx) { }
182
- function MenubarSub_ng_template_2_li_1_ng_container_3_a_2_ng_container_6_2_Template(rf, ctx) { if (rf & 1) {
183
- i0.ɵɵtemplate(0, MenubarSub_ng_template_2_li_1_ng_container_3_a_2_ng_container_6_2_ng_template_0_Template, 0, 0, "ng-template", 26);
184
- } if (rf & 2) {
185
- i0.ɵɵproperty("data-pc-section", "submenuicon");
186
- } }
187
- function MenubarSub_ng_template_2_li_1_ng_container_3_a_2_ng_container_6_Template(rf, ctx) { if (rf & 1) {
188
- i0.ɵɵelementContainerStart(0);
189
- i0.ɵɵtemplate(1, MenubarSub_ng_template_2_li_1_ng_container_3_a_2_ng_container_6_ng_container_1_Template, 3, 2, "ng-container", 11)(2, MenubarSub_ng_template_2_li_1_ng_container_3_a_2_ng_container_6_2_Template, 1, 1, null, 23);
190
- i0.ɵɵelementContainerEnd();
191
- } if (rf & 2) {
192
- const ctx_r2 = i0.ɵɵnextContext(5);
193
- i0.ɵɵadvance();
194
- i0.ɵɵproperty("ngIf", !ctx_r2.submenuiconTemplate);
195
- i0.ɵɵadvance();
196
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.submenuiconTemplate);
197
- } }
198
- function MenubarSub_ng_template_2_li_1_ng_container_3_a_2_Template(rf, ctx) { if (rf & 1) {
199
- i0.ɵɵelementStart(0, "a", 27);
200
- i0.ɵɵtemplate(1, MenubarSub_ng_template_2_li_1_ng_container_3_a_2_span_1_Template, 1, 4, "span", 16)(2, MenubarSub_ng_template_2_li_1_ng_container_3_a_2_span_2_Template, 2, 1, "span", 28)(3, MenubarSub_ng_template_2_li_1_ng_container_3_a_2_ng_template_3_Template, 1, 2, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor)(5, MenubarSub_ng_template_2_li_1_ng_container_3_a_2_p_badge_5_Template, 1, 2, "p-badge", 18)(6, MenubarSub_ng_template_2_li_1_ng_container_3_a_2_ng_container_6_Template, 3, 2, "ng-container", 11);
201
- i0.ɵɵelementEnd();
202
- } if (rf & 2) {
203
- const htmlRouteLabel_r6 = i0.ɵɵreference(4);
204
- const processedItem_r2 = i0.ɵɵnextContext(3).$implicit;
205
- const ctx_r2 = i0.ɵɵnextContext();
206
- i0.ɵɵproperty("routerLink", ctx_r2.getItemProp(processedItem_r2, "routerLink"))("queryParams", ctx_r2.getItemProp(processedItem_r2, "queryParams"))("routerLinkActive", "p-menubar-item-link-active")("routerLinkActiveOptions", ctx_r2.getItemProp(processedItem_r2, "routerLinkActiveOptions") || i0.ɵɵpureFunction0(20, _c3))("target", ctx_r2.getItemProp(processedItem_r2, "target"))("ngClass", i0.ɵɵpureFunction1(21, _c2, ctx_r2.getItemProp(processedItem_r2, "disabled")))("fragment", ctx_r2.getItemProp(processedItem_r2, "fragment"))("queryParamsHandling", ctx_r2.getItemProp(processedItem_r2, "queryParamsHandling"))("preserveFragment", ctx_r2.getItemProp(processedItem_r2, "preserveFragment"))("skipLocationChange", ctx_r2.getItemProp(processedItem_r2, "skipLocationChange"))("replaceUrl", ctx_r2.getItemProp(processedItem_r2, "replaceUrl"))("state", ctx_r2.getItemProp(processedItem_r2, "state"));
207
- i0.ɵɵattribute("data-automationid", ctx_r2.getItemProp(processedItem_r2, "automationId"))("tabindex", -1)("data-pc-section", "action");
208
- i0.ɵɵadvance();
209
- i0.ɵɵproperty("ngIf", ctx_r2.getItemProp(processedItem_r2, "icon"));
210
- i0.ɵɵadvance();
211
- i0.ɵɵproperty("ngIf", ctx_r2.getItemProp(processedItem_r2, "escape"))("ngIfElse", htmlRouteLabel_r6);
212
- i0.ɵɵadvance(3);
213
- i0.ɵɵproperty("ngIf", ctx_r2.getItemProp(processedItem_r2, "badge"));
214
- i0.ɵɵadvance();
215
- i0.ɵɵproperty("ngIf", ctx_r2.isItemGroup(processedItem_r2));
216
- } }
217
- function MenubarSub_ng_template_2_li_1_ng_container_3_Template(rf, ctx) { if (rf & 1) {
218
- i0.ɵɵelementContainerStart(0);
219
- i0.ɵɵtemplate(1, MenubarSub_ng_template_2_li_1_ng_container_3_a_1_Template, 7, 13, "a", 13)(2, MenubarSub_ng_template_2_li_1_ng_container_3_a_2_Template, 7, 23, "a", 14);
220
- i0.ɵɵelementContainerEnd();
221
- } if (rf & 2) {
222
- const processedItem_r2 = i0.ɵɵnextContext(2).$implicit;
223
- const ctx_r2 = i0.ɵɵnextContext();
224
- i0.ɵɵadvance();
225
- i0.ɵɵproperty("ngIf", !ctx_r2.getItemProp(processedItem_r2, "routerLink"));
226
- i0.ɵɵadvance();
227
- i0.ɵɵproperty("ngIf", ctx_r2.getItemProp(processedItem_r2, "routerLink"));
228
- } }
229
- function MenubarSub_ng_template_2_li_1_ng_container_4_1_ng_template_0_Template(rf, ctx) { }
230
- function MenubarSub_ng_template_2_li_1_ng_container_4_1_Template(rf, ctx) { if (rf & 1) {
231
- i0.ɵɵtemplate(0, MenubarSub_ng_template_2_li_1_ng_container_4_1_ng_template_0_Template, 0, 0, "ng-template");
232
- } }
233
- function MenubarSub_ng_template_2_li_1_ng_container_4_Template(rf, ctx) { if (rf & 1) {
234
- i0.ɵɵelementContainerStart(0);
235
- i0.ɵɵtemplate(1, MenubarSub_ng_template_2_li_1_ng_container_4_1_Template, 1, 0, null, 31);
236
- i0.ɵɵelementContainerEnd();
237
- } if (rf & 2) {
238
- const processedItem_r2 = i0.ɵɵnextContext(2).$implicit;
239
- const ctx_r2 = i0.ɵɵnextContext();
240
- i0.ɵɵadvance();
241
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.itemTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c4, processedItem_r2.item, ctx_r2.root));
242
- } }
243
- function MenubarSub_ng_template_2_li_1_p_menubarSub_5_Template(rf, ctx) { if (rf & 1) {
244
- const _r7 = i0.ɵɵgetCurrentView();
245
- i0.ɵɵelementStart(0, "p-menubarSub", 32);
246
- i0.ɵɵlistener("itemClick", function MenubarSub_ng_template_2_li_1_p_menubarSub_5_Template_p_menubarSub_itemClick_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.itemClick.emit($event)); })("itemMouseEnter", function MenubarSub_ng_template_2_li_1_p_menubarSub_5_Template_p_menubarSub_itemMouseEnter_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onItemMouseEnter($event)); });
247
- i0.ɵɵelementEnd();
248
- } if (rf & 2) {
249
- const processedItem_r2 = i0.ɵɵnextContext(2).$implicit;
250
- const ctx_r2 = i0.ɵɵnextContext();
251
- i0.ɵɵproperty("itemTemplate", ctx_r2.itemTemplate)("items", processedItem_r2.items)("mobileActive", ctx_r2.mobileActive)("autoDisplay", ctx_r2.autoDisplay)("menuId", ctx_r2.menuId)("activeItemPath", ctx_r2.activeItemPath)("focusedItemId", ctx_r2.focusedItemId)("level", ctx_r2.level + 1)("ariaLabelledBy", ctx_r2.getItemLabelId(processedItem_r2))("inlineStyles", i0.ɵɵpureFunction1(10, _c5, ctx_r2.isItemActive(processedItem_r2) ? "flex" : "none"));
252
- } }
253
- function MenubarSub_ng_template_2_li_1_Template(rf, ctx) { if (rf & 1) {
254
- const _r4 = i0.ɵɵgetCurrentView();
255
- i0.ɵɵelementStart(0, "li", 9, 1)(2, "div", 10);
256
- i0.ɵɵlistener("click", function MenubarSub_ng_template_2_li_1_Template_div_click_2_listener($event) { i0.ɵɵrestoreView(_r4); const processedItem_r2 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onItemClick($event, processedItem_r2)); })("mouseenter", function MenubarSub_ng_template_2_li_1_Template_div_mouseenter_2_listener($event) { i0.ɵɵrestoreView(_r4); const processedItem_r2 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onItemMouseEnter({ $event: $event, processedItem: processedItem_r2 })); });
257
- i0.ɵɵtemplate(3, MenubarSub_ng_template_2_li_1_ng_container_3_Template, 3, 2, "ng-container", 11)(4, MenubarSub_ng_template_2_li_1_ng_container_4_Template, 2, 5, "ng-container", 11);
258
- i0.ɵɵelementEnd();
259
- i0.ɵɵtemplate(5, MenubarSub_ng_template_2_li_1_p_menubarSub_5_Template, 1, 12, "p-menubarSub", 12);
260
- i0.ɵɵelementEnd();
261
- } if (rf & 2) {
262
- const ctx_r7 = i0.ɵɵnextContext();
263
- const processedItem_r2 = ctx_r7.$implicit;
264
- const index_r9 = ctx_r7.index;
265
- const ctx_r2 = i0.ɵɵnextContext();
266
- i0.ɵɵclassMap(ctx_r2.getItemProp(processedItem_r2, "styleClass"));
267
- i0.ɵɵproperty("ngStyle", ctx_r2.getItemProp(processedItem_r2, "style"))("ngClass", ctx_r2.getItemClass(processedItem_r2))("tooltipOptions", ctx_r2.getItemProp(processedItem_r2, "tooltipOptions"));
268
- i0.ɵɵattribute("id", ctx_r2.getItemId(processedItem_r2))("data-pc-section", "menuitem")("data-p-highlight", ctx_r2.isItemActive(processedItem_r2))("data-p-focused", ctx_r2.isItemFocused(processedItem_r2))("data-p-disabled", ctx_r2.isItemDisabled(processedItem_r2))("aria-label", ctx_r2.getItemLabel(processedItem_r2))("aria-disabled", ctx_r2.isItemDisabled(processedItem_r2) || undefined)("aria-haspopup", ctx_r2.isItemGroup(processedItem_r2) && !ctx_r2.getItemProp(processedItem_r2, "to") ? "menu" : undefined)("aria-expanded", ctx_r2.isItemGroup(processedItem_r2) ? ctx_r2.isItemActive(processedItem_r2) : undefined)("aria-level", ctx_r2.level + 1)("aria-setsize", ctx_r2.getAriaSetSize())("aria-posinset", ctx_r2.getAriaPosInset(index_r9));
269
- i0.ɵɵadvance(2);
270
- i0.ɵɵattribute("data-pc-section", "content");
271
- i0.ɵɵadvance();
272
- i0.ɵɵproperty("ngIf", !ctx_r2.itemTemplate);
273
- i0.ɵɵadvance();
274
- i0.ɵɵproperty("ngIf", ctx_r2.itemTemplate);
275
- i0.ɵɵadvance();
276
- i0.ɵɵproperty("ngIf", ctx_r2.isItemVisible(processedItem_r2) && ctx_r2.isItemGroup(processedItem_r2));
277
- } }
278
- function MenubarSub_ng_template_2_Template(rf, ctx) { if (rf & 1) {
279
- i0.ɵɵtemplate(0, MenubarSub_ng_template_2_li_0_Template, 1, 5, "li", 6)(1, MenubarSub_ng_template_2_li_1_Template, 6, 21, "li", 7);
280
- } if (rf & 2) {
281
- const processedItem_r2 = ctx.$implicit;
282
- const ctx_r2 = i0.ɵɵnextContext();
283
- i0.ɵɵproperty("ngIf", ctx_r2.isItemVisible(processedItem_r2) && ctx_r2.getItemProp(processedItem_r2, "separator"));
284
- i0.ɵɵadvance();
285
- i0.ɵɵproperty("ngIf", ctx_r2.isItemVisible(processedItem_r2) && !ctx_r2.getItemProp(processedItem_r2, "separator"));
286
- } }
287
- const _c6 = ["start"];
288
- const _c7 = ["end"];
289
- const _c8 = ["item"];
290
- const _c9 = ["menuicon"];
291
- const _c10 = ["submenuicon"];
292
- const _c11 = ["menubutton"];
293
- const _c12 = ["rootmenu"];
294
- const _c13 = ["*"];
295
- const _c14 = (a0, a1) => ({ "p-menubar p-component": true, "p-menubar-mobile": a0, "p-menubar-mobile-active": a1 });
296
- function Menubar_div_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
297
- i0.ɵɵelementContainer(0);
298
- } }
299
- function Menubar_div_1_Template(rf, ctx) { if (rf & 1) {
300
- i0.ɵɵelementStart(0, "div", 8);
301
- i0.ɵɵtemplate(1, Menubar_div_1_ng_container_1_Template, 1, 0, "ng-container", 9);
302
- i0.ɵɵelementEnd();
303
- } if (rf & 2) {
304
- const ctx_r1 = i0.ɵɵnextContext();
305
- i0.ɵɵadvance();
306
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.startTemplate);
307
- } }
308
- function Menubar_a_2_BarsIcon_2_Template(rf, ctx) { if (rf & 1) {
309
- i0.ɵɵelement(0, "BarsIcon");
310
- } }
311
- function Menubar_a_2_3_ng_template_0_Template(rf, ctx) { }
312
- function Menubar_a_2_3_Template(rf, ctx) { if (rf & 1) {
313
- i0.ɵɵtemplate(0, Menubar_a_2_3_ng_template_0_Template, 0, 0, "ng-template");
314
- } }
315
- function Menubar_a_2_Template(rf, ctx) { if (rf & 1) {
316
- const _r3 = i0.ɵɵgetCurrentView();
317
- i0.ɵɵelementStart(0, "a", 10, 2);
318
- i0.ɵɵlistener("click", function Menubar_a_2_Template_a_click_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.menuButtonClick($event)); })("keydown", function Menubar_a_2_Template_a_keydown_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.menuButtonKeydown($event)); });
319
- i0.ɵɵtemplate(2, Menubar_a_2_BarsIcon_2_Template, 1, 0, "BarsIcon", 11)(3, Menubar_a_2_3_Template, 1, 0, null, 9);
320
- i0.ɵɵelementEnd();
321
- } if (rf & 2) {
322
- const ctx_r1 = i0.ɵɵnextContext();
323
- i0.ɵɵattribute("aria-haspopup", ctx_r1.model.length && ctx_r1.model.length > 0 ? true : false)("aria-expanded", ctx_r1.mobileActive)("aria-controls", ctx_r1.id)("aria-label", ctx_r1.config.translation.aria.navigation)("data-pc-section", "button");
324
- i0.ɵɵadvance(2);
325
- i0.ɵɵproperty("ngIf", !ctx_r1.menuiconTemplate);
326
- i0.ɵɵadvance();
327
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.menuiconTemplate);
328
- } }
329
- function Menubar_div_5_ng_container_1_Template(rf, ctx) { if (rf & 1) {
330
- i0.ɵɵelementContainer(0);
331
- } }
332
- function Menubar_div_5_Template(rf, ctx) { if (rf & 1) {
333
- i0.ɵɵelementStart(0, "div", 12);
334
- i0.ɵɵtemplate(1, Menubar_div_5_ng_container_1_Template, 1, 0, "ng-container", 9);
335
- i0.ɵɵelementEnd();
336
- } if (rf & 2) {
337
- const ctx_r1 = i0.ɵɵnextContext();
338
- i0.ɵɵadvance();
339
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.endTemplate);
340
- } }
341
- function Menubar_ng_template_6_Template(rf, ctx) { if (rf & 1) {
342
- i0.ɵɵelementStart(0, "div", 12);
343
- i0.ɵɵprojection(1);
344
- i0.ɵɵelementEnd();
345
- } }
346
- export class MenubarService {
347
- autoHide;
348
- autoHideDelay;
349
- mouseLeaves = new Subject();
350
- mouseLeft$ = this.mouseLeaves.pipe(debounce(() => interval(this.autoHideDelay)), filter((mouseLeft) => this.autoHide && mouseLeft));
351
- static ɵfac = function MenubarService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MenubarService)(); };
352
- static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MenubarService, factory: MenubarService.ɵfac });
353
- }
354
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MenubarService, [{
355
- type: Injectable
356
- }], null, null); })();
357
- export class MenubarSub extends BaseComponent {
358
- items;
359
- itemTemplate;
360
- root = false;
361
- autoZIndex = true;
362
- baseZIndex = 0;
363
- mobileActive;
364
- autoDisplay;
365
- menuId;
366
- ariaLabel;
367
- ariaLabelledBy;
368
- level = 0;
369
- focusedItemId;
370
- activeItemPath;
371
- inlineStyles;
372
- submenuiconTemplate;
373
- itemClick = new EventEmitter();
374
- itemMouseEnter = new EventEmitter();
375
- menuFocus = new EventEmitter();
376
- menuBlur = new EventEmitter();
377
- menuKeydown = new EventEmitter();
378
- menubarViewChild;
379
- mouseLeaveSubscriber;
380
- menubarService = inject(MenubarService);
381
- ngOnInit() {
382
- super.ngOnInit();
383
- this.mouseLeaveSubscriber = this.menubarService.mouseLeft$.subscribe(() => {
384
- this.cd.markForCheck();
385
- });
386
- }
387
- onItemClick(event, processedItem) {
388
- this.getItemProp(processedItem, 'command', { originalEvent: event, item: processedItem.item });
389
- this.itemClick.emit({ originalEvent: event, processedItem, isFocus: true });
390
- }
391
- getItemProp(processedItem, name, params = null) {
392
- return processedItem && processedItem.item ? resolve(processedItem.item[name], params) : undefined;
393
- }
394
- getItemId(processedItem) {
395
- return processedItem.item && processedItem.item?.id ? processedItem.item.id : `${this.menuId}_${processedItem.key}`;
396
- }
397
- getItemKey(processedItem) {
398
- return this.getItemId(processedItem);
399
- }
400
- getItemLabelId(processedItem) {
401
- return `${this.menuId}_${processedItem.key}_label`;
402
- }
403
- getItemClass(processedItem) {
404
- return {
405
- ...this.getItemProp(processedItem, 'class'),
406
- 'p-menubar-item': true,
407
- 'p-menubar-item-active': this.isItemActive(processedItem),
408
- 'p-focus': this.isItemFocused(processedItem),
409
- 'p-disabled': this.isItemDisabled(processedItem)
410
- };
411
- }
412
- getItemLabel(processedItem) {
413
- return this.getItemProp(processedItem, 'label');
414
- }
415
- getSeparatorItemClass(processedItem) {
416
- return {
417
- ...this.getItemProp(processedItem, 'class'),
418
- 'p-menubar-separator': true
419
- };
420
- }
421
- isItemVisible(processedItem) {
422
- return this.getItemProp(processedItem, 'visible') !== false;
423
- }
424
- isItemActive(processedItem) {
425
- if (this.activeItemPath) {
426
- return this.activeItemPath.some((path) => path.key === processedItem.key);
427
- }
428
- }
429
- isItemDisabled(processedItem) {
430
- return this.getItemProp(processedItem, 'disabled');
431
- }
432
- isItemFocused(processedItem) {
433
- return this.focusedItemId === this.getItemId(processedItem);
434
- }
435
- isItemGroup(processedItem) {
436
- return isNotEmpty(processedItem.items);
437
- }
438
- getAriaSetSize() {
439
- return this.items.filter((processedItem) => this.isItemVisible(processedItem) && !this.getItemProp(processedItem, 'separator')).length;
440
- }
441
- getAriaPosInset(index) {
442
- return index - this.items.slice(0, index).filter((processedItem) => this.isItemVisible(processedItem) && this.getItemProp(processedItem, 'separator')).length + 1;
443
- }
444
- onItemMouseLeave() {
445
- this.menubarService.mouseLeaves.next(true);
446
- }
447
- onItemMouseEnter(param) {
448
- if (this.autoDisplay) {
449
- this.menubarService.mouseLeaves.next(false);
450
- const { event, processedItem } = param;
451
- this.itemMouseEnter.emit({ originalEvent: event, processedItem });
452
- }
453
- }
454
- ngOnDestroy() {
455
- this.mouseLeaveSubscriber?.unsubscribe();
456
- super.ngOnDestroy();
457
- }
458
- static ɵfac = /*@__PURE__*/ (() => { let ɵMenubarSub_BaseFactory; return function MenubarSub_Factory(__ngFactoryType__) { return (ɵMenubarSub_BaseFactory || (ɵMenubarSub_BaseFactory = i0.ɵɵgetInheritedFactory(MenubarSub)))(__ngFactoryType__ || MenubarSub); }; })();
459
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MenubarSub, selectors: [["p-menubarSub"], ["p-menubarsub"]], viewQuery: function MenubarSub_Query(rf, ctx) { if (rf & 1) {
460
- i0.ɵɵviewQuery(_c0, 7);
461
- } if (rf & 2) {
462
- let _t;
463
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.menubarViewChild = _t.first);
464
- } }, inputs: { items: "items", itemTemplate: "itemTemplate", root: [2, "root", "root", booleanAttribute], autoZIndex: [2, "autoZIndex", "autoZIndex", booleanAttribute], baseZIndex: [2, "baseZIndex", "baseZIndex", numberAttribute], mobileActive: [2, "mobileActive", "mobileActive", booleanAttribute], autoDisplay: [2, "autoDisplay", "autoDisplay", booleanAttribute], menuId: "menuId", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", level: [2, "level", "level", numberAttribute], focusedItemId: "focusedItemId", activeItemPath: "activeItemPath", inlineStyles: "inlineStyles", submenuiconTemplate: "submenuiconTemplate" }, outputs: { itemClick: "itemClick", itemMouseEnter: "itemMouseEnter", menuFocus: "menuFocus", menuBlur: "menuBlur", menuKeydown: "menuKeydown" }, standalone: true, features: [i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], decls: 3, vars: 12, consts: [["menubar", ""], ["listItem", ""], ["htmlLabel", ""], ["htmlRouteLabel", ""], ["role", "menubar", 3, "focus", "blur", "keydown", "ngClass", "tabindex", "ngStyle"], ["ngFor", "", 3, "ngForOf"], ["role", "separator", 3, "style", "ngClass", 4, "ngIf"], ["role", "menuitem", "pTooltip", "", 3, "ngStyle", "ngClass", "class", "tooltipOptions", 4, "ngIf"], ["role", "separator", 3, "ngClass"], ["role", "menuitem", "pTooltip", "", 3, "ngStyle", "ngClass", "tooltipOptions"], [1, "p-menubar-item-content", 3, "click", "mouseenter"], [4, "ngIf"], [3, "itemTemplate", "items", "mobileActive", "autoDisplay", "menuId", "activeItemPath", "focusedItemId", "level", "ariaLabelledBy", "inlineStyles", "itemClick", "itemMouseEnter", 4, "ngIf"], ["pRipple", "", 3, "target", "ngClass", 4, "ngIf"], ["pRipple", "", 3, "routerLink", "queryParams", "routerLinkActive", "routerLinkActiveOptions", "target", "ngClass", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", 4, "ngIf"], ["pRipple", "", 3, "target", "ngClass"], ["class", "p-menubar-item-icon", 3, "ngClass", "ngStyle", 4, "ngIf"], ["class", "p-menubar-item-label", 3, "id", 4, "ngIf", "ngIfElse"], [3, "styleClass", "value", 4, "ngIf"], [1, "p-menubar-item-icon", 3, "ngClass", "ngStyle"], [1, "p-menubar-item-label", 3, "id"], [1, "p-menubar-item-label", 3, "innerHTML", "id"], [3, "styleClass", "value"], [4, "ngTemplateOutlet"], ["class", "p-menubar-submenu-icon", 4, "ngIf"], [1, "p-menubar-submenu-icon"], [3, "data-pc-section"], ["pRipple", "", 3, "routerLink", "queryParams", "routerLinkActive", "routerLinkActiveOptions", "target", "ngClass", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state"], ["class", "p-menubar-item-label", 4, "ngIf", "ngIfElse"], [1, "p-menubar-item-label"], [1, "p-menubar-item-label", 3, "innerHTML"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [3, "itemClick", "itemMouseEnter", "itemTemplate", "items", "mobileActive", "autoDisplay", "menuId", "activeItemPath", "focusedItemId", "level", "ariaLabelledBy", "inlineStyles"]], template: function MenubarSub_Template(rf, ctx) { if (rf & 1) {
465
- const _r1 = i0.ɵɵgetCurrentView();
466
- i0.ɵɵelementStart(0, "ul", 4, 0);
467
- i0.ɵɵlistener("focus", function MenubarSub_Template_ul_focus_0_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.menuFocus.emit($event)); })("blur", function MenubarSub_Template_ul_blur_0_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.menuBlur.emit($event)); })("keydown", function MenubarSub_Template_ul_keydown_0_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.menuKeydown.emit($event)); });
468
- i0.ɵɵtemplate(2, MenubarSub_ng_template_2_Template, 2, 2, "ng-template", 5);
469
- i0.ɵɵelementEnd();
470
- } if (rf & 2) {
471
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(9, _c1, !ctx.root, ctx.root))("tabindex", 0)("ngStyle", ctx.inlineStyles);
472
- i0.ɵɵattribute("data-pc-section", "menu")("aria-label", ctx.ariaLabel)("aria-labelledBy", ctx.ariaLabelledBy)("id", ctx.root ? ctx.menuId : null)("aria-activedescendant", ctx.focusedItemId);
473
- i0.ɵɵadvance(2);
474
- i0.ɵɵproperty("ngForOf", ctx.items);
475
- } }, dependencies: [MenubarSub, CommonModule, i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, i1.NgStyle, RouterModule, i2.RouterLink, i2.RouterLinkActive, Ripple, TooltipModule, i3.Tooltip, AngleDownIcon, AngleRightIcon, BadgeModule, i4.Badge, SharedModule], encapsulation: 2 });
476
- }
477
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MenubarSub, [{
478
- type: Component,
479
- args: [{
480
- selector: 'p-menubarSub, p-menubarsub',
481
- standalone: true,
482
- imports: [CommonModule, RouterModule, Ripple, TooltipModule, BarsIcon, AngleDownIcon, AngleRightIcon, BadgeModule, SharedModule],
483
- template: `
484
- <ul
485
- #menubar
486
- [ngClass]="{ 'p-menubar-submenu': !root, 'p-menubar-root-list': root }"
487
- [attr.data-pc-section]="'menu'"
488
- role="menubar"
489
- (focus)="menuFocus.emit($event)"
490
- (blur)="menuBlur.emit($event)"
491
- [tabindex]="0"
492
- [attr.aria-label]="ariaLabel"
493
- [attr.aria-labelledBy]="ariaLabelledBy"
494
- (keydown)="menuKeydown.emit($event)"
495
- [attr.id]="root ? menuId : null"
496
- [attr.aria-activedescendant]="focusedItemId"
497
- [ngStyle]="inlineStyles"
498
- >
499
- <ng-template ngFor let-processedItem [ngForOf]="items" let-index="index">
500
- <li
501
- *ngIf="isItemVisible(processedItem) && getItemProp(processedItem, 'separator')"
502
- [attr.id]="getItemId(processedItem)"
503
- [style]="getItemProp(processedItem, 'style')"
504
- [ngClass]="getSeparatorItemClass(processedItem)"
505
- role="separator"
506
- [attr.data-pc-section]="'separator'"
507
- ></li>
508
- <li
509
- #listItem
510
- *ngIf="isItemVisible(processedItem) && !getItemProp(processedItem, 'separator')"
511
- role="menuitem"
512
- [attr.id]="getItemId(processedItem)"
513
- [attr.data-pc-section]="'menuitem'"
514
- [attr.data-p-highlight]="isItemActive(processedItem)"
515
- [attr.data-p-focused]="isItemFocused(processedItem)"
516
- [attr.data-p-disabled]="isItemDisabled(processedItem)"
517
- [attr.aria-label]="getItemLabel(processedItem)"
518
- [attr.aria-disabled]="isItemDisabled(processedItem) || undefined"
519
- [attr.aria-haspopup]="isItemGroup(processedItem) && !getItemProp(processedItem, 'to') ? 'menu' : undefined"
520
- [attr.aria-expanded]="isItemGroup(processedItem) ? isItemActive(processedItem) : undefined"
521
- [attr.aria-level]="level + 1"
522
- [attr.aria-setsize]="getAriaSetSize()"
523
- [attr.aria-posinset]="getAriaPosInset(index)"
524
- [ngStyle]="getItemProp(processedItem, 'style')"
525
- [ngClass]="getItemClass(processedItem)"
526
- [class]="getItemProp(processedItem, 'styleClass')"
527
- pTooltip
528
- [tooltipOptions]="getItemProp(processedItem, 'tooltipOptions')"
529
- >
530
- <div class="p-menubar-item-content" [attr.data-pc-section]="'content'" (click)="onItemClick($event, processedItem)" (mouseenter)="onItemMouseEnter({ $event, processedItem })">
531
- <ng-container *ngIf="!itemTemplate">
532
- <a
533
- *ngIf="!getItemProp(processedItem, 'routerLink')"
534
- [attr.href]="getItemProp(processedItem, 'url')"
535
- [attr.data-automationid]="getItemProp(processedItem, 'automationId')"
536
- [attr.data-pc-section]="'action'"
537
- [target]="getItemProp(processedItem, 'target')"
538
- [ngClass]="{ 'p-menubar-item-link': true, 'p-disabled': getItemProp(processedItem, 'disabled') }"
539
- [attr.tabindex]="-1"
540
- pRipple
541
- >
542
- <span
543
- *ngIf="getItemProp(processedItem, 'icon')"
544
- class="p-menubar-item-icon"
545
- [ngClass]="getItemProp(processedItem, 'icon')"
546
- [ngStyle]="getItemProp(processedItem, 'iconStyle')"
547
- [attr.data-pc-section]="'icon'"
548
- [attr.tabindex]="-1"
549
- >
550
- </span>
551
- <span *ngIf="getItemProp(processedItem, 'escape'); else htmlLabel" class="p-menubar-item-label" [attr.data-pc-section]="'label'" [id]="getItemLabelId(processedItem)">
552
- {{ getItemLabel(processedItem) }}
553
- </span>
554
- <ng-template #htmlLabel>
555
- <span class="p-menubar-item-label" [innerHTML]="getItemLabel(processedItem)" [attr.data-pc-section]="'label'" [id]="getItemLabelId(processedItem)"></span>
556
- </ng-template>
557
- <p-badge *ngIf="getItemProp(processedItem, 'badge')" [styleClass]="getItemProp(processedItem, 'badgeStyleClass')" [value]="getItemProp(processedItem, 'badge')" />
558
-
559
- <ng-container *ngIf="isItemGroup(processedItem)">
560
- <ng-container *ngIf="!submenuiconTemplate">
561
- <AngleDownIcon class="p-menubar-submenu-icon" *ngIf="root" [attr.data-pc-section]="'submenuicon'" />
562
- <AngleRightIcon class="p-menubar-submenu-icon" *ngIf="!root" [attr.data-pc-section]="'submenuicon'" />
563
- </ng-container>
564
- <ng-template *ngTemplateOutlet="submenuiconTemplate" [attr.data-pc-section]="'submenuicon'"></ng-template>
565
- </ng-container>
566
- </a>
567
- <a
568
- *ngIf="getItemProp(processedItem, 'routerLink')"
569
- [routerLink]="getItemProp(processedItem, 'routerLink')"
570
- [attr.data-automationid]="getItemProp(processedItem, 'automationId')"
571
- [attr.tabindex]="-1"
572
- [attr.data-pc-section]="'action'"
573
- [queryParams]="getItemProp(processedItem, 'queryParams')"
574
- [routerLinkActive]="'p-menubar-item-link-active'"
575
- [routerLinkActiveOptions]="getItemProp(processedItem, 'routerLinkActiveOptions') || { exact: false }"
576
- [target]="getItemProp(processedItem, 'target')"
577
- [ngClass]="{ 'p-menubar-item-link': true, 'p-disabled': getItemProp(processedItem, 'disabled') }"
578
- [fragment]="getItemProp(processedItem, 'fragment')"
579
- [queryParamsHandling]="getItemProp(processedItem, 'queryParamsHandling')"
580
- [preserveFragment]="getItemProp(processedItem, 'preserveFragment')"
581
- [skipLocationChange]="getItemProp(processedItem, 'skipLocationChange')"
582
- [replaceUrl]="getItemProp(processedItem, 'replaceUrl')"
583
- [state]="getItemProp(processedItem, 'state')"
584
- pRipple
585
- >
586
- <span
587
- class="p-menubar-item-icon"
588
- *ngIf="getItemProp(processedItem, 'icon')"
589
- [ngClass]="getItemProp(processedItem, 'icon')"
590
- [ngStyle]="getItemProp(processedItem, 'iconStyle')"
591
- [attr.data-pc-section]="'icon'"
592
- [attr.tabindex]="-1"
593
- ></span>
594
- <span class="p-menubar-item-label" *ngIf="getItemProp(processedItem, 'escape'); else htmlRouteLabel">{{ getItemLabel(processedItem) }}</span>
595
- <ng-template #htmlRouteLabel><span class="p-menubar-item-label" [innerHTML]="getItemLabel(processedItem)" [attr.data-pc-section]="'label'"></span></ng-template>
596
- <p-badge *ngIf="getItemProp(processedItem, 'badge')" [styleClass]="getItemProp(processedItem, 'badgeStyleClass')" [value]="getItemProp(processedItem, 'badge')" />
597
- <ng-container *ngIf="isItemGroup(processedItem)">
598
- <ng-container *ngIf="!submenuiconTemplate">
599
- <AngleDownIcon class="p-menubar-submenu-icon" [attr.data-pc-section]="'submenuicon'" *ngIf="root" />
600
- <AngleRightIcon class="p-menubar-submenu-icon" [attr.data-pc-section]="'submenuicon'" *ngIf="!root" />
601
- </ng-container>
602
- <ng-template *ngTemplateOutlet="submenuiconTemplate" [attr.data-pc-section]="'submenuicon'"></ng-template>
603
- </ng-container>
604
- </a>
605
- </ng-container>
606
- <ng-container *ngIf="itemTemplate">
607
- <ng-template *ngTemplateOutlet="itemTemplate; context: { $implicit: processedItem.item, root: root }"></ng-template>
608
- </ng-container>
609
- </div>
610
- <p-menubarSub
611
- *ngIf="isItemVisible(processedItem) && isItemGroup(processedItem)"
612
- [itemTemplate]="itemTemplate"
613
- [items]="processedItem.items"
614
- [mobileActive]="mobileActive"
615
- [autoDisplay]="autoDisplay"
616
- [menuId]="menuId"
617
- [activeItemPath]="activeItemPath"
618
- [focusedItemId]="focusedItemId"
619
- [level]="level + 1"
620
- [ariaLabelledBy]="getItemLabelId(processedItem)"
621
- (itemClick)="itemClick.emit($event)"
622
- (itemMouseEnter)="onItemMouseEnter($event)"
623
- [inlineStyles]="{ display: isItemActive(processedItem) ? 'flex' : 'none' }"
624
- >
625
- </p-menubarSub>
626
- </li>
627
- </ng-template>
628
- </ul>
629
- `,
630
- encapsulation: ViewEncapsulation.None
631
- }]
632
- }], null, { items: [{
633
- type: Input
634
- }], itemTemplate: [{
635
- type: Input
636
- }], root: [{
637
- type: Input,
638
- args: [{ transform: booleanAttribute }]
639
- }], autoZIndex: [{
640
- type: Input,
641
- args: [{ transform: booleanAttribute }]
642
- }], baseZIndex: [{
643
- type: Input,
644
- args: [{ transform: numberAttribute }]
645
- }], mobileActive: [{
646
- type: Input,
647
- args: [{ transform: booleanAttribute }]
648
- }], autoDisplay: [{
649
- type: Input,
650
- args: [{ transform: booleanAttribute }]
651
- }], menuId: [{
652
- type: Input
653
- }], ariaLabel: [{
654
- type: Input
655
- }], ariaLabelledBy: [{
656
- type: Input
657
- }], level: [{
658
- type: Input,
659
- args: [{ transform: numberAttribute }]
660
- }], focusedItemId: [{
661
- type: Input
662
- }], activeItemPath: [{
663
- type: Input
664
- }], inlineStyles: [{
665
- type: Input
666
- }], submenuiconTemplate: [{
667
- type: Input
668
- }], itemClick: [{
669
- type: Output
670
- }], itemMouseEnter: [{
671
- type: Output
672
- }], menuFocus: [{
673
- type: Output
674
- }], menuBlur: [{
675
- type: Output
676
- }], menuKeydown: [{
677
- type: Output
678
- }], menubarViewChild: [{
679
- type: ViewChild,
680
- args: ['menubar', { static: true }]
681
- }] }); })();
682
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MenubarSub, { className: "MenubarSub" }); })();
683
- /**
684
- * Menubar is a horizontal menu component.
685
- * @group Components
686
- */
687
- export class Menubar extends BaseComponent {
688
- document;
689
- platformId;
690
- el;
691
- renderer;
692
- cd;
693
- menubarService;
694
- /**
695
- * An array of menuitems.
696
- * @group Props
697
- */
698
- set model(value) {
699
- this._model = value;
700
- this._processedItems = this.createProcessedItems(this._model || []);
701
- }
702
- get model() {
703
- return this._model;
704
- }
705
- /**
706
- * Inline style of the element.
707
- * @group Props
708
- */
709
- style;
710
- /**
711
- * Class of the element.
712
- * @group Props
713
- */
714
- styleClass;
715
- /**
716
- * Whether to automatically manage layering.
717
- * @group Props
718
- */
719
- autoZIndex = true;
720
- /**
721
- * Base zIndex value to use in layering.
722
- * @group Props
723
- */
724
- baseZIndex = 0;
725
- /**
726
- * Whether to show a root submenu on mouse over.
727
- * @defaultValue true
728
- * @group Props
729
- */
730
- autoDisplay = false;
731
- /**
732
- * Whether to hide a root submenu when mouse leaves.
733
- * @group Props
734
- */
735
- autoHide;
736
- /**
737
- * The breakpoint to define the maximum width boundary.
738
- * @group Props
739
- */
740
- breakpoint = '960px';
741
- /**
742
- * Delay to hide the root submenu in milliseconds when mouse leaves.
743
- * @group Props
744
- */
745
- autoHideDelay = 100;
746
- /**
747
- * Current id state as a string.
748
- * @group Props
749
- */
750
- id;
751
- /**
752
- * Defines a string value that labels an interactive element.
753
- * @group Props
754
- */
755
- ariaLabel;
756
- /**
757
- * Identifier of the underlying input element.
758
- * @group Props
759
- */
760
- ariaLabelledBy;
761
- /**
762
- * Callback to execute when button is focused.
763
- * @param {FocusEvent} event - Focus event.
764
- * @group Emits
765
- */
766
- onFocus = new EventEmitter();
767
- /**
768
- * Callback to execute when button loses focus.
769
- * @param {FocusEvent} event - Focus event.
770
- * @group Emits
771
- */
772
- onBlur = new EventEmitter();
773
- menubutton;
774
- rootmenu;
775
- mobileActive;
776
- matchMediaListener;
777
- query;
778
- queryMatches;
779
- outsideClickListener;
780
- resizeListener;
781
- mouseLeaveSubscriber;
782
- dirty = false;
783
- focused = false;
784
- activeItemPath = signal([]);
785
- number = signal(0);
786
- focusedItemInfo = signal({ index: -1, level: 0, parentKey: '', item: null });
787
- searchValue = '';
788
- searchTimeout;
789
- _processedItems;
790
- _componentStyle = inject(MenuBarStyle);
791
- _model;
792
- get visibleItems() {
793
- const processedItem = this.activeItemPath().find((p) => p.key === this.focusedItemInfo().parentKey);
794
- return processedItem ? processedItem.items : this.processedItems;
795
- }
796
- get processedItems() {
797
- if (!this._processedItems || !this._processedItems.length) {
798
- this._processedItems = this.createProcessedItems(this.model || []);
799
- }
800
- return this._processedItems;
801
- }
802
- get focusedItemId() {
803
- const focusedItem = this.focusedItemInfo();
804
- return focusedItem.item && focusedItem.item?.id ? focusedItem.item.id : focusedItem.index !== -1 ? `${this.id}${isNotEmpty(focusedItem.parentKey) ? '_' + focusedItem.parentKey : ''}_${focusedItem.index}` : null;
805
- }
806
- constructor(document, platformId, el, renderer, cd, menubarService) {
807
- super();
808
- this.document = document;
809
- this.platformId = platformId;
810
- this.el = el;
811
- this.renderer = renderer;
812
- this.cd = cd;
813
- this.menubarService = menubarService;
814
- effect(() => {
815
- const path = this.activeItemPath();
816
- if (isNotEmpty(path)) {
817
- this.bindOutsideClickListener();
818
- this.bindResizeListener();
819
- }
820
- else {
821
- this.unbindOutsideClickListener();
822
- this.unbindResizeListener();
823
- }
824
- });
825
- }
826
- ngOnInit() {
827
- super.ngOnInit();
828
- this.bindMatchMediaListener();
829
- this.menubarService.autoHide = this.autoHide;
830
- this.menubarService.autoHideDelay = this.autoHideDelay;
831
- this.mouseLeaveSubscriber = this.menubarService.mouseLeft$.subscribe(() => this.unbindOutsideClickListener());
832
- this.id = this.id || uuid('pn_id_');
833
- }
834
- /**
835
- * Defines template option for start.
836
- * @group Templates
837
- */
838
- startTemplate;
839
- /**
840
- * Defines template option for end.
841
- * @group Templates
842
- */
843
- endTemplate;
844
- /**
845
- * Defines template option for item.
846
- * @group Templates
847
- */
848
- itemTemplate;
849
- /**
850
- * Defines template option for item.
851
- * @group Templates
852
- */
853
- menuiconTemplate;
854
- /**
855
- * Defines template option for submenu icon.
856
- * @group Templates
857
- */
858
- submenuiconTemplate;
859
- createProcessedItems(items, level = 0, parent = {}, parentKey = '') {
860
- const processedItems = [];
861
- items &&
862
- items.forEach((item, index) => {
863
- const key = (parentKey !== '' ? parentKey + '_' : '') + index;
864
- const newItem = {
865
- item,
866
- index,
867
- level,
868
- key,
869
- parent,
870
- parentKey
871
- };
872
- newItem['items'] = this.createProcessedItems(item.items, level + 1, newItem, key);
873
- processedItems.push(newItem);
874
- });
875
- return processedItems;
876
- }
877
- bindMatchMediaListener() {
878
- if (isPlatformBrowser(this.platformId)) {
879
- if (!this.matchMediaListener) {
880
- const query = window.matchMedia(`(max-width: ${this.breakpoint})`);
881
- this.query = query;
882
- this.queryMatches = query.matches;
883
- this.matchMediaListener = () => {
884
- this.queryMatches = query.matches;
885
- this.mobileActive = false;
886
- this.cd.markForCheck();
887
- };
888
- query.addEventListener('change', this.matchMediaListener);
889
- }
890
- }
891
- }
892
- unbindMatchMediaListener() {
893
- if (this.matchMediaListener) {
894
- this.query.removeEventListener('change', this.matchMediaListener);
895
- this.matchMediaListener = null;
896
- }
897
- }
898
- getItemProp(item, name) {
899
- return item ? resolve(item[name]) : undefined;
900
- }
901
- menuButtonClick(event) {
902
- this.toggle(event);
903
- }
904
- menuButtonKeydown(event) {
905
- (event.code === 'Enter' || event.code === 'Space') && this.menuButtonClick(event);
906
- }
907
- onItemClick(event) {
908
- const { originalEvent, processedItem } = event;
909
- const grouped = this.isProcessedItemGroup(processedItem);
910
- const root = isEmpty(processedItem.parent);
911
- const selected = this.isSelected(processedItem);
912
- if (selected) {
913
- const { index, key, level, parentKey, item } = processedItem;
914
- this.activeItemPath.set(this.activeItemPath().filter((p) => key !== p.key && key.startsWith(p.key)));
915
- this.focusedItemInfo.set({ index, level, parentKey, item });
916
- this.dirty = !root;
917
- focus(this.rootmenu.menubarViewChild.nativeElement);
918
- }
919
- else {
920
- if (grouped) {
921
- this.onItemChange(event);
922
- }
923
- else {
924
- const rootProcessedItem = root ? processedItem : this.activeItemPath().find((p) => p.parentKey === '');
925
- this.hide(originalEvent);
926
- this.changeFocusedItemIndex(originalEvent, rootProcessedItem ? rootProcessedItem.index : -1);
927
- this.mobileActive = false;
928
- focus(this.rootmenu.menubarViewChild.nativeElement);
929
- }
930
- }
931
- }
932
- onItemMouseEnter(event) {
933
- if (!isTouchDevice()) {
934
- if (!this.mobileActive) {
935
- this.onItemChange(event);
936
- }
937
- }
938
- }
939
- changeFocusedItemIndex(event, index) {
940
- const processedItem = this.findVisibleItem(index);
941
- if (this.focusedItemInfo().index !== index) {
942
- const focusedItemInfo = this.focusedItemInfo();
943
- this.focusedItemInfo.set({ ...focusedItemInfo, item: processedItem.item, index });
944
- this.scrollInView();
945
- }
946
- }
947
- scrollInView(index = -1) {
948
- const id = index !== -1 ? `${this.id}_${index}` : this.focusedItemId;
949
- const element = findSingle(this.rootmenu.el.nativeElement, `li[id="${id}"]`);
950
- if (element) {
951
- element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'nearest' });
952
- }
953
- }
954
- onItemChange(event) {
955
- const { processedItem, isFocus } = event;
956
- if (isEmpty(processedItem))
957
- return;
958
- const { index, key, level, parentKey, items, item } = processedItem;
959
- const grouped = isNotEmpty(items);
960
- const activeItemPath = this.activeItemPath().filter((p) => p.parentKey !== parentKey && p.parentKey !== key);
961
- grouped && activeItemPath.push(processedItem);
962
- this.focusedItemInfo.set({ index, level, parentKey, item });
963
- this.activeItemPath.set(activeItemPath);
964
- grouped && (this.dirty = true);
965
- isFocus && focus(this.rootmenu.menubarViewChild.nativeElement);
966
- }
967
- toggle(event) {
968
- if (this.mobileActive) {
969
- this.mobileActive = false;
970
- ZIndexUtils.clear(this.rootmenu.el.nativeElement);
971
- this.hide();
972
- }
973
- else {
974
- this.mobileActive = true;
975
- ZIndexUtils.set('menu', this.rootmenu.el.nativeElement, this.config.zIndex.menu);
976
- setTimeout(() => {
977
- this.show();
978
- }, 0);
979
- }
980
- this.bindOutsideClickListener();
981
- event.preventDefault();
982
- }
983
- hide(event, isFocus) {
984
- if (this.mobileActive) {
985
- setTimeout(() => {
986
- focus(this.menubutton.nativeElement);
987
- }, 0);
988
- }
989
- this.activeItemPath.set([]);
990
- this.focusedItemInfo.set({ index: -1, level: 0, parentKey: '', item: null });
991
- isFocus && focus(this.rootmenu?.menubarViewChild.nativeElement);
992
- this.dirty = false;
993
- }
994
- show() {
995
- const processedItem = this.findVisibleItem(this.findFirstFocusedItemIndex());
996
- this.focusedItemInfo.set({ index: this.findFirstFocusedItemIndex(), level: 0, parentKey: '', item: processedItem?.item });
997
- focus(this.rootmenu?.menubarViewChild.nativeElement);
998
- }
999
- onMenuFocus(event) {
1000
- this.focused = true;
1001
- const processedItem = this.findVisibleItem(this.findFirstFocusedItemIndex());
1002
- const focusedItemInfo = this.focusedItemInfo().index !== -1 ? this.focusedItemInfo() : { index: this.findFirstFocusedItemIndex(), level: 0, parentKey: '', item: processedItem?.item };
1003
- this.focusedItemInfo.set(focusedItemInfo);
1004
- this.onFocus.emit(event);
1005
- }
1006
- onMenuBlur(event) {
1007
- this.focused = false;
1008
- this.focusedItemInfo.set({ index: -1, level: 0, parentKey: '', item: null });
1009
- this.searchValue = '';
1010
- this.dirty = false;
1011
- this.onBlur.emit(event);
1012
- }
1013
- onKeyDown(event) {
1014
- const metaKey = event.metaKey || event.ctrlKey;
1015
- switch (event.code) {
1016
- case 'ArrowDown':
1017
- this.onArrowDownKey(event);
1018
- break;
1019
- case 'ArrowUp':
1020
- this.onArrowUpKey(event);
1021
- break;
1022
- case 'ArrowLeft':
1023
- this.onArrowLeftKey(event);
1024
- break;
1025
- case 'ArrowRight':
1026
- this.onArrowRightKey(event);
1027
- break;
1028
- case 'Home':
1029
- this.onHomeKey(event);
1030
- break;
1031
- case 'End':
1032
- this.onEndKey(event);
1033
- break;
1034
- case 'Space':
1035
- this.onSpaceKey(event);
1036
- break;
1037
- case 'Enter':
1038
- this.onEnterKey(event);
1039
- break;
1040
- case 'Escape':
1041
- this.onEscapeKey(event);
1042
- break;
1043
- case 'Tab':
1044
- this.onTabKey(event);
1045
- break;
1046
- case 'PageDown':
1047
- case 'PageUp':
1048
- case 'Backspace':
1049
- case 'ShiftLeft':
1050
- case 'ShiftRight':
1051
- //NOOP
1052
- break;
1053
- default:
1054
- if (!metaKey && isPrintableCharacter(event.key)) {
1055
- this.searchItems(event, event.key);
1056
- }
1057
- break;
1058
- }
1059
- }
1060
- findVisibleItem(index) {
1061
- return isNotEmpty(this.visibleItems) ? this.visibleItems[index] : null;
1062
- }
1063
- findFirstFocusedItemIndex() {
1064
- const selectedIndex = this.findSelectedItemIndex();
1065
- return selectedIndex < 0 ? this.findFirstItemIndex() : selectedIndex;
1066
- }
1067
- findFirstItemIndex() {
1068
- return this.visibleItems.findIndex((processedItem) => this.isValidItem(processedItem));
1069
- }
1070
- findSelectedItemIndex() {
1071
- return this.visibleItems.findIndex((processedItem) => this.isValidSelectedItem(processedItem));
1072
- }
1073
- isProcessedItemGroup(processedItem) {
1074
- return processedItem && isNotEmpty(processedItem.items);
1075
- }
1076
- isSelected(processedItem) {
1077
- return this.activeItemPath().some((p) => p.key === processedItem.key);
1078
- }
1079
- isValidSelectedItem(processedItem) {
1080
- return this.isValidItem(processedItem) && this.isSelected(processedItem);
1081
- }
1082
- isValidItem(processedItem) {
1083
- return !!processedItem && !this.isItemDisabled(processedItem.item) && !this.isItemSeparator(processedItem.item);
1084
- }
1085
- isItemDisabled(item) {
1086
- return this.getItemProp(item, 'disabled');
1087
- }
1088
- isItemSeparator(item) {
1089
- return this.getItemProp(item, 'separator');
1090
- }
1091
- isItemMatched(processedItem) {
1092
- return this.isValidItem(processedItem) && this.getProccessedItemLabel(processedItem).toLocaleLowerCase().startsWith(this.searchValue.toLocaleLowerCase());
1093
- }
1094
- isProccessedItemGroup(processedItem) {
1095
- return processedItem && isNotEmpty(processedItem.items);
1096
- }
1097
- searchItems(event, char) {
1098
- this.searchValue = (this.searchValue || '') + char;
1099
- let itemIndex = -1;
1100
- let matched = false;
1101
- if (this.focusedItemInfo().index !== -1) {
1102
- itemIndex = this.visibleItems.slice(this.focusedItemInfo().index).findIndex((processedItem) => this.isItemMatched(processedItem));
1103
- itemIndex = itemIndex === -1 ? this.visibleItems.slice(0, this.focusedItemInfo().index).findIndex((processedItem) => this.isItemMatched(processedItem)) : itemIndex + this.focusedItemInfo().index;
1104
- }
1105
- else {
1106
- itemIndex = this.visibleItems.findIndex((processedItem) => this.isItemMatched(processedItem));
1107
- }
1108
- if (itemIndex !== -1) {
1109
- matched = true;
1110
- }
1111
- if (itemIndex === -1 && this.focusedItemInfo().index === -1) {
1112
- itemIndex = this.findFirstFocusedItemIndex();
1113
- }
1114
- if (itemIndex !== -1) {
1115
- this.changeFocusedItemIndex(event, itemIndex);
1116
- }
1117
- if (this.searchTimeout) {
1118
- clearTimeout(this.searchTimeout);
1119
- }
1120
- this.searchTimeout = setTimeout(() => {
1121
- this.searchValue = '';
1122
- this.searchTimeout = null;
1123
- }, 500);
1124
- return matched;
1125
- }
1126
- getProccessedItemLabel(processedItem) {
1127
- return processedItem ? this.getItemLabel(processedItem.item) : undefined;
1128
- }
1129
- getItemLabel(item) {
1130
- return this.getItemProp(item, 'label');
1131
- }
1132
- onArrowDownKey(event) {
1133
- const processedItem = this.visibleItems[this.focusedItemInfo().index];
1134
- const root = processedItem ? isEmpty(processedItem.parent) : null;
1135
- if (root) {
1136
- const grouped = this.isProccessedItemGroup(processedItem);
1137
- if (grouped) {
1138
- this.onItemChange({ originalEvent: event, processedItem });
1139
- this.focusedItemInfo.set({ index: -1, parentKey: processedItem.key, item: processedItem.item });
1140
- this.onArrowRightKey(event);
1141
- }
1142
- }
1143
- else {
1144
- const itemIndex = this.focusedItemInfo().index !== -1 ? this.findNextItemIndex(this.focusedItemInfo().index) : this.findFirstFocusedItemIndex();
1145
- this.changeFocusedItemIndex(event, itemIndex);
1146
- event.preventDefault();
1147
- }
1148
- }
1149
- onArrowRightKey(event) {
1150
- const processedItem = this.visibleItems[this.focusedItemInfo().index];
1151
- const parentItem = processedItem ? this.activeItemPath().find((p) => p.key === processedItem.parentKey) : null;
1152
- if (parentItem) {
1153
- const grouped = this.isProccessedItemGroup(processedItem);
1154
- if (grouped) {
1155
- this.onItemChange({ originalEvent: event, processedItem });
1156
- this.focusedItemInfo.set({ index: -1, parentKey: processedItem.key, item: processedItem.item });
1157
- this.onArrowDownKey(event);
1158
- }
1159
- }
1160
- else {
1161
- const itemIndex = this.focusedItemInfo().index !== -1 ? this.findNextItemIndex(this.focusedItemInfo().index) : this.findFirstFocusedItemIndex();
1162
- this.changeFocusedItemIndex(event, itemIndex);
1163
- event.preventDefault();
1164
- }
1165
- }
1166
- onArrowUpKey(event) {
1167
- const processedItem = this.visibleItems[this.focusedItemInfo().index];
1168
- const root = isEmpty(processedItem.parent);
1169
- if (root) {
1170
- const grouped = this.isProccessedItemGroup(processedItem);
1171
- if (grouped) {
1172
- this.onItemChange({ originalEvent: event, processedItem });
1173
- this.focusedItemInfo.set({ index: -1, parentKey: processedItem.key, item: processedItem.item });
1174
- const itemIndex = this.findLastItemIndex();
1175
- this.changeFocusedItemIndex(event, itemIndex);
1176
- }
1177
- }
1178
- else {
1179
- const parentItem = this.activeItemPath().find((p) => p.key === processedItem.parentKey);
1180
- if (this.focusedItemInfo().index === 0) {
1181
- this.focusedItemInfo.set({ index: -1, parentKey: parentItem ? parentItem.parentKey : '', item: processedItem.item });
1182
- this.searchValue = '';
1183
- this.onArrowLeftKey(event);
1184
- const activeItemPath = this.activeItemPath().filter((p) => p.parentKey !== this.focusedItemInfo().parentKey);
1185
- this.activeItemPath.set(activeItemPath);
1186
- }
1187
- else {
1188
- const itemIndex = this.focusedItemInfo().index !== -1 ? this.findPrevItemIndex(this.focusedItemInfo().index) : this.findLastFocusedItemIndex();
1189
- this.changeFocusedItemIndex(event, itemIndex);
1190
- }
1191
- }
1192
- event.preventDefault();
1193
- }
1194
- onArrowLeftKey(event) {
1195
- const processedItem = this.visibleItems[this.focusedItemInfo().index];
1196
- const parentItem = processedItem ? this.activeItemPath().find((p) => p.key === processedItem.parentKey) : null;
1197
- if (parentItem) {
1198
- this.onItemChange({ originalEvent: event, processedItem: parentItem });
1199
- const activeItemPath = this.activeItemPath().filter((p) => p.parentKey !== this.focusedItemInfo().parentKey);
1200
- this.activeItemPath.set(activeItemPath);
1201
- event.preventDefault();
1202
- }
1203
- else {
1204
- const itemIndex = this.focusedItemInfo().index !== -1 ? this.findPrevItemIndex(this.focusedItemInfo().index) : this.findLastFocusedItemIndex();
1205
- this.changeFocusedItemIndex(event, itemIndex);
1206
- event.preventDefault();
1207
- }
1208
- }
1209
- onHomeKey(event) {
1210
- this.changeFocusedItemIndex(event, this.findFirstItemIndex());
1211
- event.preventDefault();
1212
- }
1213
- onEndKey(event) {
1214
- this.changeFocusedItemIndex(event, this.findLastItemIndex());
1215
- event.preventDefault();
1216
- }
1217
- onSpaceKey(event) {
1218
- this.onEnterKey(event);
1219
- }
1220
- onEscapeKey(event) {
1221
- this.hide(event, true);
1222
- this.focusedItemInfo().index = this.findFirstFocusedItemIndex();
1223
- event.preventDefault();
1224
- }
1225
- onTabKey(event) {
1226
- if (this.focusedItemInfo().index !== -1) {
1227
- const processedItem = this.visibleItems[this.focusedItemInfo().index];
1228
- const grouped = this.isProccessedItemGroup(processedItem);
1229
- !grouped && this.onItemChange({ originalEvent: event, processedItem });
1230
- }
1231
- this.hide();
1232
- }
1233
- onEnterKey(event) {
1234
- if (this.focusedItemInfo().index !== -1) {
1235
- const element = findSingle(this.rootmenu.el.nativeElement, `li[id="${`${this.focusedItemId}`}"]`);
1236
- const anchorElement = element && findSingle(element, 'a[data-pc-section="action"]');
1237
- anchorElement ? anchorElement.click() : element && element.click();
1238
- }
1239
- event.preventDefault();
1240
- }
1241
- findLastFocusedItemIndex() {
1242
- const selectedIndex = this.findSelectedItemIndex();
1243
- return selectedIndex < 0 ? this.findLastItemIndex() : selectedIndex;
1244
- }
1245
- findLastItemIndex() {
1246
- return findLastIndex(this.visibleItems, (processedItem) => this.isValidItem(processedItem));
1247
- }
1248
- findPrevItemIndex(index) {
1249
- const matchedItemIndex = index > 0 ? findLastIndex(this.visibleItems.slice(0, index), (processedItem) => this.isValidItem(processedItem)) : -1;
1250
- return matchedItemIndex > -1 ? matchedItemIndex : index;
1251
- }
1252
- findNextItemIndex(index) {
1253
- const matchedItemIndex = index < this.visibleItems.length - 1 ? this.visibleItems.slice(index + 1).findIndex((processedItem) => this.isValidItem(processedItem)) : -1;
1254
- return matchedItemIndex > -1 ? matchedItemIndex + index + 1 : index;
1255
- }
1256
- bindResizeListener() {
1257
- if (isPlatformBrowser(this.platformId)) {
1258
- if (!this.resizeListener) {
1259
- this.resizeListener = this.renderer.listen(this.document.defaultView, 'resize', (event) => {
1260
- if (!isTouchDevice()) {
1261
- this.hide(event, true);
1262
- }
1263
- this.mobileActive = false;
1264
- });
1265
- }
1266
- }
1267
- }
1268
- bindOutsideClickListener() {
1269
- if (isPlatformBrowser(this.platformId)) {
1270
- if (!this.outsideClickListener) {
1271
- this.outsideClickListener = this.renderer.listen(this.document, 'click', (event) => {
1272
- const isOutsideContainer = this.rootmenu.el.nativeElement !== event.target && !this.rootmenu.el.nativeElement.contains(event.target);
1273
- const isOutsideMenuButton = this.mobileActive && this.menubutton.nativeElement !== event.target && !this.menubutton.nativeElement.contains(event.target);
1274
- if (isOutsideContainer) {
1275
- isOutsideMenuButton ? (this.mobileActive = false) : this.hide();
1276
- }
1277
- });
1278
- }
1279
- }
1280
- }
1281
- unbindOutsideClickListener() {
1282
- if (this.outsideClickListener) {
1283
- this.outsideClickListener();
1284
- this.outsideClickListener = null;
1285
- }
1286
- }
1287
- unbindResizeListener() {
1288
- if (this.resizeListener) {
1289
- this.resizeListener();
1290
- this.resizeListener = null;
1291
- }
1292
- }
1293
- ngOnDestroy() {
1294
- this.mouseLeaveSubscriber?.unsubscribe();
1295
- this.unbindOutsideClickListener();
1296
- this.unbindResizeListener();
1297
- this.unbindMatchMediaListener();
1298
- super.ngOnDestroy();
1299
- }
1300
- static ɵfac = function Menubar_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || Menubar)(i0.ɵɵdirectiveInject(DOCUMENT), i0.ɵɵdirectiveInject(PLATFORM_ID), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(MenubarService)); };
1301
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Menubar, selectors: [["p-menubar"]], contentQueries: function Menubar_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
1302
- i0.ɵɵcontentQuery(dirIndex, _c6, 5);
1303
- i0.ɵɵcontentQuery(dirIndex, _c7, 5);
1304
- i0.ɵɵcontentQuery(dirIndex, _c8, 5);
1305
- i0.ɵɵcontentQuery(dirIndex, _c9, 5);
1306
- i0.ɵɵcontentQuery(dirIndex, _c10, 5);
1307
- } if (rf & 2) {
1308
- let _t;
1309
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.startTemplate = _t.first);
1310
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.endTemplate = _t.first);
1311
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.itemTemplate = _t.first);
1312
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.menuiconTemplate = _t.first);
1313
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.submenuiconTemplate = _t.first);
1314
- } }, viewQuery: function Menubar_Query(rf, ctx) { if (rf & 1) {
1315
- i0.ɵɵviewQuery(_c11, 5);
1316
- i0.ɵɵviewQuery(_c12, 5);
1317
- } if (rf & 2) {
1318
- let _t;
1319
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.menubutton = _t.first);
1320
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.rootmenu = _t.first);
1321
- } }, inputs: { model: "model", style: "style", styleClass: "styleClass", autoZIndex: [2, "autoZIndex", "autoZIndex", booleanAttribute], baseZIndex: [2, "baseZIndex", "baseZIndex", numberAttribute], autoDisplay: [2, "autoDisplay", "autoDisplay", booleanAttribute], autoHide: [2, "autoHide", "autoHide", booleanAttribute], breakpoint: "breakpoint", autoHideDelay: [2, "autoHideDelay", "autoHideDelay", numberAttribute], id: "id", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy" }, outputs: { onFocus: "onFocus", onBlur: "onBlur" }, standalone: true, features: [i0.ɵɵProvidersFeature([MenubarService, MenuBarStyle]), i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], ngContentSelectors: _c13, decls: 8, vars: 26, consts: [["rootmenu", ""], ["legacy", ""], ["menubutton", ""], [3, "ngClass", "ngStyle"], ["class", "p-menubar-start", 4, "ngIf"], ["tabindex", "0", "role", "button", "class", "p-menubar-button", 3, "click", "keydown", 4, "ngIf"], [3, "itemClick", "menuFocus", "menuBlur", "menuKeydown", "itemMouseEnter", "items", "itemTemplate", "menuId", "root", "baseZIndex", "autoZIndex", "mobileActive", "autoDisplay", "ariaLabel", "ariaLabelledBy", "focusedItemId", "submenuiconTemplate", "activeItemPath"], ["class", "p-menubar-end", 4, "ngIf", "ngIfElse"], [1, "p-menubar-start"], [4, "ngTemplateOutlet"], ["tabindex", "0", "role", "button", 1, "p-menubar-button", 3, "click", "keydown"], [4, "ngIf"], [1, "p-menubar-end"]], template: function Menubar_Template(rf, ctx) { if (rf & 1) {
1322
- const _r1 = i0.ɵɵgetCurrentView();
1323
- i0.ɵɵprojectionDef();
1324
- i0.ɵɵelementStart(0, "div", 3);
1325
- i0.ɵɵtemplate(1, Menubar_div_1_Template, 2, 1, "div", 4)(2, Menubar_a_2_Template, 4, 7, "a", 5);
1326
- i0.ɵɵelementStart(3, "p-menubarSub", 6, 0);
1327
- i0.ɵɵlistener("itemClick", function Menubar_Template_p_menubarSub_itemClick_3_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onItemClick($event)); })("menuFocus", function Menubar_Template_p_menubarSub_menuFocus_3_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onMenuFocus($event)); })("menuBlur", function Menubar_Template_p_menubarSub_menuBlur_3_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onMenuBlur($event)); })("menuKeydown", function Menubar_Template_p_menubarSub_menuKeydown_3_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onKeyDown($event)); })("itemMouseEnter", function Menubar_Template_p_menubarSub_itemMouseEnter_3_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onItemMouseEnter($event)); });
1328
- i0.ɵɵelementEnd();
1329
- i0.ɵɵtemplate(5, Menubar_div_5_Template, 2, 1, "div", 7)(6, Menubar_ng_template_6_Template, 2, 0, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
1330
- i0.ɵɵelementEnd();
1331
- } if (rf & 2) {
1332
- const legacy_r4 = i0.ɵɵreference(7);
1333
- i0.ɵɵclassMap(ctx.styleClass);
1334
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(23, _c14, ctx.queryMatches, ctx.mobileActive))("ngStyle", ctx.style);
1335
- i0.ɵɵattribute("data-pc-section", "root")("data-pc-name", "menubar");
1336
- i0.ɵɵadvance();
1337
- i0.ɵɵproperty("ngIf", ctx.startTemplate);
1338
- i0.ɵɵadvance();
1339
- i0.ɵɵproperty("ngIf", ctx.model && ctx.model.length > 0);
1340
- i0.ɵɵadvance();
1341
- i0.ɵɵproperty("items", ctx.processedItems)("itemTemplate", ctx.itemTemplate)("menuId", ctx.id)("root", true)("baseZIndex", ctx.baseZIndex)("autoZIndex", ctx.autoZIndex)("mobileActive", ctx.mobileActive)("autoDisplay", ctx.autoDisplay)("ariaLabel", ctx.ariaLabel)("ariaLabelledBy", ctx.ariaLabelledBy)("focusedItemId", ctx.focused ? ctx.focusedItemId : undefined)("submenuiconTemplate", ctx.submenuiconTemplate)("activeItemPath", ctx.activeItemPath());
1342
- i0.ɵɵadvance(2);
1343
- i0.ɵɵproperty("ngIf", ctx.endTemplate)("ngIfElse", legacy_r4);
1344
- } }, dependencies: [CommonModule, i1.NgClass, i1.NgIf, i1.NgTemplateOutlet, i1.NgStyle, RouterModule, MenubarSub, TooltipModule, BarsIcon, BadgeModule, SharedModule], encapsulation: 2, changeDetection: 0 });
1345
- }
1346
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(Menubar, [{
1347
- type: Component,
1348
- args: [{
1349
- selector: 'p-menubar',
1350
- standalone: true,
1351
- imports: [CommonModule, RouterModule, MenubarSub, Ripple, TooltipModule, BarsIcon, AngleDownIcon, AngleRightIcon, BadgeModule, SharedModule],
1352
- template: `
1353
- <div [ngClass]="{ 'p-menubar p-component': true, 'p-menubar-mobile': queryMatches, 'p-menubar-mobile-active': mobileActive }" [class]="styleClass" [ngStyle]="style" [attr.data-pc-section]="'root'" [attr.data-pc-name]="'menubar'">
1354
- <div class="p-menubar-start" *ngIf="startTemplate">
1355
- <ng-container *ngTemplateOutlet="startTemplate"></ng-container>
1356
- </div>
1357
- <a
1358
- #menubutton
1359
- tabindex="0"
1360
- role="button"
1361
- [attr.aria-haspopup]="model.length && model.length > 0 ? true : false"
1362
- [attr.aria-expanded]="mobileActive"
1363
- [attr.aria-controls]="id"
1364
- [attr.aria-label]="config.translation.aria.navigation"
1365
- [attr.data-pc-section]="'button'"
1366
- *ngIf="model && model.length > 0"
1367
- class="p-menubar-button"
1368
- (click)="menuButtonClick($event)"
1369
- (keydown)="menuButtonKeydown($event)"
1370
- >
1371
- <BarsIcon *ngIf="!menuiconTemplate" />
1372
- <ng-template *ngTemplateOutlet="menuiconTemplate"></ng-template>
1373
- </a>
1374
- <p-menubarSub
1375
- #rootmenu
1376
- [items]="processedItems"
1377
- [itemTemplate]="itemTemplate"
1378
- [menuId]="id"
1379
- [root]="true"
1380
- [baseZIndex]="baseZIndex"
1381
- [autoZIndex]="autoZIndex"
1382
- [mobileActive]="mobileActive"
1383
- [autoDisplay]="autoDisplay"
1384
- [ariaLabel]="ariaLabel"
1385
- [ariaLabelledBy]="ariaLabelledBy"
1386
- [focusedItemId]="focused ? focusedItemId : undefined"
1387
- [submenuiconTemplate]="submenuiconTemplate"
1388
- [activeItemPath]="activeItemPath()"
1389
- (itemClick)="onItemClick($event)"
1390
- (menuFocus)="onMenuFocus($event)"
1391
- (menuBlur)="onMenuBlur($event)"
1392
- (menuKeydown)="onKeyDown($event)"
1393
- (itemMouseEnter)="onItemMouseEnter($event)"
1394
- ></p-menubarSub>
1395
- <div class="p-menubar-end" *ngIf="endTemplate; else legacy">
1396
- <ng-container *ngTemplateOutlet="endTemplate"></ng-container>
1397
- </div>
1398
- <ng-template #legacy>
1399
- <div class="p-menubar-end">
1400
- <ng-content></ng-content>
1401
- </div>
1402
- </ng-template>
1403
- </div>
1404
- `,
1405
- changeDetection: ChangeDetectionStrategy.OnPush,
1406
- encapsulation: ViewEncapsulation.None,
1407
- providers: [MenubarService, MenuBarStyle]
1408
- }]
1409
- }], () => [{ type: Document, decorators: [{
1410
- type: Inject,
1411
- args: [DOCUMENT]
1412
- }] }, { type: undefined, decorators: [{
1413
- type: Inject,
1414
- args: [PLATFORM_ID]
1415
- }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: MenubarService }], { model: [{
1416
- type: Input
1417
- }], style: [{
1418
- type: Input
1419
- }], styleClass: [{
1420
- type: Input
1421
- }], autoZIndex: [{
1422
- type: Input,
1423
- args: [{ transform: booleanAttribute }]
1424
- }], baseZIndex: [{
1425
- type: Input,
1426
- args: [{ transform: numberAttribute }]
1427
- }], autoDisplay: [{
1428
- type: Input,
1429
- args: [{ transform: booleanAttribute }]
1430
- }], autoHide: [{
1431
- type: Input,
1432
- args: [{ transform: booleanAttribute }]
1433
- }], breakpoint: [{
1434
- type: Input
1435
- }], autoHideDelay: [{
1436
- type: Input,
1437
- args: [{ transform: numberAttribute }]
1438
- }], id: [{
1439
- type: Input
1440
- }], ariaLabel: [{
1441
- type: Input
1442
- }], ariaLabelledBy: [{
1443
- type: Input
1444
- }], onFocus: [{
1445
- type: Output
1446
- }], onBlur: [{
1447
- type: Output
1448
- }], menubutton: [{
1449
- type: ViewChild,
1450
- args: ['menubutton']
1451
- }], rootmenu: [{
1452
- type: ViewChild,
1453
- args: ['rootmenu']
1454
- }], startTemplate: [{
1455
- type: ContentChild,
1456
- args: ['start']
1457
- }], endTemplate: [{
1458
- type: ContentChild,
1459
- args: ['end']
1460
- }], itemTemplate: [{
1461
- type: ContentChild,
1462
- args: ['item']
1463
- }], menuiconTemplate: [{
1464
- type: ContentChild,
1465
- args: ['menuicon']
1466
- }], submenuiconTemplate: [{
1467
- type: ContentChild,
1468
- args: ['submenuicon']
1469
- }] }); })();
1470
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(Menubar, { className: "Menubar" }); })();
1471
- export class MenubarModule {
1472
- static ɵfac = function MenubarModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MenubarModule)(); };
1473
- static ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: MenubarModule });
1474
- static ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [Menubar, SharedModule, SharedModule] });
1475
- }
1476
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MenubarModule, [{
1477
- type: NgModule,
1478
- args: [{
1479
- imports: [Menubar, SharedModule],
1480
- exports: [Menubar, SharedModule]
1481
- }]
1482
- }], null, null); })();
1483
- (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MenubarModule, { imports: [Menubar, SharedModule], exports: [Menubar, SharedModule] }); })();
1484
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudWJhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZW51YmFyL21lbnViYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFFTixZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixVQUFVLEVBQ1YsS0FBSyxFQUNMLFFBQVEsRUFDUixlQUFlLEVBR2YsTUFBTSxFQUNOLFdBQVcsRUFFWCxNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1SSxPQUFPLEVBQVksWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxP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QWE7O2tGQWxNbEIsT0FBTztBQXl1QnBCLE1BQU0sT0FBTyxhQUFhO3VHQUFiLGFBQWE7NERBQWIsYUFBYTtnRUFIWixPQUFPLEVBQUUsWUFBWSxFQUNaLFlBQVk7O2lGQUV0QixhQUFhO2NBSnpCLFFBQVE7ZUFBQztnQkFDTixPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDO2dCQUNoQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDO2FBQ25DOzt3RkFDWSxhQUFhLGNBenVCYixPQUFPLEVBc3VCRyxZQUFZLGFBdHVCdEIsT0FBTyxFQXV1QkcsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSwgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIGVmZmVjdCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3QsXG4gICAgaW5qZWN0LFxuICAgIEluamVjdGFibGUsXG4gICAgSW5wdXQsXG4gICAgTmdNb2R1bGUsXG4gICAgbnVtYmVyQXR0cmlidXRlLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFBMQVRGT1JNX0lELFxuICAgIFJlbmRlcmVyMixcbiAgICBzaWduYWwsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZpbmRMYXN0SW5kZXgsIGZpbmRTaW5nbGUsIGZvY3VzLCBpc0VtcHR5LCBpc05vdEVtcHR5LCBpc1ByaW50YWJsZUNoYXJhY3RlciwgaXNUb3VjaERldmljZSwgcmVzb2x2ZSwgdXVpZCB9IGZyb20gJ0BwcmltZXVpeC91dGlscyc7XG5pbXBvcnQgeyBNZW51SXRlbSwgU2hhcmVkTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgQmFkZ2VNb2R1bGUgfSBmcm9tICdwcmltZW5nL2JhZGdlJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICdwcmltZW5nL2Jhc2Vjb21wb25lbnQnO1xuaW1wb3J0IHsgQW5nbGVEb3duSWNvbiwgQW5nbGVSaWdodEljb24sIEJhcnNJY29uIH0gZnJvbSAncHJpbWVuZy9pY29ucyc7XG5pbXBvcnQgeyBSaXBwbGUgfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcbmltcG9ydCB7IFZvaWRMaXN0ZW5lciB9IGZyb20gJ3ByaW1lbmcvdHMtaGVscGVycyc7XG5pbXBvcnQgeyBaSW5kZXhVdGlscyB9IGZyb20gJ3ByaW1lbmcvdXRpbHMnO1xuaW1wb3J0IHsgaW50ZXJ2YWwsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2UsIGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1lbnVCYXJTdHlsZSB9IGZyb20gJy4vc3R5bGUvbWVudWJhcnN0eWxlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1lbnViYXJTZXJ2aWNlIHtcbiAgICBhdXRvSGlkZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAgIGF1dG9IaWRlRGVsYXk6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAgIHJlYWRvbmx5IG1vdXNlTGVhdmVzID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIHJlYWRvbmx5IG1vdXNlTGVmdCQgPSB0aGlzLm1vdXNlTGVhdmVzLnBpcGUoXG4gICAgICAgIGRlYm91bmNlKCgpID0+IGludGVydmFsKHRoaXMuYXV0b0hpZGVEZWxheSkpLFxuICAgICAgICBmaWx0ZXIoKG1vdXNlTGVmdCkgPT4gKHRoaXMuYXV0b0hpZGUgYXMgYm9vbGVhbikgJiYgbW91c2VMZWZ0KVxuICAgICk7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1tZW51YmFyU3ViLCBwLW1lbnViYXJzdWInLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUm91dGVyTW9kdWxlLCBSaXBwbGUsIFRvb2x0aXBNb2R1bGUsIEJhcnNJY29uLCBBbmdsZURvd25JY29uLCBBbmdsZVJpZ2h0SWNvbiwgQmFkZ2VNb2R1bGUsIFNoYXJlZE1vZHVsZV0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPHVsXG4gICAgICAgICAgICAjbWVudWJhclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAncC1tZW51YmFyLXN1Ym1lbnUnOiAhcm9vdCwgJ3AtbWVudWJhci1yb290LWxpc3QnOiByb290IH1cIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtZW51J1wiXG4gICAgICAgICAgICByb2xlPVwibWVudWJhclwiXG4gICAgICAgICAgICAoZm9jdXMpPVwibWVudUZvY3VzLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoYmx1cik9XCJtZW51Qmx1ci5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgW3RhYmluZGV4XT1cIjBcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZEJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cIm1lbnVLZXlkb3duLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICBbYXR0ci5pZF09XCJyb290ID8gbWVudUlkIDogbnVsbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnRdPVwiZm9jdXNlZEl0ZW1JZFwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJpbmxpbmVTdHlsZXNcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LXByb2Nlc3NlZEl0ZW0gW25nRm9yT2ZdPVwiaXRlbXNcIiBsZXQtaW5kZXg9XCJpbmRleFwiPlxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzSXRlbVZpc2libGUocHJvY2Vzc2VkSXRlbSkgJiYgZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3NlcGFyYXRvcicpXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiZ2V0SXRlbUlkKHByb2Nlc3NlZEl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdzdHlsZScpXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0U2VwYXJhdG9ySXRlbUNsYXNzKHByb2Nlc3NlZEl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cInNlcGFyYXRvclwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInc2VwYXJhdG9yJ1wiXG4gICAgICAgICAgICAgICAgPjwvbGk+XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICNsaXN0SXRlbVxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzSXRlbVZpc2libGUocHJvY2Vzc2VkSXRlbSkgJiYgIWdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdzZXBhcmF0b3InKVwiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJtZW51aXRlbVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cImdldEl0ZW1JZChwcm9jZXNzZWRJdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbWVudWl0ZW0nXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wLWhpZ2hsaWdodF09XCJpc0l0ZW1BY3RpdmUocHJvY2Vzc2VkSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXAtZm9jdXNlZF09XCJpc0l0ZW1Gb2N1c2VkKHByb2Nlc3NlZEl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wLWRpc2FibGVkXT1cImlzSXRlbURpc2FibGVkKHByb2Nlc3NlZEl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRJdGVtTGFiZWwocHJvY2Vzc2VkSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzSXRlbURpc2FibGVkKHByb2Nlc3NlZEl0ZW0pIHx8IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiaXNJdGVtR3JvdXAocHJvY2Vzc2VkSXRlbSkgJiYgIWdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICd0bycpID8gJ21lbnUnIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc0l0ZW1Hcm91cChwcm9jZXNzZWRJdGVtKSA/IGlzSXRlbUFjdGl2ZShwcm9jZXNzZWRJdGVtKSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGV2ZWxdPVwibGV2ZWwgKyAxXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1zZXRzaXplXT1cImdldEFyaWFTZXRTaXplKClcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXBvc2luc2V0XT1cImdldEFyaWFQb3NJbnNldChpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnc3R5bGUnKVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldEl0ZW1DbGFzcyhwcm9jZXNzZWRJdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnc3R5bGVDbGFzcycpXCJcbiAgICAgICAgICAgICAgICAgICAgcFRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBPcHRpb25zXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICd0b29sdGlwT3B0aW9ucycpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLW1lbnViYXItaXRlbS1jb250ZW50XCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidjb250ZW50J1wiIChjbGljayk9XCJvbkl0ZW1DbGljaygkZXZlbnQsIHByb2Nlc3NlZEl0ZW0pXCIgKG1vdXNlZW50ZXIpPVwib25JdGVtTW91c2VFbnRlcih7ICRldmVudCwgcHJvY2Vzc2VkSXRlbSB9KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpdGVtVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAncm91dGVyTGluaycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuaHJlZl09XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAndXJsJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb25pZF09XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnYXV0b21hdGlvbklkJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2FjdGlvbidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFyZ2V0XT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICd0YXJnZXQnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3AtbWVudWJhci1pdGVtLWxpbmsnOiB0cnVlLCAncC1kaXNhYmxlZCc6IGdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdkaXNhYmxlZCcpIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCItMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdpY29uJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLW1lbnViYXItaXRlbS1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdpY29uJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2ljb25TdHlsZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInaWNvbidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnZXNjYXBlJyk7IGVsc2UgaHRtbExhYmVsXCIgY2xhc3M9XCJwLW1lbnViYXItaXRlbS1sYWJlbFwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbGFiZWwnXCIgW2lkXT1cImdldEl0ZW1MYWJlbElkKHByb2Nlc3NlZEl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRJdGVtTGFiZWwocHJvY2Vzc2VkSXRlbSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2h0bWxMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1tZW51YmFyLWl0ZW0tbGFiZWxcIiBbaW5uZXJIVE1MXT1cImdldEl0ZW1MYWJlbChwcm9jZXNzZWRJdGVtKVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbGFiZWwnXCIgW2lkXT1cImdldEl0ZW1MYWJlbElkKHByb2Nlc3NlZEl0ZW0pXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1iYWRnZSAqbmdJZj1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdiYWRnZScpXCIgW3N0eWxlQ2xhc3NdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2JhZGdlU3R5bGVDbGFzcycpXCIgW3ZhbHVlXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdiYWRnZScpXCIgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNJdGVtR3JvdXAocHJvY2Vzc2VkSXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc3VibWVudWljb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBbmdsZURvd25JY29uIGNsYXNzPVwicC1tZW51YmFyLXN1Ym1lbnUtaWNvblwiICpuZ0lmPVwicm9vdFwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInc3VibWVudWljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QW5nbGVSaWdodEljb24gY2xhc3M9XCJwLW1lbnViYXItc3VibWVudS1pY29uXCIgKm5nSWY9XCIhcm9vdFwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInc3VibWVudWljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwic3VibWVudWljb25UZW1wbGF0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInc3VibWVudWljb24nXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3JvdXRlckxpbmsnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdyb3V0ZXJMaW5rJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb25pZF09XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnYXV0b21hdGlvbklkJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCItMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInYWN0aW9uJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAncXVlcnlQYXJhbXMnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIidwLW1lbnViYXItaXRlbS1saW5rLWFjdGl2ZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3JvdXRlckxpbmtBY3RpdmVPcHRpb25zJykgfHwgeyBleGFjdDogZmFsc2UgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YXJnZXRdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3RhcmdldCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAncC1tZW51YmFyLWl0ZW0tbGluayc6IHRydWUsICdwLWRpc2FibGVkJzogZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2Rpc2FibGVkJykgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmcmFnbWVudF09XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnZnJhZ21lbnQnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtxdWVyeVBhcmFtc0hhbmRsaW5nXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdxdWVyeVBhcmFtc0hhbmRsaW5nJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJlc2VydmVGcmFnbWVudF09XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAncHJlc2VydmVGcmFnbWVudCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NraXBMb2NhdGlvbkNoYW5nZV09XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnc2tpcExvY2F0aW9uQ2hhbmdlJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVwbGFjZVVybF09XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAncmVwbGFjZVVybCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXRlXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdzdGF0ZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1tZW51YmFyLWl0ZW0taWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdpY29uJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2ljb24nKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnaWNvblN0eWxlJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidpY29uJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCItMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1tZW51YmFyLWl0ZW0tbGFiZWxcIiAqbmdJZj1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdlc2NhcGUnKTsgZWxzZSBodG1sUm91dGVMYWJlbFwiPnt7IGdldEl0ZW1MYWJlbChwcm9jZXNzZWRJdGVtKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNodG1sUm91dGVMYWJlbD48c3BhbiBjbGFzcz1cInAtbWVudWJhci1pdGVtLWxhYmVsXCIgW2lubmVySFRNTF09XCJnZXRJdGVtTGFiZWwocHJvY2Vzc2VkSXRlbSlcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2xhYmVsJ1wiPjwvc3Bhbj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1iYWRnZSAqbmdJZj1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdiYWRnZScpXCIgW3N0eWxlQ2xhc3NdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2JhZGdlU3R5bGVDbGFzcycpXCIgW3ZhbHVlXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdiYWRnZScpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzSXRlbUdyb3VwKHByb2Nlc3NlZEl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXN1Ym1lbnVpY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QW5nbGVEb3duSWNvbiBjbGFzcz1cInAtbWVudWJhci1zdWJtZW51LWljb25cIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3N1Ym1lbnVpY29uJ1wiICpuZ0lmPVwicm9vdFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFuZ2xlUmlnaHRJY29uIGNsYXNzPVwicC1tZW51YmFyLXN1Ym1lbnUtaWNvblwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInc3VibWVudWljb24nXCIgKm5nSWY9XCIhcm9vdFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cInN1Ym1lbnVpY29uVGVtcGxhdGVcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3N1Ym1lbnVpY29uJ1wiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW1UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHByb2Nlc3NlZEl0ZW0uaXRlbSwgcm9vdDogcm9vdCB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPHAtbWVudWJhclN1YlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc0l0ZW1WaXNpYmxlKHByb2Nlc3NlZEl0ZW0pICYmIGlzSXRlbUdyb3VwKHByb2Nlc3NlZEl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtVGVtcGxhdGVdPVwiaXRlbVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJwcm9jZXNzZWRJdGVtLml0ZW1zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttb2JpbGVBY3RpdmVdPVwibW9iaWxlQWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvRGlzcGxheV09XCJhdXRvRGlzcGxheVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWVudUlkXT1cIm1lbnVJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbVBhdGhdPVwiYWN0aXZlSXRlbVBhdGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2ZvY3VzZWRJdGVtSWRdPVwiZm9jdXNlZEl0ZW1JZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGV2ZWxdPVwibGV2ZWwgKyAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthcmlhTGFiZWxsZWRCeV09XCJnZXRJdGVtTGFiZWxJZChwcm9jZXNzZWRJdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoaXRlbUNsaWNrKT1cIml0ZW1DbGljay5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW1Nb3VzZUVudGVyKT1cIm9uSXRlbU1vdXNlRW50ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU3R5bGVzXT1cInsgZGlzcGxheTogaXNJdGVtQWN0aXZlKHByb2Nlc3NlZEl0ZW0pID8gJ2ZsZXgnIDogJ25vbmUnIH1cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvcC1tZW51YmFyU3ViPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3VsPlxuICAgIGAsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBNZW51YmFyU3ViIGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBpdGVtczogYW55W107XG5cbiAgICBASW5wdXQoKSBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcm9vdDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGF1dG9aSW5kZXg6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgYmFzZVpJbmRleDogbnVtYmVyID0gMDtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBtb2JpbGVBY3RpdmU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgYXV0b0Rpc3BsYXk6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoKSBtZW51SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpIGFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KCkgYXJpYUxhYmVsbGVkQnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIGxldmVsOiBudW1iZXIgPSAwO1xuXG4gICAgQElucHV0KCkgZm9jdXNlZEl0ZW1JZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KCkgYWN0aXZlSXRlbVBhdGg6IGFueVtdO1xuXG4gICAgQElucHV0KCkgaW5saW5lU3R5bGVzOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzdWJtZW51aWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgQE91dHB1dCgpIGl0ZW1DbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgaXRlbU1vdXNlRW50ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG1lbnVGb2N1czogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgbWVudUJsdXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG1lbnVLZXlkb3duOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBWaWV3Q2hpbGQoJ21lbnViYXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBtZW51YmFyVmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgbW91c2VMZWF2ZVN1YnNjcmliZXI6IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcblxuICAgIG1lbnViYXJTZXJ2aWNlID0gaW5qZWN0KE1lbnViYXJTZXJ2aWNlKTtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLm1vdXNlTGVhdmVTdWJzY3JpYmVyID0gdGhpcy5tZW51YmFyU2VydmljZS5tb3VzZUxlZnQkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkl0ZW1DbGljayhldmVudDogYW55LCBwcm9jZXNzZWRJdGVtOiBhbnkpIHtcbiAgICAgICAgdGhpcy5nZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnY29tbWFuZCcsIHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIGl0ZW06IHByb2Nlc3NlZEl0ZW0uaXRlbSB9KTtcbiAgICAgICAgdGhpcy5pdGVtQ2xpY2suZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCBwcm9jZXNzZWRJdGVtLCBpc0ZvY3VzOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIGdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW06IGFueSwgbmFtZTogc3RyaW5nLCBwYXJhbXM6IGFueSB8IG51bGwgPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzZWRJdGVtICYmIHByb2Nlc3NlZEl0ZW0uaXRlbSA/IHJlc29sdmUocHJvY2Vzc2VkSXRlbS5pdGVtW25hbWVdLCBwYXJhbXMpIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGdldEl0ZW1JZChwcm9jZXNzZWRJdGVtOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gcHJvY2Vzc2VkSXRlbS5pdGVtICYmIHByb2Nlc3NlZEl0ZW0uaXRlbT8uaWQgPyBwcm9jZXNzZWRJdGVtLml0ZW0uaWQgOiBgJHt0aGlzLm1lbnVJZH1fJHtwcm9jZXNzZWRJdGVtLmtleX1gO1xuICAgIH1cblxuICAgIGdldEl0ZW1LZXkocHJvY2Vzc2VkSXRlbTogYW55KTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SXRlbUlkKHByb2Nlc3NlZEl0ZW0pO1xuICAgIH1cblxuICAgIGdldEl0ZW1MYWJlbElkKHByb2Nlc3NlZEl0ZW06IGFueSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLm1lbnVJZH1fJHtwcm9jZXNzZWRJdGVtLmtleX1fbGFiZWxgO1xuICAgIH1cblxuICAgIGdldEl0ZW1DbGFzcyhwcm9jZXNzZWRJdGVtOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnRoaXMuZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2NsYXNzJyksXG4gICAgICAgICAgICAncC1tZW51YmFyLWl0ZW0nOiB0cnVlLFxuICAgICAgICAgICAgJ3AtbWVudWJhci1pdGVtLWFjdGl2ZSc6IHRoaXMuaXNJdGVtQWN0aXZlKHByb2Nlc3NlZEl0ZW0pLFxuICAgICAgICAgICAgJ3AtZm9jdXMnOiB0aGlzLmlzSXRlbUZvY3VzZWQocHJvY2Vzc2VkSXRlbSksXG4gICAgICAgICAgICAncC1kaXNhYmxlZCc6IHRoaXMuaXNJdGVtRGlzYWJsZWQocHJvY2Vzc2VkSXRlbSlcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBnZXRJdGVtTGFiZWwocHJvY2Vzc2VkSXRlbTogYW55KTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2xhYmVsJyk7XG4gICAgfVxuXG4gICAgZ2V0U2VwYXJhdG9ySXRlbUNsYXNzKHByb2Nlc3NlZEl0ZW06IGFueSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4udGhpcy5nZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnY2xhc3MnKSxcbiAgICAgICAgICAgICdwLW1lbnViYXItc2VwYXJhdG9yJzogdHJ1ZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGlzSXRlbVZpc2libGUocHJvY2Vzc2VkSXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICd2aXNpYmxlJykgIT09IGZhbHNlO1xuICAgIH1cblxuICAgIGlzSXRlbUFjdGl2ZShwcm9jZXNzZWRJdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlSXRlbVBhdGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZUl0ZW1QYXRoLnNvbWUoKHBhdGgpID0+IHBhdGgua2V5ID09PSBwcm9jZXNzZWRJdGVtLmtleSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc0l0ZW1EaXNhYmxlZChwcm9jZXNzZWRJdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2Rpc2FibGVkJyk7XG4gICAgfVxuXG4gICAgaXNJdGVtRm9jdXNlZChwcm9jZXNzZWRJdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9jdXNlZEl0ZW1JZCA9PT0gdGhpcy5nZXRJdGVtSWQocHJvY2Vzc2VkSXRlbSk7XG4gICAgfVxuXG4gICAgaXNJdGVtR3JvdXAocHJvY2Vzc2VkSXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpc05vdEVtcHR5KHByb2Nlc3NlZEl0ZW0uaXRlbXMpO1xuICAgIH1cblxuICAgIGdldEFyaWFTZXRTaXplKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5maWx0ZXIoKHByb2Nlc3NlZEl0ZW0pID0+IHRoaXMuaXNJdGVtVmlzaWJsZShwcm9jZXNzZWRJdGVtKSAmJiAhdGhpcy5nZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnc2VwYXJhdG9yJykpLmxlbmd0aDtcbiAgICB9XG5cbiAgICBnZXRBcmlhUG9zSW5zZXQoaW5kZXg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gaW5kZXggLSB0aGlzLml0ZW1zLnNsaWNlKDAsIGluZGV4KS5maWx0ZXIoKHByb2Nlc3NlZEl0ZW0pID0+IHRoaXMuaXNJdGVtVmlzaWJsZShwcm9jZXNzZWRJdGVtKSAmJiB0aGlzLmdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdzZXBhcmF0b3InKSkubGVuZ3RoICsgMTtcbiAgICB9XG5cbiAgICBvbkl0ZW1Nb3VzZUxlYXZlKCkge1xuICAgICAgICB0aGlzLm1lbnViYXJTZXJ2aWNlLm1vdXNlTGVhdmVzLm5leHQodHJ1ZSk7XG4gICAgfVxuXG4gICAgb25JdGVtTW91c2VFbnRlcihwYXJhbTogYW55KSB7XG4gICAgICAgIGlmICh0aGlzLmF1dG9EaXNwbGF5KSB7XG4gICAgICAgICAgICB0aGlzLm1lbnViYXJTZXJ2aWNlLm1vdXNlTGVhdmVzLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgY29uc3QgeyBldmVudCwgcHJvY2Vzc2VkSXRlbSB9ID0gcGFyYW07XG4gICAgICAgICAgICB0aGlzLml0ZW1Nb3VzZUVudGVyLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgcHJvY2Vzc2VkSXRlbSB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm1vdXNlTGVhdmVTdWJzY3JpYmVyPy51bnN1YnNjcmliZSgpO1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cbi8qKlxuICogTWVudWJhciBpcyBhIGhvcml6b250YWwgbWVudSBjb21wb25lbnQuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtbWVudWJhcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSb3V0ZXJNb2R1bGUsIE1lbnViYXJTdWIsIFJpcHBsZSwgVG9vbHRpcE1vZHVsZSwgQmFyc0ljb24sIEFuZ2xlRG93bkljb24sIEFuZ2xlUmlnaHRJY29uLCBCYWRnZU1vZHVsZSwgU2hhcmVkTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgJ3AtbWVudWJhciBwLWNvbXBvbmVudCc6IHRydWUsICdwLW1lbnViYXItbW9iaWxlJzogcXVlcnlNYXRjaGVzLCAncC1tZW51YmFyLW1vYmlsZS1hY3RpdmUnOiBtb2JpbGVBY3RpdmUgfVwiIFtjbGFzc109XCJzdHlsZUNsYXNzXCIgW25nU3R5bGVdPVwic3R5bGVcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3Jvb3QnXCIgW2F0dHIuZGF0YS1wYy1uYW1lXT1cIidtZW51YmFyJ1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtbWVudWJhci1zdGFydFwiICpuZ0lmPVwic3RhcnRUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdGFydFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgI21lbnVidXR0b25cbiAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwibW9kZWwubGVuZ3RoICYmIG1vZGVsLmxlbmd0aCA+IDAgPyB0cnVlIDogZmFsc2VcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwibW9iaWxlQWN0aXZlXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImlkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbmZpZy50cmFuc2xhdGlvbi5hcmlhLm5hdmlnYXRpb25cIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInYnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtb2RlbCAmJiBtb2RlbC5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInAtbWVudWJhci1idXR0b25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJtZW51QnV0dG9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24pPVwibWVudUJ1dHRvbktleWRvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEJhcnNJY29uICpuZ0lmPVwiIW1lbnVpY29uVGVtcGxhdGVcIiAvPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cIm1lbnVpY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPHAtbWVudWJhclN1YlxuICAgICAgICAgICAgICAgICNyb290bWVudVxuICAgICAgICAgICAgICAgIFtpdGVtc109XCJwcm9jZXNzZWRJdGVtc1wiXG4gICAgICAgICAgICAgICAgW2l0ZW1UZW1wbGF0ZV09XCJpdGVtVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgIFttZW51SWRdPVwiaWRcIlxuICAgICAgICAgICAgICAgIFtyb290XT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtiYXNlWkluZGV4XT1cImJhc2VaSW5kZXhcIlxuICAgICAgICAgICAgICAgIFthdXRvWkluZGV4XT1cImF1dG9aSW5kZXhcIlxuICAgICAgICAgICAgICAgIFttb2JpbGVBY3RpdmVdPVwibW9iaWxlQWN0aXZlXCJcbiAgICAgICAgICAgICAgICBbYXV0b0Rpc3BsYXldPVwiYXV0b0Rpc3BsYXlcIlxuICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICBbYXJpYUxhYmVsbGVkQnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICAgICAgIFtmb2N1c2VkSXRlbUlkXT1cImZvY3VzZWQgPyBmb2N1c2VkSXRlbUlkIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgICBbc3VibWVudWljb25UZW1wbGF0ZV09XCJzdWJtZW51aWNvblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbVBhdGhdPVwiYWN0aXZlSXRlbVBhdGgoKVwiXG4gICAgICAgICAgICAgICAgKGl0ZW1DbGljayk9XCJvbkl0ZW1DbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAobWVudUZvY3VzKT1cIm9uTWVudUZvY3VzKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChtZW51Qmx1cik9XCJvbk1lbnVCbHVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChtZW51S2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGl0ZW1Nb3VzZUVudGVyKT1cIm9uSXRlbU1vdXNlRW50ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICA+PC9wLW1lbnViYXJTdWI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1tZW51YmFyLWVuZFwiICpuZ0lmPVwiZW5kVGVtcGxhdGU7IGVsc2UgbGVnYWN5XCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVuZFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbGVnYWN5PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLW1lbnViYXItZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtNZW51YmFyU2VydmljZSwgTWVudUJhclN0eWxlXVxufSlcbmV4cG9ydCBjbGFzcyBNZW51YmFyIGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgICAvKipcbiAgICAgKiBBbiBhcnJheSBvZiBtZW51aXRlbXMuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc2V0IG1vZGVsKHZhbHVlOiBNZW51SXRlbVtdIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX21vZGVsID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NlZEl0ZW1zID0gdGhpcy5jcmVhdGVQcm9jZXNzZWRJdGVtcyh0aGlzLl9tb2RlbCB8fCBbXSk7XG4gICAgfVxuICAgIGdldCBtb2RlbCgpOiBNZW51SXRlbVtdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21vZGVsO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGU6IHsgW2tsYXNzOiBzdHJpbmddOiBhbnkgfSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogQ2xhc3Mgb2YgdGhlIGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gYXV0b21hdGljYWxseSBtYW5hZ2UgbGF5ZXJpbmcuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGF1dG9aSW5kZXg6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIEJhc2UgekluZGV4IHZhbHVlIHRvIHVzZSBpbiBsYXllcmluZy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBiYXNlWkluZGV4OiBudW1iZXIgPSAwO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gc2hvdyBhIHJvb3Qgc3VibWVudSBvbiBtb3VzZSBvdmVyLlxuICAgICAqIEBkZWZhdWx0VmFsdWUgdHJ1ZVxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhdXRvRGlzcGxheTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gaGlkZSBhIHJvb3Qgc3VibWVudSB3aGVuIG1vdXNlIGxlYXZlcy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgYXV0b0hpZGU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVGhlIGJyZWFrcG9pbnQgdG8gZGVmaW5lIHRoZSBtYXhpbXVtIHdpZHRoIGJvdW5kYXJ5LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGJyZWFrcG9pbnQ6IHN0cmluZyA9ICc5NjBweCc7XG4gICAgLyoqXG4gICAgICogRGVsYXkgdG8gaGlkZSB0aGUgcm9vdCBzdWJtZW51IGluIG1pbGxpc2Vjb25kcyB3aGVuIG1vdXNlIGxlYXZlcy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBhdXRvSGlkZURlbGF5OiBudW1iZXIgPSAxMDA7XG4gICAgLyoqXG4gICAgICogQ3VycmVudCBpZCBzdGF0ZSBhcyBhIHN0cmluZy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBpZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgYSBzdHJpbmcgdmFsdWUgdGhhdCBsYWJlbHMgYW4gaW50ZXJhY3RpdmUgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJZGVudGlmaWVyIG9mIHRoZSB1bmRlcmx5aW5nIGlucHV0IGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYXJpYUxhYmVsbGVkQnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBleGVjdXRlIHdoZW4gYnV0dG9uIGlzIGZvY3VzZWQuXG4gICAgICogQHBhcmFtIHtGb2N1c0V2ZW50fSBldmVudCAtIEZvY3VzIGV2ZW50LlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbkZvY3VzOiBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEZvY3VzRXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gZXhlY3V0ZSB3aGVuIGJ1dHRvbiBsb3NlcyBmb2N1cy5cbiAgICAgKiBAcGFyYW0ge0ZvY3VzRXZlbnR9IGV2ZW50IC0gRm9jdXMgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uQmx1cjogRXZlbnRFbWl0dGVyPEZvY3VzRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PigpO1xuXG4gICAgQFZpZXdDaGlsZCgnbWVudWJ1dHRvbicpIG1lbnVidXR0b246IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgICBAVmlld0NoaWxkKCdyb290bWVudScpIHJvb3RtZW51OiBNZW51YmFyU3ViIHwgdW5kZWZpbmVkO1xuXG4gICAgbW9iaWxlQWN0aXZlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgcHJpdmF0ZSBtYXRjaE1lZGlhTGlzdGVuZXI6ICgpID0+IHZvaWQ7XG5cbiAgICBwcml2YXRlIHF1ZXJ5OiBNZWRpYVF1ZXJ5TGlzdDtcblxuICAgIHB1YmxpYyBxdWVyeU1hdGNoZXM6IGJvb2xlYW47XG5cbiAgICBvdXRzaWRlQ2xpY2tMaXN0ZW5lcjogVm9pZExpc3RlbmVyO1xuXG4gICAgcmVzaXplTGlzdGVuZXI6IFZvaWRMaXN0ZW5lcjtcblxuICAgIG1vdXNlTGVhdmVTdWJzY3JpYmVyOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgICBkaXJ0eTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgZm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgYWN0aXZlSXRlbVBhdGggPSBzaWduYWw8YW55PihbXSk7XG5cbiAgICBudW1iZXIgPSBzaWduYWw8bnVtYmVyPigwKTtcblxuICAgIGZvY3VzZWRJdGVtSW5mbyA9IHNpZ25hbDxhbnk+KHsgaW5kZXg6IC0xLCBsZXZlbDogMCwgcGFyZW50S2V5OiAnJywgaXRlbTogbnVsbCB9KTtcblxuICAgIHNlYXJjaFZhbHVlOiBzdHJpbmcgPSAnJztcblxuICAgIHNlYXJjaFRpbWVvdXQ6IGFueTtcblxuICAgIF9wcm9jZXNzZWRJdGVtczogYW55W107XG5cbiAgICBfY29tcG9uZW50U3R5bGUgPSBpbmplY3QoTWVudUJhclN0eWxlKTtcblxuICAgIF9tb2RlbDogTWVudUl0ZW1bXSB8IHVuZGVmaW5lZDtcblxuICAgIGdldCB2aXNpYmxlSXRlbXMoKSB7XG4gICAgICAgIGNvbnN0IHByb2Nlc3NlZEl0ZW0gPSB0aGlzLmFjdGl2ZUl0ZW1QYXRoKCkuZmluZCgocCkgPT4gcC5rZXkgPT09IHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkucGFyZW50S2V5KTtcblxuICAgICAgICByZXR1cm4gcHJvY2Vzc2VkSXRlbSA/IHByb2Nlc3NlZEl0ZW0uaXRlbXMgOiB0aGlzLnByb2Nlc3NlZEl0ZW1zO1xuICAgIH1cblxuICAgIGdldCBwcm9jZXNzZWRJdGVtcygpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9wcm9jZXNzZWRJdGVtcyB8fCAhdGhpcy5fcHJvY2Vzc2VkSXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLl9wcm9jZXNzZWRJdGVtcyA9IHRoaXMuY3JlYXRlUHJvY2Vzc2VkSXRlbXModGhpcy5tb2RlbCB8fCBbXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2Nlc3NlZEl0ZW1zO1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkSXRlbUlkKCkge1xuICAgICAgICBjb25zdCBmb2N1c2VkSXRlbSA9IHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCk7XG4gICAgICAgIHJldHVybiBmb2N1c2VkSXRlbS5pdGVtICYmIGZvY3VzZWRJdGVtLml0ZW0/LmlkID8gZm9jdXNlZEl0ZW0uaXRlbS5pZCA6IGZvY3VzZWRJdGVtLmluZGV4ICE9PSAtMSA/IGAke3RoaXMuaWR9JHtpc05vdEVtcHR5KGZvY3VzZWRJdGVtLnBhcmVudEtleSkgPyAnXycgKyBmb2N1c2VkSXRlbS5wYXJlbnRLZXkgOiAnJ31fJHtmb2N1c2VkSXRlbS5pbmRleH1gIDogbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHVibGljIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHVibGljIHBsYXRmb3JtSWQ6IGFueSxcbiAgICAgICAgcHVibGljIGVsOiBFbGVtZW50UmVmLFxuICAgICAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBtZW51YmFyU2VydmljZTogTWVudWJhclNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhdGggPSB0aGlzLmFjdGl2ZUl0ZW1QYXRoKCk7XG5cbiAgICAgICAgICAgIGlmIChpc05vdEVtcHR5KHBhdGgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iaW5kT3V0c2lkZUNsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJpbmRSZXNpemVMaXN0ZW5lcigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVuYmluZE91dHNpZGVDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy51bmJpbmRSZXNpemVMaXN0ZW5lcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5iaW5kTWF0Y2hNZWRpYUxpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMubWVudWJhclNlcnZpY2UuYXV0b0hpZGUgPSB0aGlzLmF1dG9IaWRlO1xuICAgICAgICB0aGlzLm1lbnViYXJTZXJ2aWNlLmF1dG9IaWRlRGVsYXkgPSB0aGlzLmF1dG9IaWRlRGVsYXk7XG4gICAgICAgIHRoaXMubW91c2VMZWF2ZVN1YnNjcmliZXIgPSB0aGlzLm1lbnViYXJTZXJ2aWNlLm1vdXNlTGVmdCQuc3Vic2NyaWJlKCgpID0+IHRoaXMudW5iaW5kT3V0c2lkZUNsaWNrTGlzdGVuZXIoKSk7XG4gICAgICAgIHRoaXMuaWQgPSB0aGlzLmlkIHx8IHV1aWQoJ3BuX2lkXycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgdGVtcGxhdGUgb3B0aW9uIGZvciBzdGFydC5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnc3RhcnQnKSBzdGFydFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0ZW1wbGF0ZSBvcHRpb24gZm9yIGVuZC5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnZW5kJykgZW5kVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHRlbXBsYXRlIG9wdGlvbiBmb3IgaXRlbS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnaXRlbScpIGl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHRlbXBsYXRlIG9wdGlvbiBmb3IgaXRlbS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnbWVudWljb24nKSBtZW51aWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgdGVtcGxhdGUgb3B0aW9uIGZvciBzdWJtZW51IGljb24uXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ3N1Ym1lbnVpY29uJykgc3VibWVudWljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIGNyZWF0ZVByb2Nlc3NlZEl0ZW1zKGl0ZW1zOiBhbnksIGxldmVsOiBudW1iZXIgPSAwLCBwYXJlbnQ6IGFueSA9IHt9LCBwYXJlbnRLZXk6IGFueSA9ICcnKSB7XG4gICAgICAgIGNvbnN0IHByb2Nlc3NlZEl0ZW1zID0gW107XG5cbiAgICAgICAgaXRlbXMgJiZcbiAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gKHBhcmVudEtleSAhPT0gJycgPyBwYXJlbnRLZXkgKyAnXycgOiAnJykgKyBpbmRleDtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdJdGVtID0ge1xuICAgICAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWwsXG4gICAgICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50LFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnRLZXlcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgbmV3SXRlbVsnaXRlbXMnXSA9IHRoaXMuY3JlYXRlUHJvY2Vzc2VkSXRlbXMoaXRlbS5pdGVtcywgbGV2ZWwgKyAxLCBuZXdJdGVtLCBrZXkpO1xuICAgICAgICAgICAgICAgIHByb2Nlc3NlZEl0ZW1zLnB1c2gobmV3SXRlbSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcHJvY2Vzc2VkSXRlbXM7XG4gICAgfVxuXG4gICAgYmluZE1hdGNoTWVkaWFMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5tYXRjaE1lZGlhTGlzdGVuZXIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBxdWVyeSA9IHdpbmRvdy5tYXRjaE1lZGlhKGAobWF4LXdpZHRoOiAke3RoaXMuYnJlYWtwb2ludH0pYCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5ID0gcXVlcnk7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeU1hdGNoZXMgPSBxdWVyeS5tYXRjaGVzO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5tYXRjaE1lZGlhTGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucXVlcnlNYXRjaGVzID0gcXVlcnkubWF0Y2hlcztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb2JpbGVBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgcXVlcnkuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdGhpcy5tYXRjaE1lZGlhTGlzdGVuZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdW5iaW5kTWF0Y2hNZWRpYUxpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5tYXRjaE1lZGlhTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMucXVlcnkucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdGhpcy5tYXRjaE1lZGlhTGlzdGVuZXIpO1xuICAgICAgICAgICAgdGhpcy5tYXRjaE1lZGlhTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0SXRlbVByb3AoaXRlbTogYW55LCBuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0gPyByZXNvbHZlKGl0ZW1bbmFtZV0pIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1lbnVCdXR0b25DbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICB0aGlzLnRvZ2dsZShldmVudCk7XG4gICAgfVxuXG4gICAgbWVudUJ1dHRvbktleWRvd24oZXZlbnQ6IGFueSkge1xuICAgICAgICAoZXZlbnQuY29kZSA9PT0gJ0VudGVyJyB8fCBldmVudC5jb2RlID09PSAnU3BhY2UnKSAmJiB0aGlzLm1lbnVCdXR0b25DbGljayhldmVudCk7XG4gICAgfVxuXG4gICAgb25JdGVtQ2xpY2soZXZlbnQ6IGFueSkge1xuICAgICAgICBjb25zdCB7IG9yaWdpbmFsRXZlbnQsIHByb2Nlc3NlZEl0ZW0gfSA9IGV2ZW50O1xuICAgICAgICBjb25zdCBncm91cGVkID0gdGhpcy5pc1Byb2Nlc3NlZEl0ZW1Hcm91cChwcm9jZXNzZWRJdGVtKTtcbiAgICAgICAgY29uc3Qgcm9vdCA9IGlzRW1wdHkocHJvY2Vzc2VkSXRlbS5wYXJlbnQpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuaXNTZWxlY3RlZChwcm9jZXNzZWRJdGVtKTtcblxuICAgICAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgaW5kZXgsIGtleSwgbGV2ZWwsIHBhcmVudEtleSwgaXRlbSB9ID0gcHJvY2Vzc2VkSXRlbTtcblxuICAgICAgICAgICAgdGhpcy5hY3RpdmVJdGVtUGF0aC5zZXQodGhpcy5hY3RpdmVJdGVtUGF0aCgpLmZpbHRlcigocCkgPT4ga2V5ICE9PSBwLmtleSAmJiBrZXkuc3RhcnRzV2l0aChwLmtleSkpKTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZEl0ZW1JbmZvLnNldCh7IGluZGV4LCBsZXZlbCwgcGFyZW50S2V5LCBpdGVtIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmRpcnR5ID0gIXJvb3Q7XG4gICAgICAgICAgICBmb2N1cyh0aGlzLnJvb3RtZW51Lm1lbnViYXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoZ3JvdXBlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25JdGVtQ2hhbmdlKGV2ZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm9vdFByb2Nlc3NlZEl0ZW0gPSByb290ID8gcHJvY2Vzc2VkSXRlbSA6IHRoaXMuYWN0aXZlSXRlbVBhdGgoKS5maW5kKChwKSA9PiBwLnBhcmVudEtleSA9PT0gJycpO1xuICAgICAgICAgICAgICAgIHRoaXMuaGlkZShvcmlnaW5hbEV2ZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRJdGVtSW5kZXgob3JpZ2luYWxFdmVudCwgcm9vdFByb2Nlc3NlZEl0ZW0gPyByb290UHJvY2Vzc2VkSXRlbS5pbmRleCA6IC0xKTtcblxuICAgICAgICAgICAgICAgIHRoaXMubW9iaWxlQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgZm9jdXModGhpcy5yb290bWVudS5tZW51YmFyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JdGVtTW91c2VFbnRlcihldmVudDogYW55KSB7XG4gICAgICAgIGlmICghaXNUb3VjaERldmljZSgpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMubW9iaWxlQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UoZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hhbmdlRm9jdXNlZEl0ZW1JbmRleChldmVudDogYW55LCBpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHByb2Nlc3NlZEl0ZW0gPSB0aGlzLmZpbmRWaXNpYmxlSXRlbShpbmRleCk7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4ICE9PSBpbmRleCkge1xuICAgICAgICAgICAgY29uc3QgZm9jdXNlZEl0ZW1JbmZvID0gdGhpcy5mb2N1c2VkSXRlbUluZm8oKTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZEl0ZW1JbmZvLnNldCh7IC4uLmZvY3VzZWRJdGVtSW5mbywgaXRlbTogcHJvY2Vzc2VkSXRlbS5pdGVtLCBpbmRleCB9KTtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsSW5WaWV3KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzY3JvbGxJblZpZXcoaW5kZXg6IG51bWJlciA9IC0xKSB7XG4gICAgICAgIGNvbnN0IGlkID0gaW5kZXggIT09IC0xID8gYCR7dGhpcy5pZH1fJHtpbmRleH1gIDogdGhpcy5mb2N1c2VkSXRlbUlkO1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZmluZFNpbmdsZSh0aGlzLnJvb3RtZW51LmVsLm5hdGl2ZUVsZW1lbnQsIGBsaVtpZD1cIiR7aWR9XCJdYCk7XG5cbiAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcgJiYgZWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnbmVhcmVzdCcsIGlubGluZTogJ25lYXJlc3QnIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JdGVtQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgY29uc3QgeyBwcm9jZXNzZWRJdGVtLCBpc0ZvY3VzIH0gPSBldmVudDtcblxuICAgICAgICBpZiAoaXNFbXB0eShwcm9jZXNzZWRJdGVtKSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHsgaW5kZXgsIGtleSwgbGV2ZWwsIHBhcmVudEtleSwgaXRlbXMsIGl0ZW0gfSA9IHByb2Nlc3NlZEl0ZW07XG4gICAgICAgIGNvbnN0IGdyb3VwZWQgPSBpc05vdEVtcHR5KGl0ZW1zKTtcbiAgICAgICAgY29uc3QgYWN0aXZlSXRlbVBhdGggPSB0aGlzLmFjdGl2ZUl0ZW1QYXRoKCkuZmlsdGVyKChwKSA9PiBwLnBhcmVudEtleSAhPT0gcGFyZW50S2V5ICYmIHAucGFyZW50S2V5ICE9PSBrZXkpO1xuXG4gICAgICAgIGdyb3VwZWQgJiYgYWN0aXZlSXRlbVBhdGgucHVzaChwcm9jZXNzZWRJdGVtKTtcbiAgICAgICAgdGhpcy5mb2N1c2VkSXRlbUluZm8uc2V0KHsgaW5kZXgsIGxldmVsLCBwYXJlbnRLZXksIGl0ZW0gfSk7XG4gICAgICAgIHRoaXMuYWN0aXZlSXRlbVBhdGguc2V0KGFjdGl2ZUl0ZW1QYXRoKTtcblxuICAgICAgICBncm91cGVkICYmICh0aGlzLmRpcnR5ID0gdHJ1ZSk7XG4gICAgICAgIGlzRm9jdXMgJiYgZm9jdXModGhpcy5yb290bWVudS5tZW51YmFyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIHRvZ2dsZShldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5tb2JpbGVBY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMubW9iaWxlQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICBaSW5kZXhVdGlscy5jbGVhcih0aGlzLnJvb3RtZW51LmVsLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1vYmlsZUFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICBaSW5kZXhVdGlscy5zZXQoJ21lbnUnLCB0aGlzLnJvb3RtZW51LmVsLm5hdGl2ZUVsZW1lbnQsIHRoaXMuY29uZmlnLnpJbmRleC5tZW51KTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvdygpO1xuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmJpbmRPdXRzaWRlQ2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIGhpZGUoZXZlbnQ/LCBpc0ZvY3VzPzogYm9vbGVhbikge1xuICAgICAgICBpZiAodGhpcy5tb2JpbGVBY3RpdmUpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGZvY3VzKHRoaXMubWVudWJ1dHRvbi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hY3RpdmVJdGVtUGF0aC5zZXQoW10pO1xuICAgICAgICB0aGlzLmZvY3VzZWRJdGVtSW5mby5zZXQoeyBpbmRleDogLTEsIGxldmVsOiAwLCBwYXJlbnRLZXk6ICcnLCBpdGVtOiBudWxsIH0pO1xuXG4gICAgICAgIGlzRm9jdXMgJiYgZm9jdXModGhpcy5yb290bWVudT8ubWVudWJhclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgdGhpcy5kaXJ0eSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHNob3coKSB7XG4gICAgICAgIGNvbnN0IHByb2Nlc3NlZEl0ZW0gPSB0aGlzLmZpbmRWaXNpYmxlSXRlbSh0aGlzLmZpbmRGaXJzdEZvY3VzZWRJdGVtSW5kZXgoKSk7XG4gICAgICAgIHRoaXMuZm9jdXNlZEl0ZW1JbmZvLnNldCh7IGluZGV4OiB0aGlzLmZpbmRGaXJzdEZvY3VzZWRJdGVtSW5kZXgoKSwgbGV2ZWw6IDAsIHBhcmVudEtleTogJycsIGl0ZW06IHByb2Nlc3NlZEl0ZW0/Lml0ZW0gfSk7XG4gICAgICAgIGZvY3VzKHRoaXMucm9vdG1lbnU/Lm1lbnViYXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgb25NZW51Rm9jdXMoZXZlbnQ6IGFueSkge1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xuICAgICAgICBjb25zdCBwcm9jZXNzZWRJdGVtID0gdGhpcy5maW5kVmlzaWJsZUl0ZW0odGhpcy5maW5kRmlyc3RGb2N1c2VkSXRlbUluZGV4KCkpO1xuICAgICAgICBjb25zdCBmb2N1c2VkSXRlbUluZm8gPSB0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4ICE9PSAtMSA/IHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkgOiB7IGluZGV4OiB0aGlzLmZpbmRGaXJzdEZvY3VzZWRJdGVtSW5kZXgoKSwgbGV2ZWw6IDAsIHBhcmVudEtleTogJycsIGl0ZW06IHByb2Nlc3NlZEl0ZW0/Lml0ZW0gfTtcblxuICAgICAgICB0aGlzLmZvY3VzZWRJdGVtSW5mby5zZXQoZm9jdXNlZEl0ZW1JbmZvKTtcbiAgICAgICAgdGhpcy5vbkZvY3VzLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uTWVudUJsdXIoZXZlbnQ6IGFueSkge1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mb2N1c2VkSXRlbUluZm8uc2V0KHsgaW5kZXg6IC0xLCBsZXZlbDogMCwgcGFyZW50S2V5OiAnJywgaXRlbTogbnVsbCB9KTtcbiAgICAgICAgdGhpcy5zZWFyY2hWYWx1ZSA9ICcnO1xuICAgICAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XG4gICAgICAgIHRoaXMub25CbHVyLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBjb25zdCBtZXRhS2V5ID0gZXZlbnQubWV0YUtleSB8fCBldmVudC5jdHJsS2V5O1xuXG4gICAgICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uQXJyb3dEb3duS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkFycm93VXBLZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICAgICAgICAgIHRoaXMub25BcnJvd0xlZnRLZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uQXJyb3dSaWdodEtleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0hvbWUnOlxuICAgICAgICAgICAgICAgIHRoaXMub25Ib21lS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnRW5kJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uRW5kS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnU3BhY2UnOlxuICAgICAgICAgICAgICAgIHRoaXMub25TcGFjZUtleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uRW50ZXJLZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICAgICAgICAgIHRoaXMub25Fc2NhcGVLZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdUYWInOlxuICAgICAgICAgICAgICAgIHRoaXMub25UYWJLZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdQYWdlRG93bic6XG4gICAgICAgICAgICBjYXNlICdQYWdlVXAnOlxuICAgICAgICAgICAgY2FzZSAnQmFja3NwYWNlJzpcbiAgICAgICAgICAgIGNhc2UgJ1NoaWZ0TGVmdCc6XG4gICAgICAgICAgICBjYXNlICdTaGlmdFJpZ2h0JzpcbiAgICAgICAgICAgICAgICAvL05PT1BcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpZiAoIW1ldGFLZXkgJiYgaXNQcmludGFibGVDaGFyYWN0ZXIoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaEl0ZW1zKGV2ZW50LCBldmVudC5rZXkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluZFZpc2libGVJdGVtKGluZGV4KSB7XG4gICAgICAgIHJldHVybiBpc05vdEVtcHR5KHRoaXMudmlzaWJsZUl0ZW1zKSA/IHRoaXMudmlzaWJsZUl0ZW1zW2luZGV4XSA6IG51bGw7XG4gICAgfVxuXG4gICAgZmluZEZpcnN0Rm9jdXNlZEl0ZW1JbmRleCgpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IHRoaXMuZmluZFNlbGVjdGVkSXRlbUluZGV4KCk7XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkSW5kZXggPCAwID8gdGhpcy5maW5kRmlyc3RJdGVtSW5kZXgoKSA6IHNlbGVjdGVkSW5kZXg7XG4gICAgfVxuXG4gICAgZmluZEZpcnN0SXRlbUluZGV4KCkge1xuICAgICAgICByZXR1cm4gdGhpcy52aXNpYmxlSXRlbXMuZmluZEluZGV4KChwcm9jZXNzZWRJdGVtKSA9PiB0aGlzLmlzVmFsaWRJdGVtKHByb2Nlc3NlZEl0ZW0pKTtcbiAgICB9XG5cbiAgICBmaW5kU2VsZWN0ZWRJdGVtSW5kZXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpc2libGVJdGVtcy5maW5kSW5kZXgoKHByb2Nlc3NlZEl0ZW0pID0+IHRoaXMuaXNWYWxpZFNlbGVjdGVkSXRlbShwcm9jZXNzZWRJdGVtKSk7XG4gICAgfVxuXG4gICAgaXNQcm9jZXNzZWRJdGVtR3JvdXAocHJvY2Vzc2VkSXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzZWRJdGVtICYmIGlzTm90RW1wdHkocHJvY2Vzc2VkSXRlbS5pdGVtcyk7XG4gICAgfVxuXG4gICAgaXNTZWxlY3RlZChwcm9jZXNzZWRJdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlSXRlbVBhdGgoKS5zb21lKChwKSA9PiBwLmtleSA9PT0gcHJvY2Vzc2VkSXRlbS5rZXkpO1xuICAgIH1cblxuICAgIGlzVmFsaWRTZWxlY3RlZEl0ZW0ocHJvY2Vzc2VkSXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWRJdGVtKHByb2Nlc3NlZEl0ZW0pICYmIHRoaXMuaXNTZWxlY3RlZChwcm9jZXNzZWRJdGVtKTtcbiAgICB9XG5cbiAgICBpc1ZhbGlkSXRlbShwcm9jZXNzZWRJdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhcHJvY2Vzc2VkSXRlbSAmJiAhdGhpcy5pc0l0ZW1EaXNhYmxlZChwcm9jZXNzZWRJdGVtLml0ZW0pICYmICF0aGlzLmlzSXRlbVNlcGFyYXRvcihwcm9jZXNzZWRJdGVtLml0ZW0pO1xuICAgIH1cblxuICAgIGlzSXRlbURpc2FibGVkKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRJdGVtUHJvcChpdGVtLCAnZGlzYWJsZWQnKTtcbiAgICB9XG5cbiAgICBpc0l0ZW1TZXBhcmF0b3IoaXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEl0ZW1Qcm9wKGl0ZW0sICdzZXBhcmF0b3InKTtcbiAgICB9XG5cbiAgICBpc0l0ZW1NYXRjaGVkKHByb2Nlc3NlZEl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkSXRlbShwcm9jZXNzZWRJdGVtKSAmJiB0aGlzLmdldFByb2NjZXNzZWRJdGVtTGFiZWwocHJvY2Vzc2VkSXRlbSkudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKHRoaXMuc2VhcmNoVmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKSk7XG4gICAgfVxuXG4gICAgaXNQcm9jY2Vzc2VkSXRlbUdyb3VwKHByb2Nlc3NlZEl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gcHJvY2Vzc2VkSXRlbSAmJiBpc05vdEVtcHR5KHByb2Nlc3NlZEl0ZW0uaXRlbXMpO1xuICAgIH1cblxuICAgIHNlYXJjaEl0ZW1zKGV2ZW50OiBhbnksIGNoYXI6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNlYXJjaFZhbHVlID0gKHRoaXMuc2VhcmNoVmFsdWUgfHwgJycpICsgY2hhcjtcblxuICAgICAgICBsZXQgaXRlbUluZGV4ID0gLTE7XG4gICAgICAgIGxldCBtYXRjaGVkID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBpdGVtSW5kZXggPSB0aGlzLnZpc2libGVJdGVtcy5zbGljZSh0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4KS5maW5kSW5kZXgoKHByb2Nlc3NlZEl0ZW0pID0+IHRoaXMuaXNJdGVtTWF0Y2hlZChwcm9jZXNzZWRJdGVtKSk7XG4gICAgICAgICAgICBpdGVtSW5kZXggPSBpdGVtSW5kZXggPT09IC0xID8gdGhpcy52aXNpYmxlSXRlbXMuc2xpY2UoMCwgdGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleCkuZmluZEluZGV4KChwcm9jZXNzZWRJdGVtKSA9PiB0aGlzLmlzSXRlbU1hdGNoZWQocHJvY2Vzc2VkSXRlbSkpIDogaXRlbUluZGV4ICsgdGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGl0ZW1JbmRleCA9IHRoaXMudmlzaWJsZUl0ZW1zLmZpbmRJbmRleCgocHJvY2Vzc2VkSXRlbSkgPT4gdGhpcy5pc0l0ZW1NYXRjaGVkKHByb2Nlc3NlZEl0ZW0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBtYXRjaGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtSW5kZXggPT09IC0xICYmIHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICBpdGVtSW5kZXggPSB0aGlzLmZpbmRGaXJzdEZvY3VzZWRJdGVtSW5kZXgoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRJdGVtSW5kZXgoZXZlbnQsIGl0ZW1JbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zZWFyY2hUaW1lb3V0KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zZWFyY2hUaW1lb3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VhcmNoVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hWYWx1ZSA9ICcnO1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hUaW1lb3V0ID0gbnVsbDtcbiAgICAgICAgfSwgNTAwKTtcblxuICAgICAgICByZXR1cm4gbWF0Y2hlZDtcbiAgICB9XG5cbiAgICBnZXRQcm9jY2Vzc2VkSXRlbUxhYmVsKHByb2Nlc3NlZEl0ZW06IGFueSkge1xuICAgICAgICByZXR1cm4gcHJvY2Vzc2VkSXRlbSA/IHRoaXMuZ2V0SXRlbUxhYmVsKHByb2Nlc3NlZEl0ZW0uaXRlbSkgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZ2V0SXRlbUxhYmVsKGl0ZW06IGFueSkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRJdGVtUHJvcChpdGVtLCAnbGFiZWwnKTtcbiAgICB9XG5cbiAgICBvbkFycm93RG93bktleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBjb25zdCBwcm9jZXNzZWRJdGVtID0gdGhpcy52aXNpYmxlSXRlbXNbdGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleF07XG4gICAgICAgIGNvbnN0IHJvb3QgPSBwcm9jZXNzZWRJdGVtID8gaXNFbXB0eShwcm9jZXNzZWRJdGVtLnBhcmVudCkgOiBudWxsO1xuXG4gICAgICAgIGlmIChyb290KSB7XG4gICAgICAgICAgICBjb25zdCBncm91cGVkID0gdGhpcy5pc1Byb2NjZXNzZWRJdGVtR3JvdXAocHJvY2Vzc2VkSXRlbSk7XG5cbiAgICAgICAgICAgIGlmIChncm91cGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgcHJvY2Vzc2VkSXRlbSB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzZWRJdGVtSW5mby5zZXQoeyBpbmRleDogLTEsIHBhcmVudEtleTogcHJvY2Vzc2VkSXRlbS5rZXksIGl0ZW06IHByb2Nlc3NlZEl0ZW0uaXRlbSB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQXJyb3dSaWdodEtleShldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4ICE9PSAtMSA/IHRoaXMuZmluZE5leHRJdGVtSW5kZXgodGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleCkgOiB0aGlzLmZpbmRGaXJzdEZvY3VzZWRJdGVtSW5kZXgoKTtcblxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VGb2N1c2VkSXRlbUluZGV4KGV2ZW50LCBpdGVtSW5kZXgpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQXJyb3dSaWdodEtleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBjb25zdCBwcm9jZXNzZWRJdGVtID0gdGhpcy52aXNpYmxlSXRlbXNbdGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleF07XG4gICAgICAgIGNvbnN0IHBhcmVudEl0ZW0gPSBwcm9jZXNzZWRJdGVtID8gdGhpcy5hY3RpdmVJdGVtUGF0aCgpLmZpbmQoKHApID0+IHAua2V5ID09PSBwcm9jZXNzZWRJdGVtLnBhcmVudEtleSkgOiBudWxsO1xuXG4gICAgICAgIGlmIChwYXJlbnRJdGVtKSB7XG4gICAgICAgICAgICBjb25zdCBncm91cGVkID0gdGhpcy5pc1Byb2NjZXNzZWRJdGVtR3JvdXAocHJvY2Vzc2VkSXRlbSk7XG5cbiAgICAgICAgICAgIGlmIChncm91cGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgcHJvY2Vzc2VkSXRlbSB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzZWRJdGVtSW5mby5zZXQoeyBpbmRleDogLTEsIHBhcmVudEtleTogcHJvY2Vzc2VkSXRlbS5rZXksIGl0ZW06IHByb2Nlc3NlZEl0ZW0uaXRlbSB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQXJyb3dEb3duS2V5KGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXggIT09IC0xID8gdGhpcy5maW5kTmV4dEl0ZW1JbmRleCh0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4KSA6IHRoaXMuZmluZEZpcnN0Rm9jdXNlZEl0ZW1JbmRleCgpO1xuXG4gICAgICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRJdGVtSW5kZXgoZXZlbnQsIGl0ZW1JbmRleCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25BcnJvd1VwS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHByb2Nlc3NlZEl0ZW0gPSB0aGlzLnZpc2libGVJdGVtc1t0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4XTtcbiAgICAgICAgY29uc3Qgcm9vdCA9IGlzRW1wdHkocHJvY2Vzc2VkSXRlbS5wYXJlbnQpO1xuXG4gICAgICAgIGlmIChyb290KSB7XG4gICAgICAgICAgICBjb25zdCBncm91cGVkID0gdGhpcy5pc1Byb2NjZXNzZWRJdGVtR3JvdXAocHJvY2Vzc2VkSXRlbSk7XG5cbiAgICAgICAgICAgIGlmIChncm91cGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgcHJvY2Vzc2VkSXRlbSB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzZWRJdGVtSW5mby5zZXQoeyBpbmRleDogLTEsIHBhcmVudEtleTogcHJvY2Vzc2VkSXRlbS5rZXksIGl0ZW06IHByb2Nlc3NlZEl0ZW0uaXRlbSB9KTtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmZpbmRMYXN0SXRlbUluZGV4KCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRJdGVtSW5kZXgoZXZlbnQsIGl0ZW1JbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRJdGVtID0gdGhpcy5hY3RpdmVJdGVtUGF0aCgpLmZpbmQoKHApID0+IHAua2V5ID09PSBwcm9jZXNzZWRJdGVtLnBhcmVudEtleSk7XG4gICAgICAgICAgICBpZiAodGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNlZEl0ZW1JbmZvLnNldCh7IGluZGV4OiAtMSwgcGFyZW50S2V5OiBwYXJlbnRJdGVtID8gcGFyZW50SXRlbS5wYXJlbnRLZXkgOiAnJywgaXRlbTogcHJvY2Vzc2VkSXRlbS5pdGVtIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoVmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICB0aGlzLm9uQXJyb3dMZWZ0S2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmVJdGVtUGF0aCA9IHRoaXMuYWN0aXZlSXRlbVBhdGgoKS5maWx0ZXIoKHApID0+IHAucGFyZW50S2V5ICE9PSB0aGlzLmZvY3VzZWRJdGVtSW5mbygpLnBhcmVudEtleSk7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVJdGVtUGF0aC5zZXQoYWN0aXZlSXRlbVBhdGgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4ICE9PSAtMSA/IHRoaXMuZmluZFByZXZJdGVtSW5kZXgodGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleCkgOiB0aGlzLmZpbmRMYXN0Rm9jdXNlZEl0ZW1JbmRleCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRm9jdXNlZEl0ZW1JbmRleChldmVudCwgaXRlbUluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25BcnJvd0xlZnRLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgY29uc3QgcHJvY2Vzc2VkSXRlbSA9IHRoaXMudmlzaWJsZUl0ZW1zW3RoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXhdO1xuICAgICAgICBjb25zdCBwYXJlbnRJdGVtID0gcHJvY2Vzc2VkSXRlbSA/IHRoaXMuYWN0aXZlSXRlbVBhdGgoKS5maW5kKChwKSA9PiBwLmtleSA9PT0gcHJvY2Vzc2VkSXRlbS5wYXJlbnRLZXkpIDogbnVsbDtcblxuICAgICAgICBpZiAocGFyZW50SXRlbSkge1xuICAgICAgICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgcHJvY2Vzc2VkSXRlbTogcGFyZW50SXRlbSB9KTtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUl0ZW1QYXRoID0gdGhpcy5hY3RpdmVJdGVtUGF0aCgpLmZpbHRlcigocCkgPT4gcC5wYXJlbnRLZXkgIT09IHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkucGFyZW50S2V5KTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlSXRlbVBhdGguc2V0KGFjdGl2ZUl0ZW1QYXRoKTtcblxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXggIT09IC0xID8gdGhpcy5maW5kUHJldkl0ZW1JbmRleCh0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4KSA6IHRoaXMuZmluZExhc3RGb2N1c2VkSXRlbUluZGV4KCk7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRJdGVtSW5kZXgoZXZlbnQsIGl0ZW1JbmRleCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Ib21lS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHRoaXMuY2hhbmdlRm9jdXNlZEl0ZW1JbmRleChldmVudCwgdGhpcy5maW5kRmlyc3RJdGVtSW5kZXgoKSk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25FbmRLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VGb2N1c2VkSXRlbUluZGV4KGV2ZW50LCB0aGlzLmZpbmRMYXN0SXRlbUluZGV4KCkpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uU3BhY2VLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5vbkVudGVyS2V5KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbkVzY2FwZUtleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLmhpZGUoZXZlbnQsIHRydWUpO1xuICAgICAgICB0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4ID0gdGhpcy5maW5kRmlyc3RGb2N1c2VkSXRlbUluZGV4KCk7XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvblRhYktleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NlZEl0ZW0gPSB0aGlzLnZpc2libGVJdGVtc1t0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4XTtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwZWQgPSB0aGlzLmlzUHJvY2Nlc3NlZEl0ZW1Hcm91cChwcm9jZXNzZWRJdGVtKTtcblxuICAgICAgICAgICAgIWdyb3VwZWQgJiYgdGhpcy5vbkl0ZW1DaGFuZ2UoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgcHJvY2Vzc2VkSXRlbSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cblxuICAgIG9uRW50ZXJLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gPGFueT5maW5kU2luZ2xlKHRoaXMucm9vdG1lbnUuZWwubmF0aXZlRWxlbWVudCwgYGxpW2lkPVwiJHtgJHt0aGlzLmZvY3VzZWRJdGVtSWR9YH1cIl1gKTtcbiAgICAgICAgICAgIGNvbnN0IGFuY2hvckVsZW1lbnQgPSBlbGVtZW50ICYmIDxhbnk+ZmluZFNpbmdsZShlbGVtZW50LCAnYVtkYXRhLXBjLXNlY3Rpb249XCJhY3Rpb25cIl0nKTtcblxuICAgICAgICAgICAgYW5jaG9yRWxlbWVudCA/IGFuY2hvckVsZW1lbnQuY2xpY2soKSA6IGVsZW1lbnQgJiYgZWxlbWVudC5jbGljaygpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBmaW5kTGFzdEZvY3VzZWRJdGVtSW5kZXgoKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSB0aGlzLmZpbmRTZWxlY3RlZEl0ZW1JbmRleCgpO1xuICAgICAgICByZXR1cm4gc2VsZWN0ZWRJbmRleCA8IDAgPyB0aGlzLmZpbmRMYXN0SXRlbUluZGV4KCkgOiBzZWxlY3RlZEluZGV4O1xuICAgIH1cblxuICAgIGZpbmRMYXN0SXRlbUluZGV4KCkge1xuICAgICAgICByZXR1cm4gZmluZExhc3RJbmRleCh0aGlzLnZpc2libGVJdGVtcywgKHByb2Nlc3NlZEl0ZW0pID0+IHRoaXMuaXNWYWxpZEl0ZW0ocHJvY2Vzc2VkSXRlbSkpO1xuICAgIH1cblxuICAgIGZpbmRQcmV2SXRlbUluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgbWF0Y2hlZEl0ZW1JbmRleCA9IGluZGV4ID4gMCA/IGZpbmRMYXN0SW5kZXgodGhpcy52aXNpYmxlSXRlbXMuc2xpY2UoMCwgaW5kZXgpLCAocHJvY2Vzc2VkSXRlbSkgPT4gdGhpcy5pc1ZhbGlkSXRlbShwcm9jZXNzZWRJdGVtKSkgOiAtMTtcblxuICAgICAgICByZXR1cm4gbWF0Y2hlZEl0ZW1JbmRleCA+IC0xID8gbWF0Y2hlZEl0ZW1JbmRleCA6IGluZGV4O1xuICAgIH1cblxuICAgIGZpbmROZXh0SXRlbUluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgbWF0Y2hlZEl0ZW1JbmRleCA9IGluZGV4IDwgdGhpcy52aXNpYmxlSXRlbXMubGVuZ3RoIC0gMSA/IHRoaXMudmlzaWJsZUl0ZW1zLnNsaWNlKGluZGV4ICsgMSkuZmluZEluZGV4KChwcm9jZXNzZWRJdGVtKSA9PiB0aGlzLmlzVmFsaWRJdGVtKHByb2Nlc3NlZEl0ZW0pKSA6IC0xO1xuXG4gICAgICAgIHJldHVybiBtYXRjaGVkSXRlbUluZGV4ID4gLTEgPyBtYXRjaGVkSXRlbUluZGV4ICsgaW5kZXggKyAxIDogaW5kZXg7XG4gICAgfVxuXG4gICAgYmluZFJlc2l6ZUxpc3RlbmVyKCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnJlc2l6ZUxpc3RlbmVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNpemVMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXcsICdyZXNpemUnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RvdWNoRGV2aWNlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZShldmVudCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vYmlsZUFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgYmluZE91dHNpZGVDbGlja0xpc3RlbmVyKCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLm91dHNpZGVDbGlja0xpc3RlbmVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vdXRzaWRlQ2xpY2tMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuZG9jdW1lbnQsICdjbGljaycsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc091dHNpZGVDb250YWluZXIgPSB0aGlzLnJvb3RtZW51LmVsLm5hdGl2ZUVsZW1lbnQgIT09IGV2ZW50LnRhcmdldCAmJiAhdGhpcy5yb290bWVudS5lbC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzT3V0c2lkZU1lbnVCdXR0b24gPSB0aGlzLm1vYmlsZUFjdGl2ZSAmJiB0aGlzLm1lbnVidXR0b24ubmF0aXZlRWxlbWVudCAhPT0gZXZlbnQudGFyZ2V0ICYmICF0aGlzLm1lbnVidXR0b24ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc091dHNpZGVDb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzT3V0c2lkZU1lbnVCdXR0b24gPyAodGhpcy5tb2JpbGVBY3RpdmUgPSBmYWxzZSkgOiB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdW5iaW5kT3V0c2lkZUNsaWNrTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLm91dHNpZGVDbGlja0xpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLm91dHNpZGVDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLm91dHNpZGVDbGlja0xpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZFJlc2l6ZUxpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5yZXNpemVMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5yZXNpemVMaXN0ZW5lcigpO1xuICAgICAgICAgICAgdGhpcy5yZXNpemVMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5tb3VzZUxlYXZlU3Vic2NyaWJlcj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy51bmJpbmRPdXRzaWRlQ2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLnVuYmluZFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMudW5iaW5kTWF0Y2hNZWRpYUxpc3RlbmVyKCk7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtNZW51YmFyLCBTaGFyZWRNb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtNZW51YmFyLCBTaGFyZWRNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIE1lbnViYXJNb2R1bGUge31cbiJdfQ==