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

Sign up to get free protection for your applications and to get access to all the features.
Files changed (318) 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 +1 -6
  40. app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +3 -3
  41. app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +1 -6
  42. app-ng-runtime/components/base/fesm2022/index.mjs +1 -6
  43. app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
  44. app-ng-runtime/components/base/pipes/custom-pipes.d.ts +1 -1
  45. app-ng-runtime/components/basic/default/anchor/anchor.component.d.ts +1 -0
  46. app-ng-runtime/components/basic/default/audio/audio.component.d.ts +3 -0
  47. app-ng-runtime/components/basic/default/bundles/index.umd.js +39 -19
  48. app-ng-runtime/components/basic/default/esm2022/anchor/anchor.component.mjs +4 -4
  49. app-ng-runtime/components/basic/default/esm2022/anchor/anchor.props.mjs +2 -1
  50. app-ng-runtime/components/basic/default/esm2022/audio/audio.component.mjs +14 -6
  51. app-ng-runtime/components/basic/default/esm2022/audio/audio.props.mjs +2 -1
  52. app-ng-runtime/components/basic/default/esm2022/html/html.props.mjs +2 -1
  53. app-ng-runtime/components/basic/default/esm2022/icon/icon.component.mjs +6 -7
  54. app-ng-runtime/components/basic/default/esm2022/icon/icon.props.mjs +2 -1
  55. app-ng-runtime/components/basic/default/esm2022/iframe/iframe.component.mjs +3 -3
  56. app-ng-runtime/components/basic/default/esm2022/iframe/iframe.props.mjs +3 -2
  57. app-ng-runtime/components/basic/default/esm2022/label/label.props.mjs +1 -1
  58. app-ng-runtime/components/basic/default/esm2022/picture/picture.directive.mjs +2 -2
  59. app-ng-runtime/components/basic/default/esm2022/picture/picture.props.mjs +3 -1
  60. app-ng-runtime/components/basic/default/esm2022/spinner/spinner.props.mjs +3 -2
  61. app-ng-runtime/components/basic/default/esm2022/video/video.component.mjs +8 -4
  62. app-ng-runtime/components/basic/default/esm2022/video/video.props.mjs +2 -1
  63. app-ng-runtime/components/basic/default/fesm2022/index.mjs +39 -19
  64. app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
  65. app-ng-runtime/components/basic/default/icon/icon.component.d.ts +1 -0
  66. app-ng-runtime/components/basic/default/iframe/iframe.component.d.ts +1 -0
  67. app-ng-runtime/components/basic/default/picture/picture.directive.d.ts +2 -1
  68. app-ng-runtime/components/basic/default/video/video.component.d.ts +2 -0
  69. app-ng-runtime/components/basic/progress/bundles/index.umd.js +17 -9
  70. app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +9 -5
  71. app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.props.mjs +2 -1
  72. app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +8 -6
  73. app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.props.mjs +2 -1
  74. app-ng-runtime/components/basic/progress/fesm2022/index.mjs +17 -9
  75. app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
  76. app-ng-runtime/components/basic/progress/progress-bar/progress-bar.component.d.ts +2 -0
  77. app-ng-runtime/components/basic/progress/progress-circle/progress-circle.component.d.ts +3 -1
  78. app-ng-runtime/components/basic/rich-text-editor/bundles/index.umd.js +2 -0
  79. app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +2 -1
  80. app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.props.mjs +2 -1
  81. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs +2 -0
  82. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
  83. app-ng-runtime/components/basic/search/bundles/index.umd.js +16 -9
  84. app-ng-runtime/components/basic/search/esm2022/search.component.mjs +19 -13
  85. app-ng-runtime/components/basic/search/esm2022/search.props.mjs +2 -1
  86. app-ng-runtime/components/basic/search/fesm2022/index.mjs +16 -9
  87. app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
  88. app-ng-runtime/components/basic/search/search.component.d.ts +4 -2
  89. app-ng-runtime/components/chart/bundles/index.umd.js +1 -0
  90. app-ng-runtime/components/chart/esm2022/chart.utils.mjs +2 -1
  91. app-ng-runtime/components/chart/fesm2022/index.mjs +1 -0
  92. app-ng-runtime/components/chart/fesm2022/index.mjs.map +1 -1
  93. app-ng-runtime/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +1 -0
  94. app-ng-runtime/components/containers/accordion/bundles/index.umd.js +15 -9
  95. app-ng-runtime/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +13 -10
  96. app-ng-runtime/components/containers/accordion/esm2022/accordion.directive.mjs +4 -1
  97. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs +15 -9
  98. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs.map +1 -1
  99. app-ng-runtime/components/containers/panel/bundles/index.umd.js +14 -14
  100. app-ng-runtime/components/containers/panel/esm2022/panel.component.mjs +15 -15
  101. app-ng-runtime/components/containers/panel/fesm2022/index.mjs +14 -14
  102. app-ng-runtime/components/containers/panel/fesm2022/index.mjs.map +1 -1
  103. app-ng-runtime/components/containers/tabs/bundles/index.umd.js +2 -2
  104. app-ng-runtime/components/containers/tabs/esm2022/tabs.component.mjs +3 -3
  105. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs +2 -2
  106. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs.map +1 -1
  107. app-ng-runtime/components/containers/wizard/bundles/index.umd.js +6 -6
  108. app-ng-runtime/components/containers/wizard/esm2022/wizard.component.mjs +7 -7
  109. app-ng-runtime/components/containers/wizard/fesm2022/index.mjs +6 -6
  110. app-ng-runtime/components/containers/wizard/fesm2022/index.mjs.map +1 -1
  111. app-ng-runtime/components/data/list/bundles/index.umd.js +19 -11
  112. app-ng-runtime/components/data/list/esm2022/list-item.directive.mjs +10 -1
  113. app-ng-runtime/components/data/list/esm2022/list.component.mjs +12 -12
  114. app-ng-runtime/components/data/list/fesm2022/index.mjs +20 -12
  115. app-ng-runtime/components/data/list/fesm2022/index.mjs.map +1 -1
  116. app-ng-runtime/components/data/live-table/bundles/index.umd.js +2 -2
  117. app-ng-runtime/components/data/live-table/esm2022/live-table.component.mjs +3 -3
  118. app-ng-runtime/components/data/live-table/fesm2022/index.mjs +2 -2
  119. app-ng-runtime/components/data/live-table/fesm2022/index.mjs.map +1 -1
  120. app-ng-runtime/components/data/pagination/bundles/index.umd.js +2 -0
  121. app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +3 -1
  122. app-ng-runtime/components/data/pagination/fesm2022/index.mjs +2 -0
  123. app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +1 -1
  124. app-ng-runtime/components/data/table/bundles/index.umd.js +42 -8
  125. app-ng-runtime/components/data/table/esm2022/table-column/table-column.directive.mjs +14 -5
  126. app-ng-runtime/components/data/table/esm2022/table.component.mjs +28 -5
  127. app-ng-runtime/components/data/table/esm2022/table.props.mjs +3 -1
  128. app-ng-runtime/components/data/table/fesm2022/index.mjs +43 -9
  129. app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
  130. app-ng-runtime/components/data/table/table.component.d.ts +7 -0
  131. app-ng-runtime/components/dialogs/alert-dialog/bundles/index.umd.js +6 -4
  132. app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +7 -5
  133. app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs +6 -4
  134. app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
  135. app-ng-runtime/components/dialogs/confirm-dialog/bundles/index.umd.js +8 -5
  136. app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +9 -6
  137. app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs +8 -5
  138. app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
  139. app-ng-runtime/components/dialogs/default/bundles/index.umd.js +9 -3
  140. app-ng-runtime/components/dialogs/default/dialog-header/dialog-header.component.d.ts +2 -1
  141. app-ng-runtime/components/dialogs/default/esm2022/base-dialog.mjs +2 -1
  142. app-ng-runtime/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +9 -4
  143. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +9 -3
  144. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  145. app-ng-runtime/components/dialogs/design-dialog/bundles/index.umd.js +4 -4
  146. app-ng-runtime/components/dialogs/design-dialog/esm2022/dialog.component.mjs +5 -5
  147. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs +4 -4
  148. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
  149. app-ng-runtime/components/dialogs/iframe-dialog/bundles/index.umd.js +9 -5
  150. app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +10 -6
  151. app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs +9 -5
  152. app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
  153. app-ng-runtime/components/dialogs/partial-dialog/bundles/index.umd.js +9 -5
  154. app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +10 -6
  155. app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs +9 -5
  156. app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
  157. app-ng-runtime/components/input/calendar/bundles/index.umd.js +2 -4
  158. app-ng-runtime/components/input/calendar/esm2022/calendar.component.mjs +3 -5
  159. app-ng-runtime/components/input/calendar/fesm2022/index.mjs +2 -4
  160. app-ng-runtime/components/input/calendar/fesm2022/index.mjs.map +1 -1
  161. app-ng-runtime/components/input/chips/bundles/index.umd.js +25 -7
  162. app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +25 -8
  163. app-ng-runtime/components/input/chips/esm2022/chips.props.mjs +2 -1
  164. app-ng-runtime/components/input/chips/fesm2022/index.mjs +25 -7
  165. app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
  166. app-ng-runtime/components/input/color-picker/bundles/index.umd.js +5 -3
  167. app-ng-runtime/components/input/color-picker/color-picker.component.d.ts +1 -0
  168. app-ng-runtime/components/input/color-picker/esm2022/color-picker.component.mjs +6 -5
  169. app-ng-runtime/components/input/color-picker/esm2022/color-picker.props.mjs +2 -1
  170. app-ng-runtime/components/input/color-picker/fesm2022/index.mjs +5 -3
  171. app-ng-runtime/components/input/color-picker/fesm2022/index.mjs.map +1 -1
  172. app-ng-runtime/components/input/currency/bundles/index.umd.js +4 -3
  173. app-ng-runtime/components/input/currency/currency.component.d.ts +1 -0
  174. app-ng-runtime/components/input/currency/esm2022/currency.component.mjs +6 -6
  175. app-ng-runtime/components/input/currency/esm2022/currency.props.mjs +2 -1
  176. app-ng-runtime/components/input/currency/fesm2022/index.mjs +4 -3
  177. app-ng-runtime/components/input/currency/fesm2022/index.mjs.map +1 -1
  178. app-ng-runtime/components/input/default/bundles/index.umd.js +171 -94
  179. app-ng-runtime/components/input/default/button/button.component.d.ts +1 -0
  180. app-ng-runtime/components/input/default/checkbox/checkbox.component.d.ts +1 -0
  181. app-ng-runtime/components/input/default/esm2022/base-form.component.mjs +3 -3
  182. app-ng-runtime/components/input/default/esm2022/button/button.component.mjs +1 -1
  183. app-ng-runtime/components/input/default/esm2022/button/button.props.mjs +2 -1
  184. app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +8 -7
  185. app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.component.mjs +7 -7
  186. app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.props.mjs +2 -1
  187. app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +21 -16
  188. app-ng-runtime/components/input/default/esm2022/number/number.component.mjs +5 -5
  189. app-ng-runtime/components/input/default/esm2022/number/number.props.mjs +3 -1
  190. app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +28 -23
  191. app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +7 -7
  192. app-ng-runtime/components/input/default/esm2022/select/select.props.mjs +2 -1
  193. app-ng-runtime/components/input/default/esm2022/switch/switch.component.mjs +6 -5
  194. app-ng-runtime/components/input/default/esm2022/switch/switch.props.mjs +2 -1
  195. app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +5 -5
  196. app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.props.mjs +2 -1
  197. app-ng-runtime/components/input/default/esm2022/text/color/input-color.component.mjs +5 -5
  198. app-ng-runtime/components/input/default/esm2022/text/color/input-color.props.mjs +2 -1
  199. app-ng-runtime/components/input/default/esm2022/text/email/input-email.component.mjs +5 -5
  200. app-ng-runtime/components/input/default/esm2022/text/email/input-email.props.mjs +2 -1
  201. app-ng-runtime/components/input/default/esm2022/text/locale/number-locale.mjs +66 -13
  202. app-ng-runtime/components/input/default/esm2022/text/number/input-number.component.mjs +5 -5
  203. app-ng-runtime/components/input/default/esm2022/text/number/input-number.props.mjs +2 -1
  204. app-ng-runtime/components/input/default/esm2022/text/text/input-text.component.mjs +5 -5
  205. app-ng-runtime/components/input/default/esm2022/text/text/input-text.props.mjs +2 -1
  206. app-ng-runtime/components/input/default/esm2022/textarea/textarea.component.mjs +6 -6
  207. app-ng-runtime/components/input/default/esm2022/textarea/textarea.props.mjs +2 -1
  208. app-ng-runtime/components/input/default/fesm2022/index.mjs +171 -94
  209. app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
  210. app-ng-runtime/components/input/default/number/number.component.d.ts +1 -0
  211. app-ng-runtime/components/input/default/select/select.component.d.ts +2 -0
  212. app-ng-runtime/components/input/default/text/calendar/input-calendar.component.d.ts +1 -0
  213. app-ng-runtime/components/input/default/text/color/input-color.component.d.ts +1 -0
  214. app-ng-runtime/components/input/default/text/email/input-email.component.d.ts +1 -0
  215. app-ng-runtime/components/input/default/text/locale/number-locale.d.ts +1 -0
  216. app-ng-runtime/components/input/default/text/number/input-number.component.d.ts +1 -0
  217. app-ng-runtime/components/input/default/text/text/input-text.component.d.ts +1 -0
  218. app-ng-runtime/components/input/default/textarea/textarea.component.d.ts +1 -0
  219. app-ng-runtime/components/input/epoch/base-date-time.component.d.ts +2 -1
  220. app-ng-runtime/components/input/epoch/bundles/index.umd.js +28 -21
  221. app-ng-runtime/components/input/epoch/date/date.component.d.ts +1 -0
  222. app-ng-runtime/components/input/epoch/date-time/date-time.component.d.ts +2 -1
  223. app-ng-runtime/components/input/epoch/esm2022/base-date-time.component.mjs +10 -6
  224. app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +8 -8
  225. app-ng-runtime/components/input/epoch/esm2022/date/date.props.mjs +2 -1
  226. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +9 -9
  227. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.props.mjs +2 -1
  228. app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +7 -7
  229. app-ng-runtime/components/input/epoch/esm2022/time/time.props.mjs +2 -1
  230. app-ng-runtime/components/input/epoch/fesm2022/index.mjs +25 -18
  231. app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
  232. app-ng-runtime/components/input/epoch/time/time.component.d.ts +1 -0
  233. app-ng-runtime/components/input/file-upload/bundles/index.umd.js +224 -121
  234. app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +220 -123
  235. app-ng-runtime/components/input/file-upload/esm2022/file-upload.props.mjs +7 -1
  236. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +225 -122
  237. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  238. app-ng-runtime/components/input/file-upload/file-upload.component.d.ts +18 -11
  239. app-ng-runtime/components/input/rating/bundles/index.umd.js +2 -2
  240. app-ng-runtime/components/input/rating/esm2022/rating.component.mjs +3 -3
  241. app-ng-runtime/components/input/rating/fesm2022/index.mjs +2 -2
  242. app-ng-runtime/components/input/rating/fesm2022/index.mjs.map +1 -1
  243. app-ng-runtime/components/input/slider/bundles/index.umd.js +5 -6
  244. app-ng-runtime/components/input/slider/esm2022/slider.component.mjs +6 -8
  245. app-ng-runtime/components/input/slider/esm2022/slider.props.mjs +2 -1
  246. app-ng-runtime/components/input/slider/fesm2022/index.mjs +5 -6
  247. app-ng-runtime/components/input/slider/fesm2022/index.mjs.map +1 -1
  248. app-ng-runtime/components/input/slider/slider.component.d.ts +1 -0
  249. app-ng-runtime/components/navigation/breadcrumb/bundles/index.umd.js +6 -6
  250. app-ng-runtime/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +7 -7
  251. app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs +6 -6
  252. app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
  253. app-ng-runtime/components/navigation/menu/bundles/index.umd.js +8 -6
  254. app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +8 -7
  255. app-ng-runtime/components/navigation/menu/esm2022/menu.props.mjs +2 -1
  256. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +8 -6
  257. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  258. app-ng-runtime/components/navigation/menu/menu.component.d.ts +1 -0
  259. app-ng-runtime/components/navigation/popover/bundles/index.umd.js +121 -13
  260. app-ng-runtime/components/navigation/popover/esm2022/popover.component.mjs +122 -15
  261. app-ng-runtime/components/navigation/popover/esm2022/popover.props.mjs +2 -1
  262. app-ng-runtime/components/navigation/popover/fesm2022/index.mjs +121 -13
  263. app-ng-runtime/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  264. app-ng-runtime/components/navigation/popover/popover.component.d.ts +15 -3
  265. app-ng-runtime/components/page/default/bundles/index.umd.js +2 -1
  266. app-ng-runtime/components/page/default/esm2022/page.props.mjs +4 -3
  267. app-ng-runtime/components/page/default/fesm2022/index.mjs +2 -1
  268. app-ng-runtime/components/page/default/fesm2022/index.mjs.map +1 -1
  269. app-ng-runtime/components/page/footer/bundles/index.umd.js +2 -1
  270. app-ng-runtime/components/page/footer/esm2022/footer.props.mjs +3 -2
  271. app-ng-runtime/components/page/footer/fesm2022/index.mjs +2 -1
  272. app-ng-runtime/components/page/footer/fesm2022/index.mjs.map +1 -1
  273. app-ng-runtime/components/page/header/bundles/index.umd.js +2 -1
  274. app-ng-runtime/components/page/header/esm2022/header.props.mjs +3 -2
  275. app-ng-runtime/components/page/header/fesm2022/index.mjs +2 -1
  276. app-ng-runtime/components/page/header/fesm2022/index.mjs.map +1 -1
  277. app-ng-runtime/components/page/left-panel/bundles/index.umd.js +2 -1
  278. app-ng-runtime/components/page/left-panel/esm2022/left-panel.props.mjs +3 -2
  279. app-ng-runtime/components/page/left-panel/fesm2022/index.mjs +2 -1
  280. app-ng-runtime/components/page/left-panel/fesm2022/index.mjs.map +1 -1
  281. app-ng-runtime/components/page/right-panel/bundles/index.umd.js +2 -1
  282. app-ng-runtime/components/page/right-panel/esm2022/right-panel.props.mjs +3 -2
  283. app-ng-runtime/components/page/right-panel/fesm2022/index.mjs +2 -1
  284. app-ng-runtime/components/page/right-panel/fesm2022/index.mjs.map +1 -1
  285. app-ng-runtime/components/page/top-nav/bundles/index.umd.js +2 -1
  286. app-ng-runtime/components/page/top-nav/esm2022/top-nav.props.mjs +3 -2
  287. app-ng-runtime/components/page/top-nav/fesm2022/index.mjs +2 -1
  288. app-ng-runtime/components/page/top-nav/fesm2022/index.mjs.map +1 -1
  289. app-ng-runtime/core/bundles/index.umd.js +15 -13
  290. app-ng-runtime/core/esm2022/public_api.mjs +2 -2
  291. app-ng-runtime/core/esm2022/utils/build-utils.mjs +7 -7
  292. app-ng-runtime/core/esm2022/utils/utils.mjs +4 -5
  293. app-ng-runtime/core/fesm2022/index.mjs +11 -11
  294. app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
  295. app-ng-runtime/core/public_api.d.ts +1 -1
  296. app-ng-runtime/core/utils/utils.d.ts +1 -1
  297. app-ng-runtime/mobile/components/device/barcode-scanner/bundles/index.umd.js +2 -1
  298. app-ng-runtime/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.props.mjs +3 -2
  299. app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs +2 -1
  300. app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs.map +1 -1
  301. app-ng-runtime/mobile/components/device/camera/bundles/index.umd.js +2 -1
  302. app-ng-runtime/mobile/components/device/camera/esm2022/camera.props.mjs +3 -2
  303. app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs +2 -1
  304. app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs.map +1 -1
  305. app-ng-runtime/package.json +1 -1
  306. app-ng-runtime/runtime/base/bundles/index.umd.js +6 -4
  307. app-ng-runtime/runtime/base/components/app-component/app.component.d.ts +2 -3
  308. app-ng-runtime/runtime/base/esm2022/components/app-component/app.component.mjs +5 -5
  309. app-ng-runtime/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +5 -4
  310. app-ng-runtime/runtime/base/fesm2022/index.mjs +6 -4
  311. app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
  312. app-ng-runtime/runtime/base/guards/can-deactivate-page.guard.d.ts +2 -1
  313. app-ng-runtime/scripts/datatable/datatable.js +32 -31
  314. app-ng-runtime/variables/bundles/index.umd.js +34 -16
  315. app-ng-runtime/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +35 -17
  316. app-ng-runtime/variables/fesm2022/index.mjs +34 -16
  317. app-ng-runtime/variables/fesm2022/index.mjs.map +1 -1
  318. app-ng-runtime/variables/manager/variable/web-socket-variable.manager.d.ts +0 -4
@@ -81,10 +81,10 @@ function WizardComponent_li_2_Template(rf, ctx) { if (rf & 1) {
81
81
  } if (rf & 2) {
82
82
  const step_r2 = ctx.$implicit;
83
83
  const ctx_r2 = i0.ɵɵnextContext();
84
- i0.ɵɵproperty("hidden", !step_r2.show)("ngClass", i0.ɵɵpureFunction3(14, _c2, step_r2.done, step_r2.active, step_r2.disabled));
84
+ i0.ɵɵproperty("hidden", !step_r2.show)("ngClass", i0.ɵɵpureFunction3(15, _c2, step_r2.done, step_r2.active, step_r2.disabled));
85
85
  i0.ɵɵadvance();
86
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(18, _c3, ctx_r2.class && ctx_r2.class.includes("classic") && !step_r2.subtitle));
87
- i0.ɵɵattribute("aria-label", step_r2.title)("title", step_r2.title);
86
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(19, _c3, ctx_r2.class && ctx_r2.class.includes("classic") && !step_r2.subtitle));
87
+ i0.ɵɵattribute("aria-current", step_r2.active ? "step" : null)("aria-disabled", step_r2.disabled)("title", step_r2.title);
88
88
  i0.ɵɵadvance();
89
89
  i0.ɵɵproperty("ngIf", ctx_r2.class && ctx_r2.class.includes("classic"));
90
90
  i0.ɵɵadvance(2);
@@ -480,10 +480,10 @@ export class WizardComponent extends StylableComponent {
480
480
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.steps = _t);
481
481
  } }, features: [i0.ɵɵProvidersFeature([
482
482
  provideAsWidgetRef(WizardComponent)
483
- ]), i0.ɵɵInheritDefinitionFeature], attrs: _c0, ngContentSelectors: _c1, decls: 13, vars: 13, consts: [["role", "tab", 1, "app-wizard-heading"], ["class", "app-wizard-step", 3, "hidden", "ngClass", "click", 4, "ngFor", "ngForOf"], ["role", "tabpanel", 1, "app-wizard-body", "panel-body"], ["wmMessage", "", "caption.bind", "message.caption", "type.bind", "message.type", 4, "ngIf"], ["class", "app-wizard-skip", "title", "Skip step", 3, "name", "click", 4, "ngIf"], [1, "app-wizard-actions-right"], ["type", "button", "class", "btn app-button btn-default", 3, "name", "title", "textContent", "click", 4, "ngIf"], ["type", "button", "class", "btn app-button btn-default", 3, "name", "disabled", "click", 4, "ngIf"], ["type", "button", "class", "btn app-button btn-primary", 3, "name", "disabled", "click", 4, "ngIf"], ["type", "button", "class", "btn app-button btn-success", 3, "name", "disabled", "click", 4, "ngIf"], [1, "app-wizard-step", 3, "click", "hidden", "ngClass"], ["href", "javascript:void(0)", 3, "ngClass"], ["class", "arrow", 4, "ngIf"], [1, "wizard-step-number"], ["class", "count", 4, "ngIf"], ["class", "dottedstepper", 4, "ngIf"], ["class", "app-icon wi wi-done", 4, "ngIf"], [3, "class", 4, "ngIf"], [1, "title-wrapper"], [4, "ngIf"], [1, "step-title", 3, "textContent"], ["class", "subtitle-wrapper", 4, "ngIf"], [1, "arrow"], [1, "count"], [1, "dottedstepper"], [1, "app-icon", "wi", "wi-done"], [1, "subtitle-wrapper"], [1, "read_more", 2, "display", "none", 3, "click"], ["wmMessage", "", "caption.bind", "message.caption", "type.bind", "message.type"], ["title", "Skip step", 1, "app-wizard-skip", 3, "click", "name"], ["type", "button", 1, "btn", "app-button", "btn-default", 3, "click", "name", "title", "textContent"], ["type", "button", 1, "btn", "app-button", "btn-default", 3, "click", "name", "disabled"], [1, "app-icon", "wi", "wi-chevron-left"], [1, "btn-caption", 3, "textContent"], ["type", "button", 1, "btn", "app-button", "btn-primary", 3, "click", "name", "disabled"], [1, "app-icon", "wi", "wi-chevron-right"], ["type", "button", 1, "btn", "app-button", "btn-success", 3, "click", "name", "disabled"], [1, "app-icon", "wm-sl-l", "sl-check"]], template: function WizardComponent_Template(rf, ctx) { if (rf & 1) {
483
+ ]), i0.ɵɵInheritDefinitionFeature], attrs: _c0, ngContentSelectors: _c1, decls: 13, vars: 13, consts: [[1, "app-wizard-heading"], ["class", "app-wizard-step", 3, "hidden", "ngClass", "click", 4, "ngFor", "ngForOf"], [1, "app-wizard-body", "panel-body"], ["wmMessage", "", "caption.bind", "message.caption", "type.bind", "message.type", 4, "ngIf"], ["class", "app-wizard-skip", "title", "Skip step", 3, "name", "click", 4, "ngIf"], [1, "app-wizard-actions-right"], ["type", "button", "class", "btn app-button btn-default", 3, "name", "title", "textContent", "click", 4, "ngIf"], ["type", "button", "class", "btn app-button btn-default", 3, "name", "disabled", "click", 4, "ngIf"], ["type", "button", "class", "btn app-button btn-primary", 3, "name", "disabled", "click", 4, "ngIf"], ["type", "button", "class", "btn app-button btn-success", 3, "name", "disabled", "click", 4, "ngIf"], [1, "app-wizard-step", 3, "click", "hidden", "ngClass"], ["href", "javascript:void(0)", 3, "ngClass"], ["class", "arrow", 4, "ngIf"], [1, "wizard-step-number"], ["class", "count", 4, "ngIf"], ["class", "dottedstepper", 4, "ngIf"], ["class", "app-icon wi wi-done", 4, "ngIf"], [3, "class", 4, "ngIf"], [1, "title-wrapper"], [4, "ngIf"], [1, "step-title", 3, "textContent"], ["class", "subtitle-wrapper", 4, "ngIf"], [1, "arrow"], [1, "count"], [1, "dottedstepper"], [1, "app-icon", "wi", "wi-done"], [1, "subtitle-wrapper"], [1, "read_more", 2, "display", "none", 3, "click"], ["wmMessage", "", "caption.bind", "message.caption", "type.bind", "message.type"], ["title", "Skip step", 1, "app-wizard-skip", 3, "click", "name"], ["type", "button", 1, "btn", "app-button", "btn-default", 3, "click", "name", "title", "textContent"], ["type", "button", 1, "btn", "app-button", "btn-default", 3, "click", "name", "disabled"], [1, "app-icon", "wi", "wi-chevron-left"], [1, "btn-caption", 3, "textContent"], ["type", "button", 1, "btn", "app-button", "btn-primary", 3, "click", "name", "disabled"], [1, "app-icon", "wi", "wi-chevron-right"], ["type", "button", 1, "btn", "app-button", "btn-success", 3, "click", "name", "disabled"], [1, "app-icon", "wm-sl-l", "sl-check"]], template: function WizardComponent_Template(rf, ctx) { if (rf & 1) {
484
484
  i0.ɵɵprojectionDef();
485
485
  i0.ɵɵelementStart(0, "div", 0)(1, "ul");
486
- i0.ɵɵtemplate(2, WizardComponent_li_2_Template, 13, 20, "li", 1);
486
+ i0.ɵɵtemplate(2, WizardComponent_li_2_Template, 13, 21, "li", 1);
487
487
  i0.ɵɵelementEnd()();
488
488
  i0.ɵɵelementStart(3, "div", 2);
489
489
  i0.ɵɵtemplate(4, WizardComponent_p_4_Template, 1, 0, "p", 3);
@@ -519,7 +519,7 @@ export class WizardComponent extends StylableComponent {
519
519
  type: Component,
520
520
  args: [{ selector: 'div[wmWizard]', providers: [
521
521
  provideAsWidgetRef(WizardComponent)
522
- ], template: "<div class=\"app-wizard-heading\" role=\"tab\">\n <ul class=\"app-wizard-steps nav nav-pills {{stepClass}}\">\n <li class=\"app-wizard-step\" *ngFor=\"let step of steps; let i = index\" [hidden]=\"!step.show\"\n [ngClass]=\"{active: step.done, current: step.active, disabled: step.disabled}\"\n (click)=\"onWizardHeaderClick($event, step)\">\n <a href=\"javascript:void(0)\" [attr.aria-label]=\"step.title\" [attr.title]=\"step.title\" [ngClass]=\"{'title-center-align':class && class.includes('classic') && !step.subtitle}\">\n <span class=\"arrow\" *ngIf=\"class && class.includes('classic')\"></span>\n <span class=\"wizard-step-number\">\n <span class=\"count\" *ngIf=\"class && class.includes('number') && !step.isDone\">{{i+1}}</span>\n <i class=\"dottedstepper\" *ngIf=\"class && (class.includes('dottedstepper') || class.includes('text-inline') && !class.includes('iconstepper')) && !step.isDone\"></i>\n <i class=\"app-icon wi wi-done\" *ngIf=\"class && (class.includes('dottedstepper') || class.includes('number')) && step.isDone\"></i>\n <i class=\"app-icon {{step.iconclass}}\" *ngIf=\"(class && class.includes('iconstepper')) && ((step.iconclass && !step.isDone) || (step.iconclass && step.isDone && step.doneiconclass ===''))\"></i>\n <i class=\"app-icon {{step.doneiconclass}}\" *ngIf=\"step.doneiconclass && step.isDone && (class && class.includes('iconstepper'))\"></i>\n </span>\n <span class=\"title-wrapper\">\n <span *ngIf=\"class && class.includes('text-inline')\">{{'0' + (i+1)}}</span>\n <span class=\"step-title\" [textContent]=\"step.title\"></span>\n </span>\n <span class=\"subtitle-wrapper\" [attr.title]=\"step.subtitle\" *ngIf=\"step.subtitle\">\n <span class=\"step-title\" [textContent]=\"step.subtitle\"></span>\n <a class=\"read_more\" (click)=\"readMoreSubtitle()\" style=\"display:none\">more</a>\n </span>\n </a> \n </li>\n </ul>\n</div>\n<div class=\"app-wizard-body panel-body\" role=\"tabpanel\">\n <p wmMessage *ngIf=\"message.caption\" caption.bind=\"message.caption\" type.bind=\"message.type\"></p>\n <ng-content ngProjectAs=\"form[wmWizardStep]\"></ng-content>\n</div>\n<div class=\"app-wizard-actions panel-footer {{actionsalignment}}\">\n <a class=\"app-wizard-skip\" name=\"skipStep_{{name}}\" *ngIf=\"currentStep?.enableskip\" title=\"Skip step\" (click)=\"skip()\">Skip &raquo;</a>\n <div class=\"app-wizard-actions-right\">\n <button type=\"button\" name=\"cancelBtn_{{name}}\" class=\"btn app-button btn-default\" *ngIf=\"cancelable\"\n (click)=\"cancel()\" [title]=\"cancelbtnlabel\" [textContent]=\"cancelbtnlabel\"></button>\n <button type=\"button\" name=\"previousBtn_{{name}}\" class=\"btn app-button btn-default\"\n *ngIf=\"hasPrevStep\" (click)=\"prev()\" [disabled]=\"!enablePrev\">\n <i class=\"app-icon wi wi-chevron-left\"></i>\n <span class=\"btn-caption\" [textContent]=\"previousbtnlabel\"></span>\n </button>\n <button type=\"button\" name=\"nextBtn_{{name}}\" class=\"btn app-button btn-primary\"\n *ngIf=\"hasNextStep\" (click)=\"next()\" [disabled]=\"!enableNext\">\n <span class=\"btn-caption\" [textContent]=\"nextbtnlabel\"></span>\n <i class=\"app-icon wi wi-chevron-right\"></i>\n </button>\n <button type=\"button\" name=\"doneBtn_{{name}}\" class=\"btn app-button btn-success\"\n *ngIf=\"showDoneBtn\" (click)=\"done()\"\n [disabled]=\"!enableDone\">\n <i class=\"app-icon wm-sl-l sl-check\"></i>\n <span class=\"btn-caption\" [textContent]=\"donebtnlabel\"></span>\n </button>\n </div>\n</div>\n" }]
522
+ ], template: "<div class=\"app-wizard-heading\">\n <ul class=\"app-wizard-steps nav nav-pills {{stepClass}}\">\n <li class=\"app-wizard-step\" *ngFor=\"let step of steps; let i = index\" [hidden]=\"!step.show\"\n [ngClass]=\"{active: step.done, current: step.active, disabled: step.disabled}\"\n (click)=\"onWizardHeaderClick($event, step)\">\n <a href=\"javascript:void(0)\" [attr.aria-current]=\"step.active ? 'step' : null\"\n [attr.aria-disabled]=\"step.disabled\" [attr.title]=\"step.title\"\n [ngClass]=\"{'title-center-align':class && class.includes('classic') && !step.subtitle}\">\n <span class=\"arrow\" *ngIf=\"class && class.includes('classic')\"></span>\n <span class=\"wizard-step-number\">\n <span class=\"count\" *ngIf=\"class && class.includes('number') && !step.isDone\">{{i+1}}</span>\n <i class=\"dottedstepper\" *ngIf=\"class && (class.includes('dottedstepper') || class.includes('text-inline') && !class.includes('iconstepper')) && !step.isDone\"></i>\n <i class=\"app-icon wi wi-done\" *ngIf=\"class && (class.includes('dottedstepper') || class.includes('number')) && step.isDone\"></i>\n <i class=\"app-icon {{step.iconclass}}\" *ngIf=\"(class && class.includes('iconstepper')) && ((step.iconclass && !step.isDone) || (step.iconclass && step.isDone && step.doneiconclass ===''))\"></i>\n <i class=\"app-icon {{step.doneiconclass}}\" *ngIf=\"step.doneiconclass && step.isDone && (class && class.includes('iconstepper'))\"></i>\n </span>\n <span class=\"title-wrapper\">\n <span *ngIf=\"class && class.includes('text-inline')\">{{'0' + (i+1)}}</span>\n <span class=\"step-title\" [textContent]=\"step.title\"></span>\n </span>\n <span class=\"subtitle-wrapper\" [attr.title]=\"step.subtitle\" *ngIf=\"step.subtitle\">\n <span class=\"step-title\" [textContent]=\"step.subtitle\"></span>\n <a class=\"read_more\" (click)=\"readMoreSubtitle()\" style=\"display:none\">more</a>\n </span>\n </a>\n </li>\n </ul>\n</div>\n<div class=\"app-wizard-body panel-body\">\n <p wmMessage *ngIf=\"message.caption\" caption.bind=\"message.caption\" type.bind=\"message.type\"></p>\n <ng-content ngProjectAs=\"form[wmWizardStep]\"></ng-content>\n</div>\n<div class=\"app-wizard-actions panel-footer {{actionsalignment}}\">\n <a class=\"app-wizard-skip\" name=\"skipStep_{{name}}\" *ngIf=\"currentStep?.enableskip\" title=\"Skip step\" (click)=\"skip()\">Skip &raquo;</a>\n <div class=\"app-wizard-actions-right\">\n <button type=\"button\" name=\"cancelBtn_{{name}}\" class=\"btn app-button btn-default\" *ngIf=\"cancelable\"\n (click)=\"cancel()\" [title]=\"cancelbtnlabel\" [textContent]=\"cancelbtnlabel\"></button>\n <button type=\"button\" name=\"previousBtn_{{name}}\" class=\"btn app-button btn-default\"\n *ngIf=\"hasPrevStep\" (click)=\"prev()\" [disabled]=\"!enablePrev\">\n <i class=\"app-icon wi wi-chevron-left\"></i>\n <span class=\"btn-caption\" [textContent]=\"previousbtnlabel\"></span>\n </button>\n <button type=\"button\" name=\"nextBtn_{{name}}\" class=\"btn app-button btn-primary\"\n *ngIf=\"hasNextStep\" (click)=\"next()\" [disabled]=\"!enableNext\">\n <span class=\"btn-caption\" [textContent]=\"nextbtnlabel\"></span>\n <i class=\"app-icon wi wi-chevron-right\"></i>\n </button>\n <button type=\"button\" name=\"doneBtn_{{name}}\" class=\"btn app-button btn-success\"\n *ngIf=\"showDoneBtn\" (click)=\"done()\"\n [disabled]=\"!enableDone\">\n <i class=\"app-icon wm-sl-l sl-check\"></i>\n <span class=\"btn-caption\" [textContent]=\"donebtnlabel\"></span>\n </button>\n </div>\n</div>\n" }]
523
523
  }], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
524
524
  type: Inject,
525
525
  args: ['EXPLICIT_CONTEXT']
@@ -530,4 +530,4 @@ export class WizardComponent extends StylableComponent {
530
530
  args: [WizardStepDirective]
531
531
  }] }); })();
532
532
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(WizardComponent, { className: "WizardComponent", filePath: "wizard.component.ts", lineNumber: 32 }); })();
533
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9jb250YWluZXJzL3dpemFyZC9zcmMvd2l6YXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9jb250YWluZXJzL3dpemFyZC9zcmMvd2l6YXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCxTQUFTLEVBQ1QsZUFBZSxFQUNmLE1BQU0sRUFDTixRQUFRLEVBRVIsUUFBUSxFQUNSLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxpQkFBaUIsRUFBaUIsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7SUNWMUQsMkJBQXNFOzs7SUFFbEUsZ0NBQThFO0lBQUEsWUFBTztJQUFBLGlCQUFPOzs7SUFBZCxjQUFPO0lBQVAsOEJBQU87OztJQUNyRix3QkFBbUs7OztJQUNuSyx3QkFBaUk7OztJQUNqSSxvQkFBaU07OztJQUE5TCw2REFBbUM7OztJQUN0QyxvQkFBcUk7OztJQUFsSSxpRUFBdUM7OztJQUcxQyw0QkFBcUQ7SUFBQSxZQUFlO0lBQUEsaUJBQU87OztJQUF0QixjQUFlO0lBQWYsc0NBQWU7Ozs7SUFHeEUsZ0NBQWtGO0lBQzlFLDJCQUE4RDtJQUM5RCw2QkFBdUU7SUFBbEQsOEtBQVMseUJBQWtCLEtBQUM7SUFBc0Isb0JBQUk7SUFDL0UsQUFEK0UsaUJBQUksRUFDNUU7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O2dGQTVWUSxlQUFlLDBEQW1EVyxrQkFBa0I7b0VBbkQ1QyxlQUFlO3dDQUdQLG1CQUFtQjs7Ozs4Q0FQekI7Z0JBQ1Asa0JBQWtCLENBQUMsZUFBZSxDQUFDO2FBQ3RDOztZQzVCRCxBQURKLDhCQUEyQyxTQUNrQjtZQUNyRCxnRUFFZ0Q7WUFxQnhELEFBREksaUJBQUssRUFDSDtZQUNOLDhCQUF3RDtZQUNwRCw0REFBNkY7WUFDN0YsNkZBQTBEO1lBQzlELGlCQUFNO1lBQ04sMkJBQWtFO1lBQzlELDREQUF1SDtZQUN2SCw4QkFBc0M7WUFhbEMsQUFMQSxBQUxBLEFBRkEsc0VBQ21GLDJEQUViLDJEQUtBLDJEQU1yQztZQUt6QyxBQURJLGlCQUFNLEVBQ0o7O1lBbkRFLGNBQW9EO1lBQXBELCtFQUFvRDtZQUNQLGNBQVU7WUFBVixtQ0FBVTtZQXlCN0MsZUFBcUI7WUFBckIsMENBQXFCO1lBR2xDLGVBQTREO1lBQTVELHVGQUE0RDtZQUNSLGNBQTZCO1lBQTdCLGtGQUE2QjtZQUVNLGVBQWdCO1lBQWhCLHFDQUFnQjtZQUczRixjQUFpQjtZQUFqQixzQ0FBaUI7WUFLakIsY0FBaUI7WUFBakIsc0NBQWlCO1lBS2pCLGNBQWlCO1lBQWpCLHNDQUFpQjs7O2lGRGZyQixlQUFlO2NBUDNCLFNBQVM7MkJBQ0ksZUFBZSxhQUVkO29CQUNQLGtCQUFrQixpQkFBaUI7aUJBQ3RDOztzQkFxRDJCLE1BQU07dUJBQUMsa0JBQWtCOztzQkFBRyxRQUFRO3FCQWhEMUIsS0FBSztrQkFBMUMsZUFBZTttQkFBQyxtQkFBbUI7O2tGQUgzQixlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBJbmplY3QsXG4gICAgSW5qZWN0b3IsXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIFF1ZXJ5TGlzdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtub29wfSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBBUFBMWV9TVFlMRVNfVFlQRSwgSVdpZGdldENvbmZpZywgcHJvdmlkZUFzV2lkZ2V0UmVmLCBzdHlsZXIsIFN0eWxhYmxlQ29tcG9uZW50IH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5cbmltcG9ydCB7IHJlZ2lzdGVyUHJvcHMgfSBmcm9tICcuL3dpemFyZC5wcm9wcyc7XG5pbXBvcnQgeyBXaXphcmRTdGVwRGlyZWN0aXZlIH0gZnJvbSAnLi93aXphcmQtc3RlcC93aXphcmQtc3RlcC5kaXJlY3RpdmUnO1xuXG5jb25zdCBERUZBVUxUX0NMUyA9ICdhcHAtd2l6YXJkIHBhbmVsIGNsZWFyZml4JztcbmNvbnN0IFdJREdFVF9DT05GSUc6IElXaWRnZXRDb25maWcgPSB7XG4gICAgd2lkZ2V0VHlwZTogJ3dtLXdpemFyZCcsXG4gICAgaG9zdENsYXNzOiBERUZBVUxUX0NMU1xufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkaXZbd21XaXphcmRdJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vd2l6YXJkLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKFdpemFyZENvbXBvbmVudClcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFdpemFyZENvbXBvbmVudCBleHRlbmRzIFN0eWxhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0IHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihXaXphcmRTdGVwRGlyZWN0aXZlKSBzdGVwczogUXVlcnlMaXN0PFdpemFyZFN0ZXBEaXJlY3RpdmU+O1xuXG4gICAgcHVibGljIG1lc3NhZ2U6IHtjYXB0aW9uOiBzdHJpbmcsIHR5cGU6IHN0cmluZ307XG4gICAgcHVibGljIGN1cnJlbnRTdGVwOiBXaXphcmRTdGVwRGlyZWN0aXZlO1xuXG4gICAgcHVibGljIHN0ZXBDbGFzczogc3RyaW5nO1xuICAgIHB1YmxpYyBjbGFzcztcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb21pc2VSZXNvbHZlckZuOiBGdW5jdGlvbjtcbiAgICBwdWJsaWMgYWN0aW9uc2FsaWdubWVudDogYW55O1xuICAgIHB1YmxpYyBjYW5jZWxhYmxlOiBhbnk7XG4gICAgcHVibGljIGVuYWJsZW5leHQ6IGFueTtcblxuICAgIGdldCBoYXNQcmV2U3RlcCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmlzRmlyc3RTdGVwKHRoaXMuY3VycmVudFN0ZXApO1xuICAgIH1cblxuICAgIGdldCBoYXNOZXh0U3RlcCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmlzTGFzdFN0ZXAodGhpcy5jdXJyZW50U3RlcCk7XG4gICAgfVxuXG4gICAgZ2V0IHNob3dEb25lQnRuKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuY3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIXRoaXMuaGFzTmV4dFN0ZXAgJiYgdGhpcy5jdXJyZW50U3RlcC5lbmFibGVEb25lO1xuICAgIH1cblxuICAgIGdldCBlbmFibGVQcmV2KCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuY3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50U3RlcC5lbmFibGVQcmV2O1xuICAgIH1cblxuICAgIGdldCBlbmFibGVOZXh0KCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuY3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5lbmFibGVuZXh0ID8gdHJ1ZSA6ICh0aGlzLmN1cnJlbnRTdGVwLmVuYWJsZU5leHQgJiYgdGhpcy5jdXJyZW50U3RlcC5pc1ZhbGlkKTtcbiAgICB9XG5cbiAgICBnZXQgZW5hYmxlRG9uZSgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRTdGVwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFN0ZXAuZW5hYmxlRG9uZSAmJiB0aGlzLmN1cnJlbnRTdGVwLmlzVmFsaWQ7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoaW5qOiBJbmplY3RvciwgQEluamVjdCgnRVhQTElDSVRfQ09OVEVYVCcpIEBPcHRpb25hbCgpIGV4cGxpY2l0Q29udGV4dDogYW55KSB7XG4gICAgICAgIGxldCByZXNvbHZlRm46IEZ1bmN0aW9uID0gbm9vcDtcblxuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9DT05GSUcsIGV4cGxpY2l0Q29udGV4dCwgbmV3IFByb21pc2UocmVzID0+IHJlc29sdmVGbiA9IHJlcykpO1xuICAgICAgICBzdHlsZXIodGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzLCBBUFBMWV9TVFlMRVNfVFlQRS5TSEVMTCk7XG5cbiAgICAgICAgdGhpcy5wcm9taXNlUmVzb2x2ZXJGbiA9IHJlc29sdmVGbjtcblxuICAgICAgICAvLyBpbml0aWFsaXplIHRoZSBtZXNzYWdlIG9iamVjdCB3aXRoIGRlZmF1bHQgdmFsdWVzXG4gICAgICAgIHRoaXMubWVzc2FnZSA9IHtcbiAgICAgICAgICAgIGNhcHRpb246ICcnLFxuICAgICAgICAgICAgdHlwZTogJydcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm5zIG5leHQgdmFsaWQgc3RlcC4gdGhlIGluZGV4IHBhc3NlZCBpcyBhbHNvIGNoZWNrZWQgaWYgaXRzIHZhbGlkIHN0ZXBcbiAgICAgKiBAcGFyYW0gaW5kZXhcbiAgICAgKiBAcmV0dXJucyB7V2l6YXJkU3RlcERpcmVjdGl2ZX1cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldE5leHRWYWxpZFN0ZXBGb3JtSW5kZXgoaW5kZXg6IG51bWJlcik6IFdpemFyZFN0ZXBEaXJlY3RpdmUge1xuICAgICAgICBmb3IgKGxldCBpID0gaW5kZXg7IGkgPCB0aGlzLnN0ZXBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBzdGVwID0gdGhpcy5nZXRTdGVwUmVmQnlJbmRleChpKTtcbiAgICAgICAgICAgIGlmIChzdGVwLnNob3cpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RlcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybnMgcHJldmlvdXMgdmFsaWQgc3RlcC4gdGhlIGluZGV4IHBhc3NlZCBpcyBhbHNvIGNoZWNrZWQgaWYgaXRzIHZhbGlkIHN0ZXBcbiAgICAgKiBAcGFyYW0gaW5kZXhcbiAgICAgKiBAcmV0dXJucyB7V2l6YXJkU3RlcERpcmVjdGl2ZX1cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFByZXZpb3VzVmFsaWRTdGVwRm9ybUluZGV4KGluZGV4OiBudW1iZXIpOiBXaXphcmRTdGVwRGlyZWN0aXZlIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IGluZGV4OyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3Qgc3RlcCA9IHRoaXMuZ2V0U3RlcFJlZkJ5SW5kZXgoaSk7XG4gICAgICAgICAgICBpZiAoc3RlcC5zaG93KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZXA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm5zIGN1cnJlbnQgc3RlcCBpbmRleCB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0Q3VycmVudFN0ZXBJbmRleCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRTdGVwSW5kZXhCeVJlZih0aGlzLmN1cnJlbnRTdGVwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm5zIHN0ZXBSZWYgd2hlbiBpbmRleCBpcyBwYXNzZWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gICAgICogQHJldHVybnMge1dpemFyZFN0ZXBEaXJlY3RpdmV9XG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRTdGVwUmVmQnlJbmRleChpbmRleDogbnVtYmVyKTogV2l6YXJkU3RlcERpcmVjdGl2ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLnRvQXJyYXkoKVtpbmRleF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJucyB0aGUgaW5kZXggdmFsdWUgb2YgdGhlIHN0ZXAuXG4gICAgICogQHBhcmFtIHtXaXphcmRTdGVwRGlyZWN0aXZlfSB3aXphcmRTdGVwXG4gICAgICogQHJldHVybnMge251bWJlcn1cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFN0ZXBJbmRleEJ5UmVmKHdpemFyZFN0ZXA6IFdpemFyZFN0ZXBEaXJlY3RpdmUpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy50b0FycmF5KCkuaW5kZXhPZih3aXphcmRTdGVwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBnZXRzIHN0ZXBSZWYgYnkgc2VhcmNoaW5nIG9uIHRoZSBuYW1lIHByb3BlcnR5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAgICogQHJldHVybnMge1dpemFyZFN0ZXBEaXJlY3RpdmV9XG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRTdGVwUmVmQnlOYW1lKG5hbWU6IHN0cmluZyk6IFdpemFyZFN0ZXBEaXJlY3RpdmUge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy5maW5kKHN0ZXAgPT4gc3RlcC5uYW1lID09PSBuYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzZXRzIGRlZmF1bHQgc3RlcCBhcyBjdXJyZW50IHN0ZXAgaWYgY29uZmlndXJlZFxuICAgICAqIG9yIGZpbmRzIGZpcnN0IHZhbGlkIHN0ZXAgYW5kIHNldCBpdCBhcyBjdXJyZW50IHN0ZXAuXG4gICAgICogQHBhcmFtIHtXaXphcmRTdGVwRGlyZWN0aXZlfSBzdGVwXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXREZWZhdWx0U3RlcChzdGVwOiBXaXphcmRTdGVwRGlyZWN0aXZlKSB7XG4gICAgICAgIC8vIElmIHRoZSBkZWZhdWx0IHN0ZXAgaGFzIHNob3cgdHJ1ZSB0aGVuIG9ubHkgdXBkYXRlIHRoZSBjdXJyZW50U3RlcFxuICAgICAgICBpZiAoc3RlcCAmJiBzdGVwLnNob3cpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFN0ZXAgPSBzdGVwO1xuICAgICAgICAgICAgc3RlcC5hY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgc3RlcC5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICAgIC8vIE1hcmsgYWxsIHByZXZpb3VzIHN0ZXAgc3RhdHVzIENPTVBMRVRFRFxuICAgICAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5nZXRTdGVwSW5kZXhCeVJlZihzdGVwKSAtIDE7XG4gICAgICAgICAgICB3aGlsZSAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZTdGVwID0gdGhpcy5nZXRTdGVwUmVmQnlJbmRleChpbmRleCk7XG4gICAgICAgICAgICAgICAgcHJldlN0ZXAuZG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgcHJldlN0ZXAuaXNJbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaW5kZXgtLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHNldCBuZXh0IHZhbGlkIHN0ZXAgYXMgY3VycmVudCBzdGVwXG4gICAgICAgICAgICBzdGVwID0gdGhpcy5nZXROZXh0VmFsaWRTdGVwRm9ybUluZGV4KDApO1xuICAgICAgICAgICAgaWYgKHN0ZXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERlZmF1bHRTdGVwKHN0ZXApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWRkTW9yZVRleHQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3RzIHRoZSBhc3NvY2lhdGVkIHN0ZXAgd2hlbiB0aGUgd2l6YXJkIGhlYWRlciBpcyBjbGlja2VkLlxuICAgICAqIEBwYXJhbSAkZXZlbnRcbiAgICAgKiBAcGFyYW0ge1dpemFyZFN0ZXBEaXJlY3RpdmV9IGN1cnJlbnRTdGVwXG4gICAgICovXG4gICAgcHJpdmF0ZSBvbldpemFyZEhlYWRlckNsaWNrKCRldmVudDogRXZlbnQsIGN1cnJlbnRTdGVwOiBXaXphcmRTdGVwRGlyZWN0aXZlKSB7XG4gICAgICAgIC8vIHNlbGVjdCB0aGUgc3RlcCBpZiBpdCdzIHN0YXR1cyBpcyBkb25lXG4gICAgICAgIGlmIChjdXJyZW50U3RlcC5kb25lKSB7XG4gICAgICAgICAgICAvLyBzZXQgYWxsIHRoZSBuZXh0IHN0ZXBzIHN0YXR1cyBhcyBkaXNhYmxlZCBhbmQgcHJldmlvdXMgc3RlcHMgYXMgZG9uZVxuICAgICAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA8IHRoaXMuZ2V0U3RlcEluZGV4QnlSZWYoY3VycmVudFN0ZXApKSB7XG4gICAgICAgICAgICAgICAgICAgc3RlcC5kb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICBzdGVwLmlzRG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuaXNEb25lID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBzZXQgdGhlIHNlbGVjdGVkIHN0ZXAgYXMgY3VycmVudCBzdGVwIGFuZCBtYWtlIGl0IGFjdGl2ZVxuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RlcCA9IGN1cnJlbnRTdGVwO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RlcC5hY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5hZGRNb3JlVGV4dCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTWV0aG9kIHRvIG5hdmlnYXRlIHRvIG5leHQgc3RlcFxuICAgIHB1YmxpYyBuZXh0KGV2ZW50TmFtZTogc3RyaW5nID0gJ25leHQnKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gdGhpcy5jdXJyZW50U3RlcDtcbiAgICAgICAgY29uc3QgY3VycmVudFN0ZXBJbmRleCA9IHRoaXMuZ2V0Q3VycmVudFN0ZXBJbmRleCgpO1xuXG4gICAgICAgIC8vIGFib3J0IGlmIG9uU2tpcCBtZXRob2QgcmV0dXJucyBmYWxzZVxuICAgICAgICBpZiAoZXZlbnROYW1lID09PSAnc2tpcCcpIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50U3RlcC5pbnZva2VTa2lwQ0IoY3VycmVudFN0ZXBJbmRleCkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5leHRlbmROZXh0Rm4oY3VycmVudFN0ZXAsIGN1cnJlbnRTdGVwSW5kZXgpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY3VycmVudFN0ZXAuaXNWYWxpZCAmJiBldmVudE5hbWUgPT09ICduZXh0Jykge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRTdGVwLmludm9rZU5leHRDQihjdXJyZW50U3RlcEluZGV4KSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmV4dGVuZE5leHRGbihjdXJyZW50U3RlcCwgY3VycmVudFN0ZXBJbmRleCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5lbmFibGVuZXh0ICYmICF0aGlzLmN1cnJlbnRTdGVwLmlzVmFsaWQpe1xuICAgICAgICAgICAgQXJyYXkuZnJvbSgoPGFueT50aGlzKS5jdXJyZW50U3RlcC5nZXRBbGxFbWJlZGRlZEZvcm1zKCkpPy5mb3JFYWNoKChmb3JtOmFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGZvcm0ud2lkZ2V0LmhpZ2hsaWdodEludmFsaWRGaWVsZHMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXh0ZW5kTmV4dEZuKGN1cnJlbnRTdGVwLCBjdXJyZW50U3RlcEluZGV4KXtcbiAgICAgICAgbGV0IG5leHRTdGVwOiBXaXphcmRTdGVwRGlyZWN0aXZlO1xuICAgICAgICBuZXh0U3RlcCA9IHRoaXMuZ2V0TmV4dFZhbGlkU3RlcEZvcm1JbmRleChjdXJyZW50U3RlcEluZGV4ICsgMSk7XG4gICAgICAgIG5leHRTdGVwLmlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgICAgIC8vIElmIHRoZXJlIGFyZSBhbnkgc3RlcHMgd2hpY2ggaGFzIHNob3cgdGhlbiBvbmx5IGNoYW5nZSBzdGF0ZSBvZiBjdXJyZW50IHN0ZXAgZWxzZSByZW1haW4gc2FtZVxuICAgICAgICBpZiAobmV4dFN0ZXApIHtcbiAgICAgICAgICAgIGN1cnJlbnRTdGVwLmlzRG9uZSA9IHRydWU7XG4gICAgICAgICAgICBjdXJyZW50U3RlcC5kb25lID0gdHJ1ZTtcbiAgICAgICAgICAgIG5leHRTdGVwLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTdGVwID0gbmV4dFN0ZXA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZGRNb3JlVGV4dCgpO1xuICAgIH1cbiAgICAvLyBNZXRob2QgdG8gbmF2aWdhdGUgdG8gcHJldmlvdXMgc3RlcFxuICAgIHB1YmxpYyBwcmV2KCkge1xuICAgICAgICBjb25zdCBjdXJyZW50U3RlcCA9IHRoaXMuY3VycmVudFN0ZXA7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwSW5kZXggPSB0aGlzLmdldEN1cnJlbnRTdGVwSW5kZXgoKTtcblxuICAgICAgICBsZXQgcHJldlN0ZXA6IFdpemFyZFN0ZXBEaXJlY3RpdmU7XG5cbiAgICAgICAgLy8gYWJvcnQgaWYgb25QcmV2IG1ldGhvZCByZXR1cm5zIGZhbHNlLlxuICAgICAgICBpZiAoY3VycmVudFN0ZXAuaW52b2tlUHJldkNCKGN1cnJlbnRTdGVwSW5kZXgpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJldlN0ZXAgPSB0aGlzLmdldFByZXZpb3VzVmFsaWRTdGVwRm9ybUluZGV4KGN1cnJlbnRTdGVwSW5kZXggLSAxKTtcblxuICAgICAgICAvLyBJZiB0aGVyZSBhcmUgYW55IHN0ZXBzIHdoaWNoIGhhcyBzaG93IHRoZW4gb25seSBjaGFuZ2Ugc3RhdGUgb2YgY3VycmVudCBzdGVwIGVsc2UgcmVtYWluIHNhbWVcbiAgICAgICAgaWYgKHByZXZTdGVwKSB7XG4gICAgICAgICAgICBjdXJyZW50U3RlcC5pc0RvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgIGN1cnJlbnRTdGVwLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHByZXZTdGVwLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTdGVwID0gcHJldlN0ZXA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZGRNb3JlVGV4dCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBza2lwKCkge1xuICAgICAgICB0aGlzLm5leHQoJ3NraXAnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ290b1N0ZXAoc3RlcE5hbWU6IHN0cmluZykge1xuICAgICAgICBpZihzdGVwTmFtZSkge1xuICAgICAgICAgICAgY29uc3QgZ290b1N0ZXBJbmRleCA9IHRoaXMuc3RlcHMudG9BcnJheSgpLm1hcChzdGVwID0+IHN0ZXAubmFtZSkuaW5kZXhPZihzdGVwTmFtZSk7XG4gICAgICAgICAgICBpZihnb3RvU3RlcEluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdvdG9TdGVwOiBXaXphcmRTdGVwRGlyZWN0aXZlID0gdGhpcy5nZXRTdGVwUmVmQnlJbmRleChnb3RvU3RlcEluZGV4KTtcbiAgICAgICAgICAgICAgICBpZihnb3RvU3RlcD8uc2hvdykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uV2l6YXJkSGVhZGVyQ2xpY2soZXZlbnQsIGdvdG9TdGVwKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiVGhlIGdvdG9TdGVwIGZ1bmN0aW9uIGNhbm5vdCBuYXZpZ2F0ZSB0byBoaWRkZW4gc3RlcHNcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBDb3VsZCBub3QgZmluZCBzdGVwICcke3N0ZXBOYW1lfSdgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1ldGhvZCB0byBpbnZva2Ugb24tRG9uZSBldmVudCBvbiB3aXphcmRcbiAgICBwdWJsaWMgZG9uZSgpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50U3RlcC5pc0RvbmUgPSB0cnVlO1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2RvbmUnLCB7c3RlcHM6IHRoaXMuc3RlcHMudG9BcnJheSgpfSk7XG4gICAgfVxuICAgIC8vIE1ldGhvZCB0byBpbnZva2Ugb24tQ2FuY2VsIGV2ZW50IG9uIHdpemFyZFxuICAgIHB1YmxpYyBjYW5jZWwgKCkge1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2NhbmNlbCcsIHtzdGVwczogdGhpcy5zdGVwcy50b0FycmF5KCl9KTtcbiAgICB9XG4gICAgcHVibGljIGFkZE1vcmVUZXh0KCl7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuXG5cbiAgICAgICAgdmFyIG5ld1dpbmRvd1dpZHRoID0gJCh3aW5kb3cpLndpZHRoKCk7XG4gICAgICAgIGlmKG5ld1dpbmRvd1dpZHRoIDwgNzY4KXtcbiAgICAgICAgJChcIi5hcHAtd2l6YXJkLXN0ZXAuY3VycmVudCAuc3VidGl0bGUtd3JhcHBlciAuc3RlcC10aXRsZVwiKS5jc3Moe1wiaGVpZ2h0XCI6XCJhdXRvXCIsXCJkaXNwbGF5XCI6XCJibG9ja1wifSk7XG4gICAgICAgIHZhciBzdWJ0aXRsZVRleHRMZW5ndGggPSAkKFwiLmFwcC13aXphcmQtc3RlcC5jdXJyZW50IC5zdWJ0aXRsZS13cmFwcGVyIC5zdGVwLXRpdGxlXCIpLmhlaWdodCgpO1xuICAgICAgICAkKFwiLnJlYWRfbW9yZVwiKS5jc3MoXCJkaXNwbGF5XCIsXCJub25lXCIpO1xuICAgICAgICAkKFwiLmN1cnJlbnQgLnN1YnRpdGxlLXdyYXBwZXJcIikucmVtb3ZlQ2xhc3MoXCJyZWFkbW9yZV9zdWJ0aXRsZVwiKTtcblxuICAgICAgICBpZihzdWJ0aXRsZVRleHRMZW5ndGg+NDQpe1xuICAgICAgICAgICAgJChcIi5hcHAtd2l6YXJkLXN0ZXAuY3VycmVudCAuc3VidGl0bGUtd3JhcHBlciAuc3RlcC10aXRsZVwiKS5jc3Moe1wiaGVpZ2h0XCI6XCI0NHB4XCIsXCJkaXNwbGF5XCI6XCItd2Via2l0LWJveFwifSk7XG4gICAgICAgICAgICAkKFwiLmN1cnJlbnQgLnJlYWRfbW9yZVwiKS5jc3MoXCJkaXNwbGF5XCIsXCJibG9ja1wiKTtcbiAgICAgICAgICAgICQoXCIuYWN0aXZlIC5yZWFkX21vcmVcIikuY3NzKFwiZGlzcGxheVwiLFwibm9uZVwiKTtcbiAgICAgICAgICAgICQoXCIuZGlzYWJsZSAucmVhZF9tb3JlXCIpLmNzcyhcImRpc3BsYXlcIixcIm5vbmVcIik7XG4gICAgICAgICAgICAkKFwiLmFwcC13aXphcmQtc3RlcD5hXCIpLmNzcyhcImhlaWdodFwiLFwiMTAwcHhcIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgfVxuICAgIHB1YmxpYyByZWFkTW9yZVN1YnRpdGxlKCl7XG4gICAgICAgICQoXCIuY3VycmVudCAuc3VidGl0bGUtd3JhcHBlclwiKS5hZGRDbGFzcyhcInJlYWRtb3JlX3N1YnRpdGxlXCIpO1xuICAgICAgICAkKFwiLmN1cnJlbnQgLnJlYWRfbW9yZVwiKS5jc3MoXCJkaXNwbGF5XCIsXCJub25lXCIpO1xuICAgICAgICAkKGRvY3VtZW50KS5vbihcIm1vdXNldXBcIixmdW5jdGlvbihlOmFueSlcbiAgICAgICAge1xuICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9ICQoXCIuc3VidGl0bGUtd3JhcHBlclwiKTtcbiAgICAgICAgICAgIC8vIGlmIHRoZSB0YXJnZXQgb2YgdGhlIGNsaWNrIGlzbid0IHRoZSBjb250YWluZXIgbm9yIGEgZGVzY2VuZGFudCBvZiB0aGUgY29udGFpbmVyXG4gICAgICAgICAgICBpZiAoIWNvbnRhaW5lci5pcyhlLnRhcmdldCkgJiYgY29udGFpbmVyLmhhcyhlLnRhcmdldCkubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICQoXCIuY3VycmVudCAuc3VidGl0bGUtd3JhcHBlclwiKS5yZW1vdmVDbGFzcyhcInJlYWRtb3JlX3N1YnRpdGxlXCIpO1xuICAgICAgICAgICAgICAgICQoXCIuY3VycmVudCAucmVhZF9tb3JlXCIpLmNzcyhcImRpc3BsYXlcIixcImJsb2NrXCIpO1xuICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9mZihcIm1vdXNldXBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNGaXJzdFN0ZXAoc3RlcFJlZjogV2l6YXJkU3RlcERpcmVjdGl2ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy5maXJzdCA9PT0gc3RlcFJlZjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTGFzdFN0ZXAoc3RlcFJlZjogV2l6YXJkU3RlcERpcmVjdGl2ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy5sYXN0ID09PSBzdGVwUmVmO1xuICAgIH1cblxuICAgIC8vIERlZmluZSB0aGUgcHJvcGVydHkgY2hhbmdlIGhhbmRsZXIuIFRoaXMgTWV0aG9kIHdpbGwgYmUgdHJpZ2dlcmVkIHdoZW4gdGhlcmUgaXMgYSBjaGFuZ2UgaW4gdGhlIHdpZGdldCBwcm9wZXJ0eVxuICAgIG9uUHJvcGVydHlDaGFuZ2Uoa2V5OiBzdHJpbmcsIG52OiBhbnksIG92PzogYW55KSB7XG4gICAgICAgIC8vIE1vbml0b3JpbmcgY2hhbmdlcyBmb3IgcHJvcGVydGllcyBhbmQgYWNjb3JkaW5nbHkgaGFuZGxpbmcgcmVzcGVjdGl2ZSBjaGFuZ2VzXG5cbiAgICAgICAgaWYgKGtleSA9PT0gJ3N0ZXBzdHlsZScpIHtcbiAgICAgICAgICAgIHRoaXMuc3RlcENsYXNzID0gIG52ID09PSAnanVzdGlmaWVkJyA/ICduYXYtanVzdGlmaWVkJyA6ICcnO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2RlZmF1bHRzdGVwJykge1xuICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0U3RlcCh0aGlzLmdldFN0ZXBSZWZCeU5hbWUobnYpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICBzdXBlci5uZ0FmdGVyQ29udGVudEluaXQoKTtcbiAgICAgICAgdGhpcy5wcm9taXNlUmVzb2x2ZXJGbigpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICAgIHN0eWxlcihcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcucGFuZWwtYm9keScpIGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIEFQUExZX1NUWUxFU19UWVBFLklOTkVSX1NIRUxMXG4gICAgICAgICk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyBpZigkKHdpbmRvdykud2lkdGgoKTw3Njgpe1xuICAgICAgICAgICAgJChcIi5hcHAtd2l6YXJkXCIpLnJlbW92ZUNsYXNzKFwidmVydGljYWxcIik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImFwcC13aXphcmQtaGVhZGluZ1wiIHJvbGU9XCJ0YWJcIj5cbiAgICA8dWwgY2xhc3M9XCJhcHAtd2l6YXJkLXN0ZXBzIG5hdiBuYXYtcGlsbHMge3tzdGVwQ2xhc3N9fVwiPlxuICAgICAgICA8bGkgY2xhc3M9XCJhcHAtd2l6YXJkLXN0ZXBcIiAqbmdGb3I9XCJsZXQgc3RlcCBvZiBzdGVwczsgbGV0IGkgPSBpbmRleFwiIFtoaWRkZW5dPVwiIXN0ZXAuc2hvd1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7YWN0aXZlOiBzdGVwLmRvbmUsIGN1cnJlbnQ6IHN0ZXAuYWN0aXZlLCBkaXNhYmxlZDogc3RlcC5kaXNhYmxlZH1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uV2l6YXJkSGVhZGVyQ2xpY2soJGV2ZW50LCBzdGVwKVwiPlxuICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwic3RlcC50aXRsZVwiIFthdHRyLnRpdGxlXT1cInN0ZXAudGl0bGVcIiBbbmdDbGFzc109XCJ7J3RpdGxlLWNlbnRlci1hbGlnbic6Y2xhc3MgJiYgY2xhc3MuaW5jbHVkZXMoJ2NsYXNzaWMnKSAmJiAhc3RlcC5zdWJ0aXRsZX1cIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCIgKm5nSWY9XCJjbGFzcyAmJiBjbGFzcy5pbmNsdWRlcygnY2xhc3NpYycpXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwid2l6YXJkLXN0ZXAtbnVtYmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRcIiAqbmdJZj1cImNsYXNzICYmIGNsYXNzLmluY2x1ZGVzKCdudW1iZXInKSAmJiAhc3RlcC5pc0RvbmVcIj57e2krMX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImRvdHRlZHN0ZXBwZXJcIiAqbmdJZj1cImNsYXNzICYmIChjbGFzcy5pbmNsdWRlcygnZG90dGVkc3RlcHBlcicpIHx8IGNsYXNzLmluY2x1ZGVzKCd0ZXh0LWlubGluZScpICYmICFjbGFzcy5pbmNsdWRlcygnaWNvbnN0ZXBwZXInKSkgJiYgIXN0ZXAuaXNEb25lXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImFwcC1pY29uIHdpIHdpLWRvbmVcIiAqbmdJZj1cImNsYXNzICYmIChjbGFzcy5pbmNsdWRlcygnZG90dGVkc3RlcHBlcicpIHx8IGNsYXNzLmluY2x1ZGVzKCdudW1iZXInKSkgJiYgc3RlcC5pc0RvbmVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYXBwLWljb24ge3tzdGVwLmljb25jbGFzc319XCIgKm5nSWY9XCIoY2xhc3MgJiYgY2xhc3MuaW5jbHVkZXMoJ2ljb25zdGVwcGVyJykpICYmICgoc3RlcC5pY29uY2xhc3MgJiYgIXN0ZXAuaXNEb25lKSB8fCAoc3RlcC5pY29uY2xhc3MgJiYgc3RlcC5pc0RvbmUgJiYgc3RlcC5kb25laWNvbmNsYXNzID09PScnKSlcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYXBwLWljb24ge3tzdGVwLmRvbmVpY29uY2xhc3N9fVwiICpuZ0lmPVwic3RlcC5kb25laWNvbmNsYXNzICYmIHN0ZXAuaXNEb25lICYmIChjbGFzcyAmJiBjbGFzcy5pbmNsdWRlcygnaWNvbnN0ZXBwZXInKSlcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGUtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNsYXNzICYmIGNsYXNzLmluY2x1ZGVzKCd0ZXh0LWlubGluZScpXCI+e3snMCcgKyAoaSsxKX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXAtdGl0bGVcIiBbdGV4dENvbnRlbnRdPVwic3RlcC50aXRsZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWJ0aXRsZS13cmFwcGVyXCIgW2F0dHIudGl0bGVdPVwic3RlcC5zdWJ0aXRsZVwiICpuZ0lmPVwic3RlcC5zdWJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXAtdGl0bGVcIiBbdGV4dENvbnRlbnRdPVwic3RlcC5zdWJ0aXRsZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJyZWFkX21vcmVcIiAoY2xpY2spPVwicmVhZE1vcmVTdWJ0aXRsZSgpXCIgc3R5bGU9XCJkaXNwbGF5Om5vbmVcIj5tb3JlPC9hPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvYT4gICAgXG4gICAgICAgIDwvbGk+XG4gICAgPC91bD5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImFwcC13aXphcmQtYm9keSBwYW5lbC1ib2R5XCIgcm9sZT1cInRhYnBhbmVsXCI+XG4gICAgPHAgd21NZXNzYWdlICpuZ0lmPVwibWVzc2FnZS5jYXB0aW9uXCIgY2FwdGlvbi5iaW5kPVwibWVzc2FnZS5jYXB0aW9uXCIgdHlwZS5iaW5kPVwibWVzc2FnZS50eXBlXCI+PC9wPlxuICAgIDxuZy1jb250ZW50IG5nUHJvamVjdEFzPVwiZm9ybVt3bVdpemFyZFN0ZXBdXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiYXBwLXdpemFyZC1hY3Rpb25zIHBhbmVsLWZvb3RlciB7e2FjdGlvbnNhbGlnbm1lbnR9fVwiPlxuICAgIDxhIGNsYXNzPVwiYXBwLXdpemFyZC1za2lwXCIgbmFtZT1cInNraXBTdGVwX3t7bmFtZX19XCIgKm5nSWY9XCJjdXJyZW50U3RlcD8uZW5hYmxlc2tpcFwiIHRpdGxlPVwiU2tpcCBzdGVwXCIgKGNsaWNrKT1cInNraXAoKVwiPlNraXAgJnJhcXVvOzwvYT5cbiAgICA8ZGl2IGNsYXNzPVwiYXBwLXdpemFyZC1hY3Rpb25zLXJpZ2h0XCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG5hbWU9XCJjYW5jZWxCdG5fe3tuYW1lfX1cIiBjbGFzcz1cImJ0biBhcHAtYnV0dG9uIGJ0bi1kZWZhdWx0XCIgKm5nSWY9XCJjYW5jZWxhYmxlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsKClcIiBbdGl0bGVdPVwiY2FuY2VsYnRubGFiZWxcIiBbdGV4dENvbnRlbnRdPVwiY2FuY2VsYnRubGFiZWxcIj48L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbmFtZT1cInByZXZpb3VzQnRuX3t7bmFtZX19XCIgY2xhc3M9XCJidG4gYXBwLWJ1dHRvbiBidG4tZGVmYXVsdFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJoYXNQcmV2U3RlcFwiIChjbGljayk9XCJwcmV2KClcIiBbZGlzYWJsZWRdPVwiIWVuYWJsZVByZXZcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiYXBwLWljb24gd2kgd2ktY2hldnJvbi1sZWZ0XCI+PC9pPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJidG4tY2FwdGlvblwiIFt0ZXh0Q29udGVudF09XCJwcmV2aW91c2J0bmxhYmVsXCI+PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbmFtZT1cIm5leHRCdG5fe3tuYW1lfX1cIiBjbGFzcz1cImJ0biBhcHAtYnV0dG9uIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImhhc05leHRTdGVwXCIgKGNsaWNrKT1cIm5leHQoKVwiIFtkaXNhYmxlZF09XCIhZW5hYmxlTmV4dFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJidG4tY2FwdGlvblwiIFt0ZXh0Q29udGVudF09XCJuZXh0YnRubGFiZWxcIj48L3NwYW4+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImFwcC1pY29uIHdpIHdpLWNoZXZyb24tcmlnaHRcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBuYW1lPVwiZG9uZUJ0bl97e25hbWV9fVwiIGNsYXNzPVwiYnRuIGFwcC1idXR0b24gYnRuLXN1Y2Nlc3NcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0RvbmVCdG5cIiAoY2xpY2spPVwiZG9uZSgpXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVuYWJsZURvbmVcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiYXBwLWljb24gd20tc2wtbCBzbC1jaGVja1wiPjwvaT5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYnRuLWNhcHRpb25cIiBbdGV4dENvbnRlbnRdPVwiZG9uZWJ0bmxhYmVsXCI+PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
533
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9jb250YWluZXJzL3dpemFyZC9zcmMvd2l6YXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9jb250YWluZXJzL3dpemFyZC9zcmMvd2l6YXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCxTQUFTLEVBQ1QsZUFBZSxFQUNmLE1BQU0sRUFDTixRQUFRLEVBRVIsUUFBUSxFQUNSLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxpQkFBaUIsRUFBaUIsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7SUNSMUQsMkJBQXNFOzs7SUFFbEUsZ0NBQThFO0lBQUEsWUFBTztJQUFBLGlCQUFPOzs7SUFBZCxjQUFPO0lBQVAsOEJBQU87OztJQUNyRix3QkFBbUs7OztJQUNuSyx3QkFBaUk7OztJQUNqSSxvQkFBaU07OztJQUE5TCw2REFBbUM7OztJQUN0QyxvQkFBcUk7OztJQUFsSSxpRUFBdUM7OztJQUcxQyw0QkFBcUQ7SUFBQSxZQUFlO0lBQUEsaUJBQU87OztJQUF0QixjQUFlO0lBQWYsc0NBQWU7Ozs7SUFHeEUsZ0NBQWtGO0lBQzlFLDJCQUE4RDtJQUM5RCw2QkFBdUU7SUFBbEQsOEtBQVMseUJBQWtCLEtBQUM7SUFBc0Isb0JBQUk7SUFDL0UsQUFEK0UsaUJBQUksRUFDNUU7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QztnRkE1VlEsZUFBZSwwREFtRFcsa0JBQWtCO29FQW5ENUMsZUFBZTt3Q0FHUCxtQkFBbUI7Ozs7OENBUHpCO2dCQUNQLGtCQUFrQixDQUFDLGVBQWUsQ0FBQzthQUN0Qzs7WUM1QkQsQUFESiw4QkFBZ0MsU0FDNkI7WUFDckQsZ0VBRWdEO1lBdUJ4RCxBQURJLGlCQUFLLEVBQ0g7WUFDTiw4QkFBd0M7WUFDcEMsNERBQTZGO1lBQzdGLDZGQUEwRDtZQUM5RCxpQkFBTTtZQUNOLDJCQUFrRTtZQUM5RCw0REFBdUg7WUFDdkgsOEJBQXNDO1lBYWxDLEFBTEEsQUFMQSxBQUZBLHNFQUNtRiwyREFFYiwyREFLQSwyREFNckM7WUFLekMsQUFESSxpQkFBTSxFQUNKOztZQXJERSxjQUFvRDtZQUFwRCwrRUFBb0Q7WUFDUCxjQUFVO1lBQVYsbUNBQVU7WUEyQjdDLGVBQXFCO1lBQXJCLDBDQUFxQjtZQUdsQyxlQUE0RDtZQUE1RCx1RkFBNEQ7WUFDUixjQUE2QjtZQUE3QixrRkFBNkI7WUFFTSxlQUFnQjtZQUFoQixxQ0FBZ0I7WUFHM0YsY0FBaUI7WUFBakIsc0NBQWlCO1lBS2pCLGNBQWlCO1lBQWpCLHNDQUFpQjtZQUtqQixjQUFpQjtZQUFqQixzQ0FBaUI7OztpRkRqQnJCLGVBQWU7Y0FQM0IsU0FBUzsyQkFDSSxlQUFlLGFBRWQ7b0JBQ1Asa0JBQWtCLGlCQUFpQjtpQkFDdEM7O3NCQXFEMkIsTUFBTTt1QkFBQyxrQkFBa0I7O3NCQUFHLFFBQVE7cUJBaEQxQixLQUFLO2tCQUExQyxlQUFlO21CQUFDLG1CQUFtQjs7a0ZBSDNCLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEluamVjdCxcbiAgICBJbmplY3RvcixcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgUXVlcnlMaXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge25vb3B9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7IEFQUExZX1NUWUxFU19UWVBFLCBJV2lkZ2V0Q29uZmlnLCBwcm92aWRlQXNXaWRnZXRSZWYsIHN0eWxlciwgU3R5bGFibGVDb21wb25lbnQgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcblxuaW1wb3J0IHsgcmVnaXN0ZXJQcm9wcyB9IGZyb20gJy4vd2l6YXJkLnByb3BzJztcbmltcG9ydCB7IFdpemFyZFN0ZXBEaXJlY3RpdmUgfSBmcm9tICcuL3dpemFyZC1zdGVwL3dpemFyZC1zdGVwLmRpcmVjdGl2ZSc7XG5cbmNvbnN0IERFRkFVTFRfQ0xTID0gJ2FwcC13aXphcmQgcGFuZWwgY2xlYXJmaXgnO1xuY29uc3QgV0lER0VUX0NPTkZJRzogSVdpZGdldENvbmZpZyA9IHtcbiAgICB3aWRnZXRUeXBlOiAnd20td2l6YXJkJyxcbiAgICBob3N0Q2xhc3M6IERFRkFVTFRfQ0xTXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2Rpdlt3bVdpemFyZF0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi93aXphcmQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoV2l6YXJkQ29tcG9uZW50KVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgV2l6YXJkQ29tcG9uZW50IGV4dGVuZHMgU3R5bGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQge1xuICAgIHN0YXRpYyBpbml0aWFsaXplUHJvcHMgPSByZWdpc3RlclByb3BzKCk7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFdpemFyZFN0ZXBEaXJlY3RpdmUpIHN0ZXBzOiBRdWVyeUxpc3Q8V2l6YXJkU3RlcERpcmVjdGl2ZT47XG5cbiAgICBwdWJsaWMgbWVzc2FnZToge2NhcHRpb246IHN0cmluZywgdHlwZTogc3RyaW5nfTtcbiAgICBwdWJsaWMgY3VycmVudFN0ZXA6IFdpemFyZFN0ZXBEaXJlY3RpdmU7XG5cbiAgICBwdWJsaWMgc3RlcENsYXNzOiBzdHJpbmc7XG4gICAgcHVibGljIGNsYXNzO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvbWlzZVJlc29sdmVyRm46IEZ1bmN0aW9uO1xuICAgIHB1YmxpYyBhY3Rpb25zYWxpZ25tZW50OiBhbnk7XG4gICAgcHVibGljIGNhbmNlbGFibGU6IGFueTtcbiAgICBwdWJsaWMgZW5hYmxlbmV4dDogYW55O1xuXG4gICAgZ2V0IGhhc1ByZXZTdGVwKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaXNGaXJzdFN0ZXAodGhpcy5jdXJyZW50U3RlcCk7XG4gICAgfVxuXG4gICAgZ2V0IGhhc05leHRTdGVwKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaXNMYXN0U3RlcCh0aGlzLmN1cnJlbnRTdGVwKTtcbiAgICB9XG5cbiAgICBnZXQgc2hvd0RvbmVCdG4oKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhdGhpcy5oYXNOZXh0U3RlcCAmJiB0aGlzLmN1cnJlbnRTdGVwLmVuYWJsZURvbmU7XG4gICAgfVxuXG4gICAgZ2V0IGVuYWJsZVByZXYoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRTdGVwLmVuYWJsZVByZXY7XG4gICAgfVxuXG4gICAgZ2V0IGVuYWJsZU5leHQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmVuYWJsZW5leHQgPyB0cnVlIDogKHRoaXMuY3VycmVudFN0ZXAuZW5hYmxlTmV4dCAmJiB0aGlzLmN1cnJlbnRTdGVwLmlzVmFsaWQpO1xuICAgIH1cblxuICAgIGdldCBlbmFibGVEb25lKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuY3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50U3RlcC5lbmFibGVEb25lICYmIHRoaXMuY3VycmVudFN0ZXAuaXNWYWxpZDtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihpbmo6IEluamVjdG9yLCBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnkpIHtcbiAgICAgICAgbGV0IHJlc29sdmVGbjogRnVuY3Rpb24gPSBub29wO1xuXG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0NPTkZJRywgZXhwbGljaXRDb250ZXh0LCBuZXcgUHJvbWlzZShyZXMgPT4gcmVzb2x2ZUZuID0gcmVzKSk7XG4gICAgICAgIHN0eWxlcih0aGlzLm5hdGl2ZUVsZW1lbnQsIHRoaXMsIEFQUExZX1NUWUxFU19UWVBFLlNIRUxMKTtcblxuICAgICAgICB0aGlzLnByb21pc2VSZXNvbHZlckZuID0gcmVzb2x2ZUZuO1xuXG4gICAgICAgIC8vIGluaXRpYWxpemUgdGhlIG1lc3NhZ2Ugb2JqZWN0IHdpdGggZGVmYXVsdCB2YWx1ZXNcbiAgICAgICAgdGhpcy5tZXNzYWdlID0ge1xuICAgICAgICAgICAgY2FwdGlvbjogJycsXG4gICAgICAgICAgICB0eXBlOiAnJ1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybnMgbmV4dCB2YWxpZCBzdGVwLiB0aGUgaW5kZXggcGFzc2VkIGlzIGFsc28gY2hlY2tlZCBpZiBpdHMgdmFsaWQgc3RlcFxuICAgICAqIEBwYXJhbSBpbmRleFxuICAgICAqIEByZXR1cm5zIHtXaXphcmRTdGVwRGlyZWN0aXZlfVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0TmV4dFZhbGlkU3RlcEZvcm1JbmRleChpbmRleDogbnVtYmVyKTogV2l6YXJkU3RlcERpcmVjdGl2ZSB7XG4gICAgICAgIGZvciAobGV0IGkgPSBpbmRleDsgaSA8IHRoaXMuc3RlcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHN0ZXAgPSB0aGlzLmdldFN0ZXBSZWZCeUluZGV4KGkpO1xuICAgICAgICAgICAgaWYgKHN0ZXAuc2hvdykge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdGVwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJucyBwcmV2aW91cyB2YWxpZCBzdGVwLiB0aGUgaW5kZXggcGFzc2VkIGlzIGFsc28gY2hlY2tlZCBpZiBpdHMgdmFsaWQgc3RlcFxuICAgICAqIEBwYXJhbSBpbmRleFxuICAgICAqIEByZXR1cm5zIHtXaXphcmRTdGVwRGlyZWN0aXZlfVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0UHJldmlvdXNWYWxpZFN0ZXBGb3JtSW5kZXgoaW5kZXg6IG51bWJlcik6IFdpemFyZFN0ZXBEaXJlY3RpdmUge1xuICAgICAgICBmb3IgKGxldCBpID0gaW5kZXg7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCBzdGVwID0gdGhpcy5nZXRTdGVwUmVmQnlJbmRleChpKTtcbiAgICAgICAgICAgIGlmIChzdGVwLnNob3cpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RlcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybnMgY3VycmVudCBzdGVwIGluZGV4IHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9XG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRDdXJyZW50U3RlcEluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFN0ZXBJbmRleEJ5UmVmKHRoaXMuY3VycmVudFN0ZXApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybnMgc3RlcFJlZiB3aGVuIGluZGV4IGlzIHBhc3NlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAgICAgKiBAcmV0dXJucyB7V2l6YXJkU3RlcERpcmVjdGl2ZX1cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFN0ZXBSZWZCeUluZGV4KGluZGV4OiBudW1iZXIpOiBXaXphcmRTdGVwRGlyZWN0aXZlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHMudG9BcnJheSgpW2luZGV4XTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm5zIHRoZSBpbmRleCB2YWx1ZSBvZiB0aGUgc3RlcC5cbiAgICAgKiBAcGFyYW0ge1dpemFyZFN0ZXBEaXJlY3RpdmV9IHdpemFyZFN0ZXBcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0U3RlcEluZGV4QnlSZWYod2l6YXJkU3RlcDogV2l6YXJkU3RlcERpcmVjdGl2ZSk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLnRvQXJyYXkoKS5pbmRleE9mKHdpemFyZFN0ZXApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdldHMgc3RlcFJlZiBieSBzZWFyY2hpbmcgb24gdGhlIG5hbWUgcHJvcGVydHkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICAgKiBAcmV0dXJucyB7V2l6YXJkU3RlcERpcmVjdGl2ZX1cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFN0ZXBSZWZCeU5hbWUobmFtZTogc3RyaW5nKTogV2l6YXJkU3RlcERpcmVjdGl2ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLmZpbmQoc3RlcCA9PiBzdGVwLm5hbWUgPT09IG5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNldHMgZGVmYXVsdCBzdGVwIGFzIGN1cnJlbnQgc3RlcCBpZiBjb25maWd1cmVkXG4gICAgICogb3IgZmluZHMgZmlyc3QgdmFsaWQgc3RlcCBhbmQgc2V0IGl0IGFzIGN1cnJlbnQgc3RlcC5cbiAgICAgKiBAcGFyYW0ge1dpemFyZFN0ZXBEaXJlY3RpdmV9IHN0ZXBcbiAgICAgKi9cbiAgICBwcml2YXRlIHNldERlZmF1bHRTdGVwKHN0ZXA6IFdpemFyZFN0ZXBEaXJlY3RpdmUpIHtcbiAgICAgICAgLy8gSWYgdGhlIGRlZmF1bHQgc3RlcCBoYXMgc2hvdyB0cnVlIHRoZW4gb25seSB1cGRhdGUgdGhlIGN1cnJlbnRTdGVwXG4gICAgICAgIGlmIChzdGVwICYmIHN0ZXAuc2hvdykge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RlcCA9IHN0ZXA7XG4gICAgICAgICAgICBzdGVwLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICBzdGVwLmlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICAgICAgLy8gTWFyayBhbGwgcHJldmlvdXMgc3RlcCBzdGF0dXMgQ09NUExFVEVEXG4gICAgICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmdldFN0ZXBJbmRleEJ5UmVmKHN0ZXApIC0gMTtcbiAgICAgICAgICAgIHdoaWxlIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldlN0ZXAgPSB0aGlzLmdldFN0ZXBSZWZCeUluZGV4KGluZGV4KTtcbiAgICAgICAgICAgICAgICBwcmV2U3RlcC5kb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBwcmV2U3RlcC5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpbmRleC0tO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gc2V0IG5leHQgdmFsaWQgc3RlcCBhcyBjdXJyZW50IHN0ZXBcbiAgICAgICAgICAgIHN0ZXAgPSB0aGlzLmdldE5leHRWYWxpZFN0ZXBGb3JtSW5kZXgoMCk7XG4gICAgICAgICAgICBpZiAoc3RlcCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdFN0ZXAoc3RlcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZGRNb3JlVGV4dCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdHMgdGhlIGFzc29jaWF0ZWQgc3RlcCB3aGVuIHRoZSB3aXphcmQgaGVhZGVyIGlzIGNsaWNrZWQuXG4gICAgICogQHBhcmFtICRldmVudFxuICAgICAqIEBwYXJhbSB7V2l6YXJkU3RlcERpcmVjdGl2ZX0gY3VycmVudFN0ZXBcbiAgICAgKi9cbiAgICBwcml2YXRlIG9uV2l6YXJkSGVhZGVyQ2xpY2soJGV2ZW50OiBFdmVudCwgY3VycmVudFN0ZXA6IFdpemFyZFN0ZXBEaXJlY3RpdmUpIHtcbiAgICAgICAgLy8gc2VsZWN0IHRoZSBzdGVwIGlmIGl0J3Mgc3RhdHVzIGlzIGRvbmVcbiAgICAgICAgaWYgKGN1cnJlbnRTdGVwLmRvbmUpIHtcbiAgICAgICAgICAgIC8vIHNldCBhbGwgdGhlIG5leHQgc3RlcHMgc3RhdHVzIGFzIGRpc2FibGVkIGFuZCBwcmV2aW91cyBzdGVwcyBhcyBkb25lXG4gICAgICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXAsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4IDwgdGhpcy5nZXRTdGVwSW5kZXhCeVJlZihjdXJyZW50U3RlcCkpIHtcbiAgICAgICAgICAgICAgICAgICBzdGVwLmRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgIHN0ZXAuaXNEb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5pc0RvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIHNldCB0aGUgc2VsZWN0ZWQgc3RlcCBhcyBjdXJyZW50IHN0ZXAgYW5kIG1ha2UgaXQgYWN0aXZlXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTdGVwID0gY3VycmVudFN0ZXA7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTdGVwLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmFkZE1vcmVUZXh0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNZXRob2QgdG8gbmF2aWdhdGUgdG8gbmV4dCBzdGVwXG4gICAgcHVibGljIG5leHQoZXZlbnROYW1lOiBzdHJpbmcgPSAnbmV4dCcpIHtcbiAgICAgICAgY29uc3QgY3VycmVudFN0ZXAgPSB0aGlzLmN1cnJlbnRTdGVwO1xuICAgICAgICBjb25zdCBjdXJyZW50U3RlcEluZGV4ID0gdGhpcy5nZXRDdXJyZW50U3RlcEluZGV4KCk7XG5cbiAgICAgICAgLy8gYWJvcnQgaWYgb25Ta2lwIG1ldGhvZCByZXR1cm5zIGZhbHNlXG4gICAgICAgIGlmIChldmVudE5hbWUgPT09ICdza2lwJykge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRTdGVwLmludm9rZVNraXBDQihjdXJyZW50U3RlcEluZGV4KSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmV4dGVuZE5leHRGbihjdXJyZW50U3RlcCwgY3VycmVudFN0ZXBJbmRleCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50U3RlcC5pc1ZhbGlkICYmIGV2ZW50TmFtZSA9PT0gJ25leHQnKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFN0ZXAuaW52b2tlTmV4dENCKGN1cnJlbnRTdGVwSW5kZXgpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZXh0ZW5kTmV4dEZuKGN1cnJlbnRTdGVwLCBjdXJyZW50U3RlcEluZGV4KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmVuYWJsZW5leHQgJiYgIXRoaXMuY3VycmVudFN0ZXAuaXNWYWxpZCl7XG4gICAgICAgICAgICBBcnJheS5mcm9tKCg8YW55PnRoaXMpLmN1cnJlbnRTdGVwLmdldEFsbEVtYmVkZGVkRm9ybXMoKSk/LmZvckVhY2goKGZvcm06YW55KSA9PiB7XG4gICAgICAgICAgICAgICAgZm9ybS53aWRnZXQuaGlnaGxpZ2h0SW52YWxpZEZpZWxkcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBleHRlbmROZXh0Rm4oY3VycmVudFN0ZXAsIGN1cnJlbnRTdGVwSW5kZXgpe1xuICAgICAgICBsZXQgbmV4dFN0ZXA6IFdpemFyZFN0ZXBEaXJlY3RpdmU7XG4gICAgICAgIG5leHRTdGVwID0gdGhpcy5nZXROZXh0VmFsaWRTdGVwRm9ybUluZGV4KGN1cnJlbnRTdGVwSW5kZXggKyAxKTtcbiAgICAgICAgbmV4dFN0ZXAuaXNJbml0aWFsaXplZCA9IHRydWU7XG5cbiAgICAgICAgLy8gSWYgdGhlcmUgYXJlIGFueSBzdGVwcyB3aGljaCBoYXMgc2hvdyB0aGVuIG9ubHkgY2hhbmdlIHN0YXRlIG9mIGN1cnJlbnQgc3RlcCBlbHNlIHJlbWFpbiBzYW1lXG4gICAgICAgIGlmIChuZXh0U3RlcCkge1xuICAgICAgICAgICAgY3VycmVudFN0ZXAuaXNEb25lID0gdHJ1ZTtcbiAgICAgICAgICAgIGN1cnJlbnRTdGVwLmRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgbmV4dFN0ZXAuYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFN0ZXAgPSBuZXh0U3RlcDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFkZE1vcmVUZXh0KCk7XG4gICAgfVxuICAgIC8vIE1ldGhvZCB0byBuYXZpZ2F0ZSB0byBwcmV2aW91cyBzdGVwXG4gICAgcHVibGljIHByZXYoKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gdGhpcy5jdXJyZW50U3RlcDtcbiAgICAgICAgY29uc3QgY3VycmVudFN0ZXBJbmRleCA9IHRoaXMuZ2V0Q3VycmVudFN0ZXBJbmRleCgpO1xuXG4gICAgICAgIGxldCBwcmV2U3RlcDogV2l6YXJkU3RlcERpcmVjdGl2ZTtcblxuICAgICAgICAvLyBhYm9ydCBpZiBvblByZXYgbWV0aG9kIHJldHVybnMgZmFsc2UuXG4gICAgICAgIGlmIChjdXJyZW50U3RlcC5pbnZva2VQcmV2Q0IoY3VycmVudFN0ZXBJbmRleCkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBwcmV2U3RlcCA9IHRoaXMuZ2V0UHJldmlvdXNWYWxpZFN0ZXBGb3JtSW5kZXgoY3VycmVudFN0ZXBJbmRleCAtIDEpO1xuXG4gICAgICAgIC8vIElmIHRoZXJlIGFyZSBhbnkgc3RlcHMgd2hpY2ggaGFzIHNob3cgdGhlbiBvbmx5IGNoYW5nZSBzdGF0ZSBvZiBjdXJyZW50IHN0ZXAgZWxzZSByZW1haW4gc2FtZVxuICAgICAgICBpZiAocHJldlN0ZXApIHtcbiAgICAgICAgICAgIGN1cnJlbnRTdGVwLmlzRG9uZSA9IGZhbHNlO1xuICAgICAgICAgICAgY3VycmVudFN0ZXAuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgcHJldlN0ZXAuYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFN0ZXAgPSBwcmV2U3RlcDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFkZE1vcmVUZXh0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNraXAoKSB7XG4gICAgICAgIHRoaXMubmV4dCgnc2tpcCcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnb3RvU3RlcChzdGVwTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGlmKHN0ZXBOYW1lKSB7XG4gICAgICAgICAgICBjb25zdCBnb3RvU3RlcEluZGV4ID0gdGhpcy5zdGVwcy50b0FycmF5KCkubWFwKHN0ZXAgPT4gc3RlcC5uYW1lKS5pbmRleE9mKHN0ZXBOYW1lKTtcbiAgICAgICAgICAgIGlmKGdvdG9TdGVwSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZ290b1N0ZXA6IFdpemFyZFN0ZXBEaXJlY3RpdmUgPSB0aGlzLmdldFN0ZXBSZWZCeUluZGV4KGdvdG9TdGVwSW5kZXgpO1xuICAgICAgICAgICAgICAgIGlmKGdvdG9TdGVwPy5zaG93KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25XaXphcmRIZWFkZXJDbGljayhldmVudCwgZ290b1N0ZXApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUaGUgZ290b1N0ZXAgZnVuY3Rpb24gY2Fubm90IG5hdmlnYXRlIHRvIGhpZGRlbiBzdGVwc1wiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYENvdWxkIG5vdCBmaW5kIHN0ZXAgJyR7c3RlcE5hbWV9J2ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTWV0aG9kIHRvIGludm9rZSBvbi1Eb25lIGV2ZW50IG9uIHdpemFyZFxuICAgIHB1YmxpYyBkb25lKCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRTdGVwLmlzRG9uZSA9IHRydWU7XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnZG9uZScsIHtzdGVwczogdGhpcy5zdGVwcy50b0FycmF5KCl9KTtcbiAgICB9XG4gICAgLy8gTWV0aG9kIHRvIGludm9rZSBvbi1DYW5jZWwgZXZlbnQgb24gd2l6YXJkXG4gICAgcHVibGljIGNhbmNlbCAoKSB7XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnY2FuY2VsJywge3N0ZXBzOiB0aGlzLnN0ZXBzLnRvQXJyYXkoKX0pO1xuICAgIH1cbiAgICBwdWJsaWMgYWRkTW9yZVRleHQoKXtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG5cblxuICAgICAgICB2YXIgbmV3V2luZG93V2lkdGggPSAkKHdpbmRvdykud2lkdGgoKTtcbiAgICAgICAgaWYobmV3V2luZG93V2lkdGggPCA3Njgpe1xuICAgICAgICAkKFwiLmFwcC13aXphcmQtc3RlcC5jdXJyZW50IC5zdWJ0aXRsZS13cmFwcGVyIC5zdGVwLXRpdGxlXCIpLmNzcyh7XCJoZWlnaHRcIjpcImF1dG9cIixcImRpc3BsYXlcIjpcImJsb2NrXCJ9KTtcbiAgICAgICAgdmFyIHN1YnRpdGxlVGV4dExlbmd0aCA9ICQoXCIuYXBwLXdpemFyZC1zdGVwLmN1cnJlbnQgLnN1YnRpdGxlLXdyYXBwZXIgLnN0ZXAtdGl0bGVcIikuaGVpZ2h0KCk7XG4gICAgICAgICQoXCIucmVhZF9tb3JlXCIpLmNzcyhcImRpc3BsYXlcIixcIm5vbmVcIik7XG4gICAgICAgICQoXCIuY3VycmVudCAuc3VidGl0bGUtd3JhcHBlclwiKS5yZW1vdmVDbGFzcyhcInJlYWRtb3JlX3N1YnRpdGxlXCIpO1xuXG4gICAgICAgIGlmKHN1YnRpdGxlVGV4dExlbmd0aD40NCl7XG4gICAgICAgICAgICAkKFwiLmFwcC13aXphcmQtc3RlcC5jdXJyZW50IC5zdWJ0aXRsZS13cmFwcGVyIC5zdGVwLXRpdGxlXCIpLmNzcyh7XCJoZWlnaHRcIjpcIjQ0cHhcIixcImRpc3BsYXlcIjpcIi13ZWJraXQtYm94XCJ9KTtcbiAgICAgICAgICAgICQoXCIuY3VycmVudCAucmVhZF9tb3JlXCIpLmNzcyhcImRpc3BsYXlcIixcImJsb2NrXCIpO1xuICAgICAgICAgICAgJChcIi5hY3RpdmUgLnJlYWRfbW9yZVwiKS5jc3MoXCJkaXNwbGF5XCIsXCJub25lXCIpO1xuICAgICAgICAgICAgJChcIi5kaXNhYmxlIC5yZWFkX21vcmVcIikuY3NzKFwiZGlzcGxheVwiLFwibm9uZVwiKTtcbiAgICAgICAgICAgICQoXCIuYXBwLXdpemFyZC1zdGVwPmFcIikuY3NzKFwiaGVpZ2h0XCIsXCIxMDBweFwiKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICB9XG4gICAgcHVibGljIHJlYWRNb3JlU3VidGl0bGUoKXtcbiAgICAgICAgJChcIi5jdXJyZW50IC5zdWJ0aXRsZS13cmFwcGVyXCIpLmFkZENsYXNzKFwicmVhZG1vcmVfc3VidGl0bGVcIik7XG4gICAgICAgICQoXCIuY3VycmVudCAucmVhZF9tb3JlXCIpLmNzcyhcImRpc3BsYXlcIixcIm5vbmVcIik7XG4gICAgICAgICQoZG9jdW1lbnQpLm9uKFwibW91c2V1cFwiLGZ1bmN0aW9uKGU6YW55KVxuICAgICAgICB7XG4gICAgICAgICAgICB2YXIgY29udGFpbmVyID0gJChcIi5zdWJ0aXRsZS13cmFwcGVyXCIpO1xuICAgICAgICAgICAgLy8gaWYgdGhlIHRhcmdldCBvZiB0aGUgY2xpY2sgaXNuJ3QgdGhlIGNvbnRhaW5lciBub3IgYSBkZXNjZW5kYW50IG9mIHRoZSBjb250YWluZXJcbiAgICAgICAgICAgIGlmICghY29udGFpbmVyLmlzKGUudGFyZ2V0KSAmJiBjb250YWluZXIuaGFzKGUudGFyZ2V0KS5sZW5ndGggPT09IDApXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgJChcIi5jdXJyZW50IC5zdWJ0aXRsZS13cmFwcGVyXCIpLnJlbW92ZUNsYXNzKFwicmVhZG1vcmVfc3VidGl0bGVcIik7XG4gICAgICAgICAgICAgICAgJChcIi5jdXJyZW50IC5yZWFkX21vcmVcIikuY3NzKFwiZGlzcGxheVwiLFwiYmxvY2tcIik7XG4gICAgICAgICAgICAgICAgJChkb2N1bWVudCkub2ZmKFwibW91c2V1cFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ZpcnN0U3RlcChzdGVwUmVmOiBXaXphcmRTdGVwRGlyZWN0aXZlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLmZpcnN0ID09PSBzdGVwUmVmO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNMYXN0U3RlcChzdGVwUmVmOiBXaXphcmRTdGVwRGlyZWN0aXZlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLmxhc3QgPT09IHN0ZXBSZWY7XG4gICAgfVxuXG4gICAgLy8gRGVmaW5lIHRoZSBwcm9wZXJ0eSBjaGFuZ2UgaGFuZGxlci4gVGhpcyBNZXRob2Qgd2lsbCBiZSB0cmlnZ2VyZWQgd2hlbiB0aGVyZSBpcyBhIGNoYW5nZSBpbiB0aGUgd2lkZ2V0IHByb3BlcnR5XG4gICAgb25Qcm9wZXJ0eUNoYW5nZShrZXk6IHN0cmluZywgbnY6IGFueSwgb3Y/OiBhbnkpIHtcbiAgICAgICAgLy8gTW9uaXRvcmluZyBjaGFuZ2VzIGZvciBwcm9wZXJ0aWVzIGFuZCBhY2NvcmRpbmdseSBoYW5kbGluZyByZXNwZWN0aXZlIGNoYW5nZXNcblxuICAgICAgICBpZiAoa2V5ID09PSAnc3RlcHN0eWxlJykge1xuICAgICAgICAgICAgdGhpcy5zdGVwQ2xhc3MgPSAgbnYgPT09ICdqdXN0aWZpZWQnID8gJ25hdi1qdXN0aWZpZWQnIDogJyc7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnZGVmYXVsdHN0ZXAnKSB7XG4gICAgICAgICAgICB0aGlzLnNldERlZmF1bHRTdGVwKHRoaXMuZ2V0U3RlcFJlZkJ5TmFtZShudikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJDb250ZW50SW5pdCgpO1xuICAgICAgICB0aGlzLnByb21pc2VSZXNvbHZlckZuKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICAgICAgc3R5bGVyKFxuICAgICAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5wYW5lbC1ib2R5JykgYXMgSFRNTEVsZW1lbnQsXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgQVBQTFlfU1RZTEVTX1RZUEUuSU5ORVJfU0hFTExcbiAgICAgICAgKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IGlmKCQod2luZG93KS53aWR0aCgpPDc2OCl7XG4gICAgICAgICAgICAkKFwiLmFwcC13aXphcmRcIikucmVtb3ZlQ2xhc3MoXCJ2ZXJ0aWNhbFwiKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYXBwLXdpemFyZC1oZWFkaW5nXCI+XG4gICAgPHVsIGNsYXNzPVwiYXBwLXdpemFyZC1zdGVwcyBuYXYgbmF2LXBpbGxzIHt7c3RlcENsYXNzfX1cIj5cbiAgICAgICAgPGxpIGNsYXNzPVwiYXBwLXdpemFyZC1zdGVwXCIgKm5nRm9yPVwibGV0IHN0ZXAgb2Ygc3RlcHM7IGxldCBpID0gaW5kZXhcIiBbaGlkZGVuXT1cIiFzdGVwLnNob3dcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie2FjdGl2ZTogc3RlcC5kb25lLCBjdXJyZW50OiBzdGVwLmFjdGl2ZSwgZGlzYWJsZWQ6IHN0ZXAuZGlzYWJsZWR9XCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbldpemFyZEhlYWRlckNsaWNrKCRldmVudCwgc3RlcClcIj5cbiAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiBbYXR0ci5hcmlhLWN1cnJlbnRdPVwic3RlcC5hY3RpdmUgPyAnc3RlcCcgOiBudWxsXCJcbiAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwic3RlcC5kaXNhYmxlZFwiIFthdHRyLnRpdGxlXT1cInN0ZXAudGl0bGVcIlxuICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyd0aXRsZS1jZW50ZXItYWxpZ24nOmNsYXNzICYmIGNsYXNzLmluY2x1ZGVzKCdjbGFzc2ljJykgJiYgIXN0ZXAuc3VidGl0bGV9XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiICpuZ0lmPVwiY2xhc3MgJiYgY2xhc3MuaW5jbHVkZXMoJ2NsYXNzaWMnKVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIndpemFyZC1zdGVwLW51bWJlclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50XCIgKm5nSWY9XCJjbGFzcyAmJiBjbGFzcy5pbmNsdWRlcygnbnVtYmVyJykgJiYgIXN0ZXAuaXNEb25lXCI+e3tpKzF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJkb3R0ZWRzdGVwcGVyXCIgKm5nSWY9XCJjbGFzcyAmJiAoY2xhc3MuaW5jbHVkZXMoJ2RvdHRlZHN0ZXBwZXInKSB8fCBjbGFzcy5pbmNsdWRlcygndGV4dC1pbmxpbmUnKSAmJiAhY2xhc3MuaW5jbHVkZXMoJ2ljb25zdGVwcGVyJykpICYmICFzdGVwLmlzRG9uZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJhcHAtaWNvbiB3aSB3aS1kb25lXCIgKm5nSWY9XCJjbGFzcyAmJiAoY2xhc3MuaW5jbHVkZXMoJ2RvdHRlZHN0ZXBwZXInKSB8fCBjbGFzcy5pbmNsdWRlcygnbnVtYmVyJykpICYmIHN0ZXAuaXNEb25lXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImFwcC1pY29uIHt7c3RlcC5pY29uY2xhc3N9fVwiICpuZ0lmPVwiKGNsYXNzICYmIGNsYXNzLmluY2x1ZGVzKCdpY29uc3RlcHBlcicpKSAmJiAoKHN0ZXAuaWNvbmNsYXNzICYmICFzdGVwLmlzRG9uZSkgfHwgKHN0ZXAuaWNvbmNsYXNzICYmIHN0ZXAuaXNEb25lICYmIHN0ZXAuZG9uZWljb25jbGFzcyA9PT0nJykpXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImFwcC1pY29uIHt7c3RlcC5kb25laWNvbmNsYXNzfX1cIiAqbmdJZj1cInN0ZXAuZG9uZWljb25jbGFzcyAmJiBzdGVwLmlzRG9uZSAmJiAoY2xhc3MgJiYgY2xhc3MuaW5jbHVkZXMoJ2ljb25zdGVwcGVyJykpXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjbGFzcyAmJiBjbGFzcy5pbmNsdWRlcygndGV4dC1pbmxpbmUnKVwiPnt7JzAnICsgKGkrMSl9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwLXRpdGxlXCIgW3RleHRDb250ZW50XT1cInN0ZXAudGl0bGVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VidGl0bGUtd3JhcHBlclwiIFthdHRyLnRpdGxlXT1cInN0ZXAuc3VidGl0bGVcIiAqbmdJZj1cInN0ZXAuc3VidGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwLXRpdGxlXCIgW3RleHRDb250ZW50XT1cInN0ZXAuc3VidGl0bGVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwicmVhZF9tb3JlXCIgKGNsaWNrKT1cInJlYWRNb3JlU3VidGl0bGUoKVwiIHN0eWxlPVwiZGlzcGxheTpub25lXCI+bW9yZTwvYT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbGk+XG4gICAgPC91bD5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImFwcC13aXphcmQtYm9keSBwYW5lbC1ib2R5XCI+XG4gICAgPHAgd21NZXNzYWdlICpuZ0lmPVwibWVzc2FnZS5jYXB0aW9uXCIgY2FwdGlvbi5iaW5kPVwibWVzc2FnZS5jYXB0aW9uXCIgdHlwZS5iaW5kPVwibWVzc2FnZS50eXBlXCI+PC9wPlxuICAgIDxuZy1jb250ZW50IG5nUHJvamVjdEFzPVwiZm9ybVt3bVdpemFyZFN0ZXBdXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiYXBwLXdpemFyZC1hY3Rpb25zIHBhbmVsLWZvb3RlciB7e2FjdGlvbnNhbGlnbm1lbnR9fVwiPlxuICAgIDxhIGNsYXNzPVwiYXBwLXdpemFyZC1za2lwXCIgbmFtZT1cInNraXBTdGVwX3t7bmFtZX19XCIgKm5nSWY9XCJjdXJyZW50U3RlcD8uZW5hYmxlc2tpcFwiIHRpdGxlPVwiU2tpcCBzdGVwXCIgKGNsaWNrKT1cInNraXAoKVwiPlNraXAgJnJhcXVvOzwvYT5cbiAgICA8ZGl2IGNsYXNzPVwiYXBwLXdpemFyZC1hY3Rpb25zLXJpZ2h0XCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG5hbWU9XCJjYW5jZWxCdG5fe3tuYW1lfX1cIiBjbGFzcz1cImJ0biBhcHAtYnV0dG9uIGJ0bi1kZWZhdWx0XCIgKm5nSWY9XCJjYW5jZWxhYmxlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsKClcIiBbdGl0bGVdPVwiY2FuY2VsYnRubGFiZWxcIiBbdGV4dENvbnRlbnRdPVwiY2FuY2VsYnRubGFiZWxcIj48L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbmFtZT1cInByZXZpb3VzQnRuX3t7bmFtZX19XCIgY2xhc3M9XCJidG4gYXBwLWJ1dHRvbiBidG4tZGVmYXVsdFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJoYXNQcmV2U3RlcFwiIChjbGljayk9XCJwcmV2KClcIiBbZGlzYWJsZWRdPVwiIWVuYWJsZVByZXZcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiYXBwLWljb24gd2kgd2ktY2hldnJvbi1sZWZ0XCI+PC9pPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJidG4tY2FwdGlvblwiIFt0ZXh0Q29udGVudF09XCJwcmV2aW91c2J0bmxhYmVsXCI+PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbmFtZT1cIm5leHRCdG5fe3tuYW1lfX1cIiBjbGFzcz1cImJ0biBhcHAtYnV0dG9uIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImhhc05leHRTdGVwXCIgKGNsaWNrKT1cIm5leHQoKVwiIFtkaXNhYmxlZF09XCIhZW5hYmxlTmV4dFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJidG4tY2FwdGlvblwiIFt0ZXh0Q29udGVudF09XCJuZXh0YnRubGFiZWxcIj48L3NwYW4+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImFwcC1pY29uIHdpIHdpLWNoZXZyb24tcmlnaHRcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBuYW1lPVwiZG9uZUJ0bl97e25hbWV9fVwiIGNsYXNzPVwiYnRuIGFwcC1idXR0b24gYnRuLXN1Y2Nlc3NcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0RvbmVCdG5cIiAoY2xpY2spPVwiZG9uZSgpXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVuYWJsZURvbmVcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiYXBwLWljb24gd20tc2wtbCBzbC1jaGVja1wiPjwvaT5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYnRuLWNhcHRpb25cIiBbdGV4dENvbnRlbnRdPVwiZG9uZWJ0bmxhYmVsXCI+PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -247,10 +247,10 @@ function WizardComponent_li_2_Template(rf, ctx) { if (rf & 1) {
247
247
  } if (rf & 2) {
248
248
  const step_r2 = ctx.$implicit;
249
249
  const ctx_r2 = i0.ɵɵnextContext();
250
- i0.ɵɵproperty("hidden", !step_r2.show)("ngClass", i0.ɵɵpureFunction3(14, _c2, step_r2.done, step_r2.active, step_r2.disabled));
250
+ i0.ɵɵproperty("hidden", !step_r2.show)("ngClass", i0.ɵɵpureFunction3(15, _c2, step_r2.done, step_r2.active, step_r2.disabled));
251
251
  i0.ɵɵadvance();
252
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(18, _c3, ctx_r2.class && ctx_r2.class.includes("classic") && !step_r2.subtitle));
253
- i0.ɵɵattribute("aria-label", step_r2.title)("title", step_r2.title);
252
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(19, _c3, ctx_r2.class && ctx_r2.class.includes("classic") && !step_r2.subtitle));
253
+ i0.ɵɵattribute("aria-current", step_r2.active ? "step" : null)("aria-disabled", step_r2.disabled)("title", step_r2.title);
254
254
  i0.ɵɵadvance();
255
255
  i0.ɵɵproperty("ngIf", ctx_r2.class && ctx_r2.class.includes("classic"));
256
256
  i0.ɵɵadvance(2);
@@ -646,10 +646,10 @@ class WizardComponent extends StylableComponent {
646
646
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.steps = _t);
647
647
  } }, features: [i0.ɵɵProvidersFeature([
648
648
  provideAsWidgetRef(WizardComponent)
649
- ]), i0.ɵɵInheritDefinitionFeature], attrs: _c0, ngContentSelectors: _c1, decls: 13, vars: 13, consts: [["role", "tab", 1, "app-wizard-heading"], ["class", "app-wizard-step", 3, "hidden", "ngClass", "click", 4, "ngFor", "ngForOf"], ["role", "tabpanel", 1, "app-wizard-body", "panel-body"], ["wmMessage", "", "caption.bind", "message.caption", "type.bind", "message.type", 4, "ngIf"], ["class", "app-wizard-skip", "title", "Skip step", 3, "name", "click", 4, "ngIf"], [1, "app-wizard-actions-right"], ["type", "button", "class", "btn app-button btn-default", 3, "name", "title", "textContent", "click", 4, "ngIf"], ["type", "button", "class", "btn app-button btn-default", 3, "name", "disabled", "click", 4, "ngIf"], ["type", "button", "class", "btn app-button btn-primary", 3, "name", "disabled", "click", 4, "ngIf"], ["type", "button", "class", "btn app-button btn-success", 3, "name", "disabled", "click", 4, "ngIf"], [1, "app-wizard-step", 3, "click", "hidden", "ngClass"], ["href", "javascript:void(0)", 3, "ngClass"], ["class", "arrow", 4, "ngIf"], [1, "wizard-step-number"], ["class", "count", 4, "ngIf"], ["class", "dottedstepper", 4, "ngIf"], ["class", "app-icon wi wi-done", 4, "ngIf"], [3, "class", 4, "ngIf"], [1, "title-wrapper"], [4, "ngIf"], [1, "step-title", 3, "textContent"], ["class", "subtitle-wrapper", 4, "ngIf"], [1, "arrow"], [1, "count"], [1, "dottedstepper"], [1, "app-icon", "wi", "wi-done"], [1, "subtitle-wrapper"], [1, "read_more", 2, "display", "none", 3, "click"], ["wmMessage", "", "caption.bind", "message.caption", "type.bind", "message.type"], ["title", "Skip step", 1, "app-wizard-skip", 3, "click", "name"], ["type", "button", 1, "btn", "app-button", "btn-default", 3, "click", "name", "title", "textContent"], ["type", "button", 1, "btn", "app-button", "btn-default", 3, "click", "name", "disabled"], [1, "app-icon", "wi", "wi-chevron-left"], [1, "btn-caption", 3, "textContent"], ["type", "button", 1, "btn", "app-button", "btn-primary", 3, "click", "name", "disabled"], [1, "app-icon", "wi", "wi-chevron-right"], ["type", "button", 1, "btn", "app-button", "btn-success", 3, "click", "name", "disabled"], [1, "app-icon", "wm-sl-l", "sl-check"]], template: function WizardComponent_Template(rf, ctx) { if (rf & 1) {
649
+ ]), i0.ɵɵInheritDefinitionFeature], attrs: _c0, ngContentSelectors: _c1, decls: 13, vars: 13, consts: [[1, "app-wizard-heading"], ["class", "app-wizard-step", 3, "hidden", "ngClass", "click", 4, "ngFor", "ngForOf"], [1, "app-wizard-body", "panel-body"], ["wmMessage", "", "caption.bind", "message.caption", "type.bind", "message.type", 4, "ngIf"], ["class", "app-wizard-skip", "title", "Skip step", 3, "name", "click", 4, "ngIf"], [1, "app-wizard-actions-right"], ["type", "button", "class", "btn app-button btn-default", 3, "name", "title", "textContent", "click", 4, "ngIf"], ["type", "button", "class", "btn app-button btn-default", 3, "name", "disabled", "click", 4, "ngIf"], ["type", "button", "class", "btn app-button btn-primary", 3, "name", "disabled", "click", 4, "ngIf"], ["type", "button", "class", "btn app-button btn-success", 3, "name", "disabled", "click", 4, "ngIf"], [1, "app-wizard-step", 3, "click", "hidden", "ngClass"], ["href", "javascript:void(0)", 3, "ngClass"], ["class", "arrow", 4, "ngIf"], [1, "wizard-step-number"], ["class", "count", 4, "ngIf"], ["class", "dottedstepper", 4, "ngIf"], ["class", "app-icon wi wi-done", 4, "ngIf"], [3, "class", 4, "ngIf"], [1, "title-wrapper"], [4, "ngIf"], [1, "step-title", 3, "textContent"], ["class", "subtitle-wrapper", 4, "ngIf"], [1, "arrow"], [1, "count"], [1, "dottedstepper"], [1, "app-icon", "wi", "wi-done"], [1, "subtitle-wrapper"], [1, "read_more", 2, "display", "none", 3, "click"], ["wmMessage", "", "caption.bind", "message.caption", "type.bind", "message.type"], ["title", "Skip step", 1, "app-wizard-skip", 3, "click", "name"], ["type", "button", 1, "btn", "app-button", "btn-default", 3, "click", "name", "title", "textContent"], ["type", "button", 1, "btn", "app-button", "btn-default", 3, "click", "name", "disabled"], [1, "app-icon", "wi", "wi-chevron-left"], [1, "btn-caption", 3, "textContent"], ["type", "button", 1, "btn", "app-button", "btn-primary", 3, "click", "name", "disabled"], [1, "app-icon", "wi", "wi-chevron-right"], ["type", "button", 1, "btn", "app-button", "btn-success", 3, "click", "name", "disabled"], [1, "app-icon", "wm-sl-l", "sl-check"]], template: function WizardComponent_Template(rf, ctx) { if (rf & 1) {
650
650
  i0.ɵɵprojectionDef();
651
651
  i0.ɵɵelementStart(0, "div", 0)(1, "ul");
652
- i0.ɵɵtemplate(2, WizardComponent_li_2_Template, 13, 20, "li", 1);
652
+ i0.ɵɵtemplate(2, WizardComponent_li_2_Template, 13, 21, "li", 1);
653
653
  i0.ɵɵelementEnd()();
654
654
  i0.ɵɵelementStart(3, "div", 2);
655
655
  i0.ɵɵtemplate(4, WizardComponent_p_4_Template, 1, 0, "p", 3);
@@ -685,7 +685,7 @@ class WizardComponent extends StylableComponent {
685
685
  type: Component,
686
686
  args: [{ selector: 'div[wmWizard]', providers: [
687
687
  provideAsWidgetRef(WizardComponent)
688
- ], template: "<div class=\"app-wizard-heading\" role=\"tab\">\n <ul class=\"app-wizard-steps nav nav-pills {{stepClass}}\">\n <li class=\"app-wizard-step\" *ngFor=\"let step of steps; let i = index\" [hidden]=\"!step.show\"\n [ngClass]=\"{active: step.done, current: step.active, disabled: step.disabled}\"\n (click)=\"onWizardHeaderClick($event, step)\">\n <a href=\"javascript:void(0)\" [attr.aria-label]=\"step.title\" [attr.title]=\"step.title\" [ngClass]=\"{'title-center-align':class && class.includes('classic') && !step.subtitle}\">\n <span class=\"arrow\" *ngIf=\"class && class.includes('classic')\"></span>\n <span class=\"wizard-step-number\">\n <span class=\"count\" *ngIf=\"class && class.includes('number') && !step.isDone\">{{i+1}}</span>\n <i class=\"dottedstepper\" *ngIf=\"class && (class.includes('dottedstepper') || class.includes('text-inline') && !class.includes('iconstepper')) && !step.isDone\"></i>\n <i class=\"app-icon wi wi-done\" *ngIf=\"class && (class.includes('dottedstepper') || class.includes('number')) && step.isDone\"></i>\n <i class=\"app-icon {{step.iconclass}}\" *ngIf=\"(class && class.includes('iconstepper')) && ((step.iconclass && !step.isDone) || (step.iconclass && step.isDone && step.doneiconclass ===''))\"></i>\n <i class=\"app-icon {{step.doneiconclass}}\" *ngIf=\"step.doneiconclass && step.isDone && (class && class.includes('iconstepper'))\"></i>\n </span>\n <span class=\"title-wrapper\">\n <span *ngIf=\"class && class.includes('text-inline')\">{{'0' + (i+1)}}</span>\n <span class=\"step-title\" [textContent]=\"step.title\"></span>\n </span>\n <span class=\"subtitle-wrapper\" [attr.title]=\"step.subtitle\" *ngIf=\"step.subtitle\">\n <span class=\"step-title\" [textContent]=\"step.subtitle\"></span>\n <a class=\"read_more\" (click)=\"readMoreSubtitle()\" style=\"display:none\">more</a>\n </span>\n </a> \n </li>\n </ul>\n</div>\n<div class=\"app-wizard-body panel-body\" role=\"tabpanel\">\n <p wmMessage *ngIf=\"message.caption\" caption.bind=\"message.caption\" type.bind=\"message.type\"></p>\n <ng-content ngProjectAs=\"form[wmWizardStep]\"></ng-content>\n</div>\n<div class=\"app-wizard-actions panel-footer {{actionsalignment}}\">\n <a class=\"app-wizard-skip\" name=\"skipStep_{{name}}\" *ngIf=\"currentStep?.enableskip\" title=\"Skip step\" (click)=\"skip()\">Skip &raquo;</a>\n <div class=\"app-wizard-actions-right\">\n <button type=\"button\" name=\"cancelBtn_{{name}}\" class=\"btn app-button btn-default\" *ngIf=\"cancelable\"\n (click)=\"cancel()\" [title]=\"cancelbtnlabel\" [textContent]=\"cancelbtnlabel\"></button>\n <button type=\"button\" name=\"previousBtn_{{name}}\" class=\"btn app-button btn-default\"\n *ngIf=\"hasPrevStep\" (click)=\"prev()\" [disabled]=\"!enablePrev\">\n <i class=\"app-icon wi wi-chevron-left\"></i>\n <span class=\"btn-caption\" [textContent]=\"previousbtnlabel\"></span>\n </button>\n <button type=\"button\" name=\"nextBtn_{{name}}\" class=\"btn app-button btn-primary\"\n *ngIf=\"hasNextStep\" (click)=\"next()\" [disabled]=\"!enableNext\">\n <span class=\"btn-caption\" [textContent]=\"nextbtnlabel\"></span>\n <i class=\"app-icon wi wi-chevron-right\"></i>\n </button>\n <button type=\"button\" name=\"doneBtn_{{name}}\" class=\"btn app-button btn-success\"\n *ngIf=\"showDoneBtn\" (click)=\"done()\"\n [disabled]=\"!enableDone\">\n <i class=\"app-icon wm-sl-l sl-check\"></i>\n <span class=\"btn-caption\" [textContent]=\"donebtnlabel\"></span>\n </button>\n </div>\n</div>\n" }]
688
+ ], template: "<div class=\"app-wizard-heading\">\n <ul class=\"app-wizard-steps nav nav-pills {{stepClass}}\">\n <li class=\"app-wizard-step\" *ngFor=\"let step of steps; let i = index\" [hidden]=\"!step.show\"\n [ngClass]=\"{active: step.done, current: step.active, disabled: step.disabled}\"\n (click)=\"onWizardHeaderClick($event, step)\">\n <a href=\"javascript:void(0)\" [attr.aria-current]=\"step.active ? 'step' : null\"\n [attr.aria-disabled]=\"step.disabled\" [attr.title]=\"step.title\"\n [ngClass]=\"{'title-center-align':class && class.includes('classic') && !step.subtitle}\">\n <span class=\"arrow\" *ngIf=\"class && class.includes('classic')\"></span>\n <span class=\"wizard-step-number\">\n <span class=\"count\" *ngIf=\"class && class.includes('number') && !step.isDone\">{{i+1}}</span>\n <i class=\"dottedstepper\" *ngIf=\"class && (class.includes('dottedstepper') || class.includes('text-inline') && !class.includes('iconstepper')) && !step.isDone\"></i>\n <i class=\"app-icon wi wi-done\" *ngIf=\"class && (class.includes('dottedstepper') || class.includes('number')) && step.isDone\"></i>\n <i class=\"app-icon {{step.iconclass}}\" *ngIf=\"(class && class.includes('iconstepper')) && ((step.iconclass && !step.isDone) || (step.iconclass && step.isDone && step.doneiconclass ===''))\"></i>\n <i class=\"app-icon {{step.doneiconclass}}\" *ngIf=\"step.doneiconclass && step.isDone && (class && class.includes('iconstepper'))\"></i>\n </span>\n <span class=\"title-wrapper\">\n <span *ngIf=\"class && class.includes('text-inline')\">{{'0' + (i+1)}}</span>\n <span class=\"step-title\" [textContent]=\"step.title\"></span>\n </span>\n <span class=\"subtitle-wrapper\" [attr.title]=\"step.subtitle\" *ngIf=\"step.subtitle\">\n <span class=\"step-title\" [textContent]=\"step.subtitle\"></span>\n <a class=\"read_more\" (click)=\"readMoreSubtitle()\" style=\"display:none\">more</a>\n </span>\n </a>\n </li>\n </ul>\n</div>\n<div class=\"app-wizard-body panel-body\">\n <p wmMessage *ngIf=\"message.caption\" caption.bind=\"message.caption\" type.bind=\"message.type\"></p>\n <ng-content ngProjectAs=\"form[wmWizardStep]\"></ng-content>\n</div>\n<div class=\"app-wizard-actions panel-footer {{actionsalignment}}\">\n <a class=\"app-wizard-skip\" name=\"skipStep_{{name}}\" *ngIf=\"currentStep?.enableskip\" title=\"Skip step\" (click)=\"skip()\">Skip &raquo;</a>\n <div class=\"app-wizard-actions-right\">\n <button type=\"button\" name=\"cancelBtn_{{name}}\" class=\"btn app-button btn-default\" *ngIf=\"cancelable\"\n (click)=\"cancel()\" [title]=\"cancelbtnlabel\" [textContent]=\"cancelbtnlabel\"></button>\n <button type=\"button\" name=\"previousBtn_{{name}}\" class=\"btn app-button btn-default\"\n *ngIf=\"hasPrevStep\" (click)=\"prev()\" [disabled]=\"!enablePrev\">\n <i class=\"app-icon wi wi-chevron-left\"></i>\n <span class=\"btn-caption\" [textContent]=\"previousbtnlabel\"></span>\n </button>\n <button type=\"button\" name=\"nextBtn_{{name}}\" class=\"btn app-button btn-primary\"\n *ngIf=\"hasNextStep\" (click)=\"next()\" [disabled]=\"!enableNext\">\n <span class=\"btn-caption\" [textContent]=\"nextbtnlabel\"></span>\n <i class=\"app-icon wi wi-chevron-right\"></i>\n </button>\n <button type=\"button\" name=\"doneBtn_{{name}}\" class=\"btn app-button btn-success\"\n *ngIf=\"showDoneBtn\" (click)=\"done()\"\n [disabled]=\"!enableDone\">\n <i class=\"app-icon wm-sl-l sl-check\"></i>\n <span class=\"btn-caption\" [textContent]=\"donebtnlabel\"></span>\n </button>\n </div>\n</div>\n" }]
689
689
  }], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
690
690
  type: Inject,
691
691
  args: ['EXPLICIT_CONTEXT']