@koobiq/components 18.33.0 → 18.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. package/actions-panel/actions-panel-config.d.ts +4 -3
  2. package/actions-panel/actions-panel-container.scss +0 -6
  3. package/actions-panel/actions-panel-ref.d.ts +13 -0
  4. package/actions-panel/actions-panel.d.ts +1 -7
  5. package/button/_button-theme.scss +1 -0
  6. package/clamped-text/clamped-text.d.ts +61 -0
  7. package/clamped-text/clamped-text.scss +17 -0
  8. package/clamped-text/constants.d.ts +14 -0
  9. package/clamped-text/index.d.ts +3 -0
  10. package/clamped-text/module.d.ts +7 -0
  11. package/content-panel/content-panel-aside.scss +9 -0
  12. package/content-panel/content-panel-body.scss +9 -0
  13. package/content-panel/content-panel-container.scss +32 -0
  14. package/content-panel/content-panel-footer.scss +5 -0
  15. package/content-panel/content-panel-header.scss +30 -0
  16. package/content-panel/content-panel-tokens.scss +9 -0
  17. package/content-panel/content-panel.d.ts +149 -0
  18. package/content-panel/content-panel.scss +25 -0
  19. package/content-panel/index.d.ts +3 -0
  20. package/content-panel/module.d.ts +7 -0
  21. package/content-panel/resizable.d.ts +70 -0
  22. package/core/form-field/field-sizing-content.d.ts +21 -0
  23. package/core/form-field/index.d.ts +1 -0
  24. package/core/locales/en-US.d.ts +10 -0
  25. package/core/locales/es-LA.d.ts +10 -0
  26. package/core/locales/fa-IR.d.ts +10 -0
  27. package/core/locales/locale-service.d.ts +70 -0
  28. package/core/locales/pt-BR.d.ts +10 -0
  29. package/core/locales/ru-RU.d.ts +10 -0
  30. package/core/locales/tk-TM.d.ts +10 -0
  31. package/core/locales/types.d.ts +5 -0
  32. package/core/locales/zh-CN.d.ts +10 -0
  33. package/core/navbar/index.d.ts +1 -0
  34. package/core/navbar/rectangle-item.d.ts +14 -0
  35. package/core/option/option.d.ts +3 -1
  36. package/core/pop-up/pop-up-trigger.d.ts +2 -0
  37. package/core/public-api.d.ts +1 -0
  38. package/core/styles/common/_select.scss +6 -3
  39. package/core/utils/dom.d.ts +9 -0
  40. package/core/utils/index.d.ts +1 -0
  41. package/core/utils/utils.d.ts +4 -0
  42. package/datepicker/calendar.component.d.ts +1 -1
  43. package/datepicker/datepicker-input.directive.d.ts +19 -8
  44. package/datepicker/datepicker-toggle.component.d.ts +1 -1
  45. package/datepicker/datepicker.component.d.ts +2 -2
  46. package/dropdown/dropdown-item.scss +1 -0
  47. package/dropdown/dropdown-trigger.directive.d.ts +7 -1
  48. package/dynamic-translation/dynamic-translation.d.ts +72 -0
  49. package/dynamic-translation/index.d.ts +2 -0
  50. package/dynamic-translation/module.d.ts +7 -0
  51. package/esm2022/actions-panel/actions-panel-config.mjs +1 -1
  52. package/esm2022/actions-panel/actions-panel-container.mjs +7 -7
  53. package/esm2022/actions-panel/actions-panel-ref.mjs +17 -1
  54. package/esm2022/actions-panel/actions-panel.mjs +34 -24
  55. package/esm2022/breadcrumbs/breadcrumbs.mjs +2 -2
  56. package/esm2022/button/button.component.mjs +2 -2
  57. package/esm2022/button-toggle/button-toggle.component.mjs +9 -9
  58. package/esm2022/clamped-text/clamped-text.mjs +202 -0
  59. package/esm2022/clamped-text/constants.mjs +20 -0
  60. package/esm2022/clamped-text/index.mjs +4 -0
  61. package/esm2022/clamped-text/koobiq-components-clamped-text.mjs +5 -0
  62. package/esm2022/clamped-text/module.mjs +19 -0
  63. package/esm2022/content-panel/content-panel.mjs +432 -0
  64. package/esm2022/content-panel/index.mjs +4 -0
  65. package/esm2022/content-panel/koobiq-components-content-panel.mjs +5 -0
  66. package/esm2022/content-panel/module.mjs +42 -0
  67. package/esm2022/content-panel/resizable.mjs +138 -0
  68. package/esm2022/core/form-field/field-sizing-content.mjs +114 -0
  69. package/esm2022/core/form-field/index.mjs +2 -1
  70. package/esm2022/core/locales/en-US.mjs +11 -1
  71. package/esm2022/core/locales/es-LA.mjs +11 -1
  72. package/esm2022/core/locales/fa-IR.mjs +11 -1
  73. package/esm2022/core/locales/pt-BR.mjs +11 -1
  74. package/esm2022/core/locales/ru-RU.mjs +11 -1
  75. package/esm2022/core/locales/tk-TM.mjs +11 -1
  76. package/esm2022/core/locales/types.mjs +1 -1
  77. package/esm2022/core/locales/zh-CN.mjs +11 -1
  78. package/esm2022/core/navbar/index.mjs +2 -0
  79. package/esm2022/core/navbar/rectangle-item.mjs +39 -0
  80. package/esm2022/core/option/option.mjs +8 -4
  81. package/esm2022/core/pop-up/pop-up-trigger.mjs +5 -1
  82. package/esm2022/core/public-api.mjs +2 -1
  83. package/esm2022/core/utils/dom.mjs +14 -0
  84. package/esm2022/core/utils/index.mjs +2 -1
  85. package/esm2022/core/utils/utils.mjs +9 -1
  86. package/esm2022/core/version.mjs +2 -2
  87. package/esm2022/datepicker/calendar-header.component.mjs +6 -3
  88. package/esm2022/datepicker/calendar.component.mjs +9 -9
  89. package/esm2022/datepicker/datepicker-input.directive.mjs +24 -21
  90. package/esm2022/datepicker/datepicker-toggle.component.mjs +8 -8
  91. package/esm2022/datepicker/datepicker.component.mjs +3 -3
  92. package/esm2022/dropdown/dropdown-item.component.mjs +2 -2
  93. package/esm2022/dropdown/dropdown-trigger.directive.mjs +30 -10
  94. package/esm2022/dropdown/dropdown.component.mjs +3 -3
  95. package/esm2022/dynamic-translation/dynamic-translation.mjs +175 -0
  96. package/esm2022/dynamic-translation/index.mjs +3 -0
  97. package/esm2022/dynamic-translation/koobiq-components-dynamic-translation.mjs +5 -0
  98. package/esm2022/dynamic-translation/module.mjs +25 -0
  99. package/esm2022/file-upload/file-drop.mjs +1 -1
  100. package/esm2022/file-upload/file-upload.mjs +6 -1
  101. package/esm2022/file-upload/multiple-file-upload.component.mjs +21 -16
  102. package/esm2022/file-upload/single-file-upload.component.mjs +23 -16
  103. package/esm2022/filter-bar/filter-bar.mjs +3 -3
  104. package/esm2022/filter-bar/filter-refresher.mjs +5 -5
  105. package/esm2022/filter-bar/filter-reset.mjs +3 -3
  106. package/esm2022/filter-bar/filter-search.mjs +11 -11
  107. package/esm2022/filter-bar/filters.mjs +16 -4
  108. package/esm2022/filter-bar/pipe-add.mjs +6 -6
  109. package/esm2022/filter-bar/pipes/base-pipe.mjs +2 -2
  110. package/esm2022/filter-bar/pipes/pipe-button.mjs +7 -7
  111. package/esm2022/filter-bar/pipes/pipe-date.mjs +10 -2
  112. package/esm2022/filter-bar/pipes/pipe-datetime.mjs +10 -2
  113. package/esm2022/filter-bar/pipes/pipe-multi-select.mjs +11 -17
  114. package/esm2022/filter-bar/pipes/pipe-multi-tree-select.mjs +10 -9
  115. package/esm2022/filter-bar/pipes/pipe-readonly.mjs +7 -7
  116. package/esm2022/filter-bar/pipes/pipe-select.mjs +3 -4
  117. package/esm2022/filter-bar/pipes/pipe-text.mjs +9 -3
  118. package/esm2022/filter-bar/pipes/pipe-tree-select.mjs +9 -3
  119. package/esm2022/form-field/cleaner.mjs +16 -11
  120. package/esm2022/form-field/fieldset.mjs +2 -2
  121. package/esm2022/form-field/form-field.mjs +5 -5
  122. package/esm2022/form-field/password-hint.mjs +14 -3
  123. package/esm2022/form-field/password-toggle.mjs +45 -10
  124. package/esm2022/form-field/reactive-password-hint.mjs +18 -17
  125. package/esm2022/form-field/stepper.mjs +9 -9
  126. package/esm2022/icon/icon-button.component.mjs +2 -2
  127. package/esm2022/input/input-number.mjs +15 -10
  128. package/esm2022/markdown/markdown.component.mjs +3 -3
  129. package/esm2022/modal/modal.component.mjs +14 -14
  130. package/esm2022/modal/modal.directive.mjs +7 -5
  131. package/esm2022/navbar/navbar-item.component.mjs +3 -3
  132. package/esm2022/navbar-ic/index.mjs +2 -0
  133. package/esm2022/navbar-ic/koobiq-components-navbar-ic.mjs +5 -0
  134. package/esm2022/navbar-ic/navbar-ic-header.mjs +58 -0
  135. package/esm2022/navbar-ic/navbar-ic-item.mjs +399 -0
  136. package/esm2022/navbar-ic/navbar-ic.animation.mjs +9 -0
  137. package/esm2022/navbar-ic/navbar-ic.mjs +281 -0
  138. package/esm2022/navbar-ic/navbar-ic.module.mjs +74 -0
  139. package/esm2022/navbar-ic/public-api.mjs +5 -0
  140. package/esm2022/popover/popover-confirm.component.mjs +3 -3
  141. package/esm2022/popover/popover.component.mjs +10 -5
  142. package/esm2022/scrollbar/scrollbar.component.mjs +5 -5
  143. package/esm2022/select/select.component.mjs +24 -11
  144. package/esm2022/sidebar/sidebar.component.mjs +46 -27
  145. package/esm2022/sidepanel/sidepanel-container.component.mjs +15 -4
  146. package/esm2022/sidepanel/sidepanel-directives.mjs +5 -5
  147. package/esm2022/sidepanel/sidepanel-ref.mjs +8 -6
  148. package/esm2022/splitter/splitter.component.mjs +1 -1
  149. package/esm2022/tabs/tab-body.component.mjs +3 -3
  150. package/esm2022/tabs/tab-group.component.mjs +27 -27
  151. package/esm2022/tabs/tab.component.mjs +4 -4
  152. package/esm2022/tags/tag-input.mjs +2 -2
  153. package/esm2022/tags/tag-list.component.mjs +36 -17
  154. package/esm2022/tags/tag.component.mjs +231 -22
  155. package/esm2022/tags/tag.module.mjs +16 -6
  156. package/esm2022/textarea/textarea.component.mjs +6 -4
  157. package/esm2022/timepicker/timepicker.directive.mjs +1 -1
  158. package/esm2022/timezone/timezone-select.component.mjs +3 -3
  159. package/esm2022/tooltip/tooltip.component.mjs +3 -3
  160. package/esm2022/tree/tree-selection.component.mjs +4 -4
  161. package/esm2022/tree-select/tree-select.component.mjs +11 -9
  162. package/esm2022/username/constants.mjs +25 -0
  163. package/esm2022/username/index.mjs +6 -0
  164. package/esm2022/username/koobiq-components-username.mjs +5 -0
  165. package/esm2022/username/module.mjs +35 -0
  166. package/esm2022/username/types.mjs +32 -0
  167. package/esm2022/username/username.mjs +129 -0
  168. package/esm2022/username/username.pipe.mjs +92 -0
  169. package/fesm2022/koobiq-components-actions-panel.mjs +56 -31
  170. package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
  171. package/fesm2022/koobiq-components-breadcrumbs.mjs +1 -1
  172. package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
  173. package/fesm2022/koobiq-components-button-toggle.mjs +8 -8
  174. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  175. package/fesm2022/koobiq-components-button.mjs +2 -2
  176. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  177. package/fesm2022/koobiq-components-clamped-text.mjs +242 -0
  178. package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -0
  179. package/fesm2022/koobiq-components-content-panel.mjs +612 -0
  180. package/fesm2022/koobiq-components-content-panel.mjs.map +1 -0
  181. package/fesm2022/koobiq-components-core.mjs +271 -31
  182. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  183. package/fesm2022/koobiq-components-datepicker.mjs +45 -40
  184. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  185. package/fesm2022/koobiq-components-dropdown.mjs +33 -13
  186. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  187. package/fesm2022/koobiq-components-dynamic-translation.mjs +204 -0
  188. package/fesm2022/koobiq-components-dynamic-translation.mjs.map +1 -0
  189. package/fesm2022/koobiq-components-file-upload.mjs +44 -27
  190. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  191. package/fesm2022/koobiq-components-filter-bar.mjs +100 -71
  192. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  193. package/fesm2022/koobiq-components-form-field.mjs +100 -49
  194. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  195. package/fesm2022/koobiq-components-icon.mjs +2 -2
  196. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  197. package/fesm2022/koobiq-components-input.mjs +14 -9
  198. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  199. package/fesm2022/koobiq-components-markdown.mjs +2 -2
  200. package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
  201. package/fesm2022/koobiq-components-modal.mjs +19 -17
  202. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  203. package/fesm2022/koobiq-components-navbar-ic.mjs +800 -0
  204. package/fesm2022/koobiq-components-navbar-ic.mjs.map +1 -0
  205. package/fesm2022/koobiq-components-navbar.mjs +2 -2
  206. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  207. package/fesm2022/koobiq-components-popover.mjs +11 -6
  208. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  209. package/fesm2022/koobiq-components-scrollbar.mjs +4 -4
  210. package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
  211. package/fesm2022/koobiq-components-select.mjs +23 -10
  212. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  213. package/fesm2022/koobiq-components-sidebar.mjs +45 -26
  214. package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
  215. package/fesm2022/koobiq-components-sidepanel.mjs +24 -12
  216. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  217. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  218. package/fesm2022/koobiq-components-tabs.mjs +31 -31
  219. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  220. package/fesm2022/koobiq-components-tags.mjs +284 -47
  221. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  222. package/fesm2022/koobiq-components-textarea.mjs +5 -3
  223. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  224. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  225. package/fesm2022/koobiq-components-timezone.mjs +2 -2
  226. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  227. package/fesm2022/koobiq-components-tooltip.mjs +2 -2
  228. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  229. package/fesm2022/koobiq-components-tree-select.mjs +10 -8
  230. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  231. package/fesm2022/koobiq-components-tree.mjs +3 -3
  232. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  233. package/fesm2022/koobiq-components-username.mjs +308 -0
  234. package/fesm2022/koobiq-components-username.mjs.map +1 -0
  235. package/file-upload/_file-upload-theme.scss +1 -1
  236. package/file-upload/file-drop.d.ts +1 -1
  237. package/file-upload/file-upload.d.ts +5 -2
  238. package/file-upload/multiple-file-upload.component.d.ts +4 -2
  239. package/file-upload/single-file-upload.component.d.ts +5 -3
  240. package/filter-bar/_filter-bar-theme.scss +2 -2
  241. package/filter-bar/filters.d.ts +1 -0
  242. package/filter-bar/pipes/pipe-date.d.ts +3 -1
  243. package/filter-bar/pipes/pipe-datetime.d.ts +3 -1
  244. package/filter-bar/pipes/pipe-multi-select.d.ts +0 -1
  245. package/filter-bar/pipes/pipe-multi-tree-select.d.ts +3 -2
  246. package/filter-bar/pipes/pipe-select.d.ts +0 -1
  247. package/filter-bar/pipes/pipe-tree-select.d.ts +3 -2
  248. package/form-field/_form-field-theme.scss +27 -18
  249. package/form-field/cleaner.d.ts +4 -2
  250. package/form-field/cleaner.scss +6 -2
  251. package/form-field/form-field.scss +12 -2
  252. package/form-field/password-hint.d.ts +7 -0
  253. package/form-field/password-toggle.d.ts +23 -3
  254. package/form-field/password-toggle.scss +4 -8
  255. package/form-field/reactive-password-hint.d.ts +1 -0
  256. package/icon/_icon-button-theme.scss +8 -2
  257. package/modal/modal.component.d.ts +6 -6
  258. package/navbar-ic/_navbar-ic-theme.scss +81 -0
  259. package/navbar-ic/index.d.ts +1 -0
  260. package/navbar-ic/navbar-ic-divider.scss +7 -0
  261. package/navbar-ic/navbar-ic-header.d.ts +18 -0
  262. package/navbar-ic/navbar-ic-header.scss +53 -0
  263. package/navbar-ic/navbar-ic-item.d.ts +125 -0
  264. package/navbar-ic/navbar-ic-item.scss +96 -0
  265. package/navbar-ic/navbar-ic-tokens.scss +22 -0
  266. package/navbar-ic/navbar-ic.animation.d.ts +2 -0
  267. package/navbar-ic/navbar-ic.d.ts +103 -0
  268. package/navbar-ic/navbar-ic.module.d.ts +14 -0
  269. package/navbar-ic/navbar-ic.scss +32 -0
  270. package/navbar-ic/public-api.d.ts +4 -0
  271. package/package.json +34 -4
  272. package/popover/_popover-theme.scss +6 -2
  273. package/popover/popover-confirm.component.d.ts +1 -1
  274. package/popover/popover-tokens.scss +2 -0
  275. package/popover/popover.component.d.ts +6 -3
  276. package/prebuilt-themes/dark-theme.css +1 -1
  277. package/prebuilt-themes/light-theme.css +1 -1
  278. package/prebuilt-themes/theme.css +1 -1
  279. package/schematics/ng-add/index.js +4 -4
  280. package/scrollbar/scrollbar.component.d.ts +4 -4
  281. package/select/select.component.d.ts +14 -2
  282. package/sidebar/sidebar.component.d.ts +31 -5
  283. package/sidepanel/sidepanel-container.component.d.ts +9 -0
  284. package/sidepanel/sidepanel-ref.d.ts +3 -3
  285. package/splitter/splitter.component.d.ts +2 -2
  286. package/tabs/tab-group.component.d.ts +1 -1
  287. package/tabs/tab.component.d.ts +1 -1
  288. package/tags/_tag-theme.scss +10 -1
  289. package/tags/tag-input.d.ts +1 -1
  290. package/tags/tag-list.component.d.ts +11 -3
  291. package/tags/tag-list.scss +5 -0
  292. package/tags/tag.component.d.ts +78 -8
  293. package/tags/tag.module.d.ts +1 -1
  294. package/tags/tag.scss +18 -0
  295. package/textarea/textarea-tokens.scss +1 -1
  296. package/timepicker/timepicker.directive.d.ts +1 -1
  297. package/tooltip/_tooltip-theme.scss +9 -2
  298. package/tooltip/tooltip-tokens.scss +2 -0
  299. package/tooltip/tooltip.component.d.ts +2 -2
  300. package/tree/tree-selection.component.d.ts +1 -1
  301. package/tree-select/tree-select.component.d.ts +1 -1
  302. package/username/constants.d.ts +15 -0
  303. package/username/index.d.ts +5 -0
  304. package/username/module.d.ts +8 -0
  305. package/username/types.d.ts +62 -0
  306. package/username/username-tokens.scss +6 -0
  307. package/username/username.d.ts +68 -0
  308. package/username/username.pipe.d.ts +23 -0
  309. package/username/username.scss +107 -0
@@ -76,12 +76,12 @@ export class KbqTab {
76
76
  this.stateChanges.next();
77
77
  }
78
78
  }
79
- ngOnDestroy() {
80
- this.stateChanges.complete();
81
- }
82
79
  ngOnInit() {
83
80
  this.contentPortal = new TemplatePortal(this.explicitContent || this.implicitContent, this.viewContainerRef);
84
81
  }
82
+ ngOnDestroy() {
83
+ this.stateChanges.complete();
84
+ }
85
85
  /**
86
86
  * This has been extracted to a util because of TS 4 and VE.
87
87
  * View Engine doesn't support property rename inheritance.
@@ -142,4 +142,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
142
142
  }], tabId: [{
143
143
  type: Input
144
144
  }] } });
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvdGFicy90YWIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFLTCxXQUFXLEVBQ1gsU0FBUyxFQUNULGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILG1DQUFtQyxFQUNuQywwQkFBMEIsRUFDMUIsZUFBZSxFQUNsQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBaUJuRSxNQUFNLE9BQU8sTUFBTTtJQUNmLG9CQUFvQjtJQUNwQixJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQ0ksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxhQUFhLENBQUMsS0FBa0I7UUFDaEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFZRCxJQUNJLFlBQVk7UUFDWixPQUFPLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzFELENBQUM7SUFFRCxJQUFJLFlBQVksQ0FBQyxLQUFhO1FBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFJRCxJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLEtBQWM7UUFDdkIsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQzNCLENBQUM7SUFDTCxDQUFDO0lBaUNELElBQUksV0FBVztRQUNYLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDcEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkIsT0FBTyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDO1FBQzdDLENBQUM7UUFFRCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLG9CQUFvQixDQUFDLEtBQWE7UUFDbEMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztJQUN2QyxDQUFDO0lBT0QsWUFBNkIsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFqRXZELGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBYW5CLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFFMUIscUJBQWdCLEdBQW9CLGVBQWUsQ0FBQyxLQUFLLENBQUM7UUFFbkUsMEVBQTBFO1FBQzFELGNBQVMsR0FBRyxFQUFFLENBQUM7UUFFUyxVQUFLLEdBQVksS0FBSyxDQUFDO1FBSS9ELDREQUE0RDtRQUNuRCxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFNUM7OztXQUdHO1FBQ0gsYUFBUSxHQUFrQixJQUFJLENBQUM7UUFFL0I7OztXQUdHO1FBQ0gsV0FBTSxHQUFrQixJQUFJLENBQUM7UUFFN0I7O1dBRUc7UUFDSCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBa0JULDBCQUFxQixHQUFHLEVBQUUsQ0FBQztRQUVuQyx3REFBd0Q7UUFDaEQsa0JBQWEsR0FBMEIsSUFBSSxDQUFDO0lBRWMsQ0FBQztJQUVuRSxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUM1RSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdCLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNqSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDTyxxQkFBcUIsQ0FBQyxLQUFrQjtRQUM5QywrREFBK0Q7UUFDL0Qsd0VBQXdFO1FBQ3hFLG9GQUFvRjtRQUNwRiwyQ0FBMkM7UUFDM0MsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLENBQUM7SUFDTCxDQUFDO2tJQWpJUSxNQUFNO3NIQUFOLE1BQU0sa0dBb0NLLGdCQUFnQixzR0FrQmhCLGdCQUFnQixnQ0E1RHpCO1lBQ1AsR0FBRyxDQUFDLDBCQUEwQixFQUFFLDRCQUE0QixDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDeEUsbUNBQW1DLENBQUMsS0FBSyxHQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUEsRUFBQyxFQUNsRztTQUNKLHFFQVFhLGFBQWEsa0ZBY2IsYUFBYSwyQkFBVSxXQUFXLDRGQUdyQyxXQUFXLHlHQWhDWiwyQ0FBMkM7OzRGQVM1QyxNQUFNO2tCQWZsQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxTQUFTO29CQUNuQixRQUFRLEVBQUUsUUFBUTtvQkFDbEIsNkZBQTZGO29CQUM3RiwrRkFBK0Y7b0JBQy9GLGFBQWE7b0JBQ2IsUUFBUSxFQUFFLDJDQUEyQztvQkFDckQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxTQUFTLEVBQUU7d0JBQ1AsR0FBRyxDQUFDLDBCQUEwQixFQUFFLDRCQUE0QixDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDeEUsbUNBQW1DLENBQUMsS0FBSyxHQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUEsRUFBQyxFQUNsRztxQkFDSjtpQkFDSjtxRkFRTyxhQUFhO3NCQURoQixZQUFZO3VCQUFDLGFBQWE7Z0JBY3VDLGVBQWU7c0JBQWhGLFlBQVk7dUJBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUd0QixlQUFlO3NCQUF4RCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBR3BDLFlBQVk7c0JBRGYsS0FBSztnQkFZRixRQUFRO3NCQURYLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBYTdCLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFHVSxTQUFTO3NCQUF4QixLQUFLO3VCQUFDLE9BQU87Z0JBRTBCLEtBQUs7c0JBQTVDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBRTdCLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBLQlFfQ1VTVE9NX1NDUk9MTF9TVFJBVEVHWV9QUk9WSURFUixcbiAgICBLQlFfU0VMRUNUX1NDUk9MTF9TVFJBVEVHWSxcbiAgICBQb3BVcFBsYWNlbWVudHNcbn0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2NvcmUnO1xuaW1wb3J0IHsgS0JRX0RST1BET1dOX1NDUk9MTF9TVFJBVEVHWSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBLYnFUYWJDb250ZW50IH0gZnJvbSAnLi90YWItY29udGVudC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgS0JRX1RBQl9MQUJFTCwgS2JxVGFiTGFiZWwgfSBmcm9tICcuL3RhYi1sYWJlbC5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ticS10YWInLFxuICAgIGV4cG9ydEFzOiAna2JxVGFiJyxcbiAgICAvLyBDcmVhdGUgYSB0ZW1wbGF0ZSBmb3IgdGhlIGNvbnRlbnQgb2YgdGhlIDxrYnEtdGFiPiBzbyB0aGF0IHdlIGNhbiBncmFiIGEgcmVmZXJlbmNlIHRvIHRoaXNcbiAgICAvLyBUZW1wbGF0ZVJlZiBhbmQgdXNlIGl0IGluIGEgUG9ydGFsIHRvIHJlbmRlciB0aGUgdGFiIGNvbnRlbnQgaW4gdGhlIGFwcHJvcHJpYXRlIHBsYWNlIGluIHRoZVxuICAgIC8vIHRhYi1ncm91cC5cbiAgICB0ZW1wbGF0ZTogJzxuZy10ZW1wbGF0ZT48bmctY29udGVudCAvPjwvbmctdGVtcGxhdGU+JyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICAuLi5bS0JRX1NFTEVDVF9TQ1JPTExfU1RSQVRFR1ksIEtCUV9EUk9QRE9XTl9TQ1JPTExfU1RSQVRFR1ldLm1hcCgodG9rZW4pID0+XG4gICAgICAgICAgICBLQlFfQ1VTVE9NX1NDUk9MTF9TVFJBVEVHWV9QUk9WSURFUih0b2tlbiwgKG92ZXJsYXkpID0+ICgpID0+IG92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5jbG9zZSgpKVxuICAgICAgICApXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBLYnFUYWIgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIGdldCBjb250ZW50KCk6IFRlbXBsYXRlUG9ydGFsIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnRQb3J0YWw7XG4gICAgfVxuXG4gICAgQENvbnRlbnRDaGlsZChLQlFfVEFCX0xBQkVMKVxuICAgIGdldCB0ZW1wbGF0ZUxhYmVsKCk6IEticVRhYkxhYmVsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RlbXBsYXRlTGFiZWw7XG4gICAgfVxuXG4gICAgc2V0IHRlbXBsYXRlTGFiZWwodmFsdWU6IEticVRhYkxhYmVsKSB7XG4gICAgICAgIHRoaXMuc2V0VGVtcGxhdGVMYWJlbElucHV0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF90ZW1wbGF0ZUxhYmVsOiBLYnFUYWJMYWJlbDtcblxuICAgIC8qKlxuICAgICAqIFRlbXBsYXRlIHByb3ZpZGVkIGluIHRoZSB0YWIgY29udGVudCB0aGF0IHdpbGwgYmUgdXNlZCBpZiBwcmVzZW50LCB1c2VkIHRvIGVuYWJsZSBsYXp5LWxvYWRpbmdcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKEticVRhYkNvbnRlbnQsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KSBleHBsaWNpdENvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogVGVtcGxhdGUgaW5zaWRlIHRoZSBLYnFUYWIgdmlldyB0aGF0IGNvbnRhaW5zIGFuIGA8bmctY29udGVudD5gLiAqL1xuICAgIEBWaWV3Q2hpbGQoVGVtcGxhdGVSZWYsIHsgc3RhdGljOiB0cnVlIH0pIGltcGxpY2l0Q29udGVudDogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHRvb2x0aXBUaXRsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5vdmVyZmxvd1Rvb2x0aXBUaXRsZSArIHRoaXMuX3Rvb2x0aXBUaXRsZTtcbiAgICB9XG5cbiAgICBzZXQgdG9vbHRpcFRpdGxlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdG9vbHRpcFRpdGxlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdG9vbHRpcFRpdGxlID0gJyc7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHRvb2x0aXBQbGFjZW1lbnQ6IFBvcFVwUGxhY2VtZW50cyA9IFBvcFVwUGxhY2VtZW50cy5SaWdodDtcblxuICAgIC8qKiBQbGFpbiB0ZXh0IGxhYmVsIGZvciB0aGUgdGFiLCB1c2VkIHdoZW4gdGhlcmUgaXMgbm8gdGVtcGxhdGUgbGFiZWwuICovXG4gICAgQElucHV0KCdsYWJlbCcpIHRleHRMYWJlbCA9ICcnO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGVtcHR5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSB0YWJJZDogc3RyaW5nO1xuXG4gICAgLyoqIEVtaXRzIHdoZW5ldmVyIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgdGFiIGNoYW5nZXMuICovXG4gICAgcmVhZG9ubHkgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSByZWxhdGl2ZWx5IGluZGV4ZWQgcG9zaXRpb24gd2hlcmUgMCByZXByZXNlbnRzIHRoZSBjZW50ZXIsIG5lZ2F0aXZlIGlzIGxlZnQsIGFuZCBwb3NpdGl2ZVxuICAgICAqIHJlcHJlc2VudHMgdGhlIHJpZ2h0LlxuICAgICAqL1xuICAgIHBvc2l0aW9uOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFRoZSBpbml0aWFsIHJlbGF0aXZlbHkgaW5kZXggb3JpZ2luIG9mIHRoZSB0YWIgaWYgaXQgd2FzIGNyZWF0ZWQgYW5kIHNlbGVjdGVkIGFmdGVyIHRoZXJlXG4gICAgICogd2FzIGFscmVhZHkgYSBzZWxlY3RlZCB0YWIuIFByb3ZpZGVzIGNvbnRleHQgb2Ygd2hhdCBwb3NpdGlvbiB0aGUgdGFiIHNob3VsZCBvcmlnaW5hdGUgZnJvbS5cbiAgICAgKi9cbiAgICBvcmlnaW46IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgdGFiIGlzIGN1cnJlbnRseSBhY3RpdmUuXG4gICAgICovXG4gICAgaXNBY3RpdmUgPSBmYWxzZTtcblxuICAgIGdldCBpc092ZXJmbG93bigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fb3ZlcmZsb3dUb29sdGlwVGl0bGU7XG4gICAgfVxuXG4gICAgZ2V0IG92ZXJmbG93VG9vbHRpcFRpdGxlKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmlzT3ZlcmZsb3duKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7dGhpcy5fb3ZlcmZsb3dUb29sdGlwVGl0bGV9XFxuYDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBzZXQgb3ZlcmZsb3dUb29sdGlwVGl0bGUodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9vdmVyZmxvd1Rvb2x0aXBUaXRsZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX292ZXJmbG93VG9vbHRpcFRpdGxlID0gJyc7XG5cbiAgICAvKiogUG9ydGFsIHRoYXQgd2lsbCBiZSB0aGUgaG9zdGVkIGNvbnRlbnQgb2YgdGhlIHRhYiAqL1xuICAgIHByaXZhdGUgY29udGVudFBvcnRhbDogVGVtcGxhdGVQb3J0YWwgfCBudWxsID0gbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge31cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ3RleHRMYWJlbCcpIHx8IGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ2Rpc2FibGVkJykpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRlbnRQb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5leHBsaWNpdENvbnRlbnQgfHwgdGhpcy5pbXBsaWNpdENvbnRlbnQsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBoYXMgYmVlbiBleHRyYWN0ZWQgdG8gYSB1dGlsIGJlY2F1c2Ugb2YgVFMgNCBhbmQgVkUuXG4gICAgICogVmlldyBFbmdpbmUgZG9lc24ndCBzdXBwb3J0IHByb3BlcnR5IHJlbmFtZSBpbmhlcml0YW5jZS5cbiAgICAgKiBUUyA0LjAgZG9lc24ndCBhbGxvdyBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIGFjY2Vzc29ycyBvciB2aWNlLXZlcnNhLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc2V0VGVtcGxhdGVMYWJlbElucHV0KHZhbHVlOiBLYnFUYWJMYWJlbCkge1xuICAgICAgICAvLyBPbmx5IHVwZGF0ZSB0aGUgdGVtcGxhdGVMYWJlbCB2aWEgcXVlcnkgaWYgdGhlcmUgaXMgYWN0dWFsbHlcbiAgICAgICAgLy8gYSBLYnFUYWJMYWJlbCBmb3VuZC4gVGhpcyB3b3JrcyBhcm91bmQgYW4gaXNzdWUgd2hlcmUgYSB1c2VyIG1heSBoYXZlXG4gICAgICAgIC8vIG1hbnVhbGx5IHNldCBgdGVtcGxhdGVMYWJlbGAgZHVyaW5nIGNyZWF0aW9uIG1vZGUsIHdoaWNoIHdvdWxkIHRoZW4gZ2V0IGNsb2JiZXJlZFxuICAgICAgICAvLyBieSBgdW5kZWZpbmVkYCB3aGVuIHRoaXMgcXVlcnkgcmVzb2x2ZXMuXG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fdGVtcGxhdGVMYWJlbCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvdGFicy90YWIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFLTCxXQUFXLEVBQ1gsU0FBUyxFQUNULGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILG1DQUFtQyxFQUNuQywwQkFBMEIsRUFDMUIsZUFBZSxFQUNsQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBaUJuRSxNQUFNLE9BQU8sTUFBTTtJQUNmLG9CQUFvQjtJQUNwQixJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQ0ksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxhQUFhLENBQUMsS0FBa0I7UUFDaEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFZRCxJQUNJLFlBQVk7UUFDWixPQUFPLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzFELENBQUM7SUFFRCxJQUFJLFlBQVksQ0FBQyxL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Y2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBLQlFfQ1VTVE9NX1NDUk9MTF9TVFJBVEVHWV9QUk9WSURFUixcbiAgICBLQlFfU0VMRUNUX1NDUk9MTF9TVFJBVEVHWSxcbiAgICBQb3BVcFBsYWNlbWVudHNcbn0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2NvcmUnO1xuaW1wb3J0IHsgS0JRX0RST1BET1dOX1NDUk9MTF9TVFJBVEVHWSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBLYnFUYWJDb250ZW50IH0gZnJvbSAnLi90YWItY29udGVudC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgS0JRX1RBQl9MQUJFTCwgS2JxVGFiTGFiZWwgfSBmcm9tICcuL3RhYi1sYWJlbC5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ticS10YWInLFxuICAgIGV4cG9ydEFzOiAna2JxVGFiJyxcbiAgICAvLyBDcmVhdGUgYSB0ZW1wbGF0ZSBmb3IgdGhlIGNvbnRlbnQgb2YgdGhlIDxrYnEtdGFiPiBzbyB0aGF0IHdlIGNhbiBncmFiIGEgcmVmZXJlbmNlIHRvIHRoaXNcbiAgICAvLyBUZW1wbGF0ZVJlZiBhbmQgdXNlIGl0IGluIGEgUG9ydGFsIHRvIHJlbmRlciB0aGUgdGFiIGNvbnRlbnQgaW4gdGhlIGFwcHJvcHJpYXRlIHBsYWNlIGluIHRoZVxuICAgIC8vIHRhYi1ncm91cC5cbiAgICB0ZW1wbGF0ZTogJzxuZy10ZW1wbGF0ZT48bmctY29udGVudCAvPjwvbmctdGVtcGxhdGU+JyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICAuLi5bS0JRX1NFTEVDVF9TQ1JPTExfU1RSQVRFR1ksIEtCUV9EUk9QRE9XTl9TQ1JPTExfU1RSQVRFR1ldLm1hcCgodG9rZW4pID0+XG4gICAgICAgICAgICBLQlFfQ1VTVE9NX1NDUk9MTF9TVFJBVEVHWV9QUk9WSURFUih0b2tlbiwgKG92ZXJsYXkpID0+ICgpID0+IG92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5jbG9zZSgpKVxuICAgICAgICApXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBLYnFUYWIgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIGdldCBjb250ZW50KCk6IFRlbXBsYXRlUG9ydGFsIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnRQb3J0YWw7XG4gICAgfVxuXG4gICAgQENvbnRlbnRDaGlsZChLQlFfVEFCX0xBQkVMKVxuICAgIGdldCB0ZW1wbGF0ZUxhYmVsKCk6IEticVRhYkxhYmVsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RlbXBsYXRlTGFiZWw7XG4gICAgfVxuXG4gICAgc2V0IHRlbXBsYXRlTGFiZWwodmFsdWU6IEticVRhYkxhYmVsKSB7XG4gICAgICAgIHRoaXMuc2V0VGVtcGxhdGVMYWJlbElucHV0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF90ZW1wbGF0ZUxhYmVsOiBLYnFUYWJMYWJlbDtcblxuICAgIC8qKlxuICAgICAqIFRlbXBsYXRlIHByb3ZpZGVkIGluIHRoZSB0YWIgY29udGVudCB0aGF0IHdpbGwgYmUgdXNlZCBpZiBwcmVzZW50LCB1c2VkIHRvIGVuYWJsZSBsYXp5LWxvYWRpbmdcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKEticVRhYkNvbnRlbnQsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KSBleHBsaWNpdENvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogVGVtcGxhdGUgaW5zaWRlIHRoZSBLYnFUYWIgdmlldyB0aGF0IGNvbnRhaW5zIGFuIGA8bmctY29udGVudD5gLiAqL1xuICAgIEBWaWV3Q2hpbGQoVGVtcGxhdGVSZWYsIHsgc3RhdGljOiB0cnVlIH0pIGltcGxpY2l0Q29udGVudDogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHRvb2x0aXBUaXRsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5vdmVyZmxvd1Rvb2x0aXBUaXRsZSArIHRoaXMuX3Rvb2x0aXBUaXRsZTtcbiAgICB9XG5cbiAgICBzZXQgdG9vbHRpcFRpdGxlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdG9vbHRpcFRpdGxlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdG9vbHRpcFRpdGxlID0gJyc7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHRvb2x0aXBQbGFjZW1lbnQ6IFBvcFVwUGxhY2VtZW50cyA9IFBvcFVwUGxhY2VtZW50cy5SaWdodDtcblxuICAgIC8qKiBQbGFpbiB0ZXh0IGxhYmVsIGZvciB0aGUgdGFiLCB1c2VkIHdoZW4gdGhlcmUgaXMgbm8gdGVtcGxhdGUgbGFiZWwuICovXG4gICAgQElucHV0KCdsYWJlbCcpIHRleHRMYWJlbCA9ICcnO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGVtcHR5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSB0YWJJZDogc3RyaW5nO1xuXG4gICAgLyoqIEVtaXRzIHdoZW5ldmVyIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgdGFiIGNoYW5nZXMuICovXG4gICAgcmVhZG9ubHkgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSByZWxhdGl2ZWx5IGluZGV4ZWQgcG9zaXRpb24gd2hlcmUgMCByZXByZXNlbnRzIHRoZSBjZW50ZXIsIG5lZ2F0aXZlIGlzIGxlZnQsIGFuZCBwb3NpdGl2ZVxuICAgICAqIHJlcHJlc2VudHMgdGhlIHJpZ2h0LlxuICAgICAqL1xuICAgIHBvc2l0aW9uOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFRoZSBpbml0aWFsIHJlbGF0aXZlbHkgaW5kZXggb3JpZ2luIG9mIHRoZSB0YWIgaWYgaXQgd2FzIGNyZWF0ZWQgYW5kIHNlbGVjdGVkIGFmdGVyIHRoZXJlXG4gICAgICogd2FzIGFscmVhZHkgYSBzZWxlY3RlZCB0YWIuIFByb3ZpZGVzIGNvbnRleHQgb2Ygd2hhdCBwb3NpdGlvbiB0aGUgdGFiIHNob3VsZCBvcmlnaW5hdGUgZnJvbS5cbiAgICAgKi9cbiAgICBvcmlnaW46IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgdGFiIGlzIGN1cnJlbnRseSBhY3RpdmUuXG4gICAgICovXG4gICAgaXNBY3RpdmUgPSBmYWxzZTtcblxuICAgIGdldCBpc092ZXJmbG93bigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fb3ZlcmZsb3dUb29sdGlwVGl0bGU7XG4gICAgfVxuXG4gICAgZ2V0IG92ZXJmbG93VG9vbHRpcFRpdGxlKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmlzT3ZlcmZsb3duKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7dGhpcy5fb3ZlcmZsb3dUb29sdGlwVGl0bGV9XFxuYDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBzZXQgb3ZlcmZsb3dUb29sdGlwVGl0bGUodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9vdmVyZmxvd1Rvb2x0aXBUaXRsZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX292ZXJmbG93VG9vbHRpcFRpdGxlID0gJyc7XG5cbiAgICAvKiogUG9ydGFsIHRoYXQgd2lsbCBiZSB0aGUgaG9zdGVkIGNvbnRlbnQgb2YgdGhlIHRhYiAqL1xuICAgIHByaXZhdGUgY29udGVudFBvcnRhbDogVGVtcGxhdGVQb3J0YWwgfCBudWxsID0gbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge31cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ3RleHRMYWJlbCcpIHx8IGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ2Rpc2FibGVkJykpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRlbnRQb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5leHBsaWNpdENvbnRlbnQgfHwgdGhpcy5pbXBsaWNpdENvbnRlbnQsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBoYXMgYmVlbiBleHRyYWN0ZWQgdG8gYSB1dGlsIGJlY2F1c2Ugb2YgVFMgNCBhbmQgVkUuXG4gICAgICogVmlldyBFbmdpbmUgZG9lc24ndCBzdXBwb3J0IHByb3BlcnR5IHJlbmFtZSBpbmhlcml0YW5jZS5cbiAgICAgKiBUUyA0LjAgZG9lc24ndCBhbGxvdyBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIGFjY2Vzc29ycyBvciB2aWNlLXZlcnNhLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc2V0VGVtcGxhdGVMYWJlbElucHV0KHZhbHVlOiBLYnFUYWJMYWJlbCkge1xuICAgICAgICAvLyBPbmx5IHVwZGF0ZSB0aGUgdGVtcGxhdGVMYWJlbCB2aWEgcXVlcnkgaWYgdGhlcmUgaXMgYWN0dWFsbHlcbiAgICAgICAgLy8gYSBLYnFUYWJMYWJlbCBmb3VuZC4gVGhpcyB3b3JrcyBhcm91bmQgYW4gaXNzdWUgd2hlcmUgYSB1c2VyIG1heSBoYXZlXG4gICAgICAgIC8vIG1hbnVhbGx5IHNldCBgdGVtcGxhdGVMYWJlbGAgZHVyaW5nIGNyZWF0aW9uIG1vZGUsIHdoaWNoIHdvdWxkIHRoZW4gZ2V0IGNsb2JiZXJlZFxuICAgICAgICAvLyBieSBgdW5kZWZpbmVkYCB3aGVuIHRoaXMgcXVlcnkgcmVzb2x2ZXMuXG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fdGVtcGxhdGVMYWJlbCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -108,7 +108,7 @@ export class KbqTagInput {
108
108
  if (!this.inputElement.value) {
109
109
  this._tagList.keydown(event);
110
110
  }
111
- if (this.isSeparatorKey(event)) {
111
+ if (this.isSeparatorKey(event) && this.inputElement.value) {
112
112
  this.emitTagEnd();
113
113
  event.preventDefault();
114
114
  }
@@ -276,4 +276,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
276
276
  }], disabled: [{
277
277
  type: Input
278
278
  }] } });
279
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLWlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy90YWdzL3RhZy1pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxJQUFJLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsd0JBQXdCLEVBQXlCLE1BQU0sdUJBQXVCLENBQUM7QUFDeEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7OztBQUdsRCxNQUFNLDRCQUE0QixHQUF1QztJQUNyRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFO0lBQzFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7SUFDbkMsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtJQUNsQyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO0lBQ2xDLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7Q0FDekMsQ0FBQztBQWVGLGdEQUFnRDtBQUNoRCxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7QUFFckI7OztHQUdHO0FBa0JILE1BQU0sT0FBTyxXQUFXO0lBSXBCOzs7O09BSUc7SUFDSCxJQUNJLGlCQUFpQixDQUFDLEtBQWU7UUFDakMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUlELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNwRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFbEQsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUNqRCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDWCxDQUFDO0lBZ0JELGtDQUFrQztJQUNsQyxJQUNJLE9BQU8sQ0FBQyxLQUFpQjtRQUN6QixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsQ0FBQztJQUNMLENBQUM7SUFJRDs7T0FFRztJQUNILElBQ0ksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsS0FBYztRQUN4QixJQUFJLENBQUMsVUFBVSxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFJRDs7T0FFRztJQUNILElBQ0ksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxVQUFVLENBQUMsS0FBYztRQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFJRCxxQ0FBcUM7SUFDckMsSUFDSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxJQUFJLFFBQVEsQ0FBQyxLQUFjO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUlELGtDQUFrQztJQUNsQyxJQUFJLEtBQUs7UUFDTCxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQVNELFlBQ1ksVUFBd0MsRUFDeEMsUUFBbUIsRUFDZSxjQUFxQyxFQUNuRCxhQUFzQixFQUN2QixTQUFvQixFQUNwQixtQkFBNEM7UUFML0QsZUFBVSxHQUFWLFVBQVUsQ0FBOEI7UUFDeEMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNlLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQUNuRCxrQkFBYSxHQUFiLGFBQWEsQ0FBUztRQUN2QixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBeUI7UUExRzNFLHNDQUFzQztRQUN0QyxZQUFPLEdBQVksS0FBSyxDQUFDO1FBWWpCLHVCQUFrQixHQUFhLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUM7UUFZN0UseUNBQXlDO1FBQ1YsV0FBTSxHQUFtQyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUU3RyxpRUFBaUU7UUFDeEQsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUVuQyxvQ0FBb0M7UUFDM0IsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFFbEMsK0JBQStCO1FBQ3RCLE9BQUUsR0FBVyxzQkFBc0IsWUFBWSxFQUFFLEVBQUUsQ0FBQztRQXlCckQsZUFBVSxHQUFZLElBQUksQ0FBQztRQTBCM0IsY0FBUyxHQUFZLEtBQUssQ0FBQztRQU9uQyxpQ0FBNEIsR0FBVyxDQUFDLENBQUM7UUFlckMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWlDLENBQUM7UUFFdEUsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFFNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsSUFBSSw0QkFBNEIsQ0FBQztRQUNsRixJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3pHLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFvQjtRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBRWxCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMzQixDQUFDO0lBQ0wsQ0FBQztJQUVELGdFQUFnRTtJQUNoRSxJQUFJLENBQUMsS0FBaUI7UUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFFckIseUNBQXlDO1FBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBRXpCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMzRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdEIsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxpQkFBaUI7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDckIsT0FBTztRQUNYLENBQUM7UUFFQSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQTZDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVELCtEQUErRDtJQUMvRCxVQUFVO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUN2RSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGFBQWE7Z0JBQUUsT0FBTztZQUVoRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQy9GLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzVCLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7YUFDcEIsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDO2FBQ3pCLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsZ0RBQWdEO1FBQ2hELElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxPQUFPLENBQUMsTUFBc0I7UUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN4QixPQUFPO1FBQ1gsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWxELElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsRCxPQUFPO1FBQ1gsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQztRQUUzQixLQUFLLE1BQU0sU0FBUyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN0QyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUVoRixNQUFNO1lBQ1YsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDckIsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQixDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQWEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFekUsS0FBSzthQUNBLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzNDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXBGLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRXhCLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN4QixNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELGdCQUFnQjtRQUNaLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUU5QyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQztRQUM3RCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUUzRCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQztRQUM1RixDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ2hDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTztRQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCx5QkFBeUI7SUFDekIsS0FBSztRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVPLFNBQVMsQ0FBQyxLQUFLO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN2RSxDQUFDO0lBRU8scUJBQXFCLENBQUMsT0FBZTtRQUN6QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXRDLElBQUksR0FBRyxFQUFFLENBQUM7WUFDTixPQUFPLEdBQUcsQ0FBQztRQUNmLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU8sVUFBVTtRQUNkLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDNUIsQ0FBQztJQUVPLG9CQUFvQjtRQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsb0VBQW9FO0lBQzVELGNBQWMsQ0FBQyxLQUFvQjtRQUN2QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0YsQ0FBQztrSUEzUVEsV0FBVyxxRUF3R1Isd0JBQXdCO3NIQXhHM0IsV0FBVzs7NEZBQVgsV0FBVztrQkFqQnZCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsUUFBUSxFQUFFLDZCQUE2QjtvQkFDdkMsSUFBSSxFQUFFO3dCQUNGLEtBQUssRUFBRSxlQUFlO3dCQUV0QixNQUFNLEVBQUUsSUFBSTt3QkFDWixpQkFBaUIsRUFBRSxrQkFBa0I7d0JBQ3JDLG9CQUFvQixFQUFFLHFCQUFxQjt3QkFFM0MsV0FBVyxFQUFFLG1CQUFtQjt3QkFDaEMsUUFBUSxFQUFFLGNBQWM7d0JBQ3hCLFNBQVMsRUFBRSxXQUFXO3dCQUN0QixTQUFTLEVBQUUsV0FBVzt3QkFDdEIsU0FBUyxFQUFFLGlCQUFpQjtxQkFDL0I7aUJBQ0o7OzBCQXlHUSxNQUFNOzJCQUFDLHdCQUF3Qjs7MEJBQy9CLFFBQVE7OzBCQUFJLElBQUk7OzBCQUNoQixRQUFROzswQkFBSSxJQUFJOzswQkFDaEIsUUFBUTs7MEJBQUksSUFBSTt5Q0FqR2pCLGlCQUFpQjtzQkFEcEIsS0FBSzt1QkFBQyw4QkFBOEI7Z0JBa0JOLE1BQU07c0JBQXBDLE1BQU07dUJBQUMscUJBQXFCO2dCQUdwQixRQUFRO3NCQUFoQixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0csRUFBRTtzQkFBVixLQUFLO2dCQUlGLE9BQU87c0JBRFYsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBY25CLFNBQVM7c0JBRFosS0FBSzt1QkFBQyxzQkFBc0I7Z0JBZXpCLFVBQVU7c0JBRGIsS0FBSzt1QkFBQyx1QkFBdUI7Z0JBYTFCLFFBQVE7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBSZW5kZXJlcjIsXG4gICAgU2VsZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENPTU1BLCBFTlRFUiwgU0VNSUNPTE9OLCBTUEFDRSwgVEFCIH0gZnJvbSAnQGtvb2JpcS9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgS2JxQXV0b2NvbXBsZXRlVHJpZ2dlciB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgaXNCb29sZWFuIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2NvcmUnO1xuaW1wb3J0IHsgS2JxVHJpbSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9mb3JtLWZpZWxkJztcbmltcG9ydCB7IEtCUV9UQUdTX0RFRkFVTFRfT1BUSU9OUywgS2JxVGFnc0RlZmF1bHRPcHRpb25zIH0gZnJvbSAnLi90YWctZGVmYXVsdC1vcHRpb25zJztcbmltcG9ydCB7IEticVRhZ0xpc3QgfSBmcm9tICcuL3RhZy1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBLYnFUYWdUZXh0Q29udHJvbCB9IGZyb20gJy4vdGFnLXRleHQtY29udHJvbCc7XG5cbmNvbnN0IEticVRhZ0lucHV0RGVmYXVsdFNlcGFyYXRvcnM6IHsgW2tleTogbnVtYmVyXTogS2JxVGFnU2VwYXJhdG9yIH0gPSB7XG4gICAgW0VOVEVSXTogeyBzeW1ib2w6IC9cXHI/XFxuLywga2V5OiAnRW50ZXInIH0sXG4gICAgW1RBQl06IHsgc3ltYm9sOiAvXFx0Lywga2V5OiAnVGFiJyB9LFxuICAgIFtTUEFDRV06IHsgc3ltYm9sOiAvIC8sIGtleTogJyAnIH0sXG4gICAgW0NPTU1BXTogeyBzeW1ib2w6IC8sLywga2V5OiAnLCcgfSxcbiAgICBbU0VNSUNPTE9OXTogeyBzeW1ib2w6IC87Lywga2V5OiAnOycgfVxufTtcblxuLyoqIFJlcHJlc2VudHMgYW4gaW5wdXQgZXZlbnQgb24gYSBga2JxVGFnSW5wdXRgLiAqL1xuZXhwb3J0IGludGVyZmFjZSBLYnFUYWdJbnB1dEV2ZW50IHtcbiAgICAvKiogVGhlIG5hdGl2ZSBgPGlucHV0PmAgZWxlbWVudCB0aGF0IHRoZSBldmVudCBpcyBiZWluZyBmaXJlZCBmb3IuICovXG4gICAgaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgICAvKiogVGhlIHZhbHVlIG9mIHRoZSBpbnB1dC4gKi9cbiAgICB2YWx1ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEticVRhZ1NlcGFyYXRvciB7XG4gICAgc3ltYm9sOiBSZWdFeHA7XG4gICAga2V5OiBzdHJpbmc7XG59XG4vLyBJbmNyZWFzaW5nIGludGVnZXIgZm9yIGdlbmVyYXRpbmcgdW5pcXVlIGlkcy5cbmxldCBuZXh0VW5pcXVlSWQgPSAwO1xuXG4vKipcbiAqIERpcmVjdGl2ZSB0aGF0IGFkZHMgdGFnLXNwZWNpZmljIGJlaGF2aW9ycyB0byBhbiBpbnB1dCBlbGVtZW50IGluc2lkZSBgPGticS1mb3JtLWZpZWxkPmAuXG4gKiBNYXkgYmUgcGxhY2VkIGluc2lkZSBvciBvdXRzaWRlIG9mIGFuIGA8a2JxLXRhZy1saXN0PmAuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnaW5wdXRba2JxVGFnSW5wdXRGb3JdJyxcbiAgICBleHBvcnRBczogJ2ticVRhZ0lucHV0LCBrYnFUYWdJbnB1dEZvcicsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ticS10YWctaW5wdXQnLFxuXG4gICAgICAgICdbaWRdJzogJ2lkJyxcbiAgICAgICAgJ1thdHRyLmRpc2FibGVkXSc6ICdkaXNhYmxlZCB8fCBudWxsJyxcbiAgICAgICAgJ1thdHRyLnBsYWNlaG9sZGVyXSc6ICdwbGFjZWhvbGRlciB8fCBudWxsJyxcblxuICAgICAgICAnKGtleWRvd24pJzogJ29uS2V5ZG93bigkZXZlbnQpJyxcbiAgICAgICAgJyhibHVyKSc6ICdibHVyKCRldmVudCknLFxuICAgICAgICAnKGZvY3VzKSc6ICdvbkZvY3VzKCknLFxuICAgICAgICAnKGlucHV0KSc6ICdvbklucHV0KCknLFxuICAgICAgICAnKHBhc3RlKSc6ICdvblBhc3RlKCRldmVudCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBLYnFUYWdJbnB1dCBpbXBsZW1lbnRzIEticVRhZ1RleHRDb250cm9sLCBPbkNoYW5nZXMge1xuICAgIC8qKiBXaGV0aGVyIHRoZSBjb250cm9sIGlzIGZvY3VzZWQuICovXG4gICAgZm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGxpc3Qgb2Yga2V5IGNvZGVzIHRoYXQgd2lsbCB0cmlnZ2VyIGEgdGFnRW5kIGV2ZW50LlxuICAgICAqXG4gICAgICogRGVmYXVsdHMgdG8gYFtFTlRFUl1gLlxuICAgICAqL1xuICAgIEBJbnB1dCgna2JxVGFnSW5wdXRTZXBhcmF0b3JLZXlDb2RlcycpXG4gICAgc2V0IHNlcGFyYXRvcktleUNvZGVzKHZhbHVlOiBudW1iZXJbXSkge1xuICAgICAgICB0aGlzLl9zZXBhcmF0b3JLZXlDb2RlcyA9IHZhbHVlIHx8IFtdO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NlcGFyYXRvcktleUNvZGVzOiBudW1iZXJbXSA9IHRoaXMuZGVmYXVsdE9wdGlvbnMuc2VwYXJhdG9yS2V5Q29kZXM7XG5cbiAgICBnZXQgc2VwYXJhdG9ycygpOiBLYnFUYWdTZXBhcmF0b3JbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZXBhcmF0b3JLZXlDb2Rlcy5yZWR1Y2UoKGFjYzogYW55LCBrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlcGFyYXRvciA9IHRoaXMuZ2V0U2VwYXJhdG9yQnlLZXlDb2RlKGtleSk7XG5cbiAgICAgICAgICAgIHJldHVybiBzZXBhcmF0b3IgPyBbLi4uYWNjLCBzZXBhcmF0b3JdIDogYWNjO1xuICAgICAgICB9LCBbXSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2VwYXJhdG9yczogeyBba2V5OiBudW1iZXJdOiBLYnFUYWdTZXBhcmF0b3IgfTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYSB0YWcgaXMgdG8gYmUgYWRkZWQuICovXG4gICAgQE91dHB1dCgna2JxVGFnSW5wdXRUb2tlbkVuZCcpIHRhZ0VuZDogRXZlbnRFbWl0dGVyPEticVRhZ0lucHV0RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxLYnFUYWdJbnB1dEV2ZW50PigpO1xuXG4gICAgLyoqIEEgdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIGFsbG93L3ByZXZlbnQgdGFncyBkdXBsaWNhdGlvbiAgKi9cbiAgICBASW5wdXQoKSBkaXN0aW5jdDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIFRoZSBpbnB1dCdzIHBsYWNlaG9sZGVyIHRleHQuICovXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIFVuaXF1ZSBpZCBmb3IgdGhlIGlucHV0LiAqL1xuICAgIEBJbnB1dCgpIGlkOiBzdHJpbmcgPSBga2JxLXRhZy1saXN0LWlucHV0LSR7bmV4dFVuaXF1ZUlkKyt9YDtcblxuICAgIC8qKiBSZWdpc3RlciBpbnB1dCBmb3IgdGFnIGxpc3QgKi9cbiAgICBASW5wdXQoJ2ticVRhZ0lucHV0Rm9yJylcbiAgICBzZXQgdGFnTGlzdCh2YWx1ZTogS2JxVGFnTGlzdCkge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX3RhZ0xpc3QgPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuX3RhZ0xpc3QucmVnaXN0ZXJJbnB1dCh0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3RhZ0xpc3Q6IEticVRhZ0xpc3Q7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgdGFnRW5kIGV2ZW50IHdpbGwgYmUgZW1pdHRlZCB3aGVuIHRoZSBpbnB1dCBpcyBibHVycmVkLlxuICAgICAqL1xuICAgIEBJbnB1dCgna2JxVGFnSW5wdXRBZGRPbkJsdXInKVxuICAgIGdldCBhZGRPbkJsdXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRPbkJsdXI7XG4gICAgfVxuXG4gICAgc2V0IGFkZE9uQmx1cih2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9hZGRPbkJsdXIgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2FkZE9uQmx1cjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSB0YWdFbmQgZXZlbnQgd2lsbCBiZSBlbWl0dGVkIHdoZW4gdGhlIHRleHQgcGFzdGVkLlxuICAgICAqL1xuICAgIEBJbnB1dCgna2JxVGFnSW5wdXRBZGRPblBhc3RlJylcbiAgICBnZXQgYWRkT25QYXN0ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZE9uUGFzdGU7XG4gICAgfVxuXG4gICAgc2V0IGFkZE9uUGFzdGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fYWRkT25QYXN0ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYWRkT25QYXN0ZTogYm9vbGVhbjtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyBkaXNhYmxlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkIHx8ICh0aGlzLl90YWdMaXN0ICYmIHRoaXMuX3RhZ0xpc3QuZGlzYWJsZWQpO1xuICAgIH1cblxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyBlbXB0eS4gKi9cbiAgICBnZXQgZW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5pbnB1dEVsZW1lbnQudmFsdWU7XG4gICAgfVxuXG4gICAgY291bnRPZlN5bWJvbHNGb3JVcGRhdGVXaWR0aDogbnVtYmVyID0gMztcblxuICAgIHByaXZhdGUgb25lU3ltYm9sV2lkdGg6IG51bWJlcjtcblxuICAgIC8qKiBUaGUgbmF0aXZlIGlucHV0IGVsZW1lbnQgdG8gd2hpY2ggdGhpcyBkaXJlY3RpdmUgaXMgYXR0YWNoZWQuICovXG4gICAgcHJpdmF0ZSBpbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+LFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIEBJbmplY3QoS0JRX1RBR1NfREVGQVVMVF9PUFRJT05TKSBwcml2YXRlIGRlZmF1bHRPcHRpb25zOiBLYnFUYWdzRGVmYXVsdE9wdGlvbnMsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHJpdmF0ZSB0cmltRGlyZWN0aXZlOiBLYnFUcmltLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgYXV0b2NvbXBsZXRlVHJpZ2dlcj86IEticUF1dG9jb21wbGV0ZVRyaWdnZXJcbiAgICApIHtcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdElucHV0V2lkdGgoKTtcblxuICAgICAgICB0aGlzLl9zZXBhcmF0b3JzID0gdGhpcy5kZWZhdWx0T3B0aW9ucy5zZXBhcmF0b3JzIHx8IEticVRhZ0lucHV0RGVmYXVsdFNlcGFyYXRvcnM7XG4gICAgICAgIHRoaXMuX2FkZE9uUGFzdGUgPSBpc0Jvb2xlYW4odGhpcy5kZWZhdWx0T3B0aW9ucy5hZGRPblBhc3RlKSA/IHRoaXMuZGVmYXVsdE9wdGlvbnMuYWRkT25QYXN0ZSA6IHRydWU7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoKSB7XG4gICAgICAgIHRoaXMuX3RhZ0xpc3Quc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG5cbiAgICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlucHV0RWxlbWVudC52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fdGFnTGlzdC5rZXlkb3duKGV2ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzU2VwYXJhdG9yS2V5KGV2ZW50KSkge1xuICAgICAgICAgICAgdGhpcy5lbWl0VGFnRW5kKCk7XG5cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQ2hlY2tzIHRvIHNlZSBpZiB0aGUgYmx1ciBzaG91bGQgZW1pdCB0aGUgKHRhZ0VuZCkgZXZlbnQuICovXG4gICAgYmx1cihldmVudDogRm9jdXNFdmVudCkge1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcblxuICAgICAgICAvLyBCbHVyIHRoZSB0YWcgbGlzdCBpZiBpdCBpcyBub3QgZm9jdXNlZFxuICAgICAgICBpZiAoIXRoaXMuX3RhZ0xpc3QuZm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy50cmlnZ2VyVmFsaWRhdGlvbigpO1xuXG4gICAgICAgICAgICB0aGlzLl90YWdMaXN0LmJsdXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmFkZE9uQmx1ciAmJiAodGhpcy5hdXRvY29tcGxldGVUcmlnZ2VyPy5vbklucHV0Qmx1cihldmVudCkgfHwgdHJ1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuZW1pdFRhZ0VuZCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdGFnTGlzdC5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cblxuICAgIHRyaWdnZXJWYWxpZGF0aW9uKCkge1xuICAgICAgICBpZiAoIXRoaXMuaGFzQ29udHJvbCgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAodGhpcy5uZ0NvbnRyb2wuc3RhdHVzQ2hhbmdlcyBhcyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgbnVsbD4pLmVtaXQodGhpcy5uZ0NvbnRyb2wuc3RhdHVzKTtcbiAgICB9XG5cbiAgICAvKiogQ2hlY2tzIHRvIHNlZSBpZiB0aGUgKHRhZ0VuZCkgZXZlbnQgbmVlZHMgdG8gYmUgZW1pdHRlZC4gKi9cbiAgICBlbWl0VGFnRW5kKCkge1xuICAgICAgICBpZiAoIXRoaXMuaGFzQ29udHJvbCgpIHx8ICh0aGlzLmhhc0NvbnRyb2woKSAmJiAhdGhpcy5uZ0NvbnRyb2wuaW52YWxpZCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRpc3RpbmN0ICYmIHRoaXMuaGFzRHVwbGljYXRlcykgcmV0dXJuO1xuXG4gICAgICAgICAgICB0aGlzLnRhZ0VuZC5lbWl0KHsgaW5wdXQ6IHRoaXMuaW5wdXRFbGVtZW50LCB2YWx1ZTogdGhpcy50cmltVmFsdWUodGhpcy5pbnB1dEVsZW1lbnQudmFsdWUpIH0pO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVJbnB1dFdpZHRoKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgaGFzRHVwbGljYXRlcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhZ0xpc3QudGFnc1xuICAgICAgICAgICAgLm1hcCgoeyB2YWx1ZSB9KSA9PiB2YWx1ZSlcbiAgICAgICAgICAgIC5zb21lKCh0YWdWYWx1ZSkgPT4gdGFnVmFsdWUgPT09IHRoaXMudHJpbVZhbHVlKHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlKSk7XG4gICAgfVxuXG4gICAgb25JbnB1dCgpIHtcbiAgICAgICAgdGhpcy51cGRhdGVJbnB1dFdpZHRoKCk7XG4gICAgICAgIC8vIExldCB0YWcgbGlzdCBrbm93IHdoZW5ldmVyIHRoZSB2YWx1ZSBjaGFuZ2VzLlxuICAgICAgICB0aGlzLl90YWdMaXN0LnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuXG4gICAgb25QYXN0ZSgkZXZlbnQ6IENsaXBib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICghJGV2ZW50LmNsaXBib2FyZERhdGEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRhdGEgPSAkZXZlbnQuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0Jyk7XG5cbiAgICAgICAgaWYgKChkYXRhICYmIGRhdGEubGVuZ3RoID09PSAwKSB8fCAhdGhpcy5hZGRPblBhc3RlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpdGVtczogc3RyaW5nW10gPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IHNlcGFyYXRvciBvZiB0aGlzLnNlcGFyYXRvcnMpIHtcbiAgICAgICAgICAgIGlmIChkYXRhLnNlYXJjaChzZXBhcmF0b3Iuc3ltYm9sKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaCguLi5kYXRhLnNwbGl0KHNlcGFyYXRvci5zeW1ib2wpLm1hcCgoaXRlbSkgPT4gdGhpcy50cmltVmFsdWUoaXRlbSkpKTtcblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgaXRlbXMucHVzaChkYXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRhZ1ZhbHVlczogc3RyaW5nW10gPSB0aGlzLl90YWdMaXN0LnRhZ3MubWFwKCh7IHZhbHVlIH0pID0+IHZhbHVlKTtcblxuICAgICAgICBpdGVtc1xuICAgICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gIXRhZ1ZhbHVlcy5pbmNsdWRlcyhpdGVtKSlcbiAgICAgICAgICAgIC5mb3JFYWNoKChpdGVtKSA9PiB0aGlzLnRhZ0VuZC5lbWl0KHsgaW5wdXQ6IHRoaXMuaW5wdXRFbGVtZW50LCB2YWx1ZTogaXRlbSB9KSk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVJbnB1dFdpZHRoKCk7XG5cbiAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICB1cGRhdGVJbnB1dFdpZHRoKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBsZW5ndGggPSB0aGlzLmlucHV0RWxlbWVudC52YWx1ZS5sZW5ndGg7XG5cbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmlucHV0RWxlbWVudCwgJ21heC13aWR0aCcsIDApO1xuICAgICAgICB0aGlzLm9uZVN5bWJvbFdpZHRoID0gdGhpcy5pbnB1dEVsZW1lbnQuc2Nyb2xsV2lkdGggLyBsZW5ndGg7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pbnB1dEVsZW1lbnQsICdtYXgtd2lkdGgnLCAnJyk7XG5cbiAgICAgICAgaWYgKGxlbmd0aCA+IHRoaXMuY291bnRPZlN5bWJvbHNGb3JVcGRhdGVXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmlucHV0RWxlbWVudCwgJ3dpZHRoJywgYCR7bGVuZ3RoICogdGhpcy5vbmVTeW1ib2xXaWR0aH1weGApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0SW5wdXRXaWR0aCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Gb2N1cygpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fdGFnTGlzdC5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cblxuICAgIC8qKiBGb2N1c2VzIHRoZSBpbnB1dC4gKi9cbiAgICBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRyaW1WYWx1ZSh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmltRGlyZWN0aXZlID8gdGhpcy50cmltRGlyZWN0aXZlLnRyaW0odmFsdWUpIDogdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZXBhcmF0b3JCeUtleUNvZGUoa2V5Q29kZTogbnVtYmVyKTogS2JxVGFnU2VwYXJhdG9yIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHNlcCA9IHRoaXMuX3NlcGFyYXRvcnNba2V5Q29kZV07XG5cbiAgICAgICAgaWYgKHNlcCkge1xuICAgICAgICAgICAgcmV0dXJuIHNlcDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzQ29udHJvbCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5uZ0NvbnRyb2w7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXREZWZhdWx0SW5wdXRXaWR0aCgpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmlucHV0RWxlbWVudCwgJ3dpZHRoJywgJzMwcHgnKTtcbiAgICB9XG5cbiAgICAvKiogQ2hlY2tzIHdoZXRoZXIgYSBrZXljb2RlIGlzIG9uZSBvZiB0aGUgY29uZmlndXJlZCBzZXBhcmF0b3JzLiAqL1xuICAgIHByaXZhdGUgaXNTZXBhcmF0b3JLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VwYXJhdG9ycy5zb21lKChzZXBhcmF0b3IpID0+IHNlcGFyYXRvci5rZXkgPT09IGV2ZW50LmtleSAmJiAhZXZlbnQuc2hpZnRLZXkpO1xuICAgIH1cbn1cbiJdfQ==
279
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLWlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy90YWdzL3RhZy1pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxJQUFJLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsd0JBQXdCLEVBQXlCLE1BQU0sdUJBQXVCLENBQUM7QUFDeEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7OztBQUdsRCxNQUFNLDRCQUE0QixHQUF1QztJQUNyRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFO0lBQzFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7SUFDbkMsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtJQUNsQyxDQUFD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QkFBdUI7Z0JBYTFCLFFBQVE7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBSZW5kZXJlcjIsXG4gICAgU2VsZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENPTU1BLCBFTlRFUiwgU0VNSUNPTE9OLCBTUEFDRSwgVEFCIH0gZnJvbSAnQGtvb2JpcS9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgS2JxQXV0b2NvbXBsZXRlVHJpZ2dlciB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgaXNCb29sZWFuIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2NvcmUnO1xuaW1wb3J0IHsgS2JxVHJpbSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9mb3JtLWZpZWxkJztcbmltcG9ydCB7IEtCUV9UQUdTX0RFRkFVTFRfT1BUSU9OUywgS2JxVGFnc0RlZmF1bHRPcHRpb25zIH0gZnJvbSAnLi90YWctZGVmYXVsdC1vcHRpb25zJztcbmltcG9ydCB7IEticVRhZ0xpc3QgfSBmcm9tICcuL3RhZy1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBLYnFUYWdUZXh0Q29udHJvbCB9IGZyb20gJy4vdGFnLXRleHQtY29udHJvbCc7XG5cbmNvbnN0IEticVRhZ0lucHV0RGVmYXVsdFNlcGFyYXRvcnM6IHsgW2tleTogbnVtYmVyXTogS2JxVGFnU2VwYXJhdG9yIH0gPSB7XG4gICAgW0VOVEVSXTogeyBzeW1ib2w6IC9cXHI/XFxuLywga2V5OiAnRW50ZXInIH0sXG4gICAgW1RBQl06IHsgc3ltYm9sOiAvXFx0Lywga2V5OiAnVGFiJyB9LFxuICAgIFtTUEFDRV06IHsgc3ltYm9sOiAvIC8sIGtleTogJyAnIH0sXG4gICAgW0NPTU1BXTogeyBzeW1ib2w6IC8sLywga2V5OiAnLCcgfSxcbiAgICBbU0VNSUNPTE9OXTogeyBzeW1ib2w6IC87Lywga2V5OiAnOycgfVxufTtcblxuLyoqIFJlcHJlc2VudHMgYW4gaW5wdXQgZXZlbnQgb24gYSBga2JxVGFnSW5wdXRgLiAqL1xuZXhwb3J0IGludGVyZmFjZSBLYnFUYWdJbnB1dEV2ZW50IHtcbiAgICAvKiogVGhlIG5hdGl2ZSBgPGlucHV0PmAgZWxlbWVudCB0aGF0IHRoZSBldmVudCBpcyBiZWluZyBmaXJlZCBmb3IuICovXG4gICAgaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgICAvKiogVGhlIHZhbHVlIG9mIHRoZSBpbnB1dC4gKi9cbiAgICB2YWx1ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEticVRhZ1NlcGFyYXRvciB7XG4gICAgc3ltYm9sOiBSZWdFeHA7XG4gICAga2V5OiBzdHJpbmc7XG59XG4vLyBJbmNyZWFzaW5nIGludGVnZXIgZm9yIGdlbmVyYXRpbmcgdW5pcXVlIGlkcy5cbmxldCBuZXh0VW5pcXVlSWQgPSAwO1xuXG4vKipcbiAqIERpcmVjdGl2ZSB0aGF0IGFkZHMgdGFnLXNwZWNpZmljIGJlaGF2aW9ycyB0byBhbiBpbnB1dCBlbGVtZW50IGluc2lkZSBgPGticS1mb3JtLWZpZWxkPmAuXG4gKiBNYXkgYmUgcGxhY2VkIGluc2lkZSBvciBvdXRzaWRlIG9mIGFuIGA8a2JxLXRhZy1saXN0PmAuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnaW5wdXRba2JxVGFnSW5wdXRGb3JdJyxcbiAgICBleHBvcnRBczogJ2ticVRhZ0lucHV0LCBrYnFUYWdJbnB1dEZvcicsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ticS10YWctaW5wdXQnLFxuXG4gICAgICAgICdbaWRdJzogJ2lkJyxcbiAgICAgICAgJ1thdHRyLmRpc2FibGVkXSc6ICdkaXNhYmxlZCB8fCBudWxsJyxcbiAgICAgICAgJ1thdHRyLnBsYWNlaG9sZGVyXSc6ICdwbGFjZWhvbGRlciB8fCBudWxsJyxcblxuICAgICAgICAnKGtleWRvd24pJzogJ29uS2V5ZG93bigkZXZlbnQpJyxcbiAgICAgICAgJyhibHVyKSc6ICdibHVyKCRldmVudCknLFxuICAgICAgICAnKGZvY3VzKSc6ICdvbkZvY3VzKCknLFxuICAgICAgICAnKGlucHV0KSc6ICdvbklucHV0KCknLFxuICAgICAgICAnKHBhc3RlKSc6ICdvblBhc3RlKCRldmVudCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBLYnFUYWdJbnB1dCBpbXBsZW1lbnRzIEticVRhZ1RleHRDb250cm9sLCBPbkNoYW5nZXMge1xuICAgIC8qKiBXaGV0aGVyIHRoZSBjb250cm9sIGlzIGZvY3VzZWQuICovXG4gICAgZm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGxpc3Qgb2Yga2V5IGNvZGVzIHRoYXQgd2lsbCB0cmlnZ2VyIGEgdGFnRW5kIGV2ZW50LlxuICAgICAqXG4gICAgICogRGVmYXVsdHMgdG8gYFtFTlRFUl1gLlxuICAgICAqL1xuICAgIEBJbnB1dCgna2JxVGFnSW5wdXRTZXBhcmF0b3JLZXlDb2RlcycpXG4gICAgc2V0IHNlcGFyYXRvcktleUNvZGVzKHZhbHVlOiBudW1iZXJbXSkge1xuICAgICAgICB0aGlzLl9zZXBhcmF0b3JLZXlDb2RlcyA9IHZhbHVlIHx8IFtdO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NlcGFyYXRvcktleUNvZGVzOiBudW1iZXJbXSA9IHRoaXMuZGVmYXVsdE9wdGlvbnMuc2VwYXJhdG9yS2V5Q29kZXM7XG5cbiAgICBnZXQgc2VwYXJhdG9ycygpOiBLYnFUYWdTZXBhcmF0b3JbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZXBhcmF0b3JLZXlDb2Rlcy5yZWR1Y2UoKGFjYzogYW55LCBrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlcGFyYXRvciA9IHRoaXMuZ2V0U2VwYXJhdG9yQnlLZXlDb2RlKGtleSk7XG5cbiAgICAgICAgICAgIHJldHVybiBzZXBhcmF0b3IgPyBbLi4uYWNjLCBzZXBhcmF0b3JdIDogYWNjO1xuICAgICAgICB9LCBbXSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2VwYXJhdG9yczogeyBba2V5OiBudW1iZXJdOiBLYnFUYWdTZXBhcmF0b3IgfTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYSB0YWcgaXMgdG8gYmUgYWRkZWQuICovXG4gICAgQE91dHB1dCgna2JxVGFnSW5wdXRUb2tlbkVuZCcpIHJlYWRvbmx5IHRhZ0VuZDogRXZlbnRFbWl0dGVyPEticVRhZ0lucHV0RXZlbnQ+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxLYnFUYWdJbnB1dEV2ZW50PigpO1xuXG4gICAgLyoqIEEgdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIGFsbG93L3ByZXZlbnQgdGFncyBkdXBsaWNhdGlvbiAgKi9cbiAgICBASW5wdXQoKSBkaXN0aW5jdDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIFRoZSBpbnB1dCdzIHBsYWNlaG9sZGVyIHRleHQuICovXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIFVuaXF1ZSBpZCBmb3IgdGhlIGlucHV0LiAqL1xuICAgIEBJbnB1dCgpIGlkOiBzdHJpbmcgPSBga2JxLXRhZy1saXN0LWlucHV0LSR7bmV4dFVuaXF1ZUlkKyt9YDtcblxuICAgIC8qKiBSZWdpc3RlciBpbnB1dCBmb3IgdGFnIGxpc3QgKi9cbiAgICBASW5wdXQoJ2ticVRhZ0lucHV0Rm9yJylcbiAgICBzZXQgdGFnTGlzdCh2YWx1ZTogS2JxVGFnTGlzdCkge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX3RhZ0xpc3QgPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuX3RhZ0xpc3QucmVnaXN0ZXJJbnB1dCh0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3RhZ0xpc3Q6IEticVRhZ0xpc3Q7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgdGFnRW5kIGV2ZW50IHdpbGwgYmUgZW1pdHRlZCB3aGVuIHRoZSBpbnB1dCBpcyBibHVycmVkLlxuICAgICAqL1xuICAgIEBJbnB1dCgna2JxVGFnSW5wdXRBZGRPbkJsdXInKVxuICAgIGdldCBhZGRPbkJsdXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRPbkJsdXI7XG4gICAgfVxuXG4gICAgc2V0IGFkZE9uQmx1cih2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9hZGRPbkJsdXIgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2FkZE9uQmx1cjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSB0YWdFbmQgZXZlbnQgd2lsbCBiZSBlbWl0dGVkIHdoZW4gdGhlIHRleHQgcGFzdGVkLlxuICAgICAqL1xuICAgIEBJbnB1dCgna2JxVGFnSW5wdXRBZGRPblBhc3RlJylcbiAgICBnZXQgYWRkT25QYXN0ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZE9uUGFzdGU7XG4gICAgfVxuXG4gICAgc2V0IGFkZE9uUGFzdGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fYWRkT25QYXN0ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYWRkT25QYXN0ZTogYm9vbGVhbjtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyBkaXNhYmxlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkIHx8ICh0aGlzLl90YWdMaXN0ICYmIHRoaXMuX3RhZ0xpc3QuZGlzYWJsZWQpO1xuICAgIH1cblxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyBlbXB0eS4gKi9cbiAgICBnZXQgZW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5pbnB1dEVsZW1lbnQudmFsdWU7XG4gICAgfVxuXG4gICAgY291bnRPZlN5bWJvbHNGb3JVcGRhdGVXaWR0aDogbnVtYmVyID0gMztcblxuICAgIHByaXZhdGUgb25lU3ltYm9sV2lkdGg6IG51bWJlcjtcblxuICAgIC8qKiBUaGUgbmF0aXZlIGlucHV0IGVsZW1lbnQgdG8gd2hpY2ggdGhpcyBkaXJlY3RpdmUgaXMgYXR0YWNoZWQuICovXG4gICAgcHJpdmF0ZSBpbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+LFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIEBJbmplY3QoS0JRX1RBR1NfREVGQVVMVF9PUFRJT05TKSBwcml2YXRlIGRlZmF1bHRPcHRpb25zOiBLYnFUYWdzRGVmYXVsdE9wdGlvbnMsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHJpdmF0ZSB0cmltRGlyZWN0aXZlOiBLYnFUcmltLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgYXV0b2NvbXBsZXRlVHJpZ2dlcj86IEticUF1dG9jb21wbGV0ZVRyaWdnZXJcbiAgICApIHtcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdElucHV0V2lkdGgoKTtcblxuICAgICAgICB0aGlzLl9zZXBhcmF0b3JzID0gdGhpcy5kZWZhdWx0T3B0aW9ucy5zZXBhcmF0b3JzIHx8IEticVRhZ0lucHV0RGVmYXVsdFNlcGFyYXRvcnM7XG4gICAgICAgIHRoaXMuX2FkZE9uUGFzdGUgPSBpc0Jvb2xlYW4odGhpcy5kZWZhdWx0T3B0aW9ucy5hZGRPblBhc3RlKSA/IHRoaXMuZGVmYXVsdE9wdGlvbnMuYWRkT25QYXN0ZSA6IHRydWU7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoKSB7XG4gICAgICAgIHRoaXMuX3RhZ0xpc3Quc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG5cbiAgICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlucHV0RWxlbWVudC52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fdGFnTGlzdC5rZXlkb3duKGV2ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzU2VwYXJhdG9yS2V5KGV2ZW50KSAmJiB0aGlzLmlucHV0RWxlbWVudC52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5lbWl0VGFnRW5kKCk7XG5cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQ2hlY2tzIHRvIHNlZSBpZiB0aGUgYmx1ciBzaG91bGQgZW1pdCB0aGUgKHRhZ0VuZCkgZXZlbnQuICovXG4gICAgYmx1cihldmVudDogRm9jdXNFdmVudCkge1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcblxuICAgICAgICAvLyBCbHVyIHRoZSB0YWcgbGlzdCBpZiBpdCBpcyBub3QgZm9jdXNlZFxuICAgICAgICBpZiAoIXRoaXMuX3RhZ0xpc3QuZm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy50cmlnZ2VyVmFsaWRhdGlvbigpO1xuXG4gICAgICAgICAgICB0aGlzLl90YWdMaXN0LmJsdXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmFkZE9uQmx1ciAmJiAodGhpcy5hdXRvY29tcGxldGVUcmlnZ2VyPy5vbklucHV0Qmx1cihldmVudCkgfHwgdHJ1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuZW1pdFRhZ0VuZCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdGFnTGlzdC5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cblxuICAgIHRyaWdnZXJWYWxpZGF0aW9uKCkge1xuICAgICAgICBpZiAoIXRoaXMuaGFzQ29udHJvbCgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAodGhpcy5uZ0NvbnRyb2wuc3RhdHVzQ2hhbmdlcyBhcyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgbnVsbD4pLmVtaXQodGhpcy5uZ0NvbnRyb2wuc3RhdHVzKTtcbiAgICB9XG5cbiAgICAvKiogQ2hlY2tzIHRvIHNlZSBpZiB0aGUgKHRhZ0VuZCkgZXZlbnQgbmVlZHMgdG8gYmUgZW1pdHRlZC4gKi9cbiAgICBlbWl0VGFnRW5kKCkge1xuICAgICAgICBpZiAoIXRoaXMuaGFzQ29udHJvbCgpIHx8ICh0aGlzLmhhc0NvbnRyb2woKSAmJiAhdGhpcy5uZ0NvbnRyb2wuaW52YWxpZCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRpc3RpbmN0ICYmIHRoaXMuaGFzRHVwbGljYXRlcykgcmV0dXJuO1xuXG4gICAgICAgICAgICB0aGlzLnRhZ0VuZC5lbWl0KHsgaW5wdXQ6IHRoaXMuaW5wdXRFbGVtZW50LCB2YWx1ZTogdGhpcy50cmltVmFsdWUodGhpcy5pbnB1dEVsZW1lbnQudmFsdWUpIH0pO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVJbnB1dFdpZHRoKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgaGFzRHVwbGljYXRlcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhZ0xpc3QudGFnc1xuICAgICAgICAgICAgLm1hcCgoeyB2YWx1ZSB9KSA9PiB2YWx1ZSlcbiAgICAgICAgICAgIC5zb21lKCh0YWdWYWx1ZSkgPT4gdGFnVmFsdWUgPT09IHRoaXMudHJpbVZhbHVlKHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlKSk7XG4gICAgfVxuXG4gICAgb25JbnB1dCgpIHtcbiAgICAgICAgdGhpcy51cGRhdGVJbnB1dFdpZHRoKCk7XG4gICAgICAgIC8vIExldCB0YWcgbGlzdCBrbm93IHdoZW5ldmVyIHRoZSB2YWx1ZSBjaGFuZ2VzLlxuICAgICAgICB0aGlzLl90YWdMaXN0LnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuXG4gICAgb25QYXN0ZSgkZXZlbnQ6IENsaXBib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICghJGV2ZW50LmNsaXBib2FyZERhdGEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRhdGEgPSAkZXZlbnQuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0Jyk7XG5cbiAgICAgICAgaWYgKChkYXRhICYmIGRhdGEubGVuZ3RoID09PSAwKSB8fCAhdGhpcy5hZGRPblBhc3RlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpdGVtczogc3RyaW5nW10gPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IHNlcGFyYXRvciBvZiB0aGlzLnNlcGFyYXRvcnMpIHtcbiAgICAgICAgICAgIGlmIChkYXRhLnNlYXJjaChzZXBhcmF0b3Iuc3ltYm9sKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaCguLi5kYXRhLnNwbGl0KHNlcGFyYXRvci5zeW1ib2wpLm1hcCgoaXRlbSkgPT4gdGhpcy50cmltVmFsdWUoaXRlbSkpKTtcblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgaXRlbXMucHVzaChkYXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRhZ1ZhbHVlczogc3RyaW5nW10gPSB0aGlzLl90YWdMaXN0LnRhZ3MubWFwKCh7IHZhbHVlIH0pID0+IHZhbHVlKTtcblxuICAgICAgICBpdGVtc1xuICAgICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gIXRhZ1ZhbHVlcy5pbmNsdWRlcyhpdGVtKSlcbiAgICAgICAgICAgIC5mb3JFYWNoKChpdGVtKSA9PiB0aGlzLnRhZ0VuZC5lbWl0KHsgaW5wdXQ6IHRoaXMuaW5wdXRFbGVtZW50LCB2YWx1ZTogaXRlbSB9KSk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVJbnB1dFdpZHRoKCk7XG5cbiAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICB1cGRhdGVJbnB1dFdpZHRoKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBsZW5ndGggPSB0aGlzLmlucHV0RWxlbWVudC52YWx1ZS5sZW5ndGg7XG5cbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmlucHV0RWxlbWVudCwgJ21heC13aWR0aCcsIDApO1xuICAgICAgICB0aGlzLm9uZVN5bWJvbFdpZHRoID0gdGhpcy5pbnB1dEVsZW1lbnQuc2Nyb2xsV2lkdGggLyBsZW5ndGg7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pbnB1dEVsZW1lbnQsICdtYXgtd2lkdGgnLCAnJyk7XG5cbiAgICAgICAgaWYgKGxlbmd0aCA+IHRoaXMuY291bnRPZlN5bWJvbHNGb3JVcGRhdGVXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmlucHV0RWxlbWVudCwgJ3dpZHRoJywgYCR7bGVuZ3RoICogdGhpcy5vbmVTeW1ib2xXaWR0aH1weGApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0SW5wdXRXaWR0aCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Gb2N1cygpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fdGFnTGlzdC5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cblxuICAgIC8qKiBGb2N1c2VzIHRoZSBpbnB1dC4gKi9cbiAgICBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRyaW1WYWx1ZSh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmltRGlyZWN0aXZlID8gdGhpcy50cmltRGlyZWN0aXZlLnRyaW0odmFsdWUpIDogdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZXBhcmF0b3JCeUtleUNvZGUoa2V5Q29kZTogbnVtYmVyKTogS2JxVGFnU2VwYXJhdG9yIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHNlcCA9IHRoaXMuX3NlcGFyYXRvcnNba2V5Q29kZV07XG5cbiAgICAgICAgaWYgKHNlcCkge1xuICAgICAgICAgICAgcmV0dXJuIHNlcDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzQ29udHJvbCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5uZ0NvbnRyb2w7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXREZWZhdWx0SW5wdXRXaWR0aCgpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmlucHV0RWxlbWVudCwgJ3dpZHRoJywgJzMwcHgnKTtcbiAgICB9XG5cbiAgICAvKiogQ2hlY2tzIHdoZXRoZXIgYSBrZXljb2RlIGlzIG9uZSBvZiB0aGUgY29uZmlndXJlZCBzZXBhcmF0b3JzLiAqL1xuICAgIHByaXZhdGUgaXNTZXBhcmF0b3JLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VwYXJhdG9ycy5zb21lKChzZXBhcmF0b3IpID0+IHNlcGFyYXRvci5rZXkgPT09IGV2ZW50LmtleSAmJiAhZXZlbnQuc2hpZnRLZXkpO1xuICAgIH1cbn1cbiJdfQ==