@ng-nest/ui 17.0.12 → 18.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (923) hide show
  1. package/README.md +1 -1
  2. package/affix/affix.component.d.ts +0 -2
  3. package/affix/affix.property.d.ts +12 -7
  4. package/alert/alert.component.d.ts +12 -11
  5. package/alert/alert.property.d.ts +36 -35
  6. package/anchor/anchor.component.d.ts +15 -18
  7. package/anchor/anchor.property.d.ts +17 -8
  8. package/api/api.component.d.ts +2 -7
  9. package/auto-complete/auto-complete-portal.component.d.ts +20 -25
  10. package/auto-complete/auto-complete.component.d.ts +17 -34
  11. package/auto-complete/auto-complete.property.d.ts +282 -20
  12. package/avatar/avatar.component.d.ts +29 -19
  13. package/avatar/avatar.property.d.ts +78 -12
  14. package/back-top/back-top.component.d.ts +12 -17
  15. package/back-top/back-top.property.d.ts +12 -8
  16. package/badge/badge.component.d.ts +9 -16
  17. package/badge/badge.property.d.ts +95 -13
  18. package/base-form/base-form.component.d.ts +53 -26
  19. package/base-form/base-form.module.d.ts +1 -2
  20. package/base-form/base-form.property.d.ts +173 -45
  21. package/button/button.component.d.ts +16 -14
  22. package/button/button.property.d.ts +242 -100
  23. package/button/buttons.component.d.ts +8 -10
  24. package/calendar/calendar.component.d.ts +41 -27
  25. package/calendar/calendar.property.d.ts +69 -10
  26. package/card/card.component.d.ts +4 -6
  27. package/card/card.property.d.ts +50 -9
  28. package/carousel/carousel-panel.component.d.ts +15 -14
  29. package/carousel/carousel.component.d.ts +18 -19
  30. package/carousel/carousel.property.d.ts +168 -28
  31. package/cascade/cascade-portal.component.d.ts +28 -28
  32. package/cascade/cascade.component.d.ts +24 -30
  33. package/cascade/cascade.property.d.ts +292 -20
  34. package/checkbox/checkbox.component.d.ts +17 -17
  35. package/checkbox/checkbox.property.d.ts +274 -35
  36. package/collapse/collapse-panel.component.d.ts +5 -2
  37. package/collapse/collapse.component.d.ts +3 -7
  38. package/collapse/collapse.property.d.ts +113 -20
  39. package/color/color.component.d.ts +4 -9
  40. package/color/color.property.d.ts +36 -8
  41. package/color-picker/color-picker-portal.component.d.ts +40 -52
  42. package/color-picker/color-picker.component.d.ts +19 -28
  43. package/color-picker/color-picker.property.d.ts +260 -10
  44. package/comment/comment-reply.component.d.ts +1 -8
  45. package/comment/comment.component.d.ts +4 -14
  46. package/comment/comment.property.d.ts +21 -15
  47. package/container/aside.component.d.ts +3 -8
  48. package/container/container.component.d.ts +5 -9
  49. package/container/container.property.d.ts +33 -19
  50. package/container/footer.component.d.ts +2 -5
  51. package/container/header.component.d.ts +2 -5
  52. package/container/main.component.d.ts +2 -7
  53. package/core/animation/badge.d.ts +8 -0
  54. package/core/animation/connect.d.ts +8 -1
  55. package/core/animation/consts.d.ts +4 -0
  56. package/core/animation/drop.d.ts +4 -0
  57. package/core/animation/fade.d.ts +4 -0
  58. package/core/animation/move.d.ts +4 -0
  59. package/core/animation/opacity.d.ts +4 -0
  60. package/core/animation/slide.d.ts +4 -1
  61. package/core/config/config.d.ts +174 -108
  62. package/core/config/config.service.d.ts +5 -5
  63. package/core/config/index.d.ts +1 -0
  64. package/core/functions/chunk.d.ts +12 -1
  65. package/core/functions/clone-deep.d.ts +16 -0
  66. package/core/functions/convert.d.ts +77 -4
  67. package/core/functions/csspx.d.ts +5 -0
  68. package/core/functions/date.d.ts +59 -3
  69. package/core/functions/drop.d.ts +13 -1
  70. package/core/functions/flex.d.ts +4 -0
  71. package/core/functions/group-by.d.ts +5 -1
  72. package/core/functions/guid.d.ts +2 -1
  73. package/core/functions/has-in.d.ts +4 -0
  74. package/core/functions/order-by.d.ts +5 -1
  75. package/core/functions/parent-path.d.ts +8 -0
  76. package/core/functions/property.d.ts +12 -6
  77. package/core/functions/public-api.d.ts +1 -0
  78. package/core/functions/remove.d.ts +5 -1
  79. package/core/functions/resize.d.ts +13 -1
  80. package/core/interfaces/data.type.d.ts +172 -3
  81. package/core/interfaces/identify.type.d.ts +60 -0
  82. package/core/interfaces/layout.type.d.ts +88 -37
  83. package/core/interfaces/result-list.type.d.ts +91 -3
  84. package/core/services/http.service.d.ts +0 -22
  85. package/core/services/repository.service.d.ts +1 -1
  86. package/core/services/reuse-strategy.service.d.ts +0 -22
  87. package/core/services/storage.service.d.ts +0 -21
  88. package/core/theme/theme.d.ts +45 -1
  89. package/core/theme/theme.service.d.ts +46 -11
  90. package/core/util/animation.d.ts +1 -1
  91. package/core/util/camel-to-kebab.d.ts +13 -0
  92. package/core/util/check.d.ts +10 -2
  93. package/core/util/computed-style.d.ts +8 -0
  94. package/core/util/host.d.ts +3 -2
  95. package/core/util/html.d.ts +3 -2
  96. package/core/util/kebab-to-camel.d.ts +13 -0
  97. package/core/util/log.d.ts +10 -2
  98. package/core/util/option.d.ts +3 -4
  99. package/core/util/public-api.d.ts +2 -0
  100. package/crumb/crumb.component.d.ts +1 -10
  101. package/crumb/crumb.property.d.ts +12 -8
  102. package/date-picker/date-picker-portal.component.d.ts +80 -33
  103. package/date-picker/date-picker.component.d.ts +74 -32
  104. package/date-picker/date-picker.property.d.ts +662 -214
  105. package/date-picker/date-range-portal.component.d.ts +102 -49
  106. package/date-picker/date-range.component.d.ts +87 -43
  107. package/date-picker/picker-date.component.d.ts +63 -17
  108. package/date-picker/picker-month.component.d.ts +59 -13
  109. package/date-picker/picker-quarter.component.d.ts +61 -15
  110. package/date-picker/picker-year.component.d.ts +8 -11
  111. package/description/description-item.component.d.ts +1 -1
  112. package/description/description.component.d.ts +6 -10
  113. package/description/description.property.d.ts +135 -16
  114. package/dialog/dialog-portal.component.d.ts +5 -6
  115. package/dialog/dialog-portal.directives.d.ts +1 -1
  116. package/dialog/dialog.component.d.ts +30 -23
  117. package/dialog/dialog.property.d.ts +77 -134
  118. package/doc/doc.component.d.ts +2 -5
  119. package/drag/drag.directive.d.ts +1 -1
  120. package/drag/drag.property.d.ts +4 -5
  121. package/drawer/drawer-container.component.d.ts +1 -1
  122. package/drawer/drawer-portal.component.d.ts +1 -1
  123. package/drawer/drawer.component.d.ts +15 -14
  124. package/drawer/drawer.property.d.ts +26 -18
  125. package/dropdown/dropdown-portal.component.d.ts +36 -45
  126. package/dropdown/dropdown.component.d.ts +17 -21
  127. package/dropdown/dropdown.property.d.ts +24 -21
  128. package/empty/empty.component.d.ts +0 -7
  129. package/empty/empty.property.d.ts +27 -4
  130. package/esm2022/affix/affix.component.mjs +6 -11
  131. package/esm2022/affix/affix.module.mjs +5 -5
  132. package/esm2022/affix/affix.property.mjs +22 -20
  133. package/esm2022/alert/alert.component.mjs +39 -44
  134. package/esm2022/alert/alert.module.mjs +5 -5
  135. package/esm2022/alert/alert.property.mjs +102 -107
  136. package/esm2022/anchor/anchor-inner.component.mjs +4 -4
  137. package/esm2022/anchor/anchor.component.mjs +73 -95
  138. package/esm2022/anchor/anchor.module.mjs +5 -5
  139. package/esm2022/anchor/anchor.property.mjs +45 -35
  140. package/esm2022/api/api.component.mjs +11 -14
  141. package/esm2022/api/api.module.mjs +5 -5
  142. package/esm2022/auto-complete/auto-complete-portal.component.mjs +36 -47
  143. package/esm2022/auto-complete/auto-complete.component.mjs +122 -162
  144. package/esm2022/auto-complete/auto-complete.module.mjs +5 -5
  145. package/esm2022/auto-complete/auto-complete.property.mjs +142 -55
  146. package/esm2022/avatar/avatar-group.component.mjs +4 -4
  147. package/esm2022/avatar/avatar.component.mjs +75 -81
  148. package/esm2022/avatar/avatar.module.mjs +5 -5
  149. package/esm2022/avatar/avatar.property.mjs +116 -45
  150. package/esm2022/back-top/back-top.component.mjs +57 -73
  151. package/esm2022/back-top/back-top.module.mjs +5 -5
  152. package/esm2022/back-top/back-top.property.mjs +37 -29
  153. package/esm2022/badge/badge.component.mjs +51 -59
  154. package/esm2022/badge/badge.module.mjs +5 -5
  155. package/esm2022/badge/badge.property.mjs +111 -38
  156. package/esm2022/base-form/base-form.component.mjs +89 -81
  157. package/esm2022/base-form/base-form.module.mjs +7 -8
  158. package/esm2022/base-form/base-form.property.mjs +200 -89
  159. package/esm2022/button/button.component.mjs +50 -59
  160. package/esm2022/button/button.module.mjs +5 -5
  161. package/esm2022/button/button.property.mjs +293 -98
  162. package/esm2022/button/buttons.component.mjs +35 -21
  163. package/esm2022/calendar/calendar.component.mjs +56 -84
  164. package/esm2022/calendar/calendar.module.mjs +5 -5
  165. package/esm2022/calendar/calendar.property.mjs +78 -24
  166. package/esm2022/card/card.component.mjs +10 -14
  167. package/esm2022/card/card.module.mjs +5 -5
  168. package/esm2022/card/card.property.mjs +57 -22
  169. package/esm2022/carousel/carousel-panel.component.mjs +98 -76
  170. package/esm2022/carousel/carousel.component.mjs +55 -65
  171. package/esm2022/carousel/carousel.module.mjs +5 -5
  172. package/esm2022/carousel/carousel.property.mjs +215 -85
  173. package/esm2022/cascade/cascade-portal.component.mjs +77 -69
  174. package/esm2022/cascade/cascade.component.mjs +107 -135
  175. package/esm2022/cascade/cascade.module.mjs +5 -5
  176. package/esm2022/cascade/cascade.property.mjs +137 -48
  177. package/esm2022/checkbox/checkbox.component.mjs +68 -83
  178. package/esm2022/checkbox/checkbox.module.mjs +5 -5
  179. package/esm2022/checkbox/checkbox.property.mjs +136 -73
  180. package/esm2022/collapse/collapse-panel.component.mjs +31 -21
  181. package/esm2022/collapse/collapse.component.mjs +16 -21
  182. package/esm2022/collapse/collapse.module.mjs +5 -5
  183. package/esm2022/collapse/collapse.property.mjs +156 -66
  184. package/esm2022/color/color.component.mjs +25 -26
  185. package/esm2022/color/color.module.mjs +5 -5
  186. package/esm2022/color/color.property.mjs +47 -27
  187. package/esm2022/color-picker/color-picker-portal.component.mjs +120 -130
  188. package/esm2022/color-picker/color-picker.component.mjs +76 -117
  189. package/esm2022/color-picker/color-picker.module.mjs +5 -5
  190. package/esm2022/color-picker/color-picker.property.mjs +123 -27
  191. package/esm2022/comment/comment-reply.component.mjs +9 -24
  192. package/esm2022/comment/comment.component.mjs +11 -40
  193. package/esm2022/comment/comment.module.mjs +5 -5
  194. package/esm2022/comment/comment.property.mjs +27 -50
  195. package/esm2022/container/aside.component.mjs +12 -15
  196. package/esm2022/container/container.component.mjs +21 -24
  197. package/esm2022/container/container.module.mjs +5 -5
  198. package/esm2022/container/container.property.mjs +55 -51
  199. package/esm2022/container/footer.component.mjs +14 -16
  200. package/esm2022/container/header.component.mjs +14 -16
  201. package/esm2022/container/main.component.mjs +10 -13
  202. package/esm2022/core/animation/badge.mjs +17 -3
  203. package/esm2022/core/animation/connect.mjs +17 -99
  204. package/esm2022/core/animation/consts.mjs +5 -1
  205. package/esm2022/core/animation/drop.mjs +5 -1
  206. package/esm2022/core/animation/fade.mjs +13 -3
  207. package/esm2022/core/animation/move.mjs +5 -1
  208. package/esm2022/core/animation/opacity.mjs +5 -1
  209. package/esm2022/core/animation/slide.mjs +5 -23
  210. package/esm2022/core/config/config.mjs +1 -1
  211. package/esm2022/core/config/config.service.mjs +11 -59
  212. package/esm2022/core/config/index.mjs +2 -0
  213. package/esm2022/core/functions/chunk.mjs +12 -1
  214. package/esm2022/core/functions/clone-deep.mjs +17 -1
  215. package/esm2022/core/functions/convert.mjs +110 -13
  216. package/esm2022/core/functions/csspx.mjs +17 -0
  217. package/esm2022/core/functions/date.mjs +80 -4
  218. package/esm2022/core/functions/drop.mjs +13 -1
  219. package/esm2022/core/functions/flex.mjs +5 -1
  220. package/esm2022/core/functions/group-by.mjs +5 -1
  221. package/esm2022/core/functions/guid.mjs +3 -2
  222. package/esm2022/core/functions/has-in.mjs +5 -1
  223. package/esm2022/core/functions/order-by.mjs +5 -1
  224. package/esm2022/core/functions/parent-path.mjs +9 -1
  225. package/esm2022/core/functions/property.mjs +16 -8
  226. package/esm2022/core/functions/public-api.mjs +2 -1
  227. package/esm2022/core/functions/remove.mjs +5 -1
  228. package/esm2022/core/functions/resize.mjs +7 -5
  229. package/esm2022/core/interfaces/data.type.mjs +97 -8
  230. package/esm2022/core/interfaces/identify.type.mjs +5 -2
  231. package/esm2022/core/interfaces/layout.type.mjs +1 -1
  232. package/esm2022/core/interfaces/result-list.type.mjs +1 -1
  233. package/esm2022/core/services/http.service.mjs +4 -33
  234. package/esm2022/core/services/preloading-strategy.service.mjs +4 -6
  235. package/esm2022/core/services/repository.service.mjs +1 -1
  236. package/esm2022/core/services/reuse-strategy.service.mjs +1 -26
  237. package/esm2022/core/services/storage.service.mjs +4 -26
  238. package/esm2022/core/theme/theme.mjs +55 -11
  239. package/esm2022/core/theme/theme.service.mjs +92 -20
  240. package/esm2022/core/util/animation.mjs +2 -23
  241. package/esm2022/core/util/camel-to-kebab.mjs +16 -0
  242. package/esm2022/core/util/check.mjs +11 -3
  243. package/esm2022/core/util/computed-style.mjs +9 -1
  244. package/esm2022/core/util/host.mjs +4 -3
  245. package/esm2022/core/util/html.mjs +5 -4
  246. package/esm2022/core/util/kebab-to-camel.mjs +16 -0
  247. package/esm2022/core/util/log.mjs +11 -3
  248. package/esm2022/core/util/option.mjs +4 -5
  249. package/esm2022/core/util/public-api.mjs +3 -1
  250. package/esm2022/crumb/crumb.component.mjs +6 -29
  251. package/esm2022/crumb/crumb.module.mjs +5 -5
  252. package/esm2022/crumb/crumb.property.mjs +21 -26
  253. package/esm2022/date-picker/date-picker-portal.component.mjs +86 -102
  254. package/esm2022/date-picker/date-picker.component.mjs +157 -191
  255. package/esm2022/date-picker/date-picker.module.mjs +5 -5
  256. package/esm2022/date-picker/date-picker.property.mjs +440 -462
  257. package/esm2022/date-picker/date-quarter.pipe.mjs +4 -4
  258. package/esm2022/date-picker/date-range-portal.component.mjs +172 -186
  259. package/esm2022/date-picker/date-range.component.mjs +224 -266
  260. package/esm2022/date-picker/picker-date.component.mjs +150 -150
  261. package/esm2022/date-picker/picker-month.component.mjs +115 -118
  262. package/esm2022/date-picker/picker-quarter.component.mjs +120 -119
  263. package/esm2022/date-picker/picker-year.component.mjs +121 -108
  264. package/esm2022/description/description-item.component.mjs +12 -11
  265. package/esm2022/description/description.component.mjs +33 -48
  266. package/esm2022/description/description.module.mjs +5 -5
  267. package/esm2022/description/description.property.mjs +175 -52
  268. package/esm2022/dialog/dialog-container.component.mjs +4 -4
  269. package/esm2022/dialog/dialog-portal.component.mjs +29 -35
  270. package/esm2022/dialog/dialog-portal.directives.mjs +20 -20
  271. package/esm2022/dialog/dialog-ref.mjs +3 -3
  272. package/esm2022/dialog/dialog.component.mjs +119 -133
  273. package/esm2022/dialog/dialog.module.mjs +5 -5
  274. package/esm2022/dialog/dialog.property.mjs +149 -139
  275. package/esm2022/dialog/dialog.service.mjs +8 -8
  276. package/esm2022/doc/doc.component.mjs +11 -12
  277. package/esm2022/doc/doc.module.mjs +5 -5
  278. package/esm2022/drag/drag.directive.mjs +8 -21
  279. package/esm2022/drag/drag.module.mjs +5 -5
  280. package/esm2022/drag/drag.property.mjs +10 -16
  281. package/esm2022/drawer/drawer-container.component.mjs +9 -9
  282. package/esm2022/drawer/drawer-portal.component.mjs +11 -13
  283. package/esm2022/drawer/drawer-portal.directives.mjs +10 -10
  284. package/esm2022/drawer/drawer.component.mjs +40 -59
  285. package/esm2022/drawer/drawer.module.mjs +5 -5
  286. package/esm2022/drawer/drawer.property.mjs +47 -54
  287. package/esm2022/drawer/drawer.service.mjs +6 -6
  288. package/esm2022/dropdown/dropdown-portal.component.mjs +90 -91
  289. package/esm2022/dropdown/dropdown.component.mjs +75 -91
  290. package/esm2022/dropdown/dropdown.module.mjs +5 -5
  291. package/esm2022/dropdown/dropdown.property.mjs +62 -59
  292. package/esm2022/empty/empty.component.mjs +6 -26
  293. package/esm2022/empty/empty.module.mjs +5 -5
  294. package/esm2022/empty/empty.property.mjs +41 -20
  295. package/esm2022/examples/examples.component.mjs +11 -12
  296. package/esm2022/examples/examples.module.mjs +5 -5
  297. package/esm2022/find/find.component.mjs +188 -232
  298. package/esm2022/find/find.module.mjs +5 -5
  299. package/esm2022/find/find.property.mjs +234 -193
  300. package/esm2022/form/control.component.mjs +136 -114
  301. package/esm2022/form/form.component.mjs +28 -36
  302. package/esm2022/form/form.module.mjs +5 -5
  303. package/esm2022/form/form.property.mjs +57 -55
  304. package/esm2022/highlight/highlight.component.mjs +54 -59
  305. package/esm2022/highlight/highlight.module.mjs +5 -5
  306. package/esm2022/highlight/highlight.property.mjs +25 -21
  307. package/esm2022/highlight/highlight.service.mjs +17 -0
  308. package/esm2022/highlight/public-api.mjs +2 -1
  309. package/esm2022/i18n/i18n.directive.mjs +17 -31
  310. package/esm2022/i18n/i18n.module.mjs +5 -5
  311. package/esm2022/i18n/i18n.pipe.mjs +4 -4
  312. package/esm2022/i18n/i18n.property.mjs +2 -2
  313. package/esm2022/i18n/i18n.service.mjs +4 -4
  314. package/esm2022/i18n/languages/ar_EG.mjs +122 -77
  315. package/esm2022/i18n/languages/bg_BG.mjs +135 -87
  316. package/esm2022/i18n/languages/ca_ES.mjs +130 -82
  317. package/esm2022/i18n/languages/cs_CZ.mjs +127 -79
  318. package/esm2022/i18n/languages/da_DK.mjs +129 -81
  319. package/esm2022/i18n/languages/de_DE.mjs +125 -77
  320. package/esm2022/i18n/languages/el_GR.mjs +132 -84
  321. package/esm2022/i18n/languages/en_GB.mjs +5 -2
  322. package/esm2022/i18n/languages/en_US.mjs +5 -2
  323. package/esm2022/i18n/languages/es_ES.mjs +131 -83
  324. package/esm2022/i18n/languages/et_EE.mjs +130 -82
  325. package/esm2022/i18n/languages/fa_IR.mjs +109 -61
  326. package/esm2022/i18n/languages/fi_FI.mjs +134 -86
  327. package/esm2022/i18n/languages/fr_BE.mjs +128 -80
  328. package/esm2022/i18n/languages/fr_FR.mjs +127 -79
  329. package/esm2022/i18n/languages/he_IL.mjs +119 -74
  330. package/esm2022/i18n/languages/hi_IN.mjs +104 -56
  331. package/esm2022/i18n/languages/hr_HR.mjs +133 -85
  332. package/esm2022/i18n/languages/hu_HU.mjs +132 -84
  333. package/esm2022/i18n/languages/hy_AM.mjs +133 -85
  334. package/esm2022/i18n/languages/id_ID.mjs +119 -71
  335. package/esm2022/i18n/languages/is_IS.mjs +125 -77
  336. package/esm2022/i18n/languages/it_IT.mjs +127 -79
  337. package/esm2022/i18n/languages/ja_JP.mjs +95 -47
  338. package/esm2022/i18n/languages/ka_GE.mjs +106 -58
  339. package/esm2022/i18n/languages/kn_IN.mjs +110 -62
  340. package/esm2022/i18n/languages/ko_KR.mjs +126 -70
  341. package/esm2022/i18n/languages/ku_IQ.mjs +117 -85
  342. package/esm2022/i18n/languages/lv_LV.mjs +128 -72
  343. package/esm2022/i18n/languages/mn_MN.mjs +138 -82
  344. package/esm2022/i18n/languages/ms_MY.mjs +124 -68
  345. package/esm2022/i18n/languages/nb_NO.mjs +133 -77
  346. package/esm2022/i18n/languages/ne_NP.mjs +117 -61
  347. package/esm2022/i18n/languages/nl_BE.mjs +134 -78
  348. package/esm2022/i18n/languages/nl_NL.mjs +134 -78
  349. package/esm2022/i18n/languages/pl_PL.mjs +132 -76
  350. package/esm2022/i18n/languages/pt_BR.mjs +133 -77
  351. package/esm2022/i18n/languages/pt_PT.mjs +133 -77
  352. package/esm2022/i18n/languages/ro_RO.mjs +130 -74
  353. package/esm2022/i18n/languages/ru_RU.mjs +131 -75
  354. package/esm2022/i18n/languages/sk_SK.mjs +130 -83
  355. package/esm2022/i18n/languages/sl_SI.mjs +121 -73
  356. package/esm2022/i18n/languages/sr_RS.mjs +138 -90
  357. package/esm2022/i18n/languages/sv_SE.mjs +132 -84
  358. package/esm2022/i18n/languages/ta_IN.mjs +117 -61
  359. package/esm2022/i18n/languages/th_TH.mjs +99 -43
  360. package/esm2022/i18n/languages/tr_TR.mjs +126 -70
  361. package/esm2022/i18n/languages/uk_UA.mjs +124 -68
  362. package/esm2022/i18n/languages/vi_VN.mjs +133 -77
  363. package/esm2022/i18n/languages/zh_CN.mjs +5 -2
  364. package/esm2022/i18n/languages/zh_TW.mjs +5 -2
  365. package/esm2022/icon/icon.component.mjs +48 -77
  366. package/esm2022/icon/icon.module.mjs +5 -5
  367. package/esm2022/icon/icon.property.mjs +52 -30
  368. package/esm2022/icon/icon.service.mjs +15 -14
  369. package/esm2022/image/image-group.component.mjs +15 -15
  370. package/esm2022/image/image-preview.component.mjs +47 -46
  371. package/esm2022/image/image.component.mjs +34 -53
  372. package/esm2022/image/image.module.mjs +5 -5
  373. package/esm2022/image/image.property.mjs +152 -38
  374. package/esm2022/index.mjs +1 -3
  375. package/esm2022/inner/inner.component.mjs +15 -20
  376. package/esm2022/inner/inner.module.mjs +5 -5
  377. package/esm2022/inner/inner.property.mjs +17 -15
  378. package/esm2022/input/input-group.component.mjs +5 -7
  379. package/esm2022/input/input.component.mjs +130 -143
  380. package/esm2022/input/input.module.mjs +5 -5
  381. package/esm2022/input/input.property.mjs +205 -143
  382. package/esm2022/input-number/input-number.component.mjs +68 -86
  383. package/esm2022/input-number/input-number.module.mjs +5 -5
  384. package/esm2022/input-number/input-number.property.mjs +130 -60
  385. package/esm2022/keyword/keyword.directive.mjs +46 -54
  386. package/esm2022/keyword/keyword.module.mjs +5 -5
  387. package/esm2022/keyword/keyword.property.mjs +32 -28
  388. package/esm2022/layout/col.component.mjs +48 -51
  389. package/esm2022/layout/layout.module.mjs +5 -5
  390. package/esm2022/layout/layout.property.mjs +125 -63
  391. package/esm2022/layout/row.component.mjs +36 -27
  392. package/esm2022/link/link.component.mjs +18 -45
  393. package/esm2022/link/link.module.mjs +5 -5
  394. package/esm2022/link/link.property.mjs +101 -41
  395. package/esm2022/list/list-drop-group.directive.mjs +9 -18
  396. package/esm2022/list/list-option.component.mjs +16 -33
  397. package/esm2022/list/list.component.mjs +160 -164
  398. package/esm2022/list/list.module.mjs +5 -5
  399. package/esm2022/list/list.property.mjs +195 -188
  400. package/esm2022/loading/loading.component.mjs +44 -45
  401. package/esm2022/loading/loading.module.mjs +5 -5
  402. package/esm2022/loading/loading.property.mjs +50 -52
  403. package/esm2022/menu/menu-node.component.mjs +21 -21
  404. package/esm2022/menu/menu.component.mjs +57 -76
  405. package/esm2022/menu/menu.module.mjs +5 -5
  406. package/esm2022/menu/menu.property.mjs +56 -73
  407. package/esm2022/message/message.component.mjs +8 -8
  408. package/esm2022/message/message.module.mjs +5 -5
  409. package/esm2022/message/message.property.mjs +1 -1
  410. package/esm2022/message/message.service.mjs +7 -7
  411. package/esm2022/message-box/message-box.component.mjs +5 -5
  412. package/esm2022/message-box/message-box.module.mjs +5 -5
  413. package/esm2022/message-box/message-box.service.mjs +6 -6
  414. package/esm2022/notification/notification.component.mjs +8 -8
  415. package/esm2022/notification/notification.module.mjs +5 -5
  416. package/esm2022/notification/notification.property.mjs +1 -1
  417. package/esm2022/notification/notification.service.mjs +8 -8
  418. package/esm2022/outlet/outlet.directive.mjs +12 -14
  419. package/esm2022/outlet/outlet.module.mjs +5 -5
  420. package/esm2022/outlet/outlet.property.mjs +2 -2
  421. package/esm2022/page-header/page-header.component.mjs +12 -28
  422. package/esm2022/page-header/page-header.module.mjs +5 -5
  423. package/esm2022/page-header/page-header.property.mjs +31 -27
  424. package/esm2022/pagination/pagination.component.mjs +74 -100
  425. package/esm2022/pagination/pagination.module.mjs +5 -5
  426. package/esm2022/pagination/pagination.property.mjs +99 -136
  427. package/esm2022/pattern/pattern.component.mjs +12 -13
  428. package/esm2022/pattern/pattern.module.mjs +5 -5
  429. package/esm2022/pattern/pattern.property.mjs +2 -2
  430. package/esm2022/popconfirm/popconfirm.component.mjs +35 -47
  431. package/esm2022/popconfirm/popconfirm.module.mjs +5 -5
  432. package/esm2022/popconfirm/popconfirm.property.mjs +76 -62
  433. package/esm2022/popover/popover-portal.component.mjs +24 -75
  434. package/esm2022/popover/popover.directive.mjs +70 -86
  435. package/esm2022/popover/popover.module.mjs +5 -5
  436. package/esm2022/popover/popover.property.mjs +71 -58
  437. package/esm2022/portal/portal.module.mjs +5 -5
  438. package/esm2022/portal/portal.property.mjs +3 -3
  439. package/esm2022/portal/portal.service.mjs +4 -4
  440. package/esm2022/progress/progress.component.mjs +173 -167
  441. package/esm2022/progress/progress.module.mjs +5 -5
  442. package/esm2022/progress/progress.property.mjs +67 -71
  443. package/esm2022/radio/radio.component.mjs +45 -61
  444. package/esm2022/radio/radio.module.mjs +5 -5
  445. package/esm2022/radio/radio.property.mjs +139 -66
  446. package/esm2022/rate/rate.component.mjs +61 -79
  447. package/esm2022/rate/rate.module.mjs +5 -5
  448. package/esm2022/rate/rate.property.mjs +121 -29
  449. package/esm2022/resizable/resizable.directive.mjs +30 -45
  450. package/esm2022/resizable/resizable.module.mjs +5 -5
  451. package/esm2022/resizable/resizable.property.mjs +16 -46
  452. package/esm2022/result/result.component.mjs +13 -17
  453. package/esm2022/result/result.module.mjs +5 -5
  454. package/esm2022/result/result.property.mjs +25 -17
  455. package/esm2022/ripple/ripple.directive.mjs +40 -27
  456. package/esm2022/ripple/ripple.module.mjs +5 -5
  457. package/esm2022/ripple/ripple.property.mjs +27 -20
  458. package/esm2022/select/select-portal.component.mjs +52 -67
  459. package/esm2022/select/select.component.mjs +301 -289
  460. package/esm2022/select/select.module.mjs +5 -5
  461. package/esm2022/select/select.property.mjs +195 -102
  462. package/esm2022/skeleton/skeleton.component.mjs +12 -23
  463. package/esm2022/skeleton/skeleton.module.mjs +5 -5
  464. package/esm2022/skeleton/skeleton.property.mjs +31 -28
  465. package/esm2022/slider/slider.component.mjs +103 -149
  466. package/esm2022/slider/slider.module.mjs +5 -5
  467. package/esm2022/slider/slider.property.mjs +60 -79
  468. package/esm2022/slider-select/slider-select.component.mjs +201 -220
  469. package/esm2022/slider-select/slider-select.module.mjs +5 -5
  470. package/esm2022/slider-select/slider-select.property.mjs +143 -70
  471. package/esm2022/statistic/countdown.component.mjs +13 -16
  472. package/esm2022/statistic/statistic.component.mjs +23 -21
  473. package/esm2022/statistic/statistic.module.mjs +5 -5
  474. package/esm2022/statistic/statistic.property.mjs +68 -34
  475. package/esm2022/steps/steps.component.mjs +33 -63
  476. package/esm2022/steps/steps.module.mjs +5 -5
  477. package/esm2022/steps/steps.property.mjs +28 -39
  478. package/esm2022/switch/switch.component.mjs +22 -37
  479. package/esm2022/switch/switch.module.mjs +5 -5
  480. package/esm2022/switch/switch.property.mjs +122 -32
  481. package/esm2022/table/table-body.component.mjs +134 -139
  482. package/esm2022/table/table-foot.component.mjs +15 -18
  483. package/esm2022/table/table-head.component.mjs +60 -91
  484. package/esm2022/table/table.component.mjs +192 -222
  485. package/esm2022/table/table.module.mjs +5 -5
  486. package/esm2022/table/table.property.mjs +396 -341
  487. package/esm2022/tabs/tab-content.component.mjs +13 -16
  488. package/esm2022/tabs/tab-link.directive.mjs +7 -7
  489. package/esm2022/tabs/tab.component.mjs +9 -17
  490. package/esm2022/tabs/tabs.component.mjs +83 -135
  491. package/esm2022/tabs/tabs.module.mjs +5 -5
  492. package/esm2022/tabs/tabs.property.mjs +80 -91
  493. package/esm2022/tag/tag.component.mjs +19 -33
  494. package/esm2022/tag/tag.module.mjs +5 -5
  495. package/esm2022/tag/tag.property.mjs +44 -68
  496. package/esm2022/text-retract/text-retract.component.mjs +29 -46
  497. package/esm2022/text-retract/text-retract.module.mjs +5 -5
  498. package/esm2022/text-retract/text-retract.property.mjs +22 -18
  499. package/esm2022/textarea/textarea.component.mjs +49 -79
  500. package/esm2022/textarea/textarea.module.mjs +5 -5
  501. package/esm2022/textarea/textarea.property.mjs +124 -47
  502. package/esm2022/theme/theme.component.mjs +86 -81
  503. package/esm2022/theme/theme.module.mjs +5 -5
  504. package/esm2022/theme/theme.property.mjs +35 -46
  505. package/esm2022/time-ago/time-ago.module.mjs +5 -5
  506. package/esm2022/time-ago/time-ago.pipe.mjs +12 -11
  507. package/esm2022/time-ago/time-ago.property.mjs +2 -2
  508. package/esm2022/time-picker/time-picker-frame.component.mjs +173 -188
  509. package/esm2022/time-picker/time-picker-portal.component.mjs +35 -42
  510. package/esm2022/time-picker/time-picker.component.mjs +139 -170
  511. package/esm2022/time-picker/time-picker.module.mjs +5 -5
  512. package/esm2022/time-picker/time-picker.property.mjs +158 -70
  513. package/esm2022/time-range/time-range.module.mjs +5 -5
  514. package/esm2022/time-range/time-range.pipe.mjs +10 -10
  515. package/esm2022/time-range/time-range.property.mjs +2 -2
  516. package/esm2022/timeline/timeline.component.mjs +14 -38
  517. package/esm2022/timeline/timeline.module.mjs +5 -5
  518. package/esm2022/timeline/timeline.property.mjs +30 -30
  519. package/esm2022/tooltip/tooltip-portal.component.mjs +51 -65
  520. package/esm2022/tooltip/tooltip.directive.mjs +65 -62
  521. package/esm2022/tooltip/tooltip.module.mjs +5 -5
  522. package/esm2022/tooltip/tooltip.property.mjs +53 -47
  523. package/esm2022/transfer/transfer.component.mjs +225 -184
  524. package/esm2022/transfer/transfer.module.mjs +5 -5
  525. package/esm2022/transfer/transfer.property.mjs +84 -76
  526. package/esm2022/tree/tree-node.component.mjs +142 -132
  527. package/esm2022/tree/tree.component.mjs +236 -232
  528. package/esm2022/tree/tree.module.mjs +5 -5
  529. package/esm2022/tree/tree.property.mjs +228 -226
  530. package/esm2022/tree/tree.service.mjs +4 -4
  531. package/esm2022/tree-file/tree-file.component.mjs +34 -43
  532. package/esm2022/tree-file/tree-file.module.mjs +5 -5
  533. package/esm2022/tree-file/tree-file.property.mjs +45 -56
  534. package/esm2022/tree-select/tree-select-portal.component.mjs +45 -78
  535. package/esm2022/tree-select/tree-select.component.mjs +283 -296
  536. package/esm2022/tree-select/tree-select.module.mjs +5 -5
  537. package/esm2022/tree-select/tree-select.property.mjs +203 -125
  538. package/esm2022/typography/typography.component.mjs +13 -10
  539. package/esm2022/typography/typography.module.mjs +5 -5
  540. package/esm2022/typography/typography.property.mjs +12 -11
  541. package/esm2022/upload/upload-portal.component.mjs +54 -57
  542. package/esm2022/upload/upload.component.mjs +79 -98
  543. package/esm2022/upload/upload.module.mjs +5 -5
  544. package/esm2022/upload/upload.property.mjs +73 -68
  545. package/examples/examples.component.d.ts +2 -5
  546. package/fesm2022/ng-nest-ui-affix.mjs +30 -32
  547. package/fesm2022/ng-nest-ui-affix.mjs.map +1 -1
  548. package/fesm2022/ng-nest-ui-alert.mjs +142 -152
  549. package/fesm2022/ng-nest-ui-alert.mjs.map +1 -1
  550. package/fesm2022/ng-nest-ui-anchor.mjs +121 -133
  551. package/fesm2022/ng-nest-ui-anchor.mjs.map +1 -1
  552. package/fesm2022/ng-nest-ui-api.mjs +14 -17
  553. package/fesm2022/ng-nest-ui-api.mjs.map +1 -1
  554. package/fesm2022/ng-nest-ui-auto-complete.mjs +296 -260
  555. package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
  556. package/fesm2022/ng-nest-ui-avatar.mjs +195 -130
  557. package/fesm2022/ng-nest-ui-avatar.mjs.map +1 -1
  558. package/fesm2022/ng-nest-ui-back-top.mjs +95 -103
  559. package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
  560. package/fesm2022/ng-nest-ui-badge.mjs +161 -96
  561. package/fesm2022/ng-nest-ui-badge.mjs.map +1 -1
  562. package/fesm2022/ng-nest-ui-base-form.mjs +286 -166
  563. package/fesm2022/ng-nest-ui-base-form.mjs.map +1 -1
  564. package/fesm2022/ng-nest-ui-button.mjs +376 -175
  565. package/fesm2022/ng-nest-ui-button.mjs.map +1 -1
  566. package/fesm2022/ng-nest-ui-calendar.mjs +134 -108
  567. package/fesm2022/ng-nest-ui-calendar.mjs.map +1 -1
  568. package/fesm2022/ng-nest-ui-card.mjs +67 -36
  569. package/fesm2022/ng-nest-ui-card.mjs.map +1 -1
  570. package/fesm2022/ng-nest-ui-carousel.mjs +365 -223
  571. package/fesm2022/ng-nest-ui-carousel.mjs.map +1 -1
  572. package/fesm2022/ng-nest-ui-cascade.mjs +318 -249
  573. package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
  574. package/fesm2022/ng-nest-ui-checkbox.mjs +203 -155
  575. package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
  576. package/fesm2022/ng-nest-ui-collapse.mjs +202 -106
  577. package/fesm2022/ng-nest-ui-collapse.mjs.map +1 -1
  578. package/fesm2022/ng-nest-ui-color-picker.mjs +316 -270
  579. package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
  580. package/fesm2022/ng-nest-ui-color.mjs +73 -54
  581. package/fesm2022/ng-nest-ui-color.mjs.map +1 -1
  582. package/fesm2022/ng-nest-ui-comment.mjs +44 -108
  583. package/fesm2022/ng-nest-ui-comment.mjs.map +1 -1
  584. package/fesm2022/ng-nest-ui-container.mjs +119 -123
  585. package/fesm2022/ng-nest-ui-container.mjs.map +1 -1
  586. package/fesm2022/ng-nest-ui-core.mjs +985 -664
  587. package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
  588. package/fesm2022/ng-nest-ui-crumb.mjs +28 -55
  589. package/fesm2022/ng-nest-ui-crumb.mjs.map +1 -1
  590. package/fesm2022/ng-nest-ui-date-picker.mjs +1552 -1671
  591. package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
  592. package/fesm2022/ng-nest-ui-description.mjs +218 -109
  593. package/fesm2022/ng-nest-ui-description.mjs.map +1 -1
  594. package/fesm2022/ng-nest-ui-dialog.mjs +325 -334
  595. package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
  596. package/fesm2022/ng-nest-ui-doc.mjs +14 -15
  597. package/fesm2022/ng-nest-ui-doc.mjs.map +1 -1
  598. package/fesm2022/ng-nest-ui-drag.mjs +20 -39
  599. package/fesm2022/ng-nest-ui-drag.mjs.map +1 -1
  600. package/fesm2022/ng-nest-ui-drawer.mjs +116 -145
  601. package/fesm2022/ng-nest-ui-drawer.mjs.map +1 -1
  602. package/fesm2022/ng-nest-ui-dropdown.mjs +223 -238
  603. package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
  604. package/fesm2022/ng-nest-ui-empty.mjs +49 -46
  605. package/fesm2022/ng-nest-ui-empty.mjs.map +1 -1
  606. package/fesm2022/ng-nest-ui-examples.mjs +14 -15
  607. package/fesm2022/ng-nest-ui-examples.mjs.map +1 -1
  608. package/fesm2022/ng-nest-ui-find.mjs +422 -425
  609. package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
  610. package/fesm2022/ng-nest-ui-form.mjs +216 -201
  611. package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
  612. package/fesm2022/ng-nest-ui-highlight.mjs +93 -81
  613. package/fesm2022/ng-nest-ui-highlight.mjs.map +1 -1
  614. package/fesm2022/ng-nest-ui-i18n.mjs +5892 -3516
  615. package/fesm2022/ng-nest-ui-i18n.mjs.map +1 -1
  616. package/fesm2022/ng-nest-ui-icon.mjs +114 -120
  617. package/fesm2022/ng-nest-ui-icon.mjs.map +1 -1
  618. package/fesm2022/ng-nest-ui-image.mjs +244 -147
  619. package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
  620. package/fesm2022/ng-nest-ui-inner.mjs +33 -35
  621. package/fesm2022/ng-nest-ui-inner.mjs.map +1 -1
  622. package/fesm2022/ng-nest-ui-input-number.mjs +198 -146
  623. package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
  624. package/fesm2022/ng-nest-ui-input.mjs +340 -292
  625. package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
  626. package/fesm2022/ng-nest-ui-keyword.mjs +78 -82
  627. package/fesm2022/ng-nest-ui-keyword.mjs.map +1 -1
  628. package/fesm2022/ng-nest-ui-layout.mjs +205 -140
  629. package/fesm2022/ng-nest-ui-layout.mjs.map +1 -1
  630. package/fesm2022/ng-nest-ui-link.mjs +119 -86
  631. package/fesm2022/ng-nest-ui-link.mjs.map +1 -1
  632. package/fesm2022/ng-nest-ui-list.mjs +376 -400
  633. package/fesm2022/ng-nest-ui-list.mjs.map +1 -1
  634. package/fesm2022/ng-nest-ui-loading.mjs +94 -97
  635. package/fesm2022/ng-nest-ui-loading.mjs.map +1 -1
  636. package/fesm2022/ng-nest-ui-menu.mjs +131 -167
  637. package/fesm2022/ng-nest-ui-menu.mjs.map +1 -1
  638. package/fesm2022/ng-nest-ui-message-box.mjs +13 -13
  639. package/fesm2022/ng-nest-ui-message-box.mjs.map +1 -1
  640. package/fesm2022/ng-nest-ui-message.mjs +17 -17
  641. package/fesm2022/ng-nest-ui-message.mjs.map +1 -1
  642. package/fesm2022/ng-nest-ui-notification.mjs +18 -18
  643. package/fesm2022/ng-nest-ui-notification.mjs.map +1 -1
  644. package/fesm2022/ng-nest-ui-outlet.mjs +16 -18
  645. package/fesm2022/ng-nest-ui-outlet.mjs.map +1 -1
  646. package/fesm2022/ng-nest-ui-page-header.mjs +44 -55
  647. package/fesm2022/ng-nest-ui-page-header.mjs.map +1 -1
  648. package/fesm2022/ng-nest-ui-pagination.mjs +173 -236
  649. package/fesm2022/ng-nest-ui-pagination.mjs.map +1 -1
  650. package/fesm2022/ng-nest-ui-pattern.mjs +16 -17
  651. package/fesm2022/ng-nest-ui-pattern.mjs.map +1 -1
  652. package/fesm2022/ng-nest-ui-popconfirm.mjs +110 -107
  653. package/fesm2022/ng-nest-ui-popconfirm.mjs.map +1 -1
  654. package/fesm2022/ng-nest-ui-popover.mjs +163 -215
  655. package/fesm2022/ng-nest-ui-popover.mjs.map +1 -1
  656. package/fesm2022/ng-nest-ui-portal.mjs +10 -10
  657. package/fesm2022/ng-nest-ui-portal.mjs.map +1 -1
  658. package/fesm2022/ng-nest-ui-progress.mjs +240 -238
  659. package/fesm2022/ng-nest-ui-progress.mjs.map +1 -1
  660. package/fesm2022/ng-nest-ui-radio.mjs +184 -127
  661. package/fesm2022/ng-nest-ui-radio.mjs.map +1 -1
  662. package/fesm2022/ng-nest-ui-rate.mjs +182 -108
  663. package/fesm2022/ng-nest-ui-rate.mjs.map +1 -1
  664. package/fesm2022/ng-nest-ui-resizable.mjs +46 -91
  665. package/fesm2022/ng-nest-ui-resizable.mjs.map +1 -1
  666. package/fesm2022/ng-nest-ui-result.mjs +38 -34
  667. package/fesm2022/ng-nest-ui-result.mjs.map +1 -1
  668. package/fesm2022/ng-nest-ui-ripple.mjs +68 -48
  669. package/fesm2022/ng-nest-ui-ripple.mjs.map +1 -1
  670. package/fesm2022/ng-nest-ui-select.mjs +547 -459
  671. package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
  672. package/fesm2022/ng-nest-ui-skeleton.mjs +44 -52
  673. package/fesm2022/ng-nest-ui-skeleton.mjs.map +1 -1
  674. package/fesm2022/ng-nest-ui-slider-select.mjs +344 -290
  675. package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
  676. package/fesm2022/ng-nest-ui-slider.mjs +163 -228
  677. package/fesm2022/ng-nest-ui-slider.mjs.map +1 -1
  678. package/fesm2022/ng-nest-ui-statistic.mjs +102 -68
  679. package/fesm2022/ng-nest-ui-statistic.mjs.map +1 -1
  680. package/fesm2022/ng-nest-ui-steps.mjs +61 -102
  681. package/fesm2022/ng-nest-ui-steps.mjs.map +1 -1
  682. package/fesm2022/ng-nest-ui-switch.mjs +145 -69
  683. package/fesm2022/ng-nest-ui-switch.mjs.map +1 -1
  684. package/fesm2022/ng-nest-ui-table.mjs +784 -800
  685. package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
  686. package/fesm2022/ng-nest-ui-tabs.mjs +185 -259
  687. package/fesm2022/ng-nest-ui-tabs.mjs.map +1 -1
  688. package/fesm2022/ng-nest-ui-tag.mjs +63 -101
  689. package/fesm2022/ng-nest-ui-tag.mjs.map +1 -1
  690. package/fesm2022/ng-nest-ui-text-retract.mjs +52 -64
  691. package/fesm2022/ng-nest-ui-text-retract.mjs.map +1 -1
  692. package/fesm2022/ng-nest-ui-textarea.mjs +173 -126
  693. package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
  694. package/fesm2022/ng-nest-ui-theme.mjs +123 -129
  695. package/fesm2022/ng-nest-ui-theme.mjs.map +1 -1
  696. package/fesm2022/ng-nest-ui-time-ago.mjs +16 -15
  697. package/fesm2022/ng-nest-ui-time-ago.mjs.map +1 -1
  698. package/fesm2022/ng-nest-ui-time-picker.mjs +498 -463
  699. package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
  700. package/fesm2022/ng-nest-ui-time-range.mjs +14 -14
  701. package/fesm2022/ng-nest-ui-time-range.mjs.map +1 -1
  702. package/fesm2022/ng-nest-ui-timeline.mjs +44 -68
  703. package/fesm2022/ng-nest-ui-timeline.mjs.map +1 -1
  704. package/fesm2022/ng-nest-ui-tooltip.mjs +168 -170
  705. package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
  706. package/fesm2022/ng-nest-ui-transfer.mjs +311 -262
  707. package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
  708. package/fesm2022/ng-nest-ui-tree-file.mjs +80 -99
  709. package/fesm2022/ng-nest-ui-tree-file.mjs.map +1 -1
  710. package/fesm2022/ng-nest-ui-tree-select.mjs +527 -495
  711. package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
  712. package/fesm2022/ng-nest-ui-tree.mjs +601 -587
  713. package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
  714. package/fesm2022/ng-nest-ui-typography.mjs +26 -22
  715. package/fesm2022/ng-nest-ui-typography.mjs.map +1 -1
  716. package/fesm2022/ng-nest-ui-upload.mjs +204 -220
  717. package/fesm2022/ng-nest-ui-upload.mjs.map +1 -1
  718. package/fesm2022/ng-nest-ui.mjs +0 -2
  719. package/fesm2022/ng-nest-ui.mjs.map +1 -1
  720. package/find/find.component.d.ts +30 -34
  721. package/find/find.property.d.ts +321 -108
  722. package/form/control.component.d.ts +37 -18
  723. package/form/form.component.d.ts +8 -10
  724. package/form/form.property.d.ts +111 -27
  725. package/highlight/highlight.component.d.ts +10 -17
  726. package/highlight/highlight.property.d.ts +40 -11
  727. package/highlight/highlight.service.d.ts +8 -0
  728. package/highlight/public-api.d.ts +1 -0
  729. package/i18n/i18n.directive.d.ts +6 -9
  730. package/i18n/i18n.property.d.ts +6 -2
  731. package/i18n/i18n.service.d.ts +2 -2
  732. package/i18n/languages/ar_EG.d.ts +56 -0
  733. package/i18n/languages/bg_BG.d.ts +56 -0
  734. package/i18n/languages/ca_ES.d.ts +56 -0
  735. package/i18n/languages/cs_CZ.d.ts +56 -0
  736. package/i18n/languages/da_DK.d.ts +56 -0
  737. package/i18n/languages/de_DE.d.ts +56 -0
  738. package/i18n/languages/el_GR.d.ts +56 -0
  739. package/i18n/languages/en_GB.d.ts +3 -0
  740. package/i18n/languages/en_US.d.ts +3 -0
  741. package/i18n/languages/es_ES.d.ts +56 -0
  742. package/i18n/languages/et_EE.d.ts +56 -0
  743. package/i18n/languages/fa_IR.d.ts +56 -0
  744. package/i18n/languages/fi_FI.d.ts +56 -0
  745. package/i18n/languages/fr_BE.d.ts +60 -4
  746. package/i18n/languages/fr_FR.d.ts +56 -0
  747. package/i18n/languages/he_IL.d.ts +56 -0
  748. package/i18n/languages/hi_IN.d.ts +56 -0
  749. package/i18n/languages/hr_HR.d.ts +56 -0
  750. package/i18n/languages/hu_HU.d.ts +56 -0
  751. package/i18n/languages/hy_AM.d.ts +56 -0
  752. package/i18n/languages/id_ID.d.ts +56 -0
  753. package/i18n/languages/is_IS.d.ts +56 -0
  754. package/i18n/languages/it_IT.d.ts +56 -0
  755. package/i18n/languages/ja_JP.d.ts +56 -0
  756. package/i18n/languages/ka_GE.d.ts +56 -0
  757. package/i18n/languages/kn_IN.d.ts +56 -0
  758. package/i18n/languages/ko_KR.d.ts +56 -0
  759. package/i18n/languages/ku_IQ.d.ts +32 -0
  760. package/i18n/languages/lv_LV.d.ts +56 -0
  761. package/i18n/languages/mn_MN.d.ts +56 -0
  762. package/i18n/languages/ms_MY.d.ts +56 -0
  763. package/i18n/languages/nb_NO.d.ts +56 -0
  764. package/i18n/languages/ne_NP.d.ts +56 -0
  765. package/i18n/languages/nl_BE.d.ts +56 -0
  766. package/i18n/languages/nl_NL.d.ts +56 -0
  767. package/i18n/languages/pl_PL.d.ts +56 -0
  768. package/i18n/languages/pt_BR.d.ts +56 -0
  769. package/i18n/languages/pt_PT.d.ts +56 -0
  770. package/i18n/languages/ro_RO.d.ts +56 -0
  771. package/i18n/languages/ru_RU.d.ts +56 -0
  772. package/i18n/languages/sk_SK.d.ts +56 -1
  773. package/i18n/languages/sl_SI.d.ts +56 -0
  774. package/i18n/languages/sr_RS.d.ts +56 -0
  775. package/i18n/languages/sv_SE.d.ts +56 -0
  776. package/i18n/languages/ta_IN.d.ts +56 -0
  777. package/i18n/languages/th_TH.d.ts +56 -0
  778. package/i18n/languages/tr_TR.d.ts +56 -0
  779. package/i18n/languages/uk_UA.d.ts +56 -0
  780. package/i18n/languages/vi_VN.d.ts +56 -0
  781. package/i18n/languages/zh_CN.d.ts +3 -0
  782. package/i18n/languages/zh_TW.d.ts +3 -0
  783. package/icon/icon.component.d.ts +8 -14
  784. package/icon/icon.property.d.ts +31 -13
  785. package/icon/icon.service.d.ts +1 -1
  786. package/image/image-group.component.d.ts +1 -3
  787. package/image/image-preview.component.d.ts +11 -13
  788. package/image/image.component.d.ts +10 -11
  789. package/image/image.property.d.ts +117 -16
  790. package/index.d.ts +0 -2
  791. package/inner/inner.component.d.ts +3 -10
  792. package/inner/inner.property.d.ts +8 -4
  793. package/input/input-group.component.d.ts +0 -2
  794. package/input/input.component.d.ts +32 -30
  795. package/input/input.property.d.ts +347 -65
  796. package/input-number/input-number.component.d.ts +14 -19
  797. package/input-number/input-number.property.d.ts +292 -26
  798. package/keyword/keyword.directive.d.ts +4 -12
  799. package/keyword/keyword.property.d.ts +11 -7
  800. package/layout/col.component.d.ts +8 -11
  801. package/layout/layout.property.d.ts +79 -18
  802. package/layout/row.component.d.ts +7 -8
  803. package/link/link.component.d.ts +7 -13
  804. package/link/link.property.d.ts +64 -11
  805. package/list/list-drop-group.directive.d.ts +3 -5
  806. package/list/list-option.component.d.ts +7 -9
  807. package/list/list.component.d.ts +35 -30
  808. package/list/list.property.d.ts +126 -61
  809. package/loading/loading.component.d.ts +12 -12
  810. package/loading/loading.property.d.ts +20 -11
  811. package/menu/menu-node.component.d.ts +11 -8
  812. package/menu/menu.component.d.ts +18 -19
  813. package/menu/menu.property.d.ts +23 -28
  814. package/message/message.property.d.ts +1 -1
  815. package/notification/notification.property.d.ts +1 -1
  816. package/outlet/outlet.directive.d.ts +4 -4
  817. package/outlet/outlet.property.d.ts +1 -1
  818. package/package.json +117 -123
  819. package/page-header/page-header.component.d.ts +4 -8
  820. package/page-header/page-header.property.d.ts +11 -8
  821. package/pagination/pagination.component.d.ts +15 -22
  822. package/pagination/pagination.property.d.ts +34 -66
  823. package/pattern/pattern.component.d.ts +2 -5
  824. package/pattern/pattern.property.d.ts +1 -1
  825. package/popconfirm/popconfirm.component.d.ts +12 -14
  826. package/popconfirm/popconfirm.property.d.ts +32 -19
  827. package/popover/popover-portal.component.d.ts +16 -33
  828. package/popover/popover.directive.d.ts +6 -12
  829. package/popover/popover.property.d.ts +31 -22
  830. package/portal/portal.property.d.ts +4 -4
  831. package/portal/portal.service.d.ts +2 -2
  832. package/progress/progress.component.d.ts +25 -30
  833. package/progress/progress.property.d.ts +29 -20
  834. package/radio/radio.component.d.ts +14 -15
  835. package/radio/radio.property.d.ts +271 -31
  836. package/rate/rate.component.d.ts +14 -17
  837. package/rate/rate.property.d.ts +259 -12
  838. package/resizable/resizable.directive.d.ts +5 -5
  839. package/resizable/resizable.property.d.ts +14 -14
  840. package/result/result.component.d.ts +5 -7
  841. package/result/result.property.d.ts +11 -7
  842. package/ripple/ripple.directive.d.ts +5 -4
  843. package/ripple/ripple.property.d.ts +14 -5
  844. package/select/select-portal.component.d.ts +39 -43
  845. package/select/select.component.d.ts +53 -56
  846. package/select/select.property.d.ts +317 -37
  847. package/skeleton/skeleton.component.d.ts +4 -8
  848. package/skeleton/skeleton.property.d.ts +17 -8
  849. package/slider/slider.component.d.ts +34 -31
  850. package/slider/slider.property.d.ts +26 -22
  851. package/slider-select/slider-select.component.d.ts +38 -38
  852. package/slider-select/slider-select.property.d.ts +302 -28
  853. package/statistic/countdown.component.d.ts +2 -5
  854. package/statistic/statistic.component.d.ts +3 -8
  855. package/statistic/statistic.property.d.ts +44 -13
  856. package/steps/steps.component.d.ts +6 -16
  857. package/steps/steps.property.d.ts +15 -10
  858. package/style/core/index.css +0 -38
  859. package/style/core/index.css.map +1 -1
  860. package/style/core/var.scss +0 -4
  861. package/style/mixins/compatibility.scss +0 -1
  862. package/style/mixins/form.scss +8 -2
  863. package/style/params/index.scss +0 -1
  864. package/style/params/primary.scss +7 -28
  865. package/switch/switch.component.d.ts +9 -10
  866. package/switch/switch.property.d.ts +265 -16
  867. package/table/table-body.component.d.ts +21 -20
  868. package/table/table-foot.component.d.ts +7 -5
  869. package/table/table-head.component.d.ts +17 -19
  870. package/table/table.component.d.ts +62 -50
  871. package/table/table.property.d.ts +180 -178
  872. package/tabs/tab-content.component.d.ts +6 -8
  873. package/tabs/tab.component.d.ts +3 -5
  874. package/tabs/tabs.component.d.ts +17 -24
  875. package/tabs/tabs.property.d.ts +28 -24
  876. package/tag/tag.component.d.ts +7 -8
  877. package/tag/tag.property.d.ts +19 -21
  878. package/text-retract/text-retract.component.d.ts +4 -14
  879. package/text-retract/text-retract.property.d.ts +9 -5
  880. package/textarea/textarea.component.d.ts +17 -20
  881. package/textarea/textarea.property.d.ts +266 -30
  882. package/theme/theme.component.d.ts +24 -13
  883. package/theme/theme.property.d.ts +67 -16
  884. package/time-ago/time-ago.pipe.d.ts +7 -3
  885. package/time-ago/time-ago.property.d.ts +1 -1
  886. package/time-picker/time-picker-frame.component.d.ts +52 -39
  887. package/time-picker/time-picker-portal.component.d.ts +29 -29
  888. package/time-picker/time-picker.component.d.ts +29 -30
  889. package/time-picker/time-picker.property.d.ts +314 -23
  890. package/time-range/time-range.property.d.ts +1 -1
  891. package/timeline/timeline.component.d.ts +5 -13
  892. package/timeline/timeline.property.d.ts +12 -8
  893. package/tooltip/tooltip-portal.component.d.ts +23 -29
  894. package/tooltip/tooltip.directive.d.ts +10 -9
  895. package/tooltip/tooltip.property.d.ts +18 -14
  896. package/transfer/transfer.component.d.ts +23 -20
  897. package/transfer/transfer.property.d.ts +81 -25
  898. package/tree/tree-node.component.d.ts +21 -21
  899. package/tree/tree.component.d.ts +29 -28
  900. package/tree/tree.property.d.ts +129 -79
  901. package/tree-file/tree-file.component.d.ts +7 -9
  902. package/tree-file/tree-file.property.d.ts +40 -16
  903. package/tree-select/tree-select-portal.component.d.ts +38 -49
  904. package/tree-select/tree-select.component.d.ts +50 -53
  905. package/tree-select/tree-select.property.d.ts +328 -39
  906. package/typography/typography.component.d.ts +1 -1
  907. package/typography/typography.property.d.ts +3 -3
  908. package/upload/upload-portal.component.d.ts +14 -14
  909. package/upload/upload.component.d.ts +18 -17
  910. package/upload/upload.property.d.ts +73 -24
  911. package/border/border.component.d.ts +0 -11
  912. package/border/border.module.d.ts +0 -7
  913. package/border/border.property.d.ts +0 -6
  914. package/border/index.d.ts +0 -5
  915. package/border/public-api.d.ts +0 -3
  916. package/esm2022/border/border.component.mjs +0 -21
  917. package/esm2022/border/border.module.mjs +0 -16
  918. package/esm2022/border/border.property.mjs +0 -7
  919. package/esm2022/border/ng-nest-ui-border.mjs +0 -5
  920. package/esm2022/border/public-api.mjs +0 -4
  921. package/fesm2022/ng-nest-ui-border.mjs +0 -47
  922. package/fesm2022/ng-nest-ui-border.mjs.map +0 -1
  923. package/style/params/colors.scss +0 -38
@@ -1,16 +1,20 @@
1
- import { Component, ViewEncapsulation, ChangeDetectionStrategy, ChangeDetectorRef, inject } from '@angular/core';
2
- import { XChunk, XIsChange, XConfigService, XIsNull, XIsFunction, XDateWeek, XDateYearWeek } from '@ng-nest/ui/core';
1
+ import { Component, ViewEncapsulation, ChangeDetectionStrategy, inject, computed, signal, ChangeDetectorRef } from '@angular/core';
2
+ import { XChunk, XIsChange, XIsNull, XIsFunction, XDateWeek, XDateYearWeek } from '@ng-nest/ui/core';
3
3
  import { XPickerDatePrefix, XPickerDateProperty } from './date-picker.property';
4
- import { Subject } from 'rxjs';
5
- import { XI18nPipe, XI18nService } from '@ng-nest/ui/i18n';
6
- import { map, takeUntil } from 'rxjs/operators';
4
+ import { XI18nPipe, XI18nService, zh_CN } from '@ng-nest/ui/i18n';
5
+ import { map } from 'rxjs/operators';
7
6
  import { DatePipe, LowerCasePipe, NgTemplateOutlet } from '@angular/common';
8
7
  import { XLinkComponent } from '@ng-nest/ui/link';
8
+ import { toSignal } from '@angular/core/rxjs-interop';
9
9
  import * as i0 from "@angular/core";
10
10
  export class XPickerDateComponent extends XPickerDateProperty {
11
11
  constructor() {
12
12
  super(...arguments);
13
- this.titles = [
13
+ this.datePipe = inject(DatePipe);
14
+ this.lowerCasePipe = inject(LowerCasePipe);
15
+ this.i18n = inject(XI18nService);
16
+ this.cdr = inject(ChangeDetectorRef);
17
+ this.titles = signal([
14
18
  'datePicker.monday',
15
19
  'datePicker.tuesday',
16
20
  'datePicker.wednesday',
@@ -18,179 +22,179 @@ export class XPickerDateComponent extends XPickerDateProperty {
18
22
  'datePicker.friday',
19
23
  'datePicker.saturday',
20
24
  'datePicker.sunday'
21
- ];
25
+ ]);
22
26
  this.now = new Date();
23
- this.dates = [];
24
- this.weekDates = [];
25
- this.locale = {};
26
- this._unSubject = new Subject();
27
- this.cdr = inject(ChangeDetectorRef);
28
- this.datePipe = inject(DatePipe);
29
- this.lowerCasePipe = inject(LowerCasePipe);
30
- this.i18n = inject(XI18nService);
31
- this.configService = inject(XConfigService);
32
- }
33
- get rangeStart() {
34
- if (this.rangeValue && this.rangeValue.length > 0) {
35
- return this.rangeValue[0];
36
- }
37
- return '';
38
- }
39
- get rangeEnd() {
40
- if (this.rangeValue && this.rangeValue.length > 1) {
41
- return this.rangeValue[1];
42
- }
43
- return '';
44
- }
45
- get isWeek() {
46
- return this.type === 'week';
47
- }
48
- get isWeekRange() {
49
- return this.type === 'week' && this.rangePicker;
50
- }
51
- get isNotWeekRange() {
52
- return this.type !== 'week' && this.rangePicker;
27
+ this.dates = signal([]);
28
+ this.weekDates = signal([]);
29
+ this.locale = toSignal(this.i18n.localeChange.pipe(map((x) => x.datePicker)), {
30
+ initialValue: zh_CN.datePicker
31
+ });
32
+ this.rangeStart = computed(() => {
33
+ if (this.rangeValue() && this.rangeValue().length > 0) {
34
+ return this.rangeValue()[0];
35
+ }
36
+ return '';
37
+ });
38
+ this.rangeEnd = computed(() => {
39
+ if (this.rangeValue() && this.rangeValue().length > 1) {
40
+ return this.rangeValue()[1];
41
+ }
42
+ return '';
43
+ });
44
+ this.isWeek = computed(() => {
45
+ return this.type() === 'week';
46
+ });
47
+ this.isWeekRange = computed(() => {
48
+ return this.type() === 'week' && this.rangePicker();
49
+ });
50
+ this.isNotWeekRange = computed(() => {
51
+ return this.type() !== 'week' && this.rangePicker();
52
+ });
53
53
  }
54
54
  isDisabled(date) {
55
- if (this.disabledDate && XIsFunction(this.disabledDate)) {
56
- return this.disabledDate(date);
55
+ const disabledDate = this.disabledDate();
56
+ if (disabledDate && XIsFunction(disabledDate)) {
57
+ return disabledDate(date);
57
58
  }
58
59
  else {
59
60
  return false;
60
61
  }
61
62
  }
62
63
  ngOnInit() {
63
- this.i18n.localeChange
64
- .pipe(map((x) => x.datePicker), takeUntil(this._unSubject))
65
- .subscribe((x) => {
66
- this.locale = x;
67
- this.cdr.markForCheck();
68
- });
69
64
  this.setTitles();
70
65
  }
71
66
  ngOnChanges(simples) {
72
67
  const { display } = simples;
73
68
  XIsChange(display) && this.init();
74
69
  }
75
- ngOnDestroy() {
76
- this._unSubject.next();
77
- this._unSubject.unsubscribe();
78
- }
79
70
  init() {
80
- this.setDays(this.display);
71
+ this.setDays(this.display());
81
72
  }
82
73
  isWeekActive(week) {
83
74
  if (week.length > 1) {
84
- return XDateYearWeek(week[1].date) === XDateYearWeek(this.model);
75
+ return XDateYearWeek(week[1].date) === XDateYearWeek(this.model());
85
76
  }
86
77
  return false;
87
78
  }
88
79
  isStartWeek(week) {
89
- if (!this.rangeType || !this.rangeValue)
80
+ if (!this.rangeType() || !this.rangeValue())
90
81
  return;
91
- if (!XIsNull(this.rangeValue[0]) && week.length > 1) {
92
- return XDateYearWeek(week[1].date) === XDateYearWeek(this.rangeValue[0]);
82
+ if (!XIsNull(this.rangeValue()[0]) && week.length > 1) {
83
+ return XDateYearWeek(week[1].date) === XDateYearWeek(this.rangeValue()[0]);
93
84
  }
94
85
  return false;
95
86
  }
96
87
  isEndWeek(week) {
97
- if (!this.rangeType || !this.rangeValue)
88
+ if (!this.rangeType() || !this.rangeValue())
98
89
  return;
99
- if (!XIsNull(this.rangeValue[1]) && week.length > 1) {
100
- return XDateYearWeek(week[1].date) === XDateYearWeek(this.rangeValue[1]);
90
+ if (!XIsNull(this.rangeValue()[1]) && week.length > 1) {
91
+ return XDateYearWeek(week[1].date) === XDateYearWeek(this.rangeValue()[1]);
101
92
  }
102
93
  return false;
103
94
  }
104
95
  isInRangeWeek(week) {
105
- if (!this.rangeType || !this.rangeValue)
96
+ if (!this.rangeType() || !this.rangeValue())
106
97
  return;
107
- if (!XIsNull(this.rangeValue[0]) && !XIsNull(this.rangeValue[1]) && week.length > 1) {
98
+ if (!XIsNull(this.rangeValue()[0]) && !XIsNull(this.rangeValue()[1]) && week.length > 1) {
108
99
  let time = week[1].date?.getTime();
109
- return time > this.rangeValue[0] && time < this.rangeValue[1];
100
+ return time > this.rangeValue()[0] && time < this.rangeValue()[1];
110
101
  }
111
102
  return false;
112
103
  }
113
104
  isStartDate(date) {
114
- if (this.type === 'week' || !this.rangeType || !this.rangeValue)
105
+ if (this.type() === 'week' || !this.rangeType() || !this.rangeValue())
115
106
  return;
116
- if (!XIsNull(this.rangeValue[0])) {
117
- return this.datePipe.transform(this.rangeValue[0], 'yyyyMMdd') === this.datePipe.transform(date, 'yyyyMMdd');
107
+ if (!XIsNull(this.rangeValue()[0])) {
108
+ return this.datePipe.transform(this.rangeValue()[0], 'yyyyMMdd') === this.datePipe.transform(date, 'yyyyMMdd');
118
109
  }
119
110
  return;
120
111
  }
121
112
  isEndDate(date) {
122
- if (this.type === 'week' || !this.rangeType || !this.rangeValue)
113
+ if (this.type() === 'week' || !this.rangeType() || !this.rangeValue())
123
114
  return;
124
- if (!XIsNull(this.rangeValue[1])) {
125
- return this.datePipe.transform(this.rangeValue[1], 'yyyyMMdd') === this.datePipe.transform(date, 'yyyyMMdd');
115
+ if (!XIsNull(this.rangeValue()[1])) {
116
+ return this.datePipe.transform(this.rangeValue()[1], 'yyyyMMdd') === this.datePipe.transform(date, 'yyyyMMdd');
126
117
  }
127
118
  return;
128
119
  }
129
120
  setDatesState(cell) {
130
- this.clearState(...this.dates);
131
- for (let item of this.dates) {
132
- this.setDayState(item);
133
- }
121
+ this.dates.update((x) => {
122
+ x.map((y) => {
123
+ this.clearState(y);
124
+ this.setDayState(y);
125
+ return y;
126
+ });
127
+ return [...x];
128
+ });
134
129
  this.onTdMouseenter(cell, false);
135
130
  }
136
131
  setTitles() {
137
- if (this.type === 'week') {
138
- this.titles = ['datePicker.week', ...this.titles];
132
+ if (this.type() === 'week') {
133
+ this.titles.update((x) => ['datePicker.week', ...x]);
139
134
  }
140
135
  }
141
136
  onTdMouseenter(cell, isEmit = true) {
142
- const [start, end] = this.rangeValue;
137
+ const [start, end] = this.rangeValue();
143
138
  if (!XIsNull(start) || !XIsNull(end)) {
144
139
  const time = cell.date.getTime();
145
- for (let item of this.dates) {
146
- const itemTime = item.date.getTime();
147
- this.clearState(item);
148
- if (!XIsNull(start) && XIsNull(end)) {
149
- item.isRangeHoverStartLeft = time < start && itemTime === start;
150
- item.isRangeHoverStartRight = time > start && itemTime === start;
151
- item.isRangeHover =
152
- (time < start && itemTime >= time && itemTime < start) ||
153
- (time > start && itemTime > start && itemTime <= time);
154
- item.isRangeHoverStart = itemTime === time && time < start;
155
- item.isRangeHoverEnd = itemTime === time && time > start;
156
- }
157
- else if (XIsNull(start) && !XIsNull(end)) {
158
- item.isRangeHoverEndLeft = time < end && itemTime === end;
159
- item.isRangeHoverEndRight = time > end && itemTime === end;
160
- item.isRangeHover =
161
- (time < end && itemTime >= time && itemTime < end) ||
162
- (time > end && itemTime > end && itemTime <= time);
163
- item.isRangeHoverStart = itemTime === time && time < end;
164
- item.isRangeHoverEnd = itemTime === time && time > end;
165
- }
166
- else if (!XIsNull(start) && !XIsNull(end)) {
167
- item.isRangeHoverStartLeft = time < start && itemTime === start;
168
- item.isRangeHoverEndRight = time > end && itemTime === end;
169
- item.isRangeHover =
170
- (time < start && itemTime >= time && itemTime < start) ||
171
- (time > end && itemTime > end && itemTime <= time);
172
- item.isRangeHoverStart = itemTime === time && time < start;
173
- item.isRangeHoverEnd = itemTime === time && time > end;
174
- if (this.rangeType === 'start') {
175
- item.isInRangeHover = itemTime >= time && itemTime <= end;
140
+ this.dates.update((x) => {
141
+ for (let item of x) {
142
+ const itemTime = item.date.getTime();
143
+ this.clearState(item);
144
+ if (!XIsNull(start) && XIsNull(end)) {
145
+ item.isRangeHoverStartLeft = time < start && itemTime === start;
146
+ item.isRangeHoverStartRight = time > start && itemTime === start;
147
+ item.isRangeHover =
148
+ (time < start && itemTime >= time && itemTime < start) ||
149
+ (time > start && itemTime > start && itemTime <= time);
150
+ item.isRangeHoverStart = itemTime === time && time < start;
151
+ item.isRangeHoverEnd = itemTime === time && time > start;
152
+ }
153
+ else if (XIsNull(start) && !XIsNull(end)) {
154
+ item.isRangeHoverEndLeft = time < end && itemTime === end;
155
+ item.isRangeHoverEndRight = time > end && itemTime === end;
156
+ item.isRangeHover =
157
+ (time < end && itemTime >= time && itemTime < end) ||
158
+ (time > end && itemTime > end && itemTime <= time);
159
+ item.isRangeHoverStart = itemTime === time && time < end;
160
+ item.isRangeHoverEnd = itemTime === time && time > end;
176
161
  }
177
- else if (this.rangeType === 'end') {
178
- item.isInRangeHover = itemTime >= start && itemTime <= time;
162
+ else if (!XIsNull(start) && !XIsNull(end)) {
163
+ item.isRangeHoverStartLeft = time < start && itemTime === start;
164
+ item.isRangeHoverEndRight = time > end && itemTime === end;
165
+ item.isRangeHover =
166
+ (time < start && itemTime >= time && itemTime < start) ||
167
+ (time > end && itemTime > end && itemTime <= time);
168
+ item.isRangeHoverStart = itemTime === time && time < start;
169
+ item.isRangeHoverEnd = itemTime === time && time > end;
170
+ if (this.rangeType() === 'start') {
171
+ item.isInRangeHover = itemTime >= time && itemTime <= end;
172
+ }
173
+ else if (this.rangeType() === 'end') {
174
+ item.isInRangeHover = itemTime >= start && itemTime <= time;
175
+ }
179
176
  }
180
177
  }
181
- }
178
+ return [...x];
179
+ });
182
180
  if (isEmit) {
183
181
  this.rangeTdMouseenter.emit(cell);
184
182
  }
185
183
  else {
186
- this.cdr.detectChanges();
184
+ this.cdr.markForCheck();
187
185
  }
188
186
  }
189
187
  }
190
188
  onTdMouseleave(cell, isEmit = true) {
191
- const [start, end] = this.rangeValue;
189
+ const [start, end] = this.rangeValue();
192
190
  if (!XIsNull(start) || !XIsNull(end)) {
193
- this.clearState(...this.dates);
191
+ this.dates.update((x) => {
192
+ x.map((y) => {
193
+ this.clearState(y);
194
+ return y;
195
+ });
196
+ return [...x];
197
+ });
194
198
  if (isEmit)
195
199
  this.rangeTdMouseleave.emit(cell);
196
200
  }
@@ -242,34 +246,33 @@ export class XPickerDateComponent extends XPickerDateProperty {
242
246
  dates = [...dates, this.setDayState(cell)];
243
247
  day = cell.date.getDay();
244
248
  }
245
- this.dates = dates;
246
- this.weekDates = XChunk(dates, 7);
247
- if (this.type === 'week') {
248
- for (let item of this.dates) {
249
+ this.dates.set(dates);
250
+ this.weekDates.set(XChunk(dates, 7));
251
+ if (this.type() === 'week') {
252
+ for (let item of this.dates()) {
249
253
  item.week = XDateWeek(item.date);
250
254
  }
251
- for (let week of this.weekDates) {
255
+ for (let week of this.weekDates()) {
252
256
  week.unshift({ type: 'week', week: week[0].week });
253
257
  }
254
258
  }
255
- if (this.dates.length > 0) {
259
+ if (this.dates().length > 0) {
256
260
  this.rangeChange.emit([dates[0].date, dates[dates.length - 1].date]);
257
261
  }
258
- this.cdr.detectChanges();
259
262
  }
260
263
  setDayState(cell) {
261
264
  const time = cell.date?.getTime();
262
265
  const fdate = this.datePipe.transform(cell.date, 'yyyyMMdd');
263
266
  const fdatem = this.datePipe.transform(cell.date, 'yyyyMM');
264
- const fdisplaym = this.datePipe.transform(this.display, 'yyyyMM');
267
+ const fdisplaym = this.datePipe.transform(this.display(), 'yyyyMM');
265
268
  const fnow = this.datePipe.transform(this.now, 'yyyyMMdd');
266
269
  cell.isLastOrNext = fdatem !== fdisplaym;
267
270
  cell.isNow = fdate === fnow;
268
271
  cell.isDisabled = this.isDisabled(cell.date);
269
- if (this.rangePicker) {
270
- if (!this.rangeValue)
272
+ if (this.rangePicker()) {
273
+ if (!this.rangeValue())
271
274
  return cell;
272
- const [start, end] = this.rangeValue;
275
+ const [start, end] = this.rangeValue();
273
276
  cell.isInRange = !!start && !!end && time >= start && time <= end;
274
277
  cell.isRangeStartRight = !!start && !!end && fdate === this.datePipe.transform(start, 'yyyyMMdd');
275
278
  cell.isRangeEndLeft = !!start && !!end && fdate === this.datePipe.transform(end, 'yyyyMMdd');
@@ -277,58 +280,55 @@ export class XPickerDateComponent extends XPickerDateProperty {
277
280
  return cell;
278
281
  }
279
282
  dateClick(cell) {
280
- this.model = cell.date;
281
- this.modelChange.emit(cell.date);
282
- if (this.rangePicker) {
283
- this.clearState(...this.dates);
284
- for (let item of this.dates) {
285
- this.setDayState(item);
286
- }
287
- this.rangeDateClick.emit(cell);
283
+ this.model.set(cell.date);
284
+ if (this.rangePicker()) {
285
+ this.dates.update((x) => {
286
+ x.map((y) => {
287
+ this.clearState(y);
288
+ this.setDayState(y);
289
+ });
290
+ return [...x];
291
+ });
288
292
  }
289
- this.cdr.detectChanges();
290
293
  }
291
294
  getLocaleMonth(date) {
292
- return this.locale[this.lowerCasePipe.transform(this.datePipe.transform(date, 'LLLL'))];
295
+ return this.locale()[this.lowerCasePipe.transform(this.datePipe.transform(date, 'LLLL'))];
293
296
  }
294
297
  rangeDisabled(date) {
295
- if (this.rangeType === 'end') {
296
- return this.rangeStart !== '' && date.getTime() < this.rangeStart;
298
+ if (this.rangeType() === 'end') {
299
+ const rangeStart = this.rangeStart();
300
+ return rangeStart !== '' && date.getTime() < rangeStart;
297
301
  }
298
- else if (this.rangeType === 'start') {
299
- return this.rangeEnd !== '' && date.getTime() > this.rangeEnd;
302
+ else if (this.rangeType() === 'start') {
303
+ const rangeEnd = this.rangeEnd();
304
+ return rangeEnd !== '' && date.getTime() > rangeEnd;
300
305
  }
301
306
  return false;
302
307
  }
303
308
  setDisplay(date) {
304
- this.display = new Date(date.getFullYear(), date.getMonth(), 1);
305
- this.displayChange.emit(this.display);
306
- this.setDays(this.display);
309
+ this.display.set(new Date(date.getFullYear(), date.getMonth(), 1));
310
+ this.setDays(this.display());
307
311
  }
308
312
  nextMonth(num) {
309
- let date = new Date(this.display);
313
+ let date = new Date(this.display());
310
314
  date.setMonth(date.getMonth() + num);
311
315
  this.setDisplay(date);
312
316
  this.monthChange.emit(num);
313
- this.cdr.detectChanges();
314
317
  }
315
318
  nextYear(num) {
316
- let date = new Date(this.display);
319
+ let date = new Date(this.display());
317
320
  date.setFullYear(date.getFullYear() + num);
318
321
  this.setDisplay(date);
319
322
  this.yearChange.emit(num);
320
- this.cdr.detectChanges();
321
323
  }
322
324
  typeOnChange(type) {
323
- this.type = type;
324
- this.typeChange.emit(type);
325
- this.cdr.detectChanges();
325
+ this.type.set(type);
326
326
  }
327
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: XPickerDateComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
328
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.10", type: XPickerDateComponent, isStandalone: true, selector: "x-picker-date", providers: [DatePipe, LowerCasePipe], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"x-picker-date\" [class.x-date-picker-datetemp]=\"dateTemp\">\r\n @if (showHeader) {\r\n <div class=\"x-picker-date-header\">\r\n <x-link icon=\"fto-chevrons-left\" (click)=\"nextYear(-1)\" [class.x-visibility]=\"!lastYearBtn\"></x-link>\r\n <x-link icon=\"fto-chevron-left\" (click)=\"nextMonth(-1)\" [class.x-visibility]=\"!lastMonthBtn\"></x-link>\r\n <div class=\"x-picker-date-year-month\">\r\n <x-link (click)=\"typeOnChange('year')\">{{ display | date: 'yyyy' }}{{ locale.year }}</x-link>\r\n <x-link (click)=\"typeOnChange('month')\">{{ getLocaleMonth(display) }}</x-link>\r\n </div>\r\n <x-link icon=\"fto-chevron-right\" (click)=\"nextMonth(1)\" [class.x-visibility]=\"!nextMonthBtn\"></x-link>\r\n <x-link icon=\"fto-chevrons-right\" (click)=\"nextYear(1)\" [class.x-visibility]=\"!nextYearBtn\"></x-link>\r\n </div>\r\n }\r\n <div class=\"x-picker-date-body\">\r\n <table cellspacing=\"0\" cellpadding=\"0\">\r\n <thead>\r\n <tr>\r\n @for (title of titles; track title) {\r\n <th>{{ title | xI18n }}</th>\r\n }\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (weeks of weekDates; track weeks) {\r\n <tr\r\n [class.x-date-week-active]=\"!rangePicker && isWeek && isWeekActive(weeks)\"\r\n [class.x-date-week-start-active]=\"isWeekRange && isStartWeek(weeks)\"\r\n [class.x-date-week-end-active]=\"isWeekRange && isEndWeek(weeks)\"\r\n [class.x-date-week-in-range]=\"isWeekRange && isInRangeWeek(weeks)\"\r\n >\r\n @for (week of weeks; track week) {\r\n <td\r\n class=\"x-picker-date-item\"\r\n [class.x-date-week]=\"week.type === 'week'\"\r\n [class.x-date-disabled]=\"week.isDisabled\"\r\n [class.x-date-last-or-next]=\"week.isLastOrNext\"\r\n [class.x-date-now]=\"week.isNow\"\r\n [class.x-date-first-day]=\"week.isFirstDay\"\r\n [class.x-date-last-day]=\"week.isLastDay\"\r\n [class.x-date-range-start]=\"isNotWeekRange && isStartDate(week.date!)\"\r\n [class.x-date-range-end]=\"isNotWeekRange && isEndDate(week.date!)\"\r\n [class.x-date-range-start-left]=\"isNotWeekRange && week.isRangeStartLeft\"\r\n [class.x-date-range-start-right]=\"isNotWeekRange && week.isRangeStartRight\"\r\n [class.x-date-range-end-left]=\"isNotWeekRange && week.isRangeEndLeft\"\r\n [class.x-date-range-end-right]=\"isNotWeekRange && week.isRangeEndRight\"\r\n [class.x-date-range-hover]=\"isNotWeekRange && week.isRangeHover\"\r\n [class.x-date-range-hover-start-left]=\"isNotWeekRange && week.isRangeHoverStartLeft\"\r\n [class.x-date-range-hover-start-right]=\"isNotWeekRange && week.isRangeHoverStartRight\"\r\n [class.x-date-range-hover-end-left]=\"isNotWeekRange && week.isRangeHoverEndLeft\"\r\n [class.x-date-range-hover-end-right]=\"isNotWeekRange && week.isRangeHoverEndRight\"\r\n [class.x-date-range-hover-start]=\"isNotWeekRange && week.isRangeHoverStart\"\r\n [class.x-date-range-hover-end]=\"isNotWeekRange && week.isRangeHoverEnd\"\r\n [class.x-date-in-range]=\"isNotWeekRange && week.isInRange\"\r\n [class.x-date-in-range-hover]=\"isNotWeekRange && week.isInRangeHover\"\r\n [class.x-date-active]=\"\r\n !rangePicker && week.type !== 'week' && (week.date | date: 'yyyyMMdd') === (model | date: 'yyyyMMdd')\r\n \"\r\n title=\"{{ week.date | date: 'yyyy-MM-dd' }}\"\r\n (click)=\"week.type !== 'week' && !week.isDisabled && dateClick(week)\"\r\n (mouseenter)=\"\r\n week.type !== 'week' && !week.isDisabled && rangePicker && rangeHover && onTdMouseenter(week)\r\n \"\r\n (mouseleave)=\"\r\n week.type !== 'week' && !week.isDisabled && rangePicker && rangeHover && onTdMouseleave(week)\r\n \"\r\n >\r\n @if (dateTemp) {\r\n <ng-container *ngTemplateOutlet=\"dateTemp; context: { date$: week.date }\"></ng-container>\r\n } @else {\r\n <div class=\"x-date-text\">\r\n @switch (week.type) {\r\n @case ('week') {\r\n {{ week.week }}\r\n }\r\n @default {\r\n {{ week.date | date: 'd' }}\r\n }\r\n }\r\n </div>\r\n }\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.x-picker-date{margin:0;padding:0}.x-picker-date-header{display:flex;align-items:center;justify-content:space-between;padding:0 .5rem;height:2.5rem;border-bottom:var(--x-border-width) solid var(--x-border);color:var(--x-text-500);font-size:var(--x-font-size-medium)}.x-picker-date-header x-link{height:100%;-webkit-user-select:none;user-select:none}.x-picker-date-header .x-link{padding:0 .25rem}.x-picker-date-year-month{flex:1;text-align:center;color:var(--x-text);font-size:var(--x-font-size)}.x-picker-date-body{padding:.1375rem .5rem}.x-picker-date-body>table{width:100%;border-collapse:collapse;border-spacing:0}.x-picker-date-body>table tr{display:flex;align-items:center;justify-content:center}.x-picker-date-body>table tr.x-date-week-active .x-picker-date-item,.x-picker-date-body>table tr.x-date-week-active .x-picker-date-item.x-date-now:not(.x-date-active):not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next) .x-date-text,.x-picker-date-body>table tr.x-date-week-start-active .x-picker-date-item,.x-picker-date-body>table tr.x-date-week-start-active .x-picker-date-item.x-date-now:not(.x-date-active):not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next) .x-date-text,.x-picker-date-body>table tr.x-date-week-end-active .x-picker-date-item,.x-picker-date-body>table tr.x-date-week-end-active .x-picker-date-item.x-date-now:not(.x-date-active):not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next) .x-date-text{background-color:var(--x-primary);color:var(--x-background-100)}.x-picker-date-body>table tbody tr{padding:.125rem 0}.x-picker-date-body>table th{flex:1;font-weight:400;height:2rem;line-height:2rem;color:var(--x-text-400);-webkit-user-select:none;user-select:none}.x-picker-date-body>table td{padding:.125rem 0;flex:1;-webkit-user-select:none;user-select:none}.x-picker-date-body>table td:first-child{border-top-left-radius:var(--x-border-radius);border-bottom-left-radius:var(--x-border-radius)}.x-picker-date-body>table td:last-child{border-top-right-radius:var(--x-border-radius);border-bottom-right-radius:var(--x-border-radius)}.x-picker-date-body .x-picker-date-item{text-align:center;cursor:pointer;color:var(--x-text-300);position:relative;transition:var(--x-animation-duration-base)}.x-picker-date-body .x-picker-date-item .x-date-text{width:1.75rem;height:1.625rem;display:flex;align-items:center;justify-content:center;margin:0 auto;border:var(--x-border-width) var(--x-border-style) transparent;border-radius:var(--x-border-radius);transition:var(--x-animation-duration-base);position:relative}.x-picker-date-body .x-picker-date-item:after,.x-picker-date-body .x-picker-date-item:before{height:1.625rem}.x-picker-date-body .x-picker-date-item:hover:not(.x-date-in-range) .x-date-text{background-color:var(--x-background-a200)}.x-picker-date-body .x-picker-date-item.x-date-active:not(.x-date-last-or-next){color:var(--x-background-100)}.x-picker-date-body .x-picker-date-item.x-date-active:not(.x-date-last-or-next) .x-date-text{background-color:var(--x-primary);border-color:var(--x-primary)}.x-picker-date-body .x-picker-date-item.x-date-active:not(.x-date-last-or-next):hover{color:var(--x-background-100)}.x-picker-date-body .x-picker-date-item.x-date-active:not(.x-date-last-or-next):hover .x-date-text{background-color:var(--x-primary)}.x-picker-date-body .x-picker-date-item.x-date-last-or-next{color:var(--x-text-700)}.x-picker-date-body .x-picker-date-item.x-date-now:not(.x-date-active):not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next) .x-date-text{color:var(--x-primary);border-color:var(--x-primary)}.x-picker-date-body .x-picker-date-item.x-date-range-hover:first-child:not(.x-date-last-or-next).x-date-range-hover-end:before,.x-picker-date-body .x-picker-date-item.x-date-range-hover.x-date-first-day.x-date-range-hover-end:before{width:1.75rem}.x-picker-date-body .x-picker-date-item.x-date-range-hover:last-child:not(.x-date-last-or-next).x-date-range-hover-start:before,.x-picker-date-body .x-picker-date-item.x-date-range-hover.x-date-last-day.x-date-range-hover-start:before{width:1.75rem}.x-picker-date-body .x-picker-date-item.x-date-range-hover.x-date-first-day:last-child:not(.x-date-last-or-next):before,.x-picker-date-body .x-picker-date-item.x-date-range-hover.x-date-last-day:first-child:not(.x-date-last-or-next):before{width:1.75rem}.x-picker-date-body .x-picker-date-item.x-date-disabled{cursor:default;background-color:var(--x-background-a200);color:var(--x-text-700)}.x-picker-date .x-visibility{visibility:hidden}\n"], dependencies: [{ kind: "pipe", type: DatePipe, name: "date" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: XLinkComponent, selector: "x-link" }, { kind: "pipe", type: XI18nPipe, name: "xI18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
327
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XPickerDateComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
328
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: XPickerDateComponent, isStandalone: true, selector: "x-picker-date", providers: [DatePipe, LowerCasePipe], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"x-picker-date\" [class.x-date-picker-datetemp]=\"dateTemp()\">\r\n @if (showHeader()) {\r\n <div class=\"x-picker-date-header\">\r\n <x-link icon=\"fto-chevrons-left\" (click)=\"nextYear(-1)\" [class.x-visibility]=\"!lastYearBtn()\"></x-link>\r\n <x-link icon=\"fto-chevron-left\" (click)=\"nextMonth(-1)\" [class.x-visibility]=\"!lastMonthBtn()\"></x-link>\r\n <div class=\"x-picker-date-year-month\">\r\n <x-link (click)=\"typeOnChange('year')\">{{ display() | date: 'yyyy' }}{{ locale().year }}</x-link>\r\n <x-link (click)=\"typeOnChange('month')\">{{ getLocaleMonth(display()) }}</x-link>\r\n </div>\r\n <x-link icon=\"fto-chevron-right\" (click)=\"nextMonth(1)\" [class.x-visibility]=\"!nextMonthBtn()\"></x-link>\r\n <x-link icon=\"fto-chevrons-right\" (click)=\"nextYear(1)\" [class.x-visibility]=\"!nextYearBtn()\"></x-link>\r\n </div>\r\n }\r\n <div class=\"x-picker-date-body\">\r\n <table cellspacing=\"0\" cellpadding=\"0\">\r\n <thead>\r\n <tr>\r\n @for (title of titles(); track title) {\r\n <th>{{ title | xI18n }}</th>\r\n }\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (weeks of weekDates(); track $index) {\r\n <tr\r\n [class.x-date-week-active]=\"!rangePicker() && isWeek() && isWeekActive(weeks)\"\r\n [class.x-date-week-start-active]=\"isWeekRange() && isStartWeek(weeks)\"\r\n [class.x-date-week-end-active]=\"isWeekRange() && isEndWeek(weeks)\"\r\n [class.x-date-week-in-range]=\"isWeekRange() && isInRangeWeek(weeks)\"\r\n >\r\n @for (week of weeks; track week.date) {\r\n <td\r\n class=\"x-picker-date-item\"\r\n [class.x-date-week]=\"week.type === 'week'\"\r\n [class.x-date-disabled]=\"week.isDisabled\"\r\n [class.x-date-last-or-next]=\"week.isLastOrNext\"\r\n [class.x-date-now]=\"week.isNow\"\r\n [class.x-date-first-day]=\"week.isFirstDay\"\r\n [class.x-date-last-day]=\"week.isLastDay\"\r\n [class.x-date-range-start]=\"isNotWeekRange() && isStartDate(week.date!)\"\r\n [class.x-date-range-end]=\"isNotWeekRange() && isEndDate(week.date!)\"\r\n [class.x-date-range-start-left]=\"isNotWeekRange() && week.isRangeStartLeft\"\r\n [class.x-date-range-start-right]=\"isNotWeekRange() && week.isRangeStartRight\"\r\n [class.x-date-range-end-left]=\"isNotWeekRange() && week.isRangeEndLeft\"\r\n [class.x-date-range-end-right]=\"isNotWeekRange() && week.isRangeEndRight\"\r\n [class.x-date-range-hover]=\"isNotWeekRange() && week.isRangeHover\"\r\n [class.x-date-range-hover-start-left]=\"isNotWeekRange() && week.isRangeHoverStartLeft\"\r\n [class.x-date-range-hover-start-right]=\"isNotWeekRange() && week.isRangeHoverStartRight\"\r\n [class.x-date-range-hover-end-left]=\"isNotWeekRange() && week.isRangeHoverEndLeft\"\r\n [class.x-date-range-hover-end-right]=\"isNotWeekRange() && week.isRangeHoverEndRight\"\r\n [class.x-date-range-hover-start]=\"isNotWeekRange() && week.isRangeHoverStart\"\r\n [class.x-date-range-hover-end]=\"isNotWeekRange() && week.isRangeHoverEnd\"\r\n [class.x-date-in-range]=\"isNotWeekRange() && week.isInRange\"\r\n [class.x-date-in-range-hover]=\"isNotWeekRange() && week.isInRangeHover\"\r\n [class.x-date-active]=\"\r\n !rangePicker() &&\r\n week.type !== 'week' &&\r\n (week.date | date: 'yyyyMMdd') === (model() | date: 'yyyyMMdd')\r\n \"\r\n [title]=\"week.date | date: 'yyyy-MM-dd'\"\r\n (click)=\"week.type !== 'week' && !week.isDisabled && dateClick(week)\"\r\n (mouseenter)=\"\r\n week.type !== 'week' && !week.isDisabled && rangePicker() && rangeHover() && onTdMouseenter(week)\r\n \"\r\n (mouseleave)=\"\r\n week.type !== 'week' && !week.isDisabled && rangePicker() && rangeHover() && onTdMouseleave(week)\r\n \"\r\n >\r\n @if (dateTemp()) {\r\n <ng-container *ngTemplateOutlet=\"dateTemp()!; context: { date$: week.date }\"></ng-container>\r\n } @else {\r\n <div class=\"x-date-text\">\r\n @switch (week.type) {\r\n @case ('week') {\r\n {{ week.week }}\r\n }\r\n @default {\r\n {{ week.date | date: 'd' }}\r\n }\r\n }\r\n </div>\r\n }\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.x-picker-date{margin:0;padding:0}.x-picker-date-header{display:flex;align-items:center;justify-content:space-between;padding:0 .5rem;height:2.5rem;border-bottom:var(--x-border-width) solid var(--x-border);color:var(--x-text-500);font-size:var(--x-font-size-medium)}.x-picker-date-header x-link{height:100%;-webkit-user-select:none;user-select:none}.x-picker-date-header .x-link{padding:0 .25rem}.x-picker-date-year-month{flex:1;text-align:center;color:var(--x-text);font-size:var(--x-font-size)}.x-picker-date-body{padding:.1375rem .5rem}.x-picker-date-body>table{width:100%;border-collapse:collapse;border-spacing:0}.x-picker-date-body>table tr{display:flex;align-items:center;justify-content:center}.x-picker-date-body>table tr.x-date-week-active .x-picker-date-item,.x-picker-date-body>table tr.x-date-week-active .x-picker-date-item.x-date-now:not(.x-date-active):not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next) .x-date-text,.x-picker-date-body>table tr.x-date-week-start-active .x-picker-date-item,.x-picker-date-body>table tr.x-date-week-start-active .x-picker-date-item.x-date-now:not(.x-date-active):not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next) .x-date-text,.x-picker-date-body>table tr.x-date-week-end-active .x-picker-date-item,.x-picker-date-body>table tr.x-date-week-end-active .x-picker-date-item.x-date-now:not(.x-date-active):not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next) .x-date-text{background-color:var(--x-primary);color:var(--x-background-100)}.x-picker-date-body>table tbody tr{padding:.125rem 0}.x-picker-date-body>table th{flex:1;font-weight:400;height:2rem;line-height:2rem;color:var(--x-text-400);-webkit-user-select:none;user-select:none}.x-picker-date-body>table td{padding:.125rem 0;flex:1;-webkit-user-select:none;user-select:none}.x-picker-date-body>table td:first-child{border-top-left-radius:var(--x-border-radius);border-bottom-left-radius:var(--x-border-radius)}.x-picker-date-body>table td:last-child{border-top-right-radius:var(--x-border-radius);border-bottom-right-radius:var(--x-border-radius)}.x-picker-date-body .x-picker-date-item{text-align:center;cursor:pointer;color:var(--x-text-300);position:relative;transition:var(--x-animation-duration-base)}.x-picker-date-body .x-picker-date-item .x-date-text{width:1.75rem;height:1.625rem;display:flex;align-items:center;justify-content:center;margin:0 auto;border:var(--x-border-width) var(--x-border-style) transparent;border-radius:var(--x-border-radius);transition:var(--x-animation-duration-base);position:relative}.x-picker-date-body .x-picker-date-item:after,.x-picker-date-body .x-picker-date-item:before{height:1.625rem}.x-picker-date-body .x-picker-date-item:hover:not(.x-date-in-range) .x-date-text{background-color:var(--x-background-a200)}.x-picker-date-body .x-picker-date-item.x-date-active:not(.x-date-last-or-next){color:var(--x-background-100)}.x-picker-date-body .x-picker-date-item.x-date-active:not(.x-date-last-or-next) .x-date-text{background-color:var(--x-primary);border-color:var(--x-primary)}.x-picker-date-body .x-picker-date-item.x-date-active:not(.x-date-last-or-next):hover{color:var(--x-background-100)}.x-picker-date-body .x-picker-date-item.x-date-active:not(.x-date-last-or-next):hover .x-date-text{background-color:var(--x-primary)}.x-picker-date-body .x-picker-date-item.x-date-last-or-next{color:var(--x-text-700)}.x-picker-date-body .x-picker-date-item.x-date-now:not(.x-date-active):not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next) .x-date-text{color:var(--x-primary);border-color:var(--x-primary)}.x-picker-date-body .x-picker-date-item.x-date-range-hover:first-child:not(.x-date-last-or-next).x-date-range-hover-end:before,.x-picker-date-body .x-picker-date-item.x-date-range-hover.x-date-first-day.x-date-range-hover-end:before{width:1.75rem}.x-picker-date-body .x-picker-date-item.x-date-range-hover:last-child:not(.x-date-last-or-next).x-date-range-hover-start:before,.x-picker-date-body .x-picker-date-item.x-date-range-hover.x-date-last-day.x-date-range-hover-start:before{width:1.75rem}.x-picker-date-body .x-picker-date-item.x-date-range-hover.x-date-first-day:last-child:not(.x-date-last-or-next):before,.x-picker-date-body .x-picker-date-item.x-date-range-hover.x-date-last-day:first-child:not(.x-date-last-or-next):before{width:1.75rem}.x-picker-date-body .x-picker-date-item.x-date-disabled{cursor:default;background-color:var(--x-background-a200);color:var(--x-text-700)}.x-picker-date .x-visibility{visibility:hidden}\n"], dependencies: [{ kind: "pipe", type: DatePipe, name: "date" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: XLinkComponent, selector: "x-link" }, { kind: "pipe", type: XI18nPipe, name: "xI18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
329
329
  }
330
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: XPickerDateComponent, decorators: [{
330
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XPickerDateComponent, decorators: [{
331
331
  type: Component,
332
- args: [{ selector: `${XPickerDatePrefix}`, standalone: true, imports: [DatePipe, NgTemplateOutlet, XLinkComponent, XI18nPipe], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [DatePipe, LowerCasePipe], template: "<div class=\"x-picker-date\" [class.x-date-picker-datetemp]=\"dateTemp\">\r\n @if (showHeader) {\r\n <div class=\"x-picker-date-header\">\r\n <x-link icon=\"fto-chevrons-left\" (click)=\"nextYear(-1)\" [class.x-visibility]=\"!lastYearBtn\"></x-link>\r\n <x-link icon=\"fto-chevron-left\" (click)=\"nextMonth(-1)\" [class.x-visibility]=\"!lastMonthBtn\"></x-link>\r\n <div class=\"x-picker-date-year-month\">\r\n <x-link (click)=\"typeOnChange('year')\">{{ display | date: 'yyyy' }}{{ locale.year }}</x-link>\r\n <x-link (click)=\"typeOnChange('month')\">{{ getLocaleMonth(display) }}</x-link>\r\n </div>\r\n <x-link icon=\"fto-chevron-right\" (click)=\"nextMonth(1)\" [class.x-visibility]=\"!nextMonthBtn\"></x-link>\r\n <x-link icon=\"fto-chevrons-right\" (click)=\"nextYear(1)\" [class.x-visibility]=\"!nextYearBtn\"></x-link>\r\n </div>\r\n }\r\n <div class=\"x-picker-date-body\">\r\n <table cellspacing=\"0\" cellpadding=\"0\">\r\n <thead>\r\n <tr>\r\n @for (title of titles; track title) {\r\n <th>{{ title | xI18n }}</th>\r\n }\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (weeks of weekDates; track weeks) {\r\n <tr\r\n [class.x-date-week-active]=\"!rangePicker && isWeek && isWeekActive(weeks)\"\r\n [class.x-date-week-start-active]=\"isWeekRange && isStartWeek(weeks)\"\r\n [class.x-date-week-end-active]=\"isWeekRange && isEndWeek(weeks)\"\r\n [class.x-date-week-in-range]=\"isWeekRange && isInRangeWeek(weeks)\"\r\n >\r\n @for (week of weeks; track week) {\r\n <td\r\n class=\"x-picker-date-item\"\r\n [class.x-date-week]=\"week.type === 'week'\"\r\n [class.x-date-disabled]=\"week.isDisabled\"\r\n [class.x-date-last-or-next]=\"week.isLastOrNext\"\r\n [class.x-date-now]=\"week.isNow\"\r\n [class.x-date-first-day]=\"week.isFirstDay\"\r\n [class.x-date-last-day]=\"week.isLastDay\"\r\n [class.x-date-range-start]=\"isNotWeekRange && isStartDate(week.date!)\"\r\n [class.x-date-range-end]=\"isNotWeekRange && isEndDate(week.date!)\"\r\n [class.x-date-range-start-left]=\"isNotWeekRange && week.isRangeStartLeft\"\r\n [class.x-date-range-start-right]=\"isNotWeekRange && week.isRangeStartRight\"\r\n [class.x-date-range-end-left]=\"isNotWeekRange && week.isRangeEndLeft\"\r\n [class.x-date-range-end-right]=\"isNotWeekRange && week.isRangeEndRight\"\r\n [class.x-date-range-hover]=\"isNotWeekRange && week.isRangeHover\"\r\n [class.x-date-range-hover-start-left]=\"isNotWeekRange && week.isRangeHoverStartLeft\"\r\n [class.x-date-range-hover-start-right]=\"isNotWeekRange && week.isRangeHoverStartRight\"\r\n [class.x-date-range-hover-end-left]=\"isNotWeekRange && week.isRangeHoverEndLeft\"\r\n [class.x-date-range-hover-end-right]=\"isNotWeekRange && week.isRangeHoverEndRight\"\r\n [class.x-date-range-hover-start]=\"isNotWeekRange && week.isRangeHoverStart\"\r\n [class.x-date-range-hover-end]=\"isNotWeekRange && week.isRangeHoverEnd\"\r\n [class.x-date-in-range]=\"isNotWeekRange && week.isInRange\"\r\n [class.x-date-in-range-hover]=\"isNotWeekRange && week.isInRangeHover\"\r\n [class.x-date-active]=\"\r\n !rangePicker && week.type !== 'week' && (week.date | date: 'yyyyMMdd') === (model | date: 'yyyyMMdd')\r\n \"\r\n title=\"{{ week.date | date: 'yyyy-MM-dd' }}\"\r\n (click)=\"week.type !== 'week' && !week.isDisabled && dateClick(week)\"\r\n (mouseenter)=\"\r\n week.type !== 'week' && !week.isDisabled && rangePicker && rangeHover && onTdMouseenter(week)\r\n \"\r\n (mouseleave)=\"\r\n week.type !== 'week' && !week.isDisabled && rangePicker && rangeHover && onTdMouseleave(week)\r\n \"\r\n >\r\n @if (dateTemp) {\r\n <ng-container *ngTemplateOutlet=\"dateTemp; context: { date$: week.date }\"></ng-container>\r\n } @else {\r\n <div class=\"x-date-text\">\r\n @switch (week.type) {\r\n @case ('week') {\r\n {{ week.week }}\r\n }\r\n @default {\r\n {{ week.date | date: 'd' }}\r\n }\r\n }\r\n </div>\r\n }\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.x-picker-date{margin:0;padding:0}.x-picker-date-header{display:flex;align-items:center;justify-content:space-between;padding:0 .5rem;height:2.5rem;border-bottom:var(--x-border-width) solid var(--x-border);color:var(--x-text-500);font-size:var(--x-font-size-medium)}.x-picker-date-header x-link{height:100%;-webkit-user-select:none;user-select:none}.x-picker-date-header .x-link{padding:0 .25rem}.x-picker-date-year-month{flex:1;text-align:center;color:var(--x-text);font-size:var(--x-font-size)}.x-picker-date-body{padding:.1375rem .5rem}.x-picker-date-body>table{width:100%;border-collapse:collapse;border-spacing:0}.x-picker-date-body>table tr{display:flex;align-items:center;justify-content:center}.x-picker-date-body>table tr.x-date-week-active .x-picker-date-item,.x-picker-date-body>table tr.x-date-week-active .x-picker-date-item.x-date-now:not(.x-date-active):not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next) .x-date-text,.x-picker-date-body>table tr.x-date-week-start-active .x-picker-date-item,.x-picker-date-body>table tr.x-date-week-start-active .x-picker-date-item.x-date-now:not(.x-date-active):not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next) .x-date-text,.x-picker-date-body>table tr.x-date-week-end-active .x-picker-date-item,.x-picker-date-body>table tr.x-date-week-end-active .x-picker-date-item.x-date-now:not(.x-date-active):not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next) .x-date-text{background-color:var(--x-primary);color:var(--x-background-100)}.x-picker-date-body>table tbody tr{padding:.125rem 0}.x-picker-date-body>table th{flex:1;font-weight:400;height:2rem;line-height:2rem;color:var(--x-text-400);-webkit-user-select:none;user-select:none}.x-picker-date-body>table td{padding:.125rem 0;flex:1;-webkit-user-select:none;user-select:none}.x-picker-date-body>table td:first-child{border-top-left-radius:var(--x-border-radius);border-bottom-left-radius:var(--x-border-radius)}.x-picker-date-body>table td:last-child{border-top-right-radius:var(--x-border-radius);border-bottom-right-radius:var(--x-border-radius)}.x-picker-date-body .x-picker-date-item{text-align:center;cursor:pointer;color:var(--x-text-300);position:relative;transition:var(--x-animation-duration-base)}.x-picker-date-body .x-picker-date-item .x-date-text{width:1.75rem;height:1.625rem;display:flex;align-items:center;justify-content:center;margin:0 auto;border:var(--x-border-width) var(--x-border-style) transparent;border-radius:var(--x-border-radius);transition:var(--x-animation-duration-base);position:relative}.x-picker-date-body .x-picker-date-item:after,.x-picker-date-body .x-picker-date-item:before{height:1.625rem}.x-picker-date-body .x-picker-date-item:hover:not(.x-date-in-range) .x-date-text{background-color:var(--x-background-a200)}.x-picker-date-body .x-picker-date-item.x-date-active:not(.x-date-last-or-next){color:var(--x-background-100)}.x-picker-date-body .x-picker-date-item.x-date-active:not(.x-date-last-or-next) .x-date-text{background-color:var(--x-primary);border-color:var(--x-primary)}.x-picker-date-body .x-picker-date-item.x-date-active:not(.x-date-last-or-next):hover{color:var(--x-background-100)}.x-picker-date-body .x-picker-date-item.x-date-active:not(.x-date-last-or-next):hover .x-date-text{background-color:var(--x-primary)}.x-picker-date-body .x-picker-date-item.x-date-last-or-next{color:var(--x-text-700)}.x-picker-date-body .x-picker-date-item.x-date-now:not(.x-date-active):not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next) .x-date-text{color:var(--x-primary);border-color:var(--x-primary)}.x-picker-date-body .x-picker-date-item.x-date-range-hover:first-child:not(.x-date-last-or-next).x-date-range-hover-end:before,.x-picker-date-body .x-picker-date-item.x-date-range-hover.x-date-first-day.x-date-range-hover-end:before{width:1.75rem}.x-picker-date-body .x-picker-date-item.x-date-range-hover:last-child:not(.x-date-last-or-next).x-date-range-hover-start:before,.x-picker-date-body .x-picker-date-item.x-date-range-hover.x-date-last-day.x-date-range-hover-start:before{width:1.75rem}.x-picker-date-body .x-picker-date-item.x-date-range-hover.x-date-first-day:last-child:not(.x-date-last-or-next):before,.x-picker-date-body .x-picker-date-item.x-date-range-hover.x-date-last-day:first-child:not(.x-date-last-or-next):before{width:1.75rem}.x-picker-date-body .x-picker-date-item.x-date-disabled{cursor:default;background-color:var(--x-background-a200);color:var(--x-text-700)}.x-picker-date .x-visibility{visibility:hidden}\n"] }]
332
+ args: [{ selector: `${XPickerDatePrefix}`, standalone: true, imports: [DatePipe, NgTemplateOutlet, XLinkComponent, XI18nPipe], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [DatePipe, LowerCasePipe], template: "<div class=\"x-picker-date\" [class.x-date-picker-datetemp]=\"dateTemp()\">\r\n @if (showHeader()) {\r\n <div class=\"x-picker-date-header\">\r\n <x-link icon=\"fto-chevrons-left\" (click)=\"nextYear(-1)\" [class.x-visibility]=\"!lastYearBtn()\"></x-link>\r\n <x-link icon=\"fto-chevron-left\" (click)=\"nextMonth(-1)\" [class.x-visibility]=\"!lastMonthBtn()\"></x-link>\r\n <div class=\"x-picker-date-year-month\">\r\n <x-link (click)=\"typeOnChange('year')\">{{ display() | date: 'yyyy' }}{{ locale().year }}</x-link>\r\n <x-link (click)=\"typeOnChange('month')\">{{ getLocaleMonth(display()) }}</x-link>\r\n </div>\r\n <x-link icon=\"fto-chevron-right\" (click)=\"nextMonth(1)\" [class.x-visibility]=\"!nextMonthBtn()\"></x-link>\r\n <x-link icon=\"fto-chevrons-right\" (click)=\"nextYear(1)\" [class.x-visibility]=\"!nextYearBtn()\"></x-link>\r\n </div>\r\n }\r\n <div class=\"x-picker-date-body\">\r\n <table cellspacing=\"0\" cellpadding=\"0\">\r\n <thead>\r\n <tr>\r\n @for (title of titles(); track title) {\r\n <th>{{ title | xI18n }}</th>\r\n }\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (weeks of weekDates(); track $index) {\r\n <tr\r\n [class.x-date-week-active]=\"!rangePicker() && isWeek() && isWeekActive(weeks)\"\r\n [class.x-date-week-start-active]=\"isWeekRange() && isStartWeek(weeks)\"\r\n [class.x-date-week-end-active]=\"isWeekRange() && isEndWeek(weeks)\"\r\n [class.x-date-week-in-range]=\"isWeekRange() && isInRangeWeek(weeks)\"\r\n >\r\n @for (week of weeks; track week.date) {\r\n <td\r\n class=\"x-picker-date-item\"\r\n [class.x-date-week]=\"week.type === 'week'\"\r\n [class.x-date-disabled]=\"week.isDisabled\"\r\n [class.x-date-last-or-next]=\"week.isLastOrNext\"\r\n [class.x-date-now]=\"week.isNow\"\r\n [class.x-date-first-day]=\"week.isFirstDay\"\r\n [class.x-date-last-day]=\"week.isLastDay\"\r\n [class.x-date-range-start]=\"isNotWeekRange() && isStartDate(week.date!)\"\r\n [class.x-date-range-end]=\"isNotWeekRange() && isEndDate(week.date!)\"\r\n [class.x-date-range-start-left]=\"isNotWeekRange() && week.isRangeStartLeft\"\r\n [class.x-date-range-start-right]=\"isNotWeekRange() && week.isRangeStartRight\"\r\n [class.x-date-range-end-left]=\"isNotWeekRange() && week.isRangeEndLeft\"\r\n [class.x-date-range-end-right]=\"isNotWeekRange() && week.isRangeEndRight\"\r\n [class.x-date-range-hover]=\"isNotWeekRange() && week.isRangeHover\"\r\n [class.x-date-range-hover-start-left]=\"isNotWeekRange() && week.isRangeHoverStartLeft\"\r\n [class.x-date-range-hover-start-right]=\"isNotWeekRange() && week.isRangeHoverStartRight\"\r\n [class.x-date-range-hover-end-left]=\"isNotWeekRange() && week.isRangeHoverEndLeft\"\r\n [class.x-date-range-hover-end-right]=\"isNotWeekRange() && week.isRangeHoverEndRight\"\r\n [class.x-date-range-hover-start]=\"isNotWeekRange() && week.isRangeHoverStart\"\r\n [class.x-date-range-hover-end]=\"isNotWeekRange() && week.isRangeHoverEnd\"\r\n [class.x-date-in-range]=\"isNotWeekRange() && week.isInRange\"\r\n [class.x-date-in-range-hover]=\"isNotWeekRange() && week.isInRangeHover\"\r\n [class.x-date-active]=\"\r\n !rangePicker() &&\r\n week.type !== 'week' &&\r\n (week.date | date: 'yyyyMMdd') === (model() | date: 'yyyyMMdd')\r\n \"\r\n [title]=\"week.date | date: 'yyyy-MM-dd'\"\r\n (click)=\"week.type !== 'week' && !week.isDisabled && dateClick(week)\"\r\n (mouseenter)=\"\r\n week.type !== 'week' && !week.isDisabled && rangePicker() && rangeHover() && onTdMouseenter(week)\r\n \"\r\n (mouseleave)=\"\r\n week.type !== 'week' && !week.isDisabled && rangePicker() && rangeHover() && onTdMouseleave(week)\r\n \"\r\n >\r\n @if (dateTemp()) {\r\n <ng-container *ngTemplateOutlet=\"dateTemp()!; context: { date$: week.date }\"></ng-container>\r\n } @else {\r\n <div class=\"x-date-text\">\r\n @switch (week.type) {\r\n @case ('week') {\r\n {{ week.week }}\r\n }\r\n @default {\r\n {{ week.date | date: 'd' }}\r\n }\r\n }\r\n </div>\r\n }\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.x-picker-date{margin:0;padding:0}.x-picker-date-header{display:flex;align-items:center;justify-content:space-between;padding:0 .5rem;height:2.5rem;border-bottom:var(--x-border-width) solid var(--x-border);color:var(--x-text-500);font-size:var(--x-font-size-medium)}.x-picker-date-header x-link{height:100%;-webkit-user-select:none;user-select:none}.x-picker-date-header .x-link{padding:0 .25rem}.x-picker-date-year-month{flex:1;text-align:center;color:var(--x-text);font-size:var(--x-font-size)}.x-picker-date-body{padding:.1375rem .5rem}.x-picker-date-body>table{width:100%;border-collapse:collapse;border-spacing:0}.x-picker-date-body>table tr{display:flex;align-items:center;justify-content:center}.x-picker-date-body>table tr.x-date-week-active .x-picker-date-item,.x-picker-date-body>table tr.x-date-week-active .x-picker-date-item.x-date-now:not(.x-date-active):not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next) .x-date-text,.x-picker-date-body>table tr.x-date-week-start-active .x-picker-date-item,.x-picker-date-body>table tr.x-date-week-start-active .x-picker-date-item.x-date-now:not(.x-date-active):not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next) .x-date-text,.x-picker-date-body>table tr.x-date-week-end-active .x-picker-date-item,.x-picker-date-body>table tr.x-date-week-end-active .x-picker-date-item.x-date-now:not(.x-date-active):not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next) .x-date-text{background-color:var(--x-primary);color:var(--x-background-100)}.x-picker-date-body>table tbody tr{padding:.125rem 0}.x-picker-date-body>table th{flex:1;font-weight:400;height:2rem;line-height:2rem;color:var(--x-text-400);-webkit-user-select:none;user-select:none}.x-picker-date-body>table td{padding:.125rem 0;flex:1;-webkit-user-select:none;user-select:none}.x-picker-date-body>table td:first-child{border-top-left-radius:var(--x-border-radius);border-bottom-left-radius:var(--x-border-radius)}.x-picker-date-body>table td:last-child{border-top-right-radius:var(--x-border-radius);border-bottom-right-radius:var(--x-border-radius)}.x-picker-date-body .x-picker-date-item{text-align:center;cursor:pointer;color:var(--x-text-300);position:relative;transition:var(--x-animation-duration-base)}.x-picker-date-body .x-picker-date-item .x-date-text{width:1.75rem;height:1.625rem;display:flex;align-items:center;justify-content:center;margin:0 auto;border:var(--x-border-width) var(--x-border-style) transparent;border-radius:var(--x-border-radius);transition:var(--x-animation-duration-base);position:relative}.x-picker-date-body .x-picker-date-item:after,.x-picker-date-body .x-picker-date-item:before{height:1.625rem}.x-picker-date-body .x-picker-date-item:hover:not(.x-date-in-range) .x-date-text{background-color:var(--x-background-a200)}.x-picker-date-body .x-picker-date-item.x-date-active:not(.x-date-last-or-next){color:var(--x-background-100)}.x-picker-date-body .x-picker-date-item.x-date-active:not(.x-date-last-or-next) .x-date-text{background-color:var(--x-primary);border-color:var(--x-primary)}.x-picker-date-body .x-picker-date-item.x-date-active:not(.x-date-last-or-next):hover{color:var(--x-background-100)}.x-picker-date-body .x-picker-date-item.x-date-active:not(.x-date-last-or-next):hover .x-date-text{background-color:var(--x-primary)}.x-picker-date-body .x-picker-date-item.x-date-last-or-next{color:var(--x-text-700)}.x-picker-date-body .x-picker-date-item.x-date-now:not(.x-date-active):not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next) .x-date-text{color:var(--x-primary);border-color:var(--x-primary)}.x-picker-date-body .x-picker-date-item.x-date-range-hover:first-child:not(.x-date-last-or-next).x-date-range-hover-end:before,.x-picker-date-body .x-picker-date-item.x-date-range-hover.x-date-first-day.x-date-range-hover-end:before{width:1.75rem}.x-picker-date-body .x-picker-date-item.x-date-range-hover:last-child:not(.x-date-last-or-next).x-date-range-hover-start:before,.x-picker-date-body .x-picker-date-item.x-date-range-hover.x-date-last-day.x-date-range-hover-start:before{width:1.75rem}.x-picker-date-body .x-picker-date-item.x-date-range-hover.x-date-first-day:last-child:not(.x-date-last-or-next):before,.x-picker-date-body .x-picker-date-item.x-date-range-hover.x-date-last-day:first-child:not(.x-date-last-or-next):before{width:1.75rem}.x-picker-date-body .x-picker-date-item.x-date-disabled{cursor:default;background-color:var(--x-background-a200);color:var(--x-text-700)}.x-picker-date .x-visibility{visibility:hidden}\n"] }]
333
333
  }] });
334
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLWRhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZGF0ZS1waWNrZXIvcGlja2VyLWRhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZGF0ZS1waWNrZXIvcGlja2VyLWRhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUdqQixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JILE9BQU8sRUFBOEIsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBbUIsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBWWxELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxtQkFBbUI7SUFWN0Q7O1FBV0UsV0FBTSxHQUFHO1lBQ1AsbUJBQW1CO1lBQ25CLG9CQUFvQjtZQUNwQixzQkFBc0I7WUFDdEIscUJBQXFCO1lBQ3JCLG1CQUFtQjtZQUNuQixxQkFBcUI7WUFDckIsbUJBQW1CO1NBQ3BCLENB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R0FBRyxDQUFDLEVBQUU7WUFDbkIsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUssQ0FBQyxLQUFLLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBTSxDQUFDLENBQUM7U0FDcEU7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBaUI7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU87UUFDaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbkQsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUssQ0FBQyxLQUFLLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBRSxDQUFDLENBQUM7U0FDNUU7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxTQUFTLENBQUMsSUFBaUI7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU87UUFDaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbkQsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUssQ0FBQyxLQUFLLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBRSxDQUFDLENBQUM7U0FDNUU7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxhQUFhLENBQUMsSUFBaUI7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU87UUFDaEQs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OlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgaW5qZWN0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFhDaHVuaywgWElzQ2hhbmdlLCBYQ29uZmlnU2VydmljZSwgWElzTnVsbCwgWElzRnVuY3Rpb24sIFhEYXRlV2VlaywgWERhdGVZZWFyV2VlayB9IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBYRGF0ZUNlbGwsIFhEYXRlUGlja2VyVHlwZSwgWFBpY2tlckRhdGVQcmVmaXgsIFhQaWNrZXJEYXRlUHJvcGVydHkgfSBmcm9tICcuL2RhdGUtcGlja2VyLnByb3BlcnR5JztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBYSTE4bkRhdGVQaWNrZXIsIFhJMThuUGlwZSwgWEkxOG5TZXJ2aWNlIH0gZnJvbSAnQG5nLW5lc3QvdWkvaTE4bic7XHJcbmltcG9ydCB7IG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBEYXRlUGlwZSwgTG93ZXJDYXNlUGlwZSwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFhMaW5rQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvbGluayc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYCR7WFBpY2tlckRhdGVQcmVmaXh9YCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtEYXRlUGlwZSwgTmdUZW1wbGF0ZU91dGxldCwgWExpbmtDb21wb25lbnQsIFhJMThuUGlwZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3BpY2tlci1kYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9waWNrZXItZGF0ZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbRGF0ZVBpcGUsIExvd2VyQ2FzZVBpcGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBYUGlja2VyRGF0ZUNvbXBvbmVudCBleHRlbmRzIFhQaWNrZXJEYXRlUHJvcGVydHkgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gIHRpdGxlcyA9IFtcclxuICAgICdkYXRlUGlja2VyLm1vbmRheScsXHJcbiAgICAnZGF0ZVBpY2tlci50dWVzZGF5JyxcclxuICAgICdkYXRlUGlja2VyLndlZG5lc2RheScsXHJcbiAgICAnZGF0ZVBpY2tlci50aHVyc2RheScsXHJcbiAgICAnZGF0ZVBpY2tlci5mcmlkYXknLFxyXG4gICAgJ2RhdGVQaWNrZXIuc2F0dXJkYXknLFxyXG4gICAgJ2RhdGVQaWNrZXIuc3VuZGF5J1xyXG4gIF07XHJcbiAgbm93ID0gbmV3IERhdGUoKTtcclxuICBkYXRlczogWERhdGVDZWxsW10gPSBbXTtcclxuICB3ZWVrRGF0ZXM6IFhEYXRlQ2VsbFtdW10gPSBbXTtcclxuICBjbGlja0NlbGw/OiBYRGF0ZUNlbGw7XHJcbiAgbG9jYWxlOiBYSTE4bkRhdGVQaWNrZXIgPSB7fTtcclxuICBwcml2YXRlIF91blN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBnZXQgcmFuZ2VTdGFydCgpIHtcclxuICAgIGlmICh0aGlzLnJhbmdlVmFsdWUgJiYgdGhpcy5yYW5nZVZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmFuZ2VWYWx1ZVswXTtcclxuICAgIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIGdldCByYW5nZUVuZCgpIHtcclxuICAgIGlmICh0aGlzLnJhbmdlVmFsdWUgJiYgdGhpcy5yYW5nZVZhbHVlLmxlbmd0aCA+IDEpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmFuZ2VWYWx1ZVsxXTtcclxuICAgIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIGdldCBpc1dlZWsoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSAnd2Vlayc7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNXZWVrUmFuZ2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSAnd2VlaycgJiYgdGhpcy5yYW5nZVBpY2tlcjtcclxuICB9XHJcblxyXG4gIGdldCBpc05vdFdlZWtSYW5nZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnR5cGUgIT09ICd3ZWVrJyAmJiB0aGlzLnJhbmdlUGlja2VyO1xyXG4gIH1cclxuXHJcbiAgaXNEaXNhYmxlZChkYXRlOiBEYXRlKSB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZERhdGUgJiYgWElzRnVuY3Rpb24odGhpcy5kaXNhYmxlZERhdGUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkRGF0ZShkYXRlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuICBwcml2YXRlIGRhdGVQaXBlID0gaW5qZWN0KERhdGVQaXBlKTtcclxuICBwcml2YXRlIGxvd2VyQ2FzZVBpcGUgPSBpbmplY3QoTG93ZXJDYXNlUGlwZSk7XHJcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KFhJMThuU2VydmljZSk7XHJcbiAgY29uZmlnU2VydmljZSA9IGluamVjdChYQ29uZmlnU2VydmljZSk7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5pMThuLmxvY2FsZUNoYW5nZVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHgpID0+IHguZGF0ZVBpY2tlciBhcyBYSTE4bkRhdGVQaWNrZXIpLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9jYWxlID0geDtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLnNldFRpdGxlcygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoc2ltcGxlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgY29uc3QgeyBkaXNwbGF5IH0gPSBzaW1wbGVzO1xyXG4gICAgWElzQ2hhbmdlKGRpc3BsYXkpICYmIHRoaXMuaW5pdCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLl91blN1YmplY3QubmV4dCgpO1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBpbml0KCkge1xyXG4gICAgdGhpcy5zZXREYXlzKHRoaXMuZGlzcGxheSk7XHJcbiAgfVxyXG5cclxuICBpc1dlZWtBY3RpdmUod2VlazogWERhdGVDZWxsW10pIHtcclxuICAgIGlmICh3ZWVrLmxlbmd0aCA+IDEpIHtcclxuICAgICAgcmV0dXJuIFhEYXRlWWVhcldlZWsod2Vla1sxXS5kYXRlISkgPT09IFhEYXRlWWVhcldlZWsodGhpcy5tb2RlbCEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgaXNTdGFydFdlZWsod2VlazogWERhdGVDZWxsW10pIHtcclxuICAgIGlmICghdGhpcy5yYW5nZVR5cGUgfHwgIXRoaXMucmFuZ2VWYWx1ZSkgcmV0dXJuO1xyXG4gICAgaWYgKCFYSXNOdWxsKHRoaXMucmFuZ2VWYWx1ZVswXSkgJiYgd2Vlay5sZW5ndGggPiAxKSB7XHJcbiAgICAgIHJldHVybiBYRGF0ZVllYXJXZWVrKHdlZWtbMV0uZGF0ZSEpID09PSBYRGF0ZVllYXJXZWVrKHRoaXMucmFuZ2VWYWx1ZVswXSEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgaXNFbmRXZWVrKHdlZWs6IFhEYXRlQ2VsbFtdKSB7XHJcbiAgICBpZiAoIXRoaXMucmFuZ2VUeXBlIHx8ICF0aGlzLnJhbmdlVmFsdWUpIHJldHVybjtcclxuICAgIGlmICghWElzTnVsbCh0aGlzLnJhbmdlVmFsdWVbMV0pICYmIHdlZWsubGVuZ3RoID4gMSkge1xyXG4gICAgICByZXR1cm4gWERhdGVZZWFyV2Vlayh3ZWVrWzFdLmRhdGUhKSA9PT0gWERhdGVZZWFyV2Vlayh0aGlzLnJhbmdlVmFsdWVbMV0hKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGlzSW5SYW5nZVdlZWsod2VlazogWERhdGVDZWxsW10pIHtcclxuICAgIGlmICghdGhpcy5yYW5nZVR5cGUgfHwgIXRoaXMucmFuZ2VWYWx1ZSkgcmV0dXJuO1xyXG4gICAgaWYgKCFYSXNOdWxsKHRoaXMucmFuZ2VWYWx1ZVswXSkgJiYgIVhJc051bGwodGhpcy5yYW5nZVZhbHVlWzFdKSAmJiB3ZWVrLmxlbmd0aCA+IDEpIHtcclxuICAgICAgbGV0IHRpbWUgPSB3ZWVrWzFdLmRhdGU/LmdldFRpbWUoKSE7XHJcbiAgICAgIHJldHVybiB0aW1lID4gdGhpcy5yYW5nZVZhbHVlWzBdISAmJiB0aW1lIDwgdGhpcy5yYW5nZVZhbHVlWzFdITtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGlzU3RhcnREYXRlKGRhdGU6IERhdGUpIHtcclxuICAgIGlmICh0aGlzLnR5cGUgPT09ICd3ZWVrJyB8fCAhdGhpcy5yYW5nZVR5cGUgfHwgIXRoaXMucmFuZ2VWYWx1ZSkgcmV0dXJuO1xyXG4gICAgaWYgKCFYSXNOdWxsKHRoaXMucmFuZ2VWYWx1ZVswXSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMucmFuZ2VWYWx1ZVswXSwgJ3l5eXlNTWRkJykgPT09IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsICd5eXl5TU1kZCcpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgaXNFbmREYXRlKGRhdGU6IERhdGUpIHtcclxuICAgIGlmICh0aGlzLnR5cGUgPT09ICd3ZWVrJyB8fCAhdGhpcy5yYW5nZVR5cGUgfHwgIXRoaXMucmFuZ2VWYWx1ZSkgcmV0dXJuO1xyXG4gICAgaWYgKCFYSXNOdWxsKHRoaXMucmFuZ2VWYWx1ZVsxXSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMucmFuZ2VWYWx1ZVsxXSwgJ3l5eXlNTWRkJykgPT09IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsICd5eXl5TU1kZCcpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgc2V0RGF0ZXNTdGF0ZShjZWxsOiBYRGF0ZUNlbGwpIHtcclxuICAgIHRoaXMuY2xlYXJTdGF0ZSguLi50aGlzLmRhdGVzKTtcclxuICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5kYXRlcykge1xyXG4gICAgICB0aGlzLnNldERheVN0YXRlKGl0ZW0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vblRkTW91c2VlbnRlcihjZWxsLCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBzZXRUaXRsZXMoKSB7XHJcbiAgICBpZiAodGhpcy50eXBlID09PSAnd2VlaycpIHtcclxuICAgICAgdGhpcy50aXRsZXMgPSBbJ2RhdGVQaWNrZXIud2VlaycsIC4uLnRoaXMudGl0bGVzXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uVGRNb3VzZWVudGVyKGNlbGw6IFhEYXRlQ2VsbCwgaXNFbWl0ID0gdHJ1ZSkge1xyXG4gICAgY29uc3QgW3N0YXJ0LCBlbmRdID0gdGhpcy5yYW5nZVZhbHVlO1xyXG4gICAgaWYgKCFYSXNOdWxsKHN0YXJ0KSB8fCAhWElzTnVsbChlbmQpKSB7XHJcbiAgICAgIGNvbnN0IHRpbWUgPSBjZWxsLmRhdGUhLmdldFRpbWUoKTtcclxuICAgICAgZm9yIChsZXQgaXRlbSBvZiB0aGlzLmRhdGVzKSB7XHJcbiAgICAgICAgY29uc3QgaXRlbVRpbWUgPSBpdGVtLmRhdGUhLmdldFRpbWUoKTtcclxuICAgICAgICB0aGlzLmNsZWFyU3RhdGUoaXRlbSk7XHJcbiAgICAgICAgaWYgKCFYSXNOdWxsKHN0YXJ0KSAmJiBYSXNOdWxsKGVuZCkpIHtcclxuICAgICAgICAgIGl0ZW0uaXNSYW5nZUhvdmVyU3RhcnRMZWZ0ID0gdGltZSA8IHN0YXJ0ISAmJiBpdGVtVGltZSA9PT0gc3RhcnQhO1xyXG4gICAgICAgICAgaXRlbS5pc1JhbmdlSG92ZXJTdGFydFJpZ2h0ID0gdGltZSA+IHN0YXJ0ISAmJiBpdGVtVGltZSA9PT0gc3RhcnQhO1xyXG4gICAgICAgICAgaXRlbS5pc1JhbmdlSG92ZXIgPVxyXG4gICAgICAgICAgICAodGltZSA8IHN0YXJ0ISAmJiBpdGVtVGltZSA+PSB0aW1lICYmIGl0ZW1UaW1lIDwgc3RhcnQhKSB8fFxyXG4gICAgICAgICAgICAodGltZSA+IHN0YXJ0ISAmJiBpdGVtVGltZSA+IHN0YXJ0ISAmJiBpdGVtVGltZSA8PSB0aW1lKTtcclxuICAgICAgICAgIGl0ZW0uaXNSYW5nZUhvdmVyU3RhcnQgPSBpdGVtVGltZSA9PT0gdGltZSAmJiB0aW1lIDwgc3RhcnQhO1xyXG4gICAgICAgICAgaXRlbS5pc1JhbmdlSG92ZXJFbmQgPSBpdGVtVGltZSA9PT0gdGltZSAmJiB0aW1lID4gc3RhcnQhO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoWElzTnVsbChzdGFydCkgJiYgIVhJc051bGwoZW5kKSkge1xyXG4gICAgICAgICAgaXRlbS5pc1JhbmdlSG92ZXJFbmRMZWZ0ID0gdGltZSA8IGVuZCEgJiYgaXRlbVRpbWUgPT09IGVuZCE7XHJcbiAgICAgICAgICBpdGVtLmlzUmFuZ2VIb3ZlckVuZFJpZ2h0ID0gdGltZSA+IGVuZCEgJiYgaXRlbVRpbWUgPT09IGVuZCE7XHJcbiAgICAgICAgICBpdGVtLmlzUmFuZ2VIb3ZlciA9XHJcbiAgICAgICAgICAgICh0aW1lIDwgZW5kISAmJiBpdGVtVGltZSA+PSB0aW1lICYmIGl0ZW1UaW1lIDwgZW5kISkgfHxcclxuICAgICAgICAgICAgKHRpbWUgPiBlbmQhICYmIGl0ZW1UaW1lID4gZW5kISAmJiBpdGVtVGltZSA8PSB0aW1lKTtcclxuICAgICAgICAgIGl0ZW0uaXNSYW5nZUhvdmVyU3RhcnQgPSBpdGVtVGltZSA9PT0gdGltZSAmJiB0aW1lIDwgZW5kITtcclxuICAgICAgICAgIGl0ZW0uaXNSYW5nZUhvdmVyRW5kID0gaXRlbVRpbWUgPT09IHRpbWUgJiYgdGltZSA+IGVuZCE7XHJcbiAgICAgICAgfSBlbHNlIGlmICghWElzTnVsbChzdGFydCkgJiYgIVhJc051bGwoZW5kKSkge1xyXG4gICAgICAgICAgaXRlbS5pc1JhbmdlSG92ZXJTdGFydExlZnQgPSB0aW1lIDwgc3RhcnQhICYmIGl0ZW1UaW1lID09PSBzdGFydCE7XHJcbiAgICAgICAgICBpdGVtLmlzUmFuZ2VIb3ZlckVuZFJpZ2h0ID0gdGltZSA+IGVuZCEgJiYgaXRlbVRpbWUgPT09IGVuZCE7XHJcbiAgICAgICAgICBpdGVtLmlzUmFuZ2VIb3ZlciA9XHJcbiAgICAgICAgICAgICh0aW1lIDwgc3RhcnQhICYmIGl0ZW1UaW1lID49IHRpbWUgJiYgaXRlbVRpbWUgPCBzdGFydCEpIHx8XHJcbiAgICAgICAgICAgICh0aW1lID4gZW5kISAmJiBpdGVtVGltZSA+IGVuZCEgJiYgaXRlbVRpbWUgPD0gdGltZSk7XHJcbiAgICAgICAgICBpdGVtLmlzUmFuZ2VIb3ZlclN0YXJ0ID0gaXRlbVRpbWUgPT09IHRpbWUgJiYgdGltZSA8IHN0YXJ0ITtcclxuICAgICAgICAgIGl0ZW0uaXNSYW5nZUhvdmVyRW5kID0gaXRlbVRpbWUgPT09IHRpbWUgJiYgdGltZSA+IGVuZCE7XHJcbiAgICAgICAgICBpZiAodGhpcy5yYW5nZVR5cGUgPT09ICdzdGFydCcpIHtcclxuICAgICAgICAgICAgaXRlbS5pc0luUmFuZ2VIb3ZlciA9IGl0ZW1UaW1lID49IHRpbWUhICYmIGl0ZW1UaW1lIDw9IGVuZCE7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmFuZ2VUeXBlID09PSAnZW5kJykge1xyXG4gICAgICAgICAgICBpdGVtLmlzSW5SYW5nZUhvdmVyID0gaXRlbVRpbWUgPj0gc3RhcnQhICYmIGl0ZW1UaW1lIDw9IHRpbWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChpc0VtaXQpIHtcclxuICAgICAgICB0aGlzLnJhbmdlVGRNb3VzZWVudGVyLmVtaXQoY2VsbCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblRkTW91c2VsZWF2ZShjZWxsOiBYRGF0ZUNlbGwsIGlzRW1pdCA9IHRydWUpIHtcclxuICAgIGNvbnN0IFtzdGFydCwgZW5kXSA9IHRoaXMucmFuZ2VWYWx1ZTtcclxuICAgIGlmICghWElzTnVsbChzdGFydCkgfHwgIVhJc051bGwoZW5kKSkge1xyXG4gICAgICB0aGlzLmNsZWFyU3RhdGUoLi4udGhpcy5kYXRlcyk7XHJcbiAgICAgIGlmIChpc0VtaXQpIHRoaXMucmFuZ2VUZE1vdXNlbGVhdmUuZW1pdChjZWxsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsZWFyU3RhdGUoLi4uY2VsbHM6IFhEYXRlQ2VsbFtdKSB7XHJcbiAgICBmb3IgKGxldCBjZWxsIG9mIGNlbGxzKSB7XHJcbiAgICAgIGNlbGwuaXNJblJhbmdlSG92ZXIgPSBmYWxzZTtcclxuICAgICAgY2VsbC5pc1JhbmdlSG92ZXIgPSBmYWxzZTtcclxuICAgICAgY2VsbC5pc1JhbmdlSG92ZXJTdGFydCA9IGZhbHNlO1xyXG4gICAgICBjZWxsLmlzUmFuZ2VIb3ZlckVuZCA9IGZhbHNlO1xyXG4gICAgICBjZWxsLmlzUmFuZ2VIb3ZlclN0YXJ0TGVmdCA9IGZhbHNlO1xyXG4gICAgICBjZWxsLmlzUmFuZ2VIb3ZlclN0YXJ0UmlnaHQgPSBmYWxzZTtcclxuICAgICAgY2VsbC5pc1JhbmdlSG92ZXJFbmRMZWZ0ID0gZmFsc2U7XHJcbiAgICAgIGNlbGwuaXNSYW5nZUhvdmVyRW5kUmlnaHQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldERheXMoZGF0ZTogRGF0ZSkge1xyXG4gICAgbGV0IGRhdGVzOiBYRGF0ZUNlbGxbXSA9IFtdO1xyXG4gICAgY29uc3QgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgIGNvbnN0IG1vbnRoID0gZGF0ZS5nZXRNb250aCgpO1xyXG4gICAgY29uc3QgZmlyc3QgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSk7XHJcbiAgICBjb25zdCBsYXN0ID0gbmV3IERhdGUoeWVhciwgbW9udGggKyAxLCAwKTtcclxuICAgIGNvbnN0IGxhc3REYXRlID0gbGFzdC5nZXREYXRlKCk7XHJcbiAgICBjb25zdCBmaXJzdERheSA9IGZpcnN0LmdldERheSgpO1xyXG4gICAgY29uc3QgbGFzdERheSA9IGxhc3QuZ2V0RGF5KCk7XHJcblxyXG4gICAgbGV0IGRheSA9IGZpcnN0RGF5O1xyXG4gICAgbGV0IGluZGV4ID0gMTtcclxuICAgIHdoaWxlIChkYXkgIT09IDEpIHtcclxuICAgICAgaW5kZXgtLTtcclxuICAgICAgY29uc3QgY2VsbCA9IHsgZGF0ZTogbmV3IERhdGUoeWVhciwgbW9udGgsIGluZGV4KSB9O1xyXG4gICAgICBkYXRlcyA9IFt0aGlzLnNldERheVN0YXRlKGNlbGwpLCAuLi5kYXRlc107XHJcbiAgICAgIGRheSA9IGNlbGwuZGF0ZS5nZXREYXkoKTtcclxuICAgIH1cclxuXHJcbiAgICBpbmRleCA9IDE7XHJcbiAgICBkbyB7XHJcbiAgICAgIGNvbnN0IGNlbGw6IFhEYXRlQ2VsbCA9IHtcclxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgaW5kZXgpLFxyXG4gICAgICAgIGlzRmlyc3REYXk6IGluZGV4ID09PSAxLFxyXG4gICAgICAgIGlzTGFzdERheTogaW5kZXggPT09IGxhc3REYXRlXHJcbiAgICAgIH07XHJcbiAgICAgIGRhdGVzID0gWy4uLmRhdGVzLCB0aGlzLnNldERheVN0YXRlKGNlbGwpXTtcclxuICAgICAgaW5kZXgrKztcclxuICAgIH0gd2hpbGUgKGluZGV4IDw9IGxhc3REYXRlKTtcclxuXHJcbiAgICBpbmRleCA9IDA7XHJcbiAgICBkYXkgPSBsYXN0RGF5O1xyXG4gICAgd2hpbGUgKGRheSAhPT0gMCB8fCBkYXRlcy5sZW5ndGggIT09IDcgKiA2KSB7XHJcbiAgICAgIGluZGV4Kys7XHJcbiAgICAgIGNvbnN0IGNlbGwgPSB7IGRhdGU6IG5ldyBEYXRlKHllYXIsIG1vbnRoICsgMSwgaW5kZXgpIH07XHJcbiAgICAgIGRhdGVzID0gWy4uLmRhdGVzLCB0aGlzLnNldERheVN0YXRlKGNlbGwpXTtcclxuICAgICAgZGF5ID0gY2VsbC5kYXRlLmdldERheSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGF0ZXMgPSBkYXRlcztcclxuICAgIHRoaXMud2Vla0RhdGVzID0gWENodW5rKGRhdGVzLCA3KTtcclxuXHJcbiAgICBpZiAodGhpcy50eXBlID09PSAnd2VlaycpIHtcclxuICAgICAgZm9yIChsZXQgaXRlbSBvZiB0aGlzLmRhdGVzKSB7XHJcbiAgICAgICAgaXRlbS53ZWVrID0gWERhdGVXZWVrKGl0ZW0uZGF0ZSEpO1xyXG4gICAgICB9XHJcbiAgICAgIGZvciAobGV0IHdlZWsgb2YgdGhpcy53ZWVrRGF0ZXMpIHtcclxuICAgICAgICB3ZWVrLnVuc2hpZnQoeyB0eXBlOiAnd2VlaycsIHdlZWs6IHdlZWtbMF0ud2VlayEgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5kYXRlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucmFuZ2VDaGFuZ2UuZW1pdChbZGF0ZXNbMF0uZGF0ZSEsIGRhdGVzW2RhdGVzLmxlbmd0aCAtIDFdLmRhdGUhXSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGF5U3RhdGUoY2VsbDogWERhdGVDZWxsKTogWERhdGVDZWxsIHtcclxuICAgIGNvbnN0IHRpbWUgPSBjZWxsLmRhdGU/LmdldFRpbWUoKSE7XHJcbiAgICBjb25zdCBmZGF0ZSA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGNlbGwuZGF0ZSwgJ3l5eXlNTWRkJyk7XHJcbiAgICBjb25zdCBmZGF0ZW0gPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShjZWxsLmRhdGUsICd5eXl5TU0nKTtcclxuICAgIGNvbnN0IGZkaXNwbGF5bSA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuZGlzcGxheSwgJ3l5eXlNTScpO1xyXG4gICAgY29uc3QgZm5vdyA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMubm93LCAneXl5eU1NZGQnKTtcclxuICAgIGNlbGwuaXNMYXN0T3JOZXh0ID0gZmRhdGVtICE9PSBmZGlzcGxheW07XHJcbiAgICBjZWxsLmlzTm93ID0gZmRhdGUgPT09IGZub3c7XHJcbiAgICBjZWxsLmlzRGlzYWJsZWQgPSB0aGlzLmlzRGlzYWJsZWQoY2VsbC5kYXRlISk7XHJcbiAgICBpZiAodGhpcy5yYW5nZVBpY2tlcikge1xyXG4gICAgICBpZiAoIXRoaXMucmFuZ2VWYWx1ZSkgcmV0dXJuIGNlbGw7XHJcbiAgICAgIGNvbnN0IFtzdGFydCwgZW5kXSA9IHRoaXMucmFuZ2VWYWx1ZTtcclxuICAgICAgY2VsbC5pc0luUmFuZ2UgPSAhIXN0YXJ0ICYmICEhZW5kICYmIHRpbWUgPj0gc3RhcnQhICYmIHRpbWUgPD0gZW5kITtcclxuICAgICAgY2VsbC5pc1JhbmdlU3RhcnRSaWdodCA9ICEhc3RhcnQgJiYgISFlbmQgJiYgZmRhdGUgPT09IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHN0YXJ0ISwgJ3l5eXlNTWRkJyk7XHJcbiAgICAgIGNlbGwuaXNSYW5nZUVuZExlZnQgPSAhIXN0YXJ0ICYmICEhZW5kICYmIGZkYXRlID09PSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShlbmQhLCAneXl5eU1NZGQnKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjZWxsO1xyXG4gIH1cclxuXHJcbiAgZGF0ZUNsaWNrKGNlbGw6IFhEYXRlQ2VsbCkge1xyXG4gICAgdGhpcy5tb2RlbCA9IGNlbGwuZGF0ZTtcclxuICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdChjZWxsLmRhdGUpO1xyXG4gICAgaWYgKHRoaXMucmFuZ2VQaWNrZXIpIHtcclxuICAgICAgdGhpcy5jbGVhclN0YXRlKC4uLnRoaXMuZGF0ZXMpO1xyXG4gICAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMuZGF0ZXMpIHtcclxuICAgICAgICB0aGlzLnNldERheVN0YXRlKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmFuZ2VEYXRlQ2xpY2suZW1pdChjZWxsKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGdldExvY2FsZU1vbnRoKGRhdGU6IERhdGUpIHtcclxuICAgIHJldHVybiAodGhpcy5sb2NhbGUgYXMgYW55KVt0aGlzLmxvd2VyQ2FzZVBpcGUudHJhbnNmb3JtKHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsICdMTExMJykgYXMgc3RyaW5nKV07XHJcbiAgfVxyXG5cclxuICByYW5nZURpc2FibGVkKGRhdGU6IERhdGUpIHtcclxuICAgIGlmICh0aGlzLnJhbmdlVHlwZSA9PT0gJ2VuZCcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmFuZ2VTdGFydCAhPT0gJycgJiYgZGF0ZS5nZXRUaW1lKCkgPCB0aGlzLnJhbmdlU3RhcnQhO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnJhbmdlVHlwZSA9PT0gJ3N0YXJ0Jykge1xyXG4gICAgICByZXR1cm4gdGhpcy5yYW5nZUVuZCAhPT0gJycgJiYgZGF0ZS5nZXRUaW1lKCkgPiB0aGlzLnJhbmdlRW5kITtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHNldERpc3BsYXkoZGF0ZTogRGF0ZSkge1xyXG4gICAgdGhpcy5kaXNwbGF5ID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIDEpO1xyXG4gICAgdGhpcy5kaXNwbGF5Q2hhbmdlLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICAgIHRoaXMuc2V0RGF5cyh0aGlzLmRpc3BsYXkpO1xyXG4gIH1cclxuXHJcbiAgbmV4dE1vbnRoKG51bTogbnVtYmVyKSB7XHJcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKHRoaXMuZGlzcGxheSk7XHJcbiAgICBkYXRlLnNldE1vbnRoKGRhdGUuZ2V0TW9udGgoKSArIG51bSk7XHJcbiAgICB0aGlzLnNldERpc3BsYXkoZGF0ZSk7XHJcbiAgICB0aGlzLm1vbnRoQ2hhbmdlLmVtaXQobnVtKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5leHRZZWFyKG51bTogbnVtYmVyKSB7XHJcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKHRoaXMuZGlzcGxheSk7XHJcbiAgICBkYXRlLnNldEZ1bGxZZWFyKGRhdGUuZ2V0RnVsbFllYXIoKSArIG51bSk7XHJcbiAgICB0aGlzLnNldERpc3BsYXkoZGF0ZSk7XHJcbiAgICB0aGlzLnllYXJDaGFuZ2UuZW1pdChudW0pO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgdHlwZU9uQ2hhbmdlKHR5cGU6IFhEYXRlUGlja2VyVHlwZSkge1xyXG4gICAgdGhpcy50eXBlID0gdHlwZTtcclxuICAgIHRoaXMudHlwZUNoYW5nZS5lbWl0KHR5cGUpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwieC1waWNrZXItZGF0ZVwiIFtjbGFzcy54LWRhdGUtcGlja2VyLWRhdGV0ZW1wXT1cImRhdGVUZW1wXCI+XHJcbiAgQGlmIChzaG93SGVhZGVyKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwieC1waWNrZXItZGF0ZS1oZWFkZXJcIj5cclxuICAgICAgPHgtbGluayBpY29uPVwiZnRvLWNoZXZyb25zLWxlZnRcIiAoY2xpY2spPVwibmV4dFllYXIoLTEpXCIgW2NsYXNzLngtdmlzaWJpbGl0eV09XCIhbGFzdFllYXJCdG5cIj48L3gtbGluaz5cclxuICAgICAgPHgtbGluayBpY29uPVwiZnRvLWNoZXZyb24tbGVmdFwiIChjbGljayk9XCJuZXh0TW9udGgoLTEpXCIgW2NsYXNzLngtdmlzaWJpbGl0eV09XCIhbGFzdE1vbnRoQnRuXCI+PC94LWxpbms+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ4LXBpY2tlci1kYXRlLXllYXItbW9udGhcIj5cclxuICAgICAgICA8eC1saW5rIChjbGljayk9XCJ0eXBlT25DaGFuZ2UoJ3llYXInKVwiPnt7IGRpc3BsYXkgfCBkYXRlOiAneXl5eScgfX17eyBsb2NhbGUueWVhciB9fTwveC1saW5rPlxyXG4gICAgICAgIDx4LWxpbmsgKGNsaWNrKT1cInR5cGVPbkNoYW5nZSgnbW9udGgnKVwiPnt7IGdldExvY2FsZU1vbnRoKGRpc3BsYXkpIH19PC94LWxpbms+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8eC1saW5rIGljb249XCJmdG8tY2hldnJvbi1yaWdodFwiIChjbGljayk9XCJuZXh0TW9udGgoMSlcIiBbY2xhc3MueC12aXNpYmlsaXR5XT1cIiFuZXh0TW9udGhCdG5cIj48L3gtbGluaz5cclxuICAgICAgPHgtbGluayBpY29uPVwiZnRvLWNoZXZyb25zLXJpZ2h0XCIgKGNsaWNrKT1cIm5leHRZZWFyKDEpXCIgW2NsYXNzLngtdmlzaWJpbGl0eV09XCIhbmV4dFllYXJCdG5cIj48L3gtbGluaz5cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuICA8ZGl2IGNsYXNzPVwieC1waWNrZXItZGF0ZS1ib2R5XCI+XHJcbiAgICA8dGFibGUgY2VsbHNwYWNpbmc9XCIwXCIgY2VsbHBhZGRpbmc9XCIwXCI+XHJcbiAgICAgIDx0aGVhZD5cclxuICAgICAgICA8dHI+XHJcbiAgICAgICAgICBAZm9yICh0aXRsZSBvZiB0aXRsZXM7IHRyYWNrIHRpdGxlKSB7XHJcbiAgICAgICAgICAgIDx0aD57eyB0aXRsZSB8IHhJMThuIH19PC90aD5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L3RyPlxyXG4gICAgICA8L3RoZWFkPlxyXG4gICAgICA8dGJvZHk+XHJcbiAgICAgICAgQGZvciAod2Vla3Mgb2Ygd2Vla0RhdGVzOyB0cmFjayB3ZWVrcykge1xyXG4gICAgICAgICAgPHRyXHJcbiAgICAgICAgICAgIFtjbGFzcy54LWRhdGUtd2Vlay1hY3RpdmVdPVwiIXJhbmdlUGlja2VyICYmIGlzV2VlayAmJiBpc1dlZWtBY3RpdmUod2Vla3MpXCJcclxuICAgICAgICAgICAgW2NsYXNzLngtZGF0ZS13ZWVrLXN0YXJ0LWFjdGl2ZV09XCJpc1dlZWtSYW5nZSAmJiBpc1N0YXJ0V2Vlayh3ZWVrcylcIlxyXG4gICAgICAgICAgICBbY2xhc3MueC1kYXRlLXdlZWstZW5kLWFjdGl2ZV09XCJpc1dlZWtSYW5nZSAmJiBpc0VuZFdlZWsod2Vla3MpXCJcclxuICAgICAgICAgICAgW2NsYXNzLngtZGF0ZS13ZWVrLWluLXJhbmdlXT1cImlzV2Vla1JhbmdlICYmIGlzSW5SYW5nZVdlZWsod2Vla3MpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgQGZvciAod2VlayBvZiB3ZWVrczsgdHJhY2sgd2Vlaykge1xyXG4gICAgICAgICAgICAgIDx0ZFxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ4LXBpY2tlci1kYXRlLWl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLngtZGF0ZS13ZWVrXT1cIndlZWsudHlwZSA9PT0gJ3dlZWsnXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy54LWRhdGUtZGlzYWJsZWRdPVwid2Vlay5pc0Rpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy54LWRhdGUtbGFzdC1vci1uZXh0XT1cIndlZWsuaXNMYXN0T3JOZXh0XCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy54LWRhdGUtbm93XT1cIndlZWsuaXNOb3dcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLngtZGF0ZS1maXJzdC1kYXldPVwid2Vlay5pc0ZpcnN0RGF5XCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy54LWRhdGUtbGFzdC1kYXldPVwid2Vlay5pc0xhc3REYXlcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLngtZGF0ZS1yYW5nZS1zdGFydF09XCJpc05vdFdlZWtSYW5nZSAmJiBpc1N0YXJ0RGF0ZSh3ZWVrLmRhdGUhKVwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MueC1kYXRlLXJhbmdlLWVuZF09XCJpc05vdFdlZWtSYW5nZSAmJiBpc0VuZERhdGUod2Vlay5kYXRlISlcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLngtZGF0ZS1yYW5nZS1zdGFydC1sZWZ0XT1cImlzTm90V2Vla1JhbmdlICYmIHdlZWsuaXNSYW5nZVN0YXJ0TGVmdFwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MueC1kYXRlLXJhbmdlLXN0YXJ0LXJpZ2h0XT1cImlzTm90V2Vla1JhbmdlICYmIHdlZWsuaXNSYW5nZVN0YXJ0UmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLngtZGF0ZS1yYW5nZS1lbmQtbGVmdF09XCJpc05vdFdlZWtSYW5nZSAmJiB3ZWVrLmlzUmFuZ2VFbmRMZWZ0XCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy54LWRhdGUtcmFuZ2UtZW5kLXJpZ2h0XT1cImlzTm90V2Vla1JhbmdlICYmIHdlZWsuaXNSYW5nZUVuZFJpZ2h0XCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy54LWRhdGUtcmFuZ2UtaG92ZXJdPVwiaXNOb3RXZWVrUmFuZ2UgJiYgd2Vlay5pc1JhbmdlSG92ZXJcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLngtZGF0ZS1yYW5nZS1ob3Zlci1zdGFydC1sZWZ0XT1cImlzTm90V2Vla1JhbmdlICYmIHdlZWsuaXNSYW5nZUhvdmVyU3RhcnRMZWZ0XCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy54LWRhdGUtcmFuZ2UtaG92ZXItc3RhcnQtcmlnaHRdPVwiaXNOb3RXZWVrUmFuZ2UgJiYgd2Vlay5pc1JhbmdlSG92ZXJTdGFydFJpZ2h0XCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy54LWRhdGUtcmFuZ2UtaG92ZXItZW5kLWxlZnRdPVwiaXNOb3RXZWVrUmFuZ2UgJiYgd2Vlay5pc1JhbmdlSG92ZXJFbmRMZWZ0XCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy54LWRhdGUtcmFuZ2UtaG92ZXItZW5kLXJpZ2h0XT1cImlzTm90V2Vla1JhbmdlICYmIHdlZWsuaXNSYW5nZUhvdmVyRW5kUmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLngtZGF0ZS1yYW5nZS1ob3Zlci1zdGFydF09XCJpc05vdFdlZWtSYW5nZSAmJiB3ZWVrLmlzUmFuZ2VIb3ZlclN0YXJ0XCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy54LWRhdGUtcmFuZ2UtaG92ZXItZW5kXT1cImlzTm90V2Vla1JhbmdlICYmIHdlZWsuaXNSYW5nZUhvdmVyRW5kXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy54LWRhdGUtaW4tcmFuZ2VdPVwiaXNOb3RXZWVrUmFuZ2UgJiYgd2Vlay5pc0luUmFuZ2VcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLngtZGF0ZS1pbi1yYW5nZS1ob3Zlcl09XCJpc05vdFdlZWtSYW5nZSAmJiB3ZWVrLmlzSW5SYW5nZUhvdmVyXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy54LWRhdGUtYWN0aXZlXT1cIlxyXG4gICAgICAgICAgICAgICAgICAhcmFuZ2VQaWNrZXIgJiYgd2Vlay50eXBlICE9PSAnd2VlaycgJiYgKHdlZWsuZGF0ZSB8IGRhdGU6ICd5eXl5TU1kZCcpID09PSAobW9kZWwgfCBkYXRlOiAneXl5eU1NZGQnKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgd2Vlay5kYXRlIHwgZGF0ZTogJ3l5eXktTU0tZGQnIH19XCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ3ZWVrLnR5cGUgIT09ICd3ZWVrJyAmJiAhd2Vlay5pc0Rpc2FibGVkICYmIGRhdGVDbGljayh3ZWVrKVwiXHJcbiAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJcclxuICAgICAgICAgICAgICAgICAgd2Vlay50eXBlICE9PSAnd2VlaycgJiYgIXdlZWsuaXNEaXNhYmxlZCAmJiByYW5nZVBpY2tlciAmJiByYW5nZUhvdmVyICYmIG9uVGRNb3VzZWVudGVyKHdlZWspXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwiXHJcbiAgICAgICAgICAgICAgICAgIHdlZWsudHlwZSAhPT0gJ3dlZWsnICYmICF3ZWVrLmlzRGlzYWJsZWQgJiYgcmFuZ2VQaWNrZXIgJiYgcmFuZ2VIb3ZlciAmJiBvblRkTW91c2VsZWF2ZSh3ZWVrKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICBAaWYgKGRhdGVUZW1wKSB7XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkYXRlVGVtcDsgY29udGV4dDogeyBkYXRlJDogd2Vlay5kYXRlIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwieC1kYXRlLXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICBAc3dpdGNoICh3ZWVrLnR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnd2VlaycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgd2Vlay53ZWVrIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBAZGVmYXVsdCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHdlZWsuZGF0ZSB8IGRhdGU6ICdkJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvdGJvZHk+XHJcbiAgICA8L3RhYmxlPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
334
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLWRhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZGF0ZS1waWNrZXIvcGlja2VyLWRhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZGF0ZS1waWNrZXIvcGlja2VyLWRhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBR3ZCLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNOLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRyxPQUFPLEVBQThCLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUcsT0FBTyxFQUFtQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBWXRELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxtQkFBbUI7SUFWN0Q7O1FBV1UsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QyxTQUFJLEdBQUcsTUFB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QUFLLEVBQUUsQ0FBQztRQUNWLENBQUMsUUFBUSxLQUFLLElBQUksUUFBUSxFQUFFO1FBRTVCLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDVixHQUFHLEdBQUcsT0FBTyxDQUFDO1FBQ2QsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzNDLEtBQUssRUFBRSxDQUFDO1lBQ1IsTUFBTSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN4RCxLQUFLLEdBQUcsQ0FBQyxHQUFHLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDM0MsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0IsQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVyQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUMzQixLQUFLLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUM5QixJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSyxDQUFFLENBQUM7WUFDckMsQ0FBQztZQUNELEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSyxFQUFFLENBQUMsQ0FB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QUFDLFFBQVEsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELFFBQVEsQ0FBQyxHQUFXO1FBQ2xCLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFxQjtRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QixDQUFDO2lJQWhWVSxvQkFBb0I7cUhBQXBCLG9CQUFvQiw0REFGcEIsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLHNFQzNCdEMsODhKQTBGQSxpaUpEcEVZLFFBQVEsNkNBQUUsZ0JBQWdCLG9KQUFFLGNBQWMsOENBQUUsU0FBUzs7MkZBT3BELG9CQUFvQjtrQkFWaEMsU0FBUzsrQkFDRSxHQUFHLGlCQUFpQixFQUFFLGNBQ3BCLElBQUksV0FDUCxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsU0FBUyxDQUFDLGlCQUdqRCxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIGluamVjdCxcclxuICBjb21wdXRlZCxcclxuICBzaWduYWwsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWZcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWENodW5rLCBYSXNDaGFuZ2UsIFhJc051bGwsIFhJc0Z1bmN0aW9uLCBYRGF0ZVdlZWssIFhEYXRlWWVhcldlZWsgfSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgWERhdGVDZWxsLCBYRGF0ZVBpY2tlclR5cGUsIFhQaWNrZXJEYXRlUHJlZml4LCBYUGlja2VyRGF0ZVByb3BlcnR5IH0gZnJvbSAnLi9kYXRlLXBpY2tlci5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7IFhJMThuRGF0ZVBpY2tlciwgWEkxOG5QaXBlLCBYSTE4blNlcnZpY2UsIHpoX0NOIH0gZnJvbSAnQG5nLW5lc3QvdWkvaTE4bic7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRGF0ZVBpcGUsIExvd2VyQ2FzZVBpcGUsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBYTGlua0NvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2xpbmsnO1xyXG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBgJHtYUGlja2VyRGF0ZVByZWZpeH1gLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0RhdGVQaXBlLCBOZ1RlbXBsYXRlT3V0bGV0LCBYTGlua0NvbXBvbmVudCwgWEkxOG5QaXBlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vcGlja2VyLWRhdGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3BpY2tlci1kYXRlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFtEYXRlUGlwZSwgTG93ZXJDYXNlUGlwZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFhQaWNrZXJEYXRlQ29tcG9uZW50IGV4dGVuZHMgWFBpY2tlckRhdGVQcm9wZXJ0eSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgcHJpdmF0ZSBkYXRlUGlwZSA9IGluamVjdChEYXRlUGlwZSk7XHJcbiAgcHJpdmF0ZSBsb3dlckNhc2VQaXBlID0gaW5qZWN0KExvd2VyQ2FzZVBpcGUpO1xyXG4gIHByaXZhdGUgaTE4biA9IGluamVjdChYSTE4blNlcnZpY2UpO1xyXG4gIHByaXZhdGUgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuXHJcbiAgdGl0bGVzID0gc2lnbmFsKFtcclxuICAgICdkYXRlUGlja2VyLm1vbmRheScsXHJcbiAgICAnZGF0ZVBpY2tlci50dWVzZGF5JyxcclxuICAgICdkYXRlUGlja2VyLndlZG5lc2RheScsXHJcbiAgICAnZGF0ZVBpY2tlci50aHVyc2RheScsXHJcbiAgICAnZGF0ZVBpY2tlci5mcmlkYXknLFxyXG4gICAgJ2RhdGVQaWNrZXIuc2F0dXJkYXknLFxyXG4gICAgJ2RhdGVQaWNrZXIuc3VuZGF5J1xyXG4gIF0pO1xyXG4gIG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgZGF0ZXMgPSBzaWduYWw8WERhdGVDZWxsW10+KFtdKTtcclxuICB3ZWVrRGF0ZXMgPSBzaWduYWw8WERhdGVDZWxsW11bXT4oW10pO1xyXG4gIGxvY2FsZSA9IHRvU2lnbmFsKHRoaXMuaTE4bi5sb2NhbGVDaGFuZ2UucGlwZShtYXAoKHgpID0+IHguZGF0ZVBpY2tlciBhcyBYSTE4bkRhdGVQaWNrZXIpKSwge1xyXG4gICAgaW5pdGlhbFZhbHVlOiB6aF9DTi5kYXRlUGlja2VyXHJcbiAgfSk7XHJcblxyXG4gIHJhbmdlU3RhcnQgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBpZiAodGhpcy5yYW5nZVZhbHVlKCkgJiYgdGhpcy5yYW5nZVZhbHVlKCkubGVuZ3RoID4gMCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5yYW5nZVZhbHVlKClbMF07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfSk7XHJcblxyXG4gIHJhbmdlRW5kID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMucmFuZ2VWYWx1ZSgpICYmIHRoaXMucmFuZ2VWYWx1ZSgpLmxlbmd0aCA+IDEpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmFuZ2VWYWx1ZSgpWzFdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH0pO1xyXG5cclxuICBpc1dlZWsgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy50eXBlKCkgPT09ICd3ZWVrJztcclxuICB9KTtcclxuXHJcbiAgaXNXZWVrUmFuZ2UgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy50eXBlKCkgPT09ICd3ZWVrJyAmJiB0aGlzLnJhbmdlUGlja2VyKCk7XHJcbiAgfSk7XHJcblxyXG4gIGlzTm90V2Vla1JhbmdlID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMudHlwZSgpICE9PSAnd2VlaycgJiYgdGhpcy5yYW5nZVBpY2tlcigpO1xyXG4gIH0pO1xyXG5cclxuICBpc0Rpc2FibGVkKGRhdGU6IERhdGUpIHtcclxuICAgIGNvbnN0IGRpc2FibGVkRGF0ZSA9IHRoaXMuZGlzYWJsZWREYXRlKCk7XHJcbiAgICBpZiAoZGlzYWJsZWREYXRlICYmIFhJc0Z1bmN0aW9uKGRpc2FibGVkRGF0ZSkpIHtcclxuICAgICAgcmV0dXJuIGRpc2FibGVkRGF0ZShkYXRlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZXRUaXRsZXMoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKHNpbXBsZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGNvbnN0IHsgZGlzcGxheSB9ID0gc2ltcGxlcztcclxuICAgIFhJc0NoYW5nZShkaXNwbGF5KSAmJiB0aGlzLmluaXQoKTtcclxuICB9XHJcblxyXG4gIGluaXQoKSB7XHJcbiAgICB0aGlzLnNldERheXModGhpcy5kaXNwbGF5KCkpO1xyXG4gIH1cclxuXHJcbiAgaXNXZWVrQWN0aXZlKHdlZWs6IFhEYXRlQ2VsbFtdKSB7XHJcbiAgICBpZiAod2Vlay5sZW5ndGggPiAxKSB7XHJcbiAgICAgIHJldHVybiBYRGF0ZVllYXJXZWVrKHdlZWtbMV0uZGF0ZSEpID09PSBYRGF0ZVllYXJXZWVrKHRoaXMubW9kZWwoKSEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgaXNTdGFydFdlZWsod2VlazogWERhdGVDZWxsW10pIHtcclxuICAgIGlmICghdGhpcy5yYW5nZVR5cGUoKSB8fCAhdGhpcy5yYW5nZVZhbHVlKCkpIHJldHVybjtcclxuICAgIGlmICghWElzTnVsbCh0aGlzLnJhbmdlVmFsdWUoKVswXSkgJiYgd2Vlay5sZW5ndGggPiAxKSB7XHJcbiAgICAgIHJldHVybiBYRGF0ZVllYXJXZWVrKHdlZWtbMV0uZGF0ZSEpID09PSBYRGF0ZVllYXJXZWVrKHRoaXMucmFuZ2VWYWx1ZSgpWzBdISk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBpc0VuZFdlZWsod2VlazogWERhdGVDZWxsW10pIHtcclxuICAgIGlmICghdGhpcy5yYW5nZVR5cGUoKSB8fCAhdGhpcy5yYW5nZVZhbHVlKCkpIHJldHVybjtcclxuICAgIGlmICghWElzTnVsbCh0aGlzLnJhbmdlVmFsdWUoKVsxXSkgJiYgd2Vlay5sZW5ndGggPiAxKSB7XHJcbiAgICAgIHJldHVybiBYRGF0ZVllYXJXZWVrKHdlZWtbMV0uZGF0ZSEpID09PSBYRGF0ZVllYXJXZWVrKHRoaXMucmFuZ2VWYWx1ZSgpWzFdISk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBpc0luUmFuZ2VXZWVrKHdlZWs6IFhEYXRlQ2VsbFtdKSB7XHJcbiAgICBpZiAoIXRoaXMucmFuZ2VUeXBlKCkgfHwgIXRoaXMucmFuZ2VWYWx1ZSgpKSByZXR1cm47XHJcbiAgICBpZiAoIVhJc051bGwodGhpcy5yYW5nZVZhbHVlKClbMF0pICYmICFYSXNOdWxsKHRoaXMucmFuZ2VWYWx1ZSgpWzFdKSAmJiB3ZWVrLmxlbmd0aCA+IDEpIHtcclxuICAgICAgbGV0IHRpbWUgPSB3ZWVrWzFdLmRhdGU/LmdldFRpbWUoKSE7XHJcbiAgICAgIHJldHVybiB0aW1lID4gdGhpcy5yYW5nZVZhbHVlKClbMF0hICYmIHRpbWUgPCB0aGlzLnJhbmdlVmFsdWUoKVsxXSE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBpc1N0YXJ0RGF0ZShkYXRlOiBEYXRlKSB7XHJcbiAgICBpZiAodGhpcy50eXBlKCkgPT09ICd3ZWVrJyB8fCAhdGhpcy5yYW5nZVR5cGUoKSB8fCAhdGhpcy5yYW5nZVZhbHVlKCkpIHJldHVybjtcclxuICAgIGlmICghWElzTnVsbCh0aGlzLnJhbmdlVmFsdWUoKVswXSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMucmFuZ2VWYWx1ZSgpWzBdLCAneXl5eU1NZGQnKSA9PT0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZSwgJ3l5eXlNTWRkJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBpc0VuZERhdGUoZGF0ZTogRGF0ZSkge1xyXG4gICAgaWYgKHRoaXMudHlwZSgpID09PSAnd2VlaycgfHwgIXRoaXMucmFuZ2VUeXBlKCkgfHwgIXRoaXMucmFuZ2VWYWx1ZSgpKSByZXR1cm47XHJcbiAgICBpZiAoIVhJc051bGwodGhpcy5yYW5nZVZhbHVlKClbMV0pKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLnJhbmdlVmFsdWUoKVsxXSwgJ3l5eXlNTWRkJykgPT09IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsICd5eXl5TU1kZCcpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgc2V0RGF0ZXNTdGF0ZShjZWxsOiBYRGF0ZUNlbGwpIHtcclxuICAgIHRoaXMuZGF0ZXMudXBkYXRlKCh4KSA9PiB7XHJcbiAgICAgIHgubWFwKCh5KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jbGVhclN0YXRlKHkpO1xyXG4gICAgICAgIHRoaXMuc2V0RGF5U3RhdGUoeSk7XHJcbiAgICAgICAgcmV0dXJuIHk7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gWy4uLnhdO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLm9uVGRNb3VzZWVudGVyKGNlbGwsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHNldFRpdGxlcygpIHtcclxuICAgIGlmICh0aGlzLnR5cGUoKSA9PT0gJ3dlZWsnKSB7XHJcbiAgICAgIHRoaXMudGl0bGVzLnVwZGF0ZSgoeCkgPT4gWydkYXRlUGlja2VyLndlZWsnLCAuLi54XSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblRkTW91c2VlbnRlcihjZWxsOiBYRGF0ZUNlbGwsIGlzRW1pdCA9IHRydWUpIHtcclxuICAgIGNvbnN0IFtzdGFydCwgZW5kXSA9IHRoaXMucmFuZ2VWYWx1ZSgpO1xyXG4gICAgaWYgKCFYSXNOdWxsKHN0YXJ0KSB8fCAhWElzTnVsbChlbmQpKSB7XHJcbiAgICAgIGNvbnN0IHRpbWUgPSBjZWxsLmRhdGUhLmdldFRpbWUoKTtcclxuICAgICAgdGhpcy5kYXRlcy51cGRhdGUoKHgpID0+IHtcclxuICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHgpIHtcclxuICAgICAgICAgIGNvbnN0IGl0ZW1UaW1lID0gaXRlbS5kYXRlIS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICB0aGlzLmNsZWFyU3RhdGUoaXRlbSk7XHJcbiAgICAgICAgICBpZiAoIVhJc051bGwoc3RhcnQpICYmIFhJc051bGwoZW5kKSkge1xyXG4gICAgICAgICAgICBpdGVtLmlzUmFuZ2VIb3ZlclN0YXJ0TGVmdCA9IHRpbWUgPCBzdGFydCEgJiYgaXRlbVRpbWUgPT09IHN0YXJ0ITtcclxuICAgICAgICAgICAgaXRlbS5pc1JhbmdlSG92ZXJTdGFydFJpZ2h0ID0gdGltZSA+IHN0YXJ0ISAmJiBpdGVtVGltZSA9PT0gc3RhcnQhO1xyXG4gICAgICAgICAgICBpdGVtLmlzUmFuZ2VIb3ZlciA9XHJcbiAgICAgICAgICAgICAgKHRpbWUgPCBzdGFydCEgJiYgaXRlbVRpbWUgPj0gdGltZSAmJiBpdGVtVGltZSA8IHN0YXJ0ISkgfHxcclxuICAgICAgICAgICAgICAodGltZSA+IHN0YXJ0ISAmJiBpdGVtVGltZSA+IHN0YXJ0ISAmJiBpdGVtVGltZSA8PSB0aW1lKTtcclxuICAgICAgICAgICAgaXRlbS5pc1JhbmdlSG92ZXJTdGFydCA9IGl0ZW1UaW1lID09PSB0aW1lICYmIHRpbWUgPCBzdGFydCE7XHJcbiAgICAgICAgICAgIGl0ZW0uaXNSYW5nZUhvdmVyRW5kID0gaXRlbVRpbWUgPT09IHRpbWUgJiYgdGltZSA+IHN0YXJ0ITtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoWElzTnVsbChzdGFydCkgJiYgIVhJc051bGwoZW5kKSkge1xyXG4gICAgICAgICAgICBpdGVtLmlzUmFuZ2VIb3ZlckVuZExlZnQgPSB0aW1lIDwgZW5kISAmJiBpdGVtVGltZSA9PT0gZW5kITtcclxuICAgICAgICAgICAgaXRlbS5pc1JhbmdlSG92ZXJFbmRSaWdodCA9IHRpbWUgPiBlbmQhICYmIGl0ZW1UaW1lID09PSBlbmQhO1xyXG4gICAgICAgICAgICBpdGVtLmlzUmFuZ2VIb3ZlciA9XHJcbiAgICAgICAgICAgICAgKHRpbWUgPCBlbmQhICYmIGl0ZW1UaW1lID49IHRpbWUgJiYgaXRlbVRpbWUgPCBlbmQhKSB8fFxyXG4gICAgICAgICAgICAgICh0aW1lID4gZW5kISAmJiBpdGVtVGltZSA+IGVuZCEgJiYgaXRlbVRpbWUgPD0gdGltZSk7XHJcbiAgICAgICAgICAgIGl0ZW0uaXNSYW5nZUhvdmVyU3RhcnQgPSBpdGVtVGltZSA9PT0gdGltZSAmJiB0aW1lIDwgZW5kITtcclxuICAgICAgICAgICAgaXRlbS5pc1JhbmdlSG92ZXJFbmQgPSBpdGVtVGltZSA9PT0gdGltZSAmJiB0aW1lID4gZW5kITtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoIVhJc051bGwoc3RhcnQpICYmICFYSXNOdWxsKGVuZCkpIHtcclxuICAgICAgICAgICAgaXRlbS5pc1JhbmdlSG92ZXJTdGFydExlZnQgPSB0aW1lIDwgc3RhcnQhICYmIGl0ZW1UaW1lID09PSBzdGFydCE7XHJcbiAgICAgICAgICAgIGl0ZW0uaXNSYW5nZUhvdmVyRW5kUmlnaHQgPSB0aW1lID4gZW5kISAmJiBpdGVtVGltZSA9PT0gZW5kITtcclxuICAgICAgICAgICAgaXRlbS5pc1JhbmdlSG92ZXIgPVxyXG4gICAgICAgICAgICAgICh0aW1lIDwgc3RhcnQhICYmIGl0ZW1UaW1lID49IHRpbWUgJiYgaXRlbVRpbWUgPCBzdGFydCEpIHx8XHJcbiAgICAgICAgICAgICAgKHRpbWUgPiBlbmQhICYmIGl0ZW1UaW1lID4gZW5kISAmJiBpdGVtVGltZSA8PSB0aW1lKTtcclxuICAgICAgICAgICAgaXRlbS5pc1JhbmdlSG92ZXJTdGFydCA9IGl0ZW1UaW1lID09PSB0aW1lICYmIHRpbWUgPCBzdGFydCE7XHJcbiAgICAgICAgICAgIGl0ZW0uaXNSYW5nZUhvdmVyRW5kID0gaXRlbVRpbWUgPT09IHRpbWUgJiYgdGltZSA+IGVuZCE7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnJhbmdlVHlwZSgpID09PSAnc3RhcnQnKSB7XHJcbiAgICAgICAgICAgICAgaXRlbS5pc0luUmFuZ2VIb3ZlciA9IGl0ZW1UaW1lID49IHRpbWUhICYmIGl0ZW1UaW1lIDw9IGVuZCE7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5yYW5nZVR5cGUoKSA9PT0gJ2VuZCcpIHtcclxuICAgICAgICAgICAgICBpdGVtLmlzSW5SYW5nZUhvdmVyID0gaXRlbVRpbWUgPj0gc3RhcnQhICYmIGl0ZW1UaW1lIDw9IHRpbWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFsuLi54XTtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChpc0VtaXQpIHtcclxuICAgICAgICB0aGlzLnJhbmdlVGRNb3VzZWVudGVyLmVtaXQoY2VsbCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uVGRNb3VzZWxlYXZlKGNlbGw6IFhEYXRlQ2VsbCwgaXNFbWl0ID0gdHJ1ZSkge1xyXG4gICAgY29uc3QgW3N0YXJ0LCBlbmRdID0gdGhpcy5yYW5nZVZhbHVlKCk7XHJcbiAgICBpZiAoIVhJc051bGwoc3RhcnQpIHx8ICFYSXNOdWxsKGVuZCkpIHtcclxuICAgICAgdGhpcy5kYXRlcy51cGRhdGUoKHgpID0+IHtcclxuICAgICAgICB4Lm1hcCgoeSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jbGVhclN0YXRlKHkpO1xyXG4gICAgICAgICAgcmV0dXJuIHk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIFsuLi54XTtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChpc0VtaXQpIHRoaXMucmFuZ2VUZE1vdXNlbGVhdmUuZW1pdChjZWxsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsZWFyU3RhdGUoLi4uY2VsbHM6IFhEYXRlQ2VsbFtdKSB7XHJcbiAgICBmb3IgKGxldCBjZWxsIG9mIGNlbGxzKSB7XHJcbiAgICAgIGNlbGwuaXNJblJhbmdlSG92ZXIgPSBmYWxzZTtcclxuICAgICAgY2VsbC5pc1JhbmdlSG92ZXIgPSBmYWxzZTtcclxuICAgICAgY2VsbC5pc1JhbmdlSG92ZXJTdGFydCA9IGZhbHNlO1xyXG4gICAgICBjZWxsLmlzUmFuZ2VIb3ZlckVuZCA9IGZhbHNlO1xyXG4gICAgICBjZWxsLmlzUmFuZ2VIb3ZlclN0YXJ0TGVmdCA9IGZhbHNlO1xyXG4gICAgICBjZWxsLmlzUmFuZ2VIb3ZlclN0YXJ0UmlnaHQgPSBmYWxzZTtcclxuICAgICAgY2VsbC5pc1JhbmdlSG92ZXJFbmRMZWZ0ID0gZmFsc2U7XHJcbiAgICAgIGNlbGwuaXNSYW5nZUhvdmVyRW5kUmlnaHQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldERheXMoZGF0ZTogRGF0ZSkge1xyXG4gICAgbGV0IGRhdGVzOiBYRGF0ZUNlbGxbXSA9IFtdO1xyXG4gICAgY29uc3QgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgIGNvbnN0IG1vbnRoID0gZGF0ZS5nZXRNb250aCgpO1xyXG4gICAgY29uc3QgZmlyc3QgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSk7XHJcbiAgICBjb25zdCBsYXN0ID0gbmV3IERhdGUoeWVhciwgbW9udGggKyAxLCAwKTtcclxuICAgIGNvbnN0IGxhc3REYXRlID0gbGFzdC5nZXREYXRlKCk7XHJcbiAgICBjb25zdCBmaXJzdERheSA9IGZpcnN0LmdldERheSgpO1xyXG4gICAgY29uc3QgbGFzdERheSA9IGxhc3QuZ2V0RGF5KCk7XHJcblxyXG4gICAgbGV0IGRheSA9IGZpcnN0RGF5O1xyXG4gICAgbGV0IGluZGV4ID0gMTtcclxuICAgIHdoaWxlIChkYXkgIT09IDEpIHtcclxuICAgICAgaW5kZXgtLTtcclxuICAgICAgY29uc3QgY2VsbCA9IHsgZGF0ZTogbmV3IERhdGUoeWVhciwgbW9udGgsIGluZGV4KSB9O1xyXG4gICAgICBkYXRlcyA9IFt0aGlzLnNldERheVN0YXRlKGNlbGwpLCAuLi5kYXRlc107XHJcbiAgICAgIGRheSA9IGNlbGwuZGF0ZS5nZXREYXkoKTtcclxuICAgIH1cclxuXHJcbiAgICBpbmRleCA9IDE7XHJcbiAgICBkbyB7XHJcbiAgICAgIGNvbnN0IGNlbGw6IFhEYXRlQ2VsbCA9IHtcclxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgaW5kZXgpLFxyXG4gICAgICAgIGlzRmlyc3REYXk6IGluZGV4ID09PSAxLFxyXG4gICAgICAgIGlzTGFzdERheTogaW5kZXggPT09IGxhc3REYXRlXHJcbiAgICAgIH07XHJcbiAgICAgIGRhdGVzID0gWy4uLmRhdGVzLCB0aGlzLnNldERheVN0YXRlKGNlbGwpXTtcclxuICAgICAgaW5kZXgrKztcclxuICAgIH0gd2hpbGUgKGluZGV4IDw9IGxhc3REYXRlKTtcclxuXHJcbiAgICBpbmRleCA9IDA7XHJcbiAgICBkYXkgPSBsYXN0RGF5O1xyXG4gICAgd2hpbGUgKGRheSAhPT0gMCB8fCBkYXRlcy5sZW5ndGggIT09IDcgKiA2KSB7XHJcbiAgICAgIGluZGV4Kys7XHJcbiAgICAgIGNvbnN0IGNlbGwgPSB7IGRhdGU6IG5ldyBEYXRlKHllYXIsIG1vbnRoICsgMSwgaW5kZXgpIH07XHJcbiAgICAgIGRhdGVzID0gWy4uLmRhdGVzLCB0aGlzLnNldERheVN0YXRlKGNlbGwpXTtcclxuICAgICAgZGF5ID0gY2VsbC5kYXRlLmdldERheSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGF0ZXMuc2V0KGRhdGVzKTtcclxuICAgIHRoaXMud2Vla0RhdGVzLnNldChYQ2h1bmsoZGF0ZXMsIDcpKTtcclxuXHJcbiAgICBpZiAodGhpcy50eXBlKCkgPT09ICd3ZWVrJykge1xyXG4gICAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMuZGF0ZXMoKSkge1xyXG4gICAgICAgIGl0ZW0ud2VlayA9IFhEYXRlV2VlayhpdGVtLmRhdGUhKSE7XHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQgd2VlayBvZiB0aGlzLndlZWtEYXRlcygpKSB7XHJcbiAgICAgICAgd2Vlay51bnNoaWZ0KHsgdHlwZTogJ3dlZWsnLCB3ZWVrOiB3ZWVrWzBdLndlZWshIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZGF0ZXMoKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucmFuZ2VDaGFuZ2UuZW1pdChbZGF0ZXNbMF0uZGF0ZSEsIGRhdGVzW2RhdGVzLmxlbmd0aCAtIDFdLmRhdGUhXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXREYXlTdGF0ZShjZWxsOiBYRGF0ZUNlbGwpOiBYRGF0ZUNlbGwge1xyXG4gICAgY29uc3QgdGltZSA9IGNlbGwuZGF0ZT8uZ2V0VGltZSgpITtcclxuICAgIGNvbnN0IGZkYXRlID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oY2VsbC5kYXRlLCAneXl5eU1NZGQnKTtcclxuICAgIGNvbnN0IGZkYXRlbSA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGNlbGwuZGF0ZSwgJ3l5eXlNTScpO1xyXG4gICAgY29uc3QgZmRpc3BsYXltID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5kaXNwbGF5KCksICd5eXl5TU0nKTtcclxuICAgIGNvbnN0IGZub3cgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLm5vdywgJ3l5eXlNTWRkJyk7XHJcbiAgICBjZWxsLmlzTGFzdE9yTmV4dCA9IGZkYXRlbSAhPT0gZmRpc3BsYXltO1xyXG4gICAgY2VsbC5pc05vdyA9IGZkYXRlID09PSBmbm93O1xyXG4gICAgY2VsbC5pc0Rpc2FibGVkID0gdGhpcy5pc0Rpc2FibGVkKGNlbGwuZGF0ZSEpO1xyXG4gICAgaWYgKHRoaXMucmFuZ2VQaWNrZXIoKSkge1xyXG4gICAgICBpZiAoIXRoaXMucmFuZ2VWYWx1ZSgpKSByZXR1cm4gY2VsbDtcclxuICAgICAgY29uc3QgW3N0YXJ0LCBlbmRdID0gdGhpcy5yYW5nZVZhbHVlKCk7XHJcbiAgICAgIGNlbGwuaXNJblJhbmdlID0gISFzdGFydCAmJiAhIWVuZCAmJiB0aW1lID49IHN0YXJ0ISAmJiB0aW1lIDw9IGVuZCE7XHJcbiAgICAgIGNlbGwuaXNSYW5nZVN0YXJ0UmlnaHQgPSAhIXN0YXJ0ICYmICEhZW5kICYmIGZkYXRlID09PSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShzdGFydCEsICd5eXl5TU1kZCcpO1xyXG4gICAgICBjZWxsLmlzUmFuZ2VFbmRMZWZ0ID0gISFzdGFydCAmJiAhIWVuZCAmJiBmZGF0ZSA9PT0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZW5kISwgJ3l5eXlNTWRkJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2VsbDtcclxuICB9XHJcblxyXG4gIGRhdGVDbGljayhjZWxsOiBYRGF0ZUNlbGwpIHtcclxuICAgIHRoaXMubW9kZWwuc2V0KGNlbGwuZGF0ZSk7XHJcbiAgICBpZiAodGhpcy5yYW5nZVBpY2tlcigpKSB7XHJcbiAgICAgIHRoaXMuZGF0ZXMudXBkYXRlKCh4KSA9PiB7XHJcbiAgICAgICAgeC5tYXAoKHkpID0+IHtcclxuICAgICAgICAgIHRoaXMuY2xlYXJTdGF0ZSh5KTtcclxuICAgICAgICAgIHRoaXMuc2V0RGF5U3RhdGUoeSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIFsuLi54XTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRMb2NhbGVNb250aChkYXRlOiBEYXRlKSB7XHJcbiAgICByZXR1cm4gKHRoaXMubG9jYWxlKCkgYXMgYW55KVt0aGlzLmxvd2VyQ2FzZVBpcGUudHJhbnNmb3JtKHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsICdMTExMJykgYXMgc3RyaW5nKV07XHJcbiAgfVxyXG5cclxuICByYW5nZURpc2FibGVkKGRhdGU6IERhdGUpIHtcclxuICAgIGlmICh0aGlzLnJhbmdlVHlwZSgpID09PSAnZW5kJykge1xyXG4gICAgICBjb25zdCByYW5nZVN0YXJ0ID0gdGhpcy5yYW5nZVN0YXJ0KCk7XHJcbiAgICAgIHJldHVybiByYW5nZVN0YXJ0ICE9PSAnJyAmJiBkYXRlLmdldFRpbWUoKSA8IHJhbmdlU3RhcnQhO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnJhbmdlVHlwZSgpID09PSAnc3RhcnQnKSB7XHJcbiAgICAgIGNvbnN0IHJhbmdlRW5kID0gdGhpcy5yYW5nZUVuZCgpO1xyXG4gICAgICByZXR1cm4gcmFuZ2VFbmQgIT09ICcnICYmIGRhdGUuZ2V0VGltZSgpID4gcmFuZ2VFbmQhO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzcGxheShkYXRlOiBEYXRlKSB7XHJcbiAgICB0aGlzLmRpc3BsYXkuc2V0KG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCAxKSk7XHJcbiAgICB0aGlzLnNldERheXModGhpcy5kaXNwbGF5KCkpO1xyXG4gIH1cclxuXHJcbiAgbmV4dE1vbnRoKG51bTogbnVtYmVyKSB7XHJcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKHRoaXMuZGlzcGxheSgpKTtcclxuICAgIGRhdGUuc2V0TW9udGgoZGF0ZS5nZXRNb250aCgpICsgbnVtKTtcclxuICAgIHRoaXMuc2V0RGlzcGxheShkYXRlKTtcclxuICAgIHRoaXMubW9udGhDaGFuZ2UuZW1pdChudW0pO1xyXG4gIH1cclxuXHJcbiAgbmV4dFllYXIobnVtOiBudW1iZXIpIHtcclxuICAgIGxldCBkYXRlID0gbmV3IERhdGUodGhpcy5kaXNwbGF5KCkpO1xyXG4gICAgZGF0ZS5zZXRGdWxsWWVhcihkYXRlLmdldEZ1bGxZZWFyKCkgKyBudW0pO1xyXG4gICAgdGhpcy5zZXREaXNwbGF5KGRhdGUpO1xyXG4gICAgdGhpcy55ZWFyQ2hhbmdlLmVtaXQobnVtKTtcclxuICB9XHJcblxyXG4gIHR5cGVPbkNoYW5nZSh0eXBlOiBYRGF0ZVBpY2tlclR5cGUpIHtcclxuICAgIHRoaXMudHlwZS5zZXQodHlwZSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ4LXBpY2tlci1kYXRlXCIgW2NsYXNzLngtZGF0ZS1waWNrZXItZGF0ZXRlbXBdPVwiZGF0ZVRlbXAoKVwiPlxyXG4gIEBpZiAoc2hvd0hlYWRlcigpKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwieC1waWNrZXItZGF0ZS1oZWFkZXJcIj5cclxuICAgICAgPHgtbGluayBpY29uPVwiZnRvLWNoZXZyb25zLWxlZnRcIiAoY2xpY2spPVwibmV4dFllYXIoLTEpXCIgW2NsYXNzLngtdmlzaWJpbGl0eV09XCIhbGFzdFllYXJCdG4oKVwiPjwveC1saW5rPlxyXG4gICAgICA8eC1saW5rIGljb249XCJmdG8tY2hldnJvbi1sZWZ0XCIgKGNsaWNrKT1cIm5leHRNb250aCgtMSlcIiBbY2xhc3MueC12aXNpYmlsaXR5XT1cIiFsYXN0TW9udGhCdG4oKVwiPjwveC1saW5rPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwieC1waWNrZXItZGF0ZS15ZWFyLW1vbnRoXCI+XHJcbiAgICAgICAgPHgtbGluayAoY2xpY2spPVwidHlwZU9uQ2hhbmdlKCd5ZWFyJylcIj57eyBkaXNwbGF5KCkgfCBkYXRlOiAneXl5eScgfX17eyBsb2NhbGUoKS55ZWFyIH19PC94LWxpbms+XHJcbiAgICAgICAgPHgtbGluayAoY2xpY2spPVwidHlwZU9uQ2hhbmdlKCdtb250aCcpXCI+e3sgZ2V0TG9jYWxlTW9udGgoZGlzcGxheSgpKSB9fTwveC1saW5rPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPHgtbGluayBpY29uPVwiZnRvLWNoZXZyb24tcmlnaHRcIiAoY2xpY2spPVwibmV4dE1vbnRoKDEpXCIgW2NsYXNzLngtdmlzaWJpbGl0eV09XCIhbmV4dE1vbnRoQnRuKClcIj48L3gtbGluaz5cclxuICAgICAgPHgtbGluayBpY29uPVwiZnRvLWNoZXZyb25zLXJpZ2h0XCIgKGNsaWNrKT1cIm5leHRZZWFyKDEpXCIgW2NsYXNzLngtdmlzaWJpbGl0eV09XCIhbmV4dFllYXJCdG4oKVwiPjwveC1saW5rPlxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG4gIDxkaXYgY2xhc3M9XCJ4LXBpY2tlci1kYXRlLWJvZHlcIj5cclxuICAgIDx0YWJsZSBjZWxsc3BhY2luZz1cIjBcIiBjZWxscGFkZGluZz1cIjBcIj5cclxuICAgICAgPHRoZWFkPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgIEBmb3IgKHRpdGxlIG9mIHRpdGxlcygpOyB0cmFjayB0aXRsZSkge1xyXG4gICAgICAgICAgICA8dGg+e3sgdGl0bGUgfCB4STE4biB9fTwvdGg+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC90aGVhZD5cclxuICAgICAgPHRib2R5PlxyXG4gICAgICAgIEBmb3IgKHdlZWtzIG9mIHdlZWtEYXRlcygpOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgIDx0clxyXG4gICAgICAgICAgICBbY2xhc3MueC1kYXRlLXdlZWstYWN0aXZlXT1cIiFyYW5nZVBpY2tlcigpICYmIGlzV2VlaygpICYmIGlzV2Vla0FjdGl2ZSh3ZWVrcylcIlxyXG4gICAgICAgICAgICBbY2xhc3MueC1kYXRlLXdlZWstc3RhcnQtYWN0aXZlXT1cImlzV2Vla1JhbmdlKCkgJiYgaXNTdGFydFdlZWsod2Vla3MpXCJcclxuICAgICAgICAgICAgW2NsYXNzLngtZGF0ZS13ZWVrLWVuZC1hY3RpdmVdPVwiaXNXZWVrUmFuZ2UoKSAmJiBpc0VuZFdlZWsod2Vla3MpXCJcclxuICAgICAgICAgICAgW2NsYXNzLngtZGF0ZS13ZWVrLWluLXJhbmdlXT1cImlzV2Vla1JhbmdlKCkgJiYgaXNJblJhbmdlV2Vlayh3ZWVrcylcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICBAZm9yICh3ZWVrIG9mIHdlZWtzOyB0cmFjayB3ZWVrLmRhdGUpIHtcclxuICAgICAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwieC1waWNrZXItZGF0ZS1pdGVtXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy54LWRhdGUtd2Vla109XCJ3ZWVrLnR5cGUgPT09ICd3ZWVrJ1wiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MueC1kYXRlLWRpc2FibGVkXT1cIndlZWsuaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MueC1kYXRlLWxhc3Qtb3ItbmV4dF09XCJ3ZWVrLmlzTGFzdE9yTmV4dFwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MueC1kYXRlLW5vd109XCJ3ZWVrLmlzTm93XCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy54LWRhdGUtZmlyc3QtZGF5XT1cIndlZWsuaXNGaXJzdERheVwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MueC1kYXRlLWxhc3QtZGF5XT1cIndlZWsuaXNMYXN0RGF5XCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy54LWRhdGUtcmFuZ2Utc3RhcnRdPVwiaXNOb3RXZWVrUmFuZ2UoKSAmJiBpc1N0YXJ0RGF0ZSh3ZWVrLmRhdGUhKVwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MueC1kYXRlLXJhbmdlLWVuZF09XCJpc05vdFdlZWtSYW5nZSgpICYmIGlzRW5kRGF0ZSh3ZWVrLmRhdGUhKVwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MueC1kYXRlLXJhbmdlLXN0YXJ0LWxlZnRdPVwiaXNOb3RXZWVrUmFuZ2UoKSAmJiB3ZWVrLmlzUmFuZ2VTdGFydExlZnRcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLngtZGF0ZS1yYW5nZS1zdGFydC1yaWdodF09XCJpc05vdFdlZWtSYW5nZSgpICYmIHdlZWsuaXNSYW5nZVN0YXJ0UmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLngtZGF0ZS1yYW5nZS1lbmQtbGVmdF09XCJpc05vdFdlZWtSYW5nZSgpICYmIHdlZWsuaXNSYW5nZUVuZExlZnRcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLngtZGF0ZS1yYW5nZS1lbmQtcmlnaHRdPVwiaXNOb3RXZWVrUmFuZ2UoKSAmJiB3ZWVrLmlzUmFuZ2VFbmRSaWdodFwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MueC1kYXRlLXJhbmdlLWhvdmVyXT1cImlzTm90V2Vla1JhbmdlKCkgJiYgd2Vlay5pc1JhbmdlSG92ZXJcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLngtZGF0ZS1yYW5nZS1ob3Zlci1zdGFydC1sZWZ0XT1cImlzTm90V2Vla1JhbmdlKCkgJiYgd2Vlay5pc1JhbmdlSG92ZXJTdGFydExlZnRcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLngtZGF0ZS1yYW5nZS1ob3Zlci1zdGFydC1yaWdodF09XCJpc05vdFdlZWtSYW5nZSgpICYmIHdlZWsuaXNSYW5nZUhvdmVyU3RhcnRSaWdodFwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MueC1kYXRlLXJhbmdlLWhvdmVyLWVuZC1sZWZ0XT1cImlzTm90V2Vla1JhbmdlKCkgJiYgd2Vlay5pc1JhbmdlSG92ZXJFbmRMZWZ0XCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy54LWRhdGUtcmFuZ2UtaG92ZXItZW5kLXJpZ2h0XT1cImlzTm90V2Vla1JhbmdlKCkgJiYgd2Vlay5pc1JhbmdlSG92ZXJFbmRSaWdodFwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MueC1kYXRlLXJhbmdlLWhvdmVyLXN0YXJ0XT1cImlzTm90V2Vla1JhbmdlKCkgJiYgd2Vlay5pc1JhbmdlSG92ZXJTdGFydFwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MueC1kYXRlLXJhbmdlLWhvdmVyLWVuZF09XCJpc05vdFdlZWtSYW5nZSgpICYmIHdlZWsuaXNSYW5nZUhvdmVyRW5kXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy54LWRhdGUtaW4tcmFuZ2VdPVwiaXNOb3RXZWVrUmFuZ2UoKSAmJiB3ZWVrLmlzSW5SYW5nZVwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MueC1kYXRlLWluLXJhbmdlLWhvdmVyXT1cImlzTm90V2Vla1JhbmdlKCkgJiYgd2Vlay5pc0luUmFuZ2VIb3ZlclwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MueC1kYXRlLWFjdGl2ZV09XCJcclxuICAgICAgICAgICAgICAgICAgIXJhbmdlUGlja2VyKCkgJiZcclxuICAgICAgICAgICAgICAgICAgd2Vlay50eXBlICE9PSAnd2VlaycgJiZcclxuICAgICAgICAgICAgICAgICAgKHdlZWsuZGF0ZSB8IGRhdGU6ICd5eXl5TU1kZCcpID09PSAobW9kZWwoKSB8IGRhdGU6ICd5eXl5TU1kZCcpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIndlZWsuZGF0ZSB8IGRhdGU6ICd5eXl5LU1NLWRkJ1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwid2Vlay50eXBlICE9PSAnd2VlaycgJiYgIXdlZWsuaXNEaXNhYmxlZCAmJiBkYXRlQ2xpY2sod2VlaylcIlxyXG4gICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwiXHJcbiAgICAgICAgICAgICAgICAgIHdlZWsudHlwZSAhPT0gJ3dlZWsnICYmICF3ZWVrLmlzRGlzYWJsZWQgJiYgcmFuZ2VQaWNrZXIoKSAmJiByYW5nZUhvdmVyKCkgJiYgb25UZE1vdXNlZW50ZXIod2VlaylcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJcclxuICAgICAgICAgICAgICAgICAgd2Vlay50eXBlICE9PSAnd2VlaycgJiYgIXdlZWsuaXNEaXNhYmxlZCAmJiByYW5nZVBpY2tlcigpICYmIHJhbmdlSG92ZXIoKSAmJiBvblRkTW91c2VsZWF2ZSh3ZWVrKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICBAaWYgKGRhdGVUZW1wKCkpIHtcclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRhdGVUZW1wKCkhOyBjb250ZXh0OiB7IGRhdGUkOiB3ZWVrLmRhdGUgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ4LWRhdGUtdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEBzd2l0Y2ggKHdlZWsudHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCd3ZWVrJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyB3ZWVrLndlZWsgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIEBkZWZhdWx0IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgd2Vlay5kYXRlIHwgZGF0ZTogJ2QnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIH1cclxuICAgICAgPC90Ym9keT5cclxuICAgIDwvdGFibGU+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=