@cuby-ui/core 0.0.320 → 0.0.322

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 (361) hide show
  1. package/README.md +24 -24
  2. package/components/button/button.component.d.ts +2 -2
  3. package/components/notification/notification.component.d.ts +2 -2
  4. package/components/sidebar/sidebar-header/sidebar-header.component.d.ts +1 -1
  5. package/components/sidebar/sidebar-navigation-item/sidebar-navigation-item.component.d.ts +1 -1
  6. package/directives/tooltip/tooltip.component.d.ts +1 -1
  7. package/esm2022/animations/animations.mjs +1 -1
  8. package/esm2022/classes/accessors.mjs +1 -1
  9. package/esm2022/classes/driver.mjs +1 -1
  10. package/esm2022/classes/index.mjs +1 -1
  11. package/esm2022/classes/vehicle.mjs +1 -1
  12. package/esm2022/components/accordion/accordion-item/accordion-item.component.mjs +3 -3
  13. package/esm2022/components/accordion/accordion-item/accordion-item.options.mjs +1 -1
  14. package/esm2022/components/accordion/accordion.component.mjs +3 -3
  15. package/esm2022/components/accordion/accordion.directive.mjs +1 -1
  16. package/esm2022/components/accordion/accordion.module.mjs +1 -1
  17. package/esm2022/components/accordion/index.mjs +1 -1
  18. package/esm2022/components/alert/alert.component.mjs +3 -3
  19. package/esm2022/components/alert/alert.interfaces.mjs +1 -1
  20. package/esm2022/components/alert/alert.module.mjs +1 -1
  21. package/esm2022/components/alert/alert.service.mjs +1 -1
  22. package/esm2022/components/alert/alert.tokens.mjs +1 -1
  23. package/esm2022/components/alert/alert.types.mjs +1 -1
  24. package/esm2022/components/alert/alerts.component.mjs +3 -3
  25. package/esm2022/components/alert/index.mjs +1 -1
  26. package/esm2022/components/badge/badge.component.mjs +3 -3
  27. package/esm2022/components/badge/badge.module.mjs +1 -1
  28. package/esm2022/components/badge/badge.options.mjs +1 -1
  29. package/esm2022/components/badge/index.mjs +1 -1
  30. package/esm2022/components/banner/banner.component.mjs +3 -3
  31. package/esm2022/components/banner/banner.module.mjs +1 -1
  32. package/esm2022/components/banner/banner.options.mjs +1 -1
  33. package/esm2022/components/banner/index.mjs +1 -1
  34. package/esm2022/components/breadcrumbs/breadcrumb/breadcrumb.component.mjs +3 -3
  35. package/esm2022/components/breadcrumbs/breadcrumbs.component.mjs +3 -3
  36. package/esm2022/components/breadcrumbs/breadcrumbs.module.mjs +1 -1
  37. package/esm2022/components/breadcrumbs/index.mjs +1 -1
  38. package/esm2022/components/button/button.component.mjs +3 -3
  39. package/esm2022/components/button/button.module.mjs +1 -1
  40. package/esm2022/components/button/button.options.mjs +1 -1
  41. package/esm2022/components/button/index.mjs +1 -1
  42. package/esm2022/components/button-group/button-group.component.mjs +3 -3
  43. package/esm2022/components/button-group/button-group.module.mjs +1 -1
  44. package/esm2022/components/button-group/index.mjs +1 -1
  45. package/esm2022/components/card-wrapper/card-wrapper.component.mjs +3 -3
  46. package/esm2022/components/card-wrapper/index.mjs +1 -1
  47. package/esm2022/components/checkbox/checkbox.component.mjs +1 -1
  48. package/esm2022/components/checkbox/checkbox.module.mjs +1 -1
  49. package/esm2022/components/checkbox/index.mjs +1 -1
  50. package/esm2022/components/content-wrapper/content-wrapper.component.mjs +3 -3
  51. package/esm2022/components/content-wrapper/index.mjs +1 -1
  52. package/esm2022/components/context-menu/context-menu.component.mjs +3 -3
  53. package/esm2022/components/context-menu/context-menu.module.mjs +1 -1
  54. package/esm2022/components/context-menu/index.mjs +1 -1
  55. package/esm2022/components/dialog/dialog-actions/dialog-actions.component.mjs +3 -3
  56. package/esm2022/components/dialog/dialog-header/dialog-header.component.mjs +3 -3
  57. package/esm2022/components/dialog/dialog.component.mjs +3 -3
  58. package/esm2022/components/dialog/dialog.interfaces.mjs +1 -1
  59. package/esm2022/components/dialog/dialog.module.mjs +1 -1
  60. package/esm2022/components/dialog/dialog.service.mjs +1 -1
  61. package/esm2022/components/dialog/dialog.tokens.mjs +1 -1
  62. package/esm2022/components/dialog/dialogs.component.mjs +3 -3
  63. package/esm2022/components/dialog/index.mjs +1 -1
  64. package/esm2022/components/dropdown/dropdown.interfaces.mjs +1 -1
  65. package/esm2022/components/dropdown/index.mjs +1 -1
  66. package/esm2022/components/empty-state/empty-state.component.mjs +3 -3
  67. package/esm2022/components/empty-state/index.mjs +1 -1
  68. package/esm2022/components/form-field/form-field.component.mjs +3 -3
  69. package/esm2022/components/form-field/form-field.module.mjs +1 -1
  70. package/esm2022/components/form-field/index.mjs +1 -1
  71. package/esm2022/components/ghost-input/ghost-input.component.mjs +1 -1
  72. package/esm2022/components/ghost-input/index.mjs +1 -1
  73. package/esm2022/components/hint/hint.component.mjs +3 -3
  74. package/esm2022/components/hint/hint.module.mjs +1 -1
  75. package/esm2022/components/hint/index.mjs +1 -1
  76. package/esm2022/components/icon-button/icon-button.component.mjs +3 -3
  77. package/esm2022/components/icon-button/icon-button.module.mjs +1 -1
  78. package/esm2022/components/icon-button/index.mjs +1 -1
  79. package/esm2022/components/index.mjs +1 -1
  80. package/esm2022/components/input-number/index.mjs +1 -1
  81. package/esm2022/components/input-number/input-number.component.mjs +3 -3
  82. package/esm2022/components/input-number/input-number.module.mjs +1 -1
  83. package/esm2022/components/input-password/index.mjs +1 -1
  84. package/esm2022/components/input-password/input-password.component.mjs +3 -3
  85. package/esm2022/components/input-password/input-password.module.mjs +1 -1
  86. package/esm2022/components/input-text/index.mjs +1 -1
  87. package/esm2022/components/input-text/input-text.component.mjs +3 -3
  88. package/esm2022/components/input-text/input-text.module.mjs +1 -1
  89. package/esm2022/components/input-time/index.mjs +1 -1
  90. package/esm2022/components/input-time/input-time.component.mjs +3 -3
  91. package/esm2022/components/input-time/input-time.module.mjs +1 -1
  92. package/esm2022/components/input-time/input-time.options.mjs +1 -1
  93. package/esm2022/components/label/index.mjs +1 -1
  94. package/esm2022/components/label/label.component.mjs +3 -3
  95. package/esm2022/components/label/label.module.mjs +1 -1
  96. package/esm2022/components/layout/index.mjs +1 -1
  97. package/esm2022/components/layout/layout.component.mjs +3 -3
  98. package/esm2022/components/letter-box/index.mjs +1 -1
  99. package/esm2022/components/letter-box/letter-box.component.mjs +3 -3
  100. package/esm2022/components/letter-box/letter-box.interfaces.mjs +1 -1
  101. package/esm2022/components/notification/index.mjs +1 -1
  102. package/esm2022/components/notification/notification.component.mjs +3 -3
  103. package/esm2022/components/notification/notification.module.mjs +1 -1
  104. package/esm2022/components/notification/notification.options.mjs +1 -1
  105. package/esm2022/components/radio/index.mjs +1 -1
  106. package/esm2022/components/radio/radio.component.mjs +1 -1
  107. package/esm2022/components/radio/radio.module.mjs +1 -1
  108. package/esm2022/components/render-dynamic-components/index.mjs +1 -1
  109. package/esm2022/components/render-dynamic-components/render-dynamic-components.component.mjs +3 -3
  110. package/esm2022/components/render-dynamic-components/render-dynamic-components.options.mjs +1 -1
  111. package/esm2022/components/render-dynamic-components/render-dynamic-components.service.mjs +1 -1
  112. package/esm2022/components/root/index.mjs +1 -1
  113. package/esm2022/components/root/root.component.mjs +3 -3
  114. package/esm2022/components/root/root.module.mjs +1 -1
  115. package/esm2022/components/select/index.mjs +1 -1
  116. package/esm2022/components/select/select.component.mjs +3 -3
  117. package/esm2022/components/select/select.module.mjs +1 -1
  118. package/esm2022/components/sidebar/index.mjs +1 -1
  119. package/esm2022/components/sidebar/sidebar-container/index.mjs +1 -1
  120. package/esm2022/components/sidebar/sidebar-container/sidebar-container.component.mjs +3 -3
  121. package/esm2022/components/sidebar/sidebar-header/index.mjs +1 -1
  122. package/esm2022/components/sidebar/sidebar-header/sidebar-header.component.mjs +3 -3
  123. package/esm2022/components/sidebar/sidebar-navigation/index.mjs +1 -1
  124. package/esm2022/components/sidebar/sidebar-navigation/sidebar-navigation.component.mjs +3 -3
  125. package/esm2022/components/sidebar/sidebar-navigation-container/index.mjs +1 -1
  126. package/esm2022/components/sidebar/sidebar-navigation-container/sidebar-navigation-container.component.mjs +3 -3
  127. package/esm2022/components/sidebar/sidebar-navigation-item/index.mjs +1 -1
  128. package/esm2022/components/sidebar/sidebar-navigation-item/sidebar-navigation-item.component.mjs +3 -3
  129. package/esm2022/components/sidebar/sidebar.options.mjs +1 -1
  130. package/esm2022/components/sidebar/sidebar.service.mjs +1 -1
  131. package/esm2022/components/svg/index.mjs +1 -1
  132. package/esm2022/components/svg/svg.component.mjs +3 -3
  133. package/esm2022/components/svg/svg.module.mjs +1 -1
  134. package/esm2022/components/tabs/index.mjs +1 -1
  135. package/esm2022/components/tabs/tab/tab.component.mjs +3 -3
  136. package/esm2022/components/tabs/tabs.component.mjs +3 -3
  137. package/esm2022/components/tabs/tabs.module.mjs +1 -1
  138. package/esm2022/components/textarea/index.mjs +1 -1
  139. package/esm2022/components/textarea/textarea.component.mjs +1 -1
  140. package/esm2022/components/textarea/textarea.module.mjs +1 -1
  141. package/esm2022/components/toggle/index.mjs +1 -1
  142. package/esm2022/components/toggle/toggle.component.mjs +1 -1
  143. package/esm2022/components/toggle/toggle.module.mjs +1 -1
  144. package/esm2022/directives/index.mjs +1 -1
  145. package/esm2022/directives/text-field-controller/index.mjs +1 -1
  146. package/esm2022/directives/text-field-controller/text-field-controller.module.mjs +1 -1
  147. package/esm2022/directives/text-field-controller/text-field-controller.provider.mjs +1 -1
  148. package/esm2022/directives/text-field-controller/text-field-icon-left.directive.mjs +1 -1
  149. package/esm2022/directives/text-field-controller/text-field-id.directive.mjs +1 -1
  150. package/esm2022/directives/text-field-controller/text-field-is-error.directive.mjs +1 -1
  151. package/esm2022/directives/text-field-controller/text-field-placeholder.directive.mjs +1 -1
  152. package/esm2022/directives/text-field-controller/text-field-size.directive.mjs +1 -1
  153. package/esm2022/directives/text-field-controller/text-field.controller.mjs +1 -1
  154. package/esm2022/directives/tooltip/index.mjs +1 -1
  155. package/esm2022/directives/tooltip/tooltip-describe.directive.mjs +1 -1
  156. package/esm2022/directives/tooltip/tooltip-driver.directive.mjs +1 -1
  157. package/esm2022/directives/tooltip/tooltip-host.directive.mjs +1 -1
  158. package/esm2022/directives/tooltip/tooltip-hover.directive.mjs +1 -1
  159. package/esm2022/directives/tooltip/tooltip-manual.directive.mjs +1 -1
  160. package/esm2022/directives/tooltip/tooltip-options.directive.mjs +1 -1
  161. package/esm2022/directives/tooltip/tooltip-overflow.directive.mjs +1 -1
  162. package/esm2022/directives/tooltip/tooltip-pointer.directive.mjs +1 -1
  163. package/esm2022/directives/tooltip/tooltip-position.directive.mjs +1 -1
  164. package/esm2022/directives/tooltip/tooltip-unstyled.component.mjs +1 -1
  165. package/esm2022/directives/tooltip/tooltip.component.mjs +13 -13
  166. package/esm2022/directives/tooltip/tooltip.directive.mjs +1 -1
  167. package/esm2022/directives/tooltip/tooltip.mjs +1 -1
  168. package/esm2022/directives/tooltip/tooltip.providers.mjs +1 -1
  169. package/esm2022/directives/tooltip/tooltip.service.mjs +1 -1
  170. package/esm2022/directives/tooltip/tooltips.component.mjs +3 -3
  171. package/esm2022/editor/components/editor-tool-modal/editor-tool-modal.component.mjs +3 -3
  172. package/esm2022/editor/components/editor-tool-modal/editor-tool-modal.options.mjs +1 -1
  173. package/esm2022/editor/components/marker-modal/marker-modal.component.mjs +3 -3
  174. package/esm2022/editor/components/marker-select/component/select-item/select-option.component.mjs +3 -3
  175. package/esm2022/editor/components/marker-select/marker-select.component.mjs +3 -3
  176. package/esm2022/editor/config/custom-elements.mjs +1 -1
  177. package/esm2022/editor/editor.component.mjs +3 -3
  178. package/esm2022/editor/interfaces/angular-element.mjs +1 -1
  179. package/esm2022/editor/interfaces/custom-element.mjs +1 -1
  180. package/esm2022/editor/tools/combined-text-block.tool.mjs +1 -1
  181. package/esm2022/editor/tools/role-marker.tool.mjs +3 -3
  182. package/esm2022/editor/tools/tool-marker.tool.mjs +1 -1
  183. package/esm2022/editor/utils/copy-text-to-clipboard.mjs +1 -1
  184. package/esm2022/editor/utils/url.validator.mjs +1 -1
  185. package/esm2022/editor/widgets/editor-block/editor-block.component.mjs +3 -3
  186. package/esm2022/editor/widgets/editor-modal/editor-modal.component.mjs +3 -3
  187. package/esm2022/editor/widgets/editor-modal/index.mjs +1 -1
  188. package/esm2022/editor/widgets/editor-readonly/editor-readonly.options.mjs +1 -1
  189. package/esm2022/editor/widgets/index.mjs +1 -1
  190. package/esm2022/index.mjs +1 -1
  191. package/esm2022/interceptors/auth.interceptor.mjs +1 -1
  192. package/esm2022/interceptors/error-handler.interceptor.mjs +1 -1
  193. package/esm2022/interceptors/x-ndjson.interceptor.mjs +1 -1
  194. package/esm2022/interfaces/context-menu-item.mjs +1 -1
  195. package/esm2022/interfaces/image.mjs +2 -0
  196. package/esm2022/interfaces/index.mjs +2 -1
  197. package/esm2022/interfaces/option.mjs +1 -1
  198. package/esm2022/providers/auth.options.mjs +1 -1
  199. package/esm2022/providers/auth.provider.mjs +1 -1
  200. package/esm2022/providers/index.mjs +1 -1
  201. package/esm2022/services/auth.service.mjs +1 -1
  202. package/esm2022/services/browser-auth.service.mjs +1 -1
  203. package/esm2022/services/index.mjs +1 -1
  204. package/esm2022/services/loader.options.mjs +1 -1
  205. package/esm2022/services/mobile-auth.service.mjs +1 -1
  206. package/esm2022/services/position.service.mjs +1 -1
  207. package/esm2022/services/theme.options.mjs +1 -1
  208. package/esm2022/services/theme.service.mjs +1 -1
  209. package/esm2022/services/token.options.mjs +1 -1
  210. package/esm2022/services/token.service.mjs +1 -1
  211. package/esm2022/services/visual-viewport.service.mjs +1 -1
  212. package/esm2022/tokens/animations-speed.mjs +1 -1
  213. package/esm2022/tokens/index.mjs +1 -1
  214. package/esm2022/tokens/reduced-motion.mjs +1 -1
  215. package/esm2022/tokens/viewport.mjs +1 -1
  216. package/esm2022/types/appearance.mjs +1 -1
  217. package/esm2022/types/hint-type.mjs +1 -1
  218. package/esm2022/types/index.mjs +1 -1
  219. package/esm2022/types/point.mjs +1 -1
  220. package/esm2022/types/portal-item.mjs +1 -1
  221. package/esm2022/types/position.mjs +1 -1
  222. package/esm2022/types/resizing.mjs +1 -1
  223. package/esm2022/types/shape.mjs +1 -1
  224. package/esm2022/types/size.mjs +1 -1
  225. package/esm2022/types/status.mjs +1 -1
  226. package/esm2022/utils/default-validators/create-default-validators.mjs +1 -1
  227. package/esm2022/utils/default-validators/create-default-validators.options.mjs +1 -1
  228. package/esm2022/utils/default-validators/extra-spaces.options.mjs +1 -1
  229. package/esm2022/utils/default-validators/extra-spaces.validators.mjs +1 -1
  230. package/esm2022/utils/default-validators/index.mjs +1 -1
  231. package/esm2022/utils/format/index.mjs +1 -1
  232. package/esm2022/utils/format/remove-spaces.mjs +1 -1
  233. package/esm2022/utils/format/replace.mjs +1 -1
  234. package/esm2022/utils/index.mjs +1 -1
  235. package/esm2022/utils/miscellaneous/index.mjs +1 -1
  236. package/esm2022/utils/miscellaneous/is-obscured.mjs +1 -1
  237. package/esm2022/utils/miscellaneous/override-options.mjs +1 -1
  238. package/esm2022/utils/miscellaneous/to-animation-options.mjs +1 -1
  239. package/esm2022/widgets/categories/components/categories-list/categories-list.component.mjs +3 -3
  240. package/esm2022/widgets/categories/components/category-form/category-form.component.mjs +3 -3
  241. package/esm2022/widgets/categories/components/category-item/category-item.component.mjs +3 -3
  242. package/esm2022/widgets/categories/components/create-category-item/create-category-item.component.mjs +3 -3
  243. package/esm2022/widgets/checklist-block/checklist-block.component.mjs +3 -3
  244. package/esm2022/widgets/checklist-block/checklist-block.options.mjs +1 -1
  245. package/esm2022/widgets/checklist-block/components/checklist-block-list/checklist-block-list.component.mjs +3 -3
  246. package/esm2022/widgets/checklist-block/components/checklist-block-list/index.mjs +1 -1
  247. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-action-card/checklist-block-list-item-action-card.component.mjs +3 -3
  248. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-action-card/index.mjs +1 -1
  249. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-action-with-verification/checklist-block-list-item-action-with-verification.component.mjs +3 -3
  250. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-action-with-verification/index.mjs +1 -1
  251. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-action-without-verification/checklist-block-list-item-action-without-verification.component.mjs +3 -3
  252. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-action-without-verification/index.mjs +1 -1
  253. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-container/checklist-block-list-item-container.component.mjs +3 -3
  254. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-container/checklist-block-list-item-container.options.mjs +1 -1
  255. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-container/index.mjs +1 -1
  256. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-evaluation/checklist-block-list-item-evaluation.component.mjs +3 -3
  257. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-evaluation-criteria/checklist-block-list-item-evaluation-criteria.component.mjs +3 -3
  258. package/esm2022/widgets/checklist-block/components/checklist-block-title-control/checklist-block-title-control.component.mjs +3 -3
  259. package/esm2022/widgets/checklist-block/components/index.mjs +1 -1
  260. package/esm2022/widgets/checklist-block/index.mjs +1 -1
  261. package/esm2022/widgets/checklist-block/services/checklist-block.service.mjs +1 -1
  262. package/esm2022/widgets/checklist-block/services/index.mjs +1 -1
  263. package/esm2022/widgets/criterion-info/criterion-info.component.mjs +137 -0
  264. package/esm2022/widgets/criterion-info/index.mjs +2 -0
  265. package/esm2022/widgets/criterion-info-form/criterion-info-form.component.mjs +147 -0
  266. package/esm2022/widgets/criterion-info-form/criterion-info-form.options.mjs +2 -0
  267. package/esm2022/widgets/criterion-info-form/index.mjs +2 -0
  268. package/esm2022/widgets/criterion-readonly-info/criterion-readonly-info.component.mjs +72 -0
  269. package/esm2022/widgets/criterion-readonly-info/index.mjs +2 -0
  270. package/esm2022/widgets/general-control-error-hint/general-control-error-hint.component.mjs +3 -3
  271. package/esm2022/widgets/general-control-error-hint/index.mjs +1 -1
  272. package/esm2022/widgets/index.mjs +2 -2
  273. package/esm2022/widgets/instruction-info/index.mjs +2 -0
  274. package/esm2022/widgets/instruction-info/instruction-info.component.mjs +147 -0
  275. package/esm2022/widgets/instruction-info-form/index.mjs +2 -0
  276. package/esm2022/widgets/instruction-info-form/instruction-info-form.component.mjs +153 -0
  277. package/esm2022/widgets/instruction-info-form/instruction-info-form.options.mjs +2 -0
  278. package/esm2022/widgets/instruction-readonly-info/index.mjs +2 -0
  279. package/esm2022/widgets/instruction-readonly-info/instruction-readonly-info.component.mjs +72 -0
  280. package/esm2022/widgets/utility-modal/components/criterion-modal-create/criterion-modal-create.component.mjs +40 -0
  281. package/esm2022/widgets/utility-modal/components/criterion-modal-create/index.mjs +2 -0
  282. package/esm2022/widgets/utility-modal/components/index.mjs +5 -0
  283. package/esm2022/widgets/utility-modal/components/instruction-modal-create/index.mjs +2 -0
  284. package/esm2022/widgets/utility-modal/components/instruction-modal-create/instruction-modal-create.component.mjs +40 -0
  285. package/esm2022/widgets/utility-modal/components/readonly-criterion-modal/index.mjs +2 -0
  286. package/esm2022/widgets/utility-modal/components/readonly-criterion-modal/readonly-criterion-modal.component.mjs +40 -0
  287. package/esm2022/widgets/utility-modal/components/readonly-instruction-modal/index.mjs +2 -0
  288. package/esm2022/widgets/utility-modal/components/readonly-instruction-modal/readonly-instruction-modal.component.mjs +40 -0
  289. package/esm2022/widgets/utility-modal/components/readonly-utility-modal/index.mjs +2 -0
  290. package/esm2022/widgets/utility-modal/components/readonly-utility-modal/readonly-utility-modal.component.mjs +42 -0
  291. package/esm2022/widgets/utility-modal/components/utility-modal-create/index.mjs +2 -0
  292. package/esm2022/widgets/utility-modal/components/utility-modal-create/utility-modal-create.component.mjs +55 -0
  293. package/esm2022/widgets/utility-modal/index.mjs +4 -0
  294. package/esm2022/widgets/utility-modal/utility-modal.component.mjs +22 -0
  295. package/esm2022/widgets/utility-modal/utility-modal.options.mjs +3 -0
  296. package/esm2022/widgets/utility-readonly-thumbnail/index.mjs +2 -0
  297. package/esm2022/widgets/utility-readonly-thumbnail/utility-readonly-thumbnail.component.mjs +15 -0
  298. package/esm2022/widgets/utility-thumbnail/index.mjs +2 -0
  299. package/esm2022/widgets/utility-thumbnail/utility-thumbnail.component.mjs +94 -0
  300. package/fesm2022/cuby-ui-core.mjs +1120 -373
  301. package/fesm2022/cuby-ui-core.mjs.map +1 -1
  302. package/fonts/Inter-Bold.svg +25443 -25443
  303. package/fonts/Inter-Medium.svg +25400 -25400
  304. package/fonts/Inter-Regular.svg +24341 -24341
  305. package/fonts/Inter-SemiBold.svg +25459 -25459
  306. package/interfaces/image.d.ts +5 -0
  307. package/interfaces/index.d.ts +1 -0
  308. package/package.json +4 -4
  309. package/providers/auth.options.d.ts +1 -1
  310. package/styles/fonts.scss +51 -51
  311. package/styles/global.scss +10 -10
  312. package/styles/mixins/buttons.scss +13 -13
  313. package/styles/mixins/flex.scss +21 -21
  314. package/styles/mixins/headings.scss +115 -115
  315. package/styles/mixins/inputs.scss +91 -91
  316. package/styles/mixins/lists.scss +42 -42
  317. package/styles/mixins/paddings.scss +35 -35
  318. package/styles/mixins/shadows.scss +38 -38
  319. package/styles/mixins/texts.scss +225 -225
  320. package/styles/theme.scss +420 -412
  321. package/styles/variables/colors.scss +281 -277
  322. package/widgets/categories/components/category-item/category-item.component.d.ts +3 -3
  323. package/widgets/criterion-info/criterion-info.component.d.ts +43 -0
  324. package/widgets/criterion-info/index.d.ts +1 -0
  325. package/widgets/criterion-info-form/criterion-info-form.component.d.ts +39 -0
  326. package/widgets/criterion-info-form/criterion-info-form.options.d.ts +7 -0
  327. package/widgets/criterion-info-form/index.d.ts +2 -0
  328. package/widgets/criterion-readonly-info/criterion-readonly-info.component.d.ts +26 -0
  329. package/widgets/criterion-readonly-info/index.d.ts +1 -0
  330. package/widgets/index.d.ts +1 -1
  331. package/widgets/instruction-info/index.d.ts +1 -0
  332. package/widgets/instruction-info/instruction-info.component.d.ts +45 -0
  333. package/widgets/instruction-info-form/index.d.ts +2 -0
  334. package/widgets/{utility-info/utility-info.component.d.ts → instruction-info-form/instruction-info-form.component.d.ts} +12 -23
  335. package/widgets/{utility-info/utility-info.options.d.ts → instruction-info-form/instruction-info-form.options.d.ts} +3 -3
  336. package/widgets/instruction-readonly-info/index.d.ts +1 -0
  337. package/widgets/instruction-readonly-info/instruction-readonly-info.component.d.ts +26 -0
  338. package/widgets/utility-modal/components/criterion-modal-create/criterion-modal-create.component.d.ts +18 -0
  339. package/widgets/utility-modal/components/criterion-modal-create/index.d.ts +1 -0
  340. package/widgets/utility-modal/components/index.d.ts +4 -0
  341. package/widgets/utility-modal/components/instruction-modal-create/index.d.ts +1 -0
  342. package/widgets/utility-modal/components/instruction-modal-create/instruction-modal-create.component.d.ts +18 -0
  343. package/widgets/utility-modal/components/readonly-criterion-modal/index.d.ts +1 -0
  344. package/widgets/utility-modal/components/readonly-criterion-modal/readonly-criterion-modal.component.d.ts +16 -0
  345. package/widgets/utility-modal/components/readonly-instruction-modal/index.d.ts +1 -0
  346. package/widgets/utility-modal/components/readonly-instruction-modal/readonly-instruction-modal.component.d.ts +16 -0
  347. package/widgets/utility-modal/components/readonly-utility-modal/index.d.ts +1 -0
  348. package/widgets/utility-modal/components/readonly-utility-modal/readonly-utility-modal.component.d.ts +18 -0
  349. package/widgets/utility-modal/components/utility-modal-create/index.d.ts +1 -0
  350. package/widgets/utility-modal/components/utility-modal-create/utility-modal-create.component.d.ts +25 -0
  351. package/widgets/utility-modal/index.d.ts +3 -0
  352. package/widgets/utility-modal/utility-modal.component.d.ts +10 -0
  353. package/widgets/utility-modal/utility-modal.options.d.ts +12 -0
  354. package/widgets/utility-readonly-thumbnail/index.d.ts +1 -0
  355. package/widgets/utility-readonly-thumbnail/utility-readonly-thumbnail.component.d.ts +8 -0
  356. package/widgets/utility-thumbnail/index.d.ts +1 -0
  357. package/widgets/utility-thumbnail/utility-thumbnail.component.d.ts +21 -0
  358. package/esm2022/widgets/utility-info/index.mjs +0 -2
  359. package/esm2022/widgets/utility-info/utility-info.component.mjs +0 -249
  360. package/esm2022/widgets/utility-info/utility-info.options.mjs +0 -2
  361. package/widgets/utility-info/index.d.ts +0 -2
@@ -1,249 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, computed, DestroyRef, effect, forwardRef, inject, input, output, signal } from '@angular/core';
2
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
- import { NonNullableFormBuilder, ReactiveFormsModule } from '@angular/forms';
4
- import { CuiFrameApiService } from '@cuby-ui/api';
5
- import { CuiIdService } from '@cuby-ui/cdk';
6
- import { TranslocoDirective, TranslocoService } from '@jsverse/transloco';
7
- import { debounceTime, map, pairwise, startWith } from 'rxjs';
8
- import { CuiAccordionModule, CuiAlertService, CuiButtonModule, CuiFormFieldModule, CuiHintModule, CuiInputModule, CuiLabelModule } from '../../components';
9
- import { CuiTooltip } from '../../directives';
10
- import { CuiEditorBlockComponent } from '../../editor';
11
- import { cuiCreateDefaultValidators } from '../../utils';
12
- import { CuiGeneralControlErrorHintComponent } from '../general-control-error-hint';
13
- import * as i0 from "@angular/core";
14
- import * as i1 from "../../components/button/button.component";
15
- import * as i2 from "../../components/form-field/form-field.component";
16
- import * as i3 from "../../components/input-text/input-text.component";
17
- import * as i4 from "../../directives/text-field-controller/text-field-id.directive";
18
- import * as i5 from "../../directives/text-field-controller/text-field-placeholder.directive";
19
- import * as i6 from "../../directives/text-field-controller/text-field-is-error.directive";
20
- import * as i7 from "../../components/label/label.component";
21
- import * as i8 from "@angular/forms";
22
- export class CuiUtilityInfoComponent {
23
- get controls() {
24
- return this.form.controls;
25
- }
26
- get isTitleError() {
27
- return this.controls.title.invalid && this.controls.title.dirty;
28
- }
29
- get isDescriptionError() {
30
- return this.controls.description.invalid && this.controls.description.dirty;
31
- }
32
- constructor() {
33
- this.destroy = inject(DestroyRef);
34
- this.formBuilder = inject(NonNullableFormBuilder);
35
- this.translocoService = inject(TranslocoService);
36
- this.frameApiService = inject(CuiFrameApiService);
37
- this.cuiAlertService = inject(CuiAlertService);
38
- this.cuiIdService = inject(CuiIdService);
39
- this.CONTROL_DELAY = 500;
40
- this.MAX_FILE_SIZE = 20971520;
41
- this.titleId = this.cuiIdService.generate();
42
- this.descriptionId = this.cuiIdService.generate();
43
- this.form = this.formBuilder.group({
44
- title: this.formBuilder.control('', cuiCreateDefaultValidators({ asyncDelay: this.CONTROL_DELAY })),
45
- description: this.formBuilder.control('', cuiCreateDefaultValidators({ asyncDelay: this.CONTROL_DELAY }))
46
- });
47
- this.isDescriptionModalOpen = signal(false);
48
- this.isDescriptionEmpty = signal(false);
49
- this.editorId = signal(null);
50
- this.thumbnail = signal(null);
51
- this.thumbnailUrl = computed(() => {
52
- const thumbnail = this.thumbnail();
53
- if (thumbnail?.resource) {
54
- return thumbnail.resource;
55
- }
56
- return this.baseResourceUrl() + thumbnail.fileId;
57
- });
58
- this.uploadButtonName = computed(() => {
59
- const thumbnail = this.thumbnail();
60
- if (thumbnail?.name) {
61
- return this.translocoService.translate('REPLACE_FILE');
62
- }
63
- return this.translocoService.translate('UPLOAD_FILE');
64
- });
65
- this.heading = null;
66
- this.title = input.required();
67
- this.description = input.required();
68
- this.framerId = input.required();
69
- this.baseResourceUrl = input.required();
70
- this.config = input.required();
71
- this.formChanged = output();
72
- this.isFormValidChanged = output();
73
- this.initUtilityEffect();
74
- }
75
- onSelectFile() {
76
- const input = document.createElement('input');
77
- input.type = 'file';
78
- input.accept = 'image/jpg, image/jpeg, image/png, video/mp4';
79
- input.onchange = () => {
80
- const files = input.files;
81
- if (!files?.length) {
82
- return;
83
- }
84
- this.getFile(files);
85
- };
86
- input.click();
87
- }
88
- onEditorEmpty(isEmpty) {
89
- this.isDescriptionEmpty.set(isEmpty);
90
- this.isFormValidChanged.emit(this.checkFormValidation());
91
- }
92
- onRemoveThumbnail() {
93
- const frameId = this.framerId();
94
- const fragmentId = this.thumbnail()?.id;
95
- if (!frameId || !fragmentId) {
96
- return;
97
- }
98
- this.frameApiService.deleteResource(frameId, fragmentId).subscribe(() => {
99
- this.thumbnail.update((prev) => ({ ...prev, fileId: null, name: null, resource: null }));
100
- });
101
- }
102
- onToggleDescriptionModal() {
103
- this.isDescriptionModalOpen.update((prev) => !prev);
104
- }
105
- initUtilityEffect() {
106
- const effectRef = effect(() => {
107
- const title = this.title();
108
- if (!title) {
109
- return;
110
- }
111
- this.initFormSubscriptions();
112
- this.initFrameFragments();
113
- effectRef.destroy();
114
- });
115
- }
116
- initFormSubscriptions() {
117
- this.form.setValue({ title: this.title(), description: this.description() }, { emitEvent: false });
118
- this.form.statusChanges
119
- .pipe(takeUntilDestroyed(this.destroy))
120
- .subscribe(() => this.isFormValidChanged.emit(this.checkFormValidation()));
121
- this.form.valueChanges
122
- .pipe(takeUntilDestroyed(this.destroy), startWith(this.form.value), pairwise(), debounceTime(this.CONTROL_DELAY), map(([prev, current]) => this.compareFormValues([prev, current])))
123
- .subscribe((value) => {
124
- if (!Object.keys(value).length) {
125
- return;
126
- }
127
- this.formChanged.emit(value);
128
- });
129
- }
130
- initFrameFragments() {
131
- const frameId = this.framerId();
132
- if (!frameId) {
133
- return;
134
- }
135
- this.frameApiService.getFrame(frameId).subscribe((frame) => {
136
- frame.fragments.forEach((fragment) => {
137
- if (fragment.type === "J_TEXT" /* FragmentType.jText */) {
138
- this.editorId.set(fragment?.id);
139
- }
140
- if (fragment.type === "RESOURCE_FILE" /* FragmentType.resourceFile */) {
141
- this.setResourceFile(fragment);
142
- }
143
- });
144
- });
145
- }
146
- compareFormValues([prevGroup, currentGruop]) {
147
- const keys = Object.keys(currentGruop);
148
- const changedFields = {};
149
- keys.forEach((key) => {
150
- const prev = prevGroup[key];
151
- const current = currentGruop[key];
152
- if (prev === current || this.controls[key].invalid) {
153
- return;
154
- }
155
- changedFields[key] = current;
156
- });
157
- return changedFields;
158
- }
159
- setResourceFile(resource) {
160
- const url = this.baseResourceUrl() + resource.fileId;
161
- this.thumbnail.set(resource);
162
- if (!url || resource?.name?.split('.').pop() !== 'mp4') {
163
- return;
164
- }
165
- this.getCaptureFromVideo(url);
166
- }
167
- getFile(files) {
168
- const file = files.item(0);
169
- if (!file) {
170
- return;
171
- }
172
- if (file.size > this.MAX_FILE_SIZE) {
173
- this.cuiAlertService
174
- .open(this.translocoService.translate('INVALID_FILE_SIZE'), {
175
- status: 'error'
176
- })
177
- .subscribe();
178
- return;
179
- }
180
- const isVideo = file.name.split('.').at(-1) === 'mp4';
181
- const url = URL.createObjectURL(file);
182
- if (isVideo) {
183
- this.getCaptureFromVideo(url, file);
184
- }
185
- else {
186
- this.thumbnail.update((prev) => ({ ...prev, name: file.name, resource: url }));
187
- }
188
- this.uploadFile(file);
189
- }
190
- uploadFile(file) {
191
- const frameId = this.framerId();
192
- const fragmentId = this.thumbnail()?.id;
193
- if (!frameId || !fragmentId) {
194
- return;
195
- }
196
- const formData = new FormData();
197
- formData.append('resource', file);
198
- this.frameApiService.uploadResource(formData, frameId, fragmentId).subscribe();
199
- }
200
- getCaptureFromVideo(url, file) {
201
- const canvas = document.createElement('canvas');
202
- const video = document.createElement('video');
203
- video.src = url;
204
- video.currentTime = 1;
205
- canvas.width = 184;
206
- canvas.height = 120;
207
- video.onloadeddata = () => {
208
- const context = canvas.getContext('2d');
209
- if (!context) {
210
- return;
211
- }
212
- context.drawImage(video, 0, 0, canvas.width, canvas.height);
213
- canvas.toBlob((blob) => {
214
- if (!blob) {
215
- return;
216
- }
217
- const videoCaptureUrl = URL.createObjectURL(blob);
218
- this.thumbnail.update((prev) => ({
219
- ...prev,
220
- name: (file?.name || prev?.name),
221
- resource: videoCaptureUrl
222
- }));
223
- });
224
- };
225
- video.load();
226
- }
227
- checkFormValidation() {
228
- return !this.isDescriptionEmpty() && !this.form.invalid;
229
- }
230
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiUtilityInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
231
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CuiUtilityInfoComponent, isStandalone: true, selector: "cui-utility-info", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: true, transformFunction: null }, framerId: { classPropertyName: "framerId", publicName: "framerId", isSignal: true, isRequired: true, transformFunction: null }, baseResourceUrl: { classPropertyName: "baseResourceUrl", publicName: "baseResourceUrl", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { formChanged: "formChanged", isFormValidChanged: "isFormValidChanged" }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n <section class=\"content\">\r\n <cui-form-field>\r\n <label cuiLabel [isRequired]=\"true\" [for]=\"titleId\">\r\n {{ t('TITLE') }}\r\n </label>\r\n <cui-input-text\r\n [cuiTextFieldId]=\"titleId\"\r\n [cuiTextFieldPlaceholder]=\"t('ADD_A_TITLE')\"\r\n [cuiTextFieldIsError]=\"isTitleError\"\r\n [formControl]=\"form.controls.title\"\r\n />\r\n @if (isTitleError) {\r\n <cui-general-control-error-hint [control]=\"form.controls.title\" [isVisible]=\"true\" />\r\n }\r\n </cui-form-field>\r\n <cui-form-field>\r\n <label cuiLabel [isRequired]=\"true\" [for]=\"descriptionId\">\r\n {{ t('SHORT_DESCRIPTION') }}\r\n </label>\r\n <cui-input-text\r\n [cuiTextFieldId]=\"descriptionId\"\r\n cuiTextFieldPlaceholder=\"{{t('SHORT_DESCRIPTION')}}...\"\r\n [cuiTextFieldIsError]=\"isDescriptionError\"\r\n [formControl]=\"form.controls.description\"\r\n />\r\n @if (isDescriptionError) {\r\n <cui-general-control-error-hint [control]=\"form.controls.description\" [isVisible]=\"true\" />\r\n }\r\n </cui-form-field>\r\n <section class=\"file\">\r\n <span class=\"title\">{{ t('THUMBNAIL') }}</span>\r\n <div class=\"content__upload\">\r\n <div class=\"content__upload-file\">\r\n @if (thumbnail()?.name; as fileId) {\r\n <div class=\"image\">\r\n <span class=\"image__name\">{{ thumbnail()?.name }}</span>\r\n <!-- TODO: ngSrc -->\r\n <img class=\"image__view\" [src]=\"thumbnailUrl()\" height=\"120\" width=\"184\" alt=\"Thumbnail\" />\r\n </div>\r\n }\r\n <div class=\"content__info\">\r\n <button type=\"button\" cuiButton appearance=\"outlined-gray\" size=\"xxs\" icon=\"cuiIconUpload\"\r\n (click)=\"onSelectFile()\">\r\n {{ uploadButtonName() }}\r\n </button>\r\n @if (thumbnail()?.name) {\r\n <button class=\"content__remove-button\" cuiButton appearance=\"link\" size=\"sm\" type=\"button\"\r\n (click)=\"onRemoveThumbnail()\">\r\n {{ t('REMOVE') }}\r\n </button>\r\n }\r\n\r\n <span class=\"content__accepted\">\r\n {{ t('ACCEPTED') }}: JPG, JPEG, PNG, MP4 {{ t('UP_TO') }} 20MB\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n @if (editorId(); as editorId) {\r\n <cui-editor-block\r\n [title]=\"form.controls.title.value || title()\"\r\n [config]=\"config()\"\r\n [editorId]=\"editorId\"\r\n [required]=\"true\"\r\n class=\"editor\"\r\n (editorEmpty)=\"onEditorEmpty($event)\"\r\n ></cui-editor-block>\r\n }\r\n </section>\r\n</ng-container>\r\n", styles: ["::ng-deep cui-dialog:has(.instruction-description-modal){inset:0;margin:auto;transform:none!important}:host{--editor-height: 650px;display:block}:host .editor{--max-editor-height: var(--editor-height)}.title{font-weight:500;font-size:14px;line-height:20px;display:flex;gap:2px}.title_required{color:var(--cui-danger)}.content{display:flex;flex-direction:column;gap:16px;padding:16px 24px}.content__upload{padding:12px 16px;border-radius:8px;border:1px solid var(--cui-base-200);background:var(--cui-base-10)}.content__info{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.content__accepted{color:var(--cui-base-500)}.content__upload-file{display:flex;align-items:center;gap:8px}.content__upload-file input[type=file]{display:none}.content__remove-button ::ng-deep .c-content{color:var(--cui-danger)!important}.file{display:flex;flex-direction:column;gap:4px}.description_invalid{border:1px solid var(--cui-danger)}.image{position:relative;display:inline-block}.image__view{border-radius:8px;object-fit:cover}.image__name{position:absolute;top:6px;left:14px;color:var(--cui-base-0);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:170px;z-index:1}.image:after{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background-color:#0003;z-index:0;pointer-events:none;border-radius:8px}.button-save{margin-left:auto}.instruction-description-modal{text-transform:none}.empty{padding:16px;color:var(--cui-base-500);text-align:center}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CuiAccordionModule) }, { kind: "ngmodule", type: i0.forwardRef(() => CuiButtonModule) }, { kind: "component", type: i0.forwardRef(() => i1.CuiButtonComponent), selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "size"] }, { kind: "ngmodule", type: i0.forwardRef(() => CuiFormFieldModule) }, { kind: "component", type: i0.forwardRef(() => i2.CuiFormFieldComponent), selector: "cui-form-field" }, { kind: "ngmodule", type: i0.forwardRef(() => CuiHintModule) }, { kind: "ngmodule", type: i0.forwardRef(() => CuiInputModule) }, { kind: "component", type: i0.forwardRef(() => i3.CuiInputTextComponent), selector: "cui-input-text" }, { kind: "directive", type: i0.forwardRef(() => i4.CuiTextFieldIdDirective), selector: "[cuiTextFieldId]", inputs: ["cuiTextFieldId"] }, { kind: "directive", type: i0.forwardRef(() => i5.CuiTextFieldPlaceholderDirective), selector: "[cuiTextFieldPlaceholder]", inputs: ["cuiTextFieldPlaceholder"] }, { kind: "directive", type: i0.forwardRef(() => i6.CuiTextFieldIsErrorDirective), selector: "[cuiTextFieldIsError]", inputs: ["cuiTextFieldIsError"] }, { kind: "ngmodule", type: i0.forwardRef(() => CuiLabelModule) }, { kind: "component", type: i0.forwardRef(() => i7.CuiLabelComponent), selector: "label[cuiLabel]", inputs: ["isRequired"] }, { kind: "component", type: i0.forwardRef(() => CuiEditorBlockComponent), selector: "cui-editor-block", inputs: ["title", "editorId", "config", "required"], outputs: ["editorEmpty"] }, { kind: "component", type: i0.forwardRef(() => CuiGeneralControlErrorHintComponent), selector: "cui-general-control-error-hint", inputs: ["control", "isVisible"] }, { kind: "ngmodule", type: i0.forwardRef(() => ReactiveFormsModule) }, { kind: "directive", type: i0.forwardRef(() => i8.NgControlStatus), selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i0.forwardRef(() => i8.FormControlDirective), selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i0.forwardRef(() => TranslocoDirective), selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
232
- }
233
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiUtilityInfoComponent, decorators: [{
234
- type: Component,
235
- args: [{ selector: 'cui-utility-info', imports: [
236
- CuiAccordionModule,
237
- CuiButtonModule,
238
- CuiFormFieldModule,
239
- CuiHintModule,
240
- CuiInputModule,
241
- CuiLabelModule,
242
- forwardRef(() => CuiEditorBlockComponent),
243
- CuiGeneralControlErrorHintComponent,
244
- ReactiveFormsModule,
245
- TranslocoDirective,
246
- CuiTooltip
247
- ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *transloco=\"let t\">\r\n <section class=\"content\">\r\n <cui-form-field>\r\n <label cuiLabel [isRequired]=\"true\" [for]=\"titleId\">\r\n {{ t('TITLE') }}\r\n </label>\r\n <cui-input-text\r\n [cuiTextFieldId]=\"titleId\"\r\n [cuiTextFieldPlaceholder]=\"t('ADD_A_TITLE')\"\r\n [cuiTextFieldIsError]=\"isTitleError\"\r\n [formControl]=\"form.controls.title\"\r\n />\r\n @if (isTitleError) {\r\n <cui-general-control-error-hint [control]=\"form.controls.title\" [isVisible]=\"true\" />\r\n }\r\n </cui-form-field>\r\n <cui-form-field>\r\n <label cuiLabel [isRequired]=\"true\" [for]=\"descriptionId\">\r\n {{ t('SHORT_DESCRIPTION') }}\r\n </label>\r\n <cui-input-text\r\n [cuiTextFieldId]=\"descriptionId\"\r\n cuiTextFieldPlaceholder=\"{{t('SHORT_DESCRIPTION')}}...\"\r\n [cuiTextFieldIsError]=\"isDescriptionError\"\r\n [formControl]=\"form.controls.description\"\r\n />\r\n @if (isDescriptionError) {\r\n <cui-general-control-error-hint [control]=\"form.controls.description\" [isVisible]=\"true\" />\r\n }\r\n </cui-form-field>\r\n <section class=\"file\">\r\n <span class=\"title\">{{ t('THUMBNAIL') }}</span>\r\n <div class=\"content__upload\">\r\n <div class=\"content__upload-file\">\r\n @if (thumbnail()?.name; as fileId) {\r\n <div class=\"image\">\r\n <span class=\"image__name\">{{ thumbnail()?.name }}</span>\r\n <!-- TODO: ngSrc -->\r\n <img class=\"image__view\" [src]=\"thumbnailUrl()\" height=\"120\" width=\"184\" alt=\"Thumbnail\" />\r\n </div>\r\n }\r\n <div class=\"content__info\">\r\n <button type=\"button\" cuiButton appearance=\"outlined-gray\" size=\"xxs\" icon=\"cuiIconUpload\"\r\n (click)=\"onSelectFile()\">\r\n {{ uploadButtonName() }}\r\n </button>\r\n @if (thumbnail()?.name) {\r\n <button class=\"content__remove-button\" cuiButton appearance=\"link\" size=\"sm\" type=\"button\"\r\n (click)=\"onRemoveThumbnail()\">\r\n {{ t('REMOVE') }}\r\n </button>\r\n }\r\n\r\n <span class=\"content__accepted\">\r\n {{ t('ACCEPTED') }}: JPG, JPEG, PNG, MP4 {{ t('UP_TO') }} 20MB\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n @if (editorId(); as editorId) {\r\n <cui-editor-block\r\n [title]=\"form.controls.title.value || title()\"\r\n [config]=\"config()\"\r\n [editorId]=\"editorId\"\r\n [required]=\"true\"\r\n class=\"editor\"\r\n (editorEmpty)=\"onEditorEmpty($event)\"\r\n ></cui-editor-block>\r\n }\r\n </section>\r\n</ng-container>\r\n", styles: ["::ng-deep cui-dialog:has(.instruction-description-modal){inset:0;margin:auto;transform:none!important}:host{--editor-height: 650px;display:block}:host .editor{--max-editor-height: var(--editor-height)}.title{font-weight:500;font-size:14px;line-height:20px;display:flex;gap:2px}.title_required{color:var(--cui-danger)}.content{display:flex;flex-direction:column;gap:16px;padding:16px 24px}.content__upload{padding:12px 16px;border-radius:8px;border:1px solid var(--cui-base-200);background:var(--cui-base-10)}.content__info{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.content__accepted{color:var(--cui-base-500)}.content__upload-file{display:flex;align-items:center;gap:8px}.content__upload-file input[type=file]{display:none}.content__remove-button ::ng-deep .c-content{color:var(--cui-danger)!important}.file{display:flex;flex-direction:column;gap:4px}.description_invalid{border:1px solid var(--cui-danger)}.image{position:relative;display:inline-block}.image__view{border-radius:8px;object-fit:cover}.image__name{position:absolute;top:6px;left:14px;color:var(--cui-base-0);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:170px;z-index:1}.image:after{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background-color:#0003;z-index:0;pointer-events:none;border-radius:8px}.button-save{margin-left:auto}.instruction-description-modal{text-transform:none}.empty{padding:16px;color:var(--cui-base-500);text-align:center}\n"] }]
248
- }], ctorParameters: () => [] });
249
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eS1pbmZvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91dGlsaXR5LWluZm8vdXRpbGl0eS1pbmZvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91dGlsaXR5LWluZm8vdXRpbGl0eS1pbmZvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixVQUFVLEVBQ1YsTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFrQyxNQUFNLGNBQWMsQ0FBQztBQUNsRixPQUFPLEVBQUUsWUFBWSxFQUFvQixNQUFNLGNBQWMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTlELE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLGNBQWMsRUFDZCxjQUFjLEVBQ2pCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSx1QkFBdUIsRUFBbUIsTUFBTSxjQUFjLENBQUM7QUFDeEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7O0FBdUJwRixNQUFNLE9BQU8sdUJBQXVCO0lBMENoQyxJQUFjLFFBQVE7UUFDbEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBYyxZQUFZO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUNwRSxDQUFDO0lBRUQsSUFBYyxrQkFBa0I7UUFDNUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO0lBQ2hGLENBQUM7SUFXRDtRQTlEaUIsWUFBTyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM3QixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQzdDLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVDLG9CQUFlLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDN0Msb0JBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDMUMsaUJBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFbEMsa0JBQWEsR0FBRyxHQUFHLENBQUM7UUFDcEIsa0JBQWEsR0FBRyxRQUFRLENBQUM7UUFFekIsWUFBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdkMsa0JBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdDLFNBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBc0I7WUFDbEUsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSwwQkFBMEIsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztZQUNuRyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLDBCQUEwQixDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1NBQzVHLENBQUMsQ0FBQztRQUNnQiwyQkFBc0IsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLGFBQVEsR0FBRyxNQUFNLENBQXNCLElBQUksQ0FBQyxDQUFDO1FBQzdDLGNBQVMsR0FBRyxNQUFNLENBQWdDLElBQUksQ0FBQyxDQUFDO1FBQ3hELGlCQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUM1QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFFbkMsSUFBSSxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUM7Z0JBQ3RCLE9BQU8sU0FBUyxDQUFDLFFBQVEsQ0FBQztZQUM5QixDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLEdBQUcsU0FBVSxDQUFDLE1BQU8sQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQztRQUNnQixxQkFBZ0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ2hELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUVuQyxJQUFJLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDbEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzNELENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDMUQsQ0FBQyxDQUFDLENBQUM7UUFFTyxZQUFPLEdBQXdCLElBQUksQ0FBQztRQWM5QixVQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBQ2pDLGdCQUFXLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBQ3ZDLGFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFDcEMsb0JBQWUsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFDM0MsV0FBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQW1CLENBQUM7UUFFM0MsZ0JBQVcsR0FBRyxNQUFNLEVBQWlDLENBQUM7UUFDdEQsdUJBQWtCLEdBQUcsTUFBTSxFQUFXLENBQUM7UUFHbkQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVTLFlBQVk7UUFDbEIsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QyxLQUFLLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztRQUNwQixLQUFLLENBQUMsTUFBTSxHQUFHLDZDQUE2QyxDQUFDO1FBRTdELEtBQUssQ0FBQyxRQUFRLEdBQUcsR0FBUyxFQUFFO1lBQ3hCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFFMUIsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztnQkFDakIsT0FBTztZQUNYLENBQUM7WUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQztRQUVGLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRVMsYUFBYSxDQUFDLE9BQWdCO1FBQ3BDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFUyxpQkFBaUI7UUFDdkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFFeEMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzFCLE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDcEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM5RixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFUyx3QkFBd0I7UUFDOUIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU8saUJBQWlCO1FBQ3JCLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBRTNCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDVCxPQUFPO1lBQ1gsQ0FBQztZQUVELElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzFCLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxxQkFBcUI7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRW5HLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTthQUNsQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3RDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUvRSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVk7YUFDakIsSUFBSSxDQUNELGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFDaEMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQzFCLFFBQVEsRUFBRSxFQUNWLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQ2hDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUNwRTthQUNBLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM3QixPQUFPO1lBQ1gsQ0FBQztZQUVELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVPLGtCQUFrQjtRQUN0QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFaEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ1gsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN2RCxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNqQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLHNDQUF1QixFQUFFLENBQUM7b0JBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDcEMsQ0FBQztnQkFFRCxJQUFJLFFBQVEsQ0FBQyxJQUFJLG9EQUE4QixFQUFFLENBQUM7b0JBQzlDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBNEIsQ0FBQyxDQUFDO2dCQUN2RCxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQWtDO1FBQ2hGLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFrQyxDQUFDO1FBQ3hFLE1BQU0sYUFBYSxHQUE0QixFQUFFLENBQUM7UUFFbEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2pCLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM1QixNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFbEMsSUFBSSxJQUFJLEtBQUssT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2pELE9BQU87WUFDWCxDQUFDO1lBRUQsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sYUFBYSxDQUFDO0lBQ3pCLENBQUM7SUFFTyxlQUFlLENBQUMsUUFBMEI7UUFDOUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxHQUFHLFFBQVEsQ0FBQyxNQUFPLENBQUM7UUFFdEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFN0IsSUFBSSxDQUFDLEdBQUcsSUFBSSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNyRCxPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU8sT0FBTyxDQUFDLEtBQWU7UUFDM0IsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUzQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDUixPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLGVBQWU7aUJBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsRUFBRTtnQkFDeEQsTUFBTSxFQUFFLE9BQU87YUFDbEIsQ0FBQztpQkFDRCxTQUFTLEVBQUUsQ0FBQztZQUVqQixPQUFPO1FBQ1gsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQztRQUN0RCxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXRDLElBQUksT0FBTyxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hDLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFTyxVQUFVLENBQUMsSUFBVTtRQUN6QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUV4QyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDMUIsT0FBTztRQUNYLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRWxDLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkYsQ0FBQztJQUVPLG1CQUFtQixDQUFDLEdBQVcsRUFBRSxJQUFXO1FBQ2hELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFzQixDQUFDO1FBQ3JFLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFxQixDQUFDO1FBRWxFLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2hCLEtBQUssQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO1FBQ25CLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBRXBCLEtBQUssQ0FBQyxZQUFZLEdBQUcsR0FBUyxFQUFFO1lBQzVCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFeEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNYLE9BQU87WUFDWCxDQUFDO1lBRUQsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUU1RCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDUixPQUFPO2dCQUNYLENBQUM7Z0JBRUQsTUFBTSxlQUFlLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQzdCLEdBQUcsSUFBSztvQkFDUixJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLENBQUU7b0JBQ2pDLFFBQVEsRUFBRSxlQUFlO2lCQUM1QixDQUFDLENBQUMsQ0FBQztZQUNSLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDO1FBRUYsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFTyxtQkFBbUI7UUFDdkIsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDNUQsQ0FBQzsrR0FuUlEsdUJBQXVCO21HQUF2Qix1QkFBdUIsMHpCQ3REcEMsdStGQXdFQSwyZ0REbkNRLGtCQUFrQixtREFDbEIsZUFBZSxvUUFDZixrQkFBa0IsMkpBQ2xCLGFBQWEsbURBQ2IsY0FBYyw2bEJBQ2QsY0FBYyxpTEFDRyx1QkFBdUIsaUtBQ3hDLG1DQUFtQyxpSUFDbkMsbUJBQW1CLHlYQUNuQixrQkFBa0I7OzRGQVFiLHVCQUF1QjtrQkFwQm5DLFNBQVM7K0JBQ0ksa0JBQWtCLFdBQ25CO3dCQUNMLGtCQUFrQjt3QkFDbEIsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzt3QkFDekMsbUNBQW1DO3dCQUNuQyxtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsVUFBVTtxQkFDYixjQUNXLElBQUksbUJBR0MsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENvbXBvbmVudCxcclxuICAgIGNvbXB1dGVkLFxyXG4gICAgRGVzdHJveVJlZixcclxuICAgIGVmZmVjdCxcclxuICAgIGZvcndhcmRSZWYsXHJcbiAgICBpbmplY3QsXHJcbiAgICBpbnB1dCxcclxuICAgIG91dHB1dCxcclxuICAgIHNpZ25hbFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB7IE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEN1aUZyYW1lQXBpU2VydmljZSwgRnJhZ21lbnRUeXBlLCBSZXNvdXJjZUZyYWdtZW50IH0gZnJvbSAnQGN1YnktdWkvYXBpJztcclxuaW1wb3J0IHsgQ3VpSWRTZXJ2aWNlLCB0eXBlIEN1aU51bGxhYmxlIH0gZnJvbSAnQGN1YnktdWkvY2RrJztcclxuaW1wb3J0IHsgVHJhbnNsb2NvRGlyZWN0aXZlLCBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQGpzdmVyc2UvdHJhbnNsb2NvJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIHBhaXJ3aXNlLCBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7XHJcbiAgICBDdWlBY2NvcmRpb25Nb2R1bGUsXHJcbiAgICBDdWlBbGVydFNlcnZpY2UsXHJcbiAgICBDdWlCdXR0b25Nb2R1bGUsXHJcbiAgICBDdWlGb3JtRmllbGRNb2R1bGUsXHJcbiAgICBDdWlIaW50TW9kdWxlLFxyXG4gICAgQ3VpSW5wdXRNb2R1bGUsXHJcbiAgICBDdWlMYWJlbE1vZHVsZVxyXG59IGZyb20gJy4uLy4uL2NvbXBvbmVudHMnO1xyXG5pbXBvcnQgeyBDdWlUb29sdGlwIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XHJcbmltcG9ydCB7IEN1aUVkaXRvckJsb2NrQ29tcG9uZW50LCBDdWlFZGl0b3JDb25maWcgfSBmcm9tICcuLi8uLi9lZGl0b3InO1xyXG5pbXBvcnQgeyBjdWlDcmVhdGVEZWZhdWx0VmFsaWRhdG9ycyB9IGZyb20gJy4uLy4uL3V0aWxzJztcclxuaW1wb3J0IHsgQ3VpR2VuZXJhbENvbnRyb2xFcnJvckhpbnRDb21wb25lbnQgfSBmcm9tICcuLi9nZW5lcmFsLWNvbnRyb2wtZXJyb3ItaGludCc7XHJcbmltcG9ydCB7IEN1aVV0aWxpdHlGb3JtR3JvdXAsIEN1aVV0aWxpdHlGb3JtVmFsdWVzIH0gZnJvbSAnLi91dGlsaXR5LWluZm8ub3B0aW9ucyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY3VpLXV0aWxpdHktaW5mbycsXHJcbiAgICBpbXBvcnRzOiBbXHJcbiAgICAgICAgQ3VpQWNjb3JkaW9uTW9kdWxlLFxyXG4gICAgICAgIEN1aUJ1dHRvbk1vZHVsZSxcclxuICAgICAgICBDdWlGb3JtRmllbGRNb2R1bGUsXHJcbiAgICAgICAgQ3VpSGludE1vZHVsZSxcclxuICAgICAgICBDdWlJbnB1dE1vZHVsZSxcclxuICAgICAgICBDdWlMYWJlbE1vZHVsZSxcclxuICAgICAgICBmb3J3YXJkUmVmKCgpID0+IEN1aUVkaXRvckJsb2NrQ29tcG9uZW50KSxcclxuICAgICAgICBDdWlHZW5lcmFsQ29udHJvbEVycm9ySGludENvbXBvbmVudCxcclxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgICAgIFRyYW5zbG9jb0RpcmVjdGl2ZSxcclxuICAgICAgICBDdWlUb29sdGlwXHJcbiAgICBdLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi91dGlsaXR5LWluZm8uY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmw6ICcuL3V0aWxpdHktaW5mby5jb21wb25lbnQuc2NzcycsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3VpVXRpbGl0eUluZm9Db21wb25lbnQge1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95ID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlciA9IGluamVjdChOb25OdWxsYWJsZUZvcm1CdWlsZGVyKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsb2NvU2VydmljZSA9IGluamVjdChUcmFuc2xvY29TZXJ2aWNlKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZnJhbWVBcGlTZXJ2aWNlID0gaW5qZWN0KEN1aUZyYW1lQXBpU2VydmljZSk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGN1aUFsZXJ0U2VydmljZSA9IGluamVjdChDdWlBbGVydFNlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjdWlJZFNlcnZpY2UgPSBpbmplY3QoQ3VpSWRTZXJ2aWNlKTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgQ09OVFJPTF9ERUxBWSA9IDUwMDtcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBNQVhfRklMRV9TSVpFID0gMjA5NzE1MjA7XHJcblxyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRpdGxlSWQgPSB0aGlzLmN1aUlkU2VydmljZS5nZW5lcmF0ZSgpO1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlc2NyaXB0aW9uSWQgPSB0aGlzLmN1aUlkU2VydmljZS5nZW5lcmF0ZSgpO1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwPEN1aVV0aWxpdHlGb3JtR3JvdXA+KHtcclxuICAgICAgICB0aXRsZTogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKCcnLCBjdWlDcmVhdGVEZWZhdWx0VmFsaWRhdG9ycyh7IGFzeW5jRGVsYXk6IHRoaXMuQ09OVFJPTF9ERUxBWSB9KSksXHJcbiAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbCgnJywgY3VpQ3JlYXRlRGVmYXVsdFZhbGlkYXRvcnMoeyBhc3luY0RlbGF5OiB0aGlzLkNPTlRST0xfREVMQVkgfSkpXHJcbiAgICB9KTtcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBpc0Rlc2NyaXB0aW9uTW9kYWxPcGVuID0gc2lnbmFsKGZhbHNlKTtcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBpc0Rlc2NyaXB0aW9uRW1wdHkgPSBzaWduYWwoZmFsc2UpO1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGVkaXRvcklkID0gc2lnbmFsPEN1aU51bGxhYmxlPHN0cmluZz4+KG51bGwpO1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRodW1ibmFpbCA9IHNpZ25hbDxDdWlOdWxsYWJsZTxSZXNvdXJjZUZyYWdtZW50Pj4obnVsbCk7XHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGh1bWJuYWlsVXJsID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHRodW1ibmFpbCA9IHRoaXMudGh1bWJuYWlsKCk7XHJcblxyXG4gICAgICAgIGlmICh0aHVtYm5haWw/LnJlc291cmNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aHVtYm5haWwucmVzb3VyY2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlUmVzb3VyY2VVcmwoKSArIHRodW1ibmFpbCEuZmlsZUlkITtcclxuICAgIH0pO1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHVwbG9hZEJ1dHRvbk5hbWUgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdGh1bWJuYWlsID0gdGhpcy50aHVtYm5haWwoKTtcclxuXHJcbiAgICAgICAgaWYgKHRodW1ibmFpbD8ubmFtZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnUkVQTEFDRV9GSUxFJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnVVBMT0FEX0ZJTEUnKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHByb3RlY3RlZCBoZWFkaW5nOiBDdWlOdWxsYWJsZTxzdHJpbmc+ID0gbnVsbDtcclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IGNvbnRyb2xzKCk6IEN1aVV0aWxpdHlGb3JtR3JvdXAge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldCBpc1RpdGxlRXJyb3IoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udHJvbHMudGl0bGUuaW52YWxpZCAmJiB0aGlzLmNvbnRyb2xzLnRpdGxlLmRpcnR5O1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXQgaXNEZXNjcmlwdGlvbkVycm9yKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xzLmRlc2NyaXB0aW9uLmludmFsaWQgJiYgdGhpcy5jb250cm9scy5kZXNjcmlwdGlvbi5kaXJ0eTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgdGl0bGUgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGVzY3JpcHRpb24gPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgZnJhbWVySWQgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgYmFzZVJlc291cmNlVXJsID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xyXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbmZpZyA9IGlucHV0LnJlcXVpcmVkPEN1aUVkaXRvckNvbmZpZz4oKTtcclxuXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgZm9ybUNoYW5nZWQgPSBvdXRwdXQ8UGFydGlhbDxDdWlVdGlsaXR5Rm9ybVZhbHVlcz4+KCk7XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgaXNGb3JtVmFsaWRDaGFuZ2VkID0gb3V0cHV0PGJvb2xlYW4+KCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5pbml0VXRpbGl0eUVmZmVjdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBvblNlbGVjdEZpbGUoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xyXG4gICAgICAgIGlucHV0LnR5cGUgPSAnZmlsZSc7XHJcbiAgICAgICAgaW5wdXQuYWNjZXB0ID0gJ2ltYWdlL2pwZywgaW1hZ2UvanBlZywgaW1hZ2UvcG5nLCB2aWRlby9tcDQnO1xyXG5cclxuICAgICAgICBpbnB1dC5vbmNoYW5nZSA9ICgpOiB2b2lkID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZmlsZXMgPSBpbnB1dC5maWxlcztcclxuXHJcbiAgICAgICAgICAgIGlmICghZmlsZXM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmdldEZpbGUoZmlsZXMpO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGlucHV0LmNsaWNrKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG9uRWRpdG9yRW1wdHkoaXNFbXB0eTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNEZXNjcmlwdGlvbkVtcHR5LnNldChpc0VtcHR5KTtcclxuICAgICAgICB0aGlzLmlzRm9ybVZhbGlkQ2hhbmdlZC5lbWl0KHRoaXMuY2hlY2tGb3JtVmFsaWRhdGlvbigpKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25SZW1vdmVUaHVtYm5haWwoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZnJhbWVJZCA9IHRoaXMuZnJhbWVySWQoKTtcclxuICAgICAgICBjb25zdCBmcmFnbWVudElkID0gdGhpcy50aHVtYm5haWwoKT8uaWQ7XHJcblxyXG4gICAgICAgIGlmICghZnJhbWVJZCB8fCAhZnJhZ21lbnRJZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmZyYW1lQXBpU2VydmljZS5kZWxldGVSZXNvdXJjZShmcmFtZUlkLCBmcmFnbWVudElkKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnRodW1ibmFpbC51cGRhdGUoKHByZXYpID0+ICh7IC4uLnByZXYhLCBmaWxlSWQ6IG51bGwsIG5hbWU6IG51bGwsIHJlc291cmNlOiBudWxsIH0pKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25Ub2dnbGVEZXNjcmlwdGlvbk1vZGFsKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNEZXNjcmlwdGlvbk1vZGFsT3Blbi51cGRhdGUoKHByZXYpID0+ICFwcmV2KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGluaXRVdGlsaXR5RWZmZWN0KCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGVmZmVjdFJlZiA9IGVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gdGhpcy50aXRsZSgpO1xyXG5cclxuICAgICAgICAgICAgaWYgKCF0aXRsZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmluaXRGb3JtU3Vic2NyaXB0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLmluaXRGcmFtZUZyYWdtZW50cygpO1xyXG4gICAgICAgICAgICBlZmZlY3RSZWYuZGVzdHJveSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW5pdEZvcm1TdWJzY3JpcHRpb25zKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZm9ybS5zZXRWYWx1ZSh7IHRpdGxlOiB0aGlzLnRpdGxlKCksIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uKCkgfSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmZvcm0uc3RhdHVzQ2hhbmdlc1xyXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95KSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmlzRm9ybVZhbGlkQ2hhbmdlZC5lbWl0KHRoaXMuY2hlY2tGb3JtVmFsaWRhdGlvbigpKSk7XHJcblxyXG4gICAgICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXNcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95KSxcclxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aCh0aGlzLmZvcm0udmFsdWUpLFxyXG4gICAgICAgICAgICAgICAgcGFpcndpc2UoKSxcclxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSh0aGlzLkNPTlRST0xfREVMQVkpLFxyXG4gICAgICAgICAgICAgICAgbWFwKChbcHJldiwgY3VycmVudF0pID0+IHRoaXMuY29tcGFyZUZvcm1WYWx1ZXMoW3ByZXYsIGN1cnJlbnRdKSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNoYW5nZWQuZW1pdCh2YWx1ZSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW5pdEZyYW1lRnJhZ21lbnRzKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGZyYW1lSWQgPSB0aGlzLmZyYW1lcklkKCk7XHJcblxyXG4gICAgICAgIGlmICghZnJhbWVJZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmZyYW1lQXBpU2VydmljZS5nZXRGcmFtZShmcmFtZUlkKS5zdWJzY3JpYmUoKGZyYW1lKSA9PiB7XHJcbiAgICAgICAgICAgIGZyYW1lLmZyYWdtZW50cy5mb3JFYWNoKChmcmFnbWVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGZyYWdtZW50LnR5cGUgPT09IEZyYWdtZW50VHlwZS5qVGV4dCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWRpdG9ySWQuc2V0KGZyYWdtZW50Py5pZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGZyYWdtZW50LnR5cGUgPT09IEZyYWdtZW50VHlwZS5yZXNvdXJjZUZpbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlc291cmNlRmlsZShmcmFnbWVudCBhcyBSZXNvdXJjZUZyYWdtZW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjb21wYXJlRm9ybVZhbHVlcyhbcHJldkdyb3VwLCBjdXJyZW50R3J1b3BdOiBQYXJ0aWFsPEN1aVV0aWxpdHlGb3JtVmFsdWVzPltdKTogUGFydGlhbDxDdWlVdGlsaXR5Rm9ybVZhbHVlcz4ge1xyXG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhjdXJyZW50R3J1b3ApIGFzIChrZXlvZiBDdWlVdGlsaXR5Rm9ybUdyb3VwKVtdO1xyXG4gICAgICAgIGNvbnN0IGNoYW5nZWRGaWVsZHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XHJcblxyXG4gICAgICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByZXYgPSBwcmV2R3JvdXBba2V5XTtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudCA9IGN1cnJlbnRHcnVvcFtrZXldO1xyXG5cclxuICAgICAgICAgICAgaWYgKHByZXYgPT09IGN1cnJlbnQgfHwgdGhpcy5jb250cm9sc1trZXldLmludmFsaWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY2hhbmdlZEZpZWxkc1trZXldID0gY3VycmVudDtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGNoYW5nZWRGaWVsZHM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXRSZXNvdXJjZUZpbGUocmVzb3VyY2U6IFJlc291cmNlRnJhZ21lbnQpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLmJhc2VSZXNvdXJjZVVybCgpICsgcmVzb3VyY2UuZmlsZUlkITtcclxuXHJcbiAgICAgICAgdGhpcy50aHVtYm5haWwuc2V0KHJlc291cmNlKTtcclxuXHJcbiAgICAgICAgaWYgKCF1cmwgfHwgcmVzb3VyY2U/Lm5hbWU/LnNwbGl0KCcuJykucG9wKCkgIT09ICdtcDQnKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZ2V0Q2FwdHVyZUZyb21WaWRlbyh1cmwpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0RmlsZShmaWxlczogRmlsZUxpc3QpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBmaWxlID0gZmlsZXMuaXRlbSgwKTtcclxuXHJcbiAgICAgICAgaWYgKCFmaWxlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChmaWxlLnNpemUgPiB0aGlzLk1BWF9GSUxFX1NJWkUpIHtcclxuICAgICAgICAgICAgdGhpcy5jdWlBbGVydFNlcnZpY2VcclxuICAgICAgICAgICAgICAgIC5vcGVuKHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ0lOVkFMSURfRklMRV9TSVpFJyksIHtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0dXM6ICdlcnJvcidcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBpc1ZpZGVvID0gZmlsZS5uYW1lLnNwbGl0KCcuJykuYXQoLTEpID09PSAnbXA0JztcclxuICAgICAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpO1xyXG5cclxuICAgICAgICBpZiAoaXNWaWRlbykge1xyXG4gICAgICAgICAgICB0aGlzLmdldENhcHR1cmVGcm9tVmlkZW8odXJsLCBmaWxlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRodW1ibmFpbC51cGRhdGUoKHByZXYpID0+ICh7IC4uLnByZXYhLCBuYW1lOiBmaWxlLm5hbWUsIHJlc291cmNlOiB1cmwgfSkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy51cGxvYWRGaWxlKGZpbGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBsb2FkRmlsZShmaWxlOiBGaWxlKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZnJhbWVJZCA9IHRoaXMuZnJhbWVySWQoKTtcclxuICAgICAgICBjb25zdCBmcmFnbWVudElkID0gdGhpcy50aHVtYm5haWwoKT8uaWQ7XHJcblxyXG4gICAgICAgIGlmICghZnJhbWVJZCB8fCAhZnJhZ21lbnRJZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgncmVzb3VyY2UnLCBmaWxlKTtcclxuXHJcbiAgICAgICAgdGhpcy5mcmFtZUFwaVNlcnZpY2UudXBsb2FkUmVzb3VyY2UoZm9ybURhdGEsIGZyYW1lSWQsIGZyYWdtZW50SWQpLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0Q2FwdHVyZUZyb21WaWRlbyh1cmw6IHN0cmluZywgZmlsZT86IEZpbGUpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKSBhcyBIVE1MQ2FudmFzRWxlbWVudDtcclxuICAgICAgICBjb25zdCB2aWRlbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ZpZGVvJykgYXMgSFRNTFZpZGVvRWxlbWVudDtcclxuXHJcbiAgICAgICAgdmlkZW8uc3JjID0gdXJsO1xyXG4gICAgICAgIHZpZGVvLmN1cnJlbnRUaW1lID0gMTtcclxuICAgICAgICBjYW52YXMud2lkdGggPSAxODQ7XHJcbiAgICAgICAgY2FudmFzLmhlaWdodCA9IDEyMDtcclxuXHJcbiAgICAgICAgdmlkZW8ub25sb2FkZWRkYXRhID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcblxyXG4gICAgICAgICAgICBpZiAoIWNvbnRleHQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UodmlkZW8sIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XHJcblxyXG4gICAgICAgICAgICBjYW52YXMudG9CbG9iKChibG9iKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWJsb2IpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgdmlkZW9DYXB0dXJlVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgICAgICAgICAgICAgIHRoaXMudGh1bWJuYWlsLnVwZGF0ZSgocHJldikgPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5wcmV2ISxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAoZmlsZT8ubmFtZSB8fCBwcmV2Py5uYW1lKSEsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2U6IHZpZGVvQ2FwdHVyZVVybFxyXG4gICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB2aWRlby5sb2FkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjaGVja0Zvcm1WYWxpZGF0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhdGhpcy5pc0Rlc2NyaXB0aW9uRW1wdHkoKSAmJiAhdGhpcy5mb3JtLmludmFsaWQ7XHJcbiAgICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqdHJhbnNsb2NvPVwibGV0IHRcIj5cclxuICA8c2VjdGlvbiBjbGFzcz1cImNvbnRlbnRcIj5cclxuICAgIDxjdWktZm9ybS1maWVsZD5cclxuICAgICAgICA8bGFiZWwgY3VpTGFiZWwgW2lzUmVxdWlyZWRdPVwidHJ1ZVwiIFtmb3JdPVwidGl0bGVJZFwiPlxyXG4gICAgICAgICAgICB7eyB0KCdUSVRMRScpIH19XHJcbiAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8Y3VpLWlucHV0LXRleHRcclxuICAgICAgICAgICAgW2N1aVRleHRGaWVsZElkXT1cInRpdGxlSWRcIlxyXG4gICAgICAgICAgICBbY3VpVGV4dEZpZWxkUGxhY2Vob2xkZXJdPVwidCgnQUREX0FfVElUTEUnKVwiXHJcbiAgICAgICAgICAgIFtjdWlUZXh0RmllbGRJc0Vycm9yXT1cImlzVGl0bGVFcnJvclwiXHJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtLmNvbnRyb2xzLnRpdGxlXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIEBpZiAoaXNUaXRsZUVycm9yKSB7XHJcbiAgICAgICAgICAgIDxjdWktZ2VuZXJhbC1jb250cm9sLWVycm9yLWhpbnQgW2NvbnRyb2xdPVwiZm9ybS5jb250cm9scy50aXRsZVwiIFtpc1Zpc2libGVdPVwidHJ1ZVwiIC8+XHJcbiAgICAgICAgfVxyXG4gICAgPC9jdWktZm9ybS1maWVsZD5cclxuICAgIDxjdWktZm9ybS1maWVsZD5cclxuICAgICAgICA8bGFiZWwgY3VpTGFiZWwgW2lzUmVxdWlyZWRdPVwidHJ1ZVwiIFtmb3JdPVwiZGVzY3JpcHRpb25JZFwiPlxyXG4gICAgICAgICAgICB7eyB0KCdTSE9SVF9ERVNDUklQVElPTicpIH19XHJcbiAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgPGN1aS1pbnB1dC10ZXh0XHJcbiAgICAgICAgICAgIFtjdWlUZXh0RmllbGRJZF09XCJkZXNjcmlwdGlvbklkXCJcclxuICAgICAgICAgICAgY3VpVGV4dEZpZWxkUGxhY2Vob2xkZXI9XCJ7e3QoJ1NIT1JUX0RFU0NSSVBUSU9OJyl9fS4uLlwiXHJcbiAgICAgICAgICAgIFtjdWlUZXh0RmllbGRJc0Vycm9yXT1cImlzRGVzY3JpcHRpb25FcnJvclwiXHJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtLmNvbnRyb2xzLmRlc2NyaXB0aW9uXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIEBpZiAoaXNEZXNjcmlwdGlvbkVycm9yKSB7XHJcbiAgICAgICAgICAgIDxjdWktZ2VuZXJhbC1jb250cm9sLWVycm9yLWhpbnQgW2NvbnRyb2xdPVwiZm9ybS5jb250cm9scy5kZXNjcmlwdGlvblwiIFtpc1Zpc2libGVdPVwidHJ1ZVwiIC8+XHJcbiAgICAgICAgfVxyXG4gICAgPC9jdWktZm9ybS1maWVsZD5cclxuICAgIDxzZWN0aW9uIGNsYXNzPVwiZmlsZVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+e3sgdCgnVEhVTUJOQUlMJykgfX08L3NwYW4+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50X191cGxvYWRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudF9fdXBsb2FkLWZpbGVcIj5cclxuICAgICAgICAgIEBpZiAodGh1bWJuYWlsKCk/Lm5hbWU7IGFzIGZpbGVJZCkge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1hZ2VfX25hbWVcIj57eyB0aHVtYm5haWwoKT8ubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPCEtLSBUT0RPOiBuZ1NyYyAtLT5cclxuICAgICAgICAgICAgPGltZyBjbGFzcz1cImltYWdlX192aWV3XCIgW3NyY109XCJ0aHVtYm5haWxVcmwoKVwiIGhlaWdodD1cIjEyMFwiIHdpZHRoPVwiMTg0XCIgYWx0PVwiVGh1bWJuYWlsXCIgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRfX2luZm9cIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGN1aUJ1dHRvbiBhcHBlYXJhbmNlPVwib3V0bGluZWQtZ3JheVwiIHNpemU9XCJ4eHNcIiBpY29uPVwiY3VpSWNvblVwbG9hZFwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3RGaWxlKClcIj5cclxuICAgICAgICAgICAgICAgIHt7IHVwbG9hZEJ1dHRvbk5hbWUoKSB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICBAaWYgKHRodW1ibmFpbCgpPy5uYW1lKSB7XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY29udGVudF9fcmVtb3ZlLWJ1dHRvblwiIGN1aUJ1dHRvbiBhcHBlYXJhbmNlPVwibGlua1wiIHNpemU9XCJzbVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblJlbW92ZVRodW1ibmFpbCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgdCgnUkVNT1ZFJykgfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29udGVudF9fYWNjZXB0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyB0KCdBQ0NFUFRFRCcpIH19OiBKUEcsIEpQRUcsIFBORywgTVA0IHt7IHQoJ1VQX1RPJykgfX0gMjBNQlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9zZWN0aW9uPlxyXG4gICAgQGlmIChlZGl0b3JJZCgpOyBhcyBlZGl0b3JJZCkge1xyXG4gICAgICAgIDxjdWktZWRpdG9yLWJsb2NrXHJcbiAgICAgICAgICAgIFt0aXRsZV09XCJmb3JtLmNvbnRyb2xzLnRpdGxlLnZhbHVlIHx8IHRpdGxlKClcIlxyXG4gICAgICAgICAgICBbY29uZmlnXT1cImNvbmZpZygpXCJcclxuICAgICAgICAgICAgW2VkaXRvcklkXT1cImVkaXRvcklkXCJcclxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRvclwiXHJcbiAgICAgICAgICAgIChlZGl0b3JFbXB0eSk9XCJvbkVkaXRvckVtcHR5KCRldmVudClcIlxyXG4gICAgICAgID48L2N1aS1lZGl0b3ItYmxvY2s+XHJcbiAgICB9XHJcbiAgPC9zZWN0aW9uPlxyXG48L25nLWNvbnRhaW5lcj5cclxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eS1pbmZvLm9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3dpZGdldHMvdXRpbGl0eS1pbmZvL3V0aWxpdHktaW5mby5vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEN1aVV0aWxpdHlGb3JtR3JvdXAge1xuICAgIHJlYWRvbmx5IHRpdGxlOiBGb3JtQ29udHJvbDxzdHJpbmc+O1xuICAgIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBGb3JtQ29udHJvbDxzdHJpbmc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN1aVV0aWxpdHlGb3JtVmFsdWVzIHtcbiAgICByZWFkb25seSB0aXRsZTogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBzdHJpbmc7XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export { CuiUtilityInfoComponent } from './utility-info.component';
2
- export { CuiUtilityFormValues, CuiUtilityFormGroup } from './utility-info.options';