@mintplayer/ng-bootstrap 18.5.0 → 20.0.0-preview.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1262) hide show
  1. package/accordion/index.d.ts +51 -1
  2. package/alert/index.d.ts +32 -1
  3. package/async-host-binding/index.d.ts +13 -1
  4. package/badge/index.d.ts +16 -1
  5. package/breadcrumb/index.d.ts +20 -1
  6. package/button-group/index.d.ts +8 -1
  7. package/button-type/index.d.ts +12 -1
  8. package/calendar/index.d.ts +32 -1
  9. package/calendar-month/index.d.ts +54 -1
  10. package/card/index.d.ts +22 -1
  11. package/carousel/index.d.ts +64 -1
  12. package/close/index.d.ts +11 -1
  13. package/code-snippet/index.d.ts +20 -1
  14. package/color-picker/index.d.ts +196 -5
  15. package/container/index.d.ts +8 -1
  16. package/context-menu/index.d.ts +30 -1
  17. package/copy/index.d.ts +14 -1
  18. package/datatable/index.d.ts +66 -1
  19. package/datepicker/index.d.ts +20 -1
  20. package/dock/index.d.ts +177 -1
  21. package/dropdown/index.d.ts +63 -1
  22. package/dropdown-divider/index.d.ts +9 -1
  23. package/dropdown-menu/index.d.ts +32 -1
  24. package/enhanced-paste/index.d.ts +23 -1
  25. package/enum/index.d.ts +17 -1
  26. package/fesm2022/mintplayer-ng-bootstrap-accordion.mjs +17 -17
  27. package/fesm2022/mintplayer-ng-bootstrap-accordion.mjs.map +1 -1
  28. package/fesm2022/mintplayer-ng-bootstrap-alert.mjs +13 -13
  29. package/fesm2022/mintplayer-ng-bootstrap-alert.mjs.map +1 -1
  30. package/fesm2022/mintplayer-ng-bootstrap-async-host-binding.mjs.map +1 -1
  31. package/fesm2022/mintplayer-ng-bootstrap-badge.mjs +4 -4
  32. package/fesm2022/mintplayer-ng-bootstrap-badge.mjs.map +1 -1
  33. package/fesm2022/mintplayer-ng-bootstrap-breadcrumb.mjs +14 -17
  34. package/fesm2022/mintplayer-ng-bootstrap-breadcrumb.mjs.map +1 -1
  35. package/fesm2022/mintplayer-ng-bootstrap-button-group.mjs +4 -4
  36. package/fesm2022/mintplayer-ng-bootstrap-button-group.mjs.map +1 -1
  37. package/fesm2022/mintplayer-ng-bootstrap-button-type.mjs +5 -5
  38. package/fesm2022/mintplayer-ng-bootstrap-button-type.mjs.map +1 -1
  39. package/fesm2022/mintplayer-ng-bootstrap-calendar-month.mjs +11 -11
  40. package/fesm2022/mintplayer-ng-bootstrap-calendar-month.mjs.map +1 -1
  41. package/fesm2022/mintplayer-ng-bootstrap-calendar.mjs +4 -4
  42. package/fesm2022/mintplayer-ng-bootstrap-calendar.mjs.map +1 -1
  43. package/fesm2022/mintplayer-ng-bootstrap-card.mjs +13 -13
  44. package/fesm2022/mintplayer-ng-bootstrap-card.mjs.map +1 -1
  45. package/fesm2022/mintplayer-ng-bootstrap-carousel.mjs +19 -17
  46. package/fesm2022/mintplayer-ng-bootstrap-carousel.mjs.map +1 -1
  47. package/fesm2022/mintplayer-ng-bootstrap-close.mjs +6 -7
  48. package/fesm2022/mintplayer-ng-bootstrap-close.mjs.map +1 -1
  49. package/fesm2022/mintplayer-ng-bootstrap-code-snippet.mjs +6 -11
  50. package/fesm2022/mintplayer-ng-bootstrap-code-snippet.mjs.map +1 -1
  51. package/fesm2022/mintplayer-ng-bootstrap-color-picker.mjs +43 -36
  52. package/fesm2022/mintplayer-ng-bootstrap-color-picker.mjs.map +1 -1
  53. package/fesm2022/mintplayer-ng-bootstrap-container.mjs +3 -3
  54. package/fesm2022/mintplayer-ng-bootstrap-container.mjs.map +1 -1
  55. package/fesm2022/mintplayer-ng-bootstrap-context-menu.mjs +10 -9
  56. package/fesm2022/mintplayer-ng-bootstrap-context-menu.mjs.map +1 -1
  57. package/fesm2022/mintplayer-ng-bootstrap-copy.mjs +4 -4
  58. package/fesm2022/mintplayer-ng-bootstrap-copy.mjs.map +1 -1
  59. package/fesm2022/mintplayer-ng-bootstrap-datatable.mjs +19 -17
  60. package/fesm2022/mintplayer-ng-bootstrap-datatable.mjs.map +1 -1
  61. package/fesm2022/mintplayer-ng-bootstrap-datepicker.mjs +4 -4
  62. package/fesm2022/mintplayer-ng-bootstrap-datepicker.mjs.map +1 -1
  63. package/fesm2022/mintplayer-ng-bootstrap-dock.mjs +24 -24
  64. package/fesm2022/mintplayer-ng-bootstrap-dock.mjs.map +1 -1
  65. package/fesm2022/mintplayer-ng-bootstrap-dropdown-divider.mjs +5 -5
  66. package/fesm2022/mintplayer-ng-bootstrap-dropdown-divider.mjs.map +1 -1
  67. package/fesm2022/mintplayer-ng-bootstrap-dropdown-menu.mjs +13 -13
  68. package/fesm2022/mintplayer-ng-bootstrap-dropdown-menu.mjs.map +1 -1
  69. package/fesm2022/mintplayer-ng-bootstrap-dropdown.mjs +20 -17
  70. package/fesm2022/mintplayer-ng-bootstrap-dropdown.mjs.map +1 -1
  71. package/fesm2022/mintplayer-ng-bootstrap-enhanced-paste.mjs +4 -4
  72. package/fesm2022/mintplayer-ng-bootstrap-enhanced-paste.mjs.map +1 -1
  73. package/fesm2022/mintplayer-ng-bootstrap-enum.mjs +3 -3
  74. package/fesm2022/mintplayer-ng-bootstrap-enum.mjs.map +1 -1
  75. package/fesm2022/mintplayer-ng-bootstrap-file-upload.mjs +18 -16
  76. package/fesm2022/mintplayer-ng-bootstrap-file-upload.mjs.map +1 -1
  77. package/fesm2022/mintplayer-ng-bootstrap-floating-labels.mjs +5 -5
  78. package/fesm2022/mintplayer-ng-bootstrap-floating-labels.mjs.map +1 -1
  79. package/fesm2022/mintplayer-ng-bootstrap-font-color.mjs +4 -4
  80. package/fesm2022/mintplayer-ng-bootstrap-font-color.mjs.map +1 -1
  81. package/fesm2022/mintplayer-ng-bootstrap-for.mjs +4 -4
  82. package/fesm2022/mintplayer-ng-bootstrap-for.mjs.map +1 -1
  83. package/fesm2022/mintplayer-ng-bootstrap-form.mjs +19 -17
  84. package/fesm2022/mintplayer-ng-bootstrap-form.mjs.map +1 -1
  85. package/fesm2022/mintplayer-ng-bootstrap-grid.mjs +29 -25
  86. package/fesm2022/mintplayer-ng-bootstrap-grid.mjs.map +1 -1
  87. package/fesm2022/mintplayer-ng-bootstrap-has-id.mjs.map +1 -1
  88. package/fesm2022/mintplayer-ng-bootstrap-has-overlay.mjs +4 -4
  89. package/fesm2022/mintplayer-ng-bootstrap-has-overlay.mjs.map +1 -1
  90. package/fesm2022/mintplayer-ng-bootstrap-has-property.mjs +4 -4
  91. package/fesm2022/mintplayer-ng-bootstrap-has-property.mjs.map +1 -1
  92. package/fesm2022/mintplayer-ng-bootstrap-in-list.mjs +4 -4
  93. package/fesm2022/mintplayer-ng-bootstrap-in-list.mjs.map +1 -1
  94. package/fesm2022/mintplayer-ng-bootstrap-input-group.mjs +4 -4
  95. package/fesm2022/mintplayer-ng-bootstrap-input-group.mjs.map +1 -1
  96. package/fesm2022/mintplayer-ng-bootstrap-instance-of.mjs +21 -17
  97. package/fesm2022/mintplayer-ng-bootstrap-instance-of.mjs.map +1 -1
  98. package/fesm2022/mintplayer-ng-bootstrap-let.mjs +5 -5
  99. package/fesm2022/mintplayer-ng-bootstrap-let.mjs.map +1 -1
  100. package/fesm2022/mintplayer-ng-bootstrap-linify.mjs +4 -4
  101. package/fesm2022/mintplayer-ng-bootstrap-linify.mjs.map +1 -1
  102. package/fesm2022/mintplayer-ng-bootstrap-list-group.mjs +14 -18
  103. package/fesm2022/mintplayer-ng-bootstrap-list-group.mjs.map +1 -1
  104. package/fesm2022/mintplayer-ng-bootstrap-markdown.mjs +16 -16
  105. package/fesm2022/mintplayer-ng-bootstrap-markdown.mjs.map +1 -1
  106. package/fesm2022/mintplayer-ng-bootstrap-marquee.mjs +3 -3
  107. package/fesm2022/mintplayer-ng-bootstrap-marquee.mjs.map +1 -1
  108. package/fesm2022/mintplayer-ng-bootstrap-modal.mjs +38 -33
  109. package/fesm2022/mintplayer-ng-bootstrap-modal.mjs.map +1 -1
  110. package/fesm2022/mintplayer-ng-bootstrap-multiselect.mjs +24 -21
  111. package/fesm2022/mintplayer-ng-bootstrap-multiselect.mjs.map +1 -1
  112. package/fesm2022/mintplayer-ng-bootstrap-navbar-toggler.mjs +4 -4
  113. package/fesm2022/mintplayer-ng-bootstrap-navbar-toggler.mjs.map +1 -1
  114. package/fesm2022/mintplayer-ng-bootstrap-navbar.mjs +45 -41
  115. package/fesm2022/mintplayer-ng-bootstrap-navbar.mjs.map +1 -1
  116. package/fesm2022/mintplayer-ng-bootstrap-navigation-lock.mjs +13 -12
  117. package/fesm2022/mintplayer-ng-bootstrap-navigation-lock.mjs.map +1 -1
  118. package/fesm2022/mintplayer-ng-bootstrap-no-noscript.mjs +5 -5
  119. package/fesm2022/mintplayer-ng-bootstrap-no-noscript.mjs.map +1 -1
  120. package/fesm2022/mintplayer-ng-bootstrap-offcanvas.mjs +37 -39
  121. package/fesm2022/mintplayer-ng-bootstrap-offcanvas.mjs.map +1 -1
  122. package/fesm2022/mintplayer-ng-bootstrap-ordinal-number.mjs +4 -4
  123. package/fesm2022/mintplayer-ng-bootstrap-ordinal-number.mjs.map +1 -1
  124. package/fesm2022/mintplayer-ng-bootstrap-pagination.mjs +5 -5
  125. package/fesm2022/mintplayer-ng-bootstrap-pagination.mjs.map +1 -1
  126. package/fesm2022/mintplayer-ng-bootstrap-parallax.mjs +3 -3
  127. package/fesm2022/mintplayer-ng-bootstrap-parallax.mjs.map +1 -1
  128. package/fesm2022/mintplayer-ng-bootstrap-placeholder.mjs +14 -13
  129. package/fesm2022/mintplayer-ng-bootstrap-placeholder.mjs.map +1 -1
  130. package/fesm2022/mintplayer-ng-bootstrap-playlist-toggler.mjs +4 -4
  131. package/fesm2022/mintplayer-ng-bootstrap-playlist-toggler.mjs.map +1 -1
  132. package/fesm2022/mintplayer-ng-bootstrap-popover.mjs +24 -21
  133. package/fesm2022/mintplayer-ng-bootstrap-popover.mjs.map +1 -1
  134. package/fesm2022/mintplayer-ng-bootstrap-progress-bar.mjs +13 -13
  135. package/fesm2022/mintplayer-ng-bootstrap-progress-bar.mjs.map +1 -1
  136. package/fesm2022/mintplayer-ng-bootstrap-range.mjs +14 -13
  137. package/fesm2022/mintplayer-ng-bootstrap-range.mjs.map +1 -1
  138. package/fesm2022/mintplayer-ng-bootstrap-rating.mjs +4 -4
  139. package/fesm2022/mintplayer-ng-bootstrap-rating.mjs.map +1 -1
  140. package/fesm2022/mintplayer-ng-bootstrap-resizable.mjs +14 -13
  141. package/fesm2022/mintplayer-ng-bootstrap-resizable.mjs.map +1 -1
  142. package/fesm2022/mintplayer-ng-bootstrap-scheduler.mjs +36 -32
  143. package/fesm2022/mintplayer-ng-bootstrap-scheduler.mjs.map +1 -1
  144. package/fesm2022/mintplayer-ng-bootstrap-scrollspy.mjs +17 -16
  145. package/fesm2022/mintplayer-ng-bootstrap-scrollspy.mjs.map +1 -1
  146. package/fesm2022/mintplayer-ng-bootstrap-searchbox.mjs +21 -18
  147. package/fesm2022/mintplayer-ng-bootstrap-searchbox.mjs.map +1 -1
  148. package/fesm2022/mintplayer-ng-bootstrap-select.mjs +20 -16
  149. package/fesm2022/mintplayer-ng-bootstrap-select.mjs.map +1 -1
  150. package/fesm2022/mintplayer-ng-bootstrap-select2.mjs +18 -16
  151. package/fesm2022/mintplayer-ng-bootstrap-select2.mjs.map +1 -1
  152. package/fesm2022/mintplayer-ng-bootstrap-shell.mjs +13 -12
  153. package/fesm2022/mintplayer-ng-bootstrap-shell.mjs.map +1 -1
  154. package/fesm2022/mintplayer-ng-bootstrap-signature-pad.mjs +4 -4
  155. package/fesm2022/mintplayer-ng-bootstrap-signature-pad.mjs.map +1 -1
  156. package/fesm2022/mintplayer-ng-bootstrap-slugify.mjs +4 -4
  157. package/fesm2022/mintplayer-ng-bootstrap-slugify.mjs.map +1 -1
  158. package/fesm2022/mintplayer-ng-bootstrap-spinner.mjs +4 -4
  159. package/fesm2022/mintplayer-ng-bootstrap-spinner.mjs.map +1 -1
  160. package/fesm2022/mintplayer-ng-bootstrap-split-string.mjs +4 -4
  161. package/fesm2022/mintplayer-ng-bootstrap-split-string.mjs.map +1 -1
  162. package/fesm2022/mintplayer-ng-bootstrap-splitter.mjs +18 -17
  163. package/fesm2022/mintplayer-ng-bootstrap-splitter.mjs.map +1 -1
  164. package/fesm2022/mintplayer-ng-bootstrap-sticky-footer.mjs +13 -12
  165. package/fesm2022/mintplayer-ng-bootstrap-sticky-footer.mjs.map +1 -1
  166. package/fesm2022/mintplayer-ng-bootstrap-tab-control.mjs +20 -19
  167. package/fesm2022/mintplayer-ng-bootstrap-tab-control.mjs.map +1 -1
  168. package/fesm2022/mintplayer-ng-bootstrap-table.mjs +5 -5
  169. package/fesm2022/mintplayer-ng-bootstrap-table.mjs.map +1 -1
  170. package/fesm2022/mintplayer-ng-bootstrap-timepicker.mjs +4 -4
  171. package/fesm2022/mintplayer-ng-bootstrap-timepicker.mjs.map +1 -1
  172. package/fesm2022/mintplayer-ng-bootstrap-toast.mjs +34 -32
  173. package/fesm2022/mintplayer-ng-bootstrap-toast.mjs.map +1 -1
  174. package/fesm2022/mintplayer-ng-bootstrap-toggle-button.mjs +19 -18
  175. package/fesm2022/mintplayer-ng-bootstrap-toggle-button.mjs.map +1 -1
  176. package/fesm2022/mintplayer-ng-bootstrap-tooltip.mjs +14 -13
  177. package/fesm2022/mintplayer-ng-bootstrap-tooltip.mjs.map +1 -1
  178. package/fesm2022/mintplayer-ng-bootstrap-treeview.mjs +13 -13
  179. package/fesm2022/mintplayer-ng-bootstrap-treeview.mjs.map +1 -1
  180. package/fesm2022/mintplayer-ng-bootstrap-trust-html.mjs +4 -4
  181. package/fesm2022/mintplayer-ng-bootstrap-trust-html.mjs.map +1 -1
  182. package/fesm2022/mintplayer-ng-bootstrap-typeahead.mjs +4 -4
  183. package/fesm2022/mintplayer-ng-bootstrap-typeahead.mjs.map +1 -1
  184. package/fesm2022/mintplayer-ng-bootstrap-uc-first.mjs +4 -4
  185. package/fesm2022/mintplayer-ng-bootstrap-uc-first.mjs.map +1 -1
  186. package/fesm2022/mintplayer-ng-bootstrap-user-agent.mjs +5 -5
  187. package/fesm2022/mintplayer-ng-bootstrap-user-agent.mjs.map +1 -1
  188. package/fesm2022/mintplayer-ng-bootstrap-word-count.mjs +4 -4
  189. package/fesm2022/mintplayer-ng-bootstrap-word-count.mjs.map +1 -1
  190. package/fesm2022/mintplayer-ng-bootstrap.mjs.map +1 -1
  191. package/file-upload/index.d.ts +59 -1
  192. package/floating-labels/index.d.ts +10 -1
  193. package/font-color/index.d.ts +10 -1
  194. package/for/index.d.ts +13 -1
  195. package/form/index.d.ts +33 -1
  196. package/grid/index.d.ts +74 -1
  197. package/has-id/index.d.ts +5 -1
  198. package/has-overlay/index.d.ts +8 -1
  199. package/has-property/index.d.ts +10 -1
  200. package/in-list/index.d.ts +11 -1
  201. package/index.d.ts +31 -3
  202. package/input-group/index.d.ts +8 -1
  203. package/instance-of/index.d.ts +81 -1
  204. package/let/index.d.ts +45 -2
  205. package/linify/index.d.ts +10 -1
  206. package/list-group/index.d.ts +23 -1
  207. package/markdown/index.d.ts +37 -4
  208. package/marquee/index.d.ts +8 -1
  209. package/modal/index.d.ts +76 -1
  210. package/multiselect/index.d.ts +53 -1
  211. package/navbar/index.d.ts +153 -1
  212. package/navbar-toggler/index.d.ts +17 -1
  213. package/navigation-lock/index.d.ts +64 -1
  214. package/no-noscript/index.d.ts +11 -1
  215. package/offcanvas/index.d.ts +112 -1
  216. package/ordinal-number/index.d.ts +13 -1
  217. package/package.json +17 -185
  218. package/pagination/index.d.ts +56 -1
  219. package/parallax/index.d.ts +11 -1
  220. package/placeholder/index.d.ts +32 -1
  221. package/playlist-toggler/index.d.ts +17 -1
  222. package/popover/index.d.ts +67 -1
  223. package/progress-bar/index.d.ts +46 -1
  224. package/range/index.d.ts +36 -1
  225. package/rating/index.d.ts +23 -1
  226. package/resizable/index.d.ts +94 -1
  227. package/scheduler/index.d.ts +231 -1
  228. package/scrollspy/index.d.ts +46 -1
  229. package/searchbox/index.d.ts +78 -3
  230. package/select/index.d.ts +80 -1
  231. package/select2/index.d.ts +68 -1
  232. package/shell/index.d.ts +39 -4
  233. package/signature-pad/index.d.ts +41 -1
  234. package/slugify/index.d.ts +10 -1
  235. package/spinner/index.d.ts +22 -1
  236. package/split-string/index.d.ts +10 -1
  237. package/splitter/index.d.ts +81 -1
  238. package/sticky-footer/index.d.ts +29 -1
  239. package/tab-control/index.d.ts +72 -1
  240. package/table/index.d.ts +18 -1
  241. package/timepicker/index.d.ts +33 -1
  242. package/toast/index.d.ts +75 -1
  243. package/toggle-button/index.d.ts +69 -1
  244. package/tooltip/index.d.ts +47 -1
  245. package/treeview/index.d.ts +37 -1
  246. package/trust-html/index.d.ts +14 -1
  247. package/typeahead/index.d.ts +28 -1
  248. package/uc-first/index.d.ts +10 -1
  249. package/user-agent/index.d.ts +28 -1
  250. package/word-count/index.d.ts +10 -1
  251. package/accordion/src/accordion/accordion.component.d.ts +0 -16
  252. package/accordion/src/accordion-tab/accordion-tab.component.d.ts +0 -20
  253. package/accordion/src/accordion-tab-header/accordion-tab-header.component.d.ts +0 -9
  254. package/accordion/src/accordion.module.d.ts +0 -11
  255. package/accordion/src/index.d.ts +0 -4
  256. package/alert/src/alert/alert.component.d.ts +0 -15
  257. package/alert/src/alert-close/alert-close.component.d.ts +0 -9
  258. package/alert/src/alert.module.d.ts +0 -8
  259. package/alert/src/index.d.ts +0 -3
  260. package/async-host-binding/src/bind-event.plugin.d.ts +0 -7
  261. package/async-host-binding/src/index.d.ts +0 -2
  262. package/async-host-binding/src/provide-async-host-bindings.d.ts +0 -2
  263. package/badge/src/badge.component.d.ts +0 -13
  264. package/badge/src/index.d.ts +0 -1
  265. package/breadcrumb/src/breadcrumb/breadcrumb.component.d.ts +0 -8
  266. package/breadcrumb/src/breadcrumb-item/breadcrumb-item.component.d.ts +0 -9
  267. package/breadcrumb/src/breadcrumb.module.d.ts +0 -8
  268. package/breadcrumb/src/index.d.ts +0 -3
  269. package/button-group/src/button-group/button-group.component.d.ts +0 -5
  270. package/button-group/src/index.d.ts +0 -1
  271. package/button-type/src/button-type/button-type.directive.d.ts +0 -9
  272. package/button-type/src/index.d.ts +0 -1
  273. package/calendar/src/calendar.component.d.ts +0 -29
  274. package/calendar/src/index.d.ts +0 -1
  275. package/calendar-month/src/index.d.ts +0 -3
  276. package/calendar-month/src/interfaces/date-day-of-month.d.ts +0 -5
  277. package/calendar-month/src/interfaces/first-and-last-date.d.ts +0 -4
  278. package/calendar-month/src/interfaces/index.d.ts +0 -4
  279. package/calendar-month/src/interfaces/week.d.ts +0 -5
  280. package/calendar-month/src/interfaces/weekday.d.ts +0 -4
  281. package/calendar-month/src/pipes/index.d.ts +0 -2
  282. package/calendar-month/src/pipes/month-name/month-name.pipe.d.ts +0 -7
  283. package/calendar-month/src/pipes/weekday-name/weekday-name.pipe.d.ts +0 -7
  284. package/calendar-month/src/service/calendar-month.service.d.ts +0 -18
  285. package/card/src/card/card.component.d.ts +0 -6
  286. package/card/src/card-header/card-header.component.d.ts +0 -6
  287. package/card/src/card.module.d.ts +0 -9
  288. package/card/src/index.d.ts +0 -3
  289. package/carousel/src/carousel/carousel.component.d.ts +0 -35
  290. package/carousel/src/carousel-image/carousel-image.directive.d.ts +0 -13
  291. package/carousel/src/carousel-img/carousel-img.directive.d.ts +0 -8
  292. package/carousel/src/carousel.module.d.ts +0 -12
  293. package/carousel/src/index.d.ts +0 -4
  294. package/close/src/close.component.d.ts +0 -10
  295. package/close/src/index.d.ts +0 -1
  296. package/code-snippet/src/code-snippet.component.d.ts +0 -18
  297. package/code-snippet/src/index.d.ts +0 -1
  298. package/color-picker/color-picker.module.d.ts +0 -14
  299. package/color-picker/components/alpha-strip/alpha-strip.component.d.ts +0 -23
  300. package/color-picker/components/color-picker/color-picker.component.d.ts +0 -22
  301. package/color-picker/components/color-wheel/color-wheel.component.d.ts +0 -53
  302. package/color-picker/components/index.d.ts +0 -5
  303. package/color-picker/components/luminosity-strip/luminosity-strip.component.d.ts +0 -20
  304. package/color-picker/components/slider/slider.component.d.ts +0 -35
  305. package/color-picker/directives/color-picker-value-accessor/color-picker-value-accessor.directive.d.ts +0 -28
  306. package/color-picker/directives/index.d.ts +0 -1
  307. package/color-picker/interfaces/hs.d.ts +0 -4
  308. package/color-picker/interfaces/hsl-color.d.ts +0 -5
  309. package/color-picker/interfaces/index.d.ts +0 -3
  310. package/color-picker/interfaces/rgb-color.d.ts +0 -5
  311. package/color-picker/types/html-color.d.ts +0 -1
  312. package/color-picker/types/index.d.ts +0 -1
  313. package/container/src/container/container.component.d.ts +0 -5
  314. package/container/src/index.d.ts +0 -1
  315. package/context-menu/src/context-menu.directive.d.ts +0 -18
  316. package/context-menu/src/context-menu.module.d.ts +0 -10
  317. package/context-menu/src/index.d.ts +0 -2
  318. package/copy/src/copy.directive.d.ts +0 -11
  319. package/copy/src/index.d.ts +0 -1
  320. package/datatable/src/datatable/datatable.component.d.ts +0 -20
  321. package/datatable/src/datatable-column/datatable-column.directive.d.ts +0 -10
  322. package/datatable/src/datatable-settings.d.ts +0 -15
  323. package/datatable/src/datatable.module.d.ts +0 -13
  324. package/datatable/src/index.d.ts +0 -5
  325. package/datatable/src/row-template/row-template.directive.d.ts +0 -15
  326. package/datepicker/src/datepicker.component.d.ts +0 -17
  327. package/datepicker/src/index.d.ts +0 -1
  328. package/dock/src/dock/dock.component.d.ts +0 -24
  329. package/dock/src/dock-pane-renderer/dock-pane-renderer.component.d.ts +0 -31
  330. package/dock/src/dock-panel/dock-panel.component.d.ts +0 -13
  331. package/dock/src/dock-panel-header/dock-panel-header.component.d.ts +0 -26
  332. package/dock/src/dock.module.d.ts +0 -17
  333. package/dock/src/enums/index.d.ts +0 -1
  334. package/dock/src/enums/pane-type.enum.d.ts +0 -6
  335. package/dock/src/index.d.ts +0 -9
  336. package/dock/src/interfaces/dock-layout.d.ts +0 -6
  337. package/dock/src/interfaces/drag-operation.d.ts +0 -6
  338. package/dock/src/interfaces/index.d.ts +0 -5
  339. package/dock/src/interfaces/point.d.ts +0 -4
  340. package/dock/src/interfaces/remove-from-pane-result.d.ts +0 -6
  341. package/dock/src/interfaces/size.d.ts +0 -4
  342. package/dock/src/panes/content-pane.d.ts +0 -8
  343. package/dock/src/panes/dock-pane.d.ts +0 -3
  344. package/dock/src/panes/document-host-pane.d.ts +0 -7
  345. package/dock/src/panes/floating-pane.d.ts +0 -10
  346. package/dock/src/panes/index.d.ts +0 -6
  347. package/dock/src/panes/split-pane.d.ts +0 -8
  348. package/dock/src/panes/tab-group-pane.d.ts +0 -7
  349. package/dock/src/services/dock/dock.service.d.ts +0 -14
  350. package/dock/src/services/index.d.ts +0 -1
  351. package/dock/src/types/split-pane-orientation.type.d.ts +0 -1
  352. package/dropdown/src/dropdown/dropdown.directive.d.ts +0 -23
  353. package/dropdown/src/dropdown-menu/dropdown-menu.directive.d.ts +0 -22
  354. package/dropdown/src/dropdown-toggle/dropdown-toggle.directive.d.ts +0 -11
  355. package/dropdown/src/dropdown.module.d.ts +0 -13
  356. package/dropdown/src/index.d.ts +0 -4
  357. package/dropdown-divider/src/dropdown-divider.directive.d.ts +0 -6
  358. package/dropdown-divider/src/index.d.ts +0 -1
  359. package/dropdown-menu/src/dropdown-item/dropdown-item.component.d.ts +0 -7
  360. package/dropdown-menu/src/dropdown-menu/dropdown-menu.component.d.ts +0 -14
  361. package/dropdown-menu/src/dropdown-menu.module.d.ts +0 -10
  362. package/dropdown-menu/src/index.d.ts +0 -3
  363. package/enhanced-paste/src/directive/enhanced-paste.directive.d.ts +0 -14
  364. package/enhanced-paste/src/index.d.ts +0 -2
  365. package/enhanced-paste/src/interfaces/number-overflow.d.ts +0 -5
  366. package/enum/src/index.d.ts +0 -2
  367. package/enum/src/interfaces/enum-item.d.ts +0 -4
  368. package/enum/src/interfaces/index.d.ts +0 -1
  369. package/enum/src/service/enum.service.d.ts +0 -9
  370. package/esm2022/accordion/index.mjs +0 -2
  371. package/esm2022/accordion/mintplayer-ng-bootstrap-accordion.mjs +0 -5
  372. package/esm2022/accordion/src/accordion/accordion.component.mjs +0 -26
  373. package/esm2022/accordion/src/accordion-tab/accordion-tab.component.mjs +0 -68
  374. package/esm2022/accordion/src/accordion-tab-header/accordion-tab-header.component.mjs +0 -20
  375. package/esm2022/accordion/src/accordion.module.mjs +0 -37
  376. package/esm2022/accordion/src/index.mjs +0 -5
  377. package/esm2022/alert/index.mjs +0 -2
  378. package/esm2022/alert/mintplayer-ng-bootstrap-alert.mjs +0 -5
  379. package/esm2022/alert/src/alert/alert.component.mjs +0 -40
  380. package/esm2022/alert/src/alert-close/alert-close.component.mjs +0 -19
  381. package/esm2022/alert/src/alert.module.mjs +0 -25
  382. package/esm2022/alert/src/index.mjs +0 -4
  383. package/esm2022/async-host-binding/index.mjs +0 -2
  384. package/esm2022/async-host-binding/mintplayer-ng-bootstrap-async-host-binding.mjs +0 -5
  385. package/esm2022/async-host-binding/src/bind-event.plugin.mjs +0 -31
  386. package/esm2022/async-host-binding/src/index.mjs +0 -3
  387. package/esm2022/async-host-binding/src/provide-async-host-bindings.mjs +0 -10
  388. package/esm2022/badge/index.mjs +0 -2
  389. package/esm2022/badge/mintplayer-ng-bootstrap-badge.mjs +0 -5
  390. package/esm2022/badge/src/badge.component.mjs +0 -29
  391. package/esm2022/badge/src/index.mjs +0 -2
  392. package/esm2022/breadcrumb/index.mjs +0 -2
  393. package/esm2022/breadcrumb/mintplayer-ng-bootstrap-breadcrumb.mjs +0 -5
  394. package/esm2022/breadcrumb/src/breadcrumb/breadcrumb.component.mjs +0 -13
  395. package/esm2022/breadcrumb/src/breadcrumb-item/breadcrumb-item.component.mjs +0 -18
  396. package/esm2022/breadcrumb/src/breadcrumb.module.mjs +0 -17
  397. package/esm2022/breadcrumb/src/index.mjs +0 -4
  398. package/esm2022/button-group/index.mjs +0 -2
  399. package/esm2022/button-group/mintplayer-ng-bootstrap-button-group.mjs +0 -5
  400. package/esm2022/button-group/src/button-group/button-group.component.mjs +0 -11
  401. package/esm2022/button-group/src/index.mjs +0 -2
  402. package/esm2022/button-type/index.mjs +0 -2
  403. package/esm2022/button-type/mintplayer-ng-bootstrap-button-type.mjs +0 -5
  404. package/esm2022/button-type/src/button-type/button-type.directive.mjs +0 -31
  405. package/esm2022/button-type/src/index.mjs +0 -2
  406. package/esm2022/calendar/index.mjs +0 -2
  407. package/esm2022/calendar/mintplayer-ng-bootstrap-calendar.mjs +0 -5
  408. package/esm2022/calendar/src/calendar.component.mjs +0 -108
  409. package/esm2022/calendar/src/index.mjs +0 -2
  410. package/esm2022/calendar-month/index.mjs +0 -2
  411. package/esm2022/calendar-month/mintplayer-ng-bootstrap-calendar-month.mjs +0 -5
  412. package/esm2022/calendar-month/src/index.mjs +0 -4
  413. package/esm2022/calendar-month/src/interfaces/date-day-of-month.mjs +0 -2
  414. package/esm2022/calendar-month/src/interfaces/first-and-last-date.mjs +0 -2
  415. package/esm2022/calendar-month/src/interfaces/index.mjs +0 -5
  416. package/esm2022/calendar-month/src/interfaces/week.mjs +0 -2
  417. package/esm2022/calendar-month/src/interfaces/weekday.mjs +0 -2
  418. package/esm2022/calendar-month/src/pipes/index.mjs +0 -3
  419. package/esm2022/calendar-month/src/pipes/month-name/month-name.pipe.mjs +0 -23
  420. package/esm2022/calendar-month/src/pipes/weekday-name/weekday-name.pipe.mjs +0 -18
  421. package/esm2022/calendar-month/src/service/calendar-month.service.mjs +0 -94
  422. package/esm2022/card/index.mjs +0 -2
  423. package/esm2022/card/mintplayer-ng-bootstrap-card.mjs +0 -5
  424. package/esm2022/card/src/card/card.component.mjs +0 -16
  425. package/esm2022/card/src/card-header/card-header.component.mjs +0 -16
  426. package/esm2022/card/src/card.module.mjs +0 -27
  427. package/esm2022/card/src/index.mjs +0 -4
  428. package/esm2022/carousel/index.mjs +0 -2
  429. package/esm2022/carousel/mintplayer-ng-bootstrap-carousel.mjs +0 -5
  430. package/esm2022/carousel/src/carousel/carousel.component.mjs +0 -149
  431. package/esm2022/carousel/src/carousel-image/carousel-image.directive.mjs +0 -21
  432. package/esm2022/carousel/src/carousel-img/carousel-img.directive.mjs +0 -20
  433. package/esm2022/carousel/src/carousel.module.mjs +0 -42
  434. package/esm2022/carousel/src/index.mjs +0 -5
  435. package/esm2022/close/index.mjs +0 -2
  436. package/esm2022/close/mintplayer-ng-bootstrap-close.mjs +0 -5
  437. package/esm2022/close/src/close.component.mjs +0 -21
  438. package/esm2022/close/src/index.mjs +0 -2
  439. package/esm2022/code-snippet/index.mjs +0 -2
  440. package/esm2022/code-snippet/mintplayer-ng-bootstrap-code-snippet.mjs +0 -5
  441. package/esm2022/code-snippet/src/code-snippet.component.mjs +0 -47
  442. package/esm2022/code-snippet/src/index.mjs +0 -2
  443. package/esm2022/color-picker/color-picker.module.mjs +0 -60
  444. package/esm2022/color-picker/components/alpha-strip/alpha-strip.component.mjs +0 -80
  445. package/esm2022/color-picker/components/color-picker/color-picker.component.mjs +0 -52
  446. package/esm2022/color-picker/components/color-wheel/color-wheel.component.mjs +0 -321
  447. package/esm2022/color-picker/components/index.mjs +0 -6
  448. package/esm2022/color-picker/components/luminosity-strip/luminosity-strip.component.mjs +0 -72
  449. package/esm2022/color-picker/components/slider/slider.component.mjs +0 -125
  450. package/esm2022/color-picker/directives/color-picker-value-accessor/color-picker-value-accessor.directive.mjs +0 -130
  451. package/esm2022/color-picker/directives/index.mjs +0 -2
  452. package/esm2022/color-picker/index.mjs +0 -6
  453. package/esm2022/color-picker/interfaces/hs.mjs +0 -2
  454. package/esm2022/color-picker/interfaces/hsl-color.mjs +0 -2
  455. package/esm2022/color-picker/interfaces/index.mjs +0 -4
  456. package/esm2022/color-picker/interfaces/rgb-color.mjs +0 -2
  457. package/esm2022/color-picker/mintplayer-ng-bootstrap-color-picker.mjs +0 -5
  458. package/esm2022/color-picker/types/html-color.mjs +0 -2
  459. package/esm2022/color-picker/types/index.mjs +0 -2
  460. package/esm2022/container/index.mjs +0 -2
  461. package/esm2022/container/mintplayer-ng-bootstrap-container.mjs +0 -5
  462. package/esm2022/container/src/container/container.component.mjs +0 -11
  463. package/esm2022/container/src/index.mjs +0 -2
  464. package/esm2022/context-menu/index.mjs +0 -2
  465. package/esm2022/context-menu/mintplayer-ng-bootstrap-context-menu.mjs +0 -5
  466. package/esm2022/context-menu/src/context-menu.directive.mjs +0 -83
  467. package/esm2022/context-menu/src/context-menu.module.mjs +0 -34
  468. package/esm2022/context-menu/src/index.mjs +0 -3
  469. package/esm2022/copy/index.mjs +0 -2
  470. package/esm2022/copy/mintplayer-ng-bootstrap-copy.mjs +0 -5
  471. package/esm2022/copy/src/copy.directive.mjs +0 -46
  472. package/esm2022/copy/src/index.mjs +0 -2
  473. package/esm2022/datatable/index.mjs +0 -2
  474. package/esm2022/datatable/mintplayer-ng-bootstrap-datatable.mjs +0 -5
  475. package/esm2022/datatable/src/datatable/datatable.component.mjs +0 -56
  476. package/esm2022/datatable/src/datatable-column/datatable-column.directive.mjs +0 -24
  477. package/esm2022/datatable/src/datatable-settings.mjs +0 -37
  478. package/esm2022/datatable/src/datatable.module.mjs +0 -47
  479. package/esm2022/datatable/src/index.mjs +0 -6
  480. package/esm2022/datatable/src/row-template/row-template.directive.mjs +0 -31
  481. package/esm2022/datepicker/index.mjs +0 -2
  482. package/esm2022/datepicker/mintplayer-ng-bootstrap-datepicker.mjs +0 -5
  483. package/esm2022/datepicker/src/datepicker.component.mjs +0 -53
  484. package/esm2022/datepicker/src/index.mjs +0 -2
  485. package/esm2022/dock/index.mjs +0 -2
  486. package/esm2022/dock/mintplayer-ng-bootstrap-dock.mjs +0 -5
  487. package/esm2022/dock/src/dock/dock.component.mjs +0 -88
  488. package/esm2022/dock/src/dock-pane-renderer/dock-pane-renderer.component.mjs +0 -59
  489. package/esm2022/dock/src/dock-panel/dock-panel.component.mjs +0 -27
  490. package/esm2022/dock/src/dock-panel-header/dock-panel-header.component.mjs +0 -274
  491. package/esm2022/dock/src/dock.module.mjs +0 -62
  492. package/esm2022/dock/src/enums/index.mjs +0 -2
  493. package/esm2022/dock/src/enums/pane-type.enum.mjs +0 -8
  494. package/esm2022/dock/src/index.mjs +0 -10
  495. package/esm2022/dock/src/interfaces/dock-layout.mjs +0 -2
  496. package/esm2022/dock/src/interfaces/drag-operation.mjs +0 -2
  497. package/esm2022/dock/src/interfaces/index.mjs +0 -6
  498. package/esm2022/dock/src/interfaces/point.mjs +0 -2
  499. package/esm2022/dock/src/interfaces/remove-from-pane-result.mjs +0 -2
  500. package/esm2022/dock/src/interfaces/size.mjs +0 -2
  501. package/esm2022/dock/src/panes/content-pane.mjs +0 -11
  502. package/esm2022/dock/src/panes/dock-pane.mjs +0 -3
  503. package/esm2022/dock/src/panes/document-host-pane.mjs +0 -11
  504. package/esm2022/dock/src/panes/floating-pane.mjs +0 -11
  505. package/esm2022/dock/src/panes/index.mjs +0 -7
  506. package/esm2022/dock/src/panes/split-pane.mjs +0 -13
  507. package/esm2022/dock/src/panes/tab-group-pane.mjs +0 -12
  508. package/esm2022/dock/src/services/dock/dock.service.mjs +0 -56
  509. package/esm2022/dock/src/services/index.mjs +0 -2
  510. package/esm2022/dock/src/types/split-pane-orientation.type.mjs +0 -2
  511. package/esm2022/dropdown/index.mjs +0 -2
  512. package/esm2022/dropdown/mintplayer-ng-bootstrap-dropdown.mjs +0 -5
  513. package/esm2022/dropdown/src/dropdown/dropdown.directive.mjs +0 -70
  514. package/esm2022/dropdown/src/dropdown-menu/dropdown-menu.directive.mjs +0 -110
  515. package/esm2022/dropdown/src/dropdown-toggle/dropdown-toggle.directive.mjs +0 -27
  516. package/esm2022/dropdown/src/dropdown.module.mjs +0 -41
  517. package/esm2022/dropdown/src/index.mjs +0 -5
  518. package/esm2022/dropdown-divider/index.mjs +0 -2
  519. package/esm2022/dropdown-divider/mintplayer-ng-bootstrap-dropdown-divider.mjs +0 -5
  520. package/esm2022/dropdown-divider/src/dropdown-divider.directive.mjs +0 -20
  521. package/esm2022/dropdown-divider/src/index.mjs +0 -2
  522. package/esm2022/dropdown-menu/index.mjs +0 -2
  523. package/esm2022/dropdown-menu/mintplayer-ng-bootstrap-dropdown-menu.mjs +0 -5
  524. package/esm2022/dropdown-menu/src/dropdown-item/dropdown-item.component.mjs +0 -19
  525. package/esm2022/dropdown-menu/src/dropdown-menu/dropdown-menu.component.mjs +0 -41
  526. package/esm2022/dropdown-menu/src/dropdown-menu.module.mjs +0 -26
  527. package/esm2022/dropdown-menu/src/index.mjs +0 -4
  528. package/esm2022/enhanced-paste/index.mjs +0 -2
  529. package/esm2022/enhanced-paste/mintplayer-ng-bootstrap-enhanced-paste.mjs +0 -5
  530. package/esm2022/enhanced-paste/src/directive/enhanced-paste.directive.mjs +0 -58
  531. package/esm2022/enhanced-paste/src/index.mjs +0 -3
  532. package/esm2022/enhanced-paste/src/interfaces/number-overflow.mjs +0 -2
  533. package/esm2022/enum/index.mjs +0 -2
  534. package/esm2022/enum/mintplayer-ng-bootstrap-enum.mjs +0 -5
  535. package/esm2022/enum/src/index.mjs +0 -3
  536. package/esm2022/enum/src/interfaces/enum-item.mjs +0 -2
  537. package/esm2022/enum/src/interfaces/index.mjs +0 -2
  538. package/esm2022/enum/src/service/enum.service.mjs +0 -31
  539. package/esm2022/file-upload/index.mjs +0 -2
  540. package/esm2022/file-upload/mintplayer-ng-bootstrap-file-upload.mjs +0 -5
  541. package/esm2022/file-upload/src/component/file-upload.component.mjs +0 -86
  542. package/esm2022/file-upload/src/directive/file-upload-template.directive.mjs +0 -31
  543. package/esm2022/file-upload/src/file-upload.mjs +0 -2
  544. package/esm2022/file-upload/src/file-upload.module.mjs +0 -47
  545. package/esm2022/file-upload/src/index.mjs +0 -6
  546. package/esm2022/file-upload/src/pipes/format-bytes/format-bytes.pipe.mjs +0 -24
  547. package/esm2022/file-upload/src/pipes/index.mjs +0 -2
  548. package/esm2022/floating-labels/index.mjs +0 -2
  549. package/esm2022/floating-labels/mintplayer-ng-bootstrap-floating-labels.mjs +0 -5
  550. package/esm2022/floating-labels/src/floating-label/floating-label.component.mjs +0 -19
  551. package/esm2022/floating-labels/src/index.mjs +0 -2
  552. package/esm2022/font-color/index.mjs +0 -2
  553. package/esm2022/font-color/mintplayer-ng-bootstrap-font-color.mjs +0 -5
  554. package/esm2022/font-color/src/font-color.pipe.mjs +0 -28
  555. package/esm2022/for/index.mjs +0 -2
  556. package/esm2022/for/mintplayer-ng-bootstrap-for.mjs +0 -5
  557. package/esm2022/for/src/for.directive.mjs +0 -37
  558. package/esm2022/for/src/index.mjs +0 -2
  559. package/esm2022/form/index.mjs +0 -2
  560. package/esm2022/form/mintplayer-ng-bootstrap-form.mjs +0 -5
  561. package/esm2022/form/src/form/form.component.mjs +0 -24
  562. package/esm2022/form/src/form-control/form-control.directive.mjs +0 -22
  563. package/esm2022/form/src/form-group/form-group.directive.mjs +0 -19
  564. package/esm2022/form/src/form.module.mjs +0 -20
  565. package/esm2022/form/src/index.mjs +0 -5
  566. package/esm2022/grid/index.mjs +0 -2
  567. package/esm2022/grid/mintplayer-ng-bootstrap-grid.mjs +0 -5
  568. package/esm2022/grid/src/component/grid.component.mjs +0 -33
  569. package/esm2022/grid/src/directives/col-form-label/col-form-label.directive.mjs +0 -19
  570. package/esm2022/grid/src/directives/column/column.directive.mjs +0 -105
  571. package/esm2022/grid/src/directives/index.mjs +0 -4
  572. package/esm2022/grid/src/directives/row/row.directive.mjs +0 -19
  573. package/esm2022/grid/src/grid.module.mjs +0 -22
  574. package/esm2022/grid/src/index.mjs +0 -5
  575. package/esm2022/grid/src/interfaces/column-definition.mjs +0 -2
  576. package/esm2022/grid/src/interfaces/index.mjs +0 -2
  577. package/esm2022/has-id/index.mjs +0 -2
  578. package/esm2022/has-id/mintplayer-ng-bootstrap-has-id.mjs +0 -5
  579. package/esm2022/has-id/src/has-id.mjs +0 -2
  580. package/esm2022/has-overlay/index.mjs +0 -2
  581. package/esm2022/has-overlay/mintplayer-ng-bootstrap-has-overlay.mjs +0 -5
  582. package/esm2022/has-overlay/src/has-overlay/has-overlay.component.mjs +0 -11
  583. package/esm2022/has-overlay/src/index.mjs +0 -2
  584. package/esm2022/has-property/index.mjs +0 -2
  585. package/esm2022/has-property/mintplayer-ng-bootstrap-has-property.mjs +0 -5
  586. package/esm2022/has-property/src/has-property.pipe.mjs +0 -17
  587. package/esm2022/has-property/src/index.mjs +0 -2
  588. package/esm2022/in-list/index.mjs +0 -2
  589. package/esm2022/in-list/mintplayer-ng-bootstrap-in-list.mjs +0 -5
  590. package/esm2022/in-list/src/in-list.pipe.mjs +0 -17
  591. package/esm2022/index.mjs +0 -4
  592. package/esm2022/input-group/index.mjs +0 -2
  593. package/esm2022/input-group/mintplayer-ng-bootstrap-input-group.mjs +0 -5
  594. package/esm2022/input-group/src/index.mjs +0 -2
  595. package/esm2022/input-group/src/input-group/input-group.component.mjs +0 -11
  596. package/esm2022/instance-of/index.mjs +0 -2
  597. package/esm2022/instance-of/mintplayer-ng-bootstrap-instance-of.mjs +0 -5
  598. package/esm2022/instance-of/src/directives/index.mjs +0 -5
  599. package/esm2022/instance-of/src/directives/instanceof-case.directive.mjs +0 -46
  600. package/esm2022/instance-of/src/directives/instanceof-default.directive.mjs +0 -29
  601. package/esm2022/instance-of/src/directives/instanceof.directive.mjs +0 -62
  602. package/esm2022/instance-of/src/directives/switch-view.mjs +0 -30
  603. package/esm2022/instance-of/src/index.mjs +0 -6
  604. package/esm2022/instance-of/src/instance-of.module.mjs +0 -37
  605. package/esm2022/instance-of/src/interfaces/index.mjs +0 -2
  606. package/esm2022/instance-of/src/interfaces/instance-of-context.mjs +0 -7
  607. package/esm2022/instance-of/src/pipes/index.mjs +0 -2
  608. package/esm2022/instance-of/src/pipes/instance-of.pipe.mjs +0 -17
  609. package/esm2022/instance-of/src/types/abstract.type.mjs +0 -2
  610. package/esm2022/instance-of/src/types/index.mjs +0 -2
  611. package/esm2022/let/directive/let.directive.mjs +0 -39
  612. package/esm2022/let/index.mjs +0 -3
  613. package/esm2022/let/interfaces/index.mjs +0 -2
  614. package/esm2022/let/interfaces/let-context.mjs +0 -2
  615. package/esm2022/let/mintplayer-ng-bootstrap-let.mjs +0 -5
  616. package/esm2022/lib/enums/color.enum.mjs +0 -15
  617. package/esm2022/lib/enums/index.mjs +0 -2
  618. package/esm2022/lib/providers/development.provider.mjs +0 -8
  619. package/esm2022/lib/providers/index.mjs +0 -2
  620. package/esm2022/lib/types/breakpoint.mjs +0 -2
  621. package/esm2022/lib/types/index.mjs +0 -4
  622. package/esm2022/lib/types/position.mjs +0 -2
  623. package/esm2022/lib/types/size.mjs +0 -2
  624. package/esm2022/linify/index.mjs +0 -2
  625. package/esm2022/linify/mintplayer-ng-bootstrap-linify.mjs +0 -5
  626. package/esm2022/linify/src/linify.pipe.mjs +0 -22
  627. package/esm2022/list-group/index.mjs +0 -2
  628. package/esm2022/list-group/mintplayer-ng-bootstrap-list-group.mjs +0 -5
  629. package/esm2022/list-group/src/index.mjs +0 -4
  630. package/esm2022/list-group/src/list-group/list-group.component.mjs +0 -19
  631. package/esm2022/list-group/src/list-group-item/list-group-item.component.mjs +0 -17
  632. package/esm2022/list-group/src/list-group.module.mjs +0 -27
  633. package/esm2022/markdown/index.mjs +0 -5
  634. package/esm2022/markdown/mintplayer-ng-bootstrap-markdown.mjs +0 -5
  635. package/esm2022/markdown/src/bold/bold.pipe.mjs +0 -31
  636. package/esm2022/markdown/src/italic/italic.pipe.mjs +0 -31
  637. package/esm2022/markdown/src/strikethrough/strikethrough.pipe.mjs +0 -31
  638. package/esm2022/markdown/src/underline/underline.pipe.mjs +0 -31
  639. package/esm2022/marquee/index.mjs +0 -2
  640. package/esm2022/marquee/mintplayer-ng-bootstrap-marquee.mjs +0 -5
  641. package/esm2022/marquee/src/marquee/marquee.component.mjs +0 -11
  642. package/esm2022/mintplayer-ng-bootstrap.mjs +0 -5
  643. package/esm2022/modal/index.mjs +0 -2
  644. package/esm2022/modal/mintplayer-ng-bootstrap-modal.mjs +0 -5
  645. package/esm2022/modal/src/components/index.mjs +0 -3
  646. package/esm2022/modal/src/components/modal/modal.component.mjs +0 -21
  647. package/esm2022/modal/src/components/modal-host/modal-host.component.mjs +0 -76
  648. package/esm2022/modal/src/directives/index.mjs +0 -6
  649. package/esm2022/modal/src/directives/modal/modal.directive.mjs +0 -17
  650. package/esm2022/modal/src/directives/modal-body/modal-body.directive.mjs +0 -19
  651. package/esm2022/modal/src/directives/modal-close/modal-close.directive.mjs +0 -23
  652. package/esm2022/modal/src/directives/modal-footer/modal-footer.directive.mjs +0 -19
  653. package/esm2022/modal/src/directives/modal-header/modal-header.directive.mjs +0 -19
  654. package/esm2022/modal/src/index.mjs +0 -4
  655. package/esm2022/modal/src/modal.module.mjs +0 -74
  656. package/esm2022/modal/src/providers/modal-content.provider.mjs +0 -3
  657. package/esm2022/modal/src/providers/portal-factory.provider.mjs +0 -3
  658. package/esm2022/multiselect/index.mjs +0 -2
  659. package/esm2022/multiselect/mintplayer-ng-bootstrap-multiselect.mjs +0 -5
  660. package/esm2022/multiselect/src/component/multiselect.component.mjs +0 -40
  661. package/esm2022/multiselect/src/directives/button-template/button-template.directive.mjs +0 -25
  662. package/esm2022/multiselect/src/directives/footer-template/footer-template.directive.mjs +0 -17
  663. package/esm2022/multiselect/src/directives/header-template/header-template.directive.mjs +0 -17
  664. package/esm2022/multiselect/src/directives/index.mjs +0 -4
  665. package/esm2022/multiselect/src/index.mjs +0 -4
  666. package/esm2022/multiselect/src/multiselect.module.mjs +0 -60
  667. package/esm2022/navbar/index.mjs +0 -2
  668. package/esm2022/navbar/mintplayer-ng-bootstrap-navbar.mjs +0 -5
  669. package/esm2022/navbar/src/dropdown-toggle/dropdown-toggle.directive.mjs +0 -38
  670. package/esm2022/navbar/src/expand-button/expand-button.directive.mjs +0 -25
  671. package/esm2022/navbar/src/index.mjs +0 -12
  672. package/esm2022/navbar/src/nav-link/nav-link.directive.mjs +0 -42
  673. package/esm2022/navbar/src/navbar/navbar.component.mjs +0 -137
  674. package/esm2022/navbar/src/navbar-brand/navbar-brand.component.mjs +0 -20
  675. package/esm2022/navbar/src/navbar-content/navbar-content.directive.mjs +0 -63
  676. package/esm2022/navbar/src/navbar-dropdown/navbar-dropdown.component.mjs +0 -147
  677. package/esm2022/navbar/src/navbar-item/navbar-item.component.mjs +0 -96
  678. package/esm2022/navbar/src/navbar-nav/navbar-nav.component.mjs +0 -63
  679. package/esm2022/navbar/src/navbar.module.mjs +0 -93
  680. package/esm2022/navbar-toggler/index.mjs +0 -2
  681. package/esm2022/navbar-toggler/mintplayer-ng-bootstrap-navbar-toggler.mjs +0 -5
  682. package/esm2022/navbar-toggler/src/index.mjs +0 -2
  683. package/esm2022/navbar-toggler/src/navbar-toggler/navbar-toggler.component.mjs +0 -43
  684. package/esm2022/navigation-lock/index.mjs +0 -2
  685. package/esm2022/navigation-lock/mintplayer-ng-bootstrap-navigation-lock.mjs +0 -5
  686. package/esm2022/navigation-lock/src/directive/navigation-lock.directive.mjs +0 -89
  687. package/esm2022/navigation-lock/src/guard/navigation-lock.guard.mjs +0 -22
  688. package/esm2022/navigation-lock/src/index.mjs +0 -5
  689. package/esm2022/navigation-lock/src/interface/has-navigation-lock.mjs +0 -2
  690. package/esm2022/navigation-lock/src/navigation-lock.module.mjs +0 -28
  691. package/esm2022/no-noscript/index.mjs +0 -2
  692. package/esm2022/no-noscript/mintplayer-ng-bootstrap-no-noscript.mjs +0 -5
  693. package/esm2022/no-noscript/src/index.mjs +0 -2
  694. package/esm2022/no-noscript/src/no-noscript/no-noscript.directive.mjs +0 -28
  695. package/esm2022/offcanvas/index.mjs +0 -2
  696. package/esm2022/offcanvas/mintplayer-ng-bootstrap-offcanvas.mjs +0 -5
  697. package/esm2022/offcanvas/src/components/index.mjs +0 -5
  698. package/esm2022/offcanvas/src/components/offcanvas/offcanvas.component.mjs +0 -108
  699. package/esm2022/offcanvas/src/components/offcanvas-body/offcanvas-body.component.mjs +0 -18
  700. package/esm2022/offcanvas/src/components/offcanvas-header/offcanvas-header.component.mjs +0 -14
  701. package/esm2022/offcanvas/src/components/offcanvas-host/offcanvas-host.component.mjs +0 -125
  702. package/esm2022/offcanvas/src/directives/index.mjs +0 -4
  703. package/esm2022/offcanvas/src/directives/offcanvas-close/offcanvas-close.directive.mjs +0 -23
  704. package/esm2022/offcanvas/src/directives/offcanvas-content/offcanvas-content.directive.mjs +0 -17
  705. package/esm2022/offcanvas/src/directives/offcanvas-push/offcanvas-push.directive.mjs +0 -65
  706. package/esm2022/offcanvas/src/index.mjs +0 -4
  707. package/esm2022/offcanvas/src/offcanvas.module.mjs +0 -76
  708. package/esm2022/offcanvas/src/providers/offcanvas-content.provider.mjs +0 -3
  709. package/esm2022/offcanvas/src/providers/portal-factory.provider.mjs +0 -3
  710. package/esm2022/ordinal-number/index.mjs +0 -2
  711. package/esm2022/ordinal-number/mintplayer-ng-bootstrap-ordinal-number.mjs +0 -5
  712. package/esm2022/ordinal-number/src/index.mjs +0 -2
  713. package/esm2022/ordinal-number/src/ordinal-number/ordinal-number.pipe.mjs +0 -30
  714. package/esm2022/pagination/index.mjs +0 -2
  715. package/esm2022/pagination/mintplayer-ng-bootstrap-pagination.mjs +0 -5
  716. package/esm2022/pagination/src/component/index.mjs +0 -2
  717. package/esm2022/pagination/src/component/pagination/pagination.component.mjs +0 -188
  718. package/esm2022/pagination/src/index.mjs +0 -4
  719. package/esm2022/pagination/src/interfaces/index.mjs +0 -2
  720. package/esm2022/pagination/src/interfaces/page-with-selection.mjs +0 -2
  721. package/esm2022/pagination/src/types/index.mjs +0 -2
  722. package/esm2022/pagination/src/types/page-number.type.mjs +0 -2
  723. package/esm2022/parallax/index.mjs +0 -2
  724. package/esm2022/parallax/mintplayer-ng-bootstrap-parallax.mjs +0 -5
  725. package/esm2022/parallax/src/parallax.component.mjs +0 -20
  726. package/esm2022/placeholder/index.mjs +0 -2
  727. package/esm2022/placeholder/mintplayer-ng-bootstrap-placeholder.mjs +0 -5
  728. package/esm2022/placeholder/src/index.mjs +0 -4
  729. package/esm2022/placeholder/src/placeholder/placeholder.component.mjs +0 -26
  730. package/esm2022/placeholder/src/placeholder-field/placeholder-field.directive.mjs +0 -41
  731. package/esm2022/placeholder/src/placeholder.module.mjs +0 -19
  732. package/esm2022/playlist-toggler/index.mjs +0 -2
  733. package/esm2022/playlist-toggler/mintplayer-ng-bootstrap-playlist-toggler.mjs +0 -5
  734. package/esm2022/playlist-toggler/src/index.mjs +0 -2
  735. package/esm2022/playlist-toggler/src/playlist-toggler/playlist-toggler.component.mjs +0 -43
  736. package/esm2022/popover/index.mjs +0 -2
  737. package/esm2022/popover/mintplayer-ng-bootstrap-popover.mjs +0 -5
  738. package/esm2022/popover/src/component/popover.component.mjs +0 -57
  739. package/esm2022/popover/src/directives/index.mjs +0 -4
  740. package/esm2022/popover/src/directives/popover/popover.directive.mjs +0 -128
  741. package/esm2022/popover/src/directives/popover-body/popover-body.directive.mjs +0 -19
  742. package/esm2022/popover/src/directives/popover-header/popover-header.directive.mjs +0 -19
  743. package/esm2022/popover/src/index.mjs +0 -4
  744. package/esm2022/popover/src/popover.module.mjs +0 -36
  745. package/esm2022/popover/src/providers/popover-content.provider.mjs +0 -3
  746. package/esm2022/popover/src/providers/portal-factory.provider.mjs +0 -3
  747. package/esm2022/progress-bar/index.mjs +0 -2
  748. package/esm2022/progress-bar/mintplayer-ng-bootstrap-progress-bar.mjs +0 -5
  749. package/esm2022/progress-bar/src/index.mjs +0 -4
  750. package/esm2022/progress-bar/src/progress/progress.component.mjs +0 -30
  751. package/esm2022/progress-bar/src/progress-bar/progress-bar.component.mjs +0 -103
  752. package/esm2022/progress-bar/src/progress-bar.module.mjs +0 -29
  753. package/esm2022/range/index.mjs +0 -2
  754. package/esm2022/range/mintplayer-ng-bootstrap-range.mjs +0 -5
  755. package/esm2022/range/src/component/range.component.mjs +0 -25
  756. package/esm2022/range/src/index.mjs +0 -4
  757. package/esm2022/range/src/range.module.mjs +0 -19
  758. package/esm2022/range/src/value-accessor/range-value-accessor.mjs +0 -57
  759. package/esm2022/rating/index.mjs +0 -2
  760. package/esm2022/rating/mintplayer-ng-bootstrap-rating.mjs +0 -5
  761. package/esm2022/rating/src/component/rating.component.mjs +0 -69
  762. package/esm2022/rating/src/index.mjs +0 -2
  763. package/esm2022/resizable/index.mjs +0 -2
  764. package/esm2022/resizable/mintplayer-ng-bootstrap-resizable.mjs +0 -5
  765. package/esm2022/resizable/src/index.mjs +0 -7
  766. package/esm2022/resizable/src/interfaces/index.mjs +0 -4
  767. package/esm2022/resizable/src/interfaces/pointer-data.mjs +0 -2
  768. package/esm2022/resizable/src/interfaces/preset-position.mjs +0 -2
  769. package/esm2022/resizable/src/interfaces/resize-action.mjs +0 -2
  770. package/esm2022/resizable/src/providers/index.mjs +0 -2
  771. package/esm2022/resizable/src/providers/resizable.provider.mjs +0 -3
  772. package/esm2022/resizable/src/resizable/resizable.component.mjs +0 -95
  773. package/esm2022/resizable/src/resizable.module.mjs +0 -29
  774. package/esm2022/resizable/src/resize-glyph/resize-glyph.directive.mjs +0 -219
  775. package/esm2022/resizable/src/types/index.mjs +0 -2
  776. package/esm2022/resizable/src/types/positioning.mjs +0 -2
  777. package/esm2022/scheduler/index.mjs +0 -2
  778. package/esm2022/scheduler/mintplayer-ng-bootstrap-scheduler.mjs +0 -5
  779. package/esm2022/scheduler/src/components/index.mjs +0 -3
  780. package/esm2022/scheduler/src/components/resource-group-presenter/resource-group-presenter.component.mjs +0 -86
  781. package/esm2022/scheduler/src/components/scheduler/scheduler.component.mjs +0 -536
  782. package/esm2022/scheduler/src/constants/available-scales.mjs +0 -12
  783. package/esm2022/scheduler/src/constants/index.mjs +0 -2
  784. package/esm2022/scheduler/src/enums/drag-operation.mjs +0 -8
  785. package/esm2022/scheduler/src/enums/index.mjs +0 -2
  786. package/esm2022/scheduler/src/enums/scheduler-mode.mjs +0 -6
  787. package/esm2022/scheduler/src/index.mjs +0 -6
  788. package/esm2022/scheduler/src/interfaces/drag-operation.mjs +0 -2
  789. package/esm2022/scheduler/src/interfaces/index.mjs +0 -6
  790. package/esm2022/scheduler/src/interfaces/preview-event.mjs +0 -2
  791. package/esm2022/scheduler/src/interfaces/resource-group.mjs +0 -2
  792. package/esm2022/scheduler/src/interfaces/resource-or-group.mjs +0 -2
  793. package/esm2022/scheduler/src/interfaces/resource.mjs +0 -2
  794. package/esm2022/scheduler/src/interfaces/scheduler-event-part.mjs +0 -2
  795. package/esm2022/scheduler/src/interfaces/scheduler-event-with-parts.mjs +0 -2
  796. package/esm2022/scheduler/src/interfaces/scheduler-event.mjs +0 -2
  797. package/esm2022/scheduler/src/interfaces/scheduler-schale.mjs +0 -2
  798. package/esm2022/scheduler/src/interfaces/scheduler-stamp-with-slots.mjs +0 -2
  799. package/esm2022/scheduler/src/interfaces/time-slot.mjs +0 -2
  800. package/esm2022/scheduler/src/interfaces/timeline-options.mjs +0 -2
  801. package/esm2022/scheduler/src/interfaces/timeline-track.mjs +0 -2
  802. package/esm2022/scheduler/src/interfaces/week-options.mjs +0 -2
  803. package/esm2022/scheduler/src/pipes/bs-seconds-timespan.pipe/bs-seconds-timespan.pipe.mjs +0 -16
  804. package/esm2022/scheduler/src/pipes/bs-seconds-today-offset/bs-seconds-today-offset.pipe.mjs +0 -20
  805. package/esm2022/scheduler/src/pipes/date-offset/date-offset.pipe.mjs +0 -20
  806. package/esm2022/scheduler/src/pipes/day-of-week/day-of-week.pipe.mjs +0 -22
  807. package/esm2022/scheduler/src/scheduler.module.mjs +0 -41
  808. package/esm2022/scheduler/src/services/timeline/timeline.service.mjs +0 -65
  809. package/esm2022/scrollspy/index.mjs +0 -2
  810. package/esm2022/scrollspy/mintplayer-ng-bootstrap-scrollspy.mjs +0 -5
  811. package/esm2022/scrollspy/src/component/scrollspy.component.mjs +0 -85
  812. package/esm2022/scrollspy/src/directives/scrollspy.directive.mjs +0 -16
  813. package/esm2022/scrollspy/src/index.mjs +0 -5
  814. package/esm2022/scrollspy/src/scrollspy.module.mjs +0 -26
  815. package/esm2022/scrollspy/src/services/index.mjs +0 -2
  816. package/esm2022/scrollspy/src/services/scroll-offset/scroll-offset.service.mjs +0 -31
  817. package/esm2022/searchbox/index.mjs +0 -4
  818. package/esm2022/searchbox/mintplayer-ng-bootstrap-searchbox.mjs +0 -5
  819. package/esm2022/searchbox/src/directives/enter-search-term.directive.mjs +0 -17
  820. package/esm2022/searchbox/src/directives/index.mjs +0 -4
  821. package/esm2022/searchbox/src/directives/no-results.directive.mjs +0 -17
  822. package/esm2022/searchbox/src/directives/suggestion.directive.mjs +0 -32
  823. package/esm2022/searchbox/src/searchbox/searchbox.component.mjs +0 -113
  824. package/esm2022/searchbox/src/searchbox.module.mjs +0 -66
  825. package/esm2022/select/index.mjs +0 -2
  826. package/esm2022/select/mintplayer-ng-bootstrap-select.mjs +0 -5
  827. package/esm2022/select/src/component/select.component.mjs +0 -85
  828. package/esm2022/select/src/index.mjs +0 -5
  829. package/esm2022/select/src/select.module.mjs +0 -31
  830. package/esm2022/select/src/types/index.mjs +0 -2
  831. package/esm2022/select/src/types/select-size.mjs +0 -2
  832. package/esm2022/select/src/value-accessors/index.mjs +0 -2
  833. package/esm2022/select/src/value-accessors/select-value-accessor.mjs +0 -166
  834. package/esm2022/select2/index.mjs +0 -2
  835. package/esm2022/select2/mintplayer-ng-bootstrap-select2.mjs +0 -5
  836. package/esm2022/select2/src/component/select2.component.mjs +0 -85
  837. package/esm2022/select2/src/directive/index.mjs +0 -3
  838. package/esm2022/select2/src/directive/item-template/item-template.directive.mjs +0 -32
  839. package/esm2022/select2/src/directive/suggestion-template/suggestion-template.directive.mjs +0 -32
  840. package/esm2022/select2/src/index.mjs +0 -4
  841. package/esm2022/select2/src/select2.module.mjs +0 -52
  842. package/esm2022/shell/index.mjs +0 -5
  843. package/esm2022/shell/mintplayer-ng-bootstrap-shell.mjs +0 -5
  844. package/esm2022/shell/src/shell/shell.component.mjs +0 -41
  845. package/esm2022/shell/src/shell-sidebar/shell-sidebar.directive.mjs +0 -19
  846. package/esm2022/shell/src/shell-state.mjs +0 -2
  847. package/esm2022/shell/src/shell.module.mjs +0 -19
  848. package/esm2022/signature-pad/index.mjs +0 -2
  849. package/esm2022/signature-pad/mintplayer-ng-bootstrap-signature-pad.mjs +0 -5
  850. package/esm2022/signature-pad/src/component/signature-pad.component.mjs +0 -109
  851. package/esm2022/signature-pad/src/index.mjs +0 -3
  852. package/esm2022/signature-pad/src/interfaces/index.mjs +0 -4
  853. package/esm2022/signature-pad/src/interfaces/point.mjs +0 -2
  854. package/esm2022/signature-pad/src/interfaces/signature.mjs +0 -2
  855. package/esm2022/signature-pad/src/interfaces/stroke.mjs +0 -2
  856. package/esm2022/slugify/index.mjs +0 -2
  857. package/esm2022/slugify/mintplayer-ng-bootstrap-slugify.mjs +0 -5
  858. package/esm2022/slugify/src/slugify.pipe.mjs +0 -24
  859. package/esm2022/spinner/index.mjs +0 -2
  860. package/esm2022/spinner/mintplayer-ng-bootstrap-spinner.mjs +0 -5
  861. package/esm2022/spinner/src/index.mjs +0 -2
  862. package/esm2022/spinner/src/spinner.component.mjs +0 -43
  863. package/esm2022/split-string/index.mjs +0 -2
  864. package/esm2022/split-string/mintplayer-ng-bootstrap-split-string.mjs +0 -5
  865. package/esm2022/split-string/src/split-string.pipe.mjs +0 -19
  866. package/esm2022/splitter/index.mjs +0 -2
  867. package/esm2022/splitter/mintplayer-ng-bootstrap-splitter.mjs +0 -5
  868. package/esm2022/splitter/src/element-at/element-at.pipe.mjs +0 -21
  869. package/esm2022/splitter/src/index.mjs +0 -6
  870. package/esm2022/splitter/src/interfaces/drag-operation.mjs +0 -6
  871. package/esm2022/splitter/src/interfaces/point.mjs +0 -2
  872. package/esm2022/splitter/src/split-panel/split-panel.component.mjs +0 -18
  873. package/esm2022/splitter/src/splitter/splitter.component.mjs +0 -205
  874. package/esm2022/splitter/src/splitter.module.mjs +0 -22
  875. package/esm2022/splitter/src/types/direction.type.mjs +0 -2
  876. package/esm2022/splitter/src/types/index.mjs +0 -2
  877. package/esm2022/sticky-footer/index.mjs +0 -2
  878. package/esm2022/sticky-footer/mintplayer-ng-bootstrap-sticky-footer.mjs +0 -5
  879. package/esm2022/sticky-footer/src/index.mjs +0 -4
  880. package/esm2022/sticky-footer/src/sticky-footer/sticky-footer.component.mjs +0 -28
  881. package/esm2022/sticky-footer/src/sticky-footer-parent/sticky-footer-parent.directive.mjs +0 -16
  882. package/esm2022/sticky-footer/src/sticky-footer.module.mjs +0 -20
  883. package/esm2022/tab-control/index.mjs +0 -2
  884. package/esm2022/tab-control/mintplayer-ng-bootstrap-tab-control.mjs +0 -5
  885. package/esm2022/tab-control/src/index.mjs +0 -6
  886. package/esm2022/tab-control/src/tab-control/tab-control.component.mjs +0 -128
  887. package/esm2022/tab-control/src/tab-control.module.mjs +0 -42
  888. package/esm2022/tab-control/src/tab-page/tab-page.component.mjs +0 -29
  889. package/esm2022/tab-control/src/tab-page-header/tab-page-header.directive.mjs +0 -16
  890. package/esm2022/tab-control/src/tabs-position.mjs +0 -2
  891. package/esm2022/table/index.mjs +0 -2
  892. package/esm2022/table/mintplayer-ng-bootstrap-table.mjs +0 -5
  893. package/esm2022/table/src/component/table.component.mjs +0 -47
  894. package/esm2022/table/src/index.mjs +0 -2
  895. package/esm2022/timepicker/index.mjs +0 -2
  896. package/esm2022/timepicker/mintplayer-ng-bootstrap-timepicker.mjs +0 -5
  897. package/esm2022/timepicker/src/index.mjs +0 -2
  898. package/esm2022/timepicker/src/timepicker.component.mjs +0 -127
  899. package/esm2022/toast/index.mjs +0 -2
  900. package/esm2022/toast/mintplayer-ng-bootstrap-toast.mjs +0 -5
  901. package/esm2022/toast/src/components/index.mjs +0 -5
  902. package/esm2022/toast/src/components/toast/toast.component.mjs +0 -16
  903. package/esm2022/toast/src/components/toast-body/toast-body.component.mjs +0 -20
  904. package/esm2022/toast/src/components/toast-container/toast-container.component.mjs +0 -22
  905. package/esm2022/toast/src/components/toast-header/toast-header.component.mjs +0 -17
  906. package/esm2022/toast/src/directives/index.mjs +0 -2
  907. package/esm2022/toast/src/directives/toast-close/toast-close.directive.mjs +0 -30
  908. package/esm2022/toast/src/index.mjs +0 -6
  909. package/esm2022/toast/src/pipes/add-properties.pipe.mjs +0 -17
  910. package/esm2022/toast/src/providers/portal-factory.provider.mjs +0 -3
  911. package/esm2022/toast/src/services/index.mjs +0 -2
  912. package/esm2022/toast/src/services/toast/toast.service.mjs +0 -55
  913. package/esm2022/toast/src/toast.module.mjs +0 -78
  914. package/esm2022/toggle-button/index.mjs +0 -2
  915. package/esm2022/toggle-button/mintplayer-ng-bootstrap-toggle-button.mjs +0 -5
  916. package/esm2022/toggle-button/src/component/toggle-button.component.mjs +0 -153
  917. package/esm2022/toggle-button/src/directives/index.mjs +0 -2
  918. package/esm2022/toggle-button/src/directives/toggle-button-group/toggle-button-group.directive.mjs +0 -19
  919. package/esm2022/toggle-button/src/index.mjs +0 -6
  920. package/esm2022/toggle-button/src/toggle-button.module.mjs +0 -34
  921. package/esm2022/toggle-button/src/types/check-style.mjs +0 -2
  922. package/esm2022/toggle-button/src/types/index.mjs +0 -2
  923. package/esm2022/toggle-button/src/value-accessor/toggle-button-value-accessor.mjs +0 -103
  924. package/esm2022/tooltip/index.mjs +0 -2
  925. package/esm2022/tooltip/mintplayer-ng-bootstrap-tooltip.mjs +0 -5
  926. package/esm2022/tooltip/src/component/tooltip.component.mjs +0 -47
  927. package/esm2022/tooltip/src/directive/tooltip.directive.mjs +0 -111
  928. package/esm2022/tooltip/src/index.mjs +0 -4
  929. package/esm2022/tooltip/src/providers/tooltip-content.provider.mjs +0 -3
  930. package/esm2022/tooltip/src/tooltip.module.mjs +0 -35
  931. package/esm2022/treeview/index.mjs +0 -2
  932. package/esm2022/treeview/mintplayer-ng-bootstrap-treeview.mjs +0 -5
  933. package/esm2022/treeview/src/index.mjs +0 -4
  934. package/esm2022/treeview/src/treeview/treeview.component.mjs +0 -42
  935. package/esm2022/treeview/src/treeview-item/treeview-item.component.mjs +0 -32
  936. package/esm2022/treeview/src/treeview.module.mjs +0 -20
  937. package/esm2022/trust-html/index.mjs +0 -2
  938. package/esm2022/trust-html/mintplayer-ng-bootstrap-trust-html.mjs +0 -5
  939. package/esm2022/trust-html/src/trust-html.pipe.mjs +0 -22
  940. package/esm2022/typeahead/index.mjs +0 -2
  941. package/esm2022/typeahead/mintplayer-ng-bootstrap-typeahead.mjs +0 -5
  942. package/esm2022/typeahead/src/index.mjs +0 -2
  943. package/esm2022/typeahead/src/typeahead.component.mjs +0 -87
  944. package/esm2022/uc-first/index.mjs +0 -2
  945. package/esm2022/uc-first/mintplayer-ng-bootstrap-uc-first.mjs +0 -5
  946. package/esm2022/uc-first/src/uc-first.pipe.mjs +0 -18
  947. package/esm2022/user-agent/index.mjs +0 -2
  948. package/esm2022/user-agent/mintplayer-ng-bootstrap-user-agent.mjs +0 -5
  949. package/esm2022/user-agent/src/directive/index.mjs +0 -2
  950. package/esm2022/user-agent/src/directive/user-agent.directive.mjs +0 -99
  951. package/esm2022/user-agent/src/index.mjs +0 -4
  952. package/esm2022/user-agent/src/interfaces/index.mjs +0 -2
  953. package/esm2022/user-agent/src/interfaces/user-agent.mjs +0 -2
  954. package/esm2022/user-agent/src/types/index.mjs +0 -3
  955. package/esm2022/user-agent/src/types/operating-system.type.mjs +0 -2
  956. package/esm2022/user-agent/src/types/webbrowser.type.mjs +0 -2
  957. package/esm2022/word-count/index.mjs +0 -2
  958. package/esm2022/word-count/mintplayer-ng-bootstrap-word-count.mjs +0 -5
  959. package/esm2022/word-count/src/word-count.pipe.mjs +0 -28
  960. package/file-upload/src/component/file-upload.component.d.ts +0 -21
  961. package/file-upload/src/directive/file-upload-template.directive.d.ts +0 -15
  962. package/file-upload/src/file-upload.d.ts +0 -5
  963. package/file-upload/src/file-upload.module.d.ts +0 -14
  964. package/file-upload/src/index.d.ts +0 -5
  965. package/file-upload/src/pipes/format-bytes/format-bytes.pipe.d.ts +0 -7
  966. package/file-upload/src/pipes/index.d.ts +0 -1
  967. package/floating-labels/src/floating-label/floating-label.component.d.ts +0 -7
  968. package/floating-labels/src/index.d.ts +0 -1
  969. package/font-color/src/font-color.pipe.d.ts +0 -7
  970. package/for/src/for.directive.d.ts +0 -10
  971. package/for/src/index.d.ts +0 -1
  972. package/form/src/form/form.component.d.ts +0 -10
  973. package/form/src/form-control/form-control.directive.d.ts +0 -8
  974. package/form/src/form-group/form-group.directive.d.ts +0 -6
  975. package/form/src/form.module.d.ts +0 -10
  976. package/form/src/index.d.ts +0 -4
  977. package/grid/src/component/grid.component.d.ts +0 -12
  978. package/grid/src/directives/col-form-label/col-form-label.directive.d.ts +0 -6
  979. package/grid/src/directives/column/column.directive.d.ts +0 -29
  980. package/grid/src/directives/index.d.ts +0 -3
  981. package/grid/src/directives/row/row.directive.d.ts +0 -6
  982. package/grid/src/grid.module.d.ts +0 -12
  983. package/grid/src/index.d.ts +0 -4
  984. package/grid/src/interfaces/column-definition.d.ts +0 -9
  985. package/grid/src/interfaces/index.d.ts +0 -1
  986. package/has-id/src/has-id.d.ts +0 -3
  987. package/has-overlay/src/has-overlay/has-overlay.component.d.ts +0 -5
  988. package/has-overlay/src/index.d.ts +0 -1
  989. package/has-property/src/has-property.pipe.d.ts +0 -7
  990. package/has-property/src/index.d.ts +0 -1
  991. package/in-list/src/in-list.pipe.d.ts +0 -8
  992. package/input-group/src/index.d.ts +0 -1
  993. package/input-group/src/input-group/input-group.component.d.ts +0 -5
  994. package/instance-of/src/directives/index.d.ts +0 -4
  995. package/instance-of/src/directives/instanceof-case.directive.d.ts +0 -23
  996. package/instance-of/src/directives/instanceof-default.directive.d.ts +0 -10
  997. package/instance-of/src/directives/instanceof.directive.d.ts +0 -21
  998. package/instance-of/src/directives/switch-view.d.ts +0 -12
  999. package/instance-of/src/index.d.ts +0 -5
  1000. package/instance-of/src/instance-of.module.d.ts +0 -11
  1001. package/instance-of/src/interfaces/index.d.ts +0 -1
  1002. package/instance-of/src/interfaces/instance-of-context.d.ts +0 -4
  1003. package/instance-of/src/pipes/index.d.ts +0 -1
  1004. package/instance-of/src/pipes/instance-of.pipe.d.ts +0 -8
  1005. package/instance-of/src/types/abstract.type.d.ts +0 -1
  1006. package/instance-of/src/types/index.d.ts +0 -1
  1007. package/let/directive/let.directive.d.ts +0 -31
  1008. package/let/interfaces/index.d.ts +0 -1
  1009. package/let/interfaces/let-context.d.ts +0 -10
  1010. package/lib/enums/color.enum.d.ts +0 -13
  1011. package/lib/enums/index.d.ts +0 -1
  1012. package/lib/providers/development.provider.d.ts +0 -7
  1013. package/lib/providers/index.d.ts +0 -1
  1014. package/lib/types/breakpoint.d.ts +0 -1
  1015. package/lib/types/index.d.ts +0 -3
  1016. package/lib/types/position.d.ts +0 -1
  1017. package/lib/types/size.d.ts +0 -1
  1018. package/linify/src/linify.pipe.d.ts +0 -7
  1019. package/list-group/src/index.d.ts +0 -3
  1020. package/list-group/src/list-group/list-group.component.d.ts +0 -10
  1021. package/list-group/src/list-group-item/list-group-item.component.d.ts +0 -6
  1022. package/list-group/src/list-group.module.d.ts +0 -9
  1023. package/markdown/src/bold/bold.pipe.d.ts +0 -10
  1024. package/markdown/src/italic/italic.pipe.d.ts +0 -10
  1025. package/markdown/src/strikethrough/strikethrough.pipe.d.ts +0 -10
  1026. package/markdown/src/underline/underline.pipe.d.ts +0 -10
  1027. package/marquee/src/marquee/marquee.component.d.ts +0 -5
  1028. package/modal/src/components/index.d.ts +0 -2
  1029. package/modal/src/components/modal/modal.component.d.ts +0 -9
  1030. package/modal/src/components/modal-host/modal-host.component.d.ts +0 -25
  1031. package/modal/src/directives/index.d.ts +0 -5
  1032. package/modal/src/directives/modal/modal.directive.d.ts +0 -8
  1033. package/modal/src/directives/modal-body/modal-body.directive.d.ts +0 -6
  1034. package/modal/src/directives/modal-close/modal-close.directive.d.ts +0 -9
  1035. package/modal/src/directives/modal-footer/modal-footer.directive.d.ts +0 -6
  1036. package/modal/src/directives/modal-header/modal-header.directive.d.ts +0 -6
  1037. package/modal/src/index.d.ts +0 -3
  1038. package/modal/src/modal.module.d.ts +0 -16
  1039. package/modal/src/providers/modal-content.provider.d.ts +0 -2
  1040. package/modal/src/providers/portal-factory.provider.d.ts +0 -3
  1041. package/multiselect/src/component/multiselect.component.d.ts +0 -15
  1042. package/multiselect/src/directives/button-template/button-template.directive.d.ts +0 -12
  1043. package/multiselect/src/directives/footer-template/footer-template.directive.d.ts +0 -8
  1044. package/multiselect/src/directives/header-template/header-template.directive.d.ts +0 -8
  1045. package/multiselect/src/directives/index.d.ts +0 -3
  1046. package/multiselect/src/index.d.ts +0 -3
  1047. package/multiselect/src/multiselect.module.d.ts +0 -17
  1048. package/navbar/src/dropdown-toggle/dropdown-toggle.directive.d.ts +0 -13
  1049. package/navbar/src/expand-button/expand-button.directive.d.ts +0 -12
  1050. package/navbar/src/index.d.ts +0 -10
  1051. package/navbar/src/nav-link/nav-link.directive.d.ts +0 -11
  1052. package/navbar/src/navbar/navbar.component.d.ts +0 -30
  1053. package/navbar/src/navbar-brand/navbar-brand.component.d.ts +0 -7
  1054. package/navbar/src/navbar-content/navbar-content.directive.d.ts +0 -17
  1055. package/navbar/src/navbar-dropdown/navbar-dropdown.component.d.ts +0 -31
  1056. package/navbar/src/navbar-item/navbar-item.component.d.ts +0 -18
  1057. package/navbar/src/navbar-nav/navbar-nav.component.d.ts +0 -16
  1058. package/navbar/src/navbar.module.d.ts +0 -23
  1059. package/navbar-toggler/src/index.d.ts +0 -1
  1060. package/navbar-toggler/src/navbar-toggler/navbar-toggler.component.d.ts +0 -14
  1061. package/navigation-lock/src/directive/navigation-lock.directive.d.ts +0 -31
  1062. package/navigation-lock/src/guard/navigation-lock.guard.d.ts +0 -8
  1063. package/navigation-lock/src/index.d.ts +0 -4
  1064. package/navigation-lock/src/interface/has-navigation-lock.d.ts +0 -15
  1065. package/navigation-lock/src/navigation-lock.module.d.ts +0 -9
  1066. package/no-noscript/src/index.d.ts +0 -1
  1067. package/no-noscript/src/no-noscript/no-noscript.directive.d.ts +0 -8
  1068. package/offcanvas/src/components/index.d.ts +0 -4
  1069. package/offcanvas/src/components/offcanvas/offcanvas.component.d.ts +0 -31
  1070. package/offcanvas/src/components/offcanvas-body/offcanvas-body.component.d.ts +0 -9
  1071. package/offcanvas/src/components/offcanvas-header/offcanvas-header.component.d.ts +0 -8
  1072. package/offcanvas/src/components/offcanvas-host/offcanvas-host.component.d.ts +0 -36
  1073. package/offcanvas/src/directives/index.d.ts +0 -3
  1074. package/offcanvas/src/directives/offcanvas-close/offcanvas-close.directive.d.ts +0 -9
  1075. package/offcanvas/src/directives/offcanvas-content/offcanvas-content.directive.d.ts +0 -8
  1076. package/offcanvas/src/directives/offcanvas-push/offcanvas-push.directive.d.ts +0 -14
  1077. package/offcanvas/src/index.d.ts +0 -3
  1078. package/offcanvas/src/offcanvas.module.d.ts +0 -16
  1079. package/offcanvas/src/providers/offcanvas-content.provider.d.ts +0 -2
  1080. package/offcanvas/src/providers/portal-factory.provider.d.ts +0 -3
  1081. package/ordinal-number/src/index.d.ts +0 -1
  1082. package/ordinal-number/src/ordinal-number/ordinal-number.pipe.d.ts +0 -10
  1083. package/pagination/src/component/index.d.ts +0 -1
  1084. package/pagination/src/component/pagination/pagination.component.d.ts +0 -46
  1085. package/pagination/src/index.d.ts +0 -3
  1086. package/pagination/src/interfaces/index.d.ts +0 -1
  1087. package/pagination/src/interfaces/page-with-selection.d.ts +0 -5
  1088. package/pagination/src/types/index.d.ts +0 -1
  1089. package/pagination/src/types/page-number.type.d.ts +0 -1
  1090. package/parallax/src/parallax.component.d.ts +0 -8
  1091. package/placeholder/src/index.d.ts +0 -3
  1092. package/placeholder/src/placeholder/placeholder.component.d.ts +0 -11
  1093. package/placeholder/src/placeholder-field/placeholder-field.directive.d.ts +0 -12
  1094. package/placeholder/src/placeholder.module.d.ts +0 -9
  1095. package/playlist-toggler/src/index.d.ts +0 -1
  1096. package/playlist-toggler/src/playlist-toggler/playlist-toggler.component.d.ts +0 -14
  1097. package/popover/src/component/popover.component.d.ts +0 -19
  1098. package/popover/src/directives/index.d.ts +0 -3
  1099. package/popover/src/directives/popover/popover.directive.d.ts +0 -27
  1100. package/popover/src/directives/popover-body/popover-body.directive.d.ts +0 -6
  1101. package/popover/src/directives/popover-header/popover-header.directive.d.ts +0 -6
  1102. package/popover/src/index.d.ts +0 -3
  1103. package/popover/src/popover.module.d.ts +0 -13
  1104. package/popover/src/providers/popover-content.provider.d.ts +0 -2
  1105. package/popover/src/providers/portal-factory.provider.d.ts +0 -3
  1106. package/progress-bar/src/index.d.ts +0 -3
  1107. package/progress-bar/src/progress/progress.component.d.ts +0 -8
  1108. package/progress-bar/src/progress-bar/progress-bar.component.d.ts +0 -28
  1109. package/progress-bar/src/progress-bar.module.d.ts +0 -9
  1110. package/range/src/component/range.component.d.ts +0 -11
  1111. package/range/src/index.d.ts +0 -3
  1112. package/range/src/range.module.d.ts +0 -9
  1113. package/range/src/value-accessor/range-value-accessor.d.ts +0 -18
  1114. package/rating/src/component/rating.component.d.ts +0 -20
  1115. package/rating/src/index.d.ts +0 -1
  1116. package/resizable/src/index.d.ts +0 -6
  1117. package/resizable/src/interfaces/index.d.ts +0 -3
  1118. package/resizable/src/interfaces/pointer-data.d.ts +0 -5
  1119. package/resizable/src/interfaces/preset-position.d.ts +0 -6
  1120. package/resizable/src/interfaces/resize-action.d.ts +0 -18
  1121. package/resizable/src/providers/index.d.ts +0 -1
  1122. package/resizable/src/providers/resizable.provider.d.ts +0 -3
  1123. package/resizable/src/resizable/resizable.component.d.ts +0 -29
  1124. package/resizable/src/resizable.module.d.ts +0 -9
  1125. package/resizable/src/resize-glyph/resize-glyph.directive.d.ts +0 -23
  1126. package/resizable/src/types/index.d.ts +0 -1
  1127. package/resizable/src/types/positioning.d.ts +0 -1
  1128. package/scheduler/src/components/index.d.ts +0 -2
  1129. package/scheduler/src/components/resource-group-presenter/resource-group-presenter.component.d.ts +0 -27
  1130. package/scheduler/src/components/scheduler/scheduler.component.d.ts +0 -89
  1131. package/scheduler/src/constants/available-scales.d.ts +0 -2
  1132. package/scheduler/src/constants/index.d.ts +0 -1
  1133. package/scheduler/src/enums/drag-operation.d.ts +0 -6
  1134. package/scheduler/src/enums/index.d.ts +0 -1
  1135. package/scheduler/src/enums/scheduler-mode.d.ts +0 -4
  1136. package/scheduler/src/index.d.ts +0 -5
  1137. package/scheduler/src/interfaces/drag-operation.d.ts +0 -7
  1138. package/scheduler/src/interfaces/index.d.ts +0 -5
  1139. package/scheduler/src/interfaces/preview-event.d.ts +0 -4
  1140. package/scheduler/src/interfaces/resource-group.d.ts +0 -5
  1141. package/scheduler/src/interfaces/resource-or-group.d.ts +0 -6
  1142. package/scheduler/src/interfaces/resource.d.ts +0 -5
  1143. package/scheduler/src/interfaces/scheduler-event-part.d.ts +0 -6
  1144. package/scheduler/src/interfaces/scheduler-event-with-parts.d.ts +0 -6
  1145. package/scheduler/src/interfaces/scheduler-event.d.ts +0 -6
  1146. package/scheduler/src/interfaces/scheduler-schale.d.ts +0 -5
  1147. package/scheduler/src/interfaces/scheduler-stamp-with-slots.d.ts +0 -6
  1148. package/scheduler/src/interfaces/time-slot.d.ts +0 -4
  1149. package/scheduler/src/interfaces/timeline-options.d.ts +0 -3
  1150. package/scheduler/src/interfaces/timeline-track.d.ts +0 -5
  1151. package/scheduler/src/interfaces/week-options.d.ts +0 -3
  1152. package/scheduler/src/pipes/bs-seconds-timespan.pipe/bs-seconds-timespan.pipe.d.ts +0 -9
  1153. package/scheduler/src/pipes/bs-seconds-today-offset/bs-seconds-today-offset.pipe.d.ts +0 -9
  1154. package/scheduler/src/pipes/date-offset/date-offset.pipe.d.ts +0 -8
  1155. package/scheduler/src/pipes/day-of-week/day-of-week.pipe.d.ts +0 -9
  1156. package/scheduler/src/scheduler.module.d.ts +0 -13
  1157. package/scheduler/src/services/timeline/timeline.service.d.ts +0 -14
  1158. package/scrollspy/src/component/scrollspy.component.d.ts +0 -23
  1159. package/scrollspy/src/directives/scrollspy.directive.d.ts +0 -8
  1160. package/scrollspy/src/index.d.ts +0 -4
  1161. package/scrollspy/src/scrollspy.module.d.ts +0 -8
  1162. package/scrollspy/src/services/index.d.ts +0 -1
  1163. package/scrollspy/src/services/scroll-offset/scroll-offset.service.d.ts +0 -9
  1164. package/searchbox/src/directives/enter-search-term.directive.d.ts +0 -9
  1165. package/searchbox/src/directives/index.d.ts +0 -3
  1166. package/searchbox/src/directives/no-results.directive.d.ts +0 -9
  1167. package/searchbox/src/directives/suggestion.directive.d.ts +0 -16
  1168. package/searchbox/src/searchbox/searchbox.component.d.ts +0 -37
  1169. package/searchbox/src/searchbox.module.d.ts +0 -18
  1170. package/select/src/component/select.component.d.ts +0 -26
  1171. package/select/src/index.d.ts +0 -4
  1172. package/select/src/select.module.d.ts +0 -9
  1173. package/select/src/types/index.d.ts +0 -1
  1174. package/select/src/types/select-size.d.ts +0 -1
  1175. package/select/src/value-accessors/index.d.ts +0 -1
  1176. package/select/src/value-accessors/select-value-accessor.d.ts +0 -44
  1177. package/select2/src/component/select2.component.d.ts +0 -27
  1178. package/select2/src/directive/index.d.ts +0 -2
  1179. package/select2/src/directive/item-template/item-template.directive.d.ts +0 -16
  1180. package/select2/src/directive/suggestion-template/suggestion-template.directive.d.ts +0 -16
  1181. package/select2/src/index.d.ts +0 -3
  1182. package/select2/src/select2.module.d.ts +0 -15
  1183. package/shell/src/shell/shell.component.d.ts +0 -19
  1184. package/shell/src/shell-sidebar/shell-sidebar.directive.d.ts +0 -10
  1185. package/shell/src/shell-state.d.ts +0 -1
  1186. package/shell/src/shell.module.d.ts +0 -9
  1187. package/signature-pad/src/component/signature-pad.component.d.ts +0 -25
  1188. package/signature-pad/src/index.d.ts +0 -2
  1189. package/signature-pad/src/interfaces/index.d.ts +0 -3
  1190. package/signature-pad/src/interfaces/point.d.ts +0 -4
  1191. package/signature-pad/src/interfaces/signature.d.ts +0 -4
  1192. package/signature-pad/src/interfaces/stroke.d.ts +0 -4
  1193. package/slugify/src/slugify.pipe.d.ts +0 -7
  1194. package/spinner/src/index.d.ts +0 -1
  1195. package/spinner/src/spinner.component.d.ts +0 -19
  1196. package/split-string/src/split-string.pipe.d.ts +0 -7
  1197. package/splitter/src/element-at/element-at.pipe.d.ts +0 -7
  1198. package/splitter/src/index.d.ts +0 -5
  1199. package/splitter/src/interfaces/drag-operation.d.ts +0 -12
  1200. package/splitter/src/interfaces/point.d.ts +0 -4
  1201. package/splitter/src/split-panel/split-panel.component.d.ts +0 -11
  1202. package/splitter/src/splitter/splitter.component.d.ts +0 -37
  1203. package/splitter/src/splitter.module.d.ts +0 -12
  1204. package/splitter/src/types/direction.type.d.ts +0 -1
  1205. package/splitter/src/types/index.d.ts +0 -1
  1206. package/sticky-footer/src/index.d.ts +0 -3
  1207. package/sticky-footer/src/sticky-footer/sticky-footer.component.d.ts +0 -13
  1208. package/sticky-footer/src/sticky-footer-parent/sticky-footer-parent.directive.d.ts +0 -6
  1209. package/sticky-footer/src/sticky-footer.module.d.ts +0 -10
  1210. package/tab-control/src/index.d.ts +0 -5
  1211. package/tab-control/src/tab-control/tab-control.component.d.ts +0 -40
  1212. package/tab-control/src/tab-control.module.d.ts +0 -12
  1213. package/tab-control/src/tab-page/tab-page.component.d.ts +0 -16
  1214. package/tab-control/src/tab-page-header/tab-page-header.directive.d.ts +0 -8
  1215. package/tab-control/src/tabs-position.d.ts +0 -1
  1216. package/table/src/component/table.component.d.ts +0 -15
  1217. package/table/src/index.d.ts +0 -1
  1218. package/timepicker/src/index.d.ts +0 -1
  1219. package/timepicker/src/timepicker.component.d.ts +0 -30
  1220. package/toast/src/components/index.d.ts +0 -4
  1221. package/toast/src/components/toast/toast.component.d.ts +0 -6
  1222. package/toast/src/components/toast-body/toast-body.component.d.ts +0 -6
  1223. package/toast/src/components/toast-container/toast-container.component.d.ts +0 -9
  1224. package/toast/src/components/toast-header/toast-header.component.d.ts +0 -6
  1225. package/toast/src/directives/index.d.ts +0 -1
  1226. package/toast/src/directives/toast-close/toast-close.directive.d.ts +0 -12
  1227. package/toast/src/index.d.ts +0 -5
  1228. package/toast/src/pipes/add-properties.pipe.d.ts +0 -7
  1229. package/toast/src/providers/portal-factory.provider.d.ts +0 -3
  1230. package/toast/src/services/index.d.ts +0 -1
  1231. package/toast/src/services/toast/toast.service.d.ts +0 -22
  1232. package/toast/src/toast.module.d.ts +0 -15
  1233. package/toggle-button/src/component/toggle-button.component.d.ts +0 -36
  1234. package/toggle-button/src/directives/index.d.ts +0 -1
  1235. package/toggle-button/src/directives/toggle-button-group/toggle-button-group.directive.d.ts +0 -9
  1236. package/toggle-button/src/index.d.ts +0 -5
  1237. package/toggle-button/src/toggle-button.module.d.ts +0 -10
  1238. package/toggle-button/src/types/check-style.d.ts +0 -1
  1239. package/toggle-button/src/types/index.d.ts +0 -1
  1240. package/toggle-button/src/value-accessor/toggle-button-value-accessor.d.ts +0 -18
  1241. package/tooltip/src/component/tooltip.component.d.ts +0 -16
  1242. package/tooltip/src/directive/tooltip.directive.d.ts +0 -21
  1243. package/tooltip/src/index.d.ts +0 -2
  1244. package/tooltip/src/providers/tooltip-content.provider.d.ts +0 -2
  1245. package/tooltip/src/tooltip.module.d.ts +0 -11
  1246. package/treeview/src/index.d.ts +0 -3
  1247. package/treeview/src/treeview/treeview.component.d.ts +0 -14
  1248. package/treeview/src/treeview-item/treeview-item.component.d.ts +0 -13
  1249. package/treeview/src/treeview.module.d.ts +0 -10
  1250. package/trust-html/src/trust-html.pipe.d.ts +0 -10
  1251. package/typeahead/src/index.d.ts +0 -1
  1252. package/typeahead/src/typeahead.component.d.ts +0 -25
  1253. package/uc-first/src/uc-first.pipe.d.ts +0 -7
  1254. package/user-agent/src/directive/index.d.ts +0 -1
  1255. package/user-agent/src/directive/user-agent.directive.d.ts +0 -16
  1256. package/user-agent/src/index.d.ts +0 -3
  1257. package/user-agent/src/interfaces/index.d.ts +0 -1
  1258. package/user-agent/src/interfaces/user-agent.d.ts +0 -6
  1259. package/user-agent/src/types/index.d.ts +0 -2
  1260. package/user-agent/src/types/operating-system.type.d.ts +0 -1
  1261. package/user-agent/src/types/webbrowser.type.d.ts +0 -1
  1262. package/word-count/src/word-count.pipe.d.ts +0 -7
@@ -1,536 +0,0 @@
1
- /// <reference types="../../types" />
2
- import { Component, EventEmitter, HostListener, Input, Output, ViewChildren } from '@angular/core';
3
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
- import { BehaviorSubject, combineLatest, filter, map, take } from 'rxjs';
5
- import { ESchedulerMode } from '../../enums/scheduler-mode';
6
- import { EDragOperation } from '../../enums/drag-operation';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/platform-browser";
9
- import * as i2 from "@mintplayer/ng-bootstrap/calendar-month";
10
- import * as i3 from "../../services/timeline/timeline.service";
11
- import * as i4 from "../resource-group-presenter/resource-group-presenter.component";
12
- import * as i5 from "@angular/common";
13
- import * as i6 from "../../pipes/bs-seconds-timespan.pipe/bs-seconds-timespan.pipe";
14
- import * as i7 from "../../pipes/bs-seconds-today-offset/bs-seconds-today-offset.pipe";
15
- import * as i8 from "../../pipes/day-of-week/day-of-week.pipe";
16
- export class BsSchedulerComponent {
17
- constructor(sanitizer, calendarMonthService, timelineService) {
18
- this.sanitizer = sanitizer;
19
- this.calendarMonthService = calendarMonthService;
20
- this.timelineService = timelineService;
21
- this.resources$ = new BehaviorSubject([]);
22
- this.weekOptions$ = new BehaviorSubject({ unitHeight: 30 });
23
- this.timelineOptions$ = new BehaviorSubject({ unitWidth: 50 });
24
- this.previewEvent$ = new BehaviorSubject(null);
25
- this.timeSlotDuration$ = new BehaviorSubject(1800);
26
- this.timeSlots$ = new BehaviorSubject([]);
27
- this.mouseState$ = new BehaviorSubject(false);
28
- this.hoveredTimeSlot$ = new BehaviorSubject(null);
29
- this.hoveredEvent$ = new BehaviorSubject(null);
30
- this.resourceGroupPresenterCounter = 1;
31
- //#region Mode
32
- this.modes = ESchedulerMode;
33
- this.mode$ = new BehaviorSubject(ESchedulerMode.week);
34
- this.modeChange = new EventEmitter();
35
- //#endregion
36
- // //#region Scale
37
- // scale$ = new BehaviorSubject<SchedulerScale>(availableScales[4]);
38
- // @Output() public scaleChange = new EventEmitter<SchedulerScale>();
39
- // public get scale() {
40
- // return this.scale$.value;
41
- // }
42
- // @Input() public set scale(value: SchedulerScale) {
43
- // this.scale$.next(value);
44
- // }
45
- // //#endregion
46
- //#region WeekOptions
47
- this.weekOptionsChange = new EventEmitter();
48
- //#endregion
49
- //#region TimelineOptions
50
- this.timelineOptionsChange = new EventEmitter();
51
- //#endregion
52
- //#region maxInnerHeight
53
- this.maxInnerHeight = null;
54
- this.operation = null;
55
- this.dragStartTimeslot = null;
56
- const monday = this.calendarMonthService.getMondayBefore(new Date());
57
- this.currentWeekOrMonth$ = new BehaviorSubject(monday);
58
- this.shownDays$ = combineLatest([this.currentWeekOrMonth$, this.mode$])
59
- .pipe(map(([currentDay, mode]) => {
60
- currentDay.setHours(0);
61
- currentDay.setMinutes(0);
62
- currentDay.setSeconds(0);
63
- currentDay.setMilliseconds(0);
64
- switch (mode) {
65
- case ESchedulerMode.week: {
66
- return Array.from(Array(7).keys()).map((x) => this.addDays(currentDay, x));
67
- }
68
- case ESchedulerMode.timeline: {
69
- const firstDay = new Date(currentDay.getFullYear(), currentDay.getMonth(), 1);
70
- const daysOfMonth = new Date(currentDay.getFullYear(), currentDay.getMonth() + 1, 0).getDate();
71
- return Array.from(Array(daysOfMonth).keys()).map((x) => this.addDays(firstDay, x));
72
- }
73
- }
74
- }));
75
- this.daysOfWeekWithTimestamps$ = this.shownDays$
76
- .pipe(map((shownDays) => ({ start: shownDays[0].getTime(), end: shownDays[shownDays.length - 1].getTime() + 24 * 60 * 60 * 1000 })));
77
- this.events$ = this.resources$
78
- .pipe(map((resourcesOrGroups) => resourcesOrGroups.map(resOrGroup => this.getResourcesForGroup(resOrGroup))))
79
- .pipe(map(jaggedResources => jaggedResources.reduce((flat, toFlatten) => flat.concat(toFlatten), [])))
80
- .pipe(map(resources => resources.map(res => res.events)))
81
- .pipe(map(jaggedEvents => jaggedEvents.reduce((flat, toFlatten) => flat.concat(toFlatten), [])));
82
- // groups.reduce((flat, toFlatten) => flat.concat(toFlatten.children), [])
83
- this.eventParts$ = this.events$.pipe(map((events) => events.map((ev) => this.timelineService.splitInParts(ev))));
84
- this.eventPartsForThisWeek$ = combineLatest([
85
- this.daysOfWeekWithTimestamps$,
86
- this.eventParts$
87
- .pipe(map(eventParts => eventParts.map(evp => evp.parts)))
88
- .pipe(map(jaggedParts => jaggedParts.reduce((flat, toFlatten) => flat.concat(toFlatten), [])))
89
- ])
90
- .pipe(map(([startAndEnd, eventParts]) => {
91
- return eventParts.filter(eventPart => {
92
- return !((eventPart.end.getTime() <= startAndEnd.start) || (eventPart.start.getTime() >= startAndEnd.end));
93
- });
94
- }));
95
- this.previewEventParts$ = this.previewEvent$.pipe(map((event) => {
96
- if (event) {
97
- return this.timelineService.splitInParts(event);
98
- }
99
- else {
100
- return null;
101
- }
102
- }));
103
- this.previewEventPartsForThisWeek$ = combineLatest([this.daysOfWeekWithTimestamps$, this.previewEventParts$])
104
- .pipe(map(([startAndEnd, previewEventParts]) => {
105
- if (previewEventParts) {
106
- return previewEventParts.parts.filter(eventPart => {
107
- return !((eventPart.end.getTime() <= startAndEnd.start) || (eventPart.start.getTime() >= startAndEnd.end));
108
- });
109
- }
110
- else {
111
- return [];
112
- }
113
- }));
114
- this.timelinedEventPartsForThisWeek$ = this.eventPartsForThisWeek$
115
- .pipe(map(eventParts => {
116
- // We'll only use the events for this week
117
- const events = eventParts.map(ep => ep.event)
118
- .filter((e, i, list) => list.indexOf(e) === i)
119
- .filter((e) => !!e)
120
- .map((e) => e);
121
- const timeline = this.timelineService.getTimeline(events);
122
- const result = timeline.map(track => track.events.map(ev => ({ event: ev, index: track.index })))
123
- .reduce((flat, toFlatten) => flat.concat(toFlatten), [])
124
- .map((evi) => eventParts.filter(p => p.event === evi.event).map(p => ({ part: p, index: evi.index })))
125
- .reduce((flat, toFlatten) => flat.concat(toFlatten), []);
126
- return {
127
- total: timeline.length,
128
- parts: result
129
- };
130
- }));
131
- combineLatest([this.mode$, this.shownDays$, this.timeSlotDuration$])
132
- .pipe(filter(([mode, shownDays, duration]) => mode !== null))
133
- .pipe(map(([mode, shownDays, duration]) => {
134
- switch (mode) {
135
- case ESchedulerMode.week: {
136
- const timeSlotsPerDay = Math.floor((60 * 60 * 24) / duration);
137
- return Array.from(Array(timeSlotsPerDay).keys()).map((index) => {
138
- const timeslotForMonday = this.createTimeslot(shownDays[0], index, duration);
139
- return {
140
- slots: shownDays.map((day) => {
141
- const start = new Date(day);
142
- start.setHours(timeslotForMonday.start.getHours());
143
- start.setMinutes(timeslotForMonday.start.getMinutes());
144
- start.setSeconds(timeslotForMonday.start.getSeconds());
145
- start.setMilliseconds(timeslotForMonday.start.getMilliseconds());
146
- const end = new Date(day);
147
- end.setHours(timeslotForMonday.end.getHours());
148
- end.setMinutes(timeslotForMonday.end.getMinutes());
149
- end.setSeconds(timeslotForMonday.end.getSeconds());
150
- end.setMilliseconds(timeslotForMonday.end.getMilliseconds());
151
- end.setDate(end.getDate() + timeslotForMonday.end.getDate() - timeslotForMonday.start.getDate());
152
- return { start, end };
153
- }),
154
- stamp: timeslotForMonday.start
155
- };
156
- });
157
- }
158
- case ESchedulerMode.timeline: {
159
- const totalTimeslots = (24 * 60 * 60) / duration;
160
- return shownDays.map((day) => {
161
- return {
162
- slots: Array.from(Array(totalTimeslots).keys())
163
- .map((index) => {
164
- return this.createTimeslot(day, index, duration);
165
- }),
166
- stamp: day
167
- };
168
- });
169
- }
170
- default: {
171
- throw 'Unknown value for Mode: ' + mode;
172
- }
173
- }
174
- }))
175
- .subscribe((timeslots) => {
176
- // For performance reasons, we're not using an observable here, but persist the timeslots in a BehaviorSubject.
177
- this.timeSlots$.next(timeslots);
178
- });
179
- this.weekOptions$.pipe(takeUntilDestroyed())
180
- .subscribe(weekOptions => this.weekOptionsChange.emit(weekOptions));
181
- this.timelineOptions$.pipe(takeUntilDestroyed())
182
- .subscribe(timelineOptions => this.timelineOptionsChange.emit(timelineOptions));
183
- // combineLatest([this.mode$, this.scale$])
184
- // .pipe(filter(([mode, scale]) => mode === ESchedulerMode.timeline))
185
- import('bootstrap-icons/icons/chevron-left.svg').then((icon) => {
186
- this.chevronLeft = sanitizer.bypassSecurityTrustHtml(icon.default);
187
- });
188
- import('bootstrap-icons/icons/chevron-right.svg').then((icon) => {
189
- this.chevronRight = sanitizer.bypassSecurityTrustHtml(icon.default);
190
- });
191
- }
192
- createTimeslot(date, index, duration) {
193
- const timeSlotStart = new Date(date);
194
- timeSlotStart.setTime(+timeSlotStart.getTime() + index * duration * 1000);
195
- const timeSlotEnd = new Date(timeSlotStart);
196
- timeSlotEnd.setTime(+timeSlotEnd.getTime() + duration * 1000);
197
- return { start: timeSlotStart, end: timeSlotEnd };
198
- }
199
- getResourcesForGroup(resourceOrGroup) {
200
- if ('children' in resourceOrGroup) {
201
- return resourceOrGroup.children
202
- .map((child) => this.getResourcesForGroup(child))
203
- .reduce((flat, toFlatten) => flat.concat(toFlatten), []);
204
- }
205
- else {
206
- return [resourceOrGroup];
207
- }
208
- }
209
- get mode() {
210
- return this.mode$.value;
211
- }
212
- set mode(value) {
213
- this.mode$.next(value);
214
- }
215
- get weekOptions() {
216
- return this.weekOptions$.value;
217
- }
218
- set weekOptions(value) {
219
- this.weekOptions$.next(value);
220
- }
221
- get timelineOptions() {
222
- return this.timelineOptions$.value;
223
- }
224
- set timelineOptions(value) {
225
- this.timelineOptions$.next(value);
226
- }
227
- //#endregion
228
- //#region Resources
229
- get resources() {
230
- return this.resources$.value;
231
- }
232
- set resources(value) {
233
- this.resources$.next(value);
234
- }
235
- //#endregion
236
- addDays(date, days) {
237
- const result = new Date(date);
238
- result.setDate(result.getDate() + days);
239
- return result;
240
- }
241
- onPreviousWeekOrMonth() {
242
- this.onChangeWeekOrMonth(false);
243
- }
244
- onNextWeekOrMonth() {
245
- this.onChangeWeekOrMonth(true);
246
- }
247
- onChangeWeekOrMonth(next) {
248
- combineLatest([this.currentWeekOrMonth$, this.mode$])
249
- .pipe(map(([currentWeekOrMonth, mode]) => {
250
- switch (mode) {
251
- case ESchedulerMode.week: {
252
- return this.addDays(currentWeekOrMonth, (next ? 7 : -7));
253
- }
254
- case ESchedulerMode.timeline: {
255
- return new Date(currentWeekOrMonth.getFullYear(), currentWeekOrMonth.getMonth() + (next ? 1 : -1), 1);
256
- }
257
- }
258
- }), take(1))
259
- .subscribe((w) => this.currentWeekOrMonth$.next(w));
260
- }
261
- onHoverEvent(ev) {
262
- this.hoveredEvent$.next(ev);
263
- }
264
- onLeaveEvent(ev) {
265
- this.hoveredEvent$.next(null);
266
- }
267
- onCreateEvent(ev, slot) {
268
- ev.preventDefault();
269
- this.mouseState$.next(true);
270
- this.dragStartTimeslot = slot;
271
- this.operation = {
272
- operation: EDragOperation.createEvent,
273
- event: {
274
- start: slot.start,
275
- end: slot.end,
276
- color: '#F00',
277
- description: 'Test event',
278
- },
279
- meta: null,
280
- };
281
- this.previewEvent$.next({ start: slot.start, end: slot.end });
282
- }
283
- randomColor() {
284
- const brightness = 128;
285
- return '#' + this.randomChannel(brightness) + this.randomChannel(brightness) + this.randomChannel(brightness);
286
- }
287
- randomChannel(brightness) {
288
- const r = 255 - brightness;
289
- const n = 0 | ((Math.random() * r) + brightness);
290
- const s = n.toString(16);
291
- return (s.length == 1) ? '0' + s : s;
292
- }
293
- onStartDragEvent(eventPart, ev) {
294
- ev.preventDefault();
295
- this.hoveredTimeSlot$.pipe(take(1)).subscribe((hoveredTimeSlot) => {
296
- if (eventPart.event) {
297
- this.dragStartTimeslot = hoveredTimeSlot;
298
- this.operation = {
299
- operation: EDragOperation.moveEvent,
300
- event: eventPart.event,
301
- meta: null,
302
- };
303
- this.previewEvent$.next({ start: eventPart.event.start, end: eventPart.event.end });
304
- }
305
- });
306
- }
307
- onStartResizeEvent(event, position) {
308
- if (event) {
309
- switch (position) {
310
- case 'top':
311
- {
312
- this.operation = {
313
- operation: EDragOperation.resizeEvent,
314
- event: event,
315
- meta: { position },
316
- };
317
- this.previewEvent$.next({ start: event.start, end: event.end });
318
- }
319
- break;
320
- case 'bottom':
321
- {
322
- this.operation = {
323
- operation: EDragOperation.resizeEvent,
324
- event: event,
325
- meta: { position },
326
- };
327
- this.previewEvent$.next({ start: event.start, end: event.end });
328
- }
329
- break;
330
- }
331
- }
332
- }
333
- //#region hoveredTimeslot$
334
- getHoveredTimeslot(ev, timeSlots) {
335
- const hoveredSlots = this.timeSlotElements.filter((el) => {
336
- const rct = el.nativeElement.getBoundingClientRect();
337
- if (rct.left <= ev.x && ev.x <= rct.right && rct.top <= ev.y && ev.y <= rct.bottom) {
338
- return true;
339
- }
340
- else {
341
- return false;
342
- }
343
- });
344
- if (!hoveredSlots || hoveredSlots.length === 0) {
345
- return null;
346
- }
347
- const slotElement = hoveredSlots[0].nativeElement;
348
- const strRow = slotElement.getAttribute('data-row');
349
- if (!strRow) {
350
- return null;
351
- }
352
- const row = parseInt(strRow);
353
- const strColumn = slotElement.getAttribute('data-column');
354
- if (!strColumn) {
355
- return null;
356
- }
357
- const column = parseInt(strColumn);
358
- const slot = timeSlots[row].slots[column];
359
- return slot;
360
- }
361
- onMousemove(ev) {
362
- this.timeSlots$.pipe(take(1)).subscribe((timeSlots) => {
363
- const hovered = this.getHoveredTimeslot(ev, timeSlots);
364
- this.hoveredTimeSlot$.next(hovered);
365
- if (this.operation) {
366
- switch (this.operation.operation) {
367
- case EDragOperation.createEvent:
368
- {
369
- if (this.operation.event && this.dragStartTimeslot && hovered && (this.operation.event.end.getTime() != hovered.end.getTime())) {
370
- if (this.dragStartTimeslot.start.getTime() === hovered.start.getTime()) {
371
- // 1 slot
372
- }
373
- else if (this.dragStartTimeslot.start.getTime() < hovered.start.getTime()) {
374
- // Drag down
375
- this.previewEvent$
376
- .pipe(filter((ev) => !!ev && !!this.dragStartTimeslot))
377
- .pipe(map((ev) => {
378
- if (ev && this.dragStartTimeslot) {
379
- ev.start = this.dragStartTimeslot.start;
380
- ev.end = hovered.end;
381
- }
382
- return ev;
383
- }))
384
- .pipe(take(1))
385
- .subscribe((ev) => this.previewEvent$.next(ev));
386
- }
387
- else if (this.dragStartTimeslot.start.getTime() > hovered.start.getTime()) {
388
- // Drag up
389
- this.previewEvent$
390
- .pipe(filter((ev) => !!ev && !!this.dragStartTimeslot))
391
- .pipe(map((ev) => {
392
- if (ev && this.dragStartTimeslot) {
393
- ev.start = hovered.start;
394
- ev.end = this.dragStartTimeslot.end;
395
- }
396
- return ev;
397
- }))
398
- .pipe(take(1))
399
- .subscribe((ev) => this.previewEvent$.next(ev));
400
- }
401
- }
402
- }
403
- break;
404
- case EDragOperation.moveEvent:
405
- {
406
- if (hovered && this.dragStartTimeslot) {
407
- this.previewEvent$
408
- .pipe(filter((ev) => !!ev && !!this.dragStartTimeslot))
409
- .pipe(map((ev) => {
410
- if (ev && this.dragStartTimeslot) {
411
- const result = {
412
- start: new Date(ev.start.getTime() + hovered.start.getTime() - this.dragStartTimeslot.start.getTime()),
413
- end: new Date(ev.end.getTime() + hovered.start.getTime() - this.dragStartTimeslot.start.getTime())
414
- };
415
- this.dragStartTimeslot = hovered;
416
- return result;
417
- }
418
- else {
419
- return ev;
420
- }
421
- }))
422
- .pipe(take(1))
423
- .subscribe(ev => this.previewEvent$.next(ev));
424
- }
425
- }
426
- break;
427
- case EDragOperation.resizeEvent:
428
- {
429
- if (hovered) {
430
- this.previewEvent$
431
- .pipe(filter((ev) => !!ev))
432
- .pipe(map((ev) => {
433
- if (ev && this.operation && this.operation.event) {
434
- if (this.operation.meta.position === 'top') {
435
- ev.start = hovered.start;
436
- ev.end = this.operation.event.end;
437
- }
438
- else if (this.operation.meta.position === 'bottom') {
439
- ev.start = this.operation.event.start;
440
- ev.end = hovered.end;
441
- }
442
- }
443
- return ev;
444
- }))
445
- .pipe(take(1))
446
- .subscribe((ev) => this.previewEvent$.next(ev));
447
- }
448
- }
449
- break;
450
- }
451
- }
452
- });
453
- }
454
- //#endregion
455
- onMouseUp(ev) {
456
- if (this.operation) {
457
- switch (this.operation.operation) {
458
- case EDragOperation.createEvent:
459
- {
460
- combineLatest([this.previewEvent$])
461
- .pipe(take(1))
462
- .subscribe(([previewEvent]) => {
463
- if (previewEvent) {
464
- this.operation = null;
465
- this.dragStartTimeslot = null;
466
- this.resources$.next([
467
- ...this.resources$.value,
468
- {
469
- description: 'New resource group',
470
- events: [{
471
- start: previewEvent.start,
472
- end: previewEvent.end,
473
- color: this.randomColor(),
474
- description: 'New event'
475
- }]
476
- }
477
- ]);
478
- this.previewEvent$.next(null);
479
- }
480
- });
481
- }
482
- break;
483
- case EDragOperation.moveEvent:
484
- case EDragOperation.resizeEvent:
485
- {
486
- this.previewEvent$
487
- .pipe(filter((ev) => !!ev))
488
- .pipe(take(1))
489
- .subscribe((previewEvent) => {
490
- if (this.operation && this.operation.event && previewEvent) {
491
- this.operation.event.start = previewEvent.start;
492
- this.operation.event.end = previewEvent.end;
493
- this.operation = null;
494
- this.dragStartTimeslot = null;
495
- this.resources$.next(this.resources$.value);
496
- this.previewEvent$.next(null);
497
- }
498
- });
499
- }
500
- break;
501
- }
502
- }
503
- }
504
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BsSchedulerComponent, deps: [{ token: i1.DomSanitizer }, { token: i2.BsCalendarMonthService }, { token: i3.BsTimelineService }], target: i0.ɵɵFactoryTarget.Component }); }
505
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: BsSchedulerComponent, selector: "bs-scheduler", inputs: { mode: "mode", weekOptions: "weekOptions", timelineOptions: "timelineOptions", maxInnerHeight: "maxInnerHeight", resources: "resources" }, outputs: { modeChange: "modeChange", weekOptionsChange: "weekOptionsChange", timelineOptionsChange: "timelineOptionsChange" }, host: { listeners: { "document:mousemove": "onMousemove($event)", "document:mouseup": "onMouseUp($event)" } }, viewQueries: [{ propertyName: "timeSlotElements", predicate: ["slot"], descendants: true }], ngImport: i0, template: "@switch (mode$ | async) {\n @case (modes.week) {\n <div class=\"d-flex flex-column w-100 overflow-y-auto mb-0 week-schedule\" [style.max-height.px]=\"null\">\n <div class=\"calendar-head\">\n <div class=\"w-100 d-flex flex-row\">\n <div class=\"d-flex calendar-left justify-content-between\">\n <button class=\"btn btn-default flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <span [innerHTML]=\"chevronLeft\" class=\"px-0\"></span>\n </button>\n <button class=\"btn btn-default flex-end\" (click)=\"onNextWeekOrMonth()\">\n <span [innerHTML]=\"chevronRight\" class=\"px-0\"></span>\n </button>\n </div>\n @for (day of (shownDays$ | async); track day) {\n <div class=\"flex-grow-1 calendar-head-cell\">\n <span class=\"d-block col-form-label text-center text-nowrap\">\n <span>{{ day | date: 'dd-MM' }}</span><span class=\"d-none d-lg-inline-block\">-{{ day | date: 'yyyy' }}</span>\n </span>\n </div>\n }\n </div>\n </div>\n <div class=\"calendar-body\" [style.height.px]=\"maxInnerHeight\">\n @if (timeSlots$ | async; as row) {\n <div class=\"position-relative\">\n @if (weekOptions$ | async; as weekOptions) {\n <!-- Timeslots -->\n @for (timeslots of row; track timeslots; let i = $index) {\n <div class=\"d-flex flex-row p-0 timeslot\" [style.height.px]=\"weekOptions.unitHeight\">\n <div class=\"calendar-cell calendar-left align-top px-2 py-0\">{{ timeslots.slots[0].start | date: 'HH:mm:ss' }}</div>\n @for (slot of timeslots.slots; track slot.start; let j = $index) {\n <div class=\"calendar-cell flex-grow-1\" #slot (mousedown)=\"onCreateEvent($event, slot)\" [attr.data-row]=\"i\" [attr.data-column]=\"j\"></div>\n }\n </div>\n }\n \n <!-- Events -->\n @if (timeSlotDuration$ | async; as timeSlotDuration) {\n @if (timelinedEventPartsForThisWeek$ | async; as partData) {\n @for (eventPart of partData.parts; track eventPart) {\n <div class=\"event p-0\"\n [style.top.px]=\"(eventPart.part | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart.part | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner\" [class.hover]=\"(hoveredEvent$ | async) === eventPart.part.event\"\n [style.width]=\"'calc(100% / ' + partData.total + ')'\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.margin-left]=\"'calc(100% / ' + partData.total + ' * ' + eventPart.index + ')'\">\n \n @if (eventPart.part.start === eventPart.part.event?.start) {\n <div class=\"event-resize top\" (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'top')\"></div>\n }\n <div class=\"event-border\"></div>\n @if (eventPart.part.event) {\n <div class=\"event-wrapper\"\n (mousedown)=\"onStartDragEvent(eventPart.part, $event)\"\n (mouseenter)=\"onHoverEvent(eventPart.part.event)\"\n (mouseleave)=\"onLeaveEvent(eventPart.part.event)\">\n <div class=\"event-bg\" [style.background-color]=\"eventPart.part.event.color\"></div>\n <div class=\"event-label\">{{ eventPart.part.event.description }}</div>\n </div>\n }\n @if (eventPart.part.end === eventPart.part.event?.end) {\n <div class=\"event-resize bottom\" (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'bottom')\"></div>\n }\n </div>\n </div>\n }\n }\n @if (previewEventPartsForThisWeek$ | async; as previewPartData) {\n @for (eventPart of previewPartData; track eventPart) {\n <div class=\"event preview p-0\"\n [style.top.px]=\"(eventPart | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner w-100\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\">\n </div>\n </div>\n }\n }\n }\n }\n </div>\n }\n </div>\n </div>\n }\n @case (modes.timeline) {\n <div class=\"d-flex flex-column-100 overflow-y-auto mb-0 bg-white timeline\">\n <div class=\"calendar-head d-flex\">\n <button class=\"btn flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <span [innerHTML]=\"chevronLeft\" class=\"px-0\"></span>\n </button>\n <div class=\"flex-grow-1 h3 py-2 mb-0 text-center\">{{ currentWeekOrMonth$ | async | date: 'MMMM yyyy' }}</div>\n <button class=\"btn flex-start\" (click)=\"onNextWeekOrMonth()\">\n <span [innerHTML]=\"chevronRight\" class=\"px-0\"></span>\n </button>\n </div>\n \n <div class=\"calendar-body table-responsive overflow-x-auto\">\n <table class=\"table mb-0\">\n @if (timeSlots$ | async; as timeSlots) {\n <tr>\n <td></td>\n @for (day of timeSlots; track day) {\n <td [attr.colspan]=\"day.slots.length\" class=\"text-center px-2\">\n <span class=\"position-sticky day-label\">{{ day.stamp | date: 'd EE' }}</span>\n </td>\n }\n </tr>\n <tr>\n <td></td>\n @if (timelineOptions$ | async; as timelineOptions) {\n @for (day of timeSlots; track day) {\n @for (slot of day.slots; track slot) {\n <td>\n <span class=\"d-block p-0 text-center\" [style.width.px]=\"timelineOptions.unitWidth\">\n {{ slot.start | date: 'HH:mm' }}\n </span>\n </td>\n }\n }\n }\n </tr>\n @for (group of (resources$ | async); track group) {\n <bs-resource-group-presenter [resourceGroup]=\"group\" [timeSlots]=\"timeSlots\"></bs-resource-group-presenter>\n }\n }\n </table>\n </div>\n </div>\n }\n}", styles: [":host{display:block;border:1px solid #333;border-top-right-radius:10px;border-top-left-radius:10px;overflow:hidden}.calendar-head{background:#f7f7f7;color:#007aff}.tabel .calendar-head{flex:0 0 auto}.tabel .calendar-body{display:block;flex:1 1 auto}.week-schedule .calendar-head>div{padding-right:18px}.week-schedule .calendar-body{overflow-y:scroll;overflow-x:hidden}.week-schedule .calendar-body .calendar-cell{border-right:1px solid #DEE2E6;border-bottom:1px solid #DEE2E6;cursor:default}.week-schedule .calendar-body .calendar-cell.hover{border-top-width:3px}.week-schedule .calendar-left{width:90px}.week-schedule .event{z-index:5;width:calc((100% - 90px) / 7);height:100px;overflow:hidden;position:absolute;-webkit-user-select:none;user-select:none;pointer-events:none}.week-schedule .event.preview{background:#666;opacity:.6}.week-schedule .event .event-border{background:#000;top:0;left:0;bottom:3px;width:3px;position:absolute;z-index:10;opacity:.3}.week-schedule .event .event-inner{position:relative;inset:0 5px 5px 0;cursor:move;pointer-events:all;overflow:hidden}.week-schedule .event .event-inner .event-wrapper{width:calc(100% - 2px);margin:1px auto 1px 0;height:calc(100% - 3px)}.week-schedule .event .event-inner .event-wrapper .event-bg{opacity:.5;height:100%;transition:opacity .15s ease-in-out}.week-schedule .event .event-inner .event-wrapper .event-label{position:absolute;top:0;font-size:12px;font-weight:600;padding:4px}.week-schedule .event .event-inner .event-resize{position:absolute;cursor:ns-resize;height:4px;left:0;right:0;z-index:400}.week-schedule .event .event-inner .event-resize.top{top:0}.week-schedule .event .event-inner .event-resize.bottom{bottom:0}.week-schedule .event .event-inner .event-resize:hover{background:#ddd}.week-schedule .event .event-inner.hover .event-bg{opacity:.7!important}@media (max-width: 767px){.week-schedule.tabel .calendar-head .calendar-head-cell{text-orientation:sideways;writing-mode:vertical-rl}}.timeline.tabel{flex-flow:column}.timeline .calendar-body .tabel{background-color:#f7f7f7}.timeline .calendar-body .tabel tr:first-child td{background-color:#fff;border:1px solid #000}.timeline .calendar-body .tabel tr:first-child td:first-child{min-width:10rem}.timeline .calendar-body .tabel tr:first-child span.day-label{left:0;right:0}.timeline .calendar-body .tabel tr:nth-child(2) td{border-width:1px;border-color:inherit}.timeline .calendar-body .tabel>:not(:first-child){border-top:none!important}\n"], dependencies: [{ kind: "component", type: i4.ResourceGroupPresenterComponent, selector: "bs-resource-group-presenter", inputs: ["level", "resourceGroup", "timeSlots", "isExpanded"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.DatePipe, name: "date" }, { kind: "pipe", type: i6.BsSecondsTimespanPipe, name: "bsSecondsTimespan" }, { kind: "pipe", type: i7.BsSecondsTodayOffsetPipe, name: "bsSecondsTodayOffset" }, { kind: "pipe", type: i8.DayOfWeekPipe, name: "dayOfWeek" }] }); }
506
- }
507
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BsSchedulerComponent, decorators: [{
508
- type: Component,
509
- args: [{ selector: 'bs-scheduler', template: "@switch (mode$ | async) {\n @case (modes.week) {\n <div class=\"d-flex flex-column w-100 overflow-y-auto mb-0 week-schedule\" [style.max-height.px]=\"null\">\n <div class=\"calendar-head\">\n <div class=\"w-100 d-flex flex-row\">\n <div class=\"d-flex calendar-left justify-content-between\">\n <button class=\"btn btn-default flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <span [innerHTML]=\"chevronLeft\" class=\"px-0\"></span>\n </button>\n <button class=\"btn btn-default flex-end\" (click)=\"onNextWeekOrMonth()\">\n <span [innerHTML]=\"chevronRight\" class=\"px-0\"></span>\n </button>\n </div>\n @for (day of (shownDays$ | async); track day) {\n <div class=\"flex-grow-1 calendar-head-cell\">\n <span class=\"d-block col-form-label text-center text-nowrap\">\n <span>{{ day | date: 'dd-MM' }}</span><span class=\"d-none d-lg-inline-block\">-{{ day | date: 'yyyy' }}</span>\n </span>\n </div>\n }\n </div>\n </div>\n <div class=\"calendar-body\" [style.height.px]=\"maxInnerHeight\">\n @if (timeSlots$ | async; as row) {\n <div class=\"position-relative\">\n @if (weekOptions$ | async; as weekOptions) {\n <!-- Timeslots -->\n @for (timeslots of row; track timeslots; let i = $index) {\n <div class=\"d-flex flex-row p-0 timeslot\" [style.height.px]=\"weekOptions.unitHeight\">\n <div class=\"calendar-cell calendar-left align-top px-2 py-0\">{{ timeslots.slots[0].start | date: 'HH:mm:ss' }}</div>\n @for (slot of timeslots.slots; track slot.start; let j = $index) {\n <div class=\"calendar-cell flex-grow-1\" #slot (mousedown)=\"onCreateEvent($event, slot)\" [attr.data-row]=\"i\" [attr.data-column]=\"j\"></div>\n }\n </div>\n }\n \n <!-- Events -->\n @if (timeSlotDuration$ | async; as timeSlotDuration) {\n @if (timelinedEventPartsForThisWeek$ | async; as partData) {\n @for (eventPart of partData.parts; track eventPart) {\n <div class=\"event p-0\"\n [style.top.px]=\"(eventPart.part | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart.part | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner\" [class.hover]=\"(hoveredEvent$ | async) === eventPart.part.event\"\n [style.width]=\"'calc(100% / ' + partData.total + ')'\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.margin-left]=\"'calc(100% / ' + partData.total + ' * ' + eventPart.index + ')'\">\n \n @if (eventPart.part.start === eventPart.part.event?.start) {\n <div class=\"event-resize top\" (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'top')\"></div>\n }\n <div class=\"event-border\"></div>\n @if (eventPart.part.event) {\n <div class=\"event-wrapper\"\n (mousedown)=\"onStartDragEvent(eventPart.part, $event)\"\n (mouseenter)=\"onHoverEvent(eventPart.part.event)\"\n (mouseleave)=\"onLeaveEvent(eventPart.part.event)\">\n <div class=\"event-bg\" [style.background-color]=\"eventPart.part.event.color\"></div>\n <div class=\"event-label\">{{ eventPart.part.event.description }}</div>\n </div>\n }\n @if (eventPart.part.end === eventPart.part.event?.end) {\n <div class=\"event-resize bottom\" (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'bottom')\"></div>\n }\n </div>\n </div>\n }\n }\n @if (previewEventPartsForThisWeek$ | async; as previewPartData) {\n @for (eventPart of previewPartData; track eventPart) {\n <div class=\"event preview p-0\"\n [style.top.px]=\"(eventPart | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner w-100\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\">\n </div>\n </div>\n }\n }\n }\n }\n </div>\n }\n </div>\n </div>\n }\n @case (modes.timeline) {\n <div class=\"d-flex flex-column-100 overflow-y-auto mb-0 bg-white timeline\">\n <div class=\"calendar-head d-flex\">\n <button class=\"btn flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <span [innerHTML]=\"chevronLeft\" class=\"px-0\"></span>\n </button>\n <div class=\"flex-grow-1 h3 py-2 mb-0 text-center\">{{ currentWeekOrMonth$ | async | date: 'MMMM yyyy' }}</div>\n <button class=\"btn flex-start\" (click)=\"onNextWeekOrMonth()\">\n <span [innerHTML]=\"chevronRight\" class=\"px-0\"></span>\n </button>\n </div>\n \n <div class=\"calendar-body table-responsive overflow-x-auto\">\n <table class=\"table mb-0\">\n @if (timeSlots$ | async; as timeSlots) {\n <tr>\n <td></td>\n @for (day of timeSlots; track day) {\n <td [attr.colspan]=\"day.slots.length\" class=\"text-center px-2\">\n <span class=\"position-sticky day-label\">{{ day.stamp | date: 'd EE' }}</span>\n </td>\n }\n </tr>\n <tr>\n <td></td>\n @if (timelineOptions$ | async; as timelineOptions) {\n @for (day of timeSlots; track day) {\n @for (slot of day.slots; track slot) {\n <td>\n <span class=\"d-block p-0 text-center\" [style.width.px]=\"timelineOptions.unitWidth\">\n {{ slot.start | date: 'HH:mm' }}\n </span>\n </td>\n }\n }\n }\n </tr>\n @for (group of (resources$ | async); track group) {\n <bs-resource-group-presenter [resourceGroup]=\"group\" [timeSlots]=\"timeSlots\"></bs-resource-group-presenter>\n }\n }\n </table>\n </div>\n </div>\n }\n}", styles: [":host{display:block;border:1px solid #333;border-top-right-radius:10px;border-top-left-radius:10px;overflow:hidden}.calendar-head{background:#f7f7f7;color:#007aff}.tabel .calendar-head{flex:0 0 auto}.tabel .calendar-body{display:block;flex:1 1 auto}.week-schedule .calendar-head>div{padding-right:18px}.week-schedule .calendar-body{overflow-y:scroll;overflow-x:hidden}.week-schedule .calendar-body .calendar-cell{border-right:1px solid #DEE2E6;border-bottom:1px solid #DEE2E6;cursor:default}.week-schedule .calendar-body .calendar-cell.hover{border-top-width:3px}.week-schedule .calendar-left{width:90px}.week-schedule .event{z-index:5;width:calc((100% - 90px) / 7);height:100px;overflow:hidden;position:absolute;-webkit-user-select:none;user-select:none;pointer-events:none}.week-schedule .event.preview{background:#666;opacity:.6}.week-schedule .event .event-border{background:#000;top:0;left:0;bottom:3px;width:3px;position:absolute;z-index:10;opacity:.3}.week-schedule .event .event-inner{position:relative;inset:0 5px 5px 0;cursor:move;pointer-events:all;overflow:hidden}.week-schedule .event .event-inner .event-wrapper{width:calc(100% - 2px);margin:1px auto 1px 0;height:calc(100% - 3px)}.week-schedule .event .event-inner .event-wrapper .event-bg{opacity:.5;height:100%;transition:opacity .15s ease-in-out}.week-schedule .event .event-inner .event-wrapper .event-label{position:absolute;top:0;font-size:12px;font-weight:600;padding:4px}.week-schedule .event .event-inner .event-resize{position:absolute;cursor:ns-resize;height:4px;left:0;right:0;z-index:400}.week-schedule .event .event-inner .event-resize.top{top:0}.week-schedule .event .event-inner .event-resize.bottom{bottom:0}.week-schedule .event .event-inner .event-resize:hover{background:#ddd}.week-schedule .event .event-inner.hover .event-bg{opacity:.7!important}@media (max-width: 767px){.week-schedule.tabel .calendar-head .calendar-head-cell{text-orientation:sideways;writing-mode:vertical-rl}}.timeline.tabel{flex-flow:column}.timeline .calendar-body .tabel{background-color:#f7f7f7}.timeline .calendar-body .tabel tr:first-child td{background-color:#fff;border:1px solid #000}.timeline .calendar-body .tabel tr:first-child td:first-child{min-width:10rem}.timeline .calendar-body .tabel tr:first-child span.day-label{left:0;right:0}.timeline .calendar-body .tabel tr:nth-child(2) td{border-width:1px;border-color:inherit}.timeline .calendar-body .tabel>:not(:first-child){border-top:none!important}\n"] }]
510
- }], ctorParameters: () => [{ type: i1.DomSanitizer }, { type: i2.BsCalendarMonthService }, { type: i3.BsTimelineService }], propDecorators: { timeSlotElements: [{
511
- type: ViewChildren,
512
- args: ['slot']
513
- }], modeChange: [{
514
- type: Output
515
- }], mode: [{
516
- type: Input
517
- }], weekOptionsChange: [{
518
- type: Output
519
- }], weekOptions: [{
520
- type: Input
521
- }], timelineOptionsChange: [{
522
- type: Output
523
- }], timelineOptions: [{
524
- type: Input
525
- }], maxInnerHeight: [{
526
- type: Input
527
- }], resources: [{
528
- type: Input
529
- }], onMousemove: [{
530
- type: HostListener,
531
- args: ['document:mousemove', ['$event']]
532
- }], onMouseUp: [{
533
- type: HostListener,
534
- args: ['document:mouseup', ['$event']]
535
- }] } });
536
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvc2NoZWR1bGVyL3NyYy9jb21wb25lbnRzL3NjaGVkdWxlci9zY2hlZHVsZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9zY2hlZHVsZXIvc3JjL2NvbXBvbmVudHMvc2NoZWR1bGVyL3NjaGVkdWxlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQ0FBcUM7QUFFckMsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWEsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7QUFvQjVELE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFBb0IsU0FBdUIsRUFBVSxvQkFBNEMsRUFBVSxlQUFrQztRQUF6SCxjQUFTLEdBQVQsU0FBUyxDQUFjO1FBQVUseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF3QjtRQUFVLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQStKN0ksZUFBVSxHQUFHLElBQUksZUFBZSxDQUErQixFQUFFLENBQUMsQ0FBQztRQUtuRSxpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFjLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFB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Q0FBQyxDQUFDLENBQUM7b0JBQ1AsQ0FBQztvQkFBQyxNQUFNO1lBQ1YsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOzhHQS9nQlUsb0JBQW9CO2tHQUFwQixvQkFBb0IsbWhCQzNCakMsMmtTQXFJQzs7MkZEMUdZLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxjQUFjO3NKQTBMRixnQkFBZ0I7c0JBQXJDLFlBQVk7dUJBQUMsTUFBTTtnQkF3QkgsVUFBVTtzQkFBMUIsTUFBTTtnQkFJYSxJQUFJO3NCQUF2QixLQUFLO2dCQWVXLGlCQUFpQjtzQkFBakMsTUFBTTtnQkFJYSxXQUFXO3NCQUE5QixLQUFLO2dCQUtXLHFCQUFxQjtzQkFBckMsTUFBTTtnQkFJYSxlQUFlO3NCQUFsQyxLQUFLO2dCQUtVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBTWMsU0FBUztzQkFBNUIsS0FBSztnQkFnSk4sV0FBVztzQkFEVixZQUFZO3VCQUFDLG9CQUFvQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQTJGOUMsU0FBUztzQkFEUixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCIuLi8uLi90eXBlc1wiIC8+XG5cbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCc0NhbGVuZGFyTW9udGhTZXJ2aWNlIH0gZnJvbSAnQG1pbnRwbGF5ZXIvbmctYm9vdHN0cmFwL2NhbGVuZGFyLW1vbnRoJztcbmltcG9ydCB7IEVTY2hlZHVsZXJNb2RlIH0gZnJvbSAnLi4vLi4vZW51bXMvc2NoZWR1bGVyLW1vZGUnO1xuaW1wb3J0IHsgRURyYWdPcGVyYXRpb24gfSBmcm9tICcuLi8uLi9lbnVtcy9kcmFnLW9wZXJhdGlvbic7XG5pbXBvcnQgeyBEcmFnT3BlcmF0aW9uIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9kcmFnLW9wZXJhdGlvbic7XG5pbXBvcnQgeyBQcmV2aWV3RXZlbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3ByZXZpZXctZXZlbnQnO1xuaW1wb3J0IHsgU2NoZWR1bGVyRXZlbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3NjaGVkdWxlci1ldmVudCc7XG5pbXBvcnQgeyBTY2hlZHVsZXJFdmVudFBhcnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3NjaGVkdWxlci1ldmVudC1wYXJ0JztcbmltcG9ydCB7IFNjaGVkdWxlckV2ZW50V2l0aFBhcnRzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zY2hlZHVsZXItZXZlbnQtd2l0aC1wYXJ0cyc7XG5pbXBvcnQgeyBUaW1lU2xvdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdGltZS1zbG90JztcbmltcG9ydCB7IEJzVGltZWxpbmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGltZWxpbmUvdGltZWxpbmUuc2VydmljZSc7XG5pbXBvcnQgeyBSZXNvdXJjZUdyb3VwIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9yZXNvdXJjZS1ncm91cCc7XG5pbXBvcnQgeyBSZXNvdXJjZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcmVzb3VyY2UnO1xuaW1wb3J0IHsgU2NoZWR1bGVyU3RhbXBXaXRoU2xvdHMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3NjaGVkdWxlci1zdGFtcC13aXRoLXNsb3RzJztcbmltcG9ydCB7IFdlZWtPcHRpb25zIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy93ZWVrLW9wdGlvbnMnO1xuaW1wb3J0IHsgVGltZWxpbmVPcHRpb25zIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy90aW1lbGluZS1vcHRpb25zJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnMtc2NoZWR1bGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NjaGVkdWxlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NjaGVkdWxlci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBCc1NjaGVkdWxlckNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsIHByaXZhdGUgY2FsZW5kYXJNb250aFNlcnZpY2U6IEJzQ2FsZW5kYXJNb250aFNlcnZpY2UsIHByaXZhdGUgdGltZWxpbmVTZXJ2aWNlOiBCc1RpbWVsaW5lU2VydmljZSkge1xuICAgIGNvbnN0IG1vbmRheSA9IHRoaXMuY2FsZW5kYXJNb250aFNlcnZpY2UuZ2V0TW9uZGF5QmVmb3JlKG5ldyBEYXRlKCkpO1xuICAgIHRoaXMuY3VycmVudFdlZWtPck1vbnRoJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0ZT4obW9uZGF5KTtcblxuICAgIHRoaXMuc2hvd25EYXlzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuY3VycmVudFdlZWtPck1vbnRoJCwgdGhpcy5tb2RlJF0pXG4gICAgICAucGlwZShtYXAoKFtjdXJyZW50RGF5LCBtb2RlXSkgPT4ge1xuICAgICAgICBjdXJyZW50RGF5LnNldEhvdXJzKDApO1xuICAgICAgICBjdXJyZW50RGF5LnNldE1pbnV0ZXMoMCk7XG4gICAgICAgIGN1cnJlbnREYXkuc2V0U2Vjb25kcygwKTtcbiAgICAgICAgY3VycmVudERheS5zZXRNaWxsaXNlY29uZHMoMCk7XG4gICAgICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICAgIGNhc2UgRVNjaGVkdWxlck1vZGUud2Vlazoge1xuICAgICAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oQXJyYXkoNykua2V5cygpKS5tYXAoKHgpID0+IHRoaXMuYWRkRGF5cyhjdXJyZW50RGF5LCB4KSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgRVNjaGVkdWxlck1vZGUudGltZWxpbmU6IHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0RGF5ID0gbmV3IERhdGUoY3VycmVudERheS5nZXRGdWxsWWVhcigpLCBjdXJyZW50RGF5LmdldE1vbnRoKCksIDEpO1xuICAgICAgICAgICAgY29uc3QgZGF5c09mTW9udGggPSBuZXcgRGF0ZShjdXJyZW50RGF5LmdldEZ1bGxZZWFyKCksIGN1cnJlbnREYXkuZ2V0TW9udGgoKSArIDEsIDApLmdldERhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiBBcnJheS5mcm9tKEFycmF5KGRheXNPZk1vbnRoKS5rZXlzKCkpLm1hcCgoeCkgPT4gdGhpcy5hZGREYXlzKGZpcnN0RGF5LCB4KSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmRheXNPZldlZWtXaXRoVGltZXN0YW1wcyQgPSB0aGlzLnNob3duRGF5cyRcbiAgICAgIC5waXBlKG1hcCgoc2hvd25EYXlzKSA9PiAoeyBzdGFydDogc2hvd25EYXlzWzBdLmdldFRpbWUoKSwgZW5kOiBzaG93bkRheXNbc2hvd25EYXlzLmxlbmd0aCAtIDFdLmdldFRpbWUoKSArIDI0ICogNjAgKiA2MCAqIDEwMDAgfSkpKTtcbiAgICBcbiAgICB0aGlzLmV2ZW50cyQgPSB0aGlzLnJlc291cmNlcyRcbiAgICAgIC5waXBlKG1hcCgocmVzb3VyY2VzT3JHcm91cHMpID0+IHJlc291cmNlc09yR3JvdXBzLm1hcChyZXNPckdyb3VwID0+IHRoaXMuZ2V0UmVzb3VyY2VzRm9yR3JvdXAocmVzT3JHcm91cCkpKSlcbiAgICAgIC5waXBlKG1hcChqYWdnZWRSZXNvdXJjZXMgPT4gamFnZ2VkUmVzb3VyY2VzLnJlZHVjZSgoZmxhdCwgdG9GbGF0dGVuKSA9PiBmbGF0LmNvbmNhdCh0b0ZsYXR0ZW4pLCBbXSkpKVxuICAgICAgLnBpcGUobWFwKHJlc291cmNlcyA9PiByZXNvdXJjZXMubWFwKHJlcyA9PiByZXMuZXZlbnRzKSkpXG4gICAgICAucGlwZShtYXAoamFnZ2VkRXZlbnRzID0+IGphZ2dlZEV2ZW50cy5yZWR1Y2UoKGZsYXQsIHRvRmxhdHRlbikgPT4gZmxhdC5jb25jYXQodG9GbGF0dGVuKSwgW10pKSk7XG5cbiAgICAgIC8vIGdyb3Vwcy5yZWR1Y2UoKGZsYXQsIHRvRmxhdHRlbikgPT4gZmxhdC5jb25jYXQodG9GbGF0dGVuLmNoaWxkcmVuKSwgW10pXG4gICAgdGhpcy5ldmVudFBhcnRzJCA9IHRoaXMuZXZlbnRzJC5waXBlKFxuICAgICAgbWFwKChldmVudHMpID0+ICBldmVudHMubWFwKChldikgPT4gdGhpcy50aW1lbGluZVNlcnZpY2Uuc3BsaXRJblBhcnRzKGV2KSkpXG4gICAgKTtcblxuICAgIHRoaXMuZXZlbnRQYXJ0c0ZvclRoaXNXZWVrJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5kYXlzT2ZXZWVrV2l0aFRpbWVzdGFtcHMkLFxuICAgICAgdGhpcy5ldmVudFBhcnRzJFxuICAgICAgICAucGlwZShtYXAoZXZlbnRQYXJ0cyA9PiBldmVudFBhcnRzLm1hcChldnAgPT4gZXZwLnBhcnRzKSkpXG4gICAgICAgIC5waXBlKG1hcChqYWdnZWRQYXJ0cyA9PiAgamFnZ2VkUGFydHMucmVkdWNlKChmbGF0LCB0b0ZsYXR0ZW4pID0+IGZsYXQuY29uY2F0KHRvRmxhdHRlbiksIFtdKSkpXG4gICAgICBdKVxuICAgICAgLnBpcGUobWFwKChbc3RhcnRBbmRFbmQsIGV2ZW50UGFydHNdKSA9PiB7XG4gICAgICAgIHJldHVybiBldmVudFBhcnRzLmZpbHRlcihldmVudFBhcnQgPT4ge1xuICAgICAgICAgIHJldHVybiAhKChldmVudFBhcnQuZW5kLmdldFRpbWUoKSA8PSBzdGFydEFuZEVuZC5zdGFydCkgfHwgKGV2ZW50UGFydC5zdGFydC5nZXRUaW1lKCkgPj0gc3RhcnRBbmRFbmQuZW5kKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSkpO1xuXG4gICAgdGhpcy5wcmV2aWV3RXZlbnRQYXJ0cyQgPSB0aGlzLnByZXZpZXdFdmVudCQucGlwZShcbiAgICAgIG1hcCgoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMudGltZWxpbmVTZXJ2aWNlLnNwbGl0SW5QYXJ0cyhldmVudClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMucHJldmlld0V2ZW50UGFydHNGb3JUaGlzV2VlayQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmRheXNPZldlZWtXaXRoVGltZXN0YW1wcyQsIHRoaXMucHJldmlld0V2ZW50UGFydHMkXSlcbiAgICAgIC5waXBlKG1hcCgoW3N0YXJ0QW5kRW5kLCBwcmV2aWV3RXZlbnRQYXJ0c10pID0+IHtcbiAgICAgICAgaWYgKHByZXZpZXdFdmVudFBhcnRzKSB7XG4gICAgICAgICAgcmV0dXJuIHByZXZpZXdFdmVudFBhcnRzLnBhcnRzLmZpbHRlcihldmVudFBhcnQgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICEoKGV2ZW50UGFydC5lbmQuZ2V0VGltZSgpIDw9IHN0YXJ0QW5kRW5kLnN0YXJ0KSB8fCAoZXZlbnRQYXJ0LnN0YXJ0LmdldFRpbWUoKSA+PSBzdGFydEFuZEVuZC5lbmQpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgIH0pKTtcblxuICAgIHRoaXMudGltZWxpbmVkRXZlbnRQYXJ0c0ZvclRoaXNXZWVrJCA9IHRoaXMuZXZlbnRQYXJ0c0ZvclRoaXNXZWVrJFxuICAgICAgLnBpcGUobWFwKGV2ZW50UGFydHMgPT4ge1xuICAgICAgICAvLyBXZSdsbCBvbmx5IHVzZSB0aGUgZXZlbnRzIGZvciB0aGlzIHdlZWtcbiAgICAgICAgY29uc3QgZXZlbnRzID0gZXZlbnRQYXJ0cy5tYXAoZXAgPT4gZXAuZXZlbnQpXG4gICAgICAgICAgLmZpbHRlcigoZSwgaSwgbGlzdCkgPT4gbGlzdC5pbmRleE9mKGUpID09PSBpKVxuICAgICAgICAgIC5maWx0ZXIoKGUpID0+ICEhZSlcbiAgICAgICAgICAubWFwKChlKSA9PiA8U2NoZWR1bGVyRXZlbnQ+ZSk7XG4gICAgICAgIGNvbnN0IHRpbWVsaW5lID0gdGhpcy50aW1lbGluZVNlcnZpY2UuZ2V0VGltZWxpbmUoZXZlbnRzKTtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aW1lbGluZS5tYXAodHJhY2sgPT4gdHJhY2suZXZlbnRzLm1hcChldiA9PiAoeyBldmVudDogZXYsIGluZGV4OiB0cmFjay5pbmRleCB9KSkpXG4gICAgICAgICAgLnJlZHVjZSgoZmxhdCwgdG9GbGF0dGVuKSA9PiBmbGF0LmNvbmNhdCh0b0ZsYXR0ZW4pLCBbXSlcbiAgICAgICAgICAubWFwKChldmkpID0+IGV2ZW50UGFydHMuZmlsdGVyKHAgPT4gcC5ldmVudCA9PT0gZXZpLmV2ZW50KS5tYXAocCA9PiAoeyBwYXJ0OiBwLCBpbmRleDogZXZpLmluZGV4IH0pKSlcbiAgICAgICAgICAucmVkdWNlKChmbGF0LCB0b0ZsYXR0ZW4pID0+IGZsYXQuY29uY2F0KHRvRmxhdHRlbiksIFtdKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHRvdGFsOiB0aW1lbGluZS5sZW5ndGgsXG4gICAgICAgICAgcGFydHM6IHJlc3VsdFxuICAgICAgICB9O1xuICAgICAgfSkpO1xuXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5tb2RlJCwgdGhpcy5zaG93bkRheXMkLCB0aGlzLnRpbWVTbG90RHVyYXRpb24kXSlcbiAgICAgIC5waXBlKGZpbHRlcigoW21vZGUsIHNob3duRGF5cywgZHVyYXRpb25dKSA9PiBtb2RlICE9PSBudWxsKSlcbiAgICAgIC5waXBlKG1hcCgoW21vZGUsIHNob3duRGF5cywgZHVyYXRpb25dKSA9PiB7XG4gICAgICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICAgIGNhc2UgRVNjaGVkdWxlck1vZGUud2Vlazoge1xuICAgICAgICAgICAgY29uc3QgdGltZVNsb3RzUGVyRGF5ID0gTWF0aC5mbG9vcigoNjAgKiA2MCAqIDI0KSAvIGR1cmF0aW9uKTtcbiAgICAgICAgICAgIHJldHVybiBBcnJheS5mcm9tKEFycmF5KHRpbWVTbG90c1BlckRheSkua2V5cygpKS5tYXAoKGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHRpbWVzbG90Rm9yTW9uZGF5ID0gdGhpcy5jcmVhdGVUaW1lc2xvdChzaG93bkRheXNbMF0sIGluZGV4LCBkdXJhdGlvbik7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIDxTY2hlZHVsZXJTdGFtcFdpdGhTbG90cz57XG4gICAgICAgICAgICAgICAgc2xvdHM6IHNob3duRGF5cy5tYXAoKGRheSkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZShkYXkpO1xuICAgICAgICAgICAgICAgICAgc3RhcnQuc2V0SG91cnModGltZXNsb3RGb3JNb25kYXkuc3RhcnQuZ2V0SG91cnMoKSk7XG4gICAgICAgICAgICAgICAgICBzdGFydC5zZXRNaW51dGVzKHRpbWVzbG90Rm9yTW9uZGF5LnN0YXJ0LmdldE1pbnV0ZXMoKSk7XG4gICAgICAgICAgICAgICAgICBzdGFydC5zZXRTZWNvbmRzKHRpbWVzbG90Rm9yTW9uZGF5LnN0YXJ0LmdldFNlY29uZHMoKSk7XG4gICAgICAgICAgICAgICAgICBzdGFydC5zZXRNaWxsaXNlY29uZHModGltZXNsb3RGb3JNb25kYXkuc3RhcnQuZ2V0TWlsbGlzZWNvbmRzKCkpO1xuICAgICAgXG4gICAgICAgICAgICAgICAgICBjb25zdCBlbmQgPSBuZXcgRGF0ZShkYXkpO1xuICAgICAgICAgICAgICAgICAgZW5kLnNldEhvdXJzKHRpbWVzbG90Rm9yTW9uZGF5LmVuZC5nZXRIb3VycygpKTtcbiAgICAgICAgICAgICAgICAgIGVuZC5zZXRNaW51dGVzKHRpbWVzbG90Rm9yTW9uZGF5LmVuZC5nZXRNaW51dGVzKCkpO1xuICAgICAgICAgICAgICAgICAgZW5kLnNldFNlY29uZHModGltZXNsb3RGb3JNb25kYXkuZW5kLmdldFNlY29uZHMoKSk7XG4gICAgICAgICAgICAgICAgICBlbmQuc2V0TWlsbGlzZWNvbmRzKHRpbWVzbG90Rm9yTW9uZGF5LmVuZC5nZXRNaWxsaXNlY29uZHMoKSk7XG4gICAgICAgICAgICAgICAgICBlbmQuc2V0RGF0ZShlbmQuZ2V0RGF0ZSgpICsgdGltZXNsb3RGb3JNb25kYXkuZW5kLmdldERhdGUoKSAtIHRpbWVzbG90Rm9yTW9uZGF5LnN0YXJ0LmdldERhdGUoKSk7XG4gICAgICBcbiAgICAgICAgICAgICAgICAgIHJldHVybiA8VGltZVNsb3Q+eyBzdGFydCwgZW5kIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3RhbXA6IHRpbWVzbG90Rm9yTW9uZGF5LnN0YXJ0XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBFU2NoZWR1bGVyTW9kZS50aW1lbGluZToge1xuICAgICAgICAgICAgY29uc3QgdG90YWxUaW1lc2xvdHMgPSAoMjQgKiA2MCAqIDYwKSAvIGR1cmF0aW9uO1xuICAgICAgICAgICAgcmV0dXJuIHNob3duRGF5cy5tYXAoKGRheSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gPFNjaGVkdWxlclN0YW1wV2l0aFNsb3RzPntcbiAgICAgICAgICAgICAgICBzbG90czogQXJyYXkuZnJvbShBcnJheSh0b3RhbFRpbWVzbG90cykua2V5cygpKVxuICAgICAgICAgICAgICAgICAgLm1hcCgoaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVGltZXNsb3QoZGF5LCBpbmRleCwgZHVyYXRpb24pO1xuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3RhbXA6IGRheVxuICAgICAgICAgICAgICB9IFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIHRocm93ICdVbmtub3duIHZhbHVlIGZvciBNb2RlOiAnICsgbW9kZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pKVxuICAgICAgLnN1YnNjcmliZSgodGltZXNsb3RzKSA9PiB7XG4gICAgICAgIC8vIEZvciBwZXJmb3JtYW5jZSByZWFzb25zLCB3ZSdyZSBub3QgdXNpbmcgYW4gb2JzZXJ2YWJsZSBoZXJlLCBidXQgcGVyc2lzdCB0aGUgdGltZXNsb3RzIGluIGEgQmVoYXZpb3JTdWJqZWN0LlxuICAgICAgICB0aGlzLnRpbWVTbG90cyQubmV4dCh0aW1lc2xvdHMpO1xuICAgICAgfSk7XG4gICAgXG4gICAgdGhpcy53ZWVrT3B0aW9ucyQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUod2Vla09wdGlvbnMgPT4gdGhpcy53ZWVrT3B0aW9uc0NoYW5nZS5lbWl0KHdlZWtPcHRpb25zKSk7XG4gICAgdGhpcy50aW1lbGluZU9wdGlvbnMkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKHRpbWVsaW5lT3B0aW9ucyA9PiB0aGlzLnRpbWVsaW5lT3B0aW9uc0NoYW5nZS5lbWl0KHRpbWVsaW5lT3B0aW9ucykpO1xuXG4gICAgLy8gY29tYmluZUxhdGVzdChbdGhpcy5tb2RlJCwgdGhpcy5zY2FsZSRdKVxuICAgIC8vICAgLnBpcGUoZmlsdGVyKChbbW9kZSwgc2NhbGVdKSA9PiBtb2RlID09PSBFU2NoZWR1bGVyTW9kZS50aW1lbGluZSkpXG5cbiAgICBpbXBvcnQoJ2Jvb3RzdHJhcC1pY29ucy9pY29ucy9jaGV2cm9uLWxlZnQuc3ZnJykudGhlbigoaWNvbikgPT4ge1xuICAgICAgdGhpcy5jaGV2cm9uTGVmdCA9IHNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChpY29uLmRlZmF1bHQpO1xuICAgIH0pO1xuICAgIGltcG9ydCgnYm9vdHN0cmFwLWljb25zL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJykudGhlbigoaWNvbikgPT4ge1xuICAgICAgdGhpcy5jaGV2cm9uUmlnaHQgPSBzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoaWNvbi5kZWZhdWx0KTtcbiAgICB9KTtcbiAgfVxuXG4gIGNoZXZyb25MZWZ0PzogU2FmZUh0bWw7XG4gIGNoZXZyb25SaWdodD86IFNhZmVIdG1sO1xuICByZXNvdXJjZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDwoUmVzb3VyY2UgfCBSZXNvdXJjZUdyb3VwKVtdPihbXSk7XG4gIGV2ZW50cyQ6IE9ic2VydmFibGU8U2NoZWR1bGVyRXZlbnRbXT47XG4gIGV2ZW50UGFydHMkOiBPYnNlcnZhYmxlPFNjaGVkdWxlckV2ZW50V2l0aFBhcnRzW10+O1xuICBldmVudFBhcnRzRm9yVGhpc1dlZWskOiBPYnNlcnZhYmxlPFNjaGVkdWxlckV2ZW50UGFydFtdPjtcbiAgdGltZWxpbmVkRXZlbnRQYXJ0c0ZvclRoaXNXZWVrJDogT2JzZXJ2YWJsZTx7IHRvdGFsOiBudW1iZXIsIHBhcnRzOiB7IHBhcnQ6IFNjaGVkdWxlckV2ZW50UGFydCwgaW5kZXg6IG51bWJlcn1bXSB9PjtcbiAgd2Vla09wdGlvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxXZWVrT3B0aW9ucz4oeyB1bml0SGVpZ2h0OiAzMCB9KTtcbiAgdGltZWxpbmVPcHRpb25zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGltZWxpbmVPcHRpb25zPih7IHVuaXRXaWR0aDogNTAgfSk7XG4gIFxuICBwcmV2aWV3RXZlbnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQcmV2aWV3RXZlbnQgfCBudWxsPihudWxsKTtcbiAgcHJldmlld0V2ZW50UGFydHMkOiBPYnNlcnZhYmxlPFNjaGVkdWxlckV2ZW50V2l0aFBhcnRzIHwgbnVsbD47XG4gIHByZXZpZXdFdmVudFBhcnRzRm9yVGhpc1dlZWskOiBPYnNlcnZhYmxlPFNjaGVkdWxlckV2ZW50UGFydFtdPjtcbiAgXG4gIGN1cnJlbnRXZWVrT3JNb250aCQ6IEJlaGF2aW9yU3ViamVjdDxEYXRlPjtcbiAgc2hvd25EYXlzJDogT2JzZXJ2YWJsZTxEYXRlW10+O1xuICBkYXlzT2ZXZWVrV2l0aFRpbWVzdGFtcHMkOiBPYnNlcnZhYmxlPHtzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcn0+O1xuICB0aW1lU2xvdER1cmF0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigxODAwKTtcbiAgdGltZVNsb3RzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2NoZWR1bGVyU3RhbXBXaXRoU2xvdHNbXT4oW10pO1xuICBtb3VzZVN0YXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBob3ZlcmVkVGltZVNsb3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUaW1lU2xvdCB8IG51bGw+KG51bGwpO1xuICBob3ZlcmVkRXZlbnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTY2hlZHVsZXJFdmVudCB8IG51bGw+KG51bGwpO1xuICByZXNvdXJjZUdyb3VwUHJlc2VudGVyQ291bnRlciA9IDE7XG5cbiAgQFZpZXdDaGlsZHJlbignc2xvdCcpIHRpbWVTbG90RWxlbWVudHMhOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+O1xuXG4gIGNyZWF0ZVRpbWVzbG90KGRhdGU6IERhdGUsIGluZGV4OiBudW1iZXIsIGR1cmF0aW9uOiBudW1iZXIpIHtcbiAgICBjb25zdCB0aW1lU2xvdFN0YXJ0ID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgdGltZVNsb3RTdGFydC5zZXRUaW1lKCt0aW1lU2xvdFN0YXJ0LmdldFRpbWUoKSArIGluZGV4ICogZHVyYXRpb24gKiAxMDAwKTtcbiAgICBjb25zdCB0aW1lU2xvdEVuZCA9IG5ldyBEYXRlKHRpbWVTbG90U3RhcnQpO1xuICAgIHRpbWVTbG90RW5kLnNldFRpbWUoK3RpbWVTbG90RW5kLmdldFRpbWUoKSArIGR1cmF0aW9uICogMTAwMCk7XG5cbiAgICByZXR1cm4gPFRpbWVTbG90Pnsgc3RhcnQ6IHRpbWVTbG90U3RhcnQsIGVuZDogdGltZVNsb3RFbmQgfTtcbiAgfVxuXG4gIGdldFJlc291cmNlc0Zvckdyb3VwKHJlc291cmNlT3JHcm91cDogUmVzb3VyY2UgfCBSZXNvdXJjZUdyb3VwKSA6IFJlc291cmNlW10ge1xuICAgIGlmICgnY2hpbGRyZW4nIGluIHJlc291cmNlT3JHcm91cCkge1xuICAgICAgcmV0dXJuIHJlc291cmNlT3JHcm91cC5jaGlsZHJlblxuICAgICAgICAubWFwKChjaGlsZCkgPT4gdGhpcy5nZXRSZXNvdXJjZXNGb3JHcm91cChjaGlsZCkpXG4gICAgICAgIC5yZWR1Y2UoKGZsYXQsIHRvRmxhdHRlbikgPT4gZmxhdC5jb25jYXQodG9GbGF0dGVuKSwgW10pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW3Jlc291cmNlT3JHcm91cF07XG4gICAgfVxuICB9XG5cbiAgLy8jcmVnaW9uIE1vZGVcbiAgbW9kZXMgPSBFU2NoZWR1bGVyTW9kZTtcbiAgbW9kZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEVTY2hlZHVsZXJNb2RlPihFU2NoZWR1bGVyTW9kZS53ZWVrKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBtb2RlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxFU2NoZWR1bGVyTW9kZT4oKTtcbiAgcHVibGljIGdldCBtb2RlKCkge1xuICAgIHJldHVybiB0aGlzLm1vZGUkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgbW9kZSh2YWx1ZTogRVNjaGVkdWxlck1vZGUpIHtcbiAgICB0aGlzLm1vZGUkLm5leHQodmFsdWUpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuICAvLyAvLyNyZWdpb24gU2NhbGVcbiAgLy8gc2NhbGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTY2hlZHVsZXJTY2FsZT4oYXZhaWxhYmxlU2NhbGVzWzRdKTtcbiAgLy8gQE91dHB1dCgpIHB1YmxpYyBzY2FsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2NoZWR1bGVyU2NhbGU+KCk7XG4gIC8vIHB1YmxpYyBnZXQgc2NhbGUoKSB7XG4gIC8vICAgcmV0dXJuIHRoaXMuc2NhbGUkLnZhbHVlO1xuICAvLyB9XG4gIC8vIEBJbnB1dCgpIHB1YmxpYyBzZXQgc2NhbGUodmFsdWU6IFNjaGVkdWxlclNjYWxlKSB7XG4gIC8vICAgdGhpcy5zY2FsZSQubmV4dCh2YWx1ZSk7XG4gIC8vIH1cbiAgLy8gLy8jZW5kcmVnaW9uXG4gIC8vI3JlZ2lvbiBXZWVrT3B0aW9uc1xuICBAT3V0cHV0KCkgcHVibGljIHdlZWtPcHRpb25zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxXZWVrT3B0aW9ucz4oKTtcbiAgcHVibGljIGdldCB3ZWVrT3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy53ZWVrT3B0aW9ucyQudmFsdWU7XG4gIH1cbiAgQElucHV0KCkgcHVibGljIHNldCB3ZWVrT3B0aW9ucyh2YWx1ZTogV2Vla09wdGlvbnMpIHtcbiAgICB0aGlzLndlZWtPcHRpb25zJC5uZXh0KHZhbHVlKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cbiAgLy8jcmVnaW9uIFRpbWVsaW5lT3B0aW9uc1xuICBAT3V0cHV0KCkgcHVibGljIHRpbWVsaW5lT3B0aW9uc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VGltZWxpbmVPcHRpb25zPigpO1xuICBwdWJsaWMgZ2V0IHRpbWVsaW5lT3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy50aW1lbGluZU9wdGlvbnMkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgdGltZWxpbmVPcHRpb25zKHZhbHVlOiBUaW1lbGluZU9wdGlvbnMpIHtcbiAgICB0aGlzLnRpbWVsaW5lT3B0aW9ucyQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG4gIC8vI3JlZ2lvbiBtYXhJbm5lckhlaWdodFxuICBASW5wdXQoKSBwdWJsaWMgbWF4SW5uZXJIZWlnaHQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAvLyNlbmRyZWdpb25cbiAgLy8jcmVnaW9uIFJlc291cmNlc1xuICBwdWJsaWMgZ2V0IHJlc291cmNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZXMkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgcmVzb3VyY2VzKHZhbHVlOiAoUmVzb3VyY2UgfCBSZXNvdXJjZUdyb3VwKVtdKSB7XG4gICAgdGhpcy5yZXNvdXJjZXMkLm5leHQodmFsdWUpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIHByaXZhdGUgYWRkRGF5cyhkYXRlOiBEYXRlLCBkYXlzOiBudW1iZXIpIHtcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgRGF0ZShkYXRlKTtcbiAgICByZXN1bHQuc2V0RGF0ZShyZXN1bHQuZ2V0RGF0ZSgpICsgZGF5cyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIG9uUHJldmlvdXNXZWVrT3JNb250aCgpIHtcbiAgICB0aGlzLm9uQ2hhbmdlV2Vla09yTW9udGgoZmFsc2UpO1xuICB9XG5cbiAgb25OZXh0V2Vla09yTW9udGgoKSB7XG4gICAgdGhpcy5vbkNoYW5nZVdlZWtPck1vbnRoKHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZVdlZWtPck1vbnRoKG5leHQ6IGJvb2xlYW4pIHtcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmN1cnJlbnRXZWVrT3JNb250aCQsIHRoaXMubW9kZSRdKVxuICAgICAgLnBpcGUobWFwKChbY3VycmVudFdlZWtPck1vbnRoLCBtb2RlXSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgICBjYXNlIEVTY2hlZHVsZXJNb2RlLndlZWs6IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZERheXMoY3VycmVudFdlZWtPck1vbnRoLCAobmV4dCA/IDcgOiAtNykpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEVTY2hlZHVsZXJNb2RlLnRpbWVsaW5lOiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoY3VycmVudFdlZWtPck1vbnRoLmdldEZ1bGxZZWFyKCksIGN1cnJlbnRXZWVrT3JNb250aC5nZXRNb250aCgpICsgKG5leHQgPyAxIDogLTEpLCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pLCB0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgodykgPT4gdGhpcy5jdXJyZW50V2Vla09yTW9udGgkLm5leHQodykpO1xuICB9XG5cbiAgb25Ib3ZlckV2ZW50KGV2OiBTY2hlZHVsZXJFdmVudCB8IG51bGwpIHtcbiAgICB0aGlzLmhvdmVyZWRFdmVudCQubmV4dChldik7XG4gIH1cblxuICBvbkxlYXZlRXZlbnQoZXY6IFNjaGVkdWxlckV2ZW50IHwgbnVsbCkge1xuICAgIHRoaXMuaG92ZXJlZEV2ZW50JC5uZXh0KG51bGwpO1xuICB9XG5cbiAgb3BlcmF0aW9uOiBEcmFnT3BlcmF0aW9uIHwgbnVsbCA9IG51bGw7XG4gIGRyYWdTdGFydFRpbWVzbG90OiBUaW1lU2xvdCB8IG51bGwgPSBudWxsO1xuICBvbkNyZWF0ZUV2ZW50KGV2OiBNb3VzZUV2ZW50LCBzbG90OiBUaW1lU2xvdCkge1xuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5tb3VzZVN0YXRlJC5uZXh0KHRydWUpO1xuICAgIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3QgPSBzbG90O1xuICAgIHRoaXMub3BlcmF0aW9uID0ge1xuICAgICAgb3BlcmF0aW9uOiBFRHJhZ09wZXJhdGlvbi5jcmVhdGVFdmVudCxcbiAgICAgIGV2ZW50OiB7XG4gICAgICAgIHN0YXJ0OiBzbG90LnN0YXJ0LFxuICAgICAgICBlbmQ6IHNsb3QuZW5kLFxuICAgICAgICBjb2xvcjogJyNGMDAnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1Rlc3QgZXZlbnQnLFxuICAgICAgfSxcbiAgICAgIG1ldGE6IG51bGwsXG4gICAgfTtcbiAgICB0aGlzLnByZXZpZXdFdmVudCQubmV4dCh7IHN0YXJ0OiBzbG90LnN0YXJ0LCBlbmQ6IHNsb3QuZW5kIH0pO1xuICB9XG5cbiAgcmFuZG9tQ29sb3IoKSB7XG4gICAgY29uc3QgYnJpZ2h0bmVzcyA9IDEyODtcbiAgICByZXR1cm4gJyMnICsgdGhpcy5yYW5kb21DaGFubmVsKGJyaWdodG5lc3MpICsgdGhpcy5yYW5kb21DaGFubmVsKGJyaWdodG5lc3MpICsgdGhpcy5yYW5kb21DaGFubmVsKGJyaWdodG5lc3MpO1xuICB9XG4gIHJhbmRvbUNoYW5uZWwoYnJpZ2h0bmVzczogbnVtYmVyKXtcbiAgICBjb25zdCByID0gMjU1LWJyaWdodG5lc3M7XG4gICAgY29uc3QgbiA9IDB8KChNYXRoLnJhbmRvbSgpICogcikgKyBicmlnaHRuZXNzKTtcbiAgICBjb25zdCBzID0gbi50b1N0cmluZygxNik7XG4gICAgcmV0dXJuIChzLmxlbmd0aD09MSkgPyAnMCcrcyA6IHM7XG4gIH1cblxuICBvblN0YXJ0RHJhZ0V2ZW50KGV2ZW50UGFydDogU2NoZWR1bGVyRXZlbnRQYXJ0LCBldjogTW91c2VFdmVudCkge1xuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5ob3ZlcmVkVGltZVNsb3QkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChob3ZlcmVkVGltZVNsb3QpID0+IHtcbiAgICAgIGlmIChldmVudFBhcnQuZXZlbnQpIHtcbiAgICAgICAgdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCA9IGhvdmVyZWRUaW1lU2xvdDtcbiAgICAgICAgdGhpcy5vcGVyYXRpb24gPSB7XG4gICAgICAgICAgb3BlcmF0aW9uOiBFRHJhZ09wZXJhdGlvbi5tb3ZlRXZlbnQsXG4gICAgICAgICAgZXZlbnQ6IGV2ZW50UGFydC5ldmVudCxcbiAgICAgICAgICBtZXRhOiBudWxsLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnByZXZpZXdFdmVudCQubmV4dCh7IHN0YXJ0OiBldmVudFBhcnQuZXZlbnQuc3RhcnQsIGVuZDogZXZlbnRQYXJ0LmV2ZW50LmVuZCB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uU3RhcnRSZXNpemVFdmVudChldmVudDogU2NoZWR1bGVyRXZlbnQgfCBudWxsLCBwb3NpdGlvbjogJ3RvcCcgfCAnYm90dG9tJykge1xuICAgIGlmIChldmVudCkge1xuICAgICAgc3dpdGNoIChwb3NpdGlvbikge1xuICAgICAgICBjYXNlICd0b3AnOiB7XG4gICAgICAgICAgdGhpcy5vcGVyYXRpb24gPSB7XG4gICAgICAgICAgICBvcGVyYXRpb246IEVEcmFnT3BlcmF0aW9uLnJlc2l6ZUV2ZW50LFxuICAgICAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgbWV0YTogeyBwb3NpdGlvbiB9LFxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnByZXZpZXdFdmVudCQubmV4dCh7IHN0YXJ0OiBldmVudC5zdGFydCwgZW5kOiBldmVudC5lbmQgfSk7XG4gICAgICAgIH0gYnJlYWs7XG4gICAgICAgIGNhc2UgJ2JvdHRvbSc6IHtcbiAgICAgICAgICB0aGlzLm9wZXJhdGlvbiA9IHtcbiAgICAgICAgICAgIG9wZXJhdGlvbjogRURyYWdPcGVyYXRpb24ucmVzaXplRXZlbnQsXG4gICAgICAgICAgICBldmVudDogZXZlbnQsXG4gICAgICAgICAgICBtZXRhOiB7IHBvc2l0aW9uIH0sXG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucHJldmlld0V2ZW50JC5uZXh0KHsgc3RhcnQ6IGV2ZW50LnN0YXJ0LCBlbmQ6IGV2ZW50LmVuZCB9KTtcbiAgICAgICAgfSBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyNyZWdpb24gaG92ZXJlZFRpbWVzbG90JFxuICBwcml2YXRlIGdldEhvdmVyZWRUaW1lc2xvdChldjogTW91c2VFdmVudCwgdGltZVNsb3RzOiBTY2hlZHVsZXJTdGFtcFdpdGhTbG90c1tdKSB7XG4gICAgY29uc3QgaG92ZXJlZFNsb3RzID0gdGhpcy50aW1lU2xvdEVsZW1lbnRzLmZpbHRlcigoZWwpID0+IHtcbiAgICAgIGNvbnN0IHJjdCA9IGVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBpZiAocmN0LmxlZnQgPD0gZXYueCAmJiBldi54IDw9IHJjdC5yaWdodCAmJiByY3QudG9wIDw9IGV2LnkgJiYgZXYueSA8PSByY3QuYm90dG9tKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCFob3ZlcmVkU2xvdHMgfHwgaG92ZXJlZFNsb3RzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3Qgc2xvdEVsZW1lbnQgPSBob3ZlcmVkU2xvdHNbMF0ubmF0aXZlRWxlbWVudDtcblxuICAgIGNvbnN0IHN0clJvdyA9IHNsb3RFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1yb3cnKTtcbiAgICBpZiAoIXN0clJvdykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHJvdyA9IHBhcnNlSW50KHN0clJvdyk7XG5cbiAgICBjb25zdCBzdHJDb2x1bW4gPSBzbG90RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtY29sdW1uJyk7XG4gICAgaWYgKCFzdHJDb2x1bW4pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBjb2x1bW4gPSBwYXJzZUludChzdHJDb2x1bW4pO1xuXG4gICAgY29uc3Qgc2xvdCA9IHRpbWVTbG90c1tyb3ddLnNsb3RzW2NvbHVtbl07XG4gICAgcmV0dXJuIHNsb3Q7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZW1vdmUnLCBbJyRldmVudCddKVxuICBvbk1vdXNlbW92ZShldjogTW91c2VFdmVudCkge1xuICAgIHRoaXMudGltZVNsb3RzJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgodGltZVNsb3RzKSA9PiB7XG4gICAgICBjb25zdCBob3ZlcmVkID0gdGhpcy5nZXRIb3ZlcmVkVGltZXNsb3QoZXYsIHRpbWVTbG90cyk7XG4gICAgICB0aGlzLmhvdmVyZWRUaW1lU2xvdCQubmV4dChob3ZlcmVkKTtcblxuICAgICAgaWYgKHRoaXMub3BlcmF0aW9uKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5vcGVyYXRpb24ub3BlcmF0aW9uKSB7XG4gICAgICAgICAgY2FzZSBFRHJhZ09wZXJhdGlvbi5jcmVhdGVFdmVudDoge1xuICAgICAgICAgICAgaWYgKHRoaXMub3BlcmF0aW9uLmV2ZW50ICYmIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3QgJiYgaG92ZXJlZCAmJiAodGhpcy5vcGVyYXRpb24uZXZlbnQuZW5kLmdldFRpbWUoKSAhPSBob3ZlcmVkLmVuZC5nZXRUaW1lKCkpKSB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmRyYWdTdGFydFRpbWVzbG90LnN0YXJ0LmdldFRpbWUoKSA9PT0gaG92ZXJlZC5zdGFydC5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgICAgICAvLyAxIHNsb3RcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRyYWdTdGFydFRpbWVzbG90LnN0YXJ0LmdldFRpbWUoKSA8IGhvdmVyZWQuc3RhcnQuZ2V0VGltZSgpKSB7XG4gICAgICAgICAgICAgICAgLy8gRHJhZyBkb3duXG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3RXZlbnQkXG4gICAgICAgICAgICAgICAgICAucGlwZShmaWx0ZXIoKGV2KSA9PiAhIWV2ICYmICEhdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCkpXG4gICAgICAgICAgICAgICAgICAucGlwZShtYXAoKGV2KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChldiAmJiB0aGlzLmRyYWdTdGFydFRpbWVzbG90KSB7XG4gICAgICAgICAgICAgICAgICAgICAgZXYuc3RhcnQgPSB0aGlzLmRyYWdTdGFydFRpbWVzbG90LnN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICAgIGV2LmVuZCA9IGhvdmVyZWQuZW5kO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldjtcbiAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2KSA9PiB0aGlzLnByZXZpZXdFdmVudCQubmV4dChldikpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3Quc3RhcnQuZ2V0VGltZSgpID4gaG92ZXJlZC5zdGFydC5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgICAgICAvLyBEcmFnIHVwXG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3RXZlbnQkXG4gICAgICAgICAgICAgICAgICAucGlwZShmaWx0ZXIoKGV2KSA9PiAhIWV2ICYmICEhdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCkpXG4gICAgICAgICAgICAgICAgICAucGlwZShtYXAoKGV2KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChldiAmJiB0aGlzLmRyYWdTdGFydFRpbWVzbG90KSB7XG4gICAgICAgICAgICAgICAgICAgICAgZXYuc3RhcnQgPSBob3ZlcmVkLnN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICAgIGV2LmVuZCA9IHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3QuZW5kO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldjtcbiAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2KSA9PiB0aGlzLnByZXZpZXdFdmVudCQubmV4dChldikpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBicmVhaztcbiAgICAgICAgICBjYXNlIEVEcmFnT3BlcmF0aW9uLm1vdmVFdmVudDoge1xuICAgICAgICAgICAgaWYgKGhvdmVyZWQgJiYgdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCkge1xuICAgICAgICAgICAgICB0aGlzLnByZXZpZXdFdmVudCRcbiAgICAgICAgICAgICAgICAucGlwZShmaWx0ZXIoKGV2KSA9PiAhIWV2ICYmICEhdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCkpXG4gICAgICAgICAgICAgICAgLnBpcGUobWFwKChldikgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGV2ICYmIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gIDxQcmV2aWV3RXZlbnQ+e1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBuZXcgRGF0ZShldi5zdGFydC5nZXRUaW1lKCkgKyBob3ZlcmVkLnN0YXJ0LmdldFRpbWUoKSAtIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3Quc3RhcnQuZ2V0VGltZSgpKSxcbiAgICAgICAgICAgICAgICAgICAgICBlbmQ6IG5ldyBEYXRlKGV2LmVuZC5nZXRUaW1lKCkgKyBob3ZlcmVkLnN0YXJ0LmdldFRpbWUoKSAtIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3Quc3RhcnQuZ2V0VGltZSgpKVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCA9IGhvdmVyZWQ7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldjtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoZXYgPT4gdGhpcy5wcmV2aWV3RXZlbnQkLm5leHQoZXYpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGJyZWFrO1xuICAgICAgICAgIGNhc2UgRURyYWdPcGVyYXRpb24ucmVzaXplRXZlbnQ6IHtcbiAgICAgICAgICAgIGlmIChob3ZlcmVkKSB7XG4gICAgICAgICAgICAgIHRoaXMucHJldmlld0V2ZW50JFxuICAgICAgICAgICAgICAgIC5waXBlKGZpbHRlcigoZXYpID0+ICEhZXYpKVxuICAgICAgICAgICAgICAgIC5waXBlKG1hcCgoZXYpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChldiAmJiB0aGlzLm9wZXJhdGlvbiAmJiB0aGlzLm9wZXJhdGlvbi5ldmVudCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcGVyYXRpb24ubWV0YS5wb3NpdGlvbiA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICBldi5zdGFydCA9IGhvdmVyZWQuc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgICAgZXYuZW5kID0gdGhpcy5vcGVyYXRpb24uZXZlbnQuZW5kO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMub3BlcmF0aW9uLm1ldGEucG9zaXRpb24gPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgZXYuc3RhcnQgPSB0aGlzLm9wZXJhdGlvbi5ldmVudC5zdGFydDtcbiAgICAgICAgICAgICAgICAgICAgICBldi5lbmQgPSBob3ZlcmVkLmVuZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2O1xuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZXYpID0+IHRoaXMucHJldmlld0V2ZW50JC5uZXh0KGV2KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgfSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2V1cCcsIFsnJGV2ZW50J10pXG4gIG9uTW91c2VVcChldjogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLm9wZXJhdGlvbikge1xuICAgICAgc3dpdGNoICh0aGlzLm9wZXJhdGlvbi5vcGVyYXRpb24pIHtcbiAgICAgICAgY2FzZSBFRHJhZ09wZXJhdGlvbi5jcmVhdGVFdmVudDoge1xuICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMucHJldmlld0V2ZW50JF0pXG4gICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoW3ByZXZpZXdFdmVudF0pID0+IHtcbiAgICAgICAgICAgICAgaWYgKHByZXZpZXdFdmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMub3BlcmF0aW9uID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdTdGFydFRpbWVzbG90ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc291cmNlcyQubmV4dChbXG4gICAgICAgICAgICAgICAgICAuLi50aGlzLnJlc291cmNlcyQudmFsdWUsXG4gICAgICAgICAgICAgICAgICA8UmVzb3VyY2U+e1xuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ05ldyByZXNvdXJjZSBncm91cCcsXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50czogW3tcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydDogcHJldmlld0V2ZW50LnN0YXJ0LFxuICAgICAgICAgICAgICAgICAgICAgIGVuZDogcHJldmlld0V2ZW50LmVuZCxcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogdGhpcy5yYW5kb21Db2xvcigpLFxuICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTmV3IGV2ZW50J1xuICAgICAgICAgICAgICAgICAgICB9XVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIHRoaXMucHJldmlld0V2ZW50JC5uZXh0KG51bGwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBicmVhaztcbiAgICAgICAgY2FzZSBFRHJhZ09wZXJhdGlvbi5tb3ZlRXZlbnQ6XG4gICAgICAgIGNhc2UgRURyYWdPcGVyYXRpb24ucmVzaXplRXZlbnQ6IHtcbiAgICAgICAgICB0aGlzLnByZXZpZXdFdmVudCRcbiAgICAgICAgICAgIC5waXBlKGZpbHRlcigoZXYpID0+ICEhZXYpKVxuICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHByZXZpZXdFdmVudCkgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5vcGVyYXRpb24gJiYgdGhpcy5vcGVyYXRpb24uZXZlbnQgJiYgcHJldmlld0V2ZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVyYXRpb24uZXZlbnQuc3RhcnQgPSBwcmV2aWV3RXZlbnQuc3RhcnQ7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVyYXRpb24uZXZlbnQuZW5kID0gcHJldmlld0V2ZW50LmVuZDtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZXJhdGlvbiA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNvdXJjZXMkLm5leHQodGhpcy5yZXNvdXJjZXMkLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXdFdmVudCQubmV4dChudWxsKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJAc3dpdGNoIChtb2RlJCB8IGFzeW5jKSB7XG4gICAgQGNhc2UgKG1vZGVzLndlZWspIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiB3LTEwMCBvdmVyZmxvdy15LWF1dG8gbWItMCB3ZWVrLXNjaGVkdWxlXCIgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwibnVsbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgZC1mbGV4IGZsZXgtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggY2FsZW5kYXItbGVmdCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBmbGV4LXN0YXJ0XCIgKGNsaWNrKT1cIm9uUHJldmlvdXNXZWVrT3JNb250aCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJjaGV2cm9uTGVmdFwiIGNsYXNzPVwicHgtMFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBmbGV4LWVuZFwiIChjbGljayk9XCJvbk5leHRXZWVrT3JNb250aCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJjaGV2cm9uUmlnaHRcIiBjbGFzcz1cInB4LTBcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGRheSBvZiAoc2hvd25EYXlzJCB8IGFzeW5jKTsgdHJhY2sgZGF5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTEgY2FsZW5kYXItaGVhZC1jZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkLWJsb2NrIGNvbC1mb3JtLWxhYmVsIHRleHQtY2VudGVyIHRleHQtbm93cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGRheSB8IGRhdGU6ICdkZC1NTScgfX08L3NwYW4+PHNwYW4gY2xhc3M9XCJkLW5vbmUgZC1sZy1pbmxpbmUtYmxvY2tcIj4te3sgZGF5IHwgZGF0ZTogJ3l5eXknIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1ib2R5XCIgW3N0eWxlLmhlaWdodC5weF09XCJtYXhJbm5lckhlaWdodFwiPlxuICAgICAgICAgICAgICAgIEBpZiAodGltZVNsb3RzJCB8IGFzeW5jOyBhcyByb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHdlZWtPcHRpb25zJCB8IGFzeW5jOyBhcyB3ZWVrT3B0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVGltZXNsb3RzIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKHRpbWVzbG90cyBvZiByb3c7IHRyYWNrIHRpbWVzbG90czsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBwLTAgdGltZXNsb3RcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cIndlZWtPcHRpb25zLnVuaXRIZWlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jZWxsIGNhbGVuZGFyLWxlZnQgYWxpZ24tdG9wIHB4LTIgcHktMFwiPnt7IHRpbWVzbG90cy5zbG90c1swXS5zdGFydCB8IGRhdGU6ICdISDptbTpzcycgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKHNsb3Qgb2YgdGltZXNsb3RzLnNsb3RzOyB0cmFjayBzbG90LnN0YXJ0OyBsZXQgaiA9ICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jZWxsIGZsZXgtZ3Jvdy0xXCIgI3Nsb3QgKG1vdXNlZG93bik9XCJvbkNyZWF0ZUV2ZW50KCRldmVudCwgc2xvdClcIiBbYXR0ci5kYXRhLXJvd109XCJpXCIgW2F0dHIuZGF0YS1jb2x1bW5dPVwialwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEV2ZW50cyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHRpbWVTbG90RHVyYXRpb24kIHwgYXN5bmM7IGFzIHRpbWVTbG90RHVyYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICh0aW1lbGluZWRFdmVudFBhcnRzRm9yVGhpc1dlZWskIHwgYXN5bmM7IGFzIHBhcnREYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChldmVudFBhcnQgb2YgcGFydERhdGEucGFydHM7IHRyYWNrIGV2ZW50UGFydCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudCBwLTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUudG9wLnB4XT1cIihldmVudFBhcnQucGFydCB8IGJzU2Vjb25kc1RvZGF5T2Zmc2V0KSAvIHRpbWVTbG90RHVyYXRpb24gKiB3ZWVrT3B0aW9ucy51bml0SGVpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCIoZXZlbnRQYXJ0LnBhcnQgfCBic1NlY29uZHNUaW1lc3BhbikgLyB0aW1lU2xvdER1cmF0aW9uICogd2Vla09wdGlvbnMudW5pdEhlaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0XT1cIidjYWxjKDkwcHggKyAoKDEwMCUgLSA5MHB4KSAvIDcgKiAnICsgKChldmVudFBhcnQucGFydCB8IGRheU9mV2VlaykgLSAxKSArICcpKSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LWlubmVyXCIgW2NsYXNzLmhvdmVyXT1cIihob3ZlcmVkRXZlbnQkIHwgYXN5bmMpID09PSBldmVudFBhcnQucGFydC5ldmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiJ2NhbGMoMTAwJSAvICcgKyBwYXJ0RGF0YS50b3RhbCArICcpJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIihldmVudFBhcnQucGFydCB8IGJzU2Vjb25kc1RpbWVzcGFuKSAvIHRpbWVTbG90RHVyYXRpb24gKiB3ZWVrT3B0aW9ucy51bml0SGVpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5tYXJnaW4tbGVmdF09XCInY2FsYygxMDAlIC8gJyArIHBhcnREYXRhLnRvdGFsICsgJyAqICcgKyBldmVudFBhcnQuaW5kZXggKyAnKSdcIj5cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZXZlbnRQYXJ0LnBhcnQuc3RhcnQgPT09IGV2ZW50UGFydC5wYXJ0LmV2ZW50Py5zdGFydCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1yZXNpemUgdG9wXCIgKG1vdXNlZG93bik9XCJvblN0YXJ0UmVzaXplRXZlbnQoZXZlbnRQYXJ0LnBhcnQuZXZlbnQsICd0b3AnKVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LWJvcmRlclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChldmVudFBhcnQucGFydC5ldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC13cmFwcGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvblN0YXJ0RHJhZ0V2ZW50KGV2ZW50UGFydC5wYXJ0LCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwib25Ib3ZlckV2ZW50KGV2ZW50UGFydC5wYXJ0LmV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cIm9uTGVhdmVFdmVudChldmVudFBhcnQucGFydC5ldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LWJnXCIgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZXZlbnRQYXJ0LnBhcnQuZXZlbnQuY29sb3JcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LWxhYmVsXCI+e3sgZXZlbnRQYXJ0LnBhcnQuZXZlbnQuZGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZXZlbnRQYXJ0LnBhcnQuZW5kID09PSBldmVudFBhcnQucGFydC5ldmVudD8uZW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LXJlc2l6ZSBib3R0b21cIiAobW91c2Vkb3duKT1cIm9uU3RhcnRSZXNpemVFdmVudChldmVudFBhcnQucGFydC5ldmVudCwgJ2JvdHRvbScpXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocHJldmlld0V2ZW50UGFydHNGb3JUaGlzV2VlayQgfCBhc3luYzsgYXMgcHJldmlld1BhcnREYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChldmVudFBhcnQgb2YgcHJldmlld1BhcnREYXRhOyB0cmFjayBldmVudFBhcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQgcHJldmlldyBwLTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUudG9wLnB4XT1cIihldmVudFBhcnQgfCBic1NlY29uZHNUb2RheU9mZnNldCkgLyB0aW1lU2xvdER1cmF0aW9uICogd2Vla09wdGlvbnMudW5pdEhlaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiKGV2ZW50UGFydCB8IGJzU2Vjb25kc1RpbWVzcGFuKSAvIHRpbWVTbG90RHVyYXRpb24gKiB3ZWVrT3B0aW9ucy51bml0SGVpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnRdPVwiJ2NhbGMoOTBweCArICgoMTAwJSAtIDkwcHgpIC8gNyAqICcgKyAoKGV2ZW50UGFydCB8IGRheU9mV2VlaykgLSAxKSArICcpKSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LWlubmVyIHctMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiKGV2ZW50UGFydCB8IGJzU2Vjb25kc1RpbWVzcGFuKSAvIHRpbWVTbG90RHVyYXRpb24gKiB3ZWVrT3B0aW9ucy51bml0SGVpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBjYXNlIChtb2Rlcy50aW1lbGluZSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uLTEwMCBvdmVyZmxvdy15LWF1dG8gbWItMCBiZy13aGl0ZSB0aW1lbGluZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWQgZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBmbGV4LXN0YXJ0XCIgKGNsaWNrKT1cIm9uUHJldmlvdXNXZWVrT3JNb250aCgpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiY2hldnJvbkxlZnRcIiBjbGFzcz1cInB4LTBcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xIGgzIHB5LTIgbWItMCB0ZXh0LWNlbnRlclwiPnt7IGN1cnJlbnRXZWVrT3JNb250aCQgfCBhc3luYyB8IGRhdGU6ICdNTU1NIHl5eXknIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBmbGV4LXN0YXJ0XCIgKGNsaWNrKT1cIm9uTmV4dFdlZWtPck1vbnRoKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJjaGV2cm9uUmlnaHRcIiBjbGFzcz1cInB4LTBcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWJvZHkgdGFibGUtcmVzcG9uc2l2ZSBvdmVyZmxvdy14LWF1dG9cIj5cbiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBtYi0wXCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAodGltZVNsb3RzJCB8IGFzeW5jOyBhcyB0aW1lU2xvdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChkYXkgb2YgdGltZVNsb3RzOyB0cmFjayBkYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIFthdHRyLmNvbHNwYW5dPVwiZGF5LnNsb3RzLmxlbmd0aFwiIGNsYXNzPVwidGV4dC1jZW50ZXIgcHgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwb3NpdGlvbi1zdGlja3kgZGF5LWxhYmVsXCI+e3sgZGF5LnN0YW1wIHwgZGF0ZTogJ2QgRUUnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICh0aW1lbGluZU9wdGlvbnMkIHwgYXN5bmM7IGFzIHRpbWVsaW5lT3B0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChkYXkgb2YgdGltZVNsb3RzOyB0cmFjayBkYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKHNsb3Qgb2YgZGF5LnNsb3RzOyB0cmFjayBzbG90KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtYmxvY2sgcC0wIHRleHQtY2VudGVyXCIgW3N0eWxlLndpZHRoLnB4XT1cInRpbWVsaW5lT3B0aW9ucy51bml0V2lkdGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHNsb3Quc3RhcnQgfCBkYXRlOiAnSEg6bW0nIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGdyb3VwIG9mIChyZXNvdXJjZXMkIHwgYXN5bmMpOyB0cmFjayBncm91cCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicy1yZXNvdXJjZS1ncm91cC1wcmVzZW50ZXIgW3Jlc291cmNlR3JvdXBdPVwiZ3JvdXBcIiBbdGltZVNsb3RzXT1cInRpbWVTbG90c1wiPjwvYnMtcmVzb3VyY2UtZ3JvdXAtcHJlc2VudGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG59Il19