@acorex/components 20.2.0-next.9 → 20.2.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 (298) hide show
  1. package/accordion/index.d.ts +6 -5
  2. package/action-sheet/index.d.ts +1 -10
  3. package/alert/index.d.ts +1 -3
  4. package/aspect-ratio/README.md +3 -0
  5. package/aspect-ratio/index.d.ts +11 -0
  6. package/autocomplete/index.d.ts +6 -2
  7. package/avatar/index.d.ts +1 -2
  8. package/badge/index.d.ts +1 -2
  9. package/bottom-navigation/index.d.ts +10 -2
  10. package/breadcrumbs/index.d.ts +2 -3
  11. package/button/index.d.ts +56 -17
  12. package/button-group/index.d.ts +10 -6
  13. package/calendar/index.d.ts +9 -9
  14. package/check-box/index.d.ts +1 -4
  15. package/chips/index.d.ts +1 -2
  16. package/circular-progress/index.d.ts +23 -18
  17. package/code-editor/README.md +3 -0
  18. package/code-editor/index.d.ts +103 -0
  19. package/collapse/index.d.ts +7 -6
  20. package/color-box/index.d.ts +5 -8
  21. package/color-palette/index.d.ts +19 -24
  22. package/command/README.md +3 -0
  23. package/command/index.d.ts +60 -0
  24. package/comment/index.d.ts +15 -10
  25. package/conversation/index.d.ts +106 -78
  26. package/data-list/README.md +356 -0
  27. package/data-list/index.d.ts +102 -0
  28. package/data-pager/index.d.ts +22 -17
  29. package/data-table/index.d.ts +59 -3
  30. package/datetime-box/index.d.ts +11 -15
  31. package/datetime-input/index.d.ts +1 -4
  32. package/datetime-picker/index.d.ts +4 -11
  33. package/decorators/index.d.ts +2 -2
  34. package/dialog/index.d.ts +29 -4
  35. package/drawer-2/index.d.ts +22 -8
  36. package/dropdown/index.d.ts +44 -3
  37. package/dropdown-button/index.d.ts +7 -2
  38. package/fesm2022/acorex-components-accordion.mjs +74 -72
  39. package/fesm2022/acorex-components-accordion.mjs.map +1 -1
  40. package/fesm2022/acorex-components-action-sheet.mjs +22 -48
  41. package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
  42. package/fesm2022/acorex-components-alert.mjs +12 -16
  43. package/fesm2022/acorex-components-alert.mjs.map +1 -1
  44. package/fesm2022/acorex-components-aspect-ratio.mjs +36 -0
  45. package/fesm2022/acorex-components-aspect-ratio.mjs.map +1 -0
  46. package/fesm2022/acorex-components-audio-wave.mjs +7 -7
  47. package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
  48. package/fesm2022/acorex-components-autocomplete.mjs +25 -10
  49. package/fesm2022/acorex-components-autocomplete.mjs.map +1 -1
  50. package/fesm2022/acorex-components-avatar.mjs +13 -17
  51. package/fesm2022/acorex-components-avatar.mjs.map +1 -1
  52. package/fesm2022/acorex-components-badge.mjs +9 -11
  53. package/fesm2022/acorex-components-badge.mjs.map +1 -1
  54. package/fesm2022/acorex-components-bottom-navigation.mjs +18 -16
  55. package/fesm2022/acorex-components-bottom-navigation.mjs.map +1 -1
  56. package/fesm2022/acorex-components-breadcrumbs.mjs +21 -20
  57. package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
  58. package/fesm2022/acorex-components-button-group.mjs +35 -26
  59. package/fesm2022/acorex-components-button-group.mjs.map +1 -1
  60. package/fesm2022/acorex-components-button.mjs +78 -38
  61. package/fesm2022/acorex-components-button.mjs.map +1 -1
  62. package/fesm2022/acorex-components-calendar.mjs +52 -41
  63. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  64. package/fesm2022/acorex-components-check-box.mjs +10 -13
  65. package/fesm2022/acorex-components-check-box.mjs.map +1 -1
  66. package/fesm2022/acorex-components-chips.mjs +9 -11
  67. package/fesm2022/acorex-components-chips.mjs.map +1 -1
  68. package/fesm2022/acorex-components-circular-progress.mjs +31 -26
  69. package/fesm2022/acorex-components-circular-progress.mjs.map +1 -1
  70. package/fesm2022/acorex-components-code-editor.mjs +591 -0
  71. package/fesm2022/acorex-components-code-editor.mjs.map +1 -0
  72. package/fesm2022/acorex-components-collapse.mjs +21 -21
  73. package/fesm2022/acorex-components-collapse.mjs.map +1 -1
  74. package/fesm2022/acorex-components-color-box.mjs +32 -32
  75. package/fesm2022/acorex-components-color-box.mjs.map +1 -1
  76. package/fesm2022/acorex-components-color-palette.mjs +68 -84
  77. package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
  78. package/fesm2022/acorex-components-command.mjs +144 -0
  79. package/fesm2022/acorex-components-command.mjs.map +1 -0
  80. package/fesm2022/acorex-components-comment.mjs +47 -41
  81. package/fesm2022/acorex-components-comment.mjs.map +1 -1
  82. package/fesm2022/acorex-components-conversation.mjs +121 -89
  83. package/fesm2022/acorex-components-conversation.mjs.map +1 -1
  84. package/fesm2022/acorex-components-cron-job.mjs +46 -46
  85. package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
  86. package/fesm2022/acorex-components-data-list.mjs +386 -0
  87. package/fesm2022/acorex-components-data-list.mjs.map +1 -0
  88. package/fesm2022/acorex-components-data-pager.mjs +41 -36
  89. package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
  90. package/fesm2022/acorex-components-data-table.mjs +97 -41
  91. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  92. package/fesm2022/acorex-components-datetime-box.mjs +21 -35
  93. package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
  94. package/fesm2022/acorex-components-datetime-input.mjs +13 -17
  95. package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
  96. package/fesm2022/acorex-components-datetime-picker.mjs +44 -46
  97. package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
  98. package/fesm2022/acorex-components-decorators.mjs +27 -27
  99. package/fesm2022/acorex-components-decorators.mjs.map +1 -1
  100. package/fesm2022/acorex-components-dialog.mjs +44 -19
  101. package/fesm2022/acorex-components-dialog.mjs.map +1 -1
  102. package/fesm2022/acorex-components-drawer-2.mjs +28 -14
  103. package/fesm2022/acorex-components-drawer-2.mjs.map +1 -1
  104. package/fesm2022/acorex-components-drawer.mjs +13 -13
  105. package/fesm2022/acorex-components-drawer.mjs.map +1 -1
  106. package/fesm2022/acorex-components-dropdown-button.mjs +16 -11
  107. package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
  108. package/fesm2022/acorex-components-dropdown.mjs +57 -13
  109. package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
  110. package/fesm2022/acorex-components-file-explorer.mjs +25 -25
  111. package/fesm2022/acorex-components-file-explorer.mjs.map +1 -1
  112. package/fesm2022/acorex-components-flow-chart.mjs +40 -16
  113. package/fesm2022/acorex-components-flow-chart.mjs.map +1 -1
  114. package/fesm2022/acorex-components-form.mjs +36 -17
  115. package/fesm2022/acorex-components-form.mjs.map +1 -1
  116. package/fesm2022/acorex-components-grid-layout-builder.mjs +125 -15
  117. package/fesm2022/acorex-components-grid-layout-builder.mjs.map +1 -1
  118. package/fesm2022/acorex-components-image-editor.mjs +115 -92
  119. package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
  120. package/fesm2022/acorex-components-image.mjs +7 -7
  121. package/fesm2022/acorex-components-image.mjs.map +1 -1
  122. package/fesm2022/acorex-components-json-viewer.mjs +8 -8
  123. package/fesm2022/acorex-components-json-viewer.mjs.map +1 -1
  124. package/fesm2022/acorex-components-kanban.mjs +11 -7
  125. package/fesm2022/acorex-components-kanban.mjs.map +1 -1
  126. package/fesm2022/acorex-components-kbd.mjs +21 -29
  127. package/fesm2022/acorex-components-kbd.mjs.map +1 -1
  128. package/fesm2022/acorex-components-label.mjs +11 -15
  129. package/fesm2022/acorex-components-label.mjs.map +1 -1
  130. package/fesm2022/acorex-components-list.mjs +17 -28
  131. package/fesm2022/acorex-components-list.mjs.map +1 -1
  132. package/fesm2022/acorex-components-loading-dialog.mjs +58 -59
  133. package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
  134. package/fesm2022/acorex-components-loading.mjs +84 -28
  135. package/fesm2022/acorex-components-loading.mjs.map +1 -1
  136. package/fesm2022/acorex-components-map.mjs +484 -112
  137. package/fesm2022/acorex-components-map.mjs.map +1 -1
  138. package/fesm2022/acorex-components-media-viewer.mjs +37 -37
  139. package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
  140. package/fesm2022/acorex-components-menu.mjs +67 -37
  141. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  142. package/fesm2022/{acorex-components-modal-acorex-components-modal-C4zx7OP6.mjs → acorex-components-modal-acorex-components-modal-h5Y-qcbh.mjs} +117 -40
  143. package/fesm2022/acorex-components-modal-acorex-components-modal-h5Y-qcbh.mjs.map +1 -0
  144. package/fesm2022/acorex-components-modal-modal-content.component-B6tyMLdU.mjs +235 -0
  145. package/fesm2022/acorex-components-modal-modal-content.component-B6tyMLdU.mjs.map +1 -0
  146. package/fesm2022/acorex-components-modal.mjs +1 -1
  147. package/fesm2022/acorex-components-navbar.mjs +14 -10
  148. package/fesm2022/acorex-components-navbar.mjs.map +1 -1
  149. package/fesm2022/acorex-components-notification.mjs +31 -45
  150. package/fesm2022/acorex-components-notification.mjs.map +1 -1
  151. package/fesm2022/acorex-components-number-box-2.mjs +18 -5
  152. package/fesm2022/acorex-components-number-box-2.mjs.map +1 -1
  153. package/fesm2022/acorex-components-number-box.mjs +7 -7
  154. package/fesm2022/acorex-components-number-box.mjs.map +1 -1
  155. package/fesm2022/acorex-components-otp.mjs +14 -15
  156. package/fesm2022/acorex-components-otp.mjs.map +1 -1
  157. package/fesm2022/acorex-components-page.mjs +10 -10
  158. package/fesm2022/acorex-components-page.mjs.map +1 -1
  159. package/fesm2022/acorex-components-paint.mjs +68 -33
  160. package/fesm2022/acorex-components-paint.mjs.map +1 -1
  161. package/fesm2022/acorex-components-password-box.mjs +15 -18
  162. package/fesm2022/acorex-components-password-box.mjs.map +1 -1
  163. package/fesm2022/acorex-components-pdf-reader.mjs +7 -7
  164. package/fesm2022/acorex-components-pdf-reader.mjs.map +1 -1
  165. package/fesm2022/acorex-components-phone-box.mjs +44 -14
  166. package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
  167. package/fesm2022/acorex-components-picker.mjs +13 -13
  168. package/fesm2022/acorex-components-picker.mjs.map +1 -1
  169. package/fesm2022/acorex-components-popover.mjs +13 -18
  170. package/fesm2022/acorex-components-popover.mjs.map +1 -1
  171. package/fesm2022/acorex-components-popup.mjs +10 -10
  172. package/fesm2022/acorex-components-popup.mjs.map +1 -1
  173. package/fesm2022/acorex-components-progress-bar.mjs +8 -8
  174. package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
  175. package/fesm2022/acorex-components-qrcode.mjs +7 -7
  176. package/fesm2022/acorex-components-qrcode.mjs.map +1 -1
  177. package/fesm2022/acorex-components-query-builder.mjs +7 -7
  178. package/fesm2022/acorex-components-query-builder.mjs.map +1 -1
  179. package/fesm2022/acorex-components-radio.mjs +7 -7
  180. package/fesm2022/acorex-components-radio.mjs.map +1 -1
  181. package/fesm2022/acorex-components-rail-navigation.mjs +26 -16
  182. package/fesm2022/acorex-components-rail-navigation.mjs.map +1 -1
  183. package/fesm2022/acorex-components-range-slider.mjs +13 -9
  184. package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
  185. package/fesm2022/acorex-components-rate-picker.mjs +7 -7
  186. package/fesm2022/acorex-components-rate-picker.mjs.map +1 -1
  187. package/fesm2022/acorex-components-rest-api-generator.mjs +23 -23
  188. package/fesm2022/acorex-components-rest-api-generator.mjs.map +1 -1
  189. package/fesm2022/acorex-components-result.mjs +7 -7
  190. package/fesm2022/acorex-components-result.mjs.map +1 -1
  191. package/fesm2022/acorex-components-routing-progress.mjs +7 -7
  192. package/fesm2022/acorex-components-routing-progress.mjs.map +1 -1
  193. package/fesm2022/acorex-components-rrule.mjs +222 -102
  194. package/fesm2022/acorex-components-rrule.mjs.map +1 -1
  195. package/fesm2022/acorex-components-scheduler.mjs +1581 -167
  196. package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
  197. package/fesm2022/acorex-components-scss.mjs +4 -4
  198. package/fesm2022/acorex-components-scss.mjs.map +1 -1
  199. package/fesm2022/acorex-components-search-box.mjs +7 -7
  200. package/fesm2022/acorex-components-search-box.mjs.map +1 -1
  201. package/fesm2022/acorex-components-select-box.mjs +70 -28
  202. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  203. package/fesm2022/acorex-components-selection-list-2.mjs +12 -9
  204. package/fesm2022/acorex-components-selection-list-2.mjs.map +1 -1
  205. package/fesm2022/acorex-components-selection-list.mjs +14 -11
  206. package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
  207. package/fesm2022/acorex-components-side-menu.mjs +98 -43
  208. package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
  209. package/fesm2022/acorex-components-skeleton.mjs +7 -7
  210. package/fesm2022/acorex-components-skeleton.mjs.map +1 -1
  211. package/fesm2022/acorex-components-slider.mjs +9 -9
  212. package/fesm2022/acorex-components-slider.mjs.map +1 -1
  213. package/fesm2022/acorex-components-sliding-item.mjs +16 -16
  214. package/fesm2022/acorex-components-sliding-item.mjs.map +1 -1
  215. package/fesm2022/acorex-components-step-wizard.mjs +31 -32
  216. package/fesm2022/acorex-components-step-wizard.mjs.map +1 -1
  217. package/fesm2022/acorex-components-switch.mjs +12 -12
  218. package/fesm2022/acorex-components-switch.mjs.map +1 -1
  219. package/fesm2022/acorex-components-tabs.mjs +20 -15
  220. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  221. package/fesm2022/acorex-components-tag-box.mjs +47 -19
  222. package/fesm2022/acorex-components-tag-box.mjs.map +1 -1
  223. package/fesm2022/acorex-components-tag.mjs +8 -8
  224. package/fesm2022/acorex-components-tag.mjs.map +1 -1
  225. package/fesm2022/acorex-components-text-area.mjs +8 -9
  226. package/fesm2022/acorex-components-text-area.mjs.map +1 -1
  227. package/fesm2022/acorex-components-text-box.mjs +22 -12
  228. package/fesm2022/acorex-components-text-box.mjs.map +1 -1
  229. package/fesm2022/acorex-components-time-duration.mjs +7 -7
  230. package/fesm2022/acorex-components-time-duration.mjs.map +1 -1
  231. package/fesm2022/acorex-components-time-line.mjs +13 -10
  232. package/fesm2022/acorex-components-time-line.mjs.map +1 -1
  233. package/fesm2022/acorex-components-toast.mjs +59 -14
  234. package/fesm2022/acorex-components-toast.mjs.map +1 -1
  235. package/fesm2022/acorex-components-toolbar.mjs +7 -7
  236. package/fesm2022/acorex-components-toolbar.mjs.map +1 -1
  237. package/fesm2022/acorex-components-tooltip.mjs +12 -11
  238. package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
  239. package/fesm2022/acorex-components-tree-view.mjs +12 -12
  240. package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
  241. package/fesm2022/acorex-components-uploader.mjs +252 -56
  242. package/fesm2022/acorex-components-uploader.mjs.map +1 -1
  243. package/fesm2022/acorex-components-video-player.mjs +7 -7
  244. package/fesm2022/acorex-components-video-player.mjs.map +1 -1
  245. package/fesm2022/acorex-components-wysiwyg.mjs +96 -60
  246. package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
  247. package/flow-chart/index.d.ts +24 -0
  248. package/form/index.d.ts +27 -13
  249. package/grid-layout-builder/index.d.ts +115 -4
  250. package/image/index.d.ts +4 -4
  251. package/image-editor/index.d.ts +16 -14
  252. package/json-viewer/index.d.ts +3 -3
  253. package/kanban/index.d.ts +7 -3
  254. package/kbd/index.d.ts +11 -11
  255. package/label/index.d.ts +1 -2
  256. package/list/index.d.ts +4 -14
  257. package/loading/index.d.ts +59 -6
  258. package/loading-dialog/index.d.ts +30 -19
  259. package/map/index.d.ts +95 -2
  260. package/menu/index.d.ts +38 -13
  261. package/modal/index.d.ts +47 -2
  262. package/navbar/index.d.ts +7 -3
  263. package/notification/index.d.ts +1 -8
  264. package/number-box-2/index.d.ts +1 -1
  265. package/otp/index.d.ts +1 -3
  266. package/package.json +43 -4
  267. package/paint/index.d.ts +42 -7
  268. package/password-box/index.d.ts +7 -10
  269. package/phone-box/index.d.ts +17 -16
  270. package/popover/index.d.ts +2 -2
  271. package/popup/index.d.ts +2 -2
  272. package/qrcode/index.d.ts +7 -7
  273. package/query-builder/index.d.ts +1 -1
  274. package/rail-navigation/index.d.ts +12 -3
  275. package/range-slider/index.d.ts +13 -13
  276. package/rate-picker/index.d.ts +5 -5
  277. package/rest-api-generator/index.d.ts +1 -1
  278. package/rrule/index.d.ts +40 -17
  279. package/scheduler/index.d.ts +541 -191
  280. package/search-box/index.d.ts +2 -2
  281. package/select-box/index.d.ts +13 -4
  282. package/selection-list-2/index.d.ts +3 -3
  283. package/side-menu/index.d.ts +24 -15
  284. package/sliding-item/index.d.ts +4 -5
  285. package/step-wizard/index.d.ts +10 -13
  286. package/switch/index.d.ts +0 -1
  287. package/tabs/index.d.ts +6 -1
  288. package/tag-box/index.d.ts +18 -2
  289. package/text-area/index.d.ts +1 -2
  290. package/text-box/index.d.ts +2 -0
  291. package/time-line/index.d.ts +3 -0
  292. package/toast/index.d.ts +45 -1
  293. package/tooltip/index.d.ts +2 -1
  294. package/uploader/index.d.ts +215 -5
  295. package/wysiwyg/index.d.ts +26 -5
  296. package/fesm2022/acorex-components-modal-acorex-components-modal-C4zx7OP6.mjs.map +0 -1
  297. package/fesm2022/acorex-components-modal-modal-content.component-DfhgA_WL.mjs +0 -218
  298. package/fesm2022/acorex-components-modal-modal-content.component-DfhgA_WL.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-range-slider.mjs","sources":["../tmp-esm2022/range-slider/lib/range-slider.class.js","../tmp-esm2022/range-slider/lib/range-slider.component.js","../tmp-esm2022/range-slider/lib/range-slider.module.js","../tmp-esm2022/range-slider/acorex-components-range-slider.js"],"sourcesContent":["//import { AXRange } from '@acorex/cdk/common';\nexport {};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2xpZGVyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9yYW5nZS1zbGlkZXIvc3JjL2xpYi9yYW5nZS1zbGlkZXIuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDIiwic291cmNlc0NvbnRlbnQiOlsiLy9pbXBvcnQgeyBBWFJhbmdlIH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcblxuaW1wb3J0IHsgQVhFdmVudCB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhSYW5nZVN0YXJ0RXZlbnQgZXh0ZW5kcyBBWEV2ZW50IHtcbiAgZGF0YTogYW55O1xufVxuZXhwb3J0IHR5cGUgQVhSYW5nZVNsaWRlclZhbHVlID0gbnVtYmVyIHwgW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZDtcbmV4cG9ydCB0eXBlIEFYUmFuZ2VTbGlkZXJNb2RlID0gJ3NpbmdsZScgfCAnZHVhbCc7XG5leHBvcnQgdHlwZSBBWFJhbmdlU2xpZGVyU25hcE1vZGUgPSAnYm90aCcgfCAnc3RhcnQnIHwgJ2VuZCc7XG5leHBvcnQgdHlwZSBBWFJhbmdlU2xpZGVyVG9vbHRpcE1vZGUgPSAnc3RhcnQnIHwgJ2VuZCc7XG5leHBvcnQgdHlwZSBBWFJhbmdlU2xpZGVySGFuZGxlciA9ICdmaXJzdCcgfCAnc2Vjb25kJztcbiJdfQ==","import { AXComponent, AXValuableComponent, MXValueComponent, } from '@acorex/cdk/common';\nimport { isPlatformBrowser, NgStyle } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, forwardRef, HostBinding, HostListener, inject, input, model, NgZone, PLATFORM_ID, ViewEncapsulation, } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\nimport * as i0 from \"@angular/core\";\n/**\n * @description\n * A range slider for selecting a range of values, supporting both single and dual modes.\n * The slider offers step, snap, and tooltip configurations.\n *\n * @example\n * <ax-range-slider [min]=\"0\" [max]=\"100\" [step]=\"1\" [mode]=\"'dual'\"></ax-range-slider>\n */\nexport class AXRangeSliderComponent extends classes((MXValueComponent)) {\n constructor() {\n super();\n this.zone = inject(NgZone);\n this.platformID = inject(PLATFORM_ID);\n /**\n * @description\n * The orientation of the slider, either 'horizontal' or 'vertical'.\n * @default 'horizontal'\n */\n this.orientation = input('horizontal', ...(ngDevMode ? [{ debugName: \"orientation\" }] : []));\n /**\n * @description\n * Color theme for the slider, affecting highlight, tooltip, and handler.\n * @default 'primary'\n */\n this.color = input('primary', ...(ngDevMode ? [{ debugName: \"color\" }] : []));\n /**\n * @description\n * The value(s) of the slider. Can be a single number for single mode or an array of two numbers for dual mode.\n */\n this.values = model(this.value, ...(ngDevMode ? [{ debugName: \"values\" }] : []));\n /**\n * @description\n * The mode of the slider, either 'single' or 'dual'.\n * @default 'single'\n */\n this.mode = input('single', ...(ngDevMode ? [{ debugName: \"mode\" }] : []));\n /**\n * @description\n * The minimum value of the slider.\n * @default 0\n */\n this.min = input(0, ...(ngDevMode ? [{ debugName: \"min\" }] : []));\n /**\n * @description\n * The maximum value of the slider.\n * @default 100\n */\n this.max = input(100, ...(ngDevMode ? [{ debugName: \"max\" }] : []));\n /**\n * @description\n * The step increment for value changes.\n * @default 1\n */\n this.step = input(1, ...(ngDevMode ? [{ debugName: \"step\" }] : []));\n /**\n * @description\n * The snapping increment for the slider.\n * @default 1\n */\n this.snap = input(1, ...(ngDevMode ? [{ debugName: \"snap\" }] : []));\n /**\n * @description\n * Mode for displaying tooltips, can be at the start, end, or both.\n * @default 'end'\n */\n this.tooltipMode = input('end', ...(ngDevMode ? [{ debugName: \"tooltipMode\" }] : []));\n /**\n * @description\n * Mode for snapping, can snap at the start, end, or both.\n * @default 'start'\n */\n this.snapMode = input('start', ...(ngDevMode ? [{ debugName: \"snapMode\" }] : []));\n /**\n * @description\n * Whether the slider should have steps.\n * @default true\n */\n this.hasStep = input(true, ...(ngDevMode ? [{ debugName: \"hasStep\" }] : []));\n /**\n * @description\n * Whether the slider should display snapping.\n * @default false\n */\n this.hasSnap = input(false, ...(ngDevMode ? [{ debugName: \"hasSnap\" }] : []));\n /**\n * @description\n * Whether the slider should display labels for snapping points.\n * @default Value derived from `hasSnap()`\n */\n this.hasLable = input(this.hasSnap(), ...(ngDevMode ? [{ debugName: \"hasLable\" }] : []));\n /**\n * @description\n * Whether the slider should display tooltips.\n * @default false\n */\n this.hasTooltip = input(false, ...(ngDevMode ? [{ debugName: \"hasTooltip\" }] : []));\n /**\n * @ignore\n */\n this.height = 0.25;\n /**\n * @ignore\n */\n this.newHeight = 'var(--ax-comp-range-slider-size)';\n /**\n * @ignore\n */\n this.range = computed(() => this.max() - this.min(), ...(ngDevMode ? [{ debugName: \"range\" }] : []));\n /**\n * @ignore\n */\n this.isHorizontal = computed(() => this.orientation() === 'horizontal', ...(ngDevMode ? [{ debugName: \"isHorizontal\" }] : []));\n /**\n * @ignore\n */\n this.isDual = computed(() => this.mode() === 'dual', ...(ngDevMode ? [{ debugName: \"isDual\" }] : []));\n /**\n * @ignore\n */\n this.correctMinMax = computed(() => this.max() - this.min() > 0, ...(ngDevMode ? [{ debugName: \"correctMinMax\" }] : []));\n /**\n * @ignore\n */\n this.calculateSnapBar = computed(() => {\n if (this.hasSnap()) {\n if (this.snap() <= 0) {\n console.error('Wrong Snap!');\n return null;\n }\n let array = [];\n for (let i = this.min(); i < this.max(); i += this.snap()) {\n array.push(i);\n }\n array = [...array, this.max()];\n if (array[0] < 0) {\n array = array.map((i) => i + -array[0]).sort((a, b) => a - b);\n }\n if (array[0] > 0) {\n array = array.map((i) => i - array[0]).sort((a, b) => a - b);\n }\n return array;\n }\n return null;\n }, ...(ngDevMode ? [{ debugName: \"calculateSnapBar\" }] : []));\n /**\n * @ignore\n */\n this.calculatePos = computed(() => {\n if (this.isDual() && this.values()) {\n return [\n ((this.values()[0] - this.min()) / this.range()) * 100,\n ((this.values()[1] - this.min()) / this.range()) * 100,\n ];\n }\n else {\n return ((this.values() - this.min()) / this.range()) * 100;\n }\n }, ...(ngDevMode ? [{ debugName: \"calculatePos\" }] : []));\n /**\n * @ignore\n */\n this.choosenHandler = undefined;\n /**\n * @ignore\n */\n this.sliderElement = null;\n /**\n * @ignore\n */\n this.AXRangeSliderHighlight = computed(() => this.isHorizontal()\n ? {\n left: this.isDual() ? this.calculatePos()[0] + '%' : '0%',\n width: this.isDual() ? this.calculatePos()[1] - this.calculatePos()[0] + '%' : this.calculatePos() + '%',\n }\n : {\n height: this.isDual() ? this.calculatePos()[1] - this.calculatePos()[0] + '%' : this.calculatePos() + '%',\n bottom: this.mode() === 'dual' ? this.calculatePos()[0] + '%' : '0%',\n }, ...(ngDevMode ? [{ debugName: \"AXRangeSliderHighlight\" }] : []));\n /**\n * @ignore\n */\n this.AXRangeSliderHandler1 = computed(() => this.isHorizontal()\n ? {\n left: this.isDual() ? this.calculatePos()[0] + '%' : this.calculatePos() + '%',\n }\n : {\n bottom: this.isDual()\n ? 'calc(' + this.calculatePos()[0] + '% - ' + 6 * this.height + 'rem)'\n : 'calc(' + this.calculatePos() + '% - ' + 6 * this.height + 'rem)',\n }, ...(ngDevMode ? [{ debugName: \"AXRangeSliderHandler1\" }] : []));\n /**\n * @ignore\n */\n this.AXRangeSliderHandler2 = computed(() => this.isHorizontal()\n ? {\n left: this.calculatePos()[1] + '%',\n }\n : {\n bottom: 'calc(' + this.calculatePos()[1] + '% - ' + 6 * this.height + 'rem)',\n }, ...(ngDevMode ? [{ debugName: \"AXRangeSliderHandler2\" }] : []));\n /**\n * @ignore\n */\n this.AXRangeSliderStep = computed(() => {\n if (this.isHorizontal()) {\n switch (this.snapMode()) {\n case 'both':\n return { top: '0', height: 8 * this.height + 'rem' };\n case 'start':\n return { top: 4 * this.height + 'rem', height: 4 * this.height + 'rem' };\n case 'end':\n return { top: -2 * this.height + 'rem', height: 4 * this.height + 'rem' };\n }\n }\n else {\n switch (this.snapMode()) {\n case 'both':\n return { top: '0', width: 8 * this.height + 'rem' };\n case 'start':\n return { left: 4 * this.height + 'rem', width: 4 * this.height + 'rem' };\n case 'end':\n return { left: -2 * this.height + 'rem', width: 4 * this.height + 'rem' };\n }\n }\n }, ...(ngDevMode ? [{ debugName: \"AXRangeSliderStep\" }] : []));\n /**\n * @ignore\n */\n this.AXRangeLabel = computed(() => {\n if (this.isHorizontal()) {\n switch (this.snapMode()) {\n case 'both':\n return { top: 6 * this.height + 'rem' };\n case 'start':\n return { top: 4 * this.height + 'rem' };\n case 'end':\n return { top: -6 * this.height + 'rem' };\n }\n }\n else {\n switch (this.snapMode()) {\n case 'both':\n return { left: 8 * this.height + 'rem' };\n case 'start':\n return { left: 4 * this.height + 'rem' };\n case 'end':\n return { left: -8 * this.height + 'rem' };\n }\n }\n }, ...(ngDevMode ? [{ debugName: \"AXRangeLabel\" }] : []));\n this.isUserInteraction = false;\n effect(() => {\n this.commitValue(this.values(), this.isUserInteraction);\n this.isUserInteraction = false;\n });\n effect(() => {\n if (this.correctMinMax()) {\n this.fixInitializeValues();\n this.fixChangingMode();\n }\n else {\n console.error(`Min = ${this.min()} And Max = ${this.max()} is not correct inputs.`);\n }\n });\n this.onValueChanged.subscribe((value) => {\n if (value?.value != undefined && value?.value != null && this.values() !== value.value)\n this.values.set(value.value);\n });\n }\n /**\n * @ignore\n */\n ngOnInit() {\n super.ngOnInit();\n if (!this.correctMinMax()) {\n console.error(`Min = ${this.min()} And Max = ${this.max()} is not correct inputs.`);\n }\n else {\n this.initializeValues();\n }\n }\n /**\n * @ignore\n */\n ngOnDestroy() {\n super.ngOnDestroy();\n if (isPlatformBrowser(this.platformID)) {\n window.removeEventListener('mousemove', this.moveListener);\n window.removeEventListener('mouseup', this.endListener);\n window.removeEventListener('touchmove', this.moveListener);\n window.removeEventListener('touchend', this.endListener);\n }\n }\n /**\n * @ignore\n */\n onStartHandler(event, circle) {\n this.zone.runOutsideAngular(() => {\n if (this.disabled || this.readonly || !this.correctMinMax())\n return;\n event.preventDefault();\n this.sliderElement = event.target.closest('.ax-range-slider');\n if (this.sliderElement && isPlatformBrowser(this.platformID)) {\n this.choosenHandler = circle;\n const moveListener = (moveEvent) => this.onMove(moveEvent, circle);\n const endListener = () => this.onEnd(moveListener, endListener);\n [this.moveListener, this.endListener] = [moveListener, endListener];\n window.addEventListener('mousemove', moveListener);\n window.addEventListener('mouseup', endListener);\n window.addEventListener('touchmove', moveListener, { passive: true });\n window.addEventListener('touchend', endListener);\n }\n });\n }\n /**\n * @ignore\n */\n onStartBar(event) {\n this.isUserInteraction = true;\n let circle = 'first';\n this.sliderElement = event.target.closest('.ax-range-slider');\n this.zone.runOutsideAngular(() => {\n if (!this.sliderElement || this.disabled || this.readonly)\n return;\n const calculatePercent = this.calculatePercentOnMove(event);\n const exactValue = this.getValueFromPercent(calculatePercent);\n let value = Number.parseFloat(exactValue.toFixed(2));\n if (this.hasStep()) {\n value = this.roundToStep(value);\n }\n if (this.isDual()) {\n if (Math.abs(exactValue - this.values()[0]) > Math.abs(exactValue - this.values()[1])) {\n this.values.set([this.values()[0], value]);\n circle = 'second';\n }\n else {\n if (this.values()[1] === this.min()) {\n this.values.set([this.values()[0], value]);\n circle = 'second';\n }\n else {\n this.values.set([value, this.values()[1]]);\n circle = 'first';\n }\n }\n }\n else {\n this.values.set(value);\n }\n });\n this.onStartHandler(event, circle);\n }\n /**\n * @ignore\n */\n onMove(event, circle) {\n this.isUserInteraction = true;\n if (!this.sliderElement)\n return;\n const calculatePercent = this.calculatePercentOnMove(event);\n let value = this.getValueFromPercent(calculatePercent);\n value = Number.parseFloat(value.toFixed(2));\n if (this.hasStep()) {\n value = this.roundToStep(value);\n }\n if (this.isDual()) {\n if (circle === 'first' && value <= this.values()[1]) {\n if (this.checkValues(value, 'first', this.values()[1]) && this.values()[0] !== value) {\n this.values.set([value, this.values()[1]]);\n }\n }\n else if (circle === 'second' && value >= this.values()[0] && this.values()[1] !== value) {\n if (this.checkValues(value, 'second', this.values()[0])) {\n this.values.set([this.values()[0], value]);\n }\n }\n }\n else {\n if (this.checkValue(value) && this.values() !== value) {\n this.values.set(value);\n }\n }\n }\n /**\n * @ignore\n */\n onEnd(moveListener, endListener) {\n window.removeEventListener('mousemove', moveListener);\n window.removeEventListener('mouseup', endListener);\n window.removeEventListener('touchmove', moveListener);\n window.removeEventListener('touchend', endListener);\n this.sliderElement = null;\n }\n /**\n * @ignore\n */\n initializeValues() {\n this.fixInitializeUndefined();\n this.fixInitializeValues();\n this.fixInitializeStep();\n }\n /**\n * @ignore\n */\n fixInitializeUndefined() {\n if (typeof this.values() === 'undefined') {\n if (this.isDual()) {\n this.values.set([this.min(), this.max()]);\n }\n else {\n this.values.set(this.min());\n }\n }\n }\n /**\n * @ignore\n */\n fixInitializeValues() {\n if (this.isDual() && this.values()[0] > this.values()[1]) {\n this.values.set([this.values()[1], this.values()[0]]);\n }\n if (typeof this.values() === 'number' && !this.checkValue(this.values())) {\n this.values.set(this.min());\n }\n else if (typeof this.values() !== 'number' && !this.checkValues(this.values()[0], 'first', this.values()[1])) {\n this.values.set([this.min(), this.max()]);\n }\n }\n /**\n * @ignore\n */\n fixInitializeStep() {\n if (this.step() !== 1) {\n if (this.isDual()) {\n this.values.update((old) => [this.roundToStep(old[0]), this.roundToStep(old[1])]);\n if (this.values()[0] === this.values()[1]) {\n this.values.update((old) => [this.roundToStep(old[0]), this.roundToStep(old[1]) + this.step()]);\n }\n }\n else {\n this.values.update((old) => this.roundToStep(old));\n }\n }\n }\n /**\n * @ignore\n */\n fixChangingMode() {\n if (typeof this.values() === 'number' && this.isDual()) {\n this.values.set([this.min(), this.max()]);\n }\n else if (typeof this.values() !== 'number' && !this.isDual()) {\n this.values.set(this.min());\n }\n }\n /**\n * @ignore\n */\n calculatePercentOnMove(event) {\n const sliderRect = this.sliderElement.getBoundingClientRect();\n let percent;\n if (this.isHorizontal()) {\n const clientX = event instanceof MouseEvent ? event.clientX : event.touches[0].clientX;\n const x = clientX - sliderRect.left;\n percent = (x / sliderRect.width) * 100;\n }\n else {\n const clientY = event instanceof MouseEvent ? event.clientY : event.touches[0].clientY;\n const y = -(clientY - sliderRect.bottom); //reverce slider from bottom to top\n percent = (y / sliderRect.height) * 100;\n }\n if (percent < 0) {\n percent = 0;\n }\n else if (percent > 100) {\n percent = 100;\n }\n return percent;\n }\n /**\n * @ignore\n */\n roundToStep(value) {\n const lower = Math.max(this.min(), Math.floor((value - this.min()) / this.step()) * this.step() + this.min());\n const upper = Math.min(this.max(), lower + this.step());\n if (value - lower < upper - value) {\n return lower;\n }\n else {\n return upper;\n }\n }\n /**\n * @ignore\n */\n checkValue(x) {\n if (x >= this.min() && x <= this.max())\n return true;\n else\n return false;\n }\n /**\n * @ignore\n */\n checkValues(value1, y, value2) {\n if (value1 >= this.min() && value1 <= this.max()) {\n if (y === 'first') {\n if (value1 <= value2 && value2 <= this.max())\n return true;\n else\n return false;\n }\n else {\n if (value1 >= value2 && value2 >= this.min())\n return true;\n else\n return false;\n }\n }\n else\n return false;\n }\n /**\n * @ignore\n */\n getValueFromPercent(value) {\n return this.min() + (value * (this.max() - this.min())) / 100;\n }\n /**\n * @ignore\n */\n getPercantage(value) {\n return this.range() !== 0 ? (value / this.range()) * 100 : 0;\n }\n /**\n * Increase a step to value if slider in single mode\n * and increase a step the second value if slider in dual mode\n * @method increaseStep\n */\n increaseStep() {\n if (this.isDual()) {\n const newValue = this.roundToStep(this.values()[1] + this.step());\n this.values.set([this.values()[0], newValue]);\n }\n else {\n const newValue = this.roundToStep(this.values() + this.step());\n this.values.set(newValue);\n }\n }\n /**\n * Decrease a step to value if slider in single mode\n * and decrease a step the second value if slider in dual mode\n * @method decreaseStep\n */\n decreaseStep() {\n if (this.isDual()) {\n const newValue = this.roundToStep(this.values()[0] - this.step());\n this.values.set([newValue, this.values()[1]]);\n }\n else {\n const newValue = this.roundToStep(this.values() - this.step());\n this.values.set(newValue);\n }\n }\n /**\n * @ignore\n */\n onWheel(event) {\n this.isUserInteraction = true;\n this.zone.runOutsideAngular(() => {\n event.preventDefault();\n if (!this.choosenHandler || this.readonly || this.disabled || !this.correctMinMax())\n return;\n let newValue;\n if (this.isDual()) {\n if (event.deltaY < 0) {\n if (this.choosenHandler === 'first') {\n newValue = this.roundToStep(this.values()[0] + this.step());\n if (this.checkValues(newValue, this.choosenHandler, this.values()[1]) && this.values()[0] !== newValue) {\n this.values.update((old) => [this.roundToStep(old[0] + this.step()), old[1]]);\n }\n }\n else {\n newValue = this.roundToStep(this.values()[1] + this.step());\n if (newValue <= this.max() && this.values()[1] !== newValue) {\n this.values.update((old) => [old[0], this.roundToStep(old[1] + this.step())]);\n }\n }\n }\n else {\n if (this.choosenHandler === 'first') {\n newValue = this.roundToStep(this.values()[0] - this.step());\n if (this.checkValues(newValue, this.choosenHandler, this.values()[1]) && this.values() !== newValue) {\n this.values.update((old) => [this.roundToStep(old[0] - this.step()), old[1]]);\n }\n }\n else {\n newValue = this.roundToStep(this.values()[1] - this.step());\n if (this.checkValues(newValue, this.choosenHandler, this.values()[0]) && this.values()[1] !== newValue) {\n this.values.update((old) => [old[0], this.roundToStep(old[1] - this.step())]);\n }\n }\n }\n }\n else {\n if (event.deltaY < 0) {\n if (this.checkValue(this.roundToStep(this.values() + this.step()))) {\n this.values.update((old) => this.roundToStep(old + this.step()));\n }\n }\n else {\n if (this.checkValue(this.roundToStep(this.values() - this.step()))) {\n this.values.update((old) => this.roundToStep(old - this.step()));\n }\n }\n }\n });\n }\n /**\n * @ignore\n */\n get __hostClass() {\n return [\n `ax-${this.color()}-solid`,\n `${this.disabled ? 'ax-state-disabled' : ''}`,\n `${this.readonly ? 'ax-state-readonly' : ''}`,\n ];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AXRangeSliderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.3\", type: AXRangeSliderComponent, isStandalone: true, selector: \"ax-range-slider\", inputs: { disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: false, isRequired: false, transformFunction: null }, readonly: { classPropertyName: \"readonly\", publicName: \"readonly\", isSignal: false, isRequired: false, transformFunction: null }, orientation: { classPropertyName: \"orientation\", publicName: \"orientation\", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: \"color\", publicName: \"color\", isSignal: true, isRequired: false, transformFunction: null }, values: { classPropertyName: \"values\", publicName: \"values\", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: \"mode\", publicName: \"mode\", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: \"min\", publicName: \"min\", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: \"max\", publicName: \"max\", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: \"step\", publicName: \"step\", isSignal: true, isRequired: false, transformFunction: null }, snap: { classPropertyName: \"snap\", publicName: \"snap\", isSignal: true, isRequired: false, transformFunction: null }, tooltipMode: { classPropertyName: \"tooltipMode\", publicName: \"tooltipMode\", isSignal: true, isRequired: false, transformFunction: null }, snapMode: { classPropertyName: \"snapMode\", publicName: \"snapMode\", isSignal: true, isRequired: false, transformFunction: null }, hasStep: { classPropertyName: \"hasStep\", publicName: \"hasStep\", isSignal: true, isRequired: false, transformFunction: null }, hasSnap: { classPropertyName: \"hasSnap\", publicName: \"hasSnap\", isSignal: true, isRequired: false, transformFunction: null }, hasLable: { classPropertyName: \"hasLable\", publicName: \"hasLable\", isSignal: true, isRequired: false, transformFunction: null }, hasTooltip: { classPropertyName: \"hasTooltip\", publicName: \"hasTooltip\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { values: \"valuesChange\" }, host: { listeners: { \"wheel\": \"onWheel($event)\" }, properties: { \"class\": \"this.__hostClass\" } }, providers: [\n { provide: AXValuableComponent, useExisting: AXRangeSliderComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXRangeSliderComponent),\n multi: true,\n },\n { provide: AXComponent, useExisting: AXRangeSliderComponent },\n ], usesInheritance: true, ngImport: i0, template: \"@if (correctMinMax()) {\\n <div class=\\\"ax-range-slider\\\" [class]=\\\"'ax-orientation-' + orientation()\\\">\\n <div class=\\\"ax-range-slider-bar\\\" (mousedown)=\\\"onStartBar($event)\\\" (touchstart)=\\\"onStartBar($event)\\\"></div>\\n <div\\n class=\\\"ax-range-slider-highlight\\\"\\n [ngStyle]=\\\"AXRangeSliderHighlight()\\\"\\n (mousedown)=\\\"onStartBar($event)\\\"\\n (touchstart)=\\\"onStartBar($event)\\\"\\n ></div>\\n\\n <div\\n class=\\\"ax-range-slider-handler\\\"\\n [ngStyle]=\\\"AXRangeSliderHandler1()\\\"\\n name=\\\"first\\\"\\n (mousedown)=\\\"onStartBar($event)\\\"\\n (touchstart)=\\\"onStartBar($event)\\\"\\n >\\n @if (hasTooltip()) {\\n <div class=\\\"ax-range-slider-tooltip\\\">{{ isDual() ? values()[0] : values() }}</div>\\n }\\n </div>\\n\\n @if (isDual()) {\\n <div\\n class=\\\"ax-range-slider-handler\\\"\\n [ngStyle]=\\\"AXRangeSliderHandler2()\\\"\\n name=\\\"second\\\"\\n (mousedown)=\\\"onStartBar($event)\\\"\\n (touchstart)=\\\"onStartBar($event)\\\"\\n >\\n @if (hasTooltip()) {\\n <div class=\\\"ax-range-slider-tooltip\\\">{{ values()[1] }}</div>\\n }\\n </div>\\n }\\n @if (hasSnap()) {\\n <div class=\\\"ax-range-slider-step\\\" [ngStyle]=\\\"AXRangeSliderStep()\\\">\\n @for (item of calculateSnapBar(); track $index) {\\n <div\\n class=\\\"ax-range-slider-steps\\\"\\n [ngStyle]=\\\"isHorizontal() ? { left: getPercantage(item) + '%' } : { bottom: getPercantage(item) + '%' }\\\"\\n >\\n @if (hasLable()) {\\n <div class=\\\"ax-range-slider-label\\\" [ngStyle]=\\\"AXRangeLabel()\\\">\\n {{ item + min() }}\\n </div>\\n }\\n </div>\\n }\\n </div>\\n }\\n </div>\\n}\\n\", styles: [\"ax-range-slider{--ax-comp-range-slider-size: .25rem;--ax-comp-range-slider-ring-size: .6rem}ax-range-slider{--ax-comp-range-slider-ring-color: var(--ax-comp-range-slider-color), .25}ax-range-slider.ax-primary-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-primary-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-primary-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-primary-surface)}ax-range-slider.ax-secondary-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-secondary-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-secondary-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-secondary-surface)}ax-range-slider.ax-success-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-success-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-success-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-success-surface)}ax-range-slider.ax-warning-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-warning-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-warning-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-warning-surface)}ax-range-slider.ax-danger-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-danger-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-danger-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-danger-surface)}ax-range-slider.ax-accent1-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent1-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent1-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent1-surface)}ax-range-slider.ax-accent2-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent2-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent2-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent2-surface)}ax-range-slider.ax-accent3-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent3-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent3-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent3-surface)}ax-range-slider.ax-accent4-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent4-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent4-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent4-surface)}ax-range-slider.ax-accent5-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent5-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent5-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent5-surface)}ax-range-slider.ax-accnt6-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accnt6-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accnt6-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accnt6-surface)}ax-range-slider.ax-accent7-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent7-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent7-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent7-surface)}ax-range-slider{display:flex;align-items:center;justify-content:center;padding:1rem;font-size:small;-webkit-user-select:none;user-select:none}ax-range-slider .ax-range-slider.ax-orientation-horizontal{position:relative;width:100%;height:calc(var(--ax-comp-range-slider-size) * 4)}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-bar{position:absolute;top:50%;left:0;width:100.1%;height:var(--ax-comp-range-slider-bar-height, var(--ax-comp-range-slider-size));transform:translateY(-50%);z-index:5;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-line-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-highlight{position:absolute;top:50%;height:calc(var(--ax-comp-range-slider-size) * 3 / 2);transform:translateY(-50%);z-index:6;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-handler{position:absolute;top:50%;width:var(--ax-comp-range-slider-handler-size, calc(var(--ax-comp-range-slider-size) * 6));height:var(--ax-comp-range-slider-handler-size, calc(var(--ax-comp-range-slider-size) * 6));z-index:10;background-color:rgba(var(--ax-comp-range-slider-color));border-radius:50%;cursor:pointer;transform:translate(-45%,-50%);transition:box-shadow .1s linear}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-handler:hover,ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-handler:active{box-shadow:0 0 0 calc(var(--ax-comp-range-slider-ring-size)) rgba(var(--ax-comp-range-slider-ring-color))}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-tooltip{position:absolute;left:calc(var(--ax-comp-range-slider-size) * 2.8);top:calc(var(--ax-comp-range-slider-size) * -2);background-color:rgba(var(--ax-comp-range-slider-color));color:rgba(var(--ax-comp-range-slider-tooltip-text-color));padding:5px 10px;border-radius:3px;white-space:nowrap;font-weight:600;transform:translate(-50%,-125%)}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-tooltip:after{content:\\\"\\\";position:absolute;top:1.75rem;left:50%;transform:translate(-50%);border-width:.5rem;border-style:solid;border-color:rgba(var(--ax-comp-range-slider-color)) transparent transparent transparent}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-step{position:absolute;display:flex;flex-direction:row;width:100%;z-index:4}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-step .ax-range-slider-steps{position:absolute;border-left:calc(var(--ax-comp-range-slider-size) / 2) solid rgba(var(--ax-sys-color-border-lightest-surface));height:50%}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-step .ax-range-slider-steps .ax-range-slider-label{position:relative;text-align:center;top:calc(var(--ax-comp-range-slider-size) * 2);left:-50%}ax-range-slider .ax-range-slider.ax-orientation-vertical{position:relative;width:calc(var(--ax-comp-range-slider-size) * 4);height:100%}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-bar{position:absolute;top:0;left:50%;width:var(--ax-comp-range-slider-size);height:100.1%;transform:translate(-50%);z-index:5;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-line-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-highlight{position:absolute;left:50%;width:calc(var(--ax-comp-range-slider-size) * 3 / 2);transform:translate(-50%);z-index:6;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-handler{position:absolute;left:50%;width:calc(var(--ax-comp-range-slider-size) * 6);height:calc(var(--ax-comp-range-slider-size) * 6);z-index:10;background-color:rgba(var(--ax-comp-range-slider-color));border-radius:50%;cursor:pointer;transform:translate(-50%,-55%);transition:background-color .2s ease}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-handler:active{border:1px solid transparent;box-shadow:var(--tw-ring-inset) 0 0 0 calc(.5rem + var(--tw-ring-offset-width)) rgba(var(--ax-comp-range-slider-color),.25)}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-tooltip{position:absolute;top:calc(var(--ax-comp-range-slider-size) * 8.5);left:calc(var(--ax-comp-range-slider-size) * -8);background-color:rgba(var(--ax-comp-range-slider-color));color:rgba(var(--ax-comp-range-slider-tooltip-text-color));padding:5px 10px;border-radius:3px;font-weight:600;white-space:nowrap;transform:translate(-50%,-125%)}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-tooltip:after{content:\\\"\\\";position:absolute;top:50%;left:97%;transform:translateY(-50%);border-width:.5rem;border-style:solid;border-color:transparent transparent transparent rgba(var(--ax-comp-range-slider-color))}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-step{position:absolute;display:flex;flex-direction:column;height:100%;z-index:4}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-step .ax-range-slider-steps{position:absolute;width:50%;border-top:calc(var(--ax-comp-range-slider-size) / 2) solid rgba(var(--ax-sys-color-border-lightest-surface))}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-step .ax-range-slider-steps .ax-range-slider-label{position:absolute;left:150%;top:calc(var(--ax-comp-range-slider-size) * -3)}ax-range-slider.ax-state-disabled{opacity:.5;cursor:not-allowed}\\n\"], dependencies: [{ kind: \"directive\", type: NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AXRangeSliderComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-range-slider', inputs: ['disabled', 'readonly'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n { provide: AXValuableComponent, useExisting: AXRangeSliderComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXRangeSliderComponent),\n multi: true,\n },\n { provide: AXComponent, useExisting: AXRangeSliderComponent },\n ], imports: [NgStyle], template: \"@if (correctMinMax()) {\\n <div class=\\\"ax-range-slider\\\" [class]=\\\"'ax-orientation-' + orientation()\\\">\\n <div class=\\\"ax-range-slider-bar\\\" (mousedown)=\\\"onStartBar($event)\\\" (touchstart)=\\\"onStartBar($event)\\\"></div>\\n <div\\n class=\\\"ax-range-slider-highlight\\\"\\n [ngStyle]=\\\"AXRangeSliderHighlight()\\\"\\n (mousedown)=\\\"onStartBar($event)\\\"\\n (touchstart)=\\\"onStartBar($event)\\\"\\n ></div>\\n\\n <div\\n class=\\\"ax-range-slider-handler\\\"\\n [ngStyle]=\\\"AXRangeSliderHandler1()\\\"\\n name=\\\"first\\\"\\n (mousedown)=\\\"onStartBar($event)\\\"\\n (touchstart)=\\\"onStartBar($event)\\\"\\n >\\n @if (hasTooltip()) {\\n <div class=\\\"ax-range-slider-tooltip\\\">{{ isDual() ? values()[0] : values() }}</div>\\n }\\n </div>\\n\\n @if (isDual()) {\\n <div\\n class=\\\"ax-range-slider-handler\\\"\\n [ngStyle]=\\\"AXRangeSliderHandler2()\\\"\\n name=\\\"second\\\"\\n (mousedown)=\\\"onStartBar($event)\\\"\\n (touchstart)=\\\"onStartBar($event)\\\"\\n >\\n @if (hasTooltip()) {\\n <div class=\\\"ax-range-slider-tooltip\\\">{{ values()[1] }}</div>\\n }\\n </div>\\n }\\n @if (hasSnap()) {\\n <div class=\\\"ax-range-slider-step\\\" [ngStyle]=\\\"AXRangeSliderStep()\\\">\\n @for (item of calculateSnapBar(); track $index) {\\n <div\\n class=\\\"ax-range-slider-steps\\\"\\n [ngStyle]=\\\"isHorizontal() ? { left: getPercantage(item) + '%' } : { bottom: getPercantage(item) + '%' }\\\"\\n >\\n @if (hasLable()) {\\n <div class=\\\"ax-range-slider-label\\\" [ngStyle]=\\\"AXRangeLabel()\\\">\\n {{ item + min() }}\\n </div>\\n }\\n </div>\\n }\\n </div>\\n }\\n </div>\\n}\\n\", styles: [\"ax-range-slider{--ax-comp-range-slider-size: .25rem;--ax-comp-range-slider-ring-size: .6rem}ax-range-slider{--ax-comp-range-slider-ring-color: var(--ax-comp-range-slider-color), .25}ax-range-slider.ax-primary-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-primary-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-primary-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-primary-surface)}ax-range-slider.ax-secondary-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-secondary-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-secondary-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-secondary-surface)}ax-range-slider.ax-success-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-success-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-success-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-success-surface)}ax-range-slider.ax-warning-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-warning-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-warning-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-warning-surface)}ax-range-slider.ax-danger-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-danger-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-danger-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-danger-surface)}ax-range-slider.ax-accent1-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent1-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent1-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent1-surface)}ax-range-slider.ax-accent2-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent2-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent2-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent2-surface)}ax-range-slider.ax-accent3-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent3-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent3-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent3-surface)}ax-range-slider.ax-accent4-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent4-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent4-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent4-surface)}ax-range-slider.ax-accent5-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent5-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent5-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent5-surface)}ax-range-slider.ax-accnt6-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accnt6-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accnt6-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accnt6-surface)}ax-range-slider.ax-accent7-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent7-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent7-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent7-surface)}ax-range-slider{display:flex;align-items:center;justify-content:center;padding:1rem;font-size:small;-webkit-user-select:none;user-select:none}ax-range-slider .ax-range-slider.ax-orientation-horizontal{position:relative;width:100%;height:calc(var(--ax-comp-range-slider-size) * 4)}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-bar{position:absolute;top:50%;left:0;width:100.1%;height:var(--ax-comp-range-slider-bar-height, var(--ax-comp-range-slider-size));transform:translateY(-50%);z-index:5;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-line-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-highlight{position:absolute;top:50%;height:calc(var(--ax-comp-range-slider-size) * 3 / 2);transform:translateY(-50%);z-index:6;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-handler{position:absolute;top:50%;width:var(--ax-comp-range-slider-handler-size, calc(var(--ax-comp-range-slider-size) * 6));height:var(--ax-comp-range-slider-handler-size, calc(var(--ax-comp-range-slider-size) * 6));z-index:10;background-color:rgba(var(--ax-comp-range-slider-color));border-radius:50%;cursor:pointer;transform:translate(-45%,-50%);transition:box-shadow .1s linear}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-handler:hover,ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-handler:active{box-shadow:0 0 0 calc(var(--ax-comp-range-slider-ring-size)) rgba(var(--ax-comp-range-slider-ring-color))}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-tooltip{position:absolute;left:calc(var(--ax-comp-range-slider-size) * 2.8);top:calc(var(--ax-comp-range-slider-size) * -2);background-color:rgba(var(--ax-comp-range-slider-color));color:rgba(var(--ax-comp-range-slider-tooltip-text-color));padding:5px 10px;border-radius:3px;white-space:nowrap;font-weight:600;transform:translate(-50%,-125%)}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-tooltip:after{content:\\\"\\\";position:absolute;top:1.75rem;left:50%;transform:translate(-50%);border-width:.5rem;border-style:solid;border-color:rgba(var(--ax-comp-range-slider-color)) transparent transparent transparent}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-step{position:absolute;display:flex;flex-direction:row;width:100%;z-index:4}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-step .ax-range-slider-steps{position:absolute;border-left:calc(var(--ax-comp-range-slider-size) / 2) solid rgba(var(--ax-sys-color-border-lightest-surface));height:50%}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-step .ax-range-slider-steps .ax-range-slider-label{position:relative;text-align:center;top:calc(var(--ax-comp-range-slider-size) * 2);left:-50%}ax-range-slider .ax-range-slider.ax-orientation-vertical{position:relative;width:calc(var(--ax-comp-range-slider-size) * 4);height:100%}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-bar{position:absolute;top:0;left:50%;width:var(--ax-comp-range-slider-size);height:100.1%;transform:translate(-50%);z-index:5;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-line-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-highlight{position:absolute;left:50%;width:calc(var(--ax-comp-range-slider-size) * 3 / 2);transform:translate(-50%);z-index:6;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-handler{position:absolute;left:50%;width:calc(var(--ax-comp-range-slider-size) * 6);height:calc(var(--ax-comp-range-slider-size) * 6);z-index:10;background-color:rgba(var(--ax-comp-range-slider-color));border-radius:50%;cursor:pointer;transform:translate(-50%,-55%);transition:background-color .2s ease}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-handler:active{border:1px solid transparent;box-shadow:var(--tw-ring-inset) 0 0 0 calc(.5rem + var(--tw-ring-offset-width)) rgba(var(--ax-comp-range-slider-color),.25)}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-tooltip{position:absolute;top:calc(var(--ax-comp-range-slider-size) * 8.5);left:calc(var(--ax-comp-range-slider-size) * -8);background-color:rgba(var(--ax-comp-range-slider-color));color:rgba(var(--ax-comp-range-slider-tooltip-text-color));padding:5px 10px;border-radius:3px;font-weight:600;white-space:nowrap;transform:translate(-50%,-125%)}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-tooltip:after{content:\\\"\\\";position:absolute;top:50%;left:97%;transform:translateY(-50%);border-width:.5rem;border-style:solid;border-color:transparent transparent transparent rgba(var(--ax-comp-range-slider-color))}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-step{position:absolute;display:flex;flex-direction:column;height:100%;z-index:4}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-step .ax-range-slider-steps{position:absolute;width:50%;border-top:calc(var(--ax-comp-range-slider-size) / 2) solid rgba(var(--ax-sys-color-border-lightest-surface))}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-step .ax-range-slider-steps .ax-range-slider-label{position:absolute;left:150%;top:calc(var(--ax-comp-range-slider-size) * -3)}ax-range-slider.ax-state-disabled{opacity:.5;cursor:not-allowed}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { onWheel: [{\n type: HostListener,\n args: ['wheel', ['$event']]\n }], __hostClass: [{\n type: HostBinding,\n args: ['class']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvcmFuZ2Utc2xpZGVyL3NyYy9saWIvcmFuZ2Utc2xpZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvcmFuZ2Utc2xpZGVyL3NyYy9saWIvcmFuZ2Utc2xpZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxXQUFXLEVBR1gsbUJBQW1CLEVBQ25CLGdCQUFnQixHQUNqQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBQ1gsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBUW5DOzs7Ozs7O0dBT0c7QUFtQkgsTUFBTSxPQUFPLHNCQUF1QixTQUFRLE9BQU8sQ0FBQyxDQUFBLGdCQUFvQyxDQUFBLENBQUM7SUFvUXZGO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFwUUYsU0FBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNYLGVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFcEQ7Ozs7V0FJRztRQUNILGdCQUFXLEdBQUcsS0FBSyxDQUFnQixZQUFZLHVEQUFDLENBQUM7UUFFakQ7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QUU7WUFDckU7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztnQkFDckQsS0FBSyxFQUFFLElBQUk7YUFDWjtZQUNELEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUU7U0FDOUQsaURDdkRILHV1REFxREEsNDJSREdZLE9BQU87OzJGQUVOLHNCQUFzQjtrQkFsQmxDLFNBQVM7K0JBQ0UsaUJBQWlCLFVBR25CLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxpQkFDakIsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDVCxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLHdCQUF3QixFQUFFO3dCQUNyRTs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx1QkFBdUIsQ0FBQzs0QkFDckQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0QsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsd0JBQXdCLEVBQUU7cUJBQzlELFdBQ1EsQ0FBQyxPQUFPLENBQUM7d0RBK2lCbEIsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFtRHJCLFdBQVc7c0JBRHRCLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFYQ29tcG9uZW50LFxuICBBWE9yaWVudGF0aW9uLFxuICBBWFN0eWxlQ29sb3JUeXBlLFxuICBBWFZhbHVhYmxlQ29tcG9uZW50LFxuICBNWFZhbHVlQ29tcG9uZW50LFxufSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIsIE5nU3R5bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgZm9yd2FyZFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgbW9kZWwsXG4gIE5nWm9uZSxcbiAgUExBVEZPUk1fSUQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY2xhc3NlcyB9IGZyb20gJ3BvbHl0eXBlJztcbmltcG9ydCB7XG4gIEFYUmFuZ2VTbGlkZXJNb2RlLFxuICBBWFJhbmdlU2xpZGVyU25hcE1vZGUsXG4gIEFYUmFuZ2VTbGlkZXJUb29sdGlwTW9kZSxcbiAgQVhSYW5nZVNsaWRlclZhbHVlLFxufSBmcm9tICcuL3JhbmdlLXNsaWRlci5jbGFzcyc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBIHJhbmdlIHNsaWRlciBmb3Igc2VsZWN0aW5nIGEgcmFuZ2Ugb2YgdmFsdWVzLCBzdXBwb3J0aW5nIGJvdGggc2luZ2xlIGFuZCBkdWFsIG1vZGVzLlxuICogVGhlIHNsaWRlciBvZmZlcnMgc3RlcCwgc25hcCwgYW5kIHRvb2x0aXAgY29uZmlndXJhdGlvbnMuXG4gKlxuICogQGV4YW1wbGVcbiAqIDxheC1yYW5nZS1zbGlkZXIgW21pbl09XCIwXCIgW21heF09XCIxMDBcIiBbc3RlcF09XCIxXCIgW21vZGVdPVwiJ2R1YWwnXCI+PC9heC1yYW5nZS1zbGlkZXI+XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LXJhbmdlLXNsaWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9yYW5nZS1zbGlkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yYW5nZS1zbGlkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ3JlYWRvbmx5J10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IEFYVmFsdWFibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFJhbmdlU2xpZGVyQ29tcG9uZW50IH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBWFJhbmdlU2xpZGVyQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAgeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYUmFuZ2VTbGlkZXJDb21wb25lbnQgfSxcbiAgXSxcbiAgaW1wb3J0czogW05nU3R5bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFJhbmdlU2xpZGVyQ29tcG9uZW50IGV4dGVuZHMgY2xhc3NlcyhNWFZhbHVlQ29tcG9uZW50PEFYUmFuZ2VTbGlkZXJWYWx1ZT4pIHtcbiAgcHJpdmF0ZSB6b25lID0gaW5qZWN0KE5nWm9uZSk7XG4gIHByb3RlY3RlZCBvdmVycmlkZSBwbGF0Zm9ybUlEID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBvcmllbnRhdGlvbiBvZiB0aGUgc2xpZGVyLCBlaXRoZXIgJ2hvcml6b250YWwnIG9yICd2ZXJ0aWNhbCcuXG4gICAqIEBkZWZhdWx0ICdob3Jpem9udGFsJ1xuICAgKi9cbiAgb3JpZW50YXRpb24gPSBpbnB1dDxBWE9yaWVudGF0aW9uPignaG9yaXpvbnRhbCcpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQ29sb3IgdGhlbWUgZm9yIHRoZSBzbGlkZXIsIGFmZmVjdGluZyBoaWdobGlnaHQsIHRvb2x0aXAsIGFuZCBoYW5kbGVyLlxuICAgKiBAZGVmYXVsdCAncHJpbWFyeSdcbiAgICovXG4gIGNvbG9yID0gaW5wdXQ8RXhjbHVkZTxBWFN0eWxlQ29sb3JUeXBlLCAnZGVmYXVsdCc+PigncHJpbWFyeScpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVGhlIHZhbHVlKHMpIG9mIHRoZSBzbGlkZXIuIENhbiBiZSBhIHNpbmdsZSBudW1iZXIgZm9yIHNpbmdsZSBtb2RlIG9yIGFuIGFycmF5IG9mIHR3byBudW1iZXJzIGZvciBkdWFsIG1vZGUuXG4gICAqL1xuICB2YWx1ZXMgPSBtb2RlbDxBWFJhbmdlU2xpZGVyVmFsdWU+KHRoaXMudmFsdWUpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVGhlIG1vZGUgb2YgdGhlIHNsaWRlciwgZWl0aGVyICdzaW5nbGUnIG9yICdkdWFsJy5cbiAgICogQGRlZmF1bHQgJ3NpbmdsZSdcbiAgICovXG4gIG1vZGUgPSBpbnB1dDxBWFJhbmdlU2xpZGVyTW9kZT4oJ3NpbmdsZScpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVGhlIG1pbmltdW0gdmFsdWUgb2YgdGhlIHNsaWRlci5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgbWluID0gaW5wdXQ8bnVtYmVyPigwKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBzbGlkZXIuXG4gICAqIEBkZWZhdWx0IDEwMFxuICAgKi9cbiAgbWF4ID0gaW5wdXQ8bnVtYmVyPigxMDApO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVGhlIHN0ZXAgaW5jcmVtZW50IGZvciB2YWx1ZSBjaGFuZ2VzLlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBzdGVwID0gaW5wdXQ8bnVtYmVyPigxKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBzbmFwcGluZyBpbmNyZW1lbnQgZm9yIHRoZSBzbGlkZXIuXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIHNuYXAgPSBpbnB1dDxudW1iZXI+KDEpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogTW9kZSBmb3IgZGlzcGxheWluZyB0b29sdGlwcywgY2FuIGJlIGF0IHRoZSBzdGFydCwgZW5kLCBvciBib3RoLlxuICAgKiBAZGVmYXVsdCAnZW5kJ1xuICAgKi9cbiAgdG9vbHRpcE1vZGUgPSBpbnB1dDxBWFJhbmdlU2xpZGVyVG9vbHRpcE1vZGU+KCdlbmQnKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIE1vZGUgZm9yIHNuYXBwaW5nLCBjYW4gc25hcCBhdCB0aGUgc3RhcnQsIGVuZCwgb3IgYm90aC5cbiAgICogQGRlZmF1bHQgJ3N0YXJ0J1xuICAgKi9cbiAgc25hcE1vZGUgPSBpbnB1dDxBWFJhbmdlU2xpZGVyU25hcE1vZGU+KCdzdGFydCcpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogV2hldGhlciB0aGUgc2xpZGVyIHNob3VsZCBoYXZlIHN0ZXBzLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBoYXNTdGVwID0gaW5wdXQodHJ1ZSk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBXaGV0aGVyIHRoZSBzbGlkZXIgc2hvdWxkIGRpc3BsYXkgc25hcHBpbmcuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBoYXNTbmFwID0gaW5wdXQoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogV2hldGhlciB0aGUgc2xpZGVyIHNob3VsZCBkaXNwbGF5IGxhYmVscyBmb3Igc25hcHBpbmcgcG9pbnRzLlxuICAgKiBAZGVmYXVsdCBWYWx1ZSBkZXJpdmVkIGZyb20gYGhhc1NuYXAoKWBcbiAgICovXG4gIGhhc0xhYmxlID0gaW5wdXQodGhpcy5oYXNTbmFwKCkpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogV2hldGhlciB0aGUgc2xpZGVyIHNob3VsZCBkaXNwbGF5IHRvb2x0aXBzLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgaGFzVG9vbHRpcCA9IGlucHV0KGZhbHNlKTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgaGVpZ2h0ID0gMC4yNTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG5ld0hlaWdodCA9ICd2YXIoLS1heC1jb21wLXJhbmdlLXNsaWRlci1zaXplKSc7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICByYW5nZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMubWF4KCkgLSB0aGlzLm1pbigpKTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGlzSG9yaXpvbnRhbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3JpZW50YXRpb24oKSA9PT0gJ2hvcml6b250YWwnKTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGlzRHVhbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMubW9kZSgpID09PSAnZHVhbCcpO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY29ycmVjdE1pbk1heCA9IGNvbXB1dGVkKCgpID0+IHRoaXMubWF4KCkgLSB0aGlzLm1pbigpID4gMCk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuXG4gIHByb3RlY3RlZCBjYWxjdWxhdGVTbmFwQmFyID0gY29tcHV0ZWQ8bnVtYmVyW10gfCBudWxsPigoKSA9PiB7XG4gICAgaWYgKHRoaXMuaGFzU25hcCgpKSB7XG4gICAgICBpZiAodGhpcy5zbmFwKCkgPD0gMCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdXcm9uZyBTbmFwIScpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGxldCBhcnJheSA9IFtdO1xuICAgICAgZm9yIChsZXQgaSA9IHRoaXMubWluKCk7IGkgPCB0aGlzLm1heCgpOyBpICs9IHRoaXMuc25hcCgpKSB7XG4gICAgICAgIGFycmF5LnB1c2goaSk7XG4gICAgICB9XG4gICAgICBhcnJheSA9IFsuLi5hcnJheSwgdGhpcy5tYXgoKV07XG4gICAgICBpZiAoYXJyYXlbMF0gPCAwKSB7XG4gICAgICAgIGFycmF5ID0gYXJyYXkubWFwKChpKSA9PiBpICsgLWFycmF5WzBdKS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gICAgICB9XG4gICAgICBpZiAoYXJyYXlbMF0gPiAwKSB7XG4gICAgICAgIGFycmF5ID0gYXJyYXkubWFwKChpKSA9PiBpIC0gYXJyYXlbMF0pLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH0pO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGNhbGN1bGF0ZVBvcyA9IGNvbXB1dGVkPEFYUmFuZ2VTbGlkZXJWYWx1ZT4oKCkgPT4ge1xuICAgIGlmICh0aGlzLmlzRHVhbCgpICYmIHRoaXMudmFsdWVzKCkpIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgICgodGhpcy52YWx1ZXMoKVswXSAtIHRoaXMubWluKCkpIC8gdGhpcy5yYW5nZSgpKSAqIDEwMCxcbiAgICAgICAgKCh0aGlzLnZhbHVlcygpWzFdIC0gdGhpcy5taW4oKSkgLyB0aGlzLnJhbmdlKCkpICogMTAwLFxuICAgICAgXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICgoKHRoaXMudmFsdWVzKCkgYXMgbnVtYmVyKSAtIHRoaXMubWluKCkpIC8gdGhpcy5yYW5nZSgpKSAqIDEwMDtcbiAgICB9XG4gIH0pO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBjaG9vc2VuSGFuZGxlcjogJ2ZpcnN0JyB8ICdzZWNvbmQnIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBzbGlkZXJFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIEFYUmFuZ2VTbGlkZXJIaWdobGlnaHQgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuaXNIb3Jpem9udGFsKClcbiAgICAgID8ge1xuICAgICAgICAgIGxlZnQ6IHRoaXMuaXNEdWFsKCkgPyB0aGlzLmNhbGN1bGF0ZVBvcygpWzBdICsgJyUnIDogJzAlJyxcbiAgICAgICAgICB3aWR0aDogdGhpcy5pc0R1YWwoKSA/IHRoaXMuY2FsY3VsYXRlUG9zKClbMV0gLSB0aGlzLmNhbGN1bGF0ZVBvcygpWzBdICsgJyUnIDogdGhpcy5jYWxjdWxhdGVQb3MoKSArICclJyxcbiAgICAgICAgfVxuICAgICAgOiB7XG4gICAgICAgICAgaGVpZ2h0OiB0aGlzLmlzRHVhbCgpID8gdGhpcy5jYWxjdWxhdGVQb3MoKVsxXSAtIHRoaXMuY2FsY3VsYXRlUG9zKClbMF0gKyAnJScgOiB0aGlzLmNhbGN1bGF0ZVBvcygpICsgJyUnLFxuICAgICAgICAgIGJvdHRvbTogdGhpcy5tb2RlKCkgPT09ICdkdWFsJyA/IHRoaXMuY2FsY3VsYXRlUG9zKClbMF0gKyAnJScgOiAnMCUnLFxuICAgICAgICB9LFxuICApO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIEFYUmFuZ2VTbGlkZXJIYW5kbGVyMSA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5pc0hvcml6b250YWwoKVxuICAgICAgPyB7XG4gICAgICAgICAgbGVmdDogdGhpcy5pc0R1YWwoKSA/IHRoaXMuY2FsY3VsYXRlUG9zKClbMF0gKyAnJScgOiAodGhpcy5jYWxjdWxhdGVQb3MoKSBhcyBudW1iZXIpICsgJyUnLFxuICAgICAgICB9XG4gICAgICA6IHtcbiAgICAgICAgICBib3R0b206IHRoaXMuaXNEdWFsKClcbiAgICAgICAgICAgID8gJ2NhbGMoJyArIHRoaXMuY2FsY3VsYXRlUG9zKClbMF0gKyAnJSAtICcgKyA2ICogdGhpcy5oZWlnaHQgKyAncmVtKSdcbiAgICAgICAgICAgIDogJ2NhbGMoJyArIHRoaXMuY2FsY3VsYXRlUG9zKCkgKyAnJSAtICcgKyA2ICogdGhpcy5oZWlnaHQgKyAncmVtKScsXG4gICAgICAgIH0sXG4gICk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgQVhSYW5nZVNsaWRlckhhbmRsZXIyID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmlzSG9yaXpvbnRhbCgpXG4gICAgICA/IHtcbiAgICAgICAgICBsZWZ0OiB0aGlzLmNhbGN1bGF0ZVBvcygpWzFdICsgJyUnLFxuICAgICAgICB9XG4gICAgICA6IHtcbiAgICAgICAgICBib3R0b206ICdjYWxjKCcgKyB0aGlzLmNhbGN1bGF0ZVBvcygpWzFdICsgJyUgLSAnICsgNiAqIHRoaXMuaGVpZ2h0ICsgJ3JlbSknLFxuICAgICAgICB9LFxuICApO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIEFYUmFuZ2VTbGlkZXJTdGVwID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLmlzSG9yaXpvbnRhbCgpKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMuc25hcE1vZGUoKSkge1xuICAgICAgICBjYXNlICdib3RoJzpcbiAgICAgICAgICByZXR1cm4geyB0b3A6ICcwJywgaGVpZ2h0OiA4ICogdGhpcy5oZWlnaHQgKyAncmVtJyB9O1xuICAgICAgICBjYXNlICdzdGFydCc6XG4gICAgICAgICAgcmV0dXJuIHsgdG9wOiA0ICogdGhpcy5oZWlnaHQgKyAncmVtJywgaGVpZ2h0OiA0ICogdGhpcy5oZWlnaHQgKyAncmVtJyB9O1xuICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgIHJldHVybiB7IHRvcDogLTIgKiB0aGlzLmhlaWdodCArICdyZW0nLCBoZWlnaHQ6IDQgKiB0aGlzLmhlaWdodCArICdyZW0nIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXRjaCAodGhpcy5zbmFwTW9kZSgpKSB7XG4gICAgICAgIGNhc2UgJ2JvdGgnOlxuICAgICAgICAgIHJldHVybiB7IHRvcDogJzAnLCB3aWR0aDogOCAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScgfTtcbiAgICAgICAgY2FzZSAnc3RhcnQnOlxuICAgICAgICAgIHJldHVybiB7IGxlZnQ6IDQgKiB0aGlzLmhlaWdodCArICdyZW0nLCB3aWR0aDogNCAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScgfTtcbiAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICByZXR1cm4geyBsZWZ0OiAtMiAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScsIHdpZHRoOiA0ICogdGhpcy5oZWlnaHQgKyAncmVtJyB9O1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgQVhSYW5nZUxhYmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLmlzSG9yaXpvbnRhbCgpKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMuc25hcE1vZGUoKSkge1xuICAgICAgICBjYXNlICdib3RoJzpcbiAgICAgICAgICByZXR1cm4geyB0b3A6IDYgKiB0aGlzLmhlaWdodCArICdyZW0nIH07XG4gICAgICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgICAgICByZXR1cm4geyB0b3A6IDQgKiB0aGlzLmhlaWdodCArICdyZW0nIH07XG4gICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgcmV0dXJuIHsgdG9wOiAtNiAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc3dpdGNoICh0aGlzLnNuYXBNb2RlKCkpIHtcbiAgICAgICAgY2FzZSAnYm90aCc6XG4gICAgICAgICAgcmV0dXJuIHsgbGVmdDogOCAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScgfTtcbiAgICAgICAgY2FzZSAnc3RhcnQnOlxuICAgICAgICAgIHJldHVybiB7IGxlZnQ6IDQgKiB0aGlzLmhlaWdodCArICdyZW0nIH07XG4gICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgcmV0dXJuIHsgbGVmdDogLTggKiB0aGlzLmhlaWdodCArICdyZW0nIH07XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgaXNVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgdGhpcy5jb21taXRWYWx1ZSh0aGlzLnZhbHVlcygpLCB0aGlzLmlzVXNlckludGVyYWN0aW9uKTtcbiAgICAgIHRoaXMuaXNVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTtcbiAgICB9KTtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY29ycmVjdE1pbk1heCgpKSB7XG4gICAgICAgIHRoaXMuZml4SW5pdGlhbGl6ZVZhbHVlcygpO1xuICAgICAgICB0aGlzLmZpeENoYW5naW5nTW9kZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgTWluID0gJHt0aGlzLm1pbigpfSBBbmQgTWF4ID0gJHt0aGlzLm1heCgpfSBpcyBub3QgY29ycmVjdCBpbnB1dHMuYCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5vblZhbHVlQ2hhbmdlZC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICBpZiAodmFsdWU/LnZhbHVlICE9IHVuZGVmaW5lZCAmJiB2YWx1ZT8udmFsdWUgIT0gbnVsbCAmJiB0aGlzLnZhbHVlcygpICE9PSB2YWx1ZS52YWx1ZSlcbiAgICAgICAgdGhpcy52YWx1ZXMuc2V0KHZhbHVlLnZhbHVlKTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgaWYgKCF0aGlzLmNvcnJlY3RNaW5NYXgoKSkge1xuICAgICAgY29uc29sZS5lcnJvcihgTWluID0gJHt0aGlzLm1pbigpfSBBbmQgTWF4ID0gJHt0aGlzLm1heCgpfSBpcyBub3QgY29ycmVjdCBpbnB1dHMuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVZhbHVlcygpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLm1vdmVMaXN0ZW5lcik7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuZW5kTGlzdGVuZXIpO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHRoaXMubW92ZUxpc3RlbmVyKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIHRoaXMuZW5kTGlzdGVuZXIpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIG1vdmVMaXN0ZW5lcjtcbiAgcHJpdmF0ZSBlbmRMaXN0ZW5lcjtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBvblN0YXJ0SGFuZGxlcihldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQsIGNpcmNsZTogJ2ZpcnN0JyB8ICdzZWNvbmQnKTogdm9pZCB7XG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkgfHwgIXRoaXMuY29ycmVjdE1pbk1heCgpKSByZXR1cm47XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5zbGlkZXJFbGVtZW50ID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdCgnLmF4LXJhbmdlLXNsaWRlcicpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgaWYgKHRoaXMuc2xpZGVyRWxlbWVudCAmJiBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICAgIHRoaXMuY2hvb3NlbkhhbmRsZXIgPSBjaXJjbGU7XG4gICAgICAgIGNvbnN0IG1vdmVMaXN0ZW5lciA9IChtb3ZlRXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KSA9PiB0aGlzLm9uTW92ZShtb3ZlRXZlbnQsIGNpcmNsZSk7XG4gICAgICAgIGNvbnN0IGVuZExpc3RlbmVyID0gKCkgPT4gdGhpcy5vbkVuZChtb3ZlTGlzdGVuZXIsIGVuZExpc3RlbmVyKTtcbiAgICAgICAgW3RoaXMubW92ZUxpc3RlbmVyLCB0aGlzLmVuZExpc3RlbmVyXSA9IFttb3ZlTGlzdGVuZXIsIGVuZExpc3RlbmVyXTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdmVMaXN0ZW5lcik7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgZW5kTGlzdGVuZXIpO1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgbW92ZUxpc3RlbmVyLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIGVuZExpc3RlbmVyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIG9uU3RhcnRCYXIoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KSB7XG4gICAgdGhpcy5pc1VzZXJJbnRlcmFjdGlvbiA9IHRydWU7XG5cbiAgICBsZXQgY2lyY2xlOiAnZmlyc3QnIHwgJ3NlY29uZCcgPSAnZmlyc3QnO1xuICAgIHRoaXMuc2xpZGVyRWxlbWVudCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoJy5heC1yYW5nZS1zbGlkZXInKSBhcyBIVE1MRWxlbWVudDtcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLnNsaWRlckVsZW1lbnQgfHwgdGhpcy5kaXNhYmxlZCB8fCB0aGlzLnJlYWRvbmx5KSByZXR1cm47XG4gICAgICBjb25zdCBjYWxjdWxhdGVQZXJjZW50ID0gdGhpcy5jYWxjdWxhdGVQZXJjZW50T25Nb3ZlKGV2ZW50KTtcbiAgICAgIGNvbnN0IGV4YWN0VmFsdWUgPSB0aGlzLmdldFZhbHVlRnJvbVBlcmNlbnQoY2FsY3VsYXRlUGVyY2VudCk7XG4gICAgICBsZXQgdmFsdWUgPSBOdW1iZXIucGFyc2VGbG9hdChleGFjdFZhbHVlLnRvRml4ZWQoMikpO1xuICAgICAgaWYgKHRoaXMuaGFzU3RlcCgpKSB7XG4gICAgICAgIHZhbHVlID0gdGhpcy5yb3VuZFRvU3RlcCh2YWx1ZSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc0R1YWwoKSkge1xuICAgICAgICBpZiAoTWF0aC5hYnMoZXhhY3RWYWx1ZSAtIHRoaXMudmFsdWVzKClbMF0pID4gTWF0aC5hYnMoZXhhY3RWYWx1ZSAtIHRoaXMudmFsdWVzKClbMV0pKSB7XG4gICAgICAgICAgdGhpcy52YWx1ZXMuc2V0KFt0aGlzLnZhbHVlcygpWzBdLCB2YWx1ZV0pO1xuICAgICAgICAgIGNpcmNsZSA9ICdzZWNvbmQnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLnZhbHVlcygpWzFdID09PSB0aGlzLm1pbigpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlcy5zZXQoW3RoaXMudmFsdWVzKClbMF0sIHZhbHVlXSk7XG4gICAgICAgICAgICBjaXJjbGUgPSAnc2Vjb25kJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy52YWx1ZXMuc2V0KFt2YWx1ZSwgdGhpcy52YWx1ZXMoKVsxXV0pO1xuICAgICAgICAgICAgY2lyY2xlID0gJ2ZpcnN0JztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudmFsdWVzLnNldCh2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5vblN0YXJ0SGFuZGxlcihldmVudCwgY2lyY2xlKTtcbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIG9uTW92ZShldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQsIGNpcmNsZTogJ2ZpcnN0JyB8ICdzZWNvbmQnKTogdm9pZCB7XG4gICAgdGhpcy5pc1VzZXJJbnRlcmFjdGlvbiA9IHRydWU7XG5cbiAgICBpZiAoIXRoaXMuc2xpZGVyRWxlbWVudCkgcmV0dXJuO1xuICAgIGNvbnN0IGNhbGN1bGF0ZVBlcmNlbnQgPSB0aGlzLmNhbGN1bGF0ZVBlcmNlbnRPbk1vdmUoZXZlbnQpO1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWVGcm9tUGVyY2VudChjYWxjdWxhdGVQZXJjZW50KTtcbiAgICB2YWx1ZSA9IE51bWJlci5wYXJzZUZsb2F0KHZhbHVlLnRvRml4ZWQoMikpO1xuICAgIGlmICh0aGlzLmhhc1N0ZXAoKSkge1xuICAgICAgdmFsdWUgPSB0aGlzLnJvdW5kVG9TdGVwKHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNEdWFsKCkpIHtcbiAgICAgIGlmIChjaXJjbGUgPT09ICdmaXJzdCcgJiYgdmFsdWUgPD0gdGhpcy52YWx1ZXMoKVsxXSkge1xuICAgICAgICBpZiAodGhpcy5jaGVja1ZhbHVlcyh2YWx1ZSwgJ2ZpcnN0JywgdGhpcy52YWx1ZXMoKVsxXSkgJiYgdGhpcy52YWx1ZXMoKVswXSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICB0aGlzLnZhbHVlcy5zZXQoW3ZhbHVlLCB0aGlzLnZhbHVlcygpWzFdXSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2lyY2xlID09PSAnc2Vjb25kJyAmJiB2YWx1ZSA+PSB0aGlzLnZhbHVlcygpWzBdICYmIHRoaXMudmFsdWVzKClbMV0gIT09IHZhbHVlKSB7XG4gICAgICAgIGlmICh0aGlzLmNoZWNrVmFsdWVzKHZhbHVlLCAnc2Vjb25kJywgdGhpcy52YWx1ZXMoKVswXSkpIHtcbiAgICAgICAgICB0aGlzLnZhbHVlcy5zZXQoW3RoaXMudmFsdWVzKClbMF0sIHZhbHVlXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuY2hlY2tWYWx1ZSh2YWx1ZSkgJiYgdGhpcy52YWx1ZXMoKSAhPT0gdmFsdWUpIHtcbiAgICAgICAgdGhpcy52YWx1ZXMuc2V0KHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBvbkVuZChtb3ZlTGlzdGVuZXI6IChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpID0+IHZvaWQsIGVuZExpc3RlbmVyOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdmVMaXN0ZW5lcik7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBlbmRMaXN0ZW5lcik7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIG1vdmVMaXN0ZW5lcik7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgZW5kTGlzdGVuZXIpO1xuICAgIHRoaXMuc2xpZGVyRWxlbWVudCA9IG51bGw7XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVZhbHVlcygpIHtcbiAgICB0aGlzLmZpeEluaXRpYWxpemVVbmRlZmluZWQoKTtcbiAgICB0aGlzLmZpeEluaXRpYWxpemVWYWx1ZXMoKTtcbiAgICB0aGlzLmZpeEluaXRpYWxpemVTdGVwKCk7XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZml4SW5pdGlhbGl6ZVVuZGVmaW5lZCgpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMudmFsdWVzKCkgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBpZiAodGhpcy5pc0R1YWwoKSkge1xuICAgICAgICB0aGlzLnZhbHVlcy5zZXQoW3RoaXMubWluKCksIHRoaXMubWF4KCldKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudmFsdWVzLnNldCh0aGlzLm1pbigpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZml4SW5pdGlhbGl6ZVZhbHVlcygpIHtcbiAgICBpZiAodGhpcy5pc0R1YWwoKSAmJiB0aGlzLnZhbHVlcygpWzBdID4gdGhpcy52YWx1ZXMoKVsxXSkge1xuICAgICAgdGhpcy52YWx1ZXMuc2V0KFt0aGlzLnZhbHVlcygpWzFdLCB0aGlzLnZhbHVlcygpWzBdXSk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZXMoKSA9PT0gJ251bWJlcicgJiYgIXRoaXMuY2hlY2tWYWx1ZSh0aGlzLnZhbHVlcygpIGFzIG51bWJlcikpIHtcbiAgICAgIHRoaXMudmFsdWVzLnNldCh0aGlzLm1pbigpKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLnZhbHVlcygpICE9PSAnbnVtYmVyJyAmJiAhdGhpcy5jaGVja1ZhbHVlcyh0aGlzLnZhbHVlcygpWzBdLCAnZmlyc3QnLCB0aGlzLnZhbHVlcygpWzFdKSkge1xuICAgICAgdGhpcy52YWx1ZXMuc2V0KFt0aGlzLm1pbigpLCB0aGlzLm1heCgpXSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGZpeEluaXRpYWxpemVTdGVwKCkge1xuICAgIGlmICh0aGlzLnN0ZXAoKSAhPT0gMSkge1xuICAgICAgaWYgKHRoaXMuaXNEdWFsKCkpIHtcbiAgICAgICAgdGhpcy52YWx1ZXMudXBkYXRlKChvbGQpID0+IFt0aGlzLnJvdW5kVG9TdGVwKG9sZFswXSksIHRoaXMucm91bmRUb1N0ZXAob2xkWzFdKV0pO1xuICAgICAgICBpZiAodGhpcy52YWx1ZXMoKVswXSA9PT0gdGhpcy52YWx1ZXMoKVsxXSkge1xuICAgICAgICAgIHRoaXMudmFsdWVzLnVwZGF0ZSgob2xkKSA9PiBbdGhpcy5yb3VuZFRvU3RlcChvbGRbMF0pLCB0aGlzLnJvdW5kVG9TdGVwKG9sZFsxXSkgKyB0aGlzLnN0ZXAoKV0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnZhbHVlcy51cGRhdGUoKG9sZCkgPT4gdGhpcy5yb3VuZFRvU3RlcChvbGQgYXMgbnVtYmVyKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGZpeENoYW5naW5nTW9kZSgpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMudmFsdWVzKCkgPT09ICdudW1iZXInICYmIHRoaXMuaXNEdWFsKCkpIHtcbiAgICAgIHRoaXMudmFsdWVzLnNldChbdGhpcy5taW4oKSwgdGhpcy5tYXgoKV0pO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMudmFsdWVzKCkgIT09ICdudW1iZXInICYmICF0aGlzLmlzRHVhbCgpKSB7XG4gICAgICB0aGlzLnZhbHVlcy5zZXQodGhpcy5taW4oKSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGNhbGN1bGF0ZVBlcmNlbnRPbk1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KTogbnVtYmVyIHtcbiAgICBjb25zdCBzbGlkZXJSZWN0ID0gdGhpcy5zbGlkZXJFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGxldCBwZXJjZW50OiBudW1iZXI7XG4gICAgaWYgKHRoaXMuaXNIb3Jpem9udGFsKCkpIHtcbiAgICAgIGNvbnN0IGNsaWVudFggPSBldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQgPyBldmVudC5jbGllbnRYIDogKGV2ZW50IGFzIFRvdWNoRXZlbnQpLnRvdWNoZXNbMF0uY2xpZW50WDtcbiAgICAgIGNvbnN0IHggPSBjbGllbnRYIC0gc2xpZGVyUmVjdC5sZWZ0O1xuICAgICAgcGVyY2VudCA9ICh4IC8gc2xpZGVyUmVjdC53aWR0aCkgKiAxMDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNsaWVudFkgPSBldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQgPyBldmVudC5jbGllbnRZIDogKGV2ZW50IGFzIFRvdWNoRXZlbnQpLnRvdWNoZXNbMF0uY2xpZW50WTtcbiAgICAgIGNvbnN0IHkgPSAtKGNsaWVudFkgLSBzbGlkZXJSZWN0LmJvdHRvbSk7IC8vcmV2ZXJjZSBzbGlkZXIgZnJvbSBib3R0b20gdG8gdG9wXG4gICAgICBwZXJjZW50ID0gKHkgLyBzbGlkZXJSZWN0LmhlaWdodCkgKiAxMDA7XG4gICAgfVxuICAgIGlmIChwZXJjZW50IDwgMCkge1xuICAgICAgcGVyY2VudCA9IDA7XG4gICAgfSBlbHNlIGlmIChwZXJjZW50ID4gMTAwKSB7XG4gICAgICBwZXJjZW50ID0gMTAwO1xuICAgIH1cbiAgICByZXR1cm4gcGVyY2VudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIHJvdW5kVG9TdGVwKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IGxvd2VyID0gTWF0aC5tYXgodGhpcy5taW4oKSwgTWF0aC5mbG9vcigodmFsdWUgLSB0aGlzLm1pbigpKSAvIHRoaXMuc3RlcCgpKSAqIHRoaXMuc3RlcCgpICsgdGhpcy5taW4oKSk7XG4gICAgY29uc3QgdXBwZXIgPSBNYXRoLm1pbih0aGlzLm1heCgpLCBsb3dlciArIHRoaXMuc3RlcCgpKTtcbiAgICBpZiAodmFsdWUgLSBsb3dlciA8IHVwcGVyIC0gdmFsdWUpIHtcbiAgICAgIHJldHVybiBsb3dlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVwcGVyO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGNoZWNrVmFsdWUoeDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgaWYgKHggPj0gdGhpcy5taW4oKSAmJiB4IDw9IHRoaXMubWF4KCkpIHJldHVybiB0cnVlO1xuICAgIGVsc2UgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGNoZWNrVmFsdWVzKHZhbHVlMTogbnVtYmVyLCB5OiAnZmlyc3QnIHwgJ3NlY29uZCcsIHZhbHVlMjogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgaWYgKHZhbHVlMSA+PSB0aGlzLm1pbigpICYmIHZhbHVlMSA8PSB0aGlzLm1heCgpKSB7XG4gICAgICBpZiAoeSA9PT0gJ2ZpcnN0Jykge1xuICAgICAgICBpZiAodmFsdWUxIDw9IHZhbHVlMiAmJiB2YWx1ZTIgPD0gdGhpcy5tYXgoKSkgcmV0dXJuIHRydWU7XG4gICAgICAgIGVsc2UgcmV0dXJuIGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHZhbHVlMSA+PSB2YWx1ZTIgJiYgdmFsdWUyID49IHRoaXMubWluKCkpIHJldHVybiB0cnVlO1xuICAgICAgICBlbHNlIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0VmFsdWVGcm9tUGVyY2VudCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMubWluKCkgKyAodmFsdWUgKiAodGhpcy5tYXgoKSAtIHRoaXMubWluKCkpKSAvIDEwMDtcbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldFBlcmNhbnRhZ2UodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucmFuZ2UoKSAhPT0gMCA/ICh2YWx1ZSAvIHRoaXMucmFuZ2UoKSkgKiAxMDAgOiAwO1xuICB9XG4gIC8qKlxuICAgKiBJbmNyZWFzZSBhIHN0ZXAgdG8gdmFsdWUgaWYgc2xpZGVyIGluIHNpbmdsZSBtb2RlXG4gICAqIGFuZCBpbmNyZWFzZSBhIHN0ZXAgdGhlIHNlY29uZCB2YWx1ZSBpZiBzbGlkZXIgaW4gZHVhbCBtb2RlXG4gICAqIEBtZXRob2QgaW5jcmVhc2VTdGVwXG4gICAqL1xuICBwdWJsaWMgaW5jcmVhc2VTdGVwKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRHVhbCgpKSB7XG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMucm91bmRUb1N0ZXAodGhpcy52YWx1ZXMoKVsxXSArIHRoaXMuc3RlcCgpKTtcbiAgICAgIHRoaXMudmFsdWVzLnNldChbdGhpcy52YWx1ZXMoKVswXSwgbmV3VmFsdWVdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLnJvdW5kVG9TdGVwKCh0aGlzLnZhbHVlcygpIGFzIG51bWJlcikgKyB0aGlzLnN0ZXAoKSk7XG4gICAgICB0aGlzLnZhbHVlcy5zZXQobmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogRGVjcmVhc2UgYSBzdGVwIHRvIHZhbHVlIGlmIHNsaWRlciBpbiBzaW5nbGUgbW9kZVxuICAgKiBhbmQgZGVjcmVhc2UgYSBzdGVwIHRoZSBzZWNvbmQgdmFsdWUgaWYgc2xpZGVyIGluIGR1YWwgbW9kZVxuICAgKiBAbWV0aG9kIGRlY3JlYXNlU3RlcFxuICAgKi9cbiAgcHVibGljIGRlY3JlYXNlU3RlcCgpIHtcbiAgICBpZiAodGhpcy5pc0R1YWwoKSkge1xuICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLnJvdW5kVG9TdGVwKHRoaXMudmFsdWVzKClbMF0gLSB0aGlzLnN0ZXAoKSk7XG4gICAgICB0aGlzLnZhbHVlcy5zZXQoW25ld1ZhbHVlLCB0aGlzLnZhbHVlcygpWzFdXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5yb3VuZFRvU3RlcCgodGhpcy52YWx1ZXMoKSBhcyBudW1iZXIpIC0gdGhpcy5zdGVwKCkpO1xuICAgICAgdGhpcy52YWx1ZXMuc2V0KG5ld1ZhbHVlKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ3doZWVsJywgWyckZXZlbnQnXSlcbiAgb25XaGVlbChldmVudDogV2hlZWxFdmVudCkge1xuICAgIHRoaXMuaXNVc2VySW50ZXJhY3Rpb24gPSB0cnVlO1xuXG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBpZiAoIXRoaXMuY2hvb3NlbkhhbmRsZXIgfHwgdGhpcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkIHx8ICF0aGlzLmNvcnJlY3RNaW5NYXgoKSkgcmV0dXJuO1xuICAgICAgbGV0IG5ld1ZhbHVlO1xuICAgICAgaWYgKHRoaXMuaXNEdWFsKCkpIHtcbiAgICAgICAgaWYgKGV2ZW50LmRlbHRhWSA8IDApIHtcbiAgICAgICAgICBpZiAodGhpcy5jaG9vc2VuSGFuZGxlciA9PT0gJ2ZpcnN0Jykge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSB0aGlzLnJvdW5kVG9TdGVwKCh0aGlzLnZhbHVlcygpWzBdIGFzIG51bWJlcikgKyB0aGlzLnN0ZXAoKSk7XG4gICAgICAgICAgICBpZiAodGhpcy5jaGVja1ZhbHVlcyhuZXdWYWx1ZSwgdGhpcy5jaG9vc2VuSGFuZGxlciwgdGhpcy52YWx1ZXMoKVsxXSkgJiYgdGhpcy52YWx1ZXMoKVswXSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICAgICAgdGhpcy52YWx1ZXMudXBkYXRlKChvbGQpID0+IFt0aGlzLnJvdW5kVG9TdGVwKChvbGRbMF0gYXMgbnVtYmVyKSArIHRoaXMuc3RlcCgpKSwgb2xkWzFdXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gdGhpcy5yb3VuZFRvU3RlcCgodGhpcy52YWx1ZXMoKVsxXSBhcyBudW1iZXIpICsgdGhpcy5zdGVwKCkpO1xuICAgICAgICAgICAgaWYgKG5ld1ZhbHVlIDw9IHRoaXMubWF4KCkgJiYgdGhpcy52YWx1ZXMoKVsxXSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICAgICAgdGhpcy52YWx1ZXMudXBkYXRlKChvbGQpID0+IFtvbGRbMF0sIHRoaXMucm91bmRUb1N0ZXAoKG9sZFsxXSBhcyBudW1iZXIpICsgdGhpcy5zdGVwKCkpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLmNob29zZW5IYW5kbGVyID09PSAnZmlyc3QnKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRoaXMucm91bmRUb1N0ZXAoKHRoaXMudmFsdWVzKClbMF0gYXMgbnVtYmVyKSAtIHRoaXMuc3RlcCgpKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmNoZWNrVmFsdWVzKG5ld1ZhbHVlLCB0aGlzLmNob29zZW5IYW5kbGVyLCB0aGlzLnZhbHVlcygpWzFdKSAmJiB0aGlzLnZhbHVlcygpICE9PSBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgICB0aGlzLnZhbHVlcy51cGRhdGUoKG9sZCkgPT4gW3RoaXMucm91bmRUb1N0ZXAoKG9sZFswXSBhcyBudW1iZXIpIC0gdGhpcy5zdGVwKCkpLCBvbGRbMV1dKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSB0aGlzLnJvdW5kVG9TdGVwKCh0aGlzLnZhbHVlcygpWzFdIGFzIG51bWJlcikgLSB0aGlzLnN0ZXAoKSk7XG4gICAgICAgICAgICBpZiAodGhpcy5jaGVja1ZhbHVlcyhuZXdWYWx1ZSwgdGhpcy5jaG9vc2VuSGFuZGxlciwgdGhpcy52YWx1ZXMoKVswXSkgJiYgdGhpcy52YWx1ZXMoKVsxXSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICAgICAgdGhpcy52YWx1ZXMudXBkYXRlKChvbGQpID0+IFtvbGRbMF0sIHRoaXMucm91bmRUb1N0ZXAoKG9sZFsxXSBhcyBudW1iZXIpIC0gdGhpcy5zdGVwKCkpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZXZlbnQuZGVsdGFZIDwgMCkge1xuICAgICAgICAgIGlmICh0aGlzLmNoZWNrVmFsdWUodGhpcy5yb3VuZFRvU3RlcCgodGhpcy52YWx1ZXMoKSBhcyBudW1iZXIpICsgdGhpcy5zdGVwKCkpKSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZXMudXBkYXRlKChvbGQpID0+IHRoaXMucm91bmRUb1N0ZXAoKG9sZCBhcyBudW1iZXIpICsgdGhpcy5zdGVwKCkpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2hlY2tWYWx1ZSh0aGlzLnJvdW5kVG9TdGVwKCh0aGlzLnZhbHVlcygpIGFzIG51bWJlcikgLSB0aGlzLnN0ZXAoKSkpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlcy51cGRhdGUoKG9sZCkgPT4gdGhpcy5yb3VuZFRvU3RlcCgob2xkIGFzIG51bWJlcikgLSB0aGlzLnN0ZXAoKSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgcHJpdmF0ZSBnZXQgX19ob3N0Q2xhc3MoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICBgYXgtJHt0aGlzLmNvbG9yKCl9LXNvbGlkYCxcbiAgICAgIGAke3RoaXMuZGlzYWJsZWQgPyAnYXgtc3RhdGUtZGlzYWJsZWQnIDogJyd9YCxcbiAgICAgIGAke3RoaXMucmVhZG9ubHkgPyAnYXgtc3RhdGUtcmVhZG9ubHknIDogJyd9YCxcbiAgICBdO1xuICB9XG59XG4iLCJAaWYgKGNvcnJlY3RNaW5NYXgoKSkge1xuICA8ZGl2IGNsYXNzPVwiYXgtcmFuZ2Utc2xpZGVyXCIgW2NsYXNzXT1cIidheC1vcmllbnRhdGlvbi0nICsgb3JpZW50YXRpb24oKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJheC1yYW5nZS1zbGlkZXItYmFyXCIgKG1vdXNlZG93bik9XCJvblN0YXJ0QmFyKCRldmVudClcIiAodG91Y2hzdGFydCk9XCJvblN0YXJ0QmFyKCRldmVudClcIj48L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImF4LXJhbmdlLXNsaWRlci1oaWdobGlnaHRcIlxuICAgICAgW25nU3R5bGVdPVwiQVhSYW5nZVNsaWRlckhpZ2hsaWdodCgpXCJcbiAgICAgIChtb3VzZWRvd24pPVwib25TdGFydEJhcigkZXZlbnQpXCJcbiAgICAgICh0b3VjaHN0YXJ0KT1cIm9uU3RhcnRCYXIoJGV2ZW50KVwiXG4gICAgPjwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJheC1yYW5nZS1zbGlkZXItaGFuZGxlclwiXG4gICAgICBbbmdTdHlsZV09XCJBWFJhbmdlU2xpZGVySGFuZGxlcjEoKVwiXG4gICAgICBuYW1lPVwiZmlyc3RcIlxuICAgICAgKG1vdXNlZG93bik9XCJvblN0YXJ0QmFyKCRldmVudClcIlxuICAgICAgKHRvdWNoc3RhcnQpPVwib25TdGFydEJhcigkZXZlbnQpXCJcbiAgICA+XG4gICAgICBAaWYgKGhhc1Rvb2x0aXAoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtcmFuZ2Utc2xpZGVyLXRvb2x0aXBcIj57eyBpc0R1YWwoKSA/IHZhbHVlcygpWzBdIDogdmFsdWVzKCkgfX08L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cblxuICAgIEBpZiAoaXNEdWFsKCkpIHtcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJheC1yYW5nZS1zbGlkZXItaGFuZGxlclwiXG4gICAgICAgIFtuZ1N0eWxlXT1cIkFYUmFuZ2VTbGlkZXJIYW5kbGVyMigpXCJcbiAgICAgICAgbmFtZT1cInNlY29uZFwiXG4gICAgICAgIChtb3VzZWRvd24pPVwib25TdGFydEJhcigkZXZlbnQpXCJcbiAgICAgICAgKHRvdWNoc3RhcnQpPVwib25TdGFydEJhcigkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgQGlmIChoYXNUb29sdGlwKCkpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtcmFuZ2Utc2xpZGVyLXRvb2x0aXBcIj57eyB2YWx1ZXMoKVsxXSB9fTwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gICAgQGlmIChoYXNTbmFwKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJheC1yYW5nZS1zbGlkZXItc3RlcFwiIFtuZ1N0eWxlXT1cIkFYUmFuZ2VTbGlkZXJTdGVwKClcIj5cbiAgICAgICAgQGZvciAoaXRlbSBvZiBjYWxjdWxhdGVTbmFwQmFyKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiYXgtcmFuZ2Utc2xpZGVyLXN0ZXBzXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cImlzSG9yaXpvbnRhbCgpID8geyBsZWZ0OiBnZXRQZXJjYW50YWdlKGl0ZW0pICsgJyUnIH0gOiB7IGJvdHRvbTogZ2V0UGVyY2FudGFnZShpdGVtKSArICclJyB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKGhhc0xhYmxlKCkpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXJhbmdlLXNsaWRlci1sYWJlbFwiIFtuZ1N0eWxlXT1cIkFYUmFuZ2VMYWJlbCgpXCI+XG4gICAgICAgICAgICAgICAge3sgaXRlbSArIG1pbigpIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxufVxuIl19","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXRangeSliderComponent } from './range-slider.component';\nimport * as i0 from \"@angular/core\";\nexport class AXRangeSliderModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AXRangeSliderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.3\", ngImport: i0, type: AXRangeSliderModule, imports: [CommonModule, AXRangeSliderComponent], exports: [AXRangeSliderComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AXRangeSliderModule, imports: [CommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AXRangeSliderModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, AXRangeSliderComponent],\n exports: [AXRangeSliderComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2xpZGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvcmFuZ2Utc2xpZGVyL3NyYy9saWIvcmFuZ2Utc2xpZGVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFNbEUsTUFBTSxPQUFPLG1CQUFtQjs4R0FBbkIsbUJBQW1COytHQUFuQixtQkFBbUIsWUFIcEIsWUFBWSxFQUFFLHNCQUFzQixhQUNwQyxzQkFBc0I7K0dBRXJCLG1CQUFtQixZQUhwQixZQUFZOzsyRkFHWCxtQkFBbUI7a0JBSi9CLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLHNCQUFzQixDQUFDO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUmFuZ2VTbGlkZXJDb21wb25lbnQgfSBmcm9tICcuL3JhbmdlLXNsaWRlci5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBBWFJhbmdlU2xpZGVyQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW0FYUmFuZ2VTbGlkZXJDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFJhbmdlU2xpZGVyTW9kdWxlIHt9XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtcmFuZ2Utc2xpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9yYW5nZS1zbGlkZXIvc3JjL2Fjb3JleC1jb21wb25lbnRzLXJhbmdlLXNsaWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-components-range-slider.mjs","sources":["../tmp-esm2022/range-slider/lib/range-slider.class.js","../tmp-esm2022/range-slider/lib/range-slider.component.js","../tmp-esm2022/range-slider/lib/range-slider.module.js","../tmp-esm2022/range-slider/acorex-components-range-slider.js"],"sourcesContent":["//import { AXRange } from '@acorex/cdk/common';\nexport {};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2xpZGVyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9yYW5nZS1zbGlkZXIvc3JjL2xpYi9yYW5nZS1zbGlkZXIuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDIiwic291cmNlc0NvbnRlbnQiOlsiLy9pbXBvcnQgeyBBWFJhbmdlIH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcblxuaW1wb3J0IHsgQVhFdmVudCB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhSYW5nZVN0YXJ0RXZlbnQgZXh0ZW5kcyBBWEV2ZW50IHtcbiAgZGF0YTogYW55O1xufVxuZXhwb3J0IHR5cGUgQVhSYW5nZVNsaWRlclZhbHVlID0gbnVtYmVyIHwgW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZDtcbmV4cG9ydCB0eXBlIEFYUmFuZ2VTbGlkZXJNb2RlID0gJ3NpbmdsZScgfCAnZHVhbCc7XG5leHBvcnQgdHlwZSBBWFJhbmdlU2xpZGVyU25hcE1vZGUgPSAnYm90aCcgfCAnc3RhcnQnIHwgJ2VuZCc7XG5leHBvcnQgdHlwZSBBWFJhbmdlU2xpZGVyVG9vbHRpcE1vZGUgPSAnc3RhcnQnIHwgJ2VuZCc7XG5leHBvcnQgdHlwZSBBWFJhbmdlU2xpZGVySGFuZGxlciA9ICdmaXJzdCcgfCAnc2Vjb25kJztcbiJdfQ==","import { AXComponent, AXValuableComponent, MXValueComponent, } from '@acorex/cdk/common';\nimport { isPlatformBrowser, NgStyle } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, forwardRef, HostBinding, HostListener, inject, input, model, NgZone, PLATFORM_ID, ViewEncapsulation, } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\nimport * as i0 from \"@angular/core\";\n/**\n * @description\n * A range slider for selecting a range of values, supporting both single and dual modes.\n * The slider offers step, snap, and tooltip configurations.\n *\n * @example\n * <ax-range-slider [min]=\"0\" [max]=\"100\" [step]=\"1\" [mode]=\"'dual'\"></ax-range-slider>\n */\nexport class AXRangeSliderComponent extends classes((MXValueComponent)) {\n constructor() {\n super();\n this.zone = inject(NgZone);\n this.platformID = inject(PLATFORM_ID);\n /**\n * @description\n * The orientation of the slider, either 'horizontal' or 'vertical'.\n * @default 'horizontal'\n */\n this.orientation = input('horizontal', ...(ngDevMode ? [{ debugName: \"orientation\" }] : []));\n /**\n * @description\n * Color theme for the slider, affecting highlight, tooltip, and handler.\n * @default 'primary'\n */\n this.color = input('primary', ...(ngDevMode ? [{ debugName: \"color\" }] : []));\n /**\n * @description\n * The value(s) of the slider. Can be a single number for single mode or an array of two numbers for dual mode.\n */\n this.values = model(this.value, ...(ngDevMode ? [{ debugName: \"values\" }] : []));\n /**\n * @description\n * The mode of the slider, either 'single' or 'dual'.\n * @default 'single'\n */\n this.mode = input('single', ...(ngDevMode ? [{ debugName: \"mode\" }] : []));\n /**\n * @description\n * The minimum value of the slider.\n * @default 0\n */\n this.min = input(0, ...(ngDevMode ? [{ debugName: \"min\" }] : []));\n /**\n * @description\n * The maximum value of the slider.\n * @default 100\n */\n this.max = input(100, ...(ngDevMode ? [{ debugName: \"max\" }] : []));\n /**\n * @description\n * The step increment for value changes.\n * @default 1\n */\n this.step = input(1, ...(ngDevMode ? [{ debugName: \"step\" }] : []));\n /**\n * @description\n * The snapping increment for the slider.\n * @default 1\n */\n this.snap = input(1, ...(ngDevMode ? [{ debugName: \"snap\" }] : []));\n /**\n * @description\n * Mode for displaying tooltips, can be at the start, end, or both.\n * @default 'end'\n */\n this.tooltipMode = input('end', ...(ngDevMode ? [{ debugName: \"tooltipMode\" }] : []));\n /**\n * @description\n * Mode for snapping, can snap at the start, end, or both.\n * @default 'start'\n */\n this.snapMode = input('start', ...(ngDevMode ? [{ debugName: \"snapMode\" }] : []));\n /**\n * @description\n * Whether the slider should have steps.\n * @default true\n */\n this.hasStep = input(true, ...(ngDevMode ? [{ debugName: \"hasStep\" }] : []));\n /**\n * @description\n * Whether the slider should display snapping.\n * @default false\n */\n this.hasSnap = input(false, ...(ngDevMode ? [{ debugName: \"hasSnap\" }] : []));\n /**\n * @description\n * Whether the slider should display labels for snapping points.\n * @default Value derived from `hasSnap()`\n */\n this.hasLable = input(this.hasSnap(), ...(ngDevMode ? [{ debugName: \"hasLable\" }] : []));\n /**\n * @description\n * Whether the slider should display tooltips.\n * @default false\n */\n this.hasTooltip = input(false, ...(ngDevMode ? [{ debugName: \"hasTooltip\" }] : []));\n /**\n * @ignore\n */\n this.height = 0.25;\n /**\n * @ignore\n */\n this.newHeight = 'var(--ax-comp-range-slider-size)';\n /**\n * @ignore\n */\n this.range = computed(() => this.max() - this.min(), ...(ngDevMode ? [{ debugName: \"range\" }] : []));\n /**\n * @ignore\n */\n this.isHorizontal = computed(() => this.orientation() === 'horizontal', ...(ngDevMode ? [{ debugName: \"isHorizontal\" }] : []));\n /**\n * @ignore\n */\n this.isDual = computed(() => this.mode() === 'dual', ...(ngDevMode ? [{ debugName: \"isDual\" }] : []));\n /**\n * @ignore\n */\n this.correctMinMax = computed(() => this.max() - this.min() > 0, ...(ngDevMode ? [{ debugName: \"correctMinMax\" }] : []));\n /**\n * @ignore\n */\n this.calculateSnapBar = computed(() => {\n if (this.hasSnap()) {\n if (this.snap() <= 0) {\n console.error('Wrong Snap!');\n return null;\n }\n let array = [];\n for (let i = this.min(); i < this.max(); i += this.snap()) {\n array.push(i);\n }\n array = [...array, this.max()];\n if (array[0] < 0) {\n array = array.map((i) => i + -array[0]).sort((a, b) => a - b);\n }\n if (array[0] > 0) {\n array = array.map((i) => i - array[0]).sort((a, b) => a - b);\n }\n if (array.length > 20) {\n console.warn(`Too many snap points (${array.length}). Max allowed is 20.`);\n return null;\n }\n return array;\n }\n return null;\n }, ...(ngDevMode ? [{ debugName: \"calculateSnapBar\" }] : []));\n /**\n * @ignore\n */\n this.calculatePos = computed(() => {\n if (this.isDual() && this.values()) {\n return [\n ((this.values()[0] - this.min()) / this.range()) * 100,\n ((this.values()[1] - this.min()) / this.range()) * 100,\n ];\n }\n else {\n return ((this.values() - this.min()) / this.range()) * 100;\n }\n }, ...(ngDevMode ? [{ debugName: \"calculatePos\" }] : []));\n /**\n * @ignore\n */\n this.choosenHandler = undefined;\n /**\n * @ignore\n */\n this.sliderElement = null;\n /**\n * @ignore\n */\n this.AXRangeSliderHighlight = computed(() => this.isHorizontal()\n ? {\n left: this.isDual() ? this.calculatePos()[0] + '%' : '0%',\n width: this.isDual() ? this.calculatePos()[1] - this.calculatePos()[0] + '%' : this.calculatePos() + '%',\n }\n : {\n height: this.isDual() ? this.calculatePos()[1] - this.calculatePos()[0] + '%' : this.calculatePos() + '%',\n bottom: this.mode() === 'dual' ? this.calculatePos()[0] + '%' : '0%',\n }, ...(ngDevMode ? [{ debugName: \"AXRangeSliderHighlight\" }] : []));\n /**\n * @ignore\n */\n this.AXRangeSliderHandler1 = computed(() => this.isHorizontal()\n ? {\n left: this.isDual() ? this.calculatePos()[0] + '%' : this.calculatePos() + '%',\n }\n : {\n bottom: this.isDual()\n ? 'calc(' + this.calculatePos()[0] + '% - ' + 6 * this.height + 'rem)'\n : 'calc(' + this.calculatePos() + '% - ' + 6 * this.height + 'rem)',\n }, ...(ngDevMode ? [{ debugName: \"AXRangeSliderHandler1\" }] : []));\n /**\n * @ignore\n */\n this.AXRangeSliderHandler2 = computed(() => this.isHorizontal()\n ? {\n left: this.calculatePos()[1] + '%',\n }\n : {\n bottom: 'calc(' + this.calculatePos()[1] + '% - ' + 6 * this.height + 'rem)',\n }, ...(ngDevMode ? [{ debugName: \"AXRangeSliderHandler2\" }] : []));\n /**\n * @ignore\n */\n this.AXRangeSliderStep = computed(() => {\n if (this.isHorizontal()) {\n switch (this.snapMode()) {\n case 'both':\n return { top: '0', height: 8 * this.height + 'rem' };\n case 'start':\n return { top: 4 * this.height + 'rem', height: 4 * this.height + 'rem' };\n case 'end':\n return { top: -2 * this.height + 'rem', height: 4 * this.height + 'rem' };\n }\n }\n else {\n switch (this.snapMode()) {\n case 'both':\n return { top: '0', width: 8 * this.height + 'rem' };\n case 'start':\n return { left: 4 * this.height + 'rem', width: 4 * this.height + 'rem' };\n case 'end':\n return { left: -2 * this.height + 'rem', width: 4 * this.height + 'rem' };\n }\n }\n }, ...(ngDevMode ? [{ debugName: \"AXRangeSliderStep\" }] : []));\n /**\n * @ignore\n */\n this.AXRangeLabel = computed(() => {\n if (this.isHorizontal()) {\n switch (this.snapMode()) {\n case 'both':\n return { top: 6 * this.height + 'rem' };\n case 'start':\n return { top: 4 * this.height + 'rem' };\n case 'end':\n return { top: -6 * this.height + 'rem' };\n }\n }\n else {\n switch (this.snapMode()) {\n case 'both':\n return { left: 8 * this.height + 'rem' };\n case 'start':\n return { left: 4 * this.height + 'rem' };\n case 'end':\n return { left: -8 * this.height + 'rem' };\n }\n }\n }, ...(ngDevMode ? [{ debugName: \"AXRangeLabel\" }] : []));\n this.isUserInteraction = false;\n effect(() => {\n this.commitValue(this.values(), this.isUserInteraction);\n this.isUserInteraction = false;\n });\n effect(() => {\n if (this.correctMinMax()) {\n this.fixInitializeValues();\n this.fixChangingMode();\n }\n else {\n console.error(`Min = ${this.min()} And Max = ${this.max()} is not correct inputs.`);\n }\n });\n this.onValueChanged.subscribe((value) => {\n if (value?.value != undefined && value?.value != null && this.values() !== value.value)\n this.values.set(value.value);\n });\n }\n /**\n * @ignore\n */\n ngOnInit() {\n super.ngOnInit();\n if (!this.correctMinMax()) {\n console.error(`Min = ${this.min()} And Max = ${this.max()} is not correct inputs.`);\n }\n else {\n this.initializeValues();\n }\n }\n /**\n * @ignore\n */\n ngOnDestroy() {\n super.ngOnDestroy();\n if (isPlatformBrowser(this.platformID)) {\n window.removeEventListener('mousemove', this.moveListener);\n window.removeEventListener('mouseup', this.endListener);\n window.removeEventListener('touchmove', this.moveListener);\n window.removeEventListener('touchend', this.endListener);\n }\n }\n /**\n * @ignore\n */\n onStartHandler(event, circle) {\n this.zone.runOutsideAngular(() => {\n if (this.disabled || this.readonly || !this.correctMinMax())\n return;\n event.preventDefault();\n this.sliderElement = event.target.closest('.ax-range-slider');\n if (this.sliderElement && isPlatformBrowser(this.platformID)) {\n this.choosenHandler = circle;\n const moveListener = (moveEvent) => this.onMove(moveEvent, circle);\n const endListener = () => this.onEnd(moveListener, endListener);\n [this.moveListener, this.endListener] = [moveListener, endListener];\n window.addEventListener('mousemove', moveListener);\n window.addEventListener('mouseup', endListener);\n window.addEventListener('touchmove', moveListener, { passive: true });\n window.addEventListener('touchend', endListener);\n }\n });\n }\n /**\n * @ignore\n */\n onStartBar(event) {\n this.isUserInteraction = true;\n let circle = 'first';\n this.sliderElement = event.target.closest('.ax-range-slider');\n this.zone.runOutsideAngular(() => {\n if (!this.sliderElement || this.disabled || this.readonly)\n return;\n const calculatePercent = this.calculatePercentOnMove(event);\n const exactValue = this.getValueFromPercent(calculatePercent);\n let value = Number.parseFloat(exactValue.toFixed(2));\n if (this.hasStep()) {\n value = this.roundToStep(value);\n }\n if (this.isDual()) {\n if (Math.abs(exactValue - this.values()[0]) > Math.abs(exactValue - this.values()[1])) {\n this.values.set([this.values()[0], value]);\n circle = 'second';\n }\n else {\n if (this.values()[1] === this.min()) {\n this.values.set([this.values()[0], value]);\n circle = 'second';\n }\n else {\n this.values.set([value, this.values()[1]]);\n circle = 'first';\n }\n }\n }\n else {\n this.values.set(value);\n }\n });\n this.onStartHandler(event, circle);\n }\n /**\n * @ignore\n */\n onMove(event, circle) {\n this.isUserInteraction = true;\n if (!this.sliderElement)\n return;\n const calculatePercent = this.calculatePercentOnMove(event);\n let value = this.getValueFromPercent(calculatePercent);\n value = Number.parseFloat(value.toFixed(2));\n if (this.hasStep()) {\n value = this.roundToStep(value);\n }\n if (this.isDual()) {\n if (circle === 'first' && value <= this.values()[1]) {\n if (this.checkValues(value, 'first', this.values()[1]) && this.values()[0] !== value) {\n this.values.set([value, this.values()[1]]);\n }\n }\n else if (circle === 'second' && value >= this.values()[0] && this.values()[1] !== value) {\n if (this.checkValues(value, 'second', this.values()[0])) {\n this.values.set([this.values()[0], value]);\n }\n }\n }\n else {\n if (this.checkValue(value) && this.values() !== value) {\n this.values.set(value);\n }\n }\n }\n /**\n * @ignore\n */\n onEnd(moveListener, endListener) {\n window.removeEventListener('mousemove', moveListener);\n window.removeEventListener('mouseup', endListener);\n window.removeEventListener('touchmove', moveListener);\n window.removeEventListener('touchend', endListener);\n this.sliderElement = null;\n }\n /**\n * @ignore\n */\n initializeValues() {\n this.fixInitializeUndefined();\n this.fixInitializeValues();\n this.fixInitializeStep();\n }\n /**\n * @ignore\n */\n fixInitializeUndefined() {\n if (typeof this.values() === 'undefined') {\n if (this.isDual()) {\n this.values.set([this.min(), this.max()]);\n }\n else {\n this.values.set(this.min());\n }\n }\n }\n /**\n * @ignore\n */\n fixInitializeValues() {\n if (this.isDual() && this.values()[0] > this.values()[1]) {\n this.values.set([this.values()[1], this.values()[0]]);\n }\n if (typeof this.values() === 'number' && !this.checkValue(this.values())) {\n this.values.set(this.min());\n }\n else if (typeof this.values() !== 'number' && !this.checkValues(this.values()[0], 'first', this.values()[1])) {\n this.values.set([this.min(), this.max()]);\n }\n }\n /**\n * @ignore\n */\n fixInitializeStep() {\n if (this.step() !== 1) {\n if (this.isDual()) {\n this.values.update((old) => [this.roundToStep(old[0]), this.roundToStep(old[1])]);\n if (this.values()[0] === this.values()[1]) {\n this.values.update((old) => [this.roundToStep(old[0]), this.roundToStep(old[1]) + this.step()]);\n }\n }\n else {\n this.values.update((old) => this.roundToStep(old));\n }\n }\n }\n /**\n * @ignore\n */\n fixChangingMode() {\n if (typeof this.values() === 'number' && this.isDual()) {\n this.values.set([this.min(), this.max()]);\n }\n else if (typeof this.values() !== 'number' && !this.isDual()) {\n this.values.set(this.min());\n }\n }\n /**\n * @ignore\n */\n calculatePercentOnMove(event) {\n const sliderRect = this.sliderElement.getBoundingClientRect();\n let percent;\n if (this.isHorizontal()) {\n const clientX = event instanceof MouseEvent ? event.clientX : event.touches[0].clientX;\n const x = clientX - sliderRect.left;\n percent = (x / sliderRect.width) * 100;\n }\n else {\n const clientY = event instanceof MouseEvent ? event.clientY : event.touches[0].clientY;\n const y = -(clientY - sliderRect.bottom); //reverce slider from bottom to top\n percent = (y / sliderRect.height) * 100;\n }\n if (percent < 0) {\n percent = 0;\n }\n else if (percent > 100) {\n percent = 100;\n }\n return percent;\n }\n /**\n * @ignore\n */\n roundToStep(value) {\n const lower = Math.max(this.min(), Math.floor((value - this.min()) / this.step()) * this.step() + this.min());\n const upper = Math.min(this.max(), lower + this.step());\n if (value - lower < upper - value) {\n return lower;\n }\n else {\n return upper;\n }\n }\n /**\n * @ignore\n */\n checkValue(x) {\n if (x >= this.min() && x <= this.max())\n return true;\n else\n return false;\n }\n /**\n * @ignore\n */\n checkValues(value1, y, value2) {\n if (value1 >= this.min() && value1 <= this.max()) {\n if (y === 'first') {\n if (value1 <= value2 && value2 <= this.max())\n return true;\n else\n return false;\n }\n else {\n if (value1 >= value2 && value2 >= this.min())\n return true;\n else\n return false;\n }\n }\n else\n return false;\n }\n /**\n * @ignore\n */\n getValueFromPercent(value) {\n return this.min() + (value * (this.max() - this.min())) / 100;\n }\n /**\n * @ignore\n */\n getPercantage(value) {\n return this.range() !== 0 ? (value / this.range()) * 100 : 0;\n }\n /**\n * Increase a step to value if slider in single mode\n * and increase a step the second value if slider in dual mode\n * @method increaseStep\n */\n increaseStep() {\n if (this.isDual()) {\n const newValue = this.roundToStep(this.values()[1] + this.step());\n this.values.set([this.values()[0], newValue]);\n }\n else {\n const newValue = this.roundToStep(this.values() + this.step());\n this.values.set(newValue);\n }\n }\n /**\n * Decrease a step to value if slider in single mode\n * and decrease a step the second value if slider in dual mode\n * @method decreaseStep\n */\n decreaseStep() {\n if (this.isDual()) {\n const newValue = this.roundToStep(this.values()[0] - this.step());\n this.values.set([newValue, this.values()[1]]);\n }\n else {\n const newValue = this.roundToStep(this.values() - this.step());\n this.values.set(newValue);\n }\n }\n /**\n * @ignore\n */\n onWheel(event) {\n this.isUserInteraction = true;\n this.zone.runOutsideAngular(() => {\n event.preventDefault();\n if (!this.choosenHandler || this.readonly || this.disabled || !this.correctMinMax())\n return;\n let newValue;\n if (this.isDual()) {\n if (event.deltaY < 0) {\n if (this.choosenHandler === 'first') {\n newValue = this.roundToStep(this.values()[0] + this.step());\n if (this.checkValues(newValue, this.choosenHandler, this.values()[1]) && this.values()[0] !== newValue) {\n this.values.update((old) => [this.roundToStep(old[0] + this.step()), old[1]]);\n }\n }\n else {\n newValue = this.roundToStep(this.values()[1] + this.step());\n if (newValue <= this.max() && this.values()[1] !== newValue) {\n this.values.update((old) => [old[0], this.roundToStep(old[1] + this.step())]);\n }\n }\n }\n else {\n if (this.choosenHandler === 'first') {\n newValue = this.roundToStep(this.values()[0] - this.step());\n if (this.checkValues(newValue, this.choosenHandler, this.values()[1]) && this.values() !== newValue) {\n this.values.update((old) => [this.roundToStep(old[0] - this.step()), old[1]]);\n }\n }\n else {\n newValue = this.roundToStep(this.values()[1] - this.step());\n if (this.checkValues(newValue, this.choosenHandler, this.values()[0]) && this.values()[1] !== newValue) {\n this.values.update((old) => [old[0], this.roundToStep(old[1] - this.step())]);\n }\n }\n }\n }\n else {\n if (event.deltaY < 0) {\n if (this.checkValue(this.roundToStep(this.values() + this.step()))) {\n this.values.update((old) => this.roundToStep(old + this.step()));\n }\n }\n else {\n if (this.checkValue(this.roundToStep(this.values() - this.step()))) {\n this.values.update((old) => this.roundToStep(old - this.step()));\n }\n }\n }\n });\n }\n /**\n * @ignore\n */\n get __hostClass() {\n return [\n `ax-${this.color()}-solid`,\n `${this.disabled ? 'ax-state-disabled' : ''}`,\n `${this.readonly ? 'ax-state-readonly' : ''}`,\n ];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRangeSliderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXRangeSliderComponent, isStandalone: true, selector: \"ax-range-slider\", inputs: { disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: false, isRequired: false, transformFunction: null }, readonly: { classPropertyName: \"readonly\", publicName: \"readonly\", isSignal: false, isRequired: false, transformFunction: null }, orientation: { classPropertyName: \"orientation\", publicName: \"orientation\", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: \"color\", publicName: \"color\", isSignal: true, isRequired: false, transformFunction: null }, values: { classPropertyName: \"values\", publicName: \"values\", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: \"mode\", publicName: \"mode\", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: \"min\", publicName: \"min\", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: \"max\", publicName: \"max\", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: \"step\", publicName: \"step\", isSignal: true, isRequired: false, transformFunction: null }, snap: { classPropertyName: \"snap\", publicName: \"snap\", isSignal: true, isRequired: false, transformFunction: null }, tooltipMode: { classPropertyName: \"tooltipMode\", publicName: \"tooltipMode\", isSignal: true, isRequired: false, transformFunction: null }, snapMode: { classPropertyName: \"snapMode\", publicName: \"snapMode\", isSignal: true, isRequired: false, transformFunction: null }, hasStep: { classPropertyName: \"hasStep\", publicName: \"hasStep\", isSignal: true, isRequired: false, transformFunction: null }, hasSnap: { classPropertyName: \"hasSnap\", publicName: \"hasSnap\", isSignal: true, isRequired: false, transformFunction: null }, hasLable: { classPropertyName: \"hasLable\", publicName: \"hasLable\", isSignal: true, isRequired: false, transformFunction: null }, hasTooltip: { classPropertyName: \"hasTooltip\", publicName: \"hasTooltip\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { values: \"valuesChange\" }, host: { listeners: { \"wheel\": \"onWheel($event)\" }, properties: { \"class\": \"this.__hostClass\" } }, providers: [\n { provide: AXValuableComponent, useExisting: AXRangeSliderComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXRangeSliderComponent),\n multi: true,\n },\n { provide: AXComponent, useExisting: AXRangeSliderComponent },\n ], usesInheritance: true, ngImport: i0, template: \"@if (correctMinMax()) {\\n <div class=\\\"ax-range-slider\\\" [class]=\\\"'ax-orientation-' + orientation()\\\">\\n <div class=\\\"ax-range-slider-bar\\\" (mousedown)=\\\"onStartBar($event)\\\" (touchstart)=\\\"onStartBar($event)\\\"></div>\\n <div\\n class=\\\"ax-range-slider-highlight\\\"\\n [ngStyle]=\\\"AXRangeSliderHighlight()\\\"\\n (mousedown)=\\\"onStartBar($event)\\\"\\n (touchstart)=\\\"onStartBar($event)\\\"\\n ></div>\\n\\n <div\\n class=\\\"ax-range-slider-handler\\\"\\n [ngStyle]=\\\"AXRangeSliderHandler1()\\\"\\n name=\\\"first\\\"\\n (mousedown)=\\\"onStartBar($event)\\\"\\n (touchstart)=\\\"onStartBar($event)\\\"\\n >\\n @if (hasTooltip()) {\\n <div class=\\\"ax-range-slider-tooltip\\\">{{ isDual() ? values()[0] : values() }}</div>\\n }\\n </div>\\n\\n @if (isDual()) {\\n <div\\n class=\\\"ax-range-slider-handler\\\"\\n [ngStyle]=\\\"AXRangeSliderHandler2()\\\"\\n name=\\\"second\\\"\\n (mousedown)=\\\"onStartBar($event)\\\"\\n (touchstart)=\\\"onStartBar($event)\\\"\\n >\\n @if (hasTooltip()) {\\n <div class=\\\"ax-range-slider-tooltip\\\">{{ values()[1] }}</div>\\n }\\n </div>\\n }\\n @if (hasSnap()) {\\n <div class=\\\"ax-range-slider-step\\\" [ngStyle]=\\\"AXRangeSliderStep()\\\">\\n @for (item of calculateSnapBar(); track $index) {\\n <div\\n class=\\\"ax-range-slider-steps\\\"\\n [ngStyle]=\\\"isHorizontal() ? { left: getPercantage(item) + '%' } : { bottom: getPercantage(item) + '%' }\\\"\\n >\\n @if (hasLable()) {\\n <div class=\\\"ax-range-slider-label\\\" [ngStyle]=\\\"AXRangeLabel()\\\">\\n {{ item + min() }}\\n </div>\\n }\\n </div>\\n }\\n </div>\\n }\\n </div>\\n}\\n\", styles: [\"ax-range-slider{--ax-comp-range-slider-size: .25rem;--ax-comp-range-slider-ring-size: .6rem}ax-range-slider{--ax-comp-range-slider-ring-color: var(--ax-comp-range-slider-color), .25}ax-range-slider.ax-primary-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-primary-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-primary-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-primary-surface)}ax-range-slider.ax-secondary-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-secondary-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-secondary-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-secondary-surface)}ax-range-slider.ax-success-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-success-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-success-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-success-surface)}ax-range-slider.ax-warning-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-warning-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-warning-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-warning-surface)}ax-range-slider.ax-danger-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-danger-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-danger-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-danger-surface)}ax-range-slider.ax-accent1-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent1-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent1-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent1-surface)}ax-range-slider.ax-accent2-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent2-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent2-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent2-surface)}ax-range-slider.ax-accent3-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent3-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent3-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent3-surface)}ax-range-slider.ax-accent4-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent4-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent4-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent4-surface)}ax-range-slider.ax-accent5-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent5-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent5-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent5-surface)}ax-range-slider.ax-accent6-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent6-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent6-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent6-surface)}ax-range-slider.ax-accent7-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent7-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent7-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent7-surface)}ax-range-slider{display:flex;align-items:center;justify-content:center;padding:1rem;font-size:small;-webkit-user-select:none;user-select:none}ax-range-slider .ax-range-slider.ax-orientation-horizontal{position:relative;width:100%;height:calc(var(--ax-comp-range-slider-size) * 4)}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-bar{position:absolute;top:50%;left:0;width:100.1%;height:var(--ax-comp-range-slider-bar-height, var(--ax-comp-range-slider-size));transform:translateY(-50%);z-index:5;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-line-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-highlight{position:absolute;top:50%;height:calc(var(--ax-comp-range-slider-size) * 3 / 2);transform:translateY(-50%);z-index:6;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-handler{position:absolute;top:50%;width:var(--ax-comp-range-slider-handler-size, calc(var(--ax-comp-range-slider-size) * 6));height:var(--ax-comp-range-slider-handler-size, calc(var(--ax-comp-range-slider-size) * 6));z-index:10;background-color:rgba(var(--ax-comp-range-slider-color));border-radius:50%;cursor:pointer;transform:translate(-45%,-50%);transition:box-shadow .1s linear}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-handler:hover,ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-handler:active{box-shadow:0 0 0 calc(var(--ax-comp-range-slider-ring-size)) rgba(var(--ax-comp-range-slider-ring-color))}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-tooltip{position:absolute;left:calc(var(--ax-comp-range-slider-size) * 2.8);top:calc(var(--ax-comp-range-slider-size) * -2);background-color:rgba(var(--ax-comp-range-slider-color));color:rgba(var(--ax-comp-range-slider-tooltip-text-color));padding:5px 10px;border-radius:3px;white-space:nowrap;font-weight:600;transform:translate(-50%,-125%)}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-tooltip:after{content:\\\"\\\";position:absolute;top:1.75rem;left:50%;transform:translate(-50%);border-width:.5rem;border-style:solid;border-color:rgba(var(--ax-comp-range-slider-color)) transparent transparent transparent}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-step{position:absolute;display:flex;flex-direction:row;width:100%;z-index:4}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-step .ax-range-slider-steps{position:absolute;border-left:calc(var(--ax-comp-range-slider-size) / 2) solid rgba(var(--ax-sys-color-border-lightest-surface));height:50%}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-step .ax-range-slider-steps .ax-range-slider-label{position:relative;text-align:center;top:calc(var(--ax-comp-range-slider-size) * 2);left:-50%}ax-range-slider .ax-range-slider.ax-orientation-vertical{position:relative;width:calc(var(--ax-comp-range-slider-size) * 4);height:100%}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-bar{position:absolute;top:0;left:50%;width:var(--ax-comp-range-slider-size);height:100.1%;transform:translate(-50%);z-index:5;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-line-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-highlight{position:absolute;left:50%;width:calc(var(--ax-comp-range-slider-size) * 3 / 2);transform:translate(-50%);z-index:6;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-handler{position:absolute;left:50%;width:calc(var(--ax-comp-range-slider-size) * 6);height:calc(var(--ax-comp-range-slider-size) * 6);z-index:10;background-color:rgba(var(--ax-comp-range-slider-color));border-radius:50%;cursor:pointer;transform:translate(-50%,-55%);transition:background-color .2s ease}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-handler:active{border:1px solid transparent;box-shadow:var(--tw-ring-inset) 0 0 0 calc(.5rem + var(--tw-ring-offset-width)) rgba(var(--ax-comp-range-slider-color),.25)}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-tooltip{position:absolute;top:calc(var(--ax-comp-range-slider-size) * 8.5);left:calc(var(--ax-comp-range-slider-size) * -8);background-color:rgba(var(--ax-comp-range-slider-color));color:rgba(var(--ax-comp-range-slider-tooltip-text-color));padding:5px 10px;border-radius:3px;font-weight:600;white-space:nowrap;transform:translate(-50%,-125%)}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-tooltip:after{content:\\\"\\\";position:absolute;top:50%;left:97%;transform:translateY(-50%);border-width:.5rem;border-style:solid;border-color:transparent transparent transparent rgba(var(--ax-comp-range-slider-color))}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-step{position:absolute;display:flex;flex-direction:column;height:100%;z-index:4}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-step .ax-range-slider-steps{position:absolute;width:50%;border-top:calc(var(--ax-comp-range-slider-size) / 2) solid rgba(var(--ax-sys-color-border-lightest-surface))}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-step .ax-range-slider-steps .ax-range-slider-label{position:absolute;left:150%;top:calc(var(--ax-comp-range-slider-size) * -3)}ax-range-slider.ax-state-disabled{opacity:.5;cursor:not-allowed}\\n\"], dependencies: [{ kind: \"directive\", type: NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRangeSliderComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-range-slider', inputs: ['disabled', 'readonly'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n { provide: AXValuableComponent, useExisting: AXRangeSliderComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXRangeSliderComponent),\n multi: true,\n },\n { provide: AXComponent, useExisting: AXRangeSliderComponent },\n ], imports: [NgStyle], template: \"@if (correctMinMax()) {\\n <div class=\\\"ax-range-slider\\\" [class]=\\\"'ax-orientation-' + orientation()\\\">\\n <div class=\\\"ax-range-slider-bar\\\" (mousedown)=\\\"onStartBar($event)\\\" (touchstart)=\\\"onStartBar($event)\\\"></div>\\n <div\\n class=\\\"ax-range-slider-highlight\\\"\\n [ngStyle]=\\\"AXRangeSliderHighlight()\\\"\\n (mousedown)=\\\"onStartBar($event)\\\"\\n (touchstart)=\\\"onStartBar($event)\\\"\\n ></div>\\n\\n <div\\n class=\\\"ax-range-slider-handler\\\"\\n [ngStyle]=\\\"AXRangeSliderHandler1()\\\"\\n name=\\\"first\\\"\\n (mousedown)=\\\"onStartBar($event)\\\"\\n (touchstart)=\\\"onStartBar($event)\\\"\\n >\\n @if (hasTooltip()) {\\n <div class=\\\"ax-range-slider-tooltip\\\">{{ isDual() ? values()[0] : values() }}</div>\\n }\\n </div>\\n\\n @if (isDual()) {\\n <div\\n class=\\\"ax-range-slider-handler\\\"\\n [ngStyle]=\\\"AXRangeSliderHandler2()\\\"\\n name=\\\"second\\\"\\n (mousedown)=\\\"onStartBar($event)\\\"\\n (touchstart)=\\\"onStartBar($event)\\\"\\n >\\n @if (hasTooltip()) {\\n <div class=\\\"ax-range-slider-tooltip\\\">{{ values()[1] }}</div>\\n }\\n </div>\\n }\\n @if (hasSnap()) {\\n <div class=\\\"ax-range-slider-step\\\" [ngStyle]=\\\"AXRangeSliderStep()\\\">\\n @for (item of calculateSnapBar(); track $index) {\\n <div\\n class=\\\"ax-range-slider-steps\\\"\\n [ngStyle]=\\\"isHorizontal() ? { left: getPercantage(item) + '%' } : { bottom: getPercantage(item) + '%' }\\\"\\n >\\n @if (hasLable()) {\\n <div class=\\\"ax-range-slider-label\\\" [ngStyle]=\\\"AXRangeLabel()\\\">\\n {{ item + min() }}\\n </div>\\n }\\n </div>\\n }\\n </div>\\n }\\n </div>\\n}\\n\", styles: [\"ax-range-slider{--ax-comp-range-slider-size: .25rem;--ax-comp-range-slider-ring-size: .6rem}ax-range-slider{--ax-comp-range-slider-ring-color: var(--ax-comp-range-slider-color), .25}ax-range-slider.ax-primary-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-primary-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-primary-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-primary-surface)}ax-range-slider.ax-secondary-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-secondary-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-secondary-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-secondary-surface)}ax-range-slider.ax-success-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-success-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-success-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-success-surface)}ax-range-slider.ax-warning-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-warning-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-warning-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-warning-surface)}ax-range-slider.ax-danger-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-danger-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-danger-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-danger-surface)}ax-range-slider.ax-accent1-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent1-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent1-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent1-surface)}ax-range-slider.ax-accent2-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent2-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent2-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent2-surface)}ax-range-slider.ax-accent3-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent3-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent3-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent3-surface)}ax-range-slider.ax-accent4-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent4-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent4-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent4-surface)}ax-range-slider.ax-accent5-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent5-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent5-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent5-surface)}ax-range-slider.ax-accent6-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent6-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent6-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent6-surface)}ax-range-slider.ax-accent7-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent7-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent7-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent7-surface)}ax-range-slider{display:flex;align-items:center;justify-content:center;padding:1rem;font-size:small;-webkit-user-select:none;user-select:none}ax-range-slider .ax-range-slider.ax-orientation-horizontal{position:relative;width:100%;height:calc(var(--ax-comp-range-slider-size) * 4)}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-bar{position:absolute;top:50%;left:0;width:100.1%;height:var(--ax-comp-range-slider-bar-height, var(--ax-comp-range-slider-size));transform:translateY(-50%);z-index:5;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-line-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-highlight{position:absolute;top:50%;height:calc(var(--ax-comp-range-slider-size) * 3 / 2);transform:translateY(-50%);z-index:6;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-handler{position:absolute;top:50%;width:var(--ax-comp-range-slider-handler-size, calc(var(--ax-comp-range-slider-size) * 6));height:var(--ax-comp-range-slider-handler-size, calc(var(--ax-comp-range-slider-size) * 6));z-index:10;background-color:rgba(var(--ax-comp-range-slider-color));border-radius:50%;cursor:pointer;transform:translate(-45%,-50%);transition:box-shadow .1s linear}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-handler:hover,ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-handler:active{box-shadow:0 0 0 calc(var(--ax-comp-range-slider-ring-size)) rgba(var(--ax-comp-range-slider-ring-color))}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-tooltip{position:absolute;left:calc(var(--ax-comp-range-slider-size) * 2.8);top:calc(var(--ax-comp-range-slider-size) * -2);background-color:rgba(var(--ax-comp-range-slider-color));color:rgba(var(--ax-comp-range-slider-tooltip-text-color));padding:5px 10px;border-radius:3px;white-space:nowrap;font-weight:600;transform:translate(-50%,-125%)}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-tooltip:after{content:\\\"\\\";position:absolute;top:1.75rem;left:50%;transform:translate(-50%);border-width:.5rem;border-style:solid;border-color:rgba(var(--ax-comp-range-slider-color)) transparent transparent transparent}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-step{position:absolute;display:flex;flex-direction:row;width:100%;z-index:4}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-step .ax-range-slider-steps{position:absolute;border-left:calc(var(--ax-comp-range-slider-size) / 2) solid rgba(var(--ax-sys-color-border-lightest-surface));height:50%}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-step .ax-range-slider-steps .ax-range-slider-label{position:relative;text-align:center;top:calc(var(--ax-comp-range-slider-size) * 2);left:-50%}ax-range-slider .ax-range-slider.ax-orientation-vertical{position:relative;width:calc(var(--ax-comp-range-slider-size) * 4);height:100%}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-bar{position:absolute;top:0;left:50%;width:var(--ax-comp-range-slider-size);height:100.1%;transform:translate(-50%);z-index:5;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-line-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-highlight{position:absolute;left:50%;width:calc(var(--ax-comp-range-slider-size) * 3 / 2);transform:translate(-50%);z-index:6;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-handler{position:absolute;left:50%;width:calc(var(--ax-comp-range-slider-size) * 6);height:calc(var(--ax-comp-range-slider-size) * 6);z-index:10;background-color:rgba(var(--ax-comp-range-slider-color));border-radius:50%;cursor:pointer;transform:translate(-50%,-55%);transition:background-color .2s ease}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-handler:active{border:1px solid transparent;box-shadow:var(--tw-ring-inset) 0 0 0 calc(.5rem + var(--tw-ring-offset-width)) rgba(var(--ax-comp-range-slider-color),.25)}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-tooltip{position:absolute;top:calc(var(--ax-comp-range-slider-size) * 8.5);left:calc(var(--ax-comp-range-slider-size) * -8);background-color:rgba(var(--ax-comp-range-slider-color));color:rgba(var(--ax-comp-range-slider-tooltip-text-color));padding:5px 10px;border-radius:3px;font-weight:600;white-space:nowrap;transform:translate(-50%,-125%)}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-tooltip:after{content:\\\"\\\";position:absolute;top:50%;left:97%;transform:translateY(-50%);border-width:.5rem;border-style:solid;border-color:transparent transparent transparent rgba(var(--ax-comp-range-slider-color))}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-step{position:absolute;display:flex;flex-direction:column;height:100%;z-index:4}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-step .ax-range-slider-steps{position:absolute;width:50%;border-top:calc(var(--ax-comp-range-slider-size) / 2) solid rgba(var(--ax-sys-color-border-lightest-surface))}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-step .ax-range-slider-steps .ax-range-slider-label{position:absolute;left:150%;top:calc(var(--ax-comp-range-slider-size) * -3)}ax-range-slider.ax-state-disabled{opacity:.5;cursor:not-allowed}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { onWheel: [{\n type: HostListener,\n args: ['wheel', ['$event']]\n }], __hostClass: [{\n type: HostBinding,\n args: ['class']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvcmFuZ2Utc2xpZGVyL3NyYy9saWIvcmFuZ2Utc2xpZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvcmFuZ2Utc2xpZGVyL3NyYy9saWIvcmFuZ2Utc2xpZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxXQUFXLEVBR1gsbUJBQW1CLEVBQ25CLGdCQUFnQixHQUNqQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBQ1gsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBUW5DOzs7Ozs7O0dBT0c7QUFtQkgsTUFBTSxPQUFPLHNCQUF1QixTQUFRLE9BQU8sQ0FBQyxDQUFBLGdCQUFvQyxDQUFBLENBQUM7SUF3UXZGO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUF4UUYsU0FBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNYLGVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFcEQ7Ozs7V0FJRztRQUNNLGdCQUFXLEdBQUcsS0FBSyxDQUFnQixZQUFZLHVEQUFDLENBQUM7UUFFMUQ7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QUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7U0FDOUMsQ0FBQztJQUNKLENBQUM7OEdBem1CVSxzQkFBc0I7a0dBQXRCLHNCQUFzQixvcUVBWHRCO1lBQ1QsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFO1lBQ3JFO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsc0JBQXNCLENBQUM7Z0JBQ3JELEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFO1NBQzlELGlEQ3ZESCx1dURBcURBLGczUkRHWSxPQUFPOzsyRkFFTixzQkFBc0I7a0JBbEJsQyxTQUFTOytCQUNFLGlCQUFpQixVQUduQixDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsaUJBQ2pCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyx3QkFBd0IsRUFBRTt3QkFDckU7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsdUJBQXVCLENBQUM7NEJBQ3JELEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNELEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLHdCQUF3QixFQUFFO3FCQUM5RCxXQUNRLENBQUMsT0FBTyxDQUFDO3dEQW1qQmxCLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBbURyQixXQUFXO3NCQUR0QixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWENvbXBvbmVudCxcbiAgQVhPcmllbnRhdGlvbixcbiAgQVhTdHlsZUNvbG9yVHlwZSxcbiAgQVhWYWx1YWJsZUNvbXBvbmVudCxcbiAgTVhWYWx1ZUNvbXBvbmVudCxcbn0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyLCBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG1vZGVsLFxuICBOZ1pvbmUsXG4gIFBMQVRGT1JNX0lELFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNsYXNzZXMgfSBmcm9tICdwb2x5dHlwZSc7XG5pbXBvcnQge1xuICBBWFJhbmdlU2xpZGVyTW9kZSxcbiAgQVhSYW5nZVNsaWRlclNuYXBNb2RlLFxuICBBWFJhbmdlU2xpZGVyVG9vbHRpcE1vZGUsXG4gIEFYUmFuZ2VTbGlkZXJWYWx1ZSxcbn0gZnJvbSAnLi9yYW5nZS1zbGlkZXIuY2xhc3MnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogQSByYW5nZSBzbGlkZXIgZm9yIHNlbGVjdGluZyBhIHJhbmdlIG9mIHZhbHVlcywgc3VwcG9ydGluZyBib3RoIHNpbmdsZSBhbmQgZHVhbCBtb2Rlcy5cbiAqIFRoZSBzbGlkZXIgb2ZmZXJzIHN0ZXAsIHNuYXAsIGFuZCB0b29sdGlwIGNvbmZpZ3VyYXRpb25zLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8YXgtcmFuZ2Utc2xpZGVyIFttaW5dPVwiMFwiIFttYXhdPVwiMTAwXCIgW3N0ZXBdPVwiMVwiIFttb2RlXT1cIidkdWFsJ1wiPjwvYXgtcmFuZ2Utc2xpZGVyPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1yYW5nZS1zbGlkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vcmFuZ2Utc2xpZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmFuZ2Utc2xpZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdyZWFkb25seSddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBBWFZhbHVhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhSYW5nZVNsaWRlckNvbXBvbmVudCB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQVhSYW5nZVNsaWRlckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHsgcHJvdmlkZTogQVhDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFJhbmdlU2xpZGVyQ29tcG9uZW50IH0sXG4gIF0sXG4gIGltcG9ydHM6IFtOZ1N0eWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhSYW5nZVNsaWRlckNvbXBvbmVudCBleHRlbmRzIGNsYXNzZXMoTVhWYWx1ZUNvbXBvbmVudDxBWFJhbmdlU2xpZGVyVmFsdWU+KSB7XG4gIHByaXZhdGUgem9uZSA9IGluamVjdChOZ1pvbmUpO1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcGxhdGZvcm1JRCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgb3JpZW50YXRpb24gb2YgdGhlIHNsaWRlciwgZWl0aGVyICdob3Jpem9udGFsJyBvciAndmVydGljYWwnLlxuICAgKiBAZGVmYXVsdCAnaG9yaXpvbnRhbCdcbiAgICovXG4gIHJlYWRvbmx5IG9yaWVudGF0aW9uID0gaW5wdXQ8QVhPcmllbnRhdGlvbj4oJ2hvcml6b250YWwnKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIENvbG9yIHRoZW1lIGZvciB0aGUgc2xpZGVyLCBhZmZlY3RpbmcgaGlnaGxpZ2h0LCB0b29sdGlwLCBhbmQgaGFuZGxlci5cbiAgICogQGRlZmF1bHQgJ3ByaW1hcnknXG4gICAqL1xuICByZWFkb25seSBjb2xvciA9IGlucHV0PEV4Y2x1ZGU8QVhTdHlsZUNvbG9yVHlwZSwgJ2RlZmF1bHQnPj4oJ3ByaW1hcnknKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSB2YWx1ZShzKSBvZiB0aGUgc2xpZGVyLiBDYW4gYmUgYSBzaW5nbGUgbnVtYmVyIGZvciBzaW5nbGUgbW9kZSBvciBhbiBhcnJheSBvZiB0d28gbnVtYmVycyBmb3IgZHVhbCBtb2RlLlxuICAgKi9cbiAgdmFsdWVzID0gbW9kZWw8QVhSYW5nZVNsaWRlclZhbHVlPih0aGlzLnZhbHVlKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBtb2RlIG9mIHRoZSBzbGlkZXIsIGVpdGhlciAnc2luZ2xlJyBvciAnZHVhbCcuXG4gICAqIEBkZWZhdWx0ICdzaW5nbGUnXG4gICAqL1xuICByZWFkb25seSBtb2RlID0gaW5wdXQ8QVhSYW5nZVNsaWRlck1vZGU+KCdzaW5nbGUnKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBtaW5pbXVtIHZhbHVlIG9mIHRoZSBzbGlkZXIuXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIHJlYWRvbmx5IG1pbiA9IGlucHV0PG51bWJlcj4oMCk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgc2xpZGVyLlxuICAgKiBAZGVmYXVsdCAxMDBcbiAgICovXG4gIHJlYWRvbmx5IG1heCA9IGlucHV0PG51bWJlcj4oMTAwKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBzdGVwIGluY3JlbWVudCBmb3IgdmFsdWUgY2hhbmdlcy5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgcmVhZG9ubHkgc3RlcCA9IGlucHV0PG51bWJlcj4oMSk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgc25hcHBpbmcgaW5jcmVtZW50IGZvciB0aGUgc2xpZGVyLlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICByZWFkb25seSBzbmFwID0gaW5wdXQ8bnVtYmVyPigxKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIE1vZGUgZm9yIGRpc3BsYXlpbmcgdG9vbHRpcHMsIGNhbiBiZSBhdCB0aGUgc3RhcnQsIGVuZCwgb3IgYm90aC5cbiAgICogQGRlZmF1bHQgJ2VuZCdcbiAgICovXG4gIHJlYWRvbmx5IHRvb2x0aXBNb2RlID0gaW5wdXQ8QVhSYW5nZVNsaWRlclRvb2x0aXBNb2RlPignZW5kJyk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBNb2RlIGZvciBzbmFwcGluZywgY2FuIHNuYXAgYXQgdGhlIHN0YXJ0LCBlbmQsIG9yIGJvdGguXG4gICAqIEBkZWZhdWx0ICdzdGFydCdcbiAgICovXG4gIHJlYWRvbmx5IHNuYXBNb2RlID0gaW5wdXQ8QVhSYW5nZVNsaWRlclNuYXBNb2RlPignc3RhcnQnKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFdoZXRoZXIgdGhlIHNsaWRlciBzaG91bGQgaGF2ZSBzdGVwcy5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaGFzU3RlcCA9IGlucHV0KHRydWUpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogV2hldGhlciB0aGUgc2xpZGVyIHNob3VsZCBkaXNwbGF5IHNuYXBwaW5nLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgaGFzU25hcCA9IGlucHV0KGZhbHNlKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFdoZXRoZXIgdGhlIHNsaWRlciBzaG91bGQgZGlzcGxheSBsYWJlbHMgZm9yIHNuYXBwaW5nIHBvaW50cy5cbiAgICogQGRlZmF1bHQgVmFsdWUgZGVyaXZlZCBmcm9tIGBoYXNTbmFwKClgXG4gICAqL1xuICByZWFkb25seSBoYXNMYWJsZSA9IGlucHV0KHRoaXMuaGFzU25hcCgpKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFdoZXRoZXIgdGhlIHNsaWRlciBzaG91bGQgZGlzcGxheSB0b29sdGlwcy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGhhc1Rvb2x0aXAgPSBpbnB1dChmYWxzZSk7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGhlaWdodCA9IDAuMjU7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBuZXdIZWlnaHQgPSAndmFyKC0tYXgtY29tcC1yYW5nZS1zbGlkZXItc2l6ZSknO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcmFuZ2UgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1heCgpIC0gdGhpcy5taW4oKSk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBpc0hvcml6b250YWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9yaWVudGF0aW9uKCkgPT09ICdob3Jpem9udGFsJyk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBpc0R1YWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1vZGUoKSA9PT0gJ2R1YWwnKTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNvcnJlY3RNaW5NYXggPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1heCgpIC0gdGhpcy5taW4oKSA+IDApO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cblxuICBwcm90ZWN0ZWQgY2FsY3VsYXRlU25hcEJhciA9IGNvbXB1dGVkPG51bWJlcltdIHwgbnVsbD4oKCkgPT4ge1xuICAgIGlmICh0aGlzLmhhc1NuYXAoKSkge1xuICAgICAgaWYgKHRoaXMuc25hcCgpIDw9IDApIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignV3JvbmcgU25hcCEnKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBsZXQgYXJyYXkgPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSB0aGlzLm1pbigpOyBpIDwgdGhpcy5tYXgoKTsgaSArPSB0aGlzLnNuYXAoKSkge1xuICAgICAgICBhcnJheS5wdXNoKGkpO1xuICAgICAgfVxuICAgICAgYXJyYXkgPSBbLi4uYXJyYXksIHRoaXMubWF4KCldO1xuICAgICAgaWYgKGFycmF5WzBdIDwgMCkge1xuICAgICAgICBhcnJheSA9IGFycmF5Lm1hcCgoaSkgPT4gaSArIC1hcnJheVswXSkuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICAgICAgfVxuICAgICAgaWYgKGFycmF5WzBdID4gMCkge1xuICAgICAgICBhcnJheSA9IGFycmF5Lm1hcCgoaSkgPT4gaSAtIGFycmF5WzBdKS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gICAgICB9XG4gICAgICBpZiAoYXJyYXkubGVuZ3RoID4gMjApIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBUb28gbWFueSBzbmFwIHBvaW50cyAoJHthcnJheS5sZW5ndGh9KS4gTWF4IGFsbG93ZWQgaXMgMjAuYCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgY2FsY3VsYXRlUG9zID0gY29tcHV0ZWQ8QVhSYW5nZVNsaWRlclZhbHVlPigoKSA9PiB7XG4gICAgaWYgKHRoaXMuaXNEdWFsKCkgJiYgdGhpcy52YWx1ZXMoKSkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgKCh0aGlzLnZhbHVlcygpWzBdIC0gdGhpcy5taW4oKSkgLyB0aGlzLnJhbmdlKCkpICogMTAwLFxuICAgICAgICAoKHRoaXMudmFsdWVzKClbMV0gLSB0aGlzLm1pbigpKSAvIHRoaXMucmFuZ2UoKSkgKiAxMDAsXG4gICAgICBdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gKCgodGhpcy52YWx1ZXMoKSBhcyBudW1iZXIpIC0gdGhpcy5taW4oKSkgLyB0aGlzLnJhbmdlKCkpICogMTAwO1xuICAgIH1cbiAgfSk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGNob29zZW5IYW5kbGVyOiAnZmlyc3QnIHwgJ3NlY29uZCcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIHNsaWRlckVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgQVhSYW5nZVNsaWRlckhpZ2hsaWdodCA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5pc0hvcml6b250YWwoKVxuICAgICAgPyB7XG4gICAgICAgICAgbGVmdDogdGhpcy5pc0R1YWwoKSA/IHRoaXMuY2FsY3VsYXRlUG9zKClbMF0gKyAnJScgOiAnMCUnLFxuICAgICAgICAgIHdpZHRoOiB0aGlzLmlzRHVhbCgpID8gdGhpcy5jYWxjdWxhdGVQb3MoKVsxXSAtIHRoaXMuY2FsY3VsYXRlUG9zKClbMF0gKyAnJScgOiB0aGlzLmNhbGN1bGF0ZVBvcygpICsgJyUnLFxuICAgICAgICB9XG4gICAgICA6IHtcbiAgICAgICAgICBoZWlnaHQ6IHRoaXMuaXNEdWFsKCkgPyB0aGlzLmNhbGN1bGF0ZVBvcygpWzFdIC0gdGhpcy5jYWxjdWxhdGVQb3MoKVswXSArICclJyA6IHRoaXMuY2FsY3VsYXRlUG9zKCkgKyAnJScsXG4gICAgICAgICAgYm90dG9tOiB0aGlzLm1vZGUoKSA9PT0gJ2R1YWwnID8gdGhpcy5jYWxjdWxhdGVQb3MoKVswXSArICclJyA6ICcwJScsXG4gICAgICAgIH0sXG4gICk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgQVhSYW5nZVNsaWRlckhhbmRsZXIxID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmlzSG9yaXpvbnRhbCgpXG4gICAgICA/IHtcbiAgICAgICAgICBsZWZ0OiB0aGlzLmlzRHVhbCgpID8gdGhpcy5jYWxjdWxhdGVQb3MoKVswXSArICclJyA6ICh0aGlzLmNhbGN1bGF0ZVBvcygpIGFzIG51bWJlcikgKyAnJScsXG4gICAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICAgIGJvdHRvbTogdGhpcy5pc0R1YWwoKVxuICAgICAgICAgICAgPyAnY2FsYygnICsgdGhpcy5jYWxjdWxhdGVQb3MoKVswXSArICclIC0gJyArIDYgKiB0aGlzLmhlaWdodCArICdyZW0pJ1xuICAgICAgICAgICAgOiAnY2FsYygnICsgdGhpcy5jYWxjdWxhdGVQb3MoKSArICclIC0gJyArIDYgKiB0aGlzLmhlaWdodCArICdyZW0pJyxcbiAgICAgICAgfSxcbiAgKTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBBWFJhbmdlU2xpZGVySGFuZGxlcjIgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuaXNIb3Jpem9udGFsKClcbiAgICAgID8ge1xuICAgICAgICAgIGxlZnQ6IHRoaXMuY2FsY3VsYXRlUG9zKClbMV0gKyAnJScsXG4gICAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICAgIGJvdHRvbTogJ2NhbGMoJyArIHRoaXMuY2FsY3VsYXRlUG9zKClbMV0gKyAnJSAtICcgKyA2ICogdGhpcy5oZWlnaHQgKyAncmVtKScsXG4gICAgICAgIH0sXG4gICk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgQVhSYW5nZVNsaWRlclN0ZXAgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuaXNIb3Jpem9udGFsKCkpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5zbmFwTW9kZSgpKSB7XG4gICAgICAgIGNhc2UgJ2JvdGgnOlxuICAgICAgICAgIHJldHVybiB7IHRvcDogJzAnLCBoZWlnaHQ6IDggKiB0aGlzLmhlaWdodCArICdyZW0nIH07XG4gICAgICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgICAgICByZXR1cm4geyB0b3A6IDQgKiB0aGlzLmhlaWdodCArICdyZW0nLCBoZWlnaHQ6IDQgKiB0aGlzLmhlaWdodCArICdyZW0nIH07XG4gICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgcmV0dXJuIHsgdG9wOiAtMiAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScsIGhlaWdodDogNCAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc3dpdGNoICh0aGlzLnNuYXBNb2RlKCkpIHtcbiAgICAgICAgY2FzZSAnYm90aCc6XG4gICAgICAgICAgcmV0dXJuIHsgdG9wOiAnMCcsIHdpZHRoOiA4ICogdGhpcy5oZWlnaHQgKyAncmVtJyB9O1xuICAgICAgICBjYXNlICdzdGFydCc6XG4gICAgICAgICAgcmV0dXJuIHsgbGVmdDogNCAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScsIHdpZHRoOiA0ICogdGhpcy5oZWlnaHQgKyAncmVtJyB9O1xuICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgIHJldHVybiB7IGxlZnQ6IC0yICogdGhpcy5oZWlnaHQgKyAncmVtJywgd2lkdGg6IDQgKiB0aGlzLmhlaWdodCArICdyZW0nIH07XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBBWFJhbmdlTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuaXNIb3Jpem9udGFsKCkpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5zbmFwTW9kZSgpKSB7XG4gICAgICAgIGNhc2UgJ2JvdGgnOlxuICAgICAgICAgIHJldHVybiB7IHRvcDogNiAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScgfTtcbiAgICAgICAgY2FzZSAnc3RhcnQnOlxuICAgICAgICAgIHJldHVybiB7IHRvcDogNCAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScgfTtcbiAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICByZXR1cm4geyB0b3A6IC02ICogdGhpcy5oZWlnaHQgKyAncmVtJyB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKHRoaXMuc25hcE1vZGUoKSkge1xuICAgICAgICBjYXNlICdib3RoJzpcbiAgICAgICAgICByZXR1cm4geyBsZWZ0OiA4ICogdGhpcy5oZWlnaHQgKyAncmVtJyB9O1xuICAgICAgICBjYXNlICdzdGFydCc6XG4gICAgICAgICAgcmV0dXJuIHsgbGVmdDogNCAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScgfTtcbiAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICByZXR1cm4geyBsZWZ0OiAtOCAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScgfTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBpc1VzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbW1pdFZhbHVlKHRoaXMudmFsdWVzKCksIHRoaXMuaXNVc2VySW50ZXJhY3Rpb24pO1xuICAgICAgdGhpcy5pc1VzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICAgIH0pO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5jb3JyZWN0TWluTWF4KCkpIHtcbiAgICAgICAgdGhpcy5maXhJbml0aWFsaXplVmFsdWVzKCk7XG4gICAgICAgIHRoaXMuZml4Q2hhbmdpbmdNb2RlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBNaW4gPSAke3RoaXMubWluKCl9IEFuZCBNYXggPSAke3RoaXMubWF4KCl9IGlzIG5vdCBjb3JyZWN0IGlucHV0cy5gKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLm9uVmFsdWVDaGFuZ2VkLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgIGlmICh2YWx1ZT8udmFsdWUgIT0gdW5kZWZpbmVkICYmIHZhbHVlPy52YWx1ZSAhPSBudWxsICYmIHRoaXMudmFsdWVzKCkgIT09IHZhbHVlLnZhbHVlKVxuICAgICAgICB0aGlzLnZhbHVlcy5zZXQodmFsdWUudmFsdWUpO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICBpZiAoIXRoaXMuY29ycmVjdE1pbk1heCgpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBNaW4gPSAke3RoaXMubWluKCl9IEFuZCBNYXggPSAke3RoaXMubWF4KCl9IGlzIG5vdCBjb3JyZWN0IGlucHV0cy5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0aWFsaXplVmFsdWVzKCk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMubW92ZUxpc3RlbmVyKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5lbmRMaXN0ZW5lcik7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgdGhpcy5tb3ZlTGlzdGVuZXIpO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy5lbmRMaXN0ZW5lcik7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgbW92ZUxpc3RlbmVyO1xuICBwcml2YXRlIGVuZExpc3RlbmVyO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIG9uU3RhcnRIYW5kbGVyKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCwgY2lyY2xlOiAnZmlyc3QnIHwgJ3NlY29uZCcpOiB2b2lkIHtcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSB8fCAhdGhpcy5jb3JyZWN0TWluTWF4KCkpIHJldHVybjtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnNsaWRlckVsZW1lbnQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KCcuYXgtcmFuZ2Utc2xpZGVyJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBpZiAodGhpcy5zbGlkZXJFbGVtZW50ICYmIGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgICAgdGhpcy5jaG9vc2VuSGFuZGxlciA9IGNpcmNsZTtcbiAgICAgICAgY29uc3QgbW92ZUxpc3RlbmVyID0gKG1vdmVFdmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpID0+IHRoaXMub25Nb3ZlKG1vdmVFdmVudCwgY2lyY2xlKTtcbiAgICAgICAgY29uc3QgZW5kTGlzdGVuZXIgPSAoKSA9PiB0aGlzLm9uRW5kKG1vdmVMaXN0ZW5lciwgZW5kTGlzdGVuZXIpO1xuICAgICAgICBbdGhpcy5tb3ZlTGlzdGVuZXIsIHRoaXMuZW5kTGlzdGVuZXJdID0gW21vdmVMaXN0ZW5lciwgZW5kTGlzdGVuZXJdO1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW92ZUxpc3RlbmVyKTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBlbmRMaXN0ZW5lcik7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBtb3ZlTGlzdGVuZXIsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgZW5kTGlzdGVuZXIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb25TdGFydEJhcihldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpIHtcbiAgICB0aGlzLmlzVXNlckludGVyYWN0aW9uID0gdHJ1ZTtcblxuICAgIGxldCBjaXJjbGU6ICdmaXJzdCcgfCAnc2Vjb25kJyA9ICdmaXJzdCc7XG4gICAgdGhpcy5zbGlkZXJFbGVtZW50ID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdCgnLmF4LXJhbmdlLXNsaWRlcicpIGFzIEhUTUxFbGVtZW50O1xuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuc2xpZGVyRWxlbWVudCB8fCB0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpIHJldHVybjtcbiAgICAgIGNvbnN0IGNhbGN1bGF0ZVBlcmNlbnQgPSB0aGlzLmNhbGN1bGF0ZVBlcmNlbnRPbk1vdmUoZXZlbnQpO1xuICAgICAgY29uc3QgZXhhY3RWYWx1ZSA9IHRoaXMuZ2V0VmFsdWVGcm9tUGVyY2VudChjYWxjdWxhdGVQZXJjZW50KTtcbiAgICAgIGxldCB2YWx1ZSA9IE51bWJlci5wYXJzZUZsb2F0KGV4YWN0VmFsdWUudG9GaXhlZCgyKSk7XG4gICAgICBpZiAodGhpcy5oYXNTdGVwKCkpIHtcbiAgICAgICAgdmFsdWUgPSB0aGlzLnJvdW5kVG9TdGVwKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzRHVhbCgpKSB7XG4gICAgICAgIGlmIChNYXRoLmFicyhleGFjdFZhbHVlIC0gdGhpcy52YWx1ZXMoKVswXSkgPiBNYXRoLmFicyhleGFjdFZhbHVlIC0gdGhpcy52YWx1ZXMoKVsxXSkpIHtcbiAgICAgICAgICB0aGlzLnZhbHVlcy5zZXQoW3RoaXMudmFsdWVzKClbMF0sIHZhbHVlXSk7XG4gICAgICAgICAgY2lyY2xlID0gJ3NlY29uZCc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMudmFsdWVzKClbMV0gPT09IHRoaXMubWluKCkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVzLnNldChbdGhpcy52YWx1ZXMoKVswXSwgdmFsdWVdKTtcbiAgICAgICAgICAgIGNpcmNsZSA9ICdzZWNvbmQnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlcy5zZXQoW3ZhbHVlLCB0aGlzLnZhbHVlcygpWzFdXSk7XG4gICAgICAgICAgICBjaXJjbGUgPSAnZmlyc3QnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy52YWx1ZXMuc2V0KHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLm9uU3RhcnRIYW5kbGVyKGV2ZW50LCBjaXJjbGUpO1xuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb25Nb3ZlKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCwgY2lyY2xlOiAnZmlyc3QnIHwgJ3NlY29uZCcpOiB2b2lkIHtcbiAgICB0aGlzLmlzVXNlckludGVyYWN0aW9uID0gdHJ1ZTtcblxuICAgIGlmICghdGhpcy5zbGlkZXJFbGVtZW50KSByZXR1cm47XG4gICAgY29uc3QgY2FsY3VsYXRlUGVyY2VudCA9IHRoaXMuY2FsY3VsYXRlUGVyY2VudE9uTW92ZShldmVudCk7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZUZyb21QZXJjZW50KGNhbGN1bGF0ZVBlcmNlbnQpO1xuICAgIHZhbHVlID0gTnVtYmVyLnBhcnNlRmxvYXQodmFsdWUudG9GaXhlZCgyKSk7XG4gICAgaWYgKHRoaXMuaGFzU3RlcCgpKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMucm91bmRUb1N0ZXAodmFsdWUpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0R1YWwoKSkge1xuICAgICAgaWYgKGNpcmNsZSA9PT0gJ2ZpcnN0JyAmJiB2YWx1ZSA8PSB0aGlzLnZhbHVlcygpWzFdKSB7XG4gICAgICAgIGlmICh0aGlzLmNoZWNrVmFsdWVzKHZhbHVlLCAnZmlyc3QnLCB0aGlzLnZhbHVlcygpWzFdKSAmJiB0aGlzLnZhbHVlcygpWzBdICE9PSB2YWx1ZSkge1xuICAgICAgICAgIHRoaXMudmFsdWVzLnNldChbdmFsdWUsIHRoaXMudmFsdWVzKClbMV1dKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjaXJjbGUgPT09ICdzZWNvbmQnICYmIHZhbHVlID49IHRoaXMudmFsdWVzKClbMF0gJiYgdGhpcy52YWx1ZXMoKVsxXSAhPT0gdmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMuY2hlY2tWYWx1ZXModmFsdWUsICdzZWNvbmQnLCB0aGlzLnZhbHVlcygpWzBdKSkge1xuICAgICAgICAgIHRoaXMudmFsdWVzLnNldChbdGhpcy52YWx1ZXMoKVswXSwgdmFsdWVdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5jaGVja1ZhbHVlKHZhbHVlKSAmJiB0aGlzLnZhbHVlcygpICE9PSB2YWx1ZSkge1xuICAgICAgICB0aGlzLnZhbHVlcy5zZXQodmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIG9uRW5kKG1vdmVMaXN0ZW5lcjogKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCkgPT4gdm9pZCwgZW5kTGlzdGVuZXI6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW92ZUxpc3RlbmVyKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGVuZExpc3RlbmVyKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgbW92ZUxpc3RlbmVyKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCBlbmRMaXN0ZW5lcik7XG4gICAgdGhpcy5zbGlkZXJFbGVtZW50ID0gbnVsbDtcbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBpbml0aWFsaXplVmFsdWVzKCkge1xuICAgIHRoaXMuZml4SW5pdGlhbGl6ZVVuZGVmaW5lZCgpO1xuICAgIHRoaXMuZml4SW5pdGlhbGl6ZVZhbHVlcygpO1xuICAgIHRoaXMuZml4SW5pdGlhbGl6ZVN0ZXAoKTtcbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBmaXhJbml0aWFsaXplVW5kZWZpbmVkKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZXMoKSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGlmICh0aGlzLmlzRHVhbCgpKSB7XG4gICAgICAgIHRoaXMudmFsdWVzLnNldChbdGhpcy5taW4oKSwgdGhpcy5tYXgoKV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy52YWx1ZXMuc2V0KHRoaXMubWluKCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBmaXhJbml0aWFsaXplVmFsdWVzKCkge1xuICAgIGlmICh0aGlzLmlzRHVhbCgpICYmIHRoaXMudmFsdWVzKClbMF0gPiB0aGlzLnZhbHVlcygpWzFdKSB7XG4gICAgICB0aGlzLnZhbHVlcy5zZXQoW3RoaXMudmFsdWVzKClbMV0sIHRoaXMudmFsdWVzKClbMF1dKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB0aGlzLnZhbHVlcygpID09PSAnbnVtYmVyJyAmJiAhdGhpcy5jaGVja1ZhbHVlKHRoaXMudmFsdWVzKCkgYXMgbnVtYmVyKSkge1xuICAgICAgdGhpcy52YWx1ZXMuc2V0KHRoaXMubWluKCkpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMudmFsdWVzKCkgIT09ICdudW1iZXInICYmICF0aGlzLmNoZWNrVmFsdWVzKHRoaXMudmFsdWVzKClbMF0sICdmaXJzdCcsIHRoaXMudmFsdWVzKClbMV0pKSB7XG4gICAgICB0aGlzLnZhbHVlcy5zZXQoW3RoaXMubWluKCksIHRoaXMubWF4KCldKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZml4SW5pdGlhbGl6ZVN0ZXAoKSB7XG4gICAgaWYgKHRoaXMuc3RlcCgpICE9PSAxKSB7XG4gICAgICBpZiAodGhpcy5pc0R1YWwoKSkge1xuICAgICAgICB0aGlzLnZhbHVlcy51cGRhdGUoKG9sZCkgPT4gW3RoaXMucm91bmRUb1N0ZXAob2xkWzBdKSwgdGhpcy5yb3VuZFRvU3RlcChvbGRbMV0pXSk7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlcygpWzBdID09PSB0aGlzLnZhbHVlcygpWzFdKSB7XG4gICAgICAgICAgdGhpcy52YWx1ZXMudXBkYXRlKChvbGQpID0+IFt0aGlzLnJvdW5kVG9TdGVwKG9sZFswXSksIHRoaXMucm91bmRUb1N0ZXAob2xkWzFdKSArIHRoaXMuc3RlcCgpXSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudmFsdWVzLnVwZGF0ZSgob2xkKSA9PiB0aGlzLnJvdW5kVG9TdGVwKG9sZCBhcyBudW1iZXIpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZml4Q2hhbmdpbmdNb2RlKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZXMoKSA9PT0gJ251bWJlcicgJiYgdGhpcy5pc0R1YWwoKSkge1xuICAgICAgdGhpcy52YWx1ZXMuc2V0KFt0aGlzLm1pbigpLCB0aGlzLm1heCgpXSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy52YWx1ZXMoKSAhPT0gJ251bWJlcicgJiYgIXRoaXMuaXNEdWFsKCkpIHtcbiAgICAgIHRoaXMudmFsdWVzLnNldCh0aGlzLm1pbigpKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgY2FsY3VsYXRlUGVyY2VudE9uTW92ZShldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiBudW1iZXIge1xuICAgIGNvbnN0IHNsaWRlclJlY3QgPSB0aGlzLnNsaWRlckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgbGV0IHBlcmNlbnQ6IG51bWJlcjtcbiAgICBpZiAodGhpcy5pc0hvcml6b250YWwoKSkge1xuICAgICAgY29uc3QgY2xpZW50WCA9IGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCA/IGV2ZW50LmNsaWVudFggOiAoZXZlbnQgYXMgVG91Y2hFdmVudCkudG91Y2hlc1swXS5jbGllbnRYO1xuICAgICAgY29uc3QgeCA9IGNsaWVudFggLSBzbGlkZXJSZWN0LmxlZnQ7XG4gICAgICBwZXJjZW50ID0gKHggLyBzbGlkZXJSZWN0LndpZHRoKSAqIDEwMDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xpZW50WSA9IGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCA/IGV2ZW50LmNsaWVudFkgOiAoZXZlbnQgYXMgVG91Y2hFdmVudCkudG91Y2hlc1swXS5jbGllbnRZO1xuICAgICAgY29uc3QgeSA9IC0oY2xpZW50WSAtIHNsaWRlclJlY3QuYm90dG9tKTsgLy9yZXZlcmNlIHNsaWRlciBmcm9tIGJvdHRvbSB0byB0b3BcbiAgICAgIHBlcmNlbnQgPSAoeSAvIHNsaWRlclJlY3QuaGVpZ2h0KSAqIDEwMDtcbiAgICB9XG4gICAgaWYgKHBlcmNlbnQgPCAwKSB7XG4gICAgICBwZXJjZW50ID0gMDtcbiAgICB9IGVsc2UgaWYgKHBlcmNlbnQgPiAxMDApIHtcbiAgICAgIHBlcmNlbnQgPSAxMDA7XG4gICAgfVxuICAgIHJldHVybiBwZXJjZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgcm91bmRUb1N0ZXAodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgbG93ZXIgPSBNYXRoLm1heCh0aGlzLm1pbigpLCBNYXRoLmZsb29yKCh2YWx1ZSAtIHRoaXMubWluKCkpIC8gdGhpcy5zdGVwKCkpICogdGhpcy5zdGVwKCkgKyB0aGlzLm1pbigpKTtcbiAgICBjb25zdCB1cHBlciA9IE1hdGgubWluKHRoaXMubWF4KCksIGxvd2VyICsgdGhpcy5zdGVwKCkpO1xuICAgIGlmICh2YWx1ZSAtIGxvd2VyIDwgdXBwZXIgLSB2YWx1ZSkge1xuICAgICAgcmV0dXJuIGxvd2VyO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdXBwZXI7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgY2hlY2tWYWx1ZSh4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAoeCA+PSB0aGlzLm1pbigpICYmIHggPD0gdGhpcy5tYXgoKSkgcmV0dXJuIHRydWU7XG4gICAgZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgY2hlY2tWYWx1ZXModmFsdWUxOiBudW1iZXIsIHk6ICdmaXJzdCcgfCAnc2Vjb25kJywgdmFsdWUyOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAodmFsdWUxID49IHRoaXMubWluKCkgJiYgdmFsdWUxIDw9IHRoaXMubWF4KCkpIHtcbiAgICAgIGlmICh5ID09PSAnZmlyc3QnKSB7XG4gICAgICAgIGlmICh2YWx1ZTEgPD0gdmFsdWUyICYmIHZhbHVlMiA8PSB0aGlzLm1heCgpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgZWxzZSByZXR1cm4gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodmFsdWUxID49IHZhbHVlMiAmJiB2YWx1ZTIgPj0gdGhpcy5taW4oKSkgcmV0dXJuIHRydWU7XG4gICAgICAgIGVsc2UgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBnZXRWYWx1ZUZyb21QZXJjZW50KHZhbHVlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5taW4oKSArICh2YWx1ZSAqICh0aGlzLm1heCgpIC0gdGhpcy5taW4oKSkpIC8gMTAwO1xuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0UGVyY2FudGFnZSh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5yYW5nZSgpICE9PSAwID8gKHZhbHVlIC8gdGhpcy5yYW5nZSgpKSAqIDEwMCA6IDA7XG4gIH1cbiAgLyoqXG4gICAqIEluY3JlYXNlIGEgc3RlcCB0byB2YWx1ZSBpZiBzbGlkZXIgaW4gc2luZ2xlIG1vZGVcbiAgICogYW5kIGluY3JlYXNlIGEgc3RlcCB0aGUgc2Vjb25kIHZhbHVlIGlmIHNsaWRlciBpbiBkdWFsIG1vZGVcbiAgICogQG1ldGhvZCBpbmNyZWFzZVN0ZXBcbiAgICovXG4gIHB1YmxpYyBpbmNyZWFzZVN0ZXAoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEdWFsKCkpIHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5yb3VuZFRvU3RlcCh0aGlzLnZhbHVlcygpWzFdICsgdGhpcy5zdGVwKCkpO1xuICAgICAgdGhpcy52YWx1ZXMuc2V0KFt0aGlzLnZhbHVlcygpWzBdLCBuZXdWYWx1ZV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMucm91bmRUb1N0ZXAoKHRoaXMudmFsdWVzKCkgYXMgbnVtYmVyKSArIHRoaXMuc3RlcCgpKTtcbiAgICAgIHRoaXMudmFsdWVzLnNldChuZXdWYWx1ZSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBEZWNyZWFzZSBhIHN0ZXAgdG8gdmFsdWUgaWYgc2xpZGVyIGluIHNpbmdsZSBtb2RlXG4gICAqIGFuZCBkZWNyZWFzZSBhIHN0ZXAgdGhlIHNlY29uZCB2YWx1ZSBpZiBzbGlkZXIgaW4gZHVhbCBtb2RlXG4gICAqIEBtZXRob2QgZGVjcmVhc2VTdGVwXG4gICAqL1xuICBwdWJsaWMgZGVjcmVhc2VTdGVwKCkge1xuICAgIGlmICh0aGlzLmlzRHVhbCgpKSB7XG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMucm91bmRUb1N0ZXAodGhpcy52YWx1ZXMoKVswXSAtIHRoaXMuc3RlcCgpKTtcbiAgICAgIHRoaXMudmFsdWVzLnNldChbbmV3VmFsdWUsIHRoaXMudmFsdWVzKClbMV1dKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLnJvdW5kVG9TdGVwKCh0aGlzLnZhbHVlcygpIGFzIG51bWJlcikgLSB0aGlzLnN0ZXAoKSk7XG4gICAgICB0aGlzLnZhbHVlcy5zZXQobmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcignd2hlZWwnLCBbJyRldmVudCddKVxuICBvbldoZWVsKGV2ZW50OiBXaGVlbEV2ZW50KSB7XG4gICAgdGhpcy5pc1VzZXJJbnRlcmFjdGlvbiA9IHRydWU7XG5cbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGlmICghdGhpcy5jaG9vc2VuSGFuZGxlciB8fCB0aGlzLnJlYWRvbmx5IHx8IHRoaXMuZGlzYWJsZWQgfHwgIXRoaXMuY29ycmVjdE1pbk1heCgpKSByZXR1cm47XG4gICAgICBsZXQgbmV3VmFsdWU7XG4gICAgICBpZiAodGhpcy5pc0R1YWwoKSkge1xuICAgICAgICBpZiAoZXZlbnQuZGVsdGFZIDwgMCkge1xuICAgICAgICAgIGlmICh0aGlzLmNob29zZW5IYW5kbGVyID09PSAnZmlyc3QnKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRoaXMucm91bmRUb1N0ZXAoKHRoaXMudmFsdWVzKClbMF0gYXMgbnVtYmVyKSArIHRoaXMuc3RlcCgpKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmNoZWNrVmFsdWVzKG5ld1ZhbHVlLCB0aGlzLmNob29zZW5IYW5kbGVyLCB0aGlzLnZhbHVlcygpWzFdKSAmJiB0aGlzLnZhbHVlcygpWzBdICE9PSBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgICB0aGlzLnZhbHVlcy51cGRhdGUoKG9sZCkgPT4gW3RoaXMucm91bmRUb1N0ZXAoKG9sZFswXSBhcyBudW1iZXIpICsgdGhpcy5zdGVwKCkpLCBvbGRbMV1dKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSB0aGlzLnJvdW5kVG9TdGVwKCh0aGlzLnZhbHVlcygpWzFdIGFzIG51bWJlcikgKyB0aGlzLnN0ZXAoKSk7XG4gICAgICAgICAgICBpZiAobmV3VmFsdWUgPD0gdGhpcy5tYXgoKSAmJiB0aGlzLnZhbHVlcygpWzFdICE9PSBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgICB0aGlzLnZhbHVlcy51cGRhdGUoKG9sZCkgPT4gW29sZFswXSwgdGhpcy5yb3VuZFRvU3RlcCgob2xkWzFdIGFzIG51bWJlcikgKyB0aGlzLnN0ZXAoKSldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2hvb3NlbkhhbmRsZXIgPT09ICdmaXJzdCcpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gdGhpcy5yb3VuZFRvU3RlcCgodGhpcy52YWx1ZXMoKVswXSBhcyBudW1iZXIpIC0gdGhpcy5zdGVwKCkpO1xuICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tWYWx1ZXMobmV3VmFsdWUsIHRoaXMuY2hvb3NlbkhhbmRsZXIsIHRoaXMudmFsdWVzKClbMV0pICYmIHRoaXMudmFsdWVzKCkgIT09IG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICAgIHRoaXMudmFsdWVzLnVwZGF0ZSgob2xkKSA9PiBbdGhpcy5yb3VuZFRvU3RlcCgob2xkWzBdIGFzIG51bWJlcikgLSB0aGlzLnN0ZXAoKSksIG9sZFsxXV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRoaXMucm91bmRUb1N0ZXAoKHRoaXMudmFsdWVzKClbMV0gYXMgbnVtYmVyKSAtIHRoaXMuc3RlcCgpKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmNoZWNrVmFsdWVzKG5ld1ZhbHVlLCB0aGlzLmNob29zZW5IYW5kbGVyLCB0aGlzLnZhbHVlcygpWzBdKSAmJiB0aGlzLnZhbHVlcygpWzFdICE9PSBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgICB0aGlzLnZhbHVlcy51cGRhdGUoKG9sZCkgPT4gW29sZFswXSwgdGhpcy5yb3VuZFRvU3RlcCgob2xkWzFdIGFzIG51bWJlcikgLSB0aGlzLnN0ZXAoKSldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChldmVudC5kZWx0YVkgPCAwKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2hlY2tWYWx1ZSh0aGlzLnJvdW5kVG9TdGVwKCh0aGlzLnZhbHVlcygpIGFzIG51bWJlcikgKyB0aGlzLnN0ZXAoKSkpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlcy51cGRhdGUoKG9sZCkgPT4gdGhpcy5yb3VuZFRvU3RlcCgob2xkIGFzIG51bWJlcikgKyB0aGlzLnN0ZXAoKSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy5jaGVja1ZhbHVlKHRoaXMucm91bmRUb1N0ZXAoKHRoaXMudmFsdWVzKCkgYXMgbnVtYmVyKSAtIHRoaXMuc3RlcCgpKSkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVzLnVwZGF0ZSgob2xkKSA9PiB0aGlzLnJvdW5kVG9TdGVwKChvbGQgYXMgbnVtYmVyKSAtIHRoaXMuc3RlcCgpKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBwcml2YXRlIGdldCBfX2hvc3RDbGFzcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIGBheC0ke3RoaXMuY29sb3IoKX0tc29saWRgLFxuICAgICAgYCR7dGhpcy5kaXNhYmxlZCA/ICdheC1zdGF0ZS1kaXNhYmxlZCcgOiAnJ31gLFxuICAgICAgYCR7dGhpcy5yZWFkb25seSA/ICdheC1zdGF0ZS1yZWFkb25seScgOiAnJ31gLFxuICAgIF07XG4gIH1cbn1cbiIsIkBpZiAoY29ycmVjdE1pbk1heCgpKSB7XG4gIDxkaXYgY2xhc3M9XCJheC1yYW5nZS1zbGlkZXJcIiBbY2xhc3NdPVwiJ2F4LW9yaWVudGF0aW9uLScgKyBvcmllbnRhdGlvbigpXCI+XG4gICAgPGRpdiBjbGFzcz1cImF4LXJhbmdlLXNsaWRlci1iYXJcIiAobW91c2Vkb3duKT1cIm9uU3RhcnRCYXIoJGV2ZW50KVwiICh0b3VjaHN0YXJ0KT1cIm9uU3RhcnRCYXIoJGV2ZW50KVwiPjwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiYXgtcmFuZ2Utc2xpZGVyLWhpZ2hsaWdodFwiXG4gICAgICBbbmdTdHlsZV09XCJBWFJhbmdlU2xpZGVySGlnaGxpZ2h0KClcIlxuICAgICAgKG1vdXNlZG93bik9XCJvblN0YXJ0QmFyKCRldmVudClcIlxuICAgICAgKHRvdWNoc3RhcnQpPVwib25TdGFydEJhcigkZXZlbnQpXCJcbiAgICA+PC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImF4LXJhbmdlLXNsaWRlci1oYW5kbGVyXCJcbiAgICAgIFtuZ1N0eWxlXT1cIkFYUmFuZ2VTbGlkZXJIYW5kbGVyMSgpXCJcbiAgICAgIG5hbWU9XCJmaXJzdFwiXG4gICAgICAobW91c2Vkb3duKT1cIm9uU3RhcnRCYXIoJGV2ZW50KVwiXG4gICAgICAodG91Y2hzdGFydCk9XCJvblN0YXJ0QmFyKCRldmVudClcIlxuICAgID5cbiAgICAgIEBpZiAoaGFzVG9vbHRpcCgpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1yYW5nZS1zbGlkZXItdG9vbHRpcFwiPnt7IGlzRHVhbCgpID8gdmFsdWVzKClbMF0gOiB2YWx1ZXMoKSB9fTwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChpc0R1YWwoKSkge1xuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImF4LXJhbmdlLXNsaWRlci1oYW5kbGVyXCJcbiAgICAgICAgW25nU3R5bGVdPVwiQVhSYW5nZVNsaWRlckhhbmRsZXIyKClcIlxuICAgICAgICBuYW1lPVwic2Vjb25kXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvblN0YXJ0QmFyKCRldmVudClcIlxuICAgICAgICAodG91Y2hzdGFydCk9XCJvblN0YXJ0QmFyKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICBAaWYgKGhhc1Rvb2x0aXAoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1yYW5nZS1zbGlkZXItdG9vbHRpcFwiPnt7IHZhbHVlcygpWzFdIH19PC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKGhhc1NuYXAoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cImF4LXJhbmdlLXNsaWRlci1zdGVwXCIgW25nU3R5bGVdPVwiQVhSYW5nZVNsaWRlclN0ZXAoKVwiPlxuICAgICAgICBAZm9yIChpdGVtIG9mIGNhbGN1bGF0ZVNuYXBCYXIoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJheC1yYW5nZS1zbGlkZXItc3RlcHNcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwiaXNIb3Jpem9udGFsKCkgPyB7IGxlZnQ6IGdldFBlcmNhbnRhZ2UoaXRlbSkgKyAnJScgfSA6IHsgYm90dG9tOiBnZXRQZXJjYW50YWdlKGl0ZW0pICsgJyUnIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBpZiAoaGFzTGFibGUoKSkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtcmFuZ2Utc2xpZGVyLWxhYmVsXCIgW25nU3R5bGVdPVwiQVhSYW5nZUxhYmVsKClcIj5cbiAgICAgICAgICAgICAgICB7eyBpdGVtICsgbWluKCkgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG59XG4iXX0=","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXRangeSliderComponent } from './range-slider.component';\nimport * as i0 from \"@angular/core\";\nexport class AXRangeSliderModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRangeSliderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRangeSliderModule, imports: [CommonModule, AXRangeSliderComponent], exports: [AXRangeSliderComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRangeSliderModule, imports: [CommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRangeSliderModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, AXRangeSliderComponent],\n exports: [AXRangeSliderComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2xpZGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvcmFuZ2Utc2xpZGVyL3NyYy9saWIvcmFuZ2Utc2xpZGVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFNbEUsTUFBTSxPQUFPLG1CQUFtQjs4R0FBbkIsbUJBQW1COytHQUFuQixtQkFBbUIsWUFIcEIsWUFBWSxFQUFFLHNCQUFzQixhQUNwQyxzQkFBc0I7K0dBRXJCLG1CQUFtQixZQUhwQixZQUFZOzsyRkFHWCxtQkFBbUI7a0JBSi9CLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLHNCQUFzQixDQUFDO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUmFuZ2VTbGlkZXJDb21wb25lbnQgfSBmcm9tICcuL3JhbmdlLXNsaWRlci5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBBWFJhbmdlU2xpZGVyQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW0FYUmFuZ2VTbGlkZXJDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFJhbmdlU2xpZGVyTW9kdWxlIHt9XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtcmFuZ2Utc2xpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9yYW5nZS1zbGlkZXIvc3JjL2Fjb3JleC1jb21wb25lbnRzLXJhbmdlLXNsaWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}