@onemrvapublic/design-system 18.3.0-develop.1 → 18.3.0-develop.2

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 (438) hide show
  1. package/_index.scss +0 -1
  2. package/_utils.scss +3 -3
  3. package/fesm2022/onemrvapublic-design-system-core.mjs +7 -7
  4. package/fesm2022/onemrvapublic-design-system-core.mjs.map +1 -1
  5. package/fesm2022/onemrvapublic-design-system-flag-icon.mjs +3 -3
  6. package/fesm2022/onemrvapublic-design-system-flag-icon.mjs.map +1 -1
  7. package/fesm2022/onemrvapublic-design-system-layout.mjs +188 -97
  8. package/fesm2022/onemrvapublic-design-system-layout.mjs.map +1 -1
  9. package/fesm2022/onemrvapublic-design-system-mat-avatar.mjs +11 -11
  10. package/fesm2022/onemrvapublic-design-system-mat-avatar.mjs.map +1 -1
  11. package/fesm2022/onemrvapublic-design-system-mat-breadcrumb.mjs +27 -18
  12. package/fesm2022/onemrvapublic-design-system-mat-breadcrumb.mjs.map +1 -1
  13. package/fesm2022/onemrvapublic-design-system-mat-carousel.mjs +6 -6
  14. package/fesm2022/onemrvapublic-design-system-mat-carousel.mjs.map +1 -1
  15. package/fesm2022/onemrvapublic-design-system-mat-copy-to-clipboard.mjs +3 -3
  16. package/fesm2022/onemrvapublic-design-system-mat-copy-to-clipboard.mjs.map +1 -1
  17. package/fesm2022/onemrvapublic-design-system-mat-datepicker-header.mjs +3 -3
  18. package/fesm2022/onemrvapublic-design-system-mat-datepicker-header.mjs.map +1 -1
  19. package/fesm2022/onemrvapublic-design-system-mat-empty-row.mjs +3 -3
  20. package/fesm2022/onemrvapublic-design-system-mat-empty-row.mjs.map +1 -1
  21. package/fesm2022/onemrvapublic-design-system-mat-file-upload.mjs +107 -86
  22. package/fesm2022/onemrvapublic-design-system-mat-file-upload.mjs.map +1 -1
  23. package/fesm2022/onemrvapublic-design-system-mat-input-birthplace.mjs +6 -6
  24. package/fesm2022/onemrvapublic-design-system-mat-input-birthplace.mjs.map +1 -1
  25. package/fesm2022/onemrvapublic-design-system-mat-input-country.mjs +3 -3
  26. package/fesm2022/onemrvapublic-design-system-mat-input-country.mjs.map +1 -1
  27. package/fesm2022/onemrvapublic-design-system-mat-input-enterprise-number.mjs +3 -3
  28. package/fesm2022/onemrvapublic-design-system-mat-input-enterprise-number.mjs.map +1 -1
  29. package/fesm2022/onemrvapublic-design-system-mat-input-iban.mjs +4 -4
  30. package/fesm2022/onemrvapublic-design-system-mat-input-iban.mjs.map +1 -1
  31. package/fesm2022/onemrvapublic-design-system-mat-input-phone.mjs +6 -6
  32. package/fesm2022/onemrvapublic-design-system-mat-input-phone.mjs.map +1 -1
  33. package/fesm2022/onemrvapublic-design-system-mat-message-box.mjs +10 -13
  34. package/fesm2022/onemrvapublic-design-system-mat-message-box.mjs.map +1 -1
  35. package/fesm2022/onemrvapublic-design-system-mat-multi-select.mjs +31 -51
  36. package/fesm2022/onemrvapublic-design-system-mat-multi-select.mjs.map +1 -1
  37. package/fesm2022/onemrvapublic-design-system-mat-notification.mjs +3 -3
  38. package/fesm2022/onemrvapublic-design-system-mat-notification.mjs.map +1 -1
  39. package/fesm2022/onemrvapublic-design-system-mat-paginator.mjs +24 -35
  40. package/fesm2022/onemrvapublic-design-system-mat-paginator.mjs.map +1 -1
  41. package/fesm2022/onemrvapublic-design-system-mat-panel.mjs +28 -29
  42. package/fesm2022/onemrvapublic-design-system-mat-panel.mjs.map +1 -1
  43. package/fesm2022/onemrvapublic-design-system-mat-pop-over.mjs +20 -20
  44. package/fesm2022/onemrvapublic-design-system-mat-pop-over.mjs.map +1 -1
  45. package/fesm2022/onemrvapublic-design-system-mat-progress-bar.mjs +3 -3
  46. package/fesm2022/onemrvapublic-design-system-mat-progress-bar.mjs.map +1 -1
  47. package/fesm2022/onemrvapublic-design-system-mat-select-search.mjs +48 -149
  48. package/fesm2022/onemrvapublic-design-system-mat-select-search.mjs.map +1 -1
  49. package/fesm2022/onemrvapublic-design-system-mat-selectable-box.mjs +21 -53
  50. package/fesm2022/onemrvapublic-design-system-mat-selectable-box.mjs.map +1 -1
  51. package/fesm2022/onemrvapublic-design-system-mat-side-menu.mjs +14 -17
  52. package/fesm2022/onemrvapublic-design-system-mat-side-menu.mjs.map +1 -1
  53. package/fesm2022/onemrvapublic-design-system-mat-skeleton.mjs +11 -12
  54. package/fesm2022/onemrvapublic-design-system-mat-skeleton.mjs.map +1 -1
  55. package/fesm2022/onemrvapublic-design-system-mat-spinner.mjs +12 -13
  56. package/fesm2022/onemrvapublic-design-system-mat-spinner.mjs.map +1 -1
  57. package/fesm2022/onemrvapublic-design-system-mat-stepper.mjs +16 -41
  58. package/fesm2022/onemrvapublic-design-system-mat-stepper.mjs.map +1 -1
  59. package/fesm2022/onemrvapublic-design-system-mat-sticker.mjs +11 -11
  60. package/fesm2022/onemrvapublic-design-system-mat-sticker.mjs.map +1 -1
  61. package/fesm2022/onemrvapublic-design-system-mat-table-of-content.mjs +9 -9
  62. package/fesm2022/onemrvapublic-design-system-mat-table-of-content.mjs.map +1 -1
  63. package/fesm2022/onemrvapublic-design-system-mat-task-list.mjs +26 -41
  64. package/fesm2022/onemrvapublic-design-system-mat-task-list.mjs.map +1 -1
  65. package/fesm2022/onemrvapublic-design-system-mat-timepicker.mjs +51 -64
  66. package/fesm2022/onemrvapublic-design-system-mat-timepicker.mjs.map +1 -1
  67. package/fesm2022/onemrvapublic-design-system-mat-toast.mjs +12 -12
  68. package/fesm2022/onemrvapublic-design-system-mat-toast.mjs.map +1 -1
  69. package/fesm2022/onemrvapublic-design-system-mat-tooltip.mjs +18 -18
  70. package/fesm2022/onemrvapublic-design-system-mat-tooltip.mjs.map +1 -1
  71. package/fesm2022/onemrvapublic-design-system-page-error.mjs +6 -6
  72. package/fesm2022/onemrvapublic-design-system-page-error.mjs.map +1 -1
  73. package/fesm2022/onemrvapublic-design-system-page-not-found.mjs +32 -26
  74. package/fesm2022/onemrvapublic-design-system-page-not-found.mjs.map +1 -1
  75. package/fesm2022/onemrvapublic-design-system-shared.mjs +70 -62
  76. package/fesm2022/onemrvapublic-design-system-shared.mjs.map +1 -1
  77. package/layout/index.d.ts +5 -5
  78. package/layout/src/components/layout/_layout-mixin.component.scss +5 -5
  79. package/layout/src/components/layout/layout.component.d.ts +1 -1
  80. package/layout/src/components/layout/layout.component.scss +7 -0
  81. package/layout/src/components/layout-after-nav/layout-after-nav.component.d.ts +1 -1
  82. package/layout/src/components/layout-content/layout-content.component.d.ts +1 -1
  83. package/layout/src/components/layout-footer/layout-footer.component.d.ts +1 -1
  84. package/layout/src/components/layout-login-menu/layout-login-menu.component.d.ts +1 -1
  85. package/layout/src/components/layout-route/layout-route.component.d.ts +1 -1
  86. package/layout/src/components/layout-sidenav/layout-sidenav.component.d.ts +1 -1
  87. package/layout/src/components/layout-sidenav-title/layout-sidenav-title.component.d.ts +1 -1
  88. package/layout/src/components/layout-subroute/layout-subroute.component.d.ts +1 -1
  89. package/layout/src/components/layout-title/layout-title.component.d.ts +1 -1
  90. package/layout/src/decorators/coerce-boolean-input.decorator.d.ts +1 -0
  91. package/layout/src/decorators/index.d.ts +2 -0
  92. package/layout/src/decorators/observable-content.decorator.d.ts +1 -0
  93. package/layout/src/directives/drawer-host.directive.d.ts +1 -1
  94. package/layout/src/directives/index.d.ts +2 -0
  95. package/layout/src/{striphtml.pipe.d.ts → directives/striphtml.pipe.d.ts} +1 -1
  96. package/layout/src/enums/index.d.ts +1 -0
  97. package/layout/src/layout.module.d.ts +3 -3
  98. package/layout/src/models/index.d.ts +2 -0
  99. package/layout/src/services/index.d.ts +1 -0
  100. package/mat-avatar/src/onemrva-mat-avatar.component.d.ts +1 -1
  101. package/mat-avatar/src/onemrva-mat-avatar.module.d.ts +1 -3
  102. package/mat-breadcrumb/src/onemrva-mat-breadcrumb.component.d.ts +1 -1
  103. package/mat-breadcrumb/src/onemrva-mat-breadcrumb.module.d.ts +5 -5
  104. package/mat-datepicker-header/src/_onemrva-mat-datepicker-header.component.scss +1 -1
  105. package/mat-file-upload/index.d.ts +1 -0
  106. package/mat-file-upload/src/components/onemrva-mat-file-panel/onemrva-file-panel.component.d.ts +1 -1
  107. package/mat-file-upload/src/components/onemrva-mat-file-panel/onemrva-file-panel.component.scss +3 -3
  108. package/mat-file-upload/src/components/onemrva-mat-file-upload/onemrva-mat-file-upload.component.d.ts +1 -1
  109. package/mat-file-upload/src/components/onemrva-mat-file-upload/onemrva-mat-file-upload.component.scss +2 -1
  110. package/mat-file-upload/src/directives/dnd.directive.d.ts +1 -1
  111. package/mat-file-upload/src/onemrva-mat-file-upload.module.d.ts +1 -1
  112. package/mat-message-box/src/onemrva-mat-message-box.component.d.ts +1 -1
  113. package/mat-message-box/src/onemrva-mat-message-box.module.d.ts +1 -4
  114. package/mat-multi-select/src/onemrva-mat-multi-select.component.d.ts +1 -1
  115. package/mat-multi-select/src/onemrva-mat-multi-select.module.d.ts +1 -9
  116. package/mat-paginator/src/onemrva-mat-paginator.component.d.ts +1 -1
  117. package/mat-paginator/src/onemrva-mat-paginator.module.d.ts +1 -6
  118. package/mat-panel/src/onemrva-mat-panel-content.component.d.ts +1 -1
  119. package/mat-panel/src/onemrva-mat-panel-icon.component.d.ts +1 -1
  120. package/mat-panel/src/onemrva-mat-panel-title-action.component.d.ts +1 -1
  121. package/mat-panel/src/onemrva-mat-panel-title.component.d.ts +1 -1
  122. package/mat-panel/src/onemrva-mat-panel.component.d.ts +1 -1
  123. package/mat-panel/src/onemrva-mat-panel.module.d.ts +1 -2
  124. package/mat-pop-over/src/onemrva-mat-pop-over-content.component.d.ts +1 -1
  125. package/mat-pop-over/src/onemrva-mat-pop-over-trigger.component.d.ts +1 -1
  126. package/mat-pop-over/src/onemrva-mat-pop-over.component.d.ts +1 -1
  127. package/mat-pop-over/src/onemrva-mat-pop-over.module.d.ts +1 -3
  128. package/mat-select-search/src/mat-select-no-entries-found.directive.d.ts +1 -1
  129. package/mat-select-search/src/mat-select-search-clear.directive.d.ts +1 -1
  130. package/mat-select-search/src/mat-select-search.component.d.ts +1 -79
  131. package/mat-select-search/src/mat-select-search.module.d.ts +1 -12
  132. package/mat-selectable-box/src/onemrva-mat-selectable-box.component.d.ts +1 -1
  133. package/mat-selectable-box/src/onemrva-mat-selectable-box.module.d.ts +1 -11
  134. package/mat-side-menu/src/onemrva-mat-side-menu.component.d.ts +1 -1
  135. package/mat-side-menu/src/onemrva-mat-side-menu.module.d.ts +1 -5
  136. package/mat-skeleton/src/onemrva-mat-skeleton.component.d.ts +1 -1
  137. package/mat-skeleton/src/onemrva-mat-skeleton.module.d.ts +1 -2
  138. package/mat-spinner/src/onemrva-mat-spinner.component.d.ts +1 -1
  139. package/mat-spinner/src/onemrva-mat-spinner.module.d.ts +1 -1
  140. package/mat-stepper/src/onemrva-mat-stepper.component.d.ts +1 -1
  141. package/mat-stepper/src/onemrva-mat-stepper.module.d.ts +2 -7
  142. package/mat-stepper/src/onemrva-mat-stepper.scss +1 -1
  143. package/mat-sticker/src/onemrva-mat-sticker.component.d.ts +1 -1
  144. package/mat-sticker/src/onemrva-mat-sticker.module.d.ts +1 -2
  145. package/mat-task-list/src/onemrva-mat-task-content.component.d.ts +1 -1
  146. package/mat-task-list/src/onemrva-mat-task-list.component.d.ts +1 -1
  147. package/mat-task-list/src/onemrva-mat-task-list.module.d.ts +1 -5
  148. package/mat-task-list/src/onemrva-mat-task-title.component.d.ts +1 -1
  149. package/mat-task-list/src/onemrva-mat-task.component.d.ts +1 -1
  150. package/mat-timepicker/src/clock/clock.component.d.ts +1 -1
  151. package/mat-timepicker/src/onemrva-mat-timepicker.component.d.ts +1 -1
  152. package/mat-timepicker/src/onemrva-mat-timepicker.module.d.ts +1 -7
  153. package/mat-timepicker/src/timepicker-dialog/timepicker-dialog.component.d.ts +1 -1
  154. package/mat-timepicker/src/timepicker-toggle/timepicker-toggle.component.d.ts +2 -2
  155. package/mat-timepicker/src/timepicker.directive.d.ts +1 -1
  156. package/mat-toast/src/onemrva-mat-toast.component.d.ts +1 -1
  157. package/mat-toast/src/onemrva-mat-toast.module.d.ts +2 -3
  158. package/mat-tooltip/src/onemrva-mat-tooltip.component.d.ts +1 -1
  159. package/mat-tooltip/src/onemrva-mat-tooltip.directive.d.ts +1 -1
  160. package/mat-tooltip/src/onemrva-mat-tooltip.module.d.ts +1 -2
  161. package/package.json +1 -85
  162. package/page-not-found/src/page-not-found-action.component.d.ts +1 -1
  163. package/page-not-found/src/page-not-found-extra.component.d.ts +1 -1
  164. package/page-not-found/src/page-not-found-invader.component.d.ts +1 -1
  165. package/page-not-found/src/page-not-found-mixin.component.scss +1 -1
  166. package/page-not-found/src/page-not-found.component.d.ts +1 -1
  167. package/page-not-found/src/page-not-found.module.d.ts +1 -3
  168. package/shared/src/lib/directives/clipboard.directive.d.ts +1 -1
  169. package/shared/src/lib/directives/color.directive.d.ts +1 -1
  170. package/shared/src/lib/directives/digit-only.directive.d.ts +1 -1
  171. package/shared/src/lib/directives/iconRight.directive.d.ts +1 -1
  172. package/shared/src/lib/directives/if-width-is.directive.d.ts +1 -1
  173. package/shared/src/lib/directives/mask.directive.d.ts +1 -1
  174. package/shared/src/lib/directives/mat-row-clickable.directive.d.ts +1 -1
  175. package/shared/src/lib/shared.module.d.ts +1 -2
  176. package/esm2022/core/index.mjs +0 -4
  177. package/esm2022/core/onemrvapublic-design-system-core.mjs +0 -5
  178. package/esm2022/core/src/lib/core.module.mjs +0 -39
  179. package/esm2022/core/src/lib/services/index.mjs +0 -3
  180. package/esm2022/core/src/lib/services/onemrva-error-handler.service.mjs +0 -26
  181. package/esm2022/core/src/lib/services/onemrva-missing-translation.service.mjs +0 -6
  182. package/esm2022/flag-icon/index.mjs +0 -2
  183. package/esm2022/flag-icon/onemrvapublic-design-system-flag-icon.mjs +0 -5
  184. package/esm2022/flag-icon/src/flag-icon.component.mjs +0 -41
  185. package/esm2022/layout/index.mjs +0 -8
  186. package/esm2022/layout/onemrvapublic-design-system-layout.mjs +0 -5
  187. package/esm2022/layout/src/components/index.mjs +0 -36
  188. package/esm2022/layout/src/components/layout/layout.component.mjs +0 -177
  189. package/esm2022/layout/src/components/layout-after-nav/layout-after-nav.component.mjs +0 -25
  190. package/esm2022/layout/src/components/layout-content/layout-content.component.mjs +0 -25
  191. package/esm2022/layout/src/components/layout-drawer-actions/layout-drawer-actions.component.mjs +0 -16
  192. package/esm2022/layout/src/components/layout-drawer-content/layout-drawer-content.component.mjs +0 -16
  193. package/esm2022/layout/src/components/layout-drawer-title/layout-drawer-title.component.mjs +0 -20
  194. package/esm2022/layout/src/components/layout-footer/layout-footer.component.mjs +0 -17
  195. package/esm2022/layout/src/components/layout-login-menu/layout-login-menu.component.mjs +0 -25
  196. package/esm2022/layout/src/components/layout-route/layout-route.component.mjs +0 -65
  197. package/esm2022/layout/src/components/layout-sidenav/layout-sidenav.component.mjs +0 -83
  198. package/esm2022/layout/src/components/layout-sidenav-title/layout-sidenav-title.component.mjs +0 -17
  199. package/esm2022/layout/src/components/layout-subroute/layout-subroute.component.mjs +0 -55
  200. package/esm2022/layout/src/components/layout-title/layout-title.component.mjs +0 -25
  201. package/esm2022/layout/src/directives/drawer-host.directive.mjs +0 -41
  202. package/esm2022/layout/src/enums/environment.enum.mjs +0 -8
  203. package/esm2022/layout/src/layout.module.mjs +0 -95
  204. package/esm2022/layout/src/models/onem-language.model.mjs +0 -2
  205. package/esm2022/layout/src/models/onemrva-profile.model.mjs +0 -46
  206. package/esm2022/layout/src/services/drawer.service.mjs +0 -31
  207. package/esm2022/layout/src/striphtml.pipe.mjs +0 -16
  208. package/esm2022/mat-avatar/index.mjs +0 -3
  209. package/esm2022/mat-avatar/onemrvapublic-design-system-mat-avatar.mjs +0 -5
  210. package/esm2022/mat-avatar/src/onemrva-mat-avatar.component.mjs +0 -440
  211. package/esm2022/mat-avatar/src/onemrva-mat-avatar.module.mjs +0 -19
  212. package/esm2022/mat-badge/index.mjs +0 -6
  213. package/esm2022/mat-badge/onemrvapublic-design-system-mat-badge.mjs +0 -5
  214. package/esm2022/mat-badge/src/onemrva-mat-badge.component.mjs +0 -250
  215. package/esm2022/mat-badge/src/onemrva-mat-badge.module.mjs +0 -16
  216. package/esm2022/mat-breadcrumb/index.mjs +0 -7
  217. package/esm2022/mat-breadcrumb/onemrvapublic-design-system-mat-breadcrumb.mjs +0 -5
  218. package/esm2022/mat-breadcrumb/src/onemrva-mat-breadcrumb.component.mjs +0 -19
  219. package/esm2022/mat-breadcrumb/src/onemrva-mat-breadcrumb.model.mjs +0 -2
  220. package/esm2022/mat-breadcrumb/src/onemrva-mat-breadcrumb.module.mjs +0 -20
  221. package/esm2022/mat-breadcrumb/src/onemrva-mat-breadcrumb.service.mjs +0 -59
  222. package/esm2022/mat-carousel/index.mjs +0 -3
  223. package/esm2022/mat-carousel/onemrvapublic-design-system-mat-carousel.mjs +0 -5
  224. package/esm2022/mat-carousel/src/mat-carousel-item/onemrva-mat-carousel-item.component.mjs +0 -23
  225. package/esm2022/mat-carousel/src/onemrva-mat-carousel.component.mjs +0 -175
  226. package/esm2022/mat-copy-to-clipboard/index.mjs +0 -2
  227. package/esm2022/mat-copy-to-clipboard/onemrvapublic-design-system-mat-copy-to-clipboard.mjs +0 -5
  228. package/esm2022/mat-copy-to-clipboard/src/components/copy-to-clipboard.component.mjs +0 -85
  229. package/esm2022/mat-datepicker-header/index.mjs +0 -5
  230. package/esm2022/mat-datepicker-header/onemrvapublic-design-system-mat-datepicker-header.mjs +0 -5
  231. package/esm2022/mat-datepicker-header/src/onemrva-mat-datepicker-header.component.mjs +0 -203
  232. package/esm2022/mat-empty-row/index.mjs +0 -2
  233. package/esm2022/mat-empty-row/onemrvapublic-design-system-mat-empty-row.mjs +0 -5
  234. package/esm2022/mat-empty-row/src/onemrva-mat-empty-row.component.mjs +0 -35
  235. package/esm2022/mat-file-upload/index.mjs +0 -11
  236. package/esm2022/mat-file-upload/onemrvapublic-design-system-mat-file-upload.mjs +0 -5
  237. package/esm2022/mat-file-upload/src/components/index.mjs +0 -9
  238. package/esm2022/mat-file-upload/src/components/onemrva-mat-file-panel/onemrva-file-panel.component.mjs +0 -88
  239. package/esm2022/mat-file-upload/src/components/onemrva-mat-file-upload/onemrva-mat-file-upload.component.mjs +0 -195
  240. package/esm2022/mat-file-upload/src/directives/dnd.directive.mjs +0 -53
  241. package/esm2022/mat-file-upload/src/models/action-config.model.mjs +0 -2
  242. package/esm2022/mat-file-upload/src/models/progress-file.model.mjs +0 -49
  243. package/esm2022/mat-file-upload/src/onemrva-mat-file-upload-itf.store.mjs +0 -2
  244. package/esm2022/mat-file-upload/src/onemrva-mat-file-upload.module.mjs +0 -51
  245. package/esm2022/mat-file-upload/src/onemrva-mat-file-upload.service.mjs +0 -49
  246. package/esm2022/mat-file-upload/src/onemrva-mat-file-upload.store.mjs +0 -320
  247. package/esm2022/mat-input-birthplace/index.mjs +0 -5
  248. package/esm2022/mat-input-birthplace/onemrvapublic-design-system-mat-input-birthplace.mjs +0 -5
  249. package/esm2022/mat-input-birthplace/src/country-item.component.mjs +0 -31
  250. package/esm2022/mat-input-birthplace/src/onemrva-mat-input-birthplace.component.mjs +0 -120
  251. package/esm2022/mat-input-country/index.mjs +0 -5
  252. package/esm2022/mat-input-country/onemrvapublic-design-system-mat-input-country.mjs +0 -5
  253. package/esm2022/mat-input-country/src/onemrva-mat-input-country.component.mjs +0 -90
  254. package/esm2022/mat-input-enterprise-number/index.mjs +0 -5
  255. package/esm2022/mat-input-enterprise-number/onemrvapublic-design-system-mat-input-enterprise-number.mjs +0 -5
  256. package/esm2022/mat-input-enterprise-number/src/onemrva-mat-input-enterprise-number.component.mjs +0 -180
  257. package/esm2022/mat-input-iban/index.mjs +0 -5
  258. package/esm2022/mat-input-iban/onemrvapublic-design-system-mat-input-iban.mjs +0 -5
  259. package/esm2022/mat-input-iban/src/onemrva-mat-input-iban.component.mjs +0 -295
  260. package/esm2022/mat-input-phone/index.mjs +0 -6
  261. package/esm2022/mat-input-phone/onemrvapublic-design-system-mat-input-phone.mjs +0 -5
  262. package/esm2022/mat-input-phone/src/onemrva-mat-input-phone.component.mjs +0 -234
  263. package/esm2022/mat-input-phone/src/phone-number.directive.mjs +0 -51
  264. package/esm2022/mat-message-box/index.mjs +0 -3
  265. package/esm2022/mat-message-box/onemrvapublic-design-system-mat-message-box.mjs +0 -5
  266. package/esm2022/mat-message-box/src/onemrva-mat-message-box.component.mjs +0 -175
  267. package/esm2022/mat-message-box/src/onemrva-mat-message-box.module.mjs +0 -20
  268. package/esm2022/mat-multi-select/index.mjs +0 -3
  269. package/esm2022/mat-multi-select/onemrvapublic-design-system-mat-multi-select.mjs +0 -5
  270. package/esm2022/mat-multi-select/src/onemrva-mat-multi-select.component.mjs +0 -200
  271. package/esm2022/mat-multi-select/src/onemrva-mat-multi-select.module.mjs +0 -51
  272. package/esm2022/mat-notification/index.mjs +0 -2
  273. package/esm2022/mat-notification/onemrvapublic-design-system-mat-notification.mjs +0 -5
  274. package/esm2022/mat-notification/src/onemrva-mat-notification.component.mjs +0 -165
  275. package/esm2022/mat-paginator/index.mjs +0 -6
  276. package/esm2022/mat-paginator/onemrvapublic-design-system-mat-paginator.mjs +0 -5
  277. package/esm2022/mat-paginator/src/onemrva-mat-paginator.component.mjs +0 -217
  278. package/esm2022/mat-paginator/src/onemrva-mat-paginator.module.mjs +0 -36
  279. package/esm2022/mat-panel/index.mjs +0 -7
  280. package/esm2022/mat-panel/onemrvapublic-design-system-mat-panel.mjs +0 -5
  281. package/esm2022/mat-panel/src/onemrva-mat-panel-content.component.mjs +0 -17
  282. package/esm2022/mat-panel/src/onemrva-mat-panel-icon.component.mjs +0 -17
  283. package/esm2022/mat-panel/src/onemrva-mat-panel-title-action.component.mjs +0 -17
  284. package/esm2022/mat-panel/src/onemrva-mat-panel-title.component.mjs +0 -27
  285. package/esm2022/mat-panel/src/onemrva-mat-panel.component.mjs +0 -132
  286. package/esm2022/mat-panel/src/onemrva-mat-panel.module.mjs +0 -42
  287. package/esm2022/mat-pop-over/index.mjs +0 -5
  288. package/esm2022/mat-pop-over/onemrvapublic-design-system-mat-pop-over.mjs +0 -5
  289. package/esm2022/mat-pop-over/src/onemrva-mat-pop-over-content.component.mjs +0 -23
  290. package/esm2022/mat-pop-over/src/onemrva-mat-pop-over-trigger.component.mjs +0 -23
  291. package/esm2022/mat-pop-over/src/onemrva-mat-pop-over.component.mjs +0 -46
  292. package/esm2022/mat-pop-over/src/onemrva-mat-pop-over.module.mjs +0 -30
  293. package/esm2022/mat-progress-bar/index.mjs +0 -2
  294. package/esm2022/mat-progress-bar/onemrvapublic-design-system-mat-progress-bar.mjs +0 -5
  295. package/esm2022/mat-progress-bar/src/onemrva-mat-progress-bar.component.mjs +0 -29
  296. package/esm2022/mat-select-search/index.mjs +0 -4
  297. package/esm2022/mat-select-search/onemrvapublic-design-system-mat-select-search.mjs +0 -5
  298. package/esm2022/mat-select-search/src/default-options.mjs +0 -35
  299. package/esm2022/mat-select-search/src/mat-select-no-entries-found.directive.mjs +0 -22
  300. package/esm2022/mat-select-search/src/mat-select-search-clear.directive.mjs +0 -20
  301. package/esm2022/mat-select-search/src/mat-select-search.component.mjs +0 -589
  302. package/esm2022/mat-select-search/src/mat-select-search.module.mjs +0 -79
  303. package/esm2022/mat-selectable-box/index.mjs +0 -6
  304. package/esm2022/mat-selectable-box/onemrvapublic-design-system-mat-selectable-box.mjs +0 -5
  305. package/esm2022/mat-selectable-box/src/onemrva-mat-selectable-box.component.mjs +0 -56
  306. package/esm2022/mat-selectable-box/src/onemrva-mat-selectable-box.module.mjs +0 -56
  307. package/esm2022/mat-side-menu/index.mjs +0 -6
  308. package/esm2022/mat-side-menu/onemrvapublic-design-system-mat-side-menu.mjs +0 -5
  309. package/esm2022/mat-side-menu/src/onemrva-mat-side-menu.component.mjs +0 -48
  310. package/esm2022/mat-side-menu/src/onemrva-mat-side-menu.module.mjs +0 -21
  311. package/esm2022/mat-skeleton/index.mjs +0 -4
  312. package/esm2022/mat-skeleton/onemrvapublic-design-system-mat-skeleton.mjs +0 -5
  313. package/esm2022/mat-skeleton/src/onemrva-mat-skeleton-enums.mjs +0 -20
  314. package/esm2022/mat-skeleton/src/onemrva-mat-skeleton.component.mjs +0 -202
  315. package/esm2022/mat-skeleton/src/onemrva-mat-skeleton.module.mjs +0 -18
  316. package/esm2022/mat-spinner/index.mjs +0 -7
  317. package/esm2022/mat-spinner/onemrvapublic-design-system-mat-spinner.mjs +0 -5
  318. package/esm2022/mat-spinner/src/onemrva-mat-loading.directive.mjs +0 -33
  319. package/esm2022/mat-spinner/src/onemrva-mat-spinner.component.mjs +0 -73
  320. package/esm2022/mat-spinner/src/onemrva-mat-spinner.module.mjs +0 -18
  321. package/esm2022/mat-stepper/index.mjs +0 -6
  322. package/esm2022/mat-stepper/onemrvapublic-design-system-mat-stepper.mjs +0 -5
  323. package/esm2022/mat-stepper/src/onemrva-mat-stepper.component.mjs +0 -74
  324. package/esm2022/mat-stepper/src/onemrva-mat-stepper.module.mjs +0 -44
  325. package/esm2022/mat-stepper/src/onemrva-stepper-animations.mjs +0 -28
  326. package/esm2022/mat-sticker/index.mjs +0 -6
  327. package/esm2022/mat-sticker/onemrvapublic-design-system-mat-sticker.mjs +0 -5
  328. package/esm2022/mat-sticker/src/onemrva-mat-sticker.component.mjs +0 -69
  329. package/esm2022/mat-sticker/src/onemrva-mat-sticker.module.mjs +0 -18
  330. package/esm2022/mat-table-of-content/index.mjs +0 -8
  331. package/esm2022/mat-table-of-content/onemrvapublic-design-system-mat-table-of-content.mjs +0 -5
  332. package/esm2022/mat-table-of-content/src/onemrva-mat-table-of-content.component.mjs +0 -104
  333. package/esm2022/mat-table-of-content/src/onemrva-mat-table-of-content.directive.mjs +0 -60
  334. package/esm2022/mat-table-of-content/src/onemrva-mat-table-of-content.service.mjs +0 -46
  335. package/esm2022/mat-table-of-content/src/onemrva-mat-toc-anchor.model.mjs +0 -11
  336. package/esm2022/mat-task-list/index.mjs +0 -6
  337. package/esm2022/mat-task-list/onemrvapublic-design-system-mat-task-list.mjs +0 -5
  338. package/esm2022/mat-task-list/src/onemrva-mat-task-content.component.mjs +0 -17
  339. package/esm2022/mat-task-list/src/onemrva-mat-task-list.component.mjs +0 -36
  340. package/esm2022/mat-task-list/src/onemrva-mat-task-list.module.mjs +0 -51
  341. package/esm2022/mat-task-list/src/onemrva-mat-task-title.component.mjs +0 -23
  342. package/esm2022/mat-task-list/src/onemrva-mat-task.component.mjs +0 -140
  343. package/esm2022/mat-timepicker/index.mjs +0 -7
  344. package/esm2022/mat-timepicker/onemrvapublic-design-system-mat-timepicker.mjs +0 -5
  345. package/esm2022/mat-timepicker/src/clock/clock.component.mjs +0 -232
  346. package/esm2022/mat-timepicker/src/interfaces-and-types.mjs +0 -2
  347. package/esm2022/mat-timepicker/src/onemrva-mat-timepicker.component.mjs +0 -279
  348. package/esm2022/mat-timepicker/src/onemrva-mat-timepicker.module.mjs +0 -62
  349. package/esm2022/mat-timepicker/src/timepicker-dialog/timepicker-dialog.component.mjs +0 -129
  350. package/esm2022/mat-timepicker/src/timepicker-toggle/timepicker-toggle.component.mjs +0 -115
  351. package/esm2022/mat-timepicker/src/timepicker.directive.mjs +0 -512
  352. package/esm2022/mat-timepicker/src/util.mjs +0 -83
  353. package/esm2022/mat-toast/index.mjs +0 -6
  354. package/esm2022/mat-toast/onemrvapublic-design-system-mat-toast.mjs +0 -5
  355. package/esm2022/mat-toast/src/onemrva-mat-toast.component.mjs +0 -52
  356. package/esm2022/mat-toast/src/onemrva-mat-toast.module.mjs +0 -19
  357. package/esm2022/mat-tooltip/index.mjs +0 -5
  358. package/esm2022/mat-tooltip/onemrvapublic-design-system-mat-tooltip.mjs +0 -5
  359. package/esm2022/mat-tooltip/src/onemrva-mat-tooltip.component.mjs +0 -36
  360. package/esm2022/mat-tooltip/src/onemrva-mat-tooltip.directive.mjs +0 -111
  361. package/esm2022/mat-tooltip/src/onemrva-mat-tooltip.module.mjs +0 -19
  362. package/esm2022/onemrvapublic-design-system.mjs +0 -5
  363. package/esm2022/page-error/index.mjs +0 -3
  364. package/esm2022/page-error/onemrvapublic-design-system-page-error.mjs +0 -5
  365. package/esm2022/page-error/src/page-error-action.component.mjs +0 -18
  366. package/esm2022/page-error/src/page-error.component.mjs +0 -61
  367. package/esm2022/page-not-found/index.mjs +0 -6
  368. package/esm2022/page-not-found/onemrvapublic-design-system-page-not-found.mjs +0 -5
  369. package/esm2022/page-not-found/src/page-not-found-action.component.mjs +0 -17
  370. package/esm2022/page-not-found/src/page-not-found-extra.component.mjs +0 -17
  371. package/esm2022/page-not-found/src/page-not-found-invader.component.mjs +0 -94
  372. package/esm2022/page-not-found/src/page-not-found.component.mjs +0 -54
  373. package/esm2022/page-not-found/src/page-not-found.module.mjs +0 -38
  374. package/esm2022/public-api.mjs +0 -5
  375. package/esm2022/shared/index.mjs +0 -19
  376. package/esm2022/shared/onemrvapublic-design-system-shared.mjs +0 -5
  377. package/esm2022/shared/src/lib/adapters/index.mjs +0 -3
  378. package/esm2022/shared/src/lib/adapters/luxon.date.adapter.mjs +0 -251
  379. package/esm2022/shared/src/lib/adapters/luxon.utils.mjs +0 -23
  380. package/esm2022/shared/src/lib/adapters/native.date.adapter.mjs +0 -66
  381. package/esm2022/shared/src/lib/components/clipboard-icon/clipboard-icon.component.mjs +0 -20
  382. package/esm2022/shared/src/lib/components/index.mjs +0 -2
  383. package/esm2022/shared/src/lib/constants/CDNUrlModeOptions.mjs +0 -6
  384. package/esm2022/shared/src/lib/constants/cdn.mjs +0 -3
  385. package/esm2022/shared/src/lib/constants/constants.mjs +0 -7
  386. package/esm2022/shared/src/lib/constants/date.format.mjs +0 -95
  387. package/esm2022/shared/src/lib/constants/index.mjs +0 -5
  388. package/esm2022/shared/src/lib/containers/WebComponentOverlayContainer.mjs +0 -84
  389. package/esm2022/shared/src/lib/containers/index.mjs +0 -2
  390. package/esm2022/shared/src/lib/decorators/HttpCacheDecorator.mjs +0 -123
  391. package/esm2022/shared/src/lib/decorators/index.mjs +0 -2
  392. package/esm2022/shared/src/lib/directives/clipboard.directive.mjs +0 -39
  393. package/esm2022/shared/src/lib/directives/color.directive.mjs +0 -64
  394. package/esm2022/shared/src/lib/directives/digit-only.directive.mjs +0 -52
  395. package/esm2022/shared/src/lib/directives/iconRight.directive.mjs +0 -22
  396. package/esm2022/shared/src/lib/directives/if-width-is.directive.mjs +0 -34
  397. package/esm2022/shared/src/lib/directives/index.mjs +0 -24
  398. package/esm2022/shared/src/lib/directives/mask.directive.mjs +0 -198
  399. package/esm2022/shared/src/lib/directives/mat-row-clickable.directive.mjs +0 -74
  400. package/esm2022/shared/src/lib/helpers/index.mjs +0 -2
  401. package/esm2022/shared/src/lib/helpers/translation-helper.mjs +0 -58
  402. package/esm2022/shared/src/lib/interfaces/OnemRvaCommonCountry.interface.mjs +0 -2
  403. package/esm2022/shared/src/lib/interfaces/index.mjs +0 -2
  404. package/esm2022/shared/src/lib/loaders/index.mjs +0 -3
  405. package/esm2022/shared/src/lib/loaders/onemrva-translate-cdn-loader.mjs +0 -15
  406. package/esm2022/shared/src/lib/loaders/onemrva-translate-http-loader.mjs +0 -30
  407. package/esm2022/shared/src/lib/pipes/index.mjs +0 -3
  408. package/esm2022/shared/src/lib/pipes/onemrva-bce.pipe.mjs +0 -20
  409. package/esm2022/shared/src/lib/pipes/onemrva-niss.pipe.mjs +0 -20
  410. package/esm2022/shared/src/lib/providers/index.mjs +0 -5
  411. package/esm2022/shared/src/lib/providers/onemrva.date.luxon.provider.mjs +0 -16
  412. package/esm2022/shared/src/lib/providers/onemrva.date.luxon.year.month.provider.mjs +0 -16
  413. package/esm2022/shared/src/lib/providers/onemrva.date.native.provider.mjs +0 -16
  414. package/esm2022/shared/src/lib/providers/onemrva.date.native.year.month.provider.mjs +0 -16
  415. package/esm2022/shared/src/lib/services/cache.service.mjs +0 -31
  416. package/esm2022/shared/src/lib/services/cdn.service.mjs +0 -105
  417. package/esm2022/shared/src/lib/services/country-cdn.service.mjs +0 -75
  418. package/esm2022/shared/src/lib/services/country-lookup.service.mjs +0 -43
  419. package/esm2022/shared/src/lib/services/index.mjs +0 -5
  420. package/esm2022/shared/src/lib/services/mime-cdn.service.mjs +0 -45
  421. package/esm2022/shared/src/lib/shared.module.mjs +0 -25
  422. package/esm2022/shared/src/lib/tokens/index.mjs +0 -2
  423. package/esm2022/shared/src/lib/tokens/lookup.token.mjs +0 -7
  424. package/esm2022/shared/src/lib/validators/bank-account.validator.utils.mjs +0 -56
  425. package/esm2022/shared/src/lib/validators/index.mjs +0 -3
  426. package/esm2022/shared/src/lib/validators/onemrva-validators.mjs +0 -75
  427. package/esm2022/utils/index.mjs +0 -3
  428. package/esm2022/utils/onemrvapublic-design-system-utils.mjs +0 -5
  429. package/esm2022/utils/src/enum.utils.mjs +0 -7
  430. package/esm2022/utils/src/enums/color.enum.mjs +0 -12
  431. package/esm2022/utils/src/enums/index.mjs +0 -3
  432. package/esm2022/utils/src/enums/size.enum.mjs +0 -9
  433. package/fesm2022/onemrvapublic-design-system-mat-badge.mjs +0 -274
  434. package/fesm2022/onemrvapublic-design-system-mat-badge.mjs.map +0 -1
  435. package/mat-badge/index.d.ts +0 -2
  436. package/mat-badge/src/onemrva-mat-badge.component.d.ts +0 -89
  437. package/mat-badge/src/onemrva-mat-badge.component.scss +0 -157
  438. package/mat-badge/src/onemrva-mat-badge.module.d.ts +0 -7
@@ -1,232 +0,0 @@
1
- import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, } from '@angular/core';
2
- import { getIsAvailabeFn } from '../util';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "@angular/material/button";
6
- import * as i3 from "@angular/material/toolbar";
7
- export class ClockComponent {
8
- constructor() {
9
- this.viewType = 'hours';
10
- this.color = 'primary';
11
- this.formattedValue = 0;
12
- this.formattedHours = 0;
13
- this.changeEvent = new EventEmitter();
14
- this.unavailableSelection = new EventEmitter();
15
- this.invalidSelection = new EventEmitter();
16
- this.isFormattedValueAllowed = true;
17
- this.touching = false;
18
- this.numbers = [];
19
- this.secondaryNumbers = [];
20
- this.minuteDots = [];
21
- this.invalidMeridiemEmitted = true;
22
- this.handleTouchMove = (e) => {
23
- e.preventDefault(); // prevent scrolling behind the clock on iOS
24
- const rect = e.target.getBoundingClientRect();
25
- this.movePointer(e.changedTouches[0].clientX - rect.left, e.changedTouches[0].clientY - rect.top);
26
- };
27
- }
28
- initIsAllowedFn() {
29
- if (!this.allowed24HourMap) {
30
- return;
31
- }
32
- this.isAvailableFn = getIsAvailabeFn(this.allowed24HourMap);
33
- }
34
- isAvailable(value) {
35
- return this.isAvailableFn
36
- ? this.isAvailableFn(value, this.viewType, this.formattedHours)
37
- : true;
38
- }
39
- ngOnChanges(simpleChanges) {
40
- if (simpleChanges['allowed24HourMap'] ||
41
- (simpleChanges['mode'] && !simpleChanges['mode'].firstChange)) {
42
- this.initIsAllowedFn();
43
- }
44
- this.calculateAngule();
45
- this.setNumbers();
46
- if (simpleChanges['formattedValue'] && this.allowed24HourMap) {
47
- this.isFormattedValueAllowed = this.isAvailable(this.formattedValue);
48
- }
49
- const isSelectedTimeAvailable = this.isAvailableFn
50
- ? this.isAvailableFn(this.formattedValue, 'minutes', this.formattedHours)
51
- : true;
52
- if (this.viewType === 'minutes' && this.isAvailableFn) {
53
- const areMinitesAvailable = this.isAvailableFn(this.minutes, 'minutes', this.formattedHours);
54
- if (!areMinitesAvailable) {
55
- if (this.minDate && this.minDate.getMinutes() > this.minutes) {
56
- setTimeout(() => {
57
- this.changeEvent.emit({
58
- value: this.minDate.getMinutes(),
59
- type: 'minutes',
60
- });
61
- });
62
- }
63
- else {
64
- setTimeout(() => {
65
- this.changeEvent.emit({
66
- value: this.maxDate.getMinutes(),
67
- type: 'minutes',
68
- });
69
- });
70
- }
71
- }
72
- }
73
- if (isSelectedTimeAvailable && this.invalidMeridiemEmitted) {
74
- this.invalidMeridiemEmitted = false;
75
- }
76
- this.invalidSelection.emit(!isSelectedTimeAvailable);
77
- }
78
- calculateAngule() {
79
- this.angle = this.getPointerAngle(this.formattedValue, this.viewType);
80
- }
81
- setNumbers() {
82
- if (this.viewType === 'hours') {
83
- // if (this.mode === '12h') {
84
- // const meridiem : string = this.isPm ? 'pm' : 'am';
85
- // const isAllowedFn = this.allowed12HourMap ? (num : number) => this.allowed12HourMap[meridiem][num + 1][0] : undefined;
86
- // this.numbers = this.getNumbers(12, { size: 256 }, isAllowedFn);
87
- // this.secondaryNumbers = [];
88
- // this.minuteDots = [];
89
- // } else if (this.mode === '24h') {
90
- const isAllowedFn = this.allowed24HourMap
91
- ? (num) => this.allowed24HourMap[num][0]
92
- : undefined;
93
- this.numbers = this.getNumbers(12, { size: 256 }, isAllowedFn);
94
- this.secondaryNumbers = this.getNumbers(12, { size: 256 - 64, start: 13 }, isAllowedFn);
95
- this.minuteDots = [];
96
- //}
97
- }
98
- else {
99
- //const meridiem : string = this.isPm ? 'pm' : 'am';
100
- const isAllowedFn =
101
- // !!this.allowed12HourMap ? (num : number) => this.allowed12HourMap[meridiem][this.formattedHours][num] :
102
- this.allowed24HourMap
103
- ? (num) => this.allowed24HourMap[this.formattedHours][num]
104
- : undefined;
105
- this.numbers = this.getNumbers(12, { size: 256, start: 5, step: 5 }, isAllowedFn);
106
- this.minuteDots = this.getNumbers(60, { size: 256, start: 13 }).map(digit => {
107
- if (digit.display <= 59) {
108
- digit.allowed = isAllowedFn ? isAllowedFn(digit.display) : true;
109
- return digit;
110
- }
111
- digit.display = digit.display - 60;
112
- digit.allowed = isAllowedFn ? isAllowedFn(digit.display) : true;
113
- return digit;
114
- });
115
- this.secondaryNumbers = [];
116
- }
117
- }
118
- disableAnimatedPointer() {
119
- this.touching = true;
120
- }
121
- enableAnimatedPointer() {
122
- this.touching = false;
123
- }
124
- handleTouchEnd(e) {
125
- this.handleTouchMove(e);
126
- this.enableAnimatedPointer();
127
- }
128
- handleMouseMove(e) {
129
- // MouseEvent.which is deprecated, but MouseEvent.buttons is not supported in Safari
130
- if (e.buttons === 1 || e.which === 1) {
131
- const rect = e.target.getBoundingClientRect();
132
- this.movePointer(e.clientX - rect.left, e.clientY - rect.top);
133
- }
134
- }
135
- handleClick(e) {
136
- const rect = e.target.getBoundingClientRect();
137
- this.movePointer(e.clientX - rect.left, e.clientY - rect.top);
138
- }
139
- movePointer(x, y) {
140
- const value = this.getPointerValue(x, y, 256);
141
- if (!this.isAvailable(value)) {
142
- this.unavailableSelection.emit();
143
- return;
144
- }
145
- if (value !== this.formattedValue) {
146
- this.changeEvent.emit({
147
- value,
148
- type: this.viewType !== 'minutes' ? 'hours' : 'minutes',
149
- });
150
- if (this.viewType !== 'minutes') {
151
- if (!this.isAvailable(value)) {
152
- if (this.minDate && this.isAvailable(value)) {
153
- this.changeEvent.emit({
154
- value: this.minDate.getMinutes(),
155
- type: 'minutes',
156
- });
157
- }
158
- else if (this.maxDate && this.isAvailable(value)) {
159
- this.changeEvent.emit({
160
- value: this.maxDate.getMinutes(),
161
- type: 'minutes',
162
- });
163
- }
164
- }
165
- }
166
- }
167
- }
168
- getNumbers(count, { size = 0, start = 1, step = 1 }, isAllowedFn) {
169
- // eslint-disable-next-line
170
- return Array.apply(null, Array(count)).map((_, i) => ({
171
- display: i * step + start,
172
- translateX: (size / 2 - 20) * Math.cos((2 * Math.PI * (i - 2)) / count),
173
- translateY: (size / 2 - 20) * Math.sin((2 * Math.PI * (i - 2)) / count),
174
- allowed: isAllowedFn ? isAllowedFn(i) : true,
175
- }));
176
- }
177
- getPointerAngle(value, _mode) {
178
- if (this.viewType === 'hours') {
179
- return (360 / 12) * ((value % 12) - 3);
180
- }
181
- return (360 / 60) * (value - 15);
182
- }
183
- getPointerValue(x, y, size) {
184
- let value;
185
- let angle = (Math.atan2(size / 2 - x, size / 2 - y) / Math.PI) * 180;
186
- if (angle < 0) {
187
- angle = 360 + angle;
188
- }
189
- if (this.viewType === 'hours') {
190
- const radius = Math.sqrt(Math.pow(size / 2 - x, 2) + Math.pow(size / 2 - y, 2));
191
- value = 12 - Math.round((angle * 12) / 360);
192
- if (value === 0) {
193
- value = 12;
194
- }
195
- if (radius < size / 2 - 32) {
196
- value = value === 12 ? 0 : value + 12;
197
- }
198
- return value;
199
- }
200
- value = Math.round(60 - (60 * angle) / 360);
201
- return value === 60 ? 0 : value;
202
- }
203
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ClockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
204
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ClockComponent, selector: "mat-clock", inputs: { viewType: "viewType", color: "color", formattedValue: "formattedValue", minDate: "minDate", maxDate: "maxDate", formattedHours: "formattedHours", minutes: "minutes", allowed24HourMap: "allowed24HourMap" }, outputs: { changeEvent: "changeEvent", unavailableSelection: "unavailableSelection", invalidSelection: "invalidSelection" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"root\">\n <div\n class=\"circle\"\n tabindex=\"1\"\n (touchmove)=\"handleTouchMove($event)\"\n (mousemove)=\"handleMouseMove($event)\"\n (touchstart)=\"disableAnimatedPointer()\"\n (mousedown)=\"disableAnimatedPointer()\"\n (touchend)=\"handleTouchEnd($event)\"\n (mouseup)=\"enableAnimatedPointer()\"\n (click)=\"handleClick($event)\"\n >\n <div\n class=\"pointer-container\"\n [ngClass]=\"{\n 'small-pointer':\n viewType === 'hours' && (formattedValue === 0 || formattedValue > 12),\n 'animated-pointer': !touching,\n }\"\n [style.transform]=\"'rotate(' + angle + 'deg)'\"\n >\n <button\n aria-disabled=\"true\"\n mat-mini-fab\n [color]=\"color\"\n class=\"inner-dot\"\n aria-label=\"Inner Dot\"\n ></button>\n <mat-toolbar [color]=\"color\" class=\"pointer\">\n <button\n mat-mini-fab\n [color]=\"color\"\n class=\"outer-dot\"\n aria-label=\"Outer dot\"\n [ngClass]=\"{\n 'outer-dot-odd': viewType === 'minutes' && formattedValue % 5 !== 0,\n }\"\n >\n <ng-container\n *ngIf=\"viewType === 'minutes' && formattedValue % 5 !== 0\"\n >\u00B7</ng-container\n >\n </button>\n </mat-toolbar>\n </div>\n <ng-container *ngFor=\"let digit of minuteDots\">\n <button\n mat-mini-fab\n class=\"number minute-dot\"\n [ngClass]=\"{\n selected:\n formattedValue === digit.display ||\n (digit.display === 0 && formattedValue === 0),\n disabled: !isAvailable(digit.display === 60 ? 0 : digit.display),\n }\"\n [style.transform]=\"\n 'translate(' + digit.translateX + 'px, ' + digit.translateY + 'px)'\n \"\n >\n <ng-container *ngIf=\"digit.display % 5 !== 0\">\u00B7</ng-container>\n </button>\n </ng-container>\n <ng-container *ngFor=\"let digit of numbers\">\n <button\n mat-mini-fab\n [color]=\"color\"\n class=\"number\"\n [ngClass]=\"{\n selected:\n formattedValue === digit.display ||\n (digit.display === 60 && formattedValue === 0),\n disabled: !isAvailable(digit.display === 60 ? 0 : digit.display),\n }\"\n [style.transform]=\"\n 'translate(' + digit.translateX + 'px, ' + digit.translateY + 'px)'\n \"\n >\n <ng-template #hoursTemplate>{{ digit.display }}</ng-template>\n <ng-template #minutesTemplate>{{\n digit.display === 60 ? '00' : digit.display\n }}</ng-template>\n <ng-container\n *ngIf=\"\n viewType === 'minutes';\n then minutesTemplate;\n else hoursTemplate\n \"\n ></ng-container>\n </button>\n </ng-container>\n <ng-container *ngFor=\"let digit of secondaryNumbers\">\n <button\n mat-mini-fab\n [color]=\"color\"\n class=\"number small-number\"\n [ngClass]=\"{\n selected:\n formattedValue === digit.display ||\n (digit.display === 24 && formattedValue === 0),\n disabled: !isAvailable(digit.display === 24 ? 0 : digit.display),\n }\"\n [style.transform]=\"\n 'translate(' + digit.translateX + 'px, ' + digit.translateY + 'px)'\n \"\n >\n {{ digit.display === 24 ? '00' : digit.display }}\n </button>\n </ng-container>\n </div>\n</div>\n", styles: [".root{width:256px;height:256px;cursor:default}.circle{width:256px;height:256px;border-radius:50%;position:relative;background:#ededed;cursor:pointer}.mat-mdc-mini-fab.number{width:32px;height:32px;left:calc(50% - 16px);top:calc(50% - 16px);position:absolute;text-align:center;line-height:32px;cursor:pointer;font-size:14px;pointer-events:none;-webkit-user-select:none;user-select:none;display:flex;align-items:center;justify-content:center;flex-direction:column;background-color:transparent;box-shadow:none}.mat-mdc-mini-fab.number.disabled{color:#0101011a}.mat-mdc-mini-fab.number:not(.selected):not(.disabled){color:#000000de}.mat-mdc-mini-fab.number:not(.disabled).minute-dot{color:#010101b3}.mat-mdc-mini-fab.number:not(.disabled).minute-dot.selected{color:transparent}.small-number{font-size:12px}.small-number:not(.selected):not(.disabled){color:#000000ab}.pointer-container{width:calc(50% - 20px);height:2;position:absolute;left:50%;top:calc(50% - 1px);transform-origin:left center;pointer-events:none}.pointer-container.disabled *{background-color:transparent}.pointer{height:1px}.animated-pointer{transition:all .2s ease-out}.pointer-container.small-pointer{width:calc(50% - 52px)}.pointer-container.small-pointer mat-toolbar{padding:0 16px}.pointer-container mat-toolbar{padding:0 54px}.inner-dot{position:absolute;top:-3px;left:-4px;width:8px;height:8px;border-radius:50%;box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.outer-dot{width:32px;height:32px;position:absolute;right:-16px;box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f;border-radius:50%;box-sizing:content-box}.outer-dot-odd{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f;width:32px;height:32px;display:flex;align-items:center;justify-content:center;flex-direction:column}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatMiniFabButton, selector: "button[mat-mini-fab]", exportAs: ["matButton"] }, { kind: "component", type: i3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
205
- }
206
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ClockComponent, decorators: [{
207
- type: Component,
208
- args: [{ selector: 'mat-clock', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"root\">\n <div\n class=\"circle\"\n tabindex=\"1\"\n (touchmove)=\"handleTouchMove($event)\"\n (mousemove)=\"handleMouseMove($event)\"\n (touchstart)=\"disableAnimatedPointer()\"\n (mousedown)=\"disableAnimatedPointer()\"\n (touchend)=\"handleTouchEnd($event)\"\n (mouseup)=\"enableAnimatedPointer()\"\n (click)=\"handleClick($event)\"\n >\n <div\n class=\"pointer-container\"\n [ngClass]=\"{\n 'small-pointer':\n viewType === 'hours' && (formattedValue === 0 || formattedValue > 12),\n 'animated-pointer': !touching,\n }\"\n [style.transform]=\"'rotate(' + angle + 'deg)'\"\n >\n <button\n aria-disabled=\"true\"\n mat-mini-fab\n [color]=\"color\"\n class=\"inner-dot\"\n aria-label=\"Inner Dot\"\n ></button>\n <mat-toolbar [color]=\"color\" class=\"pointer\">\n <button\n mat-mini-fab\n [color]=\"color\"\n class=\"outer-dot\"\n aria-label=\"Outer dot\"\n [ngClass]=\"{\n 'outer-dot-odd': viewType === 'minutes' && formattedValue % 5 !== 0,\n }\"\n >\n <ng-container\n *ngIf=\"viewType === 'minutes' && formattedValue % 5 !== 0\"\n >\u00B7</ng-container\n >\n </button>\n </mat-toolbar>\n </div>\n <ng-container *ngFor=\"let digit of minuteDots\">\n <button\n mat-mini-fab\n class=\"number minute-dot\"\n [ngClass]=\"{\n selected:\n formattedValue === digit.display ||\n (digit.display === 0 && formattedValue === 0),\n disabled: !isAvailable(digit.display === 60 ? 0 : digit.display),\n }\"\n [style.transform]=\"\n 'translate(' + digit.translateX + 'px, ' + digit.translateY + 'px)'\n \"\n >\n <ng-container *ngIf=\"digit.display % 5 !== 0\">\u00B7</ng-container>\n </button>\n </ng-container>\n <ng-container *ngFor=\"let digit of numbers\">\n <button\n mat-mini-fab\n [color]=\"color\"\n class=\"number\"\n [ngClass]=\"{\n selected:\n formattedValue === digit.display ||\n (digit.display === 60 && formattedValue === 0),\n disabled: !isAvailable(digit.display === 60 ? 0 : digit.display),\n }\"\n [style.transform]=\"\n 'translate(' + digit.translateX + 'px, ' + digit.translateY + 'px)'\n \"\n >\n <ng-template #hoursTemplate>{{ digit.display }}</ng-template>\n <ng-template #minutesTemplate>{{\n digit.display === 60 ? '00' : digit.display\n }}</ng-template>\n <ng-container\n *ngIf=\"\n viewType === 'minutes';\n then minutesTemplate;\n else hoursTemplate\n \"\n ></ng-container>\n </button>\n </ng-container>\n <ng-container *ngFor=\"let digit of secondaryNumbers\">\n <button\n mat-mini-fab\n [color]=\"color\"\n class=\"number small-number\"\n [ngClass]=\"{\n selected:\n formattedValue === digit.display ||\n (digit.display === 24 && formattedValue === 0),\n disabled: !isAvailable(digit.display === 24 ? 0 : digit.display),\n }\"\n [style.transform]=\"\n 'translate(' + digit.translateX + 'px, ' + digit.translateY + 'px)'\n \"\n >\n {{ digit.display === 24 ? '00' : digit.display }}\n </button>\n </ng-container>\n </div>\n</div>\n", styles: [".root{width:256px;height:256px;cursor:default}.circle{width:256px;height:256px;border-radius:50%;position:relative;background:#ededed;cursor:pointer}.mat-mdc-mini-fab.number{width:32px;height:32px;left:calc(50% - 16px);top:calc(50% - 16px);position:absolute;text-align:center;line-height:32px;cursor:pointer;font-size:14px;pointer-events:none;-webkit-user-select:none;user-select:none;display:flex;align-items:center;justify-content:center;flex-direction:column;background-color:transparent;box-shadow:none}.mat-mdc-mini-fab.number.disabled{color:#0101011a}.mat-mdc-mini-fab.number:not(.selected):not(.disabled){color:#000000de}.mat-mdc-mini-fab.number:not(.disabled).minute-dot{color:#010101b3}.mat-mdc-mini-fab.number:not(.disabled).minute-dot.selected{color:transparent}.small-number{font-size:12px}.small-number:not(.selected):not(.disabled){color:#000000ab}.pointer-container{width:calc(50% - 20px);height:2;position:absolute;left:50%;top:calc(50% - 1px);transform-origin:left center;pointer-events:none}.pointer-container.disabled *{background-color:transparent}.pointer{height:1px}.animated-pointer{transition:all .2s ease-out}.pointer-container.small-pointer{width:calc(50% - 52px)}.pointer-container.small-pointer mat-toolbar{padding:0 16px}.pointer-container mat-toolbar{padding:0 54px}.inner-dot{position:absolute;top:-3px;left:-4px;width:8px;height:8px;border-radius:50%;box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.outer-dot{width:32px;height:32px;position:absolute;right:-16px;box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f;border-radius:50%;box-sizing:content-box}.outer-dot-odd{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f;width:32px;height:32px;display:flex;align-items:center;justify-content:center;flex-direction:column}\n"] }]
209
- }], propDecorators: { viewType: [{
210
- type: Input
211
- }], color: [{
212
- type: Input
213
- }], formattedValue: [{
214
- type: Input
215
- }], minDate: [{
216
- type: Input
217
- }], maxDate: [{
218
- type: Input
219
- }], formattedHours: [{
220
- type: Input
221
- }], minutes: [{
222
- type: Input
223
- }], changeEvent: [{
224
- type: Output
225
- }], unavailableSelection: [{
226
- type: Output
227
- }], invalidSelection: [{
228
- type: Output
229
- }], allowed24HourMap: [{
230
- type: Input
231
- }] } });
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvY2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL21hdC10aW1lcGlja2VyL3NyYy9jbG9jay9jbG9jay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LXRpbWVwaWNrZXIvc3JjL2Nsb2NrL2Nsb2NrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBR1osdUJBQXVCLEdBQ3hCLE1BQU0sZUFBZSxDQUFDO0FBTXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxTQUFTLENBQUM7Ozs7O0FBUzFDLE1BQU0sT0FBTyxjQUFjO0lBTjNCO1FBT1csYUFBUSxHQUFrQixPQUFPLENBQUM7UUFDbEMsVUFBSyxHQUFpQixTQUFTLENBQUM7UUFDaEMsbUJBQWMsR0FBRyxDQUFDLENBQUM7UUFHbkIsbUJBQWMsR0FBRyxDQUFDLENBQUM7UUFFbEIsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN6RCx5QkFBb0IsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNsRSxxQkFBZ0IsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUl4RSw0QkFBdUIsR0FBRyxJQUFJLENBQUM7UUFJL0IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQixZQUFPLEdBQWtCLEVBQUUsQ0FBQztRQUM1QixxQkFBZ0IsR0FBa0IsRUFBRSxDQUFDO1FBQ3JDLGVBQVUsR0FBa0IsRUFBRSxDQUFDO1FBQy9CLDJCQUFzQixHQUFHLElBQUksQ0FBQztRQThIOUIsb0JBQWUsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFO1lBQzNCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLDRDQUE0QztZQUNoRSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDOUMsSUFBSSxDQUFDLFdBQVcsQ0FDZCxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUN2QyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUN2QyxDQUFDO1FBQ0osQ0FBQyxDQUFDO0tBOEZIO0lBak9DLGVBQWU7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDM0IsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWE7UUFDdkIsT0FBTyxJQUFJLENBQUMsYUFBYTtZQUN2QixDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQy9ELENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDWCxDQUFDO0lBRUQsV0FBVyxDQUFDLGFBQTRCO1FBQ3RDLElBQ0UsYUFBYSxDQUFDLGtCQUFrQixDQUFDO1lBQ2pDLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUM3RCxDQUFDO1lBQ0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLENBQUM7UUFFRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWxCLElBQUksYUFBYSxDQUFDLGdCQUFnQixDQUFDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDN0QsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7UUFFRCxNQUFNLHVCQUF1QixHQUFHLElBQUksQ0FBQyxhQUFhO1lBQ2hELENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUM7WUFDekUsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUVULElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3RELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FDNUMsSUFBSSxDQUFDLE9BQU8sRUFDWixTQUFTLEVBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FDcEIsQ0FBQztZQUNGLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUN6QixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQzdELFVBQVUsQ0FBQyxHQUFHLEVBQUU7d0JBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7NEJBQ3BCLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRTs0QkFDaEMsSUFBSSxFQUFFLFNBQVM7eUJBQ2hCLENBQUMsQ0FBQztvQkFDTCxDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sVUFBVSxDQUFDLEdBQUcsRUFBRTt3QkFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQzs0QkFDcEIsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFOzRCQUNoQyxJQUFJLEVBQUUsU0FBUzt5QkFDaEIsQ0FBQyxDQUFDO29CQUNMLENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksdUJBQXVCLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDM0QsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztRQUN0QyxDQUFDO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDOUIsNkJBQTZCO1lBQzdCLHVEQUF1RDtZQUN2RCwySEFBMkg7WUFDM0gsb0VBQW9FO1lBQ3BFLGdDQUFnQztZQUNoQywwQkFBMEI7WUFDMUIsb0NBQW9DO1lBQ3BDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0I7Z0JBQ3ZDLENBQUMsQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDaEQsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNkLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDL0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQ3JDLEVBQUUsRUFDRixFQUFFLElBQUksRUFBRSxHQUFHLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFDN0IsV0FBVyxDQUNaLENBQUM7WUFDRixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUNyQixHQUFHO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDTixvREFBb0Q7WUFDcEQsTUFBTSxXQUFXO1lBQ2YsMEdBQTBHO1lBQzFHLElBQUksQ0FBQyxnQkFBZ0I7Z0JBQ25CLENBQUMsQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxHQUFHLENBQUM7Z0JBQ2xFLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFFaEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUM1QixFQUFFLEVBQ0YsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUNoQyxXQUFXLENBQ1osQ0FBQztZQUNGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FDakUsS0FBSyxDQUFDLEVBQUU7Z0JBQ04sSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDO29CQUN4QixLQUFLLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO29CQUNoRSxPQUFPLEtBQUssQ0FBQztnQkFDZixDQUFDO2dCQUNELEtBQUssQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQ25DLEtBQUssQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ2hFLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQyxDQUNGLENBQUM7WUFDRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQVdELGNBQWMsQ0FBQyxDQUFNO1FBQ25CLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELGVBQWUsQ0FBQyxDQUFNO1FBQ3BCLG9GQUFvRjtRQUNwRixJQUFJLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLENBQU07UUFDaEIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxXQUFXLENBQUMsQ0FBUyxFQUFFLENBQVM7UUFDOUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pDLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO2dCQUNwQixLQUFLO2dCQUNMLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTO2FBQ3hELENBQUMsQ0FBQztZQUNILElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDN0IsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQzt3QkFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7NEJBQ3BCLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRTs0QkFDaEMsSUFBSSxFQUFFLFNBQVM7eUJBQ2hCLENBQUMsQ0FBQztvQkFDTCxDQUFDO3lCQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQ25ELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDOzRCQUNwQixLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUU7NEJBQ2hDLElBQUksRUFBRSxTQUFTO3lCQUNoQixDQUFDLENBQUM7b0JBQ0wsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUNSLEtBQWEsRUFDYixFQUFFLElBQUksR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQ2pDLFdBQXNDO1FBRXRDLDJCQUEyQjtRQUMzQixPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDcEQsT0FBTyxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsS0FBSztZQUN6QixVQUFVLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUN2RSxVQUFVLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUN2RSxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7U0FDN0MsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWEsRUFBRSxLQUFvQjtRQUNqRCxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDOUIsT0FBTyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFDRCxPQUFPLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxlQUFlLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxJQUFZO1FBQ2hELElBQUksS0FBSyxDQUFDO1FBQ1YsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNyRSxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNkLEtBQUssR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDOUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FDdEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUN0RCxDQUFDO1lBQ0YsS0FBSyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQzVDLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNoQixLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ2IsQ0FBQztZQUNELElBQUksTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQzNCLEtBQUssR0FBRyxLQUFLLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDeEMsQ0FBQztZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUM1QyxPQUFPLEtBQUssS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ2xDLENBQUM7K0dBelBVLGNBQWM7bUdBQWQsY0FBYywyWkN2QjNCLGdnSEE4R0E7OzRGRHZGYSxjQUFjO2tCQU4xQixTQUFTOytCQUNFLFdBQVcsbUJBR0osdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFFRSxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDbG9ja1ZpZXdUeXBlLFxuICBDbG9ja051bWJlcixcbiAgSUFsbG93ZWQyNEhvdXJNYXAsXG59IGZyb20gJy4uL2ludGVyZmFjZXMtYW5kLXR5cGVzJztcbmltcG9ydCB7IGdldElzQXZhaWxhYmVGbiB9IGZyb20gJy4uL3V0aWwnO1xuaW1wb3J0IHsgVGhlbWVQYWxldHRlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hdC1jbG9jaycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jbG9jay5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nsb2NrLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDbG9ja0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHZpZXdUeXBlOiBDbG9ja1ZpZXdUeXBlID0gJ2hvdXJzJztcbiAgQElucHV0KCkgY29sb3I6IFRoZW1lUGFsZXR0ZSA9ICdwcmltYXJ5JztcbiAgQElucHV0KCkgZm9ybWF0dGVkVmFsdWUgPSAwO1xuICBASW5wdXQoKSBtaW5EYXRlITogRGF0ZTtcbiAgQElucHV0KCkgbWF4RGF0ZSE6IERhdGU7XG4gIEBJbnB1dCgpIGZvcm1hdHRlZEhvdXJzID0gMDtcbiAgQElucHV0KCkgbWludXRlcyE6IG51bWJlcjtcbiAgQE91dHB1dCgpIGNoYW5nZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgdW5hdmFpbGFibGVTZWxlY3Rpb246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBpbnZhbGlkU2VsZWN0aW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBJbnB1dCgpIGFsbG93ZWQyNEhvdXJNYXAhOiBJQWxsb3dlZDI0SG91ck1hcDtcblxuICBpc0Zvcm1hdHRlZFZhbHVlQWxsb3dlZCA9IHRydWU7XG5cbiAgaXNBdmFpbGFibGVGbj86IFJldHVyblR5cGU8dHlwZW9mIGdldElzQXZhaWxhYmVGbj47XG5cbiAgdG91Y2hpbmcgPSBmYWxzZTtcbiAgYW5nbGU/OiBudW1iZXI7XG4gIG51bWJlcnM6IENsb2NrTnVtYmVyW10gPSBbXTtcbiAgc2Vjb25kYXJ5TnVtYmVyczogQ2xvY2tOdW1iZXJbXSA9IFtdO1xuICBtaW51dGVEb3RzOiBDbG9ja051bWJlcltdID0gW107XG4gIGludmFsaWRNZXJpZGllbUVtaXR0ZWQgPSB0cnVlO1xuXG4gIGluaXRJc0FsbG93ZWRGbigpIHtcbiAgICBpZiAoIXRoaXMuYWxsb3dlZDI0SG91ck1hcCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlzQXZhaWxhYmxlRm4gPSBnZXRJc0F2YWlsYWJlRm4odGhpcy5hbGxvd2VkMjRIb3VyTWFwKTtcbiAgfVxuXG4gIGlzQXZhaWxhYmxlKHZhbHVlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5pc0F2YWlsYWJsZUZuXG4gICAgICA/IHRoaXMuaXNBdmFpbGFibGVGbih2YWx1ZSwgdGhpcy52aWV3VHlwZSwgdGhpcy5mb3JtYXR0ZWRIb3VycylcbiAgICAgIDogdHJ1ZTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKHNpbXBsZUNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoXG4gICAgICBzaW1wbGVDaGFuZ2VzWydhbGxvd2VkMjRIb3VyTWFwJ10gfHxcbiAgICAgIChzaW1wbGVDaGFuZ2VzWydtb2RlJ10gJiYgIXNpbXBsZUNoYW5nZXNbJ21vZGUnXS5maXJzdENoYW5nZSlcbiAgICApIHtcbiAgICAgIHRoaXMuaW5pdElzQWxsb3dlZEZuKCk7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxjdWxhdGVBbmd1bGUoKTtcbiAgICB0aGlzLnNldE51bWJlcnMoKTtcblxuICAgIGlmIChzaW1wbGVDaGFuZ2VzWydmb3JtYXR0ZWRWYWx1ZSddICYmIHRoaXMuYWxsb3dlZDI0SG91ck1hcCkge1xuICAgICAgdGhpcy5pc0Zvcm1hdHRlZFZhbHVlQWxsb3dlZCA9IHRoaXMuaXNBdmFpbGFibGUodGhpcy5mb3JtYXR0ZWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgaXNTZWxlY3RlZFRpbWVBdmFpbGFibGUgPSB0aGlzLmlzQXZhaWxhYmxlRm5cbiAgICAgID8gdGhpcy5pc0F2YWlsYWJsZUZuKHRoaXMuZm9ybWF0dGVkVmFsdWUsICdtaW51dGVzJywgdGhpcy5mb3JtYXR0ZWRIb3VycylcbiAgICAgIDogdHJ1ZTtcblxuICAgIGlmICh0aGlzLnZpZXdUeXBlID09PSAnbWludXRlcycgJiYgdGhpcy5pc0F2YWlsYWJsZUZuKSB7XG4gICAgICBjb25zdCBhcmVNaW5pdGVzQXZhaWxhYmxlID0gdGhpcy5pc0F2YWlsYWJsZUZuKFxuICAgICAgICB0aGlzLm1pbnV0ZXMsXG4gICAgICAgICdtaW51dGVzJyxcbiAgICAgICAgdGhpcy5mb3JtYXR0ZWRIb3VycyxcbiAgICAgICk7XG4gICAgICBpZiAoIWFyZU1pbml0ZXNBdmFpbGFibGUpIHtcbiAgICAgICAgaWYgKHRoaXMubWluRGF0ZSAmJiB0aGlzLm1pbkRhdGUuZ2V0TWludXRlcygpID4gdGhpcy5taW51dGVzKSB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5taW5EYXRlLmdldE1pbnV0ZXMoKSxcbiAgICAgICAgICAgICAgdHlwZTogJ21pbnV0ZXMnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5tYXhEYXRlLmdldE1pbnV0ZXMoKSxcbiAgICAgICAgICAgICAgdHlwZTogJ21pbnV0ZXMnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNTZWxlY3RlZFRpbWVBdmFpbGFibGUgJiYgdGhpcy5pbnZhbGlkTWVyaWRpZW1FbWl0dGVkKSB7XG4gICAgICB0aGlzLmludmFsaWRNZXJpZGllbUVtaXR0ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLmludmFsaWRTZWxlY3Rpb24uZW1pdCghaXNTZWxlY3RlZFRpbWVBdmFpbGFibGUpO1xuICB9XG5cbiAgY2FsY3VsYXRlQW5ndWxlKCkge1xuICAgIHRoaXMuYW5nbGUgPSB0aGlzLmdldFBvaW50ZXJBbmdsZSh0aGlzLmZvcm1hdHRlZFZhbHVlLCB0aGlzLnZpZXdUeXBlKTtcbiAgfVxuXG4gIHNldE51bWJlcnMoKSB7XG4gICAgaWYgKHRoaXMudmlld1R5cGUgPT09ICdob3VycycpIHtcbiAgICAgIC8vIGlmICh0aGlzLm1vZGUgPT09ICcxMmgnKSB7XG4gICAgICAvLyAgIGNvbnN0IG1lcmlkaWVtIDogc3RyaW5nID0gdGhpcy5pc1BtID8gJ3BtJyA6ICdhbSc7XG4gICAgICAvLyAgIGNvbnN0IGlzQWxsb3dlZEZuID0gdGhpcy5hbGxvd2VkMTJIb3VyTWFwID8gKG51bSA6IG51bWJlcikgPT4gdGhpcy5hbGxvd2VkMTJIb3VyTWFwW21lcmlkaWVtXVtudW0gKyAxXVswXSA6IHVuZGVmaW5lZDtcbiAgICAgIC8vICAgdGhpcy5udW1iZXJzID0gdGhpcy5nZXROdW1iZXJzKDEyLCB7IHNpemU6IDI1NiB9LCBpc0FsbG93ZWRGbik7XG4gICAgICAvLyAgIHRoaXMuc2Vjb25kYXJ5TnVtYmVycyA9IFtdO1xuICAgICAgLy8gICB0aGlzLm1pbnV0ZURvdHMgPSBbXTtcbiAgICAgIC8vIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSAnMjRoJykge1xuICAgICAgY29uc3QgaXNBbGxvd2VkRm4gPSB0aGlzLmFsbG93ZWQyNEhvdXJNYXBcbiAgICAgICAgPyAobnVtOiBudW1iZXIpID0+IHRoaXMuYWxsb3dlZDI0SG91ck1hcFtudW1dWzBdXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgdGhpcy5udW1iZXJzID0gdGhpcy5nZXROdW1iZXJzKDEyLCB7IHNpemU6IDI1NiB9LCBpc0FsbG93ZWRGbik7XG4gICAgICB0aGlzLnNlY29uZGFyeU51bWJlcnMgPSB0aGlzLmdldE51bWJlcnMoXG4gICAgICAgIDEyLFxuICAgICAgICB7IHNpemU6IDI1NiAtIDY0LCBzdGFydDogMTMgfSxcbiAgICAgICAgaXNBbGxvd2VkRm4sXG4gICAgICApO1xuICAgICAgdGhpcy5taW51dGVEb3RzID0gW107XG4gICAgICAvL31cbiAgICB9IGVsc2Uge1xuICAgICAgLy9jb25zdCBtZXJpZGllbSA6IHN0cmluZyA9IHRoaXMuaXNQbSA/ICdwbScgOiAnYW0nO1xuICAgICAgY29uc3QgaXNBbGxvd2VkRm4gPVxuICAgICAgICAvLyAhIXRoaXMuYWxsb3dlZDEySG91ck1hcCA/IChudW0gOiBudW1iZXIpID0+IHRoaXMuYWxsb3dlZDEySG91ck1hcFttZXJpZGllbV1bdGhpcy5mb3JtYXR0ZWRIb3Vyc11bbnVtXSA6XG4gICAgICAgIHRoaXMuYWxsb3dlZDI0SG91ck1hcFxuICAgICAgICAgID8gKG51bTogbnVtYmVyKSA9PiB0aGlzLmFsbG93ZWQyNEhvdXJNYXBbdGhpcy5mb3JtYXR0ZWRIb3Vyc11bbnVtXVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLm51bWJlcnMgPSB0aGlzLmdldE51bWJlcnMoXG4gICAgICAgIDEyLFxuICAgICAgICB7IHNpemU6IDI1Niwgc3RhcnQ6IDUsIHN0ZXA6IDUgfSxcbiAgICAgICAgaXNBbGxvd2VkRm4sXG4gICAgICApO1xuICAgICAgdGhpcy5taW51dGVEb3RzID0gdGhpcy5nZXROdW1iZXJzKDYwLCB7IHNpemU6IDI1Niwgc3RhcnQ6IDEzIH0pLm1hcChcbiAgICAgICAgZGlnaXQgPT4ge1xuICAgICAgICAgIGlmIChkaWdpdC5kaXNwbGF5IDw9IDU5KSB7XG4gICAgICAgICAgICBkaWdpdC5hbGxvd2VkID0gaXNBbGxvd2VkRm4gPyBpc0FsbG93ZWRGbihkaWdpdC5kaXNwbGF5KSA6IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gZGlnaXQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRpZ2l0LmRpc3BsYXkgPSBkaWdpdC5kaXNwbGF5IC0gNjA7XG4gICAgICAgICAgZGlnaXQuYWxsb3dlZCA9IGlzQWxsb3dlZEZuID8gaXNBbGxvd2VkRm4oZGlnaXQuZGlzcGxheSkgOiB0cnVlO1xuICAgICAgICAgIHJldHVybiBkaWdpdDtcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgICB0aGlzLnNlY29uZGFyeU51bWJlcnMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBkaXNhYmxlQW5pbWF0ZWRQb2ludGVyKCkge1xuICAgIHRoaXMudG91Y2hpbmcgPSB0cnVlO1xuICB9XG5cbiAgZW5hYmxlQW5pbWF0ZWRQb2ludGVyKCkge1xuICAgIHRoaXMudG91Y2hpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIGhhbmRsZVRvdWNoTW92ZSA9IChlOiBhbnkpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7IC8vIHByZXZlbnQgc2Nyb2xsaW5nIGJlaGluZCB0aGUgY2xvY2sgb24gaU9TXG4gICAgY29uc3QgcmVjdCA9IGUudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHRoaXMubW92ZVBvaW50ZXIoXG4gICAgICBlLmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFggLSByZWN0LmxlZnQsXG4gICAgICBlLmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFkgLSByZWN0LnRvcCxcbiAgICApO1xuICB9O1xuXG4gIGhhbmRsZVRvdWNoRW5kKGU6IGFueSkge1xuICAgIHRoaXMuaGFuZGxlVG91Y2hNb3ZlKGUpO1xuICAgIHRoaXMuZW5hYmxlQW5pbWF0ZWRQb2ludGVyKCk7XG4gIH1cblxuICBoYW5kbGVNb3VzZU1vdmUoZTogYW55KSB7XG4gICAgLy8gTW91c2VFdmVudC53aGljaCBpcyBkZXByZWNhdGVkLCBidXQgTW91c2VFdmVudC5idXR0b25zIGlzIG5vdCBzdXBwb3J0ZWQgaW4gU2FmYXJpXG4gICAgaWYgKGUuYnV0dG9ucyA9PT0gMSB8fCBlLndoaWNoID09PSAxKSB7XG4gICAgICBjb25zdCByZWN0ID0gZS50YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICB0aGlzLm1vdmVQb2ludGVyKGUuY2xpZW50WCAtIHJlY3QubGVmdCwgZS5jbGllbnRZIC0gcmVjdC50b3ApO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNsaWNrKGU6IGFueSkge1xuICAgIGNvbnN0IHJlY3QgPSBlLnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICB0aGlzLm1vdmVQb2ludGVyKGUuY2xpZW50WCAtIHJlY3QubGVmdCwgZS5jbGllbnRZIC0gcmVjdC50b3ApO1xuICB9XG5cbiAgbW92ZVBvaW50ZXIoeDogbnVtYmVyLCB5OiBudW1iZXIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0UG9pbnRlclZhbHVlKHgsIHksIDI1Nik7XG4gICAgaWYgKCF0aGlzLmlzQXZhaWxhYmxlKHZhbHVlKSkge1xuICAgICAgdGhpcy51bmF2YWlsYWJsZVNlbGVjdGlvbi5lbWl0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5mb3JtYXR0ZWRWYWx1ZSkge1xuICAgICAgdGhpcy5jaGFuZ2VFdmVudC5lbWl0KHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHR5cGU6IHRoaXMudmlld1R5cGUgIT09ICdtaW51dGVzJyA/ICdob3VycycgOiAnbWludXRlcycsXG4gICAgICB9KTtcbiAgICAgIGlmICh0aGlzLnZpZXdUeXBlICE9PSAnbWludXRlcycpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzQXZhaWxhYmxlKHZhbHVlKSkge1xuICAgICAgICAgIGlmICh0aGlzLm1pbkRhdGUgJiYgdGhpcy5pc0F2YWlsYWJsZSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICAgIHZhbHVlOiB0aGlzLm1pbkRhdGUuZ2V0TWludXRlcygpLFxuICAgICAgICAgICAgICB0eXBlOiAnbWludXRlcycsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubWF4RGF0ZSAmJiB0aGlzLmlzQXZhaWxhYmxlKHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VFdmVudC5lbWl0KHtcbiAgICAgICAgICAgICAgdmFsdWU6IHRoaXMubWF4RGF0ZS5nZXRNaW51dGVzKCksXG4gICAgICAgICAgICAgIHR5cGU6ICdtaW51dGVzJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldE51bWJlcnMoXG4gICAgY291bnQ6IG51bWJlcixcbiAgICB7IHNpemUgPSAwLCBzdGFydCA9IDEsIHN0ZXAgPSAxIH0sXG4gICAgaXNBbGxvd2VkRm4/OiAobnVtOiBudW1iZXIpID0+IGJvb2xlYW4sXG4gICkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIHJldHVybiBBcnJheS5hcHBseShudWxsLCBBcnJheShjb3VudCkpLm1hcCgoXywgaSkgPT4gKHtcbiAgICAgIGRpc3BsYXk6IGkgKiBzdGVwICsgc3RhcnQsXG4gICAgICB0cmFuc2xhdGVYOiAoc2l6ZSAvIDIgLSAyMCkgKiBNYXRoLmNvcygoMiAqIE1hdGguUEkgKiAoaSAtIDIpKSAvIGNvdW50KSxcbiAgICAgIHRyYW5zbGF0ZVk6IChzaXplIC8gMiAtIDIwKSAqIE1hdGguc2luKCgyICogTWF0aC5QSSAqIChpIC0gMikpIC8gY291bnQpLFxuICAgICAgYWxsb3dlZDogaXNBbGxvd2VkRm4gPyBpc0FsbG93ZWRGbihpKSA6IHRydWUsXG4gICAgfSkpO1xuICB9XG5cbiAgZ2V0UG9pbnRlckFuZ2xlKHZhbHVlOiBudW1iZXIsIF9tb2RlOiBDbG9ja1ZpZXdUeXBlKSB7XG4gICAgaWYgKHRoaXMudmlld1R5cGUgPT09ICdob3VycycpIHtcbiAgICAgIHJldHVybiAoMzYwIC8gMTIpICogKCh2YWx1ZSAlIDEyKSAtIDMpO1xuICAgIH1cbiAgICByZXR1cm4gKDM2MCAvIDYwKSAqICh2YWx1ZSAtIDE1KTtcbiAgfVxuXG4gIGdldFBvaW50ZXJWYWx1ZSh4OiBudW1iZXIsIHk6IG51bWJlciwgc2l6ZTogbnVtYmVyKSB7XG4gICAgbGV0IHZhbHVlO1xuICAgIGxldCBhbmdsZSA9IChNYXRoLmF0YW4yKHNpemUgLyAyIC0geCwgc2l6ZSAvIDIgLSB5KSAvIE1hdGguUEkpICogMTgwO1xuICAgIGlmIChhbmdsZSA8IDApIHtcbiAgICAgIGFuZ2xlID0gMzYwICsgYW5nbGU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudmlld1R5cGUgPT09ICdob3VycycpIHtcbiAgICAgIGNvbnN0IHJhZGl1cyA9IE1hdGguc3FydChcbiAgICAgICAgTWF0aC5wb3coc2l6ZSAvIDIgLSB4LCAyKSArIE1hdGgucG93KHNpemUgLyAyIC0geSwgMiksXG4gICAgICApO1xuICAgICAgdmFsdWUgPSAxMiAtIE1hdGgucm91bmQoKGFuZ2xlICogMTIpIC8gMzYwKTtcbiAgICAgIGlmICh2YWx1ZSA9PT0gMCkge1xuICAgICAgICB2YWx1ZSA9IDEyO1xuICAgICAgfVxuICAgICAgaWYgKHJhZGl1cyA8IHNpemUgLyAyIC0gMzIpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZSA9PT0gMTIgPyAwIDogdmFsdWUgKyAxMjtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICB2YWx1ZSA9IE1hdGgucm91bmQoNjAgLSAoNjAgKiBhbmdsZSkgLyAzNjApO1xuICAgIHJldHVybiB2YWx1ZSA9PT0gNjAgPyAwIDogdmFsdWU7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJyb290XCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImNpcmNsZVwiXG4gICAgdGFiaW5kZXg9XCIxXCJcbiAgICAodG91Y2htb3ZlKT1cImhhbmRsZVRvdWNoTW92ZSgkZXZlbnQpXCJcbiAgICAobW91c2Vtb3ZlKT1cImhhbmRsZU1vdXNlTW92ZSgkZXZlbnQpXCJcbiAgICAodG91Y2hzdGFydCk9XCJkaXNhYmxlQW5pbWF0ZWRQb2ludGVyKClcIlxuICAgIChtb3VzZWRvd24pPVwiZGlzYWJsZUFuaW1hdGVkUG9pbnRlcigpXCJcbiAgICAodG91Y2hlbmQpPVwiaGFuZGxlVG91Y2hFbmQoJGV2ZW50KVwiXG4gICAgKG1vdXNldXApPVwiZW5hYmxlQW5pbWF0ZWRQb2ludGVyKClcIlxuICAgIChjbGljayk9XCJoYW5kbGVDbGljaygkZXZlbnQpXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicG9pbnRlci1jb250YWluZXJcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnc21hbGwtcG9pbnRlcic6XG4gICAgICAgICAgdmlld1R5cGUgPT09ICdob3VycycgJiYgKGZvcm1hdHRlZFZhbHVlID09PSAwIHx8IGZvcm1hdHRlZFZhbHVlID4gMTIpLFxuICAgICAgICAnYW5pbWF0ZWQtcG9pbnRlcic6ICF0b3VjaGluZyxcbiAgICAgIH1cIlxuICAgICAgW3N0eWxlLnRyYW5zZm9ybV09XCIncm90YXRlKCcgKyBhbmdsZSArICdkZWcpJ1wiXG4gICAgPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBhcmlhLWRpc2FibGVkPVwidHJ1ZVwiXG4gICAgICAgIG1hdC1taW5pLWZhYlxuICAgICAgICBbY29sb3JdPVwiY29sb3JcIlxuICAgICAgICBjbGFzcz1cImlubmVyLWRvdFwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJJbm5lciBEb3RcIlxuICAgICAgPjwvYnV0dG9uPlxuICAgICAgPG1hdC10b29sYmFyIFtjb2xvcl09XCJjb2xvclwiIGNsYXNzPVwicG9pbnRlclwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgbWF0LW1pbmktZmFiXG4gICAgICAgICAgW2NvbG9yXT1cImNvbG9yXCJcbiAgICAgICAgICBjbGFzcz1cIm91dGVyLWRvdFwiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIk91dGVyIGRvdFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ291dGVyLWRvdC1vZGQnOiB2aWV3VHlwZSA9PT0gJ21pbnV0ZXMnICYmIGZvcm1hdHRlZFZhbHVlICUgNSAhPT0gMCxcbiAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwidmlld1R5cGUgPT09ICdtaW51dGVzJyAmJiBmb3JtYXR0ZWRWYWx1ZSAlIDUgIT09IDBcIlxuICAgICAgICAgICAgPsK3PC9uZy1jb250YWluZXJcbiAgICAgICAgICA+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9tYXQtdG9vbGJhcj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkaWdpdCBvZiBtaW51dGVEb3RzXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1taW5pLWZhYlxuICAgICAgICBjbGFzcz1cIm51bWJlciBtaW51dGUtZG90XCJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgIHNlbGVjdGVkOlxuICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWUgPT09IGRpZ2l0LmRpc3BsYXkgfHxcbiAgICAgICAgICAgIChkaWdpdC5kaXNwbGF5ID09PSAwICYmIGZvcm1hdHRlZFZhbHVlID09PSAwKSxcbiAgICAgICAgICBkaXNhYmxlZDogIWlzQXZhaWxhYmxlKGRpZ2l0LmRpc3BsYXkgPT09IDYwID8gMCA6IGRpZ2l0LmRpc3BsYXkpLFxuICAgICAgICB9XCJcbiAgICAgICAgW3N0eWxlLnRyYW5zZm9ybV09XCJcbiAgICAgICAgICAndHJhbnNsYXRlKCcgKyBkaWdpdC50cmFuc2xhdGVYICsgJ3B4LCAnICsgZGlnaXQudHJhbnNsYXRlWSArICdweCknXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaWdpdC5kaXNwbGF5ICUgNSAhPT0gMFwiPsK3PC9uZy1jb250YWluZXI+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkaWdpdCBvZiBudW1iZXJzXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1taW5pLWZhYlxuICAgICAgICBbY29sb3JdPVwiY29sb3JcIlxuICAgICAgICBjbGFzcz1cIm51bWJlclwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICBzZWxlY3RlZDpcbiAgICAgICAgICAgIGZvcm1hdHRlZFZhbHVlID09PSBkaWdpdC5kaXNwbGF5IHx8XG4gICAgICAgICAgICAoZGlnaXQuZGlzcGxheSA9PT0gNjAgJiYgZm9ybWF0dGVkVmFsdWUgPT09IDApLFxuICAgICAgICAgIGRpc2FibGVkOiAhaXNBdmFpbGFibGUoZGlnaXQuZGlzcGxheSA9PT0gNjAgPyAwIDogZGlnaXQuZGlzcGxheSksXG4gICAgICAgIH1cIlxuICAgICAgICBbc3R5bGUudHJhbnNmb3JtXT1cIlxuICAgICAgICAgICd0cmFuc2xhdGUoJyArIGRpZ2l0LnRyYW5zbGF0ZVggKyAncHgsICcgKyBkaWdpdC50cmFuc2xhdGVZICsgJ3B4KSdcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNob3Vyc1RlbXBsYXRlPnt7IGRpZ2l0LmRpc3BsYXkgfX08L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgI21pbnV0ZXNUZW1wbGF0ZT57e1xuICAgICAgICAgIGRpZ2l0LmRpc3BsYXkgPT09IDYwID8gJzAwJyA6IGRpZ2l0LmRpc3BsYXlcbiAgICAgICAgfX08L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIHZpZXdUeXBlID09PSAnbWludXRlcyc7XG4gICAgICAgICAgICB0aGVuIG1pbnV0ZXNUZW1wbGF0ZTtcbiAgICAgICAgICAgIGVsc2UgaG91cnNUZW1wbGF0ZVxuICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRpZ2l0IG9mIHNlY29uZGFyeU51bWJlcnNcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgbWF0LW1pbmktZmFiXG4gICAgICAgIFtjb2xvcl09XCJjb2xvclwiXG4gICAgICAgIGNsYXNzPVwibnVtYmVyIHNtYWxsLW51bWJlclwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICBzZWxlY3RlZDpcbiAgICAgICAgICAgIGZvcm1hdHRlZFZhbHVlID09PSBkaWdpdC5kaXNwbGF5IHx8XG4gICAgICAgICAgICAoZGlnaXQuZGlzcGxheSA9PT0gMjQgJiYgZm9ybWF0dGVkVmFsdWUgPT09IDApLFxuICAgICAgICAgIGRpc2FibGVkOiAhaXNBdmFpbGFibGUoZGlnaXQuZGlzcGxheSA9PT0gMjQgPyAwIDogZGlnaXQuZGlzcGxheSksXG4gICAgICAgIH1cIlxuICAgICAgICBbc3R5bGUudHJhbnNmb3JtXT1cIlxuICAgICAgICAgICd0cmFuc2xhdGUoJyArIGRpZ2l0LnRyYW5zbGF0ZVggKyAncHgsICcgKyBkaWdpdC50cmFuc2xhdGVZICsgJ3B4KSdcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAge3sgZGlnaXQuZGlzcGxheSA9PT0gMjQgPyAnMDAnIDogZGlnaXQuZGlzcGxheSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy1hbmQtdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LXRpbWVwaWNrZXIvc3JjL2ludGVyZmFjZXMtYW5kLXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBDbG9ja1ZpZXdUeXBlID0gJ2hvdXJzJyB8ICdtaW51dGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBDbG9ja051bWJlciB7XG4gIGRpc3BsYXk6IG51bWJlcjtcbiAgdHJhbnNsYXRlWDogbnVtYmVyO1xuICB0cmFuc2xhdGVZOiBudW1iZXI7XG4gIGFsbG93ZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRpbWVEYXRhIHtcbiAgbWludXRlczogbnVtYmVyO1xuICBob3VyczogbnVtYmVyO1xuICBtZXJpZGllbTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBJQWxsb3dlZDI0SG91ck1hcCA9IFJlY29yZDxudW1iZXIsIFJlY29yZDxudW1iZXIsIGJvb2xlYW4+PjtcbiJdfQ==
@@ -1,279 +0,0 @@
1
- import { Component, EventEmitter, HostBinding, Input, Output, } from '@angular/core';
2
- import { OnemrvaMatColor, OnemrvaMatSize, } from '@onemrvapublic/design-system/utils';
3
- import { MatTimepickerComponentDialogComponent } from './timepicker-dialog/timepicker-dialog.component';
4
- import { Subject } from 'rxjs';
5
- import { first, takeUntil } from 'rxjs/operators';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/material/dialog";
8
- let NEXT_ID = 0;
9
- export class OnemrvaMatTimepickerComponent {
10
- get value() {
11
- return this._value;
12
- }
13
- set value(value) {
14
- this._value = value;
15
- }
16
- constructor(dialog) {
17
- this.dialog = dialog;
18
- this.isAlive = new Subject();
19
- this.opened = false;
20
- /** Emits when the timepicker's state changes. */
21
- this.stateChanges = new Subject();
22
- // eslint-disable-next-line @angular-eslint/no-output-rename
23
- this.openedStream = new EventEmitter();
24
- // eslint-disable-next-line @angular-eslint/no-output-rename
25
- this.closedStream = new EventEmitter();
26
- /**
27
- * Returns the `aria-label` attribute of the element.
28
- *
29
- * @example
30
- * ```typescript
31
- * let timepickerLabel = this.timepicker.ariaLabel;
32
- * ```
33
- *
34
- */
35
- this.ariaLabel = '';
36
- this.dialogLabel = 'Pick a Time';
37
- /**
38
- * Returns the `role` attribute of the element.
39
- *
40
- * @example
41
- * ```typescript
42
- * let timepickerRole = this.timepicker.role;
43
- * ```
44
- */
45
- this.role = '';
46
- /**
47
- * Host `class.onemrva-mat-timepicker` binding.
48
- *
49
- * @hidden
50
- * @internal
51
- */
52
- this.cssClass = 'onemrva-mat-timepicker';
53
- /**
54
- * Sets the `id` of the element. If not set, the first component instance will have `id` = `"onemrva-mat-timepicker-0"`.
55
- *
56
- * @example
57
- * ```html
58
- * <onemrva-mat-timepicker id="my-first-timepicker"></onemrva-mat-timepicker>
59
- * ```
60
- */
61
- this.id = `onemrva-mat-timepicker-${NEXT_ID++}`;
62
- /**
63
- * Sets the `data-cy` of the element. If not set, the first component instance will have `data-cy` = `"onemrva-mat-timepicker-0"`.
64
- *
65
- * @example
66
- * ```html
67
- * <onemrva-mat-timepicker id="my-first-timepicker"></onemrva-mat-timepicker>
68
- * ```
69
- */
70
- this.dataCy = `onemrva-mat-timepicker-${NEXT_ID++}`;
71
- /**
72
- * @hidden
73
- * @internal
74
- */
75
- this._color = 'primary';
76
- /**
77
- * @hidden
78
- * @internal
79
- */
80
- this._size = OnemrvaMatSize.SMALL;
81
- this.handleChange = (newValue) => {
82
- if (!(newValue instanceof Date)) {
83
- return;
84
- }
85
- const v = this.value instanceof Date ? new Date(this.value.getTime()) : new Date();
86
- v.setHours(newValue.getHours());
87
- v.setMinutes(newValue.getMinutes());
88
- v.setSeconds(0);
89
- v.setMilliseconds(0);
90
- this.value = v;
91
- };
92
- this.handleOk = () => {
93
- if (this.onChangeFn) {
94
- this.onChangeFn(this.value);
95
- }
96
- this.timepickerInput.value = this.value;
97
- this.modalRef.close();
98
- };
99
- this.handleCancel = () => {
100
- this.modalRef.close();
101
- };
102
- }
103
- setTimepickerInput(t) {
104
- this.timepickerInput = t;
105
- }
106
- /**
107
- * Returns the color of the element.
108
- *
109
- * @example
110
- * ```typescript
111
- * let color = this.timepicker.color;
112
- * ```
113
- */
114
- get color() {
115
- return this._color;
116
- }
117
- /**
118
- * Sets the size of the element.
119
- * By default, the color is `"primary"`.
120
- *
121
- * @example
122
- * ```html
123
- * <onemrva-mat-timepicker size="large"></onemrva-mat-timepicker>
124
- * ```
125
- */
126
- set color(value) {
127
- switch (value) {
128
- case OnemrvaMatColor.PRIMARY:
129
- case OnemrvaMatColor.ACCENT:
130
- case OnemrvaMatColor.WARN:
131
- this._color = value;
132
- break;
133
- default:
134
- this._color = OnemrvaMatColor.PRIMARY;
135
- }
136
- }
137
- /** @hidden @internal */
138
- get _isPrimary() {
139
- return this.color === OnemrvaMatColor.PRIMARY;
140
- }
141
- /** @hidden @internal */
142
- get _isAccent() {
143
- return this.color === OnemrvaMatColor.ACCENT;
144
- }
145
- /**
146
- * Returns the size of the element.
147
- *
148
- * @example
149
- * ```typescript
150
- * let timepickerSize = this.timepicker.size;
151
- * ```
152
- */
153
- get size() {
154
- return this._size;
155
- }
156
- /**
157
- * Sets the size of the element.
158
- * By default, the size is `"medium"`.
159
- *
160
- * @example
161
- * ```html
162
- * <onemrva-mat-timepicker size="large"></onemrva-mat-timepicker>
163
- * ```
164
- */
165
- set size(value) {
166
- switch (value) {
167
- case OnemrvaMatSize.XSMALL:
168
- case OnemrvaMatSize.SMALL:
169
- case OnemrvaMatSize.MEDIUM:
170
- case OnemrvaMatSize.LARGE:
171
- case OnemrvaMatSize.XLARGE:
172
- this._size = value;
173
- break;
174
- default:
175
- this._size = OnemrvaMatSize.MEDIUM;
176
- }
177
- }
178
- open() {
179
- if (this.timepickerInput.disabled) {
180
- return;
181
- }
182
- this.value = this.timepickerInput.currentValue;
183
- if (this.value === undefined || this.value === null) {
184
- this.value = new Date();
185
- }
186
- this.modalRef = this.dialog.open(MatTimepickerComponentDialogComponent, {
187
- ariaLabel: this.dialogLabel,
188
- autoFocus: false,
189
- data: {
190
- value: this.timepickerInput.currentValue,
191
- okLabel: this.timepickerInput.okLabel,
192
- cancelLabel: this.timepickerInput.cancelLabel,
193
- color: this.color,
194
- minDate: this.timepickerInput.minDate,
195
- maxDate: this.timepickerInput.maxDate,
196
- allowed24HourMap: this.timepickerInput.allowed24HourMap,
197
- },
198
- });
199
- const instance = this.modalRef.componentInstance;
200
- instance.changeEvent
201
- .pipe(takeUntil(this.isAlive))
202
- .subscribe(this.handleChange);
203
- instance.okClickEvent
204
- .pipe(takeUntil(this.isAlive))
205
- .subscribe(this.handleOk);
206
- instance.cancelClickEvent
207
- .pipe(takeUntil(this.isAlive))
208
- .subscribe(this.handleCancel);
209
- this.modalRef
210
- .beforeClosed()
211
- .pipe(first())
212
- .subscribe(() => (instance.isClosing = true));
213
- this.modalRef
214
- .afterClosed()
215
- .pipe(first())
216
- .subscribe(() => {
217
- if (this.timepickerInput.onTouchedFn) {
218
- this.timepickerInput.onTouchedFn();
219
- }
220
- //this.modalRef = null;
221
- this.timepickerInput.elRef.nativeElement.focus();
222
- });
223
- this.timepickerInput.currentValue = this.value;
224
- }
225
- ngOnDestroy() {
226
- this.isAlive.next('0');
227
- this.isAlive.complete();
228
- this.stateChanges.complete();
229
- // if (this._platform.isBrowser) {
230
- // this.fm.stopMonitoring(this.elRef.nativeElement);
231
- // }
232
- //
233
- // this.listeners.forEach(l => l());
234
- }
235
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OnemrvaMatTimepickerComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
236
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: OnemrvaMatTimepickerComponent, selector: "mat-timepicker", inputs: { dialogLabel: "dialogLabel", id: "id", dataCy: "dataCy", color: "color", size: "size" }, outputs: { openedStream: "opened", closedStream: "closed" }, host: { properties: { "attr.aria-label": "this.ariaLabel", "attr.role": "this.role", "class.onemrva-mat-timepicker": "this.cssClass", "attr.id": "this.id", "attr.data-cy": "this.dataCy", "class.mat-primary": "this._isPrimary", "class.mat-accent": "this._isAccent" } }, ngImport: i0, template: "" }); }
237
- }
238
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OnemrvaMatTimepickerComponent, decorators: [{
239
- type: Component,
240
- args: [{ selector: 'mat-timepicker', template: "" }]
241
- }], ctorParameters: () => [{ type: i1.MatDialog }], propDecorators: { openedStream: [{
242
- type: Output,
243
- args: ['opened']
244
- }], closedStream: [{
245
- type: Output,
246
- args: ['closed']
247
- }], ariaLabel: [{
248
- type: HostBinding,
249
- args: ['attr.aria-label']
250
- }], dialogLabel: [{
251
- type: Input
252
- }], role: [{
253
- type: HostBinding,
254
- args: ['attr.role']
255
- }], cssClass: [{
256
- type: HostBinding,
257
- args: ['class.onemrva-mat-timepicker']
258
- }], id: [{
259
- type: HostBinding,
260
- args: ['attr.id']
261
- }, {
262
- type: Input
263
- }], dataCy: [{
264
- type: HostBinding,
265
- args: ['attr.data-cy']
266
- }, {
267
- type: Input
268
- }], color: [{
269
- type: Input
270
- }], _isPrimary: [{
271
- type: HostBinding,
272
- args: ['class.mat-primary']
273
- }], _isAccent: [{
274
- type: HostBinding,
275
- args: ['class.mat-accent']
276
- }], size: [{
277
- type: Input
278
- }] } });
279
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS1tYXQtdGltZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LXRpbWVwaWNrZXIvc3JjL29uZW1ydmEtbWF0LXRpbWVwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL21hdC10aW1lcGlja2VyL3NyYy9vbmVtcnZhLW1hdC10aW1lcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxlQUFlLEVBQ2YsY0FBYyxHQUNmLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0saURBQWlELENBQUM7QUFDeEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkvQixPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFFbEQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBTWhCLE1BQU0sT0FBTyw2QkFBNkI7SUFLeEMsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxLQUFXO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFJRCxZQUFtQixNQUFpQjtRQUFqQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBRjVCLFlBQU8sR0FBaUIsSUFBSSxPQUFPLEVBQU8sQ0FBQztRQUluRCxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBUWYsaURBQWlEO1FBQ3hDLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUU1Qyw0REFBNEQ7UUFDakMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRW5FLDREQUE0RDtRQUNqQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFbkU7Ozs7Ozs7O1dBUUc7UUFFSSxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBR2YsZ0JBQVcsR0FBRyxhQUFhLENBQUM7UUFFbkM7Ozs7Ozs7V0FPRztRQUVJLFNBQUksR0FBRyxFQUFFLENBQUM7UUFFakI7Ozs7O1dBS0c7UUFFSSxhQUFRLEdBQUcsd0JBQXdCLENBQUM7UUFFM0M7Ozs7Ozs7V0FPRztRQUdJLE9BQUUsR0FBRywwQkFBMEIsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUVsRDs7Ozs7OztXQU9HO1FBR0ksV0FBTSxHQUFHLDBCQUEwQixPQUFPLEVBQUUsRUFBRSxDQUFDO1FBRXREOzs7V0FHRztRQUNLLFdBQU0sR0FBaUIsU0FBUyxDQUFDO1FBZ0R6Qzs7O1dBR0c7UUFDSyxVQUFLLEdBQTRCLGNBQWMsQ0FBQyxLQUFLLENBQUM7UUF5RjlELGlCQUFZLEdBQUcsQ0FBQyxRQUFjLEVBQUUsRUFBRTtZQUNoQyxJQUFJLENBQUMsQ0FBQyxRQUFRLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDaEMsT0FBTztZQUNULENBQUM7WUFDRCxNQUFNLENBQUMsR0FDTCxJQUFJLENBQUMsS0FBSyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzNFLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDaEMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUNwQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hCLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDakIsQ0FBQyxDQUFDO1FBRUYsYUFBUSxHQUFHLEdBQUcsRUFBRTtZQUNkLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5QixDQUFDO1lBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUN4QyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3hCLENBQUMsQ0FBQztRQUVGLGlCQUFZLEdBQUcsR0FBRyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDO0lBdFBxQyxDQUFDO0lBSWpDLGtCQUFrQixDQUFDLENBQXlCO1FBQ2pELElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUE4RUQ7Ozs7Ozs7T0FPRztJQUNILElBQ1csS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxJQUFXLEtBQUssQ0FBQyxLQUFtQjtRQUNsQyxRQUFRLEtBQUssRUFBRSxDQUFDO1lBQ2QsS0FBSyxlQUFlLENBQUMsT0FBTyxDQUFDO1lBQzdCLEtBQUssZUFBZSxDQUFDLE1BQU0sQ0FBQztZQUM1QixLQUFLLGVBQWUsQ0FBQyxJQUFJO2dCQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDcEIsTUFBTTtZQUNSO2dCQUNFLElBQUksQ0FBQyxNQUFNLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQztJQUVELHdCQUF3QjtJQUN4QixJQUNXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLGVBQWUsQ0FBQyxPQUFPLENBQUM7SUFDaEQsQ0FBQztJQUVELHdCQUF3QjtJQUN4QixJQUNXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLGVBQWUsQ0FBQyxNQUFNLENBQUM7SUFDL0MsQ0FBQztJQVFEOzs7Ozs7O09BT0c7SUFDSCxJQUNXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsSUFBVyxJQUFJLENBQUMsS0FBOEI7UUFDNUMsUUFBUSxLQUFLLEVBQUUsQ0FBQztZQUNkLEtBQUssY0FBYyxDQUFDLE1BQU0sQ0FBQztZQUMzQixLQUFLLGNBQWMsQ0FBQyxLQUFLLENBQUM7WUFDMUIsS0FBSyxjQUFjLENBQUMsTUFBTSxDQUFDO1lBQzNCLEtBQUssY0FBYyxDQUFDLEtBQUssQ0FBQztZQUMxQixLQUFLLGNBQWMsQ0FBQyxNQUFNO2dCQUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztnQkFDbkIsTUFBTTtZQUNSO2dCQUNFLElBQUksQ0FBQyxLQUFLLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUN2QyxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEMsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDO1FBQy9DLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNwRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDMUIsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMscUNBQXFDLEVBQUU7WUFDdEUsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzNCLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLElBQUksRUFBRTtnQkFDSixLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZO2dCQUN4QyxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPO2dCQUNyQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXO2dCQUM3QyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pCLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU87Z0JBQ3JDLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU87Z0JBQ3JDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCO2FBQ3hEO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztRQUNqRCxRQUFRLENBQUMsV0FBVzthQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUM3QixTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hDLFFBQVEsQ0FBQyxZQUFZO2FBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzdCLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsUUFBUSxDQUFDLGdCQUFnQjthQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUM3QixTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxRQUFRO2FBQ1YsWUFBWSxFQUFFO2FBQ2QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ2IsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxRQUFRO2FBQ1YsV0FBVyxFQUFFO2FBQ2IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ2IsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDckMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQyxDQUFDO1lBQ0QsdUJBQXVCO1lBQ3ZCLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztRQUNMLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFhLENBQUM7SUFDekQsQ0FBQztJQTJCRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRTdCLGtDQUFrQztRQUNsQyx3REFBd0Q7UUFDeEQsSUFBSTtRQUNKLEVBQUU7UUFDRixvQ0FBb0M7SUFDdEMsQ0FBQzsrR0FqUlUsNkJBQTZCO21HQUE3Qiw2QkFBNkIsa2VDekIxQyxFQUFBOzs0RkR5QmEsNkJBQTZCO2tCQUp6QyxTQUFTOytCQUNFLGdCQUFnQjs4RUFnQ0MsWUFBWTtzQkFBdEMsTUFBTTt1QkFBQyxRQUFRO2dCQUdXLFlBQVk7c0JBQXRDLE1BQU07dUJBQUMsUUFBUTtnQkFZVCxTQUFTO3NCQURmLFdBQVc7dUJBQUMsaUJBQWlCO2dCQUl2QixXQUFXO3NCQURqQixLQUFLO2dCQVlDLElBQUk7c0JBRFYsV0FBVzt1QkFBQyxXQUFXO2dCQVVqQixRQUFRO3NCQURkLFdBQVc7dUJBQUMsOEJBQThCO2dCQWFwQyxFQUFFO3NCQUZSLFdBQVc7dUJBQUMsU0FBUzs7c0JBQ3JCLEtBQUs7Z0JBYUMsTUFBTTtzQkFGWixXQUFXO3VCQUFDLGNBQWM7O3NCQUMxQixLQUFLO2dCQWtCSyxLQUFLO3NCQURmLEtBQUs7Z0JBNEJLLFVBQVU7c0JBRHBCLFdBQVc7dUJBQUMsbUJBQW1CO2dCQU9yQixTQUFTO3NCQURuQixXQUFXO3VCQUFDLGtCQUFrQjtnQkFvQnBCLElBQUk7c0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE9uZW1ydmFNYXRDb2xvcixcbiAgT25lbXJ2YU1hdFNpemUsXG59IGZyb20gJ0BvbmVtcnZhcHVibGljL2Rlc2lnbi1zeXN0ZW0vdXRpbHMnO1xuaW1wb3J0IHsgTWF0VGltZXBpY2tlckNvbXBvbmVudERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vdGltZXBpY2tlci1kaWFsb2cvdGltZXBpY2tlci1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdFRpbWVwaWNrZXJEaXJlY3RpdmUgfSBmcm9tICcuL3RpbWVwaWNrZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFRoZW1lUGFsZXR0ZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgZmlyc3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxubGV0IE5FWFRfSUQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYXQtdGltZXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnb25lbXJ2YS1tYXQtdGltZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIE9uZW1ydmFNYXRUaW1lcGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHVibGljIG1vZGFsUmVmITogTWF0RGlhbG9nUmVmPE1hdFRpbWVwaWNrZXJDb21wb25lbnREaWFsb2dDb21wb25lbnQ+O1xuICBwcml2YXRlIG9uQ2hhbmdlRm46IGFueTtcbiAgcHJpdmF0ZSBfdmFsdWUhOiBEYXRlO1xuXG4gIGdldCB2YWx1ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBzZXQgdmFsdWUodmFsdWU6IERhdGUpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0FsaXZlOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZzogTWF0RGlhbG9nKSB7fVxuXG4gIG9wZW5lZCA9IGZhbHNlO1xuXG4gIHB1YmxpYyBzZXRUaW1lcGlja2VySW5wdXQodDogTWF0VGltZXBpY2tlckRpcmVjdGl2ZSkge1xuICAgIHRoaXMudGltZXBpY2tlcklucHV0ID0gdDtcbiAgfVxuXG4gIHRpbWVwaWNrZXJJbnB1dDogYW55O1xuXG4gIC8qKiBFbWl0cyB3aGVuIHRoZSB0aW1lcGlja2VyJ3Mgc3RhdGUgY2hhbmdlcy4gKi9cbiAgcmVhZG9ubHkgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1yZW5hbWVcbiAgQE91dHB1dCgnb3BlbmVkJykgcmVhZG9ubHkgb3BlbmVkU3RyZWFtID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LXJlbmFtZVxuICBAT3V0cHV0KCdjbG9zZWQnKSByZWFkb25seSBjbG9zZWRTdHJlYW0gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUgb2YgdGhlIGVsZW1lbnQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogbGV0IHRpbWVwaWNrZXJMYWJlbCA9IHRoaXMudGltZXBpY2tlci5hcmlhTGFiZWw7XG4gICAqIGBgYFxuICAgKlxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbGFiZWwnKVxuICBwdWJsaWMgYXJpYUxhYmVsID0gJyc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGRpYWxvZ0xhYmVsID0gJ1BpY2sgYSBUaW1lJztcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgYHJvbGVgIGF0dHJpYnV0ZSBvZiB0aGUgZWxlbWVudC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBsZXQgdGltZXBpY2tlclJvbGUgPSB0aGlzLnRpbWVwaWNrZXIucm9sZTtcbiAgICogYGBgXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpXG4gIHB1YmxpYyByb2xlID0gJyc7XG5cbiAgLyoqXG4gICAqIEhvc3QgYGNsYXNzLm9uZW1ydmEtbWF0LXRpbWVwaWNrZXJgIGJpbmRpbmcuXG4gICAqXG4gICAqIEBoaWRkZW5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm9uZW1ydmEtbWF0LXRpbWVwaWNrZXInKVxuICBwdWJsaWMgY3NzQ2xhc3MgPSAnb25lbXJ2YS1tYXQtdGltZXBpY2tlcic7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGBpZGAgb2YgdGhlIGVsZW1lbnQuIElmIG5vdCBzZXQsIHRoZSBmaXJzdCBjb21wb25lbnQgaW5zdGFuY2Ugd2lsbCBoYXZlIGBpZGAgPSBgXCJvbmVtcnZhLW1hdC10aW1lcGlja2VyLTBcImAuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYGh0bWxcbiAgICogPG9uZW1ydmEtbWF0LXRpbWVwaWNrZXIgaWQ9XCJteS1maXJzdC10aW1lcGlja2VyXCI+PC9vbmVtcnZhLW1hdC10aW1lcGlja2VyPlxuICAgKiBgYGBcbiAgICovXG4gIEBIb3N0QmluZGluZygnYXR0ci5pZCcpXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpZCA9IGBvbmVtcnZhLW1hdC10aW1lcGlja2VyLSR7TkVYVF9JRCsrfWA7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGBkYXRhLWN5YCBvZiB0aGUgZWxlbWVudC4gSWYgbm90IHNldCwgdGhlIGZpcnN0IGNvbXBvbmVudCBpbnN0YW5jZSB3aWxsIGhhdmUgYGRhdGEtY3lgID0gYFwib25lbXJ2YS1tYXQtdGltZXBpY2tlci0wXCJgLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBodG1sXG4gICAqIDxvbmVtcnZhLW1hdC10aW1lcGlja2VyIGlkPVwibXktZmlyc3QtdGltZXBpY2tlclwiPjwvb25lbXJ2YS1tYXQtdGltZXBpY2tlcj5cbiAgICogYGBgXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1jeScpXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkYXRhQ3kgPSBgb25lbXJ2YS1tYXQtdGltZXBpY2tlci0ke05FWFRfSUQrK31gO1xuXG4gIC8qKlxuICAgKiBAaGlkZGVuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBfY29sb3I6IFRoZW1lUGFsZXR0ZSA9ICdwcmltYXJ5JztcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY29sb3Igb2YgdGhlIGVsZW1lbnQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogbGV0IGNvbG9yID0gdGhpcy50aW1lcGlja2VyLmNvbG9yO1xuICAgKiBgYGBcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgY29sb3IoKTogVGhlbWVQYWxldHRlIHtcbiAgICByZXR1cm4gdGhpcy5fY29sb3I7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc2l6ZSAgb2YgdGhlIGVsZW1lbnQuXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBjb2xvciBpcyBgXCJwcmltYXJ5XCJgLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBodG1sXG4gICAqIDxvbmVtcnZhLW1hdC10aW1lcGlja2VyIHNpemU9XCJsYXJnZVwiPjwvb25lbXJ2YS1tYXQtdGltZXBpY2tlcj5cbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgc2V0IGNvbG9yKHZhbHVlOiBUaGVtZVBhbGV0dGUpIHtcbiAgICBzd2l0Y2ggKHZhbHVlKSB7XG4gICAgICBjYXNlIE9uZW1ydmFNYXRDb2xvci5QUklNQVJZOlxuICAgICAgY2FzZSBPbmVtcnZhTWF0Q29sb3IuQUNDRU5UOlxuICAgICAgY2FzZSBPbmVtcnZhTWF0Q29sb3IuV0FSTjpcbiAgICAgICAgdGhpcy5fY29sb3IgPSB2YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLl9jb2xvciA9IE9uZW1ydmFNYXRDb2xvci5QUklNQVJZO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1hdC1wcmltYXJ5JylcbiAgcHVibGljIGdldCBfaXNQcmltYXJ5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbG9yID09PSBPbmVtcnZhTWF0Q29sb3IuUFJJTUFSWTtcbiAgfVxuXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1hdC1hY2NlbnQnKVxuICBwdWJsaWMgZ2V0IF9pc0FjY2VudCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb2xvciA9PT0gT25lbXJ2YU1hdENvbG9yLkFDQ0VOVDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaGlkZGVuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBfc2l6ZTogc3RyaW5nIHwgT25lbXJ2YU1hdFNpemUgPSBPbmVtcnZhTWF0U2l6ZS5TTUFMTDtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgZWxlbWVudC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBsZXQgdGltZXBpY2tlclNpemUgPSB0aGlzLnRpbWVwaWNrZXIuc2l6ZTtcbiAgICogYGBgXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHNpemUoKTogc3RyaW5nIHwgT25lbXJ2YU1hdFNpemUge1xuICAgIHJldHVybiB0aGlzLl9zaXplO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHNpemUgIG9mIHRoZSBlbGVtZW50LlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgc2l6ZSBpcyBgXCJtZWRpdW1cImAuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYGh0bWxcbiAgICogPG9uZW1ydmEtbWF0LXRpbWVwaWNrZXIgc2l6ZT1cImxhcmdlXCI+PC9vbmVtcnZhLW1hdC10aW1lcGlja2VyPlxuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBzZXQgc2l6ZSh2YWx1ZTogc3RyaW5nIHwgT25lbXJ2YU1hdFNpemUpIHtcbiAgICBzd2l0Y2ggKHZhbHVlKSB7XG4gICAgICBjYXNlIE9uZW1ydmFNYXRTaXplLlhTTUFMTDpcbiAgICAgIGNhc2UgT25lbXJ2YU1hdFNpemUuU01BTEw6XG4gICAgICBjYXNlIE9uZW1ydmFNYXRTaXplLk1FRElVTTpcbiAgICAgIGNhc2UgT25lbXJ2YU1hdFNpemUuTEFSR0U6XG4gICAgICBjYXNlIE9uZW1ydmFNYXRTaXplLlhMQVJHRTpcbiAgICAgICAgdGhpcy5fc2l6ZSA9IHZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuX3NpemUgPSBPbmVtcnZhTWF0U2l6ZS5NRURJVU07XG4gICAgfVxuICB9XG5cbiAgb3BlbigpIHtcbiAgICBpZiAodGhpcy50aW1lcGlja2VySW5wdXQuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlID0gdGhpcy50aW1lcGlja2VySW5wdXQuY3VycmVudFZhbHVlO1xuICAgIGlmICh0aGlzLnZhbHVlID09PSB1bmRlZmluZWQgfHwgdGhpcy52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgdGhpcy52YWx1ZSA9IG5ldyBEYXRlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5tb2RhbFJlZiA9IHRoaXMuZGlhbG9nLm9wZW4oTWF0VGltZXBpY2tlckNvbXBvbmVudERpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgYXJpYUxhYmVsOiB0aGlzLmRpYWxvZ0xhYmVsLFxuICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgdmFsdWU6IHRoaXMudGltZXBpY2tlcklucHV0LmN1cnJlbnRWYWx1ZSxcbiAgICAgICAgb2tMYWJlbDogdGhpcy50aW1lcGlja2VySW5wdXQub2tMYWJlbCxcbiAgICAgICAgY2FuY2VsTGFiZWw6IHRoaXMudGltZXBpY2tlcklucHV0LmNhbmNlbExhYmVsLFxuICAgICAgICBjb2xvcjogdGhpcy5jb2xvcixcbiAgICAgICAgbWluRGF0ZTogdGhpcy50aW1lcGlja2VySW5wdXQubWluRGF0ZSxcbiAgICAgICAgbWF4RGF0ZTogdGhpcy50aW1lcGlja2VySW5wdXQubWF4RGF0ZSxcbiAgICAgICAgYWxsb3dlZDI0SG91ck1hcDogdGhpcy50aW1lcGlja2VySW5wdXQuYWxsb3dlZDI0SG91ck1hcCxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBpbnN0YW5jZSA9IHRoaXMubW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2U7XG4gICAgaW5zdGFuY2UuY2hhbmdlRXZlbnRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmlzQWxpdmUpKVxuICAgICAgLnN1YnNjcmliZSh0aGlzLmhhbmRsZUNoYW5nZSk7XG4gICAgaW5zdGFuY2Uub2tDbGlja0V2ZW50XG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5pc0FsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUodGhpcy5oYW5kbGVPayk7XG4gICAgaW5zdGFuY2UuY2FuY2VsQ2xpY2tFdmVudFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuaXNBbGl2ZSkpXG4gICAgICAuc3Vic2NyaWJlKHRoaXMuaGFuZGxlQ2FuY2VsKTtcbiAgICB0aGlzLm1vZGFsUmVmXG4gICAgICAuYmVmb3JlQ2xvc2VkKClcbiAgICAgIC5waXBlKGZpcnN0KCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IChpbnN0YW5jZS5pc0Nsb3NpbmcgPSB0cnVlKSk7XG4gICAgdGhpcy5tb2RhbFJlZlxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5waXBlKGZpcnN0KCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMudGltZXBpY2tlcklucHV0Lm9uVG91Y2hlZEZuKSB7XG4gICAgICAgICAgdGhpcy50aW1lcGlja2VySW5wdXQub25Ub3VjaGVkRm4oKTtcbiAgICAgICAgfVxuICAgICAgICAvL3RoaXMubW9kYWxSZWYgPSBudWxsO1xuICAgICAgICB0aGlzLnRpbWVwaWNrZXJJbnB1dC5lbFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICB9KTtcbiAgICB0aGlzLnRpbWVwaWNrZXJJbnB1dC5jdXJyZW50VmFsdWUgPSB0aGlzLnZhbHVlIGFzIERhdGU7XG4gIH1cblxuICBoYW5kbGVDaGFuZ2UgPSAobmV3VmFsdWU6IERhdGUpID0+IHtcbiAgICBpZiAoIShuZXdWYWx1ZSBpbnN0YW5jZW9mIERhdGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHYgPVxuICAgICAgdGhpcy52YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyBuZXcgRGF0ZSh0aGlzLnZhbHVlLmdldFRpbWUoKSkgOiBuZXcgRGF0ZSgpO1xuICAgIHYuc2V0SG91cnMobmV3VmFsdWUuZ2V0SG91cnMoKSk7XG4gICAgdi5zZXRNaW51dGVzKG5ld1ZhbHVlLmdldE1pbnV0ZXMoKSk7XG4gICAgdi5zZXRTZWNvbmRzKDApO1xuICAgIHYuc2V0TWlsbGlzZWNvbmRzKDApO1xuICAgIHRoaXMudmFsdWUgPSB2O1xuICB9O1xuXG4gIGhhbmRsZU9rID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLm9uQ2hhbmdlRm4pIHtcbiAgICAgIHRoaXMub25DaGFuZ2VGbih0aGlzLnZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy50aW1lcGlja2VySW5wdXQudmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgIHRoaXMubW9kYWxSZWYuY2xvc2UoKTtcbiAgfTtcblxuICBoYW5kbGVDYW5jZWwgPSAoKSA9PiB7XG4gICAgdGhpcy5tb2RhbFJlZi5jbG9zZSgpO1xuICB9O1xuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuaXNBbGl2ZS5uZXh0KCcwJyk7XG4gICAgdGhpcy5pc0FsaXZlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKTtcblxuICAgIC8vIGlmICh0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIpIHtcbiAgICAvLyAgICAgdGhpcy5mbS5zdG9wTW9uaXRvcmluZyh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIC8vIH1cbiAgICAvL1xuICAgIC8vIHRoaXMubGlzdGVuZXJzLmZvckVhY2gobCA9PiBsKCkpO1xuICB9XG59XG4iLCIiXX0=