primeng 15.4.1 → 15.4.3-lts

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 (754) hide show
  1. package/accordion/accordion.d.ts +6 -4
  2. package/animate/animate.d.ts +3 -1
  3. package/api/licensemanager.d.ts +13 -0
  4. package/api/public_api.d.ts +1 -0
  5. package/autocomplete/autocomplete.d.ts +6 -4
  6. package/autofocus/autofocus.d.ts +7 -4
  7. package/avatar/avatar.d.ts +6 -2
  8. package/badge/badge.d.ts +3 -1
  9. package/blockui/blockui.d.ts +4 -3
  10. package/breadcrumb/breadcrumb.d.ts +6 -3
  11. package/button/button.d.ts +3 -1
  12. package/calendar/calendar.d.ts +3 -2
  13. package/card/card.d.ts +6 -4
  14. package/carousel/carousel.d.ts +6 -3
  15. package/cascadeselect/cascadeselect.d.ts +6 -4
  16. package/chart/chart.d.ts +4 -2
  17. package/checkbox/checkbox.d.ts +4 -1
  18. package/chip/chip.d.ts +6 -2
  19. package/chips/chips.d.ts +6 -3
  20. package/colorpicker/colorpicker.d.ts +6 -4
  21. package/confirmdialog/confirmdialog.d.ts +6 -6
  22. package/confirmpopup/confirmpopup.d.ts +7 -5
  23. package/contextmenu/contextmenu.d.ts +3 -2
  24. package/dataview/dataview.d.ts +6 -5
  25. package/defer/defer.d.ts +4 -2
  26. package/dialog/dialog.d.ts +6 -4
  27. package/divider/divider.d.ts +6 -1
  28. package/dock/dock.d.ts +6 -3
  29. package/dragdrop/dragdrop.d.ts +6 -3
  30. package/dropdown/dropdown.d.ts +3 -2
  31. package/dynamicdialog/dynamicdialog.d.ts +5 -3
  32. package/editor/editor.d.ts +4 -2
  33. package/esm2020/accordion/accordion.mjs +24 -19
  34. package/esm2020/animate/animate.mjs +13 -10
  35. package/esm2020/api/confirmationservice.mjs +3 -3
  36. package/esm2020/api/contextmenuservice.mjs +3 -3
  37. package/esm2020/api/filterservice.mjs +3 -3
  38. package/esm2020/api/licensemanager.mjs +112 -0
  39. package/esm2020/api/messageservice.mjs +3 -3
  40. package/esm2020/api/overlayservice.mjs +3 -3
  41. package/esm2020/api/primengconfig.mjs +3 -3
  42. package/esm2020/api/public_api.mjs +2 -1
  43. package/esm2020/api/shared.mjs +13 -13
  44. package/esm2020/api/treedragdropservice.mjs +3 -3
  45. package/esm2020/autocomplete/autocomplete.mjs +29 -46
  46. package/esm2020/autofocus/autofocus.mjs +16 -11
  47. package/esm2020/avatar/avatar.mjs +18 -13
  48. package/esm2020/avatargroup/avatargroup.mjs +7 -7
  49. package/esm2020/badge/badge.mjs +17 -14
  50. package/esm2020/baseicon/baseicon.mjs +3 -3
  51. package/esm2020/blockui/blockui.mjs +14 -12
  52. package/esm2020/breadcrumb/breadcrumb.mjs +26 -21
  53. package/esm2020/button/button.mjs +23 -20
  54. package/esm2020/calendar/calendar.mjs +56 -54
  55. package/esm2020/card/card.mjs +19 -14
  56. package/esm2020/carousel/carousel.mjs +32 -27
  57. package/esm2020/cascadeselect/cascadeselect.mjs +26 -22
  58. package/esm2020/chart/chart.mjs +14 -11
  59. package/esm2020/checkbox/checkbox.mjs +34 -31
  60. package/esm2020/chip/chip.mjs +21 -16
  61. package/esm2020/chips/chips.mjs +22 -17
  62. package/esm2020/colorpicker/colorpicker.mjs +17 -13
  63. package/esm2020/confirmdialog/confirmdialog.mjs +25 -23
  64. package/esm2020/confirmpopup/confirmpopup.mjs +17 -13
  65. package/esm2020/contextmenu/contextmenu.mjs +21 -19
  66. package/esm2020/dataview/dataview.mjs +32 -30
  67. package/esm2020/defer/defer.mjs +14 -11
  68. package/esm2020/dialog/dialog.mjs +37 -33
  69. package/esm2020/divider/divider.mjs +18 -13
  70. package/esm2020/dock/dock.mjs +22 -17
  71. package/esm2020/dom/domhandler.mjs +3 -3
  72. package/esm2020/dragdrop/dragdrop.mjs +21 -16
  73. package/esm2020/dropdown/dropdown.mjs +20 -20
  74. package/esm2020/dynamicdialog/dialogservice.mjs +3 -3
  75. package/esm2020/dynamicdialog/dynamicdialog.mjs +59 -46
  76. package/esm2020/dynamicdialog/dynamicdialogcontent.mjs +3 -3
  77. package/esm2020/editor/editor.mjs +18 -15
  78. package/esm2020/fieldset/fieldset.mjs +23 -18
  79. package/esm2020/fileupload/fileupload.mjs +67 -63
  80. package/esm2020/focustrap/focustrap.mjs +15 -10
  81. package/esm2020/galleria/galleria.mjs +50 -46
  82. package/esm2020/icons/angledoubledown/angledoubledown.mjs +3 -3
  83. package/esm2020/icons/angledoubleleft/angledoubleleft.mjs +3 -3
  84. package/esm2020/icons/angledoubleright/angledoubleright.mjs +3 -3
  85. package/esm2020/icons/angledoubleup/angledoubleup.mjs +3 -3
  86. package/esm2020/icons/angledown/angledown.mjs +3 -3
  87. package/esm2020/icons/angleleft/angleleft.mjs +3 -3
  88. package/esm2020/icons/angleright/angleright.mjs +3 -3
  89. package/esm2020/icons/angleup/angleup.mjs +3 -3
  90. package/esm2020/icons/arrowdown/arrowdown.mjs +3 -3
  91. package/esm2020/icons/arrowdownleft/arrowdownleft.mjs +3 -3
  92. package/esm2020/icons/arrowdownright/arrowdownright.mjs +3 -3
  93. package/esm2020/icons/arrowleft/arrowleft.mjs +3 -3
  94. package/esm2020/icons/arrowright/arrowright.mjs +3 -3
  95. package/esm2020/icons/arrowup/arrowup.mjs +3 -3
  96. package/esm2020/icons/ban/ban.mjs +3 -3
  97. package/esm2020/icons/bars/bars.mjs +3 -3
  98. package/esm2020/icons/calendar/calendar.mjs +3 -3
  99. package/esm2020/icons/caretleft/caretleft.mjs +3 -3
  100. package/esm2020/icons/caretright/caretright.mjs +3 -3
  101. package/esm2020/icons/check/check.mjs +3 -3
  102. package/esm2020/icons/chevrondown/chevrondown.mjs +3 -3
  103. package/esm2020/icons/chevronleft/chevronleft.mjs +3 -3
  104. package/esm2020/icons/chevronright/chevronright.mjs +3 -3
  105. package/esm2020/icons/chevronup/chevronup.mjs +3 -3
  106. package/esm2020/icons/exclamationtriangle/exclamationtriangle.mjs +3 -3
  107. package/esm2020/icons/eye/eye.mjs +3 -3
  108. package/esm2020/icons/eyeslash/eyeslash.mjs +3 -3
  109. package/esm2020/icons/filter/filter.mjs +3 -3
  110. package/esm2020/icons/filterslash/filterslash.mjs +3 -3
  111. package/esm2020/icons/home/home.mjs +3 -3
  112. package/esm2020/icons/infocircle/infocircle.mjs +3 -3
  113. package/esm2020/icons/minus/minus.mjs +3 -3
  114. package/esm2020/icons/pencil/pencil.mjs +3 -3
  115. package/esm2020/icons/plus/plus.mjs +3 -3
  116. package/esm2020/icons/refresh/refresh.mjs +3 -3
  117. package/esm2020/icons/search/search.mjs +3 -3
  118. package/esm2020/icons/searchminus/searchminus.mjs +3 -3
  119. package/esm2020/icons/searchplus/searchplus.mjs +3 -3
  120. package/esm2020/icons/sortalt/sortalt.mjs +3 -3
  121. package/esm2020/icons/sortamountdown/sortamountdown.mjs +3 -3
  122. package/esm2020/icons/sortamountupalt/sortamountupalt.mjs +3 -3
  123. package/esm2020/icons/spinner/spinner.mjs +3 -3
  124. package/esm2020/icons/star/star.mjs +3 -3
  125. package/esm2020/icons/starfill/starfill.mjs +3 -3
  126. package/esm2020/icons/thlarge/thlarge.mjs +3 -3
  127. package/esm2020/icons/times/times.mjs +3 -3
  128. package/esm2020/icons/timescircle/timescircle.mjs +3 -3
  129. package/esm2020/icons/trash/trash.mjs +3 -3
  130. package/esm2020/icons/undo/undo.mjs +3 -3
  131. package/esm2020/icons/upload/upload.mjs +3 -3
  132. package/esm2020/icons/windowmaximize/windowmaximize.mjs +3 -3
  133. package/esm2020/icons/windowminimize/windowminimize.mjs +3 -3
  134. package/esm2020/image/image.mjs +32 -28
  135. package/esm2020/inplace/inplace.mjs +28 -23
  136. package/esm2020/inputmask/inputmask.mjs +26 -25
  137. package/esm2020/inputnumber/inputnumber.mjs +74 -60
  138. package/esm2020/inputswitch/inputswitch.mjs +18 -13
  139. package/esm2020/inputtext/inputtext.mjs +13 -10
  140. package/esm2020/inputtextarea/inputtextarea.mjs +14 -11
  141. package/esm2020/keyfilter/keyfilter.mjs +17 -12
  142. package/esm2020/knob/knob.mjs +18 -13
  143. package/esm2020/listbox/listbox.mjs +30 -26
  144. package/esm2020/megamenu/megamenu.mjs +28 -23
  145. package/esm2020/menu/menu.mjs +21 -17
  146. package/esm2020/menubar/menubar.mjs +38 -33
  147. package/esm2020/message/message.mjs +16 -16
  148. package/esm2020/messages/messages.mjs +32 -36
  149. package/esm2020/multiselect/multiselect.mjs +72 -69
  150. package/esm2020/orderlist/orderlist.mjs +30 -26
  151. package/esm2020/organizationchart/organizationchart.mjs +31 -26
  152. package/esm2020/overlay/overlay.mjs +7 -7
  153. package/esm2020/overlaypanel/overlaypanel.mjs +17 -13
  154. package/esm2020/paginator/paginator.mjs +30 -27
  155. package/esm2020/panel/panel.mjs +30 -25
  156. package/esm2020/panelmenu/panelmenu.mjs +31 -28
  157. package/esm2020/password/password.mjs +44 -36
  158. package/esm2020/picklist/picklist.mjs +68 -160
  159. package/esm2020/progressbar/progressbar.mjs +17 -12
  160. package/esm2020/progressspinner/progressspinner.mjs +18 -13
  161. package/esm2020/radiobutton/radiobutton.mjs +21 -16
  162. package/esm2020/rating/rating.mjs +47 -30
  163. package/esm2020/ripple/ripple.mjs +13 -11
  164. package/esm2020/scroller/scroller.mjs +19 -16
  165. package/esm2020/scrollpanel/scrollpanel.mjs +17 -14
  166. package/esm2020/scrolltop/scrolltop.mjs +28 -24
  167. package/esm2020/selectbutton/selectbutton.mjs +22 -17
  168. package/esm2020/sidebar/sidebar.mjs +15 -13
  169. package/esm2020/skeleton/skeleton.mjs +17 -12
  170. package/esm2020/slidemenu/slidemenu.mjs +31 -27
  171. package/esm2020/slider/slider.mjs +18 -13
  172. package/esm2020/speeddial/speeddial.mjs +26 -23
  173. package/esm2020/spinner/spinner.mjs +7 -7
  174. package/esm2020/splitbutton/splitbutton.mjs +23 -18
  175. package/esm2020/splitter/splitter.mjs +17 -14
  176. package/esm2020/steps/steps.mjs +19 -14
  177. package/esm2020/styleclass/styleclass.mjs +15 -10
  178. package/esm2020/table/table.mjs +138 -151
  179. package/esm2020/tabmenu/tabmenu.mjs +24 -20
  180. package/esm2020/tabview/tabview.mjs +35 -30
  181. package/esm2020/tag/tag.mjs +20 -14
  182. package/esm2020/terminal/terminal.mjs +18 -15
  183. package/esm2020/terminal/terminalservice.mjs +3 -3
  184. package/esm2020/tieredmenu/tieredmenu.mjs +29 -25
  185. package/esm2020/timeline/timeline.mjs +18 -13
  186. package/esm2020/toast/toast.mjs +35 -46
  187. package/esm2020/togglebutton/togglebutton.mjs +19 -14
  188. package/esm2020/toolbar/toolbar.mjs +17 -12
  189. package/esm2020/tooltip/tooltip.mjs +12 -10
  190. package/esm2020/tree/tree.mjs +48 -44
  191. package/esm2020/treeselect/treeselect.mjs +24 -20
  192. package/esm2020/treetable/treetable.mjs +142 -140
  193. package/esm2020/tristatecheckbox/tristatecheckbox.mjs +23 -18
  194. package/esm2020/virtualscroller/virtualscroller.mjs +17 -13
  195. package/fesm2015/primeng-accordion.mjs +22 -18
  196. package/fesm2015/primeng-accordion.mjs.map +1 -1
  197. package/fesm2015/primeng-animate.mjs +12 -10
  198. package/fesm2015/primeng-animate.mjs.map +1 -1
  199. package/fesm2015/primeng-api.mjs +156 -38
  200. package/fesm2015/primeng-api.mjs.map +1 -1
  201. package/fesm2015/primeng-autocomplete.mjs +28 -46
  202. package/fesm2015/primeng-autocomplete.mjs.map +1 -1
  203. package/fesm2015/primeng-autofocus.mjs +15 -11
  204. package/fesm2015/primeng-autofocus.mjs.map +1 -1
  205. package/fesm2015/primeng-avatar.mjs +17 -13
  206. package/fesm2015/primeng-avatar.mjs.map +1 -1
  207. package/fesm2015/primeng-avatargroup.mjs +7 -8
  208. package/fesm2015/primeng-badge.mjs +16 -14
  209. package/fesm2015/primeng-badge.mjs.map +1 -1
  210. package/fesm2015/primeng-baseicon.mjs +3 -4
  211. package/fesm2015/primeng-blockui.mjs +14 -13
  212. package/fesm2015/primeng-blockui.mjs.map +1 -1
  213. package/fesm2015/primeng-breadcrumb.mjs +25 -21
  214. package/fesm2015/primeng-breadcrumb.mjs.map +1 -1
  215. package/fesm2015/primeng-button.mjs +21 -19
  216. package/fesm2015/primeng-button.mjs.map +1 -1
  217. package/fesm2015/primeng-calendar.mjs +56 -55
  218. package/fesm2015/primeng-calendar.mjs.map +1 -1
  219. package/fesm2015/primeng-card.mjs +17 -13
  220. package/fesm2015/primeng-card.mjs.map +1 -1
  221. package/fesm2015/primeng-carousel.mjs +30 -26
  222. package/fesm2015/primeng-carousel.mjs.map +1 -1
  223. package/fesm2015/primeng-cascadeselect.mjs +25 -22
  224. package/fesm2015/primeng-cascadeselect.mjs.map +1 -1
  225. package/fesm2015/primeng-chart.mjs +13 -11
  226. package/fesm2015/primeng-chart.mjs.map +1 -1
  227. package/fesm2015/primeng-checkbox.mjs +33 -31
  228. package/fesm2015/primeng-checkbox.mjs.map +1 -1
  229. package/fesm2015/primeng-chip.mjs +20 -16
  230. package/fesm2015/primeng-chip.mjs.map +1 -1
  231. package/fesm2015/primeng-chips.mjs +20 -16
  232. package/fesm2015/primeng-chips.mjs.map +1 -1
  233. package/fesm2015/primeng-colorpicker.mjs +16 -13
  234. package/fesm2015/primeng-colorpicker.mjs.map +1 -1
  235. package/fesm2015/primeng-confirmdialog.mjs +23 -22
  236. package/fesm2015/primeng-confirmdialog.mjs.map +1 -1
  237. package/fesm2015/primeng-confirmpopup.mjs +17 -14
  238. package/fesm2015/primeng-confirmpopup.mjs.map +1 -1
  239. package/fesm2015/primeng-contextmenu.mjs +19 -18
  240. package/fesm2015/primeng-contextmenu.mjs.map +1 -1
  241. package/fesm2015/primeng-dataview.mjs +32 -31
  242. package/fesm2015/primeng-dataview.mjs.map +1 -1
  243. package/fesm2015/primeng-defer.mjs +13 -11
  244. package/fesm2015/primeng-defer.mjs.map +1 -1
  245. package/fesm2015/primeng-dialog.mjs +37 -34
  246. package/fesm2015/primeng-dialog.mjs.map +1 -1
  247. package/fesm2015/primeng-divider.mjs +17 -13
  248. package/fesm2015/primeng-divider.mjs.map +1 -1
  249. package/fesm2015/primeng-dock.mjs +21 -17
  250. package/fesm2015/primeng-dock.mjs.map +1 -1
  251. package/fesm2015/primeng-dom.mjs +2 -3
  252. package/fesm2015/primeng-dom.mjs.map +1 -1
  253. package/fesm2015/primeng-dragdrop.mjs +20 -16
  254. package/fesm2015/primeng-dragdrop.mjs.map +1 -1
  255. package/fesm2015/primeng-dropdown.mjs +19 -20
  256. package/fesm2015/primeng-dropdown.mjs.map +1 -1
  257. package/fesm2015/primeng-dynamicdialog.mjs +63 -51
  258. package/fesm2015/primeng-dynamicdialog.mjs.map +1 -1
  259. package/fesm2015/primeng-editor.mjs +16 -14
  260. package/fesm2015/primeng-editor.mjs.map +1 -1
  261. package/fesm2015/primeng-fieldset.mjs +21 -17
  262. package/fesm2015/primeng-fieldset.mjs.map +1 -1
  263. package/fesm2015/primeng-fileupload.mjs +66 -63
  264. package/fesm2015/primeng-fileupload.mjs.map +1 -1
  265. package/fesm2015/primeng-focustrap.mjs +14 -10
  266. package/fesm2015/primeng-focustrap.mjs.map +1 -1
  267. package/fesm2015/primeng-galleria.mjs +50 -47
  268. package/fesm2015/primeng-galleria.mjs.map +1 -1
  269. package/fesm2015/primeng-icons-angledoubledown.mjs +3 -4
  270. package/fesm2015/primeng-icons-angledoubleleft.mjs +3 -4
  271. package/fesm2015/primeng-icons-angledoubleright.mjs +3 -4
  272. package/fesm2015/primeng-icons-angledoubleup.mjs +3 -4
  273. package/fesm2015/primeng-icons-angledown.mjs +3 -4
  274. package/fesm2015/primeng-icons-angleleft.mjs +3 -4
  275. package/fesm2015/primeng-icons-angleright.mjs +3 -4
  276. package/fesm2015/primeng-icons-angleup.mjs +3 -4
  277. package/fesm2015/primeng-icons-arrowdown.mjs +3 -4
  278. package/fesm2015/primeng-icons-arrowdownleft.mjs +3 -4
  279. package/fesm2015/primeng-icons-arrowdownright.mjs +3 -4
  280. package/fesm2015/primeng-icons-arrowleft.mjs +3 -4
  281. package/fesm2015/primeng-icons-arrowright.mjs +3 -4
  282. package/fesm2015/primeng-icons-arrowup.mjs +3 -4
  283. package/fesm2015/primeng-icons-ban.mjs +3 -4
  284. package/fesm2015/primeng-icons-bars.mjs +3 -4
  285. package/fesm2015/primeng-icons-calendar.mjs +3 -4
  286. package/fesm2015/primeng-icons-caretleft.mjs +3 -4
  287. package/fesm2015/primeng-icons-caretright.mjs +3 -4
  288. package/fesm2015/primeng-icons-check.mjs +3 -4
  289. package/fesm2015/primeng-icons-chevrondown.mjs +3 -4
  290. package/fesm2015/primeng-icons-chevronleft.mjs +3 -4
  291. package/fesm2015/primeng-icons-chevronright.mjs +3 -4
  292. package/fesm2015/primeng-icons-chevronup.mjs +3 -4
  293. package/fesm2015/primeng-icons-exclamationtriangle.mjs +3 -4
  294. package/fesm2015/primeng-icons-eye.mjs +3 -4
  295. package/fesm2015/primeng-icons-eyeslash.mjs +3 -4
  296. package/fesm2015/primeng-icons-filter.mjs +3 -4
  297. package/fesm2015/primeng-icons-filterslash.mjs +3 -4
  298. package/fesm2015/primeng-icons-home.mjs +3 -4
  299. package/fesm2015/primeng-icons-infocircle.mjs +3 -4
  300. package/fesm2015/primeng-icons-minus.mjs +3 -4
  301. package/fesm2015/primeng-icons-pencil.mjs +3 -4
  302. package/fesm2015/primeng-icons-plus.mjs +3 -4
  303. package/fesm2015/primeng-icons-refresh.mjs +3 -4
  304. package/fesm2015/primeng-icons-search.mjs +3 -4
  305. package/fesm2015/primeng-icons-searchminus.mjs +3 -4
  306. package/fesm2015/primeng-icons-searchplus.mjs +3 -4
  307. package/fesm2015/primeng-icons-sortalt.mjs +3 -4
  308. package/fesm2015/primeng-icons-sortamountdown.mjs +3 -4
  309. package/fesm2015/primeng-icons-sortamountupalt.mjs +3 -4
  310. package/fesm2015/primeng-icons-spinner.mjs +3 -4
  311. package/fesm2015/primeng-icons-star.mjs +3 -4
  312. package/fesm2015/primeng-icons-starfill.mjs +3 -4
  313. package/fesm2015/primeng-icons-thlarge.mjs +3 -4
  314. package/fesm2015/primeng-icons-times.mjs +3 -4
  315. package/fesm2015/primeng-icons-timescircle.mjs +3 -4
  316. package/fesm2015/primeng-icons-trash.mjs +3 -4
  317. package/fesm2015/primeng-icons-undo.mjs +3 -4
  318. package/fesm2015/primeng-icons-upload.mjs +3 -4
  319. package/fesm2015/primeng-icons-windowmaximize.mjs +3 -4
  320. package/fesm2015/primeng-icons-windowminimize.mjs +3 -4
  321. package/fesm2015/primeng-image.mjs +31 -28
  322. package/fesm2015/primeng-image.mjs.map +1 -1
  323. package/fesm2015/primeng-inplace.mjs +27 -23
  324. package/fesm2015/primeng-inplace.mjs.map +1 -1
  325. package/fesm2015/primeng-inputmask.mjs +24 -24
  326. package/fesm2015/primeng-inputmask.mjs.map +1 -1
  327. package/fesm2015/primeng-inputnumber.mjs +73 -59
  328. package/fesm2015/primeng-inputnumber.mjs.map +1 -1
  329. package/fesm2015/primeng-inputswitch.mjs +17 -13
  330. package/fesm2015/primeng-inputswitch.mjs.map +1 -1
  331. package/fesm2015/primeng-inputtext.mjs +12 -10
  332. package/fesm2015/primeng-inputtext.mjs.map +1 -1
  333. package/fesm2015/primeng-inputtextarea.mjs +13 -11
  334. package/fesm2015/primeng-inputtextarea.mjs.map +1 -1
  335. package/fesm2015/primeng-keyfilter.mjs +16 -12
  336. package/fesm2015/primeng-keyfilter.mjs.map +1 -1
  337. package/fesm2015/primeng-knob.mjs +17 -13
  338. package/fesm2015/primeng-knob.mjs.map +1 -1
  339. package/fesm2015/primeng-listbox.mjs +29 -26
  340. package/fesm2015/primeng-listbox.mjs.map +1 -1
  341. package/fesm2015/primeng-megamenu.mjs +27 -23
  342. package/fesm2015/primeng-megamenu.mjs.map +1 -1
  343. package/fesm2015/primeng-menu.mjs +20 -17
  344. package/fesm2015/primeng-menu.mjs.map +1 -1
  345. package/fesm2015/primeng-menubar.mjs +39 -35
  346. package/fesm2015/primeng-menubar.mjs.map +1 -1
  347. package/fesm2015/primeng-message.mjs +15 -16
  348. package/fesm2015/primeng-message.mjs.map +1 -1
  349. package/fesm2015/primeng-messages.mjs +33 -38
  350. package/fesm2015/primeng-messages.mjs.map +1 -1
  351. package/fesm2015/primeng-multiselect.mjs +71 -69
  352. package/fesm2015/primeng-multiselect.mjs.map +1 -1
  353. package/fesm2015/primeng-orderlist.mjs +33 -30
  354. package/fesm2015/primeng-orderlist.mjs.map +1 -1
  355. package/fesm2015/primeng-organizationchart.mjs +29 -24
  356. package/fesm2015/primeng-organizationchart.mjs.map +1 -1
  357. package/fesm2015/primeng-overlay.mjs +7 -8
  358. package/fesm2015/primeng-overlaypanel.mjs +16 -13
  359. package/fesm2015/primeng-overlaypanel.mjs.map +1 -1
  360. package/fesm2015/primeng-paginator.mjs +31 -28
  361. package/fesm2015/primeng-paginator.mjs.map +1 -1
  362. package/fesm2015/primeng-panel.mjs +28 -24
  363. package/fesm2015/primeng-panel.mjs.map +1 -1
  364. package/fesm2015/primeng-panelmenu.mjs +31 -29
  365. package/fesm2015/primeng-panelmenu.mjs.map +1 -1
  366. package/fesm2015/primeng-password.mjs +42 -35
  367. package/fesm2015/primeng-password.mjs.map +1 -1
  368. package/fesm2015/primeng-picklist.mjs +71 -164
  369. package/fesm2015/primeng-picklist.mjs.map +1 -1
  370. package/fesm2015/primeng-progressbar.mjs +16 -12
  371. package/fesm2015/primeng-progressbar.mjs.map +1 -1
  372. package/fesm2015/primeng-progressspinner.mjs +17 -13
  373. package/fesm2015/primeng-progressspinner.mjs.map +1 -1
  374. package/fesm2015/primeng-radiobutton.mjs +20 -16
  375. package/fesm2015/primeng-radiobutton.mjs.map +1 -1
  376. package/fesm2015/primeng-rating.mjs +46 -30
  377. package/fesm2015/primeng-rating.mjs.map +1 -1
  378. package/fesm2015/primeng-ripple.mjs +12 -11
  379. package/fesm2015/primeng-ripple.mjs.map +1 -1
  380. package/fesm2015/primeng-scroller.mjs +18 -16
  381. package/fesm2015/primeng-scroller.mjs.map +1 -1
  382. package/fesm2015/primeng-scrollpanel.mjs +16 -14
  383. package/fesm2015/primeng-scrollpanel.mjs.map +1 -1
  384. package/fesm2015/primeng-scrolltop.mjs +28 -25
  385. package/fesm2015/primeng-scrolltop.mjs.map +1 -1
  386. package/fesm2015/primeng-selectbutton.mjs +21 -17
  387. package/fesm2015/primeng-selectbutton.mjs.map +1 -1
  388. package/fesm2015/primeng-sidebar.mjs +14 -13
  389. package/fesm2015/primeng-sidebar.mjs.map +1 -1
  390. package/fesm2015/primeng-skeleton.mjs +16 -12
  391. package/fesm2015/primeng-skeleton.mjs.map +1 -1
  392. package/fesm2015/primeng-slidemenu.mjs +31 -28
  393. package/fesm2015/primeng-slidemenu.mjs.map +1 -1
  394. package/fesm2015/primeng-slider.mjs +16 -12
  395. package/fesm2015/primeng-slider.mjs.map +1 -1
  396. package/fesm2015/primeng-speeddial.mjs +24 -22
  397. package/fesm2015/primeng-speeddial.mjs.map +1 -1
  398. package/fesm2015/primeng-spinner.mjs +7 -8
  399. package/fesm2015/primeng-splitbutton.mjs +22 -18
  400. package/fesm2015/primeng-splitbutton.mjs.map +1 -1
  401. package/fesm2015/primeng-splitter.mjs +16 -14
  402. package/fesm2015/primeng-splitter.mjs.map +1 -1
  403. package/fesm2015/primeng-steps.mjs +18 -14
  404. package/fesm2015/primeng-steps.mjs.map +1 -1
  405. package/fesm2015/primeng-styleclass.mjs +14 -10
  406. package/fesm2015/primeng-styleclass.mjs.map +1 -1
  407. package/fesm2015/primeng-table.mjs +138 -151
  408. package/fesm2015/primeng-table.mjs.map +1 -1
  409. package/fesm2015/primeng-tabmenu.mjs +23 -20
  410. package/fesm2015/primeng-tabmenu.mjs.map +1 -1
  411. package/fesm2015/primeng-tabview.mjs +34 -30
  412. package/fesm2015/primeng-tabview.mjs.map +1 -1
  413. package/fesm2015/primeng-tag.mjs +18 -12
  414. package/fesm2015/primeng-tag.mjs.map +1 -1
  415. package/fesm2015/primeng-terminal.mjs +19 -17
  416. package/fesm2015/primeng-terminal.mjs.map +1 -1
  417. package/fesm2015/primeng-tieredmenu.mjs +30 -27
  418. package/fesm2015/primeng-tieredmenu.mjs.map +1 -1
  419. package/fesm2015/primeng-timeline.mjs +17 -13
  420. package/fesm2015/primeng-timeline.mjs.map +1 -1
  421. package/fesm2015/primeng-toast.mjs +36 -47
  422. package/fesm2015/primeng-toast.mjs.map +1 -1
  423. package/fesm2015/primeng-togglebutton.mjs +18 -14
  424. package/fesm2015/primeng-togglebutton.mjs.map +1 -1
  425. package/fesm2015/primeng-toolbar.mjs +16 -12
  426. package/fesm2015/primeng-toolbar.mjs.map +1 -1
  427. package/fesm2015/primeng-tooltip.mjs +11 -10
  428. package/fesm2015/primeng-tooltip.mjs.map +1 -1
  429. package/fesm2015/primeng-tree.mjs +49 -46
  430. package/fesm2015/primeng-tree.mjs.map +1 -1
  431. package/fesm2015/primeng-treeselect.mjs +23 -20
  432. package/fesm2015/primeng-treeselect.mjs.map +1 -1
  433. package/fesm2015/primeng-treetable.mjs +144 -143
  434. package/fesm2015/primeng-treetable.mjs.map +1 -1
  435. package/fesm2015/primeng-tristatecheckbox.mjs +22 -18
  436. package/fesm2015/primeng-tristatecheckbox.mjs.map +1 -1
  437. package/fesm2015/primeng-utils.mjs +0 -1
  438. package/fesm2015/primeng-virtualscroller.mjs +16 -13
  439. package/fesm2015/primeng-virtualscroller.mjs.map +1 -1
  440. package/fesm2015/primeng.mjs +0 -1
  441. package/fesm2020/primeng-accordion.mjs +22 -18
  442. package/fesm2020/primeng-accordion.mjs.map +1 -1
  443. package/fesm2020/primeng-animate.mjs +12 -10
  444. package/fesm2020/primeng-animate.mjs.map +1 -1
  445. package/fesm2020/primeng-api.mjs +146 -38
  446. package/fesm2020/primeng-api.mjs.map +1 -1
  447. package/fesm2020/primeng-autocomplete.mjs +28 -46
  448. package/fesm2020/primeng-autocomplete.mjs.map +1 -1
  449. package/fesm2020/primeng-autofocus.mjs +15 -11
  450. package/fesm2020/primeng-autofocus.mjs.map +1 -1
  451. package/fesm2020/primeng-avatar.mjs +17 -13
  452. package/fesm2020/primeng-avatar.mjs.map +1 -1
  453. package/fesm2020/primeng-avatargroup.mjs +7 -8
  454. package/fesm2020/primeng-badge.mjs +16 -14
  455. package/fesm2020/primeng-badge.mjs.map +1 -1
  456. package/fesm2020/primeng-baseicon.mjs +3 -4
  457. package/fesm2020/primeng-blockui.mjs +14 -13
  458. package/fesm2020/primeng-blockui.mjs.map +1 -1
  459. package/fesm2020/primeng-breadcrumb.mjs +25 -21
  460. package/fesm2020/primeng-breadcrumb.mjs.map +1 -1
  461. package/fesm2020/primeng-button.mjs +21 -19
  462. package/fesm2020/primeng-button.mjs.map +1 -1
  463. package/fesm2020/primeng-calendar.mjs +56 -55
  464. package/fesm2020/primeng-calendar.mjs.map +1 -1
  465. package/fesm2020/primeng-card.mjs +17 -13
  466. package/fesm2020/primeng-card.mjs.map +1 -1
  467. package/fesm2020/primeng-carousel.mjs +30 -26
  468. package/fesm2020/primeng-carousel.mjs.map +1 -1
  469. package/fesm2020/primeng-cascadeselect.mjs +25 -22
  470. package/fesm2020/primeng-cascadeselect.mjs.map +1 -1
  471. package/fesm2020/primeng-chart.mjs +13 -11
  472. package/fesm2020/primeng-chart.mjs.map +1 -1
  473. package/fesm2020/primeng-checkbox.mjs +33 -31
  474. package/fesm2020/primeng-checkbox.mjs.map +1 -1
  475. package/fesm2020/primeng-chip.mjs +20 -16
  476. package/fesm2020/primeng-chip.mjs.map +1 -1
  477. package/fesm2020/primeng-chips.mjs +20 -16
  478. package/fesm2020/primeng-chips.mjs.map +1 -1
  479. package/fesm2020/primeng-colorpicker.mjs +16 -13
  480. package/fesm2020/primeng-colorpicker.mjs.map +1 -1
  481. package/fesm2020/primeng-confirmdialog.mjs +23 -22
  482. package/fesm2020/primeng-confirmdialog.mjs.map +1 -1
  483. package/fesm2020/primeng-confirmpopup.mjs +17 -14
  484. package/fesm2020/primeng-confirmpopup.mjs.map +1 -1
  485. package/fesm2020/primeng-contextmenu.mjs +19 -18
  486. package/fesm2020/primeng-contextmenu.mjs.map +1 -1
  487. package/fesm2020/primeng-dataview.mjs +32 -31
  488. package/fesm2020/primeng-dataview.mjs.map +1 -1
  489. package/fesm2020/primeng-defer.mjs +13 -11
  490. package/fesm2020/primeng-defer.mjs.map +1 -1
  491. package/fesm2020/primeng-dialog.mjs +37 -34
  492. package/fesm2020/primeng-dialog.mjs.map +1 -1
  493. package/fesm2020/primeng-divider.mjs +17 -13
  494. package/fesm2020/primeng-divider.mjs.map +1 -1
  495. package/fesm2020/primeng-dock.mjs +21 -17
  496. package/fesm2020/primeng-dock.mjs.map +1 -1
  497. package/fesm2020/primeng-dom.mjs +2 -3
  498. package/fesm2020/primeng-dom.mjs.map +1 -1
  499. package/fesm2020/primeng-dragdrop.mjs +20 -16
  500. package/fesm2020/primeng-dragdrop.mjs.map +1 -1
  501. package/fesm2020/primeng-dropdown.mjs +19 -20
  502. package/fesm2020/primeng-dropdown.mjs.map +1 -1
  503. package/fesm2020/primeng-dynamicdialog.mjs +63 -51
  504. package/fesm2020/primeng-dynamicdialog.mjs.map +1 -1
  505. package/fesm2020/primeng-editor.mjs +16 -14
  506. package/fesm2020/primeng-editor.mjs.map +1 -1
  507. package/fesm2020/primeng-fieldset.mjs +21 -17
  508. package/fesm2020/primeng-fieldset.mjs.map +1 -1
  509. package/fesm2020/primeng-fileupload.mjs +66 -63
  510. package/fesm2020/primeng-fileupload.mjs.map +1 -1
  511. package/fesm2020/primeng-focustrap.mjs +14 -10
  512. package/fesm2020/primeng-focustrap.mjs.map +1 -1
  513. package/fesm2020/primeng-galleria.mjs +50 -47
  514. package/fesm2020/primeng-galleria.mjs.map +1 -1
  515. package/fesm2020/primeng-icons-angledoubledown.mjs +3 -4
  516. package/fesm2020/primeng-icons-angledoubleleft.mjs +3 -4
  517. package/fesm2020/primeng-icons-angledoubleright.mjs +3 -4
  518. package/fesm2020/primeng-icons-angledoubleup.mjs +3 -4
  519. package/fesm2020/primeng-icons-angledown.mjs +3 -4
  520. package/fesm2020/primeng-icons-angleleft.mjs +3 -4
  521. package/fesm2020/primeng-icons-angleright.mjs +3 -4
  522. package/fesm2020/primeng-icons-angleup.mjs +3 -4
  523. package/fesm2020/primeng-icons-arrowdown.mjs +3 -4
  524. package/fesm2020/primeng-icons-arrowdownleft.mjs +3 -4
  525. package/fesm2020/primeng-icons-arrowdownright.mjs +3 -4
  526. package/fesm2020/primeng-icons-arrowleft.mjs +3 -4
  527. package/fesm2020/primeng-icons-arrowright.mjs +3 -4
  528. package/fesm2020/primeng-icons-arrowup.mjs +3 -4
  529. package/fesm2020/primeng-icons-ban.mjs +3 -4
  530. package/fesm2020/primeng-icons-bars.mjs +3 -4
  531. package/fesm2020/primeng-icons-calendar.mjs +3 -4
  532. package/fesm2020/primeng-icons-caretleft.mjs +3 -4
  533. package/fesm2020/primeng-icons-caretright.mjs +3 -4
  534. package/fesm2020/primeng-icons-check.mjs +3 -4
  535. package/fesm2020/primeng-icons-chevrondown.mjs +3 -4
  536. package/fesm2020/primeng-icons-chevronleft.mjs +3 -4
  537. package/fesm2020/primeng-icons-chevronright.mjs +3 -4
  538. package/fesm2020/primeng-icons-chevronup.mjs +3 -4
  539. package/fesm2020/primeng-icons-exclamationtriangle.mjs +3 -4
  540. package/fesm2020/primeng-icons-eye.mjs +3 -4
  541. package/fesm2020/primeng-icons-eyeslash.mjs +3 -4
  542. package/fesm2020/primeng-icons-filter.mjs +3 -4
  543. package/fesm2020/primeng-icons-filterslash.mjs +3 -4
  544. package/fesm2020/primeng-icons-home.mjs +3 -4
  545. package/fesm2020/primeng-icons-infocircle.mjs +3 -4
  546. package/fesm2020/primeng-icons-minus.mjs +3 -4
  547. package/fesm2020/primeng-icons-pencil.mjs +3 -4
  548. package/fesm2020/primeng-icons-plus.mjs +3 -4
  549. package/fesm2020/primeng-icons-refresh.mjs +3 -4
  550. package/fesm2020/primeng-icons-search.mjs +3 -4
  551. package/fesm2020/primeng-icons-searchminus.mjs +3 -4
  552. package/fesm2020/primeng-icons-searchplus.mjs +3 -4
  553. package/fesm2020/primeng-icons-sortalt.mjs +3 -4
  554. package/fesm2020/primeng-icons-sortamountdown.mjs +3 -4
  555. package/fesm2020/primeng-icons-sortamountupalt.mjs +3 -4
  556. package/fesm2020/primeng-icons-spinner.mjs +3 -4
  557. package/fesm2020/primeng-icons-star.mjs +3 -4
  558. package/fesm2020/primeng-icons-starfill.mjs +3 -4
  559. package/fesm2020/primeng-icons-thlarge.mjs +3 -4
  560. package/fesm2020/primeng-icons-times.mjs +3 -4
  561. package/fesm2020/primeng-icons-timescircle.mjs +3 -4
  562. package/fesm2020/primeng-icons-trash.mjs +3 -4
  563. package/fesm2020/primeng-icons-undo.mjs +3 -4
  564. package/fesm2020/primeng-icons-upload.mjs +3 -4
  565. package/fesm2020/primeng-icons-windowmaximize.mjs +3 -4
  566. package/fesm2020/primeng-icons-windowminimize.mjs +3 -4
  567. package/fesm2020/primeng-image.mjs +31 -28
  568. package/fesm2020/primeng-image.mjs.map +1 -1
  569. package/fesm2020/primeng-inplace.mjs +27 -23
  570. package/fesm2020/primeng-inplace.mjs.map +1 -1
  571. package/fesm2020/primeng-inputmask.mjs +24 -24
  572. package/fesm2020/primeng-inputmask.mjs.map +1 -1
  573. package/fesm2020/primeng-inputnumber.mjs +72 -59
  574. package/fesm2020/primeng-inputnumber.mjs.map +1 -1
  575. package/fesm2020/primeng-inputswitch.mjs +17 -13
  576. package/fesm2020/primeng-inputswitch.mjs.map +1 -1
  577. package/fesm2020/primeng-inputtext.mjs +12 -10
  578. package/fesm2020/primeng-inputtext.mjs.map +1 -1
  579. package/fesm2020/primeng-inputtextarea.mjs +13 -11
  580. package/fesm2020/primeng-inputtextarea.mjs.map +1 -1
  581. package/fesm2020/primeng-keyfilter.mjs +16 -12
  582. package/fesm2020/primeng-keyfilter.mjs.map +1 -1
  583. package/fesm2020/primeng-knob.mjs +17 -13
  584. package/fesm2020/primeng-knob.mjs.map +1 -1
  585. package/fesm2020/primeng-listbox.mjs +29 -26
  586. package/fesm2020/primeng-listbox.mjs.map +1 -1
  587. package/fesm2020/primeng-megamenu.mjs +27 -23
  588. package/fesm2020/primeng-megamenu.mjs.map +1 -1
  589. package/fesm2020/primeng-menu.mjs +20 -17
  590. package/fesm2020/primeng-menu.mjs.map +1 -1
  591. package/fesm2020/primeng-menubar.mjs +39 -35
  592. package/fesm2020/primeng-menubar.mjs.map +1 -1
  593. package/fesm2020/primeng-message.mjs +15 -16
  594. package/fesm2020/primeng-message.mjs.map +1 -1
  595. package/fesm2020/primeng-messages.mjs +33 -38
  596. package/fesm2020/primeng-messages.mjs.map +1 -1
  597. package/fesm2020/primeng-multiselect.mjs +71 -69
  598. package/fesm2020/primeng-multiselect.mjs.map +1 -1
  599. package/fesm2020/primeng-orderlist.mjs +33 -30
  600. package/fesm2020/primeng-orderlist.mjs.map +1 -1
  601. package/fesm2020/primeng-organizationchart.mjs +29 -24
  602. package/fesm2020/primeng-organizationchart.mjs.map +1 -1
  603. package/fesm2020/primeng-overlay.mjs +7 -8
  604. package/fesm2020/primeng-overlaypanel.mjs +16 -13
  605. package/fesm2020/primeng-overlaypanel.mjs.map +1 -1
  606. package/fesm2020/primeng-paginator.mjs +31 -28
  607. package/fesm2020/primeng-paginator.mjs.map +1 -1
  608. package/fesm2020/primeng-panel.mjs +28 -24
  609. package/fesm2020/primeng-panel.mjs.map +1 -1
  610. package/fesm2020/primeng-panelmenu.mjs +31 -29
  611. package/fesm2020/primeng-panelmenu.mjs.map +1 -1
  612. package/fesm2020/primeng-password.mjs +42 -35
  613. package/fesm2020/primeng-password.mjs.map +1 -1
  614. package/fesm2020/primeng-picklist.mjs +71 -164
  615. package/fesm2020/primeng-picklist.mjs.map +1 -1
  616. package/fesm2020/primeng-progressbar.mjs +16 -12
  617. package/fesm2020/primeng-progressbar.mjs.map +1 -1
  618. package/fesm2020/primeng-progressspinner.mjs +17 -13
  619. package/fesm2020/primeng-progressspinner.mjs.map +1 -1
  620. package/fesm2020/primeng-radiobutton.mjs +20 -16
  621. package/fesm2020/primeng-radiobutton.mjs.map +1 -1
  622. package/fesm2020/primeng-rating.mjs +46 -30
  623. package/fesm2020/primeng-rating.mjs.map +1 -1
  624. package/fesm2020/primeng-ripple.mjs +12 -11
  625. package/fesm2020/primeng-ripple.mjs.map +1 -1
  626. package/fesm2020/primeng-scroller.mjs +18 -16
  627. package/fesm2020/primeng-scroller.mjs.map +1 -1
  628. package/fesm2020/primeng-scrollpanel.mjs +16 -14
  629. package/fesm2020/primeng-scrollpanel.mjs.map +1 -1
  630. package/fesm2020/primeng-scrolltop.mjs +28 -25
  631. package/fesm2020/primeng-scrolltop.mjs.map +1 -1
  632. package/fesm2020/primeng-selectbutton.mjs +21 -17
  633. package/fesm2020/primeng-selectbutton.mjs.map +1 -1
  634. package/fesm2020/primeng-sidebar.mjs +14 -13
  635. package/fesm2020/primeng-sidebar.mjs.map +1 -1
  636. package/fesm2020/primeng-skeleton.mjs +16 -12
  637. package/fesm2020/primeng-skeleton.mjs.map +1 -1
  638. package/fesm2020/primeng-slidemenu.mjs +31 -28
  639. package/fesm2020/primeng-slidemenu.mjs.map +1 -1
  640. package/fesm2020/primeng-slider.mjs +16 -12
  641. package/fesm2020/primeng-slider.mjs.map +1 -1
  642. package/fesm2020/primeng-speeddial.mjs +24 -22
  643. package/fesm2020/primeng-speeddial.mjs.map +1 -1
  644. package/fesm2020/primeng-spinner.mjs +7 -8
  645. package/fesm2020/primeng-splitbutton.mjs +22 -18
  646. package/fesm2020/primeng-splitbutton.mjs.map +1 -1
  647. package/fesm2020/primeng-splitter.mjs +16 -14
  648. package/fesm2020/primeng-splitter.mjs.map +1 -1
  649. package/fesm2020/primeng-steps.mjs +18 -14
  650. package/fesm2020/primeng-steps.mjs.map +1 -1
  651. package/fesm2020/primeng-styleclass.mjs +14 -10
  652. package/fesm2020/primeng-styleclass.mjs.map +1 -1
  653. package/fesm2020/primeng-table.mjs +137 -151
  654. package/fesm2020/primeng-table.mjs.map +1 -1
  655. package/fesm2020/primeng-tabmenu.mjs +23 -20
  656. package/fesm2020/primeng-tabmenu.mjs.map +1 -1
  657. package/fesm2020/primeng-tabview.mjs +34 -30
  658. package/fesm2020/primeng-tabview.mjs.map +1 -1
  659. package/fesm2020/primeng-tag.mjs +18 -12
  660. package/fesm2020/primeng-tag.mjs.map +1 -1
  661. package/fesm2020/primeng-terminal.mjs +19 -17
  662. package/fesm2020/primeng-terminal.mjs.map +1 -1
  663. package/fesm2020/primeng-tieredmenu.mjs +30 -27
  664. package/fesm2020/primeng-tieredmenu.mjs.map +1 -1
  665. package/fesm2020/primeng-timeline.mjs +17 -13
  666. package/fesm2020/primeng-timeline.mjs.map +1 -1
  667. package/fesm2020/primeng-toast.mjs +36 -47
  668. package/fesm2020/primeng-toast.mjs.map +1 -1
  669. package/fesm2020/primeng-togglebutton.mjs +18 -14
  670. package/fesm2020/primeng-togglebutton.mjs.map +1 -1
  671. package/fesm2020/primeng-toolbar.mjs +16 -12
  672. package/fesm2020/primeng-toolbar.mjs.map +1 -1
  673. package/fesm2020/primeng-tooltip.mjs +11 -10
  674. package/fesm2020/primeng-tooltip.mjs.map +1 -1
  675. package/fesm2020/primeng-tree.mjs +49 -46
  676. package/fesm2020/primeng-tree.mjs.map +1 -1
  677. package/fesm2020/primeng-treeselect.mjs +23 -20
  678. package/fesm2020/primeng-treeselect.mjs.map +1 -1
  679. package/fesm2020/primeng-treetable.mjs +144 -143
  680. package/fesm2020/primeng-treetable.mjs.map +1 -1
  681. package/fesm2020/primeng-tristatecheckbox.mjs +22 -18
  682. package/fesm2020/primeng-tristatecheckbox.mjs.map +1 -1
  683. package/fesm2020/primeng-utils.mjs +0 -1
  684. package/fesm2020/primeng-virtualscroller.mjs +16 -13
  685. package/fesm2020/primeng-virtualscroller.mjs.map +1 -1
  686. package/fesm2020/primeng.mjs +0 -1
  687. package/fieldset/fieldset.d.ts +6 -4
  688. package/fileupload/fileupload.d.ts +13 -11
  689. package/focustrap/focustrap.d.ts +6 -3
  690. package/galleria/galleria.d.ts +6 -4
  691. package/image/image.d.ts +6 -4
  692. package/inplace/inplace.d.ts +6 -3
  693. package/inputmask/inputmask.d.ts +6 -3
  694. package/inputnumber/inputnumber.d.ts +9 -4
  695. package/inputswitch/inputswitch.d.ts +6 -3
  696. package/inputtext/inputtext.d.ts +4 -2
  697. package/inputtextarea/inputtextarea.d.ts +6 -4
  698. package/keyfilter/keyfilter.d.ts +7 -4
  699. package/knob/knob.d.ts +6 -3
  700. package/listbox/listbox.d.ts +6 -4
  701. package/megamenu/megamenu.d.ts +6 -4
  702. package/menu/menu.d.ts +6 -4
  703. package/menubar/menubar.d.ts +6 -4
  704. package/messages/messages.d.ts +7 -5
  705. package/multiselect/multiselect.d.ts +3 -2
  706. package/orderlist/orderlist.d.ts +6 -4
  707. package/organizationchart/organizationchart.d.ts +6 -4
  708. package/overlaypanel/overlaypanel.d.ts +6 -4
  709. package/package.json +1 -1
  710. package/paginator/paginator.d.ts +6 -4
  711. package/panel/panel.d.ts +6 -4
  712. package/panelmenu/panelmenu.d.ts +6 -4
  713. package/password/password.d.ts +10 -6
  714. package/picklist/picklist.d.ts +6 -4
  715. package/progressbar/progressbar.d.ts +6 -1
  716. package/progressspinner/progressspinner.d.ts +6 -1
  717. package/radiobutton/radiobutton.d.ts +6 -3
  718. package/rating/rating.d.ts +6 -3
  719. package/resources/components/button/button.css +1 -0
  720. package/resources/components/common/common.css +1 -1
  721. package/resources/components/table/table.css +4 -0
  722. package/resources/components/tieredmenu/tieredmenu.css +5 -1
  723. package/resources/primeng.css +2 -1
  724. package/resources/primeng.min.css +1 -1
  725. package/ripple/ripple.d.ts +4 -3
  726. package/scroller/scroller.d.ts +3 -1
  727. package/scrollpanel/scrollpanel.d.ts +4 -2
  728. package/scrolltop/scrolltop.d.ts +6 -4
  729. package/selectbutton/selectbutton.d.ts +6 -3
  730. package/sidebar/sidebar.d.ts +3 -2
  731. package/skeleton/skeleton.d.ts +6 -1
  732. package/slidemenu/slidemenu.d.ts +6 -4
  733. package/slider/slider.d.ts +6 -3
  734. package/speeddial/speeddial.d.ts +4 -3
  735. package/splitbutton/splitbutton.d.ts +6 -3
  736. package/splitter/splitter.d.ts +5 -3
  737. package/steps/steps.d.ts +7 -5
  738. package/styleclass/styleclass.d.ts +6 -3
  739. package/table/table.d.ts +4 -5
  740. package/tabmenu/tabmenu.d.ts +3 -2
  741. package/tabview/tabview.d.ts +6 -4
  742. package/tag/tag.d.ts +6 -2
  743. package/terminal/terminal.d.ts +5 -3
  744. package/tieredmenu/tieredmenu.d.ts +7 -5
  745. package/timeline/timeline.d.ts +6 -4
  746. package/toast/toast.d.ts +5 -5
  747. package/togglebutton/togglebutton.d.ts +6 -3
  748. package/toolbar/toolbar.d.ts +6 -4
  749. package/tooltip/tooltip.d.ts +3 -2
  750. package/tree/tree.d.ts +7 -5
  751. package/treeselect/treeselect.d.ts +6 -4
  752. package/treetable/treetable.d.ts +5 -3
  753. package/tristatecheckbox/tristatecheckbox.d.ts +6 -3
  754. package/virtualscroller/virtualscroller.d.ts +6 -4
@@ -3,21 +3,23 @@ import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Inje
3
3
  import { RouterModule } from '@angular/router';
4
4
  import { PrimeTemplate, SharedModule } from 'primeng/api';
5
5
  import { DomHandler } from 'primeng/dom';
6
- import { RippleModule } from 'primeng/ripple';
7
- import { TooltipModule } from 'primeng/tooltip';
8
6
  import { ChevronLeftIcon } from 'primeng/icons/chevronleft';
9
7
  import { ChevronRightIcon } from 'primeng/icons/chevronright';
8
+ import { RippleModule } from 'primeng/ripple';
9
+ import { TooltipModule } from 'primeng/tooltip';
10
10
  import * as i0 from "@angular/core";
11
11
  import * as i1 from "@angular/router";
12
- import * as i2 from "@angular/common";
13
- import * as i3 from "primeng/ripple";
14
- import * as i4 from "primeng/tooltip";
12
+ import * as i2 from "primeng/api";
13
+ import * as i3 from "@angular/common";
14
+ import * as i4 from "primeng/ripple";
15
+ import * as i5 from "primeng/tooltip";
15
16
  export class TabMenu {
16
- constructor(platformId, router, route, cd) {
17
+ constructor(platformId, router, route, cd, licenseManager) {
17
18
  this.platformId = platformId;
18
19
  this.router = router;
19
20
  this.route = route;
20
21
  this.cd = cd;
22
+ this.licenseManager = licenseManager;
21
23
  this.activeItemChange = new EventEmitter();
22
24
  this.backwardIsDisabled = true;
23
25
  this.forwardIsDisabled = false;
@@ -47,6 +49,7 @@ export class TabMenu {
47
49
  this.initAutoScrollForActiveItem();
48
50
  this.initButtonState();
49
51
  }
52
+ this.licenseManager['check']();
50
53
  }
51
54
  ngAfterViewChecked() {
52
55
  if (this.tabChanged) {
@@ -81,6 +84,7 @@ export class TabMenu {
81
84
  this.activeItem = item;
82
85
  this.activeItemChange.emit(item);
83
86
  this.tabChanged = true;
87
+ this.cd.markForCheck();
84
88
  }
85
89
  updateInkBar() {
86
90
  const tabHeader = DomHandler.findSingle(this.navbar.nativeElement, 'li.p-highlight');
@@ -153,12 +157,12 @@ export class TabMenu {
153
157
  }
154
158
  }
155
159
  }
156
- TabMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TabMenu, deps: [{ token: PLATFORM_ID }, { token: i1.Router }, { token: i1.ActivatedRoute }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
157
- TabMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: TabMenu, selector: "p-tabMenu", inputs: { model: "model", activeItem: "activeItem", scrollable: "scrollable", popup: "popup", style: "style", styleClass: "styleClass" }, outputs: { activeItemChange: "activeItemChange" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }, { propertyName: "navbar", first: true, predicate: ["navbar"], descendants: true }, { propertyName: "inkbar", first: true, predicate: ["inkbar"], descendants: true }, { propertyName: "prevBtn", first: true, predicate: ["prevBtn"], descendants: true }, { propertyName: "nextBtn", first: true, predicate: ["nextBtn"], descendants: true }], ngImport: i0, template: `
160
+ TabMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: TabMenu, deps: [{ token: PLATFORM_ID }, { token: i1.Router }, { token: i1.ActivatedRoute }, { token: i0.ChangeDetectorRef }, { token: i2.LicenseManager }], target: i0.ɵɵFactoryTarget.Component });
161
+ TabMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: TabMenu, selector: "p-tabMenu", inputs: { model: "model", activeItem: "activeItem", scrollable: "scrollable", popup: "popup", style: "style", styleClass: "styleClass" }, outputs: { activeItemChange: "activeItemChange" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }, { propertyName: "navbar", first: true, predicate: ["navbar"], descendants: true }, { propertyName: "inkbar", first: true, predicate: ["inkbar"], descendants: true }, { propertyName: "prevBtn", first: true, predicate: ["prevBtn"], descendants: true }, { propertyName: "nextBtn", first: true, predicate: ["nextBtn"], descendants: true }], ngImport: i0, template: `
158
162
  <div [ngClass]="{ 'p-tabmenu p-component': true, 'p-tabmenu-scrollable': scrollable }" [ngStyle]="style" [class]="styleClass">
159
163
  <div class="p-tabmenu-nav-container">
160
164
  <button *ngIf="scrollable && !backwardIsDisabled" #prevBtn class="p-tabmenu-nav-prev p-tabmenu-nav-btn p-link" (click)="navBackward()" type="button" pRipple>
161
- <ChevronLeftIcon *ngIf="!previousIconTemplate"/>
165
+ <ChevronLeftIcon *ngIf="!previousIconTemplate" />
162
166
  <ng-template *ngTemplateOutlet="previousIconTemplate"></ng-template>
163
167
  </button>
164
168
  <div #content class="p-tabmenu-nav-content" (scroll)="onScroll($event)">
@@ -230,19 +234,19 @@ TabMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2
230
234
  </ul>
231
235
  </div>
232
236
  <button *ngIf="scrollable && !forwardIsDisabled" #nextBtn class="p-tabmenu-nav-next p-tabmenu-nav-btn p-link" (click)="navForward()" type="button" pRipple>
233
- <ChevronRightIcon *ngIf="!previousIconTemplate"/>
237
+ <ChevronRightIcon *ngIf="!previousIconTemplate" />
234
238
  <ng-template *ngTemplateOutlet="nextIconTemplate"></ng-template>
235
239
  </button>
236
240
  </div>
237
241
  </div>
238
- `, isInline: true, styles: [".p-tabmenu-nav-container{position:relative}.p-tabmenu-scrollable .p-tabmenu-nav-container{overflow:hidden}.p-tabmenu-nav-content{overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scrollbar-width:none;overscroll-behavior:contain auto}.p-tabmenu-nav-btn{position:absolute;top:0;z-index:2;height:100%;display:flex;align-items:center;justify-content:center}.p-tabmenu-nav-prev{left:0}.p-tabmenu-nav-next{right:0}.p-tabview-nav-content::-webkit-scrollbar{display:none}.p-tabmenu-nav{display:flex;margin:0;padding:0;list-style-type:none;flex-wrap:nowrap}.p-tabmenu-nav a{cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.p-tabmenu-nav a:focus{z-index:1}.p-tabmenu-nav .p-menuitem-text{line-height:1;white-space:nowrap}.p-tabmenu-ink-bar{display:none;z-index:1}.p-tabmenu-nav-content::-webkit-scrollbar{display:none}.p-tabmenuitem:not(.p-hidden){display:flex}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return i2.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgStyle; }), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.RouterLink; }), selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.RouterLinkActive; }), selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.Ripple; }), selector: "[pRipple]" }, { kind: "directive", type: i0.forwardRef(function () { return i4.Tooltip; }), selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i0.forwardRef(function () { return ChevronLeftIcon; }), selector: "ChevronLeftIcon" }, { kind: "component", type: i0.forwardRef(function () { return ChevronRightIcon; }), selector: "ChevronRightIcon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
239
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TabMenu, decorators: [{
242
+ `, isInline: true, styles: [".p-tabmenu-nav-container{position:relative}.p-tabmenu-scrollable .p-tabmenu-nav-container{overflow:hidden}.p-tabmenu-nav-content{overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scrollbar-width:none;overscroll-behavior:contain auto}.p-tabmenu-nav-btn{position:absolute;top:0;z-index:2;height:100%;display:flex;align-items:center;justify-content:center}.p-tabmenu-nav-prev{left:0}.p-tabmenu-nav-next{right:0}.p-tabview-nav-content::-webkit-scrollbar{display:none}.p-tabmenu-nav{display:flex;margin:0;padding:0;list-style-type:none;flex-wrap:nowrap}.p-tabmenu-nav a{cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.p-tabmenu-nav a:focus{z-index:1}.p-tabmenu-nav .p-menuitem-text{line-height:1;white-space:nowrap}.p-tabmenu-ink-bar{display:none;z-index:1}.p-tabmenu-nav-content::-webkit-scrollbar{display:none}.p-tabmenuitem:not(.p-hidden){display:flex}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return i3.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgStyle; }), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.RouterLink; }), selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.RouterLinkActive; }), selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i0.forwardRef(function () { return i4.Ripple; }), selector: "[pRipple]" }, { kind: "directive", type: i0.forwardRef(function () { return i5.Tooltip; }), selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i0.forwardRef(function () { return ChevronLeftIcon; }), selector: "ChevronLeftIcon" }, { kind: "component", type: i0.forwardRef(function () { return ChevronRightIcon; }), selector: "ChevronRightIcon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
243
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: TabMenu, decorators: [{
240
244
  type: Component,
241
245
  args: [{ selector: 'p-tabMenu', template: `
242
246
  <div [ngClass]="{ 'p-tabmenu p-component': true, 'p-tabmenu-scrollable': scrollable }" [ngStyle]="style" [class]="styleClass">
243
247
  <div class="p-tabmenu-nav-container">
244
248
  <button *ngIf="scrollable && !backwardIsDisabled" #prevBtn class="p-tabmenu-nav-prev p-tabmenu-nav-btn p-link" (click)="navBackward()" type="button" pRipple>
245
- <ChevronLeftIcon *ngIf="!previousIconTemplate"/>
249
+ <ChevronLeftIcon *ngIf="!previousIconTemplate" />
246
250
  <ng-template *ngTemplateOutlet="previousIconTemplate"></ng-template>
247
251
  </button>
248
252
  <div #content class="p-tabmenu-nav-content" (scroll)="onScroll($event)">
@@ -314,7 +318,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImpor
314
318
  </ul>
315
319
  </div>
316
320
  <button *ngIf="scrollable && !forwardIsDisabled" #nextBtn class="p-tabmenu-nav-next p-tabmenu-nav-btn p-link" (click)="navForward()" type="button" pRipple>
317
- <ChevronRightIcon *ngIf="!previousIconTemplate"/>
321
+ <ChevronRightIcon *ngIf="!previousIconTemplate" />
318
322
  <ng-template *ngTemplateOutlet="nextIconTemplate"></ng-template>
319
323
  </button>
320
324
  </div>
@@ -325,7 +329,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImpor
325
329
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
326
330
  type: Inject,
327
331
  args: [PLATFORM_ID]
328
- }] }, { type: i1.Router }, { type: i1.ActivatedRoute }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { model: [{
332
+ }] }, { type: i1.Router }, { type: i1.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i2.LicenseManager }]; }, propDecorators: { model: [{
329
333
  type: Input
330
334
  }], activeItem: [{
331
335
  type: Input
@@ -360,10 +364,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImpor
360
364
  }] } });
361
365
  export class TabMenuModule {
362
366
  }
363
- TabMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TabMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
364
- TabMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.4", ngImport: i0, type: TabMenuModule, declarations: [TabMenu], imports: [CommonModule, RouterModule, SharedModule, RippleModule, TooltipModule, ChevronLeftIcon, ChevronRightIcon], exports: [TabMenu, RouterModule, SharedModule, TooltipModule] });
365
- TabMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TabMenuModule, imports: [CommonModule, RouterModule, SharedModule, RippleModule, TooltipModule, ChevronLeftIcon, ChevronRightIcon, RouterModule, SharedModule, TooltipModule] });
366
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TabMenuModule, decorators: [{
367
+ TabMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: TabMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
368
+ TabMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: TabMenuModule, declarations: [TabMenu], imports: [CommonModule, RouterModule, SharedModule, RippleModule, TooltipModule, ChevronLeftIcon, ChevronRightIcon], exports: [TabMenu, RouterModule, SharedModule, TooltipModule] });
369
+ TabMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: TabMenuModule, imports: [CommonModule, RouterModule, SharedModule, RippleModule, TooltipModule, ChevronLeftIcon, ChevronRightIcon, RouterModule, SharedModule, TooltipModule] });
370
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: TabMenuModule, decorators: [{
367
371
  type: NgModule,
368
372
  args: [{
369
373
  imports: [CommonModule, RouterModule, SharedModule, RippleModule, TooltipModule, ChevronLeftIcon, ChevronRightIcon],
@@ -371,4 +375,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImpor
371
375
  declarations: [TabMenu]
372
376
  }]
373
377
  }] });
374
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90YWJtZW51L3RhYm1lbnUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFJSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULGVBQWUsRUFFZixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBRVIsTUFBTSxFQUNOLFdBQVcsRUFHWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBMEIsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkUsT0FBTyxFQUFZLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7O0FBNkY5RCxNQUFNLE9BQU8sT0FBTztJQXlDaEIsWUFBeUMsVUFBZSxFQUFVLE1BQWMsRUFBVSxLQUFxQixFQUFVLEVBQXFCO1FBQXJHLGVBQVUsR0FBVixVQUFVLENBQUs7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQXBDcEkscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVksQ0FBQztRQThCMUQsdUJBQWtCLEdBQVksSUFBSSxDQUFDO1FBRW5DLHNC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bkQsYUFBYSxZQUpaLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUMvRixZQUFZLEVBQUUsWUFBWSxFQUFFLGFBQWE7MkZBR25ELGFBQWE7a0JBTHpCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLENBQUM7b0JBQ25ILE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLGFBQWEsQ0FBQztvQkFDN0QsWUFBWSxFQUFFLENBQUMsT0FBTyxDQUFDO2lCQUMxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0NoZWNrZWQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ01vZHVsZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIFBMQVRGT1JNX0lELFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTWVudUl0ZW0sIFByaW1lVGVtcGxhdGUsIFNoYXJlZE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IERvbUhhbmRsZXIgfSBmcm9tICdwcmltZW5nL2RvbSc7XG5pbXBvcnQgeyBSaXBwbGVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcbmltcG9ydCB7IENoZXZyb25MZWZ0SWNvbiB9IGZyb20gJ3ByaW1lbmcvaWNvbnMvY2hldnJvbmxlZnQnO1xuaW1wb3J0IHsgQ2hldnJvblJpZ2h0SWNvbiB9IGZyb20gJ3ByaW1lbmcvaWNvbnMvY2hldnJvbnJpZ2h0JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLXRhYk1lbnUnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyAncC10YWJtZW51IHAtY29tcG9uZW50JzogdHJ1ZSwgJ3AtdGFibWVudS1zY3JvbGxhYmxlJzogc2Nyb2xsYWJsZSB9XCIgW25nU3R5bGVdPVwic3R5bGVcIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtdGFibWVudS1uYXYtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNjcm9sbGFibGUgJiYgIWJhY2t3YXJkSXNEaXNhYmxlZFwiICNwcmV2QnRuIGNsYXNzPVwicC10YWJtZW51LW5hdi1wcmV2IHAtdGFibWVudS1uYXYtYnRuIHAtbGlua1wiIChjbGljayk9XCJuYXZCYWNrd2FyZCgpXCIgdHlwZT1cImJ1dHRvblwiIHBSaXBwbGU+XG4gICAgICAgICAgICAgICAgICAgIDxDaGV2cm9uTGVmdEljb24gKm5nSWY9XCIhcHJldmlvdXNJY29uVGVtcGxhdGVcIi8+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cInByZXZpb3VzSWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8ZGl2ICNjb250ZW50IGNsYXNzPVwicC10YWJtZW51LW5hdi1jb250ZW50XCIgKHNjcm9sbCk9XCJvblNjcm9sbCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDx1bCAjbmF2YmFyIGNsYXNzPVwicC10YWJtZW51LW5hdiBwLXJlc2V0XCIgcm9sZT1cInRhYmxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIG1vZGVsOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwidGFiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJpdGVtLnN0eWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiaXRlbS5zdHlsZUNsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImlzQWN0aXZlKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzQWN0aXZlKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdwLXRhYm1lbnVpdGVtJzogdHJ1ZSwgJ3AtZGlzYWJsZWQnOiBpdGVtLmRpc2FibGVkLCAncC1oaWdobGlnaHQnOiBpc0FjdGl2ZShpdGVtKSwgJ3AtaGlkZGVuJzogaXRlbS52aXNpYmxlID09PSBmYWxzZSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwVG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwT3B0aW9uc109XCJpdGVtLnRvb2x0aXBPcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFpdGVtLnJvdXRlckxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5ocmVmXT1cIml0ZW0udXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLW1lbnVpdGVtLWxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIml0ZW1DbGljaygkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiaXRlbUNsaWNrKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJpdGVtLmRpc2FibGVkID8gbnVsbCA6ICcwJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YXJnZXRdPVwiaXRlbS50YXJnZXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJpdGVtLnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiaXRlbS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbVRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0taWNvblwiIFtuZ0NsYXNzXT1cIml0ZW0uaWNvblwiICpuZ0lmPVwiaXRlbS5pY29uXCIgW25nU3R5bGVdPVwiaXRlbS5pY29uU3R5bGVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiICpuZ0lmPVwiaXRlbS5lc2NhcGUgIT09IGZhbHNlOyBlbHNlIGh0bWxMYWJlbFwiPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2h0bWxMYWJlbD48c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiIFtpbm5lckhUTUxdPVwiaXRlbS5sYWJlbFwiPjwvc3Bhbj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLWJhZGdlXCIgKm5nSWY9XCJpdGVtLmJhZGdlXCIgW25nQ2xhc3NdPVwiaXRlbS5iYWRnZVN0eWxlQ2xhc3NcIj57eyBpdGVtLmJhZGdlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0sIGluZGV4OiBpIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLnJvdXRlckxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJpdGVtLnJvdXRlckxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwiaXRlbS5xdWVyeVBhcmFtc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIidwLW1lbnVpdGVtLWxpbmstYWN0aXZlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJpdGVtLnJvdXRlckxpbmtBY3RpdmVPcHRpb25zIHx8IHsgZXhhY3Q6IGZhbHNlIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLW1lbnVpdGVtLWxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaXRlbUNsaWNrKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJpdGVtQ2xpY2soJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cIml0ZW0uZGlzYWJsZWQgPyBudWxsIDogJzAnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RhcmdldF09XCJpdGVtLnRhcmdldFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cIml0ZW0udGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJpdGVtLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZyYWdtZW50XT1cIml0ZW0uZnJhZ21lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNIYW5kbGluZ109XCJpdGVtLnF1ZXJ5UGFyYW1zSGFuZGxpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJlc2VydmVGcmFnbWVudF09XCJpdGVtLnByZXNlcnZlRnJhZ21lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2tpcExvY2F0aW9uQ2hhbmdlXT1cIml0ZW0uc2tpcExvY2F0aW9uQ2hhbmdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcGxhY2VVcmxdPVwiaXRlbS5yZXBsYWNlVXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXRlXT1cIml0ZW0uc3RhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW1UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLWljb25cIiBbbmdDbGFzc109XCJpdGVtLmljb25cIiAqbmdJZj1cIml0ZW0uaWNvblwiIFtuZ1N0eWxlXT1cIml0ZW0uaWNvblN0eWxlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLXRleHRcIiAqbmdJZj1cIml0ZW0uZXNjYXBlICE9PSBmYWxzZTsgZWxzZSBodG1sUm91dGVMYWJlbFwiPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2h0bWxSb3V0ZUxhYmVsPjxzcGFuIGNsYXNzPVwicC1tZW51aXRlbS10ZXh0XCIgW2lubmVySFRNTF09XCJpdGVtLmxhYmVsXCI+PC9zcGFuPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tYmFkZ2VcIiAqbmdJZj1cIml0ZW0uYmFkZ2VcIiBbbmdDbGFzc109XCJpdGVtLmJhZGdlU3R5bGVDbGFzc1wiPnt7IGl0ZW0uYmFkZ2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSwgaW5kZXg6IGkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgI2lua2JhciBjbGFzcz1cInAtdGFibWVudS1pbmstYmFyXCI+PC9saT5cbiAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2Nyb2xsYWJsZSAmJiAhZm9yd2FyZElzRGlzYWJsZWRcIiAjbmV4dEJ0biBjbGFzcz1cInAtdGFibWVudS1uYXYtbmV4dCBwLXRhYm1lbnUtbmF2LWJ0biBwLWxpbmtcIiAoY2xpY2spPVwibmF2Rm9yd2FyZCgpXCIgdHlwZT1cImJ1dHRvblwiIHBSaXBwbGU+XG4gICAgICAgICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHRJY29uICpuZ0lmPVwiIXByZXZpb3VzSWNvblRlbXBsYXRlXCIvPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJuZXh0SWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGFibWVudS5jc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgVGFiTWVudSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgbW9kZWw6IE1lbnVJdGVtW107XG5cbiAgICBASW5wdXQoKSBhY3RpdmVJdGVtOiBNZW51SXRlbTtcblxuICAgIEBPdXRwdXQoKSBhY3RpdmVJdGVtQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNZW51SXRlbT4oKTtcblxuICAgIEBJbnB1dCgpIHNjcm9sbGFibGU6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBwb3B1cDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBAVmlld0NoaWxkKCdjb250ZW50JykgY29udGVudDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ25hdmJhcicpIG5hdmJhcjogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ2lua2JhcicpIGlua2JhcjogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ3ByZXZCdG4nKSBwcmV2QnRuOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnbmV4dEJ0bicpIG5leHRCdG46IEVsZW1lbnRSZWY7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpIHRlbXBsYXRlczogUXVlcnlMaXN0PGFueT47XG5cbiAgICBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwcmV2aW91c0ljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIG5leHRJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICB0YWJDaGFuZ2VkOiBib29sZWFuO1xuXG4gICAgYmFja3dhcmRJc0Rpc2FibGVkOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIGZvcndhcmRJc0Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIHRpbWVySWRGb3JJbml0aWFsQXV0b1Njcm9sbDogYW55ID0gbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogYW55LCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAoaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdpdGVtJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ25leHRpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXh0SWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdwcmV2aW91c2ljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZpb3VzSWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUlua0JhcigpO1xuICAgICAgICAgICAgdGhpcy5pbml0QXV0b1Njcm9sbEZvckFjdGl2ZUl0ZW0oKTtcbiAgICAgICAgICAgIHRoaXMuaW5pdEJ1dHRvblN0YXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLnRhYkNoYW5nZWQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlSW5rQmFyKCk7XG4gICAgICAgICAgICB0aGlzLnRhYkNoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsZWFyQXV0b1Njcm9sbEhhbmRsZXIoKTtcbiAgICB9XG5cbiAgICBpc0FjdGl2ZShpdGVtOiBNZW51SXRlbSkge1xuICAgICAgICBpZiAoaXRlbS5yb3V0ZXJMaW5rKSB7XG4gICAgICAgICAgICBjb25zdCByb3V0ZXJMaW5rID0gQXJyYXkuaXNBcnJheShpdGVtLnJvdXRlckxpbmspID8gaXRlbS5yb3V0ZXJMaW5rIDogW2l0ZW0ucm91dGVyTGlua107XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJvdXRlci5pc0FjdGl2ZSh0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKHJvdXRlckxpbmssIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KS50b1N0cmluZygpLCBpdGVtLnJvdXRlckxpbmtBY3RpdmVPcHRpb25zPy5leGFjdCA/PyBpdGVtLnJvdXRlckxpbmtBY3RpdmVPcHRpb25zID8/IGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtID09PSB0aGlzLmFjdGl2ZUl0ZW07XG4gICAgfVxuXG4gICAgaXRlbUNsaWNrKGV2ZW50OiBFdmVudCwgaXRlbTogTWVudUl0ZW0pIHtcbiAgICAgICAgaWYgKGl0ZW0uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWl0ZW0udXJsICYmICFpdGVtLnJvdXRlckxpbmspIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXRlbS5jb21tYW5kKSB7XG4gICAgICAgICAgICBpdGVtLmNvbW1hbmQoe1xuICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICAgIGl0ZW06IGl0ZW1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hY3RpdmVJdGVtID0gaXRlbTtcbiAgICAgICAgdGhpcy5hY3RpdmVJdGVtQ2hhbmdlLmVtaXQoaXRlbSk7XG4gICAgICAgIHRoaXMudGFiQ2hhbmdlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgdXBkYXRlSW5rQmFyKCkge1xuICAgICAgICBjb25zdCB0YWJIZWFkZXIgPSBEb21IYW5kbGVyLmZpbmRTaW5nbGUodGhpcy5uYXZiYXIubmF0aXZlRWxlbWVudCwgJ2xpLnAtaGlnaGxpZ2h0Jyk7XG4gICAgICAgIGlmICh0YWJIZWFkZXIpIHtcbiAgICAgICAgICAgIHRoaXMuaW5rYmFyLm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSBEb21IYW5kbGVyLmdldFdpZHRoKHRhYkhlYWRlcikgKyAncHgnO1xuICAgICAgICAgICAgdGhpcy5pbmtiYXIubmF0aXZlRWxlbWVudC5zdHlsZS5sZWZ0ID0gRG9tSGFuZGxlci5nZXRPZmZzZXQodGFiSGVhZGVyKS5sZWZ0IC0gRG9tSGFuZGxlci5nZXRPZmZzZXQodGhpcy5uYXZiYXIubmF0aXZlRWxlbWVudCkubGVmdCArICdweCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRWaXNpYmxlQnV0dG9uV2lkdGhzKCkge1xuICAgICAgICByZXR1cm4gW3RoaXMucHJldkJ0bj8ubmF0aXZlRWxlbWVudCwgdGhpcy5uZXh0QnRuPy5uYXRpdmVFbGVtZW50XS5yZWR1Y2UoKGFjYywgZWwpID0+IChlbCA/IGFjYyArIERvbUhhbmRsZXIuZ2V0V2lkdGgoZWwpIDogYWNjKSwgMCk7XG4gICAgfVxuXG4gICAgdXBkYXRlQnV0dG9uU3RhdGUoKSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgeyBzY3JvbGxMZWZ0LCBzY3JvbGxXaWR0aCB9ID0gY29udGVudDtcbiAgICAgICAgY29uc3Qgd2lkdGggPSBEb21IYW5kbGVyLmdldFdpZHRoKGNvbnRlbnQpO1xuXG4gICAgICAgIHRoaXMuYmFja3dhcmRJc0Rpc2FibGVkID0gc2Nyb2xsTGVmdCA9PT0gMDtcbiAgICAgICAgdGhpcy5mb3J3YXJkSXNEaXNhYmxlZCA9IHBhcnNlSW50KHNjcm9sbExlZnQpID09PSBzY3JvbGxXaWR0aCAtIHdpZHRoO1xuICAgIH1cblxuICAgIHVwZGF0ZVNjcm9sbEJhcihpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRhYkhlYWRlciA9IHRoaXMubmF2YmFyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5baW5kZXhdO1xuXG4gICAgICAgIGlmICghdGFiSGVhZGVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0YWJIZWFkZXIuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnLCBpbmxpbmU6ICdjZW50ZXInIH0pO1xuICAgIH1cblxuICAgIG9uU2Nyb2xsKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2Nyb2xsYWJsZSAmJiB0aGlzLnVwZGF0ZUJ1dHRvblN0YXRlKCk7XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBuYXZCYWNrd2FyZCgpIHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCB3aWR0aCA9IERvbUhhbmRsZXIuZ2V0V2lkdGgoY29udGVudCkgLSB0aGlzLmdldFZpc2libGVCdXR0b25XaWR0aHMoKTtcbiAgICAgICAgY29uc3QgcG9zID0gY29udGVudC5zY3JvbGxMZWZ0IC0gd2lkdGg7XG4gICAgICAgIGNvbnRlbnQuc2Nyb2xsTGVmdCA9IHBvcyA8PSAwID8gMCA6IHBvcztcbiAgICB9XG5cbiAgICBuYXZGb3J3YXJkKCkge1xuICAgICAgICBjb25zdCBjb250ZW50ID0gdGhpcy5jb250ZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gRG9tSGFuZGxlci5nZXRXaWR0aChjb250ZW50KSAtIHRoaXMuZ2V0VmlzaWJsZUJ1dHRvbldpZHRocygpO1xuICAgICAgICBjb25zdCBwb3MgPSBjb250ZW50LnNjcm9sbExlZnQgKyB3aWR0aDtcbiAgICAgICAgY29uc3QgbGFzdFBvcyA9IGNvbnRlbnQuc2Nyb2xsV2lkdGggLSB3aWR0aDtcbiAgICAgICAgY29udGVudC5zY3JvbGxMZWZ0ID0gcG9zID49IGxhc3RQb3MgPyBsYXN0UG9zIDogcG9zO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdEF1dG9TY3JvbGxGb3JBY3RpdmVJdGVtKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuc2Nyb2xsYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jbGVhckF1dG9TY3JvbGxIYW5kbGVyKCk7XG4gICAgICAgIC8vIFdlIGhhdmUgdG8gd2FpdCBmb3IgdGhlIHJlbmRlcmluZyBhbmQgdGhlbiBjYW4gc2Nyb2xsIHRvIGVsZW1lbnQuXG4gICAgICAgIHRoaXMudGltZXJJZEZvckluaXRpYWxBdXRvU2Nyb2xsID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhY3RpdmVJdGVtID0gdGhpcy5tb2RlbC5maW5kSW5kZXgoKG1lbnVJdGVtKSA9PiB0aGlzLmlzQWN0aXZlKG1lbnVJdGVtKSk7XG5cbiAgICAgICAgICAgIGlmIChhY3RpdmVJdGVtICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2Nyb2xsQmFyKGFjdGl2ZUl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyQXV0b1Njcm9sbEhhbmRsZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRpbWVySWRGb3JJbml0aWFsQXV0b1Njcm9sbCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXJJZEZvckluaXRpYWxBdXRvU2Nyb2xsKTtcbiAgICAgICAgICAgIHRoaXMudGltZXJJZEZvckluaXRpYWxBdXRvU2Nyb2xsID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdEJ1dHRvblN0YXRlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxhYmxlKSB7XG4gICAgICAgICAgICAvLyBXZSBoYXZlIHRvIHdhaXQgZm9yIHRoZSByZW5kZXJpbmcgYW5kIHRoZW4gcmV0cmlldmUgdGhlIGFjdHVhbCBzaXplIGVsZW1lbnQgZnJvbSB0aGUgRE9NLlxuICAgICAgICAgICAgLy8gaW4gZnV0dXJlIGBQcm9taXNlLnJlc29sdmVgIGNhbiBiZSBjaGFuZ2VkIHRvIGBxdWV1ZU1pY3JvdGFza2AgKGlmIGllMTEgc3VwcG9ydCB3aWxsIGJlIGRyb3BwZWQpXG4gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUJ1dHRvblN0YXRlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJvdXRlck1vZHVsZSwgU2hhcmVkTW9kdWxlLCBSaXBwbGVNb2R1bGUsIFRvb2x0aXBNb2R1bGUsIENoZXZyb25MZWZ0SWNvbiwgQ2hldnJvblJpZ2h0SWNvbl0sXG4gICAgZXhwb3J0czogW1RhYk1lbnUsIFJvdXRlck1vZHVsZSwgU2hhcmVkTW9kdWxlLCBUb29sdGlwTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtUYWJNZW51XVxufSlcbmV4cG9ydCBjbGFzcyBUYWJNZW51TW9kdWxlIHt9XG4iXX0=
378
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90YWJtZW51L3RhYm1lbnUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFJSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULGVBQWUsRUFFZixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBRVIsTUFBTSxFQUNOLFdBQVcsRUFHWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBMEIsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkUsT0FBTyxFQUE0QixhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7QUE2RmhELE1BQU0sT0FBTyxPQUFPO0lBeUNoQixZQUF5QyxVQUFlLEVBQVUsTUFBYyxFQUFVLEtBQXFCLEVBQVUsRUFBcUIsRUFBVSxjQUE4QjtRQUE3SSxlQUFVLEdBQVYsVUFBVSxDQUFLO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFwQzVLLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFZLENB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YixPQUFPLGFBK01OLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixhQS9NekcsT0FBTyxFQWdORyxZQUFZLEVBQUUsWUFBWSxFQUFFLGFBQWE7MkdBR25ELGFBQWEsWUFKWixZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFDL0YsWUFBWSxFQUFFLFlBQVksRUFBRSxhQUFhOzJGQUduRCxhQUFhO2tCQUx6QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixDQUFDO29CQUNuSCxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxhQUFhLENBQUM7b0JBQzdELFlBQVksRUFBRSxDQUFDLE9BQU8sQ0FBQztpQkFDMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdDaGVja2VkLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdNb2R1bGUsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBQTEFURk9STV9JRCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciwgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IExpY2Vuc2VNYW5hZ2VyLCBNZW51SXRlbSwgUHJpbWVUZW1wbGF0ZSwgU2hhcmVkTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgRG9tSGFuZGxlciB9IGZyb20gJ3ByaW1lbmcvZG9tJztcbmltcG9ydCB7IENoZXZyb25MZWZ0SWNvbiB9IGZyb20gJ3ByaW1lbmcvaWNvbnMvY2hldnJvbmxlZnQnO1xuaW1wb3J0IHsgQ2hldnJvblJpZ2h0SWNvbiB9IGZyb20gJ3ByaW1lbmcvaWNvbnMvY2hldnJvbnJpZ2h0JztcbmltcG9ydCB7IFJpcHBsZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtdGFiTWVudScsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7ICdwLXRhYm1lbnUgcC1jb21wb25lbnQnOiB0cnVlLCAncC10YWJtZW51LXNjcm9sbGFibGUnOiBzY3JvbGxhYmxlIH1cIiBbbmdTdHlsZV09XCJzdHlsZVwiIFtjbGFzc109XCJzdHlsZUNsYXNzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC10YWJtZW51LW5hdi1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2Nyb2xsYWJsZSAmJiAhYmFja3dhcmRJc0Rpc2FibGVkXCIgI3ByZXZCdG4gY2xhc3M9XCJwLXRhYm1lbnUtbmF2LXByZXYgcC10YWJtZW51LW5hdi1idG4gcC1saW5rXCIgKGNsaWNrKT1cIm5hdkJhY2t3YXJkKClcIiB0eXBlPVwiYnV0dG9uXCIgcFJpcHBsZT5cbiAgICAgICAgICAgICAgICAgICAgPENoZXZyb25MZWZ0SWNvbiAqbmdJZj1cIiFwcmV2aW91c0ljb25UZW1wbGF0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cInByZXZpb3VzSWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8ZGl2ICNjb250ZW50IGNsYXNzPVwicC10YWJtZW51LW5hdi1jb250ZW50XCIgKHNjcm9sbCk9XCJvblNjcm9sbCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDx1bCAjbmF2YmFyIGNsYXNzPVwicC10YWJtZW51LW5hdiBwLXJlc2V0XCIgcm9sZT1cInRhYmxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIG1vZGVsOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwidGFiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJpdGVtLnN0eWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiaXRlbS5zdHlsZUNsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImlzQWN0aXZlKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzQWN0aXZlKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdwLXRhYm1lbnVpdGVtJzogdHJ1ZSwgJ3AtZGlzYWJsZWQnOiBpdGVtLmRpc2FibGVkLCAncC1oaWdobGlnaHQnOiBpc0FjdGl2ZShpdGVtKSwgJ3AtaGlkZGVuJzogaXRlbS52aXNpYmxlID09PSBmYWxzZSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwVG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwT3B0aW9uc109XCJpdGVtLnRvb2x0aXBPcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFpdGVtLnJvdXRlckxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5ocmVmXT1cIml0ZW0udXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLW1lbnVpdGVtLWxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIml0ZW1DbGljaygkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiaXRlbUNsaWNrKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJpdGVtLmRpc2FibGVkID8gbnVsbCA6ICcwJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YXJnZXRdPVwiaXRlbS50YXJnZXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJpdGVtLnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiaXRlbS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbVRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0taWNvblwiIFtuZ0NsYXNzXT1cIml0ZW0uaWNvblwiICpuZ0lmPVwiaXRlbS5pY29uXCIgW25nU3R5bGVdPVwiaXRlbS5pY29uU3R5bGVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiICpuZ0lmPVwiaXRlbS5lc2NhcGUgIT09IGZhbHNlOyBlbHNlIGh0bWxMYWJlbFwiPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2h0bWxMYWJlbD48c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiIFtpbm5lckhUTUxdPVwiaXRlbS5sYWJlbFwiPjwvc3Bhbj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLWJhZGdlXCIgKm5nSWY9XCJpdGVtLmJhZGdlXCIgW25nQ2xhc3NdPVwiaXRlbS5iYWRnZVN0eWxlQ2xhc3NcIj57eyBpdGVtLmJhZGdlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0sIGluZGV4OiBpIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLnJvdXRlckxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJpdGVtLnJvdXRlckxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwiaXRlbS5xdWVyeVBhcmFtc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIidwLW1lbnVpdGVtLWxpbmstYWN0aXZlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJpdGVtLnJvdXRlckxpbmtBY3RpdmVPcHRpb25zIHx8IHsgZXhhY3Q6IGZhbHNlIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLW1lbnVpdGVtLWxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaXRlbUNsaWNrKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJpdGVtQ2xpY2soJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cIml0ZW0uZGlzYWJsZWQgPyBudWxsIDogJzAnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RhcmdldF09XCJpdGVtLnRhcmdldFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cIml0ZW0udGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJpdGVtLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZyYWdtZW50XT1cIml0ZW0uZnJhZ21lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNIYW5kbGluZ109XCJpdGVtLnF1ZXJ5UGFyYW1zSGFuZGxpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJlc2VydmVGcmFnbWVudF09XCJpdGVtLnByZXNlcnZlRnJhZ21lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2tpcExvY2F0aW9uQ2hhbmdlXT1cIml0ZW0uc2tpcExvY2F0aW9uQ2hhbmdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcGxhY2VVcmxdPVwiaXRlbS5yZXBsYWNlVXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXRlXT1cIml0ZW0uc3RhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW1UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLWljb25cIiBbbmdDbGFzc109XCJpdGVtLmljb25cIiAqbmdJZj1cIml0ZW0uaWNvblwiIFtuZ1N0eWxlXT1cIml0ZW0uaWNvblN0eWxlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLXRleHRcIiAqbmdJZj1cIml0ZW0uZXNjYXBlICE9PSBmYWxzZTsgZWxzZSBodG1sUm91dGVMYWJlbFwiPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2h0bWxSb3V0ZUxhYmVsPjxzcGFuIGNsYXNzPVwicC1tZW51aXRlbS10ZXh0XCIgW2lubmVySFRNTF09XCJpdGVtLmxhYmVsXCI+PC9zcGFuPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tYmFkZ2VcIiAqbmdJZj1cIml0ZW0uYmFkZ2VcIiBbbmdDbGFzc109XCJpdGVtLmJhZGdlU3R5bGVDbGFzc1wiPnt7IGl0ZW0uYmFkZ2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSwgaW5kZXg6IGkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgI2lua2JhciBjbGFzcz1cInAtdGFibWVudS1pbmstYmFyXCI+PC9saT5cbiAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2Nyb2xsYWJsZSAmJiAhZm9yd2FyZElzRGlzYWJsZWRcIiAjbmV4dEJ0biBjbGFzcz1cInAtdGFibWVudS1uYXYtbmV4dCBwLXRhYm1lbnUtbmF2LWJ0biBwLWxpbmtcIiAoY2xpY2spPVwibmF2Rm9yd2FyZCgpXCIgdHlwZT1cImJ1dHRvblwiIHBSaXBwbGU+XG4gICAgICAgICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHRJY29uICpuZ0lmPVwiIXByZXZpb3VzSWNvblRlbXBsYXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwibmV4dEljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL3RhYm1lbnUuY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFRhYk1lbnUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBBZnRlclZpZXdDaGVja2VkLCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIG1vZGVsOiBNZW51SXRlbVtdO1xuXG4gICAgQElucHV0KCkgYWN0aXZlSXRlbTogTWVudUl0ZW07XG5cbiAgICBAT3V0cHV0KCkgYWN0aXZlSXRlbUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TWVudUl0ZW0+KCk7XG5cbiAgICBASW5wdXQoKSBzY3JvbGxhYmxlOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgcG9wdXA6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBzdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQFZpZXdDaGlsZCgnY29udGVudCcpIGNvbnRlbnQ6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCduYXZiYXInKSBuYXZiYXI6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCdpbmtiYXInKSBpbmtiYXI6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCdwcmV2QnRuJykgcHJldkJ0bjogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ25leHRCdG4nKSBuZXh0QnRuOiBFbGVtZW50UmVmO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxhbnk+O1xuXG4gICAgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgcHJldmlvdXNJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBuZXh0SWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgdGFiQ2hhbmdlZDogYm9vbGVhbjtcblxuICAgIGJhY2t3YXJkSXNEaXNhYmxlZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBmb3J3YXJkSXNEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSB0aW1lcklkRm9ySW5pdGlhbEF1dG9TY3JvbGw6IGFueSA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IGFueSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIGxpY2Vuc2VNYW5hZ2VyOiBMaWNlbnNlTWFuYWdlcikge31cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2l0ZW0nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnbmV4dGljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5leHRJY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXZpb3VzaWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJldmlvdXNJY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlSW5rQmFyKCk7XG4gICAgICAgICAgICB0aGlzLmluaXRBdXRvU2Nyb2xsRm9yQWN0aXZlSXRlbSgpO1xuICAgICAgICAgICAgdGhpcy5pbml0QnV0dG9uU3RhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubGljZW5zZU1hbmFnZXJbJ2NoZWNrJ10oKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLnRhYkNoYW5nZWQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlSW5rQmFyKCk7XG4gICAgICAgICAgICB0aGlzLnRhYkNoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsZWFyQXV0b1Njcm9sbEhhbmRsZXIoKTtcbiAgICB9XG5cbiAgICBpc0FjdGl2ZShpdGVtOiBNZW51SXRlbSkge1xuICAgICAgICBpZiAoaXRlbS5yb3V0ZXJMaW5rKSB7XG4gICAgICAgICAgICBjb25zdCByb3V0ZXJMaW5rID0gQXJyYXkuaXNBcnJheShpdGVtLnJvdXRlckxpbmspID8gaXRlbS5yb3V0ZXJMaW5rIDogW2l0ZW0ucm91dGVyTGlua107XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJvdXRlci5pc0FjdGl2ZSh0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKHJvdXRlckxpbmssIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KS50b1N0cmluZygpLCBpdGVtLnJvdXRlckxpbmtBY3RpdmVPcHRpb25zPy5leGFjdCA/PyBpdGVtLnJvdXRlckxpbmtBY3RpdmVPcHRpb25zID8/IGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtID09PSB0aGlzLmFjdGl2ZUl0ZW07XG4gICAgfVxuXG4gICAgaXRlbUNsaWNrKGV2ZW50OiBFdmVudCwgaXRlbTogTWVudUl0ZW0pIHtcbiAgICAgICAgaWYgKGl0ZW0uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWl0ZW0udXJsICYmICFpdGVtLnJvdXRlckxpbmspIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXRlbS5jb21tYW5kKSB7XG4gICAgICAgICAgICBpdGVtLmNvbW1hbmQoe1xuICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICAgIGl0ZW06IGl0ZW1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hY3RpdmVJdGVtID0gaXRlbTtcbiAgICAgICAgdGhpcy5hY3RpdmVJdGVtQ2hhbmdlLmVtaXQoaXRlbSk7XG4gICAgICAgIHRoaXMudGFiQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgdXBkYXRlSW5rQmFyKCkge1xuICAgICAgICBjb25zdCB0YWJIZWFkZXIgPSBEb21IYW5kbGVyLmZpbmRTaW5nbGUodGhpcy5uYXZiYXIubmF0aXZlRWxlbWVudCwgJ2xpLnAtaGlnaGxpZ2h0Jyk7XG4gICAgICAgIGlmICh0YWJIZWFkZXIpIHtcbiAgICAgICAgICAgIHRoaXMuaW5rYmFyLm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSBEb21IYW5kbGVyLmdldFdpZHRoKHRhYkhlYWRlcikgKyAncHgnO1xuICAgICAgICAgICAgdGhpcy5pbmtiYXIubmF0aXZlRWxlbWVudC5zdHlsZS5sZWZ0ID0gRG9tSGFuZGxlci5nZXRPZmZzZXQodGFiSGVhZGVyKS5sZWZ0IC0gRG9tSGFuZGxlci5nZXRPZmZzZXQodGhpcy5uYXZiYXIubmF0aXZlRWxlbWVudCkubGVmdCArICdweCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRWaXNpYmxlQnV0dG9uV2lkdGhzKCkge1xuICAgICAgICByZXR1cm4gW3RoaXMucHJldkJ0bj8ubmF0aXZlRWxlbWVudCwgdGhpcy5uZXh0QnRuPy5uYXRpdmVFbGVtZW50XS5yZWR1Y2UoKGFjYywgZWwpID0+IChlbCA/IGFjYyArIERvbUhhbmRsZXIuZ2V0V2lkdGgoZWwpIDogYWNjKSwgMCk7XG4gICAgfVxuXG4gICAgdXBkYXRlQnV0dG9uU3RhdGUoKSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgeyBzY3JvbGxMZWZ0LCBzY3JvbGxXaWR0aCB9ID0gY29udGVudDtcbiAgICAgICAgY29uc3Qgd2lkdGggPSBEb21IYW5kbGVyLmdldFdpZHRoKGNvbnRlbnQpO1xuXG4gICAgICAgIHRoaXMuYmFja3dhcmRJc0Rpc2FibGVkID0gc2Nyb2xsTGVmdCA9PT0gMDtcbiAgICAgICAgdGhpcy5mb3J3YXJkSXNEaXNhYmxlZCA9IHBhcnNlSW50KHNjcm9sbExlZnQpID09PSBzY3JvbGxXaWR0aCAtIHdpZHRoO1xuICAgIH1cblxuICAgIHVwZGF0ZVNjcm9sbEJhcihpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRhYkhlYWRlciA9IHRoaXMubmF2YmFyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5baW5kZXhdO1xuXG4gICAgICAgIGlmICghdGFiSGVhZGVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0YWJIZWFkZXIuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnLCBpbmxpbmU6ICdjZW50ZXInIH0pO1xuICAgIH1cblxuICAgIG9uU2Nyb2xsKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2Nyb2xsYWJsZSAmJiB0aGlzLnVwZGF0ZUJ1dHRvblN0YXRlKCk7XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBuYXZCYWNrd2FyZCgpIHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCB3aWR0aCA9IERvbUhhbmRsZXIuZ2V0V2lkdGgoY29udGVudCkgLSB0aGlzLmdldFZpc2libGVCdXR0b25XaWR0aHMoKTtcbiAgICAgICAgY29uc3QgcG9zID0gY29udGVudC5zY3JvbGxMZWZ0IC0gd2lkdGg7XG4gICAgICAgIGNvbnRlbnQuc2Nyb2xsTGVmdCA9IHBvcyA8PSAwID8gMCA6IHBvcztcbiAgICB9XG5cbiAgICBuYXZGb3J3YXJkKCkge1xuICAgICAgICBjb25zdCBjb250ZW50ID0gdGhpcy5jb250ZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gRG9tSGFuZGxlci5nZXRXaWR0aChjb250ZW50KSAtIHRoaXMuZ2V0VmlzaWJsZUJ1dHRvbldpZHRocygpO1xuICAgICAgICBjb25zdCBwb3MgPSBjb250ZW50LnNjcm9sbExlZnQgKyB3aWR0aDtcbiAgICAgICAgY29uc3QgbGFzdFBvcyA9IGNvbnRlbnQuc2Nyb2xsV2lkdGggLSB3aWR0aDtcbiAgICAgICAgY29udGVudC5zY3JvbGxMZWZ0ID0gcG9zID49IGxhc3RQb3MgPyBsYXN0UG9zIDogcG9zO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdEF1dG9TY3JvbGxGb3JBY3RpdmVJdGVtKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuc2Nyb2xsYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jbGVhckF1dG9TY3JvbGxIYW5kbGVyKCk7XG4gICAgICAgIC8vIFdlIGhhdmUgdG8gd2FpdCBmb3IgdGhlIHJlbmRlcmluZyBhbmQgdGhlbiBjYW4gc2Nyb2xsIHRvIGVsZW1lbnQuXG4gICAgICAgIHRoaXMudGltZXJJZEZvckluaXRpYWxBdXRvU2Nyb2xsID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhY3RpdmVJdGVtID0gdGhpcy5tb2RlbC5maW5kSW5kZXgoKG1lbnVJdGVtKSA9PiB0aGlzLmlzQWN0aXZlKG1lbnVJdGVtKSk7XG5cbiAgICAgICAgICAgIGlmIChhY3RpdmVJdGVtICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2Nyb2xsQmFyKGFjdGl2ZUl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyQXV0b1Njcm9sbEhhbmRsZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRpbWVySWRGb3JJbml0aWFsQXV0b1Njcm9sbCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXJJZEZvckluaXRpYWxBdXRvU2Nyb2xsKTtcbiAgICAgICAgICAgIHRoaXMudGltZXJJZEZvckluaXRpYWxBdXRvU2Nyb2xsID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdEJ1dHRvblN0YXRlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxhYmxlKSB7XG4gICAgICAgICAgICAvLyBXZSBoYXZlIHRvIHdhaXQgZm9yIHRoZSByZW5kZXJpbmcgYW5kIHRoZW4gcmV0cmlldmUgdGhlIGFjdHVhbCBzaXplIGVsZW1lbnQgZnJvbSB0aGUgRE9NLlxuICAgICAgICAgICAgLy8gaW4gZnV0dXJlIGBQcm9taXNlLnJlc29sdmVgIGNhbiBiZSBjaGFuZ2VkIHRvIGBxdWV1ZU1pY3JvdGFza2AgKGlmIGllMTEgc3VwcG9ydCB3aWxsIGJlIGRyb3BwZWQpXG4gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUJ1dHRvblN0YXRlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJvdXRlck1vZHVsZSwgU2hhcmVkTW9kdWxlLCBSaXBwbGVNb2R1bGUsIFRvb2x0aXBNb2R1bGUsIENoZXZyb25MZWZ0SWNvbiwgQ2hldnJvblJpZ2h0SWNvbl0sXG4gICAgZXhwb3J0czogW1RhYk1lbnUsIFJvdXRlck1vZHVsZSwgU2hhcmVkTW9kdWxlLCBUb29sdGlwTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtUYWJNZW51XVxufSlcbmV4cG9ydCBjbGFzcyBUYWJNZW51TW9kdWxlIHt9XG4iXX0=