@ng-nest/ui 18.0.12 → 19.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (881) hide show
  1. package/README.md +1 -1
  2. package/affix/affix.property.d.ts +1 -1
  3. package/alert/alert.property.d.ts +1 -1
  4. package/anchor/anchor.property.d.ts +2 -2
  5. package/auto-complete/auto-complete.property.d.ts +16 -19
  6. package/avatar/avatar.property.d.ts +2 -2
  7. package/back-top/back-top.property.d.ts +1 -1
  8. package/badge/badge.property.d.ts +1 -1
  9. package/base-form/base-form.property.d.ts +2 -2
  10. package/button/button.property.d.ts +2 -2
  11. package/calendar/calendar.property.d.ts +1 -1
  12. package/card/card.property.d.ts +1 -1
  13. package/carousel/carousel.property.d.ts +2 -2
  14. package/cascade/cascade.property.d.ts +16 -27
  15. package/checkbox/checkbox.property.d.ts +16 -22
  16. package/collapse/collapse.property.d.ts +2 -2
  17. package/color/color.property.d.ts +1 -1
  18. package/color-picker/color-picker-portal.component.d.ts +10 -10
  19. package/color-picker/color-picker.property.d.ts +15 -15
  20. package/comment/comment.property.d.ts +2 -2
  21. package/container/container.property.d.ts +4 -4
  22. package/crumb/crumb.property.d.ts +1 -1
  23. package/date-picker/date-picker-portal.component.d.ts +1 -1
  24. package/date-picker/date-picker.property.d.ts +34 -34
  25. package/date-picker/date-range-portal.component.d.ts +5 -5
  26. package/description/description.property.d.ts +2 -2
  27. package/dialog/dialog-portal.component.d.ts +0 -2
  28. package/dialog/dialog-portal.directives.d.ts +2 -3
  29. package/dialog/dialog-ref.d.ts +4 -2
  30. package/dialog/dialog.component.d.ts +0 -5
  31. package/dialog/dialog.property.d.ts +14 -10
  32. package/drag/drag.property.d.ts +1 -1
  33. package/drawer/drawer.property.d.ts +2 -2
  34. package/dropdown/dropdown.property.d.ts +1 -1
  35. package/empty/empty.property.d.ts +1 -1
  36. package/fesm2022/ng-nest-ui-affix.mjs +14 -12
  37. package/fesm2022/ng-nest-ui-affix.mjs.map +1 -1
  38. package/fesm2022/ng-nest-ui-alert.mjs +14 -12
  39. package/fesm2022/ng-nest-ui-alert.mjs.map +1 -1
  40. package/fesm2022/ng-nest-ui-anchor.mjs +23 -20
  41. package/fesm2022/ng-nest-ui-anchor.mjs.map +1 -1
  42. package/fesm2022/ng-nest-ui-api.mjs +8 -8
  43. package/fesm2022/ng-nest-ui-api.mjs.map +1 -1
  44. package/fesm2022/ng-nest-ui-auto-complete.mjs +16 -16
  45. package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
  46. package/fesm2022/ng-nest-ui-avatar.mjs +18 -18
  47. package/fesm2022/ng-nest-ui-avatar.mjs.map +1 -1
  48. package/fesm2022/ng-nest-ui-back-top.mjs +13 -12
  49. package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
  50. package/fesm2022/ng-nest-ui-badge.mjs +11 -11
  51. package/fesm2022/ng-nest-ui-badge.mjs.map +1 -1
  52. package/fesm2022/ng-nest-ui-base-form.mjs +10 -10
  53. package/fesm2022/ng-nest-ui-base-form.mjs.map +1 -1
  54. package/fesm2022/ng-nest-ui-button.mjs +18 -18
  55. package/fesm2022/ng-nest-ui-button.mjs.map +1 -1
  56. package/fesm2022/ng-nest-ui-calendar.mjs +14 -15
  57. package/fesm2022/ng-nest-ui-calendar.mjs.map +1 -1
  58. package/fesm2022/ng-nest-ui-card.mjs +11 -12
  59. package/fesm2022/ng-nest-ui-card.mjs.map +1 -1
  60. package/fesm2022/ng-nest-ui-carousel.mjs +20 -19
  61. package/fesm2022/ng-nest-ui-carousel.mjs.map +1 -1
  62. package/fesm2022/ng-nest-ui-cascade.mjs +16 -16
  63. package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
  64. package/fesm2022/ng-nest-ui-checkbox.mjs +12 -12
  65. package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
  66. package/fesm2022/ng-nest-ui-collapse.mjs +18 -18
  67. package/fesm2022/ng-nest-ui-collapse.mjs.map +1 -1
  68. package/fesm2022/ng-nest-ui-color-picker.mjs +15 -15
  69. package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
  70. package/fesm2022/ng-nest-ui-color.mjs +11 -11
  71. package/fesm2022/ng-nest-ui-color.mjs.map +1 -1
  72. package/fesm2022/ng-nest-ui-comment.mjs +18 -18
  73. package/fesm2022/ng-nest-ui-comment.mjs.map +1 -1
  74. package/fesm2022/ng-nest-ui-container.mjs +36 -36
  75. package/fesm2022/ng-nest-ui-container.mjs.map +1 -1
  76. package/fesm2022/ng-nest-ui-core.mjs +15 -15
  77. package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
  78. package/fesm2022/ng-nest-ui-crumb.mjs +11 -11
  79. package/fesm2022/ng-nest-ui-crumb.mjs.map +1 -1
  80. package/fesm2022/ng-nest-ui-date-picker.mjs +57 -57
  81. package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
  82. package/fesm2022/ng-nest-ui-description.mjs +18 -18
  83. package/fesm2022/ng-nest-ui-description.mjs.map +1 -1
  84. package/fesm2022/ng-nest-ui-dialog.mjs +70 -144
  85. package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
  86. package/fesm2022/ng-nest-ui-doc.mjs +8 -8
  87. package/fesm2022/ng-nest-ui-doc.mjs.map +1 -1
  88. package/fesm2022/ng-nest-ui-drag.mjs +11 -11
  89. package/fesm2022/ng-nest-ui-drag.mjs.map +1 -1
  90. package/fesm2022/ng-nest-ui-drawer.mjs +38 -41
  91. package/fesm2022/ng-nest-ui-drawer.mjs.map +1 -1
  92. package/fesm2022/ng-nest-ui-dropdown.mjs +15 -16
  93. package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
  94. package/fesm2022/ng-nest-ui-empty.mjs +11 -11
  95. package/fesm2022/ng-nest-ui-empty.mjs.map +1 -1
  96. package/fesm2022/ng-nest-ui-examples.mjs +8 -8
  97. package/fesm2022/ng-nest-ui-examples.mjs.map +1 -1
  98. package/fesm2022/ng-nest-ui-find.mjs +11 -11
  99. package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
  100. package/fesm2022/ng-nest-ui-form.mjs +21 -40
  101. package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
  102. package/fesm2022/ng-nest-ui-highlight.mjs +14 -14
  103. package/fesm2022/ng-nest-ui-highlight.mjs.map +1 -1
  104. package/fesm2022/ng-nest-ui-i18n.mjs +15 -17
  105. package/fesm2022/ng-nest-ui-i18n.mjs.map +1 -1
  106. package/fesm2022/ng-nest-ui-icon.mjs +14 -14
  107. package/fesm2022/ng-nest-ui-icon.mjs.map +1 -1
  108. package/fesm2022/ng-nest-ui-image.mjs +24 -24
  109. package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
  110. package/fesm2022/ng-nest-ui-inner.mjs +11 -11
  111. package/fesm2022/ng-nest-ui-inner.mjs.map +1 -1
  112. package/fesm2022/ng-nest-ui-input-number.mjs +11 -11
  113. package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
  114. package/fesm2022/ng-nest-ui-input.mjs +19 -19
  115. package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
  116. package/fesm2022/ng-nest-ui-keyword.mjs +12 -13
  117. package/fesm2022/ng-nest-ui-keyword.mjs.map +1 -1
  118. package/fesm2022/ng-nest-ui-layout.mjs +18 -18
  119. package/fesm2022/ng-nest-ui-layout.mjs.map +1 -1
  120. package/fesm2022/ng-nest-ui-link.mjs +11 -11
  121. package/fesm2022/ng-nest-ui-link.mjs.map +1 -1
  122. package/fesm2022/ng-nest-ui-list.mjs +22 -23
  123. package/fesm2022/ng-nest-ui-list.mjs.map +1 -1
  124. package/fesm2022/ng-nest-ui-loading.mjs +12 -12
  125. package/fesm2022/ng-nest-ui-loading.mjs.map +1 -1
  126. package/fesm2022/ng-nest-ui-menu.mjs +19 -20
  127. package/fesm2022/ng-nest-ui-menu.mjs.map +1 -1
  128. package/fesm2022/ng-nest-ui-message-box.mjs +11 -13
  129. package/fesm2022/ng-nest-ui-message-box.mjs.map +1 -1
  130. package/fesm2022/ng-nest-ui-message.mjs +11 -11
  131. package/fesm2022/ng-nest-ui-message.mjs.map +1 -1
  132. package/fesm2022/ng-nest-ui-notification.mjs +11 -11
  133. package/fesm2022/ng-nest-ui-notification.mjs.map +1 -1
  134. package/fesm2022/ng-nest-ui-outlet.mjs +8 -8
  135. package/fesm2022/ng-nest-ui-outlet.mjs.map +1 -1
  136. package/fesm2022/ng-nest-ui-page-header.mjs +11 -11
  137. package/fesm2022/ng-nest-ui-page-header.mjs.map +1 -1
  138. package/fesm2022/ng-nest-ui-pagination.mjs +11 -11
  139. package/fesm2022/ng-nest-ui-pagination.mjs.map +1 -1
  140. package/fesm2022/ng-nest-ui-pattern.mjs +8 -8
  141. package/fesm2022/ng-nest-ui-pattern.mjs.map +1 -1
  142. package/fesm2022/ng-nest-ui-popconfirm.mjs +11 -11
  143. package/fesm2022/ng-nest-ui-popconfirm.mjs.map +1 -1
  144. package/fesm2022/ng-nest-ui-popover.mjs +15 -15
  145. package/fesm2022/ng-nest-ui-popover.mjs.map +1 -1
  146. package/fesm2022/ng-nest-ui-portal.mjs +7 -7
  147. package/fesm2022/ng-nest-ui-portal.mjs.map +1 -1
  148. package/fesm2022/ng-nest-ui-progress.mjs +11 -11
  149. package/fesm2022/ng-nest-ui-progress.mjs.map +1 -1
  150. package/fesm2022/ng-nest-ui-radio.mjs +11 -11
  151. package/fesm2022/ng-nest-ui-radio.mjs.map +1 -1
  152. package/fesm2022/ng-nest-ui-rate.mjs +11 -12
  153. package/fesm2022/ng-nest-ui-rate.mjs.map +1 -1
  154. package/fesm2022/ng-nest-ui-resizable.mjs +12 -12
  155. package/fesm2022/ng-nest-ui-resizable.mjs.map +1 -1
  156. package/fesm2022/ng-nest-ui-result.mjs +11 -11
  157. package/fesm2022/ng-nest-ui-result.mjs.map +1 -1
  158. package/fesm2022/ng-nest-ui-ripple.mjs +11 -12
  159. package/fesm2022/ng-nest-ui-ripple.mjs.map +1 -1
  160. package/fesm2022/ng-nest-ui-select.mjs +15 -15
  161. package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
  162. package/fesm2022/ng-nest-ui-skeleton.mjs +11 -11
  163. package/fesm2022/ng-nest-ui-skeleton.mjs.map +1 -1
  164. package/fesm2022/ng-nest-ui-slider-select.mjs +11 -22
  165. package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
  166. package/fesm2022/ng-nest-ui-slider.mjs +11 -11
  167. package/fesm2022/ng-nest-ui-slider.mjs.map +1 -1
  168. package/fesm2022/ng-nest-ui-statistic.mjs +18 -18
  169. package/fesm2022/ng-nest-ui-statistic.mjs.map +1 -1
  170. package/fesm2022/ng-nest-ui-steps.mjs +11 -11
  171. package/fesm2022/ng-nest-ui-steps.mjs.map +1 -1
  172. package/fesm2022/ng-nest-ui-switch.mjs +11 -11
  173. package/fesm2022/ng-nest-ui-switch.mjs.map +1 -1
  174. package/fesm2022/ng-nest-ui-table.mjs +32 -32
  175. package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
  176. package/fesm2022/ng-nest-ui-tabs.mjs +30 -32
  177. package/fesm2022/ng-nest-ui-tabs.mjs.map +1 -1
  178. package/fesm2022/ng-nest-ui-tag.mjs +11 -11
  179. package/fesm2022/ng-nest-ui-tag.mjs.map +1 -1
  180. package/fesm2022/ng-nest-ui-text-retract.mjs +11 -11
  181. package/fesm2022/ng-nest-ui-text-retract.mjs.map +1 -1
  182. package/fesm2022/ng-nest-ui-textarea.mjs +11 -11
  183. package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
  184. package/fesm2022/ng-nest-ui-theme.mjs +13 -14
  185. package/fesm2022/ng-nest-ui-theme.mjs.map +1 -1
  186. package/fesm2022/ng-nest-ui-time-ago.mjs +8 -8
  187. package/fesm2022/ng-nest-ui-time-ago.mjs.map +1 -1
  188. package/fesm2022/ng-nest-ui-time-picker.mjs +19 -19
  189. package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
  190. package/fesm2022/ng-nest-ui-time-range.mjs +8 -8
  191. package/fesm2022/ng-nest-ui-time-range.mjs.map +1 -1
  192. package/fesm2022/ng-nest-ui-timeline.mjs +11 -11
  193. package/fesm2022/ng-nest-ui-timeline.mjs.map +1 -1
  194. package/fesm2022/ng-nest-ui-tooltip.mjs +15 -15
  195. package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
  196. package/fesm2022/ng-nest-ui-transfer.mjs +12 -13
  197. package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
  198. package/fesm2022/ng-nest-ui-tree-file.mjs +12 -20
  199. package/fesm2022/ng-nest-ui-tree-file.mjs.map +1 -1
  200. package/fesm2022/ng-nest-ui-tree-select.mjs +15 -15
  201. package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
  202. package/fesm2022/ng-nest-ui-tree.mjs +21 -21
  203. package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
  204. package/fesm2022/ng-nest-ui-typography.mjs +11 -11
  205. package/fesm2022/ng-nest-ui-typography.mjs.map +1 -1
  206. package/fesm2022/ng-nest-ui-upload.mjs +15 -15
  207. package/fesm2022/ng-nest-ui-upload.mjs.map +1 -1
  208. package/find/find.property.d.ts +12 -18
  209. package/form/form.property.d.ts +10 -21
  210. package/highlight/highlight.property.d.ts +1 -1
  211. package/icon/icon.property.d.ts +1 -1
  212. package/image/image.property.d.ts +2 -2
  213. package/inner/inner.property.d.ts +1 -1
  214. package/input/input.property.d.ts +17 -20
  215. package/input-number/input-number.property.d.ts +13 -13
  216. package/layout/layout.property.d.ts +2 -2
  217. package/link/link.property.d.ts +1 -1
  218. package/list/list.property.d.ts +12 -12
  219. package/loading/loading.property.d.ts +1 -1
  220. package/menu/menu.property.d.ts +2 -2
  221. package/package.json +83 -257
  222. package/page-header/page-header.property.d.ts +1 -1
  223. package/pagination/pagination.property.d.ts +1 -1
  224. package/popconfirm/popconfirm.property.d.ts +1 -1
  225. package/popover/popover.property.d.ts +1 -1
  226. package/progress/progress.property.d.ts +1 -1
  227. package/radio/radio.property.d.ts +13 -16
  228. package/rate/rate.property.d.ts +14 -22
  229. package/result/result.property.d.ts +1 -1
  230. package/ripple/ripple.property.d.ts +1 -1
  231. package/select/select-portal.component.d.ts +1 -1
  232. package/select/select.property.d.ts +15 -15
  233. package/skeleton/skeleton.property.d.ts +1 -1
  234. package/slider/slider.property.d.ts +1 -1
  235. package/slider-select/slider-select.property.d.ts +13 -17
  236. package/statistic/statistic.property.d.ts +2 -2
  237. package/steps/steps.property.d.ts +1 -1
  238. package/style/core/index.css +87 -174
  239. package/style/core/index.css.map +1 -1
  240. package/style/core/index.scss +32 -5
  241. package/style/directives/index.scss +3 -3
  242. package/style/directives/keyword/index.scss +3 -2
  243. package/style/directives/keyword/mixin.scss +9 -11
  244. package/style/directives/keyword/param.scss +2 -1
  245. package/style/directives/resizable/index.scss +3 -2
  246. package/style/directives/resizable/mixin.scss +122 -16
  247. package/style/directives/resizable/param.scss +2 -1
  248. package/style/directives/ripple/index.scss +3 -2
  249. package/style/directives/ripple/mixin.scss +12 -12
  250. package/style/directives/ripple/param.scss +2 -1
  251. package/style/mixins/compatibility.scss +7 -5
  252. package/style/mixins/form.scss +6 -4
  253. package/style/mixins/hidden.scss +5 -2
  254. package/style/params/index.scss +282 -3
  255. package/switch/switch.property.d.ts +14 -14
  256. package/table/table.property.d.ts +4 -4
  257. package/tabs/tabs.property.d.ts +2 -2
  258. package/tag/tag.property.d.ts +1 -1
  259. package/text-retract/text-retract.property.d.ts +1 -1
  260. package/textarea/textarea.property.d.ts +14 -17
  261. package/theme/theme.property.d.ts +6 -10
  262. package/time-picker/time-picker.property.d.ts +17 -23
  263. package/timeline/timeline.property.d.ts +1 -1
  264. package/tooltip/tooltip.property.d.ts +1 -1
  265. package/transfer/transfer.property.d.ts +9 -13
  266. package/tree/tree.property.d.ts +2 -2
  267. package/tree-file/tree-file.property.d.ts +1 -1
  268. package/tree-select/tree-select-portal.component.d.ts +1 -1
  269. package/tree-select/tree-select.property.d.ts +15 -15
  270. package/typography/typography.property.d.ts +1 -1
  271. package/upload/upload.property.d.ts +9 -9
  272. package/esm2022/affix/affix.component.mjs +0 -12
  273. package/esm2022/affix/affix.module.mjs +0 -16
  274. package/esm2022/affix/affix.property.mjs +0 -51
  275. package/esm2022/affix/ng-nest-ui-affix.mjs +0 -5
  276. package/esm2022/affix/public-api.mjs +0 -4
  277. package/esm2022/alert/alert.component.mjs +0 -73
  278. package/esm2022/alert/alert.module.mjs +0 -16
  279. package/esm2022/alert/alert.property.mjs +0 -313
  280. package/esm2022/alert/ng-nest-ui-alert.mjs +0 -5
  281. package/esm2022/alert/public-api.mjs +0 -4
  282. package/esm2022/anchor/anchor-inner.component.mjs +0 -18
  283. package/esm2022/anchor/anchor.component.mjs +0 -160
  284. package/esm2022/anchor/anchor.module.mjs +0 -17
  285. package/esm2022/anchor/anchor.property.mjs +0 -121
  286. package/esm2022/anchor/ng-nest-ui-anchor.mjs +0 -5
  287. package/esm2022/anchor/public-api.mjs +0 -5
  288. package/esm2022/api/api.component.mjs +0 -18
  289. package/esm2022/api/api.module.mjs +0 -16
  290. package/esm2022/api/api.property.mjs +0 -7
  291. package/esm2022/api/ng-nest-ui-api.mjs +0 -5
  292. package/esm2022/api/public-api.mjs +0 -4
  293. package/esm2022/auto-complete/auto-complete-portal.component.mjs +0 -80
  294. package/esm2022/auto-complete/auto-complete.component.mjs +0 -306
  295. package/esm2022/auto-complete/auto-complete.module.mjs +0 -16
  296. package/esm2022/auto-complete/auto-complete.property.mjs +0 -172
  297. package/esm2022/auto-complete/ng-nest-ui-auto-complete.mjs +0 -5
  298. package/esm2022/auto-complete/public-api.mjs +0 -5
  299. package/esm2022/avatar/avatar-group.component.mjs +0 -19
  300. package/esm2022/avatar/avatar.component.mjs +0 -109
  301. package/esm2022/avatar/avatar.module.mjs +0 -17
  302. package/esm2022/avatar/avatar.property.mjs +0 -143
  303. package/esm2022/avatar/ng-nest-ui-avatar.mjs +0 -5
  304. package/esm2022/avatar/public-api.mjs +0 -5
  305. package/esm2022/back-top/back-top.component.mjs +0 -104
  306. package/esm2022/back-top/back-top.module.mjs +0 -16
  307. package/esm2022/back-top/back-top.property.mjs +0 -50
  308. package/esm2022/back-top/ng-nest-ui-back-top.mjs +0 -5
  309. package/esm2022/back-top/public-api.mjs +0 -4
  310. package/esm2022/badge/badge.component.mjs +0 -63
  311. package/esm2022/badge/badge.module.mjs +0 -16
  312. package/esm2022/badge/badge.property.mjs +0 -133
  313. package/esm2022/badge/ng-nest-ui-badge.mjs +0 -5
  314. package/esm2022/badge/public-api.mjs +0 -4
  315. package/esm2022/base-form/base-form.component.mjs +0 -101
  316. package/esm2022/base-form/base-form.module.mjs +0 -15
  317. package/esm2022/base-form/base-form.property.mjs +0 -237
  318. package/esm2022/base-form/ng-nest-ui-base-form.mjs +0 -5
  319. package/esm2022/base-form/public-api.mjs +0 -4
  320. package/esm2022/button/button.component.mjs +0 -71
  321. package/esm2022/button/button.module.mjs +0 -17
  322. package/esm2022/button/button.property.mjs +0 -331
  323. package/esm2022/button/buttons.component.mjs +0 -55
  324. package/esm2022/button/ng-nest-ui-button.mjs +0 -5
  325. package/esm2022/button/public-api.mjs +0 -5
  326. package/esm2022/calendar/calendar.component.mjs +0 -117
  327. package/esm2022/calendar/calendar.module.mjs +0 -16
  328. package/esm2022/calendar/calendar.property.mjs +0 -110
  329. package/esm2022/calendar/ng-nest-ui-calendar.mjs +0 -5
  330. package/esm2022/calendar/public-api.mjs +0 -4
  331. package/esm2022/card/card.component.mjs +0 -22
  332. package/esm2022/card/card.module.mjs +0 -16
  333. package/esm2022/card/card.property.mjs +0 -77
  334. package/esm2022/card/ng-nest-ui-card.mjs +0 -5
  335. package/esm2022/card/public-api.mjs +0 -4
  336. package/esm2022/carousel/carousel-panel.component.mjs +0 -157
  337. package/esm2022/carousel/carousel.component.mjs +0 -95
  338. package/esm2022/carousel/carousel.module.mjs +0 -17
  339. package/esm2022/carousel/carousel.property.mjs +0 -256
  340. package/esm2022/carousel/ng-nest-ui-carousel.mjs +0 -5
  341. package/esm2022/carousel/public-api.mjs +0 -5
  342. package/esm2022/cascade/cascade-portal.component.mjs +0 -141
  343. package/esm2022/cascade/cascade.component.mjs +0 -238
  344. package/esm2022/cascade/cascade.module.mjs +0 -16
  345. package/esm2022/cascade/cascade.property.mjs +0 -167
  346. package/esm2022/cascade/ng-nest-ui-cascade.mjs +0 -5
  347. package/esm2022/cascade/public-api.mjs +0 -5
  348. package/esm2022/checkbox/checkbox.component.mjs +0 -102
  349. package/esm2022/checkbox/checkbox.module.mjs +0 -16
  350. package/esm2022/checkbox/checkbox.property.mjs +0 -136
  351. package/esm2022/checkbox/ng-nest-ui-checkbox.mjs +0 -5
  352. package/esm2022/checkbox/public-api.mjs +0 -4
  353. package/esm2022/collapse/collapse-panel.component.mjs +0 -55
  354. package/esm2022/collapse/collapse.component.mjs +0 -49
  355. package/esm2022/collapse/collapse.module.mjs +0 -17
  356. package/esm2022/collapse/collapse.property.mjs +0 -189
  357. package/esm2022/collapse/ng-nest-ui-collapse.mjs +0 -5
  358. package/esm2022/collapse/public-api.mjs +0 -5
  359. package/esm2022/color/color.component.mjs +0 -35
  360. package/esm2022/color/color.module.mjs +0 -16
  361. package/esm2022/color/color.property.mjs +0 -71
  362. package/esm2022/color/ng-nest-ui-color.mjs +0 -5
  363. package/esm2022/color/public-api.mjs +0 -4
  364. package/esm2022/color-picker/color-picker-portal.component.mjs +0 -396
  365. package/esm2022/color-picker/color-picker.component.mjs +0 -191
  366. package/esm2022/color-picker/color-picker.module.mjs +0 -16
  367. package/esm2022/color-picker/color-picker.property.mjs +0 -142
  368. package/esm2022/color-picker/ng-nest-ui-color-picker.mjs +0 -5
  369. package/esm2022/color-picker/public-api.mjs +0 -5
  370. package/esm2022/comment/comment-reply.component.mjs +0 -24
  371. package/esm2022/comment/comment.component.mjs +0 -55
  372. package/esm2022/comment/comment.module.mjs +0 -17
  373. package/esm2022/comment/comment.property.mjs +0 -90
  374. package/esm2022/comment/ng-nest-ui-comment.mjs +0 -5
  375. package/esm2022/comment/public-api.mjs +0 -5
  376. package/esm2022/container/aside.component.mjs +0 -25
  377. package/esm2022/container/container.component.mjs +0 -31
  378. package/esm2022/container/container.module.mjs +0 -20
  379. package/esm2022/container/container.property.mjs +0 -115
  380. package/esm2022/container/footer.component.mjs +0 -35
  381. package/esm2022/container/header.component.mjs +0 -35
  382. package/esm2022/container/main.component.mjs +0 -18
  383. package/esm2022/container/ng-nest-ui-container.mjs +0 -5
  384. package/esm2022/container/public-api.mjs +0 -8
  385. package/esm2022/core/animation/badge.mjs +0 -53
  386. package/esm2022/core/animation/connect.mjs +0 -31
  387. package/esm2022/core/animation/consts.mjs +0 -11
  388. package/esm2022/core/animation/drop.mjs +0 -13
  389. package/esm2022/core/animation/fade.mjs +0 -24
  390. package/esm2022/core/animation/move.mjs +0 -179
  391. package/esm2022/core/animation/opacity.mjs +0 -13
  392. package/esm2022/core/animation/public-api.mjs +0 -9
  393. package/esm2022/core/animation/slide.mjs +0 -17
  394. package/esm2022/core/config/config.mjs +0 -3
  395. package/esm2022/core/config/config.service.mjs +0 -54
  396. package/esm2022/core/config/index.mjs +0 -2
  397. package/esm2022/core/config/public-api.mjs +0 -3
  398. package/esm2022/core/functions/chunk.mjs +0 -25
  399. package/esm2022/core/functions/clone-deep.mjs +0 -28
  400. package/esm2022/core/functions/convert.mjs +0 -230
  401. package/esm2022/core/functions/csspx.mjs +0 -17
  402. package/esm2022/core/functions/date.mjs +0 -223
  403. package/esm2022/core/functions/drop.mjs +0 -20
  404. package/esm2022/core/functions/flex.mjs +0 -25
  405. package/esm2022/core/functions/group-by.mjs +0 -14
  406. package/esm2022/core/functions/guid.mjs +0 -11
  407. package/esm2022/core/functions/has-in.mjs +0 -8
  408. package/esm2022/core/functions/order-by.mjs +0 -56
  409. package/esm2022/core/functions/parent-path.mjs +0 -27
  410. package/esm2022/core/functions/property.mjs +0 -20
  411. package/esm2022/core/functions/public-api.mjs +0 -16
  412. package/esm2022/core/functions/remove.mjs +0 -19
  413. package/esm2022/core/functions/resize.mjs +0 -22
  414. package/esm2022/core/interfaces/data.type.mjs +0 -164
  415. package/esm2022/core/interfaces/identify.type.mjs +0 -7
  416. package/esm2022/core/interfaces/index.mjs +0 -2
  417. package/esm2022/core/interfaces/layout.type.mjs +0 -2
  418. package/esm2022/core/interfaces/public-api.mjs +0 -5
  419. package/esm2022/core/interfaces/result-list.type.mjs +0 -2
  420. package/esm2022/core/ng-nest-ui-core.mjs +0 -5
  421. package/esm2022/core/public-api.mjs +0 -8
  422. package/esm2022/core/services/http.service.mjs +0 -58
  423. package/esm2022/core/services/preloading-strategy.service.mjs +0 -24
  424. package/esm2022/core/services/public-api.mjs +0 -6
  425. package/esm2022/core/services/repository.service.mjs +0 -29
  426. package/esm2022/core/services/reuse-strategy.service.mjs +0 -47
  427. package/esm2022/core/services/storage.service.mjs +0 -75
  428. package/esm2022/core/theme/index.mjs +0 -2
  429. package/esm2022/core/theme/public-api.mjs +0 -3
  430. package/esm2022/core/theme/theme.mjs +0 -89
  431. package/esm2022/core/theme/theme.service.mjs +0 -270
  432. package/esm2022/core/util/animation.mjs +0 -26
  433. package/esm2022/core/util/camel-to-kebab.mjs +0 -16
  434. package/esm2022/core/util/check.mjs +0 -15
  435. package/esm2022/core/util/computed-style.mjs +0 -20
  436. package/esm2022/core/util/host.mjs +0 -14
  437. package/esm2022/core/util/html.mjs +0 -12
  438. package/esm2022/core/util/index.mjs +0 -2
  439. package/esm2022/core/util/kebab-to-camel.mjs +0 -16
  440. package/esm2022/core/util/log.mjs +0 -15
  441. package/esm2022/core/util/option.mjs +0 -14
  442. package/esm2022/core/util/public-api.mjs +0 -11
  443. package/esm2022/core/util/sleep.mjs +0 -8
  444. package/esm2022/crumb/crumb.component.mjs +0 -25
  445. package/esm2022/crumb/crumb.module.mjs +0 -16
  446. package/esm2022/crumb/crumb.property.mjs +0 -45
  447. package/esm2022/crumb/ng-nest-ui-crumb.mjs +0 -5
  448. package/esm2022/crumb/public-api.mjs +0 -4
  449. package/esm2022/date-picker/date-picker-portal.component.mjs +0 -196
  450. package/esm2022/date-picker/date-picker.component.mjs +0 -320
  451. package/esm2022/date-picker/date-picker.module.mjs +0 -17
  452. package/esm2022/date-picker/date-picker.property.mjs +0 -770
  453. package/esm2022/date-picker/date-quarter.pipe.mjs +0 -19
  454. package/esm2022/date-picker/date-range-portal.component.mjs +0 -349
  455. package/esm2022/date-picker/date-range.component.mjs +0 -432
  456. package/esm2022/date-picker/ng-nest-ui-date-picker.mjs +0 -5
  457. package/esm2022/date-picker/picker-date.component.mjs +0 -334
  458. package/esm2022/date-picker/picker-month.component.mjs +0 -232
  459. package/esm2022/date-picker/picker-quarter.component.mjs +0 -237
  460. package/esm2022/date-picker/picker-year.component.mjs +0 -233
  461. package/esm2022/date-picker/public-api.mjs +0 -12
  462. package/esm2022/description/description-item.component.mjs +0 -24
  463. package/esm2022/description/description.component.mjs +0 -48
  464. package/esm2022/description/description.module.mjs +0 -17
  465. package/esm2022/description/description.property.mjs +0 -219
  466. package/esm2022/description/ng-nest-ui-description.mjs +0 -5
  467. package/esm2022/description/public-api.mjs +0 -5
  468. package/esm2022/dialog/dialog-container.component.mjs +0 -29
  469. package/esm2022/dialog/dialog-portal.component.mjs +0 -97
  470. package/esm2022/dialog/dialog-portal.directives.mjs +0 -119
  471. package/esm2022/dialog/dialog-ref.mjs +0 -100
  472. package/esm2022/dialog/dialog.component.mjs +0 -282
  473. package/esm2022/dialog/dialog.module.mjs +0 -50
  474. package/esm2022/dialog/dialog.property.mjs +0 -207
  475. package/esm2022/dialog/dialog.service.mjs +0 -122
  476. package/esm2022/dialog/ng-nest-ui-dialog.mjs +0 -5
  477. package/esm2022/dialog/public-api.mjs +0 -9
  478. package/esm2022/doc/doc.component.mjs +0 -18
  479. package/esm2022/doc/doc.module.mjs +0 -16
  480. package/esm2022/doc/doc.property.mjs +0 -7
  481. package/esm2022/doc/ng-nest-ui-doc.mjs +0 -5
  482. package/esm2022/doc/public-api.mjs +0 -4
  483. package/esm2022/drag/drag.directive.mjs +0 -57
  484. package/esm2022/drag/drag.module.mjs +0 -16
  485. package/esm2022/drag/drag.property.mjs +0 -25
  486. package/esm2022/drag/ng-nest-ui-drag.mjs +0 -5
  487. package/esm2022/drag/public-api.mjs +0 -4
  488. package/esm2022/drawer/drawer-container.component.mjs +0 -29
  489. package/esm2022/drawer/drawer-portal.component.mjs +0 -50
  490. package/esm2022/drawer/drawer-portal.directives.mjs +0 -58
  491. package/esm2022/drawer/drawer-ref.mjs +0 -17
  492. package/esm2022/drawer/drawer.component.mjs +0 -95
  493. package/esm2022/drawer/drawer.module.mjs +0 -38
  494. package/esm2022/drawer/drawer.property.mjs +0 -84
  495. package/esm2022/drawer/drawer.service.mjs +0 -65
  496. package/esm2022/drawer/ng-nest-ui-drawer.mjs +0 -5
  497. package/esm2022/drawer/public-api.mjs +0 -10
  498. package/esm2022/dropdown/dropdown-portal.component.mjs +0 -204
  499. package/esm2022/dropdown/dropdown.component.mjs +0 -179
  500. package/esm2022/dropdown/dropdown.module.mjs +0 -16
  501. package/esm2022/dropdown/dropdown.property.mjs +0 -96
  502. package/esm2022/dropdown/ng-nest-ui-dropdown.mjs +0 -5
  503. package/esm2022/dropdown/public-api.mjs +0 -5
  504. package/esm2022/empty/empty.component.mjs +0 -15
  505. package/esm2022/empty/empty.module.mjs +0 -16
  506. package/esm2022/empty/empty.property.mjs +0 -54
  507. package/esm2022/empty/ng-nest-ui-empty.mjs +0 -5
  508. package/esm2022/empty/public-api.mjs +0 -4
  509. package/esm2022/examples/examples.component.mjs +0 -18
  510. package/esm2022/examples/examples.module.mjs +0 -16
  511. package/esm2022/examples/examples.property.mjs +0 -7
  512. package/esm2022/examples/ng-nest-ui-examples.mjs +0 -5
  513. package/esm2022/examples/public-api.mjs +0 -4
  514. package/esm2022/find/find.component.mjs +0 -331
  515. package/esm2022/find/find.module.mjs +0 -16
  516. package/esm2022/find/find.property.mjs +0 -260
  517. package/esm2022/find/ng-nest-ui-find.mjs +0 -5
  518. package/esm2022/find/public-api.mjs +0 -4
  519. package/esm2022/form/control.component.mjs +0 -249
  520. package/esm2022/form/form.component.mjs +0 -116
  521. package/esm2022/form/form.module.mjs +0 -17
  522. package/esm2022/form/form.property.mjs +0 -202
  523. package/esm2022/form/ng-nest-ui-form.mjs +0 -5
  524. package/esm2022/form/public-api.mjs +0 -5
  525. package/esm2022/highlight/highlight.component.mjs +0 -85
  526. package/esm2022/highlight/highlight.module.mjs +0 -16
  527. package/esm2022/highlight/highlight.property.mjs +0 -45
  528. package/esm2022/highlight/highlight.service.mjs +0 -17
  529. package/esm2022/highlight/ng-nest-ui-highlight.mjs +0 -5
  530. package/esm2022/highlight/public-api.mjs +0 -5
  531. package/esm2022/i18n/i18n.directive.mjs +0 -29
  532. package/esm2022/i18n/i18n.module.mjs +0 -17
  533. package/esm2022/i18n/i18n.pipe.mjs +0 -28
  534. package/esm2022/i18n/i18n.property.mjs +0 -9
  535. package/esm2022/i18n/i18n.service.mjs +0 -57
  536. package/esm2022/i18n/languages/ar_EG.mjs +0 -169
  537. package/esm2022/i18n/languages/bg_BG.mjs +0 -172
  538. package/esm2022/i18n/languages/ca_ES.mjs +0 -172
  539. package/esm2022/i18n/languages/cs_CZ.mjs +0 -172
  540. package/esm2022/i18n/languages/da_DK.mjs +0 -172
  541. package/esm2022/i18n/languages/de_DE.mjs +0 -172
  542. package/esm2022/i18n/languages/el_GR.mjs +0 -172
  543. package/esm2022/i18n/languages/en_GB.mjs +0 -181
  544. package/esm2022/i18n/languages/en_US.mjs +0 -181
  545. package/esm2022/i18n/languages/es_ES.mjs +0 -172
  546. package/esm2022/i18n/languages/et_EE.mjs +0 -172
  547. package/esm2022/i18n/languages/fa_IR.mjs +0 -172
  548. package/esm2022/i18n/languages/fi_FI.mjs +0 -172
  549. package/esm2022/i18n/languages/fr_BE.mjs +0 -172
  550. package/esm2022/i18n/languages/fr_FR.mjs +0 -172
  551. package/esm2022/i18n/languages/he_IL.mjs +0 -169
  552. package/esm2022/i18n/languages/hi_IN.mjs +0 -172
  553. package/esm2022/i18n/languages/hr_HR.mjs +0 -172
  554. package/esm2022/i18n/languages/hu_HU.mjs +0 -172
  555. package/esm2022/i18n/languages/hy_AM.mjs +0 -172
  556. package/esm2022/i18n/languages/id_ID.mjs +0 -172
  557. package/esm2022/i18n/languages/is_IS.mjs +0 -172
  558. package/esm2022/i18n/languages/it_IT.mjs +0 -172
  559. package/esm2022/i18n/languages/ja_JP.mjs +0 -172
  560. package/esm2022/i18n/languages/ka_GE.mjs +0 -172
  561. package/esm2022/i18n/languages/kn_IN.mjs +0 -172
  562. package/esm2022/i18n/languages/ko_KR.mjs +0 -180
  563. package/esm2022/i18n/languages/ku_IQ.mjs +0 -156
  564. package/esm2022/i18n/languages/lv_LV.mjs +0 -180
  565. package/esm2022/i18n/languages/mn_MN.mjs +0 -180
  566. package/esm2022/i18n/languages/ms_MY.mjs +0 -180
  567. package/esm2022/i18n/languages/nb_NO.mjs +0 -180
  568. package/esm2022/i18n/languages/ne_NP.mjs +0 -180
  569. package/esm2022/i18n/languages/nl_BE.mjs +0 -180
  570. package/esm2022/i18n/languages/nl_NL.mjs +0 -180
  571. package/esm2022/i18n/languages/pl_PL.mjs +0 -180
  572. package/esm2022/i18n/languages/pt_BR.mjs +0 -180
  573. package/esm2022/i18n/languages/pt_PT.mjs +0 -180
  574. package/esm2022/i18n/languages/ro_RO.mjs +0 -180
  575. package/esm2022/i18n/languages/ru_RU.mjs +0 -180
  576. package/esm2022/i18n/languages/sk_SK.mjs +0 -171
  577. package/esm2022/i18n/languages/sl_SI.mjs +0 -172
  578. package/esm2022/i18n/languages/sr_RS.mjs +0 -172
  579. package/esm2022/i18n/languages/sv_SE.mjs +0 -172
  580. package/esm2022/i18n/languages/ta_IN.mjs +0 -180
  581. package/esm2022/i18n/languages/th_TH.mjs +0 -180
  582. package/esm2022/i18n/languages/tr_TR.mjs +0 -180
  583. package/esm2022/i18n/languages/uk_UA.mjs +0 -180
  584. package/esm2022/i18n/languages/vi_VN.mjs +0 -180
  585. package/esm2022/i18n/languages/zh_CN.mjs +0 -180
  586. package/esm2022/i18n/languages/zh_TW.mjs +0 -180
  587. package/esm2022/i18n/ng-nest-ui-i18n.mjs +0 -5
  588. package/esm2022/i18n/public-api.mjs +0 -57
  589. package/esm2022/icon/icon.component.mjs +0 -158
  590. package/esm2022/icon/icon.module.mjs +0 -16
  591. package/esm2022/icon/icon.property.mjs +0 -65
  592. package/esm2022/icon/icon.service.mjs +0 -89
  593. package/esm2022/icon/ng-nest-ui-icon.mjs +0 -5
  594. package/esm2022/icon/public-api.mjs +0 -5
  595. package/esm2022/image/image-group.component.mjs +0 -27
  596. package/esm2022/image/image-preview.component.mjs +0 -135
  597. package/esm2022/image/image.component.mjs +0 -75
  598. package/esm2022/image/image.module.mjs +0 -18
  599. package/esm2022/image/image.property.mjs +0 -196
  600. package/esm2022/image/ng-nest-ui-image.mjs +0 -5
  601. package/esm2022/image/public-api.mjs +0 -6
  602. package/esm2022/index.mjs +0 -106
  603. package/esm2022/inner/inner.component.mjs +0 -25
  604. package/esm2022/inner/inner.module.mjs +0 -16
  605. package/esm2022/inner/inner.property.mjs +0 -30
  606. package/esm2022/inner/ng-nest-ui-inner.mjs +0 -5
  607. package/esm2022/inner/public-api.mjs +0 -4
  608. package/esm2022/input/input-group.component.mjs +0 -16
  609. package/esm2022/input/input.component.mjs +0 -224
  610. package/esm2022/input/input.module.mjs +0 -17
  611. package/esm2022/input/input.property.mjs +0 -281
  612. package/esm2022/input/ng-nest-ui-input.mjs +0 -5
  613. package/esm2022/input/public-api.mjs +0 -5
  614. package/esm2022/input-number/input-number.component.mjs +0 -131
  615. package/esm2022/input-number/input-number.module.mjs +0 -16
  616. package/esm2022/input-number/input-number.property.mjs +0 -146
  617. package/esm2022/input-number/ng-nest-ui-input-number.mjs +0 -5
  618. package/esm2022/input-number/public-api.mjs +0 -4
  619. package/esm2022/keyword/keyword.directive.mjs +0 -61
  620. package/esm2022/keyword/keyword.module.mjs +0 -16
  621. package/esm2022/keyword/keyword.property.mjs +0 -45
  622. package/esm2022/keyword/ng-nest-ui-keyword.mjs +0 -5
  623. package/esm2022/keyword/public-api.mjs +0 -4
  624. package/esm2022/layout/col.component.mjs +0 -68
  625. package/esm2022/layout/layout.module.mjs +0 -17
  626. package/esm2022/layout/layout.property.mjs +0 -150
  627. package/esm2022/layout/ng-nest-ui-layout.mjs +0 -5
  628. package/esm2022/layout/public-api.mjs +0 -5
  629. package/esm2022/layout/row.component.mjs +0 -54
  630. package/esm2022/link/link.component.mjs +0 -28
  631. package/esm2022/link/link.module.mjs +0 -16
  632. package/esm2022/link/link.property.mjs +0 -109
  633. package/esm2022/link/ng-nest-ui-link.mjs +0 -5
  634. package/esm2022/link/public-api.mjs +0 -4
  635. package/esm2022/list/list-drop-group.directive.mjs +0 -39
  636. package/esm2022/list/list-option.component.mjs +0 -37
  637. package/esm2022/list/list.component.mjs +0 -409
  638. package/esm2022/list/list.module.mjs +0 -18
  639. package/esm2022/list/list.property.mjs +0 -273
  640. package/esm2022/list/ng-nest-ui-list.mjs +0 -5
  641. package/esm2022/list/public-api.mjs +0 -6
  642. package/esm2022/loading/loading.component.mjs +0 -77
  643. package/esm2022/loading/loading.module.mjs +0 -16
  644. package/esm2022/loading/loading.property.mjs +0 -70
  645. package/esm2022/loading/ng-nest-ui-loading.mjs +0 -5
  646. package/esm2022/loading/public-api.mjs +0 -4
  647. package/esm2022/menu/menu-node.component.mjs +0 -36
  648. package/esm2022/menu/menu.component.mjs +0 -171
  649. package/esm2022/menu/menu.module.mjs +0 -17
  650. package/esm2022/menu/menu.property.mjs +0 -107
  651. package/esm2022/menu/ng-nest-ui-menu.mjs +0 -5
  652. package/esm2022/menu/public-api.mjs +0 -5
  653. package/esm2022/message/message-ref.mjs +0 -13
  654. package/esm2022/message/message.component.mjs +0 -40
  655. package/esm2022/message/message.module.mjs +0 -15
  656. package/esm2022/message/message.property.mjs +0 -9
  657. package/esm2022/message/message.service.mjs +0 -146
  658. package/esm2022/message/ng-nest-ui-message.mjs +0 -5
  659. package/esm2022/message/public-api.mjs +0 -6
  660. package/esm2022/message-box/message-box.component.mjs +0 -122
  661. package/esm2022/message-box/message-box.module.mjs +0 -15
  662. package/esm2022/message-box/message-box.property.mjs +0 -8
  663. package/esm2022/message-box/message-box.service.mjs +0 -97
  664. package/esm2022/message-box/ng-nest-ui-message-box.mjs +0 -5
  665. package/esm2022/message-box/public-api.mjs +0 -5
  666. package/esm2022/ng-nest-ui.mjs +0 -5
  667. package/esm2022/notification/ng-nest-ui-notification.mjs +0 -5
  668. package/esm2022/notification/notification.component.mjs +0 -42
  669. package/esm2022/notification/notification.module.mjs +0 -15
  670. package/esm2022/notification/notification.property.mjs +0 -8
  671. package/esm2022/notification/notification.service.mjs +0 -107
  672. package/esm2022/notification/public-api.mjs +0 -5
  673. package/esm2022/outlet/ng-nest-ui-outlet.mjs +0 -5
  674. package/esm2022/outlet/outlet.directive.mjs +0 -72
  675. package/esm2022/outlet/outlet.module.mjs +0 -16
  676. package/esm2022/outlet/outlet.property.mjs +0 -7
  677. package/esm2022/outlet/public-api.mjs +0 -4
  678. package/esm2022/page-header/ng-nest-ui-page-header.mjs +0 -5
  679. package/esm2022/page-header/page-header.component.mjs +0 -24
  680. package/esm2022/page-header/page-header.module.mjs +0 -16
  681. package/esm2022/page-header/page-header.property.mjs +0 -50
  682. package/esm2022/page-header/public-api.mjs +0 -4
  683. package/esm2022/pagination/ng-nest-ui-pagination.mjs +0 -5
  684. package/esm2022/pagination/pagination.component.mjs +0 -205
  685. package/esm2022/pagination/pagination.module.mjs +0 -16
  686. package/esm2022/pagination/pagination.property.mjs +0 -149
  687. package/esm2022/pagination/public-api.mjs +0 -4
  688. package/esm2022/pattern/ng-nest-ui-pattern.mjs +0 -5
  689. package/esm2022/pattern/pattern.component.mjs +0 -18
  690. package/esm2022/pattern/pattern.module.mjs +0 -16
  691. package/esm2022/pattern/pattern.property.mjs +0 -7
  692. package/esm2022/pattern/public-api.mjs +0 -4
  693. package/esm2022/popconfirm/ng-nest-ui-popconfirm.mjs +0 -5
  694. package/esm2022/popconfirm/popconfirm.component.mjs +0 -59
  695. package/esm2022/popconfirm/popconfirm.module.mjs +0 -16
  696. package/esm2022/popconfirm/popconfirm.property.mjs +0 -100
  697. package/esm2022/popconfirm/public-api.mjs +0 -4
  698. package/esm2022/popover/ng-nest-ui-popover.mjs +0 -5
  699. package/esm2022/popover/popover-portal.component.mjs +0 -52
  700. package/esm2022/popover/popover.directive.mjs +0 -186
  701. package/esm2022/popover/popover.module.mjs +0 -16
  702. package/esm2022/popover/popover.property.mjs +0 -101
  703. package/esm2022/popover/public-api.mjs +0 -5
  704. package/esm2022/portal/ng-nest-ui-portal.mjs +0 -5
  705. package/esm2022/portal/portal.module.mjs +0 -16
  706. package/esm2022/portal/portal.property.mjs +0 -24
  707. package/esm2022/portal/portal.service.mjs +0 -190
  708. package/esm2022/portal/public-api.mjs +0 -4
  709. package/esm2022/progress/ng-nest-ui-progress.mjs +0 -5
  710. package/esm2022/progress/progress.component.mjs +0 -224
  711. package/esm2022/progress/progress.module.mjs +0 -16
  712. package/esm2022/progress/progress.property.mjs +0 -110
  713. package/esm2022/progress/public-api.mjs +0 -4
  714. package/esm2022/radio/ng-nest-ui-radio.mjs +0 -5
  715. package/esm2022/radio/public-api.mjs +0 -4
  716. package/esm2022/radio/radio.component.mjs +0 -77
  717. package/esm2022/radio/radio.module.mjs +0 -16
  718. package/esm2022/radio/radio.property.mjs +0 -121
  719. package/esm2022/rate/ng-nest-ui-rate.mjs +0 -5
  720. package/esm2022/rate/public-api.mjs +0 -4
  721. package/esm2022/rate/rate.component.mjs +0 -99
  722. package/esm2022/rate/rate.module.mjs +0 -16
  723. package/esm2022/rate/rate.property.mjs +0 -86
  724. package/esm2022/resizable/ng-nest-ui-resizable.mjs +0 -5
  725. package/esm2022/resizable/public-api.mjs +0 -4
  726. package/esm2022/resizable/resizable.directive.mjs +0 -264
  727. package/esm2022/resizable/resizable.module.mjs +0 -16
  728. package/esm2022/resizable/resizable.property.mjs +0 -64
  729. package/esm2022/result/ng-nest-ui-result.mjs +0 -5
  730. package/esm2022/result/public-api.mjs +0 -4
  731. package/esm2022/result/result.component.mjs +0 -25
  732. package/esm2022/result/result.module.mjs +0 -16
  733. package/esm2022/result/result.property.mjs +0 -45
  734. package/esm2022/ripple/ng-nest-ui-ripple.mjs +0 -5
  735. package/esm2022/ripple/public-api.mjs +0 -4
  736. package/esm2022/ripple/ripple.directive.mjs +0 -94
  737. package/esm2022/ripple/ripple.module.mjs +0 -16
  738. package/esm2022/ripple/ripple.property.mjs +0 -40
  739. package/esm2022/select/ng-nest-ui-select.mjs +0 -5
  740. package/esm2022/select/public-api.mjs +0 -5
  741. package/esm2022/select/select-portal.component.mjs +0 -103
  742. package/esm2022/select/select.component.mjs +0 -687
  743. package/esm2022/select/select.module.mjs +0 -16
  744. package/esm2022/select/select.property.mjs +0 -238
  745. package/esm2022/skeleton/ng-nest-ui-skeleton.mjs +0 -5
  746. package/esm2022/skeleton/public-api.mjs +0 -4
  747. package/esm2022/skeleton/skeleton.component.mjs +0 -25
  748. package/esm2022/skeleton/skeleton.module.mjs +0 -16
  749. package/esm2022/skeleton/skeleton.property.mjs +0 -55
  750. package/esm2022/slider/ng-nest-ui-slider.mjs +0 -5
  751. package/esm2022/slider/public-api.mjs +0 -4
  752. package/esm2022/slider/slider.component.mjs +0 -222
  753. package/esm2022/slider/slider.module.mjs +0 -17
  754. package/esm2022/slider/slider.property.mjs +0 -102
  755. package/esm2022/slider-select/ng-nest-ui-slider-select.mjs +0 -5
  756. package/esm2022/slider-select/public-api.mjs +0 -4
  757. package/esm2022/slider-select/slider-select.component.mjs +0 -368
  758. package/esm2022/slider-select/slider-select.module.mjs +0 -16
  759. package/esm2022/slider-select/slider-select.property.mjs +0 -136
  760. package/esm2022/statistic/countdown.component.mjs +0 -70
  761. package/esm2022/statistic/ng-nest-ui-statistic.mjs +0 -5
  762. package/esm2022/statistic/public-api.mjs +0 -5
  763. package/esm2022/statistic/statistic.component.mjs +0 -34
  764. package/esm2022/statistic/statistic.module.mjs +0 -17
  765. package/esm2022/statistic/statistic.property.mjs +0 -106
  766. package/esm2022/steps/ng-nest-ui-steps.mjs +0 -5
  767. package/esm2022/steps/public-api.mjs +0 -4
  768. package/esm2022/steps/steps.component.mjs +0 -49
  769. package/esm2022/steps/steps.module.mjs +0 -16
  770. package/esm2022/steps/steps.property.mjs +0 -60
  771. package/esm2022/switch/ng-nest-ui-switch.mjs +0 -5
  772. package/esm2022/switch/public-api.mjs +0 -4
  773. package/esm2022/switch/switch.component.mjs +0 -37
  774. package/esm2022/switch/switch.module.mjs +0 -16
  775. package/esm2022/switch/switch.property.mjs +0 -91
  776. package/esm2022/table/ng-nest-ui-table.mjs +0 -5
  777. package/esm2022/table/public-api.mjs +0 -7
  778. package/esm2022/table/table-body.component.mjs +0 -236
  779. package/esm2022/table/table-foot.component.mjs +0 -29
  780. package/esm2022/table/table-head.component.mjs +0 -169
  781. package/esm2022/table/table.component.mjs +0 -372
  782. package/esm2022/table/table.module.mjs +0 -19
  783. package/esm2022/table/table.property.mjs +0 -624
  784. package/esm2022/tabs/ng-nest-ui-tabs.mjs +0 -5
  785. package/esm2022/tabs/public-api.mjs +0 -7
  786. package/esm2022/tabs/tab-content.component.mjs +0 -21
  787. package/esm2022/tabs/tab-link.directive.mjs +0 -46
  788. package/esm2022/tabs/tab.component.mjs +0 -19
  789. package/esm2022/tabs/tabs.component.mjs +0 -143
  790. package/esm2022/tabs/tabs.module.mjs +0 -18
  791. package/esm2022/tabs/tabs.property.mjs +0 -141
  792. package/esm2022/tag/ng-nest-ui-tag.mjs +0 -5
  793. package/esm2022/tag/public-api.mjs +0 -4
  794. package/esm2022/tag/tag.component.mjs +0 -51
  795. package/esm2022/tag/tag.module.mjs +0 -16
  796. package/esm2022/tag/tag.property.mjs +0 -80
  797. package/esm2022/text-retract/ng-nest-ui-text-retract.mjs +0 -5
  798. package/esm2022/text-retract/public-api.mjs +0 -4
  799. package/esm2022/text-retract/text-retract.component.mjs +0 -42
  800. package/esm2022/text-retract/text-retract.module.mjs +0 -16
  801. package/esm2022/text-retract/text-retract.property.mjs +0 -35
  802. package/esm2022/textarea/ng-nest-ui-textarea.mjs +0 -5
  803. package/esm2022/textarea/public-api.mjs +0 -4
  804. package/esm2022/textarea/textarea.component.mjs +0 -68
  805. package/esm2022/textarea/textarea.module.mjs +0 -16
  806. package/esm2022/textarea/textarea.property.mjs +0 -126
  807. package/esm2022/theme/ng-nest-ui-theme.mjs +0 -5
  808. package/esm2022/theme/public-api.mjs +0 -4
  809. package/esm2022/theme/theme.component.mjs +0 -179
  810. package/esm2022/theme/theme.module.mjs +0 -16
  811. package/esm2022/theme/theme.property.mjs +0 -63
  812. package/esm2022/time-ago/ng-nest-ui-time-ago.mjs +0 -5
  813. package/esm2022/time-ago/public-api.mjs +0 -4
  814. package/esm2022/time-ago/time-ago.module.mjs +0 -16
  815. package/esm2022/time-ago/time-ago.pipe.mjs +0 -70
  816. package/esm2022/time-ago/time-ago.property.mjs +0 -7
  817. package/esm2022/time-picker/ng-nest-ui-time-picker.mjs +0 -5
  818. package/esm2022/time-picker/public-api.mjs +0 -6
  819. package/esm2022/time-picker/time-picker-frame.component.mjs +0 -312
  820. package/esm2022/time-picker/time-picker-portal.component.mjs +0 -78
  821. package/esm2022/time-picker/time-picker.component.mjs +0 -266
  822. package/esm2022/time-picker/time-picker.module.mjs +0 -17
  823. package/esm2022/time-picker/time-picker.property.mjs +0 -198
  824. package/esm2022/time-range/ng-nest-ui-time-range.mjs +0 -5
  825. package/esm2022/time-range/public-api.mjs +0 -4
  826. package/esm2022/time-range/time-range.module.mjs +0 -16
  827. package/esm2022/time-range/time-range.pipe.mjs +0 -44
  828. package/esm2022/time-range/time-range.property.mjs +0 -7
  829. package/esm2022/timeline/ng-nest-ui-timeline.mjs +0 -5
  830. package/esm2022/timeline/public-api.mjs +0 -4
  831. package/esm2022/timeline/timeline.component.mjs +0 -45
  832. package/esm2022/timeline/timeline.module.mjs +0 -16
  833. package/esm2022/timeline/timeline.property.mjs +0 -50
  834. package/esm2022/tooltip/ng-nest-ui-tooltip.mjs +0 -5
  835. package/esm2022/tooltip/public-api.mjs +0 -5
  836. package/esm2022/tooltip/tooltip-portal.component.mjs +0 -103
  837. package/esm2022/tooltip/tooltip.directive.mjs +0 -143
  838. package/esm2022/tooltip/tooltip.module.mjs +0 -16
  839. package/esm2022/tooltip/tooltip.property.mjs +0 -86
  840. package/esm2022/transfer/ng-nest-ui-transfer.mjs +0 -5
  841. package/esm2022/transfer/public-api.mjs +0 -4
  842. package/esm2022/transfer/transfer.component.mjs +0 -659
  843. package/esm2022/transfer/transfer.module.mjs +0 -16
  844. package/esm2022/transfer/transfer.property.mjs +0 -112
  845. package/esm2022/tree/ng-nest-ui-tree.mjs +0 -5
  846. package/esm2022/tree/public-api.mjs +0 -5
  847. package/esm2022/tree/tree-node.component.mjs +0 -297
  848. package/esm2022/tree/tree.component.mjs +0 -579
  849. package/esm2022/tree/tree.module.mjs +0 -17
  850. package/esm2022/tree/tree.property.mjs +0 -337
  851. package/esm2022/tree/tree.service.mjs +0 -102
  852. package/esm2022/tree-file/ng-nest-ui-tree-file.mjs +0 -5
  853. package/esm2022/tree-file/public-api.mjs +0 -4
  854. package/esm2022/tree-file/tree-file.component.mjs +0 -118
  855. package/esm2022/tree-file/tree-file.module.mjs +0 -16
  856. package/esm2022/tree-file/tree-file.property.mjs +0 -90
  857. package/esm2022/tree-select/ng-nest-ui-tree-select.mjs +0 -5
  858. package/esm2022/tree-select/public-api.mjs +0 -5
  859. package/esm2022/tree-select/tree-select-portal.component.mjs +0 -86
  860. package/esm2022/tree-select/tree-select.component.mjs +0 -659
  861. package/esm2022/tree-select/tree-select.module.mjs +0 -17
  862. package/esm2022/tree-select/tree-select.property.mjs +0 -237
  863. package/esm2022/typography/ng-nest-ui-typography.mjs +0 -5
  864. package/esm2022/typography/public-api.mjs +0 -4
  865. package/esm2022/typography/typography.component.mjs +0 -27
  866. package/esm2022/typography/typography.module.mjs +0 -16
  867. package/esm2022/typography/typography.property.mjs +0 -34
  868. package/esm2022/upload/ng-nest-ui-upload.mjs +0 -5
  869. package/esm2022/upload/public-api.mjs +0 -5
  870. package/esm2022/upload/upload-portal.component.mjs +0 -196
  871. package/esm2022/upload/upload.component.mjs +0 -233
  872. package/esm2022/upload/upload.module.mjs +0 -16
  873. package/esm2022/upload/upload.property.mjs +0 -118
  874. package/style/core/base.scss +0 -20
  875. package/style/core/cdk.scss +0 -72
  876. package/style/core/portal.scss +0 -5
  877. package/style/core/var.scss +0 -4
  878. package/style/mixins/index.scss +0 -9
  879. package/style/params/layout.scss +0 -73
  880. package/style/params/primary.scss +0 -208
  881. package/style/themes/default.scss +0 -1
@@ -1,687 +0,0 @@
1
- import { Subject, fromEvent, of } from 'rxjs';
2
- import { Component, ViewEncapsulation, ChangeDetectionStrategy, ChangeDetectorRef, Renderer2, ElementRef, ViewContainerRef, inject, viewChild, computed, signal, effect, HostBinding } from '@angular/core';
3
- import { XSelectProperty, XSelectPrefix } from './select.property';
4
- import { XIsEmpty, XIsObservable, XIsChange, XSetData, XIsObjectArray, XIsFunction, XIsArray, XIsString, XRemove, XResize, XComputed, XParents, XIsUndefined, XIsNull } from '@ng-nest/ui/core';
5
- import { XPortalService, XPortalConnectedPosition } from '@ng-nest/ui/portal';
6
- import { XInputComponent } from '@ng-nest/ui/input';
7
- import { XSelectPortalComponent } from './select-portal.component';
8
- import { Overlay } from '@angular/cdk/overlay';
9
- import { takeUntil, throttleTime, debounceTime, distinctUntilChanged, map, filter, delay } from 'rxjs/operators';
10
- import { DOWN_ARROW, UP_ARROW, ENTER, MAC_ENTER, ESCAPE, LEFT_ARROW, RIGHT_ARROW, TAB, BACKSPACE } from '@angular/cdk/keycodes';
11
- import { XValueAccessor } from '@ng-nest/ui/base-form';
12
- import { XI18nService, zh_CN } from '@ng-nest/ui/i18n';
13
- import { DOCUMENT } from '@angular/common';
14
- import { FormsModule, ReactiveFormsModule } from '@angular/forms';
15
- import { XTagComponent } from '@ng-nest/ui/tag';
16
- import { XOutletDirective } from '@ng-nest/ui/outlet';
17
- import { toSignal } from '@angular/core/rxjs-interop';
18
- import * as i0 from "@angular/core";
19
- import * as i1 from "@angular/forms";
20
- export class XSelectComponent extends XSelectProperty {
21
- writeValue(value) {
22
- if (this.multiple()) {
23
- if (XIsNull(value) || XIsUndefined(value)) {
24
- value = [];
25
- }
26
- if (!XIsArray(value)) {
27
- value = [value];
28
- }
29
- }
30
- this.value.set(value);
31
- this.setDisplayValue();
32
- }
33
- get getWidth() {
34
- return this.width();
35
- }
36
- constructor() {
37
- super();
38
- this.i18n = inject(XI18nService);
39
- this.document = inject(DOCUMENT);
40
- this.renderer = inject(Renderer2);
41
- this.cdr = inject(ChangeDetectorRef);
42
- this.portalService = inject(XPortalService);
43
- this.viewContainerRef = inject(ViewContainerRef);
44
- this.elementRef = inject(ElementRef);
45
- this.overlay = inject(Overlay);
46
- this.inputCom = viewChild.required('inputCom');
47
- this.select = viewChild.required('select');
48
- this.multipleValueTpl = viewChild.required('multipleValueTpl');
49
- this.multipleInput = viewChild('multipleInput');
50
- this.searchInput = viewChild('searchInput');
51
- this.valueTemplate = viewChild.required('valueTemplate');
52
- this.searchTemplate = viewChild.required('searchTemplate');
53
- this.getReadonly = computed(() => this.readonly() || !this.search());
54
- this.getMaxTagContent = computed(() => this.maxTagContent() || this.locale().maxTagContent);
55
- this.noPortalWidthPlacements = ['bottom', 'top'];
56
- this.hasPortalWidthPlacements = ['bottom-start', 'bottom-end', 'top-start', 'top-end'];
57
- this.enter = signal(false);
58
- this.showClearable = signal(false);
59
- this.displayValue = signal('');
60
- this.multipleSearchValue = signal('');
61
- this.nodes = signal([]);
62
- this.selectedNodes = signal([]);
63
- this.displayNodes = signal([]);
64
- this.displayMore = signal('');
65
- this.showDisplayMore = signal(false);
66
- this.searchNodes = signal([]);
67
- this.icon = signal('fto-chevron-down');
68
- this.iconSpin = signal(false);
69
- this.animating = signal(false);
70
- this.objectArray = signal(false);
71
- this.selectedSurplus = signal(0);
72
- this.selectedTotal = signal(0);
73
- this.composition = signal(false);
74
- this.locale = toSignal(this.i18n.localeChange.pipe(map((x) => x.select)), { initialValue: zh_CN.select });
75
- this.closeSubject = new Subject();
76
- this.keydownSubject = new Subject();
77
- this.inputChange = new Subject();
78
- this.multipleInputSizeChange = new Subject();
79
- this.unSubject = new Subject();
80
- this.valueTplComputed = computed(() => {
81
- if (this.nodeTpl()) {
82
- return this.nodeTpl();
83
- }
84
- if (this.valueTpl()) {
85
- return this.valueTpl();
86
- }
87
- if (this.multiple()) {
88
- return this.multipleValueTpl();
89
- }
90
- if (this.search()) {
91
- return this.searchTemplate();
92
- }
93
- return this.valueTemplate();
94
- });
95
- this.valueTplContextSignal = signal({ $node: null, $isValue: true });
96
- this.valueTplContextComputed = computed(() => {
97
- return this.valueTplContext() ? this.valueTplContext() : this.valueTplContextSignal();
98
- });
99
- this.placements = computed(() => {
100
- let placement = this.placement();
101
- if (this.portalWidth()) {
102
- if (placement === 'bottom') {
103
- placement = 'bottom-start';
104
- }
105
- return [placement, ...this.hasPortalWidthPlacements];
106
- }
107
- else {
108
- return [placement, ...this.noPortalWidthPlacements];
109
- }
110
- });
111
- this.realPlacement = signal(null);
112
- this.portalComponent = signal(null);
113
- this.portalOverlayRef = signal(null);
114
- this.inputChanged = toSignal(this.inputChange);
115
- this.portalData = computed(() => {
116
- const nodes = this.nodes();
117
- if (XIsFunction(this.data()) || XIsEmpty(this.inputChanged()))
118
- return nodes;
119
- return this.searchNodes();
120
- });
121
- this.allowAgian = signal(true);
122
- effect(() => this.portalComponent()?.setInput('data', this.portalData()));
123
- effect(() => this.portalComponent()?.setInput('value', this.value()));
124
- effect(() => this.portalComponent()?.setInput('placement', this.realPlacement()));
125
- effect(() => this.portalComponent()?.setInput('multiple', this.multiple() === true ? 0 : 1));
126
- effect(() => this.portalComponent()?.setInput('nodeTpl', this.nodeTpl()));
127
- effect(() => this.portalComponent()?.setInput('inputCom', this.inputCom()));
128
- effect(() => this.portalComponent()?.setInput('portalMaxHeight', this.portalMaxHeight()));
129
- effect(() => this.portalComponent()?.setInput('portalHeight', this.portalHeight()));
130
- effect(() => this.portalComponent()?.setInput('objectArray', this.objectArray()));
131
- effect(() => this.portalComponent()?.setInput('selectAll', this.selectAll()));
132
- effect(() => this.portalComponent()?.setInput('selectAllText', this.selectAllText()));
133
- effect(() => this.portalComponent()?.setInput('caseSensitive', this.caseSensitive()));
134
- effect(() => this.portalComponent()?.setInput('search', this.search()));
135
- effect(() => this.portalComponent()?.setInput('virtualScroll', this.virtualScroll()));
136
- effect(() => this.portalComponent()?.setInput('size', this.size()));
137
- effect(() => this.portalComponent()?.setInput('keywordText', this.inputChanged()));
138
- }
139
- ngOnInit() {
140
- this.setSubject();
141
- this.setParantScroll();
142
- }
143
- ngOnChanges(changes) {
144
- const { data } = changes;
145
- XIsChange(data) && this.setData();
146
- }
147
- ngAfterViewInit() {
148
- this.setPortal();
149
- if (this.multiple() && this.inputCom().inputValueRef()) {
150
- XResize(this.inputCom().inputValueRef()?.nativeElement)
151
- .pipe(debounceTime(30), takeUntil(this.unSubject))
152
- .subscribe((x) => {
153
- this.resizeObserver = x.resizeObserver;
154
- this.setMutipleInputSize();
155
- });
156
- }
157
- }
158
- ngOnDestroy() {
159
- this.unSubject.next();
160
- this.unSubject.complete();
161
- this.resizeObserver?.disconnect();
162
- }
163
- setData() {
164
- if (this.async())
165
- return;
166
- XSetData(this.data(), this.unSubject).subscribe((x) => {
167
- this.nodes.set(x);
168
- this.setDisplayValue();
169
- this.setPortal();
170
- });
171
- }
172
- setSubject() {
173
- this.closeSubject.pipe(takeUntil(this.unSubject)).subscribe(() => {
174
- this.closePortal();
175
- });
176
- this.inputChange
177
- .pipe(debounceTime(this.debounceTime()), distinctUntilChanged(), takeUntil(this.unSubject))
178
- .subscribe((x) => {
179
- this.modelChange(x);
180
- });
181
- this.keydownSubject.pipe(throttleTime(10), takeUntil(this.unSubject)).subscribe((x) => {
182
- const keyCode = x.keyCode;
183
- if (!this.portalAttached() &&
184
- [DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW, ENTER, MAC_ENTER, BACKSPACE].includes(keyCode)) {
185
- this.modelChange(this.displayValue());
186
- }
187
- if (this.portalAttached() && [ESCAPE].includes(keyCode)) {
188
- this.closeSubject.next();
189
- }
190
- });
191
- this.multipleInputSizeChange.pipe(distinctUntilChanged(), takeUntil(this.unSubject)).subscribe((x) => {
192
- if (this.multipleInput()) {
193
- const input = this.multipleInput()?.elementRef.nativeElement;
194
- this.renderer.setStyle(input, 'width', `${x}px`);
195
- }
196
- });
197
- }
198
- setMutipleInputSize() {
199
- const ivf = this.inputCom().inputValueRef()?.nativeElement;
200
- let { clientWidth, scrollHeight } = ivf;
201
- const len = ivf.children.length;
202
- let lastRowTagTop = -1;
203
- let lines = 1;
204
- let rowTagTop = -1;
205
- let lastRowTagsWidth = 0;
206
- let marginLeft = 0;
207
- let marginTop = 0;
208
- for (let i = len - 1; i >= 0; i--) {
209
- const ele = ivf.children[i];
210
- if (ele.tagName === 'X-TAG') {
211
- const { offsetTop, offsetWidth } = ele;
212
- const style = XComputed(ele);
213
- marginLeft = Number(style.marginLeft.replace('px', ''));
214
- marginTop = Number(style.marginTop.replace('px', ''));
215
- if (rowTagTop === -1) {
216
- rowTagTop = offsetTop;
217
- }
218
- else if (rowTagTop !== offsetTop) {
219
- lines++;
220
- rowTagTop = offsetTop;
221
- }
222
- if (lastRowTagTop === -1) {
223
- lastRowTagTop = offsetTop;
224
- }
225
- if (lastRowTagTop === offsetTop) {
226
- lastRowTagsWidth += offsetWidth + marginLeft;
227
- }
228
- }
229
- }
230
- const height = scrollHeight + (lines > 1 ? marginTop : 0);
231
- this.renderer.setStyle(this.inputCom().inputRef().nativeElement, 'height', `${height}px`);
232
- if (this.multipleInput()) {
233
- this.multipleInputSizeChange.next(clientWidth - lastRowTagsWidth - marginLeft);
234
- }
235
- this.portal?.overlayRef?.updatePosition();
236
- }
237
- menter() {
238
- if (this.disabledComputed() || !this.clearable() || this.iconSpin())
239
- return;
240
- this.enter.set(true);
241
- if ((!this.multiple() && !XIsEmpty(this.displayValue())) || (this.multiple() && !XIsEmpty(this.displayNodes()))) {
242
- this.icon.set('');
243
- this.showClearable.set(true);
244
- }
245
- }
246
- mleave() {
247
- if (this.disabledComputed() || !this.clearable() || this.iconSpin())
248
- return;
249
- this.enter.set(false);
250
- if (this.clearable()) {
251
- this.icon.set('fto-chevron-down');
252
- this.showClearable.set(false);
253
- }
254
- }
255
- modelChange(value) {
256
- if (XIsFunction(this.data())) {
257
- if (!this.portalAttached()) {
258
- this.showPortal();
259
- }
260
- this.icon.set('fto-loader');
261
- this.iconSpin.set(true);
262
- XSetData(this.data(), this.unSubject, true, value).subscribe((x) => {
263
- this.icon.set('');
264
- this.iconSpin.set(false);
265
- if (!this.enter() && this.clearable()) {
266
- this.showClearable.set(false);
267
- }
268
- this.nodes.set(x);
269
- });
270
- return;
271
- }
272
- if (this.nodes()) {
273
- if (!this.portalAttached()) {
274
- this.showPortal();
275
- }
276
- if (XIsEmpty(value)) {
277
- this.searchNodes.set(this.nodes());
278
- }
279
- else {
280
- this.setSearchNodes(value);
281
- }
282
- }
283
- }
284
- setSearchNodes(value) {
285
- if (this.caseSensitive()) {
286
- this.searchNodes.set(this.nodes().filter((x) => String(x.label).indexOf(String(value)) >= 0));
287
- }
288
- else {
289
- this.searchNodes.set(this.nodes().filter((x) => String(x.label).toLowerCase().indexOf(String(value).toLowerCase()) >= 0));
290
- }
291
- }
292
- setParantScroll() {
293
- if (!this.document)
294
- return;
295
- const parents = XParents(this.elementRef.nativeElement);
296
- let firstScroll = null;
297
- for (let item of parents) {
298
- if (item.clientHeight < item.scrollHeight) {
299
- firstScroll = item;
300
- break;
301
- }
302
- }
303
- if (firstScroll && firstScroll.tagName !== 'BODY') {
304
- fromEvent(firstScroll, 'scroll')
305
- .pipe(filter(() => this.portalAttached()), takeUntil(this.unSubject))
306
- .subscribe(() => {
307
- this.portal?.overlayRef?.updatePosition();
308
- const eract = this.elementRef.nativeElement.getBoundingClientRect();
309
- const frect = firstScroll.getBoundingClientRect();
310
- if (eract.top + eract.height - frect.top < 0 || eract.bottom > frect.bottom) {
311
- this.closeSubject.next();
312
- }
313
- });
314
- }
315
- }
316
- clearEmit() {
317
- this.value.update(() => {
318
- if (this.multiple()) {
319
- return [];
320
- }
321
- else {
322
- return '';
323
- }
324
- });
325
- this.displayValue.set('');
326
- this.multipleSearchValue.set('');
327
- this.selectedNodes.set([]);
328
- this.setDisplayNodes();
329
- this.valueTplContextSignal.update((x) => {
330
- x.$node = null;
331
- return { ...x };
332
- });
333
- this.mleave();
334
- this.inputChange.next('');
335
- if (this.onChange)
336
- this.onChange(this.value());
337
- }
338
- setDisplayValue(clickNode) {
339
- if (this.nodes().length > 0) {
340
- if (this.multiple()) {
341
- if (XIsEmpty(this.value())) {
342
- if (XIsUndefined(this.value()) || XIsNull(this.value()) || this.value() === '') {
343
- this.value.set([]);
344
- }
345
- else {
346
- this.value.update((x) => {
347
- x.splice(0, x.length);
348
- return x;
349
- });
350
- }
351
- this.displayValue.set('');
352
- this.selectedNodes.set([]);
353
- this.displayNodes.set([]);
354
- this.displayMore.set('');
355
- this.valueTplContextSignal.update((x) => {
356
- x.$node = null;
357
- return { ...x };
358
- });
359
- this.setDisplayNodes();
360
- }
361
- else {
362
- let ids = [];
363
- let selected = [];
364
- if (XIsObjectArray(this.value())) {
365
- this.objectArray.set(true);
366
- ids = this.value().map((x) => x.id);
367
- }
368
- else {
369
- this.objectArray.set(false);
370
- ids = this.value();
371
- }
372
- if (clickNode) {
373
- if (clickNode.selected) {
374
- this.selectedNodes.update((x) => {
375
- x.push(clickNode);
376
- return [...x];
377
- });
378
- }
379
- else {
380
- this.selectedNodes.update((x) => {
381
- XRemove(x, (y) => y.id === clickNode.id);
382
- return [...x];
383
- });
384
- }
385
- }
386
- else {
387
- for (let id of ids) {
388
- let node = this.nodes().find((x) => x.id === id);
389
- if (node)
390
- selected.push(node);
391
- }
392
- this.selectedNodes.set(selected);
393
- }
394
- this.setDisplayNodes();
395
- this.displayValue.set(this.selectedNodes()
396
- .map((x) => x.label)
397
- .join(','));
398
- this.valueTplContextSignal.update((x) => {
399
- x.$node = [...this.selectedNodes()];
400
- return { ...x };
401
- });
402
- }
403
- }
404
- else {
405
- let node = this.nodes().find((x) => x.id === this.value());
406
- if (node) {
407
- this.displayValue.set(node.label);
408
- this.valueTplContextSignal.update((x) => {
409
- x.$node = node;
410
- return { ...x };
411
- });
412
- }
413
- else {
414
- this.displayValue.set('');
415
- this.valueTplContextSignal.update((x) => {
416
- x.$node = null;
417
- return { ...x };
418
- });
419
- }
420
- }
421
- }
422
- }
423
- closeNode(event, node, index) {
424
- let inx = -1;
425
- if (XIsObjectArray(this.value())) {
426
- inx = this.value().findIndex((y) => y.id === node.id);
427
- }
428
- else {
429
- inx = this.value().findIndex((y) => y === node.id);
430
- }
431
- if (inx >= 0) {
432
- this.value.update((x) => {
433
- x.splice(inx, 1);
434
- return x;
435
- });
436
- if (this.onChange)
437
- this.onChange(this.value());
438
- this.selectedNodes.update((x) => {
439
- x.splice(index, 1);
440
- return x;
441
- });
442
- this.setDisplayNodes();
443
- }
444
- event.stopPropagation();
445
- }
446
- setDisplayNodes() {
447
- if (!this.multiple())
448
- return;
449
- const maxlen = this.selectedNodes().length;
450
- let len = 0;
451
- if (this.maxTagCount() >= 0) {
452
- len = maxlen > this.maxTagCount() ? this.maxTagCount() : maxlen;
453
- }
454
- else {
455
- len = maxlen;
456
- }
457
- let more = maxlen - len;
458
- more = more < 0 ? 0 : more;
459
- this.displayNodes.set(this.selectedNodes().slice(0, len));
460
- this.showDisplayMore.set(more > 0);
461
- if (XIsString(this.getMaxTagContent())) {
462
- this.displayMore.set(more > 0 ? this.getMaxTagContent().replace(/\{\{surplus\}\}/g, `${more}`) : '');
463
- }
464
- else {
465
- this.selectedSurplus.set(more);
466
- this.selectedTotal.set(maxlen);
467
- }
468
- setTimeout(() => this.setMutipleInputSize());
469
- }
470
- portalAttached() {
471
- return this.portal?.overlayRef?.hasAttached();
472
- }
473
- closePortal() {
474
- if (this.portalAttached()) {
475
- this.portal?.overlayRef?.detach();
476
- this.active.set(false);
477
- this.multipleSearchValue.set('');
478
- this.allowAgian.set(false);
479
- of(true)
480
- .pipe(delay(200))
481
- .subscribe(() => this.allowAgian.set(true));
482
- return true;
483
- }
484
- return false;
485
- }
486
- destroyPortal() {
487
- this.portal?.overlayRef?.dispose();
488
- }
489
- showPortal(click = false) {
490
- if (this.disabledComputed() || !this.allowAgian() || this.iconSpin() || this.animating())
491
- return;
492
- this.active.set(true);
493
- if ((this.async() && XIsObservable(this.data()) && this.nodes().length === 0) || XIsFunction(this.data())) {
494
- this.icon.set('fto-loader');
495
- this.iconSpin.set(true);
496
- XSetData(this.data(), this.unSubject, true, click ? '' : this.displayValue()).subscribe((x) => {
497
- this.icon.set('fto-chevron-down');
498
- this.iconSpin.set(false);
499
- if (!this.enter() && this.clearable()) {
500
- this.showClearable.set(false);
501
- }
502
- this.nodes.set(x);
503
- if (!this.search())
504
- this.setDisplayValue();
505
- this.createPortal();
506
- });
507
- }
508
- else {
509
- this.createPortal();
510
- }
511
- if (this.search() && this.multiple()) {
512
- this.multipleInput()?.inputFocus();
513
- }
514
- else if (this.search() && !this.multiple()) {
515
- this.searchInput()?.inputFocus();
516
- }
517
- else {
518
- this.inputCom().inputFocus('focus');
519
- }
520
- }
521
- createPortal() {
522
- this.nodes.update((nodes) => {
523
- nodes.filter((x) => x.selected).map((x) => (x.selected = false));
524
- return [...nodes];
525
- });
526
- const box = this.inputCom().inputRef().nativeElement.getBoundingClientRect();
527
- const config = {
528
- backdropClass: '',
529
- width: this.portalWidth() || box.width,
530
- positionStrategy: this.setPlacement(),
531
- scrollStrategy: this.overlay.scrollStrategies.reposition()
532
- };
533
- this.setPosition(config);
534
- this.portal = this.portalService.attach({
535
- content: XSelectPortalComponent,
536
- viewContainerRef: this.viewContainerRef,
537
- overlayConfig: config
538
- });
539
- this.portal.overlayRef
540
- ?.outsidePointerEvents()
541
- .pipe(takeUntil(this.unSubject))
542
- .subscribe(() => {
543
- this.setDisplayValue();
544
- this.closeSubject.next();
545
- });
546
- this.setInstance();
547
- }
548
- setPosition(config) {
549
- let position = config.positionStrategy;
550
- position.positionChanges.pipe(takeUntil(this.unSubject)).subscribe((pos) => {
551
- const place = XPortalConnectedPosition.get(pos.connectionPair);
552
- if (place !== this.realPlacement()) {
553
- this.realPlacement.set(place);
554
- this.portalOverlayRef()?.updatePosition();
555
- }
556
- });
557
- }
558
- setInstance() {
559
- let { componentRef, overlayRef } = this.portal;
560
- if (!componentRef || !overlayRef)
561
- return;
562
- this.portalComponent.set(componentRef);
563
- this.portalOverlayRef.set(overlayRef);
564
- this.realPlacement.set(this.placement());
565
- Object.assign(componentRef.instance, {
566
- closeSubject: this.closeSubject,
567
- keydownSubject: this.keydownSubject
568
- });
569
- const { nodeClick, animating } = componentRef.instance;
570
- nodeClick.subscribe((x) => this.nodeClick(x.node, x.value));
571
- animating.subscribe((ing) => this.animating.set(ing));
572
- }
573
- nodeClick(node, value) {
574
- if (this.multiple()) {
575
- if (node) {
576
- if (XIsObjectArray(value)) {
577
- if (node.selected) {
578
- this.value.update((x) => {
579
- x.push(node);
580
- return x;
581
- });
582
- }
583
- else {
584
- let inx = this.value().findIndex((x) => x.id === node.id);
585
- this.value.update((x) => {
586
- x.splice(inx, 1);
587
- return x;
588
- });
589
- }
590
- }
591
- else if (XIsArray(value)) {
592
- if (node.selected) {
593
- this.value.update((x) => {
594
- x.push(node.id);
595
- return x;
596
- });
597
- }
598
- else {
599
- this.value.update((x) => {
600
- x.splice(x.indexOf(node.id), 1);
601
- return x;
602
- });
603
- }
604
- }
605
- }
606
- else {
607
- this.value.update((x) => {
608
- x.splice(0, x.length);
609
- x.push(...value);
610
- return x;
611
- });
612
- }
613
- if (this.multipleInput()) {
614
- const input = this.multipleInput().elementRef.nativeElement;
615
- this.renderer.setStyle(input, 'width', '2rem');
616
- }
617
- if (this.search() && this.multipleSearchValue() !== '') {
618
- this.multipleSearchValue.set('');
619
- this.inputChange.next('');
620
- }
621
- this.setDisplayValue(node);
622
- }
623
- else {
624
- node = node;
625
- this.displayValue.set(node.label);
626
- this.valueTplContextSignal.update((x) => {
627
- x.$node = node;
628
- return { ...x };
629
- });
630
- this.value.set(node.id);
631
- if (this.search()) {
632
- this.inputChange.next('');
633
- }
634
- this.closeSubject.next();
635
- }
636
- if (this.search() && this.multiple() && this.multipleInput()) {
637
- this.multipleInput().inputFocus();
638
- }
639
- else {
640
- this.inputCom().inputFocus('focus');
641
- }
642
- if (this.onChange)
643
- this.onChange(this.value());
644
- this.formControlValidator();
645
- }
646
- selectAllNodes(value) {
647
- this.value.set(value);
648
- }
649
- setPlacement() {
650
- return this.portalService.setPlacement({
651
- elementRef: this.inputCom().inputRef(),
652
- placement: this.placements(),
653
- transformOriginOn: 'x-select-portal'
654
- });
655
- }
656
- setPortal() {
657
- this.portalAttached() && this.portal?.overlayRef?.updatePositionStrategy(this.setPlacement());
658
- }
659
- onKeydown($event) {
660
- this.keydownSubject.next($event);
661
- if ($event.keyCode !== TAB && !this.search) {
662
- $event.preventDefault();
663
- }
664
- }
665
- onFocus(_event) {
666
- if (this.search() && this.multiple() && this.multipleInput()) {
667
- this.multipleInput().inputFocus();
668
- }
669
- else {
670
- this.inputCom().inputFocus('focus');
671
- }
672
- }
673
- onInput(_event) {
674
- this.formControlValidator();
675
- setTimeout(() => this.inputChange.next(this.multiple() ? this.multipleSearchValue() : this.displayValue()));
676
- }
677
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: XSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
678
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: XSelectComponent, isStandalone: true, selector: "x-select", host: { properties: { "style.width": "this.getWidth" } }, providers: [XValueAccessor(XSelectComponent)], viewQueries: [{ propertyName: "inputCom", first: true, predicate: ["inputCom"], descendants: true, isSignal: true }, { propertyName: "select", first: true, predicate: ["select"], descendants: true, isSignal: true }, { propertyName: "multipleValueTpl", first: true, predicate: ["multipleValueTpl"], descendants: true, isSignal: true }, { propertyName: "multipleInput", first: true, predicate: ["multipleInput"], descendants: true, isSignal: true }, { propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true, isSignal: true }, { propertyName: "valueTemplate", first: true, predicate: ["valueTemplate"], descendants: true, isSignal: true }, { propertyName: "searchTemplate", first: true, predicate: ["searchTemplate"], descendants: true, isSignal: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\r\n #select\r\n class=\"x-select\"\r\n [class.x-select-multiple]=\"multiple()\"\r\n [class.x-select-search-single]=\"search() && !multiple()\"\r\n>\r\n <div class=\"x-select-row\">\r\n <x-input\r\n #inputCom\r\n type=\"text\"\r\n [label]=\"label()\"\r\n [labelWidth]=\"labelWidth()\"\r\n [labelAlign]=\"labelAlign()\"\r\n [width]=\"width()\"\r\n [justify]=\"justify()\"\r\n [align]=\"align()\"\r\n [direction]=\"direction()\"\r\n [disabled]=\"disabledComputed()\"\r\n [required]=\"requiredComputed()\"\r\n [validator]=\"validatorComputed()!\"\r\n [inputValidator]=\"inputValidator()\"\r\n [icon]=\"icon()\"\r\n [iconSpin]=\"iconSpin()\"\r\n [placeholder]=\"placeholder()\"\r\n [readonly]=\"getReadonly()\"\r\n [clearable]=\"showClearable()\"\r\n [(ngModel)]=\"value\"\r\n [valueTpl]=\"valueTplComputed()\"\r\n [valueTplContext]=\"valueTplContextComputed()\"\r\n [size]=\"size()\"\r\n [bordered]=\"bordered()\"\r\n [before]=\"before()\"\r\n [after]=\"after()\"\r\n [pattern]=\"patternComputed()\"\r\n [message]=\"messageComputed()\"\r\n [pointer]=\"pointer()\"\r\n [(active)]=\"active\"\r\n (clearEmit)=\"clearEmit()\"\r\n (xKeydown)=\"onKeydown($event)\"\r\n (xInput)=\"onInput($event)\"\r\n (xFocus)=\"onFocus($event)\"\r\n (xClick)=\"showPortal(true)\"\r\n (xMouseenter)=\"menter()\"\r\n (xMouseleave)=\"mleave()\"\r\n (xComposition)=\"composition.set($event)\"\r\n ></x-input>\r\n </div>\r\n</div>\r\n\r\n<ng-template #valueTemplate>{{ displayValue() }}</ng-template>\r\n\r\n<ng-template #searchTemplate>\r\n <x-input\r\n #searchInput\r\n [bordered]=\"false\"\r\n [size]=\"size()\"\r\n [(ngModel)]=\"displayValue\"\r\n (xInput)=\"onInput($event)\"\r\n (xKeydown)=\"onKeydown($event)\"\r\n ></x-input>\r\n</ng-template>\r\n\r\n<ng-template #multipleValueTpl>\r\n @for (node of displayNodes(); track node.id; let i = $index) {\r\n <x-tag\r\n [@.disabled]=\"true\"\r\n [bordered]=\"false\"\r\n [closable]=\"!disabledComputed()\"\r\n [type]=\"'info'\"\r\n (close)=\"closeNode($event, node, i)\"\r\n [size]=\"size()\"\r\n >{{ node.label }}</x-tag\r\n >\r\n }\r\n @if (showDisplayMore()) {\r\n <x-tag [@.disabled]=\"true\" [bordered]=\"false\" [type]=\"'info'\" [size]=\"size()\">\r\n <ng-container *xOutlet=\"getMaxTagContent(); context: { $surplus: selectedSurplus(), $total: selectedTotal() }\">{{\r\n displayMore()\r\n }}</ng-container>\r\n </x-tag>\r\n }\r\n\r\n @if (search()) {\r\n <x-input\r\n #multipleInput\r\n [bordered]=\"false\"\r\n [size]=\"size()\"\r\n [ngModel]=\"multipleSearchValue()\"\r\n (ngModelChange)=\"multipleSearchValue.set($event)\"\r\n (xInput)=\"onInput($event)\"\r\n (xKeydown)=\"onKeydown($event)\"\r\n ></x-input>\r\n }\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";x-select{display:inline-block;width:12rem}.x-select{margin:0;padding:0}.x-select{width:100%}.x-select x-input{width:100%}.x-select-multiple .x-input-value-template-value,.x-select-search-single .x-input-value-template-value{display:flex;align-items:center;margin-bottom:.125rem;flex-wrap:wrap;width:initial;height:initial!important;left:.125rem!important}.x-select-multiple .x-input-value-template-value>x-tag,.x-select-search-single .x-input-value-template-value>x-tag{display:inline-flex;margin-left:.0625rem;margin-top:.125rem}.x-select-multiple .x-input-value-template-value>x-tag .x-tag-big,.x-select-search-single .x-input-value-template-value>x-tag .x-tag-big{height:var(--x-height-large);line-height:var(--x-height-large);padding:0 var(--x-padding-large)}.x-select-multiple .x-input-value-template-value>x-tag .x-tag-big>.x-icon,.x-select-search-single .x-input-value-template-value>x-tag .x-tag-big>.x-icon{right:calc(-var(--x-padding-large)/2)}.x-select-multiple .x-input-value-template-value>x-tag .x-tag-large,.x-select-search-single .x-input-value-template-value>x-tag .x-tag-large{height:var(--x-height-medium);line-height:var(--x-height-medium);padding:0 var(--x-padding-medium)}.x-select-multiple .x-input-value-template-value>x-tag .x-tag-large>.x-icon,.x-select-search-single .x-input-value-template-value>x-tag .x-tag-large>.x-icon{right:calc(-var(--x-padding-medium)/2)}.x-select-multiple .x-input-value-template-value>x-tag .x-tag-medium,.x-select-search-single .x-input-value-template-value>x-tag .x-tag-medium{height:var(--x-height-small);line-height:var(--x-height-small);padding:0 var(--x-padding-small)}.x-select-multiple .x-input-value-template-value>x-tag .x-tag-medium>.x-icon,.x-select-search-single .x-input-value-template-value>x-tag .x-tag-medium>.x-icon{right:calc(-var(--x-padding-small)/2)}.x-select-multiple .x-input-value-template-value>x-tag .x-tag-small,.x-select-search-single .x-input-value-template-value>x-tag .x-tag-small{height:var(--x-height-mini);line-height:var(--x-height-mini);padding:0 var(--x-padding-mini)}.x-select-multiple .x-input-value-template-value>x-tag .x-tag-small>.x-icon,.x-select-search-single .x-input-value-template-value>x-tag .x-tag-small>.x-icon{right:calc(-var(--x-padding-mini)/2)}.x-select-multiple .x-input-value-template-value>x-tag .x-tag-mini,.x-select-search-single .x-input-value-template-value>x-tag .x-tag-mini{height:1.125rem;line-height:1.125rem;padding:0 .125rem}.x-select-multiple .x-input-value-template-value>x-tag .x-tag-mini>.x-icon,.x-select-search-single .x-input-value-template-value>x-tag .x-tag-mini>.x-icon{right:-.0625rem}.x-select-multiple .x-input-value-template-value>x-input,.x-select-search-single .x-input-value-template-value>x-input{margin-top:.125rem;width:5rem}.x-select-multiple .x-input-value-template-value>x-input .x-input-big>.x-input-row>.x-input-input>input,.x-select-multiple .x-input-value-template-value>x-input .x-input-big>.x-input-row>.x-input-input>.x-input-row-before:not(.x-input-row-before-template),.x-select-multiple .x-input-value-template-value>x-input .x-input-big>.x-input-row>.x-input-input>.x-input-row-after:not(.x-input-row-after-template),.x-select-multiple .x-input-value-template-value>x-input .x-input-big>.x-input-row>.x-input-input>.x-input-value-template-value,.x-select-search-single .x-input-value-template-value>x-input .x-input-big>.x-input-row>.x-input-input>input,.x-select-search-single .x-input-value-template-value>x-input .x-input-big>.x-input-row>.x-input-input>.x-input-row-before:not(.x-input-row-before-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-big>.x-input-row>.x-input-input>.x-input-row-after:not(.x-input-row-after-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-big>.x-input-row>.x-input-input>.x-input-value-template-value{height:var(--x-height-large);line-height:var(--x-height-large);padding:0 var(--x-padding-large)}.x-select-multiple .x-input-value-template-value>x-input .x-input-big>.x-input-row>.x-input-input>.x-input-max-length,.x-select-search-single .x-input-value-template-value>x-input .x-input-big>.x-input-row>.x-input-input>.x-input-max-length{height:var(--x-height-large);line-height:var(--x-height-large)}.x-select-multiple .x-input-value-template-value>x-input .x-input-big>.x-input-row>.x-input-row-before:not(.x-input-row-before-template),.x-select-multiple .x-input-value-template-value>x-input .x-input-big>.x-input-row>.x-input-row-after:not(.x-input-row-after-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-big>.x-input-row>.x-input-row-before:not(.x-input-row-before-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-big>.x-input-row>.x-input-row-after:not(.x-input-row-after-template){height:var(--x-height-large);line-height:var(--x-height-large);padding:0 var(--x-padding-large)}.x-select-multiple .x-input-value-template-value>x-input .x-input-big>label,.x-select-search-single .x-input-value-template-value>x-input .x-input-big>label{height:var(--x-height-large);line-height:var(--x-height-large)}.x-select-multiple .x-input-value-template-value>x-input .x-input-large>.x-input-row>.x-input-input>input,.x-select-multiple .x-input-value-template-value>x-input .x-input-large>.x-input-row>.x-input-input>.x-input-row-before:not(.x-input-row-before-template),.x-select-multiple .x-input-value-template-value>x-input .x-input-large>.x-input-row>.x-input-input>.x-input-row-after:not(.x-input-row-after-template),.x-select-multiple .x-input-value-template-value>x-input .x-input-large>.x-input-row>.x-input-input>.x-input-value-template-value,.x-select-search-single .x-input-value-template-value>x-input .x-input-large>.x-input-row>.x-input-input>input,.x-select-search-single .x-input-value-template-value>x-input .x-input-large>.x-input-row>.x-input-input>.x-input-row-before:not(.x-input-row-before-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-large>.x-input-row>.x-input-input>.x-input-row-after:not(.x-input-row-after-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-large>.x-input-row>.x-input-input>.x-input-value-template-value{height:var(--x-height-medium);line-height:var(--x-height-medium);padding:0 var(--x-padding-medium)}.x-select-multiple .x-input-value-template-value>x-input .x-input-large>.x-input-row>.x-input-input>.x-input-max-length,.x-select-search-single .x-input-value-template-value>x-input .x-input-large>.x-input-row>.x-input-input>.x-input-max-length{height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-select-multiple .x-input-value-template-value>x-input .x-input-large>.x-input-row>.x-input-row-before:not(.x-input-row-before-template),.x-select-multiple .x-input-value-template-value>x-input .x-input-large>.x-input-row>.x-input-row-after:not(.x-input-row-after-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-large>.x-input-row>.x-input-row-before:not(.x-input-row-before-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-large>.x-input-row>.x-input-row-after:not(.x-input-row-after-template){height:var(--x-height-medium);line-height:var(--x-height-medium);padding:0 var(--x-padding-medium)}.x-select-multiple .x-input-value-template-value>x-input .x-input-large>label,.x-select-search-single .x-input-value-template-value>x-input .x-input-large>label{height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-select-multiple .x-input-value-template-value>x-input .x-input-medium>.x-input-row>.x-input-input>input,.x-select-multiple .x-input-value-template-value>x-input .x-input-medium>.x-input-row>.x-input-input>.x-input-row-before:not(.x-input-row-before-template),.x-select-multiple .x-input-value-template-value>x-input .x-input-medium>.x-input-row>.x-input-input>.x-input-row-after:not(.x-input-row-after-template),.x-select-multiple .x-input-value-template-value>x-input .x-input-medium>.x-input-row>.x-input-input>.x-input-value-template-value,.x-select-search-single .x-input-value-template-value>x-input .x-input-medium>.x-input-row>.x-input-input>input,.x-select-search-single .x-input-value-template-value>x-input .x-input-medium>.x-input-row>.x-input-input>.x-input-row-before:not(.x-input-row-before-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-medium>.x-input-row>.x-input-input>.x-input-row-after:not(.x-input-row-after-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-medium>.x-input-row>.x-input-input>.x-input-value-template-value{height:var(--x-height-small);line-height:var(--x-height-small);padding:0 var(--x-padding-small)}.x-select-multiple .x-input-value-template-value>x-input .x-input-medium>.x-input-row>.x-input-input>.x-input-max-length,.x-select-search-single .x-input-value-template-value>x-input .x-input-medium>.x-input-row>.x-input-input>.x-input-max-length{height:var(--x-height-small);line-height:var(--x-height-small)}.x-select-multiple .x-input-value-template-value>x-input .x-input-medium>.x-input-row>.x-input-row-before:not(.x-input-row-before-template),.x-select-multiple .x-input-value-template-value>x-input .x-input-medium>.x-input-row>.x-input-row-after:not(.x-input-row-after-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-medium>.x-input-row>.x-input-row-before:not(.x-input-row-before-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-medium>.x-input-row>.x-input-row-after:not(.x-input-row-after-template){height:var(--x-height-small);line-height:var(--x-height-small);padding:0 var(--x-padding-small)}.x-select-multiple .x-input-value-template-value>x-input .x-input-medium>label,.x-select-search-single .x-input-value-template-value>x-input .x-input-medium>label{height:var(--x-height-small);line-height:var(--x-height-small)}.x-select-multiple .x-input-value-template-value>x-input .x-input-small>.x-input-row>.x-input-input>input,.x-select-multiple .x-input-value-template-value>x-input .x-input-small>.x-input-row>.x-input-input>.x-input-row-before:not(.x-input-row-before-template),.x-select-multiple .x-input-value-template-value>x-input .x-input-small>.x-input-row>.x-input-input>.x-input-row-after:not(.x-input-row-after-template),.x-select-multiple .x-input-value-template-value>x-input .x-input-small>.x-input-row>.x-input-input>.x-input-value-template-value,.x-select-search-single .x-input-value-template-value>x-input .x-input-small>.x-input-row>.x-input-input>input,.x-select-search-single .x-input-value-template-value>x-input .x-input-small>.x-input-row>.x-input-input>.x-input-row-before:not(.x-input-row-before-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-small>.x-input-row>.x-input-input>.x-input-row-after:not(.x-input-row-after-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-small>.x-input-row>.x-input-input>.x-input-value-template-value{height:var(--x-height-mini);line-height:var(--x-height-mini);padding:0 var(--x-padding-mini)}.x-select-multiple .x-input-value-template-value>x-input .x-input-small>.x-input-row>.x-input-input>.x-input-max-length,.x-select-search-single .x-input-value-template-value>x-input .x-input-small>.x-input-row>.x-input-input>.x-input-max-length{height:var(--x-height-mini);line-height:var(--x-height-mini)}.x-select-multiple .x-input-value-template-value>x-input .x-input-small>.x-input-row>.x-input-row-before:not(.x-input-row-before-template),.x-select-multiple .x-input-value-template-value>x-input .x-input-small>.x-input-row>.x-input-row-after:not(.x-input-row-after-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-small>.x-input-row>.x-input-row-before:not(.x-input-row-before-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-small>.x-input-row>.x-input-row-after:not(.x-input-row-after-template){height:var(--x-height-mini);line-height:var(--x-height-mini);padding:0 var(--x-padding-mini)}.x-select-multiple .x-input-value-template-value>x-input .x-input-small>label,.x-select-search-single .x-input-value-template-value>x-input .x-input-small>label{height:var(--x-height-mini);line-height:var(--x-height-mini)}.x-select-multiple .x-input-value-template-value>x-input .x-input-mini>.x-input-row>.x-input-input>input,.x-select-multiple .x-input-value-template-value>x-input .x-input-mini>.x-input-row>.x-input-input>.x-input-row-before:not(.x-input-row-before-template),.x-select-multiple .x-input-value-template-value>x-input .x-input-mini>.x-input-row>.x-input-input>.x-input-row-after:not(.x-input-row-after-template),.x-select-multiple .x-input-value-template-value>x-input .x-input-mini>.x-input-row>.x-input-input>.x-input-value-template-value,.x-select-search-single .x-input-value-template-value>x-input .x-input-mini>.x-input-row>.x-input-input>input,.x-select-search-single .x-input-value-template-value>x-input .x-input-mini>.x-input-row>.x-input-input>.x-input-row-before:not(.x-input-row-before-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-mini>.x-input-row>.x-input-input>.x-input-row-after:not(.x-input-row-after-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-mini>.x-input-row>.x-input-input>.x-input-value-template-value{height:1.125rem;line-height:1.125rem;padding:0 .125rem}.x-select-multiple .x-input-value-template-value>x-input .x-input-mini>.x-input-row>.x-input-input>.x-input-max-length,.x-select-search-single .x-input-value-template-value>x-input .x-input-mini>.x-input-row>.x-input-input>.x-input-max-length{height:1.125rem;line-height:1.125rem}.x-select-multiple .x-input-value-template-value>x-input .x-input-mini>.x-input-row>.x-input-row-before:not(.x-input-row-before-template),.x-select-multiple .x-input-value-template-value>x-input .x-input-mini>.x-input-row>.x-input-row-after:not(.x-input-row-after-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-mini>.x-input-row>.x-input-row-before:not(.x-input-row-before-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-mini>.x-input-row>.x-input-row-after:not(.x-input-row-after-template){height:1.125rem;line-height:1.125rem;padding:0 .125rem}.x-select-multiple .x-input-value-template-value>x-input .x-input-mini>label,.x-select-search-single .x-input-value-template-value>x-input .x-input-mini>label{height:1.125rem;line-height:1.125rem}.x-select-multiple .x-input-value-template-value>x-input .x-input-row>.x-input-input>input,.x-select-search-single .x-input-value-template-value>x-input .x-input-row>.x-input-input>input{background-color:transparent}.x-select-search-single .x-input-value-template-value{left:.75rem!important}.x-select-search-single .x-input-value-template-value>x-input{width:100%}.x-select-search-single .x-input-value-template-value>x-input .x-input-row>.x-input-input>input{padding:0!important}.x-select-portal{color:var(--x-text);width:100%;border-radius:var(--x-border-small-radius);box-shadow:var(--x-box-shadow);position:relative;display:flex;background-color:var(--x-background-100);overflow:hidden auto;max-height:calc(calc(var(--x-font-size) + .875rem) * 6 + var(--x-border-width) * 7)}.x-select-portal-virtualScroll{overflow-y:hidden}.x-select-portal-virtualScroll .x-list-portal{padding:0}.x-select-portal-virtualScroll .x-list-portal .cdk-virtual-scroll-content-wrapper{padding:.125rem .25rem}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: XTagComponent, selector: "x-tag" }, { kind: "component", type: XInputComponent, selector: "x-input" }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
679
- }
680
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: XSelectComponent, decorators: [{
681
- type: Component,
682
- args: [{ selector: `${XSelectPrefix}`, standalone: true, imports: [FormsModule, ReactiveFormsModule, XTagComponent, XInputComponent, XOutletDirective], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XSelectComponent)], template: "<div\r\n #select\r\n class=\"x-select\"\r\n [class.x-select-multiple]=\"multiple()\"\r\n [class.x-select-search-single]=\"search() && !multiple()\"\r\n>\r\n <div class=\"x-select-row\">\r\n <x-input\r\n #inputCom\r\n type=\"text\"\r\n [label]=\"label()\"\r\n [labelWidth]=\"labelWidth()\"\r\n [labelAlign]=\"labelAlign()\"\r\n [width]=\"width()\"\r\n [justify]=\"justify()\"\r\n [align]=\"align()\"\r\n [direction]=\"direction()\"\r\n [disabled]=\"disabledComputed()\"\r\n [required]=\"requiredComputed()\"\r\n [validator]=\"validatorComputed()!\"\r\n [inputValidator]=\"inputValidator()\"\r\n [icon]=\"icon()\"\r\n [iconSpin]=\"iconSpin()\"\r\n [placeholder]=\"placeholder()\"\r\n [readonly]=\"getReadonly()\"\r\n [clearable]=\"showClearable()\"\r\n [(ngModel)]=\"value\"\r\n [valueTpl]=\"valueTplComputed()\"\r\n [valueTplContext]=\"valueTplContextComputed()\"\r\n [size]=\"size()\"\r\n [bordered]=\"bordered()\"\r\n [before]=\"before()\"\r\n [after]=\"after()\"\r\n [pattern]=\"patternComputed()\"\r\n [message]=\"messageComputed()\"\r\n [pointer]=\"pointer()\"\r\n [(active)]=\"active\"\r\n (clearEmit)=\"clearEmit()\"\r\n (xKeydown)=\"onKeydown($event)\"\r\n (xInput)=\"onInput($event)\"\r\n (xFocus)=\"onFocus($event)\"\r\n (xClick)=\"showPortal(true)\"\r\n (xMouseenter)=\"menter()\"\r\n (xMouseleave)=\"mleave()\"\r\n (xComposition)=\"composition.set($event)\"\r\n ></x-input>\r\n </div>\r\n</div>\r\n\r\n<ng-template #valueTemplate>{{ displayValue() }}</ng-template>\r\n\r\n<ng-template #searchTemplate>\r\n <x-input\r\n #searchInput\r\n [bordered]=\"false\"\r\n [size]=\"size()\"\r\n [(ngModel)]=\"displayValue\"\r\n (xInput)=\"onInput($event)\"\r\n (xKeydown)=\"onKeydown($event)\"\r\n ></x-input>\r\n</ng-template>\r\n\r\n<ng-template #multipleValueTpl>\r\n @for (node of displayNodes(); track node.id; let i = $index) {\r\n <x-tag\r\n [@.disabled]=\"true\"\r\n [bordered]=\"false\"\r\n [closable]=\"!disabledComputed()\"\r\n [type]=\"'info'\"\r\n (close)=\"closeNode($event, node, i)\"\r\n [size]=\"size()\"\r\n >{{ node.label }}</x-tag\r\n >\r\n }\r\n @if (showDisplayMore()) {\r\n <x-tag [@.disabled]=\"true\" [bordered]=\"false\" [type]=\"'info'\" [size]=\"size()\">\r\n <ng-container *xOutlet=\"getMaxTagContent(); context: { $surplus: selectedSurplus(), $total: selectedTotal() }\">{{\r\n displayMore()\r\n }}</ng-container>\r\n </x-tag>\r\n }\r\n\r\n @if (search()) {\r\n <x-input\r\n #multipleInput\r\n [bordered]=\"false\"\r\n [size]=\"size()\"\r\n [ngModel]=\"multipleSearchValue()\"\r\n (ngModelChange)=\"multipleSearchValue.set($event)\"\r\n (xInput)=\"onInput($event)\"\r\n (xKeydown)=\"onKeydown($event)\"\r\n ></x-input>\r\n }\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";x-select{display:inline-block;width:12rem}.x-select{margin:0;padding:0}.x-select{width:100%}.x-select x-input{width:100%}.x-select-multiple .x-input-value-template-value,.x-select-search-single .x-input-value-template-value{display:flex;align-items:center;margin-bottom:.125rem;flex-wrap:wrap;width:initial;height:initial!important;left:.125rem!important}.x-select-multiple .x-input-value-template-value>x-tag,.x-select-search-single .x-input-value-template-value>x-tag{display:inline-flex;margin-left:.0625rem;margin-top:.125rem}.x-select-multiple .x-input-value-template-value>x-tag .x-tag-big,.x-select-search-single .x-input-value-template-value>x-tag .x-tag-big{height:var(--x-height-large);line-height:var(--x-height-large);padding:0 var(--x-padding-large)}.x-select-multiple .x-input-value-template-value>x-tag .x-tag-big>.x-icon,.x-select-search-single .x-input-value-template-value>x-tag .x-tag-big>.x-icon{right:calc(-var(--x-padding-large)/2)}.x-select-multiple .x-input-value-template-value>x-tag .x-tag-large,.x-select-search-single .x-input-value-template-value>x-tag .x-tag-large{height:var(--x-height-medium);line-height:var(--x-height-medium);padding:0 var(--x-padding-medium)}.x-select-multiple .x-input-value-template-value>x-tag .x-tag-large>.x-icon,.x-select-search-single .x-input-value-template-value>x-tag .x-tag-large>.x-icon{right:calc(-var(--x-padding-medium)/2)}.x-select-multiple .x-input-value-template-value>x-tag .x-tag-medium,.x-select-search-single .x-input-value-template-value>x-tag .x-tag-medium{height:var(--x-height-small);line-height:var(--x-height-small);padding:0 var(--x-padding-small)}.x-select-multiple .x-input-value-template-value>x-tag .x-tag-medium>.x-icon,.x-select-search-single .x-input-value-template-value>x-tag .x-tag-medium>.x-icon{right:calc(-var(--x-padding-small)/2)}.x-select-multiple .x-input-value-template-value>x-tag .x-tag-small,.x-select-search-single .x-input-value-template-value>x-tag .x-tag-small{height:var(--x-height-mini);line-height:var(--x-height-mini);padding:0 var(--x-padding-mini)}.x-select-multiple .x-input-value-template-value>x-tag .x-tag-small>.x-icon,.x-select-search-single .x-input-value-template-value>x-tag .x-tag-small>.x-icon{right:calc(-var(--x-padding-mini)/2)}.x-select-multiple .x-input-value-template-value>x-tag .x-tag-mini,.x-select-search-single .x-input-value-template-value>x-tag .x-tag-mini{height:1.125rem;line-height:1.125rem;padding:0 .125rem}.x-select-multiple .x-input-value-template-value>x-tag .x-tag-mini>.x-icon,.x-select-search-single .x-input-value-template-value>x-tag .x-tag-mini>.x-icon{right:-.0625rem}.x-select-multiple .x-input-value-template-value>x-input,.x-select-search-single .x-input-value-template-value>x-input{margin-top:.125rem;width:5rem}.x-select-multiple .x-input-value-template-value>x-input .x-input-big>.x-input-row>.x-input-input>input,.x-select-multiple .x-input-value-template-value>x-input .x-input-big>.x-input-row>.x-input-input>.x-input-row-before:not(.x-input-row-before-template),.x-select-multiple .x-input-value-template-value>x-input .x-input-big>.x-input-row>.x-input-input>.x-input-row-after:not(.x-input-row-after-template),.x-select-multiple .x-input-value-template-value>x-input .x-input-big>.x-input-row>.x-input-input>.x-input-value-template-value,.x-select-search-single .x-input-value-template-value>x-input .x-input-big>.x-input-row>.x-input-input>input,.x-select-search-single .x-input-value-template-value>x-input .x-input-big>.x-input-row>.x-input-input>.x-input-row-before:not(.x-input-row-before-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-big>.x-input-row>.x-input-input>.x-input-row-after:not(.x-input-row-after-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-big>.x-input-row>.x-input-input>.x-input-value-template-value{height:var(--x-height-large);line-height:var(--x-height-large);padding:0 var(--x-padding-large)}.x-select-multiple .x-input-value-template-value>x-input .x-input-big>.x-input-row>.x-input-input>.x-input-max-length,.x-select-search-single .x-input-value-template-value>x-input .x-input-big>.x-input-row>.x-input-input>.x-input-max-length{height:var(--x-height-large);line-height:var(--x-height-large)}.x-select-multiple .x-input-value-template-value>x-input .x-input-big>.x-input-row>.x-input-row-before:not(.x-input-row-before-template),.x-select-multiple .x-input-value-template-value>x-input .x-input-big>.x-input-row>.x-input-row-after:not(.x-input-row-after-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-big>.x-input-row>.x-input-row-before:not(.x-input-row-before-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-big>.x-input-row>.x-input-row-after:not(.x-input-row-after-template){height:var(--x-height-large);line-height:var(--x-height-large);padding:0 var(--x-padding-large)}.x-select-multiple .x-input-value-template-value>x-input .x-input-big>label,.x-select-search-single .x-input-value-template-value>x-input .x-input-big>label{height:var(--x-height-large);line-height:var(--x-height-large)}.x-select-multiple .x-input-value-template-value>x-input .x-input-large>.x-input-row>.x-input-input>input,.x-select-multiple .x-input-value-template-value>x-input .x-input-large>.x-input-row>.x-input-input>.x-input-row-before:not(.x-input-row-before-template),.x-select-multiple .x-input-value-template-value>x-input .x-input-large>.x-input-row>.x-input-input>.x-input-row-after:not(.x-input-row-after-template),.x-select-multiple .x-input-value-template-value>x-input .x-input-large>.x-input-row>.x-input-input>.x-input-value-template-value,.x-select-search-single .x-input-value-template-value>x-input .x-input-large>.x-input-row>.x-input-input>input,.x-select-search-single .x-input-value-template-value>x-input .x-input-large>.x-input-row>.x-input-input>.x-input-row-before:not(.x-input-row-before-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-large>.x-input-row>.x-input-input>.x-input-row-after:not(.x-input-row-after-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-large>.x-input-row>.x-input-input>.x-input-value-template-value{height:var(--x-height-medium);line-height:var(--x-height-medium);padding:0 var(--x-padding-medium)}.x-select-multiple .x-input-value-template-value>x-input .x-input-large>.x-input-row>.x-input-input>.x-input-max-length,.x-select-search-single .x-input-value-template-value>x-input .x-input-large>.x-input-row>.x-input-input>.x-input-max-length{height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-select-multiple .x-input-value-template-value>x-input .x-input-large>.x-input-row>.x-input-row-before:not(.x-input-row-before-template),.x-select-multiple .x-input-value-template-value>x-input .x-input-large>.x-input-row>.x-input-row-after:not(.x-input-row-after-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-large>.x-input-row>.x-input-row-before:not(.x-input-row-before-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-large>.x-input-row>.x-input-row-after:not(.x-input-row-after-template){height:var(--x-height-medium);line-height:var(--x-height-medium);padding:0 var(--x-padding-medium)}.x-select-multiple .x-input-value-template-value>x-input .x-input-large>label,.x-select-search-single .x-input-value-template-value>x-input .x-input-large>label{height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-select-multiple .x-input-value-template-value>x-input .x-input-medium>.x-input-row>.x-input-input>input,.x-select-multiple .x-input-value-template-value>x-input .x-input-medium>.x-input-row>.x-input-input>.x-input-row-before:not(.x-input-row-before-template),.x-select-multiple .x-input-value-template-value>x-input .x-input-medium>.x-input-row>.x-input-input>.x-input-row-after:not(.x-input-row-after-template),.x-select-multiple .x-input-value-template-value>x-input .x-input-medium>.x-input-row>.x-input-input>.x-input-value-template-value,.x-select-search-single .x-input-value-template-value>x-input .x-input-medium>.x-input-row>.x-input-input>input,.x-select-search-single .x-input-value-template-value>x-input .x-input-medium>.x-input-row>.x-input-input>.x-input-row-before:not(.x-input-row-before-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-medium>.x-input-row>.x-input-input>.x-input-row-after:not(.x-input-row-after-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-medium>.x-input-row>.x-input-input>.x-input-value-template-value{height:var(--x-height-small);line-height:var(--x-height-small);padding:0 var(--x-padding-small)}.x-select-multiple .x-input-value-template-value>x-input .x-input-medium>.x-input-row>.x-input-input>.x-input-max-length,.x-select-search-single .x-input-value-template-value>x-input .x-input-medium>.x-input-row>.x-input-input>.x-input-max-length{height:var(--x-height-small);line-height:var(--x-height-small)}.x-select-multiple .x-input-value-template-value>x-input .x-input-medium>.x-input-row>.x-input-row-before:not(.x-input-row-before-template),.x-select-multiple .x-input-value-template-value>x-input .x-input-medium>.x-input-row>.x-input-row-after:not(.x-input-row-after-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-medium>.x-input-row>.x-input-row-before:not(.x-input-row-before-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-medium>.x-input-row>.x-input-row-after:not(.x-input-row-after-template){height:var(--x-height-small);line-height:var(--x-height-small);padding:0 var(--x-padding-small)}.x-select-multiple .x-input-value-template-value>x-input .x-input-medium>label,.x-select-search-single .x-input-value-template-value>x-input .x-input-medium>label{height:var(--x-height-small);line-height:var(--x-height-small)}.x-select-multiple .x-input-value-template-value>x-input .x-input-small>.x-input-row>.x-input-input>input,.x-select-multiple .x-input-value-template-value>x-input .x-input-small>.x-input-row>.x-input-input>.x-input-row-before:not(.x-input-row-before-template),.x-select-multiple .x-input-value-template-value>x-input .x-input-small>.x-input-row>.x-input-input>.x-input-row-after:not(.x-input-row-after-template),.x-select-multiple .x-input-value-template-value>x-input .x-input-small>.x-input-row>.x-input-input>.x-input-value-template-value,.x-select-search-single .x-input-value-template-value>x-input .x-input-small>.x-input-row>.x-input-input>input,.x-select-search-single .x-input-value-template-value>x-input .x-input-small>.x-input-row>.x-input-input>.x-input-row-before:not(.x-input-row-before-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-small>.x-input-row>.x-input-input>.x-input-row-after:not(.x-input-row-after-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-small>.x-input-row>.x-input-input>.x-input-value-template-value{height:var(--x-height-mini);line-height:var(--x-height-mini);padding:0 var(--x-padding-mini)}.x-select-multiple .x-input-value-template-value>x-input .x-input-small>.x-input-row>.x-input-input>.x-input-max-length,.x-select-search-single .x-input-value-template-value>x-input .x-input-small>.x-input-row>.x-input-input>.x-input-max-length{height:var(--x-height-mini);line-height:var(--x-height-mini)}.x-select-multiple .x-input-value-template-value>x-input .x-input-small>.x-input-row>.x-input-row-before:not(.x-input-row-before-template),.x-select-multiple .x-input-value-template-value>x-input .x-input-small>.x-input-row>.x-input-row-after:not(.x-input-row-after-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-small>.x-input-row>.x-input-row-before:not(.x-input-row-before-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-small>.x-input-row>.x-input-row-after:not(.x-input-row-after-template){height:var(--x-height-mini);line-height:var(--x-height-mini);padding:0 var(--x-padding-mini)}.x-select-multiple .x-input-value-template-value>x-input .x-input-small>label,.x-select-search-single .x-input-value-template-value>x-input .x-input-small>label{height:var(--x-height-mini);line-height:var(--x-height-mini)}.x-select-multiple .x-input-value-template-value>x-input .x-input-mini>.x-input-row>.x-input-input>input,.x-select-multiple .x-input-value-template-value>x-input .x-input-mini>.x-input-row>.x-input-input>.x-input-row-before:not(.x-input-row-before-template),.x-select-multiple .x-input-value-template-value>x-input .x-input-mini>.x-input-row>.x-input-input>.x-input-row-after:not(.x-input-row-after-template),.x-select-multiple .x-input-value-template-value>x-input .x-input-mini>.x-input-row>.x-input-input>.x-input-value-template-value,.x-select-search-single .x-input-value-template-value>x-input .x-input-mini>.x-input-row>.x-input-input>input,.x-select-search-single .x-input-value-template-value>x-input .x-input-mini>.x-input-row>.x-input-input>.x-input-row-before:not(.x-input-row-before-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-mini>.x-input-row>.x-input-input>.x-input-row-after:not(.x-input-row-after-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-mini>.x-input-row>.x-input-input>.x-input-value-template-value{height:1.125rem;line-height:1.125rem;padding:0 .125rem}.x-select-multiple .x-input-value-template-value>x-input .x-input-mini>.x-input-row>.x-input-input>.x-input-max-length,.x-select-search-single .x-input-value-template-value>x-input .x-input-mini>.x-input-row>.x-input-input>.x-input-max-length{height:1.125rem;line-height:1.125rem}.x-select-multiple .x-input-value-template-value>x-input .x-input-mini>.x-input-row>.x-input-row-before:not(.x-input-row-before-template),.x-select-multiple .x-input-value-template-value>x-input .x-input-mini>.x-input-row>.x-input-row-after:not(.x-input-row-after-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-mini>.x-input-row>.x-input-row-before:not(.x-input-row-before-template),.x-select-search-single .x-input-value-template-value>x-input .x-input-mini>.x-input-row>.x-input-row-after:not(.x-input-row-after-template){height:1.125rem;line-height:1.125rem;padding:0 .125rem}.x-select-multiple .x-input-value-template-value>x-input .x-input-mini>label,.x-select-search-single .x-input-value-template-value>x-input .x-input-mini>label{height:1.125rem;line-height:1.125rem}.x-select-multiple .x-input-value-template-value>x-input .x-input-row>.x-input-input>input,.x-select-search-single .x-input-value-template-value>x-input .x-input-row>.x-input-input>input{background-color:transparent}.x-select-search-single .x-input-value-template-value{left:.75rem!important}.x-select-search-single .x-input-value-template-value>x-input{width:100%}.x-select-search-single .x-input-value-template-value>x-input .x-input-row>.x-input-input>input{padding:0!important}.x-select-portal{color:var(--x-text);width:100%;border-radius:var(--x-border-small-radius);box-shadow:var(--x-box-shadow);position:relative;display:flex;background-color:var(--x-background-100);overflow:hidden auto;max-height:calc(calc(var(--x-font-size) + .875rem) * 6 + var(--x-border-width) * 7)}.x-select-portal-virtualScroll{overflow-y:hidden}.x-select-portal-virtualScroll .x-list-portal{padding:0}.x-select-portal-virtualScroll .x-list-portal .cdk-virtual-scroll-content-wrapper{padding:.125rem .25rem}\n"] }]
683
- }], ctorParameters: () => [], propDecorators: { getWidth: [{
684
- type: HostBinding,
685
- args: ['style.width']
686
- }] } });
687
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUNMLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUdWLGdCQUFnQixFQUVoQixNQUFNLEVBR04sU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBRU4sTUFBTSxFQUNOLFdBQVcsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hGLE9BQU8sRUFDTCxRQUFRLEVBQ1IsYUFBYSxFQUNiLFNBQVMsRUFDVCxRQUFRLEVBRVIsY0FBYyxFQUNkLFdBQVcsRUFDWCxRQUFRLEVBQ1IsU0FBUyxFQUNULE9BQU8sRUFDUCxPQUFPLEVBRVAsU0FBUyxFQUVULFFBQVEsRUFDUixZQUFZLEVBQ1osT0FBTyxFQUNSLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLGNBQWMsRUFBcUIsd0JBQXdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUNMLE9BQU8sRUFLUixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVks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LFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFGLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsUUFBUSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsUUFBUSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsUUFBUSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzlFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsUUFBUSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsUUFBUSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsUUFBUSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsUUFBUSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDekIsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztZQUN2RCxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLGFBQWEsRUFBRSxFQUFFLGFBQWEsQ0FBQztpQkFDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUNqRCxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDZixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzdCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxjQUFjLEVBQUUsVUFBVSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFBRSxPQUFPO1FBQ3pCLFFBQVEsQ0FBYyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2pFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbkIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQy9ELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxXQUFXO2FBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFZLENBQUMsRUFBRSxvQkFBb0IsRUFBRSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDcEcsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDZixJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNwRixNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQzFCLElBQ0UsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUN0QixDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFDOUYsQ0FBQztnQkFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1lBQ3hDLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUN4RCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzNCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDbkcsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztnQkFDekIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLFVBQVUsQ0FBQyxhQUFhLENBQUM7Z0JBQzdELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25ELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLGFBQWEsRUFBRSxFQUFFLGFBQStCLENBQUM7UUFDN0UsSUFBSSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDeEMsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDaEMsSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdkIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbkIsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDekIsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNsQixLQUFLLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFnQixDQUFDO1lBQzNDLElBQUksR0FBRyxDQUFDLE9BQU8sS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDNUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUM7Z0JBQ3ZDLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDN0IsVUFBVSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDeEQsU0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDdEQsSUFBSSxTQUFTLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDckIsU0FBUyxHQUFHLFNBQVMsQ0FBQztnQkFDeEIsQ0FBQztxQkFBTSxJQUFJLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztvQkFDbkMsS0FBSyxFQUFFLENBQUM7b0JBQ1IsU0FBUyxHQUFHLFNBQVMsQ0FBQztnQkFDeEIsQ0FBQztnQkFDRCxJQUFJLGFBQWEsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUN6QixhQUFhLEdBQUcsU0FBUyxDQUFDO2dCQUM1QixDQUFDO2dCQUNELElBQUksYUFBYSxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUNoQyxnQkFBZ0IsSUFBSSxXQUFXLEdBQUcsVUFBVSxDQUFDO2dCQUMvQyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBRyxZQUFZLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUMxRixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUFFLE9BQU87UUFDNUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2hILElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUFFLE9BQU87UUFDNUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQXNCO1FBQ2hDLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsQ0FBQztZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hCLFFBQVEsQ0FBYyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBWSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3JGLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztvQkFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2hDLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEIsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsQ0FBQztZQUNELElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ3JDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFzQjtRQUNuQyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEcsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FDbEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ3BHLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQzNCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3hELElBQUksV0FBVyxHQUF1QixJQUFJLENBQUM7UUFDM0MsS0FBSyxJQUFJLElBQUksSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUN6QixJQUFJLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUMxQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUNuQixNQUFNO1lBQ1IsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLFdBQVcsSUFBSSxXQUFXLENBQUMsT0FBTyxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ2xELFNBQVMsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDO2lCQUM3QixJQUFJLENBQ0gsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUcsQ0FBQyxFQUNwQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQjtpQkFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxDQUFDO2dCQUMxQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUNwRSxNQUFNLEtBQUssR0FBRyxXQUFZLENBQUMscUJBQXFCLEVBQUUsQ0FBQztnQkFDbkQsSUFBSSxLQUFLLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQzVFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzNCLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDSCxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNyQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO2dCQUNwQixPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN0QyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUNmLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELGVBQWUsQ0FBQyxTQUF1QjtRQUNyQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFDM0IsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQzt3QkFDL0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3JCLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFOzRCQUN0QixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7NEJBQ3RCLE9BQU8sQ0FBQyxDQUFDO3dCQUNYLENBQUMsQ0FBQyxDQUFDO29CQUNMLENBQUM7b0JBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTt3QkFDdEMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7d0JBQ2YsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ2xCLENBQUMsQ0FBQyxDQUFDO29CQUNILElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDekIsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztvQkFDYixJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUM7b0JBQ2xCLElBQUksY0FBYyxDQUFnQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO3dCQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDM0IsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDbkQsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUM1QixHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNyQixDQUFDO29CQUNELElBQUksU0FBUyxFQUFFLENBQUM7d0JBQ2QsSUFBSSxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7NEJBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0NBQzlCLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0NBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDOzRCQUNoQixDQUFDLENBQUMsQ0FBQzt3QkFDTCxDQUFDOzZCQUFNLENBQUM7NEJBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQ0FDOUIsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7Z0NBQ3pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDOzRCQUNoQixDQUFDLENBQUMsQ0FBQzt3QkFDTCxDQUFDO29CQUNILENBQUM7eUJBQU0sQ0FBQzt3QkFDTixLQUFLLElBQUksRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDOzRCQUNuQixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDOzRCQUNqRCxJQUFJLElBQUk7Z0NBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDaEMsQ0FBQzt3QkFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDbkMsQ0FBQztvQkFDRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUNuQixJQUFJLENBQUMsYUFBYSxFQUFFO3lCQUNqQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7eUJBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FDYixDQUFDO29CQUNGLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTt3QkFDdEMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7d0JBQ3BDLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNsQixDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQzNELElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNsQyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7d0JBQ3RDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO3dCQUNmLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNsQixDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzFCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTt3QkFDdEMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7d0JBQ2YsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ2xCLENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsS0FBWSxFQUFFLElBQWlCLEVBQUUsS0FBYTtRQUN0RCxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNiLElBQUksY0FBYyxDQUFnQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2hELEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyRSxDQUFDO2FBQU0sQ0FBQztZQUNOLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBQ0QsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUN0QixDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDakIsT0FBTyxDQUFDLENBQUM7WUFDWCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksSUFBSSxDQUFDLFFBQVE7Z0JBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUM5QixDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDbkIsT0FBTyxDQUFDLENBQUM7WUFDWCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixDQUFDO1FBQ0QsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFBRSxPQUFPO1FBQzdCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDM0MsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1osSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDNUIsR0FBRyxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ2xFLENBQUM7YUFBTSxDQUFDO1lBQ04sR0FBRyxHQUFHLE1BQU0sQ0FBQztRQUNmLENBQUM7UUFDRCxJQUFJLElBQUksR0FBRyxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBQ3hCLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNuQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFhLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkgsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2QixJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNCLEVBQUUsQ0FBQyxJQUFJLENBQUM7aUJBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDaEIsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDOUMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBSyxHQUFHLEtBQUs7UUFDdEIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUFFLE9BQU87UUFDakcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUMxRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QixRQUFRLENBQWMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDekcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7b0JBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNoQyxDQUFDO2dCQUNELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtvQkFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUM7UUFDckMsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQ25DLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzFCLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2pFLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdFLE1BQU0sTUFBTSxHQUFrQjtZQUM1QixhQUFhLEVBQUUsRUFBRTtZQUNqQixLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLEdBQUcsQ0FBQyxLQUFLO1lBQ3RDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckMsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFO1NBQzNELENBQUM7UUFDRixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7WUFDdEMsT0FBTyxFQUFFLHNCQUFzQjtZQUMvQixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1lBQ3ZDLGFBQWEsRUFBRSxNQUFNO1NBQ3RCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVTtZQUNwQixFQUFFLG9CQUFvQixFQUFFO2FBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQy9CLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUNMLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQXFCO1FBQy9CLElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxnQkFBcUQsQ0FBQztRQUM1RSxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBbUMsRUFBRSxFQUFFO1lBQ3pHLE1BQU0sS0FBSyxHQUFHLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUF1QixDQUFDO1lBQ3JGLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDO2dCQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsY0FBYyxFQUFFLENBQUM7WUFDNUMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDL0MsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPO1FBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDekMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFO1lBQ25DLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7U0FDcEMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDO1FBQ3ZELFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM3RCxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxTQUFTLENBQUMsSUFBaUIsRUFBRSxLQUEyQztRQUN0RSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1QsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDMUIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7NEJBQ3RCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7NEJBQ2IsT0FBTyxDQUFDLENBQUM7d0JBQ1gsQ0FBQyxDQUFDLENBQUM7b0JBQ0wsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUN2RSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFOzRCQUN0QixDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQzs0QkFDakIsT0FBTyxDQUFDLENBQUM7d0JBQ1gsQ0FBQyxDQUFDLENBQUM7b0JBQ0wsQ0FBQztnQkFDSCxDQUFDO3FCQUFNLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQzNCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO3dCQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFOzRCQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQzs0QkFDaEIsT0FBTyxDQUFDLENBQUM7d0JBQ1gsQ0FBQyxDQUFDLENBQUM7b0JBQ0wsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7NEJBQ3RCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7NEJBQ2hDLE9BQU8sQ0FBQyxDQUFDO3dCQUNYLENBQUMsQ0FBQyxDQUFDO29CQUNMLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUN0QixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3RCLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBSSxLQUFlLENBQUMsQ0FBQztvQkFDNUIsT0FBTyxDQUFDLENBQUM7Z0JBQ1gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztnQkFDekIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7Z0JBQzdELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDakQsQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUN2RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNqQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1QixDQUFDO1lBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksR0FBRyxJQUFtQixDQUFDO1lBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3RDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUNmLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2xCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3hCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVCLENBQUM7WUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7WUFDN0QsSUFBSSxDQUFDLGFBQWEsRUFBRyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3JDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUEwQztRQUN2RCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUM7WUFDckMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7WUFDdEMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDNUIsaUJBQWlCLEVBQUUsaUJBQWlCO1NBQ3JDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLHNCQUFzQixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBcUI7UUFDN0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakMsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMzQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsTUFBYTtRQUNuQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7WUFDN0QsSUFBSSxDQUFDLGFBQWEsRUFBRyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3JDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxNQUFrQjtRQUN4QixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RyxDQUFDO2lJQTdwQlUsZ0JBQWdCO3FIQUFoQixnQkFBZ0IsaUhBRmhCLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsdzFCQ2pGL0MsNjdGQThGQSxvd2VEbEJZLFdBQVcsb3RCQUFFLG1CQUFtQiwrQkFBRSxhQUFhLGtEQUFFLGVBQWUsb0RBQUUsZ0JBQWdCOzsyRkFPakYsZ0JBQWdCO2tCQVY1QixTQUFTOytCQUNFLEdBQUcsYUFBYSxFQUFFLGNBQ2hCLElBQUksV0FDUCxDQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixDQUFDLGlCQUc5RSxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsY0FBYyxrQkFBa0IsQ0FBQzt3REFpRWIsUUFBUTtzQkFBdkMsV0FBVzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCwgZnJvbUV2ZW50LCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBPbkNoYW5nZXMsXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxuICBUZW1wbGF0ZVJlZixcclxuICBpbmplY3QsXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgdmlld0NoaWxkLFxyXG4gIGNvbXB1dGVkLFxyXG4gIHNpZ25hbCxcclxuICBDb21wb25lbnRSZWYsXHJcbiAgZWZmZWN0LFxyXG4gIEhvc3RCaW5kaW5nXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFhTZWxlY3ROb2RlLCBYU2VsZWN0UHJvcGVydHksIFhTZWxlY3RQcmVmaXggfSBmcm9tICcuL3NlbGVjdC5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7XHJcbiAgWElzRW1wdHksXHJcbiAgWElzT2JzZXJ2YWJsZSxcclxuICBYSXNDaGFuZ2UsXHJcbiAgWFNldERhdGEsXHJcbiAgWFBvc2l0aW9uVG9wQm90dG9tLFxyXG4gIFhJc09iamVjdEFycmF5LFxyXG4gIFhJc0Z1bmN0aW9uLFxyXG4gIFhJc0FycmF5LFxyXG4gIFhJc1N0cmluZyxcclxuICBYUmVtb3ZlLFxyXG4gIFhSZXNpemUsXHJcbiAgWFBsYWNlbWVudCxcclxuICBYQ29tcHV0ZWQsXHJcbiAgWFJlc2l6ZU9ic2VydmVyLFxyXG4gIFhQYXJlbnRzLFxyXG4gIFhJc1VuZGVmaW5lZCxcclxuICBYSXNOdWxsXHJcbn0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IFhQb3J0YWxTZXJ2aWNlLCBYUG9ydGFsT3ZlcmxheVJlZiwgWFBvcnRhbENvbm5lY3RlZFBvc2l0aW9uIH0gZnJvbSAnQG5nLW5lc3QvdWkvcG9ydGFsJztcclxuaW1wb3J0IHsgWElucHV0Q29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvaW5wdXQnO1xyXG5pbXBvcnQgeyBYU2VsZWN0UG9ydGFsQ29tcG9uZW50IH0gZnJvbSAnLi9zZWxlY3QtcG9ydGFsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgT3ZlcmxheSxcclxuICBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3ksXHJcbiAgQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uQ2hhbmdlLFxyXG4gIE92ZXJsYXlDb25maWcsXHJcbiAgT3ZlcmxheVJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcclxuaW1wb3J0IHsgdGFrZVVudGlsLCB0aHJvdHRsZVRpbWUsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgZmlsdGVyLCBkZWxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtcclxuICBET1dOX0FSUk9XLFxyXG4gIFVQX0FSUk9XLFxyXG4gIEVOVEVSLFxyXG4gIE1BQ19FTlRFUixcclxuICBFU0NBUEUsXHJcbiAgTEVGVF9BUlJPVyxcclxuICBSSUdIVF9BUlJPVyxcclxuICBUQUIsXHJcbiAgQkFDS1NQQUNFXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcclxuaW1wb3J0IHsgWFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAbmctbmVzdC91aS9iYXNlLWZvcm0nO1xyXG5pbXBvcnQgeyBYSTE4blNlbGVjdCwgWEkxOG5TZXJ2aWNlLCB6aF9DTiB9IGZyb20gJ0BuZy1uZXN0L3VpL2kxOG4nO1xyXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBYVGFnQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvdGFnJztcclxuaW1wb3J0IHsgWE91dGxldERpcmVjdGl2ZSB9IGZyb20gJ0BuZy1uZXN0L3VpL291dGxldCc7XHJcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hTZWxlY3RQcmVmaXh9YCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgWFRhZ0NvbXBvbmVudCwgWElucHV0Q29tcG9uZW50LCBYT3V0bGV0RGlyZWN0aXZlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW1hWYWx1ZUFjY2Vzc29yKFhTZWxlY3RDb21wb25lbnQpXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWFNlbGVjdENvbXBvbmVudCBleHRlbmRzIFhTZWxlY3RQcm9wZXJ0eSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgaTE4biA9IGluamVjdChYSTE4blNlcnZpY2UpO1xyXG4gIGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcclxuICBwcml2YXRlIHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XHJcbiAgb3ZlcnJpZGUgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuICBwcml2YXRlIHBvcnRhbFNlcnZpY2UgPSBpbmplY3QoWFBvcnRhbFNlcnZpY2UpO1xyXG4gIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcclxuICBwcml2YXRlIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XHJcbiAgcHJpdmF0ZSBvdmVybGF5ID0gaW5qZWN0KE92ZXJsYXkpO1xyXG5cclxuICBpbnB1dENvbSA9IHZpZXdDaGlsZC5yZXF1aXJlZDxYSW5wdXRDb21wb25lbnQ+KCdpbnB1dENvbScpO1xyXG4gIHNlbGVjdCA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oJ3NlbGVjdCcpO1xyXG4gIG11bHRpcGxlVmFsdWVUcGwgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8VGVtcGxhdGVSZWY8dm9pZD4+KCdtdWx0aXBsZVZhbHVlVHBsJyk7XHJcbiAgbXVsdGlwbGVJbnB1dCA9IHZpZXdDaGlsZDxYSW5wdXRDb21wb25lbnQ+KCdtdWx0aXBsZUlucHV0Jyk7XHJcbiAgc2VhcmNoSW5wdXQgPSB2aWV3Q2hpbGQ8WElucHV0Q29tcG9uZW50Pignc2VhcmNoSW5wdXQnKTtcclxuICB2YWx1ZVRlbXBsYXRlID0gdmlld0NoaWxkLnJlcXVpcmVkPFRlbXBsYXRlUmVmPHZvaWQ+PigndmFsdWVUZW1wbGF0ZScpO1xyXG4gIHNlYXJjaFRlbXBsYXRlID0gdmlld0NoaWxkLnJlcXVpcmVkPFRlbXBsYXRlUmVmPHZvaWQ+Pignc2VhcmNoVGVtcGxhdGUnKTtcclxuXHJcbiAgZ2V0UmVhZG9ubHkgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJlYWRvbmx5KCkgfHwgIXRoaXMuc2VhcmNoKCkpO1xyXG4gIGdldE1heFRhZ0NvbnRlbnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1heFRhZ0NvbnRlbnQoKSB8fCB0aGlzLmxvY2FsZSgpLm1heFRhZ0NvbnRlbnQpO1xyXG5cclxuICBub1BvcnRhbFdpZHRoUGxhY2VtZW50czogWFBsYWNlbWVudFtdID0gWydib3R0b20nLCAndG9wJ107XHJcbiAgaGFzUG9ydGFsV2lkdGhQbGFjZW1lbnRzOiBYUGxhY2VtZW50W10gPSBbJ2JvdHRvbS1zdGFydCcsICdib3R0b20tZW5kJywgJ3RvcC1zdGFydCcsICd0b3AtZW5kJ107XHJcblxyXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGUoKSkge1xyXG4gICAgICBpZiAoWElzTnVsbCh2YWx1ZSkgfHwgWElzVW5kZWZpbmVkKHZhbHVlKSkge1xyXG4gICAgICAgIHZhbHVlID0gW107XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFYSXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICB2YWx1ZSA9IFt2YWx1ZV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMudmFsdWUuc2V0KHZhbHVlKTtcclxuICAgIHRoaXMuc2V0RGlzcGxheVZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBlbnRlciA9IHNpZ25hbChmYWxzZSk7XHJcbiAgc2hvd0NsZWFyYWJsZSA9IHNpZ25hbChmYWxzZSk7XHJcbiAgZGlzcGxheVZhbHVlID0gc2lnbmFsKCcnKTtcclxuICBtdWx0aXBsZVNlYXJjaFZhbHVlID0gc2lnbmFsKCcnKTtcclxuICBub2RlcyA9IHNpZ25hbDxYU2VsZWN0Tm9kZVtdPihbXSk7XHJcbiAgc2VsZWN0ZWROb2RlcyA9IHNpZ25hbDxYU2VsZWN0Tm9kZVtdPihbXSk7XHJcbiAgZGlzcGxheU5vZGVzID0gc2lnbmFsPFhTZWxlY3ROb2RlW10+KFtdKTtcclxuICBkaXNwbGF5TW9yZSA9IHNpZ25hbCgnJyk7XHJcbiAgc2hvd0Rpc3BsYXlNb3JlID0gc2lnbmFsKGZhbHNlKTtcclxuICBzZWFyY2hOb2RlcyA9IHNpZ25hbDxYU2VsZWN0Tm9kZVtdPihbXSk7XHJcbiAgcG9ydGFsITogWFBvcnRhbE92ZXJsYXlSZWY8WFNlbGVjdFBvcnRhbENvbXBvbmVudD47XHJcbiAgaWNvbiA9IHNpZ25hbCgnZnRvLWNoZXZyb24tZG93bicpO1xyXG4gIGljb25TcGluID0gc2lnbmFsKGZhbHNlKTtcclxuICBhbmltYXRpbmcgPSBzaWduYWwoZmFsc2UpO1xyXG4gIG9iamVjdEFycmF5ID0gc2lnbmFsKGZhbHNlKTtcclxuICBzZWxlY3RlZFN1cnBsdXMgPSBzaWduYWwoMCk7XHJcbiAgc2VsZWN0ZWRUb3RhbCA9IHNpZ25hbCgwKTtcclxuICBjb21wb3NpdGlvbiA9IHNpZ25hbChmYWxzZSk7XHJcbiAgbG9jYWxlID0gdG9TaWduYWwodGhpcy5pMThuLmxvY2FsZUNoYW5nZS5waXBlKG1hcCgoeCkgPT4geC5zZWxlY3QgYXMgWEkxOG5TZWxlY3QpKSwgeyBpbml0aWFsVmFsdWU6IHpoX0NOLnNlbGVjdCB9KTtcclxuICBjbG9zZVN1YmplY3Q6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG4gIGtleWRvd25TdWJqZWN0OiBTdWJqZWN0PEtleWJvYXJkRXZlbnQ+ID0gbmV3IFN1YmplY3QoKTtcclxuICBpbnB1dENoYW5nZTogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcclxuICBtdWx0aXBsZUlucHV0U2l6ZUNoYW5nZSA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcclxuICBwcml2YXRlIHVuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSByZXNpemVPYnNlcnZlciE6IFhSZXNpemVPYnNlcnZlcjtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS53aWR0aCcpIGdldCBnZXRXaWR0aCgpIHtcclxuICAgIHJldHVybiB0aGlzLndpZHRoKCk7XHJcbiAgfVxyXG5cclxuICB2YWx1ZVRwbENvbXB1dGVkID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMubm9kZVRwbCgpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm5vZGVUcGwoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnZhbHVlVHBsKCkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMudmFsdWVUcGwoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm11bHRpcGxlKCkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubXVsdGlwbGVWYWx1ZVRwbCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2VhcmNoKCkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoVGVtcGxhdGUoKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnZhbHVlVGVtcGxhdGUoKTtcclxuICB9KTtcclxuXHJcbiAgdmFsdWVUcGxDb250ZXh0U2lnbmFsID0gc2lnbmFsPHsgJG5vZGU6IGFueTsgJGlzVmFsdWU6IGJvb2xlYW4gfT4oeyAkbm9kZTogbnVsbCwgJGlzVmFsdWU6IHRydWUgfSk7XHJcbiAgdmFsdWVUcGxDb250ZXh0Q29tcHV0ZWQgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy52YWx1ZVRwbENvbnRleHQoKSA/IHRoaXMudmFsdWVUcGxDb250ZXh0KCkgOiB0aGlzLnZhbHVlVHBsQ29udGV4dFNpZ25hbCgpO1xyXG4gIH0pO1xyXG4gIHBsYWNlbWVudHMgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBsZXQgcGxhY2VtZW50ID0gdGhpcy5wbGFjZW1lbnQoKTtcclxuICAgIGlmICh0aGlzLnBvcnRhbFdpZHRoKCkpIHtcclxuICAgICAgaWYgKHBsYWNlbWVudCA9PT0gJ2JvdHRvbScpIHtcclxuICAgICAgICBwbGFjZW1lbnQgPSAnYm90dG9tLXN0YXJ0JztcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gW3BsYWNlbWVudCwgLi4udGhpcy5oYXNQb3J0YWxXaWR0aFBsYWNlbWVudHNdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIFtwbGFjZW1lbnQsIC4uLnRoaXMubm9Qb3J0YWxXaWR0aFBsYWNlbWVudHNdO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICBwcml2YXRlIHJlYWxQbGFjZW1lbnQgPSBzaWduYWw8WFBsYWNlbWVudCB8IG51bGw+KG51bGwpO1xyXG4gIHBvcnRhbENvbXBvbmVudCA9IHNpZ25hbDxDb21wb25lbnRSZWY8WFNlbGVjdFBvcnRhbENvbXBvbmVudD4gfCBudWxsPihudWxsKTtcclxuICBwb3J0YWxPdmVybGF5UmVmID0gc2lnbmFsPE92ZXJsYXlSZWYgfCBudWxsPihudWxsKTtcclxuICBpbnB1dENoYW5nZWQgPSB0b1NpZ25hbCh0aGlzLmlucHV0Q2hhbmdlKTtcclxuICBwb3J0YWxEYXRhID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3Qgbm9kZXMgPSB0aGlzLm5vZGVzKCk7XHJcbiAgICBpZiAoWElzRnVuY3Rpb24odGhpcy5kYXRhKCkpIHx8IFhJc0VtcHR5KHRoaXMuaW5wdXRDaGFuZ2VkKCkpKSByZXR1cm4gbm9kZXM7XHJcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hOb2RlcygpO1xyXG4gIH0pO1xyXG4gIGFsbG93QWdpYW4gPSBzaWduYWwodHJ1ZSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIGVmZmVjdCgoKSA9PiB0aGlzLnBvcnRhbENvbXBvbmVudCgpPy5zZXRJbnB1dCgnZGF0YScsIHRoaXMucG9ydGFsRGF0YSgpKSk7XHJcbiAgICBlZmZlY3QoKCkgPT4gdGhpcy5wb3J0YWxDb21wb25lbnQoKT8uc2V0SW5wdXQoJ3ZhbHVlJywgdGhpcy52YWx1ZSgpKSk7XHJcbiAgICBlZmZlY3QoKCkgPT4gdGhpcy5wb3J0YWxDb21wb25lbnQoKT8uc2V0SW5wdXQoJ3BsYWNlbWVudCcsIHRoaXMucmVhbFBsYWNlbWVudCgpKSk7XHJcbiAgICBlZmZlY3QoKCkgPT4gdGhpcy5wb3J0YWxDb21wb25lbnQoKT8uc2V0SW5wdXQoJ211bHRpcGxlJywgdGhpcy5tdWx0aXBsZSgpID09PSB0cnVlID8gMCA6IDEpKTtcclxuICAgIGVmZmVjdCgoKSA9PiB0aGlzLnBvcnRhbENvbXBvbmVudCgpPy5zZXRJbnB1dCgnbm9kZVRwbCcsIHRoaXMubm9kZVRwbCgpKSk7XHJcbiAgICBlZmZlY3QoKCkgPT4gdGhpcy5wb3J0YWxDb21wb25lbnQoKT8uc2V0SW5wdXQoJ2lucHV0Q29tJywgdGhpcy5pbnB1dENvbSgpKSk7XHJcbiAgICBlZmZlY3QoKCkgPT4gdGhpcy5wb3J0YWxDb21wb25lbnQoKT8uc2V0SW5wdXQoJ3BvcnRhbE1heEhlaWdodCcsIHRoaXMucG9ydGFsTWF4SGVpZ2h0KCkpKTtcclxuICAgIGVmZmVjdCgoKSA9PiB0aGlzLnBvcnRhbENvbXBvbmVudCgpPy5zZXRJbnB1dCgncG9ydGFsSGVpZ2h0JywgdGhpcy5wb3J0YWxIZWlnaHQoKSkpO1xyXG4gICAgZWZmZWN0KCgpID0+IHRoaXMucG9ydGFsQ29tcG9uZW50KCk/LnNldElucHV0KCdvYmplY3RBcnJheScsIHRoaXMub2JqZWN0QXJyYXkoKSkpO1xyXG4gICAgZWZmZWN0KCgpID0+IHRoaXMucG9ydGFsQ29tcG9uZW50KCk/LnNldElucHV0KCdzZWxlY3RBbGwnLCB0aGlzLnNlbGVjdEFsbCgpKSk7XHJcbiAgICBlZmZlY3QoKCkgPT4gdGhpcy5wb3J0YWxDb21wb25lbnQoKT8uc2V0SW5wdXQoJ3NlbGVjdEFsbFRleHQnLCB0aGlzLnNlbGVjdEFsbFRleHQoKSkpO1xyXG4gICAgZWZmZWN0KCgpID0+IHRoaXMucG9ydGFsQ29tcG9uZW50KCk/LnNldElucHV0KCdjYXNlU2Vuc2l0aXZlJywgdGhpcy5jYXNlU2Vuc2l0aXZlKCkpKTtcclxuICAgIGVmZmVjdCgoKSA9PiB0aGlzLnBvcnRhbENvbXBvbmVudCgpPy5zZXRJbnB1dCgnc2VhcmNoJywgdGhpcy5zZWFyY2goKSkpO1xyXG4gICAgZWZmZWN0KCgpID0+IHRoaXMucG9ydGFsQ29tcG9uZW50KCk/LnNldElucHV0KCd2aXJ0dWFsU2Nyb2xsJywgdGhpcy52aXJ0dWFsU2Nyb2xsKCkpKTtcclxuICAgIGVmZmVjdCgoKSA9PiB0aGlzLnBvcnRhbENvbXBvbmVudCgpPy5zZXRJbnB1dCgnc2l6ZScsIHRoaXMuc2l6ZSgpKSk7XHJcbiAgICBlZmZlY3QoKCkgPT4gdGhpcy5wb3J0YWxDb21wb25lbnQoKT8uc2V0SW5wdXQoJ2tleXdvcmRUZXh0JywgdGhpcy5pbnB1dENoYW5nZWQoKSkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnNldFN1YmplY3QoKTtcclxuICAgIHRoaXMuc2V0UGFyYW50U2Nyb2xsKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IGRhdGEgfSA9IGNoYW5nZXM7XHJcbiAgICBYSXNDaGFuZ2UoZGF0YSkgJiYgdGhpcy5zZXREYXRhKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLnNldFBvcnRhbCgpO1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGUoKSAmJiB0aGlzLmlucHV0Q29tKCkuaW5wdXRWYWx1ZVJlZigpKSB7XHJcbiAgICAgIFhSZXNpemUodGhpcy5pbnB1dENvbSgpLmlucHV0VmFsdWVSZWYoKT8ubmF0aXZlRWxlbWVudClcclxuICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMzApLCB0YWtlVW50aWwodGhpcy51blN1YmplY3QpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSB4LnJlc2l6ZU9ic2VydmVyO1xyXG4gICAgICAgICAgdGhpcy5zZXRNdXRpcGxlSW5wdXRTaXplKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMudW5TdWJqZWN0Lm5leHQoKTtcclxuICAgIHRoaXMudW5TdWJqZWN0LmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XHJcbiAgfVxyXG5cclxuICBzZXREYXRhKCkge1xyXG4gICAgaWYgKHRoaXMuYXN5bmMoKSkgcmV0dXJuO1xyXG4gICAgWFNldERhdGE8WFNlbGVjdE5vZGU+KHRoaXMuZGF0YSgpLCB0aGlzLnVuU3ViamVjdCkuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgIHRoaXMubm9kZXMuc2V0KHgpO1xyXG4gICAgICB0aGlzLnNldERpc3BsYXlWYWx1ZSgpO1xyXG4gICAgICB0aGlzLnNldFBvcnRhbCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRTdWJqZWN0KCkge1xyXG4gICAgdGhpcy5jbG9zZVN1YmplY3QucGlwZSh0YWtlVW50aWwodGhpcy51blN1YmplY3QpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmNsb3NlUG9ydGFsKCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuaW5wdXRDaGFuZ2VcclxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lKCkgYXMgbnVtYmVyKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgdGFrZVVudGlsKHRoaXMudW5TdWJqZWN0KSlcclxuICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgIHRoaXMubW9kZWxDaGFuZ2UoeCk7XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5rZXlkb3duU3ViamVjdC5waXBlKHRocm90dGxlVGltZSgxMCksIHRha2VVbnRpbCh0aGlzLnVuU3ViamVjdCkpLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICBjb25zdCBrZXlDb2RlID0geC5rZXlDb2RlO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIXRoaXMucG9ydGFsQXR0YWNoZWQoKSAmJlxyXG4gICAgICAgIFtET1dOX0FSUk9XLCBVUF9BUlJPVywgTEVGVF9BUlJPVywgUklHSFRfQVJST1csIEVOVEVSLCBNQUNfRU5URVIsIEJBQ0tTUEFDRV0uaW5jbHVkZXMoa2V5Q29kZSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbENoYW5nZSh0aGlzLmRpc3BsYXlWYWx1ZSgpKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5wb3J0YWxBdHRhY2hlZCgpICYmIFtFU0NBUEVdLmluY2x1ZGVzKGtleUNvZGUpKSB7XHJcbiAgICAgICAgdGhpcy5jbG9zZVN1YmplY3QubmV4dCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMubXVsdGlwbGVJbnB1dFNpemVDaGFuZ2UucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCB0YWtlVW50aWwodGhpcy51blN1YmplY3QpKS5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgaWYgKHRoaXMubXVsdGlwbGVJbnB1dCgpKSB7XHJcbiAgICAgICAgY29uc3QgaW5wdXQgPSB0aGlzLm11bHRpcGxlSW5wdXQoKT8uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaW5wdXQsICd3aWR0aCcsIGAke3h9cHhgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRNdXRpcGxlSW5wdXRTaXplKCkge1xyXG4gICAgY29uc3QgaXZmID0gdGhpcy5pbnB1dENvbSgpLmlucHV0VmFsdWVSZWYoKT8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRGl2RWxlbWVudDtcclxuICAgIGxldCB7IGNsaWVudFdpZHRoLCBzY3JvbGxIZWlnaHQgfSA9IGl2ZjtcclxuICAgIGNvbnN0IGxlbiA9IGl2Zi5jaGlsZHJlbi5sZW5ndGg7XHJcbiAgICBsZXQgbGFzdFJvd1RhZ1RvcCA9IC0xO1xyXG4gICAgbGV0IGxpbmVzID0gMTtcclxuICAgIGxldCByb3dUYWdUb3AgPSAtMTtcclxuICAgIGxldCBsYXN0Um93VGFnc1dpZHRoID0gMDtcclxuICAgIGxldCBtYXJnaW5MZWZ0ID0gMDtcclxuICAgIGxldCBtYXJnaW5Ub3AgPSAwO1xyXG4gICAgZm9yIChsZXQgaSA9IGxlbiAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgIGNvbnN0IGVsZSA9IGl2Zi5jaGlsZHJlbltpXSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgaWYgKGVsZS50YWdOYW1lID09PSAnWC1UQUcnKSB7XHJcbiAgICAgICAgY29uc3QgeyBvZmZzZXRUb3AsIG9mZnNldFdpZHRoIH0gPSBlbGU7XHJcbiAgICAgICAgY29uc3Qgc3R5bGUgPSBYQ29tcHV0ZWQoZWxlKTtcclxuICAgICAgICBtYXJnaW5MZWZ0ID0gTnVtYmVyKHN0eWxlLm1hcmdpbkxlZnQucmVwbGFjZSgncHgnLCAnJykpO1xyXG4gICAgICAgIG1hcmdpblRvcCA9IE51bWJlcihzdHlsZS5tYXJnaW5Ub3AucmVwbGFjZSgncHgnLCAnJykpO1xyXG4gICAgICAgIGlmIChyb3dUYWdUb3AgPT09IC0xKSB7XHJcbiAgICAgICAgICByb3dUYWdUb3AgPSBvZmZzZXRUb3A7XHJcbiAgICAgICAgfSBlbHNlIGlmIChyb3dUYWdUb3AgIT09IG9mZnNldFRvcCkge1xyXG4gICAgICAgICAgbGluZXMrKztcclxuICAgICAgICAgIHJvd1RhZ1RvcCA9IG9mZnNldFRvcDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGxhc3RSb3dUYWdUb3AgPT09IC0xKSB7XHJcbiAgICAgICAgICBsYXN0Um93VGFnVG9wID0gb2Zmc2V0VG9wO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobGFzdFJvd1RhZ1RvcCA9PT0gb2Zmc2V0VG9wKSB7XHJcbiAgICAgICAgICBsYXN0Um93VGFnc1dpZHRoICs9IG9mZnNldFdpZHRoICsgbWFyZ2luTGVmdDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IGhlaWdodCA9IHNjcm9sbEhlaWdodCArIChsaW5lcyA+IDEgPyBtYXJnaW5Ub3AgOiAwKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pbnB1dENvbSgpLmlucHV0UmVmKCkubmF0aXZlRWxlbWVudCwgJ2hlaWdodCcsIGAke2hlaWdodH1weGApO1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGVJbnB1dCgpKSB7XHJcbiAgICAgIHRoaXMubXVsdGlwbGVJbnB1dFNpemVDaGFuZ2UubmV4dChjbGllbnRXaWR0aCAtIGxhc3RSb3dUYWdzV2lkdGggLSBtYXJnaW5MZWZ0KTtcclxuICAgIH1cclxuICAgIHRoaXMucG9ydGFsPy5vdmVybGF5UmVmPy51cGRhdGVQb3NpdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgbWVudGVyKCkge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWRDb21wdXRlZCgpIHx8ICF0aGlzLmNsZWFyYWJsZSgpIHx8IHRoaXMuaWNvblNwaW4oKSkgcmV0dXJuO1xyXG4gICAgdGhpcy5lbnRlci5zZXQodHJ1ZSk7XHJcbiAgICBpZiAoKCF0aGlzLm11bHRpcGxlKCkgJiYgIVhJc0VtcHR5KHRoaXMuZGlzcGxheVZhbHVlKCkpKSB8fCAodGhpcy5tdWx0aXBsZSgpICYmICFYSXNFbXB0eSh0aGlzLmRpc3BsYXlOb2RlcygpKSkpIHtcclxuICAgICAgdGhpcy5pY29uLnNldCgnJyk7XHJcbiAgICAgIHRoaXMuc2hvd0NsZWFyYWJsZS5zZXQodHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtbGVhdmUoKSB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZENvbXB1dGVkKCkgfHwgIXRoaXMuY2xlYXJhYmxlKCkgfHwgdGhpcy5pY29uU3BpbigpKSByZXR1cm47XHJcbiAgICB0aGlzLmVudGVyLnNldChmYWxzZSk7XHJcbiAgICBpZiAodGhpcy5jbGVhcmFibGUoKSkge1xyXG4gICAgICB0aGlzLmljb24uc2V0KCdmdG8tY2hldnJvbi1kb3duJyk7XHJcbiAgICAgIHRoaXMuc2hvd0NsZWFyYWJsZS5zZXQoZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbW9kZWxDaGFuZ2UodmFsdWU6IHN0cmluZyB8IG51bWJlcikge1xyXG4gICAgaWYgKFhJc0Z1bmN0aW9uKHRoaXMuZGF0YSgpKSkge1xyXG4gICAgICBpZiAoIXRoaXMucG9ydGFsQXR0YWNoZWQoKSkge1xyXG4gICAgICAgIHRoaXMuc2hvd1BvcnRhbCgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaWNvbi5zZXQoJ2Z0by1sb2FkZXInKTtcclxuICAgICAgdGhpcy5pY29uU3Bpbi5zZXQodHJ1ZSk7XHJcbiAgICAgIFhTZXREYXRhPFhTZWxlY3ROb2RlPih0aGlzLmRhdGEoKSwgdGhpcy51blN1YmplY3QsIHRydWUsIHZhbHVlIGFzIGFueSkuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgdGhpcy5pY29uLnNldCgnJyk7XHJcbiAgICAgICAgdGhpcy5pY29uU3Bpbi5zZXQoZmFsc2UpO1xyXG4gICAgICAgIGlmICghdGhpcy5lbnRlcigpICYmIHRoaXMuY2xlYXJhYmxlKCkpIHtcclxuICAgICAgICAgIHRoaXMuc2hvd0NsZWFyYWJsZS5zZXQoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm5vZGVzLnNldCh4KTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm5vZGVzKCkpIHtcclxuICAgICAgaWYgKCF0aGlzLnBvcnRhbEF0dGFjaGVkKCkpIHtcclxuICAgICAgICB0aGlzLnNob3dQb3J0YWwoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoWElzRW1wdHkodmFsdWUpKSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hOb2Rlcy5zZXQodGhpcy5ub2RlcygpKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldFNlYXJjaE5vZGVzKHZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0U2VhcmNoTm9kZXModmFsdWU6IHN0cmluZyB8IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMuY2FzZVNlbnNpdGl2ZSgpKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoTm9kZXMuc2V0KHRoaXMubm9kZXMoKS5maWx0ZXIoKHgpID0+IFN0cmluZyh4LmxhYmVsKS5pbmRleE9mKFN0cmluZyh2YWx1ZSkpID49IDApKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoTm9kZXMuc2V0KFxyXG4gICAgICAgIHRoaXMubm9kZXMoKS5maWx0ZXIoKHgpID0+IFN0cmluZyh4LmxhYmVsKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoU3RyaW5nKHZhbHVlKS50b0xvd2VyQ2FzZSgpKSA+PSAwKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0UGFyYW50U2Nyb2xsKCkge1xyXG4gICAgaWYgKCF0aGlzLmRvY3VtZW50KSByZXR1cm47XHJcbiAgICBjb25zdCBwYXJlbnRzID0gWFBhcmVudHModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgbGV0IGZpcnN0U2Nyb2xsOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG4gICAgZm9yIChsZXQgaXRlbSBvZiBwYXJlbnRzKSB7XHJcbiAgICAgIGlmIChpdGVtLmNsaWVudEhlaWdodCA8IGl0ZW0uc2Nyb2xsSGVpZ2h0KSB7XHJcbiAgICAgICAgZmlyc3RTY3JvbGwgPSBpdGVtO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoZmlyc3RTY3JvbGwgJiYgZmlyc3RTY3JvbGwudGFnTmFtZSAhPT0gJ0JPRFknKSB7XHJcbiAgICAgIGZyb21FdmVudChmaXJzdFNjcm9sbCwgJ3Njcm9sbCcpXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5wb3J0YWxBdHRhY2hlZCgpISksXHJcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy51blN1YmplY3QpXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wb3J0YWw/Lm92ZXJsYXlSZWY/LnVwZGF0ZVBvc2l0aW9uKCk7XHJcbiAgICAgICAgICBjb25zdCBlcmFjdCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgICAgY29uc3QgZnJlY3QgPSBmaXJzdFNjcm9sbCEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgICAgICBpZiAoZXJhY3QudG9wICsgZXJhY3QuaGVpZ2h0IC0gZnJlY3QudG9wIDwgMCB8fCBlcmFjdC5ib3R0b20gPiBmcmVjdC5ib3R0b20pIHtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZVN1YmplY3QubmV4dCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXJFbWl0KCkge1xyXG4gICAgdGhpcy52YWx1ZS51cGRhdGUoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5tdWx0aXBsZSgpKSB7XHJcbiAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRpc3BsYXlWYWx1ZS5zZXQoJycpO1xyXG4gICAgdGhpcy5tdWx0aXBsZVNlYXJjaFZhbHVlLnNldCgnJyk7XHJcbiAgICB0aGlzLnNlbGVjdGVkTm9kZXMuc2V0KFtdKTtcclxuICAgIHRoaXMuc2V0RGlzcGxheU5vZGVzKCk7XHJcbiAgICB0aGlzLnZhbHVlVHBsQ29udGV4dFNpZ25hbC51cGRhdGUoKHgpID0+IHtcclxuICAgICAgeC4kbm9kZSA9IG51bGw7XHJcbiAgICAgIHJldHVybiB7IC4uLnggfTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5tbGVhdmUoKTtcclxuICAgIHRoaXMuaW5wdXRDaGFuZ2UubmV4dCgnJyk7XHJcbiAgICBpZiAodGhpcy5vbkNoYW5nZSkgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKCkpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzcGxheVZhbHVlKGNsaWNrTm9kZT86IFhTZWxlY3ROb2RlKSB7XHJcbiAgICBpZiAodGhpcy5ub2RlcygpLmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYgKHRoaXMubXVsdGlwbGUoKSkge1xyXG4gICAgICAgIGlmIChYSXNFbXB0eSh0aGlzLnZhbHVlKCkpKSB7XHJcbiAgICAgICAgICBpZiAoWElzVW5kZWZpbmVkKHRoaXMudmFsdWUoKSkgfHwgWElzTnVsbCh0aGlzLnZhbHVlKCkpIHx8IHRoaXMudmFsdWUoKSA9PT0gJycpIHtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZS5zZXQoW10pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZS51cGRhdGUoKHgpID0+IHtcclxuICAgICAgICAgICAgICB4LnNwbGljZSgwLCB4Lmxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHg7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5kaXNwbGF5VmFsdWUuc2V0KCcnKTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2Rlcy5zZXQoW10pO1xyXG4gICAgICAgICAgdGhpcy5kaXNwbGF5Tm9kZXMuc2V0KFtdKTtcclxuICAgICAgICAgIHRoaXMuZGlzcGxheU1vcmUuc2V0KCcnKTtcclxuICAgICAgICAgIHRoaXMudmFsdWVUcGxDb250ZXh0U2lnbmFsLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICAgICAgICB4LiRub2RlID0gbnVsbDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgLi4ueCB9O1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnNldERpc3BsYXlOb2RlcygpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBsZXQgaWRzID0gW107XHJcbiAgICAgICAgICBsZXQgc2VsZWN0ZWQgPSBbXTtcclxuICAgICAgICAgIGlmIChYSXNPYmplY3RBcnJheTxYU2VsZWN0Tm9kZVtdPih0aGlzLnZhbHVlKCkpKSB7XHJcbiAgICAgICAgICAgIHRoaXMub2JqZWN0QXJyYXkuc2V0KHRydWUpO1xyXG4gICAgICAgICAgICBpZHMgPSB0aGlzLnZhbHVlKCkubWFwKCh4OiBYU2VsZWN0Tm9kZSkgPT4geC5pZCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm9iamVjdEFycmF5LnNldChmYWxzZSk7XHJcbiAgICAgICAgICAgIGlkcyA9IHRoaXMudmFsdWUoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChjbGlja05vZGUpIHtcclxuICAgICAgICAgICAgaWYgKGNsaWNrTm9kZS5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2Rlcy51cGRhdGUoKHgpID0+IHtcclxuICAgICAgICAgICAgICAgIHgucHVzaChjbGlja05vZGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi54XTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXMudXBkYXRlKCh4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBYUmVtb3ZlKHgsICh5KSA9PiB5LmlkID09PSBjbGlja05vZGUuaWQpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi54XTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaWQgb2YgaWRzKSB7XHJcbiAgICAgICAgICAgICAgbGV0IG5vZGUgPSB0aGlzLm5vZGVzKCkuZmluZCgoeCkgPT4geC5pZCA9PT0gaWQpO1xyXG4gICAgICAgICAgICAgIGlmIChub2RlKSBzZWxlY3RlZC5wdXNoKG5vZGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2Rlcy5zZXQoc2VsZWN0ZWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zZXREaXNwbGF5Tm9kZXMoKTtcclxuICAgICAgICAgIHRoaXMuZGlzcGxheVZhbHVlLnNldChcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzKClcclxuICAgICAgICAgICAgICAubWFwKCh4KSA9PiB4LmxhYmVsKVxyXG4gICAgICAgICAgICAgIC5qb2luKCcsJylcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLnZhbHVlVHBsQ29udGV4dFNpZ25hbC51cGRhdGUoKHgpID0+IHtcclxuICAgICAgICAgICAgeC4kbm9kZSA9IFsuLi50aGlzLnNlbGVjdGVkTm9kZXMoKV07XHJcbiAgICAgICAgICAgIHJldHVybiB7IC4uLnggfTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgbm9kZSA9IHRoaXMubm9kZXMoKS5maW5kKCh4KSA9PiB4LmlkID09PSB0aGlzLnZhbHVlKCkpO1xyXG4gICAgICAgIGlmIChub2RlKSB7XHJcbiAgICAgICAgICB0aGlzLmRpc3BsYXlWYWx1ZS5zZXQobm9kZS5sYWJlbCk7XHJcbiAgICAgICAgICB0aGlzLnZhbHVlVHBsQ29udGV4dFNpZ25hbC51cGRhdGUoKHgpID0+IHtcclxuICAgICAgICAgICAgeC4kbm9kZSA9IG5vZGU7XHJcbiAgICAgICAgICAgIHJldHVybiB7IC4uLnggfTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmRpc3BsYXlWYWx1ZS5zZXQoJycpO1xyXG4gICAgICAgICAgdGhpcy52YWx1ZVRwbENvbnRleHRTaWduYWwudXBkYXRlKCh4KSA9PiB7XHJcbiAgICAgICAgICAgIHguJG5vZGUgPSBudWxsO1xyXG4gICAgICAgICAgICByZXR1cm4geyAuLi54IH07XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlTm9kZShldmVudDogRXZlbnQsIG5vZGU6IFhTZWxlY3ROb2RlLCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICBsZXQgaW54ID0gLTE7XHJcbiAgICBpZiAoWElzT2JqZWN0QXJyYXk8WFNlbGVjdE5vZGVbXT4odGhpcy52YWx1ZSgpKSkge1xyXG4gICAgICBpbnggPSB0aGlzLnZhbHVlKCkuZmluZEluZGV4KCh5OiBYU2VsZWN0Tm9kZSkgPT4geS5pZCA9PT0gbm9kZS5pZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpbnggPSB0aGlzLnZhbHVlKCkuZmluZEluZGV4KCh5OiBudW1iZXIgfCBzdHJpbmcpID0+IHkgPT09IG5vZGUuaWQpO1xyXG4gICAgfVxyXG4gICAgaWYgKGlueCA+PSAwKSB7XHJcbiAgICAgIHRoaXMudmFsdWUudXBkYXRlKCh4KSA9PiB7XHJcbiAgICAgICAgeC5zcGxpY2UoaW54LCAxKTtcclxuICAgICAgICByZXR1cm4geDtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmICh0aGlzLm9uQ2hhbmdlKSB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUoKSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWROb2Rlcy51cGRhdGUoKHgpID0+IHtcclxuICAgICAgICB4LnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgcmV0dXJuIHg7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNldERpc3BsYXlOb2RlcygpO1xyXG4gICAgfVxyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBzZXREaXNwbGF5Tm9kZXMoKSB7XHJcbiAgICBpZiAoIXRoaXMubXVsdGlwbGUoKSkgcmV0dXJuO1xyXG4gICAgY29uc3QgbWF4bGVuID0gdGhpcy5zZWxlY3RlZE5vZGVzKCkubGVuZ3RoO1xyXG4gICAgbGV0IGxlbiA9IDA7XHJcbiAgICBpZiAodGhpcy5tYXhUYWdDb3VudCgpID49IDApIHtcclxuICAgICAgbGVuID0gbWF4bGVuID4gdGhpcy5tYXhUYWdDb3VudCgpID8gdGhpcy5tYXhUYWdDb3VudCgpIDogbWF4bGVuO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGVuID0gbWF4bGVuO1xyXG4gICAgfVxyXG4gICAgbGV0IG1vcmUgPSBtYXhsZW4gLSBsZW47XHJcbiAgICBtb3JlID0gbW9yZSA8IDAgPyAwIDogbW9yZTtcclxuICAgIHRoaXMuZGlzcGxheU5vZGVzLnNldCh0aGlzLnNlbGVjdGVkTm9kZXMoKS5zbGljZSgwLCBsZW4pKTtcclxuICAgIHRoaXMuc2hvd0Rpc3BsYXlNb3JlLnNldChtb3JlID4gMCk7XHJcbiAgICBpZiAoWElzU3RyaW5nKHRoaXMuZ2V0TWF4VGFnQ29udGVudCgpKSkge1xyXG4gICAgICB0aGlzLmRpc3BsYXlNb3JlLnNldChtb3JlID4gMCA/ICh0aGlzLmdldE1heFRhZ0NvbnRlbnQoKSBhcyBzdHJpbmcpLnJlcGxhY2UoL1xce1xce3N1cnBsdXNcXH1cXH0vZywgYCR7bW9yZX1gKSA6ICcnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRTdXJwbHVzLnNldChtb3JlKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRvdGFsLnNldChtYXhsZW4pO1xyXG4gICAgfVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNldE11dGlwbGVJbnB1dFNpemUoKSk7XHJcbiAgfVxyXG5cclxuICBwb3J0YWxBdHRhY2hlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLnBvcnRhbD8ub3ZlcmxheVJlZj8uaGFzQXR0YWNoZWQoKTtcclxuICB9XHJcblxyXG4gIGNsb3NlUG9ydGFsKCkge1xyXG4gICAgaWYgKHRoaXMucG9ydGFsQXR0YWNoZWQoKSkge1xyXG4gICAgICB0aGlzLnBvcnRhbD8ub3ZlcmxheVJlZj8uZGV0YWNoKCk7XHJcbiAgICAgIHRoaXMuYWN0aXZlLnNldChmYWxzZSk7XHJcbiAgICAgIHRoaXMubXVsdGlwbGVTZWFyY2hWYWx1ZS5zZXQoJycpO1xyXG4gICAgICB0aGlzLmFsbG93QWdpYW4uc2V0KGZhbHNlKTtcclxuICAgICAgb2YodHJ1ZSlcclxuICAgICAgICAucGlwZShkZWxheSgyMDApKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5hbGxvd0FnaWFuLnNldCh0cnVlKSk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZGVzdHJveVBvcnRhbCgpIHtcclxuICAgIHRoaXMucG9ydGFsPy5vdmVybGF5UmVmPy5kaXNwb3NlKCk7XHJcbiAgfVxyXG5cclxuICBzaG93UG9ydGFsKGNsaWNrID0gZmFsc2UpIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkQ29tcHV0ZWQoKSB8fCAhdGhpcy5hbGxvd0FnaWFuKCkgfHwgdGhpcy5pY29uU3BpbigpIHx8IHRoaXMuYW5pbWF0aW5nKCkpIHJldHVybjtcclxuICAgIHRoaXMuYWN0aXZlLnNldCh0cnVlKTtcclxuICAgIGlmICgodGhpcy5hc3luYygpICYmIFhJc09ic2VydmFibGUodGhpcy5kYXRhKCkpICYmIHRoaXMubm9kZXMoKS5sZW5ndGggPT09IDApIHx8IFhJc0Z1bmN0aW9uKHRoaXMuZGF0YSgpKSkge1xyXG4gICAgICB0aGlzLmljb24uc2V0KCdmdG8tbG9hZGVyJyk7XHJcbiAgICAgIHRoaXMuaWNvblNwaW4uc2V0KHRydWUpO1xyXG4gICAgICBYU2V0RGF0YTxYU2VsZWN0Tm9kZT4odGhpcy5kYXRhKCksIHRoaXMudW5TdWJqZWN0LCB0cnVlLCBjbGljayA/ICcnIDogdGhpcy5kaXNwbGF5VmFsdWUoKSkuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgdGhpcy5pY29uLnNldCgnZnRvLWNoZXZyb24tZG93bicpO1xyXG4gICAgICAgIHRoaXMuaWNvblNwaW4uc2V0KGZhbHNlKTtcclxuICAgICAgICBpZiAoIXRoaXMuZW50ZXIoKSAmJiB0aGlzLmNsZWFyYWJsZSgpKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dDbGVhcmFibGUuc2V0KGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5ub2Rlcy5zZXQoeCk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNlYXJjaCgpKSB0aGlzLnNldERpc3BsYXlWYWx1ZSgpO1xyXG4gICAgICAgIHRoaXMuY3JlYXRlUG9ydGFsKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jcmVhdGVQb3J0YWwoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNlYXJjaCgpICYmIHRoaXMubXVsdGlwbGUoKSkge1xyXG4gICAgICB0aGlzLm11bHRpcGxlSW5wdXQoKT8uaW5wdXRGb2N1cygpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNlYXJjaCgpICYmICF0aGlzLm11bHRpcGxlKCkpIHtcclxuICAgICAgdGhpcy5zZWFyY2hJbnB1dCgpPy5pbnB1dEZvY3VzKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmlucHV0Q29tKCkuaW5wdXRGb2N1cygnZm9jdXMnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNyZWF0ZVBvcnRhbCgpIHtcclxuICAgIHRoaXMubm9kZXMudXBkYXRlKChub2RlcykgPT4ge1xyXG4gICAgICBub2Rlcy5maWx0ZXIoKHgpID0+IHguc2VsZWN0ZWQpLm1hcCgoeCkgPT4gKHguc2VsZWN0ZWQgPSBmYWxzZSkpO1xyXG4gICAgICByZXR1cm4gWy4uLm5vZGVzXTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgYm94ID0gdGhpcy5pbnB1dENvbSgpLmlucHV0UmVmKCkubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IGNvbmZpZzogT3ZlcmxheUNvbmZpZyA9IHtcclxuICAgICAgYmFja2Ryb3BDbGFzczogJycsXHJcbiAgICAgIHdpZHRoOiB0aGlzLnBvcnRhbFdpZHRoKCkgfHwgYm94LndpZHRoLFxyXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLnNldFBsYWNlbWVudCgpLFxyXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zZXRQb3NpdGlvbihjb25maWcpO1xyXG4gICAgdGhpcy5wb3J0YWwgPSB0aGlzLnBvcnRhbFNlcnZpY2UuYXR0YWNoKHtcclxuICAgICAgY29udGVudDogWFNlbGVjdFBvcnRhbENvbXBvbmVudCxcclxuICAgICAgdmlld0NvbnRhaW5lclJlZjogdGhpcy52aWV3Q29udGFpbmVyUmVmLFxyXG4gICAgICBvdmVybGF5Q29uZmlnOiBjb25maWdcclxuICAgIH0pO1xyXG4gICAgdGhpcy5wb3J0YWwub3ZlcmxheVJlZlxyXG4gICAgICA/Lm91dHNpZGVQb2ludGVyRXZlbnRzKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5TdWJqZWN0KSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXREaXNwbGF5VmFsdWUoKTtcclxuICAgICAgICB0aGlzLmNsb3NlU3ViamVjdC5uZXh0KCk7XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5zZXRJbnN0YW5jZSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0UG9zaXRpb24oY29uZmlnOiBPdmVybGF5Q29uZmlnKSB7XHJcbiAgICBsZXQgcG9zaXRpb24gPSBjb25maWcucG9zaXRpb25TdHJhdGVneSBhcyBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3k7XHJcbiAgICBwb3NpdGlvbi5wb3NpdGlvbkNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy51blN1YmplY3QpKS5zdWJzY3JpYmUoKHBvczogQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uQ2hhbmdlKSA9PiB7XHJcbiAgICAgIGNvbnN0IHBsYWNlID0gWFBvcnRhbENvbm5lY3RlZFBvc2l0aW9uLmdldChwb3MuY29ubmVjdGlvblBhaXIpIGFzIFhQb3NpdGlvblRvcEJvdHRvbTtcclxuICAgICAgaWYgKHBsYWNlICE9PSB0aGlzLnJlYWxQbGFjZW1lbnQoKSkge1xyXG4gICAgICAgIHRoaXMucmVhbFBsYWNlbWVudC5zZXQocGxhY2UpO1xyXG4gICAgICAgIHRoaXMucG9ydGFsT3ZlcmxheVJlZigpPy51cGRhdGVQb3NpdGlvbigpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldEluc3RhbmNlKCkge1xyXG4gICAgbGV0IHsgY29tcG9uZW50UmVmLCBvdmVybGF5UmVmIH0gPSB0aGlzLnBvcnRhbDtcclxuICAgIGlmICghY29tcG9uZW50UmVmIHx8ICFvdmVybGF5UmVmKSByZXR1cm47XHJcbiAgICB0aGlzLnBvcnRhbENvbXBvbmVudC5zZXQoY29tcG9uZW50UmVmKTtcclxuICAgIHRoaXMucG9ydGFsT3ZlcmxheVJlZi5zZXQob3ZlcmxheVJlZik7XHJcbiAgICB0aGlzLnJlYWxQbGFjZW1lbnQuc2V0KHRoaXMucGxhY2VtZW50KCkpO1xyXG4gICAgT2JqZWN0LmFzc2lnbihjb21wb25lbnRSZWYuaW5zdGFuY2UsIHtcclxuICAgICAgY2xvc2VTdWJqZWN0OiB0aGlzLmNsb3NlU3ViamVjdCxcclxuICAgICAga2V5ZG93blN1YmplY3Q6IHRoaXMua2V5ZG93blN1YmplY3RcclxuICAgIH0pO1xyXG4gICAgY29uc3QgeyBub2RlQ2xpY2ssIGFuaW1hdGluZyB9ID0gY29tcG9uZW50UmVmLmluc3RhbmNlO1xyXG4gICAgbm9kZUNsaWNrLnN1YnNjcmliZSgoeCkgPT4gdGhpcy5ub2RlQ2xpY2soeC5ub2RlISwgeC52YWx1ZSkpO1xyXG4gICAgYW5pbWF0aW5nLnN1YnNjcmliZSgoaW5nKSA9PiB0aGlzLmFuaW1hdGluZy5zZXQoaW5nKSk7XHJcbiAgfVxyXG5cclxuICBub2RlQ2xpY2sobm9kZTogWFNlbGVjdE5vZGUsIHZhbHVlPzogWFNlbGVjdE5vZGVbXSB8IChzdHJpbmcgfCBudW1iZXIpW10pIHtcclxuICAgIGlmICh0aGlzLm11bHRpcGxlKCkpIHtcclxuICAgICAgaWYgKG5vZGUpIHtcclxuICAgICAgICBpZiAoWElzT2JqZWN0QXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgICBpZiAobm9kZS5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICAgICAgICAgIHgucHVzaChub2RlKTtcclxuICAgICAgICAgICAgICByZXR1cm4geDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgaW54ID0gdGhpcy52YWx1ZSgpLmZpbmRJbmRleCgoeDogWFNlbGVjdE5vZGUpID0+IHguaWQgPT09IG5vZGUuaWQpO1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICAgICAgICAgIHguc3BsaWNlKGlueCwgMSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHg7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoWElzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgICBpZiAobm9kZS5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICAgICAgICAgIHgucHVzaChub2RlLmlkKTtcclxuICAgICAgICAgICAgICByZXR1cm4geDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICAgICAgICAgIHguc3BsaWNlKHguaW5kZXhPZihub2RlLmlkKSwgMSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHg7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnZhbHVlLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICAgICAgeC5zcGxpY2UoMCwgeC5sZW5ndGgpO1xyXG4gICAgICAgICAgeC5wdXNoKC4uLih2YWx1ZSBhcyBhbnlbXSkpO1xyXG4gICAgICAgICAgcmV0dXJuIHg7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMubXVsdGlwbGVJbnB1dCgpKSB7XHJcbiAgICAgICAgY29uc3QgaW5wdXQgPSB0aGlzLm11bHRpcGxlSW5wdXQoKSEuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaW5wdXQsICd3aWR0aCcsICcycmVtJyk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuc2VhcmNoKCkgJiYgdGhpcy5tdWx0aXBsZVNlYXJjaFZhbHVlKCkgIT09ICcnKSB7XHJcbiAgICAgICAgdGhpcy5tdWx0aXBsZVNlYXJjaFZhbHVlLnNldCgnJyk7XHJcbiAgICAgICAgdGhpcy5pbnB1dENoYW5nZS5uZXh0KCcnKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNldERpc3BsYXlWYWx1ZShub2RlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG5vZGUgPSBub2RlIGFzIFhTZWxlY3ROb2RlO1xyXG4gICAgICB0aGlzLmRpc3BsYXlWYWx1ZS5zZXQobm9kZS5sYWJlbCk7XHJcbiAgICAgIHRoaXMudmFsdWVUcGxDb250ZXh0U2lnbmFsLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICAgIHguJG5vZGUgPSBub2RlO1xyXG4gICAgICAgIHJldHVybiB7IC4uLnggfTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMudmFsdWUuc2V0KG5vZGUuaWQpO1xyXG4gICAgICBpZiAodGhpcy5zZWFyY2goKSkge1xyXG4gICAgICAgIHRoaXMuaW5wdXRDaGFuZ2UubmV4dCgnJyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jbG9zZVN1YmplY3QubmV4dCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2VhcmNoKCkgJiYgdGhpcy5tdWx0aXBsZSgpICYmIHRoaXMubXVsdGlwbGVJbnB1dCgpKSB7XHJcbiAgICAgIHRoaXMubXVsdGlwbGVJbnB1dCgpIS5pbnB1dEZvY3VzKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmlucHV0Q29tKCkuaW5wdXRGb2N1cygnZm9jdXMnKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9uQ2hhbmdlKSB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUoKSk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sVmFsaWRhdG9yKCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RBbGxOb2Rlcyh2YWx1ZTogWFNlbGVjdE5vZGVbXSB8IChzdHJpbmcgfCBudW1iZXIpW10pIHtcclxuICAgIHRoaXMudmFsdWUuc2V0KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIHNldFBsYWNlbWVudCgpIHtcclxuICAgIHJldHVybiB0aGlzLnBvcnRhbFNlcnZpY2Uuc2V0UGxhY2VtZW50KHtcclxuICAgICAgZWxlbWVudFJlZjogdGhpcy5pbnB1dENvbSgpLmlucHV0UmVmKCksXHJcbiAgICAgIHBsYWNlbWVudDogdGhpcy5wbGFjZW1lbnRzKCksXHJcbiAgICAgIHRyYW5zZm9ybU9yaWdpbk9uOiAneC1zZWxlY3QtcG9ydGFsJ1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRQb3J0YWwoKSB7XHJcbiAgICB0aGlzLnBvcnRhbEF0dGFjaGVkKCkgJiYgdGhpcy5wb3J0YWw/Lm92ZXJsYXlSZWY/LnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kodGhpcy5zZXRQbGFjZW1lbnQoKSk7XHJcbiAgfVxyXG5cclxuICBvbktleWRvd24oJGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICB0aGlzLmtleWRvd25TdWJqZWN0Lm5leHQoJGV2ZW50KTtcclxuICAgIGlmICgkZXZlbnQua2V5Q29kZSAhPT0gVEFCICYmICF0aGlzLnNlYXJjaCkge1xyXG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRm9jdXMoX2V2ZW50OiBFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuc2VhcmNoKCkgJiYgdGhpcy5tdWx0aXBsZSgpICYmIHRoaXMubXVsdGlwbGVJbnB1dCgpKSB7XHJcbiAgICAgIHRoaXMubXVsdGlwbGVJbnB1dCgpIS5pbnB1dEZvY3VzKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmlucHV0Q29tKCkuaW5wdXRGb2N1cygnZm9jdXMnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uSW5wdXQoX2V2ZW50OiBJbnB1dEV2ZW50KSB7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sVmFsaWRhdG9yKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuaW5wdXRDaGFuZ2UubmV4dCh0aGlzLm11bHRpcGxlKCkgPyB0aGlzLm11bHRpcGxlU2VhcmNoVmFsdWUoKSA6IHRoaXMuZGlzcGxheVZhbHVlKCkpKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gICNzZWxlY3RcclxuICBjbGFzcz1cIngtc2VsZWN0XCJcclxuICBbY2xhc3MueC1zZWxlY3QtbXVsdGlwbGVdPVwibXVsdGlwbGUoKVwiXHJcbiAgW2NsYXNzLngtc2VsZWN0LXNlYXJjaC1zaW5nbGVdPVwic2VhcmNoKCkgJiYgIW11bHRpcGxlKClcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cIngtc2VsZWN0LXJvd1wiPlxyXG4gICAgPHgtaW5wdXRcclxuICAgICAgI2lucHV0Q29tXHJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgW2xhYmVsXT1cImxhYmVsKClcIlxyXG4gICAgICBbbGFiZWxXaWR0aF09XCJsYWJlbFdpZHRoKClcIlxyXG4gICAgICBbbGFiZWxBbGlnbl09XCJsYWJlbEFsaWduKClcIlxyXG4gICAgICBbd2lkdGhdPVwid2lkdGgoKVwiXHJcbiAgICAgIFtqdXN0aWZ5XT1cImp1c3RpZnkoKVwiXHJcbiAgICAgIFthbGlnbl09XCJhbGlnbigpXCJcclxuICAgICAgW2RpcmVjdGlvbl09XCJkaXJlY3Rpb24oKVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZENvbXB1dGVkKClcIlxyXG4gICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRDb21wdXRlZCgpXCJcclxuICAgICAgW3ZhbGlkYXRvcl09XCJ2YWxpZGF0b3JDb21wdXRlZCgpIVwiXHJcbiAgICAgIFtpbnB1dFZhbGlkYXRvcl09XCJpbnB1dFZhbGlkYXRvcigpXCJcclxuICAgICAgW2ljb25dPVwiaWNvbigpXCJcclxuICAgICAgW2ljb25TcGluXT1cImljb25TcGluKClcIlxyXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKVwiXHJcbiAgICAgIFtyZWFkb25seV09XCJnZXRSZWFkb25seSgpXCJcclxuICAgICAgW2NsZWFyYWJsZV09XCJzaG93Q2xlYXJhYmxlKClcIlxyXG4gICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcclxuICAgICAgW3ZhbHVlVHBsXT1cInZhbHVlVHBsQ29tcHV0ZWQoKVwiXHJcbiAgICAgIFt2YWx1ZVRwbENvbnRleHRdPVwidmFsdWVUcGxDb250ZXh0Q29tcHV0ZWQoKVwiXHJcbiAgICAgIFtzaXplXT1cInNpemUoKVwiXHJcbiAgICAgIFtib3JkZXJlZF09XCJib3JkZXJlZCgpXCJcclxuICAgICAgW2JlZm9yZV09XCJiZWZvcmUoKVwiXHJcbiAgICAgIFthZnRlcl09XCJhZnRlcigpXCJcclxuICAgICAgW3BhdHRlcm5dPVwicGF0dGVybkNvbXB1dGVkKClcIlxyXG4gICAgICBbbWVzc2FnZV09XCJtZXNzYWdlQ29tcHV0ZWQoKVwiXHJcbiAgICAgIFtwb2ludGVyXT1cInBvaW50ZXIoKVwiXHJcbiAgICAgIFsoYWN0aXZlKV09XCJhY3RpdmVcIlxyXG4gICAgICAoY2xlYXJFbWl0KT1cImNsZWFyRW1pdCgpXCJcclxuICAgICAgKHhLZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCJcclxuICAgICAgKHhJbnB1dCk9XCJvbklucHV0KCRldmVudClcIlxyXG4gICAgICAoeEZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXHJcbiAgICAgICh4Q2xpY2spPVwic2hvd1BvcnRhbCh0cnVlKVwiXHJcbiAgICAgICh4TW91c2VlbnRlcik9XCJtZW50ZXIoKVwiXHJcbiAgICAgICh4TW91c2VsZWF2ZSk9XCJtbGVhdmUoKVwiXHJcbiAgICAgICh4Q29tcG9zaXRpb24pPVwiY29tcG9zaXRpb24uc2V0KCRldmVudClcIlxyXG4gICAgPjwveC1pbnB1dD5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI3ZhbHVlVGVtcGxhdGU+e3sgZGlzcGxheVZhbHVlKCkgfX08L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNzZWFyY2hUZW1wbGF0ZT5cclxuICA8eC1pbnB1dFxyXG4gICAgI3NlYXJjaElucHV0XHJcbiAgICBbYm9yZGVyZWRdPVwiZmFsc2VcIlxyXG4gICAgW3NpemVdPVwic2l6ZSgpXCJcclxuICAgIFsobmdNb2RlbCldPVwiZGlzcGxheVZhbHVlXCJcclxuICAgICh4SW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcclxuICAgICh4S2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiXHJcbiAgPjwveC1pbnB1dD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbXVsdGlwbGVWYWx1ZVRwbD5cclxuICBAZm9yIChub2RlIG9mIGRpc3BsYXlOb2RlcygpOyB0cmFjayBub2RlLmlkOyBsZXQgaSA9ICRpbmRleCkge1xyXG4gICAgPHgtdGFnXHJcbiAgICAgIFtALmRpc2FibGVkXT1cInRydWVcIlxyXG4gICAgICBbYm9yZGVyZWRdPVwiZmFsc2VcIlxyXG4gICAgICBbY2xvc2FibGVdPVwiIWRpc2FibGVkQ29tcHV0ZWQoKVwiXHJcbiAgICAgIFt0eXBlXT1cIidpbmZvJ1wiXHJcbiAgICAgIChjbG9zZSk9XCJjbG9zZU5vZGUoJGV2ZW50LCBub2RlLCBpKVwiXHJcbiAgICAgIFtzaXplXT1cInNpemUoKVwiXHJcbiAgICAgID57eyBub2RlLmxhYmVsIH19PC94LXRhZ1xyXG4gICAgPlxyXG4gIH1cclxuICBAaWYgKHNob3dEaXNwbGF5TW9yZSgpKSB7XHJcbiAgICA8eC10YWcgW0AuZGlzYWJsZWRdPVwidHJ1ZVwiIFtib3JkZXJlZF09XCJmYWxzZVwiIFt0eXBlXT1cIidpbmZvJ1wiIFtzaXplXT1cInNpemUoKVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICp4T3V0bGV0PVwiZ2V0TWF4VGFnQ29udGVudCgpOyBjb250ZXh0OiB7ICRzdXJwbHVzOiBzZWxlY3RlZFN1cnBsdXMoKSwgJHRvdGFsOiBzZWxlY3RlZFRvdGFsKCkgfVwiPnt7XHJcbiAgICAgICAgZGlzcGxheU1vcmUoKVxyXG4gICAgICB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgPC94LXRhZz5cclxuICB9XHJcblxyXG4gIEBpZiAoc2VhcmNoKCkpIHtcclxuICAgIDx4LWlucHV0XHJcbiAgICAgICNtdWx0aXBsZUlucHV0XHJcbiAgICAgIFtib3JkZXJlZF09XCJmYWxzZVwiXHJcbiAgICAgIFtzaXplXT1cInNpemUoKVwiXHJcbiAgICAgIFtuZ01vZGVsXT1cIm11bHRpcGxlU2VhcmNoVmFsdWUoKVwiXHJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm11bHRpcGxlU2VhcmNoVmFsdWUuc2V0KCRldmVudClcIlxyXG4gICAgICAoeElucHV0KT1cIm9uSW5wdXQoJGV2ZW50KVwiXHJcbiAgICAgICh4S2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiXHJcbiAgICA+PC94LWlucHV0PlxyXG4gIH1cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19