@ng-nest/ui 17.0.2 → 17.0.3

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 (486) hide show
  1. package/calendar/calendar.component.d.ts +0 -1
  2. package/carousel/carousel.component.d.ts +0 -1
  3. package/checkbox/checkbox.component.d.ts +0 -1
  4. package/color/color.component.d.ts +0 -1
  5. package/crumb/crumb.component.d.ts +0 -1
  6. package/date-picker/picker-date.component.d.ts +0 -1
  7. package/esm2022/affix/affix.component.mjs +3 -3
  8. package/esm2022/affix/affix.module.mjs +4 -4
  9. package/esm2022/affix/affix.property.mjs +3 -3
  10. package/esm2022/alert/alert.component.mjs +7 -15
  11. package/esm2022/alert/alert.module.mjs +4 -4
  12. package/esm2022/alert/alert.property.mjs +3 -3
  13. package/esm2022/anchor/anchor-inner.component.mjs +3 -3
  14. package/esm2022/anchor/anchor.component.mjs +7 -10
  15. package/esm2022/anchor/anchor.module.mjs +4 -4
  16. package/esm2022/anchor/anchor.property.mjs +6 -6
  17. package/esm2022/api/api.component.mjs +3 -3
  18. package/esm2022/api/api.module.mjs +4 -4
  19. package/esm2022/auto-complete/auto-complete-portal.component.mjs +3 -3
  20. package/esm2022/auto-complete/auto-complete.component.mjs +3 -3
  21. package/esm2022/auto-complete/auto-complete.module.mjs +4 -4
  22. package/esm2022/auto-complete/auto-complete.property.mjs +3 -3
  23. package/esm2022/avatar/avatar-group.component.mjs +3 -3
  24. package/esm2022/avatar/avatar.component.mjs +6 -7
  25. package/esm2022/avatar/avatar.module.mjs +4 -4
  26. package/esm2022/avatar/avatar.property.mjs +6 -6
  27. package/esm2022/back-top/back-top.component.mjs +7 -9
  28. package/esm2022/back-top/back-top.module.mjs +4 -4
  29. package/esm2022/back-top/back-top.property.mjs +3 -3
  30. package/esm2022/badge/badge.component.mjs +6 -7
  31. package/esm2022/badge/badge.module.mjs +5 -5
  32. package/esm2022/badge/badge.property.mjs +3 -3
  33. package/esm2022/base-form/base-form.component.mjs +3 -3
  34. package/esm2022/base-form/base-form.module.mjs +4 -4
  35. package/esm2022/base-form/base-form.property.mjs +3 -3
  36. package/esm2022/border/border.component.mjs +3 -3
  37. package/esm2022/border/border.module.mjs +4 -4
  38. package/esm2022/button/button.component.mjs +6 -7
  39. package/esm2022/button/button.module.mjs +5 -5
  40. package/esm2022/button/button.property.mjs +6 -6
  41. package/esm2022/button/buttons.component.mjs +5 -6
  42. package/esm2022/calendar/calendar.component.mjs +10 -12
  43. package/esm2022/calendar/calendar.module.mjs +4 -4
  44. package/esm2022/calendar/calendar.property.mjs +3 -3
  45. package/esm2022/card/card.component.mjs +6 -7
  46. package/esm2022/card/card.module.mjs +4 -4
  47. package/esm2022/card/card.property.mjs +3 -3
  48. package/esm2022/carousel/carousel-panel.component.mjs +5 -7
  49. package/esm2022/carousel/carousel.component.mjs +6 -10
  50. package/esm2022/carousel/carousel.module.mjs +5 -5
  51. package/esm2022/carousel/carousel.property.mjs +7 -7
  52. package/esm2022/cascade/cascade-portal.component.mjs +6 -8
  53. package/esm2022/cascade/cascade.component.mjs +7 -9
  54. package/esm2022/cascade/cascade.module.mjs +4 -4
  55. package/esm2022/cascade/cascade.property.mjs +3 -3
  56. package/esm2022/checkbox/checkbox.component.mjs +7 -11
  57. package/esm2022/checkbox/checkbox.module.mjs +4 -4
  58. package/esm2022/checkbox/checkbox.property.mjs +3 -3
  59. package/esm2022/collapse/collapse-panel.component.mjs +5 -7
  60. package/esm2022/collapse/collapse.component.mjs +5 -6
  61. package/esm2022/collapse/collapse.module.mjs +5 -5
  62. package/esm2022/collapse/collapse.property.mjs +6 -6
  63. package/esm2022/color/color.component.mjs +6 -10
  64. package/esm2022/color/color.module.mjs +5 -5
  65. package/esm2022/color/color.property.mjs +3 -3
  66. package/esm2022/color-picker/color-picker-portal.component.mjs +6 -14
  67. package/esm2022/color-picker/color-picker.component.mjs +6 -6
  68. package/esm2022/color-picker/color-picker.module.mjs +4 -4
  69. package/esm2022/color-picker/color-picker.property.mjs +3 -3
  70. package/esm2022/comment/comment-reply.component.mjs +5 -6
  71. package/esm2022/comment/comment.component.mjs +5 -8
  72. package/esm2022/comment/comment.module.mjs +4 -4
  73. package/esm2022/comment/comment.property.mjs +6 -6
  74. package/esm2022/container/aside.component.mjs +5 -6
  75. package/esm2022/container/container.component.mjs +5 -6
  76. package/esm2022/container/container.module.mjs +5 -5
  77. package/esm2022/container/container.property.mjs +12 -12
  78. package/esm2022/container/footer.component.mjs +5 -6
  79. package/esm2022/container/header.component.mjs +5 -6
  80. package/esm2022/container/main.component.mjs +5 -6
  81. package/esm2022/core/config/config.service.mjs +3 -3
  82. package/esm2022/core/services/http.service.mjs +3 -3
  83. package/esm2022/core/services/preloading-strategy.service.mjs +3 -3
  84. package/esm2022/core/services/storage.service.mjs +3 -3
  85. package/esm2022/core/theme/theme.service.mjs +3 -3
  86. package/esm2022/crumb/crumb.component.mjs +6 -10
  87. package/esm2022/crumb/crumb.module.mjs +4 -4
  88. package/esm2022/crumb/crumb.property.mjs +3 -3
  89. package/esm2022/date-picker/date-picker-portal.component.mjs +9 -9
  90. package/esm2022/date-picker/date-picker.component.mjs +3 -3
  91. package/esm2022/date-picker/date-picker.module.mjs +4 -4
  92. package/esm2022/date-picker/date-picker.property.mjs +18 -18
  93. package/esm2022/date-picker/date-quarter.pipe.mjs +3 -3
  94. package/esm2022/date-picker/date-range-portal.component.mjs +8 -7
  95. package/esm2022/date-picker/date-range.component.mjs +8 -11
  96. package/esm2022/date-picker/picker-date.component.mjs +6 -10
  97. package/esm2022/date-picker/picker-month.component.mjs +6 -7
  98. package/esm2022/date-picker/picker-quarter.component.mjs +6 -7
  99. package/esm2022/date-picker/picker-year.component.mjs +6 -7
  100. package/esm2022/description/description-item.component.mjs +6 -7
  101. package/esm2022/description/description.component.mjs +6 -7
  102. package/esm2022/description/description.module.mjs +5 -5
  103. package/esm2022/description/description.property.mjs +6 -6
  104. package/esm2022/dialog/dialog-container.component.mjs +6 -7
  105. package/esm2022/dialog/dialog-portal.component.mjs +7 -12
  106. package/esm2022/dialog/dialog-portal.directives.mjs +18 -18
  107. package/esm2022/dialog/dialog.component.mjs +6 -7
  108. package/esm2022/dialog/dialog.module.mjs +5 -6
  109. package/esm2022/dialog/dialog.property.mjs +6 -6
  110. package/esm2022/dialog/dialog.service.mjs +3 -3
  111. package/esm2022/doc/doc.component.mjs +5 -6
  112. package/esm2022/doc/doc.module.mjs +5 -5
  113. package/esm2022/drag/drag.directive.mjs +3 -3
  114. package/esm2022/drag/drag.module.mjs +4 -4
  115. package/esm2022/drag/drag.property.mjs +3 -3
  116. package/esm2022/drawer/drawer-container.component.mjs +6 -7
  117. package/esm2022/drawer/drawer-portal.component.mjs +5 -6
  118. package/esm2022/drawer/drawer-portal.directives.mjs +9 -9
  119. package/esm2022/drawer/drawer.component.mjs +6 -7
  120. package/esm2022/drawer/drawer.module.mjs +5 -6
  121. package/esm2022/drawer/drawer.property.mjs +6 -6
  122. package/esm2022/drawer/drawer.service.mjs +3 -3
  123. package/esm2022/dropdown/dropdown-portal.component.mjs +5 -6
  124. package/esm2022/dropdown/dropdown.component.mjs +9 -20
  125. package/esm2022/dropdown/dropdown.module.mjs +5 -5
  126. package/esm2022/dropdown/dropdown.property.mjs +3 -3
  127. package/esm2022/empty/empty.component.mjs +5 -7
  128. package/esm2022/empty/empty.module.mjs +4 -4
  129. package/esm2022/empty/empty.property.mjs +3 -3
  130. package/esm2022/examples/examples.component.mjs +5 -6
  131. package/esm2022/examples/examples.module.mjs +5 -5
  132. package/esm2022/find/find.component.mjs +8 -12
  133. package/esm2022/find/find.module.mjs +4 -4
  134. package/esm2022/find/find.property.mjs +3 -3
  135. package/esm2022/form/control.component.mjs +7 -10
  136. package/esm2022/form/form.component.mjs +9 -12
  137. package/esm2022/form/form.module.mjs +4 -4
  138. package/esm2022/form/form.property.mjs +6 -6
  139. package/esm2022/highlight/highlight.component.mjs +6 -7
  140. package/esm2022/highlight/highlight.module.mjs +4 -4
  141. package/esm2022/highlight/highlight.property.mjs +3 -3
  142. package/esm2022/i18n/i18n.directive.mjs +3 -3
  143. package/esm2022/i18n/i18n.module.mjs +4 -4
  144. package/esm2022/i18n/i18n.pipe.mjs +3 -3
  145. package/esm2022/i18n/i18n.service.mjs +3 -3
  146. package/esm2022/icon/icon.component.mjs +3 -3
  147. package/esm2022/icon/icon.module.mjs +4 -4
  148. package/esm2022/icon/icon.property.mjs +3 -3
  149. package/esm2022/icon/icon.service.mjs +3 -3
  150. package/esm2022/image/image-group.component.mjs +12 -7
  151. package/esm2022/image/image-preview.component.mjs +7 -8
  152. package/esm2022/image/image.component.mjs +6 -7
  153. package/esm2022/image/image.module.mjs +5 -5
  154. package/esm2022/image/image.property.mjs +6 -6
  155. package/esm2022/inner/inner.component.mjs +5 -6
  156. package/esm2022/inner/inner.module.mjs +5 -5
  157. package/esm2022/inner/inner.property.mjs +3 -3
  158. package/esm2022/input/input-group.component.mjs +5 -6
  159. package/esm2022/input/input.component.mjs +7 -8
  160. package/esm2022/input/input.module.mjs +5 -5
  161. package/esm2022/input/input.property.mjs +6 -6
  162. package/esm2022/input-number/input-number.component.mjs +7 -8
  163. package/esm2022/input-number/input-number.module.mjs +4 -4
  164. package/esm2022/input-number/input-number.property.mjs +3 -3
  165. package/esm2022/keyword/keyword.directive.mjs +3 -3
  166. package/esm2022/keyword/keyword.module.mjs +4 -4
  167. package/esm2022/keyword/keyword.property.mjs +3 -3
  168. package/esm2022/layout/col.component.mjs +3 -3
  169. package/esm2022/layout/layout.module.mjs +4 -4
  170. package/esm2022/layout/layout.property.mjs +6 -6
  171. package/esm2022/layout/row.component.mjs +3 -3
  172. package/esm2022/link/link.component.mjs +6 -7
  173. package/esm2022/link/link.module.mjs +4 -4
  174. package/esm2022/link/link.property.mjs +3 -3
  175. package/esm2022/list/list-drop-group.directive.mjs +3 -3
  176. package/esm2022/list/list-option.component.mjs +6 -7
  177. package/esm2022/list/list.component.mjs +9 -12
  178. package/esm2022/list/list.module.mjs +4 -4
  179. package/esm2022/list/list.property.mjs +6 -6
  180. package/esm2022/loading/loading.component.mjs +6 -7
  181. package/esm2022/loading/loading.module.mjs +4 -4
  182. package/esm2022/loading/loading.property.mjs +3 -3
  183. package/esm2022/menu/menu-node.component.mjs +7 -8
  184. package/esm2022/menu/menu.component.mjs +6 -10
  185. package/esm2022/menu/menu.module.mjs +4 -4
  186. package/esm2022/menu/menu.property.mjs +6 -6
  187. package/esm2022/message/message.component.mjs +5 -10
  188. package/esm2022/message/message.module.mjs +4 -4
  189. package/esm2022/message/message.service.mjs +3 -3
  190. package/esm2022/message-box/message-box.component.mjs +6 -9
  191. package/esm2022/message-box/message-box.module.mjs +4 -4
  192. package/esm2022/message-box/message-box.service.mjs +3 -3
  193. package/esm2022/notification/notification.component.mjs +5 -10
  194. package/esm2022/notification/notification.module.mjs +4 -4
  195. package/esm2022/notification/notification.service.mjs +3 -3
  196. package/esm2022/outlet/outlet.directive.mjs +3 -3
  197. package/esm2022/outlet/outlet.module.mjs +4 -4
  198. package/esm2022/page-header/page-header.component.mjs +5 -7
  199. package/esm2022/page-header/page-header.module.mjs +4 -4
  200. package/esm2022/page-header/page-header.property.mjs +3 -3
  201. package/esm2022/pagination/pagination.component.mjs +6 -12
  202. package/esm2022/pagination/pagination.module.mjs +4 -4
  203. package/esm2022/pagination/pagination.property.mjs +3 -3
  204. package/esm2022/pattern/pattern.component.mjs +5 -6
  205. package/esm2022/pattern/pattern.module.mjs +5 -5
  206. package/esm2022/popconfirm/popconfirm.component.mjs +5 -7
  207. package/esm2022/popconfirm/popconfirm.module.mjs +4 -4
  208. package/esm2022/popconfirm/popconfirm.property.mjs +3 -3
  209. package/esm2022/popover/popover-portal.component.mjs +6 -7
  210. package/esm2022/popover/popover.directive.mjs +3 -3
  211. package/esm2022/popover/popover.module.mjs +4 -4
  212. package/esm2022/popover/popover.property.mjs +3 -3
  213. package/esm2022/portal/portal.module.mjs +4 -4
  214. package/esm2022/portal/portal.service.mjs +3 -3
  215. package/esm2022/progress/progress.component.mjs +6 -7
  216. package/esm2022/progress/progress.module.mjs +4 -4
  217. package/esm2022/progress/progress.property.mjs +3 -3
  218. package/esm2022/radio/radio.component.mjs +6 -10
  219. package/esm2022/radio/radio.module.mjs +4 -4
  220. package/esm2022/radio/radio.property.mjs +3 -3
  221. package/esm2022/rate/rate.component.mjs +6 -7
  222. package/esm2022/rate/rate.module.mjs +4 -4
  223. package/esm2022/rate/rate.property.mjs +3 -3
  224. package/esm2022/resizable/resizable.directive.mjs +3 -3
  225. package/esm2022/resizable/resizable.module.mjs +4 -4
  226. package/esm2022/resizable/resizable.property.mjs +3 -3
  227. package/esm2022/result/result.component.mjs +6 -7
  228. package/esm2022/result/result.module.mjs +4 -4
  229. package/esm2022/result/result.property.mjs +3 -3
  230. package/esm2022/ripple/ripple.directive.mjs +3 -3
  231. package/esm2022/ripple/ripple.module.mjs +4 -4
  232. package/esm2022/ripple/ripple.property.mjs +3 -3
  233. package/esm2022/select/select-portal.component.mjs +5 -6
  234. package/esm2022/select/select.component.mjs +7 -8
  235. package/esm2022/select/select.module.mjs +4 -4
  236. package/esm2022/select/select.property.mjs +3 -3
  237. package/esm2022/skeleton/skeleton.component.mjs +6 -7
  238. package/esm2022/skeleton/skeleton.module.mjs +4 -4
  239. package/esm2022/skeleton/skeleton.property.mjs +3 -3
  240. package/esm2022/slider/slider.component.mjs +6 -10
  241. package/esm2022/slider/slider.module.mjs +4 -4
  242. package/esm2022/slider/slider.property.mjs +3 -3
  243. package/esm2022/slider-select/slider-select.component.mjs +9 -9
  244. package/esm2022/slider-select/slider-select.module.mjs +4 -4
  245. package/esm2022/slider-select/slider-select.property.mjs +3 -3
  246. package/esm2022/statistic/countdown.component.mjs +3 -3
  247. package/esm2022/statistic/statistic.component.mjs +6 -7
  248. package/esm2022/statistic/statistic.module.mjs +5 -5
  249. package/esm2022/statistic/statistic.property.mjs +6 -6
  250. package/esm2022/steps/steps.component.mjs +6 -10
  251. package/esm2022/steps/steps.module.mjs +4 -4
  252. package/esm2022/steps/steps.property.mjs +3 -3
  253. package/esm2022/switch/switch.component.mjs +6 -7
  254. package/esm2022/switch/switch.module.mjs +4 -4
  255. package/esm2022/switch/switch.property.mjs +3 -3
  256. package/esm2022/table/table-body.component.mjs +10 -10
  257. package/esm2022/table/table-foot.component.mjs +5 -6
  258. package/esm2022/table/table-head.component.mjs +11 -13
  259. package/esm2022/table/table.component.mjs +7 -8
  260. package/esm2022/table/table.module.mjs +5 -5
  261. package/esm2022/table/table.property.mjs +12 -12
  262. package/esm2022/tabs/tab-content.component.mjs +6 -7
  263. package/esm2022/tabs/tab-link.directive.mjs +6 -6
  264. package/esm2022/tabs/tab.component.mjs +5 -6
  265. package/esm2022/tabs/tabs.component.mjs +6 -7
  266. package/esm2022/tabs/tabs.module.mjs +5 -5
  267. package/esm2022/tabs/tabs.property.mjs +6 -6
  268. package/esm2022/tag/tag.component.mjs +6 -7
  269. package/esm2022/tag/tag.module.mjs +4 -4
  270. package/esm2022/tag/tag.property.mjs +3 -3
  271. package/esm2022/text-retract/text-retract.component.mjs +5 -7
  272. package/esm2022/text-retract/text-retract.module.mjs +4 -4
  273. package/esm2022/text-retract/text-retract.property.mjs +3 -3
  274. package/esm2022/textarea/textarea.component.mjs +7 -8
  275. package/esm2022/textarea/textarea.module.mjs +4 -4
  276. package/esm2022/textarea/textarea.property.mjs +3 -3
  277. package/esm2022/theme/theme.component.mjs +6 -9
  278. package/esm2022/theme/theme.module.mjs +4 -4
  279. package/esm2022/theme/theme.property.mjs +3 -3
  280. package/esm2022/time-ago/time-ago.module.mjs +4 -4
  281. package/esm2022/time-ago/time-ago.pipe.mjs +3 -3
  282. package/esm2022/time-picker/time-picker-frame.component.mjs +6 -8
  283. package/esm2022/time-picker/time-picker-portal.component.mjs +5 -7
  284. package/esm2022/time-picker/time-picker.component.mjs +3 -3
  285. package/esm2022/time-picker/time-picker.module.mjs +4 -4
  286. package/esm2022/time-picker/time-picker.property.mjs +3 -3
  287. package/esm2022/time-range/time-range.module.mjs +4 -4
  288. package/esm2022/time-range/time-range.pipe.mjs +3 -3
  289. package/esm2022/timeline/timeline.component.mjs +6 -7
  290. package/esm2022/timeline/timeline.module.mjs +4 -4
  291. package/esm2022/timeline/timeline.property.mjs +3 -3
  292. package/esm2022/tooltip/tooltip-portal.component.mjs +6 -7
  293. package/esm2022/tooltip/tooltip.directive.mjs +3 -3
  294. package/esm2022/tooltip/tooltip.module.mjs +4 -4
  295. package/esm2022/tooltip/tooltip.property.mjs +3 -3
  296. package/esm2022/transfer/transfer.component.mjs +11 -10
  297. package/esm2022/transfer/transfer.module.mjs +4 -4
  298. package/esm2022/transfer/transfer.property.mjs +3 -3
  299. package/esm2022/tree/tree-node.component.mjs +8 -9
  300. package/esm2022/tree/tree.component.mjs +7 -9
  301. package/esm2022/tree/tree.module.mjs +4 -4
  302. package/esm2022/tree/tree.property.mjs +6 -6
  303. package/esm2022/tree/tree.service.mjs +3 -3
  304. package/esm2022/tree-file/tree-file.component.mjs +7 -8
  305. package/esm2022/tree-file/tree-file.module.mjs +4 -4
  306. package/esm2022/tree-file/tree-file.property.mjs +3 -3
  307. package/esm2022/tree-select/tree-select-portal.component.mjs +5 -7
  308. package/esm2022/tree-select/tree-select.component.mjs +7 -8
  309. package/esm2022/tree-select/tree-select.module.mjs +4 -4
  310. package/esm2022/tree-select/tree-select.property.mjs +3 -3
  311. package/esm2022/typography/typography.component.mjs +3 -3
  312. package/esm2022/typography/typography.module.mjs +4 -4
  313. package/esm2022/typography/typography.property.mjs +3 -3
  314. package/esm2022/upload/upload-portal.component.mjs +6 -6
  315. package/esm2022/upload/upload.component.mjs +7 -11
  316. package/esm2022/upload/upload.module.mjs +4 -4
  317. package/esm2022/upload/upload.property.mjs +3 -3
  318. package/fesm2022/ng-nest-ui-affix.mjs +10 -10
  319. package/fesm2022/ng-nest-ui-alert.mjs +13 -21
  320. package/fesm2022/ng-nest-ui-alert.mjs.map +1 -1
  321. package/fesm2022/ng-nest-ui-anchor.mjs +19 -22
  322. package/fesm2022/ng-nest-ui-anchor.mjs.map +1 -1
  323. package/fesm2022/ng-nest-ui-api.mjs +7 -7
  324. package/fesm2022/ng-nest-ui-auto-complete.mjs +13 -13
  325. package/fesm2022/ng-nest-ui-avatar.mjs +18 -19
  326. package/fesm2022/ng-nest-ui-avatar.mjs.map +1 -1
  327. package/fesm2022/ng-nest-ui-back-top.mjs +13 -15
  328. package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
  329. package/fesm2022/ng-nest-ui-badge.mjs +12 -13
  330. package/fesm2022/ng-nest-ui-badge.mjs.map +1 -1
  331. package/fesm2022/ng-nest-ui-base-form.mjs +10 -10
  332. package/fesm2022/ng-nest-ui-border.mjs +7 -7
  333. package/fesm2022/ng-nest-ui-button.mjs +19 -20
  334. package/fesm2022/ng-nest-ui-button.mjs.map +1 -1
  335. package/fesm2022/ng-nest-ui-calendar.mjs +16 -18
  336. package/fesm2022/ng-nest-ui-calendar.mjs.map +1 -1
  337. package/fesm2022/ng-nest-ui-card.mjs +12 -13
  338. package/fesm2022/ng-nest-ui-card.mjs.map +1 -1
  339. package/fesm2022/ng-nest-ui-carousel.mjs +19 -23
  340. package/fesm2022/ng-nest-ui-carousel.mjs.map +1 -1
  341. package/fesm2022/ng-nest-ui-cascade.mjs +18 -21
  342. package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
  343. package/fesm2022/ng-nest-ui-checkbox.mjs +13 -17
  344. package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
  345. package/fesm2022/ng-nest-ui-collapse.mjs +18 -20
  346. package/fesm2022/ng-nest-ui-collapse.mjs.map +1 -1
  347. package/fesm2022/ng-nest-ui-color-picker.mjs +16 -24
  348. package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
  349. package/fesm2022/ng-nest-ui-color.mjs +12 -16
  350. package/fesm2022/ng-nest-ui-color.mjs.map +1 -1
  351. package/fesm2022/ng-nest-ui-comment.mjs +18 -21
  352. package/fesm2022/ng-nest-ui-comment.mjs.map +1 -1
  353. package/fesm2022/ng-nest-ui-container.mjs +36 -37
  354. package/fesm2022/ng-nest-ui-container.mjs.map +1 -1
  355. package/fesm2022/ng-nest-ui-core.mjs +15 -15
  356. package/fesm2022/ng-nest-ui-crumb.mjs +12 -16
  357. package/fesm2022/ng-nest-ui-crumb.mjs.map +1 -1
  358. package/fesm2022/ng-nest-ui-date-picker.mjs +66 -69
  359. package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
  360. package/fesm2022/ng-nest-ui-description.mjs +20 -21
  361. package/fesm2022/ng-nest-ui-description.mjs.map +1 -1
  362. package/fesm2022/ng-nest-ui-dialog.mjs +48 -54
  363. package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
  364. package/fesm2022/ng-nest-ui-doc.mjs +8 -9
  365. package/fesm2022/ng-nest-ui-doc.mjs.map +1 -1
  366. package/fesm2022/ng-nest-ui-drag.mjs +10 -10
  367. package/fesm2022/ng-nest-ui-drawer.mjs +37 -39
  368. package/fesm2022/ng-nest-ui-drawer.mjs.map +1 -1
  369. package/fesm2022/ng-nest-ui-dropdown.mjs +19 -30
  370. package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
  371. package/fesm2022/ng-nest-ui-empty.mjs +11 -13
  372. package/fesm2022/ng-nest-ui-empty.mjs.map +1 -1
  373. package/fesm2022/ng-nest-ui-examples.mjs +8 -9
  374. package/fesm2022/ng-nest-ui-examples.mjs.map +1 -1
  375. package/fesm2022/ng-nest-ui-find.mjs +14 -18
  376. package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
  377. package/fesm2022/ng-nest-ui-form.mjs +23 -27
  378. package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
  379. package/fesm2022/ng-nest-ui-highlight.mjs +12 -13
  380. package/fesm2022/ng-nest-ui-highlight.mjs.map +1 -1
  381. package/fesm2022/ng-nest-ui-i18n.mjs +13 -13
  382. package/fesm2022/ng-nest-ui-icon.mjs +13 -13
  383. package/fesm2022/ng-nest-ui-image.mjs +31 -26
  384. package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
  385. package/fesm2022/ng-nest-ui-inner.mjs +11 -12
  386. package/fesm2022/ng-nest-ui-inner.mjs.map +1 -1
  387. package/fesm2022/ng-nest-ui-input-number.mjs +13 -14
  388. package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
  389. package/fesm2022/ng-nest-ui-input.mjs +20 -21
  390. package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
  391. package/fesm2022/ng-nest-ui-keyword.mjs +10 -10
  392. package/fesm2022/ng-nest-ui-layout.mjs +16 -16
  393. package/fesm2022/ng-nest-ui-link.mjs +12 -13
  394. package/fesm2022/ng-nest-ui-link.mjs.map +1 -1
  395. package/fesm2022/ng-nest-ui-list.mjs +26 -28
  396. package/fesm2022/ng-nest-ui-list.mjs.map +1 -1
  397. package/fesm2022/ng-nest-ui-loading.mjs +12 -13
  398. package/fesm2022/ng-nest-ui-loading.mjs.map +1 -1
  399. package/fesm2022/ng-nest-ui-menu.mjs +20 -24
  400. package/fesm2022/ng-nest-ui-menu.mjs.map +1 -1
  401. package/fesm2022/ng-nest-ui-message-box.mjs +12 -15
  402. package/fesm2022/ng-nest-ui-message-box.mjs.map +1 -1
  403. package/fesm2022/ng-nest-ui-message.mjs +11 -16
  404. package/fesm2022/ng-nest-ui-message.mjs.map +1 -1
  405. package/fesm2022/ng-nest-ui-notification.mjs +11 -16
  406. package/fesm2022/ng-nest-ui-notification.mjs.map +1 -1
  407. package/fesm2022/ng-nest-ui-outlet.mjs +7 -7
  408. package/fesm2022/ng-nest-ui-page-header.mjs +11 -13
  409. package/fesm2022/ng-nest-ui-page-header.mjs.map +1 -1
  410. package/fesm2022/ng-nest-ui-pagination.mjs +12 -18
  411. package/fesm2022/ng-nest-ui-pagination.mjs.map +1 -1
  412. package/fesm2022/ng-nest-ui-pattern.mjs +8 -9
  413. package/fesm2022/ng-nest-ui-pattern.mjs.map +1 -1
  414. package/fesm2022/ng-nest-ui-popconfirm.mjs +11 -13
  415. package/fesm2022/ng-nest-ui-popconfirm.mjs.map +1 -1
  416. package/fesm2022/ng-nest-ui-popover.mjs +15 -16
  417. package/fesm2022/ng-nest-ui-popover.mjs.map +1 -1
  418. package/fesm2022/ng-nest-ui-portal.mjs +7 -7
  419. package/fesm2022/ng-nest-ui-progress.mjs +12 -13
  420. package/fesm2022/ng-nest-ui-progress.mjs.map +1 -1
  421. package/fesm2022/ng-nest-ui-radio.mjs +12 -16
  422. package/fesm2022/ng-nest-ui-radio.mjs.map +1 -1
  423. package/fesm2022/ng-nest-ui-rate.mjs +12 -13
  424. package/fesm2022/ng-nest-ui-rate.mjs.map +1 -1
  425. package/fesm2022/ng-nest-ui-resizable.mjs +10 -10
  426. package/fesm2022/ng-nest-ui-result.mjs +12 -13
  427. package/fesm2022/ng-nest-ui-result.mjs.map +1 -1
  428. package/fesm2022/ng-nest-ui-ripple.mjs +10 -10
  429. package/fesm2022/ng-nest-ui-select.mjs +17 -18
  430. package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
  431. package/fesm2022/ng-nest-ui-skeleton.mjs +12 -13
  432. package/fesm2022/ng-nest-ui-skeleton.mjs.map +1 -1
  433. package/fesm2022/ng-nest-ui-slider-select.mjs +15 -15
  434. package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
  435. package/fesm2022/ng-nest-ui-slider.mjs +12 -16
  436. package/fesm2022/ng-nest-ui-slider.mjs.map +1 -1
  437. package/fesm2022/ng-nest-ui-statistic.mjs +18 -19
  438. package/fesm2022/ng-nest-ui-statistic.mjs.map +1 -1
  439. package/fesm2022/ng-nest-ui-steps.mjs +12 -16
  440. package/fesm2022/ng-nest-ui-steps.mjs.map +1 -1
  441. package/fesm2022/ng-nest-ui-switch.mjs +12 -13
  442. package/fesm2022/ng-nest-ui-switch.mjs.map +1 -1
  443. package/fesm2022/ng-nest-ui-table.mjs +45 -46
  444. package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
  445. package/fesm2022/ng-nest-ui-tabs.mjs +29 -30
  446. package/fesm2022/ng-nest-ui-tabs.mjs.map +1 -1
  447. package/fesm2022/ng-nest-ui-tag.mjs +12 -13
  448. package/fesm2022/ng-nest-ui-tag.mjs.map +1 -1
  449. package/fesm2022/ng-nest-ui-text-retract.mjs +11 -13
  450. package/fesm2022/ng-nest-ui-text-retract.mjs.map +1 -1
  451. package/fesm2022/ng-nest-ui-textarea.mjs +13 -14
  452. package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
  453. package/fesm2022/ng-nest-ui-theme.mjs +12 -15
  454. package/fesm2022/ng-nest-ui-theme.mjs.map +1 -1
  455. package/fesm2022/ng-nest-ui-time-ago.mjs +7 -7
  456. package/fesm2022/ng-nest-ui-time-picker.mjs +20 -21
  457. package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
  458. package/fesm2022/ng-nest-ui-time-range.mjs +7 -7
  459. package/fesm2022/ng-nest-ui-timeline.mjs +12 -13
  460. package/fesm2022/ng-nest-ui-timeline.mjs.map +1 -1
  461. package/fesm2022/ng-nest-ui-tooltip.mjs +15 -16
  462. package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
  463. package/fesm2022/ng-nest-ui-transfer.mjs +17 -16
  464. package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
  465. package/fesm2022/ng-nest-ui-tree-file.mjs +13 -14
  466. package/fesm2022/ng-nest-ui-tree-file.mjs.map +1 -1
  467. package/fesm2022/ng-nest-ui-tree-select.mjs +17 -18
  468. package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
  469. package/fesm2022/ng-nest-ui-tree.mjs +26 -27
  470. package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
  471. package/fesm2022/ng-nest-ui-typography.mjs +10 -10
  472. package/fesm2022/ng-nest-ui-upload.mjs +17 -21
  473. package/fesm2022/ng-nest-ui-upload.mjs.map +1 -1
  474. package/find/find.component.d.ts +0 -1
  475. package/form/form.component.d.ts +1 -2
  476. package/image/image-group.component.d.ts +2 -0
  477. package/menu/menu.component.d.ts +0 -1
  478. package/message/message.component.d.ts +0 -1
  479. package/notification/notification.component.d.ts +0 -1
  480. package/package.json +59 -59
  481. package/pagination/pagination.component.d.ts +0 -1
  482. package/radio/radio.component.d.ts +0 -1
  483. package/slider/slider.component.d.ts +0 -1
  484. package/steps/steps.component.d.ts +0 -1
  485. package/table/table-head.component.d.ts +0 -1
  486. package/upload/upload.component.d.ts +1 -2
@@ -1,11 +1,10 @@
1
1
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostBinding, ViewEncapsulation, inject } from '@angular/core';
2
2
  import { XListOptionPrefix, XListOptionProperty } from './list.property';
3
3
  import { XClearClass, XConfigService, XIsChange } from '@ng-nest/ui/core';
4
- import { CommonModule } from '@angular/common';
5
4
  import { XIconComponent } from '@ng-nest/ui/icon';
6
5
  import { XKeywordDirective } from '@ng-nest/ui/keyword';
6
+ import { NgClass, NgTemplateOutlet } from '@angular/common';
7
7
  import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/common";
9
8
  export class XListOptionComponent extends XListOptionProperty {
10
9
  constructor() {
11
10
  super(...arguments);
@@ -42,14 +41,14 @@ export class XListOptionComponent extends XListOptionProperty {
42
41
  getLabel() {
43
42
  return this.label;
44
43
  }
45
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: XListOptionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
46
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: XListOptionComponent, isStandalone: true, selector: "x-list-option", host: { properties: { "attr.role": "this.role" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\r\n class=\"x-list-option\"\r\n [ngClass]=\"classMap\"\r\n [class.x-selected]=\"selected\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-open-portal]=\"node?.openPortal\"\r\n [class.x-active]=\"active\"\r\n [class.x-list-icon]=\"icon\"\r\n [class.x-list-divided]=\"divided\"\r\n>\r\n <div class=\"x-list-option-content\">\r\n <ng-container *ngIf=\"!nodeTpl\">\r\n <x-icon [type]=\"icon\" *ngIf=\"icon\"></x-icon>\r\n <span x-keyword [text]=\"keywordText\" [caseSensitive]=\"caseSensitive\">{{ label }}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"nodeTpl\">\r\n <ng-template *ngTemplateOutlet=\"nodeTpl; context: { $node: node }\"></ng-template>\r\n </ng-container>\r\n </div>\r\n <x-icon class=\"x-list-leaf\" type=\"fto-chevron-right\" *ngIf=\"leaf\"></x-icon>\r\n <x-icon class=\"x-list-checked\" type=\"fto-check\" *ngIf=\"checked && !leaf && selected\"></x-icon>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-list-option{display:block}.x-list-option{border-radius:var(--x-border-radius);display:flex;align-items:center;justify-content:space-between;border:.0625rem dashed transparent;transition:border-color var(--x-animation-duration-base),background-color var(--x-animation-duration-base),color var(--x-animation-duration-base)}.x-list-option-content{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none;-webkit-user-select:none;user-select:none;display:inline-block}.x-list-option:not(:first-child){margin-top:var(--x-border-width)}.x-list-option:hover:not(.x-disabled),.x-list-option.x-active:not(.x-disabled){background-color:var(--x-background-a200)}.x-list-option.x-list-divided{margin-top:.8125rem}.x-list-option.x-list-divided:before{content:\" \";position:absolute;top:0;left:0;width:100%;margin-top:-.5rem;border-top:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-list-option.x-selected:not(.x-disabled){background-color:var(--x-background-a400);color:var(--x-primary)}.x-list-option.x-selected:not(.x-disabled)>x-icon{color:var(--x-primary)}.x-list-option.x-disabled{color:var(--x-text-500);cursor:not-allowed}.x-list-option.x-disabled:hover{background-color:inherit}.x-list-option.x-disabled>span x-icon{color:var(--x-text-500)}.x-list-option-big{padding:0 var(--x-padding-big);height:var(--x-height-big);line-height:var(--x-height-big)}.x-list-option-large{padding:0 var(--x-padding-large);height:var(--x-height-large);line-height:var(--x-height-large)}.x-list-option-medium{padding:0 var(--x-padding-medium);height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-list-option-small{padding:0 var(--x-padding-small);height:var(--x-height-small);line-height:var(--x-height-small)}.x-list-option-mini{padding:0 var(--x-padding-mini);height:var(--x-height-mini);line-height:var(--x-height-mini)}body>x-list-option{display:block}body>x-list-option.cdk-drag-preview .x-list-option{border-radius:var(--x-border-radius);display:flex;align-items:center;justify-content:space-between;border:.0625rem dashed transparent;border-color:var(--x-border);color:var(--x-text-400);background-color:var(--x-background-a100);opacity:.9}body>x-list-option.cdk-drag-animating{transition:transform var(--x-animation-duration-base) cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: XIconComponent, selector: "x-icon" }, { kind: "directive", type: XKeywordDirective, selector: "[x-keyword]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
44
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: XListOptionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
45
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.7", type: XListOptionComponent, isStandalone: true, selector: "x-list-option", host: { properties: { "attr.role": "this.role" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\r\n class=\"x-list-option\"\r\n [ngClass]=\"classMap\"\r\n [class.x-selected]=\"selected\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-open-portal]=\"node?.openPortal\"\r\n [class.x-active]=\"active\"\r\n [class.x-list-icon]=\"icon\"\r\n [class.x-list-divided]=\"divided\"\r\n>\r\n <div class=\"x-list-option-content\">\r\n @if (nodeTpl) {\r\n <ng-template *ngTemplateOutlet=\"nodeTpl; context: { $node: node }\"></ng-template>\r\n } @else {\r\n @if (icon) {\r\n <x-icon [type]=\"icon\"></x-icon>\r\n }\r\n <span x-keyword [text]=\"keywordText\" [caseSensitive]=\"caseSensitive\">{{ label }}</span>\r\n }\r\n </div>\r\n @if (leaf) {\r\n <x-icon class=\"x-list-leaf\" type=\"fto-chevron-right\"></x-icon>\r\n }\r\n @if (checked && !leaf && selected) {\r\n <x-icon class=\"x-list-checked\" type=\"fto-check\"></x-icon>\r\n }\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-list-option{display:block}.x-list-option{border-radius:var(--x-border-radius);display:flex;align-items:center;justify-content:space-between;border:.0625rem dashed transparent;transition:border-color var(--x-animation-duration-base),background-color var(--x-animation-duration-base),color var(--x-animation-duration-base)}.x-list-option-content{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none;-webkit-user-select:none;user-select:none;display:inline-block}.x-list-option:not(:first-child){margin-top:var(--x-border-width)}.x-list-option:hover:not(.x-disabled),.x-list-option.x-active:not(.x-disabled){background-color:var(--x-background-a200)}.x-list-option.x-list-divided{margin-top:.8125rem}.x-list-option.x-list-divided:before{content:\" \";position:absolute;top:0;left:0;width:100%;margin-top:-.5rem;border-top:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-list-option.x-selected:not(.x-disabled){background-color:var(--x-background-a400);color:var(--x-primary)}.x-list-option.x-selected:not(.x-disabled)>x-icon{color:var(--x-primary)}.x-list-option.x-disabled{color:var(--x-text-500);cursor:not-allowed}.x-list-option.x-disabled:hover{background-color:inherit}.x-list-option.x-disabled>span x-icon{color:var(--x-text-500)}.x-list-option-big{padding:0 var(--x-padding-big);height:var(--x-height-big);line-height:var(--x-height-big)}.x-list-option-large{padding:0 var(--x-padding-large);height:var(--x-height-large);line-height:var(--x-height-large)}.x-list-option-medium{padding:0 var(--x-padding-medium);height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-list-option-small{padding:0 var(--x-padding-small);height:var(--x-height-small);line-height:var(--x-height-small)}.x-list-option-mini{padding:0 var(--x-padding-mini);height:var(--x-height-mini);line-height:var(--x-height-mini)}body>x-list-option{display:block}body>x-list-option.cdk-drag-preview .x-list-option{border-radius:var(--x-border-radius);display:flex;align-items:center;justify-content:space-between;border:.0625rem dashed transparent;border-color:var(--x-border);color:var(--x-text-400);background-color:var(--x-background-a100);opacity:.9}body>x-list-option.cdk-drag-animating{transition:transform var(--x-animation-duration-base) cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: XIconComponent, selector: "x-icon" }, { kind: "directive", type: XKeywordDirective, selector: "[x-keyword]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
47
46
  }
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: XListOptionComponent, decorators: [{
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: XListOptionComponent, decorators: [{
49
48
  type: Component,
50
- args: [{ selector: `${XListOptionPrefix}`, standalone: true, imports: [CommonModule, XIconComponent, XKeywordDirective], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"x-list-option\"\r\n [ngClass]=\"classMap\"\r\n [class.x-selected]=\"selected\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-open-portal]=\"node?.openPortal\"\r\n [class.x-active]=\"active\"\r\n [class.x-list-icon]=\"icon\"\r\n [class.x-list-divided]=\"divided\"\r\n>\r\n <div class=\"x-list-option-content\">\r\n <ng-container *ngIf=\"!nodeTpl\">\r\n <x-icon [type]=\"icon\" *ngIf=\"icon\"></x-icon>\r\n <span x-keyword [text]=\"keywordText\" [caseSensitive]=\"caseSensitive\">{{ label }}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"nodeTpl\">\r\n <ng-template *ngTemplateOutlet=\"nodeTpl; context: { $node: node }\"></ng-template>\r\n </ng-container>\r\n </div>\r\n <x-icon class=\"x-list-leaf\" type=\"fto-chevron-right\" *ngIf=\"leaf\"></x-icon>\r\n <x-icon class=\"x-list-checked\" type=\"fto-check\" *ngIf=\"checked && !leaf && selected\"></x-icon>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-list-option{display:block}.x-list-option{border-radius:var(--x-border-radius);display:flex;align-items:center;justify-content:space-between;border:.0625rem dashed transparent;transition:border-color var(--x-animation-duration-base),background-color var(--x-animation-duration-base),color var(--x-animation-duration-base)}.x-list-option-content{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none;-webkit-user-select:none;user-select:none;display:inline-block}.x-list-option:not(:first-child){margin-top:var(--x-border-width)}.x-list-option:hover:not(.x-disabled),.x-list-option.x-active:not(.x-disabled){background-color:var(--x-background-a200)}.x-list-option.x-list-divided{margin-top:.8125rem}.x-list-option.x-list-divided:before{content:\" \";position:absolute;top:0;left:0;width:100%;margin-top:-.5rem;border-top:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-list-option.x-selected:not(.x-disabled){background-color:var(--x-background-a400);color:var(--x-primary)}.x-list-option.x-selected:not(.x-disabled)>x-icon{color:var(--x-primary)}.x-list-option.x-disabled{color:var(--x-text-500);cursor:not-allowed}.x-list-option.x-disabled:hover{background-color:inherit}.x-list-option.x-disabled>span x-icon{color:var(--x-text-500)}.x-list-option-big{padding:0 var(--x-padding-big);height:var(--x-height-big);line-height:var(--x-height-big)}.x-list-option-large{padding:0 var(--x-padding-large);height:var(--x-height-large);line-height:var(--x-height-large)}.x-list-option-medium{padding:0 var(--x-padding-medium);height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-list-option-small{padding:0 var(--x-padding-small);height:var(--x-height-small);line-height:var(--x-height-small)}.x-list-option-mini{padding:0 var(--x-padding-mini);height:var(--x-height-mini);line-height:var(--x-height-mini)}body>x-list-option{display:block}body>x-list-option.cdk-drag-preview .x-list-option{border-radius:var(--x-border-radius);display:flex;align-items:center;justify-content:space-between;border:.0625rem dashed transparent;border-color:var(--x-border);color:var(--x-text-400);background-color:var(--x-background-a100);opacity:.9}body>x-list-option.cdk-drag-animating{transition:transform var(--x-animation-duration-base) cubic-bezier(0,0,.2,1)}\n"] }]
49
+ args: [{ selector: `${XListOptionPrefix}`, standalone: true, imports: [NgClass, NgTemplateOutlet, XIconComponent, XKeywordDirective], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"x-list-option\"\r\n [ngClass]=\"classMap\"\r\n [class.x-selected]=\"selected\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-open-portal]=\"node?.openPortal\"\r\n [class.x-active]=\"active\"\r\n [class.x-list-icon]=\"icon\"\r\n [class.x-list-divided]=\"divided\"\r\n>\r\n <div class=\"x-list-option-content\">\r\n @if (nodeTpl) {\r\n <ng-template *ngTemplateOutlet=\"nodeTpl; context: { $node: node }\"></ng-template>\r\n } @else {\r\n @if (icon) {\r\n <x-icon [type]=\"icon\"></x-icon>\r\n }\r\n <span x-keyword [text]=\"keywordText\" [caseSensitive]=\"caseSensitive\">{{ label }}</span>\r\n }\r\n </div>\r\n @if (leaf) {\r\n <x-icon class=\"x-list-leaf\" type=\"fto-chevron-right\"></x-icon>\r\n }\r\n @if (checked && !leaf && selected) {\r\n <x-icon class=\"x-list-checked\" type=\"fto-check\"></x-icon>\r\n }\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-list-option{display:block}.x-list-option{border-radius:var(--x-border-radius);display:flex;align-items:center;justify-content:space-between;border:.0625rem dashed transparent;transition:border-color var(--x-animation-duration-base),background-color var(--x-animation-duration-base),color var(--x-animation-duration-base)}.x-list-option-content{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none;-webkit-user-select:none;user-select:none;display:inline-block}.x-list-option:not(:first-child){margin-top:var(--x-border-width)}.x-list-option:hover:not(.x-disabled),.x-list-option.x-active:not(.x-disabled){background-color:var(--x-background-a200)}.x-list-option.x-list-divided{margin-top:.8125rem}.x-list-option.x-list-divided:before{content:\" \";position:absolute;top:0;left:0;width:100%;margin-top:-.5rem;border-top:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-list-option.x-selected:not(.x-disabled){background-color:var(--x-background-a400);color:var(--x-primary)}.x-list-option.x-selected:not(.x-disabled)>x-icon{color:var(--x-primary)}.x-list-option.x-disabled{color:var(--x-text-500);cursor:not-allowed}.x-list-option.x-disabled:hover{background-color:inherit}.x-list-option.x-disabled>span x-icon{color:var(--x-text-500)}.x-list-option-big{padding:0 var(--x-padding-big);height:var(--x-height-big);line-height:var(--x-height-big)}.x-list-option-large{padding:0 var(--x-padding-large);height:var(--x-height-large);line-height:var(--x-height-large)}.x-list-option-medium{padding:0 var(--x-padding-medium);height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-list-option-small{padding:0 var(--x-padding-small);height:var(--x-height-small);line-height:var(--x-height-small)}.x-list-option-mini{padding:0 var(--x-padding-mini);height:var(--x-height-mini);line-height:var(--x-height-mini)}body>x-list-option{display:block}body>x-list-option.cdk-drag-preview .x-list-option{border-radius:var(--x-border-radius);display:flex;align-items:center;justify-content:space-between;border:.0625rem dashed transparent;border-color:var(--x-border);color:var(--x-text-400);background-color:var(--x-background-a100);opacity:.9}body>x-list-option.cdk-drag-animating{transition:transform var(--x-animation-duration-base) cubic-bezier(0,0,.2,1)}\n"] }]
51
50
  }], propDecorators: { role: [{
52
51
  type: HostBinding,
53
52
  args: ['attr.role']
54
53
  }] } });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1vcHRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvbGlzdC9saXN0LW9wdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9saXN0L2xpc3Qtb3B0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUlYLGlCQUFpQixFQUNqQixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekUsT0FBTyxFQUFhLFdBQVcsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBV3hELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxtQkFBbUI7SUFUN0Q7O1FBVTRCLFNBQUksR0FBRyxRQUFRLENBQUM7UUFDMUMsYUFBUSxHQUFjLEVBQUUsQ0FBQztRQUNqQixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDeEMsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztLQWlDeEM7SUEvQkMsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLElBQUk7WUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDM0IsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQ3pCLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELFdBQVc7UUFDVCxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNoRixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFDRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQWUsQ0FBQztJQUM5QixDQUFDO2lJQXJDVSxvQkFBb0I7cUhBQXBCLG9CQUFvQix5S0M1QmpDLDA2QkFzQkEsaTBFREFZLFlBQVksd1lBQUUsY0FBYyxtREFBRSxpQkFBaUI7OzJGQU05QyxvQkFBb0I7a0JBVGhDLFNBQVM7K0JBQ0UsR0FBRyxpQkFBaUIsRUFBRSxjQUNwQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixDQUFDLGlCQUczQyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNOzhCQUdyQixJQUFJO3NCQUE3QixXQUFXO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBpbmplY3RcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWExpc3RPcHRpb25QcmVmaXgsIFhMaXN0T3B0aW9uUHJvcGVydHkgfSBmcm9tICcuL2xpc3QucHJvcGVydHknO1xyXG5pbXBvcnQgeyBIaWdobGlnaHRhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xyXG5pbXBvcnQgeyBYQ2xhc3NNYXAsIFhDbGVhckNsYXNzLCBYQ29uZmlnU2VydmljZSwgWElzQ2hhbmdlIH0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFhJY29uQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvaWNvbic7XHJcbmltcG9ydCB7IFhLZXl3b3JkRGlyZWN0aXZlIH0gZnJvbSAnQG5nLW5lc3QvdWkva2V5d29yZCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYCR7WExpc3RPcHRpb25QcmVmaXh9YCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFhJY29uQ29tcG9uZW50LCBYS2V5d29yZERpcmVjdGl2ZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xpc3Qtb3B0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9saXN0LW9wdGlvbi5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFhMaXN0T3B0aW9uQ29tcG9uZW50IGV4dGVuZHMgWExpc3RPcHRpb25Qcm9wZXJ0eSBpbXBsZW1lbnRzIEhpZ2hsaWdodGFibGUsIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpIHJvbGUgPSAnb3B0aW9uJztcclxuICBjbGFzc01hcDogWENsYXNzTWFwID0ge307XHJcbiAgcHJpdmF0ZSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XHJcbiAgY29uZmlnU2VydmljZSA9IGluamVjdChYQ29uZmlnU2VydmljZSk7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMubm9kZSlcclxuICAgICAgdGhpcy5ub2RlLmNoYW5nZSA9ICgpID0+IHtcclxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH07XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IHNpemUgfSA9IGNoYW5nZXM7XHJcbiAgICBYSXNDaGFuZ2Uoc2l6ZSkgJiYgdGhpcy5zZXRDbGFzc01hcCgpO1xyXG4gIH1cclxuXHJcbiAgc2V0Q2xhc3NNYXAoKSB7XHJcbiAgICBYQ2xlYXJDbGFzcyh0aGlzLmNsYXNzTWFwKTtcclxuICAgIHRoaXMuY2xhc3NNYXBbYCR7WExpc3RPcHRpb25QcmVmaXh9LSR7dGhpcy5zaXplfWBdID0gdGhpcy5zaXplID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc2V0QWN0aXZlU3R5bGVzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgdGhpcy5hY3RpdmVDaGFuZ2UuZW1pdCh0aGlzLmFjdGl2ZSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIHNldEluYWN0aXZlU3R5bGVzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcclxuICAgIHRoaXMuYWN0aXZlQ2hhbmdlLmVtaXQodGhpcy5hY3RpdmUpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TGFiZWwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5sYWJlbCBhcyBzdHJpbmc7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cIngtbGlzdC1vcHRpb25cIlxyXG4gIFtuZ0NsYXNzXT1cImNsYXNzTWFwXCJcclxuICBbY2xhc3MueC1zZWxlY3RlZF09XCJzZWxlY3RlZFwiXHJcbiAgW2NsYXNzLngtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gIFtjbGFzcy54LW9wZW4tcG9ydGFsXT1cIm5vZGU/Lm9wZW5Qb3J0YWxcIlxyXG4gIFtjbGFzcy54LWFjdGl2ZV09XCJhY3RpdmVcIlxyXG4gIFtjbGFzcy54LWxpc3QtaWNvbl09XCJpY29uXCJcclxuICBbY2xhc3MueC1saXN0LWRpdmlkZWRdPVwiZGl2aWRlZFwiXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwieC1saXN0LW9wdGlvbi1jb250ZW50XCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW5vZGVUcGxcIj5cclxuICAgICAgPHgtaWNvbiBbdHlwZV09XCJpY29uXCIgKm5nSWY9XCJpY29uXCI+PC94LWljb24+XHJcbiAgICAgIDxzcGFuIHgta2V5d29yZCBbdGV4dF09XCJrZXl3b3JkVGV4dFwiIFtjYXNlU2Vuc2l0aXZlXT1cImNhc2VTZW5zaXRpdmVcIj57eyBsYWJlbCB9fTwvc3Bhbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vZGVUcGxcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9kZVRwbDsgY29udGV4dDogeyAkbm9kZTogbm9kZSB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG4gIDx4LWljb24gY2xhc3M9XCJ4LWxpc3QtbGVhZlwiIHR5cGU9XCJmdG8tY2hldnJvbi1yaWdodFwiICpuZ0lmPVwibGVhZlwiPjwveC1pY29uPlxyXG4gIDx4LWljb24gY2xhc3M9XCJ4LWxpc3QtY2hlY2tlZFwiIHR5cGU9XCJmdG8tY2hlY2tcIiAqbmdJZj1cImNoZWNrZWQgJiYgIWxlYWYgJiYgc2VsZWN0ZWRcIj48L3gtaWNvbj5cclxuPC9kaXY+XHJcbiJdfQ==
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1vcHRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvbGlzdC9saXN0LW9wdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9saXN0L2xpc3Qtb3B0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUlYLGlCQUFpQixFQUNqQixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekUsT0FBTyxFQUFhLFdBQVcsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFXNUQsTUFBTSxPQUFPLG9CQUFxQixTQUFRLG1CQUFtQjtJQVQ3RDs7UUFVNEIsU0FBSSxHQUFHLFFBQVEsQ0FBQztRQUMxQyxhQUFRLEdBQWMsRUFBRSxDQUFDO1FBQ2pCLFFBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN4QyxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0tBaUN4QztJQS9CQyxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsSUFBSTtZQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMzQixDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDekIsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsV0FBVztRQUNULFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLGlCQUFpQixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ2hGLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUNELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBZSxDQUFDO0lBQzlCLENBQUM7aUlBckNVLG9CQUFvQjtxSEFBcEIsb0JBQW9CLHlLQzVCakMsdzRCQTJCQSxrMEVETFksT0FBTyxvRkFBRSxnQkFBZ0Isb0pBQUUsY0FBYyxtREFBRSxpQkFBaUI7OzJGQU0zRCxvQkFBb0I7a0JBVGhDLFNBQVM7K0JBQ0UsR0FBRyxpQkFBaUIsRUFBRSxjQUNwQixJQUFJLFdBQ1AsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixDQUFDLGlCQUd4RCxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNOzhCQUdyQixJQUFJO3NCQUE3QixXQUFXO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBpbmplY3RcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWExpc3RPcHRpb25QcmVmaXgsIFhMaXN0T3B0aW9uUHJvcGVydHkgfSBmcm9tICcuL2xpc3QucHJvcGVydHknO1xyXG5pbXBvcnQgeyBIaWdobGlnaHRhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xyXG5pbXBvcnQgeyBYQ2xhc3NNYXAsIFhDbGVhckNsYXNzLCBYQ29uZmlnU2VydmljZSwgWElzQ2hhbmdlIH0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IFhJY29uQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvaWNvbic7XHJcbmltcG9ydCB7IFhLZXl3b3JkRGlyZWN0aXZlIH0gZnJvbSAnQG5nLW5lc3QvdWkva2V5d29yZCc7XHJcbmltcG9ydCB7IE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hMaXN0T3B0aW9uUHJlZml4fWAsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCwgWEljb25Db21wb25lbnQsIFhLZXl3b3JkRGlyZWN0aXZlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC1vcHRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2xpc3Qtb3B0aW9uLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWExpc3RPcHRpb25Db21wb25lbnQgZXh0ZW5kcyBYTGlzdE9wdGlvblByb3BlcnR5IGltcGxlbWVudHMgSGlnaGxpZ2h0YWJsZSwgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJykgcm9sZSA9ICdvcHRpb24nO1xyXG4gIGNsYXNzTWFwOiBYQ2xhc3NNYXAgPSB7fTtcclxuICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcclxuICBjb25maWdTZXJ2aWNlID0gaW5qZWN0KFhDb25maWdTZXJ2aWNlKTtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5ub2RlKVxyXG4gICAgICB0aGlzLm5vZGUuY2hhbmdlID0gKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGNvbnN0IHsgc2l6ZSB9ID0gY2hhbmdlcztcclxuICAgIFhJc0NoYW5nZShzaXplKSAmJiB0aGlzLnNldENsYXNzTWFwKCk7XHJcbiAgfVxyXG5cclxuICBzZXRDbGFzc01hcCgpIHtcclxuICAgIFhDbGVhckNsYXNzKHRoaXMuY2xhc3NNYXApO1xyXG4gICAgdGhpcy5jbGFzc01hcFtgJHtYTGlzdE9wdGlvblByZWZpeH0tJHt0aGlzLnNpemV9YF0gPSB0aGlzLnNpemUgPyB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzZXRBY3RpdmVTdHlsZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XHJcbiAgICB0aGlzLmFjdGl2ZUNoYW5nZS5lbWl0KHRoaXMuYWN0aXZlKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbiAgc2V0SW5hY3RpdmVTdHlsZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5hY3RpdmVDaGFuZ2UuZW1pdCh0aGlzLmFjdGl2ZSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBnZXRMYWJlbCgpIHtcclxuICAgIHJldHVybiB0aGlzLmxhYmVsIGFzIHN0cmluZztcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwieC1saXN0LW9wdGlvblwiXHJcbiAgW25nQ2xhc3NdPVwiY2xhc3NNYXBcIlxyXG4gIFtjbGFzcy54LXNlbGVjdGVkXT1cInNlbGVjdGVkXCJcclxuICBbY2xhc3MueC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgW2NsYXNzLngtb3Blbi1wb3J0YWxdPVwibm9kZT8ub3BlblBvcnRhbFwiXHJcbiAgW2NsYXNzLngtYWN0aXZlXT1cImFjdGl2ZVwiXHJcbiAgW2NsYXNzLngtbGlzdC1pY29uXT1cImljb25cIlxyXG4gIFtjbGFzcy54LWxpc3QtZGl2aWRlZF09XCJkaXZpZGVkXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJ4LWxpc3Qtb3B0aW9uLWNvbnRlbnRcIj5cclxuICAgIEBpZiAobm9kZVRwbCkge1xyXG4gICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub2RlVHBsOyBjb250ZXh0OiB7ICRub2RlOiBub2RlIH1cIj48L25nLXRlbXBsYXRlPlxyXG4gICAgfSBAZWxzZSB7XHJcbiAgICAgIEBpZiAoaWNvbikge1xyXG4gICAgICAgIDx4LWljb24gW3R5cGVdPVwiaWNvblwiPjwveC1pY29uPlxyXG4gICAgICB9XHJcbiAgICAgIDxzcGFuIHgta2V5d29yZCBbdGV4dF09XCJrZXl3b3JkVGV4dFwiIFtjYXNlU2Vuc2l0aXZlXT1cImNhc2VTZW5zaXRpdmVcIj57eyBsYWJlbCB9fTwvc3Bhbj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuICBAaWYgKGxlYWYpIHtcclxuICAgIDx4LWljb24gY2xhc3M9XCJ4LWxpc3QtbGVhZlwiIHR5cGU9XCJmdG8tY2hldnJvbi1yaWdodFwiPjwveC1pY29uPlxyXG4gIH1cclxuICBAaWYgKGNoZWNrZWQgJiYgIWxlYWYgJiYgc2VsZWN0ZWQpIHtcclxuICAgIDx4LWljb24gY2xhc3M9XCJ4LWxpc3QtY2hlY2tlZFwiIHR5cGU9XCJmdG8tY2hlY2tcIj48L3gtaWNvbj5cclxuICB9XHJcbjwvZGl2PlxyXG4iXX0=
@@ -2,7 +2,7 @@ import { Subject } from 'rxjs';
2
2
  import { Component, ViewEncapsulation, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild, HostBinding, HostListener, ViewChildren, inject, AfterRenderPhase, afterRender } from '@angular/core';
3
3
  import { XListPrefix, XListProperty } from './list.property';
4
4
  import { XIsChange, XSetData, XConfigService, XIsEmpty, XIsUndefined, XIsNull, XResize } from '@ng-nest/ui/core';
5
- import { CdkDropList, DragDropModule, moveItemInArray } from '@angular/cdk/drag-drop';
5
+ import { CdkDrag, CdkDropList, moveItemInArray } from '@angular/cdk/drag-drop';
6
6
  import { XListOptionComponent } from './list-option.component';
7
7
  import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
8
8
  import { ENTER } from '@angular/cdk/keycodes';
@@ -11,15 +11,12 @@ import { XValueAccessor } from '@ng-nest/ui/base-form';
11
11
  import { XI18nService } from '@ng-nest/ui/i18n';
12
12
  import { ScrollingModule } from '@angular/cdk/scrolling';
13
13
  import { X_LIST_DROP_GROUP } from './list-drop-group.directive';
14
- import { CommonModule } from '@angular/common';
15
14
  import { XOutletDirective } from '@ng-nest/ui/outlet';
16
15
  import { XIconComponent } from '@ng-nest/ui/icon';
17
16
  import { XEmptyComponent } from '@ng-nest/ui/empty';
18
17
  import { FormsModule, ReactiveFormsModule } from '@angular/forms';
19
18
  import * as i0 from "@angular/core";
20
- import * as i1 from "@angular/common";
21
- import * as i2 from "@angular/cdk/drag-drop";
22
- import * as i3 from "@angular/cdk/scrolling";
19
+ import * as i1 from "@angular/cdk/scrolling";
23
20
  export class XListComponent extends XListProperty {
24
21
  keydown($event) {
25
22
  this.keyManager.onKeydown($event);
@@ -348,22 +345,22 @@ export class XListComponent extends XListProperty {
348
345
  if (num > -1)
349
346
  this.nodes[num].active = false;
350
347
  }
351
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: XListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
352
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: XListComponent, isStandalone: true, selector: "x-list", host: { listeners: { "keydown": "keydown($event)" }, properties: { "attr.role": "this.role", "attr.tabindex": "this.tabindex" } }, providers: [XValueAccessor(XListComponent)], viewQueries: [{ propertyName: "headerRef", first: true, predicate: ["headerRef"], descendants: true }, { propertyName: "footerRef", first: true, predicate: ["footerRef"], descendants: true }, { propertyName: "selectAllRef", first: true, predicate: ["selectAllRef"], descendants: true }, { propertyName: "loadMoreRef", first: true, predicate: ["loadMoreRef"], descendants: true }, { propertyName: "virtualBody", first: true, predicate: ["virtualBody"], descendants: true }, { propertyName: "dropList", first: true, predicate: CdkDropList, descendants: true }, { propertyName: "listItems", first: true, predicate: ["listItems"], descendants: true }, { propertyName: "options", predicate: XListOptionComponent, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"x-list\">\r\n <ng-container *ngIf=\"header\">\r\n <div #headerRef class=\"x-list-header\" *xOutlet=\"header\">{{ header }}</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"selectAll && multiple === 0\">\r\n <div #selectAllRef class=\"x-list-select-all\">\r\n <x-list-option\r\n [size]=\"size\"\r\n [label]=\"getSelectAllText\"\r\n [checked]=\"true\"\r\n [selected]=\"isSelectAll\"\r\n (click)=\"onSelectAllNodes()\"\r\n ></x-list-option>\r\n </div>\r\n </ng-container>\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\r\n *ngIf=\"virtualScroll; else contentTpl\"\r\n [itemSize]=\"getItemSize\"\r\n [minBufferPx]=\"minBufferPx\"\r\n [maxBufferPx]=\"maxBufferPx\"\r\n class=\"x-list-content\"\r\n [style.height.px]=\"getVirtualScrollHeight\"\r\n [hidden]=\"isEmpty\"\r\n >\r\n <x-list-option\r\n *cdkVirtualFor=\"let node of nodes; trackBy: trackByNode\"\r\n [node]=\"node\"\r\n [checked]=\"checked\"\r\n [nodeTpl]=\"nodeTpl\"\r\n [selected]=\"node.selected\"\r\n [disabled]=\"node.disabled\"\r\n [openPortal]=\"node.openPortal\"\r\n [(active)]=\"node.active\"\r\n [icon]=\"node.icon\"\r\n [label]=\"node.label\"\r\n [leaf]=\"node.leaf\"\r\n [size]=\"size\"\r\n [keywordText]=\"keywordText\"\r\n [caseSensitive]=\"caseSensitive\"\r\n (click)=\"onNodeClick($event, node)\"\r\n (mouseenter)=\"onMouseenter($event, node)\"\r\n (mouseleave)=\"onMouseleave($event, node)\"\r\n ></x-list-option>\r\n </cdk-virtual-scroll-viewport>\r\n\r\n <ng-container *ngIf=\"loadMore && !isEmpty\">\r\n <div #loadMoreRef class=\"x-list-load-more\">\r\n <x-list-option [size]=\"size\" [nodeTpl]=\"loadMoreTpl\" (click)=\"onLoadMore()\"></x-list-option>\r\n </div>\r\n <ng-template #loadMoreTpl>\r\n <x-icon *ngIf=\"icon && iconSpin\" [type]=\"icon\" [spin]=\"iconSpin\"></x-icon>\r\n {{ icon && iconSpin ? getLoadingMoreText : getLoadMoreText }}\r\n </ng-template>\r\n </ng-container>\r\n <x-empty *ngIf=\"isEmpty\"></x-empty>\r\n <ng-container *ngIf=\"footer\">\r\n <div #footerRef class=\"x-list-footer\" *xOutlet=\"footer\">{{ footer }}</div>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #contentTpl>\r\n <div\r\n class=\"x-list-content\"\r\n cdkDropList\r\n (cdkDropListDropped)=\"dropCdk($event)\"\r\n [cdkDropListDisabled]=\"!drag\"\r\n [hidden]=\"isEmpty\"\r\n [cdkDropListData]=\"nodes\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n >\r\n <x-list-option\r\n *ngFor=\"let node of nodes; trackBy: trackByNode\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"node.disabled\"\r\n [node]=\"node\"\r\n [checked]=\"checked\"\r\n [nodeTpl]=\"nodeTpl\"\r\n [selected]=\"node.selected\"\r\n [disabled]=\"node.disabled\"\r\n [(active)]=\"node.active\"\r\n [openPortal]=\"node.openPortal\"\r\n [icon]=\"node.icon\"\r\n [label]=\"node.label\"\r\n [leaf]=\"node.leaf\"\r\n [size]=\"size\"\r\n [keywordText]=\"keywordText\"\r\n [caseSensitive]=\"caseSensitive\"\r\n (click)=\"onNodeClick($event, node)\"\r\n (mouseenter)=\"onMouseenter($event, node)\"\r\n (mouseleave)=\"onMouseleave($event, node)\"\r\n ></x-list-option>\r\n </div>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";x-list{width:100%}x-list:focus{outline:none}.x-list{margin:0;padding:0;width:100%}.x-list:focus{outline:none}.x-list-select-all{cursor:pointer;font-weight:700}.x-list-load-more,.x-list-content{cursor:pointer}.x-list-content.cdk-drop-list-dragging x-list-option.cdk-drag-placeholder .x-list-option{border-color:var(--x-primary);color:var(--x-primary);background-color:var(--x-background);opacity:.8}.x-list-content.cdk-drop-list-dragging x-list-option:not(.cdk-drag-placeholder){transition:transform var(--x-animation-duration-base) cubic-bezier(0,0,.2,1)}.x-list-header,.x-list-footer{padding:0 .4rem;height:calc(var(--x-font-size) + 1rem);line-height:calc(var(--x-font-size) + 1rem);font-weight:700}.x-list-leaf,.x-list-checked{right:0;margin-left:.4rem;color:var(--x-text-400)}.x-list-icon>span x-icon{color:var(--x-text-300);margin-right:.25rem}.x-list>x-empty{margin:1rem;display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i3.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i3.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i3.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: XIconComponent, selector: "x-icon" }, { kind: "component", type: XEmptyComponent, selector: "x-empty" }, { kind: "component", type: XListOptionComponent, selector: "x-list-option" }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
348
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: XListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
349
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.7", type: XListComponent, isStandalone: true, selector: "x-list", host: { listeners: { "keydown": "keydown($event)" }, properties: { "attr.role": "this.role", "attr.tabindex": "this.tabindex" } }, providers: [XValueAccessor(XListComponent)], viewQueries: [{ propertyName: "headerRef", first: true, predicate: ["headerRef"], descendants: true }, { propertyName: "footerRef", first: true, predicate: ["footerRef"], descendants: true }, { propertyName: "selectAllRef", first: true, predicate: ["selectAllRef"], descendants: true }, { propertyName: "loadMoreRef", first: true, predicate: ["loadMoreRef"], descendants: true }, { propertyName: "virtualBody", first: true, predicate: ["virtualBody"], descendants: true }, { propertyName: "dropList", first: true, predicate: CdkDropList, descendants: true }, { propertyName: "listItems", first: true, predicate: ["listItems"], descendants: true }, { propertyName: "options", predicate: XListOptionComponent, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"x-list\">\r\n @if (header) {\r\n <div #headerRef class=\"x-list-header\" *xOutlet=\"header\">{{ header }}</div>\r\n }\r\n @if (selectAll && multiple === 0) {\r\n <div #selectAllRef class=\"x-list-select-all\">\r\n <x-list-option\r\n [size]=\"size\"\r\n [label]=\"getSelectAllText\"\r\n [checked]=\"true\"\r\n [selected]=\"isSelectAll\"\r\n (click)=\"onSelectAllNodes()\"\r\n ></x-list-option>\r\n </div>\r\n }\r\n @if (virtualScroll) {\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\r\n [itemSize]=\"getItemSize\"\r\n [minBufferPx]=\"minBufferPx\"\r\n [maxBufferPx]=\"maxBufferPx\"\r\n class=\"x-list-content\"\r\n [style.height.px]=\"getVirtualScrollHeight\"\r\n [hidden]=\"isEmpty\"\r\n >\r\n <x-list-option\r\n *cdkVirtualFor=\"let node of nodes; trackBy: trackByNode\"\r\n [node]=\"node\"\r\n [checked]=\"checked\"\r\n [nodeTpl]=\"nodeTpl\"\r\n [selected]=\"node.selected\"\r\n [disabled]=\"node.disabled\"\r\n [openPortal]=\"node.openPortal\"\r\n [(active)]=\"node.active\"\r\n [icon]=\"node.icon\"\r\n [label]=\"node.label\"\r\n [leaf]=\"node.leaf\"\r\n [size]=\"size\"\r\n [keywordText]=\"keywordText\"\r\n [caseSensitive]=\"caseSensitive\"\r\n (click)=\"onNodeClick($event, node)\"\r\n (mouseenter)=\"onMouseenter($event, node)\"\r\n (mouseleave)=\"onMouseleave($event, node)\"\r\n ></x-list-option>\r\n </cdk-virtual-scroll-viewport>\r\n } @else {\r\n <div\r\n class=\"x-list-content\"\r\n cdkDropList\r\n (cdkDropListDropped)=\"dropCdk($event)\"\r\n [cdkDropListDisabled]=\"!drag\"\r\n [hidden]=\"isEmpty\"\r\n [cdkDropListData]=\"nodes\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n >\r\n @for (node of nodes; track node.id) {\r\n <x-list-option\r\n cdkDrag\r\n [cdkDragDisabled]=\"node.disabled\"\r\n [node]=\"node\"\r\n [checked]=\"checked\"\r\n [nodeTpl]=\"nodeTpl\"\r\n [selected]=\"node.selected\"\r\n [disabled]=\"node.disabled\"\r\n [(active)]=\"node.active\"\r\n [openPortal]=\"node.openPortal\"\r\n [icon]=\"node.icon\"\r\n [label]=\"node.label\"\r\n [leaf]=\"node.leaf\"\r\n [size]=\"size\"\r\n [keywordText]=\"keywordText\"\r\n [caseSensitive]=\"caseSensitive\"\r\n (click)=\"onNodeClick($event, node)\"\r\n (mouseenter)=\"onMouseenter($event, node)\"\r\n (mouseleave)=\"onMouseleave($event, node)\"\r\n ></x-list-option>\r\n }\r\n </div>\r\n }\r\n @if (loadMore && !isEmpty) {\r\n <div #loadMoreRef class=\"x-list-load-more\">\r\n <x-list-option [size]=\"size\" [nodeTpl]=\"loadMoreTpl\" (click)=\"onLoadMore()\"></x-list-option>\r\n </div>\r\n <ng-template #loadMoreTpl>\r\n @if (icon && iconSpin) {\r\n <x-icon [type]=\"icon\" [spin]=\"iconSpin\"></x-icon>\r\n }\r\n {{ icon && iconSpin ? getLoadingMoreText : getLoadMoreText }}\r\n </ng-template>\r\n }\r\n @if (isEmpty) {\r\n <x-empty></x-empty>\r\n }\r\n @if (footer) {\r\n <div #footerRef class=\"x-list-footer\" *xOutlet=\"footer\">{{ footer }}</div>\r\n }\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-list{width:100%}x-list:focus{outline:none}.x-list{margin:0;padding:0;width:100%}.x-list:focus{outline:none}.x-list-select-all{cursor:pointer;font-weight:700}.x-list-load-more,.x-list-content{cursor:pointer}.x-list-content.cdk-drop-list-dragging x-list-option.cdk-drag-placeholder .x-list-option{border-color:var(--x-primary);color:var(--x-primary);background-color:var(--x-background);opacity:.8}.x-list-content.cdk-drop-list-dragging x-list-option:not(.cdk-drag-placeholder){transition:transform var(--x-animation-duration-base) cubic-bezier(0,0,.2,1)}.x-list-header,.x-list-footer{padding:0 .4rem;height:calc(var(--x-font-size) + 1rem);line-height:calc(var(--x-font-size) + 1rem);font-weight:700}.x-list-leaf,.x-list-checked{right:0;margin-left:.4rem;color:var(--x-text-400)}.x-list-icon>span x-icon{color:var(--x-text-300);margin-right:.25rem}.x-list>x-empty{margin:1rem;display:block}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i1.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i1.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i1.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: XIconComponent, selector: "x-icon" }, { kind: "component", type: XEmptyComponent, selector: "x-empty" }, { kind: "component", type: XListOptionComponent, selector: "x-list-option" }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
353
350
  }
354
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: XListComponent, decorators: [{
351
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: XListComponent, decorators: [{
355
352
  type: Component,
356
353
  args: [{ selector: `${XListPrefix}`, standalone: true, imports: [
357
- CommonModule,
358
354
  FormsModule,
359
355
  ReactiveFormsModule,
360
- DragDropModule,
356
+ CdkDropList,
357
+ CdkDrag,
361
358
  ScrollingModule,
362
359
  XIconComponent,
363
360
  XEmptyComponent,
364
361
  XListOptionComponent,
365
362
  XOutletDirective
366
- ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XListComponent)], template: "<div class=\"x-list\">\r\n <ng-container *ngIf=\"header\">\r\n <div #headerRef class=\"x-list-header\" *xOutlet=\"header\">{{ header }}</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"selectAll && multiple === 0\">\r\n <div #selectAllRef class=\"x-list-select-all\">\r\n <x-list-option\r\n [size]=\"size\"\r\n [label]=\"getSelectAllText\"\r\n [checked]=\"true\"\r\n [selected]=\"isSelectAll\"\r\n (click)=\"onSelectAllNodes()\"\r\n ></x-list-option>\r\n </div>\r\n </ng-container>\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\r\n *ngIf=\"virtualScroll; else contentTpl\"\r\n [itemSize]=\"getItemSize\"\r\n [minBufferPx]=\"minBufferPx\"\r\n [maxBufferPx]=\"maxBufferPx\"\r\n class=\"x-list-content\"\r\n [style.height.px]=\"getVirtualScrollHeight\"\r\n [hidden]=\"isEmpty\"\r\n >\r\n <x-list-option\r\n *cdkVirtualFor=\"let node of nodes; trackBy: trackByNode\"\r\n [node]=\"node\"\r\n [checked]=\"checked\"\r\n [nodeTpl]=\"nodeTpl\"\r\n [selected]=\"node.selected\"\r\n [disabled]=\"node.disabled\"\r\n [openPortal]=\"node.openPortal\"\r\n [(active)]=\"node.active\"\r\n [icon]=\"node.icon\"\r\n [label]=\"node.label\"\r\n [leaf]=\"node.leaf\"\r\n [size]=\"size\"\r\n [keywordText]=\"keywordText\"\r\n [caseSensitive]=\"caseSensitive\"\r\n (click)=\"onNodeClick($event, node)\"\r\n (mouseenter)=\"onMouseenter($event, node)\"\r\n (mouseleave)=\"onMouseleave($event, node)\"\r\n ></x-list-option>\r\n </cdk-virtual-scroll-viewport>\r\n\r\n <ng-container *ngIf=\"loadMore && !isEmpty\">\r\n <div #loadMoreRef class=\"x-list-load-more\">\r\n <x-list-option [size]=\"size\" [nodeTpl]=\"loadMoreTpl\" (click)=\"onLoadMore()\"></x-list-option>\r\n </div>\r\n <ng-template #loadMoreTpl>\r\n <x-icon *ngIf=\"icon && iconSpin\" [type]=\"icon\" [spin]=\"iconSpin\"></x-icon>\r\n {{ icon && iconSpin ? getLoadingMoreText : getLoadMoreText }}\r\n </ng-template>\r\n </ng-container>\r\n <x-empty *ngIf=\"isEmpty\"></x-empty>\r\n <ng-container *ngIf=\"footer\">\r\n <div #footerRef class=\"x-list-footer\" *xOutlet=\"footer\">{{ footer }}</div>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #contentTpl>\r\n <div\r\n class=\"x-list-content\"\r\n cdkDropList\r\n (cdkDropListDropped)=\"dropCdk($event)\"\r\n [cdkDropListDisabled]=\"!drag\"\r\n [hidden]=\"isEmpty\"\r\n [cdkDropListData]=\"nodes\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n >\r\n <x-list-option\r\n *ngFor=\"let node of nodes; trackBy: trackByNode\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"node.disabled\"\r\n [node]=\"node\"\r\n [checked]=\"checked\"\r\n [nodeTpl]=\"nodeTpl\"\r\n [selected]=\"node.selected\"\r\n [disabled]=\"node.disabled\"\r\n [(active)]=\"node.active\"\r\n [openPortal]=\"node.openPortal\"\r\n [icon]=\"node.icon\"\r\n [label]=\"node.label\"\r\n [leaf]=\"node.leaf\"\r\n [size]=\"size\"\r\n [keywordText]=\"keywordText\"\r\n [caseSensitive]=\"caseSensitive\"\r\n (click)=\"onNodeClick($event, node)\"\r\n (mouseenter)=\"onMouseenter($event, node)\"\r\n (mouseleave)=\"onMouseleave($event, node)\"\r\n ></x-list-option>\r\n </div>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";x-list{width:100%}x-list:focus{outline:none}.x-list{margin:0;padding:0;width:100%}.x-list:focus{outline:none}.x-list-select-all{cursor:pointer;font-weight:700}.x-list-load-more,.x-list-content{cursor:pointer}.x-list-content.cdk-drop-list-dragging x-list-option.cdk-drag-placeholder .x-list-option{border-color:var(--x-primary);color:var(--x-primary);background-color:var(--x-background);opacity:.8}.x-list-content.cdk-drop-list-dragging x-list-option:not(.cdk-drag-placeholder){transition:transform var(--x-animation-duration-base) cubic-bezier(0,0,.2,1)}.x-list-header,.x-list-footer{padding:0 .4rem;height:calc(var(--x-font-size) + 1rem);line-height:calc(var(--x-font-size) + 1rem);font-weight:700}.x-list-leaf,.x-list-checked{right:0;margin-left:.4rem;color:var(--x-text-400)}.x-list-icon>span x-icon{color:var(--x-text-300);margin-right:.25rem}.x-list>x-empty{margin:1rem;display:block}\n"] }]
363
+ ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XListComponent)], template: "<div class=\"x-list\">\r\n @if (header) {\r\n <div #headerRef class=\"x-list-header\" *xOutlet=\"header\">{{ header }}</div>\r\n }\r\n @if (selectAll && multiple === 0) {\r\n <div #selectAllRef class=\"x-list-select-all\">\r\n <x-list-option\r\n [size]=\"size\"\r\n [label]=\"getSelectAllText\"\r\n [checked]=\"true\"\r\n [selected]=\"isSelectAll\"\r\n (click)=\"onSelectAllNodes()\"\r\n ></x-list-option>\r\n </div>\r\n }\r\n @if (virtualScroll) {\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\r\n [itemSize]=\"getItemSize\"\r\n [minBufferPx]=\"minBufferPx\"\r\n [maxBufferPx]=\"maxBufferPx\"\r\n class=\"x-list-content\"\r\n [style.height.px]=\"getVirtualScrollHeight\"\r\n [hidden]=\"isEmpty\"\r\n >\r\n <x-list-option\r\n *cdkVirtualFor=\"let node of nodes; trackBy: trackByNode\"\r\n [node]=\"node\"\r\n [checked]=\"checked\"\r\n [nodeTpl]=\"nodeTpl\"\r\n [selected]=\"node.selected\"\r\n [disabled]=\"node.disabled\"\r\n [openPortal]=\"node.openPortal\"\r\n [(active)]=\"node.active\"\r\n [icon]=\"node.icon\"\r\n [label]=\"node.label\"\r\n [leaf]=\"node.leaf\"\r\n [size]=\"size\"\r\n [keywordText]=\"keywordText\"\r\n [caseSensitive]=\"caseSensitive\"\r\n (click)=\"onNodeClick($event, node)\"\r\n (mouseenter)=\"onMouseenter($event, node)\"\r\n (mouseleave)=\"onMouseleave($event, node)\"\r\n ></x-list-option>\r\n </cdk-virtual-scroll-viewport>\r\n } @else {\r\n <div\r\n class=\"x-list-content\"\r\n cdkDropList\r\n (cdkDropListDropped)=\"dropCdk($event)\"\r\n [cdkDropListDisabled]=\"!drag\"\r\n [hidden]=\"isEmpty\"\r\n [cdkDropListData]=\"nodes\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n >\r\n @for (node of nodes; track node.id) {\r\n <x-list-option\r\n cdkDrag\r\n [cdkDragDisabled]=\"node.disabled\"\r\n [node]=\"node\"\r\n [checked]=\"checked\"\r\n [nodeTpl]=\"nodeTpl\"\r\n [selected]=\"node.selected\"\r\n [disabled]=\"node.disabled\"\r\n [(active)]=\"node.active\"\r\n [openPortal]=\"node.openPortal\"\r\n [icon]=\"node.icon\"\r\n [label]=\"node.label\"\r\n [leaf]=\"node.leaf\"\r\n [size]=\"size\"\r\n [keywordText]=\"keywordText\"\r\n [caseSensitive]=\"caseSensitive\"\r\n (click)=\"onNodeClick($event, node)\"\r\n (mouseenter)=\"onMouseenter($event, node)\"\r\n (mouseleave)=\"onMouseleave($event, node)\"\r\n ></x-list-option>\r\n }\r\n </div>\r\n }\r\n @if (loadMore && !isEmpty) {\r\n <div #loadMoreRef class=\"x-list-load-more\">\r\n <x-list-option [size]=\"size\" [nodeTpl]=\"loadMoreTpl\" (click)=\"onLoadMore()\"></x-list-option>\r\n </div>\r\n <ng-template #loadMoreTpl>\r\n @if (icon && iconSpin) {\r\n <x-icon [type]=\"icon\" [spin]=\"iconSpin\"></x-icon>\r\n }\r\n {{ icon && iconSpin ? getLoadingMoreText : getLoadMoreText }}\r\n </ng-template>\r\n }\r\n @if (isEmpty) {\r\n <x-empty></x-empty>\r\n }\r\n @if (footer) {\r\n <div #footerRef class=\"x-list-footer\" *xOutlet=\"footer\">{{ footer }}</div>\r\n }\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-list{width:100%}x-list:focus{outline:none}.x-list{margin:0;padding:0;width:100%}.x-list:focus{outline:none}.x-list-select-all{cursor:pointer;font-weight:700}.x-list-load-more,.x-list-content{cursor:pointer}.x-list-content.cdk-drop-list-dragging x-list-option.cdk-drag-placeholder .x-list-option{border-color:var(--x-primary);color:var(--x-primary);background-color:var(--x-background);opacity:.8}.x-list-content.cdk-drop-list-dragging x-list-option:not(.cdk-drag-placeholder){transition:transform var(--x-animation-duration-base) cubic-bezier(0,0,.2,1)}.x-list-header,.x-list-footer{padding:0 .4rem;height:calc(var(--x-font-size) + 1rem);line-height:calc(var(--x-font-size) + 1rem);font-weight:700}.x-list-leaf,.x-list-checked{right:0;margin-left:.4rem;color:var(--x-text-400)}.x-list-icon>span x-icon{color:var(--x-text-300);margin-right:.25rem}.x-list>x-empty{margin:1rem;display:block}\n"] }]
367
364
  }], ctorParameters: () => [], propDecorators: { headerRef: [{
368
365
  type: ViewChild,
369
366
  args: ['headerRef']
@@ -398,4 +395,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImpor
398
395
  type: HostListener,
399
396
  args: ['keydown', ['$event']]
400
397
  }] } });
401
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9saXN0L2xpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvbGlzdC9saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUNMLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUtqQixTQUFTLEVBQ1QsV0FBVyxFQUNYLFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLGdCQUFnQixFQUNoQixXQUFXLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBYSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBQ0wsU0FBUyxFQUNULFFBQVEsRUFDUixjQUFjLEVBQ2QsUUFBUSxFQUNSLFlBQVksRUFDWixPQUFPLEVBQ1AsT0FBTyxFQUVSLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUF3QixXQUFXLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQy9ELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFhLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FB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QkFDTSxRQUFRO3NCQUFyQyxXQUFXO3VCQUFDLGVBQWU7Z0JBRVMsT0FBTztzQkFBM0MsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBRdWVyeUxpc3QsXHJcbiAgRWxlbWVudFJlZixcclxuICBWaWV3Q2hpbGQsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIFZpZXdDaGlsZHJlbixcclxuICBpbmplY3QsXHJcbiAgQWZ0ZXJSZW5kZXJQaGFzZSxcclxuICBhZnRlclJlbmRlclxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYTGlzdFByZWZpeCwgWExpc3ROb2RlLCBYTGlzdFByb3BlcnR5IH0gZnJvbSAnLi9saXN0LnByb3BlcnR5JztcclxuaW1wb3J0IHtcclxuICBYSXNDaGFuZ2UsXHJcbiAgWFNldERhdGEsXHJcbiAgWENvbmZpZ1NlcnZpY2UsXHJcbiAgWElzRW1wdHksXHJcbiAgWElzVW5kZWZpbmVkLFxyXG4gIFhJc051bGwsXHJcbiAgWFJlc2l6ZSxcclxuICBYUmVzaXplT2JzZXJ2ZXJcclxufSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgQ2RrRHJhZywgQ2RrRHJhZ0Ryb3AsIENka0Ryb3BMaXN0LCBEcmFnRHJvcE1vZHVsZSwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IFhMaXN0T3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9saXN0LW9wdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcclxuaW1wb3J0IHsgRU5URVIgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xyXG5pbXBvcnQgeyBtYXAsIHRha2VVbnRpbCwgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBYVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0BuZy1uZXN0L3VpL2Jhc2UtZm9ybSc7XHJcbmltcG9ydCB7IFhJMThuTGlzdCwgWEkxOG5TZXJ2aWNlIH0gZnJvbSAnQG5nLW5lc3QvdWkvaTE4bic7XHJcbmltcG9ydCB7IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCwgU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XHJcbmltcG9ydCB7IFhMaXN0RHJvcEdyb3VwLCBYX0xJU1RfRFJPUF9HUk9VUCB9IGZyb20gJy4vbGlzdC1kcm9wLWdyb3VwLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFhPdXRsZXREaXJlY3RpdmUgfSBmcm9tICdAbmctbmVzdC91aS9vdXRsZXQnO1xyXG5pbXBvcnQgeyBYSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2ljb24nO1xyXG5pbXBvcnQgeyBYRW1wdHlDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9lbXB0eSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hMaXN0UHJlZml4fWAsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBEcmFnRHJvcE1vZHVsZSxcclxuICAgIFNjcm9sbGluZ01vZHVsZSxcclxuICAgIFhJY29uQ29tcG9uZW50LFxyXG4gICAgWEVtcHR5Q29tcG9uZW50LFxyXG4gICAgWExpc3RPcHRpb25Db21wb25lbnQsXHJcbiAgICBYT3V0bGV0RGlyZWN0aXZlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbWFZhbHVlQWNjZXNzb3IoWExpc3RDb21wb25lbnQpXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWExpc3RDb21wb25lbnQgZXh0ZW5kcyBYTGlzdFByb3BlcnR5IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIG5vZGVzOiBYTGlzdE5vZGVbXSA9IFtdO1xyXG4gIHNlbGVjdGVkTm9kZXM6IFhMaXN0Tm9kZVtdID0gW107XHJcbiAgQFZpZXdDaGlsZCgnaGVhZGVyUmVmJykgaGVhZGVyUmVmITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgnZm9vdGVyUmVmJykgZm9vdGVyUmVmITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgnc2VsZWN0QWxsUmVmJykgc2VsZWN0QWxsUmVmITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgnbG9hZE1vcmVSZWYnKSBsb2FkTW9yZVJlZiE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ3ZpcnR1YWxCb2R5JykgdmlydHVhbEJvZHkhOiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XHJcbiAgQFZpZXdDaGlsZChDZGtEcm9wTGlzdCkgZHJvcExpc3QhOiBDZGtEcm9wTGlzdDtcclxuICBAVmlld0NoaWxkKCdsaXN0SXRlbXMnKSBsaXN0SXRlbXMhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBAVmlld0NoaWxkcmVuKFhMaXN0T3B0aW9uQ29tcG9uZW50KVxyXG4gIG9wdGlvbnMhOiBRdWVyeUxpc3Q8WExpc3RPcHRpb25Db21wb25lbnQ+O1xyXG4gIGtleU1hbmFnZXIhOiBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcjxYTGlzdE9wdGlvbkNvbXBvbmVudD47XHJcbiAgaXNTZWxlY3RBbGwgPSBmYWxzZTtcclxuICBsb2NhbGU6IFhJMThuTGlzdCA9IHt9O1xyXG4gIGxvYWRNb3JlSW5kZXggPSAwO1xyXG4gIGljb246IHN0cmluZyA9ICcnO1xyXG4gIGljb25TcGluOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfcmVzaXplT2JzZXJ2ZXIhOiBYUmVzaXplT2JzZXJ2ZXI7XHJcblxyXG4gIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJykgcm9sZSA9ICdsaXN0Ym94JztcclxuICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKSB0YWJpbmRleCA9IC0xO1xyXG5cclxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSkga2V5ZG93bigkZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIHRoaXMua2V5TWFuYWdlci5vbktleWRvd24oJGV2ZW50KTtcclxuICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gdGhpcy5rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleCBhcyBudW1iZXI7XHJcbiAgICBpZiAoJGV2ZW50LmtleUNvZGUgPT09IEVOVEVSICYmICFYSXNVbmRlZmluZWQoYWN0aXZlSW5kZXgpKSB7XHJcbiAgICAgIHRoaXMuc2V0VW5BY3RpdmUoYWN0aXZlSW5kZXgpO1xyXG4gICAgICB0aGlzLm9uTm9kZUNsaWNrKCRldmVudCwgdGhpcy5ub2Rlc1thY3RpdmVJbmRleF0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXRlbVNpemVNYXA6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7XHJcbiAgICBtaW5pOiAyMixcclxuICAgIHNtYWxsOiAyNCxcclxuICAgIG1lZGl1bTogMjgsXHJcbiAgICBsYXJnZTogMzIsXHJcbiAgICBiaWc6IDM2XHJcbiAgfTtcclxuXHJcbiAgZ2V0IGdldEl0ZW1TaXplKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaXRlbVNpemVNYXBbdGhpcy5zaXplXTtcclxuICB9XHJcblxyXG4gIGdldCBpc0VtcHR5KCkge1xyXG4gICAgcmV0dXJuIFhJc0VtcHR5KHRoaXMubm9kZXMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGdldFNlbGVjdEFsbFRleHQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RBbGxUZXh0IHx8IHRoaXMubG9jYWxlLnNlbGVjdEFsbFRleHQ7XHJcbiAgfVxyXG5cclxuICBnZXQgZ2V0TG9hZE1vcmVUZXh0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMubG9hZE1vcmVUZXh0IHx8IHRoaXMubG9jYWxlLmxvYWRNb3JlVGV4dDtcclxuICB9XHJcblxyXG4gIGdldCBnZXRMb2FkaW5nTW9yZVRleHQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5sb2FkaW5nTW9yZVRleHQgfHwgdGhpcy5sb2NhbGUubG9hZGluZ01vcmVUZXh0O1xyXG4gIH1cclxuXHJcbiAgZ2V0IGdldFZpcnR1YWxTY3JvbGxIZWlnaHQoKSB7XHJcbiAgICBsZXQgaGVhZGVySCA9IDAsXHJcbiAgICAgIGZvb3RlckggPSAwLFxyXG4gICAgICBzZWxlY3RBbGxIID0gMCxcclxuICAgICAgbG9hZE1vcmVIID0gMDtcclxuICAgIGlmICh0aGlzLmhlYWRlclJlZikgaGVhZGVySCA9IHRoaXMuaGVhZGVyUmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0O1xyXG4gICAgaWYgKHRoaXMuZm9vdGVyUmVmKSBmb290ZXJIID0gdGhpcy5mb290ZXJSZWYubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQ7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RBbGxSZWYpIHNlbGVjdEFsbEggPSB0aGlzLnNlbGVjdEFsbFJlZi5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodDtcclxuICAgIGlmICh0aGlzLmxvYWRNb3JlUmVmKSBsb2FkTW9yZUggPSB0aGlzLmxvYWRNb3JlUmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0O1xyXG5cclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5zY3JvbGxIZWlnaHQpIC0gaGVhZGVySCAtIGZvb3RlckggLSBzZWxlY3RBbGxIIC0gbG9hZE1vcmVIO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICB0aGlzLnNldFNlbGVjdGVkKCk7XHJcbiAgICB0aGlzLnNldEtleU1hbmFnZXIoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3VuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgb3ZlcnJpZGUgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoWEkxOG5TZXJ2aWNlKTtcclxuICBwcml2YXRlIGdyb3VwID0gaW5qZWN0PFhMaXN0RHJvcEdyb3VwPihYX0xJU1RfRFJPUF9HUk9VUCwgeyBvcHRpb25hbDogdHJ1ZSwgc2tpcFNlbGY6IHRydWUgfSk7XHJcbiAgY29uZmlnU2VydmljZSA9IGluamVjdChYQ29uZmlnU2VydmljZSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIGFmdGVyUmVuZGVyKFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMudmlydHVhbFNjcm9sbCAmJiB0aGlzLnNjcm9sbEhlaWdodCkge1xyXG4gICAgICAgICAgdGhpcy52aXJ0dWFsQm9keT8uY2hlY2tWaWV3cG9ydFNpemUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHsgcGhhc2U6IEFmdGVyUmVuZGVyUGhhc2UuTWl4ZWRSZWFkV3JpdGUgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5pMThuLmxvY2FsZUNoYW5nZVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHgpID0+IHgubGlzdCBhcyBYSTE4bkxpc3QpLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9jYWxlID0geDtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IGRhdGEgfSA9IGNoYW5nZXM7XHJcbiAgICBYSXNDaGFuZ2UoZGF0YSkgJiYgdGhpcy5zZXREYXRhKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmluaXRLZXlNYW5hZ2VyKCk7XHJcbiAgICBpZiAodGhpcy52aXJ0dWFsU2Nyb2xsICYmIHRoaXMuaGVpZ2h0QWRhcHRpb24pIHtcclxuICAgICAgdGhpcy5zZXRWaXJ0dWFsU2Nyb2xsSGVpZ2h0KCk7XHJcbiAgICAgIFhSZXNpemUodGhpcy5oZWlnaHRBZGFwdGlvbiBhcyBIVE1MRWxlbWVudClcclxuICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMzApLCB0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KSlcclxuICAgICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9yZXNpemVPYnNlcnZlciA9IHgucmVzaXplT2JzZXJ2ZXI7XHJcbiAgICAgICAgICB0aGlzLnNldFZpcnR1YWxTY3JvbGxIZWlnaHQoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmdyb3VwICYmIHRoaXMuZHJvcExpc3QpIHtcclxuICAgICAgdGhpcy5ncm91cC5kcm9wTGlzdHMuYWRkKHRoaXMuZHJvcExpc3QpO1xyXG4gICAgICB0aGlzLmdyb3VwLnNldENvbm5lY3RlZFRvKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3VuU3ViamVjdC5uZXh0KCk7XHJcbiAgICB0aGlzLl91blN1YmplY3QudW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XHJcbiAgICB0aGlzLmdyb3VwPy5kcm9wTGlzdHMuZGVsZXRlKHRoaXMuZHJvcExpc3QpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRWaXJ0dWFsU2Nyb2xsSGVpZ2h0KCkge1xyXG4gICAgdGhpcy5zY3JvbGxIZWlnaHQgPSAodGhpcy5oZWlnaHRBZGFwdGlvbiBhcyBIVE1MRWxlbWVudCkuY2xpZW50SGVpZ2h0O1xyXG4gICAgdGhpcy5taW5CdWZmZXJQeCA9IHRoaXMuZ2V0VmlydHVhbFNjcm9sbEhlaWdodDtcclxuICAgIHRoaXMubWF4QnVmZmVyUHggPSB0aGlzLmdldFZpcnR1YWxTY3JvbGxIZWlnaHQgKiAxLjI7XHJcbiAgICB0aGlzLnZpcnR1YWxCb2R5Wydfc2Nyb2xsU3RyYXRlZ3knXVsnX21pbkJ1ZmZlclB4J10gPSB0aGlzLm1pbkJ1ZmZlclB4O1xyXG4gICAgdGhpcy52aXJ0dWFsQm9keVsnX3Njcm9sbFN0cmF0ZWd5J11bJ19tYXhCdWZmZXJQeCddID0gdGhpcy5tYXhCdWZmZXJQeDtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RGF0YSgpIHtcclxuICAgIGlmICh0aGlzLmxvYWRNb3JlKSB7XHJcbiAgICAgIHRoaXMuaWNvbiA9ICdmdG8tbG9hZGVyJztcclxuICAgICAgdGhpcy5pY29uU3BpbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBYU2V0RGF0YTxYTGlzdE5vZGU+KHRoaXMuZGF0YSwgdGhpcy5fdW5TdWJqZWN0LCB0cnVlLCB0aGlzLmxvYWRNb3JlSW5kZXgpLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5sb2FkTW9yZSkge1xyXG4gICAgICAgIHRoaXMubm9kZXMgPSBbLi4udGhpcy5ub2RlcywgLi4ueF07XHJcbiAgICAgICAgdGhpcy5pY29uID0gJyc7XHJcbiAgICAgICAgdGhpcy5pY29uU3BpbiA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubm9kZXMgPSB4O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2V0U2VsZWN0ZWQoKTtcclxuICAgICAgdGhpcy5zZXRLZXlNYW5hZ2VyKCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0S2V5TWFuYWdlcigpIHtcclxuICAgIHRoaXMua2V5TWFuYWdlciA9IG5ldyBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcjxYTGlzdE9wdGlvbkNvbXBvbmVudD4odGhpcy5vcHRpb25zKS53aXRoV3JhcCgpO1xyXG5cclxuICAgIHRoaXMua2V5TWFuYWdlci50YWJPdXQucGlwZSh0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5zZXRVbkFjdGl2ZSh0aGlzLmtleU1hbmFnZXIuYWN0aXZlSXRlbUluZGV4IGFzIG51bWJlcik7XHJcbiAgICAgIHRoaXMua2V5TWFuYWdlclRhYk91dC5lbWl0KCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmtleU1hbmFnZXIuY2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdCkpLnN1YnNjcmliZSgobnVtOiBudW1iZXIpID0+IHtcclxuICAgICAgdGhpcy5zZXRTY29ybGxUb3AobnVtKTtcclxuICAgICAgdGhpcy5rZXlNYW5hZ2VyQ2hhbmdlLmVtaXQobnVtKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0U2NvcmxsVG9wKF9udW06IG51bWJlcikge1xyXG4gICAgaWYgKCF0aGlzLnNjcm9sbEVsZW1lbnQgfHwgIXRoaXMua2V5TWFuYWdlci5hY3RpdmVJdGVtKSByZXR1cm47XHJcbiAgICBsZXQgZWxlID0gdGhpcy5rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0hLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGxldCBsaXN0ID0gdGhpcy5zY3JvbGxFbGVtZW50O1xyXG4gICAgbGV0IG1pbiA9IGxpc3Quc2Nyb2xsVG9wO1xyXG4gICAgbGV0IG1heCA9IGxpc3Quc2Nyb2xsVG9wICsgbGlzdC5jbGllbnRIZWlnaHQ7XHJcbiAgICBpZiAoZWxlLm9mZnNldFRvcCArIGVsZS5jbGllbnRIZWlnaHQgPiBtYXgpIHtcclxuICAgICAgbGV0IHNjcm9sbFRvcCA9IGVsZS5vZmZzZXRUb3AgKyBlbGUuY2xpZW50SGVpZ2h0IC0gbGlzdC5jbGllbnRIZWlnaHQ7XHJcbiAgICAgIGxpc3Quc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG4gICAgfVxyXG4gICAgaWYgKGVsZS5vZmZzZXRUb3AgPCBtaW4pIHtcclxuICAgICAgbGlzdC5zY3JvbGxUb3AgPSBlbGUub2Zmc2V0VG9wO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0U2VsZWN0ZWQoKSB7XHJcbiAgICBpZiAodGhpcy5ub2Rlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMubm9kZXNcclxuICAgICAgICAuZmlsdGVyKCh4KSA9PiB4LnNlbGVjdGVkKVxyXG4gICAgICAgIC5tYXAoKHgpID0+IHtcclxuICAgICAgICAgIHguc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgbGV0IHZhbEFycnk6IGFueVtdID0gW107XHJcbiAgICAgIGlmICh0aGlzLnZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgICAgICB2YWxBcnJ5ID0gdGhpcy52YWx1ZTtcclxuICAgICAgICBpZiAodmFsQXJyeS5sZW5ndGggPT09IHRoaXMubm9kZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLmlzU2VsZWN0QWxsID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdmFsQXJyeSA9IFt0aGlzLnZhbHVlXTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGlkcyA9IFtdO1xyXG4gICAgICBsZXQgc2VsZWN0ZWROb2RlcyA9IFtdO1xyXG4gICAgICBpZiAodGhpcy5vYmplY3RBcnJheSkge1xyXG4gICAgICAgIGlkcyA9IHZhbEFycnkuZmlsdGVyKCh4KSA9PiAhWElzVW5kZWZpbmVkKHgpICYmICFYSXNOdWxsKHgpKS5tYXAoKHgpID0+IHguaWQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlkcyA9IHZhbEFycnk7XHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQgaWQgb2YgaWRzKSB7XHJcbiAgICAgICAgbGV0IG5vZGUgPSB0aGlzLm5vZGVzLmZpbmQoKHgpID0+IHguaWQgPT09IGlkKTtcclxuICAgICAgICBpZiAobm9kZSkge1xyXG4gICAgICAgICAgbm9kZS5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICBzZWxlY3RlZE5vZGVzLnB1c2gobm9kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IHNlbGVjdGVkTm9kZXM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRLZXlNYW5hZ2VyKCkge1xyXG4gICAgaWYgKFhJc1VuZGVmaW5lZCh0aGlzLmtleU1hbmFnZXIpIHx8IFhJc1VuZGVmaW5lZCh0aGlzLm5vZGVzKSB8fCB0aGlzLm5vZGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG4gICAgbGV0IGFjdGl2ZUluZGV4ID0gMDtcclxuICAgIGlmIChYSXNFbXB0eSh0aGlzLnZhbHVlKSkge1xyXG4gICAgICB0aGlzLmtleU1hbmFnZXIudXBkYXRlQWN0aXZlSXRlbShhY3RpdmVJbmRleCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCB2YWxBcnJ5OiBhbnlbXSA9IFtdO1xyXG4gICAgaWYgKHRoaXMudmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICB2YWxBcnJ5ID0gdGhpcy52YWx1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhbEFycnkgPSBbdGhpcy52YWx1ZV07XHJcbiAgICB9XHJcbiAgICBjb25zdCBmaXJzdCA9IHZhbEFycnlbMF07XHJcbiAgICBpZiAodGhpcy5vYmplY3RBcnJheSkge1xyXG4gICAgICBhY3RpdmVJbmRleCA9IHRoaXMubm9kZXMuZmluZEluZGV4KCh4KSA9PiB4LmlkID09PSBmaXJzdC5pZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhY3RpdmVJbmRleCA9IHRoaXMubm9kZXMuZmluZEluZGV4KCh4KSA9PiB4LmlkID09PSBmaXJzdCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmtleU1hbmFnZXIudXBkYXRlQWN0aXZlSXRlbShhY3RpdmVJbmRleCk7XHJcbiAgICB0aGlzLnNldFNjb3JsbFRvcChhY3RpdmVJbmRleCk7XHJcbiAgfVxyXG5cclxuICBvbk5vZGVDbGljayhldmVudDogRXZlbnQsIG5vZGU6IFhMaXN0Tm9kZSkge1xyXG4gICAgaWYgKFhJc1VuZGVmaW5lZChub2RlKSB8fCBub2RlLmRpc2FibGVkKSB7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAobm9kZS5kaXNhYmxlZCkgcmV0dXJuO1xyXG4gICAgaWYgKG5vZGUuc2VsZWN0ZWQgJiYgdGhpcy5tdWx0aXBsZSA9PT0gMSkge1xyXG4gICAgICBub2RlLmV2ZW50ID0gZXZlbnQ7XHJcbiAgICAgIHRoaXMubm9kZUNsaWNrLmVtaXQobm9kZSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHNlbGVjdGVkID0gIW5vZGUuc2VsZWN0ZWQ7XHJcbiAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWROb2Rlcy5sZW5ndGggPCBOdW1iZXIodGhpcy5tdWx0aXBsZSkgfHwgdGhpcy5tdWx0aXBsZSA9PT0gMCkge1xyXG4gICAgICAgIG5vZGUuc2VsZWN0ZWQgPSBzZWxlY3RlZDtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBbLi4udGhpcy5zZWxlY3RlZE5vZGVzLCBub2RlXTtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZE5vZGVzLmxlbmd0aCA9PT0gdGhpcy5ub2Rlcy5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMuaXNTZWxlY3RBbGwgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5tdWx0aXBsZSA9PT0gMSAmJiB0aGlzLnNlbGVjdGVkTm9kZXMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgbm9kZS5zZWxlY3RlZCA9IHNlbGVjdGVkO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWROb2Rlc1swXS5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWROb2Rlc1swXSA9IG5vZGU7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbm9kZS5zZWxlY3RlZCA9IHNlbGVjdGVkO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkTm9kZXMuc3BsaWNlKFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWROb2Rlcy5maW5kSW5kZXgoKHgpID0+IHguaWQgPT0gbm9kZS5pZCksXHJcbiAgICAgICAgMVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmlzU2VsZWN0QWxsID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSA9PT0gMSAmJiB0aGlzLnNlbGVjdGVkTm9kZXMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm9iamVjdEFycmF5ID8gdGhpcy5zZWxlY3RlZE5vZGVzWzBdIDogdGhpcy5zZWxlY3RlZE5vZGVzWzBdLmlkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMub2JqZWN0QXJyYXkgPyB0aGlzLnNlbGVjdGVkTm9kZXMgOiB0aGlzLnNlbGVjdGVkTm9kZXMubWFwKCh4KSA9PiB4LmlkKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9uQ2hhbmdlKSB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgbm9kZS5ldmVudCA9IGV2ZW50O1xyXG4gICAgdGhpcy5ub2RlQ2xpY2suZW1pdChub2RlKTtcclxuICB9XHJcblxyXG4gIG9uTW91c2VlbnRlcihldmVudDogRXZlbnQsIG5vZGU6IFhMaXN0Tm9kZSkge1xyXG4gICAgaWYgKG5vZGUuZGlzYWJsZWQpIHtcclxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIG5vZGUuZXZlbnQgPSBldmVudDtcclxuICAgIHRoaXMubm9kZU1vdXNlZW50ZXIuZW1pdChub2RlKTtcclxuICB9XHJcblxyXG4gIG9uTW91c2VsZWF2ZShldmVudDogRXZlbnQsIG5vZGU6IFhMaXN0Tm9kZSkge1xyXG4gICAgaWYgKG5vZGUuZGlzYWJsZWQpIHtcclxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIG5vZGUuZXZlbnQgPSBldmVudDtcclxuICAgIHRoaXMubm9kZU1vdXNlbGVhdmUuZW1pdChub2RlKTtcclxuICB9XHJcblxyXG4gIGRyb3BDZGsoZXZlbnQ6IENka0RyYWdEcm9wPFhMaXN0Tm9kZVtdPikge1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMubm9kZXMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XHJcbiAgICB0aGlzLmRyb3BMaXN0RHJvcHBlZC5lbWl0KHtcclxuICAgICAgZGF0YTogdGhpcy5ub2RlcyxcclxuICAgICAgY3VycmVudDogdGhpcy5ub2Rlc1tldmVudC5jdXJyZW50SW5kZXhdLFxyXG4gICAgICBjdXJyZW50SW5kZXg6IGV2ZW50LmN1cnJlbnRJbmRleCxcclxuICAgICAgZXZlbnQ6IGV2ZW50XHJcbiAgICB9KTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByZWRpY2F0ZShfZHJhZzogQ2RrRHJhZzxYTGlzdE5vZGU+LCBfZHJvcDogQ2RrRHJvcExpc3Q8WExpc3ROb2RlPikge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdEFsbE5vZGVzKCkge1xyXG4gICAgdGhpcy5pc1NlbGVjdEFsbCA9ICF0aGlzLmlzU2VsZWN0QWxsO1xyXG4gICAgaWYgKHRoaXMuaXNTZWxlY3RBbGwpIHtcclxuICAgICAgdGhpcy5ub2Rlcy5tYXAoKHgpID0+IHtcclxuICAgICAgICB4LnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICByZXR1cm4geDtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IFsuLi50aGlzLm5vZGVzXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubm9kZXMubWFwKCh4KSA9PiB7XHJcbiAgICAgICAgeC5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybiB4O1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gW107XHJcbiAgICB9XHJcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5vYmplY3RBcnJheSA/IHRoaXMuc2VsZWN0ZWROb2RlcyA6IHRoaXMuc2VsZWN0ZWROb2Rlcy5tYXAoKHgpID0+IHguaWQpO1xyXG4gICAgaWYgKHRoaXMub25DaGFuZ2UpIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgICB0aGlzLm9uU2VsZWN0QWxsLmVtaXQodGhpcy5pc1NlbGVjdEFsbCk7XHJcbiAgfVxyXG5cclxuICBvbkxvYWRNb3JlKCkge1xyXG4gICAgdGhpcy5sb2FkTW9yZUluZGV4Kys7XHJcbiAgICB0aGlzLnNldERhdGEoKTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlOb2RlKF9pbmRleDogbnVtYmVyLCBpdGVtOiBYTGlzdE5vZGUpIHtcclxuICAgIHJldHVybiBpdGVtLmlkO1xyXG4gIH1cclxuXHJcbiAgc2V0VW5BY3RpdmUobnVtOiBudW1iZXIpIHtcclxuICAgIGlmIChudW0gPiAtMSkgdGhpcy5ub2Rlc1tudW1dLmFjdGl2ZSA9IGZhbHNlO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwieC1saXN0XCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlclwiPlxyXG4gICAgPGRpdiAjaGVhZGVyUmVmIGNsYXNzPVwieC1saXN0LWhlYWRlclwiICp4T3V0bGV0PVwiaGVhZGVyXCI+e3sgaGVhZGVyIH19PC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdEFsbCAmJiBtdWx0aXBsZSA9PT0gMFwiPlxyXG4gICAgPGRpdiAjc2VsZWN0QWxsUmVmIGNsYXNzPVwieC1saXN0LXNlbGVjdC1hbGxcIj5cclxuICAgICAgPHgtbGlzdC1vcHRpb25cclxuICAgICAgICBbc2l6ZV09XCJzaXplXCJcclxuICAgICAgICBbbGFiZWxdPVwiZ2V0U2VsZWN0QWxsVGV4dFwiXHJcbiAgICAgICAgW2NoZWNrZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3NlbGVjdGVkXT1cImlzU2VsZWN0QWxsXCJcclxuICAgICAgICAoY2xpY2spPVwib25TZWxlY3RBbGxOb2RlcygpXCJcclxuICAgICAgPjwveC1saXN0LW9wdGlvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcclxuICAgICN2aXJ0dWFsQm9keVxyXG4gICAgKm5nSWY9XCJ2aXJ0dWFsU2Nyb2xsOyBlbHNlIGNvbnRlbnRUcGxcIlxyXG4gICAgW2l0ZW1TaXplXT1cImdldEl0ZW1TaXplXCJcclxuICAgIFttaW5CdWZmZXJQeF09XCJtaW5CdWZmZXJQeFwiXHJcbiAgICBbbWF4QnVmZmVyUHhdPVwibWF4QnVmZmVyUHhcIlxyXG4gICAgY2xhc3M9XCJ4LWxpc3QtY29udGVudFwiXHJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImdldFZpcnR1YWxTY3JvbGxIZWlnaHRcIlxyXG4gICAgW2hpZGRlbl09XCJpc0VtcHR5XCJcclxuICA+XHJcbiAgICA8eC1saXN0LW9wdGlvblxyXG4gICAgICAqY2RrVmlydHVhbEZvcj1cImxldCBub2RlIG9mIG5vZGVzOyB0cmFja0J5OiB0cmFja0J5Tm9kZVwiXHJcbiAgICAgIFtub2RlXT1cIm5vZGVcIlxyXG4gICAgICBbY2hlY2tlZF09XCJjaGVja2VkXCJcclxuICAgICAgW25vZGVUcGxdPVwibm9kZVRwbFwiXHJcbiAgICAgIFtzZWxlY3RlZF09XCJub2RlLnNlbGVjdGVkXCJcclxuICAgICAgW2Rpc2FibGVkXT1cIm5vZGUuZGlzYWJsZWRcIlxyXG4gICAgICBbb3BlblBvcnRhbF09XCJub2RlLm9wZW5Qb3J0YWxcIlxyXG4gICAgICBbKGFjdGl2ZSldPVwibm9kZS5hY3RpdmVcIlxyXG4gICAgICBbaWNvbl09XCJub2RlLmljb25cIlxyXG4gICAgICBbbGFiZWxdPVwibm9kZS5sYWJlbFwiXHJcbiAgICAgIFtsZWFmXT1cIm5vZGUubGVhZlwiXHJcbiAgICAgIFtzaXplXT1cInNpemVcIlxyXG4gICAgICBba2V5d29yZFRleHRdPVwia2V5d29yZFRleHRcIlxyXG4gICAgICBbY2FzZVNlbnNpdGl2ZV09XCJjYXNlU2Vuc2l0aXZlXCJcclxuICAgICAgKGNsaWNrKT1cIm9uTm9kZUNsaWNrKCRldmVudCwgbm9kZSlcIlxyXG4gICAgICAobW91c2VlbnRlcik9XCJvbk1vdXNlZW50ZXIoJGV2ZW50LCBub2RlKVwiXHJcbiAgICAgIChtb3VzZWxlYXZlKT1cIm9uTW91c2VsZWF2ZSgkZXZlbnQsIG5vZGUpXCJcclxuICAgID48L3gtbGlzdC1vcHRpb24+XHJcbiAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkTW9yZSAmJiAhaXNFbXB0eVwiPlxyXG4gICAgPGRpdiAjbG9hZE1vcmVSZWYgY2xhc3M9XCJ4LWxpc3QtbG9hZC1tb3JlXCI+XHJcbiAgICAgIDx4LWxpc3Qtb3B0aW9uIFtzaXplXT1cInNpemVcIiBbbm9kZVRwbF09XCJsb2FkTW9yZVRwbFwiIChjbGljayk9XCJvbkxvYWRNb3JlKClcIj48L3gtbGlzdC1vcHRpb24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjbG9hZE1vcmVUcGw+XHJcbiAgICAgIDx4LWljb24gKm5nSWY9XCJpY29uICYmIGljb25TcGluXCIgW3R5cGVdPVwiaWNvblwiIFtzcGluXT1cImljb25TcGluXCI+PC94LWljb24+XHJcbiAgICAgIHt7IGljb24gJiYgaWNvblNwaW4gPyBnZXRMb2FkaW5nTW9yZVRleHQgOiBnZXRMb2FkTW9yZVRleHQgfX1cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPHgtZW1wdHkgKm5nSWY9XCJpc0VtcHR5XCI+PC94LWVtcHR5PlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb290ZXJcIj5cclxuICAgIDxkaXYgI2Zvb3RlclJlZiBjbGFzcz1cIngtbGlzdC1mb290ZXJcIiAqeE91dGxldD1cImZvb3RlclwiPnt7IGZvb3RlciB9fTwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY29udGVudFRwbD5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cIngtbGlzdC1jb250ZW50XCJcclxuICAgIGNka0Ryb3BMaXN0XHJcbiAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3BDZGsoJGV2ZW50KVwiXHJcbiAgICBbY2RrRHJvcExpc3REaXNhYmxlZF09XCIhZHJhZ1wiXHJcbiAgICBbaGlkZGVuXT1cImlzRW1wdHlcIlxyXG4gICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJub2Rlc1wiXHJcbiAgICBbY2RrRHJvcExpc3RFbnRlclByZWRpY2F0ZV09XCJwcmVkaWNhdGVcIlxyXG4gID5cclxuICAgIDx4LWxpc3Qtb3B0aW9uXHJcbiAgICAgICpuZ0Zvcj1cImxldCBub2RlIG9mIG5vZGVzOyB0cmFja0J5OiB0cmFja0J5Tm9kZVwiXHJcbiAgICAgIGNka0RyYWdcclxuICAgICAgW2Nka0RyYWdEaXNhYmxlZF09XCJub2RlLmRpc2FibGVkXCJcclxuICAgICAgW25vZGVdPVwibm9kZVwiXHJcbiAgICAgIFtjaGVja2VkXT1cImNoZWNrZWRcIlxyXG4gICAgICBbbm9kZVRwbF09XCJub2RlVHBsXCJcclxuICAgICAgW3NlbGVjdGVkXT1cIm5vZGUuc2VsZWN0ZWRcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwibm9kZS5kaXNhYmxlZFwiXHJcbiAgICAgIFsoYWN0aXZlKV09XCJub2RlLmFjdGl2ZVwiXHJcbiAgICAgIFtvcGVuUG9ydGFsXT1cIm5vZGUub3BlblBvcnRhbFwiXHJcbiAgICAgIFtpY29uXT1cIm5vZGUuaWNvblwiXHJcbiAgICAgIFtsYWJlbF09XCJub2RlLmxhYmVsXCJcclxuICAgICAgW2xlYWZdPVwibm9kZS5sZWFmXCJcclxuICAgICAgW3NpemVdPVwic2l6ZVwiXHJcbiAgICAgIFtrZXl3b3JkVGV4dF09XCJrZXl3b3JkVGV4dFwiXHJcbiAgICAgIFtjYXNlU2Vuc2l0aXZlXT1cImNhc2VTZW5zaXRpdmVcIlxyXG4gICAgICAoY2xpY2spPVwib25Ob2RlQ2xpY2soJGV2ZW50LCBub2RlKVwiXHJcbiAgICAgIChtb3VzZWVudGVyKT1cIm9uTW91c2VlbnRlcigkZXZlbnQsIG5vZGUpXCJcclxuICAgICAgKG1vdXNlbGVhdmUpPVwib25Nb3VzZWxlYXZlKCRldmVudCwgbm9kZSlcIlxyXG4gICAgPjwveC1saXN0LW9wdGlvbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
398
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9saXN0L2xpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvbGlzdC9saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUNMLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUtqQixTQUFTLEVBQ1QsV0FBVyxFQUNYLFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLGdCQUFnQixFQUNoQixXQUFXLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBYSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBQ0wsU0FBUyxFQUNULFFBQVEsRUFDUixjQUFjLEVBQ2QsUUFBUSxFQUNSLFlBQVksRUFDWixPQUFPLEVBQ1AsT0FBTyxFQUVSLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLE9BQU8sRUFBZSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlDLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQWEsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFD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QTNDLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBPbkNoYW5nZXMsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBWaWV3Q2hpbGRyZW4sXHJcbiAgaW5qZWN0LFxyXG4gIEFmdGVyUmVuZGVyUGhhc2UsXHJcbiAgYWZ0ZXJSZW5kZXJcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWExpc3RQcmVmaXgsIFhMaXN0Tm9kZSwgWExpc3RQcm9wZXJ0eSB9IGZyb20gJy4vbGlzdC5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7XHJcbiAgWElzQ2hhbmdlLFxyXG4gIFhTZXREYXRhLFxyXG4gIFhDb25maWdTZXJ2aWNlLFxyXG4gIFhJc0VtcHR5LFxyXG4gIFhJc1VuZGVmaW5lZCxcclxuICBYSXNOdWxsLFxyXG4gIFhSZXNpemUsXHJcbiAgWFJlc2l6ZU9ic2VydmVyXHJcbn0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IENka0RyYWcsIENka0RyYWdEcm9wLCBDZGtEcm9wTGlzdCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IFhMaXN0T3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9saXN0LW9wdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcclxuaW1wb3J0IHsgRU5URVIgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xyXG5pbXBvcnQgeyBtYXAsIHRha2VVbnRpbCwgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBYVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0BuZy1uZXN0L3VpL2Jhc2UtZm9ybSc7XHJcbmltcG9ydCB7IFhJMThuTGlzdCwgWEkxOG5TZXJ2aWNlIH0gZnJvbSAnQG5nLW5lc3QvdWkvaTE4bic7XHJcbmltcG9ydCB7IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCwgU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XHJcbmltcG9ydCB7IFhMaXN0RHJvcEdyb3VwLCBYX0xJU1RfRFJPUF9HUk9VUCB9IGZyb20gJy4vbGlzdC1kcm9wLWdyb3VwLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFhPdXRsZXREaXJlY3RpdmUgfSBmcm9tICdAbmctbmVzdC91aS9vdXRsZXQnO1xyXG5pbXBvcnQgeyBYSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2ljb24nO1xyXG5pbXBvcnQgeyBYRW1wdHlDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9lbXB0eSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hMaXN0UHJlZml4fWAsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBDZGtEcm9wTGlzdCxcclxuICAgIENka0RyYWcsXHJcbiAgICBTY3JvbGxpbmdNb2R1bGUsXHJcbiAgICBYSWNvbkNvbXBvbmVudCxcclxuICAgIFhFbXB0eUNvbXBvbmVudCxcclxuICAgIFhMaXN0T3B0aW9uQ29tcG9uZW50LFxyXG4gICAgWE91dGxldERpcmVjdGl2ZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2xpc3QuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW1hWYWx1ZUFjY2Vzc29yKFhMaXN0Q29tcG9uZW50KV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFhMaXN0Q29tcG9uZW50IGV4dGVuZHMgWExpc3RQcm9wZXJ0eSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBub2RlczogWExpc3ROb2RlW10gPSBbXTtcclxuICBzZWxlY3RlZE5vZGVzOiBYTGlzdE5vZGVbXSA9IFtdO1xyXG4gIEBWaWV3Q2hpbGQoJ2hlYWRlclJlZicpIGhlYWRlclJlZiE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ2Zvb3RlclJlZicpIGZvb3RlclJlZiE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdEFsbFJlZicpIHNlbGVjdEFsbFJlZiE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ2xvYWRNb3JlUmVmJykgbG9hZE1vcmVSZWYhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCd2aXJ0dWFsQm9keScpIHZpcnR1YWxCb2R5ITogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xyXG4gIEBWaWV3Q2hpbGQoQ2RrRHJvcExpc3QpIGRyb3BMaXN0ITogQ2RrRHJvcExpc3Q7XHJcbiAgQFZpZXdDaGlsZCgnbGlzdEl0ZW1zJykgbGlzdEl0ZW1zITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZHJlbihYTGlzdE9wdGlvbkNvbXBvbmVudClcclxuICBvcHRpb25zITogUXVlcnlMaXN0PFhMaXN0T3B0aW9uQ29tcG9uZW50PjtcclxuICBrZXlNYW5hZ2VyITogQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXI8WExpc3RPcHRpb25Db21wb25lbnQ+O1xyXG4gIGlzU2VsZWN0QWxsID0gZmFsc2U7XHJcbiAgbG9jYWxlOiBYSTE4bkxpc3QgPSB7fTtcclxuICBsb2FkTW9yZUluZGV4ID0gMDtcclxuICBpY29uOiBzdHJpbmcgPSAnJztcclxuICBpY29uU3BpbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3Jlc2l6ZU9ic2VydmVyITogWFJlc2l6ZU9ic2VydmVyO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpIHJvbGUgPSAnbGlzdGJveCc7XHJcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JykgdGFiaW5kZXggPSAtMTtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pIGtleWRvd24oJGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICB0aGlzLmtleU1hbmFnZXIub25LZXlkb3duKCRldmVudCk7XHJcbiAgICBjb25zdCBhY3RpdmVJbmRleCA9IHRoaXMua2V5TWFuYWdlci5hY3RpdmVJdGVtSW5kZXggYXMgbnVtYmVyO1xyXG4gICAgaWYgKCRldmVudC5rZXlDb2RlID09PSBFTlRFUiAmJiAhWElzVW5kZWZpbmVkKGFjdGl2ZUluZGV4KSkge1xyXG4gICAgICB0aGlzLnNldFVuQWN0aXZlKGFjdGl2ZUluZGV4KTtcclxuICAgICAgdGhpcy5vbk5vZGVDbGljaygkZXZlbnQsIHRoaXMubm9kZXNbYWN0aXZlSW5kZXhdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGl0ZW1TaXplTWFwOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge1xyXG4gICAgbWluaTogMjIsXHJcbiAgICBzbWFsbDogMjQsXHJcbiAgICBtZWRpdW06IDI4LFxyXG4gICAgbGFyZ2U6IDMyLFxyXG4gICAgYmlnOiAzNlxyXG4gIH07XHJcblxyXG4gIGdldCBnZXRJdGVtU2l6ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLml0ZW1TaXplTWFwW3RoaXMuc2l6ZV07XHJcbiAgfVxyXG5cclxuICBnZXQgaXNFbXB0eSgpIHtcclxuICAgIHJldHVybiBYSXNFbXB0eSh0aGlzLm5vZGVzKTtcclxuICB9XHJcblxyXG4gIGdldCBnZXRTZWxlY3RBbGxUZXh0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0QWxsVGV4dCB8fCB0aGlzLmxvY2FsZS5zZWxlY3RBbGxUZXh0O1xyXG4gIH1cclxuXHJcbiAgZ2V0IGdldExvYWRNb3JlVGV4dCgpIHtcclxuICAgIHJldHVybiB0aGlzLmxvYWRNb3JlVGV4dCB8fCB0aGlzLmxvY2FsZS5sb2FkTW9yZVRleHQ7XHJcbiAgfVxyXG5cclxuICBnZXQgZ2V0TG9hZGluZ01vcmVUZXh0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMubG9hZGluZ01vcmVUZXh0IHx8IHRoaXMubG9jYWxlLmxvYWRpbmdNb3JlVGV4dDtcclxuICB9XHJcblxyXG4gIGdldCBnZXRWaXJ0dWFsU2Nyb2xsSGVpZ2h0KCkge1xyXG4gICAgbGV0IGhlYWRlckggPSAwLFxyXG4gICAgICBmb290ZXJIID0gMCxcclxuICAgICAgc2VsZWN0QWxsSCA9IDAsXHJcbiAgICAgIGxvYWRNb3JlSCA9IDA7XHJcbiAgICBpZiAodGhpcy5oZWFkZXJSZWYpIGhlYWRlckggPSB0aGlzLmhlYWRlclJlZi5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodDtcclxuICAgIGlmICh0aGlzLmZvb3RlclJlZikgZm9vdGVySCA9IHRoaXMuZm9vdGVyUmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0O1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0QWxsUmVmKSBzZWxlY3RBbGxIID0gdGhpcy5zZWxlY3RBbGxSZWYubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQ7XHJcbiAgICBpZiAodGhpcy5sb2FkTW9yZVJlZikgbG9hZE1vcmVIID0gdGhpcy5sb2FkTW9yZVJlZi5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodDtcclxuXHJcbiAgICByZXR1cm4gTnVtYmVyKHRoaXMuc2Nyb2xsSGVpZ2h0KSAtIGhlYWRlckggLSBmb290ZXJIIC0gc2VsZWN0QWxsSCAtIGxvYWRNb3JlSDtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5zZXRTZWxlY3RlZCgpO1xyXG4gICAgdGhpcy5zZXRLZXlNYW5hZ2VyKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91blN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIG92ZXJyaWRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KFhJMThuU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBncm91cCA9IGluamVjdDxYTGlzdERyb3BHcm91cD4oWF9MSVNUX0RST1BfR1JPVVAsIHsgb3B0aW9uYWw6IHRydWUsIHNraXBTZWxmOiB0cnVlIH0pO1xyXG4gIGNvbmZpZ1NlcnZpY2UgPSBpbmplY3QoWENvbmZpZ1NlcnZpY2UpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICBhZnRlclJlbmRlcihcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnZpcnR1YWxTY3JvbGwgJiYgdGhpcy5zY3JvbGxIZWlnaHQpIHtcclxuICAgICAgICAgIHRoaXMudmlydHVhbEJvZHk/LmNoZWNrVmlld3BvcnRTaXplKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7IHBoYXNlOiBBZnRlclJlbmRlclBoYXNlLk1peGVkUmVhZFdyaXRlIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaTE4bi5sb2NhbGVDaGFuZ2VcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKCh4KSA9PiB4Lmxpc3QgYXMgWEkxOG5MaXN0KSxcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICB0aGlzLmxvY2FsZSA9IHg7XHJcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgY29uc3QgeyBkYXRhIH0gPSBjaGFuZ2VzO1xyXG4gICAgWElzQ2hhbmdlKGRhdGEpICYmIHRoaXMuc2V0RGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5pbml0S2V5TWFuYWdlcigpO1xyXG4gICAgaWYgKHRoaXMudmlydHVhbFNjcm9sbCAmJiB0aGlzLmhlaWdodEFkYXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuc2V0VmlydHVhbFNjcm9sbEhlaWdodCgpO1xyXG4gICAgICBYUmVzaXplKHRoaXMuaGVpZ2h0QWRhcHRpb24gYXMgSFRNTEVsZW1lbnQpXHJcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDMwKSwgdGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXIgPSB4LnJlc2l6ZU9ic2VydmVyO1xyXG4gICAgICAgICAgdGhpcy5zZXRWaXJ0dWFsU2Nyb2xsSGVpZ2h0KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5ncm91cCAmJiB0aGlzLmRyb3BMaXN0KSB7XHJcbiAgICAgIHRoaXMuZ3JvdXAuZHJvcExpc3RzLmFkZCh0aGlzLmRyb3BMaXN0KTtcclxuICAgICAgdGhpcy5ncm91cC5zZXRDb25uZWN0ZWRUbygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl91blN1YmplY3QubmV4dCgpO1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xyXG4gICAgdGhpcy5ncm91cD8uZHJvcExpc3RzLmRlbGV0ZSh0aGlzLmRyb3BMaXN0KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VmlydHVhbFNjcm9sbEhlaWdodCgpIHtcclxuICAgIHRoaXMuc2Nyb2xsSGVpZ2h0ID0gKHRoaXMuaGVpZ2h0QWRhcHRpb24gYXMgSFRNTEVsZW1lbnQpLmNsaWVudEhlaWdodDtcclxuICAgIHRoaXMubWluQnVmZmVyUHggPSB0aGlzLmdldFZpcnR1YWxTY3JvbGxIZWlnaHQ7XHJcbiAgICB0aGlzLm1heEJ1ZmZlclB4ID0gdGhpcy5nZXRWaXJ0dWFsU2Nyb2xsSGVpZ2h0ICogMS4yO1xyXG4gICAgdGhpcy52aXJ0dWFsQm9keVsnX3Njcm9sbFN0cmF0ZWd5J11bJ19taW5CdWZmZXJQeCddID0gdGhpcy5taW5CdWZmZXJQeDtcclxuICAgIHRoaXMudmlydHVhbEJvZHlbJ19zY3JvbGxTdHJhdGVneSddWydfbWF4QnVmZmVyUHgnXSA9IHRoaXMubWF4QnVmZmVyUHg7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldERhdGEoKSB7XHJcbiAgICBpZiAodGhpcy5sb2FkTW9yZSkge1xyXG4gICAgICB0aGlzLmljb24gPSAnZnRvLWxvYWRlcic7XHJcbiAgICAgIHRoaXMuaWNvblNwaW4gPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgWFNldERhdGE8WExpc3ROb2RlPih0aGlzLmRhdGEsIHRoaXMuX3VuU3ViamVjdCwgdHJ1ZSwgdGhpcy5sb2FkTW9yZUluZGV4KS5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgaWYgKHRoaXMubG9hZE1vcmUpIHtcclxuICAgICAgICB0aGlzLm5vZGVzID0gWy4uLnRoaXMubm9kZXMsIC4uLnhdO1xyXG4gICAgICAgIHRoaXMuaWNvbiA9ICcnO1xyXG4gICAgICAgIHRoaXMuaWNvblNwaW4gPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm5vZGVzID0geDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNldFNlbGVjdGVkKCk7XHJcbiAgICAgIHRoaXMuc2V0S2V5TWFuYWdlcigpO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdEtleU1hbmFnZXIoKSB7XHJcbiAgICB0aGlzLmtleU1hbmFnZXIgPSBuZXcgQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXI8WExpc3RPcHRpb25Db21wb25lbnQ+KHRoaXMub3B0aW9ucykud2l0aFdyYXAoKTtcclxuXHJcbiAgICB0aGlzLmtleU1hbmFnZXIudGFiT3V0LnBpcGUodGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2V0VW5BY3RpdmUodGhpcy5rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleCBhcyBudW1iZXIpO1xyXG4gICAgICB0aGlzLmtleU1hbmFnZXJUYWJPdXQuZW1pdCgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5rZXlNYW5hZ2VyLmNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpKS5zdWJzY3JpYmUoKG51bTogbnVtYmVyKSA9PiB7XHJcbiAgICAgIHRoaXMuc2V0U2NvcmxsVG9wKG51bSk7XHJcbiAgICAgIHRoaXMua2V5TWFuYWdlckNoYW5nZS5lbWl0KG51bSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFNjb3JsbFRvcChfbnVtOiBudW1iZXIpIHtcclxuICAgIGlmICghdGhpcy5zY3JvbGxFbGVtZW50IHx8ICF0aGlzLmtleU1hbmFnZXIuYWN0aXZlSXRlbSkgcmV0dXJuO1xyXG4gICAgbGV0IGVsZSA9IHRoaXMua2V5TWFuYWdlci5hY3RpdmVJdGVtIS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBsZXQgbGlzdCA9IHRoaXMuc2Nyb2xsRWxlbWVudDtcclxuICAgIGxldCBtaW4gPSBsaXN0LnNjcm9sbFRvcDtcclxuICAgIGxldCBtYXggPSBsaXN0LnNjcm9sbFRvcCArIGxpc3QuY2xpZW50SGVpZ2h0O1xyXG4gICAgaWYgKGVsZS5vZmZzZXRUb3AgKyBlbGUuY2xpZW50SGVpZ2h0ID4gbWF4KSB7XHJcbiAgICAgIGxldCBzY3JvbGxUb3AgPSBlbGUub2Zmc2V0VG9wICsgZWxlLmNsaWVudEhlaWdodCAtIGxpc3QuY2xpZW50SGVpZ2h0O1xyXG4gICAgICBsaXN0LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcclxuICAgIH1cclxuICAgIGlmIChlbGUub2Zmc2V0VG9wIDwgbWluKSB7XHJcbiAgICAgIGxpc3Quc2Nyb2xsVG9wID0gZWxlLm9mZnNldFRvcDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFNlbGVjdGVkKCkge1xyXG4gICAgaWYgKHRoaXMubm9kZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLm5vZGVzXHJcbiAgICAgICAgLmZpbHRlcigoeCkgPT4geC5zZWxlY3RlZClcclxuICAgICAgICAubWFwKCh4KSA9PiB7XHJcbiAgICAgICAgICB4LnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIGxldCB2YWxBcnJ5OiBhbnlbXSA9IFtdO1xyXG4gICAgICBpZiAodGhpcy52YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XHJcbiAgICAgICAgdmFsQXJyeSA9IHRoaXMudmFsdWU7XHJcbiAgICAgICAgaWYgKHZhbEFycnkubGVuZ3RoID09PSB0aGlzLm5vZGVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5pc1NlbGVjdEFsbCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhbEFycnkgPSBbdGhpcy52YWx1ZV07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBpZHMgPSBbXTtcclxuICAgICAgbGV0IHNlbGVjdGVkTm9kZXMgPSBbXTtcclxuICAgICAgaWYgKHRoaXMub2JqZWN0QXJyYXkpIHtcclxuICAgICAgICBpZHMgPSB2YWxBcnJ5LmZpbHRlcigoeCkgPT4gIVhJc1VuZGVmaW5lZCh4KSAmJiAhWElzTnVsbCh4KSkubWFwKCh4KSA9PiB4LmlkKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZHMgPSB2YWxBcnJ5O1xyXG4gICAgICB9XHJcbiAgICAgIGZvciAobGV0IGlkIG9mIGlkcykge1xyXG4gICAgICAgIGxldCBub2RlID0gdGhpcy5ub2Rlcy5maW5kKCh4KSA9PiB4LmlkID09PSBpZCk7XHJcbiAgICAgICAgaWYgKG5vZGUpIHtcclxuICAgICAgICAgIG5vZGUuc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgc2VsZWN0ZWROb2Rlcy5wdXNoKG5vZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBzZWxlY3RlZE5vZGVzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0S2V5TWFuYWdlcigpIHtcclxuICAgIGlmIChYSXNVbmRlZmluZWQodGhpcy5rZXlNYW5hZ2VyKSB8fCBYSXNVbmRlZmluZWQodGhpcy5ub2RlcykgfHwgdGhpcy5ub2Rlcy5sZW5ndGggPT09IDApIHJldHVybjtcclxuICAgIGxldCBhY3RpdmVJbmRleCA9IDA7XHJcbiAgICBpZiAoWElzRW1wdHkodGhpcy52YWx1ZSkpIHtcclxuICAgICAgdGhpcy5rZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0oYWN0aXZlSW5kZXgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgdmFsQXJyeTogYW55W10gPSBbXTtcclxuICAgIGlmICh0aGlzLnZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgICAgdmFsQXJyeSA9IHRoaXMudmFsdWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YWxBcnJ5ID0gW3RoaXMudmFsdWVdO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZmlyc3QgPSB2YWxBcnJ5WzBdO1xyXG4gICAgaWYgKHRoaXMub2JqZWN0QXJyYXkpIHtcclxuICAgICAgYWN0aXZlSW5kZXggPSB0aGlzLm5vZGVzLmZpbmRJbmRleCgoeCkgPT4geC5pZCA9PT0gZmlyc3QuaWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYWN0aXZlSW5kZXggPSB0aGlzLm5vZGVzLmZpbmRJbmRleCgoeCkgPT4geC5pZCA9PT0gZmlyc3QpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5rZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0oYWN0aXZlSW5kZXgpO1xyXG4gICAgdGhpcy5zZXRTY29ybGxUb3AoYWN0aXZlSW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgb25Ob2RlQ2xpY2soZXZlbnQ6IEV2ZW50LCBub2RlOiBYTGlzdE5vZGUpIHtcclxuICAgIGlmIChYSXNVbmRlZmluZWQobm9kZSkgfHwgbm9kZS5kaXNhYmxlZCkge1xyXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKG5vZGUuZGlzYWJsZWQpIHJldHVybjtcclxuICAgIGlmIChub2RlLnNlbGVjdGVkICYmIHRoaXMubXVsdGlwbGUgPT09IDEpIHtcclxuICAgICAgbm9kZS5ldmVudCA9IGV2ZW50O1xyXG4gICAgICB0aGlzLm5vZGVDbGljay5lbWl0KG5vZGUpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBzZWxlY3RlZCA9ICFub2RlLnNlbGVjdGVkO1xyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkTm9kZXMubGVuZ3RoIDwgTnVtYmVyKHRoaXMubXVsdGlwbGUpIHx8IHRoaXMubXVsdGlwbGUgPT09IDApIHtcclxuICAgICAgICBub2RlLnNlbGVjdGVkID0gc2VsZWN0ZWQ7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gWy4uLnRoaXMuc2VsZWN0ZWROb2Rlcywgbm9kZV07XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWROb2Rlcy5sZW5ndGggPT09IHRoaXMubm9kZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLmlzU2VsZWN0QWxsID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMubXVsdGlwbGUgPT09IDEgJiYgdGhpcy5zZWxlY3RlZE5vZGVzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgIG5vZGUuc2VsZWN0ZWQgPSBzZWxlY3RlZDtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXNbMF0uc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXNbMF0gPSBub2RlO1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG5vZGUuc2VsZWN0ZWQgPSBzZWxlY3RlZDtcclxuICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzLnNwbGljZShcclxuICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXMuZmluZEluZGV4KCh4KSA9PiB4LmlkID09IG5vZGUuaWQpLFxyXG4gICAgICAgIDFcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5pc1NlbGVjdEFsbCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubXVsdGlwbGUgPT09IDEgJiYgdGhpcy5zZWxlY3RlZE5vZGVzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5vYmplY3RBcnJheSA/IHRoaXMuc2VsZWN0ZWROb2Rlc1swXSA6IHRoaXMuc2VsZWN0ZWROb2Rlc1swXS5pZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm9iamVjdEFycmF5ID8gdGhpcy5zZWxlY3RlZE5vZGVzIDogdGhpcy5zZWxlY3RlZE5vZGVzLm1hcCgoeCkgPT4geC5pZCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vbkNoYW5nZSkgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIG5vZGUuZXZlbnQgPSBldmVudDtcclxuICAgIHRoaXMubm9kZUNsaWNrLmVtaXQobm9kZSk7XHJcbiAgfVxyXG5cclxuICBvbk1vdXNlZW50ZXIoZXZlbnQ6IEV2ZW50LCBub2RlOiBYTGlzdE5vZGUpIHtcclxuICAgIGlmIChub2RlLmRpc2FibGVkKSB7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBub2RlLmV2ZW50ID0gZXZlbnQ7XHJcbiAgICB0aGlzLm5vZGVNb3VzZWVudGVyLmVtaXQobm9kZSk7XHJcbiAgfVxyXG5cclxuICBvbk1vdXNlbGVhdmUoZXZlbnQ6IEV2ZW50LCBub2RlOiBYTGlzdE5vZGUpIHtcclxuICAgIGlmIChub2RlLmRpc2FibGVkKSB7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBub2RlLmV2ZW50ID0gZXZlbnQ7XHJcbiAgICB0aGlzLm5vZGVNb3VzZWxlYXZlLmVtaXQobm9kZSk7XHJcbiAgfVxyXG5cclxuICBkcm9wQ2RrKGV2ZW50OiBDZGtEcmFnRHJvcDxYTGlzdE5vZGVbXT4pIHtcclxuICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLm5vZGVzLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xyXG4gICAgdGhpcy5kcm9wTGlzdERyb3BwZWQuZW1pdCh7XHJcbiAgICAgIGRhdGE6IHRoaXMubm9kZXMsXHJcbiAgICAgIGN1cnJlbnQ6IHRoaXMubm9kZXNbZXZlbnQuY3VycmVudEluZGV4XSxcclxuICAgICAgY3VycmVudEluZGV4OiBldmVudC5jdXJyZW50SW5kZXgsXHJcbiAgICAgIGV2ZW50OiBldmVudFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcmVkaWNhdGUoX2RyYWc6IENka0RyYWc8WExpc3ROb2RlPiwgX2Ryb3A6IENka0Ryb3BMaXN0PFhMaXN0Tm9kZT4pIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3RBbGxOb2RlcygpIHtcclxuICAgIHRoaXMuaXNTZWxlY3RBbGwgPSAhdGhpcy5pc1NlbGVjdEFsbDtcclxuICAgIGlmICh0aGlzLmlzU2VsZWN0QWxsKSB7XHJcbiAgICAgIHRoaXMubm9kZXMubWFwKCh4KSA9PiB7XHJcbiAgICAgICAgeC5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuIHg7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBbLi4udGhpcy5ub2Rlc107XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm5vZGVzLm1hcCgoeCkgPT4ge1xyXG4gICAgICAgIHguc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm4geDtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IFtdO1xyXG4gICAgfVxyXG4gICAgdGhpcy52YWx1ZSA9IHRoaXMub2JqZWN0QXJyYXkgPyB0aGlzLnNlbGVjdGVkTm9kZXMgOiB0aGlzLnNlbGVjdGVkTm9kZXMubWFwKCh4KSA9PiB4LmlkKTtcclxuICAgIGlmICh0aGlzLm9uQ2hhbmdlKSB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gICAgdGhpcy5vblNlbGVjdEFsbC5lbWl0KHRoaXMuaXNTZWxlY3RBbGwpO1xyXG4gIH1cclxuXHJcbiAgb25Mb2FkTW9yZSgpIHtcclxuICAgIHRoaXMubG9hZE1vcmVJbmRleCsrO1xyXG4gICAgdGhpcy5zZXREYXRhKCk7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5Tm9kZShfaW5kZXg6IG51bWJlciwgaXRlbTogWExpc3ROb2RlKSB7XHJcbiAgICByZXR1cm4gaXRlbS5pZDtcclxuICB9XHJcblxyXG4gIHNldFVuQWN0aXZlKG51bTogbnVtYmVyKSB7XHJcbiAgICBpZiAobnVtID4gLTEpIHRoaXMubm9kZXNbbnVtXS5hY3RpdmUgPSBmYWxzZTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIngtbGlzdFwiPlxyXG4gIEBpZiAoaGVhZGVyKSB7XHJcbiAgICA8ZGl2ICNoZWFkZXJSZWYgY2xhc3M9XCJ4LWxpc3QtaGVhZGVyXCIgKnhPdXRsZXQ9XCJoZWFkZXJcIj57eyBoZWFkZXIgfX08L2Rpdj5cclxuICB9XHJcbiAgQGlmIChzZWxlY3RBbGwgJiYgbXVsdGlwbGUgPT09IDApIHtcclxuICAgIDxkaXYgI3NlbGVjdEFsbFJlZiBjbGFzcz1cIngtbGlzdC1zZWxlY3QtYWxsXCI+XHJcbiAgICAgIDx4LWxpc3Qtb3B0aW9uXHJcbiAgICAgICAgW3NpemVdPVwic2l6ZVwiXHJcbiAgICAgICAgW2xhYmVsXT1cImdldFNlbGVjdEFsbFRleHRcIlxyXG4gICAgICAgIFtjaGVja2VkXT1cInRydWVcIlxyXG4gICAgICAgIFtzZWxlY3RlZF09XCJpc1NlbGVjdEFsbFwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0QWxsTm9kZXMoKVwiXHJcbiAgICAgID48L3gtbGlzdC1vcHRpb24+XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbiAgQGlmICh2aXJ0dWFsU2Nyb2xsKSB7XHJcbiAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XHJcbiAgICAgICN2aXJ0dWFsQm9keVxyXG4gICAgICBbaXRlbVNpemVdPVwiZ2V0SXRlbVNpemVcIlxyXG4gICAgICBbbWluQnVmZmVyUHhdPVwibWluQnVmZmVyUHhcIlxyXG4gICAgICBbbWF4QnVmZmVyUHhdPVwibWF4QnVmZmVyUHhcIlxyXG4gICAgICBjbGFzcz1cIngtbGlzdC1jb250ZW50XCJcclxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJnZXRWaXJ0dWFsU2Nyb2xsSGVpZ2h0XCJcclxuICAgICAgW2hpZGRlbl09XCJpc0VtcHR5XCJcclxuICAgID5cclxuICAgICAgPHgtbGlzdC1vcHRpb25cclxuICAgICAgICAqY2RrVmlydHVhbEZvcj1cImxldCBub2RlIG9mIG5vZGVzOyB0cmFja0J5OiB0cmFja0J5Tm9kZVwiXHJcbiAgICAgICAgW25vZGVdPVwibm9kZVwiXHJcbiAgICAgICAgW2NoZWNrZWRdPVwiY2hlY2tlZFwiXHJcbiAgICAgICAgW25vZGVUcGxdPVwibm9kZVRwbFwiXHJcbiAgICAgICAgW3NlbGVjdGVkXT1cIm5vZGUuc2VsZWN0ZWRcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJub2RlLmRpc2FibGVkXCJcclxuICAgICAgICBbb3BlblBvcnRhbF09XCJub2RlLm9wZW5Qb3J0YWxcIlxyXG4gICAgICAgIFsoYWN0aXZlKV09XCJub2RlLmFjdGl2ZVwiXHJcbiAgICAgICAgW2ljb25dPVwibm9kZS5pY29uXCJcclxuICAgICAgICBbbGFiZWxdPVwibm9kZS5sYWJlbFwiXHJcbiAgICAgICAgW2xlYWZdPVwibm9kZS5sZWFmXCJcclxuICAgICAgICBbc2l6ZV09XCJzaXplXCJcclxuICAgICAgICBba2V5d29yZFRleHRdPVwia2V5d29yZFRleHRcIlxyXG4gICAgICAgIFtjYXNlU2Vuc2l0aXZlXT1cImNhc2VTZW5zaXRpdmVcIlxyXG4gICAgICAgIChjbGljayk9XCJvbk5vZGVDbGljaygkZXZlbnQsIG5vZGUpXCJcclxuICAgICAgICAobW91c2VlbnRlcik9XCJvbk1vdXNlZW50ZXIoJGV2ZW50LCBub2RlKVwiXHJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwib25Nb3VzZWxlYXZlKCRldmVudCwgbm9kZSlcIlxyXG4gICAgICA+PC94LWxpc3Qtb3B0aW9uPlxyXG4gICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XHJcbiAgfSBAZWxzZSB7XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwieC1saXN0LWNvbnRlbnRcIlxyXG4gICAgICBjZGtEcm9wTGlzdFxyXG4gICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3BDZGsoJGV2ZW50KVwiXHJcbiAgICAgIFtjZGtEcm9wTGlzdERpc2FibGVkXT1cIiFkcmFnXCJcclxuICAgICAgW2hpZGRlbl09XCJpc0VtcHR5XCJcclxuICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJub2Rlc1wiXHJcbiAgICAgIFtjZGtEcm9wTGlzdEVudGVyUHJlZGljYXRlXT1cInByZWRpY2F0ZVwiXHJcbiAgICA+XHJcbiAgICAgIEBmb3IgKG5vZGUgb2Ygbm9kZXM7IHRyYWNrIG5vZGUuaWQpIHtcclxuICAgICAgICA8eC1saXN0LW9wdGlvblxyXG4gICAgICAgICAgY2RrRHJhZ1xyXG4gICAgICAgICAgW2Nka0RyYWdEaXNhYmxlZF09XCJub2RlLmRpc2FibGVkXCJcclxuICAgICAgICAgIFtub2RlXT1cIm5vZGVcIlxyXG4gICAgICAgICAgW2NoZWNrZWRdPVwiY2hlY2tlZFwiXHJcbiAgICAgICAgICBbbm9kZVRwbF09XCJub2RlVHBsXCJcclxuICAgICAgICAgIFtzZWxlY3RlZF09XCJub2RlLnNlbGVjdGVkXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJub2RlLmRpc2FibGVkXCJcclxuICAgICAgICAgIFsoYWN0aXZlKV09XCJub2RlLmFjdGl2ZVwiXHJcbiAgICAgICAgICBbb3BlblBvcnRhbF09XCJub2RlLm9wZW5Qb3J0YWxcIlxyXG4gICAgICAgICAgW2ljb25dPVwibm9kZS5pY29uXCJcclxuICAgICAgICAgIFtsYWJlbF09XCJub2RlLmxhYmVsXCJcclxuICAgICAgICAgIFtsZWFmXT1cIm5vZGUubGVhZlwiXHJcbiAgICAgICAgICBbc2l6ZV09XCJzaXplXCJcclxuICAgICAgICAgIFtrZXl3b3JkVGV4dF09XCJrZXl3b3JkVGV4dFwiXHJcbiAgICAgICAgICBbY2FzZVNlbnNpdGl2ZV09XCJjYXNlU2Vuc2l0aXZlXCJcclxuICAgICAgICAgIChjbGljayk9XCJvbk5vZGVDbGljaygkZXZlbnQsIG5vZGUpXCJcclxuICAgICAgICAgIChtb3VzZWVudGVyKT1cIm9uTW91c2VlbnRlcigkZXZlbnQsIG5vZGUpXCJcclxuICAgICAgICAgIChtb3VzZWxlYXZlKT1cIm9uTW91c2VsZWF2ZSgkZXZlbnQsIG5vZGUpXCJcclxuICAgICAgICA+PC94LWxpc3Qtb3B0aW9uPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbiAgQGlmIChsb2FkTW9yZSAmJiAhaXNFbXB0eSkge1xyXG4gICAgPGRpdiAjbG9hZE1vcmVSZWYgY2xhc3M9XCJ4LWxpc3QtbG9hZC1tb3JlXCI+XHJcbiAgICAgIDx4LWxpc3Qtb3B0aW9uIFtzaXplXT1cInNpemVcIiBbbm9kZVRwbF09XCJsb2FkTW9yZVRwbFwiIChjbGljayk9XCJvbkxvYWRNb3JlKClcIj48L3gtbGlzdC1vcHRpb24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjbG9hZE1vcmVUcGw+XHJcbiAgICAgIEBpZiAoaWNvbiAmJiBpY29uU3Bpbikge1xyXG4gICAgICAgIDx4LWljb24gW3R5cGVdPVwiaWNvblwiIFtzcGluXT1cImljb25TcGluXCI+PC94LWljb24+XHJcbiAgICAgIH1cclxuICAgICAge3sgaWNvbiAmJiBpY29uU3BpbiA/IGdldExvYWRpbmdNb3JlVGV4dCA6IGdldExvYWRNb3JlVGV4dCB9fVxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICB9XHJcbiAgQGlmIChpc0VtcHR5KSB7XHJcbiAgICA8eC1lbXB0eT48L3gtZW1wdHk+XHJcbiAgfVxyXG4gIEBpZiAoZm9vdGVyKSB7XHJcbiAgICA8ZGl2ICNmb290ZXJSZWYgY2xhc3M9XCJ4LWxpc3QtZm9vdGVyXCIgKnhPdXRsZXQ9XCJmb290ZXJcIj57eyBmb290ZXIgfX08L2Rpdj5cclxuICB9XHJcbjwvZGl2PlxyXG4iXX0=
@@ -4,11 +4,11 @@ import { XListOptionComponent } from './list-option.component';
4
4
  import { XListDropGroup } from './list-drop-group.directive';
5
5
  import * as i0 from "@angular/core";
6
6
  export class XListModule {
7
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: XListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.2", ngImport: i0, type: XListModule, imports: [XListComponent, XListDropGroup, XListOptionComponent], exports: [XListComponent, XListDropGroup, XListOptionComponent] }); }
9
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: XListModule, imports: [XListComponent, XListOptionComponent] }); }
7
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: XListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.7", ngImport: i0, type: XListModule, imports: [XListComponent, XListDropGroup, XListOptionComponent], exports: [XListComponent, XListDropGroup, XListOptionComponent] }); }
9
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: XListModule, imports: [XListComponent, XListOptionComponent] }); }
10
10
  }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: XListModule, decorators: [{
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: XListModule, decorators: [{
12
12
  type: NgModule,
13
13
  args: [{
14
14
  exports: [XListComponent, XListDropGroup, XListOptionComponent],
@@ -72,8 +72,8 @@ export class XListProperty extends XControlValueAccessor {
72
72
  */
73
73
  this.keyManagerChange = new EventEmitter();
74
74
  }
75
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: XListProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
76
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: XListProperty, selector: "x-list-property", inputs: { data: "data", multiple: "multiple", selectAll: "selectAll", selectAllText: "selectAllText", checked: "checked", drag: "drag", objectArray: "objectArray", nodeTpl: "nodeTpl", header: "header", footer: "footer", scrollElement: "scrollElement", size: "size", loadMore: "loadMore", loadMoreText: "loadMoreText", loadingMoreText: "loadingMoreText", virtualScroll: "virtualScroll", scrollHeight: "scrollHeight", heightAdaption: "heightAdaption", minBufferPx: "minBufferPx", maxBufferPx: "maxBufferPx", keywordText: "keywordText", caseSensitive: "caseSensitive" }, outputs: { onSelectAll: "onSelectAll", nodeMouseenter: "nodeMouseenter", nodeMouseleave: "nodeMouseleave", nodeClick: "nodeClick", dropListDropped: "dropListDropped", keyManagerTabOut: "keyManagerTabOut", keyManagerChange: "keyManagerChange" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
75
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: XListProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
76
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: XListProperty, selector: "x-list-property", inputs: { data: "data", multiple: "multiple", selectAll: "selectAll", selectAllText: "selectAllText", checked: "checked", drag: "drag", objectArray: "objectArray", nodeTpl: "nodeTpl", header: "header", footer: "footer", scrollElement: "scrollElement", size: "size", loadMore: "loadMore", loadMoreText: "loadMoreText", loadingMoreText: "loadingMoreText", virtualScroll: "virtualScroll", scrollHeight: "scrollHeight", heightAdaption: "heightAdaption", minBufferPx: "minBufferPx", maxBufferPx: "maxBufferPx", keywordText: "keywordText", caseSensitive: "caseSensitive" }, outputs: { onSelectAll: "onSelectAll", nodeMouseenter: "nodeMouseenter", nodeMouseleave: "nodeMouseleave", nodeClick: "nodeClick", dropListDropped: "dropListDropped", keyManagerTabOut: "keyManagerTabOut", keyManagerChange: "keyManagerChange" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
77
77
  }
78
78
  __decorate([
79
79
  XDataConvert()
@@ -120,7 +120,7 @@ __decorate([
120
120
  XInputBoolean(),
121
121
  XWithConfig(X_CONFIG_NAME, true)
122
122
  ], XListProperty.prototype, "caseSensitive", void 0);
123
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: XListProperty, decorators: [{
123
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: XListProperty, decorators: [{
124
124
  type: Component,
125
125
  args: [{ selector: `${XListPrefix}-property`, template: '' }]
126
126
  }], propDecorators: { data: [{
@@ -199,8 +199,8 @@ export class XListOptionProperty {
199
199
  */
200
200
  this.activeChange = new EventEmitter();
201
201
  }
202
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: XListOptionProperty, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
203
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: XListOptionProperty, selector: "x-list-option-property", inputs: { node: "node", checked: "checked", nodeTpl: "nodeTpl", selected: "selected", disabled: "disabled", active: "active", openPortal: "openPortal", optionClass: "optionClass", icon: "icon", divided: "divided", label: "label", leaf: "leaf", size: "size", keywordText: "keywordText", caseSensitive: "caseSensitive" }, outputs: { activeChange: "activeChange" }, ngImport: i0, template: '', isInline: true }); }
202
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: XListOptionProperty, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
203
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: XListOptionProperty, selector: "x-list-option-property", inputs: { node: "node", checked: "checked", nodeTpl: "nodeTpl", selected: "selected", disabled: "disabled", active: "active", openPortal: "openPortal", optionClass: "optionClass", icon: "icon", divided: "divided", label: "label", leaf: "leaf", size: "size", keywordText: "keywordText", caseSensitive: "caseSensitive" }, outputs: { activeChange: "activeChange" }, ngImport: i0, template: '', isInline: true }); }
204
204
  }
205
205
  __decorate([
206
206
  XInputBoolean()
@@ -227,7 +227,7 @@ __decorate([
227
227
  XInputBoolean(),
228
228
  XWithConfig(X_CONFIG_NAME, true)
229
229
  ], XListOptionProperty.prototype, "caseSensitive", void 0);
230
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: XListOptionProperty, decorators: [{
230
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: XListOptionProperty, decorators: [{
231
231
  type: Component,
232
232
  args: [{ selector: `${XListOptionPrefix}-property`, template: '' }]
233
233
  }], propDecorators: { node: [{