@wavemaker/app-ng-runtime 12.0.0-next.45503 → 12.0.0-next.46502

Sign up to get free protection for your applications and to get access to all the features.
Files changed (324) hide show
  1. app-ng-runtime/build-task/bundles/index.umd.js +53 -45
  2. app-ng-runtime/build-task/esm2022/basic/default/anchor/anchor.build.mjs +2 -2
  3. app-ng-runtime/build-task/esm2022/basic/default/html/html.build.mjs +2 -2
  4. app-ng-runtime/build-task/esm2022/basic/default/icon/icon.build.mjs +2 -2
  5. app-ng-runtime/build-task/esm2022/basic/default/label/label.build.mjs +2 -2
  6. app-ng-runtime/build-task/esm2022/basic/default/picture/picture.build.mjs +2 -2
  7. app-ng-runtime/build-task/esm2022/basic/default/spinner/spinner.build.mjs +2 -2
  8. app-ng-runtime/build-task/esm2022/basic/progress/progress-circle/progress-circle.build.mjs +7 -2
  9. app-ng-runtime/build-task/esm2022/basic/rich-text-editor/rich-text-editor.build.mjs +2 -2
  10. app-ng-runtime/build-task/esm2022/containers/accordion/accordion-pane/accordion-pane.build.mjs +2 -2
  11. app-ng-runtime/build-task/esm2022/containers/accordion/accordion.build.mjs +3 -3
  12. app-ng-runtime/build-task/esm2022/containers/tile/tile.build.mjs +2 -2
  13. app-ng-runtime/build-task/esm2022/containers/wizard/wizard.build.mjs +2 -2
  14. app-ng-runtime/build-task/esm2022/data/form/form-field/form-field.build.mjs +4 -4
  15. app-ng-runtime/build-task/esm2022/device/barcode-scanner/barcode-scanner.build.mjs +2 -2
  16. app-ng-runtime/build-task/esm2022/device/camera/camera.build.mjs +2 -2
  17. app-ng-runtime/build-task/esm2022/dialogs/alert-dialog/alert-dialog.build.mjs +2 -2
  18. app-ng-runtime/build-task/esm2022/input/calendar/calendar.build.mjs +2 -2
  19. app-ng-runtime/build-task/esm2022/input/chips/chips.build.mjs +2 -2
  20. app-ng-runtime/build-task/esm2022/input/color-picker/color-picker.build.mjs +3 -3
  21. app-ng-runtime/build-task/esm2022/input/currency/currency.build.mjs +3 -3
  22. app-ng-runtime/build-task/esm2022/input/default/button/button.build.mjs +2 -2
  23. app-ng-runtime/build-task/esm2022/input/default/button-group/button-group.build.mjs +2 -2
  24. app-ng-runtime/build-task/esm2022/input/default/switch/switch.build.mjs +2 -2
  25. app-ng-runtime/build-task/esm2022/input/file-upload/file-upload.build.mjs +6 -2
  26. app-ng-runtime/build-task/esm2022/page/footer/footer.build.mjs +2 -2
  27. app-ng-runtime/build-task/esm2022/page/header/header.build.mjs +2 -2
  28. app-ng-runtime/build-task/esm2022/page/layout.build.mjs +2 -2
  29. app-ng-runtime/build-task/esm2022/page/left-panel/left-panel.build.mjs +2 -2
  30. app-ng-runtime/build-task/esm2022/page/page.build.mjs +2 -2
  31. app-ng-runtime/build-task/esm2022/page/right-panel/right-panel.build.mjs +2 -2
  32. app-ng-runtime/build-task/esm2022/page/top-nav/top-nav.build.mjs +2 -2
  33. app-ng-runtime/build-task/fesm2022/index.mjs +53 -45
  34. app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
  35. app-ng-runtime/components/advanced/carousel/bundles/index.umd.js +1 -1
  36. app-ng-runtime/components/advanced/carousel/esm2022/carousel.animator.mjs +2 -2
  37. app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs +1 -1
  38. app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
  39. app-ng-runtime/components/base/bundles/index.umd.js +8 -7
  40. app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +3 -3
  41. app-ng-runtime/components/base/esm2022/utils/live-utils.mjs +8 -2
  42. app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +1 -6
  43. app-ng-runtime/components/base/fesm2022/index.mjs +8 -7
  44. app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
  45. app-ng-runtime/components/base/pipes/custom-pipes.d.ts +1 -1
  46. app-ng-runtime/components/basic/default/anchor/anchor.component.d.ts +1 -0
  47. app-ng-runtime/components/basic/default/audio/audio.component.d.ts +3 -0
  48. app-ng-runtime/components/basic/default/bundles/index.umd.js +39 -19
  49. app-ng-runtime/components/basic/default/esm2022/anchor/anchor.component.mjs +4 -4
  50. app-ng-runtime/components/basic/default/esm2022/anchor/anchor.props.mjs +2 -1
  51. app-ng-runtime/components/basic/default/esm2022/audio/audio.component.mjs +14 -6
  52. app-ng-runtime/components/basic/default/esm2022/audio/audio.props.mjs +2 -1
  53. app-ng-runtime/components/basic/default/esm2022/html/html.props.mjs +2 -1
  54. app-ng-runtime/components/basic/default/esm2022/icon/icon.component.mjs +6 -7
  55. app-ng-runtime/components/basic/default/esm2022/icon/icon.props.mjs +2 -1
  56. app-ng-runtime/components/basic/default/esm2022/iframe/iframe.component.mjs +3 -3
  57. app-ng-runtime/components/basic/default/esm2022/iframe/iframe.props.mjs +3 -2
  58. app-ng-runtime/components/basic/default/esm2022/label/label.props.mjs +1 -1
  59. app-ng-runtime/components/basic/default/esm2022/picture/picture.directive.mjs +2 -2
  60. app-ng-runtime/components/basic/default/esm2022/picture/picture.props.mjs +3 -1
  61. app-ng-runtime/components/basic/default/esm2022/spinner/spinner.props.mjs +3 -2
  62. app-ng-runtime/components/basic/default/esm2022/video/video.component.mjs +8 -4
  63. app-ng-runtime/components/basic/default/esm2022/video/video.props.mjs +2 -1
  64. app-ng-runtime/components/basic/default/fesm2022/index.mjs +39 -19
  65. app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
  66. app-ng-runtime/components/basic/default/icon/icon.component.d.ts +1 -0
  67. app-ng-runtime/components/basic/default/iframe/iframe.component.d.ts +1 -0
  68. app-ng-runtime/components/basic/default/picture/picture.directive.d.ts +2 -1
  69. app-ng-runtime/components/basic/default/video/video.component.d.ts +2 -0
  70. app-ng-runtime/components/basic/progress/bundles/index.umd.js +17 -9
  71. app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +9 -5
  72. app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.props.mjs +2 -1
  73. app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +8 -6
  74. app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.props.mjs +2 -1
  75. app-ng-runtime/components/basic/progress/fesm2022/index.mjs +17 -9
  76. app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
  77. app-ng-runtime/components/basic/progress/progress-bar/progress-bar.component.d.ts +2 -0
  78. app-ng-runtime/components/basic/progress/progress-circle/progress-circle.component.d.ts +3 -1
  79. app-ng-runtime/components/basic/rich-text-editor/bundles/index.umd.js +2 -0
  80. app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +2 -1
  81. app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.props.mjs +2 -1
  82. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs +2 -0
  83. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
  84. app-ng-runtime/components/basic/search/bundles/index.umd.js +16 -9
  85. app-ng-runtime/components/basic/search/esm2022/search.component.mjs +19 -13
  86. app-ng-runtime/components/basic/search/esm2022/search.props.mjs +2 -1
  87. app-ng-runtime/components/basic/search/fesm2022/index.mjs +16 -9
  88. app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
  89. app-ng-runtime/components/basic/search/search.component.d.ts +4 -2
  90. app-ng-runtime/components/chart/bundles/index.umd.js +1 -0
  91. app-ng-runtime/components/chart/esm2022/chart.utils.mjs +2 -1
  92. app-ng-runtime/components/chart/fesm2022/index.mjs +1 -0
  93. app-ng-runtime/components/chart/fesm2022/index.mjs.map +1 -1
  94. app-ng-runtime/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +1 -0
  95. app-ng-runtime/components/containers/accordion/bundles/index.umd.js +15 -9
  96. app-ng-runtime/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +13 -10
  97. app-ng-runtime/components/containers/accordion/esm2022/accordion.directive.mjs +4 -1
  98. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs +15 -9
  99. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs.map +1 -1
  100. app-ng-runtime/components/containers/panel/bundles/index.umd.js +14 -14
  101. app-ng-runtime/components/containers/panel/esm2022/panel.component.mjs +15 -15
  102. app-ng-runtime/components/containers/panel/fesm2022/index.mjs +14 -14
  103. app-ng-runtime/components/containers/panel/fesm2022/index.mjs.map +1 -1
  104. app-ng-runtime/components/containers/tabs/bundles/index.umd.js +2 -2
  105. app-ng-runtime/components/containers/tabs/esm2022/tabs.component.mjs +3 -3
  106. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs +2 -2
  107. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs.map +1 -1
  108. app-ng-runtime/components/containers/wizard/bundles/index.umd.js +6 -6
  109. app-ng-runtime/components/containers/wizard/esm2022/wizard.component.mjs +7 -7
  110. app-ng-runtime/components/containers/wizard/fesm2022/index.mjs +6 -6
  111. app-ng-runtime/components/containers/wizard/fesm2022/index.mjs.map +1 -1
  112. app-ng-runtime/components/data/form/bundles/index.umd.js +4 -0
  113. app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +5 -1
  114. app-ng-runtime/components/data/form/fesm2022/index.mjs +4 -0
  115. app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
  116. app-ng-runtime/components/data/form/form-field/form-field.directive.d.ts +1 -0
  117. app-ng-runtime/components/data/list/bundles/index.umd.js +19 -11
  118. app-ng-runtime/components/data/list/esm2022/list-item.directive.mjs +10 -1
  119. app-ng-runtime/components/data/list/esm2022/list.component.mjs +12 -12
  120. app-ng-runtime/components/data/list/fesm2022/index.mjs +20 -12
  121. app-ng-runtime/components/data/list/fesm2022/index.mjs.map +1 -1
  122. app-ng-runtime/components/data/live-table/bundles/index.umd.js +2 -2
  123. app-ng-runtime/components/data/live-table/esm2022/live-table.component.mjs +3 -3
  124. app-ng-runtime/components/data/live-table/fesm2022/index.mjs +2 -2
  125. app-ng-runtime/components/data/live-table/fesm2022/index.mjs.map +1 -1
  126. app-ng-runtime/components/data/pagination/bundles/index.umd.js +2 -0
  127. app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +3 -1
  128. app-ng-runtime/components/data/pagination/fesm2022/index.mjs +2 -0
  129. app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +1 -1
  130. app-ng-runtime/components/data/table/bundles/index.umd.js +44 -10
  131. app-ng-runtime/components/data/table/esm2022/table-column/table-column.directive.mjs +14 -5
  132. app-ng-runtime/components/data/table/esm2022/table.component.mjs +30 -7
  133. app-ng-runtime/components/data/table/esm2022/table.props.mjs +3 -1
  134. app-ng-runtime/components/data/table/fesm2022/index.mjs +45 -11
  135. app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
  136. app-ng-runtime/components/data/table/table.component.d.ts +8 -1
  137. app-ng-runtime/components/dialogs/alert-dialog/bundles/index.umd.js +6 -4
  138. app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +7 -5
  139. app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs +6 -4
  140. app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
  141. app-ng-runtime/components/dialogs/confirm-dialog/bundles/index.umd.js +8 -5
  142. app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +9 -6
  143. app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs +8 -5
  144. app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
  145. app-ng-runtime/components/dialogs/default/bundles/index.umd.js +9 -3
  146. app-ng-runtime/components/dialogs/default/dialog-header/dialog-header.component.d.ts +2 -1
  147. app-ng-runtime/components/dialogs/default/esm2022/base-dialog.mjs +2 -1
  148. app-ng-runtime/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +9 -4
  149. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +9 -3
  150. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  151. app-ng-runtime/components/dialogs/design-dialog/bundles/index.umd.js +4 -4
  152. app-ng-runtime/components/dialogs/design-dialog/esm2022/dialog.component.mjs +5 -5
  153. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs +4 -4
  154. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
  155. app-ng-runtime/components/dialogs/iframe-dialog/bundles/index.umd.js +9 -5
  156. app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +10 -6
  157. app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs +9 -5
  158. app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
  159. app-ng-runtime/components/dialogs/partial-dialog/bundles/index.umd.js +9 -5
  160. app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +10 -6
  161. app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs +9 -5
  162. app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
  163. app-ng-runtime/components/input/calendar/bundles/index.umd.js +2 -4
  164. app-ng-runtime/components/input/calendar/esm2022/calendar.component.mjs +3 -5
  165. app-ng-runtime/components/input/calendar/fesm2022/index.mjs +2 -4
  166. app-ng-runtime/components/input/calendar/fesm2022/index.mjs.map +1 -1
  167. app-ng-runtime/components/input/chips/bundles/index.umd.js +25 -7
  168. app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +25 -8
  169. app-ng-runtime/components/input/chips/esm2022/chips.props.mjs +2 -1
  170. app-ng-runtime/components/input/chips/fesm2022/index.mjs +25 -7
  171. app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
  172. app-ng-runtime/components/input/color-picker/bundles/index.umd.js +5 -3
  173. app-ng-runtime/components/input/color-picker/color-picker.component.d.ts +1 -0
  174. app-ng-runtime/components/input/color-picker/esm2022/color-picker.component.mjs +6 -5
  175. app-ng-runtime/components/input/color-picker/esm2022/color-picker.props.mjs +2 -1
  176. app-ng-runtime/components/input/color-picker/fesm2022/index.mjs +5 -3
  177. app-ng-runtime/components/input/color-picker/fesm2022/index.mjs.map +1 -1
  178. app-ng-runtime/components/input/currency/bundles/index.umd.js +4 -3
  179. app-ng-runtime/components/input/currency/currency.component.d.ts +1 -0
  180. app-ng-runtime/components/input/currency/esm2022/currency.component.mjs +6 -6
  181. app-ng-runtime/components/input/currency/esm2022/currency.props.mjs +2 -1
  182. app-ng-runtime/components/input/currency/fesm2022/index.mjs +4 -3
  183. app-ng-runtime/components/input/currency/fesm2022/index.mjs.map +1 -1
  184. app-ng-runtime/components/input/default/bundles/index.umd.js +184 -105
  185. app-ng-runtime/components/input/default/button/button.component.d.ts +1 -0
  186. app-ng-runtime/components/input/default/checkbox/checkbox.component.d.ts +1 -0
  187. app-ng-runtime/components/input/default/esm2022/base-form.component.mjs +3 -3
  188. app-ng-runtime/components/input/default/esm2022/button/button.component.mjs +1 -1
  189. app-ng-runtime/components/input/default/esm2022/button/button.props.mjs +2 -1
  190. app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +8 -7
  191. app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.component.mjs +7 -7
  192. app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.props.mjs +2 -1
  193. app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +21 -16
  194. app-ng-runtime/components/input/default/esm2022/number/number.component.mjs +5 -5
  195. app-ng-runtime/components/input/default/esm2022/number/number.props.mjs +3 -1
  196. app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +28 -23
  197. app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +20 -18
  198. app-ng-runtime/components/input/default/esm2022/select/select.props.mjs +2 -1
  199. app-ng-runtime/components/input/default/esm2022/switch/switch.component.mjs +6 -5
  200. app-ng-runtime/components/input/default/esm2022/switch/switch.props.mjs +2 -1
  201. app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +5 -5
  202. app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.props.mjs +2 -1
  203. app-ng-runtime/components/input/default/esm2022/text/color/input-color.component.mjs +5 -5
  204. app-ng-runtime/components/input/default/esm2022/text/color/input-color.props.mjs +2 -1
  205. app-ng-runtime/components/input/default/esm2022/text/email/input-email.component.mjs +5 -5
  206. app-ng-runtime/components/input/default/esm2022/text/email/input-email.props.mjs +2 -1
  207. app-ng-runtime/components/input/default/esm2022/text/locale/number-locale.mjs +66 -13
  208. app-ng-runtime/components/input/default/esm2022/text/number/input-number.component.mjs +5 -5
  209. app-ng-runtime/components/input/default/esm2022/text/number/input-number.props.mjs +2 -1
  210. app-ng-runtime/components/input/default/esm2022/text/text/input-text.component.mjs +5 -5
  211. app-ng-runtime/components/input/default/esm2022/text/text/input-text.props.mjs +2 -1
  212. app-ng-runtime/components/input/default/esm2022/textarea/textarea.component.mjs +6 -6
  213. app-ng-runtime/components/input/default/esm2022/textarea/textarea.props.mjs +2 -1
  214. app-ng-runtime/components/input/default/fesm2022/index.mjs +184 -105
  215. app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
  216. app-ng-runtime/components/input/default/number/number.component.d.ts +1 -0
  217. app-ng-runtime/components/input/default/select/select.component.d.ts +2 -0
  218. app-ng-runtime/components/input/default/text/calendar/input-calendar.component.d.ts +1 -0
  219. app-ng-runtime/components/input/default/text/color/input-color.component.d.ts +1 -0
  220. app-ng-runtime/components/input/default/text/email/input-email.component.d.ts +1 -0
  221. app-ng-runtime/components/input/default/text/locale/number-locale.d.ts +1 -0
  222. app-ng-runtime/components/input/default/text/number/input-number.component.d.ts +1 -0
  223. app-ng-runtime/components/input/default/text/text/input-text.component.d.ts +1 -0
  224. app-ng-runtime/components/input/default/textarea/textarea.component.d.ts +1 -0
  225. app-ng-runtime/components/input/epoch/base-date-time.component.d.ts +2 -1
  226. app-ng-runtime/components/input/epoch/bundles/index.umd.js +28 -21
  227. app-ng-runtime/components/input/epoch/date/date.component.d.ts +1 -0
  228. app-ng-runtime/components/input/epoch/date-time/date-time.component.d.ts +2 -1
  229. app-ng-runtime/components/input/epoch/esm2022/base-date-time.component.mjs +10 -6
  230. app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +8 -8
  231. app-ng-runtime/components/input/epoch/esm2022/date/date.props.mjs +2 -1
  232. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +9 -9
  233. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.props.mjs +2 -1
  234. app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +7 -7
  235. app-ng-runtime/components/input/epoch/esm2022/time/time.props.mjs +2 -1
  236. app-ng-runtime/components/input/epoch/fesm2022/index.mjs +25 -18
  237. app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
  238. app-ng-runtime/components/input/epoch/time/time.component.d.ts +1 -0
  239. app-ng-runtime/components/input/file-upload/bundles/index.umd.js +224 -121
  240. app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +220 -123
  241. app-ng-runtime/components/input/file-upload/esm2022/file-upload.props.mjs +7 -1
  242. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +225 -122
  243. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  244. app-ng-runtime/components/input/file-upload/file-upload.component.d.ts +18 -11
  245. app-ng-runtime/components/input/rating/bundles/index.umd.js +2 -2
  246. app-ng-runtime/components/input/rating/esm2022/rating.component.mjs +3 -3
  247. app-ng-runtime/components/input/rating/fesm2022/index.mjs +2 -2
  248. app-ng-runtime/components/input/rating/fesm2022/index.mjs.map +1 -1
  249. app-ng-runtime/components/input/slider/bundles/index.umd.js +5 -6
  250. app-ng-runtime/components/input/slider/esm2022/slider.component.mjs +6 -8
  251. app-ng-runtime/components/input/slider/esm2022/slider.props.mjs +2 -1
  252. app-ng-runtime/components/input/slider/fesm2022/index.mjs +5 -6
  253. app-ng-runtime/components/input/slider/fesm2022/index.mjs.map +1 -1
  254. app-ng-runtime/components/input/slider/slider.component.d.ts +1 -0
  255. app-ng-runtime/components/navigation/breadcrumb/bundles/index.umd.js +6 -6
  256. app-ng-runtime/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +7 -7
  257. app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs +6 -6
  258. app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
  259. app-ng-runtime/components/navigation/menu/bundles/index.umd.js +8 -6
  260. app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +8 -7
  261. app-ng-runtime/components/navigation/menu/esm2022/menu.props.mjs +2 -1
  262. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +8 -6
  263. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  264. app-ng-runtime/components/navigation/menu/menu.component.d.ts +1 -0
  265. app-ng-runtime/components/navigation/popover/bundles/index.umd.js +121 -13
  266. app-ng-runtime/components/navigation/popover/esm2022/popover.component.mjs +122 -15
  267. app-ng-runtime/components/navigation/popover/esm2022/popover.props.mjs +2 -1
  268. app-ng-runtime/components/navigation/popover/fesm2022/index.mjs +121 -13
  269. app-ng-runtime/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  270. app-ng-runtime/components/navigation/popover/popover.component.d.ts +15 -3
  271. app-ng-runtime/components/page/default/bundles/index.umd.js +2 -1
  272. app-ng-runtime/components/page/default/esm2022/page.props.mjs +4 -3
  273. app-ng-runtime/components/page/default/fesm2022/index.mjs +2 -1
  274. app-ng-runtime/components/page/default/fesm2022/index.mjs.map +1 -1
  275. app-ng-runtime/components/page/footer/bundles/index.umd.js +2 -1
  276. app-ng-runtime/components/page/footer/esm2022/footer.props.mjs +3 -2
  277. app-ng-runtime/components/page/footer/fesm2022/index.mjs +2 -1
  278. app-ng-runtime/components/page/footer/fesm2022/index.mjs.map +1 -1
  279. app-ng-runtime/components/page/header/bundles/index.umd.js +2 -1
  280. app-ng-runtime/components/page/header/esm2022/header.props.mjs +3 -2
  281. app-ng-runtime/components/page/header/fesm2022/index.mjs +2 -1
  282. app-ng-runtime/components/page/header/fesm2022/index.mjs.map +1 -1
  283. app-ng-runtime/components/page/left-panel/bundles/index.umd.js +2 -1
  284. app-ng-runtime/components/page/left-panel/esm2022/left-panel.props.mjs +3 -2
  285. app-ng-runtime/components/page/left-panel/fesm2022/index.mjs +2 -1
  286. app-ng-runtime/components/page/left-panel/fesm2022/index.mjs.map +1 -1
  287. app-ng-runtime/components/page/right-panel/bundles/index.umd.js +2 -1
  288. app-ng-runtime/components/page/right-panel/esm2022/right-panel.props.mjs +3 -2
  289. app-ng-runtime/components/page/right-panel/fesm2022/index.mjs +2 -1
  290. app-ng-runtime/components/page/right-panel/fesm2022/index.mjs.map +1 -1
  291. app-ng-runtime/components/page/top-nav/bundles/index.umd.js +2 -1
  292. app-ng-runtime/components/page/top-nav/esm2022/top-nav.props.mjs +3 -2
  293. app-ng-runtime/components/page/top-nav/fesm2022/index.mjs +2 -1
  294. app-ng-runtime/components/page/top-nav/fesm2022/index.mjs.map +1 -1
  295. app-ng-runtime/core/bundles/index.umd.js +15 -13
  296. app-ng-runtime/core/esm2022/public_api.mjs +2 -2
  297. app-ng-runtime/core/esm2022/utils/build-utils.mjs +7 -7
  298. app-ng-runtime/core/esm2022/utils/utils.mjs +4 -5
  299. app-ng-runtime/core/fesm2022/index.mjs +11 -11
  300. app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
  301. app-ng-runtime/core/public_api.d.ts +1 -1
  302. app-ng-runtime/core/utils/utils.d.ts +1 -1
  303. app-ng-runtime/mobile/components/device/barcode-scanner/bundles/index.umd.js +2 -1
  304. app-ng-runtime/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.props.mjs +3 -2
  305. app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs +2 -1
  306. app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs.map +1 -1
  307. app-ng-runtime/mobile/components/device/camera/bundles/index.umd.js +2 -1
  308. app-ng-runtime/mobile/components/device/camera/esm2022/camera.props.mjs +3 -2
  309. app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs +2 -1
  310. app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs.map +1 -1
  311. app-ng-runtime/package.json +1 -1
  312. app-ng-runtime/runtime/base/bundles/index.umd.js +6 -4
  313. app-ng-runtime/runtime/base/components/app-component/app.component.d.ts +2 -3
  314. app-ng-runtime/runtime/base/esm2022/components/app-component/app.component.mjs +5 -5
  315. app-ng-runtime/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +5 -4
  316. app-ng-runtime/runtime/base/fesm2022/index.mjs +6 -4
  317. app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
  318. app-ng-runtime/runtime/base/guards/can-deactivate-page.guard.d.ts +2 -1
  319. app-ng-runtime/scripts/datatable/datatable.js +33 -32
  320. app-ng-runtime/variables/bundles/index.umd.js +34 -16
  321. app-ng-runtime/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +35 -17
  322. app-ng-runtime/variables/fesm2022/index.mjs +34 -16
  323. app-ng-runtime/variables/fesm2022/index.mjs.map +1 -1
  324. app-ng-runtime/variables/manager/variable/web-socket-variable.manager.d.ts +0 -4
@@ -608,17 +608,15 @@ export class CalendarComponent extends StylableComponent {
608
608
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._datepicker = _t.first);
609
609
  } }, features: [i0.ɵɵProvidersFeature([
610
610
  provideAsWidgetRef(CalendarComponent)
611
- ]), i0.ɵɵInheritDefinitionFeature], attrs: _c2, decls: 2, vars: 1, consts: [["calendar", ""]], template: function CalendarComponent_Template(rf, ctx) { if (rf & 1) {
611
+ ]), i0.ɵɵInheritDefinitionFeature], attrs: _c2, decls: 2, vars: 0, consts: [["calendar", ""]], template: function CalendarComponent_Template(rf, ctx) { if (rf & 1) {
612
612
  i0.ɵɵelement(0, "div", null, 0);
613
- } if (rf & 2) {
614
- i0.ɵɵattribute("aria-label", ctx.view || "month");
615
613
  } }, styles: [".fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc-unselectable{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.fc{display:flex;flex-direction:column;font-size:1em}.fc,.fc *,.fc *:before,.fc *:after{box-sizing:border-box}.fc table{border-collapse:collapse;border-spacing:0;font-size:1em}.fc th{text-align:center}.fc th,.fc td{vertical-align:top;padding:0}.fc a[data-navlink]{cursor:pointer}.fc a[data-navlink]:hover{text-decoration:underline}.fc-direction-ltr{direction:ltr;text-align:left}.fc-direction-rtl{direction:rtl;text-align:right}.fc-theme-standard td,.fc-theme-standard th{border:1px solid #ddd;border:1px solid var(--fc-border-color, #ddd)}.fc-liquid-hack td,.fc-liquid-hack th{position:relative}@font-face{font-family:fcicons;src:url(data:application/x-font-ttf;charset=utf-8;base64,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) format(\"truetype\");font-weight:400;font-style:normal}.fc-icon{display:inline-block;width:1em;height:1em;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-family:fcicons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fc-icon-chevron-left:before{content:\"\\e900\"}.fc-icon-chevron-right:before{content:\"\\e901\"}.fc-icon-chevrons-left:before{content:\"\\e902\"}.fc-icon-chevrons-right:before{content:\"\\e903\"}.fc-icon-minus-square:before{content:\"\\e904\"}.fc-icon-plus-square:before{content:\"\\e905\"}.fc-icon-x:before{content:\"\\e906\"}.fc .fc-button{border-radius:0;overflow:visible;text-transform:none;margin:0;font-family:inherit;font-size:inherit;line-height:inherit}.fc .fc-button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.fc .fc-button{-webkit-appearance:button}.fc .fc-button:not(:disabled){cursor:pointer}.fc .fc-button::-moz-focus-inner{padding:0;border-style:none}.fc .fc-button{display:inline-block;font-weight:400;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.4em .65em;font-size:1em;line-height:1.5;border-radius:.25em}.fc .fc-button:hover{text-decoration:none}.fc .fc-button:focus{outline:0;box-shadow:0 0 0 .2rem #2c3e5040}.fc .fc-button:disabled{opacity:.65}.fc .fc-button-primary{color:#fff;color:var(--fc-button-text-color, #fff);background-color:#2c3e50;background-color:var(--fc-button-bg-color, #2C3E50);border-color:#2c3e50;border-color:var(--fc-button-border-color, #2C3E50)}.fc .fc-button-primary:hover{color:#fff;color:var(--fc-button-text-color, #fff);background-color:#1e2b37;background-color:var(--fc-button-hover-bg-color, #1e2b37);border-color:#1a252f;border-color:var(--fc-button-hover-border-color, #1a252f)}.fc .fc-button-primary:disabled{color:#fff;color:var(--fc-button-text-color, #fff);background-color:#2c3e50;background-color:var(--fc-button-bg-color, #2C3E50);border-color:#2c3e50;border-color:var(--fc-button-border-color, #2C3E50)}.fc .fc-button-primary:focus{box-shadow:0 0 0 .2rem #4c5b6a80}.fc .fc-button-primary:not(:disabled):active,.fc .fc-button-primary:not(:disabled).fc-button-active{color:#fff;color:var(--fc-button-text-color, #fff);background-color:#1a252f;background-color:var(--fc-button-active-bg-color, #1a252f);border-color:#151e27;border-color:var(--fc-button-active-border-color, #151e27)}.fc .fc-button-primary:not(:disabled):active:focus,.fc .fc-button-primary:not(:disabled).fc-button-active:focus{box-shadow:0 0 0 .2rem #4c5b6a80}.fc .fc-button .fc-icon{vertical-align:middle;font-size:1.5em}.fc .fc-button-group{position:relative;display:inline-flex;vertical-align:middle}.fc .fc-button-group>.fc-button{position:relative;flex:1 1 auto}.fc .fc-button-group>.fc-button:hover{z-index:1}.fc .fc-button-group>.fc-button:focus,.fc .fc-button-group>.fc-button:active,.fc .fc-button-group>.fc-button.fc-button-active{z-index:1}.fc-direction-ltr .fc-button-group>.fc-button:not(:first-child){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.fc-direction-ltr .fc-button-group>.fc-button:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.fc-direction-rtl .fc-button-group>.fc-button:not(:first-child){margin-right:-1px;border-top-right-radius:0;border-bottom-right-radius:0}.fc-direction-rtl .fc-button-group>.fc-button:not(:last-child){border-top-left-radius:0;border-bottom-left-radius:0}.fc .fc-toolbar{display:flex;justify-content:space-between;align-items:center}.fc .fc-toolbar.fc-header-toolbar{margin-bottom:1.5em}.fc .fc-toolbar.fc-footer-toolbar{margin-top:1.5em}.fc .fc-toolbar-title{font-size:1.75em;margin:0}.fc-direction-ltr .fc-toolbar>*>:not(:first-child){margin-left:.75em}.fc-direction-rtl .fc-toolbar>*>:not(:first-child){margin-right:.75em}.fc-direction-rtl .fc-toolbar-ltr{flex-direction:row-reverse}.fc .fc-scroller{-webkit-overflow-scrolling:touch;position:relative}.fc .fc-scroller-liquid{height:100%}.fc .fc-scroller-liquid-absolute{position:absolute;inset:0}.fc .fc-scroller-harness{position:relative;overflow:hidden;direction:ltr}.fc .fc-scroller-harness-liquid{height:100%}.fc-direction-rtl .fc-scroller-harness>.fc-scroller{direction:rtl}.fc-theme-standard .fc-scrollgrid{border:1px solid #ddd;border:1px solid var(--fc-border-color, #ddd)}.fc .fc-scrollgrid,.fc .fc-scrollgrid table{width:100%;table-layout:fixed}.fc .fc-scrollgrid table{border-top-style:hidden;border-left-style:hidden;border-right-style:hidden}.fc .fc-scrollgrid{border-collapse:separate;border-right-width:0;border-bottom-width:0}.fc .fc-scrollgrid-liquid{height:100%}.fc .fc-scrollgrid-section{height:1px}.fc .fc-scrollgrid-section>td{height:1px}.fc .fc-scrollgrid-section table{height:1px}.fc .fc-scrollgrid-section-liquid{height:auto}.fc .fc-scrollgrid-section-liquid>td{height:100%}.fc .fc-scrollgrid-section>*{border-top-width:0;border-left-width:0}.fc .fc-scrollgrid-section-header>*,.fc .fc-scrollgrid-section-footer>*{border-bottom-width:0}.fc .fc-scrollgrid-section-body table,.fc .fc-scrollgrid-section-footer table{border-bottom-style:hidden}.fc .fc-scrollgrid-section-sticky>*{background:#fff;background:var(--fc-page-bg-color, #fff);position:-webkit-sticky;position:sticky;z-index:2}.fc .fc-scrollgrid-section-header.fc-scrollgrid-section-sticky>*{top:0}.fc .fc-scrollgrid-section-footer.fc-scrollgrid-section-sticky>*{bottom:0}.fc .fc-scrollgrid-sticky-shim{height:1px;margin-bottom:-1px}.fc-sticky{position:-webkit-sticky;position:sticky}.fc .fc-view-harness{flex-grow:1;position:relative}.fc .fc-view-harness-active>.fc-view{position:absolute;inset:0}.fc .fc-col-header-cell-cushion{display:inline-block;padding:2px 4px}.fc .fc-bg-event,.fc .fc-non-business,.fc .fc-highlight{position:absolute;inset:0}.fc .fc-non-business{background:#d7d7d74d;background:var(--fc-non-business-color, rgba(215, 215, 215, .3))}.fc .fc-bg-event{background:#8fdf82;background:var(--fc-bg-event-color, rgb(143, 223, 130));opacity:.3;opacity:var(--fc-bg-event-opacity, .3)}.fc .fc-bg-event .fc-event-title{margin:.5em;font-size:.85em;font-size:var(--fc-small-font-size, .85em);font-style:italic}.fc .fc-highlight{background:#bce8f14d;background:var(--fc-highlight-color, rgba(188, 232, 241, .3))}.fc .fc-cell-shaded,.fc .fc-day-disabled{background:#d0d0d04d;background:var(--fc-neutral-bg-color, rgba(208, 208, 208, .3))}a.fc-event,a.fc-event:hover{text-decoration:none}.fc-event[href],.fc-event.fc-event-draggable{cursor:pointer}.fc-event .fc-event-main{position:relative;z-index:2}.fc-event-dragging:not(.fc-event-selected){opacity:.75}.fc-event-dragging.fc-event-selected{box-shadow:0 2px 7px #0000004d}.fc-event .fc-event-resizer{display:none;position:absolute;z-index:4}.fc-event:hover .fc-event-resizer,.fc-event-selected .fc-event-resizer{display:block}.fc-event-selected .fc-event-resizer{border-radius:4px;border-radius:calc(var(--fc-event-resizer-dot-total-width, 8px) / 2);border-width:1px;border-width:var(--fc-event-resizer-dot-border-width, 1px);width:8px;width:var(--fc-event-resizer-dot-total-width, 8px);height:8px;height:var(--fc-event-resizer-dot-total-width, 8px);border-style:solid;border-color:inherit;background:#fff;background:var(--fc-page-bg-color, #fff)}.fc-event-selected .fc-event-resizer:before{content:\"\";position:absolute;inset:-20px}.fc-event-selected{box-shadow:0 2px 5px #0003}.fc-event-selected:before{content:\"\";position:absolute;z-index:3;inset:0}.fc-event-selected:after{content:\"\";background:#00000040;background:var(--fc-event-selected-overlay-color, rgba(0, 0, 0, .25));position:absolute;z-index:1;inset:-1px}.fc-h-event{display:block;border:1px solid #3788d8;border:1px solid var(--fc-event-border-color, #3788d8);background-color:#3788d8;background-color:var(--fc-event-bg-color, #3788d8)}.fc-h-event .fc-event-main{color:#fff;color:var(--fc-event-text-color, #fff)}.fc-h-event .fc-event-main-frame{display:flex}.fc-h-event .fc-event-time{max-width:100%;overflow:hidden}.fc-h-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-width:0}.fc-h-event .fc-event-title{display:inline-block;vertical-align:top;left:0;right:0;max-width:100%;overflow:hidden}.fc-h-event.fc-event-selected:before{top:-10px;bottom:-10px}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-start),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-end){border-top-left-radius:0;border-bottom-left-radius:0;border-left-width:0}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-end),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-start){border-top-right-radius:0;border-bottom-right-radius:0;border-right-width:0}.fc-h-event:not(.fc-event-selected) .fc-event-resizer{top:0;bottom:0;width:8px;width:var(--fc-event-resizer-thickness, 8px)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end{cursor:w-resize;left:-4px;left:calc(var(--fc-event-resizer-thickness, 8px) / -2)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start{cursor:e-resize;right:-4px;right:calc(var(--fc-event-resizer-thickness, 8px) / -2)}.fc-h-event.fc-event-selected .fc-event-resizer{top:50%;margin-top:-4px;margin-top:calc(var(--fc-event-resizer-dot-total-width, 8px) / -2)}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-start,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-end{left:-4px;left:calc(var(--fc-event-resizer-dot-total-width, 8px) / -2)}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-end,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-start{right:-4px;right:calc(var(--fc-event-resizer-dot-total-width, 8px) / -2)}:root{--fc-daygrid-event-dot-width: 8px}.fc .fc-popover{position:fixed;top:0;box-shadow:0 2px 6px #00000026}.fc .fc-popover-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:3px 4px}.fc .fc-popover-title{margin:0 2px}.fc .fc-popover-close{cursor:pointer;opacity:.65;font-size:1.1em}.fc-theme-standard .fc-popover{border:1px solid #ddd;border:1px solid var(--fc-border-color, #ddd);background:#fff;background:var(--fc-page-bg-color, #fff)}.fc-theme-standard .fc-popover-header{background:#d0d0d04d;background:var(--fc-neutral-bg-color, rgba(208, 208, 208, .3))}.fc-daygrid-day-frame:before,.fc-daygrid-day-events:before,.fc-daygrid-event-harness:before{content:\"\";clear:both;display:table}.fc-daygrid-day-frame:after,.fc-daygrid-day-events:after,.fc-daygrid-event-harness:after{content:\"\";clear:both;display:table}.fc .fc-daygrid-body{position:relative;z-index:1}.fc .fc-daygrid-day.fc-day-today{background-color:#ffdc2826;background-color:var(--fc-today-bg-color, rgba(255, 220, 40, .15))}.fc .fc-daygrid-day-frame{position:relative;min-height:100%}.fc .fc-daygrid-day-top{display:flex;flex-direction:row-reverse}.fc .fc-day-other .fc-daygrid-day-top{opacity:.3}.fc .fc-daygrid-day-number{position:relative;z-index:4;padding:4px}.fc .fc-daygrid-day-events{margin-top:1px}.fc .fc-daygrid-body-balanced .fc-daygrid-day-events{position:absolute;left:0;right:0}.fc .fc-daygrid-body-unbalanced .fc-daygrid-day-events{position:relative;min-height:2em}.fc .fc-daygrid-body-natural .fc-daygrid-day-events{margin-bottom:1em}.fc .fc-daygrid-event-harness{position:relative}.fc .fc-daygrid-event-harness-abs{position:absolute;top:0;left:0;right:0}.fc .fc-daygrid-bg-harness{position:absolute;top:0;bottom:0}.fc .fc-daygrid-day-bg .fc-non-business{z-index:1}.fc .fc-daygrid-day-bg .fc-bg-event{z-index:2}.fc .fc-daygrid-day-bg .fc-highlight{z-index:3}.fc .fc-daygrid-event{z-index:6;margin-top:1px}.fc .fc-daygrid-event.fc-event-mirror{z-index:7}.fc .fc-daygrid-day-bottom{font-size:.85em;margin:2px 3px 0}.fc .fc-daygrid-more-link{position:relative;z-index:4;cursor:pointer}.fc .fc-daygrid-week-number{position:absolute;z-index:5;top:0;padding:2px;min-width:1.5em;text-align:center;background-color:#d0d0d04d;background-color:var(--fc-neutral-bg-color, rgba(208, 208, 208, .3));color:gray;color:var(--fc-neutral-text-color, #808080)}.fc .fc-more-popover{z-index:8}.fc .fc-more-popover .fc-popover-body{min-width:220px;padding:10px}.fc-direction-ltr .fc-daygrid-event.fc-event-start,.fc-direction-rtl .fc-daygrid-event.fc-event-end{margin-left:2px}.fc-direction-ltr .fc-daygrid-event.fc-event-end,.fc-direction-rtl .fc-daygrid-event.fc-event-start{margin-right:2px}.fc-direction-ltr .fc-daygrid-week-number{left:0;border-radius:0 0 3px}.fc-direction-rtl .fc-daygrid-week-number{right:0;border-radius:0 0 0 3px}.fc-liquid-hack .fc-daygrid-day-frame{position:static}.fc-daygrid-event{position:relative;white-space:nowrap;border-radius:3px;font-size:.85em;font-size:var(--fc-small-font-size, .85em)}.fc-daygrid-block-event .fc-event-time{font-weight:700}.fc-daygrid-block-event .fc-event-time,.fc-daygrid-block-event .fc-event-title{padding:1px}.fc-daygrid-dot-event{display:flex;align-items:center;padding:2px 0}.fc-daygrid-dot-event .fc-event-title{flex-grow:1;flex-shrink:1;min-width:0;overflow:hidden;font-weight:700}.fc-daygrid-dot-event:hover,.fc-daygrid-dot-event.fc-event-mirror{background:#0000001a}.fc-daygrid-dot-event.fc-event-selected:before{top:-10px;bottom:-10px}.fc-daygrid-event-dot{margin:0 4px;box-sizing:content-box;width:0;height:0;border:4px solid #3788d8;border:calc(var(--fc-daygrid-event-dot-width, 8px) / 2) solid var(--fc-event-border-color, #3788d8);border-radius:4px;border-radius:calc(var(--fc-daygrid-event-dot-width, 8px) / 2)}.fc-direction-ltr .fc-daygrid-event .fc-event-time{margin-right:3px}.fc-direction-rtl .fc-daygrid-event .fc-event-time{margin-left:3px}.fc-v-event{display:block;border:1px solid #3788d8;border:1px solid var(--fc-event-border-color, #3788d8);background-color:#3788d8;background-color:var(--fc-event-bg-color, #3788d8)}.fc-v-event .fc-event-main{color:#fff;color:var(--fc-event-text-color, #fff);height:100%}.fc-v-event .fc-event-main-frame{height:100%;display:flex;flex-direction:column}.fc-v-event .fc-event-time{flex-grow:0;flex-shrink:0;max-height:100%;overflow:hidden}.fc-v-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-height:0}.fc-v-event .fc-event-title{top:0;bottom:0;max-height:100%;overflow:hidden}.fc-v-event:not(.fc-event-start){border-top-width:0;border-top-left-radius:0;border-top-right-radius:0}.fc-v-event:not(.fc-event-end){border-bottom-width:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.fc-v-event.fc-event-selected:before{left:-10px;right:-10px}.fc-v-event .fc-event-resizer-start{cursor:n-resize}.fc-v-event .fc-event-resizer-end{cursor:s-resize}.fc-v-event:not(.fc-event-selected) .fc-event-resizer{height:8px;height:var(--fc-event-resizer-thickness, 8px);left:0;right:0}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-start{top:-4px;top:calc(var(--fc-event-resizer-thickness, 8px) / -2)}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-end{bottom:-4px;bottom:calc(var(--fc-event-resizer-thickness, 8px) / -2)}.fc-v-event.fc-event-selected .fc-event-resizer{left:50%;margin-left:-4px;margin-left:calc(var(--fc-event-resizer-dot-total-width, 8px) / -2)}.fc-v-event.fc-event-selected .fc-event-resizer-start{top:-4px;top:calc(var(--fc-event-resizer-dot-total-width, 8px) / -2)}.fc-v-event.fc-event-selected .fc-event-resizer-end{bottom:-4px;bottom:calc(var(--fc-event-resizer-dot-total-width, 8px) / -2)}.fc .fc-timegrid .fc-daygrid-body{z-index:2}.fc .fc-timegrid-divider{padding:0 0 2px}.fc .fc-timegrid-body{position:relative;z-index:1;min-height:100%}.fc .fc-timegrid-axis-chunk{position:relative}.fc .fc-timegrid-axis-chunk>table{position:relative;z-index:1}.fc .fc-timegrid-slots{position:relative;z-index:1}.fc .fc-timegrid-slot{height:1.5em;border-bottom:0}.fc .fc-timegrid-slot:empty:before{content:\"\\a0\"}.fc .fc-timegrid-slot-minor{border-top-style:dotted}.fc .fc-timegrid-slot-label-cushion{display:inline-block;white-space:nowrap}.fc .fc-timegrid-slot-label{vertical-align:middle}.fc .fc-timegrid-axis-cushion,.fc .fc-timegrid-slot-label-cushion{padding:0 4px}.fc .fc-timegrid-axis-frame-liquid{height:100%}.fc .fc-timegrid-axis-frame{overflow:hidden;display:flex;align-items:center;justify-content:flex-end}.fc .fc-timegrid-axis-cushion{max-width:60px;flex-shrink:0}.fc-direction-ltr .fc-timegrid-slot-label-frame{text-align:right}.fc-direction-rtl .fc-timegrid-slot-label-frame{text-align:left}.fc-liquid-hack .fc-timegrid-axis-frame-liquid{height:auto;position:absolute;inset:0}.fc .fc-timegrid-col.fc-day-today{background-color:#ffdc2826;background-color:var(--fc-today-bg-color, rgba(255, 220, 40, .15))}.fc .fc-timegrid-col-frame{min-height:100%;position:relative}.fc-liquid-hack .fc-timegrid-col-frame{height:auto;position:absolute;inset:0}.fc-media-screen .fc-timegrid-cols{position:absolute;inset:0}.fc-media-screen .fc-timegrid-cols>table{height:100%}.fc-media-screen .fc-timegrid-col-bg,.fc-media-screen .fc-timegrid-col-events,.fc-media-screen .fc-timegrid-now-indicator-container{position:absolute;top:0;left:0;right:0}.fc-media-screen .fc-timegrid-event-harness{position:absolute}.fc .fc-timegrid-col-bg{z-index:2}.fc .fc-timegrid-col-bg .fc-non-business{z-index:1}.fc .fc-timegrid-col-bg .fc-bg-event{z-index:2}.fc .fc-timegrid-col-bg .fc-highlight{z-index:3}.fc .fc-timegrid-bg-harness{position:absolute;left:0;right:0}.fc .fc-timegrid-col-events{z-index:3}.fc .fc-timegrid-now-indicator-container{bottom:0;overflow:hidden}.fc-direction-ltr .fc-timegrid-col-events{margin:0 2.5% 0 2px}.fc-direction-rtl .fc-timegrid-col-events{margin:0 2px 0 2.5%}.fc-timegrid-event-harness-inset .fc-timegrid-event,.fc-timegrid-event.fc-event-mirror{box-shadow:0 0 0 1px #fff;box-shadow:0 0 0 1px var(--fc-page-bg-color, #fff)}.fc-timegrid-event{font-size:.85em;font-size:var(--fc-small-font-size, .85em);border-radius:3px}.fc-timegrid-event .fc-event-main{padding:1px 1px 0}.fc-timegrid-event .fc-event-time{white-space:nowrap;font-size:.85em;font-size:var(--fc-small-font-size, .85em);margin-bottom:1px}.fc-timegrid-event-condensed .fc-event-main-frame{flex-direction:row;overflow:hidden}.fc-timegrid-event-condensed .fc-event-time:after{content:\"\\a0-\\a0\"}.fc-timegrid-event-condensed .fc-event-title{font-size:.85em;font-size:var(--fc-small-font-size, .85em)}.fc-media-screen .fc-timegrid-event{position:absolute;inset:0 0 1px}.fc .fc-timegrid-now-indicator-line{position:absolute;z-index:4;left:0;right:0;border-style:solid;border-color:red;border-color:var(--fc-now-indicator-color, red);border-width:1px 0 0}.fc .fc-timegrid-now-indicator-arrow{position:absolute;z-index:4;margin-top:-5px;border-style:solid;border-color:red;border-color:var(--fc-now-indicator-color, red)}.fc-direction-ltr .fc-timegrid-now-indicator-arrow{left:0;border-width:5px 0 5px 6px;border-top-color:transparent;border-bottom-color:transparent}.fc-direction-rtl .fc-timegrid-now-indicator-arrow{right:0;border-width:5px 6px 5px 0;border-top-color:transparent;border-bottom-color:transparent}:root{--fc-list-event-dot-width: 10px;--fc-list-event-hover-bg-color: #f5f5f5}.fc-theme-standard .fc-list{border:1px solid #ddd;border:1px solid var(--fc-border-color, #ddd)}.fc .fc-list-empty{background-color:#d0d0d04d;background-color:var(--fc-neutral-bg-color, rgba(208, 208, 208, .3));height:100%;display:flex;justify-content:center;align-items:center}.fc .fc-list-empty-cushion{margin:5em 0}.fc .fc-list-table{width:100%;border-style:hidden}.fc .fc-list-table tr>*{border-left:0;border-right:0}.fc .fc-list-sticky .fc-list-day>*{position:-webkit-sticky;position:sticky;top:0;background:#fff;background:var(--fc-page-bg-color, #fff)}.fc .fc-list-table th{padding:0}.fc .fc-list-table td,.fc .fc-list-day-cushion{padding:8px 14px}.fc .fc-list-day-cushion:after{content:\"\";clear:both;display:table}.fc-theme-standard .fc-list-day-cushion{background-color:#d0d0d04d;background-color:var(--fc-neutral-bg-color, rgba(208, 208, 208, .3))}.fc-direction-ltr .fc-list-day-text,.fc-direction-rtl .fc-list-day-side-text{float:left}.fc-direction-ltr .fc-list-day-side-text,.fc-direction-rtl .fc-list-day-text{float:right}.fc-direction-ltr .fc-list-table .fc-list-event-graphic{padding-right:0}.fc-direction-rtl .fc-list-table .fc-list-event-graphic{padding-left:0}.fc .fc-list-event.fc-event-forced-url{cursor:pointer}.fc .fc-list-event:hover td{background-color:#f5f5f5;background-color:var(--fc-list-event-hover-bg-color, #f5f5f5)}.fc .fc-list-event-graphic,.fc .fc-list-event-time{white-space:nowrap;width:1px}.fc .fc-list-event-dot{display:inline-block;box-sizing:content-box;width:0;height:0;border:5px solid #3788d8;border:calc(var(--fc-list-event-dot-width, 10px) / 2) solid var(--fc-event-border-color, #3788d8);border-radius:5px;border-radius:calc(var(--fc-list-event-dot-width, 10px) / 2)}.fc .fc-list-event-title a{color:inherit;text-decoration:none}.fc .fc-list-event.fc-event-forced-url:hover a{text-decoration:underline}.fc-theme-bootstrap a:not([href]){color:inherit}\n"], encapsulation: 2 }); }
616
614
  }
617
615
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CalendarComponent, [{
618
616
  type: Component,
619
617
  args: [{ selector: '[wmCalendar]', providers: [
620
618
  provideAsWidgetRef(CalendarComponent)
621
- ], encapsulation: ViewEncapsulation.None, template: "<div #calendar [attr.aria-label]=\"view || 'month'\"></div>\n", styles: [".fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc-unselectable{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.fc{display:flex;flex-direction:column;font-size:1em}.fc,.fc *,.fc *:before,.fc *:after{box-sizing:border-box}.fc table{border-collapse:collapse;border-spacing:0;font-size:1em}.fc th{text-align:center}.fc th,.fc td{vertical-align:top;padding:0}.fc a[data-navlink]{cursor:pointer}.fc a[data-navlink]:hover{text-decoration:underline}.fc-direction-ltr{direction:ltr;text-align:left}.fc-direction-rtl{direction:rtl;text-align:right}.fc-theme-standard td,.fc-theme-standard th{border:1px solid #ddd;border:1px solid var(--fc-border-color, #ddd)}.fc-liquid-hack td,.fc-liquid-hack th{position:relative}@font-face{font-family:fcicons;src:url(data:application/x-font-ttf;charset=utf-8;base64,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) format(\"truetype\");font-weight:400;font-style:normal}.fc-icon{display:inline-block;width:1em;height:1em;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-family:fcicons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fc-icon-chevron-left:before{content:\"\\e900\"}.fc-icon-chevron-right:before{content:\"\\e901\"}.fc-icon-chevrons-left:before{content:\"\\e902\"}.fc-icon-chevrons-right:before{content:\"\\e903\"}.fc-icon-minus-square:before{content:\"\\e904\"}.fc-icon-plus-square:before{content:\"\\e905\"}.fc-icon-x:before{content:\"\\e906\"}.fc .fc-button{border-radius:0;overflow:visible;text-transform:none;margin:0;font-family:inherit;font-size:inherit;line-height:inherit}.fc .fc-button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.fc .fc-button{-webkit-appearance:button}.fc .fc-button:not(:disabled){cursor:pointer}.fc .fc-button::-moz-focus-inner{padding:0;border-style:none}.fc .fc-button{display:inline-block;font-weight:400;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.4em .65em;font-size:1em;line-height:1.5;border-radius:.25em}.fc .fc-button:hover{text-decoration:none}.fc .fc-button:focus{outline:0;box-shadow:0 0 0 .2rem #2c3e5040}.fc .fc-button:disabled{opacity:.65}.fc .fc-button-primary{color:#fff;color:var(--fc-button-text-color, #fff);background-color:#2c3e50;background-color:var(--fc-button-bg-color, #2C3E50);border-color:#2c3e50;border-color:var(--fc-button-border-color, #2C3E50)}.fc .fc-button-primary:hover{color:#fff;color:var(--fc-button-text-color, #fff);background-color:#1e2b37;background-color:var(--fc-button-hover-bg-color, #1e2b37);border-color:#1a252f;border-color:var(--fc-button-hover-border-color, #1a252f)}.fc .fc-button-primary:disabled{color:#fff;color:var(--fc-button-text-color, #fff);background-color:#2c3e50;background-color:var(--fc-button-bg-color, #2C3E50);border-color:#2c3e50;border-color:var(--fc-button-border-color, #2C3E50)}.fc .fc-button-primary:focus{box-shadow:0 0 0 .2rem #4c5b6a80}.fc .fc-button-primary:not(:disabled):active,.fc .fc-button-primary:not(:disabled).fc-button-active{color:#fff;color:var(--fc-button-text-color, #fff);background-color:#1a252f;background-color:var(--fc-button-active-bg-color, #1a252f);border-color:#151e27;border-color:var(--fc-button-active-border-color, #151e27)}.fc .fc-button-primary:not(:disabled):active:focus,.fc .fc-button-primary:not(:disabled).fc-button-active:focus{box-shadow:0 0 0 .2rem #4c5b6a80}.fc .fc-button .fc-icon{vertical-align:middle;font-size:1.5em}.fc .fc-button-group{position:relative;display:inline-flex;vertical-align:middle}.fc .fc-button-group>.fc-button{position:relative;flex:1 1 auto}.fc .fc-button-group>.fc-button:hover{z-index:1}.fc .fc-button-group>.fc-button:focus,.fc .fc-button-group>.fc-button:active,.fc .fc-button-group>.fc-button.fc-button-active{z-index:1}.fc-direction-ltr .fc-button-group>.fc-button:not(:first-child){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.fc-direction-ltr .fc-button-group>.fc-button:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.fc-direction-rtl .fc-button-group>.fc-button:not(:first-child){margin-right:-1px;border-top-right-radius:0;border-bottom-right-radius:0}.fc-direction-rtl .fc-button-group>.fc-button:not(:last-child){border-top-left-radius:0;border-bottom-left-radius:0}.fc .fc-toolbar{display:flex;justify-content:space-between;align-items:center}.fc .fc-toolbar.fc-header-toolbar{margin-bottom:1.5em}.fc .fc-toolbar.fc-footer-toolbar{margin-top:1.5em}.fc .fc-toolbar-title{font-size:1.75em;margin:0}.fc-direction-ltr .fc-toolbar>*>:not(:first-child){margin-left:.75em}.fc-direction-rtl .fc-toolbar>*>:not(:first-child){margin-right:.75em}.fc-direction-rtl .fc-toolbar-ltr{flex-direction:row-reverse}.fc .fc-scroller{-webkit-overflow-scrolling:touch;position:relative}.fc .fc-scroller-liquid{height:100%}.fc .fc-scroller-liquid-absolute{position:absolute;inset:0}.fc .fc-scroller-harness{position:relative;overflow:hidden;direction:ltr}.fc .fc-scroller-harness-liquid{height:100%}.fc-direction-rtl .fc-scroller-harness>.fc-scroller{direction:rtl}.fc-theme-standard .fc-scrollgrid{border:1px solid #ddd;border:1px solid var(--fc-border-color, #ddd)}.fc .fc-scrollgrid,.fc .fc-scrollgrid table{width:100%;table-layout:fixed}.fc .fc-scrollgrid table{border-top-style:hidden;border-left-style:hidden;border-right-style:hidden}.fc .fc-scrollgrid{border-collapse:separate;border-right-width:0;border-bottom-width:0}.fc .fc-scrollgrid-liquid{height:100%}.fc .fc-scrollgrid-section{height:1px}.fc .fc-scrollgrid-section>td{height:1px}.fc .fc-scrollgrid-section table{height:1px}.fc .fc-scrollgrid-section-liquid{height:auto}.fc .fc-scrollgrid-section-liquid>td{height:100%}.fc .fc-scrollgrid-section>*{border-top-width:0;border-left-width:0}.fc .fc-scrollgrid-section-header>*,.fc .fc-scrollgrid-section-footer>*{border-bottom-width:0}.fc .fc-scrollgrid-section-body table,.fc .fc-scrollgrid-section-footer table{border-bottom-style:hidden}.fc .fc-scrollgrid-section-sticky>*{background:#fff;background:var(--fc-page-bg-color, #fff);position:-webkit-sticky;position:sticky;z-index:2}.fc .fc-scrollgrid-section-header.fc-scrollgrid-section-sticky>*{top:0}.fc .fc-scrollgrid-section-footer.fc-scrollgrid-section-sticky>*{bottom:0}.fc .fc-scrollgrid-sticky-shim{height:1px;margin-bottom:-1px}.fc-sticky{position:-webkit-sticky;position:sticky}.fc .fc-view-harness{flex-grow:1;position:relative}.fc .fc-view-harness-active>.fc-view{position:absolute;inset:0}.fc .fc-col-header-cell-cushion{display:inline-block;padding:2px 4px}.fc .fc-bg-event,.fc .fc-non-business,.fc .fc-highlight{position:absolute;inset:0}.fc .fc-non-business{background:#d7d7d74d;background:var(--fc-non-business-color, rgba(215, 215, 215, .3))}.fc .fc-bg-event{background:#8fdf82;background:var(--fc-bg-event-color, rgb(143, 223, 130));opacity:.3;opacity:var(--fc-bg-event-opacity, .3)}.fc .fc-bg-event .fc-event-title{margin:.5em;font-size:.85em;font-size:var(--fc-small-font-size, .85em);font-style:italic}.fc .fc-highlight{background:#bce8f14d;background:var(--fc-highlight-color, rgba(188, 232, 241, .3))}.fc .fc-cell-shaded,.fc .fc-day-disabled{background:#d0d0d04d;background:var(--fc-neutral-bg-color, rgba(208, 208, 208, .3))}a.fc-event,a.fc-event:hover{text-decoration:none}.fc-event[href],.fc-event.fc-event-draggable{cursor:pointer}.fc-event .fc-event-main{position:relative;z-index:2}.fc-event-dragging:not(.fc-event-selected){opacity:.75}.fc-event-dragging.fc-event-selected{box-shadow:0 2px 7px #0000004d}.fc-event .fc-event-resizer{display:none;position:absolute;z-index:4}.fc-event:hover .fc-event-resizer,.fc-event-selected .fc-event-resizer{display:block}.fc-event-selected .fc-event-resizer{border-radius:4px;border-radius:calc(var(--fc-event-resizer-dot-total-width, 8px) / 2);border-width:1px;border-width:var(--fc-event-resizer-dot-border-width, 1px);width:8px;width:var(--fc-event-resizer-dot-total-width, 8px);height:8px;height:var(--fc-event-resizer-dot-total-width, 8px);border-style:solid;border-color:inherit;background:#fff;background:var(--fc-page-bg-color, #fff)}.fc-event-selected .fc-event-resizer:before{content:\"\";position:absolute;inset:-20px}.fc-event-selected{box-shadow:0 2px 5px #0003}.fc-event-selected:before{content:\"\";position:absolute;z-index:3;inset:0}.fc-event-selected:after{content:\"\";background:#00000040;background:var(--fc-event-selected-overlay-color, rgba(0, 0, 0, .25));position:absolute;z-index:1;inset:-1px}.fc-h-event{display:block;border:1px solid #3788d8;border:1px solid var(--fc-event-border-color, #3788d8);background-color:#3788d8;background-color:var(--fc-event-bg-color, #3788d8)}.fc-h-event .fc-event-main{color:#fff;color:var(--fc-event-text-color, #fff)}.fc-h-event .fc-event-main-frame{display:flex}.fc-h-event .fc-event-time{max-width:100%;overflow:hidden}.fc-h-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-width:0}.fc-h-event .fc-event-title{display:inline-block;vertical-align:top;left:0;right:0;max-width:100%;overflow:hidden}.fc-h-event.fc-event-selected:before{top:-10px;bottom:-10px}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-start),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-end){border-top-left-radius:0;border-bottom-left-radius:0;border-left-width:0}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-end),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-start){border-top-right-radius:0;border-bottom-right-radius:0;border-right-width:0}.fc-h-event:not(.fc-event-selected) .fc-event-resizer{top:0;bottom:0;width:8px;width:var(--fc-event-resizer-thickness, 8px)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end{cursor:w-resize;left:-4px;left:calc(var(--fc-event-resizer-thickness, 8px) / -2)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start{cursor:e-resize;right:-4px;right:calc(var(--fc-event-resizer-thickness, 8px) / -2)}.fc-h-event.fc-event-selected .fc-event-resizer{top:50%;margin-top:-4px;margin-top:calc(var(--fc-event-resizer-dot-total-width, 8px) / -2)}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-start,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-end{left:-4px;left:calc(var(--fc-event-resizer-dot-total-width, 8px) / -2)}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-end,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-start{right:-4px;right:calc(var(--fc-event-resizer-dot-total-width, 8px) / -2)}:root{--fc-daygrid-event-dot-width: 8px}.fc .fc-popover{position:fixed;top:0;box-shadow:0 2px 6px #00000026}.fc .fc-popover-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:3px 4px}.fc .fc-popover-title{margin:0 2px}.fc .fc-popover-close{cursor:pointer;opacity:.65;font-size:1.1em}.fc-theme-standard .fc-popover{border:1px solid #ddd;border:1px solid var(--fc-border-color, #ddd);background:#fff;background:var(--fc-page-bg-color, #fff)}.fc-theme-standard .fc-popover-header{background:#d0d0d04d;background:var(--fc-neutral-bg-color, rgba(208, 208, 208, .3))}.fc-daygrid-day-frame:before,.fc-daygrid-day-events:before,.fc-daygrid-event-harness:before{content:\"\";clear:both;display:table}.fc-daygrid-day-frame:after,.fc-daygrid-day-events:after,.fc-daygrid-event-harness:after{content:\"\";clear:both;display:table}.fc .fc-daygrid-body{position:relative;z-index:1}.fc .fc-daygrid-day.fc-day-today{background-color:#ffdc2826;background-color:var(--fc-today-bg-color, rgba(255, 220, 40, .15))}.fc .fc-daygrid-day-frame{position:relative;min-height:100%}.fc .fc-daygrid-day-top{display:flex;flex-direction:row-reverse}.fc .fc-day-other .fc-daygrid-day-top{opacity:.3}.fc .fc-daygrid-day-number{position:relative;z-index:4;padding:4px}.fc .fc-daygrid-day-events{margin-top:1px}.fc .fc-daygrid-body-balanced .fc-daygrid-day-events{position:absolute;left:0;right:0}.fc .fc-daygrid-body-unbalanced .fc-daygrid-day-events{position:relative;min-height:2em}.fc .fc-daygrid-body-natural .fc-daygrid-day-events{margin-bottom:1em}.fc .fc-daygrid-event-harness{position:relative}.fc .fc-daygrid-event-harness-abs{position:absolute;top:0;left:0;right:0}.fc .fc-daygrid-bg-harness{position:absolute;top:0;bottom:0}.fc .fc-daygrid-day-bg .fc-non-business{z-index:1}.fc .fc-daygrid-day-bg .fc-bg-event{z-index:2}.fc .fc-daygrid-day-bg .fc-highlight{z-index:3}.fc .fc-daygrid-event{z-index:6;margin-top:1px}.fc .fc-daygrid-event.fc-event-mirror{z-index:7}.fc .fc-daygrid-day-bottom{font-size:.85em;margin:2px 3px 0}.fc .fc-daygrid-more-link{position:relative;z-index:4;cursor:pointer}.fc .fc-daygrid-week-number{position:absolute;z-index:5;top:0;padding:2px;min-width:1.5em;text-align:center;background-color:#d0d0d04d;background-color:var(--fc-neutral-bg-color, rgba(208, 208, 208, .3));color:gray;color:var(--fc-neutral-text-color, #808080)}.fc .fc-more-popover{z-index:8}.fc .fc-more-popover .fc-popover-body{min-width:220px;padding:10px}.fc-direction-ltr .fc-daygrid-event.fc-event-start,.fc-direction-rtl .fc-daygrid-event.fc-event-end{margin-left:2px}.fc-direction-ltr .fc-daygrid-event.fc-event-end,.fc-direction-rtl .fc-daygrid-event.fc-event-start{margin-right:2px}.fc-direction-ltr .fc-daygrid-week-number{left:0;border-radius:0 0 3px}.fc-direction-rtl .fc-daygrid-week-number{right:0;border-radius:0 0 0 3px}.fc-liquid-hack .fc-daygrid-day-frame{position:static}.fc-daygrid-event{position:relative;white-space:nowrap;border-radius:3px;font-size:.85em;font-size:var(--fc-small-font-size, .85em)}.fc-daygrid-block-event .fc-event-time{font-weight:700}.fc-daygrid-block-event .fc-event-time,.fc-daygrid-block-event .fc-event-title{padding:1px}.fc-daygrid-dot-event{display:flex;align-items:center;padding:2px 0}.fc-daygrid-dot-event .fc-event-title{flex-grow:1;flex-shrink:1;min-width:0;overflow:hidden;font-weight:700}.fc-daygrid-dot-event:hover,.fc-daygrid-dot-event.fc-event-mirror{background:#0000001a}.fc-daygrid-dot-event.fc-event-selected:before{top:-10px;bottom:-10px}.fc-daygrid-event-dot{margin:0 4px;box-sizing:content-box;width:0;height:0;border:4px solid #3788d8;border:calc(var(--fc-daygrid-event-dot-width, 8px) / 2) solid var(--fc-event-border-color, #3788d8);border-radius:4px;border-radius:calc(var(--fc-daygrid-event-dot-width, 8px) / 2)}.fc-direction-ltr .fc-daygrid-event .fc-event-time{margin-right:3px}.fc-direction-rtl .fc-daygrid-event .fc-event-time{margin-left:3px}.fc-v-event{display:block;border:1px solid #3788d8;border:1px solid var(--fc-event-border-color, #3788d8);background-color:#3788d8;background-color:var(--fc-event-bg-color, #3788d8)}.fc-v-event .fc-event-main{color:#fff;color:var(--fc-event-text-color, #fff);height:100%}.fc-v-event .fc-event-main-frame{height:100%;display:flex;flex-direction:column}.fc-v-event .fc-event-time{flex-grow:0;flex-shrink:0;max-height:100%;overflow:hidden}.fc-v-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-height:0}.fc-v-event .fc-event-title{top:0;bottom:0;max-height:100%;overflow:hidden}.fc-v-event:not(.fc-event-start){border-top-width:0;border-top-left-radius:0;border-top-right-radius:0}.fc-v-event:not(.fc-event-end){border-bottom-width:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.fc-v-event.fc-event-selected:before{left:-10px;right:-10px}.fc-v-event .fc-event-resizer-start{cursor:n-resize}.fc-v-event .fc-event-resizer-end{cursor:s-resize}.fc-v-event:not(.fc-event-selected) .fc-event-resizer{height:8px;height:var(--fc-event-resizer-thickness, 8px);left:0;right:0}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-start{top:-4px;top:calc(var(--fc-event-resizer-thickness, 8px) / -2)}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-end{bottom:-4px;bottom:calc(var(--fc-event-resizer-thickness, 8px) / -2)}.fc-v-event.fc-event-selected .fc-event-resizer{left:50%;margin-left:-4px;margin-left:calc(var(--fc-event-resizer-dot-total-width, 8px) / -2)}.fc-v-event.fc-event-selected .fc-event-resizer-start{top:-4px;top:calc(var(--fc-event-resizer-dot-total-width, 8px) / -2)}.fc-v-event.fc-event-selected .fc-event-resizer-end{bottom:-4px;bottom:calc(var(--fc-event-resizer-dot-total-width, 8px) / -2)}.fc .fc-timegrid .fc-daygrid-body{z-index:2}.fc .fc-timegrid-divider{padding:0 0 2px}.fc .fc-timegrid-body{position:relative;z-index:1;min-height:100%}.fc .fc-timegrid-axis-chunk{position:relative}.fc .fc-timegrid-axis-chunk>table{position:relative;z-index:1}.fc .fc-timegrid-slots{position:relative;z-index:1}.fc .fc-timegrid-slot{height:1.5em;border-bottom:0}.fc .fc-timegrid-slot:empty:before{content:\"\\a0\"}.fc .fc-timegrid-slot-minor{border-top-style:dotted}.fc .fc-timegrid-slot-label-cushion{display:inline-block;white-space:nowrap}.fc .fc-timegrid-slot-label{vertical-align:middle}.fc .fc-timegrid-axis-cushion,.fc .fc-timegrid-slot-label-cushion{padding:0 4px}.fc .fc-timegrid-axis-frame-liquid{height:100%}.fc .fc-timegrid-axis-frame{overflow:hidden;display:flex;align-items:center;justify-content:flex-end}.fc .fc-timegrid-axis-cushion{max-width:60px;flex-shrink:0}.fc-direction-ltr .fc-timegrid-slot-label-frame{text-align:right}.fc-direction-rtl .fc-timegrid-slot-label-frame{text-align:left}.fc-liquid-hack .fc-timegrid-axis-frame-liquid{height:auto;position:absolute;inset:0}.fc .fc-timegrid-col.fc-day-today{background-color:#ffdc2826;background-color:var(--fc-today-bg-color, rgba(255, 220, 40, .15))}.fc .fc-timegrid-col-frame{min-height:100%;position:relative}.fc-liquid-hack .fc-timegrid-col-frame{height:auto;position:absolute;inset:0}.fc-media-screen .fc-timegrid-cols{position:absolute;inset:0}.fc-media-screen .fc-timegrid-cols>table{height:100%}.fc-media-screen .fc-timegrid-col-bg,.fc-media-screen .fc-timegrid-col-events,.fc-media-screen .fc-timegrid-now-indicator-container{position:absolute;top:0;left:0;right:0}.fc-media-screen .fc-timegrid-event-harness{position:absolute}.fc .fc-timegrid-col-bg{z-index:2}.fc .fc-timegrid-col-bg .fc-non-business{z-index:1}.fc .fc-timegrid-col-bg .fc-bg-event{z-index:2}.fc .fc-timegrid-col-bg .fc-highlight{z-index:3}.fc .fc-timegrid-bg-harness{position:absolute;left:0;right:0}.fc .fc-timegrid-col-events{z-index:3}.fc .fc-timegrid-now-indicator-container{bottom:0;overflow:hidden}.fc-direction-ltr .fc-timegrid-col-events{margin:0 2.5% 0 2px}.fc-direction-rtl .fc-timegrid-col-events{margin:0 2px 0 2.5%}.fc-timegrid-event-harness-inset .fc-timegrid-event,.fc-timegrid-event.fc-event-mirror{box-shadow:0 0 0 1px #fff;box-shadow:0 0 0 1px var(--fc-page-bg-color, #fff)}.fc-timegrid-event{font-size:.85em;font-size:var(--fc-small-font-size, .85em);border-radius:3px}.fc-timegrid-event .fc-event-main{padding:1px 1px 0}.fc-timegrid-event .fc-event-time{white-space:nowrap;font-size:.85em;font-size:var(--fc-small-font-size, .85em);margin-bottom:1px}.fc-timegrid-event-condensed .fc-event-main-frame{flex-direction:row;overflow:hidden}.fc-timegrid-event-condensed .fc-event-time:after{content:\"\\a0-\\a0\"}.fc-timegrid-event-condensed .fc-event-title{font-size:.85em;font-size:var(--fc-small-font-size, .85em)}.fc-media-screen .fc-timegrid-event{position:absolute;inset:0 0 1px}.fc .fc-timegrid-now-indicator-line{position:absolute;z-index:4;left:0;right:0;border-style:solid;border-color:red;border-color:var(--fc-now-indicator-color, red);border-width:1px 0 0}.fc .fc-timegrid-now-indicator-arrow{position:absolute;z-index:4;margin-top:-5px;border-style:solid;border-color:red;border-color:var(--fc-now-indicator-color, red)}.fc-direction-ltr .fc-timegrid-now-indicator-arrow{left:0;border-width:5px 0 5px 6px;border-top-color:transparent;border-bottom-color:transparent}.fc-direction-rtl .fc-timegrid-now-indicator-arrow{right:0;border-width:5px 6px 5px 0;border-top-color:transparent;border-bottom-color:transparent}:root{--fc-list-event-dot-width: 10px;--fc-list-event-hover-bg-color: #f5f5f5}.fc-theme-standard .fc-list{border:1px solid #ddd;border:1px solid var(--fc-border-color, #ddd)}.fc .fc-list-empty{background-color:#d0d0d04d;background-color:var(--fc-neutral-bg-color, rgba(208, 208, 208, .3));height:100%;display:flex;justify-content:center;align-items:center}.fc .fc-list-empty-cushion{margin:5em 0}.fc .fc-list-table{width:100%;border-style:hidden}.fc .fc-list-table tr>*{border-left:0;border-right:0}.fc .fc-list-sticky .fc-list-day>*{position:-webkit-sticky;position:sticky;top:0;background:#fff;background:var(--fc-page-bg-color, #fff)}.fc .fc-list-table th{padding:0}.fc .fc-list-table td,.fc .fc-list-day-cushion{padding:8px 14px}.fc .fc-list-day-cushion:after{content:\"\";clear:both;display:table}.fc-theme-standard .fc-list-day-cushion{background-color:#d0d0d04d;background-color:var(--fc-neutral-bg-color, rgba(208, 208, 208, .3))}.fc-direction-ltr .fc-list-day-text,.fc-direction-rtl .fc-list-day-side-text{float:left}.fc-direction-ltr .fc-list-day-side-text,.fc-direction-rtl .fc-list-day-text{float:right}.fc-direction-ltr .fc-list-table .fc-list-event-graphic{padding-right:0}.fc-direction-rtl .fc-list-table .fc-list-event-graphic{padding-left:0}.fc .fc-list-event.fc-event-forced-url{cursor:pointer}.fc .fc-list-event:hover td{background-color:#f5f5f5;background-color:var(--fc-list-event-hover-bg-color, #f5f5f5)}.fc .fc-list-event-graphic,.fc .fc-list-event-time{white-space:nowrap;width:1px}.fc .fc-list-event-dot{display:inline-block;box-sizing:content-box;width:0;height:0;border:5px solid #3788d8;border:calc(var(--fc-list-event-dot-width, 10px) / 2) solid var(--fc-event-border-color, #3788d8);border-radius:5px;border-radius:calc(var(--fc-list-event-dot-width, 10px) / 2)}.fc .fc-list-event-title a{color:inherit;text-decoration:none}.fc .fc-list-event.fc-event-forced-url:hover a{text-decoration:underline}.fc-theme-bootstrap a:not([href]){color:inherit}\n"] }]
619
+ ], encapsulation: ViewEncapsulation.None, template: "<div #calendar></div>\n", styles: [".fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc-unselectable{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.fc{display:flex;flex-direction:column;font-size:1em}.fc,.fc *,.fc *:before,.fc *:after{box-sizing:border-box}.fc table{border-collapse:collapse;border-spacing:0;font-size:1em}.fc th{text-align:center}.fc th,.fc td{vertical-align:top;padding:0}.fc a[data-navlink]{cursor:pointer}.fc a[data-navlink]:hover{text-decoration:underline}.fc-direction-ltr{direction:ltr;text-align:left}.fc-direction-rtl{direction:rtl;text-align:right}.fc-theme-standard td,.fc-theme-standard th{border:1px solid #ddd;border:1px solid var(--fc-border-color, #ddd)}.fc-liquid-hack td,.fc-liquid-hack th{position:relative}@font-face{font-family:fcicons;src:url(data:application/x-font-ttf;charset=utf-8;base64,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) format(\"truetype\");font-weight:400;font-style:normal}.fc-icon{display:inline-block;width:1em;height:1em;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-family:fcicons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fc-icon-chevron-left:before{content:\"\\e900\"}.fc-icon-chevron-right:before{content:\"\\e901\"}.fc-icon-chevrons-left:before{content:\"\\e902\"}.fc-icon-chevrons-right:before{content:\"\\e903\"}.fc-icon-minus-square:before{content:\"\\e904\"}.fc-icon-plus-square:before{content:\"\\e905\"}.fc-icon-x:before{content:\"\\e906\"}.fc .fc-button{border-radius:0;overflow:visible;text-transform:none;margin:0;font-family:inherit;font-size:inherit;line-height:inherit}.fc .fc-button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.fc .fc-button{-webkit-appearance:button}.fc .fc-button:not(:disabled){cursor:pointer}.fc .fc-button::-moz-focus-inner{padding:0;border-style:none}.fc .fc-button{display:inline-block;font-weight:400;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.4em .65em;font-size:1em;line-height:1.5;border-radius:.25em}.fc .fc-button:hover{text-decoration:none}.fc .fc-button:focus{outline:0;box-shadow:0 0 0 .2rem #2c3e5040}.fc .fc-button:disabled{opacity:.65}.fc .fc-button-primary{color:#fff;color:var(--fc-button-text-color, #fff);background-color:#2c3e50;background-color:var(--fc-button-bg-color, #2C3E50);border-color:#2c3e50;border-color:var(--fc-button-border-color, #2C3E50)}.fc .fc-button-primary:hover{color:#fff;color:var(--fc-button-text-color, #fff);background-color:#1e2b37;background-color:var(--fc-button-hover-bg-color, #1e2b37);border-color:#1a252f;border-color:var(--fc-button-hover-border-color, #1a252f)}.fc .fc-button-primary:disabled{color:#fff;color:var(--fc-button-text-color, #fff);background-color:#2c3e50;background-color:var(--fc-button-bg-color, #2C3E50);border-color:#2c3e50;border-color:var(--fc-button-border-color, #2C3E50)}.fc .fc-button-primary:focus{box-shadow:0 0 0 .2rem #4c5b6a80}.fc .fc-button-primary:not(:disabled):active,.fc .fc-button-primary:not(:disabled).fc-button-active{color:#fff;color:var(--fc-button-text-color, #fff);background-color:#1a252f;background-color:var(--fc-button-active-bg-color, #1a252f);border-color:#151e27;border-color:var(--fc-button-active-border-color, #151e27)}.fc .fc-button-primary:not(:disabled):active:focus,.fc .fc-button-primary:not(:disabled).fc-button-active:focus{box-shadow:0 0 0 .2rem #4c5b6a80}.fc .fc-button .fc-icon{vertical-align:middle;font-size:1.5em}.fc .fc-button-group{position:relative;display:inline-flex;vertical-align:middle}.fc .fc-button-group>.fc-button{position:relative;flex:1 1 auto}.fc .fc-button-group>.fc-button:hover{z-index:1}.fc .fc-button-group>.fc-button:focus,.fc .fc-button-group>.fc-button:active,.fc .fc-button-group>.fc-button.fc-button-active{z-index:1}.fc-direction-ltr .fc-button-group>.fc-button:not(:first-child){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.fc-direction-ltr .fc-button-group>.fc-button:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.fc-direction-rtl .fc-button-group>.fc-button:not(:first-child){margin-right:-1px;border-top-right-radius:0;border-bottom-right-radius:0}.fc-direction-rtl .fc-button-group>.fc-button:not(:last-child){border-top-left-radius:0;border-bottom-left-radius:0}.fc .fc-toolbar{display:flex;justify-content:space-between;align-items:center}.fc .fc-toolbar.fc-header-toolbar{margin-bottom:1.5em}.fc .fc-toolbar.fc-footer-toolbar{margin-top:1.5em}.fc .fc-toolbar-title{font-size:1.75em;margin:0}.fc-direction-ltr .fc-toolbar>*>:not(:first-child){margin-left:.75em}.fc-direction-rtl .fc-toolbar>*>:not(:first-child){margin-right:.75em}.fc-direction-rtl .fc-toolbar-ltr{flex-direction:row-reverse}.fc .fc-scroller{-webkit-overflow-scrolling:touch;position:relative}.fc .fc-scroller-liquid{height:100%}.fc .fc-scroller-liquid-absolute{position:absolute;inset:0}.fc .fc-scroller-harness{position:relative;overflow:hidden;direction:ltr}.fc .fc-scroller-harness-liquid{height:100%}.fc-direction-rtl .fc-scroller-harness>.fc-scroller{direction:rtl}.fc-theme-standard .fc-scrollgrid{border:1px solid #ddd;border:1px solid var(--fc-border-color, #ddd)}.fc .fc-scrollgrid,.fc .fc-scrollgrid table{width:100%;table-layout:fixed}.fc .fc-scrollgrid table{border-top-style:hidden;border-left-style:hidden;border-right-style:hidden}.fc .fc-scrollgrid{border-collapse:separate;border-right-width:0;border-bottom-width:0}.fc .fc-scrollgrid-liquid{height:100%}.fc .fc-scrollgrid-section{height:1px}.fc .fc-scrollgrid-section>td{height:1px}.fc .fc-scrollgrid-section table{height:1px}.fc .fc-scrollgrid-section-liquid{height:auto}.fc .fc-scrollgrid-section-liquid>td{height:100%}.fc .fc-scrollgrid-section>*{border-top-width:0;border-left-width:0}.fc .fc-scrollgrid-section-header>*,.fc .fc-scrollgrid-section-footer>*{border-bottom-width:0}.fc .fc-scrollgrid-section-body table,.fc .fc-scrollgrid-section-footer table{border-bottom-style:hidden}.fc .fc-scrollgrid-section-sticky>*{background:#fff;background:var(--fc-page-bg-color, #fff);position:-webkit-sticky;position:sticky;z-index:2}.fc .fc-scrollgrid-section-header.fc-scrollgrid-section-sticky>*{top:0}.fc .fc-scrollgrid-section-footer.fc-scrollgrid-section-sticky>*{bottom:0}.fc .fc-scrollgrid-sticky-shim{height:1px;margin-bottom:-1px}.fc-sticky{position:-webkit-sticky;position:sticky}.fc .fc-view-harness{flex-grow:1;position:relative}.fc .fc-view-harness-active>.fc-view{position:absolute;inset:0}.fc .fc-col-header-cell-cushion{display:inline-block;padding:2px 4px}.fc .fc-bg-event,.fc .fc-non-business,.fc .fc-highlight{position:absolute;inset:0}.fc .fc-non-business{background:#d7d7d74d;background:var(--fc-non-business-color, rgba(215, 215, 215, .3))}.fc .fc-bg-event{background:#8fdf82;background:var(--fc-bg-event-color, rgb(143, 223, 130));opacity:.3;opacity:var(--fc-bg-event-opacity, .3)}.fc .fc-bg-event .fc-event-title{margin:.5em;font-size:.85em;font-size:var(--fc-small-font-size, .85em);font-style:italic}.fc .fc-highlight{background:#bce8f14d;background:var(--fc-highlight-color, rgba(188, 232, 241, .3))}.fc .fc-cell-shaded,.fc .fc-day-disabled{background:#d0d0d04d;background:var(--fc-neutral-bg-color, rgba(208, 208, 208, .3))}a.fc-event,a.fc-event:hover{text-decoration:none}.fc-event[href],.fc-event.fc-event-draggable{cursor:pointer}.fc-event .fc-event-main{position:relative;z-index:2}.fc-event-dragging:not(.fc-event-selected){opacity:.75}.fc-event-dragging.fc-event-selected{box-shadow:0 2px 7px #0000004d}.fc-event .fc-event-resizer{display:none;position:absolute;z-index:4}.fc-event:hover .fc-event-resizer,.fc-event-selected .fc-event-resizer{display:block}.fc-event-selected .fc-event-resizer{border-radius:4px;border-radius:calc(var(--fc-event-resizer-dot-total-width, 8px) / 2);border-width:1px;border-width:var(--fc-event-resizer-dot-border-width, 1px);width:8px;width:var(--fc-event-resizer-dot-total-width, 8px);height:8px;height:var(--fc-event-resizer-dot-total-width, 8px);border-style:solid;border-color:inherit;background:#fff;background:var(--fc-page-bg-color, #fff)}.fc-event-selected .fc-event-resizer:before{content:\"\";position:absolute;inset:-20px}.fc-event-selected{box-shadow:0 2px 5px #0003}.fc-event-selected:before{content:\"\";position:absolute;z-index:3;inset:0}.fc-event-selected:after{content:\"\";background:#00000040;background:var(--fc-event-selected-overlay-color, rgba(0, 0, 0, .25));position:absolute;z-index:1;inset:-1px}.fc-h-event{display:block;border:1px solid #3788d8;border:1px solid var(--fc-event-border-color, #3788d8);background-color:#3788d8;background-color:var(--fc-event-bg-color, #3788d8)}.fc-h-event .fc-event-main{color:#fff;color:var(--fc-event-text-color, #fff)}.fc-h-event .fc-event-main-frame{display:flex}.fc-h-event .fc-event-time{max-width:100%;overflow:hidden}.fc-h-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-width:0}.fc-h-event .fc-event-title{display:inline-block;vertical-align:top;left:0;right:0;max-width:100%;overflow:hidden}.fc-h-event.fc-event-selected:before{top:-10px;bottom:-10px}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-start),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-end){border-top-left-radius:0;border-bottom-left-radius:0;border-left-width:0}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-end),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-start){border-top-right-radius:0;border-bottom-right-radius:0;border-right-width:0}.fc-h-event:not(.fc-event-selected) .fc-event-resizer{top:0;bottom:0;width:8px;width:var(--fc-event-resizer-thickness, 8px)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end{cursor:w-resize;left:-4px;left:calc(var(--fc-event-resizer-thickness, 8px) / -2)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start{cursor:e-resize;right:-4px;right:calc(var(--fc-event-resizer-thickness, 8px) / -2)}.fc-h-event.fc-event-selected .fc-event-resizer{top:50%;margin-top:-4px;margin-top:calc(var(--fc-event-resizer-dot-total-width, 8px) / -2)}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-start,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-end{left:-4px;left:calc(var(--fc-event-resizer-dot-total-width, 8px) / -2)}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-end,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-start{right:-4px;right:calc(var(--fc-event-resizer-dot-total-width, 8px) / -2)}:root{--fc-daygrid-event-dot-width: 8px}.fc .fc-popover{position:fixed;top:0;box-shadow:0 2px 6px #00000026}.fc .fc-popover-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:3px 4px}.fc .fc-popover-title{margin:0 2px}.fc .fc-popover-close{cursor:pointer;opacity:.65;font-size:1.1em}.fc-theme-standard .fc-popover{border:1px solid #ddd;border:1px solid var(--fc-border-color, #ddd);background:#fff;background:var(--fc-page-bg-color, #fff)}.fc-theme-standard .fc-popover-header{background:#d0d0d04d;background:var(--fc-neutral-bg-color, rgba(208, 208, 208, .3))}.fc-daygrid-day-frame:before,.fc-daygrid-day-events:before,.fc-daygrid-event-harness:before{content:\"\";clear:both;display:table}.fc-daygrid-day-frame:after,.fc-daygrid-day-events:after,.fc-daygrid-event-harness:after{content:\"\";clear:both;display:table}.fc .fc-daygrid-body{position:relative;z-index:1}.fc .fc-daygrid-day.fc-day-today{background-color:#ffdc2826;background-color:var(--fc-today-bg-color, rgba(255, 220, 40, .15))}.fc .fc-daygrid-day-frame{position:relative;min-height:100%}.fc .fc-daygrid-day-top{display:flex;flex-direction:row-reverse}.fc .fc-day-other .fc-daygrid-day-top{opacity:.3}.fc .fc-daygrid-day-number{position:relative;z-index:4;padding:4px}.fc .fc-daygrid-day-events{margin-top:1px}.fc .fc-daygrid-body-balanced .fc-daygrid-day-events{position:absolute;left:0;right:0}.fc .fc-daygrid-body-unbalanced .fc-daygrid-day-events{position:relative;min-height:2em}.fc .fc-daygrid-body-natural .fc-daygrid-day-events{margin-bottom:1em}.fc .fc-daygrid-event-harness{position:relative}.fc .fc-daygrid-event-harness-abs{position:absolute;top:0;left:0;right:0}.fc .fc-daygrid-bg-harness{position:absolute;top:0;bottom:0}.fc .fc-daygrid-day-bg .fc-non-business{z-index:1}.fc .fc-daygrid-day-bg .fc-bg-event{z-index:2}.fc .fc-daygrid-day-bg .fc-highlight{z-index:3}.fc .fc-daygrid-event{z-index:6;margin-top:1px}.fc .fc-daygrid-event.fc-event-mirror{z-index:7}.fc .fc-daygrid-day-bottom{font-size:.85em;margin:2px 3px 0}.fc .fc-daygrid-more-link{position:relative;z-index:4;cursor:pointer}.fc .fc-daygrid-week-number{position:absolute;z-index:5;top:0;padding:2px;min-width:1.5em;text-align:center;background-color:#d0d0d04d;background-color:var(--fc-neutral-bg-color, rgba(208, 208, 208, .3));color:gray;color:var(--fc-neutral-text-color, #808080)}.fc .fc-more-popover{z-index:8}.fc .fc-more-popover .fc-popover-body{min-width:220px;padding:10px}.fc-direction-ltr .fc-daygrid-event.fc-event-start,.fc-direction-rtl .fc-daygrid-event.fc-event-end{margin-left:2px}.fc-direction-ltr .fc-daygrid-event.fc-event-end,.fc-direction-rtl .fc-daygrid-event.fc-event-start{margin-right:2px}.fc-direction-ltr .fc-daygrid-week-number{left:0;border-radius:0 0 3px}.fc-direction-rtl .fc-daygrid-week-number{right:0;border-radius:0 0 0 3px}.fc-liquid-hack .fc-daygrid-day-frame{position:static}.fc-daygrid-event{position:relative;white-space:nowrap;border-radius:3px;font-size:.85em;font-size:var(--fc-small-font-size, .85em)}.fc-daygrid-block-event .fc-event-time{font-weight:700}.fc-daygrid-block-event .fc-event-time,.fc-daygrid-block-event .fc-event-title{padding:1px}.fc-daygrid-dot-event{display:flex;align-items:center;padding:2px 0}.fc-daygrid-dot-event .fc-event-title{flex-grow:1;flex-shrink:1;min-width:0;overflow:hidden;font-weight:700}.fc-daygrid-dot-event:hover,.fc-daygrid-dot-event.fc-event-mirror{background:#0000001a}.fc-daygrid-dot-event.fc-event-selected:before{top:-10px;bottom:-10px}.fc-daygrid-event-dot{margin:0 4px;box-sizing:content-box;width:0;height:0;border:4px solid #3788d8;border:calc(var(--fc-daygrid-event-dot-width, 8px) / 2) solid var(--fc-event-border-color, #3788d8);border-radius:4px;border-radius:calc(var(--fc-daygrid-event-dot-width, 8px) / 2)}.fc-direction-ltr .fc-daygrid-event .fc-event-time{margin-right:3px}.fc-direction-rtl .fc-daygrid-event .fc-event-time{margin-left:3px}.fc-v-event{display:block;border:1px solid #3788d8;border:1px solid var(--fc-event-border-color, #3788d8);background-color:#3788d8;background-color:var(--fc-event-bg-color, #3788d8)}.fc-v-event .fc-event-main{color:#fff;color:var(--fc-event-text-color, #fff);height:100%}.fc-v-event .fc-event-main-frame{height:100%;display:flex;flex-direction:column}.fc-v-event .fc-event-time{flex-grow:0;flex-shrink:0;max-height:100%;overflow:hidden}.fc-v-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-height:0}.fc-v-event .fc-event-title{top:0;bottom:0;max-height:100%;overflow:hidden}.fc-v-event:not(.fc-event-start){border-top-width:0;border-top-left-radius:0;border-top-right-radius:0}.fc-v-event:not(.fc-event-end){border-bottom-width:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.fc-v-event.fc-event-selected:before{left:-10px;right:-10px}.fc-v-event .fc-event-resizer-start{cursor:n-resize}.fc-v-event .fc-event-resizer-end{cursor:s-resize}.fc-v-event:not(.fc-event-selected) .fc-event-resizer{height:8px;height:var(--fc-event-resizer-thickness, 8px);left:0;right:0}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-start{top:-4px;top:calc(var(--fc-event-resizer-thickness, 8px) / -2)}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-end{bottom:-4px;bottom:calc(var(--fc-event-resizer-thickness, 8px) / -2)}.fc-v-event.fc-event-selected .fc-event-resizer{left:50%;margin-left:-4px;margin-left:calc(var(--fc-event-resizer-dot-total-width, 8px) / -2)}.fc-v-event.fc-event-selected .fc-event-resizer-start{top:-4px;top:calc(var(--fc-event-resizer-dot-total-width, 8px) / -2)}.fc-v-event.fc-event-selected .fc-event-resizer-end{bottom:-4px;bottom:calc(var(--fc-event-resizer-dot-total-width, 8px) / -2)}.fc .fc-timegrid .fc-daygrid-body{z-index:2}.fc .fc-timegrid-divider{padding:0 0 2px}.fc .fc-timegrid-body{position:relative;z-index:1;min-height:100%}.fc .fc-timegrid-axis-chunk{position:relative}.fc .fc-timegrid-axis-chunk>table{position:relative;z-index:1}.fc .fc-timegrid-slots{position:relative;z-index:1}.fc .fc-timegrid-slot{height:1.5em;border-bottom:0}.fc .fc-timegrid-slot:empty:before{content:\"\\a0\"}.fc .fc-timegrid-slot-minor{border-top-style:dotted}.fc .fc-timegrid-slot-label-cushion{display:inline-block;white-space:nowrap}.fc .fc-timegrid-slot-label{vertical-align:middle}.fc .fc-timegrid-axis-cushion,.fc .fc-timegrid-slot-label-cushion{padding:0 4px}.fc .fc-timegrid-axis-frame-liquid{height:100%}.fc .fc-timegrid-axis-frame{overflow:hidden;display:flex;align-items:center;justify-content:flex-end}.fc .fc-timegrid-axis-cushion{max-width:60px;flex-shrink:0}.fc-direction-ltr .fc-timegrid-slot-label-frame{text-align:right}.fc-direction-rtl .fc-timegrid-slot-label-frame{text-align:left}.fc-liquid-hack .fc-timegrid-axis-frame-liquid{height:auto;position:absolute;inset:0}.fc .fc-timegrid-col.fc-day-today{background-color:#ffdc2826;background-color:var(--fc-today-bg-color, rgba(255, 220, 40, .15))}.fc .fc-timegrid-col-frame{min-height:100%;position:relative}.fc-liquid-hack .fc-timegrid-col-frame{height:auto;position:absolute;inset:0}.fc-media-screen .fc-timegrid-cols{position:absolute;inset:0}.fc-media-screen .fc-timegrid-cols>table{height:100%}.fc-media-screen .fc-timegrid-col-bg,.fc-media-screen .fc-timegrid-col-events,.fc-media-screen .fc-timegrid-now-indicator-container{position:absolute;top:0;left:0;right:0}.fc-media-screen .fc-timegrid-event-harness{position:absolute}.fc .fc-timegrid-col-bg{z-index:2}.fc .fc-timegrid-col-bg .fc-non-business{z-index:1}.fc .fc-timegrid-col-bg .fc-bg-event{z-index:2}.fc .fc-timegrid-col-bg .fc-highlight{z-index:3}.fc .fc-timegrid-bg-harness{position:absolute;left:0;right:0}.fc .fc-timegrid-col-events{z-index:3}.fc .fc-timegrid-now-indicator-container{bottom:0;overflow:hidden}.fc-direction-ltr .fc-timegrid-col-events{margin:0 2.5% 0 2px}.fc-direction-rtl .fc-timegrid-col-events{margin:0 2px 0 2.5%}.fc-timegrid-event-harness-inset .fc-timegrid-event,.fc-timegrid-event.fc-event-mirror{box-shadow:0 0 0 1px #fff;box-shadow:0 0 0 1px var(--fc-page-bg-color, #fff)}.fc-timegrid-event{font-size:.85em;font-size:var(--fc-small-font-size, .85em);border-radius:3px}.fc-timegrid-event .fc-event-main{padding:1px 1px 0}.fc-timegrid-event .fc-event-time{white-space:nowrap;font-size:.85em;font-size:var(--fc-small-font-size, .85em);margin-bottom:1px}.fc-timegrid-event-condensed .fc-event-main-frame{flex-direction:row;overflow:hidden}.fc-timegrid-event-condensed .fc-event-time:after{content:\"\\a0-\\a0\"}.fc-timegrid-event-condensed .fc-event-title{font-size:.85em;font-size:var(--fc-small-font-size, .85em)}.fc-media-screen .fc-timegrid-event{position:absolute;inset:0 0 1px}.fc .fc-timegrid-now-indicator-line{position:absolute;z-index:4;left:0;right:0;border-style:solid;border-color:red;border-color:var(--fc-now-indicator-color, red);border-width:1px 0 0}.fc .fc-timegrid-now-indicator-arrow{position:absolute;z-index:4;margin-top:-5px;border-style:solid;border-color:red;border-color:var(--fc-now-indicator-color, red)}.fc-direction-ltr .fc-timegrid-now-indicator-arrow{left:0;border-width:5px 0 5px 6px;border-top-color:transparent;border-bottom-color:transparent}.fc-direction-rtl .fc-timegrid-now-indicator-arrow{right:0;border-width:5px 6px 5px 0;border-top-color:transparent;border-bottom-color:transparent}:root{--fc-list-event-dot-width: 10px;--fc-list-event-hover-bg-color: #f5f5f5}.fc-theme-standard .fc-list{border:1px solid #ddd;border:1px solid var(--fc-border-color, #ddd)}.fc .fc-list-empty{background-color:#d0d0d04d;background-color:var(--fc-neutral-bg-color, rgba(208, 208, 208, .3));height:100%;display:flex;justify-content:center;align-items:center}.fc .fc-list-empty-cushion{margin:5em 0}.fc .fc-list-table{width:100%;border-style:hidden}.fc .fc-list-table tr>*{border-left:0;border-right:0}.fc .fc-list-sticky .fc-list-day>*{position:-webkit-sticky;position:sticky;top:0;background:#fff;background:var(--fc-page-bg-color, #fff)}.fc .fc-list-table th{padding:0}.fc .fc-list-table td,.fc .fc-list-day-cushion{padding:8px 14px}.fc .fc-list-day-cushion:after{content:\"\";clear:both;display:table}.fc-theme-standard .fc-list-day-cushion{background-color:#d0d0d04d;background-color:var(--fc-neutral-bg-color, rgba(208, 208, 208, .3))}.fc-direction-ltr .fc-list-day-text,.fc-direction-rtl .fc-list-day-side-text{float:left}.fc-direction-ltr .fc-list-day-side-text,.fc-direction-rtl .fc-list-day-text{float:right}.fc-direction-ltr .fc-list-table .fc-list-event-graphic{padding-right:0}.fc-direction-rtl .fc-list-table .fc-list-event-graphic{padding-left:0}.fc .fc-list-event.fc-event-forced-url{cursor:pointer}.fc .fc-list-event:hover td{background-color:#f5f5f5;background-color:var(--fc-list-event-hover-bg-color, #f5f5f5)}.fc .fc-list-event-graphic,.fc .fc-list-event-time{white-space:nowrap;width:1px}.fc .fc-list-event-dot{display:inline-block;box-sizing:content-box;width:0;height:0;border:5px solid #3788d8;border:calc(var(--fc-list-event-dot-width, 10px) / 2) solid var(--fc-event-border-color, #3788d8);border-radius:5px;border-radius:calc(var(--fc-list-event-dot-width, 10px) / 2)}.fc .fc-list-event-title a{color:inherit;text-decoration:none}.fc .fc-list-event.fc-event-forced-url:hover a{text-decoration:underline}.fc-theme-bootstrap a:not([href]){color:inherit}\n"] }]
622
620
  }], () => [{ type: i0.Injector }, { type: i1.AbstractI18nService }, { type: undefined, decorators: [{
623
621
  type: Inject,
624
622
  args: ['EXPLICIT_CONTEXT']
@@ -632,4 +630,4 @@ export class CalendarComponent extends StylableComponent {
632
630
  args: ['datepicker']
633
631
  }] }); })();
634
632
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CalendarComponent, { className: "CalendarComponent", filePath: "calendar.component.ts", lineNumber: 102 }); })();
635
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2lucHV0L2NhbGVuZGFyL3NyYy9jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvY2FsZW5kYXIvc3JjL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBR1IsUUFBUSxFQUNSLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFDLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFL0YsT0FBTyxFQUNILGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsZ0JBQWdCLEVBRWhCLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsTUFBTSxFQUNULE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUMsTUFBTSxXQUFXLENBQUM7Ozs7OztBQUs3RyxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUM7QUFDbkMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixF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QUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxLQUFLO2dCQUN4QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzVELFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN2QixDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxVQUFVLEtBQUs7Z0JBQzNDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUcsSUFBSSxDQUFDLDhCQUE4QixFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLDhCQUE4QixFQUFFLENBQUM7UUFDMUMsQ0FBQztJQUNMLENBQUM7a0ZBNW1CUSxpQkFBaUIsd0dBK1MyQyxrQkFBa0I7b0VBL1M5RSxpQkFBaUI7Ozs7Ozs7OENBTGY7Z0JBQ1Asa0JBQWtCLENBQUMsaUJBQWlCLENBQUM7YUFDeEM7WUNsR0wsK0JBQXlEOzs7OztpRkRxRzVDLGlCQUFpQjtjQVQ3QixTQUFTOzJCQUNJLGNBQWMsYUFHYjtvQkFDUCxrQkFBa0IsbUJBQW1CO2lCQUN4QyxpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJOztzQkFpVHlCLE1BQU07dUJBQUMsa0JBQWtCOztzQkFBRyxRQUFRO3FCQTVTM0UsU0FBUztrQkFBL0IsU0FBUzttQkFBQyxVQUFVO1lBQ0ksV0FBVztrQkFBbkMsU0FBUzttQkFBQyxZQUFZOztrRkFKZCxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbmplY3QsXG4gICAgSW5qZWN0b3IsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7QWJzdHJhY3RJMThuU2VydmljZSwgZ2V0Q2xvbmVkT2JqZWN0LCBnZXRTZXNzaW9uU3RvcmFnZUl0ZW0sIGlzTW9iaWxlfSBmcm9tICdAd20vY29yZSc7XG5cbmltcG9ydCB7XG4gICAgQVBQTFlfU1RZTEVTX1RZUEUsXG4gICAgY3JlYXRlQXJyYXlGcm9tLFxuICAgIGdldEV2YWx1YXRlZERhdGEsXG4gICAgSVJlZHJhd2FibGVDb21wb25lbnQsXG4gICAgcHJvdmlkZUFzV2lkZ2V0UmVmLFxuICAgIFN0eWxhYmxlQ29tcG9uZW50LFxuICAgIHN0eWxlclxufSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcblxuaW1wb3J0IHtyZWdpc3RlclByb3BzfSBmcm9tICcuL2NhbGVuZGFyLnByb3BzJztcbmltcG9ydCB7Y2FwaXRhbGl6ZSwgY2xvbmUsIGVhY2gsIGV4dGVuZCwgZ2V0LCBpbmNsdWRlcywgaXNEYXRlLCBpc0VtcHR5LCBpc09iamVjdCwgbWFwS2V5c30gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5kZWNsYXJlIGNvbnN0ICQ7XG5kZWNsYXJlIGNvbnN0IG1vbWVudDtcblxuY29uc3QgREVGQVVMVF9DTFMgPSAnYXBwLWNhbGVuZGFyJztcbmNvbnN0IGRhdGVGb3JtYXRzID0gWyd5eXl5LU1NLWRkJywgJ3l5eXktTS1kZCcsICdNLWRkLXl5eXknLCAnTU0tZGQteXknLCAneXl5eSwgZGQgTU1NTScsICd5eXl5LCBNTU0gZGQnLCAnTU0vZGQveXl5eScsICdNL2QveXl5eScsICdFRUUsIGRkIE1NTSB5eXl5JywgJ0VFRSBNTU0gZGQgeXl5eScsICdFRUVFLCBNTU1NIGRkLCB5eXl5JywgJ3RpbWVzdGFtcCddO1xuY29uc3QgZGVmYXVsdEhlYWRlck9wdGlvbnMgPSB7XG4gICAgc3RhcnQ6ICdwcmV2IG5leHQgdG9kYXknLFxuICAgIGNlbnRlcjogJ3RpdGxlJyxcbiAgICBlbmQ6ICdkYXlHcmlkTW9udGggZGF5R3JpZFdlZWsgZGF5R3JpZERheSdcbn07XG5jb25zdCBWSUVXX1RZUEVTID0ge1xuICAgIEJBU0lDOiAnYmFzaWMnLFxuICAgIEFHRU5EQTogJ2FnZW5kYScsXG4gICAgTElTVDogJ2xpc3QnXG59O1xuY29uc3QgQlVUVE9OX1RFWFQgPSB7XG4gICAgWUVBUjogJ1llYXInLFxuICAgIE1PTlRIOiAnTW9udGgnLFxuICAgIFdFRUs6ICdXZWVrJyxcbiAgICBEQVk6ICdEYXknLFxuICAgIFRPREFZOiAnVG9kYXknXG59O1xuY29uc3QgU0VMRUNUSU9OX01PREVTID0ge1xuICAgIE5PTkU6ICdub25lJyxcbiAgICBTSU5HTEU6ICdzaW5nbGUnLFxuICAgIE1VTFRJUExFOiAnbXVsdGlwbGUnXG59O1xuY29uc3QgTkVYVF9EQVlfVEhSRVNIT0xEID0ge1xuICAgIFNUQVJUOiAnMDA6MDAnLFxuICAgIEVORDogJzI0OjAwJ1xufTtcbmNvbnN0IGdldEV2ZW50TW9tZW50VmFsdWUgPSAodmFsdWUsIGtleSkgPT4ge1xuICAgIGxldCBpc0RhdGUgPSBmYWxzZTtcblxuICAgIGRhdGVGb3JtYXRzLmZvckVhY2goKGZvcm1hdCkgPT4ge1xuICAgICAgICAvLyBtb21lbnQgc3VwcG9ydHMgdXBwZXJjYXNlIGZvcm1hdHNcbiAgICAgICAgaWYgKG1vbWVudCh2YWx1ZSwgZm9ybWF0LnRvVXBwZXJDYXNlKCksIHRydWUpLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgaXNEYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gaWYgdGhlIHZhbHVlIGlzIGRhdGUgdGhlbiBmb3IgZW5kIGRhdGUgdGhlIHZhbHVlIHNob3VsZCBiZSBlbmQgb2YgdGhlIGRheSBhcyB0aGUgY2FsZW5kYXIgaXMgYXBwcm94aW1hdGluZyBpdCB0byB0aGUgc3RhcnQuXG4gICAgaWYgKGlzRGF0ZSAmJiBrZXkgPT09ICdlbmQnKSB7XG4gICAgICAgIHJldHVybiBtb21lbnQodmFsdWUpLmVuZE9mKCdkYXknKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbW9tZW50KHZhbHVlKTtcbn07XG5jb25zdCBnZXRVVENEYXRlVGltZSA9IChkYXRlT2JqKSA9PiB7XG4gICAgZGF0ZU9iaiA9IG1vbWVudChkYXRlT2JqKTtcbiAgICBjb25zdCB5ZWFyID0gZGF0ZU9iai5mb3JtYXQoJ1lZWVknKSxcbiAgICAgICAgLy8gamF2YXNjcmlwdCBzdGFydHMgdGhlIG1vbnRoIGNvdW50IGZyb20gJzAnIHdoZXJlIGFzIG1vbWVudCByZXR1cm5zIHRoZSBodW1hbiBjb3VudFxuICAgICAgICBtb250aCA9IGRhdGVPYmouZm9ybWF0KCdNTScpIC0gMSxcbiAgICAgICAgZGF5ID0gZGF0ZU9iai5mb3JtYXQoJ0REJyksXG4gICAgICAgIGhvdXJzID0gZGF0ZU9iai5mb3JtYXQoJ0hIJyksXG4gICAgICAgIG1pbnV0ZXMgPSBkYXRlT2JqLmZvcm1hdCgnbW0nKSxcbiAgICAgICAgc2Vjb25kcyA9IGRhdGVPYmouZm9ybWF0KCdzcycpO1xuICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5LCBob3VycywgbWludXRlcywgc2Vjb25kcyk7XG59O1xuY29uc3QgV0lER0VUX0NPTkZJRyA9IHt3aWRnZXRUeXBlOiAnd20tY2FsZW5kYXInLCBob3N0Q2xhc3M6IERFRkFVTFRfQ0xTfTtcbmNvbnN0IGRhdGVGb3JtYXQgPSAnWVlZWS9NTS9ERCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnW3dtQ2FsZW5kYXJdJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZnVsbGNhbGVuZGFyL21haW4uY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVBc1dpZGdldFJlZihDYWxlbmRhckNvbXBvbmVudClcbiAgICBdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJDb21wb25lbnQgZXh0ZW5kcyBTdHlsYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25EZXN0cm95LCBJUmVkcmF3YWJsZUNvbXBvbmVudCB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcbiAgICAvLyBUaGUgY2FsZW5kYXIgZWxlbWVudCByZWZlcmVuY2VcbiAgICBAVmlld0NoaWxkKCdjYWxlbmRhcicpIF9jYWxlbmRhcjogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdkYXRlcGlja2VyJykgX2RhdGVwaWNrZXI6IEVsZW1lbnRSZWY7XG5cbiAgICBwdWJsaWMgc2VsZWN0ZWRkYXRlczogYW55O1xuICAgIHB1YmxpYyBzZWxlY3RlZGRhdGE6IGFueTtcbiAgICBwdWJsaWMgY3VycmVudHZpZXc6IG9iamVjdDtcbiAgICBwdWJsaWMgZGF0YXNldDogYW55O1xuICAgIHB1YmxpYyBjYWxlbmRhcnR5cGU7XG4gICAgcHVibGljIGNvbnRyb2xzID0gJ25hdmlnYXRpb24sIHRvZGF5LCB5ZWFyLCBtb250aCwgd2VlaywgZGF5JztcbiAgICBwdWJsaWMgZGF0YXZhbHVlO1xuICAgIHB1YmxpYyBldmVudHRpdGxlO1xuICAgIHB1YmxpYyBldmVudHN0YXJ0O1xuICAgIHB1YmxpYyBldmVudGVuZDtcbiAgICBwdWJsaWMgZXZlbnRhbGxkYXk7XG4gICAgcHVibGljIGV2ZW50Y2xhc3M7XG5cbiAgICBwcml2YXRlIGV2ZW50U291cmNlczogQXJyYXk8YW55PiA9IFtdO1xuXG4gICAgcHJpdmF0ZSBkYXRhU2V0RXZlbnRzID0ge1xuICAgICAgICBldmVudHM6IFtdXG4gICAgfTtcbiAgICBwcml2YXRlIG9sZERhdGE7XG4gICAgLy8gbWFwIHRoZSBmdWxsY2FsZW5kYXIgRWxlbWVudCByZW5kZXJlZFxuICAgIHByaXZhdGUgJGZ1bGxDYWxlbmRhcjtcbiAgICAvLyBtb2RlbCB0byB0aGUgbW9iaWxlIGNhbGVuZGFyXG4gICAgcHJpdmF0ZSBwcm94eU1vZGVsO1xuICAgIHByaXZhdGUgZXZlbnREYXRhO1xuICAgIHByaXZhdGUgZXZlbnRzO1xuICAgIHByaXZhdGUgY2hhbmdlc1N0YWNrID0gW107XG5cbiAgICAvLyBjYWxlbmRhck9wdGlvbnMgdG8gdGhlIGNhbGVuZGFyXG4gICAgcHJpdmF0ZSBjYWxlbmRhck9wdGlvbnM6IGFueSA9IHtcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIGhlaWdodDogNjAwLFxuICAgICAgICAgICAgZXZlbnRTb3VyY2VzOiB0aGlzLmV2ZW50U291cmNlcyxcbiAgICAgICAgICAgIGVkaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgbG9jYWxlOiBnZXRTZXNzaW9uU3RvcmFnZUl0ZW0oJ3NlbGVjdGVkTG9jYWxlJykgfHwgJ2VuJyxcbiAgICAgICAgICAgIHNlbGVjdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgbG9uZ1ByZXNzRGVsYXk6IGlzTW9iaWxlKCkgPyAxIDogMTAwMCxcbiAgICAgICAgICAgIGhlYWRlclRvb2xiYXI6IGRlZmF1bHRIZWFkZXJPcHRpb25zLFxuICAgICAgICAgICAgbmV4dERheVRocmVzaG9sZDogTkVYVF9EQVlfVEhSRVNIT0xELFxuICAgICAgICAgICAgdmlld3M6IHtcbiAgICAgICAgICAgICAgICBtb250aDoge1xuICAgICAgICAgICAgICAgICAgICBkYXlNYXhFdmVudHNSb3c6IHRydWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdW5zZWxlY3RBdXRvOiBmYWxzZSxcbiAgICAgICAgICAgIGV2ZW50RHJvcDogdGhpcy5ldmVudERyb3AuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIGV2ZW50UmVzaXplU3RhcnQ6IHRoaXMub25FdmVudENoYW5nZVN0YXJ0LmJpbmQodGhpcyksXG4gICAgICAgICAgICBldmVudERyYWdTdGFydDogdGhpcy5vbkV2ZW50Q2hhbmdlU3RhcnQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIGV2ZW50UmVzaXplOiB0aGlzLmV2ZW50UmVzaXplLmJpbmQodGhpcyksXG4gICAgICAgICAgICBldmVudENsaWNrOiB0aGlzLmV2ZW50Q2xpY2suYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHNlbGVjdDogdGhpcy5zZWxlY3QuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIGV2ZW50RGlkTW91bnQ6IHRoaXMuZXZlbnREaWRNb3VudC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmlld0RpZE1vdW50OiB0aGlzLnZpZXdEaWRNb3VudC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgZGF0ZXNTZXQ6IHRoaXMuZGF0ZXNTZXQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIGRhdGVDbGljazogdGhpcy5kYXRlQ2xpY2suYmluZCh0aGlzKVxuICAgICAgICB9XG4gICAgfTtcbiAgICBwdWJsaWMgdmlldzogc3RyaW5nO1xuICAgIHByaXZhdGUgZGF5Q2xhc3M6IEFycmF5PGFueT4gPSBbXTtcbiAgICBwcml2YXRlIGNhbmNlbExvY2FsZUNoYW5nZVN1YnNjcmlwdGlvbjtcblxuICAgIC8vIHRoaXMgZnVuY3Rpb24gc2VsZWN0cyB0aGUgZGVmYXVsdCBkYXRlIGdpdmVuIGZvciB0aGUgY2FsZW5kYXJcbiAgICBzZWxlY3REYXRlKCkge1xuICAgICAgICBsZXQgc3RhcnQsIGVuZDtcbiAgICAgICAgLy8gY2hlY2tzIGlmIGRhdGF2YWx1ZSBpcyBhbiBvYmplY3QgYW5kIG5vdCBhIERhdGUgb2JqZWN0XG4gICAgICAgIGlmIChpc09iamVjdCh0aGlzLmRhdGF2YWx1ZSkgJiYgIWlzRGF0ZSh0aGlzLmRhdGF2YWx1ZSkpIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHN0YXJ0ID0gbW9tZW50KHRoaXMuZGF0YXZhbHVlLnN0YXJ0KTtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGVuZCAgID0gbW9tZW50KHRoaXMuZGF0YXZhbHVlLmVuZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdGFydCA9IG1vbWVudCh0aGlzLmRhdGF2YWx1ZSk7XG4gICAgICAgICAgICBlbmQgICA9IG1vbWVudCh0aGlzLmRhdGF2YWx1ZSkuYWRkKDEsICdkYXknKS5zdGFydE9mKCdkYXknKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci5nb3RvRGF0ZSggbW9tZW50KHN0YXJ0KS5fZCk7IC8vIGFmdGVyIHNlbGVjdGluZyB0aGUgZGF0ZSBnbyB0byB0aGUgZGF0ZS5cblxuICAgICAgICB0aGlzLiRmdWxsQ2FsZW5kYXIuc2VsZWN0KHN0YXJ0LnZhbHVlT2YoKSwgZW5kLnZhbHVlT2YoKSk7XG4gICAgfVxuXG4gICAgLy8gY2hhbmdlcyB0aGUgY2FsZW5kYXIgdmlldyB0byB0aGUgZGVmYXVsdCBkYXRlIGdpdmVuIGZvciB0aGUgY2FsZW5kYXIuXG4gICAgcHVibGljIGdvdG9EYXRlKCkge1xuICAgICAgICB0aGlzLiRmdWxsQ2FsZW5kYXIuZ290b0RhdGUoIG1vbWVudCh0aGlzLmRhdGF2YWx1ZSkuX2QpO1xuICAgIH1cblxuICAgIC8vIHRoaXMgZnVuY3Rpb24gdGFrZXMgdGhlIGNhbGVuZGFyIHZpZXcgdG8gdGhlIGEgeWVhciBhaGVhZFxuICAgIHB1YmxpYyBnb3RvTmV4dFllYXIoKSB7XG4gICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci5uZXh0WWVhcigpO1xuICAgIH1cblxuICAgIC8vIHRoaXMgZnVuY3Rpb24gdGFrZXMgdGhlIGNhbGVuZGFyIHZpZXcgdG8gdGhlIGEgeWVhciBiZWZvcmVcbiAgICBwdWJsaWMgZ290b1ByZXZZZWFyKCkge1xuICAgICAgICB0aGlzLiRmdWxsQ2FsZW5kYXIucHJldlllYXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB0aGlzIGZ1bmN0aW9uIHRha2VzIHRoZSBjYWxlbmRhciB2aWV3IHRvIHRoZSBzcGVjaWZpZWQgbW9udGhcbiAgICAgKiBAcGFyYW0gbW9udGhWYWwsIDEtMTIgdmFsdWUgb2YgbW9udGhcbiAgICAgKi9cbiAgICBwdWJsaWMgZ290b01vbnRoKG1vbnRoVmFsKSB7XG4gICAgICAgIGxldCBwcmVzZW50RGF5ID0gdGhpcy4kZnVsbENhbGVuZGFyLmdldERhdGUoKTtcbiAgICAgICAgY29uc3QgcHJlc2VudE1vbnRoVmFsID0gcHJlc2VudERheS5nZXRNb250aCgpO1xuICAgICAgICBwcmVzZW50RGF5ID0gbW9tZW50KHByZXNlbnREYXkpO1xuICAgICAgICBpZiAocHJlc2VudE1vbnRoVmFsIDwgbW9udGhWYWwpIHtcbiAgICAgICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci5nb3RvRGF0ZShwcmVzZW50RGF5LmFkZChtb250aFZhbCAtIHByZXNlbnRNb250aFZhbCAtIDEsICdNJykudmFsdWVPZigpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci5nb3RvRGF0ZShwcmVzZW50RGF5LnN1YnRyYWN0KCBwcmVzZW50TW9udGhWYWwgLSBtb250aFZhbCArIDEsICdNJykudmFsdWVPZigpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHRoaXMgZnVuY3Rpb24gdGFrZXMgdGhlIGNhbGVuZGFyIHZpZXcgdG8gdGhlIGEgbW9udGggYWhlYWRcbiAgICBwdWJsaWMgZ290b05leHRNb250aCgpIHtcbiAgICAgICAgY29uc3QgcHJlc2VudERheSA9IG1vbWVudCh0aGlzLiRmdWxsQ2FsZW5kYXIuZ2V0RGF0ZSgpKTtcbiAgICAgICAgdGhpcy4kZnVsbENhbGVuZGFyLmdvdG9EYXRlKHByZXNlbnREYXkuYWRkKDEsICdNJykudmFsdWVPZigpKTtcbiAgICB9XG5cbiAgICAvLyB0aGlzIGZ1bmN0aW9uIHRha2VzIHRoZSBjYWxlbmRhciB2aWV3IHRvIHRoZSBhIG1vbnRoIGJlZm9yZVxuICAgIHB1YmxpYyBnb3RvUHJldk1vbnRoKCkge1xuICAgICAgICBjb25zdCBwcmVzZW50RGF5ID0gbW9tZW50KHRoaXMuJGZ1bGxDYWxlbmRhci5nZXREYXRlKCkpO1xuICAgICAgICB0aGlzLiRmdWxsQ2FsZW5kYXIuZ290b0RhdGUocHJlc2VudERheS5zdWJ0cmFjdCgxLCAnTScpLnZhbHVlT2YoKSk7XG4gICAgfVxuXG5cbiAgICAvLyB0aGlzIGZ1bmN0aW9uIHJlLXJlbmRlcnMgdGhlIGV2ZW50cyBhc3NpZ25lZCB0byB0aGUgY2FsZW5kYXIuXG4gICAgcHVibGljIHJlcmVuZGVyRXZlbnRzKCkge1xuICAgICAgICB0aGlzLiRmdWxsQ2FsZW5kYXIucmVuZGVyKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRTZWxlY3RlZERhdGEoc3RhcnQsIGVuZCkge1xuICAgICAgICBsZXQgZGF0YXNldCA9IHRoaXMuZGF0YXNldDtcbiAgICAgICAgaWYgKCFkYXRhc2V0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWx0ZXJlZERhdGVzID0gW107XG4gICAgICAgIGNvbnN0IGV2ZW50U3RhcnRLZXkgPSB0aGlzLmV2ZW50c3RhcnQgfHwgJ3N0YXJ0JztcbiAgICAgICAgY29uc3QgZXZlbnRFbmRLZXkgPSB0aGlzLmV2ZW50ZW5kIHx8ICdlbmQnO1xuICAgICAgICBjb25zdCBzdGFydERhdGUgPSBtb21lbnQobmV3IERhdGUoc3RhcnQpKS5mb3JtYXQoJ01NL0REL1lZWVknKTtcbiAgICAgICAgY29uc3QgZW5kRGF0ZSA9IG1vbWVudChuZXcgRGF0ZShlbmQpKS5zdWJ0cmFjdCgxLCAnZGF5cycpLmZvcm1hdCgnTU0vREQvWVlZWScpO1xuXG4gICAgICAgIGRhdGFzZXQgPSBkYXRhc2V0LmRhdGEgfHwgZGF0YXNldDtcbiAgICAgICAgZGF0YXNldC5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKCF2YWx1ZVtldmVudFN0YXJ0S2V5XSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGV2ZW50U3RhcnREYXRlICAgPSBtb21lbnQobmV3IERhdGUodmFsdWVbZXZlbnRTdGFydEtleV0pKS5mb3JtYXQoJ01NL0REL1lZWVknKTtcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50RW5kRGF0ZSAgID0gbW9tZW50KG5ldyBEYXRlKHZhbHVlW2V2ZW50RW5kS2V5XSB8fCB2YWx1ZVtldmVudFN0YXJ0S2V5XSkpLmZvcm1hdCgnTU0vREQvWVlZWScpO1xuICAgICAgICAgICAgY29uc3QgZXZlbnRFeGlzdHMgPSBtb21lbnQoZXZlbnRTdGFydERhdGUpLmlzU2FtZU9yQWZ0ZXIoc3RhcnREYXRlKSAmJiBtb21lbnQoZXZlbnRFbmREYXRlKS5pc1NhbWVPckJlZm9yZShlbmREYXRlKTtcbiAgICAgICAgICAgIGlmIChldmVudEV4aXN0cykge1xuICAgICAgICAgICAgICAgIGZpbHRlcmVkRGF0ZXMucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZmlsdGVyZWREYXRlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGV2ZW50RHJvcChldmVudERyb3BJbmZvKSB7XG4gICAgICAgIGxldCBuZXdEYXRhT2JqID0gdGhpcy5jb252ZXJ0RXZlbnRPYmpGb3JPbGRBbmROZXdEYXRhKGV2ZW50RHJvcEluZm8uZXZlbnQpO1xuICAgICAgICBsZXQgb2xkRGF0YU9iaiA9IHRoaXMuY29udmVydEV2ZW50T2JqRm9yT2xkQW5kTmV3RGF0YShldmVudERyb3BJbmZvLm9sZEV2ZW50KTtcbiAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdldmVudGRyb3AnLCB7JGV2ZW50OiBldmVudERyb3BJbmZvLmpzRXZlbnQsICRuZXdEYXRhOiBuZXdEYXRhT2JqLCAkb2xkRGF0YTogb2xkRGF0YU9iaiwgJGRlbHRhOiBldmVudERyb3BJbmZvLmRlbHRhLCAkcmV2ZXJ0RnVuYzogZXZlbnREcm9wSW5mby5yZXZlcnQsICR1aToge30sICR2aWV3OiBldmVudERyb3BJbmZvLnZpZXd9KTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm5zIHRoZSBkZWZhdWx0IGRhdGUgd2hlbiB0aGUgZGF0YXZhbHVlIGlzIHByb3ZpZGVkXG4gICAgZ2V0RGVmYXVsdERhdGUoKSB7XG4gICAgICAgIGlmICh0aGlzLmRhdGF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuZGF0YXZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldERlZmF1bHRPcHRpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jYWxlbmRhck9wdGlvbnM7XG4gICAgfVxuXG4gICAgZ2V0TGliKCkge1xuICAgICAgICByZXR1cm4gJ2Z1bGxjYWxlbmRhcic7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWxlY3QoJHNlbGVjdGlvbkluZm8pIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZGRhdGVzID0ge3N0YXJ0OiBnZXRVVENEYXRlVGltZSgkc2VsZWN0aW9uSW5mby5zdGFydCksIGVuZDogZ2V0VVRDRGF0ZVRpbWUoJHNlbGVjdGlvbkluZm8uZW5kKX07XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRkYXRhID0gdGhpcy5zZXRTZWxlY3RlZERhdGEoJHNlbGVjdGlvbkluZm8uc3RhcnQsICRzZWxlY3Rpb25JbmZvLmVuZCk7XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnc2VsZWN0JywgeyRzdGFydDogJHNlbGVjdGlvbkluZm8uc3RhcnQudmFsdWVPZigpLCAkZW5kOiAkc2VsZWN0aW9uSW5mby5lbmQudmFsdWVPZigpLCAkdmlldzogJHNlbGVjdGlvbkluZm8udmlldywgJGRhdGE6IHRoaXMuc2VsZWN0ZWRkYXRhfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIHRoaXMgZnVuY3Rpb25zIHVuc2VsZWN0cyBhbGwgdGhlIHNlbGVjdGlvbnMgaW4gY2FsZW5kYXJcbiAgICAgKi9cbiAgICBwdWJsaWMgdW5zZWxlY3QoKSB7XG4gICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci51bnNlbGVjdCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHRoaXMgZnVuY3Rpb24gaXMgdG8gYWRkIGV4dGVuZGVkUHJvcHMgZGF0YSB0byB0aGUgZGF0YSBvYmplY3QuXG4gICAgICogdGhpcyBpcyBkb25lIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICogQHBhcmFtIGV2ZW50T2JqIGV2ZW50IG9iamVjdCBhcyBwZXIgbmV3IHZlcnNpb24gKHY1KVxuICAgICAqIEByZXR1cm5zIF9ldmVudE1ldGFkYXRhIGV2ZW50IG9iamVjdCBhcyBwZXIgdGhlIG9sZCB2ZXJzaW9uICh2MylcbiAgICAgKi9cbiAgICBwcml2YXRlIGNvbnZlcnRFdmVudE9iaihldmVudE9iaikge1xuICAgICAgICBpZiAoIWV2ZW50T2JqLmV4dGVuZGVkUHJvcHMuX2V2ZW50TWV0YWRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBldmVudE9iajtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBfZXZlbnRNZXRhZGF0YSA9IGV2ZW50T2JqLmV4dGVuZGVkUHJvcHMuX2V2ZW50TWV0YWRhdGE7XG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihfZXZlbnRNZXRhZGF0YSwgZXZlbnRPYmopO1xuICAgICAgICByZXR1cm4gX2V2ZW50TWV0YWRhdGE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIHRoaXMgZnVuY3Rpb24gaXMgdG8gYWRkIGV4dGVuZGVkUHJvcHMgZGF0YSB0byB0aGUgZGF0YSBvYmplY3QgZXhsdWRpbmcgc3RhcnQgZW5kIHRpdGxlIGFsbERheSBvYmplY3RzIGlmIHRoZSBrZXkgbmFtZSBtYXRjaGVzLlxuICAgICAqICogdGhpcyBpcyBkb25lIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICogQHBhcmFtIGV2ZW50T2JqIGV2ZW50IG9iamVjdCBhcyBwZXIgbmV3IHZlcnNpb24gKHY1KVxuICAgICAqIEByZXR1cm5zIGRhdGEgZXZlbnQgb2JqZWN0IGFzIHBlciB0aGUgb2xkIHZlcnNpb24gKHYzKVxuICAgICAqL1xuICAgIHByaXZhdGUgY29udmVydEV2ZW50T2JqRm9yT2xkQW5kTmV3RGF0YShldmVudE9iaikge1xuICAgICAgICBjb25zdCBfZXZlbnRNZXRhZGF0YSA9IGV2ZW50T2JqLmV4dGVuZGVkUHJvcHM7XG4gICAgICAgIGV4dGVuZChldmVudE9iaiwgX2V2ZW50TWV0YWRhdGEpO1xuICAgICAgICByZXR1cm4gZXZlbnRPYmo7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBldmVudFJlc2l6ZShldmVudFJlc2l6ZUluZm8pIHtcbiAgICAgICAgbGV0IG5ld0RhdGFPYmogPSB0aGlzLmNvbnZlcnRFdmVudE9iakZvck9sZEFuZE5ld0RhdGEoZXZlbnRSZXNpemVJbmZvLmV2ZW50KTtcbiAgICAgICAgbGV0IG9sZERhdGFPYmogPSB0aGlzLmNvbnZlcnRFdmVudE9iakZvck9sZEFuZE5ld0RhdGEoZXZlbnRSZXNpemVJbmZvLm9sZEV2ZW50KTtcbiAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdldmVudHJlc2l6ZScsIHskZXZlbnQ6IGV2ZW50UmVzaXplSW5mby5qc0V2ZW50LCAkbmV3RGF0YTogbmV3RGF0YU9iaiwgJG9sZERhdGE6IG9sZERhdGFPYmosICRkZWx0YTogZXZlbnRSZXNpemVJbmZvLmRlbHRhLCAkcmV2ZXJ0RnVuYzogZXZlbnRSZXNpemVJbmZvLnJldmVydCwgJHVpOiB7fSwgJHZpZXc6IGV2ZW50UmVzaXplSW5mby52aWV3fSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkV2ZW50Q2hhbmdlU3RhcnQoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5vbGREYXRhID0gZ2V0Q2xvbmVkT2JqZWN0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV2ZW50Q2xpY2soZXZlbnRDbGlja0luZm8pIHtcbiAgICAgICAgbGV0IGV2ZW50T2JqID0gdGhpcy5jb252ZXJ0RXZlbnRPYmooZXZlbnRDbGlja0luZm8uZXZlbnQpO1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2V2ZW50Y2xpY2snLCB7JGV2ZW50OiBldmVudENsaWNrSW5mby5qc0V2ZW50LCAkZGF0YTogZXZlbnRPYmosICR2aWV3OiBldmVudENsaWNrSW5mby52aWV3fSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBldmVudERpZE1vdW50KGV2ZW50KSB7XG4gICAgICAgIGxldCBldmVudE9iaiA9IHRoaXMuY29udmVydEV2ZW50T2JqKGV2ZW50LmV2ZW50KTtcbiAgICAgICAgaWYgKHRoaXMuY2FsZW5kYXJ0eXBlID09PSBWSUVXX1RZUEVTLkxJU1QpIHtcbiAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQuZmluZCgnLmZjLWxpc3QtdGFibGUnKS5hZGRDbGFzcygndGFibGUnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2V2ZW50cmVuZGVyJywgeyRldmVudDogZXZlbnQuZWwsICRkYXRhOiBldmVudE9iaiwgJHZpZXc6IGV2ZW50LnZpZXd9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZpZXdEaWRNb3VudCgkdmlldykge1xuICAgICAgICBpZiAodGhpcy5jYWxlbmRhcnR5cGUgPT09IFZJRVdfVFlQRVMuTElTVCkge1xuICAgICAgICAgICAgdGhpcy4kZWxlbWVudC5maW5kKCcuZmMtbGlzdC10YWJsZScpLmFkZENsYXNzKCd0YWJsZScpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygndmlld3JlbmRlcicsIHskdmlldzogJHZpZXd9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGdldHMgY2FsbGVkIHdoZW4gdGhlIHZpZXcgb2YgdGhlIGNhbGVuZGFyIGNoYW5nZXMuXG4gICAgICogQHBhcmFtIGRhdGEgY29udGFpbnMgdGhlIHN0YXJ0IGVuZCBkYXRhIG9mIHRoZSBjYWxlbmRhciB2aWV3LlxuICAgICAqL1xuICAgIHByaXZhdGUgZGF0ZXNTZXQoZGF0YSkge1xuICAgICAgICB0aGlzLmN1cnJlbnR2aWV3ID0ge3N0YXJ0OiBtb21lbnQoZGF0YS5zdGFydCkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKSwgZW5kOiBtb21lbnQoZGF0YS5lbmQpLmZvcm1hdChcIllZWVktTU0tRERcIil9O1xuICAgIH1cblxuICAgIHByaXZhdGUgZGF0ZUNsaWNrKCRpbmZvKSB7XG4gICAgICAgIGNvbnN0IGRhdGVJbmZvID0gZ2V0VVRDRGF0ZVRpbWUoJGluZm8uZGF0ZSkudmFsdWVPZigpO1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2RhdGVjbGljaycsIHskZGF0ZUluZm86IGRhdGVJbmZvfSk7XG4gICAgfVxuXG4gICAgLy8gdXBkYXRlIHRoZSBjYWxlbmRhciBoZWFkZXIgb3B0aW9ucyBvbmNlIHRoZSBjb250cm9scyBjaGFuZ2VzXG4gICAgcHJpdmF0ZSB1cGRhdGVDYWxlbmRhckhlYWRlck9wdGlvbnMoKSB7XG4gICAgICAgIGNvbnN0IGN0cmxzID0gdGhpcy5jb250cm9scywgdmlld1R5cGUgPSB0aGlzLmNhbGVuZGFydHlwZSxcbiAgICAgICAgICAgIHJlZ0V4ID0gbmV3IFJlZ0V4cCgnXFxcXGJkYXlcXFxcYicsICdnJyk7XG4gICAgICAgIGxldCBsZWZ0ID0gJycsIHJpZ2h0ID0gJyc7XG4gICAgICAgIGlmIChjdHJscyAmJiB2aWV3VHlwZSkge1xuICAgICAgICAgICAgaWYgKGluY2x1ZGVzKGN0cmxzLCAnbmF2aWdhdGlvbicpKSB7XG4gICAgICAgICAgICAgICAgbGVmdCArPSAnIHByZXYgbmV4dCc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpbmNsdWRlcyhjdHJscywgJ3RvZGF5JykpIHtcbiAgICAgICAgICAgICAgICBsZWZ0ICs9ICcgdG9kYXknO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaW5jbHVkZXMoY3RybHMsICd5ZWFyJykpIHtcbiAgICAgICAgICAgICAgICByaWdodCArPSAodmlld1R5cGUgPT09IFZJRVdfVFlQRVMuTElTVCkgPyAnbGlzdFllYXInIDogJyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpbmNsdWRlcyhjdHJscywgJ21vbnRoJykpIHtcbiAgICAgICAgICAgICAgICByaWdodCArPSAodmlld1R5cGUgPT09IFZJRVdfVFlQRVMuTElTVCkgPyAnIGxpc3RNb250aCcgOiAnIGRheUdyaWRNb250aCc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpbmNsdWRlcyhjdHJscywgJ3dlZWsnKSkge1xuICAgICAgICAgICAgICAgIHJpZ2h0ICs9ICh2aWV3VHlwZSA9PT0gVklFV19UWVBFUy5CQVNJQykgPyAgJyBkYXlHcmlkV2VlaycgOiAodmlld1R5cGUgPT09IFZJRVdfVFlQRVMuTElTVCkgPyAnIGxpc3RXZWVrJyA6ICcgdGltZUdyaWRXZWVrJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlZ0V4LnRlc3QoY3RybHMpKSB7XG4gICAgICAgICAgICAgICAgcmlnaHQgKz0gKHZpZXdUeXBlID09PSBWSUVXX1RZUEVTLkJBU0lDKSA/ICAnIGRheUdyaWREYXknIDogKHZpZXdUeXBlID09PSBWSUVXX1RZUEVTLkxJU1QpID8gJyBsaXN0RGF5JyA6ICcgdGltZUdyaWREYXknO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxlZnQuY2hhckF0KDApID09PSAnICcpIHtcbiAgICAgICAgICAgICAgICBsZWZ0ID0gbGVmdC5zdWJzdHJpbmcoMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmlnaHQuY2hhckF0KDApID09PSAnICcpIHtcbiAgICAgICAgICAgICAgICByaWdodCA9IHJpZ2h0LnN1YnN0cmluZygxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGV4dGVuZCh0aGlzLmNhbGVuZGFyT3B0aW9ucy5jYWxlbmRhci5oZWFkZXJUb29sYmFyLCB7J3N0YXJ0JzogbGVmdCwgJ2VuZCc6IHJpZ2h0fSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihpbmo6IEluamVjdG9yLCBpMThuU2VydmljZTogQWJzdHJhY3RJMThuU2VydmljZSwgQEluamVjdCgnRVhQTElDSVRfQ09OVEVYVCcpIEBPcHRpb25hbCgpIGV4cGxpY2l0Q29udGV4dDogYW55KSB7XG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0NPTkZJRywgZXhwbGljaXRDb250ZXh0KTtcblxuICAgICAgICB0aGlzLmV2ZW50U291cmNlcy5wdXNoKHRoaXMuZGF0YVNldEV2ZW50cyk7XG4gICAgICAgIGNvbnN0IEZ1bGxDYWxlbmRhciA9IHdpbmRvd1snRnVsbENhbGVuZGFyJ107XG4gICAgICAgIGlmICghRnVsbENhbGVuZGFyLl9fd21fbG9jYWxlX2luaXRpYWxpemVkKSB7XG4gICAgICAgICAgICBpMThuU2VydmljZS5pbml0Q2FsZW5kYXJMb2NhbGUoKTtcbiAgICAgICAgICAgIEZ1bGxDYWxlbmRhci5fX3dtX2xvY2FsZV9pbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNhbmNlbExvY2FsZUNoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMuZ2V0QXBwSW5zdGFuY2UoKS5zdWJzY3JpYmUoXCJsb2NhbGUtY2hhbmdlZFwiLCAobGliTG9jYWxlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldExvY2FsZSgpO1xuICAgICAgICAgICAgdGhpcy5hcHBseUNhbGVuZGFyT3B0aW9ucygnb3B0aW9uJywgJ2xvY2FsZScsIGxpYkxvY2FsZS5mdWxsQ2FsZW5kYXIgfHwgJ2VuJyk7XG4gICAgICAgICAgICB0aGlzLnJlZHJhdygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgc3R5bGVyKHRoaXMubmF0aXZlRWxlbWVudCwgdGhpcywgQVBQTFlfU1RZTEVTX1RZUEUuQ09OVEFJTkVSLCBbJ2hlaWdodCddKTtcbiAgICAgICAgdGhpcy5zZXRMb2NhbGUoKTtcbiAgICB9XG5cbiAgICBvblN0eWxlQ2hhbmdlKGtleSwgbnYsIG92Pykge1xuICAgICAgICBzdXBlci5vblN0eWxlQ2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgaWYgKGtleSA9PT0gJ2hlaWdodCcpIHtcbiAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJPcHRpb25zLmNhbGVuZGFyLmhlaWdodCA9IHRoaXMuY2FsY3VsYXRlSGVpZ2h0KG52KTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ2FsZW5kYXJPcHRpb25zKCdvcHRpb24nLCAnaGVpZ2h0JywgdGhpcy5jYWxlbmRhck9wdGlvbnMuY2FsZW5kYXIuaGVpZ2h0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3Y/KSB7XG4gICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAnc2VsZWN0aW9ubW9kZSc6XG4gICAgICAgICAgICAgICAgaWYgKG52ICE9PSBTRUxFQ1RJT05fTU9ERVMuTk9ORSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGVuZGFyT3B0aW9ucy5jYWxlbmRhci5zZWxlY3RhYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDYWxlbmRhck9wdGlvbnMoJ29wdGlvbicsICdzZWxlY3RhYmxlJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChudiA9PT0gU0VMRUNUSU9OX01PREVTLlNJTkdMRSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxlbmRhck9wdGlvbnMuY2FsZW5kYXIuc2VsZWN0Q29uc3RyYWludCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFRpbWU6ICcwMDowMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kVGltZTogJzI0OjAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2FsZW5kYXJPcHRpb25zKCdvcHRpb24nLCAnc2VsZWN0Q29uc3RyYWludCcsIHRoaXMuY2FsZW5kYXJPcHRpb25zLmNhbGVuZGFyLnNlbGVjdENvbnN0cmFpbnQpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDYWxlbmRhck9wdGlvbnMoJ29wdGlvbicsICdzZWxlY3RDb25zdHJhaW50Jywge30pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxlbmRhck9wdGlvbnMuY2FsZW5kYXIuc2VsZWN0YWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNhbGVuZGFyT3B0aW9ucygnb3B0aW9uJywgJ3NlbGVjdGFibGUnLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndmlldyc6XG4gICAgICAgICAgICAgICAgaWYgKG52ICE9PSAnbW9udGgnIHx8IHRoaXMuY2FsZW5kYXJ0eXBlID09PSBWSUVXX1RZUEVTLkxJU1QpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxlbmRhck9wdGlvbnMuY2FsZW5kYXIuZGVmYXVsdFZpZXcgPSB0aGlzLmNhbGVuZGFydHlwZSArIGNhcGl0YWxpemUobnYpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJPcHRpb25zLmNhbGVuZGFyLmRlZmF1bHRWaWV3ID0gbnY7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2FsZW5kYXJPcHRpb25zKCdjaGFuZ2VWaWV3JywgdGhpcy5jYWxlbmRhck9wdGlvbnMuY2FsZW5kYXIuZGVmYXVsdFZpZXcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY2FsZW5kYXJ0eXBlJzpcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGVuZGFydHlwZSA9IG52IHx8ICdkYXlHcmlkJztcbiAgICAgICAgICAgIGNhc2UgJ2NvbnRyb2xzJzpcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNhbGVuZGFySGVhZGVyT3B0aW9ucygpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZGF0YXNldCc6XG4gICAgICAgICAgICAgICAgbGV0IGRhdGFTZXQ7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhc2V0ID0gbnY7XG4gICAgICAgICAgICAgICAgZGF0YVNldCA9IGNyZWF0ZUFycmF5RnJvbShnZXRDbG9uZWRPYmplY3QobnYpKTtcbiAgICAgICAgICAgICAgICBkYXRhU2V0ID0gdGhpcy5jb25zdHJ1Y3RDYWxlbmRhckRhdGFzZXQoZGF0YVNldCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhU2V0RXZlbnRzLmV2ZW50cyA9IGRhdGFTZXQuZmlsdGVyKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5zdGFydCA9IGV2ZW50LnN0YXJ0IHx8IGV2ZW50LmVuZDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LnN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJFdmVudERhdGFTZXQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3Nob3cnOlxuICAgICAgICAgICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhcj8uY2hhbmdlVmlldyh0aGlzLmdldFZpZXdUeXBlKHRoaXMudmlldyA/IHRoaXMudmlldyA6ICdkYXlHcmlkTW9udGgnKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB0byBjYWxjdWxhdGUgdGhlIGhlaWdodCBmb3IgdGhlIGV2ZW50IGxpbWl0IGFuZCBwYXJzaW5nIHRoZSB2YWx1ZSB3aGVuIGl0IGlzIHBlcmNlbnRhZ2UgYmFzZWQuXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVIZWlnaHQoaGVpZ2h0KTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgJHBhcmVudCA9ICQodGhpcy5uYXRpdmVFbGVtZW50KS5wYXJlbnQoKSxcbiAgICAgICAgICAgIGVsSGVpZ2h0ID0gaGVpZ2h0IHx8ICc2NTBweCc7XG5cbiAgICAgICAgbGV0IHBhcmVudEhlaWdodDogYW55ID0gJHBhcmVudC5jc3MoJ2hlaWdodCcpLFxuICAgICAgICAgICAgY29tcHV0ZWRIZWlnaHQ6IG51bWJlcjtcblxuICAgICAgICBpZiAoaW5jbHVkZXMoZWxIZWlnaHQsICclJykpIHtcbiAgICAgICAgICAgIGlmIChpbmNsdWRlcyhwYXJlbnRIZWlnaHQsICclJykpIHtcbiAgICAgICAgICAgICAgICBwYXJlbnRIZWlnaHQgPSAkcGFyZW50LmhlaWdodCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29tcHV0ZWRIZWlnaHQgPSAocGFyc2VJbnQocGFyZW50SGVpZ2h0LCAxMCkgKiBOdW1iZXIoZWxIZWlnaHQucmVwbGFjZSgvXFwlL2csICcnKSkpIC8gMTAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29tcHV0ZWRIZWlnaHQgPSBwYXJzZUludChlbEhlaWdodCwgMTApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2FsZW5kYXJPcHRpb25zLmNhbGVuZGFyLnZpZXdzLm1vbnRoLmV2ZW50TGltaXQgPSBwYXJzZUludCgnJyArIGNvbXB1dGVkSGVpZ2h0IC8gMjAwLCAxMCkgKyAxO1xuICAgICAgICByZXR1cm4gY29tcHV0ZWRIZWlnaHQ7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICAgICAgY29uc3QgY2FsZW5kYXJFbCA9IHRoaXMuX2NhbGVuZGFyLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IEZ1bGxDYWxlbmRhciA9IHdpbmRvd1snRnVsbENhbGVuZGFyJ107XG4gICAgICAgIGNvbnN0IGNhbGVuZGFyID0gbmV3IEZ1bGxDYWxlbmRhci5DYWxlbmRhcihjYWxlbmRhckVsLCB0aGlzLmNhbGVuZGFyT3B0aW9ucy5jYWxlbmRhcik7XG4gICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhciA9ICBjYWxlbmRhcjtcbiAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdiZWZvcmVyZW5kZXInLCB7JyRldmVudCcgOiB7fX0pO1xuICAgICAgICBjYWxlbmRhci5yZW5kZXIoKTtcblxuICAgICAgICAvLyBpZiB0aGUgY2hhbmdlcyBhcmUgYWxyZWFkeSBzdGFja2VkIGJlZm9yZSBjYWxlbmRhciByZW5kZXJzIHRoZW4gZXhlY3V0ZSB0aGVtIHdoZW4gbmVlZGVkXG4gICAgICAgIGlmICh0aGlzLmNoYW5nZXNTdGFjay5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlc1N0YWNrLmZvckVhY2goKGNoYW5nZU9iaikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlDYWxlbmRhck9wdGlvbnMoY2hhbmdlT2JqLm9wZXJhdGlvblR5cGUsIGNoYW5nZU9iai5hcmd1bWVudEtleSwgY2hhbmdlT2JqLmFyZ3VtZW50VmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZXNTdGFjay5sZW5ndGggPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9XTVMtMjI0MTIgOiBjaGFuZ2UgY2FsZW5kZXIncyB2aWV3IGJhc2VkIG9uIHRoZSBjb25maWd1cmF0aW9uIHNldCBmcm9tIHN0dWRpb1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci5jaGFuZ2VWaWV3KHRoaXMuZ2V0Vmlld1R5cGUodGhpcy52aWV3ID8gdGhpcy52aWV3IDogJ2RheUdyaWRNb250aCcpKTtcbiAgICAgICAgfSw1MCk7XG4gICAgfVxuXG4gICAgLy8gY29uc3RydWN0cyB0aGUgY2FsZW5kYXIgZGF0YXNldCBieSBtYXBwaW5nIHRoZSBldmVudHN0YXJ0LCBldmVudGVuZCwgZXZlbnR0aXRsZSBldGMuLFxuICAgIHByaXZhdGUgY29uc3RydWN0Q2FsZW5kYXJEYXRhc2V0KGV2ZW50U291cmNlKSB7XG4gICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSB7XG4gICAgICAgICAgICB0aXRsZTogdGhpcy5ldmVudHRpdGxlIHx8ICd0aXRsZScsXG4gICAgICAgICAgICBhbGxEYXk6IHRoaXMuZXZlbnRhbGxkYXkgfHwgJ2FsbGRheScsXG4gICAgICAgICAgICBzdGFydDogdGhpcy5ldmVudHN0YXJ0IHx8ICdzdGFydCcsXG4gICAgICAgICAgICBlbmQ6IHRoaXMuZXZlbnRlbmQgfHwgJ2VuZCcsXG4gICAgICAgICAgICBjbGFzc05hbWU6IHRoaXMuZXZlbnRjbGFzcyB8fCAnY2xhc3NOYW1lJ1xuICAgICAgICB9O1xuXG4gICAgICAgIGV2ZW50U291cmNlLmZvckVhY2goKG9iaikgPT4ge1xuICAgICAgICAgICAgb2JqLl9ldmVudE1ldGFkYXRhID0gY2xvbmUob2JqKTtcbiAgICAgICAgICAgIGlmIChpc0VtcHR5KG9iai5fZXZlbnRNZXRhZGF0YS51cmwpKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG9iai5fZXZlbnRNZXRhZGF0YS51cmw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNFbXB0eShvYmoudXJsKSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBvYmoudXJsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBtYXBLZXlzKHByb3BlcnRpZXMsICh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IG9ialZhbDtcbiAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSAndGl0bGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIG9ialZhbCA9IGdldEV2YWx1YXRlZERhdGEob2JqLCB7ZXhwcmVzc2lvbjogdmFsdWV9LCB0aGlzLnZpZXdQYXJlbnQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnYWxsRGF5Jykge1xuICAgICAgICAgICAgICAgICAgICBvYmpWYWwgPSAhIWdldChvYmosIHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvYmpWYWwgPSBnZXQob2JqLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghb2JqVmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb2JqW2tleV0gPSBvYmpWYWw7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBldmVudFNvdXJjZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldExvY2FsZSgpIHtcbiAgICAgICAgY29uc3QgeWVhciA9IGdldCh0aGlzLmFwcExvY2FsZSwgJ0xBQkVMX0NBTEVOREFSX1lFQVInKSB8fCBCVVRUT05fVEVYVC5ZRUFSO1xuICAgICAgICBjb25zdCBtb250aCA9IGdldCh0aGlzLmFwcExvY2FsZSwgJ0xBQkVMX0NBTEVOREFSX01PTlRIJykgfHwgQlVUVE9OX1RFWFQuTU9OVEg7XG4gICAgICAgIGNvbnN0IHdlZWsgPSBnZXQodGhpcy5hcHBMb2NhbGUsICdMQUJFTF9DQUxFTkRBUl9XRUVLJykgfHwgQlVUVE9OX1RFWFQuV0VFSztcbiAgICAgICAgY29uc3QgZGF5ID0gZ2V0KHRoaXMuYXBwTG9jYWxlLCAnTEFCRUxfQ0FMRU5EQVJfREFZJykgfHwgQlVUVE9OX1RFWFQuREFZO1xuICAgICAgICBjb25zdCB0b2RheSA9IGdldCh0aGlzLmFwcExvY2FsZSwgJ0xBQkVMX0NBTEVOREFSX1RPREFZJykgfHwgQlVUVE9OX1RFWFQuVE9EQVk7XG4gICAgICAgIHRoaXMuY2FsZW5kYXJPcHRpb25zLmNhbGVuZGFyLmJ1dHRvblRleHQgICAgPSB7IHllYXIsIG1vbnRoLCB3ZWVrLCBkYXksIHRvZGF5LFxuICAgICAgICAgICAgJ2xpc3RZZWFyJzogeWVhcixcbiAgICAgICAgICAgICdsaXN0TW9udGgnOiBtb250aCxcbiAgICAgICAgICAgICdsaXN0V2Vlayc6IHdlZWssXG4gICAgICAgICAgICAnbGlzdERheSc6IGRheVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGNhbGVuZGFyIG9wdGlvbnMgd2l0aCB0aGUgbmV3U2V0IG9mIG9wdGlvbnNcbiAgICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgICAqL1xuICAgIG92ZXJyaWRlRGVmYXVsdHMob3B0aW9ucykge1xuICAgICAgICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKG9wdGlvbnMpLm1hcChvcHRpb24gPT4gdGhpcy4kZnVsbENhbGVuZGFyLnNldE9wdGlvbihvcHRpb25bMF0sIG9wdGlvblsxXSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaWYgdGhlIG9wZXJhdGlvbnMgYXJlIHBlcmZvcm1lZCBiZWZvcmUgdGhlIGNhbGVuZGFyIHJlbmRlcnMsIHRoZSBjaGFuZ2VzIGFyZSBwdXNoZWQgaW50byBjaGFuZ2VzU3RhY2sgYW5kIHdpbGwgYmUgZXhlY3V0ZWQgYWZ0ZXIgdGhlIGNhbGVuZGFyIGdldHMgcmVuZGVyZWRcbiAgICAgKiBpZiB0aGUgY2FsZW5kYXIgaXMgYWxyZWFkeSByZW5kZXJlZCwgdGhlbiB0aGUgc3BlY2lmaWMgb3BlcmF0aW9uIHdpbGwgYmUgcGVyZm9ybWVkIGFjY29yZGluZyB0byB0aGUgb3BlcmF0aW9uIHR5cGVcbiAgICAgKiBAcGFyYW0gb3BlcmF0aW9uVHlwZVxuICAgICAqIEBwYXJhbSBhcmd1bWVudEtleVxuICAgICAqIEBwYXJhbSBhcmd1bWVudFZhbHVlXG4gICAgICovXG4gICAgdXBkYXRlQ2FsZW5kYXJPcHRpb25zKG9wZXJhdGlvblR5cGU6IHN0cmluZywgYXJndW1lbnRLZXk/OiBhbnksIGFyZ3VtZW50VmFsdWU/OiBhbnkpOiB2b2lkIHsvL1xuICAgICAgICBpZiAoIXRoaXMuJGZ1bGxDYWxlbmRhcikge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VzU3RhY2sucHVzaCh7XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogb3BlcmF0aW9uVHlwZSxcbiAgICAgICAgICAgICAgICBhcmd1bWVudEtleTogYXJndW1lbnRLZXksXG4gICAgICAgICAgICAgICAgYXJndW1lbnRWYWx1ZTogYXJndW1lbnRWYWx1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hcHBseUNhbGVuZGFyT3B0aW9ucyhvcGVyYXRpb25UeXBlLCBhcmd1bWVudEtleSwgYXJndW1lbnRWYWx1ZSk7XG4gICAgfVxuXG4gICAgcmVkcmF3KCkge1xuICAgICAgICB0aGlzLnVwZGF0ZUNhbGVuZGFyT3B0aW9ucygncmVuZGVyJyk7XG4gICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhcj8uY2hhbmdlVmlldyh0aGlzLmdldFZpZXdUeXBlKHRoaXMudmlldyA/IHRoaXMudmlldyA6ICdkYXlHcmlkTW9udGgnKSk7XG4gICAgfVxuXG4gICAgLy8gb24gZGF0ZSBjaGFuZ2UgaW52b2tlIHRoZSBzZWxlY3QgZXZlbnQsIGFuZCBpZiBkYXRlIGhhcyBldmVudCBvbiBpdCB0aGVuIGludm9rZSB0aGUgZXZlbnQgY2xpY2suXG4gICAgcHJpdmF0ZSBvblZhbHVlQ2hhbmdlKHZhbHVlOiBEYXRlKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJveHlNb2RlbCA9IHZhbHVlO1xuICAgICAgICBjb25zdCBzZWxlY3RlZERhdGUgICAgICAgID0gdGhpcy5wcm94eU1vZGVsICYmIG1vbWVudCh0aGlzLnByb3h5TW9kZWwpLnN0YXJ0T2YoJ2RheScpLmZvcm1hdChkYXRlRm9ybWF0KSxcbiAgICAgICAgICAgIHNlbGVjdGVkRXZlbnREYXRhICAgPSB0aGlzLmV2ZW50RGF0YVtzZWxlY3RlZERhdGVdLFxuICAgICAgICAgICAgc3RhcnQgICAgICAgICAgICAgICA9IG1vbWVudCh0aGlzLnByb3h5TW9kZWwpLFxuICAgICAgICAgICAgZW5kICAgICAgICAgICAgICAgICA9IG1vbWVudCh0aGlzLnByb3h5TW9kZWwpLmVuZE9mKCdkYXknKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZGRhdGEgPSBzZWxlY3RlZEV2ZW50RGF0YTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZGRhdGVzID0ge1xuICAgICAgICAgICAgJ3N0YXJ0JzogbW9tZW50KHNlbGVjdGVkRGF0ZSkudmFsdWVPZigpLFxuICAgICAgICAgICAgJ2VuZCcgIDogbW9tZW50KHNlbGVjdGVkRGF0ZSkuZW5kT2YoJ2RheScpLnZhbHVlT2YoKVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNhbGVuZGFyT3B0aW9ucy5jYWxlbmRhci5zZWxlY3Qoc3RhcnQudmFsdWVPZigpLCBlbmQudmFsdWVPZigpLCB7fSwgdGhpcywgc2VsZWN0ZWRFdmVudERhdGEpO1xuICAgICAgICBpZiAoc2VsZWN0ZWRFdmVudERhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJPcHRpb25zLmNhbGVuZGFyLmV2ZW50Q2xpY2soc2VsZWN0ZWRFdmVudERhdGEsIHt9LCB0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gd2lsbCByZWNlaXZlIGFuIG9iamVjdCBjb250YWluaW5nIHNvdXJjZSBvZiBjYWxlbmRhciwgYXBpa2V5IGFuZCBjYWxlbmRhcklkIGFuZCB3aWxsIGludGVncmF0ZSB0aGUgcmVzcGVjdGl2ZSBjYWxlbmRhciB3aXRoIGZ1bGxjYWxlbmRhci5cbiAgICAgKiBAcGFyYW0gZXZlbnRPYmplY3RcbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRXZlbnRTb3VyY2UoZXZlbnRPYmplY3QpIHtcbiAgICAgICAgaWYgKGlzRW1wdHkoZXZlbnRPYmplY3QpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ2FkZEV2ZW50U291cmNlIG1ldGhvZCByZXF1aXJlcyBhbiBvYmplY3QgYXMgYSBwYXJhbWV0ZXIuJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50T2JqZWN0LnNvdXJjZSA9PT0gJ2dvb2dsZScpIHtcbiAgICAgICAgICAgIGlmICghZXZlbnRPYmplY3QuZ29vZ2xlQ2FsZW5kYXJBcGlLZXkgfHwgIWV2ZW50T2JqZWN0Lmdvb2dsZUNhbGVuZGFySWQgKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdGb3IgZ29vZ2xlIGNhbGVuZGFyIGludGVncmF0aW9uLCBcXCdnb29nbGVDYWxlbmRhckFwaUtleVxcJyBhbmQgXFwnZ29vZ2xlQ2FsZW5kYXJJZFxcJyBzaG91bGQgYmUgcGFzc2VkIGluIHRoZSBwYXJhbWV0ZXIgb2JqZWN0LicpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci5zZXRPcHRpb24oJ2dvb2dsZUNhbGVuZGFyQXBpS2V5JywgZXZlbnRPYmplY3QuZ29vZ2xlQ2FsZW5kYXJBcGlLZXkpO1xuICAgICAgICAgICAgdGhpcy4kZnVsbENhbGVuZGFyLmFkZEV2ZW50U291cmNlKHtcbiAgICAgICAgICAgICAgICBnb29nbGVDYWxlbmRhcklkOiBldmVudE9iamVjdC5nb29nbGVDYWxlbmRhcklkXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdldCB0aGUgdmlld1R5cGVLZXkgYWNjb3JkaW5nIHRvIHRoZSBjYWxlbmRhclR5cGUgYW5kIHZpZXdUeXBlIHNlbGVjdGVkXG4gICAgICogQHBhcmFtIHZpZXdLZXlcbiAgICAgKi9cbiAgICBnZXRWaWV3VHlwZSh2aWV3S2V5KSB7XG4gICAgICAgIGNvbnN0IGNhbGVuZGFyVHlwZSA9IHRoaXMuY2FsZW5kYXJ0eXBlO1xuICAgICAgICBjb25zdCB2aWV3ID0gdGhpcy52aWV3O1xuICAgICAgICBsZXQgcmVzdWx0O1xuXG4gICAgICAgIGlmICh2aWV3ID09PSAnbW9udGgnKSB7XG4gICAgICAgICAgICByZXN1bHQgPSAoY2FsZW5kYXJUeXBlID09PSBWSUVXX1RZUEVTLkxJU1QpID8gJ2xpc3RNb250aCcgOiAnZGF5R3JpZE1vbnRoJztcbiAgICAgICAgfSBlbHNlIGlmICh2aWV3ID09PSAnd2VlaycpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IChjYWxlbmRhclR5cGUgPT09IFZJRVdfVFlQRVMuQkFTSUMpID8gICdkYXlHcmlkV2VlaycgOiAoY2FsZW5kYXJUeXBlID09PSBWSUVXX1RZUEVTLkxJU1QpID8gJ2xpc3RXZWVrJyA6ICd0aW1lR3JpZFdlZWsnO1xuICAgICAgICB9IGVsc2UgaWYgKHZpZXcgPT09ICdkYXknKSB7XG4gICAgICAgICAgICByZXN1bHQgPSAoY2FsZW5kYXJUeXBlID09PSBWSUVXX1RZUEVTLkJBU0lDKSA/ICAnZGF5R3JpZERheScgOiAoY2FsZW5kYXJUeXBlID09PSBWSUVXX1RZUEVTLkxJU1QpID8gJ2xpc3REYXknIDogJ3RpbWVHcmlkRGF5JztcbiAgICAgICAgfSBlbHNlIGlmICh2aWV3ID09PSAneWVhcicpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IChjYWxlbmRhclR5cGUgPT09IFZJRVdfVFlQRVMuTElTVCkgPyAnbGlzdFllYXInIDogJyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgPSB2aWV3S2V5O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIG9wZXJhdGlvblR5cGVcbiAgICAgKiBAcGFyYW0gYXJndW1lbnRLZXlcbiAgICAgKiBAcGFyYW0gYXJndW1lbnRWYWx1ZVxuICAgICAqIEhhbmRsZSB2YXJpb3VzIG9wZXJhdGlvbnMgbGlrZSBSZW5kZXJpbmcgQ2FsZW5kYXIsIGNoYW5naW5nIHRoZSBjYWxlbmRhciB2aWV3VHlwZSwgc2V0dGluZyB0aGUgY2FsZW5kYXJPcHRpb25zIGFjY29yZGluZyB0byB0aGUgb3BlcmF0aW9uVHlwZS5cbiAgICAgKi9cbiAgICBhcHBseUNhbGVuZGFyT3B0aW9ucyhvcGVyYXRpb25UeXBlOiBzdHJpbmcsIGFyZ3VtZW50S2V5PzogYW55LCBhcmd1bWVudFZhbHVlPzogYW55KTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAob3BlcmF0aW9uVHlwZSkge1xuICAgICAgICAgICAgY2FzZSAncmVuZGVyJzpcbiAgICAgICAgICAgICAgICB0aGlzLiRmdWxsQ2FsZW5kYXIucmVuZGVyKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdvcHRpb24nOlxuICAgICAgICAgICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci5zZXRPcHRpb24oYXJndW1lbnRLZXksIGFyZ3VtZW50VmFsdWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY2hhbmdlVmlldyc6XG4gICAgICAgICAgICAgICAgY29uc3QgdmlldyA9IHRoaXMuZ2V0Vmlld1R5cGUoYXJndW1lbnRLZXkpO1xuICAgICAgICAgICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci5jaGFuZ2VWaWV3KHZpZXcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyB0aGUgbmV3IGV2ZW50c0RhdGFTZXQgdG8gdGhlIGNhbGVuZGFyIG9iamVjdCB3aXRoIGFkZEV2ZW50IE1ldGhvZCBhbmQgcmUtcmVuZGVycyB0aGUgY2FsZW5kYXJcbiAgICAgKi9cbiAgICByZW5kZXJFdmVudERhdGFTZXQoKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICB0aGlzLiRmdWxsQ2FsZW5kYXIuYmF0Y2hSZW5kZXJpbmcoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBjb25zdCBldmVudHMgPSBzZWxmLiRmdWxsQ2FsZW5kYXIuZ2V0RXZlbnRzKCk7XG4gICAgICAgICAgICBlYWNoKGV2ZW50cywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXZlbnREYXRhID0gc2VsZi4kZnVsbENhbGVuZGFyLmdldEV2ZW50QnlJZChldmVudC5pZCk7XG4gICAgICAgICAgICAgICAgZXZlbnREYXRhLnJlbW92ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBlYWNoKHNlbGYuZGF0YVNldEV2ZW50cy5ldmVudHMsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgIHNlbGYuJGZ1bGxDYWxlbmRhci5hZGRFdmVudChldmVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmKHRoaXMuY2FuY2VsTG9jYWxlQ2hhbmdlU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmNhbmNlbExvY2FsZUNoYW5nZVN1YnNjcmlwdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiAjY2FsZW5kYXIgW2F0dHIuYXJpYS1sYWJlbF09XCJ2aWV3IHx8ICdtb250aCdcIj48L2Rpdj5cbiJdfQ==
633
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2lucHV0L2NhbGVuZGFyL3NyYy9jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvY2FsZW5kYXIvc3JjL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBR1IsUUFBUSxFQUNSLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFDLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFL0YsT0FBTyxFQUNILGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsZ0JBQWdCLEVBRWhCLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsTUFBTSxFQUNULE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUMsTUFBTSxXQUFXLENBQUM7Ozs7OztBQUs3RyxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUM7QUFDbkMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixF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QUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxLQUFLO2dCQUN4QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzVELFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN2QixDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxVQUFVLEtBQUs7Z0JBQzNDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUcsSUFBSSxDQUFDLDhCQUE4QixFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLDhCQUE4QixFQUFFLENBQUM7UUFDMUMsQ0FBQztJQUNMLENBQUM7a0ZBNW1CUSxpQkFBaUIsd0dBK1MyQyxrQkFBa0I7b0VBL1M5RSxpQkFBaUI7Ozs7Ozs7OENBTGY7Z0JBQ1Asa0JBQWtCLENBQUMsaUJBQWlCLENBQUM7YUFDeEM7WUNsR0wsK0JBQXFCOzs7aUZEcUdSLGlCQUFpQjtjQVQ3QixTQUFTOzJCQUNJLGNBQWMsYUFHYjtvQkFDUCxrQkFBa0IsbUJBQW1CO2lCQUN4QyxpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJOztzQkFpVHlCLE1BQU07dUJBQUMsa0JBQWtCOztzQkFBRyxRQUFRO3FCQTVTM0UsU0FBUztrQkFBL0IsU0FBUzttQkFBQyxVQUFVO1lBQ0ksV0FBVztrQkFBbkMsU0FBUzttQkFBQyxZQUFZOztrRkFKZCxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbmplY3QsXG4gICAgSW5qZWN0b3IsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7QWJzdHJhY3RJMThuU2VydmljZSwgZ2V0Q2xvbmVkT2JqZWN0LCBnZXRTZXNzaW9uU3RvcmFnZUl0ZW0sIGlzTW9iaWxlfSBmcm9tICdAd20vY29yZSc7XG5cbmltcG9ydCB7XG4gICAgQVBQTFlfU1RZTEVTX1RZUEUsXG4gICAgY3JlYXRlQXJyYXlGcm9tLFxuICAgIGdldEV2YWx1YXRlZERhdGEsXG4gICAgSVJlZHJhd2FibGVDb21wb25lbnQsXG4gICAgcHJvdmlkZUFzV2lkZ2V0UmVmLFxuICAgIFN0eWxhYmxlQ29tcG9uZW50LFxuICAgIHN0eWxlclxufSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcblxuaW1wb3J0IHtyZWdpc3RlclByb3BzfSBmcm9tICcuL2NhbGVuZGFyLnByb3BzJztcbmltcG9ydCB7Y2FwaXRhbGl6ZSwgY2xvbmUsIGVhY2gsIGV4dGVuZCwgZ2V0LCBpbmNsdWRlcywgaXNEYXRlLCBpc0VtcHR5LCBpc09iamVjdCwgbWFwS2V5c30gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5kZWNsYXJlIGNvbnN0ICQ7XG5kZWNsYXJlIGNvbnN0IG1vbWVudDtcblxuY29uc3QgREVGQVVMVF9DTFMgPSAnYXBwLWNhbGVuZGFyJztcbmNvbnN0IGRhdGVGb3JtYXRzID0gWyd5eXl5LU1NLWRkJywgJ3l5eXktTS1kZCcsICdNLWRkLXl5eXknLCAnTU0tZGQteXknLCAneXl5eSwgZGQgTU1NTScsICd5eXl5LCBNTU0gZGQnLCAnTU0vZGQveXl5eScsICdNL2QveXl5eScsICdFRUUsIGRkIE1NTSB5eXl5JywgJ0VFRSBNTU0gZGQgeXl5eScsICdFRUVFLCBNTU1NIGRkLCB5eXl5JywgJ3RpbWVzdGFtcCddO1xuY29uc3QgZGVmYXVsdEhlYWRlck9wdGlvbnMgPSB7XG4gICAgc3RhcnQ6ICdwcmV2IG5leHQgdG9kYXknLFxuICAgIGNlbnRlcjogJ3RpdGxlJyxcbiAgICBlbmQ6ICdkYXlHcmlkTW9udGggZGF5R3JpZFdlZWsgZGF5R3JpZERheSdcbn07XG5jb25zdCBWSUVXX1RZUEVTID0ge1xuICAgIEJBU0lDOiAnYmFzaWMnLFxuICAgIEFHRU5EQTogJ2FnZW5kYScsXG4gICAgTElTVDogJ2xpc3QnXG59O1xuY29uc3QgQlVUVE9OX1RFWFQgPSB7XG4gICAgWUVBUjogJ1llYXInLFxuICAgIE1PTlRIOiAnTW9udGgnLFxuICAgIFdFRUs6ICdXZWVrJyxcbiAgICBEQVk6ICdEYXknLFxuICAgIFRPREFZOiAnVG9kYXknXG59O1xuY29uc3QgU0VMRUNUSU9OX01PREVTID0ge1xuICAgIE5PTkU6ICdub25lJyxcbiAgICBTSU5HTEU6ICdzaW5nbGUnLFxuICAgIE1VTFRJUExFOiAnbXVsdGlwbGUnXG59O1xuY29uc3QgTkVYVF9EQVlfVEhSRVNIT0xEID0ge1xuICAgIFNUQVJUOiAnMDA6MDAnLFxuICAgIEVORDogJzI0OjAwJ1xufTtcbmNvbnN0IGdldEV2ZW50TW9tZW50VmFsdWUgPSAodmFsdWUsIGtleSkgPT4ge1xuICAgIGxldCBpc0RhdGUgPSBmYWxzZTtcblxuICAgIGRhdGVGb3JtYXRzLmZvckVhY2goKGZvcm1hdCkgPT4ge1xuICAgICAgICAvLyBtb21lbnQgc3VwcG9ydHMgdXBwZXJjYXNlIGZvcm1hdHNcbiAgICAgICAgaWYgKG1vbWVudCh2YWx1ZSwgZm9ybWF0LnRvVXBwZXJDYXNlKCksIHRydWUpLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgaXNEYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gaWYgdGhlIHZhbHVlIGlzIGRhdGUgdGhlbiBmb3IgZW5kIGRhdGUgdGhlIHZhbHVlIHNob3VsZCBiZSBlbmQgb2YgdGhlIGRheSBhcyB0aGUgY2FsZW5kYXIgaXMgYXBwcm94aW1hdGluZyBpdCB0byB0aGUgc3RhcnQuXG4gICAgaWYgKGlzRGF0ZSAmJiBrZXkgPT09ICdlbmQnKSB7XG4gICAgICAgIHJldHVybiBtb21lbnQodmFsdWUpLmVuZE9mKCdkYXknKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbW9tZW50KHZhbHVlKTtcbn07XG5jb25zdCBnZXRVVENEYXRlVGltZSA9IChkYXRlT2JqKSA9PiB7XG4gICAgZGF0ZU9iaiA9IG1vbWVudChkYXRlT2JqKTtcbiAgICBjb25zdCB5ZWFyID0gZGF0ZU9iai5mb3JtYXQoJ1lZWVknKSxcbiAgICAgICAgLy8gamF2YXNjcmlwdCBzdGFydHMgdGhlIG1vbnRoIGNvdW50IGZyb20gJzAnIHdoZXJlIGFzIG1vbWVudCByZXR1cm5zIHRoZSBodW1hbiBjb3VudFxuICAgICAgICBtb250aCA9IGRhdGVPYmouZm9ybWF0KCdNTScpIC0gMSxcbiAgICAgICAgZGF5ID0gZGF0ZU9iai5mb3JtYXQoJ0REJyksXG4gICAgICAgIGhvdXJzID0gZGF0ZU9iai5mb3JtYXQoJ0hIJyksXG4gICAgICAgIG1pbnV0ZXMgPSBkYXRlT2JqLmZvcm1hdCgnbW0nKSxcbiAgICAgICAgc2Vjb25kcyA9IGRhdGVPYmouZm9ybWF0KCdzcycpO1xuICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5LCBob3VycywgbWludXRlcywgc2Vjb25kcyk7XG59O1xuY29uc3QgV0lER0VUX0NPTkZJRyA9IHt3aWRnZXRUeXBlOiAnd20tY2FsZW5kYXInLCBob3N0Q2xhc3M6IERFRkFVTFRfQ0xTfTtcbmNvbnN0IGRhdGVGb3JtYXQgPSAnWVlZWS9NTS9ERCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnW3dtQ2FsZW5kYXJdJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZnVsbGNhbGVuZGFyL21haW4uY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVBc1dpZGdldFJlZihDYWxlbmRhckNvbXBvbmVudClcbiAgICBdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJDb21wb25lbnQgZXh0ZW5kcyBTdHlsYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25EZXN0cm95LCBJUmVkcmF3YWJsZUNvbXBvbmVudCB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcbiAgICAvLyBUaGUgY2FsZW5kYXIgZWxlbWVudCByZWZlcmVuY2VcbiAgICBAVmlld0NoaWxkKCdjYWxlbmRhcicpIF9jYWxlbmRhcjogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdkYXRlcGlja2VyJykgX2RhdGVwaWNrZXI6IEVsZW1lbnRSZWY7XG5cbiAgICBwdWJsaWMgc2VsZWN0ZWRkYXRlczogYW55O1xuICAgIHB1YmxpYyBzZWxlY3RlZGRhdGE6IGFueTtcbiAgICBwdWJsaWMgY3VycmVudHZpZXc6IG9iamVjdDtcbiAgICBwdWJsaWMgZGF0YXNldDogYW55O1xuICAgIHB1YmxpYyBjYWxlbmRhcnR5cGU7XG4gICAgcHVibGljIGNvbnRyb2xzID0gJ25hdmlnYXRpb24sIHRvZGF5LCB5ZWFyLCBtb250aCwgd2VlaywgZGF5JztcbiAgICBwdWJsaWMgZGF0YXZhbHVlO1xuICAgIHB1YmxpYyBldmVudHRpdGxlO1xuICAgIHB1YmxpYyBldmVudHN0YXJ0O1xuICAgIHB1YmxpYyBldmVudGVuZDtcbiAgICBwdWJsaWMgZXZlbnRhbGxkYXk7XG4gICAgcHVibGljIGV2ZW50Y2xhc3M7XG5cbiAgICBwcml2YXRlIGV2ZW50U291cmNlczogQXJyYXk8YW55PiA9IFtdO1xuXG4gICAgcHJpdmF0ZSBkYXRhU2V0RXZlbnRzID0ge1xuICAgICAgICBldmVudHM6IFtdXG4gICAgfTtcbiAgICBwcml2YXRlIG9sZERhdGE7XG4gICAgLy8gbWFwIHRoZSBmdWxsY2FsZW5kYXIgRWxlbWVudCByZW5kZXJlZFxuICAgIHByaXZhdGUgJGZ1bGxDYWxlbmRhcjtcbiAgICAvLyBtb2RlbCB0byB0aGUgbW9iaWxlIGNhbGVuZGFyXG4gICAgcHJpdmF0ZSBwcm94eU1vZGVsO1xuICAgIHByaXZhdGUgZXZlbnREYXRhO1xuICAgIHByaXZhdGUgZXZlbnRzO1xuICAgIHByaXZhdGUgY2hhbmdlc1N0YWNrID0gW107XG5cbiAgICAvLyBjYWxlbmRhck9wdGlvbnMgdG8gdGhlIGNhbGVuZGFyXG4gICAgcHJpdmF0ZSBjYWxlbmRhck9wdGlvbnM6IGFueSA9IHtcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIGhlaWdodDogNjAwLFxuICAgICAgICAgICAgZXZlbnRTb3VyY2VzOiB0aGlzLmV2ZW50U291cmNlcyxcbiAgICAgICAgICAgIGVkaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgbG9jYWxlOiBnZXRTZXNzaW9uU3RvcmFnZUl0ZW0oJ3NlbGVjdGVkTG9jYWxlJykgfHwgJ2VuJyxcbiAgICAgICAgICAgIHNlbGVjdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgbG9uZ1ByZXNzRGVsYXk6IGlzTW9iaWxlKCkgPyAxIDogMTAwMCxcbiAgICAgICAgICAgIGhlYWRlclRvb2xiYXI6IGRlZmF1bHRIZWFkZXJPcHRpb25zLFxuICAgICAgICAgICAgbmV4dERheVRocmVzaG9sZDogTkVYVF9EQVlfVEhSRVNIT0xELFxuICAgICAgICAgICAgdmlld3M6IHtcbiAgICAgICAgICAgICAgICBtb250aDoge1xuICAgICAgICAgICAgICAgICAgICBkYXlNYXhFdmVudHNSb3c6IHRydWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdW5zZWxlY3RBdXRvOiBmYWxzZSxcbiAgICAgICAgICAgIGV2ZW50RHJvcDogdGhpcy5ldmVudERyb3AuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIGV2ZW50UmVzaXplU3RhcnQ6IHRoaXMub25FdmVudENoYW5nZVN0YXJ0LmJpbmQodGhpcyksXG4gICAgICAgICAgICBldmVudERyYWdTdGFydDogdGhpcy5vbkV2ZW50Q2hhbmdlU3RhcnQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIGV2ZW50UmVzaXplOiB0aGlzLmV2ZW50UmVzaXplLmJpbmQodGhpcyksXG4gICAgICAgICAgICBldmVudENsaWNrOiB0aGlzLmV2ZW50Q2xpY2suYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHNlbGVjdDogdGhpcy5zZWxlY3QuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIGV2ZW50RGlkTW91bnQ6IHRoaXMuZXZlbnREaWRNb3VudC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmlld0RpZE1vdW50OiB0aGlzLnZpZXdEaWRNb3VudC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgZGF0ZXNTZXQ6IHRoaXMuZGF0ZXNTZXQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIGRhdGVDbGljazogdGhpcy5kYXRlQ2xpY2suYmluZCh0aGlzKVxuICAgICAgICB9XG4gICAgfTtcbiAgICBwdWJsaWMgdmlldzogc3RyaW5nO1xuICAgIHByaXZhdGUgZGF5Q2xhc3M6IEFycmF5PGFueT4gPSBbXTtcbiAgICBwcml2YXRlIGNhbmNlbExvY2FsZUNoYW5nZVN1YnNjcmlwdGlvbjtcblxuICAgIC8vIHRoaXMgZnVuY3Rpb24gc2VsZWN0cyB0aGUgZGVmYXVsdCBkYXRlIGdpdmVuIGZvciB0aGUgY2FsZW5kYXJcbiAgICBzZWxlY3REYXRlKCkge1xuICAgICAgICBsZXQgc3RhcnQsIGVuZDtcbiAgICAgICAgLy8gY2hlY2tzIGlmIGRhdGF2YWx1ZSBpcyBhbiBvYmplY3QgYW5kIG5vdCBhIERhdGUgb2JqZWN0XG4gICAgICAgIGlmIChpc09iamVjdCh0aGlzLmRhdGF2YWx1ZSkgJiYgIWlzRGF0ZSh0aGlzLmRhdGF2YWx1ZSkpIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHN0YXJ0ID0gbW9tZW50KHRoaXMuZGF0YXZhbHVlLnN0YXJ0KTtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGVuZCAgID0gbW9tZW50KHRoaXMuZGF0YXZhbHVlLmVuZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdGFydCA9IG1vbWVudCh0aGlzLmRhdGF2YWx1ZSk7XG4gICAgICAgICAgICBlbmQgICA9IG1vbWVudCh0aGlzLmRhdGF2YWx1ZSkuYWRkKDEsICdkYXknKS5zdGFydE9mKCdkYXknKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci5nb3RvRGF0ZSggbW9tZW50KHN0YXJ0KS5fZCk7IC8vIGFmdGVyIHNlbGVjdGluZyB0aGUgZGF0ZSBnbyB0byB0aGUgZGF0ZS5cblxuICAgICAgICB0aGlzLiRmdWxsQ2FsZW5kYXIuc2VsZWN0KHN0YXJ0LnZhbHVlT2YoKSwgZW5kLnZhbHVlT2YoKSk7XG4gICAgfVxuXG4gICAgLy8gY2hhbmdlcyB0aGUgY2FsZW5kYXIgdmlldyB0byB0aGUgZGVmYXVsdCBkYXRlIGdpdmVuIGZvciB0aGUgY2FsZW5kYXIuXG4gICAgcHVibGljIGdvdG9EYXRlKCkge1xuICAgICAgICB0aGlzLiRmdWxsQ2FsZW5kYXIuZ290b0RhdGUoIG1vbWVudCh0aGlzLmRhdGF2YWx1ZSkuX2QpO1xuICAgIH1cblxuICAgIC8vIHRoaXMgZnVuY3Rpb24gdGFrZXMgdGhlIGNhbGVuZGFyIHZpZXcgdG8gdGhlIGEgeWVhciBhaGVhZFxuICAgIHB1YmxpYyBnb3RvTmV4dFllYXIoKSB7XG4gICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci5uZXh0WWVhcigpO1xuICAgIH1cblxuICAgIC8vIHRoaXMgZnVuY3Rpb24gdGFrZXMgdGhlIGNhbGVuZGFyIHZpZXcgdG8gdGhlIGEgeWVhciBiZWZvcmVcbiAgICBwdWJsaWMgZ290b1ByZXZZZWFyKCkge1xuICAgICAgICB0aGlzLiRmdWxsQ2FsZW5kYXIucHJldlllYXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB0aGlzIGZ1bmN0aW9uIHRha2VzIHRoZSBjYWxlbmRhciB2aWV3IHRvIHRoZSBzcGVjaWZpZWQgbW9udGhcbiAgICAgKiBAcGFyYW0gbW9udGhWYWwsIDEtMTIgdmFsdWUgb2YgbW9udGhcbiAgICAgKi9cbiAgICBwdWJsaWMgZ290b01vbnRoKG1vbnRoVmFsKSB7XG4gICAgICAgIGxldCBwcmVzZW50RGF5ID0gdGhpcy4kZnVsbENhbGVuZGFyLmdldERhdGUoKTtcbiAgICAgICAgY29uc3QgcHJlc2VudE1vbnRoVmFsID0gcHJlc2VudERheS5nZXRNb250aCgpO1xuICAgICAgICBwcmVzZW50RGF5ID0gbW9tZW50KHByZXNlbnREYXkpO1xuICAgICAgICBpZiAocHJlc2VudE1vbnRoVmFsIDwgbW9udGhWYWwpIHtcbiAgICAgICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci5nb3RvRGF0ZShwcmVzZW50RGF5LmFkZChtb250aFZhbCAtIHByZXNlbnRNb250aFZhbCAtIDEsICdNJykudmFsdWVPZigpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci5nb3RvRGF0ZShwcmVzZW50RGF5LnN1YnRyYWN0KCBwcmVzZW50TW9udGhWYWwgLSBtb250aFZhbCArIDEsICdNJykudmFsdWVPZigpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHRoaXMgZnVuY3Rpb24gdGFrZXMgdGhlIGNhbGVuZGFyIHZpZXcgdG8gdGhlIGEgbW9udGggYWhlYWRcbiAgICBwdWJsaWMgZ290b05leHRNb250aCgpIHtcbiAgICAgICAgY29uc3QgcHJlc2VudERheSA9IG1vbWVudCh0aGlzLiRmdWxsQ2FsZW5kYXIuZ2V0RGF0ZSgpKTtcbiAgICAgICAgdGhpcy4kZnVsbENhbGVuZGFyLmdvdG9EYXRlKHByZXNlbnREYXkuYWRkKDEsICdNJykudmFsdWVPZigpKTtcbiAgICB9XG5cbiAgICAvLyB0aGlzIGZ1bmN0aW9uIHRha2VzIHRoZSBjYWxlbmRhciB2aWV3IHRvIHRoZSBhIG1vbnRoIGJlZm9yZVxuICAgIHB1YmxpYyBnb3RvUHJldk1vbnRoKCkge1xuICAgICAgICBjb25zdCBwcmVzZW50RGF5ID0gbW9tZW50KHRoaXMuJGZ1bGxDYWxlbmRhci5nZXREYXRlKCkpO1xuICAgICAgICB0aGlzLiRmdWxsQ2FsZW5kYXIuZ290b0RhdGUocHJlc2VudERheS5zdWJ0cmFjdCgxLCAnTScpLnZhbHVlT2YoKSk7XG4gICAgfVxuXG5cbiAgICAvLyB0aGlzIGZ1bmN0aW9uIHJlLXJlbmRlcnMgdGhlIGV2ZW50cyBhc3NpZ25lZCB0byB0aGUgY2FsZW5kYXIuXG4gICAgcHVibGljIHJlcmVuZGVyRXZlbnRzKCkge1xuICAgICAgICB0aGlzLiRmdWxsQ2FsZW5kYXIucmVuZGVyKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRTZWxlY3RlZERhdGEoc3RhcnQsIGVuZCkge1xuICAgICAgICBsZXQgZGF0YXNldCA9IHRoaXMuZGF0YXNldDtcbiAgICAgICAgaWYgKCFkYXRhc2V0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWx0ZXJlZERhdGVzID0gW107XG4gICAgICAgIGNvbnN0IGV2ZW50U3RhcnRLZXkgPSB0aGlzLmV2ZW50c3RhcnQgfHwgJ3N0YXJ0JztcbiAgICAgICAgY29uc3QgZXZlbnRFbmRLZXkgPSB0aGlzLmV2ZW50ZW5kIHx8ICdlbmQnO1xuICAgICAgICBjb25zdCBzdGFydERhdGUgPSBtb21lbnQobmV3IERhdGUoc3RhcnQpKS5mb3JtYXQoJ01NL0REL1lZWVknKTtcbiAgICAgICAgY29uc3QgZW5kRGF0ZSA9IG1vbWVudChuZXcgRGF0ZShlbmQpKS5zdWJ0cmFjdCgxLCAnZGF5cycpLmZvcm1hdCgnTU0vREQvWVlZWScpO1xuXG4gICAgICAgIGRhdGFzZXQgPSBkYXRhc2V0LmRhdGEgfHwgZGF0YXNldDtcbiAgICAgICAgZGF0YXNldC5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKCF2YWx1ZVtldmVudFN0YXJ0S2V5XSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGV2ZW50U3RhcnREYXRlICAgPSBtb21lbnQobmV3IERhdGUodmFsdWVbZXZlbnRTdGFydEtleV0pKS5mb3JtYXQoJ01NL0REL1lZWVknKTtcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50RW5kRGF0ZSAgID0gbW9tZW50KG5ldyBEYXRlKHZhbHVlW2V2ZW50RW5kS2V5XSB8fCB2YWx1ZVtldmVudFN0YXJ0S2V5XSkpLmZvcm1hdCgnTU0vREQvWVlZWScpO1xuICAgICAgICAgICAgY29uc3QgZXZlbnRFeGlzdHMgPSBtb21lbnQoZXZlbnRTdGFydERhdGUpLmlzU2FtZU9yQWZ0ZXIoc3RhcnREYXRlKSAmJiBtb21lbnQoZXZlbnRFbmREYXRlKS5pc1NhbWVPckJlZm9yZShlbmREYXRlKTtcbiAgICAgICAgICAgIGlmIChldmVudEV4aXN0cykge1xuICAgICAgICAgICAgICAgIGZpbHRlcmVkRGF0ZXMucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZmlsdGVyZWREYXRlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGV2ZW50RHJvcChldmVudERyb3BJbmZvKSB7XG4gICAgICAgIGxldCBuZXdEYXRhT2JqID0gdGhpcy5jb252ZXJ0RXZlbnRPYmpGb3JPbGRBbmROZXdEYXRhKGV2ZW50RHJvcEluZm8uZXZlbnQpO1xuICAgICAgICBsZXQgb2xkRGF0YU9iaiA9IHRoaXMuY29udmVydEV2ZW50T2JqRm9yT2xkQW5kTmV3RGF0YShldmVudERyb3BJbmZvLm9sZEV2ZW50KTtcbiAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdldmVudGRyb3AnLCB7JGV2ZW50OiBldmVudERyb3BJbmZvLmpzRXZlbnQsICRuZXdEYXRhOiBuZXdEYXRhT2JqLCAkb2xkRGF0YTogb2xkRGF0YU9iaiwgJGRlbHRhOiBldmVudERyb3BJbmZvLmRlbHRhLCAkcmV2ZXJ0RnVuYzogZXZlbnREcm9wSW5mby5yZXZlcnQsICR1aToge30sICR2aWV3OiBldmVudERyb3BJbmZvLnZpZXd9KTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm5zIHRoZSBkZWZhdWx0IGRhdGUgd2hlbiB0aGUgZGF0YXZhbHVlIGlzIHByb3ZpZGVkXG4gICAgZ2V0RGVmYXVsdERhdGUoKSB7XG4gICAgICAgIGlmICh0aGlzLmRhdGF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuZGF0YXZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldERlZmF1bHRPcHRpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jYWxlbmRhck9wdGlvbnM7XG4gICAgfVxuXG4gICAgZ2V0TGliKCkge1xuICAgICAgICByZXR1cm4gJ2Z1bGxjYWxlbmRhcic7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWxlY3QoJHNlbGVjdGlvbkluZm8pIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZGRhdGVzID0ge3N0YXJ0OiBnZXRVVENEYXRlVGltZSgkc2VsZWN0aW9uSW5mby5zdGFydCksIGVuZDogZ2V0VVRDRGF0ZVRpbWUoJHNlbGVjdGlvbkluZm8uZW5kKX07XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRkYXRhID0gdGhpcy5zZXRTZWxlY3RlZERhdGEoJHNlbGVjdGlvbkluZm8uc3RhcnQsICRzZWxlY3Rpb25JbmZvLmVuZCk7XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnc2VsZWN0JywgeyRzdGFydDogJHNlbGVjdGlvbkluZm8uc3RhcnQudmFsdWVPZigpLCAkZW5kOiAkc2VsZWN0aW9uSW5mby5lbmQudmFsdWVPZigpLCAkdmlldzogJHNlbGVjdGlvbkluZm8udmlldywgJGRhdGE6IHRoaXMuc2VsZWN0ZWRkYXRhfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIHRoaXMgZnVuY3Rpb25zIHVuc2VsZWN0cyBhbGwgdGhlIHNlbGVjdGlvbnMgaW4gY2FsZW5kYXJcbiAgICAgKi9cbiAgICBwdWJsaWMgdW5zZWxlY3QoKSB7XG4gICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci51bnNlbGVjdCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHRoaXMgZnVuY3Rpb24gaXMgdG8gYWRkIGV4dGVuZGVkUHJvcHMgZGF0YSB0byB0aGUgZGF0YSBvYmplY3QuXG4gICAgICogdGhpcyBpcyBkb25lIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICogQHBhcmFtIGV2ZW50T2JqIGV2ZW50IG9iamVjdCBhcyBwZXIgbmV3IHZlcnNpb24gKHY1KVxuICAgICAqIEByZXR1cm5zIF9ldmVudE1ldGFkYXRhIGV2ZW50IG9iamVjdCBhcyBwZXIgdGhlIG9sZCB2ZXJzaW9uICh2MylcbiAgICAgKi9cbiAgICBwcml2YXRlIGNvbnZlcnRFdmVudE9iaihldmVudE9iaikge1xuICAgICAgICBpZiAoIWV2ZW50T2JqLmV4dGVuZGVkUHJvcHMuX2V2ZW50TWV0YWRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBldmVudE9iajtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBfZXZlbnRNZXRhZGF0YSA9IGV2ZW50T2JqLmV4dGVuZGVkUHJvcHMuX2V2ZW50TWV0YWRhdGE7XG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihfZXZlbnRNZXRhZGF0YSwgZXZlbnRPYmopO1xuICAgICAgICByZXR1cm4gX2V2ZW50TWV0YWRhdGE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIHRoaXMgZnVuY3Rpb24gaXMgdG8gYWRkIGV4dGVuZGVkUHJvcHMgZGF0YSB0byB0aGUgZGF0YSBvYmplY3QgZXhsdWRpbmcgc3RhcnQgZW5kIHRpdGxlIGFsbERheSBvYmplY3RzIGlmIHRoZSBrZXkgbmFtZSBtYXRjaGVzLlxuICAgICAqICogdGhpcyBpcyBkb25lIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICogQHBhcmFtIGV2ZW50T2JqIGV2ZW50IG9iamVjdCBhcyBwZXIgbmV3IHZlcnNpb24gKHY1KVxuICAgICAqIEByZXR1cm5zIGRhdGEgZXZlbnQgb2JqZWN0IGFzIHBlciB0aGUgb2xkIHZlcnNpb24gKHYzKVxuICAgICAqL1xuICAgIHByaXZhdGUgY29udmVydEV2ZW50T2JqRm9yT2xkQW5kTmV3RGF0YShldmVudE9iaikge1xuICAgICAgICBjb25zdCBfZXZlbnRNZXRhZGF0YSA9IGV2ZW50T2JqLmV4dGVuZGVkUHJvcHM7XG4gICAgICAgIGV4dGVuZChldmVudE9iaiwgX2V2ZW50TWV0YWRhdGEpO1xuICAgICAgICByZXR1cm4gZXZlbnRPYmo7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBldmVudFJlc2l6ZShldmVudFJlc2l6ZUluZm8pIHtcbiAgICAgICAgbGV0IG5ld0RhdGFPYmogPSB0aGlzLmNvbnZlcnRFdmVudE9iakZvck9sZEFuZE5ld0RhdGEoZXZlbnRSZXNpemVJbmZvLmV2ZW50KTtcbiAgICAgICAgbGV0IG9sZERhdGFPYmogPSB0aGlzLmNvbnZlcnRFdmVudE9iakZvck9sZEFuZE5ld0RhdGEoZXZlbnRSZXNpemVJbmZvLm9sZEV2ZW50KTtcbiAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdldmVudHJlc2l6ZScsIHskZXZlbnQ6IGV2ZW50UmVzaXplSW5mby5qc0V2ZW50LCAkbmV3RGF0YTogbmV3RGF0YU9iaiwgJG9sZERhdGE6IG9sZERhdGFPYmosICRkZWx0YTogZXZlbnRSZXNpemVJbmZvLmRlbHRhLCAkcmV2ZXJ0RnVuYzogZXZlbnRSZXNpemVJbmZvLnJldmVydCwgJHVpOiB7fSwgJHZpZXc6IGV2ZW50UmVzaXplSW5mby52aWV3fSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkV2ZW50Q2hhbmdlU3RhcnQoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5vbGREYXRhID0gZ2V0Q2xvbmVkT2JqZWN0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV2ZW50Q2xpY2soZXZlbnRDbGlja0luZm8pIHtcbiAgICAgICAgbGV0IGV2ZW50T2JqID0gdGhpcy5jb252ZXJ0RXZlbnRPYmooZXZlbnRDbGlja0luZm8uZXZlbnQpO1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2V2ZW50Y2xpY2snLCB7JGV2ZW50OiBldmVudENsaWNrSW5mby5qc0V2ZW50LCAkZGF0YTogZXZlbnRPYmosICR2aWV3OiBldmVudENsaWNrSW5mby52aWV3fSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBldmVudERpZE1vdW50KGV2ZW50KSB7XG4gICAgICAgIGxldCBldmVudE9iaiA9IHRoaXMuY29udmVydEV2ZW50T2JqKGV2ZW50LmV2ZW50KTtcbiAgICAgICAgaWYgKHRoaXMuY2FsZW5kYXJ0eXBlID09PSBWSUVXX1RZUEVTLkxJU1QpIHtcbiAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQuZmluZCgnLmZjLWxpc3QtdGFibGUnKS5hZGRDbGFzcygndGFibGUnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2V2ZW50cmVuZGVyJywgeyRldmVudDogZXZlbnQuZWwsICRkYXRhOiBldmVudE9iaiwgJHZpZXc6IGV2ZW50LnZpZXd9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZpZXdEaWRNb3VudCgkdmlldykge1xuICAgICAgICBpZiAodGhpcy5jYWxlbmRhcnR5cGUgPT09IFZJRVdfVFlQRVMuTElTVCkge1xuICAgICAgICAgICAgdGhpcy4kZWxlbWVudC5maW5kKCcuZmMtbGlzdC10YWJsZScpLmFkZENsYXNzKCd0YWJsZScpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygndmlld3JlbmRlcicsIHskdmlldzogJHZpZXd9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGdldHMgY2FsbGVkIHdoZW4gdGhlIHZpZXcgb2YgdGhlIGNhbGVuZGFyIGNoYW5nZXMuXG4gICAgICogQHBhcmFtIGRhdGEgY29udGFpbnMgdGhlIHN0YXJ0IGVuZCBkYXRhIG9mIHRoZSBjYWxlbmRhciB2aWV3LlxuICAgICAqL1xuICAgIHByaXZhdGUgZGF0ZXNTZXQoZGF0YSkge1xuICAgICAgICB0aGlzLmN1cnJlbnR2aWV3ID0ge3N0YXJ0OiBtb21lbnQoZGF0YS5zdGFydCkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKSwgZW5kOiBtb21lbnQoZGF0YS5lbmQpLmZvcm1hdChcIllZWVktTU0tRERcIil9O1xuICAgIH1cblxuICAgIHByaXZhdGUgZGF0ZUNsaWNrKCRpbmZvKSB7XG4gICAgICAgIGNvbnN0IGRhdGVJbmZvID0gZ2V0VVRDRGF0ZVRpbWUoJGluZm8uZGF0ZSkudmFsdWVPZigpO1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2RhdGVjbGljaycsIHskZGF0ZUluZm86IGRhdGVJbmZvfSk7XG4gICAgfVxuXG4gICAgLy8gdXBkYXRlIHRoZSBjYWxlbmRhciBoZWFkZXIgb3B0aW9ucyBvbmNlIHRoZSBjb250cm9scyBjaGFuZ2VzXG4gICAgcHJpdmF0ZSB1cGRhdGVDYWxlbmRhckhlYWRlck9wdGlvbnMoKSB7XG4gICAgICAgIGNvbnN0IGN0cmxzID0gdGhpcy5jb250cm9scywgdmlld1R5cGUgPSB0aGlzLmNhbGVuZGFydHlwZSxcbiAgICAgICAgICAgIHJlZ0V4ID0gbmV3IFJlZ0V4cCgnXFxcXGJkYXlcXFxcYicsICdnJyk7XG4gICAgICAgIGxldCBsZWZ0ID0gJycsIHJpZ2h0ID0gJyc7XG4gICAgICAgIGlmIChjdHJscyAmJiB2aWV3VHlwZSkge1xuICAgICAgICAgICAgaWYgKGluY2x1ZGVzKGN0cmxzLCAnbmF2aWdhdGlvbicpKSB7XG4gICAgICAgICAgICAgICAgbGVmdCArPSAnIHByZXYgbmV4dCc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpbmNsdWRlcyhjdHJscywgJ3RvZGF5JykpIHtcbiAgICAgICAgICAgICAgICBsZWZ0ICs9ICcgdG9kYXknO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaW5jbHVkZXMoY3RybHMsICd5ZWFyJykpIHtcbiAgICAgICAgICAgICAgICByaWdodCArPSAodmlld1R5cGUgPT09IFZJRVdfVFlQRVMuTElTVCkgPyAnbGlzdFllYXInIDogJyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpbmNsdWRlcyhjdHJscywgJ21vbnRoJykpIHtcbiAgICAgICAgICAgICAgICByaWdodCArPSAodmlld1R5cGUgPT09IFZJRVdfVFlQRVMuTElTVCkgPyAnIGxpc3RNb250aCcgOiAnIGRheUdyaWRNb250aCc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpbmNsdWRlcyhjdHJscywgJ3dlZWsnKSkge1xuICAgICAgICAgICAgICAgIHJpZ2h0ICs9ICh2aWV3VHlwZSA9PT0gVklFV19UWVBFUy5CQVNJQykgPyAgJyBkYXlHcmlkV2VlaycgOiAodmlld1R5cGUgPT09IFZJRVdfVFlQRVMuTElTVCkgPyAnIGxpc3RXZWVrJyA6ICcgdGltZUdyaWRXZWVrJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlZ0V4LnRlc3QoY3RybHMpKSB7XG4gICAgICAgICAgICAgICAgcmlnaHQgKz0gKHZpZXdUeXBlID09PSBWSUVXX1RZUEVTLkJBU0lDKSA/ICAnIGRheUdyaWREYXknIDogKHZpZXdUeXBlID09PSBWSUVXX1RZUEVTLkxJU1QpID8gJyBsaXN0RGF5JyA6ICcgdGltZUdyaWREYXknO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxlZnQuY2hhckF0KDApID09PSAnICcpIHtcbiAgICAgICAgICAgICAgICBsZWZ0ID0gbGVmdC5zdWJzdHJpbmcoMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmlnaHQuY2hhckF0KDApID09PSAnICcpIHtcbiAgICAgICAgICAgICAgICByaWdodCA9IHJpZ2h0LnN1YnN0cmluZygxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGV4dGVuZCh0aGlzLmNhbGVuZGFyT3B0aW9ucy5jYWxlbmRhci5oZWFkZXJUb29sYmFyLCB7J3N0YXJ0JzogbGVmdCwgJ2VuZCc6IHJpZ2h0fSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihpbmo6IEluamVjdG9yLCBpMThuU2VydmljZTogQWJzdHJhY3RJMThuU2VydmljZSwgQEluamVjdCgnRVhQTElDSVRfQ09OVEVYVCcpIEBPcHRpb25hbCgpIGV4cGxpY2l0Q29udGV4dDogYW55KSB7XG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0NPTkZJRywgZXhwbGljaXRDb250ZXh0KTtcblxuICAgICAgICB0aGlzLmV2ZW50U291cmNlcy5wdXNoKHRoaXMuZGF0YVNldEV2ZW50cyk7XG4gICAgICAgIGNvbnN0IEZ1bGxDYWxlbmRhciA9IHdpbmRvd1snRnVsbENhbGVuZGFyJ107XG4gICAgICAgIGlmICghRnVsbENhbGVuZGFyLl9fd21fbG9jYWxlX2luaXRpYWxpemVkKSB7XG4gICAgICAgICAgICBpMThuU2VydmljZS5pbml0Q2FsZW5kYXJMb2NhbGUoKTtcbiAgICAgICAgICAgIEZ1bGxDYWxlbmRhci5fX3dtX2xvY2FsZV9pbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNhbmNlbExvY2FsZUNoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMuZ2V0QXBwSW5zdGFuY2UoKS5zdWJzY3JpYmUoXCJsb2NhbGUtY2hhbmdlZFwiLCAobGliTG9jYWxlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldExvY2FsZSgpO1xuICAgICAgICAgICAgdGhpcy5hcHBseUNhbGVuZGFyT3B0aW9ucygnb3B0aW9uJywgJ2xvY2FsZScsIGxpYkxvY2FsZS5mdWxsQ2FsZW5kYXIgfHwgJ2VuJyk7XG4gICAgICAgICAgICB0aGlzLnJlZHJhdygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgc3R5bGVyKHRoaXMubmF0aXZlRWxlbWVudCwgdGhpcywgQVBQTFlfU1RZTEVTX1RZUEUuQ09OVEFJTkVSLCBbJ2hlaWdodCddKTtcbiAgICAgICAgdGhpcy5zZXRMb2NhbGUoKTtcbiAgICB9XG5cbiAgICBvblN0eWxlQ2hhbmdlKGtleSwgbnYsIG92Pykge1xuICAgICAgICBzdXBlci5vblN0eWxlQ2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgaWYgKGtleSA9PT0gJ2hlaWdodCcpIHtcbiAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJPcHRpb25zLmNhbGVuZGFyLmhlaWdodCA9IHRoaXMuY2FsY3VsYXRlSGVpZ2h0KG52KTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ2FsZW5kYXJPcHRpb25zKCdvcHRpb24nLCAnaGVpZ2h0JywgdGhpcy5jYWxlbmRhck9wdGlvbnMuY2FsZW5kYXIuaGVpZ2h0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3Y/KSB7XG4gICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAnc2VsZWN0aW9ubW9kZSc6XG4gICAgICAgICAgICAgICAgaWYgKG52ICE9PSBTRUxFQ1RJT05fTU9ERVMuTk9ORSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGVuZGFyT3B0aW9ucy5jYWxlbmRhci5zZWxlY3RhYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDYWxlbmRhck9wdGlvbnMoJ29wdGlvbicsICdzZWxlY3RhYmxlJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChudiA9PT0gU0VMRUNUSU9OX01PREVTLlNJTkdMRSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxlbmRhck9wdGlvbnMuY2FsZW5kYXIuc2VsZWN0Q29uc3RyYWludCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFRpbWU6ICcwMDowMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kVGltZTogJzI0OjAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2FsZW5kYXJPcHRpb25zKCdvcHRpb24nLCAnc2VsZWN0Q29uc3RyYWludCcsIHRoaXMuY2FsZW5kYXJPcHRpb25zLmNhbGVuZGFyLnNlbGVjdENvbnN0cmFpbnQpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDYWxlbmRhck9wdGlvbnMoJ29wdGlvbicsICdzZWxlY3RDb25zdHJhaW50Jywge30pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxlbmRhck9wdGlvbnMuY2FsZW5kYXIuc2VsZWN0YWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNhbGVuZGFyT3B0aW9ucygnb3B0aW9uJywgJ3NlbGVjdGFibGUnLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndmlldyc6XG4gICAgICAgICAgICAgICAgaWYgKG52ICE9PSAnbW9udGgnIHx8IHRoaXMuY2FsZW5kYXJ0eXBlID09PSBWSUVXX1RZUEVTLkxJU1QpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxlbmRhck9wdGlvbnMuY2FsZW5kYXIuZGVmYXVsdFZpZXcgPSB0aGlzLmNhbGVuZGFydHlwZSArIGNhcGl0YWxpemUobnYpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJPcHRpb25zLmNhbGVuZGFyLmRlZmF1bHRWaWV3ID0gbnY7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2FsZW5kYXJPcHRpb25zKCdjaGFuZ2VWaWV3JywgdGhpcy5jYWxlbmRhck9wdGlvbnMuY2FsZW5kYXIuZGVmYXVsdFZpZXcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY2FsZW5kYXJ0eXBlJzpcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGVuZGFydHlwZSA9IG52IHx8ICdkYXlHcmlkJztcbiAgICAgICAgICAgIGNhc2UgJ2NvbnRyb2xzJzpcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNhbGVuZGFySGVhZGVyT3B0aW9ucygpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZGF0YXNldCc6XG4gICAgICAgICAgICAgICAgbGV0IGRhdGFTZXQ7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhc2V0ID0gbnY7XG4gICAgICAgICAgICAgICAgZGF0YVNldCA9IGNyZWF0ZUFycmF5RnJvbShnZXRDbG9uZWRPYmplY3QobnYpKTtcbiAgICAgICAgICAgICAgICBkYXRhU2V0ID0gdGhpcy5jb25zdHJ1Y3RDYWxlbmRhckRhdGFzZXQoZGF0YVNldCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhU2V0RXZlbnRzLmV2ZW50cyA9IGRhdGFTZXQuZmlsdGVyKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5zdGFydCA9IGV2ZW50LnN0YXJ0IHx8IGV2ZW50LmVuZDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LnN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJFdmVudERhdGFTZXQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3Nob3cnOlxuICAgICAgICAgICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhcj8uY2hhbmdlVmlldyh0aGlzLmdldFZpZXdUeXBlKHRoaXMudmlldyA/IHRoaXMudmlldyA6ICdkYXlHcmlkTW9udGgnKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB0byBjYWxjdWxhdGUgdGhlIGhlaWdodCBmb3IgdGhlIGV2ZW50IGxpbWl0IGFuZCBwYXJzaW5nIHRoZSB2YWx1ZSB3aGVuIGl0IGlzIHBlcmNlbnRhZ2UgYmFzZWQuXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVIZWlnaHQoaGVpZ2h0KTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgJHBhcmVudCA9ICQodGhpcy5uYXRpdmVFbGVtZW50KS5wYXJlbnQoKSxcbiAgICAgICAgICAgIGVsSGVpZ2h0ID0gaGVpZ2h0IHx8ICc2NTBweCc7XG5cbiAgICAgICAgbGV0IHBhcmVudEhlaWdodDogYW55ID0gJHBhcmVudC5jc3MoJ2hlaWdodCcpLFxuICAgICAgICAgICAgY29tcHV0ZWRIZWlnaHQ6IG51bWJlcjtcblxuICAgICAgICBpZiAoaW5jbHVkZXMoZWxIZWlnaHQsICclJykpIHtcbiAgICAgICAgICAgIGlmIChpbmNsdWRlcyhwYXJlbnRIZWlnaHQsICclJykpIHtcbiAgICAgICAgICAgICAgICBwYXJlbnRIZWlnaHQgPSAkcGFyZW50LmhlaWdodCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29tcHV0ZWRIZWlnaHQgPSAocGFyc2VJbnQocGFyZW50SGVpZ2h0LCAxMCkgKiBOdW1iZXIoZWxIZWlnaHQucmVwbGFjZSgvXFwlL2csICcnKSkpIC8gMTAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29tcHV0ZWRIZWlnaHQgPSBwYXJzZUludChlbEhlaWdodCwgMTApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2FsZW5kYXJPcHRpb25zLmNhbGVuZGFyLnZpZXdzLm1vbnRoLmV2ZW50TGltaXQgPSBwYXJzZUludCgnJyArIGNvbXB1dGVkSGVpZ2h0IC8gMjAwLCAxMCkgKyAxO1xuICAgICAgICByZXR1cm4gY29tcHV0ZWRIZWlnaHQ7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICAgICAgY29uc3QgY2FsZW5kYXJFbCA9IHRoaXMuX2NhbGVuZGFyLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IEZ1bGxDYWxlbmRhciA9IHdpbmRvd1snRnVsbENhbGVuZGFyJ107XG4gICAgICAgIGNvbnN0IGNhbGVuZGFyID0gbmV3IEZ1bGxDYWxlbmRhci5DYWxlbmRhcihjYWxlbmRhckVsLCB0aGlzLmNhbGVuZGFyT3B0aW9ucy5jYWxlbmRhcik7XG4gICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhciA9ICBjYWxlbmRhcjtcbiAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdiZWZvcmVyZW5kZXInLCB7JyRldmVudCcgOiB7fX0pO1xuICAgICAgICBjYWxlbmRhci5yZW5kZXIoKTtcblxuICAgICAgICAvLyBpZiB0aGUgY2hhbmdlcyBhcmUgYWxyZWFkeSBzdGFja2VkIGJlZm9yZSBjYWxlbmRhciByZW5kZXJzIHRoZW4gZXhlY3V0ZSB0aGVtIHdoZW4gbmVlZGVkXG4gICAgICAgIGlmICh0aGlzLmNoYW5nZXNTdGFjay5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlc1N0YWNrLmZvckVhY2goKGNoYW5nZU9iaikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlDYWxlbmRhck9wdGlvbnMoY2hhbmdlT2JqLm9wZXJhdGlvblR5cGUsIGNoYW5nZU9iai5hcmd1bWVudEtleSwgY2hhbmdlT2JqLmFyZ3VtZW50VmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZXNTdGFjay5sZW5ndGggPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9XTVMtMjI0MTIgOiBjaGFuZ2UgY2FsZW5kZXIncyB2aWV3IGJhc2VkIG9uIHRoZSBjb25maWd1cmF0aW9uIHNldCBmcm9tIHN0dWRpb1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci5jaGFuZ2VWaWV3KHRoaXMuZ2V0Vmlld1R5cGUodGhpcy52aWV3ID8gdGhpcy52aWV3IDogJ2RheUdyaWRNb250aCcpKTtcbiAgICAgICAgfSw1MCk7XG4gICAgfVxuXG4gICAgLy8gY29uc3RydWN0cyB0aGUgY2FsZW5kYXIgZGF0YXNldCBieSBtYXBwaW5nIHRoZSBldmVudHN0YXJ0LCBldmVudGVuZCwgZXZlbnR0aXRsZSBldGMuLFxuICAgIHByaXZhdGUgY29uc3RydWN0Q2FsZW5kYXJEYXRhc2V0KGV2ZW50U291cmNlKSB7XG4gICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSB7XG4gICAgICAgICAgICB0aXRsZTogdGhpcy5ldmVudHRpdGxlIHx8ICd0aXRsZScsXG4gICAgICAgICAgICBhbGxEYXk6IHRoaXMuZXZlbnRhbGxkYXkgfHwgJ2FsbGRheScsXG4gICAgICAgICAgICBzdGFydDogdGhpcy5ldmVudHN0YXJ0IHx8ICdzdGFydCcsXG4gICAgICAgICAgICBlbmQ6IHRoaXMuZXZlbnRlbmQgfHwgJ2VuZCcsXG4gICAgICAgICAgICBjbGFzc05hbWU6IHRoaXMuZXZlbnRjbGFzcyB8fCAnY2xhc3NOYW1lJ1xuICAgICAgICB9O1xuXG4gICAgICAgIGV2ZW50U291cmNlLmZvckVhY2goKG9iaikgPT4ge1xuICAgICAgICAgICAgb2JqLl9ldmVudE1ldGFkYXRhID0gY2xvbmUob2JqKTtcbiAgICAgICAgICAgIGlmIChpc0VtcHR5KG9iai5fZXZlbnRNZXRhZGF0YS51cmwpKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG9iai5fZXZlbnRNZXRhZGF0YS51cmw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNFbXB0eShvYmoudXJsKSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBvYmoudXJsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBtYXBLZXlzKHByb3BlcnRpZXMsICh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IG9ialZhbDtcbiAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSAndGl0bGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIG9ialZhbCA9IGdldEV2YWx1YXRlZERhdGEob2JqLCB7ZXhwcmVzc2lvbjogdmFsdWV9LCB0aGlzLnZpZXdQYXJlbnQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnYWxsRGF5Jykge1xuICAgICAgICAgICAgICAgICAgICBvYmpWYWwgPSAhIWdldChvYmosIHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvYmpWYWwgPSBnZXQob2JqLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghb2JqVmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb2JqW2tleV0gPSBvYmpWYWw7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBldmVudFNvdXJjZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldExvY2FsZSgpIHtcbiAgICAgICAgY29uc3QgeWVhciA9IGdldCh0aGlzLmFwcExvY2FsZSwgJ0xBQkVMX0NBTEVOREFSX1lFQVInKSB8fCBCVVRUT05fVEVYVC5ZRUFSO1xuICAgICAgICBjb25zdCBtb250aCA9IGdldCh0aGlzLmFwcExvY2FsZSwgJ0xBQkVMX0NBTEVOREFSX01PTlRIJykgfHwgQlVUVE9OX1RFWFQuTU9OVEg7XG4gICAgICAgIGNvbnN0IHdlZWsgPSBnZXQodGhpcy5hcHBMb2NhbGUsICdMQUJFTF9DQUxFTkRBUl9XRUVLJykgfHwgQlVUVE9OX1RFWFQuV0VFSztcbiAgICAgICAgY29uc3QgZGF5ID0gZ2V0KHRoaXMuYXBwTG9jYWxlLCAnTEFCRUxfQ0FMRU5EQVJfREFZJykgfHwgQlVUVE9OX1RFWFQuREFZO1xuICAgICAgICBjb25zdCB0b2RheSA9IGdldCh0aGlzLmFwcExvY2FsZSwgJ0xBQkVMX0NBTEVOREFSX1RPREFZJykgfHwgQlVUVE9OX1RFWFQuVE9EQVk7XG4gICAgICAgIHRoaXMuY2FsZW5kYXJPcHRpb25zLmNhbGVuZGFyLmJ1dHRvblRleHQgICAgPSB7IHllYXIsIG1vbnRoLCB3ZWVrLCBkYXksIHRvZGF5LFxuICAgICAgICAgICAgJ2xpc3RZZWFyJzogeWVhcixcbiAgICAgICAgICAgICdsaXN0TW9udGgnOiBtb250aCxcbiAgICAgICAgICAgICdsaXN0V2Vlayc6IHdlZWssXG4gICAgICAgICAgICAnbGlzdERheSc6IGRheVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGNhbGVuZGFyIG9wdGlvbnMgd2l0aCB0aGUgbmV3U2V0IG9mIG9wdGlvbnNcbiAgICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgICAqL1xuICAgIG92ZXJyaWRlRGVmYXVsdHMob3B0aW9ucykge1xuICAgICAgICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKG9wdGlvbnMpLm1hcChvcHRpb24gPT4gdGhpcy4kZnVsbENhbGVuZGFyLnNldE9wdGlvbihvcHRpb25bMF0sIG9wdGlvblsxXSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaWYgdGhlIG9wZXJhdGlvbnMgYXJlIHBlcmZvcm1lZCBiZWZvcmUgdGhlIGNhbGVuZGFyIHJlbmRlcnMsIHRoZSBjaGFuZ2VzIGFyZSBwdXNoZWQgaW50byBjaGFuZ2VzU3RhY2sgYW5kIHdpbGwgYmUgZXhlY3V0ZWQgYWZ0ZXIgdGhlIGNhbGVuZGFyIGdldHMgcmVuZGVyZWRcbiAgICAgKiBpZiB0aGUgY2FsZW5kYXIgaXMgYWxyZWFkeSByZW5kZXJlZCwgdGhlbiB0aGUgc3BlY2lmaWMgb3BlcmF0aW9uIHdpbGwgYmUgcGVyZm9ybWVkIGFjY29yZGluZyB0byB0aGUgb3BlcmF0aW9uIHR5cGVcbiAgICAgKiBAcGFyYW0gb3BlcmF0aW9uVHlwZVxuICAgICAqIEBwYXJhbSBhcmd1bWVudEtleVxuICAgICAqIEBwYXJhbSBhcmd1bWVudFZhbHVlXG4gICAgICovXG4gICAgdXBkYXRlQ2FsZW5kYXJPcHRpb25zKG9wZXJhdGlvblR5cGU6IHN0cmluZywgYXJndW1lbnRLZXk/OiBhbnksIGFyZ3VtZW50VmFsdWU/OiBhbnkpOiB2b2lkIHsvL1xuICAgICAgICBpZiAoIXRoaXMuJGZ1bGxDYWxlbmRhcikge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VzU3RhY2sucHVzaCh7XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogb3BlcmF0aW9uVHlwZSxcbiAgICAgICAgICAgICAgICBhcmd1bWVudEtleTogYXJndW1lbnRLZXksXG4gICAgICAgICAgICAgICAgYXJndW1lbnRWYWx1ZTogYXJndW1lbnRWYWx1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hcHBseUNhbGVuZGFyT3B0aW9ucyhvcGVyYXRpb25UeXBlLCBhcmd1bWVudEtleSwgYXJndW1lbnRWYWx1ZSk7XG4gICAgfVxuXG4gICAgcmVkcmF3KCkge1xuICAgICAgICB0aGlzLnVwZGF0ZUNhbGVuZGFyT3B0aW9ucygncmVuZGVyJyk7XG4gICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhcj8uY2hhbmdlVmlldyh0aGlzLmdldFZpZXdUeXBlKHRoaXMudmlldyA/IHRoaXMudmlldyA6ICdkYXlHcmlkTW9udGgnKSk7XG4gICAgfVxuXG4gICAgLy8gb24gZGF0ZSBjaGFuZ2UgaW52b2tlIHRoZSBzZWxlY3QgZXZlbnQsIGFuZCBpZiBkYXRlIGhhcyBldmVudCBvbiBpdCB0aGVuIGludm9rZSB0aGUgZXZlbnQgY2xpY2suXG4gICAgcHJpdmF0ZSBvblZhbHVlQ2hhbmdlKHZhbHVlOiBEYXRlKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJveHlNb2RlbCA9IHZhbHVlO1xuICAgICAgICBjb25zdCBzZWxlY3RlZERhdGUgICAgICAgID0gdGhpcy5wcm94eU1vZGVsICYmIG1vbWVudCh0aGlzLnByb3h5TW9kZWwpLnN0YXJ0T2YoJ2RheScpLmZvcm1hdChkYXRlRm9ybWF0KSxcbiAgICAgICAgICAgIHNlbGVjdGVkRXZlbnREYXRhICAgPSB0aGlzLmV2ZW50RGF0YVtzZWxlY3RlZERhdGVdLFxuICAgICAgICAgICAgc3RhcnQgICAgICAgICAgICAgICA9IG1vbWVudCh0aGlzLnByb3h5TW9kZWwpLFxuICAgICAgICAgICAgZW5kICAgICAgICAgICAgICAgICA9IG1vbWVudCh0aGlzLnByb3h5TW9kZWwpLmVuZE9mKCdkYXknKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZGRhdGEgPSBzZWxlY3RlZEV2ZW50RGF0YTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZGRhdGVzID0ge1xuICAgICAgICAgICAgJ3N0YXJ0JzogbW9tZW50KHNlbGVjdGVkRGF0ZSkudmFsdWVPZigpLFxuICAgICAgICAgICAgJ2VuZCcgIDogbW9tZW50KHNlbGVjdGVkRGF0ZSkuZW5kT2YoJ2RheScpLnZhbHVlT2YoKVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNhbGVuZGFyT3B0aW9ucy5jYWxlbmRhci5zZWxlY3Qoc3RhcnQudmFsdWVPZigpLCBlbmQudmFsdWVPZigpLCB7fSwgdGhpcywgc2VsZWN0ZWRFdmVudERhdGEpO1xuICAgICAgICBpZiAoc2VsZWN0ZWRFdmVudERhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJPcHRpb25zLmNhbGVuZGFyLmV2ZW50Q2xpY2soc2VsZWN0ZWRFdmVudERhdGEsIHt9LCB0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gd2lsbCByZWNlaXZlIGFuIG9iamVjdCBjb250YWluaW5nIHNvdXJjZSBvZiBjYWxlbmRhciwgYXBpa2V5IGFuZCBjYWxlbmRhcklkIGFuZCB3aWxsIGludGVncmF0ZSB0aGUgcmVzcGVjdGl2ZSBjYWxlbmRhciB3aXRoIGZ1bGxjYWxlbmRhci5cbiAgICAgKiBAcGFyYW0gZXZlbnRPYmplY3RcbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRXZlbnRTb3VyY2UoZXZlbnRPYmplY3QpIHtcbiAgICAgICAgaWYgKGlzRW1wdHkoZXZlbnRPYmplY3QpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ2FkZEV2ZW50U291cmNlIG1ldGhvZCByZXF1aXJlcyBhbiBvYmplY3QgYXMgYSBwYXJhbWV0ZXIuJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50T2JqZWN0LnNvdXJjZSA9PT0gJ2dvb2dsZScpIHtcbiAgICAgICAgICAgIGlmICghZXZlbnRPYmplY3QuZ29vZ2xlQ2FsZW5kYXJBcGlLZXkgfHwgIWV2ZW50T2JqZWN0Lmdvb2dsZUNhbGVuZGFySWQgKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdGb3IgZ29vZ2xlIGNhbGVuZGFyIGludGVncmF0aW9uLCBcXCdnb29nbGVDYWxlbmRhckFwaUtleVxcJyBhbmQgXFwnZ29vZ2xlQ2FsZW5kYXJJZFxcJyBzaG91bGQgYmUgcGFzc2VkIGluIHRoZSBwYXJhbWV0ZXIgb2JqZWN0LicpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci5zZXRPcHRpb24oJ2dvb2dsZUNhbGVuZGFyQXBpS2V5JywgZXZlbnRPYmplY3QuZ29vZ2xlQ2FsZW5kYXJBcGlLZXkpO1xuICAgICAgICAgICAgdGhpcy4kZnVsbENhbGVuZGFyLmFkZEV2ZW50U291cmNlKHtcbiAgICAgICAgICAgICAgICBnb29nbGVDYWxlbmRhcklkOiBldmVudE9iamVjdC5nb29nbGVDYWxlbmRhcklkXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdldCB0aGUgdmlld1R5cGVLZXkgYWNjb3JkaW5nIHRvIHRoZSBjYWxlbmRhclR5cGUgYW5kIHZpZXdUeXBlIHNlbGVjdGVkXG4gICAgICogQHBhcmFtIHZpZXdLZXlcbiAgICAgKi9cbiAgICBnZXRWaWV3VHlwZSh2aWV3S2V5KSB7XG4gICAgICAgIGNvbnN0IGNhbGVuZGFyVHlwZSA9IHRoaXMuY2FsZW5kYXJ0eXBlO1xuICAgICAgICBjb25zdCB2aWV3ID0gdGhpcy52aWV3O1xuICAgICAgICBsZXQgcmVzdWx0O1xuXG4gICAgICAgIGlmICh2aWV3ID09PSAnbW9udGgnKSB7XG4gICAgICAgICAgICByZXN1bHQgPSAoY2FsZW5kYXJUeXBlID09PSBWSUVXX1RZUEVTLkxJU1QpID8gJ2xpc3RNb250aCcgOiAnZGF5R3JpZE1vbnRoJztcbiAgICAgICAgfSBlbHNlIGlmICh2aWV3ID09PSAnd2VlaycpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IChjYWxlbmRhclR5cGUgPT09IFZJRVdfVFlQRVMuQkFTSUMpID8gICdkYXlHcmlkV2VlaycgOiAoY2FsZW5kYXJUeXBlID09PSBWSUVXX1RZUEVTLkxJU1QpID8gJ2xpc3RXZWVrJyA6ICd0aW1lR3JpZFdlZWsnO1xuICAgICAgICB9IGVsc2UgaWYgKHZpZXcgPT09ICdkYXknKSB7XG4gICAgICAgICAgICByZXN1bHQgPSAoY2FsZW5kYXJUeXBlID09PSBWSUVXX1RZUEVTLkJBU0lDKSA/ICAnZGF5R3JpZERheScgOiAoY2FsZW5kYXJUeXBlID09PSBWSUVXX1RZUEVTLkxJU1QpID8gJ2xpc3REYXknIDogJ3RpbWVHcmlkRGF5JztcbiAgICAgICAgfSBlbHNlIGlmICh2aWV3ID09PSAneWVhcicpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IChjYWxlbmRhclR5cGUgPT09IFZJRVdfVFlQRVMuTElTVCkgPyAnbGlzdFllYXInIDogJyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgPSB2aWV3S2V5O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIG9wZXJhdGlvblR5cGVcbiAgICAgKiBAcGFyYW0gYXJndW1lbnRLZXlcbiAgICAgKiBAcGFyYW0gYXJndW1lbnRWYWx1ZVxuICAgICAqIEhhbmRsZSB2YXJpb3VzIG9wZXJhdGlvbnMgbGlrZSBSZW5kZXJpbmcgQ2FsZW5kYXIsIGNoYW5naW5nIHRoZSBjYWxlbmRhciB2aWV3VHlwZSwgc2V0dGluZyB0aGUgY2FsZW5kYXJPcHRpb25zIGFjY29yZGluZyB0byB0aGUgb3BlcmF0aW9uVHlwZS5cbiAgICAgKi9cbiAgICBhcHBseUNhbGVuZGFyT3B0aW9ucyhvcGVyYXRpb25UeXBlOiBzdHJpbmcsIGFyZ3VtZW50S2V5PzogYW55LCBhcmd1bWVudFZhbHVlPzogYW55KTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAob3BlcmF0aW9uVHlwZSkge1xuICAgICAgICAgICAgY2FzZSAncmVuZGVyJzpcbiAgICAgICAgICAgICAgICB0aGlzLiRmdWxsQ2FsZW5kYXIucmVuZGVyKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdvcHRpb24nOlxuICAgICAgICAgICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci5zZXRPcHRpb24oYXJndW1lbnRLZXksIGFyZ3VtZW50VmFsdWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY2hhbmdlVmlldyc6XG4gICAgICAgICAgICAgICAgY29uc3QgdmlldyA9IHRoaXMuZ2V0Vmlld1R5cGUoYXJndW1lbnRLZXkpO1xuICAgICAgICAgICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci5jaGFuZ2VWaWV3KHZpZXcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyB0aGUgbmV3IGV2ZW50c0RhdGFTZXQgdG8gdGhlIGNhbGVuZGFyIG9iamVjdCB3aXRoIGFkZEV2ZW50IE1ldGhvZCBhbmQgcmUtcmVuZGVycyB0aGUgY2FsZW5kYXJcbiAgICAgKi9cbiAgICByZW5kZXJFdmVudERhdGFTZXQoKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICB0aGlzLiRmdWxsQ2FsZW5kYXIuYmF0Y2hSZW5kZXJpbmcoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBjb25zdCBldmVudHMgPSBzZWxmLiRmdWxsQ2FsZW5kYXIuZ2V0RXZlbnRzKCk7XG4gICAgICAgICAgICBlYWNoKGV2ZW50cywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXZlbnREYXRhID0gc2VsZi4kZnVsbENhbGVuZGFyLmdldEV2ZW50QnlJZChldmVudC5pZCk7XG4gICAgICAgICAgICAgICAgZXZlbnREYXRhLnJlbW92ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBlYWNoKHNlbGYuZGF0YVNldEV2ZW50cy5ldmVudHMsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgIHNlbGYuJGZ1bGxDYWxlbmRhci5hZGRFdmVudChldmVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmKHRoaXMuY2FuY2VsTG9jYWxlQ2hhbmdlU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmNhbmNlbExvY2FsZUNoYW5nZVN1YnNjcmlwdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiAjY2FsZW5kYXI+PC9kaXY+XG4iXX0=