primeng 18.0.0-rc.1 → 18.0.0

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 (418) hide show
  1. package/LICENSE.md +1 -1
  2. package/accordion/accordion.d.ts +2 -4
  3. package/api/primeicons.d.ts +3 -3
  4. package/api/scrolleroptions.d.ts +10 -0
  5. package/api/selectitemgroup.d.ts +2 -2
  6. package/api/shared.d.ts +2 -2
  7. package/autocomplete/autocomplete.d.ts +6 -7
  8. package/badge/badge.d.ts +16 -2
  9. package/blockui/blockui.d.ts +2 -2
  10. package/breadcrumb/breadcrumb.d.ts +3 -4
  11. package/button/button.d.ts +3 -4
  12. package/calendar/calendar.d.ts +12 -12
  13. package/card/card.d.ts +2 -2
  14. package/carousel/carousel.d.ts +3 -3
  15. package/cascadeselect/cascadeselect.d.ts +31 -15
  16. package/cascadeselect/style/cascadeselectstyle.d.ts +8 -1
  17. package/checkbox/checkbox.d.ts +2 -2
  18. package/chip/chip.d.ts +2 -2
  19. package/config/primeng.d.ts +12 -6
  20. package/config/provideprimeng.d.ts +1 -12
  21. package/config/themeprovider.d.ts +10 -4
  22. package/confirmdialog/confirmdialog.d.ts +4 -3
  23. package/confirmpopup/confirmpopup.d.ts +3 -4
  24. package/contextmenu/contextmenu.d.ts +2 -2
  25. package/dataview/dataview.d.ts +9 -10
  26. package/datepicker/datepicker.d.ts +8 -8
  27. package/defer/defer.d.ts +2 -0
  28. package/dialog/dialog.d.ts +4 -4
  29. package/drawer/drawer.d.ts +2 -2
  30. package/dropdown/dropdown.d.ts +0 -23
  31. package/editor/editor.d.ts +2 -2
  32. package/esm2022/accordion/accordion.mjs +9 -35
  33. package/esm2022/accordion/style/accordionstyle.mjs +9 -7
  34. package/esm2022/api/primeicons.mjs +4 -4
  35. package/esm2022/api/scrolleroptions.mjs +1 -1
  36. package/esm2022/api/selectitemgroup.mjs +1 -1
  37. package/esm2022/api/shared.mjs +6 -6
  38. package/esm2022/autocomplete/autocomplete.mjs +272 -308
  39. package/esm2022/autocomplete/style/autocompletestyle.mjs +16 -15
  40. package/esm2022/avatar/avatar.mjs +3 -3
  41. package/esm2022/avatar/style/avatarstyle.mjs +3 -3
  42. package/esm2022/badge/badge.mjs +33 -3
  43. package/esm2022/badge/style/badgestyle.mjs +3 -3
  44. package/esm2022/base/style/basestyle.mjs +6 -4
  45. package/esm2022/basecomponent/basecomponent.mjs +8 -2
  46. package/esm2022/blockui/blockui.mjs +6 -6
  47. package/esm2022/breadcrumb/breadcrumb.mjs +94 -101
  48. package/esm2022/breadcrumb/style/breadcrumbstyle.mjs +5 -1
  49. package/esm2022/button/button.mjs +19 -37
  50. package/esm2022/button/style/buttonstyle.mjs +17 -7
  51. package/esm2022/buttongroup/style/buttongroupstyle.mjs +9 -9
  52. package/esm2022/calendar/calendar.mjs +115 -115
  53. package/esm2022/calendar/style/calendarstyle.mjs +5 -5
  54. package/esm2022/card/card.mjs +10 -9
  55. package/esm2022/carousel/carousel.mjs +20 -19
  56. package/esm2022/carousel/style/carouselstyle.mjs +10 -1
  57. package/esm2022/cascadeselect/cascadeselect.mjs +182 -107
  58. package/esm2022/cascadeselect/style/cascadeselectstyle.mjs +37 -22
  59. package/esm2022/checkbox/checkbox.mjs +8 -8
  60. package/esm2022/chip/chip.mjs +10 -10
  61. package/esm2022/chip/style/chipstyle.mjs +2 -2
  62. package/esm2022/colorpicker/colorpicker.mjs +2 -2
  63. package/esm2022/colorpicker/style/colorpickerstyle.mjs +29 -1
  64. package/esm2022/config/primeng.mjs +14 -18
  65. package/esm2022/config/provideprimeng.mjs +11 -3
  66. package/esm2022/config/themeprovider.mjs +10 -16
  67. package/esm2022/confirmdialog/confirmdialog.mjs +26 -18
  68. package/esm2022/confirmpopup/confirmpopup.mjs +45 -36
  69. package/esm2022/contextmenu/contextmenu.mjs +13 -13
  70. package/esm2022/contextmenu/style/contextmenustyle.mjs +11 -1
  71. package/esm2022/dataview/dataview.mjs +39 -113
  72. package/esm2022/datepicker/datepicker.mjs +93 -93
  73. package/esm2022/datepicker/style/datepickerstyle.mjs +23 -16
  74. package/esm2022/defer/defer.mjs +7 -1
  75. package/esm2022/dialog/dialog.mjs +44 -43
  76. package/esm2022/dialog/style/dialogstyle.mjs +22 -1
  77. package/esm2022/divider/style/dividerstyle.mjs +18 -14
  78. package/esm2022/dock/style/dockstyle.mjs +11 -1
  79. package/esm2022/drawer/drawer.mjs +11 -11
  80. package/esm2022/drawer/style/drawerstyle.mjs +5 -1
  81. package/esm2022/dropdown/dropdown.mjs +4 -18
  82. package/esm2022/dropdown/style/dropdownstyle.mjs +4 -4
  83. package/esm2022/dynamicdialog/dialogservice.mjs +2 -2
  84. package/esm2022/editor/editor.mjs +1 -1
  85. package/esm2022/editor/style/editorstyle.mjs +52 -158
  86. package/esm2022/fieldset/fieldset.mjs +20 -21
  87. package/esm2022/fileupload/fileupload.mjs +108 -68
  88. package/esm2022/floatlabel/style/floatlabelstyle.mjs +5 -5
  89. package/esm2022/galleria/galleria.mjs +6 -1
  90. package/esm2022/galleria/style/galleriastyle.mjs +18 -1
  91. package/esm2022/iconfield/style/iconfieldstyle.mjs +2 -2
  92. package/esm2022/iftalabel/iftalabel.mjs +6 -6
  93. package/esm2022/iftalabel/style/iftalabelstyle.mjs +5 -5
  94. package/esm2022/image/image.mjs +37 -70
  95. package/esm2022/image/style/imagestyle.mjs +7 -7
  96. package/esm2022/imagecompare/imagecompare.mjs +158 -0
  97. package/esm2022/imagecompare/primeng-imagecompare.mjs +5 -0
  98. package/esm2022/imagecompare/public_api.mjs +3 -0
  99. package/esm2022/imagecompare/style/imagecomparestyle.mjs +124 -0
  100. package/esm2022/inplace/inplace.mjs +8 -8
  101. package/esm2022/inputmask/inputmask.mjs +13 -13
  102. package/esm2022/inputmask/style/inputmaskstyle.mjs +14 -7
  103. package/esm2022/inputnumber/inputnumber.mjs +44 -46
  104. package/esm2022/inputnumber/style/inputnumberstyle.mjs +27 -19
  105. package/esm2022/inputotp/inputotp.mjs +4 -16
  106. package/esm2022/inputtext/inputtext.mjs +11 -10
  107. package/esm2022/inputtext/style/inputtextstyle.mjs +15 -9
  108. package/esm2022/keyfilter/keyfilter.mjs +4 -3
  109. package/esm2022/listbox/listbox.mjs +8 -53
  110. package/esm2022/megamenu/megamenu.mjs +18 -18
  111. package/esm2022/megamenu/style/megamenustyle.mjs +17 -1
  112. package/esm2022/menu/menu.mjs +47 -29
  113. package/esm2022/menubar/menubar.mjs +25 -25
  114. package/esm2022/menubar/style/menubarstyle.mjs +22 -2
  115. package/esm2022/message/message.mjs +12 -12
  116. package/esm2022/messages/messages.mjs +2 -1
  117. package/esm2022/metergroup/style/metergroupstyle.mjs +9 -9
  118. package/esm2022/multiselect/multiselect.mjs +214 -202
  119. package/esm2022/multiselect/style/multiselectstyle.mjs +13 -18
  120. package/esm2022/orderlist/orderlist.mjs +38 -80
  121. package/esm2022/organizationchart/style/organizationchartstyle.mjs +11 -22
  122. package/esm2022/overlay/style/overlaystyle.mjs +2 -2
  123. package/esm2022/overlaypanel/overlaypanel.mjs +25 -25
  124. package/esm2022/paginator/paginator.mjs +48 -48
  125. package/esm2022/paginator/style/paginatorstyle.mjs +10 -3
  126. package/esm2022/panel/panel.mjs +17 -37
  127. package/esm2022/panelmenu/panelmenu.mjs +32 -43
  128. package/esm2022/panelmenu/style/panelmenustyle.mjs +13 -5
  129. package/esm2022/password/password.mjs +53 -30
  130. package/esm2022/password/style/passwordstyle.mjs +14 -6
  131. package/esm2022/picklist/picklist.mjs +136 -112
  132. package/esm2022/popover/popover.mjs +22 -26
  133. package/esm2022/progressbar/style/progressbarstyle.mjs +29 -29
  134. package/esm2022/radiobutton/style/radiobuttonstyle.mjs +2 -2
  135. package/esm2022/rating/rating.mjs +12 -12
  136. package/esm2022/ripple/ripple.mjs +5 -2
  137. package/esm2022/scroller/scroller.mjs +9 -9
  138. package/esm2022/scrollpanel/scrollpanel.mjs +4 -4
  139. package/esm2022/scrollpanel/style/scrollpanelstyle.mjs +3 -2
  140. package/esm2022/scrolltop/style/scrolltopstyle.mjs +7 -2
  141. package/esm2022/select/select.mjs +70 -116
  142. package/esm2022/select/style/selectstyle.mjs +14 -23
  143. package/esm2022/selectbutton/style/selectbuttonstyle.mjs +5 -5
  144. package/esm2022/sidebar/sidebar.mjs +2 -2
  145. package/esm2022/skeleton/style/skeletonstyle.mjs +15 -2
  146. package/esm2022/slider/slider.mjs +18 -11
  147. package/esm2022/slider/style/sliderstyle.mjs +6 -6
  148. package/esm2022/speeddial/speeddial.mjs +1 -16
  149. package/esm2022/speeddial/style/speeddialstyle.mjs +2 -2
  150. package/esm2022/splitbutton/splitbutton.mjs +8 -8
  151. package/esm2022/splitbutton/style/splitbuttonstyle.mjs +9 -9
  152. package/esm2022/splitter/splitter.mjs +79 -29
  153. package/esm2022/splitter/style/splitterstyle.mjs +5 -4
  154. package/esm2022/stepper/style/stepperstyle.mjs +6 -1
  155. package/esm2022/styleclass/styleclass.mjs +2 -2
  156. package/esm2022/table/style/tablestyle.mjs +14 -7
  157. package/esm2022/table/table.mjs +6649 -6669
  158. package/esm2022/tabmenu/tabmenu.mjs +15 -33
  159. package/esm2022/tabs/tab.mjs +4 -3
  160. package/esm2022/tabs/tablist.mjs +9 -6
  161. package/esm2022/tabview/tabview.mjs +72 -64
  162. package/esm2022/terminal/style/terminalstyle.mjs +2 -2
  163. package/esm2022/textarea/style/textareastyle.mjs +9 -7
  164. package/esm2022/textarea/textarea.mjs +9 -9
  165. package/esm2022/tieredmenu/style/tieredmenustyle.mjs +6 -1
  166. package/esm2022/tieredmenu/tieredmenu.mjs +13 -13
  167. package/esm2022/timeline/style/timelinestyle.mjs +2 -1
  168. package/esm2022/timeline/timeline.mjs +1 -16
  169. package/esm2022/toast/style/toaststyle.mjs +7 -1
  170. package/esm2022/togglebutton/style/togglebuttonstyle.mjs +2 -2
  171. package/esm2022/toggleswitch/toggleswitch.mjs +1 -10
  172. package/esm2022/tooltip/tooltip.mjs +34 -26
  173. package/esm2022/tree/style/treestyle.mjs +20 -8
  174. package/esm2022/tree/tree.mjs +138 -97
  175. package/esm2022/treeselect/style/treeselectstyle.mjs +15 -15
  176. package/esm2022/treeselect/treeselect.mjs +50 -50
  177. package/esm2022/treetable/style/treetablestyle.mjs +4 -4
  178. package/esm2022/treetable/treetable.mjs +20 -4
  179. package/esm2022/usestyle/usestyle.mjs +3 -2
  180. package/fesm2022/primeng-accordion.mjs +16 -40
  181. package/fesm2022/primeng-accordion.mjs.map +1 -1
  182. package/fesm2022/primeng-api.mjs +8 -8
  183. package/fesm2022/primeng-api.mjs.map +1 -1
  184. package/fesm2022/primeng-autocomplete.mjs +286 -321
  185. package/fesm2022/primeng-autocomplete.mjs.map +1 -1
  186. package/fesm2022/primeng-avatar.mjs +4 -4
  187. package/fesm2022/primeng-avatar.mjs.map +1 -1
  188. package/fesm2022/primeng-badge.mjs +34 -4
  189. package/fesm2022/primeng-badge.mjs.map +1 -1
  190. package/fesm2022/primeng-base.mjs +5 -3
  191. package/fesm2022/primeng-base.mjs.map +1 -1
  192. package/fesm2022/primeng-basecomponent.mjs +7 -1
  193. package/fesm2022/primeng-basecomponent.mjs.map +1 -1
  194. package/fesm2022/primeng-blockui.mjs +5 -5
  195. package/fesm2022/primeng-blockui.mjs.map +1 -1
  196. package/fesm2022/primeng-breadcrumb.mjs +97 -100
  197. package/fesm2022/primeng-breadcrumb.mjs.map +1 -1
  198. package/fesm2022/primeng-button.mjs +34 -42
  199. package/fesm2022/primeng-button.mjs.map +1 -1
  200. package/fesm2022/primeng-buttongroup.mjs +8 -8
  201. package/fesm2022/primeng-buttongroup.mjs.map +1 -1
  202. package/fesm2022/primeng-calendar.mjs +118 -118
  203. package/fesm2022/primeng-calendar.mjs.map +1 -1
  204. package/fesm2022/primeng-card.mjs +9 -8
  205. package/fesm2022/primeng-card.mjs.map +1 -1
  206. package/fesm2022/primeng-carousel.mjs +28 -18
  207. package/fesm2022/primeng-carousel.mjs.map +1 -1
  208. package/fesm2022/primeng-cascadeselect.mjs +218 -128
  209. package/fesm2022/primeng-cascadeselect.mjs.map +1 -1
  210. package/fesm2022/primeng-checkbox.mjs +7 -7
  211. package/fesm2022/primeng-checkbox.mjs.map +1 -1
  212. package/fesm2022/primeng-chip.mjs +10 -10
  213. package/fesm2022/primeng-chip.mjs.map +1 -1
  214. package/fesm2022/primeng-colorpicker.mjs +29 -1
  215. package/fesm2022/primeng-colorpicker.mjs.map +1 -1
  216. package/fesm2022/primeng-config.mjs +38 -39
  217. package/fesm2022/primeng-config.mjs.map +1 -1
  218. package/fesm2022/primeng-confirmdialog.mjs +25 -17
  219. package/fesm2022/primeng-confirmdialog.mjs.map +1 -1
  220. package/fesm2022/primeng-confirmpopup.mjs +44 -35
  221. package/fesm2022/primeng-confirmpopup.mjs.map +1 -1
  222. package/fesm2022/primeng-contextmenu.mjs +22 -12
  223. package/fesm2022/primeng-contextmenu.mjs.map +1 -1
  224. package/fesm2022/primeng-dataview.mjs +38 -112
  225. package/fesm2022/primeng-dataview.mjs.map +1 -1
  226. package/fesm2022/primeng-datepicker.mjs +114 -107
  227. package/fesm2022/primeng-datepicker.mjs.map +1 -1
  228. package/fesm2022/primeng-defer.mjs +6 -0
  229. package/fesm2022/primeng-defer.mjs.map +1 -1
  230. package/fesm2022/primeng-dialog.mjs +64 -42
  231. package/fesm2022/primeng-dialog.mjs.map +1 -1
  232. package/fesm2022/primeng-divider.mjs +17 -13
  233. package/fesm2022/primeng-divider.mjs.map +1 -1
  234. package/fesm2022/primeng-dock.mjs +10 -0
  235. package/fesm2022/primeng-dock.mjs.map +1 -1
  236. package/fesm2022/primeng-drawer.mjs +14 -10
  237. package/fesm2022/primeng-drawer.mjs.map +1 -1
  238. package/fesm2022/primeng-dropdown.mjs +6 -20
  239. package/fesm2022/primeng-dropdown.mjs.map +1 -1
  240. package/fesm2022/primeng-dynamicdialog.mjs +1 -1
  241. package/fesm2022/primeng-dynamicdialog.mjs.map +1 -1
  242. package/fesm2022/primeng-editor.mjs +51 -157
  243. package/fesm2022/primeng-editor.mjs.map +1 -1
  244. package/fesm2022/primeng-fieldset.mjs +19 -20
  245. package/fesm2022/primeng-fieldset.mjs.map +1 -1
  246. package/fesm2022/primeng-fileupload.mjs +107 -67
  247. package/fesm2022/primeng-fileupload.mjs.map +1 -1
  248. package/fesm2022/primeng-floatlabel.mjs +4 -4
  249. package/fesm2022/primeng-floatlabel.mjs.map +1 -1
  250. package/fesm2022/primeng-galleria.mjs +22 -0
  251. package/fesm2022/primeng-galleria.mjs.map +1 -1
  252. package/fesm2022/primeng-iconfield.mjs +1 -1
  253. package/fesm2022/primeng-iconfield.mjs.map +1 -1
  254. package/fesm2022/primeng-iftalabel.mjs +9 -9
  255. package/fesm2022/primeng-iftalabel.mjs.map +1 -1
  256. package/fesm2022/primeng-image.mjs +42 -75
  257. package/fesm2022/primeng-image.mjs.map +1 -1
  258. package/fesm2022/primeng-imagecompare.mjs +286 -0
  259. package/fesm2022/primeng-imagecompare.mjs.map +1 -0
  260. package/fesm2022/primeng-inplace.mjs +7 -7
  261. package/fesm2022/primeng-inplace.mjs.map +1 -1
  262. package/fesm2022/primeng-inputmask.mjs +25 -18
  263. package/fesm2022/primeng-inputmask.mjs.map +1 -1
  264. package/fesm2022/primeng-inputnumber.mjs +69 -63
  265. package/fesm2022/primeng-inputnumber.mjs.map +1 -1
  266. package/fesm2022/primeng-inputotp.mjs +3 -15
  267. package/fesm2022/primeng-inputotp.mjs.map +1 -1
  268. package/fesm2022/primeng-inputtext.mjs +24 -17
  269. package/fesm2022/primeng-inputtext.mjs.map +1 -1
  270. package/fesm2022/primeng-keyfilter.mjs +3 -2
  271. package/fesm2022/primeng-keyfilter.mjs.map +1 -1
  272. package/fesm2022/primeng-listbox.mjs +7 -52
  273. package/fesm2022/primeng-listbox.mjs.map +1 -1
  274. package/fesm2022/primeng-megamenu.mjs +33 -17
  275. package/fesm2022/primeng-megamenu.mjs.map +1 -1
  276. package/fesm2022/primeng-menu.mjs +46 -28
  277. package/fesm2022/primeng-menu.mjs.map +1 -1
  278. package/fesm2022/primeng-menubar.mjs +45 -25
  279. package/fesm2022/primeng-menubar.mjs.map +1 -1
  280. package/fesm2022/primeng-message.mjs +11 -11
  281. package/fesm2022/primeng-message.mjs.map +1 -1
  282. package/fesm2022/primeng-messages.mjs +1 -0
  283. package/fesm2022/primeng-messages.mjs.map +1 -1
  284. package/fesm2022/primeng-metergroup.mjs +8 -8
  285. package/fesm2022/primeng-metergroup.mjs.map +1 -1
  286. package/fesm2022/primeng-multiselect.mjs +225 -218
  287. package/fesm2022/primeng-multiselect.mjs.map +1 -1
  288. package/fesm2022/primeng-orderlist.mjs +37 -79
  289. package/fesm2022/primeng-orderlist.mjs.map +1 -1
  290. package/fesm2022/primeng-organizationchart.mjs +10 -21
  291. package/fesm2022/primeng-organizationchart.mjs.map +1 -1
  292. package/fesm2022/primeng-overlay.mjs +1 -1
  293. package/fesm2022/primeng-overlay.mjs.map +1 -1
  294. package/fesm2022/primeng-overlaypanel.mjs +24 -24
  295. package/fesm2022/primeng-overlaypanel.mjs.map +1 -1
  296. package/fesm2022/primeng-paginator.mjs +56 -49
  297. package/fesm2022/primeng-paginator.mjs.map +1 -1
  298. package/fesm2022/primeng-panel.mjs +16 -36
  299. package/fesm2022/primeng-panel.mjs.map +1 -1
  300. package/fesm2022/primeng-panelmenu.mjs +43 -46
  301. package/fesm2022/primeng-panelmenu.mjs.map +1 -1
  302. package/fesm2022/primeng-password.mjs +65 -34
  303. package/fesm2022/primeng-password.mjs.map +1 -1
  304. package/fesm2022/primeng-picklist.mjs +135 -111
  305. package/fesm2022/primeng-picklist.mjs.map +1 -1
  306. package/fesm2022/primeng-popover.mjs +21 -25
  307. package/fesm2022/primeng-popover.mjs.map +1 -1
  308. package/fesm2022/primeng-progressbar.mjs +28 -28
  309. package/fesm2022/primeng-progressbar.mjs.map +1 -1
  310. package/fesm2022/primeng-radiobutton.mjs +1 -1
  311. package/fesm2022/primeng-radiobutton.mjs.map +1 -1
  312. package/fesm2022/primeng-rating.mjs +11 -11
  313. package/fesm2022/primeng-rating.mjs.map +1 -1
  314. package/fesm2022/primeng-ripple.mjs +4 -1
  315. package/fesm2022/primeng-ripple.mjs.map +1 -1
  316. package/fesm2022/primeng-scroller.mjs +8 -8
  317. package/fesm2022/primeng-scroller.mjs.map +1 -1
  318. package/fesm2022/primeng-scrollpanel.mjs +5 -4
  319. package/fesm2022/primeng-scrollpanel.mjs.map +1 -1
  320. package/fesm2022/primeng-scrolltop.mjs +6 -1
  321. package/fesm2022/primeng-scrolltop.mjs.map +1 -1
  322. package/fesm2022/primeng-select.mjs +82 -137
  323. package/fesm2022/primeng-select.mjs.map +1 -1
  324. package/fesm2022/primeng-selectbutton.mjs +4 -4
  325. package/fesm2022/primeng-selectbutton.mjs.map +1 -1
  326. package/fesm2022/primeng-sidebar.mjs +1 -1
  327. package/fesm2022/primeng-sidebar.mjs.map +1 -1
  328. package/fesm2022/primeng-skeleton.mjs +14 -1
  329. package/fesm2022/primeng-skeleton.mjs.map +1 -1
  330. package/fesm2022/primeng-slider.mjs +22 -15
  331. package/fesm2022/primeng-slider.mjs.map +1 -1
  332. package/fesm2022/primeng-speeddial.mjs +1 -16
  333. package/fesm2022/primeng-speeddial.mjs.map +1 -1
  334. package/fesm2022/primeng-splitbutton.mjs +15 -15
  335. package/fesm2022/primeng-splitbutton.mjs.map +1 -1
  336. package/fesm2022/primeng-splitter.mjs +84 -33
  337. package/fesm2022/primeng-splitter.mjs.map +1 -1
  338. package/fesm2022/primeng-stepper.mjs +5 -0
  339. package/fesm2022/primeng-stepper.mjs.map +1 -1
  340. package/fesm2022/primeng-styleclass.mjs +1 -1
  341. package/fesm2022/primeng-styleclass.mjs.map +1 -1
  342. package/fesm2022/primeng-table.mjs +6663 -6676
  343. package/fesm2022/primeng-table.mjs.map +1 -1
  344. package/fesm2022/primeng-tabmenu.mjs +14 -32
  345. package/fesm2022/primeng-tabmenu.mjs.map +1 -1
  346. package/fesm2022/primeng-tabs.mjs +11 -7
  347. package/fesm2022/primeng-tabs.mjs.map +1 -1
  348. package/fesm2022/primeng-tabview.mjs +71 -63
  349. package/fesm2022/primeng-tabview.mjs.map +1 -1
  350. package/fesm2022/primeng-terminal.mjs +1 -1
  351. package/fesm2022/primeng-terminal.mjs.map +1 -1
  352. package/fesm2022/primeng-textarea.mjs +16 -14
  353. package/fesm2022/primeng-textarea.mjs.map +1 -1
  354. package/fesm2022/primeng-tieredmenu.mjs +17 -12
  355. package/fesm2022/primeng-tieredmenu.mjs.map +1 -1
  356. package/fesm2022/primeng-timeline.mjs +1 -15
  357. package/fesm2022/primeng-timeline.mjs.map +1 -1
  358. package/fesm2022/primeng-toast.mjs +6 -0
  359. package/fesm2022/primeng-toast.mjs.map +1 -1
  360. package/fesm2022/primeng-togglebutton.mjs +1 -1
  361. package/fesm2022/primeng-togglebutton.mjs.map +1 -1
  362. package/fesm2022/primeng-toggleswitch.mjs +0 -9
  363. package/fesm2022/primeng-toggleswitch.mjs.map +1 -1
  364. package/fesm2022/primeng-tooltip.mjs +33 -25
  365. package/fesm2022/primeng-tooltip.mjs.map +1 -1
  366. package/fesm2022/primeng-tree.mjs +156 -103
  367. package/fesm2022/primeng-tree.mjs.map +1 -1
  368. package/fesm2022/primeng-treeselect.mjs +63 -63
  369. package/fesm2022/primeng-treeselect.mjs.map +1 -1
  370. package/fesm2022/primeng-treetable.mjs +22 -6
  371. package/fesm2022/primeng-treetable.mjs.map +1 -1
  372. package/fesm2022/primeng-usestyle.mjs +2 -1
  373. package/fesm2022/primeng-usestyle.mjs.map +1 -1
  374. package/fieldset/fieldset.d.ts +3 -3
  375. package/fileupload/fileupload.d.ts +21 -5
  376. package/iftalabel/iftalabel.d.ts +2 -2
  377. package/image/image.d.ts +6 -7
  378. package/imagecompare/imagecompare.d.ts +52 -0
  379. package/imagecompare/index.d.ts +5 -0
  380. package/imagecompare/public_api.d.ts +2 -0
  381. package/imagecompare/style/imagecomparestyle.d.ts +35 -0
  382. package/inplace/inplace.d.ts +2 -2
  383. package/inputmask/inputmask.d.ts +2 -2
  384. package/inputnumber/inputnumber.d.ts +4 -5
  385. package/inputotp/inputotp.d.ts +1 -2
  386. package/inputtext/inputtext.d.ts +2 -2
  387. package/listbox/listbox.d.ts +2 -3
  388. package/megamenu/megamenu.d.ts +4 -4
  389. package/menu/menu.d.ts +10 -4
  390. package/menubar/menubar.d.ts +5 -5
  391. package/message/message.d.ts +2 -2
  392. package/multiselect/multiselect.d.ts +16 -16
  393. package/orderlist/orderlist.d.ts +10 -11
  394. package/overlaypanel/overlaypanel.d.ts +3 -4
  395. package/package.json +172 -166
  396. package/paginator/paginator.d.ts +6 -6
  397. package/panel/panel.d.ts +3 -4
  398. package/panelmenu/panelmenu.d.ts +2 -3
  399. package/password/password.d.ts +9 -5
  400. package/popover/popover.d.ts +7 -5
  401. package/rating/rating.d.ts +4 -4
  402. package/scroller/scroller.d.ts +2 -2
  403. package/select/select.d.ts +12 -13
  404. package/speeddial/speeddial.d.ts +2 -3
  405. package/splitbutton/splitbutton.d.ts +2 -2
  406. package/splitter/splitter.d.ts +11 -5
  407. package/splitter/style/splitterstyle.d.ts +0 -13
  408. package/table/table.d.ts +934 -995
  409. package/tabmenu/tabmenu.d.ts +5 -6
  410. package/tabview/tabview.d.ts +4 -5
  411. package/textarea/textarea.d.ts +2 -2
  412. package/tieredmenu/tieredmenu.d.ts +2 -2
  413. package/timeline/timeline.d.ts +0 -1
  414. package/toggleswitch/toggleswitch.d.ts +0 -1
  415. package/tooltip/tooltip.d.ts +2 -1
  416. package/tree/style/treestyle.d.ts +1 -1
  417. package/tree/tree.d.ts +9 -7
  418. package/treeselect/treeselect.d.ts +9 -9
@@ -173,8 +173,9 @@ export class KeyFilter {
173
173
  if (!browser.mozilla && (this.isSpecialKey(e) || !cc)) {
174
174
  return;
175
175
  }
176
- let val = this.el.nativeElement.value + cc;
177
- ok = this.regex.test(val);
176
+ let existingValue = this.el.nativeElement.value || '';
177
+ let combinedValue = existingValue + cc;
178
+ ok = this.regex.test(combinedValue);
178
179
  if (!ok) {
179
180
  e.preventDefault();
180
181
  }
@@ -259,4 +260,4 @@ export class KeyFilterModule {
259
260
  }]
260
261
  }], null, null); })();
261
262
  (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(KeyFilterModule, { imports: [KeyFilter], exports: [KeyFilter] }); })();
262
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5ZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2tleWZpbHRlci9rZXlmaWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUN4SyxPQUFPLEVBQW1CLGFBQWEsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBR3hELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFhO0lBQ3pDLE9BQU8sRUFBRSxhQUFhO0lBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDO0lBQ3hDLEtBQUssRUFBRSxJQUFJO0NBQ2QsQ0FBQztBQXNCRixNQUFNLGFBQWEsR0FBcUM7SUFDcEQsSUFBSSxFQUFFLFNBQVM7SUFDZixHQUFHLEVBQUUsYUFBYTtJQUNsQixJQUFJLEVBQUUsV0FBVztJQUNqQixLQUFLLEVBQUUsY0FBYztJQUNyQixHQUFHLEVBQUUsZUFBZTtJQUNwQixHQUFHLEVBQUUsY0FBYztJQUNuQixLQUFLLEVBQUUsb0JBQW9CO0lBQzNCLEtBQUssRUFBRSxZQUFZO0lBQ25CLFFBQVEsRUFBRSxlQUFlO0NBQzVCLENBQUM7QUFFRixNQUFNLElBQUksR0FBUztJQUNmLEdBQUcsRUFBRSxDQUFDO0lBQ04sTUFBTSxFQUFFLEVBQUU7SUFDVixHQUFHLEVBQUUsRUFBRTtJQUNQLFNBQVMsRUFBRSxDQUFDO0lBQ1osTUFBTSxFQUFFLEVBQUU7Q0FDYixDQUFDO0FB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a0JBQXBELEtBQUs7bUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7WUFNYixPQUFPO2tCQUEvQixLQUFLO21CQUFDLFlBQVk7WUFvQlQsYUFBYTtrQkFBdEIsTUFBTTtZQXVFUCxPQUFPO2tCQUROLFlBQVk7bUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO1lBOEJqQyxVQUFVO2tCQURULFlBQVk7bUJBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDO1lBb0NwQyxPQUFPO2tCQUROLFlBQVk7bUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDOztBQXNDckMsTUFBTSxPQUFPLGVBQWU7eUdBQWYsZUFBZTs0REFBZixlQUFlOzs7aUZBQWYsZUFBZTtjQUozQixRQUFRO2VBQUM7Z0JBQ04sT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDO2dCQUNwQixPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUM7YUFDdkI7O3dGQUNZLGVBQWUsY0EzTWYsU0FBUyxhQUFULFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgYm9vbGVhbkF0dHJpYnV0ZSwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBJbnB1dCwgTmdNb2R1bGUsIE91dHB1dCwgUExBVEZPUk1fSUQsIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIE5HX1ZBTElEQVRPUlMsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGdldEJyb3dzZXIsIGlzQW5kcm9pZCB9IGZyb20gJ0BwcmltZXVpeC91dGlscyc7XG5pbXBvcnQgeyBLZXlGaWx0ZXJQYXR0ZXJuIH0gZnJvbSAnLi9rZXlmaWx0ZXIuaW50ZXJmYWNlJztcblxuZXhwb3J0IGNvbnN0IEtFWUZJTFRFUl9WQUxJREFUT1I6IFByb3ZpZGVyID0ge1xuICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gS2V5RmlsdGVyKSxcbiAgICBtdWx0aTogdHJ1ZVxufTtcblxudHlwZSBTYWZhcmlLZXlzID0ge1xuICAgIDYzMjM0OiBudW1iZXI7XG4gICAgNjMyMzU6IG51bWJlcjtcbiAgICA2MzIzMjogbnVtYmVyO1xuICAgIDYzMjMzOiBudW1iZXI7XG4gICAgNjMyNzY6IG51bWJlcjtcbiAgICA2MzI3NzogbnVtYmVyO1xuICAgIDYzMjcyOiBudW1iZXI7XG4gICAgNjMyNzM6IG51bWJlcjtcbiAgICA2MzI3NTogbnVtYmVyO1xufTtcblxudHlwZSBLZXlzID0ge1xuICAgIFRBQjogbnVtYmVyO1xuICAgIFJFVFVSTjogbnVtYmVyO1xuICAgIEVTQzogbnVtYmVyO1xuICAgIEJBQ0tTUEFDRTogbnVtYmVyO1xuICAgIERFTEVURTogbnVtYmVyO1xufTtcblxuY29uc3QgREVGQVVMVF9NQVNLUzogUmVjb3JkPEtleUZpbHRlclBhdHRlcm4sIFJlZ0V4cD4gPSB7XG4gICAgcGludDogL15bXFxkXSokLyxcbiAgICBpbnQ6IC9eWy1dP1tcXGRdKiQvLFxuICAgIHBudW06IC9eW1xcZFxcLl0qJC8sXG4gICAgbW9uZXk6IC9eW1xcZFxcLlxccyxdKiQvLFxuICAgIG51bTogL15bLV0/W1xcZFxcLl0qJC8sXG4gICAgaGV4OiAvXlswLTlhLWZdKiQvaSxcbiAgICBlbWFpbDogL15bYS16MC05X1xcLlxcLUBdKiQvaSxcbiAgICBhbHBoYTogL15bYS16X10qJC9pLFxuICAgIGFscGhhbnVtOiAvXlthLXowLTlfXSokL2lcbn07XG5cbmNvbnN0IEtFWVM6IEtleXMgPSB7XG4gICAgVEFCOiA5LFxuICAgIFJFVFVSTjogMTMsXG4gICAgRVNDOiAyNyxcbiAgICBCQUNLU1BBQ0U6IDgsXG4gICAgREVMRVRFOiA0NlxufTtcblxuY29uc3QgU0FGQVJJX0tFWVM6IFNhZmFyaUtleXMgPSB7XG4gICAgNjMyMzQ6IDM3LCAvLyBsZWZ0XG4gICAgNjMyMzU6IDM5LCAvLyByaWdodFxuICAgIDYzMjMyOiAzOCwgLy8gdXBcbiAgICA2MzIzMzogNDAsIC8vIGRvd25cbiAgICA2MzI3NjogMzMsIC8vIHBhZ2UgdXBcbiAgICA2MzI3NzogMzQsIC8vIHBhZ2UgZG93blxuICAgIDYzMjcyOiA0NiwgLy8gZGVsZXRlXG4gICAgNjMyNzM6IDM2LCAvLyBob21lXG4gICAgNjMyNzU6IDM1IC8vIGVuZFxufTtcbi8qKlxuICogS2V5RmlsdGVyIERpcmVjdGl2ZSBpcyBhIGJ1aWx0LWluIGZlYXR1cmUgb2YgSW5wdXRUZXh0IHRvIHJlc3RyaWN0IHVzZXIgaW5wdXQgYmFzZWQgb24gYSByZWd1bGFyIGV4cHJlc3Npb24uXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1twS2V5RmlsdGVyXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFtLRVlGSUxURVJfVkFMSURBVE9SXVxufSlcbmV4cG9ydCBjbGFzcyBLZXlGaWx0ZXIgaW1wbGVtZW50cyBWYWxpZGF0b3Ige1xuICAgIC8qKlxuICAgICAqIFdoZW4gZW5hYmxlZCwgaW5zdGVhZCBvZiBibG9ja2luZyBrZXlzLCBpbnB1dCBpcyB2YWxpZGF0ZWQgaW50ZXJuYWxseSB0byB0ZXN0IGFnYWluc3QgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcFZhbGlkYXRlT25seTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBwYXR0ZXJuIGZvciBrZXkgZmlsdGVyaW5nLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuXG4gICAgQElucHV0KCdwS2V5RmlsdGVyJykgc2V0IHBhdHRlcm4oX3BhdHRlcm46IFJlZ0V4cCB8IEtleUZpbHRlclBhdHRlcm4gfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX3BhdHRlcm4gPSBfcGF0dGVybjtcblxuICAgICAgICBpZiAoX3BhdHRlcm4gaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgICAgICAgIHRoaXMucmVnZXggPSBfcGF0dGVybjtcbiAgICAgICAgfSBlbHNlIGlmIChfcGF0dGVybiBpbiBERUZBVUxUX01BU0tTKSB7XG4gICAgICAgICAgICB0aGlzLnJlZ2V4ID0gREVGQVVMVF9NQVNLU1tfcGF0dGVybl07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlZ2V4ID0gLy4vO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCBwYXR0ZXJuKCk6IFJlZ0V4cCB8IEtleUZpbHRlclBhdHRlcm4gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhdHRlcm47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW1pdHMgYSB2YWx1ZSB3aGVuZXZlciB0aGUgbmdNb2RlbCBvZiB0aGUgY29tcG9uZW50IGNoYW5nZXMuXG4gICAgICogQHBhcmFtIHsoc3RyaW5nIHwgbnVtYmVyKX0gbW9kZWxWYWx1ZSAtIEN1c3RvbSBtb2RlbCBjaGFuZ2UgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG5nTW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBudW1iZXI+KCk7XG5cbiAgICByZWdleDogUmVnRXhwID0gLy4vO1xuXG4gICAgX3BhdHRlcm46IFJlZ0V4cCB8IEtleUZpbHRlclBhdHRlcm4gfCBudWxsIHwgdW5kZWZpbmVkO1xuXG4gICAgaXNBbmRyb2lkOiBib29sZWFuO1xuXG4gICAgbGFzdFZhbHVlOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogYW55LFxuICAgICAgICBwdWJsaWMgZWw6IEVsZW1lbnRSZWZcbiAgICApIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHRoaXMuaXNBbmRyb2lkID0gaXNBbmRyb2lkKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlzQW5kcm9pZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNOYXZLZXlQcmVzcyhlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGxldCBrID0gZS5rZXlDb2RlO1xuICAgICAgICBrID0gZ2V0QnJvd3NlcigpLnNhZmFyaSA/IChTQUZBUklfS0VZUyBhcyBhbnkpW2tdIHx8IGsgOiBrO1xuXG4gICAgICAgIHJldHVybiAoayA+PSAzMyAmJiBrIDw9IDQwKSB8fCBrID09IEtFWVMuUkVUVVJOIHx8IGsgPT0gS0VZUy5UQUIgfHwgayA9PSBLRVlTLkVTQztcbiAgICB9XG5cbiAgICBpc1NwZWNpYWxLZXkoZTogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBsZXQgayA9IGUua2V5Q29kZSB8fCBlLmNoYXJDb2RlO1xuXG4gICAgICAgIHJldHVybiBrID09IDkgfHwgayA9PSAxMyB8fCBrID09IDI3IHx8IGsgPT0gMTYgfHwgayA9PSAxNyB8fCAoayA+PSAxOCAmJiBrIDw9IDIwKSB8fCAoZ2V0QnJvd3NlcigpLm9wZXJhICYmICFlLnNoaWZ0S2V5ICYmIChrID09IDggfHwgKGsgPj0gMzMgJiYgayA8PSAzNSkgfHwgKGsgPj0gMzYgJiYgayA8PSAzOSkgfHwgKGsgPj0gNDQgJiYgayA8PSA0NSkpKTtcbiAgICB9XG5cbiAgICBnZXRLZXkoZTogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBsZXQgayA9IGUua2V5Q29kZSB8fCBlLmNoYXJDb2RlO1xuICAgICAgICByZXR1cm4gZ2V0QnJvd3NlcigpLnNhZmFyaSA/IChTQUZBUklfS0VZUyBhcyBhbnkpW2tdIHx8IGsgOiBrO1xuICAgIH1cblxuICAgIGdldENoYXJDb2RlKGU6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgcmV0dXJuIGUuY2hhckNvZGUgfHwgZS5rZXlDb2RlIHx8IGUud2hpY2g7XG4gICAgfVxuXG4gICAgZmluZERlbHRhKHZhbHVlOiBzdHJpbmcsIHByZXZWYWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGxldCBkZWx0YSA9ICcnO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBzdHIgPSB2YWx1ZS5zdWJzdHIoMCwgaSkgKyB2YWx1ZS5zdWJzdHIoaSArIHZhbHVlLmxlbmd0aCAtIHByZXZWYWx1ZS5sZW5ndGgpO1xuXG4gICAgICAgICAgICBpZiAoc3RyID09PSBwcmV2VmFsdWUpIGRlbHRhID0gdmFsdWUuc3Vic3RyKGksIHZhbHVlLmxlbmd0aCAtIHByZXZWYWx1ZS5sZW5ndGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlbHRhO1xuICAgIH1cblxuICAgIGlzVmFsaWRDaGFyKGM6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gKDxSZWdFeHA+dGhpcy5yZWdleCkudGVzdChjKTtcbiAgICB9XG5cbiAgICBpc1ZhbGlkU3RyaW5nKHN0cjogc3RyaW5nKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZENoYXIoc3RyLnN1YnN0cihpLCAxKSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdpbnB1dCcsIFsnJGV2ZW50J10pXG4gICAgb25JbnB1dChlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmlzQW5kcm9pZCAmJiAhdGhpcy5wVmFsaWRhdGVPbmx5KSB7XG4gICAgICAgICAgICBsZXQgdmFsID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgICAgICAgbGV0IGxhc3RWYWwgPSB0aGlzLmxhc3RWYWx1ZSB8fCAnJztcblxuICAgICAgICAgICAgbGV0IGluc2VydGVkID0gdGhpcy5maW5kRGVsdGEodmFsLCBsYXN0VmFsKTtcbiAgICAgICAgICAgIGxldCByZW1vdmVkID0gdGhpcy5maW5kRGVsdGEobGFzdFZhbCwgdmFsKTtcbiAgICAgICAgICAgIGxldCBwYXN0ZWQgPSBpbnNlcnRlZC5sZW5ndGggPiAxIHx8ICghaW5zZXJ0ZWQgJiYgIXJlbW92ZWQpO1xuXG4gICAgICAgICAgICBpZiAocGFzdGVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWRTdHJpbmcodmFsKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBsYXN0VmFsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5nTW9kZWxDaGFuZ2UuZW1pdChsYXN0VmFsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFyZW1vdmVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWRDaGFyKGluc2VydGVkKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBsYXN0VmFsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5nTW9kZWxDaGFuZ2UuZW1pdChsYXN0VmFsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhbCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWRTdHJpbmcodmFsKSkge1xuICAgICAgICAgICAgICAgIHRoaXMubGFzdFZhbHVlID0gdmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5cHJlc3MnLCBbJyRldmVudCddKVxuICAgIG9uS2V5UHJlc3MoZTogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc0FuZHJvaWQgfHwgdGhpcy5wVmFsaWRhdGVPbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgYnJvd3NlciA9IGdldEJyb3dzZXIoKTtcbiAgICAgICAgbGV0IGsgPSB0aGlzLmdldEtleShlKTtcblxuICAgICAgICBpZiAoYnJvd3Nlci5tb3ppbGxhICYmIChlLmN0cmxLZXkgfHwgZS5hbHRLZXkpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAoayA9PSAxNyB8fCBrID09IDE4KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBFbnRlciBrZXlcbiAgICAgICAgaWYgKGsgPT0gMTMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjID0gdGhpcy5nZXRDaGFyQ29kZShlKTtcbiAgICAgICAgbGV0IGNjID0gU3RyaW5nLmZyb21DaGFyQ29kZShjKTtcbiAgICAgICAgbGV0IG9rID0gdHJ1ZTtcblxuICAgICAgICBpZiAoIWJyb3dzZXIubW96aWxsYSAmJiAodGhpcy5pc1NwZWNpYWxLZXkoZSkgfHwgIWNjKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCB2YWwgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgKyBjYztcbiAgICAgICAgb2sgPSAoPFJlZ0V4cD50aGlzLnJlZ2V4KS50ZXN0KHZhbCk7XG5cbiAgICAgICAgaWYgKCFvaykge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigncGFzdGUnLCBbJyRldmVudCddKVxuICAgIG9uUGFzdGUoZTogQ2xpcGJvYXJkRXZlbnQpIHtcbiAgICAgICAgY29uc3QgY2xpcGJvYXJkRGF0YSA9IGUuY2xpcGJvYXJkRGF0YSB8fCAoPGFueT50aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3KS5jbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQnKTtcbiAgICAgICAgaWYgKGNsaXBib2FyZERhdGEpIHtcbiAgICAgICAgICAgIGxldCBwYXR0ZXJuID0gL1xce1swLTldK1xcfS87XG4gICAgICAgICAgICBjb25zdCBwYXN0ZWRUZXh0ID0gY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0Jyk7XG4gICAgICAgICAgICBpZiAocGF0dGVybi50ZXN0KHRoaXMucmVnZXgudG9TdHJpbmcoKSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMucmVnZXgudGVzdChwYXN0ZWRUZXh0KSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGNoYXIgb2YgcGFzdGVkVGV4dC50b1N0cmluZygpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5yZWdleC50ZXN0KGNoYXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YWxpZGF0ZShjOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgYW55IHtcbiAgICAgICAgaWYgKHRoaXMucFZhbGlkYXRlT25seSkge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgICAgICAgaWYgKHZhbHVlICYmICF0aGlzLnJlZ2V4LnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVQYXR0ZXJuOiBmYWxzZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0tleUZpbHRlcl0sXG4gICAgZXhwb3J0czogW0tleUZpbHRlcl1cbn0pXG5leHBvcnQgY2xhc3MgS2V5RmlsdGVyTW9kdWxlIHt9XG4iXX0=
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5ZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2tleWZpbHRlci9rZXlmaWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUN4SyxPQUFPLEVBQW1CLGFBQWEsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBR3hELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFhO0lBQ3pDLE9BQU8sRUFBRSxhQUFhO0lBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDO0lBQ3hDLEtBQUssRUFBRSxJQUFJO0NBQ2QsQ0FBQztBQXNCRixNQUFNLGFBQWEsR0FBcUM7SUFDcEQsSUFBSSxFQUFFLFNBQVM7SUFDZixHQUFHLEVBQUUsYUFBYTtJQUNsQixJQUFJLEVBQUUsV0FBVztJQUNqQixLQUFLLEVBQUUsY0FBYztJQUNyQixHQUFHLEVBQUUsZUFBZTtJQUNwQixHQUFHLEVBQUUsY0FBYztJQUNuQixLQUFLLEVBQUUsb0JBQW9CO0lBQzNCLEtBQUssRUFBRSxZQUFZO0lBQ25CLFFBQVEsRUFBRSxlQUFlO0NBQzVCLENBQUM7QUFFRixNQUFNLElBQUksR0FBUztJQUNmLEdBQUcsRUFBRSxDQUFDO0lBQ04sTUFBTSxFQUFFLEVBQUU7SUFDVixHQUFHLEVBQUUsRUFBRTtJQUNQLFNBQVMsRUFBRSxDQUFDO0lBQ1osTUFBTSxFQUFFLEVBQUU7Q0FDYixDQUFDO0FB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UUFBUTs7c0JBQ2YsTUFBTTt1QkFBQyxXQUFXOzhDQXRDaUIsYUFBYTtrQkFBcEQsS0FBSzttQkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtZQU1iLE9BQU87a0JBQS9CLEtBQUs7bUJBQUMsWUFBWTtZQW9CVCxhQUFhO2tCQUF0QixNQUFNO1lBdUVQLE9BQU87a0JBRE4sWUFBWTttQkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7WUE4QmpDLFVBQVU7a0JBRFQsWUFBWTttQkFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUM7WUF1Q3BDLE9BQU87a0JBRE4sWUFBWTttQkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0FBc0NyQyxNQUFNLE9BQU8sZUFBZTt5R0FBZixlQUFlOzREQUFmLGVBQWU7OztpRkFBZixlQUFlO2NBSjNCLFFBQVE7ZUFBQztnQkFDTixPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUM7Z0JBQ3BCLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQzthQUN2Qjs7d0ZBQ1ksZUFBZSxjQTlNZixTQUFTLGFBQVQsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBib29sZWFuQXR0cmlidXRlLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0LCBOZ01vZHVsZSwgT3V0cHV0LCBQTEFURk9STV9JRCwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgTkdfVkFMSURBVE9SUywgVmFsaWRhdG9yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZ2V0QnJvd3NlciwgaXNBbmRyb2lkIH0gZnJvbSAnQHByaW1ldWl4L3V0aWxzJztcbmltcG9ydCB7IEtleUZpbHRlclBhdHRlcm4gfSBmcm9tICcuL2tleWZpbHRlci5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY29uc3QgS0VZRklMVEVSX1ZBTElEQVRPUjogUHJvdmlkZXIgPSB7XG4gICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBLZXlGaWx0ZXIpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuXG50eXBlIFNhZmFyaUtleXMgPSB7XG4gICAgNjMyMzQ6IG51bWJlcjtcbiAgICA2MzIzNTogbnVtYmVyO1xuICAgIDYzMjMyOiBudW1iZXI7XG4gICAgNjMyMzM6IG51bWJlcjtcbiAgICA2MzI3NjogbnVtYmVyO1xuICAgIDYzMjc3OiBudW1iZXI7XG4gICAgNjMyNzI6IG51bWJlcjtcbiAgICA2MzI3MzogbnVtYmVyO1xuICAgIDYzMjc1OiBudW1iZXI7XG59O1xuXG50eXBlIEtleXMgPSB7XG4gICAgVEFCOiBudW1iZXI7XG4gICAgUkVUVVJOOiBudW1iZXI7XG4gICAgRVNDOiBudW1iZXI7XG4gICAgQkFDS1NQQUNFOiBudW1iZXI7XG4gICAgREVMRVRFOiBudW1iZXI7XG59O1xuXG5jb25zdCBERUZBVUxUX01BU0tTOiBSZWNvcmQ8S2V5RmlsdGVyUGF0dGVybiwgUmVnRXhwPiA9IHtcbiAgICBwaW50OiAvXltcXGRdKiQvLFxuICAgIGludDogL15bLV0/W1xcZF0qJC8sXG4gICAgcG51bTogL15bXFxkXFwuXSokLyxcbiAgICBtb25leTogL15bXFxkXFwuXFxzLF0qJC8sXG4gICAgbnVtOiAvXlstXT9bXFxkXFwuXSokLyxcbiAgICBoZXg6IC9eWzAtOWEtZl0qJC9pLFxuICAgIGVtYWlsOiAvXlthLXowLTlfXFwuXFwtQF0qJC9pLFxuICAgIGFscGhhOiAvXlthLXpfXSokL2ksXG4gICAgYWxwaGFudW06IC9eW2EtejAtOV9dKiQvaVxufTtcblxuY29uc3QgS0VZUzogS2V5cyA9IHtcbiAgICBUQUI6IDksXG4gICAgUkVUVVJOOiAxMyxcbiAgICBFU0M6IDI3LFxuICAgIEJBQ0tTUEFDRTogOCxcbiAgICBERUxFVEU6IDQ2XG59O1xuXG5jb25zdCBTQUZBUklfS0VZUzogU2FmYXJpS2V5cyA9IHtcbiAgICA2MzIzNDogMzcsIC8vIGxlZnRcbiAgICA2MzIzNTogMzksIC8vIHJpZ2h0XG4gICAgNjMyMzI6IDM4LCAvLyB1cFxuICAgIDYzMjMzOiA0MCwgLy8gZG93blxuICAgIDYzMjc2OiAzMywgLy8gcGFnZSB1cFxuICAgIDYzMjc3OiAzNCwgLy8gcGFnZSBkb3duXG4gICAgNjMyNzI6IDQ2LCAvLyBkZWxldGVcbiAgICA2MzI3MzogMzYsIC8vIGhvbWVcbiAgICA2MzI3NTogMzUgLy8gZW5kXG59O1xuLyoqXG4gKiBLZXlGaWx0ZXIgRGlyZWN0aXZlIGlzIGEgYnVpbHQtaW4gZmVhdHVyZSBvZiBJbnB1dFRleHQgdG8gcmVzdHJpY3QgdXNlciBpbnB1dCBiYXNlZCBvbiBhIHJlZ3VsYXIgZXhwcmVzc2lvbi5cbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3BLZXlGaWx0ZXJdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW0tFWUZJTFRFUl9WQUxJREFUT1JdXG59KVxuZXhwb3J0IGNsYXNzIEtleUZpbHRlciBpbXBsZW1lbnRzIFZhbGlkYXRvciB7XG4gICAgLyoqXG4gICAgICogV2hlbiBlbmFibGVkLCBpbnN0ZWFkIG9mIGJsb2NraW5nIGtleXMsIGlucHV0IGlzIHZhbGlkYXRlZCBpbnRlcm5hbGx5IHRvIHRlc3QgYWdhaW5zdCB0aGUgcmVndWxhciBleHByZXNzaW9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBwVmFsaWRhdGVPbmx5OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHBhdHRlcm4gZm9yIGtleSBmaWx0ZXJpbmcuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG5cbiAgICBASW5wdXQoJ3BLZXlGaWx0ZXInKSBzZXQgcGF0dGVybihfcGF0dGVybjogUmVnRXhwIHwgS2V5RmlsdGVyUGF0dGVybiB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fcGF0dGVybiA9IF9wYXR0ZXJuO1xuXG4gICAgICAgIGlmIChfcGF0dGVybiBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgICAgICAgdGhpcy5yZWdleCA9IF9wYXR0ZXJuO1xuICAgICAgICB9IGVsc2UgaWYgKF9wYXR0ZXJuIGluIERFRkFVTFRfTUFTS1MpIHtcbiAgICAgICAgICAgIHRoaXMucmVnZXggPSBERUZBVUxUX01BU0tTW19wYXR0ZXJuXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVnZXggPSAvLi87XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IHBhdHRlcm4oKTogUmVnRXhwIHwgS2V5RmlsdGVyUGF0dGVybiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGF0dGVybjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyBhIHZhbHVlIHdoZW5ldmVyIHRoZSBuZ01vZGVsIG9mIHRoZSBjb21wb25lbnQgY2hhbmdlcy5cbiAgICAgKiBAcGFyYW0geyhzdHJpbmcgfCBudW1iZXIpfSBtb2RlbFZhbHVlIC0gQ3VzdG9tIG1vZGVsIGNoYW5nZSBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgbmdNb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZyB8IG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IG51bWJlcj4oKTtcblxuICAgIHJlZ2V4OiBSZWdFeHAgPSAvLi87XG5cbiAgICBfcGF0dGVybjogUmVnRXhwIHwgS2V5RmlsdGVyUGF0dGVybiB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbiAgICBpc0FuZHJvaWQ6IGJvb2xlYW47XG5cbiAgICBsYXN0VmFsdWU6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnksXG4gICAgICAgIHB1YmxpYyBlbDogRWxlbWVudFJlZlxuICAgICkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgdGhpcy5pc0FuZHJvaWQgPSBpc0FuZHJvaWQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXNBbmRyb2lkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc05hdktleVByZXNzKGU6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgbGV0IGsgPSBlLmtleUNvZGU7XG4gICAgICAgIGsgPSBnZXRCcm93c2VyKCkuc2FmYXJpID8gKFNBRkFSSV9LRVlTIGFzIGFueSlba10gfHwgayA6IGs7XG5cbiAgICAgICAgcmV0dXJuIChrID49IDMzICYmIGsgPD0gNDApIHx8IGsgPT0gS0VZUy5SRVRVUk4gfHwgayA9PSBLRVlTLlRBQiB8fCBrID09IEtFWVMuRVNDO1xuICAgIH1cblxuICAgIGlzU3BlY2lhbEtleShlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGxldCBrID0gZS5rZXlDb2RlIHx8IGUuY2hhckNvZGU7XG5cbiAgICAgICAgcmV0dXJuIGsgPT0gOSB8fCBrID09IDEzIHx8IGsgPT0gMjcgfHwgayA9PSAxNiB8fCBrID09IDE3IHx8IChrID49IDE4ICYmIGsgPD0gMjApIHx8IChnZXRCcm93c2VyKCkub3BlcmEgJiYgIWUuc2hpZnRLZXkgJiYgKGsgPT0gOCB8fCAoayA+PSAzMyAmJiBrIDw9IDM1KSB8fCAoayA+PSAzNiAmJiBrIDw9IDM5KSB8fCAoayA+PSA0NCAmJiBrIDw9IDQ1KSkpO1xuICAgIH1cblxuICAgIGdldEtleShlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGxldCBrID0gZS5rZXlDb2RlIHx8IGUuY2hhckNvZGU7XG4gICAgICAgIHJldHVybiBnZXRCcm93c2VyKCkuc2FmYXJpID8gKFNBRkFSSV9LRVlTIGFzIGFueSlba10gfHwgayA6IGs7XG4gICAgfVxuXG4gICAgZ2V0Q2hhckNvZGUoZTogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICByZXR1cm4gZS5jaGFyQ29kZSB8fCBlLmtleUNvZGUgfHwgZS53aGljaDtcbiAgICB9XG5cbiAgICBmaW5kRGVsdGEodmFsdWU6IHN0cmluZywgcHJldlZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgbGV0IGRlbHRhID0gJyc7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IHN0ciA9IHZhbHVlLnN1YnN0cigwLCBpKSArIHZhbHVlLnN1YnN0cihpICsgdmFsdWUubGVuZ3RoIC0gcHJldlZhbHVlLmxlbmd0aCk7XG5cbiAgICAgICAgICAgIGlmIChzdHIgPT09IHByZXZWYWx1ZSkgZGVsdGEgPSB2YWx1ZS5zdWJzdHIoaSwgdmFsdWUubGVuZ3RoIC0gcHJldlZhbHVlLmxlbmd0aCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVsdGE7XG4gICAgfVxuXG4gICAgaXNWYWxpZENoYXIoYzogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiAoPFJlZ0V4cD50aGlzLnJlZ2V4KS50ZXN0KGMpO1xuICAgIH1cblxuICAgIGlzVmFsaWRTdHJpbmcoc3RyOiBzdHJpbmcpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc1ZhbGlkQ2hhcihzdHIuc3Vic3RyKGksIDEpKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2lucHV0JywgWyckZXZlbnQnXSlcbiAgICBvbklucHV0KGU6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNBbmRyb2lkICYmICF0aGlzLnBWYWxpZGF0ZU9ubHkpIHtcbiAgICAgICAgICAgIGxldCB2YWwgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgICAgICAgICBsZXQgbGFzdFZhbCA9IHRoaXMubGFzdFZhbHVlIHx8ICcnO1xuXG4gICAgICAgICAgICBsZXQgaW5zZXJ0ZWQgPSB0aGlzLmZpbmREZWx0YSh2YWwsIGxhc3RWYWwpO1xuICAgICAgICAgICAgbGV0IHJlbW92ZWQgPSB0aGlzLmZpbmREZWx0YShsYXN0VmFsLCB2YWwpO1xuICAgICAgICAgICAgbGV0IHBhc3RlZCA9IGluc2VydGVkLmxlbmd0aCA+IDEgfHwgKCFpbnNlcnRlZCAmJiAhcmVtb3ZlZCk7XG5cbiAgICAgICAgICAgIGlmIChwYXN0ZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZFN0cmluZyh2YWwpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC52YWx1ZSA9IGxhc3RWYWw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmdNb2RlbENoYW5nZS5lbWl0KGxhc3RWYWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXJlbW92ZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZENoYXIoaW5zZXJ0ZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC52YWx1ZSA9IGxhc3RWYWw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmdNb2RlbENoYW5nZS5lbWl0KGxhc3RWYWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFsID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNWYWxpZFN0cmluZyh2YWwpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0VmFsdWUgPSB2YWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlwcmVzcycsIFsnJGV2ZW50J10pXG4gICAgb25LZXlQcmVzcyhlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmlzQW5kcm9pZCB8fCB0aGlzLnBWYWxpZGF0ZU9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBicm93c2VyID0gZ2V0QnJvd3NlcigpO1xuICAgICAgICBsZXQgayA9IHRoaXMuZ2V0S2V5KGUpO1xuXG4gICAgICAgIGlmIChicm93c2VyLm1vemlsbGEgJiYgKGUuY3RybEtleSB8fCBlLmFsdEtleSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChrID09IDE3IHx8IGsgPT0gMTgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEVudGVyIGtleVxuICAgICAgICBpZiAoayA9PSAxMykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGMgPSB0aGlzLmdldENoYXJDb2RlKGUpO1xuICAgICAgICBsZXQgY2MgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpO1xuICAgICAgICBsZXQgb2sgPSB0cnVlO1xuXG4gICAgICAgIGlmICghYnJvd3Nlci5tb3ppbGxhICYmICh0aGlzLmlzU3BlY2lhbEtleShlKSB8fCAhY2MpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZXhpc3RpbmdWYWx1ZSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC52YWx1ZSB8fCAnJztcbiAgICAgICAgbGV0IGNvbWJpbmVkVmFsdWUgPSBleGlzdGluZ1ZhbHVlICsgY2M7XG5cbiAgICAgICAgb2sgPSAoPFJlZ0V4cD50aGlzLnJlZ2V4KS50ZXN0KGNvbWJpbmVkVmFsdWUpO1xuXG4gICAgICAgIGlmICghb2spIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3Bhc3RlJywgWyckZXZlbnQnXSlcbiAgICBvblBhc3RlKGU6IENsaXBib2FyZEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGNsaXBib2FyZERhdGEgPSBlLmNsaXBib2FyZERhdGEgfHwgKDxhbnk+dGhpcy5kb2N1bWVudC5kZWZhdWx0VmlldykuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0Jyk7XG4gICAgICAgIGlmIChjbGlwYm9hcmREYXRhKSB7XG4gICAgICAgICAgICBsZXQgcGF0dGVybiA9IC9cXHtbMC05XStcXH0vO1xuICAgICAgICAgICAgY29uc3QgcGFzdGVkVGV4dCA9IGNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dCcpO1xuICAgICAgICAgICAgaWYgKHBhdHRlcm4udGVzdCh0aGlzLnJlZ2V4LnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnJlZ2V4LnRlc3QocGFzdGVkVGV4dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBjaGFyIG9mIHBhc3RlZFRleHQudG9TdHJpbmcoKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMucmVnZXgudGVzdChjaGFyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFsaWRhdGUoYzogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IGFueSB7XG4gICAgICAgIGlmICh0aGlzLnBWYWxpZGF0ZU9ubHkpIHtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAmJiAhdGhpcy5yZWdleC50ZXN0KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlUGF0dGVybjogZmFsc2VcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtLZXlGaWx0ZXJdLFxuICAgIGV4cG9ydHM6IFtLZXlGaWx0ZXJdXG59KVxuZXhwb3J0IGNsYXNzIEtleUZpbHRlck1vZHVsZSB7fVxuIl19