mis-crystal-design-system 4.0.51 → 14.0.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 (901) hide show
  1. package/action-list/action-list.component.d.ts +3 -0
  2. package/action-list/action-list.module.d.ts +9 -0
  3. package/analytics/analytics.module.d.ts +4 -0
  4. package/analytics/analytics.service.d.ts +3 -0
  5. package/async-search-dropdown/async-dropdown.component.d.ts +5 -2
  6. package/async-search-dropdown/async-dropdown.module.d.ts +9 -0
  7. package/button/button.component.d.ts +3 -0
  8. package/button/button.directive.d.ts +3 -0
  9. package/button/button.module.d.ts +7 -0
  10. package/checkbox/checkbox.component.d.ts +3 -0
  11. package/checkbox/checkbox.module.d.ts +7 -0
  12. package/chip/chip.component.d.ts +3 -0
  13. package/chip/chip.module.d.ts +6 -0
  14. package/datepicker_v2/datepicker.module.d.ts +10 -0
  15. package/datepicker_v2/public_api.d.ts +1 -0
  16. package/datepicker_v2/tz-datepicker.directive.d.ts +3 -0
  17. package/datepicker_v2/tz-dp-container/tz-dp-container.component.d.ts +3 -0
  18. package/daterangepicker_v2/daterangepicker.module.d.ts +10 -0
  19. package/daterangepicker_v2/public_api.d.ts +1 -0
  20. package/daterangepicker_v2/tz-daterangepicker.directive.d.ts +3 -0
  21. package/daterangepicker_v2/tz-drp-container/tz-drp-container.component.d.ts +3 -0
  22. package/drawer/drawer-body/drawer-body.component.d.ts +3 -1
  23. package/drawer/drawer.module.d.ts +8 -0
  24. package/drawer/drawer.service.d.ts +3 -0
  25. package/dropdown/calculate-container-height.directive.d.ts +3 -0
  26. package/dropdown/dropdown.component.d.ts +3 -0
  27. package/dropdown/dropdown.module.d.ts +11 -0
  28. package/dynamic-form/dynamic-form.component.d.ts +11 -8
  29. package/dynamic-form/dynamic-form.module.d.ts +13 -0
  30. package/esm2020/action-list/action-list.component.mjs +370 -0
  31. package/esm2020/action-list/action-list.module.mjs +25 -0
  32. package/esm2020/analytics/analytics.module.mjs +18 -0
  33. package/esm2020/analytics/analytics.service.mjs +63 -0
  34. package/esm2020/async-search-dropdown/async-dropdown.component.mjs +473 -0
  35. package/esm2020/async-search-dropdown/async-dropdown.module.mjs +22 -0
  36. package/esm2020/button/button.component.mjs +87 -0
  37. package/esm2020/button/button.directive.mjs +61 -0
  38. package/esm2020/button/button.module.mjs +23 -0
  39. package/esm2020/checkbox/checkbox.component.mjs +124 -0
  40. package/esm2020/checkbox/checkbox.module.mjs +23 -0
  41. package/esm2020/chip/chip.component.mjs +82 -0
  42. package/esm2020/chip/chip.module.mjs +22 -0
  43. package/esm2020/datepicker_v2/datepicker.module.mjs +24 -0
  44. package/esm2020/datepicker_v2/mis-crystal-design-system-datepicker_v2.mjs +5 -0
  45. package/esm2020/datepicker_v2/public_api.mjs +4 -0
  46. package/esm2020/datepicker_v2/tz-datepicker.directive.mjs +164 -0
  47. package/esm2020/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +245 -0
  48. package/esm2020/daterangepicker_v2/daterangepicker.module.mjs +25 -0
  49. package/esm2020/daterangepicker_v2/mis-crystal-design-system-daterangepicker_v2.mjs +5 -0
  50. package/esm2020/daterangepicker_v2/public_api.mjs +4 -0
  51. package/esm2020/daterangepicker_v2/tz-daterangepicker.directive.mjs +135 -0
  52. package/esm2020/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +364 -0
  53. package/esm2020/drawer/drawer-body/drawer-body.component.mjs +58 -0
  54. package/esm2020/drawer/drawer.module.mjs +33 -0
  55. package/esm2020/drawer/drawer.service.mjs +56 -0
  56. package/esm2020/drawer/mis-crystal-design-system-drawer.mjs +5 -0
  57. package/esm2020/dropdown/calculate-container-height.directive.mjs +41 -0
  58. package/esm2020/dropdown/dropdown.component.mjs +410 -0
  59. package/esm2020/dropdown/dropdown.module.mjs +27 -0
  60. package/esm2020/dropdown/mis-crystal-design-system-dropdown.mjs +5 -0
  61. package/esm2020/dynamic-form/dynamic-form.component.mjs +712 -0
  62. package/esm2020/dynamic-form/dynamic-form.module.mjs +56 -0
  63. package/esm2020/fab/fab.component.mjs +144 -0
  64. package/esm2020/fab/fab.module.mjs +22 -0
  65. package/esm2020/input/directives/input/input.directive.mjs +40 -0
  66. package/esm2020/input/mis-input.component.mjs +84 -0
  67. package/esm2020/input/mis-input.module.mjs +21 -0
  68. package/esm2020/input-stepper/input-stepper/input-stepper.component.mjs +74 -0
  69. package/esm2020/input-stepper/input-stepper.module.mjs +25 -0
  70. package/esm2020/loader/loader.component.mjs +24 -0
  71. package/esm2020/loader/loader.module.mjs +22 -0
  72. package/esm2020/menu/menu-close.directive.mjs +25 -0
  73. package/esm2020/menu/menu.directive.mjs +77 -0
  74. package/esm2020/menu/menu.module.mjs +23 -0
  75. package/esm2020/mobile-filter/mobile-filter.component.mjs +179 -0
  76. package/esm2020/mobile-filter/mobile-filter.module.mjs +21 -0
  77. package/esm2020/modal/mis-crystal-design-system-modal.mjs +5 -0
  78. package/esm2020/modal/modal.module.mjs +33 -0
  79. package/esm2020/modal/modal.service.mjs +70 -0
  80. package/esm2020/modal/module-wrapper/module-wrapper.component.mjs +55 -0
  81. package/esm2020/multi-select-dropdown/multi-select-dropdown.component.mjs +483 -0
  82. package/esm2020/multi-select-dropdown/multi-select-dropdown.module.mjs +26 -0
  83. package/esm2020/nested-multi-select-dropdown/nested-multi-select-dropdown.component.mjs +510 -0
  84. package/esm2020/nested-multi-select-dropdown/nested-multi-select-dropdown.module.mjs +26 -0
  85. package/esm2020/phone-input/phone-input.component.mjs +115 -0
  86. package/esm2020/phone-input/phone-input.module.mjs +27 -0
  87. package/esm2020/radio-button/radio-button.component.mjs +56 -0
  88. package/esm2020/radio-button/radio-button.module.mjs +23 -0
  89. package/esm2020/ske-loader/ske-loader.component.mjs +53 -0
  90. package/esm2020/ske-loader/ske-loader.module.mjs +19 -0
  91. package/esm2020/slider/slider.component.mjs +45 -0
  92. package/esm2020/slider/slider.module.mjs +30 -0
  93. package/esm2020/snackbar/snackbar/snackbar.component.mjs +72 -0
  94. package/esm2020/snackbar/snackbar.module.mjs +36 -0
  95. package/esm2020/snackbar/snackbar.service.mjs +47 -0
  96. package/esm2020/specificdatepicker/mis-crystal-design-system-specificdatepicker.mjs +5 -0
  97. package/esm2020/specificdatepicker/public_api.mjs +4 -0
  98. package/esm2020/specificdatepicker/specificdatepicker.module.mjs +27 -0
  99. package/esm2020/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +619 -0
  100. package/esm2020/specificdatepicker/tz-specificdatepicker.directive.mjs +196 -0
  101. package/esm2020/star-rating/star-rating.component.mjs +112 -0
  102. package/esm2020/star-rating/star-rating.module.mjs +19 -0
  103. package/esm2020/switch/switch.component.mjs +55 -0
  104. package/esm2020/switch/switch.module.mjs +23 -0
  105. package/esm2020/table/custom-table-cell.directive.mjs +42 -0
  106. package/esm2020/table/filter/filter.component.mjs +168 -0
  107. package/esm2020/table/mis-crystal-design-system-table.mjs +5 -0
  108. package/esm2020/table/public_api.mjs +6 -0
  109. package/esm2020/table/sub-table/sub-table.component.mjs +193 -0
  110. package/esm2020/table/table.component.mjs +476 -0
  111. package/esm2020/table/table.module.mjs +27 -0
  112. package/esm2020/timepicker/mis-crystal-design-system-timepicker.mjs +5 -0
  113. package/esm2020/timepicker/timepicker.component.mjs +339 -0
  114. package/esm2020/timepicker/timepicker.directive.mjs +65 -0
  115. package/esm2020/timepicker/timepicker.module.mjs +26 -0
  116. package/esm2020/timerangepicker/timerangepicker.component.mjs +227 -0
  117. package/esm2020/timerangepicker/timerangepicker.module.mjs +24 -0
  118. package/esm2020/toast/toast.component.mjs +50 -0
  119. package/{esm2015/toast/toast.data.service.js → esm2020/toast/toast.data.service.mjs} +8 -7
  120. package/esm2020/toast/toast.module.mjs +33 -0
  121. package/esm2020/toast/toast.service.mjs +91 -0
  122. package/esm2020/tooltip/tooltip-container/tooltip.component.mjs +78 -0
  123. package/esm2020/tooltip/tooltip.directive.mjs +137 -0
  124. package/esm2020/tooltip/tooltip.module.mjs +24 -0
  125. package/esm2020/virtual-scroll/virtual-scroll.component.mjs +190 -0
  126. package/esm2020/virtual-scroll/virtual-scroll.module.mjs +34 -0
  127. package/{esm2015/widgets/classes/base-widget.js → esm2020/widgets/classes/base-widget.mjs} +2 -2
  128. package/esm2020/widgets/classes/widget-group.mjs +32 -0
  129. package/esm2020/widgets/services/widget.service.mjs +18 -0
  130. package/esm2020/widgets/widgets.module.mjs +18 -0
  131. package/fab/fab.component.d.ts +3 -0
  132. package/fab/fab.module.d.ts +6 -0
  133. package/fesm2015/mis-crystal-design-system-action-list.mjs +446 -0
  134. package/fesm2015/mis-crystal-design-system-action-list.mjs.map +1 -0
  135. package/fesm2015/{mis-crystal-design-system-analytics.js → mis-crystal-design-system-analytics.mjs} +26 -14
  136. package/fesm2015/mis-crystal-design-system-analytics.mjs.map +1 -0
  137. package/fesm2015/mis-crystal-design-system-async-search-dropdown.mjs +563 -0
  138. package/fesm2015/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -0
  139. package/fesm2015/mis-crystal-design-system-button.mjs +189 -0
  140. package/fesm2015/mis-crystal-design-system-button.mjs.map +1 -0
  141. package/fesm2015/mis-crystal-design-system-checkbox.mjs +166 -0
  142. package/fesm2015/mis-crystal-design-system-checkbox.mjs.map +1 -0
  143. package/fesm2015/mis-crystal-design-system-chip.mjs +123 -0
  144. package/fesm2015/mis-crystal-design-system-chip.mjs.map +1 -0
  145. package/fesm2015/mis-crystal-design-system-datepicker_v2.mjs +501 -0
  146. package/fesm2015/mis-crystal-design-system-datepicker_v2.mjs.map +1 -0
  147. package/fesm2015/mis-crystal-design-system-daterangepicker_v2.mjs +599 -0
  148. package/fesm2015/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -0
  149. package/fesm2015/mis-crystal-design-system-drawer.mjs +185 -0
  150. package/fesm2015/mis-crystal-design-system-drawer.mjs.map +1 -0
  151. package/fesm2015/mis-crystal-design-system-dropdown.mjs +536 -0
  152. package/fesm2015/mis-crystal-design-system-dropdown.mjs.map +1 -0
  153. package/fesm2015/mis-crystal-design-system-dynamic-form.mjs +867 -0
  154. package/fesm2015/mis-crystal-design-system-dynamic-form.mjs.map +1 -0
  155. package/fesm2015/mis-crystal-design-system-fab.mjs +186 -0
  156. package/fesm2015/mis-crystal-design-system-fab.mjs.map +1 -0
  157. package/fesm2015/mis-crystal-design-system-input-stepper.mjs +110 -0
  158. package/fesm2015/mis-crystal-design-system-input-stepper.mjs.map +1 -0
  159. package/fesm2015/mis-crystal-design-system-input.mjs +165 -0
  160. package/fesm2015/mis-crystal-design-system-input.mjs.map +1 -0
  161. package/fesm2015/mis-crystal-design-system-loader.mjs +57 -0
  162. package/fesm2015/mis-crystal-design-system-loader.mjs.map +1 -0
  163. package/fesm2015/mis-crystal-design-system-menu.mjs +135 -0
  164. package/fesm2015/mis-crystal-design-system-menu.mjs.map +1 -0
  165. package/fesm2015/mis-crystal-design-system-mobile-filter.mjs +225 -0
  166. package/fesm2015/mis-crystal-design-system-mobile-filter.mjs.map +1 -0
  167. package/fesm2015/mis-crystal-design-system-modal.mjs +184 -0
  168. package/fesm2015/mis-crystal-design-system-modal.mjs.map +1 -0
  169. package/fesm2015/mis-crystal-design-system-multi-select-dropdown.mjs +542 -0
  170. package/fesm2015/mis-crystal-design-system-multi-select-dropdown.mjs.map +1 -0
  171. package/fesm2015/mis-crystal-design-system-nested-multi-select-dropdown.mjs +552 -0
  172. package/fesm2015/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +1 -0
  173. package/fesm2015/mis-crystal-design-system-phone-input.mjs +151 -0
  174. package/fesm2015/mis-crystal-design-system-phone-input.mjs.map +1 -0
  175. package/fesm2015/mis-crystal-design-system-radio-button.mjs +89 -0
  176. package/fesm2015/mis-crystal-design-system-radio-button.mjs.map +1 -0
  177. package/fesm2015/mis-crystal-design-system-ske-loader.mjs +86 -0
  178. package/fesm2015/mis-crystal-design-system-ske-loader.mjs.map +1 -0
  179. package/fesm2015/mis-crystal-design-system-slider.mjs +88 -0
  180. package/fesm2015/mis-crystal-design-system-slider.mjs.map +1 -0
  181. package/fesm2015/mis-crystal-design-system-snackbar.mjs +175 -0
  182. package/fesm2015/mis-crystal-design-system-snackbar.mjs.map +1 -0
  183. package/fesm2015/mis-crystal-design-system-specificdatepicker.mjs +942 -0
  184. package/fesm2015/mis-crystal-design-system-specificdatepicker.mjs.map +1 -0
  185. package/fesm2015/mis-crystal-design-system-star-rating.mjs +145 -0
  186. package/fesm2015/mis-crystal-design-system-star-rating.mjs.map +1 -0
  187. package/fesm2015/mis-crystal-design-system-styles.mjs +4 -0
  188. package/fesm2015/mis-crystal-design-system-styles.mjs.map +1 -0
  189. package/fesm2015/mis-crystal-design-system-switch.mjs +88 -0
  190. package/fesm2015/mis-crystal-design-system-switch.mjs.map +1 -0
  191. package/fesm2015/mis-crystal-design-system-table.mjs +1017 -0
  192. package/fesm2015/mis-crystal-design-system-table.mjs.map +1 -0
  193. package/fesm2015/mis-crystal-design-system-timepicker.mjs +448 -0
  194. package/fesm2015/mis-crystal-design-system-timepicker.mjs.map +1 -0
  195. package/fesm2015/mis-crystal-design-system-timerangepicker.mjs +264 -0
  196. package/fesm2015/mis-crystal-design-system-timerangepicker.mjs.map +1 -0
  197. package/fesm2015/mis-crystal-design-system-toast.mjs +214 -0
  198. package/fesm2015/mis-crystal-design-system-toast.mjs.map +1 -0
  199. package/fesm2015/mis-crystal-design-system-tooltip.mjs +265 -0
  200. package/fesm2015/mis-crystal-design-system-tooltip.mjs.map +1 -0
  201. package/fesm2015/{mis-crystal-design-system-utils.js → mis-crystal-design-system-utils.mjs} +1 -1
  202. package/fesm2015/mis-crystal-design-system-utils.mjs.map +1 -0
  203. package/fesm2015/mis-crystal-design-system-virtual-scroll.mjs +259 -0
  204. package/fesm2015/mis-crystal-design-system-virtual-scroll.mjs.map +1 -0
  205. package/fesm2015/{mis-crystal-design-system-widgets.js → mis-crystal-design-system-widgets.mjs} +16 -8
  206. package/fesm2015/mis-crystal-design-system-widgets.mjs.map +1 -0
  207. package/fesm2015/{mis-crystal-design-system.js → mis-crystal-design-system.mjs} +1 -1
  208. package/fesm2015/mis-crystal-design-system.mjs.map +1 -0
  209. package/fesm2020/mis-crystal-design-system-action-list.mjs +398 -0
  210. package/fesm2020/mis-crystal-design-system-action-list.mjs.map +1 -0
  211. package/fesm2020/mis-crystal-design-system-analytics.mjs +85 -0
  212. package/fesm2020/mis-crystal-design-system-analytics.mjs.map +1 -0
  213. package/fesm2020/mis-crystal-design-system-async-search-dropdown.mjs +497 -0
  214. package/fesm2020/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -0
  215. package/fesm2020/mis-crystal-design-system-button.mjs +172 -0
  216. package/fesm2020/mis-crystal-design-system-button.mjs.map +1 -0
  217. package/fesm2020/mis-crystal-design-system-checkbox.mjs +150 -0
  218. package/fesm2020/mis-crystal-design-system-checkbox.mjs.map +1 -0
  219. package/fesm2020/mis-crystal-design-system-chip.mjs +108 -0
  220. package/fesm2020/mis-crystal-design-system-chip.mjs.map +1 -0
  221. package/fesm2020/mis-crystal-design-system-datepicker_v2.mjs +477 -0
  222. package/fesm2020/mis-crystal-design-system-datepicker_v2.mjs.map +1 -0
  223. package/fesm2020/mis-crystal-design-system-daterangepicker_v2.mjs +567 -0
  224. package/fesm2020/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -0
  225. package/{fesm2015/mis-crystal-design-system-drawer.js → fesm2020/mis-crystal-design-system-drawer.mjs} +55 -36
  226. package/fesm2020/mis-crystal-design-system-drawer.mjs.map +1 -0
  227. package/fesm2020/mis-crystal-design-system-dropdown.mjs +477 -0
  228. package/fesm2020/mis-crystal-design-system-dropdown.mjs.map +1 -0
  229. package/fesm2020/mis-crystal-design-system-dynamic-form.mjs +770 -0
  230. package/fesm2020/mis-crystal-design-system-dynamic-form.mjs.map +1 -0
  231. package/fesm2020/mis-crystal-design-system-fab.mjs +170 -0
  232. package/fesm2020/mis-crystal-design-system-fab.mjs.map +1 -0
  233. package/fesm2020/mis-crystal-design-system-input-stepper.mjs +103 -0
  234. package/fesm2020/mis-crystal-design-system-input-stepper.mjs.map +1 -0
  235. package/fesm2020/mis-crystal-design-system-input.mjs +145 -0
  236. package/fesm2020/mis-crystal-design-system-input.mjs.map +1 -0
  237. package/fesm2020/mis-crystal-design-system-loader.mjs +50 -0
  238. package/fesm2020/mis-crystal-design-system-loader.mjs.map +1 -0
  239. package/fesm2020/mis-crystal-design-system-menu.mjs +124 -0
  240. package/fesm2020/mis-crystal-design-system-menu.mjs.map +1 -0
  241. package/fesm2020/mis-crystal-design-system-mobile-filter.mjs +204 -0
  242. package/fesm2020/mis-crystal-design-system-mobile-filter.mjs.map +1 -0
  243. package/fesm2020/mis-crystal-design-system-modal.mjs +172 -0
  244. package/fesm2020/mis-crystal-design-system-modal.mjs.map +1 -0
  245. package/fesm2020/mis-crystal-design-system-multi-select-dropdown.mjs +512 -0
  246. package/fesm2020/mis-crystal-design-system-multi-select-dropdown.mjs.map +1 -0
  247. package/fesm2020/mis-crystal-design-system-nested-multi-select-dropdown.mjs +539 -0
  248. package/fesm2020/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +1 -0
  249. package/fesm2020/mis-crystal-design-system-phone-input.mjs +144 -0
  250. package/fesm2020/mis-crystal-design-system-phone-input.mjs.map +1 -0
  251. package/fesm2020/mis-crystal-design-system-radio-button.mjs +82 -0
  252. package/fesm2020/mis-crystal-design-system-radio-button.mjs.map +1 -0
  253. package/fesm2020/mis-crystal-design-system-ske-loader.mjs +76 -0
  254. package/fesm2020/mis-crystal-design-system-ske-loader.mjs.map +1 -0
  255. package/fesm2020/mis-crystal-design-system-slider.mjs +79 -0
  256. package/fesm2020/mis-crystal-design-system-slider.mjs.map +1 -0
  257. package/fesm2020/mis-crystal-design-system-snackbar.mjs +155 -0
  258. package/fesm2020/mis-crystal-design-system-snackbar.mjs.map +1 -0
  259. package/fesm2020/mis-crystal-design-system-specificdatepicker.mjs +884 -0
  260. package/fesm2020/mis-crystal-design-system-specificdatepicker.mjs.map +1 -0
  261. package/fesm2020/mis-crystal-design-system-star-rating.mjs +135 -0
  262. package/fesm2020/mis-crystal-design-system-star-rating.mjs.map +1 -0
  263. package/fesm2020/mis-crystal-design-system-styles.mjs +4 -0
  264. package/fesm2020/mis-crystal-design-system-styles.mjs.map +1 -0
  265. package/fesm2020/mis-crystal-design-system-switch.mjs +81 -0
  266. package/fesm2020/mis-crystal-design-system-switch.mjs.map +1 -0
  267. package/fesm2020/mis-crystal-design-system-table.mjs +895 -0
  268. package/fesm2020/mis-crystal-design-system-table.mjs.map +1 -0
  269. package/fesm2020/mis-crystal-design-system-timepicker.mjs +425 -0
  270. package/fesm2020/mis-crystal-design-system-timepicker.mjs.map +1 -0
  271. package/{fesm2015/mis-crystal-design-system-timerangepicker.js → fesm2020/mis-crystal-design-system-timerangepicker.mjs} +73 -36
  272. package/fesm2020/mis-crystal-design-system-timerangepicker.mjs.map +1 -0
  273. package/fesm2020/mis-crystal-design-system-toast.mjs +198 -0
  274. package/fesm2020/mis-crystal-design-system-toast.mjs.map +1 -0
  275. package/fesm2020/mis-crystal-design-system-tooltip.mjs +238 -0
  276. package/fesm2020/mis-crystal-design-system-tooltip.mjs.map +1 -0
  277. package/fesm2020/mis-crystal-design-system-utils.mjs +24 -0
  278. package/fesm2020/mis-crystal-design-system-utils.mjs.map +1 -0
  279. package/fesm2020/mis-crystal-design-system-virtual-scroll.mjs +229 -0
  280. package/fesm2020/mis-crystal-design-system-virtual-scroll.mjs.map +1 -0
  281. package/fesm2020/mis-crystal-design-system-widgets.mjs +129 -0
  282. package/fesm2020/mis-crystal-design-system-widgets.mjs.map +1 -0
  283. package/fesm2020/mis-crystal-design-system.mjs +24 -0
  284. package/fesm2020/mis-crystal-design-system.mjs.map +1 -0
  285. package/input/directives/input/input.directive.d.ts +3 -0
  286. package/input/mis-input.component.d.ts +3 -0
  287. package/input/mis-input.module.d.ts +8 -0
  288. package/input-stepper/input-stepper/input-stepper.component.d.ts +3 -0
  289. package/input-stepper/input-stepper.module.d.ts +6 -0
  290. package/loader/loader.component.d.ts +3 -0
  291. package/loader/loader.module.d.ts +6 -0
  292. package/menu/menu-close.directive.d.ts +3 -0
  293. package/menu/menu.directive.d.ts +3 -0
  294. package/menu/menu.module.d.ts +9 -1
  295. package/mobile-filter/mobile-filter.component.d.ts +3 -0
  296. package/mobile-filter/mobile-filter.module.d.ts +8 -0
  297. package/modal/modal.module.d.ts +8 -0
  298. package/modal/modal.service.d.ts +3 -0
  299. package/modal/module-wrapper/module-wrapper.component.d.ts +3 -0
  300. package/multi-select-dropdown/multi-select-dropdown.component.d.ts +4 -0
  301. package/multi-select-dropdown/multi-select-dropdown.module.d.ts +10 -0
  302. package/nested-multi-select-dropdown/nested-multi-select-dropdown.component.d.ts +3 -0
  303. package/nested-multi-select-dropdown/nested-multi-select-dropdown.module.d.ts +10 -0
  304. package/package.json +320 -9
  305. package/phone-input/phone-input.component.d.ts +5 -2
  306. package/phone-input/phone-input.module.d.ts +10 -0
  307. package/radio-button/radio-button.component.d.ts +3 -0
  308. package/radio-button/radio-button.module.d.ts +7 -0
  309. package/ske-loader/ske-loader.component.d.ts +3 -0
  310. package/ske-loader/ske-loader.module.d.ts +6 -0
  311. package/slider/slider.component.d.ts +6 -3
  312. package/slider/slider.module.d.ts +7 -0
  313. package/snackbar/snackbar/snackbar.component.d.ts +3 -0
  314. package/snackbar/snackbar.module.d.ts +6 -0
  315. package/snackbar/snackbar.service.d.ts +5 -2
  316. package/specificdatepicker/public_api.d.ts +1 -0
  317. package/specificdatepicker/specificdatepicker.module.d.ts +12 -0
  318. package/specificdatepicker/tz-sdp-container/tz-sdp-container.component.d.ts +5 -2
  319. package/specificdatepicker/tz-specificdatepicker.directive.d.ts +3 -0
  320. package/star-rating/star-rating.component.d.ts +3 -0
  321. package/star-rating/star-rating.module.d.ts +6 -0
  322. package/switch/switch.component.d.ts +3 -0
  323. package/switch/switch.module.d.ts +7 -0
  324. package/table/custom-table-cell.directive.d.ts +3 -0
  325. package/table/filter/filter.component.d.ts +3 -0
  326. package/table/public_api.d.ts +1 -0
  327. package/table/sub-table/sub-table.component.d.ts +3 -0
  328. package/table/table.component.d.ts +3 -0
  329. package/table/table.module.d.ts +11 -0
  330. package/timepicker/timepicker.component.d.ts +3 -0
  331. package/timepicker/timepicker.directive.d.ts +3 -0
  332. package/timepicker/timepicker.module.d.ts +10 -0
  333. package/timerangepicker/timerangepicker.component.d.ts +3 -0
  334. package/timerangepicker/timerangepicker.module.d.ts +8 -0
  335. package/toast/toast.component.d.ts +3 -0
  336. package/toast/toast.data.service.d.ts +3 -0
  337. package/toast/toast.module.d.ts +7 -0
  338. package/toast/toast.service.d.ts +3 -0
  339. package/tooltip/tooltip-container/tooltip.component.d.ts +3 -0
  340. package/tooltip/tooltip.directive.d.ts +3 -0
  341. package/tooltip/tooltip.module.d.ts +8 -0
  342. package/virtual-scroll/virtual-scroll.component.d.ts +3 -0
  343. package/virtual-scroll/virtual-scroll.module.d.ts +8 -0
  344. package/widgets/services/widget.service.d.ts +3 -0
  345. package/widgets/widgets.module.d.ts +5 -0
  346. package/action-list/mis-crystal-design-system-action-list.d.ts +0 -4
  347. package/action-list/mis-crystal-design-system-action-list.metadata.json +0 -1
  348. package/action-list/package.json +0 -11
  349. package/analytics/mis-crystal-design-system-analytics.d.ts +0 -4
  350. package/analytics/mis-crystal-design-system-analytics.metadata.json +0 -1
  351. package/analytics/package.json +0 -11
  352. package/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.d.ts +0 -4
  353. package/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.metadata.json +0 -1
  354. package/async-search-dropdown/package.json +0 -11
  355. package/bundles/mis-crystal-design-system-action-list.umd.js +0 -509
  356. package/bundles/mis-crystal-design-system-action-list.umd.js.map +0 -1
  357. package/bundles/mis-crystal-design-system-action-list.umd.min.js +0 -16
  358. package/bundles/mis-crystal-design-system-action-list.umd.min.js.map +0 -1
  359. package/bundles/mis-crystal-design-system-analytics.umd.js +0 -422
  360. package/bundles/mis-crystal-design-system-analytics.umd.js.map +0 -1
  361. package/bundles/mis-crystal-design-system-analytics.umd.min.js +0 -16
  362. package/bundles/mis-crystal-design-system-analytics.umd.min.js.map +0 -1
  363. package/bundles/mis-crystal-design-system-async-search-dropdown.umd.js +0 -279
  364. package/bundles/mis-crystal-design-system-async-search-dropdown.umd.js.map +0 -1
  365. package/bundles/mis-crystal-design-system-async-search-dropdown.umd.min.js +0 -2
  366. package/bundles/mis-crystal-design-system-async-search-dropdown.umd.min.js.map +0 -1
  367. package/bundles/mis-crystal-design-system-button.umd.js +0 -134
  368. package/bundles/mis-crystal-design-system-button.umd.js.map +0 -1
  369. package/bundles/mis-crystal-design-system-button.umd.min.js +0 -2
  370. package/bundles/mis-crystal-design-system-button.umd.min.js.map +0 -1
  371. package/bundles/mis-crystal-design-system-checkbox.umd.js +0 -127
  372. package/bundles/mis-crystal-design-system-checkbox.umd.js.map +0 -1
  373. package/bundles/mis-crystal-design-system-checkbox.umd.min.js +0 -2
  374. package/bundles/mis-crystal-design-system-checkbox.umd.min.js.map +0 -1
  375. package/bundles/mis-crystal-design-system-chip.umd.js +0 -64
  376. package/bundles/mis-crystal-design-system-chip.umd.js.map +0 -1
  377. package/bundles/mis-crystal-design-system-chip.umd.min.js +0 -2
  378. package/bundles/mis-crystal-design-system-chip.umd.min.js.map +0 -1
  379. package/bundles/mis-crystal-design-system-datepicker_v2.umd.js +0 -706
  380. package/bundles/mis-crystal-design-system-datepicker_v2.umd.js.map +0 -1
  381. package/bundles/mis-crystal-design-system-datepicker_v2.umd.min.js +0 -16
  382. package/bundles/mis-crystal-design-system-datepicker_v2.umd.min.js.map +0 -1
  383. package/bundles/mis-crystal-design-system-daterangepicker_v2.umd.js +0 -464
  384. package/bundles/mis-crystal-design-system-daterangepicker_v2.umd.js.map +0 -1
  385. package/bundles/mis-crystal-design-system-daterangepicker_v2.umd.min.js +0 -2
  386. package/bundles/mis-crystal-design-system-daterangepicker_v2.umd.min.js.map +0 -1
  387. package/bundles/mis-crystal-design-system-drawer.umd.js +0 -169
  388. package/bundles/mis-crystal-design-system-drawer.umd.js.map +0 -1
  389. package/bundles/mis-crystal-design-system-drawer.umd.min.js +0 -2
  390. package/bundles/mis-crystal-design-system-drawer.umd.min.js.map +0 -1
  391. package/bundles/mis-crystal-design-system-dropdown.umd.js +0 -558
  392. package/bundles/mis-crystal-design-system-dropdown.umd.js.map +0 -1
  393. package/bundles/mis-crystal-design-system-dropdown.umd.min.js +0 -16
  394. package/bundles/mis-crystal-design-system-dropdown.umd.min.js.map +0 -1
  395. package/bundles/mis-crystal-design-system-dynamic-form.umd.js +0 -740
  396. package/bundles/mis-crystal-design-system-dynamic-form.umd.js.map +0 -1
  397. package/bundles/mis-crystal-design-system-dynamic-form.umd.min.js +0 -16
  398. package/bundles/mis-crystal-design-system-dynamic-form.umd.min.js.map +0 -1
  399. package/bundles/mis-crystal-design-system-fab.umd.js +0 -95
  400. package/bundles/mis-crystal-design-system-fab.umd.js.map +0 -1
  401. package/bundles/mis-crystal-design-system-fab.umd.min.js +0 -2
  402. package/bundles/mis-crystal-design-system-fab.umd.min.js.map +0 -1
  403. package/bundles/mis-crystal-design-system-input-stepper.umd.js +0 -85
  404. package/bundles/mis-crystal-design-system-input-stepper.umd.js.map +0 -1
  405. package/bundles/mis-crystal-design-system-input-stepper.umd.min.js +0 -2
  406. package/bundles/mis-crystal-design-system-input-stepper.umd.min.js.map +0 -1
  407. package/bundles/mis-crystal-design-system-input.umd.js +0 -116
  408. package/bundles/mis-crystal-design-system-input.umd.js.map +0 -1
  409. package/bundles/mis-crystal-design-system-input.umd.min.js +0 -2
  410. package/bundles/mis-crystal-design-system-input.umd.min.js.map +0 -1
  411. package/bundles/mis-crystal-design-system-loader.umd.js +0 -53
  412. package/bundles/mis-crystal-design-system-loader.umd.js.map +0 -1
  413. package/bundles/mis-crystal-design-system-loader.umd.min.js +0 -2
  414. package/bundles/mis-crystal-design-system-loader.umd.min.js.map +0 -1
  415. package/bundles/mis-crystal-design-system-menu.umd.js +0 -119
  416. package/bundles/mis-crystal-design-system-menu.umd.js.map +0 -1
  417. package/bundles/mis-crystal-design-system-menu.umd.min.js +0 -2
  418. package/bundles/mis-crystal-design-system-menu.umd.min.js.map +0 -1
  419. package/bundles/mis-crystal-design-system-mobile-filter.umd.js +0 -89
  420. package/bundles/mis-crystal-design-system-mobile-filter.umd.js.map +0 -1
  421. package/bundles/mis-crystal-design-system-mobile-filter.umd.min.js +0 -2
  422. package/bundles/mis-crystal-design-system-mobile-filter.umd.min.js.map +0 -1
  423. package/bundles/mis-crystal-design-system-modal.umd.js +0 -161
  424. package/bundles/mis-crystal-design-system-modal.umd.js.map +0 -1
  425. package/bundles/mis-crystal-design-system-modal.umd.min.js +0 -2
  426. package/bundles/mis-crystal-design-system-modal.umd.min.js.map +0 -1
  427. package/bundles/mis-crystal-design-system-multi-select-dropdown.umd.js +0 -623
  428. package/bundles/mis-crystal-design-system-multi-select-dropdown.umd.js.map +0 -1
  429. package/bundles/mis-crystal-design-system-multi-select-dropdown.umd.min.js +0 -16
  430. package/bundles/mis-crystal-design-system-multi-select-dropdown.umd.min.js.map +0 -1
  431. package/bundles/mis-crystal-design-system-nested-multi-select-dropdown.umd.js +0 -636
  432. package/bundles/mis-crystal-design-system-nested-multi-select-dropdown.umd.js.map +0 -1
  433. package/bundles/mis-crystal-design-system-nested-multi-select-dropdown.umd.min.js +0 -16
  434. package/bundles/mis-crystal-design-system-nested-multi-select-dropdown.umd.min.js.map +0 -1
  435. package/bundles/mis-crystal-design-system-phone-input.umd.js +0 -117
  436. package/bundles/mis-crystal-design-system-phone-input.umd.js.map +0 -1
  437. package/bundles/mis-crystal-design-system-phone-input.umd.min.js +0 -2
  438. package/bundles/mis-crystal-design-system-phone-input.umd.min.js.map +0 -1
  439. package/bundles/mis-crystal-design-system-radio-button.umd.js +0 -77
  440. package/bundles/mis-crystal-design-system-radio-button.umd.js.map +0 -1
  441. package/bundles/mis-crystal-design-system-radio-button.umd.min.js +0 -2
  442. package/bundles/mis-crystal-design-system-radio-button.umd.min.js.map +0 -1
  443. package/bundles/mis-crystal-design-system-ske-loader.umd.js +0 -65
  444. package/bundles/mis-crystal-design-system-ske-loader.umd.js.map +0 -1
  445. package/bundles/mis-crystal-design-system-ske-loader.umd.min.js +0 -2
  446. package/bundles/mis-crystal-design-system-ske-loader.umd.min.js.map +0 -1
  447. package/bundles/mis-crystal-design-system-slider.umd.js +0 -73
  448. package/bundles/mis-crystal-design-system-slider.umd.js.map +0 -1
  449. package/bundles/mis-crystal-design-system-slider.umd.min.js +0 -2
  450. package/bundles/mis-crystal-design-system-slider.umd.min.js.map +0 -1
  451. package/bundles/mis-crystal-design-system-snackbar.umd.js +0 -114
  452. package/bundles/mis-crystal-design-system-snackbar.umd.js.map +0 -1
  453. package/bundles/mis-crystal-design-system-snackbar.umd.min.js +0 -2
  454. package/bundles/mis-crystal-design-system-snackbar.umd.min.js.map +0 -1
  455. package/bundles/mis-crystal-design-system-specificdatepicker.umd.js +0 -977
  456. package/bundles/mis-crystal-design-system-specificdatepicker.umd.js.map +0 -1
  457. package/bundles/mis-crystal-design-system-specificdatepicker.umd.min.js +0 -16
  458. package/bundles/mis-crystal-design-system-specificdatepicker.umd.min.js.map +0 -1
  459. package/bundles/mis-crystal-design-system-star-rating.umd.js +0 -112
  460. package/bundles/mis-crystal-design-system-star-rating.umd.js.map +0 -1
  461. package/bundles/mis-crystal-design-system-star-rating.umd.min.js +0 -2
  462. package/bundles/mis-crystal-design-system-star-rating.umd.min.js.map +0 -1
  463. package/bundles/mis-crystal-design-system-styles.umd.js +0 -11
  464. package/bundles/mis-crystal-design-system-styles.umd.js.map +0 -1
  465. package/bundles/mis-crystal-design-system-styles.umd.min.js +0 -2
  466. package/bundles/mis-crystal-design-system-styles.umd.min.js.map +0 -1
  467. package/bundles/mis-crystal-design-system-switch.umd.js +0 -79
  468. package/bundles/mis-crystal-design-system-switch.umd.js.map +0 -1
  469. package/bundles/mis-crystal-design-system-switch.umd.min.js +0 -2
  470. package/bundles/mis-crystal-design-system-switch.umd.min.js.map +0 -1
  471. package/bundles/mis-crystal-design-system-table.umd.js +0 -784
  472. package/bundles/mis-crystal-design-system-table.umd.js.map +0 -1
  473. package/bundles/mis-crystal-design-system-table.umd.min.js +0 -16
  474. package/bundles/mis-crystal-design-system-table.umd.min.js.map +0 -1
  475. package/bundles/mis-crystal-design-system-timepicker.umd.js +0 -688
  476. package/bundles/mis-crystal-design-system-timepicker.umd.js.map +0 -1
  477. package/bundles/mis-crystal-design-system-timepicker.umd.min.js +0 -16
  478. package/bundles/mis-crystal-design-system-timepicker.umd.min.js.map +0 -1
  479. package/bundles/mis-crystal-design-system-timerangepicker.umd.js +0 -248
  480. package/bundles/mis-crystal-design-system-timerangepicker.umd.js.map +0 -1
  481. package/bundles/mis-crystal-design-system-timerangepicker.umd.min.js +0 -2
  482. package/bundles/mis-crystal-design-system-timerangepicker.umd.min.js.map +0 -1
  483. package/bundles/mis-crystal-design-system-toast.umd.js +0 -202
  484. package/bundles/mis-crystal-design-system-toast.umd.js.map +0 -1
  485. package/bundles/mis-crystal-design-system-toast.umd.min.js +0 -2
  486. package/bundles/mis-crystal-design-system-toast.umd.min.js.map +0 -1
  487. package/bundles/mis-crystal-design-system-tooltip.umd.js +0 -214
  488. package/bundles/mis-crystal-design-system-tooltip.umd.js.map +0 -1
  489. package/bundles/mis-crystal-design-system-tooltip.umd.min.js +0 -2
  490. package/bundles/mis-crystal-design-system-tooltip.umd.min.js.map +0 -1
  491. package/bundles/mis-crystal-design-system-utils.umd.js +0 -33
  492. package/bundles/mis-crystal-design-system-utils.umd.js.map +0 -1
  493. package/bundles/mis-crystal-design-system-utils.umd.min.js +0 -2
  494. package/bundles/mis-crystal-design-system-utils.umd.min.js.map +0 -1
  495. package/bundles/mis-crystal-design-system-virtual-scroll.umd.js +0 -471
  496. package/bundles/mis-crystal-design-system-virtual-scroll.umd.js.map +0 -1
  497. package/bundles/mis-crystal-design-system-virtual-scroll.umd.min.js +0 -16
  498. package/bundles/mis-crystal-design-system-virtual-scroll.umd.min.js.map +0 -1
  499. package/bundles/mis-crystal-design-system-widgets.umd.js +0 -478
  500. package/bundles/mis-crystal-design-system-widgets.umd.js.map +0 -1
  501. package/bundles/mis-crystal-design-system-widgets.umd.min.js +0 -16
  502. package/bundles/mis-crystal-design-system-widgets.umd.min.js.map +0 -1
  503. package/bundles/mis-crystal-design-system.umd.js +0 -31
  504. package/bundles/mis-crystal-design-system.umd.js.map +0 -1
  505. package/bundles/mis-crystal-design-system.umd.min.js +0 -2
  506. package/bundles/mis-crystal-design-system.umd.min.js.map +0 -1
  507. package/button/mis-crystal-design-system-button.d.ts +0 -4
  508. package/button/mis-crystal-design-system-button.metadata.json +0 -1
  509. package/button/package.json +0 -11
  510. package/checkbox/mis-crystal-design-system-checkbox.d.ts +0 -4
  511. package/checkbox/mis-crystal-design-system-checkbox.metadata.json +0 -1
  512. package/checkbox/package.json +0 -11
  513. package/chip/mis-crystal-design-system-chip.d.ts +0 -4
  514. package/chip/mis-crystal-design-system-chip.metadata.json +0 -1
  515. package/chip/package.json +0 -11
  516. package/datepicker_v2/mis-crystal-design-system-datepicker_v2.d.ts +0 -7
  517. package/datepicker_v2/mis-crystal-design-system-datepicker_v2.metadata.json +0 -1
  518. package/datepicker_v2/package.json +0 -11
  519. package/daterangepicker_v2/mis-crystal-design-system-daterangepicker_v2.d.ts +0 -7
  520. package/daterangepicker_v2/mis-crystal-design-system-daterangepicker_v2.metadata.json +0 -1
  521. package/daterangepicker_v2/package.json +0 -11
  522. package/drawer/mis-crystal-design-system-drawer.d.ts +0 -5
  523. package/drawer/mis-crystal-design-system-drawer.metadata.json +0 -1
  524. package/drawer/package.json +0 -11
  525. package/dropdown/mis-crystal-design-system-dropdown.d.ts +0 -5
  526. package/dropdown/mis-crystal-design-system-dropdown.metadata.json +0 -1
  527. package/dropdown/package.json +0 -11
  528. package/dynamic-form/mis-crystal-design-system-dynamic-form.d.ts +0 -4
  529. package/dynamic-form/mis-crystal-design-system-dynamic-form.metadata.json +0 -1
  530. package/dynamic-form/package.json +0 -11
  531. package/esm2015/action-list/action-list.component.js +0 -161
  532. package/esm2015/action-list/action-list.module.js +0 -19
  533. package/esm2015/analytics/analytics.module.js +0 -14
  534. package/esm2015/analytics/analytics.service.js +0 -62
  535. package/esm2015/async-search-dropdown/async-dropdown.component.js +0 -243
  536. package/esm2015/async-search-dropdown/async-dropdown.module.js +0 -16
  537. package/esm2015/button/button.component.js +0 -43
  538. package/esm2015/button/button.directive.js +0 -57
  539. package/esm2015/button/button.module.js +0 -17
  540. package/esm2015/checkbox/checkbox.component.js +0 -79
  541. package/esm2015/checkbox/checkbox.module.js +0 -17
  542. package/esm2015/chip/chip.component.js +0 -31
  543. package/esm2015/chip/chip.module.js +0 -16
  544. package/esm2015/datepicker_v2/datepicker.module.js +0 -18
  545. package/esm2015/datepicker_v2/mis-crystal-design-system-datepicker_v2.js +0 -7
  546. package/esm2015/datepicker_v2/public_api.js +0 -3
  547. package/esm2015/datepicker_v2/tz-datepicker.directive.js +0 -144
  548. package/esm2015/datepicker_v2/tz-dp-container/tz-dp-container.component.js +0 -149
  549. package/esm2015/daterangepicker_v2/daterangepicker.module.js +0 -18
  550. package/esm2015/daterangepicker_v2/mis-crystal-design-system-daterangepicker_v2.js +0 -7
  551. package/esm2015/daterangepicker_v2/public_api.js +0 -3
  552. package/esm2015/daterangepicker_v2/tz-daterangepicker.directive.js +0 -123
  553. package/esm2015/daterangepicker_v2/tz-drp-container/tz-drp-container.component.js +0 -226
  554. package/esm2015/drawer/drawer-body/drawer-body.component.js +0 -41
  555. package/esm2015/drawer/drawer.module.js +0 -28
  556. package/esm2015/drawer/drawer.service.js +0 -59
  557. package/esm2015/drawer/mis-crystal-design-system-drawer.js +0 -6
  558. package/esm2015/dropdown/calculate-container-height.directive.js +0 -40
  559. package/esm2015/dropdown/dropdown.component.js +0 -169
  560. package/esm2015/dropdown/dropdown.module.js +0 -21
  561. package/esm2015/dropdown/mis-crystal-design-system-dropdown.js +0 -6
  562. package/esm2015/dynamic-form/dynamic-form.component.js +0 -308
  563. package/esm2015/dynamic-form/dynamic-form.module.js +0 -34
  564. package/esm2015/fab/fab.component.js +0 -63
  565. package/esm2015/fab/fab.module.js +0 -16
  566. package/esm2015/input/directives/input/input.directive.js +0 -38
  567. package/esm2015/input/mis-input.component.js +0 -45
  568. package/esm2015/input/mis-input.module.js +0 -15
  569. package/esm2015/input-stepper/input-stepper/input-stepper.component.js +0 -49
  570. package/esm2015/input-stepper/input-stepper.module.js +0 -19
  571. package/esm2015/loader/loader.component.js +0 -20
  572. package/esm2015/loader/loader.module.js +0 -16
  573. package/esm2015/menu/menu-close.directive.js +0 -18
  574. package/esm2015/menu/menu.directive.js +0 -70
  575. package/esm2015/menu/menu.module.js +0 -17
  576. package/esm2015/mobile-filter/mobile-filter.component.js +0 -54
  577. package/esm2015/mobile-filter/mobile-filter.module.js +0 -15
  578. package/esm2015/modal/mis-crystal-design-system-modal.js +0 -6
  579. package/esm2015/modal/modal.module.js +0 -28
  580. package/esm2015/modal/modal.service.js +0 -72
  581. package/esm2015/modal/module-wrapper/module-wrapper.component.js +0 -33
  582. package/esm2015/multi-select-dropdown/multi-select-dropdown.component.js +0 -269
  583. package/esm2015/multi-select-dropdown/multi-select-dropdown.module.js +0 -20
  584. package/esm2015/nested-multi-select-dropdown/nested-multi-select-dropdown.component.js +0 -265
  585. package/esm2015/nested-multi-select-dropdown/nested-multi-select-dropdown.module.js +0 -20
  586. package/esm2015/phone-input/phone-input.component.js +0 -85
  587. package/esm2015/phone-input/phone-input.module.js +0 -21
  588. package/esm2015/radio-button/radio-button.component.js +0 -45
  589. package/esm2015/radio-button/radio-button.module.js +0 -17
  590. package/esm2015/ske-loader/ske-loader.component.js +0 -31
  591. package/esm2015/ske-loader/ske-loader.module.js +0 -13
  592. package/esm2015/slider/slider.component.js +0 -38
  593. package/esm2015/slider/slider.module.js +0 -20
  594. package/esm2015/snackbar/snackbar/snackbar.component.js +0 -22
  595. package/esm2015/snackbar/snackbar.module.js +0 -31
  596. package/esm2015/snackbar/snackbar.service.js +0 -48
  597. package/esm2015/specificdatepicker/mis-crystal-design-system-specificdatepicker.js +0 -7
  598. package/esm2015/specificdatepicker/public_api.js +0 -3
  599. package/esm2015/specificdatepicker/specificdatepicker.module.js +0 -20
  600. package/esm2015/specificdatepicker/tz-sdp-container/tz-sdp-container.component.js +0 -356
  601. package/esm2015/specificdatepicker/tz-specificdatepicker.directive.js +0 -179
  602. package/esm2015/star-rating/star-rating.component.js +0 -78
  603. package/esm2015/star-rating/star-rating.module.js +0 -13
  604. package/esm2015/switch/switch.component.js +0 -39
  605. package/esm2015/switch/switch.module.js +0 -17
  606. package/esm2015/table/custom-table-cell.directive.js +0 -42
  607. package/esm2015/table/filter/filter.component.js +0 -75
  608. package/esm2015/table/mis-crystal-design-system-table.js +0 -6
  609. package/esm2015/table/public_api.js +0 -5
  610. package/esm2015/table/sub-table/sub-table.component.js +0 -69
  611. package/esm2015/table/table.component.js +0 -200
  612. package/esm2015/table/table.module.js +0 -21
  613. package/esm2015/timepicker/mis-crystal-design-system-timepicker.js +0 -6
  614. package/esm2015/timepicker/timepicker.component.js +0 -248
  615. package/esm2015/timepicker/timepicker.directive.js +0 -62
  616. package/esm2015/timepicker/timepicker.module.js +0 -20
  617. package/esm2015/timerangepicker/timerangepicker.component.js +0 -194
  618. package/esm2015/timerangepicker/timerangepicker.module.js +0 -18
  619. package/esm2015/toast/toast.component.js +0 -28
  620. package/esm2015/toast/toast.module.js +0 -28
  621. package/esm2015/toast/toast.service.js +0 -96
  622. package/esm2015/tooltip/tooltip-container/tooltip.component.js +0 -35
  623. package/esm2015/tooltip/tooltip.directive.js +0 -128
  624. package/esm2015/tooltip/tooltip.module.js +0 -19
  625. package/esm2015/virtual-scroll/virtual-scroll.component.js +0 -111
  626. package/esm2015/virtual-scroll/virtual-scroll.module.js +0 -24
  627. package/esm2015/widgets/classes/widget-group.js +0 -32
  628. package/esm2015/widgets/services/widget.service.js +0 -16
  629. package/esm2015/widgets/widgets.module.js +0 -12
  630. package/fab/mis-crystal-design-system-fab.d.ts +0 -4
  631. package/fab/mis-crystal-design-system-fab.metadata.json +0 -1
  632. package/fab/package.json +0 -11
  633. package/fesm2015/mis-crystal-design-system-action-list.js +0 -184
  634. package/fesm2015/mis-crystal-design-system-action-list.js.map +0 -1
  635. package/fesm2015/mis-crystal-design-system-analytics.js.map +0 -1
  636. package/fesm2015/mis-crystal-design-system-async-search-dropdown.js +0 -262
  637. package/fesm2015/mis-crystal-design-system-async-search-dropdown.js.map +0 -1
  638. package/fesm2015/mis-crystal-design-system-button.js +0 -120
  639. package/fesm2015/mis-crystal-design-system-button.js.map +0 -1
  640. package/fesm2015/mis-crystal-design-system-checkbox.js +0 -100
  641. package/fesm2015/mis-crystal-design-system-checkbox.js.map +0 -1
  642. package/fesm2015/mis-crystal-design-system-chip.js +0 -52
  643. package/fesm2015/mis-crystal-design-system-chip.js.map +0 -1
  644. package/fesm2015/mis-crystal-design-system-datepicker_v2.js +0 -357
  645. package/fesm2015/mis-crystal-design-system-datepicker_v2.js.map +0 -1
  646. package/fesm2015/mis-crystal-design-system-daterangepicker_v2.js +0 -413
  647. package/fesm2015/mis-crystal-design-system-daterangepicker_v2.js.map +0 -1
  648. package/fesm2015/mis-crystal-design-system-drawer.js.map +0 -1
  649. package/fesm2015/mis-crystal-design-system-dropdown.js +0 -232
  650. package/fesm2015/mis-crystal-design-system-dropdown.js.map +0 -1
  651. package/fesm2015/mis-crystal-design-system-dynamic-form.js +0 -346
  652. package/fesm2015/mis-crystal-design-system-dynamic-form.js.map +0 -1
  653. package/fesm2015/mis-crystal-design-system-fab.js +0 -84
  654. package/fesm2015/mis-crystal-design-system-fab.js.map +0 -1
  655. package/fesm2015/mis-crystal-design-system-input-stepper.js +0 -73
  656. package/fesm2015/mis-crystal-design-system-input-stepper.js.map +0 -1
  657. package/fesm2015/mis-crystal-design-system-input.js +0 -99
  658. package/fesm2015/mis-crystal-design-system-input.js.map +0 -1
  659. package/fesm2015/mis-crystal-design-system-loader.js +0 -41
  660. package/fesm2015/mis-crystal-design-system-loader.js.map +0 -1
  661. package/fesm2015/mis-crystal-design-system-menu.js +0 -106
  662. package/fesm2015/mis-crystal-design-system-menu.js.map +0 -1
  663. package/fesm2015/mis-crystal-design-system-mobile-filter.js +0 -74
  664. package/fesm2015/mis-crystal-design-system-mobile-filter.js.map +0 -1
  665. package/fesm2015/mis-crystal-design-system-modal.js +0 -147
  666. package/fesm2015/mis-crystal-design-system-modal.js.map +0 -1
  667. package/fesm2015/mis-crystal-design-system-multi-select-dropdown.js +0 -293
  668. package/fesm2015/mis-crystal-design-system-multi-select-dropdown.js.map +0 -1
  669. package/fesm2015/mis-crystal-design-system-nested-multi-select-dropdown.js +0 -289
  670. package/fesm2015/mis-crystal-design-system-nested-multi-select-dropdown.js.map +0 -1
  671. package/fesm2015/mis-crystal-design-system-phone-input.js +0 -109
  672. package/fesm2015/mis-crystal-design-system-phone-input.js.map +0 -1
  673. package/fesm2015/mis-crystal-design-system-radio-button.js +0 -66
  674. package/fesm2015/mis-crystal-design-system-radio-button.js.map +0 -1
  675. package/fesm2015/mis-crystal-design-system-ske-loader.js +0 -49
  676. package/fesm2015/mis-crystal-design-system-ske-loader.js.map +0 -1
  677. package/fesm2015/mis-crystal-design-system-slider.js +0 -62
  678. package/fesm2015/mis-crystal-design-system-slider.js.map +0 -1
  679. package/fesm2015/mis-crystal-design-system-snackbar.js +0 -101
  680. package/fesm2015/mis-crystal-design-system-snackbar.js.map +0 -1
  681. package/fesm2015/mis-crystal-design-system-specificdatepicker.js +0 -599
  682. package/fesm2015/mis-crystal-design-system-specificdatepicker.js.map +0 -1
  683. package/fesm2015/mis-crystal-design-system-star-rating.js +0 -96
  684. package/fesm2015/mis-crystal-design-system-star-rating.js.map +0 -1
  685. package/fesm2015/mis-crystal-design-system-styles.js +0 -4
  686. package/fesm2015/mis-crystal-design-system-styles.js.map +0 -1
  687. package/fesm2015/mis-crystal-design-system-switch.js +0 -60
  688. package/fesm2015/mis-crystal-design-system-switch.js.map +0 -1
  689. package/fesm2015/mis-crystal-design-system-table.js +0 -406
  690. package/fesm2015/mis-crystal-design-system-table.js.map +0 -1
  691. package/fesm2015/mis-crystal-design-system-timepicker.js +0 -330
  692. package/fesm2015/mis-crystal-design-system-timepicker.js.map +0 -1
  693. package/fesm2015/mis-crystal-design-system-timerangepicker.js.map +0 -1
  694. package/fesm2015/mis-crystal-design-system-toast.js +0 -174
  695. package/fesm2015/mis-crystal-design-system-toast.js.map +0 -1
  696. package/fesm2015/mis-crystal-design-system-tooltip.js +0 -183
  697. package/fesm2015/mis-crystal-design-system-tooltip.js.map +0 -1
  698. package/fesm2015/mis-crystal-design-system-utils.js.map +0 -1
  699. package/fesm2015/mis-crystal-design-system-virtual-scroll.js +0 -141
  700. package/fesm2015/mis-crystal-design-system-virtual-scroll.js.map +0 -1
  701. package/fesm2015/mis-crystal-design-system-widgets.js.map +0 -1
  702. package/fesm2015/mis-crystal-design-system.js.map +0 -1
  703. package/input/mis-crystal-design-system-input.d.ts +0 -4
  704. package/input/mis-crystal-design-system-input.metadata.json +0 -1
  705. package/input/package.json +0 -11
  706. package/input-stepper/mis-crystal-design-system-input-stepper.d.ts +0 -4
  707. package/input-stepper/mis-crystal-design-system-input-stepper.metadata.json +0 -1
  708. package/input-stepper/package.json +0 -11
  709. package/loader/mis-crystal-design-system-loader.d.ts +0 -4
  710. package/loader/mis-crystal-design-system-loader.metadata.json +0 -1
  711. package/loader/package.json +0 -11
  712. package/menu/mis-crystal-design-system-menu.d.ts +0 -4
  713. package/menu/mis-crystal-design-system-menu.metadata.json +0 -1
  714. package/menu/package.json +0 -11
  715. package/mis-crystal-design-system.d.ts +0 -4
  716. package/mis-crystal-design-system.metadata.json +0 -1
  717. package/mobile-filter/mis-crystal-design-system-mobile-filter.d.ts +0 -4
  718. package/mobile-filter/mis-crystal-design-system-mobile-filter.metadata.json +0 -1
  719. package/mobile-filter/package.json +0 -11
  720. package/modal/mis-crystal-design-system-modal.d.ts +0 -5
  721. package/modal/mis-crystal-design-system-modal.metadata.json +0 -1
  722. package/modal/package.json +0 -11
  723. package/multi-select-dropdown/mis-crystal-design-system-multi-select-dropdown.d.ts +0 -4
  724. package/multi-select-dropdown/mis-crystal-design-system-multi-select-dropdown.metadata.json +0 -1
  725. package/multi-select-dropdown/package.json +0 -11
  726. package/nested-multi-select-dropdown/mis-crystal-design-system-nested-multi-select-dropdown.d.ts +0 -4
  727. package/nested-multi-select-dropdown/mis-crystal-design-system-nested-multi-select-dropdown.metadata.json +0 -1
  728. package/nested-multi-select-dropdown/package.json +0 -11
  729. package/phone-input/mis-crystal-design-system-phone-input.d.ts +0 -4
  730. package/phone-input/mis-crystal-design-system-phone-input.metadata.json +0 -1
  731. package/phone-input/package.json +0 -11
  732. package/radio-button/mis-crystal-design-system-radio-button.d.ts +0 -4
  733. package/radio-button/mis-crystal-design-system-radio-button.metadata.json +0 -1
  734. package/radio-button/package.json +0 -11
  735. package/ske-loader/mis-crystal-design-system-ske-loader.d.ts +0 -4
  736. package/ske-loader/mis-crystal-design-system-ske-loader.metadata.json +0 -1
  737. package/ske-loader/package.json +0 -11
  738. package/slider/mis-crystal-design-system-slider.d.ts +0 -4
  739. package/slider/mis-crystal-design-system-slider.metadata.json +0 -1
  740. package/slider/package.json +0 -11
  741. package/snackbar/mis-crystal-design-system-snackbar.d.ts +0 -4
  742. package/snackbar/mis-crystal-design-system-snackbar.metadata.json +0 -1
  743. package/snackbar/package.json +0 -11
  744. package/specificdatepicker/mis-crystal-design-system-specificdatepicker.d.ts +0 -7
  745. package/specificdatepicker/mis-crystal-design-system-specificdatepicker.metadata.json +0 -1
  746. package/specificdatepicker/package.json +0 -11
  747. package/star-rating/mis-crystal-design-system-star-rating.d.ts +0 -4
  748. package/star-rating/mis-crystal-design-system-star-rating.metadata.json +0 -1
  749. package/star-rating/package.json +0 -11
  750. package/styles/mis-crystal-design-system-styles.d.ts +0 -4
  751. package/styles/mis-crystal-design-system-styles.metadata.json +0 -1
  752. package/styles/package.json +0 -11
  753. package/switch/mis-crystal-design-system-switch.d.ts +0 -4
  754. package/switch/mis-crystal-design-system-switch.metadata.json +0 -1
  755. package/switch/package.json +0 -11
  756. package/table/mis-crystal-design-system-table.d.ts +0 -5
  757. package/table/mis-crystal-design-system-table.metadata.json +0 -1
  758. package/table/package.json +0 -11
  759. package/timepicker/mis-crystal-design-system-timepicker.d.ts +0 -5
  760. package/timepicker/mis-crystal-design-system-timepicker.metadata.json +0 -1
  761. package/timepicker/package.json +0 -11
  762. package/timerangepicker/mis-crystal-design-system-timerangepicker.d.ts +0 -4
  763. package/timerangepicker/mis-crystal-design-system-timerangepicker.metadata.json +0 -1
  764. package/timerangepicker/package.json +0 -11
  765. package/toast/mis-crystal-design-system-toast.d.ts +0 -4
  766. package/toast/mis-crystal-design-system-toast.metadata.json +0 -1
  767. package/toast/package.json +0 -11
  768. package/tooltip/mis-crystal-design-system-tooltip.d.ts +0 -4
  769. package/tooltip/mis-crystal-design-system-tooltip.metadata.json +0 -1
  770. package/tooltip/package.json +0 -11
  771. package/utils/mis-crystal-design-system-utils.d.ts +0 -4
  772. package/utils/mis-crystal-design-system-utils.metadata.json +0 -1
  773. package/utils/package.json +0 -11
  774. package/virtual-scroll/mis-crystal-design-system-virtual-scroll.d.ts +0 -4
  775. package/virtual-scroll/mis-crystal-design-system-virtual-scroll.metadata.json +0 -1
  776. package/virtual-scroll/package.json +0 -11
  777. package/widgets/mis-crystal-design-system-widgets.d.ts +0 -4
  778. package/widgets/mis-crystal-design-system-widgets.metadata.json +0 -1
  779. package/widgets/package.json +0 -11
  780. /package/{esm2015/action-list/index.js → esm2020/action-list/index.mjs} +0 -0
  781. /package/{esm2015/action-list/mis-crystal-design-system-action-list.js → esm2020/action-list/mis-crystal-design-system-action-list.mjs} +0 -0
  782. /package/{esm2015/action-list/public_api.js → esm2020/action-list/public_api.mjs} +0 -0
  783. /package/{esm2015/analytics/index.js → esm2020/analytics/index.mjs} +0 -0
  784. /package/{esm2015/analytics/mis-crystal-design-system-analytics.js → esm2020/analytics/mis-crystal-design-system-analytics.mjs} +0 -0
  785. /package/{esm2015/analytics/public_api.js → esm2020/analytics/public_api.mjs} +0 -0
  786. /package/{esm2015/async-search-dropdown/index.js → esm2020/async-search-dropdown/index.mjs} +0 -0
  787. /package/{esm2015/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.js → esm2020/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.mjs} +0 -0
  788. /package/{esm2015/async-search-dropdown/public_api.js → esm2020/async-search-dropdown/public_api.mjs} +0 -0
  789. /package/{esm2015/button/index.js → esm2020/button/index.mjs} +0 -0
  790. /package/{esm2015/button/mis-crystal-design-system-button.js → esm2020/button/mis-crystal-design-system-button.mjs} +0 -0
  791. /package/{esm2015/button/public_api.js → esm2020/button/public_api.mjs} +0 -0
  792. /package/{esm2015/checkbox/index.js → esm2020/checkbox/index.mjs} +0 -0
  793. /package/{esm2015/checkbox/mis-crystal-design-system-checkbox.js → esm2020/checkbox/mis-crystal-design-system-checkbox.mjs} +0 -0
  794. /package/{esm2015/checkbox/public_api.js → esm2020/checkbox/public_api.mjs} +0 -0
  795. /package/{esm2015/chip/index.js → esm2020/chip/index.mjs} +0 -0
  796. /package/{esm2015/chip/mis-crystal-design-system-chip.js → esm2020/chip/mis-crystal-design-system-chip.mjs} +0 -0
  797. /package/{esm2015/chip/public_api.js → esm2020/chip/public_api.mjs} +0 -0
  798. /package/{esm2015/datepicker_v2/datepicker-constants.js → esm2020/datepicker_v2/datepicker-constants.mjs} +0 -0
  799. /package/{esm2015/datepicker_v2/index.js → esm2020/datepicker_v2/index.mjs} +0 -0
  800. /package/{esm2015/datepicker_v2/models/dp-config.model.js → esm2020/datepicker_v2/models/dp-config.model.mjs} +0 -0
  801. /package/{esm2015/datepicker_v2/utils/index.js → esm2020/datepicker_v2/utils/index.mjs} +0 -0
  802. /package/{esm2015/daterangepicker_v2/daterangepicker-constants.js → esm2020/daterangepicker_v2/daterangepicker-constants.mjs} +0 -0
  803. /package/{esm2015/daterangepicker_v2/index.js → esm2020/daterangepicker_v2/index.mjs} +0 -0
  804. /package/{esm2015/daterangepicker_v2/models/drp-config.model.js → esm2020/daterangepicker_v2/models/drp-config.model.mjs} +0 -0
  805. /package/{esm2015/daterangepicker_v2/utils/index.js → esm2020/daterangepicker_v2/utils/index.mjs} +0 -0
  806. /package/{esm2015/drawer/drawer-constants.js → esm2020/drawer/drawer-constants.mjs} +0 -0
  807. /package/{esm2015/drawer/drawer-ref.js → esm2020/drawer/drawer-ref.mjs} +0 -0
  808. /package/{esm2015/drawer/index.js → esm2020/drawer/index.mjs} +0 -0
  809. /package/{esm2015/drawer/public_api.js → esm2020/drawer/public_api.mjs} +0 -0
  810. /package/{esm2015/dropdown/index.js → esm2020/dropdown/index.mjs} +0 -0
  811. /package/{esm2015/dropdown/public_api.js → esm2020/dropdown/public_api.mjs} +0 -0
  812. /package/{esm2015/dynamic-form/dynamic-form.namespace.js → esm2020/dynamic-form/dynamic-form.namespace.mjs} +0 -0
  813. /package/{esm2015/dynamic-form/index.js → esm2020/dynamic-form/index.mjs} +0 -0
  814. /package/{esm2015/dynamic-form/mis-crystal-design-system-dynamic-form.js → esm2020/dynamic-form/mis-crystal-design-system-dynamic-form.mjs} +0 -0
  815. /package/{esm2015/dynamic-form/public_api.js → esm2020/dynamic-form/public_api.mjs} +0 -0
  816. /package/{esm2015/fab/index.js → esm2020/fab/index.mjs} +0 -0
  817. /package/{esm2015/fab/mis-crystal-design-system-fab.js → esm2020/fab/mis-crystal-design-system-fab.mjs} +0 -0
  818. /package/{esm2015/fab/public_api.js → esm2020/fab/public_api.mjs} +0 -0
  819. /package/{esm2015/index.js → esm2020/index.mjs} +0 -0
  820. /package/{esm2015/input/index.js → esm2020/input/index.mjs} +0 -0
  821. /package/{esm2015/input/mis-crystal-design-system-input.js → esm2020/input/mis-crystal-design-system-input.mjs} +0 -0
  822. /package/{esm2015/input/public_api.js → esm2020/input/public_api.mjs} +0 -0
  823. /package/{esm2015/input-stepper/index.js → esm2020/input-stepper/index.mjs} +0 -0
  824. /package/{esm2015/input-stepper/mis-crystal-design-system-input-stepper.js → esm2020/input-stepper/mis-crystal-design-system-input-stepper.mjs} +0 -0
  825. /package/{esm2015/input-stepper/public_api.js → esm2020/input-stepper/public_api.mjs} +0 -0
  826. /package/{esm2015/loader/index.js → esm2020/loader/index.mjs} +0 -0
  827. /package/{esm2015/loader/mis-crystal-design-system-loader.js → esm2020/loader/mis-crystal-design-system-loader.mjs} +0 -0
  828. /package/{esm2015/loader/public_api.js → esm2020/loader/public_api.mjs} +0 -0
  829. /package/{esm2015/menu/index.js → esm2020/menu/index.mjs} +0 -0
  830. /package/{esm2015/menu/mis-crystal-design-system-menu.js → esm2020/menu/mis-crystal-design-system-menu.mjs} +0 -0
  831. /package/{esm2015/menu/public_api.js → esm2020/menu/public_api.mjs} +0 -0
  832. /package/{esm2015/mis-crystal-design-system.js → esm2020/mis-crystal-design-system.mjs} +0 -0
  833. /package/{esm2015/mobile-filter/index.js → esm2020/mobile-filter/index.mjs} +0 -0
  834. /package/{esm2015/mobile-filter/mis-crystal-design-system-mobile-filter.js → esm2020/mobile-filter/mis-crystal-design-system-mobile-filter.mjs} +0 -0
  835. /package/{esm2015/mobile-filter/public_api.js → esm2020/mobile-filter/public_api.mjs} +0 -0
  836. /package/{esm2015/modal/index.js → esm2020/modal/index.mjs} +0 -0
  837. /package/{esm2015/modal/modal-constants.js → esm2020/modal/modal-constants.mjs} +0 -0
  838. /package/{esm2015/modal/modal-ref.js → esm2020/modal/modal-ref.mjs} +0 -0
  839. /package/{esm2015/modal/public_api.js → esm2020/modal/public_api.mjs} +0 -0
  840. /package/{esm2015/multi-select-dropdown/index.js → esm2020/multi-select-dropdown/index.mjs} +0 -0
  841. /package/{esm2015/multi-select-dropdown/mis-crystal-design-system-multi-select-dropdown.js → esm2020/multi-select-dropdown/mis-crystal-design-system-multi-select-dropdown.mjs} +0 -0
  842. /package/{esm2015/multi-select-dropdown/public_api.js → esm2020/multi-select-dropdown/public_api.mjs} +0 -0
  843. /package/{esm2015/nested-multi-select-dropdown/index.js → esm2020/nested-multi-select-dropdown/index.mjs} +0 -0
  844. /package/{esm2015/nested-multi-select-dropdown/mis-crystal-design-system-nested-multi-select-dropdown.js → esm2020/nested-multi-select-dropdown/mis-crystal-design-system-nested-multi-select-dropdown.mjs} +0 -0
  845. /package/{esm2015/nested-multi-select-dropdown/public_api.js → esm2020/nested-multi-select-dropdown/public_api.mjs} +0 -0
  846. /package/{esm2015/phone-input/index.js → esm2020/phone-input/index.mjs} +0 -0
  847. /package/{esm2015/phone-input/mis-crystal-design-system-phone-input.js → esm2020/phone-input/mis-crystal-design-system-phone-input.mjs} +0 -0
  848. /package/{esm2015/phone-input/public_api.js → esm2020/phone-input/public_api.mjs} +0 -0
  849. /package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  850. /package/{esm2015/radio-button/index.js → esm2020/radio-button/index.mjs} +0 -0
  851. /package/{esm2015/radio-button/mis-crystal-design-system-radio-button.js → esm2020/radio-button/mis-crystal-design-system-radio-button.mjs} +0 -0
  852. /package/{esm2015/radio-button/public_api.js → esm2020/radio-button/public_api.mjs} +0 -0
  853. /package/{esm2015/ske-loader/index.js → esm2020/ske-loader/index.mjs} +0 -0
  854. /package/{esm2015/ske-loader/mis-crystal-design-system-ske-loader.js → esm2020/ske-loader/mis-crystal-design-system-ske-loader.mjs} +0 -0
  855. /package/{esm2015/ske-loader/public_api.js → esm2020/ske-loader/public_api.mjs} +0 -0
  856. /package/{esm2015/slider/index.js → esm2020/slider/index.mjs} +0 -0
  857. /package/{esm2015/slider/mis-crystal-design-system-slider.js → esm2020/slider/mis-crystal-design-system-slider.mjs} +0 -0
  858. /package/{esm2015/slider/public_api.js → esm2020/slider/public_api.mjs} +0 -0
  859. /package/{esm2015/snackbar/index.js → esm2020/snackbar/index.mjs} +0 -0
  860. /package/{esm2015/snackbar/mis-crystal-design-system-snackbar.js → esm2020/snackbar/mis-crystal-design-system-snackbar.mjs} +0 -0
  861. /package/{esm2015/snackbar/public_api.js → esm2020/snackbar/public_api.mjs} +0 -0
  862. /package/{esm2015/specificdatepicker/daterangepicker-constants.js → esm2020/specificdatepicker/daterangepicker-constants.mjs} +0 -0
  863. /package/{esm2015/specificdatepicker/index.js → esm2020/specificdatepicker/index.mjs} +0 -0
  864. /package/{esm2015/specificdatepicker/models/sdp-config.model.js → esm2020/specificdatepicker/models/sdp-config.model.mjs} +0 -0
  865. /package/{esm2015/specificdatepicker/utils/index.js → esm2020/specificdatepicker/utils/index.mjs} +0 -0
  866. /package/{esm2015/star-rating/index.js → esm2020/star-rating/index.mjs} +0 -0
  867. /package/{esm2015/star-rating/mis-crystal-design-system-star-rating.js → esm2020/star-rating/mis-crystal-design-system-star-rating.mjs} +0 -0
  868. /package/{esm2015/star-rating/public_api.js → esm2020/star-rating/public_api.mjs} +0 -0
  869. /package/{esm2015/styles/index.js → esm2020/styles/index.mjs} +0 -0
  870. /package/{esm2015/styles/mis-crystal-design-system-styles.js → esm2020/styles/mis-crystal-design-system-styles.mjs} +0 -0
  871. /package/{esm2015/styles/public_api.js → esm2020/styles/public_api.mjs} +0 -0
  872. /package/{esm2015/switch/index.js → esm2020/switch/index.mjs} +0 -0
  873. /package/{esm2015/switch/mis-crystal-design-system-switch.js → esm2020/switch/mis-crystal-design-system-switch.mjs} +0 -0
  874. /package/{esm2015/switch/public_api.js → esm2020/switch/public_api.mjs} +0 -0
  875. /package/{esm2015/table/index.js → esm2020/table/index.mjs} +0 -0
  876. /package/{esm2015/timepicker/index.js → esm2020/timepicker/index.mjs} +0 -0
  877. /package/{esm2015/timepicker/public_api.js → esm2020/timepicker/public_api.mjs} +0 -0
  878. /package/{esm2015/timepicker/time.namespace.js → esm2020/timepicker/time.namespace.mjs} +0 -0
  879. /package/{esm2015/timerangepicker/index.js → esm2020/timerangepicker/index.mjs} +0 -0
  880. /package/{esm2015/timerangepicker/mis-crystal-design-system-timerangepicker.js → esm2020/timerangepicker/mis-crystal-design-system-timerangepicker.mjs} +0 -0
  881. /package/{esm2015/timerangepicker/public_api.js → esm2020/timerangepicker/public_api.mjs} +0 -0
  882. /package/{esm2015/timerangepicker/timerange.namespace.js → esm2020/timerangepicker/timerange.namespace.mjs} +0 -0
  883. /package/{esm2015/toast/index.js → esm2020/toast/index.mjs} +0 -0
  884. /package/{esm2015/toast/mis-crystal-design-system-toast.js → esm2020/toast/mis-crystal-design-system-toast.mjs} +0 -0
  885. /package/{esm2015/toast/public_api.js → esm2020/toast/public_api.mjs} +0 -0
  886. /package/{esm2015/tooltip/index.js → esm2020/tooltip/index.mjs} +0 -0
  887. /package/{esm2015/tooltip/mis-crystal-design-system-tooltip.js → esm2020/tooltip/mis-crystal-design-system-tooltip.mjs} +0 -0
  888. /package/{esm2015/tooltip/models/tooltip.model.js → esm2020/tooltip/models/tooltip.model.mjs} +0 -0
  889. /package/{esm2015/tooltip/public_api.js → esm2020/tooltip/public_api.mjs} +0 -0
  890. /package/{esm2015/utils/index.js → esm2020/utils/index.mjs} +0 -0
  891. /package/{esm2015/utils/mis-crystal-design-system-utils.js → esm2020/utils/mis-crystal-design-system-utils.mjs} +0 -0
  892. /package/{esm2015/virtual-scroll/index.js → esm2020/virtual-scroll/index.mjs} +0 -0
  893. /package/{esm2015/virtual-scroll/mis-crystal-design-system-virtual-scroll.js → esm2020/virtual-scroll/mis-crystal-design-system-virtual-scroll.mjs} +0 -0
  894. /package/{esm2015/virtual-scroll/public_api.js → esm2020/virtual-scroll/public_api.mjs} +0 -0
  895. /package/{esm2015/virtual-scroll/virtual-scroll.constants.js → esm2020/virtual-scroll/virtual-scroll.constants.mjs} +0 -0
  896. /package/{esm2015/widgets/classes/async-widget.js → esm2020/widgets/classes/async-widget.mjs} +0 -0
  897. /package/{esm2015/widgets/classes/sync-widget.js → esm2020/widgets/classes/sync-widget.mjs} +0 -0
  898. /package/{esm2015/widgets/index.js → esm2020/widgets/index.mjs} +0 -0
  899. /package/{esm2015/widgets/interfaces/widgets.model.js → esm2020/widgets/interfaces/widgets.model.mjs} +0 -0
  900. /package/{esm2015/widgets/mis-crystal-design-system-widgets.js → esm2020/widgets/mis-crystal-design-system-widgets.mjs} +0 -0
  901. /package/{esm2015/widgets/public_api.js → esm2020/widgets/public_api.mjs} +0 -0
@@ -0,0 +1,712 @@
1
+ import { Component, EventEmitter, Input, Output } from "@angular/core";
2
+ import { UntypedFormArray, UntypedFormControl, UntypedFormGroup, Validators } from "@angular/forms";
3
+ import * as moment from "moment";
4
+ import "moment-timezone";
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ import * as i2 from "@angular/forms";
8
+ import * as i3 from "mis-crystal-design-system/dropdown";
9
+ import * as i4 from "mis-crystal-design-system/switch";
10
+ import * as i5 from "mis-crystal-design-system/multi-select-dropdown";
11
+ import * as i6 from "mis-crystal-design-system/datepicker_v2";
12
+ const _c0 = function (a0, a1) { return { $implicit: a0, control: a1 }; };
13
+ function DynamicFormComponent_ng_container_2_div_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
14
+ i0.ɵɵelementContainerStart(0);
15
+ i0.ɵɵelementContainer(1, 6);
16
+ i0.ɵɵelementContainerEnd();
17
+ } if (rf & 2) {
18
+ const subFieldControl_r9 = ctx.$implicit;
19
+ const ctx_r10 = i0.ɵɵnextContext(2);
20
+ const i_r6 = ctx_r10.index;
21
+ const fieldControl_r5 = ctx_r10.$implicit;
22
+ const ctx_r8 = i0.ɵɵnextContext();
23
+ const _r1 = i0.ɵɵreference(4);
24
+ i0.ɵɵadvance(1);
25
+ i0.ɵɵproperty("ngTemplateOutlet", _r1)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c0, ctx_r8.formFields[i_r6].subFields[ctx_r8.findSelectedIndex(ctx_r8.formFields[i_r6] == null ? null : ctx_r8.formFields[i_r6].subFields, fieldControl_r5.controls.value.value.value)], subFieldControl_r9));
26
+ } }
27
+ function DynamicFormComponent_ng_container_2_div_2_Template(rf, ctx) { if (rf & 1) {
28
+ i0.ɵɵelementStart(0, "div", 8);
29
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_container_2_div_2_ng_container_1_Template, 2, 5, "ng-container", 9);
30
+ i0.ɵɵelementEnd();
31
+ } if (rf & 2) {
32
+ const fieldControl_r5 = i0.ɵɵnextContext().$implicit;
33
+ i0.ɵɵadvance(1);
34
+ i0.ɵɵproperty("ngForOf", fieldControl_r5.controls.subFields.controls);
35
+ } }
36
+ const _c1 = function (a0, a1, a2) { return { $implicit: a0, formGroup: a1, control: a2 }; };
37
+ function DynamicFormComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) {
38
+ i0.ɵɵelementContainerStart(0, 5);
39
+ i0.ɵɵelementContainer(1, 6);
40
+ i0.ɵɵtemplate(2, DynamicFormComponent_ng_container_2_div_2_Template, 2, 1, "div", 7);
41
+ i0.ɵɵelementContainerEnd();
42
+ } if (rf & 2) {
43
+ const fieldControl_r5 = ctx.$implicit;
44
+ const i_r6 = ctx.index;
45
+ const ctx_r0 = i0.ɵɵnextContext();
46
+ const _r1 = i0.ɵɵreference(4);
47
+ i0.ɵɵproperty("formGroupName", i_r6);
48
+ i0.ɵɵadvance(1);
49
+ i0.ɵɵproperty("ngTemplateOutlet", _r1)("ngTemplateOutletContext", i0.ɵɵpureFunction3(4, _c1, ctx_r0.formFields[i_r6], fieldControl_r5, fieldControl_r5.controls.value));
50
+ i0.ɵɵadvance(1);
51
+ i0.ɵɵproperty("ngIf", fieldControl_r5.value && (!!(ctx_r0.formFields[i_r6] == null ? null : ctx_r0.formFields[i_r6].subFields) && (ctx_r0.formFields[i_r6] == null ? null : ctx_r0.formFields[i_r6].subFields == null ? null : ctx_r0.formFields[i_r6].subFields.length) > 0 && ctx_r0.matchParentConfig(ctx_r0.formFields[i_r6] == null ? null : ctx_r0.formFields[i_r6].subFields, fieldControl_r5.controls.value.value.value)));
52
+ } }
53
+ const _c2 = function (a0) { return { $implicit: a0 }; };
54
+ function DynamicFormComponent_ng_template_3_div_0_ng_container_5_Template(rf, ctx) { if (rf & 1) {
55
+ i0.ɵɵelementContainer(0, 6);
56
+ } if (rf & 2) {
57
+ const control_r13 = i0.ɵɵnextContext(2).control;
58
+ i0.ɵɵnextContext();
59
+ const _r3 = i0.ɵɵreference(6);
60
+ i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c2, control_r13.errors));
61
+ } }
62
+ const _c3 = function (a0) { return { "border": a0 }; };
63
+ function DynamicFormComponent_ng_template_3_div_0_Template(rf, ctx) { if (rf & 1) {
64
+ const _r27 = i0.ɵɵgetCurrentView();
65
+ i0.ɵɵelementStart(0, "div", 12)(1, "p", 13);
66
+ i0.ɵɵtext(2);
67
+ i0.ɵɵelementEnd();
68
+ i0.ɵɵelement(3, "div", 14);
69
+ i0.ɵɵelementStart(4, "input", 15);
70
+ i0.ɵɵlistener("ngModelChange", function DynamicFormComponent_ng_template_3_div_0_Template_input_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r27); const ctx_r26 = i0.ɵɵnextContext(); const field_r12 = ctx_r26.$implicit; const formgroup_r14 = ctx_r26.formGroup; const ctx_r25 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r25.updateSubDynamicFields(field_r12, formgroup_r14, $event)); });
71
+ i0.ɵɵelementEnd();
72
+ i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_div_0_ng_container_5_Template, 1, 4, "ng-container", 16);
73
+ i0.ɵɵelementEnd();
74
+ } if (rf & 2) {
75
+ const ctx_r28 = i0.ɵɵnextContext();
76
+ const field_r12 = ctx_r28.$implicit;
77
+ const control_r13 = ctx_r28.control;
78
+ i0.ɵɵadvance(2);
79
+ i0.ɵɵtextInterpolate1(" ", field_r12.title, " ");
80
+ i0.ɵɵadvance(2);
81
+ i0.ɵɵproperty("type", field_r12.fieldInputType)("formControl", control_r13)("ngStyle", i0.ɵɵpureFunction1(7, _c3, control_r13.touched && control_r13.errors ? "1px solid #B00020" : ""))("placeholder", field_r12.placeholderText ? field_r12.placeholderText : "Input Text")("min", field_r12.fieldInputType === "number" ? 0 : "");
82
+ i0.ɵɵadvance(1);
83
+ i0.ɵɵproperty("ngIf", control_r13.touched && control_r13.errors);
84
+ } }
85
+ function DynamicFormComponent_ng_template_3_div_1_ng_container_5_Template(rf, ctx) { if (rf & 1) {
86
+ i0.ɵɵelementContainer(0, 6);
87
+ } if (rf & 2) {
88
+ const control_r13 = i0.ɵɵnextContext(2).control;
89
+ i0.ɵɵnextContext();
90
+ const _r3 = i0.ɵɵreference(6);
91
+ i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c2, control_r13.errors));
92
+ } }
93
+ function DynamicFormComponent_ng_template_3_div_1_Template(rf, ctx) { if (rf & 1) {
94
+ const _r33 = i0.ɵɵgetCurrentView();
95
+ i0.ɵɵelementStart(0, "div", 12)(1, "p", 13);
96
+ i0.ɵɵtext(2);
97
+ i0.ɵɵelementEnd();
98
+ i0.ɵɵelement(3, "div", 14);
99
+ i0.ɵɵelementStart(4, "textarea", 17);
100
+ i0.ɵɵlistener("ngModelChange", function DynamicFormComponent_ng_template_3_div_1_Template_textarea_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r33); const ctx_r32 = i0.ɵɵnextContext(); const field_r12 = ctx_r32.$implicit; const formgroup_r14 = ctx_r32.formGroup; const ctx_r31 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r31.updateSubDynamicFields(field_r12, formgroup_r14, $event)); });
101
+ i0.ɵɵelementEnd();
102
+ i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_div_1_ng_container_5_Template, 1, 4, "ng-container", 16);
103
+ i0.ɵɵelementEnd();
104
+ } if (rf & 2) {
105
+ const ctx_r34 = i0.ɵɵnextContext();
106
+ const field_r12 = ctx_r34.$implicit;
107
+ const control_r13 = ctx_r34.control;
108
+ i0.ɵɵadvance(2);
109
+ i0.ɵɵtextInterpolate1(" ", field_r12.title, " ");
110
+ i0.ɵɵadvance(2);
111
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(5, _c3, control_r13.touched && control_r13.errors ? "1px solid #B00020" : ""))("placeholder", field_r12.placeholderText ? field_r12.placeholderText : "Input Text")("formControl", control_r13);
112
+ i0.ɵɵadvance(1);
113
+ i0.ɵɵproperty("ngIf", control_r13.touched && control_r13.errors);
114
+ } }
115
+ function DynamicFormComponent_ng_template_3_div_2_img_6_Template(rf, ctx) { if (rf & 1) {
116
+ const _r39 = i0.ɵɵgetCurrentView();
117
+ i0.ɵɵelementStart(0, "img", 24);
118
+ i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_div_2_img_6_Template_img_click_0_listener() { i0.ɵɵrestoreView(_r39); i0.ɵɵnextContext(); const _r35 = i0.ɵɵreference(5); return i0.ɵɵresetView(_r35.click()); });
119
+ i0.ɵɵelementEnd();
120
+ } if (rf & 2) {
121
+ const ctx_r36 = i0.ɵɵnextContext(3);
122
+ i0.ɵɵproperty("src", ctx_r36.calendarIconUrl, i0.ɵɵsanitizeUrl);
123
+ } }
124
+ function DynamicFormComponent_ng_template_3_div_2_ng_container_7_Template(rf, ctx) { if (rf & 1) {
125
+ i0.ɵɵelementContainer(0, 6);
126
+ } if (rf & 2) {
127
+ const control_r13 = i0.ɵɵnextContext(2).control;
128
+ i0.ɵɵnextContext();
129
+ const _r3 = i0.ɵɵreference(6);
130
+ i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c2, control_r13.errors));
131
+ } }
132
+ function DynamicFormComponent_ng_template_3_div_2_Template(rf, ctx) { if (rf & 1) {
133
+ const _r43 = i0.ɵɵgetCurrentView();
134
+ i0.ɵɵelementStart(0, "div", 18)(1, "p", 19);
135
+ i0.ɵɵtext(2);
136
+ i0.ɵɵelementEnd();
137
+ i0.ɵɵelementStart(3, "div", 20)(4, "input", 21, 22);
138
+ i0.ɵɵlistener("dateChange", function DynamicFormComponent_ng_template_3_div_2_Template_input_dateChange_4_listener($event) { i0.ɵɵrestoreView(_r43); const control_r13 = i0.ɵɵnextContext().control; return i0.ɵɵresetView(control_r13.setValue($event)); });
139
+ i0.ɵɵelementEnd();
140
+ i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_div_2_img_6_Template, 1, 1, "img", 23);
141
+ i0.ɵɵelementEnd();
142
+ i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_div_2_ng_container_7_Template, 1, 4, "ng-container", 16);
143
+ i0.ɵɵelementEnd();
144
+ } if (rf & 2) {
145
+ const ctx_r44 = i0.ɵɵnextContext();
146
+ const field_r12 = ctx_r44.$implicit;
147
+ const control_r13 = ctx_r44.control;
148
+ const ctx_r17 = i0.ɵɵnextContext();
149
+ i0.ɵɵadvance(2);
150
+ i0.ɵɵtextInterpolate1(" ", field_r12.title, " ");
151
+ i0.ɵɵadvance(2);
152
+ i0.ɵɵproperty("dpConfig", field_r12.fieldConfig)("selectedDate", control_r13.value)("offsetY", 0)("value", control_r13.value);
153
+ i0.ɵɵadvance(2);
154
+ i0.ɵɵproperty("ngIf", ctx_r17.calendarIconUrl);
155
+ i0.ɵɵadvance(1);
156
+ i0.ɵɵproperty("ngIf", control_r13.touched && control_r13.errors);
157
+ } }
158
+ function DynamicFormComponent_ng_template_3_div_3_ng_container_4_Template(rf, ctx) { if (rf & 1) {
159
+ i0.ɵɵelementContainer(0, 6);
160
+ } if (rf & 2) {
161
+ const control_r13 = i0.ɵɵnextContext(2).control;
162
+ i0.ɵɵnextContext();
163
+ const _r3 = i0.ɵɵreference(6);
164
+ i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c2, control_r13.errors));
165
+ } }
166
+ function DynamicFormComponent_ng_template_3_div_3_Template(rf, ctx) { if (rf & 1) {
167
+ const _r49 = i0.ɵɵgetCurrentView();
168
+ i0.ɵɵelementStart(0, "div", 18)(1, "p", 19);
169
+ i0.ɵɵtext(2);
170
+ i0.ɵɵelementEnd();
171
+ i0.ɵɵelementStart(3, "mis-switch", 25);
172
+ i0.ɵɵlistener("valueChanged", function DynamicFormComponent_ng_template_3_div_3_Template_mis_switch_valueChanged_3_listener($event) { i0.ɵɵrestoreView(_r49); const ctx_r48 = i0.ɵɵnextContext(); const field_r12 = ctx_r48.$implicit; const formgroup_r14 = ctx_r48.formGroup; const ctx_r47 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r47.updateSubDynamicFields(field_r12, formgroup_r14, $event)); });
173
+ i0.ɵɵelementEnd();
174
+ i0.ɵɵtemplate(4, DynamicFormComponent_ng_template_3_div_3_ng_container_4_Template, 1, 4, "ng-container", 16);
175
+ i0.ɵɵelementEnd();
176
+ } if (rf & 2) {
177
+ const ctx_r50 = i0.ɵɵnextContext();
178
+ const field_r12 = ctx_r50.$implicit;
179
+ const control_r13 = ctx_r50.control;
180
+ i0.ɵɵadvance(2);
181
+ i0.ɵɵtextInterpolate1(" ", field_r12.title, " ");
182
+ i0.ɵɵadvance(1);
183
+ i0.ɵɵproperty("control", control_r13);
184
+ i0.ɵɵadvance(1);
185
+ i0.ɵɵproperty("ngIf", control_r13.touched && control_r13.errors);
186
+ } }
187
+ function DynamicFormComponent_ng_template_3_div_4_ng_container_4_Template(rf, ctx) { if (rf & 1) {
188
+ i0.ɵɵelementContainer(0, 6);
189
+ } if (rf & 2) {
190
+ const control_r13 = i0.ɵɵnextContext(2).control;
191
+ i0.ɵɵnextContext();
192
+ const _r3 = i0.ɵɵreference(6);
193
+ i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c2, control_r13.errors));
194
+ } }
195
+ function DynamicFormComponent_ng_template_3_div_4_Template(rf, ctx) { if (rf & 1) {
196
+ const _r55 = i0.ɵɵgetCurrentView();
197
+ i0.ɵɵelementStart(0, "div", 18)(1, "p", 19);
198
+ i0.ɵɵtext(2);
199
+ i0.ɵɵelementEnd();
200
+ i0.ɵɵelementStart(3, "mis-dropdown", 26);
201
+ i0.ɵɵlistener("onChange", function DynamicFormComponent_ng_template_3_div_4_Template_mis_dropdown_onChange_3_listener($event) { i0.ɵɵrestoreView(_r55); const ctx_r54 = i0.ɵɵnextContext(); const field_r12 = ctx_r54.$implicit; const control_r13 = ctx_r54.control; const formgroup_r14 = ctx_r54.formGroup; const ctx_r53 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r53.updateSelectedValueForSingleSelect(field_r12, control_r13, formgroup_r14, $event)); });
202
+ i0.ɵɵelementEnd();
203
+ i0.ɵɵtemplate(4, DynamicFormComponent_ng_template_3_div_4_ng_container_4_Template, 1, 4, "ng-container", 16);
204
+ i0.ɵɵelementEnd();
205
+ } if (rf & 2) {
206
+ const ctx_r56 = i0.ɵɵnextContext();
207
+ const field_r12 = ctx_r56.$implicit;
208
+ const control_r13 = ctx_r56.control;
209
+ i0.ɵɵadvance(2);
210
+ i0.ɵɵtextInterpolate1(" ", field_r12.title, " ");
211
+ i0.ɵɵadvance(1);
212
+ i0.ɵɵproperty("searchEnabled", false)("width", "140px")("data", field_r12.itemsList)("selectedItem", control_r13.value);
213
+ i0.ɵɵadvance(1);
214
+ i0.ɵɵproperty("ngIf", control_r13.touched && control_r13.errors);
215
+ } }
216
+ function DynamicFormComponent_ng_template_3_div_5_div_5_img_1_Template(rf, ctx) { if (rf & 1) {
217
+ i0.ɵɵelement(0, "img", 31);
218
+ } if (rf & 2) {
219
+ const ctx_r60 = i0.ɵɵnextContext(4);
220
+ i0.ɵɵproperty("src", ctx_r60.activeBtnIconUrl, i0.ɵɵsanitizeUrl);
221
+ } }
222
+ const _c4 = function (a0) { return { "checkbox-active": a0 }; };
223
+ function DynamicFormComponent_ng_template_3_div_5_div_5_Template(rf, ctx) { if (rf & 1) {
224
+ const _r63 = i0.ɵɵgetCurrentView();
225
+ i0.ɵɵelementStart(0, "div", 29);
226
+ i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_div_5_div_5_Template_div_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r63); const item_r59 = restoredCtx.$implicit; const ctx_r62 = i0.ɵɵnextContext(2); const field_r12 = ctx_r62.$implicit; const control_r13 = ctx_r62.control; const formgroup_r14 = ctx_r62.formGroup; const ctx_r61 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r61.updateSelectedValueForSingleSelect(field_r12, control_r13, formgroup_r14, item_r59)); });
227
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_div_5_div_5_img_1_Template, 1, 1, "img", 30);
228
+ i0.ɵɵelementStart(2, "p", 19);
229
+ i0.ɵɵtext(3);
230
+ i0.ɵɵelementEnd()();
231
+ } if (rf & 2) {
232
+ const item_r59 = ctx.$implicit;
233
+ const control_r13 = i0.ɵɵnextContext(2).control;
234
+ const ctx_r57 = i0.ɵɵnextContext();
235
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c4, item_r59.label === (control_r13.value == null ? null : control_r13.value.label)));
236
+ i0.ɵɵadvance(1);
237
+ i0.ɵɵproperty("ngIf", item_r59.label === (control_r13.value == null ? null : control_r13.value.label) && ctx_r57.activeBtnIconUrl);
238
+ i0.ɵɵadvance(2);
239
+ i0.ɵɵtextInterpolate(item_r59.label);
240
+ } }
241
+ function DynamicFormComponent_ng_template_3_div_5_ng_container_6_Template(rf, ctx) { if (rf & 1) {
242
+ i0.ɵɵelementContainer(0, 6);
243
+ } if (rf & 2) {
244
+ const control_r13 = i0.ɵɵnextContext(2).control;
245
+ i0.ɵɵnextContext();
246
+ const _r3 = i0.ɵɵreference(6);
247
+ i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c2, control_r13.errors));
248
+ } }
249
+ function DynamicFormComponent_ng_template_3_div_5_Template(rf, ctx) { if (rf & 1) {
250
+ i0.ɵɵelementStart(0, "div", 12)(1, "p", 13);
251
+ i0.ɵɵtext(2);
252
+ i0.ɵɵelementEnd();
253
+ i0.ɵɵelement(3, "div", 14);
254
+ i0.ɵɵelementStart(4, "div", 27);
255
+ i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_div_5_div_5_Template, 4, 5, "div", 28);
256
+ i0.ɵɵelementEnd();
257
+ i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_div_5_ng_container_6_Template, 1, 4, "ng-container", 16);
258
+ i0.ɵɵelementEnd();
259
+ } if (rf & 2) {
260
+ const ctx_r66 = i0.ɵɵnextContext();
261
+ const field_r12 = ctx_r66.$implicit;
262
+ const control_r13 = ctx_r66.control;
263
+ i0.ɵɵadvance(2);
264
+ i0.ɵɵtextInterpolate1(" ", field_r12.title, " ");
265
+ i0.ɵɵadvance(3);
266
+ i0.ɵɵproperty("ngForOf", field_r12.itemsList);
267
+ i0.ɵɵadvance(1);
268
+ i0.ɵɵproperty("ngIf", control_r13.touched && control_r13.errors);
269
+ } }
270
+ function DynamicFormComponent_ng_template_3_div_6_div_5_img_1_Template(rf, ctx) { if (rf & 1) {
271
+ i0.ɵɵelement(0, "img", 31);
272
+ } if (rf & 2) {
273
+ const ctx_r70 = i0.ɵɵnextContext(4);
274
+ i0.ɵɵproperty("src", ctx_r70.activeBtnIconUrl, i0.ɵɵsanitizeUrl);
275
+ } }
276
+ function DynamicFormComponent_ng_template_3_div_6_div_5_Template(rf, ctx) { if (rf & 1) {
277
+ const _r73 = i0.ɵɵgetCurrentView();
278
+ i0.ɵɵelementStart(0, "div", 29);
279
+ i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_div_6_div_5_Template_div_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r73); const item_r69 = restoredCtx.$implicit; const ctx_r72 = i0.ɵɵnextContext(2); const field_r12 = ctx_r72.$implicit; const control_r13 = ctx_r72.control; const formgroup_r14 = ctx_r72.formGroup; const ctx_r71 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r71.updateSelectedValueForMultiSelect(field_r12, control_r13, formgroup_r14, [item_r69])); });
280
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_div_6_div_5_img_1_Template, 1, 1, "img", 30);
281
+ i0.ɵɵelementStart(2, "p", 19);
282
+ i0.ɵɵtext(3);
283
+ i0.ɵɵelementEnd()();
284
+ } if (rf & 2) {
285
+ const item_r69 = ctx.$implicit;
286
+ const control_r13 = i0.ɵɵnextContext(2).control;
287
+ const ctx_r67 = i0.ɵɵnextContext();
288
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c4, ctx_r67.isCheckBoxSelected(item_r69.label, control_r13.value)));
289
+ i0.ɵɵadvance(1);
290
+ i0.ɵɵproperty("ngIf", ctx_r67.isCheckBoxSelected(item_r69.label, control_r13.value) && ctx_r67.activeBtnIconUrl);
291
+ i0.ɵɵadvance(2);
292
+ i0.ɵɵtextInterpolate(item_r69.label);
293
+ } }
294
+ function DynamicFormComponent_ng_template_3_div_6_ng_container_6_Template(rf, ctx) { if (rf & 1) {
295
+ i0.ɵɵelementContainer(0, 6);
296
+ } if (rf & 2) {
297
+ const control_r13 = i0.ɵɵnextContext(2).control;
298
+ i0.ɵɵnextContext();
299
+ const _r3 = i0.ɵɵreference(6);
300
+ i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c2, control_r13.errors));
301
+ } }
302
+ function DynamicFormComponent_ng_template_3_div_6_Template(rf, ctx) { if (rf & 1) {
303
+ i0.ɵɵelementStart(0, "div", 12)(1, "p", 13);
304
+ i0.ɵɵtext(2);
305
+ i0.ɵɵelementEnd();
306
+ i0.ɵɵelement(3, "div", 14);
307
+ i0.ɵɵelementStart(4, "div", 27);
308
+ i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_div_6_div_5_Template, 4, 5, "div", 28);
309
+ i0.ɵɵelementEnd();
310
+ i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_div_6_ng_container_6_Template, 1, 4, "ng-container", 16);
311
+ i0.ɵɵelementEnd();
312
+ } if (rf & 2) {
313
+ const ctx_r76 = i0.ɵɵnextContext();
314
+ const field_r12 = ctx_r76.$implicit;
315
+ const control_r13 = ctx_r76.control;
316
+ i0.ɵɵadvance(2);
317
+ i0.ɵɵtextInterpolate1(" ", field_r12.title, " ");
318
+ i0.ɵɵadvance(3);
319
+ i0.ɵɵproperty("ngForOf", field_r12.itemsList);
320
+ i0.ɵɵadvance(1);
321
+ i0.ɵɵproperty("ngIf", control_r13.touched && control_r13.errors);
322
+ } }
323
+ function DynamicFormComponent_ng_template_3_div_7_ng_container_4_Template(rf, ctx) { if (rf & 1) {
324
+ i0.ɵɵelementContainer(0, 6);
325
+ } if (rf & 2) {
326
+ const control_r13 = i0.ɵɵnextContext(2).control;
327
+ i0.ɵɵnextContext();
328
+ const _r3 = i0.ɵɵreference(6);
329
+ i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c2, control_r13.errors));
330
+ } }
331
+ function DynamicFormComponent_ng_template_3_div_7_Template(rf, ctx) { if (rf & 1) {
332
+ const _r81 = i0.ɵɵgetCurrentView();
333
+ i0.ɵɵelementStart(0, "div", 18)(1, "p", 19);
334
+ i0.ɵɵtext(2);
335
+ i0.ɵɵelementEnd();
336
+ i0.ɵɵelementStart(3, "mis-multi-select-dropdown", 32);
337
+ i0.ɵɵlistener("onChange", function DynamicFormComponent_ng_template_3_div_7_Template_mis_multi_select_dropdown_onChange_3_listener($event) { i0.ɵɵrestoreView(_r81); const ctx_r80 = i0.ɵɵnextContext(); const field_r12 = ctx_r80.$implicit; const control_r13 = ctx_r80.control; const formgroup_r14 = ctx_r80.formGroup; const ctx_r79 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r79.updateSelectedValueForMultiSelect(field_r12, control_r13, formgroup_r14, $event)); });
338
+ i0.ɵɵelementEnd();
339
+ i0.ɵɵtemplate(4, DynamicFormComponent_ng_template_3_div_7_ng_container_4_Template, 1, 4, "ng-container", 16);
340
+ i0.ɵɵelementEnd();
341
+ } if (rf & 2) {
342
+ const ctx_r82 = i0.ɵɵnextContext();
343
+ const field_r12 = ctx_r82.$implicit;
344
+ const control_r13 = ctx_r82.control;
345
+ i0.ɵɵadvance(2);
346
+ i0.ɵɵtextInterpolate1(" ", field_r12.title, " ");
347
+ i0.ɵɵadvance(1);
348
+ i0.ɵɵproperty("width", "140px")("showSelectedCount", true)("dropdownListWidth", "256px")("searchEnabled", false)("hideApplyButton", true)("data", field_r12.itemsList)("selectedItems", control_r13.value);
349
+ i0.ɵɵadvance(1);
350
+ i0.ɵɵproperty("ngIf", control_r13.touched && control_r13.errors);
351
+ } }
352
+ function DynamicFormComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
353
+ i0.ɵɵtemplate(0, DynamicFormComponent_ng_template_3_div_0_Template, 6, 9, "div", 10);
354
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_div_1_Template, 6, 7, "div", 10);
355
+ i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_div_2_Template, 8, 7, "div", 11);
356
+ i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_div_3_Template, 5, 3, "div", 11);
357
+ i0.ɵɵtemplate(4, DynamicFormComponent_ng_template_3_div_4_Template, 5, 6, "div", 11);
358
+ i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_div_5_Template, 7, 3, "div", 10);
359
+ i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_div_6_Template, 7, 3, "div", 10);
360
+ i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_div_7_Template, 5, 9, "div", 11);
361
+ } if (rf & 2) {
362
+ const field_r12 = ctx.$implicit;
363
+ i0.ɵɵproperty("ngIf", field_r12.fieldType === "input" && (field_r12.fieldInputType === "text" || field_r12.fieldInputType === "number"));
364
+ i0.ɵɵadvance(1);
365
+ i0.ɵɵproperty("ngIf", field_r12.fieldType === "input" && field_r12.fieldInputType === "textarea");
366
+ i0.ɵɵadvance(1);
367
+ i0.ɵɵproperty("ngIf", field_r12.fieldType === "input" && field_r12.fieldInputType === "date");
368
+ i0.ɵɵadvance(1);
369
+ i0.ɵɵproperty("ngIf", field_r12.fieldType === "boolean" && field_r12.fieldInputType === "toggle");
370
+ i0.ɵɵadvance(1);
371
+ i0.ɵɵproperty("ngIf", field_r12.fieldType === "singleSelect" && field_r12.fieldInputType === "dropdown");
372
+ i0.ɵɵadvance(1);
373
+ i0.ɵɵproperty("ngIf", field_r12.fieldType === "singleSelect" && field_r12.fieldInputType === "radio");
374
+ i0.ɵɵadvance(1);
375
+ i0.ɵɵproperty("ngIf", field_r12.fieldType === "multiSelect" && field_r12.fieldInputType === "checkbox");
376
+ i0.ɵɵadvance(1);
377
+ i0.ɵɵproperty("ngIf", field_r12.fieldType === "multiSelect" && field_r12.fieldInputType === "dropdown");
378
+ } }
379
+ function DynamicFormComponent_ng_template_5_ng_container_1_Template(rf, ctx) { if (rf & 1) {
380
+ i0.ɵɵelementContainerStart(0);
381
+ i0.ɵɵelementStart(1, "p", 34);
382
+ i0.ɵɵtext(2);
383
+ i0.ɵɵelementEnd();
384
+ i0.ɵɵelement(3, "div", 35);
385
+ i0.ɵɵelementContainerEnd();
386
+ } if (rf & 2) {
387
+ const error_r85 = ctx.$implicit;
388
+ i0.ɵɵadvance(2);
389
+ i0.ɵɵtextInterpolate1(" ", " \u2022 \u00A0" + error_r85.value, " ");
390
+ } }
391
+ function DynamicFormComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {
392
+ i0.ɵɵelementStart(0, "div", 33);
393
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_5_ng_container_1_Template, 4, 1, "ng-container", 9);
394
+ i0.ɵɵpipe(2, "keyvalue");
395
+ i0.ɵɵelementEnd();
396
+ } if (rf & 2) {
397
+ const errors_r83 = ctx.$implicit;
398
+ i0.ɵɵadvance(1);
399
+ i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(2, 1, errors_r83));
400
+ } }
401
+ export class DynamicFormComponent {
402
+ constructor() {
403
+ /**
404
+ * formFields: Dynamic fields recieved from the API metadata to build a dynamic form
405
+ * formValues: Holds the value of the dynamic form with "key" being dynamic field "title"
406
+ * and value being the user input.
407
+ */
408
+ this.formFields = [];
409
+ this.formValues = {};
410
+ // Need to deprecate these inputs and use constants.
411
+ this.activeBtnIconUrl = "";
412
+ this.calendarIconUrl = "";
413
+ /**
414
+ * formUpdated: Emits formValues Object whenever there is a change in the dynamic form.
415
+ */
416
+ this.formUpdated = new EventEmitter();
417
+ /**
418
+ * formValid: Emits boolean depending on validity of the form
419
+ */
420
+ this.formValid = new EventEmitter();
421
+ /**
422
+ * formInitialized: Emits dynamic form API on form initilization
423
+ */
424
+ this.formInitialized = new EventEmitter();
425
+ }
426
+ ngOnInit() {
427
+ // Building the form
428
+ this.dynamicForm = this.generateDynamicForm(this.formFields, this.formValues);
429
+ // Subscribing to form changes and emiting values.
430
+ this.valueChangesSubscription$ = this.dynamicForm.valueChanges.subscribe(formValue => {
431
+ this.onFormValueChanges();
432
+ });
433
+ //api to expose functions
434
+ this.dynamicFormAPI = {
435
+ defaultFormValues: () => {
436
+ return this.generateDynamicFieldsValueObject(this.dynamicForm.value.dynamicFields);
437
+ }
438
+ };
439
+ this.formInitialized.emit(this.dynamicFormAPI);
440
+ this.formValid.emit(this.dynamicForm.valid);
441
+ }
442
+ ngOnDestroy() {
443
+ this.valueChangesSubscription$?.unsubscribe();
444
+ }
445
+ onFormValueChanges() {
446
+ let formValues = this.generateDynamicFieldsValueObject(this.dynamicForm.value.dynamicFields);
447
+ this.formValid.emit(this.dynamicForm.valid);
448
+ this.formUpdated.emit(formValues);
449
+ console.log(formValues);
450
+ }
451
+ generateDynamicFieldsValueObject(formValues) {
452
+ let dynamicFieldsValue = {};
453
+ formValues.forEach((fieldValue, index) => {
454
+ let formattedValue = this.mapFormFieldToFormValue(this.formFields[index], fieldValue.value);
455
+ if (fieldValue.subFields?.length > 0) {
456
+ let formattedSubFieldsValues = {};
457
+ fieldValue.subFields.forEach((subFieldValue, subIndex) => {
458
+ let subFormField = this.formFields[index].subFields[subIndex];
459
+ formattedSubFieldsValues[subFormField.configName] = this.mapFormFieldToFormValue(subFormField, subFieldValue);
460
+ });
461
+ dynamicFieldsValue[this.formFields[index].configName] = {
462
+ value: formattedValue,
463
+ subFields: formattedSubFieldsValues
464
+ };
465
+ }
466
+ else {
467
+ dynamicFieldsValue[this.formFields[index].configName] = formattedValue;
468
+ }
469
+ });
470
+ return dynamicFieldsValue;
471
+ }
472
+ generateDynamicForm(formFields, formValues) {
473
+ let formArray = new UntypedFormArray([]);
474
+ for (let field of formFields) {
475
+ let fieldValue = formValues[field.configName]?.value ? formValues[field.configName].value : formValues[field.configName];
476
+ let fieldControl = this.mapFormValueToFormField(field, fieldValue);
477
+ let subFieldsControls = this.generateSubDynamicFields(formValues, field, fieldControl.value);
478
+ formArray.push(new UntypedFormGroup({
479
+ value: fieldControl,
480
+ subFields: subFieldsControls
481
+ }));
482
+ }
483
+ return new UntypedFormGroup({
484
+ dynamicFields: formArray
485
+ });
486
+ }
487
+ getDynamicFieldsControls() {
488
+ return this.dynamicForm.get("dynamicFields");
489
+ }
490
+ updateSubDynamicFields(field, formGroup, value) {
491
+ if (field.subFields?.length > 0) {
492
+ let subFieldsControls = this.generateSubDynamicFields(this.formValues, field, value);
493
+ formGroup.removeControl('subFields');
494
+ formGroup.addControl('subFields', subFieldsControls);
495
+ }
496
+ }
497
+ updateSelectedValueForSingleSelect(field, control, formGroup, value) {
498
+ if (control.value?.value !== value.value) {
499
+ control.setValue(value);
500
+ }
501
+ else
502
+ control.setValue('');
503
+ this.updateSubDynamicFields(field, formGroup, value);
504
+ control.markAsTouched();
505
+ }
506
+ updateSelectedValueForMultiSelect(field, control, formGroup, values) {
507
+ let selectedValues = control.value;
508
+ for (let value of values) {
509
+ let itemIndex = selectedValues.findIndex(item => item.label === value.label);
510
+ if (itemIndex > -1) {
511
+ selectedValues.splice(itemIndex, 1);
512
+ }
513
+ else {
514
+ selectedValues.push({ ...value });
515
+ }
516
+ }
517
+ control.setValue(selectedValues);
518
+ this.updateSubDynamicFields(field, formGroup, values);
519
+ control.markAsTouched();
520
+ }
521
+ isCheckBoxSelected(value, selectedValues) {
522
+ return selectedValues.findIndex(item => item.label === value) > -1;
523
+ }
524
+ findSelectedIndex(subfields, value) {
525
+ const selectedIndex = subfields.findIndex(item => item.parentConfigValue === value);
526
+ return selectedIndex !== -1 ? selectedIndex : 0;
527
+ }
528
+ matchParentConfig(subfields, value) {
529
+ if (!subfields || subfields.length === 0) {
530
+ return false;
531
+ }
532
+ return subfields.some(item => item.parentConfigValue === value);
533
+ }
534
+ generateSubDynamicFields(formValues, parentField, parentValue) {
535
+ let controls = new UntypedFormArray([]);
536
+ let subFields = parentField.subFields;
537
+ let subFieldsValues = formValues[parentField.configName]?.subFields ? formValues[parentField.configName].subFields : {};
538
+ if (!subFields)
539
+ return controls;
540
+ if (parentField.fieldType === 'singleSelect') {
541
+ subFields = subFields.filter((subField) => subField.parentConfigValue === parentValue?.value);
542
+ }
543
+ else if (parentField.fieldType === 'multiSelect') {
544
+ let parentValues = new Set(parentValue.map((value) => value.value));
545
+ subFields = subFields.filter((subField) => parentValues.has(subField.parentConfigValue));
546
+ }
547
+ if (subFields?.length > 0) {
548
+ for (let subField of subFields) {
549
+ controls.push(this.mapFormValueToFormField(subField, subFieldsValues[subField.configName]));
550
+ }
551
+ }
552
+ return controls;
553
+ }
554
+ mapFormValueToFormField(formField, formValue) {
555
+ let validators = formField.validators ? [dynamicFieldValidator(formField.validators)] : [];
556
+ let control = new UntypedFormControl(null, validators);
557
+ if (formField.fieldType === "input") {
558
+ if (formField.fieldInputType === "text" || formField.fieldInputType === "textarea")
559
+ control.setValue(formValue ? formValue : "");
560
+ else if (formField.fieldInputType === "number")
561
+ control.setValue(formValue ? formValue : 0);
562
+ else if (formField.fieldInputType === "date") {
563
+ if (formValue && typeof formValue === "number") {
564
+ control.setValue(moment(formValue).tz(formField.fieldConfig.timezone).format(formField.fieldConfig.format));
565
+ }
566
+ else {
567
+ control.setValue(moment().tz(formField.fieldConfig.timezone).format(formField.fieldConfig.format));
568
+ }
569
+ }
570
+ }
571
+ else if (formField.fieldType === "singleSelect") {
572
+ const findSelectedValue = () => {
573
+ let index = formField.itemsList.findIndex(item => item.value === formValue);
574
+ return index >= 0 ? formField.itemsList[index] : "";
575
+ };
576
+ if (formField.fieldInputType === "dropdown") {
577
+ if (!formValue)
578
+ control.setValue(formField.itemsList[0]);
579
+ else
580
+ control.setValue(findSelectedValue());
581
+ }
582
+ else if (formField.fieldInputType === "radio") {
583
+ control.setValue(findSelectedValue());
584
+ }
585
+ }
586
+ else if (formField.fieldType === "multiSelect") {
587
+ if (formValue && Array.isArray(formValue)) {
588
+ let selectedValues = [];
589
+ for (let value of formValue) {
590
+ let index = formField.itemsList.findIndex(item => item.value === value);
591
+ if (index > -1)
592
+ selectedValues.push({ ...formField.itemsList[index] });
593
+ }
594
+ control.setValue(selectedValues);
595
+ }
596
+ else {
597
+ control.setValue([]);
598
+ }
599
+ }
600
+ else if (formField.fieldType === "boolean") {
601
+ control.setValue(!!formValue);
602
+ }
603
+ else
604
+ control.setValue(null);
605
+ return control;
606
+ }
607
+ mapFormFieldToFormValue(formField, formValue) {
608
+ if (formField.fieldType === "input") {
609
+ if (formField.fieldInputType === "text" || formField.fieldInputType === "textarea")
610
+ return formValue;
611
+ else if (formField.fieldInputType === "number")
612
+ return +formValue;
613
+ else if (formField.fieldInputType === "date") {
614
+ return moment.tz(formValue, formField.fieldConfig.format, formField.fieldConfig.timezone).valueOf();
615
+ }
616
+ }
617
+ else if (formField.fieldType === "singleSelect") {
618
+ return formValue?.value ?? '';
619
+ }
620
+ else if (formField.fieldType === "multiSelect") {
621
+ return formValue?.map(item => item.value);
622
+ }
623
+ else if (formField.fieldType === "boolean") {
624
+ return formValue;
625
+ }
626
+ else
627
+ return formValue;
628
+ }
629
+ }
630
+ DynamicFormComponent.ɵfac = function DynamicFormComponent_Factory(t) { return new (t || DynamicFormComponent)(); };
631
+ DynamicFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DynamicFormComponent, selectors: [["mis-dynamic-form"]], inputs: { formFields: "formFields", formValues: "formValues", activeBtnIconUrl: "activeBtnIconUrl", calendarIconUrl: "calendarIconUrl" }, outputs: { formUpdated: "formUpdated", formValid: "formValid", formInitialized: "formInitialized" }, decls: 7, vars: 2, consts: [[3, "formGroup"], ["formArrayName", "dynamicFields"], [3, "formGroupName", 4, "ngFor", "ngForOf"], ["dynamicField", ""], ["dynamicFieldErrors", ""], [3, "formGroupName"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], ["class", "sub-dynamic-form", 4, "ngIf"], [1, "sub-dynamic-form"], [4, "ngFor", "ngForOf"], ["class", "dynamic-field multi-line-field-container", 4, "ngIf"], ["class", "dynamic-field single-line-field-container", 4, "ngIf"], [1, "dynamic-field", "multi-line-field-container"], [1, "h7", "field-title-sm"], [2, "flex-basis", "100%"], [1, "input-field", "ip-text", 3, "type", "formControl", "ngStyle", "placeholder", "min", "ngModelChange"], [3, "ngTemplateOutlet", "ngTemplateOutletContext", 4, "ngIf"], ["type", "text", 1, "input-field", "ip-textarea", 3, "ngStyle", "placeholder", "formControl", "ngModelChange"], [1, "dynamic-field", "single-line-field-container"], [1, "h6"], [1, "date-picker-container"], ["readonly", "", "misTzDp", "", 1, "date-picker", 3, "dpConfig", "selectedDate", "offsetY", "value", "dateChange"], ["dp", ""], ["alt", "data-picker", "class", "date-picker-icon", 3, "src", "click", 4, "ngIf"], ["alt", "data-picker", 1, "date-picker-icon", 3, "src", "click"], [3, "control", "valueChanged"], [3, "searchEnabled", "width", "data", "selectedItem", "onChange"], ["id", "checkboxes-container"], ["class", "radio-checkbox-common", 3, "ngClass", "click", 4, "ngFor", "ngForOf"], [1, "radio-checkbox-common", 3, "ngClass", "click"], ["alt", "", 3, "src", 4, "ngIf"], ["alt", "", 3, "src"], [3, "width", "showSelectedCount", "dropdownListWidth", "searchEnabled", "hideApplyButton", "data", "selectedItems", "onChange"], ["id", "error-messages-container"], [1, "h8"], [2, "flex-basis", "100%", "height", "0"]], template: function DynamicFormComponent_Template(rf, ctx) { if (rf & 1) {
632
+ i0.ɵɵelementStart(0, "form", 0);
633
+ i0.ɵɵelementContainerStart(1, 1);
634
+ i0.ɵɵtemplate(2, DynamicFormComponent_ng_container_2_Template, 3, 8, "ng-container", 2);
635
+ i0.ɵɵelementContainerEnd();
636
+ i0.ɵɵelementEnd();
637
+ i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_Template, 8, 8, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
638
+ i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_5_Template, 3, 3, "ng-template", null, 4, i0.ɵɵtemplateRefExtractor);
639
+ } if (rf & 2) {
640
+ i0.ɵɵproperty("formGroup", ctx.dynamicForm);
641
+ i0.ɵɵadvance(2);
642
+ i0.ɵɵproperty("ngForOf", ctx.getDynamicFieldsControls().controls);
643
+ } }, dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, i1.NgStyle, i2.ɵNgNoValidate, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.FormControlDirective, i2.FormGroupDirective, i2.FormGroupName, i2.FormArrayName, i3.DropdownComponent, i4.SwitchComponent, i5.MultiSelectDropdownComponent, i6.TzDatepickerDirective, i1.KeyValuePipe], styles: ["p[_ngcontent-%COMP%]{margin:0;cursor:default} .main-container{margin:0;max-width:100%}.sub-dynamic-form[_ngcontent-%COMP%]{padding-left:24px}.dynamic-field[_ngcontent-%COMP%] .container{height:32px!important}.single-line-field-container[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;padding:28px 16px;border-bottom:1px solid var(--grey-seperators)}.multi-line-field-container[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:flex-start;padding:28px 16px;flex-wrap:wrap;border-bottom:1px solid var(--grey-seperators)}.field-title-sm[_ngcontent-%COMP%]{margin-bottom:8px;cursor:default}.input-field[_ngcontent-%COMP%]{width:100%;background-color:var(--grey-bg-1);border:1px solid var(--grey-seperators);border-radius:6px}.ip-text[_ngcontent-%COMP%]{height:44px;padding:8px 12px}.ip-textarea[_ngcontent-%COMP%]{max-height:94px;padding:8px}input[_ngcontent-%COMP%]:focus{outline:none}input[_ngcontent-%COMP%]::placeholder{color:var(--grey-seperators)}textarea[_ngcontent-%COMP%]:focus{outline:none}.date-picker-container[_ngcontent-%COMP%]{position:relative;width:140px}.date-picker-container[_ngcontent-%COMP%] .date-picker[_ngcontent-%COMP%]{cursor:pointer;height:32px;width:100%;font-size:14px;border-radius:6px;padding:0 12px;border:1px solid var(--grey-seperators);inset:10px auto auto 80px;background-color:var(--text-white)}.date-picker-container[_ngcontent-%COMP%] .date-picker[_ngcontent-%COMP%]:hover{background-color:var(--grey-hover)}.date-picker-container[_ngcontent-%COMP%] .date-picker-icon[_ngcontent-%COMP%]{position:absolute;top:50%;right:12px;transform:translateY(-50%);cursor:pointer}form[_ngcontent-%COMP%] .dynamic-field[_ngcontent-%COMP%]:last-child{border-bottom:none!important}#checkboxes-container[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}.radio-checkbox-common[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;cursor:pointer;margin-right:8px;margin-bottom:8px;background-color:var(--text-white);padding:12px 16px;border:1px solid var(--text-muted);border-radius:8px}.radio-checkbox-common[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--text-muted);cursor:pointer}.radio-checkbox-common[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{margin-right:8px}.checkbox-active[_ngcontent-%COMP%]{background-color:var(--pmry-500)}.checkbox-active[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--text-white)}#error-messages-container[_ngcontent-%COMP%]{margin-top:4px;width:100%;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}#error-messages-container[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--sem-error)}"] });
644
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DynamicFormComponent, [{
645
+ type: Component,
646
+ args: [{ selector: "mis-dynamic-form", template: "<form [formGroup]=\"dynamicForm\">\n <ng-container formArrayName=\"dynamicFields\">\n <ng-container [formGroupName]=\"i\" *ngFor=\"let fieldControl of getDynamicFieldsControls().controls; let i = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: formFields[i],\n formGroup: fieldControl,\n control: fieldControl.controls.value\n }\"\n >\n </ng-container>\n <div class=\"sub-dynamic-form\" *ngIf=\"fieldControl.value && (!!formFields[i]?.subFields && formFields[i]?.subFields?.length > 0 && matchParentConfig(formFields[i]?.subFields, fieldControl.controls.value.value.value))\">\n <ng-container *ngFor=\"let subFieldControl of fieldControl.controls.subFields.controls;\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: formFields[i].subFields[findSelectedIndex(formFields[i]?.subFields, fieldControl.controls.value.value.value)],\n control: subFieldControl\n }\">\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</form>\n\n\n<ng-template #dynamicField let-field let-control=\"control\" let-formgroup=\"formGroup\">\n\n <!-- fieldType: 'input' fieldInputType: 'text' | 'number' -->\n <div class=\"dynamic-field multi-line-field-container\"\n *ngIf=\"field.fieldType === 'input' && (field.fieldInputType === 'text' || field.fieldInputType === 'number')\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <input class=\"input-field ip-text\" [type]=\"field.fieldInputType\" [formControl]=\"control\"\n (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\" \n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" \n [min]=\"field.fieldInputType === 'number' ? 0 : '' \"/>\n <ng-container *ngIf=\"control.touched && control.errors\"\n [ngTemplateOutlet]=\"dynamicFieldErrors\" \n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\"\n >\n </ng-container>\n </div>\n\n <!-- fieldType: 'input' fieldInputType: 'textarea' -->\n <div class=\"dynamic-field multi-line-field-container\"\n *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'textarea'\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <textarea class=\"input-field ip-textarea\" type=\"text\"\n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" [formControl]=\"control\" (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\"></textarea>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'input' fieldInputType: 'date' -->\n <div class=\"dynamic-field single-line-field-container\"\n *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'date'\">\n <p class=\"h6\">\n {{ field.title }}\n </p>\n <div class=\"date-picker-container\">\n <input class=\"date-picker\" readonly misTzDp [dpConfig]=\"field.fieldConfig\"\n (dateChange)=\"control.setValue($event)\" [selectedDate]=\"control.value\" [offsetY]=\"0\"\n [value]=\"control.value\" #dp />\n <img alt=\"data-picker\" *ngIf=\"calendarIconUrl\" class=\"date-picker-icon\" [src]=\"calendarIconUrl\"\n (click)=\"dp.click()\" />\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'boolean' fieldInputType: 'toggle' -->\n <div class=\"dynamic-field single-line-field-container\"\n *ngIf=\"field.fieldType === 'boolean' && field.fieldInputType === 'toggle'\">\n <p class=\"h6\">\n {{ field.title }}\n </p>\n <mis-switch [control]=\"control\" (valueChanged)=\"updateSubDynamicFields(field, formgroup, $event)\"></mis-switch>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'singleSelect' fieldInputType: 'dropdown' -->\n <div class=\"dynamic-field single-line-field-container\"\n *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'dropdown'\">\n <p class=\"h6\">\n {{ field.title }}\n </p>\n <mis-dropdown [searchEnabled]=\"false\" [width]=\"'140px'\" [data]=\"field.itemsList\" [selectedItem]=\"control.value\"\n (onChange)=\"updateSelectedValueForSingleSelect(field, control, formgroup, $event);\">\n </mis-dropdown>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'singleSelect' fieldInputType: 'radio' -->\n <div class=\"dynamic-field multi-line-field-container\"\n *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'radio'\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': item.label === control.value?.label }\"\n (click)=\"updateSelectedValueForSingleSelect(field, control, formgroup, item);\">\n <img *ngIf=\"(item.label === control.value?.label) && activeBtnIconUrl\" [src]=\"activeBtnIconUrl\" alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'multiSelect' fieldInputType: 'checkbox' -->\n <div class=\"dynamic-field multi-line-field-container\"\n *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'checkbox'\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': isCheckBoxSelected(item.label, control.value) }\"\n (click)=\"updateSelectedValueForMultiSelect(field, control, formgroup, [item])\">\n <img *ngIf=\"isCheckBoxSelected(item.label, control.value) && activeBtnIconUrl\" [src]=\"activeBtnIconUrl\"\n alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'multiSelect' fieldInputType: 'dropdown' -->\n <div class=\"dynamic-field single-line-field-container\"\n *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'dropdown'\">\n <p class=\"h6\">\n {{ field.title }}\n </p>\n <mis-multi-select-dropdown [width]=\"'140px'\" [showSelectedCount]=\"true\" [dropdownListWidth]=\"'256px'\"\n [searchEnabled]=\"false\" [hideApplyButton]=\"true\" [data]=\"field.itemsList\"\n [selectedItems]=\"control.value\" (onChange)=\"updateSelectedValueForMultiSelect(field, control, formgroup, $event);\"></mis-multi-select-dropdown>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n</ng-template>\n\n<ng-template #dynamicFieldErrors let-errors>\n <div id=\"error-messages-container\">\n <ng-container *ngFor=\"let error of errors | keyvalue\">\n <p class=\"h8\">\n {{\" \u2022 &nbsp;\" + error.value}}\n </p>\n <div style=\"flex-basis: 100%; height: 0\"></div>\n </ng-container>\n </div>\n</ng-template>", styles: ["p{margin:0;cursor:default}::ng-deep .main-container{margin:0;max-width:100%}.sub-dynamic-form{padding-left:24px}.dynamic-field ::ng-deep .container{height:32px!important}.single-line-field-container{display:flex;justify-content:space-between;align-items:center;padding:28px 16px;border-bottom:1px solid var(--grey-seperators)}.multi-line-field-container{display:flex;justify-content:flex-start;align-items:flex-start;padding:28px 16px;flex-wrap:wrap;border-bottom:1px solid var(--grey-seperators)}.field-title-sm{margin-bottom:8px;cursor:default}.input-field{width:100%;background-color:var(--grey-bg-1);border:1px solid var(--grey-seperators);border-radius:6px}.ip-text{height:44px;padding:8px 12px}.ip-textarea{max-height:94px;padding:8px}input:focus{outline:none}input::placeholder{color:var(--grey-seperators)}textarea:focus{outline:none}.date-picker-container{position:relative;width:140px}.date-picker-container .date-picker{cursor:pointer;height:32px;width:100%;font-size:14px;border-radius:6px;padding:0 12px;border:1px solid var(--grey-seperators);inset:10px auto auto 80px;background-color:var(--text-white)}.date-picker-container .date-picker:hover{background-color:var(--grey-hover)}.date-picker-container .date-picker-icon{position:absolute;top:50%;right:12px;transform:translateY(-50%);cursor:pointer}form .dynamic-field:last-child{border-bottom:none!important}#checkboxes-container{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}.radio-checkbox-common{display:flex;justify-content:center;align-items:center;cursor:pointer;margin-right:8px;margin-bottom:8px;background-color:var(--text-white);padding:12px 16px;border:1px solid var(--text-muted);border-radius:8px}.radio-checkbox-common p{color:var(--text-muted);cursor:pointer}.radio-checkbox-common img{margin-right:8px}.checkbox-active{background-color:var(--pmry-500)}.checkbox-active p{color:var(--text-white)}#error-messages-container{margin-top:4px;width:100%;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}#error-messages-container p{color:var(--sem-error)}\n"] }]
647
+ }], function () { return []; }, { formFields: [{
648
+ type: Input
649
+ }], formValues: [{
650
+ type: Input
651
+ }], activeBtnIconUrl: [{
652
+ type: Input
653
+ }], calendarIconUrl: [{
654
+ type: Input
655
+ }], formUpdated: [{
656
+ type: Output
657
+ }], formValid: [{
658
+ type: Output
659
+ }], formInitialized: [{
660
+ type: Output
661
+ }] }); })();
662
+ export const dynamicFieldValidator = (validators) => {
663
+ return (control) => {
664
+ let value = control.value;
665
+ if (Array.isArray(value)) {
666
+ return null;
667
+ }
668
+ else if (typeof value === 'object') {
669
+ value = value?.value ? value.value : '';
670
+ }
671
+ let errors = null;
672
+ validators.forEach((validator) => {
673
+ let error = null;
674
+ let message = validator.message;
675
+ switch (validator.type) {
676
+ case "Required":
677
+ error = Validators.required(control);
678
+ if (error)
679
+ error = { Required: message };
680
+ break;
681
+ case "MinLength":
682
+ error = Validators.minLength(+validator.value)(control);
683
+ message = message.replace('${0}', error?.minlength.requiredLength);
684
+ if (error)
685
+ error = { MinLength: message };
686
+ break;
687
+ case "MaxLength":
688
+ error = Validators.maxLength(+validator.value)(control);
689
+ message = message.replace('${0}', error?.actualLength);
690
+ if (error)
691
+ error = { MaxLength: message };
692
+ break;
693
+ case "Email":
694
+ error = Validators.email(control);
695
+ if (error)
696
+ error = { Email: message };
697
+ break;
698
+ case "Custom":
699
+ error = Validators.pattern(`${validator.value}`)(control);
700
+ if (error)
701
+ error = { Custom: message };
702
+ break;
703
+ default:
704
+ break;
705
+ }
706
+ if (error)
707
+ errors = { ...errors, ...error };
708
+ });
709
+ return errors;
710
+ };
711
+ };
712
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBZ0IsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEcsT0FBTyxFQUFtQixnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBaUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEosT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxpQkFBaUIsQ0FBQzs7Ozs7Ozs7OztJQ1FqQiw2QkFBd0Y7SUFDdEYsMkJBTWU7SUFDakIsMEJBQWU7Ozs7Ozs7O0lBTlgsZUFBaUM7SUFBakMsc0NBQWlDLGdRQUFBOzs7SUFIdkMsOEJBQXlOO0lBQ3ZOLDRHQVFlO0lBQ2pCLGlCQUFNOzs7SUFUc0MsZUFBNEM7SUFBNUMscUVBQTRDOzs7O0lBWDFGLGdDQUFrSDtJQUM5RywyQkFRYTtJQUNmLG9GQVVNO0lBQ1IsMEJBQWU7Ozs7OztJQXJCRCxvQ0FBbUI7SUFFN0IsZUFBaUM7SUFBakMsc0NBQWlDLGlJQUFBO0lBUUosZUFBd0w7SUFBeEwsa2FBQXdMOzs7O0lBOEJ6TiwyQkFJZTs7Ozs7SUFIYixzQ0FBdUMsMkVBQUE7Ozs7O0lBWjNDLCtCQUNnSCxZQUFBO0lBRTVHLFlBQ0Y7SUFBQSxpQkFBSTtJQUNKLDBCQUFvQztJQUNwQyxpQ0FJdUQ7SUFIckQsd1RBQWlCLGVBQUEsZ0VBQWdELENBQUEsSUFBQztJQURwRSxpQkFJdUQ7SUFDdkQsNEdBSWU7SUFDakIsaUJBQU07Ozs7O0lBYkYsZUFDRjtJQURFLGdEQUNGO0lBRW1DLGVBQTZCO0lBQTdCLCtDQUE2Qiw0QkFBQSw2R0FBQSxxRkFBQSx1REFBQTtJQUtqRCxlQUF1QztJQUF2QyxnRUFBdUM7OztJQWlCcEQsMkJBRWU7Ozs7O0lBRnlDLHNDQUF1QywyRUFBQTs7OztJQVRuRywrQkFDNkUsWUFBQTtJQUV6RSxZQUNGO0lBQUEsaUJBQUk7SUFDSiwwQkFBb0M7SUFDcEMsb0NBRTBLO0lBQW5FLDJUQUFpQixlQUFBLGdFQUFnRCxDQUFBLElBQUM7SUFBQyxpQkFBVztJQUNuTCw0R0FFZTtJQUNuQixpQkFBTTs7Ozs7SUFURixlQUNGO0lBREUsZ0RBQ0Y7SUFHRSxlQUFtRjtJQUFuRiwwSEFBbUYscUZBQUEsNEJBQUE7SUFFcEUsZUFBdUM7SUFBdkMsZ0VBQXVDOzs7O0lBZXRELCtCQUN5QjtJQUF2QixvTUFBUyxlQUFBLFlBQVUsQ0FBQSxJQUFDO0lBRHRCLGlCQUN5Qjs7O0lBRCtDLCtEQUF1Qjs7O0lBR2pHLDJCQUVlOzs7OztJQUZ5QyxzQ0FBdUMsMkVBQUE7Ozs7SUFaakcsK0JBQ3lFLFlBQUE7SUFFckUsWUFDRjtJQUFBLGlCQUFJO0lBQ0osK0JBQW1DLG9CQUFBO0lBRS9CLDRNQUFjLGVBQUEsNEJBQXdCLENBQUEsSUFBQztJQUR6QyxpQkFFZ0M7SUFDaEMsMEZBQ3lCO0lBQzNCLGlCQUFNO0lBQ04sNEdBRWU7SUFDakIsaUJBQU07Ozs7OztJQVpGLGVBQ0Y7SUFERSxnREFDRjtJQUU4QyxlQUE4QjtJQUE5QixnREFBOEIsbUNBQUEsY0FBQSw0QkFBQTtJQUdsRCxlQUFxQjtJQUFyQiw4Q0FBcUI7SUFHaEMsZUFBdUM7SUFBdkMsZ0VBQXVDOzs7SUFZdEQsMkJBRWU7Ozs7O0lBRnlDLHNDQUF1QywyRUFBQTs7OztJQU5qRywrQkFDNkUsWUFBQTtJQUV6RSxZQUNGO0lBQUEsaUJBQUk7SUFDSixzQ0FBa0c7SUFBbEUsMlRBQWdCLGVBQUEsZ0VBQWdELENBQUEsSUFBQztJQUFDLGlCQUFhO0lBQy9HLDRHQUVlO0lBQ2pCLGlCQUFNOzs7OztJQU5GLGVBQ0Y7SUFERSxnREFDRjtJQUNZLGVBQW1CO0lBQW5CLHFDQUFtQjtJQUNoQixlQUF1QztJQUF2QyxnRUFBdUM7OztJQWN0RCwyQkFFZTs7Ozs7SUFGeUMsc0NBQXVDLDJFQUFBOzs7O0lBUmpHLCtCQUNvRixZQUFBO0lBRWhGLFlBQ0Y7SUFBQSxpQkFBSTtJQUNKLHdDQUNzRjtJQUFwRiwwVkFBWSxlQUFBLHlGQUFxRSxDQUFBLElBQUU7SUFDckYsaUJBQWU7SUFDZiw0R0FFZTtJQUNqQixpQkFBTTs7Ozs7SUFSRixlQUNGO0lBREUsZ0RBQ0Y7SUFDYyxlQUF1QjtJQUF2QixxQ0FBdUIsa0JBQUEsNkJBQUEsbUNBQUE7SUFHdEIsZUFBdUM7SUFBdkMsZ0VBQXVDOzs7SUFnQmxELDBCQUF5Rzs7O0lBQWxDLGdFQUF3Qjs7Ozs7SUFIakcsK0JBRWlGO0lBQS9FLHdZQUFTLGVBQUEsMkZBQW1FLENBQUEsSUFBRTtJQUM5RSxnR0FBeUc7SUFDekcsNkJBQWM7SUFBQSxZQUFnQjtJQUFBLGlCQUFJLEVBQUE7Ozs7O0lBSGxDLHFJQUFzRTtJQUVoRSxlQUErRDtJQUEvRCxrSUFBK0Q7SUFDdkQsZUFBZ0I7SUFBaEIsb0NBQWdCOzs7SUFHbEMsMkJBRWU7Ozs7O0lBRnlDLHNDQUF1QywyRUFBQTs7O0lBZGpHLCtCQUNpRixZQUFBO0lBRTdFLFlBQ0Y7SUFBQSxpQkFBSTtJQUNKLDBCQUFvQztJQUNwQywrQkFBK0I7SUFDN0IsMEZBS007SUFDUixpQkFBTTtJQUNOLDRHQUVlO0lBQ2pCLGlCQUFNOzs7OztJQWRGLGVBQ0Y7SUFERSxnREFDRjtJQUdzRCxlQUFrQjtJQUFsQiw2Q0FBa0I7SUFPekQsZUFBdUM7SUFBdkMsZ0VBQXVDOzs7SUFnQmxELDBCQUNXOzs7SUFEb0UsZ0VBQXdCOzs7O0lBSHpHLCtCQUVpRjtJQUEvRSx3WUFBUyxlQUFBLDRGQUFvRSxDQUFBLElBQUM7SUFDOUUsZ0dBQ1c7SUFDWCw2QkFBYztJQUFBLFlBQWdCO0lBQUEsaUJBQUksRUFBQTs7Ozs7SUFKbEMsbUhBQWdGO0lBRTFFLGVBQXVFO0lBQXZFLGdIQUF1RTtJQUUvRCxlQUFnQjtJQUFoQixvQ0FBZ0I7OztJQUdsQywyQkFFZTs7Ozs7SUFGeUMsc0NBQXVDLDJFQUFBOzs7SUFmakcsK0JBQ21GLFlBQUE7SUFFL0UsWUFDRjtJQUFBLGlCQUFJO0lBQ0osMEJBQW9DO0lBQ3BDLCtCQUErQjtJQUM3QiwwRkFNTTtJQUNSLGlCQUFNO0lBQ04sNEdBRWU7SUFDakIsaUJBQU07Ozs7O0lBZkYsZUFDRjtJQURFLGdEQUNGO0lBR3NELGVBQWtCO0lBQWxCLDZDQUFrQjtJQVF6RCxlQUF1QztJQUF2QyxnRUFBdUM7OztJQWN0RCwyQkFFZTs7Ozs7SUFGeUMsc0NBQXVDLDJFQUFBOzs7O0lBUmpHLCtCQUNtRixZQUFBO0lBRS9FLFlBQ0Y7SUFBQSxpQkFBSTtJQUNKLHFEQUVxSDtJQUFuRix1V0FBWSxlQUFBLHdGQUFvRSxDQUFBLElBQUU7SUFBQyxpQkFBNEI7SUFDakosNEdBRWU7SUFDakIsaUJBQU07Ozs7O0lBUkYsZUFDRjtJQURFLGdEQUNGO0lBQzJCLGVBQWlCO0lBQWpCLCtCQUFpQiwyQkFBQSw4QkFBQSx3QkFBQSx5QkFBQSw2QkFBQSxvQ0FBQTtJQUc3QixlQUF1QztJQUF2QyxnRUFBdUM7OztJQS9IeEQsb0ZBZ0JNO0lBR04sb0ZBWU07SUFHTixvRkFlTTtJQUdOLG9GQVNNO0lBR04sb0ZBV007SUFHTixvRkFpQk07SUFHTixvRkFrQk07SUFHTixvRkFXTTs7O0lBaklILHdJQUEyRztJQW1CM0csZUFBd0U7SUFBeEUsaUdBQXdFO0lBZXhFLGVBQW9FO0lBQXBFLDZGQUFvRTtJQWtCcEUsZUFBd0U7SUFBeEUsaUdBQXdFO0lBWXhFLGVBQStFO0lBQS9FLHdHQUErRTtJQWMvRSxlQUE0RTtJQUE1RSxxR0FBNEU7SUFvQjVFLGVBQThFO0lBQTlFLHVHQUE4RTtJQXFCOUUsZUFBOEU7SUFBOUUsdUdBQThFOzs7SUFnQi9FLDZCQUFzRDtJQUNwRCw2QkFBYztJQUNaLFlBQ0Y7SUFBQSxpQkFBSTtJQUNKLDBCQUErQztJQUNqRCwwQkFBZTs7O0lBSFgsZUFDRjtJQURFLG1FQUNGOzs7SUFKSiwrQkFBbUM7SUFDakMscUdBS2U7O0lBQ2pCLGlCQUFNOzs7SUFONEIsZUFBb0I7SUFBcEIsMERBQW9COztBRDFKeEQsTUFBTSxPQUFPLG9CQUFvQjtJQWdDL0I7UUEvQkE7Ozs7V0FJRztRQUNNLGVBQVUsR0FBdUMsRUFBRSxDQUFDO1FBQ3BELGVBQVUsR0FBMkIsRUFBRSxDQUFDO1FBQ2pELG9EQUFvRDtRQUMzQyxxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDdEIsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFNOUI7O1dBRUc7UUFDTyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUEwQixDQUFDO1FBQ25FOztXQUVHO1FBQ08sY0FBUyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDbEQ7O1dBRUc7UUFDTyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFLckMsQ0FBQztJQUVoQixRQUFRO1FBQ04sb0JBQW9CO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTlFLGtEQUFrRDtRQUNsRCxJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ25GLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO1FBRUgseUJBQXlCO1FBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUc7WUFDcEIsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO2dCQUN0QixPQUFPLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNyRixDQUFDO1NBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLHlCQUF5QixFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFDRCxrQkFBa0I7UUFDaEIsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzdGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUN6QixDQUFDO0lBQ0QsZ0NBQWdDLENBQUMsVUFBc0I7UUFDckQsSUFBSSxrQkFBa0IsR0FBRyxFQUFFLENBQUM7UUFDNUIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUN2QyxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUYsSUFBSSxVQUFVLENBQUMsU0FBUyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ3BDLElBQUksd0JBQXdCLEdBQUcsRUFBRSxDQUFBO2dCQUNqQyxVQUFVLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUUsRUFBRTtvQkFDdkQsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUE7b0JBQzdELHdCQUF3QixDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxDQUFBO2dCQUMvRyxDQUFDLENBQUMsQ0FBQTtnQkFDRixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHO29CQUN0RCxLQUFLLEVBQUUsY0FBYztvQkFDckIsU0FBUyxFQUFFLHdCQUF3QjtpQkFDcEMsQ0FBQTthQUNGO2lCQUNJO2dCQUNILGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsY0FBYyxDQUFDO2FBQ3hFO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLGtCQUFrQixDQUFDO0lBQzVCLENBQUM7SUFDRCxtQkFBbUIsQ0FDakIsVUFBOEMsRUFDOUMsVUFBa0M7UUFFbEMsSUFBSSxTQUFTLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUV4QyxLQUFLLElBQUksS0FBSyxJQUFJLFVBQVUsRUFBRTtZQUM1QixJQUFJLFVBQVUsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUE7WUFDeEgsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNuRSxJQUFJLGlCQUFpQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3RixTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksZ0JBQWdCLENBQUM7Z0JBQ2xDLEtBQUssRUFBRSxZQUFZO2dCQUNuQixTQUFTLEVBQUUsaUJBQWlCO2FBQzdCLENBQUMsQ0FBQyxDQUFBO1NBQ0o7UUFDRCxPQUFPLElBQUksZ0JBQWdCLENBQUM7WUFDMUIsYUFBYSxFQUFFLFNBQVM7U0FDekIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELHdCQUF3QjtRQUN0QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBcUIsQ0FBQztJQUNuRSxDQUFDO0lBQ0Qsc0JBQXNCLENBQ3BCLEtBQWtDLEVBQ2xDLFNBQTJCLEVBQzNCLEtBQVU7UUFFVixJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMvQixJQUFJLGlCQUFpQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNyRixTQUFTLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1lBQ3BDLFNBQVMsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLGlCQUFpQixDQUFDLENBQUE7U0FDckQ7SUFDSCxDQUFDO0lBQ0Qsa0NBQWtDLENBQ2hDLEtBQWtDLEVBQ2xDLE9BQTJCLEVBQzNCLFNBQTJCLEVBQzNCLEtBQVU7UUFFVixJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxLQUFLLEtBQUssQ0FBQyxLQUFLLEVBQUU7WUFDeEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN6Qjs7WUFDSSxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JELE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBQ0QsaUNBQWlDLENBQy9CLEtBQWtDLEVBQ2xDLE9BQTJCLEVBQzNCLFNBQTJCLEVBQzNCLE1BQWtCO1FBRWxCLElBQUksY0FBYyxHQUF5QyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQ3pFLEtBQUssSUFBSSxLQUFLLElBQUksTUFBTSxFQUFFO1lBQ3hCLElBQUksU0FBUyxHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3RSxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDbEIsY0FBYyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDckM7aUJBQU07Z0JBQ0wsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQzthQUNuQztTQUNGO1FBQ0QsT0FBTyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN0RCxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUNELGtCQUFrQixDQUFDLEtBQWEsRUFBRSxjQUF1RDtRQUN2RixPQUFPLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsS0FBSztRQUNoQyxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixLQUFLLEtBQUssQ0FBQyxDQUFDO1FBQ3BGLE9BQU8sYUFBYSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsU0FBUyxFQUFFLEtBQUs7UUFDaEMsSUFBSSxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN4QyxPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixLQUFLLEtBQUssQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCx3QkFBd0IsQ0FDdEIsVUFBZSxFQUNmLFdBQXdDLEVBQ3hDLFdBQTJIO1FBRTNILElBQUksUUFBUSxHQUFHLElBQUksZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDdkMsSUFBSSxTQUFTLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQTtRQUNyQyxJQUFJLGVBQWUsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUN2SCxJQUFHLENBQUMsU0FBUztZQUFFLE9BQU8sUUFBUSxDQUFDO1FBQy9CLElBQUksV0FBVyxDQUFDLFNBQVMsS0FBSyxjQUFjLEVBQUU7WUFDNUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsS0FBdUMsV0FBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ2xJO2FBQ0ksSUFBSSxXQUFXLENBQUMsU0FBUyxLQUFLLGFBQWEsRUFBRTtZQUNoRCxJQUFJLFlBQVksR0FBRyxJQUFJLEdBQUcsQ0FBb0QsV0FBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDeEgsU0FBUyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztTQUMxRjtRQUVELElBQUksU0FBUyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdkIsS0FBSyxJQUFJLFFBQVEsSUFBSSxTQUFTLEVBQUU7Z0JBQzlCLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQTthQUM1RjtTQUNGO1FBQ0gsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUNELHVCQUF1QixDQUFDLFNBQXNDLEVBQUUsU0FBYztRQUM1RSxJQUFJLFVBQVUsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQyxFQUFFLENBQUE7UUFDekYsSUFBSSxPQUFPLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFdkQsSUFBSSxTQUFTLENBQUMsU0FBUyxLQUFLLE9BQU8sRUFBRTtZQUNuQyxJQUFJLFNBQVMsQ0FBQyxjQUFjLEtBQUssTUFBTSxJQUFJLFNBQVMsQ0FBQyxjQUFjLEtBQUssVUFBVTtnQkFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDNUgsSUFBSSxTQUFTLENBQUMsY0FBYyxLQUFLLFFBQVE7Z0JBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3ZGLElBQUksU0FBUyxDQUFDLGNBQWMsS0FBSyxNQUFNLEVBQUU7Z0JBQzVDLElBQUksU0FBUyxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsRUFBRTtvQkFDOUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztpQkFDN0c7cUJBQU07b0JBQ0wsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2lCQUNwRzthQUNGO1NBQ0Y7YUFBTSxJQUFJLFNBQVMsQ0FBQyxTQUFTLEtBQUssY0FBYyxFQUFFO1lBQ2pELE1BQU0saUJBQWlCLEdBQUcsR0FBRyxFQUFFO2dCQUM3QixJQUFJLEtBQUssR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUE7Z0JBQzNFLE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3JELENBQUMsQ0FBQTtZQUNELElBQUksU0FBUyxDQUFDLGNBQWMsS0FBSyxVQUFVLEVBQUU7Z0JBQzNDLElBQUksQ0FBQyxTQUFTO29CQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztvQkFDcEQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUE7YUFDM0M7aUJBQ0ksSUFBSSxTQUFTLENBQUMsY0FBYyxLQUFLLE9BQU8sRUFBRTtnQkFDN0MsT0FBTyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUE7YUFDdEM7U0FDRjthQUFNLElBQUksU0FBUyxDQUFDLFNBQVMsS0FBSyxhQUFhLEVBQUU7WUFDaEQsSUFBSSxTQUFTLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDekMsSUFBSSxjQUFjLEdBQUcsRUFBRSxDQUFDO2dCQUN4QixLQUFLLElBQUksS0FBSyxJQUFJLFNBQVMsRUFBRTtvQkFDM0IsSUFBSSxLQUFLLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxDQUFDO29CQUN4RSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7d0JBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ3hFO2dCQUNELE9BQU8sQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDbEM7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUN0QjtTQUNGO2FBQU0sSUFBSSxTQUFTLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRTtZQUM1QyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUMvQjs7WUFBTSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFDRCx1QkFBdUIsQ0FBQyxTQUFzQyxFQUFFLFNBQWM7UUFDNUUsSUFBSSxTQUFTLENBQUMsU0FBUyxLQUFLLE9BQU8sRUFBRTtZQUNuQyxJQUFJLFNBQVMsQ0FBQyxjQUFjLEtBQUssTUFBTSxJQUFJLFNBQVMsQ0FBQyxjQUFjLEtBQUssVUFBVTtnQkFBRSxPQUFPLFNBQVMsQ0FBQztpQkFDaEcsSUFBSSxTQUFTLENBQUMsY0FBYyxLQUFLLFFBQVE7Z0JBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQztpQkFDN0QsSUFBSSxTQUFTLENBQUMsY0FBYyxLQUFLLE1BQU0sRUFBRTtnQkFDNUMsT0FBTyxNQUFNLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ3JHO1NBQ0Y7YUFBTSxJQUFJLFNBQVMsQ0FBQyxTQUFTLEtBQUssY0FBYyxFQUFFO1lBQ2pELE9BQU8sU0FBUyxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUM7U0FDL0I7YUFBTSxJQUFJLFNBQVMsQ0FBQyxTQUFTLEtBQUssYUFBYSxFQUFFO1lBQ2hELE9BQU8sU0FBUyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMzQzthQUFNLElBQUksU0FBUyxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUU7WUFDNUMsT0FBTyxTQUFTLENBQUM7U0FDbEI7O1lBQU0sT0FBTyxTQUFTLENBQUM7SUFDMUIsQ0FBQzs7d0ZBcFBVLG9CQUFvQjt1RUFBcEIsb0JBQW9CO1FDYmpDLCtCQUFnQztRQUM5QixnQ0FBNEM7UUFDMUMsdUZBcUJlO1FBQ2pCLDBCQUFlO1FBQ2pCLGlCQUFPO1FBR1Asc0hBdUljO1FBRWQsc0hBU2M7O1FBOUtSLDJDQUF5QjtRQUVnQyxlQUF3QztRQUF4QyxpRUFBd0M7O3VGRFcxRixvQkFBb0I7Y0FMaEMsU0FBUzsyQkFDRSxrQkFBa0I7c0NBVW5CLFVBQVU7a0JBQWxCLEtBQUs7WUFDRyxVQUFVO2tCQUFsQixLQUFLO1lBRUcsZ0JBQWdCO2tCQUF4QixLQUFLO1lBQ0csZUFBZTtrQkFBdkIsS0FBSztZQVNJLFdBQVc7a0JBQXBCLE1BQU07WUFJRyxTQUFTO2tCQUFsQixNQUFNO1lBSUcsZUFBZTtrQkFBeEIsTUFBTTs7QUE0TlQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxVQUF1RCxFQUFlLEVBQUU7SUFDNUcsT0FBTyxDQUFDLE9BQXdCLEVBQTJCLEVBQUU7UUFDM0QsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQTtRQUN6QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDeEIsT0FBTyxJQUFJLENBQUM7U0FDYjthQUNJLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQ2xDLEtBQUssR0FBRyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7U0FDeEM7UUFDRCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUE7UUFFakIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQy9CLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQTtZQUNoQixJQUFJLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFBO1lBQy9CLFFBQVEsU0FBUyxDQUFDLElBQUksRUFBRTtnQkFDdEIsS0FBSyxVQUFVO29CQUNiLEtBQUssR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFBO29CQUNwQyxJQUFHLEtBQUs7d0JBQUUsS0FBSyxHQUFHLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBQyxDQUFBO29CQUNyQyxNQUFNO2dCQUNSLEtBQUssV0FBVztvQkFDZCxLQUFLLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtvQkFDdkQsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUE7b0JBQ2xFLElBQUcsS0FBSzt3QkFBRSxLQUFLLEdBQUcsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUE7b0JBQ3hDLE1BQU07Z0JBQ1IsS0FBSyxXQUFXO29CQUNkLEtBQUssR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO29CQUN2RCxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFBO29CQUN0RCxJQUFHLEtBQUs7d0JBQUUsS0FBSyxHQUFHLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFBO29CQUN4QyxNQUFNO2dCQUNSLEtBQUssT0FBTztvQkFDVixLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtvQkFDakMsSUFBRyxLQUFLO3dCQUFFLEtBQUssR0FBRyxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUMsQ0FBQTtvQkFDbEMsTUFBTTtnQkFDUixLQUFLLFFBQVE7b0JBQ1gsS0FBSyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtvQkFDekQsSUFBRyxLQUFLO3dCQUFFLEtBQUssR0FBRyxFQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUMsQ0FBQTtvQkFDbkMsTUFBTTtnQkFDUjtvQkFDRSxNQUFNO2FBQ1Q7WUFDRCxJQUFJLEtBQUs7Z0JBQUUsTUFBTSxHQUFHLEVBQUUsR0FBRyxNQUFNLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQTtRQUM3QyxDQUFDLENBQUMsQ0FBQTtRQUNGLE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQyxDQUFBO0FBQ0gsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTnNEeW5hbWljRm9ybSB9IGZyb20gXCIuL2R5bmFtaWMtZm9ybS5uYW1lc3BhY2VcIjtcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVW50eXBlZEZvcm1BcnJheSwgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSBcIm1vbWVudFwiO1xuaW1wb3J0IFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWlzLWR5bmFtaWMtZm9ybVwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vZHluYW1pYy1mb3JtLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogZm9ybUZpZWxkczogIER5bmFtaWMgZmllbGRzIHJlY2lldmVkIGZyb20gdGhlIEFQSSBtZXRhZGF0YSB0byBidWlsZCBhIGR5bmFtaWMgZm9ybVxuICAgKiBmb3JtVmFsdWVzOiAgSG9sZHMgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZvcm0gd2l0aCBcImtleVwiIGJlaW5nIGR5bmFtaWMgZmllbGQgXCJ0aXRsZVwiXG4gICAqICAgICAgICAgICAgICBhbmQgdmFsdWUgYmVpbmcgdGhlIHVzZXIgaW5wdXQuXG4gICAqL1xuICBASW5wdXQoKSBmb3JtRmllbGRzOiBBcnJheTxOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQ+ID0gW107XG4gIEBJbnB1dCgpIGZvcm1WYWx1ZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgLy8gTmVlZCB0byBkZXByZWNhdGUgdGhlc2UgaW5wdXRzIGFuZCB1c2UgY29uc3RhbnRzLlxuICBASW5wdXQoKSBhY3RpdmVCdG5JY29uVXJsID0gXCJcIjtcbiAgQElucHV0KCkgY2FsZW5kYXJJY29uVXJsID0gXCJcIjtcbiAgLyoqXG4gICAqIGR5bmFtaWNGb3JtOiBDb25zdHJ1Y3RlZCB1c2luZyBmb3JtRmllbGRzIGFuZCBmb3JtVmFsdWVzKGluIGNhc2Ugb2YgZWRpdClcbiAgICovXG4gIGR5bmFtaWNGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIC8qKlxuICAgKiBmb3JtVXBkYXRlZDogRW1pdHMgZm9ybVZhbHVlcyBPYmplY3Qgd2hlbmV2ZXIgdGhlcmUgaXMgYSBjaGFuZ2UgaW4gdGhlIGR5bmFtaWMgZm9ybS5cbiAgICovXG4gIEBPdXRwdXQoKSBmb3JtVXBkYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBba2V5OiBzdHJpbmddOiBhbnkgfT4oKTtcbiAgLyoqXG4gICAqIGZvcm1WYWxpZDogRW1pdHMgYm9vbGVhbiBkZXBlbmRpbmcgb24gdmFsaWRpdHkgb2YgdGhlIGZvcm1cbiAgICovXG4gIEBPdXRwdXQoKSBmb3JtVmFsaWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIC8qKlxuICAgKiBmb3JtSW5pdGlhbGl6ZWQ6IEVtaXRzIGR5bmFtaWMgZm9ybSBBUEkgb24gZm9ybSBpbml0aWxpemF0aW9uXG4gICAqL1xuICBAT3V0cHV0KCkgZm9ybUluaXRpYWxpemVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgZHluYW1pY0Zvcm1BUEk6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGb3JtQVBJO1xuICB2YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24kOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIEJ1aWxkaW5nIHRoZSBmb3JtXG4gICAgdGhpcy5keW5hbWljRm9ybSA9IHRoaXMuZ2VuZXJhdGVEeW5hbWljRm9ybSh0aGlzLmZvcm1GaWVsZHMsIHRoaXMuZm9ybVZhbHVlcyk7XG5cbiAgICAvLyBTdWJzY3JpYmluZyB0byBmb3JtIGNoYW5nZXMgYW5kIGVtaXRpbmcgdmFsdWVzLlxuICAgIHRoaXMudmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uJCA9IHRoaXMuZHluYW1pY0Zvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZShmb3JtVmFsdWUgPT4ge1xuICAgICAgdGhpcy5vbkZvcm1WYWx1ZUNoYW5nZXMoKTtcbiAgICB9KTtcblxuICAgIC8vYXBpIHRvIGV4cG9zZSBmdW5jdGlvbnNcbiAgICB0aGlzLmR5bmFtaWNGb3JtQVBJID0ge1xuICAgICAgZGVmYXVsdEZvcm1WYWx1ZXM6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVEeW5hbWljRmllbGRzVmFsdWVPYmplY3QodGhpcy5keW5hbWljRm9ybS52YWx1ZS5keW5hbWljRmllbGRzKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMuZm9ybUluaXRpYWxpemVkLmVtaXQodGhpcy5keW5hbWljRm9ybUFQSSk7XG4gICAgdGhpcy5mb3JtVmFsaWQuZW1pdCh0aGlzLmR5bmFtaWNGb3JtLnZhbGlkKTtcbiAgfVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbiQ/LnVuc3Vic2NyaWJlKCk7XG4gIH1cbiAgb25Gb3JtVmFsdWVDaGFuZ2VzKCk6IHZvaWQge1xuICAgIGxldCBmb3JtVmFsdWVzID0gdGhpcy5nZW5lcmF0ZUR5bmFtaWNGaWVsZHNWYWx1ZU9iamVjdCh0aGlzLmR5bmFtaWNGb3JtLnZhbHVlLmR5bmFtaWNGaWVsZHMpO1xuICAgIHRoaXMuZm9ybVZhbGlkLmVtaXQodGhpcy5keW5hbWljRm9ybS52YWxpZCk7XG4gICAgdGhpcy5mb3JtVXBkYXRlZC5lbWl0KGZvcm1WYWx1ZXMpO1xuICAgIGNvbnNvbGUubG9nKGZvcm1WYWx1ZXMpXG4gIH1cbiAgZ2VuZXJhdGVEeW5hbWljRmllbGRzVmFsdWVPYmplY3QoZm9ybVZhbHVlczogQXJyYXk8YW55Pik6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIGxldCBkeW5hbWljRmllbGRzVmFsdWUgPSB7fTtcbiAgICBmb3JtVmFsdWVzLmZvckVhY2goKGZpZWxkVmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICBsZXQgZm9ybWF0dGVkVmFsdWUgPSB0aGlzLm1hcEZvcm1GaWVsZFRvRm9ybVZhbHVlKHRoaXMuZm9ybUZpZWxkc1tpbmRleF0sIGZpZWxkVmFsdWUudmFsdWUpO1xuICAgICAgaWYgKGZpZWxkVmFsdWUuc3ViRmllbGRzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGxldCBmb3JtYXR0ZWRTdWJGaWVsZHNWYWx1ZXMgPSB7fVxuICAgICAgICBmaWVsZFZhbHVlLnN1YkZpZWxkcy5mb3JFYWNoKChzdWJGaWVsZFZhbHVlLCBzdWJJbmRleCkgPT4ge1xuICAgICAgICAgIGxldCBzdWJGb3JtRmllbGQgPSB0aGlzLmZvcm1GaWVsZHNbaW5kZXhdLnN1YkZpZWxkc1tzdWJJbmRleF1cbiAgICAgICAgICBmb3JtYXR0ZWRTdWJGaWVsZHNWYWx1ZXNbc3ViRm9ybUZpZWxkLmNvbmZpZ05hbWVdID0gdGhpcy5tYXBGb3JtRmllbGRUb0Zvcm1WYWx1ZShzdWJGb3JtRmllbGQsIHN1YkZpZWxkVmFsdWUpXG4gICAgICAgIH0pXG4gICAgICAgIGR5bmFtaWNGaWVsZHNWYWx1ZVt0aGlzLmZvcm1GaWVsZHNbaW5kZXhdLmNvbmZpZ05hbWVdID0ge1xuICAgICAgICAgIHZhbHVlOiBmb3JtYXR0ZWRWYWx1ZSxcbiAgICAgICAgICBzdWJGaWVsZHM6IGZvcm1hdHRlZFN1YkZpZWxkc1ZhbHVlc1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgZHluYW1pY0ZpZWxkc1ZhbHVlW3RoaXMuZm9ybUZpZWxkc1tpbmRleF0uY29uZmlnTmFtZV0gPSBmb3JtYXR0ZWRWYWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZHluYW1pY0ZpZWxkc1ZhbHVlO1xuICB9XG4gIGdlbmVyYXRlRHluYW1pY0Zvcm0oXG4gICAgZm9ybUZpZWxkczogQXJyYXk8TnNEeW5hbWljRm9ybS5JRHluYW1pY0ZpZWxkPixcbiAgICBmb3JtVmFsdWVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9XG4gICk6IFVudHlwZWRGb3JtR3JvdXAge1xuICAgIGxldCBmb3JtQXJyYXkgPSBuZXcgVW50eXBlZEZvcm1BcnJheShbXSlcblxuICAgIGZvciAobGV0IGZpZWxkIG9mIGZvcm1GaWVsZHMpIHtcbiAgICAgIGxldCBmaWVsZFZhbHVlID0gZm9ybVZhbHVlc1tmaWVsZC5jb25maWdOYW1lXT8udmFsdWUgPyBmb3JtVmFsdWVzW2ZpZWxkLmNvbmZpZ05hbWVdLnZhbHVlIDogZm9ybVZhbHVlc1tmaWVsZC5jb25maWdOYW1lXVxuICAgICAgbGV0IGZpZWxkQ29udHJvbCA9IHRoaXMubWFwRm9ybVZhbHVlVG9Gb3JtRmllbGQoZmllbGQsIGZpZWxkVmFsdWUpO1xuICAgICAgbGV0IHN1YkZpZWxkc0NvbnRyb2xzID0gdGhpcy5nZW5lcmF0ZVN1YkR5bmFtaWNGaWVsZHMoZm9ybVZhbHVlcywgZmllbGQsIGZpZWxkQ29udHJvbC52YWx1ZSk7XG4gICAgICBmb3JtQXJyYXkucHVzaChuZXcgVW50eXBlZEZvcm1Hcm91cCh7XG4gICAgICAgIHZhbHVlOiBmaWVsZENvbnRyb2wsXG4gICAgICAgIHN1YkZpZWxkczogc3ViRmllbGRzQ29udHJvbHNcbiAgICAgIH0pKVxuICAgIH0gIFxuICAgIHJldHVybiBuZXcgVW50eXBlZEZvcm1Hcm91cCh7XG4gICAgICBkeW5hbWljRmllbGRzOiBmb3JtQXJyYXlcbiAgICB9KVxuICB9XG4gIFxuICBnZXREeW5hbWljRmllbGRzQ29udHJvbHMoKTogVW50eXBlZEZvcm1BcnJheSB7XG4gICAgcmV0dXJuIHRoaXMuZHluYW1pY0Zvcm0uZ2V0KFwiZHluYW1pY0ZpZWxkc1wiKSBhcyBVbnR5cGVkRm9ybUFycmF5O1xuICB9XG4gIHVwZGF0ZVN1YkR5bmFtaWNGaWVsZHMoXG4gICAgZmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCxcbiAgICBmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXAsXG4gICAgdmFsdWU6IGFueVxuICApOiB2b2lkIHtcbiAgICBpZiAoZmllbGQuc3ViRmllbGRzPy5sZW5ndGggPiAwKSB7XG4gICAgICBsZXQgc3ViRmllbGRzQ29udHJvbHMgPSB0aGlzLmdlbmVyYXRlU3ViRHluYW1pY0ZpZWxkcyh0aGlzLmZvcm1WYWx1ZXMsIGZpZWxkLCB2YWx1ZSk7XG4gICAgICBmb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgnc3ViRmllbGRzJylcbiAgICAgIGZvcm1Hcm91cC5hZGRDb250cm9sKCdzdWJGaWVsZHMnLCBzdWJGaWVsZHNDb250cm9scylcbiAgICB9XG4gIH1cbiAgdXBkYXRlU2VsZWN0ZWRWYWx1ZUZvclNpbmdsZVNlbGVjdChcbiAgICBmaWVsZDogTnNEeW5hbWljRm9ybS5JRHluYW1pY0ZpZWxkLFxuICAgIGNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCxcbiAgICBmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXAsXG4gICAgdmFsdWU6IGFueVxuICApOiB2b2lkIHtcbiAgICBpZiAoY29udHJvbC52YWx1ZT8udmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICBjb250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gICAgZWxzZSBjb250cm9sLnNldFZhbHVlKCcnKTtcbiAgICB0aGlzLnVwZGF0ZVN1YkR5bmFtaWNGaWVsZHMoZmllbGQsIGZvcm1Hcm91cCwgdmFsdWUpO1xuICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICB9XG4gIHVwZGF0ZVNlbGVjdGVkVmFsdWVGb3JNdWx0aVNlbGVjdChcbiAgICBmaWVsZDogTnNEeW5hbWljRm9ybS5JRHluYW1pY0ZpZWxkLFxuICAgIGNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCxcbiAgICBmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXAsXG4gICAgdmFsdWVzOiBBcnJheTxhbnk+XG4gICk6IHZvaWQge1xuICAgIGxldCBzZWxlY3RlZFZhbHVlczogQXJyYXk8eyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogYW55IH0+ID0gY29udHJvbC52YWx1ZTtcbiAgICBmb3IgKGxldCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICAgIGxldCBpdGVtSW5kZXggPSBzZWxlY3RlZFZhbHVlcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmxhYmVsID09PSB2YWx1ZS5sYWJlbCk7XG4gICAgICBpZiAoaXRlbUluZGV4ID4gLTEpIHtcbiAgICAgICAgc2VsZWN0ZWRWYWx1ZXMuc3BsaWNlKGl0ZW1JbmRleCwgMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxlY3RlZFZhbHVlcy5wdXNoKHsgLi4udmFsdWUgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnRyb2wuc2V0VmFsdWUoc2VsZWN0ZWRWYWx1ZXMpO1xuICAgIHRoaXMudXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhmaWVsZCwgZm9ybUdyb3VwLCB2YWx1ZXMpO1xuICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICB9XG4gIGlzQ2hlY2tCb3hTZWxlY3RlZCh2YWx1ZTogc3RyaW5nLCBzZWxlY3RlZFZhbHVlczogQXJyYXk8eyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHNlbGVjdGVkVmFsdWVzLmZpbmRJbmRleChpdGVtID0+IGl0ZW0ubGFiZWwgPT09IHZhbHVlKSA+IC0xO1xuICB9XG5cbiAgZmluZFNlbGVjdGVkSW5kZXgoc3ViZmllbGRzLCB2YWx1ZSkge1xuICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSBzdWJmaWVsZHMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5wYXJlbnRDb25maWdWYWx1ZSA9PT0gdmFsdWUpO1xuICAgIHJldHVybiBzZWxlY3RlZEluZGV4ICE9PSAtMSA/IHNlbGVjdGVkSW5kZXggOiAwO1xuICB9XG5cbiAgbWF0Y2hQYXJlbnRDb25maWcoc3ViZmllbGRzLCB2YWx1ZSkge1xuICAgIGlmICghc3ViZmllbGRzIHx8IHN1YmZpZWxkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHN1YmZpZWxkcy5zb21lKGl0ZW0gPT4gaXRlbS5wYXJlbnRDb25maWdWYWx1ZSA9PT0gdmFsdWUpO1xuICB9XG5cbiAgZ2VuZXJhdGVTdWJEeW5hbWljRmllbGRzKFxuICAgIGZvcm1WYWx1ZXM6IGFueSxcbiAgICBwYXJlbnRGaWVsZDogTnNEeW5hbWljRm9ybS5JRHluYW1pY0ZpZWxkLFxuICAgIHBhcmVudFZhbHVlOiBBcnJheTx7IGxhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfT4gfCB7bGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9IHwgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhblxuICApOiBVbnR5cGVkRm9ybUFycmF5IHtcbiAgICBsZXQgY29udHJvbHMgPSBuZXcgVW50eXBlZEZvcm1BcnJheShbXSlcbiAgICBsZXQgc3ViRmllbGRzID0gcGFyZW50RmllbGQuc3ViRmllbGRzXG4gICAgbGV0IHN1YkZpZWxkc1ZhbHVlcyA9IGZvcm1WYWx1ZXNbcGFyZW50RmllbGQuY29uZmlnTmFtZV0/LnN1YkZpZWxkcyA/IGZvcm1WYWx1ZXNbcGFyZW50RmllbGQuY29uZmlnTmFtZV0uc3ViRmllbGRzIDoge31cbiAgICBpZighc3ViRmllbGRzKSByZXR1cm4gY29udHJvbHM7XG4gICAgaWYgKHBhcmVudEZpZWxkLmZpZWxkVHlwZSA9PT0gJ3NpbmdsZVNlbGVjdCcpIHtcbiAgICAgIHN1YkZpZWxkcyA9IHN1YkZpZWxkcy5maWx0ZXIoKHN1YkZpZWxkKSA9PiBzdWJGaWVsZC5wYXJlbnRDb25maWdWYWx1ZSA9PT0gKDx7bGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9PnBhcmVudFZhbHVlKT8udmFsdWUpO1xuICAgIH1cbiAgICBlbHNlIGlmIChwYXJlbnRGaWVsZC5maWVsZFR5cGUgPT09ICdtdWx0aVNlbGVjdCcpIHtcbiAgICAgIGxldCBwYXJlbnRWYWx1ZXMgPSBuZXcgU2V0KCg8QXJyYXk8eyBsYWJlbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIH0+PnBhcmVudFZhbHVlKS5tYXAoKHZhbHVlKSA9PiB2YWx1ZS52YWx1ZSkpO1xuICAgICAgc3ViRmllbGRzID0gc3ViRmllbGRzLmZpbHRlcigoc3ViRmllbGQpID0+IHBhcmVudFZhbHVlcy5oYXMoc3ViRmllbGQucGFyZW50Q29uZmlnVmFsdWUpKTtcbiAgICB9XG5cbiAgICBpZiAoc3ViRmllbGRzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZvciAobGV0IHN1YkZpZWxkIG9mIHN1YkZpZWxkcykge1xuICAgICAgICAgIGNvbnRyb2xzLnB1c2godGhpcy5tYXBGb3JtVmFsdWVUb0Zvcm1GaWVsZChzdWJGaWVsZCwgc3ViRmllbGRzVmFsdWVzW3N1YkZpZWxkLmNvbmZpZ05hbWVdKSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIHJldHVybiBjb250cm9scztcbiAgfVxuICBtYXBGb3JtVmFsdWVUb0Zvcm1GaWVsZChmb3JtRmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCwgZm9ybVZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGxldCB2YWxpZGF0b3JzID0gZm9ybUZpZWxkLnZhbGlkYXRvcnMgPyBbZHluYW1pY0ZpZWxkVmFsaWRhdG9yKGZvcm1GaWVsZC52YWxpZGF0b3JzKV06IFtdXG4gICAgbGV0IGNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwsIHZhbGlkYXRvcnMpO1xuXG4gICAgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwiaW5wdXRcIikge1xuICAgICAgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJ0ZXh0XCIgfHwgZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcInRleHRhcmVhXCIpIGNvbnRyb2wuc2V0VmFsdWUoZm9ybVZhbHVlID8gZm9ybVZhbHVlIDogXCJcIik7XG4gICAgICBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwibnVtYmVyXCIpIGNvbnRyb2wuc2V0VmFsdWUoZm9ybVZhbHVlID8gZm9ybVZhbHVlIDogMCk7XG4gICAgICBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwiZGF0ZVwiKSB7XG4gICAgICAgIGlmIChmb3JtVmFsdWUgJiYgdHlwZW9mIGZvcm1WYWx1ZSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUobW9tZW50KGZvcm1WYWx1ZSkudHooZm9ybUZpZWxkLmZpZWxkQ29uZmlnLnRpbWV6b25lKS5mb3JtYXQoZm9ybUZpZWxkLmZpZWxkQ29uZmlnLmZvcm1hdCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUobW9tZW50KCkudHooZm9ybUZpZWxkLmZpZWxkQ29uZmlnLnRpbWV6b25lKS5mb3JtYXQoZm9ybUZpZWxkLmZpZWxkQ29uZmlnLmZvcm1hdCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcInNpbmdsZVNlbGVjdFwiKSB7XG4gICAgICBjb25zdCBmaW5kU2VsZWN0ZWRWYWx1ZSA9ICgpID0+IHtcbiAgICAgICAgbGV0IGluZGV4ID0gZm9ybUZpZWxkLml0ZW1zTGlzdC5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLnZhbHVlID09PSBmb3JtVmFsdWUpXG4gICAgICAgIHJldHVybiBpbmRleCA+PSAwID8gZm9ybUZpZWxkLml0ZW1zTGlzdFtpbmRleF06IFwiXCI7XG4gICAgICB9XG4gICAgICBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcImRyb3Bkb3duXCIpIHtcbiAgICAgICAgaWYgKCFmb3JtVmFsdWUpIGNvbnRyb2wuc2V0VmFsdWUoZm9ybUZpZWxkLml0ZW1zTGlzdFswXSk7XG4gICAgICAgIGVsc2UgY29udHJvbC5zZXRWYWx1ZShmaW5kU2VsZWN0ZWRWYWx1ZSgpKVxuICAgICAgfVxuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcInJhZGlvXCIpIHtcbiAgICAgICAgY29udHJvbC5zZXRWYWx1ZShmaW5kU2VsZWN0ZWRWYWx1ZSgpKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJtdWx0aVNlbGVjdFwiKSB7XG4gICAgICBpZiAoZm9ybVZhbHVlICYmIEFycmF5LmlzQXJyYXkoZm9ybVZhbHVlKSkge1xuICAgICAgICBsZXQgc2VsZWN0ZWRWYWx1ZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgZm9ybVZhbHVlKSB7XG4gICAgICAgICAgbGV0IGluZGV4ID0gZm9ybUZpZWxkLml0ZW1zTGlzdC5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLnZhbHVlID09PSB2YWx1ZSk7XG4gICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHNlbGVjdGVkVmFsdWVzLnB1c2goeyAuLi5mb3JtRmllbGQuaXRlbXNMaXN0W2luZGV4XSB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb250cm9sLnNldFZhbHVlKHNlbGVjdGVkVmFsdWVzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRyb2wuc2V0VmFsdWUoW10pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgIGNvbnRyb2wuc2V0VmFsdWUoISFmb3JtVmFsdWUpO1xuICAgIH0gZWxzZSBjb250cm9sLnNldFZhbHVlKG51bGwpO1xuICAgIHJldHVybiBjb250cm9sO1xuICB9XG4gIG1hcEZvcm1GaWVsZFRvRm9ybVZhbHVlKGZvcm1GaWVsZDogTnNEeW5hbWljRm9ybS5JRHluYW1pY0ZpZWxkLCBmb3JtVmFsdWU6IGFueSk6IGFueSB7XG4gICAgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwiaW5wdXRcIikge1xuICAgICAgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJ0ZXh0XCIgfHwgZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcInRleHRhcmVhXCIpIHJldHVybiBmb3JtVmFsdWU7XG4gICAgICBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwibnVtYmVyXCIpIHJldHVybiArZm9ybVZhbHVlO1xuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcImRhdGVcIikge1xuICAgICAgICByZXR1cm4gbW9tZW50LnR6KGZvcm1WYWx1ZSwgZm9ybUZpZWxkLmZpZWxkQ29uZmlnLmZvcm1hdCwgZm9ybUZpZWxkLmZpZWxkQ29uZmlnLnRpbWV6b25lKS52YWx1ZU9mKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcInNpbmdsZVNlbGVjdFwiKSB7XG4gICAgICByZXR1cm4gZm9ybVZhbHVlPy52YWx1ZSA/PyAnJztcbiAgICB9IGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwibXVsdGlTZWxlY3RcIikge1xuICAgICAgcmV0dXJuIGZvcm1WYWx1ZT8ubWFwKGl0ZW0gPT4gaXRlbS52YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgcmV0dXJuIGZvcm1WYWx1ZTtcbiAgICB9IGVsc2UgcmV0dXJuIGZvcm1WYWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZHluYW1pY0ZpZWxkVmFsaWRhdG9yID0gKHZhbGlkYXRvcnM6IEFycmF5PE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZFZhbGlkYXRvcj4pOiBWYWxpZGF0b3JGbiA9PiB7XG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIGxldCB2YWx1ZSA9IGNvbnRyb2wudmFsdWVcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlPy52YWx1ZSA/IHZhbHVlLnZhbHVlIDogJydcbiAgICB9XG4gICAgbGV0IGVycm9ycyA9IG51bGxcblxuICAgIHZhbGlkYXRvcnMuZm9yRWFjaCgodmFsaWRhdG9yKSA9PiB7XG4gICAgICBsZXQgZXJyb3IgPSBudWxsXG4gICAgICBsZXQgbWVzc2FnZSA9IHZhbGlkYXRvci5tZXNzYWdlXG4gICAgICBzd2l0Y2ggKHZhbGlkYXRvci50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJSZXF1aXJlZFwiOlxuICAgICAgICAgIGVycm9yID0gVmFsaWRhdG9ycy5yZXF1aXJlZChjb250cm9sKVxuICAgICAgICAgIGlmKGVycm9yKSBlcnJvciA9IHtSZXF1aXJlZDogbWVzc2FnZX1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIk1pbkxlbmd0aFwiOlxuICAgICAgICAgIGVycm9yID0gVmFsaWRhdG9ycy5taW5MZW5ndGgoK3ZhbGlkYXRvci52YWx1ZSkoY29udHJvbClcbiAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKCckezB9JywgZXJyb3I/Lm1pbmxlbmd0aC5yZXF1aXJlZExlbmd0aClcbiAgICAgICAgICBpZihlcnJvcikgZXJyb3IgPSB7IE1pbkxlbmd0aDogbWVzc2FnZSB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJNYXhMZW5ndGhcIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMubWF4TGVuZ3RoKCt2YWxpZGF0b3IudmFsdWUpKGNvbnRyb2wpXG4gICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgnJHswfScsIGVycm9yPy5hY3R1YWxMZW5ndGgpXG4gICAgICAgICAgaWYoZXJyb3IpIGVycm9yID0geyBNYXhMZW5ndGg6IG1lc3NhZ2UgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiRW1haWxcIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMuZW1haWwoY29udHJvbClcbiAgICAgICAgICBpZihlcnJvcikgZXJyb3IgPSB7RW1haWw6IG1lc3NhZ2V9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJDdXN0b21cIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMucGF0dGVybihgJHt2YWxpZGF0b3IudmFsdWV9YCkoY29udHJvbClcbiAgICAgICAgICBpZihlcnJvcikgZXJyb3IgPSB7Q3VzdG9tOiBtZXNzYWdlfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKGVycm9yKSBlcnJvcnMgPSB7IC4uLmVycm9ycywgLi4uZXJyb3IgfVxuICAgIH0pXG4gICAgcmV0dXJuIGVycm9yc1xuICB9XG59IiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJkeW5hbWljRm9ybVwiPlxuICA8bmctY29udGFpbmVyIGZvcm1BcnJheU5hbWU9XCJkeW5hbWljRmllbGRzXCI+XG4gICAgPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwTmFtZV09XCJpXCIgKm5nRm9yPVwibGV0IGZpZWxkQ29udHJvbCBvZiBnZXREeW5hbWljRmllbGRzQ29udHJvbHMoKS5jb250cm9sczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZFwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgJGltcGxpY2l0OiBmb3JtRmllbGRzW2ldLFxuICAgICAgICAgIGZvcm1Hcm91cDogZmllbGRDb250cm9sLFxuICAgICAgICAgIGNvbnRyb2w6IGZpZWxkQ29udHJvbC5jb250cm9scy52YWx1ZVxuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGRpdiBjbGFzcz1cInN1Yi1keW5hbWljLWZvcm1cIiAqbmdJZj1cImZpZWxkQ29udHJvbC52YWx1ZSAmJiAoISFmb3JtRmllbGRzW2ldPy5zdWJGaWVsZHMgJiYgZm9ybUZpZWxkc1tpXT8uc3ViRmllbGRzPy5sZW5ndGggPiAwICYmIG1hdGNoUGFyZW50Q29uZmlnKGZvcm1GaWVsZHNbaV0/LnN1YkZpZWxkcywgZmllbGRDb250cm9sLmNvbnRyb2xzLnZhbHVlLnZhbHVlLnZhbHVlKSlcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3ViRmllbGRDb250cm9sIG9mIGZpZWxkQ29udHJvbC5jb250cm9scy5zdWJGaWVsZHMuY29udHJvbHM7XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICRpbXBsaWNpdDogZm9ybUZpZWxkc1tpXS5zdWJGaWVsZHNbZmluZFNlbGVjdGVkSW5kZXgoZm9ybUZpZWxkc1tpXT8uc3ViRmllbGRzLCBmaWVsZENvbnRyb2wuY29udHJvbHMudmFsdWUudmFsdWUudmFsdWUpXSxcbiAgICAgICAgICAgICAgY29udHJvbDogc3ViRmllbGRDb250cm9sXG4gICAgICAgICAgICB9XCI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9mb3JtPlxuXG5cbjxuZy10ZW1wbGF0ZSAjZHluYW1pY0ZpZWxkIGxldC1maWVsZCBsZXQtY29udHJvbD1cImNvbnRyb2xcIiBsZXQtZm9ybWdyb3VwPVwiZm9ybUdyb3VwXCI+XG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdpbnB1dCcgZmllbGRJbnB1dFR5cGU6ICd0ZXh0JyB8ICdudW1iZXInIC0tPlxuICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBtdWx0aS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gICAgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdpbnB1dCcgJiYgKGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAndGV4dCcgfHwgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdudW1iZXInKVwiPlxuICAgIDxwIGNsYXNzPVwiaDcgZmllbGQtdGl0bGUtc21cIj5cbiAgICAgIHt7IGZpZWxkLnRpdGxlIH19XG4gICAgPC9wPlxuICAgIDxkaXYgc3R5bGU9XCJmbGV4LWJhc2lzOiAxMDAlXCI+PC9kaXY+XG4gICAgPGlucHV0IGNsYXNzPVwiaW5wdXQtZmllbGQgaXAtdGV4dFwiIFt0eXBlXT1cImZpZWxkLmZpZWxkSW5wdXRUeXBlXCIgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhmaWVsZCwgZm9ybWdyb3VwLCAkZXZlbnQpXCIgXG4gICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlcic6IGNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9ycyA/ICcxcHggc29saWQgI0IwMDAyMCc6ICcnfVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXJUZXh0ID8gZmllbGQucGxhY2Vob2xkZXJUZXh0IDogJ0lucHV0IFRleHQnXCIgXG4gICAgICBbbWluXT1cImZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAnbnVtYmVyJyA/IDAgOiAnJyBcIi8+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIiBcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiXG4gICAgPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8IS0tIGZpZWxkVHlwZTogJ2lucHV0JyBmaWVsZElucHV0VHlwZTogJ3RleHRhcmVhJyAtLT5cbiAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgbXVsdGktbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnaW5wdXQnICYmIGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAndGV4dGFyZWEnXCI+XG4gICAgPHAgY2xhc3M9XCJoNyBmaWVsZC10aXRsZS1zbVwiPlxuICAgICAge3sgZmllbGQudGl0bGUgfX1cbiAgICA8L3A+XG4gICAgPGRpdiBzdHlsZT1cImZsZXgtYmFzaXM6IDEwMCVcIj48L2Rpdj5cbiAgICA8dGV4dGFyZWEgY2xhc3M9XCJpbnB1dC1maWVsZCBpcC10ZXh0YXJlYVwiIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyJzogY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzID8gJzFweCBzb2xpZCAjQjAwMDIwJzogJyd9XCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlclRleHQgPyBmaWVsZC5wbGFjZWhvbGRlclRleHQgOiAnSW5wdXQgVGV4dCdcIiBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZVN1YkR5bmFtaWNGaWVsZHMoZmllbGQsIGZvcm1ncm91cCwgJGV2ZW50KVwiPjwvdGV4dGFyZWE+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdpbnB1dCcgZmllbGRJbnB1dFR5cGU6ICdkYXRlJyAtLT5cbiAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgc2luZ2xlLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgICAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ2lucHV0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ2RhdGUnXCI+XG4gICAgPHAgY2xhc3M9XCJoNlwiPlxuICAgICAge3sgZmllbGQudGl0bGUgfX1cbiAgICA8L3A+XG4gICAgPGRpdiBjbGFzcz1cImRhdGUtcGlja2VyLWNvbnRhaW5lclwiPlxuICAgICAgPGlucHV0IGNsYXNzPVwiZGF0ZS1waWNrZXJcIiByZWFkb25seSBtaXNUekRwIFtkcENvbmZpZ109XCJmaWVsZC5maWVsZENvbmZpZ1wiXG4gICAgICAgIChkYXRlQ2hhbmdlKT1cImNvbnRyb2wuc2V0VmFsdWUoJGV2ZW50KVwiIFtzZWxlY3RlZERhdGVdPVwiY29udHJvbC52YWx1ZVwiIFtvZmZzZXRZXT1cIjBcIlxuICAgICAgICBbdmFsdWVdPVwiY29udHJvbC52YWx1ZVwiICNkcCAvPlxuICAgICAgPGltZyBhbHQ9XCJkYXRhLXBpY2tlclwiICpuZ0lmPVwiY2FsZW5kYXJJY29uVXJsXCIgY2xhc3M9XCJkYXRlLXBpY2tlci1pY29uXCIgW3NyY109XCJjYWxlbmRhckljb25VcmxcIlxuICAgICAgICAoY2xpY2spPVwiZHAuY2xpY2soKVwiIC8+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdib29sZWFuJyBmaWVsZElucHV0VHlwZTogJ3RvZ2dsZScgLS0+XG4gIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIHNpbmdsZS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gICAgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdib29sZWFuJyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ3RvZ2dsZSdcIj5cbiAgICA8cCBjbGFzcz1cImg2XCI+XG4gICAgICB7eyBmaWVsZC50aXRsZSB9fVxuICAgIDwvcD5cbiAgICA8bWlzLXN3aXRjaCBbY29udHJvbF09XCJjb250cm9sXCIgKHZhbHVlQ2hhbmdlZCk9XCJ1cGRhdGVTdWJEeW5hbWljRmllbGRzKGZpZWxkLCBmb3JtZ3JvdXAsICRldmVudClcIj48L21pcy1zd2l0Y2g+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdzaW5nbGVTZWxlY3QnIGZpZWxkSW5wdXRUeXBlOiAnZHJvcGRvd24nIC0tPlxuICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBzaW5nbGUtbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnc2luZ2xlU2VsZWN0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ2Ryb3Bkb3duJ1wiPlxuICAgIDxwIGNsYXNzPVwiaDZcIj5cbiAgICAgIHt7IGZpZWxkLnRpdGxlIH19XG4gICAgPC9wPlxuICAgIDxtaXMtZHJvcGRvd24gW3NlYXJjaEVuYWJsZWRdPVwiZmFsc2VcIiBbd2lkdGhdPVwiJzE0MHB4J1wiIFtkYXRhXT1cImZpZWxkLml0ZW1zTGlzdFwiIFtzZWxlY3RlZEl0ZW1dPVwiY29udHJvbC52YWx1ZVwiXG4gICAgICAob25DaGFuZ2UpPVwidXBkYXRlU2VsZWN0ZWRWYWx1ZUZvclNpbmdsZVNlbGVjdChmaWVsZCwgY29udHJvbCwgZm9ybWdyb3VwLCAkZXZlbnQpO1wiPlxuICAgIDwvbWlzLWRyb3Bkb3duPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDwhLS0gZmllbGRUeXBlOiAnc2luZ2xlU2VsZWN0JyBmaWVsZElucHV0VHlwZTogJ3JhZGlvJyAtLT5cbiAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgbXVsdGktbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnc2luZ2xlU2VsZWN0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ3JhZGlvJ1wiPlxuICAgIDxwIGNsYXNzPVwiaDcgZmllbGQtdGl0bGUtc21cIj5cbiAgICAgIHt7IGZpZWxkLnRpdGxlIH19XG4gICAgPC9wPlxuICAgIDxkaXYgc3R5bGU9XCJmbGV4LWJhc2lzOiAxMDAlXCI+PC9kaXY+XG4gICAgPGRpdiBpZD1cImNoZWNrYm94ZXMtY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicmFkaW8tY2hlY2tib3gtY29tbW9uXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmllbGQuaXRlbXNMaXN0XCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnY2hlY2tib3gtYWN0aXZlJzogaXRlbS5sYWJlbCA9PT0gY29udHJvbC52YWx1ZT8ubGFiZWwgfVwiXG4gICAgICAgIChjbGljayk9XCJ1cGRhdGVTZWxlY3RlZFZhbHVlRm9yU2luZ2xlU2VsZWN0KGZpZWxkLCBjb250cm9sLCBmb3JtZ3JvdXAsIGl0ZW0pO1wiPlxuICAgICAgICA8aW1nICpuZ0lmPVwiKGl0ZW0ubGFiZWwgPT09IGNvbnRyb2wudmFsdWU/LmxhYmVsKSAmJiBhY3RpdmVCdG5JY29uVXJsXCIgW3NyY109XCJhY3RpdmVCdG5JY29uVXJsXCIgYWx0PVwiXCIgLz5cbiAgICAgICAgPHAgY2xhc3M9XCJoNlwiPnt7IGl0ZW0ubGFiZWwgfX08L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8IS0tIGZpZWxkVHlwZTogJ211bHRpU2VsZWN0JyBmaWVsZElucHV0VHlwZTogJ2NoZWNrYm94JyAtLT5cbiAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgbXVsdGktbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnbXVsdGlTZWxlY3QnICYmIGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAnY2hlY2tib3gnXCI+XG4gICAgPHAgY2xhc3M9XCJoNyBmaWVsZC10aXRsZS1zbVwiPlxuICAgICAge3sgZmllbGQudGl0bGUgfX1cbiAgICA8L3A+XG4gICAgPGRpdiBzdHlsZT1cImZsZXgtYmFzaXM6IDEwMCVcIj48L2Rpdj5cbiAgICA8ZGl2IGlkPVwiY2hlY2tib3hlcy1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyYWRpby1jaGVja2JveC1jb21tb25cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWVsZC5pdGVtc0xpc3RcIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdjaGVja2JveC1hY3RpdmUnOiBpc0NoZWNrQm94U2VsZWN0ZWQoaXRlbS5sYWJlbCwgY29udHJvbC52YWx1ZSkgfVwiXG4gICAgICAgIChjbGljayk9XCJ1cGRhdGVTZWxlY3RlZFZhbHVlRm9yTXVsdGlTZWxlY3QoZmllbGQsIGNvbnRyb2wsIGZvcm1ncm91cCwgW2l0ZW1dKVwiPlxuICAgICAgICA8aW1nICpuZ0lmPVwiaXNDaGVja0JveFNlbGVjdGVkKGl0ZW0ubGFiZWwsIGNvbnRyb2wudmFsdWUpICYmIGFjdGl2ZUJ0bkljb25VcmxcIiBbc3JjXT1cImFjdGl2ZUJ0bkljb25VcmxcIlxuICAgICAgICAgIGFsdD1cIlwiIC8+XG4gICAgICAgIDxwIGNsYXNzPVwiaDZcIj57eyBpdGVtLmxhYmVsIH19PC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdtdWx0aVNlbGVjdCcgZmllbGRJbnB1dFR5cGU6ICdkcm9wZG93bicgLS0+XG4gIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIHNpbmdsZS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gICAgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdtdWx0aVNlbGVjdCcgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdkcm9wZG93bidcIj5cbiAgICA8cCBjbGFzcz1cImg2XCI+XG4gICAgICB7eyBmaWVsZC50aXRsZSB9fVxuICAgIDwvcD5cbiAgICA8bWlzLW11bHRpLXNlbGVjdC1kcm9wZG93biBbd2lkdGhdPVwiJzE0MHB4J1wiIFtzaG93U2VsZWN0ZWRDb3VudF09XCJ0cnVlXCIgW2Ryb3Bkb3duTGlzdFdpZHRoXT1cIicyNTZweCdcIlxuICAgICAgW3NlYXJjaEVuYWJsZWRdPVwiZmFsc2VcIiBbaGlkZUFwcGx5QnV0dG9uXT1cInRydWVcIiBbZGF0YV09XCJmaWVsZC5pdGVtc0xpc3RcIlxuICAgICAgW3NlbGVjdGVkSXRlbXNdPVwiY29udHJvbC52YWx1ZVwiIChvbkNoYW5nZSk9XCJ1cGRhdGVTZWxlY3RlZFZhbHVlRm9yTXVsdGlTZWxlY3QoZmllbGQsIGNvbnRyb2wsIGZvcm1ncm91cCwgJGV2ZW50KTtcIj48L21pcy1tdWx0aS1zZWxlY3QtZHJvcGRvd24+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZHluYW1pY0ZpZWxkRXJyb3JzIGxldC1lcnJvcnM+XG4gIDxkaXYgaWQ9XCJlcnJvci1tZXNzYWdlcy1jb250YWluZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlcnJvciBvZiBlcnJvcnMgfCBrZXl2YWx1ZVwiPlxuICAgICAgPHAgY2xhc3M9XCJoOFwiPlxuICAgICAgICB7e1wiIOKAoiAmbmJzcDtcIiArIGVycm9yLnZhbHVlfX1cbiAgICAgIDwvcD5cbiAgICAgIDxkaXYgc3R5bGU9XCJmbGV4LWJhc2lzOiAxMDAlOyBoZWlnaHQ6IDBcIj48L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==