@acorex/components 7.1.3 → 7.1.6

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 (271) hide show
  1. package/action-sheet/public-api.d.ts +1 -0
  2. package/action-sheet/src/action-sheet.component.d.ts +8 -11
  3. package/alert/src/alert.component.d.ts +15 -47
  4. package/avatar/src/avatar.component.d.ts +8 -11
  5. package/badge/src/badge.component.d.ts +4 -35
  6. package/breadcrumbs/src/breadcrumbs-item.component.d.ts +6 -6
  7. package/breadcrumbs/src/breadcrumbs.component.d.ts +4 -8
  8. package/button/src/button-group.component.d.ts +6 -6
  9. package/button/src/button-item.component.d.ts +6 -6
  10. package/chips/src/chips.component.d.ts +6 -6
  11. package/color-picker/src/color-picker.component.d.ts +16 -16
  12. package/common/src/components/base-component.class.d.ts +7 -2
  13. package/date-picker/src/datepicker.component.d.ts +17 -132
  14. package/esm2022/action-sheet/public-api.mjs +2 -1
  15. package/esm2022/action-sheet/src/action-sheet.component.mjs +15 -21
  16. package/esm2022/action-sheet/src/action-sheet.module.mjs +4 -4
  17. package/esm2022/action-sheet/src/action-sheet.service.mjs +4 -8
  18. package/esm2022/alert/src/alert.component.mjs +52 -50
  19. package/esm2022/alert/src/alert.module.mjs +4 -4
  20. package/esm2022/avatar/src/avatar-group.component.mjs +3 -3
  21. package/esm2022/avatar/src/avatar.component.mjs +11 -20
  22. package/esm2022/avatar/src/avatar.module.mjs +4 -4
  23. package/esm2022/badge/src/badge.component.mjs +8 -13
  24. package/esm2022/badge/src/badge.module.mjs +4 -4
  25. package/esm2022/breadcrumbs/src/breadcrumbs-item.component.mjs +3 -3
  26. package/esm2022/breadcrumbs/src/breadcrumbs.component.mjs +7 -13
  27. package/esm2022/breadcrumbs/src/breadcrumbs.module.mjs +4 -4
  28. package/esm2022/button/src/button-group.component.mjs +3 -3
  29. package/esm2022/button/src/button-item.component.mjs +3 -3
  30. package/esm2022/button/src/button.component.mjs +5 -5
  31. package/esm2022/button/src/button.module.mjs +4 -4
  32. package/esm2022/calendar/src/calendar-range.component.mjs +19 -20
  33. package/esm2022/calendar/src/calendar.class.mjs +6 -6
  34. package/esm2022/calendar/src/calendar.component.mjs +5 -5
  35. package/esm2022/calendar/src/calendar.module.mjs +4 -4
  36. package/esm2022/card/src/card.component.mjs +3 -3
  37. package/esm2022/card/src/card.module.mjs +4 -4
  38. package/esm2022/checkbox/src/checkbox.component.mjs +3 -3
  39. package/esm2022/checkbox/src/checkbox.module.mjs +4 -4
  40. package/esm2022/chips/src/chips.component.mjs +3 -3
  41. package/esm2022/chips/src/chips.module.mjs +4 -4
  42. package/esm2022/collapse/src/collapse-group.component.mjs +3 -3
  43. package/esm2022/collapse/src/collapse.component.mjs +3 -3
  44. package/esm2022/collapse/src/collapse.module.mjs +4 -4
  45. package/esm2022/color-palette/src/color-palette-input.component.mjs +3 -3
  46. package/esm2022/color-palette/src/color-palette-picker.component.mjs +3 -3
  47. package/esm2022/color-palette/src/color-palette-preview.component.mjs +3 -3
  48. package/esm2022/color-palette/src/color-palette-swatches.component.mjs +3 -3
  49. package/esm2022/color-palette/src/color-palette.class.mjs +6 -6
  50. package/esm2022/color-palette/src/color-palette.component.mjs +3 -3
  51. package/esm2022/color-palette/src/color-palette.module.mjs +4 -4
  52. package/esm2022/color-picker/src/color-picker.component.mjs +3 -3
  53. package/esm2022/color-picker/src/color-picker.module.mjs +4 -4
  54. package/esm2022/common/src/classes/components.class.mjs +18 -18
  55. package/esm2022/common/src/common.module.mjs +4 -4
  56. package/esm2022/common/src/components/base-component.class.mjs +14 -3
  57. package/esm2022/common/src/components/value-component.class.mjs +4 -5
  58. package/esm2022/common/src/directives/auto-focus.directive.mjs +3 -3
  59. package/esm2022/common/src/directives/debounce-time.directive.mjs +3 -3
  60. package/esm2022/common/src/directives/hotkey.directive.mjs +3 -3
  61. package/esm2022/common/src/directives/infinite-scroll.directive.mjs +3 -3
  62. package/esm2022/common/src/directives/responsive.directive.mjs +3 -3
  63. package/esm2022/common/src/services/custom-cdk-overlay.service.mjs +6 -6
  64. package/esm2022/common/src/services/hotkey.service.mjs +3 -3
  65. package/esm2022/common/src/services/overlay.service.mjs +3 -3
  66. package/esm2022/context-menu/src/context-menu.component.mjs +3 -3
  67. package/esm2022/context-menu/src/context-menu.module.mjs +4 -4
  68. package/esm2022/data-pager/src/data-pager-base.component.mjs +6 -6
  69. package/esm2022/data-pager/src/data-pager-info.component.mjs +3 -3
  70. package/esm2022/data-pager/src/data-pager-input-selector.component.mjs +3 -3
  71. package/esm2022/data-pager/src/data-pager-next-buttons.components.mjs +3 -3
  72. package/esm2022/data-pager/src/data-pager-numeric-selector.component.mjs +3 -3
  73. package/esm2022/data-pager/src/data-pager-pagesize-dropdown.component.mjs +3 -3
  74. package/esm2022/data-pager/src/data-pager-prev-buttons.component.mjs +3 -3
  75. package/esm2022/data-pager/src/data-pager.component.mjs +3 -3
  76. package/esm2022/data-pager/src/data-pager.module.mjs +4 -4
  77. package/esm2022/data-table/src/data-column-cell-template.directive.mjs +3 -3
  78. package/esm2022/data-table/src/data-column.directive.mjs +3 -3
  79. package/esm2022/data-table/src/data-table.component.mjs +3 -3
  80. package/esm2022/data-table/src/data-table.module.mjs +4 -4
  81. package/esm2022/date-picker/src/datepicker.component.mjs +38 -152
  82. package/esm2022/date-picker/src/datepicker.module.mjs +4 -4
  83. package/esm2022/decorators/src/close-button.component.mjs +3 -3
  84. package/esm2022/decorators/src/content.component.mjs +3 -3
  85. package/esm2022/decorators/src/decorators.module.mjs +4 -4
  86. package/esm2022/decorators/src/footer.component.mjs +3 -3
  87. package/esm2022/decorators/src/form-hint.component.mjs +3 -3
  88. package/esm2022/decorators/src/header.component.mjs +3 -3
  89. package/esm2022/decorators/src/icon.component.mjs +3 -3
  90. package/esm2022/decorators/src/overlay.component.mjs +3 -3
  91. package/esm2022/decorators/src/placeholder.component.mjs +3 -3
  92. package/esm2022/decorators/src/prefix.component.mjs +3 -3
  93. package/esm2022/decorators/src/sub-title.component.mjs +3 -3
  94. package/esm2022/decorators/src/suffix.component.mjs +3 -3
  95. package/esm2022/decorators/src/text.component.mjs +3 -3
  96. package/esm2022/decorators/src/title.component.mjs +3 -3
  97. package/esm2022/dialog/src/dialog.component.mjs +4 -4
  98. package/esm2022/dialog/src/dialog.module.mjs +4 -4
  99. package/esm2022/dialog/src/dialog.service.mjs +3 -3
  100. package/esm2022/drawer/src/drawer-container.component.mjs +3 -3
  101. package/esm2022/drawer/src/drawer.component.mjs +3 -3
  102. package/esm2022/drawer/src/drawer.module.mjs +4 -4
  103. package/esm2022/dropdown/src/dropdown-panel.component.mjs +3 -3
  104. package/esm2022/dropdown/src/dropdown.module.mjs +4 -4
  105. package/esm2022/form/src/form-field.component.mjs +3 -3
  106. package/esm2022/form/src/form.component.mjs +3 -3
  107. package/esm2022/form/src/form.module.mjs +4 -4
  108. package/esm2022/form/src/validation-rule.widget.mjs +3 -3
  109. package/esm2022/form/src/validation-summary.component.mjs +4 -4
  110. package/esm2022/image/src/image.component.mjs +3 -3
  111. package/esm2022/image/src/image.module.mjs +4 -4
  112. package/esm2022/label/src/label.component.mjs +3 -3
  113. package/esm2022/label/src/label.module.mjs +4 -4
  114. package/esm2022/loading/src/loading-spinner.component.mjs +3 -3
  115. package/esm2022/loading/src/loading.component.mjs +3 -3
  116. package/esm2022/loading/src/loading.directive.mjs +3 -3
  117. package/esm2022/loading/src/loading.module.mjs +4 -4
  118. package/esm2022/loading/src/loading.service.mjs +3 -3
  119. package/esm2022/menu/src/menu.component.mjs +3 -3
  120. package/esm2022/menu/src/menu.module.mjs +4 -4
  121. package/esm2022/mixin/src/base-components.class.mjs +3 -3
  122. package/esm2022/mixin/src/selection-component.class.mjs +9 -16
  123. package/esm2022/notification/src/notification.component.mjs +3 -3
  124. package/esm2022/notification/src/notification.module.mjs +4 -4
  125. package/esm2022/notification/src/notification.service.mjs +3 -3
  126. package/esm2022/number-box/src/number-box.component.mjs +3 -3
  127. package/esm2022/number-box/src/number-box.module.mjs +4 -4
  128. package/esm2022/page/src/base-page.class.mjs +3 -3
  129. package/esm2022/page/src/page.component.mjs +3 -3
  130. package/esm2022/page/src/page.module.mjs +4 -4
  131. package/esm2022/password-box/src/password-box.component.mjs +3 -3
  132. package/esm2022/password-box/src/password-box.module.mjs +4 -4
  133. package/esm2022/picker/src/picker-column.component.mjs +3 -3
  134. package/esm2022/picker/src/picker.component.mjs +3 -3
  135. package/esm2022/picker/src/picker.module.mjs +4 -4
  136. package/esm2022/popover/public-api.mjs +2 -1
  137. package/esm2022/popover/src/dropdown-component.class.mjs +72 -0
  138. package/esm2022/popover/src/popover.component.mjs +28 -35
  139. package/esm2022/popover/src/popover.module.mjs +4 -4
  140. package/esm2022/popup/src/popup.component.mjs +3 -3
  141. package/esm2022/popup/src/popup.module.mjs +4 -4
  142. package/esm2022/popup/src/popup.service.mjs +3 -3
  143. package/esm2022/progress-bar/src/progress-bar.component.mjs +3 -3
  144. package/esm2022/progress-bar/src/progress-bar.module.mjs +4 -4
  145. package/esm2022/radio/src/radio.component.mjs +3 -3
  146. package/esm2022/radio/src/radio.module.mjs +4 -4
  147. package/esm2022/range-slider/src/range-slider.component.mjs +3 -3
  148. package/esm2022/range-slider/src/range-slider.module.mjs +4 -4
  149. package/esm2022/rating/src/rating.component.mjs +3 -3
  150. package/esm2022/rating/src/rating.component.module.mjs +4 -4
  151. package/esm2022/result/src/result.component.mjs +3 -3
  152. package/esm2022/result/src/result.module.mjs +4 -4
  153. package/esm2022/search-box/src/search-box.component.mjs +3 -3
  154. package/esm2022/search-box/src/search-box.module.mjs +4 -4
  155. package/esm2022/select-box/src/selectbox.component.mjs +3 -3
  156. package/esm2022/select-box/src/selectbox.module.mjs +4 -4
  157. package/esm2022/selection-list/src/selection-list.component.mjs +3 -3
  158. package/esm2022/selection-list/src/selection-list.module.mjs +4 -4
  159. package/esm2022/switch/src/switch-content.component.mjs +3 -3
  160. package/esm2022/switch/src/switch.component.mjs +3 -3
  161. package/esm2022/switch/src/switch.module.mjs +4 -4
  162. package/esm2022/tabs/src/tab-content.directive.mjs +3 -3
  163. package/esm2022/tabs/src/tab-item.component.mjs +3 -3
  164. package/esm2022/tabs/src/tabs.component.mjs +3 -3
  165. package/esm2022/tabs/src/tabs.module.mjs +4 -4
  166. package/esm2022/tag/src/tag.component.mjs +3 -3
  167. package/esm2022/tag/src/tag.module.mjs +4 -4
  168. package/esm2022/textarea/src/textarea.component.mjs +3 -3
  169. package/esm2022/textarea/src/textarea.module.mjs +4 -4
  170. package/esm2022/textbox/src/mask-options.directive.mjs +3 -3
  171. package/esm2022/textbox/src/textbox.component.mjs +3 -3
  172. package/esm2022/textbox/src/textbox.module.mjs +4 -4
  173. package/esm2022/time-box/src/time-box.component.mjs +17 -25
  174. package/esm2022/time-box/src/time-box.module.mjs +4 -4
  175. package/esm2022/toast/src/toast.component.mjs +3 -3
  176. package/esm2022/toast/src/toast.module.mjs +4 -4
  177. package/esm2022/toast/src/toast.service.mjs +3 -3
  178. package/esm2022/tooltip/src/tooltip.component.mjs +3 -3
  179. package/esm2022/tooltip/src/tooltip.directive.mjs +3 -3
  180. package/esm2022/tooltip/src/tooltip.module.mjs +4 -4
  181. package/esm2022/tree-view/src/tree-view.component.mjs +3 -3
  182. package/esm2022/tree-view/src/tree-view.module.mjs +4 -4
  183. package/esm2022/uploader/src/uploader.component.mjs +3 -3
  184. package/esm2022/uploader/src/uploader.module.mjs +4 -4
  185. package/fesm2022/acorex-components-action-sheet.mjs +23 -31
  186. package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
  187. package/fesm2022/acorex-components-alert.mjs +56 -54
  188. package/fesm2022/acorex-components-alert.mjs.map +1 -1
  189. package/fesm2022/acorex-components-avatar.mjs +17 -26
  190. package/fesm2022/acorex-components-avatar.mjs.map +1 -1
  191. package/fesm2022/acorex-components-badge.mjs +12 -17
  192. package/fesm2022/acorex-components-badge.mjs.map +1 -1
  193. package/fesm2022/acorex-components-breadcrumbs.mjs +14 -19
  194. package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
  195. package/fesm2022/acorex-components-button.mjs +15 -15
  196. package/fesm2022/acorex-components-button.mjs.map +1 -1
  197. package/fesm2022/acorex-components-calendar.mjs +32 -33
  198. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  199. package/fesm2022/acorex-components-card.mjs +7 -7
  200. package/fesm2022/acorex-components-checkbox.mjs +7 -7
  201. package/fesm2022/acorex-components-chips.mjs +7 -7
  202. package/fesm2022/acorex-components-collapse.mjs +10 -10
  203. package/fesm2022/acorex-components-color-palette.mjs +25 -25
  204. package/fesm2022/acorex-components-color-picker.mjs +7 -7
  205. package/fesm2022/acorex-components-common.mjs +62 -54
  206. package/fesm2022/acorex-components-common.mjs.map +1 -1
  207. package/fesm2022/acorex-components-context-menu.mjs +7 -7
  208. package/fesm2022/acorex-components-data-pager.mjs +31 -31
  209. package/fesm2022/acorex-components-data-table.mjs +13 -13
  210. package/fesm2022/acorex-components-date-picker.mjs +42 -156
  211. package/fesm2022/acorex-components-date-picker.mjs.map +1 -1
  212. package/fesm2022/acorex-components-decorators.mjs +43 -43
  213. package/fesm2022/acorex-components-dialog.mjs +11 -11
  214. package/fesm2022/acorex-components-dialog.mjs.map +1 -1
  215. package/fesm2022/acorex-components-drawer.mjs +10 -10
  216. package/fesm2022/acorex-components-dropdown.mjs +7 -7
  217. package/fesm2022/acorex-components-form.mjs +17 -17
  218. package/fesm2022/acorex-components-form.mjs.map +1 -1
  219. package/fesm2022/acorex-components-image.mjs +7 -7
  220. package/fesm2022/acorex-components-label.mjs +7 -7
  221. package/fesm2022/acorex-components-loading.mjs +16 -16
  222. package/fesm2022/acorex-components-menu.mjs +7 -7
  223. package/fesm2022/acorex-components-mixin.mjs +11 -18
  224. package/fesm2022/acorex-components-mixin.mjs.map +1 -1
  225. package/fesm2022/acorex-components-notification.mjs +10 -10
  226. package/fesm2022/acorex-components-number-box.mjs +7 -7
  227. package/fesm2022/acorex-components-page.mjs +10 -10
  228. package/fesm2022/acorex-components-password-box.mjs +7 -7
  229. package/fesm2022/acorex-components-picker.mjs +10 -10
  230. package/fesm2022/acorex-components-popover.mjs +100 -39
  231. package/fesm2022/acorex-components-popover.mjs.map +1 -1
  232. package/fesm2022/acorex-components-popup.mjs +10 -10
  233. package/fesm2022/acorex-components-progress-bar.mjs +7 -7
  234. package/fesm2022/acorex-components-radio.mjs +7 -7
  235. package/fesm2022/acorex-components-range-slider.mjs +7 -7
  236. package/fesm2022/acorex-components-rating.mjs +7 -7
  237. package/fesm2022/acorex-components-result.mjs +7 -7
  238. package/fesm2022/acorex-components-search-box.mjs +7 -7
  239. package/fesm2022/acorex-components-select-box.mjs +7 -7
  240. package/fesm2022/acorex-components-selection-list.mjs +7 -7
  241. package/fesm2022/acorex-components-switch.mjs +10 -10
  242. package/fesm2022/acorex-components-tabs.mjs +13 -13
  243. package/fesm2022/acorex-components-tag.mjs +7 -7
  244. package/fesm2022/acorex-components-textarea.mjs +7 -7
  245. package/fesm2022/acorex-components-textbox.mjs +10 -10
  246. package/fesm2022/acorex-components-time-box.mjs +20 -28
  247. package/fesm2022/acorex-components-time-box.mjs.map +1 -1
  248. package/fesm2022/acorex-components-toast.mjs +10 -10
  249. package/fesm2022/acorex-components-tooltip.mjs +10 -10
  250. package/fesm2022/acorex-components-tree-view.mjs +7 -7
  251. package/fesm2022/acorex-components-uploader.mjs +7 -7
  252. package/mixin/src/base-components.class.d.ts +2 -2
  253. package/mixin/src/base-menu-mixin.class.d.ts +5 -5
  254. package/mixin/src/button-mixin.class.d.ts +2 -2
  255. package/mixin/src/clickable-mixin.class.d.ts +2 -2
  256. package/mixin/src/color-look-mixing.class.d.ts +2 -2
  257. package/mixin/src/datalist-component.class.d.ts +10 -10
  258. package/mixin/src/dropdown-mixin.class.d.ts +2 -2
  259. package/mixin/src/interactive-mixin.class.d.ts +4 -4
  260. package/mixin/src/loading-mixin.class.d.ts +2 -2
  261. package/mixin/src/mixin.class.d.ts +61 -61
  262. package/mixin/src/page-component.class.d.ts +2 -2
  263. package/mixin/src/selection-component.class.d.ts +4 -4
  264. package/mixin/src/sizable-mixin.class.d.ts +2 -2
  265. package/mixin/src/textbox-mixin.class.d.ts +2 -2
  266. package/mixin/src/value-mixin.class.d.ts +8 -8
  267. package/package.json +14 -14
  268. package/popover/public-api.d.ts +1 -0
  269. package/popover/src/dropdown-component.class.d.ts +17 -0
  270. package/popover/src/popover.component.d.ts +9 -16
  271. package/tabs/src/tab-item.component.d.ts +2 -2
@@ -9,7 +9,7 @@ import * as i2 from "./calendar.component";
9
9
  class AXCalendarRangeComponent extends classes((MXValueComponent), MXInteractiveComponent, MXCalendarBaseComponent) {
10
10
  _c1;
11
11
  _c2;
12
- _navText = "";
12
+ _navText = '';
13
13
  constructor() {
14
14
  super();
15
15
  this.defaultValue = { from: null, end: null };
@@ -27,18 +27,17 @@ class AXCalendarRangeComponent extends classes((MXValueComponent), MXInteractive
27
27
  }
28
28
  if (this.value.end && d.equal(end, 'day'))
29
29
  return 'ax-range-end';
30
- if (this.value.from && this.value.end && (d.compare(from, 'day') > 0) && (d.compare(end, 'day') < 0))
30
+ if (this.value.from && this.value.end && d.compare(from, 'day') > 0 && d.compare(end, 'day') < 0)
31
31
  return 'ax-range-between';
32
32
  return null;
33
33
  };
34
34
  handleSlotClick(e) {
35
- debugger;
36
35
  if (this._c1.activeView == this.depth) {
37
36
  if (!this.value.from || (this.value.from && this.value.end)) {
38
37
  this.value.from = e.item;
39
38
  this.value.end = null;
40
39
  }
41
- if (this.value.from && (e.item <= this.value.from)) {
40
+ if (this.value.from && e.item <= this.value.from) {
42
41
  this.value.from = e.item;
43
42
  }
44
43
  else if (this.value.from && !this.value.end) {
@@ -83,15 +82,15 @@ class AXCalendarRangeComponent extends classes((MXValueComponent), MXInteractive
83
82
  const d1 = this._c1.displayRange.startTime;
84
83
  if (view == 'days') {
85
84
  const d2 = this._c2.displayRange.endTime;
86
- this._navText = `${d1.format("MMM yyyy")} - ${d2.format("MMM yyyy")}`;
85
+ this._navText = `${d1.format('MMM yyyy')} - ${d2.format('MMM yyyy')}`;
87
86
  }
88
87
  else if (view == 'months') {
89
88
  const d2 = this._c2.displayRange.endTime;
90
- this._navText = `${d1.format("yyyy")} - ${d2.format("yyyy")}`;
89
+ this._navText = `${d1.format('yyyy')} - ${d2.format('yyyy')}`;
91
90
  }
92
91
  else if (view == 'years') {
93
92
  const d2 = this._c2.displayRange.endTime;
94
- this._navText = `${d1.format("yyyy")} - ${d2.format("yyyy")}`;
93
+ this._navText = `${d1.format('yyyy')} - ${d2.format('yyyy')}`;
95
94
  }
96
95
  }
97
96
  handleNavigate() {
@@ -107,33 +106,33 @@ class AXCalendarRangeComponent extends classes((MXValueComponent), MXInteractive
107
106
  }
108
107
  }
109
108
  _syncNav1() {
110
- const view = this._c2.activeView = this._c1.activeView;
109
+ const view = (this._c2.activeView = this._c1.activeView);
111
110
  const range = this._c1.displayRange;
112
111
  if (view == 'days') {
113
- this._c2.navTo(range.startTime.add("month", 1));
112
+ this._c2.navTo(range.startTime.add('month', 1));
114
113
  }
115
114
  else if (view == 'months') {
116
- this._c2.navTo(range.startTime.add("year", 1));
115
+ this._c2.navTo(range.startTime.add('year', 1));
117
116
  }
118
117
  else if (view == 'years') {
119
- this._c2.navTo(range.endTime.add("year", 4));
118
+ this._c2.navTo(range.endTime.add('year', 4));
120
119
  }
121
120
  this._syncNavText();
122
121
  }
123
122
  _syncNav2(e) {
124
123
  const view = this._c2.activeView;
125
124
  if (view == 'months') {
126
- this._c1.navTo(e.add("month", -1));
125
+ this._c1.navTo(e.add('month', -1));
127
126
  }
128
127
  else if (view == 'years') {
129
128
  this._c1.navTo(e.startOf('year'));
130
129
  }
131
130
  }
132
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXCalendarRangeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
133
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: AXCalendarRangeComponent, selector: "ax-calendar-range", inputs: { rtl: "rtl", readonly: "readonly", value: "value", name: "name", disabled: "disabled", depth: "depth", activeView: "activeView", min: "min", max: "max", disabledDates: "disabledDates", holidayDates: "holidayDates", type: "type", cellTemplate: "cellTemplate", cellClass: "cellClass", showNavigation: "showNavigation" }, outputs: { onOptionChanged: "onOptionChanged", valueChange: "valueChange", onValueChanged: "onValueChanged", onBlur: "onBlur", onFocus: "onFocus", depthChange: "depthChange", typeChange: "typeChange", activeViewChange: "activeViewChange", disabledDatesChange: "disabledDatesChange", holidayDatesChange: "holidayDatesChange", onNavigate: "onNavigate", onSlotClick: "onSlotClick" }, viewQueries: [{ propertyName: "_c1", first: true, predicate: ["c1"], descendants: true, static: true }, { propertyName: "_c2", first: true, predicate: ["c2"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-calendar-range-header\">\n <ng-content></ng-content>\n <div class=\"ax-calendar-header-range-info\">\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"handleNavClick()\">\n {{ _navText }}\n </button>\n </div>\n <div class=\"ax-calendar-header-range-buttons\">\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\n (click)=\"handlePrevClick()\">\n <i class=\"ax-icon\" [ngClass]=\"{\n 'ax-icon-chevron-left': !rtl,\n 'ax-icon-chevron-right': rtl\n }\"></i>\n </button>\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\n (click)=\"handleNextClick()\">\n <i class=\"ax-icon\" [ngClass]=\"{\n 'ax-icon-chevron-left': rtl,\n 'ax-icon-chevron-right': !rtl\n }\"></i>\n </button>\n </div>\n</div>\n<div class=\"ax-calendar-range-body\">\n <ax-calendar #c1 style=\"width: 50%;\" [showNavigation]=\"false\" [cellClass]=\"getCellClass\" [type]=\"type\"\n [cellTemplate]=\"cellTemplate\" [min]=\"min\" [max]=\"max\" [readonly]=\"true\" [depth]=\"depth\" (onSlotClick)=\"handleSlotClick($event)\"\n (onNavigate)=\"handleNavigate()\" (activeViewChange)=\"handleActiveViewChange1()\">\n </ax-calendar>\n <ax-calendar #c2 style=\"width: 50%;\" [showNavigation]=\"false\" [cellClass]=\"getCellClass\" [type]=\"type\"\n [cellTemplate]=\"cellTemplate\" [min]=\"min\" [max]=\"max\" [readonly]=\"true\" [depth]=\"depth\" (onSlotClick)=\"handleSlotClick($event)\"\n (activeViewChange)=\"handleActiveViewChange2()\">\n </ax-calendar>\n</div>", styles: [".ax-dark ax-calendar-range{background:rgba(var(--ax-color-on-surface))}.ax-dark ax-calendar-range ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-range-between{background-color:rgba(var(--ax-color-primary-800));color:rgba(var(--ax-color-primary-fore))}ax-calendar-range{background:rgba(var(--ax-color-surface));color:rgba(var(--ax-color-text-default));padding:.5rem}ax-calendar-range .ax-calendar-range-header{display:flex;justify-content:space-between;padding-top:.25rem;padding-left:.25rem;padding-right:.25rem}ax-calendar-range .ax-calendar-range-header .ax-calendar-header-range-info{font-weight:500}ax-calendar-range .ax-calendar-range-header .ax-calendar-header-range-buttons{display:flex}ax-calendar-range .ax-calendar-range-body{display:flex;flex-direction:row}ax-calendar-range ax-calendar{margin:0;padding:0}ax-calendar-range ax-calendar .ax-calendar-body{margin-top:0;padding-top:0}ax-calendar-range ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-range-between{background-color:rgba(var(--ax-color-primary-100));color:rgba(var(--ax-color-primary-500))}ax-calendar-range ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-range-start,ax-calendar-range ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-range-end{background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore))}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.AXCalendarComponent, selector: "ax-calendar", inputs: ["rtl", "readonly", "value", "name", "disabled", "depth", "activeView", "min", "max", "disabledDates", "holidayDates", "type", "cellTemplate", "cellClass", "showNavigation"], outputs: ["onOptionChanged", "valueChange", "onValueChanged", "onBlur", "onFocus", "depthChange", "typeChange", "activeViewChange", "disabledDatesChange", "holidayDatesChange", "onNavigate", "onSlotClick"] }], encapsulation: i0.ViewEncapsulation.None });
131
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AXCalendarRangeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
132
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: AXCalendarRangeComponent, selector: "ax-calendar-range", inputs: { rtl: "rtl", readonly: "readonly", value: "value", name: "name", disabled: "disabled", depth: "depth", activeView: "activeView", min: "min", max: "max", disabledDates: "disabledDates", holidayDates: "holidayDates", type: "type", cellTemplate: "cellTemplate", cellClass: "cellClass", showNavigation: "showNavigation" }, outputs: { onOptionChanged: "onOptionChanged", valueChange: "valueChange", onValueChanged: "onValueChanged", onBlur: "onBlur", onFocus: "onFocus", depthChange: "depthChange", typeChange: "typeChange", activeViewChange: "activeViewChange", disabledDatesChange: "disabledDatesChange", holidayDatesChange: "holidayDatesChange", onNavigate: "onNavigate", onSlotClick: "onSlotClick" }, viewQueries: [{ propertyName: "_c1", first: true, predicate: ["c1"], descendants: true, static: true }, { propertyName: "_c2", first: true, predicate: ["c2"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-calendar-range-header\">\n <ng-content></ng-content>\n <div class=\"ax-calendar-header-range-info\">\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"handleNavClick()\">\n {{ _navText }}\n </button>\n </div>\n <div class=\"ax-calendar-header-range-buttons\">\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\n (click)=\"handlePrevClick()\">\n <i class=\"ax-icon\" [ngClass]=\"{\n 'ax-icon-chevron-left': !rtl,\n 'ax-icon-chevron-right': rtl\n }\"></i>\n </button>\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\n (click)=\"handleNextClick()\">\n <i class=\"ax-icon\" [ngClass]=\"{\n 'ax-icon-chevron-left': rtl,\n 'ax-icon-chevron-right': !rtl\n }\"></i>\n </button>\n </div>\n</div>\n<div class=\"ax-calendar-range-body\">\n <ax-calendar #c1 style=\"width: 50%;\" [showNavigation]=\"false\" [cellClass]=\"getCellClass\" [type]=\"type\"\n [cellTemplate]=\"cellTemplate\" [min]=\"min\" [max]=\"max\" [readonly]=\"true\" [depth]=\"depth\" (onSlotClick)=\"handleSlotClick($event)\"\n (onNavigate)=\"handleNavigate()\" (activeViewChange)=\"handleActiveViewChange1()\">\n </ax-calendar>\n <ax-calendar #c2 style=\"width: 50%;\" [showNavigation]=\"false\" [cellClass]=\"getCellClass\" [type]=\"type\"\n [cellTemplate]=\"cellTemplate\" [min]=\"min\" [max]=\"max\" [readonly]=\"true\" [depth]=\"depth\" (onSlotClick)=\"handleSlotClick($event)\"\n (activeViewChange)=\"handleActiveViewChange2()\">\n </ax-calendar>\n</div>", styles: [".ax-dark ax-calendar-range{background:rgba(var(--ax-color-on-surface))}.ax-dark ax-calendar-range ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-range-between{background-color:rgba(var(--ax-color-primary-800));color:rgba(var(--ax-color-primary-fore))}ax-calendar-range{background:rgba(var(--ax-color-surface));color:rgba(var(--ax-color-text-default));padding:.5rem}ax-calendar-range .ax-calendar-range-header{display:flex;justify-content:space-between;padding-top:.25rem;padding-left:.25rem;padding-right:.25rem}ax-calendar-range .ax-calendar-range-header .ax-calendar-header-range-info{font-weight:500}ax-calendar-range .ax-calendar-range-header .ax-calendar-header-range-buttons{display:flex}ax-calendar-range .ax-calendar-range-body{display:flex;flex-direction:row}ax-calendar-range ax-calendar{margin:0;padding:0}ax-calendar-range ax-calendar .ax-calendar-body{margin-top:0;padding-top:0}ax-calendar-range ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-range-between{background-color:rgba(var(--ax-color-primary-100));color:rgba(var(--ax-color-primary-500))}ax-calendar-range ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-range-start,ax-calendar-range ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-range-end{background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore))}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.AXCalendarComponent, selector: "ax-calendar", inputs: ["rtl", "readonly", "value", "name", "disabled", "depth", "activeView", "min", "max", "disabledDates", "holidayDates", "type", "cellTemplate", "cellClass", "showNavigation"], outputs: ["onOptionChanged", "valueChange", "onValueChanged", "onBlur", "onFocus", "depthChange", "typeChange", "activeViewChange", "disabledDatesChange", "holidayDatesChange", "onNavigate", "onSlotClick"] }], encapsulation: i0.ViewEncapsulation.None });
134
133
  }
135
134
  export { AXCalendarRangeComponent };
136
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXCalendarRangeComponent, decorators: [{
135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AXCalendarRangeComponent, decorators: [{
137
136
  type: Component,
138
137
  args: [{ selector: 'ax-calendar-range', encapsulation: ViewEncapsulation.None, inputs: [
139
138
  'rtl',
@@ -150,7 +149,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
150
149
  'type',
151
150
  'cellTemplate',
152
151
  'cellClass',
153
- 'showNavigation'
152
+ 'showNavigation',
154
153
  ], outputs: [
155
154
  'onOptionChanged',
156
155
  'valueChange',
@@ -163,13 +162,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
163
162
  'disabledDatesChange',
164
163
  'holidayDatesChange',
165
164
  'onNavigate',
166
- 'onSlotClick'
165
+ 'onSlotClick',
167
166
  ], template: "<div class=\"ax-calendar-range-header\">\n <ng-content></ng-content>\n <div class=\"ax-calendar-header-range-info\">\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"handleNavClick()\">\n {{ _navText }}\n </button>\n </div>\n <div class=\"ax-calendar-header-range-buttons\">\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\n (click)=\"handlePrevClick()\">\n <i class=\"ax-icon\" [ngClass]=\"{\n 'ax-icon-chevron-left': !rtl,\n 'ax-icon-chevron-right': rtl\n }\"></i>\n </button>\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\n (click)=\"handleNextClick()\">\n <i class=\"ax-icon\" [ngClass]=\"{\n 'ax-icon-chevron-left': rtl,\n 'ax-icon-chevron-right': !rtl\n }\"></i>\n </button>\n </div>\n</div>\n<div class=\"ax-calendar-range-body\">\n <ax-calendar #c1 style=\"width: 50%;\" [showNavigation]=\"false\" [cellClass]=\"getCellClass\" [type]=\"type\"\n [cellTemplate]=\"cellTemplate\" [min]=\"min\" [max]=\"max\" [readonly]=\"true\" [depth]=\"depth\" (onSlotClick)=\"handleSlotClick($event)\"\n (onNavigate)=\"handleNavigate()\" (activeViewChange)=\"handleActiveViewChange1()\">\n </ax-calendar>\n <ax-calendar #c2 style=\"width: 50%;\" [showNavigation]=\"false\" [cellClass]=\"getCellClass\" [type]=\"type\"\n [cellTemplate]=\"cellTemplate\" [min]=\"min\" [max]=\"max\" [readonly]=\"true\" [depth]=\"depth\" (onSlotClick)=\"handleSlotClick($event)\"\n (activeViewChange)=\"handleActiveViewChange2()\">\n </ax-calendar>\n</div>", styles: [".ax-dark ax-calendar-range{background:rgba(var(--ax-color-on-surface))}.ax-dark ax-calendar-range ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-range-between{background-color:rgba(var(--ax-color-primary-800));color:rgba(var(--ax-color-primary-fore))}ax-calendar-range{background:rgba(var(--ax-color-surface));color:rgba(var(--ax-color-text-default));padding:.5rem}ax-calendar-range .ax-calendar-range-header{display:flex;justify-content:space-between;padding-top:.25rem;padding-left:.25rem;padding-right:.25rem}ax-calendar-range .ax-calendar-range-header .ax-calendar-header-range-info{font-weight:500}ax-calendar-range .ax-calendar-range-header .ax-calendar-header-range-buttons{display:flex}ax-calendar-range .ax-calendar-range-body{display:flex;flex-direction:row}ax-calendar-range ax-calendar{margin:0;padding:0}ax-calendar-range ax-calendar .ax-calendar-body{margin-top:0;padding-top:0}ax-calendar-range ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-range-between{background-color:rgba(var(--ax-color-primary-100));color:rgba(var(--ax-color-primary-500))}ax-calendar-range ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-range-start,ax-calendar-range ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-range-end{background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore))}\n"] }]
168
167
  }], ctorParameters: function () { return []; }, propDecorators: { _c1: [{
169
168
  type: ViewChild,
170
- args: ["c1", { static: true }]
169
+ args: ['c1', { static: true }]
171
170
  }], _c2: [{
172
171
  type: ViewChild,
173
- args: ["c2", { static: true }]
172
+ args: ['c2', { static: true }]
174
173
  }] } });
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItcmFuZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvY2FsZW5kYXIvc3JjL2NhbGVuZGFyLXJhbmdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL2NhbGVuZGFyL3NyYy9jYWxlbmRhci1yYW5nZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVcsc0JBQXNCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RixPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRW5DLE9BQU8sRUFBdUIsdUJBQXVCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7QUFFbkQsTUFxQ2Esd0JBQ1QsU0FDQSxPQUFPLENBQUMsQ0FBQSxnQkFBK0IsQ0FBQSxFQUFFLHNCQUFzQixFQUFFLHVCQUF1QixDQUFDO0lBSWpGLEdBQUcsQ0FBc0I7SUFHekIsR0FBRyxDQUFzQjtJQUdqQyxRQUFRLEdBQVcsRUFBRSxDQUFDO0lBRXRCO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVTLGVBQWU7UUFDckIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsWUFBWSxHQUFHLENBQUMsSUFBVSxFQUFFLEVBQUU7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VTt3QkFDVixPQUFPO3dCQUNQLE1BQU07d0JBQ04sVUFBVTt3QkFDVixPQUFPO3dCQUNQLFlBQVk7d0JBQ1osS0FBSzt3QkFDTCxLQUFLO3dCQUNMLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxNQUFNO3dCQUNOLGNBQWM7d0JBQ2QsV0FBVzt3QkFDWCxnQkFBZ0I7cUJBQ25CLFdBQ1E7d0JBQ0wsaUJBQWlCO3dCQUNqQixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsUUFBUTt3QkFDUixTQUFTO3dCQUNULGFBQWE7d0JBQ2IsWUFBWTt3QkFDWixrQkFBa0I7d0JBQ2xCLHFCQUFxQjt3QkFDckIsb0JBQW9CO3dCQUNwQixZQUFZO3dCQUNaLGFBQWE7cUJBQ2hCOzBFQVFPLEdBQUc7c0JBRFYsU0FBUzt1QkFBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl6QixHQUFHO3NCQURWLFNBQVM7dUJBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUmFuZ2UsIE1YSW50ZXJhY3RpdmVDb21wb25lbnQsIE1YVmFsdWVDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2xhc3NlcyB9IGZyb20gJ3BvbHl0eXBlJztcbmltcG9ydCB7IEFYQ2FsZW5kYXJDb21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWENhbGVuZGFyU2xvdENsaWNrLCBNWENhbGVuZGFyQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXIuY2xhc3MnO1xuaW1wb3J0IHsgQVhEYXRlVGltZSB9IGZyb20gJ0BhY29yZXgvY29yZS9kYXRlVGltZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXgtY2FsZW5kYXItcmFuZ2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnY2FsZW5kYXItcmFuZ2UuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWydjYWxlbmRhci1yYW5nZS5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaW5wdXRzOiBbXG4gICAgICAgICdydGwnLFxuICAgICAgICAncmVhZG9ubHknLFxuICAgICAgICAndmFsdWUnLFxuICAgICAgICAnbmFtZScsXG4gICAgICAgICdkaXNhYmxlZCcsXG4gICAgICAgICdkZXB0aCcsXG4gICAgICAgICdhY3RpdmVWaWV3JyxcbiAgICAgICAgJ21pbicsXG4gICAgICAgICdtYXgnLFxuICAgICAgICAnZGlzYWJsZWREYXRlcycsXG4gICAgICAgICdob2xpZGF5RGF0ZXMnLFxuICAgICAgICAndHlwZScsXG4gICAgICAgICdjZWxsVGVtcGxhdGUnLFxuICAgICAgICAnY2VsbENsYXNzJyxcbiAgICAgICAgJ3Nob3dOYXZpZ2F0aW9uJ1xuICAgIF0sXG4gICAgb3V0cHV0czogW1xuICAgICAgICAnb25PcHRpb25DaGFuZ2VkJyxcbiAgICAgICAgJ3ZhbHVlQ2hhbmdlJyxcbiAgICAgICAgJ29uVmFsdWVDaGFuZ2VkJyxcbiAgICAgICAgJ29uQmx1cicsXG4gICAgICAgICdvbkZvY3VzJyxcbiAgICAgICAgJ2RlcHRoQ2hhbmdlJyxcbiAgICAgICAgJ3R5cGVDaGFuZ2UnLFxuICAgICAgICAnYWN0aXZlVmlld0NoYW5nZScsXG4gICAgICAgICdkaXNhYmxlZERhdGVzQ2hhbmdlJyxcbiAgICAgICAgJ2hvbGlkYXlEYXRlc0NoYW5nZScsXG4gICAgICAgICdvbk5hdmlnYXRlJyxcbiAgICAgICAgJ29uU2xvdENsaWNrJ1xuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgQVhDYWxlbmRhclJhbmdlQ29tcG9uZW50XG4gICAgZXh0ZW5kc1xuICAgIGNsYXNzZXMoTVhWYWx1ZUNvbXBvbmVudDxBWFJhbmdlPERhdGU+PiwgTVhJbnRlcmFjdGl2ZUNvbXBvbmVudCwgTVhDYWxlbmRhckJhc2VDb21wb25lbnQpXG57XG5cbiAgICBAVmlld0NoaWxkKFwiYzFcIiwgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwcml2YXRlIF9jMTogQVhDYWxlbmRhckNvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoXCJjMlwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHByaXZhdGUgX2MyOiBBWENhbGVuZGFyQ29tcG9uZW50O1xuXG5cbiAgICBfbmF2VGV4dDogc3RyaW5nID0gXCJcIjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IHsgZnJvbTogbnVsbCwgZW5kOiBudWxsIH07XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICAgIHRoaXMuX3N5bmNOYXYxKCk7XG4gICAgfVxuXG4gICAgZ2V0Q2VsbENsYXNzID0gKGRhdGU6IERhdGUpID0+IHtcbiAgICAgICAgY29uc3QgZCA9IG5ldyBBWERhdGVUaW1lKGRhdGUpO1xuICAgICAgICBjb25zdCBmcm9tID0gbmV3IEFYRGF0ZVRpbWUodGhpcy52YWx1ZS5mcm9tKTtcbiAgICAgICAgY29uc3QgZW5kID0gbmV3IEFYRGF0ZVRpbWUodGhpcy52YWx1ZS5lbmQpO1xuICAgICAgICBpZiAodGhpcy52YWx1ZS5mcm9tICYmIGQuZXF1YWwoZnJvbSwgJ2RheScpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2F4LXJhbmdlLXN0YXJ0JztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy52YWx1ZS5lbmQgJiYgZC5lcXVhbChlbmQsICdkYXknKSlcbiAgICAgICAgICAgIHJldHVybiAnYXgtcmFuZ2UtZW5kJztcbiAgICAgICAgaWYgKHRoaXMudmFsdWUuZnJvbSAmJiB0aGlzLnZhbHVlLmVuZCAmJiAoZC5jb21wYXJlKGZyb20sICdkYXknKSA+IDApICYmIChkLmNvbXBhcmUoZW5kLCAnZGF5JykgPCAwKSlcbiAgICAgICAgICAgIHJldHVybiAnYXgtcmFuZ2UtYmV0d2Vlbic7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBoYW5kbGVTbG90Q2xpY2soZTogQVhDYWxlbmRhclNsb3RDbGljaykge1xuICAgICAgICBkZWJ1Z2dlclxuICAgICAgICBpZiAodGhpcy5fYzEuYWN0aXZlVmlldyA9PSB0aGlzLmRlcHRoKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMudmFsdWUuZnJvbSB8fCAodGhpcy52YWx1ZS5mcm9tICYmIHRoaXMudmFsdWUuZW5kKSkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUuZnJvbSA9IGUuaXRlbTtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlLmVuZCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy52YWx1ZS5mcm9tICYmIChlLml0ZW0gPD0gdGhpcy52YWx1ZS5mcm9tKSkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUuZnJvbSA9IGUuaXRlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMudmFsdWUuZnJvbSAmJiAhdGhpcy52YWx1ZS5lbmQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlLmVuZCA9IGUuaXRlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChlLmNvbXBvbmVudCA9PSB0aGlzLl9jMSlcbiAgICAgICAgICAgICAgICB0aGlzLl9zeW5jTmF2MSgpO1xuICAgICAgICAgICAgaWYgKGUuY29tcG9uZW50ID09IHRoaXMuX2MyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3luY05hdjIobmV3IEFYRGF0ZVRpbWUoZS5pdGVtKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fYzEucmVuZGVyKCk7XG4gICAgICAgIHRoaXMuX2MyLnJlbmRlcigpO1xuICAgIH1cblxuXG4gICAgcHJvdGVjdGVkIGhhbmRsZVByZXZDbGljaygpIHtcbiAgICAgICAgY29uc3QgdmlldyA9IHRoaXMuX2MxLmFjdGl2ZVZpZXc7XG4gICAgICAgIGNvbnN0IGQxID0gdGhpcy5fYzEuZGlzcGxheVJhbmdlLnN0YXJ0VGltZTtcbiAgICAgICAgaWYgKHZpZXcgPT0gJ2RheXMnIHx8IHZpZXcgPT0gJ21vbnRocycpIHtcbiAgICAgICAgICAgIHRoaXMuX2MxLnByZXYoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2aWV3ID09ICd5ZWFycycpIHtcbiAgICAgICAgICAgIHRoaXMuX2MxLm5hdlRvKGQxLmFkZCgneWVhcicsIC0yMCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGhhbmRsZU5leHRDbGljaygpIHtcbiAgICAgICAgY29uc3QgdmlldyA9IHRoaXMuX2MxLmFjdGl2ZVZpZXc7XG4gICAgICAgIGNvbnN0IGQxID0gdGhpcy5fYzEuZGlzcGxheVJhbmdlLnN0YXJ0VGltZTtcbiAgICAgICAgaWYgKHZpZXcgPT0gJ2RheXMnIHx8IHZpZXcgPT0gJ21vbnRocycpIHtcbiAgICAgICAgICAgIHRoaXMuX2MxLm5leHQoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2aWV3ID09ICd5ZWFycycpIHtcbiAgICAgICAgICAgIHRoaXMuX2MxLm5hdlRvKGQxLmFkZCgneWVhcicsIDIwKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaGFuZGxlTmF2Q2xpY2soKSB7XG4gICAgICAgIHRoaXMuX2MxLnRvZ2dsZVZpZXcoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zeW5jTmF2VGV4dCgpIHtcbiAgICAgICAgY29uc3QgdmlldyA9IHRoaXMuX2MxLmFjdGl2ZVZpZXc7XG4gICAgICAgIGNvbnN0IGQxID0gdGhpcy5fYzEuZGlzcGxheVJhbmdlLnN0YXJ0VGltZTtcbiAgICAgICAgaWYgKHZpZXcgPT0gJ2RheXMnKSB7XG4gICAgICAgICAgICBjb25zdCBkMiA9IHRoaXMuX2MyLmRpc3BsYXlSYW5nZS5lbmRUaW1lO1xuICAgICAgICAgICAgdGhpcy5fbmF2VGV4dCA9IGAke2QxLmZvcm1hdChcIk1NTSB5eXl5XCIpfSAtICR7ZDIuZm9ybWF0KFwiTU1NIHl5eXlcIil9YDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2aWV3ID09ICdtb250aHMnKSB7XG4gICAgICAgICAgICBjb25zdCBkMiA9IHRoaXMuX2MyLmRpc3BsYXlSYW5nZS5lbmRUaW1lO1xuICAgICAgICAgICAgdGhpcy5fbmF2VGV4dCA9IGAke2QxLmZvcm1hdChcInl5eXlcIil9IC0gJHtkMi5mb3JtYXQoXCJ5eXl5XCIpfWA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmlldyA9PSAneWVhcnMnKSB7XG4gICAgICAgICAgICBjb25zdCBkMiA9IHRoaXMuX2MyLmRpc3BsYXlSYW5nZS5lbmRUaW1lO1xuICAgICAgICAgICAgdGhpcy5fbmF2VGV4dCA9IGAke2QxLmZvcm1hdChcInl5eXlcIil9IC0gJHtkMi5mb3JtYXQoXCJ5eXl5XCIpfWA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaGFuZGxlTmF2aWdhdGUoKSB7XG4gICAgICAgIHRoaXMuX3N5bmNOYXYxKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGhhbmRsZUFjdGl2ZVZpZXdDaGFuZ2UxKCkge1xuICAgICAgICB0aGlzLl9jMi5hY3RpdmVWaWV3ID0gdGhpcy5fYzEuYWN0aXZlVmlldztcbiAgICAgICAgdGhpcy5fc3luY05hdjEoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaGFuZGxlQWN0aXZlVmlld0NoYW5nZTIoKSB7XG4gICAgICAgIGlmICh0aGlzLl9jMi5hY3RpdmVWaWV3ICE9IHRoaXMuX2MxLmFjdGl2ZVZpZXcpIHtcbiAgICAgICAgICAgIHRoaXMuX2MxLmFjdGl2ZVZpZXcgPSB0aGlzLl9jMi5hY3RpdmVWaWV3O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc3luY05hdjEoKSB7XG4gICAgICAgIGNvbnN0IHZpZXcgPSB0aGlzLl9jMi5hY3RpdmVWaWV3ID0gdGhpcy5fYzEuYWN0aXZlVmlldztcbiAgICAgICAgY29uc3QgcmFuZ2UgPSB0aGlzLl9jMS5kaXNwbGF5UmFuZ2U7XG4gICAgICAgIGlmICh2aWV3ID09ICdkYXlzJykge1xuICAgICAgICAgICAgdGhpcy5fYzIubmF2VG8ocmFuZ2Uuc3RhcnRUaW1lLmFkZChcIm1vbnRoXCIsIDEpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBpZiAodmlldyA9PSAnbW9udGhzJykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2MyLm5hdlRvKHJhbmdlLnN0YXJ0VGltZS5hZGQoXCJ5ZWFyXCIsIDEpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHZpZXcgPT0gJ3llYXJzJykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2MyLm5hdlRvKHJhbmdlLmVuZFRpbWUuYWRkKFwieWVhclwiLCA0KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIHRoaXMuX3N5bmNOYXZUZXh0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc3luY05hdjIoZTogQVhEYXRlVGltZSkge1xuICAgICAgICBjb25zdCB2aWV3ID0gdGhpcy5fYzIuYWN0aXZlVmlldztcbiAgICAgICAgaWYgKHZpZXcgPT0gJ21vbnRocycpIHtcbiAgICAgICAgICAgIHRoaXMuX2MxLm5hdlRvKGUuYWRkKFwibW9udGhcIiwgLTEpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2aWV3ID09ICd5ZWFycycpIHtcbiAgICAgICAgICAgIHRoaXMuX2MxLm5hdlRvKGUuc3RhcnRPZigneWVhcicpKTtcbiAgICAgICAgfVxuICAgIH1cbn0iLCI8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItcmFuZ2UtaGVhZGVyXCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1oZWFkZXItcmFuZ2UtaW5mb1wiPlxuICAgICAgICA8YnV0dG9uIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCIgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvblwiIChjbGljayk9XCJoYW5kbGVOYXZDbGljaygpXCI+XG4gICAgICAgICAgICB7eyBfbmF2VGV4dCB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItaGVhZGVyLXJhbmdlLWJ1dHRvbnNcIj5cbiAgICAgICAgPGJ1dHRvbiBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b24gYXgtYnV0dG9uLWljb25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVByZXZDbGljaygpXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImF4LWljb25cIiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ2F4LWljb24tY2hldnJvbi1sZWZ0JzogIXJ0bCxcbiAgICAgICAgICAgICAgICAnYXgtaWNvbi1jaGV2cm9uLXJpZ2h0JzogcnRsXG4gICAgICAgICAgICAgIH1cIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCIgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1idXR0b24taWNvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlTmV4dENsaWNrKClcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvblwiIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAnYXgtaWNvbi1jaGV2cm9uLWxlZnQnOiBydGwsXG4gICAgICAgICAgICAgICAgJ2F4LWljb24tY2hldnJvbi1yaWdodCc6ICFydGxcbiAgICAgICAgICAgICAgfVwiPjwvaT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1yYW5nZS1ib2R5XCI+XG4gICAgPGF4LWNhbGVuZGFyICNjMSBzdHlsZT1cIndpZHRoOiA1MCU7XCIgW3Nob3dOYXZpZ2F0aW9uXT1cImZhbHNlXCIgW2NlbGxDbGFzc109XCJnZXRDZWxsQ2xhc3NcIiBbdHlwZV09XCJ0eXBlXCJcbiAgICAgICAgW2NlbGxUZW1wbGF0ZV09XCJjZWxsVGVtcGxhdGVcIiBbbWluXT1cIm1pblwiIFttYXhdPVwibWF4XCIgW3JlYWRvbmx5XT1cInRydWVcIiBbZGVwdGhdPVwiZGVwdGhcIiAob25TbG90Q2xpY2spPVwiaGFuZGxlU2xvdENsaWNrKCRldmVudClcIlxuICAgICAgICAob25OYXZpZ2F0ZSk9XCJoYW5kbGVOYXZpZ2F0ZSgpXCIgKGFjdGl2ZVZpZXdDaGFuZ2UpPVwiaGFuZGxlQWN0aXZlVmlld0NoYW5nZTEoKVwiPlxuICAgIDwvYXgtY2FsZW5kYXI+XG4gICAgPGF4LWNhbGVuZGFyICNjMiBzdHlsZT1cIndpZHRoOiA1MCU7XCIgW3Nob3dOYXZpZ2F0aW9uXT1cImZhbHNlXCIgW2NlbGxDbGFzc109XCJnZXRDZWxsQ2xhc3NcIiBbdHlwZV09XCJ0eXBlXCJcbiAgICAgICAgW2NlbGxUZW1wbGF0ZV09XCJjZWxsVGVtcGxhdGVcIiBbbWluXT1cIm1pblwiIFttYXhdPVwibWF4XCIgW3JlYWRvbmx5XT1cInRydWVcIiBbZGVwdGhdPVwiZGVwdGhcIiAob25TbG90Q2xpY2spPVwiaGFuZGxlU2xvdENsaWNrKCRldmVudClcIlxuICAgICAgICAoYWN0aXZlVmlld0NoYW5nZSk9XCJoYW5kbGVBY3RpdmVWaWV3Q2hhbmdlMigpXCI+XG4gICAgPC9heC1jYWxlbmRhcj5cbjwvZGl2PiJdfQ==
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItcmFuZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvY2FsZW5kYXIvc3JjL2NhbGVuZGFyLXJhbmdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL2NhbGVuZGFyL3NyYy9jYWxlbmRhci1yYW5nZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVcsc0JBQXNCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RixPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRW5DLE9BQU8sRUFBdUIsdUJBQXVCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7QUFFbkQsTUFxQ2Esd0JBQXlCLFNBQVEsT0FBTyxDQUFDLENBQUEsZ0JBQStCLENBQUEsRUFBRSxzQkFBc0IsRUFBRSx1QkFBdUIsQ0FBQztJQUU3SCxHQUFHLENBQXNCO0lBR3pCLEdBQUcsQ0FBc0I7SUFFakMsUUFBUSxHQUFXLEVBQUUsQ0FBQztJQUV0QjtRQUNFLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFUyxlQUFlO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELFlBQVksR0FBRyxDQUFDLElBQVUsRUFBRSxFQUFFO1FBQzVCLE1BQU0sQ0FBQyxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLE1BQU0sSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQzNDLE9BQU8sZ0JBQWdCLENBQUM7U0FDekI7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQztZQUFFLE9BQU8sY0FBYyxDQUFDO1FBQ2pFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUM7WUFBRSxPQUFPLGtCQUFrQixDQUFDO1FBQzVILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFDO0lBRVEsZUFBZSxDQUFDLENBQXNCO1FBQzlDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUMzRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUM7YUFDdkI7WUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUU7Z0JBQ2hELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7YUFDMUI7aUJBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO2dCQUM3QyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO2FBQ3pCO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsR0FBRztnQkFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDOUMsSUFBSSxDQUFDLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDeEM7U0FDRjtRQUNELElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRVMsZUFBZTtRQUN2QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQztRQUNqQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUM7UUFDM0MsSUFBSSxJQUFJLElBQUksTUFBTSxJQUFJLElBQUksSUFBSSxRQUFRLEVBQUU7WUFDdEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNqQjthQUFNLElBQUksSUFBSSxJQUFJLE9BQU8sRUFBRTtZQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDckM7SUFDSCxDQUFDO0lBRVMsZUFBZTtRQUN2QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQztRQUNqQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUM7UUFDM0MsSUFBSSxJQUFJLElBQUksTUFBTSxJQUFJLElBQUksSUFBSSxRQUFRLEVBQUU7WUFDdEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNqQjthQUFNLElBQUksSUFBSSxJQUFJLE9BQU8sRUFBRTtZQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQztJQUVTLGNBQWM7UUFDdEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRU8sWUFBWTtRQUNsQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQztRQUNqQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUM7UUFDM0MsSUFBSSxJQUFJLElBQUksTUFBTSxFQUFFO1lBQ2xCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztZQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7U0FDdkU7YUFBTSxJQUFJLElBQUksSUFBSSxRQUFRLEVBQUU7WUFDM0IsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztTQUMvRDthQUFNLElBQUksSUFBSSxJQUFJLE9BQU8sRUFBRTtZQUMxQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7WUFDekMsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1NBQy9EO0lBQ0gsQ0FBQztJQUVTLGNBQWM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFUyx1QkFBdUI7UUFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7UUFDMUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFUyx1QkFBdUI7UUFDL0IsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRTtZQUM5QyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQztTQUMzQztJQUNILENBQUM7SUFFTyxTQUFTO1FBQ2YsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDO1FBQ3BDLElBQUksSUFBSSxJQUFJLE1BQU0sRUFBRTtZQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNqRDthQUFNLElBQUksSUFBSSxJQUFJLFFBQVEsRUFBRTtZQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNoRDthQUFNLElBQUksSUFBSSxJQUFJLE9BQU8sRUFBRTtZQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM5QztRQUNELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU8sU0FBUyxDQUFDLENBQWE7UUFDN0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7UUFDakMsSUFBSSxJQUFJLElBQUksUUFBUSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwQzthQUFNLElBQUksSUFBSSxJQUFJLE9BQU8sRUFBRTtZQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDbkM7SUFDSCxDQUFDO3VHQTlIVSx3QkFBd0I7MkZBQXhCLHdCQUF3Qix3OUJDNUNyQyx5d0RBaUNNOztTRFdPLHdCQUF3QjsyRkFBeEIsd0JBQXdCO2tCQXJDcEMsU0FBUzsrQkFDRSxtQkFBbUIsaUJBR2QsaUJBQWlCLENBQUMsSUFBSSxVQUM3Qjt3QkFDTixLQUFLO3dCQUNMLFVBQVU7d0JBQ1YsT0FBTzt3QkFDUCxNQUFNO3dCQUNOLFVBQVU7d0JBQ1YsT0FBTzt3QkFDUCxZQUFZO3dCQUNaLEtBQUs7d0JBQ0wsS0FBSzt3QkFDTCxlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsTUFBTTt3QkFDTixjQUFjO3dCQUNkLFdBQVc7d0JBQ1gsZ0JBQWdCO3FCQUNqQixXQUNRO3dCQUNQLGlCQUFpQjt3QkFDakIsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLFFBQVE7d0JBQ1IsU0FBUzt3QkFDVCxhQUFhO3dCQUNiLFlBQVk7d0JBQ1osa0JBQWtCO3dCQUNsQixxQkFBcUI7d0JBQ3JCLG9CQUFvQjt3QkFDcEIsWUFBWTt3QkFDWixhQUFhO3FCQUNkOzBFQUlPLEdBQUc7c0JBRFYsU0FBUzt1QkFBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl6QixHQUFHO3NCQURWLFNBQVM7dUJBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUmFuZ2UsIE1YSW50ZXJhY3RpdmVDb21wb25lbnQsIE1YVmFsdWVDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2xhc3NlcyB9IGZyb20gJ3BvbHl0eXBlJztcbmltcG9ydCB7IEFYQ2FsZW5kYXJDb21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWENhbGVuZGFyU2xvdENsaWNrLCBNWENhbGVuZGFyQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXIuY2xhc3MnO1xuaW1wb3J0IHsgQVhEYXRlVGltZSB9IGZyb20gJ0BhY29yZXgvY29yZS9kYXRlVGltZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWNhbGVuZGFyLXJhbmdlJyxcbiAgdGVtcGxhdGVVcmw6ICdjYWxlbmRhci1yYW5nZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydjYWxlbmRhci1yYW5nZS5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBpbnB1dHM6IFtcbiAgICAncnRsJyxcbiAgICAncmVhZG9ubHknLFxuICAgICd2YWx1ZScsXG4gICAgJ25hbWUnLFxuICAgICdkaXNhYmxlZCcsXG4gICAgJ2RlcHRoJyxcbiAgICAnYWN0aXZlVmlldycsXG4gICAgJ21pbicsXG4gICAgJ21heCcsXG4gICAgJ2Rpc2FibGVkRGF0ZXMnLFxuICAgICdob2xpZGF5RGF0ZXMnLFxuICAgICd0eXBlJyxcbiAgICAnY2VsbFRlbXBsYXRlJyxcbiAgICAnY2VsbENsYXNzJyxcbiAgICAnc2hvd05hdmlnYXRpb24nLFxuICBdLFxuICBvdXRwdXRzOiBbXG4gICAgJ29uT3B0aW9uQ2hhbmdlZCcsXG4gICAgJ3ZhbHVlQ2hhbmdlJyxcbiAgICAnb25WYWx1ZUNoYW5nZWQnLFxuICAgICdvbkJsdXInLFxuICAgICdvbkZvY3VzJyxcbiAgICAnZGVwdGhDaGFuZ2UnLFxuICAgICd0eXBlQ2hhbmdlJyxcbiAgICAnYWN0aXZlVmlld0NoYW5nZScsXG4gICAgJ2Rpc2FibGVkRGF0ZXNDaGFuZ2UnLFxuICAgICdob2xpZGF5RGF0ZXNDaGFuZ2UnLFxuICAgICdvbk5hdmlnYXRlJyxcbiAgICAnb25TbG90Q2xpY2snLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWENhbGVuZGFyUmFuZ2VDb21wb25lbnQgZXh0ZW5kcyBjbGFzc2VzKE1YVmFsdWVDb21wb25lbnQ8QVhSYW5nZTxEYXRlPj4sIE1YSW50ZXJhY3RpdmVDb21wb25lbnQsIE1YQ2FsZW5kYXJCYXNlQ29tcG9uZW50KSB7XG4gIEBWaWV3Q2hpbGQoJ2MxJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHJpdmF0ZSBfYzE6IEFYQ2FsZW5kYXJDb21wb25lbnQ7XG5cbiAgQFZpZXdDaGlsZCgnYzInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwcml2YXRlIF9jMjogQVhDYWxlbmRhckNvbXBvbmVudDtcblxuICBfbmF2VGV4dDogc3RyaW5nID0gJyc7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IHsgZnJvbTogbnVsbCwgZW5kOiBudWxsIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgIHRoaXMuX3N5bmNOYXYxKCk7XG4gIH1cblxuICBnZXRDZWxsQ2xhc3MgPSAoZGF0ZTogRGF0ZSkgPT4ge1xuICAgIGNvbnN0IGQgPSBuZXcgQVhEYXRlVGltZShkYXRlKTtcbiAgICBjb25zdCBmcm9tID0gbmV3IEFYRGF0ZVRpbWUodGhpcy52YWx1ZS5mcm9tKTtcbiAgICBjb25zdCBlbmQgPSBuZXcgQVhEYXRlVGltZSh0aGlzLnZhbHVlLmVuZCk7XG4gICAgaWYgKHRoaXMudmFsdWUuZnJvbSAmJiBkLmVxdWFsKGZyb20sICdkYXknKSkge1xuICAgICAgcmV0dXJuICdheC1yYW5nZS1zdGFydCc7XG4gICAgfVxuICAgIGlmICh0aGlzLnZhbHVlLmVuZCAmJiBkLmVxdWFsKGVuZCwgJ2RheScpKSByZXR1cm4gJ2F4LXJhbmdlLWVuZCc7XG4gICAgaWYgKHRoaXMudmFsdWUuZnJvbSAmJiB0aGlzLnZhbHVlLmVuZCAmJiBkLmNvbXBhcmUoZnJvbSwgJ2RheScpID4gMCAmJiBkLmNvbXBhcmUoZW5kLCAnZGF5JykgPCAwKSByZXR1cm4gJ2F4LXJhbmdlLWJldHdlZW4nO1xuICAgIHJldHVybiBudWxsO1xuICB9O1xuXG4gIHByb3RlY3RlZCBoYW5kbGVTbG90Q2xpY2soZTogQVhDYWxlbmRhclNsb3RDbGljaykge1xuICAgIGlmICh0aGlzLl9jMS5hY3RpdmVWaWV3ID09IHRoaXMuZGVwdGgpIHtcbiAgICAgIGlmICghdGhpcy52YWx1ZS5mcm9tIHx8ICh0aGlzLnZhbHVlLmZyb20gJiYgdGhpcy52YWx1ZS5lbmQpKSB7XG4gICAgICAgIHRoaXMudmFsdWUuZnJvbSA9IGUuaXRlbTtcbiAgICAgICAgdGhpcy52YWx1ZS5lbmQgPSBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudmFsdWUuZnJvbSAmJiBlLml0ZW0gPD0gdGhpcy52YWx1ZS5mcm9tKSB7XG4gICAgICAgIHRoaXMudmFsdWUuZnJvbSA9IGUuaXRlbTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy52YWx1ZS5mcm9tICYmICF0aGlzLnZhbHVlLmVuZCkge1xuICAgICAgICB0aGlzLnZhbHVlLmVuZCA9IGUuaXRlbTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGUuY29tcG9uZW50ID09IHRoaXMuX2MxKSB0aGlzLl9zeW5jTmF2MSgpO1xuICAgICAgaWYgKGUuY29tcG9uZW50ID09IHRoaXMuX2MyKSB7XG4gICAgICAgIHRoaXMuX3N5bmNOYXYyKG5ldyBBWERhdGVUaW1lKGUuaXRlbSkpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9jMS5yZW5kZXIoKTtcbiAgICB0aGlzLl9jMi5yZW5kZXIoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVQcmV2Q2xpY2soKSB7XG4gICAgY29uc3QgdmlldyA9IHRoaXMuX2MxLmFjdGl2ZVZpZXc7XG4gICAgY29uc3QgZDEgPSB0aGlzLl9jMS5kaXNwbGF5UmFuZ2Uuc3RhcnRUaW1lO1xuICAgIGlmICh2aWV3ID09ICdkYXlzJyB8fCB2aWV3ID09ICdtb250aHMnKSB7XG4gICAgICB0aGlzLl9jMS5wcmV2KCk7XG4gICAgfSBlbHNlIGlmICh2aWV3ID09ICd5ZWFycycpIHtcbiAgICAgIHRoaXMuX2MxLm5hdlRvKGQxLmFkZCgneWVhcicsIC0yMCkpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVOZXh0Q2xpY2soKSB7XG4gICAgY29uc3QgdmlldyA9IHRoaXMuX2MxLmFjdGl2ZVZpZXc7XG4gICAgY29uc3QgZDEgPSB0aGlzLl9jMS5kaXNwbGF5UmFuZ2Uuc3RhcnRUaW1lO1xuICAgIGlmICh2aWV3ID09ICdkYXlzJyB8fCB2aWV3ID09ICdtb250aHMnKSB7XG4gICAgICB0aGlzLl9jMS5uZXh0KCk7XG4gICAgfSBlbHNlIGlmICh2aWV3ID09ICd5ZWFycycpIHtcbiAgICAgIHRoaXMuX2MxLm5hdlRvKGQxLmFkZCgneWVhcicsIDIwKSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZU5hdkNsaWNrKCkge1xuICAgIHRoaXMuX2MxLnRvZ2dsZVZpZXcoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNOYXZUZXh0KCkge1xuICAgIGNvbnN0IHZpZXcgPSB0aGlzLl9jMS5hY3RpdmVWaWV3O1xuICAgIGNvbnN0IGQxID0gdGhpcy5fYzEuZGlzcGxheVJhbmdlLnN0YXJ0VGltZTtcbiAgICBpZiAodmlldyA9PSAnZGF5cycpIHtcbiAgICAgIGNvbnN0IGQyID0gdGhpcy5fYzIuZGlzcGxheVJhbmdlLmVuZFRpbWU7XG4gICAgICB0aGlzLl9uYXZUZXh0ID0gYCR7ZDEuZm9ybWF0KCdNTU0geXl5eScpfSAtICR7ZDIuZm9ybWF0KCdNTU0geXl5eScpfWA7XG4gICAgfSBlbHNlIGlmICh2aWV3ID09ICdtb250aHMnKSB7XG4gICAgICBjb25zdCBkMiA9IHRoaXMuX2MyLmRpc3BsYXlSYW5nZS5lbmRUaW1lO1xuICAgICAgdGhpcy5fbmF2VGV4dCA9IGAke2QxLmZvcm1hdCgneXl5eScpfSAtICR7ZDIuZm9ybWF0KCd5eXl5Jyl9YDtcbiAgICB9IGVsc2UgaWYgKHZpZXcgPT0gJ3llYXJzJykge1xuICAgICAgY29uc3QgZDIgPSB0aGlzLl9jMi5kaXNwbGF5UmFuZ2UuZW5kVGltZTtcbiAgICAgIHRoaXMuX25hdlRleHQgPSBgJHtkMS5mb3JtYXQoJ3l5eXknKX0gLSAke2QyLmZvcm1hdCgneXl5eScpfWA7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZU5hdmlnYXRlKCkge1xuICAgIHRoaXMuX3N5bmNOYXYxKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlQWN0aXZlVmlld0NoYW5nZTEoKSB7XG4gICAgdGhpcy5fYzIuYWN0aXZlVmlldyA9IHRoaXMuX2MxLmFjdGl2ZVZpZXc7XG4gICAgdGhpcy5fc3luY05hdjEoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVBY3RpdmVWaWV3Q2hhbmdlMigpIHtcbiAgICBpZiAodGhpcy5fYzIuYWN0aXZlVmlldyAhPSB0aGlzLl9jMS5hY3RpdmVWaWV3KSB7XG4gICAgICB0aGlzLl9jMS5hY3RpdmVWaWV3ID0gdGhpcy5fYzIuYWN0aXZlVmlldztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zeW5jTmF2MSgpIHtcbiAgICBjb25zdCB2aWV3ID0gKHRoaXMuX2MyLmFjdGl2ZVZpZXcgPSB0aGlzLl9jMS5hY3RpdmVWaWV3KTtcbiAgICBjb25zdCByYW5nZSA9IHRoaXMuX2MxLmRpc3BsYXlSYW5nZTtcbiAgICBpZiAodmlldyA9PSAnZGF5cycpIHtcbiAgICAgIHRoaXMuX2MyLm5hdlRvKHJhbmdlLnN0YXJ0VGltZS5hZGQoJ21vbnRoJywgMSkpO1xuICAgIH0gZWxzZSBpZiAodmlldyA9PSAnbW9udGhzJykge1xuICAgICAgdGhpcy5fYzIubmF2VG8ocmFuZ2Uuc3RhcnRUaW1lLmFkZCgneWVhcicsIDEpKTtcbiAgICB9IGVsc2UgaWYgKHZpZXcgPT0gJ3llYXJzJykge1xuICAgICAgdGhpcy5fYzIubmF2VG8ocmFuZ2UuZW5kVGltZS5hZGQoJ3llYXInLCA0KSk7XG4gICAgfVxuICAgIHRoaXMuX3N5bmNOYXZUZXh0KCk7XG4gIH1cblxuICBwcml2YXRlIF9zeW5jTmF2MihlOiBBWERhdGVUaW1lKSB7XG4gICAgY29uc3QgdmlldyA9IHRoaXMuX2MyLmFjdGl2ZVZpZXc7XG4gICAgaWYgKHZpZXcgPT0gJ21vbnRocycpIHtcbiAgICAgIHRoaXMuX2MxLm5hdlRvKGUuYWRkKCdtb250aCcsIC0xKSk7XG4gICAgfSBlbHNlIGlmICh2aWV3ID09ICd5ZWFycycpIHtcbiAgICAgIHRoaXMuX2MxLm5hdlRvKGUuc3RhcnRPZigneWVhcicpKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1yYW5nZS1oZWFkZXJcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWhlYWRlci1yYW5nZS1pbmZvXCI+XG4gICAgICAgIDxidXR0b24gW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIiBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uXCIgKGNsaWNrKT1cImhhbmRsZU5hdkNsaWNrKClcIj5cbiAgICAgICAgICAgIHt7IF9uYXZUZXh0IH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1oZWFkZXItcmFuZ2UtYnV0dG9uc1wiPlxuICAgICAgICA8YnV0dG9uIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCIgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1idXR0b24taWNvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlUHJldkNsaWNrKClcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvblwiIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAnYXgtaWNvbi1jaGV2cm9uLWxlZnQnOiAhcnRsLFxuICAgICAgICAgICAgICAgICdheC1pY29uLWNoZXZyb24tcmlnaHQnOiBydGxcbiAgICAgICAgICAgICAgfVwiPjwvaT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIiBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1pY29uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVOZXh0Q2xpY2soKVwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uXCIgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICdheC1pY29uLWNoZXZyb24tbGVmdCc6IHJ0bCxcbiAgICAgICAgICAgICAgICAnYXgtaWNvbi1jaGV2cm9uLXJpZ2h0JzogIXJ0bFxuICAgICAgICAgICAgICB9XCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLXJhbmdlLWJvZHlcIj5cbiAgICA8YXgtY2FsZW5kYXIgI2MxIHN0eWxlPVwid2lkdGg6IDUwJTtcIiBbc2hvd05hdmlnYXRpb25dPVwiZmFsc2VcIiBbY2VsbENsYXNzXT1cImdldENlbGxDbGFzc1wiIFt0eXBlXT1cInR5cGVcIlxuICAgICAgICBbY2VsbFRlbXBsYXRlXT1cImNlbGxUZW1wbGF0ZVwiIFttaW5dPVwibWluXCIgW21heF09XCJtYXhcIiBbcmVhZG9ubHldPVwidHJ1ZVwiIFtkZXB0aF09XCJkZXB0aFwiIChvblNsb3RDbGljayk9XCJoYW5kbGVTbG90Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgIChvbk5hdmlnYXRlKT1cImhhbmRsZU5hdmlnYXRlKClcIiAoYWN0aXZlVmlld0NoYW5nZSk9XCJoYW5kbGVBY3RpdmVWaWV3Q2hhbmdlMSgpXCI+XG4gICAgPC9heC1jYWxlbmRhcj5cbiAgICA8YXgtY2FsZW5kYXIgI2MyIHN0eWxlPVwid2lkdGg6IDUwJTtcIiBbc2hvd05hdmlnYXRpb25dPVwiZmFsc2VcIiBbY2VsbENsYXNzXT1cImdldENlbGxDbGFzc1wiIFt0eXBlXT1cInR5cGVcIlxuICAgICAgICBbY2VsbFRlbXBsYXRlXT1cImNlbGxUZW1wbGF0ZVwiIFttaW5dPVwibWluXCIgW21heF09XCJtYXhcIiBbcmVhZG9ubHldPVwidHJ1ZVwiIFtkZXB0aF09XCJkZXB0aFwiIChvblNsb3RDbGljayk9XCJoYW5kbGVTbG90Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgIChhY3RpdmVWaWV3Q2hhbmdlKT1cImhhbmRsZUFjdGl2ZVZpZXdDaGFuZ2UyKClcIj5cbiAgICA8L2F4LWNhbGVuZGFyPlxuPC9kaXY+Il19
@@ -112,11 +112,11 @@ class MXCalendarBaseComponent extends classes(MXBaseComponent) {
112
112
  set holidayDates(v) {
113
113
  this.setOption({ name: 'holidayDates', value: v });
114
114
  }
115
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: MXCalendarBaseComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
116
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: MXCalendarBaseComponent });
115
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: MXCalendarBaseComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
116
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: MXCalendarBaseComponent });
117
117
  }
118
118
  export { MXCalendarBaseComponent };
119
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: MXCalendarBaseComponent, decorators: [{
119
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: MXCalendarBaseComponent, decorators: [{
120
120
  type: Injectable
121
121
  }], propDecorators: { interface: [{
122
122
  type: Input
@@ -230,11 +230,11 @@ class AXCalendarBaseComponent extends AXBaseComponent {
230
230
  set holidayDates(v) {
231
231
  this._setOption({ name: 'holidayDates', value: v });
232
232
  }
233
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXCalendarBaseComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Injectable });
234
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXCalendarBaseComponent });
233
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AXCalendarBaseComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Injectable });
234
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AXCalendarBaseComponent });
235
235
  }
236
236
  export { AXCalendarBaseComponent };
237
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXCalendarBaseComponent, decorators: [{
237
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AXCalendarBaseComponent, decorators: [{
238
238
  type: Injectable
239
239
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { onSlotClick: [{
240
240
  type: Output
@@ -330,11 +330,11 @@ class AXCalendarComponent extends classes((MXValueComponent), MXInteractiveCompo
330
330
  const weekend = AXConfig.get(`dateTime.calendars.${this.type}.weekend`);
331
331
  return weekend.includes(date.dayOfWeek);
332
332
  }
333
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXCalendarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
334
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: AXCalendarComponent, selector: "ax-calendar", inputs: { rtl: "rtl", readonly: "readonly", value: "value", name: "name", disabled: "disabled", depth: "depth", activeView: "activeView", min: "min", max: "max", disabledDates: "disabledDates", holidayDates: "holidayDates", type: "type", cellTemplate: "cellTemplate", cellClass: "cellClass", showNavigation: "showNavigation" }, outputs: { onOptionChanged: "onOptionChanged", valueChange: "valueChange", onValueChanged: "onValueChanged", onBlur: "onBlur", onFocus: "onFocus", depthChange: "depthChange", typeChange: "typeChange", activeViewChange: "activeViewChange", disabledDatesChange: "disabledDatesChange", holidayDatesChange: "holidayDatesChange", onNavigate: "onNavigate", onSlotClick: "onSlotClick" }, host: { properties: { "class": "this.__hostClass" } }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"interface === 'calendar'; else pickerTemplate\">\n <ng-container *ngIf=\"showNavigation\">\n <ng-content select=\"ax-header\"></ng-content>\n <div class=\"ax-calendar-header\">\n <div class=\"ax-calendar-header-info\">\n <ng-container *ngIf=\"activeView == 'days'; else elseTemplate\">\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"_handleNavClick($event)\">\n {{ _navText.split(' ')[1] }}\n </button>\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"_handleNavClick($event)\">\n {{ _navText.split(' ')[0] }}\n </button>\n </ng-container>\n <ng-template #elseTemplate>\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"_handleNavClick($event)\">\n {{ _navText }}\n </button>\n </ng-template>\n </div>\n <div class=\"ax-calendar-header-buttons\">\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\n (click)=\"_handlePrevClick()\">\n <i class=\"ax-icon\" [ngClass]=\"{\n 'ax-icon-chevron-left': !rtl,\n 'ax-icon-chevron-right': rtl\n }\"></i>\n </button>\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\n (click)=\"_handleNextClick()\">\n <i class=\"ax-icon\" [ngClass]=\"{\n 'ax-icon-chevron-left': rtl,\n 'ax-icon-chevron-right': !rtl\n }\"></i>\n </button>\n </div>\n </div>\n </ng-container>\n <div class=\"ax-calendar-body\">\n <div [ngSwitch]=\"activeView\">\n <ng-container *ngSwitchCase=\"'years'\">\n <div class=\"ax-calendar-slots ax-calendar-slots-year\" [ngClass]=\"{'ax-default':!cellTemplate}\">\n <div tabindex=\"0\" *ngFor=\"let slot of _slots\" class=\"ax-calendar-slot\" [ngClass]=\"slot.cssClass\"\n (click)=\"_handleSlotClick($event, slot)\">\n <ng-container *ngIf=\"cellTemplate; else yearTpl\">\n <div >\n <ng-container *ngTemplateOutlet=\"cellTemplate;context: { $implicit: {slot:slot} }\">\n </ng-container>\n </div>\n </ng-container>\n <ng-template #yearTpl>\n <div [title]=\"slot.tooltip\" >\n {{ slot.text }}\n </div>\n </ng-template>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'months'\">\n <div class=\"ax-calendar-slots ax-calendar-slots-month\" [ngClass]=\"{'ax-default':!cellTemplate}\">\n <div tabindex=\"0\" *ngFor=\"let slot of _slots\" class=\"ax-calendar-slot\"\n [ngClass]=\"slot.cssClass\" (click)=\"_handleSlotClick($event, slot)\">\n <ng-container *ngIf=\"cellTemplate; else monthTpl\">\n <div >\n <ng-container *ngTemplateOutlet=\"cellTemplate;context: { $implicit: {slot:slot} }\">\n </ng-container>\n </div>\n </ng-container>\n <ng-template #monthTpl>\n <div [title]=\"slot.tooltip\" >\n {{ slot.text }}\n </div>\n </ng-template>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <div class=\"ax-calendar-week\">\n <div *ngFor=\"let d of _dayNames\">{{ d }}</div>\n </div>\n <div class=\"ax-calendar-slots ax-calendar-slots-day\" [ngClass]=\"{'ax-default':!cellTemplate}\">\n <ng-container *ngFor=\"let slot of _slots\">\n <div tabindex=\"0\" class=\"ax-calendar-slot\" [ngClass]=\"slot.cssClass\" \n (click)=\"_handleSlotClick($event, slot)\">\n <ng-container *ngIf=\"cellTemplate; else dayTpl\">\n <div >\n <ng-container *ngTemplateOutlet=\"cellTemplate;context: { $implicit: {slot:slot} }\">\n </ng-container>\n </div>\n </ng-container>\n <ng-template #dayTpl>\n <div [title]=\"slot.tooltip\" >\n {{ slot.text }}\n </div>\n </ng-template>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n <ng-content select=\"ax-footer\"></ng-content>\n <!-- <div class=\"ax-calendar-footer\">\n <button\n class=\"ax-today-button\"\n tabindex=\"-1\"\n [class.ax-state-disabled]=\"disabled\"\n [attr.disabled]=\"(disabled || isDisabled(_today)?true:null)\"\n (click)=\"_handleGoToday()\"\n *ngIf=\"activeView == 'days'\">\n {{ _todayText }}\n </button>\n </div> -->\n</ng-container>\n<ng-template #pickerTemplate>\n <div class=\"ax-calendar-picker\">//TODO: picker</div>\n</ng-template>", styles: [".ax-dark ax-calendar{background:rgba(var(--ax-color-on-surface))}ax-calendar{display:block;background:rgba(var(--ax-color-surface));color:rgba(var(--ax-color-text-default));padding:.5rem;width:18rem}@media (max-width: 599px){ax-calendar{width:100%}}@media (min-width: 600px){ax-calendar{width:20rem}}@media (min-width: 1200px){ax-calendar{width:18rem}}ax-calendar.ax-state-disabled .ax-calendar-slots{opacity:.5;cursor:default}ax-calendar .ax-calendar-header{display:flex;justify-content:space-between;padding-top:.25rem;padding-left:.25rem;padding-right:.25rem}ax-calendar .ax-calendar-header .ax-calendar-header-info{font-weight:500}ax-calendar .ax-calendar-header .ax-calendar-header-buttons{display:flex}ax-calendar .ax-calendar-body{margin:.5rem}ax-calendar .ax-calendar-body .ax-calendar-slots{display:grid;gap:.25rem}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot{position:relative;display:flex;align-items:center;justify-content:center;text-align:center;font-size:.875rem;color:rgba(var(--ax-color-text-default));border-radius:var(--ax-rounded-border-default);cursor:pointer}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:before{content:\"\";padding-top:100%;float:left}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:after{content:\"\";display:block;clear:both}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-disabled,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-selected,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-today){background-color:rgba(var(--ax-color-primary-300));color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-today){outline-width:2px;outline-style:solid;outline-color:rgba(var(--ax-color-primary-500))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled{outline-width:2px;outline-style:dashed}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-disabled{cursor:not-allowed;opacity:.5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-1{grid-column-start:1}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-2{grid-column-start:2}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-3{grid-column-start:3}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-4{grid-column-start:4}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-5{grid-column-start:5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-6{grid-column-start:6}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-7{grid-column-start:7}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-other{opacity:.5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today{border-width:2px;border-style:solid;border-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-500))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today:focus-visible{border-style:dashed;outline-color:transparent}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected{background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday{color:rgba(var(--ax-color-danger-500))}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-day{grid-template-columns:repeat(7,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-year,ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-month{grid-template-columns:repeat(4,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));margin-top:.5rem;margin-bottom:.5rem}ax-calendar .ax-calendar-body .ax-calendar-week>div{font-size:.875rem;text-align:center;position:relative;display:flex;align-items:center;justify-content:center;cursor:text;margin:.125rem}ax-calendar .ax-calendar-footer{display:flex;justify-content:center;align-items:center;margin-top:1.125rem}ax-calendar .ax-calendar-footer .ax-today-button{width:100%;height:var(--ax-size-default);padding:0 1rem;font-size:.875rem;text-align:center;display:block;background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore));border-radius:var(--ax-rounded-border-default);cursor:pointer}ax-calendar .ax-calendar-footer .ax-today-button.ax-state-disabled{opacity:.5;cursor:not-allowed}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-color-primary-400))}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:focus,ax-calendar .ax-calendar-footer .ax-today-button:focus-visible):not(.ax-state-disabled){outline-color:rgba(var(--ax-color-primary-600))}.ax-calendar-picker{display:flex;width:100%}.ax-calendar-picker ax-picker{flex:1 1 0%}.ax-overlay-pane ax-calendar{border-style:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
333
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AXCalendarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
334
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: AXCalendarComponent, selector: "ax-calendar", inputs: { rtl: "rtl", readonly: "readonly", value: "value", name: "name", disabled: "disabled", depth: "depth", activeView: "activeView", min: "min", max: "max", disabledDates: "disabledDates", holidayDates: "holidayDates", type: "type", cellTemplate: "cellTemplate", cellClass: "cellClass", showNavigation: "showNavigation" }, outputs: { onOptionChanged: "onOptionChanged", valueChange: "valueChange", onValueChanged: "onValueChanged", onBlur: "onBlur", onFocus: "onFocus", depthChange: "depthChange", typeChange: "typeChange", activeViewChange: "activeViewChange", disabledDatesChange: "disabledDatesChange", holidayDatesChange: "holidayDatesChange", onNavigate: "onNavigate", onSlotClick: "onSlotClick" }, host: { properties: { "class": "this.__hostClass" } }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"interface === 'calendar'; else pickerTemplate\">\n <ng-container *ngIf=\"showNavigation\">\n <ng-content select=\"ax-header\"></ng-content>\n <div class=\"ax-calendar-header\">\n <div class=\"ax-calendar-header-info\">\n <ng-container *ngIf=\"activeView == 'days'; else elseTemplate\">\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"_handleNavClick($event)\">\n {{ _navText.split(' ')[1] }}\n </button>\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"_handleNavClick($event)\">\n {{ _navText.split(' ')[0] }}\n </button>\n </ng-container>\n <ng-template #elseTemplate>\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"_handleNavClick($event)\">\n {{ _navText }}\n </button>\n </ng-template>\n </div>\n <div class=\"ax-calendar-header-buttons\">\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\n (click)=\"_handlePrevClick()\">\n <i class=\"ax-icon\" [ngClass]=\"{\n 'ax-icon-chevron-left': !rtl,\n 'ax-icon-chevron-right': rtl\n }\"></i>\n </button>\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\n (click)=\"_handleNextClick()\">\n <i class=\"ax-icon\" [ngClass]=\"{\n 'ax-icon-chevron-left': rtl,\n 'ax-icon-chevron-right': !rtl\n }\"></i>\n </button>\n </div>\n </div>\n </ng-container>\n <div class=\"ax-calendar-body\">\n <div [ngSwitch]=\"activeView\">\n <ng-container *ngSwitchCase=\"'years'\">\n <div class=\"ax-calendar-slots ax-calendar-slots-year\" [ngClass]=\"{'ax-default':!cellTemplate}\">\n <div tabindex=\"0\" *ngFor=\"let slot of _slots\" class=\"ax-calendar-slot\" [ngClass]=\"slot.cssClass\"\n (click)=\"_handleSlotClick($event, slot)\">\n <ng-container *ngIf=\"cellTemplate; else yearTpl\">\n <div >\n <ng-container *ngTemplateOutlet=\"cellTemplate;context: { $implicit: {slot:slot} }\">\n </ng-container>\n </div>\n </ng-container>\n <ng-template #yearTpl>\n <div [title]=\"slot.tooltip\" >\n {{ slot.text }}\n </div>\n </ng-template>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'months'\">\n <div class=\"ax-calendar-slots ax-calendar-slots-month\" [ngClass]=\"{'ax-default':!cellTemplate}\">\n <div tabindex=\"0\" *ngFor=\"let slot of _slots\" class=\"ax-calendar-slot\"\n [ngClass]=\"slot.cssClass\" (click)=\"_handleSlotClick($event, slot)\">\n <ng-container *ngIf=\"cellTemplate; else monthTpl\">\n <div >\n <ng-container *ngTemplateOutlet=\"cellTemplate;context: { $implicit: {slot:slot} }\">\n </ng-container>\n </div>\n </ng-container>\n <ng-template #monthTpl>\n <div [title]=\"slot.tooltip\" >\n {{ slot.text }}\n </div>\n </ng-template>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <div class=\"ax-calendar-week\">\n <div *ngFor=\"let d of _dayNames\">{{ d }}</div>\n </div>\n <div class=\"ax-calendar-slots ax-calendar-slots-day\" [ngClass]=\"{'ax-default':!cellTemplate}\">\n <ng-container *ngFor=\"let slot of _slots\">\n <div tabindex=\"0\" class=\"ax-calendar-slot\" [ngClass]=\"slot.cssClass\" \n (click)=\"_handleSlotClick($event, slot)\">\n <ng-container *ngIf=\"cellTemplate; else dayTpl\">\n <div >\n <ng-container *ngTemplateOutlet=\"cellTemplate;context: { $implicit: {slot:slot} }\">\n </ng-container>\n </div>\n </ng-container>\n <ng-template #dayTpl>\n <div [title]=\"slot.tooltip\" >\n {{ slot.text }}\n </div>\n </ng-template>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n <ng-content select=\"ax-footer\"></ng-content>\n</ng-container>\n<ng-template #pickerTemplate>\n <div class=\"ax-calendar-picker\">//TODO: picker</div>\n</ng-template>", styles: [".ax-dark ax-calendar{background:rgba(var(--ax-color-on-surface))}ax-calendar{display:block;background:rgba(var(--ax-color-surface));color:rgba(var(--ax-color-text-default));padding:.5rem;width:19rem}@media (max-width: 599px){ax-calendar{width:100%}}@media (min-width: 600px){ax-calendar{width:20rem}}@media (min-width: 1200px){ax-calendar{width:19rem}}@media (min-width: 1800px){ax-calendar{width:21rem}}ax-calendar.ax-state-disabled .ax-calendar-slots{opacity:.5;cursor:default}ax-calendar .ax-calendar-header{display:flex;justify-content:space-between;padding-top:.25rem;padding-left:.25rem;padding-right:.25rem}ax-calendar .ax-calendar-header .ax-calendar-header-info{font-weight:500}ax-calendar .ax-calendar-header .ax-calendar-header-buttons{display:flex}ax-calendar .ax-calendar-body{margin:.5rem}ax-calendar .ax-calendar-body .ax-calendar-slots{display:grid;gap:.25rem}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot{position:relative;display:flex;align-items:center;justify-content:center;text-align:center;font-size:.875rem;color:rgba(var(--ax-color-text-default));border-radius:var(--ax-rounded-border-default);cursor:pointer}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:before{content:\"\";padding-top:100%;float:left}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:after{content:\"\";display:block;clear:both}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-disabled,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-selected,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-today){background-color:rgba(var(--ax-color-primary-300));color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-today){outline-width:2px;outline-style:solid;outline-color:rgba(var(--ax-color-primary-500))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled{outline-width:2px;outline-style:dashed}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-disabled{cursor:not-allowed;opacity:.5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-1{grid-column-start:1}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-2{grid-column-start:2}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-3{grid-column-start:3}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-4{grid-column-start:4}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-5{grid-column-start:5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-6{grid-column-start:6}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-7{grid-column-start:7}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-other{opacity:.5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today{border-width:2px;border-style:solid;border-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-500))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today:focus-visible{border-style:dashed;outline-color:transparent}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected{background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday{color:rgba(var(--ax-color-danger-500))}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-day{grid-template-columns:repeat(7,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-year,ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-month{grid-template-columns:repeat(4,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));margin-top:.5rem;margin-bottom:.5rem}ax-calendar .ax-calendar-body .ax-calendar-week>div{font-size:.875rem;text-align:center;position:relative;display:flex;align-items:center;justify-content:center;cursor:text;margin:.125rem}ax-calendar .ax-calendar-footer{display:flex;justify-content:center;align-items:center;margin-top:1.125rem}ax-calendar .ax-calendar-footer .ax-today-button{width:100%;height:var(--ax-size-default);padding:0 1rem;font-size:.875rem;text-align:center;display:block;background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore));border-radius:var(--ax-rounded-border-default);cursor:pointer}ax-calendar .ax-calendar-footer .ax-today-button.ax-state-disabled{opacity:.5;cursor:not-allowed}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-color-primary-400))}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:focus,ax-calendar .ax-calendar-footer .ax-today-button:focus-visible):not(.ax-state-disabled){outline-color:rgba(var(--ax-color-primary-600))}.ax-calendar-picker{display:flex;width:100%}.ax-calendar-picker ax-picker{flex:1 1 0%}.ax-overlay-pane ax-calendar{border-style:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
335
335
  }
336
336
  export { AXCalendarComponent };
337
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXCalendarComponent, decorators: [{
337
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AXCalendarComponent, decorators: [{
338
338
  type: Component,
339
339
  args: [{ selector: 'ax-calendar', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: [
340
340
  'rtl',
@@ -365,9 +365,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
365
365
  'holidayDatesChange',
366
366
  'onNavigate',
367
367
  'onSlotClick'
368
- ], template: "<ng-container *ngIf=\"interface === 'calendar'; else pickerTemplate\">\n <ng-container *ngIf=\"showNavigation\">\n <ng-content select=\"ax-header\"></ng-content>\n <div class=\"ax-calendar-header\">\n <div class=\"ax-calendar-header-info\">\n <ng-container *ngIf=\"activeView == 'days'; else elseTemplate\">\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"_handleNavClick($event)\">\n {{ _navText.split(' ')[1] }}\n </button>\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"_handleNavClick($event)\">\n {{ _navText.split(' ')[0] }}\n </button>\n </ng-container>\n <ng-template #elseTemplate>\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"_handleNavClick($event)\">\n {{ _navText }}\n </button>\n </ng-template>\n </div>\n <div class=\"ax-calendar-header-buttons\">\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\n (click)=\"_handlePrevClick()\">\n <i class=\"ax-icon\" [ngClass]=\"{\n 'ax-icon-chevron-left': !rtl,\n 'ax-icon-chevron-right': rtl\n }\"></i>\n </button>\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\n (click)=\"_handleNextClick()\">\n <i class=\"ax-icon\" [ngClass]=\"{\n 'ax-icon-chevron-left': rtl,\n 'ax-icon-chevron-right': !rtl\n }\"></i>\n </button>\n </div>\n </div>\n </ng-container>\n <div class=\"ax-calendar-body\">\n <div [ngSwitch]=\"activeView\">\n <ng-container *ngSwitchCase=\"'years'\">\n <div class=\"ax-calendar-slots ax-calendar-slots-year\" [ngClass]=\"{'ax-default':!cellTemplate}\">\n <div tabindex=\"0\" *ngFor=\"let slot of _slots\" class=\"ax-calendar-slot\" [ngClass]=\"slot.cssClass\"\n (click)=\"_handleSlotClick($event, slot)\">\n <ng-container *ngIf=\"cellTemplate; else yearTpl\">\n <div >\n <ng-container *ngTemplateOutlet=\"cellTemplate;context: { $implicit: {slot:slot} }\">\n </ng-container>\n </div>\n </ng-container>\n <ng-template #yearTpl>\n <div [title]=\"slot.tooltip\" >\n {{ slot.text }}\n </div>\n </ng-template>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'months'\">\n <div class=\"ax-calendar-slots ax-calendar-slots-month\" [ngClass]=\"{'ax-default':!cellTemplate}\">\n <div tabindex=\"0\" *ngFor=\"let slot of _slots\" class=\"ax-calendar-slot\"\n [ngClass]=\"slot.cssClass\" (click)=\"_handleSlotClick($event, slot)\">\n <ng-container *ngIf=\"cellTemplate; else monthTpl\">\n <div >\n <ng-container *ngTemplateOutlet=\"cellTemplate;context: { $implicit: {slot:slot} }\">\n </ng-container>\n </div>\n </ng-container>\n <ng-template #monthTpl>\n <div [title]=\"slot.tooltip\" >\n {{ slot.text }}\n </div>\n </ng-template>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <div class=\"ax-calendar-week\">\n <div *ngFor=\"let d of _dayNames\">{{ d }}</div>\n </div>\n <div class=\"ax-calendar-slots ax-calendar-slots-day\" [ngClass]=\"{'ax-default':!cellTemplate}\">\n <ng-container *ngFor=\"let slot of _slots\">\n <div tabindex=\"0\" class=\"ax-calendar-slot\" [ngClass]=\"slot.cssClass\" \n (click)=\"_handleSlotClick($event, slot)\">\n <ng-container *ngIf=\"cellTemplate; else dayTpl\">\n <div >\n <ng-container *ngTemplateOutlet=\"cellTemplate;context: { $implicit: {slot:slot} }\">\n </ng-container>\n </div>\n </ng-container>\n <ng-template #dayTpl>\n <div [title]=\"slot.tooltip\" >\n {{ slot.text }}\n </div>\n </ng-template>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n <ng-content select=\"ax-footer\"></ng-content>\n <!-- <div class=\"ax-calendar-footer\">\n <button\n class=\"ax-today-button\"\n tabindex=\"-1\"\n [class.ax-state-disabled]=\"disabled\"\n [attr.disabled]=\"(disabled || isDisabled(_today)?true:null)\"\n (click)=\"_handleGoToday()\"\n *ngIf=\"activeView == 'days'\">\n {{ _todayText }}\n </button>\n </div> -->\n</ng-container>\n<ng-template #pickerTemplate>\n <div class=\"ax-calendar-picker\">//TODO: picker</div>\n</ng-template>", styles: [".ax-dark ax-calendar{background:rgba(var(--ax-color-on-surface))}ax-calendar{display:block;background:rgba(var(--ax-color-surface));color:rgba(var(--ax-color-text-default));padding:.5rem;width:18rem}@media (max-width: 599px){ax-calendar{width:100%}}@media (min-width: 600px){ax-calendar{width:20rem}}@media (min-width: 1200px){ax-calendar{width:18rem}}ax-calendar.ax-state-disabled .ax-calendar-slots{opacity:.5;cursor:default}ax-calendar .ax-calendar-header{display:flex;justify-content:space-between;padding-top:.25rem;padding-left:.25rem;padding-right:.25rem}ax-calendar .ax-calendar-header .ax-calendar-header-info{font-weight:500}ax-calendar .ax-calendar-header .ax-calendar-header-buttons{display:flex}ax-calendar .ax-calendar-body{margin:.5rem}ax-calendar .ax-calendar-body .ax-calendar-slots{display:grid;gap:.25rem}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot{position:relative;display:flex;align-items:center;justify-content:center;text-align:center;font-size:.875rem;color:rgba(var(--ax-color-text-default));border-radius:var(--ax-rounded-border-default);cursor:pointer}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:before{content:\"\";padding-top:100%;float:left}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:after{content:\"\";display:block;clear:both}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-disabled,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-selected,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-today){background-color:rgba(var(--ax-color-primary-300));color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-today){outline-width:2px;outline-style:solid;outline-color:rgba(var(--ax-color-primary-500))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled{outline-width:2px;outline-style:dashed}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-disabled{cursor:not-allowed;opacity:.5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-1{grid-column-start:1}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-2{grid-column-start:2}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-3{grid-column-start:3}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-4{grid-column-start:4}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-5{grid-column-start:5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-6{grid-column-start:6}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-7{grid-column-start:7}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-other{opacity:.5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today{border-width:2px;border-style:solid;border-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-500))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today:focus-visible{border-style:dashed;outline-color:transparent}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected{background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday{color:rgba(var(--ax-color-danger-500))}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-day{grid-template-columns:repeat(7,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-year,ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-month{grid-template-columns:repeat(4,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));margin-top:.5rem;margin-bottom:.5rem}ax-calendar .ax-calendar-body .ax-calendar-week>div{font-size:.875rem;text-align:center;position:relative;display:flex;align-items:center;justify-content:center;cursor:text;margin:.125rem}ax-calendar .ax-calendar-footer{display:flex;justify-content:center;align-items:center;margin-top:1.125rem}ax-calendar .ax-calendar-footer .ax-today-button{width:100%;height:var(--ax-size-default);padding:0 1rem;font-size:.875rem;text-align:center;display:block;background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore));border-radius:var(--ax-rounded-border-default);cursor:pointer}ax-calendar .ax-calendar-footer .ax-today-button.ax-state-disabled{opacity:.5;cursor:not-allowed}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-color-primary-400))}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:focus,ax-calendar .ax-calendar-footer .ax-today-button:focus-visible):not(.ax-state-disabled){outline-color:rgba(var(--ax-color-primary-600))}.ax-calendar-picker{display:flex;width:100%}.ax-calendar-picker ax-picker{flex:1 1 0%}.ax-overlay-pane ax-calendar{border-style:none}\n"] }]
368
+ ], template: "<ng-container *ngIf=\"interface === 'calendar'; else pickerTemplate\">\n <ng-container *ngIf=\"showNavigation\">\n <ng-content select=\"ax-header\"></ng-content>\n <div class=\"ax-calendar-header\">\n <div class=\"ax-calendar-header-info\">\n <ng-container *ngIf=\"activeView == 'days'; else elseTemplate\">\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"_handleNavClick($event)\">\n {{ _navText.split(' ')[1] }}\n </button>\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"_handleNavClick($event)\">\n {{ _navText.split(' ')[0] }}\n </button>\n </ng-container>\n <ng-template #elseTemplate>\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"_handleNavClick($event)\">\n {{ _navText }}\n </button>\n </ng-template>\n </div>\n <div class=\"ax-calendar-header-buttons\">\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\n (click)=\"_handlePrevClick()\">\n <i class=\"ax-icon\" [ngClass]=\"{\n 'ax-icon-chevron-left': !rtl,\n 'ax-icon-chevron-right': rtl\n }\"></i>\n </button>\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\n (click)=\"_handleNextClick()\">\n <i class=\"ax-icon\" [ngClass]=\"{\n 'ax-icon-chevron-left': rtl,\n 'ax-icon-chevron-right': !rtl\n }\"></i>\n </button>\n </div>\n </div>\n </ng-container>\n <div class=\"ax-calendar-body\">\n <div [ngSwitch]=\"activeView\">\n <ng-container *ngSwitchCase=\"'years'\">\n <div class=\"ax-calendar-slots ax-calendar-slots-year\" [ngClass]=\"{'ax-default':!cellTemplate}\">\n <div tabindex=\"0\" *ngFor=\"let slot of _slots\" class=\"ax-calendar-slot\" [ngClass]=\"slot.cssClass\"\n (click)=\"_handleSlotClick($event, slot)\">\n <ng-container *ngIf=\"cellTemplate; else yearTpl\">\n <div >\n <ng-container *ngTemplateOutlet=\"cellTemplate;context: { $implicit: {slot:slot} }\">\n </ng-container>\n </div>\n </ng-container>\n <ng-template #yearTpl>\n <div [title]=\"slot.tooltip\" >\n {{ slot.text }}\n </div>\n </ng-template>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'months'\">\n <div class=\"ax-calendar-slots ax-calendar-slots-month\" [ngClass]=\"{'ax-default':!cellTemplate}\">\n <div tabindex=\"0\" *ngFor=\"let slot of _slots\" class=\"ax-calendar-slot\"\n [ngClass]=\"slot.cssClass\" (click)=\"_handleSlotClick($event, slot)\">\n <ng-container *ngIf=\"cellTemplate; else monthTpl\">\n <div >\n <ng-container *ngTemplateOutlet=\"cellTemplate;context: { $implicit: {slot:slot} }\">\n </ng-container>\n </div>\n </ng-container>\n <ng-template #monthTpl>\n <div [title]=\"slot.tooltip\" >\n {{ slot.text }}\n </div>\n </ng-template>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <div class=\"ax-calendar-week\">\n <div *ngFor=\"let d of _dayNames\">{{ d }}</div>\n </div>\n <div class=\"ax-calendar-slots ax-calendar-slots-day\" [ngClass]=\"{'ax-default':!cellTemplate}\">\n <ng-container *ngFor=\"let slot of _slots\">\n <div tabindex=\"0\" class=\"ax-calendar-slot\" [ngClass]=\"slot.cssClass\" \n (click)=\"_handleSlotClick($event, slot)\">\n <ng-container *ngIf=\"cellTemplate; else dayTpl\">\n <div >\n <ng-container *ngTemplateOutlet=\"cellTemplate;context: { $implicit: {slot:slot} }\">\n </ng-container>\n </div>\n </ng-container>\n <ng-template #dayTpl>\n <div [title]=\"slot.tooltip\" >\n {{ slot.text }}\n </div>\n </ng-template>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n <ng-content select=\"ax-footer\"></ng-content>\n</ng-container>\n<ng-template #pickerTemplate>\n <div class=\"ax-calendar-picker\">//TODO: picker</div>\n</ng-template>", styles: [".ax-dark ax-calendar{background:rgba(var(--ax-color-on-surface))}ax-calendar{display:block;background:rgba(var(--ax-color-surface));color:rgba(var(--ax-color-text-default));padding:.5rem;width:19rem}@media (max-width: 599px){ax-calendar{width:100%}}@media (min-width: 600px){ax-calendar{width:20rem}}@media (min-width: 1200px){ax-calendar{width:19rem}}@media (min-width: 1800px){ax-calendar{width:21rem}}ax-calendar.ax-state-disabled .ax-calendar-slots{opacity:.5;cursor:default}ax-calendar .ax-calendar-header{display:flex;justify-content:space-between;padding-top:.25rem;padding-left:.25rem;padding-right:.25rem}ax-calendar .ax-calendar-header .ax-calendar-header-info{font-weight:500}ax-calendar .ax-calendar-header .ax-calendar-header-buttons{display:flex}ax-calendar .ax-calendar-body{margin:.5rem}ax-calendar .ax-calendar-body .ax-calendar-slots{display:grid;gap:.25rem}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot{position:relative;display:flex;align-items:center;justify-content:center;text-align:center;font-size:.875rem;color:rgba(var(--ax-color-text-default));border-radius:var(--ax-rounded-border-default);cursor:pointer}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:before{content:\"\";padding-top:100%;float:left}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:after{content:\"\";display:block;clear:both}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-disabled,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-selected,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-today){background-color:rgba(var(--ax-color-primary-300));color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-today){outline-width:2px;outline-style:solid;outline-color:rgba(var(--ax-color-primary-500))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled{outline-width:2px;outline-style:dashed}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-disabled{cursor:not-allowed;opacity:.5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-1{grid-column-start:1}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-2{grid-column-start:2}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-3{grid-column-start:3}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-4{grid-column-start:4}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-5{grid-column-start:5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-6{grid-column-start:6}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-7{grid-column-start:7}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-other{opacity:.5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today{border-width:2px;border-style:solid;border-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-500))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today:focus-visible{border-style:dashed;outline-color:transparent}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected{background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday{color:rgba(var(--ax-color-danger-500))}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-day{grid-template-columns:repeat(7,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-year,ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-month{grid-template-columns:repeat(4,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));margin-top:.5rem;margin-bottom:.5rem}ax-calendar .ax-calendar-body .ax-calendar-week>div{font-size:.875rem;text-align:center;position:relative;display:flex;align-items:center;justify-content:center;cursor:text;margin:.125rem}ax-calendar .ax-calendar-footer{display:flex;justify-content:center;align-items:center;margin-top:1.125rem}ax-calendar .ax-calendar-footer .ax-today-button{width:100%;height:var(--ax-size-default);padding:0 1rem;font-size:.875rem;text-align:center;display:block;background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore));border-radius:var(--ax-rounded-border-default);cursor:pointer}ax-calendar .ax-calendar-footer .ax-today-button.ax-state-disabled{opacity:.5;cursor:not-allowed}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-color-primary-400))}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:focus,ax-calendar .ax-calendar-footer .ax-today-button:focus-visible):not(.ax-state-disabled){outline-color:rgba(var(--ax-color-primary-600))}.ax-calendar-picker{display:flex;width:100%}.ax-calendar-picker ax-picker{flex:1 1 0%}.ax-overlay-pane ax-calendar{border-style:none}\n"] }]
369
369
  }], propDecorators: { __hostClass: [{
370
370
  type: HostBinding,
371
371
  args: ['class']
372
372
  }] } });
373
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvY2FsZW5kYXIvc3JjL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL2NhbGVuZGFyL3NyYy9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixFQUNqQix1QkFBdUIsRUFDdkIsV0FBVyxHQUdaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEUsT0FBTyxFQUlMLHNCQUFzQixFQUN0QixnQkFBZ0IsRUFDakIsTUFBTSwyQkFBMkIsQ0FBQztBQUduQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNuQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBRTNELE1Bc0NhLG1CQUNYLFNBQ0EsT0FBTyxDQUFDLENBQUEsZ0JBQXNCLENBQUEsRUFBRSxzQkFBc0IsRUFBRSx1QkFBdUIsQ0FBQztJQUVoRixJQUFXLFlBQVk7UUFDckIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ25ELFFBQVEsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUN2QixLQUFLLE9BQU87Z0JBQ1Ysd0NBQXdDO2dCQUN4QyxtQkFBbUI7Z0JBQ25CLHNCQUFzQjtnQkFDdEIsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3JDLElB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QUFXO3NCQUR0QixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWERhdGVUaW1lLCBBWERhdGVUaW1lUmFuZ2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvZGF0ZVRpbWUnO1xuaW1wb3J0IHtcbiAgQVhDbGlja0V2ZW50LFxuICBBWE9wdGlvbkNoYW5nZWRFdmVudCxcbiAgQVhWYWx1ZUNoYW5nZWRFdmVudCxcbiAgTVhJbnRlcmFjdGl2ZUNvbXBvbmVudCxcbiAgTVhWYWx1ZUNvbXBvbmVudFxufSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcblxuXG5pbXBvcnQgeyBBWENvbmZpZyB9IGZyb20gJ0BhY29yZXgvY29yZS9jb25maWcnO1xuXG5pbXBvcnQgeyBjbGFzc2VzIH0gZnJvbSAncG9seXR5cGUnO1xuaW1wb3J0IHsgTVhDYWxlbmRhckJhc2VDb21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyLmNsYXNzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtY2FsZW5kYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW5wdXRzOiBbXG4gICAgJ3J0bCcsXG4gICAgJ3JlYWRvbmx5JyxcbiAgICAndmFsdWUnLFxuICAgICduYW1lJyxcbiAgICAnZGlzYWJsZWQnLFxuICAgICdkZXB0aCcsXG4gICAgJ2FjdGl2ZVZpZXcnLFxuICAgICdtaW4nLFxuICAgICdtYXgnLFxuICAgICdkaXNhYmxlZERhdGVzJyxcbiAgICAnaG9saWRheURhdGVzJyxcbiAgICAndHlwZScsXG4gICAgJ2NlbGxUZW1wbGF0ZScsXG4gICAgJ2NlbGxDbGFzcycsXG4gICAgJ3Nob3dOYXZpZ2F0aW9uJ1xuICBdLFxuICBvdXRwdXRzOiBbXG4gICAgJ29uT3B0aW9uQ2hhbmdlZCcsXG4gICAgJ3ZhbHVlQ2hhbmdlJyxcbiAgICAnb25WYWx1ZUNoYW5nZWQnLFxuICAgICdvbkJsdXInLFxuICAgICdvbkZvY3VzJyxcbiAgICAnZGVwdGhDaGFuZ2UnLFxuICAgICd0eXBlQ2hhbmdlJyxcbiAgICAnYWN0aXZlVmlld0NoYW5nZScsXG4gICAgJ2Rpc2FibGVkRGF0ZXNDaGFuZ2UnLFxuICAgICdob2xpZGF5RGF0ZXNDaGFuZ2UnLFxuICAgICdvbk5hdmlnYXRlJyxcbiAgICAnb25TbG90Q2xpY2snXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQVhDYWxlbmRhckNvbXBvbmVudFxuICBleHRlbmRzXG4gIGNsYXNzZXMoTVhWYWx1ZUNvbXBvbmVudDxEYXRlPiwgTVhJbnRlcmFjdGl2ZUNvbXBvbmVudCwgTVhDYWxlbmRhckJhc2VDb21wb25lbnQpXG57XG4gIHB1YmxpYyBnZXQgZGlzcGxheVJhbmdlKCk6IEFYRGF0ZVRpbWVSYW5nZSB7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuX3ZpZXdTdGFydERhdGUgfHwgdGhpcy5fdG9kYXk7XG4gICAgc3dpdGNoICh0aGlzLmFjdGl2ZVZpZXcpIHtcbiAgICAgIGNhc2UgJ3llYXJzJzpcbiAgICAgICAgLy8gbGV0IHkgPSBjdXJyZW50LnN0YXJ0T2YoJ3llYXInKS55ZWFyO1xuICAgICAgICAvLyBsZXQgbWluID0geSAtIDM7XG4gICAgICAgIC8vIGxldCBtYXggPSBtaW4gKyAxMTtcbiAgICAgICAgbGV0IHkgPSBjdXJyZW50LnN0YXJ0T2YoJ3llYXInKS55ZWFyO1xuICAgICAgICBsZXQgbWluID0geSAtICh5ICUgMTApO1xuICAgICAgICBsZXQgbWF4ID0gbWluICsgOTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lUmFuZ2UoXG4gICAgICAgICAgQVhEYXRlVGltZS5mcm9tKHtcbiAgICAgICAgICAgIHllYXI6IG1pbixcbiAgICAgICAgICAgIG1vbnRoOiAxLFxuICAgICAgICAgICAgZGF0ZTogMSxcbiAgICAgICAgICAgIGNhbGVuZGFyOiB0aGlzLl92aWV3U3RhcnREYXRlLmNhbGVuZGFyLm5hbWUoKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBBWERhdGVUaW1lLmZyb20oe1xuICAgICAgICAgICAgeWVhcjogbWF4LFxuICAgICAgICAgICAgbW9udGg6IDEyLFxuICAgICAgICAgICAgZGF0ZTogMjgsXG4gICAgICAgICAgICBjYWxlbmRhcjogdGhpcy5fdmlld1N0YXJ0RGF0ZS5jYWxlbmRhci5uYW1lKCksXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgJ21vbnRocyc6XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZVJhbmdlKFxuICAgICAgICAgIGN1cnJlbnQuc3RhcnRPZigneWVhcicpLFxuICAgICAgICAgIGN1cnJlbnQuZW5kT2YoJ3llYXInKS5hZGQoJ2RheScsIC0xKVxuICAgICAgICApO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lUmFuZ2UoXG4gICAgICAgICAgY3VycmVudC5zdGFydE9mKCdtb250aCcpLFxuICAgICAgICAgIGN1cnJlbnQuZW5kT2YoJ21vbnRoJylcbiAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX3RvZGF5ID0gbmV3IEFYRGF0ZVRpbWUobmV3IERhdGUoKSwgdGhpcy50eXBlKTtcbiAgcHJpdmF0ZSBfdmlld1N0YXJ0RGF0ZSE6IEFYRGF0ZVRpbWU7XG5cbiAgcHJvdGVjdGVkIF9uYXZUZXh0OiBzdHJpbmcgPSAnJztcbiAgcHJvdGVjdGVkIF90b2RheVRleHQ6IHN0cmluZyA9ICcnO1xuXG4gIHByb3RlY3RlZCBfc2xvdHM6IGFueVtdID0gW107XG4gIHByb3RlY3RlZCBfZGF5TmFtZXM6IHN0cmluZ1tdID0gW107XG5cblxuICBwcml2YXRlIF9pbml0VmFsdWVzKCkge1xuICAgIHRoaXMuX3RvZGF5ID0gbmV3IEFYRGF0ZVRpbWUobmV3IERhdGUoKSwgdGhpcy50eXBlKTtcbiAgICB0aGlzLl9kYXlOYW1lcyA9IHRoaXMuX3RvZGF5LmNhbGVuZGFyLmRheVNob3J0TmFtZXM7XG4gIH1cblxuICBwcml2YXRlIF9yZWZyZXNoKCkge1xuICAgIHRoaXMuX2luaXRWYWx1ZXMoKTtcbiAgICB0aGlzLm5hdlRvKHRoaXMudmFsdWUgfHwgdGhpcy5fdG9kYXkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgdGhpcy5vblZhbHVlQ2hhbmdlZC5zdWJzY3JpYmUodGhpcy5faGFuZGxlT25WYWx1ZUNoYW5nZWQuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5vbk9wdGlvbkNoYW5nZWQuc3Vic2NyaWJlKHRoaXMuX2hhbmRsZU9uT3B0aW9uQ2hhbmdlZC5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLl9pbml0VmFsdWVzKCk7XG4gICAgaWYgKCF0aGlzLnZhbHVlKSB0aGlzLmdvVG9kYXkoKTtcbiAgfVxuXG5cbiAgcmVuZGVyKCkge1xuICAgIGlmICghdGhpcy5fdmlld1N0YXJ0RGF0ZSkgcmV0dXJuO1xuICAgIGNvbnN0IHZyID0gdGhpcy5kaXNwbGF5UmFuZ2U7XG4gICAgY29uc3QgYXBwbHlDZWxsQ2xhc3MgPSAoc2xvdDogYW55LCBjZWxsQ2xhc3M6IGFueSA9IHRoaXMuY2VsbENsYXNzKSA9PiB7XG4gICAgICBzd2l0Y2ggKHR5cGVvZiBjZWxsQ2xhc3MpIHtcbiAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICBjZWxsQ2xhc3Muc3BsaXQoJyAnKS5mb3JFYWNoKGMgPT4gc2xvdC5jc3NDbGFzc1tjXSA9IHRydWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICAgIE9iamVjdC5hc3NpZ24oc2xvdC5jc3NDbGFzcywgY2VsbENsYXNzKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgICAgIGFwcGx5Q2VsbENsYXNzKHNsb3QsIGNlbGxDbGFzcyhzbG90LmRhdGUpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgLy8geWVhciB2aWV3XG4gICAgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAneWVhcnMnKSB7XG4gICAgICBjb25zdCBhID0gdnIuZW51bXVyYXRlKCd5ZWFyJyk7XG4gICAgICB0aGlzLl9zbG90cyA9IGEubWFwKChkLCBpKSA9PiB7XG4gICAgICAgIGNvbnN0IHI6IGFueSA9IHt9O1xuICAgICAgICByLmRhdGUgPSBkLmRhdGU7XG4gICAgICAgIC8vXG4gICAgICAgIHIudGV4dCA9IGQuZm9ybWF0KCdZWVlZJyk7XG4gICAgICAgIHIudG9vbHRpcCA9IGQuZm9ybWF0KCdZWVlZJyk7XG4gICAgICAgIC8vXG4gICAgICAgIHIudG9kYXkgPSBkLmVxdWFsKHRoaXMuX3RvZGF5LCAneWVhcicpO1xuICAgICAgICAvL1xuICAgICAgICByLnNlbGVjdGVkID1cbiAgICAgICAgICB0aGlzLnZhbHVlICYmXG4gICAgICAgICAgdGhpcy5kZXB0aCA9PSAneWVhcnMnICYmXG4gICAgICAgICAgZC5lcXVhbCh0aGlzLnZhbHVlLCAneWVhcicpXG4gICAgICAgIC8vXG4gICAgICAgIHIuZGlzYWJsZWQgPVxuICAgICAgICAgICh0aGlzLm1pbiAmJiBkLmNvbXBhcmUodGhpcy5taW4sICd5ZWFyJykgPT0gLTEpIHx8XG4gICAgICAgICAgKHRoaXMubWF4ICYmIGQuY29tcGFyZSh0aGlzLm1heCwgJ3llYXInKSA9PSAxKTtcbiAgICAgICAgLy9cbiAgICAgICAgaWYgKHIuZGlzYWJsZWQpIHtcbiAgICAgICAgICByLmNzc0NsYXNzID0ge1xuICAgICAgICAgICAgJ2F4LXN0YXRlLWRpc2FibGVkJzogci5kaXNhYmxlZCxcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHIuY3NzQ2xhc3MgPSB7XG4gICAgICAgICAgICAnYXgtc3RhdGUtdG9kYXknOiByLnRvZGF5LFxuICAgICAgICAgICAgJ2F4LXN0YXRlLXNlbGVjdGVkJzogci5zZWxlY3RlZCxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGFwcGx5Q2VsbENsYXNzKHIpO1xuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fbmF2VGV4dCA9IGAke3ZyLnN0YXJ0VGltZS55ZWFyfSAtICR7dnIuZW5kVGltZS55ZWFyfWA7XG4gICAgICB0aGlzLl90b2RheVRleHQgPSB0aGlzLl90b2RheS5mb3JtYXQoJ1lZWVknKTtcbiAgICB9XG4gICAgLy8gbW9udGggdmlld1xuICAgIGVsc2UgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnbW9udGhzJykge1xuICAgICAgY29uc3QgYSA9IHZyLmVudW11cmF0ZSgnbW9udGgnKTtcbiAgICAgIHRoaXMuX3Nsb3RzID0gYS5tYXAoKGQsIGkpID0+IHtcbiAgICAgICAgY29uc3QgcjogYW55ID0ge307XG4gICAgICAgIHIuZGF0ZSA9IGQuZGF0ZTtcbiAgICAgICAgci50ZXh0ID0gZC5mb3JtYXQoJ01NTScpO1xuICAgICAgICByLnRvb2x0aXAgPSBkLmZvcm1hdCgnTU1NTSBZWVlZJyk7XG4gICAgICAgIHIudG9kYXkgPSBkLmVxdWFsKHRoaXMuX3RvZGF5LCAnbW9udGgnKTtcbiAgICAgICAgLy9cbiAgICAgICAgci5kaXNhYmxlZCA9XG4gICAgICAgICAgKHRoaXMubWluICYmIGQuY29tcGFyZSh0aGlzLm1pbiwgJ21vbnRoJykgPT0gLTEpIHx8XG4gICAgICAgICAgKHRoaXMubWF4ICYmIGQuY29tcGFyZSh0aGlzLm1heCwgJ21vbnRoJykgPT0gMSk7XG4gICAgICAgIC8vXG4gICAgICAgIHIuc2VsZWN0ZWQgPVxuICAgICAgICAgIHRoaXMudmFsdWUgJiZcbiAgICAgICAgICB0aGlzLmRlcHRoID09ICdtb250aHMnICYmXG4gICAgICAgICAgZC5lcXVhbCh0aGlzLnZhbHVlLCAnbW9udGgnKTtcbiAgICAgICAgLy9cbiAgICAgICAgaWYgKHIuZGlzYWJsZWQpIHtcbiAgICAgICAgICByLmNzc0NsYXNzID0ge1xuICAgICAgICAgICAgJ2F4LXN0YXRlLWRpc2FibGVkJzogci5kaXNhYmxlZCxcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHIuY3NzQ2xhc3MgPSB7XG4gICAgICAgICAgICAnYXgtc3RhdGUtdG9kYXknOiByLnRvZGF5LFxuICAgICAgICAgICAgJ2F4LXN0YXRlLXNlbGVjdGVkJzogci5zZWxlY3RlZCxcbiAgICAgICAgICAgICdheC1zdGF0ZS1vdGhlcic6IGQueWVhciAhPSB0aGlzLl92aWV3U3RhcnREYXRlLnllYXIsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBhcHBseUNlbGxDbGFzcyhyKTtcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuX25hdlRleHQgPSB0aGlzLl92aWV3U3RhcnREYXRlLmZvcm1hdCgnWVlZWScpO1xuICAgICAgdGhpcy5fdG9kYXlUZXh0ID0gdGhpcy5fdG9kYXkuZm9ybWF0KCdNTU1NIFlZWVknKTtcbiAgICB9XG4gICAgLy8gZGF5IHZpZXdcbiAgICBlbHNlIHtcbiAgICAgIGNvbnN0IGEgPSB2ci5lbnVtdXJhdGUoJ2RheScpO1xuICAgICAgdGhpcy5fc2xvdHMgPSBhLm1hcCgoZCwgaSkgPT4ge1xuICAgICAgICBjb25zdCByOiBhbnkgPSB7fTtcbiAgICAgICAgci5kYXRlID0gZC5kYXRlO1xuICAgICAgICByLnRleHQgPSBkLmRheU9mTW9udGg7XG4gICAgICAgIHIudG9vbHRpcCA9IGQuZm9ybWF0KCk7XG4gICAgICAgIHIudG9kYXkgPSBkLmVxdWFsKHRoaXMuX3RvZGF5LCAnZGF5Jyk7XG4gICAgICAgIHIuc2VsZWN0ZWQgPSB0aGlzLnZhbHVlICYmIGQuZXF1YWwodGhpcy52YWx1ZSwgJ2RheScpO1xuICAgICAgICByLmhvbGlkYXkgPSB0aGlzLmlzSG9saWRheShkKSB8fCB0aGlzLmlzV2Vla2VuZChkKTtcbiAgICAgICAgci5kaXNhYmxlZCA9XG4gICAgICAgICAgKHRoaXMubWluICYmIGQuY29tcGFyZSh0aGlzLm1pbiwgJ2RheScpID09IC0xKSB8fFxuICAgICAgICAgICh0aGlzLm1heCAmJiBkLmNvbXBhcmUodGhpcy5tYXgsICdkYXknKSA9PSAxKSB8fFxuICAgICAgICAgIHRoaXMuaXNEaXNhYmxlZChkKTtcbiAgICAgICAgLy9cbiAgICAgICAgaWYgKHIuZGlzYWJsZWQpIHtcbiAgICAgICAgICByLmNzc0NsYXNzID0ge1xuICAgICAgICAgICAgJ2F4LXN0YXRlLWRpc2FibGVkJzogdHJ1ZSxcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHIuY3NzQ2xhc3MgPSB7XG4gICAgICAgICAgICAnYXgtc3RhdGUtdG9kYXknOiByLnRvZGF5LFxuICAgICAgICAgICAgJ2F4LXN0YXRlLXNlbGVjdGVkJzogci5zZWxlY3RlZCxcbiAgICAgICAgICAgICdheC1zdGF0ZS1ob2xpZGF5Jzogci5ob2xpZGF5XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByLmNzc0NsYXNzW2BheC1jb2wtc3RhcnQtJHt2ci5zdGFydFRpbWUuZGF5T2ZXZWVrfWBdID0gaSA9PSAwO1xuICAgICAgICBpZiAodGhpcy5jZWxsQ2xhc3MpXG4gICAgICAgICAgYXBwbHlDZWxsQ2xhc3Mocik7XG4gICAgICAgIHJldHVybiByO1xuICAgICAgfSk7XG4gICAgICB0aGlzLl9uYXZUZXh0ID0gdGhpcy5fdmlld1N0YXJ0RGF0ZS5mb3JtYXQoJ01NTU0gWVlZWScpO1xuICAgICAgdGhpcy5fdG9kYXlUZXh0ID0gdGhpcy5fdG9kYXkuZm9ybWF0KCk7XG4gICAgfVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9oYW5kbGVQcmV2Q2xpY2soKSB7XG4gICAgdGhpcy5pc1VzZXJJbnRlcmFjdGlvbiA9IHRydWU7XG4gICAgdGhpcy5wcmV2KCk7XG4gICAgdGhpcy5pc1VzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9oYW5kbGVOZXh0Q2xpY2soKSB7XG4gICAgdGhpcy5pc1VzZXJJbnRlcmFjdGlvbiA9IHRydWU7XG4gICAgdGhpcy5uZXh0KCk7XG4gICAgdGhpcy5pc1VzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9oYW5kbGVTbG90Q2xpY2soZTogTW91c2VFdmVudCwgc2xvdCkge1xuICAgIGlmIChzbG90LmRpc2FibGVkIHx8IHRoaXMuZGlzYWJsZWQpIHJldHVybjtcbiAgICAvL1xuICAgIHRoaXMub25TbG90Q2xpY2suZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBpdGVtOiBzbG90LmRhdGUsXG4gICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgICAgIG5hdGl2ZUV2ZW50OiBlLFxuICAgIH0pO1xuICAgIC8vXG4gICAgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnZGF5cycpIHtcbiAgICAgIHRoaXMuX3NldERhdGUoc2xvdC5kYXRlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnbW9udGhzJyAmJiB0aGlzLmRlcHRoID09ICdkYXlzJykge1xuICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gJ2RheXMnO1xuICAgICAgdGhpcy5uYXZUbyhzbG90LmRhdGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdtb250aHMnICYmIHRoaXMuZGVwdGggPT0gJ21vbnRocycpIHtcbiAgICAgIHRoaXMuX3NldERhdGUoc2xvdC5kYXRlKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdGhpcy5hY3RpdmVWaWV3ID09ICd5ZWFycycgJiZcbiAgICAgICh0aGlzLmRlcHRoID09ICdkYXlzJyB8fCB0aGlzLmRlcHRoID09ICdtb250aHMnKVxuICAgICkge1xuICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gJ21vbnRocyc7XG4gICAgICB0aGlzLm5hdlRvKHNsb3QuZGF0ZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ3llYXJzJyAmJiB0aGlzLmRlcHRoID09ICd5ZWFycycpIHtcbiAgICAgIHRoaXMuX3NldERhdGUoc2xvdC5kYXRlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX2hhbmRsZU5hdkNsaWNrKGU6IEFYQ2xpY2tFdmVudCB8IGFueSkge1xuICAgIHRoaXMuaXNVc2VySW50ZXJhY3Rpb24gPSB0cnVlO1xuICAgIHRoaXMudG9nZ2xlVmlldygpO1xuICAgIHRoaXMuaXNVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVWaWV3KCkge1xuICAgIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ2RheXMnKVxuICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gJ21vbnRocyc7XG4gICAgZWxzZSBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdtb250aHMnKVxuICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gJ3llYXJzJztcbiAgfVxuXG4gIHByb3RlY3RlZCBfaGFuZGxlT25PcHRpb25DaGFuZ2VkKGU6IEFYT3B0aW9uQ2hhbmdlZEV2ZW50KSB7XG4gICAgaWYgKFxuICAgICAgZS5uYW1lID09ICdkZXB0aCcgfHxcbiAgICAgIGUubmFtZSA9PSAnYWN0aXZlVmlldycgfHxcbiAgICAgIGUubmFtZSA9PSAnZGlzYWJsZWREYXRlcycgfHxcbiAgICAgIGUubmFtZSA9PSAnaG9saWRheURhdGVzJ1xuICAgICkge1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9XG4gICAgaWYgKGUubmFtZSA9PSAndHlwZScpIHtcbiAgICAgIHRoaXMuX3JlZnJlc2goKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVPblZhbHVlQ2hhbmdlZChlOiBBWFZhbHVlQ2hhbmdlZEV2ZW50KSB7XG4gICAgdGhpcy5fdmlld1N0YXJ0RGF0ZSA9IG5ldyBBWERhdGVUaW1lKGUudmFsdWUsIHRoaXMudHlwZSk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfaGFuZGxlR29Ub2RheSgpIHtcbiAgICB0aGlzLmlzVXNlckludGVyYWN0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLl9zZXREYXRlKHRoaXMuX3RvZGF5LmRhdGUpO1xuICAgIHRoaXMuZ29Ub2RheSgpO1xuICAgIHRoaXMuaXNVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTtcbiAgfVxuXG4gIG5leHQoKSB7XG4gICAgdGhpcy5fbmF2TmV4dFByZXYoZmFsc2UpO1xuICB9XG5cbiAgcHJldigpIHtcbiAgICB0aGlzLl9uYXZOZXh0UHJldih0cnVlKTtcbiAgfVxuXG4gIGZvY3VzKCkge1xuICAgIGNvbnN0IGZ1bmMgPSAoczogc3RyaW5nKSA9PiB0aGlzLmdldEhvc3RFbGVtZW50KCkucXVlcnlTZWxlY3RvcjxIVE1MRGl2RWxlbWVudD4ocyk7XG4gICAgY29uc3QgZGl2ID1cbiAgICAgIGZ1bmMoJy5heC1jYWxlbmRhci1zbG90cz5kaXYuYXgtc3RhdGUtc2VsZWN0ZWQnKSB8fFxuICAgICAgZnVuYygnLmF4LWNhbGVuZGFyLXNsb3RzPmRpdicpO1xuICAgIGRpdj8uZm9jdXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX25hdk5leHRQcmV2KHByZXY6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBzaWduID0gcHJldiA/IC0xIDogMTtcbiAgICBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdkYXlzJylcbiAgICAgIHRoaXMubmF2VG8odGhpcy5fdmlld1N0YXJ0RGF0ZS5hZGQoJ21vbnRoJywgc2lnbiAqIDEpKTtcbiAgICBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ21vbnRocycpXG4gICAgICB0aGlzLm5hdlRvKHRoaXMuX3ZpZXdTdGFydERhdGUuYWRkKCd5ZWFyJywgc2lnbiAqIDEpKTtcbiAgICBlbHNlIHRoaXMubmF2VG8odGhpcy5fdmlld1N0YXJ0RGF0ZS5hZGQoJ3llYXInLCBzaWduICogMTApKTtcbiAgfVxuXG4gIGdvVG9kYXkoKSB7XG4gICAgdGhpcy5uYXZUbyh0aGlzLl90b2RheSk7XG4gIH1cblxuICBuYXZUbyhkYXRlOiBEYXRlIHwgQVhEYXRlVGltZSkge1xuICAgIHRoaXMuX3ZpZXdTdGFydERhdGUgPSBBWERhdGVUaW1lLmNvbnZlcnQoXG4gICAgICBkYXRlLFxuICAgICAgdGhpcy5fdG9kYXkuY2FsZW5kYXIubmFtZSgpXG4gICAgKS5zdGFydE9mKCk7XG4gICAgY29uc3QgdnIgPSB0aGlzLmRpc3BsYXlSYW5nZTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICAgIHRoaXMub25OYXZpZ2F0ZS5lbWl0KHtcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0aGlzLmlzVXNlckludGVyYWN0aW9uLFxuICAgICAgc3RhcnQ6IHZyLnN0YXJ0VGltZT8uZGF0ZSxcbiAgICAgIGVuZDogdnIuZW5kVGltZT8uZGF0ZSxcbiAgICAgIGh0bWxFbGVtZW50OiB0aGlzLmdldEhvc3RFbGVtZW50KCksXG4gICAgfSk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgcHJpdmF0ZSBnZXQgX19ob3N0Q2xhc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCBfY2xhc3NlcyA9IHtcbiAgICAgICdheC1zdGF0ZS1kaXNhYmxlZCc6IHRoaXMuZGlzYWJsZWQsXG4gICAgfTtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoX2NsYXNzZXMpXG4gICAgICAuZmlsdGVyKGMgPT4gY1sxXSlcbiAgICAgIC5tYXAoYyA9PiBjWzBdKVxuICAgICAgLmpvaW4oJyAnKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldERhdGUodmFsdWU6IERhdGUpIHtcbiAgICBpZiAodGhpcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkKSByZXR1cm47XG4gICAgdGhpcy52YWx1ZSA9IEFYRGF0ZVRpbWUuY29udmVydChcbiAgICAgIHZhbHVlLFxuICAgICAgdGhpcy5fdG9kYXkuY2FsZW5kYXIubmFtZSgpXG4gICAgKS5zdGFydE9mKCkuZGF0ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc0Rpc2FibGVkKGRhdGU6IEFYRGF0ZVRpbWUpOiBib29sZWFuIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmRpc2FibGVkRGF0ZXMpICYmIHRoaXMuZGlzYWJsZWREYXRlcy5sZW5ndGggIT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWREYXRlcy5zb21lKGQgPT4gZGF0ZS5lcXVhbChkLCAnZGF5JykpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuZGlzYWJsZWREYXRlcyA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZERhdGVzKGRhdGUuZGF0ZSk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc0hvbGlkYXkoZGF0ZTogQVhEYXRlVGltZSk6IGJvb2xlYW4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuaG9saWRheURhdGVzKSAmJiB0aGlzLmhvbGlkYXlEYXRlcy5sZW5ndGggIT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuaG9saWRheURhdGVzLnNvbWUoZCA9PiBkYXRlLmVxdWFsKGQsICdkYXknKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5ob2xpZGF5RGF0ZXMgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHRoaXMuaG9saWRheURhdGVzKGRhdGUuZGF0ZSk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc1dlZWtlbmQoZGF0ZTogQVhEYXRlVGltZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHdlZWtlbmQgPSBBWENvbmZpZy5nZXQoXG4gICAgICBgZGF0ZVRpbWUuY2FsZW5kYXJzLiR7dGhpcy50eXBlfS53ZWVrZW5kYFxuICAgICkgYXMgbnVtYmVyW107XG4gICAgcmV0dXJuIHdlZWtlbmQuaW5jbHVkZXMoZGF0ZS5kYXlPZldlZWspO1xuICB9XG5cbiAgLy8gcHJvdGVjdGVkIF9waWNrZXJEYXlzOiBudW1iZXJbXSA9IFtdO1xuICAvLyBwcm90ZWN0ZWQgX3BpY2tlck1vbnRoczogeyB0ZXh0OiBzdHJpbmc7IHZhbHVlOiBudW1iZXIgfVtdID0gW107XG4gIC8vIHByb3RlY3RlZCBfcGlja2VyWWVhcnM6IG51bWJlcltdID0gW107XG5cbiAgLy8gcHJpdmF0ZSBfZ2VuZXJhdGVQaWNrZXJJdGVtcyh2aWV3KSB7XG4gIC8vICAgc3dpdGNoICh2aWV3KSB7XG4gIC8vICAgICBjYXNlICd5ZWFyJzpcbiAgLy8gICAgICAgdGhpcy5fcGlja2VyWWVhcnMgPSByYW5nZSgyMDAwLCAyMDUwLCAxKTtcbiAgLy8gICAgICAgYnJlYWs7XG4gIC8vICAgICBjYXNlICdtb250aCc6XG4gIC8vICAgICAgIHRoaXMuX3BpY2tlck1vbnRocyA9IG5ldyBBWERhdGVUaW1lUmFuZ2UoXG4gIC8vICAgICAgICAgdGhpcy5kaXNwbGF5UmFuZ2Uuc3RhcnRUaW1lLnN0YXJ0T2YoJ3llYXInKSxcbiAgLy8gICAgICAgICB0aGlzLmRpc3BsYXlSYW5nZS5zdGFydFRpbWUuZW5kT2YoJ3llYXInKVxuICAvLyAgICAgICApXG4gIC8vICAgICAgICAgLmVudW11cmF0ZSgnbW9udGgnKVxuICAvLyAgICAgICAgIC5tYXAoYyA9PiAoe1xuICAvLyAgICAgICAgICAgdGV4dDogYy5mb3JtYXQoJ01NTScpLFxuICAvLyAgICAgICAgICAgdmFsdWU6IGMubW9udGhPZlllYXIsXG4gIC8vICAgICAgICAgfSkpO1xuICAvLyAgICAgICBicmVhaztcbiAgLy8gICAgIGRlZmF1bHQ6XG4gIC8vICAgICAgIHRoaXMuX3BpY2tlckRheXMgPSBuZXcgQVhEYXRlVGltZVJhbmdlKFxuICAvLyAgICAgICAgIHRoaXMuZGlzcGxheVJhbmdlLnN0YXJ0VGltZS5zdGFydE9mKCdtb250aCcpLFxuICAvLyAgICAgICAgIHRoaXMuZGlzcGxheVJhbmdlLnN0YXJ0VGltZS5lbmRPZignbW9udGgnKVxuICAvLyAgICAgICApXG4gIC8vICAgICAgICAgLmVudW11cmF0ZSgnZGF5JylcbiAgLy8gICAgICAgICAubWFwKGMgPT4gYy5kYXlPZk1vbnRoKTtcbiAgLy8gICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAvLyAgICAgICBicmVhaztcbiAgLy8gICB9XG4gIC8vIH1cblxuICAvLyBwcm90ZWN0ZWQgX2hhbmRsZVBpY2tlckNoYW5nZShpdGVtOiBhbnksIHZpZXcpIHtcbiAgLy8gICBpZiAoIWl0ZW0pIHJldHVybjtcbiAgLy8gICBjb25zdCBkYXRlID0gdGhpcy5kaXNwbGF5UmFuZ2Uuc3RhcnRUaW1lO1xuICAvLyAgIHN3aXRjaCAodmlldykge1xuICAvLyAgICAgY2FzZSAneWVhcic6XG4gIC8vICAgICAgIHRoaXMuX3NldERhdGUoZGF0ZS5zZXQoJ3llYXInLCBpdGVtLnZhbHVlKS5kYXRlKTtcbiAgLy8gICAgICAgYnJlYWs7XG4gIC8vICAgICBjYXNlICdtb250aCc6XG4gIC8vICAgICAgIHRoaXMuX3NldERhdGUoZGF0ZS5zZXQoJ21vbnRoJywgaXRlbS52YWx1ZS52YWx1ZSkuZGF0ZSk7XG4gIC8vICAgICAgIHRoaXMuX2dlbmVyYXRlUGlja2VySXRlbXMoJ2RheScpO1xuICAvLyAgICAgICBicmVhaztcbiAgLy8gICAgIGRlZmF1bHQ6XG4gIC8vICAgICAgIHRoaXMuX3NldERhdGUoZGF0ZS5zZXQoJ2RheScsIGl0ZW0udmFsdWUpLmRhdGUpO1xuICAvLyAgICAgICBicmVhaztcbiAgLy8gICB9XG4gIC8vIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJpbnRlcmZhY2UgPT09ICdjYWxlbmRhcic7IGVsc2UgcGlja2VyVGVtcGxhdGVcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dOYXZpZ2F0aW9uXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtaGVhZGVyXCI+PC9uZy1jb250ZW50PlxuICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1oZWFkZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1oZWFkZXItaW5mb1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aXZlVmlldyA9PSAnZGF5cyc7IGVsc2UgZWxzZVRlbXBsYXRlXCI+XG4gICAgICAgICAgPGJ1dHRvbiBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b25cIiAoY2xpY2spPVwiX2hhbmRsZU5hdkNsaWNrKCRldmVudClcIj5cbiAgICAgICAgICAgIHt7IF9uYXZUZXh0LnNwbGl0KCcgJylbMV0gfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCIgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvblwiIChjbGljayk9XCJfaGFuZGxlTmF2Q2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAge3sgX25hdlRleHQuc3BsaXQoJyAnKVswXSB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNlbHNlVGVtcGxhdGU+XG4gICAgICAgICAgPGJ1dHRvbiBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b25cIiAoY2xpY2spPVwiX2hhbmRsZU5hdkNsaWNrKCRldmVudClcIj5cbiAgICAgICAgICAgIHt7IF9uYXZUZXh0IH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1oZWFkZXItYnV0dG9uc1wiPlxuICAgICAgICA8YnV0dG9uIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCIgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1idXR0b24taWNvblwiXG4gICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVQcmV2Q2xpY2soKVwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvblwiIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ2F4LWljb24tY2hldnJvbi1sZWZ0JzogIXJ0bCxcbiAgICAgICAgICAgICAgJ2F4LWljb24tY2hldnJvbi1yaWdodCc6IHJ0bFxuICAgICAgICAgICAgfVwiPjwvaT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIiBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1pY29uXCJcbiAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZU5leHRDbGljaygpXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uXCIgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnYXgtaWNvbi1jaGV2cm9uLWxlZnQnOiBydGwsXG4gICAgICAgICAgICAgICdheC1pY29uLWNoZXZyb24tcmlnaHQnOiAhcnRsXG4gICAgICAgICAgICB9XCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWJvZHlcIj5cbiAgICA8ZGl2IFtuZ1N3aXRjaF09XCJhY3RpdmVWaWV3XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIneWVhcnMnXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1zbG90cyBheC1jYWxlbmRhci1zbG90cy15ZWFyXCIgW25nQ2xhc3NdPVwieydheC1kZWZhdWx0JzohY2VsbFRlbXBsYXRlfVwiPlxuICAgICAgICAgIDxkaXYgdGFiaW5kZXg9XCIwXCIgKm5nRm9yPVwibGV0IHNsb3Qgb2YgX3Nsb3RzXCIgY2xhc3M9XCJheC1jYWxlbmRhci1zbG90XCIgW25nQ2xhc3NdPVwic2xvdC5jc3NDbGFzc1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZVNsb3RDbGljaygkZXZlbnQsIHNsb3QpXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2VsbFRlbXBsYXRlOyBlbHNlIHllYXJUcGxcIj5cbiAgICAgICAgICAgICAgPGRpdiA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNlbGxUZW1wbGF0ZTtjb250ZXh0OiB7ICRpbXBsaWNpdDoge3Nsb3Q6c2xvdH0gfVwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN5ZWFyVHBsPlxuICAgICAgICAgICAgICA8ZGl2IFt0aXRsZV09XCJzbG90LnRvb2x0aXBcIiA+XG4gICAgICAgICAgICAgICAge3sgc2xvdC50ZXh0IH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtb250aHMnXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1zbG90cyBheC1jYWxlbmRhci1zbG90cy1tb250aFwiIFtuZ0NsYXNzXT1cInsnYXgtZGVmYXVsdCc6IWNlbGxUZW1wbGF0ZX1cIj5cbiAgICAgICAgICA8ZGl2IHRhYmluZGV4PVwiMFwiICpuZ0Zvcj1cImxldCBzbG90IG9mIF9zbG90c1wiICBjbGFzcz1cImF4LWNhbGVuZGFyLXNsb3RcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwic2xvdC5jc3NDbGFzc1wiIChjbGljayk9XCJfaGFuZGxlU2xvdENsaWNrKCRldmVudCwgc2xvdClcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjZWxsVGVtcGxhdGU7IGVsc2UgbW9udGhUcGxcIj5cbiAgICAgICAgICAgICAgPGRpdiA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNlbGxUZW1wbGF0ZTtjb250ZXh0OiB7ICRpbXBsaWNpdDoge3Nsb3Q6c2xvdH0gfVwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNtb250aFRwbD5cbiAgICAgICAgICAgICAgPGRpdiBbdGl0bGVdPVwic2xvdC50b29sdGlwXCIgPlxuICAgICAgICAgICAgICAgIHt7IHNsb3QudGV4dCB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci13ZWVrXCI+XG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZCBvZiBfZGF5TmFtZXNcIj57eyBkIH19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItc2xvdHMgYXgtY2FsZW5kYXItc2xvdHMtZGF5XCIgW25nQ2xhc3NdPVwieydheC1kZWZhdWx0JzohY2VsbFRlbXBsYXRlfVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHNsb3Qgb2YgX3Nsb3RzXCI+XG4gICAgICAgICAgICA8ZGl2IHRhYmluZGV4PVwiMFwiIGNsYXNzPVwiYXgtY2FsZW5kYXItc2xvdFwiIFtuZ0NsYXNzXT1cInNsb3QuY3NzQ2xhc3NcIiAgXG4gICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlU2xvdENsaWNrKCRldmVudCwgc2xvdClcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNlbGxUZW1wbGF0ZTsgZWxzZSBkYXlUcGxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ID5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjZWxsVGVtcGxhdGU7Y29udGV4dDogeyAkaW1wbGljaXQ6IHtzbG90OnNsb3R9IH1cIj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkYXlUcGw+XG4gICAgICAgICAgICAgICAgPGRpdiBbdGl0bGVdPVwic2xvdC50b29sdGlwXCIgPlxuICAgICAgICAgICAgICAgICAge3sgc2xvdC50ZXh0IH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LWZvb3RlclwiPjwvbmctY29udGVudD5cbiAgPCEtLSA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItZm9vdGVyXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJheC10b2RheS1idXR0b25cIlxuICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICBbY2xhc3MuYXgtc3RhdGUtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiKGRpc2FibGVkIHx8IGlzRGlzYWJsZWQoX3RvZGF5KT90cnVlOm51bGwpXCJcbiAgICAgIChjbGljayk9XCJfaGFuZGxlR29Ub2RheSgpXCJcbiAgICAgICpuZ0lmPVwiYWN0aXZlVmlldyA9PSAnZGF5cydcIj5cbiAgICAgIHt7IF90b2RheVRleHQgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+IC0tPlxuPC9uZy1jb250YWluZXI+XG48bmctdGVtcGxhdGUgI3BpY2tlclRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItcGlja2VyXCI+Ly9UT0RPOiBwaWNrZXI8L2Rpdj5cbjwvbmctdGVtcGxhdGU+Il19
373
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvY2FsZW5kYXIvc3JjL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL2NhbGVuZGFyL3NyYy9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixFQUNqQix1QkFBdUIsRUFDdkIsV0FBVyxHQUdaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEUsT0FBTyxFQUlMLHNCQUFzQixFQUN0QixnQkFBZ0IsRUFDakIsTUFBTSwyQkFBMkIsQ0FBQztBQUduQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNuQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBRTNELE1Bc0NhLG1CQUNYLFNBQ0EsT0FBTyxDQUFDLENBQUEsZ0JBQXNCLENBQUEsRUFBRSxzQkFBc0IsRUFBRSx1QkFBdUIsQ0FBQztJQUVoRixJQUFXLFlBQVk7UUFDckIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ25ELFFBQVEsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUN2QixLQUFLLE9BQU87Z0JBQ1Ysd0NBQXdDO2dCQUN4QyxtQkFBbUI7Z0JBQ25CLHNCQUFzQjtnQkFDdEIsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3JDLElB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QUFXO3NCQUR0QixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWERhdGVUaW1lLCBBWERhdGVUaW1lUmFuZ2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvZGF0ZVRpbWUnO1xuaW1wb3J0IHtcbiAgQVhDbGlja0V2ZW50LFxuICBBWE9wdGlvbkNoYW5nZWRFdmVudCxcbiAgQVhWYWx1ZUNoYW5nZWRFdmVudCxcbiAgTVhJbnRlcmFjdGl2ZUNvbXBvbmVudCxcbiAgTVhWYWx1ZUNvbXBvbmVudFxufSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcblxuXG5pbXBvcnQgeyBBWENvbmZpZyB9IGZyb20gJ0BhY29yZXgvY29yZS9jb25maWcnO1xuXG5pbXBvcnQgeyBjbGFzc2VzIH0gZnJvbSAncG9seXR5cGUnO1xuaW1wb3J0IHsgTVhDYWxlbmRhckJhc2VDb21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyLmNsYXNzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtY2FsZW5kYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW5wdXRzOiBbXG4gICAgJ3J0bCcsXG4gICAgJ3JlYWRvbmx5JyxcbiAgICAndmFsdWUnLFxuICAgICduYW1lJyxcbiAgICAnZGlzYWJsZWQnLFxuICAgICdkZXB0aCcsXG4gICAgJ2FjdGl2ZVZpZXcnLFxuICAgICdtaW4nLFxuICAgICdtYXgnLFxuICAgICdkaXNhYmxlZERhdGVzJyxcbiAgICAnaG9saWRheURhdGVzJyxcbiAgICAndHlwZScsXG4gICAgJ2NlbGxUZW1wbGF0ZScsXG4gICAgJ2NlbGxDbGFzcycsXG4gICAgJ3Nob3dOYXZpZ2F0aW9uJ1xuICBdLFxuICBvdXRwdXRzOiBbXG4gICAgJ29uT3B0aW9uQ2hhbmdlZCcsXG4gICAgJ3ZhbHVlQ2hhbmdlJyxcbiAgICAnb25WYWx1ZUNoYW5nZWQnLFxuICAgICdvbkJsdXInLFxuICAgICdvbkZvY3VzJyxcbiAgICAnZGVwdGhDaGFuZ2UnLFxuICAgICd0eXBlQ2hhbmdlJyxcbiAgICAnYWN0aXZlVmlld0NoYW5nZScsXG4gICAgJ2Rpc2FibGVkRGF0ZXNDaGFuZ2UnLFxuICAgICdob2xpZGF5RGF0ZXNDaGFuZ2UnLFxuICAgICdvbk5hdmlnYXRlJyxcbiAgICAnb25TbG90Q2xpY2snXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQVhDYWxlbmRhckNvbXBvbmVudFxuICBleHRlbmRzXG4gIGNsYXNzZXMoTVhWYWx1ZUNvbXBvbmVudDxEYXRlPiwgTVhJbnRlcmFjdGl2ZUNvbXBvbmVudCwgTVhDYWxlbmRhckJhc2VDb21wb25lbnQpXG57XG4gIHB1YmxpYyBnZXQgZGlzcGxheVJhbmdlKCk6IEFYRGF0ZVRpbWVSYW5nZSB7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuX3ZpZXdTdGFydERhdGUgfHwgdGhpcy5fdG9kYXk7XG4gICAgc3dpdGNoICh0aGlzLmFjdGl2ZVZpZXcpIHtcbiAgICAgIGNhc2UgJ3llYXJzJzpcbiAgICAgICAgLy8gbGV0IHkgPSBjdXJyZW50LnN0YXJ0T2YoJ3llYXInKS55ZWFyO1xuICAgICAgICAvLyBsZXQgbWluID0geSAtIDM7XG4gICAgICAgIC8vIGxldCBtYXggPSBtaW4gKyAxMTtcbiAgICAgICAgbGV0IHkgPSBjdXJyZW50LnN0YXJ0T2YoJ3llYXInKS55ZWFyO1xuICAgICAgICBsZXQgbWluID0geSAtICh5ICUgMTApO1xuICAgICAgICBsZXQgbWF4ID0gbWluICsgOTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lUmFuZ2UoXG4gICAgICAgICAgQVhEYXRlVGltZS5mcm9tKHtcbiAgICAgICAgICAgIHllYXI6IG1pbixcbiAgICAgICAgICAgIG1vbnRoOiAxLFxuICAgICAgICAgICAgZGF0ZTogMSxcbiAgICAgICAgICAgIGNhbGVuZGFyOiB0aGlzLl92aWV3U3RhcnREYXRlLmNhbGVuZGFyLm5hbWUoKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBBWERhdGVUaW1lLmZyb20oe1xuICAgICAgICAgICAgeWVhcjogbWF4LFxuICAgICAgICAgICAgbW9udGg6IDEyLFxuICAgICAgICAgICAgZGF0ZTogMjgsXG4gICAgICAgICAgICBjYWxlbmRhcjogdGhpcy5fdmlld1N0YXJ0RGF0ZS5jYWxlbmRhci5uYW1lKCksXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgJ21vbnRocyc6XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZVJhbmdlKFxuICAgICAgICAgIGN1cnJlbnQuc3RhcnRPZigneWVhcicpLFxuICAgICAgICAgIGN1cnJlbnQuZW5kT2YoJ3llYXInKS5hZGQoJ2RheScsIC0xKVxuICAgICAgICApO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lUmFuZ2UoXG4gICAgICAgICAgY3VycmVudC5zdGFydE9mKCdtb250aCcpLFxuICAgICAgICAgIGN1cnJlbnQuZW5kT2YoJ21vbnRoJylcbiAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX3RvZGF5ID0gbmV3IEFYRGF0ZVRpbWUobmV3IERhdGUoKSwgdGhpcy50eXBlKTtcbiAgcHJpdmF0ZSBfdmlld1N0YXJ0RGF0ZSE6IEFYRGF0ZVRpbWU7XG5cbiAgcHJvdGVjdGVkIF9uYXZUZXh0OiBzdHJpbmcgPSAnJztcbiAgcHJvdGVjdGVkIF90b2RheVRleHQ6IHN0cmluZyA9ICcnO1xuXG4gIHByb3RlY3RlZCBfc2xvdHM6IGFueVtdID0gW107XG4gIHByb3RlY3RlZCBfZGF5TmFtZXM6IHN0cmluZ1tdID0gW107XG5cblxuICBwcml2YXRlIF9pbml0VmFsdWVzKCkge1xuICAgIHRoaXMuX3RvZGF5ID0gbmV3IEFYRGF0ZVRpbWUobmV3IERhdGUoKSwgdGhpcy50eXBlKTtcbiAgICB0aGlzLl9kYXlOYW1lcyA9IHRoaXMuX3RvZGF5LmNhbGVuZGFyLmRheVNob3J0TmFtZXM7XG4gIH1cblxuICBwcml2YXRlIF9yZWZyZXNoKCkge1xuICAgIHRoaXMuX2luaXRWYWx1ZXMoKTtcbiAgICB0aGlzLm5hdlRvKHRoaXMudmFsdWUgfHwgdGhpcy5fdG9kYXkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgdGhpcy5vblZhbHVlQ2hhbmdlZC5zdWJzY3JpYmUodGhpcy5faGFuZGxlT25WYWx1ZUNoYW5nZWQuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5vbk9wdGlvbkNoYW5nZWQuc3Vic2NyaWJlKHRoaXMuX2hhbmRsZU9uT3B0aW9uQ2hhbmdlZC5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLl9pbml0VmFsdWVzKCk7XG4gICAgaWYgKCF0aGlzLnZhbHVlKSB0aGlzLmdvVG9kYXkoKTtcbiAgfVxuXG5cbiAgcmVuZGVyKCkge1xuICAgIGlmICghdGhpcy5fdmlld1N0YXJ0RGF0ZSkgcmV0dXJuO1xuICAgIGNvbnN0IHZyID0gdGhpcy5kaXNwbGF5UmFuZ2U7XG4gICAgY29uc3QgYXBwbHlDZWxsQ2xhc3MgPSAoc2xvdDogYW55LCBjZWxsQ2xhc3M6IGFueSA9IHRoaXMuY2VsbENsYXNzKSA9PiB7XG4gICAgICBzd2l0Y2ggKHR5cGVvZiBjZWxsQ2xhc3MpIHtcbiAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICBjZWxsQ2xhc3Muc3BsaXQoJyAnKS5mb3JFYWNoKGMgPT4gc2xvdC5jc3NDbGFzc1tjXSA9IHRydWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICAgIE9iamVjdC5hc3NpZ24oc2xvdC5jc3NDbGFzcywgY2VsbENsYXNzKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgICAgIGFwcGx5Q2VsbENsYXNzKHNsb3QsIGNlbGxDbGFzcyhzbG90LmRhdGUpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgLy8geWVhciB2aWV3XG4gICAgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAneWVhcnMnKSB7XG4gICAgICBjb25zdCBhID0gdnIuZW51bXVyYXRlKCd5ZWFyJyk7XG4gICAgICB0aGlzLl9zbG90cyA9IGEubWFwKChkLCBpKSA9PiB7XG4gICAgICAgIGNvbnN0IHI6IGFueSA9IHt9O1xuICAgICAgICByLmRhdGUgPSBkLmRhdGU7XG4gICAgICAgIC8vXG4gICAgICAgIHIudGV4dCA9IGQuZm9ybWF0KCdZWVlZJyk7XG4gICAgICAgIHIudG9vbHRpcCA9IGQuZm9ybWF0KCdZWVlZJyk7XG4gICAgICAgIC8vXG4gICAgICAgIHIudG9kYXkgPSBkLmVxdWFsKHRoaXMuX3RvZGF5LCAneWVhcicpO1xuICAgICAgICAvL1xuICAgICAgICByLnNlbGVjdGVkID1cbiAgICAgICAgICB0aGlzLnZhbHVlICYmXG4gICAgICAgICAgdGhpcy5kZXB0aCA9PSAneWVhcnMnICYmXG4gICAgICAgICAgZC5lcXVhbCh0aGlzLnZhbHVlLCAneWVhcicpXG4gICAgICAgIC8vXG4gICAgICAgIHIuZGlzYWJsZWQgPVxuICAgICAgICAgICh0aGlzLm1pbiAmJiBkLmNvbXBhcmUodGhpcy5taW4sICd5ZWFyJykgPT0gLTEpIHx8XG4gICAgICAgICAgKHRoaXMubWF4ICYmIGQuY29tcGFyZSh0aGlzLm1heCwgJ3llYXInKSA9PSAxKTtcbiAgICAgICAgLy9cbiAgICAgICAgaWYgKHIuZGlzYWJsZWQpIHtcbiAgICAgICAgICByLmNzc0NsYXNzID0ge1xuICAgICAgICAgICAgJ2F4LXN0YXRlLWRpc2FibGVkJzogci5kaXNhYmxlZCxcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHIuY3NzQ2xhc3MgPSB7XG4gICAgICAgICAgICAnYXgtc3RhdGUtdG9kYXknOiByLnRvZGF5LFxuICAgICAgICAgICAgJ2F4LXN0YXRlLXNlbGVjdGVkJzogci5zZWxlY3RlZCxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGFwcGx5Q2VsbENsYXNzKHIpO1xuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fbmF2VGV4dCA9IGAke3ZyLnN0YXJ0VGltZS55ZWFyfSAtICR7dnIuZW5kVGltZS55ZWFyfWA7XG4gICAgICB0aGlzLl90b2RheVRleHQgPSB0aGlzLl90b2RheS5mb3JtYXQoJ1lZWVknKTtcbiAgICB9XG4gICAgLy8gbW9udGggdmlld1xuICAgIGVsc2UgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnbW9udGhzJykge1xuICAgICAgY29uc3QgYSA9IHZyLmVudW11cmF0ZSgnbW9udGgnKTtcbiAgICAgIHRoaXMuX3Nsb3RzID0gYS5tYXAoKGQsIGkpID0+IHtcbiAgICAgICAgY29uc3QgcjogYW55ID0ge307XG4gICAgICAgIHIuZGF0ZSA9IGQuZGF0ZTtcbiAgICAgICAgci50ZXh0ID0gZC5mb3JtYXQoJ01NTScpO1xuICAgICAgICByLnRvb2x0aXAgPSBkLmZvcm1hdCgnTU1NTSBZWVlZJyk7XG4gICAgICAgIHIudG9kYXkgPSBkLmVxdWFsKHRoaXMuX3RvZGF5LCAnbW9udGgnKTtcbiAgICAgICAgLy9cbiAgICAgICAgci5kaXNhYmxlZCA9XG4gICAgICAgICAgKHRoaXMubWluICYmIGQuY29tcGFyZSh0aGlzLm1pbiwgJ21vbnRoJykgPT0gLTEpIHx8XG4gICAgICAgICAgKHRoaXMubWF4ICYmIGQuY29tcGFyZSh0aGlzLm1heCwgJ21vbnRoJykgPT0gMSk7XG4gICAgICAgIC8vXG4gICAgICAgIHIuc2VsZWN0ZWQgPVxuICAgICAgICAgIHRoaXMudmFsdWUgJiZcbiAgICAgICAgICB0aGlzLmRlcHRoID09ICdtb250aHMnICYmXG4gICAgICAgICAgZC5lcXVhbCh0aGlzLnZhbHVlLCAnbW9udGgnKTtcbiAgICAgICAgLy9cbiAgICAgICAgaWYgKHIuZGlzYWJsZWQpIHtcbiAgICAgICAgICByLmNzc0NsYXNzID0ge1xuICAgICAgICAgICAgJ2F4LXN0YXRlLWRpc2FibGVkJzogci5kaXNhYmxlZCxcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHIuY3NzQ2xhc3MgPSB7XG4gICAgICAgICAgICAnYXgtc3RhdGUtdG9kYXknOiByLnRvZGF5LFxuICAgICAgICAgICAgJ2F4LXN0YXRlLXNlbGVjdGVkJzogci5zZWxlY3RlZCxcbiAgICAgICAgICAgICdheC1zdGF0ZS1vdGhlcic6IGQueWVhciAhPSB0aGlzLl92aWV3U3RhcnREYXRlLnllYXIsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBhcHBseUNlbGxDbGFzcyhyKTtcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuX25hdlRleHQgPSB0aGlzLl92aWV3U3RhcnREYXRlLmZvcm1hdCgnWVlZWScpO1xuICAgICAgdGhpcy5fdG9kYXlUZXh0ID0gdGhpcy5fdG9kYXkuZm9ybWF0KCdNTU1NIFlZWVknKTtcbiAgICB9XG4gICAgLy8gZGF5IHZpZXdcbiAgICBlbHNlIHtcbiAgICAgIGNvbnN0IGEgPSB2ci5lbnVtdXJhdGUoJ2RheScpO1xuICAgICAgdGhpcy5fc2xvdHMgPSBhLm1hcCgoZCwgaSkgPT4ge1xuICAgICAgICBjb25zdCByOiBhbnkgPSB7fTtcbiAgICAgICAgci5kYXRlID0gZC5kYXRlO1xuICAgICAgICByLnRleHQgPSBkLmRheU9mTW9udGg7XG4gICAgICAgIHIudG9vbHRpcCA9IGQuZm9ybWF0KCk7XG4gICAgICAgIHIudG9kYXkgPSBkLmVxdWFsKHRoaXMuX3RvZGF5LCAnZGF5Jyk7XG4gICAgICAgIHIuc2VsZWN0ZWQgPSB0aGlzLnZhbHVlICYmIGQuZXF1YWwodGhpcy52YWx1ZSwgJ2RheScpO1xuICAgICAgICByLmhvbGlkYXkgPSB0aGlzLmlzSG9saWRheShkKSB8fCB0aGlzLmlzV2Vla2VuZChkKTtcbiAgICAgICAgci5kaXNhYmxlZCA9XG4gICAgICAgICAgKHRoaXMubWluICYmIGQuY29tcGFyZSh0aGlzLm1pbiwgJ2RheScpID09IC0xKSB8fFxuICAgICAgICAgICh0aGlzLm1heCAmJiBkLmNvbXBhcmUodGhpcy5tYXgsICdkYXknKSA9PSAxKSB8fFxuICAgICAgICAgIHRoaXMuaXNEaXNhYmxlZChkKTtcbiAgICAgICAgLy9cbiAgICAgICAgaWYgKHIuZGlzYWJsZWQpIHtcbiAgICAgICAgICByLmNzc0NsYXNzID0ge1xuICAgICAgICAgICAgJ2F4LXN0YXRlLWRpc2FibGVkJzogdHJ1ZSxcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHIuY3NzQ2xhc3MgPSB7XG4gICAgICAgICAgICAnYXgtc3RhdGUtdG9kYXknOiByLnRvZGF5LFxuICAgICAgICAgICAgJ2F4LXN0YXRlLXNlbGVjdGVkJzogci5zZWxlY3RlZCxcbiAgICAgICAgICAgICdheC1zdGF0ZS1ob2xpZGF5Jzogci5ob2xpZGF5XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByLmNzc0NsYXNzW2BheC1jb2wtc3RhcnQtJHt2ci5zdGFydFRpbWUuZGF5T2ZXZWVrfWBdID0gaSA9PSAwO1xuICAgICAgICBpZiAodGhpcy5jZWxsQ2xhc3MpXG4gICAgICAgICAgYXBwbHlDZWxsQ2xhc3Mocik7XG4gICAgICAgIHJldHVybiByO1xuICAgICAgfSk7XG4gICAgICB0aGlzLl9uYXZUZXh0ID0gdGhpcy5fdmlld1N0YXJ0RGF0ZS5mb3JtYXQoJ01NTU0gWVlZWScpO1xuICAgICAgdGhpcy5fdG9kYXlUZXh0ID0gdGhpcy5fdG9kYXkuZm9ybWF0KCk7XG4gICAgfVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9oYW5kbGVQcmV2Q2xpY2soKSB7XG4gICAgdGhpcy5pc1VzZXJJbnRlcmFjdGlvbiA9IHRydWU7XG4gICAgdGhpcy5wcmV2KCk7XG4gICAgdGhpcy5pc1VzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9oYW5kbGVOZXh0Q2xpY2soKSB7XG4gICAgdGhpcy5pc1VzZXJJbnRlcmFjdGlvbiA9IHRydWU7XG4gICAgdGhpcy5uZXh0KCk7XG4gICAgdGhpcy5pc1VzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9oYW5kbGVTbG90Q2xpY2soZTogTW91c2VFdmVudCwgc2xvdCkge1xuICAgIGlmIChzbG90LmRpc2FibGVkIHx8IHRoaXMuZGlzYWJsZWQpIHJldHVybjtcbiAgICAvL1xuICAgIHRoaXMub25TbG90Q2xpY2suZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBpdGVtOiBzbG90LmRhdGUsXG4gICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgICAgIG5hdGl2ZUV2ZW50OiBlLFxuICAgIH0pO1xuICAgIC8vXG4gICAgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnZGF5cycpIHtcbiAgICAgIHRoaXMuX3NldERhdGUoc2xvdC5kYXRlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnbW9udGhzJyAmJiB0aGlzLmRlcHRoID09ICdkYXlzJykge1xuICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gJ2RheXMnO1xuICAgICAgdGhpcy5uYXZUbyhzbG90LmRhdGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdtb250aHMnICYmIHRoaXMuZGVwdGggPT0gJ21vbnRocycpIHtcbiAgICAgIHRoaXMuX3NldERhdGUoc2xvdC5kYXRlKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdGhpcy5hY3RpdmVWaWV3ID09ICd5ZWFycycgJiZcbiAgICAgICh0aGlzLmRlcHRoID09ICdkYXlzJyB8fCB0aGlzLmRlcHRoID09ICdtb250aHMnKVxuICAgICkge1xuICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gJ21vbnRocyc7XG4gICAgICB0aGlzLm5hdlRvKHNsb3QuZGF0ZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ3llYXJzJyAmJiB0aGlzLmRlcHRoID09ICd5ZWFycycpIHtcbiAgICAgIHRoaXMuX3NldERhdGUoc2xvdC5kYXRlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX2hhbmRsZU5hdkNsaWNrKGU6IEFYQ2xpY2tFdmVudCB8IGFueSkge1xuICAgIHRoaXMuaXNVc2VySW50ZXJhY3Rpb24gPSB0cnVlO1xuICAgIHRoaXMudG9nZ2xlVmlldygpO1xuICAgIHRoaXMuaXNVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVWaWV3KCkge1xuICAgIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ2RheXMnKVxuICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gJ21vbnRocyc7XG4gICAgZWxzZSBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdtb250aHMnKVxuICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gJ3llYXJzJztcbiAgfVxuXG4gIHByb3RlY3RlZCBfaGFuZGxlT25PcHRpb25DaGFuZ2VkKGU6IEFYT3B0aW9uQ2hhbmdlZEV2ZW50KSB7XG4gICAgaWYgKFxuICAgICAgZS5uYW1lID09ICdkZXB0aCcgfHxcbiAgICAgIGUubmFtZSA9PSAnYWN0aXZlVmlldycgfHxcbiAgICAgIGUubmFtZSA9PSAnZGlzYWJsZWREYXRlcycgfHxcbiAgICAgIGUubmFtZSA9PSAnaG9saWRheURhdGVzJ1xuICAgICkge1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9XG4gICAgaWYgKGUubmFtZSA9PSAndHlwZScpIHtcbiAgICAgIHRoaXMuX3JlZnJlc2goKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVPblZhbHVlQ2hhbmdlZChlOiBBWFZhbHVlQ2hhbmdlZEV2ZW50KSB7XG4gICAgdGhpcy5fdmlld1N0YXJ0RGF0ZSA9IG5ldyBBWERhdGVUaW1lKGUudmFsdWUsIHRoaXMudHlwZSk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfaGFuZGxlR29Ub2RheSgpIHtcbiAgICB0aGlzLmlzVXNlckludGVyYWN0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLl9zZXREYXRlKHRoaXMuX3RvZGF5LmRhdGUpO1xuICAgIHRoaXMuZ29Ub2RheSgpO1xuICAgIHRoaXMuaXNVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTtcbiAgfVxuXG4gIG5leHQoKSB7XG4gICAgdGhpcy5fbmF2TmV4dFByZXYoZmFsc2UpO1xuICB9XG5cbiAgcHJldigpIHtcbiAgICB0aGlzLl9uYXZOZXh0UHJldih0cnVlKTtcbiAgfVxuXG4gIGZvY3VzKCkge1xuICAgIGNvbnN0IGZ1bmMgPSAoczogc3RyaW5nKSA9PiB0aGlzLmdldEhvc3RFbGVtZW50KCkucXVlcnlTZWxlY3RvcjxIVE1MRGl2RWxlbWVudD4ocyk7XG4gICAgY29uc3QgZGl2ID1cbiAgICAgIGZ1bmMoJy5heC1jYWxlbmRhci1zbG90cz5kaXYuYXgtc3RhdGUtc2VsZWN0ZWQnKSB8fFxuICAgICAgZnVuYygnLmF4LWNhbGVuZGFyLXNsb3RzPmRpdicpO1xuICAgIGRpdj8uZm9jdXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX25hdk5leHRQcmV2KHByZXY6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBzaWduID0gcHJldiA/IC0xIDogMTtcbiAgICBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdkYXlzJylcbiAgICAgIHRoaXMubmF2VG8odGhpcy5fdmlld1N0YXJ0RGF0ZS5hZGQoJ21vbnRoJywgc2lnbiAqIDEpKTtcbiAgICBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ21vbnRocycpXG4gICAgICB0aGlzLm5hdlRvKHRoaXMuX3ZpZXdTdGFydERhdGUuYWRkKCd5ZWFyJywgc2lnbiAqIDEpKTtcbiAgICBlbHNlIHRoaXMubmF2VG8odGhpcy5fdmlld1N0YXJ0RGF0ZS5hZGQoJ3llYXInLCBzaWduICogMTApKTtcbiAgfVxuXG4gIGdvVG9kYXkoKSB7XG4gICAgdGhpcy5uYXZUbyh0aGlzLl90b2RheSk7XG4gIH1cblxuICBuYXZUbyhkYXRlOiBEYXRlIHwgQVhEYXRlVGltZSkge1xuICAgIHRoaXMuX3ZpZXdTdGFydERhdGUgPSBBWERhdGVUaW1lLmNvbnZlcnQoXG4gICAgICBkYXRlLFxuICAgICAgdGhpcy5fdG9kYXkuY2FsZW5kYXIubmFtZSgpXG4gICAgKS5zdGFydE9mKCk7XG4gICAgY29uc3QgdnIgPSB0aGlzLmRpc3BsYXlSYW5nZTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICAgIHRoaXMub25OYXZpZ2F0ZS5lbWl0KHtcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0aGlzLmlzVXNlckludGVyYWN0aW9uLFxuICAgICAgc3RhcnQ6IHZyLnN0YXJ0VGltZT8uZGF0ZSxcbiAgICAgIGVuZDogdnIuZW5kVGltZT8uZGF0ZSxcbiAgICAgIGh0bWxFbGVtZW50OiB0aGlzLmdldEhvc3RFbGVtZW50KCksXG4gICAgfSk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgcHJpdmF0ZSBnZXQgX19ob3N0Q2xhc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCBfY2xhc3NlcyA9IHtcbiAgICAgICdheC1zdGF0ZS1kaXNhYmxlZCc6IHRoaXMuZGlzYWJsZWQsXG4gICAgfTtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoX2NsYXNzZXMpXG4gICAgICAuZmlsdGVyKGMgPT4gY1sxXSlcbiAgICAgIC5tYXAoYyA9PiBjWzBdKVxuICAgICAgLmpvaW4oJyAnKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldERhdGUodmFsdWU6IERhdGUpIHtcbiAgICBpZiAodGhpcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkKSByZXR1cm47XG4gICAgdGhpcy52YWx1ZSA9IEFYRGF0ZVRpbWUuY29udmVydChcbiAgICAgIHZhbHVlLFxuICAgICAgdGhpcy5fdG9kYXkuY2FsZW5kYXIubmFtZSgpXG4gICAgKS5zdGFydE9mKCkuZGF0ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc0Rpc2FibGVkKGRhdGU6IEFYRGF0ZVRpbWUpOiBib29sZWFuIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmRpc2FibGVkRGF0ZXMpICYmIHRoaXMuZGlzYWJsZWREYXRlcy5sZW5ndGggIT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWREYXRlcy5zb21lKGQgPT4gZGF0ZS5lcXVhbChkLCAnZGF5JykpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuZGlzYWJsZWREYXRlcyA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZERhdGVzKGRhdGUuZGF0ZSk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc0hvbGlkYXkoZGF0ZTogQVhEYXRlVGltZSk6IGJvb2xlYW4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuaG9saWRheURhdGVzKSAmJiB0aGlzLmhvbGlkYXlEYXRlcy5sZW5ndGggIT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuaG9saWRheURhdGVzLnNvbWUoZCA9PiBkYXRlLmVxdWFsKGQsICdkYXknKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5ob2xpZGF5RGF0ZXMgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHRoaXMuaG9saWRheURhdGVzKGRhdGUuZGF0ZSk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc1dlZWtlbmQoZGF0ZTogQVhEYXRlVGltZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHdlZWtlbmQgPSBBWENvbmZpZy5nZXQoXG4gICAgICBgZGF0ZVRpbWUuY2FsZW5kYXJzLiR7dGhpcy50eXBlfS53ZWVrZW5kYFxuICAgICkgYXMgbnVtYmVyW107XG4gICAgcmV0dXJuIHdlZWtlbmQuaW5jbHVkZXMoZGF0ZS5kYXlPZldlZWspO1xuICB9XG5cbiAgLy8gcHJvdGVjdGVkIF9waWNrZXJEYXlzOiBudW1iZXJbXSA9IFtdO1xuICAvLyBwcm90ZWN0ZWQgX3BpY2tlck1vbnRoczogeyB0ZXh0OiBzdHJpbmc7IHZhbHVlOiBudW1iZXIgfVtdID0gW107XG4gIC8vIHByb3RlY3RlZCBfcGlja2VyWWVhcnM6IG51bWJlcltdID0gW107XG5cbiAgLy8gcHJpdmF0ZSBfZ2VuZXJhdGVQaWNrZXJJdGVtcyh2aWV3KSB7XG4gIC8vICAgc3dpdGNoICh2aWV3KSB7XG4gIC8vICAgICBjYXNlICd5ZWFyJzpcbiAgLy8gICAgICAgdGhpcy5fcGlja2VyWWVhcnMgPSByYW5nZSgyMDAwLCAyMDUwLCAxKTtcbiAgLy8gICAgICAgYnJlYWs7XG4gIC8vICAgICBjYXNlICdtb250aCc6XG4gIC8vICAgICAgIHRoaXMuX3BpY2tlck1vbnRocyA9IG5ldyBBWERhdGVUaW1lUmFuZ2UoXG4gIC8vICAgICAgICAgdGhpcy5kaXNwbGF5UmFuZ2Uuc3RhcnRUaW1lLnN0YXJ0T2YoJ3llYXInKSxcbiAgLy8gICAgICAgICB0aGlzLmRpc3BsYXlSYW5nZS5zdGFydFRpbWUuZW5kT2YoJ3llYXInKVxuICAvLyAgICAgICApXG4gIC8vICAgICAgICAgLmVudW11cmF0ZSgnbW9udGgnKVxuICAvLyAgICAgICAgIC5tYXAoYyA9PiAoe1xuICAvLyAgICAgICAgICAgdGV4dDogYy5mb3JtYXQoJ01NTScpLFxuICAvLyAgICAgICAgICAgdmFsdWU6IGMubW9udGhPZlllYXIsXG4gIC8vICAgICAgICAgfSkpO1xuICAvLyAgICAgICBicmVhaztcbiAgLy8gICAgIGRlZmF1bHQ6XG4gIC8vICAgICAgIHRoaXMuX3BpY2tlckRheXMgPSBuZXcgQVhEYXRlVGltZVJhbmdlKFxuICAvLyAgICAgICAgIHRoaXMuZGlzcGxheVJhbmdlLnN0YXJ0VGltZS5zdGFydE9mKCdtb250aCcpLFxuICAvLyAgICAgICAgIHRoaXMuZGlzcGxheVJhbmdlLnN0YXJ0VGltZS5lbmRPZignbW9udGgnKVxuICAvLyAgICAgICApXG4gIC8vICAgICAgICAgLmVudW11cmF0ZSgnZGF5JylcbiAgLy8gICAgICAgICAubWFwKGMgPT4gYy5kYXlPZk1vbnRoKTtcbiAgLy8gICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAvLyAgICAgICBicmVhaztcbiAgLy8gICB9XG4gIC8vIH1cblxuICAvLyBwcm90ZWN0ZWQgX2hhbmRsZVBpY2tlckNoYW5nZShpdGVtOiBhbnksIHZpZXcpIHtcbiAgLy8gICBpZiAoIWl0ZW0pIHJldHVybjtcbiAgLy8gICBjb25zdCBkYXRlID0gdGhpcy5kaXNwbGF5UmFuZ2Uuc3RhcnRUaW1lO1xuICAvLyAgIHN3aXRjaCAodmlldykge1xuICAvLyAgICAgY2FzZSAneWVhcic6XG4gIC8vICAgICAgIHRoaXMuX3NldERhdGUoZGF0ZS5zZXQoJ3llYXInLCBpdGVtLnZhbHVlKS5kYXRlKTtcbiAgLy8gICAgICAgYnJlYWs7XG4gIC8vICAgICBjYXNlICdtb250aCc6XG4gIC8vICAgICAgIHRoaXMuX3NldERhdGUoZGF0ZS5zZXQoJ21vbnRoJywgaXRlbS52YWx1ZS52YWx1ZSkuZGF0ZSk7XG4gIC8vICAgICAgIHRoaXMuX2dlbmVyYXRlUGlja2VySXRlbXMoJ2RheScpO1xuICAvLyAgICAgICBicmVhaztcbiAgLy8gICAgIGRlZmF1bHQ6XG4gIC8vICAgICAgIHRoaXMuX3NldERhdGUoZGF0ZS5zZXQoJ2RheScsIGl0ZW0udmFsdWUpLmRhdGUpO1xuICAvLyAgICAgICBicmVhaztcbiAgLy8gICB9XG4gIC8vIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJpbnRlcmZhY2UgPT09ICdjYWxlbmRhcic7IGVsc2UgcGlja2VyVGVtcGxhdGVcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dOYXZpZ2F0aW9uXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtaGVhZGVyXCI+PC9uZy1jb250ZW50PlxuICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1oZWFkZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1oZWFkZXItaW5mb1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aXZlVmlldyA9PSAnZGF5cyc7IGVsc2UgZWxzZVRlbXBsYXRlXCI+XG4gICAgICAgICAgPGJ1dHRvbiBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b25cIiAoY2xpY2spPVwiX2hhbmRsZU5hdkNsaWNrKCRldmVudClcIj5cbiAgICAgICAgICAgIHt7IF9uYXZUZXh0LnNwbGl0KCcgJylbMV0gfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCIgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvblwiIChjbGljayk9XCJfaGFuZGxlTmF2Q2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAge3sgX25hdlRleHQuc3BsaXQoJyAnKVswXSB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNlbHNlVGVtcGxhdGU+XG4gICAgICAgICAgPGJ1dHRvbiBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b25cIiAoY2xpY2spPVwiX2hhbmRsZU5hdkNsaWNrKCRldmVudClcIj5cbiAgICAgICAgICAgIHt7IF9uYXZUZXh0IH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1oZWFkZXItYnV0dG9uc1wiPlxuICAgICAgICA8YnV0dG9uIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCIgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1idXR0b24taWNvblwiXG4gICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVQcmV2Q2xpY2soKVwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvblwiIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ2F4LWljb24tY2hldnJvbi1sZWZ0JzogIXJ0bCxcbiAgICAgICAgICAgICAgJ2F4LWljb24tY2hldnJvbi1yaWdodCc6IHJ0bFxuICAgICAgICAgICAgfVwiPjwvaT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIiBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1pY29uXCJcbiAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZU5leHRDbGljaygpXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uXCIgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnYXgtaWNvbi1jaGV2cm9uLWxlZnQnOiBydGwsXG4gICAgICAgICAgICAgICdheC1pY29uLWNoZXZyb24tcmlnaHQnOiAhcnRsXG4gICAgICAgICAgICB9XCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWJvZHlcIj5cbiAgICA8ZGl2IFtuZ1N3aXRjaF09XCJhY3RpdmVWaWV3XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIneWVhcnMnXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1zbG90cyBheC1jYWxlbmRhci1zbG90cy15ZWFyXCIgW25nQ2xhc3NdPVwieydheC1kZWZhdWx0JzohY2VsbFRlbXBsYXRlfVwiPlxuICAgICAgICAgIDxkaXYgdGFiaW5kZXg9XCIwXCIgKm5nRm9yPVwibGV0IHNsb3Qgb2YgX3Nsb3RzXCIgY2xhc3M9XCJheC1jYWxlbmRhci1zbG90XCIgW25nQ2xhc3NdPVwic2xvdC5jc3NDbGFzc1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZVNsb3RDbGljaygkZXZlbnQsIHNsb3QpXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2VsbFRlbXBsYXRlOyBlbHNlIHllYXJUcGxcIj5cbiAgICAgICAgICAgICAgPGRpdiA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNlbGxUZW1wbGF0ZTtjb250ZXh0OiB7ICRpbXBsaWNpdDoge3Nsb3Q6c2xvdH0gfVwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN5ZWFyVHBsPlxuICAgICAgICAgICAgICA8ZGl2IFt0aXRsZV09XCJzbG90LnRvb2x0aXBcIiA+XG4gICAgICAgICAgICAgICAge3sgc2xvdC50ZXh0IH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtb250aHMnXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1zbG90cyBheC1jYWxlbmRhci1zbG90cy1tb250aFwiIFtuZ0NsYXNzXT1cInsnYXgtZGVmYXVsdCc6IWNlbGxUZW1wbGF0ZX1cIj5cbiAgICAgICAgICA8ZGl2IHRhYmluZGV4PVwiMFwiICpuZ0Zvcj1cImxldCBzbG90IG9mIF9zbG90c1wiICBjbGFzcz1cImF4LWNhbGVuZGFyLXNsb3RcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwic2xvdC5jc3NDbGFzc1wiIChjbGljayk9XCJfaGFuZGxlU2xvdENsaWNrKCRldmVudCwgc2xvdClcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjZWxsVGVtcGxhdGU7IGVsc2UgbW9udGhUcGxcIj5cbiAgICAgICAgICAgICAgPGRpdiA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNlbGxUZW1wbGF0ZTtjb250ZXh0OiB7ICRpbXBsaWNpdDoge3Nsb3Q6c2xvdH0gfVwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNtb250aFRwbD5cbiAgICAgICAgICAgICAgPGRpdiBbdGl0bGVdPVwic2xvdC50b29sdGlwXCIgPlxuICAgICAgICAgICAgICAgIHt7IHNsb3QudGV4dCB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci13ZWVrXCI+XG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZCBvZiBfZGF5TmFtZXNcIj57eyBkIH19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItc2xvdHMgYXgtY2FsZW5kYXItc2xvdHMtZGF5XCIgW25nQ2xhc3NdPVwieydheC1kZWZhdWx0JzohY2VsbFRlbXBsYXRlfVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHNsb3Qgb2YgX3Nsb3RzXCI+XG4gICAgICAgICAgICA8ZGl2IHRhYmluZGV4PVwiMFwiIGNsYXNzPVwiYXgtY2FsZW5kYXItc2xvdFwiIFtuZ0NsYXNzXT1cInNsb3QuY3NzQ2xhc3NcIiAgXG4gICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlU2xvdENsaWNrKCRldmVudCwgc2xvdClcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNlbGxUZW1wbGF0ZTsgZWxzZSBkYXlUcGxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ID5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjZWxsVGVtcGxhdGU7Y29udGV4dDogeyAkaW1wbGljaXQ6IHtzbG90OnNsb3R9IH1cIj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkYXlUcGw+XG4gICAgICAgICAgICAgICAgPGRpdiBbdGl0bGVdPVwic2xvdC50b29sdGlwXCIgPlxuICAgICAgICAgICAgICAgICAge3sgc2xvdC50ZXh0IH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LWZvb3RlclwiPjwvbmctY29udGVudD5cbjwvbmctY29udGFpbmVyPlxuPG5nLXRlbXBsYXRlICNwaWNrZXJUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLXBpY2tlclwiPi8vVE9ETzogcGlja2VyPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==