@acorex/components 6.5.28 → 6.5.30

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 (632) hide show
  1. package/README.md +3 -3
  2. package/acorex-components.d.ts +5 -0
  3. package/esm2020/acorex-components.mjs +5 -0
  4. package/esm2020/lib/accordion/accordion.component.mjs +44 -0
  5. package/esm2020/lib/accordion/accordion.module.mjs +20 -0
  6. package/esm2020/lib/base/base-page.class.mjs +94 -0
  7. package/esm2020/lib/base/components.class.mjs +17 -0
  8. package/esm2020/lib/base/element.class.mjs +294 -0
  9. package/esm2020/lib/base/events.class.mjs +11 -0
  10. package/esm2020/lib/button/button.component.mjs +71 -0
  11. package/esm2020/lib/button/button.module.mjs +21 -0
  12. package/esm2020/lib/calendar/calendar-box/calendar-box.component.mjs +413 -0
  13. package/esm2020/lib/calendar/calendar-box/calendar-box.module.mjs +22 -0
  14. package/esm2020/lib/calendar/scheduler/scheduler-views.property.mjs +54 -0
  15. package/esm2020/lib/calendar/scheduler/scheduler.class.mjs +18 -0
  16. package/esm2020/lib/calendar/scheduler/scheduler.component.mjs +213 -0
  17. package/esm2020/lib/calendar/scheduler/scheduler.module.mjs +68 -0
  18. package/esm2020/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.mjs +132 -0
  19. package/esm2020/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.mjs +37 -0
  20. package/esm2020/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.mjs +47 -0
  21. package/esm2020/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.mjs +95 -0
  22. package/esm2020/lib/calendar/scheduler/views/month/scheduler-month-view.component.mjs +204 -0
  23. package/esm2020/lib/calendar/scheduler/views/scheduler-view.component.mjs +99 -0
  24. package/esm2020/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.mjs +77 -0
  25. package/esm2020/lib/checkbox/checkbox.component.mjs +98 -0
  26. package/esm2020/lib/checkbox/checkbox.module.mjs +20 -0
  27. package/esm2020/lib/color-picker/color-box/color-box.component.mjs +422 -0
  28. package/esm2020/lib/color-picker/color-picker.component.mjs +82 -0
  29. package/esm2020/lib/color-picker/color-picker.module.mjs +24 -0
  30. package/esm2020/lib/context-menu/context-menu.component.mjs +65 -0
  31. package/esm2020/lib/context-menu/context-menu.directive.mjs +135 -0
  32. package/esm2020/lib/context-menu/context-menu.module.mjs +20 -0
  33. package/esm2020/lib/data-filter/columns/filter-column-date.component.mjs +138 -0
  34. package/esm2020/lib/data-filter/columns/filter-column-number.component.mjs +117 -0
  35. package/esm2020/lib/data-filter/columns/filter-column-selection.component.mjs +74 -0
  36. package/esm2020/lib/data-filter/columns/filter-column-string.component.mjs +117 -0
  37. package/esm2020/lib/data-filter/filter-panel/filter-panel.component.mjs +258 -0
  38. package/esm2020/lib/data-filter/filter.class.mjs +44 -0
  39. package/esm2020/lib/data-filter/filter.module.mjs +90 -0
  40. package/esm2020/lib/data-filter/toolbar/filter-toolbar.component.mjs +166 -0
  41. package/esm2020/lib/data-list/core/data-list.component.mjs +40 -0
  42. package/esm2020/lib/data-list/list/list.component.mjs +124 -0
  43. package/esm2020/lib/data-list/list/list.module.mjs +22 -0
  44. package/esm2020/lib/data-list/list/toolbar-list-view.component.mjs +85 -0
  45. package/esm2020/lib/data-source/datasource.component.mjs +47 -0
  46. package/esm2020/lib/data-source/datasource.module.mjs +18 -0
  47. package/esm2020/lib/data-source/read-param.mjs +5 -0
  48. package/esm2020/lib/date-picker/date-picker.component.mjs +702 -0
  49. package/esm2020/lib/date-picker/date-picker.module.mjs +25 -0
  50. package/esm2020/lib/dialog/dialog.component.mjs +24 -0
  51. package/esm2020/lib/dialog/dialog.module.mjs +21 -0
  52. package/esm2020/lib/dialog/dialog.service.mjs +150 -0
  53. package/esm2020/lib/drawer/content.component.mjs +18 -0
  54. package/esm2020/lib/drawer/drawer-container.component.mjs +36 -0
  55. package/esm2020/lib/drawer/drawer.component.mjs +142 -0
  56. package/esm2020/lib/drawer/drawer.module.mjs +23 -0
  57. package/esm2020/lib/dropdown/dropdown.component.mjs +176 -0
  58. package/esm2020/lib/dropdown/dropdown.module.mjs +26 -0
  59. package/esm2020/lib/fieldset/fieldset.component.mjs +59 -0
  60. package/esm2020/lib/fieldset/fieldset.module.mjs +19 -0
  61. package/esm2020/lib/form-group/form-group.component.mjs +34 -0
  62. package/esm2020/lib/form-group/form-group.module.mjs +21 -0
  63. package/esm2020/lib/label/label.component.mjs +19 -0
  64. package/esm2020/lib/label/label.module.mjs +21 -0
  65. package/esm2020/lib/loading/loading-indicator.component.mjs +17 -0
  66. package/esm2020/lib/loading/loading-panel.component.mjs +44 -0
  67. package/esm2020/lib/loading/loading.module.mjs +21 -0
  68. package/esm2020/lib/loading/loading.service.mjs +45 -0
  69. package/esm2020/lib/menu/menu-item.component.mjs +47 -0
  70. package/esm2020/lib/menu/menu.component.mjs +86 -0
  71. package/esm2020/lib/menu/menu.module.mjs +22 -0
  72. package/esm2020/lib/menu/menu2.component.mjs +96 -0
  73. package/esm2020/lib/number-box/number-box.component.mjs +622 -0
  74. package/esm2020/lib/number-box/number-box.module.mjs +21 -0
  75. package/esm2020/lib/page/content.component.mjs +32 -0
  76. package/esm2020/lib/page/footer.component.mjs +19 -0
  77. package/esm2020/lib/page/page.component.mjs +53 -0
  78. package/esm2020/lib/page/page.module.mjs +22 -0
  79. package/esm2020/lib/panel-box/panel-box.component.mjs +88 -0
  80. package/esm2020/lib/panel-box/panel-box.module.mjs +19 -0
  81. package/esm2020/lib/password-box/password-box.component.mjs +31 -0
  82. package/esm2020/lib/password-box/password-box.module.mjs +23 -0
  83. package/esm2020/lib/popover/custom-cdk-overlay.service.mjs +48 -0
  84. package/esm2020/lib/popover/overlay.service.mjs +90 -0
  85. package/esm2020/lib/popover/popover.component.mjs +127 -0
  86. package/esm2020/lib/popover/popover.module.mjs +19 -0
  87. package/esm2020/lib/popup/popup.component.mjs +147 -0
  88. package/esm2020/lib/popup/popup.module.mjs +25 -0
  89. package/esm2020/lib/popup/popup.service.mjs +93 -0
  90. package/esm2020/lib/progress-bar/progress-bar.component.mjs +19 -0
  91. package/esm2020/lib/progress-bar/progress-bar.module.mjs +19 -0
  92. package/esm2020/lib/property-editor/editors/check-editor/check-editor.mjs +61 -0
  93. package/esm2020/lib/property-editor/editors/check-editor/check.module.mjs +22 -0
  94. package/esm2020/lib/property-editor/editors/color-editor/color.editor.mjs +38 -0
  95. package/esm2020/lib/property-editor/editors/color-editor/color.module.mjs +24 -0
  96. package/esm2020/lib/property-editor/editors/column-editor/column.editor.mjs +115 -0
  97. package/esm2020/lib/property-editor/editors/column-editor/column.module.mjs +32 -0
  98. package/esm2020/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.mjs +211 -0
  99. package/esm2020/lib/property-editor/editors/conditional-color-editor/conditional-color.module.mjs +78 -0
  100. package/esm2020/lib/property-editor/editors/date-editor/date.editor.mjs +51 -0
  101. package/esm2020/lib/property-editor/editors/date-editor/date.module.mjs +24 -0
  102. package/esm2020/lib/property-editor/editors/number-editor/number.editor.mjs +63 -0
  103. package/esm2020/lib/property-editor/editors/number-editor/number.module.mjs +24 -0
  104. package/esm2020/lib/property-editor/editors/range-editor/range.editor.mjs +140 -0
  105. package/esm2020/lib/property-editor/editors/range-editor/range.module.mjs +61 -0
  106. package/esm2020/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.mjs +72 -0
  107. package/esm2020/lib/property-editor/editors/selectbox-editor/selectbox.editor.mjs +71 -0
  108. package/esm2020/lib/property-editor/editors/selectbox-editor/selectbox.module.mjs +25 -0
  109. package/esm2020/lib/property-editor/editors/selection-editor/selection-editor.mjs +69 -0
  110. package/esm2020/lib/property-editor/editors/selection-editor/selection.module.mjs +22 -0
  111. package/esm2020/lib/property-editor/editors/switch-editor/number.editor.mjs +29 -0
  112. package/esm2020/lib/property-editor/editors/switch-editor/number.module.mjs +25 -0
  113. package/esm2020/lib/property-editor/editors/text-editor/text.editor.mjs +32 -0
  114. package/esm2020/lib/property-editor/editors/text-editor/text.module.mjs +24 -0
  115. package/esm2020/lib/property-editor/editors/textarea-editor/textarea.editor.mjs +32 -0
  116. package/esm2020/lib/property-editor/editors/textarea-editor/textarea.module.mjs +24 -0
  117. package/esm2020/lib/property-editor/editors/time-editor/time.editor.mjs +43 -0
  118. package/esm2020/lib/property-editor/editors/time-editor/time.module.mjs +24 -0
  119. package/esm2020/lib/property-editor/property-editor-renderer.directive.mjs +154 -0
  120. package/esm2020/lib/property-editor/property-editor.class.mjs +101 -0
  121. package/esm2020/lib/property-editor/property-editor.module.mjs +196 -0
  122. package/esm2020/lib/query-builder/query-builder-group.component.mjs +124 -0
  123. package/esm2020/lib/query-builder/query-builder-popup/query-builder-popup.component.mjs +171 -0
  124. package/esm2020/lib/query-builder/query-builder-rule.component.mjs +395 -0
  125. package/esm2020/lib/query-builder/query-builder.class.mjs +20 -0
  126. package/esm2020/lib/query-builder/query-builder.component.mjs +82 -0
  127. package/esm2020/lib/query-builder/query-builder.module.mjs +62 -0
  128. package/esm2020/lib/query-builder/query-builder.service.mjs +197 -0
  129. package/esm2020/lib/search-bar/search-bar.component.mjs +283 -0
  130. package/esm2020/lib/search-bar/search-bar.module.mjs +63 -0
  131. package/esm2020/lib/searchbox/searchbox.component.mjs +79 -0
  132. package/esm2020/lib/searchbox/searchbox.module.mjs +24 -0
  133. package/esm2020/lib/selectbox/selectbox.component.mjs +961 -0
  134. package/esm2020/lib/selectbox/selectbox.module.mjs +44 -0
  135. package/esm2020/lib/selectbox/selectbox2.component.mjs +574 -0
  136. package/esm2020/lib/selection-list/selection-list.component.mjs +108 -0
  137. package/esm2020/lib/selection-list/selection-list.module.mjs +21 -0
  138. package/esm2020/lib/switch/switch.component.mjs +51 -0
  139. package/esm2020/lib/switch/switch.module.mjs +20 -0
  140. package/esm2020/lib/tab-page/tab-page-Renderer.component.mjs +71 -0
  141. package/esm2020/lib/tab-page/tab-page-host.component.mjs +116 -0
  142. package/esm2020/lib/tab-page/tab-page.module.mjs +21 -0
  143. package/esm2020/lib/tab-page/tab-page.service.mjs +156 -0
  144. package/esm2020/lib/tab-strip/tab-strip.component.mjs +36 -0
  145. package/esm2020/lib/tab-strip/tab-strip.module.mjs +19 -0
  146. package/esm2020/lib/tab-view/dynamic-tabs.directive.mjs +24 -0
  147. package/esm2020/lib/tab-view/tab-view.component.mjs +105 -0
  148. package/esm2020/lib/tab-view/tab-view.module.mjs +21 -0
  149. package/esm2020/lib/tab-view/tab.component.mjs +30 -0
  150. package/esm2020/lib/textarea/textarea.component.mjs +26 -0
  151. package/esm2020/lib/textarea/textarea.module.mjs +21 -0
  152. package/esm2020/lib/textbox/textbox.component.mjs +39 -0
  153. package/esm2020/lib/textbox/textbox.module.mjs +24 -0
  154. package/esm2020/lib/time-picker/time-picker.component.mjs +943 -0
  155. package/esm2020/lib/time-picker/time-picker.module.mjs +22 -0
  156. package/esm2020/lib/toast/toast-message/toast-message.component.mjs +74 -0
  157. package/esm2020/lib/toast/toast-wrapper/toast-wrapper.component.mjs +13 -0
  158. package/esm2020/lib/toast/toast.module.mjs +21 -0
  159. package/esm2020/lib/toast/toast.service.mjs +44 -0
  160. package/esm2020/lib/toolbar/group-button/toolbar-group-button.component.mjs +78 -0
  161. package/esm2020/lib/toolbar/menu/toolbar-menu.component.mjs +57 -0
  162. package/esm2020/lib/toolbar/search/toolbar-search.component.mjs +54 -0
  163. package/esm2020/lib/toolbar/title/toolbar-title.component.mjs +47 -0
  164. package/esm2020/lib/toolbar/toolbar-item.mjs +6 -0
  165. package/esm2020/lib/toolbar/toolbar.component.mjs +13 -0
  166. package/esm2020/lib/toolbar/toolbar.module.mjs +40 -0
  167. package/esm2020/lib/tooltip/tooltip.directive.mjs +100 -0
  168. package/esm2020/lib/tooltip/tooltip.module.mjs +19 -0
  169. package/esm2020/lib/tree-side-menu/tree-side-menu.component.mjs +646 -0
  170. package/esm2020/lib/tree-side-menu/tree-side-menu.module.mjs +35 -0
  171. package/esm2020/lib/tree-view/tree-view.component.mjs +775 -0
  172. package/esm2020/lib/tree-view/tree-view.module.mjs +22 -0
  173. package/esm2020/lib/upload-file/upload-file.component.mjs +208 -0
  174. package/esm2020/lib/upload-file/upload-file.events.mjs +2 -0
  175. package/esm2020/lib/upload-file/upload-file.module.mjs +24 -0
  176. package/esm2020/lib/validation/validation-form.component.mjs +65 -0
  177. package/esm2020/lib/validation/validation-rule.widget.mjs +111 -0
  178. package/esm2020/lib/validation/validation.class.mjs +2 -0
  179. package/esm2020/lib/validation/validation.component.mjs +89 -0
  180. package/esm2020/lib/validation/validation.module.mjs +34 -0
  181. package/esm2020/public-api.mjs +158 -0
  182. package/fesm2015/acorex-components.mjs +15988 -0
  183. package/fesm2015/acorex-components.mjs.map +1 -0
  184. package/fesm2020/acorex-components.mjs +15923 -0
  185. package/fesm2020/acorex-components.mjs.map +1 -0
  186. package/lib/accordion/accordion.component.d.ts +13 -0
  187. package/lib/accordion/accordion.module.d.ts +9 -0
  188. package/lib/base/base-page.class.d.ts +46 -0
  189. package/lib/base/components.class.d.ts +10 -0
  190. package/lib/base/element.class.d.ts +106 -0
  191. package/lib/base/events.class.d.ts +18 -0
  192. package/lib/button/button.component.d.ts +21 -0
  193. package/lib/button/button.module.d.ts +8 -0
  194. package/lib/calendar/calendar-box/calendar-box.component.d.ts +81 -0
  195. package/lib/calendar/calendar-box/calendar-box.module.d.ts +11 -0
  196. package/lib/calendar/scheduler/scheduler-views.property.d.ts +19 -0
  197. package/{src/lib/calendar/scheduler/scheduler.class.ts → lib/calendar/scheduler/scheduler.class.d.ts} +36 -50
  198. package/lib/calendar/scheduler/scheduler.component.d.ts +39 -0
  199. package/lib/calendar/scheduler/scheduler.module.d.ts +21 -0
  200. package/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.d.ts +25 -0
  201. package/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.d.ts +14 -0
  202. package/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.d.ts +16 -0
  203. package/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.d.ts +26 -0
  204. package/lib/calendar/scheduler/views/month/scheduler-month-view.component.d.ts +37 -0
  205. package/lib/calendar/scheduler/views/scheduler-view.component.d.ts +28 -0
  206. package/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.d.ts +24 -0
  207. package/lib/checkbox/checkbox.component.d.ts +30 -0
  208. package/lib/checkbox/checkbox.module.d.ts +9 -0
  209. package/lib/color-picker/color-box/color-box.component.d.ts +25 -0
  210. package/lib/color-picker/color-picker.component.d.ts +30 -0
  211. package/lib/color-picker/color-picker.module.d.ts +13 -0
  212. package/lib/context-menu/context-menu.component.d.ts +22 -0
  213. package/lib/context-menu/context-menu.directive.d.ts +38 -0
  214. package/lib/context-menu/context-menu.module.d.ts +9 -0
  215. package/lib/data-filter/columns/filter-column-date.component.d.ts +22 -0
  216. package/lib/data-filter/columns/filter-column-number.component.d.ts +15 -0
  217. package/lib/data-filter/columns/filter-column-selection.component.d.ts +18 -0
  218. package/lib/data-filter/columns/filter-column-string.component.d.ts +15 -0
  219. package/lib/data-filter/filter-panel/filter-panel.component.d.ts +45 -0
  220. package/lib/data-filter/filter.class.d.ts +40 -0
  221. package/lib/data-filter/filter.module.d.ts +24 -0
  222. package/lib/data-filter/toolbar/filter-toolbar.component.d.ts +25 -0
  223. package/lib/data-list/core/data-list.component.d.ts +15 -0
  224. package/lib/data-list/list/list.component.d.ts +40 -0
  225. package/lib/data-list/list/list.module.d.ts +11 -0
  226. package/lib/data-list/list/toolbar-list-view.component.d.ts +17 -0
  227. package/lib/data-source/datasource.component.d.ts +16 -0
  228. package/lib/data-source/datasource.module.d.ts +7 -0
  229. package/{src/lib/data-source/read-param.ts → lib/data-source/read-param.d.ts} +40 -50
  230. package/lib/date-picker/date-picker.component.d.ts +81 -0
  231. package/lib/date-picker/date-picker.module.d.ts +14 -0
  232. package/lib/dialog/dialog.component.d.ts +14 -0
  233. package/lib/dialog/dialog.module.d.ts +10 -0
  234. package/lib/dialog/dialog.service.d.ts +36 -0
  235. package/lib/drawer/content.component.d.ts +7 -0
  236. package/lib/drawer/drawer-container.component.d.ts +10 -0
  237. package/lib/drawer/drawer.component.d.ts +34 -0
  238. package/lib/drawer/drawer.module.d.ts +10 -0
  239. package/lib/dropdown/dropdown.component.d.ts +38 -0
  240. package/lib/dropdown/dropdown.module.d.ts +13 -0
  241. package/lib/fieldset/fieldset.component.d.ts +11 -0
  242. package/lib/fieldset/fieldset.module.d.ts +8 -0
  243. package/lib/form-group/form-group.component.d.ts +14 -0
  244. package/lib/form-group/form-group.module.d.ts +8 -0
  245. package/lib/label/label.component.d.ts +9 -0
  246. package/lib/label/label.module.d.ts +8 -0
  247. package/lib/loading/loading-indicator.component.d.ts +9 -0
  248. package/lib/loading/loading-panel.component.d.ts +13 -0
  249. package/lib/loading/loading.module.d.ts +10 -0
  250. package/lib/loading/loading.service.d.ts +13 -0
  251. package/lib/menu/menu-item.component.d.ts +18 -0
  252. package/lib/menu/menu.component.d.ts +35 -0
  253. package/lib/menu/menu.module.d.ts +11 -0
  254. package/lib/menu/menu2.component.d.ts +21 -0
  255. package/lib/number-box/number-box.component.d.ts +52 -0
  256. package/lib/number-box/number-box.module.d.ts +10 -0
  257. package/lib/page/content.component.d.ts +8 -0
  258. package/lib/page/footer.component.d.ts +5 -0
  259. package/lib/page/page.component.d.ts +16 -0
  260. package/lib/page/page.module.d.ts +11 -0
  261. package/lib/panel-box/panel-box.component.d.ts +19 -0
  262. package/lib/panel-box/panel-box.module.d.ts +8 -0
  263. package/lib/password-box/password-box.component.d.ts +12 -0
  264. package/lib/password-box/password-box.module.d.ts +10 -0
  265. package/lib/popover/custom-cdk-overlay.service.d.ts +19 -0
  266. package/lib/popover/overlay.service.d.ts +31 -0
  267. package/lib/popover/popover.component.d.ts +34 -0
  268. package/lib/popover/popover.module.d.ts +8 -0
  269. package/lib/popup/popup.component.d.ts +40 -0
  270. package/lib/popup/popup.module.d.ts +13 -0
  271. package/lib/popup/popup.service.d.ts +22 -0
  272. package/lib/progress-bar/progress-bar.component.d.ts +7 -0
  273. package/lib/progress-bar/progress-bar.module.d.ts +8 -0
  274. package/lib/property-editor/editors/check-editor/check-editor.d.ts +19 -0
  275. package/lib/property-editor/editors/check-editor/check.module.d.ts +11 -0
  276. package/lib/property-editor/editors/color-editor/color.editor.d.ts +13 -0
  277. package/lib/property-editor/editors/color-editor/color.module.d.ts +12 -0
  278. package/lib/property-editor/editors/column-editor/column.editor.d.ts +34 -0
  279. package/lib/property-editor/editors/column-editor/column.module.d.ts +20 -0
  280. package/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.d.ts +44 -0
  281. package/lib/property-editor/editors/conditional-color-editor/conditional-color.module.d.ts +19 -0
  282. package/lib/property-editor/editors/date-editor/date.editor.d.ts +28 -0
  283. package/lib/property-editor/editors/date-editor/date.module.d.ts +12 -0
  284. package/lib/property-editor/editors/number-editor/number.editor.d.ts +20 -0
  285. package/lib/property-editor/editors/number-editor/number.module.d.ts +12 -0
  286. package/lib/property-editor/editors/range-editor/range.editor.d.ts +29 -0
  287. package/lib/property-editor/editors/range-editor/range.module.d.ts +18 -0
  288. package/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.d.ts +29 -0
  289. package/lib/property-editor/editors/selectbox-editor/selectbox.editor.d.ts +28 -0
  290. package/lib/property-editor/editors/selectbox-editor/selectbox.module.d.ts +14 -0
  291. package/lib/property-editor/editors/selection-editor/selection-editor.d.ts +25 -0
  292. package/lib/property-editor/editors/selection-editor/selection.module.d.ts +11 -0
  293. package/lib/property-editor/editors/switch-editor/number.editor.d.ts +11 -0
  294. package/lib/property-editor/editors/switch-editor/number.module.d.ts +13 -0
  295. package/lib/property-editor/editors/text-editor/text.editor.d.ts +18 -0
  296. package/lib/property-editor/editors/text-editor/text.module.d.ts +12 -0
  297. package/lib/property-editor/editors/textarea-editor/textarea.editor.d.ts +17 -0
  298. package/lib/property-editor/editors/textarea-editor/textarea.module.d.ts +12 -0
  299. package/lib/property-editor/editors/time-editor/time.editor.d.ts +17 -0
  300. package/lib/property-editor/editors/time-editor/time.module.d.ts +12 -0
  301. package/lib/property-editor/property-editor-renderer.directive.d.ts +30 -0
  302. package/lib/property-editor/property-editor.class.d.ts +92 -0
  303. package/lib/property-editor/property-editor.module.d.ts +21 -0
  304. package/lib/query-builder/query-builder-group.component.d.ts +33 -0
  305. package/lib/query-builder/query-builder-popup/query-builder-popup.component.d.ts +35 -0
  306. package/lib/query-builder/query-builder-rule.component.d.ts +45 -0
  307. package/lib/query-builder/query-builder.class.d.ts +45 -0
  308. package/lib/query-builder/query-builder.component.d.ts +27 -0
  309. package/lib/query-builder/query-builder.module.d.ts +23 -0
  310. package/lib/query-builder/query-builder.service.d.ts +18 -0
  311. package/lib/search-bar/search-bar.component.d.ts +61 -0
  312. package/lib/search-bar/search-bar.module.d.ts +18 -0
  313. package/lib/searchbox/searchbox.component.d.ts +22 -0
  314. package/lib/searchbox/searchbox.module.d.ts +13 -0
  315. package/lib/selectbox/selectbox.component.d.ts +118 -0
  316. package/lib/selectbox/selectbox.module.d.ts +15 -0
  317. package/lib/selectbox/selectbox2.component.d.ts +103 -0
  318. package/lib/selection-list/selection-list.component.d.ts +32 -0
  319. package/lib/selection-list/selection-list.module.d.ts +10 -0
  320. package/lib/switch/switch.component.d.ts +20 -0
  321. package/lib/switch/switch.module.d.ts +9 -0
  322. package/lib/tab-page/tab-page-Renderer.component.d.ts +16 -0
  323. package/lib/tab-page/tab-page-host.component.d.ts +25 -0
  324. package/lib/tab-page/tab-page.module.d.ts +10 -0
  325. package/lib/tab-page/tab-page.service.d.ts +30 -0
  326. package/lib/tab-strip/tab-strip.component.d.ts +28 -0
  327. package/lib/tab-strip/tab-strip.module.d.ts +8 -0
  328. package/lib/tab-view/dynamic-tabs.directive.d.ts +16 -0
  329. package/lib/tab-view/tab-view.component.d.ts +26 -0
  330. package/lib/tab-view/tab-view.module.d.ts +10 -0
  331. package/lib/tab-view/tab.component.d.ts +12 -0
  332. package/lib/textarea/textarea.component.d.ts +12 -0
  333. package/lib/textarea/textarea.module.d.ts +8 -0
  334. package/lib/textbox/textbox.component.d.ts +16 -0
  335. package/lib/textbox/textbox.module.d.ts +11 -0
  336. package/lib/time-picker/time-picker.component.d.ts +52 -0
  337. package/lib/time-picker/time-picker.module.d.ts +11 -0
  338. package/lib/toast/toast-message/toast-message.component.d.ts +18 -0
  339. package/lib/toast/toast-wrapper/toast-wrapper.component.d.ts +8 -0
  340. package/lib/toast/toast.module.d.ts +9 -0
  341. package/lib/toast/toast.service.d.ts +18 -0
  342. package/lib/toolbar/group-button/toolbar-group-button.component.d.ts +12 -0
  343. package/lib/toolbar/menu/toolbar-menu.component.d.ts +24 -0
  344. package/lib/toolbar/search/toolbar-search.component.d.ts +16 -0
  345. package/lib/toolbar/title/toolbar-title.component.d.ts +9 -0
  346. package/lib/toolbar/toolbar-item.d.ts +3 -0
  347. package/lib/toolbar/toolbar.component.d.ts +8 -0
  348. package/lib/toolbar/toolbar.module.d.ts +14 -0
  349. package/lib/tooltip/tooltip.directive.d.ts +21 -0
  350. package/lib/tooltip/tooltip.module.d.ts +8 -0
  351. package/lib/tree-side-menu/tree-side-menu.component.d.ts +111 -0
  352. package/lib/tree-side-menu/tree-side-menu.module.d.ts +11 -0
  353. package/lib/tree-view/tree-view.component.d.ts +121 -0
  354. package/lib/tree-view/tree-view.module.d.ts +11 -0
  355. package/lib/upload-file/upload-file.component.d.ts +42 -0
  356. package/lib/upload-file/upload-file.events.d.ts +10 -0
  357. package/lib/upload-file/upload-file.module.d.ts +13 -0
  358. package/lib/validation/validation-form.component.d.ts +19 -0
  359. package/lib/validation/validation-rule.widget.d.ts +23 -0
  360. package/lib/validation/validation.class.d.ts +16 -0
  361. package/lib/validation/validation.component.d.ts +25 -0
  362. package/lib/validation/validation.module.d.ts +11 -0
  363. package/package.json +33 -13
  364. package/{src/public-api.ts → public-api.d.ts} +155 -214
  365. package/karma.conf.js +0 -32
  366. package/ng-package.json +0 -10
  367. package/src/lib/accordion/accordion.component.ts +0 -43
  368. package/src/lib/accordion/accordion.module.ts +0 -11
  369. package/src/lib/accordion/api.ts +0 -2
  370. package/src/lib/base/base-page.class.ts +0 -116
  371. package/src/lib/base/components.class.ts +0 -9
  372. package/src/lib/base/element.class.ts +0 -344
  373. package/src/lib/base/events.class.ts +0 -32
  374. package/src/lib/button/button.component.html +0 -17
  375. package/src/lib/button/button.component.ts +0 -72
  376. package/src/lib/button/button.module.ts +0 -14
  377. package/src/lib/calendar/calendar-box/calendar-box.component.html +0 -68
  378. package/src/lib/calendar/calendar-box/calendar-box.component.ts +0 -461
  379. package/src/lib/calendar/calendar-box/calendar-box.module.ts +0 -16
  380. package/src/lib/calendar/scheduler/scheduler-views.property.ts +0 -38
  381. package/src/lib/calendar/scheduler/scheduler.component.html +0 -9
  382. package/src/lib/calendar/scheduler/scheduler.component.scss +0 -181
  383. package/src/lib/calendar/scheduler/scheduler.component.ts +0 -249
  384. package/src/lib/calendar/scheduler/scheduler.module.ts +0 -45
  385. package/src/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.ts +0 -133
  386. package/src/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.ts +0 -33
  387. package/src/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.html +0 -43
  388. package/src/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.scss +0 -66
  389. package/src/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.ts +0 -50
  390. package/src/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.html +0 -45
  391. package/src/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.scss +0 -19
  392. package/src/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.ts +0 -103
  393. package/src/lib/calendar/scheduler/views/month/scheduler-month-view.component.html +0 -39
  394. package/src/lib/calendar/scheduler/views/month/scheduler-month-view.component.scss +0 -55
  395. package/src/lib/calendar/scheduler/views/month/scheduler-month-view.component.ts +0 -233
  396. package/src/lib/calendar/scheduler/views/scheduler-view.component.ts +0 -124
  397. package/src/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.html +0 -50
  398. package/src/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.scss +0 -4
  399. package/src/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.ts +0 -92
  400. package/src/lib/checkbox/checkbox.component.html +0 -22
  401. package/src/lib/checkbox/checkbox.component.ts +0 -107
  402. package/src/lib/checkbox/checkbox.module.ts +0 -11
  403. package/src/lib/color-picker/color-box/color-box.component.html +0 -37
  404. package/src/lib/color-picker/color-box/color-box.component.scss +0 -60
  405. package/src/lib/color-picker/color-box/color-box.component.ts +0 -438
  406. package/src/lib/color-picker/color-picker.component.html +0 -31
  407. package/src/lib/color-picker/color-picker.component.ts +0 -87
  408. package/src/lib/color-picker/color-picker.module.ts +0 -16
  409. package/src/lib/context-menu/context-menu.component.html +0 -42
  410. package/src/lib/context-menu/context-menu.component.ts +0 -78
  411. package/src/lib/context-menu/context-menu.directive.ts +0 -159
  412. package/src/lib/context-menu/context-menu.module.ts +0 -15
  413. package/src/lib/data-filter/columns/filter-column-date.component.ts +0 -123
  414. package/src/lib/data-filter/columns/filter-column-number.component.ts +0 -100
  415. package/src/lib/data-filter/columns/filter-column-selection.component.ts +0 -69
  416. package/src/lib/data-filter/columns/filter-column-string.component.ts +0 -100
  417. package/src/lib/data-filter/filter-panel/filter-panel.component.html +0 -120
  418. package/src/lib/data-filter/filter-panel/filter-panel.component.scss +0 -143
  419. package/src/lib/data-filter/filter-panel/filter-panel.component.ts +0 -266
  420. package/src/lib/data-filter/filter.class.ts +0 -73
  421. package/src/lib/data-filter/filter.module.ts +0 -52
  422. package/src/lib/data-filter/toolbar/filter-toolbar.component.html +0 -5
  423. package/src/lib/data-filter/toolbar/filter-toolbar.component.scss +0 -17
  424. package/src/lib/data-filter/toolbar/filter-toolbar.component.ts +0 -179
  425. package/src/lib/data-list/core/data-list.component.ts +0 -62
  426. package/src/lib/data-list/list/list.component.html +0 -32
  427. package/src/lib/data-list/list/list.component.scss +0 -64
  428. package/src/lib/data-list/list/list.component.ts +0 -149
  429. package/src/lib/data-list/list/list.module.ts +0 -14
  430. package/src/lib/data-list/list/toolbar-list-view.component.ts +0 -63
  431. package/src/lib/data-source/datasource.component.ts +0 -50
  432. package/src/lib/data-source/datasource.module.ts +0 -11
  433. package/src/lib/date-picker/date-picker.component.html +0 -30
  434. package/src/lib/date-picker/date-picker.component.scss +0 -5
  435. package/src/lib/date-picker/date-picker.component.ts +0 -720
  436. package/src/lib/date-picker/date-picker.module.ts +0 -17
  437. package/src/lib/dialog/dialog.component.html +0 -5
  438. package/src/lib/dialog/dialog.component.scss +0 -32
  439. package/src/lib/dialog/dialog.component.ts +0 -32
  440. package/src/lib/dialog/dialog.module.ts +0 -13
  441. package/src/lib/dialog/dialog.service.ts +0 -178
  442. package/src/lib/drawer/content.component.ts +0 -18
  443. package/src/lib/drawer/drawer-container.component.ts +0 -37
  444. package/src/lib/drawer/drawer.component.ts +0 -151
  445. package/src/lib/drawer/drawer.module.ts +0 -16
  446. package/src/lib/dropdown/dropdown.component.html +0 -26
  447. package/src/lib/dropdown/dropdown.component.scss +0 -8
  448. package/src/lib/dropdown/dropdown.component.ts +0 -197
  449. package/src/lib/dropdown/dropdown.module.ts +0 -19
  450. package/src/lib/fieldset/fieldset.component.html +0 -6
  451. package/src/lib/fieldset/fieldset.component.ts +0 -49
  452. package/src/lib/fieldset/fieldset.module.ts +0 -11
  453. package/src/lib/form-group/form-group.component.html +0 -15
  454. package/src/lib/form-group/form-group.component.ts +0 -39
  455. package/src/lib/form-group/form-group.module.ts +0 -14
  456. package/src/lib/label/label.component.html +0 -5
  457. package/src/lib/label/label.component.ts +0 -18
  458. package/src/lib/label/label.module.ts +0 -14
  459. package/src/lib/loading/loading-indicator.component.html +0 -27
  460. package/src/lib/loading/loading-indicator.component.ts +0 -16
  461. package/src/lib/loading/loading-panel.component.ts +0 -37
  462. package/src/lib/loading/loading.module.ts +0 -13
  463. package/src/lib/loading/loading.service.ts +0 -44
  464. package/src/lib/menu/menu-item.component.ts +0 -41
  465. package/src/lib/menu/menu.component.html +0 -74
  466. package/src/lib/menu/menu.component.ts +0 -111
  467. package/src/lib/menu/menu.module.ts +0 -13
  468. package/src/lib/menu/menu2.component.scss +0 -59
  469. package/src/lib/menu/menu2.component.ts +0 -98
  470. package/src/lib/number-box/number-box.component.html +0 -32
  471. package/src/lib/number-box/number-box.component.ts +0 -641
  472. package/src/lib/number-box/number-box.module.ts +0 -13
  473. package/src/lib/page/content.component.ts +0 -18
  474. package/src/lib/page/footer.component.ts +0 -13
  475. package/src/lib/page/page.component.ts +0 -43
  476. package/src/lib/page/page.module.ts +0 -14
  477. package/src/lib/panel-box/panel-box.component.html +0 -19
  478. package/src/lib/panel-box/panel-box.component.scss +0 -25
  479. package/src/lib/panel-box/panel-box.component.ts +0 -87
  480. package/src/lib/panel-box/panel-box.module.ts +0 -10
  481. package/src/lib/password-box/password-box.component.html +0 -22
  482. package/src/lib/password-box/password-box.component.ts +0 -30
  483. package/src/lib/password-box/password-box.module.ts +0 -16
  484. package/src/lib/popover/custom-cdk-overlay.service.ts +0 -82
  485. package/src/lib/popover/overlay.service.ts +0 -102
  486. package/src/lib/popover/popover.component.html +0 -5
  487. package/src/lib/popover/popover.component.scss +0 -9
  488. package/src/lib/popover/popover.component.ts +0 -130
  489. package/src/lib/popover/popover.module.ts +0 -11
  490. package/src/lib/popup/popup.component.html +0 -33
  491. package/src/lib/popup/popup.component.scss +0 -167
  492. package/src/lib/popup/popup.component.ts +0 -184
  493. package/src/lib/popup/popup.module.ts +0 -16
  494. package/src/lib/popup/popup.service.ts +0 -103
  495. package/src/lib/progress-bar/progress-bar.component.html +0 -5
  496. package/src/lib/progress-bar/progress-bar.component.ts +0 -10
  497. package/src/lib/progress-bar/progress-bar.module.ts +0 -11
  498. package/src/lib/property-editor/editors/check-editor/check-editor.ts +0 -44
  499. package/src/lib/property-editor/editors/check-editor/check.module.ts +0 -14
  500. package/src/lib/property-editor/editors/color-editor/color.editor.ts +0 -30
  501. package/src/lib/property-editor/editors/color-editor/color.module.ts +0 -20
  502. package/src/lib/property-editor/editors/column-editor/column.editor.html +0 -75
  503. package/src/lib/property-editor/editors/column-editor/column.editor.scss +0 -193
  504. package/src/lib/property-editor/editors/column-editor/column.editor.ts +0 -124
  505. package/src/lib/property-editor/editors/column-editor/column.module.ts +0 -28
  506. package/src/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.html +0 -80
  507. package/src/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.scss +0 -71
  508. package/src/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.ts +0 -232
  509. package/src/lib/property-editor/editors/conditional-color-editor/conditional-color.module.ts +0 -52
  510. package/src/lib/property-editor/editors/date-editor/date.editor.ts +0 -49
  511. package/src/lib/property-editor/editors/date-editor/date.module.ts +0 -20
  512. package/src/lib/property-editor/editors/number-editor/number.editor.ts +0 -46
  513. package/src/lib/property-editor/editors/number-editor/number.module.ts +0 -20
  514. package/src/lib/property-editor/editors/range-editor/range.editor.html +0 -67
  515. package/src/lib/property-editor/editors/range-editor/range.editor.scss +0 -68
  516. package/src/lib/property-editor/editors/range-editor/range.editor.ts +0 -153
  517. package/src/lib/property-editor/editors/range-editor/range.module.ts +0 -37
  518. package/src/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.html +0 -8
  519. package/src/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.ts +0 -70
  520. package/src/lib/property-editor/editors/selectbox-editor/selectbox.editor.html +0 -8
  521. package/src/lib/property-editor/editors/selectbox-editor/selectbox.editor.ts +0 -77
  522. package/src/lib/property-editor/editors/selectbox-editor/selectbox.module.ts +0 -18
  523. package/src/lib/property-editor/editors/selection-editor/selection-editor.ts +0 -52
  524. package/src/lib/property-editor/editors/selection-editor/selection.module.ts +0 -14
  525. package/src/lib/property-editor/editors/switch-editor/number.editor.ts +0 -26
  526. package/src/lib/property-editor/editors/switch-editor/number.module.ts +0 -21
  527. package/src/lib/property-editor/editors/text-editor/text.editor.html +0 -5
  528. package/src/lib/property-editor/editors/text-editor/text.editor.ts +0 -31
  529. package/src/lib/property-editor/editors/text-editor/text.module.ts +0 -20
  530. package/src/lib/property-editor/editors/textarea-editor/textarea.editor.html +0 -9
  531. package/src/lib/property-editor/editors/textarea-editor/textarea.editor.ts +0 -37
  532. package/src/lib/property-editor/editors/textarea-editor/textarea.module.ts +0 -20
  533. package/src/lib/property-editor/editors/time-editor/time.editor.ts +0 -38
  534. package/src/lib/property-editor/editors/time-editor/time.module.ts +0 -20
  535. package/src/lib/property-editor/property-editor-renderer.directive.ts +0 -165
  536. package/src/lib/property-editor/property-editor.class.ts +0 -178
  537. package/src/lib/property-editor/property-editor.module.ts +0 -115
  538. package/src/lib/query-builder/query-builder-group.component.html +0 -68
  539. package/src/lib/query-builder/query-builder-group.component.ts +0 -122
  540. package/src/lib/query-builder/query-builder-popup/query-builder-popup.component.html +0 -82
  541. package/src/lib/query-builder/query-builder-popup/query-builder-popup.component.ts +0 -178
  542. package/src/lib/query-builder/query-builder-rule.component.html +0 -135
  543. package/src/lib/query-builder/query-builder-rule.component.ts +0 -390
  544. package/src/lib/query-builder/query-builder.class.ts +0 -53
  545. package/src/lib/query-builder/query-builder.component.html +0 -3
  546. package/src/lib/query-builder/query-builder.component.scss +0 -286
  547. package/src/lib/query-builder/query-builder.component.ts +0 -220
  548. package/src/lib/query-builder/query-builder.module.ts +0 -44
  549. package/src/lib/query-builder/query-builder.service.ts +0 -188
  550. package/src/lib/search-bar/search-bar.component.html +0 -30
  551. package/src/lib/search-bar/search-bar.component.scss +0 -114
  552. package/src/lib/search-bar/search-bar.component.ts +0 -287
  553. package/src/lib/search-bar/search-bar.module.ts +0 -33
  554. package/src/lib/searchbox/searchbox.component.html +0 -25
  555. package/src/lib/searchbox/searchbox.component.ts +0 -85
  556. package/src/lib/searchbox/searchbox.module.ts +0 -17
  557. package/src/lib/selectbox/selectbox.component.html +0 -100
  558. package/src/lib/selectbox/selectbox.component.ts +0 -984
  559. package/src/lib/selectbox/selectbox.module.ts +0 -31
  560. package/src/lib/selectbox/selectbox2.component.html +0 -78
  561. package/src/lib/selectbox/selectbox2.component.ts +0 -603
  562. package/src/lib/selection-list/selection-list.component.html +0 -21
  563. package/src/lib/selection-list/selection-list.component.ts +0 -115
  564. package/src/lib/selection-list/selection-list.module.ts +0 -13
  565. package/src/lib/switch/switch.component.html +0 -4
  566. package/src/lib/switch/switch.component.scss +0 -65
  567. package/src/lib/switch/switch.component.ts +0 -57
  568. package/src/lib/switch/switch.module.ts +0 -14
  569. package/src/lib/tab-page/tab-page-Renderer.component.ts +0 -70
  570. package/src/lib/tab-page/tab-page-host.component.ts +0 -110
  571. package/src/lib/tab-page/tab-page.module.ts +0 -13
  572. package/src/lib/tab-page/tab-page.service.ts +0 -176
  573. package/src/lib/tab-strip/tab-strip.component.html +0 -6
  574. package/src/lib/tab-strip/tab-strip.component.ts +0 -47
  575. package/src/lib/tab-strip/tab-strip.module.ts +0 -11
  576. package/src/lib/tab-view/dynamic-tabs.directive.ts +0 -17
  577. package/src/lib/tab-view/tab-view.component.html +0 -33
  578. package/src/lib/tab-view/tab-view.component.scss +0 -0
  579. package/src/lib/tab-view/tab-view.component.ts +0 -129
  580. package/src/lib/tab-view/tab-view.module.ts +0 -12
  581. package/src/lib/tab-view/tab.component.html +0 -8
  582. package/src/lib/tab-view/tab.component.ts +0 -15
  583. package/src/lib/textarea/textarea.component.html +0 -13
  584. package/src/lib/textarea/textarea.component.ts +0 -24
  585. package/src/lib/textarea/textarea.module.ts +0 -14
  586. package/src/lib/textbox/textbox.component.html +0 -22
  587. package/src/lib/textbox/textbox.component.ts +0 -38
  588. package/src/lib/textbox/textbox.module.ts +0 -16
  589. package/src/lib/time-picker/time-picker.component.html +0 -21
  590. package/src/lib/time-picker/time-picker.component.ts +0 -1003
  591. package/src/lib/time-picker/time-picker.module.ts +0 -15
  592. package/src/lib/toast/toast-message/toast-message.component.html +0 -17
  593. package/src/lib/toast/toast-message/toast-message.component.scss +0 -75
  594. package/src/lib/toast/toast-message/toast-message.component.ts +0 -64
  595. package/src/lib/toast/toast-wrapper/toast-wrapper.component.scss +0 -15
  596. package/src/lib/toast/toast-wrapper/toast-wrapper.component.ts +0 -13
  597. package/src/lib/toast/toast.module.ts +0 -12
  598. package/src/lib/toast/toast.service.ts +0 -64
  599. package/src/lib/toolbar/group-button/toolbar-group-button.component.ts +0 -54
  600. package/src/lib/toolbar/menu/toolbar-menu.component.html +0 -4
  601. package/src/lib/toolbar/menu/toolbar-menu.component.ts +0 -81
  602. package/src/lib/toolbar/search/toolbar-search.component.html +0 -4
  603. package/src/lib/toolbar/search/toolbar-search.component.scss +0 -24
  604. package/src/lib/toolbar/search/toolbar-search.component.ts +0 -61
  605. package/src/lib/toolbar/title/toolbar-title.component.ts +0 -35
  606. package/src/lib/toolbar/toolbar-item.ts +0 -4
  607. package/src/lib/toolbar/toolbar.component.html +0 -4
  608. package/src/lib/toolbar/toolbar.component.scss +0 -9
  609. package/src/lib/toolbar/toolbar.component.ts +0 -16
  610. package/src/lib/toolbar/toolbar.module.ts +0 -25
  611. package/src/lib/tooltip/tooltip.directive.ts +0 -101
  612. package/src/lib/tooltip/tooltip.module.ts +0 -11
  613. package/src/lib/tree-side-menu/tree-side-menu.component.html +0 -43
  614. package/src/lib/tree-side-menu/tree-side-menu.component.ts +0 -698
  615. package/src/lib/tree-side-menu/tree-side-menu.module.ts +0 -19
  616. package/src/lib/tree-view/tree-view.component.html +0 -46
  617. package/src/lib/tree-view/tree-view.component.ts +0 -835
  618. package/src/lib/tree-view/tree-view.module.ts +0 -16
  619. package/src/lib/upload-file/upload-file.component.html +0 -16
  620. package/src/lib/upload-file/upload-file.component.ts +0 -230
  621. package/src/lib/upload-file/upload-file.events.ts +0 -11
  622. package/src/lib/upload-file/upload-file.module.ts +0 -16
  623. package/src/lib/validation/validation-form.component.ts +0 -78
  624. package/src/lib/validation/validation-rule.widget.ts +0 -112
  625. package/src/lib/validation/validation.class.ts +0 -22
  626. package/src/lib/validation/validation.component.ts +0 -92
  627. package/src/lib/validation/validation.module.ts +0 -28
  628. package/src/test.ts +0 -28
  629. package/tsconfig.lib.json +0 -25
  630. package/tsconfig.lib.prod.json +0 -6
  631. package/tsconfig.spec.json +0 -17
  632. package/tslint.json +0 -17
@@ -0,0 +1,574 @@
1
+ import { Component, ViewEncapsulation, ChangeDetectionStrategy, Input, EventEmitter, Output, ViewChild, ChangeDetectorRef, ElementRef, ContentChild, NgZone, HostListener } from '@angular/core';
2
+ import { AXTextBoxComponent } from '../textbox/textbox.component';
3
+ import { AXDropdownComponent } from '../dropdown/dropdown.component';
4
+ import { AXValidatableComponent } from '../base/element.class';
5
+ import { AXDataSourceComponent } from '../data-source/datasource.component';
6
+ import { AXValidation } from '../validation/validation.component';
7
+ import { AXSearchBoxComponent } from '../searchbox/searchbox.component';
8
+ import { AXConfig, AXObjectUtil, AXTranslator } from '@acorex/core';
9
+ import { AXValueEvent } from '../base/events.class';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "../dropdown/dropdown.component";
12
+ import * as i2 from "../textbox/textbox.component";
13
+ import * as i3 from "../searchbox/searchbox.component";
14
+ import * as i4 from "../checkbox/checkbox.component";
15
+ import * as i5 from "@acorex/core";
16
+ import * as i6 from "@angular/common";
17
+ export class AXSelectBoxValueChangedEvent extends AXValueEvent {
18
+ constructor() {
19
+ super(...arguments);
20
+ this.isUserInput = false;
21
+ }
22
+ }
23
+ export class AXSelectBox2Component extends AXValidatableComponent {
24
+ constructor(cdr, ref, zone) {
25
+ super();
26
+ this.cdr = cdr;
27
+ this.ref = ref;
28
+ this.zone = zone;
29
+ this.showDropDownButton = true;
30
+ this.readonly = false;
31
+ this.rtl = AXConfig.get('layout.rtl');
32
+ this.size = 'md';
33
+ this.allowNull = true;
34
+ this.textAlign = null;
35
+ this.bufferSize = 10;
36
+ this.remoteOperation = false;
37
+ this.allowSearch = true;
38
+ this.textField = 'text';
39
+ this.valueField = 'value';
40
+ this.selectionMode = 'single';
41
+ this.selectionDataMode = 'value';
42
+ this.currentfocusedIndex = -1;
43
+ this.showLoading = false;
44
+ this.skip = -1;
45
+ this.searchText = '';
46
+ this.text = '';
47
+ this.totalCount = 0;
48
+ this.itemsFiltered = [];
49
+ this.isUserInput = false;
50
+ this._items = [];
51
+ this.itemsChange = new EventEmitter();
52
+ this.onBlur = new EventEmitter();
53
+ this.onFocus = new EventEmitter();
54
+ this.valueChange = new EventEmitter();
55
+ this.onValueChanged = new EventEmitter();
56
+ }
57
+ get dataSource() {
58
+ return this._dataSource ? this._dataSource : this._contentDataSource;
59
+ }
60
+ set dataSource(v) {
61
+ this._dataSource = v;
62
+ }
63
+ get validation() {
64
+ return this._validation ? this._validation : this._contentValidation;
65
+ }
66
+ set validation(v) {
67
+ this._validation = v;
68
+ }
69
+ get value() {
70
+ return this._value;
71
+ }
72
+ set value(v) {
73
+ if (v !== this._value) {
74
+ const oldValue = AXObjectUtil.deepJSONClone(this._value);
75
+ if (this.selectionMode === 'multiple') {
76
+ this._value = Array.isArray(v) ? v : (v ? [v] : []);
77
+ }
78
+ else {
79
+ this._value = Array.isArray(v) ? v[0] : v;
80
+ }
81
+ this.valueChange.emit(this._value);
82
+ this.onValueChanged.emit({
83
+ component: this,
84
+ htmlElement: this.ref.nativeElement,
85
+ isUserInput: this.isUserInput,
86
+ oldValue,
87
+ value: this._value,
88
+ selectedKeys: this.selectedItems.map(c => c[this.valueField]),
89
+ selectedItems: this.selectedItems.slice()
90
+ });
91
+ this.isUserInput = false;
92
+ this.renderSelection();
93
+ }
94
+ }
95
+ get selectedItems() {
96
+ return this._selectedItems || [];
97
+ }
98
+ get items() {
99
+ return this._items;
100
+ }
101
+ set items(v) {
102
+ this._items = v;
103
+ if (this.itemsChange) {
104
+ this.itemsChange.emit(v);
105
+ }
106
+ this.renderSelection();
107
+ }
108
+ ngOnInit() {
109
+ if (this.rtl == null) {
110
+ this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';
111
+ }
112
+ }
113
+ scrolled(e) {
114
+ if (this.remoteOperation && this.totalCount > this.items.length && this.listContainer.nativeElement.scrollHeight != 0
115
+ && this.listContainer.nativeElement.scrollHeight - this.listContainer.nativeElement.scrollTop - 300 < 50) {
116
+ this.showLoading = true;
117
+ if (this.skip !== this.items.length) {
118
+ this.skip = this.items.length;
119
+ const params = {};
120
+ params.skip = this.items.length;
121
+ params.take = this.bufferSize * (Math.floor(this.items.length / this.bufferSize) + 1);
122
+ if (this.textbox) {
123
+ params.searchText = this.text;
124
+ }
125
+ else {
126
+ params.searchText = null;
127
+ }
128
+ this.fetch(params);
129
+ }
130
+ }
131
+ }
132
+ textChanged(e) {
133
+ this.currentfocusedIndex = -1;
134
+ if (this.remoteOperation) {
135
+ this.searchText = this.text;
136
+ this.items = [];
137
+ const params = {};
138
+ params.searchText = this.text;
139
+ params.skip = 0;
140
+ params.take = this.bufferSize;
141
+ this.fetch(params);
142
+ }
143
+ }
144
+ renderSelection() {
145
+ const func = () => {
146
+ if (!this.value) {
147
+ return [];
148
+ }
149
+ if ((this.items?.length > 0) && this.selectionDataMode == 'value') {
150
+ const orgRes = this.items.filter(i => {
151
+ if (Array.isArray(this.value)) {
152
+ return this.value.some(ii => {
153
+ if (typeof ii === 'object') {
154
+ return i[this.valueField] === ii[this.valueField];
155
+ }
156
+ else {
157
+ return i[this.valueField] === ii;
158
+ }
159
+ });
160
+ }
161
+ else {
162
+ if (typeof this.value === 'object') {
163
+ return i[this.valueField] === this.value[this.valueField];
164
+ }
165
+ else {
166
+ return i[this.valueField] === this.value;
167
+ }
168
+ }
169
+ });
170
+ if (orgRes.length > 0) {
171
+ return orgRes;
172
+ }
173
+ }
174
+ if (Array.isArray(this.value)) {
175
+ return this.value.map(ii => {
176
+ if (typeof ii === 'object' && ii[this.textField]) {
177
+ return ii;
178
+ }
179
+ else {
180
+ const fake = {};
181
+ fake[this.valueField] = this.value;
182
+ fake[this.textField] = AXTranslator.get('common.loading');
183
+ return fake;
184
+ }
185
+ });
186
+ }
187
+ else {
188
+ if (typeof this.value === 'object' && this.value[this.textField]) {
189
+ return [this.value];
190
+ }
191
+ else {
192
+ const fake = {};
193
+ fake[this.valueField] = this.value;
194
+ fake[this.textField] = AXTranslator.get('common.loading');
195
+ return [fake];
196
+ }
197
+ }
198
+ };
199
+ this._selectedItems = func();
200
+ this.cdr.markForCheck();
201
+ }
202
+ ngAfterViewInit() {
203
+ if (this.bufferSize < 10) {
204
+ this.bufferSize = 10;
205
+ }
206
+ if (!this.remoteOperation) {
207
+ this.refresh();
208
+ }
209
+ }
210
+ dropdownToggle(e) {
211
+ if (this.dropdown.isOpen) {
212
+ this.currentfocusedIndex = this.getItems().indexOf(this.selectedItems[this.selectedItems.length - 1]);
213
+ this.focusOnSearchBox();
214
+ this.focusOnCurrentFocusedIndex();
215
+ }
216
+ else {
217
+ this.focus();
218
+ }
219
+ }
220
+ ngAfterContentInit() {
221
+ this.initValidation(this.ref, 'value', this.validation);
222
+ if (this.dataSource) {
223
+ if (this.allowSearch === false) {
224
+ this.fetch();
225
+ }
226
+ this.dataSource.onDataReceived.subscribe((c) => {
227
+ this.showLoading = false;
228
+ this.dataReceived(c.data.result);
229
+ });
230
+ }
231
+ this.cdr.markForCheck();
232
+ this.cdr.detectChanges();
233
+ }
234
+ dataReceived(data) {
235
+ if (this.remoteOperation) {
236
+ if (this.searchText && this.searchText != null && this.searchText !== '') {
237
+ if (data.totalCount) {
238
+ this.items = data.items;
239
+ this.totalCount = data.totalCount;
240
+ }
241
+ else {
242
+ this.items = data.items;
243
+ this.totalCount = data.items == undefined ? 0 : data.items.length;
244
+ }
245
+ }
246
+ else if (data.items && data.items.length === data.totalCount) {
247
+ this.items = data.items;
248
+ this.totalCount = data.items.length;
249
+ }
250
+ else if (data.totalCount) {
251
+ data.items.forEach(elm => {
252
+ this.items.push(elm);
253
+ });
254
+ this.totalCount = data.totalCount;
255
+ }
256
+ else {
257
+ data.forEach(elm => {
258
+ this.items.push(elm);
259
+ });
260
+ this.totalCount = data.length;
261
+ }
262
+ }
263
+ else {
264
+ this.items = data;
265
+ }
266
+ this.renderSelection();
267
+ this.cdr.markForCheck();
268
+ this.cdr.detectChanges();
269
+ }
270
+ fetch(params = {}) {
271
+ if (this.dataSource) {
272
+ this.showLoading = true;
273
+ this.dataSource.fetch(params);
274
+ }
275
+ }
276
+ refresh() {
277
+ const params = {};
278
+ if (this.remoteOperation) {
279
+ params.skip = 0;
280
+ this.skip = 0;
281
+ params.take = this.bufferSize;
282
+ }
283
+ if (this.dataSource !== undefined) {
284
+ this.items = [];
285
+ this.fetch(params);
286
+ }
287
+ }
288
+ handleItemRemoveClick(item) {
289
+ this.text = '';
290
+ this.isUserInput = true;
291
+ if (Array.isArray(this.value)) {
292
+ this.value = this.value.filter(c => (typeof c === 'object') ? c[this.valueField] !== item[this.valueField] : c !== item[this.valueField]);
293
+ }
294
+ else {
295
+ this.value = null;
296
+ }
297
+ this.cdr.markForCheck();
298
+ }
299
+ onTextBoxClick(e) {
300
+ if (this.disabled === false && this.readonly === false) {
301
+ this.open();
302
+ }
303
+ }
304
+ handleItemClick(e, item) {
305
+ this.isUserInput = true;
306
+ if (this.selectionMode === 'single') {
307
+ this.selectItems(item);
308
+ this.close();
309
+ }
310
+ else {
311
+ if (Array.isArray(this.value) && this.value.length > 0) {
312
+ if (this.value.some(c => this.internalGetItemValue(c) === this.internalGetItemValue(item))) {
313
+ this.unselectItems(item);
314
+ }
315
+ else {
316
+ this.selectItems(item);
317
+ }
318
+ }
319
+ else {
320
+ this.selectItems(item);
321
+ }
322
+ }
323
+ this.cdr.markForCheck();
324
+ this.focusOnSearchBox();
325
+ }
326
+ internalGetItemByDataMode(item) {
327
+ return this.selectionDataMode === 'item' ? item : item[this.valueField];
328
+ }
329
+ internalGetItemValue(item) {
330
+ return typeof item === 'object' ? item[this.valueField] : item;
331
+ }
332
+ handleKeyDown(e) {
333
+ if (e.key === 'Escape' || this.disabled || this.readonly) {
334
+ this.close();
335
+ e.preventDefault();
336
+ return;
337
+ }
338
+ const isLetter = new RegExp(/[a-zA-Z0-9\-]/).test(String.fromCharCode(e.keyCode));
339
+ if (this.textbox.isFocused()) {
340
+ if (e.key === 'Backspace' && e.type === 'keydown' &&
341
+ ((this.allowNull === true && this.selectedItems.length > 0) ||
342
+ (this.allowNull === false && this.selectedItems.length > 1))) {
343
+ this.isUserInput = true;
344
+ this.unselectItems(this.selectedItems.pop());
345
+ e.preventDefault();
346
+ return;
347
+ }
348
+ else if ((e.key === 'ArrowDown' || e.key === 'ArrowUp') && this.getItems().length > 0 && !this.dropdown.isOpen && e.type === 'keydown') {
349
+ if (this.selectionMode === 'single') {
350
+ this.isUserInput = true;
351
+ this.selectedItemByIndex(this.currentfocusedIndex + (e.key === 'ArrowDown' ? 1 : -1));
352
+ if (e.ctrlKey) {
353
+ this.open();
354
+ }
355
+ }
356
+ else {
357
+ this.open();
358
+ }
359
+ e.preventDefault();
360
+ return;
361
+ }
362
+ else if (isLetter) {
363
+ this.text = e.key;
364
+ this.open();
365
+ e.preventDefault();
366
+ return;
367
+ }
368
+ }
369
+ if (this.dropdown.isOpen) {
370
+ if ((e.key === 'ArrowDown' || e.key === 'ArrowUp') && this.getItems().length > 0) {
371
+ this.isUserInput = true;
372
+ this.selectItemByNav((e.key === 'ArrowDown' ? 1 : -1));
373
+ e.preventDefault();
374
+ return;
375
+ }
376
+ if ((e.key === 'Enter' || e.code === 'Space')) {
377
+ const focusedItem = this.getItems()[this.currentfocusedIndex];
378
+ if (focusedItem) {
379
+ if (this.selectionMode === 'single') {
380
+ this.isUserInput = true;
381
+ this.selectItems(focusedItem);
382
+ this.close();
383
+ }
384
+ else {
385
+ this.isUserInput = true;
386
+ this.toggleSelect(focusedItem);
387
+ }
388
+ }
389
+ e.preventDefault();
390
+ return;
391
+ }
392
+ }
393
+ }
394
+ unselectItems(...items) {
395
+ if (!items || items.length === 0) {
396
+ this.value = null;
397
+ }
398
+ else if (Array.isArray(this.value)) {
399
+ this.value = this.value.filter(c => !items.some(d => this.internalGetItemValue(c) === this.internalGetItemValue(d)));
400
+ }
401
+ else {
402
+ this.value = null;
403
+ }
404
+ this.cdr.markForCheck();
405
+ }
406
+ selectItems(...items) {
407
+ if (items && items.length) {
408
+ if (this.selectionMode === 'single') {
409
+ this.value = this.internalGetItemByDataMode(items[0]);
410
+ }
411
+ else {
412
+ this.value = (this.value || []).concat(items.map(c => this.internalGetItemByDataMode(c)));
413
+ }
414
+ }
415
+ }
416
+ toggleSelect(...items) {
417
+ if (items && items.length) {
418
+ items.forEach(item => {
419
+ this.selectedItems.includes(item) ? this.unselectItems(item) : this.selectItems(item);
420
+ });
421
+ }
422
+ }
423
+ close() {
424
+ this.dropdown.close();
425
+ }
426
+ open() {
427
+ this.dropdown.open();
428
+ }
429
+ focus() {
430
+ this.text = null;
431
+ this.textbox.focus();
432
+ }
433
+ focusOnSearchBox() {
434
+ const inputedVal = this.text;
435
+ if (this.allowSearch === true) {
436
+ setTimeout(() => {
437
+ if (this.searchBox) {
438
+ this.searchBox.value = inputedVal;
439
+ this.searchBox.focus();
440
+ }
441
+ }, 0);
442
+ }
443
+ else {
444
+ this.textbox.focus();
445
+ }
446
+ }
447
+ getItems() {
448
+ if (this.items == null) {
449
+ return [];
450
+ }
451
+ return (!this.remoteOperation && this.text && this.text !== '') ? this.items.filter((c) => c[this.textField].toLowerCase().includes(this.text.toLowerCase())) : this.items;
452
+ }
453
+ isItemSelected(item) {
454
+ return this.selectedItems.some(c => c[this.valueField] === item[this.valueField]);
455
+ }
456
+ selectItemByNav(sign = null) {
457
+ if (sign == null) {
458
+ this.currentfocusedIndex = this.getItems().indexOf(this.selectedItems[this.selectedItems.length - 1]);
459
+ }
460
+ else {
461
+ sign === -1 ? this.currentfocusedIndex-- : this.currentfocusedIndex++;
462
+ }
463
+ if (this.currentfocusedIndex < 0) {
464
+ this.currentfocusedIndex = 0;
465
+ }
466
+ if (this.currentfocusedIndex > this.getItems().length - 1) {
467
+ this.currentfocusedIndex = this.getItems().length - 1;
468
+ }
469
+ // set scroll
470
+ this.focusOnCurrentFocusedIndex();
471
+ }
472
+ focusOnCurrentFocusedIndex() {
473
+ if (this.listContainer) {
474
+ this.zone.runOutsideAngular(() => {
475
+ const itemDiv = this.listContainer.nativeElement.querySelector(`.list-item:nth-child(${this.currentfocusedIndex})`);
476
+ if (itemDiv) {
477
+ itemDiv.scrollIntoView({ behavior: 'auto' });
478
+ }
479
+ });
480
+ }
481
+ }
482
+ selectedItemByIndex(index) {
483
+ if (index < 0) {
484
+ index = 0;
485
+ }
486
+ if (index > this.getItems().length - 1) {
487
+ index = this.getItems().length - 1;
488
+ }
489
+ this.selectItems(this.getItems()[index]);
490
+ this.currentfocusedIndex = index;
491
+ }
492
+ }
493
+ AXSelectBox2Component.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXSelectBox2Component, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
494
+ AXSelectBox2Component.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AXSelectBox2Component, selector: "ax-select-box2", inputs: { showDropDownButton: "showDropDownButton", readonly: "readonly", rtl: "rtl", disabled: "disabled", placeholder: "placeholder", size: "size", allowNull: "allowNull", textAlign: "textAlign", bufferSize: "bufferSize", remoteOperation: "remoteOperation", allowSearch: "allowSearch", textField: "textField", valueField: "valueField", selectionMode: "selectionMode", selectionDataMode: "selectionDataMode", dataSource: "dataSource", validation: "validation", value: "value", items: "items" }, outputs: { itemsChange: "itemsChange", onBlur: "onBlur", onFocus: "onFocus", valueChange: "valueChange", onValueChanged: "onValueChanged" }, host: { listeners: { "document:keydown": "handleKeyDown($event)" }, styleAttribute: "width: 100%" }, providers: [{ provide: AXValidatableComponent, useExisting: AXSelectBox2Component }], queries: [{ propertyName: "_contentDataSource", first: true, predicate: AXDataSourceComponent, descendants: true, static: true }, { propertyName: "_contentValidation", first: true, predicate: AXValidation, descendants: true, static: true }], viewQueries: [{ propertyName: "span", first: true, predicate: AXTextBoxComponent, descendants: true, static: true }, { propertyName: "textbox", first: true, predicate: AXTextBoxComponent, descendants: true, static: true }, { propertyName: "listContainer", first: true, predicate: ["listContainer"], descendants: true, static: true }, { propertyName: "searchBox", first: true, predicate: ["searchBox"], descendants: true }, { propertyName: "textBoxSelectBox", first: true, predicate: ["textBoxSelectBox"], descendants: true, static: true }, { propertyName: "dropdown", first: true, predicate: ["d"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ax-drop-down [size]=\"size\" [rtl]=\"rtl\" [showDropDownButton]=\"showDropDownButton\" [disabled]=\"disabled\"\n [readonly]=\"readonly\" #d (dropdownToggle)=\"dropdownToggle($event)\" [loading]=\"showLoading\">\n <ng-container start>\n <ng-content select=\"[start]\">\n </ng-content>\n </ng-container>\n <ng-container header>\n <div class=\"ax chips-container\" [horizontalScroll]=\"40\">\n <div *ngFor=\"let item of selectedItems\" class=\"chips\" [class.chips-blank]=\"selectionMode === 'single'\"\n [title]=\"item[textField]\">\n <span class=\"chips-text\">\n {{item[textField]}}\n </span>\n <span class=\"close-icon\" (click)=\"handleItemRemoveClick(item)\"\n *ngIf=\"(readonly!=true) && disabled!=true && (allowNull==true || (selectedItems.length > 1))\">\n <i class=\"far fa-times close\"></i>\n </span>\n </div>\n <div class=\"search-wrapper\" (click)=\"onTextBoxClick($event)\">\n <ax-text-box #textBoxSelectBox [textAlign]=\"textAlign\"\n [placeholder]=\"selectedItems.length == 0 ? placeholder : ''\" [readonly]=\"readonly\"\n [disabled]=\"disabled\" [size]=\"size\">\n </ax-text-box>\n </div>\n </div>\n </ng-container>\n <ng-container end>\n <ng-content select=\"[end]\">\n </ng-content>\n </ng-container>\n <ng-container panel>\n <div *ngIf=\"allowSearch\" class=\"search-wrapper\" style=\"padding: 0.7em;\">\n <ax-search-box #searchBox [(value)]=\"text\" size=\"sm\"\n (textChanged)=\"textChanged($event)\" (onButtonClick)=\"textChanged($event)\">\n </ax-search-box>\n </div>\n <div class=\"ax list-container\">\n <div #listContainer style=\"max-height: 300px;overflow-y: auto;width: 100%;\" (scroll)=\"scrolled($event)\">\n <ng-container *ngIf=\"getItems().length>0; then thenTemplate; else elseTemplate\"></ng-container>\n <ng-template #thenTemplate>\n <div class=\"list-item\" *ngFor=\"let item of getItems();let i = index\"\n [class.focused]=\"i==currentfocusedIndex\" (click)=\"handleItemClick($event,item)\"\n [class.selected]=\"isItemSelected(item)\">\n <div>\n <div>\n <ax-check-box *ngIf=\"selectionMode !== 'single'\" [size]=\"size\" [value]=\"isItemSelected(item)\"\n [disabled]=\"!allowNull && selectedItems.length === 1 && isItemSelected(item)\"\n (onClick)=\"handleItemClick($event,item)\">\n </ax-check-box>\n </div>\n <div style=\"white-space: nowrap;text-overflow: ellipsis;overflow: hidden;\"\n [title]=\"item[textField]\"\n [ngStyle]=\"(selectionMode !== 'single') ? {'padding-inline-start': '2em'}:''\">\n {{ item[textField] }}\n </div>\n </div>\n </div>\n </ng-template>\n <div *ngIf=\"showLoading\" class=\"ax-pad-sm\" style=\"text-align: center;\">\n <i class=\"far fa-spinner-third fa-pulse fa-2x\" style=\"color: var(--ax-primary-color);\"></i>\n </div>\n <ng-template #elseTemplate>\n <ng-container *ngIf=\"showLoading == true; then searchTemplate else noDataTemplate\"></ng-container>\n <ng-template #searchTemplate>\n <div class=\"list-item\">\n {{'common.searching' | trans}}\n </div>\n </ng-template>\n <ng-template #noDataTemplate>\n <div class=\"list-item\">\n {{'common.noDataFound' | trans}}\n </div>\n </ng-template>\n </ng-template>\n </div>\n </div>\n </ng-container>\n</ax-drop-down>", components: [{ type: i1.AXDropdownComponent, selector: "ax-drop-down", inputs: ["rtl", "readonly", "loading", "dropdownWidth"], outputs: ["dropdownToggle", "onButtonClick"] }, { type: i2.AXTextBoxComponent, selector: "ax-text-box", inputs: ["mask", "type", "showMask", "maxLength", "maskGuid", "maskPlaceholder", "maskKeepCharPositions"] }, { type: i3.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["placeholder", "text", "delay"], outputs: ["textChanged", "onButtonClick"] }, { type: i4.AXCheckBoxComponent, selector: "ax-check-box", inputs: ["readonly", "disabled", "size", "label", "tabIndex", "indeterminate", "value"], outputs: ["onValueChanged", "valueChange", "onClick"] }], directives: [{ type: i5.AXHorizontalScrollDirective, selector: "[horizontalScroll]", inputs: ["horizontalScroll"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], pipes: { "trans": i5.AXTranslatorPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
495
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXSelectBox2Component, decorators: [{
496
+ type: Component,
497
+ args: [{ selector: 'ax-select-box2', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { style: 'width: 100%' }, providers: [{ provide: AXValidatableComponent, useExisting: AXSelectBox2Component }], template: "<ax-drop-down [size]=\"size\" [rtl]=\"rtl\" [showDropDownButton]=\"showDropDownButton\" [disabled]=\"disabled\"\n [readonly]=\"readonly\" #d (dropdownToggle)=\"dropdownToggle($event)\" [loading]=\"showLoading\">\n <ng-container start>\n <ng-content select=\"[start]\">\n </ng-content>\n </ng-container>\n <ng-container header>\n <div class=\"ax chips-container\" [horizontalScroll]=\"40\">\n <div *ngFor=\"let item of selectedItems\" class=\"chips\" [class.chips-blank]=\"selectionMode === 'single'\"\n [title]=\"item[textField]\">\n <span class=\"chips-text\">\n {{item[textField]}}\n </span>\n <span class=\"close-icon\" (click)=\"handleItemRemoveClick(item)\"\n *ngIf=\"(readonly!=true) && disabled!=true && (allowNull==true || (selectedItems.length > 1))\">\n <i class=\"far fa-times close\"></i>\n </span>\n </div>\n <div class=\"search-wrapper\" (click)=\"onTextBoxClick($event)\">\n <ax-text-box #textBoxSelectBox [textAlign]=\"textAlign\"\n [placeholder]=\"selectedItems.length == 0 ? placeholder : ''\" [readonly]=\"readonly\"\n [disabled]=\"disabled\" [size]=\"size\">\n </ax-text-box>\n </div>\n </div>\n </ng-container>\n <ng-container end>\n <ng-content select=\"[end]\">\n </ng-content>\n </ng-container>\n <ng-container panel>\n <div *ngIf=\"allowSearch\" class=\"search-wrapper\" style=\"padding: 0.7em;\">\n <ax-search-box #searchBox [(value)]=\"text\" size=\"sm\"\n (textChanged)=\"textChanged($event)\" (onButtonClick)=\"textChanged($event)\">\n </ax-search-box>\n </div>\n <div class=\"ax list-container\">\n <div #listContainer style=\"max-height: 300px;overflow-y: auto;width: 100%;\" (scroll)=\"scrolled($event)\">\n <ng-container *ngIf=\"getItems().length>0; then thenTemplate; else elseTemplate\"></ng-container>\n <ng-template #thenTemplate>\n <div class=\"list-item\" *ngFor=\"let item of getItems();let i = index\"\n [class.focused]=\"i==currentfocusedIndex\" (click)=\"handleItemClick($event,item)\"\n [class.selected]=\"isItemSelected(item)\">\n <div>\n <div>\n <ax-check-box *ngIf=\"selectionMode !== 'single'\" [size]=\"size\" [value]=\"isItemSelected(item)\"\n [disabled]=\"!allowNull && selectedItems.length === 1 && isItemSelected(item)\"\n (onClick)=\"handleItemClick($event,item)\">\n </ax-check-box>\n </div>\n <div style=\"white-space: nowrap;text-overflow: ellipsis;overflow: hidden;\"\n [title]=\"item[textField]\"\n [ngStyle]=\"(selectionMode !== 'single') ? {'padding-inline-start': '2em'}:''\">\n {{ item[textField] }}\n </div>\n </div>\n </div>\n </ng-template>\n <div *ngIf=\"showLoading\" class=\"ax-pad-sm\" style=\"text-align: center;\">\n <i class=\"far fa-spinner-third fa-pulse fa-2x\" style=\"color: var(--ax-primary-color);\"></i>\n </div>\n <ng-template #elseTemplate>\n <ng-container *ngIf=\"showLoading == true; then searchTemplate else noDataTemplate\"></ng-container>\n <ng-template #searchTemplate>\n <div class=\"list-item\">\n {{'common.searching' | trans}}\n </div>\n </ng-template>\n <ng-template #noDataTemplate>\n <div class=\"list-item\">\n {{'common.noDataFound' | trans}}\n </div>\n </ng-template>\n </ng-template>\n </div>\n </div>\n </ng-container>\n</ax-drop-down>" }]
498
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { span: [{
499
+ type: ViewChild,
500
+ args: [AXTextBoxComponent, { static: true }]
501
+ }], textbox: [{
502
+ type: ViewChild,
503
+ args: [AXTextBoxComponent, { static: true }]
504
+ }], listContainer: [{
505
+ type: ViewChild,
506
+ args: ['listContainer', { static: true }]
507
+ }], searchBox: [{
508
+ type: ViewChild,
509
+ args: ['searchBox', { static: false }]
510
+ }], textBoxSelectBox: [{
511
+ type: ViewChild,
512
+ args: ['textBoxSelectBox', { static: true }]
513
+ }], _contentDataSource: [{
514
+ type: ContentChild,
515
+ args: [AXDataSourceComponent, { static: true }]
516
+ }], _contentValidation: [{
517
+ type: ContentChild,
518
+ args: [AXValidation, { static: true }]
519
+ }], dropdown: [{
520
+ type: ViewChild,
521
+ args: ['d', { static: true }]
522
+ }], showDropDownButton: [{
523
+ type: Input
524
+ }], readonly: [{
525
+ type: Input
526
+ }], rtl: [{
527
+ type: Input
528
+ }], disabled: [{
529
+ type: Input
530
+ }], placeholder: [{
531
+ type: Input
532
+ }], size: [{
533
+ type: Input
534
+ }], allowNull: [{
535
+ type: Input
536
+ }], textAlign: [{
537
+ type: Input
538
+ }], bufferSize: [{
539
+ type: Input
540
+ }], remoteOperation: [{
541
+ type: Input
542
+ }], allowSearch: [{
543
+ type: Input
544
+ }], textField: [{
545
+ type: Input
546
+ }], valueField: [{
547
+ type: Input
548
+ }], selectionMode: [{
549
+ type: Input
550
+ }], selectionDataMode: [{
551
+ type: Input
552
+ }], dataSource: [{
553
+ type: Input
554
+ }], validation: [{
555
+ type: Input
556
+ }], value: [{
557
+ type: Input
558
+ }], items: [{
559
+ type: Input
560
+ }], itemsChange: [{
561
+ type: Output
562
+ }], onBlur: [{
563
+ type: Output
564
+ }], onFocus: [{
565
+ type: Output
566
+ }], valueChange: [{
567
+ type: Output
568
+ }], onValueChanged: [{
569
+ type: Output
570
+ }], handleKeyDown: [{
571
+ type: HostListener,
572
+ args: ['document:keydown', ['$event']]
573
+ }] } });
574
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0Ym94Mi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL3NlbGVjdGJveC9zZWxlY3Rib3gyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL3NyYy9saWIvc2VsZWN0Ym94L3NlbGVjdGJveDIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLEtBQUssRUFDTCxZQUFZLEVBQ1osTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBK0Qsc0JBQXNCLEVBQXdCLE1BQU0sdUJBQXVCLENBQUM7QUFDbEosT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRWxFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7O0FBR3BELE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxZQUF5QjtJQUEzRTs7UUFHSSxnQkFBVyxHQUFZLEtBQUssQ0FBQztJQUdqQyxDQUFDO0NBQUE7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LEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBY0ssVUFBVTtzQkFEcEIsS0FBSztnQkFVSyxVQUFVO3NCQURwQixLQUFLO2dCQWVLLEtBQUs7c0JBRGYsS0FBSztnQkFtQ0ssS0FBSztzQkFEZixLQUFLO2dCQWFOLFdBQVc7c0JBRFYsTUFBTTtnQkFJUCxNQUFNO3NCQURMLE1BQU07Z0JBSVAsT0FBTztzQkFETixNQUFNO2dCQUlBLFdBQVc7c0JBRGpCLE1BQU07Z0JBSUEsY0FBYztzQkFEcEIsTUFBTTtnQkF1UFAsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgSW5wdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgTmdab25lLFxuICAgIEhvc3RMaXN0ZW5lclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYVGV4dEJveENvbXBvbmVudCB9IGZyb20gJy4uL3RleHRib3gvdGV4dGJveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWEJhc2VTaXphYmxlQ29tcG9uZW50LCBBWEJhc2VJbnB1dENvbXBvbmVudCwgQVhFbGVtZW50U2l6ZSwgQVhWYWxpZGF0YWJsZUNvbXBvbmVudCwgQVhCYXNlVmFsdWVDb21wb25lbnQgfSBmcm9tICcuLi9iYXNlL2VsZW1lbnQuY2xhc3MnO1xuaW1wb3J0IHsgQVhEYXRhU291cmNlQ29tcG9uZW50IH0gZnJvbSAnLi4vZGF0YS1zb3VyY2UvZGF0YXNvdXJjZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhWYWxpZGF0aW9uIH0gZnJvbSAnLi4vdmFsaWRhdGlvbi92YWxpZGF0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWERhdGFTb3VyY2VSZWFkUGFyYW1zIH0gZnJvbSAnLi4vZGF0YS1zb3VyY2UvcmVhZC1wYXJhbSc7XG5pbXBvcnQgeyBBWFNlYXJjaEJveENvbXBvbmVudCB9IGZyb20gJy4uL3NlYXJjaGJveC9zZWFyY2hib3guY29tcG9uZW50JztcbmltcG9ydCB7IEFYQ29uZmlnLCBBWE9iamVjdFV0aWwsIEFYVHJhbnNsYXRvciB9IGZyb20gJ0BhY29yZXgvY29yZSc7XG5pbXBvcnQgeyBBWFZhbHVlRXZlbnQgfSBmcm9tICcuLi9iYXNlL2V2ZW50cy5jbGFzcyc7XG5cblxuZXhwb3J0IGNsYXNzIEFYU2VsZWN0Qm94VmFsdWVDaGFuZ2VkRXZlbnQgZXh0ZW5kcyBBWFZhbHVlRXZlbnQ8YW55IHwgYW55W10+IHtcbiAgICB2YWx1ZT86IGFueTtcbiAgICBvbGRWYWx1ZT86IGFueTtcbiAgICBpc1VzZXJJbnB1dDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHNlbGVjdGVkS2V5cz86IGFueVtdO1xuICAgIHNlbGVjdGVkSXRlbXM/OiBhbnlbXTtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdheC1zZWxlY3QtYm94MicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdGJveDIuY29tcG9uZW50Lmh0bWwnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDogeyBzdHlsZTond2lkdGg6IDEwMCUnIH0sXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBBWFZhbGlkYXRhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhTZWxlY3RCb3gyQ29tcG9uZW50IH1dXG59KVxuZXhwb3J0IGNsYXNzIEFYU2VsZWN0Qm94MkNvbXBvbmVudCBleHRlbmRzIEFYVmFsaWRhdGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBBWEJhc2VTaXphYmxlQ29tcG9uZW50LCBBWEJhc2VJbnB1dENvbXBvbmVudCwgQVhCYXNlVmFsdWVDb21wb25lbnQ8YW55PntcblxuICAgIEBWaWV3Q2hpbGQoQVhUZXh0Qm94Q29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHNwYW46IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgQFZpZXdDaGlsZChBWFRleHRCb3hDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgdGV4dGJveDogQVhUZXh0Qm94Q29tcG9uZW50O1xuXG4gICAgQFZpZXdDaGlsZCgnbGlzdENvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgbGlzdENvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgICBAVmlld0NoaWxkKCdzZWFyY2hCb3gnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBzZWFyY2hCb3g6IEFYU2VhcmNoQm94Q29tcG9uZW50O1xuXG4gICAgQFZpZXdDaGlsZCgndGV4dEJveFNlbGVjdEJveCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgdGV4dEJveFNlbGVjdEJveDogQVhUZXh0Qm94Q29tcG9uZW50O1xuXG4gICAgQENvbnRlbnRDaGlsZChBWERhdGFTb3VyY2VDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHJpdmF0ZSBfY29udGVudERhdGFTb3VyY2U6IEFYRGF0YVNvdXJjZUNvbXBvbmVudDtcblxuICAgIEBDb250ZW50Q2hpbGQoQVhWYWxpZGF0aW9uLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHByaXZhdGUgX2NvbnRlbnRWYWxpZGF0aW9uOiBBWFZhbGlkYXRpb247XG5cbiAgICBAVmlld0NoaWxkKCdkJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBkcm9wZG93bjogQVhEcm9wZG93bkNvbXBvbmVudDtcblxuXG4gICAgQElucHV0KCkgc2hvd0Ryb3BEb3duQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHJ0bDogYm9vbGVhbiA9IEFYQ29uZmlnLmdldCgnbGF5b3V0LnJ0bCcpO1xuICAgIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gICAgQElucHV0KCkgc2l6ZTogQVhFbGVtZW50U2l6ZSA9ICdtZCc7XG4gICAgQElucHV0KCkgYWxsb3dOdWxsOiBib29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoKSB0ZXh0QWxpZ246ICdyaWdodCcgfCAnbGVmdCcgfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSBidWZmZXJTaXplOiBudW1iZXIgPSAxMDtcbiAgICBASW5wdXQoKSByZW1vdGVPcGVyYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBhbGxvd1NlYXJjaDogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgdGV4dEZpZWxkOiBzdHJpbmcgPSAndGV4dCc7XG4gICAgQElucHV0KCkgdmFsdWVGaWVsZDogc3RyaW5nID0gJ3ZhbHVlJztcbiAgICBASW5wdXQoKSBzZWxlY3Rpb25Nb2RlOiAnc2luZ2xlJyB8ICdtdWx0aXBsZScgPSAnc2luZ2xlJztcbiAgICBASW5wdXQoKSBzZWxlY3Rpb25EYXRhTW9kZTogJ3ZhbHVlJyB8ICdpdGVtJyA9ICd2YWx1ZSc7XG5cbiAgICBjdXJyZW50Zm9jdXNlZEluZGV4OiBudW1iZXIgPSAtMTtcbiAgICBzaG93TG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHNraXA6IG51bWJlciA9IC0xO1xuICAgIHNlYXJjaFRleHQ6IHN0cmluZyA9ICcnO1xuICAgIHRleHQ6IHN0cmluZyA9ICcnO1xuICAgIHRvdGFsQ291bnQ6IG51bWJlciA9IDA7XG4gICAgaXRlbXNGaWx0ZXJlZDogYW55W10gPSBbXTtcblxuICAgIHByaXZhdGUgaXNVc2VySW5wdXQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHByaXZhdGUgX2RhdGFTb3VyY2U6IEFYRGF0YVNvdXJjZUNvbXBvbmVudDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgZGF0YVNvdXJjZSgpOiBBWERhdGFTb3VyY2VDb21wb25lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZSA/IHRoaXMuX2RhdGFTb3VyY2UgOiB0aGlzLl9jb250ZW50RGF0YVNvdXJjZTtcbiAgICB9XG4gICAgcHVibGljIHNldCBkYXRhU291cmNlKHY6IEFYRGF0YVNvdXJjZUNvbXBvbmVudCkge1xuICAgICAgICB0aGlzLl9kYXRhU291cmNlID0gdjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF92YWxpZGF0aW9uOiBBWFZhbGlkYXRpb247XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHZhbGlkYXRpb24oKTogQVhWYWxpZGF0aW9uIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRpb24gPyB0aGlzLl92YWxpZGF0aW9uIDogdGhpcy5fY29udGVudFZhbGlkYXRpb247XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgdmFsaWRhdGlvbih2OiBBWFZhbGlkYXRpb24pIHtcbiAgICAgICAgdGhpcy5fdmFsaWRhdGlvbiA9IHY7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSB6b25lOiBOZ1pvbmUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cblxuICAgIHByaXZhdGUgX3ZhbHVlOiBhbnkgfCBhbnlbXTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgdmFsdWUoKTogYW55IHwgYW55W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgdmFsdWUodjogYW55IHwgYW55W10pIHtcbiAgICAgICAgaWYgKHYgIT09IHRoaXMuX3ZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCBvbGRWYWx1ZSA9IEFYT2JqZWN0VXRpbC5kZWVwSlNPTkNsb25lKHRoaXMuX3ZhbHVlKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdtdWx0aXBsZScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IEFycmF5LmlzQXJyYXkodikgPyB2IDogKHYgPyBbdl0gOiBbXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gQXJyYXkuaXNBcnJheSh2KSA/IHZbMF0gOiB2O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuX3ZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZWQuZW1pdCh7XG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgICAgICAgICAgIGh0bWxFbGVtZW50OiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgIGlzVXNlcklucHV0OiB0aGlzLmlzVXNlcklucHV0LFxuICAgICAgICAgICAgICAgIG9sZFZhbHVlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLl92YWx1ZSxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEtleXM6IHRoaXMuc2VsZWN0ZWRJdGVtcy5tYXAoYyA9PiBjW3RoaXMudmFsdWVGaWVsZF0pLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM6IHRoaXMuc2VsZWN0ZWRJdGVtcy5zbGljZSgpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuaXNVc2VySW5wdXQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyU2VsZWN0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIHByaXZhdGUgX3NlbGVjdGVkSXRlbXM6IGFueVtdO1xuICAgIHB1YmxpYyBnZXQgc2VsZWN0ZWRJdGVtcygpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEl0ZW1zIHx8IFtdO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2l0ZW1zOiBhbnlbXSA9IFtdO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBpdGVtcygpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtcztcbiAgICB9XG4gICAgcHVibGljIHNldCBpdGVtcyh2OiBhbnlbXSkge1xuICAgICAgICB0aGlzLl9pdGVtcyA9IHY7XG4gICAgICAgIGlmICh0aGlzLml0ZW1zQ2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLml0ZW1zQ2hhbmdlLmVtaXQodik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZW5kZXJTZWxlY3Rpb24oKTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KClcbiAgICBpdGVtc0NoYW5nZTogRXZlbnRFbWl0dGVyPGFueVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBvbkJsdXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBvbkZvY3VzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uVmFsdWVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8QVhTZWxlY3RCb3hWYWx1ZUNoYW5nZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYU2VsZWN0Qm94VmFsdWVDaGFuZ2VkRXZlbnQ+KCk7XG5cblxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnJ0bCA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnJ0bCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2RpcmVjdGlvbicpID09PSAncnRsJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNjcm9sbGVkKGUpIHtcbiAgICAgICAgaWYgKHRoaXMucmVtb3RlT3BlcmF0aW9uICYmIHRoaXMudG90YWxDb3VudCA+IHRoaXMuaXRlbXMubGVuZ3RoICYmIHRoaXMubGlzdENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodCAhPSAwXG4gICAgICAgICAgICAmJiB0aGlzLmxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgLSB0aGlzLmxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgLSAzMDAgPCA1MCkge1xuICAgICAgICAgICAgdGhpcy5zaG93TG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnNraXAgIT09IHRoaXMuaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5za2lwID0gdGhpcy5pdGVtcy5sZW5ndGg7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXM6IEFYRGF0YVNvdXJjZVJlYWRQYXJhbXMgPSB7fTtcbiAgICAgICAgICAgICAgICBwYXJhbXMuc2tpcCA9IHRoaXMuaXRlbXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHBhcmFtcy50YWtlID0gdGhpcy5idWZmZXJTaXplICogKE1hdGguZmxvb3IodGhpcy5pdGVtcy5sZW5ndGggLyB0aGlzLmJ1ZmZlclNpemUpICsgMSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGV4dGJveCkge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXMuc2VhcmNoVGV4dCA9IHRoaXMudGV4dDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXMuc2VhcmNoVGV4dCA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2gocGFyYW1zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRleHRDaGFuZ2VkKGUpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4ID0gLTE7XG4gICAgICAgIGlmICh0aGlzLnJlbW90ZU9wZXJhdGlvbikge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gdGhpcy50ZXh0O1xuICAgICAgICAgICAgdGhpcy5pdGVtcyA9IFtdO1xuICAgICAgICAgICAgY29uc3QgcGFyYW1zOiBBWERhdGFTb3VyY2VSZWFkUGFyYW1zID0ge307XG4gICAgICAgICAgICBwYXJhbXMuc2VhcmNoVGV4dCA9IHRoaXMudGV4dDtcbiAgICAgICAgICAgIHBhcmFtcy5za2lwID0gMDtcbiAgICAgICAgICAgIHBhcmFtcy50YWtlID0gdGhpcy5idWZmZXJTaXplO1xuICAgICAgICAgICAgdGhpcy5mZXRjaChwYXJhbXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW5kZXJTZWxlY3Rpb24oKSB7XG4gICAgICAgIGNvbnN0IGZ1bmMgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKHRoaXMuaXRlbXM/Lmxlbmd0aCA+IDApICYmIHRoaXMuc2VsZWN0aW9uRGF0YU1vZGUgPT0gJ3ZhbHVlJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yZ1JlcyA9IHRoaXMuaXRlbXMuZmlsdGVyKGkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUuc29tZShpaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpaSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlbdGhpcy52YWx1ZUZpZWxkXSA9PT0gaWlbdGhpcy52YWx1ZUZpZWxkXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpW3RoaXMudmFsdWVGaWVsZF0gPT09IGlpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpW3RoaXMudmFsdWVGaWVsZF0gPT09IHRoaXMudmFsdWVbdGhpcy52YWx1ZUZpZWxkXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpW3RoaXMudmFsdWVGaWVsZF0gPT09IHRoaXMudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAob3JnUmVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9yZ1JlcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlLm1hcChpaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaWkgPT09ICdvYmplY3QnICYmIGlpW3RoaXMudGV4dEZpZWxkXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmFrZTogYW55ID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICBmYWtlW3RoaXMudmFsdWVGaWVsZF0gPSB0aGlzLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgZmFrZVt0aGlzLnRleHRGaWVsZF0gPSBBWFRyYW5zbGF0b3IuZ2V0KCdjb21tb24ubG9hZGluZycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZha2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZSA9PT0gJ29iamVjdCcgJiYgdGhpcy52YWx1ZVt0aGlzLnRleHRGaWVsZF0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFt0aGlzLnZhbHVlXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZha2U6IGFueSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICBmYWtlW3RoaXMudmFsdWVGaWVsZF0gPSB0aGlzLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBmYWtlW3RoaXMudGV4dEZpZWxkXSA9IEFYVHJhbnNsYXRvci5nZXQoJ2NvbW1vbi5sb2FkaW5nJyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbZmFrZV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zID0gZnVuYygpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmJ1ZmZlclNpemUgPCAxMCkge1xuICAgICAgICAgICAgdGhpcy5idWZmZXJTaXplID0gMTA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnJlbW90ZU9wZXJhdGlvbikge1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkcm9wZG93blRvZ2dsZShlKSB7XG4gICAgICAgIGlmICh0aGlzLmRyb3Bkb3duLmlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4ID0gdGhpcy5nZXRJdGVtcygpLmluZGV4T2YodGhpcy5zZWxlY3RlZEl0ZW1zW3RoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggLSAxXSk7XG4gICAgICAgICAgICB0aGlzLmZvY3VzT25TZWFyY2hCb3goKTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNPbkN1cnJlbnRGb2N1c2VkSW5kZXgoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy5pbml0VmFsaWRhdGlvbih0aGlzLnJlZiwgJ3ZhbHVlJywgdGhpcy52YWxpZGF0aW9uKTtcbiAgICAgICAgaWYgKHRoaXMuZGF0YVNvdXJjZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuYWxsb3dTZWFyY2ggPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mZXRjaCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLm9uRGF0YVJlY2VpdmVkLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFSZWNlaXZlZChjLmRhdGEucmVzdWx0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkYXRhUmVjZWl2ZWQoZGF0YTogYW55KSB7XG4gICAgICAgIGlmICh0aGlzLnJlbW90ZU9wZXJhdGlvbikge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoVGV4dCAmJiB0aGlzLnNlYXJjaFRleHQgIT0gbnVsbCAmJiB0aGlzLnNlYXJjaFRleHQgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGEudG90YWxDb3VudCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1zID0gZGF0YS5pdGVtcztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b3RhbENvdW50ID0gZGF0YS50b3RhbENvdW50O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMgPSBkYXRhLml0ZW1zO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvdGFsQ291bnQgPSBkYXRhLml0ZW1zID09IHVuZGVmaW5lZCA/IDAgOiBkYXRhLml0ZW1zLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXRlbXMgJiYgZGF0YS5pdGVtcy5sZW5ndGggPT09IGRhdGEudG90YWxDb3VudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMgPSBkYXRhLml0ZW1zO1xuICAgICAgICAgICAgICAgIHRoaXMudG90YWxDb3VudCA9IGRhdGEuaXRlbXMubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS50b3RhbENvdW50KSB7XG4gICAgICAgICAgICAgICAgZGF0YS5pdGVtcy5mb3JFYWNoKGVsbSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMucHVzaChlbG0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMudG90YWxDb3VudCA9IGRhdGEudG90YWxDb3VudDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGF0YS5mb3JFYWNoKGVsbSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMucHVzaChlbG0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMudG90YWxDb3VudCA9IGRhdGEubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pdGVtcyA9IGRhdGE7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZW5kZXJTZWxlY3Rpb24oKTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cblxuICAgIGZldGNoKHBhcmFtczogQVhEYXRhU291cmNlUmVhZFBhcmFtcyA9IHt9KSB7XG4gICAgICAgIGlmICh0aGlzLmRhdGFTb3VyY2UpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0xvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLmZldGNoKHBhcmFtcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWZyZXNoKCkge1xuICAgICAgICBjb25zdCBwYXJhbXM6IEFYRGF0YVNvdXJjZVJlYWRQYXJhbXMgPSB7fTtcbiAgICAgICAgaWYgKHRoaXMucmVtb3RlT3BlcmF0aW9uKSB7XG4gICAgICAgICAgICBwYXJhbXMuc2tpcCA9IDA7XG4gICAgICAgICAgICB0aGlzLnNraXAgPSAwO1xuICAgICAgICAgICAgcGFyYW1zLnRha2UgPSB0aGlzLmJ1ZmZlclNpemU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZGF0YVNvdXJjZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLml0ZW1zID0gW107XG4gICAgICAgICAgICB0aGlzLmZldGNoKHBhcmFtcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVJdGVtUmVtb3ZlQ2xpY2soaXRlbSkge1xuICAgICAgICB0aGlzLnRleHQgPSAnJztcbiAgICAgICAgdGhpcy5pc1VzZXJJbnB1dCA9IHRydWU7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS5maWx0ZXIoYyA9PiAodHlwZW9mIGMgPT09ICdvYmplY3QnKSA/IGNbdGhpcy52YWx1ZUZpZWxkXSAhPT0gaXRlbVt0aGlzLnZhbHVlRmllbGRdIDogYyAhPT0gaXRlbVt0aGlzLnZhbHVlRmllbGRdKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuXG5cbiAgICBvblRleHRCb3hDbGljayhlKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkID09PSBmYWxzZSAmJiB0aGlzLnJlYWRvbmx5ID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVJdGVtQ2xpY2soZTogTW91c2VFdmVudCwgaXRlbTogYW55KSB7XG4gICAgICAgIHRoaXMuaXNVc2VySW5wdXQgPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtcyhpdGVtKTtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpICYmIHRoaXMudmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlLnNvbWUoYyA9PiB0aGlzLmludGVybmFsR2V0SXRlbVZhbHVlKGMpID09PSB0aGlzLmludGVybmFsR2V0SXRlbVZhbHVlKGl0ZW0pKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVuc2VsZWN0SXRlbXMoaXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEl0ZW1zKGl0ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbXMoaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHRoaXMuZm9jdXNPblNlYXJjaEJveCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW50ZXJuYWxHZXRJdGVtQnlEYXRhTW9kZShpdGVtOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uRGF0YU1vZGUgPT09ICdpdGVtJyA/IGl0ZW0gOiBpdGVtW3RoaXMudmFsdWVGaWVsZF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbnRlcm5hbEdldEl0ZW1WYWx1ZShpdGVtOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyA/IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSA6IGl0ZW07XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlS2V5RG93bihlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmIChlLmtleSA9PT0gJ0VzY2FwZScgfHwgdGhpcy5kaXNhYmxlZCB8fCB0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXNMZXR0ZXIgPSBuZXcgUmVnRXhwKC9bYS16QS1aMC05XFwtXS8pLnRlc3QoU3RyaW5nLmZyb21DaGFyQ29kZShlLmtleUNvZGUpKTtcbiAgICAgICAgaWYgKHRoaXMudGV4dGJveC5pc0ZvY3VzZWQoKSkge1xuICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnQmFja3NwYWNlJyAmJiBlLnR5cGUgPT09ICdrZXlkb3duJyAmJlxuICAgICAgICAgICAgICAgICgodGhpcy5hbGxvd051bGwgPT09IHRydWUgJiYgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApIHx8XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmFsbG93TnVsbCA9PT0gZmFsc2UgJiYgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDEpKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNVc2VySW5wdXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMudW5zZWxlY3RJdGVtcyh0aGlzLnNlbGVjdGVkSXRlbXMucG9wKCkpO1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICgoZS5rZXkgPT09ICdBcnJvd0Rvd24nIHx8IGUua2V5ID09PSAnQXJyb3dVcCcpICYmIHRoaXMuZ2V0SXRlbXMoKS5sZW5ndGggPiAwICYmICF0aGlzLmRyb3Bkb3duLmlzT3BlbiAmJiBlLnR5cGUgPT09ICdrZXlkb3duJykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNVc2VySW5wdXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbUJ5SW5kZXgodGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4ICsgKGUua2V5ID09PSAnQXJyb3dEb3duJyA/IDEgOiAtMSkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZS5jdHJsS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpc0xldHRlcikge1xuICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IGUua2V5O1xuICAgICAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZHJvcGRvd24uaXNPcGVuKSB7XG4gICAgICAgICAgICBpZiAoKGUua2V5ID09PSAnQXJyb3dEb3duJyB8fCBlLmtleSA9PT0gJ0Fycm93VXAnKSAmJiB0aGlzLmdldEl0ZW1zKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNVc2VySW5wdXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbUJ5TmF2KChlLmtleSA9PT0gJ0Fycm93RG93bicgPyAxIDogLTEpKTtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKChlLmtleSA9PT0gJ0VudGVyJyB8fCBlLmNvZGUgPT09ICdTcGFjZScpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9jdXNlZEl0ZW0gPSB0aGlzLmdldEl0ZW1zKClbdGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4XTtcbiAgICAgICAgICAgICAgICBpZiAoZm9jdXNlZEl0ZW0pIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1VzZXJJbnB1dCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEl0ZW1zKGZvY3VzZWRJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNVc2VySW5wdXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVTZWxlY3QoZm9jdXNlZEl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1bnNlbGVjdEl0ZW1zKC4uLml0ZW1zOiBhbnlbXSkge1xuICAgICAgICBpZiAoIWl0ZW1zIHx8IGl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUuZmlsdGVyKGMgPT4gIWl0ZW1zLnNvbWUoZCA9PlxuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxHZXRJdGVtVmFsdWUoYykgPT09IHRoaXMuaW50ZXJuYWxHZXRJdGVtVmFsdWUoZCkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgc2VsZWN0SXRlbXMoLi4uaXRlbXM6IGFueVtdKSB7XG4gICAgICAgIGlmIChpdGVtcyAmJiBpdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuaW50ZXJuYWxHZXRJdGVtQnlEYXRhTW9kZShpdGVtc1swXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gKHRoaXMudmFsdWUgfHwgW10pLmNvbmNhdChpdGVtcy5tYXAoYyA9PiB0aGlzLmludGVybmFsR2V0SXRlbUJ5RGF0YU1vZGUoYykpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgdG9nZ2xlU2VsZWN0KC4uLml0ZW1zOiBhbnlbXSkge1xuICAgICAgICBpZiAoaXRlbXMgJiYgaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBpdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5pbmNsdWRlcyhpdGVtKSA/IHRoaXMudW5zZWxlY3RJdGVtcyhpdGVtKSA6IHRoaXMuc2VsZWN0SXRlbXMoaXRlbSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgY2xvc2UoKSB7XG4gICAgICAgIHRoaXMuZHJvcGRvd24uY2xvc2UoKTtcbiAgICB9XG5cbiAgICBvcGVuKCkge1xuICAgICAgICB0aGlzLmRyb3Bkb3duLm9wZW4oKTtcbiAgICB9XG5cbiAgICBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50ZXh0ID0gbnVsbDtcbiAgICAgICAgdGhpcy50ZXh0Ym94LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb2N1c09uU2VhcmNoQm94KCkge1xuICAgICAgICBjb25zdCBpbnB1dGVkVmFsID0gdGhpcy50ZXh0O1xuICAgICAgICBpZiAodGhpcy5hbGxvd1NlYXJjaCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoQm94KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoQm94LnZhbHVlID0gaW5wdXRlZFZhbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hCb3guZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudGV4dGJveC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0SXRlbXMoKTogYW55W10ge1xuICAgICAgICBpZiAodGhpcy5pdGVtcyA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICghdGhpcy5yZW1vdGVPcGVyYXRpb24gJiYgdGhpcy50ZXh0ICYmIHRoaXMudGV4dCAhPT0gJycpID8gdGhpcy5pdGVtcy5maWx0ZXIoKGMpID0+XG4gICAgICAgICAgICAoY1t0aGlzLnRleHRGaWVsZF0gYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMudGV4dC50b0xvd2VyQ2FzZSgpKSkgOiB0aGlzLml0ZW1zO1xuICAgIH1cblxuICAgIGlzSXRlbVNlbGVjdGVkKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zLnNvbWUoYyA9PiBjW3RoaXMudmFsdWVGaWVsZF0gPT09IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWxlY3RJdGVtQnlOYXYoc2lnbjogLTEgfCAxIHwgbnVsbCA9IG51bGwpOiB2b2lkIHtcbiAgICAgICAgaWYgKHNpZ24gPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4ID0gdGhpcy5nZXRJdGVtcygpLmluZGV4T2YodGhpcy5zZWxlY3RlZEl0ZW1zW3RoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggLSAxXSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzaWduID09PSAtMSA/IHRoaXMuY3VycmVudGZvY3VzZWRJbmRleC0tIDogdGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4Kys7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY3VycmVudGZvY3VzZWRJbmRleCA8IDApIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudGZvY3VzZWRJbmRleCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY3VycmVudGZvY3VzZWRJbmRleCA+IHRoaXMuZ2V0SXRlbXMoKS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXggPSB0aGlzLmdldEl0ZW1zKCkubGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHNldCBzY3JvbGxcbiAgICAgICAgdGhpcy5mb2N1c09uQ3VycmVudEZvY3VzZWRJbmRleCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNPbkN1cnJlbnRGb2N1c2VkSW5kZXgoKSB7XG4gICAgICAgIGlmICh0aGlzLmxpc3RDb250YWluZXIpIHtcbiAgICAgICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbURpdiA9IHRoaXMubGlzdENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYC5saXN0LWl0ZW06bnRoLWNoaWxkKCR7dGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4fSlgKTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbURpdikge1xuICAgICAgICAgICAgICAgICAgICBpdGVtRGl2LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdhdXRvJyB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlbGVjdGVkSXRlbUJ5SW5kZXgoaW5kZXg6IG51bWJlcikge1xuICAgICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgICAgICBpbmRleCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluZGV4ID4gdGhpcy5nZXRJdGVtcygpLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIGluZGV4ID0gdGhpcy5nZXRJdGVtcygpLmxlbmd0aCAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RJdGVtcyh0aGlzLmdldEl0ZW1zKClbaW5kZXhdKTtcbiAgICAgICAgdGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4ID0gaW5kZXg7XG4gICAgfVxufVxuIiwiPGF4LWRyb3AtZG93biBbc2l6ZV09XCJzaXplXCIgW3J0bF09XCJydGxcIiBbc2hvd0Ryb3BEb3duQnV0dG9uXT1cInNob3dEcm9wRG93bkJ1dHRvblwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgI2QgKGRyb3Bkb3duVG9nZ2xlKT1cImRyb3Bkb3duVG9nZ2xlKCRldmVudClcIiBbbG9hZGluZ109XCJzaG93TG9hZGluZ1wiPlxuICAgIDxuZy1jb250YWluZXIgc3RhcnQ+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzdGFydF1cIj5cbiAgICAgICAgPC9uZy1jb250ZW50PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgaGVhZGVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXggY2hpcHMtY29udGFpbmVyXCIgW2hvcml6b250YWxTY3JvbGxdPVwiNDBcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRJdGVtc1wiIGNsYXNzPVwiY2hpcHNcIiBbY2xhc3MuY2hpcHMtYmxhbmtdPVwic2VsZWN0aW9uTW9kZSA9PT0gJ3NpbmdsZSdcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtW3RleHRGaWVsZF1cIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBzLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAge3tpdGVtW3RleHRGaWVsZF19fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNsb3NlLWljb25cIiAoY2xpY2spPVwiaGFuZGxlSXRlbVJlbW92ZUNsaWNrKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIocmVhZG9ubHkhPXRydWUpICYmIGRpc2FibGVkIT10cnVlICYmIChhbGxvd051bGw9PXRydWUgfHwgKHNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMSkpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLXRpbWVzIGNsb3NlXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC13cmFwcGVyXCIgKGNsaWNrKT1cIm9uVGV4dEJveENsaWNrKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8YXgtdGV4dC1ib3ggI3RleHRCb3hTZWxlY3RCb3ggW3RleHRBbGlnbl09XCJ0ZXh0QWxpZ25cIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMCA/IHBsYWNlaG9sZGVyIDogJydcIiBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiAgW3NpemVdPVwic2l6ZVwiPlxuICAgICAgICAgICAgICAgIDwvYXgtdGV4dC1ib3g+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciBlbmQ+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltlbmRdXCI+XG4gICAgICAgIDwvbmctY29udGVudD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyIHBhbmVsPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYWxsb3dTZWFyY2hcIiBjbGFzcz1cInNlYXJjaC13cmFwcGVyXCIgc3R5bGU9XCJwYWRkaW5nOiAwLjdlbTtcIj5cbiAgICAgICAgICAgIDxheC1zZWFyY2gtYm94ICNzZWFyY2hCb3ggWyh2YWx1ZSldPVwidGV4dFwiIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgICAgKHRleHRDaGFuZ2VkKT1cInRleHRDaGFuZ2VkKCRldmVudClcIiAob25CdXR0b25DbGljayk9XCJ0ZXh0Q2hhbmdlZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8L2F4LXNlYXJjaC1ib3g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXggbGlzdC1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXYgI2xpc3RDb250YWluZXIgc3R5bGU9XCJtYXgtaGVpZ2h0OiAzMDBweDtvdmVyZmxvdy15OiBhdXRvO3dpZHRoOiAxMDAlO1wiIChzY3JvbGwpPVwic2Nyb2xsZWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRJdGVtcygpLmxlbmd0aD4wOyB0aGVuIHRoZW5UZW1wbGF0ZTsgZWxzZSBlbHNlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3RoZW5UZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtaXRlbVwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdldEl0ZW1zKCk7bGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZm9jdXNlZF09XCJpPT1jdXJyZW50Zm9jdXNlZEluZGV4XCIgKGNsaWNrKT1cImhhbmRsZUl0ZW1DbGljaygkZXZlbnQsaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImlzSXRlbVNlbGVjdGVkKGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1jaGVjay1ib3ggKm5nSWY9XCJzZWxlY3Rpb25Nb2RlICE9PSAnc2luZ2xlJ1wiIFtzaXplXT1cInNpemVcIiBbdmFsdWVdPVwiaXNJdGVtU2VsZWN0ZWQoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFhbGxvd051bGwgJiYgc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT09IDEgJiYgaXNJdGVtU2VsZWN0ZWQoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlSXRlbUNsaWNrKCRldmVudCxpdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F4LWNoZWNrLWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcDt0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztvdmVyZmxvdzogaGlkZGVuO1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtW3RleHRGaWVsZF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCIoc2VsZWN0aW9uTW9kZSAhPT0gJ3NpbmdsZScpID8geydwYWRkaW5nLWlubGluZS1zdGFydCc6ICcyZW0nfTonJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtW3RleHRGaWVsZF0gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93TG9hZGluZ1wiIGNsYXNzPVwiYXgtcGFkLXNtXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLXNwaW5uZXItdGhpcmQgZmEtcHVsc2UgZmEtMnhcIiBzdHlsZT1cImNvbG9yOiB2YXIoLS1heC1wcmltYXJ5LWNvbG9yKTtcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNlbHNlVGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93TG9hZGluZyA9PSB0cnVlOyB0aGVuIHNlYXJjaFRlbXBsYXRlIGVsc2Ugbm9EYXRhVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzZWFyY2hUZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydjb21tb24uc2VhcmNoaW5nJyB8IHRyYW5zfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vRGF0YVRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J2NvbW1vbi5ub0RhdGFGb3VuZCcgfCB0cmFuc319XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9heC1kcm9wLWRvd24+Il19