@acorex/components 5.4.0 → 5.7.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 (295) hide show
  1. package/esm2020/lib/action-sheet/action-sheet-item.component.mjs +4 -4
  2. package/esm2020/lib/action-sheet/action-sheet.component.mjs +4 -4
  3. package/esm2020/lib/action-sheet/action-sheet.module.mjs +5 -5
  4. package/esm2020/lib/alert/alert.component.mjs +27 -8
  5. package/esm2020/lib/alert/alert.module.mjs +5 -9
  6. package/esm2020/lib/alert/index.mjs +1 -2
  7. package/esm2020/lib/avatar/avatar-group.component.mjs +3 -3
  8. package/esm2020/lib/avatar/avatar.component.mjs +3 -3
  9. package/esm2020/lib/avatar/avatar.module.mjs +5 -5
  10. package/esm2020/lib/badge/badge.component.mjs +3 -3
  11. package/esm2020/lib/badge/badge.module.mjs +5 -5
  12. package/esm2020/lib/base/auto-focus.directive.mjs +43 -0
  13. package/esm2020/lib/base/common.module.mjs +9 -7
  14. package/esm2020/lib/base/components.class.mjs +34 -13
  15. package/esm2020/lib/base/custom-cdk-overlay.service.mjs +6 -6
  16. package/esm2020/lib/base/events.class.mjs +1 -1
  17. package/esm2020/lib/base/hotkey.directive.mjs +79 -0
  18. package/esm2020/lib/base/index.mjs +3 -1
  19. package/esm2020/lib/base/infinite-scroll.directive.mjs +3 -3
  20. package/esm2020/lib/base/mixin/base-components.class.mjs +3 -3
  21. package/esm2020/lib/base/mixin/button-mixin.class.mjs +2 -23
  22. package/esm2020/lib/base/mixin/color-look-mixing.class.mjs +2 -2
  23. package/esm2020/lib/base/mixin/datalist-component.class.mjs +15 -4
  24. package/esm2020/lib/base/mixin/index.mjs +3 -1
  25. package/esm2020/lib/base/mixin/interactive-mixin.class.mjs +2 -2
  26. package/esm2020/lib/base/mixin/loading-mixin.class.mjs +1 -1
  27. package/esm2020/lib/base/mixin/mixin.class.mjs +2 -3
  28. package/esm2020/lib/base/mixin/selection-component.class.mjs +2 -2
  29. package/esm2020/lib/base/mixin/textbox-mixin.class.mjs +82 -26
  30. package/esm2020/lib/base/mixin/value-mixin.class.mjs +47 -59
  31. package/esm2020/lib/base/overlay.service.mjs +3 -3
  32. package/esm2020/lib/base/responsive.directive.mjs +3 -3
  33. package/esm2020/lib/breadcrumbs/breadcrumbs-item.component.mjs +3 -3
  34. package/esm2020/lib/breadcrumbs/breadcrumbs.component.mjs +3 -3
  35. package/esm2020/lib/breadcrumbs/breadcrumbs.module.mjs +5 -5
  36. package/esm2020/lib/button/button-group.component.mjs +23 -57
  37. package/esm2020/lib/button/button-item.class.mjs +1 -1
  38. package/esm2020/lib/button/button-item.component.mjs +4 -4
  39. package/esm2020/lib/button/button.component.mjs +20 -29
  40. package/esm2020/lib/button/button.module.mjs +5 -5
  41. package/esm2020/lib/calendar/calendar.class.mjs +3 -3
  42. package/esm2020/lib/calendar/calendar.component.mjs +10 -12
  43. package/esm2020/lib/calendar/calendar.module.mjs +5 -5
  44. package/esm2020/lib/carousel/carousel-arrows.component.mjs +4 -4
  45. package/esm2020/lib/carousel/carousel-item.component.mjs +3 -3
  46. package/esm2020/lib/carousel/carousel-pager.component.mjs +4 -4
  47. package/esm2020/lib/carousel/carousel.class.mjs +3 -3
  48. package/esm2020/lib/carousel/carousel.component.mjs +3 -3
  49. package/esm2020/lib/carousel/carousel.module.mjs +5 -5
  50. package/esm2020/lib/checkbox/checkbox.component.mjs +8 -7
  51. package/esm2020/lib/checkbox/checkbox.module.mjs +5 -5
  52. package/esm2020/lib/collapse/collapse-group.component.mjs +3 -3
  53. package/esm2020/lib/collapse/collapse.component.mjs +3 -3
  54. package/esm2020/lib/collapse/collapse.module.mjs +5 -5
  55. package/esm2020/lib/color-palette/color-palette-input.component.mjs +49 -36
  56. package/esm2020/lib/color-palette/color-palette-picker.component.mjs +76 -14
  57. package/esm2020/lib/color-palette/color-palette-preview.component.mjs +25 -17
  58. package/esm2020/lib/color-palette/color-palette-swatches.component.mjs +31 -20
  59. package/esm2020/lib/color-palette/color-palette.class.mjs +11 -4
  60. package/esm2020/lib/color-palette/color-palette.component.mjs +47 -20
  61. package/esm2020/lib/color-palette/color-palette.module.mjs +10 -7
  62. package/esm2020/lib/color-picker/color-picker.component.mjs +24 -15
  63. package/esm2020/lib/color-picker/color-picker.module.mjs +15 -17
  64. package/esm2020/lib/data-pager/data-pager-base.component.mjs +37 -0
  65. package/esm2020/lib/data-pager/data-pager-info.component.mjs +52 -0
  66. package/esm2020/lib/data-pager/data-pager-input-selector.component.mjs +50 -0
  67. package/esm2020/lib/data-pager/data-pager-next-buttons.components.mjs +60 -0
  68. package/esm2020/lib/data-pager/data-pager-numeric-selector.component.mjs +99 -0
  69. package/esm2020/lib/data-pager/data-pager-pagesize-dropdown.component.mjs +86 -0
  70. package/esm2020/lib/data-pager/data-pager-prev-buttons.component.mjs +58 -0
  71. package/esm2020/lib/data-pager/data-pager.component.mjs +132 -0
  72. package/esm2020/lib/data-pager/data-pager.module.mjs +51 -0
  73. package/esm2020/lib/data-pager/index.mjs +9 -0
  74. package/esm2020/lib/data-table/data-column-cell-template.directive.mjs +17 -0
  75. package/esm2020/lib/data-table/data-column.directive.mjs +43 -0
  76. package/esm2020/lib/data-table/data-table.component.mjs +124 -0
  77. package/esm2020/lib/data-table/data-table.module.mjs +27 -0
  78. package/esm2020/lib/data-table/index.mjs +5 -0
  79. package/esm2020/lib/datalist/datalist.component.mjs +5 -5
  80. package/esm2020/lib/datalist/datalist.module.mjs +5 -5
  81. package/esm2020/lib/datepicker/datepicker.component.mjs +15 -15
  82. package/esm2020/lib/datepicker/datepicker.module.mjs +5 -5
  83. package/esm2020/lib/decorators/addon.component.mjs +3 -3
  84. package/esm2020/lib/decorators/close-button.component.mjs +3 -3
  85. package/esm2020/lib/decorators/content.component.mjs +3 -3
  86. package/esm2020/lib/decorators/decorators.module.mjs +6 -6
  87. package/esm2020/lib/decorators/footer.component.mjs +6 -6
  88. package/esm2020/lib/decorators/header.component.mjs +6 -6
  89. package/esm2020/lib/decorators/icon.component.mjs +3 -3
  90. package/esm2020/lib/decorators/prefix.component.mjs +6 -8
  91. package/esm2020/lib/decorators/suffix.component.mjs +6 -8
  92. package/esm2020/lib/decorators/title.component.mjs +3 -3
  93. package/esm2020/lib/dialog/dialog.component.mjs +22 -9
  94. package/esm2020/lib/dialog/dialog.module.mjs +7 -6
  95. package/esm2020/lib/dialog/dialog.service.mjs +14 -8
  96. package/esm2020/lib/drawer/drawer-container.component.mjs +3 -3
  97. package/esm2020/lib/drawer/drawer.component.mjs +19 -12
  98. package/esm2020/lib/drawer/drawer.module.mjs +5 -5
  99. package/esm2020/lib/dropdown/dropdown-panel.component.mjs +30 -27
  100. package/esm2020/lib/dropdown/dropdown.module.mjs +5 -5
  101. package/esm2020/lib/form/form-field.component.mjs +3 -3
  102. package/esm2020/lib/form/form-field.module.mjs +5 -5
  103. package/esm2020/lib/form/form-hint.component.mjs +3 -3
  104. package/esm2020/lib/form/form.component.mjs +38 -12
  105. package/esm2020/lib/input-mask/input-mask.component.mjs +3 -3
  106. package/esm2020/lib/input-mask/input-mask.module.mjs +5 -5
  107. package/esm2020/lib/label/label.component.mjs +7 -5
  108. package/esm2020/lib/label/label.module.mjs +5 -5
  109. package/esm2020/lib/loading/loading-spinner.component.mjs +4 -4
  110. package/esm2020/lib/loading/loading.component.mjs +4 -4
  111. package/esm2020/lib/loading/loading.directive.mjs +5 -5
  112. package/esm2020/lib/loading/loading.module.mjs +5 -5
  113. package/esm2020/lib/loading/loading.service.mjs +3 -3
  114. package/esm2020/lib/menu/menu.component.mjs +15 -9
  115. package/esm2020/lib/menu/menu.module.mjs +7 -10
  116. package/esm2020/lib/number-box/number-box.component.mjs +21 -12
  117. package/esm2020/lib/number-box/number-box.module.mjs +5 -5
  118. package/esm2020/lib/page/base-page.class.mjs +3 -3
  119. package/esm2020/lib/page/page.component.mjs +3 -3
  120. package/esm2020/lib/page/page.module.mjs +5 -5
  121. package/esm2020/lib/password-box/password-box.component.mjs +7 -7
  122. package/esm2020/lib/password-box/password-box.module.mjs +5 -5
  123. package/esm2020/lib/picker/picker.component.mjs +4 -4
  124. package/esm2020/lib/picker/picker.module.mjs +5 -5
  125. package/esm2020/lib/popover/popover.component.mjs +3 -3
  126. package/esm2020/lib/popover/popover.module.mjs +5 -5
  127. package/esm2020/lib/popup/popup.component.mjs +10 -10
  128. package/esm2020/lib/popup/popup.module.mjs +5 -5
  129. package/esm2020/lib/popup/popup.service.mjs +3 -3
  130. package/esm2020/lib/progress-bar/progress-bar.component.mjs +3 -3
  131. package/esm2020/lib/progress-bar/progress-bar.module.mjs +5 -5
  132. package/esm2020/lib/radio/radio.component.mjs +4 -4
  133. package/esm2020/lib/radio/radio.module.mjs +5 -5
  134. package/esm2020/lib/range-slider/range-slider.component.mjs +100 -11
  135. package/esm2020/lib/range-slider/range-slider.module.mjs +7 -6
  136. package/esm2020/lib/rating/rating.component.mjs +3 -3
  137. package/esm2020/lib/rating/rating.component.module.mjs +5 -5
  138. package/esm2020/lib/result/result.component.mjs +5 -5
  139. package/esm2020/lib/result/result.module.mjs +5 -5
  140. package/esm2020/lib/searchbox/searchbox.component.mjs +17 -11
  141. package/esm2020/lib/searchbox/searchbox.module.mjs +7 -6
  142. package/esm2020/lib/selectbox/selectbox.component.mjs +31 -31
  143. package/esm2020/lib/selectbox/selectbox.module.mjs +16 -17
  144. package/esm2020/lib/selection-list/selection-list.component.mjs +3 -3
  145. package/esm2020/lib/selection-list/selection-list.module.mjs +5 -5
  146. package/esm2020/lib/switch/switch.component.mjs +6 -6
  147. package/esm2020/lib/switch/switch.module.mjs +5 -5
  148. package/esm2020/lib/tabs/tab-content.directive.mjs +3 -3
  149. package/esm2020/lib/tabs/tab-item.component.mjs +4 -4
  150. package/esm2020/lib/tabs/tabs.component.mjs +3 -3
  151. package/esm2020/lib/tabs/tabs.module.mjs +5 -5
  152. package/esm2020/lib/textarea/textarea.component.mjs +3 -3
  153. package/esm2020/lib/textarea/textarea.module.mjs +6 -8
  154. package/esm2020/lib/textbox/textbox.component.mjs +12 -5
  155. package/esm2020/lib/textbox/textbox.module.mjs +9 -11
  156. package/esm2020/lib/time-box/time-box.component.mjs +5 -5
  157. package/esm2020/lib/time-box/time-box.module.mjs +5 -5
  158. package/esm2020/lib/toast/toast.component.mjs +20 -13
  159. package/esm2020/lib/toast/toast.module.mjs +5 -5
  160. package/esm2020/lib/toast/toast.service.mjs +25 -19
  161. package/esm2020/lib/tooltip/tooltip.component.mjs +3 -3
  162. package/esm2020/lib/tooltip/tooltip.directive.mjs +3 -3
  163. package/esm2020/lib/tooltip/tooltip.module.mjs +5 -5
  164. package/esm2020/lib/treeview/tree-view.component.mjs +5 -5
  165. package/esm2020/lib/treeview/tree-view.module.mjs +5 -5
  166. package/esm2020/lib/validation/index.mjs +2 -1
  167. package/esm2020/lib/validation/validation-rule.widget.mjs +19 -33
  168. package/esm2020/lib/validation/validation-summary.component.mjs +102 -0
  169. package/esm2020/lib/validation/validation.class.mjs +1 -1
  170. package/esm2020/lib/validation/validation.module.mjs +31 -19
  171. package/esm2020/public-api.mjs +3 -2
  172. package/fesm2015/acorex-components.mjs +2488 -1243
  173. package/fesm2015/acorex-components.mjs.map +1 -1
  174. package/fesm2020/acorex-components.mjs +2420 -1213
  175. package/fesm2020/acorex-components.mjs.map +1 -1
  176. package/{acorex-components.d.ts → index.d.ts} +0 -0
  177. package/lib/action-sheet/action-sheet-item.component.d.ts +1 -1
  178. package/lib/action-sheet/action-sheet.component.d.ts +1 -1
  179. package/lib/alert/alert.component.d.ts +7 -5
  180. package/lib/alert/alert.module.d.ts +3 -4
  181. package/lib/alert/index.d.ts +0 -1
  182. package/lib/avatar/avatar-group.component.d.ts +1 -1
  183. package/lib/avatar/avatar.component.d.ts +1 -1
  184. package/lib/badge/badge.component.d.ts +1 -1
  185. package/lib/base/auto-focus.directive.d.ts +12 -0
  186. package/lib/base/common.module.d.ts +3 -1
  187. package/lib/base/components.class.d.ts +26 -3
  188. package/lib/base/events.class.d.ts +1 -1
  189. package/lib/base/hotkey.directive.d.ts +22 -0
  190. package/lib/base/index.d.ts +2 -0
  191. package/lib/base/infinite-scroll.directive.d.ts +1 -1
  192. package/lib/base/mixin/button-mixin.class.d.ts +2 -10
  193. package/lib/base/mixin/index.d.ts +2 -0
  194. package/lib/base/mixin/mixin.class.d.ts +20 -14
  195. package/lib/base/mixin/textbox-mixin.class.d.ts +24 -5
  196. package/lib/base/mixin/value-mixin.class.d.ts +7 -8
  197. package/lib/base/responsive.directive.d.ts +1 -1
  198. package/lib/breadcrumbs/breadcrumbs-item.component.d.ts +1 -1
  199. package/lib/breadcrumbs/breadcrumbs.component.d.ts +1 -1
  200. package/lib/button/button-group.component.d.ts +66 -17
  201. package/lib/button/button-item.class.d.ts +4 -3
  202. package/lib/button/button-item.component.d.ts +1 -1
  203. package/lib/button/button.component.d.ts +3 -4
  204. package/lib/calendar/calendar.component.d.ts +1 -1
  205. package/lib/carousel/carousel-arrows.component.d.ts +1 -1
  206. package/lib/carousel/carousel-item.component.d.ts +1 -1
  207. package/lib/carousel/carousel-pager.component.d.ts +1 -1
  208. package/lib/carousel/carousel.component.d.ts +1 -1
  209. package/lib/checkbox/checkbox.component.d.ts +4 -3
  210. package/lib/collapse/collapse-group.component.d.ts +1 -1
  211. package/lib/collapse/collapse.component.d.ts +1 -1
  212. package/lib/color-palette/color-palette-input.component.d.ts +3 -3
  213. package/lib/color-palette/color-palette-picker.component.d.ts +19 -6
  214. package/lib/color-palette/color-palette-preview.component.d.ts +6 -7
  215. package/lib/color-palette/color-palette-swatches.component.d.ts +3 -2
  216. package/lib/color-palette/color-palette.class.d.ts +12 -1
  217. package/lib/color-palette/color-palette.component.d.ts +12 -6
  218. package/lib/color-palette/color-palette.module.d.ts +2 -1
  219. package/lib/color-picker/color-picker.component.d.ts +22 -18
  220. package/lib/data-pager/data-pager-base.component.d.ts +48 -0
  221. package/lib/data-pager/data-pager-info.component.d.ts +15 -0
  222. package/lib/data-pager/data-pager-input-selector.component.d.ts +15 -0
  223. package/lib/data-pager/data-pager-next-buttons.components.d.ts +16 -0
  224. package/lib/data-pager/data-pager-numeric-selector.component.d.ts +18 -0
  225. package/lib/data-pager/data-pager-pagesize-dropdown.component.d.ts +19 -0
  226. package/lib/data-pager/data-pager-prev-buttons.component.d.ts +15 -0
  227. package/lib/data-pager/data-pager.component.d.ts +34 -0
  228. package/lib/data-pager/data-pager.module.d.ts +18 -0
  229. package/lib/data-pager/index.d.ts +8 -0
  230. package/lib/data-table/data-column-cell-template.directive.d.ts +8 -0
  231. package/lib/data-table/data-column.directive.d.ts +16 -0
  232. package/lib/data-table/data-table.component.d.ts +34 -0
  233. package/lib/data-table/data-table.module.d.ts +14 -0
  234. package/lib/data-table/index.d.ts +4 -0
  235. package/lib/datalist/datalist.component.d.ts +1 -1
  236. package/lib/datepicker/datepicker.component.d.ts +8 -8
  237. package/lib/decorators/addon.component.d.ts +1 -1
  238. package/lib/decorators/close-button.component.d.ts +1 -1
  239. package/lib/decorators/content.component.d.ts +1 -1
  240. package/lib/decorators/footer.component.d.ts +1 -1
  241. package/lib/decorators/header.component.d.ts +1 -1
  242. package/lib/decorators/icon.component.d.ts +1 -1
  243. package/lib/decorators/prefix.component.d.ts +1 -1
  244. package/lib/decorators/suffix.component.d.ts +1 -1
  245. package/lib/decorators/title.component.d.ts +1 -1
  246. package/lib/dialog/dialog.component.d.ts +2 -1
  247. package/lib/dialog/dialog.module.d.ts +7 -6
  248. package/lib/drawer/drawer-container.component.d.ts +1 -1
  249. package/lib/drawer/drawer.component.d.ts +1 -2
  250. package/lib/dropdown/dropdown-panel.component.d.ts +7 -8
  251. package/lib/form/form-field.component.d.ts +1 -1
  252. package/lib/form/form-hint.component.d.ts +1 -1
  253. package/lib/form/form.component.d.ts +15 -5
  254. package/lib/input-mask/input-mask.component.d.ts +1 -1
  255. package/lib/label/label.component.d.ts +2 -1
  256. package/lib/loading/loading-spinner.component.d.ts +1 -1
  257. package/lib/loading/loading.component.d.ts +1 -1
  258. package/lib/loading/loading.directive.d.ts +1 -1
  259. package/lib/menu/menu.component.d.ts +6 -3
  260. package/lib/number-box/number-box.component.d.ts +2 -2
  261. package/lib/password-box/password-box.component.d.ts +1 -1
  262. package/lib/picker/picker.component.d.ts +1 -1
  263. package/lib/popover/popover.component.d.ts +1 -1
  264. package/lib/popup/popup.component.d.ts +1 -1
  265. package/lib/progress-bar/progress-bar.component.d.ts +1 -1
  266. package/lib/radio/radio.component.d.ts +1 -1
  267. package/lib/range-slider/range-slider.component.d.ts +36 -5
  268. package/lib/range-slider/range-slider.module.d.ts +2 -1
  269. package/lib/rating/rating.component.d.ts +1 -1
  270. package/lib/result/result.component.d.ts +2 -2
  271. package/lib/searchbox/searchbox.component.d.ts +2 -1
  272. package/lib/searchbox/searchbox.module.d.ts +2 -1
  273. package/lib/selectbox/selectbox.component.d.ts +4 -3
  274. package/lib/selection-list/selection-list.component.d.ts +1 -1
  275. package/lib/switch/switch.component.d.ts +1 -1
  276. package/lib/tabs/tab-content.directive.d.ts +1 -1
  277. package/lib/tabs/tab-item.component.d.ts +1 -1
  278. package/lib/tabs/tabs.component.d.ts +1 -1
  279. package/lib/textarea/textarea.component.d.ts +1 -1
  280. package/lib/textbox/textbox.component.d.ts +1 -1
  281. package/lib/time-box/time-box.component.d.ts +1 -1
  282. package/lib/toast/toast.component.d.ts +3 -1
  283. package/lib/toast/toast.service.d.ts +1 -0
  284. package/lib/tooltip/tooltip.component.d.ts +1 -1
  285. package/lib/tooltip/tooltip.directive.d.ts +1 -1
  286. package/lib/treeview/tree-view.component.d.ts +1 -1
  287. package/lib/validation/index.d.ts +1 -0
  288. package/lib/validation/validation-rule.widget.d.ts +1 -9
  289. package/lib/validation/validation-summary.component.d.ts +20 -0
  290. package/lib/validation/validation.class.d.ts +3 -2
  291. package/lib/validation/validation.module.d.ts +6 -2
  292. package/package.json +3 -3
  293. package/public-api.d.ts +2 -0
  294. package/esm2020/lib/alert/alert-button.component.mjs +0 -50
  295. package/lib/alert/alert-button.component.d.ts +0 -13
@@ -32,7 +32,7 @@ export function _SelectionComponenetMixin(Base) {
32
32
  return this._value;
33
33
  }
34
34
  set value(v) {
35
- v = this._onInternalValueChanging(v);
35
+ v = this._internalSetValue(v);
36
36
  if (v !== this._value) {
37
37
  const oldValue = AXObjectUtil.deepJSONClone(this._value);
38
38
  if (this.multiple) {
@@ -178,4 +178,4 @@ export const SELECTION_INPUTS = [
178
178
  'selectionMode'
179
179
  ];
180
180
  export const SELECTION_OUTPUT = ['onValueChanged', 'valueChanged'];
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWNvbXBvbmVudC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL3NyYy9saWIvYmFzZS9taXhpbi9zZWxlY3Rpb24tY29tcG9uZW50LmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDNUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU03QyxNQUFNLFVBQVUseUJBQXlCLENBQTZDLElBQVc7SUFDN0YsT0FBTyxLQUFNLFNBQVEsSUFBSTtRQStCckIsWUFBWSxHQUFHLElBQVc7WUFDdEIsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUE7WUE5QmxCLGVBQVUsR0FBVyxJQUFJLENBQUM7WUFDMUIsY0FBUyxHQUFXLE1BQU0sQ0FBQztZQUMzQixrQkFBYSxHQUFXLFVBQVUsQ0FBQztZQUVuQyxhQUFRLEdBQVksS0FBSyxDQUFDO1lBQzFCLGtCQUFhLEdBQXFCLE9BQU8sQ0FBQztZQW9CbkMsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztZQUN6RCxtQkFBYyxHQUErQyxJQUFJLFlBQVksRUFBZ0MsQ0FBQztRQUtySCxDQUFDO1FBdEJEOztVQUVFO1FBQ0YsSUFBSSxLQUFLO1lBQ0wsT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFBSSxZQUFZO1lBQ1osT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFBSSxTQUFTO1lBQ1QsT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDO1FBV0QsZUFBZTtZQUNYLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM1QixDQUFDO1FBSUQsSUFBSSxLQUFLO1lBQ0wsT0FBTyxJQUFJLENBQUMs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SSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLENBQUM7UUFFRCxjQUFjLENBQUMsSUFBUztZQUNwQixPQUFPLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwSixDQUFDO0tBQ0osQ0FBQTtBQUNMLENBQUM7QUFHRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM1QixZQUFZO0lBQ1osV0FBVztJQUNYLGVBQWU7SUFDZixrQkFBa0I7SUFDbEIsVUFBVTtJQUNWLGVBQWU7Q0FDbEIsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWE9iamVjdFV0aWwgfSBmcm9tICdAYWNvcmV4L2NvcmUnO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xyXG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgQVhTZWxlY3Rpb25WYWx1ZUNoYW5nZWRFdmVudCB9IGZyb20gJy4uL2V2ZW50cy5jbGFzcyc7XHJcbmltcG9ydCB7IEFYQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZS1jb21wb25lbnRzLmNsYXNzJztcclxuaW1wb3J0IHsgQ29uc3RydWN0b3IgfSBmcm9tICcuL2NvbnN0cmF0Y3Rvcic7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX1NlbGVjdGlvbkNvbXBvbmVuZXRNaXhpbjxUQmFzZSBleHRlbmRzIENvbnN0cnVjdG9yPEFYQmFzZUNvbXBvbmVudD4+KEJhc2U6IFRCYXNlKSB7XHJcbiAgICByZXR1cm4gY2xhc3MgZXh0ZW5kcyBCYXNlIHtcclxuXHJcbiAgICAgICAgdmFsdWVGaWVsZDogc3RyaW5nID0gJ2lkJztcclxuICAgICAgICB0ZXh0RmllbGQ6IHN0cmluZyA9ICd0ZXh0JztcclxuICAgICAgICBkaXNhYmxlZEZpZWxkOiBzdHJpbmcgPSAnZGlzYWJsZWQnO1xyXG4gICAgICAgIGRpc2FibGVkQ2FsbGJhY2s6IChlOiB7IGl0ZW06IGFueSwgaW5kZXg6IG51bWJlciB9KSA9PiBib29sZWFuO1xyXG4gICAgICAgIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAgICAgc2VsZWN0aW9uTW9kZTogJ3ZhbHVlJyB8ICdpdGVtJyA9ICd2YWx1ZSc7XHJcblxyXG5cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgKiAgRGVmaW5lcyB0aGUgcHJpbWFyeSB0ZXh0IHRvIHNob3cgaW5zaWRlIHRoZSBidXR0b24uXHJcbiAgICAgICAgKi9cclxuICAgICAgICBnZXQgaXRlbXMoKTogYW55W10ge1xyXG4gICAgICAgICAgICByZXR1cm4gW107XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBnZXQgZGlzcGxheUl0ZW1zKCk6IGFueVtdIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZ2V0IGZsYXRJdGVtcygpOiBhbnlbXSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBwdWJsaWMgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICAgICAgcHVibGljIG9uVmFsdWVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8QVhTZWxlY3Rpb25WYWx1ZUNoYW5nZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYU2VsZWN0aW9uVmFsdWVDaGFuZ2VkRXZlbnQ+KCk7XHJcblxyXG5cclxuICAgICAgICBjb25zdHJ1Y3RvciguLi5hcmdzOiBhbnlbXSkge1xyXG4gICAgICAgICAgICBzdXBlciguLi5hcmdzKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgX29uSW50ZXJuYWxJbml0KCkge1xyXG4gICAgICAgICAgICBzdXBlci5fb25JbnRlcm5hbEluaXQoKTtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBfdmFsdWU6IGFueSB8IGFueVtdO1xyXG4gICAgICAgIGdldCB2YWx1ZSgpOiBhbnkgfCBhbnlbXSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2V0IHZhbHVlKHY6IGFueSB8IGFueVtdKSB7XHJcbiAgICAgICAgICAgIHYgPSAodGhpcyBhcyBhbnkpLl9vbkludGVybmFsVmFsdWVDaGFuZ2luZyh2KTtcclxuICAgICAgICAgICAgaWYgKHYgIT09IHRoaXMuX3ZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBvbGRWYWx1ZSA9IEFYT2JqZWN0VXRpbC5kZWVwSlNPTkNsb25lKHRoaXMuX3ZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSBBcnJheS5pc0FycmF5KHYpID8gdiA6ICh2ID8gW3ZdIDogW10pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IEFycmF5LmlzQXJyYXkodikgPyB2WzBdIDogdjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLl92YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uVmFsdWVDaGFuZ2VkLmVtaXQoe1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgICAgICAgICAgICAgICBodG1sRWxlbWVudDogdGhpcy5fZ2V0SG9zdEVsZW1lbnQoKSxcclxuICAgICAgICAgICAgICAgICAgICBpc1VzZXJJbnRlcmFjdGlvbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgb2xkVmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuX3ZhbHVlLFxyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkS2V5czogdGhpcy5zZWxlY3RlZEl0ZW1zLm1hcChjID0+IGNbdGhpcy52YWx1ZUZpZWxkXSksXHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtczogdGhpcy5zZWxlY3RlZEl0ZW1zLnNsaWNlKClcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgaWYgKHYgPT0gbnVsbCB8fCB2ID09IHVuZGVmaW5lZCB8fCB2ID09IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAodGhpcyBhcyBhbnkpLl9zZXRTdGF0ZSgnY2xlYXInKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9pc0luaXRlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcyBhcyBhbnkpLnZhbGlkYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fcmVuZGVyU2VsZWN0aW9uKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIF9zZWxlY3RlZEl0ZW1zOiBhbnlbXTtcclxuICAgICAgICBnZXQgc2VsZWN0ZWRJdGVtcygpOiBhbnlbXSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEl0ZW1zIHx8IFtdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgX3JlbmRlclNlbGVjdGlvbigpIHtcclxuICAgICAgICAgICAgY29uc3QgZnVuYyA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlID09IG51bGwgfHwgdGhpcy52YWx1ZSA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW107XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuZmxhdEl0ZW1zO1xyXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbXMuZmlsdGVyKGkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUuc29tZShpaSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpaSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlbdGhpcy52YWx1ZUZpZWxkXSA9PT0gaWlbdGhpcy52YWx1ZUZpZWxkXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpW3RoaXMudmFsdWVGaWVsZF0gPT09IGlpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnZhbHVlID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpW3RoaXMudmFsdWVGaWVsZF0gPT09IHRoaXMudmFsdWVbdGhpcy52YWx1ZUZpZWxkXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpW3RoaXMudmFsdWVGaWVsZF0gPT09IHRoaXMudmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUubWFwKGlpID0+ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8mJiBpaVt0aGlzLnRleHRGaWVsZF1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpaSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZha2U6IGFueSA9IHt9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFrZVt0aGlzLnZhbHVlRmllbGRdID0gdGhpcy52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZha2VbdGhpcy50ZXh0RmllbGRdID0gdGhpcy52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWtlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyYmIHRoaXMudmFsdWVbdGhpcy50ZXh0RmllbGRdXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnZhbHVlID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW3RoaXMudmFsdWVdO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmFrZTogYW55ID0ge307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZha2VbdGhpcy52YWx1ZUZpZWxkXSA9IHRoaXMudmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZha2VbdGhpcy50ZXh0RmllbGRdID0gdGhpcy52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtmYWtlXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMgPSBmdW5jKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBfZ2V0SXRlbUJ5RGF0YU1vZGUoaXRlbTogYW55KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdpdGVtJyA/IGl0ZW0gOiBpdGVtW3RoaXMudmFsdWVGaWVsZF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBfZ2V0SXRlbVZhbHVlKGl0ZW06IGFueSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnID8gaXRlbVt0aGlzLnZhbHVlRmllbGRdIDogaXRlbTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHVuc2VsZWN0SXRlbXMoLi4uaXRlbXM6IGFueVtdKSB7XHJcbiAgICAgICAgICAgIGlmICghaXRlbXMgfHwgaXRlbXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS5maWx0ZXIoYyA9PiAhaXRlbXMuc29tZShkID0+XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZ2V0SXRlbVZhbHVlKGMpID09PSB0aGlzLl9nZXRJdGVtVmFsdWUoZCkpXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNlbGVjdEl0ZW1zKC4uLml0ZW1zOiBhbnlbXSkge1xyXG4gICAgICAgICAgICBpZiAoaXRlbXMgJiYgaXRlbXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSAodGhpcy52YWx1ZSB8fCBbXSkuY29uY2F0KGl0ZW1zLm1hcChjID0+IHRoaXMuX2dldEl0ZW1CeURhdGFNb2RlKGMpKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5fZ2V0SXRlbUJ5RGF0YU1vZGUoaXRlbXNbMF0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0b2dnbGVTZWxlY3QoLi4uaXRlbXM6IGFueVtdKSB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtcyAmJiBpdGVtcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0l0ZW1TZWxlY3RlZChpdGVtKSA/IHRoaXMudW5zZWxlY3RJdGVtcyhpdGVtKSA6IHRoaXMuc2VsZWN0SXRlbXMoaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEl0ZW1zKGl0ZW0pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlzSXRlbVNlbGVjdGVkKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zLnNvbWUoYyA9PiBjW3RoaXMudmFsdWVGaWVsZF0gPT09IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpc0l0ZW1EaXNhYmxlZChpdGVtOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShpdGVtW3RoaXMuZGlzYWJsZWRGaWVsZF0pID09PSB0cnVlIHx8ICh0aGlzLmRpc2FibGVkQ2FsbGJhY2sgPyB0aGlzLmRpc2FibGVkQ2FsbGJhY2soeyBpdGVtLCBpbmRleDogLTEgfSkgOiBmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5cclxuZXhwb3J0IGNvbnN0IFNFTEVDVElPTl9JTlBVVFMgPSBbXHJcbiAgICAndmFsdWVGaWVsZCcsXHJcbiAgICAndGV4dEZpZWxkJyxcclxuICAgICdkaXNhYmxlZEZpZWxkJyxcclxuICAgICdkaXNhYmxlZENhbGxiYWNrJyxcclxuICAgICdtdWx0aXBsZScsXHJcbiAgICAnc2VsZWN0aW9uTW9kZSdcclxuXTtcclxuZXhwb3J0IGNvbnN0IFNFTEVDVElPTl9PVVRQVVQgPSBbJ29uVmFsdWVDaGFuZ2VkJywgJ3ZhbHVlQ2hhbmdlZCddOyJdfQ==
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWNvbXBvbmVudC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL3NyYy9saWIvYmFzZS9taXhpbi9zZWxlY3Rpb24tY29tcG9uZW50LmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDNUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU03QyxNQUFNLFVBQVUseUJBQXlCLENBQTZDLElBQVc7SUFDN0YsT0FBTyxLQUFNLFNBQVEsSUFBSTtRQStCckIsWUFBWSxHQUFHLElBQVc7WUFDdEIsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUE7WUE5QmxCLGVBQVUsR0FBVyxJQUFJLENBQUM7WUFDMUIsY0FBUyxHQUFXLE1BQU0sQ0FBQztZQUMzQixrQkFBYSxHQUFXLFVBQVUsQ0FBQztZQUVuQyxhQUFRLEdBQVksS0FBSyxDQUFDO1lBQzFCLGtCQUFhLEdBQXFCLE9BQU8sQ0FBQztZQW9CbkMsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztZQUN6RCxtQkFBYyxHQUErQyxJQUFJLFlBQVksRUFBZ0MsQ0FBQztRQUtySCxDQUFDO1FBdEJEOztVQUVFO1FBQ0YsSUFBSSxLQUFLO1lBQ0wsT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFBSSxZQUFZO1lBQ1osT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFBSSxTQUFTO1lBQ1QsT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDO1FBV0QsZUFBZTtZQUNYLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM1QixDQUFDO1FBSUQsSUFBSSxLQUFLO1lBQ0wsT0FBTyxJQUFJLENBQUMs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SSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLENBQUM7UUFFRCxjQUFjLENBQUMsSUFBUztZQUNwQixPQUFPLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwSixDQUFDO0tBQ0osQ0FBQTtBQUNMLENBQUM7QUFHRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM1QixZQUFZO0lBQ1osV0FBVztJQUNYLGVBQWU7SUFDZixrQkFBa0I7SUFDbEIsVUFBVTtJQUNWLGVBQWU7Q0FDbEIsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWE9iamVjdFV0aWwgfSBmcm9tICdAYWNvcmV4L2NvcmUnO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xyXG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgQVhTZWxlY3Rpb25WYWx1ZUNoYW5nZWRFdmVudCB9IGZyb20gJy4uL2V2ZW50cy5jbGFzcyc7XHJcbmltcG9ydCB7IEFYQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZS1jb21wb25lbnRzLmNsYXNzJztcclxuaW1wb3J0IHsgQ29uc3RydWN0b3IgfSBmcm9tICcuL2NvbnN0cmF0Y3Rvcic7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX1NlbGVjdGlvbkNvbXBvbmVuZXRNaXhpbjxUQmFzZSBleHRlbmRzIENvbnN0cnVjdG9yPEFYQmFzZUNvbXBvbmVudD4+KEJhc2U6IFRCYXNlKSB7XHJcbiAgICByZXR1cm4gY2xhc3MgZXh0ZW5kcyBCYXNlIHtcclxuXHJcbiAgICAgICAgdmFsdWVGaWVsZDogc3RyaW5nID0gJ2lkJztcclxuICAgICAgICB0ZXh0RmllbGQ6IHN0cmluZyA9ICd0ZXh0JztcclxuICAgICAgICBkaXNhYmxlZEZpZWxkOiBzdHJpbmcgPSAnZGlzYWJsZWQnO1xyXG4gICAgICAgIGRpc2FibGVkQ2FsbGJhY2s6IChlOiB7IGl0ZW06IGFueSwgaW5kZXg6IG51bWJlciB9KSA9PiBib29sZWFuO1xyXG4gICAgICAgIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAgICAgc2VsZWN0aW9uTW9kZTogJ3ZhbHVlJyB8ICdpdGVtJyA9ICd2YWx1ZSc7XHJcblxyXG5cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgKiAgRGVmaW5lcyB0aGUgcHJpbWFyeSB0ZXh0IHRvIHNob3cgaW5zaWRlIHRoZSBidXR0b24uXHJcbiAgICAgICAgKi9cclxuICAgICAgICBnZXQgaXRlbXMoKTogYW55W10ge1xyXG4gICAgICAgICAgICByZXR1cm4gW107XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBnZXQgZGlzcGxheUl0ZW1zKCk6IGFueVtdIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZ2V0IGZsYXRJdGVtcygpOiBhbnlbXSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBwdWJsaWMgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICAgICAgcHVibGljIG9uVmFsdWVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8QVhTZWxlY3Rpb25WYWx1ZUNoYW5nZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYU2VsZWN0aW9uVmFsdWVDaGFuZ2VkRXZlbnQ+KCk7XHJcblxyXG5cclxuICAgICAgICBjb25zdHJ1Y3RvciguLi5hcmdzOiBhbnlbXSkge1xyXG4gICAgICAgICAgICBzdXBlciguLi5hcmdzKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgX29uSW50ZXJuYWxJbml0KCkge1xyXG4gICAgICAgICAgICBzdXBlci5fb25JbnRlcm5hbEluaXQoKTtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBfdmFsdWU6IGFueSB8IGFueVtdO1xyXG4gICAgICAgIGdldCB2YWx1ZSgpOiBhbnkgfCBhbnlbXSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2V0IHZhbHVlKHY6IGFueSB8IGFueVtdKSB7XHJcbiAgICAgICAgICAgIHYgPSAodGhpcyBhcyBhbnkpLl9pbnRlcm5hbFNldFZhbHVlKHYpO1xyXG4gICAgICAgICAgICBpZiAodiAhPT0gdGhpcy5fdmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG9sZFZhbHVlID0gQVhPYmplY3RVdGlsLmRlZXBKU09OQ2xvbmUodGhpcy5fdmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IEFycmF5LmlzQXJyYXkodikgPyB2IDogKHYgPyBbdl0gOiBbXSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gQXJyYXkuaXNBcnJheSh2KSA/IHZbMF0gOiB2O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuX3ZhbHVlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZWQuZW1pdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgICAgICAgICAgICAgIGh0bWxFbGVtZW50OiB0aGlzLl9nZXRIb3N0RWxlbWVudCgpLFxyXG4gICAgICAgICAgICAgICAgICAgIGlzVXNlckludGVyYWN0aW9uOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBvbGRWYWx1ZSxcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5fdmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRLZXlzOiB0aGlzLnNlbGVjdGVkSXRlbXMubWFwKGMgPT4gY1t0aGlzLnZhbHVlRmllbGRdKSxcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zOiB0aGlzLnNlbGVjdGVkSXRlbXMuc2xpY2UoKVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBpZiAodiA9PSBudWxsIHx8IHYgPT0gdW5kZWZpbmVkIHx8IHYgPT0gXCJcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICh0aGlzIGFzIGFueSkuX3NldFN0YXRlKCdjbGVhcicpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2lzSW5pdGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzIGFzIGFueSkudmFsaWRhdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9yZW5kZXJTZWxlY3Rpb24oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgX3NlbGVjdGVkSXRlbXM6IGFueVtdO1xyXG4gICAgICAgIGdldCBzZWxlY3RlZEl0ZW1zKCk6IGFueVtdIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSXRlbXMgfHwgW107XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBfcmVuZGVyU2VsZWN0aW9uKCkge1xyXG4gICAgICAgICAgICBjb25zdCBmdW5jID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUgPT0gbnVsbCB8fCB0aGlzLnZhbHVlID09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5mbGF0SXRlbXM7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtcy5maWx0ZXIoaSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS5zb21lKGlpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGlpID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaVt0aGlzLnZhbHVlRmllbGRdID09PSBpaVt0aGlzLnZhbHVlRmllbGRdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlbdGhpcy52YWx1ZUZpZWxkXSA9PT0gaWk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMudmFsdWUgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlbdGhpcy52YWx1ZUZpZWxkXSA9PT0gdGhpcy52YWx1ZVt0aGlzLnZhbHVlRmllbGRdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlbdGhpcy52YWx1ZUZpZWxkXSA9PT0gdGhpcy52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS5tYXAoaWkgPT4gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyYmIGlpW3RoaXMudGV4dEZpZWxkXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGlpID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmFrZTogYW55ID0ge307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWtlW3RoaXMudmFsdWVGaWVsZF0gPSB0aGlzLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFrZVt0aGlzLnRleHRGaWVsZF0gPSB0aGlzLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZha2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vJiYgdGhpcy52YWx1ZVt0aGlzLnRleHRGaWVsZF1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMudmFsdWUgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbdGhpcy52YWx1ZV07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmYWtlOiBhbnkgPSB7fTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmFrZVt0aGlzLnZhbHVlRmllbGRdID0gdGhpcy52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmFrZVt0aGlzLnRleHRGaWVsZF0gPSB0aGlzLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2Zha2VdO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtcyA9IGZ1bmMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIF9nZXRJdGVtQnlEYXRhTW9kZShpdGVtOiBhbnkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ2l0ZW0nID8gaXRlbSA6IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIF9nZXRJdGVtVmFsdWUoaXRlbTogYW55KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgPyBpdGVtW3RoaXMudmFsdWVGaWVsZF0gOiBpdGVtO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdW5zZWxlY3RJdGVtcyguLi5pdGVtczogYW55W10pIHtcclxuICAgICAgICAgICAgaWYgKCFpdGVtcyB8fCBpdGVtcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLmZpbHRlcihjID0+ICFpdGVtcy5zb21lKGQgPT5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9nZXRJdGVtVmFsdWUoYykgPT09IHRoaXMuX2dldEl0ZW1WYWx1ZShkKSlcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2VsZWN0SXRlbXMoLi4uaXRlbXM6IGFueVtdKSB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtcyAmJiBpdGVtcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9ICh0aGlzLnZhbHVlIHx8IFtdKS5jb25jYXQoaXRlbXMubWFwKGMgPT4gdGhpcy5fZ2V0SXRlbUJ5RGF0YU1vZGUoYykpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLl9nZXRJdGVtQnlEYXRhTW9kZShpdGVtc1swXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRvZ2dsZVNlbGVjdCguLi5pdGVtczogYW55W10pIHtcclxuICAgICAgICAgICAgaWYgKGl0ZW1zICYmIGl0ZW1zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzSXRlbVNlbGVjdGVkKGl0ZW0pID8gdGhpcy51bnNlbGVjdEl0ZW1zKGl0ZW0pIDogdGhpcy5zZWxlY3RJdGVtcyhpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbXMoaXRlbSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaXNJdGVtU2VsZWN0ZWQoaXRlbTogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbXMuc29tZShjID0+IGNbdGhpcy52YWx1ZUZpZWxkXSA9PT0gaXRlbVt0aGlzLnZhbHVlRmllbGRdKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlzSXRlbURpc2FibGVkKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgICAgICByZXR1cm4gY29lcmNlQm9vbGVhblByb3BlcnR5KGl0ZW1bdGhpcy5kaXNhYmxlZEZpZWxkXSkgPT09IHRydWUgfHwgKHRoaXMuZGlzYWJsZWRDYWxsYmFjayA/IHRoaXMuZGlzYWJsZWRDYWxsYmFjayh7IGl0ZW0sIGluZGV4OiAtMSB9KSA6IGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG5leHBvcnQgY29uc3QgU0VMRUNUSU9OX0lOUFVUUyA9IFtcclxuICAgICd2YWx1ZUZpZWxkJyxcclxuICAgICd0ZXh0RmllbGQnLFxyXG4gICAgJ2Rpc2FibGVkRmllbGQnLFxyXG4gICAgJ2Rpc2FibGVkQ2FsbGJhY2snLFxyXG4gICAgJ211bHRpcGxlJyxcclxuICAgICdzZWxlY3Rpb25Nb2RlJ1xyXG5dO1xyXG5leHBvcnQgY29uc3QgU0VMRUNUSU9OX09VVFBVVCA9IFsnb25WYWx1ZUNoYW5nZWQnLCAndmFsdWVDaGFuZ2VkJ107Il19
@@ -1,34 +1,90 @@
1
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
1
2
  import { EventEmitter } from '@angular/core';
3
+ import { Subject, Subscription } from 'rxjs';
4
+ import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
2
5
  import { VALUE_INPUTS, VALUE_OUTPUT } from './value-mixin.class';
3
6
  export function _TextboxComponenetMixin(Base) {
4
- return class extends Base {
5
- /**
6
- * @ignore
7
- */
8
- constructor(...args) {
9
- super(...args.slice(0, 2));
7
+ var _valueSubscription, _valueSubject, _a;
8
+ return _a = class extends Base {
10
9
  /**
11
- * A string value that specifies the type of text box.
12
- */
13
- this.type = 'text';
14
- /**
15
- * A string value that specifies the placeholder of text box.
16
- */
17
- this.placeholder = null;
18
- /**
19
- * Fires each time the user press a key.
20
- * @event
10
+ * @ignore
21
11
  */
22
- this.onKeyDown = new EventEmitter();
23
- }
24
- _emitOnKeydownEvent(e) {
25
- this.onKeyDown.emit({
26
- component: this,
27
- nativeEvent: e
28
- });
29
- }
30
- };
12
+ constructor(...args) {
13
+ super(...args.slice(0, 2));
14
+ /**
15
+ * A string value that specifies the type of text box.
16
+ */
17
+ this.type = 'text';
18
+ /**
19
+ * A string value that specifies the placeholder of text box.
20
+ */
21
+ this.placeholder = null;
22
+ this.debounceTime = 0;
23
+ _valueSubscription.set(this, new Subscription());
24
+ _valueSubject.set(this, new Subject());
25
+ /**
26
+ * Fires each time the user press a key.
27
+ * @event
28
+ */
29
+ this.onKeyDown = new EventEmitter();
30
+ /**
31
+ * Fires each time the user press a key.
32
+ * @event
33
+ */
34
+ this.onKeyUp = new EventEmitter();
35
+ /**
36
+ * Fires each time the user press a key.
37
+ * @event
38
+ */
39
+ this.onKeyPress = new EventEmitter();
40
+ }
41
+ _emitOnKeydownEvent(e) {
42
+ this.onKeyDown.emit({
43
+ component: this,
44
+ nativeEvent: e
45
+ });
46
+ this._setUserInteraction();
47
+ }
48
+ _emitOnKeyupEvent(e) {
49
+ this.onKeyUp.emit({
50
+ component: this,
51
+ nativeEvent: e
52
+ });
53
+ this._setUserInteraction();
54
+ }
55
+ _emitOnKeypressEvent(e) {
56
+ this.onKeyPress.emit({
57
+ component: this,
58
+ nativeEvent: e
59
+ });
60
+ this._setUserInteraction();
61
+ }
62
+ _handleModleChange(value) {
63
+ if (!this.debounceTime)
64
+ this._settleValue(value);
65
+ else {
66
+ __classPrivateFieldGet(this, _valueSubject, "f").next(value);
67
+ }
68
+ }
69
+ _settleValue(value) {
70
+ this.value = value;
71
+ }
72
+ onInit() {
73
+ __classPrivateFieldSet(this, _valueSubscription, __classPrivateFieldGet(this, _valueSubject, "f")
74
+ .pipe(debounceTime(this.debounceTime))
75
+ .pipe(distinctUntilChanged())
76
+ .subscribe((v) => {
77
+ this._settleValue(v);
78
+ }), "f");
79
+ }
80
+ onDestroy() {
81
+ __classPrivateFieldGet(this, _valueSubscription, "f").unsubscribe();
82
+ }
83
+ },
84
+ _valueSubscription = new WeakMap(),
85
+ _valueSubject = new WeakMap(),
86
+ _a;
31
87
  }
32
88
  export const TEXTBOX_INPUTS = ['placeholder', 'maxLength', 'allowNull', 'debounceTime', 'type', 'autoComplete', ...VALUE_INPUTS];
33
89
  export const TEXTBOX_OUTPUT = [...VALUE_OUTPUT];
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGJveC1taXhpbi5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL3NyYy9saWIvYmFzZS9taXhpbi90ZXh0Ym94LW1peGluLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRSxNQUFNLFVBQVUsdUJBQXVCLENBQTZDLElBQVc7SUFDM0YsT0FBTyxLQUFNLFNBQVEsSUFBSTtRQXNDckI7O1VBRUU7UUFDRixZQUFZLEdBQUcsSUFBVztZQUN0QixLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBeEM3Qjs7YUFFQztZQUNGLFNBQUksR0FBRyxNQUFNLENBQUE7WUFFYjs7Y0FFRTtZQUNGLGdCQUFXLEdBQVcsSUFBSSxDQUFDO1lBYTNCOzs7Y0FHRTtZQUNGLGNBQVMsR0FBNkMsSUFBSSxZQUFZLEVBQThCLENBQUM7UUFnQnJHLENBQUM7UUFiRCxtQkFBbUIsQ0FBQyxDQUFnQjtZQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDaEIsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsV0FBVyxFQUFFLENBQUM7YUFDakIsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztLQVNKLENBQUE7QUFDTCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFDLE1BQU0sRUFBQyxjQUFjLEVBQUUsR0FBRyxZQUFZLENBQUMsQ0FBQTtBQUM5SCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYSHRtbEV2ZW50IH0gZnJvbSAnLi4vZXZlbnRzLmNsYXNzJztcclxuaW1wb3J0IHsgQVhCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLWNvbXBvbmVudHMuY2xhc3MnO1xyXG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gJy4vY29uc3RyYXRjdG9yJztcclxuaW1wb3J0IHsgVkFMVUVfSU5QVVRTLCBWQUxVRV9PVVRQVVQgfSBmcm9tICcuL3ZhbHVlLW1peGluLmNsYXNzJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfVGV4dGJveENvbXBvbmVuZXRNaXhpbjxUQmFzZSBleHRlbmRzIENvbnN0cnVjdG9yPEFYQmFzZUNvbXBvbmVudD4+KEJhc2U6IFRCYXNlKSB7XHJcbiAgICByZXR1cm4gY2xhc3MgZXh0ZW5kcyBCYXNlIHtcclxuXHJcbiAgICAgICAgIC8qKlxyXG4gICAgICAgICogIEEgc3RyaW5nIHZhbHVlIHRoYXQgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIHRleHQgYm94LlxyXG4gICAgICAgICovXHJcbiAgICAgICAgdHlwZSA9ICd0ZXh0J1xyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAqICBBIHN0cmluZyB2YWx1ZSB0aGF0IHNwZWNpZmllcyB0aGUgcGxhY2Vob2xkZXIgb2YgdGV4dCBib3guXHJcbiAgICAgICAgKi9cclxuICAgICAgICBwbGFjZWhvbGRlcjogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgKiAgQSBudW1iZXIgdmFsdWUgdGhhdCBzcGVjaWZpZXMgdGhlIG1heGltdW0gY2hhcmFjdGVycyBvZiB0ZXh0IGJveC5cclxuICAgICAgICAqL1xyXG4gICAgICAgIG1heExlbmd0aDogbnVtYmVyO1xyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAqICBTcGVjaWZpZXMgdGhhdCBhdXRvY29tcGxldGUgaXMgb24gb3Igb2ZmLlxyXG4gICAgICAgICovXHJcbiAgICAgICAgYXV0b0NvbXBsZXRlOiBzdHJpbmc7XHJcblxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAqICBGaXJlcyBlYWNoIHRpbWUgdGhlIHVzZXIgcHJlc3MgYSBrZXkuXHJcbiAgICAgICAgKiAgQGV2ZW50XHJcbiAgICAgICAgKi9cclxuICAgICAgICBvbktleURvd246IEV2ZW50RW1pdHRlcjxBWEh0bWxFdmVudDxLZXlib2FyZEV2ZW50Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYSHRtbEV2ZW50PEtleWJvYXJkRXZlbnQ+PigpO1xyXG5cclxuXHJcbiAgICAgICAgX2VtaXRPbktleWRvd25FdmVudChlOiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMub25LZXlEb3duLmVtaXQoe1xyXG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgKiAgQGlnbm9yZVxyXG4gICAgICAgICovXHJcbiAgICAgICAgY29uc3RydWN0b3IoLi4uYXJnczogYW55W10pIHtcclxuICAgICAgICAgICAgc3VwZXIoLi4uYXJncy5zbGljZSgwLCAyKSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBURVhUQk9YX0lOUFVUUyA9IFsncGxhY2Vob2xkZXInLCAnbWF4TGVuZ3RoJywgJ2FsbG93TnVsbCcsICdkZWJvdW5jZVRpbWUnLCd0eXBlJywnYXV0b0NvbXBsZXRlJywgLi4uVkFMVUVfSU5QVVRTXVxyXG5leHBvcnQgY29uc3QgVEVYVEJPWF9PVVRQVVQgPSBbLi4uVkFMVUVfT1VUUFVUXSJdfQ==
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGJveC1taXhpbi5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL3NyYy9saWIvYmFzZS9taXhpbi90ZXh0Ym94LW1peGluLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUlwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWpFLE1BQU0sVUFBVSx1QkFBdUIsQ0FBNkMsSUFBVzs7SUFDM0YsWUFBTyxLQUFNLFNBQVEsSUFBSTtZQW1GckI7O2NBRUU7WUFDRixZQUFZLEdBQUcsSUFBVztnQkFDdEIsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFyRjlCOztpQkFFQztnQkFDRCxTQUFJLEdBQUcsTUFBTSxDQUFBO2dCQUViOztrQkFFRTtnQkFDRixnQkFBVyxHQUFXLElBQUksQ0FBQztnQkFZM0IsaUJBQVksR0FBVyxDQUFDLENBQUM7Z0JBRXpCLDZCQUFxQixJQUFJLFlBQVksRUFBRSxFQUFDO2dCQUN4Qyx3QkFBZ0IsSUFBSSxPQUFPLEVBQUUsRUFBQztnQkFHOUI7OztrQkFHRTtnQkFDRixjQUFTLEdBQTZDLElBQUksWUFBWSxFQUE4QixDQUFDO2dCQUVyRzs7O2dCQUdBO2dCQUNBLFlBQU8sR0FBNkMsSUFBSSxZQUFZLEVBQThCLENBQUM7Z0JBRW5HOzs7a0JBR0U7Z0JBQ0YsZUFBVSxHQUE2QyxJQUFJLFlBQVksRUFBOEIsQ0FBQztZQTRDdEcsQ0FBQztZQXpDRCxtQkFBbUIsQ0FBQyxDQUFnQjtnQkFDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7b0JBQ2hCLFNBQVMsRUFBRSxJQUFJO29CQUNmLFdBQVcsRUFBRSxDQUFDO2lCQUNqQixDQUFDLENBQUM7Z0JBQ0YsSUFBWSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDeEMsQ0FBQztZQUVELGlCQUFpQixDQUFDLENBQWdCO2dCQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDZCxTQUFTLEVBQUUsSUFBSTtvQkFDZixXQUFXLEVBQUUsQ0FBQztpQkFDakIsQ0FBQyxDQUFDO2dCQUNGLElBQVksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3hDLENBQUM7WUFFRCxvQkFBb0IsQ0FBQyxDQUFnQjtnQkFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7b0JBQ2pCLFNBQVMsRUFBRSxJQUFJO29CQUNmLFdBQVcsRUFBRSxDQUFDO2lCQUNqQixDQUFDLENBQUM7Z0JBQ0YsSUFBWSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDeEMsQ0FBQztZQUVELGtCQUFrQixDQUFDLEtBQUs7Z0JBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtvQkFDbEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztxQkFDeEI7b0JBQ0QsdUJBQUEsSUFBSSxxQkFBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDbEM7WUFDTCxDQUFDO1lBRUQsWUFBWSxDQUFDLEtBQVU7Z0JBQ2xCLElBQVksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ2hDLENBQUM7WUFTRCxNQUFNO2dCQUNGLHVCQUFBLElBQUksc0JBQXNCLHVCQUFBLElBQUkscUJBQWM7cUJBQ3ZDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO3FCQUNyQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztxQkFDNUIsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDekIsQ0FBQyxDQUFDLE1BQUEsQ0FBQztZQUNYLENBQUM7WUFFRCxTQUFTO2dCQUNMLHVCQUFBLElBQUksMEJBQW1CLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDMUMsQ0FBQztTQUNKOzs7V0FBQTtBQUNMLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxHQUFHLFlBQVksQ0FBQyxDQUFBO0FBQ2hJLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEFYSHRtbEV2ZW50IH0gZnJvbSAnLi4vZXZlbnRzLmNsYXNzJztcclxuaW1wb3J0IHsgQVhCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLWNvbXBvbmVudHMuY2xhc3MnO1xyXG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gJy4vY29uc3RyYXRjdG9yJztcclxuaW1wb3J0IHsgVkFMVUVfSU5QVVRTLCBWQUxVRV9PVVRQVVQgfSBmcm9tICcuL3ZhbHVlLW1peGluLmNsYXNzJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfVGV4dGJveENvbXBvbmVuZXRNaXhpbjxUQmFzZSBleHRlbmRzIENvbnN0cnVjdG9yPEFYQmFzZUNvbXBvbmVudD4+KEJhc2U6IFRCYXNlKSB7XHJcbiAgICByZXR1cm4gY2xhc3MgZXh0ZW5kcyBCYXNlIHtcclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAqICBBIHN0cmluZyB2YWx1ZSB0aGF0IHNwZWNpZmllcyB0aGUgdHlwZSBvZiB0ZXh0IGJveC5cclxuICAgICAgICovXHJcbiAgICAgICAgdHlwZSA9ICd0ZXh0J1xyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAqICBBIHN0cmluZyB2YWx1ZSB0aGF0IHNwZWNpZmllcyB0aGUgcGxhY2Vob2xkZXIgb2YgdGV4dCBib3guXHJcbiAgICAgICAgKi9cclxuICAgICAgICBwbGFjZWhvbGRlcjogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgKiAgQSBudW1iZXIgdmFsdWUgdGhhdCBzcGVjaWZpZXMgdGhlIG1heGltdW0gY2hhcmFjdGVycyBvZiB0ZXh0IGJveC5cclxuICAgICAgICAqL1xyXG4gICAgICAgIG1heExlbmd0aDogbnVtYmVyO1xyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAqICBTcGVjaWZpZXMgdGhhdCBhdXRvY29tcGxldGUgaXMgb24gb3Igb2ZmLlxyXG4gICAgICAgICovXHJcbiAgICAgICAgYXV0b0NvbXBsZXRlOiBzdHJpbmc7XHJcblxyXG4gICAgICAgIGRlYm91bmNlVGltZTogbnVtYmVyID0gMDtcclxuXHJcbiAgICAgICAgI3ZhbHVlU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gICAgICAgICN2YWx1ZVN1YmplY3QgPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgKiAgRmlyZXMgZWFjaCB0aW1lIHRoZSB1c2VyIHByZXNzIGEga2V5LlxyXG4gICAgICAgICogIEBldmVudFxyXG4gICAgICAgICovXHJcbiAgICAgICAgb25LZXlEb3duOiBFdmVudEVtaXR0ZXI8QVhIdG1sRXZlbnQ8S2V5Ym9hcmRFdmVudD4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWEh0bWxFdmVudDxLZXlib2FyZEV2ZW50Pj4oKTtcclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICogIEZpcmVzIGVhY2ggdGltZSB0aGUgdXNlciBwcmVzcyBhIGtleS5cclxuICAgICAgKiAgQGV2ZW50XHJcbiAgICAgICovXHJcbiAgICAgICAgb25LZXlVcDogRXZlbnRFbWl0dGVyPEFYSHRtbEV2ZW50PEtleWJvYXJkRXZlbnQ+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhIdG1sRXZlbnQ8S2V5Ym9hcmRFdmVudD4+KCk7XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICogIEZpcmVzIGVhY2ggdGltZSB0aGUgdXNlciBwcmVzcyBhIGtleS5cclxuICAgICAgICAqICBAZXZlbnRcclxuICAgICAgICAqL1xyXG4gICAgICAgIG9uS2V5UHJlc3M6IEV2ZW50RW1pdHRlcjxBWEh0bWxFdmVudDxLZXlib2FyZEV2ZW50Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYSHRtbEV2ZW50PEtleWJvYXJkRXZlbnQ+PigpO1xyXG5cclxuXHJcbiAgICAgICAgX2VtaXRPbktleWRvd25FdmVudChlOiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMub25LZXlEb3duLmVtaXQoe1xyXG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICh0aGlzIGFzIGFueSkuX3NldFVzZXJJbnRlcmFjdGlvbigpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgX2VtaXRPbktleXVwRXZlbnQoZTogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgICAgICAgICB0aGlzLm9uS2V5VXAuZW1pdCh7XHJcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgICAgICAgICBuYXRpdmVFdmVudDogZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgKHRoaXMgYXMgYW55KS5fc2V0VXNlckludGVyYWN0aW9uKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIF9lbWl0T25LZXlwcmVzc0V2ZW50KGU6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5vbktleVByZXNzLmVtaXQoe1xyXG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICh0aGlzIGFzIGFueSkuX3NldFVzZXJJbnRlcmFjdGlvbigpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgX2hhbmRsZU1vZGxlQ2hhbmdlKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5kZWJvdW5jZVRpbWUpXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXR0bGVWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy4jdmFsdWVTdWJqZWN0Lm5leHQodmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBfc2V0dGxlVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgICAgICAgICAodGhpcyBhcyBhbnkpLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAqICBAaWdub3JlXHJcbiAgICAgICAgKi9cclxuICAgICAgICBjb25zdHJ1Y3RvciguLi5hcmdzOiBhbnlbXSkge1xyXG4gICAgICAgICAgICBzdXBlciguLi5hcmdzLnNsaWNlKDAsIDIpKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgb25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgICAgICB0aGlzLiN2YWx1ZVN1YnNjcmlwdGlvbiA9IHRoaXMuI3ZhbHVlU3ViamVjdFxyXG4gICAgICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lKSlcclxuICAgICAgICAgICAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCh2KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0dGxlVmFsdWUodik7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIG9uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICAgICAgdGhpcy4jdmFsdWVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBURVhUQk9YX0lOUFVUUyA9IFsncGxhY2Vob2xkZXInLCAnbWF4TGVuZ3RoJywgJ2FsbG93TnVsbCcsICdkZWJvdW5jZVRpbWUnLCAndHlwZScsICdhdXRvQ29tcGxldGUnLCAuLi5WQUxVRV9JTlBVVFNdXHJcbmV4cG9ydCBjb25zdCBURVhUQk9YX09VVFBVVCA9IFsuLi5WQUxVRV9PVVRQVVRdIl19
@@ -1,10 +1,8 @@
1
1
  import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
2
- import { coerceBooleanProperty, coerceNumberProperty, } from '@angular/cdk/coercion';
2
+ import { coerceBooleanProperty, } from '@angular/cdk/coercion';
3
3
  import { EventEmitter } from '@angular/core';
4
- import { Subject, Subscription } from 'rxjs';
5
- import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
6
4
  export function _ValueComponenetMixin(Base) {
7
- var _readonly, _allowNull, _name, _debounceTime, _valueSubscription, _valueSubject, _value, _state, _a;
5
+ var _readonly, _allowNull, _name, _isUserInteraction, _value, _state, _a;
8
6
  return _a = class extends Base {
9
7
  /**
10
8
  * @ignore
@@ -20,9 +18,7 @@ export function _ValueComponenetMixin(Base) {
20
18
  _readonly.set(this, false);
21
19
  _allowNull.set(this, true);
22
20
  _name.set(this, void 0);
23
- _debounceTime.set(this, 0);
24
- _valueSubscription.set(this, new Subscription());
25
- _valueSubject.set(this, new Subject());
21
+ _isUserInteraction.set(this, false);
26
22
  _value.set(this, void 0);
27
23
  _state.set(this, 'clear');
28
24
  }
@@ -47,23 +43,32 @@ export function _ValueComponenetMixin(Base) {
47
43
  set name(value) {
48
44
  __classPrivateFieldSet(this, _name, value, "f");
49
45
  }
50
- get debounceTime() {
51
- return __classPrivateFieldGet(this, _debounceTime, "f");
52
- }
53
- set debounceTime(value) {
54
- __classPrivateFieldSet(this, _debounceTime, coerceNumberProperty(value), "f");
46
+ get isUserInteraction() {
47
+ return __classPrivateFieldGet(this, _isUserInteraction, "f");
55
48
  }
56
49
  get value() {
57
- return __classPrivateFieldGet(this, _value, "f");
50
+ return this._internalGetValue();
58
51
  }
59
52
  set value(v) {
60
- v = this._onInternalValueChanging(v);
61
- if (!this._isInited || this.debounceTime == 0) {
62
- this._setValue(v);
63
- }
64
- else {
65
- __classPrivateFieldGet(this, _valueSubject, "f").next(v);
53
+ v = this._internalSetValue(v);
54
+ //if (!this._isInited ) {
55
+ const old = __classPrivateFieldGet(this, _value, "f");
56
+ // TODO: check real equality
57
+ if (v != old) {
58
+ __classPrivateFieldSet(this, _value, v, "f");
59
+ this._emitOnValueChangedEvent(old, __classPrivateFieldGet(this, _value, "f"));
60
+ this._cdr.markForCheck();
61
+ if (v == null || v == undefined || v == '' || (Array.isArray(v) && v.length == 0)) {
62
+ this._setState('clear');
63
+ }
64
+ else {
65
+ if (this._isInited) {
66
+ this.validate();
67
+ }
68
+ }
66
69
  }
70
+ __classPrivateFieldSet(this, _isUserInteraction, false, "f");
71
+ //}
67
72
  }
68
73
  get state() {
69
74
  return __classPrivateFieldGet(this, _state, "f");
@@ -74,50 +79,34 @@ export function _ValueComponenetMixin(Base) {
74
79
  component: this,
75
80
  value: newValue,
76
81
  oldValue: oldValue,
77
- name: this.name
82
+ name: this.name,
83
+ isUserInteraction: this.isUserInteraction
78
84
  });
79
85
  this._onValueChanged(oldValue, __classPrivateFieldGet(this, _value, "f"));
80
86
  }
81
- _onInternalValueChanging(value) {
82
- // if (this.readonly)
83
- // return this.value;
84
- return this._onValueChanging(value);
87
+ _internalSetValue(value) {
88
+ return this._setValue(value);
89
+ }
90
+ _internalGetValue() {
91
+ return this._getValue(__classPrivateFieldGet(this, _value, "f"));
92
+ }
93
+ _setValue(value) {
94
+ return value;
85
95
  }
86
- _onValueChanging(value) {
96
+ _getValue(value) {
87
97
  return value;
88
98
  }
99
+ _setUserInteraction() {
100
+ __classPrivateFieldSet(this, _isUserInteraction, true, "f");
101
+ }
89
102
  _onValueChanged(oldValue, newValue) { }
90
103
  _onInternalInit() {
91
104
  this._getHostElement().setAttribute('ax-form-input', 'true');
92
- __classPrivateFieldSet(this, _valueSubscription, __classPrivateFieldGet(this, _valueSubject, "f")
93
- .pipe(debounceTime(__classPrivateFieldGet(this, _debounceTime, "f")))
94
- .pipe(distinctUntilChanged())
95
- .subscribe((v) => {
96
- this._setValue(v);
97
- }), "f");
98
105
  super._onInternalInit();
99
106
  }
100
107
  _onInternalDestroy() {
101
- __classPrivateFieldGet(this, _valueSubscription, "f").unsubscribe();
102
108
  super.onDestroy();
103
109
  }
104
- _setValue(v) {
105
- const old = __classPrivateFieldGet(this, _value, "f");
106
- // TODO: check real equality
107
- if (v != old) {
108
- __classPrivateFieldSet(this, _value, v, "f");
109
- this._emitOnValueChangedEvent(old, __classPrivateFieldGet(this, _value, "f"));
110
- this._cdr.markForCheck();
111
- if (v == null || v == undefined || v == '') {
112
- this._setState('clear');
113
- }
114
- else {
115
- if (this._isInited) {
116
- this.validate();
117
- }
118
- }
119
- }
120
- }
121
110
  clear() {
122
111
  this.value = null;
123
112
  }
@@ -126,7 +115,7 @@ export function _ValueComponenetMixin(Base) {
126
115
  //
127
116
  if (!rules || rules.length === 0) {
128
117
  this._setState('clear');
129
- return Promise.resolve({ result: true, value: this.value });
118
+ return Promise.resolve({ result: true, value: this.value, name: this.name, id: this.id });
130
119
  }
131
120
  return new Promise((resolve) => {
132
121
  Promise.all(rules
@@ -137,11 +126,11 @@ export function _ValueComponenetMixin(Base) {
137
126
  const error = d.find((c) => c.result === false);
138
127
  if (error) {
139
128
  this._setState('error', error.message);
140
- resolve({ result: false, value: this.value });
129
+ resolve({ result: false, value: this.value, message: error.message, name: this.name, id: this.id });
141
130
  }
142
131
  else {
143
132
  this._setState('success');
144
- resolve({ result: true, value: this.value });
133
+ resolve({ result: true, value: this.value, name: this.name, id: this.id });
145
134
  }
146
135
  });
147
136
  });
@@ -153,10 +142,12 @@ export function _ValueComponenetMixin(Base) {
153
142
  const formField = container?.closest('.ax-form-field');
154
143
  const label = formField?.querySelector('ax-label') || formField?.querySelector('label');
155
144
  let target = container || this._getInnerElement();
156
- if (target.querySelector('.ax-error-container')) {
145
+ if (target?.querySelector('.ax-error-container')) {
157
146
  target = target.querySelector('.ax-error-container');
158
147
  }
159
- const parent = target.parentElement;
148
+ const parent = target?.parentElement;
149
+ if (!target || !parent)
150
+ return;
160
151
  switch (state) {
161
152
  case 'clear':
162
153
  __classPrivateFieldSet(this, _state, 'clear', "f");
@@ -190,9 +181,7 @@ export function _ValueComponenetMixin(Base) {
190
181
  _readonly = new WeakMap(),
191
182
  _allowNull = new WeakMap(),
192
183
  _name = new WeakMap(),
193
- _debounceTime = new WeakMap(),
194
- _valueSubscription = new WeakMap(),
195
- _valueSubject = new WeakMap(),
184
+ _isUserInteraction = new WeakMap(),
196
185
  _value = new WeakMap(),
197
186
  _state = new WeakMap(),
198
187
  _a;
@@ -201,9 +190,8 @@ export const VALUE_INPUTS = [
201
190
  'readonly',
202
191
  'allowNull',
203
192
  'value',
204
- 'debounceTime',
205
193
  'name',
206
194
  'checked'
207
195
  ];
208
196
  export const VALUE_OUTPUT = ['valueChange', 'onValueChanged'];
209
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtbWl4aW4uY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL2Jhc2UvbWl4aW4vdmFsdWUtbWl4aW4uY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsb0JBQW9CLEdBQ3JCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUs3QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsTUFBTSxVQUFVLHFCQUFxQixDQUE2QyxJQUFXOztJQUUzRixZQUFPLEtBQU0sU0FBUSxJQUFJO1lBaUt2Qjs7Y0FFRTtZQUNGLFlBQVksR0FBRyxJQUFXO2dCQUN4QixLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztnQkFuS2pCOzs7a0JBR0U7Z0JBQ0YsbUJBQWMsR0FBMkMsSUFBSSxZQUFZLEVBQTRCLENBQUM7Z0JBRXRHLGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7Z0JBR3pELG9CQUFxQixLQUFLLEVBQUM7Z0JBWTNCLHFCQUFzQixJQUFJLEVBQUM7Z0JBUzNCLHdCQUFjO2dCQVFkLHdCQUF3QixDQUFDLEVBQUM7Z0JBUTFCLDZCQUFxQixJQUFJLFlBQVksRUFBRSxFQUFDO2dCQUN4Qyx3QkFBZ0IsSUFBSSxPQUFPLEVBQUUsRUFBQztnQkFFOUIseUJBQVk7Z0JBYVosaUJBQXdDLE9BQU8sRUFBQztZQXNHaEQsQ0FBQztZQXpKRDs7Y0FFRTtZQUNGLElBQUksUUFBUTtnQkFDVixPQUFPLHVCQUFBLElBQUksaUJBQVUsQ0FBQztZQUN4QixDQUFDO1lBQ0QsSUFBSSxRQUFR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cmNlTnVtYmVyUHJvcGVydHksXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcclxuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZS1jb21wb25lbnRzLmNsYXNzJztcclxuaW1wb3J0IHsgQ29uc3RydWN0b3IgfSBmcm9tICcuL2NvbnN0cmF0Y3Rvcic7XHJcbmltcG9ydCB7IEFYVmFsdWVDaGFuZ2VkRXZlbnQgfSBmcm9tICcuLi9ldmVudHMuY2xhc3MnO1xyXG5pbXBvcnQgeyBBWFZhbGlkYXRpb25SdWxlUmVzdWx0IH0gZnJvbSAnLi4vLi4vdmFsaWRhdGlvbi92YWxpZGF0aW9uLmNsYXNzJztcclxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX1ZhbHVlQ29tcG9uZW5ldE1peGluPFRCYXNlIGV4dGVuZHMgQ29uc3RydWN0b3I8QVhCYXNlQ29tcG9uZW50Pj4oQmFzZTogVEJhc2UpIHtcclxuXHJcbiAgcmV0dXJuIGNsYXNzIGV4dGVuZHMgQmFzZSB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqICBGaXJlcyBlYWNoIHRpbWUgdGhlIHVzZXIgcHJlc3MgYSBrZXkuXHJcbiAgICAqICBAZXZlbnRcclxuICAgICovXHJcbiAgICBvblZhbHVlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYVmFsdWVDaGFuZ2VkRXZlbnQ8YW55Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYVmFsdWVDaGFuZ2VkRXZlbnQ8YW55Pj4oKTtcclxuXHJcbiAgICB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblxyXG4gICAgI3JlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqICBJZiBzZXQgdG8gdHJ1ZSwgdXNlciBjYW5ub3QgY2hhbmdlIHRoZSB2YWx1ZSBvZiBjb21wb25lbnQuXHJcbiAgICAqL1xyXG4gICAgZ2V0IHJlYWRvbmx5KCkge1xyXG4gICAgICByZXR1cm4gdGhpcy4jcmVhZG9ubHk7XHJcbiAgICB9XHJcbiAgICBzZXQgcmVhZG9ubHkodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgdGhpcy4jcmVhZG9ubHkgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgICNhbGxvd051bGw6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgZ2V0IGFsbG93TnVsbCgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuI2FsbG93TnVsbDtcclxuICAgIH1cclxuICAgIHNldCBhbGxvd051bGwodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgdGhpcy4jYWxsb3dOdWxsID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgI25hbWU6IHN0cmluZztcclxuICAgIGdldCBuYW1lKCkge1xyXG4gICAgICByZXR1cm4gdGhpcy4jbmFtZTtcclxuICAgIH1cclxuICAgIHNldCBuYW1lKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgICAgdGhpcy4jbmFtZSA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgICNkZWJvdW5jZVRpbWU6IG51bWJlciA9IDA7XHJcbiAgICBnZXQgZGVib3VuY2VUaW1lKCkge1xyXG4gICAgICByZXR1cm4gdGhpcy4jZGVib3VuY2VUaW1lO1xyXG4gICAgfVxyXG4gICAgc2V0IGRlYm91bmNlVGltZSh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICAgIHRoaXMuI2RlYm91bmNlVGltZSA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICAjdmFsdWVTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgICAjdmFsdWVTdWJqZWN0ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgICAjdmFsdWU6IGFueTtcclxuICAgIGdldCB2YWx1ZSgpOiBhbnkge1xyXG4gICAgICByZXR1cm4gdGhpcy4jdmFsdWU7XHJcbiAgICB9XHJcbiAgICBzZXQgdmFsdWUodjogYW55KSB7XHJcbiAgICAgIHYgPSB0aGlzLl9vbkludGVybmFsVmFsdWVDaGFuZ2luZyh2KTtcclxuICAgICAgaWYgKCF0aGlzLl9pc0luaXRlZCB8fCB0aGlzLmRlYm91bmNlVGltZSA9PSAwKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0VmFsdWUodik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy4jdmFsdWVTdWJqZWN0Lm5leHQodik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAjc3RhdGU6ICdjbGVhcicgfCAnc3VjY2VzcycgfCAnZXJyb3InID0gJ2NsZWFyJztcclxuXHJcbiAgICBnZXQgc3RhdGUoKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLiNzdGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBfZW1pdE9uVmFsdWVDaGFuZ2VkRXZlbnQob2xkVmFsdWU/OiBhbnksIG5ld1ZhbHVlPzogYW55KSB7XHJcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChuZXdWYWx1ZSk7XHJcbiAgICAgIHRoaXMub25WYWx1ZUNoYW5nZWQuZW1pdCh7XHJcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgIHZhbHVlOiBuZXdWYWx1ZSxcclxuICAgICAgICBvbGRWYWx1ZTogb2xkVmFsdWUsXHJcbiAgICAgICAgbmFtZTogdGhpcy5uYW1lXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLl9vblZhbHVlQ2hhbmdlZChvbGRWYWx1ZSwgdGhpcy4jdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIF9vbkludGVybmFsVmFsdWVDaGFuZ2luZyh2YWx1ZTogYW55KSB7XHJcbiAgICAgIC8vIGlmICh0aGlzLnJlYWRvbmx5KVxyXG4gICAgICAvLyAgIHJldHVybiB0aGlzLnZhbHVlO1xyXG4gICAgICByZXR1cm4gdGhpcy5fb25WYWx1ZUNoYW5naW5nKHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBfb25WYWx1ZUNoYW5naW5nKHZhbHVlOiBhbnkpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBfb25WYWx1ZUNoYW5nZWQob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSk6IHZvaWQgeyB9XHJcblxyXG4gICAgX29uSW50ZXJuYWxJbml0KCkge1xyXG4gICAgICB0aGlzLl9nZXRIb3N0RWxlbWVudCgpLnNldEF0dHJpYnV0ZSgnYXgtZm9ybS1pbnB1dCcsICd0cnVlJyk7XHJcbiAgICAgIHRoaXMuI3ZhbHVlU3Vic2NyaXB0aW9uID0gdGhpcy4jdmFsdWVTdWJqZWN0XHJcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuI2RlYm91bmNlVGltZSkpXHJcbiAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcclxuICAgICAgICAuc3Vic2NyaWJlKCh2KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9zZXRWYWx1ZSh2KTtcclxuICAgICAgICB9KTtcclxuICAgICAgc3VwZXIuX29uSW50ZXJuYWxJbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgX29uSW50ZXJuYWxEZXN0cm95KCkge1xyXG4gICAgICB0aGlzLiN2YWx1ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICBzdXBlci5vbkRlc3Ryb3koKTtcclxuICAgIH1cclxuXHJcbiAgICBfc2V0VmFsdWUodjogYW55KSB7XHJcbiAgICAgIGNvbnN0IG9sZCA9IHRoaXMuI3ZhbHVlO1xyXG4gICAgICAvLyBUT0RPOiBjaGVjayByZWFsIGVxdWFsaXR5XHJcbiAgICAgIGlmICh2ICE9IG9sZCkge1xyXG4gICAgICAgIHRoaXMuI3ZhbHVlID0gdjtcclxuICAgICAgICB0aGlzLl9lbWl0T25WYWx1ZUNoYW5nZWRFdmVudChvbGQsIHRoaXMuI3ZhbHVlKTtcclxuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgaWYgKHYgPT0gbnVsbCB8fCB2ID09IHVuZGVmaW5lZCB8fCB2ID09ICcnKSB7XHJcbiAgICAgICAgICB0aGlzLl9zZXRTdGF0ZSgnY2xlYXInKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHRoaXMuX2lzSW5pdGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGUoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjbGVhcigpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgdmFsaWRhdGUoKTogUHJvbWlzZTxBWFZhbGlkYXRpb25SdWxlUmVzdWx0PiB7XHJcbiAgICAgIGNvbnN0IHJ1bGVzID0gQXJyYXkuZnJvbShcclxuICAgICAgICB0aGlzLl9nZXRIb3N0RWxlbWVudCgpLnF1ZXJ5U2VsZWN0b3JBbGwoJ2F4LXZhbGlkYXRpb24tcnVsZScpXHJcbiAgICAgICkuZmlsdGVyKChjKSA9PiAoYyBhcyBhbnkpLl9fYXhDb250ZXh0X18uZW5hYmxlZCk7XHJcbiAgICAgIC8vXHJcbiAgICAgIGlmICghcnVsZXMgfHwgcnVsZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0U3RhdGUoJ2NsZWFyJyk7XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IHJlc3VsdDogdHJ1ZSwgdmFsdWU6IHRoaXMudmFsdWUgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxBWFZhbGlkYXRpb25SdWxlUmVzdWx0PigocmVzb2x2ZSkgPT4ge1xyXG4gICAgICAgIFByb21pc2UuYWxsKFxyXG4gICAgICAgICAgcnVsZXNcclxuICAgICAgICAgICAgLmZpbHRlcigoYykgPT4gdHlwZW9mIChjIGFzIGFueSk/LnZhbGlkYXRlID09PSAnZnVuY3Rpb24nKVxyXG4gICAgICAgICAgICAubWFwKChjKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChjIGFzIGFueSkudmFsaWRhdGUodGhpcy52YWx1ZSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKS50aGVuKChkKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBlcnJvciA9IGQuZmluZCgoYykgPT4gYy5yZXN1bHQgPT09IGZhbHNlKTtcclxuICAgICAgICAgIGlmIChlcnJvcikge1xyXG4gICAgICAgICAgICB0aGlzLl9zZXRTdGF0ZSgnZXJyb3InLCBlcnJvci5tZXNzYWdlKTtcclxuICAgICAgICAgICAgcmVzb2x2ZSh7IHJlc3VsdDogZmFsc2UsIHZhbHVlOiB0aGlzLnZhbHVlIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fc2V0U3RhdGUoJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgcmVzb2x2ZSh7IHJlc3VsdDogdHJ1ZSwgdmFsdWU6IHRoaXMudmFsdWUgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAgKiAgQGlnbm9yZVxyXG4gICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICAgIHN1cGVyKC4uLmFyZ3MpO1xyXG4gICAgfVxyXG5cclxuICAgIF9zZXRTdGF0ZShzdGF0ZTogJ2NsZWFyJyB8ICdzdWNjZXNzJyB8ICdlcnJvcicsIC4uLmFyZ3MpIHtcclxuICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5fZ2V0SG9zdEVsZW1lbnQoKS5jbGFzc0xpc3QuY29udGFpbnMoJ2F4LWVkaXRvci1jb250YWluZXInKSA/XHJcbiAgICAgICAgdGhpcy5fZ2V0SG9zdEVsZW1lbnQoKSA6XHJcbiAgICAgICAgdGhpcy5fZ2V0SG9zdEVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yKCcuYXgtZWRpdG9yLWNvbnRhaW5lcicpO1xyXG4gICAgICBjb25zdCBmb3JtRmllbGQgPSBjb250YWluZXI/LmNsb3Nlc3QoJy5heC1mb3JtLWZpZWxkJyk7XHJcbiAgICAgIGNvbnN0IGxhYmVsID0gZm9ybUZpZWxkPy5xdWVyeVNlbGVjdG9yKCdheC1sYWJlbCcpIHx8IGZvcm1GaWVsZD8ucXVlcnlTZWxlY3RvcignbGFiZWwnKTtcclxuICAgICAgbGV0IHRhcmdldCA9IGNvbnRhaW5lciB8fCB0aGlzLl9nZXRJbm5lckVsZW1lbnQoKTtcclxuICAgICAgaWYgKHRhcmdldC5xdWVyeVNlbGVjdG9yKCcuYXgtZXJyb3ItY29udGFpbmVyJykpIHtcclxuICAgICAgICB0YXJnZXQgPSB0YXJnZXQucXVlcnlTZWxlY3RvcignLmF4LWVycm9yLWNvbnRhaW5lcicpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHBhcmVudCA9IHRhcmdldC5wYXJlbnRFbGVtZW50O1xyXG5cclxuICAgICAgc3dpdGNoIChzdGF0ZSkge1xyXG5cclxuICAgICAgICBjYXNlICdjbGVhcic6XHJcbiAgICAgICAgICB0aGlzLiNzdGF0ZSA9ICdjbGVhcic7XHJcbiAgICAgICAgICBpZiAocGFyZW50LnF1ZXJ5U2VsZWN0b3IoJ3NwYW4uYXgtZXJyb3ItbXNnJykpIHtcclxuICAgICAgICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKHBhcmVudC5xdWVyeVNlbGVjdG9yKCdzcGFuLmF4LWVycm9yLW1zZycpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxhYmVsPy5jbGFzc0xpc3QucmVtb3ZlKCdheC1zdGF0ZS1lcnJvcicpO1xyXG4gICAgICAgICAgdGFyZ2V0LmNsYXNzTGlzdC5yZW1vdmUoJ2F4LXN0YXRlLWVycm9yJywgJ2F4LXN0YXRlLXN1Y2Nlc3MnKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3N1Y2Nlc3MnOlxyXG4gICAgICAgICAgdGhpcy5fc2V0U3RhdGUoJ2NsZWFyJyk7XHJcbiAgICAgICAgICB0YXJnZXQuY2xhc3NMaXN0LmFkZCgnYXgtc3RhdGUtc3VjY2VzcycpO1xyXG4gICAgICAgICAgdGhpcy4jc3RhdGUgPSAnc3VjY2Vzcyc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdlcnJvcic6XHJcbiAgICAgICAgICB0aGlzLl9zZXRTdGF0ZSgnY2xlYXInKTtcclxuICAgICAgICAgIGlmIChhcmdzWzBdKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XHJcbiAgICAgICAgICAgIHNwYW4uaW5uZXJUZXh0ID0gYXJnc1swXTtcclxuICAgICAgICAgICAgc3Bhbi5jbGFzc0xpc3QuYWRkKCdheC1lcnJvci1tc2cnKTtcclxuICAgICAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKHNwYW4pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGFiZWw/LmNsYXNzTGlzdC5hZGQoJ2F4LXN0YXRlLWVycm9yJyk7XHJcbiAgICAgICAgICB0YXJnZXQuY2xhc3NMaXN0LmFkZCgnYXgtc3RhdGUtZXJyb3InKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy4jc3RhdGUgPSAnZXJyb3InO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBWQUxVRV9JTlBVVFMgPSBbXHJcbiAgJ3JlYWRvbmx5JyxcclxuICAnYWxsb3dOdWxsJyxcclxuICAndmFsdWUnLFxyXG4gICdkZWJvdW5jZVRpbWUnLFxyXG4gICduYW1lJyxcclxuICAnY2hlY2tlZCdcclxuXTtcclxuZXhwb3J0IGNvbnN0IFZBTFVFX09VVFBVVCA9IFsndmFsdWVDaGFuZ2UnLCAnb25WYWx1ZUNoYW5nZWQnXTsiXX0=
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtbWl4aW4uY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL2Jhc2UvbWl4aW4vdmFsdWUtbWl4aW4uY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxxQkFBcUIsR0FDdEIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTTdDLE1BQU0sVUFBVSxxQkFBcUIsQ0FBNkMsSUFBVzs7SUFFM0YsWUFBTyxLQUFNLFNBQVEsSUFBSTtZQTZKdkI7O2NBRUU7WUFDRixZQUFZLEdBQUcsSUFBVztnQkFDeEIsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7Z0JBL0pqQjs7O2tCQUdFO2dCQUNGLG1CQUFjLEdBQTJDLElBQUksWUFBWSxFQUE0QixDQUFDO2dCQUV0RyxnQkFBVyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO2dCQUd6RCxvQkFBcUIsS0FBSyxFQUFDO2dCQVkzQixxQkFBc0IsSUFBSSxFQUFDO2dCQVMzQix3QkFBYztnQkFTZCw2QkFBOEIsS0FBSyxFQUFDO2dCQU1wQyx5QkFBWTtnQkF5QlosaUJBQXdDLE9BQU8sRUFBQztZQTBGaEQsQ0FBQztZQXJKRDs7Y0FFRTtZQUNGLElBQUksUUFBUTtnQkFDVixPQUFPLHVCQUFBLElBQUksaUJBQVUsQ0FBQztZQUN4QixDQUFDO1lBQ0QsSUFBSSxRQUFRLENBQUMsS0FBYztnQkFDekIsdUJBQUEsSUFBSSxhQUFhLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxNQUFBLENBQUM7WUFDaEQsQ0FBQztZQUdELElBQUksU0FBUztnQkFDWCxPQUFPLHVCQUFBLElBQUksa0JBQVcsQ0FBQztZQUN6QixDQUFDO1lBQ0QsSUFBSSxTQUFTLENBQUMsS0FBYztnQkFDMUIsdUJBQUEsSUFBSSxjQUFjLHFC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Q0FBQyxPQUFPLENBQUMsQ0FBQzt3QkFDeEIsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7NEJBQ1gsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQzs0QkFDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDOzRCQUNuQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO3lCQUMxQjt3QkFDRCxLQUFLLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO3dCQUN2QyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO3dCQUV2Qyx1QkFBQSxJQUFJLFVBQVUsT0FBTyxNQUFBLENBQUM7d0JBQ3RCLE1BQU07aUJBQ1Q7Z0JBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMzQixDQUFDO1NBQ0Y7Ozs7Ozs7V0FBQTtBQUNILENBQUM7QUFHRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUc7SUFDMUIsVUFBVTtJQUNWLFdBQVc7SUFDWCxPQUFPO0lBQ1AsTUFBTTtJQUNOLFNBQVM7Q0FDVixDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsYUFBYSxFQUFFLGdCQUFnQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSxcclxufSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xyXG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQVhCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLWNvbXBvbmVudHMuY2xhc3MnO1xyXG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gJy4vY29uc3RyYXRjdG9yJztcclxuaW1wb3J0IHsgQVhWYWx1ZUNoYW5nZWRFdmVudCB9IGZyb20gJy4uL2V2ZW50cy5jbGFzcyc7XHJcbmltcG9ydCB7IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQgfSBmcm9tICcuLi8uLi92YWxpZGF0aW9uL3ZhbGlkYXRpb24uY2xhc3MnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9WYWx1ZUNvbXBvbmVuZXRNaXhpbjxUQmFzZSBleHRlbmRzIENvbnN0cnVjdG9yPEFYQmFzZUNvbXBvbmVudD4+KEJhc2U6IFRCYXNlKSB7XHJcblxyXG4gIHJldHVybiBjbGFzcyBleHRlbmRzIEJhc2Uge1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiAgRmlyZXMgZWFjaCB0aW1lIHRoZSB1c2VyIHByZXNzIGEga2V5LlxyXG4gICAgKiAgQGV2ZW50XHJcbiAgICAqL1xyXG4gICAgb25WYWx1ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWFZhbHVlQ2hhbmdlZEV2ZW50PGFueT4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWFZhbHVlQ2hhbmdlZEV2ZW50PGFueT4+KCk7XHJcblxyXG4gICAgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cclxuICAgICNyZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiAgSWYgc2V0IHRvIHRydWUsIHVzZXIgY2Fubm90IGNoYW5nZSB0aGUgdmFsdWUgb2YgY29tcG9uZW50LlxyXG4gICAgKi9cclxuICAgIGdldCByZWFkb25seSgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuI3JlYWRvbmx5O1xyXG4gICAgfVxyXG4gICAgc2V0IHJlYWRvbmx5KHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgIHRoaXMuI3JlYWRvbmx5ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICAjYWxsb3dOdWxsOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIGdldCBhbGxvd051bGwoKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLiNhbGxvd051bGw7XHJcbiAgICB9XHJcbiAgICBzZXQgYWxsb3dOdWxsKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgIHRoaXMuI2FsbG93TnVsbCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgICNuYW1lOiBzdHJpbmc7XHJcbiAgICBnZXQgbmFtZSgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuI25hbWU7XHJcbiAgICB9XHJcbiAgICBzZXQgbmFtZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICAgIHRoaXMuI25hbWUgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgI2lzVXNlckludGVyYWN0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgZ2V0IGlzVXNlckludGVyYWN0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgICByZXR1cm4gdGhpcy4jaXNVc2VySW50ZXJhY3Rpb247XHJcbiAgICB9XHJcblxyXG4gICAgI3ZhbHVlOiBhbnk7XHJcbiAgICBnZXQgdmFsdWUoKTogYW55IHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2ludGVybmFsR2V0VmFsdWUoKTtcclxuICAgIH1cclxuICAgIHNldCB2YWx1ZSh2OiBhbnkpIHtcclxuICAgICAgdiA9IHRoaXMuX2ludGVybmFsU2V0VmFsdWUodik7XHJcbiAgICAgIC8vaWYgKCF0aGlzLl9pc0luaXRlZCApIHtcclxuICAgICAgY29uc3Qgb2xkID0gdGhpcy4jdmFsdWU7XHJcbiAgICAgIC8vIFRPRE86IGNoZWNrIHJlYWwgZXF1YWxpdHlcclxuICAgICAgaWYgKHYgIT0gb2xkKSB7XHJcbiAgICAgICAgdGhpcy4jdmFsdWUgPSB2O1xyXG4gICAgICAgIHRoaXMuX2VtaXRPblZhbHVlQ2hhbmdlZEV2ZW50KG9sZCwgdGhpcy4jdmFsdWUpO1xyXG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICBpZiAodiA9PSBudWxsIHx8IHYgPT0gdW5kZWZpbmVkIHx8IHYgPT0gJycgfHwgKEFycmF5LmlzQXJyYXkodikgJiYgdi5sZW5ndGggPT0gMCkpIHtcclxuICAgICAgICAgIHRoaXMuX3NldFN0YXRlKCdjbGVhcicpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5faXNJbml0ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLiNpc1VzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xyXG4gICAgICAvL30gXHJcbiAgICB9XHJcblxyXG4gICAgI3N0YXRlOiAnY2xlYXInIHwgJ3N1Y2Nlc3MnIHwgJ2Vycm9yJyA9ICdjbGVhcic7XHJcblxyXG4gICAgZ2V0IHN0YXRlKCkge1xyXG4gICAgICByZXR1cm4gdGhpcy4jc3RhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgX2VtaXRPblZhbHVlQ2hhbmdlZEV2ZW50KG9sZFZhbHVlPzogYW55LCBuZXdWYWx1ZT86IGFueSkge1xyXG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQobmV3VmFsdWUpO1xyXG4gICAgICB0aGlzLm9uVmFsdWVDaGFuZ2VkLmVtaXQoe1xyXG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgICB2YWx1ZTogbmV3VmFsdWUsXHJcbiAgICAgICAgb2xkVmFsdWU6IG9sZFZhbHVlLFxyXG4gICAgICAgIG5hbWU6IHRoaXMubmFtZSxcclxuICAgICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdGhpcy5pc1VzZXJJbnRlcmFjdGlvblxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5fb25WYWx1ZUNoYW5nZWQob2xkVmFsdWUsIHRoaXMuI3ZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBfaW50ZXJuYWxTZXRWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9zZXRWYWx1ZSh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgX2ludGVybmFsR2V0VmFsdWUoKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9nZXRWYWx1ZSh0aGlzLiN2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgX3NldFZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIF9nZXRWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBfc2V0VXNlckludGVyYWN0aW9uKCkge1xyXG4gICAgICB0aGlzLiNpc1VzZXJJbnRlcmFjdGlvbiA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgX29uVmFsdWVDaGFuZ2VkKG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpOiB2b2lkIHsgfVxyXG5cclxuICAgIF9vbkludGVybmFsSW5pdCgpIHtcclxuICAgICAgdGhpcy5fZ2V0SG9zdEVsZW1lbnQoKS5zZXRBdHRyaWJ1dGUoJ2F4LWZvcm0taW5wdXQnLCAndHJ1ZScpO1xyXG4gICAgICBzdXBlci5fb25JbnRlcm5hbEluaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBfb25JbnRlcm5hbERlc3Ryb3koKSB7XHJcbiAgICAgIHN1cGVyLm9uRGVzdHJveSgpO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgY2xlYXIoKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHZhbGlkYXRlKCk6IFByb21pc2U8QVhWYWxpZGF0aW9uUnVsZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBydWxlcyA9IEFycmF5LmZyb20oXHJcbiAgICAgICAgdGhpcy5fZ2V0SG9zdEVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yQWxsKCdheC12YWxpZGF0aW9uLXJ1bGUnKVxyXG4gICAgICApLmZpbHRlcigoYykgPT4gKGMgYXMgYW55KS5fX2F4Q29udGV4dF9fLmVuYWJsZWQpO1xyXG4gICAgICAvL1xyXG4gICAgICBpZiAoIXJ1bGVzIHx8IHJ1bGVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHRoaXMuX3NldFN0YXRlKCdjbGVhcicpO1xyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoeyByZXN1bHQ6IHRydWUsIHZhbHVlOiB0aGlzLnZhbHVlLCBuYW1lOiB0aGlzLm5hbWUsIGlkOiB0aGlzLmlkIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2U8QVhWYWxpZGF0aW9uUnVsZVJlc3VsdD4oKHJlc29sdmUpID0+IHtcclxuICAgICAgICBQcm9taXNlLmFsbChcclxuICAgICAgICAgIHJ1bGVzXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKGMpID0+IHR5cGVvZiAoYyBhcyBhbnkpPy52YWxpZGF0ZSA9PT0gJ2Z1bmN0aW9uJylcclxuICAgICAgICAgICAgLm1hcCgoYykgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoYyBhcyBhbnkpLnZhbGlkYXRlKHRoaXMudmFsdWUpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICkudGhlbigoZCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgZXJyb3IgPSBkLmZpbmQoKGMpID0+IGMucmVzdWx0ID09PSBmYWxzZSk7XHJcbiAgICAgICAgICBpZiAoZXJyb3IpIHtcclxuICAgICAgICAgICAgdGhpcy5fc2V0U3RhdGUoJ2Vycm9yJywgZXJyb3IubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJlc29sdmUoeyByZXN1bHQ6IGZhbHNlLCB2YWx1ZTogdGhpcy52YWx1ZSwgbWVzc2FnZTogZXJyb3IubWVzc2FnZSwgbmFtZTogdGhpcy5uYW1lLCBpZDogdGhpcy5pZCB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3NldFN0YXRlKCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgIHJlc29sdmUoeyByZXN1bHQ6IHRydWUsIHZhbHVlOiB0aGlzLnZhbHVlLCBuYW1lOiB0aGlzLm5hbWUsIGlkOiB0aGlzLmlkIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAgKiAgQGlnbm9yZVxyXG4gICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICAgIHN1cGVyKC4uLmFyZ3MpO1xyXG4gICAgfVxyXG5cclxuICAgIF9zZXRTdGF0ZShzdGF0ZTogJ2NsZWFyJyB8ICdzdWNjZXNzJyB8ICdlcnJvcicsIC4uLmFyZ3MpIHtcclxuICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5fZ2V0SG9zdEVsZW1lbnQoKS5jbGFzc0xpc3QuY29udGFpbnMoJ2F4LWVkaXRvci1jb250YWluZXInKSA/XHJcbiAgICAgICAgdGhpcy5fZ2V0SG9zdEVsZW1lbnQoKSA6XHJcbiAgICAgICAgdGhpcy5fZ2V0SG9zdEVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yKCcuYXgtZWRpdG9yLWNvbnRhaW5lcicpO1xyXG4gICAgICBjb25zdCBmb3JtRmllbGQgPSBjb250YWluZXI/LmNsb3Nlc3QoJy5heC1mb3JtLWZpZWxkJyk7XHJcbiAgICAgIGNvbnN0IGxhYmVsID0gZm9ybUZpZWxkPy5xdWVyeVNlbGVjdG9yKCdheC1sYWJlbCcpIHx8IGZvcm1GaWVsZD8ucXVlcnlTZWxlY3RvcignbGFiZWwnKTtcclxuICAgICAgbGV0IHRhcmdldCA9IGNvbnRhaW5lciB8fCB0aGlzLl9nZXRJbm5lckVsZW1lbnQoKTtcclxuICAgICAgaWYgKHRhcmdldD8ucXVlcnlTZWxlY3RvcignLmF4LWVycm9yLWNvbnRhaW5lcicpKSB7XHJcbiAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoJy5heC1lcnJvci1jb250YWluZXInKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBwYXJlbnQgPSB0YXJnZXQ/LnBhcmVudEVsZW1lbnQ7XHJcbiAgICAgIGlmICghdGFyZ2V0IHx8ICFwYXJlbnQpXHJcbiAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgc3dpdGNoIChzdGF0ZSkge1xyXG4gICAgICAgIGNhc2UgJ2NsZWFyJzpcclxuICAgICAgICAgIHRoaXMuI3N0YXRlID0gJ2NsZWFyJztcclxuICAgICAgICAgIGlmIChwYXJlbnQucXVlcnlTZWxlY3Rvcignc3Bhbi5heC1lcnJvci1tc2cnKSkge1xyXG4gICAgICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQocGFyZW50LnF1ZXJ5U2VsZWN0b3IoJ3NwYW4uYXgtZXJyb3ItbXNnJykpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGFiZWw/LmNsYXNzTGlzdC5yZW1vdmUoJ2F4LXN0YXRlLWVycm9yJyk7XHJcbiAgICAgICAgICB0YXJnZXQuY2xhc3NMaXN0LnJlbW92ZSgnYXgtc3RhdGUtZXJyb3InLCAnYXgtc3RhdGUtc3VjY2VzcycpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnc3VjY2Vzcyc6XHJcbiAgICAgICAgICB0aGlzLl9zZXRTdGF0ZSgnY2xlYXInKTtcclxuICAgICAgICAgIHRhcmdldC5jbGFzc0xpc3QuYWRkKCdheC1zdGF0ZS1zdWNjZXNzJyk7XHJcbiAgICAgICAgICB0aGlzLiNzdGF0ZSA9ICdzdWNjZXNzJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2Vycm9yJzpcclxuICAgICAgICAgIHRoaXMuX3NldFN0YXRlKCdjbGVhcicpO1xyXG4gICAgICAgICAgaWYgKGFyZ3NbMF0pIHtcclxuICAgICAgICAgICAgY29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcclxuICAgICAgICAgICAgc3Bhbi5pbm5lclRleHQgPSBhcmdzWzBdO1xyXG4gICAgICAgICAgICBzcGFuLmNsYXNzTGlzdC5hZGQoJ2F4LWVycm9yLW1zZycpO1xyXG4gICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoc3Bhbik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsYWJlbD8uY2xhc3NMaXN0LmFkZCgnYXgtc3RhdGUtZXJyb3InKTtcclxuICAgICAgICAgIHRhcmdldC5jbGFzc0xpc3QuYWRkKCdheC1zdGF0ZS1lcnJvcicpO1xyXG5cclxuICAgICAgICAgIHRoaXMuI3N0YXRlID0gJ2Vycm9yJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG5leHBvcnQgY29uc3QgVkFMVUVfSU5QVVRTID0gW1xyXG4gICdyZWFkb25seScsXHJcbiAgJ2FsbG93TnVsbCcsXHJcbiAgJ3ZhbHVlJyxcclxuICAnbmFtZScsXHJcbiAgJ2NoZWNrZWQnXHJcbl07XHJcbmV4cG9ydCBjb25zdCBWQUxVRV9PVVRQVVQgPSBbJ3ZhbHVlQ2hhbmdlJywgJ29uVmFsdWVDaGFuZ2VkJ107Il19
@@ -82,9 +82,9 @@ export class AXOverlayService {
82
82
  };
83
83
  }
84
84
  }
85
- AXOverlayService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AXOverlayService, deps: [{ token: i1.DynamicOverlay }, { token: i2.Overlay }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable });
86
- AXOverlayService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AXOverlayService, providedIn: 'root' });
87
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AXOverlayService, decorators: [{
85
+ AXOverlayService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: AXOverlayService, deps: [{ token: i1.DynamicOverlay }, { token: i2.Overlay }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable });
86
+ AXOverlayService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: AXOverlayService, providedIn: 'root' });
87
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: AXOverlayService, decorators: [{
88
88
  type: Injectable,
89
89
  args: [{ providedIn: 'root' }]
90
90
  }], ctorParameters: function () { return [{ type: i1.DynamicOverlay }, { type: i2.Overlay }, { type: i0.ApplicationRef }]; } });
@@ -25,9 +25,9 @@ export class AXResponsiveDirective {
25
25
  this._observer.unobserve(this._elementRef.nativeElement);
26
26
  }
27
27
  }
28
- AXResponsiveDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AXResponsiveDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
29
- AXResponsiveDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.9", type: AXResponsiveDirective, selector: "[ax-responsive]", ngImport: i0 });
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AXResponsiveDirective, decorators: [{
28
+ AXResponsiveDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: AXResponsiveDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
29
+ AXResponsiveDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.0", type: AXResponsiveDirective, selector: "[ax-responsive]", ngImport: i0 });
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: AXResponsiveDirective, decorators: [{
31
31
  type: Directive,
32
32
  args: [{ selector: '[ax-responsive]' }]
33
33
  }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
@@ -9,9 +9,9 @@ export class AXBreadCrumbsItemComponent extends AXBaseComponent {
9
9
  super(_elementRef, _cdr);
10
10
  }
11
11
  }
12
- AXBreadCrumbsItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AXBreadCrumbsItemComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
13
- AXBreadCrumbsItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: AXBreadCrumbsItemComponent, selector: "ax-breadcrumbs-item", inputs: { text: "text" }, host: { classAttribute: "ax-breadcrumbs-item" }, usesInheritance: true, ngImport: i0, template: "<ng-content select=\"ax-prefix,ax-loading,ax-icon\">\r\n</ng-content>\r\n<div>{{text}}</div>\r\n<ng-content select=\"ax-suffix,ax-loading,ax-icon\">\r\n</ng-content>" });
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AXBreadCrumbsItemComponent, decorators: [{
12
+ AXBreadCrumbsItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: AXBreadCrumbsItemComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
13
+ AXBreadCrumbsItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.0", type: AXBreadCrumbsItemComponent, selector: "ax-breadcrumbs-item", inputs: { text: "text" }, host: { classAttribute: "ax-breadcrumbs-item" }, usesInheritance: true, ngImport: i0, template: "<ng-content select=\"ax-prefix,ax-loading,ax-icon\">\r\n</ng-content>\r\n<div>{{text}}</div>\r\n<ng-content select=\"ax-suffix,ax-loading,ax-icon\">\r\n</ng-content>" });
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: AXBreadCrumbsItemComponent, decorators: [{
15
15
  type: Component,
16
16
  args: [{ selector: 'ax-breadcrumbs-item', host: { class: 'ax-breadcrumbs-item' }, template: "<ng-content select=\"ax-prefix,ax-loading,ax-icon\">\r\n</ng-content>\r\n<div>{{text}}</div>\r\n<ng-content select=\"ax-suffix,ax-loading,ax-icon\">\r\n</ng-content>" }]
17
17
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { text: [{
@@ -9,9 +9,9 @@ export class AXBreadCrumbsComponent extends AXBaseComponent {
9
9
  super(_elementRef, _cdr);
10
10
  }
11
11
  }
12
- AXBreadCrumbsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AXBreadCrumbsComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
13
- AXBreadCrumbsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: AXBreadCrumbsComponent, selector: "ax-breadcrumbs", host: { classAttribute: "ax-breadcrumbs" }, usesInheritance: true, ngImport: i0, template: "<ng-content select=\"ax-breadcrumbs-item\"></ng-content>" });
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AXBreadCrumbsComponent, decorators: [{
12
+ AXBreadCrumbsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: AXBreadCrumbsComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
13
+ AXBreadCrumbsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.0", type: AXBreadCrumbsComponent, selector: "ax-breadcrumbs", host: { classAttribute: "ax-breadcrumbs" }, usesInheritance: true, ngImport: i0, template: "<ng-content select=\"ax-breadcrumbs-item\"></ng-content>" });
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: AXBreadCrumbsComponent, decorators: [{
15
15
  type: Component,
16
16
  args: [{ selector: 'ax-breadcrumbs', host: { class: 'ax-breadcrumbs' }, template: "<ng-content select=\"ax-breadcrumbs-item\"></ng-content>" }]
17
17
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; } });
@@ -5,10 +5,10 @@ import { AXBreadCrumbsItemComponent } from './breadcrumbs-item.component';
5
5
  import * as i0 from "@angular/core";
6
6
  export class AXBreadcrumbsModule {
7
7
  }
8
- AXBreadcrumbsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AXBreadcrumbsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
- AXBreadcrumbsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AXBreadcrumbsModule, declarations: [AXBreadCrumbsComponent, AXBreadCrumbsItemComponent], imports: [CommonModule], exports: [AXBreadCrumbsComponent, AXBreadCrumbsItemComponent] });
10
- AXBreadcrumbsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AXBreadcrumbsModule, providers: [], imports: [[CommonModule]] });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AXBreadcrumbsModule, decorators: [{
8
+ AXBreadcrumbsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: AXBreadcrumbsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
+ AXBreadcrumbsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.0", ngImport: i0, type: AXBreadcrumbsModule, declarations: [AXBreadCrumbsComponent, AXBreadCrumbsItemComponent], imports: [CommonModule], exports: [AXBreadCrumbsComponent, AXBreadCrumbsItemComponent] });
10
+ AXBreadcrumbsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: AXBreadcrumbsModule, providers: [], imports: [CommonModule] });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: AXBreadcrumbsModule, decorators: [{
12
12
  type: NgModule,
13
13
  args: [{
14
14
  declarations: [AXBreadCrumbsComponent, AXBreadCrumbsItemComponent],
@@ -17,4 +17,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
17
17
  providers: [],
18
18
  }]
19
19
  }] });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvc3JjL2xpYi9icmVhZGNydW1icy9icmVhZGNydW1icy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBUTFFLE1BQU0sT0FBTyxtQkFBbUI7O2dIQUFuQixtQkFBbUI7aUhBQW5CLG1CQUFtQixpQkFMYixzQkFBc0IsRUFBQywwQkFBMEIsYUFDckQsWUFBWSxhQUNiLHNCQUFzQixFQUFDLDBCQUEwQjtpSEFHbEQsbUJBQW1CLGFBRmpCLEVBQUUsWUFGSixDQUFFLFlBQVksQ0FBRTsyRkFJaEIsbUJBQW1CO2tCQU4vQixRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxDQUFDLHNCQUFzQixFQUFDLDBCQUEwQixDQUFDO29CQUNqRSxPQUFPLEVBQUUsQ0FBRSxZQUFZLENBQUU7b0JBQ3pCLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixFQUFDLDBCQUEwQixDQUFDO29CQUM1RCxTQUFTLEVBQUUsRUFBRTtpQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBBWEJyZWFkQ3J1bWJzQ29tcG9uZW50IH0gZnJvbSAnLi9icmVhZGNydW1icy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBWEJyZWFkQ3J1bWJzSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vYnJlYWRjcnVtYnMtaXRlbS5jb21wb25lbnQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICAgIGRlY2xhcmF0aW9uczogW0FYQnJlYWRDcnVtYnNDb21wb25lbnQsQVhCcmVhZENydW1ic0l0ZW1Db21wb25lbnRdLFxyXG4gICAgaW1wb3J0czogWyBDb21tb25Nb2R1bGUgXSxcclxuICAgIGV4cG9ydHM6IFtBWEJyZWFkQ3J1bWJzQ29tcG9uZW50LEFYQnJlYWRDcnVtYnNJdGVtQ29tcG9uZW50XSxcclxuICAgIHByb3ZpZGVyczogW10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBWEJyZWFkY3J1bWJzTW9kdWxlIHt9Il19
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvc3JjL2xpYi9icmVhZGNydW1icy9icmVhZGNydW1icy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBUTFFLE1BQU0sT0FBTyxtQkFBbUI7O2dIQUFuQixtQkFBbUI7aUhBQW5CLG1CQUFtQixpQkFMYixzQkFBc0IsRUFBQywwQkFBMEIsYUFDckQsWUFBWSxhQUNiLHNCQUFzQixFQUFDLDBCQUEwQjtpSEFHbEQsbUJBQW1CLGFBRmpCLEVBQUUsWUFGRixZQUFZOzJGQUlkLG1CQUFtQjtrQkFOL0IsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUUsQ0FBQyxzQkFBc0IsRUFBQywwQkFBMEIsQ0FBQztvQkFDakUsT0FBTyxFQUFFLENBQUUsWUFBWSxDQUFFO29CQUN6QixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsRUFBQywwQkFBMEIsQ0FBQztvQkFDNUQsU0FBUyxFQUFFLEVBQUU7aUJBQ2hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQVhCcmVhZENydW1ic0NvbXBvbmVudCB9IGZyb20gJy4vYnJlYWRjcnVtYnMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQVhCcmVhZENydW1ic0l0ZW1Db21wb25lbnQgfSBmcm9tICcuL2JyZWFkY3J1bWJzLWl0ZW0uY29tcG9uZW50JztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBkZWNsYXJhdGlvbnM6IFtBWEJyZWFkQ3J1bWJzQ29tcG9uZW50LEFYQnJlYWRDcnVtYnNJdGVtQ29tcG9uZW50XSxcclxuICAgIGltcG9ydHM6IFsgQ29tbW9uTW9kdWxlIF0sXHJcbiAgICBleHBvcnRzOiBbQVhCcmVhZENydW1ic0NvbXBvbmVudCxBWEJyZWFkQ3J1bWJzSXRlbUNvbXBvbmVudF0sXHJcbiAgICBwcm92aWRlcnM6IFtdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQVhCcmVhZGNydW1ic01vZHVsZSB7fSJdfQ==