cmat 0.0.17 → 0.0.19

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 (496) hide show
  1. package/components/carousel/carousel.component.d.ts +136 -0
  2. package/components/carousel/carousel.interface.d.ts +38 -0
  3. package/components/carousel/index.d.ts +5 -0
  4. package/components/carousel/public-api.d.ts +2 -0
  5. package/components/custom-formly/public-api.d.ts +2 -0
  6. package/components/custom-formly/types/knob/knob.component.d.ts +36 -0
  7. package/components/custom-formly/types/select-table/select-table.component.d.ts +40 -0
  8. package/components/custom-formly/types/table/table.component.d.ts +3 -8
  9. package/components/custom-formly/wrappers/form-field/form-field.component.d.ts +4 -4
  10. package/components/image-viewer/image-viewer.component.d.ts +76 -0
  11. package/components/image-viewer/index.d.ts +5 -0
  12. package/components/image-viewer/public-api.d.ts +1 -0
  13. package/components/knob-input/index.d.ts +5 -0
  14. package/components/knob-input/knob-input.component.d.ts +95 -0
  15. package/components/knob-input/public-api.d.ts +1 -0
  16. package/components/material-datetimepicker/datetimepicker-input.d.ts +2 -2
  17. package/components/opt-input/index.d.ts +5 -0
  18. package/components/opt-input/models/config.d.ts +14 -0
  19. package/components/opt-input/otp-input.component.d.ts +70 -0
  20. package/components/opt-input/public-api.d.ts +1 -0
  21. package/components/opt-input/utils/keyboard-util.d.ts +9 -0
  22. package/components/opt-input/utils/object-util.d.ts +3 -0
  23. package/components/org-chart/designer/chart-designer.component.d.ts +17 -0
  24. package/components/org-chart/index.d.ts +5 -0
  25. package/components/org-chart/node/chart-node.component.d.ts +17 -0
  26. package/components/org-chart/node/node.type.d.ts +22 -0
  27. package/components/org-chart/org-chart.component.d.ts +12 -0
  28. package/components/org-chart/public-api.d.ts +2 -0
  29. package/components/popover/popover.interfaces.d.ts +1 -1
  30. package/components/select-table/index.d.ts +5 -0
  31. package/components/select-table/public-api.d.ts +2 -0
  32. package/components/select-table/select-table.component.d.ts +96 -0
  33. package/components/select-table/select-table.type.d.ts +20 -0
  34. package/components/select-tree/select-tree.component.d.ts +11 -12
  35. package/components/speed-dial/index.d.ts +5 -0
  36. package/components/speed-dial/public-api.d.ts +2 -0
  37. package/components/speed-dial/speed-dial.component.d.ts +63 -0
  38. package/components/transfer-picker/interface.d.ts +0 -1
  39. package/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.d.ts +8 -6
  40. package/components/treetable/index.d.ts +5 -0
  41. package/components/treetable/public-api.d.ts +2 -0
  42. package/components/treetable/treetable.component.d.ts +32 -0
  43. package/components/treetable/treetable.interface.d.ts +9 -0
  44. package/directives/animate-on-scroll/animate-on-scroll.directive.d.ts +4 -4
  45. package/directives/arrow-cursor/arrow-cursor.directive.d.ts +31 -0
  46. package/directives/arrow-cursor/index.d.ts +5 -0
  47. package/directives/arrow-cursor/public-api.d.ts +1 -0
  48. package/directives/data-exporter/constants.d.ts +26 -0
  49. package/directives/data-exporter/data-exporter.directive.d.ts +18 -0
  50. package/directives/data-exporter/index.d.ts +5 -0
  51. package/directives/data-exporter/mime.d.ts +5 -0
  52. package/directives/data-exporter/options.d.ts +21 -0
  53. package/directives/data-exporter/public-api.d.ts +2 -0
  54. package/directives/data-exporter/services/exporters/csv-exporter.service.d.ts +12 -0
  55. package/directives/data-exporter/services/exporters/exporter.d.ts +4 -0
  56. package/directives/data-exporter/services/exporters/file-exporter.d.ts +8 -0
  57. package/directives/data-exporter/services/exporters/json-exporter.service.d.ts +11 -0
  58. package/directives/data-exporter/services/exporters/txt-exporter.service.d.ts +12 -0
  59. package/directives/data-exporter/services/exporters/worksheet-exporter.d.ts +10 -0
  60. package/directives/data-exporter/services/exporters/xls-exporter.service.d.ts +14 -0
  61. package/directives/data-exporter/services/exporters/xlsx-exporter.service.d.ts +9 -0
  62. package/directives/data-exporter/services/file-util.d.ts +8 -0
  63. package/directives/data-exporter/services/service-locator.service.d.ts +11 -0
  64. package/directives/debounce/abstract-debounce.directive.d.ts +1 -1
  65. package/fesm2022/cmat-animations.mjs.map +1 -1
  66. package/fesm2022/cmat-components-adapter.mjs +9 -9
  67. package/fesm2022/cmat-components-adapter.mjs.map +1 -1
  68. package/fesm2022/cmat-components-breadcrumb.mjs +10 -10
  69. package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
  70. package/fesm2022/cmat-components-card.mjs +4 -4
  71. package/fesm2022/cmat-components-card.mjs.map +1 -1
  72. package/fesm2022/cmat-components-carousel.mjs +711 -0
  73. package/fesm2022/cmat-components-carousel.mjs.map +1 -0
  74. package/fesm2022/cmat-components-cascade.mjs +12 -12
  75. package/fesm2022/cmat-components-cascade.mjs.map +1 -1
  76. package/fesm2022/cmat-components-chip-input.mjs +5 -5
  77. package/fesm2022/cmat-components-chip-input.mjs.map +1 -1
  78. package/fesm2022/cmat-components-custom-formly.mjs +225 -155
  79. package/fesm2022/cmat-components-custom-formly.mjs.map +1 -1
  80. package/fesm2022/cmat-components-date-range.mjs +5 -5
  81. package/fesm2022/cmat-components-date-range.mjs.map +1 -1
  82. package/fesm2022/cmat-components-drawer.mjs +6 -6
  83. package/fesm2022/cmat-components-drawer.mjs.map +1 -1
  84. package/fesm2022/cmat-components-fullscreen.mjs +4 -4
  85. package/fesm2022/cmat-components-fullscreen.mjs.map +1 -1
  86. package/fesm2022/cmat-components-highlight.mjs +7 -7
  87. package/fesm2022/cmat-components-highlight.mjs.map +1 -1
  88. package/fesm2022/cmat-components-image-viewer.mjs +227 -0
  89. package/fesm2022/cmat-components-image-viewer.mjs.map +1 -0
  90. package/fesm2022/cmat-components-json-editor.mjs +4 -4
  91. package/fesm2022/cmat-components-json-editor.mjs.map +1 -1
  92. package/fesm2022/cmat-components-knob-input.mjs +404 -0
  93. package/fesm2022/cmat-components-knob-input.mjs.map +1 -0
  94. package/fesm2022/cmat-components-masonry.mjs +4 -4
  95. package/fesm2022/cmat-components-masonry.mjs.map +1 -1
  96. package/fesm2022/cmat-components-material-color-picker.mjs +4 -4
  97. package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
  98. package/fesm2022/cmat-components-material-datetimepicker.mjs +53 -53
  99. package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
  100. package/fesm2022/cmat-components-navigation.mjs +51 -51
  101. package/fesm2022/cmat-components-navigation.mjs.map +1 -1
  102. package/fesm2022/cmat-components-opt-input.mjs +457 -0
  103. package/fesm2022/cmat-components-opt-input.mjs.map +1 -0
  104. package/fesm2022/cmat-components-org-chart.mjs +141 -0
  105. package/fesm2022/cmat-components-org-chart.mjs.map +1 -0
  106. package/fesm2022/cmat-components-pagination.mjs +13 -13
  107. package/fesm2022/cmat-components-pagination.mjs.map +1 -1
  108. package/fesm2022/cmat-components-password-strength.mjs +12 -12
  109. package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
  110. package/fesm2022/cmat-components-popover.mjs +10 -10
  111. package/fesm2022/cmat-components-popover.mjs.map +1 -1
  112. package/fesm2022/cmat-components-progress-bar.mjs +4 -4
  113. package/fesm2022/cmat-components-progress-bar.mjs.map +1 -1
  114. package/fesm2022/cmat-components-rating.mjs +4 -4
  115. package/fesm2022/cmat-components-rating.mjs.map +1 -1
  116. package/fesm2022/cmat-components-select-search.mjs +11 -11
  117. package/fesm2022/cmat-components-select-search.mjs.map +1 -1
  118. package/fesm2022/cmat-components-select-table.mjs +658 -0
  119. package/fesm2022/cmat-components-select-table.mjs.map +1 -0
  120. package/fesm2022/cmat-components-select-tree.mjs +75 -57
  121. package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
  122. package/fesm2022/cmat-components-speed-dial.mjs +312 -0
  123. package/fesm2022/cmat-components-speed-dial.mjs.map +1 -0
  124. package/fesm2022/cmat-components-timeline.mjs +14 -14
  125. package/fesm2022/cmat-components-timeline.mjs.map +1 -1
  126. package/fesm2022/cmat-components-toast.mjs +11 -11
  127. package/fesm2022/cmat-components-toast.mjs.map +1 -1
  128. package/fesm2022/cmat-components-transfer-picker.mjs +60 -41
  129. package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
  130. package/fesm2022/cmat-components-treetable.mjs +122 -0
  131. package/fesm2022/cmat-components-treetable.mjs.map +1 -0
  132. package/fesm2022/cmat-components-upload.mjs +11 -11
  133. package/fesm2022/cmat-components-upload.mjs.map +1 -1
  134. package/fesm2022/cmat-directives-animate-on-scroll.mjs +21 -21
  135. package/fesm2022/cmat-directives-animate-on-scroll.mjs.map +1 -1
  136. package/fesm2022/cmat-directives-arrow-cursor.mjs +184 -0
  137. package/fesm2022/cmat-directives-arrow-cursor.mjs.map +1 -0
  138. package/fesm2022/cmat-directives-autofocus.mjs +3 -3
  139. package/fesm2022/cmat-directives-autofocus.mjs.map +1 -1
  140. package/fesm2022/cmat-directives-data-exporter.mjs +324 -0
  141. package/fesm2022/cmat-directives-data-exporter.mjs.map +1 -0
  142. package/fesm2022/cmat-directives-debounce.mjs +9 -9
  143. package/fesm2022/cmat-directives-debounce.mjs.map +1 -1
  144. package/fesm2022/cmat-directives-digit-only.mjs +8 -6
  145. package/fesm2022/cmat-directives-digit-only.mjs.map +1 -1
  146. package/fesm2022/cmat-directives-equal-validator.mjs +3 -3
  147. package/fesm2022/cmat-directives-equal-validator.mjs.map +1 -1
  148. package/fesm2022/cmat-lib-mock-api.mjs +6 -6
  149. package/fesm2022/cmat-lib-mock-api.mjs.map +1 -1
  150. package/fesm2022/cmat-pipes-bytes.mjs +3 -3
  151. package/fesm2022/cmat-pipes-bytes.mjs.map +1 -1
  152. package/fesm2022/cmat-pipes-date-format.mjs +3 -3
  153. package/fesm2022/cmat-pipes-date-format.mjs.map +1 -1
  154. package/fesm2022/cmat-pipes-find-by-key.mjs +3 -3
  155. package/fesm2022/cmat-pipes-find-by-key.mjs.map +1 -1
  156. package/fesm2022/cmat-pipes-group-by.mjs +3 -3
  157. package/fesm2022/cmat-pipes-group-by.mjs.map +1 -1
  158. package/fesm2022/cmat-pipes-keys.mjs +3 -3
  159. package/fesm2022/cmat-pipes-keys.mjs.map +1 -1
  160. package/fesm2022/cmat-pipes-secure.mjs +3 -3
  161. package/fesm2022/cmat-pipes-secure.mjs.map +1 -1
  162. package/fesm2022/cmat-pipes-uppercase.mjs +3 -3
  163. package/fesm2022/cmat-pipes-uppercase.mjs.map +1 -1
  164. package/fesm2022/cmat-services-alert.mjs +3 -3
  165. package/fesm2022/cmat-services-alert.mjs.map +1 -1
  166. package/fesm2022/cmat-services-config.mjs +6 -6
  167. package/fesm2022/cmat-services-config.mjs.map +1 -1
  168. package/fesm2022/cmat-services-confirmation.mjs +7 -7
  169. package/fesm2022/cmat-services-confirmation.mjs.map +1 -1
  170. package/fesm2022/cmat-services-data.mjs +3 -3
  171. package/fesm2022/cmat-services-data.mjs.map +1 -1
  172. package/fesm2022/cmat-services-export-as.mjs +211 -0
  173. package/fesm2022/cmat-services-export-as.mjs.map +1 -0
  174. package/fesm2022/cmat-services-loading.mjs +6 -6
  175. package/fesm2022/cmat-services-loading.mjs.map +1 -1
  176. package/fesm2022/cmat-services-local-storage.mjs +3 -3
  177. package/fesm2022/cmat-services-local-storage.mjs.map +1 -1
  178. package/fesm2022/cmat-services-media-watcher.mjs +3 -3
  179. package/fesm2022/cmat-services-media-watcher.mjs.map +1 -1
  180. package/fesm2022/cmat-services-platform.mjs +3 -3
  181. package/fesm2022/cmat-services-platform.mjs.map +1 -1
  182. package/fesm2022/cmat-services-splash-screen.mjs +3 -3
  183. package/fesm2022/cmat-services-splash-screen.mjs.map +1 -1
  184. package/fesm2022/cmat-services-title.mjs +3 -3
  185. package/fesm2022/cmat-services-title.mjs.map +1 -1
  186. package/fesm2022/cmat-services-translation.mjs +3 -3
  187. package/fesm2022/cmat-services-translation.mjs.map +1 -1
  188. package/fesm2022/cmat-services-utils.mjs +3 -3
  189. package/fesm2022/cmat-services-utils.mjs.map +1 -1
  190. package/fesm2022/cmat-validators.mjs.map +1 -1
  191. package/fesm2022/cmat-version.mjs.map +1 -1
  192. package/icons/arrow-cursor.svg +1 -1
  193. package/package.json +78 -144
  194. package/services/export-as/export-as-config.model.d.ts +8 -0
  195. package/services/export-as/export-as.service.d.ts +43 -0
  196. package/services/export-as/index.d.ts +5 -0
  197. package/services/export-as/public-api.d.ts +2 -0
  198. package/styles/overrides/angular-material.scss +95 -13
  199. package/esm2022/animations/cmat-animations.mjs +0 -5
  200. package/esm2022/animations/defaults.mjs +0 -12
  201. package/esm2022/animations/dropdown.mjs +0 -26
  202. package/esm2022/animations/expand-collapse.mjs +0 -17
  203. package/esm2022/animations/fade.mjs +0 -170
  204. package/esm2022/animations/public-api.mjs +0 -19
  205. package/esm2022/animations/shake.mjs +0 -59
  206. package/esm2022/animations/slide.mjs +0 -124
  207. package/esm2022/animations/transform.mjs +0 -16
  208. package/esm2022/animations/zoom.mjs +0 -38
  209. package/esm2022/cmat.mjs +0 -5
  210. package/esm2022/components/adapter/cmat-components-adapter.mjs +0 -5
  211. package/esm2022/components/adapter/datetime-adapter.mjs +0 -127
  212. package/esm2022/components/adapter/datetime-formats.mjs +0 -3
  213. package/esm2022/components/adapter/dayjs-date-adapter.mjs +0 -198
  214. package/esm2022/components/adapter/dayjs-date-formats.mjs +0 -12
  215. package/esm2022/components/adapter/dayjs-datetime-adapter.mjs +0 -100
  216. package/esm2022/components/adapter/dayjs-datetime-formats.mjs +0 -21
  217. package/esm2022/components/adapter/native-datetime-adapter.mjs +0 -130
  218. package/esm2022/components/adapter/native-datetime-formats.mjs +0 -15
  219. package/esm2022/components/adapter/public-api.mjs +0 -9
  220. package/esm2022/components/breadcrumb/breadcrumb-item.directive.mjs +0 -19
  221. package/esm2022/components/breadcrumb/breadcrumb.component.mjs +0 -94
  222. package/esm2022/components/breadcrumb/breadcrumb.service.mjs +0 -333
  223. package/esm2022/components/breadcrumb/cmat-components-breadcrumb.mjs +0 -5
  224. package/esm2022/components/breadcrumb/public-api.mjs +0 -6
  225. package/esm2022/components/breadcrumb/types/breadcrumb.config.mjs +0 -2
  226. package/esm2022/components/breadcrumb/types/breadcrumb.mjs +0 -2
  227. package/esm2022/components/card/card.component.mjs +0 -49
  228. package/esm2022/components/card/card.types.mjs +0 -2
  229. package/esm2022/components/card/cmat-components-card.mjs +0 -5
  230. package/esm2022/components/card/public-api.mjs +0 -3
  231. package/esm2022/components/cascade/cascade-bottom-sheet/cascade-bottom-sheet.component.mjs +0 -49
  232. package/esm2022/components/cascade/cascade-list/cascade-list.component.mjs +0 -384
  233. package/esm2022/components/cascade/cascade-menu/cascade-menu.component.mjs +0 -22
  234. package/esm2022/components/cascade/cmat-components-cascade.mjs +0 -5
  235. package/esm2022/components/cascade/options.interface.mjs +0 -2
  236. package/esm2022/components/cascade/public-api.mjs +0 -4
  237. package/esm2022/components/chip-input/chip-input.component.mjs +0 -251
  238. package/esm2022/components/chip-input/cmat-components-chip-input.mjs +0 -5
  239. package/esm2022/components/chip-input/public-api.mjs +0 -2
  240. package/esm2022/components/custom-formly/cmat-components-custom-formly.mjs +0 -5
  241. package/esm2022/components/custom-formly/extension/addons.extension.mjs +0 -13
  242. package/esm2022/components/custom-formly/public-api.mjs +0 -29
  243. package/esm2022/components/custom-formly/types/button/button.component.mjs +0 -81
  244. package/esm2022/components/custom-formly/types/cascade/cascade.component.mjs +0 -71
  245. package/esm2022/components/custom-formly/types/checklist/checklist.component.mjs +0 -161
  246. package/esm2022/components/custom-formly/types/chips/chips.component.mjs +0 -55
  247. package/esm2022/components/custom-formly/types/color-picker/color-picker.component.mjs +0 -15
  248. package/esm2022/components/custom-formly/types/date-range/date-range.component.mjs +0 -25
  249. package/esm2022/components/custom-formly/types/datepicker/datepicker.component.mjs +0 -51
  250. package/esm2022/components/custom-formly/types/multicheckbox/multicheckbox.component.mjs +0 -88
  251. package/esm2022/components/custom-formly/types/number/number.component.mjs +0 -27
  252. package/esm2022/components/custom-formly/types/quill/quill.component.mjs +0 -171
  253. package/esm2022/components/custom-formly/types/radio/radio.component.mjs +0 -87
  254. package/esm2022/components/custom-formly/types/rating/rating.component.mjs +0 -27
  255. package/esm2022/components/custom-formly/types/repeat/repeat.component.mjs +0 -25
  256. package/esm2022/components/custom-formly/types/select/select.component.mjs +0 -167
  257. package/esm2022/components/custom-formly/types/select-tree/select-tree.component.mjs +0 -66
  258. package/esm2022/components/custom-formly/types/stepper/horizontal/stepper.component.mjs +0 -28
  259. package/esm2022/components/custom-formly/types/stepper/stepper.type.mjs +0 -2
  260. package/esm2022/components/custom-formly/types/stepper/vertical/stepper.component.mjs +0 -28
  261. package/esm2022/components/custom-formly/types/table/table.component.mjs +0 -127
  262. package/esm2022/components/custom-formly/types/tabs/tab.component.mjs +0 -16
  263. package/esm2022/components/custom-formly/types/tags/tags.component.mjs +0 -146
  264. package/esm2022/components/custom-formly/types/textarea/textarea.component.mjs +0 -25
  265. package/esm2022/components/custom-formly/types/upload/upload.component.mjs +0 -58
  266. package/esm2022/components/custom-formly/wrappers/addons/addons.component.mjs +0 -92
  267. package/esm2022/components/custom-formly/wrappers/card/card.component.mjs +0 -14
  268. package/esm2022/components/custom-formly/wrappers/expansion/expansion.component.mjs +0 -14
  269. package/esm2022/components/custom-formly/wrappers/form-field/form-field.component.mjs +0 -47
  270. package/esm2022/components/custom-formly/wrappers/panel/panel.component.mjs +0 -12
  271. package/esm2022/components/date-range/cmat-components-date-range.mjs +0 -5
  272. package/esm2022/components/date-range/date-range.component.mjs +0 -558
  273. package/esm2022/components/date-range/public-api.mjs +0 -2
  274. package/esm2022/components/drawer/cmat-components-drawer.mjs +0 -5
  275. package/esm2022/components/drawer/drawer.component.mjs +0 -301
  276. package/esm2022/components/drawer/drawer.service.mjs +0 -41
  277. package/esm2022/components/drawer/drawer.types.mjs +0 -2
  278. package/esm2022/components/drawer/public-api.mjs +0 -4
  279. package/esm2022/components/fullscreen/cmat-components-fullscreen.mjs +0 -5
  280. package/esm2022/components/fullscreen/fullscreen.component.mjs +0 -44
  281. package/esm2022/components/fullscreen/public-api.mjs +0 -2
  282. package/esm2022/components/highlight/cmat-components-highlight.mjs +0 -5
  283. package/esm2022/components/highlight/highlight.component.mjs +0 -80
  284. package/esm2022/components/highlight/highlight.service.mjs +0 -47
  285. package/esm2022/components/highlight/public-api.mjs +0 -3
  286. package/esm2022/components/json-editor/cmat-components-json-editor.mjs +0 -5
  287. package/esm2022/components/json-editor/json-editor.component.mjs +0 -176
  288. package/esm2022/components/json-editor/public-api.mjs +0 -2
  289. package/esm2022/components/masonry/cmat-components-masonry.mjs +0 -5
  290. package/esm2022/components/masonry/masonry.component.mjs +0 -54
  291. package/esm2022/components/masonry/public-api.mjs +0 -2
  292. package/esm2022/components/material-color-picker/base-color.mjs +0 -13
  293. package/esm2022/components/material-color-picker/cmat-components-material-color-picker.mjs +0 -5
  294. package/esm2022/components/material-color-picker/material-color-picker.component.mjs +0 -147
  295. package/esm2022/components/material-color-picker/public-api.mjs +0 -3
  296. package/esm2022/components/material-color-picker/selected-color.mjs +0 -3
  297. package/esm2022/components/material-datetimepicker/calendar-body.mjs +0 -76
  298. package/esm2022/components/material-datetimepicker/calendar.mjs +0 -670
  299. package/esm2022/components/material-datetimepicker/clock.mjs +0 -290
  300. package/esm2022/components/material-datetimepicker/cmat-components-material-datetimepicker.mjs +0 -5
  301. package/esm2022/components/material-datetimepicker/datetimepicker-animations.mjs +0 -34
  302. package/esm2022/components/material-datetimepicker/datetimepicker-errors.mjs +0 -6
  303. package/esm2022/components/material-datetimepicker/datetimepicker-filtertype.mjs +0 -8
  304. package/esm2022/components/material-datetimepicker/datetimepicker-input.mjs +0 -341
  305. package/esm2022/components/material-datetimepicker/datetimepicker-intl.mjs +0 -63
  306. package/esm2022/components/material-datetimepicker/datetimepicker-toggle.mjs +0 -87
  307. package/esm2022/components/material-datetimepicker/datetimepicker-types.mjs +0 -2
  308. package/esm2022/components/material-datetimepicker/datetimepicker.mjs +0 -531
  309. package/esm2022/components/material-datetimepicker/month-view.mjs +0 -141
  310. package/esm2022/components/material-datetimepicker/multi-year-view.mjs +0 -197
  311. package/esm2022/components/material-datetimepicker/public-api.mjs +0 -11
  312. package/esm2022/components/material-datetimepicker/time.mjs +0 -455
  313. package/esm2022/components/material-datetimepicker/year-view.mjs +0 -124
  314. package/esm2022/components/navigation/cmat-components-navigation.mjs +0 -5
  315. package/esm2022/components/navigation/horizontal/components/basic/basic.component.mjs +0 -70
  316. package/esm2022/components/navigation/horizontal/components/branch/branch.component.mjs +0 -82
  317. package/esm2022/components/navigation/horizontal/components/divider/divider.component.mjs +0 -47
  318. package/esm2022/components/navigation/horizontal/components/spacer/spacer.component.mjs +0 -47
  319. package/esm2022/components/navigation/horizontal/horizontal.component.mjs +0 -87
  320. package/esm2022/components/navigation/navigation.service.mjs +0 -140
  321. package/esm2022/components/navigation/navigation.types.mjs +0 -3
  322. package/esm2022/components/navigation/public-api.mjs +0 -5
  323. package/esm2022/components/navigation/vertical/components/aside/aside.component.mjs +0 -162
  324. package/esm2022/components/navigation/vertical/components/basic/basic.component.mjs +0 -60
  325. package/esm2022/components/navigation/vertical/components/collapsable/collapsable.component.mjs +0 -277
  326. package/esm2022/components/navigation/vertical/components/divider/divider.component.mjs +0 -56
  327. package/esm2022/components/navigation/vertical/components/group/group.component.mjs +0 -78
  328. package/esm2022/components/navigation/vertical/components/spacer/spacer.component.mjs +0 -56
  329. package/esm2022/components/navigation/vertical/vertical.component.mjs +0 -584
  330. package/esm2022/components/pagination/cmat-components-pagination.mjs +0 -5
  331. package/esm2022/components/pagination/pagination.component.mjs +0 -67
  332. package/esm2022/components/pagination/pagination.directive.mjs +0 -197
  333. package/esm2022/components/pagination/pagination.instance.mjs +0 -2
  334. package/esm2022/components/pagination/pagination.pipe.mjs +0 -100
  335. package/esm2022/components/pagination/pagination.service.mjs +0 -90
  336. package/esm2022/components/pagination/public-api.mjs +0 -6
  337. package/esm2022/components/password-strength/animations/index.mjs +0 -48
  338. package/esm2022/components/password-strength/cmat-components-password-strength.mjs +0 -5
  339. package/esm2022/components/password-strength/enum.mjs +0 -17
  340. package/esm2022/components/password-strength/mat-pass-toggle-visibility/mat-pass-toggle-visibility.component.mjs +0 -27
  341. package/esm2022/components/password-strength/mat-password-strength/mat-password-strength.component.mjs +0 -206
  342. package/esm2022/components/password-strength/mat-password-strength-info/mat-password-strength-info.component.mjs +0 -150
  343. package/esm2022/components/password-strength/mat-password-strength-validator.mjs +0 -36
  344. package/esm2022/components/password-strength/public-api.mjs +0 -4
  345. package/esm2022/components/password-strength/regexp.class.mjs +0 -8
  346. package/esm2022/components/popover/cmat-components-popover.mjs +0 -5
  347. package/esm2022/components/popover/popover-trigger.mjs +0 -442
  348. package/esm2022/components/popover/popover.component.mjs +0 -348
  349. package/esm2022/components/popover/popover.errors.mjs +0 -27
  350. package/esm2022/components/popover/popover.interfaces.mjs +0 -2
  351. package/esm2022/components/popover/popover.target.mjs +0 -18
  352. package/esm2022/components/popover/popover.type.mjs +0 -2
  353. package/esm2022/components/popover/public-api.mjs +0 -5
  354. package/esm2022/components/progress-bar/cmat-components-progress-bar.mjs +0 -5
  355. package/esm2022/components/progress-bar/progress-bar.component.mjs +0 -58
  356. package/esm2022/components/progress-bar/public-api.mjs +0 -2
  357. package/esm2022/components/rating/cmat-components-rating.mjs +0 -5
  358. package/esm2022/components/rating/public-api.mjs +0 -2
  359. package/esm2022/components/rating/rating.component.mjs +0 -202
  360. package/esm2022/components/select-search/cmat-components-select-search.mjs +0 -5
  361. package/esm2022/components/select-search/default-options.mjs +0 -16
  362. package/esm2022/components/select-search/public-api.mjs +0 -3
  363. package/esm2022/components/select-search/select-no-entries-found.directive.mjs +0 -14
  364. package/esm2022/components/select-search/select-search-clear.directive.mjs +0 -14
  365. package/esm2022/components/select-search/select-search.component.mjs +0 -485
  366. package/esm2022/components/select-tree/cmat-components-select-tree.mjs +0 -5
  367. package/esm2022/components/select-tree/public-api.mjs +0 -4
  368. package/esm2022/components/select-tree/select-tree.component.mjs +0 -565
  369. package/esm2022/components/select-tree/select-tree.flatnode.mjs +0 -3
  370. package/esm2022/components/select-tree/select-tree.node.mjs +0 -3
  371. package/esm2022/components/timeline/cmat-components-timeline.mjs +0 -5
  372. package/esm2022/components/timeline/public-api.mjs +0 -3
  373. package/esm2022/components/timeline/timeline-item/timeline-item.component.mjs +0 -70
  374. package/esm2022/components/timeline/timeline.component.mjs +0 -107
  375. package/esm2022/components/toast/cmat-components-toast.mjs +0 -5
  376. package/esm2022/components/toast/models/global-config.model.mjs +0 -2
  377. package/esm2022/components/toast/models/toast.model.mjs +0 -2
  378. package/esm2022/components/toast/models/type.model.mjs +0 -2
  379. package/esm2022/components/toast/public-api.mjs +0 -7
  380. package/esm2022/components/toast/toast-modal.component.mjs +0 -53
  381. package/esm2022/components/toast/toast.component.mjs +0 -30
  382. package/esm2022/components/toast/toast.service.mjs +0 -122
  383. package/esm2022/components/transfer-picker/cmat-components-transfer-picker.mjs +0 -5
  384. package/esm2022/components/transfer-picker/filter/filter.component.mjs +0 -91
  385. package/esm2022/components/transfer-picker/interface.mjs +0 -17
  386. package/esm2022/components/transfer-picker/public-api.mjs +0 -8
  387. package/esm2022/components/transfer-picker/search/search.component.mjs +0 -38
  388. package/esm2022/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.mjs +0 -201
  389. package/esm2022/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.mjs +0 -32
  390. package/esm2022/components/transfer-picker/transfer-picker.component.mjs +0 -84
  391. package/esm2022/components/transfer-picker/transfer-picker.service.mjs +0 -137
  392. package/esm2022/components/upload/cmat-components-upload.mjs +0 -5
  393. package/esm2022/components/upload/files.type.mjs +0 -2
  394. package/esm2022/components/upload/files.util.service.mjs +0 -89
  395. package/esm2022/components/upload/public-api.mjs +0 -5
  396. package/esm2022/components/upload/upload-queue/upload-queue.component.mjs +0 -155
  397. package/esm2022/components/upload/upload.component.mjs +0 -118
  398. package/esm2022/directives/animate-on-scroll/animate-on-scroll.directive.mjs +0 -126
  399. package/esm2022/directives/animate-on-scroll/cmat-directives-animate-on-scroll.mjs +0 -5
  400. package/esm2022/directives/animate-on-scroll/public-api.mjs +0 -2
  401. package/esm2022/directives/animate-on-scroll/scroll.service.mjs +0 -38
  402. package/esm2022/directives/autofocus/autofocus.directive.mjs +0 -20
  403. package/esm2022/directives/autofocus/cmat-directives-autofocus.mjs +0 -5
  404. package/esm2022/directives/autofocus/public-api.mjs +0 -2
  405. package/esm2022/directives/debounce/abstract-debounce.directive.mjs +0 -34
  406. package/esm2022/directives/debounce/cmat-directives-debounce.mjs +0 -5
  407. package/esm2022/directives/debounce/debounce-click.directive.mjs +0 -25
  408. package/esm2022/directives/debounce/debounce-keyup.directive.mjs +0 -25
  409. package/esm2022/directives/debounce/public-api.mjs +0 -3
  410. package/esm2022/directives/digit-only/cmat-directives-digit-only.mjs +0 -5
  411. package/esm2022/directives/digit-only/digit-only.directive.mjs +0 -298
  412. package/esm2022/directives/digit-only/mask.directive.mjs +0 -84
  413. package/esm2022/directives/digit-only/public-api.mjs +0 -3
  414. package/esm2022/directives/equal-validator/cmat-directives-equal-validator.mjs +0 -5
  415. package/esm2022/directives/equal-validator/equal-validator.directive.mjs +0 -54
  416. package/esm2022/directives/equal-validator/public-api.mjs +0 -2
  417. package/esm2022/lib/mock-api/cmat-lib-mock-api.mjs +0 -5
  418. package/esm2022/lib/mock-api/mock-api.constants.mjs +0 -3
  419. package/esm2022/lib/mock-api/mock-api.interceptor.mjs +0 -73
  420. package/esm2022/lib/mock-api/mock-api.request-handler.mjs +0 -48
  421. package/esm2022/lib/mock-api/mock-api.service.mjs +0 -93
  422. package/esm2022/lib/mock-api/mock-api.types.mjs +0 -2
  423. package/esm2022/lib/mock-api/mock-api.utils.mjs +0 -16
  424. package/esm2022/lib/mock-api/public-api.mjs +0 -6
  425. package/esm2022/pipes/bytes/bytes.pipe.mjs +0 -25
  426. package/esm2022/pipes/bytes/cmat-pipes-bytes.mjs +0 -5
  427. package/esm2022/pipes/bytes/public-api.mjs +0 -2
  428. package/esm2022/pipes/date-format/cmat-pipes-date-format.mjs +0 -5
  429. package/esm2022/pipes/date-format/date-format.pipe.mjs +0 -20
  430. package/esm2022/pipes/date-format/public-api.mjs +0 -2
  431. package/esm2022/pipes/find-by-key/cmat-pipes-find-by-key.mjs +0 -5
  432. package/esm2022/pipes/find-by-key/find-by-key.pipe.mjs +0 -23
  433. package/esm2022/pipes/find-by-key/public-api.mjs +0 -2
  434. package/esm2022/pipes/group-by/cmat-pipes-group-by.mjs +0 -5
  435. package/esm2022/pipes/group-by/group-by.pipe.mjs +0 -29
  436. package/esm2022/pipes/group-by/public-api.mjs +0 -2
  437. package/esm2022/pipes/keys/cmat-pipes-keys.mjs +0 -5
  438. package/esm2022/pipes/keys/keys.pipe.mjs +0 -26
  439. package/esm2022/pipes/keys/public-api.mjs +0 -2
  440. package/esm2022/pipes/secure/cmat-pipes-secure.mjs +0 -5
  441. package/esm2022/pipes/secure/public-api.mjs +0 -2
  442. package/esm2022/pipes/secure/secure-pipe.mjs +0 -46
  443. package/esm2022/pipes/uppercase/cmat-pipes-uppercase.mjs +0 -5
  444. package/esm2022/pipes/uppercase/public-api.mjs +0 -2
  445. package/esm2022/pipes/uppercase/uppercase.pipe.mjs +0 -17
  446. package/esm2022/public-api.mjs +0 -2
  447. package/esm2022/services/alert/alert.dialog.mjs +0 -12
  448. package/esm2022/services/alert/alert.message.mjs +0 -9
  449. package/esm2022/services/alert/alert.service.mjs +0 -166
  450. package/esm2022/services/alert/cmat-services-alert.mjs +0 -5
  451. package/esm2022/services/alert/enum.mjs +0 -15
  452. package/esm2022/services/alert/public-api.mjs +0 -5
  453. package/esm2022/services/config/cmat-services-config.mjs +0 -5
  454. package/esm2022/services/config/config.constants.mjs +0 -3
  455. package/esm2022/services/config/config.service.mjs +0 -35
  456. package/esm2022/services/config/public-api.mjs +0 -4
  457. package/esm2022/services/config/urlStateConfig.service.mjs +0 -30
  458. package/esm2022/services/confirmation/cmat-services-confirmation.mjs +0 -5
  459. package/esm2022/services/confirmation/confirmation.service.mjs +0 -51
  460. package/esm2022/services/confirmation/confirmation.types.mjs +0 -2
  461. package/esm2022/services/confirmation/dialog/dialog.component.mjs +0 -25
  462. package/esm2022/services/confirmation/public-api.mjs +0 -3
  463. package/esm2022/services/data/cmat-services-data.mjs +0 -5
  464. package/esm2022/services/data/data.service.mjs +0 -169
  465. package/esm2022/services/data/public-api.mjs +0 -2
  466. package/esm2022/services/loading/cmat-services-loading.mjs +0 -5
  467. package/esm2022/services/loading/loading.interceptor.mjs +0 -29
  468. package/esm2022/services/loading/loading.service.mjs +0 -72
  469. package/esm2022/services/loading/public-api.mjs +0 -3
  470. package/esm2022/services/local-storage/cmat-services-local-storage.mjs +0 -5
  471. package/esm2022/services/local-storage/local-storage.service.mjs +0 -22
  472. package/esm2022/services/local-storage/public-api.mjs +0 -2
  473. package/esm2022/services/media-watcher/cmat-services-media-watcher.mjs +0 -5
  474. package/esm2022/services/media-watcher/media-watcher.service.mjs +0 -55
  475. package/esm2022/services/media-watcher/public-api.mjs +0 -2
  476. package/esm2022/services/platform/cmat-services-platform.mjs +0 -5
  477. package/esm2022/services/platform/platform.service.mjs +0 -46
  478. package/esm2022/services/platform/public-api.mjs +0 -2
  479. package/esm2022/services/splash-screen/cmat-services-splash-screen.mjs +0 -5
  480. package/esm2022/services/splash-screen/public-api.mjs +0 -2
  481. package/esm2022/services/splash-screen/splash-screen.service.mjs +0 -42
  482. package/esm2022/services/title/cmat-services-title.mjs +0 -5
  483. package/esm2022/services/title/public-api.mjs +0 -2
  484. package/esm2022/services/title/title.service.mjs +0 -46
  485. package/esm2022/services/translation/cmat-services-translation.mjs +0 -5
  486. package/esm2022/services/translation/public-api.mjs +0 -2
  487. package/esm2022/services/translation/translation.service.mjs +0 -62
  488. package/esm2022/services/utils/cmat-services-utils.mjs +0 -5
  489. package/esm2022/services/utils/public-api.mjs +0 -2
  490. package/esm2022/services/utils/utils.service.mjs +0 -467
  491. package/esm2022/validators/cmat-validators.mjs +0 -5
  492. package/esm2022/validators/public-api.mjs +0 -2
  493. package/esm2022/validators/validators.mjs +0 -33
  494. package/esm2022/version/cmat-version.mjs +0 -5
  495. package/esm2022/version/public-api.mjs +0 -2
  496. package/esm2022/version/version.mjs +0 -11
@@ -1,531 +0,0 @@
1
- import { A11yModule } from '@angular/cdk/a11y';
2
- import { coerceBooleanProperty, coerceStringArray } from '@angular/cdk/coercion';
3
- import { hasModifierKey } from '@angular/cdk/keycodes';
4
- import { Overlay, OverlayConfig } from '@angular/cdk/overlay';
5
- import { _getFocusedElementPierceShadowDom } from '@angular/cdk/platform';
6
- import { ComponentPortal } from '@angular/cdk/portal';
7
- import { DOCUMENT, NgClass } from '@angular/common';
8
- import { afterNextRender, ChangeDetectionStrategy, Component, EventEmitter, Inject, InjectionToken, Input, Optional, Output, ViewChild, ViewEncapsulation } from '@angular/core';
9
- import { Subject, Subscription, merge } from 'rxjs';
10
- import { filter, take } from 'rxjs/operators';
11
- import { CmatDatetimepickerCalendarComponent } from './calendar';
12
- import { fadeInCalendar, transformPanel } from './datetimepicker-animations';
13
- import { createMissingDateImplError } from './datetimepicker-errors';
14
- import * as i0 from "@angular/core";
15
- import * as i1 from "@angular/cdk/a11y";
16
- import * as i2 from "@angular/cdk/overlay";
17
- import * as i3 from "cmat/components/adapter";
18
- import * as i4 from "@angular/cdk/bidi";
19
- /** Used to generate a unique ID for each datepicker instance. */
20
- let datetimepickerUid = 0;
21
- /** Injection token that determines the scroll handling while the calendar is open. */
22
- export const CMAT_DATETIMEPICKER_SCROLL_STRATEGY = new InjectionToken('cmat-datetimepicker-scroll-strategy');
23
- // eslint-disable-next-line @typescript-eslint/naming-convention
24
- export function CMAT_DATETIMEPICKER_SCROLL_STRATEGY_FACTORY(overlay) {
25
- return () => overlay.scrollStrategies.reposition();
26
- }
27
- export const CMAT_DATETIMEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = {
28
- provide: CMAT_DATETIMEPICKER_SCROLL_STRATEGY,
29
- deps: [Overlay],
30
- useFactory: CMAT_DATETIMEPICKER_SCROLL_STRATEGY_FACTORY
31
- };
32
- /**
33
- * Component used as the content for the datepicker dialog and popup. We use this instead of using
34
- * MatCalendar directly as the content so we can control the initial focus. This also gives us a
35
- * place to put additional features of the popup that are not part of the calendar itself in the
36
- * future. (e.g. confirmation buttons).
37
- */
38
- export class CmatDatetimepickerContentComponent {
39
- constructor(_elementRef, _changeDetectorRef) {
40
- this._elementRef = _elementRef;
41
- this._changeDetectorRef = _changeDetectorRef;
42
- /** Emits when an animation has finished. */
43
- this.animationDone = new Subject();
44
- /** Id of the label for the `role="dialog"` element. */
45
- this.dialogLabelId = null;
46
- }
47
- ngOnInit() {
48
- this.animationState = this.datetimepicker.touchUi ? 'enter-dialog' : 'enter-dropdown';
49
- }
50
- ngAfterContentInit() {
51
- this._calendar.focusActiveCell();
52
- }
53
- startExitAnimation() {
54
- this.animationState = 'void';
55
- this._changeDetectorRef.markForCheck();
56
- }
57
- ngOnDestroy() {
58
- this.animationDone.complete();
59
- }
60
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: CmatDatetimepickerContentComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
61
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.10", type: CmatDatetimepickerContentComponent, isStandalone: true, selector: "cmat-datetimepicker-content", inputs: { color: "color" }, host: { listeners: { "@transformPanel.done": "animationDone.next()" }, properties: { "class": "color ? \"mat-\" + color : \"\"", "class.cmat-datetimepicker-content-touch": "datetimepicker?.touchUi", "attr.mode": "datetimepicker.mode", "@transformPanel": "animationState" }, classAttribute: "cmat-datetimepicker-content" }, viewQueries: [{ propertyName: "_calendar", first: true, predicate: CmatDatetimepickerCalendarComponent, descendants: true, static: true }], exportAs: ["cmatDatetimepickerContent"], ngImport: i0, template: "<div cdkTrapFocus role=\"dialog\" class=\"cmat-datetimepicker-content-container\" [attr.aria-modal]=\"true\"\r\n [attr.aria-labelledby]=\"dialogLabelId ?? undefined\" [attr.mode]=\"datetimepicker.mode\">\r\n <cmat-datetimepicker-calendar [id]=\"datetimepicker.id\" [ngClass]=\"datetimepicker.panelClass\"\r\n [attr.mode]=\"datetimepicker.mode\" [type]=\"datetimepicker.type\" [startAt]=\"datetimepicker.startAt\"\r\n [startView]=\"datetimepicker.startView\" [maxDate]=\"datetimepicker.maxDate\" [minDate]=\"datetimepicker.minDate\"\r\n [dateFilter]=\"datetimepicker.dateFilter\" [multiYearSelector]=\"datetimepicker.multiYearSelector\"\r\n [preventSameDateTimeSelection]=\"datetimepicker.preventSameDateTimeSelection\"\r\n [timeInterval]=\"datetimepicker.timeInterval\" [twelvehour]=\"datetimepicker.twelvehour\"\r\n [selected]=\"datetimepicker.selected\" [timeInput]=\"datetimepicker.timeInput\"\r\n [@fadeInCalendar]=\"'enter'\" (selectedChange)=\"datetimepicker.select($event)\"\r\n (viewChanged)=\"datetimepicker.viewChange($event)\" (userSelection)=\"datetimepicker.close()\">\r\n </cmat-datetimepicker-calendar>\r\n</div>", dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: CmatDatetimepickerCalendarComponent, selector: "cmat-datetimepicker-calendar", inputs: ["multiYearSelector", "startView", "twelvehour", "timeInterval", "dateFilter", "preventSameDateTimeSelection", "type", "startAt", "timeInput", "selected", "minDate", "maxDate"], outputs: ["userSelection", "selectedChange", "viewChanged"], exportAs: ["cmatDatetimepickerCalendar"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [
62
- transformPanel,
63
- fadeInCalendar,
64
- ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
65
- }
66
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: CmatDatetimepickerContentComponent, decorators: [{
67
- type: Component,
68
- args: [{ selector: 'cmat-datetimepicker-content', host: {
69
- 'class': 'cmat-datetimepicker-content',
70
- // eslint-disable-next-line @typescript-eslint/naming-convention
71
- '[class]': 'color ? "mat-" + color : ""',
72
- // eslint-disable-next-line @typescript-eslint/naming-convention
73
- '[class.cmat-datetimepicker-content-touch]': 'datetimepicker?.touchUi',
74
- // eslint-disable-next-line @typescript-eslint/naming-convention
75
- '[attr.mode]': 'datetimepicker.mode',
76
- // eslint-disable-next-line @typescript-eslint/naming-convention
77
- '[@transformPanel]': 'animationState',
78
- // eslint-disable-next-line @typescript-eslint/naming-convention
79
- '(@transformPanel.done)': 'animationDone.next()',
80
- }, animations: [
81
- transformPanel,
82
- fadeInCalendar,
83
- ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatDatetimepickerContent', standalone: true, imports: [A11yModule, CmatDatetimepickerCalendarComponent, NgClass], template: "<div cdkTrapFocus role=\"dialog\" class=\"cmat-datetimepicker-content-container\" [attr.aria-modal]=\"true\"\r\n [attr.aria-labelledby]=\"dialogLabelId ?? undefined\" [attr.mode]=\"datetimepicker.mode\">\r\n <cmat-datetimepicker-calendar [id]=\"datetimepicker.id\" [ngClass]=\"datetimepicker.panelClass\"\r\n [attr.mode]=\"datetimepicker.mode\" [type]=\"datetimepicker.type\" [startAt]=\"datetimepicker.startAt\"\r\n [startView]=\"datetimepicker.startView\" [maxDate]=\"datetimepicker.maxDate\" [minDate]=\"datetimepicker.minDate\"\r\n [dateFilter]=\"datetimepicker.dateFilter\" [multiYearSelector]=\"datetimepicker.multiYearSelector\"\r\n [preventSameDateTimeSelection]=\"datetimepicker.preventSameDateTimeSelection\"\r\n [timeInterval]=\"datetimepicker.timeInterval\" [twelvehour]=\"datetimepicker.twelvehour\"\r\n [selected]=\"datetimepicker.selected\" [timeInput]=\"datetimepicker.timeInput\"\r\n [@fadeInCalendar]=\"'enter'\" (selectedChange)=\"datetimepicker.select($event)\"\r\n (viewChanged)=\"datetimepicker.viewChange($event)\" (userSelection)=\"datetimepicker.close()\">\r\n </cmat-datetimepicker-calendar>\r\n</div>" }]
84
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { _calendar: [{
85
- type: ViewChild,
86
- args: [CmatDatetimepickerCalendarComponent, { static: true }]
87
- }], color: [{
88
- type: Input
89
- }] } });
90
- export class CmatDatetimepickerComponent {
91
- constructor(_overlay, _injector, _viewContainerRef, _scrollStrategy, _dateAdapter, _dir, _document) {
92
- this._overlay = _overlay;
93
- this._injector = _injector;
94
- this._viewContainerRef = _viewContainerRef;
95
- this._scrollStrategy = _scrollStrategy;
96
- this._dateAdapter = _dateAdapter;
97
- this._dir = _dir;
98
- this._document = _document;
99
- /** The view that the calendar should start in. */
100
- this.startView = 'month';
101
- this.mode = 'auto';
102
- this.timeInterval = 1;
103
- /** Prevent user to select same date time */
104
- this.preventSameDateTimeSelection = false;
105
- /** Preferred position of the datetimepicker in the X axis. */
106
- this.xPosition = 'start';
107
- /** Preferred position of the datetimepicker in the Y axis. */
108
- this.yPosition = 'below';
109
- this.selectedChanged = new EventEmitter();
110
- /** Emits when the datepicker has been opened. */
111
- this.openedStream = new EventEmitter();
112
- /** Emits when the datepicker has been closed. */
113
- this.closedStream = new EventEmitter();
114
- /** Emits when the view has been changed. **/
115
- this.viewChanged = new EventEmitter();
116
- /** Whether the calendar is open. */
117
- /** The id for the datepicker calendar. */
118
- this.id = `cmat-datetimepicker-${datetimepickerUid++}`;
119
- /** Emits when the datepicker is disabled. */
120
- this.disabledChange = new Subject();
121
- this._validSelected = null;
122
- /** The element that was focused before the datetimepicker was opened. */
123
- this._focusedElementBeforeOpen = null;
124
- /** Unique class that will be added to the backdrop so that the test harnesses can look it up. */
125
- this._backdropHarnessClass = `${this.id}-backdrop`;
126
- this._inputStateChanges = Subscription.EMPTY;
127
- this._multiYearSelector = false;
128
- this._twelvehour = false;
129
- this._opened = false;
130
- this._type = 'datetime';
131
- this._touchUi = false;
132
- this._timeInput = true;
133
- this._restoreFocus = true;
134
- if (!this._dateAdapter) {
135
- throw createMissingDateImplError('DatetimeAdapter');
136
- }
137
- }
138
- /** Whether to show multi-year view. */
139
- get multiYearSelector() {
140
- return this._multiYearSelector;
141
- }
142
- set multiYearSelector(value) {
143
- this._multiYearSelector = coerceBooleanProperty(value);
144
- }
145
- /** Whether the clock uses 12 hour format. */
146
- // eslint-disable-next-line @typescript-eslint/member-ordering
147
- get twelvehour() {
148
- return this._twelvehour;
149
- }
150
- set twelvehour(value) {
151
- this._twelvehour = coerceBooleanProperty(value);
152
- }
153
- /**
154
- * Classes to be passed to the date picker panel.
155
- * Supports string and string array values, similar to `ngClass`.
156
- */
157
- // eslint-disable-next-line @typescript-eslint/member-ordering
158
- get panelClass() {
159
- return this._panelClass;
160
- }
161
- set panelClass(value) {
162
- this._panelClass = coerceStringArray(value);
163
- }
164
- /** Whether the calendar is open. */
165
- // eslint-disable-next-line @typescript-eslint/member-ordering
166
- get opened() {
167
- return this._opened;
168
- }
169
- set opened(value) {
170
- coerceBooleanProperty(value) ? this.open() : this.close();
171
- }
172
- /** Color palette to use on the datetimepicker's calendar. */
173
- // eslint-disable-next-line @typescript-eslint/member-ordering
174
- get color() {
175
- return (this._color ??
176
- (this.datetimepickerInput ? this.datetimepickerInput.getThemePalette() : undefined));
177
- }
178
- set color(value) {
179
- this._color = value;
180
- }
181
- /** The date to open the calendar to initially. */
182
- // eslint-disable-next-line @typescript-eslint/member-ordering
183
- get startAt() {
184
- // If an explicit startAt is set we start there, otherwise we start at whatever the currently
185
- // selected value is.
186
- return this._startAt ?? (this.datetimepickerInput ? this.datetimepickerInput.value : null);
187
- }
188
- set startAt(date) {
189
- this._startAt = this._dateAdapter.getValidDateOrNull(date);
190
- }
191
- // eslint-disable-next-line @typescript-eslint/member-ordering
192
- get type() {
193
- return this._type;
194
- }
195
- set type(value) {
196
- this._type = value || 'datetime';
197
- }
198
- /**
199
- * Whether the calendar is in time mode. In time mode the calendar clock gets time input
200
- * elements rather then just clock. When `touchUi` is enabled this will be disabled.
201
- */
202
- // eslint-disable-next-line @typescript-eslint/member-ordering
203
- get timeInput() {
204
- return this._timeInput && !this.touchUi;
205
- }
206
- set timeInput(value) {
207
- this._timeInput = coerceBooleanProperty(value);
208
- }
209
- /**
210
- * Whether the calendar UI is in touch mode. In touch mode the calendar opens in a dialog rather
211
- * than a popup and elements have more padding to allow for bigger touch targets.
212
- */
213
- // eslint-disable-next-line @typescript-eslint/member-ordering
214
- get touchUi() {
215
- return this._touchUi;
216
- }
217
- set touchUi(value) {
218
- this._touchUi = coerceBooleanProperty(value);
219
- }
220
- /** Whether the datepicker pop-up should be disabled. */
221
- // eslint-disable-next-line @typescript-eslint/member-ordering
222
- get disabled() {
223
- return this._disabled === undefined && this.datetimepickerInput ?
224
- this.datetimepickerInput.disabled : !!this._disabled;
225
- }
226
- set disabled(value) {
227
- const newValue = coerceBooleanProperty(value);
228
- if (newValue !== this._disabled) {
229
- this._disabled = newValue;
230
- this.disabledChange.next(newValue);
231
- }
232
- }
233
- /**
234
- * Whether to restore focus to the previously-focused element when the panel is closed.
235
- * Note that automatic focus restoration is an accessibility feature and it is recommended that
236
- * you provide your own equivalent, if you decide to turn it off.
237
- */
238
- // eslint-disable-next-line @typescript-eslint/member-ordering
239
- get restoreFocus() {
240
- return this._restoreFocus;
241
- }
242
- set restoreFocus(value) {
243
- this._restoreFocus = coerceBooleanProperty(value);
244
- }
245
- /** The currently selected date. */
246
- // eslint-disable-next-line @typescript-eslint/member-ordering
247
- get selected() {
248
- return this._validSelected;
249
- }
250
- set selected(value) {
251
- this._validSelected = value;
252
- }
253
- /** The minimum selectable date. */
254
- // eslint-disable-next-line @typescript-eslint/member-ordering
255
- get minDate() {
256
- return this.datetimepickerInput && this.datetimepickerInput.min;
257
- }
258
- /** The maximum selectable date. */
259
- // eslint-disable-next-line @typescript-eslint/member-ordering
260
- get maxDate() {
261
- return this.datetimepickerInput && this.datetimepickerInput.max;
262
- }
263
- // eslint-disable-next-line @typescript-eslint/member-ordering
264
- get dateFilter() {
265
- return this.datetimepickerInput?.dateFilter;
266
- }
267
- ngOnDestroy() {
268
- this._destroyOverlay();
269
- this.close();
270
- this._inputStateChanges.unsubscribe();
271
- this.disabledChange.complete();
272
- }
273
- /**
274
- * Register an input with this datepicker.
275
- *
276
- * @param input The datepicker input to register with this datepicker.
277
- */
278
- registerInput(input) {
279
- if (this.datetimepickerInput) {
280
- throw Error('A MatDatepicker can only be associated with a single input.');
281
- }
282
- this.datetimepickerInput = input;
283
- this._inputStateChanges =
284
- this.datetimepickerInput.valueChange.subscribe((value) => this.selected = value);
285
- }
286
- /** Open the calendar. */
287
- open() {
288
- if (this.opened || this.disabled) {
289
- return;
290
- }
291
- if (!this.datetimepickerInput) {
292
- throw Error('Attempted to open an MatDatepicker with no associated input.');
293
- }
294
- this._focusedElementBeforeOpen = _getFocusedElementPierceShadowDom();
295
- this._openOverlay();
296
- this._opened = true;
297
- this.openedStream.emit();
298
- }
299
- /** Close the calendar. */
300
- close() {
301
- if (!this._opened) {
302
- return;
303
- }
304
- const canRestoreFocus = this._restoreFocus &&
305
- this._focusedElementBeforeOpen &&
306
- typeof this._focusedElementBeforeOpen.focus === 'function';
307
- const completeClose = () => {
308
- // The `_opened` could've been reset already if
309
- // we got two events in quick succession.
310
- if (this._opened) {
311
- this._opened = false;
312
- this.closedStream.emit();
313
- }
314
- };
315
- if (this._componentRef) {
316
- const { instance, location } = this._componentRef;
317
- instance.startExitAnimation();
318
- instance.animationDone.pipe(take(1)).subscribe(() => {
319
- const activeElement = this._document.activeElement;
320
- // Since we restore focus after the exit animation, we have to check that
321
- // the user didn't move focus themselves inside the `close` handler.
322
- if (canRestoreFocus &&
323
- (!activeElement ||
324
- activeElement === this._document.activeElement ||
325
- location.nativeElement.contains(activeElement))) {
326
- this._focusedElementBeforeOpen?.focus();
327
- }
328
- this._focusedElementBeforeOpen = null;
329
- this._destroyOverlay();
330
- });
331
- }
332
- if (canRestoreFocus) {
333
- // Because IE moves focus asynchronously, we can't count on it being restored before we've
334
- // marked the datepicker as closed. If the event fires out of sequence and the element that
335
- // we're refocusing opens the datepicker on focus, the user could be stuck with not being
336
- // able to close the calendar at all. We work around it by making the logic, that marks
337
- // the datepicker as closed, async as well.
338
- setTimeout(completeClose);
339
- }
340
- else {
341
- completeClose();
342
- }
343
- }
344
- /** Selects the given date */
345
- select(date) {
346
- const oldValue = this.selected;
347
- this.selected = date;
348
- if (!this._dateAdapter.sameDatetime(oldValue, this.selected)) {
349
- this.selectedChanged.emit(date);
350
- }
351
- }
352
- viewChange(type) {
353
- this.viewChanged.emit(type);
354
- }
355
- /**
356
- * Forwards relevant values from the datetimepicker to the
357
- * datetimepicker content inside the overlay.
358
- */
359
- _forwardContentValues(instance) {
360
- instance.datetimepicker = this;
361
- instance.color = this.color;
362
- instance.dialogLabelId = this.datetimepickerInput.getOverlayLabelId();
363
- }
364
- /** Opens the overlay with the calendar. */
365
- _openOverlay() {
366
- this._destroyOverlay();
367
- const isDialog = this.touchUi;
368
- const labelId = this.datetimepickerInput.getOverlayLabelId();
369
- const portal = new ComponentPortal(CmatDatetimepickerContentComponent, this._viewContainerRef);
370
- const overlayRef = (this._overlayRef = this._overlay.create(new OverlayConfig({
371
- positionStrategy: isDialog ? this._getDialogStrategy() : this._getDropdownStrategy(),
372
- hasBackdrop: true,
373
- backdropClass: [
374
- isDialog ? 'cdk-overlay-dark-backdrop' : 'mat-overlay-transparent-backdrop',
375
- this._backdropHarnessClass,
376
- ],
377
- direction: this._dir,
378
- scrollStrategy: isDialog ? this._overlay.scrollStrategies.block() : this._scrollStrategy(),
379
- panelClass: `cmat-datetimepicker-${isDialog ? 'dialog' : 'popup'}`,
380
- })));
381
- const overlayElement = overlayRef.overlayElement;
382
- overlayElement.setAttribute('role', 'dialog');
383
- if (labelId) {
384
- overlayElement.setAttribute('aria-labelledby', labelId);
385
- }
386
- if (isDialog) {
387
- overlayElement.setAttribute('aria-modal', 'true');
388
- }
389
- this._getCloseStream(overlayRef).subscribe((event) => {
390
- if (event) {
391
- event.preventDefault();
392
- }
393
- this.close();
394
- });
395
- this._componentRef = overlayRef.attach(portal);
396
- this._forwardContentValues(this._componentRef.instance);
397
- // Update the position once the calendar has rendered. Only relevant in dropdown mode.
398
- if (!isDialog) {
399
- afterNextRender(() => {
400
- overlayRef.updatePosition();
401
- }, { injector: this._injector });
402
- }
403
- }
404
- /** Destroys the current overlay. */
405
- _destroyOverlay() {
406
- if (this._overlayRef) {
407
- this._overlayRef.dispose();
408
- this._overlayRef = this._componentRef = null;
409
- }
410
- }
411
- /** Gets a position strategy that will open the calendar as a dropdown. */
412
- _getDialogStrategy() {
413
- return this._overlay.position().global().centerHorizontally().centerVertically();
414
- }
415
- /** Gets a position strategy that will open the calendar as a dropdown. */
416
- _getDropdownStrategy() {
417
- const strategy = this._overlay
418
- .position()
419
- .flexibleConnectedTo(this.datetimepickerInput.getConnectedOverlayOrigin())
420
- .withTransformOriginOn('.cmat-datetimepicker-content')
421
- .withFlexibleDimensions(false)
422
- .withViewportMargin(8)
423
- .withLockedPosition();
424
- return this._setConnectedPositions(strategy);
425
- }
426
- /**
427
- * Sets the positions of the datetimepicker in dropdown mode based on the current configuration.
428
- */
429
- _setConnectedPositions(strategy) {
430
- const primaryX = this.xPosition === 'end' ? 'end' : 'start';
431
- const secondaryX = primaryX === 'start' ? 'end' : 'start';
432
- const primaryY = this.yPosition === 'above' ? 'bottom' : 'top';
433
- const secondaryY = primaryY === 'top' ? 'bottom' : 'top';
434
- return strategy.withPositions([
435
- {
436
- originX: primaryX,
437
- originY: secondaryY,
438
- overlayX: primaryX,
439
- overlayY: primaryY,
440
- },
441
- {
442
- originX: primaryX,
443
- originY: primaryY,
444
- overlayX: primaryX,
445
- overlayY: secondaryY,
446
- },
447
- {
448
- originX: secondaryX,
449
- originY: secondaryY,
450
- overlayX: secondaryX,
451
- overlayY: primaryY,
452
- },
453
- {
454
- originX: secondaryX,
455
- originY: primaryY,
456
- overlayX: secondaryX,
457
- overlayY: secondaryY,
458
- },
459
- ]);
460
- }
461
- /** Gets an observable that will emit when the overlay is supposed to be closed. */
462
- _getCloseStream(overlayRef) {
463
- return merge(overlayRef.backdropClick(), overlayRef.detachments(), overlayRef.keydownEvents().pipe(filter(event =>
464
- // Closing on alt + up is only valid when there's an input associated with the datetimepicker.
465
- ((event.code === 'Escape' && !hasModifierKey(event)) ||
466
- (this.datetimepickerInput &&
467
- hasModifierKey(event, 'altKey') &&
468
- event.code === 'ArrowUp')))));
469
- }
470
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: CmatDatetimepickerComponent, deps: [{ token: i2.Overlay }, { token: i0.Injector }, { token: i0.ViewContainerRef }, { token: CMAT_DATETIMEPICKER_SCROLL_STRATEGY }, { token: i3.DatetimeAdapter, optional: true }, { token: i4.Directionality, optional: true }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
471
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.10", type: CmatDatetimepickerComponent, isStandalone: true, selector: "cmat-datetimepicker", inputs: { startView: "startView", mode: "mode", timeInterval: "timeInterval", preventSameDateTimeSelection: "preventSameDateTimeSelection", xPosition: "xPosition", yPosition: "yPosition", multiYearSelector: "multiYearSelector", twelvehour: "twelvehour", panelClass: "panelClass", opened: "opened", color: "color", startAt: "startAt", type: "type", timeInput: "timeInput", touchUi: "touchUi", disabled: "disabled", restoreFocus: "restoreFocus" }, outputs: { selectedChanged: "selectedChanged", openedStream: "openedStream", closedStream: "closedStream", viewChanged: "viewChanged" }, exportAs: ["cmatDatetimepicker"], ngImport: i0, template: '', isInline: true, styles: [".cmat-datetimepicker-calendar-header,.cmat-datetimepicker-calendar-body-cell-content.cmat-datetimepicker-calendar-body-selected{color:#fff!important}.cmat-datetimepicker-calendar-body-cell-content:not(.cmat-datetimepicker-calendar-body-selected).cmat-datetimepicker-calendar-body-today{border-color:var(--cmat-text-hint)}.cmat-datetimepicker-calendar-body-cell:not(.cmat-datetimepicker-calendar-body-disabled):hover>.cmat-datetimepicker-calendar-body-cell-content:not(.cmat-datetimepicker-calendar-body-selected),.cmat-datetimepicker-calendar-body-active>.cmat-datetimepicker-calendar-body-cell-content:not(.cmat-datetimepicker-calendar-body-selected){background-color:rgba(var(--cmat-primary-rgb),.3)}.cmat-datetimepicker-calendar-body-disabled>.cmat-datetimepicker-calendar-body-cell-content:not(.cmat-datetimepicker-calendar-body-selected){color:var(--cmat-text-disabled)}.cmat-datetimepicker-calendar-body-disabled>.cmat-datetimepicker-calendar-body-today:not(.cmat-datetimepicker-calendar-body-selected){border-color:rgba(var(--cmat-text-disabled),.8)}.cmat-datetimepicker-calendar-body-disabled>.cmat-datetimepicker-calendar-body-selected{background-color:rgba(var(--cmat-primary-rgb),.4)}.cmat-datetimepicker-calendar-previous-button.disabled,.cmat-datetimepicker-calendar-next-button.disabled{color:var(--cmat-text-disabled)}.cmat-datetimepicker-clock-wrapper{background-color:var(--cmat-divider)}.cmat-datetimepicker-clock-cell.cmat-datetimepicker-clock-cell-selected{color:#fff!important}.cmat-datetimepicker-clock-cell.cmat-datetimepicker-clock-cell-disabled{color:var(--cmat-text-disabled)}.cmat-datetimepicker-time-input{background-color:var(--cmat-text-disabled)}.cmat-datetimepicker-time-input.cmat-datetimepicker-time-input-active{background-color:rgba(var(--cmat-primary-rgb),.2)}.cmat-datetimepicker-time-input.cmat-datetimepicker-time-input-active:focus{border-color:var(--cmat-primary);background-color:var(--cmat-divider)}.cmat-datetimepicker-time-input.cmat-datetimepicker-time-input-active:focus::placeholder{color:rgba(var(--cmat-primary-rgb),.6)}.cmat-datetimepicker-time-input.cmat-datetimepicker-time-input-warning{border-color:var(--cmat-warn)}.cmat-datetimepicker-time-am.mat-mdc-button,.cmat-datetimepicker-time-pm.mat-mdc-button{color:var(--cmat-text-hint);border-color:var(--cmat-text-hint)}.cmat-datetimepicker-time-am.mat-mdc-button.cmat-datetimepicker-time-ampm-active,.cmat-datetimepicker-time-pm.mat-mdc-button.cmat-datetimepicker-time-ampm-active{background-color:rgba(var(--cmat-accent-rgb),.2)}.cmat-datetimepicker-content{display:block;border-radius:4px;overflow:hidden}.cmat-datetimepicker-content-container{display:flex;flex-direction:column;justify-content:space-between}.cmat-datetimepicker-content .cmat-calendar{width:296px;height:424px}.cmat-datetimepicker-content .cmat-calendar.cmat-datetimepicker-calendar-with-time-input{height:490px}.cmat-datetimepicker-content-touch{display:block;position:relative;overflow:visible}.cmat-datetimepicker-content-touch .cmat-datetimepicker-content-container{min-height:300px;max-height:850px;min-width:250px;max-width:750px}.cmat-datetimepicker-content-touch .cmat-datetimepicker-calendar{width:100%;height:auto}@media all and (orientation: landscape){.cmat-datetimepicker-content-touch .cmat-datetimepicker-content-container[mode=auto],.cmat-datetimepicker-content-touch .cmat-datetimepicker-content-container[mode=landscape]{width:120vh;height:100%;min-height:80vh}.cmat-datetimepicker-content-touch .cmat-datetimepicker-content-container[mode=auto] .cmat-datetimepicker-calendar,.cmat-datetimepicker-content-touch .cmat-datetimepicker-content-container[mode=landscape] .cmat-datetimepicker-calendar{width:auto;height:100%}.cmat-datetimepicker-content-touch .cmat-datetimepicker-content-container[mode=portrait]{width:64vh;height:90vh}.cmat-datetimepicker-content-touch .cmat-datetimepicker-content-container[mode=portrait] .cmat-datetimepicker-calendar{width:100%;height:auto}}@media all and (orientation: portrait){.cmat-datetimepicker-content-touch .cmat-datetimepicker-content-container[mode=auto],.cmat-datetimepicker-content-touch .cmat-datetimepicker-content-container[mode=portrait]{width:80vw;height:120vw}.cmat-datetimepicker-content-touch .cmat-datetimepicker-content-container[mode=auto] .cmat-datetimepicker-calendar,.cmat-datetimepicker-content-touch .cmat-datetimepicker-content-container[mode=portrait] .cmat-datetimepicker-calendar{width:100%;height:auto}.cmat-datetimepicker-content-touch .cmat-datetimepicker-content-container[mode=landscape]{width:90vw;height:64vw}.cmat-datetimepicker-content-touch .cmat-datetimepicker-content-container[mode=landscape] .cmat-datetimepicker-calendar{width:auto;height:100%}.cmat-datetimepicker-content-touch .cmat-datetimepicker-content-container-with-actions{height:135vw}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
472
- }
473
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: CmatDatetimepickerComponent, decorators: [{
474
- type: Component,
475
- args: [{ selector: 'cmat-datetimepicker', exportAs: 'cmatDatetimepicker', template: '', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, standalone: true, styles: [".cmat-datetimepicker-calendar-header,.cmat-datetimepicker-calendar-body-cell-content.cmat-datetimepicker-calendar-body-selected{color:#fff!important}.cmat-datetimepicker-calendar-body-cell-content:not(.cmat-datetimepicker-calendar-body-selected).cmat-datetimepicker-calendar-body-today{border-color:var(--cmat-text-hint)}.cmat-datetimepicker-calendar-body-cell:not(.cmat-datetimepicker-calendar-body-disabled):hover>.cmat-datetimepicker-calendar-body-cell-content:not(.cmat-datetimepicker-calendar-body-selected),.cmat-datetimepicker-calendar-body-active>.cmat-datetimepicker-calendar-body-cell-content:not(.cmat-datetimepicker-calendar-body-selected){background-color:rgba(var(--cmat-primary-rgb),.3)}.cmat-datetimepicker-calendar-body-disabled>.cmat-datetimepicker-calendar-body-cell-content:not(.cmat-datetimepicker-calendar-body-selected){color:var(--cmat-text-disabled)}.cmat-datetimepicker-calendar-body-disabled>.cmat-datetimepicker-calendar-body-today:not(.cmat-datetimepicker-calendar-body-selected){border-color:rgba(var(--cmat-text-disabled),.8)}.cmat-datetimepicker-calendar-body-disabled>.cmat-datetimepicker-calendar-body-selected{background-color:rgba(var(--cmat-primary-rgb),.4)}.cmat-datetimepicker-calendar-previous-button.disabled,.cmat-datetimepicker-calendar-next-button.disabled{color:var(--cmat-text-disabled)}.cmat-datetimepicker-clock-wrapper{background-color:var(--cmat-divider)}.cmat-datetimepicker-clock-cell.cmat-datetimepicker-clock-cell-selected{color:#fff!important}.cmat-datetimepicker-clock-cell.cmat-datetimepicker-clock-cell-disabled{color:var(--cmat-text-disabled)}.cmat-datetimepicker-time-input{background-color:var(--cmat-text-disabled)}.cmat-datetimepicker-time-input.cmat-datetimepicker-time-input-active{background-color:rgba(var(--cmat-primary-rgb),.2)}.cmat-datetimepicker-time-input.cmat-datetimepicker-time-input-active:focus{border-color:var(--cmat-primary);background-color:var(--cmat-divider)}.cmat-datetimepicker-time-input.cmat-datetimepicker-time-input-active:focus::placeholder{color:rgba(var(--cmat-primary-rgb),.6)}.cmat-datetimepicker-time-input.cmat-datetimepicker-time-input-warning{border-color:var(--cmat-warn)}.cmat-datetimepicker-time-am.mat-mdc-button,.cmat-datetimepicker-time-pm.mat-mdc-button{color:var(--cmat-text-hint);border-color:var(--cmat-text-hint)}.cmat-datetimepicker-time-am.mat-mdc-button.cmat-datetimepicker-time-ampm-active,.cmat-datetimepicker-time-pm.mat-mdc-button.cmat-datetimepicker-time-ampm-active{background-color:rgba(var(--cmat-accent-rgb),.2)}.cmat-datetimepicker-content{display:block;border-radius:4px;overflow:hidden}.cmat-datetimepicker-content-container{display:flex;flex-direction:column;justify-content:space-between}.cmat-datetimepicker-content .cmat-calendar{width:296px;height:424px}.cmat-datetimepicker-content .cmat-calendar.cmat-datetimepicker-calendar-with-time-input{height:490px}.cmat-datetimepicker-content-touch{display:block;position:relative;overflow:visible}.cmat-datetimepicker-content-touch .cmat-datetimepicker-content-container{min-height:300px;max-height:850px;min-width:250px;max-width:750px}.cmat-datetimepicker-content-touch .cmat-datetimepicker-calendar{width:100%;height:auto}@media all and (orientation: landscape){.cmat-datetimepicker-content-touch .cmat-datetimepicker-content-container[mode=auto],.cmat-datetimepicker-content-touch .cmat-datetimepicker-content-container[mode=landscape]{width:120vh;height:100%;min-height:80vh}.cmat-datetimepicker-content-touch .cmat-datetimepicker-content-container[mode=auto] .cmat-datetimepicker-calendar,.cmat-datetimepicker-content-touch .cmat-datetimepicker-content-container[mode=landscape] .cmat-datetimepicker-calendar{width:auto;height:100%}.cmat-datetimepicker-content-touch .cmat-datetimepicker-content-container[mode=portrait]{width:64vh;height:90vh}.cmat-datetimepicker-content-touch .cmat-datetimepicker-content-container[mode=portrait] .cmat-datetimepicker-calendar{width:100%;height:auto}}@media all and (orientation: portrait){.cmat-datetimepicker-content-touch .cmat-datetimepicker-content-container[mode=auto],.cmat-datetimepicker-content-touch .cmat-datetimepicker-content-container[mode=portrait]{width:80vw;height:120vw}.cmat-datetimepicker-content-touch .cmat-datetimepicker-content-container[mode=auto] .cmat-datetimepicker-calendar,.cmat-datetimepicker-content-touch .cmat-datetimepicker-content-container[mode=portrait] .cmat-datetimepicker-calendar{width:100%;height:auto}.cmat-datetimepicker-content-touch .cmat-datetimepicker-content-container[mode=landscape]{width:90vw;height:64vw}.cmat-datetimepicker-content-touch .cmat-datetimepicker-content-container[mode=landscape] .cmat-datetimepicker-calendar{width:auto;height:100%}.cmat-datetimepicker-content-touch .cmat-datetimepicker-content-container-with-actions{height:135vw}}\n"] }]
476
- }], ctorParameters: () => [{ type: i2.Overlay }, { type: i0.Injector }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
477
- type: Inject,
478
- args: [CMAT_DATETIMEPICKER_SCROLL_STRATEGY]
479
- }] }, { type: i3.DatetimeAdapter, decorators: [{
480
- type: Optional
481
- }] }, { type: i4.Directionality, decorators: [{
482
- type: Optional
483
- }] }, { type: undefined, decorators: [{
484
- type: Optional
485
- }, {
486
- type: Inject,
487
- args: [DOCUMENT]
488
- }] }], propDecorators: { startView: [{
489
- type: Input
490
- }], mode: [{
491
- type: Input
492
- }], timeInterval: [{
493
- type: Input
494
- }], preventSameDateTimeSelection: [{
495
- type: Input
496
- }], xPosition: [{
497
- type: Input
498
- }], yPosition: [{
499
- type: Input
500
- }], selectedChanged: [{
501
- type: Output
502
- }], openedStream: [{
503
- type: Output
504
- }], closedStream: [{
505
- type: Output
506
- }], viewChanged: [{
507
- type: Output
508
- }], multiYearSelector: [{
509
- type: Input
510
- }], twelvehour: [{
511
- type: Input
512
- }], panelClass: [{
513
- type: Input
514
- }], opened: [{
515
- type: Input
516
- }], color: [{
517
- type: Input
518
- }], startAt: [{
519
- type: Input
520
- }], type: [{
521
- type: Input
522
- }], timeInput: [{
523
- type: Input
524
- }], touchUi: [{
525
- type: Input
526
- }], disabled: [{
527
- type: Input
528
- }], restoreFocus: [{
529
- type: Input
530
- }] } });
531
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWVwaWNrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbWF0L2NvbXBvbmVudHMvbWF0ZXJpYWwtZGF0ZXRpbWVwaWNrZXIvZGF0ZXRpbWVwaWNrZXIudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbWF0L2NvbXBvbmVudHMvbWF0ZXJpYWwtZGF0ZXRpbWVwaWNrZXIvZGF0ZXRpbWVwaWNrZXItY29udGVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUE2RCxPQUFPLEVBQUUsYUFBYSxFQUE4QixNQUFNLHNCQUFzQixDQUFDO0FBQ3JKLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFFSCxlQUFlLEVBQ2YsdUJBQXVCLEVBRXZCLFNBQVMsRUFHVCxZQUFZLEVBQ1osTUFBTSxFQUNOLGNBQWMsRUFFZCxLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBRVQsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFN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QUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FDaEMsQ0FDQSxDQUNKLENBQ0osQ0FBQztJQUNOLENBQUM7K0dBdmVRLDJCQUEyQixpR0FnRXhCLG1DQUFtQywwR0FHdkIsUUFBUTttR0FuRXZCLDJCQUEyQix3ckJBUDFCLEVBQUU7OzRGQU9ILDJCQUEyQjtrQkFWdkMsU0FBUzsrQkFDSSxxQkFBcUIsWUFDckIsb0JBQW9CLFlBQ3BCLEVBQUUsbUJBRUssdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSx1QkFDaEIsS0FBSyxjQUNkLElBQUk7OzBCQWtFWCxNQUFNOzJCQUFDLG1DQUFtQzs7MEJBQzFDLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsUUFBUTt5Q0FqRXZCLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsNEJBQTRCO3NCQUFwQyxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFLTixTQUFTO3NCQURSLEtBQUs7Z0JBR0ksZUFBZTtzQkFBeEIsTUFBTTtnQkFFRyxZQUFZO3NCQUFyQixNQUFNO2dCQUVHLFlBQVk7c0JBQXJCLE1BQU07Z0JBRUcsV0FBVztzQkFBcEIsTUFBTTtnQkFxREgsaUJBQWlCO3NCQURwQixLQUFLO2dCQVdGLFVBQVU7c0JBRGIsS0FBSztnQkFjRixVQUFVO3NCQURiLEtBQUs7Z0JBV0YsTUFBTTtzQkFEVCxLQUFLO2dCQVdGLEtBQUs7c0JBRFIsS0FBSztnQkFjRixPQUFPO3NCQURWLEtBQUs7Z0JBYUYsSUFBSTtzQkFEUCxLQUFLO2dCQWVGLFNBQVM7c0JBRFosS0FBSztnQkFjRixPQUFPO3NCQURWLEtBQUs7Z0JBWUYsUUFBUTtzQkFEWCxLQUFLO2dCQXNCRixZQUFZO3NCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBMTF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xyXG5pbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcclxuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBjb2VyY2VTdHJpbmdBcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IGhhc01vZGlmaWVyS2V5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcclxuaW1wb3J0IHsgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LCBHbG9iYWxQb3NpdGlvblN0cmF0ZWd5LCBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmLCBTY3JvbGxTdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcclxuaW1wb3J0IHsgX2dldEZvY3VzZWRFbGVtZW50UGllcmNlU2hhZG93RG9tIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcclxuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XHJcbmltcG9ydCB7IERPQ1VNRU5ULCBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICAgIEFmdGVyQ29udGVudEluaXQsXHJcbiAgICBhZnRlck5leHRSZW5kZXIsXHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgQ29tcG9uZW50UmVmLFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEluamVjdCxcclxuICAgIEluamVjdGlvblRva2VuLFxyXG4gICAgSW5qZWN0b3IsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uRGVzdHJveSxcclxuICAgIE9uSW5pdCxcclxuICAgIE9wdGlvbmFsLFxyXG4gICAgT3V0cHV0LFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgVmlld0NvbnRhaW5lclJlZixcclxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRoZW1lUGFsZXR0ZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIG1lcmdlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpbHRlciwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRGF0ZXRpbWVBZGFwdGVyIH0gZnJvbSAnY21hdC9jb21wb25lbnRzL2FkYXB0ZXInO1xyXG5pbXBvcnQgeyBDbWF0RGF0ZXRpbWVwaWNrZXJDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXInO1xyXG5pbXBvcnQgeyBmYWRlSW5DYWxlbmRhciwgdHJhbnNmb3JtUGFuZWwgfSBmcm9tICcuL2RhdGV0aW1lcGlja2VyLWFuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBjcmVhdGVNaXNzaW5nRGF0ZUltcGxFcnJvciB9IGZyb20gJy4vZGF0ZXRpbWVwaWNrZXItZXJyb3JzJztcclxuaW1wb3J0IHsgQ21hdERhdGV0aW1lcGlja2VyRmlsdGVyVHlwZSB9IGZyb20gJy4vZGF0ZXRpbWVwaWNrZXItZmlsdGVydHlwZSc7XHJcbmltcG9ydCB7IENtYXREYXRldGltZXBpY2tlcklucHV0RGlyZWN0aXZlIH0gZnJvbSAnLi9kYXRldGltZXBpY2tlci1pbnB1dCc7XHJcbmltcG9ydCB7IENtYXRDYWxlbmRhclZpZXcsIENtYXREYXRldGltZXBpY2tlck1vZGUsIENtYXREYXRldGltZXBpY2tlclR5cGUsIERhdGV0aW1lcGlja2VyRHJvcGRvd25Qb3NpdGlvblgsIERhdGV0aW1lcGlja2VyRHJvcGRvd25Qb3NpdGlvblkgfSBmcm9tICcuL2RhdGV0aW1lcGlja2VyLXR5cGVzJztcclxuXHJcbi8qKiBVc2VkIHRvIGdlbmVyYXRlIGEgdW5pcXVlIElEIGZvciBlYWNoIGRhdGVwaWNrZXIgaW5zdGFuY2UuICovXHJcbmxldCBkYXRldGltZXBpY2tlclVpZCA9IDA7XHJcblxyXG4vKiogSW5qZWN0aW9uIHRva2VuIHRoYXQgZGV0ZXJtaW5lcyB0aGUgc2Nyb2xsIGhhbmRsaW5nIHdoaWxlIHRoZSBjYWxlbmRhciBpcyBvcGVuLiAqL1xyXG5leHBvcnQgY29uc3QgQ01BVF9EQVRFVElNRVBJQ0tFUl9TQ1JPTExfU1RSQVRFR1kgPSBuZXcgSW5qZWN0aW9uVG9rZW48KCkgPT4gU2Nyb2xsU3RyYXRlZ3k+KFxyXG4gICAgJ2NtYXQtZGF0ZXRpbWVwaWNrZXItc2Nyb2xsLXN0cmF0ZWd5J1xyXG4pO1xyXG5cclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxyXG5leHBvcnQgZnVuY3Rpb24gQ01BVF9EQVRFVElNRVBJQ0tFUl9TQ1JPTExfU1RSQVRFR1lfRkFDVE9SWShvdmVybGF5OiBPdmVybGF5KTogKCkgPT4gU2Nyb2xsU3RyYXRlZ3kge1xyXG4gICAgcmV0dXJuICgpID0+IG92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCk7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBDTUFUX0RBVEVUSU1FUElDS0VSX1NDUk9MTF9TVFJBVEVHWV9GQUNUT1JZX1BST1ZJREVSID0ge1xyXG4gICAgcHJvdmlkZTogQ01BVF9EQVRFVElNRVBJQ0tFUl9TQ1JPTExfU1RSQVRFR1ksXHJcbiAgICBkZXBzOiBbT3ZlcmxheV0sXHJcbiAgICB1c2VGYWN0b3J5OiBDTUFUX0RBVEVUSU1FUElDS0VSX1NDUk9MTF9TVFJBVEVHWV9GQUNUT1JZXHJcbn07XHJcblxyXG4vKipcclxuICogQ29tcG9uZW50IHVzZWQgYXMgdGhlIGNvbnRlbnQgZm9yIHRoZSBkYXRlcGlja2VyIGRpYWxvZyBhbmQgcG9wdXAuIFdlIHVzZSB0aGlzIGluc3RlYWQgb2YgdXNpbmdcclxuICogTWF0Q2FsZW5kYXIgZGlyZWN0bHkgYXMgdGhlIGNvbnRlbnQgc28gd2UgY2FuIGNvbnRyb2wgdGhlIGluaXRpYWwgZm9jdXMuIFRoaXMgYWxzbyBnaXZlcyB1cyBhXHJcbiAqIHBsYWNlIHRvIHB1dCBhZGRpdGlvbmFsIGZlYXR1cmVzIG9mIHRoZSBwb3B1cCB0aGF0IGFyZSBub3QgcGFydCBvZiB0aGUgY2FsZW5kYXIgaXRzZWxmIGluIHRoZVxyXG4gKiBmdXR1cmUuIChlLmcuIGNvbmZpcm1hdGlvbiBidXR0b25zKS5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjbWF0LWRhdGV0aW1lcGlja2VyLWNvbnRlbnQnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICdkYXRldGltZXBpY2tlci1jb250ZW50Lmh0bWwnLFxyXG4gICAgIFxyXG4gICAgaG9zdDoge1xyXG4gICAgICAgICdjbGFzcyc6ICdjbWF0LWRhdGV0aW1lcGlja2VyLWNvbnRlbnQnLFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cclxuICAgICAgICAnW2NsYXNzXSc6ICdjb2xvciA/IFwibWF0LVwiICsgY29sb3IgOiBcIlwiJyxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXHJcbiAgICAgICAgJ1tjbGFzcy5jbWF0LWRhdGV0aW1lcGlja2VyLWNvbnRlbnQtdG91Y2hdJzogJ2RhdGV0aW1lcGlja2VyPy50b3VjaFVpJyxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXHJcbiAgICAgICAgJ1thdHRyLm1vZGVdJzogJ2RhdGV0aW1lcGlja2VyLm1vZGUnLFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cclxuICAgICAgICAnW0B0cmFuc2Zvcm1QYW5lbF0nOiAnYW5pbWF0aW9uU3RhdGUnLFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cclxuICAgICAgICAnKEB0cmFuc2Zvcm1QYW5lbC5kb25lKSc6ICdhbmltYXRpb25Eb25lLm5leHQoKScsXHJcbiAgICB9LFxyXG4gICAgYW5pbWF0aW9uczogW1xyXG4gICAgICAgIHRyYW5zZm9ybVBhbmVsLFxyXG4gICAgICAgIGZhZGVJbkNhbGVuZGFyLFxyXG4gICAgXSxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIGV4cG9ydEFzOiAnY21hdERhdGV0aW1lcGlja2VyQ29udGVudCcsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW0ExMXlNb2R1bGUsIENtYXREYXRldGltZXBpY2tlckNhbGVuZGFyQ29tcG9uZW50LCBOZ0NsYXNzXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ21hdERhdGV0aW1lcGlja2VyQ29udGVudENvbXBvbmVudDxEPiBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcclxuICAgIEBWaWV3Q2hpbGQoQ21hdERhdGV0aW1lcGlja2VyQ2FsZW5kYXJDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIF9jYWxlbmRhciE6IENtYXREYXRldGltZXBpY2tlckNhbGVuZGFyQ29tcG9uZW50PEQ+O1xyXG4gICAgQElucHV0KCkgY29sb3I6IFRoZW1lUGFsZXR0ZTtcclxuXHJcbiAgICBkYXRldGltZXBpY2tlciE6IENtYXREYXRldGltZXBpY2tlckNvbXBvbmVudDxEPjtcclxuXHJcbiAgICAvKiogV2hldGhlciB0aGUgZGF0ZXRpbWVwaWNrZXIgaXMgYWJvdmUgb3IgYmVsb3cgdGhlIGlucHV0LiAqL1xyXG4gICAgaXNBYm92ZSE6IGJvb2xlYW47XHJcblxyXG4gICAgLyoqIEN1cnJlbnQgc3RhdGUgb2YgdGhlIGFuaW1hdGlvbi4gKi9cclxuICAgIGFuaW1hdGlvblN0YXRlITogJ2VudGVyLWRyb3Bkb3duJyB8ICdlbnRlci1kaWFsb2cnIHwgJ3ZvaWQnO1xyXG5cclxuICAgIC8qKiBFbWl0cyB3aGVuIGFuIGFuaW1hdGlvbiBoYXMgZmluaXNoZWQuICovXHJcbiAgICByZWFkb25seSBhbmltYXRpb25Eb25lID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgICAvKiogSWQgb2YgdGhlIGxhYmVsIGZvciB0aGUgYHJvbGU9XCJkaWFsb2dcImAgZWxlbWVudC4gKi9cclxuICAgIGRpYWxvZ0xhYmVsSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfZWxlbWVudFJlZjogRWxlbWVudFJlZixwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5hbmltYXRpb25TdGF0ZSA9IHRoaXMuZGF0ZXRpbWVwaWNrZXIudG91Y2hVaSA/ICdlbnRlci1kaWFsb2cnIDogJ2VudGVyLWRyb3Bkb3duJztcclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fY2FsZW5kYXIuZm9jdXNBY3RpdmVDZWxsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRFeGl0QW5pbWF0aW9uKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuYW5pbWF0aW9uU3RhdGUgPSAndm9pZCc7XHJcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5hbmltYXRpb25Eb25lLmNvbXBsZXRlKCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjbWF0LWRhdGV0aW1lcGlja2VyJyxcclxuICAgIGV4cG9ydEFzOiAnY21hdERhdGV0aW1lcGlja2VyJyxcclxuICAgIHRlbXBsYXRlOiAnJyxcclxuICAgIHN0eWxlVXJsczogWydkYXRldGltZXBpY2tlci5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIENtYXREYXRldGltZXBpY2tlckNvbXBvbmVudDxEPiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgICAvKiogVGhlIHZpZXcgdGhhdCB0aGUgY2FsZW5kYXIgc2hvdWxkIHN0YXJ0IGluLiAqL1xyXG4gICAgQElucHV0KCkgc3RhcnRWaWV3OiBDbWF0Q2FsZW5kYXJWaWV3ID0gJ21vbnRoJztcclxuICAgIEBJbnB1dCgpIG1vZGU6IENtYXREYXRldGltZXBpY2tlck1vZGUgPSAnYXV0byc7XHJcbiAgICBASW5wdXQoKSB0aW1lSW50ZXJ2YWw6IG51bWJlciA9IDE7XHJcbiAgICAvKiogUHJldmVudCB1c2VyIHRvIHNlbGVjdCBzYW1lIGRhdGUgdGltZSAqL1xyXG4gICAgQElucHV0KCkgcHJldmVudFNhbWVEYXRlVGltZVNlbGVjdGlvbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBQcmVmZXJyZWQgcG9zaXRpb24gb2YgdGhlIGRhdGV0aW1lcGlja2VyIGluIHRoZSBYIGF4aXMuICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgeFBvc2l0aW9uOiBEYXRldGltZXBpY2tlckRyb3Bkb3duUG9zaXRpb25YID0gJ3N0YXJ0JztcclxuXHJcbiAgICAvKiogUHJlZmVycmVkIHBvc2l0aW9uIG9mIHRoZSBkYXRldGltZXBpY2tlciBpbiB0aGUgWSBheGlzLiAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHlQb3NpdGlvbjogRGF0ZXRpbWVwaWNrZXJEcm9wZG93blBvc2l0aW9uWSA9ICdiZWxvdyc7XHJcblxyXG4gICAgQE91dHB1dCgpIHNlbGVjdGVkQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RD4oKTtcclxuICAgIC8qKiBFbWl0cyB3aGVuIHRoZSBkYXRlcGlja2VyIGhhcyBiZWVuIG9wZW5lZC4gKi9cclxuICAgIEBPdXRwdXQoKSBvcGVuZWRTdHJlYW06IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICAgIC8qKiBFbWl0cyB3aGVuIHRoZSBkYXRlcGlja2VyIGhhcyBiZWVuIGNsb3NlZC4gKi9cclxuICAgIEBPdXRwdXQoKSBjbG9zZWRTdHJlYW06IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICAgIC8qKiBFbWl0cyB3aGVuIHRoZSB2aWV3IGhhcyBiZWVuIGNoYW5nZWQuICoqL1xyXG4gICAgQE91dHB1dCgpIHZpZXdDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Q21hdENhbGVuZGFyVmlldz4gPSBuZXcgRXZlbnRFbWl0dGVyPENtYXRDYWxlbmRhclZpZXc+KCk7XHJcbiAgICAvKiogV2hldGhlciB0aGUgY2FsZW5kYXIgaXMgb3Blbi4gKi9cclxuXHJcbiAgICAvKiogVGhlIGlkIGZvciB0aGUgZGF0ZXBpY2tlciBjYWxlbmRhci4gKi9cclxuICAgIGlkID0gYGNtYXQtZGF0ZXRpbWVwaWNrZXItJHtkYXRldGltZXBpY2tlclVpZCsrfWA7XHJcbiAgICAvKiogVGhlIGlucHV0IGVsZW1lbnQgdGhpcyBkYXRlcGlja2VyIGlzIGFzc29jaWF0ZWQgd2l0aC4gKi9cclxuICAgIGRhdGV0aW1lcGlja2VySW5wdXQ6IENtYXREYXRldGltZXBpY2tlcklucHV0RGlyZWN0aXZlPEQ+O1xyXG4gICAgLyoqIEVtaXRzIHdoZW4gdGhlIGRhdGVwaWNrZXIgaXMgZGlzYWJsZWQuICovXHJcbiAgICBkaXNhYmxlZENoYW5nZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfdmFsaWRTZWxlY3RlZDogRCB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIC8qKiBBIHJlZmVyZW5jZSB0byB0aGUgb3ZlcmxheSBpbnRvIHdoaWNoIHdlJ3ZlIHJlbmRlcmVkIHRoZSBjYWxlbmRhci4gKi9cclxuICAgIHByaXZhdGUgX292ZXJsYXlSZWYhOiBPdmVybGF5UmVmIHwgbnVsbDtcclxuXHJcbiAgICAvKiogUmVmZXJlbmNlIHRvIHRoZSBjb21wb25lbnQgaW5zdGFuY2UgcmVuZGVyZWQgaW4gdGhlIG92ZXJsYXkuICovXHJcbiAgICBwcml2YXRlIF9jb21wb25lbnRSZWYhOiBDb21wb25lbnRSZWY8Q21hdERhdGV0aW1lcGlja2VyQ29udGVudENvbXBvbmVudDxEPj4gfCBudWxsO1xyXG5cclxuICAgIC8qKiBUaGUgZWxlbWVudCB0aGF0IHdhcyBmb2N1c2VkIGJlZm9yZSB0aGUgZGF0ZXRpbWVwaWNrZXIgd2FzIG9wZW5lZC4gKi9cclxuICAgIHByaXZhdGUgX2ZvY3VzZWRFbGVtZW50QmVmb3JlT3BlbjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAvKiogVW5pcXVlIGNsYXNzIHRoYXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgYmFja2Ryb3Agc28gdGhhdCB0aGUgdGVzdCBoYXJuZXNzZXMgY2FuIGxvb2sgaXQgdXAuICovXHJcbiAgICBwcml2YXRlIF9iYWNrZHJvcEhhcm5lc3NDbGFzcyA9IGAke3RoaXMuaWR9LWJhY2tkcm9wYDtcclxuXHJcbiAgICBwcml2YXRlIF9pbnB1dFN0YXRlQ2hhbmdlcyA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcclxuXHJcbiAgICBwcml2YXRlIF9tdWx0aVllYXJTZWxlY3RvciA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBfdHdlbHZlaG91ciA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBfcGFuZWxDbGFzcyE6IHN0cmluZ1tdO1xyXG4gICAgcHJpdmF0ZSBfb3BlbmVkID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIF9jb2xvcjogVGhlbWVQYWxldHRlO1xyXG4gICAgcHJpdmF0ZSBfc3RhcnRBdDogRCB8IG51bGw7XHJcbiAgICBwcml2YXRlIF90eXBlOiBDbWF0RGF0ZXRpbWVwaWNrZXJUeXBlID0gJ2RhdGV0aW1lJztcclxuICAgIHByaXZhdGUgX3RvdWNoVWkgPSBmYWxzZTtcclxuICAgIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuO1xyXG4gICAgcHJpdmF0ZSBfdGltZUlucHV0ID0gdHJ1ZTtcclxuICAgIHByaXZhdGUgX3Jlc3RvcmVGb2N1cyA9IHRydWU7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBfb3ZlcmxheTogT3ZlcmxheSxcclxuICAgICAgICBwcml2YXRlIF9pbmplY3RvcjpJbmplY3RvcixcclxuICAgICAgICBwcml2YXRlIF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgICAgIEBJbmplY3QoQ01BVF9EQVRFVElNRVBJQ0tFUl9TQ1JPTExfU1RSQVRFR1kpIHByaXZhdGUgX3Njcm9sbFN0cmF0ZWd5OiBhbnksXHJcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZGF0ZUFkYXB0ZXI6IERhdGV0aW1lQWRhcHRlcjxEPixcclxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9kaXI6IERpcmVjdGlvbmFsaXR5LFxyXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50OiBhbnkpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2RhdGVBZGFwdGVyKSB7XHJcbiAgICAgICAgICAgIHRocm93IGNyZWF0ZU1pc3NpbmdEYXRlSW1wbEVycm9yKCdEYXRldGltZUFkYXB0ZXInKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFdoZXRoZXIgdG8gc2hvdyBtdWx0aS15ZWFyIHZpZXcuICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IG11bHRpWWVhclNlbGVjdG9yKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9tdWx0aVllYXJTZWxlY3RvcjtcclxuICAgIH1cclxuICAgIHNldCBtdWx0aVllYXJTZWxlY3Rvcih2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX211bHRpWWVhclNlbGVjdG9yID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogV2hldGhlciB0aGUgY2xvY2sgdXNlcyAxMiBob3VyIGZvcm1hdC4gKi9cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IHR3ZWx2ZWhvdXIoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3R3ZWx2ZWhvdXI7XHJcbiAgICB9XHJcbiAgICBzZXQgdHdlbHZlaG91cih2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX3R3ZWx2ZWhvdXIgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2xhc3NlcyB0byBiZSBwYXNzZWQgdG8gdGhlIGRhdGUgcGlja2VyIHBhbmVsLlxyXG4gICAgICogU3VwcG9ydHMgc3RyaW5nIGFuZCBzdHJpbmcgYXJyYXkgdmFsdWVzLCBzaW1pbGFyIHRvIGBuZ0NsYXNzYC5cclxuICAgICAqL1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgcGFuZWxDbGFzcygpOiBzdHJpbmcgfCBzdHJpbmdbXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhbmVsQ2xhc3M7XHJcbiAgICB9XHJcbiAgICBzZXQgcGFuZWxDbGFzcyh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pIHtcclxuICAgICAgICB0aGlzLl9wYW5lbENsYXNzID0gY29lcmNlU3RyaW5nQXJyYXkodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBXaGV0aGVyIHRoZSBjYWxlbmRhciBpcyBvcGVuLiAqL1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgb3BlbmVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9vcGVuZWQ7XHJcbiAgICB9XHJcbiAgICBzZXQgb3BlbmVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKSA/IHRoaXMub3BlbigpIDogdGhpcy5jbG9zZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBDb2xvciBwYWxldHRlIHRvIHVzZSBvbiB0aGUgZGF0ZXRpbWVwaWNrZXIncyBjYWxlbmRhci4gKi9cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGNvbG9yKCk6IFRoZW1lUGFsZXR0ZSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgdGhpcy5fY29sb3IgPz9cclxuICAgICAgICAgICAgKHRoaXMuZGF0ZXRpbWVwaWNrZXJJbnB1dCA/IHRoaXMuZGF0ZXRpbWVwaWNrZXJJbnB1dC5nZXRUaGVtZVBhbGV0dGUoKSA6IHVuZGVmaW5lZClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gICAgc2V0IGNvbG9yKHZhbHVlOiBUaGVtZVBhbGV0dGUpIHtcclxuICAgICAgICB0aGlzLl9jb2xvciA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBUaGUgZGF0ZSB0byBvcGVuIHRoZSBjYWxlbmRhciB0byBpbml0aWFsbHkuICovXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBzdGFydEF0KCk6IEQgfCBudWxsIHtcclxuICAgICAgICAvLyBJZiBhbiBleHBsaWNpdCBzdGFydEF0IGlzIHNldCB3ZSBzdGFydCB0aGVyZSwgb3RoZXJ3aXNlIHdlIHN0YXJ0IGF0IHdoYXRldmVyIHRoZSBjdXJyZW50bHlcclxuICAgICAgICAvLyBzZWxlY3RlZCB2YWx1ZSBpcy5cclxuICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRBdCA/PyAodGhpcy5kYXRldGltZXBpY2tlcklucHV0ID8gdGhpcy5kYXRldGltZXBpY2tlcklucHV0LnZhbHVlIDogbnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IHN0YXJ0QXQoZGF0ZTogRCB8IG51bGwpIHtcclxuICAgICAgICB0aGlzLl9zdGFydEF0ID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKGRhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IHR5cGUoKTogQ21hdERhdGV0aW1lcGlja2VyVHlwZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IHR5cGUodmFsdWU6IENtYXREYXRldGltZXBpY2tlclR5cGUpIHtcclxuICAgICAgICB0aGlzLl90eXBlID0gdmFsdWUgfHwgJ2RhdGV0aW1lJztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZXRoZXIgdGhlIGNhbGVuZGFyIGlzIGluIHRpbWUgbW9kZS4gSW4gdGltZSBtb2RlIHRoZSBjYWxlbmRhciBjbG9jayBnZXRzIHRpbWUgaW5wdXRcclxuICAgICAqIGVsZW1lbnRzIHJhdGhlciB0aGVuIGp1c3QgY2xvY2suIFdoZW4gYHRvdWNoVWlgIGlzIGVuYWJsZWQgdGhpcyB3aWxsIGJlIGRpc2FibGVkLlxyXG4gICAgICovXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCB0aW1lSW5wdXQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RpbWVJbnB1dCAmJiAhdGhpcy50b3VjaFVpO1xyXG4gICAgfVxyXG4gICAgc2V0IHRpbWVJbnB1dCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX3RpbWVJbnB1dCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXaGV0aGVyIHRoZSBjYWxlbmRhciBVSSBpcyBpbiB0b3VjaCBtb2RlLiBJbiB0b3VjaCBtb2RlIHRoZSBjYWxlbmRhciBvcGVucyBpbiBhIGRpYWxvZyByYXRoZXJcclxuICAgICAqIHRoYW4gYSBwb3B1cCBhbmQgZWxlbWVudHMgaGF2ZSBtb3JlIHBhZGRpbmcgdG8gYWxsb3cgZm9yIGJpZ2dlciB0b3VjaCB0YXJnZXRzLlxyXG4gICAgICovXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCB0b3VjaFVpKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl90b3VjaFVpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCB0b3VjaFVpKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fdG91Y2hVaSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFdoZXRoZXIgdGhlIGRhdGVwaWNrZXIgcG9wLXVwIHNob3VsZCBiZSBkaXNhYmxlZC4gKi9cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZCA9PT0gdW5kZWZpbmVkICYmIHRoaXMuZGF0ZXRpbWVwaWNrZXJJbnB1dCA/XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZXRpbWVwaWNrZXJJbnB1dC5kaXNhYmxlZCA6ICEhdGhpcy5fZGlzYWJsZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG5cclxuICAgICAgICBpZiAobmV3VmFsdWUgIT09IHRoaXMuX2Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Rpc2FibGVkID0gbmV3VmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZWRDaGFuZ2UubmV4dChuZXdWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hldGhlciB0byByZXN0b3JlIGZvY3VzIHRvIHRoZSBwcmV2aW91c2x5LWZvY3VzZWQgZWxlbWVudCB3aGVuIHRoZSBwYW5lbCBpcyBjbG9zZWQuXHJcbiAgICAgKiBOb3RlIHRoYXQgYXV0b21hdGljIGZvY3VzIHJlc3RvcmF0aW9uIGlzIGFuIGFjY2Vzc2liaWxpdHkgZmVhdHVyZSBhbmQgaXQgaXMgcmVjb21tZW5kZWQgdGhhdFxyXG4gICAgICogeW91IHByb3ZpZGUgeW91ciBvd24gZXF1aXZhbGVudCwgaWYgeW91IGRlY2lkZSB0byB0dXJuIGl0IG9mZi5cclxuICAgICAqL1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgcmVzdG9yZUZvY3VzKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9yZXN0b3JlRm9jdXM7XHJcbiAgICB9XHJcbiAgICBzZXQgcmVzdG9yZUZvY3VzKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fcmVzdG9yZUZvY3VzID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBkYXRlLiAqL1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcclxuICAgIGdldCBzZWxlY3RlZCgpOiBEIHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbGlkU2VsZWN0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IHNlbGVjdGVkKHZhbHVlOiBEIHwgbnVsbCkge1xyXG4gICAgICAgIHRoaXMuX3ZhbGlkU2VsZWN0ZWQgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogVGhlIG1pbmltdW0gc2VsZWN0YWJsZSBkYXRlLiAqL1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcclxuICAgIGdldCBtaW5EYXRlKCk6IEQgfCBudWxsIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kYXRldGltZXBpY2tlcklucHV0ICYmIHRoaXMuZGF0ZXRpbWVwaWNrZXJJbnB1dC5taW47XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFRoZSBtYXhpbXVtIHNlbGVjdGFibGUgZGF0ZS4gKi9cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXHJcbiAgICBnZXQgbWF4RGF0ZSgpOiBEIHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZXRpbWVwaWNrZXJJbnB1dCAmJiB0aGlzLmRhdGV0aW1lcGlja2VySW5wdXQubWF4O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXHJcbiAgICBnZXQgZGF0ZUZpbHRlcigpOiAoZGF0ZTogRCB8IG51bGwsIHR5cGU6IENtYXREYXRldGltZXBpY2tlckZpbHRlclR5cGUpID0+IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGV0aW1lcGlja2VySW5wdXQ/LmRhdGVGaWx0ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fZGVzdHJveU92ZXJsYXkoKTtcclxuICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgdGhpcy5faW5wdXRTdGF0ZUNoYW5nZXMudW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB0aGlzLmRpc2FibGVkQ2hhbmdlLmNvbXBsZXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWdpc3RlciBhbiBpbnB1dCB3aXRoIHRoaXMgZGF0ZXBpY2tlci5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gaW5wdXQgVGhlIGRhdGVwaWNrZXIgaW5wdXQgdG8gcmVnaXN0ZXIgd2l0aCB0aGlzIGRhdGVwaWNrZXIuXHJcbiAgICAgKi9cclxuICAgIHJlZ2lzdGVySW5wdXQoaW5wdXQ6IENtYXREYXRldGltZXBpY2tlcklucHV0RGlyZWN0aXZlPEQ+KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGF0ZXRpbWVwaWNrZXJJbnB1dCkge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvcignQSBNYXREYXRlcGlja2VyIGNhbiBvbmx5IGJlIGFzc29jaWF0ZWQgd2l0aCBhIHNpbmdsZSBpbnB1dC4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kYXRldGltZXBpY2tlcklucHV0ID0gaW5wdXQ7XHJcbiAgICAgICAgdGhpcy5faW5wdXRTdGF0ZUNoYW5nZXMgPVxyXG4gICAgICAgICAgICB0aGlzLmRhdGV0aW1lcGlja2VySW5wdXQudmFsdWVDaGFuZ2Uuc3Vic2NyaWJlKCh2YWx1ZTogRCB8IG51bGwpID0+IHRoaXMuc2VsZWN0ZWQgPSB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiBPcGVuIHRoZSBjYWxlbmRhci4gKi9cclxuICAgIG9wZW4oKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMub3BlbmVkIHx8IHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMuZGF0ZXRpbWVwaWNrZXJJbnB1dCkge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvcignQXR0ZW1wdGVkIHRvIG9wZW4gYW4gTWF0RGF0ZXBpY2tlciB3aXRoIG5vIGFzc29jaWF0ZWQgaW5wdXQuJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9mb2N1c2VkRWxlbWVudEJlZm9yZU9wZW4gPSBfZ2V0Rm9jdXNlZEVsZW1lbnRQaWVyY2VTaGFkb3dEb20oKTtcclxuICAgICAgICB0aGlzLl9vcGVuT3ZlcmxheSgpO1xyXG4gICAgICAgIHRoaXMuX29wZW5lZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5vcGVuZWRTdHJlYW0uZW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBDbG9zZSB0aGUgY2FsZW5kYXIuICovXHJcbiAgICBjbG9zZSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuX29wZW5lZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBjYW5SZXN0b3JlRm9jdXMgPVxyXG4gICAgICAgICAgICB0aGlzLl9yZXN0b3JlRm9jdXMgJiZcclxuICAgICAgICAgICAgdGhpcy5fZm9jdXNlZEVsZW1lbnRCZWZvcmVPcGVuICYmXHJcbiAgICAgICAgICAgIHR5cGVvZiB0aGlzLl9mb2N1c2VkRWxlbWVudEJlZm9yZU9wZW4uZm9jdXMgPT09ICdmdW5jdGlvbic7XHJcblxyXG4gICAgICAgIGNvbnN0IGNvbXBsZXRlQ2xvc2UgPSAoKTogdm9pZCA9PiB7XHJcbiAgICAgICAgICAgIC8vIFRoZSBgX29wZW5lZGAgY291bGQndmUgYmVlbiByZXNldCBhbHJlYWR5IGlmXHJcbiAgICAgICAgICAgIC8vIHdlIGdvdCB0d28gZXZlbnRzIGluIHF1aWNrIHN1Y2Nlc3Npb24uXHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9vcGVuZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX29wZW5lZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZWRTdHJlYW0uZW1pdCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX2NvbXBvbmVudFJlZikge1xyXG4gICAgICAgICAgICBjb25zdCB7IGluc3RhbmNlLCBsb2NhdGlvbiB9ID0gdGhpcy5fY29tcG9uZW50UmVmO1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5zdGFydEV4aXRBbmltYXRpb24oKTtcclxuICAgICAgICAgICAgaW5zdGFuY2UuYW5pbWF0aW9uRG9uZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmVFbGVtZW50ID0gdGhpcy5fZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBTaW5jZSB3ZSByZXN0b3JlIGZvY3VzIGFmdGVyIHRoZSBleGl0IGFuaW1hdGlvbiwgd2UgaGF2ZSB0byBjaGVjayB0aGF0XHJcbiAgICAgICAgICAgICAgICAvLyB0aGUgdXNlciBkaWRuJ3QgbW92ZSBmb2N1cyB0aGVtc2VsdmVzIGluc2lkZSB0aGUgYGNsb3NlYCBoYW5kbGVyLlxyXG4gICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIGNhblJlc3RvcmVGb2N1cyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICghYWN0aXZlRWxlbWVudCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVFbGVtZW50ID09PSB0aGlzLl9kb2N1bWVudC5hY3RpdmVFbGVtZW50IHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoYWN0aXZlRWxlbWVudCkpXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9mb2N1c2VkRWxlbWVudEJlZm9yZU9wZW4/LmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5fZm9jdXNlZEVsZW1lbnRCZWZvcmVPcGVuID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2Rlc3Ryb3lPdmVybGF5KCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNhblJlc3RvcmVGb2N1cykge1xyXG4gICAgICAgICAgICAvLyBCZWNhdXNlIElFIG1vdmVzIGZvY3VzIGFzeW5jaHJvbm91c2x5LCB3ZSBjYW4ndCBjb3VudCBvbiBpdCBiZWluZyByZXN0b3JlZCBiZWZvcmUgd2UndmVcclxuICAgICAgICAgICAgLy8gbWFya2VkIHRoZSBkYXRlcGlja2VyIGFzIGNsb3NlZC4gSWYgdGhlIGV2ZW50IGZpcmVzIG91dCBvZiBzZXF1ZW5jZSBhbmQgdGhlIGVsZW1lbnQgdGhhdFxyXG4gICAgICAgICAgICAvLyB3ZSdyZSByZWZvY3VzaW5nIG9wZW5zIHRoZSBkYXRlcGlja2VyIG9uIGZvY3VzLCB0aGUgdXNlciBjb3VsZCBiZSBzdHVjayB3aXRoIG5vdCBiZWluZ1xyXG4gICAgICAgICAgICAvLyBhYmxlIHRvIGNsb3NlIHRoZSBjYWxlbmRhciBhdCBhbGwuIFdlIHdvcmsgYXJvdW5kIGl0IGJ5IG1ha2luZyB0aGUgbG9naWMsIHRoYXQgbWFya3NcclxuICAgICAgICAgICAgLy8gdGhlIGRhdGVwaWNrZXIgYXMgY2xvc2VkLCBhc3luYyBhcyB3ZWxsLlxyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KGNvbXBsZXRlQ2xvc2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbXBsZXRlQ2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKiogU2VsZWN0cyB0aGUgZ2l2ZW4gZGF0ZSAqL1xyXG4gICAgc2VsZWN0KGRhdGU6IEQpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMuc2VsZWN0ZWQ7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZCA9IGRhdGU7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9kYXRlQWRhcHRlci5zYW1lRGF0ZXRpbWUob2xkVmFsdWUsIHRoaXMuc2VsZWN0ZWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2VkLmVtaXQoZGF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHZpZXdDaGFuZ2UodHlwZTogQ21hdENhbGVuZGFyVmlldyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudmlld0NoYW5nZWQuZW1pdCh0eXBlKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBGb3J3YXJkcyByZWxldmFudCB2YWx1ZXMgZnJvbSB0aGUgZGF0ZXRpbWVwaWNrZXIgdG8gdGhlXHJcbiAgICAgKiBkYXRldGltZXBpY2tlciBjb250ZW50IGluc2lkZSB0aGUgb3ZlcmxheS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfZm9yd2FyZENvbnRlbnRWYWx1ZXMoaW5zdGFuY2U6IENtYXREYXRldGltZXBpY2tlckNvbnRlbnRDb21wb25lbnQ8RD4pOiB2b2lkIHtcclxuICAgICAgICBpbnN0YW5jZS5kYXRldGltZXBpY2tlciA9IHRoaXM7XHJcbiAgICAgICAgaW5zdGFuY2UuY29sb3IgPSB0aGlzLmNvbG9yO1xyXG4gICAgICAgIGluc3RhbmNlLmRpYWxvZ0xhYmVsSWQgPSB0aGlzLmRhdGV0aW1lcGlja2VySW5wdXQuZ2V0T3ZlcmxheUxhYmVsSWQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogT3BlbnMgdGhlIG92ZXJsYXkgd2l0aCB0aGUgY2FsZW5kYXIuICovXHJcbiAgICBwcml2YXRlIF9vcGVuT3ZlcmxheSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9kZXN0cm95T3ZlcmxheSgpO1xyXG5cclxuICAgICAgICBjb25zdCBpc0RpYWxvZyA9IHRoaXMudG91Y2hVaTtcclxuICAgICAgICBjb25zdCBsYWJlbElkID0gdGhpcy5kYXRldGltZXBpY2tlcklucHV0LmdldE92ZXJsYXlMYWJlbElkKCk7XHJcblxyXG4gICAgICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWw8Q21hdERhdGV0aW1lcGlja2VyQ29udGVudENvbXBvbmVudDxEPj4oXHJcbiAgICAgICAgICAgIENtYXREYXRldGltZXBpY2tlckNvbnRlbnRDb21wb25lbnQsXHJcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWZcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IG92ZXJsYXlSZWYgPSAodGhpcy5fb3ZlcmxheVJlZiA9IHRoaXMuX292ZXJsYXkuY3JlYXRlKFxyXG4gICAgICAgICAgICBuZXcgT3ZlcmxheUNvbmZpZyh7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiBpc0RpYWxvZyA/IHRoaXMuX2dldERpYWxvZ1N0cmF0ZWd5KCkgOiB0aGlzLl9nZXREcm9wZG93blN0cmF0ZWd5KCksXHJcbiAgICAgICAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6IFtcclxuICAgICAgICAgICAgICAgICAgICBpc0RpYWxvZyA/ICdjZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wJyA6ICdtYXQtb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYmFja2Ryb3BIYXJuZXNzQ2xhc3MsXHJcbiAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uOiB0aGlzLl9kaXIsXHJcbiAgICAgICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogaXNEaWFsb2cgPyB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKSA6IHRoaXMuX3Njcm9sbFN0cmF0ZWd5KCksXHJcbiAgICAgICAgICAgICAgICBwYW5lbENsYXNzOiBgY21hdC1kYXRldGltZXBpY2tlci0ke2lzRGlhbG9nID8gJ2RpYWxvZycgOiAncG9wdXAnfWAsXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKSk7XHJcblxyXG4gICAgICAgIGNvbnN0IG92ZXJsYXlFbGVtZW50ID0gb3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudDtcclxuICAgICAgICBvdmVybGF5RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAnZGlhbG9nJyk7XHJcblxyXG4gICAgICAgIGlmIChsYWJlbElkKSB7XHJcbiAgICAgICAgICAgIG92ZXJsYXlFbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbGxlZGJ5JywgbGFiZWxJZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoaXNEaWFsb2cpIHtcclxuICAgICAgICAgICAgb3ZlcmxheUVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLW1vZGFsJywgJ3RydWUnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2dldENsb3NlU3RyZWFtKG92ZXJsYXlSZWYpLnN1YnNjcmliZSgoZXZlbnQ6IHsgcHJldmVudERlZmF1bHQ6ICgpID0+IHZvaWQgfSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLl9jb21wb25lbnRSZWYgPSBvdmVybGF5UmVmLmF0dGFjaChwb3J0YWwpO1xyXG4gICAgICAgIHRoaXMuX2ZvcndhcmRDb250ZW50VmFsdWVzKHRoaXMuX2NvbXBvbmVudFJlZi5pbnN0YW5jZSk7XHJcblxyXG4gICAgICAgIC8vIFVwZGF0ZSB0aGUgcG9zaXRpb24gb25jZSB0aGUgY2FsZW5kYXIgaGFzIHJlbmRlcmVkLiBPbmx5IHJlbGV2YW50IGluIGRyb3Bkb3duIG1vZGUuXHJcbiAgICAgICAgaWYgKCFpc0RpYWxvZykge1xyXG4gICAgICAgICAgICBhZnRlck5leHRSZW5kZXIoXHJcbiAgICAgICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIG92ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7IGluamVjdG9yOiB0aGlzLl9pbmplY3RvciB9XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIERlc3Ryb3lzIHRoZSBjdXJyZW50IG92ZXJsYXkuICovXHJcbiAgICBwcml2YXRlIF9kZXN0cm95T3ZlcmxheSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5fb3ZlcmxheVJlZikge1xyXG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKTtcclxuICAgICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZiA9IHRoaXMuX2NvbXBvbmVudFJlZiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBHZXRzIGEgcG9zaXRpb24gc3RyYXRlZ3kgdGhhdCB3aWxsIG9wZW4gdGhlIGNhbGVuZGFyIGFzIGEgZHJvcGRvd24uICovXHJcbiAgICBwcml2YXRlIF9nZXREaWFsb2dTdHJhdGVneSgpOiBHbG9iYWxQb3NpdGlvblN0cmF0ZWd5IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLmNlbnRlckhvcml6b250YWxseSgpLmNlbnRlclZlcnRpY2FsbHkoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogR2V0cyBhIHBvc2l0aW9uIHN0cmF0ZWd5IHRoYXQgd2lsbCBvcGVuIHRoZSBjYWxlbmRhciBhcyBhIGRyb3Bkb3duLiAqL1xyXG4gICAgcHJpdmF0ZSBfZ2V0RHJvcGRvd25TdHJhdGVneSgpOiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kge1xyXG4gICAgICAgIGNvbnN0IHN0cmF0ZWd5ID0gdGhpcy5fb3ZlcmxheVxyXG4gICAgICAgICAgICAucG9zaXRpb24oKVxyXG4gICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLmRhdGV0aW1lcGlja2VySW5wdXQuZ2V0Q29ubmVjdGVkT3ZlcmxheU9yaWdpbigpKVxyXG4gICAgICAgICAgICAud2l0aFRyYW5zZm9ybU9yaWdpbk9uKCcuY21hdC1kYXRldGltZXBpY2tlci1jb250ZW50JylcclxuICAgICAgICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoZmFsc2UpXHJcbiAgICAgICAgICAgIC53aXRoVmlld3BvcnRNYXJnaW4oOClcclxuICAgICAgICAgICAgLndpdGhMb2NrZWRQb3NpdGlvbigpO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5fc2V0Q29ubmVjdGVkUG9zaXRpb25zKHN0cmF0ZWd5KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIHBvc2l0aW9ucyBvZiB0aGUgZGF0ZXRpbWVwaWNrZXIgaW4gZHJvcGRvd24gbW9kZSBiYXNlZCBvbiB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9zZXRDb25uZWN0ZWRQb3NpdGlvbnMoc3RyYXRlZ3k6IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSk6IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSB7XHJcbiAgICAgICAgY29uc3QgcHJpbWFyeVggPSB0aGlzLnhQb3NpdGlvbiA9PT0gJ2VuZCcgPyAnZW5kJyA6ICdzdGFydCc7XHJcbiAgICAgICAgY29uc3Qgc2Vjb25kYXJ5WCA9IHByaW1hcnlYID09PSAnc3RhcnQnID8gJ2VuZCcgOiAnc3RhcnQnO1xyXG4gICAgICAgIGNvbnN0IHByaW1hcnlZID0gdGhpcy55UG9zaXRpb24gPT09ICdhYm92ZScgPyAnYm90dG9tJyA6ICd0b3AnO1xyXG4gICAgICAgIGNvbnN0IHNlY29uZGFyeVkgPSBwcmltYXJ5WSA9PT0gJ3RvcCcgPyAnYm90dG9tJyA6ICd0b3AnO1xyXG5cclxuICAgICAgICByZXR1cm4gc3RyYXRlZ3kud2l0aFBvc2l0aW9ucyhbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG9yaWdpblg6IHByaW1hcnlYLFxyXG4gICAgICAgICAgICAgICAgb3JpZ2luWTogc2Vjb25kYXJ5WSxcclxuICAgICAgICAgICAgICAgIG92ZXJsYXlYOiBwcmltYXJ5WCxcclxuICAgICAgICAgICAgICAgIG92ZXJsYXlZOiBwcmltYXJ5WSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgb3JpZ2luWDogcHJpbWFyeVgsXHJcbiAgICAgICAgICAgICAgICBvcmlnaW5ZOiBwcmltYXJ5WSxcclxuICAgICAgICAgICAgICAgIG92ZXJsYXlYOiBwcmltYXJ5WCxcclxuICAgICAgICAgICAgICAgIG92ZXJsYXlZOiBzZWNvbmRhcnlZLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBvcmlnaW5YOiBzZWNvbmRhcnlYLFxyXG4gICAgICAgICAgICAgICAgb3JpZ2luWTogc2Vjb25kYXJ5WSxcclxuICAgICAgICAgICAgICAgIG92ZXJsYXlYOiBzZWNvbmRhcnlYLFxyXG4gICAgICAgICAgICAgICAgb3ZlcmxheVk6IHByaW1hcnlZLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBvcmlnaW5YOiBzZWNvbmRhcnlYLFxyXG4gICAgICAgICAgICAgICAgb3JpZ2luWTogcHJpbWFyeVksXHJcbiAgICAgICAgICAgICAgICBvdmVybGF5WDogc2Vjb25kYXJ5WCxcclxuICAgICAgICAgICAgICAgIG92ZXJsYXlZOiBzZWNvbmRhcnlZLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIF0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBHZXRzIGFuIG9ic2VydmFibGUgdGhhdCB3aWxsIGVtaXQgd2hlbiB0aGUgb3ZlcmxheSBpcyBzdXBwb3NlZCB0byBiZSBjbG9zZWQuICovXHJcbiAgICBwcml2YXRlIF9nZXRDbG9zZVN0cmVhbShvdmVybGF5UmVmOiBPdmVybGF5UmVmKTogYW55IHtcclxuICAgICAgICByZXR1cm4gbWVyZ2UoXHJcbiAgICAgICAgICAgIG92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLFxyXG4gICAgICAgICAgICBvdmVybGF5UmVmLmRldGFjaG1lbnRzKCksXHJcbiAgICAgICAgICAgIG92ZXJsYXlSZWYua2V5ZG93bkV2ZW50cygpLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXIoZXZlbnQgPT5cclxuICAgICAgICAgICAgICAgIC8vIENsb3Npbmcgb24gYWx0ICsgdXAgaXMgb25seSB2YWxpZCB3aGVuIHRoZXJlJ3MgYW4gaW5wdXQgYXNzb2NpYXRlZCB3aXRoIHRoZSBkYXRldGltZXBpY2tlci5cclxuICAgICAgICAgICAgICAgIChcclxuICAgICAgICAgICAgICAgICAgICAoZXZlbnQuY29kZSA9PT0gJ0VzY2FwZScgJiYgIWhhc01vZGlmaWVyS2V5KGV2ZW50KSkgfHxcclxuICAgICAgICAgICAgICAgICAgICAodGhpcy5kYXRldGltZXBpY2tlcklucHV0ICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc01vZGlmaWVyS2V5KGV2ZW50LCAnYWx0S2V5JykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuY29kZSA9PT0gJ0Fycm93VXAnKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGNka1RyYXBGb2N1cyByb2xlPVwiZGlhbG9nXCIgY2xhc3M9XCJjbWF0LWRhdGV0aW1lcGlja2VyLWNvbnRlbnQtY29udGFpbmVyXCIgW2F0dHIuYXJpYS1tb2RhbF09XCJ0cnVlXCJcclxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJkaWFsb2dMYWJlbElkID8/IHVuZGVmaW5lZFwiIFthdHRyLm1vZGVdPVwiZGF0ZXRpbWVwaWNrZXIubW9kZVwiPlxyXG4gICAgPGNtYXQtZGF0ZXRpbWVwaWNrZXItY2FsZW5kYXIgW2lkXT1cImRhdGV0aW1lcGlja2VyLmlkXCIgW25nQ2xhc3NdPVwiZGF0ZXRpbWVwaWNrZXIucGFuZWxDbGFzc1wiXHJcbiAgICAgICAgW2F0dHIubW9kZV09XCJkYXRldGltZXBpY2tlci5tb2RlXCIgW3R5cGVdPVwiZGF0ZXRpbWVwaWNrZXIudHlwZVwiIFtzdGFydEF0XT1cImRhdGV0aW1lcGlja2VyLnN0YXJ0QXRcIlxyXG4gICAgICAgIFtzdGFydFZpZXddPVwiZGF0ZXRpbWVwaWNrZXIuc3RhcnRWaWV3XCIgW21heERhdGVdPVwiZGF0ZXRpbWVwaWNrZXIubWF4RGF0ZVwiIFttaW5EYXRlXT1cImRhdGV0aW1lcGlja2VyLm1pbkRhdGVcIlxyXG4gICAgICAgIFtkYXRlRmlsdGVyXT1cImRhdGV0aW1lcGlja2VyLmRhdGVGaWx0ZXJcIiBbbXVsdGlZZWFyU2VsZWN0b3JdPVwiZGF0ZXRpbWVwaWNrZXIubXVsdGlZZWFyU2VsZWN0b3JcIlxyXG4gICAgICAgIFtwcmV2ZW50U2FtZURhdGVUaW1lU2VsZWN0aW9uXT1cImRhdGV0aW1lcGlja2VyLnByZXZlbnRTYW1lRGF0ZVRpbWVTZWxlY3Rpb25cIlxyXG4gICAgICAgIFt0aW1lSW50ZXJ2YWxdPVwiZGF0ZXRpbWVwaWNrZXIudGltZUludGVydmFsXCIgW3R3ZWx2ZWhvdXJdPVwiZGF0ZXRpbWVwaWNrZXIudHdlbHZlaG91clwiXHJcbiAgICAgICAgW3NlbGVjdGVkXT1cImRhdGV0aW1lcGlja2VyLnNlbGVjdGVkXCIgW3RpbWVJbnB1dF09XCJkYXRldGltZXBpY2tlci50aW1lSW5wdXRcIlxyXG4gICAgICAgIFtAZmFkZUluQ2FsZW5kYXJdPVwiJ2VudGVyJ1wiIChzZWxlY3RlZENoYW5nZSk9XCJkYXRldGltZXBpY2tlci5zZWxlY3QoJGV2ZW50KVwiXHJcbiAgICAgICAgKHZpZXdDaGFuZ2VkKT1cImRhdGV0aW1lcGlja2VyLnZpZXdDaGFuZ2UoJGV2ZW50KVwiICh1c2VyU2VsZWN0aW9uKT1cImRhdGV0aW1lcGlja2VyLmNsb3NlKClcIj5cclxuICAgIDwvY21hdC1kYXRldGltZXBpY2tlci1jYWxlbmRhcj5cclxuPC9kaXY+Il19