primeng 18.0.0 → 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 (1077) hide show
  1. package/base/style/basestyle.d.ts +11 -11
  2. package/fesm2022/primeng-accordion.mjs +12 -12
  3. package/fesm2022/primeng-accordion.mjs.map +1 -1
  4. package/fesm2022/primeng-animateonscroll.mjs +1 -1
  5. package/fesm2022/primeng-animateonscroll.mjs.map +1 -1
  6. package/fesm2022/primeng-api.mjs +5 -5
  7. package/fesm2022/primeng-api.mjs.map +1 -1
  8. package/fesm2022/primeng-autocomplete.mjs +2 -2
  9. package/fesm2022/primeng-autocomplete.mjs.map +1 -1
  10. package/fesm2022/primeng-autofocus.mjs +1 -1
  11. package/fesm2022/primeng-autofocus.mjs.map +1 -1
  12. package/fesm2022/primeng-avatar.mjs +2 -2
  13. package/fesm2022/primeng-avatar.mjs.map +1 -1
  14. package/fesm2022/primeng-avatargroup.mjs +2 -2
  15. package/fesm2022/primeng-avatargroup.mjs.map +1 -1
  16. package/fesm2022/primeng-badge.mjs +3 -3
  17. package/fesm2022/primeng-badge.mjs.map +1 -1
  18. package/fesm2022/primeng-basecomponent.mjs +1 -1
  19. package/fesm2022/primeng-basecomponent.mjs.map +1 -1
  20. package/fesm2022/primeng-blockui.mjs +2 -2
  21. package/fesm2022/primeng-blockui.mjs.map +1 -1
  22. package/fesm2022/primeng-breadcrumb.mjs +2 -2
  23. package/fesm2022/primeng-breadcrumb.mjs.map +1 -1
  24. package/fesm2022/primeng-button.mjs +5 -5
  25. package/fesm2022/primeng-button.mjs.map +1 -1
  26. package/fesm2022/primeng-buttongroup.mjs +2 -2
  27. package/fesm2022/primeng-buttongroup.mjs.map +1 -1
  28. package/fesm2022/primeng-calendar.mjs +2 -2
  29. package/fesm2022/primeng-calendar.mjs.map +1 -1
  30. package/fesm2022/primeng-card.mjs +2 -2
  31. package/fesm2022/primeng-card.mjs.map +1 -1
  32. package/fesm2022/primeng-carousel.mjs +2 -2
  33. package/fesm2022/primeng-carousel.mjs.map +1 -1
  34. package/fesm2022/primeng-cascadeselect.mjs +6 -6
  35. package/fesm2022/primeng-cascadeselect.mjs.map +1 -1
  36. package/fesm2022/primeng-chart.mjs +2 -2
  37. package/fesm2022/primeng-chart.mjs.map +1 -1
  38. package/fesm2022/primeng-checkbox.mjs +3 -4
  39. package/fesm2022/primeng-checkbox.mjs.map +1 -1
  40. package/fesm2022/primeng-chip.mjs +2 -2
  41. package/fesm2022/primeng-chip.mjs.map +1 -1
  42. package/fesm2022/primeng-colorpicker.mjs +2 -2
  43. package/fesm2022/primeng-colorpicker.mjs.map +1 -1
  44. package/fesm2022/primeng-config.mjs +1 -1
  45. package/fesm2022/primeng-config.mjs.map +1 -1
  46. package/fesm2022/primeng-confirmdialog.mjs +4 -6
  47. package/fesm2022/primeng-confirmdialog.mjs.map +1 -1
  48. package/fesm2022/primeng-confirmpopup.mjs +2 -2
  49. package/fesm2022/primeng-confirmpopup.mjs.map +1 -1
  50. package/fesm2022/primeng-contextmenu.mjs +5 -5
  51. package/fesm2022/primeng-contextmenu.mjs.map +1 -1
  52. package/fesm2022/primeng-dataview.mjs +2 -2
  53. package/fesm2022/primeng-dataview.mjs.map +1 -1
  54. package/fesm2022/primeng-datepicker.mjs +2 -2
  55. package/fesm2022/primeng-datepicker.mjs.map +1 -1
  56. package/fesm2022/primeng-defer.mjs +1 -1
  57. package/fesm2022/primeng-dialog.mjs +3 -4
  58. package/fesm2022/primeng-dialog.mjs.map +1 -1
  59. package/fesm2022/primeng-divider.mjs +2 -2
  60. package/fesm2022/primeng-divider.mjs.map +1 -1
  61. package/fesm2022/primeng-dock.mjs +3 -4
  62. package/fesm2022/primeng-dock.mjs.map +1 -1
  63. package/fesm2022/primeng-dragdrop.mjs +2 -2
  64. package/fesm2022/primeng-dragdrop.mjs.map +1 -1
  65. package/fesm2022/primeng-drawer.mjs +2 -2
  66. package/fesm2022/primeng-drawer.mjs.map +1 -1
  67. package/fesm2022/primeng-dropdown.mjs +4 -4
  68. package/fesm2022/primeng-dropdown.mjs.map +1 -1
  69. package/fesm2022/primeng-dynamicdialog.mjs +3 -3
  70. package/fesm2022/primeng-dynamicdialog.mjs.map +1 -1
  71. package/fesm2022/primeng-editor.mjs +2 -2
  72. package/fesm2022/primeng-editor.mjs.map +1 -1
  73. package/fesm2022/primeng-fieldset.mjs +2 -2
  74. package/fesm2022/primeng-fieldset.mjs.map +1 -1
  75. package/fesm2022/primeng-fileupload.mjs +3 -4
  76. package/fesm2022/primeng-fileupload.mjs.map +1 -1
  77. package/fesm2022/primeng-floatlabel.mjs +2 -2
  78. package/fesm2022/primeng-floatlabel.mjs.map +1 -1
  79. package/fesm2022/primeng-fluid.mjs +2 -2
  80. package/fesm2022/primeng-fluid.mjs.map +1 -1
  81. package/fesm2022/primeng-focustrap.mjs +1 -1
  82. package/fesm2022/primeng-focustrap.mjs.map +1 -1
  83. package/fesm2022/primeng-galleria.mjs +10 -10
  84. package/fesm2022/primeng-galleria.mjs.map +1 -1
  85. package/fesm2022/primeng-iconfield.mjs +2 -2
  86. package/fesm2022/primeng-iconfield.mjs.map +1 -1
  87. package/fesm2022/primeng-icons-angledoubledown.mjs +2 -2
  88. package/fesm2022/primeng-icons-angledoubledown.mjs.map +1 -1
  89. package/fesm2022/primeng-icons-angledoubleleft.mjs +2 -2
  90. package/fesm2022/primeng-icons-angledoubleleft.mjs.map +1 -1
  91. package/fesm2022/primeng-icons-angledoubleright.mjs +2 -2
  92. package/fesm2022/primeng-icons-angledoubleright.mjs.map +1 -1
  93. package/fesm2022/primeng-icons-angledoubleup.mjs +2 -2
  94. package/fesm2022/primeng-icons-angledoubleup.mjs.map +1 -1
  95. package/fesm2022/primeng-icons-angledown.mjs +2 -2
  96. package/fesm2022/primeng-icons-angledown.mjs.map +1 -1
  97. package/fesm2022/primeng-icons-angleleft.mjs +2 -2
  98. package/fesm2022/primeng-icons-angleleft.mjs.map +1 -1
  99. package/fesm2022/primeng-icons-angleright.mjs +2 -2
  100. package/fesm2022/primeng-icons-angleright.mjs.map +1 -1
  101. package/fesm2022/primeng-icons-angleup.mjs +2 -2
  102. package/fesm2022/primeng-icons-angleup.mjs.map +1 -1
  103. package/fesm2022/primeng-icons-arrowdown.mjs +2 -2
  104. package/fesm2022/primeng-icons-arrowdown.mjs.map +1 -1
  105. package/fesm2022/primeng-icons-arrowdownleft.mjs +2 -2
  106. package/fesm2022/primeng-icons-arrowdownleft.mjs.map +1 -1
  107. package/fesm2022/primeng-icons-arrowdownright.mjs +2 -2
  108. package/fesm2022/primeng-icons-arrowdownright.mjs.map +1 -1
  109. package/fesm2022/primeng-icons-arrowleft.mjs +2 -2
  110. package/fesm2022/primeng-icons-arrowleft.mjs.map +1 -1
  111. package/fesm2022/primeng-icons-arrowright.mjs +2 -2
  112. package/fesm2022/primeng-icons-arrowright.mjs.map +1 -1
  113. package/fesm2022/primeng-icons-arrowup.mjs +2 -2
  114. package/fesm2022/primeng-icons-arrowup.mjs.map +1 -1
  115. package/fesm2022/primeng-icons-ban.mjs +2 -2
  116. package/fesm2022/primeng-icons-ban.mjs.map +1 -1
  117. package/fesm2022/primeng-icons-bars.mjs +2 -2
  118. package/fesm2022/primeng-icons-bars.mjs.map +1 -1
  119. package/fesm2022/primeng-icons-baseicon.mjs +2 -2
  120. package/fesm2022/primeng-icons-baseicon.mjs.map +1 -1
  121. package/fesm2022/primeng-icons-blank.mjs +2 -2
  122. package/fesm2022/primeng-icons-blank.mjs.map +1 -1
  123. package/fesm2022/primeng-icons-calendar.mjs +2 -2
  124. package/fesm2022/primeng-icons-calendar.mjs.map +1 -1
  125. package/fesm2022/primeng-icons-caretleft.mjs +2 -2
  126. package/fesm2022/primeng-icons-caretleft.mjs.map +1 -1
  127. package/fesm2022/primeng-icons-caretright.mjs +2 -2
  128. package/fesm2022/primeng-icons-caretright.mjs.map +1 -1
  129. package/fesm2022/primeng-icons-check.mjs +2 -2
  130. package/fesm2022/primeng-icons-check.mjs.map +1 -1
  131. package/fesm2022/primeng-icons-chevrondown.mjs +2 -2
  132. package/fesm2022/primeng-icons-chevrondown.mjs.map +1 -1
  133. package/fesm2022/primeng-icons-chevronleft.mjs +2 -2
  134. package/fesm2022/primeng-icons-chevronleft.mjs.map +1 -1
  135. package/fesm2022/primeng-icons-chevronright.mjs +2 -2
  136. package/fesm2022/primeng-icons-chevronright.mjs.map +1 -1
  137. package/fesm2022/primeng-icons-chevronup.mjs +2 -2
  138. package/fesm2022/primeng-icons-chevronup.mjs.map +1 -1
  139. package/fesm2022/primeng-icons-exclamationtriangle.mjs +2 -2
  140. package/fesm2022/primeng-icons-exclamationtriangle.mjs.map +1 -1
  141. package/fesm2022/primeng-icons-eye.mjs +2 -2
  142. package/fesm2022/primeng-icons-eye.mjs.map +1 -1
  143. package/fesm2022/primeng-icons-eyeslash.mjs +2 -2
  144. package/fesm2022/primeng-icons-eyeslash.mjs.map +1 -1
  145. package/fesm2022/primeng-icons-filter.mjs +2 -2
  146. package/fesm2022/primeng-icons-filter.mjs.map +1 -1
  147. package/fesm2022/primeng-icons-filterslash.mjs +2 -2
  148. package/fesm2022/primeng-icons-filterslash.mjs.map +1 -1
  149. package/fesm2022/primeng-icons-home.mjs +2 -2
  150. package/fesm2022/primeng-icons-home.mjs.map +1 -1
  151. package/fesm2022/primeng-icons-infocircle.mjs +2 -2
  152. package/fesm2022/primeng-icons-infocircle.mjs.map +1 -1
  153. package/fesm2022/primeng-icons-minus.mjs +2 -2
  154. package/fesm2022/primeng-icons-minus.mjs.map +1 -1
  155. package/fesm2022/primeng-icons-pencil.mjs +2 -2
  156. package/fesm2022/primeng-icons-pencil.mjs.map +1 -1
  157. package/fesm2022/primeng-icons-plus.mjs +2 -2
  158. package/fesm2022/primeng-icons-plus.mjs.map +1 -1
  159. package/fesm2022/primeng-icons-refresh.mjs +2 -2
  160. package/fesm2022/primeng-icons-refresh.mjs.map +1 -1
  161. package/fesm2022/primeng-icons-search.mjs +2 -2
  162. package/fesm2022/primeng-icons-search.mjs.map +1 -1
  163. package/fesm2022/primeng-icons-searchminus.mjs +2 -2
  164. package/fesm2022/primeng-icons-searchminus.mjs.map +1 -1
  165. package/fesm2022/primeng-icons-searchplus.mjs +2 -2
  166. package/fesm2022/primeng-icons-searchplus.mjs.map +1 -1
  167. package/fesm2022/primeng-icons-sortalt.mjs +2 -2
  168. package/fesm2022/primeng-icons-sortalt.mjs.map +1 -1
  169. package/fesm2022/primeng-icons-sortamountdown.mjs +2 -2
  170. package/fesm2022/primeng-icons-sortamountdown.mjs.map +1 -1
  171. package/fesm2022/primeng-icons-sortamountupalt.mjs +2 -2
  172. package/fesm2022/primeng-icons-sortamountupalt.mjs.map +1 -1
  173. package/fesm2022/primeng-icons-spinner.mjs +2 -2
  174. package/fesm2022/primeng-icons-spinner.mjs.map +1 -1
  175. package/fesm2022/primeng-icons-star.mjs +2 -2
  176. package/fesm2022/primeng-icons-star.mjs.map +1 -1
  177. package/fesm2022/primeng-icons-starfill.mjs +2 -2
  178. package/fesm2022/primeng-icons-starfill.mjs.map +1 -1
  179. package/fesm2022/primeng-icons-thlarge.mjs +2 -2
  180. package/fesm2022/primeng-icons-thlarge.mjs.map +1 -1
  181. package/fesm2022/primeng-icons-times.mjs +2 -2
  182. package/fesm2022/primeng-icons-times.mjs.map +1 -1
  183. package/fesm2022/primeng-icons-timescircle.mjs +2 -2
  184. package/fesm2022/primeng-icons-timescircle.mjs.map +1 -1
  185. package/fesm2022/primeng-icons-trash.mjs +2 -2
  186. package/fesm2022/primeng-icons-trash.mjs.map +1 -1
  187. package/fesm2022/primeng-icons-undo.mjs +2 -2
  188. package/fesm2022/primeng-icons-undo.mjs.map +1 -1
  189. package/fesm2022/primeng-icons-upload.mjs +2 -2
  190. package/fesm2022/primeng-icons-upload.mjs.map +1 -1
  191. package/fesm2022/primeng-icons-windowmaximize.mjs +2 -2
  192. package/fesm2022/primeng-icons-windowmaximize.mjs.map +1 -1
  193. package/fesm2022/primeng-icons-windowminimize.mjs +2 -2
  194. package/fesm2022/primeng-icons-windowminimize.mjs.map +1 -1
  195. package/fesm2022/primeng-iftalabel.mjs +2 -2
  196. package/fesm2022/primeng-iftalabel.mjs.map +1 -1
  197. package/fesm2022/primeng-image.mjs +2 -2
  198. package/fesm2022/primeng-image.mjs.map +1 -1
  199. package/fesm2022/primeng-imagecompare.mjs +2 -2
  200. package/fesm2022/primeng-imagecompare.mjs.map +1 -1
  201. package/fesm2022/primeng-inplace.mjs +6 -6
  202. package/fesm2022/primeng-inplace.mjs.map +1 -1
  203. package/fesm2022/primeng-inputgroup.mjs +2 -2
  204. package/fesm2022/primeng-inputgroup.mjs.map +1 -1
  205. package/fesm2022/primeng-inputgroupaddon.mjs +2 -2
  206. package/fesm2022/primeng-inputgroupaddon.mjs.map +1 -1
  207. package/fesm2022/primeng-inputicon.mjs +2 -2
  208. package/fesm2022/primeng-inputicon.mjs.map +1 -1
  209. package/fesm2022/primeng-inputmask.mjs +2 -2
  210. package/fesm2022/primeng-inputmask.mjs.map +1 -1
  211. package/fesm2022/primeng-inputnumber.mjs +3 -4
  212. package/fesm2022/primeng-inputnumber.mjs.map +1 -1
  213. package/fesm2022/primeng-inputotp.mjs +2 -2
  214. package/fesm2022/primeng-inputotp.mjs.map +1 -1
  215. package/fesm2022/primeng-inputswitch.mjs +2 -2
  216. package/fesm2022/primeng-inputswitch.mjs.map +1 -1
  217. package/fesm2022/primeng-inputtext.mjs +1 -1
  218. package/fesm2022/primeng-inputtext.mjs.map +1 -1
  219. package/fesm2022/primeng-inputtextarea.mjs +1 -1
  220. package/fesm2022/primeng-inputtextarea.mjs.map +1 -1
  221. package/fesm2022/primeng-keyfilter.mjs +1 -1
  222. package/fesm2022/primeng-keyfilter.mjs.map +1 -1
  223. package/fesm2022/primeng-knob.mjs +2 -2
  224. package/fesm2022/primeng-knob.mjs.map +1 -1
  225. package/fesm2022/primeng-listbox.mjs +2 -2
  226. package/fesm2022/primeng-listbox.mjs.map +1 -1
  227. package/fesm2022/primeng-megamenu.mjs +5 -5
  228. package/fesm2022/primeng-megamenu.mjs.map +1 -1
  229. package/fesm2022/primeng-menu.mjs +6 -6
  230. package/fesm2022/primeng-menu.mjs.map +1 -1
  231. package/fesm2022/primeng-menubar.mjs +6 -6
  232. package/fesm2022/primeng-menubar.mjs.map +1 -1
  233. package/fesm2022/primeng-message.mjs +2 -2
  234. package/fesm2022/primeng-message.mjs.map +1 -1
  235. package/fesm2022/primeng-messages.mjs +2 -2
  236. package/fesm2022/primeng-messages.mjs.map +1 -1
  237. package/fesm2022/primeng-metergroup.mjs +4 -4
  238. package/fesm2022/primeng-metergroup.mjs.map +1 -1
  239. package/fesm2022/primeng-multiselect.mjs +6 -6
  240. package/fesm2022/primeng-multiselect.mjs.map +1 -1
  241. package/fesm2022/primeng-orderlist.mjs +4 -4
  242. package/fesm2022/primeng-orderlist.mjs.map +1 -1
  243. package/fesm2022/primeng-organizationchart.mjs +5 -5
  244. package/fesm2022/primeng-organizationchart.mjs.map +1 -1
  245. package/fesm2022/primeng-overlay.mjs +2 -2
  246. package/fesm2022/primeng-overlay.mjs.map +1 -1
  247. package/fesm2022/primeng-overlaybadge.mjs +2 -2
  248. package/fesm2022/primeng-overlaybadge.mjs.map +1 -1
  249. package/fesm2022/primeng-overlaypanel.mjs +6 -3
  250. package/fesm2022/primeng-overlaypanel.mjs.map +1 -1
  251. package/fesm2022/primeng-paginator.mjs +2 -2
  252. package/fesm2022/primeng-paginator.mjs.map +1 -1
  253. package/fesm2022/primeng-panel.mjs +3 -4
  254. package/fesm2022/primeng-panel.mjs.map +1 -1
  255. package/fesm2022/primeng-panelmenu.mjs +9 -9
  256. package/fesm2022/primeng-panelmenu.mjs.map +1 -1
  257. package/fesm2022/primeng-password.mjs +4 -4
  258. package/fesm2022/primeng-password.mjs.map +1 -1
  259. package/fesm2022/primeng-picklist.mjs +5 -33
  260. package/fesm2022/primeng-picklist.mjs.map +1 -1
  261. package/fesm2022/primeng-popover.mjs +8 -7
  262. package/fesm2022/primeng-popover.mjs.map +1 -1
  263. package/fesm2022/primeng-progressbar.mjs +2 -2
  264. package/fesm2022/primeng-progressbar.mjs.map +1 -1
  265. package/fesm2022/primeng-progressspinner.mjs +2 -2
  266. package/fesm2022/primeng-progressspinner.mjs.map +1 -1
  267. package/fesm2022/primeng-radiobutton.mjs +2 -2
  268. package/fesm2022/primeng-radiobutton.mjs.map +1 -1
  269. package/fesm2022/primeng-rating.mjs +4 -4
  270. package/fesm2022/primeng-rating.mjs.map +1 -1
  271. package/fesm2022/primeng-ripple.mjs +1 -1
  272. package/fesm2022/primeng-ripple.mjs.map +1 -1
  273. package/fesm2022/primeng-scroller.mjs +2 -2
  274. package/fesm2022/primeng-scroller.mjs.map +1 -1
  275. package/fesm2022/primeng-scrollpanel.mjs +2 -2
  276. package/fesm2022/primeng-scrollpanel.mjs.map +1 -1
  277. package/fesm2022/primeng-scrolltop.mjs +2 -2
  278. package/fesm2022/primeng-scrolltop.mjs.map +1 -1
  279. package/fesm2022/primeng-select.mjs +5 -5
  280. package/fesm2022/primeng-select.mjs.map +1 -1
  281. package/fesm2022/primeng-selectbutton.mjs +3 -4
  282. package/fesm2022/primeng-selectbutton.mjs.map +1 -1
  283. package/fesm2022/primeng-sidebar.mjs +3 -4
  284. package/fesm2022/primeng-sidebar.mjs.map +1 -1
  285. package/fesm2022/primeng-skeleton.mjs +2 -2
  286. package/fesm2022/primeng-skeleton.mjs.map +1 -1
  287. package/fesm2022/primeng-slider.mjs +2 -2
  288. package/fesm2022/primeng-slider.mjs.map +1 -1
  289. package/fesm2022/primeng-speeddial.mjs +2 -2
  290. package/fesm2022/primeng-speeddial.mjs.map +1 -1
  291. package/fesm2022/primeng-splitbutton.mjs +2 -2
  292. package/fesm2022/primeng-splitbutton.mjs.map +1 -1
  293. package/fesm2022/primeng-splitter.mjs +4 -4
  294. package/fesm2022/primeng-splitter.mjs.map +1 -1
  295. package/fesm2022/primeng-stepper.mjs +16 -16
  296. package/fesm2022/primeng-stepper.mjs.map +1 -1
  297. package/fesm2022/primeng-steps.mjs +2 -2
  298. package/fesm2022/primeng-steps.mjs.map +1 -1
  299. package/fesm2022/primeng-styleclass.mjs +1 -1
  300. package/fesm2022/primeng-styleclass.mjs.map +1 -1
  301. package/fesm2022/primeng-table.mjs +63 -38
  302. package/fesm2022/primeng-table.mjs.map +1 -1
  303. package/fesm2022/primeng-tabmenu.mjs +2 -2
  304. package/fesm2022/primeng-tabmenu.mjs.map +1 -1
  305. package/fesm2022/primeng-tabs.mjs +11 -11
  306. package/fesm2022/primeng-tabs.mjs.map +1 -1
  307. package/fesm2022/primeng-tabview.mjs +5 -5
  308. package/fesm2022/primeng-tabview.mjs.map +1 -1
  309. package/fesm2022/primeng-tag.mjs +2 -2
  310. package/fesm2022/primeng-tag.mjs.map +1 -1
  311. package/fesm2022/primeng-terminal.mjs +2 -2
  312. package/fesm2022/primeng-terminal.mjs.map +1 -1
  313. package/fesm2022/primeng-textarea.mjs +1 -1
  314. package/fesm2022/primeng-textarea.mjs.map +1 -1
  315. package/fesm2022/primeng-tieredmenu.mjs +5 -5
  316. package/fesm2022/primeng-tieredmenu.mjs.map +1 -1
  317. package/fesm2022/primeng-timeline.mjs +2 -2
  318. package/fesm2022/primeng-timeline.mjs.map +1 -1
  319. package/fesm2022/primeng-toast.mjs +6 -7
  320. package/fesm2022/primeng-toast.mjs.map +1 -1
  321. package/fesm2022/primeng-togglebutton.mjs +3 -4
  322. package/fesm2022/primeng-togglebutton.mjs.map +1 -1
  323. package/fesm2022/primeng-toggleswitch.mjs +2 -2
  324. package/fesm2022/primeng-toggleswitch.mjs.map +1 -1
  325. package/fesm2022/primeng-toolbar.mjs +2 -2
  326. package/fesm2022/primeng-toolbar.mjs.map +1 -1
  327. package/fesm2022/primeng-tooltip.mjs +4 -2
  328. package/fesm2022/primeng-tooltip.mjs.map +1 -1
  329. package/fesm2022/primeng-tree.mjs +7 -9
  330. package/fesm2022/primeng-tree.mjs.map +1 -1
  331. package/fesm2022/primeng-treeselect.mjs +4 -6
  332. package/fesm2022/primeng-treeselect.mjs.map +1 -1
  333. package/fesm2022/primeng-treetable.mjs +31 -29
  334. package/fesm2022/primeng-treetable.mjs.map +1 -1
  335. package/package.json +174 -522
  336. package/popover/popover.d.ts +1 -1
  337. package/speeddial/speeddial.d.ts +2 -2
  338. package/treetable/treetable.d.ts +1 -1
  339. package/esm2022/accordion/accordion.mjs +0 -1266
  340. package/esm2022/accordion/primeng-accordion.mjs +0 -5
  341. package/esm2022/accordion/public_api.mjs +0 -3
  342. package/esm2022/accordion/style/accordionstyle.mjs +0 -163
  343. package/esm2022/animateonscroll/animateonscroll.mjs +0 -174
  344. package/esm2022/animateonscroll/primeng-animateonscroll.mjs +0 -5
  345. package/esm2022/animateonscroll/public_api.mjs +0 -2
  346. package/esm2022/api/blockableui.mjs +0 -2
  347. package/esm2022/api/confirmaeventtype.mjs +0 -10
  348. package/esm2022/api/confirmation.mjs +0 -2
  349. package/esm2022/api/confirmationservice.mjs +0 -43
  350. package/esm2022/api/contextmenuservice.mjs +0 -22
  351. package/esm2022/api/filtermatchmode.mjs +0 -23
  352. package/esm2022/api/filtermetadata.mjs +0 -2
  353. package/esm2022/api/filteroperator.mjs +0 -5
  354. package/esm2022/api/filterservice.mjs +0 -224
  355. package/esm2022/api/lazyloadevent.mjs +0 -2
  356. package/esm2022/api/lazyloadmeta.mjs +0 -2
  357. package/esm2022/api/megamenuitem.mjs +0 -2
  358. package/esm2022/api/menuitem.mjs +0 -2
  359. package/esm2022/api/messageservice.mjs +0 -47
  360. package/esm2022/api/overlayoptions.mjs +0 -2
  361. package/esm2022/api/overlayservice.mjs +0 -19
  362. package/esm2022/api/primeicons.mjs +0 -314
  363. package/esm2022/api/primeng-api.mjs +0 -5
  364. package/esm2022/api/public_api.mjs +0 -33
  365. package/esm2022/api/scrolleroptions.mjs +0 -2
  366. package/esm2022/api/selectitem.mjs +0 -2
  367. package/esm2022/api/selectitemgroup.mjs +0 -2
  368. package/esm2022/api/shared.mjs +0 -76
  369. package/esm2022/api/sortevent.mjs +0 -2
  370. package/esm2022/api/sortmeta.mjs +0 -2
  371. package/esm2022/api/tablestate.mjs +0 -2
  372. package/esm2022/api/toastmessage.mjs +0 -2
  373. package/esm2022/api/tooltipoptions.mjs +0 -2
  374. package/esm2022/api/translation.mjs +0 -2
  375. package/esm2022/api/translationkeys.mjs +0 -51
  376. package/esm2022/api/treedragdropservice.mjs +0 -21
  377. package/esm2022/api/treenode.mjs +0 -2
  378. package/esm2022/api/treenodedragevent.mjs +0 -2
  379. package/esm2022/api/treetablenode.mjs +0 -2
  380. package/esm2022/autocomplete/autocomplete.interface.mjs +0 -2
  381. package/esm2022/autocomplete/autocomplete.mjs +0 -2223
  382. package/esm2022/autocomplete/primeng-autocomplete.mjs +0 -5
  383. package/esm2022/autocomplete/public_api.mjs +0 -4
  384. package/esm2022/autocomplete/style/autocompletestyle.mjs +0 -409
  385. package/esm2022/autofocus/autofocus.mjs +0 -86
  386. package/esm2022/autofocus/primeng-autofocus.mjs +0 -5
  387. package/esm2022/autofocus/public_api.mjs +0 -2
  388. package/esm2022/avatar/avatar.mjs +0 -193
  389. package/esm2022/avatar/primeng-avatar.mjs +0 -5
  390. package/esm2022/avatar/public_api.mjs +0 -3
  391. package/esm2022/avatar/style/avatarstyle.mjs +0 -130
  392. package/esm2022/avatargroup/avatargroup.mjs +0 -80
  393. package/esm2022/avatargroup/primeng-avatargroup.mjs +0 -5
  394. package/esm2022/avatargroup/public_api.mjs +0 -3
  395. package/esm2022/avatargroup/style/avatargroupstyle.mjs +0 -29
  396. package/esm2022/badge/badge.mjs +0 -332
  397. package/esm2022/badge/primeng-badge.mjs +0 -5
  398. package/esm2022/badge/public_api.mjs +0 -3
  399. package/esm2022/badge/style/badgestyle.mjs +0 -143
  400. package/esm2022/base/base.mjs +0 -19
  401. package/esm2022/base/primeng-base.mjs +0 -5
  402. package/esm2022/base/public_api.mjs +0 -3
  403. package/esm2022/base/style/basestyle.mjs +0 -256
  404. package/esm2022/basecomponent/basecomponent.mjs +0 -183
  405. package/esm2022/basecomponent/primeng-basecomponent.mjs +0 -5
  406. package/esm2022/basecomponent/public_api.mjs +0 -3
  407. package/esm2022/basecomponent/style/basecomponentstyle.mjs +0 -13
  408. package/esm2022/blockui/blockui.interface.mjs +0 -2
  409. package/esm2022/blockui/blockui.mjs +0 -210
  410. package/esm2022/blockui/primeng-blockui.mjs +0 -5
  411. package/esm2022/blockui/public_api.mjs +0 -4
  412. package/esm2022/blockui/style/blockuistyle.mjs +0 -50
  413. package/esm2022/breadcrumb/breadcrumb.interface.mjs +0 -2
  414. package/esm2022/breadcrumb/breadcrumb.mjs +0 -583
  415. package/esm2022/breadcrumb/primeng-breadcrumb.mjs +0 -5
  416. package/esm2022/breadcrumb/public_api.mjs +0 -4
  417. package/esm2022/breadcrumb/style/breadcrumbstyle.mjs +0 -133
  418. package/esm2022/button/button.interface.mjs +0 -2
  419. package/esm2022/button/button.mjs +0 -896
  420. package/esm2022/button/primeng-button.mjs +0 -5
  421. package/esm2022/button/public_api.mjs +0 -4
  422. package/esm2022/button/style/buttonstyle.mjs +0 -707
  423. package/esm2022/buttongroup/buttongroup.mjs +0 -47
  424. package/esm2022/buttongroup/primeng-buttongroup.mjs +0 -5
  425. package/esm2022/buttongroup/public_api.mjs +0 -3
  426. package/esm2022/buttongroup/style/buttongroupstyle.mjs +0 -120
  427. package/esm2022/calendar/calendar.interface.mjs +0 -2
  428. package/esm2022/calendar/calendar.mjs +0 -4504
  429. package/esm2022/calendar/primeng-calendar.mjs +0 -5
  430. package/esm2022/calendar/public_api.mjs +0 -4
  431. package/esm2022/calendar/style/calendarstyle.mjs +0 -472
  432. package/esm2022/card/card.interface.mjs +0 -2
  433. package/esm2022/card/card.mjs +0 -243
  434. package/esm2022/card/primeng-card.mjs +0 -5
  435. package/esm2022/card/public_api.mjs +0 -4
  436. package/esm2022/card/style/cardstyle.mjs +0 -100
  437. package/esm2022/carousel/carousel.interface.mjs +0 -2
  438. package/esm2022/carousel/carousel.mjs +0 -1181
  439. package/esm2022/carousel/primeng-carousel.mjs +0 -5
  440. package/esm2022/carousel/public_api.mjs +0 -4
  441. package/esm2022/carousel/style/carouselstyle.mjs +0 -234
  442. package/esm2022/cascadeselect/cascadeselect.interface.mjs +0 -2
  443. package/esm2022/cascadeselect/cascadeselect.mjs +0 -1840
  444. package/esm2022/cascadeselect/primeng-cascadeselect.mjs +0 -5
  445. package/esm2022/cascadeselect/public_api.mjs +0 -4
  446. package/esm2022/cascadeselect/style/cascadeselectstyle.mjs +0 -379
  447. package/esm2022/chart/chart.mjs +0 -210
  448. package/esm2022/chart/primeng-chart.mjs +0 -5
  449. package/esm2022/chart/public_api.mjs +0 -3
  450. package/esm2022/chart/style/chartstyle.mjs +0 -36
  451. package/esm2022/checkbox/checkbox.interface.mjs +0 -2
  452. package/esm2022/checkbox/checkbox.mjs +0 -450
  453. package/esm2022/checkbox/primeng-checkbox.mjs +0 -5
  454. package/esm2022/checkbox/public_api.mjs +0 -4
  455. package/esm2022/checkbox/style/checkboxstyle.mjs +0 -191
  456. package/esm2022/chip/chip.interface.mjs +0 -2
  457. package/esm2022/chip/chip.mjs +0 -337
  458. package/esm2022/chip/primeng-chip.mjs +0 -5
  459. package/esm2022/chip/public_api.mjs +0 -4
  460. package/esm2022/chip/style/chipstyle.mjs +0 -104
  461. package/esm2022/colorpicker/colorpicker.interface.mjs +0 -2
  462. package/esm2022/colorpicker/colorpicker.mjs +0 -856
  463. package/esm2022/colorpicker/primeng-colorpicker.mjs +0 -5
  464. package/esm2022/colorpicker/public_api.mjs +0 -4
  465. package/esm2022/colorpicker/style/colorpickerstyle.mjs +0 -213
  466. package/esm2022/config/primeng-config.mjs +0 -5
  467. package/esm2022/config/primeng.mjs +0 -185
  468. package/esm2022/config/provideprimeng.mjs +0 -19
  469. package/esm2022/config/public_api.mjs +0 -4
  470. package/esm2022/config/themeprovider.mjs +0 -68
  471. package/esm2022/confirmdialog/confirmdialog.interface.mjs +0 -2
  472. package/esm2022/confirmdialog/confirmdialog.mjs +0 -815
  473. package/esm2022/confirmdialog/primeng-confirmdialog.mjs +0 -5
  474. package/esm2022/confirmdialog/public_api.mjs +0 -4
  475. package/esm2022/confirmdialog/style/confirmdialogstyle.mjs +0 -67
  476. package/esm2022/confirmpopup/confirmpopup.interface.mjs +0 -2
  477. package/esm2022/confirmpopup/confirmpopup.mjs +0 -619
  478. package/esm2022/confirmpopup/primeng-confirmpopup.mjs +0 -5
  479. package/esm2022/confirmpopup/public_api.mjs +0 -4
  480. package/esm2022/confirmpopup/style/confirmpopupstyle.mjs +0 -170
  481. package/esm2022/contextmenu/contextmenu.mjs +0 -1436
  482. package/esm2022/contextmenu/primeng-contextmenu.mjs +0 -5
  483. package/esm2022/contextmenu/public_api.mjs +0 -3
  484. package/esm2022/contextmenu/style/contextmenustyle.mjs +0 -244
  485. package/esm2022/dataview/dataview.interface.mjs +0 -2
  486. package/esm2022/dataview/dataview.mjs +0 -819
  487. package/esm2022/dataview/primeng-dataview.mjs +0 -5
  488. package/esm2022/dataview/public_api.mjs +0 -4
  489. package/esm2022/dataview/style/dataviewstyle.mjs +0 -115
  490. package/esm2022/datepicker/datepicker.interface.mjs +0 -2
  491. package/esm2022/datepicker/datepicker.mjs +0 -4539
  492. package/esm2022/datepicker/primeng-datepicker.mjs +0 -5
  493. package/esm2022/datepicker/public_api.mjs +0 -4
  494. package/esm2022/datepicker/style/datepickerstyle.mjs +0 -663
  495. package/esm2022/defer/defer.mjs +0 -100
  496. package/esm2022/defer/primeng-defer.mjs +0 -5
  497. package/esm2022/defer/public_api.mjs +0 -2
  498. package/esm2022/dialog/dialog.interface.mjs +0 -2
  499. package/esm2022/dialog/dialog.mjs +0 -1384
  500. package/esm2022/dialog/primeng-dialog.mjs +0 -5
  501. package/esm2022/dialog/public_api.mjs +0 -4
  502. package/esm2022/dialog/style/dialogstyle.mjs +0 -283
  503. package/esm2022/divider/divider.mjs +0 -119
  504. package/esm2022/divider/primeng-divider.mjs +0 -5
  505. package/esm2022/divider/public_api.mjs +0 -3
  506. package/esm2022/divider/style/dividerstyle.mjs +0 -138
  507. package/esm2022/dock/dock.interface.mjs +0 -2
  508. package/esm2022/dock/dock.mjs +0 -447
  509. package/esm2022/dock/primeng-dock.mjs +0 -5
  510. package/esm2022/dock/public_api.mjs +0 -4
  511. package/esm2022/dock/style/dockstyle.mjs +0 -210
  512. package/esm2022/dom/connectedoverlayscrollhandler.mjs +0 -30
  513. package/esm2022/dom/domhandler.mjs +0 -725
  514. package/esm2022/dom/primeng-dom.mjs +0 -5
  515. package/esm2022/dom/public_api.mjs +0 -3
  516. package/esm2022/dragdrop/dragdrop.mjs +0 -323
  517. package/esm2022/dragdrop/primeng-dragdrop.mjs +0 -5
  518. package/esm2022/dragdrop/public_api.mjs +0 -2
  519. package/esm2022/drawer/drawer.interface.mjs +0 -2
  520. package/esm2022/drawer/drawer.mjs +0 -663
  521. package/esm2022/drawer/primeng-drawer.mjs +0 -5
  522. package/esm2022/drawer/public_api.mjs +0 -4
  523. package/esm2022/drawer/style/drawerstyle.mjs +0 -283
  524. package/esm2022/dropdown/dropdown.interface.mjs +0 -2
  525. package/esm2022/dropdown/dropdown.mjs +0 -2498
  526. package/esm2022/dropdown/primeng-dropdown.mjs +0 -5
  527. package/esm2022/dropdown/public_api.mjs +0 -4
  528. package/esm2022/dropdown/style/dropdownstyle.mjs +0 -264
  529. package/esm2022/dynamicdialog/dialogservice.mjs +0 -105
  530. package/esm2022/dynamicdialog/dynamicdialog-config.mjs +0 -182
  531. package/esm2022/dynamicdialog/dynamicdialog-injector.mjs +0 -15
  532. package/esm2022/dynamicdialog/dynamicdialog-ref.mjs +0 -119
  533. package/esm2022/dynamicdialog/dynamicdialog.mjs +0 -875
  534. package/esm2022/dynamicdialog/dynamicdialogcontent.mjs +0 -18
  535. package/esm2022/dynamicdialog/primeng-dynamicdialog.mjs +0 -5
  536. package/esm2022/dynamicdialog/public_api.mjs +0 -8
  537. package/esm2022/dynamicdialog/style/dynamicdialogstyle.mjs +0 -60
  538. package/esm2022/editor/editor.interface.mjs +0 -2
  539. package/esm2022/editor/editor.mjs +0 -427
  540. package/esm2022/editor/primeng-editor.mjs +0 -5
  541. package/esm2022/editor/public_api.mjs +0 -4
  542. package/esm2022/editor/style/editorstyle.mjs +0 -1008
  543. package/esm2022/fieldset/fieldset.interface.mjs +0 -2
  544. package/esm2022/fieldset/fieldset.mjs +0 -427
  545. package/esm2022/fieldset/primeng-fieldset.mjs +0 -5
  546. package/esm2022/fieldset/public_api.mjs +0 -4
  547. package/esm2022/fieldset/style/fieldsetstyle.mjs +0 -143
  548. package/esm2022/fileupload/fileupload.interface.mjs +0 -2
  549. package/esm2022/fileupload/fileupload.mjs +0 -1597
  550. package/esm2022/fileupload/primeng-fileupload.mjs +0 -5
  551. package/esm2022/fileupload/public_api.mjs +0 -4
  552. package/esm2022/fileupload/style/fileuploadstyle.mjs +0 -194
  553. package/esm2022/floatlabel/floatlabel.mjs +0 -61
  554. package/esm2022/floatlabel/primeng-floatlabel.mjs +0 -5
  555. package/esm2022/floatlabel/public_api.mjs +0 -3
  556. package/esm2022/floatlabel/style/floatlabelstyle.mjs +0 -133
  557. package/esm2022/fluid/fluid.mjs +0 -50
  558. package/esm2022/fluid/primeng-fluid.mjs +0 -5
  559. package/esm2022/fluid/public_api.mjs +0 -3
  560. package/esm2022/fluid/style/fluidstyle.mjs +0 -38
  561. package/esm2022/focustrap/focustrap.mjs +0 -104
  562. package/esm2022/focustrap/primeng-focustrap.mjs +0 -5
  563. package/esm2022/focustrap/public_api.mjs +0 -2
  564. package/esm2022/galleria/galleria.interface.mjs +0 -2
  565. package/esm2022/galleria/galleria.mjs +0 -1858
  566. package/esm2022/galleria/primeng-galleria.mjs +0 -5
  567. package/esm2022/galleria/public_api.mjs +0 -4
  568. package/esm2022/galleria/style/galleriastyle.mjs +0 -644
  569. package/esm2022/iconfield/iconfield.mjs +0 -73
  570. package/esm2022/iconfield/primeng-iconfield.mjs +0 -5
  571. package/esm2022/iconfield/public_api.mjs +0 -3
  572. package/esm2022/iconfield/style/iconfieldstyle.mjs +0 -77
  573. package/esm2022/icons/angledoubledown/angledoubledown.mjs +0 -34
  574. package/esm2022/icons/angledoubledown/primeng-icons-angledoubledown.mjs +0 -5
  575. package/esm2022/icons/angledoubledown/public_api.mjs +0 -2
  576. package/esm2022/icons/angledoubleleft/angledoubleleft.mjs +0 -34
  577. package/esm2022/icons/angledoubleleft/primeng-icons-angledoubleleft.mjs +0 -5
  578. package/esm2022/icons/angledoubleleft/public_api.mjs +0 -2
  579. package/esm2022/icons/angledoubleright/angledoubleright.mjs +0 -34
  580. package/esm2022/icons/angledoubleright/primeng-icons-angledoubleright.mjs +0 -5
  581. package/esm2022/icons/angledoubleright/public_api.mjs +0 -2
  582. package/esm2022/icons/angledoubleup/angledoubleup.mjs +0 -34
  583. package/esm2022/icons/angledoubleup/primeng-icons-angledoubleup.mjs +0 -5
  584. package/esm2022/icons/angledoubleup/public_api.mjs +0 -2
  585. package/esm2022/icons/angledown/angledown.mjs +0 -32
  586. package/esm2022/icons/angledown/primeng-icons-angledown.mjs +0 -5
  587. package/esm2022/icons/angledown/public_api.mjs +0 -2
  588. package/esm2022/icons/angleleft/angleleft.mjs +0 -32
  589. package/esm2022/icons/angleleft/primeng-icons-angleleft.mjs +0 -5
  590. package/esm2022/icons/angleleft/public_api.mjs +0 -2
  591. package/esm2022/icons/angleright/angleright.mjs +0 -32
  592. package/esm2022/icons/angleright/primeng-icons-angleright.mjs +0 -5
  593. package/esm2022/icons/angleright/public_api.mjs +0 -2
  594. package/esm2022/icons/angleup/angleup.mjs +0 -32
  595. package/esm2022/icons/angleup/primeng-icons-angleup.mjs +0 -5
  596. package/esm2022/icons/angleup/public_api.mjs +0 -2
  597. package/esm2022/icons/arrowdown/arrowdown.mjs +0 -53
  598. package/esm2022/icons/arrowdown/primeng-icons-arrowdown.mjs +0 -5
  599. package/esm2022/icons/arrowdown/public_api.mjs +0 -2
  600. package/esm2022/icons/arrowdownleft/arrowdownleft.mjs +0 -32
  601. package/esm2022/icons/arrowdownleft/primeng-icons-arrowdownleft.mjs +0 -5
  602. package/esm2022/icons/arrowdownleft/public_api.mjs +0 -2
  603. package/esm2022/icons/arrowdownright/arrowdownright.mjs +0 -32
  604. package/esm2022/icons/arrowdownright/primeng-icons-arrowdownright.mjs +0 -5
  605. package/esm2022/icons/arrowdownright/public_api.mjs +0 -2
  606. package/esm2022/icons/arrowleft/arrowleft.mjs +0 -53
  607. package/esm2022/icons/arrowleft/primeng-icons-arrowleft.mjs +0 -5
  608. package/esm2022/icons/arrowleft/public_api.mjs +0 -2
  609. package/esm2022/icons/arrowright/arrowright.mjs +0 -34
  610. package/esm2022/icons/arrowright/primeng-icons-arrowright.mjs +0 -5
  611. package/esm2022/icons/arrowright/public_api.mjs +0 -2
  612. package/esm2022/icons/arrowup/arrowup.mjs +0 -53
  613. package/esm2022/icons/arrowup/primeng-icons-arrowup.mjs +0 -5
  614. package/esm2022/icons/arrowup/public_api.mjs +0 -2
  615. package/esm2022/icons/ban/ban.mjs +0 -51
  616. package/esm2022/icons/ban/primeng-icons-ban.mjs +0 -5
  617. package/esm2022/icons/ban/public_api.mjs +0 -2
  618. package/esm2022/icons/bars/bars.mjs +0 -34
  619. package/esm2022/icons/bars/primeng-icons-bars.mjs +0 -5
  620. package/esm2022/icons/bars/public_api.mjs +0 -2
  621. package/esm2022/icons/baseicon/baseicon.mjs +0 -54
  622. package/esm2022/icons/baseicon/primeng-icons-baseicon.mjs +0 -5
  623. package/esm2022/icons/baseicon/public_api.mjs +0 -3
  624. package/esm2022/icons/baseicon/style/baseiconstyle.mjs +0 -57
  625. package/esm2022/icons/blank/blank.mjs +0 -26
  626. package/esm2022/icons/blank/primeng-icons-blank.mjs +0 -5
  627. package/esm2022/icons/blank/public_api.mjs +0 -2
  628. package/esm2022/icons/calendar/calendar.mjs +0 -32
  629. package/esm2022/icons/calendar/primeng-icons-calendar.mjs +0 -5
  630. package/esm2022/icons/calendar/public_api.mjs +0 -2
  631. package/esm2022/icons/caretleft/caretleft.mjs +0 -32
  632. package/esm2022/icons/caretleft/primeng-icons-caretleft.mjs +0 -5
  633. package/esm2022/icons/caretleft/public_api.mjs +0 -2
  634. package/esm2022/icons/caretright/caretright.mjs +0 -32
  635. package/esm2022/icons/caretright/primeng-icons-caretright.mjs +0 -5
  636. package/esm2022/icons/caretright/public_api.mjs +0 -2
  637. package/esm2022/icons/check/check.mjs +0 -32
  638. package/esm2022/icons/check/primeng-icons-check.mjs +0 -5
  639. package/esm2022/icons/check/public_api.mjs +0 -2
  640. package/esm2022/icons/chevrondown/chevrondown.mjs +0 -32
  641. package/esm2022/icons/chevrondown/primeng-icons-chevrondown.mjs +0 -5
  642. package/esm2022/icons/chevrondown/public_api.mjs +0 -2
  643. package/esm2022/icons/chevronleft/chevronleft.mjs +0 -32
  644. package/esm2022/icons/chevronleft/primeng-icons-chevronleft.mjs +0 -5
  645. package/esm2022/icons/chevronleft/public_api.mjs +0 -2
  646. package/esm2022/icons/chevronright/chevronright.mjs +0 -32
  647. package/esm2022/icons/chevronright/primeng-icons-chevronright.mjs +0 -5
  648. package/esm2022/icons/chevronright/public_api.mjs +0 -2
  649. package/esm2022/icons/chevronup/chevronup.mjs +0 -32
  650. package/esm2022/icons/chevronup/primeng-icons-chevronup.mjs +0 -5
  651. package/esm2022/icons/chevronup/public_api.mjs +0 -2
  652. package/esm2022/icons/exclamationtriangle/exclamationtriangle.mjs +0 -59
  653. package/esm2022/icons/exclamationtriangle/primeng-icons-exclamationtriangle.mjs +0 -5
  654. package/esm2022/icons/exclamationtriangle/public_api.mjs +0 -2
  655. package/esm2022/icons/eye/eye.mjs +0 -34
  656. package/esm2022/icons/eye/primeng-icons-eye.mjs +0 -5
  657. package/esm2022/icons/eye/public_api.mjs +0 -2
  658. package/esm2022/icons/eyeslash/eyeslash.mjs +0 -53
  659. package/esm2022/icons/eyeslash/primeng-icons-eyeslash.mjs +0 -5
  660. package/esm2022/icons/eyeslash/public_api.mjs +0 -2
  661. package/esm2022/icons/filter/filter.mjs +0 -51
  662. package/esm2022/icons/filter/primeng-icons-filter.mjs +0 -5
  663. package/esm2022/icons/filter/public_api.mjs +0 -2
  664. package/esm2022/icons/filterslash/filterslash.mjs +0 -53
  665. package/esm2022/icons/filterslash/primeng-icons-filterslash.mjs +0 -5
  666. package/esm2022/icons/filterslash/public_api.mjs +0 -2
  667. package/esm2022/icons/home/home.mjs +0 -53
  668. package/esm2022/icons/home/primeng-icons-home.mjs +0 -5
  669. package/esm2022/icons/home/public_api.mjs +0 -2
  670. package/esm2022/icons/infocircle/infocircle.mjs +0 -53
  671. package/esm2022/icons/infocircle/primeng-icons-infocircle.mjs +0 -5
  672. package/esm2022/icons/infocircle/public_api.mjs +0 -2
  673. package/esm2022/icons/minus/minus.mjs +0 -32
  674. package/esm2022/icons/minus/primeng-icons-minus.mjs +0 -5
  675. package/esm2022/icons/minus/public_api.mjs +0 -2
  676. package/esm2022/icons/pencil/pencil.mjs +0 -51
  677. package/esm2022/icons/pencil/primeng-icons-pencil.mjs +0 -5
  678. package/esm2022/icons/pencil/public_api.mjs +0 -2
  679. package/esm2022/icons/plus/plus.mjs +0 -51
  680. package/esm2022/icons/plus/primeng-icons-plus.mjs +0 -5
  681. package/esm2022/icons/plus/public_api.mjs +0 -2
  682. package/esm2022/icons/primeng-icons.mjs +0 -5
  683. package/esm2022/icons/public_api.mjs +0 -58
  684. package/esm2022/icons/refresh/primeng-icons-refresh.mjs +0 -5
  685. package/esm2022/icons/refresh/public_api.mjs +0 -2
  686. package/esm2022/icons/refresh/refresh.mjs +0 -53
  687. package/esm2022/icons/search/primeng-icons-search.mjs +0 -5
  688. package/esm2022/icons/search/public_api.mjs +0 -2
  689. package/esm2022/icons/search/search.mjs +0 -53
  690. package/esm2022/icons/searchminus/primeng-icons-searchminus.mjs +0 -5
  691. package/esm2022/icons/searchminus/public_api.mjs +0 -2
  692. package/esm2022/icons/searchminus/searchminus.mjs +0 -53
  693. package/esm2022/icons/searchplus/primeng-icons-searchplus.mjs +0 -5
  694. package/esm2022/icons/searchplus/public_api.mjs +0 -2
  695. package/esm2022/icons/searchplus/searchplus.mjs +0 -53
  696. package/esm2022/icons/sortalt/primeng-icons-sortalt.mjs +0 -5
  697. package/esm2022/icons/sortalt/public_api.mjs +0 -2
  698. package/esm2022/icons/sortalt/sortalt.mjs +0 -57
  699. package/esm2022/icons/sortamountdown/primeng-icons-sortamountdown.mjs +0 -5
  700. package/esm2022/icons/sortamountdown/public_api.mjs +0 -2
  701. package/esm2022/icons/sortamountdown/sortamountdown.mjs +0 -51
  702. package/esm2022/icons/sortamountupalt/primeng-icons-sortamountupalt.mjs +0 -5
  703. package/esm2022/icons/sortamountupalt/public_api.mjs +0 -2
  704. package/esm2022/icons/sortamountupalt/sortamountupalt.mjs +0 -51
  705. package/esm2022/icons/spinner/primeng-icons-spinner.mjs +0 -5
  706. package/esm2022/icons/spinner/public_api.mjs +0 -2
  707. package/esm2022/icons/spinner/spinner.mjs +0 -51
  708. package/esm2022/icons/star/primeng-icons-star.mjs +0 -5
  709. package/esm2022/icons/star/public_api.mjs +0 -2
  710. package/esm2022/icons/star/star.mjs +0 -51
  711. package/esm2022/icons/starfill/primeng-icons-starfill.mjs +0 -5
  712. package/esm2022/icons/starfill/public_api.mjs +0 -2
  713. package/esm2022/icons/starfill/starfill.mjs +0 -51
  714. package/esm2022/icons/thlarge/primeng-icons-thlarge.mjs +0 -5
  715. package/esm2022/icons/thlarge/public_api.mjs +0 -2
  716. package/esm2022/icons/thlarge/thlarge.mjs +0 -53
  717. package/esm2022/icons/times/primeng-icons-times.mjs +0 -5
  718. package/esm2022/icons/times/public_api.mjs +0 -2
  719. package/esm2022/icons/times/times.mjs +0 -32
  720. package/esm2022/icons/timescircle/primeng-icons-timescircle.mjs +0 -5
  721. package/esm2022/icons/timescircle/public_api.mjs +0 -2
  722. package/esm2022/icons/timescircle/timescircle.mjs +0 -53
  723. package/esm2022/icons/trash/primeng-icons-trash.mjs +0 -5
  724. package/esm2022/icons/trash/public_api.mjs +0 -2
  725. package/esm2022/icons/trash/trash.mjs +0 -53
  726. package/esm2022/icons/undo/primeng-icons-undo.mjs +0 -5
  727. package/esm2022/icons/undo/public_api.mjs +0 -2
  728. package/esm2022/icons/undo/undo.mjs +0 -53
  729. package/esm2022/icons/upload/primeng-icons-upload.mjs +0 -5
  730. package/esm2022/icons/upload/public_api.mjs +0 -2
  731. package/esm2022/icons/upload/upload.mjs +0 -53
  732. package/esm2022/icons/windowmaximize/primeng-icons-windowmaximize.mjs +0 -5
  733. package/esm2022/icons/windowmaximize/public_api.mjs +0 -2
  734. package/esm2022/icons/windowmaximize/windowmaximize.mjs +0 -53
  735. package/esm2022/icons/windowminimize/primeng-icons-windowminimize.mjs +0 -5
  736. package/esm2022/icons/windowminimize/public_api.mjs +0 -2
  737. package/esm2022/icons/windowminimize/windowminimize.mjs +0 -53
  738. package/esm2022/iftalabel/iftalabel.mjs +0 -49
  739. package/esm2022/iftalabel/primeng-iftalabel.mjs +0 -5
  740. package/esm2022/iftalabel/public_api.mjs +0 -3
  741. package/esm2022/iftalabel/style/iftalabelstyle.mjs +0 -96
  742. package/esm2022/image/image.interface.mjs +0 -2
  743. package/esm2022/image/image.mjs +0 -747
  744. package/esm2022/image/primeng-image.mjs +0 -5
  745. package/esm2022/image/public_api.mjs +0 -4
  746. package/esm2022/image/style/imagestyle.mjs +0 -219
  747. package/esm2022/imagecompare/imagecompare.mjs +0 -158
  748. package/esm2022/imagecompare/primeng-imagecompare.mjs +0 -5
  749. package/esm2022/imagecompare/public_api.mjs +0 -3
  750. package/esm2022/imagecompare/style/imagecomparestyle.mjs +0 -124
  751. package/esm2022/inplace/inplace.interface.mjs +0 -2
  752. package/esm2022/inplace/inplace.mjs +0 -344
  753. package/esm2022/inplace/primeng-inplace.mjs +0 -5
  754. package/esm2022/inplace/public_api.mjs +0 -4
  755. package/esm2022/inplace/style/inplacestyle.mjs +0 -69
  756. package/esm2022/inputgroup/inputgroup.mjs +0 -68
  757. package/esm2022/inputgroup/primeng-inputgroup.mjs +0 -5
  758. package/esm2022/inputgroup/public_api.mjs +0 -3
  759. package/esm2022/inputgroup/style/inputgroupstyle.mjs +0 -145
  760. package/esm2022/inputgroupaddon/inputgroupaddon.mjs +0 -74
  761. package/esm2022/inputgroupaddon/primeng-inputgroupaddon.mjs +0 -5
  762. package/esm2022/inputgroupaddon/public_api.mjs +0 -3
  763. package/esm2022/inputgroupaddon/style/inputgroupaddonstyle.mjs +0 -16
  764. package/esm2022/inputicon/inputicon.mjs +0 -66
  765. package/esm2022/inputicon/primeng-inputicon.mjs +0 -5
  766. package/esm2022/inputicon/public_api.mjs +0 -3
  767. package/esm2022/inputicon/style/inputiconstyle.mjs +0 -16
  768. package/esm2022/inputmask/inputmask.interface.mjs +0 -2
  769. package/esm2022/inputmask/inputmask.mjs +0 -911
  770. package/esm2022/inputmask/primeng-inputmask.mjs +0 -5
  771. package/esm2022/inputmask/public_api.mjs +0 -4
  772. package/esm2022/inputmask/style/inputmaskstyle.mjs +0 -62
  773. package/esm2022/inputnumber/inputnumber.interface.mjs +0 -2
  774. package/esm2022/inputnumber/inputnumber.mjs +0 -1745
  775. package/esm2022/inputnumber/primeng-inputnumber.mjs +0 -5
  776. package/esm2022/inputnumber/public_api.mjs +0 -4
  777. package/esm2022/inputnumber/style/inputnumberstyle.mjs +0 -240
  778. package/esm2022/inputotp/inputotp.mjs +0 -406
  779. package/esm2022/inputotp/primeng-inputotp.mjs +0 -5
  780. package/esm2022/inputotp/public_api.mjs +0 -3
  781. package/esm2022/inputotp/style/inputotpstyle.mjs +0 -60
  782. package/esm2022/inputswitch/inputswitch.interface.mjs +0 -2
  783. package/esm2022/inputswitch/inputswitch.mjs +0 -241
  784. package/esm2022/inputswitch/primeng-inputswitch.mjs +0 -5
  785. package/esm2022/inputswitch/public_api.mjs +0 -4
  786. package/esm2022/inputswitch/style/inputswitchstyle.mjs +0 -130
  787. package/esm2022/inputtext/inputtext.mjs +0 -104
  788. package/esm2022/inputtext/primeng-inputtext.mjs +0 -5
  789. package/esm2022/inputtext/public_api.mjs +0 -3
  790. package/esm2022/inputtext/style/inputtextstyle.mjs +0 -117
  791. package/esm2022/inputtextarea/inputtextarea.mjs +0 -156
  792. package/esm2022/inputtextarea/primeng-inputtextarea.mjs +0 -5
  793. package/esm2022/inputtextarea/public_api.mjs +0 -3
  794. package/esm2022/inputtextarea/style/textareastyle.mjs +0 -107
  795. package/esm2022/keyfilter/keyfilter.interface.mjs +0 -2
  796. package/esm2022/keyfilter/keyfilter.mjs +0 -263
  797. package/esm2022/keyfilter/primeng-keyfilter.mjs +0 -5
  798. package/esm2022/keyfilter/public_api.mjs +0 -3
  799. package/esm2022/knob/knob.mjs +0 -471
  800. package/esm2022/knob/primeng-knob.mjs +0 -5
  801. package/esm2022/knob/public_api.mjs +0 -3
  802. package/esm2022/knob/style/knobstyle.mjs +0 -83
  803. package/esm2022/listbox/listbox.interface.mjs +0 -2
  804. package/esm2022/listbox/listbox.mjs +0 -2044
  805. package/esm2022/listbox/primeng-listbox.mjs +0 -5
  806. package/esm2022/listbox/public_api.mjs +0 -4
  807. package/esm2022/listbox/style/listboxstyle.mjs +0 -206
  808. package/esm2022/megamenu/megamenu.interface.mjs +0 -2
  809. package/esm2022/megamenu/megamenu.mjs +0 -1607
  810. package/esm2022/megamenu/primeng-megamenu.mjs +0 -5
  811. package/esm2022/megamenu/public_api.mjs +0 -4
  812. package/esm2022/megamenu/style/megamenustyle.mjs +0 -487
  813. package/esm2022/menu/menu.mjs +0 -1193
  814. package/esm2022/menu/primeng-menu.mjs +0 -5
  815. package/esm2022/menu/public_api.mjs +0 -3
  816. package/esm2022/menu/style/menustyle.mjs +0 -179
  817. package/esm2022/menubar/menubar.interface.mjs +0 -2
  818. package/esm2022/menubar/menubar.mjs +0 -1484
  819. package/esm2022/menubar/primeng-menubar.mjs +0 -5
  820. package/esm2022/menubar/public_api.mjs +0 -4
  821. package/esm2022/menubar/style/menubarstyle.mjs +0 -375
  822. package/esm2022/message/message.mjs +0 -421
  823. package/esm2022/message/primeng-message.mjs +0 -5
  824. package/esm2022/message/public_api.mjs +0 -3
  825. package/esm2022/message/style/messagestyle.mjs +0 -357
  826. package/esm2022/messages/messages.interface.mjs +0 -2
  827. package/esm2022/messages/messages.mjs +0 -529
  828. package/esm2022/messages/primeng-messages.mjs +0 -5
  829. package/esm2022/messages/public_api.mjs +0 -4
  830. package/esm2022/messages/style/messagesstyle.mjs +0 -229
  831. package/esm2022/metergroup/metergroup.interface.mjs +0 -2
  832. package/esm2022/metergroup/metergroup.mjs +0 -423
  833. package/esm2022/metergroup/primeng-metergroup.mjs +0 -5
  834. package/esm2022/metergroup/public_api.mjs +0 -4
  835. package/esm2022/metergroup/style/metergroupstyle.mjs +0 -169
  836. package/esm2022/multiselect/multiselect.interface.mjs +0 -2
  837. package/esm2022/multiselect/multiselect.mjs +0 -2924
  838. package/esm2022/multiselect/primeng-multiselect.mjs +0 -5
  839. package/esm2022/multiselect/public_api.mjs +0 -4
  840. package/esm2022/multiselect/style/multiselectstyle.mjs +0 -373
  841. package/esm2022/orderlist/orderlist.interface.mjs +0 -2
  842. package/esm2022/orderlist/orderlist.mjs +0 -1121
  843. package/esm2022/orderlist/primeng-orderlist.mjs +0 -5
  844. package/esm2022/orderlist/public_api.mjs +0 -4
  845. package/esm2022/orderlist/style/orderliststyle.mjs +0 -51
  846. package/esm2022/organizationchart/organizationchart.interface.mjs +0 -2
  847. package/esm2022/organizationchart/organizationchart.mjs +0 -591
  848. package/esm2022/organizationchart/primeng-organizationchart.mjs +0 -5
  849. package/esm2022/organizationchart/public_api.mjs +0 -4
  850. package/esm2022/organizationchart/style/organizationchartstyle.mjs +0 -191
  851. package/esm2022/overlay/overlay.mjs +0 -668
  852. package/esm2022/overlay/primeng-overlay.mjs +0 -5
  853. package/esm2022/overlay/public_api.mjs +0 -3
  854. package/esm2022/overlay/style/overlaystyle.mjs +0 -93
  855. package/esm2022/overlaybadge/overlaybadge.mjs +0 -121
  856. package/esm2022/overlaybadge/primeng-overlaybadge.mjs +0 -5
  857. package/esm2022/overlaybadge/public_api.mjs +0 -3
  858. package/esm2022/overlaybadge/style/overlaybadgestyle.mjs +0 -34
  859. package/esm2022/overlaypanel/overlaypanel.mjs +0 -529
  860. package/esm2022/overlaypanel/primeng-overlaypanel.mjs +0 -5
  861. package/esm2022/overlaypanel/public_api.mjs +0 -3
  862. package/esm2022/overlaypanel/style/popoverstyle.mjs +0 -119
  863. package/esm2022/paginator/paginator.interface.mjs +0 -2
  864. package/esm2022/paginator/paginator.mjs +0 -893
  865. package/esm2022/paginator/primeng-paginator.mjs +0 -5
  866. package/esm2022/paginator/public_api.mjs +0 -4
  867. package/esm2022/paginator/style/paginatorstyle.mjs +0 -243
  868. package/esm2022/panel/panel.mjs +0 -585
  869. package/esm2022/panel/primeng-panel.mjs +0 -5
  870. package/esm2022/panel/public_api.mjs +0 -3
  871. package/esm2022/panel/style/panelstyle.mjs +0 -120
  872. package/esm2022/panelmenu/panelmenu.interface.mjs +0 -2
  873. package/esm2022/panelmenu/panelmenu.mjs +0 -1628
  874. package/esm2022/panelmenu/primeng-panelmenu.mjs +0 -5
  875. package/esm2022/panelmenu/public_api.mjs +0 -4
  876. package/esm2022/panelmenu/style/panelmenustyle.mjs +0 -291
  877. package/esm2022/password/password.mjs +0 -1201
  878. package/esm2022/password/primeng-password.mjs +0 -5
  879. package/esm2022/password/public_api.mjs +0 -3
  880. package/esm2022/password/style/passwordstyle.mjs +0 -182
  881. package/esm2022/picklist/picklist.interface.mjs +0 -2
  882. package/esm2022/picklist/picklist.mjs +0 -2322
  883. package/esm2022/picklist/primeng-picklist.mjs +0 -5
  884. package/esm2022/picklist/public_api.mjs +0 -4
  885. package/esm2022/picklist/style/pickliststyle.mjs +0 -79
  886. package/esm2022/popover/popover.mjs +0 -518
  887. package/esm2022/popover/primeng-popover.mjs +0 -5
  888. package/esm2022/popover/public_api.mjs +0 -3
  889. package/esm2022/popover/style/popoverstyle.mjs +0 -99
  890. package/esm2022/primeng.mjs +0 -5
  891. package/esm2022/progressbar/primeng-progressbar.mjs +0 -5
  892. package/esm2022/progressbar/progressbar.mjs +0 -197
  893. package/esm2022/progressbar/public_api.mjs +0 -3
  894. package/esm2022/progressbar/style/progressbarstyle.mjs +0 -165
  895. package/esm2022/progressspinner/primeng-progressspinner.mjs +0 -5
  896. package/esm2022/progressspinner/progressspinner.mjs +0 -105
  897. package/esm2022/progressspinner/public_api.mjs +0 -3
  898. package/esm2022/progressspinner/style/progressspinnerstyle.mjs +0 -115
  899. package/esm2022/public_api.mjs +0 -2
  900. package/esm2022/radiobutton/primeng-radiobutton.mjs +0 -5
  901. package/esm2022/radiobutton/public_api.mjs +0 -4
  902. package/esm2022/radiobutton/radiobutton.interface.mjs +0 -2
  903. package/esm2022/radiobutton/radiobutton.mjs +0 -356
  904. package/esm2022/radiobutton/style/radiobuttonstyle.mjs +0 -196
  905. package/esm2022/rating/primeng-rating.mjs +0 -5
  906. package/esm2022/rating/public_api.mjs +0 -4
  907. package/esm2022/rating/rating.interface.mjs +0 -2
  908. package/esm2022/rating/rating.mjs +0 -425
  909. package/esm2022/rating/style/ratingstyle.mjs +0 -103
  910. package/esm2022/ripple/primeng-ripple.mjs +0 -5
  911. package/esm2022/ripple/public_api.mjs +0 -3
  912. package/esm2022/ripple/ripple.mjs +0 -134
  913. package/esm2022/ripple/style/ripplestyle.mjs +0 -63
  914. package/esm2022/scroller/primeng-scroller.mjs +0 -5
  915. package/esm2022/scroller/public_api.mjs +0 -4
  916. package/esm2022/scroller/scroller.interface.mjs +0 -2
  917. package/esm2022/scroller/scroller.mjs +0 -1290
  918. package/esm2022/scroller/style/scrollerstyle.mjs +0 -104
  919. package/esm2022/scrollpanel/primeng-scrollpanel.mjs +0 -5
  920. package/esm2022/scrollpanel/public_api.mjs +0 -4
  921. package/esm2022/scrollpanel/scrollpanel.interface.mjs +0 -2
  922. package/esm2022/scrollpanel/scrollpanel.mjs +0 -506
  923. package/esm2022/scrollpanel/style/scrollpanelstyle.mjs +0 -120
  924. package/esm2022/scrolltop/primeng-scrolltop.mjs +0 -5
  925. package/esm2022/scrolltop/public_api.mjs +0 -4
  926. package/esm2022/scrolltop/scrolltop.interface.mjs +0 -2
  927. package/esm2022/scrolltop/scrolltop.mjs +0 -336
  928. package/esm2022/scrolltop/style/scrolltopstyle.mjs +0 -77
  929. package/esm2022/select/primeng-select.mjs +0 -5
  930. package/esm2022/select/public_api.mjs +0 -4
  931. package/esm2022/select/select.interface.mjs +0 -2
  932. package/esm2022/select/select.mjs +0 -2618
  933. package/esm2022/select/style/selectstyle.mjs +0 -365
  934. package/esm2022/selectbutton/primeng-selectbutton.mjs +0 -5
  935. package/esm2022/selectbutton/public_api.mjs +0 -4
  936. package/esm2022/selectbutton/selectbutton.interface.mjs +0 -2
  937. package/esm2022/selectbutton/selectbutton.mjs +0 -373
  938. package/esm2022/selectbutton/style/selectbuttonstyle.mjs +0 -73
  939. package/esm2022/sidebar/primeng-sidebar.mjs +0 -5
  940. package/esm2022/sidebar/public_api.mjs +0 -4
  941. package/esm2022/sidebar/sidebar.interface.mjs +0 -2
  942. package/esm2022/sidebar/sidebar.mjs +0 -578
  943. package/esm2022/sidebar/style/drawerstyle.mjs +0 -174
  944. package/esm2022/skeleton/primeng-skeleton.mjs +0 -5
  945. package/esm2022/skeleton/public_api.mjs +0 -3
  946. package/esm2022/skeleton/skeleton.mjs +0 -121
  947. package/esm2022/skeleton/style/skeletonstyle.mjs +0 -93
  948. package/esm2022/slider/primeng-slider.mjs +0 -5
  949. package/esm2022/slider/public_api.mjs +0 -4
  950. package/esm2022/slider/slider.interface.mjs +0 -2
  951. package/esm2022/slider/slider.mjs +0 -820
  952. package/esm2022/slider/style/sliderstyle.mjs +0 -141
  953. package/esm2022/speeddial/primeng-speeddial.mjs +0 -5
  954. package/esm2022/speeddial/public_api.mjs +0 -4
  955. package/esm2022/speeddial/speeddial.interface.mjs +0 -2
  956. package/esm2022/speeddial/speeddial.mjs +0 -866
  957. package/esm2022/speeddial/style/speeddialstyle.mjs +0 -167
  958. package/esm2022/splitbutton/primeng-splitbutton.mjs +0 -5
  959. package/esm2022/splitbutton/public_api.mjs +0 -4
  960. package/esm2022/splitbutton/splitbutton.interface.mjs +0 -2
  961. package/esm2022/splitbutton/splitbutton.mjs +0 -579
  962. package/esm2022/splitbutton/style/splitbuttonstyle.mjs +0 -100
  963. package/esm2022/splitter/primeng-splitter.mjs +0 -5
  964. package/esm2022/splitter/public_api.mjs +0 -4
  965. package/esm2022/splitter/splitter.interface.mjs +0 -2
  966. package/esm2022/splitter/splitter.mjs +0 -626
  967. package/esm2022/splitter/style/splitterstyle.mjs +0 -127
  968. package/esm2022/stepper/primeng-stepper.mjs +0 -5
  969. package/esm2022/stepper/public_api.mjs +0 -3
  970. package/esm2022/stepper/stepper.mjs +0 -521
  971. package/esm2022/stepper/style/stepperstyle.mjs +0 -228
  972. package/esm2022/steps/primeng-steps.mjs +0 -5
  973. package/esm2022/steps/public_api.mjs +0 -3
  974. package/esm2022/steps/steps.mjs +0 -405
  975. package/esm2022/steps/style/stepsstyle.mjs +0 -180
  976. package/esm2022/styleclass/primeng-styleclass.mjs +0 -5
  977. package/esm2022/styleclass/public_api.mjs +0 -2
  978. package/esm2022/styleclass/styleclass.mjs +0 -315
  979. package/esm2022/table/columnfilter.interface.mjs +0 -2
  980. package/esm2022/table/primeng-table.mjs +0 -5
  981. package/esm2022/table/public_api.mjs +0 -5
  982. package/esm2022/table/style/tablestyle.mjs +0 -906
  983. package/esm2022/table/table.interface.mjs +0 -2
  984. package/esm2022/table/table.mjs +0 -7829
  985. package/esm2022/tabmenu/primeng-tabmenu.mjs +0 -5
  986. package/esm2022/tabmenu/public_api.mjs +0 -4
  987. package/esm2022/tabmenu/style/tabmenustyle.mjs +0 -192
  988. package/esm2022/tabmenu/tabmenu.interface.mjs +0 -2
  989. package/esm2022/tabmenu/tabmenu.mjs +0 -730
  990. package/esm2022/tabs/primeng-tabs.mjs +0 -5
  991. package/esm2022/tabs/public_api.mjs +0 -7
  992. package/esm2022/tabs/style/tabsstyle.mjs +0 -211
  993. package/esm2022/tabs/tab.mjs +0 -175
  994. package/esm2022/tabs/tablist.mjs +0 -297
  995. package/esm2022/tabs/tabpanel.mjs +0 -60
  996. package/esm2022/tabs/tabpanels.mjs +0 -38
  997. package/esm2022/tabs/tabs.mjs +0 -105
  998. package/esm2022/tabview/primeng-tabview.mjs +0 -5
  999. package/esm2022/tabview/public_api.mjs +0 -4
  1000. package/esm2022/tabview/style/tabsstyle.mjs +0 -211
  1001. package/esm2022/tabview/tabview.interface.mjs +0 -2
  1002. package/esm2022/tabview/tabview.mjs +0 -1089
  1003. package/esm2022/tag/primeng-tag.mjs +0 -5
  1004. package/esm2022/tag/public_api.mjs +0 -4
  1005. package/esm2022/tag/style/tagstyle.mjs +0 -108
  1006. package/esm2022/tag/tag.interface.mjs +0 -2
  1007. package/esm2022/tag/tag.mjs +0 -168
  1008. package/esm2022/terminal/primeng-terminal.mjs +0 -5
  1009. package/esm2022/terminal/public_api.mjs +0 -4
  1010. package/esm2022/terminal/style/terminalstyle.mjs +0 -113
  1011. package/esm2022/terminal/terminal.mjs +0 -195
  1012. package/esm2022/terminal/terminalservice.mjs +0 -25
  1013. package/esm2022/textarea/primeng-textarea.mjs +0 -5
  1014. package/esm2022/textarea/public_api.mjs +0 -3
  1015. package/esm2022/textarea/style/textareastyle.mjs +0 -120
  1016. package/esm2022/textarea/textarea.mjs +0 -165
  1017. package/esm2022/tieredmenu/primeng-tieredmenu.mjs +0 -5
  1018. package/esm2022/tieredmenu/public_api.mjs +0 -4
  1019. package/esm2022/tieredmenu/style/tieredmenustyle.mjs +0 -276
  1020. package/esm2022/tieredmenu/tieredmenu.interface.mjs +0 -2
  1021. package/esm2022/tieredmenu/tieredmenu.mjs +0 -1444
  1022. package/esm2022/timeline/primeng-timeline.mjs +0 -5
  1023. package/esm2022/timeline/public_api.mjs +0 -4
  1024. package/esm2022/timeline/style/timelinestyle.mjs +0 -217
  1025. package/esm2022/timeline/timeline.interface.mjs +0 -2
  1026. package/esm2022/timeline/timeline.mjs +0 -223
  1027. package/esm2022/toast/primeng-toast.mjs +0 -5
  1028. package/esm2022/toast/public_api.mjs +0 -4
  1029. package/esm2022/toast/style/toaststyle.mjs +0 -351
  1030. package/esm2022/toast/toast.interface.mjs +0 -2
  1031. package/esm2022/toast/toast.mjs +0 -738
  1032. package/esm2022/togglebutton/primeng-togglebutton.mjs +0 -5
  1033. package/esm2022/togglebutton/public_api.mjs +0 -3
  1034. package/esm2022/togglebutton/style/togglebuttonstyle.mjs +0 -170
  1035. package/esm2022/togglebutton/togglebutton.interface.mjs +0 -2
  1036. package/esm2022/togglebutton/togglebutton.mjs +0 -353
  1037. package/esm2022/toggleswitch/primeng-toggleswitch.mjs +0 -5
  1038. package/esm2022/toggleswitch/public_api.mjs +0 -4
  1039. package/esm2022/toggleswitch/style/toggleswitchstyle.mjs +0 -165
  1040. package/esm2022/toggleswitch/toggleswitch.interface.mjs +0 -2
  1041. package/esm2022/toggleswitch/toggleswitch.mjs +0 -278
  1042. package/esm2022/toolbar/primeng-toolbar.mjs +0 -5
  1043. package/esm2022/toolbar/public_api.mjs +0 -4
  1044. package/esm2022/toolbar/style/toolbarstyle.mjs +0 -69
  1045. package/esm2022/toolbar/toolbar.interface.mjs +0 -2
  1046. package/esm2022/toolbar/toolbar.mjs +0 -172
  1047. package/esm2022/tooltip/primeng-tooltip.mjs +0 -5
  1048. package/esm2022/tooltip/public_api.mjs +0 -3
  1049. package/esm2022/tooltip/style/tooltipstyle.mjs +0 -113
  1050. package/esm2022/tooltip/tooltip.mjs +0 -715
  1051. package/esm2022/tree/primeng-tree.mjs +0 -5
  1052. package/esm2022/tree/public_api.mjs +0 -4
  1053. package/esm2022/tree/style/treestyle.mjs +0 -333
  1054. package/esm2022/tree/tree.interface.mjs +0 -2
  1055. package/esm2022/tree/tree.mjs +0 -2289
  1056. package/esm2022/treeselect/primeng-treeselect.mjs +0 -5
  1057. package/esm2022/treeselect/public_api.mjs +0 -4
  1058. package/esm2022/treeselect/style/treeselectstyle.mjs +0 -271
  1059. package/esm2022/treeselect/treeselect.interface.mjs +0 -2
  1060. package/esm2022/treeselect/treeselect.mjs +0 -1372
  1061. package/esm2022/treetable/primeng-treetable.mjs +0 -5
  1062. package/esm2022/treetable/public_api.mjs +0 -4
  1063. package/esm2022/treetable/style/treetablestyle.mjs +0 -621
  1064. package/esm2022/treetable/treetable.interface.mjs +0 -2
  1065. package/esm2022/treetable/treetable.mjs +0 -4642
  1066. package/esm2022/ts-helpers/primeng-ts-helpers.mjs +0 -5
  1067. package/esm2022/ts-helpers/public_api.mjs +0 -2
  1068. package/esm2022/ts-helpers/ts-helpers.mjs +0 -2
  1069. package/esm2022/usestyle/primeng-usestyle.mjs +0 -5
  1070. package/esm2022/usestyle/public_api.mjs +0 -2
  1071. package/esm2022/usestyle/usestyle.mjs +0 -44
  1072. package/esm2022/utils/inpututils.mjs +0 -7
  1073. package/esm2022/utils/objectutils.mjs +0 -276
  1074. package/esm2022/utils/primeng-utils.mjs +0 -5
  1075. package/esm2022/utils/public_api.mjs +0 -6
  1076. package/esm2022/utils/uniquecomponentid.mjs +0 -6
  1077. package/esm2022/utils/zindexutils.mjs +0 -35
@@ -1,1607 +0,0 @@
1
- import { CommonModule, isPlatformBrowser } from '@angular/common';
2
- import { booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, effect, EventEmitter, forwardRef, inject, Input, NgModule, numberAttribute, Output, 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 { MegaMenuStyle } from './style/megamenustyle';
13
- import * as i0 from "@angular/core";
14
- import * as i1 from "@angular/common";
15
- import * as i2 from "@angular/router";
16
- import * as i3 from "primeng/tooltip";
17
- import * as i4 from "primeng/badge";
18
- const _c0 = ["menubar"];
19
- const _c1 = a0 => ({ "max-height": a0, overflow: "auto" });
20
- const _c2 = (a0, a1) => ({ "p-megamenu-root-list": a0, "p-megamenu-submenu": a1 });
21
- const _c3 = a0 => ({ "p-megamenu-item-link": true, "p-disabled": a0 });
22
- const _c4 = () => ({ exact: false });
23
- const _c5 = a0 => ({ $implicit: a0 });
24
- function MegaMenuSub_ul_0_li_2_Template(rf, ctx) { if (rf & 1) {
25
- i0.ɵɵelementStart(0, "li", 8);
26
- i0.ɵɵtext(1);
27
- i0.ɵɵelementEnd();
28
- } if (rf & 2) {
29
- const ctx_r1 = i0.ɵɵnextContext(2);
30
- i0.ɵɵstyleMap(ctx_r1.getItemProp(ctx_r1.submenu, "style"));
31
- i0.ɵɵproperty("ngClass", ctx_r1.getSubmenuHeaderClass(ctx_r1.submenu));
32
- i0.ɵɵadvance();
33
- i0.ɵɵtextInterpolate1(" ", ctx_r1.getItemLabel(ctx_r1.submenu), " ");
34
- } }
35
- function MegaMenuSub_ul_0_ng_template_3_li_0_Template(rf, ctx) { if (rf & 1) {
36
- i0.ɵɵelement(0, "li", 11);
37
- } if (rf & 2) {
38
- const processedItem_r3 = i0.ɵɵnextContext().$implicit;
39
- const ctx_r1 = i0.ɵɵnextContext(2);
40
- i0.ɵɵstyleMap(ctx_r1.getItemProp(processedItem_r3, "style"));
41
- i0.ɵɵproperty("ngClass", ctx_r1.getSeparatorItemClass(processedItem_r3));
42
- i0.ɵɵattribute("id", ctx_r1.getItemId(processedItem_r3))("data-pc-section", "separator");
43
- } }
44
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_span_1_Template(rf, ctx) { if (rf & 1) {
45
- i0.ɵɵelement(0, "span", 22);
46
- } if (rf & 2) {
47
- const processedItem_r3 = i0.ɵɵnextContext(4).$implicit;
48
- const ctx_r1 = i0.ɵɵnextContext(2);
49
- i0.ɵɵproperty("ngClass", ctx_r1.getItemProp(processedItem_r3, "icon"))("ngStyle", ctx_r1.getItemProp(processedItem_r3, "iconStyle"));
50
- i0.ɵɵattribute("data-pc-section", "icon")("tabindex", -1);
51
- } }
52
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_span_2_Template(rf, ctx) { if (rf & 1) {
53
- i0.ɵɵelementStart(0, "span", 23);
54
- i0.ɵɵtext(1);
55
- i0.ɵɵelementEnd();
56
- } if (rf & 2) {
57
- const processedItem_r3 = i0.ɵɵnextContext(4).$implicit;
58
- const ctx_r1 = i0.ɵɵnextContext(2);
59
- i0.ɵɵattribute("data-pc-section", "label");
60
- i0.ɵɵadvance();
61
- i0.ɵɵtextInterpolate1(" ", ctx_r1.getItemLabel(processedItem_r3), " ");
62
- } }
63
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_template_3_Template(rf, ctx) { if (rf & 1) {
64
- i0.ɵɵelement(0, "span", 24);
65
- } if (rf & 2) {
66
- const processedItem_r3 = i0.ɵɵnextContext(4).$implicit;
67
- const ctx_r1 = i0.ɵɵnextContext(2);
68
- i0.ɵɵproperty("innerHTML", ctx_r1.getItemLabel(processedItem_r3), i0.ɵɵsanitizeHtml);
69
- i0.ɵɵattribute("data-pc-section", "label");
70
- } }
71
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_p_badge_5_Template(rf, ctx) { if (rf & 1) {
72
- i0.ɵɵelement(0, "p-badge", 25);
73
- } if (rf & 2) {
74
- const processedItem_r3 = i0.ɵɵnextContext(4).$implicit;
75
- const ctx_r1 = i0.ɵɵnextContext(2);
76
- i0.ɵɵproperty("styleClass", ctx_r1.getItemProp(processedItem_r3, "badgeStyleClass"))("value", ctx_r1.getItemProp(processedItem_r3, "badge"));
77
- } }
78
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_container_6_ng_container_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
79
- i0.ɵɵelement(0, "AngleDownIcon", 27);
80
- } if (rf & 2) {
81
- i0.ɵɵproperty("ngClass", "p-megamenu-submenu-icon");
82
- i0.ɵɵattribute("data-pc-section", "submenuicon")("aria-hidden", true);
83
- } }
84
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_container_6_ng_container_1_Conditional_2_AngleRightIcon_0_Template(rf, ctx) { if (rf & 1) {
85
- i0.ɵɵelement(0, "AngleRightIcon", 27);
86
- } if (rf & 2) {
87
- i0.ɵɵproperty("ngClass", "p-megamenu-submenu-icon");
88
- i0.ɵɵattribute("data-pc-section", "submenuicon")("aria-hidden", true);
89
- } }
90
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_container_6_ng_container_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
91
- i0.ɵɵtemplate(0, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_container_6_ng_container_1_Conditional_2_AngleRightIcon_0_Template, 1, 3, "AngleRightIcon", 28);
92
- } if (rf & 2) {
93
- const ctx_r1 = i0.ɵɵnextContext(8);
94
- i0.ɵɵproperty("ngIf", ctx_r1.orientation === "vertical");
95
- } }
96
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_container_6_ng_container_1_Template(rf, ctx) { if (rf & 1) {
97
- i0.ɵɵelementContainerStart(0);
98
- i0.ɵɵtemplate(1, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_container_6_ng_container_1_Conditional_1_Template, 1, 3, "AngleDownIcon", 27)(2, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_container_6_ng_container_1_Conditional_2_Template, 1, 1, "AngleRightIcon", 27);
99
- i0.ɵɵelementContainerEnd();
100
- } if (rf & 2) {
101
- const ctx_r1 = i0.ɵɵnextContext(7);
102
- i0.ɵɵadvance();
103
- i0.ɵɵconditional(ctx_r1.orientation === "horizontal" || ctx_r1.mobileActive ? 1 : 2);
104
- } }
105
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_container_6_2_ng_template_0_Template(rf, ctx) { }
106
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_container_6_2_Template(rf, ctx) { if (rf & 1) {
107
- i0.ɵɵtemplate(0, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_container_6_2_ng_template_0_Template, 0, 0, "ng-template", 29);
108
- } if (rf & 2) {
109
- i0.ɵɵproperty("data-pc-section", "submenuicon")("aria-hidden", true);
110
- } }
111
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_container_6_Template(rf, ctx) { if (rf & 1) {
112
- i0.ɵɵelementContainerStart(0);
113
- i0.ɵɵtemplate(1, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_container_6_ng_container_1_Template, 3, 1, "ng-container", 14)(2, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_container_6_2_Template, 1, 2, null, 26);
114
- i0.ɵɵelementContainerEnd();
115
- } if (rf & 2) {
116
- const ctx_r1 = i0.ɵɵnextContext(6);
117
- i0.ɵɵadvance();
118
- i0.ɵɵproperty("ngIf", !ctx_r1.megaMenu.submenuiconTemplate);
119
- i0.ɵɵadvance();
120
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.megaMenu.submenuiconTemplate);
121
- } }
122
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_Template(rf, ctx) { if (rf & 1) {
123
- i0.ɵɵelementStart(0, "a", 18);
124
- i0.ɵɵtemplate(1, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_span_1_Template, 1, 4, "span", 19)(2, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_span_2_Template, 2, 2, "span", 20)(3, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_template_3_Template, 1, 2, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor)(5, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_p_badge_5_Template, 1, 2, "p-badge", 21)(6, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_container_6_Template, 3, 2, "ng-container", 14);
125
- i0.ɵɵelementEnd();
126
- } if (rf & 2) {
127
- const htmlLabel_r5 = i0.ɵɵreference(4);
128
- const processedItem_r3 = i0.ɵɵnextContext(3).$implicit;
129
- const ctx_r1 = i0.ɵɵnextContext(2);
130
- i0.ɵɵproperty("target", ctx_r1.getItemProp(processedItem_r3, "target"))("ngClass", i0.ɵɵpureFunction1(11, _c3, ctx_r1.getItemProp(processedItem_r3, "disabled")));
131
- i0.ɵɵattribute("href", ctx_r1.getItemProp(processedItem_r3, "url"), i0.ɵɵsanitizeUrl)("data-automationid", ctx_r1.getItemProp(processedItem_r3, "automationId"))("data-pc-section", "action")("tabindex", -1);
132
- i0.ɵɵadvance();
133
- i0.ɵɵproperty("ngIf", ctx_r1.getItemProp(processedItem_r3, "icon"));
134
- i0.ɵɵadvance();
135
- i0.ɵɵproperty("ngIf", ctx_r1.getItemProp(processedItem_r3, "escape"))("ngIfElse", htmlLabel_r5);
136
- i0.ɵɵadvance(3);
137
- i0.ɵɵproperty("ngIf", ctx_r1.getItemProp(processedItem_r3, "badge"));
138
- i0.ɵɵadvance();
139
- i0.ɵɵproperty("ngIf", ctx_r1.isItemGroup(processedItem_r3));
140
- } }
141
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_span_1_Template(rf, ctx) { if (rf & 1) {
142
- i0.ɵɵelement(0, "span", 22);
143
- } if (rf & 2) {
144
- const processedItem_r3 = i0.ɵɵnextContext(4).$implicit;
145
- const ctx_r1 = i0.ɵɵnextContext(2);
146
- i0.ɵɵproperty("ngClass", ctx_r1.getItemProp(processedItem_r3, "icon"))("ngStyle", ctx_r1.getItemProp(processedItem_r3, "iconStyle"));
147
- i0.ɵɵattribute("data-pc-section", "icon")("aria-hidden", true)("tabindex", -1);
148
- } }
149
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_span_2_Template(rf, ctx) { if (rf & 1) {
150
- i0.ɵɵelementStart(0, "span", 23);
151
- i0.ɵɵtext(1);
152
- i0.ɵɵelementEnd();
153
- } if (rf & 2) {
154
- const processedItem_r3 = i0.ɵɵnextContext(4).$implicit;
155
- const ctx_r1 = i0.ɵɵnextContext(2);
156
- i0.ɵɵadvance();
157
- i0.ɵɵtextInterpolate(ctx_r1.getItemLabel(processedItem_r3));
158
- } }
159
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_ng_template_3_Template(rf, ctx) { if (rf & 1) {
160
- i0.ɵɵelement(0, "span", 24);
161
- } if (rf & 2) {
162
- const processedItem_r3 = i0.ɵɵnextContext(4).$implicit;
163
- const ctx_r1 = i0.ɵɵnextContext(2);
164
- i0.ɵɵproperty("innerHTML", ctx_r1.getItemLabel(processedItem_r3), i0.ɵɵsanitizeHtml);
165
- i0.ɵɵattribute("data-pc-section", "label");
166
- } }
167
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_p_badge_5_Template(rf, ctx) { if (rf & 1) {
168
- i0.ɵɵelement(0, "p-badge", 25);
169
- } if (rf & 2) {
170
- const processedItem_r3 = i0.ɵɵnextContext(4).$implicit;
171
- const ctx_r1 = i0.ɵɵnextContext(2);
172
- i0.ɵɵproperty("styleClass", ctx_r1.getItemProp(processedItem_r3, "badgeStyleClass"))("value", ctx_r1.getItemProp(processedItem_r3, "badge"));
173
- } }
174
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_ng_container_6_ng_container_1_AngleDownIcon_1_Template(rf, ctx) { if (rf & 1) {
175
- i0.ɵɵelement(0, "AngleDownIcon", 32);
176
- } if (rf & 2) {
177
- i0.ɵɵproperty("styleClass", "p-megamenu-submenu-icon");
178
- i0.ɵɵattribute("data-pc-section", "submenuicon")("aria-hidden", true);
179
- } }
180
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_ng_container_6_ng_container_1_AngleRightIcon_2_Template(rf, ctx) { if (rf & 1) {
181
- i0.ɵɵelement(0, "AngleRightIcon", 32);
182
- } if (rf & 2) {
183
- i0.ɵɵproperty("styleClass", "p-megamenu-submenu-icon");
184
- i0.ɵɵattribute("data-pc-section", "submenuicon")("aria-hidden", true);
185
- } }
186
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_ng_container_6_ng_container_1_Template(rf, ctx) { if (rf & 1) {
187
- i0.ɵɵelementContainerStart(0);
188
- i0.ɵɵtemplate(1, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_ng_container_6_ng_container_1_AngleDownIcon_1_Template, 1, 3, "AngleDownIcon", 31)(2, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_ng_container_6_ng_container_1_AngleRightIcon_2_Template, 1, 3, "AngleRightIcon", 31);
189
- i0.ɵɵelementContainerEnd();
190
- } if (rf & 2) {
191
- const ctx_r1 = i0.ɵɵnextContext(7);
192
- i0.ɵɵadvance();
193
- i0.ɵɵproperty("ngIf", ctx_r1.orientation === "horizontal");
194
- i0.ɵɵadvance();
195
- i0.ɵɵproperty("ngIf", ctx_r1.orientation === "vertical");
196
- } }
197
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_ng_container_6_2_ng_template_0_Template(rf, ctx) { }
198
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_ng_container_6_2_Template(rf, ctx) { if (rf & 1) {
199
- i0.ɵɵtemplate(0, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_ng_container_6_2_ng_template_0_Template, 0, 0, "ng-template", 29);
200
- } if (rf & 2) {
201
- i0.ɵɵproperty("data-pc-section", "submenuicon")("aria-hidden", true);
202
- } }
203
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_ng_container_6_Template(rf, ctx) { if (rf & 1) {
204
- i0.ɵɵelementContainerStart(0);
205
- i0.ɵɵtemplate(1, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_ng_container_6_ng_container_1_Template, 3, 2, "ng-container", 14)(2, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_ng_container_6_2_Template, 1, 2, null, 26);
206
- i0.ɵɵelementContainerEnd();
207
- } if (rf & 2) {
208
- const ctx_r1 = i0.ɵɵnextContext(6);
209
- i0.ɵɵadvance();
210
- i0.ɵɵproperty("ngIf", !ctx_r1.megaMenu.submenuiconTemplate);
211
- i0.ɵɵadvance();
212
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.megaMenu.submenuiconTemplate);
213
- } }
214
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_Template(rf, ctx) { if (rf & 1) {
215
- i0.ɵɵelementStart(0, "a", 30);
216
- i0.ɵɵtemplate(1, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_span_1_Template, 1, 5, "span", 19)(2, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_span_2_Template, 2, 1, "span", 20)(3, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_ng_template_3_Template, 1, 2, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor)(5, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_p_badge_5_Template, 1, 2, "p-badge", 21)(6, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_ng_container_6_Template, 3, 2, "ng-container", 14);
217
- i0.ɵɵelementEnd();
218
- } if (rf & 2) {
219
- const htmlRouteLabel_r6 = i0.ɵɵreference(4);
220
- const processedItem_r3 = i0.ɵɵnextContext(3).$implicit;
221
- const ctx_r1 = i0.ɵɵnextContext(2);
222
- i0.ɵɵproperty("routerLink", ctx_r1.getItemProp(processedItem_r3, "routerLink"))("queryParams", ctx_r1.getItemProp(processedItem_r3, "queryParams"))("routerLinkActive", "p-megamenu-item-link-active")("routerLinkActiveOptions", ctx_r1.getItemProp(processedItem_r3, "routerLinkActiveOptions") || i0.ɵɵpureFunction0(21, _c4))("target", ctx_r1.getItemProp(processedItem_r3, "target"))("ngClass", i0.ɵɵpureFunction1(22, _c3, ctx_r1.getItemProp(processedItem_r3, "disabled")))("fragment", ctx_r1.getItemProp(processedItem_r3, "fragment"))("queryParamsHandling", ctx_r1.getItemProp(processedItem_r3, "queryParamsHandling"))("preserveFragment", ctx_r1.getItemProp(processedItem_r3, "preserveFragment"))("skipLocationChange", ctx_r1.getItemProp(processedItem_r3, "skipLocationChange"))("replaceUrl", ctx_r1.getItemProp(processedItem_r3, "replaceUrl"))("state", ctx_r1.getItemProp(processedItem_r3, "state"));
223
- i0.ɵɵattribute("data-automationid", ctx_r1.getItemProp(processedItem_r3, "automationId"))("tabindex", -1)("aria-hidden", true)("data-pc-section", "action");
224
- i0.ɵɵadvance();
225
- i0.ɵɵproperty("ngIf", ctx_r1.getItemProp(processedItem_r3, "icon"));
226
- i0.ɵɵadvance();
227
- i0.ɵɵproperty("ngIf", ctx_r1.getItemProp(processedItem_r3, "escape"))("ngIfElse", htmlRouteLabel_r6);
228
- i0.ɵɵadvance(3);
229
- i0.ɵɵproperty("ngIf", ctx_r1.getItemProp(processedItem_r3, "badge"));
230
- i0.ɵɵadvance();
231
- i0.ɵɵproperty("ngIf", ctx_r1.isItemGroup(processedItem_r3));
232
- } }
233
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_Template(rf, ctx) { if (rf & 1) {
234
- i0.ɵɵelementContainerStart(0);
235
- i0.ɵɵtemplate(1, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_Template, 7, 13, "a", 16)(2, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_Template, 7, 24, "a", 17);
236
- i0.ɵɵelementContainerEnd();
237
- } if (rf & 2) {
238
- const processedItem_r3 = i0.ɵɵnextContext(2).$implicit;
239
- const ctx_r1 = i0.ɵɵnextContext(2);
240
- i0.ɵɵadvance();
241
- i0.ɵɵproperty("ngIf", !ctx_r1.getItemProp(processedItem_r3, "routerLink"));
242
- i0.ɵɵadvance();
243
- i0.ɵɵproperty("ngIf", ctx_r1.getItemProp(processedItem_r3, "routerLink"));
244
- } }
245
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_4_1_ng_template_0_Template(rf, ctx) { }
246
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_4_1_Template(rf, ctx) { if (rf & 1) {
247
- i0.ɵɵtemplate(0, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_4_1_ng_template_0_Template, 0, 0, "ng-template");
248
- } }
249
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_4_Template(rf, ctx) { if (rf & 1) {
250
- i0.ɵɵelementContainerStart(0);
251
- i0.ɵɵtemplate(1, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_4_1_Template, 1, 0, null, 33);
252
- i0.ɵɵelementContainerEnd();
253
- } if (rf & 2) {
254
- const processedItem_r3 = i0.ɵɵnextContext(2).$implicit;
255
- const ctx_r1 = i0.ɵɵnextContext(2);
256
- i0.ɵɵadvance();
257
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.itemTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c5, processedItem_r3.item));
258
- } }
259
- function MegaMenuSub_ul_0_ng_template_3_li_1_div_5_div_2_p_megamenu_sub_1_Template(rf, ctx) { if (rf & 1) {
260
- const _r7 = i0.ɵɵgetCurrentView();
261
- i0.ɵɵelementStart(0, "p-megamenu-sub", 38);
262
- i0.ɵɵlistener("itemClick", function MegaMenuSub_ul_0_ng_template_3_li_1_div_5_div_2_p_megamenu_sub_1_Template_p_megamenu_sub_itemClick_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.itemClick.emit($event)); })("itemMouseEnter", function MegaMenuSub_ul_0_ng_template_3_li_1_div_5_div_2_p_megamenu_sub_1_Template_p_megamenu_sub_itemMouseEnter_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.onItemMouseEnter($event)); });
263
- i0.ɵɵelementEnd();
264
- } if (rf & 2) {
265
- const submenu_r8 = ctx.$implicit;
266
- const ctx_r1 = i0.ɵɵnextContext(6);
267
- i0.ɵɵproperty("id", ctx_r1.getSubListId(submenu_r8))("submenu", submenu_r8)("items", submenu_r8.items)("itemTemplate", ctx_r1.itemTemplate)("mobileActive", ctx_r1.mobileActive)("menuId", ctx_r1.menuId)("focusedItemId", ctx_r1.focusedItemId)("level", ctx_r1.level + 1)("root", false);
268
- } }
269
- function MegaMenuSub_ul_0_ng_template_3_li_1_div_5_div_2_Template(rf, ctx) { if (rf & 1) {
270
- i0.ɵɵelementStart(0, "div", 27);
271
- i0.ɵɵtemplate(1, MegaMenuSub_ul_0_ng_template_3_li_1_div_5_div_2_p_megamenu_sub_1_Template, 1, 9, "p-megamenu-sub", 37);
272
- i0.ɵɵelementEnd();
273
- } if (rf & 2) {
274
- const col_r9 = ctx.$implicit;
275
- const processedItem_r3 = i0.ɵɵnextContext(3).$implicit;
276
- const ctx_r1 = i0.ɵɵnextContext(2);
277
- i0.ɵɵproperty("ngClass", ctx_r1.getColumnClass(processedItem_r3));
278
- i0.ɵɵadvance();
279
- i0.ɵɵproperty("ngForOf", col_r9);
280
- } }
281
- function MegaMenuSub_ul_0_ng_template_3_li_1_div_5_Template(rf, ctx) { if (rf & 1) {
282
- i0.ɵɵelementStart(0, "div", 34)(1, "div", 35);
283
- i0.ɵɵtemplate(2, MegaMenuSub_ul_0_ng_template_3_li_1_div_5_div_2_Template, 2, 2, "div", 36);
284
- i0.ɵɵelementEnd()();
285
- } if (rf & 2) {
286
- const processedItem_r3 = i0.ɵɵnextContext(2).$implicit;
287
- i0.ɵɵattribute("data-pc-section", "panel");
288
- i0.ɵɵadvance();
289
- i0.ɵɵattribute("data-pc-section", "grid");
290
- i0.ɵɵadvance();
291
- i0.ɵɵproperty("ngForOf", processedItem_r3.items);
292
- } }
293
- function MegaMenuSub_ul_0_ng_template_3_li_1_Template(rf, ctx) { if (rf & 1) {
294
- const _r4 = i0.ɵɵgetCurrentView();
295
- i0.ɵɵelementStart(0, "li", 12, 1)(2, "div", 13);
296
- i0.ɵɵlistener("click", function MegaMenuSub_ul_0_ng_template_3_li_1_Template_div_click_2_listener($event) { i0.ɵɵrestoreView(_r4); const processedItem_r3 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onItemClick($event, processedItem_r3)); })("mouseenter", function MegaMenuSub_ul_0_ng_template_3_li_1_Template_div_mouseenter_2_listener($event) { i0.ɵɵrestoreView(_r4); const processedItem_r3 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onItemMouseEnter({ $event: $event, processedItem: processedItem_r3 })); });
297
- i0.ɵɵtemplate(3, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_Template, 3, 2, "ng-container", 14)(4, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_4_Template, 2, 4, "ng-container", 14);
298
- i0.ɵɵelementEnd();
299
- i0.ɵɵtemplate(5, MegaMenuSub_ul_0_ng_template_3_li_1_div_5_Template, 3, 3, "div", 15);
300
- i0.ɵɵelementEnd();
301
- } if (rf & 2) {
302
- const ctx_r9 = i0.ɵɵnextContext();
303
- const processedItem_r3 = ctx_r9.$implicit;
304
- const index_r11 = ctx_r9.index;
305
- const ctx_r1 = i0.ɵɵnextContext(2);
306
- i0.ɵɵclassMap(ctx_r1.getItemProp(processedItem_r3, "styleClass"));
307
- i0.ɵɵproperty("ngStyle", ctx_r1.getItemProp(processedItem_r3, "style"))("ngClass", ctx_r1.getItemClass(processedItem_r3))("tooltipOptions", ctx_r1.getItemProp(processedItem_r3, "tooltipOptions"));
308
- i0.ɵɵattribute("id", ctx_r1.getItemId(processedItem_r3))("data-pc-section", "menuitem")("data-p-highlight", ctx_r1.isItemActive(processedItem_r3))("data-p-focused", ctx_r1.isItemFocused(processedItem_r3))("data-p-disabled", ctx_r1.isItemDisabled(processedItem_r3))("aria-label", ctx_r1.getItemLabel(processedItem_r3))("aria-disabled", ctx_r1.isItemDisabled(processedItem_r3) || undefined)("aria-haspopup", ctx_r1.isItemGroup(processedItem_r3) && !ctx_r1.getItemProp(processedItem_r3, "to") ? "menu" : undefined)("aria-expanded", ctx_r1.isItemGroup(processedItem_r3) ? ctx_r1.isItemActive(processedItem_r3) : undefined)("aria-level", ctx_r1.level + 1)("aria-setsize", ctx_r1.getAriaSetSize())("aria-posinset", ctx_r1.getAriaPosInset(index_r11));
309
- i0.ɵɵadvance(2);
310
- i0.ɵɵattribute("data-pc-section", "content");
311
- i0.ɵɵadvance();
312
- i0.ɵɵproperty("ngIf", !ctx_r1.itemTemplate);
313
- i0.ɵɵadvance();
314
- i0.ɵɵproperty("ngIf", ctx_r1.itemTemplate);
315
- i0.ɵɵadvance();
316
- i0.ɵɵproperty("ngIf", ctx_r1.isItemVisible(processedItem_r3) && ctx_r1.isItemGroup(processedItem_r3));
317
- } }
318
- function MegaMenuSub_ul_0_ng_template_3_Template(rf, ctx) { if (rf & 1) {
319
- i0.ɵɵtemplate(0, MegaMenuSub_ul_0_ng_template_3_li_0_Template, 1, 5, "li", 9)(1, MegaMenuSub_ul_0_ng_template_3_li_1_Template, 6, 21, "li", 10);
320
- } if (rf & 2) {
321
- const processedItem_r3 = ctx.$implicit;
322
- const ctx_r1 = i0.ɵɵnextContext(2);
323
- i0.ɵɵproperty("ngIf", ctx_r1.isItemVisible(processedItem_r3) && ctx_r1.getItemProp(processedItem_r3, "separator"));
324
- i0.ɵɵadvance();
325
- i0.ɵɵproperty("ngIf", ctx_r1.isItemVisible(processedItem_r3) && !ctx_r1.getItemProp(processedItem_r3, "separator"));
326
- } }
327
- function MegaMenuSub_ul_0_Template(rf, ctx) { if (rf & 1) {
328
- const _r1 = i0.ɵɵgetCurrentView();
329
- i0.ɵɵelementStart(0, "ul", 5, 0);
330
- i0.ɵɵlistener("keydown", function MegaMenuSub_ul_0_Template_ul_keydown_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.menuKeydown.emit($event)); })("focus", function MegaMenuSub_ul_0_Template_ul_focus_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.menuFocus.emit($event)); })("blur", function MegaMenuSub_ul_0_Template_ul_blur_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.menuBlur.emit($event)); });
331
- i0.ɵɵtemplate(2, MegaMenuSub_ul_0_li_2_Template, 2, 4, "li", 6)(3, MegaMenuSub_ul_0_ng_template_3_Template, 2, 2, "ng-template", 7);
332
- i0.ɵɵelementEnd();
333
- } if (rf & 2) {
334
- const ctx_r1 = i0.ɵɵnextContext();
335
- i0.ɵɵstyleMap(i0.ɵɵpureFunction1(11, _c1, ctx_r1.scrollHeight));
336
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(13, _c2, ctx_r1.root, !ctx_r1.root))("tabindex", ctx_r1.tabindex);
337
- i0.ɵɵattribute("role", ctx_r1.root ? "menubar" : "menu")("id", ctx_r1.id)("aria-orientation", ctx_r1.orientation)("aria-activedescendant", ctx_r1.focusedItemId)("data-pc-section", ctx_r1.root ? "root" : "submenu");
338
- i0.ɵɵadvance(2);
339
- i0.ɵɵproperty("ngIf", ctx_r1.submenu);
340
- i0.ɵɵadvance();
341
- i0.ɵɵproperty("ngForOf", ctx_r1.items);
342
- } }
343
- const _c6 = ["start"];
344
- const _c7 = ["end"];
345
- const _c8 = ["menuicon"];
346
- const _c9 = ["submenuicon"];
347
- const _c10 = ["item"];
348
- const _c11 = ["button"];
349
- const _c12 = ["buttonicon"];
350
- const _c13 = ["menubutton"];
351
- const _c14 = ["rootmenu"];
352
- const _c15 = ["container"];
353
- const _c16 = a0 => ({ flexDirection: a0 });
354
- const _c17 = (a0, a1, a2, a3) => ({ "p-megamenu p-component": true, "p-megamenu-mobile": a0, "p-megamenu-mobile-active": a1, "p-megamenu-horizontal": a2, "p-megamenu-vertical": a3 });
355
- function MegaMenu_div_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
356
- i0.ɵɵelementContainer(0);
357
- } }
358
- function MegaMenu_div_2_Template(rf, ctx) { if (rf & 1) {
359
- i0.ɵɵelementStart(0, "div", 9);
360
- i0.ɵɵtemplate(1, MegaMenu_div_2_ng_container_1_Template, 1, 0, "ng-container", 6);
361
- i0.ɵɵelementEnd();
362
- } if (rf & 2) {
363
- const ctx_r1 = i0.ɵɵnextContext();
364
- i0.ɵɵadvance();
365
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.startTemplate);
366
- } }
367
- function MegaMenu_ng_container_3_a_1_ng_container_2_Template(rf, ctx) { if (rf & 1) {
368
- i0.ɵɵelementContainerStart(0);
369
- i0.ɵɵelement(1, "BarsIcon");
370
- i0.ɵɵelementContainerEnd();
371
- } }
372
- function MegaMenu_ng_container_3_a_1_Template(rf, ctx) { if (rf & 1) {
373
- const _r3 = i0.ɵɵgetCurrentView();
374
- i0.ɵɵelementStart(0, "a", 11, 2);
375
- i0.ɵɵlistener("click", function MegaMenu_ng_container_3_a_1_Template_a_click_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.menuButtonClick($event)); })("keydown", function MegaMenu_ng_container_3_a_1_Template_a_keydown_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.menuButtonKeydown($event)); });
376
- i0.ɵɵtemplate(2, MegaMenu_ng_container_3_a_1_ng_container_2_Template, 2, 0, "ng-container", 5);
377
- i0.ɵɵelementEnd();
378
- } if (rf & 2) {
379
- const ctx_r1 = i0.ɵɵnextContext(2);
380
- 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);
381
- i0.ɵɵadvance(2);
382
- i0.ɵɵproperty("ngIf", !ctx_r1.buttonTemplate);
383
- } }
384
- function MegaMenu_ng_container_3_Template(rf, ctx) { if (rf & 1) {
385
- i0.ɵɵelementContainerStart(0);
386
- i0.ɵɵtemplate(1, MegaMenu_ng_container_3_a_1_Template, 3, 5, "a", 10);
387
- i0.ɵɵelementContainerEnd();
388
- } if (rf & 2) {
389
- const ctx_r1 = i0.ɵɵnextContext();
390
- i0.ɵɵadvance();
391
- i0.ɵɵproperty("ngIf", ctx_r1.model && ctx_r1.model.length > 0);
392
- } }
393
- function MegaMenu_ng_container_4_Template(rf, ctx) { if (rf & 1) {
394
- i0.ɵɵelementContainer(0);
395
- } }
396
- function MegaMenu_div_7_ng_container_1_Template(rf, ctx) { if (rf & 1) {
397
- i0.ɵɵelementContainer(0);
398
- } }
399
- function MegaMenu_div_7_Template(rf, ctx) { if (rf & 1) {
400
- i0.ɵɵelementStart(0, "div", 12);
401
- i0.ɵɵtemplate(1, MegaMenu_div_7_ng_container_1_Template, 1, 0, "ng-container", 6);
402
- i0.ɵɵelementEnd();
403
- } if (rf & 2) {
404
- const ctx_r1 = i0.ɵɵnextContext();
405
- i0.ɵɵadvance();
406
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.endTemplate);
407
- } }
408
- export class MegaMenuSub extends BaseComponent {
409
- id;
410
- items;
411
- itemTemplate;
412
- menuId;
413
- ariaLabel;
414
- ariaLabelledBy;
415
- level = 0;
416
- focusedItemId;
417
- disabled = false;
418
- orientation;
419
- activeItem;
420
- submenu;
421
- queryMatches = false;
422
- mobileActive = false;
423
- scrollHeight;
424
- tabindex = 0;
425
- root = false;
426
- itemClick = new EventEmitter();
427
- itemMouseEnter = new EventEmitter();
428
- menuFocus = new EventEmitter();
429
- menuBlur = new EventEmitter();
430
- menuKeydown = new EventEmitter();
431
- menubarViewChild;
432
- megaMenu = inject(forwardRef(() => MegaMenu));
433
- onItemClick(event, processedItem) {
434
- this.getItemProp(processedItem, 'command', { originalEvent: event, item: processedItem.item });
435
- this.itemClick.emit({ originalEvent: event, processedItem, isFocus: true });
436
- }
437
- getItemProp(processedItem, name, params = null) {
438
- return processedItem && processedItem.item ? resolve(processedItem.item[name], params) : undefined;
439
- }
440
- getItemId(processedItem) {
441
- return processedItem.item && processedItem.item?.id ? processedItem.item.id : `${this.menuId}_${processedItem.key}`;
442
- }
443
- getSubListId(processedItem) {
444
- return `${this.getItemId(processedItem)}_list`;
445
- }
446
- getItemClass(processedItem) {
447
- return {
448
- ...this.getItemProp(processedItem, 'class'),
449
- 'p-megamenu-item': true,
450
- 'p-megamenu-item-active': this.isItemActive(processedItem),
451
- 'p-focus': this.isItemFocused(processedItem),
452
- 'p-disabled': this.isItemDisabled(processedItem)
453
- };
454
- }
455
- getItemLabel(processedItem) {
456
- return this.getItemProp(processedItem, 'label');
457
- }
458
- getSeparatorItemClass(processedItem) {
459
- return {
460
- ...this.getItemProp(processedItem, 'class'),
461
- 'p-megamenu-separator': true
462
- };
463
- }
464
- getColumnClass(processedItem) {
465
- let length = this.isItemGroup(processedItem) ? processedItem.items.length : 0;
466
- let columnClass;
467
- if (this.queryMatches)
468
- columnClass = 'p-megamenu-col-12';
469
- else {
470
- switch (length) {
471
- case 2:
472
- columnClass = 'p-megamenu-col-6';
473
- break;
474
- case 3:
475
- columnClass = 'p-megamenu-col-4';
476
- break;
477
- case 4:
478
- columnClass = 'p-megamenu-col-3';
479
- break;
480
- case 6:
481
- columnClass = 'p-megamenu-col-2';
482
- break;
483
- default:
484
- columnClass = 'p-megamenu-col-12';
485
- break;
486
- }
487
- }
488
- return columnClass;
489
- }
490
- getSubmenuHeaderClass(processedItem) {
491
- return {
492
- 'p-megamenu-submenu-label': true,
493
- 'p-disabled': this.isItemDisabled(processedItem),
494
- ...this.getItemProp(processedItem, 'class')
495
- };
496
- }
497
- isSubmenuVisible(submenu) {
498
- if (this.submenu && !this.root) {
499
- return this.isItemVisible(submenu);
500
- }
501
- else {
502
- return true;
503
- }
504
- }
505
- isItemVisible(processedItem) {
506
- return this.getItemProp(processedItem, 'visible') !== false;
507
- }
508
- isItemActive(processedItem) {
509
- return isNotEmpty(this.activeItem) ? this.activeItem.key === processedItem.key : false;
510
- }
511
- isItemDisabled(processedItem) {
512
- return this.getItemProp(processedItem, 'disabled');
513
- }
514
- isItemFocused(processedItem) {
515
- return this.focusedItemId === this.getItemId(processedItem);
516
- }
517
- isItemGroup(processedItem) {
518
- return isNotEmpty(processedItem.items);
519
- }
520
- getAriaSetSize() {
521
- return this.items.filter((processedItem) => this.isItemVisible(processedItem) && !this.getItemProp(processedItem, 'separator')).length;
522
- }
523
- getAriaPosInset(index) {
524
- return index - this.items.slice(0, index).filter((processedItem) => this.isItemVisible(processedItem) && this.getItemProp(processedItem, 'separator')).length + 1;
525
- }
526
- onItemMouseEnter(param) {
527
- const { event, processedItem } = param;
528
- this.itemMouseEnter.emit({ originalEvent: event, processedItem });
529
- }
530
- static ɵfac = /*@__PURE__*/ (() => { let ɵMegaMenuSub_BaseFactory; return function MegaMenuSub_Factory(__ngFactoryType__) { return (ɵMegaMenuSub_BaseFactory || (ɵMegaMenuSub_BaseFactory = i0.ɵɵgetInheritedFactory(MegaMenuSub)))(__ngFactoryType__ || MegaMenuSub); }; })();
531
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MegaMenuSub, selectors: [["p-megaMenuSub"], ["p-megamenu-sub"]], viewQuery: function MegaMenuSub_Query(rf, ctx) { if (rf & 1) {
532
- i0.ɵɵviewQuery(_c0, 7);
533
- } if (rf & 2) {
534
- let _t;
535
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.menubarViewChild = _t.first);
536
- } }, inputs: { id: "id", items: "items", itemTemplate: "itemTemplate", menuId: "menuId", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", level: [2, "level", "level", numberAttribute], focusedItemId: "focusedItemId", disabled: [2, "disabled", "disabled", booleanAttribute], orientation: "orientation", activeItem: "activeItem", submenu: "submenu", queryMatches: [2, "queryMatches", "queryMatches", booleanAttribute], mobileActive: [2, "mobileActive", "mobileActive", booleanAttribute], scrollHeight: "scrollHeight", tabindex: [2, "tabindex", "tabindex", numberAttribute], root: [2, "root", "root", booleanAttribute] }, outputs: { itemClick: "itemClick", itemMouseEnter: "itemMouseEnter", menuFocus: "menuFocus", menuBlur: "menuBlur", menuKeydown: "menuKeydown" }, standalone: true, features: [i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], decls: 1, vars: 1, consts: [["menubar", ""], ["listItem", ""], ["htmlLabel", ""], ["htmlRouteLabel", ""], [3, "ngClass", "style", "tabindex", "keydown", "focus", "blur", 4, "ngIf"], [3, "keydown", "focus", "blur", "ngClass", "tabindex"], ["role", "presentation", 3, "ngClass", "style", 4, "ngIf"], ["ngFor", "", 3, "ngForOf"], ["role", "presentation", 3, "ngClass"], ["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-megamenu-item-content", 3, "click", "mouseenter"], [4, "ngIf"], ["class", "p-megamenu-overlay", 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-megamenu-item-icon", 3, "ngClass", "ngStyle", 4, "ngIf"], ["class", "p-megamenu-item-label", 4, "ngIf", "ngIfElse"], [3, "styleClass", "value", 4, "ngIf"], [1, "p-megamenu-item-icon", 3, "ngClass", "ngStyle"], [1, "p-megamenu-item-label"], [1, "p-megamenu-item-label", 3, "innerHTML"], [3, "styleClass", "value"], [4, "ngTemplateOutlet"], [3, "ngClass"], [3, "ngClass", 4, "ngIf"], [3, "data-pc-section", "aria-hidden"], ["pRipple", "", 3, "routerLink", "queryParams", "routerLinkActive", "routerLinkActiveOptions", "target", "ngClass", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state"], [3, "styleClass", 4, "ngIf"], [3, "styleClass"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "p-megamenu-overlay"], [1, "p-megamenu-grid"], [3, "ngClass", 4, "ngFor", "ngForOf"], [3, "id", "submenu", "items", "itemTemplate", "mobileActive", "menuId", "focusedItemId", "level", "root", "itemClick", "itemMouseEnter", 4, "ngFor", "ngForOf"], [3, "itemClick", "itemMouseEnter", "id", "submenu", "items", "itemTemplate", "mobileActive", "menuId", "focusedItemId", "level", "root"]], template: function MegaMenuSub_Template(rf, ctx) { if (rf & 1) {
537
- i0.ɵɵtemplate(0, MegaMenuSub_ul_0_Template, 4, 16, "ul", 4);
538
- } if (rf & 2) {
539
- i0.ɵɵproperty("ngIf", ctx.isSubmenuVisible(ctx.submenu));
540
- } }, dependencies: [MegaMenuSub, 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 });
541
- }
542
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MegaMenuSub, [{
543
- type: Component,
544
- args: [{
545
- selector: 'p-megaMenuSub, p-megamenu-sub',
546
- standalone: true,
547
- imports: [CommonModule, RouterModule, Ripple, TooltipModule, AngleDownIcon, AngleRightIcon, BadgeModule, SharedModule],
548
- template: `
549
- <ul
550
- *ngIf="isSubmenuVisible(submenu)"
551
- #menubar
552
- [ngClass]="{ 'p-megamenu-root-list': root, 'p-megamenu-submenu': !root }"
553
- [style]="{ 'max-height': scrollHeight, overflow: 'auto' }"
554
- [attr.role]="root ? 'menubar' : 'menu'"
555
- [attr.id]="id"
556
- [attr.aria-orientation]="orientation"
557
- [tabindex]="tabindex"
558
- [attr.aria-activedescendant]="focusedItemId"
559
- [attr.data-pc-section]="root ? 'root' : 'submenu'"
560
- (keydown)="menuKeydown.emit($event)"
561
- (focus)="menuFocus.emit($event)"
562
- (blur)="menuBlur.emit($event)"
563
- >
564
- <li *ngIf="submenu" [ngClass]="getSubmenuHeaderClass(submenu)" [style]="getItemProp(submenu, 'style')" role="presentation">
565
- {{ getItemLabel(submenu) }}
566
- </li>
567
- <ng-template ngFor let-processedItem [ngForOf]="items" let-index="index">
568
- <li
569
- *ngIf="isItemVisible(processedItem) && getItemProp(processedItem, 'separator')"
570
- [attr.id]="getItemId(processedItem)"
571
- [style]="getItemProp(processedItem, 'style')"
572
- [ngClass]="getSeparatorItemClass(processedItem)"
573
- role="separator"
574
- [attr.data-pc-section]="'separator'"
575
- ></li>
576
- <li
577
- #listItem
578
- *ngIf="isItemVisible(processedItem) && !getItemProp(processedItem, 'separator')"
579
- role="menuitem"
580
- [attr.id]="getItemId(processedItem)"
581
- [attr.data-pc-section]="'menuitem'"
582
- [attr.data-p-highlight]="isItemActive(processedItem)"
583
- [attr.data-p-focused]="isItemFocused(processedItem)"
584
- [attr.data-p-disabled]="isItemDisabled(processedItem)"
585
- [attr.aria-label]="getItemLabel(processedItem)"
586
- [attr.aria-disabled]="isItemDisabled(processedItem) || undefined"
587
- [attr.aria-haspopup]="isItemGroup(processedItem) && !getItemProp(processedItem, 'to') ? 'menu' : undefined"
588
- [attr.aria-expanded]="isItemGroup(processedItem) ? isItemActive(processedItem) : undefined"
589
- [attr.aria-level]="level + 1"
590
- [attr.aria-setsize]="getAriaSetSize()"
591
- [attr.aria-posinset]="getAriaPosInset(index)"
592
- [ngStyle]="getItemProp(processedItem, 'style')"
593
- [ngClass]="getItemClass(processedItem)"
594
- [class]="getItemProp(processedItem, 'styleClass')"
595
- pTooltip
596
- [tooltipOptions]="getItemProp(processedItem, 'tooltipOptions')"
597
- >
598
- <div class="p-megamenu-item-content" [attr.data-pc-section]="'content'" (click)="onItemClick($event, processedItem)" (mouseenter)="onItemMouseEnter({ $event, processedItem })">
599
- <ng-container *ngIf="!itemTemplate">
600
- <a
601
- *ngIf="!getItemProp(processedItem, 'routerLink')"
602
- [attr.href]="getItemProp(processedItem, 'url')"
603
- [attr.data-automationid]="getItemProp(processedItem, 'automationId')"
604
- [attr.data-pc-section]="'action'"
605
- [target]="getItemProp(processedItem, 'target')"
606
- [ngClass]="{ 'p-megamenu-item-link': true, 'p-disabled': getItemProp(processedItem, 'disabled') }"
607
- [attr.tabindex]="-1"
608
- pRipple
609
- >
610
- <span
611
- *ngIf="getItemProp(processedItem, 'icon')"
612
- class="p-megamenu-item-icon"
613
- [ngClass]="getItemProp(processedItem, 'icon')"
614
- [ngStyle]="getItemProp(processedItem, 'iconStyle')"
615
- [attr.data-pc-section]="'icon'"
616
- [attr.tabindex]="-1"
617
- >
618
- </span>
619
- <span *ngIf="getItemProp(processedItem, 'escape'); else htmlLabel" class="p-megamenu-item-label" [attr.data-pc-section]="'label'">
620
- {{ getItemLabel(processedItem) }}
621
- </span>
622
- <ng-template #htmlLabel>
623
- <span class="p-megamenu-item-label" [innerHTML]="getItemLabel(processedItem)" [attr.data-pc-section]="'label'"></span>
624
- </ng-template>
625
- <p-badge *ngIf="getItemProp(processedItem, 'badge')" [styleClass]="getItemProp(processedItem, 'badgeStyleClass')" [value]="getItemProp(processedItem, 'badge')" />
626
- <ng-container *ngIf="isItemGroup(processedItem)">
627
- <ng-container *ngIf="!megaMenu.submenuiconTemplate">
628
- @if (orientation === 'horizontal' || mobileActive) {
629
- <AngleDownIcon [ngClass]="'p-megamenu-submenu-icon'" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true" />
630
- } @else {
631
- <AngleRightIcon [ngClass]="'p-megamenu-submenu-icon'" [attr.data-pc-section]="'submenuicon'" *ngIf="orientation === 'vertical'" [attr.aria-hidden]="true" />
632
- }
633
- </ng-container>
634
- <ng-template *ngTemplateOutlet="megaMenu.submenuiconTemplate" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true"></ng-template>
635
- </ng-container>
636
- </a>
637
- <a
638
- *ngIf="getItemProp(processedItem, 'routerLink')"
639
- [routerLink]="getItemProp(processedItem, 'routerLink')"
640
- [attr.data-automationid]="getItemProp(processedItem, 'automationId')"
641
- [attr.tabindex]="-1"
642
- [attr.aria-hidden]="true"
643
- [attr.data-pc-section]="'action'"
644
- [queryParams]="getItemProp(processedItem, 'queryParams')"
645
- [routerLinkActive]="'p-megamenu-item-link-active'"
646
- [routerLinkActiveOptions]="getItemProp(processedItem, 'routerLinkActiveOptions') || { exact: false }"
647
- [target]="getItemProp(processedItem, 'target')"
648
- [ngClass]="{ 'p-megamenu-item-link': true, 'p-disabled': getItemProp(processedItem, 'disabled') }"
649
- [fragment]="getItemProp(processedItem, 'fragment')"
650
- [queryParamsHandling]="getItemProp(processedItem, 'queryParamsHandling')"
651
- [preserveFragment]="getItemProp(processedItem, 'preserveFragment')"
652
- [skipLocationChange]="getItemProp(processedItem, 'skipLocationChange')"
653
- [replaceUrl]="getItemProp(processedItem, 'replaceUrl')"
654
- [state]="getItemProp(processedItem, 'state')"
655
- pRipple
656
- >
657
- <span
658
- class="p-megamenu-item-icon"
659
- *ngIf="getItemProp(processedItem, 'icon')"
660
- [ngClass]="getItemProp(processedItem, 'icon')"
661
- [ngStyle]="getItemProp(processedItem, 'iconStyle')"
662
- [attr.data-pc-section]="'icon'"
663
- [attr.aria-hidden]="true"
664
- [attr.tabindex]="-1"
665
- ></span>
666
- <span class="p-megamenu-item-label" *ngIf="getItemProp(processedItem, 'escape'); else htmlRouteLabel">{{ getItemLabel(processedItem) }}</span>
667
- <ng-template #htmlRouteLabel><span class="p-megamenu-item-label" [innerHTML]="getItemLabel(processedItem)" [attr.data-pc-section]="'label'"></span></ng-template>
668
- <p-badge *ngIf="getItemProp(processedItem, 'badge')" [styleClass]="getItemProp(processedItem, 'badgeStyleClass')" [value]="getItemProp(processedItem, 'badge')" />
669
- <ng-container *ngIf="isItemGroup(processedItem)">
670
- <ng-container *ngIf="!megaMenu.submenuiconTemplate">
671
- <AngleDownIcon [styleClass]="'p-megamenu-submenu-icon'" [attr.data-pc-section]="'submenuicon'" *ngIf="orientation === 'horizontal'" [attr.aria-hidden]="true" />
672
- <AngleRightIcon [styleClass]="'p-megamenu-submenu-icon'" [attr.data-pc-section]="'submenuicon'" *ngIf="orientation === 'vertical'" [attr.aria-hidden]="true" />
673
- </ng-container>
674
- <ng-template *ngTemplateOutlet="megaMenu.submenuiconTemplate" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true"></ng-template>
675
- </ng-container>
676
- </a>
677
- </ng-container>
678
- <ng-container *ngIf="itemTemplate">
679
- <ng-template *ngTemplateOutlet="itemTemplate; context: { $implicit: processedItem.item }"></ng-template>
680
- </ng-container>
681
- </div>
682
- <div *ngIf="isItemVisible(processedItem) && isItemGroup(processedItem)" class="p-megamenu-overlay" [attr.data-pc-section]="'panel'">
683
- <div class="p-megamenu-grid" [attr.data-pc-section]="'grid'">
684
- <div *ngFor="let col of processedItem.items" [ngClass]="getColumnClass(processedItem)">
685
- <p-megamenu-sub
686
- *ngFor="let submenu of col"
687
- [id]="getSubListId(submenu)"
688
- [submenu]="submenu"
689
- [items]="submenu.items"
690
- [itemTemplate]="itemTemplate"
691
- [mobileActive]="mobileActive"
692
- [menuId]="menuId"
693
- [focusedItemId]="focusedItemId"
694
- [level]="level + 1"
695
- [root]="false"
696
- (itemClick)="itemClick.emit($event)"
697
- (itemMouseEnter)="onItemMouseEnter($event)"
698
- >
699
- </p-megamenu-sub>
700
- </div>
701
- </div>
702
- </div>
703
- </li>
704
- </ng-template>
705
- </ul>
706
- `,
707
- encapsulation: ViewEncapsulation.None
708
- }]
709
- }], null, { id: [{
710
- type: Input
711
- }], items: [{
712
- type: Input
713
- }], itemTemplate: [{
714
- type: Input
715
- }], menuId: [{
716
- type: Input
717
- }], ariaLabel: [{
718
- type: Input
719
- }], ariaLabelledBy: [{
720
- type: Input
721
- }], level: [{
722
- type: Input,
723
- args: [{ transform: numberAttribute }]
724
- }], focusedItemId: [{
725
- type: Input
726
- }], disabled: [{
727
- type: Input,
728
- args: [{ transform: booleanAttribute }]
729
- }], orientation: [{
730
- type: Input
731
- }], activeItem: [{
732
- type: Input
733
- }], submenu: [{
734
- type: Input
735
- }], queryMatches: [{
736
- type: Input,
737
- args: [{ transform: booleanAttribute }]
738
- }], mobileActive: [{
739
- type: Input,
740
- args: [{ transform: booleanAttribute }]
741
- }], scrollHeight: [{
742
- type: Input
743
- }], tabindex: [{
744
- type: Input,
745
- args: [{ transform: numberAttribute }]
746
- }], root: [{
747
- type: Input,
748
- args: [{ transform: booleanAttribute }]
749
- }], itemClick: [{
750
- type: Output
751
- }], itemMouseEnter: [{
752
- type: Output
753
- }], menuFocus: [{
754
- type: Output
755
- }], menuBlur: [{
756
- type: Output
757
- }], menuKeydown: [{
758
- type: Output
759
- }], menubarViewChild: [{
760
- type: ViewChild,
761
- args: ['menubar', { static: true }]
762
- }] }); })();
763
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MegaMenuSub, { className: "MegaMenuSub" }); })();
764
- /**
765
- * MegaMenu is navigation component that displays submenus together.
766
- * @group Components
767
- */
768
- export class MegaMenu extends BaseComponent {
769
- /**
770
- * An array of menuitems.
771
- * @group Props
772
- */
773
- set model(value) {
774
- this._model = value;
775
- this._processedItems = this.createProcessedItems(this._model || []);
776
- }
777
- get model() {
778
- return this._model;
779
- }
780
- /**
781
- * Inline style of the element.
782
- * @group Props
783
- */
784
- style;
785
- /**
786
- * Class of the element.
787
- * @group Props
788
- */
789
- styleClass;
790
- /**
791
- * Defines the orientation.
792
- * @group Props
793
- */
794
- orientation = 'horizontal';
795
- /**
796
- * Current id state as a string.
797
- * @group Props
798
- */
799
- id;
800
- /**
801
- * Defines a string value that labels an interactive element.
802
- * @group Props
803
- */
804
- ariaLabel;
805
- /**
806
- * Identifier of the underlying input element.
807
- * @group Props
808
- */
809
- ariaLabelledBy;
810
- /**
811
- * The breakpoint to define the maximum width boundary.
812
- * @group Props
813
- */
814
- breakpoint = '960px';
815
- /**
816
- * Height of the viewport, a scrollbar is defined if height of list exceeds this value.
817
- * @group Props
818
- */
819
- scrollHeight = '20rem';
820
- /**
821
- * When present, it specifies that the component should be disabled.
822
- * @group Props
823
- */
824
- disabled = false;
825
- /**
826
- * Index of the element in tabbing order.
827
- * @group Props
828
- */
829
- tabindex = 0;
830
- /**
831
- * Defines template option for start.
832
- * @group Templates
833
- */
834
- startTemplate;
835
- /**
836
- * Defines template option for end.
837
- * @group Templates
838
- */
839
- endTemplate;
840
- /**
841
- * Defines template option for menu icon.
842
- * @group Templates
843
- */
844
- menuiconTemplate;
845
- /**
846
- * Defines template option for submenu icon.
847
- * @group Templates
848
- */
849
- submenuiconTemplate;
850
- /**
851
- * Defines template option for submenu icon.
852
- * @group Templates
853
- */
854
- itemTemplate;
855
- /**
856
- * Custom menu button template on responsive mode.
857
- * @group Templates
858
- */
859
- buttonTemplate;
860
- /**
861
- * Custom menu button icon template on responsive mode.
862
- * @group Templates
863
- */
864
- buttoniconTemplate;
865
- menubuttonViewChild;
866
- rootmenu;
867
- container;
868
- outsideClickListener;
869
- resizeListener;
870
- dirty = false;
871
- focused = false;
872
- activeItem = signal(null);
873
- focusedItemInfo = signal({ index: -1, level: 0, parentKey: '', item: null });
874
- searchValue = '';
875
- searchTimeout;
876
- _processedItems;
877
- _model;
878
- _componentStyle = inject(MegaMenuStyle);
879
- matchMediaListener;
880
- query;
881
- queryMatches = false;
882
- mobileActive = false;
883
- get visibleItems() {
884
- const processedItem = isNotEmpty(this.activeItem()) ? this.activeItem() : null;
885
- return processedItem
886
- ? processedItem.items.reduce((items, col) => {
887
- col.forEach((submenu) => {
888
- submenu.items.forEach((a) => {
889
- items.push(a);
890
- });
891
- });
892
- return items;
893
- }, [])
894
- : this.processedItems;
895
- }
896
- get processedItems() {
897
- if (!this._processedItems || !this._processedItems.length) {
898
- this._processedItems = this.createProcessedItems(this.model || []);
899
- }
900
- return this._processedItems;
901
- }
902
- get focusedItemId() {
903
- const focusedItem = this.focusedItemInfo();
904
- return focusedItem?.item && focusedItem.item?.id ? focusedItem.item.id : isNotEmpty(focusedItem.key) ? `${this.id}_${focusedItem.key}` : null;
905
- }
906
- constructor() {
907
- super();
908
- effect(() => {
909
- const activeItem = this.activeItem();
910
- if (isNotEmpty(activeItem)) {
911
- this.bindOutsideClickListener();
912
- this.bindResizeListener();
913
- }
914
- else {
915
- this.unbindOutsideClickListener();
916
- this.unbindResizeListener();
917
- }
918
- });
919
- }
920
- ngOnInit() {
921
- super.ngOnInit();
922
- this.bindMatchMediaListener();
923
- this.id = this.id || uuid('pn_id_');
924
- }
925
- bindMatchMediaListener() {
926
- if (isPlatformBrowser(this.platformId)) {
927
- if (!this.matchMediaListener) {
928
- const query = window.matchMedia(`(max-width: ${this.breakpoint})`);
929
- this.query = query;
930
- this.queryMatches = query.matches;
931
- this.matchMediaListener = () => {
932
- this.queryMatches = query.matches;
933
- this.mobileActive = false;
934
- this.cd.markForCheck();
935
- };
936
- query.addEventListener('change', this.matchMediaListener);
937
- }
938
- }
939
- }
940
- unbindMatchMediaListener() {
941
- if (this.matchMediaListener) {
942
- this.query.removeEventListener('change', this.matchMediaListener);
943
- this.matchMediaListener = null;
944
- }
945
- }
946
- createProcessedItems(items, level = 0, parent = {}, parentKey = '', columnIndex) {
947
- const processedItems = [];
948
- items &&
949
- items.forEach((item, index) => {
950
- const key = (parentKey !== '' ? parentKey + '_' : '') + (columnIndex !== undefined ? columnIndex + '_' : '') + index;
951
- const newItem = {
952
- item,
953
- index,
954
- level,
955
- key,
956
- parent,
957
- parentKey,
958
- columnIndex: columnIndex !== undefined ? columnIndex : parent.columnIndex !== undefined ? parent.columnIndex : index
959
- };
960
- newItem['items'] =
961
- level === 0 && item.items && item.items.length > 0 ? item.items.map((_items, _index) => this.createProcessedItems(_items, level + 1, newItem, key, _index)) : this.createProcessedItems(item.items, level + 1, newItem, key);
962
- processedItems.push(newItem);
963
- });
964
- return processedItems;
965
- }
966
- getItemProp(item, name) {
967
- return item ? resolve(item[name]) : undefined;
968
- }
969
- onItemClick(event) {
970
- const { originalEvent, processedItem } = event;
971
- const grouped = this.isProcessedItemGroup(processedItem);
972
- const root = isEmpty(processedItem.parent);
973
- const selected = this.isSelected(processedItem);
974
- if (selected) {
975
- const { index, key, parentKey, item } = processedItem;
976
- this.activeItem.set(null);
977
- this.focusedItemInfo.set({ index, key, parentKey, item });
978
- this.dirty = !root;
979
- if (!this.mobileActive) {
980
- focus(this.rootmenu?.menubarViewChild?.nativeElement, { preventScroll: true });
981
- }
982
- }
983
- else {
984
- if (grouped) {
985
- this.onItemChange(event);
986
- }
987
- else {
988
- this.hide(originalEvent);
989
- }
990
- }
991
- }
992
- onItemMouseEnter(event) {
993
- if (!this.mobileActive && this.dirty) {
994
- this.onItemChange(event);
995
- }
996
- }
997
- menuButtonClick(event) {
998
- this.toggle(event);
999
- }
1000
- menuButtonKeydown(event) {
1001
- (event.code === 'Enter' || event.code === 'NumpadEnter' || event.code === 'Space') && this.menuButtonClick(event);
1002
- }
1003
- toggle(event) {
1004
- if (this.mobileActive) {
1005
- this.mobileActive = false;
1006
- ZIndexUtils.clear(this.rootmenu.el.nativeElement);
1007
- this.hide();
1008
- }
1009
- else {
1010
- this.mobileActive = true;
1011
- ZIndexUtils.set('menu', this.rootmenu.el.nativeElement, this.config.zIndex.menu);
1012
- setTimeout(() => {
1013
- this.show();
1014
- }, 0);
1015
- }
1016
- this.bindOutsideClickListener();
1017
- event.preventDefault();
1018
- }
1019
- show() {
1020
- this.focusedItemInfo.set({ index: this.findFirstFocusedItemIndex(), level: 0, parentKey: '' });
1021
- focus(this.rootmenu?.el.nativeElement);
1022
- }
1023
- scrollInView(index = -1) {
1024
- const id = index !== -1 ? `${this.id}_${index}` : this.focusedItemId;
1025
- let element;
1026
- if (id === null && this.queryMatches) {
1027
- element = this.menubuttonViewChild.nativeElement;
1028
- }
1029
- else {
1030
- element = findSingle(this.rootmenu?.menubarViewChild?.nativeElement, `li[id="${id}"]`);
1031
- }
1032
- if (element) {
1033
- element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'nearest', behavior: 'smooth' });
1034
- }
1035
- }
1036
- onItemChange(event) {
1037
- const { processedItem, isFocus } = event;
1038
- if (isEmpty(processedItem))
1039
- return;
1040
- const { index, key, parentKey, items, item } = processedItem;
1041
- const grouped = isNotEmpty(items);
1042
- if (grouped) {
1043
- this.activeItem.set(processedItem);
1044
- }
1045
- this.focusedItemInfo.set({ index, key, parentKey, item });
1046
- grouped && (this.dirty = true);
1047
- isFocus && focus(this.rootmenu?.menubarViewChild?.nativeElement);
1048
- }
1049
- hide(event, isFocus) {
1050
- if (this.mobileActive) {
1051
- this.mobileActive = false;
1052
- setTimeout(() => {
1053
- focus(this.menubuttonViewChild?.nativeElement);
1054
- this.scrollInView();
1055
- }, 100);
1056
- }
1057
- this.activeItem.set(null);
1058
- this.focusedItemInfo.set({ index: -1, key: '', parentKey: '', item: null });
1059
- isFocus && focus(this.rootmenu?.menubarViewChild?.nativeElement);
1060
- this.dirty = false;
1061
- }
1062
- onMenuFocus(event) {
1063
- this.focused = true;
1064
- if (this.focusedItemInfo().index === -1) {
1065
- const index = this.findFirstFocusedItemIndex();
1066
- const processedItem = this.findVisibleItem(index);
1067
- this.focusedItemInfo.set({ index, key: processedItem.key, parentKey: processedItem.parentKey, item: processedItem.item });
1068
- }
1069
- }
1070
- onMenuBlur(event) {
1071
- this.focused = false;
1072
- this.focusedItemInfo.set({ index: -1, level: 0, parentKey: '', item: null });
1073
- this.searchValue = '';
1074
- this.dirty = false;
1075
- }
1076
- onKeyDown(event) {
1077
- const metaKey = event.metaKey || event.ctrlKey;
1078
- switch (event.code) {
1079
- case 'ArrowDown':
1080
- this.onArrowDownKey(event);
1081
- break;
1082
- case 'ArrowUp':
1083
- this.onArrowUpKey(event);
1084
- break;
1085
- case 'ArrowLeft':
1086
- this.onArrowLeftKey(event);
1087
- break;
1088
- case 'ArrowRight':
1089
- this.onArrowRightKey(event);
1090
- break;
1091
- case 'Home':
1092
- this.onHomeKey(event);
1093
- break;
1094
- case 'End':
1095
- this.onEndKey(event);
1096
- break;
1097
- case 'Space':
1098
- this.onSpaceKey(event);
1099
- break;
1100
- case 'Enter':
1101
- this.onEnterKey(event);
1102
- break;
1103
- case 'Escape':
1104
- this.onEscapeKey(event);
1105
- break;
1106
- case 'Tab':
1107
- this.onTabKey(event);
1108
- break;
1109
- case 'PageDown':
1110
- case 'PageUp':
1111
- case 'Backspace':
1112
- case 'ShiftLeft':
1113
- case 'ShiftRight':
1114
- //NOOP
1115
- break;
1116
- default:
1117
- if (!metaKey && isPrintableCharacter(event.key)) {
1118
- this.searchItems(event, event.key);
1119
- }
1120
- break;
1121
- }
1122
- }
1123
- findFirstFocusedItemIndex() {
1124
- const selectedIndex = this.findSelectedItemIndex();
1125
- return selectedIndex < 0 ? this.findFirstItemIndex() : selectedIndex;
1126
- }
1127
- findFirstItemIndex() {
1128
- return this.visibleItems.findIndex((processedItem) => this.isValidItem(processedItem));
1129
- }
1130
- findSelectedItemIndex() {
1131
- return this.visibleItems.findIndex((processedItem) => this.isValidSelectedItem(processedItem));
1132
- }
1133
- isProcessedItemGroup(processedItem) {
1134
- return processedItem && isNotEmpty(processedItem.items);
1135
- }
1136
- isSelected(processedItem) {
1137
- return isNotEmpty(this.activeItem()) ? this.activeItem().key === processedItem.key : false;
1138
- }
1139
- isValidSelectedItem(processedItem) {
1140
- return this.isValidItem(processedItem) && this.isSelected(processedItem);
1141
- }
1142
- isValidItem(processedItem) {
1143
- return !!processedItem && !this.isItemDisabled(processedItem.item) && !this.isItemSeparator(processedItem.item);
1144
- }
1145
- isItemDisabled(item) {
1146
- return this.getItemProp(item, 'disabled');
1147
- }
1148
- isItemSeparator(item) {
1149
- return this.getItemProp(item, 'separator');
1150
- }
1151
- isItemMatched(processedItem) {
1152
- return this.isValidItem(processedItem) && this.getProccessedItemLabel(processedItem).toLocaleLowerCase().startsWith(this.searchValue.toLocaleLowerCase());
1153
- }
1154
- isProccessedItemGroup(processedItem) {
1155
- return processedItem && isNotEmpty(processedItem.items);
1156
- }
1157
- searchItems(event, char) {
1158
- this.searchValue = (this.searchValue || '') + char;
1159
- let itemIndex = -1;
1160
- let matched = false;
1161
- if (this.focusedItemInfo().index !== -1) {
1162
- itemIndex = this.visibleItems.slice(this.focusedItemInfo().index).findIndex((processedItem) => this.isItemMatched(processedItem));
1163
- itemIndex = itemIndex === -1 ? this.visibleItems.slice(0, this.focusedItemInfo().index).findIndex((processedItem) => this.isItemMatched(processedItem)) : itemIndex + this.focusedItemInfo().index;
1164
- }
1165
- else {
1166
- itemIndex = this.visibleItems.findIndex((processedItem) => this.isItemMatched(processedItem));
1167
- }
1168
- if (itemIndex !== -1) {
1169
- matched = true;
1170
- }
1171
- if (itemIndex === -1 && this.focusedItemInfo().index === -1) {
1172
- itemIndex = this.findFirstFocusedItemIndex();
1173
- }
1174
- if (itemIndex !== -1) {
1175
- this.changeFocusedItemInfo(event, itemIndex);
1176
- }
1177
- if (this.searchTimeout) {
1178
- clearTimeout(this.searchTimeout);
1179
- }
1180
- this.searchTimeout = setTimeout(() => {
1181
- this.searchValue = '';
1182
- this.searchTimeout = null;
1183
- }, 500);
1184
- return matched;
1185
- }
1186
- getProccessedItemLabel(processedItem) {
1187
- return processedItem ? this.getItemLabel(processedItem.item) : undefined;
1188
- }
1189
- getItemLabel(item) {
1190
- return this.getItemProp(item, 'label');
1191
- }
1192
- changeFocusedItemInfo(event, index) {
1193
- const processedItem = this.findVisibleItem(index);
1194
- if (isNotEmpty(processedItem)) {
1195
- const { key, parentKey, item } = processedItem;
1196
- this.focusedItemInfo.set({ index, key: key ? key : '', parentKey, item });
1197
- }
1198
- this.scrollInView();
1199
- }
1200
- onArrowDownKey(event) {
1201
- if (this.orientation === 'horizontal') {
1202
- if (isNotEmpty(this.activeItem()) && this.activeItem().key === this.focusedItemInfo().key) {
1203
- const { key, item } = this.activeItem();
1204
- this.focusedItemInfo.set({ index: -1, key: '', parentKey: key, item });
1205
- }
1206
- else {
1207
- const processedItem = this.findVisibleItem(this.focusedItemInfo().index);
1208
- const grouped = this.isProccessedItemGroup(processedItem);
1209
- if (grouped) {
1210
- const { parentKey, key, item } = processedItem;
1211
- this.onItemChange({ originalEvent: event, processedItem });
1212
- this.focusedItemInfo.set({ index: -1, key: key, parentKey: parentKey, item: item });
1213
- this.searchValue = '';
1214
- }
1215
- }
1216
- }
1217
- const itemIndex = this.focusedItemInfo().index !== -1 ? this.findNextItemIndex(this.focusedItemInfo().index) : this.findFirstFocusedItemIndex();
1218
- this.changeFocusedItemInfo(event, itemIndex);
1219
- event.preventDefault();
1220
- }
1221
- onArrowRightKey(event) {
1222
- const processedItem = this.findVisibleItem(this.focusedItemInfo().index);
1223
- const grouped = this.isProccessedItemGroup(processedItem);
1224
- if (grouped) {
1225
- if (this.orientation === 'vertical') {
1226
- if (isNotEmpty(this.activeItem()) && this.activeItem().key === processedItem.key) {
1227
- this.focusedItemInfo.set({ index: -1, key: '', parentKey: this.activeItem().key, item: processedItem.item });
1228
- }
1229
- else {
1230
- const processedItem = this.findVisibleItem(this.focusedItemInfo().index);
1231
- const grouped = this.isProccessedItemGroup(processedItem);
1232
- if (grouped) {
1233
- this.onItemChange({ originalEvent: event, processedItem });
1234
- this.focusedItemInfo.set({
1235
- index: -1,
1236
- key: processedItem.key,
1237
- parentKey: processedItem.parentKey,
1238
- item: processedItem.item
1239
- });
1240
- this.searchValue = '';
1241
- }
1242
- }
1243
- }
1244
- const itemIndex = this.focusedItemInfo().index !== -1 ? this.findNextItemIndex(this.focusedItemInfo().index) : this.findFirstFocusedItemIndex();
1245
- this.changeFocusedItemInfo(event, itemIndex);
1246
- }
1247
- else {
1248
- const columnIndex = processedItem.columnIndex + 1;
1249
- const itemIndex = this.visibleItems.findIndex((item) => item.columnIndex === columnIndex);
1250
- itemIndex !== -1 && this.changeFocusedItemInfo(event, itemIndex);
1251
- }
1252
- event.preventDefault();
1253
- }
1254
- onArrowUpKey(event) {
1255
- if (event.altKey && this.orientation === 'horizontal') {
1256
- if (this.focusedItemInfo().index !== -1) {
1257
- const processedItem = this.findVisibleItem(this.focusedItemInfo().index);
1258
- const grouped = this.isProccessedItemGroup(processedItem);
1259
- if (!grouped && isNotEmpty(this.activeItem)) {
1260
- if (this.focusedItemInfo().index === 0) {
1261
- this.focusedItemInfo.set({
1262
- index: this.activeItem().index,
1263
- key: this.activeItem().key,
1264
- parentKey: this.activeItem().parentKey,
1265
- item: processedItem.item
1266
- });
1267
- this.activeItem.set(null);
1268
- }
1269
- else {
1270
- this.changeFocusedItemInfo(event, this.findFirstItemIndex());
1271
- }
1272
- }
1273
- }
1274
- event.preventDefault();
1275
- }
1276
- else {
1277
- const itemIndex = this.focusedItemInfo().index !== -1 ? this.findPrevItemIndex(this.focusedItemInfo().index) : this.findLastFocusedItemIndex();
1278
- this.changeFocusedItemInfo(event, itemIndex);
1279
- event.preventDefault();
1280
- }
1281
- }
1282
- onArrowLeftKey(event) {
1283
- const processedItem = this.findVisibleItem(this.focusedItemInfo().index);
1284
- const grouped = this.isProccessedItemGroup(processedItem);
1285
- if (grouped) {
1286
- if (this.orientation === 'horizontal') {
1287
- const itemIndex = this.focusedItemInfo().index !== -1 ? this.findPrevItemIndex(this.focusedItemInfo().index) : this.findLastFocusedItemIndex();
1288
- this.changeFocusedItemInfo(event, itemIndex);
1289
- }
1290
- }
1291
- else {
1292
- if (this.orientation === 'vertical' && isNotEmpty(this.activeItem())) {
1293
- if (processedItem.columnIndex === 0) {
1294
- this.focusedItemInfo.set({
1295
- index: this.activeItem().index,
1296
- key: this.activeItem().key,
1297
- parentKey: this.activeItem().parentKey,
1298
- item: processedItem.item
1299
- });
1300
- this.activeItem.set(null);
1301
- }
1302
- }
1303
- const columnIndex = processedItem.columnIndex - 1;
1304
- const itemIndex = this.visibleItems.findIndex((item) => item.columnIndex === columnIndex);
1305
- itemIndex !== -1 && this.changeFocusedItemInfo(event, itemIndex);
1306
- }
1307
- event.preventDefault();
1308
- }
1309
- onHomeKey(event) {
1310
- this.changeFocusedItemInfo(event, this.findFirstItemIndex());
1311
- event.preventDefault();
1312
- }
1313
- onEndKey(event) {
1314
- this.changeFocusedItemInfo(event, this.findLastItemIndex());
1315
- event.preventDefault();
1316
- }
1317
- onSpaceKey(event) {
1318
- this.onEnterKey(event);
1319
- }
1320
- onEscapeKey(event) {
1321
- if (isNotEmpty(this.activeItem())) {
1322
- this.focusedItemInfo.set({ index: this.activeItem().index, key: this.activeItem().key, item: this.activeItem().item });
1323
- this.activeItem.set(null);
1324
- }
1325
- event.preventDefault();
1326
- }
1327
- onTabKey(event) {
1328
- if (this.focusedItemInfo().index !== -1) {
1329
- const processedItem = this.findVisibleItem(this.focusedItemInfo().index);
1330
- const grouped = this.isProccessedItemGroup(processedItem);
1331
- !grouped && this.onItemChange({ originalEvent: event, processedItem });
1332
- }
1333
- this.hide();
1334
- }
1335
- onEnterKey(event) {
1336
- if (this.focusedItemInfo().index !== -1) {
1337
- const element = findSingle(this.rootmenu?.el?.nativeElement, `li[id="${`${this.focusedItemId}`}"]`);
1338
- const anchorElement = element && findSingle(element, 'a[data-pc-section="action"]');
1339
- anchorElement ? anchorElement.click() : element && element.click();
1340
- const processedItem = this.visibleItems[this.focusedItemInfo().index];
1341
- const grouped = this.isProccessedItemGroup(processedItem);
1342
- !grouped && this.changeFocusedItemInfo(event, this.findFirstFocusedItemIndex());
1343
- }
1344
- event.preventDefault();
1345
- }
1346
- findVisibleItem(index) {
1347
- return isNotEmpty(this.visibleItems) ? this.visibleItems[index] : null;
1348
- }
1349
- findLastFocusedItemIndex() {
1350
- const selectedIndex = this.findSelectedItemIndex();
1351
- return selectedIndex < 0 ? this.findLastItemIndex() : selectedIndex;
1352
- }
1353
- findLastItemIndex() {
1354
- return findLastIndex(this.visibleItems, (processedItem) => this.isValidItem(processedItem));
1355
- }
1356
- findPrevItemIndex(index) {
1357
- const matchedItemIndex = index > 0 ? findLastIndex(this.visibleItems.slice(0, index), (processedItem) => this.isValidItem(processedItem)) : -1;
1358
- return matchedItemIndex > -1 ? matchedItemIndex : index;
1359
- }
1360
- findNextItemIndex(index) {
1361
- const matchedItemIndex = index < this.visibleItems.length - 1 ? this.visibleItems.slice(index + 1).findIndex((processedItem) => this.isValidItem(processedItem)) : -1;
1362
- return matchedItemIndex > -1 ? matchedItemIndex + index + 1 : index;
1363
- }
1364
- bindResizeListener() {
1365
- if (!this.resizeListener) {
1366
- this.resizeListener = (event) => {
1367
- if (!isTouchDevice()) {
1368
- this.hide(event, true);
1369
- }
1370
- this.mobileActive = false;
1371
- };
1372
- window.addEventListener('resize', this.resizeListener);
1373
- }
1374
- }
1375
- bindOutsideClickListener() {
1376
- if (isPlatformBrowser(this.platformId)) {
1377
- if (!this.outsideClickListener) {
1378
- this.outsideClickListener = this.renderer.listen(this.document, 'click', (event) => {
1379
- const isOutsideContainer = this.container?.nativeElement !== event.target && !this.container?.nativeElement.contains(event.target);
1380
- if (isOutsideContainer) {
1381
- this.hide();
1382
- }
1383
- });
1384
- }
1385
- }
1386
- }
1387
- unbindOutsideClickListener() {
1388
- if (this.outsideClickListener) {
1389
- this.outsideClickListener();
1390
- this.outsideClickListener = null;
1391
- }
1392
- }
1393
- unbindResizeListener() {
1394
- if (this.resizeListener) {
1395
- window.removeEventListener('resize', this.resizeListener);
1396
- this.resizeListener = null;
1397
- }
1398
- }
1399
- ngOnDestroy() {
1400
- this.unbindOutsideClickListener();
1401
- this.unbindResizeListener();
1402
- this.unbindMatchMediaListener();
1403
- super.ngOnDestroy();
1404
- }
1405
- static ɵfac = function MegaMenu_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MegaMenu)(); };
1406
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MegaMenu, selectors: [["p-megaMenu"], ["p-megamenu"], ["p-mega-menu"]], contentQueries: function MegaMenu_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
1407
- i0.ɵɵcontentQuery(dirIndex, _c6, 5);
1408
- i0.ɵɵcontentQuery(dirIndex, _c7, 5);
1409
- i0.ɵɵcontentQuery(dirIndex, _c8, 5);
1410
- i0.ɵɵcontentQuery(dirIndex, _c9, 5);
1411
- i0.ɵɵcontentQuery(dirIndex, _c10, 5);
1412
- i0.ɵɵcontentQuery(dirIndex, _c11, 5);
1413
- i0.ɵɵcontentQuery(dirIndex, _c12, 5);
1414
- } if (rf & 2) {
1415
- let _t;
1416
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.startTemplate = _t.first);
1417
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.endTemplate = _t.first);
1418
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.menuiconTemplate = _t.first);
1419
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.submenuiconTemplate = _t.first);
1420
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.itemTemplate = _t.first);
1421
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.buttonTemplate = _t.first);
1422
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.buttoniconTemplate = _t.first);
1423
- } }, viewQuery: function MegaMenu_Query(rf, ctx) { if (rf & 1) {
1424
- i0.ɵɵviewQuery(_c13, 5);
1425
- i0.ɵɵviewQuery(_c14, 5);
1426
- i0.ɵɵviewQuery(_c15, 5);
1427
- } if (rf & 2) {
1428
- let _t;
1429
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.menubuttonViewChild = _t.first);
1430
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.rootmenu = _t.first);
1431
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.container = _t.first);
1432
- } }, inputs: { model: "model", style: "style", styleClass: "styleClass", orientation: "orientation", id: "id", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", breakpoint: "breakpoint", scrollHeight: "scrollHeight", disabled: [2, "disabled", "disabled", booleanAttribute], tabindex: [2, "tabindex", "tabindex", numberAttribute] }, standalone: true, features: [i0.ɵɵProvidersFeature([MegaMenuStyle]), i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], decls: 8, vars: 36, consts: [["container", ""], ["rootmenu", ""], ["menubutton", ""], [3, "ngClass", "ngStyle"], ["class", "p-megamenu-start", 4, "ngIf"], [4, "ngIf"], [4, "ngTemplateOutlet"], [3, "itemClick", "menuFocus", "menuBlur", "menuKeydown", "itemMouseEnter", "itemTemplate", "items", "menuId", "root", "orientation", "ariaLabel", "disabled", "tabindex", "activeItem", "level", "ariaLabelledBy", "focusedItemId", "mobileActive", "queryMatches", "scrollHeight"], ["class", "p-megamenu-end", 4, "ngIf"], [1, "p-megamenu-start"], ["role", "button", "tabindex", "0", "class", "p-megamenu-button", 3, "click", "keydown", 4, "ngIf"], ["role", "button", "tabindex", "0", 1, "p-megamenu-button", 3, "click", "keydown"], [1, "p-megamenu-end"]], template: function MegaMenu_Template(rf, ctx) { if (rf & 1) {
1433
- const _r1 = i0.ɵɵgetCurrentView();
1434
- i0.ɵɵelementStart(0, "div", 3, 0);
1435
- i0.ɵɵtemplate(2, MegaMenu_div_2_Template, 2, 1, "div", 4)(3, MegaMenu_ng_container_3_Template, 2, 1, "ng-container", 5)(4, MegaMenu_ng_container_4_Template, 1, 0, "ng-container", 6);
1436
- i0.ɵɵelementStart(5, "p-megamenu-sub", 7, 1);
1437
- i0.ɵɵlistener("itemClick", function MegaMenu_Template_p_megamenu_sub_itemClick_5_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onItemClick($event)); })("menuFocus", function MegaMenu_Template_p_megamenu_sub_menuFocus_5_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onMenuFocus($event)); })("menuBlur", function MegaMenu_Template_p_megamenu_sub_menuBlur_5_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onMenuBlur($event)); })("menuKeydown", function MegaMenu_Template_p_megamenu_sub_menuKeydown_5_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onKeyDown($event)); })("itemMouseEnter", function MegaMenu_Template_p_megamenu_sub_itemMouseEnter_5_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onItemMouseEnter($event)); });
1438
- i0.ɵɵelementEnd();
1439
- i0.ɵɵtemplate(7, MegaMenu_div_7_Template, 2, 1, "div", 8);
1440
- i0.ɵɵelementEnd();
1441
- } if (rf & 2) {
1442
- i0.ɵɵstyleMap(i0.ɵɵpureFunction1(29, _c16, ctx.orientation == "vertical" && ctx.queryMatches ? "row" : ""));
1443
- i0.ɵɵclassMap(ctx.styleClass);
1444
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction4(31, _c17, ctx.queryMatches, ctx.mobileActive, ctx.orientation == "horizontal", ctx.orientation == "vertical"))("ngStyle", ctx.style);
1445
- i0.ɵɵattribute("data-pc-section", "root")("data-pc-name", "megamenu")("id", ctx.id);
1446
- i0.ɵɵadvance(2);
1447
- i0.ɵɵproperty("ngIf", ctx.startTemplate);
1448
- i0.ɵɵadvance();
1449
- i0.ɵɵproperty("ngIf", !ctx.buttonTemplate);
1450
- i0.ɵɵadvance();
1451
- i0.ɵɵproperty("ngTemplateOutlet", ctx.buttonTemplate);
1452
- i0.ɵɵadvance();
1453
- i0.ɵɵproperty("itemTemplate", ctx.itemTemplate)("items", ctx.processedItems)("menuId", ctx.id)("root", true)("orientation", ctx.orientation)("ariaLabel", ctx.ariaLabel)("disabled", ctx.disabled)("tabindex", !ctx.disabled ? ctx.tabindex : -1)("activeItem", ctx.activeItem())("level", 0)("ariaLabelledBy", ctx.ariaLabelledBy)("focusedItemId", ctx.focused ? ctx.focusedItemId : undefined)("mobileActive", ctx.mobileActive)("queryMatches", ctx.queryMatches)("scrollHeight", ctx.scrollHeight);
1454
- i0.ɵɵattribute("id", ctx.id + "_list");
1455
- i0.ɵɵadvance(2);
1456
- i0.ɵɵproperty("ngIf", ctx.endTemplate);
1457
- } }, dependencies: [CommonModule, i1.NgClass, i1.NgIf, i1.NgTemplateOutlet, i1.NgStyle, RouterModule, MegaMenuSub, TooltipModule, BarsIcon, BadgeModule, SharedModule], encapsulation: 2, changeDetection: 0 });
1458
- }
1459
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MegaMenu, [{
1460
- type: Component,
1461
- args: [{
1462
- selector: 'p-megaMenu, p-megamenu, p-mega-menu',
1463
- standalone: true,
1464
- imports: [CommonModule, RouterModule, MegaMenuSub, Ripple, TooltipModule, AngleDownIcon, AngleRightIcon, BarsIcon, BadgeModule, SharedModule],
1465
- template: `
1466
- <div
1467
- [ngClass]="{
1468
- 'p-megamenu p-component': true,
1469
- 'p-megamenu-mobile': queryMatches,
1470
- 'p-megamenu-mobile-active': mobileActive,
1471
- 'p-megamenu-horizontal': orientation == 'horizontal',
1472
- 'p-megamenu-vertical': orientation == 'vertical'
1473
- }"
1474
- [class]="styleClass"
1475
- [style]="{ flexDirection: orientation == 'vertical' && queryMatches ? 'row' : '' }"
1476
- [ngStyle]="style"
1477
- [attr.data-pc-section]="'root'"
1478
- [attr.data-pc-name]="'megamenu'"
1479
- [attr.id]="id"
1480
- #container
1481
- >
1482
- <div class="p-megamenu-start" *ngIf="startTemplate">
1483
- <ng-container *ngTemplateOutlet="startTemplate"></ng-container>
1484
- </div>
1485
- <ng-container *ngIf="!buttonTemplate">
1486
- <a
1487
- *ngIf="model && model.length > 0"
1488
- #menubutton
1489
- role="button"
1490
- tabindex="0"
1491
- class="p-megamenu-button"
1492
- [attr.aria-haspopup]="model.length && model.length > 0 ? true : false"
1493
- [attr.aria-expanded]="mobileActive"
1494
- [attr.aria-controls]="id"
1495
- [attr.aria-label]="config.translation.aria.navigation"
1496
- (click)="menuButtonClick($event)"
1497
- (keydown)="menuButtonKeydown($event)"
1498
- >
1499
- <ng-container *ngIf="!buttonTemplate">
1500
- <BarsIcon />
1501
- </ng-container>
1502
- </a>
1503
- </ng-container>
1504
- <ng-container *ngTemplateOutlet="buttonTemplate"></ng-container>
1505
- <p-megamenu-sub
1506
- #rootmenu
1507
- [itemTemplate]="itemTemplate"
1508
- [items]="processedItems"
1509
- [attr.id]="id + '_list'"
1510
- [menuId]="id"
1511
- [root]="true"
1512
- [orientation]="orientation"
1513
- [ariaLabel]="ariaLabel"
1514
- [disabled]="disabled"
1515
- [tabindex]="!disabled ? tabindex : -1"
1516
- [activeItem]="activeItem()"
1517
- [level]="0"
1518
- [ariaLabelledBy]="ariaLabelledBy"
1519
- [focusedItemId]="focused ? focusedItemId : undefined"
1520
- [mobileActive]="mobileActive"
1521
- (itemClick)="onItemClick($event)"
1522
- (menuFocus)="onMenuFocus($event)"
1523
- (menuBlur)="onMenuBlur($event)"
1524
- (menuKeydown)="onKeyDown($event)"
1525
- (itemMouseEnter)="onItemMouseEnter($event)"
1526
- [queryMatches]="queryMatches"
1527
- [scrollHeight]="scrollHeight"
1528
- ></p-megamenu-sub>
1529
- <div class="p-megamenu-end" *ngIf="endTemplate">
1530
- <ng-container *ngTemplateOutlet="endTemplate"></ng-container>
1531
- </div>
1532
- </div>
1533
- `,
1534
- changeDetection: ChangeDetectionStrategy.OnPush,
1535
- encapsulation: ViewEncapsulation.None,
1536
- providers: [MegaMenuStyle]
1537
- }]
1538
- }], () => [], { model: [{
1539
- type: Input
1540
- }], style: [{
1541
- type: Input
1542
- }], styleClass: [{
1543
- type: Input
1544
- }], orientation: [{
1545
- type: Input
1546
- }], id: [{
1547
- type: Input
1548
- }], ariaLabel: [{
1549
- type: Input
1550
- }], ariaLabelledBy: [{
1551
- type: Input
1552
- }], breakpoint: [{
1553
- type: Input
1554
- }], scrollHeight: [{
1555
- type: Input
1556
- }], disabled: [{
1557
- type: Input,
1558
- args: [{ transform: booleanAttribute }]
1559
- }], tabindex: [{
1560
- type: Input,
1561
- args: [{ transform: numberAttribute }]
1562
- }], startTemplate: [{
1563
- type: ContentChild,
1564
- args: ['start']
1565
- }], endTemplate: [{
1566
- type: ContentChild,
1567
- args: ['end']
1568
- }], menuiconTemplate: [{
1569
- type: ContentChild,
1570
- args: ['menuicon']
1571
- }], submenuiconTemplate: [{
1572
- type: ContentChild,
1573
- args: ['submenuicon']
1574
- }], itemTemplate: [{
1575
- type: ContentChild,
1576
- args: ['item']
1577
- }], buttonTemplate: [{
1578
- type: ContentChild,
1579
- args: ['button']
1580
- }], buttoniconTemplate: [{
1581
- type: ContentChild,
1582
- args: ['buttonicon']
1583
- }], menubuttonViewChild: [{
1584
- type: ViewChild,
1585
- args: ['menubutton']
1586
- }], rootmenu: [{
1587
- type: ViewChild,
1588
- args: ['rootmenu']
1589
- }], container: [{
1590
- type: ViewChild,
1591
- args: ['container']
1592
- }] }); })();
1593
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MegaMenu, { className: "MegaMenu" }); })();
1594
- export class MegaMenuModule {
1595
- static ɵfac = function MegaMenuModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MegaMenuModule)(); };
1596
- static ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: MegaMenuModule });
1597
- static ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [MegaMenu, SharedModule, SharedModule] });
1598
- }
1599
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MegaMenuModule, [{
1600
- type: NgModule,
1601
- args: [{
1602
- imports: [MegaMenu, SharedModule],
1603
- exports: [MegaMenu, SharedModule]
1604
- }]
1605
- }], null, null); })();
1606
- (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MegaMenuModule, { imports: [MegaMenu, SharedModule], exports: [MegaMenu, SharedModule] }); })();
1607
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVnYW1lbnUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWVnYW1lbnUvbWVnYW1lbnUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFDSCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUVOLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsZUFBZSxFQUdmLE1BQU0sRUFDTixNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1SSxPQUFPLEVBQWdCLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7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WUFBWSxDQUFDO2FBQ3BDOzt3RkFDWSxjQUFjLGNBendCZCxRQUFRLEVBc3dCRyxZQUFZLGFBdHdCdkIsUUFBUSxFQXV3QkcsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgZWZmZWN0LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nTW9kdWxlLFxuICAgIG51bWJlckF0dHJpYnV0ZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBzaWduYWwsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZpbmRMYXN0SW5kZXgsIGZpbmRTaW5nbGUsIGZvY3VzLCBpc0VtcHR5LCBpc05vdEVtcHR5LCBpc1ByaW50YWJsZUNoYXJhY3RlciwgaXNUb3VjaERldmljZSwgcmVzb2x2ZSwgdXVpZCB9IGZyb20gJ0BwcmltZXVpeC91dGlscyc7XG5pbXBvcnQgeyBNZWdhTWVudUl0ZW0sIFNoYXJlZE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IEJhZGdlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9iYWRnZSc7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAncHJpbWVuZy9iYXNlY29tcG9uZW50JztcbmltcG9ydCB7IEFuZ2xlRG93bkljb24sIEFuZ2xlUmlnaHRJY29uLCBCYXJzSWNvbiB9IGZyb20gJ3ByaW1lbmcvaWNvbnMnO1xuaW1wb3J0IHsgUmlwcGxlIH0gZnJvbSAncHJpbWVuZy9yaXBwbGUnO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XG5pbXBvcnQgeyBWb2lkTGlzdGVuZXIgfSBmcm9tICdwcmltZW5nL3RzLWhlbHBlcnMnO1xuaW1wb3J0IHsgWkluZGV4VXRpbHMgfSBmcm9tICdwcmltZW5nL3V0aWxzJztcbmltcG9ydCB7IE1lZ2FNZW51U3R5bGUgfSBmcm9tICcuL3N0eWxlL21lZ2FtZW51c3R5bGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtbWVnYU1lbnVTdWIsIHAtbWVnYW1lbnUtc3ViJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJvdXRlck1vZHVsZSwgUmlwcGxlLCBUb29sdGlwTW9kdWxlLCBBbmdsZURvd25JY29uLCBBbmdsZVJpZ2h0SWNvbiwgQmFkZ2VNb2R1bGUsIFNoYXJlZE1vZHVsZV0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPHVsXG4gICAgICAgICAgICAqbmdJZj1cImlzU3VibWVudVZpc2libGUoc3VibWVudSlcIlxuICAgICAgICAgICAgI21lbnViYXJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3AtbWVnYW1lbnUtcm9vdC1saXN0Jzogcm9vdCwgJ3AtbWVnYW1lbnUtc3VibWVudSc6ICFyb290IH1cIlxuICAgICAgICAgICAgW3N0eWxlXT1cInsgJ21heC1oZWlnaHQnOiBzY3JvbGxIZWlnaHQsIG92ZXJmbG93OiAnYXV0bycgfVwiXG4gICAgICAgICAgICBbYXR0ci5yb2xlXT1cInJvb3QgPyAnbWVudWJhcicgOiAnbWVudSdcIlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiaWRcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1vcmllbnRhdGlvbl09XCJvcmllbnRhdGlvblwiXG4gICAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cImZvY3VzZWRJdGVtSWRcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cInJvb3QgPyAncm9vdCcgOiAnc3VibWVudSdcIlxuICAgICAgICAgICAgKGtleWRvd24pPVwibWVudUtleWRvd24uZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChmb2N1cyk9XCJtZW51Rm9jdXMuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChibHVyKT1cIm1lbnVCbHVyLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxsaSAqbmdJZj1cInN1Ym1lbnVcIiBbbmdDbGFzc109XCJnZXRTdWJtZW51SGVhZGVyQ2xhc3Moc3VibWVudSlcIiBbc3R5bGVdPVwiZ2V0SXRlbVByb3Aoc3VibWVudSwgJ3N0eWxlJylcIiByb2xlPVwicHJlc2VudGF0aW9uXCI+XG4gICAgICAgICAgICAgICAge3sgZ2V0SXRlbUxhYmVsKHN1Ym1lbnUpIH19XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1wcm9jZXNzZWRJdGVtIFtuZ0Zvck9mXT1cIml0ZW1zXCIgbGV0LWluZGV4PVwiaW5kZXhcIj5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc0l0ZW1WaXNpYmxlKHByb2Nlc3NlZEl0ZW0pICYmIGdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdzZXBhcmF0b3InKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cImdldEl0ZW1JZChwcm9jZXNzZWRJdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnc3R5bGUnKVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldFNlcGFyYXRvckl0ZW1DbGFzcyhwcm9jZXNzZWRJdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJzZXBhcmF0b3JcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3NlcGFyYXRvcidcIlxuICAgICAgICAgICAgICAgID48L2xpPlxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAjbGlzdEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc0l0ZW1WaXNpYmxlKHByb2Nlc3NlZEl0ZW0pICYmICFnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnc2VwYXJhdG9yJylcIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwibWVudWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJnZXRJdGVtSWQocHJvY2Vzc2VkSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ21lbnVpdGVtJ1wiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcC1oaWdobGlnaHRdPVwiaXNJdGVtQWN0aXZlKHByb2Nlc3NlZEl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wLWZvY3VzZWRdPVwiaXNJdGVtRm9jdXNlZChwcm9jZXNzZWRJdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcC1kaXNhYmxlZF09XCJpc0l0ZW1EaXNhYmxlZChwcm9jZXNzZWRJdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0SXRlbUxhYmVsKHByb2Nlc3NlZEl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc0l0ZW1EaXNhYmxlZChwcm9jZXNzZWRJdGVtKSB8fCB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cImlzSXRlbUdyb3VwKHByb2Nlc3NlZEl0ZW0pICYmICFnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAndG8nKSA/ICdtZW51JyA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNJdGVtR3JvdXAocHJvY2Vzc2VkSXRlbSkgPyBpc0l0ZW1BY3RpdmUocHJvY2Vzc2VkSXRlbSkgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxldmVsXT1cImxldmVsICsgMVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtc2V0c2l6ZV09XCJnZXRBcmlhU2V0U2l6ZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1wb3NpbnNldF09XCJnZXRBcmlhUG9zSW5zZXQoaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3N0eWxlJylcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJnZXRJdGVtQ2xhc3MocHJvY2Vzc2VkSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3N0eWxlQ2xhc3MnKVwiXG4gICAgICAgICAgICAgICAgICAgIHBUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwT3B0aW9uc109XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAndG9vbHRpcE9wdGlvbnMnKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1tZWdhbWVudS1pdGVtLWNvbnRlbnRcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2NvbnRlbnQnXCIgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKCRldmVudCwgcHJvY2Vzc2VkSXRlbSlcIiAobW91c2VlbnRlcik9XCJvbkl0ZW1Nb3VzZUVudGVyKHsgJGV2ZW50LCBwcm9jZXNzZWRJdGVtIH0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW1UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdyb3V0ZXJMaW5rJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5ocmVmXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICd1cmwnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbmlkXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdhdXRvbWF0aW9uSWQnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInYWN0aW9uJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YXJnZXRdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3RhcmdldCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAncC1tZWdhbWVudS1pdGVtLWxpbmsnOiB0cnVlLCAncC1kaXNhYmxlZCc6IGdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdkaXNhYmxlZCcpIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCItMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdpY29uJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLW1lZ2FtZW51LWl0ZW0taWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnaWNvbicpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdpY29uU3R5bGUnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2ljb24nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cIi0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2VzY2FwZScpOyBlbHNlIGh0bWxMYWJlbFwiIGNsYXNzPVwicC1tZWdhbWVudS1pdGVtLWxhYmVsXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidsYWJlbCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEl0ZW1MYWJlbChwcm9jZXNzZWRJdGVtKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaHRtbExhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lZ2FtZW51LWl0ZW0tbGFiZWxcIiBbaW5uZXJIVE1MXT1cImdldEl0ZW1MYWJlbChwcm9jZXNzZWRJdGVtKVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbGFiZWwnXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1iYWRnZSAqbmdJZj1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdiYWRnZScpXCIgW3N0eWxlQ2xhc3NdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2JhZGdlU3R5bGVDbGFzcycpXCIgW3ZhbHVlXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdiYWRnZScpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzSXRlbUdyb3VwKHByb2Nlc3NlZEl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1lZ2FNZW51LnN1Ym1lbnVpY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKG9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCcgfHwgbW9iaWxlQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBbmdsZURvd25JY29uIFtuZ0NsYXNzXT1cIidwLW1lZ2FtZW51LXN1Ym1lbnUtaWNvbidcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3N1Ym1lbnVpY29uJ1wiIFthdHRyLmFyaWEtaGlkZGVuXT1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QW5nbGVSaWdodEljb24gW25nQ2xhc3NdPVwiJ3AtbWVnYW1lbnUtc3VibWVudS1pY29uJ1wiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInc3VibWVudWljb24nXCIgKm5nSWY9XCJvcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJ1wiIFthdHRyLmFyaWEtaGlkZGVuXT1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwibWVnYU1lbnUuc3VibWVudWljb25UZW1wbGF0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInc3VibWVudWljb24nXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdyb3V0ZXJMaW5rJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAncm91dGVyTGluaycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uaWRdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2F1dG9tYXRpb25JZCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidhY3Rpb24nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdxdWVyeVBhcmFtcycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVdPVwiJ3AtbWVnYW1lbnUtaXRlbS1saW5rLWFjdGl2ZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3JvdXRlckxpbmtBY3RpdmVPcHRpb25zJykgfHwgeyBleGFjdDogZmFsc2UgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YXJnZXRdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3RhcmdldCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAncC1tZWdhbWVudS1pdGVtLWxpbmsnOiB0cnVlLCAncC1kaXNhYmxlZCc6IGdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdkaXNhYmxlZCcpIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZnJhZ21lbnRdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2ZyYWdtZW50JylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNIYW5kbGluZ109XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAncXVlcnlQYXJhbXNIYW5kbGluZycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ByZXNlcnZlRnJhZ21lbnRdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3ByZXNlcnZlRnJhZ21lbnQnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtza2lwTG9jYXRpb25DaGFuZ2VdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3NraXBMb2NhdGlvbkNoYW5nZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcGxhY2VVcmxdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3JlcGxhY2VVcmwnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnc3RhdGUnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtbWVnYW1lbnUtaXRlbS1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2ljb24nKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnaWNvbicpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdpY29uU3R5bGUnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2ljb24nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVnYW1lbnUtaXRlbS1sYWJlbFwiICpuZ0lmPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2VzY2FwZScpOyBlbHNlIGh0bWxSb3V0ZUxhYmVsXCI+e3sgZ2V0SXRlbUxhYmVsKHByb2Nlc3NlZEl0ZW0pIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2h0bWxSb3V0ZUxhYmVsPjxzcGFuIGNsYXNzPVwicC1tZWdhbWVudS1pdGVtLWxhYmVsXCIgW2lubmVySFRNTF09XCJnZXRJdGVtTGFiZWwocHJvY2Vzc2VkSXRlbSlcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2xhYmVsJ1wiPjwvc3Bhbj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1iYWRnZSAqbmdJZj1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdiYWRnZScpXCIgW3N0eWxlQ2xhc3NdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2JhZGdlU3R5bGVDbGFzcycpXCIgW3ZhbHVlXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdiYWRnZScpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzSXRlbUdyb3VwKHByb2Nlc3NlZEl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1lZ2FNZW51LnN1Ym1lbnVpY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QW5nbGVEb3duSWNvbiBbc3R5bGVDbGFzc109XCIncC1tZWdhbWVudS1zdWJtZW51LWljb24nXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidzdWJtZW51aWNvbidcIiAqbmdJZj1cIm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCdcIiBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QW5nbGVSaWdodEljb24gW3N0eWxlQ2xhc3NdPVwiJ3AtbWVnYW1lbnUtc3VibWVudS1pY29uJ1wiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInc3VibWVudWljb24nXCIgKm5nSWY9XCJvcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJ1wiIFthdHRyLmFyaWEtaGlkZGVuXT1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtZWdhTWVudS5zdWJtZW51aWNvblRlbXBsYXRlXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidzdWJtZW51aWNvbidcIiBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbVRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcHJvY2Vzc2VkSXRlbS5pdGVtIH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNJdGVtVmlzaWJsZShwcm9jZXNzZWRJdGVtKSAmJiBpc0l0ZW1Hcm91cChwcm9jZXNzZWRJdGVtKVwiIGNsYXNzPVwicC1tZWdhbWVudS1vdmVybGF5XCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidwYW5lbCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLW1lZ2FtZW51LWdyaWRcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2dyaWQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29sIG9mIHByb2Nlc3NlZEl0ZW0uaXRlbXNcIiBbbmdDbGFzc109XCJnZXRDb2x1bW5DbGFzcyhwcm9jZXNzZWRJdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1tZWdhbWVudS1zdWJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzdWJtZW51IG9mIGNvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiZ2V0U3ViTGlzdElkKHN1Ym1lbnUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdWJtZW51XT1cInN1Ym1lbnVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cInN1Ym1lbnUuaXRlbXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1UZW1wbGF0ZV09XCJpdGVtVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vYmlsZUFjdGl2ZV09XCJtb2JpbGVBY3RpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21lbnVJZF09XCJtZW51SWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZvY3VzZWRJdGVtSWRdPVwiZm9jdXNlZEl0ZW1JZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGV2ZWxdPVwibGV2ZWwgKyAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb290XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtQ2xpY2spPVwiaXRlbUNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXRlbU1vdXNlRW50ZXIpPVwib25JdGVtTW91c2VFbnRlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtbWVnYW1lbnUtc3ViPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3VsPlxuICAgIGAsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBNZWdhTWVudVN1YiBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIGlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoKSBpdGVtczogYW55W10gfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoKSBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoKSBtZW51SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpIGFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KCkgYXJpYUxhYmVsbGVkQnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIGxldmVsOiBudW1iZXIgPSAwO1xuXG4gICAgQElucHV0KCkgZm9jdXNlZEl0ZW1JZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBvcmllbnRhdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KCkgYWN0aXZlSXRlbTogYW55O1xuXG4gICAgQElucHV0KCkgc3VibWVudTogYW55O1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHF1ZXJ5TWF0Y2hlczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIG1vYmlsZUFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgc2Nyb2xsSGVpZ2h0OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSB0YWJpbmRleDogbnVtYmVyID0gMDtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSByb290OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KCkgaXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBpdGVtTW91c2VFbnRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgbWVudUZvY3VzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBtZW51Qmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgbWVudUtleWRvd246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZCgnbWVudWJhcicsIHsgc3RhdGljOiB0cnVlIH0pIG1lbnViYXJWaWV3Q2hpbGQ6IEVsZW1lbnRSZWY7XG5cbiAgICBtZWdhTWVudTogTWVnYU1lbnUgPSBpbmplY3QoZm9yd2FyZFJlZigoKSA9PiBNZWdhTWVudSkpO1xuXG4gICAgb25JdGVtQ2xpY2soZXZlbnQ6IGFueSwgcHJvY2Vzc2VkSXRlbTogYW55KSB7XG4gICAgICAgIHRoaXMuZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2NvbW1hbmQnLCB7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCBpdGVtOiBwcm9jZXNzZWRJdGVtLml0ZW0gfSk7XG4gICAgICAgIHRoaXMuaXRlbUNsaWNrLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgcHJvY2Vzc2VkSXRlbSwgaXNGb2N1czogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICBnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtOiBhbnksIG5hbWU6IHN0cmluZywgcGFyYW1zOiBhbnkgfCBudWxsID0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcHJvY2Vzc2VkSXRlbSAmJiBwcm9jZXNzZWRJdGVtLml0ZW0gPyByZXNvbHZlKHByb2Nlc3NlZEl0ZW0uaXRlbVtuYW1lXSwgcGFyYW1zKSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBnZXRJdGVtSWQocHJvY2Vzc2VkSXRlbTogYW55KTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3NlZEl0ZW0uaXRlbSAmJiBwcm9jZXNzZWRJdGVtLml0ZW0/LmlkID8gcHJvY2Vzc2VkSXRlbS5pdGVtLmlkIDogYCR7dGhpcy5tZW51SWR9XyR7cHJvY2Vzc2VkSXRlbS5rZXl9YDtcbiAgICB9XG5cbiAgICBnZXRTdWJMaXN0SWQocHJvY2Vzc2VkSXRlbSkge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRJdGVtSWQocHJvY2Vzc2VkSXRlbSl9X2xpc3RgO1xuICAgIH1cblxuICAgIGdldEl0ZW1DbGFzcyhwcm9jZXNzZWRJdGVtOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnRoaXMuZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2NsYXNzJyksXG4gICAgICAgICAgICAncC1tZWdhbWVudS1pdGVtJzogdHJ1ZSxcbiAgICAgICAgICAgICdwLW1lZ2FtZW51LWl0ZW0tYWN0aXZlJzogdGhpcy5pc0l0ZW1BY3RpdmUocHJvY2Vzc2VkSXRlbSksXG4gICAgICAgICAgICAncC1mb2N1cyc6IHRoaXMuaXNJdGVtRm9jdXNlZChwcm9jZXNzZWRJdGVtKSxcbiAgICAgICAgICAgICdwLWRpc2FibGVkJzogdGhpcy5pc0l0ZW1EaXNhYmxlZChwcm9jZXNzZWRJdGVtKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGdldEl0ZW1MYWJlbChwcm9jZXNzZWRJdGVtOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnbGFiZWwnKTtcbiAgICB9XG5cbiAgICBnZXRTZXBhcmF0b3JJdGVtQ2xhc3MocHJvY2Vzc2VkSXRlbTogYW55KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi50aGlzLmdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdjbGFzcycpLFxuICAgICAgICAgICAgJ3AtbWVnYW1lbnUtc2VwYXJhdG9yJzogdHJ1ZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGdldENvbHVtbkNsYXNzKHByb2Nlc3NlZEl0ZW0pIHtcbiAgICAgICAgbGV0IGxlbmd0aCA9IHRoaXMuaXNJdGVtR3JvdXAocHJvY2Vzc2VkSXRlbSkgPyBwcm9jZXNzZWRJdGVtLml0ZW1zLmxlbmd0aCA6IDA7XG4gICAgICAgIGxldCBjb2x1bW5DbGFzcztcbiAgICAgICAgaWYgKHRoaXMucXVlcnlNYXRjaGVzKSBjb2x1bW5DbGFzcyA9ICdwLW1lZ2FtZW51LWNvbC0xMic7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc3dpdGNoIChsZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbkNsYXNzID0gJ3AtbWVnYW1lbnUtY29sLTYnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uQ2xhc3MgPSAncC1tZWdhbWVudS1jb2wtNCc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjb2x1bW5DbGFzcyA9ICdwLW1lZ2FtZW51LWNvbC0zJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbkNsYXNzID0gJ3AtbWVnYW1lbnUtY29sLTInO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbkNsYXNzID0gJ3AtbWVnYW1lbnUtY29sLTEyJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29sdW1uQ2xhc3M7XG4gICAgfVxuXG4gICAgZ2V0U3VibWVudUhlYWRlckNsYXNzKHByb2Nlc3NlZEl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICdwLW1lZ2FtZW51LXN1Ym1lbnUtbGFiZWwnOiB0cnVlLFxuXG4gICAgICAgICAgICAncC1kaXNhYmxlZCc6IHRoaXMuaXNJdGVtRGlzYWJsZWQocHJvY2Vzc2VkSXRlbSksXG5cbiAgICAgICAgICAgIC4uLnRoaXMuZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2NsYXNzJylcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBpc1N1Ym1lbnVWaXNpYmxlKHN1Ym1lbnU6IGFueSkge1xuICAgICAgICBpZiAodGhpcy5zdWJtZW51ICYmICF0aGlzLnJvb3QpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzSXRlbVZpc2libGUoc3VibWVudSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzSXRlbVZpc2libGUocHJvY2Vzc2VkSXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICd2aXNpYmxlJykgIT09IGZhbHNlO1xuICAgIH1cblxuICAgIGlzSXRlbUFjdGl2ZShwcm9jZXNzZWRJdGVtKSB7XG4gICAgICAgIHJldHVybiBpc05vdEVtcHR5KHRoaXMuYWN0aXZlSXRlbSkgPyB0aGlzLmFjdGl2ZUl0ZW0ua2V5ID09PSBwcm9jZXNzZWRJdGVtLmtleSA6IGZhbHNlO1xuICAgIH1cblxuICAgIGlzSXRlbURpc2FibGVkKHByb2Nlc3NlZEl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnZGlzYWJsZWQnKTtcbiAgICB9XG5cbiAgICBpc0l0ZW1Gb2N1c2VkKHByb2Nlc3NlZEl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb2N1c2VkSXRlbUlkID09PSB0aGlzLmdldEl0ZW1JZChwcm9jZXNzZWRJdGVtKTtcbiAgICB9XG5cbiAgICBpc0l0ZW1Hcm91cChwcm9jZXNzZWRJdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGlzTm90RW1wdHkocHJvY2Vzc2VkSXRlbS5pdGVtcyk7XG4gICAgfVxuXG4gICAgZ2V0QXJpYVNldFNpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcigocHJvY2Vzc2VkSXRlbSkgPT4gdGhpcy5pc0l0ZW1WaXNpYmxlKHByb2Nlc3NlZEl0ZW0pICYmICF0aGlzLmdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdzZXBhcmF0b3InKSkubGVuZ3RoO1xuICAgIH1cblxuICAgIGdldEFyaWFQb3NJbnNldChpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBpbmRleCAtIHRoaXMuaXRlbXMuc2xpY2UoMCwgaW5kZXgpLmZpbHRlcigocHJvY2Vzc2VkSXRlbSkgPT4gdGhpcy5pc0l0ZW1WaXNpYmxlKHByb2Nlc3NlZEl0ZW0pICYmIHRoaXMuZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3NlcGFyYXRvcicpKS5sZW5ndGggKyAxO1xuICAgIH1cblxuICAgIG9uSXRlbU1vdXNlRW50ZXIocGFyYW06IGFueSkge1xuICAgICAgICBjb25zdCB7IGV2ZW50LCBwcm9jZXNzZWRJdGVtIH0gPSBwYXJhbTtcbiAgICAgICAgdGhpcy5pdGVtTW91c2VFbnRlci5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHByb2Nlc3NlZEl0ZW0gfSk7XG4gICAgfVxufVxuLyoqXG4gKiBNZWdhTWVudSBpcyBuYXZpZ2F0aW9uIGNvbXBvbmVudCB0aGF0IGRpc3BsYXlzIHN1Ym1lbnVzIHRvZ2V0aGVyLlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLW1lZ2FNZW51LCBwLW1lZ2FtZW51LCBwLW1lZ2EtbWVudScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSb3V0ZXJNb2R1bGUsIE1lZ2FNZW51U3ViLCBSaXBwbGUsIFRvb2x0aXBNb2R1bGUsIEFuZ2xlRG93bkljb24sIEFuZ2xlUmlnaHRJY29uLCBCYXJzSWNvbiwgQmFkZ2VNb2R1bGUsIFNoYXJlZE1vZHVsZV0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICdwLW1lZ2FtZW51IHAtY29tcG9uZW50JzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAncC1tZWdhbWVudS1tb2JpbGUnOiBxdWVyeU1hdGNoZXMsXG4gICAgICAgICAgICAgICAgJ3AtbWVnYW1lbnUtbW9iaWxlLWFjdGl2ZSc6IG1vYmlsZUFjdGl2ZSxcbiAgICAgICAgICAgICAgICAncC1tZWdhbWVudS1ob3Jpem9udGFsJzogb3JpZW50YXRpb24gPT0gJ2hvcml6b250YWwnLFxuICAgICAgICAgICAgICAgICdwLW1lZ2FtZW51LXZlcnRpY2FsJzogb3JpZW50YXRpb24gPT0gJ3ZlcnRpY2FsJ1xuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwic3R5bGVDbGFzc1wiXG4gICAgICAgICAgICBbc3R5bGVdPVwieyBmbGV4RGlyZWN0aW9uOiBvcmllbnRhdGlvbiA9PSAndmVydGljYWwnICYmIHF1ZXJ5TWF0Y2hlcyA/ICdyb3cnIDogJycgfVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJzdHlsZVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3Jvb3QnXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtbmFtZV09XCInbWVnYW1lbnUnXCJcbiAgICAgICAgICAgIFthdHRyLmlkXT1cImlkXCJcbiAgICAgICAgICAgICNjb250YWluZXJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtbWVnYW1lbnUtc3RhcnRcIiAqbmdJZj1cInN0YXJ0VGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RhcnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWJ1dHRvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJtb2RlbCAmJiBtb2RlbC5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgICAgICAgI21lbnVidXR0b25cbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1tZWdhbWVudS1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cIm1vZGVsLmxlbmd0aCAmJiBtb2RlbC5sZW5ndGggPiAwID8gdHJ1ZSA6IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJtb2JpbGVBY3RpdmVcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImlkXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb25maWcudHJhbnNsYXRpb24uYXJpYS5uYXZpZ2F0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1lbnVCdXR0b25DbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwibWVudUJ1dHRvbktleWRvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWJ1dHRvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QmFyc0ljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxwLW1lZ2FtZW51LXN1YlxuICAgICAgICAgICAgICAgICNyb290bWVudVxuICAgICAgICAgICAgICAgIFtpdGVtVGVtcGxhdGVdPVwiaXRlbVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICBbaXRlbXNdPVwicHJvY2Vzc2VkSXRlbXNcIlxuICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cImlkICsgJ19saXN0J1wiXG4gICAgICAgICAgICAgICAgW21lbnVJZF09XCJpZFwiXG4gICAgICAgICAgICAgICAgW3Jvb3RdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW29yaWVudGF0aW9uXT1cIm9yaWVudGF0aW9uXCJcbiAgICAgICAgICAgICAgICBbYXJpYUxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiIWRpc2FibGVkID8gdGFiaW5kZXggOiAtMVwiXG4gICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbSgpXCJcbiAgICAgICAgICAgICAgICBbbGV2ZWxdPVwiMFwiXG4gICAgICAgICAgICAgICAgW2FyaWFMYWJlbGxlZEJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgICAgICBbZm9jdXNlZEl0ZW1JZF09XCJmb2N1c2VkID8gZm9jdXNlZEl0ZW1JZCA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgW21vYmlsZUFjdGl2ZV09XCJtb2JpbGVBY3RpdmVcIlxuICAgICAgICAgICAgICAgIChpdGVtQ2xpY2spPVwib25JdGVtQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKG1lbnVGb2N1cyk9XCJvbk1lbnVGb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAobWVudUJsdXIpPVwib25NZW51Qmx1cigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAobWVudUtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChpdGVtTW91c2VFbnRlcik9XCJvbkl0ZW1Nb3VzZUVudGVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtxdWVyeU1hdGNoZXNdPVwicXVlcnlNYXRjaGVzXCJcbiAgICAgICAgICAgICAgICBbc2Nyb2xsSGVpZ2h0XT1cInNjcm9sbEhlaWdodFwiXG4gICAgICAgICAgICA+PC9wLW1lZ2FtZW51LXN1Yj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLW1lZ2FtZW51LWVuZFwiICpuZ0lmPVwiZW5kVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW5kVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbTWVnYU1lbnVTdHlsZV1cbn0pXG5leHBvcnQgY2xhc3MgTWVnYU1lbnUgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xuICAgIC8qKlxuICAgICAqIEFuIGFycmF5IG9mIG1lbnVpdGVtcy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzZXQgbW9kZWwodmFsdWU6IE1lZ2FNZW51SXRlbVtdIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX21vZGVsID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NlZEl0ZW1zID0gdGhpcy5jcmVhdGVQcm9jZXNzZWRJdGVtcyh0aGlzLl9tb2RlbCB8fCBbXSk7XG4gICAgfVxuICAgIGdldCBtb2RlbCgpOiBNZWdhTWVudUl0ZW1bXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb2RlbDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW5saW5lIHN0eWxlIG9mIHRoZSBlbGVtZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0eWxlOiB7IFtrbGFzczogc3RyaW5nXTogYW55IH0gfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIENsYXNzIG9mIHRoZSBlbGVtZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHRoZSBvcmllbnRhdGlvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBvcmllbnRhdGlvbjogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJyB8IHN0cmluZyA9ICdob3Jpem9udGFsJztcbiAgICAvKipcbiAgICAgKiBDdXJyZW50IGlkIHN0YXRlIGFzIGEgc3RyaW5nLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBhIHN0cmluZyB2YWx1ZSB0aGF0IGxhYmVscyBhbiBpbnRlcmFjdGl2ZSBlbGVtZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIElkZW50aWZpZXIgb2YgdGhlIHVuZGVybHlpbmcgaW5wdXQgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhcmlhTGFiZWxsZWRCeTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRoZSBicmVha3BvaW50IHRvIGRlZmluZSB0aGUgbWF4aW11bSB3aWR0aCBib3VuZGFyeS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBicmVha3BvaW50OiBzdHJpbmcgPSAnOTYwcHgnO1xuICAgIC8qKlxuICAgICAqIEhlaWdodCBvZiB0aGUgdmlld3BvcnQsIGEgc2Nyb2xsYmFyIGlzIGRlZmluZWQgaWYgaGVpZ2h0IG9mIGxpc3QgZXhjZWVkcyB0aGlzIHZhbHVlLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNjcm9sbEhlaWdodDogc3RyaW5nID0gJzIwcmVtJztcbiAgICAvKipcbiAgICAgKiBXaGVuIHByZXNlbnQsIGl0IHNwZWNpZmllcyB0aGF0IHRoZSBjb21wb25lbnQgc2hvdWxkIGJlIGRpc2FibGVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIEluZGV4IG9mIHRoZSBlbGVtZW50IGluIHRhYmJpbmcgb3JkZXIuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgdGFiaW5kZXg6IG51bWJlciA9IDA7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0ZW1wbGF0ZSBvcHRpb24gZm9yIHN0YXJ0LlxuICAgICAqIEBncm91cCBUZW1wbGF0ZXNcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdzdGFydCcpIHN0YXJ0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0ZW1wbGF0ZSBvcHRpb24gZm9yIGVuZC5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnZW5kJykgZW5kVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0ZW1wbGF0ZSBvcHRpb24gZm9yIG1lbnUgaWNvbi5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnbWVudWljb24nKSBtZW51aWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgdGVtcGxhdGUgb3B0aW9uIGZvciBzdWJtZW51IGljb24uXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ3N1Ym1lbnVpY29uJykgc3VibWVudWljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHRlbXBsYXRlIG9wdGlvbiBmb3Igc3VibWVudSBpY29uLlxuICAgICAqIEBncm91cCBUZW1wbGF0ZXNcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdpdGVtJykgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEN1c3RvbSBtZW51IGJ1dHRvbiB0ZW1wbGF0ZSBvbiByZXNwb25zaXZlIG1vZGUuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2J1dHRvbicpIGJ1dHRvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEN1c3RvbSBtZW51IGJ1dHRvbiBpY29uIHRlbXBsYXRlIG9uIHJlc3BvbnNpdmUgbW9kZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnYnV0dG9uaWNvbicpIGJ1dHRvbmljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIEBWaWV3Q2hpbGQoJ21lbnVidXR0b24nKSBtZW51YnV0dG9uVmlld0NoaWxkOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gICAgQFZpZXdDaGlsZCgncm9vdG1lbnUnKSByb290bWVudTogTWVnYU1lbnVTdWIgfCB1bmRlZmluZWQ7XG5cbiAgICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXI6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgICBvdXRzaWRlQ2xpY2tMaXN0ZW5lcjogVm9pZExpc3RlbmVyO1xuXG4gICAgcmVzaXplTGlzdGVuZXI6IChldmVudDogYW55KSA9PiB2b2lkO1xuXG4gICAgZGlydHk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGZvY3VzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGFjdGl2ZUl0ZW0gPSBzaWduYWw8YW55PihudWxsKTtcblxuICAgIGZvY3VzZWRJdGVtSW5mbyA9IHNpZ25hbDxhbnk+KHsgaW5kZXg6IC0xLCBsZXZlbDogMCwgcGFyZW50S2V5OiAnJywgaXRlbTogbnVsbCB9KTtcblxuICAgIHNlYXJjaFZhbHVlOiBzdHJpbmcgPSAnJztcblxuICAgIHNlYXJjaFRpbWVvdXQ6IGFueTtcblxuICAgIF9wcm9jZXNzZWRJdGVtczogYW55W107XG5cbiAgICBfbW9kZWw6IE1lZ2FNZW51SXRlbVtdIHwgdW5kZWZpbmVkO1xuXG4gICAgX2NvbXBvbmVudFN0eWxlID0gaW5qZWN0KE1lZ2FNZW51U3R5bGUpO1xuXG4gICAgcHJpdmF0ZSBtYXRjaE1lZGlhTGlzdGVuZXI6ICgpID0+IHZvaWQ7XG5cbiAgICBwcml2YXRlIHF1ZXJ5OiBNZWRpYVF1ZXJ5TGlzdDtcblxuICAgIHB1YmxpYyBxdWVyeU1hdGNoZXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHB1YmxpYyBtb2JpbGVBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGdldCB2aXNpYmxlSXRlbXMoKSB7XG4gICAgICAgIGNvbnN0IHByb2Nlc3NlZEl0ZW0gPSBpc05vdEVtcHR5KHRoaXMuYWN0aXZlSXRlbSgpKSA/IHRoaXMuYWN0aXZlSXRlbSgpIDogbnVsbDtcblxuICAgICAgICByZXR1cm4gcHJvY2Vzc2VkSXRlbVxuICAgICAgICAgICAgPyBwcm9jZXNzZWRJdGVtLml0ZW1zLnJlZHVjZSgoaXRlbXMsIGNvbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29sLmZvckVhY2goKHN1Ym1lbnUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBzdWJtZW51Lml0ZW1zLmZvckVhY2goKGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMucHVzaChhKTtcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgICAgICAgICAgIH0sIFtdKVxuICAgICAgICAgICAgOiB0aGlzLnByb2Nlc3NlZEl0ZW1zO1xuICAgIH1cblxuICAgIGdldCBwcm9jZXNzZWRJdGVtcygpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9wcm9jZXNzZWRJdGVtcyB8fCAhdGhpcy5fcHJvY2Vzc2VkSXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLl9wcm9jZXNzZWRJdGVtcyA9IHRoaXMuY3JlYXRlUHJvY2Vzc2VkSXRlbXModGhpcy5tb2RlbCB8fCBbXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2Nlc3NlZEl0ZW1zO1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkSXRlbUlkKCkge1xuICAgICAgICBjb25zdCBmb2N1c2VkSXRlbSA9IHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCk7XG4gICAgICAgIHJldHVybiBmb2N1c2VkSXRlbT8uaXRlbSAmJiBmb2N1c2VkSXRlbS5pdGVtPy5pZCA/IGZvY3VzZWRJdGVtLml0ZW0uaWQgOiBpc05vdEVtcHR5KGZvY3VzZWRJdGVtLmtleSkgPyBgJHt0aGlzLmlkfV8ke2ZvY3VzZWRJdGVtLmtleX1gIDogbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUl0ZW0gPSB0aGlzLmFjdGl2ZUl0ZW0oKTtcbiAgICAgICAgICAgIGlmIChpc05vdEVtcHR5KGFjdGl2ZUl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iaW5kT3V0c2lkZUNsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJpbmRSZXNpemVMaXN0ZW5lcigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVuYmluZE91dHNpZGVDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy51bmJpbmRSZXNpemVMaXN0ZW5lcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5iaW5kTWF0Y2hNZWRpYUxpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMuaWQgPSB0aGlzLmlkIHx8IHV1aWQoJ3BuX2lkXycpO1xuICAgIH1cblxuICAgIGJpbmRNYXRjaE1lZGlhTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMubWF0Y2hNZWRpYUxpc3RlbmVyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcXVlcnkgPSB3aW5kb3cubWF0Y2hNZWRpYShgKG1heC13aWR0aDogJHt0aGlzLmJyZWFrcG9pbnR9KWApO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeSA9IHF1ZXJ5O1xuICAgICAgICAgICAgICAgIHRoaXMucXVlcnlNYXRjaGVzID0gcXVlcnkubWF0Y2hlcztcblxuICAgICAgICAgICAgICAgIHRoaXMubWF0Y2hNZWRpYUxpc3RlbmVyID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5TWF0Y2hlcyA9IHF1ZXJ5Lm1hdGNoZXM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9iaWxlQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHF1ZXJ5LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHRoaXMubWF0Y2hNZWRpYUxpc3RlbmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZE1hdGNoTWVkaWFMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMubWF0Y2hNZWRpYUxpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHRoaXMubWF0Y2hNZWRpYUxpc3RlbmVyKTtcbiAgICAgICAgICAgIHRoaXMubWF0Y2hNZWRpYUxpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNyZWF0ZVByb2Nlc3NlZEl0ZW1zKGl0ZW1zLCBsZXZlbCA9IDAsIHBhcmVudCA9IHt9LCBwYXJlbnRLZXkgPSAnJywgY29sdW1uSW5kZXg/KSB7XG4gICAgICAgIGNvbnN0IHByb2Nlc3NlZEl0ZW1zID0gW107XG5cbiAgICAgICAgaXRlbXMgJiZcbiAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gKHBhcmVudEtleSAhPT0gJycgPyBwYXJlbnRLZXkgKyAnXycgOiAnJykgKyAoY29sdW1uSW5kZXggIT09IHVuZGVmaW5lZCA/IGNvbHVtbkluZGV4ICsgJ18nIDogJycpICsgaW5kZXg7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3SXRlbSA9IHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsLFxuICAgICAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudCxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50S2V5LFxuICAgICAgICAgICAgICAgICAgICBjb2x1bW5JbmRleDogY29sdW1uSW5kZXggIT09IHVuZGVmaW5lZCA/IGNvbHVtbkluZGV4IDogKDxhbnk+cGFyZW50KS5jb2x1bW5JbmRleCAhPT0gdW5kZWZpbmVkID8gKDxhbnk+cGFyZW50KS5jb2x1bW5JbmRleCA6IGluZGV4XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIG5ld0l0ZW1bJ2l0ZW1zJ10gPVxuICAgICAgICAgICAgICAgICAgICBsZXZlbCA9PT0gMCAmJiBpdGVtLml0ZW1zICYmIGl0ZW0uaXRlbXMubGVuZ3RoID4gMCA/IGl0ZW0uaXRlbXMubWFwKChfaXRlbXMsIF9pbmRleCkgPT4gdGhpcy5jcmVhdGVQcm9jZXNzZWRJdGVtcyhfaXRlbXMsIGxldmVsICsgMSwgbmV3SXRlbSwga2V5LCBfaW5kZXgpKSA6IHRoaXMuY3JlYXRlUHJvY2Vzc2VkSXRlbXMoaXRlbS5pdGVtcywgbGV2ZWwgKyAxLCBuZXdJdGVtLCBrZXkpO1xuICAgICAgICAgICAgICAgIHByb2Nlc3NlZEl0ZW1zLnB1c2gobmV3SXRlbSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3NlZEl0ZW1zO1xuICAgIH1cblxuICAgIGdldEl0ZW1Qcm9wKGl0ZW06IGFueSwgbmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBpdGVtID8gcmVzb2x2ZShpdGVtW25hbWVdKSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBvbkl0ZW1DbGljayhldmVudDogYW55KSB7XG4gICAgICAgIGNvbnN0IHsgb3JpZ2luYWxFdmVudCwgcHJvY2Vzc2VkSXRlbSB9ID0gZXZlbnQ7XG4gICAgICAgIGNvbnN0IGdyb3VwZWQgPSB0aGlzLmlzUHJvY2Vzc2VkSXRlbUdyb3VwKHByb2Nlc3NlZEl0ZW0pO1xuICAgICAgICBjb25zdCByb290ID0gaXNFbXB0eShwcm9jZXNzZWRJdGVtLnBhcmVudCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5pc1NlbGVjdGVkKHByb2Nlc3NlZEl0ZW0pO1xuXG4gICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgICAgY29uc3QgeyBpbmRleCwga2V5LCBwYXJlbnRLZXksIGl0ZW0gfSA9IHByb2Nlc3NlZEl0ZW07XG5cbiAgICAgICAgICAgIHRoaXMuYWN0aXZlSXRlbS5zZXQobnVsbCk7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWRJdGVtSW5mby5zZXQoeyBpbmRleCwga2V5LCBwYXJlbnRLZXksIGl0ZW0gfSk7XG5cbiAgICAgICAgICAgIHRoaXMuZGlydHkgPSAhcm9vdDtcbiAgICAgICAgICAgIGlmICghdGhpcy5tb2JpbGVBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICBmb2N1cyh0aGlzLnJvb3RtZW51Py5tZW51YmFyVmlld0NoaWxkPy5uYXRpdmVFbGVtZW50LCB7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoZ3JvdXBlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25JdGVtQ2hhbmdlKGV2ZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKG9yaWdpbmFsRXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JdGVtTW91c2VFbnRlcihldmVudCkge1xuICAgICAgICBpZiAoIXRoaXMubW9iaWxlQWN0aXZlICYmIHRoaXMuZGlydHkpIHtcbiAgICAgICAgICAgIHRoaXMub25JdGVtQ2hhbmdlKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1lbnVCdXR0b25DbGljayhldmVudCkge1xuICAgICAgICB0aGlzLnRvZ2dsZShldmVudCk7XG4gICAgfVxuXG4gICAgbWVudUJ1dHRvbktleWRvd24oZXZlbnQpIHtcbiAgICAgICAgKGV2ZW50LmNvZGUgPT09ICdFbnRlcicgfHwgZXZlbnQuY29kZSA9PT0gJ051bXBhZEVudGVyJyB8fCBldmVudC5jb2RlID09PSAnU3BhY2UnKSAmJiB0aGlzLm1lbnVCdXR0b25DbGljayhldmVudCk7XG4gICAgfVxuXG4gICAgdG9nZ2xlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLm1vYmlsZUFjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5tb2JpbGVBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIFpJbmRleFV0aWxzLmNsZWFyKHRoaXMucm9vdG1lbnUuZWwubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubW9iaWxlQWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgIFpJbmRleFV0aWxzLnNldCgnbWVudScsIHRoaXMucm9vdG1lbnUuZWwubmF0aXZlRWxlbWVudCwgdGhpcy5jb25maWcuekluZGV4Lm1lbnUpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYmluZE91dHNpZGVDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgc2hvdygpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkSXRlbUluZm8uc2V0KHsgaW5kZXg6IHRoaXMuZmluZEZpcnN0Rm9jdXNlZEl0ZW1JbmRleCgpLCBsZXZlbDogMCwgcGFyZW50S2V5OiAnJyB9KTtcblxuICAgICAgICBmb2N1cyh0aGlzLnJvb3RtZW51Py5lbC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBzY3JvbGxJblZpZXcoaW5kZXg6IG51bWJlciA9IC0xKSB7XG4gICAgICAgIGNvbnN0IGlkID0gaW5kZXggIT09IC0xID8gYCR7dGhpcy5pZH1fJHtpbmRleH1gIDogdGhpcy5mb2N1c2VkSXRlbUlkO1xuXG4gICAgICAgIGxldCBlbGVtZW50O1xuXG4gICAgICAgIGlmIChpZCA9PT0gbnVsbCAmJiB0aGlzLnF1ZXJ5TWF0Y2hlcykge1xuICAgICAgICAgICAgZWxlbWVudCA9IHRoaXMubWVudWJ1dHRvblZpZXdDaGlsZC5uYXRpdmVFbGVtZW50O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZWxlbWVudCA9IGZpbmRTaW5nbGUodGhpcy5yb290bWVudT8ubWVudWJhclZpZXdDaGlsZD8ubmF0aXZlRWxlbWVudCwgYGxpW2lkPVwiJHtpZH1cIl1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICBlbGVtZW50LnNjcm9sbEludG9WaWV3ICYmIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnLCBpbmxpbmU6ICduZWFyZXN0JywgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JdGVtQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgY29uc3QgeyBwcm9jZXNzZWRJdGVtLCBpc0ZvY3VzIH0gPSBldmVudDtcblxuICAgICAgICBpZiAoaXNFbXB0eShwcm9jZXNzZWRJdGVtKSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHsgaW5kZXgsIGtleSwgcGFyZW50S2V5LCBpdGVtcywgaXRlbSB9ID0gcHJvY2Vzc2VkSXRlbTtcbiAgICAgICAgY29uc3QgZ3JvdXBlZCA9IGlzTm90RW1wdHkoaXRlbXMpO1xuXG4gICAgICAgIGlmIChncm91cGVkKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUl0ZW0uc2V0KHByb2Nlc3NlZEl0ZW0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9jdXNlZEl0ZW1JbmZvLnNldCh7IGluZGV4LCBrZXksIHBhcmVudEtleSwgaXRlbSB9KTtcblxuICAgICAgICBncm91cGVkICYmICh0aGlzLmRpcnR5ID0gdHJ1ZSk7XG4gICAgICAgIGlzRm9jdXMgJiYgZm9jdXModGhpcy5yb290bWVudT8ubWVudWJhclZpZXdDaGlsZD8ubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgaGlkZShldmVudD8sIGlzRm9jdXM/OiBib29sZWFuKSB7XG4gICAgICAgIGlmICh0aGlzLm1vYmlsZUFjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5tb2JpbGVBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGZvY3VzKHRoaXMubWVudWJ1dHRvblZpZXdDaGlsZD8ubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxJblZpZXcoKTtcbiAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFjdGl2ZUl0ZW0uc2V0KG51bGwpO1xuICAgICAgICB0aGlzLmZvY3VzZWRJdGVtSW5mby5zZXQoeyBpbmRleDogLTEsIGtleTogJycsIHBhcmVudEtleTogJycsIGl0ZW06IG51bGwgfSk7XG5cbiAgICAgICAgaXNGb2N1cyAmJiBmb2N1cyh0aGlzLnJvb3RtZW51Py5tZW51YmFyVmlld0NoaWxkPy5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgdGhpcy5kaXJ0eSA9IGZhbHNlO1xuICAgIH1cblxuICAgIG9uTWVudUZvY3VzKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZmluZEZpcnN0Rm9jdXNlZEl0ZW1JbmRleCgpO1xuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc2VkSXRlbSA9IHRoaXMuZmluZFZpc2libGVJdGVtKGluZGV4KTtcblxuICAgICAgICAgICAgdGhpcy5mb2N1c2VkSXRlbUluZm8uc2V0KHsgaW5kZXgsIGtleTogcHJvY2Vzc2VkSXRlbS5rZXksIHBhcmVudEtleTogcHJvY2Vzc2VkSXRlbS5wYXJlbnRLZXksIGl0ZW06IHByb2Nlc3NlZEl0ZW0uaXRlbSB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTWVudUJsdXIoZXZlbnQ6IGFueSkge1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mb2N1c2VkSXRlbUluZm8uc2V0KHsgaW5kZXg6IC0xLCBsZXZlbDogMCwgcGFyZW50S2V5OiAnJywgaXRlbTogbnVsbCB9KTtcbiAgICAgICAgdGhpcy5zZWFyY2hWYWx1ZSA9ICcnO1xuICAgICAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IG1ldGFLZXkgPSBldmVudC5tZXRhS2V5IHx8IGV2ZW50LmN0cmxLZXk7XG5cbiAgICAgICAgc3dpdGNoIChldmVudC5jb2RlKSB7XG4gICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgICAgICAgIHRoaXMub25BcnJvd0Rvd25LZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uQXJyb3dVcEtleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkFycm93TGVmdEtleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgICAgICAgIHRoaXMub25BcnJvd1JpZ2h0S2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnSG9tZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkhvbWVLZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdFbmQnOlxuICAgICAgICAgICAgICAgIHRoaXMub25FbmRLZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdTcGFjZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5vblNwYWNlS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgICAgICAgIHRoaXMub25FbnRlcktleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0VzY2FwZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkVzY2FwZUtleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ1RhYic6XG4gICAgICAgICAgICAgICAgdGhpcy5vblRhYktleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ1BhZ2VEb3duJzpcbiAgICAgICAgICAgIGNhc2UgJ1BhZ2VVcCc6XG4gICAgICAgICAgICBjYXNlICdCYWNrc3BhY2UnOlxuICAgICAgICAgICAgY2FzZSAnU2hpZnRMZWZ0JzpcbiAgICAgICAgICAgIGNhc2UgJ1NoaWZ0UmlnaHQnOlxuICAgICAgICAgICAgICAgIC8vTk9PUFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGlmICghbWV0YUtleSAmJiBpc1ByaW50YWJsZUNoYXJhY3RlcihldmVudC5rZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoSXRlbXMoZXZlbnQsIGV2ZW50LmtleSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmaW5kRmlyc3RGb2N1c2VkSXRlbUluZGV4KCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gdGhpcy5maW5kU2VsZWN0ZWRJdGVtSW5kZXgoKTtcblxuICAgICAgICByZXR1cm4gc2VsZWN0ZWRJbmRleCA8IDAgPyB0aGlzLmZpbmRGaXJzdEl0ZW1JbmRleCgpIDogc2VsZWN0ZWRJbmRleDtcbiAgICB9XG5cbiAgICBmaW5kRmlyc3RJdGVtSW5kZXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpc2libGVJdGVtcy5maW5kSW5kZXgoKHByb2Nlc3NlZEl0ZW0pID0+IHRoaXMuaXNWYWxpZEl0ZW0ocHJvY2Vzc2VkSXRlbSkpO1xuICAgIH1cblxuICAgIGZpbmRTZWxlY3RlZEl0ZW1JbmRleCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlzaWJsZUl0ZW1zLmZpbmRJbmRleCgocHJvY2Vzc2VkSXRlbSkgPT4gdGhpcy5pc1ZhbGlkU2VsZWN0ZWRJdGVtKHByb2Nlc3NlZEl0ZW0pKTtcbiAgICB9XG5cbiAgICBpc1Byb2Nlc3NlZEl0ZW1Hcm91cChwcm9jZXNzZWRJdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3NlZEl0ZW0gJiYgaXNOb3RFbXB0eShwcm9jZXNzZWRJdGVtLml0ZW1zKTtcbiAgICB9XG5cbiAgICBpc1NlbGVjdGVkKHByb2Nlc3NlZEl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaXNOb3RFbXB0eSh0aGlzLmFjdGl2ZUl0ZW0oKSkgPyB0aGlzLmFjdGl2ZUl0ZW0oKS5rZXkgPT09IHByb2Nlc3NlZEl0ZW0ua2V5IDogZmFsc2U7XG4gICAgfVxuXG4gICAgaXNWYWxpZFNlbGVjdGVkSXRlbShwcm9jZXNzZWRJdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZEl0ZW0ocHJvY2Vzc2VkSXRlbSkgJiYgdGhpcy5pc1NlbGVjdGVkKHByb2Nlc3NlZEl0ZW0pO1xuICAgIH1cblxuICAgIGlzVmFsaWRJdGVtKHByb2Nlc3NlZEl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISFwcm9jZXNzZWRJdGVtICYmICF0aGlzLmlzSXRlbURpc2FibGVkKHByb2Nlc3NlZEl0ZW0uaXRlbSkgJiYgIXRoaXMuaXNJdGVtU2VwYXJhdG9yKHByb2Nlc3NlZEl0ZW0uaXRlbSk7XG4gICAgfVxuXG4gICAgaXNJdGVtRGlzYWJsZWQoaXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEl0ZW1Qcm9wKGl0ZW0sICdkaXNhYmxlZCcpO1xuICAgIH1cblxuICAgIGlzSXRlbVNlcGFyYXRvcihpdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SXRlbVByb3AoaXRlbSwgJ3NlcGFyYXRvcicpO1xuICAgIH1cblxuICAgIGlzSXRlbU1hdGNoZWQocHJvY2Vzc2VkSXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWRJdGVtKHByb2Nlc3NlZEl0ZW0pICYmIHRoaXMuZ2V0UHJvY2Nlc3NlZEl0ZW1MYWJlbChwcm9jZXNzZWRJdGVtKS50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgodGhpcy5zZWFyY2hWYWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpKTtcbiAgICB9XG5cbiAgICBpc1Byb2NjZXNzZWRJdGVtR3JvdXAocHJvY2Vzc2VkSXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzZWRJdGVtICYmIGlzTm90RW1wdHkocHJvY2Vzc2VkSXRlbS5pdGVtcyk7XG4gICAgfVxuXG4gICAgc2VhcmNoSXRlbXMoZXZlbnQ6IGFueSwgY2hhcjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVmFsdWUgPSAodGhpcy5zZWFyY2hWYWx1ZSB8fCAnJykgKyBjaGFyO1xuXG4gICAgICAgIGxldCBpdGVtSW5kZXggPSAtMTtcbiAgICAgICAgbGV0IG1hdGNoZWQgPSBmYWxzZTtcblxuICAgICAgICBpZiAodGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIGl0ZW1JbmRleCA9IHRoaXMudmlzaWJsZUl0ZW1zLnNsaWNlKHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXgpLmZpbmRJbmRleCgocHJvY2Vzc2VkSXRlbSkgPT4gdGhpcy5pc0l0ZW1NYXRjaGVkKHByb2Nlc3NlZEl0ZW0pKTtcbiAgICAgICAgICAgIGl0ZW1JbmRleCA9IGl0ZW1JbmRleCA9PT0gLTEgPyB0aGlzLnZpc2libGVJdGVtcy5zbGljZSgwLCB0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4KS5maW5kSW5kZXgoKHByb2Nlc3NlZEl0ZW0pID0+IHRoaXMuaXNJdGVtTWF0Y2hlZChwcm9jZXNzZWRJdGVtKSkgOiBpdGVtSW5kZXggKyB0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaXRlbUluZGV4ID0gdGhpcy52aXNpYmxlSXRlbXMuZmluZEluZGV4KChwcm9jZXNzZWRJdGVtKSA9PiB0aGlzLmlzSXRlbU1hdGNoZWQocHJvY2Vzc2VkSXRlbSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW1JbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIG1hdGNoZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW1JbmRleCA9PT0gLTEgJiYgdGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIGl0ZW1JbmRleCA9IHRoaXMuZmluZEZpcnN0Rm9jdXNlZEl0ZW1JbmRleCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW1JbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRm9jdXNlZEl0ZW1JbmZvKGV2ZW50LCBpdGVtSW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoVGltZW91dCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2VhcmNoVGltZW91dCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlYXJjaFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVmFsdWUgPSAnJztcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVGltZW91dCA9IG51bGw7XG4gICAgICAgIH0sIDUwMCk7XG5cbiAgICAgICAgcmV0dXJuIG1hdGNoZWQ7XG4gICAgfVxuXG4gICAgZ2V0UHJvY2Nlc3NlZEl0ZW1MYWJlbChwcm9jZXNzZWRJdGVtOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3NlZEl0ZW0gPyB0aGlzLmdldEl0ZW1MYWJlbChwcm9jZXNzZWRJdGVtLml0ZW0pIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGdldEl0ZW1MYWJlbChpdGVtOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SXRlbVByb3AoaXRlbSwgJ2xhYmVsJyk7XG4gICAgfVxuXG4gICAgY2hhbmdlRm9jdXNlZEl0ZW1JbmZvKGV2ZW50LCBpbmRleCkge1xuICAgICAgICBjb25zdCBwcm9jZXNzZWRJdGVtID0gdGhpcy5maW5kVmlzaWJsZUl0ZW0oaW5kZXgpO1xuICAgICAgICBpZiAoaXNOb3RFbXB0eShwcm9jZXNzZWRJdGVtKSkge1xuICAgICAgICAgICAgY29uc3QgeyBrZXksIHBhcmVudEtleSwgaXRlbSB9ID0gcHJvY2Vzc2VkSXRlbTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZEl0ZW1JbmZvLnNldCh7IGluZGV4LCBrZXk6IGtleSA/IGtleSA6ICcnLCBwYXJlbnRLZXksIGl0ZW0gfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNjcm9sbEluVmlldygpO1xuICAgIH1cblxuICAgIG9uQXJyb3dEb3duS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgICAgICAgIGlmIChpc05vdEVtcHR5KHRoaXMuYWN0aXZlSXRlbSgpKSAmJiB0aGlzLmFjdGl2ZUl0ZW0oKS5rZXkgPT09IHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkua2V5KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBrZXksIGl0ZW0gfSA9IHRoaXMuYWN0aXZlSXRlbSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNlZEl0ZW1JbmZvLnNldCh7IGluZGV4OiAtMSwga2V5OiAnJywgcGFyZW50S2V5OiBrZXksIGl0ZW0gfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NlZEl0ZW0gPSB0aGlzLmZpbmRWaXNpYmxlSXRlbSh0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4KTtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cGVkID0gdGhpcy5pc1Byb2NjZXNzZWRJdGVtR3JvdXAocHJvY2Vzc2VkSXRlbSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoZ3JvdXBlZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHBhcmVudEtleSwga2V5LCBpdGVtIH0gPSBwcm9jZXNzZWRJdGVtO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uSXRlbUNoYW5nZSh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCBwcm9jZXNzZWRJdGVtIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzZWRJdGVtSW5mby5zZXQoeyBpbmRleDogLTEsIGtleToga2V5LCBwYXJlbnRLZXk6IHBhcmVudEtleSwgaXRlbTogaXRlbSB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hWYWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXggIT09IC0xID8gdGhpcy5maW5kTmV4dEl0ZW1JbmRleCh0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4KSA6IHRoaXMuZmluZEZpcnN0Rm9jdXNlZEl0ZW1JbmRleCgpO1xuICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRJdGVtSW5mbyhldmVudCwgaXRlbUluZGV4KTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbkFycm93UmlnaHRLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgY29uc3QgcHJvY2Vzc2VkSXRlbSA9IHRoaXMuZmluZFZpc2libGVJdGVtKHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXgpO1xuICAgICAgICBjb25zdCBncm91cGVkID0gdGhpcy5pc1Byb2NjZXNzZWRJdGVtR3JvdXAocHJvY2Vzc2VkSXRlbSk7XG5cbiAgICAgICAgaWYgKGdyb3VwZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzTm90RW1wdHkodGhpcy5hY3RpdmVJdGVtKCkpICYmIHRoaXMuYWN0aXZlSXRlbSgpLmtleSA9PT0gcHJvY2Vzc2VkSXRlbS5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c2VkSXRlbUluZm8uc2V0KHsgaW5kZXg6IC0xLCBrZXk6ICcnLCBwYXJlbnRLZXk6IHRoaXMuYWN0aXZlSXRlbSgpLmtleSwgaXRlbTogcHJvY2Vzc2VkSXRlbS5pdGVtIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NlZEl0ZW0gPSB0aGlzLmZpbmRWaXNpYmxlSXRlbSh0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBlZCA9IHRoaXMuaXNQcm9jY2Vzc2VkSXRlbUdyb3VwKHByb2Nlc3NlZEl0ZW0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChncm91cGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uSXRlbUNoYW5nZSh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCBwcm9jZXNzZWRJdGVtIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c2VkSXRlbUluZm8uc2V0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogLTEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBwcm9jZXNzZWRJdGVtLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRLZXk6IHByb2Nlc3NlZEl0ZW0ucGFyZW50S2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW06IHByb2Nlc3NlZEl0ZW0uaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXggIT09IC0xID8gdGhpcy5maW5kTmV4dEl0ZW1JbmRleCh0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4KSA6IHRoaXMuZmluZEZpcnN0Rm9jdXNlZEl0ZW1JbmRleCgpO1xuXG4gICAgICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRJdGVtSW5mbyhldmVudCwgaXRlbUluZGV4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbkluZGV4ID0gcHJvY2Vzc2VkSXRlbS5jb2x1bW5JbmRleCArIDE7XG4gICAgICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLnZpc2libGVJdGVtcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uY29sdW1uSW5kZXggPT09IGNvbHVtbkluZGV4KTtcblxuICAgICAgICAgICAgaXRlbUluZGV4ICE9PSAtMSAmJiB0aGlzLmNoYW5nZUZvY3VzZWRJdGVtSW5mbyhldmVudCwgaXRlbUluZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25BcnJvd1VwS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5hbHRLZXkgJiYgdGhpcy5vcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9jZXNzZWRJdGVtID0gdGhpcy5maW5kVmlzaWJsZUl0ZW0odGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBlZCA9IHRoaXMuaXNQcm9jY2Vzc2VkSXRlbUdyb3VwKHByb2Nlc3NlZEl0ZW0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFncm91cGVkICYmIGlzTm90RW1wdHkodGhpcy5hY3RpdmVJdGVtKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c2VkSXRlbUluZm8uc2V0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogdGhpcy5hY3RpdmVJdGVtKCkuaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiB0aGlzLmFjdGl2ZUl0ZW0oKS5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50S2V5OiB0aGlzLmFjdGl2ZUl0ZW0oKS5wYXJlbnRLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbTogcHJvY2Vzc2VkSXRlbS5pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlSXRlbS5zZXQobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRJdGVtSW5mbyhldmVudCwgdGhpcy5maW5kRmlyc3RJdGVtSW5kZXgoKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4ICE9PSAtMSA/IHRoaXMuZmluZFByZXZJdGVtSW5kZXgodGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleCkgOiB0aGlzLmZpbmRMYXN0Rm9jdXNlZEl0ZW1JbmRleCgpO1xuXG4gICAgICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRJdGVtSW5mbyhldmVudCwgaXRlbUluZGV4KTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkFycm93TGVmdEtleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBjb25zdCBwcm9jZXNzZWRJdGVtID0gdGhpcy5maW5kVmlzaWJsZUl0ZW0odGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleCk7XG4gICAgICAgIGNvbnN0IGdyb3VwZWQgPSB0aGlzLmlzUHJvY2Nlc3NlZEl0ZW1Hcm91cChwcm9jZXNzZWRJdGVtKTtcblxuICAgICAgICBpZiAoZ3JvdXBlZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXggIT09IC0xID8gdGhpcy5maW5kUHJldkl0ZW1JbmRleCh0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4KSA6IHRoaXMuZmluZExhc3RGb2N1c2VkSXRlbUluZGV4KCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRJdGVtSW5mbyhldmVudCwgaXRlbUluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnICYmIGlzTm90RW1wdHkodGhpcy5hY3RpdmVJdGVtKCkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3NlZEl0ZW0uY29sdW1uSW5kZXggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c2VkSXRlbUluZm8uc2V0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiB0aGlzLmFjdGl2ZUl0ZW0oKS5pbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogdGhpcy5hY3RpdmVJdGVtKCkua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50S2V5OiB0aGlzLmFjdGl2ZUl0ZW0oKS5wYXJlbnRLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtOiBwcm9jZXNzZWRJdGVtLml0ZW1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlSXRlbS5zZXQobnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBjb2x1bW5JbmRleCA9IHByb2Nlc3NlZEl0ZW0uY29sdW1uSW5kZXggLSAxO1xuICAgICAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy52aXNpYmxlSXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmNvbHVtbkluZGV4ID09PSBjb2x1bW5JbmRleCk7XG5cbiAgICAgICAgICAgIGl0ZW1JbmRleCAhPT0gLTEgJiYgdGhpcy5jaGFuZ2VGb2N1c2VkSXRlbUluZm8oZXZlbnQsIGl0ZW1JbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uSG9tZUtleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRJdGVtSW5mbyhldmVudCwgdGhpcy5maW5kRmlyc3RJdGVtSW5kZXgoKSk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25FbmRLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VGb2N1c2VkSXRlbUluZm8oZXZlbnQsIHRoaXMuZmluZExhc3RJdGVtSW5kZXgoKSk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25TcGFjZUtleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLm9uRW50ZXJLZXkoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uRXNjYXBlS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmIChpc05vdEVtcHR5KHRoaXMuYWN0aXZlSXRlbSgpKSkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkSXRlbUluZm8uc2V0KHsgaW5kZXg6IHRoaXMuYWN0aXZlSXRlbSgpLmluZGV4LCBrZXk6IHRoaXMuYWN0aXZlSXRlbSgpLmtleSwgaXRlbTogdGhpcy5hY3RpdmVJdGVtKCkuaXRlbSB9KTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlSXRlbS5zZXQobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uVGFiS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc2VkSXRlbSA9IHRoaXMuZmluZFZpc2libGVJdGVtKHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXgpO1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBlZCA9IHRoaXMuaXNQcm9jY2Vzc2VkSXRlbUdyb3VwKHByb2Nlc3NlZEl0ZW0pO1xuXG4gICAgICAgICAgICAhZ3JvdXBlZCAmJiB0aGlzLm9uSXRlbUNoYW5nZSh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCBwcm9jZXNzZWRJdGVtIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuXG4gICAgb25FbnRlcktleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSA8YW55PmZpbmRTaW5nbGUodGhpcy5yb290bWVudT8uZWw/Lm5hdGl2ZUVsZW1lbnQsIGBsaVtpZD1cIiR7YCR7dGhpcy5mb2N1c2VkSXRlbUlkfWB9XCJdYCk7XG4gICAgICAgICAgICBjb25zdCBhbmNob3JFbGVtZW50ID0gZWxlbWVudCAmJiA8YW55PmZpbmRTaW5nbGUoZWxlbWVudCwgJ2FbZGF0YS1wYy1zZWN0aW9uPVwiYWN0aW9uXCJdJyk7XG5cbiAgICAgICAgICAgIGFuY2hvckVsZW1lbnQgPyBhbmNob3JFbGVtZW50LmNsaWNrKCkgOiBlbGVtZW50ICYmIGVsZW1lbnQuY2xpY2soKTtcblxuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc2VkSXRlbSA9IHRoaXMudmlzaWJsZUl0ZW1zW3RoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXhdO1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBlZCA9IHRoaXMuaXNQcm9jY2Vzc2VkSXRlbUdyb3VwKHByb2Nlc3NlZEl0ZW0pO1xuXG4gICAgICAgICAgICAhZ3JvdXBlZCAmJiB0aGlzLmNoYW5nZUZvY3VzZWRJdGVtSW5mbyhldmVudCwgdGhpcy5maW5kRmlyc3RGb2N1c2VkSXRlbUluZGV4KCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBmaW5kVmlzaWJsZUl0ZW0oaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGlzTm90RW1wdHkodGhpcy52aXNpYmxlSXRlbXMpID8gdGhpcy52aXNpYmxlSXRlbXNbaW5kZXhdIDogbnVsbDtcbiAgICB9XG5cbiAgICBmaW5kTGFzdEZvY3VzZWRJdGVtSW5kZXgoKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSB0aGlzLmZpbmRTZWxlY3RlZEl0ZW1JbmRleCgpO1xuICAgICAgICByZXR1cm4gc2VsZWN0ZWRJbmRleCA8IDAgPyB0aGlzLmZpbmRMYXN0SXRlbUluZGV4KCkgOiBzZWxlY3RlZEluZGV4O1xuICAgIH1cblxuICAgIGZpbmRMYXN0SXRlbUluZGV4KCkge1xuICAgICAgICByZXR1cm4gZmluZExhc3RJbmRleCh0aGlzLnZpc2libGVJdGVtcywgKHByb2Nlc3NlZEl0ZW0pID0+IHRoaXMuaXNWYWxpZEl0ZW0ocHJvY2Vzc2VkSXRlbSkpO1xuICAgIH1cblxuICAgIGZpbmRQcmV2SXRlbUluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgbWF0Y2hlZEl0ZW1JbmRleCA9IGluZGV4ID4gMCA/IGZpbmRMYXN0SW5kZXgodGhpcy52aXNpYmxlSXRlbXMuc2xpY2UoMCwgaW5kZXgpLCAocHJvY2Vzc2VkSXRlbSkgPT4gdGhpcy5pc1ZhbGlkSXRlbShwcm9jZXNzZWRJdGVtKSkgOiAtMTtcblxuICAgICAgICByZXR1cm4gbWF0Y2hlZEl0ZW1JbmRleCA+IC0xID8gbWF0Y2hlZEl0ZW1JbmRleCA6IGluZGV4O1xuICAgIH1cblxuICAgIGZpbmROZXh0SXRlbUluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgbWF0Y2hlZEl0ZW1JbmRleCA9IGluZGV4IDwgdGhpcy52aXNpYmxlSXRlbXMubGVuZ3RoIC0gMSA/IHRoaXMudmlzaWJsZUl0ZW1zLnNsaWNlKGluZGV4ICsgMSkuZmluZEluZGV4KChwcm9jZXNzZWRJdGVtKSA9PiB0aGlzLmlzVmFsaWRJdGVtKHByb2Nlc3NlZEl0ZW0pKSA6IC0xO1xuXG4gICAgICAgIHJldHVybiBtYXRjaGVkSXRlbUluZGV4ID4gLTEgPyBtYXRjaGVkSXRlbUluZGV4ICsgaW5kZXggKyAxIDogaW5kZXg7XG4gICAgfVxuXG4gICAgYmluZFJlc2l6ZUxpc3RlbmVyKCkge1xuICAgICAgICBpZiAoIXRoaXMucmVzaXplTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplTGlzdGVuZXIgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzVG91Y2hEZXZpY2UoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoZXZlbnQsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMubW9iaWxlQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5yZXNpemVMaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiaW5kT3V0c2lkZUNsaWNrTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMub3V0c2lkZUNsaWNrTGlzdGVuZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm91dHNpZGVDbGlja0xpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5kb2N1bWVudCwgJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzT3V0c2lkZUNvbnRhaW5lciA9IHRoaXMuY29udGFpbmVyPy5uYXRpdmVFbGVtZW50ICE9PSBldmVudC50YXJnZXQgJiYgIXRoaXMuY29udGFpbmVyPy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzT3V0c2lkZUNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZE91dHNpZGVDbGlja0xpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5vdXRzaWRlQ2xpY2tMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5vdXRzaWRlQ2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICAgICAgdGhpcy5vdXRzaWRlQ2xpY2tMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1bmJpbmRSZXNpemVMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMucmVzaXplTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnJlc2l6ZUxpc3RlbmVyKTtcbiAgICAgICAgICAgIHRoaXMucmVzaXplTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudW5iaW5kT3V0c2lkZUNsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy51bmJpbmRSZXNpemVMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLnVuYmluZE1hdGNoTWVkaWFMaXN0ZW5lcigpO1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbTWVnYU1lbnUsIFNoYXJlZE1vZHVsZV0sXG4gICAgZXhwb3J0czogW01lZ2FNZW51LCBTaGFyZWRNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIE1lZ2FNZW51TW9kdWxlIHt9XG4iXX0=