@sebgroup/green-angular 5.1.2 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. package/esm2022/src/v-angular/account-number/account-number.module.mjs +18 -0
  2. package/esm2022/src/v-angular/account-number/account-number.pipe.mjs +54 -0
  3. package/esm2022/src/v-angular/account-number/index.mjs +3 -0
  4. package/esm2022/src/v-angular/account-number/sebgroup-green-angular-src-v-angular-account-number.mjs +5 -0
  5. package/esm2022/src/v-angular/alert/alert.component.mjs +47 -0
  6. package/esm2022/src/v-angular/alert/alert.models.mjs +8 -0
  7. package/esm2022/src/v-angular/alert/alert.module.mjs +18 -0
  8. package/esm2022/src/v-angular/alert/index.mjs +4 -0
  9. package/esm2022/src/v-angular/alert/sebgroup-green-angular-src-v-angular-alert.mjs +5 -0
  10. package/esm2022/src/v-angular/base-control-value-accessor/base-control-value-accessor.component.mjs +16 -6
  11. package/esm2022/src/v-angular/base-control-value-accessor/base-control-value-accessor.module.mjs +9 -9
  12. package/esm2022/src/v-angular/breadcrumbs/breadcrumbs.component.mjs +5 -5
  13. package/esm2022/src/v-angular/breadcrumbs/breadcrumbs.module.mjs +11 -11
  14. package/esm2022/src/v-angular/button/button.component.mjs +9 -9
  15. package/esm2022/src/v-angular/button/button.module.mjs +11 -11
  16. package/esm2022/src/v-angular/card/card.component.mjs +6 -6
  17. package/esm2022/src/v-angular/card/card.module.mjs +9 -9
  18. package/esm2022/src/v-angular/character-countdown/character-countdown.module.mjs +6 -6
  19. package/esm2022/src/v-angular/checkbox/checkbox.component.mjs +9 -7
  20. package/esm2022/src/v-angular/checkbox/checkbox.module.mjs +14 -12
  21. package/esm2022/src/v-angular/core/core.utils.mjs +35 -1
  22. package/esm2022/src/v-angular/datepicker/components/calendar/calendar.component.mjs +200 -0
  23. package/esm2022/src/v-angular/datepicker/components/calendar-control/calendar-control.component.mjs +115 -0
  24. package/esm2022/src/v-angular/datepicker/components/date-input/date-input.component.mjs +203 -0
  25. package/esm2022/src/v-angular/datepicker/components/datepicker/datepicker.component.mjs +135 -0
  26. package/esm2022/src/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.mjs +408 -0
  27. package/esm2022/src/v-angular/datepicker/datepicker.globals.mjs +20 -0
  28. package/esm2022/src/v-angular/datepicker/datepicker.models.mjs +56 -0
  29. package/esm2022/src/v-angular/datepicker/datepicker.module.mjs +63 -0
  30. package/esm2022/src/v-angular/datepicker/datepicker.utils.mjs +196 -0
  31. package/esm2022/src/v-angular/datepicker/directives/calendar-date.directive.mjs +47 -0
  32. package/esm2022/src/v-angular/datepicker/index.mjs +17 -0
  33. package/esm2022/src/v-angular/datepicker/models/dates.mjs +291 -0
  34. package/esm2022/src/v-angular/datepicker/pipes/date-thook.pipe.mjs +30 -0
  35. package/esm2022/src/v-angular/datepicker/pipes/is-disabled.pipe.mjs +37 -0
  36. package/esm2022/src/v-angular/datepicker/pipes/matches.pipe.mjs +17 -0
  37. package/esm2022/src/v-angular/datepicker/sebgroup-green-angular-src-v-angular-datepicker.mjs +5 -0
  38. package/esm2022/src/v-angular/drag-drop/drag-drop.component.mjs +497 -0
  39. package/esm2022/src/v-angular/drag-drop/drag-drop.models.mjs +2 -0
  40. package/esm2022/src/v-angular/drag-drop/drag-drop.module.mjs +49 -0
  41. package/esm2022/src/v-angular/drag-drop/drag-drop.pipes.mjs +70 -0
  42. package/esm2022/src/v-angular/drag-drop/drag-drop.utils.mjs +76 -0
  43. package/esm2022/src/v-angular/drag-drop/index.mjs +5 -0
  44. package/esm2022/src/v-angular/drag-drop/sebgroup-green-angular-src-v-angular-drag-drop.mjs +5 -0
  45. package/esm2022/src/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +24 -9
  46. package/esm2022/src/v-angular/dropdown/dropdown.component.mjs +16 -9
  47. package/esm2022/src/v-angular/dropdown/dropdown.module.mjs +31 -15
  48. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +8 -8
  49. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.mjs +5 -5
  50. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.mjs +17 -10
  51. package/esm2022/src/v-angular/dropdown/typeahead/typeahead.directive.mjs +27 -20
  52. package/esm2022/src/v-angular/dropdown/typeahead/typeahead.module.mjs +21 -21
  53. package/esm2022/src/v-angular/external-link/external-link.directive.mjs +5 -5
  54. package/esm2022/src/v-angular/external-link/external-link.module.mjs +9 -9
  55. package/esm2022/src/v-angular/i18n/i18n.module.mjs +12 -12
  56. package/esm2022/src/v-angular/i18n/i18n.test.module.mjs +6 -6
  57. package/esm2022/src/v-angular/info-circle/info-circle.component.mjs +6 -6
  58. package/esm2022/src/v-angular/info-circle/info-circle.module.mjs +11 -11
  59. package/esm2022/src/v-angular/input/input.component.mjs +11 -15
  60. package/esm2022/src/v-angular/input/input.module.mjs +27 -22
  61. package/esm2022/src/v-angular/input-mask/input-mask.directive.mjs +6 -6
  62. package/esm2022/src/v-angular/input-mask/input-mask.module.mjs +10 -10
  63. package/esm2022/src/v-angular/modal/dialog/dialog.component.mjs +53 -31
  64. package/esm2022/src/v-angular/modal/fold-out/fold-out.component.mjs +116 -16
  65. package/esm2022/src/v-angular/modal/fold-out/fold-out.directive.mjs +5 -5
  66. package/esm2022/src/v-angular/modal/fold-out/keyboard-key.enum.mjs +9 -0
  67. package/esm2022/src/v-angular/modal/modal.module.mjs +38 -27
  68. package/esm2022/src/v-angular/modal/slide-out/slide-out.component.mjs +35 -12
  69. package/esm2022/src/v-angular/pagination/index.mjs +3 -0
  70. package/esm2022/src/v-angular/pagination/pagination.component.mjs +144 -0
  71. package/esm2022/src/v-angular/pagination/pagination.module.mjs +37 -0
  72. package/esm2022/src/v-angular/pagination/sebgroup-green-angular-src-v-angular-pagination.mjs +5 -0
  73. package/esm2022/src/v-angular/radio/radio.component.mjs +14 -12
  74. package/esm2022/src/v-angular/radio/radio.module.mjs +12 -11
  75. package/esm2022/src/v-angular/slug/slug.module.mjs +6 -6
  76. package/esm2022/src/v-angular/table/index.mjs +9 -0
  77. package/esm2022/src/v-angular/table/sebgroup-green-angular-src-v-angular-table.mjs +5 -0
  78. package/esm2022/src/v-angular/table/table.component.mjs +387 -0
  79. package/esm2022/src/v-angular/table/table.directive.mjs +110 -0
  80. package/esm2022/src/v-angular/table/table.models.mjs +2 -0
  81. package/esm2022/src/v-angular/table/table.module.mjs +40 -0
  82. package/esm2022/src/v-angular/table/table.tools.mjs +29 -0
  83. package/esm2022/src/v-angular/table/tr-thook.pipe.mjs +22 -0
  84. package/esm2022/src/v-angular/tabs/index.mjs +8 -0
  85. package/esm2022/src/v-angular/tabs/sebgroup-green-angular-src-v-angular-tabs.mjs +5 -0
  86. package/esm2022/src/v-angular/tabs/tab.directive.mjs +81 -0
  87. package/esm2022/src/v-angular/tabs/tabs.component.mjs +262 -0
  88. package/esm2022/src/v-angular/tabs/tabs.models.mjs +2 -0
  89. package/esm2022/src/v-angular/tabs/tabs.module.mjs +21 -0
  90. package/esm2022/src/v-angular/textarea/textarea.component.mjs +9 -7
  91. package/esm2022/src/v-angular/textarea/textarea.module.mjs +27 -13
  92. package/esm2022/src/v-angular/toast/index.mjs +8 -0
  93. package/esm2022/src/v-angular/toast/sebgroup-green-angular-src-v-angular-toast.mjs +5 -0
  94. package/esm2022/src/v-angular/toast/toast-message.service.mjs +63 -0
  95. package/esm2022/src/v-angular/toast/toast.component.mjs +70 -0
  96. package/esm2022/src/v-angular/toast/toast.models.mjs +8 -0
  97. package/esm2022/src/v-angular/toast/toast.module.mjs +21 -0
  98. package/esm2022/src/v-angular/tooltip/tooltip.directive.mjs +35 -15
  99. package/esm2022/src/v-angular/tooltip/tooltip.module.mjs +11 -11
  100. package/esm2022/src/v-angular/tooltip/tooltip.styles.mjs +60 -0
  101. package/esm2022/v-angular/alert/alert.component.mjs +47 -0
  102. package/esm2022/v-angular/alert/alert.models.mjs +8 -0
  103. package/esm2022/v-angular/alert/alert.module.mjs +18 -0
  104. package/esm2022/v-angular/alert/index.mjs +4 -0
  105. package/esm2022/v-angular/base-control-value-accessor/base-control-value-accessor.component.mjs +16 -6
  106. package/esm2022/v-angular/base-control-value-accessor/base-control-value-accessor.module.mjs +9 -9
  107. package/esm2022/v-angular/breadcrumbs/breadcrumbs.component.mjs +5 -5
  108. package/esm2022/v-angular/breadcrumbs/breadcrumbs.module.mjs +11 -11
  109. package/esm2022/v-angular/button/button.component.mjs +9 -9
  110. package/esm2022/v-angular/button/button.module.mjs +11 -11
  111. package/esm2022/v-angular/card/card.component.mjs +6 -6
  112. package/esm2022/v-angular/card/card.module.mjs +9 -9
  113. package/esm2022/v-angular/character-countdown/character-countdown.module.mjs +6 -6
  114. package/esm2022/v-angular/checkbox/checkbox.component.mjs +9 -7
  115. package/esm2022/v-angular/checkbox/checkbox.module.mjs +14 -12
  116. package/esm2022/v-angular/datepicker/components/calendar/calendar.component.mjs +200 -0
  117. package/esm2022/v-angular/datepicker/components/calendar-control/calendar-control.component.mjs +115 -0
  118. package/esm2022/v-angular/datepicker/components/date-input/date-input.component.mjs +203 -0
  119. package/esm2022/v-angular/datepicker/components/datepicker/datepicker.component.mjs +135 -0
  120. package/esm2022/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.mjs +408 -0
  121. package/esm2022/v-angular/datepicker/datepicker.globals.mjs +20 -0
  122. package/esm2022/v-angular/datepicker/datepicker.models.mjs +56 -0
  123. package/esm2022/v-angular/datepicker/datepicker.module.mjs +63 -0
  124. package/esm2022/v-angular/datepicker/datepicker.utils.mjs +196 -0
  125. package/esm2022/v-angular/datepicker/directives/calendar-date.directive.mjs +47 -0
  126. package/esm2022/v-angular/datepicker/index.mjs +17 -0
  127. package/esm2022/v-angular/datepicker/models/dates.mjs +291 -0
  128. package/esm2022/v-angular/datepicker/pipes/date-thook.pipe.mjs +30 -0
  129. package/esm2022/v-angular/datepicker/pipes/is-disabled.pipe.mjs +37 -0
  130. package/esm2022/v-angular/datepicker/pipes/matches.pipe.mjs +17 -0
  131. package/esm2022/v-angular/drag-drop/drag-drop.component.mjs +497 -0
  132. package/esm2022/v-angular/drag-drop/drag-drop.models.mjs +2 -0
  133. package/esm2022/v-angular/drag-drop/drag-drop.module.mjs +49 -0
  134. package/esm2022/v-angular/drag-drop/drag-drop.pipes.mjs +70 -0
  135. package/esm2022/v-angular/drag-drop/drag-drop.utils.mjs +76 -0
  136. package/esm2022/v-angular/drag-drop/index.mjs +5 -0
  137. package/esm2022/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +24 -9
  138. package/esm2022/v-angular/dropdown/dropdown.component.mjs +16 -9
  139. package/esm2022/v-angular/dropdown/dropdown.module.mjs +31 -15
  140. package/esm2022/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +8 -8
  141. package/esm2022/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.mjs +5 -5
  142. package/esm2022/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.mjs +17 -10
  143. package/esm2022/v-angular/dropdown/typeahead/typeahead.directive.mjs +27 -20
  144. package/esm2022/v-angular/dropdown/typeahead/typeahead.module.mjs +21 -21
  145. package/esm2022/v-angular/external-link/external-link.directive.mjs +37 -0
  146. package/esm2022/v-angular/external-link/external-link.module.mjs +18 -0
  147. package/esm2022/v-angular/external-link/index.mjs +3 -0
  148. package/esm2022/v-angular/i18n/i18n.module.mjs +12 -12
  149. package/esm2022/v-angular/i18n/i18n.test.module.mjs +6 -6
  150. package/esm2022/v-angular/index.mjs +10 -1
  151. package/esm2022/v-angular/info-circle/info-circle.component.mjs +6 -6
  152. package/esm2022/v-angular/info-circle/info-circle.module.mjs +11 -11
  153. package/esm2022/v-angular/input/input.component.mjs +11 -15
  154. package/esm2022/v-angular/input/input.module.mjs +27 -22
  155. package/esm2022/v-angular/input-mask/input-mask.directive.mjs +6 -6
  156. package/esm2022/v-angular/input-mask/input-mask.module.mjs +10 -10
  157. package/esm2022/v-angular/modal/dialog/dialog.component.mjs +53 -31
  158. package/esm2022/v-angular/modal/fold-out/fold-out.component.mjs +116 -16
  159. package/esm2022/v-angular/modal/fold-out/fold-out.directive.mjs +5 -5
  160. package/esm2022/v-angular/modal/fold-out/keyboard-key.enum.mjs +9 -0
  161. package/esm2022/v-angular/modal/modal.module.mjs +38 -27
  162. package/esm2022/v-angular/modal/slide-out/slide-out.component.mjs +35 -12
  163. package/esm2022/v-angular/pagination/index.mjs +3 -0
  164. package/esm2022/v-angular/pagination/pagination.component.mjs +144 -0
  165. package/esm2022/v-angular/pagination/pagination.module.mjs +37 -0
  166. package/esm2022/v-angular/radio/radio.component.mjs +14 -12
  167. package/esm2022/v-angular/radio/radio.module.mjs +12 -11
  168. package/esm2022/v-angular/slug/index.mjs +3 -0
  169. package/esm2022/v-angular/slug/slug.module.mjs +18 -0
  170. package/esm2022/v-angular/slug/slug.pipe.mjs +27 -0
  171. package/esm2022/v-angular/table/index.mjs +9 -0
  172. package/esm2022/v-angular/table/table.component.mjs +387 -0
  173. package/esm2022/v-angular/table/table.directive.mjs +110 -0
  174. package/esm2022/v-angular/table/table.models.mjs +2 -0
  175. package/esm2022/v-angular/table/table.module.mjs +40 -0
  176. package/esm2022/v-angular/table/table.tools.mjs +29 -0
  177. package/esm2022/v-angular/table/tr-thook.pipe.mjs +22 -0
  178. package/esm2022/v-angular/tabs/index.mjs +8 -0
  179. package/esm2022/v-angular/tabs/tab.directive.mjs +81 -0
  180. package/esm2022/v-angular/tabs/tabs.component.mjs +262 -0
  181. package/esm2022/v-angular/tabs/tabs.models.mjs +2 -0
  182. package/esm2022/v-angular/tabs/tabs.module.mjs +21 -0
  183. package/esm2022/v-angular/textarea/textarea.component.mjs +9 -7
  184. package/esm2022/v-angular/textarea/textarea.module.mjs +27 -13
  185. package/esm2022/v-angular/toast/index.mjs +8 -0
  186. package/esm2022/v-angular/toast/toast-message.service.mjs +63 -0
  187. package/esm2022/v-angular/toast/toast.component.mjs +70 -0
  188. package/esm2022/v-angular/toast/toast.models.mjs +8 -0
  189. package/esm2022/v-angular/toast/toast.module.mjs +21 -0
  190. package/esm2022/v-angular/tooltip/tooltip.directive.mjs +35 -15
  191. package/esm2022/v-angular/tooltip/tooltip.module.mjs +11 -11
  192. package/esm2022/v-angular/tooltip/tooltip.styles.mjs +60 -0
  193. package/esm2022/v-angular/v-angular.module.mjs +104 -68
  194. package/fesm2022/sebgroup-green-angular-src-v-angular-account-number.mjs +76 -0
  195. package/fesm2022/sebgroup-green-angular-src-v-angular-account-number.mjs.map +1 -0
  196. package/fesm2022/sebgroup-green-angular-src-v-angular-alert.mjs +76 -0
  197. package/fesm2022/sebgroup-green-angular-src-v-angular-alert.mjs.map +1 -0
  198. package/fesm2022/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs +23 -13
  199. package/fesm2022/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs.map +1 -1
  200. package/fesm2022/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs +14 -14
  201. package/fesm2022/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs.map +1 -1
  202. package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs +18 -18
  203. package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs.map +1 -1
  204. package/fesm2022/sebgroup-green-angular-src-v-angular-card.mjs +13 -13
  205. package/fesm2022/sebgroup-green-angular-src-v-angular-card.mjs.map +1 -1
  206. package/fesm2022/sebgroup-green-angular-src-v-angular-character-countdown.mjs +6 -6
  207. package/fesm2022/sebgroup-green-angular-src-v-angular-character-countdown.mjs.map +1 -1
  208. package/fesm2022/sebgroup-green-angular-src-v-angular-checkbox.mjs +21 -17
  209. package/fesm2022/sebgroup-green-angular-src-v-angular-checkbox.mjs.map +1 -1
  210. package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs +34 -0
  211. package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs.map +1 -1
  212. package/fesm2022/sebgroup-green-angular-src-v-angular-datepicker.mjs +1759 -0
  213. package/fesm2022/sebgroup-green-angular-src-v-angular-datepicker.mjs.map +1 -0
  214. package/fesm2022/sebgroup-green-angular-src-v-angular-drag-drop.mjs +687 -0
  215. package/fesm2022/sebgroup-green-angular-src-v-angular-drag-drop.mjs.map +1 -0
  216. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs +126 -74
  217. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs.map +1 -1
  218. package/fesm2022/sebgroup-green-angular-src-v-angular-external-link.mjs +12 -12
  219. package/fesm2022/sebgroup-green-angular-src-v-angular-external-link.mjs.map +1 -1
  220. package/fesm2022/sebgroup-green-angular-src-v-angular-i18n.mjs +17 -17
  221. package/fesm2022/sebgroup-green-angular-src-v-angular-i18n.mjs.map +1 -1
  222. package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs +15 -15
  223. package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs.map +1 -1
  224. package/fesm2022/sebgroup-green-angular-src-v-angular-input-mask.mjs +14 -14
  225. package/fesm2022/sebgroup-green-angular-src-v-angular-input-mask.mjs.map +1 -1
  226. package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs +36 -35
  227. package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs.map +1 -1
  228. package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs +246 -81
  229. package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs.map +1 -1
  230. package/fesm2022/sebgroup-green-angular-src-v-angular-pagination.mjs +185 -0
  231. package/fesm2022/sebgroup-green-angular-src-v-angular-pagination.mjs.map +1 -0
  232. package/fesm2022/sebgroup-green-angular-src-v-angular-radio.mjs +24 -21
  233. package/fesm2022/sebgroup-green-angular-src-v-angular-radio.mjs.map +1 -1
  234. package/fesm2022/sebgroup-green-angular-src-v-angular-slug.mjs +6 -6
  235. package/fesm2022/sebgroup-green-angular-src-v-angular-slug.mjs.map +1 -1
  236. package/fesm2022/sebgroup-green-angular-src-v-angular-table.mjs +585 -0
  237. package/fesm2022/sebgroup-green-angular-src-v-angular-table.mjs.map +1 -0
  238. package/fesm2022/sebgroup-green-angular-src-v-angular-tabs.mjs +367 -0
  239. package/fesm2022/sebgroup-green-angular-src-v-angular-tabs.mjs.map +1 -0
  240. package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs +33 -18
  241. package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs.map +1 -1
  242. package/fesm2022/sebgroup-green-angular-src-v-angular-toast.mjs +166 -0
  243. package/fesm2022/sebgroup-green-angular-src-v-angular-toast.mjs.map +1 -0
  244. package/fesm2022/sebgroup-green-angular-src-v-angular-tooltip.mjs +103 -24
  245. package/fesm2022/sebgroup-green-angular-src-v-angular-tooltip.mjs.map +1 -1
  246. package/fesm2022/sebgroup-green-angular-v-angular.mjs +6295 -2165
  247. package/fesm2022/sebgroup-green-angular-v-angular.mjs.map +1 -1
  248. package/package.json +51 -3
  249. package/src/v-angular/account-number/README.md +70 -0
  250. package/src/v-angular/account-number/account-number.module.d.ts +8 -0
  251. package/src/v-angular/account-number/account-number.pipe.d.ts +32 -0
  252. package/src/v-angular/account-number/index.d.ts +2 -0
  253. package/src/v-angular/alert/alert.component.d.ts +19 -0
  254. package/src/v-angular/alert/alert.models.d.ts +13 -0
  255. package/src/v-angular/alert/alert.module.d.ts +8 -0
  256. package/src/v-angular/alert/index.d.ts +3 -0
  257. package/src/v-angular/base-control-value-accessor/base-control-value-accessor.component.d.ts +10 -4
  258. package/src/v-angular/base-control-value-accessor/base-control-value-accessor.module.d.ts +4 -4
  259. package/src/v-angular/breadcrumbs/breadcrumbs.component.d.ts +4 -4
  260. package/src/v-angular/breadcrumbs/breadcrumbs.module.d.ts +4 -4
  261. package/src/v-angular/button/button.component.d.ts +5 -5
  262. package/src/v-angular/button/button.module.d.ts +4 -4
  263. package/src/v-angular/card/card.component.d.ts +3 -3
  264. package/src/v-angular/card/card.module.d.ts +4 -4
  265. package/src/v-angular/character-countdown/character-countdown.module.d.ts +4 -4
  266. package/src/v-angular/checkbox/checkbox.component.d.ts +6 -5
  267. package/src/v-angular/checkbox/checkbox.module.d.ts +5 -4
  268. package/src/v-angular/core/core.utils.d.ts +1 -0
  269. package/src/v-angular/datepicker/components/calendar/calendar.component.d.ts +36 -0
  270. package/src/v-angular/datepicker/components/calendar-control/calendar-control.component.d.ts +30 -0
  271. package/src/v-angular/datepicker/components/date-input/date-input.component.d.ts +102 -0
  272. package/src/v-angular/datepicker/components/datepicker/datepicker.component.d.ts +62 -0
  273. package/src/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.d.ts +165 -0
  274. package/src/v-angular/datepicker/datepicker.globals.d.ts +13 -0
  275. package/src/v-angular/datepicker/datepicker.models.d.ts +50 -0
  276. package/src/v-angular/datepicker/datepicker.module.d.ts +19 -0
  277. package/src/v-angular/datepicker/datepicker.utils.d.ts +39 -0
  278. package/src/v-angular/datepicker/directives/calendar-date.directive.d.ts +21 -0
  279. package/src/v-angular/datepicker/index.d.ts +13 -0
  280. package/src/v-angular/datepicker/models/dates.d.ts +15 -0
  281. package/src/v-angular/datepicker/pipes/date-thook.pipe.d.ts +8 -0
  282. package/src/v-angular/datepicker/pipes/is-disabled.pipe.d.ts +8 -0
  283. package/src/v-angular/datepicker/pipes/matches.pipe.d.ts +7 -0
  284. package/src/v-angular/drag-drop/drag-drop.component.d.ts +131 -0
  285. package/src/v-angular/drag-drop/drag-drop.models.d.ts +49 -0
  286. package/src/v-angular/drag-drop/drag-drop.module.d.ts +13 -0
  287. package/src/v-angular/drag-drop/drag-drop.pipes.d.ts +40 -0
  288. package/src/v-angular/drag-drop/drag-drop.utils.d.ts +33 -0
  289. package/src/v-angular/drag-drop/index.d.ts +4 -0
  290. package/src/v-angular/dropdown/dropdown-list/dropdown-list.component.d.ts +11 -4
  291. package/src/v-angular/dropdown/dropdown.component.d.ts +10 -6
  292. package/src/v-angular/dropdown/dropdown.module.d.ts +8 -7
  293. package/src/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.d.ts +6 -6
  294. package/src/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.d.ts +3 -3
  295. package/src/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.d.ts +8 -6
  296. package/src/v-angular/dropdown/typeahead/typeahead.directive.d.ts +14 -12
  297. package/src/v-angular/dropdown/typeahead/typeahead.module.d.ts +4 -4
  298. package/src/v-angular/external-link/external-link.directive.d.ts +3 -3
  299. package/src/v-angular/external-link/external-link.module.d.ts +4 -4
  300. package/src/v-angular/i18n/i18n.module.d.ts +7 -7
  301. package/src/v-angular/i18n/i18n.test.module.d.ts +4 -4
  302. package/src/v-angular/info-circle/info-circle.component.d.ts +4 -4
  303. package/src/v-angular/info-circle/info-circle.module.d.ts +4 -4
  304. package/src/v-angular/input/input.component.d.ts +5 -10
  305. package/src/v-angular/input/input.module.d.ts +5 -4
  306. package/src/v-angular/input-mask/input-mask.directive.d.ts +3 -3
  307. package/src/v-angular/input-mask/input-mask.module.d.ts +5 -5
  308. package/src/v-angular/modal/dialog/dialog.component.d.ts +16 -7
  309. package/src/v-angular/modal/fold-out/fold-out.component.d.ts +34 -11
  310. package/src/v-angular/modal/fold-out/fold-out.directive.d.ts +3 -3
  311. package/src/v-angular/modal/fold-out/keyboard-key.enum.d.ts +7 -0
  312. package/src/v-angular/modal/modal.module.d.ts +4 -4
  313. package/src/v-angular/modal/slide-out/slide-out.component.d.ts +13 -6
  314. package/src/v-angular/pagination/index.d.ts +2 -0
  315. package/src/v-angular/pagination/pagination.component.d.ts +64 -0
  316. package/src/v-angular/pagination/pagination.module.d.ts +12 -0
  317. package/src/v-angular/radio/radio.component.d.ts +14 -13
  318. package/src/v-angular/radio/radio.module.d.ts +5 -4
  319. package/src/v-angular/slug/slug.module.d.ts +4 -4
  320. package/src/v-angular/table/index.d.ts +5 -0
  321. package/src/v-angular/table/table.component.d.ts +229 -0
  322. package/src/v-angular/table/table.directive.d.ts +36 -0
  323. package/src/v-angular/table/table.models.d.ts +62 -0
  324. package/src/v-angular/table/table.module.d.ts +12 -0
  325. package/src/v-angular/table/table.tools.d.ts +5 -0
  326. package/src/v-angular/table/tr-thook.pipe.d.ts +7 -0
  327. package/src/v-angular/tabs/index.d.ts +4 -0
  328. package/src/v-angular/tabs/tab.directive.d.ts +37 -0
  329. package/src/v-angular/tabs/tabs.component.d.ts +65 -0
  330. package/src/v-angular/tabs/tabs.models.d.ts +25 -0
  331. package/src/v-angular/tabs/tabs.module.d.ts +11 -0
  332. package/src/v-angular/textarea/textarea.component.d.ts +6 -5
  333. package/src/v-angular/textarea/textarea.module.d.ts +6 -4
  334. package/src/v-angular/toast/index.d.ts +4 -0
  335. package/src/v-angular/toast/toast-message.service.d.ts +17 -0
  336. package/src/v-angular/toast/toast.component.d.ts +22 -0
  337. package/src/v-angular/toast/toast.models.d.ts +15 -0
  338. package/src/v-angular/toast/toast.module.d.ts +10 -0
  339. package/src/v-angular/tooltip/tooltip.directive.d.ts +5 -3
  340. package/src/v-angular/tooltip/tooltip.module.d.ts +4 -4
  341. package/src/v-angular/tooltip/tooltip.styles.d.ts +11 -0
  342. package/v-angular/alert/alert.component.d.ts +19 -0
  343. package/v-angular/alert/alert.models.d.ts +13 -0
  344. package/v-angular/alert/alert.module.d.ts +8 -0
  345. package/v-angular/alert/index.d.ts +3 -0
  346. package/v-angular/base-control-value-accessor/base-control-value-accessor.component.d.ts +10 -4
  347. package/v-angular/base-control-value-accessor/base-control-value-accessor.module.d.ts +4 -4
  348. package/v-angular/breadcrumbs/breadcrumbs.component.d.ts +4 -4
  349. package/v-angular/breadcrumbs/breadcrumbs.module.d.ts +4 -4
  350. package/v-angular/button/button.component.d.ts +5 -5
  351. package/v-angular/button/button.module.d.ts +4 -4
  352. package/v-angular/card/card.component.d.ts +3 -3
  353. package/v-angular/card/card.module.d.ts +4 -4
  354. package/v-angular/character-countdown/character-countdown.module.d.ts +4 -4
  355. package/v-angular/checkbox/checkbox.component.d.ts +6 -5
  356. package/v-angular/checkbox/checkbox.module.d.ts +5 -4
  357. package/v-angular/datepicker/components/calendar/calendar.component.d.ts +36 -0
  358. package/v-angular/datepicker/components/calendar-control/calendar-control.component.d.ts +30 -0
  359. package/v-angular/datepicker/components/date-input/date-input.component.d.ts +102 -0
  360. package/v-angular/datepicker/components/datepicker/datepicker.component.d.ts +62 -0
  361. package/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.d.ts +165 -0
  362. package/v-angular/datepicker/datepicker.globals.d.ts +13 -0
  363. package/v-angular/datepicker/datepicker.models.d.ts +50 -0
  364. package/v-angular/datepicker/datepicker.module.d.ts +19 -0
  365. package/v-angular/datepicker/datepicker.utils.d.ts +39 -0
  366. package/v-angular/datepicker/directives/calendar-date.directive.d.ts +21 -0
  367. package/v-angular/datepicker/index.d.ts +13 -0
  368. package/v-angular/datepicker/models/dates.d.ts +15 -0
  369. package/v-angular/datepicker/pipes/date-thook.pipe.d.ts +8 -0
  370. package/v-angular/datepicker/pipes/is-disabled.pipe.d.ts +8 -0
  371. package/v-angular/datepicker/pipes/matches.pipe.d.ts +7 -0
  372. package/v-angular/drag-drop/drag-drop.component.d.ts +131 -0
  373. package/v-angular/drag-drop/drag-drop.models.d.ts +49 -0
  374. package/v-angular/drag-drop/drag-drop.module.d.ts +13 -0
  375. package/v-angular/drag-drop/drag-drop.pipes.d.ts +40 -0
  376. package/v-angular/drag-drop/drag-drop.utils.d.ts +33 -0
  377. package/v-angular/drag-drop/index.d.ts +4 -0
  378. package/v-angular/dropdown/dropdown-list/dropdown-list.component.d.ts +11 -4
  379. package/v-angular/dropdown/dropdown.component.d.ts +10 -6
  380. package/v-angular/dropdown/dropdown.module.d.ts +8 -7
  381. package/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.d.ts +6 -6
  382. package/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.d.ts +3 -3
  383. package/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.d.ts +8 -6
  384. package/v-angular/dropdown/typeahead/typeahead.directive.d.ts +14 -12
  385. package/v-angular/dropdown/typeahead/typeahead.module.d.ts +4 -4
  386. package/v-angular/external-link/external-link.directive.d.ts +17 -0
  387. package/v-angular/external-link/external-link.module.d.ts +8 -0
  388. package/v-angular/external-link/index.d.ts +2 -0
  389. package/v-angular/i18n/i18n.module.d.ts +7 -7
  390. package/v-angular/i18n/i18n.test.module.d.ts +4 -4
  391. package/v-angular/index.d.ts +9 -0
  392. package/v-angular/info-circle/info-circle.component.d.ts +4 -4
  393. package/v-angular/info-circle/info-circle.module.d.ts +4 -4
  394. package/v-angular/input/input.component.d.ts +5 -10
  395. package/v-angular/input/input.module.d.ts +5 -4
  396. package/v-angular/input-mask/input-mask.directive.d.ts +3 -3
  397. package/v-angular/input-mask/input-mask.module.d.ts +5 -5
  398. package/v-angular/modal/dialog/dialog.component.d.ts +16 -7
  399. package/v-angular/modal/fold-out/fold-out.component.d.ts +34 -11
  400. package/v-angular/modal/fold-out/fold-out.directive.d.ts +3 -3
  401. package/v-angular/modal/fold-out/keyboard-key.enum.d.ts +7 -0
  402. package/v-angular/modal/modal.module.d.ts +4 -4
  403. package/v-angular/modal/slide-out/slide-out.component.d.ts +13 -6
  404. package/v-angular/pagination/index.d.ts +2 -0
  405. package/v-angular/pagination/pagination.component.d.ts +64 -0
  406. package/v-angular/pagination/pagination.module.d.ts +12 -0
  407. package/v-angular/radio/radio.component.d.ts +14 -13
  408. package/v-angular/radio/radio.module.d.ts +5 -4
  409. package/v-angular/slug/index.d.ts +2 -0
  410. package/v-angular/slug/slug.module.d.ts +8 -0
  411. package/v-angular/slug/slug.pipe.d.ts +12 -0
  412. package/v-angular/table/index.d.ts +5 -0
  413. package/v-angular/table/table.component.d.ts +229 -0
  414. package/v-angular/table/table.directive.d.ts +36 -0
  415. package/v-angular/table/table.models.d.ts +62 -0
  416. package/v-angular/table/table.module.d.ts +12 -0
  417. package/v-angular/table/table.tools.d.ts +5 -0
  418. package/v-angular/table/tr-thook.pipe.d.ts +7 -0
  419. package/v-angular/tabs/index.d.ts +4 -0
  420. package/v-angular/tabs/tab.directive.d.ts +37 -0
  421. package/v-angular/tabs/tabs.component.d.ts +65 -0
  422. package/v-angular/tabs/tabs.models.d.ts +25 -0
  423. package/v-angular/tabs/tabs.module.d.ts +11 -0
  424. package/v-angular/textarea/textarea.component.d.ts +6 -5
  425. package/v-angular/textarea/textarea.module.d.ts +6 -4
  426. package/v-angular/toast/index.d.ts +4 -0
  427. package/v-angular/toast/toast-message.service.d.ts +17 -0
  428. package/v-angular/toast/toast.component.d.ts +22 -0
  429. package/v-angular/toast/toast.models.d.ts +15 -0
  430. package/v-angular/toast/toast.module.d.ts +10 -0
  431. package/v-angular/tooltip/tooltip.directive.d.ts +5 -3
  432. package/v-angular/tooltip/tooltip.module.d.ts +4 -4
  433. package/v-angular/tooltip/tooltip.styles.d.ts +11 -0
  434. package/v-angular/v-angular.module.d.ts +27 -18
@@ -0,0 +1,196 @@
1
+ import { WeekDay } from '@angular/common';
2
+ const weekdays = [
3
+ WeekDay.Monday,
4
+ WeekDay.Tuesday,
5
+ WeekDay.Wednesday,
6
+ WeekDay.Thursday,
7
+ WeekDay.Friday,
8
+ WeekDay.Saturday,
9
+ WeekDay.Sunday,
10
+ ];
11
+ export const sortWeekDays = (firstDayOfWeek) => {
12
+ const firstDayIndex = weekdays.indexOf(firstDayOfWeek);
13
+ const weekStart = weekdays.slice(firstDayIndex);
14
+ const weekEnd = weekdays.slice(0, firstDayIndex);
15
+ return weekStart.concat(weekEnd);
16
+ };
17
+ /** Sets labels and sort weekday arrays based off of first day of week. */
18
+ export const getSortedWeekDays = (firstDayOfWeek, startDate) => {
19
+ if (startDate === undefined)
20
+ startDate = new Date();
21
+ // sort weekdays according to firstDayOfWeek
22
+ const sortedWeekdays = sortWeekDays(firstDayOfWeek);
23
+ // get the date object for the first day of week
24
+ const startDayIndex = sortedWeekdays.indexOf(startDate.getDay());
25
+ const firstOfWeek = new Date(startDate);
26
+ firstOfWeek.setDate(startDate.getDate() - startDayIndex);
27
+ // map each day in array to a date object
28
+ return sortedWeekdays.map((_, offset) => {
29
+ // set appropriate date
30
+ const weekdayDate = new Date(firstOfWeek);
31
+ weekdayDate.setDate(weekdayDate.getDate() + offset);
32
+ // and return value
33
+ return weekdayDate;
34
+ });
35
+ };
36
+ /** Generate a matrix of dates used to visualize a calendar month. */
37
+ export const generateDateMatrix = (month, year, minWeeks = 5, firstDayOfWeek) => {
38
+ // generate a new matrix with 5 or 6 rows (depending on number of days in that month)
39
+ const matrix = new Array(minWeeks);
40
+ matrix.fill([]);
41
+ const monthStr = `${month + 1}`.padStart(2, '0');
42
+ const date = new Date(`${year}-${monthStr}-01`);
43
+ const firstDate = firstCalendarDate(date, firstDayOfWeek);
44
+ // for each week in that month
45
+ const dateMatrix = matrix.map((_, weekOffset) => {
46
+ const offset = weekOffset * 7;
47
+ // update the date with the offset for that week
48
+ const firstOfWeek = new Date(firstDate);
49
+ firstOfWeek.setDate(firstDate.getDate() + offset);
50
+ return getSortedWeekDays(firstDayOfWeek, firstOfWeek);
51
+ });
52
+ // check if another row needs to be added (if last dates of month are missing)
53
+ const lastAdded = dateMatrix.slice(-1)[0].slice(-1)[0];
54
+ const lastOfMonth = new Date(lastAdded);
55
+ lastOfMonth.setMonth(month + 1);
56
+ lastOfMonth.setDate(0);
57
+ if (isBefore(lastAdded, lastOfMonth)) {
58
+ // add another week row
59
+ const firstOfWeek = new Date(lastAdded);
60
+ firstOfWeek.setDate(lastAdded.getDate() + 1);
61
+ dateMatrix.push(getSortedWeekDays(firstDayOfWeek, firstOfWeek));
62
+ }
63
+ // return final datematrix
64
+ return dateMatrix;
65
+ };
66
+ /** Returns the first date used in the calendars first button. */
67
+ export const firstCalendarDate = (date, firstDayOfWeek) => {
68
+ // sort weekdays according to firstDayOfWeek
69
+ const sortedWeekdays = sortWeekDays(firstDayOfWeek);
70
+ // set date to the first of month
71
+ const firstOfMonth = new Date(date);
72
+ firstOfMonth.setDate(1);
73
+ // get the offset
74
+ const offset = sortedWeekdays.indexOf(firstOfMonth.getDay());
75
+ const firstOfWeek = new Date(firstOfMonth);
76
+ // use offset to set date
77
+ firstOfWeek.setDate(1 - offset);
78
+ return firstOfWeek;
79
+ };
80
+ export const getDayOffset = (from, to, firstDayOfWeek, direction) => {
81
+ const sortedWeekdays = sortWeekDays(firstDayOfWeek);
82
+ const fromIndex = sortedWeekdays.indexOf(from);
83
+ const toIndex = sortedWeekdays.indexOf(to);
84
+ const offset = toIndex - fromIndex;
85
+ if (direction === 'forward' && offset < 0)
86
+ return offset + 6;
87
+ if (direction === 'back' && offset > 0)
88
+ return offset - 6;
89
+ return offset;
90
+ };
91
+ /** Returns an array of Dates for each of month. */
92
+ export const getMonthArray = () => {
93
+ const firstDayOfYear = new Date();
94
+ firstDayOfYear.setMonth(0);
95
+ firstDayOfYear.setDate(1);
96
+ // create a new array of length 12,
97
+ // and fill it with date objects of 1:st of january
98
+ const monthArray = new Array(12).fill(firstDayOfYear);
99
+ // map through the array,
100
+ // and create a new instance of the date,
101
+ // changing the month based on index (0 - 11)
102
+ return monthArray.map((d, index) => {
103
+ const date = new Date(d);
104
+ date.setMonth(index);
105
+ return date;
106
+ });
107
+ };
108
+ /** Returns an array of Dates for the current year and the next. */
109
+ export const getYearArray = () => {
110
+ const currentYear = new Date();
111
+ currentYear.setMonth(0);
112
+ currentYear.setDate(1);
113
+ const nextYear = new Date(currentYear);
114
+ nextYear.setFullYear(currentYear.getFullYear() + 1);
115
+ return [currentYear, nextYear];
116
+ };
117
+ /** Returns true if the two dates have the same year, month and date values. */
118
+ export const match = (a, b) => {
119
+ if (!a || !b)
120
+ return false;
121
+ if (a.getDate() !== b.getDate())
122
+ return false;
123
+ if (a.getMonth() !== b.getMonth())
124
+ return false;
125
+ if (a.getFullYear() !== b.getFullYear())
126
+ return false;
127
+ return true;
128
+ };
129
+ export const afterClosingHours = (closingHours) => {
130
+ if (!closingHours)
131
+ return false;
132
+ return Date.now() >= closingHours.getTime();
133
+ };
134
+ /**
135
+ * Checks if a date is before control date, regardless of time.
136
+ *
137
+ * @param date - comparison date
138
+ * @param controlDate - date to compare against
139
+ * @returns - true if the comparison date is before the control date
140
+ */
141
+ export const isBefore = (date, controlDate) => {
142
+ // if year values are dissimilar
143
+ if (date.getFullYear() !== controlDate.getFullYear()) {
144
+ return date.getFullYear() < controlDate.getFullYear();
145
+ }
146
+ // if month values are dissimilar
147
+ if (date.getMonth() !== controlDate.getMonth()) {
148
+ return date.getMonth() < controlDate.getMonth();
149
+ }
150
+ // if year and month are equal, check the date
151
+ return date.getDate() < controlDate.getDate();
152
+ };
153
+ /**
154
+ * Checks if a date is after control date, regardless of time.
155
+ *
156
+ * @param date - comparison date
157
+ * @param controlDate - date to compare against
158
+ * @returns - true if the comparison date is before the control date
159
+ */
160
+ export const isAfter = (date, controlDate) => {
161
+ // if year values are dissimilar
162
+ if (date.getFullYear() !== controlDate.getFullYear()) {
163
+ return date.getFullYear() > controlDate.getFullYear();
164
+ }
165
+ // if month values are dissimilar
166
+ if (date.getMonth() !== controlDate.getMonth()) {
167
+ return date.getMonth() > controlDate.getMonth();
168
+ }
169
+ // if year and month are equal, check the date
170
+ return date.getDate() > controlDate.getDate();
171
+ };
172
+ /**
173
+ * Checks if a value can be used to initiate a new Date object.
174
+ *
175
+ * @param value any value
176
+ * @returns - true if value can be coersed to a Date.
177
+ */
178
+ export const isValid = (value) => {
179
+ // if value is type of string and can be parsed to a Date
180
+ const date = value && typeof value === 'string' && !isNaN(Date.parse(value))
181
+ ? new Date(value)
182
+ : null;
183
+ switch (true) {
184
+ // if date or value is a valid date object - return valid
185
+ case typeof value?.getMonth === 'function':
186
+ case typeof date?.getMonth === 'function':
187
+ return true;
188
+ // if date or value is not a valid date object - return invalid
189
+ case value == null:
190
+ case date?.toString() === 'Invalid Date':
191
+ return false;
192
+ default:
193
+ return false;
194
+ }
195
+ };
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFekMsTUFBTSxRQUFRLEdBQWM7SUFDMUIsT0FBTyxDQUFDLE1BQU07SUFDZCxPQUFPLENBQUMsT0FBTztJQUNmLE9BQU8sQ0FBQyxTQUFTO0lBQ2pCLE9BQU8sQ0FBQyxRQUFRO0lBQ2hCLE9BQU8sQ0FBQyxNQUFNO0lBQ2QsT0FBTyxDQUFDLFFBQVE7SUFDaEIsT0FBTyxDQUFDLE1BQU07Q0FDZixDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsY0FBdUIsRUFBYSxFQUFFO0lBQ2pFLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUE7SUFDdEQsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUMvQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQTtJQUNoRCxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7QUFDbEMsQ0FBQyxDQUFBO0FBRUQsMEVBQTBFO0FBQzFFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQy9CLGNBQXVCLEVBQ3ZCLFNBQWdCLEVBQ1IsRUFBRTtJQUNWLElBQUksU0FBUyxLQUFLLFNBQVM7UUFBRSxTQUFTLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQTtJQUVuRCw0Q0FBNEM7SUFDNUMsTUFBTSxjQUFjLEdBQWMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBRTlELGdEQUFnRDtJQUNoRCxNQUFN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RCxLQUFLLE9BQU8sS0FBSyxFQUFFLFFBQVEsS0FBSyxVQUFVLENBQUM7UUFDM0MsS0FBSyxPQUFPLElBQUksRUFBRSxRQUFRLEtBQUssVUFBVTtZQUN2QyxPQUFPLElBQUksQ0FBQTtRQUNiLCtEQUErRDtRQUMvRCxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUM7UUFDbkIsS0FBSyxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssY0FBYztZQUN0QyxPQUFPLEtBQUssQ0FBQTtRQUNkO1lBQ0UsT0FBTyxLQUFLLENBQUE7SUFDaEIsQ0FBQztBQUNILENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdlZWtEYXkgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5cbmNvbnN0IHdlZWtkYXlzOiBXZWVrRGF5W10gPSBbXG4gIFdlZWtEYXkuTW9uZGF5LFxuICBXZWVrRGF5LlR1ZXNkYXksXG4gIFdlZWtEYXkuV2VkbmVzZGF5LFxuICBXZWVrRGF5LlRodXJzZGF5LFxuICBXZWVrRGF5LkZyaWRheSxcbiAgV2Vla0RheS5TYXR1cmRheSxcbiAgV2Vla0RheS5TdW5kYXksXG5dXG5cbmV4cG9ydCBjb25zdCBzb3J0V2Vla0RheXMgPSAoZmlyc3REYXlPZldlZWs6IFdlZWtEYXkpOiBXZWVrRGF5W10gPT4ge1xuICBjb25zdCBmaXJzdERheUluZGV4ID0gd2Vla2RheXMuaW5kZXhPZihmaXJzdERheU9mV2VlaylcbiAgY29uc3Qgd2Vla1N0YXJ0ID0gd2Vla2RheXMuc2xpY2UoZmlyc3REYXlJbmRleClcbiAgY29uc3Qgd2Vla0VuZCA9IHdlZWtkYXlzLnNsaWNlKDAsIGZpcnN0RGF5SW5kZXgpXG4gIHJldHVybiB3ZWVrU3RhcnQuY29uY2F0KHdlZWtFbmQpXG59XG5cbi8qKiBTZXRzIGxhYmVscyBhbmQgc29ydCB3ZWVrZGF5IGFycmF5cyBiYXNlZCBvZmYgb2YgZmlyc3QgZGF5IG9mIHdlZWsuICovXG5leHBvcnQgY29uc3QgZ2V0U29ydGVkV2Vla0RheXMgPSAoXG4gIGZpcnN0RGF5T2ZXZWVrOiBXZWVrRGF5LFxuICBzdGFydERhdGU/OiBEYXRlLFxuKTogRGF0ZVtdID0+IHtcbiAgaWYgKHN0YXJ0RGF0ZSA9PT0gdW5kZWZpbmVkKSBzdGFydERhdGUgPSBuZXcgRGF0ZSgpXG5cbiAgLy8gc29ydCB3ZWVrZGF5cyBhY2NvcmRpbmcgdG8gZmlyc3REYXlPZldlZWtcbiAgY29uc3Qgc29ydGVkV2Vla2RheXM6IFdlZWtEYXlbXSA9IHNvcnRXZWVrRGF5cyhmaXJzdERheU9mV2VlaylcblxuICAvLyBnZXQgdGhlIGRhdGUgb2JqZWN0IGZvciB0aGUgZmlyc3QgZGF5IG9mIHdlZWtcbiAgY29uc3Qgc3RhcnREYXlJbmRleCA9IHNvcnRlZFdlZWtkYXlzLmluZGV4T2Yoc3RhcnREYXRlLmdldERheSgpKVxuICBjb25zdCBmaXJzdE9mV2VlayA9IG5ldyBEYXRlKHN0YXJ0RGF0ZSlcbiAgZmlyc3RPZldlZWsuc2V0RGF0ZShzdGFydERhdGUuZ2V0RGF0ZSgpIC0gc3RhcnREYXlJbmRleClcblxuICAvLyBtYXAgZWFjaCBkYXkgaW4gYXJyYXkgdG8gYSBkYXRlIG9iamVjdFxuICByZXR1cm4gc29ydGVkV2Vla2RheXMubWFwKChfOiBXZWVrRGF5LCBvZmZzZXQ6IG51bWJlcikgPT4ge1xuICAgIC8vIHNldCBhcHByb3ByaWF0ZSBkYXRlXG4gICAgY29uc3Qgd2Vla2RheURhdGUgPSBuZXcgRGF0ZShmaXJzdE9mV2VlaylcbiAgICB3ZWVrZGF5RGF0ZS5zZXREYXRlKHdlZWtkYXlEYXRlLmdldERhdGUoKSArIG9mZnNldClcblxuICAgIC8vIGFuZCByZXR1cm4gdmFsdWVcbiAgICByZXR1cm4gd2Vla2RheURhdGVcbiAgfSlcbn1cblxuLyoqIEdlbmVyYXRlIGEgbWF0cml4IG9mIGRhdGVzIHVzZWQgdG8gdmlzdWFsaXplIGEgY2FsZW5kYXIgbW9udGguICovXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVEYXRlTWF0cml4ID0gKFxuICBtb250aDogbnVtYmVyLFxuICB5ZWFyOiBudW1iZXIsXG4gIG1pbldlZWtzID0gNSxcbiAgZmlyc3REYXlPZldlZWs6IFdlZWtEYXksXG4pOiBEYXRlW11bXSA9PiB7XG4gIC8vIGdlbmVyYXRlIGEgbmV3IG1hdHJpeCB3aXRoIDUgb3IgNiByb3dzIChkZXBlbmRpbmcgb24gbnVtYmVyIG9mIGRheXMgaW4gdGhhdCBtb250aClcbiAgY29uc3QgbWF0cml4OiBEYXRlW11bXSA9IG5ldyBBcnJheTxEYXRlW10+KG1pbldlZWtzKVxuICBtYXRyaXguZmlsbChbXSlcblxuICBjb25zdCBtb250aFN0ciA9IGAke21vbnRoICsgMX1gLnBhZFN0YXJ0KDIsICcwJylcbiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGAke3llYXJ9LSR7bW9udGhTdHJ9LTAxYClcbiAgY29uc3QgZmlyc3REYXRlID0gZmlyc3RDYWxlbmRhckRhdGUoZGF0ZSwgZmlyc3REYXlPZldlZWspXG5cbiAgLy8gZm9yIGVhY2ggd2VlayBpbiB0aGF0IG1vbnRoXG4gIGNvbnN0IGRhdGVNYXRyaXggPSBtYXRyaXgubWFwKChfOiBEYXRlW10sIHdlZWtPZmZzZXQ6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IG9mZnNldCA9IHdlZWtPZmZzZXQgKiA3XG4gICAgLy8gdXBkYXRlIHRoZSBkYXRlIHdpdGggdGhlIG9mZnNldCBmb3IgdGhhdCB3ZWVrXG4gICAgY29uc3QgZmlyc3RPZldlZWsgPSBuZXcgRGF0ZShmaXJzdERhdGUpXG4gICAgZmlyc3RPZldlZWsuc2V0RGF0ZShmaXJzdERhdGUuZ2V0RGF0ZSgpICsgb2Zmc2V0KVxuICAgIHJldHVybiBnZXRTb3J0ZWRXZWVrRGF5cyhmaXJzdERheU9mV2VlaywgZmlyc3RPZldlZWspXG4gIH0pXG5cbiAgLy8gY2hlY2sgaWYgYW5vdGhlciByb3cgbmVlZHMgdG8gYmUgYWRkZWQgKGlmIGxhc3QgZGF0ZXMgb2YgbW9udGggYXJlIG1pc3NpbmcpXG4gIGNvbnN0IGxhc3RBZGRlZCA9IGRhdGVNYXRyaXguc2xpY2UoLTEpWzBdLnNsaWNlKC0xKVswXVxuICBjb25zdCBsYXN0T2ZNb250aCA9IG5ldyBEYXRlKGxhc3RBZGRlZClcbiAgbGFzdE9mTW9udGguc2V0TW9udGgobW9udGggKyAxKVxuICBsYXN0T2ZNb250aC5zZXREYXRlKDApXG5cbiAgaWYgKGlzQmVmb3JlKGxhc3RBZGRlZCwgbGFzdE9mTW9udGgpKSB7XG4gICAgLy8gYWRkIGFub3RoZXIgd2VlayByb3dcbiAgICBjb25zdCBmaXJzdE9mV2VlayA9IG5ldyBEYXRlKGxhc3RBZGRlZClcbiAgICBmaXJzdE9mV2Vlay5zZXREYXRlKGxhc3RBZGRlZC5nZXREYXRlKCkgKyAxKVxuICAgIGRhdGVNYXRyaXgucHVzaChnZXRTb3J0ZWRXZWVrRGF5cyhmaXJzdERheU9mV2VlaywgZmlyc3RPZldlZWspKVxuICB9XG4gIC8vIHJldHVybiBmaW5hbCBkYXRlbWF0cml4XG4gIHJldHVybiBkYXRlTWF0cml4XG59XG5cbi8qKiBSZXR1cm5zIHRoZSBmaXJzdCBkYXRlIHVzZWQgaW4gdGhlIGNhbGVuZGFycyBmaXJzdCBidXR0b24uICovXG5leHBvcnQgY29uc3QgZmlyc3RDYWxlbmRhckRhdGUgPSAoXG4gIGRhdGU6IERhdGUsXG4gIGZpcnN0RGF5T2ZXZWVrOiBXZWVrRGF5LFxuKTogRGF0ZSA9PiB7XG4gIC8vIHNvcnQgd2Vla2RheXMgYWNjb3JkaW5nIHRvIGZpcnN0RGF5T2ZXZWVrXG4gIGNvbnN0IHNvcnRlZFdlZWtkYXlzOiBXZWVrRGF5W10gPSBzb3J0V2Vla0RheXMoZmlyc3REYXlPZldlZWspXG5cbiAgLy8gc2V0IGRhdGUgdG8gdGhlIGZpcnN0IG9mIG1vbnRoXG4gIGNvbnN0IGZpcnN0T2ZNb250aCA9IG5ldyBEYXRlKGRhdGUpXG4gIGZpcnN0T2ZNb250aC5zZXREYXRlKDEpXG5cbiAgLy8gZ2V0IHRoZSBvZmZzZXRcbiAgY29uc3Qgb2Zmc2V0ID0gc29ydGVkV2Vla2RheXMuaW5kZXhPZihmaXJzdE9mTW9udGguZ2V0RGF5KCkpXG4gIGNvbnN0IGZpcnN0T2ZXZWVrID0gbmV3IERhdGUoZmlyc3RPZk1vbnRoKVxuICAvLyB1c2Ugb2Zmc2V0IHRvIHNldCBkYXRlXG4gIGZpcnN0T2ZXZWVrLnNldERhdGUoMSAtIG9mZnNldClcbiAgcmV0dXJuIGZpcnN0T2ZXZWVrXG59XG5cbmV4cG9ydCBjb25zdCBnZXREYXlPZmZzZXQgPSAoXG4gIGZyb206IFdlZWtEYXksXG4gIHRvOiBXZWVrRGF5LFxuICBmaXJzdERheU9mV2VlazogV2Vla0RheSxcbiAgZGlyZWN0aW9uPzogJ2ZvcndhcmQnIHwgJ2JhY2snLFxuKTogbnVtYmVyID0+IHtcbiAgY29uc3Qgc29ydGVkV2Vla2RheXM6IFdlZWtEYXlbXSA9IHNvcnRXZWVrRGF5cyhmaXJzdERheU9mV2VlaylcblxuICBjb25zdCBmcm9tSW5kZXggPSBzb3J0ZWRXZWVrZGF5cy5pbmRleE9mKGZyb20pXG4gIGNvbnN0IHRvSW5kZXggPSBzb3J0ZWRXZWVrZGF5cy5pbmRleE9mKHRvKVxuXG4gIGNvbnN0IG9mZnNldCA9IHRvSW5kZXggLSBmcm9tSW5kZXhcblxuICBpZiAoZGlyZWN0aW9uID09PSAnZm9yd2FyZCcgJiYgb2Zmc2V0IDwgMCkgcmV0dXJuIG9mZnNldCArIDZcbiAgaWYgKGRpcmVjdGlvbiA9PT0gJ2JhY2snICYmIG9mZnNldCA+IDApIHJldHVybiBvZmZzZXQgLSA2XG4gIHJldHVybiBvZmZzZXRcbn1cblxuLyoqIFJldHVybnMgYW4gYXJyYXkgb2YgRGF0ZXMgZm9yIGVhY2ggb2YgbW9udGguICovXG5leHBvcnQgY29uc3QgZ2V0TW9udGhBcnJheSA9ICgpOiBEYXRlW10gPT4ge1xuICBjb25zdCBmaXJzdERheU9mWWVhciA9IG5ldyBEYXRlKClcbiAgZmlyc3REYXlPZlllYXIuc2V0TW9udGgoMClcbiAgZmlyc3REYXlPZlllYXIuc2V0RGF0ZSgxKVxuXG4gIC8vIGNyZWF0ZSBhIG5ldyBhcnJheSBvZiBsZW5ndGggMTIsXG4gIC8vIGFuZCBmaWxsIGl0IHdpdGggZGF0ZSBvYmplY3RzIG9mIDE6c3Qgb2YgamFudWFyeVxuICBjb25zdCBtb250aEFycmF5OiBEYXRlW10gPSBuZXcgQXJyYXkoMTIpLmZpbGwoZmlyc3REYXlPZlllYXIpXG5cbiAgLy8gbWFwIHRocm91Z2ggdGhlIGFycmF5LFxuICAvLyBhbmQgY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBkYXRlLFxuICAvLyBjaGFuZ2luZyB0aGUgbW9udGggYmFzZWQgb24gaW5kZXggKDAgLSAxMSlcbiAgcmV0dXJuIG1vbnRoQXJyYXkubWFwKChkOiBEYXRlLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGQpXG4gICAgZGF0ZS5zZXRNb250aChpbmRleClcbiAgICByZXR1cm4gZGF0ZVxuICB9KVxufVxuXG4vKiogUmV0dXJucyBhbiBhcnJheSBvZiBEYXRlcyBmb3IgdGhlIGN1cnJlbnQgeWVhciBhbmQgdGhlIG5leHQuICovXG5leHBvcnQgY29uc3QgZ2V0WWVhckFycmF5ID0gKCk6IERhdGVbXSA9PiB7XG4gIGNvbnN0IGN1cnJlbnRZZWFyID0gbmV3IERhdGUoKVxuICBjdXJyZW50WWVhci5zZXRNb250aCgwKVxuICBjdXJyZW50WWVhci5zZXREYXRlKDEpXG4gIGNvbnN0IG5leHRZZWFyID0gbmV3IERhdGUoY3VycmVudFllYXIpXG4gIG5leHRZZWFyLnNldEZ1bGxZZWFyKGN1cnJlbnRZZWFyLmdldEZ1bGxZZWFyKCkgKyAxKVxuICByZXR1cm4gW2N1cnJlbnRZZWFyLCBuZXh0WWVhcl1cbn1cblxuLyoqIFJldHVybnMgdHJ1ZSBpZiB0aGUgdHdvIGRhdGVzIGhhdmUgdGhlIHNhbWUgeWVhciwgbW9udGggYW5kIGRhdGUgdmFsdWVzLiAqL1xuZXhwb3J0IGNvbnN0IG1hdGNoID0gKGE6IERhdGUgfCB1bmRlZmluZWQsIGI6IERhdGUgfCB1bmRlZmluZWQpOiBib29sZWFuID0+IHtcbiAgaWYgKCFhIHx8ICFiKSByZXR1cm4gZmFsc2VcbiAgaWYgKGEuZ2V0RGF0ZSgpICE9PSBiLmdldERhdGUoKSkgcmV0dXJuIGZhbHNlXG4gIGlmIChhLmdldE1vbnRoKCkgIT09IGIuZ2V0TW9udGgoKSkgcmV0dXJuIGZhbHNlXG4gIGlmIChhLmdldEZ1bGxZZWFyKCkgIT09IGIuZ2V0RnVsbFllYXIoKSkgcmV0dXJuIGZhbHNlXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBhZnRlckNsb3NpbmdIb3VycyA9IChjbG9zaW5nSG91cnM6IERhdGUgfCB1bmRlZmluZWQpOiBib29sZWFuID0+IHtcbiAgaWYgKCFjbG9zaW5nSG91cnMpIHJldHVybiBmYWxzZVxuICByZXR1cm4gRGF0ZS5ub3coKSA+PSBjbG9zaW5nSG91cnMuZ2V0VGltZSgpXG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZGF0ZSBpcyBiZWZvcmUgY29udHJvbCBkYXRlLCByZWdhcmRsZXNzIG9mIHRpbWUuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBjb21wYXJpc29uIGRhdGVcbiAqIEBwYXJhbSBjb250cm9sRGF0ZSAtIGRhdGUgdG8gY29tcGFyZSBhZ2FpbnN0XG4gKiBAcmV0dXJucyAtIHRydWUgaWYgdGhlIGNvbXBhcmlzb24gZGF0ZSBpcyBiZWZvcmUgdGhlIGNvbnRyb2wgZGF0ZVxuICovXG5leHBvcnQgY29uc3QgaXNCZWZvcmUgPSAoZGF0ZTogRGF0ZSwgY29udHJvbERhdGU6IERhdGUpOiBib29sZWFuID0+IHtcbiAgLy8gaWYgeWVhciB2YWx1ZXMgYXJlIGRpc3NpbWlsYXJcbiAgaWYgKGRhdGUuZ2V0RnVsbFllYXIoKSAhPT0gY29udHJvbERhdGUuZ2V0RnVsbFllYXIoKSkge1xuICAgIHJldHVybiBkYXRlLmdldEZ1bGxZZWFyKCkgPCBjb250cm9sRGF0ZS5nZXRGdWxsWWVhcigpXG4gIH1cbiAgLy8gaWYgbW9udGggdmFsdWVzIGFyZSBkaXNzaW1pbGFyXG4gIGlmIChkYXRlLmdldE1vbnRoKCkgIT09IGNvbnRyb2xEYXRlLmdldE1vbnRoKCkpIHtcbiAgICByZXR1cm4gZGF0ZS5nZXRNb250aCgpIDwgY29udHJvbERhdGUuZ2V0TW9udGgoKVxuICB9XG4gIC8vIGlmIHllYXIgYW5kIG1vbnRoIGFyZSBlcXVhbCwgY2hlY2sgdGhlIGRhdGVcbiAgcmV0dXJuIGRhdGUuZ2V0RGF0ZSgpIDwgY29udHJvbERhdGUuZ2V0RGF0ZSgpXG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZGF0ZSBpcyBhZnRlciBjb250cm9sIGRhdGUsIHJlZ2FyZGxlc3Mgb2YgdGltZS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIGNvbXBhcmlzb24gZGF0ZVxuICogQHBhcmFtIGNvbnRyb2xEYXRlIC0gZGF0ZSB0byBjb21wYXJlIGFnYWluc3RcbiAqIEByZXR1cm5zIC0gdHJ1ZSBpZiB0aGUgY29tcGFyaXNvbiBkYXRlIGlzIGJlZm9yZSB0aGUgY29udHJvbCBkYXRlXG4gKi9cbmV4cG9ydCBjb25zdCBpc0FmdGVyID0gKGRhdGU6IERhdGUsIGNvbnRyb2xEYXRlOiBEYXRlKTogYm9vbGVhbiA9PiB7XG4gIC8vIGlmIHllYXIgdmFsdWVzIGFyZSBkaXNzaW1pbGFyXG4gIGlmIChkYXRlLmdldEZ1bGxZZWFyKCkgIT09IGNvbnRyb2xEYXRlLmdldEZ1bGxZZWFyKCkpIHtcbiAgICByZXR1cm4gZGF0ZS5nZXRGdWxsWWVhcigpID4gY29udHJvbERhdGUuZ2V0RnVsbFllYXIoKVxuICB9XG4gIC8vIGlmIG1vbnRoIHZhbHVlcyBhcmUgZGlzc2ltaWxhclxuICBpZiAoZGF0ZS5nZXRNb250aCgpICE9PSBjb250cm9sRGF0ZS5nZXRNb250aCgpKSB7XG4gICAgcmV0dXJuIGRhdGUuZ2V0TW9udGgoKSA+IGNvbnRyb2xEYXRlLmdldE1vbnRoKClcbiAgfVxuICAvLyBpZiB5ZWFyIGFuZCBtb250aCBhcmUgZXF1YWwsIGNoZWNrIHRoZSBkYXRlXG4gIHJldHVybiBkYXRlLmdldERhdGUoKSA+IGNvbnRyb2xEYXRlLmdldERhdGUoKVxufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHZhbHVlIGNhbiBiZSB1c2VkIHRvIGluaXRpYXRlIGEgbmV3IERhdGUgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB2YWx1ZSBhbnkgdmFsdWVcbiAqIEByZXR1cm5zIC0gdHJ1ZSBpZiB2YWx1ZSBjYW4gYmUgY29lcnNlZCB0byBhIERhdGUuXG4gKi9cbmV4cG9ydCBjb25zdCBpc1ZhbGlkID0gKHZhbHVlOiBhbnkpOiBib29sZWFuID0+IHtcbiAgLy8gaWYgdmFsdWUgaXMgdHlwZSBvZiBzdHJpbmcgYW5kIGNhbiBiZSBwYXJzZWQgdG8gYSBEYXRlXG4gIGNvbnN0IGRhdGUgPVxuICAgIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgIWlzTmFOKERhdGUucGFyc2UodmFsdWUpKVxuICAgICAgPyBuZXcgRGF0ZSh2YWx1ZSlcbiAgICAgIDogbnVsbFxuXG4gIHN3aXRjaCAodHJ1ZSkge1xuICAgIC8vIGlmIGRhdGUgb3IgdmFsdWUgaXMgYSB2YWxpZCBkYXRlIG9iamVjdCAtIHJldHVybiB2YWxpZFxuICAgIGNhc2UgdHlwZW9mIHZhbHVlPy5nZXRNb250aCA9PT0gJ2Z1bmN0aW9uJzpcbiAgICBjYXNlIHR5cGVvZiBkYXRlPy5nZXRNb250aCA9PT0gJ2Z1bmN0aW9uJzpcbiAgICAgIHJldHVybiB0cnVlXG4gICAgLy8gaWYgZGF0ZSBvciB2YWx1ZSBpcyBub3QgYSB2YWxpZCBkYXRlIG9iamVjdCAtIHJldHVybiBpbnZhbGlkXG4gICAgY2FzZSB2YWx1ZSA9PSBudWxsOlxuICAgIGNhc2UgZGF0ZT8udG9TdHJpbmcoKSA9PT0gJ0ludmFsaWQgRGF0ZSc6XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,47 @@
1
+ import { Directive, ElementRef, HostBinding, Input, } from '@angular/core';
2
+ import { match } from '../datepicker.utils';
3
+ import * as i0 from "@angular/core";
4
+ export class CalendarDateDirective {
5
+ get nativeElement() {
6
+ return this.elementRef.nativeElement;
7
+ }
8
+ constructor(elementRef) {
9
+ this.elementRef = elementRef;
10
+ this.isToday = false;
11
+ }
12
+ ngOnInit() {
13
+ this.isToday = match(new Date(), this.calendarDate);
14
+ }
15
+ ngOnChanges(changes) {
16
+ if (changes.disabled?.currentValue) {
17
+ ;
18
+ this.nativeElement.disabled = this.disabled;
19
+ }
20
+ }
21
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CalendarDateDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
22
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: CalendarDateDirective, selector: "[calendarDate]", inputs: { calendarDate: "calendarDate", selected: "selected", notWithinMonth: "notWithinMonth", disabled: "disabled" }, host: { properties: { "class.selected": "this.selected", "class.not-within-month": "this.notWithinMonth", "class.today": "this.isToday" } }, usesOnChanges: true, ngImport: i0 }); }
23
+ }
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CalendarDateDirective, decorators: [{
25
+ type: Directive,
26
+ args: [{
27
+ selector: '[calendarDate]', // eslint-disable-line @angular-eslint/directive-selector
28
+ }]
29
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { calendarDate: [{
30
+ type: Input
31
+ }], selected: [{
32
+ type: HostBinding,
33
+ args: ['class.' + "selected" /* DateCss.selected */]
34
+ }, {
35
+ type: Input
36
+ }], notWithinMonth: [{
37
+ type: HostBinding,
38
+ args: ['class.' + "not-within-month" /* DateCss.notWithinMonth */]
39
+ }, {
40
+ type: Input
41
+ }], isToday: [{
42
+ type: HostBinding,
43
+ args: ['class.' + "today" /* DateCss.today */]
44
+ }], disabled: [{
45
+ type: Input
46
+ }] } });
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItZGF0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9kYXRlcGlja2VyL2RpcmVjdGl2ZXMvY2FsZW5kYXItZGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssR0FJTixNQUFNLGVBQWUsQ0FBQTtBQUV0QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUE7O0FBVzNDLE1BQU0sT0FBTyxxQkFBcUI7SUFTaEMsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQTtJQUN0QyxDQUFDO0lBRUQsWUFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVBILFlBQU8sR0FBRyxLQUFLLENBQUE7SUFPVCxDQUFDO0lBRTlDLFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUNyRCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsQ0FBQztZQUNuQyxDQUFDO1lBQUMsSUFBSSxDQUFDLGFBQW1DLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUE7UUFDckUsQ0FBQztJQUNILENBQUM7K0dBdkJVLHFCQUFxQjttR0FBckIscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQUhqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSx5REFBeUQ7aUJBQ3RGOytFQUVVLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQzZDLFFBQVE7c0JBQTFELFdBQVc7dUJBQUMsUUFBUSxvQ0FBbUI7O3NCQUFHLEtBQUs7Z0JBR2hELGNBQWM7c0JBRmIsV0FBVzt1QkFBQyxRQUFRLGtEQUF5Qjs7c0JBQzdDLEtBQUs7Z0JBRWlDLE9BQU87c0JBQTdDLFdBQVc7dUJBQUMsUUFBUSw4QkFBZ0I7Z0JBQzVCLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbmltcG9ydCB7IG1hdGNoIH0gZnJvbSAnLi4vZGF0ZXBpY2tlci51dGlscydcblxuZXhwb3J0IGNvbnN0IGVudW0gRGF0ZUNzcyB7XG4gIG5vdFdpdGhpbk1vbnRoID0gJ25vdC13aXRoaW4tbW9udGgnLFxuICBzZWxlY3RlZCA9ICdzZWxlY3RlZCcsXG4gIHRvZGF5ID0gJ3RvZGF5Jyxcbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2NhbGVuZGFyRGF0ZV0nLCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3Jcbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJEYXRlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBjYWxlbmRhckRhdGUhOiBEYXRlXG4gIEBIb3N0QmluZGluZygnY2xhc3MuJyArIERhdGVDc3Muc2VsZWN0ZWQpIEBJbnB1dCgpIHNlbGVjdGVkITogYm9vbGVhblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLicgKyBEYXRlQ3NzLm5vdFdpdGhpbk1vbnRoKVxuICBASW5wdXQoKVxuICBub3RXaXRoaW5Nb250aCE6IGJvb2xlYW5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy4nICsgRGF0ZUNzcy50b2RheSkgaXNUb2RheSA9IGZhbHNlXG4gIEBJbnB1dCgpIGRpc2FibGVkITogYm9vbGVhblxuXG4gIGdldCBuYXRpdmVFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlzVG9kYXkgPSBtYXRjaChuZXcgRGF0ZSgpLCB0aGlzLmNhbGVuZGFyRGF0ZSlcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5kaXNhYmxlZD8uY3VycmVudFZhbHVlKSB7XG4gICAgICA7KHRoaXMubmF0aXZlRWxlbWVudCBhcyBIVE1MQnV0dG9uRWxlbWVudCkuZGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkXG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,17 @@
1
+ /*
2
+ * Public API Surface of date-picker
3
+ */
4
+ export * from './date-control-value-accessor/date-control-value-accessor.component';
5
+ export * from './components/calendar/calendar.component';
6
+ export * from './components/calendar-control/calendar-control.component';
7
+ export * from './components/date-input/date-input.component';
8
+ export * from './components/datepicker/datepicker.component';
9
+ export * from './directives/calendar-date.directive';
10
+ export * from './pipes/is-disabled.pipe';
11
+ export * from './pipes/matches.pipe';
12
+ export * from './models/dates';
13
+ export * from './datepicker.models';
14
+ export * from './datepicker.globals';
15
+ export * from './datepicker.module';
16
+ export * from './datepicker.utils';
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9kYXRlcGlja2VyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsY0FBYyxxRUFBcUUsQ0FBQTtBQUNuRixjQUFjLDBDQUEwQyxDQUFBO0FBQ3hELGNBQWMsMERBQTBELENBQUE7QUFDeEUsY0FBYyw4Q0FBOEMsQ0FBQTtBQUM1RCxjQUFjLDhDQUE4QyxDQUFBO0FBQzVELGNBQWMsc0NBQXNDLENBQUE7QUFDcEQsY0FBYywwQkFBMEIsQ0FBQTtBQUN4QyxjQUFjLHNCQUFzQixDQUFBO0FBQ3BDLGNBQWMsZ0JBQWdCLENBQUE7QUFDOUIsY0FBYyxxQkFBcUIsQ0FBQTtBQUNuQyxjQUFjLHNCQUFzQixDQUFBO0FBQ3BDLGNBQWMscUJBQXFCLENBQUE7QUFDbkMsY0FBYyxvQkFBb0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgZGF0ZS1waWNrZXJcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9kYXRlLWNvbnRyb2wtdmFsdWUtYWNjZXNzb3IvZGF0ZS1jb250cm9sLXZhbHVlLWFjY2Vzc29yLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvY2FsZW5kYXItY29udHJvbC9jYWxlbmRhci1jb250cm9sLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9kYXRlLWlucHV0L2RhdGUtaW5wdXQuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvY2FsZW5kYXItZGF0ZS5kaXJlY3RpdmUnXG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL2lzLWRpc2FibGVkLnBpcGUnXG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL21hdGNoZXMucGlwZSdcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL2RhdGVzJ1xuZXhwb3J0ICogZnJvbSAnLi9kYXRlcGlja2VyLm1vZGVscydcbmV4cG9ydCAqIGZyb20gJy4vZGF0ZXBpY2tlci5nbG9iYWxzJ1xuZXhwb3J0ICogZnJvbSAnLi9kYXRlcGlja2VyLm1vZHVsZSdcbmV4cG9ydCAqIGZyb20gJy4vZGF0ZXBpY2tlci51dGlscydcbiJdfQ==
@@ -0,0 +1,291 @@
1
+ import { createMask, } from '@sebgroup/green-angular/src/v-angular/input-mask';
2
+ /**
3
+ * Helper function to generate InputmaskOptions by requested locale.
4
+ * @param locale - requested locale. If not given, it'll use the browsers locale
5
+ * @returns InputmaskOptions with date settings
6
+ */
7
+ export const getLocaleDateMask = (dateCharacters, locale) => {
8
+ // If no locale has been passed, use browser language
9
+ if (!locale)
10
+ locale = navigator.language;
11
+ const format = getLocaleDateString(locale).toLowerCase();
12
+ return getFormatDateMask(format, dateCharacters);
13
+ };
14
+ export const getLocaleDateString = (locale) => locale && dateFormats[locale] ? dateFormats[locale] : 'yyyy-MM-dd';
15
+ const dateFormats = {
16
+ 'af-ZA': 'yyyy/MM/dd',
17
+ 'am-ET': 'dd/MM/yyyy',
18
+ 'ar-AE': 'dd/MM/yyyy',
19
+ 'ar-BH': 'dd/MM/yyyy',
20
+ 'ar-DZ': 'dd-MM-yyyy',
21
+ 'ar-EG': 'dd/MM/yyyy',
22
+ 'ar-IQ': 'dd/MM/yyyy',
23
+ 'ar-JO': 'dd/MM/yyyy',
24
+ 'ar-KW': 'dd/MM/yyyy',
25
+ 'ar-LB': 'dd/MM/yyyy',
26
+ 'ar-LY': 'dd/MM/yyyy',
27
+ 'ar-MA': 'dd-MM-yyyy',
28
+ 'ar-OM': 'dd/MM/yyyy',
29
+ 'ar-QA': 'dd/MM/yyyy',
30
+ 'ar-SA': 'dd/MM/yyyy',
31
+ 'ar-SY': 'dd/MM/yyyy',
32
+ 'ar-TN': 'dd-MM-yyyy',
33
+ 'ar-YE': 'dd/MM/yyyy',
34
+ 'arn-CL': 'dd-MM-yyyy',
35
+ 'as-IN': 'dd-MM-yyyy',
36
+ 'az-Cyrl-AZ': 'dd.MM.yyyy',
37
+ 'az-Latn-AZ': 'dd.MM.yyyy',
38
+ 'ba-RU': 'dd.MM.yyyy',
39
+ 'be-BY': 'dd.MM.yyyy',
40
+ 'bg-BG': 'dd.MM.yyyy',
41
+ 'bn-BD': 'dd-MM-yyyy',
42
+ 'bn-IN': 'dd-MM-yyyy',
43
+ 'bo-CN': 'yyyy/MM/dd',
44
+ 'br-FR': 'dd/MM/yyyy',
45
+ 'bs-Cyrl-BA': 'dd.MM.yyyy',
46
+ 'bs-Latn-BA': 'dd.MM.yyyy',
47
+ 'ca-ES': 'dd/MM/yyyy',
48
+ 'co-FR': 'dd/MM/yyyy',
49
+ 'cs-CZ': 'dd.MM.yyyy',
50
+ 'cy-GB': 'dd/MM/yyyy',
51
+ 'da-DK': 'dd.MM.yyyy',
52
+ 'de-AT': 'dd.MM.yyyy',
53
+ 'de-CH': 'dd.MM.yyyy',
54
+ 'de-DE': 'dd.MM.yyyy',
55
+ 'de-LI': 'dd.MM.yyyy',
56
+ 'de-LU': 'dd.MM.yyyy',
57
+ 'dsb-DE': 'dd.MM.yyyy',
58
+ 'dv-MV': 'dd/MM/yyyy',
59
+ 'el-GR': 'dd/MM/yyyy',
60
+ en: 'MM/dd/yyyy',
61
+ 'en-029': 'MM/dd/yyyy',
62
+ 'en-AU': 'dd/MM/yyyy',
63
+ 'en-BZ': 'dd/MM/yyyy',
64
+ 'en-CA': 'dd/MM/yyyy',
65
+ 'en-GB': 'dd/MM/yyyy',
66
+ 'en-IE': 'dd/MM/yyyy',
67
+ 'en-IN': 'dd-MM-yyyy',
68
+ 'en-JM': 'dd/MM/yyyy',
69
+ 'en-MY': 'dd/MM/yyyy',
70
+ 'en-NZ': 'dd/MM/yyyy',
71
+ 'en-PH': 'MM/dd/yyyy',
72
+ 'en-SG': 'dd/MM/yyyy',
73
+ 'en-TT': 'dd/MM/yyyy',
74
+ 'en-US': 'MM/dd/yyyy',
75
+ 'en-ZA': 'yyyy/MM/dd',
76
+ 'en-ZW': 'MM/dd/yyyy',
77
+ 'es-AR': 'dd/MM/yyyy',
78
+ 'es-BO': 'dd/MM/yyyy',
79
+ 'es-CL': 'dd-MM-yyyy',
80
+ 'es-CO': 'dd/MM/yyyy',
81
+ 'es-CR': 'dd/MM/yyyy',
82
+ 'es-DO': 'dd/MM/yyyy',
83
+ 'es-EC': 'dd/MM/yyyy',
84
+ 'es-ES': 'dd/MM/yyyy',
85
+ 'es-GT': 'dd/MM/yyyy',
86
+ 'es-HN': 'dd/MM/yyyy',
87
+ 'es-MX': 'dd/MM/yyyy',
88
+ 'es-NI': 'dd/MM/yyyy',
89
+ 'es-PA': 'MM/dd/yyyy',
90
+ 'es-PE': 'dd/MM/yyyy',
91
+ 'es-PR': 'dd/MM/yyyy',
92
+ 'es-PY': 'dd/MM/yyyy',
93
+ 'es-SV': 'dd/MM/yyyy',
94
+ 'es-US': 'MM/dd/yyyy',
95
+ 'es-UY': 'dd/MM/yyyy',
96
+ 'es-VE': 'dd/MM/yyyy',
97
+ 'et-EE': 'dd.MM.yyyy',
98
+ 'eu-ES': 'yyyy/MM/dd',
99
+ 'fa-IR': 'MM/dd/yyyy',
100
+ 'fi-FI': 'dd.MM.yyyy',
101
+ 'fil-PH': 'MM/dd/yyyy',
102
+ 'fo-FO': 'dd-MM-yyyy',
103
+ 'fr-BE': 'dd/MM/yyyy',
104
+ 'fr-CA': 'yyyy-MM-dd',
105
+ 'fr-CH': 'dd.MM.yyyy',
106
+ 'fr-FR': 'dd/MM/yyyy',
107
+ 'fr-LU': 'dd/MM/yyyy',
108
+ 'fr-MC': 'dd/MM/yyyy',
109
+ 'fy-NL': 'dd-MM-yyyy',
110
+ 'ga-IE': 'dd/MM/yyyy',
111
+ 'gd-GB': 'dd/MM/yyyy',
112
+ 'gl-ES': 'dd/MM/yyyy',
113
+ 'gsw-FR': 'dd/MM/yyyy',
114
+ 'gu-IN': 'dd-MM-yyyy',
115
+ 'ha-Latn-NG': 'dd/MM/yyyy',
116
+ 'he-IL': 'dd/MM/yyyy',
117
+ 'hi-IN': 'dd-MM-yyyy',
118
+ 'hr-BA': 'dd.MM.yyyy.',
119
+ 'hr-HR': 'dd.MM.yyyy',
120
+ 'hsb-DE': 'dd.MM.yyyy',
121
+ 'hu-HU': 'yyyy.MM.dd.',
122
+ 'hy-AM': 'dd.MM.yyyy',
123
+ 'id-ID': 'dd/MM/yyyy',
124
+ 'ig-NG': 'dd/MM/yyyy',
125
+ 'ii-CN': 'yyyy/MM/dd',
126
+ 'is-IS': 'dd.MM.yyyy',
127
+ 'it-CH': 'dd.MM.yyyy',
128
+ 'it-IT': 'dd/MM/yyyy',
129
+ 'iu-Cans-CA': 'dd/MM/yyyy',
130
+ 'iu-Latn-CA': 'dd/MM/yyyy',
131
+ 'ja-JP': 'yyyy/MM/dd',
132
+ 'ka-GE': 'dd.MM.yyyy',
133
+ 'kk-KZ': 'dd.MM.yyyy',
134
+ 'kl-GL': 'dd-MM-yyyy',
135
+ 'km-KH': 'yyyy-MM-dd',
136
+ 'kn-IN': 'dd-MM-yyyy',
137
+ 'ko-KR': 'yyyy.MM.dd',
138
+ 'kok-IN': 'dd-MM-yyyy',
139
+ 'ky-KG': 'dd.MM.yyyy',
140
+ 'lb-LU': 'dd/MM/yyyy',
141
+ 'lo-LA': 'dd/MM/yyyy',
142
+ 'lt-LT': 'yyyy.MM.dd',
143
+ 'lv-LV': 'yyyy.MM.dd.',
144
+ 'mi-NZ': 'dd/MM/yyyy',
145
+ 'mk-MK': 'dd.MM.yyyy',
146
+ 'ml-IN': 'dd-MM-yyyy',
147
+ 'mn-MN': 'yyyy.MM.dd',
148
+ 'mn-Mong-CN': 'yyyy/MM/dd',
149
+ 'moh-CA': 'MM/dd/yyyy',
150
+ 'mr-IN': 'dd-MM-yyyy',
151
+ 'ms-BN': 'dd/MM/yyyy',
152
+ 'ms-MY': 'dd/MM/yyyy',
153
+ 'mt-MT': 'dd/MM/yyyy',
154
+ 'nb-NO': 'dd.MM.yyyy',
155
+ 'ne-NP': 'MM/dd/yyyy',
156
+ 'nl-BE': 'dd/MM/yyyy',
157
+ 'nl-NL': 'dd-MM-yyyy',
158
+ 'nn-NO': 'dd.MM.yyyy',
159
+ 'nso-ZA': 'yyyy/MM/dd',
160
+ 'oc-FR': 'dd/MM/yyyy',
161
+ 'or-IN': 'dd-MM-yyyy',
162
+ 'pa-IN': 'dd-MM-yyyy',
163
+ 'pl-PL': 'dd.MM.yyyy',
164
+ 'prs-AF': 'dd/MM/yyyy',
165
+ 'ps-AF': 'dd/MM/yyyy',
166
+ 'pt-BR': 'dd/MM/yyyy',
167
+ 'pt-PT': 'dd-MM-yyyy',
168
+ 'qut-GT': 'dd/MM/yyyy',
169
+ 'quz-BO': 'dd/MM/yyyy',
170
+ 'quz-EC': 'dd/MM/yyyy',
171
+ 'quz-PE': 'dd/MM/yyyy',
172
+ 'rm-CH': 'dd/MM/yyyy',
173
+ 'ro-RO': 'dd.MM.yyyy',
174
+ 'ru-RU': 'dd.MM.yyyy',
175
+ 'rw-RW': 'MM/dd/yyyy',
176
+ 'sa-IN': 'dd-MM-yyyy',
177
+ 'sah-RU': 'MM.dd.yyyy',
178
+ se: 'yyyy-MM-dd',
179
+ 'se-FI': 'dd.MM.yyyy',
180
+ 'se-NO': 'dd.MM.yyyy',
181
+ 'se-SE': 'yyyy-MM-dd',
182
+ 'si-LK': 'yyyy-MM-dd',
183
+ 'sk-SK': 'dd.MM.yyyy',
184
+ 'sl-SI': 'dd.MM.yyyy',
185
+ 'sma-NO': 'dd.MM.yyyy',
186
+ 'sma-SE': 'yyyy-MM-dd',
187
+ 'smj-NO': 'dd.MM.yyyy',
188
+ 'smj-SE': 'yyyy-MM-dd',
189
+ 'smn-FI': 'dd.MM.yyyy',
190
+ 'sms-FI': 'dd.MM.yyyy',
191
+ 'sq-AL': 'yyyy-MM-dd',
192
+ 'sr-Cyrl-BA': 'dd.MM.yyyy',
193
+ 'sr-Cyrl-CS': 'dd.MM.yyyy',
194
+ 'sr-Cyrl-ME': 'dd.MM.yyyy',
195
+ 'sr-Cyrl-RS': 'dd.MM.yyyy',
196
+ 'sr-Latn-BA': 'dd.MM.yyyy',
197
+ 'sr-Latn-CS': 'dd.MM.yyyy',
198
+ 'sr-Latn-ME': 'dd.MM.yyyy',
199
+ 'sr-Latn-RS': 'dd.MM.yyyy',
200
+ sv: 'yyyy-MM-dd',
201
+ 'sv-FI': 'dd.MM.yyyy',
202
+ 'sv-SE': 'yyyy-MM-dd',
203
+ 'sw-KE': 'MM/dd/yyyy',
204
+ 'syr-SY': 'dd/MM/yyyy',
205
+ 'ta-IN': 'dd-MM-yyyy',
206
+ 'te-IN': 'dd-MM-yyyy',
207
+ 'tg-Cyrl-TJ': 'dd.MM.yyyy',
208
+ 'th-TH': 'dd/MM/yyyy',
209
+ 'tk-TM': 'dd.MM.yyyy',
210
+ 'tn-ZA': 'yyyy/MM/dd',
211
+ 'tr-TR': 'dd.MM.yyyy',
212
+ 'tt-RU': 'dd.MM.yyyy',
213
+ 'tzm-Latn-DZ': 'dd-MM-yyyy',
214
+ 'ug-CN': 'yyyy-MM-dd',
215
+ 'uk-UA': 'dd.MM.yyyy',
216
+ 'ur-PK': 'dd/MM/yyyy',
217
+ 'uz-Cyrl-UZ': 'dd.MM.yyyy',
218
+ 'uz-Latn-UZ': 'dd/MM yyyy',
219
+ 'vi-VN': 'dd/MM/yyyy',
220
+ 'wo-SN': 'dd/MM/yyyy',
221
+ 'xh-ZA': 'yyyy/MM/dd',
222
+ 'yo-NG': 'dd/MM/yyyy',
223
+ 'zh-CN': 'yyyy/MM/dd',
224
+ 'zh-HK': 'dd/MM/yyyy',
225
+ 'zh-MO': 'dd/MM/yyyy',
226
+ 'zh-SG': 'dd/MM/yyyy',
227
+ 'zh-TW': 'yyyy/MM/dd',
228
+ 'zu-ZA': 'yyyy/MM/dd',
229
+ };
230
+ export const getFormatDateMask = (format, dateCharacters) => {
231
+ const separators = [' ', '.', '-', '/'];
232
+ const separator = separators.find((operator) => format.indexOf(operator) > -1) ?? '-';
233
+ const dateObjects = format.split(separator);
234
+ const year = { key: 'year', index: 0 }, month = { key: 'month', index: 1 }, day = { key: 'day', index: 2 };
235
+ dateObjects.forEach((dateObject, index) => {
236
+ switch (dateObject[0]) {
237
+ case 'y':
238
+ year.index = index;
239
+ break;
240
+ case 'm':
241
+ month.index = index;
242
+ break;
243
+ case 'd':
244
+ day.index = index;
245
+ break;
246
+ }
247
+ });
248
+ const placeholder = setDateFormatCharacters(format, dateCharacters);
249
+ return createMask({
250
+ alias: 'datetime',
251
+ inputFormat: format,
252
+ placeholder,
253
+ parser: (value) => {
254
+ const values = value.split(separator);
255
+ const y = +values[year.index];
256
+ const m = +values[month.index] - 1;
257
+ const d = +values[day.index];
258
+ return new Date(y, m, d);
259
+ },
260
+ onBeforeMask(initialValue) {
261
+ if (!initialValue || typeof initialValue !== 'string')
262
+ return '';
263
+ // If initialValues is in dateTime format, remove seconds that present after the "T"
264
+ if (initialValue.includes('T'))
265
+ initialValue = initialValue.split('T')[0];
266
+ // initialValue should always be in yyyy-mm-dd no matter if set from control, via datepicker or manually with keyboard
267
+ const values = initialValue.split('-');
268
+ const datePartsInOrder = [year, month, day].sort((a, b) => a.index - b.index);
269
+ // "Insert" correct values for the year/month/day, then join to string with separator
270
+ return datePartsInOrder
271
+ .map(({ key }) => {
272
+ const [yearValue, monthValue, dateValue] = values;
273
+ if (key === 'year')
274
+ return yearValue;
275
+ if (key === 'month')
276
+ return monthValue;
277
+ return dateValue;
278
+ })
279
+ .join(separator);
280
+ },
281
+ });
282
+ };
283
+ export const setDateFormatCharacters = (format, dateCharacters) => {
284
+ if (!dateCharacters)
285
+ return format;
286
+ format = format.replace(/y/g, dateCharacters.year);
287
+ format = format.replace(/m/g, dateCharacters.month);
288
+ format = format.replace(/d/g, dateCharacters.day);
289
+ return format;
290
+ };
291
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9kYXRlcGlja2VyL21vZGVscy9kYXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsVUFBVSxHQUVYLE1BQU0sa0RBQWtELENBQUE7QUFFekQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQy9CLGNBQStCLEVBQy9CLE1BQWUsRUFDUyxFQUFFO0lBQzFCLHFEQUFxRDtJQUNyRCxJQUFJLENBQUMsTUFBTTtRQUFFLE1BQU0sR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFBO0lBRXhDLE1BQU0sTUFBTSxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBRXhELE9BQU8saUJBQWlCLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFBO0FBQ2xELENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsTUFBZSxFQUFFLEVBQUUsQ0FDckQsTUFBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUE7QUFDcEUsTUFBTSxXQUFXLEdBQTJCO0lBQzFDLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFlBQVksRUFBRSxZQUFZO0lBQzFCLFlBQVksRUFBRSxZQUFZO0lBQzFCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFlBQVksRUFBRSxZQUFZO0lBQzFCLFlBQVksRUFBRSxZQUFZO0lBQzFCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLEVBQUUsRUFBRSxZQUFZO0lBQ2hCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFlBQVksRUFBRSxZQUFZO0lBQzFCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxhQUFhO0lBQ3RCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLE9BQU8sRUFBRSxhQUFhO0lBQ3RCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFlBQVksRUFBRSxZQUFZO0lBQzFCLFlBQVksRUFBRSxZQUFZO0lBQzFCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxhQUFhO0lBQ3RCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFlBQVksRUFBRSxZQUFZO0lBQzFCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLEVBQUUsRUFBRSxZQUFZO0lBQ2hCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFlBQVksRUFBRSxZQUFZO0lBQzFCLFlBQVksRUFBRSxZQUFZO0lBQzFCLFlBQVksRUFBRSxZQUFZO0lBQzFCLFlBQVksRUFBRSxZQUFZO0lBQzFCLFlBQVksRUFBRSxZQUFZO0lBQzFCLFlBQVksRUFBRSxZQUFZO0lBQzFCLFlBQVksRUFBRSxZQUFZO0lBQzFCLFlBQVks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Q0YsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFBO0FBT0QsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FDckMsTUFBYyxFQUNkLGNBQStCLEVBQy9CLEVBQUU7SUFDRixJQUFJLENBQUMsY0FBYztRQUFFLE9BQU8sTUFBTSxDQUFBO0lBQ2xDLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDbEQsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNuRCxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2pELE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgY3JlYXRlTWFzayxcbiAgSW5wdXRtYXNrT3B0aW9ucyxcbn0gZnJvbSAnQHNlYmdyb3VwL2dyZWVuLWFuZ3VsYXIvc3JjL3YtYW5ndWxhci9pbnB1dC1tYXNrJ1xuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byBnZW5lcmF0ZSBJbnB1dG1hc2tPcHRpb25zIGJ5IHJlcXVlc3RlZCBsb2NhbGUuXG4gKiBAcGFyYW0gbG9jYWxlIC0gcmVxdWVzdGVkIGxvY2FsZS4gSWYgbm90IGdpdmVuLCBpdCdsbCB1c2UgdGhlIGJyb3dzZXJzIGxvY2FsZVxuICogQHJldHVybnMgSW5wdXRtYXNrT3B0aW9ucyB3aXRoIGRhdGUgc2V0dGluZ3NcbiAqL1xuZXhwb3J0IGNvbnN0IGdldExvY2FsZURhdGVNYXNrID0gKFxuICBkYXRlQ2hhcmFjdGVycz86IERhdGVDaGFyYWN0ZXJzLFxuICBsb2NhbGU/OiBzdHJpbmcsXG4pOiBJbnB1dG1hc2tPcHRpb25zPERhdGU+ID0+IHtcbiAgLy8gSWYgbm8gbG9jYWxlIGhhcyBiZWVuIHBhc3NlZCwgdXNlIGJyb3dzZXIgbGFuZ3VhZ2VcbiAgaWYgKCFsb2NhbGUpIGxvY2FsZSA9IG5hdmlnYXRvci5sYW5ndWFnZVxuXG4gIGNvbnN0IGZvcm1hdCA9IGdldExvY2FsZURhdGVTdHJpbmcobG9jYWxlKS50b0xvd2VyQ2FzZSgpXG5cbiAgcmV0dXJuIGdldEZvcm1hdERhdGVNYXNrKGZvcm1hdCwgZGF0ZUNoYXJhY3RlcnMpXG59XG5cbmV4cG9ydCBjb25zdCBnZXRMb2NhbGVEYXRlU3RyaW5nID0gKGxvY2FsZT86IHN0cmluZykgPT5cbiAgbG9jYWxlICYmIGRhdGVGb3JtYXRzW2xvY2FsZV0gPyBkYXRlRm9ybWF0c1tsb2NhbGVdIDogJ3l5eXktTU0tZGQnXG5jb25zdCBkYXRlRm9ybWF0czogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgJ2FmLVpBJzogJ3l5eXkvTU0vZGQnLFxuICAnYW0tRVQnOiAnZGQvTU0veXl5eScsXG4gICdhci1BRSc6ICdkZC9NTS95eXl5JyxcbiAgJ2FyLUJIJzogJ2RkL01NL3l5eXknLFxuICAnYXItRFonOiAnZGQtTU0teXl5eScsXG4gICdhci1FRyc6ICdkZC9NTS95eXl5JyxcbiAgJ2FyLUlRJzogJ2RkL01NL3l5eXknLFxuICAnYXItSk8nOiAnZGQvTU0veXl5eScsXG4gICdhci1LVyc6ICdkZC9NTS95eXl5JyxcbiAgJ2FyLUxCJzogJ2RkL01NL3l5eXknLFxuICAnYXItTFknOiAnZGQvTU0veXl5eScsXG4gICdhci1NQSc6ICdkZC1NTS15eXl5JyxcbiAgJ2FyLU9NJzogJ2RkL01NL3l5eXknLFxuICAnYXItUUEnOiAnZGQvTU0veXl5eScsXG4gICdhci1TQSc6ICdkZC9NTS95eXl5JyxcbiAgJ2FyLVNZJzogJ2RkL01NL3l5eXknLFxuICAnYXItVE4nOiAnZGQtTU0teXl5eScsXG4gICdhci1ZRSc6ICdkZC9NTS95eXl5JyxcbiAgJ2Fybi1DTCc6ICdkZC1NTS15eXl5JyxcbiAgJ2FzLUlOJzogJ2RkLU1NLXl5eXknLFxuICAnYXotQ3lybC1BWic6ICdkZC5NTS55eXl5JyxcbiAgJ2F6LUxhdG4tQVonOiAnZGQuTU0ueXl5eScsXG4gICdiYS1SVSc6ICdkZC5NTS55eXl5JyxcbiAgJ2JlLUJZJzogJ2RkLk1NLnl5eXknLFxuICAnYmctQkcnOiAnZGQuTU0ueXl5eScsXG4gICdibi1CRCc6ICdkZC1NTS15eXl5JyxcbiAgJ2JuLUlOJzogJ2RkLU1NLXl5eXknLFxuICAnYm8tQ04nOiAneXl5eS9NTS9kZCcsXG4gICdici1GUic6ICdkZC9NTS95eXl5JyxcbiAgJ2JzLUN5cmwtQkEnOiAnZGQuTU0ueXl5eScsXG4gICdicy1MYXRuLUJBJzogJ2RkLk1NLnl5eXknLFxuICAnY2EtRVMnOiAnZGQvTU0veXl5eScsXG4gICdjby1GUic6ICdkZC9NTS95eXl5JyxcbiAgJ2NzLUNaJzogJ2RkLk1NLnl5eXknLFxuICAnY3ktR0InOiAnZGQvTU0veXl5eScsXG4gICdkYS1ESyc6ICdkZC5NTS55eXl5JyxcbiAgJ2RlLUFUJzogJ2RkLk1NLnl5eXknLFxuICAnZGUtQ0gnOiAnZGQuTU0ueXl5eScsXG4gICdkZS1ERSc6ICdkZC5NTS55eXl5JyxcbiAgJ2RlLUxJJzogJ2RkLk1NLnl5eXknLFxuICAnZGUtTFUnOiAnZGQuTU0ueXl5eScsXG4gICdkc2ItREUnOiAnZGQuTU0ueXl5eScsXG4gICdkdi1NVic6ICdkZC9NTS95eXl5JyxcbiAgJ2VsLUdSJzogJ2RkL01NL3l5eXknLFxuICBlbjogJ01NL2RkL3l5eXknLFxuICAnZW4tMDI5JzogJ01NL2RkL3l5eXknLFxuICAnZW4tQVUnOiAnZGQvTU0veXl5eScsXG4gICdlbi1CWic6ICdkZC9NTS95eXl5JyxcbiAgJ2VuLUNBJzogJ2RkL01NL3l5eXknLFxuICAnZW4tR0InOiAnZGQvTU0veXl5eScsXG4gICdlbi1JRSc6ICdkZC9NTS95eXl5JyxcbiAgJ2VuLUlOJzogJ2RkLU1NLXl5eXknLFxuICAnZW4tSk0nOiAnZGQvTU0veXl5eScsXG4gICdlbi1NWSc6ICdkZC9NTS95eXl5JyxcbiAgJ2VuLU5aJzogJ2RkL01NL3l5eXknLFxuICAnZW4tUEgnOiAnTU0vZGQveXl5eScsXG4gICdlbi1TRyc6ICdkZC9NTS95eXl5JyxcbiAgJ2VuLVRUJzogJ2RkL01NL3l5eXknLFxuICAnZW4tVVMnOiAnTU0vZGQveXl5eScsXG4gICdlbi1aQSc6ICd5eXl5L01NL2RkJyxcbiAgJ2VuLVpXJzogJ01NL2RkL3l5eXknLFxuICAnZXMtQVInOiAnZGQvTU0veXl5eScsXG4gICdlcy1CTyc6ICdkZC9NTS95eXl5JyxcbiAgJ2VzLUNMJzogJ2RkLU1NLXl5eXknLFxuICAnZXMtQ08nOiAnZGQvTU0veXl5eScsXG4gICdlcy1DUic6ICdkZC9NTS95eXl5JyxcbiAgJ2VzLURPJzogJ2RkL01NL3l5eXknLFxuICAnZXMtRUMnOiAnZGQvTU0veXl5eScsXG4gICdlcy1FUyc6ICdkZC9NTS95eXl5JyxcbiAgJ2VzLUdUJzogJ2RkL01NL3l5eXknLFxuICAnZXMtSE4nOiAnZGQvTU0veXl5eScsXG4gICdlcy1NWCc6ICdkZC9NTS95eXl5JyxcbiAgJ2VzLU5JJzogJ2RkL01NL3l5eXknLFxuICAnZXMtUEEnOiAnTU0vZGQveXl5eScsXG4gICdlcy1QRSc6ICdkZC9NTS95eXl5JyxcbiAgJ2VzLVBSJzogJ2RkL01NL3l5eXknLFxuICAnZXMtUFknOiAnZGQvTU0veXl5eScsXG4gICdlcy1TVic6ICdkZC9NTS95eXl5JyxcbiAgJ2VzLVVTJzogJ01NL2RkL3l5eXknLFxuICAnZXMtVVknOiAnZGQvTU0veXl5eScsXG4gICdlcy1WRSc6ICdkZC9NTS95eXl5JyxcbiAgJ2V0LUVFJzogJ2RkLk1NLnl5eXknLFxuICAnZXUtRVMnOiAneXl5eS9NTS9kZCcsXG4gICdmYS1JUic6ICdNTS9kZC95eXl5JyxcbiAgJ2ZpLUZJJzogJ2RkLk1NLnl5eXknLFxuICAnZmlsLVBIJzogJ01NL2RkL3l5eXknLFxuICAnZm8tRk8nOiAnZGQtTU0teXl5eScsXG4gICdmci1CRSc6ICdkZC9NTS95eXl5JyxcbiAgJ2ZyLUNBJzogJ3l5eXktTU0tZGQnLFxuICAnZnItQ0gnOiAnZGQuTU0ueXl5eScsXG4gICdmci1GUic6ICdkZC9NTS95eXl5JyxcbiAgJ2ZyLUxVJzogJ2RkL01NL3l5eXknLFxuICAnZnItTUMnOiAnZGQvTU0veXl5eScsXG4gICdmeS1OTCc6ICdkZC1NTS15eXl5JyxcbiAgJ2dhLUlFJzogJ2RkL01NL3l5eXknLFxuICAnZ2QtR0InOiAnZGQvTU0veXl5eScsXG4gICdnbC1FUyc6ICdkZC9NTS95eXl5JyxcbiAgJ2dzdy1GUic6ICdkZC9NTS95eXl5JyxcbiAgJ2d1LUlOJzogJ2RkLU1NLXl5eXknLFxuICAnaGEtTGF0bi1ORyc6ICdkZC9NTS95eXl5JyxcbiAgJ2hlLUlMJzogJ2RkL01NL3l5eXknLFxuICAnaGktSU4nOiAnZGQtTU0teXl5eScsXG4gICdoci1CQSc6ICdkZC5NTS55eXl5LicsXG4gICdoci1IUic6ICdkZC5NTS55eXl5JyxcbiAgJ2hzYi1ERSc6ICdkZC5NTS55eXl5JyxcbiAgJ2h1LUhVJzogJ3l5eXkuTU0uZGQuJyxcbiAgJ2h5LUFNJzogJ2RkLk1NLnl5eXknLFxuICAnaWQtSUQnOiAnZGQvTU0veXl5eScsXG4gICdpZy1ORyc6ICdkZC9NTS95eXl5JyxcbiAgJ2lpLUNOJzogJ3l5eXkvTU0vZGQnLFxuICAnaXMtSVMnOiAnZGQuTU0ueXl5eScsXG4gICdpdC1DSCc6ICdkZC5NTS55eXl5JyxcbiAgJ2l0LUlUJzogJ2RkL01NL3l5eXknLFxuICAnaXUtQ2Fucy1DQSc6ICdkZC9NTS95eXl5JyxcbiAgJ2l1LUxhdG4tQ0EnOiAnZGQvTU0veXl5eScsXG4gICdqYS1KUCc6ICd5eXl5L01NL2RkJyxcbiAgJ2thLUdFJzogJ2RkLk1NLnl5eXknLFxuICAna2stS1onOiAnZGQuTU0ueXl5eScsXG4gICdrbC1HTCc6ICdkZC1NTS15eXl5JyxcbiAgJ2ttLUtIJzogJ3l5eXktTU0tZGQnLFxuICAna24tSU4nOiAnZGQtTU0teXl5eScsXG4gICdrby1LUic6ICd5eXl5Lk1NLmRkJyxcbiAgJ2tvay1JTic6ICdkZC1NTS15eXl5JyxcbiAgJ2t5LUtHJzogJ2RkLk1NLnl5eXknLFxuICAnbGItTFUnOiAnZGQvTU0veXl5eScsXG4gICdsby1MQSc6ICdkZC9NTS95eXl5JyxcbiAgJ2x0LUxUJzogJ3l5eXkuTU0uZGQnLFxuICAnbHYtTFYnOiAneXl5eS5NTS5kZC4nLFxuICAnbWktTlonOiAnZGQvTU0veXl5eScsXG4gICdtay1NSyc6ICdkZC5NTS55eXl5JyxcbiAgJ21sLUlOJzogJ2RkLU1NLXl5eXknLFxuICAnbW4tTU4nOiAneXl5eS5NTS5kZCcsXG4gICdtbi1Nb25nLUNOJzogJ3l5eXkvTU0vZGQnLFxuICAnbW9oLUNBJzogJ01NL2RkL3l5eXknLFxuICAnbXItSU4nOiAnZGQtTU0teXl5eScsXG4gICdtcy1CTic6ICdkZC9NTS95eXl5JyxcbiAgJ21zLU1ZJzogJ2RkL01NL3l5eXknLFxuICAnbXQtTVQnOiAnZGQvTU0veXl5eScsXG4gICduYi1OTyc6ICdkZC5NTS55eXl5JyxcbiAgJ25lLU5QJzogJ01NL2RkL3l5eXknLFxuICAnbmwtQkUnOiAnZGQvTU0veXl5eScsXG4gICdubC1OTCc6ICdkZC1NTS15eXl5JyxcbiAgJ25uLU5PJzogJ2RkLk1NLnl5eXknLFxuICAnbnNvLVpBJzogJ3l5eXkvTU0vZGQnLFxuICAnb2MtRlInOiAnZGQvTU0veXl5eScsXG4gICdvci1JTic6ICdkZC1NTS15eXl5JyxcbiAgJ3BhLUlOJzogJ2RkLU1NLXl5eXknLFxuICAncGwtUEwnOiAnZGQuTU0ueXl5eScsXG4gICdwcnMtQUYnOiAnZGQvTU0veXl5eScsXG4gICdwcy1BRic6ICdkZC9NTS95eXl5JyxcbiAgJ3B0LUJSJzogJ2RkL01NL3l5eXknLFxuICAncHQtUFQnOiAnZGQtTU0teXl5eScsXG4gICdxdXQtR1QnOiAnZGQvTU0veXl5eScsXG4gICdxdXotQk8nOiAnZGQvTU0veXl5eScsXG4gICdxdXotRUMnOiAnZGQvTU0veXl5eScsXG4gICdxdXotUEUnOiAnZGQvTU0veXl5eScsXG4gICdybS1DSCc6ICdkZC9NTS95eXl5JyxcbiAgJ3JvLVJPJzogJ2RkLk1NLnl5eXknLFxuICAncnUtUlUnOiAnZGQuTU0ueXl5eScsXG4gICdydy1SVyc6ICdNTS9kZC95eXl5JyxcbiAgJ3NhLUlOJzogJ2RkLU1NLXl5eXknLFxuICAnc2FoLVJVJzogJ01NLmRkLnl5eXknLFxuICBzZTogJ3l5eXktTU0tZGQnLFxuICAnc2UtRkknOiAnZGQuTU0ueXl5eScsXG4gICdzZS1OTyc6ICdkZC5NTS55eXl5JyxcbiAgJ3NlLVNFJzogJ3l5eXktTU0tZGQnLFxuICAnc2ktTEsnOiAneXl5eS1NTS1kZCcsXG4gICdzay1TSyc6ICdkZC5NTS55eXl5JyxcbiAgJ3NsLVNJJzogJ2RkLk1NLnl5eXknLFxuICAnc21hLU5PJzogJ2RkLk1NLnl5eXknLFxuICAnc21hLVNFJzogJ3l5eXktTU0tZGQnLFxuICAnc21qLU5PJzogJ2RkLk1NLnl5eXknLFxuICAnc21qLVNFJzogJ3l5eXktTU0tZGQnLFxuICAnc21uLUZJJzogJ2RkLk1NLnl5eXknLFxuICAnc21zLUZJJzogJ2RkLk1NLnl5eXknLFxuICAnc3EtQUwnOiAneXl5eS1NTS1kZCcsXG4gICdzci1DeXJsLUJBJzogJ2RkLk1NLnl5eXknLFxuICAnc3ItQ3lybC1DUyc6ICdkZC5NTS55eXl5JyxcbiAgJ3NyLUN5cmwtTUUnOiAnZGQuTU0ueXl5eScsXG4gICdzci1DeXJsLVJTJzogJ2RkLk1NLnl5eXknLFxuICAnc3ItTGF0bi1CQSc6ICdkZC5NTS55eXl5JyxcbiAgJ3NyLUxhdG4tQ1MnOiAnZGQuTU0ueXl5eScsXG4gICdzci1MYXRuLU1FJzogJ2RkLk1NLnl5eXknLFxuICAnc3ItTGF0bi1SUyc6ICdkZC5NTS55eXl5JyxcbiAgc3Y6ICd5eXl5LU1NLWRkJyxcbiAgJ3N2LUZJJzogJ2RkLk1NLnl5eXknLFxuICAnc3YtU0UnOiAneXl5eS1NTS1kZCcsXG4gICdzdy1LRSc6ICdNTS9kZC95eXl5JyxcbiAgJ3N5ci1TWSc6ICdkZC9NTS95eXl5JyxcbiAgJ3RhLUlOJzogJ2RkLU1NLXl5eXknLFxuICAndGUtSU4nOiAnZGQtTU0teXl5eScsXG4gICd0Zy1DeXJsLVRKJzogJ2RkLk1NLnl5eXknLFxuICAndGgtVEgnOiAnZGQvTU0veXl5eScsXG4gICd0ay1UTSc6ICdkZC5NTS55eXl5JyxcbiAgJ3RuLVpBJzogJ3l5eXkvTU0vZGQnLFxuICAndHItVFInOiAnZGQuTU0ueXl5eScsXG4gICd0dC1SVSc6ICdkZC5NTS55eXl5JyxcbiAgJ3R6bS1MYXRuLURaJzogJ2RkLU1NLXl5eXknLFxuICAndWctQ04nOiAneXl5eS1NTS1kZCcsXG4gICd1ay1VQSc6ICdkZC5NTS55eXl5JyxcbiAgJ3VyLVBLJzogJ2RkL01NL3l5eXknLFxuICAndXotQ3lybC1VWic6ICdkZC5NTS55eXl5JyxcbiAgJ3V6LUxhdG4tVVonOiAnZGQvTU0geXl5eScsXG4gICd2aS1WTic6ICdkZC9NTS95eXl5JyxcbiAgJ3dvLVNOJzogJ2RkL01NL3l5eXknLFxuICAneGgtWkEnOiAneXl5eS9NTS9kZCcsXG4gICd5by1ORyc6ICdkZC9NTS95eXl5JyxcbiAgJ3poLUNOJzogJ3l5eXkvTU0vZGQnLFxuICAnemgtSEsnOiAnZGQvTU0veXl5eScsXG4gICd6aC1NTyc6ICdkZC9NTS95eXl5JyxcbiAgJ3poLVNHJzogJ2RkL01NL3l5eXknLFxuICAnemgtVFcnOiAneXl5eS9NTS9kZCcsXG4gICd6dS1aQSc6ICd5eXl5L01NL2RkJyxcbn1cbmV4cG9ydCBjb25zdCBnZXRGb3JtYXREYXRlTWFzayA9IChcbiAgZm9ybWF0OiBzdHJpbmcsXG4gIGRhdGVDaGFyYWN0ZXJzPzogRGF0ZUNoYXJhY3RlcnMsXG4pID0+IHtcbiAgY29uc3Qgc2VwYXJhdG9ycyA9IFsnICcsICcuJywgJy0nLCAnLyddXG4gIGNvbnN0IHNlcGFyYXRvciA9XG4gICAgc2VwYXJhdG9ycy5maW5kKChvcGVyYXRvcikgPT4gZm9ybWF0LmluZGV4T2Yob3BlcmF0b3IpID4gLTEpID8/ICctJ1xuICBjb25zdCBkYXRlT2JqZWN0cyA9IGZvcm1hdC5zcGxpdChzZXBhcmF0b3IpXG4gIGNvbnN0IHllYXI6IHsga2V5OiBzdHJpbmc7IGluZGV4OiBudW1iZXIgfSA9IHsga2V5OiAneWVhcicsIGluZGV4OiAwIH0sXG4gICAgbW9udGg6IHsga2V5OiBzdHJpbmc7IGluZGV4OiBudW1iZXIgfSA9IHsga2V5OiAnbW9udGgnLCBpbmRleDogMSB9LFxuICAgIGRheTogeyBrZXk6IHN0cmluZzsgaW5kZXg6IG51bWJlciB9ID0geyBrZXk6ICdkYXknLCBpbmRleDogMiB9XG5cbiAgZGF0ZU9iamVjdHMuZm9yRWFjaCgoZGF0ZU9iamVjdCwgaW5kZXgpID0+IHtcbiAgICBzd2l0Y2ggKGRhdGVPYmplY3RbMF0pIHtcbiAgICAgIGNhc2UgJ3knOlxuICAgICAgICB5ZWFyLmluZGV4ID0gaW5kZXhcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ20nOlxuICAgICAgICBtb250aC5pbmRleCA9IGluZGV4XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdkJzpcbiAgICAgICAgZGF5LmluZGV4ID0gaW5kZXhcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH0pXG4gIGNvbnN0IHBsYWNlaG9sZGVyID0gc2V0RGF0ZUZvcm1hdENoYXJhY3RlcnMoZm9ybWF0LCBkYXRlQ2hhcmFjdGVycylcblxuICByZXR1cm4gY3JlYXRlTWFzazxEYXRlPih7XG4gICAgYWxpYXM6ICdkYXRldGltZScsXG4gICAgaW5wdXRGb3JtYXQ6IGZvcm1hdCxcbiAgICBwbGFjZWhvbGRlcixcbiAgICBwYXJzZXI6ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZXMgPSB2YWx1ZS5zcGxpdChzZXBhcmF0b3IpXG4gICAgICBjb25zdCB5ID0gK3ZhbHVlc1t5ZWFyLmluZGV4XVxuICAgICAgY29uc3QgbSA9ICt2YWx1ZXNbbW9udGguaW5kZXhdIC0gMVxuICAgICAgY29uc3QgZCA9ICt2YWx1ZXNbZGF5LmluZGV4XVxuICAgICAgcmV0dXJuIG5ldyBEYXRlKHksIG0sIGQpXG4gICAgfSxcbiAgICBvbkJlZm9yZU1hc2soaW5pdGlhbFZhbHVlOiBzdHJpbmcpIHtcbiAgICAgIGlmICghaW5pdGlhbFZhbHVlIHx8IHR5cGVvZiBpbml0aWFsVmFsdWUgIT09ICdzdHJpbmcnKSByZXR1cm4gJydcbiAgICAgIC8vIElmIGluaXRpYWxWYWx1ZXMgaXMgaW4gZGF0ZVRpbWUgZm9ybWF0LCByZW1vdmUgc2Vjb25kcyB0aGF0IHByZXNlbnQgYWZ0ZXIgdGhlIFwiVFwiXG4gICAgICBpZiAoaW5pdGlhbFZhbHVlLmluY2x1ZGVzKCdUJykpIGluaXRpYWxWYWx1ZSA9IGluaXRpYWxWYWx1ZS5zcGxpdCgnVCcpWzBdXG4gICAgICAvLyBpbml0aWFsVmFsdWUgc2hvdWxkIGFsd2F5cyBiZSBpbiB5eXl5LW1tLWRkIG5vIG1hdHRlciBpZiBzZXQgZnJvbSBjb250cm9sLCB2aWEgZGF0ZXBpY2tlciBvciBtYW51YWxseSB3aXRoIGtleWJvYXJkXG4gICAgICBjb25zdCB2YWx1ZXMgPSBpbml0aWFsVmFsdWUuc3BsaXQoJy0nKVxuICAgICAgY29uc3QgZGF0ZVBhcnRzSW5PcmRlciA9IFt5ZWFyLCBtb250aCwgZGF5XS5zb3J0KFxuICAgICAgICAoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgsXG4gICAgICApXG4gICAgICAvLyBcIkluc2VydFwiIGNvcnJlY3QgdmFsdWVzIGZvciB0aGUgeWVhci9tb250aC9kYXksIHRoZW4gam9pbiB0byBzdHJpbmcgd2l0aCBzZXBhcmF0b3JcbiAgICAgIHJldHVybiBkYXRlUGFydHNJbk9yZGVyXG4gICAgICAgIC5tYXAoKHsga2V5IH0pID0+IHtcbiAgICAgICAgICBjb25zdCBbeWVhclZhbHVlLCBtb250aFZhbHVlLCBkYXRlVmFsdWVdID0gdmFsdWVzXG4gICAgICAgICAgaWYgKGtleSA9PT0gJ3llYXInKSByZXR1cm4geWVhclZhbHVlXG4gICAgICAgICAgaWYgKGtleSA9PT0gJ21vbnRoJykgcmV0dXJuIG1vbnRoVmFsdWVcbiAgICAgICAgICByZXR1cm4gZGF0ZVZhbHVlXG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKHNlcGFyYXRvcilcbiAgICB9LFxuICB9KVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVDaGFyYWN0ZXJzIHtcbiAgeWVhcjogc3RyaW5nXG4gIG1vbnRoOiBzdHJpbmdcbiAgZGF5OiBzdHJpbmdcbn1cbmV4cG9ydCBjb25zdCBzZXREYXRlRm9ybWF0Q2hhcmFjdGVycyA9IChcbiAgZm9ybWF0OiBzdHJpbmcsXG4gIGRhdGVDaGFyYWN0ZXJzPzogRGF0ZUNoYXJhY3RlcnMsXG4pID0+IHtcbiAgaWYgKCFkYXRlQ2hhcmFjdGVycykgcmV0dXJuIGZvcm1hdFxuICBmb3JtYXQgPSBmb3JtYXQucmVwbGFjZSgveS9nLCBkYXRlQ2hhcmFjdGVycy55ZWFyKVxuICBmb3JtYXQgPSBmb3JtYXQucmVwbGFjZSgvbS9nLCBkYXRlQ2hhcmFjdGVycy5tb250aClcbiAgZm9ybWF0ID0gZm9ybWF0LnJlcGxhY2UoL2QvZywgZGF0ZUNoYXJhY3RlcnMuZGF5KVxuICByZXR1cm4gZm9ybWF0XG59XG4iXX0=