@acorex/components 4.1.4 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (599) hide show
  1. package/karma.conf.js +32 -0
  2. package/ng-package.json +10 -0
  3. package/package.json +13 -33
  4. package/src/lib/accordion/accordion.component.ts +43 -0
  5. package/src/lib/accordion/accordion.module.ts +11 -0
  6. package/src/lib/accordion/api.ts +2 -0
  7. package/src/lib/base/base-page.class.ts +115 -0
  8. package/src/lib/base/element.class.ts +344 -0
  9. package/src/lib/base/events.class.ts +32 -0
  10. package/src/lib/button/button.component.html +17 -0
  11. package/src/lib/button/button.component.ts +72 -0
  12. package/src/lib/button/button.module.ts +14 -0
  13. package/src/lib/calendar/calendar-box/calendar-box.component.html +68 -0
  14. package/src/lib/calendar/calendar-box/calendar-box.component.ts +461 -0
  15. package/src/lib/calendar/calendar-box/calendar-box.module.ts +16 -0
  16. package/src/lib/calendar/scheduler/scheduler-views.property.ts +38 -0
  17. package/{lib/calendar/scheduler/scheduler.class.d.ts → src/lib/calendar/scheduler/scheduler.class.ts} +20 -6
  18. package/src/lib/calendar/scheduler/scheduler.component.html +9 -0
  19. package/src/lib/calendar/scheduler/scheduler.component.scss +181 -0
  20. package/src/lib/calendar/scheduler/scheduler.component.ts +249 -0
  21. package/src/lib/calendar/scheduler/scheduler.module.ts +45 -0
  22. package/src/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.ts +133 -0
  23. package/src/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.ts +33 -0
  24. package/src/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.html +43 -0
  25. package/src/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.scss +66 -0
  26. package/src/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.ts +50 -0
  27. package/src/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.html +45 -0
  28. package/src/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.scss +19 -0
  29. package/src/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.ts +103 -0
  30. package/src/lib/calendar/scheduler/views/month/scheduler-month-view.component.html +39 -0
  31. package/src/lib/calendar/scheduler/views/month/scheduler-month-view.component.scss +55 -0
  32. package/src/lib/calendar/scheduler/views/month/scheduler-month-view.component.ts +233 -0
  33. package/src/lib/calendar/scheduler/views/scheduler-view.component.ts +124 -0
  34. package/src/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.html +50 -0
  35. package/src/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.scss +4 -0
  36. package/src/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.ts +92 -0
  37. package/src/lib/checkbox/checkbox.component.html +22 -0
  38. package/src/lib/checkbox/checkbox.component.ts +106 -0
  39. package/src/lib/checkbox/checkbox.module.ts +11 -0
  40. package/src/lib/color-picker/color-box/color-box.component.html +37 -0
  41. package/src/lib/color-picker/color-box/color-box.component.scss +60 -0
  42. package/src/lib/color-picker/color-box/color-box.component.ts +438 -0
  43. package/src/lib/color-picker/color-picker.component.html +31 -0
  44. package/src/lib/color-picker/color-picker.component.ts +87 -0
  45. package/src/lib/color-picker/color-picker.module.ts +16 -0
  46. package/src/lib/context-menu/context-menu.component.html +42 -0
  47. package/src/lib/context-menu/context-menu.component.ts +78 -0
  48. package/src/lib/context-menu/context-menu.directive.ts +159 -0
  49. package/src/lib/context-menu/context-menu.module.ts +15 -0
  50. package/src/lib/data-filter/columns/filter-column-date.component.ts +123 -0
  51. package/src/lib/data-filter/columns/filter-column-number.component.ts +100 -0
  52. package/src/lib/data-filter/columns/filter-column-selection.component.ts +69 -0
  53. package/src/lib/data-filter/columns/filter-column-string.component.ts +100 -0
  54. package/src/lib/data-filter/filter-panel/filter-panel.component.html +120 -0
  55. package/src/lib/data-filter/filter-panel/filter-panel.component.scss +143 -0
  56. package/src/lib/data-filter/filter-panel/filter-panel.component.ts +266 -0
  57. package/src/lib/data-filter/filter.class.ts +73 -0
  58. package/src/lib/data-filter/filter.module.ts +52 -0
  59. package/src/lib/data-filter/toolbar/filter-toolbar.component.html +5 -0
  60. package/src/lib/data-filter/toolbar/filter-toolbar.component.scss +17 -0
  61. package/src/lib/data-filter/toolbar/filter-toolbar.component.ts +179 -0
  62. package/src/lib/data-list/core/data-list.component.ts +62 -0
  63. package/src/lib/data-list/list/list.component.html +32 -0
  64. package/src/lib/data-list/list/list.component.scss +64 -0
  65. package/src/lib/data-list/list/list.component.ts +149 -0
  66. package/src/lib/data-list/list/list.module.ts +14 -0
  67. package/src/lib/data-list/list/toolbar-list-view.component.ts +63 -0
  68. package/src/lib/data-source/datasource.component.ts +50 -0
  69. package/src/lib/data-source/datasource.module.ts +11 -0
  70. package/{lib/data-source/read-param.d.ts → src/lib/data-source/read-param.ts} +13 -3
  71. package/src/lib/date-picker/date-picker.component.html +30 -0
  72. package/src/lib/date-picker/date-picker.component.scss +5 -0
  73. package/src/lib/date-picker/date-picker.component.ts +723 -0
  74. package/src/lib/date-picker/date-picker.module.ts +17 -0
  75. package/src/lib/dialog/dialog.component.html +5 -0
  76. package/src/lib/dialog/dialog.component.scss +32 -0
  77. package/src/lib/dialog/dialog.component.ts +32 -0
  78. package/src/lib/dialog/dialog.module.ts +13 -0
  79. package/src/lib/dialog/dialog.service.ts +178 -0
  80. package/src/lib/drawer/drawer.component.html +5 -0
  81. package/src/lib/drawer/drawer.component.ts +53 -0
  82. package/src/lib/drawer/drawer.module.ts +11 -0
  83. package/src/lib/dropdown/dropdown.component.html +25 -0
  84. package/src/lib/dropdown/dropdown.component.scss +9 -0
  85. package/src/lib/dropdown/dropdown.component.ts +200 -0
  86. package/src/lib/dropdown/dropdown.module.ts +19 -0
  87. package/src/lib/fieldset/fieldset.component.html +6 -0
  88. package/src/lib/fieldset/fieldset.component.ts +49 -0
  89. package/src/lib/fieldset/fieldset.module.ts +11 -0
  90. package/src/lib/form-group/form-group.component.html +15 -0
  91. package/src/lib/form-group/form-group.component.ts +39 -0
  92. package/src/lib/form-group/form-group.module.ts +14 -0
  93. package/src/lib/label/label.component.html +5 -0
  94. package/src/lib/label/label.component.ts +18 -0
  95. package/src/lib/label/label.module.ts +14 -0
  96. package/src/lib/loading/loading-indicator.component.html +27 -0
  97. package/src/lib/loading/loading-indicator.component.ts +16 -0
  98. package/src/lib/loading/loading-panel.component.ts +37 -0
  99. package/src/lib/loading/loading.module.ts +13 -0
  100. package/src/lib/loading/loading.service.ts +44 -0
  101. package/src/lib/menu/menu-item.component.ts +41 -0
  102. package/src/lib/menu/menu.component.html +65 -0
  103. package/src/lib/menu/menu.component.ts +111 -0
  104. package/src/lib/menu/menu.module.ts +13 -0
  105. package/src/lib/menu/menu2.component.scss +59 -0
  106. package/src/lib/menu/menu2.component.ts +98 -0
  107. package/src/lib/number-box/number-box.component.html +32 -0
  108. package/src/lib/number-box/number-box.component.ts +641 -0
  109. package/src/lib/number-box/number-box.module.ts +13 -0
  110. package/src/lib/page/content.component.ts +18 -0
  111. package/src/lib/page/footer.component.ts +13 -0
  112. package/src/lib/page/page.component.ts +43 -0
  113. package/src/lib/page/page.module.ts +14 -0
  114. package/src/lib/panel-box/panel-box.component.html +19 -0
  115. package/src/lib/panel-box/panel-box.component.scss +25 -0
  116. package/src/lib/panel-box/panel-box.component.ts +87 -0
  117. package/src/lib/panel-box/panel-box.module.ts +10 -0
  118. package/src/lib/password-box/password-box.component.html +22 -0
  119. package/src/lib/password-box/password-box.component.ts +30 -0
  120. package/src/lib/password-box/password-box.module.ts +16 -0
  121. package/src/lib/popover/custom-cdk-overlay.service.ts +82 -0
  122. package/src/lib/popover/overlay.service.ts +110 -0
  123. package/src/lib/popover/popover.component.html +5 -0
  124. package/src/lib/popover/popover.component.scss +9 -0
  125. package/src/lib/popover/popover.component.ts +117 -0
  126. package/src/lib/popover/popover.module.ts +11 -0
  127. package/src/lib/popup/popup.component.html +33 -0
  128. package/src/lib/popup/popup.component.scss +173 -0
  129. package/src/lib/popup/popup.component.ts +182 -0
  130. package/src/lib/popup/popup.module.ts +16 -0
  131. package/src/lib/popup/popup.service.ts +103 -0
  132. package/src/lib/progress-bar/progress-bar.component.html +5 -0
  133. package/src/lib/progress-bar/progress-bar.component.ts +10 -0
  134. package/src/lib/progress-bar/progress-bar.module.ts +11 -0
  135. package/src/lib/property-editor/editors/color-editor/color.editor.ts +30 -0
  136. package/src/lib/property-editor/editors/color-editor/color.module.ts +20 -0
  137. package/src/lib/property-editor/editors/column-editor/column.editor.html +75 -0
  138. package/src/lib/property-editor/editors/column-editor/column.editor.scss +193 -0
  139. package/src/lib/property-editor/editors/column-editor/column.editor.ts +124 -0
  140. package/src/lib/property-editor/editors/column-editor/column.module.ts +28 -0
  141. package/src/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.html +80 -0
  142. package/src/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.scss +71 -0
  143. package/src/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.ts +232 -0
  144. package/src/lib/property-editor/editors/conditional-color-editor/conditional-color.module.ts +52 -0
  145. package/src/lib/property-editor/editors/date-editor/date.editor.ts +49 -0
  146. package/src/lib/property-editor/editors/date-editor/date.module.ts +20 -0
  147. package/src/lib/property-editor/editors/number-editor/number.editor.ts +47 -0
  148. package/src/lib/property-editor/editors/number-editor/number.module.ts +20 -0
  149. package/src/lib/property-editor/editors/range-editor/range.editor.html +67 -0
  150. package/src/lib/property-editor/editors/range-editor/range.editor.scss +68 -0
  151. package/src/lib/property-editor/editors/range-editor/range.editor.ts +153 -0
  152. package/src/lib/property-editor/editors/range-editor/range.module.ts +37 -0
  153. package/src/lib/property-editor/editors/selectbox-editor/selectbox.editor.html +15 -0
  154. package/src/lib/property-editor/editors/selectbox-editor/selectbox.editor.ts +77 -0
  155. package/src/lib/property-editor/editors/selectbox-editor/selectbox.module.ts +21 -0
  156. package/src/lib/property-editor/editors/switch-editor/number.editor.ts +26 -0
  157. package/src/lib/property-editor/editors/switch-editor/number.module.ts +21 -0
  158. package/src/lib/property-editor/editors/text-editor/text.editor.html +4 -0
  159. package/src/lib/property-editor/editors/text-editor/text.editor.ts +35 -0
  160. package/src/lib/property-editor/editors/text-editor/text.module.ts +20 -0
  161. package/src/lib/property-editor/editors/textarea-editor/textarea.editor.html +9 -0
  162. package/src/lib/property-editor/editors/textarea-editor/textarea.editor.ts +37 -0
  163. package/src/lib/property-editor/editors/textarea-editor/textarea.module.ts +20 -0
  164. package/src/lib/property-editor/editors/time-editor/time.editor.ts +38 -0
  165. package/src/lib/property-editor/editors/time-editor/time.module.ts +20 -0
  166. package/src/lib/property-editor/property-editor-renderer.directive.ts +181 -0
  167. package/src/lib/property-editor/property-editor.class.ts +178 -0
  168. package/src/lib/property-editor/property-editor.module.ts +97 -0
  169. package/src/lib/query-builder/query-builder-group.component.html +68 -0
  170. package/src/lib/query-builder/query-builder-group.component.ts +122 -0
  171. package/src/lib/query-builder/query-builder-popup/query-builder-popup.component.html +82 -0
  172. package/src/lib/query-builder/query-builder-popup/query-builder-popup.component.ts +178 -0
  173. package/src/lib/query-builder/query-builder-rule.component.html +134 -0
  174. package/src/lib/query-builder/query-builder-rule.component.ts +353 -0
  175. package/src/lib/query-builder/query-builder.class.ts +53 -0
  176. package/src/lib/query-builder/query-builder.component.html +3 -0
  177. package/src/lib/query-builder/query-builder.component.scss +286 -0
  178. package/src/lib/query-builder/query-builder.component.ts +220 -0
  179. package/src/lib/query-builder/query-builder.module.ts +42 -0
  180. package/src/lib/query-builder/query-builder.service.ts +181 -0
  181. package/src/lib/searchbox/searchbox.component.html +25 -0
  182. package/src/lib/searchbox/searchbox.component.ts +85 -0
  183. package/src/lib/searchbox/searchbox.module.ts +17 -0
  184. package/src/lib/selectbox/selectbox.component.html +98 -0
  185. package/src/lib/selectbox/selectbox.component.ts +980 -0
  186. package/src/lib/selectbox/selectbox.module.ts +31 -0
  187. package/src/lib/selectbox/selectbox2.component.html +78 -0
  188. package/src/lib/selectbox/selectbox2.component.ts +603 -0
  189. package/src/lib/selection-list/selection-list.component.html +21 -0
  190. package/src/lib/selection-list/selection-list.component.ts +103 -0
  191. package/src/lib/selection-list/selection-list.module.ts +13 -0
  192. package/src/lib/switch/switch.component.html +4 -0
  193. package/src/lib/switch/switch.component.scss +65 -0
  194. package/src/lib/switch/switch.component.ts +57 -0
  195. package/src/lib/switch/switch.module.ts +14 -0
  196. package/src/lib/tab-page/tab-page-Renderer.component.ts +68 -0
  197. package/src/lib/tab-page/tab-page-host.component.ts +103 -0
  198. package/src/lib/tab-page/tab-page.module.ts +13 -0
  199. package/src/lib/tab-page/tab-page.service.ts +176 -0
  200. package/src/lib/tab-strip/tab-strip.component.html +6 -0
  201. package/src/lib/tab-strip/tab-strip.component.ts +47 -0
  202. package/src/lib/tab-strip/tab-strip.module.ts +11 -0
  203. package/src/lib/tab-view/dynamic-tabs.directive.ts +17 -0
  204. package/src/lib/tab-view/tab-view.component.html +33 -0
  205. package/src/lib/tab-view/tab-view.component.scss +0 -0
  206. package/src/lib/tab-view/tab-view.component.ts +129 -0
  207. package/src/lib/tab-view/tab-view.module.ts +12 -0
  208. package/src/lib/tab-view/tab.component.html +8 -0
  209. package/src/lib/tab-view/tab.component.ts +15 -0
  210. package/src/lib/textarea/textarea.component.html +13 -0
  211. package/src/lib/textarea/textarea.component.ts +24 -0
  212. package/src/lib/textarea/textarea.module.ts +14 -0
  213. package/src/lib/textbox/textbox.component.html +22 -0
  214. package/src/lib/textbox/textbox.component.ts +38 -0
  215. package/src/lib/textbox/textbox.module.ts +16 -0
  216. package/src/lib/time-picker/time-picker.component.html +21 -0
  217. package/src/lib/time-picker/time-picker.component.ts +1003 -0
  218. package/src/lib/time-picker/time-picker.module.ts +15 -0
  219. package/src/lib/toast/toast-message/toast-message.component.html +17 -0
  220. package/src/lib/toast/toast-message/toast-message.component.scss +75 -0
  221. package/src/lib/toast/toast-message/toast-message.component.ts +64 -0
  222. package/src/lib/toast/toast-wrapper/toast-wrapper.component.scss +15 -0
  223. package/src/lib/toast/toast-wrapper/toast-wrapper.component.ts +13 -0
  224. package/src/lib/toast/toast.module.ts +12 -0
  225. package/src/lib/toast/toast.service.ts +64 -0
  226. package/src/lib/toolbar/group-button/toolbar-group-button.component.ts +54 -0
  227. package/src/lib/toolbar/menu/toolbar-menu.component.html +4 -0
  228. package/src/lib/toolbar/menu/toolbar-menu.component.ts +81 -0
  229. package/src/lib/toolbar/search/toolbar-search.component.html +4 -0
  230. package/src/lib/toolbar/search/toolbar-search.component.scss +24 -0
  231. package/src/lib/toolbar/search/toolbar-search.component.ts +61 -0
  232. package/src/lib/toolbar/title/toolbar-title.component.ts +35 -0
  233. package/src/lib/toolbar/toolbar-item.ts +4 -0
  234. package/src/lib/toolbar/toolbar.component.html +4 -0
  235. package/src/lib/toolbar/toolbar.component.scss +9 -0
  236. package/src/lib/toolbar/toolbar.component.ts +16 -0
  237. package/src/lib/toolbar/toolbar.module.ts +25 -0
  238. package/src/lib/tooltip/tooltip.directive.ts +101 -0
  239. package/src/lib/tooltip/tooltip.module.ts +11 -0
  240. package/src/lib/tree-side-menu/tree-side-menu.component.html +43 -0
  241. package/src/lib/tree-side-menu/tree-side-menu.component.ts +698 -0
  242. package/src/lib/tree-side-menu/tree-side-menu.module.ts +19 -0
  243. package/src/lib/tree-view/tree-view.component.html +45 -0
  244. package/src/lib/tree-view/tree-view.component.ts +781 -0
  245. package/src/lib/tree-view/tree-view.module.ts +16 -0
  246. package/src/lib/upload-file/upload-file.component.html +16 -0
  247. package/src/lib/upload-file/upload-file.component.ts +189 -0
  248. package/src/lib/upload-file/upload-file.events.ts +11 -0
  249. package/src/lib/upload-file/upload-file.module.ts +16 -0
  250. package/src/lib/validation/validation-form.component.ts +77 -0
  251. package/src/lib/validation/validation-rule.widget.ts +112 -0
  252. package/src/lib/validation/validation.class.ts +22 -0
  253. package/src/lib/validation/validation.component.ts +92 -0
  254. package/src/lib/validation/validation.module.ts +28 -0
  255. package/{public-api.d.ts → src/public-api.ts} +61 -2
  256. package/src/test.ts +28 -0
  257. package/tsconfig.lib.json +25 -0
  258. package/tsconfig.lib.prod.json +6 -0
  259. package/tsconfig.spec.json +17 -0
  260. package/tslint.json +17 -0
  261. package/acorex-components.d.ts +0 -5
  262. package/esm2020/acorex-components.mjs +0 -5
  263. package/esm2020/lib/accordion/accordion.component.mjs +0 -44
  264. package/esm2020/lib/accordion/accordion.module.mjs +0 -20
  265. package/esm2020/lib/base/base-page.class.mjs +0 -92
  266. package/esm2020/lib/base/element.class.mjs +0 -294
  267. package/esm2020/lib/base/events.class.mjs +0 -11
  268. package/esm2020/lib/button/button.component.mjs +0 -71
  269. package/esm2020/lib/button/button.module.mjs +0 -21
  270. package/esm2020/lib/calendar/calendar-box/calendar-box.component.mjs +0 -413
  271. package/esm2020/lib/calendar/calendar-box/calendar-box.module.mjs +0 -22
  272. package/esm2020/lib/calendar/scheduler/scheduler-views.property.mjs +0 -54
  273. package/esm2020/lib/calendar/scheduler/scheduler.class.mjs +0 -18
  274. package/esm2020/lib/calendar/scheduler/scheduler.component.mjs +0 -213
  275. package/esm2020/lib/calendar/scheduler/scheduler.module.mjs +0 -68
  276. package/esm2020/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.mjs +0 -132
  277. package/esm2020/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.mjs +0 -37
  278. package/esm2020/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.mjs +0 -47
  279. package/esm2020/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.mjs +0 -95
  280. package/esm2020/lib/calendar/scheduler/views/month/scheduler-month-view.component.mjs +0 -204
  281. package/esm2020/lib/calendar/scheduler/views/scheduler-view.component.mjs +0 -99
  282. package/esm2020/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.mjs +0 -77
  283. package/esm2020/lib/checkbox/checkbox.component.mjs +0 -98
  284. package/esm2020/lib/checkbox/checkbox.module.mjs +0 -20
  285. package/esm2020/lib/color-picker/color-box/color-box.component.mjs +0 -422
  286. package/esm2020/lib/color-picker/color-picker.component.mjs +0 -82
  287. package/esm2020/lib/color-picker/color-picker.module.mjs +0 -24
  288. package/esm2020/lib/context-menu/context-menu.component.mjs +0 -65
  289. package/esm2020/lib/context-menu/context-menu.directive.mjs +0 -135
  290. package/esm2020/lib/context-menu/context-menu.module.mjs +0 -20
  291. package/esm2020/lib/data-filter/columns/filter-column-date.component.mjs +0 -138
  292. package/esm2020/lib/data-filter/columns/filter-column-number.component.mjs +0 -117
  293. package/esm2020/lib/data-filter/columns/filter-column-selection.component.mjs +0 -74
  294. package/esm2020/lib/data-filter/columns/filter-column-string.component.mjs +0 -117
  295. package/esm2020/lib/data-filter/filter-panel/filter-panel.component.mjs +0 -258
  296. package/esm2020/lib/data-filter/filter.class.mjs +0 -44
  297. package/esm2020/lib/data-filter/filter.module.mjs +0 -90
  298. package/esm2020/lib/data-filter/toolbar/filter-toolbar.component.mjs +0 -166
  299. package/esm2020/lib/data-list/core/data-list.component.mjs +0 -40
  300. package/esm2020/lib/data-list/list/list.component.mjs +0 -124
  301. package/esm2020/lib/data-list/list/list.module.mjs +0 -22
  302. package/esm2020/lib/data-list/list/toolbar-list-view.component.mjs +0 -85
  303. package/esm2020/lib/data-source/datasource.component.mjs +0 -47
  304. package/esm2020/lib/data-source/datasource.module.mjs +0 -18
  305. package/esm2020/lib/data-source/read-param.mjs +0 -5
  306. package/esm2020/lib/date-picker/date-picker.component.mjs +0 -705
  307. package/esm2020/lib/date-picker/date-picker.module.mjs +0 -25
  308. package/esm2020/lib/dialog/dialog.component.mjs +0 -24
  309. package/esm2020/lib/dialog/dialog.module.mjs +0 -21
  310. package/esm2020/lib/dialog/dialog.service.mjs +0 -150
  311. package/esm2020/lib/drawer/drawer.component.mjs +0 -54
  312. package/esm2020/lib/drawer/drawer.module.mjs +0 -20
  313. package/esm2020/lib/dropdown/dropdown.component.mjs +0 -177
  314. package/esm2020/lib/dropdown/dropdown.module.mjs +0 -26
  315. package/esm2020/lib/fieldset/fieldset.component.mjs +0 -59
  316. package/esm2020/lib/fieldset/fieldset.module.mjs +0 -19
  317. package/esm2020/lib/form-group/form-group.component.mjs +0 -34
  318. package/esm2020/lib/form-group/form-group.module.mjs +0 -21
  319. package/esm2020/lib/label/label.component.mjs +0 -19
  320. package/esm2020/lib/label/label.module.mjs +0 -21
  321. package/esm2020/lib/loading/loading-indicator.component.mjs +0 -17
  322. package/esm2020/lib/loading/loading-panel.component.mjs +0 -44
  323. package/esm2020/lib/loading/loading.module.mjs +0 -21
  324. package/esm2020/lib/loading/loading.service.mjs +0 -45
  325. package/esm2020/lib/menu/menu-item.component.mjs +0 -47
  326. package/esm2020/lib/menu/menu.component.mjs +0 -86
  327. package/esm2020/lib/menu/menu.module.mjs +0 -22
  328. package/esm2020/lib/menu/menu2.component.mjs +0 -96
  329. package/esm2020/lib/number-box/number-box.component.mjs +0 -622
  330. package/esm2020/lib/number-box/number-box.module.mjs +0 -21
  331. package/esm2020/lib/page/content.component.mjs +0 -32
  332. package/esm2020/lib/page/footer.component.mjs +0 -19
  333. package/esm2020/lib/page/page.component.mjs +0 -53
  334. package/esm2020/lib/page/page.module.mjs +0 -22
  335. package/esm2020/lib/panel-box/panel-box.component.mjs +0 -88
  336. package/esm2020/lib/panel-box/panel-box.module.mjs +0 -19
  337. package/esm2020/lib/password-box/password-box.component.mjs +0 -31
  338. package/esm2020/lib/password-box/password-box.module.mjs +0 -23
  339. package/esm2020/lib/popover/custom-cdk-overlay.service.mjs +0 -48
  340. package/esm2020/lib/popover/overlay.service.mjs +0 -87
  341. package/esm2020/lib/popover/popover.component.mjs +0 -115
  342. package/esm2020/lib/popover/popover.module.mjs +0 -19
  343. package/esm2020/lib/popup/popup.component.mjs +0 -147
  344. package/esm2020/lib/popup/popup.module.mjs +0 -25
  345. package/esm2020/lib/popup/popup.service.mjs +0 -93
  346. package/esm2020/lib/progress-bar/progress-bar.component.mjs +0 -19
  347. package/esm2020/lib/progress-bar/progress-bar.module.mjs +0 -19
  348. package/esm2020/lib/property-editor/editors/color-editor/color.editor.mjs +0 -38
  349. package/esm2020/lib/property-editor/editors/color-editor/color.module.mjs +0 -24
  350. package/esm2020/lib/property-editor/editors/column-editor/column.editor.mjs +0 -115
  351. package/esm2020/lib/property-editor/editors/column-editor/column.module.mjs +0 -32
  352. package/esm2020/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.mjs +0 -211
  353. package/esm2020/lib/property-editor/editors/conditional-color-editor/conditional-color.module.mjs +0 -78
  354. package/esm2020/lib/property-editor/editors/date-editor/date.editor.mjs +0 -51
  355. package/esm2020/lib/property-editor/editors/date-editor/date.module.mjs +0 -24
  356. package/esm2020/lib/property-editor/editors/number-editor/number.editor.mjs +0 -60
  357. package/esm2020/lib/property-editor/editors/number-editor/number.module.mjs +0 -24
  358. package/esm2020/lib/property-editor/editors/range-editor/range.editor.mjs +0 -140
  359. package/esm2020/lib/property-editor/editors/range-editor/range.module.mjs +0 -61
  360. package/esm2020/lib/property-editor/editors/selectbox-editor/selectbox.editor.mjs +0 -71
  361. package/esm2020/lib/property-editor/editors/selectbox-editor/selectbox.module.mjs +0 -25
  362. package/esm2020/lib/property-editor/editors/switch-editor/number.editor.mjs +0 -29
  363. package/esm2020/lib/property-editor/editors/switch-editor/number.module.mjs +0 -25
  364. package/esm2020/lib/property-editor/editors/text-editor/text.editor.mjs +0 -30
  365. package/esm2020/lib/property-editor/editors/text-editor/text.module.mjs +0 -24
  366. package/esm2020/lib/property-editor/editors/textarea-editor/textarea.editor.mjs +0 -32
  367. package/esm2020/lib/property-editor/editors/textarea-editor/textarea.module.mjs +0 -24
  368. package/esm2020/lib/property-editor/editors/time-editor/time.editor.mjs +0 -43
  369. package/esm2020/lib/property-editor/editors/time-editor/time.module.mjs +0 -24
  370. package/esm2020/lib/property-editor/property-editor-renderer.directive.mjs +0 -152
  371. package/esm2020/lib/property-editor/property-editor.class.mjs +0 -101
  372. package/esm2020/lib/property-editor/property-editor.module.mjs +0 -161
  373. package/esm2020/lib/query-builder/query-builder-group.component.mjs +0 -124
  374. package/esm2020/lib/query-builder/query-builder-popup/query-builder-popup.component.mjs +0 -171
  375. package/esm2020/lib/query-builder/query-builder-rule.component.mjs +0 -357
  376. package/esm2020/lib/query-builder/query-builder.class.mjs +0 -20
  377. package/esm2020/lib/query-builder/query-builder.component.mjs +0 -82
  378. package/esm2020/lib/query-builder/query-builder.module.mjs +0 -59
  379. package/esm2020/lib/query-builder/query-builder.service.mjs +0 -191
  380. package/esm2020/lib/searchbox/searchbox.component.mjs +0 -79
  381. package/esm2020/lib/searchbox/searchbox.module.mjs +0 -24
  382. package/esm2020/lib/selectbox/selectbox.component.mjs +0 -956
  383. package/esm2020/lib/selectbox/selectbox.module.mjs +0 -44
  384. package/esm2020/lib/selectbox/selectbox2.component.mjs +0 -574
  385. package/esm2020/lib/selection-list/selection-list.component.mjs +0 -101
  386. package/esm2020/lib/selection-list/selection-list.module.mjs +0 -21
  387. package/esm2020/lib/switch/switch.component.mjs +0 -51
  388. package/esm2020/lib/switch/switch.module.mjs +0 -20
  389. package/esm2020/lib/tab-page/tab-page-Renderer.component.mjs +0 -69
  390. package/esm2020/lib/tab-page/tab-page-host.component.mjs +0 -109
  391. package/esm2020/lib/tab-page/tab-page.module.mjs +0 -21
  392. package/esm2020/lib/tab-page/tab-page.service.mjs +0 -156
  393. package/esm2020/lib/tab-strip/tab-strip.component.mjs +0 -36
  394. package/esm2020/lib/tab-strip/tab-strip.module.mjs +0 -19
  395. package/esm2020/lib/tab-view/dynamic-tabs.directive.mjs +0 -24
  396. package/esm2020/lib/tab-view/tab-view.component.mjs +0 -105
  397. package/esm2020/lib/tab-view/tab-view.module.mjs +0 -21
  398. package/esm2020/lib/tab-view/tab.component.mjs +0 -30
  399. package/esm2020/lib/textarea/textarea.component.mjs +0 -26
  400. package/esm2020/lib/textarea/textarea.module.mjs +0 -21
  401. package/esm2020/lib/textbox/textbox.component.mjs +0 -39
  402. package/esm2020/lib/textbox/textbox.module.mjs +0 -24
  403. package/esm2020/lib/time-picker/time-picker.component.mjs +0 -943
  404. package/esm2020/lib/time-picker/time-picker.module.mjs +0 -22
  405. package/esm2020/lib/toast/toast-message/toast-message.component.mjs +0 -74
  406. package/esm2020/lib/toast/toast-wrapper/toast-wrapper.component.mjs +0 -13
  407. package/esm2020/lib/toast/toast.module.mjs +0 -21
  408. package/esm2020/lib/toast/toast.service.mjs +0 -44
  409. package/esm2020/lib/toolbar/group-button/toolbar-group-button.component.mjs +0 -78
  410. package/esm2020/lib/toolbar/menu/toolbar-menu.component.mjs +0 -57
  411. package/esm2020/lib/toolbar/search/toolbar-search.component.mjs +0 -54
  412. package/esm2020/lib/toolbar/title/toolbar-title.component.mjs +0 -47
  413. package/esm2020/lib/toolbar/toolbar-item.mjs +0 -6
  414. package/esm2020/lib/toolbar/toolbar.component.mjs +0 -13
  415. package/esm2020/lib/toolbar/toolbar.module.mjs +0 -40
  416. package/esm2020/lib/tooltip/tooltip.directive.mjs +0 -100
  417. package/esm2020/lib/tooltip/tooltip.module.mjs +0 -19
  418. package/esm2020/lib/tree-side-menu/tree-side-menu.component.mjs +0 -646
  419. package/esm2020/lib/tree-side-menu/tree-side-menu.module.mjs +0 -35
  420. package/esm2020/lib/tree-view/tree-view.component.mjs +0 -726
  421. package/esm2020/lib/tree-view/tree-view.module.mjs +0 -22
  422. package/esm2020/lib/upload-file/upload-file.component.mjs +0 -170
  423. package/esm2020/lib/upload-file/upload-file.events.mjs +0 -2
  424. package/esm2020/lib/upload-file/upload-file.module.mjs +0 -24
  425. package/esm2020/lib/validation/validation-form.component.mjs +0 -64
  426. package/esm2020/lib/validation/validation-rule.widget.mjs +0 -111
  427. package/esm2020/lib/validation/validation.class.mjs +0 -2
  428. package/esm2020/lib/validation/validation.component.mjs +0 -90
  429. package/esm2020/lib/validation/validation.module.mjs +0 -34
  430. package/esm2020/public-api.mjs +0 -154
  431. package/fesm2015/acorex-components.mjs +0 -15091
  432. package/fesm2015/acorex-components.mjs.map +0 -1
  433. package/fesm2020/acorex-components.mjs +0 -15038
  434. package/fesm2020/acorex-components.mjs.map +0 -1
  435. package/lib/accordion/accordion.component.d.ts +0 -13
  436. package/lib/accordion/accordion.module.d.ts +0 -9
  437. package/lib/base/base-page.class.d.ts +0 -45
  438. package/lib/base/element.class.d.ts +0 -106
  439. package/lib/base/events.class.d.ts +0 -18
  440. package/lib/button/button.component.d.ts +0 -21
  441. package/lib/button/button.module.d.ts +0 -8
  442. package/lib/calendar/calendar-box/calendar-box.component.d.ts +0 -81
  443. package/lib/calendar/calendar-box/calendar-box.module.d.ts +0 -11
  444. package/lib/calendar/scheduler/scheduler-views.property.d.ts +0 -19
  445. package/lib/calendar/scheduler/scheduler.component.d.ts +0 -39
  446. package/lib/calendar/scheduler/scheduler.module.d.ts +0 -21
  447. package/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.d.ts +0 -25
  448. package/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.d.ts +0 -14
  449. package/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.d.ts +0 -16
  450. package/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.d.ts +0 -26
  451. package/lib/calendar/scheduler/views/month/scheduler-month-view.component.d.ts +0 -37
  452. package/lib/calendar/scheduler/views/scheduler-view.component.d.ts +0 -28
  453. package/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.d.ts +0 -24
  454. package/lib/checkbox/checkbox.component.d.ts +0 -30
  455. package/lib/checkbox/checkbox.module.d.ts +0 -9
  456. package/lib/color-picker/color-box/color-box.component.d.ts +0 -25
  457. package/lib/color-picker/color-picker.component.d.ts +0 -30
  458. package/lib/color-picker/color-picker.module.d.ts +0 -13
  459. package/lib/context-menu/context-menu.component.d.ts +0 -22
  460. package/lib/context-menu/context-menu.directive.d.ts +0 -38
  461. package/lib/context-menu/context-menu.module.d.ts +0 -9
  462. package/lib/data-filter/columns/filter-column-date.component.d.ts +0 -22
  463. package/lib/data-filter/columns/filter-column-number.component.d.ts +0 -15
  464. package/lib/data-filter/columns/filter-column-selection.component.d.ts +0 -18
  465. package/lib/data-filter/columns/filter-column-string.component.d.ts +0 -15
  466. package/lib/data-filter/filter-panel/filter-panel.component.d.ts +0 -45
  467. package/lib/data-filter/filter.class.d.ts +0 -40
  468. package/lib/data-filter/filter.module.d.ts +0 -24
  469. package/lib/data-filter/toolbar/filter-toolbar.component.d.ts +0 -25
  470. package/lib/data-list/core/data-list.component.d.ts +0 -15
  471. package/lib/data-list/list/list.component.d.ts +0 -40
  472. package/lib/data-list/list/list.module.d.ts +0 -11
  473. package/lib/data-list/list/toolbar-list-view.component.d.ts +0 -17
  474. package/lib/data-source/datasource.component.d.ts +0 -16
  475. package/lib/data-source/datasource.module.d.ts +0 -7
  476. package/lib/date-picker/date-picker.component.d.ts +0 -81
  477. package/lib/date-picker/date-picker.module.d.ts +0 -14
  478. package/lib/dialog/dialog.component.d.ts +0 -14
  479. package/lib/dialog/dialog.module.d.ts +0 -10
  480. package/lib/dialog/dialog.service.d.ts +0 -36
  481. package/lib/drawer/drawer.component.d.ts +0 -10
  482. package/lib/drawer/drawer.module.d.ts +0 -9
  483. package/lib/dropdown/dropdown.component.d.ts +0 -38
  484. package/lib/dropdown/dropdown.module.d.ts +0 -13
  485. package/lib/fieldset/fieldset.component.d.ts +0 -11
  486. package/lib/fieldset/fieldset.module.d.ts +0 -8
  487. package/lib/form-group/form-group.component.d.ts +0 -14
  488. package/lib/form-group/form-group.module.d.ts +0 -8
  489. package/lib/label/label.component.d.ts +0 -9
  490. package/lib/label/label.module.d.ts +0 -8
  491. package/lib/loading/loading-indicator.component.d.ts +0 -9
  492. package/lib/loading/loading-panel.component.d.ts +0 -13
  493. package/lib/loading/loading.module.d.ts +0 -10
  494. package/lib/loading/loading.service.d.ts +0 -13
  495. package/lib/menu/menu-item.component.d.ts +0 -18
  496. package/lib/menu/menu.component.d.ts +0 -35
  497. package/lib/menu/menu.module.d.ts +0 -11
  498. package/lib/menu/menu2.component.d.ts +0 -21
  499. package/lib/number-box/number-box.component.d.ts +0 -52
  500. package/lib/number-box/number-box.module.d.ts +0 -10
  501. package/lib/page/content.component.d.ts +0 -8
  502. package/lib/page/footer.component.d.ts +0 -5
  503. package/lib/page/page.component.d.ts +0 -16
  504. package/lib/page/page.module.d.ts +0 -11
  505. package/lib/panel-box/panel-box.component.d.ts +0 -19
  506. package/lib/panel-box/panel-box.module.d.ts +0 -8
  507. package/lib/password-box/password-box.component.d.ts +0 -12
  508. package/lib/password-box/password-box.module.d.ts +0 -10
  509. package/lib/popover/custom-cdk-overlay.service.d.ts +0 -19
  510. package/lib/popover/overlay.service.d.ts +0 -30
  511. package/lib/popover/popover.component.d.ts +0 -30
  512. package/lib/popover/popover.module.d.ts +0 -8
  513. package/lib/popup/popup.component.d.ts +0 -39
  514. package/lib/popup/popup.module.d.ts +0 -13
  515. package/lib/popup/popup.service.d.ts +0 -22
  516. package/lib/progress-bar/progress-bar.component.d.ts +0 -7
  517. package/lib/progress-bar/progress-bar.module.d.ts +0 -8
  518. package/lib/property-editor/editors/color-editor/color.editor.d.ts +0 -13
  519. package/lib/property-editor/editors/color-editor/color.module.d.ts +0 -12
  520. package/lib/property-editor/editors/column-editor/column.editor.d.ts +0 -34
  521. package/lib/property-editor/editors/column-editor/column.module.d.ts +0 -20
  522. package/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.d.ts +0 -44
  523. package/lib/property-editor/editors/conditional-color-editor/conditional-color.module.d.ts +0 -19
  524. package/lib/property-editor/editors/date-editor/date.editor.d.ts +0 -28
  525. package/lib/property-editor/editors/date-editor/date.module.d.ts +0 -12
  526. package/lib/property-editor/editors/number-editor/number.editor.d.ts +0 -19
  527. package/lib/property-editor/editors/number-editor/number.module.d.ts +0 -12
  528. package/lib/property-editor/editors/range-editor/range.editor.d.ts +0 -29
  529. package/lib/property-editor/editors/range-editor/range.module.d.ts +0 -18
  530. package/lib/property-editor/editors/selectbox-editor/selectbox.editor.d.ts +0 -28
  531. package/lib/property-editor/editors/selectbox-editor/selectbox.module.d.ts +0 -13
  532. package/lib/property-editor/editors/switch-editor/number.editor.d.ts +0 -11
  533. package/lib/property-editor/editors/switch-editor/number.module.d.ts +0 -13
  534. package/lib/property-editor/editors/text-editor/text.editor.d.ts +0 -15
  535. package/lib/property-editor/editors/text-editor/text.module.d.ts +0 -12
  536. package/lib/property-editor/editors/textarea-editor/textarea.editor.d.ts +0 -17
  537. package/lib/property-editor/editors/textarea-editor/textarea.module.d.ts +0 -12
  538. package/lib/property-editor/editors/time-editor/time.editor.d.ts +0 -17
  539. package/lib/property-editor/editors/time-editor/time.module.d.ts +0 -12
  540. package/lib/property-editor/property-editor-renderer.directive.d.ts +0 -30
  541. package/lib/property-editor/property-editor.class.d.ts +0 -67
  542. package/lib/property-editor/property-editor.module.d.ts +0 -19
  543. package/lib/query-builder/query-builder-group.component.d.ts +0 -33
  544. package/lib/query-builder/query-builder-popup/query-builder-popup.component.d.ts +0 -35
  545. package/lib/query-builder/query-builder-rule.component.d.ts +0 -45
  546. package/lib/query-builder/query-builder.class.d.ts +0 -45
  547. package/lib/query-builder/query-builder.component.d.ts +0 -27
  548. package/lib/query-builder/query-builder.module.d.ts +0 -22
  549. package/lib/query-builder/query-builder.service.d.ts +0 -18
  550. package/lib/searchbox/searchbox.component.d.ts +0 -22
  551. package/lib/searchbox/searchbox.module.d.ts +0 -13
  552. package/lib/selectbox/selectbox.component.d.ts +0 -116
  553. package/lib/selectbox/selectbox.module.d.ts +0 -15
  554. package/lib/selectbox/selectbox2.component.d.ts +0 -103
  555. package/lib/selection-list/selection-list.component.d.ts +0 -30
  556. package/lib/selection-list/selection-list.module.d.ts +0 -10
  557. package/lib/switch/switch.component.d.ts +0 -20
  558. package/lib/switch/switch.module.d.ts +0 -9
  559. package/lib/tab-page/tab-page-Renderer.component.d.ts +0 -16
  560. package/lib/tab-page/tab-page-host.component.d.ts +0 -26
  561. package/lib/tab-page/tab-page.module.d.ts +0 -10
  562. package/lib/tab-page/tab-page.service.d.ts +0 -30
  563. package/lib/tab-strip/tab-strip.component.d.ts +0 -28
  564. package/lib/tab-strip/tab-strip.module.d.ts +0 -8
  565. package/lib/tab-view/dynamic-tabs.directive.d.ts +0 -16
  566. package/lib/tab-view/tab-view.component.d.ts +0 -26
  567. package/lib/tab-view/tab-view.module.d.ts +0 -10
  568. package/lib/tab-view/tab.component.d.ts +0 -12
  569. package/lib/textarea/textarea.component.d.ts +0 -12
  570. package/lib/textarea/textarea.module.d.ts +0 -8
  571. package/lib/textbox/textbox.component.d.ts +0 -16
  572. package/lib/textbox/textbox.module.d.ts +0 -11
  573. package/lib/time-picker/time-picker.component.d.ts +0 -52
  574. package/lib/time-picker/time-picker.module.d.ts +0 -11
  575. package/lib/toast/toast-message/toast-message.component.d.ts +0 -18
  576. package/lib/toast/toast-wrapper/toast-wrapper.component.d.ts +0 -8
  577. package/lib/toast/toast.module.d.ts +0 -9
  578. package/lib/toast/toast.service.d.ts +0 -18
  579. package/lib/toolbar/group-button/toolbar-group-button.component.d.ts +0 -12
  580. package/lib/toolbar/menu/toolbar-menu.component.d.ts +0 -24
  581. package/lib/toolbar/search/toolbar-search.component.d.ts +0 -16
  582. package/lib/toolbar/title/toolbar-title.component.d.ts +0 -9
  583. package/lib/toolbar/toolbar-item.d.ts +0 -3
  584. package/lib/toolbar/toolbar.component.d.ts +0 -8
  585. package/lib/toolbar/toolbar.module.d.ts +0 -14
  586. package/lib/tooltip/tooltip.directive.d.ts +0 -21
  587. package/lib/tooltip/tooltip.module.d.ts +0 -8
  588. package/lib/tree-side-menu/tree-side-menu.component.d.ts +0 -111
  589. package/lib/tree-side-menu/tree-side-menu.module.d.ts +0 -11
  590. package/lib/tree-view/tree-view.component.d.ts +0 -117
  591. package/lib/tree-view/tree-view.module.d.ts +0 -11
  592. package/lib/upload-file/upload-file.component.d.ts +0 -38
  593. package/lib/upload-file/upload-file.events.d.ts +0 -10
  594. package/lib/upload-file/upload-file.module.d.ts +0 -13
  595. package/lib/validation/validation-form.component.d.ts +0 -19
  596. package/lib/validation/validation-rule.widget.d.ts +0 -23
  597. package/lib/validation/validation.class.d.ts +0 -16
  598. package/lib/validation/validation.component.d.ts +0 -25
  599. package/lib/validation/validation.module.d.ts +0 -11
@@ -1,705 +0,0 @@
1
- import { Input, ViewChild, Output, EventEmitter, ViewEncapsulation, Component, ElementRef, ContentChild, ChangeDetectorRef } from '@angular/core';
2
- import { AXDropdownComponent } from '../dropdown/dropdown.component';
3
- import { AXTextBoxComponent } from '../textbox/textbox.component';
4
- import { AXValidatableComponent } from '../base/element.class';
5
- import { AXDateTime, AXConfig } from '@acorex/core';
6
- import { AXValueEvent } from '../base/events.class';
7
- import { AXValidation } from '../validation/validation.component';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "../dropdown/dropdown.component";
10
- import * as i2 from "../textbox/textbox.component";
11
- import * as i3 from "../calendar/calendar-box/calendar-box.component";
12
- import * as i4 from "../button/button.component";
13
- import * as i5 from "angular2-text-mask";
14
- import * as i6 from "@angular/common";
15
- export class AXDataPickerChangeEvent extends AXValueEvent {
16
- }
17
- export class AXDatePickerComponent extends AXValidatableComponent {
18
- constructor(ref, cdr) {
19
- super();
20
- this.ref = ref;
21
- this.cdr = cdr;
22
- this.dayStyle = [];
23
- this.dayMinMaxResoan = '';
24
- // mmddyyyy: any = [/[0-1]/, /[0-9]/, '-', /[0-1]/, /[0-9]/, '-', /[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/];
25
- this.yyyyMMdd = [/[1-2]/, /[0-9]/, /[0-9]/, /[0-9]/, '-', /[0-1]/, /[0-9]/, '-', /[0-3]/, /[0-9]/];
26
- this.ddMMyyyy = [/[0-3]/, /[0-9]/, '-', /[0-1]/, /[0-9]/, '-', /[1-9]/, /[0-9]/, /[0-9]/, /[0-9]/];
27
- this.yyyyddMM = [/[1-9]/, /[0-9]/, /[0-9]/, /[0-9]/, '-', /[0-3]/, /[0-9]/, '-', /[0-1]/, /[0-9]/];
28
- this.placeholder = '';
29
- this.allowClear = false;
30
- this.textAlign = null;
31
- this.showToday = false;
32
- this.selectableHoliday = true;
33
- this.showTodayButton = true;
34
- this.openByClick = false;
35
- this.cursorPosition = 0;
36
- this.model = null;
37
- this._renderPicker = false;
38
- this.size = 'md';
39
- this.typeChange = new EventEmitter();
40
- this._type = 'gregorian';
41
- this.userChange = false;
42
- this.onValueChanged = new EventEmitter();
43
- this.valueChange = new EventEmitter();
44
- // set defaults
45
- if (AXConfig.get('dateTime.type')) {
46
- this.type = AXConfig.get('dateTime.type');
47
- }
48
- }
49
- get validation() {
50
- return this._validation ? this._validation : this._contentValidation;
51
- }
52
- set validation(v) {
53
- this._validation = v;
54
- }
55
- get type() {
56
- return this._type;
57
- }
58
- set type(v) {
59
- if (v != this._type) {
60
- this._type = v;
61
- if (this._value) {
62
- this.value = this._value.date;
63
- }
64
- this._setDateType();
65
- this.typeChange.emit(v);
66
- }
67
- }
68
- selectToday() {
69
- this.value = new Date();
70
- }
71
- focus() {
72
- // this.dropdown.focus();
73
- this.input.focus();
74
- }
75
- convertMaskToDate(text) {
76
- if (this.type == 'jalali') {
77
- var d = new AXDateTime().convertStringToGregorian(text, 'YYYY/M/D');
78
- }
79
- else {
80
- var d = new Date(new AXDateTime(text, 'gregorian').toISOString());
81
- }
82
- return d;
83
- }
84
- convertMask(date) {
85
- let y;
86
- let m;
87
- let d;
88
- switch (this.dateType.mask) {
89
- case this.yyyyMMdd:
90
- y = date.slice(0, 4);
91
- m = date.slice(5, 7);
92
- d = date.slice(8, 10);
93
- break;
94
- case this.ddMMyyyy:
95
- y = date.slice(6, 10);
96
- m = date.slice(3, 5);
97
- d = date.slice(0, 2);
98
- break;
99
- case this.yyyyddMM:
100
- y = date.slice(0, 4);
101
- m = date.slice(8, 10);
102
- d = date.slice(5, 7);
103
- break;
104
- }
105
- return { year: y, monnth: m, day: d };
106
- }
107
- textChange(e) {
108
- this.text = e.value;
109
- const date = this.convertMask(this.text);
110
- if (this.text && this.text.indexOf('_') === -1 && this.text.length == 10 && this.type == 'jalali') {
111
- this.userChange = e.isUserChange;
112
- this.value = this.convertMaskToDate(date.year + '-' + date.monnth + '-' + date.day);
113
- }
114
- else if (this.text && this.text.indexOf('_') === -1 && this.text.length == 10 && this.type == 'gregorian') {
115
- this.userChange = e.isUserChange;
116
- this.value = this.convertMaskToDate(date.year + '-' + date.monnth + '-' + date.day);
117
- }
118
- }
119
- ngOnInit() {
120
- this._setDateType();
121
- }
122
- ngAfterViewInit() {
123
- setTimeout(() => {
124
- this.text = this._value?.toString();
125
- if (this.showToday && !this.value) {
126
- this.selectToday();
127
- }
128
- if (this.dropdown.dropdownWidth > 200 || this.dropdown.dropdownWidth < 200) {
129
- this.dropdown.dropdownWidth = 250;
130
- }
131
- this.cdr.markForCheck();
132
- });
133
- }
134
- ngAfterContentInit() {
135
- this.initValidation(this.ref, 'value', this.validation);
136
- }
137
- clear() {
138
- this.userChange = true;
139
- this.value = null;
140
- }
141
- get value() {
142
- return this._value?.date;
143
- }
144
- set value(v) {
145
- this.validate();
146
- const oldValue = this._value;
147
- const old = this.value;
148
- if (v) {
149
- this._value = new AXDateTime(v, this.type);
150
- }
151
- else {
152
- this._value = null;
153
- }
154
- let unValidDate = false;
155
- if (this.max || this.min) {
156
- unValidDate = this.isInMInMaxRange(AXDateTime.convert(v));
157
- }
158
- if (!unValidDate) {
159
- if ((!v && oldValue) || (this._value && !this._value.equal(oldValue, 'day'))) {
160
- this.text = this._value?.toString();
161
- setTimeout(() => {
162
- this.valueChange.emit(v);
163
- this.onValueChanged.emit({
164
- component: this,
165
- oldValue: old,
166
- value: v,
167
- isUserChange: this.userChange
168
- });
169
- }, 100);
170
- }
171
- }
172
- else {
173
- this.text = '';
174
- }
175
- this.userChange = false;
176
- }
177
- _setDateType() {
178
- switch (this.dateType) {
179
- case 'yyyyMMdd':
180
- this.dateType = {
181
- guide: true,
182
- showMask: true,
183
- mask: this.yyyyMMdd,
184
- keepCharPositions: true
185
- };
186
- break;
187
- case 'ddMMyyyy':
188
- this.dateType = {
189
- guide: true,
190
- showMask: true,
191
- mask: this.ddMMyyyy,
192
- keepCharPositions: true
193
- };
194
- break;
195
- case 'yyyyddMM':
196
- this.dateType = {
197
- guide: true,
198
- showMask: true,
199
- mask: this.yyyyddMM,
200
- keepCharPositions: true
201
- };
202
- break;
203
- default:
204
- if (this.type == 'gregorian') {
205
- this.dateType = {
206
- guide: true,
207
- showMask: true,
208
- mask: this.ddMMyyyy,
209
- keepCharPositions: true
210
- };
211
- }
212
- else if (this.type == 'jalali') {
213
- this.dateType = {
214
- guide: true,
215
- showMask: true,
216
- mask: this.yyyyMMdd,
217
- keepCharPositions: true
218
- };
219
- }
220
- break;
221
- }
222
- }
223
- isInMInMaxRange(d) {
224
- let r = false;
225
- if (d !== undefined) {
226
- if (this.min && !this.max) {
227
- r = d.compaireNew(new AXDateTime(this.min, this.type), 'YMD', this.type) === -1;
228
- }
229
- if (this.max && !this.min) {
230
- r = d.compaireNew(new AXDateTime(this.max, this.type), 'YMD', this.type) === 1;
231
- }
232
- if (this.min && this.max) {
233
- r =
234
- d.compaireNew(new AXDateTime(this.min, this.type), 'YMD', this.type) === -1 ||
235
- d.compaireNew(new AXDateTime(this.max, this.type), 'YMD', this.type) === 1;
236
- }
237
- }
238
- return r;
239
- }
240
- onDateChange(e) {
241
- this.userChange = true;
242
- this.dropdown.close();
243
- //this.clearValidationStyle(this.ref.nativeElement);
244
- }
245
- onClick(e) {
246
- this.userChange = true;
247
- this.dropdown.close();
248
- }
249
- onStartfocus() {
250
- if (this.text == undefined || this.text == null || this.text == '') {
251
- this.input.input.nativeElement.style.caretColor = 'transparent';
252
- setTimeout(() => {
253
- this.setCaretPosition(this.input.input.nativeElement, 0);
254
- this.cursorPosition = 0;
255
- this.input.input.nativeElement.style.caretColor = 'auto';
256
- }, 0);
257
- }
258
- }
259
- handleInputFocus() {
260
- if (this.openByClick) {
261
- this._renderPicker = true;
262
- this.dropdown.open();
263
- }
264
- else {
265
- this.onStartfocus();
266
- }
267
- // this.input.input.nativeElement.focus();
268
- }
269
- handleInputBlur() {
270
- if (this.text && this.text.indexOf('_') != -1) {
271
- this.text = '';
272
- this.value = null;
273
- }
274
- }
275
- handleButtonClick() {
276
- this._renderPicker = true;
277
- setTimeout(() => {
278
- this.dropdown.toggle();
279
- });
280
- }
281
- handleKeyPress(e) {
282
- if (e.type == 'keydown' || e.type == 'keypress' || e.type == 'keyup') {
283
- if (e.key === 'Delete') {
284
- e.preventDefault();
285
- }
286
- if (e.key === 'Backspace') {
287
- }
288
- if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {
289
- if (this.input.input.nativeElement.selectionStart || this.input.input.nativeElement.selectionStart === 0) {
290
- this.cursorPosition = this.input.input.nativeElement.selectionStart;
291
- }
292
- }
293
- if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
294
- e.preventDefault();
295
- e.stopPropagation();
296
- }
297
- }
298
- const inputChar = String.fromCharCode(e.charCode);
299
- if (this.text != undefined) {
300
- const ind1 = this.text.charAt(0);
301
- const ind2 = this.text.charAt(1);
302
- const ind3 = this.text.charAt(2);
303
- const ind4 = this.text.charAt(3);
304
- const ind5 = this.text.charAt(4);
305
- const ind6 = this.text.charAt(5);
306
- const ind7 = this.text.charAt(6);
307
- const ind8 = this.text.charAt(7);
308
- const ind9 = this.text.charAt(8);
309
- const ind10 = this.text.charAt(9);
310
- switch (this.dateType.mask) {
311
- case this.yyyyMMdd:
312
- if (e.type == 'keypress') {
313
- this.handleClick();
314
- if ((ind6 == '1' && ind7 == '_' && inputChar >= '3') ||
315
- (((ind6 == '0' && ind7 == '_') || (ind9 == '0' && ind10 == '_')) && inputChar == '0')) {
316
- e.preventDefault();
317
- }
318
- else if (ind9 == '3' && ind10 == '_') {
319
- if (ind6 + ind7 <= '06' && inputChar >= '2') {
320
- e.preventDefault();
321
- }
322
- else if (ind6 + ind7 > '06' && inputChar >= '1') {
323
- e.preventDefault();
324
- }
325
- }
326
- }
327
- if (this.text.indexOf('_') === -1 && this.text !== '') {
328
- if (e.type === 'keydown') {
329
- if (e.key === 'ArrowUp') {
330
- if (this.cursorPosition <= 4) {
331
- this.text = String(Number(ind1 + ind2 + ind3 + ind4) + 1) + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;
332
- }
333
- if (this.cursorPosition >= 5 && this.cursorPosition <= 7) {
334
- if (Number(ind6 + ind7) < 12) {
335
- if (Number(ind6 + ind7) < 9) {
336
- this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '0' + String(Number(ind6 + ind7) + 1) + ind8 + ind9 + ind10;
337
- }
338
- else {
339
- this.text = ind1 + ind2 + ind3 + ind4 + ind5 + String(Number(ind6 + ind7) + 1) + ind8 + ind9 + ind10;
340
- }
341
- }
342
- else {
343
- this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '01' + ind8 + ind9 + ind10;
344
- }
345
- }
346
- if (this.cursorPosition >= 8) {
347
- if (Number(ind9 + ind10) < 31) {
348
- if (Number(ind9 + ind10) < 9) {
349
- this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '0' + String(Number(ind9 + ind10) + 1);
350
- }
351
- else {
352
- this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + String(Number(ind9 + ind10) + 1);
353
- }
354
- }
355
- else {
356
- this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '01';
357
- }
358
- }
359
- // this.input.input.nativeElement.style.caretColor = 'transparent';
360
- // setTimeout(() => {
361
- // this.setCaret();
362
- // e.preventDefault();
363
- // this.input.input.nativeElement.style.caretColor = 'auto';
364
- // }, 0);
365
- // e.preventDefault();
366
- }
367
- else if (e.key === 'ArrowDown') {
368
- if (this.cursorPosition <= 4) {
369
- this.text = String(Number(ind1 + ind2 + ind3 + ind4) - 1) + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;
370
- }
371
- else if (this.cursorPosition > 4 && this.cursorPosition <= 7) {
372
- if (Number(ind6 + ind7) > 1) {
373
- if (Number(ind6 + ind7) < 11) {
374
- this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '0' + String(Number(ind6 + ind7) - 1) + ind8 + ind9 + ind10;
375
- }
376
- else {
377
- this.text = ind1 + ind2 + ind3 + ind4 + ind5 + String(Number(ind6 + ind7) - 1) + ind8 + ind9 + ind10;
378
- }
379
- }
380
- else {
381
- this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '12' + ind8 + ind9 + ind10;
382
- }
383
- }
384
- else if (this.cursorPosition >= 8) {
385
- if (Number(ind9 + ind10) > 1) {
386
- if (Number(ind9 + ind10) < 11) {
387
- this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '0' + String(Number(ind9 + ind10) - 1);
388
- }
389
- else {
390
- this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + String(Number(ind9 + ind10) - 1);
391
- }
392
- }
393
- else {
394
- this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '31';
395
- }
396
- }
397
- // this.input.input.nativeElement.style.caretColor = 'transparent';
398
- // setTimeout(() => {
399
- // this.setCaret();
400
- // this.input.input.nativeElement.style.caretColor = 'auto';
401
- // }, 0);
402
- }
403
- if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
404
- this.input.input.nativeElement.style.caretColor = 'transparent';
405
- e.preventDefault();
406
- e.stopPropagation();
407
- return false;
408
- }
409
- }
410
- }
411
- if (e.type === 'keyup') {
412
- if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
413
- this.setCaret();
414
- this.input.input.nativeElement.style.caretColor = 'auto';
415
- e.preventDefault();
416
- e.stopPropagation();
417
- }
418
- }
419
- break;
420
- case this.ddMMyyyy:
421
- if (e.type === 'keypress') {
422
- this.handleClick();
423
- if ((ind4 == '1' && ind5 == '_' && inputChar >= '3') ||
424
- (((ind1 == '0' && ind2 == '_') || (ind4 == '0' && ind5 == '_')) && inputChar == '0')) {
425
- e.preventDefault();
426
- }
427
- else {
428
- if (ind1 == '3' && ind2 == '_' && inputChar >= '2') {
429
- e.preventDefault();
430
- }
431
- }
432
- }
433
- if (this.text.indexOf('_') === -1 && this.text !== '') {
434
- if (e.type === 'keydown') {
435
- if (e.key === 'ArrowUp') {
436
- if (this.cursorPosition >= 6) {
437
- this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + String(Number(ind7 + ind8 + ind9 + ind10) + 1);
438
- }
439
- if (this.cursorPosition > 2 && this.cursorPosition <= 5) {
440
- if (Number(ind4 + ind5) < 12) {
441
- if (Number(ind4 + ind5) < 9) {
442
- this.text = ind1 + ind2 + ind3 + '0' + String(Number(ind4 + ind5) + 1) + ind6 + ind7 + ind8 + ind9 + ind10;
443
- }
444
- else {
445
- this.text = ind1 + ind2 + ind3 + String(Number(ind4 + ind5) + 1) + ind6 + ind7 + ind8 + ind9 + ind10;
446
- }
447
- }
448
- else {
449
- this.text = ind1 + ind2 + ind3 + '01' + ind6 + ind7 + ind8 + ind9 + ind10;
450
- }
451
- }
452
- if (this.cursorPosition <= 2) {
453
- if (Number(ind1 + ind2) < 31) {
454
- if (Number(ind1 + ind2) < 9) {
455
- this.text = '0' + String(Number(ind1 + ind2) + 1) + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;
456
- }
457
- else {
458
- this.text = String(Number(ind1 + ind2) + 1) + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;
459
- }
460
- }
461
- else {
462
- this.text = '01' + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;
463
- }
464
- }
465
- // this.input.input.nativeElement.style.caretColor = 'transparent';
466
- // setTimeout(() => {
467
- // this.setCaret();
468
- // this.input.input.nativeElement.style.caretColor = 'auto';
469
- // }, 0);
470
- }
471
- else if (e.key === 'ArrowDown') {
472
- if (this.cursorPosition >= 6) {
473
- this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + String(Number(ind7 + ind8 + ind9 + ind10) - 1);
474
- }
475
- else if (this.cursorPosition > 2 && this.cursorPosition <= 5) {
476
- if (Number(ind4 + ind5) > 1) {
477
- if (Number(ind4 + ind5) < 11) {
478
- this.text = ind1 + ind2 + ind3 + '0' + String(Number(ind4 + ind5) - 1) + ind6 + ind7 + ind8 + ind9 + ind10;
479
- }
480
- else {
481
- this.text = ind1 + ind2 + ind3 + String(Number(ind4 + ind5) - 1) + ind6 + ind7 + ind8 + ind9 + ind10;
482
- }
483
- }
484
- else {
485
- this.text = ind1 + ind2 + ind3 + '12' + ind6 + ind7 + ind8 + ind9 + ind10;
486
- }
487
- }
488
- else if (this.cursorPosition <= 2) {
489
- if (Number(ind1 + ind2) > 1) {
490
- if (Number(ind1 + ind2) < 11) {
491
- this.text = '0' + String(Number(ind1 + ind2) - 1) + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;
492
- }
493
- else {
494
- this.text = String(Number(ind1 + ind2) - 1) + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;
495
- }
496
- }
497
- else {
498
- this.text = '31' + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;
499
- }
500
- }
501
- // this.input.input.nativeElement.style.caretColor = 'transparent';
502
- // setTimeout(() => {
503
- // this.setCaret();
504
- // this.input.input.nativeElement.style.caretColor = 'auto';
505
- // }, 0);
506
- }
507
- if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
508
- this.input.input.nativeElement.style.caretColor = 'transparent';
509
- e.preventDefault();
510
- e.stopPropagation();
511
- return false;
512
- }
513
- }
514
- }
515
- if (e.type === 'keyup') {
516
- if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
517
- this.setCaret();
518
- this.input.input.nativeElement.style.caretColor = 'auto';
519
- e.preventDefault();
520
- e.stopPropagation();
521
- }
522
- }
523
- break;
524
- case this.yyyyddMM:
525
- if (e.type === 'keypress') {
526
- if ((ind9 === '1' && ind10 == '_' && inputChar >= '3') ||
527
- (((ind6 == '0' && ind7 == '_') || (ind9 == '0' && ind10)) && inputChar == '0')) {
528
- e.preventDefault();
529
- }
530
- else if (ind6 == '3' && ind7 == '_' && inputChar >= '2') {
531
- e.preventDefault();
532
- }
533
- setTimeout(() => {
534
- this.handleClick();
535
- }, 0);
536
- }
537
- if (this.text.indexOf('_') === -1 && this.text !== '') {
538
- if (e.type === 'keydown') {
539
- if (e.key === 'ArrowUp') {
540
- if (this.cursorPosition <= 4) {
541
- this.text = String(Number(ind1 + ind2 + ind3 + ind4) + 1) + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;
542
- }
543
- if (this.cursorPosition > 4 && this.cursorPosition <= 7) {
544
- if (Number(ind6 + ind7) < 31) {
545
- if (Number(ind6 + ind7) < 9) {
546
- this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '0' + String(Number(ind6 + ind7) + 1) + ind8 + ind9 + ind10;
547
- }
548
- else {
549
- this.text = ind1 + ind2 + ind3 + ind4 + ind5 + String(Number(ind6 + ind7) + 1) + ind8 + ind9 + ind10;
550
- }
551
- }
552
- else {
553
- this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '01' + ind8 + ind9 + ind10;
554
- }
555
- }
556
- if (this.cursorPosition >= 8) {
557
- if (Number(ind9 + ind10) < 12) {
558
- if (Number(ind9 + ind10) < 9) {
559
- this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '0' + String(Number(ind9 + ind10) + 1);
560
- }
561
- else {
562
- this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + String(Number(ind9 + ind10) + 1);
563
- }
564
- }
565
- else {
566
- this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '01';
567
- }
568
- }
569
- // this.input.input.nativeElement.style.caretColor = 'transparent';
570
- // setTimeout(() => {
571
- // this.setCaret();
572
- // this.input.input.nativeElement.style.caretColor = 'auto';
573
- // }, 0);
574
- }
575
- else if (e.key === 'ArrowDown') {
576
- if (this.cursorPosition <= 4) {
577
- this.text = String(Number(ind1 + ind2 + ind3 + ind4) - 1) + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;
578
- }
579
- else if (this.cursorPosition > 4 && this.cursorPosition <= 7) {
580
- if (Number(ind6 + ind7) > 1) {
581
- if (Number(ind6 + ind7) < 11) {
582
- this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '0' + String(Number(ind6 + ind7) - 1) + ind8 + ind9 + ind10;
583
- }
584
- else {
585
- this.text = ind1 + ind2 + ind3 + ind4 + ind5 + String(Number(ind6 + ind7) - 1) + ind8 + ind9 + ind10;
586
- }
587
- }
588
- else {
589
- this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '31' + ind8 + ind9 + ind10;
590
- }
591
- }
592
- else if (this.cursorPosition >= 8) {
593
- if (Number(ind9 + ind10) > 1) {
594
- if (Number(ind9 + ind10) < 11) {
595
- this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '0' + String(Number(ind9 + ind10) - 1);
596
- }
597
- else {
598
- this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + String(Number(ind9 + ind10) - 1);
599
- }
600
- }
601
- else {
602
- this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '12';
603
- }
604
- }
605
- // this.input.input.nativeElement.style.caretColor = 'transparent';
606
- // setTimeout(() => {
607
- // this.setCaret();
608
- // this.input.input.nativeElement.style.caretColor = 'auto';
609
- // }, 0);
610
- }
611
- if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
612
- this.input.input.nativeElement.style.caretColor = 'transparent';
613
- e.preventDefault();
614
- e.stopPropagation();
615
- return false;
616
- }
617
- }
618
- }
619
- if (e.type === 'keyup') {
620
- if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
621
- this.setCaret();
622
- this.input.input.nativeElement.style.caretColor = 'auto';
623
- e.preventDefault();
624
- e.stopPropagation();
625
- }
626
- }
627
- break;
628
- default:
629
- break;
630
- }
631
- }
632
- }
633
- handleClick() {
634
- if (this.input.input.nativeElement.selectionStart || this.input.input.nativeElement.selectionStart === 0) {
635
- this.cursorPosition = this.input.input.nativeElement.selectionStart;
636
- }
637
- }
638
- setCaretPosition(ctrl, pos) {
639
- if (ctrl.setSelectionRange) {
640
- ctrl.focus();
641
- ctrl.setSelectionRange(pos, pos);
642
- }
643
- }
644
- setCaret() {
645
- this.setCaretPosition(this.input.input.nativeElement, this.cursorPosition);
646
- }
647
- }
648
- AXDatePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXDatePickerComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
649
- AXDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AXDatePickerComponent, selector: "ax-date-picker", inputs: { dayStyle: "dayStyle", dayMinMaxResoan: "dayMinMaxResoan", validation: "validation", placeholder: "placeholder", min: "min", max: "max", readonly: "readonly", disabled: "disabled", allowClear: "allowClear", textAlign: "textAlign", showToday: "showToday", selectableHoliday: "selectableHoliday", dateType: "dateType", showTodayButton: "showTodayButton", openByClick: "openByClick", size: "size", type: "type", value: "value" }, outputs: { typeChange: "typeChange", onValueChanged: "onValueChanged", valueChange: "valueChange" }, host: { styleAttribute: "width: 100%" }, providers: [{ provide: AXValidatableComponent, useExisting: AXDatePickerComponent }], queries: [{ propertyName: "_contentValidation", first: true, predicate: AXValidation, descendants: true, static: true }], viewQueries: [{ propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true, static: true }, { propertyName: "input", first: true, predicate: ["input"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ax-drop-down [readonly]=\"readonly\" [fitParent]=\"true\" [size]=\"size\" [showDropDownButton]=\"false\"\r\n icon=\"far fa-calendar-alt\" #dropdown maxHeight=\"unset\">\r\n <ng-container start>\r\n <ng-content select=\"[start]\">\r\n </ng-content>\r\n </ng-container>\r\n <ng-container header>\r\n <ax-text-box #input [textAlign]=\"textAlign\" [(value)]=\"text\" [readonly]=\"false\" [textMask]=\"dateType\"\r\n [disabled]=\"disabled\" [placeholder]=\"placeholder\" [size]=\"size\" (onkey)=\"handleKeyPress($event)\"\r\n (onFocus)=\"handleInputFocus()\" (click)=\"handleClick()\" (onBlur)=\"handleInputBlur()\"\r\n (onValueChanged)=\"textChange($event)\"></ax-text-box>\r\n </ng-container>\r\n <ng-container panel>\r\n <ax-calendar-box *ngIf=\"_renderPicker\" [showTodayButton]=\"showTodayButton\"\r\n [selectableHoliday]=\"selectableHoliday\" [min]=\"min\" [max]=\"max\" [size]=\"size\" (onClick)=\"onClick($event)\"\r\n (onValueChanged)=\"onDateChange($event)\" [type]=\"type\" [(value)]=\"value\" [dayStyle]=\"dayStyle\"\r\n [dayMinMaxResoan]=\"dayMinMaxResoan\">\r\n </ax-calendar-box>\r\n </ng-container>\r\n <ng-container end>\r\n <ax-button end *ngIf=\"allowClear && value\" [disabled]=\"disabled\" icon=\"far fa-times icon\" type=\"blank danger\"\r\n (click)=\"clear()\" [size]=\"size\" [tabIndex]=\"-1\">\r\n </ax-button>\r\n <ax-button end icon=\"far fa-calendar-alt icon\" type=\"light blank\" (click)=\"handleButtonClick()\"\r\n [disabled]=\"disabled\" [size]=\"size\" [tabIndex]=\"-1\"></ax-button>\r\n <ng-content select=\"[end]\">\r\n </ng-content>\r\n </ng-container>\r\n\r\n</ax-drop-down>", styles: [".ax-dropdown-container-bordered .ax-calendar-container{border:none!important}\n"], components: [{ type: i1.AXDropdownComponent, selector: "ax-drop-down", inputs: ["rtl", "readonly", "loading"], outputs: ["dropdownToggle", "onButtonClick"] }, { type: i2.AXTextBoxComponent, selector: "ax-text-box", inputs: ["mask", "type", "showMask", "maxLength", "maskGuid", "maskPlaceholder", "maskKeepCharPositions"] }, { type: i3.AXCalendarBoxComponent, selector: "ax-calendar-box", inputs: ["size", "type", "locale", "dir", "min", "max", "selectableHoliday", "dayStyle", "dayMinMaxResoan", "showTodayButton", "view", "depth", "value"], outputs: ["onValueChanged", "onClick", "valueChange"] }, { type: i4.AXButtonComponent, selector: "ax-button", inputs: ["type", "icon", "submitBehavior", "cancelBehavior", "block", "loading", "selected"] }], directives: [{ type: i5.MaskedInputDirective, selector: "[textMask]", inputs: ["textMask"], exportAs: ["textMask"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None });
650
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXDatePickerComponent, decorators: [{
651
- type: Component,
652
- args: [{ selector: 'ax-date-picker', encapsulation: ViewEncapsulation.None, providers: [{ provide: AXValidatableComponent, useExisting: AXDatePickerComponent }], host: { style: 'width: 100%' }, template: "<ax-drop-down [readonly]=\"readonly\" [fitParent]=\"true\" [size]=\"size\" [showDropDownButton]=\"false\"\r\n icon=\"far fa-calendar-alt\" #dropdown maxHeight=\"unset\">\r\n <ng-container start>\r\n <ng-content select=\"[start]\">\r\n </ng-content>\r\n </ng-container>\r\n <ng-container header>\r\n <ax-text-box #input [textAlign]=\"textAlign\" [(value)]=\"text\" [readonly]=\"false\" [textMask]=\"dateType\"\r\n [disabled]=\"disabled\" [placeholder]=\"placeholder\" [size]=\"size\" (onkey)=\"handleKeyPress($event)\"\r\n (onFocus)=\"handleInputFocus()\" (click)=\"handleClick()\" (onBlur)=\"handleInputBlur()\"\r\n (onValueChanged)=\"textChange($event)\"></ax-text-box>\r\n </ng-container>\r\n <ng-container panel>\r\n <ax-calendar-box *ngIf=\"_renderPicker\" [showTodayButton]=\"showTodayButton\"\r\n [selectableHoliday]=\"selectableHoliday\" [min]=\"min\" [max]=\"max\" [size]=\"size\" (onClick)=\"onClick($event)\"\r\n (onValueChanged)=\"onDateChange($event)\" [type]=\"type\" [(value)]=\"value\" [dayStyle]=\"dayStyle\"\r\n [dayMinMaxResoan]=\"dayMinMaxResoan\">\r\n </ax-calendar-box>\r\n </ng-container>\r\n <ng-container end>\r\n <ax-button end *ngIf=\"allowClear && value\" [disabled]=\"disabled\" icon=\"far fa-times icon\" type=\"blank danger\"\r\n (click)=\"clear()\" [size]=\"size\" [tabIndex]=\"-1\">\r\n </ax-button>\r\n <ax-button end icon=\"far fa-calendar-alt icon\" type=\"light blank\" (click)=\"handleButtonClick()\"\r\n [disabled]=\"disabled\" [size]=\"size\" [tabIndex]=\"-1\"></ax-button>\r\n <ng-content select=\"[end]\">\r\n </ng-content>\r\n </ng-container>\r\n\r\n</ax-drop-down>", styles: [".ax-dropdown-container-bordered .ax-calendar-container{border:none!important}\n"] }]
653
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { dropdown: [{
654
- type: ViewChild,
655
- args: ['dropdown', { static: true }]
656
- }], input: [{
657
- type: ViewChild,
658
- args: ['input', { static: true }]
659
- }], dayStyle: [{
660
- type: Input
661
- }], dayMinMaxResoan: [{
662
- type: Input
663
- }], _contentValidation: [{
664
- type: ContentChild,
665
- args: [AXValidation, { static: true }]
666
- }], validation: [{
667
- type: Input
668
- }], placeholder: [{
669
- type: Input
670
- }], min: [{
671
- type: Input
672
- }], max: [{
673
- type: Input
674
- }], readonly: [{
675
- type: Input
676
- }], disabled: [{
677
- type: Input
678
- }], allowClear: [{
679
- type: Input
680
- }], textAlign: [{
681
- type: Input
682
- }], showToday: [{
683
- type: Input
684
- }], selectableHoliday: [{
685
- type: Input
686
- }], dateType: [{
687
- type: Input
688
- }], showTodayButton: [{
689
- type: Input
690
- }], openByClick: [{
691
- type: Input
692
- }], size: [{
693
- type: Input
694
- }], typeChange: [{
695
- type: Output
696
- }], type: [{
697
- type: Input
698
- }], onValueChanged: [{
699
- type: Output
700
- }], valueChange: [{
701
- type: Output
702
- }], value: [{
703
- type: Input
704
- }] } });
705
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvc3JjL2xpYi9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUVaLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQStELE1BQU0sdUJBQXVCLENBQUM7QUFDNUgsT0FBTyxFQUFrQixVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7O0FBRWxFLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxZQUFrQjtDQUU5RDtBQVVELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxzQkFBc0I7SUE0RS9ELFlBQW9CLEdBQWUsRUFBVSxHQUFzQjtRQUNqRSxLQUFLLEVBQUUsQ0FBQztRQURVLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQXBFbkUsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUdkLG9C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dkIsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsRUFBRTtvQ0FDNUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2lDQUN0RztnQ0FDRCxJQUFJLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxFQUFFO29DQUN2RCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFO3dDQUM1QixJQUFJLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFOzRDQUMzQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDO3lDQUM1Rzs2Q0FBTTs0Q0FDTCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxLQUFLLENBQUM7eUNBQ3RHO3FDQUNGO3lDQUFNO3dDQUNMLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxLQUFLLENBQUM7cUNBQzNFO2lDQUNG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UCxXQUFXO3NCQURWLE1BQU07Z0JBS0ksS0FBSztzQkFEZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBJbnB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBDb250ZW50Q2hpbGQsXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBWERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi4vZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQVhUZXh0Qm94Q29tcG9uZW50IH0gZnJvbSAnLi4vdGV4dGJveC90ZXh0Ym94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFYVmFsaWRhdGFibGVDb21wb25lbnQsIEFYQmFzZVNpemFibGVDb21wb25lbnQsIEFYRWxlbWVudFNpemUsIEFYQmFzZVZhbHVlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS9lbGVtZW50LmNsYXNzJztcclxuaW1wb3J0IHsgQVhDYWxlbmRhclR5cGUsIEFYRGF0ZVRpbWUsIEFYQ29uZmlnIH0gZnJvbSAnQGFjb3JleC9jb3JlJztcclxuaW1wb3J0IHsgQVhWYWx1ZUV2ZW50IH0gZnJvbSAnLi4vYmFzZS9ldmVudHMuY2xhc3MnO1xyXG5pbXBvcnQgeyBBWFZhbGlkYXRpb24gfSBmcm9tICcuLi92YWxpZGF0aW9uL3ZhbGlkYXRpb24uY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCBjbGFzcyBBWERhdGFQaWNrZXJDaGFuZ2VFdmVudCBleHRlbmRzIEFYVmFsdWVFdmVudDxEYXRlPiB7XHJcbiAgaXNVc2VyQ2hhbmdlOiBib29sZWFuO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F4LWRhdGUtcGlja2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RhdGUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEFYVmFsaWRhdGFibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWERhdGVQaWNrZXJDb21wb25lbnQgfV0sXHJcbiAgaG9zdDogeyBzdHlsZTogJ3dpZHRoOiAxMDAlJyB9XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBWERhdGVQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBBWFZhbGlkYXRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgQVhCYXNlU2l6YWJsZUNvbXBvbmVudCB7XHJcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd24nLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGRyb3Bkb3duOiBBWERyb3Bkb3duQ29tcG9uZW50O1xyXG5cclxuICBAVmlld0NoaWxkKCdpbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgaW5wdXQ6IEFYVGV4dEJveENvbXBvbmVudDtcclxuXHJcbiAgQElucHV0KClcclxuICBkYXlTdHlsZSA9IFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGRheU1pbk1heFJlc29hbiA9ICcnO1xyXG5cclxuICAvLyBtbWRkeXl5eTogYW55ID0gWy9bMC0xXS8sIC9bMC05XS8sICctJywgL1swLTFdLywgL1swLTldLywgJy0nLCAvWzAtOV0vLCAvWzAtOV0vLCAvWzAtOV0vLCAvWzAtOV0vXTtcclxuICB5eXl5TU1kZDogYW55ID0gWy9bMS0yXS8sIC9bMC05XS8sIC9bMC05XS8sIC9bMC05XS8sICctJywgL1swLTFdLywgL1swLTldLywgJy0nLCAvWzAtM10vLCAvWzAtOV0vXTtcclxuICBkZE1NeXl5eTogYW55ID0gWy9bMC0zXS8sIC9bMC05XS8sICctJywgL1swLTFdLywgL1swLTldLywgJy0nLCAvWzEtOV0vLCAvWzAtOV0vLCAvWzAtOV0vLCAvWzAtOV0vXTtcclxuICB5eXl5ZGRNTTogYW55ID0gWy9bMS05XS8sIC9bMC05XS8sIC9bMC05XS8sIC9bMC05XS8sICctJywgL1swLTNdLywgL1swLTldLywgJy0nLCAvWzAtMV0vLCAvWzAtOV0vXTtcclxuICAvLyB5eXl5TU1kZDE6IGFueSA9IFsvWzAtOV0vLCAvWzAtOV0vLCAvWzAtOV0vLCAvWzAtOV0vLCAnLycsIC9bMC0xXS8sIC9bMC05XS8sICcvJywgL1swLTNdLywgL1swLTldL107XHJcbiAgLy8gZGRNTXl5eXkyOiBhbnkgPSBbL1swLTNdLywgL1swLTldLywgJy8nLCAvWzAtMV0vLCAvWzAtOV0vLCAnLycsIC9bMC05XS8sIC9bMC05XS8sIC9bMC05XS8sIC9bMC05XS9dO1xyXG4gIC8vIHl5eXlkZE1NMzogYW55ID0gWy9bMC05XS8sIC9bMC05XS8sIC9bMC05XS8sIC9bMC05XS8sICcvJywgL1swLTNdLywgL1swLTldLywgJy8nLCAvWzAtMV0vLCAvWzAtOV0vXTtcclxuXHJcbiAgQENvbnRlbnRDaGlsZChBWFZhbGlkYXRpb24sIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgcHJpdmF0ZSBfY29udGVudFZhbGlkYXRpb246IEFYVmFsaWRhdGlvbjtcclxuICBwcml2YXRlIF92YWxpZGF0aW9uOiBBWFZhbGlkYXRpb247XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCB2YWxpZGF0aW9uKCk6IEFYVmFsaWRhdGlvbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGlvbiA/IHRoaXMuX3ZhbGlkYXRpb24gOiB0aGlzLl9jb250ZW50VmFsaWRhdGlvbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgdmFsaWRhdGlvbih2OiBBWFZhbGlkYXRpb24pIHtcclxuICAgIHRoaXMuX3ZhbGlkYXRpb24gPSB2O1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIG1pbjogRGF0ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBtYXg6IERhdGU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcmVhZG9ubHk6IGJvb2xlYW47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYWxsb3dDbGVhcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHRleHRBbGlnbjogJ3JpZ2h0JyB8ICdsZWZ0JyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNob3dUb2RheTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNlbGVjdGFibGVIb2xpZGF5OiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBkYXRlVHlwZTogYW55O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNob3dUb2RheUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgb3BlbkJ5Q2xpY2s6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY3Vyc29yUG9zaXRpb246IG51bWJlciA9IDA7XHJcblxyXG4gIG1vZGVsOiBhbnkgPSBudWxsO1xyXG4gIHRleHQ6IHN0cmluZztcclxuXHJcbiAgX3JlbmRlclBpY2tlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgLy8gc2V0IGRlZmF1bHRzXHJcbiAgICBpZiAoQVhDb25maWcuZ2V0KCdkYXRlVGltZS50eXBlJykpIHtcclxuICAgICAgdGhpcy50eXBlID0gQVhDb25maWcuZ2V0KCdkYXRlVGltZS50eXBlJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHNpemU6IEFYRWxlbWVudFNpemUgPSAnbWQnO1xyXG5cclxuICBAT3V0cHV0KClcclxuICB0eXBlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QVhDYWxlbmRhclR5cGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWENhbGVuZGFyVHlwZT4oKTtcclxuXHJcbiAgcHJpdmF0ZSBfdHlwZTogQVhDYWxlbmRhclR5cGUgPSAnZ3JlZ29yaWFuJztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IHR5cGUoKTogQVhDYWxlbmRhclR5cGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX3R5cGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IHR5cGUodjogQVhDYWxlbmRhclR5cGUpIHtcclxuICAgIGlmICh2ICE9IHRoaXMuX3R5cGUpIHtcclxuICAgICAgdGhpcy5fdHlwZSA9IHY7XHJcbiAgICAgIGlmICh0aGlzLl92YWx1ZSkge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLl92YWx1ZS5kYXRlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX3NldERhdGVUeXBlKCk7XHJcbiAgICAgIHRoaXMudHlwZUNoYW5nZS5lbWl0KHYpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0VG9kYXkoKSB7XHJcbiAgICB0aGlzLnZhbHVlID0gbmV3IERhdGUoKTtcclxuICB9XHJcblxyXG4gIGZvY3VzKCk6IHZvaWQge1xyXG4gICAgLy8gdGhpcy5kcm9wZG93bi5mb2N1cygpO1xyXG4gICAgdGhpcy5pbnB1dC5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgY29udmVydE1hc2tUb0RhdGUodGV4dDogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy50eXBlID09ICdqYWxhbGknKSB7XHJcbiAgICAgIHZhciBkID0gbmV3IEFYRGF0ZVRpbWUoKS5jb252ZXJ0U3RyaW5nVG9HcmVnb3JpYW4odGV4dCwgJ1lZWVkvTS9EJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YXIgZCA9IG5ldyBEYXRlKG5ldyBBWERhdGVUaW1lKHRleHQsICdncmVnb3JpYW4nKS50b0lTT1N0cmluZygpKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZDtcclxuICB9XHJcblxyXG4gIGNvbnZlcnRNYXNrKGRhdGU6IHN0cmluZykge1xyXG4gICAgbGV0IHk7XHJcbiAgICBsZXQgbTtcclxuICAgIGxldCBkO1xyXG4gICAgc3dpdGNoICh0aGlzLmRhdGVUeXBlLm1hc2spIHtcclxuICAgICAgY2FzZSB0aGlzLnl5eXlNTWRkOlxyXG4gICAgICAgIHkgPSBkYXRlLnNsaWNlKDAsIDQpO1xyXG4gICAgICAgIG0gPSBkYXRlLnNsaWNlKDUsIDcpO1xyXG4gICAgICAgIGQgPSBkYXRlLnNsaWNlKDgsIDEwKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLmRkTU15eXl5OlxyXG4gICAgICAgIHkgPSBkYXRlLnNsaWNlKDYsIDEwKTtcclxuICAgICAgICBtID0gZGF0ZS5zbGljZSgzLCA1KTtcclxuICAgICAgICBkID0gZGF0ZS5zbGljZSgwLCAyKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLnl5eXlkZE1NOlxyXG4gICAgICAgIHkgPSBkYXRlLnNsaWNlKDAsIDQpO1xyXG4gICAgICAgIG0gPSBkYXRlLnNsaWNlKDgsIDEwKTtcclxuICAgICAgICBkID0gZGF0ZS5zbGljZSg1LCA3KTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4geyB5ZWFyOiB5LCBtb25udGg6IG0sIGRheTogZCB9O1xyXG4gIH1cclxuXHJcbiAgdGV4dENoYW5nZShlKSB7XHJcbiAgICB0aGlzLnRleHQgPSBlLnZhbHVlO1xyXG4gICAgY29uc3QgZGF0ZSA9IHRoaXMuY29udmVydE1hc2sodGhpcy50ZXh0KTtcclxuXHJcbiAgICBpZiAodGhpcy50ZXh0ICYmIHRoaXMudGV4dC5pbmRleE9mKCdfJykgPT09IC0xICYmIHRoaXMudGV4dC5sZW5ndGggPT0gMTAgJiYgdGhpcy50eXBlID09ICdqYWxhbGknKSB7XHJcbiAgICAgIHRoaXMudXNlckNoYW5nZSA9IGUuaXNVc2VyQ2hhbmdlO1xyXG5cclxuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY29udmVydE1hc2tUb0RhdGUoZGF0ZS55ZWFyICsgJy0nICsgZGF0ZS5tb25udGggKyAnLScgKyBkYXRlLmRheSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudGV4dCAmJiB0aGlzLnRleHQuaW5kZXhPZignXycpID09PSAtMSAmJiB0aGlzLnRleHQubGVuZ3RoID09IDEwICYmIHRoaXMudHlwZSA9PSAnZ3JlZ29yaWFuJykge1xyXG4gICAgICB0aGlzLnVzZXJDaGFuZ2UgPSBlLmlzVXNlckNoYW5nZTtcclxuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY29udmVydE1hc2tUb0RhdGUoZGF0ZS55ZWFyICsgJy0nICsgZGF0ZS5tb25udGggKyAnLScgKyBkYXRlLmRheSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3NldERhdGVUeXBlKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy50ZXh0ID0gdGhpcy5fdmFsdWU/LnRvU3RyaW5nKCk7XHJcbiAgICAgIGlmICh0aGlzLnNob3dUb2RheSAmJiAhdGhpcy52YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0VG9kYXkoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5kcm9wZG93bi5kcm9wZG93bldpZHRoID4gMjAwIHx8IHRoaXMuZHJvcGRvd24uZHJvcGRvd25XaWR0aCA8IDIwMCkge1xyXG4gICAgICAgIHRoaXMuZHJvcGRvd24uZHJvcGRvd25XaWR0aCA9IDI1MDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0VmFsaWRhdGlvbih0aGlzLnJlZiwgJ3ZhbHVlJywgdGhpcy52YWxpZGF0aW9uKTtcclxuICB9XHJcblxyXG4gIGNsZWFyKCkge1xyXG4gICAgdGhpcy51c2VyQ2hhbmdlID0gdHJ1ZTtcclxuICAgIHRoaXMudmFsdWUgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgdXNlckNoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBvblZhbHVlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYRGF0YVBpY2tlckNoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhEYXRhUGlja2VyQ2hhbmdlRXZlbnQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XHJcblxyXG4gIHByaXZhdGUgX3ZhbHVlOiBBWERhdGVUaW1lO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCB2YWx1ZSgpOiBEYXRlIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZT8uZGF0ZTtcclxuICB9XHJcbiAgcHVibGljIHNldCB2YWx1ZSh2OiBEYXRlKSB7XHJcbiAgICB0aGlzLnZhbGlkYXRlKCk7XHJcbiAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMuX3ZhbHVlO1xyXG4gICAgY29uc3Qgb2xkID0gdGhpcy52YWx1ZTtcclxuXHJcbiAgICBpZiAodikge1xyXG4gICAgICB0aGlzLl92YWx1ZSA9IG5ldyBBWERhdGVUaW1lKHYsIHRoaXMudHlwZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBsZXQgdW5WYWxpZERhdGUgPSBmYWxzZTtcclxuICAgIGlmICh0aGlzLm1heCB8fCB0aGlzLm1pbikge1xyXG4gICAgICB1blZhbGlkRGF0ZSA9IHRoaXMuaXNJbk1Jbk1heFJhbmdlKEFYRGF0ZVRpbWUuY29udmVydCh2KSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF1blZhbGlkRGF0ZSkge1xyXG4gICAgICBpZiAoKCF2ICYmIG9sZFZhbHVlKSB8fCAodGhpcy5fdmFsdWUgJiYgIXRoaXMuX3ZhbHVlLmVxdWFsKG9sZFZhbHVlLCAnZGF5JykpKSB7XHJcbiAgICAgICAgdGhpcy50ZXh0ID0gdGhpcy5fdmFsdWU/LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodik7XHJcbiAgICAgICAgICB0aGlzLm9uVmFsdWVDaGFuZ2VkLmVtaXQoe1xyXG4gICAgICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgICAgIG9sZFZhbHVlOiBvbGQsXHJcbiAgICAgICAgICAgIHZhbHVlOiB2LFxyXG4gICAgICAgICAgICBpc1VzZXJDaGFuZ2U6IHRoaXMudXNlckNoYW5nZVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSwgMTAwKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50ZXh0ID0gJyc7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVzZXJDaGFuZ2UgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldERhdGVUeXBlKCkge1xyXG4gICAgc3dpdGNoICh0aGlzLmRhdGVUeXBlKSB7XHJcbiAgICAgIGNhc2UgJ3l5eXlNTWRkJzpcclxuICAgICAgICB0aGlzLmRhdGVUeXBlID0ge1xyXG4gICAgICAgICAgZ3VpZGU6IHRydWUsXHJcbiAgICAgICAgICBzaG93TWFzazogdHJ1ZSxcclxuICAgICAgICAgIG1hc2s6IHRoaXMueXl5eU1NZGQsXHJcbiAgICAgICAgICBrZWVwQ2hhclBvc2l0aW9uczogdHJ1ZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2RkTU15eXl5JzpcclxuICAgICAgICB0aGlzLmRhdGVUeXBlID0ge1xyXG4gICAgICAgICAgZ3VpZGU6IHRydWUsXHJcbiAgICAgICAgICBzaG93TWFzazogdHJ1ZSxcclxuICAgICAgICAgIG1hc2s6IHRoaXMuZGRNTXl5eXksXHJcbiAgICAgICAgICBrZWVwQ2hhclBvc2l0aW9uczogdHJ1ZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3l5eXlkZE1NJzpcclxuICAgICAgICB0aGlzLmRhdGVUeXBlID0ge1xyXG4gICAgICAgICAgZ3VpZGU6IHRydWUsXHJcbiAgICAgICAgICBzaG93TWFzazogdHJ1ZSxcclxuICAgICAgICAgIG1hc2s6IHRoaXMueXl5eWRkTU0sXHJcbiAgICAgICAgICBrZWVwQ2hhclBvc2l0aW9uczogdHJ1ZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT0gJ2dyZWdvcmlhbicpIHtcclxuICAgICAgICAgIHRoaXMuZGF0ZVR5cGUgPSB7XHJcbiAgICAgICAgICAgIGd1aWRlOiB0cnVlLFxyXG4gICAgICAgICAgICBzaG93TWFzazogdHJ1ZSxcclxuICAgICAgICAgICAgbWFzazogdGhpcy5kZE1NeXl5eSxcclxuICAgICAgICAgICAga2VlcENoYXJQb3NpdGlvbnM6IHRydWVcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT0gJ2phbGFsaScpIHtcclxuICAgICAgICAgIHRoaXMuZGF0ZVR5cGUgPSB7XHJcbiAgICAgICAgICAgIGd1aWRlOiB0cnVlLFxyXG4gICAgICAgICAgICBzaG93TWFzazogdHJ1ZSxcclxuICAgICAgICAgICAgbWFzazogdGhpcy55eXl5TU1kZCxcclxuICAgICAgICAgICAga2VlcENoYXJQb3NpdGlvbnM6IHRydWVcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNJbk1Jbk1heFJhbmdlKGQpIHtcclxuICAgIGxldCByID0gZmFsc2U7XHJcbiAgICBpZiAoZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGlmICh0aGlzLm1pbiAmJiAhdGhpcy5tYXgpIHtcclxuICAgICAgICByID0gZC5jb21wYWlyZU5ldyhuZXcgQVhEYXRlVGltZSh0aGlzLm1pbiwgdGhpcy50eXBlKSwgJ1lNRCcsIHRoaXMudHlwZSkgPT09IC0xO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLm1heCAmJiAhdGhpcy5taW4pIHtcclxuICAgICAgICByID0gZC5jb21wYWlyZU5ldyhuZXcgQVhEYXRlVGltZSh0aGlzLm1heCwgdGhpcy50eXBlKSwgJ1lNRCcsIHRoaXMudHlwZSkgPT09IDE7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMubWluICYmIHRoaXMubWF4KSB7XHJcbiAgICAgICAgciA9XHJcbiAgICAgICAgICBkLmNvbXBhaXJlTmV3KG5ldyBBWERhdGVUaW1lKHRoaXMubWluLCB0aGlzLnR5cGUpLCAnWU1EJywgdGhpcy50eXBlKSA9PT0gLTEgfHxcclxuICAgICAgICAgIGQuY29tcGFpcmVOZXcobmV3IEFYRGF0ZVRpbWUodGhpcy5tYXgsIHRoaXMudHlwZSksICdZTUQnLCB0aGlzLnR5cGUpID09PSAxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcjtcclxuICB9XHJcblxyXG4gIG9uRGF0ZUNoYW5nZShlKSB7XHJcbiAgICB0aGlzLnVzZXJDaGFuZ2UgPSB0cnVlO1xyXG4gICAgdGhpcy5kcm9wZG93bi5jbG9zZSgpO1xyXG5cclxuICAgIC8vdGhpcy5jbGVhclZhbGlkYXRpb25TdHlsZSh0aGlzLnJlZi5uYXRpdmVFbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9uQ2xpY2soZSkge1xyXG4gICAgdGhpcy51c2VyQ2hhbmdlID0gdHJ1ZTtcclxuICAgIHRoaXMuZHJvcGRvd24uY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIG9uU3RhcnRmb2N1cygpIHtcclxuICAgIGlmICh0aGlzLnRleHQgPT0gdW5kZWZpbmVkIHx8IHRoaXMudGV4dCA9PSBudWxsIHx8IHRoaXMudGV4dCA9PSAnJykge1xyXG4gICAgICB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICd0cmFuc3BhcmVudCc7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0Q2FyZXRQb3NpdGlvbih0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQsIDApO1xyXG4gICAgICAgIHRoaXMuY3Vyc29yUG9zaXRpb24gPSAwO1xyXG4gICAgICAgIHRoaXMuaW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudC5zdHlsZS5jYXJldENvbG9yID0gJ2F1dG8nO1xyXG4gICAgICB9LCAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUlucHV0Rm9jdXMoKSB7XHJcbiAgICBpZiAodGhpcy5vcGVuQnlDbGljaykge1xyXG4gICAgICB0aGlzLl9yZW5kZXJQaWNrZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmRyb3Bkb3duLm9wZW4oKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMub25TdGFydGZvY3VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgfVxyXG4gIGhhbmRsZUlucHV0Qmx1cigpIHtcclxuICAgIGlmICh0aGlzLnRleHQgJiYgdGhpcy50ZXh0LmluZGV4T2YoJ18nKSAhPSAtMSkge1xyXG4gICAgICB0aGlzLnRleHQgPSAnJztcclxuICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVCdXR0b25DbGljaygpIHtcclxuICAgIHRoaXMuX3JlbmRlclBpY2tlciA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5kcm9wZG93bi50b2dnbGUoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlS2V5UHJlc3MoZTogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKGUudHlwZSA9PSAna2V5ZG93bicgfHwgZS50eXBlID09ICdrZXlwcmVzcycgfHwgZS50eXBlID09ICdrZXl1cCcpIHtcclxuICAgICAgaWYgKGUua2V5ID09PSAnRGVsZXRlJykge1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZS5rZXkgPT09ICdCYWNrc3BhY2UnKSB7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGUua2V5ID09PSAnQXJyb3dMZWZ0JyB8fCBlLmtleSA9PT0gJ0Fycm93UmlnaHQnKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCB8fCB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT09IDApIHtcclxuICAgICAgICAgIHRoaXMuY3Vyc29yUG9zaXRpb24gPSB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChlLmtleSA9PT0gJ0Fycm93VXAnIHx8IGUua2V5ID09PSAnQXJyb3dEb3duJykge1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaW5wdXRDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZShlLmNoYXJDb2RlKTtcclxuICAgIGlmICh0aGlzLnRleHQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGNvbnN0IGluZDEgPSB0aGlzLnRleHQuY2hhckF0KDApO1xyXG4gICAgICBjb25zdCBpbmQyID0gdGhpcy50ZXh0LmNoYXJBdCgxKTtcclxuICAgICAgY29uc3QgaW5kMyA9IHRoaXMudGV4dC5jaGFyQXQoMik7XHJcbiAgICAgIGNvbnN0IGluZDQgPSB0aGlzLnRleHQuY2hhckF0KDMpO1xyXG4gICAgICBjb25zdCBpbmQ1ID0gdGhpcy50ZXh0LmNoYXJBdCg0KTtcclxuICAgICAgY29uc3QgaW5kNiA9IHRoaXMudGV4dC5jaGFyQXQoNSk7XHJcbiAgICAgIGNvbnN0IGluZDcgPSB0aGlzLnRleHQuY2hhckF0KDYpO1xyXG4gICAgICBjb25zdCBpbmQ4ID0gdGhpcy50ZXh0LmNoYXJBdCg3KTtcclxuICAgICAgY29uc3QgaW5kOSA9IHRoaXMudGV4dC5jaGFyQXQoOCk7XHJcbiAgICAgIGNvbnN0IGluZDEwID0gdGhpcy50ZXh0LmNoYXJBdCg5KTtcclxuICAgICAgc3dpdGNoICh0aGlzLmRhdGVUeXBlLm1hc2spIHtcclxuICAgICAgICBjYXNlIHRoaXMueXl5eU1NZGQ6XHJcbiAgICAgICAgICBpZiAoZS50eXBlID09ICdrZXlwcmVzcycpIHtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVDbGljaygpO1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgKGluZDYgPT0gJzEnICYmIGluZDcgPT0gJ18nICYmIGlucHV0Q2hhciA+PSAnMycpIHx8XHJcbiAgICAgICAgICAgICAgKCgoaW5kNiA9PSAnMCcgJiYgaW5kNyA9PSAnXycpIHx8IChpbmQ5ID09ICcwJyAmJiBpbmQxMCA9PSAnXycpKSAmJiBpbnB1dENoYXIgPT0gJzAnKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kOSA9PSAnMycgJiYgaW5kMTAgPT0gJ18nKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGluZDYgKyBpbmQ3IDw9ICcwNicgJiYgaW5wdXRDaGFyID49ICcyJykge1xyXG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kNiArIGluZDcgPiAnMDYnICYmIGlucHV0Q2hhciA+PSAnMScpIHtcclxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLnRleHQuaW5kZXhPZignXycpID09PSAtMSAmJiB0aGlzLnRleHQgIT09ICcnKSB7XHJcbiAgICAgICAgICAgIGlmIChlLnR5cGUgPT09ICdrZXlkb3duJykge1xyXG4gICAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0Fycm93VXAnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJzb3JQb3NpdGlvbiA8PSA0KSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IFN0cmluZyhOdW1iZXIoaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCkgKyAxKSArIGluZDUgKyBpbmQ2ICsgaW5kNyArIGluZDggKyBpbmQ5ICsgaW5kMTA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJzb3JQb3NpdGlvbiA+PSA1ICYmIHRoaXMuY3Vyc29yUG9zaXRpb24gPD0gNykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDYgKyBpbmQ3KSA8IDEyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQ2ICsgaW5kNykgPCA5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyBpbmQ0ICsgaW5kNSArICcwJyArIFN0cmluZyhOdW1iZXIoaW5kNiArIGluZDcpICsgMSkgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyBpbmQ0ICsgaW5kNSArIFN0cmluZyhOdW1iZXIoaW5kNiArIGluZDcpICsgMSkgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyBpbmQ0ICsgaW5kNSArICcwMScgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJzb3JQb3NpdGlvbiA+PSA4KSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChOdW1iZXIoaW5kOSArIGluZDEwKSA8IDMxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQ5ICsgaW5kMTApIDwgOSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCArIGluZDUgKyBpbmQ2ICsgaW5kNyArIGluZDggKyAnMCcgKyBTdHJpbmcoTnVtYmVyKGluZDkgKyBpbmQxMCkgKyAxKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCArIGluZDUgKyBpbmQ2ICsgaW5kNyArIGluZDggKyBTdHJpbmcoTnVtYmVyKGluZDkgKyBpbmQxMCkgKyAxKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCArIGluZDUgKyBpbmQ2ICsgaW5kNyArIGluZDggKyAnMDEnO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICd0cmFuc3BhcmVudCc7XHJcbiAgICAgICAgICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vICAgdGhpcy5zZXRDYXJldCgpO1xyXG4gICAgICAgICAgICAgICAgLy8gICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICAvLyAgIHRoaXMuaW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudC5zdHlsZS5jYXJldENvbG9yID0gJ2F1dG8nO1xyXG4gICAgICAgICAgICAgICAgLy8gfSwgMCk7XHJcbiAgICAgICAgICAgICAgICAvLyBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChlLmtleSA9PT0gJ0Fycm93RG93bicpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnNvclBvc2l0aW9uIDw9IDQpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gU3RyaW5nKE51bWJlcihpbmQxICsgaW5kMiArIGluZDMgKyBpbmQ0KSAtIDEpICsgaW5kNSArIGluZDYgKyBpbmQ3ICsgaW5kOCArIGluZDkgKyBpbmQxMDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jdXJzb3JQb3NpdGlvbiA+IDQgJiYgdGhpcy5jdXJzb3JQb3NpdGlvbiA8PSA3KSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChOdW1iZXIoaW5kNiArIGluZDcpID4gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChOdW1iZXIoaW5kNiArIGluZDcpIDwgMTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IGluZDEgKyBpbmQyICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgJzAnICsgU3RyaW5nKE51bWJlcihpbmQ2ICsgaW5kNykgLSAxKSArIGluZDggKyBpbmQ5ICsgaW5kMTA7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IGluZDEgKyBpbmQyICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgU3RyaW5nKE51bWJlcihpbmQ2ICsgaW5kNykgLSAxKSArIGluZDggKyBpbmQ5ICsgaW5kMTA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IGluZDEgKyBpbmQyICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgJzEyJyArIGluZDggKyBpbmQ5ICsgaW5kMTA7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jdXJzb3JQb3NpdGlvbiA+PSA4KSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChOdW1iZXIoaW5kOSArIGluZDEwKSA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDkgKyBpbmQxMCkgPCAxMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCArIGluZDUgKyBpbmQ2ICsgaW5kNyArIGluZDggKyAnMCcgKyBTdHJpbmcoTnVtYmVyKGluZDkgKyBpbmQxMCkgLSAxKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCArIGluZDUgKyBpbmQ2ICsgaW5kNyArIGluZDggKyBTdHJpbmcoTnVtYmVyKGluZDkgKyBpbmQxMCkgLSAxKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCArIGluZDUgKyBpbmQ2ICsgaW5kNyArIGluZDggKyAnMzEnO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICd0cmFuc3BhcmVudCc7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyAgIHRoaXMuc2V0Q2FyZXQoKTtcclxuICAgICAgICAgICAgICAgIC8vICAgdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAnYXV0byc7XHJcbiAgICAgICAgICAgICAgICAvLyB9LCAwKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnQXJyb3dVcCcgfHwgZS5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICd0cmFuc3BhcmVudCc7XHJcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGUudHlwZSA9PT0gJ2tleXVwJykge1xyXG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdBcnJvd1VwJyB8fCBlLmtleSA9PT0gJ0Fycm93RG93bicpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldENhcmV0KCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAnYXV0byc7XHJcbiAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgdGhpcy5kZE1NeXl5eTpcclxuICAgICAgICAgIGlmIChlLnR5cGUgPT09ICdrZXlwcmVzcycpIHtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVDbGljaygpO1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgKGluZDQgPT0gJzEnICYmIGluZDUgPT0gJ18nICYmIGlucHV0Q2hhciA+PSAnMycpIHx8XHJcbiAgICAgICAgICAgICAgKCgoaW5kMSA9PSAnMCcgJiYgaW5kMiA9PSAnXycpIHx8IChpbmQ0ID09ICcwJyAmJiBpbmQ1ID09ICdfJykpICYmIGlucHV0Q2hhciA9PSAnMCcpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoaW5kMSA9PSAnMycgJiYgaW5kMiA9PSAnXycgJiYgaW5wdXRDaGFyID49ICcyJykge1xyXG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMudGV4dC5pbmRleE9mKCdfJykgPT09IC0xICYmIHRoaXMudGV4dCAhPT0gJycpIHtcclxuICAgICAgICAgICAgaWYgKGUudHlwZSA9PT0gJ2tleWRvd24nKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnQXJyb3dVcCcpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnNvclBvc2l0aW9uID49IDYpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCArIGluZDUgKyBpbmQ2ICsgU3RyaW5nKE51bWJlcihpbmQ3ICsgaW5kOCArIGluZDkgKyBpbmQxMCkgKyAxKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnNvclBvc2l0aW9uID4gMiAmJiB0aGlzLmN1cnNvclBvc2l0aW9uIDw9IDUpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQ0ICsgaW5kNSkgPCAxMikge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChOdW1iZXIoaW5kNCArIGluZDUpIDwgOSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgJzAnICsgU3RyaW5nKE51bWJlcihpbmQ0ICsgaW5kNSkgKyAxKSArIGluZDYgKyBpbmQ3ICsgaW5kOCArIGluZDkgKyBpbmQxMDtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgU3RyaW5nKE51bWJlcihpbmQ0ICsgaW5kNSkgKyAxKSArIGluZDYgKyBpbmQ3ICsgaW5kOCArIGluZDkgKyBpbmQxMDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgJzAxJyArIGluZDYgKyBpbmQ3ICsgaW5kOCArIGluZDkgKyBpbmQxMDtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPD0gMikge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDEgKyBpbmQyKSA8IDMxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQxICsgaW5kMikgPCA5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSAnMCcgKyBTdHJpbmcoTnVtYmVyKGluZDEgKyBpbmQyKSArIDEpICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBTdHJpbmcoTnVtYmVyKGluZDEgKyBpbmQyKSArIDEpICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSAnMDEnICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICd0cmFuc3BhcmVudCc7XHJcbiAgICAgICAgICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vICAgdGhpcy5zZXRDYXJldCgpO1xyXG4gICAgICAgICAgICAgICAgLy8gICB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICdhdXRvJztcclxuICAgICAgICAgICAgICAgIC8vIH0sIDApO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJzb3JQb3NpdGlvbiA+PSA2KSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IGluZDEgKyBpbmQyICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgaW5kNiArIFN0cmluZyhOdW1iZXIoaW5kNyArIGluZDggKyBpbmQ5ICsgaW5kMTApIC0gMSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPiAyICYmIHRoaXMuY3Vyc29yUG9zaXRpb24gPD0gNSkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDQgKyBpbmQ1KSA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDQgKyBpbmQ1KSA8IDExKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyAnMCcgKyBTdHJpbmcoTnVtYmVyKGluZDQgKyBpbmQ1KSAtIDEpICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyBTdHJpbmcoTnVtYmVyKGluZDQgKyBpbmQ1KSAtIDEpICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyAnMTInICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPD0gMikge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDEgKyBpbmQyKSA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDEgKyBpbmQyKSA8IDExKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSAnMCcgKyBTdHJpbmcoTnVtYmVyKGluZDEgKyBpbmQyKSAtIDEpICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBTdHJpbmcoTnVtYmVyKGluZDEgKyBpbmQyKSAtIDEpICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSAnMzEnICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICd0cmFuc3BhcmVudCc7XHJcbiAgICAgICAgICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vICAgdGhpcy5zZXRDYXJldCgpO1xyXG4gICAgICAgICAgICAgICAgLy8gICB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICdhdXRvJztcclxuICAgICAgICAgICAgICAgIC8vIH0sIDApO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdBcnJvd1VwJyB8fCBlLmtleSA9PT0gJ0Fycm93RG93bicpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudC5zdHlsZS5jYXJldENvbG9yID0gJ3RyYW5zcGFyZW50JztcclxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZS50eXBlID09PSAna2V5dXAnKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0Fycm93VXAnIHx8IGUua2V5ID09PSAnQXJyb3dEb3duJykge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0Q2FyZXQoKTtcclxuICAgICAgICAgICAgICB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICdhdXRvJztcclxuICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgdGhpcy55eXl5ZGRNTTpcclxuICAgICAgICAgIGlmIChlLnR5cGUgPT09ICdrZXlwcmVzcycpIHtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIChpbmQ5ID09PSAnMScgJiYgaW5kMTAgPT0gJ18nICYmIGlucHV0Q2hhciA+PSAnMycpIHx8XHJcbiAgICAgICAgICAgICAgKCgoaW5kNiA9PSAnMCcgJiYgaW5kNyA9PSAnXycpIHx8IChpbmQ5ID09ICcwJyAmJiBpbmQxMCkpICYmIGlucHV0Q2hhciA9PSAnMCcpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpbmQ2ID09ICczJyAmJiBpbmQ3ID09ICdfJyAmJiBpbnB1dENoYXIgPj0gJzInKSB7XHJcbiAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2xpY2soKTtcclxuICAgICAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy50ZXh0LmluZGV4T2YoJ18nKSA9PT0gLTEgJiYgdGhpcy50ZXh0ICE9PSAnJykge1xyXG4gICAgICAgICAgICBpZiAoZS50eXBlID09PSAna2V5ZG93bicpIHtcclxuICAgICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdBcnJvd1VwJykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPD0gNCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBTdHJpbmcoTnVtYmVyKGluZDEgKyBpbmQyICsgaW5kMyArIGluZDQpICsgMSkgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPiA0ICYmIHRoaXMuY3Vyc29yUG9zaXRpb24gPD0gNykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDYgKyBpbmQ3KSA8IDMxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQ2ICsgaW5kNykgPCA5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyBpbmQ0ICsgaW5kNSArICcwJyArIFN0cmluZyhOdW1iZXIoaW5kNiArIGluZDcpICsgMSkgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyBpbmQ0ICsgaW5kNSArIFN0cmluZyhOdW1iZXIoaW5kNiArIGluZDcpICsgMSkgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyBpbmQ0ICsgaW5kNSArICcwMScgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJzb3JQb3NpdGlvbiA+PSA4KSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChOdW1iZXIoaW5kOSArIGluZDEwKSA8IDEyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQ5ICsgaW5kMTApIDwgOSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCArIGluZDUgKyBpbmQ2ICsgaW5kNyArIGluZDggKyAnMCcgKyBTdHJpbmcoTnVtYmVyKGluZDkgKyBpbmQxMCkgKyAxKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCArIGluZDUgKyBpbmQ2ICsgaW5kNyArIGluZDggKyBTdHJpbmcoTnVtYmVyKGluZDkgKyBpbmQxMCkgKyAxKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCArIGluZDUgKyBpbmQ2ICsgaW5kNyArIGluZDggKyAnMDEnO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICd0cmFuc3BhcmVudCc7XHJcbiAgICAgICAgICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vICAgdGhpcy5zZXRDYXJldCgpO1xyXG4gICAgICAgICAgICAgICAgLy8gICB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICdhdXRvJztcclxuICAgICAgICAgICAgICAgIC8vIH0sIDApO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJzb3JQb3NpdGlvbiA8PSA0KSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IFN0cmluZyhOdW1iZXIoaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCkgLSAxKSArIGluZDUgKyBpbmQ2ICsgaW5kNyArIGluZDggKyBpbmQ5ICsgaW5kMTA7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPiA0ICYmIHRoaXMuY3Vyc29yUG9zaXRpb24gPD0gNykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDYgKyBpbmQ3KSA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDYgKyBpbmQ3KSA8IDExKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyBpbmQ0ICsgaW5kNSArICcwJyArIFN0cmluZyhOdW1iZXIoaW5kNiArIGluZDcpIC0gMSkgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyBpbmQ0ICsgaW5kNSArIFN0cmluZyhOdW1iZXIoaW5kNiArIGluZDcpIC0gMSkgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyBpbmQ0ICsgaW5kNSArICczMScgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPj0gOCkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDkgKyBpbmQxMCkgPiAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQ5ICsgaW5kMTApIDwgMTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IGluZDEgKyBpbmQyICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgJzAnICsgU3RyaW5nKE51bWJlcihpbmQ5ICsgaW5kMTApIC0gMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IGluZDEgKyBpbmQyICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgU3RyaW5nKE51bWJlcihpbmQ5ICsgaW5kMTApIC0gMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IGluZDEgKyBpbmQyICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgJzEyJztcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAndHJhbnNwYXJlbnQnO1xyXG4gICAgICAgICAgICAgICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyAgIHRoaXMuc2V0Q2FyZXQoKTtcclxuICAgICAgICAgICAgICAgIC8vICAgdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAnYXV0byc7XHJcbiAgICAgICAgICAgICAgICAvLyB9LCAwKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnQXJyb3dVcCcgfHwgZS5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICd0cmFuc3BhcmVudCc7XHJcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGUudHlwZSA9PT0gJ2tleXVwJykge1xyXG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdBcnJvd1VwJyB8fCBlLmtleSA9PT0gJ0Fycm93RG93bicpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldENhcmV0KCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAnYXV0byc7XHJcbiAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBoYW5kbGVDbGljaygpIHtcclxuICAgIGlmICh0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgfHwgdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID09PSAwKSB7XHJcbiAgICAgIHRoaXMuY3Vyc29yUG9zaXRpb24gPSB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRDYXJldFBvc2l0aW9uKGN0cmwsIHBvcykge1xyXG4gICAgaWYgKGN0cmwuc2V0U2VsZWN0aW9uUmFuZ2UpIHtcclxuICAgICAgY3RybC5mb2N1cygpO1xyXG4gICAgICBjdHJsLnNldFNlbGVjdGlvblJhbmdlKHBvcywgcG9zKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldENhcmV0KCkge1xyXG4gICAgdGhpcy5zZXRDYXJldFBvc2l0aW9uKHRoaXMuaW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudCwgdGhpcy5jdXJzb3JQb3NpdGlvbik7XHJcbiAgfVxyXG59XHJcbiIsIjxheC1kcm9wLWRvd24gW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgW2ZpdFBhcmVudF09XCJ0cnVlXCIgW3NpemVdPVwic2l6ZVwiIFtzaG93RHJvcERvd25CdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgaWNvbj1cImZhciBmYS1jYWxlbmRhci1hbHRcIiAjZHJvcGRvd24gbWF4SGVpZ2h0PVwidW5zZXRcIj5cclxuICAgIDxuZy1jb250YWluZXIgc3RhcnQ+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3N0YXJ0XVwiPlxyXG4gICAgICAgIDwvbmctY29udGVudD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciBoZWFkZXI+XHJcbiAgICAgICAgPGF4LXRleHQtYm94ICNpbnB1dCBbdGV4dEFsaWduXT1cInRleHRBbGlnblwiIFsodmFsdWUpXT1cInRleHRcIiBbcmVhZG9ubHldPVwiZmFsc2VcIiBbdGV4dE1hc2tdPVwiZGF0ZVR5cGVcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbc2l6ZV09XCJzaXplXCIgKG9ua2V5KT1cImhhbmRsZUtleVByZXNzKCRldmVudClcIlxyXG4gICAgICAgICAgICAob25Gb2N1cyk9XCJoYW5kbGVJbnB1dEZvY3VzKClcIiAoY2xpY2spPVwiaGFuZGxlQ2xpY2soKVwiIChvbkJsdXIpPVwiaGFuZGxlSW5wdXRCbHVyKClcIlxyXG4gICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwidGV4dENoYW5nZSgkZXZlbnQpXCI+PC9heC10ZXh0LWJveD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciBwYW5lbD5cclxuICAgICAgICA8YXgtY2FsZW5kYXItYm94ICpuZ0lmPVwiX3JlbmRlclBpY2tlclwiIFtzaG93VG9kYXlCdXR0b25dPVwic2hvd1RvZGF5QnV0dG9uXCJcclxuICAgICAgICAgICAgW3NlbGVjdGFibGVIb2xpZGF5XT1cInNlbGVjdGFibGVIb2xpZGF5XCIgW21pbl09XCJtaW5cIiBbbWF4XT1cIm1heFwiIFtzaXplXT1cInNpemVcIiAob25DbGljayk9XCJvbkNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwib25EYXRlQ2hhbmdlKCRldmVudClcIiBbdHlwZV09XCJ0eXBlXCIgWyh2YWx1ZSldPVwidmFsdWVcIiBbZGF5U3R5bGVdPVwiZGF5U3R5bGVcIlxyXG4gICAgICAgICAgICBbZGF5TWluTWF4UmVzb2FuXT1cImRheU1pbk1heFJlc29hblwiPlxyXG4gICAgICAgIDwvYXgtY2FsZW5kYXItYm94PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyIGVuZD5cclxuICAgICAgICA8YXgtYnV0dG9uIGVuZCAqbmdJZj1cImFsbG93Q2xlYXIgJiYgdmFsdWVcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBpY29uPVwiZmFyIGZhLXRpbWVzIGljb25cIiB0eXBlPVwiYmxhbmsgZGFuZ2VyXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyKClcIiBbc2l6ZV09XCJzaXplXCIgW3RhYkluZGV4XT1cIi0xXCI+XHJcbiAgICAgICAgPC9heC1idXR0b24+XHJcbiAgICAgICAgPGF4LWJ1dHRvbiBlbmQgaWNvbj1cImZhciBmYS1jYWxlbmRhci1hbHQgaWNvblwiIHR5cGU9XCJsaWdodCBibGFua1wiIChjbGljayk9XCJoYW5kbGVCdXR0b25DbGljaygpXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW3NpemVdPVwic2l6ZVwiIFt0YWJJbmRleF09XCItMVwiPjwvYXgtYnV0dG9uPlxyXG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltlbmRdXCI+XHJcbiAgICAgICAgPC9uZy1jb250ZW50PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG48L2F4LWRyb3AtZG93bj4iXX0=