@wavemaker/app-ng-runtime 11.8.0-next.24904 → 11.8.0-next.27301

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (346) hide show
  1. app-ng-runtime/build-task/bundles/index.umd.js +5 -5
  2. app-ng-runtime/build-task/esm2022/basic/progress/progress-bar/progress-bar.build.mjs +1 -1
  3. app-ng-runtime/build-task/esm2022/page/page.build.mjs +3 -2
  4. app-ng-runtime/build-task/fesm2022/index.mjs +2 -1
  5. app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
  6. app-ng-runtime/components/advanced/carousel/bundles/index.umd.js +5 -5
  7. app-ng-runtime/components/advanced/carousel/esm2022/carousel.animator.mjs +3 -2
  8. app-ng-runtime/components/advanced/carousel/esm2022/carousel.directive.mjs +1 -1
  9. app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs +2 -1
  10. app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
  11. app-ng-runtime/components/advanced/login/bundles/index.umd.js +6 -6
  12. app-ng-runtime/components/advanced/login/esm2022/login.component.mjs +4 -3
  13. app-ng-runtime/components/advanced/login/fesm2022/index.mjs +3 -2
  14. app-ng-runtime/components/advanced/login/fesm2022/index.mjs.map +1 -1
  15. app-ng-runtime/components/base/bundles/index.umd.js +203 -171
  16. app-ng-runtime/components/base/esm2022/directives/show-in-device.directive.mjs +1 -1
  17. app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +12 -11
  18. app-ng-runtime/components/base/esm2022/pipes/wm-pipe.mjs +3 -2
  19. app-ng-runtime/components/base/esm2022/utils/data-utils.mjs +30 -29
  20. app-ng-runtime/components/base/esm2022/utils/form-utils.mjs +47 -41
  21. app-ng-runtime/components/base/esm2022/utils/live-utils.mjs +8 -7
  22. app-ng-runtime/components/base/esm2022/utils/widget-utils.mjs +28 -27
  23. app-ng-runtime/components/base/esm2022/widgets/common/base/base-container.component.mjs +4 -3
  24. app-ng-runtime/components/base/esm2022/widgets/common/base/base-field-validations.mjs +24 -21
  25. app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +12 -11
  26. app-ng-runtime/components/base/esm2022/widgets/common/base/dataset-aware-nav.component.mjs +40 -14
  27. app-ng-runtime/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +3 -2
  28. app-ng-runtime/components/base/esm2022/widgets/common/dialog/dialog.service.mjs +3 -2
  29. app-ng-runtime/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +1 -1
  30. app-ng-runtime/components/base/esm2022/widgets/common/partial/partial.directive.mjs +3 -2
  31. app-ng-runtime/components/base/esm2022/widgets/common/partial-param/partial-param.directive.mjs +3 -2
  32. app-ng-runtime/components/base/esm2022/widgets/common/smooth-scroll/smooth-scroll.directive.mjs +6 -5
  33. app-ng-runtime/components/base/esm2022/widgets/framework/deviceview.mjs +1 -1
  34. app-ng-runtime/components/base/esm2022/widgets/framework/property-change-handler.mjs +3 -2
  35. app-ng-runtime/components/base/esm2022/widgets/framework/widget-proxy-provider.mjs +4 -3
  36. app-ng-runtime/components/base/fesm2022/index.mjs +206 -173
  37. app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
  38. app-ng-runtime/components/base/pipes/custom-pipes.d.ts +1 -1
  39. app-ng-runtime/components/base/utils/data-utils.d.ts +0 -1
  40. app-ng-runtime/components/base/utils/widget-utils.d.ts +2 -2
  41. app-ng-runtime/components/base/widgets/common/base/base-field-validations.d.ts +1 -1
  42. app-ng-runtime/components/base/widgets/common/base/partial-container.directive.d.ts +1 -1
  43. app-ng-runtime/components/basic/default/bundles/index.umd.js +10 -10
  44. app-ng-runtime/components/basic/default/esm2022/label/label.directive.mjs +4 -3
  45. app-ng-runtime/components/basic/default/esm2022/spinner/spinner.component.mjs +6 -5
  46. app-ng-runtime/components/basic/default/fesm2022/index.mjs +7 -6
  47. app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
  48. app-ng-runtime/components/basic/progress/bundles/index.umd.js +13 -13
  49. app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +5 -4
  50. app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +6 -5
  51. app-ng-runtime/components/basic/progress/esm2022/utils.mjs +3 -3
  52. app-ng-runtime/components/basic/progress/fesm2022/index.mjs +10 -9
  53. app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
  54. app-ng-runtime/components/basic/rich-text-editor/bundles/index.umd.js +15 -10
  55. app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +14 -8
  56. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs +13 -7
  57. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
  58. app-ng-runtime/components/basic/rich-text-editor/rich-text-editor.component.d.ts +2 -2
  59. app-ng-runtime/components/basic/search/bundles/index.umd.js +67 -65
  60. app-ng-runtime/components/basic/search/esm2022/data-provider/data-provider.mjs +1 -1
  61. app-ng-runtime/components/basic/search/esm2022/data-provider/local-data-provider.mjs +26 -23
  62. app-ng-runtime/components/basic/search/esm2022/data-provider/remote-data-provider.mjs +12 -11
  63. app-ng-runtime/components/basic/search/esm2022/search.component.mjs +31 -30
  64. app-ng-runtime/components/basic/search/fesm2022/index.mjs +66 -63
  65. app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
  66. app-ng-runtime/components/basic/tree/bundles/index.umd.js +9 -9
  67. app-ng-runtime/components/basic/tree/esm2022/tree.component.mjs +7 -6
  68. app-ng-runtime/components/basic/tree/fesm2022/index.mjs +6 -5
  69. app-ng-runtime/components/basic/tree/fesm2022/index.mjs.map +1 -1
  70. app-ng-runtime/components/chart/bundles/index.umd.js +72 -63
  71. app-ng-runtime/components/chart/chart.component.d.ts +1 -1
  72. app-ng-runtime/components/chart/chart.utils.d.ts +3 -3
  73. app-ng-runtime/components/chart/esm2022/chart.component.mjs +58 -48
  74. app-ng-runtime/components/chart/esm2022/chart.utils.mjs +14 -13
  75. app-ng-runtime/components/chart/fesm2022/index.mjs +69 -59
  76. app-ng-runtime/components/chart/fesm2022/index.mjs.map +1 -1
  77. app-ng-runtime/components/containers/accordion/bundles/index.umd.js +16 -16
  78. app-ng-runtime/components/containers/accordion/esm2022/accordion.directive.mjs +14 -13
  79. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs +13 -12
  80. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs.map +1 -1
  81. app-ng-runtime/components/containers/panel/bundles/index.umd.js +5 -5
  82. app-ng-runtime/components/containers/panel/esm2022/panel.component.mjs +3 -2
  83. app-ng-runtime/components/containers/panel/fesm2022/index.mjs +2 -1
  84. app-ng-runtime/components/containers/panel/fesm2022/index.mjs.map +1 -1
  85. app-ng-runtime/components/containers/panel/panel.component.d.ts +1 -1
  86. app-ng-runtime/components/containers/tabs/bundles/index.umd.js +17 -17
  87. app-ng-runtime/components/containers/tabs/esm2022/tabs.component.mjs +15 -14
  88. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs +14 -13
  89. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs.map +1 -1
  90. app-ng-runtime/components/data/form/bundles/index.umd.js +75 -75
  91. app-ng-runtime/components/data/form/esm2022/form-action/form-action.directive.mjs +3 -2
  92. app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +10 -9
  93. app-ng-runtime/components/data/form/esm2022/form.component.mjs +54 -53
  94. app-ng-runtime/components/data/form/esm2022/live-filter/live-filter.directive.mjs +3 -2
  95. app-ng-runtime/components/data/form/esm2022/live-form/live-form.directive.mjs +11 -10
  96. app-ng-runtime/components/data/form/fesm2022/index.mjs +77 -76
  97. app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
  98. app-ng-runtime/components/data/form/form.component.d.ts +2 -2
  99. app-ng-runtime/components/data/form/live-form/live-form.directive.d.ts +1 -1
  100. app-ng-runtime/components/data/list/bundles/index.umd.js +692 -687
  101. app-ng-runtime/components/data/list/esm2022/list-item.directive.mjs +1 -1
  102. app-ng-runtime/components/data/list/esm2022/list.animator.mjs +5 -3
  103. app-ng-runtime/components/data/list/esm2022/list.component.mjs +687 -682
  104. app-ng-runtime/components/data/list/fesm2022/index.mjs +690 -684
  105. app-ng-runtime/components/data/list/fesm2022/index.mjs.map +1 -1
  106. app-ng-runtime/components/data/list/list.component.d.ts +53 -53
  107. app-ng-runtime/components/data/live-table/bundles/index.umd.js +1 -1
  108. app-ng-runtime/components/data/live-table/esm2022/live-table.component.mjs +2 -2
  109. app-ng-runtime/components/data/live-table/fesm2022/index.mjs +1 -1
  110. app-ng-runtime/components/data/live-table/fesm2022/index.mjs.map +1 -1
  111. app-ng-runtime/components/data/pagination/bundles/index.umd.js +14 -14
  112. app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +12 -11
  113. app-ng-runtime/components/data/pagination/fesm2022/index.mjs +11 -10
  114. app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +1 -1
  115. app-ng-runtime/components/data/table/bundles/index.umd.js +175 -172
  116. app-ng-runtime/components/data/table/esm2022/table-action/table-action.directive.mjs +3 -2
  117. app-ng-runtime/components/data/table/esm2022/table-column/table-column.directive.mjs +19 -18
  118. app-ng-runtime/components/data/table/esm2022/table-cud.directive.mjs +7 -6
  119. app-ng-runtime/components/data/table/esm2022/table-filter.directive.mjs +53 -55
  120. app-ng-runtime/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +3 -2
  121. app-ng-runtime/components/data/table/esm2022/table.component.mjs +98 -91
  122. app-ng-runtime/components/data/table/fesm2022/index.mjs +172 -168
  123. app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
  124. app-ng-runtime/components/data/table/table-column/table-column.directive.d.ts +6 -6
  125. app-ng-runtime/components/data/table/table.component.d.ts +2 -2
  126. app-ng-runtime/components/dialogs/default/bundles/index.umd.js +2 -2
  127. app-ng-runtime/components/dialogs/default/esm2022/base-dialog.mjs +3 -3
  128. app-ng-runtime/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +1 -1
  129. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +1 -1
  130. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  131. app-ng-runtime/components/input/calendar/bundles/index.umd.js +33 -31
  132. app-ng-runtime/components/input/calendar/esm2022/calendar.component.mjs +31 -28
  133. app-ng-runtime/components/input/calendar/fesm2022/index.mjs +30 -27
  134. app-ng-runtime/components/input/calendar/fesm2022/index.mjs.map +1 -1
  135. app-ng-runtime/components/input/chips/bundles/index.umd.js +29 -28
  136. app-ng-runtime/components/input/chips/chips.component.d.ts +1 -1
  137. app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +27 -25
  138. app-ng-runtime/components/input/chips/fesm2022/index.mjs +26 -24
  139. app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
  140. app-ng-runtime/components/input/default/base-form.component.d.ts +3 -3
  141. app-ng-runtime/components/input/default/bundles/index.umd.js +75 -62
  142. app-ng-runtime/components/input/default/checkbox/checkbox.component.d.ts +1 -0
  143. app-ng-runtime/components/input/default/dataset-aware-form.component.d.ts +4 -4
  144. app-ng-runtime/components/input/default/esm2022/base-form.component.mjs +14 -8
  145. app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +3 -2
  146. app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.component.mjs +2 -2
  147. app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +6 -4
  148. app-ng-runtime/components/input/default/esm2022/dataset-aware-form.component.mjs +29 -23
  149. app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +4 -3
  150. app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +4 -3
  151. app-ng-runtime/components/input/default/esm2022/switch/switch.component.mjs +6 -5
  152. app-ng-runtime/components/input/default/esm2022/text/base/base-input.mjs +4 -3
  153. app-ng-runtime/components/input/default/esm2022/text/locale/number-locale.mjs +20 -18
  154. app-ng-runtime/components/input/default/esm2022/text/text/input-text.component.mjs +2 -2
  155. app-ng-runtime/components/input/default/fesm2022/index.mjs +75 -62
  156. app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
  157. app-ng-runtime/components/input/epoch/base-date-time.component.d.ts +1 -1
  158. app-ng-runtime/components/input/epoch/bundles/index.umd.js +53 -51
  159. app-ng-runtime/components/input/epoch/esm2022/base-date-time.component.mjs +34 -31
  160. app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +5 -4
  161. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time-picker.component.mjs +5 -4
  162. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +7 -6
  163. app-ng-runtime/components/input/epoch/esm2022/picker/picker.component.mjs +1 -1
  164. app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +6 -5
  165. app-ng-runtime/components/input/epoch/fesm2022/index.mjs +48 -45
  166. app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
  167. app-ng-runtime/components/input/file-upload/bundles/index.umd.js +15 -15
  168. app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +13 -12
  169. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +12 -11
  170. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  171. app-ng-runtime/components/input/rating/bundles/index.umd.js +12 -12
  172. app-ng-runtime/components/input/rating/esm2022/rating.component.mjs +10 -9
  173. app-ng-runtime/components/input/rating/fesm2022/index.mjs +9 -8
  174. app-ng-runtime/components/input/rating/fesm2022/index.mjs.map +1 -1
  175. app-ng-runtime/components/navigation/breadcrumb/bundles/index.umd.js +1 -1
  176. app-ng-runtime/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +2 -2
  177. app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs +1 -1
  178. app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
  179. app-ng-runtime/components/navigation/menu/bundles/index.umd.js +23 -22
  180. app-ng-runtime/components/navigation/menu/esm2022/menu-adapator.component.mjs +3 -2
  181. app-ng-runtime/components/navigation/menu/esm2022/menu-dropdown-item/menu-dropdown-item.component.mjs +6 -5
  182. app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +8 -7
  183. app-ng-runtime/components/navigation/menu/esm2022/nav/nav.component.mjs +10 -8
  184. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +20 -18
  185. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  186. app-ng-runtime/components/navigation/menu/menu-dropdown-item/menu-dropdown-item.component.d.ts +12 -1
  187. app-ng-runtime/components/navigation/popover/esm2022/popover.component.mjs +1 -1
  188. app-ng-runtime/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  189. app-ng-runtime/components/prefab/bundles/index.umd.js +6 -6
  190. app-ng-runtime/components/prefab/esm2022/prefab-container/prefab-container.directive.mjs +3 -2
  191. app-ng-runtime/components/prefab/esm2022/prefab.directive.mjs +3 -2
  192. app-ng-runtime/components/prefab/fesm2022/index.mjs +3 -2
  193. app-ng-runtime/components/prefab/fesm2022/index.mjs.map +1 -1
  194. app-ng-runtime/core/bundles/index.umd.js +119 -130
  195. app-ng-runtime/core/esm2022/public_api.mjs +2 -2
  196. app-ng-runtime/core/esm2022/services/field-type.service.mjs +3 -2
  197. app-ng-runtime/core/esm2022/services/field-widget.service.mjs +3 -2
  198. app-ng-runtime/core/esm2022/services/pagination.service.mjs +7 -6
  199. app-ng-runtime/core/esm2022/services/state-persistence.service.mjs +17 -16
  200. app-ng-runtime/core/esm2022/services/utils.service.mjs +3 -2
  201. app-ng-runtime/core/esm2022/services/viewport.service.mjs +3 -2
  202. app-ng-runtime/core/esm2022/utils/build-utils.mjs +5 -4
  203. app-ng-runtime/core/esm2022/utils/expression-parser.mjs +5 -4
  204. app-ng-runtime/core/esm2022/utils/lru-cache.mjs +3 -2
  205. app-ng-runtime/core/esm2022/utils/utils.mjs +79 -82
  206. app-ng-runtime/core/esm2022/utils/watcher.mjs +9 -7
  207. app-ng-runtime/core/fesm2022/index.mjs +117 -123
  208. app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
  209. app-ng-runtime/core/public_api.d.ts +1 -1
  210. app-ng-runtime/core/services/pagination.service.d.ts +1 -1
  211. app-ng-runtime/core/utils/utils.d.ts +5 -9
  212. app-ng-runtime/http/bundles/index.umd.js +7 -7
  213. app-ng-runtime/http/esm2022/http.service.mjs +5 -4
  214. app-ng-runtime/http/esm2022/wm-http-request.mjs +1 -1
  215. app-ng-runtime/http/esm2022/wm-http-response.mjs +1 -1
  216. app-ng-runtime/http/fesm2022/index.mjs +4 -3
  217. app-ng-runtime/http/fesm2022/index.mjs.map +1 -1
  218. app-ng-runtime/mobile/components/basic/default/bundles/index.umd.js +24 -20
  219. app-ng-runtime/mobile/components/basic/default/esm2022/anchor/anchor.directive.mjs +5 -4
  220. app-ng-runtime/mobile/components/basic/default/esm2022/file-browser/file-browser.component.mjs +12 -8
  221. app-ng-runtime/mobile/components/basic/default/esm2022/file-browser/file-selector.service.mjs +5 -3
  222. app-ng-runtime/mobile/components/basic/default/esm2022/image-cache/image-cache.directive.mjs +3 -2
  223. app-ng-runtime/mobile/components/basic/default/esm2022/process-manager/process-manager.component.mjs +5 -4
  224. app-ng-runtime/mobile/components/basic/default/fesm2022/index.mjs +21 -16
  225. app-ng-runtime/mobile/components/basic/default/fesm2022/index.mjs.map +1 -1
  226. app-ng-runtime/mobile/components/containers/segmented-control/bundles/index.umd.js +7 -7
  227. app-ng-runtime/mobile/components/containers/segmented-control/esm2022/segment-content/segment-content.component.mjs +2 -2
  228. app-ng-runtime/mobile/components/containers/segmented-control/esm2022/segmented-control.component.mjs +4 -3
  229. app-ng-runtime/mobile/components/containers/segmented-control/fesm2022/index.mjs +4 -3
  230. app-ng-runtime/mobile/components/containers/segmented-control/fesm2022/index.mjs.map +1 -1
  231. app-ng-runtime/mobile/components/data/media-list/bundles/index.umd.js +8 -8
  232. app-ng-runtime/mobile/components/data/media-list/esm2022/media-list.component.mjs +4 -3
  233. app-ng-runtime/mobile/components/data/media-list/fesm2022/index.mjs +3 -2
  234. app-ng-runtime/mobile/components/data/media-list/fesm2022/index.mjs.map +1 -1
  235. app-ng-runtime/mobile/components/page/default/bundles/index.umd.js +5 -5
  236. app-ng-runtime/mobile/components/page/default/esm2022/page.directive.mjs +3 -2
  237. app-ng-runtime/mobile/components/page/default/fesm2022/index.mjs +2 -1
  238. app-ng-runtime/mobile/components/page/default/fesm2022/index.mjs.map +1 -1
  239. app-ng-runtime/mobile/components/page/tab-bar/bundles/index.umd.js +9 -9
  240. app-ng-runtime/mobile/components/page/tab-bar/esm2022/tabbar.component.mjs +7 -6
  241. app-ng-runtime/mobile/components/page/tab-bar/fesm2022/index.mjs +6 -5
  242. app-ng-runtime/mobile/components/page/tab-bar/fesm2022/index.mjs.map +1 -1
  243. app-ng-runtime/mobile/core/bundles/index.umd.js +25 -25
  244. app-ng-runtime/mobile/core/esm2022/services/device-file-download.service.mjs +5 -4
  245. app-ng-runtime/mobile/core/esm2022/services/device-file-opener.service.mjs +3 -2
  246. app-ng-runtime/mobile/core/esm2022/services/device-file-upload.service.mjs +4 -3
  247. app-ng-runtime/mobile/core/esm2022/services/device-file.service.mjs +6 -5
  248. app-ng-runtime/mobile/core/esm2022/services/device.service.mjs +3 -2
  249. app-ng-runtime/mobile/core/esm2022/services/ext-app-message.service.mjs +5 -4
  250. app-ng-runtime/mobile/core/esm2022/services/network.service.mjs +9 -8
  251. app-ng-runtime/mobile/core/fesm2022/index.mjs +22 -21
  252. app-ng-runtime/mobile/core/fesm2022/index.mjs.map +1 -1
  253. app-ng-runtime/mobile/core/services/ext-app-message.service.d.ts +1 -1
  254. app-ng-runtime/mobile/core/services/network.service.d.ts +7 -1
  255. app-ng-runtime/mobile/offline/bundles/index.umd.js +161 -144
  256. app-ng-runtime/mobile/offline/esm2022/models/local-db-store.mjs +23 -21
  257. app-ng-runtime/mobile/offline/esm2022/services/change-log.service.mjs +7 -6
  258. app-ng-runtime/mobile/offline/esm2022/services/local-db-data-pull.service.mjs +37 -35
  259. app-ng-runtime/mobile/offline/esm2022/services/local-db-management.service.mjs +54 -45
  260. app-ng-runtime/mobile/offline/esm2022/services/local-db.service.mjs +5 -4
  261. app-ng-runtime/mobile/offline/esm2022/services/workers/error-blocker.mjs +4 -3
  262. app-ng-runtime/mobile/offline/esm2022/services/workers/file-handler.mjs +18 -13
  263. app-ng-runtime/mobile/offline/esm2022/services/workers/multi-part-param-transformer.mjs +9 -5
  264. app-ng-runtime/mobile/offline/esm2022/utils/live-variable.utils.mjs +12 -11
  265. app-ng-runtime/mobile/offline/esm2022/utils/query-executor.utils.mjs +5 -4
  266. app-ng-runtime/mobile/offline/esm2022/utils/security.utils.mjs +3 -2
  267. app-ng-runtime/mobile/offline/fesm2022/index.mjs +156 -138
  268. app-ng-runtime/mobile/offline/fesm2022/index.mjs.map +1 -1
  269. app-ng-runtime/mobile/runtime/bundles/index.umd.js +11 -8
  270. app-ng-runtime/mobile/runtime/esm2022/mobile-runtime.module.mjs +3 -2
  271. app-ng-runtime/mobile/runtime/esm2022/services/cookie.service.mjs +6 -2
  272. app-ng-runtime/mobile/runtime/esm2022/services/http-interceptor.service.mjs +4 -3
  273. app-ng-runtime/mobile/runtime/fesm2022/index.mjs +8 -4
  274. app-ng-runtime/mobile/runtime/fesm2022/index.mjs.map +1 -1
  275. app-ng-runtime/mobile/runtime-dynamic/bundles/index.umd.js +2 -2
  276. app-ng-runtime/mobile/runtime-dynamic/esm2022/services/live-sync.service.mjs +3 -3
  277. app-ng-runtime/mobile/runtime-dynamic/fesm2022/index.mjs +2 -2
  278. app-ng-runtime/mobile/runtime-dynamic/fesm2022/index.mjs.map +1 -1
  279. app-ng-runtime/mobile/variables/bundles/index.umd.js +23 -16
  280. app-ng-runtime/mobile/variables/esm2022/services/camera-service.mjs +2 -2
  281. app-ng-runtime/mobile/variables/esm2022/services/datasync-service.mjs +10 -9
  282. app-ng-runtime/mobile/variables/esm2022/services/file-service.mjs +11 -3
  283. app-ng-runtime/mobile/variables/fesm2022/index.mjs +19 -11
  284. app-ng-runtime/mobile/variables/fesm2022/index.mjs.map +1 -1
  285. app-ng-runtime/oAuth/bundles/index.umd.js +12 -12
  286. app-ng-runtime/oAuth/esm2022/oAuth.service.mjs +4 -3
  287. app-ng-runtime/oAuth/esm2022/oAuth.utils.mjs +8 -7
  288. app-ng-runtime/oAuth/fesm2022/index.mjs +9 -8
  289. app-ng-runtime/oAuth/fesm2022/index.mjs.map +1 -1
  290. app-ng-runtime/package.json +1 -1
  291. app-ng-runtime/runtime/base/bundles/index.umd.js +121 -120
  292. app-ng-runtime/runtime/base/esm2022/components/base-layout.component.mjs +4 -3
  293. app-ng-runtime/runtime/base/esm2022/components/base-page.component.mjs +14 -13
  294. app-ng-runtime/runtime/base/esm2022/components/base-partial.component.mjs +13 -12
  295. app-ng-runtime/runtime/base/esm2022/components/base-prefab.component.mjs +15 -14
  296. app-ng-runtime/runtime/base/esm2022/components/base-spa-page.component.mjs +14 -13
  297. app-ng-runtime/runtime/base/esm2022/components/custom-toaster.component.mjs +6 -5
  298. app-ng-runtime/runtime/base/esm2022/directives/accessroles.directive.mjs +11 -10
  299. app-ng-runtime/runtime/base/esm2022/guards/page-not-found.guard.mjs +1 -1
  300. app-ng-runtime/runtime/base/esm2022/guards/role.guard.mjs +3 -2
  301. app-ng-runtime/runtime/base/esm2022/services/app-defaults.service.mjs +1 -1
  302. app-ng-runtime/runtime/base/esm2022/services/app.manager.service.mjs +17 -14
  303. app-ng-runtime/runtime/base/esm2022/services/app.service.mjs +7 -6
  304. app-ng-runtime/runtime/base/esm2022/services/dynamic-component-ref-provider.service.mjs +3 -2
  305. app-ng-runtime/runtime/base/esm2022/services/http-interceptor.services.mjs +4 -3
  306. app-ng-runtime/runtime/base/esm2022/services/i18n.service.mjs +12 -10
  307. app-ng-runtime/runtime/base/esm2022/services/navigation.service.mjs +8 -7
  308. app-ng-runtime/runtime/base/esm2022/services/prefab-manager.service.mjs +3 -2
  309. app-ng-runtime/runtime/base/esm2022/services/spinner.service.mjs +7 -6
  310. app-ng-runtime/runtime/base/esm2022/services/toaster.service.mjs +6 -5
  311. app-ng-runtime/runtime/base/esm2022/util/wm-route-reuse-strategy.mjs +6 -7
  312. app-ng-runtime/runtime/base/fesm2022/index.mjs +119 -117
  313. app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
  314. app-ng-runtime/runtime/base/services/i18n.service.d.ts +1 -1
  315. app-ng-runtime/runtime/dynamic/bundles/index.umd.js +7 -7
  316. app-ng-runtime/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +4 -3
  317. app-ng-runtime/runtime/dynamic/esm2022/main.mjs +3 -2
  318. app-ng-runtime/runtime/dynamic/fesm2022/index.mjs +4 -3
  319. app-ng-runtime/runtime/dynamic/fesm2022/index.mjs.map +1 -1
  320. app-ng-runtime/scripts/jquery-ui/ui/widgets/droppable.js +7 -7
  321. app-ng-runtime/scripts/jquery-ui/ui/widgets/resizable.js +13 -10
  322. app-ng-runtime/scripts/jquery-ui/ui/widgets/sortable.js +7 -7
  323. app-ng-runtime/security/bundles/index.umd.js +14 -14
  324. app-ng-runtime/security/esm2022/security.service.mjs +12 -11
  325. app-ng-runtime/security/fesm2022/index.mjs +11 -10
  326. app-ng-runtime/security/fesm2022/index.mjs.map +1 -1
  327. app-ng-runtime/security/security.service.d.ts +1 -1
  328. app-ng-runtime/swipey/esm2022/swipe.animation.mjs +1 -1
  329. app-ng-runtime/swipey/fesm2022/index.mjs.map +1 -1
  330. app-ng-runtime/transpiler/bundles/index.umd.js +10 -9
  331. app-ng-runtime/transpiler/esm2022/build.mjs +8 -6
  332. app-ng-runtime/transpiler/fesm2022/index.mjs +7 -5
  333. app-ng-runtime/transpiler/fesm2022/index.mjs.map +1 -1
  334. app-ng-runtime/variables/bundles/index.umd.js +155 -145
  335. app-ng-runtime/variables/esm2022/manager/action/login-action.manager.mjs +15 -14
  336. app-ng-runtime/variables/esm2022/manager/action/notification-action.manager.mjs +9 -8
  337. app-ng-runtime/variables/esm2022/manager/variable/base-variable.manager.mjs +3 -2
  338. app-ng-runtime/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +11 -10
  339. app-ng-runtime/variables/esm2022/service/variables.service.mjs +7 -6
  340. app-ng-runtime/variables/esm2022/util/action/navigation-action.utils.mjs +4 -4
  341. app-ng-runtime/variables/esm2022/util/variable/pagination.utils.mjs +30 -23
  342. app-ng-runtime/variables/esm2022/util/variable/service-variable.utils.mjs +29 -28
  343. app-ng-runtime/variables/esm2022/util/variable/variables.utils.mjs +75 -70
  344. app-ng-runtime/variables/fesm2022/index.mjs +169 -158
  345. app-ng-runtime/variables/fesm2022/index.mjs.map +1 -1
  346. app-ng-runtime/variables/util/variable/service-variable.utils.d.ts +1 -1
@@ -7,7 +7,7 @@ export { appendNode, insertBefore, insertAfter, removeNode, removeClass, addClas
7
7
  export * from './enums/enums';
8
8
  export * from './utils/event-notifier';
9
9
  export { $parseExpr, $parseEvent, registerFnByExpr, setPipeProvider, getFnByExpr, getFnForBindExpr, getFnForEventExpr } from './utils/expression-parser';
10
- export { isDefined, isObject, toBoolean, isIE, isAndroid, isAndroidTablet, isIphone, isIpod, isIpad, isIos, isLargeTabletLandscape, isLargeTabletPortrait, isMobile, isMobileApp, getAndroidVersion, isKitkatDevice, encodeUrl, encodeUrlParams, initCaps, spaceSeparate, replaceAt, periodSeparate, prettifyLabel, deHyphenate, prettifyLabels, isInsecureContentRequest, stringStartsWith, getEvaluatedExprValue, isImageFile, isAudioFile, isVideoFile, isValidWebURL, getResourceURL, triggerFn, hasOffsetStr, getFormattedDate, getDateObj, addEventListenerOnElement, getClonedObject, getFiles, generateGUId, validateAccessRoles, getValidJSON, xmlToJson, findValueOf, extractType, isNumberType, isEmptyObject, scrollToElement, isElementInViewport, isPageable, replace, isDateTimeType, getValidDateObject, getNativeDateObject, getBlob, isEqualWithFields, loadStyleSheet, loadStyleSheets, loadScript, loadScripts, _WM_APP_PROJECT, setSessionStorageItem, getSessionStorageItem, noop, isArray, isString, isNumber, isBoolean, convertToBlob, hasCordova, AppConstants, openLink, fetchContent, toPromise, retryIfFails, getAbortableDefer, createCSSRule, getUrlParams, getMomentLocaleObject, getRouteNameFromLink, isAppleProduct, defer, executePromiseChain, isDataSourceEqual, validateDataSourceCtx, processFilterExpBindNode, extendProto, removeExtraSlashes, getDisplayDateTimeFormat, addForIdAttributes, adjustContainerPosition, adjustContainerRightEdges, setTranslation3dPosition, getWebkitTraslationMatrix, closePopover, detectChanges, triggerItemAction, getDatasourceFromExpr, extractCurrentItemExpr, findRootContainer, VALIDATOR, transformFileURI, appendScriptToHead, getAppSetting, setListClass, findParent } from './utils/utils';
10
+ export { isDefined, isObject, toBoolean, isIE, isAndroid, isAndroidTablet, isIphone, isIpod, isIpad, isIos, isLargeTabletLandscape, isLargeTabletPortrait, isMobile, isMobileApp, getAndroidVersion, isKitkatDevice, encodeUrl, encodeUrlParams, initCaps, spaceSeparate, replaceAt, periodSeparate, prettifyLabel, deHyphenate, prettifyLabels, isInsecureContentRequest, stringStartsWith, getEvaluatedExprValue, isImageFile, isAudioFile, isVideoFile, isValidWebURL, getResourceURL, triggerFn, hasOffsetStr, getFormattedDate, getDateObj, addEventListenerOnElement, getClonedObject, getFiles, generateGUId, validateAccessRoles, getValidJSON, xmlToJson, findValueOf, extractType, isNumberType, isEmptyObject, scrollToElement, isElementInViewport, isPageable, replace, isDateTimeType, getValidDateObject, getNativeDateObject, getBlob, isEqualWithFields, loadStyleSheet, loadStyleSheets, loadScript, loadScripts, _WM_APP_PROJECT, setSessionStorageItem, getSessionStorageItem, noop, convertToBlob, hasCordova, AppConstants, openLink, fetchContent, toPromise, retryIfFails, getAbortableDefer, createCSSRule, getUrlParams, getMomentLocaleObject, getRouteNameFromLink, isAppleProduct, defer, executePromiseChain, isDataSourceEqual, validateDataSourceCtx, processFilterExpBindNode, extendProto, removeExtraSlashes, getDisplayDateTimeFormat, addForIdAttributes, adjustContainerPosition, adjustContainerRightEdges, setTranslation3dPosition, getWebkitTraslationMatrix, closePopover, detectChanges, triggerItemAction, getDatasourceFromExpr, extractCurrentItemExpr, findRootContainer, VALIDATOR, transformFileURI, appendScriptToHead, getAppSetting, setListClass, findParent } from './utils/utils';
11
11
  export { FIRST_TIME_WATCH, isFirstTimeChange, debounce, muteWatchers, unMuteWatchers, $watch, $unwatch, setNgZone, setAppRef, isChangeFromWatch, resetChangeFromWatch, $invokeWatchers, $appDigest } from './utils/watcher';
12
12
  export * from './utils/id-generator';
13
13
  export * from './types/types';
@@ -23,4 +23,4 @@ export { PaginationService } from './services/pagination.service';
23
23
  export * from './core.module';
24
24
  export * from './utils/wm-project-properties';
25
25
  export * from './utils/lru-cache';
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsT0FBTyxFQUNILFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFVBQVUsRUFDVixXQUFXLEVBQ1gsUUFBUSxFQUNSLFdBQVcsRUFDWCxXQUFXLEVBQ1gsTUFBTSxFQUNOLGFBQWEsRUFDYixXQUFXLEVBQ1gsT0FBTyxFQUNQLE9BQU8sRUFDUCxVQUFVLEVBQ1YsYUFBYSxFQUNiLFdBQVcsRUFDZCxNQUFNLGFBQWEsQ0FBQztBQUNyQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLE9BQU8sRUFFSCxVQUFVLEVBQ1YsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBRUgsU0FBUyxFQUNULFFBQVEsRUFDUixTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsRUFDVCxlQUFlLEVBQ2YsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIsUUFBUSxFQUNSLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsY0FBYyxFQUNkLFNBQVMsRUFDVCxlQUFlLEVBQ2YsUUFBUSxFQUNSLGFBQWEsRUFDYixTQUFTLEVBQ1QsY0FBYyxFQUNkLGFBQWEsRUFDYixXQUFXLEVBQ1gsY0FBYyxFQUNkLHdCQUF3QixFQUN4QixnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLFdBQVcsRUFDWCxXQUFXLEVBQ1gsV0FBVyxFQUNYLGFBQWEsRUFDYixjQUFjLEVBQ2QsU0FBUyxFQUNULFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNWLHlCQUF5QixFQUN6QixlQUFlLEVBQ2YsUUFBUSxFQUNSLFlBQVksRUFDWixtQkFBbUIsRUFDbkIsWUFBWSxFQUNaLFNBQVMsRUFDVCxXQUFXLEVBQ1gsV0FBVyxFQUNYLFlBQVksRUFDWixhQUFhLEVBQ2IsZUFBZSxFQUNmLG1CQUFtQixFQUNuQixVQUFVLEVBQ1YsT0FBTyxFQUNQLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLE9BQU8sRUFDUCxpQkFBaUIsRUFDakIsY0FBYyxFQUNkLGVBQWUsRUFDZixVQUFVLEVBQ1YsV0FBVyxFQUNYLGVBQWUsRUFDZixxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3JCLElBQUksRUFDSixPQUFPLEVBQ1AsUUFBUSxFQUNSLFFBQVEsRUFDUixTQUFTLEVBQ1QsYUFBYSxFQUNiLFVBQVUsRUFDVixZQUFZLEVBQ1osUUFBUSxFQUNSLFlBQVksRUFDWixTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsWUFBWSxFQUNaLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsY0FBYyxFQUNkLEtBQUssRUFDTCxtQkFBbUIsRUFDbkIsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsV0FBVyxFQUNYLGtCQUFrQixFQUNsQix3QkFBd0IsRUFDeEIsa0JBQWtCLEVBQ2xCLHVCQUF1QixFQUN2Qix5QkFBeUIsRUFDekIsd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6QixZQUFZLEVBQ1osYUFBYSxFQUNiLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixhQUFhLEVBQ2IsWUFBWSxFQUNaLFVBQVUsRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsWUFBWSxFQUNaLGNBQWMsRUFDZCxNQUFNLEVBQ04sUUFBUSxFQUNSLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUNwQixlQUFlLEVBQ2YsVUFBVSxFQUNiLE1BQU0saUJBQWlCLENBQUM7QUFDekIsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixPQUFPLEVBQUUsUUFBUSxFQUFpQixNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgY29yZVxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvYnVpbGQtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdGFudHMvY3VycmVuY3ktY29uc3RhbnRzJztcbmV4cG9ydCB7XG4gICAgYXBwZW5kTm9kZSxcbiAgICBpbnNlcnRCZWZvcmUsXG4gICAgaW5zZXJ0QWZ0ZXIsXG4gICAgcmVtb3ZlTm9kZSxcbiAgICByZW1vdmVDbGFzcyxcbiAgICBhZGRDbGFzcyxcbiAgICBzd2l0Y2hDbGFzcyxcbiAgICB0b2dnbGVDbGFzcyxcbiAgICBzZXRDU1MsXG4gICAgc2V0Q1NTRnJvbU9iaixcbiAgICBzZXRQcm9wZXJ0eSxcbiAgICBzZXRBdHRyLFxuICAgIHNldEh0bWwsXG4gICAgcmVtb3ZlQXR0cixcbiAgICBjcmVhdGVFbGVtZW50LFxuICAgIHRvRGltZW5zaW9uXG59IGZyb20gJy4vdXRpbHMvZG9tJztcbmV4cG9ydCAqIGZyb20gJy4vZW51bXMvZW51bXMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9ldmVudC1ub3RpZmllcic7XG5leHBvcnQge1xuICAgIFBhcnNlRXhwclJlc3VsdCxcbiAgICAkcGFyc2VFeHByLFxuICAgICRwYXJzZUV2ZW50LFxuICAgIHJlZ2lzdGVyRm5CeUV4cHIsXG4gICAgc2V0UGlwZVByb3ZpZGVyLFxuICAgIGdldEZuQnlFeHByLFxuICAgIGdldEZuRm9yQmluZEV4cHIsXG4gICAgZ2V0Rm5Gb3JFdmVudEV4cHJcbn0gZnJvbSAnLi91dGlscy9leHByZXNzaW9uLXBhcnNlcic7XG5leHBvcnQge1xuICAgIEVWRU5UX0xJRkUsXG4gICAgaXNEZWZpbmVkLFxuICAgIGlzT2JqZWN0LFxuICAgIHRvQm9vbGVhbixcbiAgICBpc0lFLFxuICAgIGlzQW5kcm9pZCxcbiAgICBpc0FuZHJvaWRUYWJsZXQsXG4gICAgaXNJcGhvbmUsXG4gICAgaXNJcG9kLFxuICAgIGlzSXBhZCxcbiAgICBpc0lvcyxcbiAgICBpc0xhcmdlVGFibGV0TGFuZHNjYXBlLFxuICAgIGlzTGFyZ2VUYWJsZXRQb3J0cmFpdCxcbiAgICBpc01vYmlsZSxcbiAgICBpc01vYmlsZUFwcCxcbiAgICBnZXRBbmRyb2lkVmVyc2lvbixcbiAgICBpc0tpdGthdERldmljZSxcbiAgICBlbmNvZGVVcmwsXG4gICAgZW5jb2RlVXJsUGFyYW1zLFxuICAgIGluaXRDYXBzLFxuICAgIHNwYWNlU2VwYXJhdGUsXG4gICAgcmVwbGFjZUF0LFxuICAgIHBlcmlvZFNlcGFyYXRlLFxuICAgIHByZXR0aWZ5TGFiZWwsXG4gICAgZGVIeXBoZW5hdGUsXG4gICAgcHJldHRpZnlMYWJlbHMsXG4gICAgaXNJbnNlY3VyZUNvbnRlbnRSZXF1ZXN0LFxuICAgIHN0cmluZ1N0YXJ0c1dpdGgsXG4gICAgZ2V0RXZhbHVhdGVkRXhwclZhbHVlLFxuICAgIGlzSW1hZ2VGaWxlLFxuICAgIGlzQXVkaW9GaWxlLFxuICAgIGlzVmlkZW9GaWxlLFxuICAgIGlzVmFsaWRXZWJVUkwsXG4gICAgZ2V0UmVzb3VyY2VVUkwsXG4gICAgdHJpZ2dlckZuLFxuICAgIGhhc09mZnNldFN0cixcbiAgICBnZXRGb3JtYXR0ZWREYXRlLFxuICAgIGdldERhdGVPYmosXG4gICAgYWRkRXZlbnRMaXN0ZW5lck9uRWxlbWVudCxcbiAgICBnZXRDbG9uZWRPYmplY3QsXG4gICAgZ2V0RmlsZXMsXG4gICAgZ2VuZXJhdGVHVUlkLFxuICAgIHZhbGlkYXRlQWNjZXNzUm9sZXMsXG4gICAgZ2V0VmFsaWRKU09OLFxuICAgIHhtbFRvSnNvbixcbiAgICBmaW5kVmFsdWVPZixcbiAgICBleHRyYWN0VHlwZSxcbiAgICBpc051bWJlclR5cGUsXG4gICAgaXNFbXB0eU9iamVjdCxcbiAgICBzY3JvbGxUb0VsZW1lbnQsXG4gICAgaXNFbGVtZW50SW5WaWV3cG9ydCxcbiAgICBpc1BhZ2VhYmxlLFxuICAgIHJlcGxhY2UsXG4gICAgaXNEYXRlVGltZVR5cGUsXG4gICAgZ2V0VmFsaWREYXRlT2JqZWN0LFxuICAgIGdldE5hdGl2ZURhdGVPYmplY3QsXG4gICAgZ2V0QmxvYixcbiAgICBpc0VxdWFsV2l0aEZpZWxkcyxcbiAgICBsb2FkU3R5bGVTaGVldCxcbiAgICBsb2FkU3R5bGVTaGVldHMsXG4gICAgbG9hZFNjcmlwdCxcbiAgICBsb2FkU2NyaXB0cyxcbiAgICBfV01fQVBQX1BST0pFQ1QsXG4gICAgc2V0U2Vzc2lvblN0b3JhZ2VJdGVtLFxuICAgIGdldFNlc3Npb25TdG9yYWdlSXRlbSxcbiAgICBub29wLFxuICAgIGlzQXJyYXksXG4gICAgaXNTdHJpbmcsXG4gICAgaXNOdW1iZXIsXG4gICAgaXNCb29sZWFuLFxuICAgIGNvbnZlcnRUb0Jsb2IsXG4gICAgaGFzQ29yZG92YSxcbiAgICBBcHBDb25zdGFudHMsXG4gICAgb3BlbkxpbmssXG4gICAgZmV0Y2hDb250ZW50LFxuICAgIHRvUHJvbWlzZSxcbiAgICByZXRyeUlmRmFpbHMsXG4gICAgZ2V0QWJvcnRhYmxlRGVmZXIsXG4gICAgY3JlYXRlQ1NTUnVsZSxcbiAgICBnZXRVcmxQYXJhbXMsXG4gICAgZ2V0TW9tZW50TG9jYWxlT2JqZWN0LFxuICAgIGdldFJvdXRlTmFtZUZyb21MaW5rLFxuICAgIGlzQXBwbGVQcm9kdWN0LFxuICAgIGRlZmVyLFxuICAgIGV4ZWN1dGVQcm9taXNlQ2hhaW4sXG4gICAgaXNEYXRhU291cmNlRXF1YWwsXG4gICAgdmFsaWRhdGVEYXRhU291cmNlQ3R4LFxuICAgIHByb2Nlc3NGaWx0ZXJFeHBCaW5kTm9kZSxcbiAgICBleHRlbmRQcm90byxcbiAgICByZW1vdmVFeHRyYVNsYXNoZXMsXG4gICAgZ2V0RGlzcGxheURhdGVUaW1lRm9ybWF0LFxuICAgIGFkZEZvcklkQXR0cmlidXRlcyxcbiAgICBhZGp1c3RDb250YWluZXJQb3NpdGlvbixcbiAgICBhZGp1c3RDb250YWluZXJSaWdodEVkZ2VzLFxuICAgIHNldFRyYW5zbGF0aW9uM2RQb3NpdGlvbixcbiAgICBnZXRXZWJraXRUcmFzbGF0aW9uTWF0cml4LFxuICAgIGNsb3NlUG9wb3ZlcixcbiAgICBkZXRlY3RDaGFuZ2VzLFxuICAgIHRyaWdnZXJJdGVtQWN0aW9uLFxuICAgIGdldERhdGFzb3VyY2VGcm9tRXhwcixcbiAgICBleHRyYWN0Q3VycmVudEl0ZW1FeHByLFxuICAgIGZpbmRSb290Q29udGFpbmVyLFxuICAgIFZBTElEQVRPUixcbiAgICB0cmFuc2Zvcm1GaWxlVVJJLFxuICAgIGFwcGVuZFNjcmlwdFRvSGVhZCxcbiAgICBnZXRBcHBTZXR0aW5nLFxuICAgIHNldExpc3RDbGFzcyxcbiAgICBmaW5kUGFyZW50XG59IGZyb20gJy4vdXRpbHMvdXRpbHMnO1xuZXhwb3J0IHtcbiAgICBGSVJTVF9USU1FX1dBVENILFxuICAgIGlzRmlyc3RUaW1lQ2hhbmdlLFxuICAgIGRlYm91bmNlLFxuICAgIG11dGVXYXRjaGVycyxcbiAgICB1bk11dGVXYXRjaGVycyxcbiAgICAkd2F0Y2gsXG4gICAgJHVud2F0Y2gsXG4gICAgc2V0Tmdab25lLFxuICAgIHNldEFwcFJlZixcbiAgICBpc0NoYW5nZUZyb21XYXRjaCxcbiAgICByZXNldENoYW5nZUZyb21XYXRjaCxcbiAgICAkaW52b2tlV2F0Y2hlcnMsXG4gICAgJGFwcERpZ2VzdFxufSBmcm9tICcuL3V0aWxzL3dhdGNoZXInO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9pZC1nZW5lcmF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcy90eXBlcyc7XG5leHBvcnQgeyBWaWV3cG9ydCwgVmlld3BvcnRFdmVudCB9IGZyb20gJy4vc2VydmljZXMvdmlld3BvcnQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2NvbnN0YW50LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy91dGlscy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvZmllbGQtdHlwZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvZmllbGQtd2lkZ2V0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9zY3JpcHQtbG9hZGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy91c2VyLWN1c3RvbS1waXBlLW1hbmFnZXIuc2VydmljZSc7XG5leHBvcnQgeyBTdGF0ZVBlcnNpc3RlbmNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9zdGF0ZS1wZXJzaXN0ZW5jZS5zZXJ2aWNlJztcbmV4cG9ydCB7IFBhZ2luYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wYWdpbmF0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jb3JlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL3dtLXByb2plY3QtcHJvcGVydGllcyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2xydS1jYWNoZSc7XG4iXX0=
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsT0FBTyxFQUNILFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFVBQVUsRUFDVixXQUFXLEVBQ1gsUUFBUSxFQUNSLFdBQVcsRUFDWCxXQUFXLEVBQ1gsTUFBTSxFQUNOLGFBQWEsRUFDYixXQUFXLEVBQ1gsT0FBTyxFQUNQLE9BQU8sRUFDUCxVQUFVLEVBQ1YsYUFBYSxFQUNiLFdBQVcsRUFDZCxNQUFNLGFBQWEsQ0FBQztBQUNyQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLE9BQU8sRUFFSCxVQUFVLEVBQ1YsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBRUgsU0FBUyxFQUNULFFBQVEsRUFDUixTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsRUFDVCxlQUFlLEVBQ2YsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIsUUFBUSxFQUNSLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsY0FBYyxFQUNkLFNBQVMsRUFDVCxlQUFlLEVBQ2YsUUFBUSxFQUNSLGFBQWEsRUFDYixTQUFTLEVBQ1QsY0FBYyxFQUNkLGFBQWEsRUFDYixXQUFXLEVBQ1gsY0FBYyxFQUNkLHdCQUF3QixFQUN4QixnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLFdBQVcsRUFDWCxXQUFXLEVBQ1gsV0FBVyxFQUNYLGFBQWEsRUFDYixjQUFjLEVBQ2QsU0FBUyxFQUNULFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNWLHlCQUF5QixFQUN6QixlQUFlLEVBQ2YsUUFBUSxFQUNSLFlBQVksRUFDWixtQkFBbUIsRUFDbkIsWUFBWSxFQUNaLFNBQVMsRUFDVCxXQUFXLEVBQ1gsV0FBVyxFQUNYLFlBQVksRUFDWixhQUFhLEVBQ2IsZUFBZSxFQUNmLG1CQUFtQixFQUNuQixVQUFVLEVBQ1YsT0FBTyxFQUNQLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLE9BQU8sRUFDUCxpQkFBaUIsRUFDakIsY0FBYyxFQUNkLGVBQWUsRUFDZixVQUFVLEVBQ1YsV0FBVyxFQUNYLGVBQWUsRUFDZixxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3JCLElBQUksRUFDSixhQUFhLEVBQ2IsVUFBVSxFQUNWLFlBQVksRUFDWixRQUFRLEVBQ1IsWUFBWSxFQUNaLFNBQVMsRUFDVCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLGFBQWEsRUFDYixZQUFZLEVBQ1oscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixjQUFjLEVBQ2QsS0FBSyxFQUNMLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIscUJBQXFCLEVBQ3JCLHdCQUF3QixFQUN4QixXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUN4QixrQkFBa0IsRUFDbEIsdUJBQXVCLEVBQ3ZCLHlCQUF5QixFQUN6Qix3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLFlBQVksRUFDWixhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixZQUFZLEVBQ1osVUFBVSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixZQUFZLEVBQ1osY0FBYyxFQUNkLE1BQU0sRUFDTixRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLGVBQWUsRUFDZixVQUFVLEVBQ2IsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxRQUFRLEVBQWlCLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBjb3JlXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi91dGlscy9idWlsZC11dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0YW50cy9jdXJyZW5jeS1jb25zdGFudHMnO1xuZXhwb3J0IHtcbiAgICBhcHBlbmROb2RlLFxuICAgIGluc2VydEJlZm9yZSxcbiAgICBpbnNlcnRBZnRlcixcbiAgICByZW1vdmVOb2RlLFxuICAgIHJlbW92ZUNsYXNzLFxuICAgIGFkZENsYXNzLFxuICAgIHN3aXRjaENsYXNzLFxuICAgIHRvZ2dsZUNsYXNzLFxuICAgIHNldENTUyxcbiAgICBzZXRDU1NGcm9tT2JqLFxuICAgIHNldFByb3BlcnR5LFxuICAgIHNldEF0dHIsXG4gICAgc2V0SHRtbCxcbiAgICByZW1vdmVBdHRyLFxuICAgIGNyZWF0ZUVsZW1lbnQsXG4gICAgdG9EaW1lbnNpb25cbn0gZnJvbSAnLi91dGlscy9kb20nO1xuZXhwb3J0ICogZnJvbSAnLi9lbnVtcy9lbnVtcyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2V2ZW50LW5vdGlmaWVyJztcbmV4cG9ydCB7XG4gICAgUGFyc2VFeHByUmVzdWx0LFxuICAgICRwYXJzZUV4cHIsXG4gICAgJHBhcnNlRXZlbnQsXG4gICAgcmVnaXN0ZXJGbkJ5RXhwcixcbiAgICBzZXRQaXBlUHJvdmlkZXIsXG4gICAgZ2V0Rm5CeUV4cHIsXG4gICAgZ2V0Rm5Gb3JCaW5kRXhwcixcbiAgICBnZXRGbkZvckV2ZW50RXhwclxufSBmcm9tICcuL3V0aWxzL2V4cHJlc3Npb24tcGFyc2VyJztcbmV4cG9ydCB7XG4gICAgRVZFTlRfTElGRSxcbiAgICBpc0RlZmluZWQsXG4gICAgaXNPYmplY3QsXG4gICAgdG9Cb29sZWFuLFxuICAgIGlzSUUsXG4gICAgaXNBbmRyb2lkLFxuICAgIGlzQW5kcm9pZFRhYmxldCxcbiAgICBpc0lwaG9uZSxcbiAgICBpc0lwb2QsXG4gICAgaXNJcGFkLFxuICAgIGlzSW9zLFxuICAgIGlzTGFyZ2VUYWJsZXRMYW5kc2NhcGUsXG4gICAgaXNMYXJnZVRhYmxldFBvcnRyYWl0LFxuICAgIGlzTW9iaWxlLFxuICAgIGlzTW9iaWxlQXBwLFxuICAgIGdldEFuZHJvaWRWZXJzaW9uLFxuICAgIGlzS2l0a2F0RGV2aWNlLFxuICAgIGVuY29kZVVybCxcbiAgICBlbmNvZGVVcmxQYXJhbXMsXG4gICAgaW5pdENhcHMsXG4gICAgc3BhY2VTZXBhcmF0ZSxcbiAgICByZXBsYWNlQXQsXG4gICAgcGVyaW9kU2VwYXJhdGUsXG4gICAgcHJldHRpZnlMYWJlbCxcbiAgICBkZUh5cGhlbmF0ZSxcbiAgICBwcmV0dGlmeUxhYmVscyxcbiAgICBpc0luc2VjdXJlQ29udGVudFJlcXVlc3QsXG4gICAgc3RyaW5nU3RhcnRzV2l0aCxcbiAgICBnZXRFdmFsdWF0ZWRFeHByVmFsdWUsXG4gICAgaXNJbWFnZUZpbGUsXG4gICAgaXNBdWRpb0ZpbGUsXG4gICAgaXNWaWRlb0ZpbGUsXG4gICAgaXNWYWxpZFdlYlVSTCxcbiAgICBnZXRSZXNvdXJjZVVSTCxcbiAgICB0cmlnZ2VyRm4sXG4gICAgaGFzT2Zmc2V0U3RyLFxuICAgIGdldEZvcm1hdHRlZERhdGUsXG4gICAgZ2V0RGF0ZU9iaixcbiAgICBhZGRFdmVudExpc3RlbmVyT25FbGVtZW50LFxuICAgIGdldENsb25lZE9iamVjdCxcbiAgICBnZXRGaWxlcyxcbiAgICBnZW5lcmF0ZUdVSWQsXG4gICAgdmFsaWRhdGVBY2Nlc3NSb2xlcyxcbiAgICBnZXRWYWxpZEpTT04sXG4gICAgeG1sVG9Kc29uLFxuICAgIGZpbmRWYWx1ZU9mLFxuICAgIGV4dHJhY3RUeXBlLFxuICAgIGlzTnVtYmVyVHlwZSxcbiAgICBpc0VtcHR5T2JqZWN0LFxuICAgIHNjcm9sbFRvRWxlbWVudCxcbiAgICBpc0VsZW1lbnRJblZpZXdwb3J0LFxuICAgIGlzUGFnZWFibGUsXG4gICAgcmVwbGFjZSxcbiAgICBpc0RhdGVUaW1lVHlwZSxcbiAgICBnZXRWYWxpZERhdGVPYmplY3QsXG4gICAgZ2V0TmF0aXZlRGF0ZU9iamVjdCxcbiAgICBnZXRCbG9iLFxuICAgIGlzRXF1YWxXaXRoRmllbGRzLFxuICAgIGxvYWRTdHlsZVNoZWV0LFxuICAgIGxvYWRTdHlsZVNoZWV0cyxcbiAgICBsb2FkU2NyaXB0LFxuICAgIGxvYWRTY3JpcHRzLFxuICAgIF9XTV9BUFBfUFJPSkVDVCxcbiAgICBzZXRTZXNzaW9uU3RvcmFnZUl0ZW0sXG4gICAgZ2V0U2Vzc2lvblN0b3JhZ2VJdGVtLFxuICAgIG5vb3AsXG4gICAgY29udmVydFRvQmxvYixcbiAgICBoYXNDb3Jkb3ZhLFxuICAgIEFwcENvbnN0YW50cyxcbiAgICBvcGVuTGluayxcbiAgICBmZXRjaENvbnRlbnQsXG4gICAgdG9Qcm9taXNlLFxuICAgIHJldHJ5SWZGYWlscyxcbiAgICBnZXRBYm9ydGFibGVEZWZlcixcbiAgICBjcmVhdGVDU1NSdWxlLFxuICAgIGdldFVybFBhcmFtcyxcbiAgICBnZXRNb21lbnRMb2NhbGVPYmplY3QsXG4gICAgZ2V0Um91dGVOYW1lRnJvbUxpbmssXG4gICAgaXNBcHBsZVByb2R1Y3QsXG4gICAgZGVmZXIsXG4gICAgZXhlY3V0ZVByb21pc2VDaGFpbixcbiAgICBpc0RhdGFTb3VyY2VFcXVhbCxcbiAgICB2YWxpZGF0ZURhdGFTb3VyY2VDdHgsXG4gICAgcHJvY2Vzc0ZpbHRlckV4cEJpbmROb2RlLFxuICAgIGV4dGVuZFByb3RvLFxuICAgIHJlbW92ZUV4dHJhU2xhc2hlcyxcbiAgICBnZXREaXNwbGF5RGF0ZVRpbWVGb3JtYXQsXG4gICAgYWRkRm9ySWRBdHRyaWJ1dGVzLFxuICAgIGFkanVzdENvbnRhaW5lclBvc2l0aW9uLFxuICAgIGFkanVzdENvbnRhaW5lclJpZ2h0RWRnZXMsXG4gICAgc2V0VHJhbnNsYXRpb24zZFBvc2l0aW9uLFxuICAgIGdldFdlYmtpdFRyYXNsYXRpb25NYXRyaXgsXG4gICAgY2xvc2VQb3BvdmVyLFxuICAgIGRldGVjdENoYW5nZXMsXG4gICAgdHJpZ2dlckl0ZW1BY3Rpb24sXG4gICAgZ2V0RGF0YXNvdXJjZUZyb21FeHByLFxuICAgIGV4dHJhY3RDdXJyZW50SXRlbUV4cHIsXG4gICAgZmluZFJvb3RDb250YWluZXIsXG4gICAgVkFMSURBVE9SLFxuICAgIHRyYW5zZm9ybUZpbGVVUkksXG4gICAgYXBwZW5kU2NyaXB0VG9IZWFkLFxuICAgIGdldEFwcFNldHRpbmcsXG4gICAgc2V0TGlzdENsYXNzLFxuICAgIGZpbmRQYXJlbnRcbn0gZnJvbSAnLi91dGlscy91dGlscyc7XG5leHBvcnQge1xuICAgIEZJUlNUX1RJTUVfV0FUQ0gsXG4gICAgaXNGaXJzdFRpbWVDaGFuZ2UsXG4gICAgZGVib3VuY2UsXG4gICAgbXV0ZVdhdGNoZXJzLFxuICAgIHVuTXV0ZVdhdGNoZXJzLFxuICAgICR3YXRjaCxcbiAgICAkdW53YXRjaCxcbiAgICBzZXROZ1pvbmUsXG4gICAgc2V0QXBwUmVmLFxuICAgIGlzQ2hhbmdlRnJvbVdhdGNoLFxuICAgIHJlc2V0Q2hhbmdlRnJvbVdhdGNoLFxuICAgICRpbnZva2VXYXRjaGVycyxcbiAgICAkYXBwRGlnZXN0XG59IGZyb20gJy4vdXRpbHMvd2F0Y2hlcic7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2lkLWdlbmVyYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzL3R5cGVzJztcbmV4cG9ydCB7IFZpZXdwb3J0LCBWaWV3cG9ydEV2ZW50IH0gZnJvbSAnLi9zZXJ2aWNlcy92aWV3cG9ydC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvY29uc3RhbnQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL3V0aWxzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9maWVsZC10eXBlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9maWVsZC13aWRnZXQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL3NjcmlwdC1sb2FkZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL3VzZXItY3VzdG9tLXBpcGUtbWFuYWdlci5zZXJ2aWNlJztcbmV4cG9ydCB7IFN0YXRlUGVyc2lzdGVuY2UgfSBmcm9tICcuL3NlcnZpY2VzL3N0YXRlLXBlcnNpc3RlbmNlLnNlcnZpY2UnO1xuZXhwb3J0IHsgUGFnaW5hdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3BhZ2luYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvcmUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvd20tcHJvamVjdC1wcm9wZXJ0aWVzJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvbHJ1LWNhY2hlJztcbiJdfQ==
@@ -1,8 +1,9 @@
1
1
  import { Injectable } from '@angular/core';
2
+ import { assign } from "lodash-es";
2
3
  import * as i0 from "@angular/core";
3
4
  export class FieldTypeService {
4
5
  constructor() {
5
- _.assign(this, {
6
+ assign(this, {
6
7
  INTEGER: 'integer',
7
8
  BIG_INTEGER: 'big_integer',
8
9
  SHORT: 'short',
@@ -31,4 +32,4 @@ export class FieldTypeService {
31
32
  type: Injectable,
32
33
  args: [{ providedIn: 'root' }]
33
34
  }], () => [], null); })();
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtdHlwZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvc2VydmljZXMvZmllbGQtdHlwZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxnQkFBZ0I7SUFDekI7UUFDSSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRTtZQUNYLE9BQU8sRUFBRyxTQUFTO1lBQ25CLFdBQVcsRUFBRyxhQUFhO1lBQzNCLEtBQUssRUFBRyxPQUFPO1lBQ2YsS0FBSyxFQUFHLE9BQU87WUFDZixXQUFXLEVBQUcsYUFBYTtZQUMzQixNQUFNLEVBQUcsUUFBUTtZQUNqQixJQUFJLEVBQUcsTUFBTTtZQUNiLElBQUksRUFBRyxNQUFNO1lBQ2IsTUFBTSxFQUFHLFFBQVE7WUFDakIsU0FBUyxFQUFHLFdBQVc7WUFDdkIsSUFBSSxFQUFHLE1BQU07WUFDYixJQUFJLEVBQUcsTUFBTTtZQUNiLElBQUksRUFBRyxNQUFNO1lBQ2IsU0FBUyxFQUFHLFdBQVc7WUFDdkIsUUFBUSxFQUFHLFVBQVU7WUFDckIsT0FBTyxFQUFFLFNBQVM7WUFDbEIsSUFBSSxFQUFHLE1BQU07WUFDYixJQUFJLEVBQUcsTUFBTTtZQUNiLElBQUksRUFBRyxNQUFNO1NBQ2hCLENBQUMsQ0FBQztJQUNQLENBQUM7aUZBdkJRLGdCQUFnQjt1RUFBaEIsZ0JBQWdCLFdBQWhCLGdCQUFnQixtQkFESixNQUFNOztpRkFDbEIsZ0JBQWdCO2NBRDVCLFVBQVU7ZUFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmRlY2xhcmUgY29uc3QgXztcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgRmllbGRUeXBlU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIF8uYXNzaWduKHRoaXMsIHtcbiAgICAgICAgICAgIElOVEVHRVIgOiAnaW50ZWdlcicsXG4gICAgICAgICAgICBCSUdfSU5URUdFUiA6ICdiaWdfaW50ZWdlcicsXG4gICAgICAgICAgICBTSE9SVCA6ICdzaG9ydCcsXG4gICAgICAgICAgICBGTE9BVCA6ICdmbG9hdCcsXG4gICAgICAgICAgICBCSUdfREVDSU1BTCA6ICdiaWdfZGVjaW1hbCcsXG4gICAgICAgICAgICBET1VCTEUgOiAnZG91YmxlJyxcbiAgICAgICAgICAgIExPTkcgOiAnbG9uZycsXG4gICAgICAgICAgICBCWVRFIDogJ2J5dGUnLFxuICAgICAgICAgICAgU1RSSU5HIDogJ3N0cmluZycsXG4gICAgICAgICAgICBDSEFSQUNURVIgOiAnY2hhcmFjdGVyJyxcbiAgICAgICAgICAgIFRFWFQgOiAndGV4dCcsXG4gICAgICAgICAgICBEQVRFIDogJ2RhdGUnLFxuICAgICAgICAgICAgVElNRSA6ICd0aW1lJyxcbiAgICAgICAgICAgIFRJTUVTVEFNUCA6ICd0aW1lc3RhbXAnLFxuICAgICAgICAgICAgREFURVRJTUUgOiAnZGF0ZXRpbWUnLFxuICAgICAgICAgICAgQk9PTEVBTjogJ2Jvb2xlYW4nLFxuICAgICAgICAgICAgTElTVCA6ICdsaXN0JyxcbiAgICAgICAgICAgIENMT0IgOiAnY2xvYicsXG4gICAgICAgICAgICBCTE9CIDogJ2Jsb2InXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtdHlwZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvc2VydmljZXMvZmllbGQtdHlwZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFdBQVcsQ0FBQzs7QUFHakMsTUFBTSxPQUFPLGdCQUFnQjtJQUN6QjtRQUNJLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPLEVBQUcsU0FBUztZQUNuQixXQUFXLEVBQUcsYUFBYTtZQUMzQixLQUFLLEVBQUcsT0FBTztZQUNmLEtBQUssRUFBRyxPQUFPO1lBQ2YsV0FBVyxFQUFHLGFBQWE7WUFDM0IsTUFBTSxFQUFHLFFBQVE7WUFDakIsSUFBSSxFQUFHLE1BQU07WUFDYixJQUFJLEVBQUcsTUFBTTtZQUNiLE1BQU0sRUFBRyxRQUFRO1lBQ2pCLFNBQVMsRUFBRyxXQUFXO1lBQ3ZCLElBQUksRUFBRyxNQUFNO1lBQ2IsSUFBSSxFQUFHLE1BQU07WUFDYixJQUFJLEVBQUcsTUFBTTtZQUNiLFNBQVMsRUFBRyxXQUFXO1lBQ3ZCLFFBQVEsRUFBRyxVQUFVO1lBQ3JCLE9BQU8sRUFBRSxTQUFTO1lBQ2xCLElBQUksRUFBRyxNQUFNO1lBQ2IsSUFBSSxFQUFHLE1BQU07WUFDYixJQUFJLEVBQUcsTUFBTTtTQUNoQixDQUFDLENBQUM7SUFDUCxDQUFDO2lGQXZCUSxnQkFBZ0I7dUVBQWhCLGdCQUFnQixXQUFoQixnQkFBZ0IsbUJBREosTUFBTTs7aUZBQ2xCLGdCQUFnQjtjQUQ1QixVQUFVO2VBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHthc3NpZ259IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgRmllbGRUeXBlU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGFzc2lnbih0aGlzLCB7XG4gICAgICAgICAgICBJTlRFR0VSIDogJ2ludGVnZXInLFxuICAgICAgICAgICAgQklHX0lOVEVHRVIgOiAnYmlnX2ludGVnZXInLFxuICAgICAgICAgICAgU0hPUlQgOiAnc2hvcnQnLFxuICAgICAgICAgICAgRkxPQVQgOiAnZmxvYXQnLFxuICAgICAgICAgICAgQklHX0RFQ0lNQUwgOiAnYmlnX2RlY2ltYWwnLFxuICAgICAgICAgICAgRE9VQkxFIDogJ2RvdWJsZScsXG4gICAgICAgICAgICBMT05HIDogJ2xvbmcnLFxuICAgICAgICAgICAgQllURSA6ICdieXRlJyxcbiAgICAgICAgICAgIFNUUklORyA6ICdzdHJpbmcnLFxuICAgICAgICAgICAgQ0hBUkFDVEVSIDogJ2NoYXJhY3RlcicsXG4gICAgICAgICAgICBURVhUIDogJ3RleHQnLFxuICAgICAgICAgICAgREFURSA6ICdkYXRlJyxcbiAgICAgICAgICAgIFRJTUUgOiAndGltZScsXG4gICAgICAgICAgICBUSU1FU1RBTVAgOiAndGltZXN0YW1wJyxcbiAgICAgICAgICAgIERBVEVUSU1FIDogJ2RhdGV0aW1lJyxcbiAgICAgICAgICAgIEJPT0xFQU46ICdib29sZWFuJyxcbiAgICAgICAgICAgIExJU1QgOiAnbGlzdCcsXG4gICAgICAgICAgICBDTE9CIDogJ2Nsb2InLFxuICAgICAgICAgICAgQkxPQiA6ICdibG9iJ1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
@@ -1,8 +1,9 @@
1
1
  import { Injectable } from '@angular/core';
2
+ import { assign } from "lodash-es";
2
3
  import * as i0 from "@angular/core";
3
4
  export class FieldWidgetService {
4
5
  constructor() {
5
- _.assign(this, {
6
+ assign(this, {
6
7
  TEXT: 'text',
7
8
  NUMBER: 'number',
8
9
  TEXTAREA: 'textarea',
@@ -33,4 +34,4 @@ export class FieldWidgetService {
33
34
  type: Injectable,
34
35
  args: [{ providedIn: 'root' }]
35
36
  }], () => [], null); })();
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtd2lkZ2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9zZXJ2aWNlcy9maWVsZC13aWRnZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sa0JBQWtCO0lBQzNCO1FBQ0ksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDWCxJQUFJLEVBQUcsTUFBTTtZQUNiLE1BQU0sRUFBRyxRQUFRO1lBQ2pCLFFBQVEsRUFBRyxVQUFVO1lBQ3JCLFFBQVEsRUFBRyxVQUFVO1lBQ3JCLFFBQVEsRUFBRyxVQUFVO1lBQ3JCLE1BQU0sRUFBRyxRQUFRO1lBQ2pCLFFBQVEsRUFBRyxVQUFVO1lBQ3JCLFFBQVEsRUFBRyxVQUFVO1lBQ3JCLE1BQU0sRUFBRyxRQUFRO1lBQ2pCLE1BQU0sRUFBRyxRQUFRO1lBQ2pCLFdBQVcsRUFBRyxhQUFhO1lBQzNCLFFBQVEsRUFBRyxVQUFVO1lBQ3JCLElBQUksRUFBRyxNQUFNO1lBQ2IsSUFBSSxFQUFHLE1BQU07WUFDYixTQUFTLEVBQUcsV0FBVztZQUN2QixNQUFNLEVBQUcsUUFBUTtZQUNqQixNQUFNLEVBQUcsUUFBUTtZQUNqQixRQUFRLEVBQUcsVUFBVTtZQUNyQixZQUFZLEVBQUcsY0FBYztZQUM3QixLQUFLLEVBQUcsT0FBTztZQUNmLFdBQVcsRUFBRyxhQUFhO1NBQzlCLENBQUMsQ0FBQztJQUNQLENBQUM7bUZBekJRLGtCQUFrQjt1RUFBbEIsa0JBQWtCLFdBQWxCLGtCQUFrQixtQkFETixNQUFNOztpRkFDbEIsa0JBQWtCO2NBRDlCLFVBQVU7ZUFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmRlY2xhcmUgY29uc3QgXztcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgRmllbGRXaWRnZXRTZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgXy5hc3NpZ24odGhpcywge1xuICAgICAgICAgICAgVEVYVCA6ICd0ZXh0JyxcbiAgICAgICAgICAgIE5VTUJFUiA6ICdudW1iZXInLFxuICAgICAgICAgICAgVEVYVEFSRUEgOiAndGV4dGFyZWEnLFxuICAgICAgICAgICAgUEFTU1dPUkQgOiAncGFzc3dvcmQnLFxuICAgICAgICAgICAgQ0hFQ0tCT1ggOiAnY2hlY2tib3gnLFxuICAgICAgICAgICAgU0xJREVSIDogJ3NsaWRlcicsXG4gICAgICAgICAgICBSSUNIVEVYVCA6ICdyaWNodGV4dCcsXG4gICAgICAgICAgICBDVVJSRU5DWSA6ICdjdXJyZW5jeScsXG4gICAgICAgICAgICBTV0lUQ0ggOiAnc3dpdGNoJyxcbiAgICAgICAgICAgIFNFTEVDVCA6ICdzZWxlY3QnLFxuICAgICAgICAgICAgQ0hFQ0tCT1hTRVQgOiAnY2hlY2tib3hzZXQnLFxuICAgICAgICAgICAgUkFESU9TRVQgOiAncmFkaW9zZXQnLFxuICAgICAgICAgICAgREFURSA6ICdkYXRlJyxcbiAgICAgICAgICAgIFRJTUUgOiAndGltZScsXG4gICAgICAgICAgICBUSU1FU1RBTVAgOiAndGltZXN0YW1wJyxcbiAgICAgICAgICAgIFVQTE9BRCA6ICd1cGxvYWQnLFxuICAgICAgICAgICAgUkFUSU5HIDogJ3JhdGluZycsXG4gICAgICAgICAgICBEQVRFVElNRSA6ICdkYXRldGltZScsXG4gICAgICAgICAgICBBVVRPQ09NUExFVEUgOiAnYXV0b2NvbXBsZXRlJyxcbiAgICAgICAgICAgIENISVBTIDogJ2NoaXBzJyxcbiAgICAgICAgICAgIENPTE9SUElDS0VSIDogJ2NvbG9ycGlja2VyJ1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtd2lkZ2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9zZXJ2aWNlcy9maWVsZC13aWRnZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxXQUFXLENBQUM7O0FBR2pDLE1BQU0sT0FBTyxrQkFBa0I7SUFDM0I7UUFDSSxNQUFNLENBQUMsSUFBSSxFQUFFO1lBQ1QsSUFBSSxFQUFHLE1BQU07WUFDYixNQUFNLEVBQUcsUUFBUTtZQUNqQixRQUFRLEVBQUcsVUFBVTtZQUNyQixRQUFRLEVBQUcsVUFBVTtZQUNyQixRQUFRLEVBQUcsVUFBVTtZQUNyQixNQUFNLEVBQUcsUUFBUTtZQUNqQixRQUFRLEVBQUcsVUFBVTtZQUNyQixRQUFRLEVBQUcsVUFBVTtZQUNyQixNQUFNLEVBQUcsUUFBUTtZQUNqQixNQUFNLEVBQUcsUUFBUTtZQUNqQixXQUFXLEVBQUcsYUFBYTtZQUMzQixRQUFRLEVBQUcsVUFBVTtZQUNyQixJQUFJLEVBQUcsTUFBTTtZQUNiLElBQUksRUFBRyxNQUFNO1lBQ2IsU0FBUyxFQUFHLFdBQVc7WUFDdkIsTUFBTSxFQUFHLFFBQVE7WUFDakIsTUFBTSxFQUFHLFFBQVE7WUFDakIsUUFBUSxFQUFHLFVBQVU7WUFDckIsWUFBWSxFQUFHLGNBQWM7WUFDN0IsS0FBSyxFQUFHLE9BQU87WUFDZixXQUFXLEVBQUcsYUFBYTtTQUM5QixDQUFDLENBQUM7SUFDUCxDQUFDO21GQXpCUSxrQkFBa0I7dUVBQWxCLGtCQUFrQixXQUFsQixrQkFBa0IsbUJBRE4sTUFBTTs7aUZBQ2xCLGtCQUFrQjtjQUQ5QixVQUFVO2VBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHthc3NpZ259IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgRmllbGRXaWRnZXRTZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgYXNzaWduKHRoaXMsIHtcbiAgICAgICAgICAgIFRFWFQgOiAndGV4dCcsXG4gICAgICAgICAgICBOVU1CRVIgOiAnbnVtYmVyJyxcbiAgICAgICAgICAgIFRFWFRBUkVBIDogJ3RleHRhcmVhJyxcbiAgICAgICAgICAgIFBBU1NXT1JEIDogJ3Bhc3N3b3JkJyxcbiAgICAgICAgICAgIENIRUNLQk9YIDogJ2NoZWNrYm94JyxcbiAgICAgICAgICAgIFNMSURFUiA6ICdzbGlkZXInLFxuICAgICAgICAgICAgUklDSFRFWFQgOiAncmljaHRleHQnLFxuICAgICAgICAgICAgQ1VSUkVOQ1kgOiAnY3VycmVuY3knLFxuICAgICAgICAgICAgU1dJVENIIDogJ3N3aXRjaCcsXG4gICAgICAgICAgICBTRUxFQ1QgOiAnc2VsZWN0JyxcbiAgICAgICAgICAgIENIRUNLQk9YU0VUIDogJ2NoZWNrYm94c2V0JyxcbiAgICAgICAgICAgIFJBRElPU0VUIDogJ3JhZGlvc2V0JyxcbiAgICAgICAgICAgIERBVEUgOiAnZGF0ZScsXG4gICAgICAgICAgICBUSU1FIDogJ3RpbWUnLFxuICAgICAgICAgICAgVElNRVNUQU1QIDogJ3RpbWVzdGFtcCcsXG4gICAgICAgICAgICBVUExPQUQgOiAndXBsb2FkJyxcbiAgICAgICAgICAgIFJBVElORyA6ICdyYXRpbmcnLFxuICAgICAgICAgICAgREFURVRJTUUgOiAnZGF0ZXRpbWUnLFxuICAgICAgICAgICAgQVVUT0NPTVBMRVRFIDogJ2F1dG9jb21wbGV0ZScsXG4gICAgICAgICAgICBDSElQUyA6ICdjaGlwcycsXG4gICAgICAgICAgICBDT0xPUlBJQ0tFUiA6ICdjb2xvcnBpY2tlcidcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
@@ -1,5 +1,6 @@
1
1
  import { isDefined } from '../utils/utils';
2
2
  import { Injectable } from '@angular/core';
3
+ import { debounce, get, isEmpty, isEqual } from "lodash-es";
3
4
  import * as i0 from "@angular/core";
4
5
  export class PaginationService {
5
6
  /**
@@ -83,7 +84,7 @@ export class PaginationService {
83
84
  newVal.forEach(function (newObj) {
84
85
  flag = false;
85
86
  fieldDefs.forEach(function (obj) {
86
- if (_.isEqual(newObj, obj)) {
87
+ if (isEqual(newObj, obj)) {
87
88
  flag = true;
88
89
  }
89
90
  });
@@ -171,7 +172,7 @@ export class PaginationService {
171
172
  * @returns debounced function definition
172
173
  */
173
174
  debouncedFetchNextDatasetOnScroll(dataNavigator, debounceNum, parent) {
174
- return _.debounce(() => this.fetchNextDatasetOnScroll(dataNavigator, parent), debounceNum);
175
+ return debounce(() => this.fetchNextDatasetOnScroll(dataNavigator, parent), debounceNum);
175
176
  }
176
177
  /**
177
178
  * @description
@@ -203,11 +204,11 @@ export class PaginationService {
203
204
  const dataNavigator = parent.dataNavigator;
204
205
  const app = parent.app;
205
206
  const $scrollParent = $element.closest('[wmsmoothscroll="true"]');
206
- const iScroll = _.get($scrollParent[0], 'iscroll');
207
+ const iScroll = get($scrollParent[0], 'iscroll');
207
208
  // when iscroll is not initialised the notify the smoothscroll and subscribe to the iscroll update
208
209
  if (!iScroll) {
209
210
  const iScrollSubscription = app.subscribe('iscroll-update', (_el) => {
210
- if (!_.isEmpty(_el) && _el.isSameNode($scrollParent[0])) {
211
+ if (!isEmpty(_el) && _el.isSameNode($scrollParent[0])) {
211
212
  this.setIscrollHandlers($scrollParent[0], dataNavigator, debounceNum);
212
213
  iScrollSubscription();
213
214
  }
@@ -227,7 +228,7 @@ export class PaginationService {
227
228
  */
228
229
  setIscrollHandlers(el, dataNavigator, debounceNum) {
229
230
  let lastScrollTop = 0;
230
- const wrapper = _.get(el.iscroll, 'wrapper');
231
+ const wrapper = get(el.iscroll, 'wrapper');
231
232
  const self = el.iscroll;
232
233
  el.iscroll.on('scrollEnd', () => {
233
234
  const clientHeight = wrapper.clientHeight, totalHeight = wrapper.scrollHeight, scrollTop = Math.abs(el.iscroll.y);
@@ -247,4 +248,4 @@ export class PaginationService {
247
248
  type: Injectable,
248
249
  args: [{ providedIn: 'root' }]
249
250
  }], null, null); })();
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvc2VydmljZXMvcGFnaW5hdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8saUJBQWlCO0lBQzFCOzs7Ozs7T0FNRztJQUNJLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxNQUFNO1FBQzFDLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxVQUFVLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ3RGLHVDQUF1QztRQUN2QyxJQUFJLE1BQU0sQ0FBQyxVQUFVLEtBQUssVUFBVSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNwSSxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3hELE1BQU0sQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsNkRBQTZEO1FBQzdELElBQUksTUFBTSxDQUFDLFVBQVUsS0FBSyxVQUFVLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLHlCQUF5QixFQUFFLENBQUMsSUFBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsbUJBQW1CLEtBQUssTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsY0FBYyxJQUFJLE1BQU0sQ0FB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LENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO2tGQTdQUSxpQkFBaUI7dUVBQWpCLGlCQUFpQixXQUFqQixpQkFBaUIsbUJBRkosTUFBTTs7aUZBRW5CLGlCQUFpQjtjQUY3QixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNEZWZpbmVkIH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuZGVjbGFyZSBjb25zdCBfLCAkO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvblNlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgdXBkYXRlZCBmaWVsZHMgYW5kIHRoZSBjdXJyZW50IHBhZ2UgaW5kZXggd2hlbiBuYXZpZ2F0ZWQgdG8gdGhlIG5leHQgc2V0IG9mIGRhdGFcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gcGFyZW50IHRhYmxlIC8gbGlzdCBpbnN0YW5jZVxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdWYWwgdXBkYXRlZCBmaWVsZHMgaW5mb1xuICAgICAqIEByZXR1cm5zIGZpZWxkRGVmcyBhbmQgY3VycmVudCBwYWdlIGluZGV4XG4gICAgICovXG4gICAgcHVibGljIHVwZGF0ZUZpZWxkc09uUGFnaW5hdGlvbihwYXJlbnQsIG5ld1ZhbCkge1xuICAgICAgICBsZXQgZmllbGREZWZzID0gcGFyZW50LndpZGdldFR5cGUgPT09ICd3bS10YWJsZScgPyBwYXJlbnQuZ3JpZERhdGEgOiBwYXJlbnQuZmllbGREZWZzO1xuICAgICAgICAvLyByZW1vdmUgdGhlIGRlbGV0ZWQgcm93IGZyb20gdGhlIGxpc3RcbiAgICAgICAgaWYgKHBhcmVudC53aWRnZXRUeXBlID09PSAnd20tdGFibGUnICYmIChwYXJlbnQuZ3JpZE9wdGlvbnMuaXNOYXZUeXBlU2Nyb2xsT3JPbmRlbWFuZCgpKSAmJiBwYXJlbnQuZ3JpZE9wdGlvbnMuZGVsZXRlZFJvd0luZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgZmllbGREZWZzLnNwbGljZShwYXJlbnQuZ3JpZE9wdGlvbnMuZGVsZXRlZFJvd0luZGV4LCAxKTtcbiAgICAgICAgICAgIHBhcmVudC5ncmlkT3B0aW9ucy5zZXREZWxldGVkUm93SW5kZXgoLTEpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHJlc2V0IGZpZWxkRGVmcyBpZiBsYXN0IGFjdGlvbiBwZXJmb3JtZWQgaXMgc2VhcmNoIG9yIHNvcnRcbiAgICAgICAgaWYgKHBhcmVudC53aWRnZXRUeXBlID09PSAnd20tdGFibGUnICYmIChwYXJlbnQuZ3JpZE9wdGlvbnMuaXNOYXZUeXBlU2Nyb2xsT3JPbmRlbWFuZCgpKSAgJiYgKHBhcmVudC5ncmlkT3B0aW9ucy5sYXN0QWN0aW9uUGVyZm9ybWVkID09PSBwYXJlbnQuZ3JpZE9wdGlvbnMuQUNUSU9OUy5TRUFSQ0hfT1JfU09SVCB8fCBwYXJlbnQuZ3JpZE9wdGlvbnMubGFzdEFjdGlvblBlcmZvcm1lZCA9PT0gcGFyZW50LmdyaWRPcHRpb25zLkFDVElPTlMuRklMVEVSX0NSSVRFUklBIHx8IHBhcmVudC5ncmlkT3B0aW9ucy5sYXN0QWN0aW9uUGVyZm9ybWVkID09PSBwYXJlbnQuZ3JpZE9wdGlvbnMuQUNUSU9OUy5EQVRBU0VUX1VQREFURSkpIHtcbiAgICAgICAgICAgIGZpZWxkRGVmcyA9IFtdO1xuICAgICAgICAgICAgcGFyZW50LmdyaWRPcHRpb25zLnNldEN1cnJlbnRQYWdlKDEpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBjdXJyZW50UGFnZTtcbiAgICAgICAgaWYgKHBhcmVudC53aWRnZXRUeXBlID09PSAnd20tdGFibGUnKSB7XG4gICAgICAgICAgICBjdXJyZW50UGFnZSA9IHBhcmVudC5ncmlkT3B0aW9ucy5zaG93dmlld2xlc3NidXR0b24gJiYgKHBhcmVudC5ncmlkT3B0aW9ucy5tb2RlID09PSAndmlld2xlc3MnKSA/IHBhcmVudC5ncmlkT3B0aW9ucy5nZXRDdXJyZW50UGFnZSgpIDogcGFyZW50LmN1cnJlbnRQYWdlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY3VycmVudFBhZ2UgPSBwYXJlbnQuY3VycmVudFBhZ2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGF0YU5hdmlnYXRvciA9IHBhcmVudC5kYXRhTmF2aWdhdG9yO1xuICAgICAgICBjb25zdCBwYWdlc2l6ZSA9IHBhcmVudC5wYWdlc2l6ZTtcblxuICAgICAgICBpZiAoIWlzRGVmaW5lZChmaWVsZERlZnMpIHx8IGRhdGFOYXZpZ2F0b3IuaXNGaXJzdFBhZ2UoKSkge1xuICAgICAgICAgICAgZmllbGREZWZzID0gW107XG4gICAgICAgICAgICBjdXJyZW50UGFnZSA9IDE7XG4gICAgICAgIH0gZWxzZSBpZiAoZmllbGREZWZzLmxlbmd0aCAvIHBhZ2VzaXplIDw9IGRhdGFOYXZpZ2F0b3IucGFnZUNvdW50KSB7XG4gICAgICAgICAgICBsZXQgaXRlbXNMZW5ndGgsXG4gICAgICAgICAgICAgICAgaXRlbXNUb1B1c2ggPSBbXTtcbiAgICAgICAgICAgIC8vIHdlIHB1c2ggdGhlIG5ld1ZhbCBvbmx5IHdoZW4gZG4uY3VycmVudFBhZ2UgZ2V0cyBpbmNyZW1lbnRlZCBiZWNhdXNlIHRoYXQgaXMgd2hlbiBuZXcgaXRlbXMgZ2V0cyBhZGRlZCB0byBuZXdWYWxcbiAgICAgICAgICAgIGlmIChmaWVsZERlZnMubGVuZ3RoID09PSBjdXJyZW50UGFnZSAqIHBhZ2VzaXplICYmIChjdXJyZW50UGFnZSArIDEpID09PSBkYXRhTmF2aWdhdG9yLmRuLmN1cnJlbnRQYWdlKSB7XG4gICAgICAgICAgICAgICAgaXRlbXNUb1B1c2ggPSBuZXdWYWw7XG4gICAgICAgICAgICAgICAgY3VycmVudFBhZ2UrKztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGREZWZzLmxlbmd0aCA8IGN1cnJlbnRQYWdlICogcGFnZXNpemUpIHtcbiAgICAgICAgICAgICAgICBpZiAoKGZpZWxkRGVmcy5sZW5ndGggPT09IChjdXJyZW50UGFnZSAtIDEpICogcGFnZXNpemUpICYmICgoY3VycmVudFBhZ2UgLSAxKSA9PT0gZGF0YU5hdmlnYXRvci5kbi5jdXJyZW50UGFnZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgZG4uY3VycmVudFBhZ2UgaXMgbm90IGluY3JlbWVudGVkIHN0aWxsIG9ubHkgb2xkIG5ld1ZhbCBpcyBwcmVzZW50IGhlbmNlIHdlIHB1c2ggZW1wdHkgYXJyYXlcbiAgICAgICAgICAgICAgICAgICAgbmV3VmFsID0gW107XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhTmF2aWdhdG9yLmRhdGFTaXplIDwgY3VycmVudFBhZ2UgKiBwYWdlc2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiBudW1iZXIgb2YgZWxlbWVudHMgYWRkZWQgdG8gZGF0YU5hdmlnYXRvciBpcyBsZXNzIHRoYW4gIHByb2R1Y3Qgb2YgY3VycmVudFBhZ2UgYW5kIHBhZ2VTaXplIHdlIG9ubHkgYWRkIGVsZW1lbnRzIGV4dHJhIGVsZW1lbnRzIGFkZGVkXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zTGVuZ3RoID0gZGF0YU5hdmlnYXRvci5kYXRhU2l6ZSAtIGZpZWxkRGVmcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgbnVtYmVyIG9mIGVsZW1lbnRzIGFkZGVkIHRvIGRhdGFOYXZpZ2F0b3IgaXMgZ3JlYXRlciB0aGFuICBwcm9kdWN0IG9mIGN1cnJlbnRQYWdlIGFuZCBwYWdlU2l6ZSB3ZSBhZGQgZWxlbWVudHMgdGhlIGV4dHJhIGVsZW1lbnRzIGluIG5ld1ZhbFxuICAgICAgICAgICAgICAgICAgICBpdGVtc0xlbmd0aCA9IGN1cnJlbnRQYWdlICogcGFnZXNpemUgLSBmaWVsZERlZnMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50UGFnZSsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydEluZGV4ID0gbmV3VmFsLmxlbmd0aCAtIGl0ZW1zTGVuZ3RoO1xuICAgICAgICAgICAgICAgIGl0ZW1zVG9QdXNoID0gbmV3VmFsLnNsaWNlKHN0YXJ0SW5kZXgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmaWVsZERlZnMubGVuZ3RoID09PSBjdXJyZW50UGFnZSAqIHBhZ2VzaXplICYmIGN1cnJlbnRQYWdlID09PSBkYXRhTmF2aWdhdG9yLmRuLmN1cnJlbnRQYWdlKSB7XG4gICAgICAgICAgICAgICAgLy8gaWYgZG4uY3VycmVudFBhZ2UgaXMgbm90IGluY3JlbWVudGVkIHN0aWxsIG9ubHkgb2xkIG5ld1ZhbCBpcyBwcmVzZW50IGhlbmNlIHdlIHB1c2ggZW1wdHkgYXJyYXlcbiAgICAgICAgICAgICAgICBpdGVtc1RvUHVzaCA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV3VmFsID0gaXRlbXNUb1B1c2g7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBZGQgdW5pcXVlIHJlY29yZHMgdG8gZmllbGREZWZzXG4gICAgICAgIGlmIChwYXJlbnQud2lkZ2V0VHlwZSA9PT0gJ3dtLXRhYmxlJyAmJiAocGFyZW50LmdyaWRPcHRpb25zLmxhc3RBY3Rpb25QZXJmb3JtZWQgPT09IHBhcmVudC5ncmlkT3B0aW9ucy5BQ1RJT05TLkRFTEVURSAgfHwgcGFyZW50LmdyaWRPcHRpb25zLmxhc3RBY3Rpb25QZXJmb3JtZWQgPT09IHBhcmVudC5ncmlkT3B0aW9ucy5BQ1RJT05TLkVESVQpKSB7XG4gICAgICAgICAgICBmaWVsZERlZnMgPSB0aGlzLmdldFVuaXF1ZVJlY29yZHNJbkZpZWxkRGVmKGZpZWxkRGVmcywgbmV3VmFsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpZWxkRGVmcyA9IFsuLi5maWVsZERlZnMsIC4uLm5ld1ZhbF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtmaWVsZERlZnMsIGN1cnJlbnRQYWdlXTtcbiAgICB9XG5cbiAgICAvLyBBZGQgdGhlIHVuaXF1ZSByZWNvcmRzIHRvIGZpZWxkRGVmc1xuICAgIHB1YmxpYyBnZXRVbmlxdWVSZWNvcmRzSW5GaWVsZERlZihmaWVsZERlZnMsIG5ld1ZhbCkge1xuICAgICAgICBsZXQgZmxhZyA9IGZhbHNlO1xuICAgICAgICBpZiAoIWZpZWxkRGVmcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZpZWxkRGVmcyA9IG5ld1ZhbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld1ZhbC5mb3JFYWNoKGZ1bmN0aW9uIChuZXdPYmopIHtcbiAgICAgICAgICAgICAgICBmbGFnID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgZmllbGREZWZzLmZvckVhY2goZnVuY3Rpb24gKG9iaikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXy5pc0VxdWFsKG5ld09iaiwgb2JqKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmxhZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoZmxhZyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGREZWZzLnB1c2gobmV3T2JqKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmllbGREZWZzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFRoaXMgZnVuY3Rpb24gcmVnaXN0ZXJzIHNjcm9sbCBldmVudHMgb24gdGhlIHNjcm9sbGFibGUgZWwsIGlmIHRoZSBwYWdlIGRvZXNuJ3QgaGF2ZSBhIHNjcm9sbCBlbCB0aGVuIHdoZWVsIGV2ZW50IGlzIHJlZ2lzdGVyZWQgb24gdGhlIHJlcXVlc3RlZCBub2RlXG4gICAgICogQHBhcmFtIHtvYmplY3R9IHBhcmVudCB0YWJsZSAvIGxpc3QgaW5zdGFuY2VcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbm9kZU5hbWUgdGJvZHkvdWxcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZGVib3VuY2VOdW0gcHJvdmlkZWQgdG8gbG9kYXNoIGRlYm91bmNlXG4gICAgICogQHJldHVybnMgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBiaW5kU2Nyb2xsRXZ0KHBhcmVudCwgbm9kZU5hbWUsIGRlYm91bmNlTnVtKSB7XG4gICAgICAgIGNvbnN0IGRhdGFOYXZpZ2F0b3IgPSBwYXJlbnQuZGF0YU5hdmlnYXRvcjtcbiAgICAgICAgY29uc3QgJGVsID0gcGFyZW50LiRlbGVtZW50O1xuICAgICAgICBjb25zdCAkcm9vdEVsID0gJGVsLmZpbmQobm9kZU5hbWUpO1xuICAgICAgICBjb25zdCAkZmlyc3RDaGlsZCA9ICRyb290RWwuY2hpbGRyZW4oKS5maXJzdCgpO1xuXG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBsZXQgJHNjcm9sbFBhcmVudDtcbiAgICAgICAgbGV0IHNjcm9sbE5vZGU7XG4gICAgICAgIGxldCBsYXN0U2Nyb2xsVG9wID0gMDtcblxuICAgICAgICBpZiAoISRmaXJzdENoaWxkLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgJHNjcm9sbFBhcmVudCA9ICRmaXJzdENoaWxkLnNjcm9sbFBhcmVudChmYWxzZSk7XG5cbiAgICAgICAgaWYgKCRzY3JvbGxQYXJlbnRbMF0gPT09IGRvY3VtZW50KSB7XG4gICAgICAgICAgICBzY3JvbGxOb2RlID0gZG9jdW1lbnQuYm9keTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNjcm9sbE5vZGUgPSAkc2Nyb2xsUGFyZW50WzBdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaGFzIHNjcm9sbFxuICAgICAgICBpZiAoc2Nyb2xsTm9kZS5zY3JvbGxIZWlnaHQgPiBzY3JvbGxOb2RlLmNsaWVudEhlaWdodCkge1xuICAgICAgICAgICAgJHNjcm9sbFBhcmVudFxuICAgICAgICAgICAgICAgIC5lYWNoKChpbmRleDogbnVtYmVyLCBub2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHNjcm9sbFRvcCBwcm9wZXJ0eSBpcyAwIG9yIHVuZGVmaW5lZCBmb3IgYm9keSBpbiBJRSwgc2FmYXJpLlxuICAgICAgICAgICAgICAgICAgICBsYXN0U2Nyb2xsVG9wID0gbm9kZSA9PT0gZG9jdW1lbnQgPyAobm9kZS5ib2R5LnNjcm9sbFRvcCB8fCAkKHdpbmRvdykuc2Nyb2xsVG9wKCkpIDogKG5vZGUgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbFRvcDtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5vZmYoJ3Njcm9sbC5zY3JvbGxfZXZ0JylcbiAgICAgICAgICAgICAgICAub24oJ3Njcm9sbC5zY3JvbGxfZXZ0JywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0ID0gZXZ0LnRhcmdldDtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNsaWVudEhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRvdGFsSGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBsZXQgc2Nyb2xsVG9wO1xuICAgICAgICAgICAgICAgICAgICAvLyBzY3JvbGxpbmdFbGVtZW50IGlzIHVuZGVmaW5lZCBmb3IgSUUsIHNhZmFyaS4gdXNlIGJvZHkgYXMgdGFyZ2V0IEVsZW1lbnRcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0ID09PSBkb2N1bWVudCA/ICh0YXJnZXQuc2Nyb2xsaW5nRWxlbWVudCB8fCBkb2N1bWVudC5ib2R5KSA6IHRhcmdldDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudC53aWRnZXRUeXBlID09PSAnd20tdGFibGUnICYmIHBhcmVudC5ncmlkT3B0aW9ucy5pc05hdlR5cGVTY3JvbGxPck9uZGVtYW5kKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNsaWVudEhlaWdodCA9IHRhcmdldC5jbGllbnRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIHRvdGFsSGVpZ2h0ID0gdGFyZ2V0LnNjcm9sbEhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9wID0gdGFyZ2V0ID09PSBkb2N1bWVudC5ib2R5ID8gJCh3aW5kb3cpLnNjcm9sbFRvcCgpIDogdGFyZ2V0LnNjcm9sbFRvcDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoKGxhc3RTY3JvbGxUb3AgPCBzY3JvbGxUb3ApICYmICh0b3RhbEhlaWdodCAqIDAuOSA8IHNjcm9sbFRvcCArIGNsaWVudEhlaWdodCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykub2ZmKCdzY3JvbGwuc2Nyb2xsX2V2dCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kZWJvdW5jZWRGZXRjaE5leHREYXRhc2V0T25TY3JvbGwoZGF0YU5hdmlnYXRvciwgZGVib3VuY2VOdW0sIHBhcmVudCkoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGxhc3RTY3JvbGxUb3AgPSBzY3JvbGxUb3A7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAkcm9vdEVsLm9mZignd2hlZWwuc2Nyb2xsX2V2dCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gaWYgdGhlcmUgaXMgbm8gc2Nyb2xsYWJsZSBlbGVtZW50IHJlZ2lzdGVyIHdoZWVsIGV2ZW50IG9uIHVsIGVsZW1lbnRcbiAgICAgICAgICAgICRyb290RWwub24oJ3doZWVsLnNjcm9sbF9ldnQnLCBlID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocGFyZW50LndpZGdldFR5cGUgPT09ICd3bS10YWJsZScgJiYgcGFyZW50LmdyaWRPcHRpb25zLmlzTmF2VHlwZVNjcm9sbE9yT25kZW1hbmQoKSkge1xuICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZS5vcmlnaW5hbEV2ZW50LmRlbHRhWSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgJHJvb3RFbC5vZmYoJ3doZWVsLnNjcm9sbF9ldnQnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWJvdW5jZWRGZXRjaE5leHREYXRhc2V0T25TY3JvbGwoZGF0YU5hdmlnYXRvciwgZGVib3VuY2VOdW0sIHBhcmVudCkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFRoaXMgZnVuY3Rpb24gY2FsbHMgZmV0Y2hOZXh0RGF0YXNldE9uU2Nyb2xsIGZuIG9uIGRlYm91bmNlZCB0aW1lXG4gICAgICogQHBhcmFtIHtvYmplY3R9IGRhdGFOYXZpZ2F0b3IgcGFnaW5hdGlvbiBpbnN0YW5jZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkZWJvdW5jZU51bSBwcm92aWRlZCB0byBsb2Rhc2ggZGVib3VuY2VcbiAgICAgKiBAcmV0dXJucyBkZWJvdW5jZWQgZnVuY3Rpb24gZGVmaW5pdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBkZWJvdW5jZWRGZXRjaE5leHREYXRhc2V0T25TY3JvbGwoZGF0YU5hdmlnYXRvciwgZGVib3VuY2VOdW0sIHBhcmVudCkge1xuICAgICAgICByZXR1cm4gXy5kZWJvdW5jZSgoKSA9PiB0aGlzLmZldGNoTmV4dERhdGFzZXRPblNjcm9sbChkYXRhTmF2aWdhdG9yLCBwYXJlbnQpLCBkZWJvdW5jZU51bSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogVGhpcyBmdW5jdGlvbiBjYWxscyBuZXh0IHNldCBvZiBkYXRhIHdoZW4gbmF2aWdhdGVkIHRvIG5leHQgcGFnZVxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBkYXRhTmF2aWdhdG9yIHBhZ2luYXRpb24gaW5zdGFuY2VcbiAgICAgKiBAcmV0dXJucyBudWxsXG4gICAgICovXG4gICAgcHVibGljIGZldGNoTmV4dERhdGFzZXRPblNjcm9sbChkYXRhTmF2aWdhdG9yLCBwYXJlbnQpIHtcbiAgICAgICAgLy8gTG9hZCBuZXh0IHNldCBvZiBkYXRhIG9ubHkgYWZ0ZXIgdGhlIHN1Y2Nlc3Mgb2YgY3VycmVudCBjYWxsXG4gICAgICAgIGlmICghcGFyZW50LnZhcmlhYmxlSW5mbGlnaHQpIHtcbiAgICAgICAgICAgIC8vIEZpeCBmb3IgW1dNUy0yMzI2M106IHNldCAnaXNOZXh0UGFnZURhdGEnIGZsYWcgdG8gdHJ1ZSAmICdpc0RhdGFVcGRhdGVkQnlVc2VyJyB0byBmYWxzZSBhcyBuZXh0IHBhZ2UgZGF0YSBpcyBiZWluZyByZW5kZXJlZCBvbiBTY3JvbGxcbiAgICAgICAgICAgIGlmIChwYXJlbnQud2lkZ2V0VHlwZSA9PT0gJ3dtLXRhYmxlJykge1xuICAgICAgICAgICAgICAgIC8vIHNldCBpc05leHRQYWdlRGF0YSBmbGFnIHRvIHRydWUgYXMgbmV4dCBwYWdlIGRhdGEgaXMgYmVpbmcgcmVuZGVyZWRcbiAgICAgICAgICAgICAgICBwYXJlbnQuZ3JpZE9wdGlvbnMuc2V0SXNOZXh0UGFnZURhdGEodHJ1ZSk7XG4gICAgICAgICAgICAgICAgcGFyZW50LmdyaWRPcHRpb25zLnNldElzRGF0YVVwZGF0ZWRCeVVzZXIoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGF0YU5hdmlnYXRvci5uYXZpZ2F0ZVBhZ2UoJ25leHQnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFRoaXMgZnVuY3Rpb24gcmVnaXN0ZXJzIHNjcm9sbCBldmVudHMgb24gdGhlIHNjcm9sbGFibGUgZWwgZm9yIG1vYmlsZSBwcm9qZWN0c1xuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJlbnQgbGlzdCBpbnN0YW5jZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkZWJvdW5jZU51bSBwcm92aWRlZCB0byBsb2Rhc2ggZGVib3VuY2VcbiAgICAgKiBAcmV0dXJucyBudWxsXG4gICAgICovXG4gICAgcHVibGljIGJpbmRJU2Nyb2xsRXZ0KHBhcmVudCwgZGVib3VuY2VOdW0pIHtcbiAgICAgICAgY29uc3QgJGVsZW1lbnQgPSBwYXJlbnQuJGVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGRhdGFOYXZpZ2F0b3IgPSBwYXJlbnQuZGF0YU5hdmlnYXRvcjtcbiAgICAgICAgY29uc3QgYXBwID0gcGFyZW50LmFwcDtcblxuICAgICAgICBjb25zdCAkc2Nyb2xsUGFyZW50ID0gJGVsZW1lbnQuY2xvc2VzdCgnW3dtc21vb3Roc2Nyb2xsPVwidHJ1ZVwiXScpO1xuXG4gICAgICAgIGNvbnN0IGlTY3JvbGwgPSBfLmdldCgkc2Nyb2xsUGFyZW50WzBdLCAnaXNjcm9sbCcpO1xuXG4gICAgICAgIC8vIHdoZW4gaXNjcm9sbCBpcyBub3QgaW5pdGlhbGlzZWQgdGhlIG5vdGlmeSB0aGUgc21vb3Roc2Nyb2xsIGFuZCBzdWJzY3JpYmUgdG8gdGhlIGlzY3JvbGwgdXBkYXRlXG4gICAgICAgIGlmICghaVNjcm9sbCkge1xuICAgICAgICAgICAgY29uc3QgaVNjcm9sbFN1YnNjcmlwdGlvbiA9IGFwcC5zdWJzY3JpYmUoJ2lzY3JvbGwtdXBkYXRlJywgKF9lbCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghXy5pc0VtcHR5KF9lbCkgJiYgX2VsLmlzU2FtZU5vZGUoJHNjcm9sbFBhcmVudFswXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRJc2Nyb2xsSGFuZGxlcnMoJHNjcm9sbFBhcmVudFswXSwgZGF0YU5hdmlnYXRvciwgZGVib3VuY2VOdW0pO1xuICAgICAgICAgICAgICAgICAgICBpU2Nyb2xsU3Vic2NyaXB0aW9uKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhcHAubm90aWZ5KCduby1pc2Nyb2xsJywgJHNjcm9sbFBhcmVudFswXSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRJc2Nyb2xsSGFuZGxlcnMoJHNjcm9sbFBhcmVudFswXSwgZGF0YU5hdmlnYXRvciwgZGVib3VuY2VOdW0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFRoaXMgZnVuY3Rpb24gcmVnaXN0ZXJzIHNjcm9sbEVuZCBldmVudCBvbiB0aGUgc2Nyb2xsYWJsZSBlbCBmb3IgbW9iaWxlIHByb2plY3RzXG4gICAgICogQHBhcmFtIHtvYmplY3R9IGVsIHNjcm9sbGFibGUgZWxlbWVudCBzY29wZVxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBkYXRhTmF2aWdhdG9yIHBhZ2luYXRpb24gaW5zdGFuY2VcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZGVib3VuY2VOdW0gcHJvdmlkZWQgdG8gbG9kYXNoIGRlYm91bmNlXG4gICAgICogQHJldHVybnMgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRJc2Nyb2xsSGFuZGxlcnMoZWwsIGRhdGFOYXZpZ2F0b3IsIGRlYm91bmNlTnVtKSB7XG4gICAgICAgIGxldCBsYXN0U2Nyb2xsVG9wID0gMDtcbiAgICAgICAgY29uc3Qgd3JhcHBlciA9IF8uZ2V0KGVsLmlzY3JvbGwsICd3cmFwcGVyJyk7XG4gICAgICAgIGNvbnN0IHNlbGYgPSBlbC5pc2Nyb2xsO1xuXG4gICAgICAgIGVsLmlzY3JvbGwub24oJ3Njcm9sbEVuZCcsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNsaWVudEhlaWdodCA9IHdyYXBwZXIuY2xpZW50SGVpZ2h0LFxuICAgICAgICAgICAgICAgIHRvdGFsSGVpZ2h0ID0gd3JhcHBlci5zY3JvbGxIZWlnaHQsXG4gICAgICAgICAgICAgICAgc2Nyb2xsVG9wID0gTWF0aC5hYnMoZWwuaXNjcm9sbC55KTtcblxuICAgICAgICAgICAgaWYgKChsYXN0U2Nyb2xsVG9wIDwgc2Nyb2xsVG9wKSAmJiAodG90YWxIZWlnaHQgKiAwLjkgPCBzY3JvbGxUb3AgKyBjbGllbnRIZWlnaHQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWJvdW5jZWRGZXRjaE5leHREYXRhc2V0T25TY3JvbGwoZGF0YU5hdmlnYXRvciwgZGVib3VuY2VOdW0sIHBhcmVudCkoKTtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5pbmRpY2F0b3JSZWZyZXNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuaW5kaWNhdG9yUmVmcmVzaCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGFzdFNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
251
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvc2VydmljZXMvcGFnaW5hdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUMsTUFBTSxXQUFXLENBQUM7O0FBSzFELE1BQU0sT0FBTyxpQkFBaUI7SUFDMUI7Ozs7OztPQU1HO0lBQ0ksd0JBQXdCLENBQUMsTUFBTSxFQUFFLE1BQU07UUFDMUMsSUFBSSxTQUFTLEdBQUcsTUFBTSxDQUFDLFVBQVUsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDdEYsdUNBQXVDO1FBQ3ZDLElBQUksTUFBTSxDQUFDLFVBQVUsS0FBSyxVQUFVLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLHlCQUF5QixFQUFFLENBQUMsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLGVBQWUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3BJLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDeEQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFDRCw2REFBNkQ7UUFDN0QsSUFBSSxNQUFNLENBQUMsVUFBVSxLQUFLLFVBQVUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxJQUFLLENBQUMsTUFBTSxDQUFD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QztZQUVELGFBQWEsR0FBRyxTQUFTLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO2tGQTdQUSxpQkFBaUI7dUVBQWpCLGlCQUFpQixXQUFqQixpQkFBaUIsbUJBRkosTUFBTTs7aUZBRW5CLGlCQUFpQjtjQUY3QixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNEZWZpbmVkIH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtkZWJvdW5jZSwgZ2V0LCBpc0VtcHR5LCBpc0VxdWFsfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmRlY2xhcmUgY29uc3QgJDtcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5cbmV4cG9ydCBjbGFzcyBQYWdpbmF0aW9uU2VydmljZSB7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB1cGRhdGVkIGZpZWxkcyBhbmQgdGhlIGN1cnJlbnQgcGFnZSBpbmRleCB3aGVuIG5hdmlnYXRlZCB0byB0aGUgbmV4dCBzZXQgb2YgZGF0YVxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJlbnQgdGFibGUgLyBsaXN0IGluc3RhbmNlXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG5ld1ZhbCB1cGRhdGVkIGZpZWxkcyBpbmZvXG4gICAgICogQHJldHVybnMgZmllbGREZWZzIGFuZCBjdXJyZW50IHBhZ2UgaW5kZXhcbiAgICAgKi9cbiAgICBwdWJsaWMgdXBkYXRlRmllbGRzT25QYWdpbmF0aW9uKHBhcmVudCwgbmV3VmFsKSB7XG4gICAgICAgIGxldCBmaWVsZERlZnMgPSBwYXJlbnQud2lkZ2V0VHlwZSA9PT0gJ3dtLXRhYmxlJyA/IHBhcmVudC5ncmlkRGF0YSA6IHBhcmVudC5maWVsZERlZnM7XG4gICAgICAgIC8vIHJlbW92ZSB0aGUgZGVsZXRlZCByb3cgZnJvbSB0aGUgbGlzdFxuICAgICAgICBpZiAocGFyZW50LndpZGdldFR5cGUgPT09ICd3bS10YWJsZScgJiYgKHBhcmVudC5ncmlkT3B0aW9ucy5pc05hdlR5cGVTY3JvbGxPck9uZGVtYW5kKCkpICYmIHBhcmVudC5ncmlkT3B0aW9ucy5kZWxldGVkUm93SW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBmaWVsZERlZnMuc3BsaWNlKHBhcmVudC5ncmlkT3B0aW9ucy5kZWxldGVkUm93SW5kZXgsIDEpO1xuICAgICAgICAgICAgcGFyZW50LmdyaWRPcHRpb25zLnNldERlbGV0ZWRSb3dJbmRleCgtMSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVzZXQgZmllbGREZWZzIGlmIGxhc3QgYWN0aW9uIHBlcmZvcm1lZCBpcyBzZWFyY2ggb3Igc29ydFxuICAgICAgICBpZiAocGFyZW50LndpZGdldFR5cGUgPT09ICd3bS10YWJsZScgJiYgKHBhcmVudC5ncmlkT3B0aW9ucy5pc05hdlR5cGVTY3JvbGxPck9uZGVtYW5kKCkpICAmJiAocGFyZW50LmdyaWRPcHRpb25zLmxhc3RBY3Rpb25QZXJmb3JtZWQgPT09IHBhcmVudC5ncmlkT3B0aW9ucy5BQ1RJT05TLlNFQVJDSF9PUl9TT1JUIHx8IHBhcmVudC5ncmlkT3B0aW9ucy5sYXN0QWN0aW9uUGVyZm9ybWVkID09PSBwYXJlbnQuZ3JpZE9wdGlvbnMuQUNUSU9OUy5GSUxURVJfQ1JJVEVSSUEgfHwgcGFyZW50LmdyaWRPcHRpb25zLmxhc3RBY3Rpb25QZXJmb3JtZWQgPT09IHBhcmVudC5ncmlkT3B0aW9ucy5BQ1RJT05TLkRBVEFTRVRfVVBEQVRFKSkge1xuICAgICAgICAgICAgZmllbGREZWZzID0gW107XG4gICAgICAgICAgICBwYXJlbnQuZ3JpZE9wdGlvbnMuc2V0Q3VycmVudFBhZ2UoMSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGN1cnJlbnRQYWdlO1xuICAgICAgICBpZiAocGFyZW50LndpZGdldFR5cGUgPT09ICd3bS10YWJsZScpIHtcbiAgICAgICAgICAgIGN1cnJlbnRQYWdlID0gcGFyZW50LmdyaWRPcHRpb25zLnNob3d2aWV3bGVzc2J1dHRvbiAmJiAocGFyZW50LmdyaWRPcHRpb25zLm1vZGUgPT09ICd2aWV3bGVzcycpID8gcGFyZW50LmdyaWRPcHRpb25zLmdldEN1cnJlbnRQYWdlKCkgOiBwYXJlbnQuY3VycmVudFBhZ2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjdXJyZW50UGFnZSA9IHBhcmVudC5jdXJyZW50UGFnZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkYXRhTmF2aWdhdG9yID0gcGFyZW50LmRhdGFOYXZpZ2F0b3I7XG4gICAgICAgIGNvbnN0IHBhZ2VzaXplID0gcGFyZW50LnBhZ2VzaXplO1xuXG4gICAgICAgIGlmICghaXNEZWZpbmVkKGZpZWxkRGVmcykgfHwgZGF0YU5hdmlnYXRvci5pc0ZpcnN0UGFnZSgpKSB7XG4gICAgICAgICAgICBmaWVsZERlZnMgPSBbXTtcbiAgICAgICAgICAgIGN1cnJlbnRQYWdlID0gMTtcbiAgICAgICAgfSBlbHNlIGlmIChmaWVsZERlZnMubGVuZ3RoIC8gcGFnZXNpemUgPD0gZGF0YU5hdmlnYXRvci5wYWdlQ291bnQpIHtcbiAgICAgICAgICAgIGxldCBpdGVtc0xlbmd0aCxcbiAgICAgICAgICAgICAgICBpdGVtc1RvUHVzaCA9IFtdO1xuICAgICAgICAgICAgLy8gd2UgcHVzaCB0aGUgbmV3VmFsIG9ubHkgd2hlbiBkbi5jdXJyZW50UGFnZSBnZXRzIGluY3JlbWVudGVkIGJlY2F1c2UgdGhhdCBpcyB3aGVuIG5ldyBpdGVtcyBnZXRzIGFkZGVkIHRvIG5ld1ZhbFxuICAgICAgICAgICAgaWYgKGZpZWxkRGVmcy5sZW5ndGggPT09IGN1cnJlbnRQYWdlICogcGFnZXNpemUgJiYgKGN1cnJlbnRQYWdlICsgMSkgPT09IGRhdGFOYXZpZ2F0b3IuZG4uY3VycmVudFBhZ2UpIHtcbiAgICAgICAgICAgICAgICBpdGVtc1RvUHVzaCA9IG5ld1ZhbDtcbiAgICAgICAgICAgICAgICBjdXJyZW50UGFnZSsrO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmaWVsZERlZnMubGVuZ3RoIDwgY3VycmVudFBhZ2UgKiBwYWdlc2l6ZSkge1xuICAgICAgICAgICAgICAgIGlmICgoZmllbGREZWZzLmxlbmd0aCA9PT0gKGN1cnJlbnRQYWdlIC0gMSkgKiBwYWdlc2l6ZSkgJiYgKChjdXJyZW50UGFnZSAtIDEpID09PSBkYXRhTmF2aWdhdG9yLmRuLmN1cnJlbnRQYWdlKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiBkbi5jdXJyZW50UGFnZSBpcyBub3QgaW5jcmVtZW50ZWQgc3RpbGwgb25seSBvbGQgbmV3VmFsIGlzIHByZXNlbnQgaGVuY2Ugd2UgcHVzaCBlbXB0eSBhcnJheVxuICAgICAgICAgICAgICAgICAgICBuZXdWYWwgPSBbXTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGFOYXZpZ2F0b3IuZGF0YVNpemUgPCBjdXJyZW50UGFnZSAqIHBhZ2VzaXplKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIG51bWJlciBvZiBlbGVtZW50cyBhZGRlZCB0byBkYXRhTmF2aWdhdG9yIGlzIGxlc3MgdGhhbiAgcHJvZHVjdCBvZiBjdXJyZW50UGFnZSBhbmQgcGFnZVNpemUgd2Ugb25seSBhZGQgZWxlbWVudHMgZXh0cmEgZWxlbWVudHMgYWRkZWRcbiAgICAgICAgICAgICAgICAgICAgaXRlbXNMZW5ndGggPSBkYXRhTmF2aWdhdG9yLmRhdGFTaXplIC0gZmllbGREZWZzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiBudW1iZXIgb2YgZWxlbWVudHMgYWRkZWQgdG8gZGF0YU5hdmlnYXRvciBpcyBncmVhdGVyIHRoYW4gIHByb2R1Y3Qgb2YgY3VycmVudFBhZ2UgYW5kIHBhZ2VTaXplIHdlIGFkZCBlbGVtZW50cyB0aGUgZXh0cmEgZWxlbWVudHMgaW4gbmV3VmFsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zTGVuZ3RoID0gY3VycmVudFBhZ2UgKiBwYWdlc2l6ZSAtIGZpZWxkRGVmcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBuZXdWYWwubGVuZ3RoIC0gaXRlbXNMZW5ndGg7XG4gICAgICAgICAgICAgICAgaXRlbXNUb1B1c2ggPSBuZXdWYWwuc2xpY2Uoc3RhcnRJbmRleCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkRGVmcy5sZW5ndGggPT09IGN1cnJlbnRQYWdlICogcGFnZXNpemUgJiYgY3VycmVudFBhZ2UgPT09IGRhdGFOYXZpZ2F0b3IuZG4uY3VycmVudFBhZ2UpIHtcbiAgICAgICAgICAgICAgICAvLyBpZiBkbi5jdXJyZW50UGFnZSBpcyBub3QgaW5jcmVtZW50ZWQgc3RpbGwgb25seSBvbGQgbmV3VmFsIGlzIHByZXNlbnQgaGVuY2Ugd2UgcHVzaCBlbXB0eSBhcnJheVxuICAgICAgICAgICAgICAgIGl0ZW1zVG9QdXNoID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuZXdWYWwgPSBpdGVtc1RvUHVzaDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFkZCB1bmlxdWUgcmVjb3JkcyB0byBmaWVsZERlZnNcbiAgICAgICAgaWYgKHBhcmVudC53aWRnZXRUeXBlID09PSAnd20tdGFibGUnICYmIChwYXJlbnQuZ3JpZE9wdGlvbnMubGFzdEFjdGlvblBlcmZvcm1lZCA9PT0gcGFyZW50LmdyaWRPcHRpb25zLkFDVElPTlMuREVMRVRFICB8fCBwYXJlbnQuZ3JpZE9wdGlvbnMubGFzdEFjdGlvblBlcmZvcm1lZCA9PT0gcGFyZW50LmdyaWRPcHRpb25zLkFDVElPTlMuRURJVCkpIHtcbiAgICAgICAgICAgIGZpZWxkRGVmcyA9IHRoaXMuZ2V0VW5pcXVlUmVjb3Jkc0luRmllbGREZWYoZmllbGREZWZzLCBuZXdWYWwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmllbGREZWZzID0gWy4uLmZpZWxkRGVmcywgLi4ubmV3VmFsXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW2ZpZWxkRGVmcywgY3VycmVudFBhZ2VdO1xuICAgIH1cblxuICAgIC8vIEFkZCB0aGUgdW5pcXVlIHJlY29yZHMgdG8gZmllbGREZWZzXG4gICAgcHVibGljIGdldFVuaXF1ZVJlY29yZHNJbkZpZWxkRGVmKGZpZWxkRGVmcywgbmV3VmFsKSB7XG4gICAgICAgIGxldCBmbGFnID0gZmFsc2U7XG4gICAgICAgIGlmICghZmllbGREZWZzLmxlbmd0aCkge1xuICAgICAgICAgICAgZmllbGREZWZzID0gbmV3VmFsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3VmFsLmZvckVhY2goZnVuY3Rpb24gKG5ld09iaikge1xuICAgICAgICAgICAgICAgIGZsYWcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBmaWVsZERlZnMuZm9yRWFjaChmdW5jdGlvbiAob2JqKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0VxdWFsKG5ld09iaiwgb2JqKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmxhZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoZmxhZyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGREZWZzLnB1c2gobmV3T2JqKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmllbGREZWZzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFRoaXMgZnVuY3Rpb24gcmVnaXN0ZXJzIHNjcm9sbCBldmVudHMgb24gdGhlIHNjcm9sbGFibGUgZWwsIGlmIHRoZSBwYWdlIGRvZXNuJ3QgaGF2ZSBhIHNjcm9sbCBlbCB0aGVuIHdoZWVsIGV2ZW50IGlzIHJlZ2lzdGVyZWQgb24gdGhlIHJlcXVlc3RlZCBub2RlXG4gICAgICogQHBhcmFtIHtvYmplY3R9IHBhcmVudCB0YWJsZSAvIGxpc3QgaW5zdGFuY2VcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbm9kZU5hbWUgdGJvZHkvdWxcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZGVib3VuY2VOdW0gcHJvdmlkZWQgdG8gbG9kYXNoIGRlYm91bmNlXG4gICAgICogQHJldHVybnMgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBiaW5kU2Nyb2xsRXZ0KHBhcmVudCwgbm9kZU5hbWUsIGRlYm91bmNlTnVtKSB7XG4gICAgICAgIGNvbnN0IGRhdGFOYXZpZ2F0b3IgPSBwYXJlbnQuZGF0YU5hdmlnYXRvcjtcbiAgICAgICAgY29uc3QgJGVsID0gcGFyZW50LiRlbGVtZW50O1xuICAgICAgICBjb25zdCAkcm9vdEVsID0gJGVsLmZpbmQobm9kZU5hbWUpO1xuICAgICAgICBjb25zdCAkZmlyc3RDaGlsZCA9ICRyb290RWwuY2hpbGRyZW4oKS5maXJzdCgpO1xuXG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBsZXQgJHNjcm9sbFBhcmVudDtcbiAgICAgICAgbGV0IHNjcm9sbE5vZGU7XG4gICAgICAgIGxldCBsYXN0U2Nyb2xsVG9wID0gMDtcblxuICAgICAgICBpZiAoISRmaXJzdENoaWxkLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgJHNjcm9sbFBhcmVudCA9ICRmaXJzdENoaWxkLnNjcm9sbFBhcmVudChmYWxzZSk7XG5cbiAgICAgICAgaWYgKCRzY3JvbGxQYXJlbnRbMF0gPT09IGRvY3VtZW50KSB7XG4gICAgICAgICAgICBzY3JvbGxOb2RlID0gZG9jdW1lbnQuYm9keTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNjcm9sbE5vZGUgPSAkc2Nyb2xsUGFyZW50WzBdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaGFzIHNjcm9sbFxuICAgICAgICBpZiAoc2Nyb2xsTm9kZS5zY3JvbGxIZWlnaHQgPiBzY3JvbGxOb2RlLmNsaWVudEhlaWdodCkge1xuICAgICAgICAgICAgJHNjcm9sbFBhcmVudFxuICAgICAgICAgICAgICAgIC5lYWNoKChpbmRleDogbnVtYmVyLCBub2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHNjcm9sbFRvcCBwcm9wZXJ0eSBpcyAwIG9yIHVuZGVmaW5lZCBmb3IgYm9keSBpbiBJRSwgc2FmYXJpLlxuICAgICAgICAgICAgICAgICAgICBsYXN0U2Nyb2xsVG9wID0gbm9kZSA9PT0gZG9jdW1lbnQgPyAobm9kZS5ib2R5LnNjcm9sbFRvcCB8fCAkKHdpbmRvdykuc2Nyb2xsVG9wKCkpIDogKG5vZGUgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbFRvcDtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5vZmYoJ3Njcm9sbC5zY3JvbGxfZXZ0JylcbiAgICAgICAgICAgICAgICAub24oJ3Njcm9sbC5zY3JvbGxfZXZ0JywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0ID0gZXZ0LnRhcmdldDtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNsaWVudEhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRvdGFsSGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBsZXQgc2Nyb2xsVG9wO1xuICAgICAgICAgICAgICAgICAgICAvLyBzY3JvbGxpbmdFbGVtZW50IGlzIHVuZGVmaW5lZCBmb3IgSUUsIHNhZmFyaS4gdXNlIGJvZHkgYXMgdGFyZ2V0IEVsZW1lbnRcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0ID09PSBkb2N1bWVudCA/ICh0YXJnZXQuc2Nyb2xsaW5nRWxlbWVudCB8fCBkb2N1bWVudC5ib2R5KSA6IHRhcmdldDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudC53aWRnZXRUeXBlID09PSAnd20tdGFibGUnICYmIHBhcmVudC5ncmlkT3B0aW9ucy5pc05hdlR5cGVTY3JvbGxPck9uZGVtYW5kKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNsaWVudEhlaWdodCA9IHRhcmdldC5jbGllbnRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIHRvdGFsSGVpZ2h0ID0gdGFyZ2V0LnNjcm9sbEhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9wID0gdGFyZ2V0ID09PSBkb2N1bWVudC5ib2R5ID8gJCh3aW5kb3cpLnNjcm9sbFRvcCgpIDogdGFyZ2V0LnNjcm9sbFRvcDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoKGxhc3RTY3JvbGxUb3AgPCBzY3JvbGxUb3ApICYmICh0b3RhbEhlaWdodCAqIDAuOSA8IHNjcm9sbFRvcCArIGNsaWVudEhlaWdodCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykub2ZmKCdzY3JvbGwuc2Nyb2xsX2V2dCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kZWJvdW5jZWRGZXRjaE5leHREYXRhc2V0T25TY3JvbGwoZGF0YU5hdmlnYXRvciwgZGVib3VuY2VOdW0sIHBhcmVudCkoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGxhc3RTY3JvbGxUb3AgPSBzY3JvbGxUb3A7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAkcm9vdEVsLm9mZignd2hlZWwuc2Nyb2xsX2V2dCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gaWYgdGhlcmUgaXMgbm8gc2Nyb2xsYWJsZSBlbGVtZW50IHJlZ2lzdGVyIHdoZWVsIGV2ZW50IG9uIHVsIGVsZW1lbnRcbiAgICAgICAgICAgICRyb290RWwub24oJ3doZWVsLnNjcm9sbF9ldnQnLCBlID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocGFyZW50LndpZGdldFR5cGUgPT09ICd3bS10YWJsZScgJiYgcGFyZW50LmdyaWRPcHRpb25zLmlzTmF2VHlwZVNjcm9sbE9yT25kZW1hbmQoKSkge1xuICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZS5vcmlnaW5hbEV2ZW50LmRlbHRhWSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgJHJvb3RFbC5vZmYoJ3doZWVsLnNjcm9sbF9ldnQnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWJvdW5jZWRGZXRjaE5leHREYXRhc2V0T25TY3JvbGwoZGF0YU5hdmlnYXRvciwgZGVib3VuY2VOdW0sIHBhcmVudCkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFRoaXMgZnVuY3Rpb24gY2FsbHMgZmV0Y2hOZXh0RGF0YXNldE9uU2Nyb2xsIGZuIG9uIGRlYm91bmNlZCB0aW1lXG4gICAgICogQHBhcmFtIHtvYmplY3R9IGRhdGFOYXZpZ2F0b3IgcGFnaW5hdGlvbiBpbnN0YW5jZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkZWJvdW5jZU51bSBwcm92aWRlZCB0byBsb2Rhc2ggZGVib3VuY2VcbiAgICAgKiBAcmV0dXJucyBkZWJvdW5jZWQgZnVuY3Rpb24gZGVmaW5pdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBkZWJvdW5jZWRGZXRjaE5leHREYXRhc2V0T25TY3JvbGwoZGF0YU5hdmlnYXRvciwgZGVib3VuY2VOdW0sIHBhcmVudCkge1xuICAgICAgICByZXR1cm4gZGVib3VuY2UoKCkgPT4gdGhpcy5mZXRjaE5leHREYXRhc2V0T25TY3JvbGwoZGF0YU5hdmlnYXRvciwgcGFyZW50KSwgZGVib3VuY2VOdW0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFRoaXMgZnVuY3Rpb24gY2FsbHMgbmV4dCBzZXQgb2YgZGF0YSB3aGVuIG5hdmlnYXRlZCB0byBuZXh0IHBhZ2VcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gZGF0YU5hdmlnYXRvciBwYWdpbmF0aW9uIGluc3RhbmNlXG4gICAgICogQHJldHVybnMgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBmZXRjaE5leHREYXRhc2V0T25TY3JvbGwoZGF0YU5hdmlnYXRvciwgcGFyZW50KSB7XG4gICAgICAgIC8vIExvYWQgbmV4dCBzZXQgb2YgZGF0YSBvbmx5IGFmdGVyIHRoZSBzdWNjZXNzIG9mIGN1cnJlbnQgY2FsbFxuICAgICAgICBpZiAoIXBhcmVudC52YXJpYWJsZUluZmxpZ2h0KSB7XG4gICAgICAgICAgICAvLyBGaXggZm9yIFtXTVMtMjMyNjNdOiBzZXQgJ2lzTmV4dFBhZ2VEYXRhJyBmbGFnIHRvIHRydWUgJiAnaXNEYXRhVXBkYXRlZEJ5VXNlcicgdG8gZmFsc2UgYXMgbmV4dCBwYWdlIGRhdGEgaXMgYmVpbmcgcmVuZGVyZWQgb24gU2Nyb2xsXG4gICAgICAgICAgICBpZiAocGFyZW50LndpZGdldFR5cGUgPT09ICd3bS10YWJsZScpIHtcbiAgICAgICAgICAgICAgICAvLyBzZXQgaXNOZXh0UGFnZURhdGEgZmxhZyB0byB0cnVlIGFzIG5leHQgcGFnZSBkYXRhIGlzIGJlaW5nIHJlbmRlcmVkXG4gICAgICAgICAgICAgICAgcGFyZW50LmdyaWRPcHRpb25zLnNldElzTmV4dFBhZ2VEYXRhKHRydWUpO1xuICAgICAgICAgICAgICAgIHBhcmVudC5ncmlkT3B0aW9ucy5zZXRJc0RhdGFVcGRhdGVkQnlVc2VyKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRhdGFOYXZpZ2F0b3IubmF2aWdhdGVQYWdlKCduZXh0Jyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBUaGlzIGZ1bmN0aW9uIHJlZ2lzdGVycyBzY3JvbGwgZXZlbnRzIG9uIHRoZSBzY3JvbGxhYmxlIGVsIGZvciBtb2JpbGUgcHJvamVjdHNcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gcGFyZW50IGxpc3QgaW5zdGFuY2VcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZGVib3VuY2VOdW0gcHJvdmlkZWQgdG8gbG9kYXNoIGRlYm91bmNlXG4gICAgICogQHJldHVybnMgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBiaW5kSVNjcm9sbEV2dChwYXJlbnQsIGRlYm91bmNlTnVtKSB7XG4gICAgICAgIGNvbnN0ICRlbGVtZW50ID0gcGFyZW50LiRlbGVtZW50O1xuICAgICAgICBjb25zdCBkYXRhTmF2aWdhdG9yID0gcGFyZW50LmRhdGFOYXZpZ2F0b3I7XG4gICAgICAgIGNvbnN0IGFwcCA9IHBhcmVudC5hcHA7XG5cbiAgICAgICAgY29uc3QgJHNjcm9sbFBhcmVudCA9ICRlbGVtZW50LmNsb3Nlc3QoJ1t3bXNtb290aHNjcm9sbD1cInRydWVcIl0nKTtcblxuICAgICAgICBjb25zdCBpU2Nyb2xsID0gZ2V0KCRzY3JvbGxQYXJlbnRbMF0sICdpc2Nyb2xsJyk7XG5cbiAgICAgICAgLy8gd2hlbiBpc2Nyb2xsIGlzIG5vdCBpbml0aWFsaXNlZCB0aGUgbm90aWZ5IHRoZSBzbW9vdGhzY3JvbGwgYW5kIHN1YnNjcmliZSB0byB0aGUgaXNjcm9sbCB1cGRhdGVcbiAgICAgICAgaWYgKCFpU2Nyb2xsKSB7XG4gICAgICAgICAgICBjb25zdCBpU2Nyb2xsU3Vic2NyaXB0aW9uID0gYXBwLnN1YnNjcmliZSgnaXNjcm9sbC11cGRhdGUnLCAoX2VsKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc0VtcHR5KF9lbCkgJiYgX2VsLmlzU2FtZU5vZGUoJHNjcm9sbFBhcmVudFswXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRJc2Nyb2xsSGFuZGxlcnMoJHNjcm9sbFBhcmVudFswXSwgZGF0YU5hdmlnYXRvciwgZGVib3VuY2VOdW0pO1xuICAgICAgICAgICAgICAgICAgICBpU2Nyb2xsU3Vic2NyaXB0aW9uKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhcHAubm90aWZ5KCduby1pc2Nyb2xsJywgJHNjcm9sbFBhcmVudFswXSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRJc2Nyb2xsSGFuZGxlcnMoJHNjcm9sbFBhcmVudFswXSwgZGF0YU5hdmlnYXRvciwgZGVib3VuY2VOdW0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFRoaXMgZnVuY3Rpb24gcmVnaXN0ZXJzIHNjcm9sbEVuZCBldmVudCBvbiB0aGUgc2Nyb2xsYWJsZSBlbCBmb3IgbW9iaWxlIHByb2plY3RzXG4gICAgICogQHBhcmFtIHtvYmplY3R9IGVsIHNjcm9sbGFibGUgZWxlbWVudCBzY29wZVxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBkYXRhTmF2aWdhdG9yIHBhZ2luYXRpb24gaW5zdGFuY2VcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZGVib3VuY2VOdW0gcHJvdmlkZWQgdG8gbG9kYXNoIGRlYm91bmNlXG4gICAgICogQHJldHVybnMgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRJc2Nyb2xsSGFuZGxlcnMoZWwsIGRhdGFOYXZpZ2F0b3IsIGRlYm91bmNlTnVtKSB7XG4gICAgICAgIGxldCBsYXN0U2Nyb2xsVG9wID0gMDtcbiAgICAgICAgY29uc3Qgd3JhcHBlciA9IGdldChlbC5pc2Nyb2xsLCAnd3JhcHBlcicpO1xuICAgICAgICBjb25zdCBzZWxmID0gZWwuaXNjcm9sbDtcblxuICAgICAgICBlbC5pc2Nyb2xsLm9uKCdzY3JvbGxFbmQnLCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjbGllbnRIZWlnaHQgPSB3cmFwcGVyLmNsaWVudEhlaWdodCxcbiAgICAgICAgICAgICAgICB0b3RhbEhlaWdodCA9IHdyYXBwZXIuc2Nyb2xsSGVpZ2h0LFxuICAgICAgICAgICAgICAgIHNjcm9sbFRvcCA9IE1hdGguYWJzKGVsLmlzY3JvbGwueSk7XG5cbiAgICAgICAgICAgIGlmICgobGFzdFNjcm9sbFRvcCA8IHNjcm9sbFRvcCkgJiYgKHRvdGFsSGVpZ2h0ICogMC45IDwgc2Nyb2xsVG9wICsgY2xpZW50SGVpZ2h0KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVib3VuY2VkRmV0Y2hOZXh0RGF0YXNldE9uU2Nyb2xsKGRhdGFOYXZpZ2F0b3IsIGRlYm91bmNlTnVtLCBwYXJlbnQpKCk7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuaW5kaWNhdG9yUmVmcmVzaCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmluZGljYXRvclJlZnJlc2goKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxhc3RTY3JvbGxUb3AgPSBzY3JvbGxUb3A7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,4 +1,5 @@
1
1
  import { Injectable } from '@angular/core';
2
+ import { clone, get, includes, isArray, isEmpty, isObject, merge } from "lodash-es";
2
3
  import * as i0 from "@angular/core";
3
4
  export class StatePersistence {
4
5
  constructor() {
@@ -80,7 +81,7 @@ export class StatePersistence {
80
81
  if (parsedStateInfo && widget && widget.getAppInstance().activePageName && (mode.toLowerCase() === 'localstorage' || mode.toLowerCase() === 'sessionstorage')) {
81
82
  parsedStateInfo = parsedStateInfo[widget.getAppInstance().activePageName];
82
83
  }
83
- if (_.get(parsedStateInfo, this.WIDGET_STATE_KEY)) {
84
+ if (get(parsedStateInfo, this.WIDGET_STATE_KEY)) {
84
85
  const stateKey = this.getNestedPath(widget.viewParent, widget.getWidget().name);
85
86
  return parsedStateInfo[this.WIDGET_STATE_KEY][stateKey];
86
87
  }
@@ -233,7 +234,7 @@ export class StatePersistence {
233
234
  parsedObj = stateObj[widget.getAppInstance().activePageName];
234
235
  }
235
236
  else {
236
- parsedObj = _.clone(stateObj);
237
+ parsedObj = clone(stateObj);
237
238
  }
238
239
  if (stateParam) {
239
240
  if (parsedObj && !parsedObj[stateParam]) {
@@ -242,9 +243,9 @@ export class StatePersistence {
242
243
  else if (!parsedObj) {
243
244
  parsedObj = { [stateParam]: {} };
244
245
  }
245
- if (_.isObject(val) && !_.isArray(val)) {
246
+ if (isObject(val) && !isArray(val)) {
246
247
  parsedObj[stateParam][key] = parsedObj[stateParam][key] || {};
247
- _.merge(parsedObj[stateParam][key], val);
248
+ merge(parsedObj[stateParam][key], val);
248
249
  }
249
250
  else {
250
251
  parsedObj[stateParam][key] = val;
@@ -257,9 +258,9 @@ export class StatePersistence {
257
258
  else if (!parsedObj) {
258
259
  parsedObj = { [key]: {} };
259
260
  }
260
- if (_.isObject(val) && !_.isArray(val)) {
261
+ if (isObject(val) && !isArray(val)) {
261
262
  parsedObj[key] = parsedObj[key] || {};
262
- _.merge(parsedObj[key], val);
263
+ merge(parsedObj[key], val);
263
264
  }
264
265
  else {
265
266
  parsedObj[key] = val;
@@ -346,28 +347,28 @@ export class StatePersistence {
346
347
  parsedObj = stateObj[widget.getAppInstance().activePageName];
347
348
  }
348
349
  else {
349
- parsedObj = _.clone(stateObj);
350
+ parsedObj = clone(stateObj);
350
351
  }
351
- if (!_.get(parsedObj, [stateParam]) && !_.get(parsedObj, key)) {
352
+ if (!get(parsedObj, [stateParam]) && !get(parsedObj, key)) {
352
353
  return;
353
354
  }
354
355
  // Fix for [WMS-24698]: when table is inside a prefab, state persistence key is like "TestLabel_11.TestLabel_1.staticVariable1Table1"
355
- // _.get(parsedObj, stateParam + '.' + key) is undefined so using (parsedObj && parsedObj[stateParam] && parsedObj[stateParam][key]) condition.
356
- if (_.get(parsedObj, stateParam + '.' + key) || (parsedObj && parsedObj[stateParam] && parsedObj[stateParam][key])) {
356
+ // get(parsedObj, stateParam + '.' + key) is undefined so using (parsedObj && parsedObj[stateParam] && parsedObj[stateParam][key]) condition.
357
+ if (get(parsedObj, stateParam + '.' + key) || (parsedObj && parsedObj[stateParam] && parsedObj[stateParam][key])) {
357
358
  if (subParam) {
358
359
  delete parsedObj[stateParam][key][subParam];
359
360
  }
360
361
  else {
361
362
  delete parsedObj[stateParam][key];
362
363
  }
363
- if (_.isEmpty(parsedObj[stateParam][key])) {
364
+ if (isEmpty(parsedObj[stateParam][key])) {
364
365
  delete parsedObj[stateParam][key];
365
366
  }
366
- if (_.isEmpty(parsedObj[stateParam])) {
367
+ if (isEmpty(parsedObj[stateParam])) {
367
368
  delete parsedObj[stateParam];
368
369
  }
369
370
  }
370
- else if (!stateParam && _.get(parsedObj, key)) {
371
+ else if (!stateParam && get(parsedObj, key)) {
371
372
  delete parsedObj[key];
372
373
  }
373
374
  // for Local and Session Storage, wrap state object inside page name so that widget name conflicts don't arise between pages.
@@ -389,9 +390,9 @@ export class StatePersistence {
389
390
  return;
390
391
  }
391
392
  const decodedURI = decodeURIComponent(window.location.href);
392
- if (_.isEmpty(parsedObj)) {
393
+ if (isEmpty(parsedObj)) {
393
394
  url = decodedURI.replace(/(wm_state=).*?(&|$)/, '' + '$2');
394
- if (_.includes(['&', '?'], url.charAt(url.length - 1))) {
395
+ if (includes(['&', '?'], url.charAt(url.length - 1))) {
395
396
  url = url.replace(url.charAt(url.length - 1), '');
396
397
  }
397
398
  }
@@ -496,4 +497,4 @@ export class StatePersistence {
496
497
  type: Injectable,
497
498
  args: [{ providedIn: 'root' }]
498
499
  }], null, null); })();
499
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtcGVyc2lzdGVuY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3NlcnZpY2VzL3N0YXRlLXBlcnNpc3RlbmNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLGdCQUFnQjtJQUQ3QjtRQUVZLG9CQUFlLEdBQUcsU0FBUyxDQUFDO1FBQzVCLDBCQUFxQixHQUFHLEVBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFDLENBQUM7UUFDekUscUJBQWdCLEdBQUcsSUFBSSxDQUFDO0tBeWVuQztJQXZlRzs7O09BR0c7SUFDSSxpQkFBaUIsQ0FBQyxHQUFHO1FBQ3hCLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM1RCxJQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQztRQUMvQixDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0ksYUFBYSxDQUFDLFVBQWUsRUFBRSxVQUFrQixFQUFFLGFBQXNCO1FBQzVFLElBQUksR0FBRyxHQUFHLGFBQWEsSUFBSSxVQUFVLENBQUM7UUFDdEMsSUFBSSxVQUFVLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ2xFLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFV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QUssRUFBRSxHQUFHLENBQUMsQ0FBSSxZQUFZO2lCQUNuQyxPQUFPLENBQUMsSUFBSSxFQUFHLEdBQUcsQ0FBQyxDQUFJLFlBQVk7aUJBQ25DLE9BQU8sQ0FBQyxJQUFJLEVBQUcsR0FBRyxDQUFDLENBQUksWUFBWTtpQkFDbkMsT0FBTyxDQUFDLElBQUksRUFBRyxHQUFHLENBQUMsQ0FBSSxZQUFZO2lCQUNuQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFJLFlBQVk7aUJBQ25DLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUksWUFBWTthQUMzQyxDQUFDO1FBQ04sQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO2lGQTNlUSxnQkFBZ0I7dUVBQWhCLGdCQUFnQixXQUFoQixnQkFBZ0IsbUJBREgsTUFBTTs7aUZBQ25CLGdCQUFnQjtjQUQ1QixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5kZWNsYXJlIGNvbnN0IF87XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgU3RhdGVQZXJzaXN0ZW5jZSB7XG4gICAgcHJpdmF0ZSBISVNUT1JZX0hBTkRMRVIgPSAncmVwbGFjZSc7XG4gICAgcHJpdmF0ZSBISVNUT1JZX0hBTkRMRVJfVFlQRVMgPSB7J3B1c2gnOiAncHVzaFN0YXRlJywgJ3JlcGxhY2UnOiAncmVwbGFjZVN0YXRlJ307XG4gICAgcHJpdmF0ZSBXSURHRVRfU1RBVEVfS0VZID0gJ3dzJztcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHBhc3NlZCB2YWx1ZSBhcyB0aGUgSGlzdG9yeSBoYW5kbGVyIGlmIGl0IGV4aXN0cyBpbiB0aGUgSGlzdG9yeV9IYW5kbGVyX1R5cGVzIG9iamVjdFxuICAgICAqIEBwYXJhbSB2YWxcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0SGlzdG9yeUhhbmRsZXIodmFsKSB7XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLkhJU1RPUllfSEFORExFUl9UWVBFUykuaW5kZXhPZih2YWwpID4gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuSElTVE9SWV9IQU5ETEVSID0gdmFsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIHVuaXF1ZSBrZXkgZm9yIHNldHRpbmcgc3RhdGUgcGFyYW0gYnkgdXNpbmcgdGhlIHZpZXdQYXJlbnQgcHJvcGVydHkgb2YgYSB3aWRnZXRcbiAgICAgKiBzbyB0aGF0IG5hbWUgY29uZmxpY3RzIGFyZSBhdm9pZGVkIHdoZW4gdGhlIHNhbWUgd2lkZ2V0IG5hbWUgaXNcbiAgICAgKiBwcmVzZW50IGluc2lkZSBhIFBhZ2UsIGEgUGFydGlhbCB3aXRoaW4gYSBQYWdlIG9yIGEgUHJlZmFiIHdpdGhpbiBhIFBhZ2UgYW5kIHNvIG9uLlxuICAgICAqIEUuZy46XG4gICAgICogaWYgYSBwYWdlIGhhcyBhIHRhYnMgd2lkZ2V0IHdpdGggdGhlIG5hbWUgdGFiczEsIGEgcGFydGlhbCBQYXJ0aWFsMShpbnNpZGUgY29udGFpbmVyMSkgaW5jbHVzaW9uIHdpdGhpbiB3aGljaFxuICAgICAqIHRoZXJlIGlzIGEgdGFicyB3aXRoIG5hbWUgdGFiczEgYW5kIGEgcHJlZmFiIE15UHJlZmFiIGluY2x1c2lvbiB3aXRoIGEgdGFicyB3aWRnZXQgd2l0aCB0aGUgbmFtZSB0YWJzMSxcbiAgICAgKiBnZXROZXN0ZWRQYXRoIHdpbGwgcmV0dXJuIHRhYnMxLCBjb250YWluZXIxLlBhcnRpYWwxLnRhYnMxIGFuZCBNeVByZWZhYjEuTXlQcmVmYWIudGFiczEgcmVzcGVjdGl2ZWx5LlxuICAgICAqIEBwYXJhbSB2aWV3UGFyZW50XG4gICAgICogQHBhcmFtIHdpZGdldE5hbWVcbiAgICAgKiBAcGFyYW0gY3VycmVudE91dHB1dFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXROZXN0ZWRQYXRoKHZpZXdQYXJlbnQ6IGFueSwgd2lkZ2V0TmFtZTogc3RyaW5nLCBjdXJyZW50T3V0cHV0Pzogc3RyaW5nKSB7XG4gICAgICAgIGxldCBvdXQgPSBjdXJyZW50T3V0cHV0IHx8IHdpZGdldE5hbWU7XG4gICAgICAgIGlmICh2aWV3UGFyZW50ICYmICh2aWV3UGFyZW50LnByZWZhYk5hbWUgfHwgdmlld1BhcmVudC5wYXJ0aWFsTmFtZSkpIHtcbiAgICAgICAgICAgIG91dCA9IG91dC5sZW5ndGggPiAwID8gb3V0ICsgJy4nICsgKHZpZXdQYXJlbnQucHJlZmFiTmFtZSB8fCB2aWV3UGFyZW50LnBhcnRpYWxOYW1lKSA6ICh2aWV3UGFyZW50LnByZWZhYk5hbWUgfHwgdmlld1BhcmVudC5wYXJ0aWFsTmFtZSk7XG4gICAgICAgICAgICAvLyBzYW1lIHBhcnRpYWwvcHJlZmFiIGNhbiBiZSBkcm9wcGVkIG11bHRpcGxlIHRpbWVzIGluIGEgcGFnZS4gQXBwZW5kaW5nIGNvbnRhaW5lcidzIG5hbWUgZm9yIHVuaXF1ZW5lc3MuXG4gICAgICAgICAgICBvdXQgPSBvdXQgKyAnLicgKyB2aWV3UGFyZW50LmNvbnRhaW5lcldpZGdldC5uYW1lO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TmVzdGVkUGF0aCh2aWV3UGFyZW50LmNvbnRhaW5lcldpZGdldC52aWV3UGFyZW50LCB3aWRnZXROYW1lLCBvdXQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXQuc3BsaXQoJy4nKS5yZXZlcnNlKCkuam9pbignLicpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlY29kZXMgYW5kIHBhcnNlcyB0aGUgc3RhdGUgaW5mb3JtYXRpb24gYW5kIHJldHVybnMgdGhlIHBhcnNlZCBzdGF0ZSBvYmplY3RcbiAgICAgKiBAcGFyYW0gbW9kZSA6IG9wdGlvbmFsIHBhcmFtZXRlciBpZiB0aGUgd2lkZ2V0L3ZhcmlhYmxlIHVzZXMgYSBzdGF0ZSBoYW5kbGluZyBtb2RlKHVybCwgbG9jYWwgc3RvcmFnZSwgc2Vzc2lvbiBzdG9yYWdlKVxuICAgICAqIG90aGVyIHRoYW4gdGhlIHByb2plY3QgbGV2ZWwgbW9kZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTdGF0ZUluZm9ybWF0aW9uKG1vZGUpIHtcbiAgICAgICAgbGV0IHBhcnNlZFN0YXRlSW5mbywgc3RhdGVJbmZvO1xuICAgICAgICBpZiAobW9kZS50b0xvd2VyQ2FzZSgpID09PSAndXJsJykge1xuICAgICAgICAgICAgY29uc3QgZGVjb2RlZFVSSSA9IGRlY29kZVVSSUNvbXBvbmVudCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gICAgICAgICAgICBzdGF0ZUluZm8gPSBkZWNvZGVkVVJJLm1hdGNoKC8od21fc3RhdGU9KS4qPygmfCQpLyk7XG4gICAgICAgICAgICBpZiAoc3RhdGVJbmZvKSB7XG4gICAgICAgICAgICAgICAgc3RhdGVJbmZvID0gc3RhdGVJbmZvWzBdLnJlcGxhY2UoJ3dtX3N0YXRlPScsICcnKTtcbiAgICAgICAgICAgICAgICBwYXJzZWRTdGF0ZUluZm8gPSB0aGlzLnVyaVRvSnNvbihzdGF0ZUluZm8pO1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZWRTdGF0ZUluZm87XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobW9kZS50b0xvd2VyQ2FzZSgpID09PSAnbG9jYWxzdG9yYWdlJykge1xuICAgICAgICAgICAgc3RhdGVJbmZvID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0od2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnJlcGxhY2UoL1xcLy9nLCAnJykgKyAnX3dtX3N0YXRlJyk7XG4gICAgICAgIH0gZWxzZSBpZiAobW9kZS50b0xvd2VyQ2FzZSgpID09PSAnc2Vzc2lvbnN0b3JhZ2UnKSB7XG4gICAgICAgICAgICBzdGF0ZUluZm8gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9cXC8vZywgJycpICsgJ193bV9zdGF0ZScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZUluZm8pIHtcbiAgICAgICAgICAgIHBhcnNlZFN0YXRlSW5mbyA9IEpTT04ucGFyc2Uoc3RhdGVJbmZvKTtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZWRTdGF0ZUluZm87XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSBwYXNzZWQgd2lkZ2V0IGluc3RhbmNlIGhhcyBhbnkgc3RhdGUgaW5mb3JtYXRpb24gYXZhaWxhYmxlIG9yIG5vdFxuICAgICAqIEBwYXJhbSB3aWRnZXRcbiAgICAgKiBAcGFyYW0gbW9kZSA6IG9wdGlvbmFsIHBhcmFtZXRlciBpZiB0aGUgd2lkZ2V0IHVzZXMgYSBzdGF0ZSBoYW5kbGluZyBtb2RlKHVybCwgbG9jYWwgc3RvcmFnZSwgc2Vzc2lvbiBzdG9yYWdlKVxuICAgICAqIG90aGVyIHRoYW4gdGhlIHByb2plY3QgbGV2ZWwgbW9kZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRXaWRnZXRTdGF0ZSh3aWRnZXQsIG1vZGU/KSB7XG4gICAgICAgIG1vZGUgPSBtb2RlIHx8IHRoaXMuY29tcHV0ZU1vZGUod2lkZ2V0LnN0YXRlaGFuZGxlcik7XG4gICAgICAgIGlmICghbW9kZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBwYXJzZWRTdGF0ZUluZm8gPSB0aGlzLmdldFN0YXRlSW5mb3JtYXRpb24obW9kZSk7XG4gICAgICAgIGlmIChwYXJzZWRTdGF0ZUluZm8gJiYgd2lkZ2V0ICAmJiB3aWRnZXQuZ2V0QXBwSW5zdGFuY2UoKS5hY3RpdmVQYWdlTmFtZSAmJiAobW9kZS50b0xvd2VyQ2FzZSgpID09PSAnbG9jYWxzdG9yYWdlJyB8fCBtb2RlLnRvTG93ZXJDYXNlKCkgPT09ICdzZXNzaW9uc3RvcmFnZScpKSB7XG4gICAgICAgICAgICBwYXJzZWRTdGF0ZUluZm8gPSBwYXJzZWRTdGF0ZUluZm9bd2lkZ2V0LmdldEFwcEluc3RhbmNlKCkuYWN0aXZlUGFnZU5hbWVdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChfLmdldChwYXJzZWRTdGF0ZUluZm8sIHRoaXMuV0lER0VUX1NUQVRFX0tFWSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlS2V5ID0gdGhpcy5nZXROZXN0ZWRQYXRoKHdpZGdldC52aWV3UGFyZW50LCB3aWRnZXQuZ2V0V2lkZ2V0KCkubmFtZSk7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VkU3RhdGVJbmZvW3RoaXMuV0lER0VUX1NUQVRFX0tFWV1bc3RhdGVLZXldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29tcHV0ZU1vZGUod2lkZ2V0U3RhdGVIYW5kbGVyKSB7XG4gICAgICAgIGlmICghd2lkZ2V0U3RhdGVIYW5kbGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3VybCc7XG4gICAgICAgIH0gZWxzZSBpZiAod2lkZ2V0U3RhdGVIYW5kbGVyICYmIHdpZGdldFN0YXRlSGFuZGxlci50b0xvd2VyQ2FzZSgpID09PSAnbm9uZScpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB3aWRnZXRTdGF0ZUhhbmRsZXIudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHBhc3NlZCB2YWx1ZSB0byB0aGUgc3RhdGUgaW5mb3JtYXRpb24gYnkgdXNpbmcgdGhlIHBhc3NlZCB3aWRnZXQgaW5zdGFuY2VcbiAgICAgKiBAcGFyYW0gd2lkZ2V0XG4gICAgICogQHBhcmFtIHZhbHVlXG4gICAgICogQHBhcmFtIG1vZGUgOiBvcHRpb25hbCBwYXJhbWV0ZXIgaWYgdGhlIHdpZGdldCB1c2VzIGEgc3RhdGUgaGFuZGxpbmcgbW9kZSh1cmwsIGxvY2FsIHN0b3JhZ2UsIHNlc3Npb24gc3RvcmFnZSlcbiAgICAgKiBvdGhlciB0aGFuIHRoZSBwcm9qZWN0IGxldmVsIG1vZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0V2lkZ2V0U3RhdGUod2lkZ2V0LCB2YWx1ZSwgbW9kZT8pIHtcbiAgICAgICAgY29uc3Qgc3RhdGVLZXkgPSB0aGlzLmdldE5lc3RlZFBhdGgod2lkZ2V0LnZpZXdQYXJlbnQsIHdpZGdldC5nZXRXaWRnZXQoKS5uYW1lKTtcbiAgICAgICAgbW9kZSA9IG1vZGUgfHwgdGhpcy5jb21wdXRlTW9kZSh3aWRnZXQuc3RhdGVoYW5kbGVyKTtcbiAgICAgICAgaWYgKCFtb2RlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRTdGF0ZVBhcmFtcyh0aGlzLldJREdFVF9TVEFURV9LRVksIHN0YXRlS2V5LCB2YWx1ZSwgbW9kZSwgd2lkZ2V0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIHRoZSBwYXNzZWQgd2lkZ2V04oCZcyBzdGF0ZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBTdGF0ZSBPYmplY3QuIElmIGEga2V5IGlzIHBhc3NlZCwgdGhlbiBvbmx5IHRoYXRcbiAgICAgKiBwYXJ0aWN1bGFyIGVudHJ5IHdpbGwgYmUgcmVtb3ZlZCwgbm90IGFueSBvdGhlciBlbnRyaWVzIGZvciB0aGF0IHdpZGdldC5cbiAgICAgKiBAcGFyYW0gd2lkZ2V0XG4gICAgICogQHBhcmFtIGtleVxuICAgICAqIEBwYXJhbSBtb2RlIDogb3B0aW9uYWwgcGFyYW1ldGVyIGlmIHRoZSB3aWRnZXQgdXNlcyBhIHN0YXRlIGhhbmRsaW5nIG1vZGUodXJsLCBsb2NhbCBzdG9yYWdlLCBzZXNzaW9uIHN0b3JhZ2UpXG4gICAgICogb3RoZXIgdGhhbiB0aGUgcHJvamVjdCBsZXZlbCBtb2RlXG4gICAgICovXG4gICAgcHVibGljIHJlbW92ZVdpZGdldFN0YXRlKHdpZGdldCwga2V5PywgbW9kZT8pIHtcbiAgICAgICAgbW9kZSA9IG1vZGUgfHwgdGhpcy5jb21wdXRlTW9kZSh3aWRnZXQuc3RhdGVoYW5kbGVyKTtcbiAgICAgICAgaWYgKCFtb2RlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RhdGVLZXkgPSB0aGlzLmdldE5lc3RlZFBhdGgod2lkZ2V0LnZpZXdQYXJlbnQsIHdpZGdldC5nZXRXaWRnZXQoKS5uYW1lKTtcbiAgICAgICAgdGhpcy5yZW1vdmVTdGF0ZVBhcmFtKHRoaXMuV0lER0VUX1NUQVRFX0tFWSwgc3RhdGVLZXksIGtleSwgbW9kZSwgd2lkZ2V0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBwYXNzZWQgdmFsdWUgdG8gdGhlIHN0YXRlIGluZm9ybWF0aW9uIGJ5IHVzaW5nIHRoZSBwYXNzZWQgdmFyaWFibGUgbmFtZSBhcyBrZXlcbiAgICAgKiBAcGFyYW0gdmFyaWFibGVOYW1lXG4gICAgICogQHBhcmFtIHZhbHVlXG4gICAgICogQHBhcmFtIG1vZGUgOiBvcHRpb25hbCBwYXJhbWV0ZXIgaWYgdGhlIHZhcmlhYmxlIHVzZXMgYSBzdGF0ZSBoYW5kbGluZyBtb2RlKHVybCwgbG9jYWwgc3RvcmFnZSwgc2Vzc2lvbiBzdG9yYWdlKVxuICAgICAqIG90aGVyIHRoYW4gdGhlIHByb2plY3QgbGV2ZWwgbW9kZVxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRTdGF0ZVZhcmlhYmxlKHZhcmlhYmxlTmFtZSwgdmFsdWUsIG1vZGU/KSB7XG4gICAgICAgIG1vZGUgPSBtb2RlIHx8IHRoaXMuY29tcHV0ZU1vZGUobW9kZSk7XG4gICAgICAgIGlmICghbW9kZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0U3RhdGVQYXJhbXMoJycsIHZhcmlhYmxlTmFtZSwgdmFsdWUsIG1vZGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgcGFzc2VkIHZhcmlhYmxlIG5hbWUgaGFzIGFueSBzdGF0ZSBpbmZvcm1hdGlvbiBhdmFpbGFibGUgaW4gdGhlIHVybCBvciBub3RcbiAgICAgKiBAcGFyYW0gdmFyaWFibGVOYW1lXG4gICAgICogQHBhcmFtIG1vZGUgOiBvcHRpb25hbCBwYXJhbWV0ZXIgaWYgdGhlIHZhcmlhYmxlIHVzZXMgYSBzdGF0ZSBoYW5kbGluZyBtb2RlKHVybCwgbG9jYWwgc3RvcmFnZSwgc2Vzc2lvbiBzdG9yYWdlKVxuICAgICAqIG90aGVyIHRoYW4gdGhlIHByb2plY3QgbGV2ZWwgbW9kZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTdGF0ZVZhcmlhYmxlKHZhcmlhYmxlTmFtZTogc3RyaW5nLCBtb2RlPykge1xuICAgICAgICBtb2RlID0gbW9kZSB8fCB0aGlzLmNvbXB1dGVNb2RlKG1vZGUpO1xuICAgICAgICBpZiAoIW1vZGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJzZWRTdGF0ZUluZm8gPSB0aGlzLmdldFN0YXRlSW5mb3JtYXRpb24obW9kZSk7XG4gICAgICAgIGlmIChwYXJzZWRTdGF0ZUluZm8pIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZWRTdGF0ZUluZm9bdmFyaWFibGVOYW1lXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyB0aGUgcGFzc2VkIHZhcmlhYmxl4oCZcyBzdGF0ZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBVUkwuXG4gICAgICogQHBhcmFtIHZhcmlhYmxlTmFtZVxuICAgICAqIEBwYXJhbSBtb2RlIDogb3B0aW9uYWwgcGFyYW1ldGVyIGlmIHRoZSB3aWRnZXQgdXNlcyBhIHN0YXRlIGhhbmRsaW5nIG1vZGUodXJsLCBsb2NhbCBzdG9yYWdlLCBzZXNzaW9uIHN0b3JhZ2UpXG4gICAgICogb3RoZXIgdGhhbiB0aGUgcHJvamVjdCBsZXZlbCBtb2RlXG4gICAgICovXG4gICAgcHVibGljIHJlbW92ZVN0YXRlVmFyaWFibGUodmFyaWFibGVOYW1lLCBtb2RlPykge1xuICAgICAgICBtb2RlID0gbW9kZSB8fCB0aGlzLmNvbXB1dGVNb2RlKG1vZGUpO1xuICAgICAgICBpZiAoIW1vZGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlbW92ZVN0YXRlUGFyYW0oJycsIHZhcmlhYmxlTmFtZSwgbnVsbCwgbW9kZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgcGFzc2VkIHN0YXRlIGluZm9ybWF0aW9uIGluIHRoZSB1cmwgYnkgcGFyc2luZyB0aGUgcGFzc2VkIHZhbHVlIGFuZCBjaGVja2luZ1xuICAgICAqIGl0cyB0eXBlLiBJZiBpdHMgYW4gYXJyYXkgdHlwZSwgdGhlbiB0aGUgcGFzc2VkIHZhbHVlcyB3aWxsIGJlIHB1c2hlZCBpbnRvIGFuIGFycmF5IGFuZCB0aGVuIHNldCBpbiB0aGUgc3RhdGVcbiAgICAgKiBFLmcuXG4gICAgICogQ3VycmVudCBzdGF0ZSBpbmZvcm1hdGlvbiBpcyBsaWtlIDpcbiAgICAge1xuICAgICAgIFwid2lkZ2V0X3N0YXRlXCI6IHtcbiAgICAgICAgICAgXCJUYWJsZTFcIjoge1xuICAgICAgICAgICAgICAgXCJzZWxlY3RlZEl0ZW1cIjogW1xuICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgXCJwYWdlXCI6IFwiMVwiLFxuICAgICAgICAgICAgICAgICAgIFwiaW5kZXhcIjogXCIxXCJcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgXCJwYWdpbmF0aW9uXCI6IFwiMVwiXG4gICAgICAgICB9XG4gICAgICAgICB9XG4gICAgIH1cbiAgICAgKiBJbnB1dCB2YWx1ZSB3aWxsIGJlIGxpa2U6XG4gICAgIHtcbiAgICAgICBcInNlbGVjdGVkSXRlbVwiOiBbXG4gICAgICAgICB7XG4gICAgICAgICAgIFwicGFnZVwiOiBcIjFcIixcbiAgICAgICAgICAgXCJpbmRleFwiOiBcIjJcIlxuICAgICAgICAgfVxuICAgICAgIF1cbiAgICAgfVxuXG4gICAgICogVGhpcyBwYXJzaW5nIGxvZ2ljIHdpbGwgY29udmVydCBpdCB0byB0aGUgZm9sbG93aW5nXG4gICAgIHtcbiAgICAgICBcIndpZGdldF9zdGF0ZVwiOiB7XG4gICAgICAgICAgIFwiVGFibGUxXCI6IHtcbiAgICAgICAgICAgICAgIFwic2VsZWN0ZWRJdGVtXCI6IFtcbiAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgIFwicGFnZVwiOiBcIjFcIixcbiAgICAgICAgICAgICAgICAgICBcImluZGV4XCI6IFwiMVwiXG4gICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICBcInBhZ2VcIjogXCIxXCIsXG4gICAgICAgICAgICAgICAgICAgXCJpbmRleFwiOiBcIjJcIlxuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICBdLFxuICAgICAgICAgICBcInBhZ2luYXRpb25cIjogXCIxXCJcbiAgICAgICAgIH1cbiAgICAgICAgIH1cbiAgICAgfVxuICAgICAqIEJhc2VkIG9uIGhvdyB0aGUgSElTVE9SWV9IQU5ETEVSIGlzIGNvbmZpZ3VyZWQsIHRoZSB1cGRhdGVkIHVybCB3aWxsIGVpdGhlciByZXBsYWNlIHRoZSBleGlzdGluZyB1cmwgb3JcbiAgICAgKiBwdXNoIGEgbmV3IHN0YXRlIGluIHRoZSB1cmwgc28gdGhhdCBiYWNrIGJ1dHRvbiBtYXkgdHJhY2sgZWFjaCB1cGRhdGUgdG8gdGhlIHN0YXRlLlxuICAgICAqIEBwYXJhbSBzdGF0ZVBhcmFtXG4gICAgICogQHBhcmFtIGtleVxuICAgICAqIEBwYXJhbSB2YWxcbiAgICAgKiBAcGFyYW0gbW9kZSA6IG9wdGlvbmFsIHBhcmFtZXRlciBpZiB0aGUgd2lkZ2V0L3ZhcmlhYmxlIHVzZXMgYSBzdGF0ZSBoYW5kbGluZyBtb2RlKHVybCwgbG9jYWwgc3RvcmFnZSwgc2Vzc2lvbiBzdG9yYWdlKVxuICAgICAqIG90aGVyIHRoYW4gdGhlIHByb2plY3QgbGV2ZWwgbW9kZVxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRTdGF0ZVBhcmFtcyhzdGF0ZVBhcmFtOiBzdHJpbmcsIGtleTogc3RyaW5nLCB2YWw6IGFueSwgbW9kZT8sIHdpZGdldD8pIHtcbiAgICAgICAgbGV0IHVybCA9ICcnLCBwYXJzZWRPYmo7XG4gICAgICAgIGNvbnN0IHN0YXRlT2JqID0gdGhpcy5nZXRTdGF0ZUluZm9ybWF0aW9uKG1vZGUpO1xuICAgICAgICBpZiAod2lkZ2V0ICYmIHN0YXRlT2JqICYmIHdpZGdldC5nZXRBcHBJbnN0YW5jZSgpLmFjdGl2ZVBhZ2VOYW1lICYmIChtb2RlLnRvTG93ZXJDYXNlKCkgPT09ICdsb2NhbHN0b3JhZ2UnIHx8IG1vZGUudG9Mb3dlckNhc2UoKSA9PT0gJ3Nlc3Npb25zdG9yYWdlJykpIHtcbiAgICAgICAgICAgIHBhcnNlZE9iaiA9IHN0YXRlT2JqW3dpZGdldC5nZXRBcHBJbnN0YW5jZSgpLmFjdGl2ZVBhZ2VOYW1lXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhcnNlZE9iaiA9IF8uY2xvbmUoc3RhdGVPYmopO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZVBhcmFtKSB7XG4gICAgICAgICAgICBpZiAocGFyc2VkT2JqICYmICFwYXJzZWRPYmpbc3RhdGVQYXJhbV0pIHtcbiAgICAgICAgICAgICAgICBwYXJzZWRPYmpbc3RhdGVQYXJhbV0gPSB7fTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXBhcnNlZE9iaikge1xuICAgICAgICAgICAgICAgIHBhcnNlZE9iaiA9IHtbc3RhdGVQYXJhbV06IHt9fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChfLmlzT2JqZWN0KHZhbCkgJiYgIV8uaXNBcnJheSh2YWwpKSB7XG4gICAgICAgICAgICAgICAgcGFyc2VkT2JqW3N0YXRlUGFyYW1dW2tleV0gPSBwYXJzZWRPYmpbc3RhdGVQYXJhbV1ba2V5XSB8fCB7fTtcbiAgICAgICAgICAgICAgICBfLm1lcmdlKHBhcnNlZE9ialtzdGF0ZVBhcmFtXVtrZXldLCB2YWwpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJzZWRPYmpbc3RhdGVQYXJhbV1ba2V5XSA9IHZhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChwYXJzZWRPYmogJiYgIXBhcnNlZE9ialtrZXldKSB7XG4gICAgICAgICAgICAgICAgcGFyc2VkT2JqW2tleV0gPSB7fTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXBhcnNlZE9iaikge1xuICAgICAgICAgICAgICAgIHBhcnNlZE9iaiA9IHtba2V5XToge319O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKF8uaXNPYmplY3QodmFsKSAmJiAhXy5pc0FycmF5KHZhbCkpIHtcbiAgICAgICAgICAgICAgICBwYXJzZWRPYmpba2V5XSA9IHBhcnNlZE9ialtrZXldIHx8IHt9O1xuICAgICAgICAgICAgICAgIF8ubWVyZ2UocGFyc2VkT2JqW2tleV0sIHZhbCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcnNlZE9ialtrZXldID0gdmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGZvciBMb2NhbCBhbmQgU2Vzc2lvbiBTdG9yYWdlLCB3cmFwIHN0YXRlIG9iamVjdCBpbnNpZGUgcGFnZSBuYW1lIHNvIHRoYXQgd2lkZ2V0IG5hbWUgY29uZmxpY3RzIGRvbid0IGFyaXNlIGJldHdlZW4gcGFnZXMuXG4gICAgICAgIGlmICh3aWRnZXQgJiYgd2lkZ2V0LmdldEFwcEluc3RhbmNlKCkuYWN0aXZlUGFnZU5hbWUgJiYgKG1vZGUudG9Mb3dlckNhc2UoKSA9PT0gJ2xvY2Fsc3RvcmFnZScgfHwgbW9kZS50b0xvd2VyQ2FzZSgpID09PSAnc2Vzc2lvbnN0b3JhZ2UnKSkge1xuICAgICAgICAgICAgaWYgKHN0YXRlT2JqKSB7XG4gICAgICAgICAgICAgICAgc3RhdGVPYmpbd2lkZ2V0LmdldEFwcEluc3RhbmNlKCkuYWN0aXZlUGFnZU5hbWVdID0gcGFyc2VkT2JqO1xuICAgICAgICAgICAgICAgIHBhcnNlZE9iaiA9IHN0YXRlT2JqO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJzZWRPYmogPSB7W3dpZGdldC5nZXRBcHBJbnN0YW5jZSgpLmFjdGl2ZVBhZ2VOYW1lXTogcGFyc2VkT2JqfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cblxuICAgICAgICBsZXQgZGVjb2RlZFVSSSA9IGRlY29kZVVSSUNvbXBvbmVudCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gICAgICAgIGlmIChkZWNvZGVkVVJJLmluZGV4T2YoJz8nKSA8IDApIHtcbiAgICAgICAgICAgIGRlY29kZWRVUkkgPSBkZWNvZGVkVVJJICsgJz93bV9zdGF0ZT0nO1xuICAgICAgICB9IGVsc2UgaWYgKGRlY29kZWRVUkkuaW5kZXhPZignd21fc3RhdGUnKSA8IDApIHtcbiAgICAgICAgICAgIGRlY29kZWRVUkkgPSBkZWNvZGVkVVJJICsgJyZ3bV9zdGF0ZT0nO1xuICAgICAgICB9XG4gICAgICAgIHVybCA9IGRlY29kZWRVUkkucmVwbGFjZSgvKHdtX3N0YXRlPSkuKj8oJnwkKS8gLCckMScgKyB0aGlzLmpzb25Ub1VyaShwYXJzZWRPYmopICsgJyQyJyk7XG5cbiAgICAgICAgaWYgKG1vZGUudG9Mb3dlckNhc2UoKSA9PT0gJ2xvY2Fsc3RvcmFnZScpIHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9cXC8vZywgJycpICsgJ193bV9zdGF0ZScsIEpTT04uc3RyaW5naWZ5KHBhcnNlZE9iaikpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKG1vZGUudG9Mb3dlckNhc2UoKSA9PT0gJ3Nlc3Npb25zdG9yYWdlJykge1xuICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUucmVwbGFjZSgvXFwvL2csICcnKSArICdfd21fc3RhdGUnLCBKU09OLnN0cmluZ2lmeShwYXJzZWRPYmopKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkZWNvZGVVUklDb21wb25lbnQod2luZG93LmxvY2F0aW9uLmhyZWYpID09PSBkZWNvZGVVUklDb21wb25lbnQodXJsKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLkhJU1RPUllfSEFORExFUiA9PT0gJ3B1c2gnKSB7XG4gICAgICAgICAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUoeyBwYXRoOiB1cmwgfSwgJycsIHVybCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5ISVNUT1JZX0hBTkRMRVIgPT09ICdyZXBsYWNlJykge1xuICAgICAgICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHsgcGF0aDogdXJsIH0sICcnLCB1cmwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyB0aGUgcGFzc2VkIHN0YXRlIGluZm9ybWF0aW9uIGZyb20gdGhlIHVybFxuICAgICAqIEUuZy5cbiAgICAgKiBDdXJyZW50IHN0YXRlIGluZm9ybWF0aW9uIGlzIGxpa2UgOlxuICAgICB7XG4gICAgICAgXCJ3aWRnZXRfc3RhdGVcIjoge1xuICAgICAgICAgICBcIlRhYmxlMVwiOiB7XG4gICAgICAgICAgICAgICBcInNlbGVjdGVkSXRlbVwiOiBbXG4gICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICBcInBhZ2VcIjogXCIxXCIsXG4gICAgICAgICAgICAgICAgICAgXCJpbmRleFwiOiBcIjFcIlxuICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgIFwicGFnZVwiOiBcIjJcIixcbiAgICAgICAgICAgICAgICAgXCJpbmRleFwiOiBcIjFcIlxuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICBdLFxuICAgICAgICAgICBcInBhZ2luYXRpb25cIjogXCIxXCJcbiAgICAgICAgIH1cbiAgICAgICAgIH1cbiAgICAgfVxuICAgICAqIElucHV0IHZhbHVlcyB3aWxsIGJlIGxpa2U6XG4gICAgIHN1YlBhcmFtIDogJ3NlbGVjdGVkSXRlbSdcblxuICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgY29udmVydCBpdCB0byB0aGUgZm9sbG93aW5nXG4gICAgIHtcbiAgICAgICBcIndpZGdldF9zdGF0ZVwiOiB7XG4gICAgICAgICAgIFwiVGFibGUxXCI6IHtcbiAgICAgICAgICAgICBcInBhZ2luYXRpb25cIjogXCIxXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgIH1cbiAgICAgfVxuICAgICAqIEBwYXJhbSBzdGF0ZVBhcmFtXG4gICAgICogQHBhcmFtIGtleVxuICAgICAqIEBwYXJhbSBzdWJQYXJhbVxuICAgICAqIEBwYXJhbSBtb2RlIDogb3B0aW9uYWwgcGFyYW1ldGVyIGlmIHRoZSB3aWRnZXQvdmFyaWFibGUgdXNlcyBhIHN0YXRlIGhhbmRsaW5nIG1vZGUodXJsLCBsb2NhbCBzdG9yYWdlLCBzZXNzaW9uIHN0b3JhZ2UpXG4gICAgICogb3RoZXIgdGhhbiB0aGUgcHJvamVjdCBsZXZlbCBtb2RlXG4gICAgICovXG4gICAgcHVibGljIHJlbW92ZVN0YXRlUGFyYW0oc3RhdGVQYXJhbSwga2V5LCBzdWJQYXJhbT8sIG1vZGU/LCB3aWRnZXQ/KSB7XG4gICAgICAgIGxldCB1cmwgPSAnJywgcGFyc2VkT2JqO1xuICAgICAgICBjb25zdCBzdGF0ZU9iaiA9IHRoaXMuZ2V0U3RhdGVJbmZvcm1hdGlvbihtb2RlKTtcbiAgICAgICAgaWYgKHdpZGdldCAmJiBzdGF0ZU9iaiAmJiB3aWRnZXQuZ2V0QXBwSW5zdGFuY2UoKS5hY3RpdmVQYWdlTmFtZSAmJiAobW9kZS50b0xvd2VyQ2FzZSgpID09PSAnbG9jYWxzdG9yYWdlJyB8fCBtb2RlLnRvTG93ZXJDYXNlKCkgPT09ICdzZXNzaW9uc3RvcmFnZScpKSB7XG4gICAgICAgICAgICBwYXJzZWRPYmogPSBzdGF0ZU9ialt3aWRnZXQuZ2V0QXBwSW5zdGFuY2UoKS5hY3RpdmVQYWdlTmFtZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJzZWRPYmogPSBfLmNsb25lKHN0YXRlT2JqKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIV8uZ2V0KHBhcnNlZE9iaiwgW3N0YXRlUGFyYW1dKSAmJiAhXy5nZXQocGFyc2VkT2JqLCBrZXkpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gRml4IGZvciBbV01TLTI0Njk4XTogd2hlbiB0YWJsZSBpcyBpbnNpZGUgYSBwcmVmYWIsIHN0YXRlIHBlcnNpc3RlbmNlIGtleSBpcyBsaWtlIFwiVGVzdExhYmVsXzExLlRlc3RMYWJlbF8xLnN0YXRpY1ZhcmlhYmxlMVRhYmxlMVwiXG4gICAgICAgIC8vIF8uZ2V0KHBhcnNlZE9iaiwgc3RhdGVQYXJhbSArICcuJyArIGtleSkgaXMgdW5kZWZpbmVkIHNvIHVzaW5nIChwYXJzZWRPYmogJiYgcGFyc2VkT2JqW3N0YXRlUGFyYW1dICYmIHBhcnNlZE9ialtzdGF0ZVBhcmFtXVtrZXldKSBjb25kaXRpb24uXG4gICAgICAgIGlmIChfLmdldChwYXJzZWRPYmosIHN0YXRlUGFyYW0gKyAnLicgKyBrZXkpIHx8IChwYXJzZWRPYmogJiYgcGFyc2VkT2JqW3N0YXRlUGFyYW1dICYmIHBhcnNlZE9ialtzdGF0ZVBhcmFtXVtrZXldKSkge1xuICAgICAgICAgICAgaWYgKHN1YlBhcmFtKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHBhcnNlZE9ialtzdGF0ZVBhcmFtXVtrZXldW3N1YlBhcmFtXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHBhcnNlZE9ialtzdGF0ZVBhcmFtXVtrZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKF8uaXNFbXB0eShwYXJzZWRPYmpbc3RhdGVQYXJhbV1ba2V5XSkpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgcGFyc2VkT2JqW3N0YXRlUGFyYW1dW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXy5pc0VtcHR5KHBhcnNlZE9ialtzdGF0ZVBhcmFtXSkpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgcGFyc2VkT2JqW3N0YXRlUGFyYW1dO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFzdGF0ZVBhcmFtICYmIF8uZ2V0KHBhcnNlZE9iaiwga2V5KSkge1xuICAgICAgICAgICAgZGVsZXRlIHBhcnNlZE9ialtrZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZm9yIExvY2FsIGFuZCBTZXNzaW9uIFN0b3JhZ2UsIHdyYXAgc3RhdGUgb2JqZWN0IGluc2lkZSBwYWdlIG5hbWUgc28gdGhhdCB3aWRnZXQgbmFtZSBjb25mbGljdHMgZG9uJ3QgYXJpc2UgYmV0d2VlbiBwYWdlcy5cbiAgICAgICAgaWYgKHdpZGdldCAmJiB3aWRnZXQuZ2V0QXBwSW5zdGFuY2UoKS5hY3RpdmVQYWdlTmFtZSAmJiAobW9kZS50b0xvd2VyQ2FzZSgpID09PSAnbG9jYWxzdG9yYWdlJyB8fCBtb2RlLnRvTG93ZXJDYXNlKCkgPT09ICdzZXNzaW9uc3RvcmFnZScpKSB7XG4gICAgICAgICAgICBpZiAoc3RhdGVPYmopIHtcbiAgICAgICAgICAgICAgICBzdGF0ZU9ialt3aWRnZXQuZ2V0QXBwSW5zdGFuY2UoKS5hY3RpdmVQYWdlTmFtZV0gPSBwYXJzZWRPYmo7XG4gICAgICAgICAgICAgICAgcGFyc2VkT2JqID0gc3RhdGVPYmo7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcnNlZE9iaiA9IHtbd2lkZ2V0LmdldEFwcEluc3RhbmNlKCkuYWN0aXZlUGFnZU5hbWVdOiBwYXJzZWRPYmp9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1vZGUudG9Mb3dlckNhc2UoKSA9PT0gJ2xvY2Fsc3RvcmFnZScpIHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9cXC8vZywgJycpICsgJ193bV9zdGF0ZScsIEpTT04uc3RyaW5naWZ5KHBhcnNlZE9iaikpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKG1vZGUudG9Mb3dlckNhc2UoKSA9PT0gJ3Nlc3Npb25zdG9yYWdlJykge1xuICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUucmVwbGFjZSgvXFwvL2csICcnKSArICdfd21fc3RhdGUnLCBKU09OLnN0cmluZ2lmeShwYXJzZWRPYmopKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlY29kZWRVUkkgPSBkZWNvZGVVUklDb21wb25lbnQod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICAgICAgICBpZiAoXy5pc0VtcHR5KHBhcnNlZE9iaikpIHtcbiAgICAgICAgICAgIHVybCA9IGRlY29kZWRVUkkucmVwbGFjZSgvKHdtX3N0YXRlPSkuKj8oJnwkKS8gLCcnICsgJyQyJyk7XG4gICAgICAgICAgICBpZiAoXy5pbmNsdWRlcyhbJyYnLCAnPyddLCB1cmwuY2hhckF0KHVybC5sZW5ndGggLSAxKSkpIHtcbiAgICAgICAgICAgICAgICB1cmwgPSB1cmwucmVwbGFjZSh1cmwuY2hhckF0KHVybC5sZW5ndGggLSAxKSwgJycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdXJsID0gZGVjb2RlZFVSSS5yZXBsYWNlKC8od21fc3RhdGU9KS4qPygmfCQpLyAsJyQxJyArIHRoaXMuanNvblRvVXJpKHBhcnNlZE9iaikgKyAnJDInKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSh7IHBhdGg6IHVybCB9LCAnJywgdXJsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyB0aGUgU3RhdGUgSW5mb3JtYXRpb24gb2JqZWN0IGludG8gYW4gZW5jb2RlZCBvYmplY3Qgd2hlbiBzdGF0ZSBoYW5kbGluZyBtb2RlIGlzIFVSTFxuICAgICAqIHNvIHRoYXQgYSBtZWFuaW5nZnVsIFVSTCBjYW4gYmUgZm9ybWVkIGFuZCB0aGUgdXNlciBjYW4gbWFrZSBjaGFuZ2VzIGVhc2lseSB0byB0aGUgVVJMLlxuICAgICAqIEUuZy5cbiAgICAgKiBzdGF0ZSBpbmZvcm1hdGlvbiBpbnB1dCB3aWxsIGJlIGxpa2UgOlxuICAgICB7XG4gICAgICAgICBcIndpZGdldC1zdGF0ZVwiOiB7XG4gICAgICAgICAgICAgXCJUYWJsZTFcIjoge1xuICAgICAgICAgICAgIFwicGFnaW5hdGlvblwiOiBcIjNcIixcbiAgICAgICAgICAgICBcInNlYXJjaFwiOltcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImZpZWxkXCI6XCJzdGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidmFsdWVcIjpcIk5ZXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtYXRjaE1vZGVcIjpcImFueXdoZXJlaWdub3JlY2FzZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOlwic3RyaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgfVxuICAgICAgICAgfVxuICAgICB9LFxuICAgICBcIkN1c3RvbVZhcmlhYmxlU2VsZWN0ZWRJdGVtc1wiOiBbXCIyXCIsIFwiM1wiXVxuICAgICB9XG5cblxuICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgY29udmVydCBpdCB0byB0aGUgZm9sbG93aW5nXG4gICAgICgnd2lkZ2V0LXN0YXRlJ34oJ1RhYmxlMSd+KCdwYWdpbmF0aW9uJ34nMydfJ3NlYXJjaCd+ISgnZmllbGQnfidzdGF0ZSdfJ3ZhbHVlJ34nTlknXydtYXRjaE1vZGUnfidhbnl3aGVyZWlnbm9yZWNhc2UnXyd0eXBlJ34nc3RyaW5nJykqKSlfJ0N1c3RvbVZhcmlhYmxlU2VsZWN0ZWRJdGVtcyd+IScyJ18nMycqKVxuICAgICAqIEBwYXJhbSBqc29uT2JqXG4gICAgICovXG4gICAgcHJpdmF0ZSBqc29uVG9VcmkoanNvbk9iaikge1xuICAgICAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KFxuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoanNvbk9iailcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvWygpJ35fISpdL2csIGZ1bmN0aW9uKGMpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gUmVwbGFjZSAoKSd+XyEqIHdpdGggXFx1MDAwMCBlc2NhcGUgc2VxdWVuY2VzXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnXFxcXHUnICsgKCcwMDAwJyArIGMuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC00KVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcey9nLCAnKCcpICAgIC8vICAgIHsgLT4gKFxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXH0vZywgJyknKSAgICAvLyAgICB9IC0+IClcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXCIvZywgIFwiJ1wiKSAgICAvLyAgICBcIiAtPiAnXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcOi9nLCAnficpICAgIC8vICAgIDogLT4gflxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8sL2csICAnXycpICAgIC8vICAgICwgLT4gX1xuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFsvZywgJyEnKSAgICAvLyAgICBbIC0+ICFcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxdL2csICcqJykgICAgLy8gICAgXSAtPiAqXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVjb2RlcyB0aGUgZW5jb2RlZCBTdGF0ZSBJbmZvcm1hdGlvbiBvYmplY3QgaW50byBhIEpTT04gb2JqZWN0IHdoZW4gc3RhdGUgaGFuZGxpbmcgbW9kZSBpcyBVUkxcbiAgICAgKiBzbyB0aGF0IHN0YXRlIGluZm9ybWF0aW9uIGNhbiBiZSBwYXJzZWQgYW5kIGFwcGxpZWQgdG8gdGhlIHdpZGdldHMuXG4gICAgICogRS5nLlxuICAgICAqIGVuY29kZWQgc3RhdGUgaW5mb3JtYXRpb24gaW5wdXQgd2lsbCBiZSBsaWtlIDpcbiAgICAgKCd3aWRnZXQtc3RhdGUnfignVGFibGUxJ34oJ3BhZ2luYXRpb24nficzJ18nc2VhcmNoJ34hKCdmaWVsZCd+J3N0YXRlJ18ndmFsdWUnfidOWSdfJ21hdGNoTW9kZSd+J2FueXdoZXJlaWdub3JlY2FzZSdfJ3R5cGUnfidzdHJpbmcnKSopKV8nQ3VzdG9tVmFyaWFibGVTZWxlY3RlZEl0ZW1zJ34hJzInXyczJyopXG5cblxuICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgY29udmVydCBpdCB0byB0aGUgZm9sbG93aW5nXG4gICAgIHtcbiAgICAgICAgIFwid2lkZ2V0LXN0YXRlXCI6IHtcbiAgICAgICAgICAgICBcIlRhYmxlMVwiOiB7XG4gICAgICAgICAgICAgXCJwYWdpbmF0aW9uXCI6IFwiM1wiLFxuICAgICAgICAgICAgIFwic2VhcmNoXCI6W1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZmllbGRcIjpcInN0YXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2YWx1ZVwiOlwiTllcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1hdGNoTW9kZVwiOlwiYW55d2hlcmVpZ25vcmVjYXNlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6XCJzdHJpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICB9XG4gICAgICAgICB9XG4gICAgIH0sXG4gICAgIFwiQ3VzdG9tVmFyaWFibGVTZWxlY3RlZEl0ZW1zXCI6IFtcIjJcIiwgXCIzXCJdXG4gICAgIH1cbiAgICAgKiBAcGFyYW0gZW5jb2RlZE9ialxuICAgICAqL1xuICAgIHByaXZhdGUgdXJpVG9Kc29uKGVuY29kZWRPYmopIHtcbiAgICAgICAgbGV0IHJlc3BvbnNlOiBhbnk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXNwb25zZSA9IEpTT04ucGFyc2UoXG4gICAgICAgICAgICAgICAgZGVjb2RlVVJJQ29tcG9uZW50KGVuY29kZWRPYmopXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXCgvZywgJ3snKSAgICAvLyAgICAoIC0+IHtcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcKS9nLCAnfScpICAgIC8vICAgICkgLT4gfVxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvJy9nLCAgJ1wiJykgICAgLy8gICAgJyAtPiBcIlxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvfi9nLCAgJzonKSAgICAvLyAgICB+IC0+IDpcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL18vZywgICcsJykgICAgLy8gICAgXyAtPiAsXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXCEvZywgJ1snKSAgICAvLyAgICAhIC0+IFtcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcKi9nLCAnXScpICAgIC8vICAgICogLT4gXVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG59XG5cbiJdfQ==
500
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtcGVyc2lzdGVuY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3NlcnZpY2VzL3N0YXRlLXBlcnNpc3RlbmNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFDLE1BQU0sV0FBVyxDQUFDOztBQUdsRixNQUFNLE9BQU8sZ0JBQWdCO0lBRDdCO1FBRVksb0JBQWUsR0FBRyxTQUFTLENBQUM7UUFDNUIsMEJBQXFCLEdBQUcsRUFBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUMsQ0FBQztRQUN6RSxxQkFBZ0IsR0FBRyxJQUFJLENBQUM7S0F5ZW5DO0lBdmVHOzs7T0FHRztJQUNJLGlCQUFpQixDQUFDLEdBQUc7UUFDeEIsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzVELElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDO1FBQy9CLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSSxhQUFhLENBQUMsVUFBZSxFQUFFLFVBQWtCLEVBQUUsYUFBc0I7UUFDNUUsSUFBSSxHQUFHLEdBQUcsYUFBYSxJQUFJLFVBQVUsQ0FBQztRQUN0QyxJQUFJLFVBQVUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDbEUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FB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LFlBQVk7aUJBQ25DLE9BQU8sQ0FBQyxJQUFJLEVBQUcsR0FBRyxDQUFDLENBQUksWUFBWTtpQkFDbkMsT0FBTyxDQUFDLElBQUksRUFBRyxHQUFHLENBQUMsQ0FBSSxZQUFZO2lCQUNuQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFJLFlBQVk7aUJBQ25DLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUksWUFBWTthQUMzQyxDQUFDO1FBQ04sQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO2lGQTNlUSxnQkFBZ0I7dUVBQWhCLGdCQUFnQixXQUFoQixnQkFBZ0IsbUJBREgsTUFBTTs7aUZBQ25CLGdCQUFnQjtjQUQ1QixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtjbG9uZSwgZ2V0LCBpbmNsdWRlcywgaXNBcnJheSwgaXNFbXB0eSwgaXNPYmplY3QsIG1lcmdlfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgU3RhdGVQZXJzaXN0ZW5jZSB7XG4gICAgcHJpdmF0ZSBISVNUT1JZX0hBTkRMRVIgPSAncmVwbGFjZSc7XG4gICAgcHJpdmF0ZSBISVNUT1JZX0hBTkRMRVJfVFlQRVMgPSB7J3B1c2gnOiAncHVzaFN0YXRlJywgJ3JlcGxhY2UnOiAncmVwbGFjZVN0YXRlJ307XG4gICAgcHJpdmF0ZSBXSURHRVRfU1RBVEVfS0VZID0gJ3dzJztcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHBhc3NlZCB2YWx1ZSBhcyB0aGUgSGlzdG9yeSBoYW5kbGVyIGlmIGl0IGV4aXN0cyBpbiB0aGUgSGlzdG9yeV9IYW5kbGVyX1R5cGVzIG9iamVjdFxuICAgICAqIEBwYXJhbSB2YWxcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0SGlzdG9yeUhhbmRsZXIodmFsKSB7XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLkhJU1RPUllfSEFORExFUl9UWVBFUykuaW5kZXhPZih2YWwpID4gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuSElTVE9SWV9IQU5ETEVSID0gdmFsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIHVuaXF1ZSBrZXkgZm9yIHNldHRpbmcgc3RhdGUgcGFyYW0gYnkgdXNpbmcgdGhlIHZpZXdQYXJlbnQgcHJvcGVydHkgb2YgYSB3aWRnZXRcbiAgICAgKiBzbyB0aGF0IG5hbWUgY29uZmxpY3RzIGFyZSBhdm9pZGVkIHdoZW4gdGhlIHNhbWUgd2lkZ2V0IG5hbWUgaXNcbiAgICAgKiBwcmVzZW50IGluc2lkZSBhIFBhZ2UsIGEgUGFydGlhbCB3aXRoaW4gYSBQYWdlIG9yIGEgUHJlZmFiIHdpdGhpbiBhIFBhZ2UgYW5kIHNvIG9uLlxuICAgICAqIEUuZy46XG4gICAgICogaWYgYSBwYWdlIGhhcyBhIHRhYnMgd2lkZ2V0IHdpdGggdGhlIG5hbWUgdGFiczEsIGEgcGFydGlhbCBQYXJ0aWFsMShpbnNpZGUgY29udGFpbmVyMSkgaW5jbHVzaW9uIHdpdGhpbiB3aGljaFxuICAgICAqIHRoZXJlIGlzIGEgdGFicyB3aXRoIG5hbWUgdGFiczEgYW5kIGEgcHJlZmFiIE15UHJlZmFiIGluY2x1c2lvbiB3aXRoIGEgdGFicyB3aWRnZXQgd2l0aCB0aGUgbmFtZSB0YWJzMSxcbiAgICAgKiBnZXROZXN0ZWRQYXRoIHdpbGwgcmV0dXJuIHRhYnMxLCBjb250YWluZXIxLlBhcnRpYWwxLnRhYnMxIGFuZCBNeVByZWZhYjEuTXlQcmVmYWIudGFiczEgcmVzcGVjdGl2ZWx5LlxuICAgICAqIEBwYXJhbSB2aWV3UGFyZW50XG4gICAgICogQHBhcmFtIHdpZGdldE5hbWVcbiAgICAgKiBAcGFyYW0gY3VycmVudE91dHB1dFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXROZXN0ZWRQYXRoKHZpZXdQYXJlbnQ6IGFueSwgd2lkZ2V0TmFtZTogc3RyaW5nLCBjdXJyZW50T3V0cHV0Pzogc3RyaW5nKSB7XG4gICAgICAgIGxldCBvdXQgPSBjdXJyZW50T3V0cHV0IHx8IHdpZGdldE5hbWU7XG4gICAgICAgIGlmICh2aWV3UGFyZW50ICYmICh2aWV3UGFyZW50LnByZWZhYk5hbWUgfHwgdmlld1BhcmVudC5wYXJ0aWFsTmFtZSkpIHtcbiAgICAgICAgICAgIG91dCA9IG91dC5sZW5ndGggPiAwID8gb3V0ICsgJy4nICsgKHZpZXdQYXJlbnQucHJlZmFiTmFtZSB8fCB2aWV3UGFyZW50LnBhcnRpYWxOYW1lKSA6ICh2aWV3UGFyZW50LnByZWZhYk5hbWUgfHwgdmlld1BhcmVudC5wYXJ0aWFsTmFtZSk7XG4gICAgICAgICAgICAvLyBzYW1lIHBhcnRpYWwvcHJlZmFiIGNhbiBiZSBkcm9wcGVkIG11bHRpcGxlIHRpbWVzIGluIGEgcGFnZS4gQXBwZW5kaW5nIGNvbnRhaW5lcidzIG5hbWUgZm9yIHVuaXF1ZW5lc3MuXG4gICAgICAgICAgICBvdXQgPSBvdXQgKyAnLicgKyB2aWV3UGFyZW50LmNvbnRhaW5lcldpZGdldC5uYW1lO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TmVzdGVkUGF0aCh2aWV3UGFyZW50LmNvbnRhaW5lcldpZGdldC52aWV3UGFyZW50LCB3aWRnZXROYW1lLCBvdXQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXQuc3BsaXQoJy4nKS5yZXZlcnNlKCkuam9pbignLicpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlY29kZXMgYW5kIHBhcnNlcyB0aGUgc3RhdGUgaW5mb3JtYXRpb24gYW5kIHJldHVybnMgdGhlIHBhcnNlZCBzdGF0ZSBvYmplY3RcbiAgICAgKiBAcGFyYW0gbW9kZSA6IG9wdGlvbmFsIHBhcmFtZXRlciBpZiB0aGUgd2lkZ2V0L3ZhcmlhYmxlIHVzZXMgYSBzdGF0ZSBoYW5kbGluZyBtb2RlKHVybCwgbG9jYWwgc3RvcmFnZSwgc2Vzc2lvbiBzdG9yYWdlKVxuICAgICAqIG90aGVyIHRoYW4gdGhlIHByb2plY3QgbGV2ZWwgbW9kZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTdGF0ZUluZm9ybWF0aW9uKG1vZGUpIHtcbiAgICAgICAgbGV0IHBhcnNlZFN0YXRlSW5mbywgc3RhdGVJbmZvO1xuICAgICAgICBpZiAobW9kZS50b0xvd2VyQ2FzZSgpID09PSAndXJsJykge1xuICAgICAgICAgICAgY29uc3QgZGVjb2RlZFVSSSA9IGRlY29kZVVSSUNvbXBvbmVudCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gICAgICAgICAgICBzdGF0ZUluZm8gPSBkZWNvZGVkVVJJLm1hdGNoKC8od21fc3RhdGU9KS4qPygmfCQpLyk7XG4gICAgICAgICAgICBpZiAoc3RhdGVJbmZvKSB7XG4gICAgICAgICAgICAgICAgc3RhdGVJbmZvID0gc3RhdGVJbmZvWzBdLnJlcGxhY2UoJ3dtX3N0YXRlPScsICcnKTtcbiAgICAgICAgICAgICAgICBwYXJzZWRTdGF0ZUluZm8gPSB0aGlzLnVyaVRvSnNvbihzdGF0ZUluZm8pO1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZWRTdGF0ZUluZm87XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobW9kZS50b0xvd2VyQ2FzZSgpID09PSAnbG9jYWxzdG9yYWdlJykge1xuICAgICAgICAgICAgc3RhdGVJbmZvID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0od2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnJlcGxhY2UoL1xcLy9nLCAnJykgKyAnX3dtX3N0YXRlJyk7XG4gICAgICAgIH0gZWxzZSBpZiAobW9kZS50b0xvd2VyQ2FzZSgpID09PSAnc2Vzc2lvbnN0b3JhZ2UnKSB7XG4gICAgICAgICAgICBzdGF0ZUluZm8gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9cXC8vZywgJycpICsgJ193bV9zdGF0ZScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZUluZm8pIHtcbiAgICAgICAgICAgIHBhcnNlZFN0YXRlSW5mbyA9IEpTT04ucGFyc2Uoc3RhdGVJbmZvKTtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZWRTdGF0ZUluZm87XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSBwYXNzZWQgd2lkZ2V0IGluc3RhbmNlIGhhcyBhbnkgc3RhdGUgaW5mb3JtYXRpb24gYXZhaWxhYmxlIG9yIG5vdFxuICAgICAqIEBwYXJhbSB3aWRnZXRcbiAgICAgKiBAcGFyYW0gbW9kZSA6IG9wdGlvbmFsIHBhcmFtZXRlciBpZiB0aGUgd2lkZ2V0IHVzZXMgYSBzdGF0ZSBoYW5kbGluZyBtb2RlKHVybCwgbG9jYWwgc3RvcmFnZSwgc2Vzc2lvbiBzdG9yYWdlKVxuICAgICAqIG90aGVyIHRoYW4gdGhlIHByb2plY3QgbGV2ZWwgbW9kZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRXaWRnZXRTdGF0ZSh3aWRnZXQsIG1vZGU/KSB7XG4gICAgICAgIG1vZGUgPSBtb2RlIHx8IHRoaXMuY29tcHV0ZU1vZGUod2lkZ2V0LnN0YXRlaGFuZGxlcik7XG4gICAgICAgIGlmICghbW9kZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBwYXJzZWRTdGF0ZUluZm8gPSB0aGlzLmdldFN0YXRlSW5mb3JtYXRpb24obW9kZSk7XG4gICAgICAgIGlmIChwYXJzZWRTdGF0ZUluZm8gJiYgd2lkZ2V0ICAmJiB3aWRnZXQuZ2V0QXBwSW5zdGFuY2UoKS5hY3RpdmVQYWdlTmFtZSAmJiAobW9kZS50b0xvd2VyQ2FzZSgpID09PSAnbG9jYWxzdG9yYWdlJyB8fCBtb2RlLnRvTG93ZXJDYXNlKCkgPT09ICdzZXNzaW9uc3RvcmFnZScpKSB7XG4gICAgICAgICAgICBwYXJzZWRTdGF0ZUluZm8gPSBwYXJzZWRTdGF0ZUluZm9bd2lkZ2V0LmdldEFwcEluc3RhbmNlKCkuYWN0aXZlUGFnZU5hbWVdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChnZXQocGFyc2VkU3RhdGVJbmZvLCB0aGlzLldJREdFVF9TVEFURV9LRVkpKSB7XG4gICAgICAgICAgICBjb25zdCBzdGF0ZUtleSA9IHRoaXMuZ2V0TmVzdGVkUGF0aCh3aWRnZXQudmlld1BhcmVudCwgd2lkZ2V0LmdldFdpZGdldCgpLm5hbWUpO1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlZFN0YXRlSW5mb1t0aGlzLldJREdFVF9TVEFURV9LRVldW3N0YXRlS2V5XTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcHVibGljIGNvbXB1dGVNb2RlKHdpZGdldFN0YXRlSGFuZGxlcikge1xuICAgICAgICBpZiAoIXdpZGdldFN0YXRlSGFuZGxlcikge1xuICAgICAgICAgICAgcmV0dXJuICd1cmwnO1xuICAgICAgICB9IGVsc2UgaWYgKHdpZGdldFN0YXRlSGFuZGxlciAmJiB3aWRnZXRTdGF0ZUhhbmRsZXIudG9Mb3dlckNhc2UoKSA9PT0gJ25vbmUnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gd2lkZ2V0U3RhdGVIYW5kbGVyLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBwYXNzZWQgdmFsdWUgdG8gdGhlIHN0YXRlIGluZm9ybWF0aW9uIGJ5IHVzaW5nIHRoZSBwYXNzZWQgd2lkZ2V0IGluc3RhbmNlXG4gICAgICogQHBhcmFtIHdpZGdldFxuICAgICAqIEBwYXJhbSB2YWx1ZVxuICAgICAqIEBwYXJhbSBtb2RlIDogb3B0aW9uYWwgcGFyYW1ldGVyIGlmIHRoZSB3aWRnZXQgdXNlcyBhIHN0YXRlIGhhbmRsaW5nIG1vZGUodXJsLCBsb2NhbCBzdG9yYWdlLCBzZXNzaW9uIHN0b3JhZ2UpXG4gICAgICogb3RoZXIgdGhhbiB0aGUgcHJvamVjdCBsZXZlbCBtb2RlXG4gICAgICovXG4gICAgcHVibGljIHNldFdpZGdldFN0YXRlKHdpZGdldCwgdmFsdWUsIG1vZGU/KSB7XG4gICAgICAgIGNvbnN0IHN0YXRlS2V5ID0gdGhpcy5nZXROZXN0ZWRQYXRoKHdpZGdldC52aWV3UGFyZW50LCB3aWRnZXQuZ2V0V2lkZ2V0KCkubmFtZSk7XG4gICAgICAgIG1vZGUgPSBtb2RlIHx8IHRoaXMuY29tcHV0ZU1vZGUod2lkZ2V0LnN0YXRlaGFuZGxlcik7XG4gICAgICAgIGlmICghbW9kZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0U3RhdGVQYXJhbXModGhpcy5XSURHRVRfU1RBVEVfS0VZLCBzdGF0ZUtleSwgdmFsdWUsIG1vZGUsIHdpZGdldCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyB0aGUgcGFzc2VkIHdpZGdldOKAmXMgc3RhdGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgU3RhdGUgT2JqZWN0LiBJZiBhIGtleSBpcyBwYXNzZWQsIHRoZW4gb25seSB0aGF0XG4gICAgICogcGFydGljdWxhciBlbnRyeSB3aWxsIGJlIHJlbW92ZWQsIG5vdCBhbnkgb3RoZXIgZW50cmllcyBmb3IgdGhhdCB3aWRnZXQuXG4gICAgICogQHBhcmFtIHdpZGdldFxuICAgICAqIEBwYXJhbSBrZXlcbiAgICAgKiBAcGFyYW0gbW9kZSA6IG9wdGlvbmFsIHBhcmFtZXRlciBpZiB0aGUgd2lkZ2V0IHVzZXMgYSBzdGF0ZSBoYW5kbGluZyBtb2RlKHVybCwgbG9jYWwgc3RvcmFnZSwgc2Vzc2lvbiBzdG9yYWdlKVxuICAgICAqIG90aGVyIHRoYW4gdGhlIHByb2plY3QgbGV2ZWwgbW9kZVxuICAgICAqL1xuICAgIHB1YmxpYyByZW1vdmVXaWRnZXRTdGF0ZSh3aWRnZXQsIGtleT8sIG1vZGU/KSB7XG4gICAgICAgIG1vZGUgPSBtb2RlIHx8IHRoaXMuY29tcHV0ZU1vZGUod2lkZ2V0LnN0YXRlaGFuZGxlcik7XG4gICAgICAgIGlmICghbW9kZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0YXRlS2V5ID0gdGhpcy5nZXROZXN0ZWRQYXRoKHdpZGdldC52aWV3UGFyZW50LCB3aWRnZXQuZ2V0V2lkZ2V0KCkubmFtZSk7XG4gICAgICAgIHRoaXMucmVtb3ZlU3RhdGVQYXJhbSh0aGlzLldJREdFVF9TVEFURV9LRVksIHN0YXRlS2V5LCBrZXksIG1vZGUsIHdpZGdldCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgcGFzc2VkIHZhbHVlIHRvIHRoZSBzdGF0ZSBpbmZvcm1hdGlvbiBieSB1c2luZyB0aGUgcGFzc2VkIHZhcmlhYmxlIG5hbWUgYXMga2V5XG4gICAgICogQHBhcmFtIHZhcmlhYmxlTmFtZVxuICAgICAqIEBwYXJhbSB2YWx1ZVxuICAgICAqIEBwYXJhbSBtb2RlIDogb3B0aW9uYWwgcGFyYW1ldGVyIGlmIHRoZSB2YXJpYWJsZSB1c2VzIGEgc3RhdGUgaGFuZGxpbmcgbW9kZSh1cmwsIGxvY2FsIHN0b3JhZ2UsIHNlc3Npb24gc3RvcmFnZSlcbiAgICAgKiBvdGhlciB0aGFuIHRoZSBwcm9qZWN0IGxldmVsIG1vZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0U3RhdGVWYXJpYWJsZSh2YXJpYWJsZU5hbWUsIHZhbHVlLCBtb2RlPykge1xuICAgICAgICBtb2RlID0gbW9kZSB8fCB0aGlzLmNvbXB1dGVNb2RlKG1vZGUpO1xuICAgICAgICBpZiAoIW1vZGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFN0YXRlUGFyYW1zKCcnLCB2YXJpYWJsZU5hbWUsIHZhbHVlLCBtb2RlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIHBhc3NlZCB2YXJpYWJsZSBuYW1lIGhhcyBhbnkgc3RhdGUgaW5mb3JtYXRpb24gYXZhaWxhYmxlIGluIHRoZSB1cmwgb3Igbm90XG4gICAgICogQHBhcmFtIHZhcmlhYmxlTmFtZVxuICAgICAqIEBwYXJhbSBtb2RlIDogb3B0aW9uYWwgcGFyYW1ldGVyIGlmIHRoZSB2YXJpYWJsZSB1c2VzIGEgc3RhdGUgaGFuZGxpbmcgbW9kZSh1cmwsIGxvY2FsIHN0b3JhZ2UsIHNlc3Npb24gc3RvcmFnZSlcbiAgICAgKiBvdGhlciB0aGFuIHRoZSBwcm9qZWN0IGxldmVsIG1vZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U3RhdGVWYXJpYWJsZSh2YXJpYWJsZU5hbWU6IHN0cmluZywgbW9kZT8pIHtcbiAgICAgICAgbW9kZSA9IG1vZGUgfHwgdGhpcy5jb21wdXRlTW9kZShtb2RlKTtcbiAgICAgICAgaWYgKCFtb2RlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFyc2VkU3RhdGVJbmZvID0gdGhpcy5nZXRTdGF0ZUluZm9ybWF0aW9uKG1vZGUpO1xuICAgICAgICBpZiAocGFyc2VkU3RhdGVJbmZvKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VkU3RhdGVJbmZvW3ZhcmlhYmxlTmFtZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgdGhlIHBhc3NlZCB2YXJpYWJsZeKAmXMgc3RhdGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgVVJMLlxuICAgICAqIEBwYXJhbSB2YXJpYWJsZU5hbWVcbiAgICAgKiBAcGFyYW0gbW9kZSA6IG9wdGlvbmFsIHBhcmFtZXRlciBpZiB0aGUgd2lkZ2V0IHVzZXMgYSBzdGF0ZSBoYW5kbGluZyBtb2RlKHVybCwgbG9jYWwgc3RvcmFnZSwgc2Vzc2lvbiBzdG9yYWdlKVxuICAgICAqIG90aGVyIHRoYW4gdGhlIHByb2plY3QgbGV2ZWwgbW9kZVxuICAgICAqL1xuICAgIHB1YmxpYyByZW1vdmVTdGF0ZVZhcmlhYmxlKHZhcmlhYmxlTmFtZSwgbW9kZT8pIHtcbiAgICAgICAgbW9kZSA9IG1vZGUgfHwgdGhpcy5jb21wdXRlTW9kZShtb2RlKTtcbiAgICAgICAgaWYgKCFtb2RlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZW1vdmVTdGF0ZVBhcmFtKCcnLCB2YXJpYWJsZU5hbWUsIG51bGwsIG1vZGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHBhc3NlZCBzdGF0ZSBpbmZvcm1hdGlvbiBpbiB0aGUgdXJsIGJ5IHBhcnNpbmcgdGhlIHBhc3NlZCB2YWx1ZSBhbmQgY2hlY2tpbmdcbiAgICAgKiBpdHMgdHlwZS4gSWYgaXRzIGFuIGFycmF5IHR5cGUsIHRoZW4gdGhlIHBhc3NlZCB2YWx1ZXMgd2lsbCBiZSBwdXNoZWQgaW50byBhbiBhcnJheSBhbmQgdGhlbiBzZXQgaW4gdGhlIHN0YXRlXG4gICAgICogRS5nLlxuICAgICAqIEN1cnJlbnQgc3RhdGUgaW5mb3JtYXRpb24gaXMgbGlrZSA6XG4gICAgIHtcbiAgICAgICBcIndpZGdldF9zdGF0ZVwiOiB7XG4gICAgICAgICAgIFwiVGFibGUxXCI6IHtcbiAgICAgICAgICAgICAgIFwic2VsZWN0ZWRJdGVtXCI6IFtcbiAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgIFwicGFnZVwiOiBcIjFcIixcbiAgICAgICAgICAgICAgICAgICBcImluZGV4XCI6IFwiMVwiXG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgIFwicGFnaW5hdGlvblwiOiBcIjFcIlxuICAgICAgICAgfVxuICAgICAgICAgfVxuICAgICB9XG4gICAgICogSW5wdXQgdmFsdWUgd2lsbCBiZSBsaWtlOlxuICAgICB7XG4gICAgICAgXCJzZWxlY3RlZEl0ZW1cIjogW1xuICAgICAgICAge1xuICAgICAgICAgICBcInBhZ2VcIjogXCIxXCIsXG4gICAgICAgICAgIFwiaW5kZXhcIjogXCIyXCJcbiAgICAgICAgIH1cbiAgICAgICBdXG4gICAgIH1cblxuICAgICAqIFRoaXMgcGFyc2luZyBsb2dpYyB3aWxsIGNvbnZlcnQgaXQgdG8gdGhlIGZvbGxvd2luZ1xuICAgICB7XG4gICAgICAgXCJ3aWRnZXRfc3RhdGVcIjoge1xuICAgICAgICAgICBcIlRhYmxlMVwiOiB7XG4gICAgICAgICAgICAgICBcInNlbGVjdGVkSXRlbVwiOiBbXG4gICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICBcInBhZ2VcIjogXCIxXCIsXG4gICAgICAgICAgICAgICAgICAgXCJpbmRleFwiOiBcIjFcIlxuICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgXCJwYWdlXCI6IFwiMVwiLFxuICAgICAgICAgICAgICAgICAgIFwiaW5kZXhcIjogXCIyXCJcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgXCJwYWdpbmF0aW9uXCI6IFwiMVwiXG4gICAgICAgICB9XG4gICAgICAgICB9XG4gICAgIH1cbiAgICAgKiBCYXNlZCBvbiBob3cgdGhlIEhJU1RPUllfSEFORExFUiBpcyBjb25maWd1cmVkLCB0aGUgdXBkYXRlZCB1cmwgd2lsbCBlaXRoZXIgcmVwbGFjZSB0aGUgZXhpc3RpbmcgdXJsIG9yXG4gICAgICogcHVzaCBhIG5ldyBzdGF0ZSBpbiB0aGUgdXJsIHNvIHRoYXQgYmFjayBidXR0b24gbWF5IHRyYWNrIGVhY2ggdXBkYXRlIHRvIHRoZSBzdGF0ZS5cbiAgICAgKiBAcGFyYW0gc3RhdGVQYXJhbVxuICAgICAqIEBwYXJhbSBrZXlcbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICogQHBhcmFtIG1vZGUgOiBvcHRpb25hbCBwYXJhbWV0ZXIgaWYgdGhlIHdpZGdldC92YXJpYWJsZSB1c2VzIGEgc3RhdGUgaGFuZGxpbmcgbW9kZSh1cmwsIGxvY2FsIHN0b3JhZ2UsIHNlc3Npb24gc3RvcmFnZSlcbiAgICAgKiBvdGhlciB0aGFuIHRoZSBwcm9qZWN0IGxldmVsIG1vZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0U3RhdGVQYXJhbXMoc3RhdGVQYXJhbTogc3RyaW5nLCBrZXk6IHN0cmluZywgdmFsOiBhbnksIG1vZGU/LCB3aWRnZXQ/KSB7XG4gICAgICAgIGxldCB1cmwgPSAnJywgcGFyc2VkT2JqO1xuICAgICAgICBjb25zdCBzdGF0ZU9iaiA9IHRoaXMuZ2V0U3RhdGVJbmZvcm1hdGlvbihtb2RlKTtcbiAgICAgICAgaWYgKHdpZGdldCAmJiBzdGF0ZU9iaiAmJiB3aWRnZXQuZ2V0QXBwSW5zdGFuY2UoKS5hY3RpdmVQYWdlTmFtZSAmJiAobW9kZS50b0xvd2VyQ2FzZSgpID09PSAnbG9jYWxzdG9yYWdlJyB8fCBtb2RlLnRvTG93ZXJDYXNlKCkgPT09ICdzZXNzaW9uc3RvcmFnZScpKSB7XG4gICAgICAgICAgICBwYXJzZWRPYmogPSBzdGF0ZU9ialt3aWRnZXQuZ2V0QXBwSW5zdGFuY2UoKS5hY3RpdmVQYWdlTmFtZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJzZWRPYmogPSBjbG9uZShzdGF0ZU9iaik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlUGFyYW0pIHtcbiAgICAgICAgICAgIGlmIChwYXJzZWRPYmogJiYgIXBhcnNlZE9ialtzdGF0ZVBhcmFtXSkge1xuICAgICAgICAgICAgICAgIHBhcnNlZE9ialtzdGF0ZVBhcmFtXSA9IHt9O1xuICAgICAgICAgICAgfSBlbHNlIGlmICghcGFyc2VkT2JqKSB7XG4gICAgICAgICAgICAgICAgcGFyc2VkT2JqID0ge1tzdGF0ZVBhcmFtXToge319O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzT2JqZWN0KHZhbCkgJiYgIWlzQXJyYXkodmFsKSkge1xuICAgICAgICAgICAgICAgIHBhcnNlZE9ialtzdGF0ZVBhcmFtXVtrZXldID0gcGFyc2VkT2JqW3N0YXRlUGFyYW1dW2tleV0gfHwge307XG4gICAgICAgICAgICAgICAgbWVyZ2UocGFyc2VkT2JqW3N0YXRlUGFyYW1dW2tleV0sIHZhbCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcnNlZE9ialtzdGF0ZVBhcmFtXVtrZXldID0gdmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHBhcnNlZE9iaiAmJiAhcGFyc2VkT2JqW2tleV0pIHtcbiAgICAgICAgICAgICAgICBwYXJzZWRPYmpba2V5XSA9IHt9O1xuICAgICAgICAgICAgfSBlbHNlIGlmICghcGFyc2VkT2JqKSB7XG4gICAgICAgICAgICAgICAgcGFyc2VkT2JqID0ge1trZXldOiB7fX07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNPYmplY3QodmFsKSAmJiAhaXNBcnJheSh2YWwpKSB7XG4gICAgICAgICAgICAgICAgcGFyc2VkT2JqW2tleV0gPSBwYXJzZWRPYmpba2V5XSB8fCB7fTtcbiAgICAgICAgICAgICAgICBtZXJnZShwYXJzZWRPYmpba2V5XSwgdmFsKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGFyc2VkT2JqW2tleV0gPSB2YWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gZm9yIExvY2FsIGFuZCBTZXNzaW9uIFN0b3JhZ2UsIHdyYXAgc3RhdGUgb2JqZWN0IGluc2lkZSBwYWdlIG5hbWUgc28gdGhhdCB3aWRnZXQgbmFtZSBjb25mbGljdHMgZG9uJ3QgYXJpc2UgYmV0d2VlbiBwYWdlcy5cbiAgICAgICAgaWYgKHdpZGdldCAmJiB3aWRnZXQuZ2V0QXBwSW5zdGFuY2UoKS5hY3RpdmVQYWdlTmFtZSAmJiAobW9kZS50b0xvd2VyQ2FzZSgpID09PSAnbG9jYWxzdG9yYWdlJyB8fCBtb2RlLnRvTG93ZXJDYXNlKCkgPT09ICdzZXNzaW9uc3RvcmFnZScpKSB7XG4gICAgICAgICAgICBpZiAoc3RhdGVPYmopIHtcbiAgICAgICAgICAgICAgICBzdGF0ZU9ialt3aWRnZXQuZ2V0QXBwSW5zdGFuY2UoKS5hY3RpdmVQYWdlTmFtZV0gPSBwYXJzZWRPYmo7XG4gICAgICAgICAgICAgICAgcGFyc2VkT2JqID0gc3RhdGVPYmo7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcnNlZE9iaiA9IHtbd2lkZ2V0LmdldEFwcEluc3RhbmNlKCkuYWN0aXZlUGFnZU5hbWVdOiBwYXJzZWRPYmp9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuXG4gICAgICAgIGxldCBkZWNvZGVkVVJJID0gZGVjb2RlVVJJQ29tcG9uZW50KHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcbiAgICAgICAgaWYgKGRlY29kZWRVUkkuaW5kZXhPZignPycpIDwgMCkge1xuICAgICAgICAgICAgZGVjb2RlZFVSSSA9IGRlY29kZWRVUkkgKyAnP3dtX3N0YXRlPSc7XG4gICAgICAgIH0gZWxzZSBpZiAoZGVjb2RlZFVSSS5pbmRleE9mKCd3bV9zdGF0ZScpIDwgMCkge1xuICAgICAgICAgICAgZGVjb2RlZFVSSSA9IGRlY29kZWRVUkkgKyAnJndtX3N0YXRlPSc7XG4gICAgICAgIH1cbiAgICAgICAgdXJsID0gZGVjb2RlZFVSSS5yZXBsYWNlKC8od21fc3RhdGU9KS4qPygmfCQpLyAsJyQxJyArIHRoaXMuanNvblRvVXJpKHBhcnNlZE9iaikgKyAnJDInKTtcblxuICAgICAgICBpZiAobW9kZS50b0xvd2VyQ2FzZSgpID09PSAnbG9jYWxzdG9yYWdlJykge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0od2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnJlcGxhY2UoL1xcLy9nLCAnJykgKyAnX3dtX3N0YXRlJywgSlNPTi5zdHJpbmdpZnkocGFyc2VkT2JqKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAobW9kZS50b0xvd2VyQ2FzZSgpID09PSAnc2Vzc2lvbnN0b3JhZ2UnKSB7XG4gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9cXC8vZywgJycpICsgJ193bV9zdGF0ZScsIEpTT04uc3RyaW5naWZ5KHBhcnNlZE9iaikpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRlY29kZVVSSUNvbXBvbmVudCh3aW5kb3cubG9jYXRpb24uaHJlZikgPT09IGRlY29kZVVSSUNvbXBvbmVudCh1cmwpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuSElTVE9SWV9IQU5ETEVSID09PSAncHVzaCcpIHtcbiAgICAgICAgICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSh7IHBhdGg6IHVybCB9LCAnJywgdXJsKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLkhJU1RPUllfSEFORExFUiA9PT0gJ3JlcGxhY2UnKSB7XG4gICAgICAgICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoeyBwYXRoOiB1cmwgfSwgJycsIHVybCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIHRoZSBwYXNzZWQgc3RhdGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgdXJsXG4gICAgICogRS5nLlxuICAgICAqIEN1cnJlbnQgc3RhdGUgaW5mb3JtYXRpb24gaXMgbGlrZSA6XG4gICAgIHtcbiAgICAgICBcIndpZGdldF9zdGF0ZVwiOiB7XG4gICAgICAgICAgIFwiVGFibGUxXCI6IHtcbiAgICAgICAgICAgICAgIFwic2VsZWN0ZWRJdGVtXCI6IFtcbiAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgIFwicGFnZVwiOiBcIjFcIixcbiAgICAgICAgICAgICAgICAgICBcImluZGV4XCI6IFwiMVwiXG4gICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgXCJwYWdlXCI6IFwiMlwiLFxuICAgICAgICAgICAgICAgICBcImluZGV4XCI6IFwiMVwiXG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgIFwicGFnaW5hdGlvblwiOiBcIjFcIlxuICAgICAgICAgfVxuICAgICAgICAgfVxuICAgICB9XG4gICAgICogSW5wdXQgdmFsdWVzIHdpbGwgYmUgbGlrZTpcbiAgICAgc3ViUGFyYW0gOiAnc2VsZWN0ZWRJdGVtJ1xuXG4gICAgICogVGhpcyBtZXRob2Qgd2lsbCBjb252ZXJ0IGl0IHRvIHRoZSBmb2xsb3dpbmdcbiAgICAge1xuICAgICAgIFwid2lkZ2V0X3N0YXRlXCI6IHtcbiAgICAgICAgICAgXCJUYWJsZTFcIjoge1xuICAgICAgICAgICAgIFwicGFnaW5hdGlvblwiOiBcIjFcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgfVxuICAgICB9XG4gICAgICogQHBhcmFtIHN0YXRlUGFyYW1cbiAgICAgKiBAcGFyYW0ga2V5XG4gICAgICogQHBhcmFtIHN1YlBhcmFtXG4gICAgICogQHBhcmFtIG1vZGUgOiBvcHRpb25hbCBwYXJhbWV0ZXIgaWYgdGhlIHdpZGdldC92YXJpYWJsZSB1c2VzIGEgc3RhdGUgaGFuZGxpbmcgbW9kZSh1cmwsIGxvY2FsIHN0b3JhZ2UsIHNlc3Npb24gc3RvcmFnZSlcbiAgICAgKiBvdGhlciB0aGFuIHRoZSBwcm9qZWN0IGxldmVsIG1vZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVtb3ZlU3RhdGVQYXJhbShzdGF0ZVBhcmFtLCBrZXksIHN1YlBhcmFtPywgbW9kZT8sIHdpZGdldD8pIHtcbiAgICAgICAgbGV0IHVybCA9ICcnLCBwYXJzZWRPYmo7XG4gICAgICAgIGNvbnN0IHN0YXRlT2JqID0gdGhpcy5nZXRTdGF0ZUluZm9ybWF0aW9uKG1vZGUpO1xuICAgICAgICBpZiAod2lkZ2V0ICYmIHN0YXRlT2JqICYmIHdpZGdldC5nZXRBcHBJbnN0YW5jZSgpLmFjdGl2ZVBhZ2VOYW1lICYmIChtb2RlLnRvTG93ZXJDYXNlKCkgPT09ICdsb2NhbHN0b3JhZ2UnIHx8IG1vZGUudG9Mb3dlckNhc2UoKSA9PT0gJ3Nlc3Npb25zdG9yYWdlJykpIHtcbiAgICAgICAgICAgIHBhcnNlZE9iaiA9IHN0YXRlT2JqW3dpZGdldC5nZXRBcHBJbnN0YW5jZSgpLmFjdGl2ZVBhZ2VOYW1lXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhcnNlZE9iaiA9IGNsb25lKHN0YXRlT2JqKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWdldChwYXJzZWRPYmosIFtzdGF0ZVBhcmFtXSkgJiYgIWdldChwYXJzZWRPYmosIGtleSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBGaXggZm9yIFtXTVMtMjQ2OThdOiB3aGVuIHRhYmxlIGlzIGluc2lkZSBhIHByZWZhYiwgc3RhdGUgcGVyc2lzdGVuY2Uga2V5IGlzIGxpa2UgXCJUZXN0TGFiZWxfMTEuVGVzdExhYmVsXzEuc3RhdGljVmFyaWFibGUxVGFibGUxXCJcbiAgICAgICAgLy8gZ2V0KHBhcnNlZE9iaiwgc3RhdGVQYXJhbSArICcuJyArIGtleSkgaXMgdW5kZWZpbmVkIHNvIHVzaW5nIChwYXJzZWRPYmogJiYgcGFyc2VkT2JqW3N0YXRlUGFyYW1dICYmIHBhcnNlZE9ialtzdGF0ZVBhcmFtXVtrZXldKSBjb25kaXRpb24uXG4gICAgICAgIGlmIChnZXQocGFyc2VkT2JqLCBzdGF0ZVBhcmFtICsgJy4nICsga2V5KSB8fCAocGFyc2VkT2JqICYmIHBhcnNlZE9ialtzdGF0ZVBhcmFtXSAmJiBwYXJzZWRPYmpbc3RhdGVQYXJhbV1ba2V5XSkpIHtcbiAgICAgICAgICAgIGlmIChzdWJQYXJhbSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBwYXJzZWRPYmpbc3RhdGVQYXJhbV1ba2V5XVtzdWJQYXJhbV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBwYXJzZWRPYmpbc3RhdGVQYXJhbV1ba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0VtcHR5KHBhcnNlZE9ialtzdGF0ZVBhcmFtXVtrZXldKSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBwYXJzZWRPYmpbc3RhdGVQYXJhbV1ba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0VtcHR5KHBhcnNlZE9ialtzdGF0ZVBhcmFtXSkpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgcGFyc2VkT2JqW3N0YXRlUGFyYW1dO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFzdGF0ZVBhcmFtICYmIGdldChwYXJzZWRPYmosIGtleSkpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBwYXJzZWRPYmpba2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGZvciBMb2NhbCBhbmQgU2Vzc2lvbiBTdG9yYWdlLCB3cmFwIHN0YXRlIG9iamVjdCBpbnNpZGUgcGFnZSBuYW1lIHNvIHRoYXQgd2lkZ2V0IG5hbWUgY29uZmxpY3RzIGRvbid0IGFyaXNlIGJldHdlZW4gcGFnZXMuXG4gICAgICAgIGlmICh3aWRnZXQgJiYgd2lkZ2V0LmdldEFwcEluc3RhbmNlKCkuYWN0aXZlUGFnZU5hbWUgJiYgKG1vZGUudG9Mb3dlckNhc2UoKSA9PT0gJ2xvY2Fsc3RvcmFnZScgfHwgbW9kZS50b0xvd2VyQ2FzZSgpID09PSAnc2Vzc2lvbnN0b3JhZ2UnKSkge1xuICAgICAgICAgICAgaWYgKHN0YXRlT2JqKSB7XG4gICAgICAgICAgICAgICAgc3RhdGVPYmpbd2lkZ2V0LmdldEFwcEluc3RhbmNlKCkuYWN0aXZlUGFnZU5hbWVdID0gcGFyc2VkT2JqO1xuICAgICAgICAgICAgICAgIHBhcnNlZE9iaiA9IHN0YXRlT2JqO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJzZWRPYmogPSB7W3dpZGdldC5nZXRBcHBJbnN0YW5jZSgpLmFjdGl2ZVBhZ2VOYW1lXTogcGFyc2VkT2JqfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG4gICAgICAgIGlmIChtb2RlLnRvTG93ZXJDYXNlKCkgPT09ICdsb2NhbHN0b3JhZ2UnKSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUucmVwbGFjZSgvXFwvL2csICcnKSArICdfd21fc3RhdGUnLCBKU09OLnN0cmluZ2lmeShwYXJzZWRPYmopKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChtb2RlLnRvTG93ZXJDYXNlKCkgPT09ICdzZXNzaW9uc3RvcmFnZScpIHtcbiAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0od2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnJlcGxhY2UoL1xcLy9nLCAnJykgKyAnX3dtX3N0YXRlJywgSlNPTi5zdHJpbmdpZnkocGFyc2VkT2JqKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkZWNvZGVkVVJJID0gZGVjb2RlVVJJQ29tcG9uZW50KHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcbiAgICAgICAgaWYgKGlzRW1wdHkocGFyc2VkT2JqKSkge1xuICAgICAgICAgICAgdXJsID0gZGVjb2RlZFVSSS5yZXBsYWNlKC8od21fc3RhdGU9KS4qPygmfCQpLyAsJycgKyAnJDInKTtcbiAgICAgICAgICAgIGlmIChpbmNsdWRlcyhbJyYnLCAnPyddLCB1cmwuY2hhckF0KHVybC5sZW5ndGggLSAxKSkpIHtcbiAgICAgICAgICAgICAgICB1cmwgPSB1cmwucmVwbGFjZSh1cmwuY2hhckF0KHVybC5sZW5ndGggLSAxKSwgJycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdXJsID0gZGVjb2RlZFVSSS5yZXBsYWNlKC8od21fc3RhdGU9KS4qPygmfCQpLyAsJyQxJyArIHRoaXMuanNvblRvVXJpKHBhcnNlZE9iaikgKyAnJDInKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSh7IHBhdGg6IHVybCB9LCAnJywgdXJsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyB0aGUgU3RhdGUgSW5mb3JtYXRpb24gb2JqZWN0IGludG8gYW4gZW5jb2RlZCBvYmplY3Qgd2hlbiBzdGF0ZSBoYW5kbGluZyBtb2RlIGlzIFVSTFxuICAgICAqIHNvIHRoYXQgYSBtZWFuaW5nZnVsIFVSTCBjYW4gYmUgZm9ybWVkIGFuZCB0aGUgdXNlciBjYW4gbWFrZSBjaGFuZ2VzIGVhc2lseSB0byB0aGUgVVJMLlxuICAgICAqIEUuZy5cbiAgICAgKiBzdGF0ZSBpbmZvcm1hdGlvbiBpbnB1dCB3aWxsIGJlIGxpa2UgOlxuICAgICB7XG4gICAgICAgICBcIndpZGdldC1zdGF0ZVwiOiB7XG4gICAgICAgICAgICAgXCJUYWJsZTFcIjoge1xuICAgICAgICAgICAgIFwicGFnaW5hdGlvblwiOiBcIjNcIixcbiAgICAgICAgICAgICBcInNlYXJjaFwiOltcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImZpZWxkXCI6XCJzdGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidmFsdWVcIjpcIk5ZXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtYXRjaE1vZGVcIjpcImFueXdoZXJlaWdub3JlY2FzZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOlwic3RyaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgfVxuICAgICAgICAgfVxuICAgICB9LFxuICAgICBcIkN1c3RvbVZhcmlhYmxlU2VsZWN0ZWRJdGVtc1wiOiBbXCIyXCIsIFwiM1wiXVxuICAgICB9XG5cblxuICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgY29udmVydCBpdCB0byB0aGUgZm9sbG93aW5nXG4gICAgICgnd2lkZ2V0LXN0YXRlJ34oJ1RhYmxlMSd+KCdwYWdpbmF0aW9uJ34nMydfJ3NlYXJjaCd+ISgnZmllbGQnfidzdGF0ZSdfJ3ZhbHVlJ34nTlknXydtYXRjaE1vZGUnfidhbnl3aGVyZWlnbm9yZWNhc2UnXyd0eXBlJ34nc3RyaW5nJykqKSlfJ0N1c3RvbVZhcmlhYmxlU2VsZWN0ZWRJdGVtcyd+IScyJ18nMycqKVxuICAgICAqIEBwYXJhbSBqc29uT2JqXG4gICAgICovXG4gICAgcHJpdmF0ZSBqc29uVG9VcmkoanNvbk9iaikge1xuICAgICAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KFxuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoanNvbk9iailcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvWygpJ35fISpdL2csIGZ1bmN0aW9uKGMpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gUmVwbGFjZSAoKSd+XyEqIHdpdGggXFx1MDAwMCBlc2NhcGUgc2VxdWVuY2VzXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnXFxcXHUnICsgKCcwMDAwJyArIGMuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC00KVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcey9nLCAnKCcpICAgIC8vICAgIHsgLT4gKFxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXH0vZywgJyknKSAgICAvLyAgICB9IC0+IClcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXCIvZywgIFwiJ1wiKSAgICAvLyAgICBcIiAtPiAnXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcOi9nLCAnficpICAgIC8vICAgIDogLT4gflxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8sL2csICAnXycpICAgIC8vICAgICwgLT4gX1xuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFsvZywgJyEnKSAgICAvLyAgICBbIC0+ICFcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxdL2csICcqJykgICAgLy8gICAgXSAtPiAqXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVjb2RlcyB0aGUgZW5jb2RlZCBTdGF0ZSBJbmZvcm1hdGlvbiBvYmplY3QgaW50byBhIEpTT04gb2JqZWN0IHdoZW4gc3RhdGUgaGFuZGxpbmcgbW9kZSBpcyBVUkxcbiAgICAgKiBzbyB0aGF0IHN0YXRlIGluZm9ybWF0aW9uIGNhbiBiZSBwYXJzZWQgYW5kIGFwcGxpZWQgdG8gdGhlIHdpZGdldHMuXG4gICAgICogRS5nLlxuICAgICAqIGVuY29kZWQgc3RhdGUgaW5mb3JtYXRpb24gaW5wdXQgd2lsbCBiZSBsaWtlIDpcbiAgICAgKCd3aWRnZXQtc3RhdGUnfignVGFibGUxJ34oJ3BhZ2luYXRpb24nficzJ18nc2VhcmNoJ34hKCdmaWVsZCd+J3N0YXRlJ18ndmFsdWUnfidOWSdfJ21hdGNoTW9kZSd+J2FueXdoZXJlaWdub3JlY2FzZSdfJ3R5cGUnfidzdHJpbmcnKSopKV8nQ3VzdG9tVmFyaWFibGVTZWxlY3RlZEl0ZW1zJ34hJzInXyczJyopXG5cblxuICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgY29udmVydCBpdCB0byB0aGUgZm9sbG93aW5nXG4gICAgIHtcbiAgICAgICAgIFwid2lkZ2V0LXN0YXRlXCI6IHtcbiAgICAgICAgICAgICBcIlRhYmxlMVwiOiB7XG4gICAgICAgICAgICAgXCJwYWdpbmF0aW9uXCI6IFwiM1wiLFxuICAgICAgICAgICAgIFwic2VhcmNoXCI6W1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZmllbGRcIjpcInN0YXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2YWx1ZVwiOlwiTllcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1hdGNoTW9kZVwiOlwiYW55d2hlcmVpZ25vcmVjYXNlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6XCJzdHJpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICB9XG4gICAgICAgICB9XG4gICAgIH0sXG4gICAgIFwiQ3VzdG9tVmFyaWFibGVTZWxlY3RlZEl0ZW1zXCI6IFtcIjJcIiwgXCIzXCJdXG4gICAgIH1cbiAgICAgKiBAcGFyYW0gZW5jb2RlZE9ialxuICAgICAqL1xuICAgIHByaXZhdGUgdXJpVG9Kc29uKGVuY29kZWRPYmopIHtcbiAgICAgICAgbGV0IHJlc3BvbnNlOiBhbnk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXNwb25zZSA9IEpTT04ucGFyc2UoXG4gICAgICAgICAgICAgICAgZGVjb2RlVVJJQ29tcG9uZW50KGVuY29kZWRPYmopXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXCgvZywgJ3snKSAgICAvLyAgICAoIC0+IHtcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcKS9nLCAnfScpICAgIC8vICAgICkgLT4gfVxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvJy9nLCAgJ1wiJykgICAgLy8gICAgJyAtPiBcIlxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvfi9nLCAgJzonKSAgICAvLyAgICB+IC0+IDpcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL18vZywgICcsJykgICAgLy8gICAgXyAtPiAsXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXCEvZywgJ1snKSAgICAvLyAgICAhIC0+IFtcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcKi9nLCAnXScpICAgIC8vICAgICogLT4gXVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG59XG5cbiJdfQ==
@@ -1,9 +1,10 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import * as Utils from '../utils/utils';
3
+ import { assign } from "lodash-es";
3
4
  import * as i0 from "@angular/core";
4
5
  export class UtilsService {
5
6
  constructor() {
6
- _.assign(this, Utils);
7
+ assign(this, Utils);
7
8
  }
8
9
  static { this.ɵfac = function UtilsService_Factory(t) { return new (t || UtilsService)(); }; }
9
10
  static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: UtilsService, factory: UtilsService.ɵfac, providedIn: 'root' }); }
@@ -12,4 +13,4 @@ export class UtilsService {
12
13
  type: Injectable,
13
14
  args: [{ providedIn: 'root' }]
14
15
  }], () => [], null); })();
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3NlcnZpY2VzL3V0aWxzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEtBQUssS0FBSyxNQUFNLGdCQUFnQixDQUFDOztBQUt4QyxNQUFNLE9BQU8sWUFBWTtJQUNyQjtRQUNJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7NkVBSFEsWUFBWTt1RUFBWixZQUFZLFdBQVosWUFBWSxtQkFEQSxNQUFNOztpRkFDbEIsWUFBWTtjQUR4QixVQUFVO2VBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgKiBhcyBVdGlscyBmcm9tICcuLi91dGlscy91dGlscyc7XG5cbmRlY2xhcmUgY29uc3QgXztcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgVXRpbHNTZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgXy5hc3NpZ24odGhpcywgVXRpbHMpO1xuICAgIH1cbn1cbiJdfQ==
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3NlcnZpY2VzL3V0aWxzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEtBQUssS0FBSyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxXQUFXLENBQUM7O0FBR2pDLE1BQU0sT0FBTyxZQUFZO0lBQ3JCO1FBQ0ksTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDOzZFQUhRLFlBQVk7dUVBQVosWUFBWSxXQUFaLFlBQVksbUJBREEsTUFBTTs7aUZBQ2xCLFlBQVk7Y0FEeEIsVUFBVTtlQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHthc3NpZ259IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgVXRpbHNTZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgYXNzaWduKHRoaXMsIFV0aWxzKTtcbiAgICB9XG59XG4iXX0=