@fundamental-ngx/core 0.42.0-rc.2 → 0.42.0-rc.21

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 (397) hide show
  1. package/alert/alert.component.d.ts +5 -4
  2. package/alert/alert.module.d.ts +2 -1
  3. package/avatar/avatar.component.d.ts +2 -4
  4. package/avatar-group/directives/avatar-group-focusable-avatar.directive.d.ts +2 -6
  5. package/avatar-group/directives/avatar-group-overflow-button.directive.d.ts +2 -4
  6. package/bar/bar.component.d.ts +2 -4
  7. package/busy-indicator/busy-indicator-extended/busy-indicator-extended.directive.d.ts +2 -4
  8. package/button/button.component.d.ts +2 -6
  9. package/card/card-content.component.d.ts +2 -4
  10. package/card/card-counter.directive.d.ts +2 -4
  11. package/card/card-header.component.d.ts +2 -4
  12. package/card/card-loader.component.d.ts +2 -4
  13. package/card/card-second-subtitle.directive.d.ts +2 -4
  14. package/card/card-subtitle.directive.d.ts +2 -4
  15. package/card/card-title.directive.d.ts +2 -4
  16. package/card/card.component.d.ts +3 -5
  17. package/card/kpi/card-kpi-analytics-content.directive.d.ts +2 -4
  18. package/card/kpi/card-kpi-analytics-label.directive.d.ts +2 -4
  19. package/card/kpi/card-kpi-analytics.directive.d.ts +2 -4
  20. package/card/kpi/card-kpi-header.component.d.ts +2 -4
  21. package/card/kpi/card-kpi-scale-icon.directive.d.ts +2 -4
  22. package/card/kpi/card-kpi-scale-text.directive.d.ts +2 -4
  23. package/card/kpi/card-kpi-value.directive.d.ts +2 -4
  24. package/dialog/base/dialog-base.class.d.ts +2 -2
  25. package/dialog/dialog-body/dialog-body.component.d.ts +2 -4
  26. package/dialog/dialog-container/dialog-container.component.d.ts +0 -2
  27. package/dialog/dialog-service/dialog.service.d.ts +4 -0
  28. package/dialog/dialog.component.d.ts +0 -2
  29. package/dynamic-page/dynamic-page-content/dynamic-page-content.component.d.ts +4 -6
  30. package/dynamic-page/dynamic-page-header/actions/dynamic-page-layout-actions.component.d.ts +2 -4
  31. package/dynamic-side-content/dynamic-side-content.component.d.ts +3 -5
  32. package/esm2020/alert/alert.component.mjs +7 -19
  33. package/esm2020/alert/alert.module.mjs +5 -4
  34. package/esm2020/avatar/avatar.component.mjs +6 -10
  35. package/esm2020/avatar-group/directives/avatar-group-focusable-avatar.directive.mjs +4 -12
  36. package/esm2020/avatar-group/directives/avatar-group-overflow-body.directive.mjs +2 -2
  37. package/esm2020/avatar-group/directives/avatar-group-overflow-button.directive.mjs +3 -7
  38. package/esm2020/bar/bar.component.mjs +3 -7
  39. package/esm2020/breadcrumb/breadcrumb-item.component.mjs +2 -2
  40. package/esm2020/breadcrumb/breadcrumb.component.mjs +2 -2
  41. package/esm2020/busy-indicator/busy-indicator-extended/busy-indicator-extended.directive.mjs +4 -8
  42. package/esm2020/button/button.component.mjs +3 -9
  43. package/esm2020/card/card-content.component.mjs +3 -7
  44. package/esm2020/card/card-counter.directive.mjs +3 -7
  45. package/esm2020/card/card-header.component.mjs +4 -8
  46. package/esm2020/card/card-loader.component.mjs +3 -7
  47. package/esm2020/card/card-second-subtitle.directive.mjs +3 -7
  48. package/esm2020/card/card-subtitle.directive.mjs +3 -7
  49. package/esm2020/card/card-title.directive.mjs +3 -7
  50. package/esm2020/card/card.component.mjs +3 -7
  51. package/esm2020/card/kpi/card-kpi-analytics-content.directive.mjs +3 -7
  52. package/esm2020/card/kpi/card-kpi-analytics-label.directive.mjs +3 -7
  53. package/esm2020/card/kpi/card-kpi-analytics.directive.mjs +3 -7
  54. package/esm2020/card/kpi/card-kpi-header.component.mjs +3 -7
  55. package/esm2020/card/kpi/card-kpi-scale-icon.directive.mjs +3 -7
  56. package/esm2020/card/kpi/card-kpi-scale-text.directive.mjs +3 -7
  57. package/esm2020/card/kpi/card-kpi-value.directive.mjs +3 -7
  58. package/esm2020/checkbox/checkbox/checkbox.component.mjs +3 -3
  59. package/esm2020/content-density/services/content-density-observer.service.mjs +3 -3
  60. package/esm2020/dialog/base/dialog-base.class.mjs +6 -6
  61. package/esm2020/dialog/dialog-body/dialog-body.component.mjs +3 -7
  62. package/esm2020/dialog/dialog-container/dialog-container.component.mjs +1 -5
  63. package/esm2020/dialog/dialog-service/dialog.service.mjs +10 -2
  64. package/esm2020/dialog/dialog.component.mjs +3 -7
  65. package/esm2020/dynamic-page/dynamic-page-content/dynamic-page-content.component.mjs +4 -8
  66. package/esm2020/dynamic-page/dynamic-page-header/actions/dynamic-page-layout-actions.component.mjs +5 -9
  67. package/esm2020/dynamic-side-content/dynamic-side-content.component.mjs +3 -7
  68. package/esm2020/facets/content/facet-content.component.mjs +4 -8
  69. package/esm2020/facets/facet/facet.component.mjs +13 -19
  70. package/esm2020/feed-input/directives/feed-input-avatar.directive.mjs +3 -7
  71. package/esm2020/feed-list-item/components/item/feed-list-item.component.mjs +3 -7
  72. package/esm2020/feed-list-item/components/list/feed-list.component.mjs +3 -7
  73. package/esm2020/form/form-control/form-control.component.mjs +3 -7
  74. package/esm2020/form/form-group/form-group.component.mjs +3 -7
  75. package/esm2020/form/form-message/form-message.component.mjs +3 -7
  76. package/esm2020/icon/icon.component.mjs +3 -7
  77. package/esm2020/illustrated-message/illustrated-message.component.mjs +3 -7
  78. package/esm2020/info-label/info-label.component.mjs +3 -7
  79. package/esm2020/inline-help/inline-help.directive.mjs +26 -15
  80. package/esm2020/input-group/input-group-directives.mjs +6 -14
  81. package/esm2020/input-group/input-group.component.mjs +2 -2
  82. package/esm2020/layout-grid/directives/layout-grid-col.directive.mjs +3 -7
  83. package/esm2020/layout-grid/layout-grid.component.mjs +3 -7
  84. package/esm2020/layout-panel/layout-panel-footer/layout-panel-footer.component.mjs +3 -7
  85. package/esm2020/link/link.component.mjs +9 -13
  86. package/esm2020/list/directives/list-icon.directive.mjs +3 -7
  87. package/esm2020/list/directives/list-navigation-item-text.directive.mjs +3 -7
  88. package/esm2020/list/list-message.directive.mjs +3 -7
  89. package/esm2020/menu/menu-mobile/menu-mobile.component.mjs +2 -2
  90. package/esm2020/message-box/message-box-container/message-box-container.component.mjs +1 -5
  91. package/esm2020/message-box/message-box.component.mjs +1 -5
  92. package/esm2020/message-page/message-page.component.mjs +3 -7
  93. package/esm2020/message-strip/message-strip.component.mjs +5 -9
  94. package/esm2020/multi-input/multi-input.component.mjs +31 -17
  95. package/esm2020/notification/directives/notification-indicator.directive.mjs +3 -7
  96. package/esm2020/notification/notification-group/notification-group.component.mjs +3 -7
  97. package/esm2020/notification/notification-utils/notification-group-base.mjs +2 -2
  98. package/esm2020/object-marker/object-marker.component.mjs +3 -7
  99. package/esm2020/object-number/object-number.component.mjs +3 -7
  100. package/esm2020/object-status/object-status.component.mjs +3 -7
  101. package/esm2020/panel/panel.component.mjs +3 -7
  102. package/esm2020/popover/popover-body/popover-body.component.mjs +5 -2
  103. package/esm2020/product-switch/product-switch-body/product-switch-body.component.mjs +1 -1
  104. package/esm2020/radio/radio-button/radio-button.component.mjs +2 -2
  105. package/esm2020/rating-indicator/components/rating-indicator.component.mjs +3 -7
  106. package/esm2020/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.mjs +4 -8
  107. package/esm2020/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.mjs +3 -7
  108. package/esm2020/segmented-button/segmented-button.component.mjs +4 -4
  109. package/esm2020/select/select.component.mjs +4 -4
  110. package/esm2020/slider/slider.component.mjs +3 -7
  111. package/esm2020/status-indicator/status-indicator.component.mjs +4 -8
  112. package/esm2020/table/directives/table-cell.directive.mjs +31 -26
  113. package/esm2020/table/directives/table-icon.directive.mjs +3 -9
  114. package/esm2020/table/directives/table-row.directive.mjs +34 -19
  115. package/esm2020/table/table-wrapper.component.mjs +2 -2
  116. package/esm2020/table/table.component.mjs +1 -1
  117. package/esm2020/tabs/tab-item/tab-item.directive.mjs +3 -7
  118. package/esm2020/tabs/tab-nav/tab-nav.component.mjs +3 -9
  119. package/esm2020/tabs/tab-utils/tab-directives.mjs +3 -9
  120. package/esm2020/tile/directives/numeric-content.directives.mjs +14 -34
  121. package/esm2020/tile/directives/tile.directives.mjs +9 -21
  122. package/esm2020/tile/tile.component.mjs +2 -2
  123. package/esm2020/token/token-input.directive.mjs +3 -7
  124. package/esm2020/token/tokenizer.component.mjs +12 -16
  125. package/esm2020/toolbar/toolbar.component.mjs +2 -2
  126. package/esm2020/tree/components/tree-item/tree-item.component.mjs +1 -1
  127. package/esm2020/tree/models/base-tree-item.class.mjs +2 -6
  128. package/esm2020/tree/tree.component.mjs +3 -7
  129. package/esm2020/upload-collection/upload-collection-item.directive.mjs +2 -2
  130. package/esm2020/wizard/wizard.component.mjs +2 -2
  131. package/facets/content/facet-content.component.d.ts +2 -4
  132. package/facets/facet/facet.component.d.ts +2 -6
  133. package/feed-input/directives/feed-input-avatar.directive.d.ts +2 -4
  134. package/feed-list-item/components/item/feed-list-item.component.d.ts +2 -4
  135. package/feed-list-item/components/list/feed-list.component.d.ts +2 -4
  136. package/fesm2015/fundamental-ngx-core-alert.mjs +48 -58
  137. package/fesm2015/fundamental-ngx-core-alert.mjs.map +1 -1
  138. package/fesm2015/fundamental-ngx-core-avatar-group.mjs +6 -18
  139. package/fesm2015/fundamental-ngx-core-avatar-group.mjs.map +1 -1
  140. package/fesm2015/fundamental-ngx-core-avatar.mjs +5 -9
  141. package/fesm2015/fundamental-ngx-core-avatar.mjs.map +1 -1
  142. package/fesm2015/fundamental-ngx-core-bar.mjs +2 -6
  143. package/fesm2015/fundamental-ngx-core-bar.mjs.map +1 -1
  144. package/fesm2015/fundamental-ngx-core-breadcrumb.mjs +2 -2
  145. package/fesm2015/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  146. package/fesm2015/fundamental-ngx-core-busy-indicator.mjs +3 -7
  147. package/fesm2015/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
  148. package/fesm2015/fundamental-ngx-core-button.mjs +2 -8
  149. package/fesm2015/fundamental-ngx-core-button.mjs.map +1 -1
  150. package/fesm2015/fundamental-ngx-core-card.mjs +31 -91
  151. package/fesm2015/fundamental-ngx-core-card.mjs.map +1 -1
  152. package/fesm2015/fundamental-ngx-core-checkbox.mjs +2 -2
  153. package/fesm2015/fundamental-ngx-core-checkbox.mjs.map +1 -1
  154. package/fesm2015/fundamental-ngx-core-content-density.mjs +2 -2
  155. package/fesm2015/fundamental-ngx-core-content-density.mjs.map +1 -1
  156. package/fesm2015/fundamental-ngx-core-dialog.mjs +18 -23
  157. package/fesm2015/fundamental-ngx-core-dialog.mjs.map +1 -1
  158. package/fesm2015/fundamental-ngx-core-dynamic-page.mjs +7 -15
  159. package/fesm2015/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  160. package/fesm2015/fundamental-ngx-core-dynamic-side-content.mjs +2 -6
  161. package/fesm2015/fundamental-ngx-core-dynamic-side-content.mjs.map +1 -1
  162. package/fesm2015/fundamental-ngx-core-facets.mjs +15 -25
  163. package/fesm2015/fundamental-ngx-core-facets.mjs.map +1 -1
  164. package/fesm2015/fundamental-ngx-core-feed-input.mjs +2 -6
  165. package/fesm2015/fundamental-ngx-core-feed-input.mjs.map +1 -1
  166. package/fesm2015/fundamental-ngx-core-feed-list-item.mjs +4 -12
  167. package/fesm2015/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  168. package/fesm2015/fundamental-ngx-core-form.mjs +6 -18
  169. package/fesm2015/fundamental-ngx-core-form.mjs.map +1 -1
  170. package/fesm2015/fundamental-ngx-core-icon.mjs +2 -6
  171. package/fesm2015/fundamental-ngx-core-icon.mjs.map +1 -1
  172. package/fesm2015/fundamental-ngx-core-illustrated-message.mjs +2 -6
  173. package/fesm2015/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
  174. package/fesm2015/fundamental-ngx-core-info-label.mjs +2 -6
  175. package/fesm2015/fundamental-ngx-core-info-label.mjs.map +1 -1
  176. package/fesm2015/fundamental-ngx-core-inline-help.mjs +24 -13
  177. package/fesm2015/fundamental-ngx-core-inline-help.mjs.map +1 -1
  178. package/fesm2015/fundamental-ngx-core-input-group.mjs +6 -14
  179. package/fesm2015/fundamental-ngx-core-input-group.mjs.map +1 -1
  180. package/fesm2015/fundamental-ngx-core-layout-grid.mjs +4 -12
  181. package/fesm2015/fundamental-ngx-core-layout-grid.mjs.map +1 -1
  182. package/fesm2015/fundamental-ngx-core-layout-panel.mjs +2 -6
  183. package/fesm2015/fundamental-ngx-core-layout-panel.mjs.map +1 -1
  184. package/fesm2015/fundamental-ngx-core-link.mjs +8 -12
  185. package/fesm2015/fundamental-ngx-core-link.mjs.map +1 -1
  186. package/fesm2015/fundamental-ngx-core-list.mjs +6 -18
  187. package/fesm2015/fundamental-ngx-core-list.mjs.map +1 -1
  188. package/fesm2015/fundamental-ngx-core-menu.mjs +1 -1
  189. package/fesm2015/fundamental-ngx-core-menu.mjs.map +1 -1
  190. package/fesm2015/fundamental-ngx-core-message-box.mjs +0 -8
  191. package/fesm2015/fundamental-ngx-core-message-box.mjs.map +1 -1
  192. package/fesm2015/fundamental-ngx-core-message-page.mjs +2 -6
  193. package/fesm2015/fundamental-ngx-core-message-page.mjs.map +1 -1
  194. package/fesm2015/fundamental-ngx-core-message-strip.mjs +4 -8
  195. package/fesm2015/fundamental-ngx-core-message-strip.mjs.map +1 -1
  196. package/fesm2015/fundamental-ngx-core-multi-input.mjs +31 -15
  197. package/fesm2015/fundamental-ngx-core-multi-input.mjs.map +1 -1
  198. package/fesm2015/fundamental-ngx-core-notification.mjs +5 -13
  199. package/fesm2015/fundamental-ngx-core-notification.mjs.map +1 -1
  200. package/fesm2015/fundamental-ngx-core-object-marker.mjs +2 -6
  201. package/fesm2015/fundamental-ngx-core-object-marker.mjs.map +1 -1
  202. package/fesm2015/fundamental-ngx-core-object-number.mjs +2 -6
  203. package/fesm2015/fundamental-ngx-core-object-number.mjs.map +1 -1
  204. package/fesm2015/fundamental-ngx-core-object-status.mjs +2 -6
  205. package/fesm2015/fundamental-ngx-core-object-status.mjs.map +1 -1
  206. package/fesm2015/fundamental-ngx-core-panel.mjs +2 -6
  207. package/fesm2015/fundamental-ngx-core-panel.mjs.map +1 -1
  208. package/fesm2015/fundamental-ngx-core-popover.mjs +4 -1
  209. package/fesm2015/fundamental-ngx-core-popover.mjs.map +1 -1
  210. package/fesm2015/fundamental-ngx-core-product-switch.mjs +1 -1
  211. package/fesm2015/fundamental-ngx-core-product-switch.mjs.map +1 -1
  212. package/fesm2015/fundamental-ngx-core-radio.mjs +1 -1
  213. package/fesm2015/fundamental-ngx-core-radio.mjs.map +1 -1
  214. package/fesm2015/fundamental-ngx-core-rating-indicator.mjs +2 -6
  215. package/fesm2015/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
  216. package/fesm2015/fundamental-ngx-core-resizable-card-layout.mjs +5 -13
  217. package/fesm2015/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
  218. package/fesm2015/fundamental-ngx-core-segmented-button.mjs +3 -3
  219. package/fesm2015/fundamental-ngx-core-segmented-button.mjs.map +1 -1
  220. package/fesm2015/fundamental-ngx-core-select.mjs +3 -3
  221. package/fesm2015/fundamental-ngx-core-select.mjs.map +1 -1
  222. package/fesm2015/fundamental-ngx-core-slider.mjs +2 -6
  223. package/fesm2015/fundamental-ngx-core-slider.mjs.map +1 -1
  224. package/fesm2015/fundamental-ngx-core-status-indicator.mjs +3 -7
  225. package/fesm2015/fundamental-ngx-core-status-indicator.mjs.map +1 -1
  226. package/fesm2015/fundamental-ngx-core-table.mjs +64 -48
  227. package/fesm2015/fundamental-ngx-core-table.mjs.map +1 -1
  228. package/fesm2015/fundamental-ngx-core-tabs.mjs +6 -22
  229. package/fesm2015/fundamental-ngx-core-tabs.mjs.map +1 -1
  230. package/fesm2015/fundamental-ngx-core-tile.mjs +22 -54
  231. package/fesm2015/fundamental-ngx-core-tile.mjs.map +1 -1
  232. package/fesm2015/fundamental-ngx-core-token.mjs +13 -21
  233. package/fesm2015/fundamental-ngx-core-token.mjs.map +1 -1
  234. package/fesm2015/fundamental-ngx-core-toolbar.mjs +1 -1
  235. package/fesm2015/fundamental-ngx-core-toolbar.mjs.map +1 -1
  236. package/fesm2015/fundamental-ngx-core-tree.mjs +3 -11
  237. package/fesm2015/fundamental-ngx-core-tree.mjs.map +1 -1
  238. package/fesm2015/fundamental-ngx-core-upload-collection.mjs +1 -1
  239. package/fesm2015/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  240. package/fesm2015/fundamental-ngx-core-wizard.mjs +1 -1
  241. package/fesm2015/fundamental-ngx-core-wizard.mjs.map +1 -1
  242. package/fesm2020/fundamental-ngx-core-alert.mjs +48 -58
  243. package/fesm2020/fundamental-ngx-core-alert.mjs.map +1 -1
  244. package/fesm2020/fundamental-ngx-core-avatar-group.mjs +6 -18
  245. package/fesm2020/fundamental-ngx-core-avatar-group.mjs.map +1 -1
  246. package/fesm2020/fundamental-ngx-core-avatar.mjs +5 -9
  247. package/fesm2020/fundamental-ngx-core-avatar.mjs.map +1 -1
  248. package/fesm2020/fundamental-ngx-core-bar.mjs +2 -6
  249. package/fesm2020/fundamental-ngx-core-bar.mjs.map +1 -1
  250. package/fesm2020/fundamental-ngx-core-breadcrumb.mjs +2 -2
  251. package/fesm2020/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  252. package/fesm2020/fundamental-ngx-core-busy-indicator.mjs +3 -7
  253. package/fesm2020/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
  254. package/fesm2020/fundamental-ngx-core-button.mjs +2 -8
  255. package/fesm2020/fundamental-ngx-core-button.mjs.map +1 -1
  256. package/fesm2020/fundamental-ngx-core-card.mjs +31 -91
  257. package/fesm2020/fundamental-ngx-core-card.mjs.map +1 -1
  258. package/fesm2020/fundamental-ngx-core-checkbox.mjs +2 -2
  259. package/fesm2020/fundamental-ngx-core-checkbox.mjs.map +1 -1
  260. package/fesm2020/fundamental-ngx-core-content-density.mjs +2 -2
  261. package/fesm2020/fundamental-ngx-core-content-density.mjs.map +1 -1
  262. package/fesm2020/fundamental-ngx-core-dialog.mjs +18 -23
  263. package/fesm2020/fundamental-ngx-core-dialog.mjs.map +1 -1
  264. package/fesm2020/fundamental-ngx-core-dynamic-page.mjs +7 -15
  265. package/fesm2020/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  266. package/fesm2020/fundamental-ngx-core-dynamic-side-content.mjs +2 -6
  267. package/fesm2020/fundamental-ngx-core-dynamic-side-content.mjs.map +1 -1
  268. package/fesm2020/fundamental-ngx-core-facets.mjs +15 -25
  269. package/fesm2020/fundamental-ngx-core-facets.mjs.map +1 -1
  270. package/fesm2020/fundamental-ngx-core-feed-input.mjs +2 -6
  271. package/fesm2020/fundamental-ngx-core-feed-input.mjs.map +1 -1
  272. package/fesm2020/fundamental-ngx-core-feed-list-item.mjs +4 -12
  273. package/fesm2020/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  274. package/fesm2020/fundamental-ngx-core-form.mjs +6 -18
  275. package/fesm2020/fundamental-ngx-core-form.mjs.map +1 -1
  276. package/fesm2020/fundamental-ngx-core-icon.mjs +2 -6
  277. package/fesm2020/fundamental-ngx-core-icon.mjs.map +1 -1
  278. package/fesm2020/fundamental-ngx-core-illustrated-message.mjs +2 -6
  279. package/fesm2020/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
  280. package/fesm2020/fundamental-ngx-core-info-label.mjs +2 -6
  281. package/fesm2020/fundamental-ngx-core-info-label.mjs.map +1 -1
  282. package/fesm2020/fundamental-ngx-core-inline-help.mjs +24 -13
  283. package/fesm2020/fundamental-ngx-core-inline-help.mjs.map +1 -1
  284. package/fesm2020/fundamental-ngx-core-input-group.mjs +6 -14
  285. package/fesm2020/fundamental-ngx-core-input-group.mjs.map +1 -1
  286. package/fesm2020/fundamental-ngx-core-layout-grid.mjs +4 -12
  287. package/fesm2020/fundamental-ngx-core-layout-grid.mjs.map +1 -1
  288. package/fesm2020/fundamental-ngx-core-layout-panel.mjs +2 -6
  289. package/fesm2020/fundamental-ngx-core-layout-panel.mjs.map +1 -1
  290. package/fesm2020/fundamental-ngx-core-link.mjs +8 -12
  291. package/fesm2020/fundamental-ngx-core-link.mjs.map +1 -1
  292. package/fesm2020/fundamental-ngx-core-list.mjs +6 -18
  293. package/fesm2020/fundamental-ngx-core-list.mjs.map +1 -1
  294. package/fesm2020/fundamental-ngx-core-menu.mjs +1 -1
  295. package/fesm2020/fundamental-ngx-core-menu.mjs.map +1 -1
  296. package/fesm2020/fundamental-ngx-core-message-box.mjs +0 -8
  297. package/fesm2020/fundamental-ngx-core-message-box.mjs.map +1 -1
  298. package/fesm2020/fundamental-ngx-core-message-page.mjs +2 -6
  299. package/fesm2020/fundamental-ngx-core-message-page.mjs.map +1 -1
  300. package/fesm2020/fundamental-ngx-core-message-strip.mjs +4 -8
  301. package/fesm2020/fundamental-ngx-core-message-strip.mjs.map +1 -1
  302. package/fesm2020/fundamental-ngx-core-multi-input.mjs +29 -15
  303. package/fesm2020/fundamental-ngx-core-multi-input.mjs.map +1 -1
  304. package/fesm2020/fundamental-ngx-core-notification.mjs +5 -13
  305. package/fesm2020/fundamental-ngx-core-notification.mjs.map +1 -1
  306. package/fesm2020/fundamental-ngx-core-object-marker.mjs +2 -6
  307. package/fesm2020/fundamental-ngx-core-object-marker.mjs.map +1 -1
  308. package/fesm2020/fundamental-ngx-core-object-number.mjs +2 -6
  309. package/fesm2020/fundamental-ngx-core-object-number.mjs.map +1 -1
  310. package/fesm2020/fundamental-ngx-core-object-status.mjs +2 -6
  311. package/fesm2020/fundamental-ngx-core-object-status.mjs.map +1 -1
  312. package/fesm2020/fundamental-ngx-core-panel.mjs +2 -6
  313. package/fesm2020/fundamental-ngx-core-panel.mjs.map +1 -1
  314. package/fesm2020/fundamental-ngx-core-popover.mjs +4 -1
  315. package/fesm2020/fundamental-ngx-core-popover.mjs.map +1 -1
  316. package/fesm2020/fundamental-ngx-core-product-switch.mjs +1 -1
  317. package/fesm2020/fundamental-ngx-core-product-switch.mjs.map +1 -1
  318. package/fesm2020/fundamental-ngx-core-radio.mjs +1 -1
  319. package/fesm2020/fundamental-ngx-core-radio.mjs.map +1 -1
  320. package/fesm2020/fundamental-ngx-core-rating-indicator.mjs +2 -6
  321. package/fesm2020/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
  322. package/fesm2020/fundamental-ngx-core-resizable-card-layout.mjs +5 -13
  323. package/fesm2020/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
  324. package/fesm2020/fundamental-ngx-core-segmented-button.mjs +3 -3
  325. package/fesm2020/fundamental-ngx-core-segmented-button.mjs.map +1 -1
  326. package/fesm2020/fundamental-ngx-core-select.mjs +3 -3
  327. package/fesm2020/fundamental-ngx-core-select.mjs.map +1 -1
  328. package/fesm2020/fundamental-ngx-core-slider.mjs +2 -6
  329. package/fesm2020/fundamental-ngx-core-slider.mjs.map +1 -1
  330. package/fesm2020/fundamental-ngx-core-status-indicator.mjs +3 -7
  331. package/fesm2020/fundamental-ngx-core-status-indicator.mjs.map +1 -1
  332. package/fesm2020/fundamental-ngx-core-table.mjs +64 -48
  333. package/fesm2020/fundamental-ngx-core-table.mjs.map +1 -1
  334. package/fesm2020/fundamental-ngx-core-tabs.mjs +6 -22
  335. package/fesm2020/fundamental-ngx-core-tabs.mjs.map +1 -1
  336. package/fesm2020/fundamental-ngx-core-tile.mjs +22 -54
  337. package/fesm2020/fundamental-ngx-core-tile.mjs.map +1 -1
  338. package/fesm2020/fundamental-ngx-core-token.mjs +13 -21
  339. package/fesm2020/fundamental-ngx-core-token.mjs.map +1 -1
  340. package/fesm2020/fundamental-ngx-core-toolbar.mjs +1 -1
  341. package/fesm2020/fundamental-ngx-core-toolbar.mjs.map +1 -1
  342. package/fesm2020/fundamental-ngx-core-tree.mjs +3 -11
  343. package/fesm2020/fundamental-ngx-core-tree.mjs.map +1 -1
  344. package/fesm2020/fundamental-ngx-core-upload-collection.mjs +1 -1
  345. package/fesm2020/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  346. package/fesm2020/fundamental-ngx-core-wizard.mjs +1 -1
  347. package/fesm2020/fundamental-ngx-core-wizard.mjs.map +1 -1
  348. package/form/form-control/form-control.component.d.ts +2 -4
  349. package/form/form-group/form-group.component.d.ts +2 -4
  350. package/form/form-message/form-message.component.d.ts +2 -4
  351. package/fundamental-ngx-core-v0.42.0-rc.21.tgz +0 -0
  352. package/icon/icon.component.d.ts +2 -4
  353. package/illustrated-message/illustrated-message.component.d.ts +2 -4
  354. package/info-label/info-label.component.d.ts +2 -4
  355. package/inline-help/inline-help.directive.d.ts +9 -3
  356. package/input-group/input-group-directives.d.ts +5 -9
  357. package/layout-grid/directives/layout-grid-col.directive.d.ts +2 -4
  358. package/layout-grid/layout-grid.component.d.ts +2 -4
  359. package/layout-panel/layout-panel-footer/layout-panel-footer.component.d.ts +4 -6
  360. package/link/link.component.d.ts +2 -4
  361. package/list/directives/list-icon.directive.d.ts +4 -5
  362. package/list/directives/list-navigation-item-text.directive.d.ts +2 -4
  363. package/list/list-message.directive.d.ts +2 -4
  364. package/message-box/message-box-container/message-box-container.component.d.ts +0 -2
  365. package/message-box/message-box.component.d.ts +0 -2
  366. package/message-page/message-page.component.d.ts +2 -4
  367. package/message-strip/message-strip.component.d.ts +4 -5
  368. package/multi-input/multi-input.component.d.ts +9 -5
  369. package/notification/directives/notification-indicator.directive.d.ts +2 -4
  370. package/notification/notification-group/notification-group.component.d.ts +2 -4
  371. package/object-marker/object-marker.component.d.ts +2 -4
  372. package/object-number/object-number.component.d.ts +2 -4
  373. package/object-status/object-status.component.d.ts +2 -4
  374. package/package.json +4 -4
  375. package/panel/panel.component.d.ts +2 -4
  376. package/radio/radio-button/radio-button.component.d.ts +1 -1
  377. package/rating-indicator/components/rating-indicator.component.d.ts +2 -4
  378. package/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.d.ts +2 -4
  379. package/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.d.ts +2 -4
  380. package/schematics/add-dependencies/index.js +6 -6
  381. package/slider/slider.component.d.ts +2 -4
  382. package/status-indicator/status-indicator.component.d.ts +2 -4
  383. package/table/directives/table-cell.directive.d.ts +6 -12
  384. package/table/directives/table-icon.directive.d.ts +2 -6
  385. package/table/directives/table-row.directive.d.ts +10 -10
  386. package/tabs/tab-item/tab-item.directive.d.ts +2 -4
  387. package/tabs/tab-nav/tab-nav.component.d.ts +4 -8
  388. package/tabs/tab-utils/tab-directives.d.ts +2 -6
  389. package/tile/directives/numeric-content.directives.d.ts +10 -20
  390. package/tile/directives/tile.directives.d.ts +6 -12
  391. package/tile/tile.component.d.ts +1 -1
  392. package/token/token-input.directive.d.ts +2 -4
  393. package/token/tokenizer.component.d.ts +2 -4
  394. package/toolbar/toolbar.component.d.ts +1 -1
  395. package/tree/models/base-tree-item.class.d.ts +1 -3
  396. package/tree/tree.component.d.ts +1 -3
  397. package/fundamental-ngx-core-v0.42.0-rc.2.tgz +0 -0
@@ -19,8 +19,8 @@ export class StatusIndicatorComponent {
19
19
  return this.fillDirection;
20
20
  }
21
21
  /** @hidden */
22
- constructor(_elementRef, _cd) {
23
- this._elementRef = _elementRef;
22
+ constructor(elementRef, _cd) {
23
+ this.elementRef = elementRef;
24
24
  this._cd = _cd;
25
25
  /**
26
26
  * defines the size of the status indicator.
@@ -76,10 +76,6 @@ export class StatusIndicatorComponent {
76
76
  ];
77
77
  }
78
78
  /** @hidden */
79
- elementRef() {
80
- return this._elementRef;
81
- }
82
- /** @hidden */
83
79
  _calculateFilling() {
84
80
  if (this.fillPercentage < 0 || this.fillPercentage === undefined) {
85
81
  this.fillCalculator = 0;
@@ -100,7 +96,7 @@ export class StatusIndicatorComponent {
100
96
  case 'radial': {
101
97
  const tempPercent = this.fillCalculator % 1;
102
98
  const fillNumber = Number(tempPercent.toFixed(2));
103
- const element = this._elementRef.nativeElement.querySelectorAll('svg');
99
+ const element = this.elementRef.nativeElement.querySelectorAll('svg');
104
100
  for (let i = 1; i < element.length; i++) {
105
101
  sPointsAttributeValue = this._getPolygonPointsForCircularFilling(fillNumber * 100, element[i].getBBox());
106
102
  polygonPoints = sPointsAttributeValue.reduce((acc, item) => acc + item.x + ',' + item.y + ' ', '');
@@ -295,4 +291,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
295
291
  }], angle: [{
296
292
  type: Input
297
293
  }], buildComponentCssClass: [] } });
298
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLWluZGljYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9zdGF0dXMtaW5kaWNhdG9yL3N0YXR1cy1pbmRpY2F0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc3RhdHVzLWluZGljYXRvci9zdGF0dXMtaW5kaWNhdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULEtBQUssRUFDTCxVQUFVLEVBRVYsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUV2QixpQkFBaUIsRUFFcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBbUIsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBUzVFLE1BQU0sT0FBTyxLQUFLO0lBQ2QsY0FBYztJQUNkLFlBQW1CLENBQVMsRUFBUyxDQUFTO1FBQTNCLE1BQUMsR0FBRCxDQUFDLENBQVE7UUFBUyxNQUFDLEdBQUQsQ0FBQyxDQUFRO0lBQUcsQ0FBQztDQUNyRDtBQXFCRCxNQUFNLE9BQU8sd0JBQXdCO0lBMEZqQyxjQUFjO0lBQ2QsSUFBSSxjQUFjLENBQUMsU0FBMkI7UUFDMUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7SUFDbkMsQ0FBQztJQUNELElBQUksY0FBYztRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBMkJELGNBQWM7SUFDZCxZQUFvQixXQUFvQyxFQUFVLEdBQXNCO1FBQXBFLGdCQUFXLEdBQVgsV0FBVyxDQUF5QjtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBckh4Rjs7OztXQUlHO1FBRUgsU0FBSSxHQUF3QixJQUFJLENBQUM7UUEwQmpDOzs7V0FHRztRQUVILGNBQVMsR0FBd0IsSUFBSSxDQUFDO1FBd0N0Qzs7V0FFRztRQUVILGtCQUFh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RUFBRSxPQUFPO3dCQUN2QixhQUFhLEVBQUUsTUFBTTt3QkFDckIsdUJBQXVCLEVBQUUsZUFBZTt3QkFDeEMsc0JBQXNCLEVBQUUscUNBQXFDO3dCQUM3RCxzQkFBc0IsRUFBRSxHQUFHO3dCQUMzQixzQkFBc0IsRUFBRSxLQUFLO3dCQUM3QixpQkFBaUIsRUFBRSxvQkFBb0I7cUJBQzFDLGlCQUNjLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07aUlBTy9DLEVBQUU7c0JBREQsS0FBSztnQkFTTixJQUFJO3NCQURILEtBQUs7Z0JBU04sTUFBTTtzQkFETCxLQUFLO2dCQUtOLFdBQVc7c0JBRFYsS0FBSztnQkFPTixPQUFPO3NCQUROLEtBQUs7Z0JBT04sU0FBUztzQkFEUixLQUFLO2dCQVFOLFNBQVM7c0JBRFIsS0FBSztnQkFLTixTQUFTO3NCQURSLEtBQUs7Z0JBS04sbUJBQW1CO3NCQURsQixLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSztnQkFLTixJQUFJO3NCQURILEtBQUs7Z0JBS04sYUFBYTtzQkFEWixLQUFLO2dCQUtOLEtBQUs7c0JBREosS0FBSztnQkFLTixhQUFhO3NCQURaLEtBQUs7Z0JBS04sSUFBSTtzQkFESCxLQUFLO2dCQU9OLGNBQWM7c0JBRGIsS0FBSztnQkFPTixhQUFhO3NCQURaLEtBQUs7Z0JBZU4sV0FBVztzQkFEVixLQUFLO2dCQUtOLEtBQUs7c0JBREosS0FBSztnQkErQ04sc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgSW5wdXQsXG4gICAgRWxlbWVudFJlZixcbiAgICBPbkNoYW5nZXMsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBhcHBseUNzc0NsYXNzLCBDc3NDbGFzc0J1aWxkZXIgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcblxuZXhwb3J0IHR5cGUgU3RhdHVzSW5kaWNhdG9yU2l6ZSA9ICdzbScgfCAnbWQnIHwgJ2xnJyB8ICd4bCc7XG5leHBvcnQgdHlwZSBTdGF0dXNJbmRpY2F0b3JDb2xvciA9ICduZWdhdGl2ZScgfCAnY3JpdGljYWwnIHwgJ3Bvc2l0aXZlJztcbmV4cG9ydCB0eXBlIExhYmxlUG9zaXRpb24gPSAnbGVmdCcgfCAncmlnaHQnIHwgJ3RvcCcgfCAnYm90dG9tJztcbmV4cG9ydCB0eXBlIEZpbGxpbmdUeXBlID0gJ3JhZGlhbCcgfCAnYW5nbGVkJyB8ICdsaW5lYXJ1cCcgfCAnbGluZWFyZG93bicgfCAnbGluZWFybGVmdCc7XG5leHBvcnQgdHlwZSBGaWxsaW5nRGlyZWN0aW9uID0gJ2Nsb2Nrd2lzZScgfCAnY291bnRlcmNsb2Nrd2lzZSc7XG5cbmV4cG9ydCBjbGFzcyBQb2ludCB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgeDogbnVtYmVyLCBwdWJsaWMgeTogbnVtYmVyKSB7fVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLXN0YXR1cy1pbmRpY2F0b3InLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zdGF0dXMtaW5kaWNhdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zdGF0dXMtaW5kaWNhdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICAnW2F0dHIuYXJpYS1sYWJlbF0nOiAnYXJpYUxhYmVsJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtcm9sZWRlc2NyaXB0aW9uXSc6ICdhcmlhUm9sZURlc2NyaXB0aW9uJyxcbiAgICAgICAgJ1thdHRyLmZvY3VzYWJsZV0nOiAnZm9jdXNhYmxlJyxcbiAgICAgICAgJ1thdHRyLnRpdGxlXSc6ICd0aXRsZScsXG4gICAgICAgICdbYXR0ci5yb2xlXSc6ICdyb2xlJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtdmFsdWV0ZXh0XSc6ICdhcmlhVmFsdWVUZXh0JyxcbiAgICAgICAgJ1thdHRyLmFyaWEtdmFsdWVub3ddJzogJ2ZpbGxQZXJjZW50YWdlID8gZmlsbFBlcmNlbnRhZ2UgOiAwJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtdmFsdWVtaW5dJzogJzAnLFxuICAgICAgICAnW2F0dHIuYXJpYS12YWx1ZW1heF0nOiAnMTAwJyxcbiAgICAgICAgJ1thdHRyLnRhYmluZGV4XSc6ICdmb2N1c2FibGUgPyAwIDogLTEnXG4gICAgfSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFN0YXR1c0luZGljYXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgQ3NzQ2xhc3NCdWlsZGVyLCBPbkluaXQge1xuICAgIC8qKlxuICAgICAqIHZhbHVlIGlkIGRlZmluZXMgdGhlIGlkIG9mIHRoZSBvYmplY3QuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBpZDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogZGVmaW5lcyB0aGUgc2l6ZSBvZiB0aGUgc3RhdHVzIGluZGljYXRvci5cbiAgICAgKiBDYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6ICdzbScgfCAnbWQnIHwgJ2xnJyB8ICd4bCdcbiAgICAgKiBEZWZhdWx0IHNpemUgaXMgTWVkaXVtKG1kKS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNpemU6IFN0YXR1c0luZGljYXRvclNpemUgPSAnbWQnO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHN0YXR1cyByZXByZXNlbnRlZCBieSB0aGUgU3RhdHVzIEluZGljYXRvci5cbiAgICAgKiBDYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6ICduZWdhdGl2ZScgfCAnY3JpdGljYWwnIHwgJ2luZm9ybWF0aXZlJ1xuICAgICAqIEZvciBkZWZhdWx0IE9iamVjdCBTdGF0dXMgb21pdCB0aGlzIHByb3BlcnR5XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzdGF0dXM6IFN0YXR1c0luZGljYXRvckNvbG9yO1xuXG4gICAgLyoqIERlZmluZSB0aGUgdGV4dCBjb250ZW50IG9mIHRoZSBTdGF0dXMgaW5kaWNhdG9yKi9cbiAgICBASW5wdXQoKVxuICAgIHN0YXR1c0xhYmVsOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBwb3NpdGlvbmluZyBvZiB0aGUgc3RhdHVzIGluZGljYXRvciBpbWFnZSB3aXRoaW5nIHRoZSBkZWZpbmVkIGhlaWdodCBhbmQgd2lkdGggLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdmlld0JveDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogYm9vbGVhbiB2YWx1ZSB0byBiZSBtYXJrZWQgYXMgYSBjbGlja2FibGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGNsaWNrYWJsZTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIGRlZmluZXMgdGhlIHNpemUgb2YgdGhlIHN0YXR1cyBpbmRpY2F0b3IuXG4gICAgICogQ2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOiAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBsYWJlbFNpemU6IFN0YXR1c0luZGljYXRvclNpemUgPSAnc20nO1xuXG4gICAgLyoqIEFyaWEgbGFiZWwgZm9yIHRoZSBTdGF0dXMgSW5kaWNhdG9yLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIEFyaWEgZGVmaW5lcyByb2xlIGRlc2NyaXB0aW9uIGZvciB0aGUgU3RhdHVzIEluZGljYXRvci4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFSb2xlRGVzY3JpcHRpb246IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogQXJpYSBGb2N1c2FibGUgZm9yIHRoZSBTdGF0dXMgSW5kaWNhdG9yLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZm9jdXNhYmxlOiBib29sZWFuO1xuXG4gICAgLyoqIEFyaWEgUm9sZSBmb3IgdGhlIFN0YXR1cyBJbmRpY2F0b3IuICovXG4gICAgQElucHV0KClcbiAgICByb2xlOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIEFyaWEgVmFsdWUgVGV4dCBmb3IgdGhlIFN0YXR1cyBJbmRpY2F0b3IuICovXG4gICAgQElucHV0KClcbiAgICBhcmlhVmFsdWVUZXh0OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIEFyaWEgdGl0bGUgZm9yIHRoZSBzdGF0dXMgaW5kaWNhdG9yLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGl0bGU6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogZGVmaW5lcyB0aGUgbGFiZWwgcG9zaXRpb24gdGhlIHZhbHVlIGNhbiBiZSAnbGVmdCcgfCAncmlnaHQnIHwgJ3RvcCcgfCAnYm90dG9tJyAqL1xuICAgIEBJbnB1dCgpXG4gICAgbGFiZWxQb3NpdGlvbjogTGFibGVQb3NpdGlvbjtcblxuICAgIC8qKiBQYXRoIGZvciB0aGUgc3RhdHVzIGluZGljYXRvciAqL1xuICAgIEBJbnB1dCgpXG4gICAgcGF0aDogc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBPZmZzZXQgdmFsdWUgdG8gYmUgZmlsbGVkIHVuZGVyIHRoZSBnaXZlIHBlcmNlbnRhdGdlIHZhbHVlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmlsbFBlcmNlbnRhZ2U6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIHZhbHVlIHRvIGRlZmluZSBmaWxsIGRpcmVjdGlvblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmlsbERpcmVjdGlvbjogRmlsbGluZ0RpcmVjdGlvbiA9ICdjbG9ja3dpc2UnO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXQgX2ZpbGxEaXJlY3Rpb24oZGlyZWN0aW9uOiBGaWxsaW5nRGlyZWN0aW9uKSB7XG4gICAgICAgIHRoaXMuZmlsbERpcmVjdGlvbiA9IGRpcmVjdGlvbjtcbiAgICB9XG4gICAgZ2V0IF9maWxsRGlyZWN0aW9uKCk6IEZpbGxpbmdEaXJlY3Rpb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5maWxsRGlyZWN0aW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbGxpbmdUeXBlIHRvIHJlcHJlc2VudCB0aGUgZmlsbCBwYXR0ZXJuIG9mIHRoZSBjb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZpbGxpbmdUeXBlOiBGaWxsaW5nVHlwZSA9ICdsaW5lYXJkb3duJztcblxuICAgIC8qKiByZXByZXNlbnQgdGhlIGRlZ3JlZSBvZiBhbmdsZSB0byBwcm9qZWN0IHRoZSBmaWxsaW5nIG9mIHRoZSBjb21wb25lbnQgKi9cbiAgICBASW5wdXQoKVxuICAgIGFuZ2xlOiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGZpbGxDYWxjdWxhdG9yOiBudW1iZXI7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBiaW5hcnlTdHJpbmc6IHN0cmluZztcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHgxOiBzdHJpbmc7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB5MTogc3RyaW5nO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgeDI6IHN0cmluZztcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHkyOiBzdHJpbmc7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwb2ludHNBcnJheTogc3RyaW5nW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sIHByaXZhdGUgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY2xhc3M6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hbmdsZUNhbGN1bGF0aW9uKCk7XG4gICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVGaWxsaW5nKCk7XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIENzc0NsYXNzQnVpbGRlciBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb25cbiAgICAgKiBmdW5jdGlvbiBtdXN0IHJldHVybiBzaW5nbGUgc3RyaW5nXG4gICAgICogZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIG9yZGVyIHdoaWNoIGNzcyBjbGFzc2VzIGFyZSBhcHBsaWVkXG4gICAgICovXG4gICAgQGFwcGx5Q3NzQ2xhc3NcbiAgICBidWlsZENvbXBvbmVudENzc0NsYXNzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICdmZC1zdGF0dXMtaW5kaWNhdG9yJyxcbiAgICAgICAgICAgIHRoaXMuc2l6ZSA/IGBmZC1zdGF0dXMtaW5kaWNhdG9yLS0ke3RoaXMuc2l6ZX1gIDogJycsXG4gICAgICAgICAgICB0aGlzLnN0YXR1cyA/IGBmZC1zdGF0dXMtaW5kaWNhdG9yLS0ke3RoaXMuc3RhdHVzfWAgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuY2xpY2thYmxlID8gYGZkLXN0YXR1cy1pbmRpY2F0b3ItLWxpbmtgIDogJycsXG4gICAgICAgICAgICB0aGlzLmxhYmVsUG9zaXRpb24gPT09ICdyaWdodCcgfHwgdGhpcy5sYWJlbFBvc2l0aW9uID09PSAnbGVmdCdcbiAgICAgICAgICAgICAgICA/IGBmZC1zdGF0dXMtaW5kaWNhdG9yLS1ob3Jpem9udGFsLWxhYmVsYFxuICAgICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICB0aGlzLmNsYXNzXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBlbGVtZW50UmVmKCk6IEVsZW1lbnRSZWY8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlRmlsbGluZygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZmlsbFBlcmNlbnRhZ2UgPCAwIHx8IHRoaXMuZmlsbFBlcmNlbnRhZ2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5maWxsQ2FsY3VsYXRvciA9IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpbGxDYWxjdWxhdG9yID0gKHRoaXMuZmlsbFBlcmNlbnRhZ2UgKiB0aGlzLnBhdGgubGVuZ3RoKSAvIDEwMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYW5nbGVDYWxjdWxhdGlvbigpOiB2b2lkIHtcbiAgICAgICAgbGV0IHNQb2ludHNBdHRyaWJ1dGVWYWx1ZTogQXJyYXk8UG9pbnQ+O1xuICAgICAgICBsZXQgcG9seWdvblBvaW50czogc3RyaW5nO1xuICAgICAgICBzd2l0Y2ggKHRoaXMuZmlsbGluZ1R5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2FuZ2xlZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5iaW5hcnlTdHJpbmcgPSB0aGlzLl9jb252ZXJ0QW5nbGVUb0JpbmFyeSh0aGlzLmFuZ2xlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9hc3NpZ25CaW5hcnlWYWx1ZSh0aGlzLmJpbmFyeVN0cmluZyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdyYWRpYWwnOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGVtcFBlcmNlbnQgPSB0aGlzLmZpbGxDYWxjdWxhdG9yICUgMTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxsTnVtYmVyID0gTnVtYmVyKHRlbXBQZXJjZW50LnRvRml4ZWQoMikpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnc3ZnJyk7XG5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGVsZW1lbnQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgc1BvaW50c0F0dHJpYnV0ZVZhbHVlID0gdGhpcy5fZ2V0UG9seWdvblBvaW50c0ZvckNpcmN1bGFyRmlsbGluZyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxOdW1iZXIgKiAxMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50W2ldLmdldEJCb3goKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBwb2x5Z29uUG9pbnRzID0gc1BvaW50c0F0dHJpYnV0ZVZhbHVlLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiBhY2MgKyBpdGVtLnggKyAnLCcgKyBpdGVtLnkgKyAnICcsICcnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb2ludHNBcnJheS5wdXNoKHBvbHlnb25Qb2ludHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2xpbmVhcnVwJzpcbiAgICAgICAgICAgICAgICB0aGlzLmJpbmFyeVN0cmluZyA9IHRoaXMuX2NvbnZlcnRBbmdsZVRvQmluYXJ5KDkwKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9hc3NpZ25CaW5hcnlWYWx1ZSh0aGlzLmJpbmFyeVN0cmluZyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdsaW5lYXJkb3duJzpcbiAgICAgICAgICAgICAgICB0aGlzLmJpbmFyeVN0cmluZyA9IHRoaXMuX2NvbnZlcnRBbmdsZVRvQmluYXJ5KDI3MCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fYXNzaWduQmluYXJ5VmFsdWUodGhpcy5iaW5hcnlTdHJpbmcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbGluZWFybGVmdCc6XG4gICAgICAgICAgICAgICAgdGhpcy5iaW5hcnlTdHJpbmcgPSB0aGlzLl9jb252ZXJ0QW5nbGVUb0JpbmFyeSgxODApO1xuICAgICAgICAgICAgICAgIHRoaXMuX2Fzc2lnbkJpbmFyeVZhbHVlKHRoaXMuYmluYXJ5U3RyaW5nKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBmZFN0YXR1c0luZGljYXRvcjogTm8gZmlsbFR5cGUgZm91bmQgZm9yICR7dGhpcy5maWxsaW5nVHlwZX0uYCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbnZlcnRBbmdsZVRvQmluYXJ5KGFuZ2xlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICBpZiAoYW5nbGUgPiAwICYmIGFuZ2xlIDw9IDQ1KSB7XG4gICAgICAgICAgICByZXR1cm4gJzEsMCwwLDEnO1xuICAgICAgICB9IGVsc2UgaWYgKGFuZ2xlID49IDQ1ICYmIGFuZ2xlIDwgOTApIHtcbiAgICAgICAgICAgIHJldHVybiAnMCwwLDAsMSc7XG4gICAgICAgIH0gZWxzZSBpZiAoYW5nbGUgPj0gOTAgJiYgYW5nbGUgPCAxMzUpIHtcbiAgICAgICAgICAgIHJldHVybiAnMCwwLDAsMSc7XG4gICAgICAgIH0gZWxzZSBpZiAoYW5nbGUgPj0gMTM1ICYmIGFuZ2xlIDwgMTgwKSB7XG4gICAgICAgICAgICByZXR1cm4gJzAsMCwxLDEnO1xuICAgICAgICB9IGVsc2UgaWYgKGFuZ2xlID49IDE4MCAmJiBhbmdsZSA8IDIyNSkge1xuICAgICAgICAgICAgcmV0dXJuICcwLDAsMSwwJztcbiAgICAgICAgfSBlbHNlIGlmIChhbmdsZSA+PSAyMjUgJiYgYW5nbGUgPCAyNzApIHtcbiAgICAgICAgICAgIHJldHVybiAnMCwxLDEsMCc7XG4gICAgICAgIH0gZWxzZSBpZiAoYW5nbGUgPj0gMjcwICYmIGFuZ2xlIDwgMzE1KSB7XG4gICAgICAgICAgICByZXR1cm4gJzAsMSwwLDAnO1xuICAgICAgICB9IGVsc2UgaWYgKGFuZ2xlID49IDMxNSAmJiBhbmdsZSA8IDM2MCkge1xuICAgICAgICAgICAgcmV0dXJuICcxLDEsMCwwJztcbiAgICAgICAgfSBlbHNlIGlmIChhbmdsZSA9PT0gMCB8fCBhbmdsZSA9PT0gMzYwKSB7XG4gICAgICAgICAgICByZXR1cm4gJzEsMCwwLDAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuICdpbnZhbGlkJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYXNzaWduQmluYXJ5VmFsdWUoYmluYXJ5U3RyaW5nOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYmluYXJ5VmFsdWUgPSBiaW5hcnlTdHJpbmcuc3BsaXQoJywnKTtcbiAgICAgICAgdGhpcy54MSA9IGJpbmFyeVZhbHVlWzBdO1xuICAgICAgICB0aGlzLnkxID0gYmluYXJ5VmFsdWVbMV07XG4gICAgICAgIHRoaXMueDIgPSBiaW5hcnlWYWx1ZVsyXTtcbiAgICAgICAgdGhpcy55MiA9IGJpbmFyeVZhbHVlWzNdO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0UG9seWdvblBvaW50c0ZvckNpcmN1bGFyRmlsbGluZyh2YWx1ZTogbnVtYmVyLCBib3VuZGluZ0JveFN2ZzogRE9NUmVjdCk6IEFycmF5PFBvaW50PiB7XG4gICAgICAgIGNvbnN0IGFuZ2xlID0gMy42ICogdmFsdWU7XG4gICAgICAgIGNvbnN0IHBvaW50czogUG9pbnRbXSA9IFtdO1xuICAgICAgICBsZXQgeERpZmZlcmVuY2VGcm9tQm91bmRhcnlDZW50cmU6IG51bWJlcjtcbiAgICAgICAgbGV0IHlEaWZmZXJlbmNlRnJvbUJvdW5kYXJ5Q2VudHJlOiBudW1iZXI7XG4gICAgICAgIGxldCBwb2x5Z29uUG9pbnQ6IFBvaW50O1xuXG4gICAgICAgIC8vIHN0YXJ0cyBhdCAxMiwgdGhlIGFsZ29yaXRobSBjb21wdXRlcyB0aGUgY29vcmRpbmF0aW9uIGZvciBjbG9ja3dpc2UgZGlyZWN0aW9uIG9ubHlcbiAgICAgICAgLy8gY291bnRlciBjbG9ja3dpc2UgZGlyZWN0aW9uIGlzIG1hbmFnZWQgYnkgc3ltbWV0cnlcbiAgICAgICAgY29uc3Qgb1N0YXJ0UG9pbnQgPSBuZXcgUG9pbnQoYm91bmRpbmdCb3hTdmcueCArIGJvdW5kaW5nQm94U3ZnLndpZHRoIC8gMiwgYm91bmRpbmdCb3hTdmcueSk7XG4gICAgICAgIGNvbnN0IG9DZW50cmVQb2ludCA9IG5ldyBQb2ludChcbiAgICAgICAgICAgIGJvdW5kaW5nQm94U3ZnLnggKyBib3VuZGluZ0JveFN2Zy53aWR0aCAvIDIsXG4gICAgICAgICAgICBib3VuZGluZ0JveFN2Zy55ICsgYm91bmRpbmdCb3hTdmcuaGVpZ2h0IC8gMlxuICAgICAgICApO1xuXG4gICAgICAgIC8vIFJlZmxlY3RzIHggY29vcmRpbmF0ZSBieSBjZW50cmUgcG9pbnQgZm9yIENvdW50ZXIgQ2xvY2t3aXNlIHR5cGVcbiAgICAgICAgY29uc3QgX2FkanVzdElmQ291bnRlckNsb2Nrd2lzZSA9IChvUG9pbnQ6IFBvaW50KTogUG9pbnQgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzID0gT2JqZWN0LmFzc2lnbih7fSwgb1BvaW50KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuX2ZpbGxEaXJlY3Rpb24gPT09ICdjb3VudGVyY2xvY2t3aXNlJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlYRGlzdGFuY2VGcm9tQ2VudHJlID0gb1BvaW50LnggLSBvQ2VudHJlUG9pbnQueDtcbiAgICAgICAgICAgICAgICByZXMueCA9IG9DZW50cmVQb2ludC54IC0gaVhEaXN0YW5jZUZyb21DZW50cmU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gQm91bmRhcnkgY2VudHJlIGlzIGdpdmVuIGJ5IGFuZ2xlIGRpc3RhbmNlIGZyb20gdGhlIGJlZ2lubmluZyAoMMKwKS4gVGhlIHJldHVybmVkIGRpZmZlcmVuY2UgaXMgcmVsYXRlZFxuICAgICAgICAvLyB0byB4IG9yIHkgY29vcmRpbmF0ZSBkZXBlbmRpbmcgb24gYm91bmRhcnkgY2VudHJlIGFuZ2xlIChlLmcuIDDCsCAtPiB4LCA5MMKwIC0+IHksIDE4MMKwIC0+IHggIDI3MMKwIC0+IHkpLlxuICAgICAgICAvLyBCb3VuZGFyeSBsZW5ndGggaXMgbGVuZ3RoIG9mIHRoZSBjb3JyZXNwb25kaW5nIHNpZGUgb2YgYm91bmRpbmcgYm94ICh3aWR0aCBmb3IgeCwgaGVpZ2h0IGZvciB5KS5cbiAgICAgICAgY29uc3QgY29tcHV0ZURpZmZlcmVuY2VGcm9tQm91bmRhcnlDZW50cmUgPSAoXG4gICAgICAgICAgICBpbkFuZ2xlOiBudW1iZXIsXG4gICAgICAgICAgICBpQm91bmRhcnlDZW50cmVBbmdsZTogbnVtYmVyLFxuICAgICAgICAgICAgaUJvdW5kYXJ5TGVuZ3RoOiBudW1iZXJcbiAgICAgICAgKTogbnVtYmVyID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhbiA9IE1hdGgudGFuKCgoaUJvdW5kYXJ5Q2VudHJlQW5nbGUgLSBpbkFuZ2xlKSAqIE1hdGguUEkpIC8gMTgwKTtcblxuICAgICAgICAgICAgcmV0dXJuICh0YW4gKiBpQm91bmRhcnlMZW5ndGgpIC8gMjtcbiAgICAgICAgfTtcblxuICAgICAgICBwb2ludHMucHVzaChvU3RhcnRQb2ludCk7XG5cbiAgICAgICAgaWYgKDAgPCBhbmdsZSAmJiBhbmdsZSA8IDQ1KSB7XG4gICAgICAgICAgICB4RGlmZmVyZW5jZUZyb21Cb3VuZGFyeUNlbnRyZSA9IGNvbXB1dGVEaWZmZXJlbmNlRnJvbUJvdW5kYXJ5Q2VudHJlKGFuZ2xlLCAwLCBib3VuZGluZ0JveFN2Zy5oZWlnaHQpO1xuICAgICAgICAgICAgcG9seWdvblBvaW50ID0gbmV3IFBvaW50KG9TdGFydFBvaW50LnggLSB4RGlmZmVyZW5jZUZyb21Cb3VuZGFyeUNlbnRyZSwgb1N0YXJ0UG9pbnQueSk7XG4gICAgICAgICAgICBwb2ludHMucHVzaChfYWRqdXN0SWZDb3VudGVyQ2xvY2t3aXNlKHBvbHlnb25Qb2ludCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKDQ1IDw9IGFuZ2xlKSB7XG4gICAgICAgICAgICBwb2ludHMucHVzaChcbiAgICAgICAgICAgICAgICBfYWRqdXN0SWZDb3VudGVyQ2xvY2t3aXNlKG5ldyBQb2ludChib3VuZGluZ0JveFN2Zy54ICsgYm91bmRpbmdCb3hTdmcud2lkdGgsIGJvdW5kaW5nQm94U3ZnLnkpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICg0NSA8IGFuZ2xlICYmIGFuZ2xlIDwgMTM1KSB7XG4gICAgICAgICAgICB5RGlmZmVyZW5jZUZyb21Cb3VuZGFyeUNlbnRyZSA9IGNvbXB1dGVEaWZmZXJlbmNlRnJvbUJvdW5kYXJ5Q2VudHJlKGFuZ2xlLCA5MCwgYm91bmRpbmdCb3hTdmcud2lkdGgpO1xuICAgICAgICAgICAgcG9seWdvblBvaW50ID0gbmV3IFBvaW50KFxuICAgICAgICAgICAgICAgIGJvdW5kaW5nQm94U3ZnLnggKyBib3VuZGluZ0JveFN2Zy53aWR0aCxcbiAgICAgICAgICAgICAgICBib3VuZGluZ0JveFN2Zy55ICsgYm91bmRpbmdCb3hTdmcuaGVpZ2h0IC8gMiAtIHlEaWZmZXJlbmNlRnJvbUJvdW5kYXJ5Q2VudHJlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcG9pbnRzLnB1c2goX2FkanVzdElmQ291bnRlckNsb2Nrd2lzZShwb2x5Z29uUG9pbnQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgxMzUgPD0gYW5nbGUpIHtcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFxuICAgICAgICAgICAgICAgIF9hZGp1c3RJZkNvdW50ZXJDbG9ja3dpc2UoXG4gICAgICAgICAgICAgICAgICAgIG5ldyBQb2ludChib3VuZGluZ0JveFN2Zy54ICsgYm91bmRpbmdCb3hTdmcud2lkdGgsIGJvdW5kaW5nQm94U3ZnLnkgKyBib3VuZGluZ0JveFN2Zy5oZWlnaHQpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgxMzUgPCBhbmdsZSAmJiBhbmdsZSA8IDIyNSkge1xuICAgICAgICAgICAgeERpZmZlcmVuY2VGcm9tQm91bmRhcnlDZW50cmUgPSBjb21wdXRlRGlmZmVyZW5jZUZyb21Cb3VuZGFyeUNlbnRyZShhbmdsZSwgMTgwLCBib3VuZGluZ0JveFN2Zy5oZWlnaHQpO1xuICAgICAgICAgICAgcG9seWdvblBvaW50ID0gbmV3IFBvaW50KFxuICAgICAgICAgICAgICAgIGJvdW5kaW5nQm94U3ZnLnggKyBib3VuZGluZ0JveFN2Zy53aWR0aCAvIDIgKyB4RGlmZmVyZW5jZUZyb21Cb3VuZGFyeUNlbnRyZSxcbiAgICAgICAgICAgICAgICBib3VuZGluZ0JveFN2Zy55ICsgYm91bmRpbmdCb3hTdmcuaGVpZ2h0XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcG9pbnRzLnB1c2goX2FkanVzdElmQ291bnRlckNsb2Nrd2lzZShwb2x5Z29uUG9pbnQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgyMjUgPD0gYW5nbGUpIHtcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFxuICAgICAgICAgICAgICAgIF9hZGp1c3RJZkNvdW50ZXJDbG9ja3dpc2UobmV3IFBvaW50KGJvdW5kaW5nQm94U3ZnLngsIGJvdW5kaW5nQm94U3ZnLnkgKyBib3VuZGluZ0JveFN2Zy5oZWlnaHQpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgyMjUgPCBhbmdsZSAmJiBhbmdsZSA8IDMxNSkge1xuICAgICAgICAgICAgeURpZmZlcmVuY2VGcm9tQm91bmRhcnlDZW50cmUgPSBjb21wdXRlRGlmZmVyZW5jZUZyb21Cb3VuZGFyeUNlbnRyZShhbmdsZSwgMjcwLCBib3VuZGluZ0JveFN2Zy53aWR0aCk7XG4gICAgICAgICAgICBwb2x5Z29uUG9pbnQgPSBuZXcgUG9pbnQoXG4gICAgICAgICAgICAgICAgYm91bmRpbmdCb3hTdmcueCxcbiAgICAgICAgICAgICAgICBib3VuZGluZ0JveFN2Zy55ICsgYm91bmRpbmdCb3hTdmcuaGVpZ2h0IC8gMiArIHlEaWZmZXJlbmNlRnJvbUJvdW5kYXJ5Q2VudHJlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcG9pbnRzLnB1c2goX2FkanVzdElmQ291bnRlckNsb2Nrd2lzZShwb2x5Z29uUG9pbnQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgzMTUgPD0gYW5nbGUpIHtcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKF9hZGp1c3RJZkNvdW50ZXJDbG9ja3dpc2UobmV3IFBvaW50KGJvdW5kaW5nQm94U3ZnLngsIGJvdW5kaW5nQm94U3ZnLnkpKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoMzE1IDwgYW5nbGUgJiYgYW5nbGUgPD0gMzYwKSB7XG4gICAgICAgICAgICB4RGlmZmVyZW5jZUZyb21Cb3VuZGFyeUNlbnRyZSA9IGNvbXB1dGVEaWZmZXJlbmNlRnJvbUJvdW5kYXJ5Q2VudHJlKGFuZ2xlLCAzNjAsIGJvdW5kaW5nQm94U3ZnLmhlaWdodCk7XG4gICAgICAgICAgICBwb2x5Z29uUG9pbnQgPSBuZXcgUG9pbnQoXG4gICAgICAgICAgICAgICAgYm91bmRpbmdCb3hTdmcueCArIGJvdW5kaW5nQm94U3ZnLndpZHRoIC8gMiAtIHhEaWZmZXJlbmNlRnJvbUJvdW5kYXJ5Q2VudHJlLFxuICAgICAgICAgICAgICAgIGJvdW5kaW5nQm94U3ZnLnlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBwb2ludHMucHVzaChfYWRqdXN0SWZDb3VudGVyQ2xvY2t3aXNlKHBvbHlnb25Qb2ludCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcG9pbnRzLnB1c2gob0NlbnRyZVBvaW50KTtcblxuICAgICAgICByZXR1cm4gcG9pbnRzO1xuICAgIH1cbn1cbiIsIjxzcGFuXG4gICAgKm5nSWY9XCJsYWJlbFBvc2l0aW9uID09PSAnbGVmdCcgfHwgbGFiZWxQb3NpdGlvbiA9PT0gJ3RvcCdcIlxuICAgIFtjbGFzcy5mZC1zdGF0dXMtaW5kaWNhdG9yX19sYWJlbC0tc21dPVwibGFiZWxTaXplID09PSAnc20nXCJcbiAgICBbY2xhc3MuZmQtc3RhdHVzLWluZGljYXRvcl9fbGFiZWwtLW1kXT1cImxhYmVsU2l6ZSA9PT0gJ21kJ1wiXG4gICAgW2NsYXNzLmZkLXN0YXR1cy1pbmRpY2F0b3JfX2xhYmVsLS1sZ109XCJsYWJlbFNpemUgPT09ICdsZydcIlxuICAgIFtjbGFzcy5mZC1zdGF0dXMtaW5kaWNhdG9yX19sYWJlbC0teGxdPVwibGFiZWxTaXplID09PSAneGwnXCJcbiAgICBbY2xhc3MuZmQtc3RhdHVzLWluZGljYXRvcl9fbGFiZWwtLXRvcF09XCJsYWJlbFBvc2l0aW9uID09PSAndG9wJ1wiXG4gICAgW2NsYXNzLmZkLXN0YXR1cy1pbmRpY2F0b3JfX2xhYmVsLS1sZWZ0XT1cImxhYmVsUG9zaXRpb24gPT09ICdsZWZ0J1wiXG4gICAgY2xhc3M9XCJmZC1zdGF0dXMtaW5kaWNhdG9yX19sYWJlbFwiXG4gICAgPnt7IHN0YXR1c0xhYmVsIH19XG48L3NwYW4+XG48c3ZnXG4gICAgW2F0dHIuaWRdPVwiaWRcIlxuICAgIGRhdGEtc2FwLXVpPVwiX19zaGFwZTAtX19ib3gyMS0yNFwiXG4gICAgdmVyc2lvbj1cIjEuMVwiXG4gICAgW2F0dHIudmlld0JveF09XCJ2aWV3Qm94XCJcbiAgICB4bG1ucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwieE1pZFlNaWQgbWVldFwiXG4gICAgY2xhc3M9XCJmZC1zdGF0dXMtaW5kaWNhdG9yX19zdmdcIlxuPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3ZnVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvc3ZnPlxuPHNwYW5cbiAgICAqbmdJZj1cImxhYmVsUG9zaXRpb24gPT09ICdyaWdodCcgfHwgbGFiZWxQb3NpdGlvbiA9PT0gJ2JvdHRvbSdcIlxuICAgIFtjbGFzcy5mZC1zdGF0dXMtaW5kaWNhdG9yX19sYWJlbC0tc21dPVwibGFiZWxTaXplID09PSAnc20nXCJcbiAgICBbY2xhc3MuZmQtc3RhdHVzLWluZGljYXRvcl9fbGFiZWwtLW1kXT1cImxhYmVsU2l6ZSA9PT0gJ21kJ1wiXG4gICAgW2NsYXNzLmZkLXN0YXR1cy1pbmRpY2F0b3JfX2xhYmVsLS1sZ109XCJsYWJlbFNpemUgPT09ICdsZydcIlxuICAgIFtjbGFzcy5mZC1zdGF0dXMtaW5kaWNhdG9yX19sYWJlbC0teGxdPVwibGFiZWxTaXplID09PSAneGwnXCJcbiAgICBbY2xhc3MuZmQtc3RhdHVzLWluZGljYXRvcl9fbGFiZWwtLXJpZ2h0XT1cImxhYmVsUG9zaXRpb24gPT09ICdyaWdodCdcIlxuICAgIFtjbGFzcy5mZC1zdGF0dXMtaW5kaWNhdG9yX19sYWJlbC0tYm90dG9tXT1cImxhYmVsUG9zaXRpb24gPT09ICdib3R0b20nXCJcbiAgICBjbGFzcz1cImZkLXN0YXR1cy1pbmRpY2F0b3JfX2xhYmVsXCJcbiAgICA+e3sgc3RhdHVzTGFiZWwgfX1cbjwvc3Bhbj5cblxuPG5nLXRlbXBsYXRlICNzdmdUZW1wbGF0ZT5cbiAgICA8c3ZnXG4gICAgICAgIHhsbW5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwieE1pZFlNaWQgbWVldFwiXG4gICAgICAgIG92ZXJmbG93PVwidmlzaWJsZVwiXG4gICAgICAgIFthdHRyLmlkXT1cImlkICsgaVwiXG4gICAgICAgIGRhdGEtc2FwLXVpPVwiaWRcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgcGF0aCBvZiBwYXRoOyBsZXQgaSA9IGluZGV4XCJcbiAgICA+XG4gICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgPGxpbmVhckdyYWRpZW50XG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhKGZpbGxDYWxjdWxhdG9yIC0gaSA+IDAgJiYgZmlsbENhbGN1bGF0b3IgLSBpIDwgMSkgfHwgZmlsbGluZ1R5cGUgIT09ICdyYWRpYWwnXCJcbiAgICAgICAgICAgICAgICBpZD1cInt7IGlkICsgaSB9fS1ncmFkaWVudFwiXG4gICAgICAgICAgICAgICAgW2F0dHIueDFdPVwieDFcIlxuICAgICAgICAgICAgICAgIFthdHRyLnkxXT1cInkxXCJcbiAgICAgICAgICAgICAgICBbYXR0ci54Ml09XCJ4MlwiXG4gICAgICAgICAgICAgICAgW2F0dHIueTJdPVwieTJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzdG9wIFthdHRyLm9mZnNldF09XCJmaWxsQ2FsY3VsYXRvciAtIGlcIiBzdG9wLWNvbG9yPVwid2hpdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFuaW1hdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZU5hbWU9XCJvZmZzZXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci52YWx1ZXM9XCIwLCB7eyBmaWxsQ2FsY3VsYXRvciAtIGkgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVwZWF0Q291bnQ9XCIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGR1cj1cIjFzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luPVwiMHNcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvc3RvcD5cbiAgICAgICAgICAgICAgICA8c3RvcCBbYXR0ci5vZmZzZXRdPVwiZmlsbENhbGN1bGF0b3IgLSBpXCIgc3RvcC1jb2xvcj1cInRyYW5zcGFyZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxhbmltYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVOYW1lPVwib2Zmc2V0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIudmFsdWVzPVwiMCwge3sgZmlsbENhbGN1bGF0b3IgLSBpIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdENvdW50PVwiMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkdXI9XCIxc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBiZWdpbj1cIjBzXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L3N0b3A+XG4gICAgICAgICAgICA8L2xpbmVhckdyYWRpZW50PlxuICAgICAgICAgICAgPG1hc2sgI21hc2tUZW1wbGF0ZSBpZD1cInt7IGlkICsgaSB9fS1tYXNrXCI+XG4gICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhKGZpbGxDYWxjdWxhdG9yIC0gaSA+IDAgJiYgZmlsbENhbGN1bGF0b3IgLSBpIDwgMSkgfHwgZmlsbGluZ1R5cGUgIT09ICdyYWRpYWwnXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyBpZCArIGkgfX0tbWFzay1zaGFwZVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRdPVwicGF0aFwiXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjBcIlxuICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgIGF0dHIuZmlsbD1cInVybCgje3sgaWQgKyBpIH19LWdyYWRpZW50KVwiXG4gICAgICAgICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgICAgICAgICA8cG9seWdvblxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZpbGxpbmdUeXBlID09PSAncmFkaWFsJyAmJiBmaWxsQ2FsY3VsYXRvciAtIGkgPiAwICYmIGZpbGxDYWxjdWxhdG9yIC0gaSA8IDFcIlxuICAgICAgICAgICAgICAgICAgICBpZD1cInt7IGlkICsgaSB9fS1tYXNrLXNoYXBlXCJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIucG9pbnRzXT1cInBvaW50c0FycmF5W2ldXCJcbiAgICAgICAgICAgICAgICA+PC9wb2x5Z29uPlxuICAgICAgICAgICAgPC9tYXNrPlxuICAgICAgICA8L2RlZnM+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgICBpZD1cInt7IGlkICsgaSB9fS1zaGFwZVwiXG4gICAgICAgICAgICBbYXR0ci5kXT1cInBhdGhcIlxuICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMFwiXG4gICAgICAgICAgICBzdHJva2U9XCIjODk5MTlBXCJcbiAgICAgICAgICAgIGF0dHIubWFzaz1cInVybCgje3sgaWQgKyBpIH19LW1hc2spXCJcbiAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGlkPVwie3sgaWQgKyBpIH19LXNoYXBlLWJvcmRlclwiXG4gICAgICAgICAgICBbYXR0ci5kXT1cInBhdGhcIlxuICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMC4yNVwiXG4gICAgICAgICAgICBzdHJva2U9XCIjODk5MTlBXCJcbiAgICAgICAgICAgIGZpbGw9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG48L25nLXRlbXBsYXRlPlxuIl19
294
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLWluZGljYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9zdGF0dXMtaW5kaWNhdG9yL3N0YXR1cy1pbmRpY2F0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc3RhdHVzLWluZGljYXRvci9zdGF0dXMtaW5kaWNhdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULEtBQUssRUFDTCxVQUFVLEVBRVYsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUV2QixpQkFBaUIsRUFFcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBbUIsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBUzVFLE1BQU0sT0FBTyxLQUFLO0lBQ2QsY0FBYztJQUNkLFlBQW1CLENBQVMsRUFBUyxDQUFTO1FBQTNCLE1BQUMsR0FBRCxDQUFDLENBQVE7UUFBUyxNQUFDLEdBQUQsQ0FBQyxDQUFRO0lBQUcsQ0FBQztDQUNyRDtBQXFCRCxNQUFNLE9BQU8sd0JBQXdCO0lBMEZqQyxjQUFjO0lBQ2QsSUFBSSxjQUFjLENBQUMsU0FBMkI7UUFDMUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7SUFDbkMsQ0FBQztJQUNELElBQUksY0FBYztRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBMkJELGNBQWM7SUFDZCxZQUE0QixVQUFtQyxFQUFVLEdBQXNCO1FBQW5FLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFySC9GOzs7O1dBSUc7UUFFSCxTQUFJLEdBQXdCLElBQUksQ0FBQztRQTBCakM7OztXQUdHO1FBRUgsY0FBUyxHQUF3QixJQUFJLENBQUM7UUF3Q3RDOztXQUVHO1FBRUgsa0JBQWEs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LHNCQUFzQixFQUFFLHFDQUFxQzt3QkFDN0Qsc0JBQXNCLEVBQUUsR0FBRzt3QkFDM0Isc0JBQXNCLEVBQUUsS0FBSzt3QkFDN0IsaUJBQWlCLEVBQUUsb0JBQW9CO3FCQUMxQyxpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNO2lJQU8vQyxFQUFFO3NCQURELEtBQUs7Z0JBU04sSUFBSTtzQkFESCxLQUFLO2dCQVNOLE1BQU07c0JBREwsS0FBSztnQkFLTixXQUFXO3NCQURWLEtBQUs7Z0JBT04sT0FBTztzQkFETixLQUFLO2dCQU9OLFNBQVM7c0JBRFIsS0FBSztnQkFRTixTQUFTO3NCQURSLEtBQUs7Z0JBS04sU0FBUztzQkFEUixLQUFLO2dCQUtOLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFLTixTQUFTO3NCQURSLEtBQUs7Z0JBS04sSUFBSTtzQkFESCxLQUFLO2dCQUtOLGFBQWE7c0JBRFosS0FBSztnQkFLTixLQUFLO3NCQURKLEtBQUs7Z0JBS04sYUFBYTtzQkFEWixLQUFLO2dCQUtOLElBQUk7c0JBREgsS0FBSztnQkFPTixjQUFjO3NCQURiLEtBQUs7Z0JBT04sYUFBYTtzQkFEWixLQUFLO2dCQWVOLFdBQVc7c0JBRFYsS0FBSztnQkFLTixLQUFLO3NCQURKLEtBQUs7Z0JBK0NOLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIElucHV0LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgT25DaGFuZ2VzLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgT25Jbml0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYXBwbHlDc3NDbGFzcywgQ3NzQ2xhc3NCdWlsZGVyIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5cbmV4cG9ydCB0eXBlIFN0YXR1c0luZGljYXRvclNpemUgPSAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnO1xuZXhwb3J0IHR5cGUgU3RhdHVzSW5kaWNhdG9yQ29sb3IgPSAnbmVnYXRpdmUnIHwgJ2NyaXRpY2FsJyB8ICdwb3NpdGl2ZSc7XG5leHBvcnQgdHlwZSBMYWJsZVBvc2l0aW9uID0gJ2xlZnQnIHwgJ3JpZ2h0JyB8ICd0b3AnIHwgJ2JvdHRvbSc7XG5leHBvcnQgdHlwZSBGaWxsaW5nVHlwZSA9ICdyYWRpYWwnIHwgJ2FuZ2xlZCcgfCAnbGluZWFydXAnIHwgJ2xpbmVhcmRvd24nIHwgJ2xpbmVhcmxlZnQnO1xuZXhwb3J0IHR5cGUgRmlsbGluZ0RpcmVjdGlvbiA9ICdjbG9ja3dpc2UnIHwgJ2NvdW50ZXJjbG9ja3dpc2UnO1xuXG5leHBvcnQgY2xhc3MgUG9pbnQge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHVibGljIHg6IG51bWJlciwgcHVibGljIHk6IG51bWJlcikge31cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1zdGF0dXMtaW5kaWNhdG9yJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc3RhdHVzLWluZGljYXRvci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3RhdHVzLWluZGljYXRvci5jb21wb25lbnQuc2NzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLmFyaWEtbGFiZWxdJzogJ2FyaWFMYWJlbCcsXG4gICAgICAgICdbYXR0ci5hcmlhLXJvbGVkZXNjcmlwdGlvbl0nOiAnYXJpYVJvbGVEZXNjcmlwdGlvbicsXG4gICAgICAgICdbYXR0ci5mb2N1c2FibGVdJzogJ2ZvY3VzYWJsZScsXG4gICAgICAgICdbYXR0ci50aXRsZV0nOiAndGl0bGUnLFxuICAgICAgICAnW2F0dHIucm9sZV0nOiAncm9sZScsXG4gICAgICAgICdbYXR0ci5hcmlhLXZhbHVldGV4dF0nOiAnYXJpYVZhbHVlVGV4dCcsXG4gICAgICAgICdbYXR0ci5hcmlhLXZhbHVlbm93XSc6ICdmaWxsUGVyY2VudGFnZSA/IGZpbGxQZXJjZW50YWdlIDogMCcsXG4gICAgICAgICdbYXR0ci5hcmlhLXZhbHVlbWluXSc6ICcwJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtdmFsdWVtYXhdJzogJzEwMCcsXG4gICAgICAgICdbYXR0ci50YWJpbmRleF0nOiAnZm9jdXNhYmxlID8gMCA6IC0xJ1xuICAgIH0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBTdGF0dXNJbmRpY2F0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIENzc0NsYXNzQnVpbGRlciwgT25Jbml0IHtcbiAgICAvKipcbiAgICAgKiB2YWx1ZSBpZCBkZWZpbmVzIHRoZSBpZCBvZiB0aGUgb2JqZWN0LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgaWQ6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIGRlZmluZXMgdGhlIHNpemUgb2YgdGhlIHN0YXR1cyBpbmRpY2F0b3IuXG4gICAgICogQ2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOiAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnXG4gICAgICogRGVmYXVsdCBzaXplIGlzIE1lZGl1bShtZCkuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzaXplOiBTdGF0dXNJbmRpY2F0b3JTaXplID0gJ21kJztcblxuICAgIC8qKlxuICAgICAqIFRoZSBzdGF0dXMgcmVwcmVzZW50ZWQgYnkgdGhlIFN0YXR1cyBJbmRpY2F0b3IuXG4gICAgICogQ2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOiAnbmVnYXRpdmUnIHwgJ2NyaXRpY2FsJyB8ICdpbmZvcm1hdGl2ZSdcbiAgICAgKiBGb3IgZGVmYXVsdCBPYmplY3QgU3RhdHVzIG9taXQgdGhpcyBwcm9wZXJ0eVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RhdHVzOiBTdGF0dXNJbmRpY2F0b3JDb2xvcjtcblxuICAgIC8qKiBEZWZpbmUgdGhlIHRleHQgY29udGVudCBvZiB0aGUgU3RhdHVzIGluZGljYXRvciovXG4gICAgQElucHV0KClcbiAgICBzdGF0dXNMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogcG9zaXRpb25pbmcgb2YgdGhlIHN0YXR1cyBpbmRpY2F0b3IgaW1hZ2Ugd2l0aGluZyB0aGUgZGVmaW5lZCBoZWlnaHQgYW5kIHdpZHRoIC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHZpZXdCb3g6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIGJvb2xlYW4gdmFsdWUgdG8gYmUgbWFya2VkIGFzIGEgY2xpY2thYmxlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBjbGlja2FibGU6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBkZWZpbmVzIHRoZSBzaXplIG9mIHRoZSBzdGF0dXMgaW5kaWNhdG9yLlxuICAgICAqIENhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzogJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ3hsJ1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbGFiZWxTaXplOiBTdGF0dXNJbmRpY2F0b3JTaXplID0gJ3NtJztcblxuICAgIC8qKiBBcmlhIGxhYmVsIGZvciB0aGUgU3RhdHVzIEluZGljYXRvci4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbDogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBBcmlhIGRlZmluZXMgcm9sZSBkZXNjcmlwdGlvbiBmb3IgdGhlIFN0YXR1cyBJbmRpY2F0b3IuICovXG4gICAgQElucHV0KClcbiAgICBhcmlhUm9sZURlc2NyaXB0aW9uOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIEFyaWEgRm9jdXNhYmxlIGZvciB0aGUgU3RhdHVzIEluZGljYXRvci4gKi9cbiAgICBASW5wdXQoKVxuICAgIGZvY3VzYWJsZTogYm9vbGVhbjtcblxuICAgIC8qKiBBcmlhIFJvbGUgZm9yIHRoZSBTdGF0dXMgSW5kaWNhdG9yLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcm9sZTogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBBcmlhIFZhbHVlIFRleHQgZm9yIHRoZSBTdGF0dXMgSW5kaWNhdG9yLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYVZhbHVlVGV4dDogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBBcmlhIHRpdGxlIGZvciB0aGUgc3RhdHVzIGluZGljYXRvci4gKi9cbiAgICBASW5wdXQoKVxuICAgIHRpdGxlOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIGRlZmluZXMgdGhlIGxhYmVsIHBvc2l0aW9uIHRoZSB2YWx1ZSBjYW4gYmUgJ2xlZnQnIHwgJ3JpZ2h0JyB8ICd0b3AnIHwgJ2JvdHRvbScgKi9cbiAgICBASW5wdXQoKVxuICAgIGxhYmVsUG9zaXRpb246IExhYmxlUG9zaXRpb247XG5cbiAgICAvKiogUGF0aCBmb3IgdGhlIHN0YXR1cyBpbmRpY2F0b3IgKi9cbiAgICBASW5wdXQoKVxuICAgIHBhdGg6IHN0cmluZ1tdO1xuXG4gICAgLyoqXG4gICAgICogT2Zmc2V0IHZhbHVlIHRvIGJlIGZpbGxlZCB1bmRlciB0aGUgZ2l2ZSBwZXJjZW50YXRnZSB2YWx1ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZpbGxQZXJjZW50YWdlOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiB2YWx1ZSB0byBkZWZpbmUgZmlsbCBkaXJlY3Rpb25cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZpbGxEaXJlY3Rpb246IEZpbGxpbmdEaXJlY3Rpb24gPSAnY2xvY2t3aXNlJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0IF9maWxsRGlyZWN0aW9uKGRpcmVjdGlvbjogRmlsbGluZ0RpcmVjdGlvbikge1xuICAgICAgICB0aGlzLmZpbGxEaXJlY3Rpb24gPSBkaXJlY3Rpb247XG4gICAgfVxuICAgIGdldCBfZmlsbERpcmVjdGlvbigpOiBGaWxsaW5nRGlyZWN0aW9uIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsbERpcmVjdGlvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaWxsaW5nVHlwZSB0byByZXByZXNlbnQgdGhlIGZpbGwgcGF0dGVybiBvZiB0aGUgY29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBmaWxsaW5nVHlwZTogRmlsbGluZ1R5cGUgPSAnbGluZWFyZG93bic7XG5cbiAgICAvKiogcmVwcmVzZW50IHRoZSBkZWdyZWUgb2YgYW5nbGUgdG8gcHJvamVjdCB0aGUgZmlsbGluZyBvZiB0aGUgY29tcG9uZW50ICovXG4gICAgQElucHV0KClcbiAgICBhbmdsZTogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBmaWxsQ2FsY3VsYXRvcjogbnVtYmVyO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgYmluYXJ5U3RyaW5nOiBzdHJpbmc7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB4MTogc3RyaW5nO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgeTE6IHN0cmluZztcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHgyOiBzdHJpbmc7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB5Mjogc3RyaW5nO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcG9pbnRzQXJyYXk6IHN0cmluZ1tdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiwgcHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjbGFzczogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2FuZ2xlQ2FsY3VsYXRpb24oKTtcbiAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZUZpbGxpbmcoKTtcbiAgICAgICAgdGhpcy5idWlsZENvbXBvbmVudENzc0NsYXNzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogQ3NzQ2xhc3NCdWlsZGVyIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvblxuICAgICAqIGZ1bmN0aW9uIG11c3QgcmV0dXJuIHNpbmdsZSBzdHJpbmdcbiAgICAgKiBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3Igb3JkZXIgd2hpY2ggY3NzIGNsYXNzZXMgYXJlIGFwcGxpZWRcbiAgICAgKi9cbiAgICBAYXBwbHlDc3NDbGFzc1xuICAgIGJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgJ2ZkLXN0YXR1cy1pbmRpY2F0b3InLFxuICAgICAgICAgICAgdGhpcy5zaXplID8gYGZkLXN0YXR1cy1pbmRpY2F0b3ItLSR7dGhpcy5zaXplfWAgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuc3RhdHVzID8gYGZkLXN0YXR1cy1pbmRpY2F0b3ItLSR7dGhpcy5zdGF0dXN9YCA6ICcnLFxuICAgICAgICAgICAgdGhpcy5jbGlja2FibGUgPyBgZmQtc3RhdHVzLWluZGljYXRvci0tbGlua2AgOiAnJyxcbiAgICAgICAgICAgIHRoaXMubGFiZWxQb3NpdGlvbiA9PT0gJ3JpZ2h0JyB8fCB0aGlzLmxhYmVsUG9zaXRpb24gPT09ICdsZWZ0J1xuICAgICAgICAgICAgICAgID8gYGZkLXN0YXR1cy1pbmRpY2F0b3ItLWhvcml6b250YWwtbGFiZWxgXG4gICAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuY2xhc3NcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZUZpbGxpbmcoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmZpbGxQZXJjZW50YWdlIDwgMCB8fCB0aGlzLmZpbGxQZXJjZW50YWdlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsbENhbGN1bGF0b3IgPSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5maWxsQ2FsY3VsYXRvciA9ICh0aGlzLmZpbGxQZXJjZW50YWdlICogdGhpcy5wYXRoLmxlbmd0aCkgLyAxMDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FuZ2xlQ2FsY3VsYXRpb24oKTogdm9pZCB7XG4gICAgICAgIGxldCBzUG9pbnRzQXR0cmlidXRlVmFsdWU6IEFycmF5PFBvaW50PjtcbiAgICAgICAgbGV0IHBvbHlnb25Qb2ludHM6IHN0cmluZztcbiAgICAgICAgc3dpdGNoICh0aGlzLmZpbGxpbmdUeXBlKSB7XG4gICAgICAgICAgICBjYXNlICdhbmdsZWQnOlxuICAgICAgICAgICAgICAgIHRoaXMuYmluYXJ5U3RyaW5nID0gdGhpcy5fY29udmVydEFuZ2xlVG9CaW5hcnkodGhpcy5hbmdsZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fYXNzaWduQmluYXJ5VmFsdWUodGhpcy5iaW5hcnlTdHJpbmcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncmFkaWFsJzoge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRlbXBQZXJjZW50ID0gdGhpcy5maWxsQ2FsY3VsYXRvciAlIDE7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsbE51bWJlciA9IE51bWJlcih0ZW1wUGVyY2VudC50b0ZpeGVkKDIpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnc3ZnJyk7XG5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGVsZW1lbnQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgc1BvaW50c0F0dHJpYnV0ZVZhbHVlID0gdGhpcy5fZ2V0UG9seWdvblBvaW50c0ZvckNpcmN1bGFyRmlsbGluZyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxOdW1iZXIgKiAxMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50W2ldLmdldEJCb3goKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBwb2x5Z29uUG9pbnRzID0gc1BvaW50c0F0dHJpYnV0ZVZhbHVlLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiBhY2MgKyBpdGVtLnggKyAnLCcgKyBpdGVtLnkgKyAnICcsICcnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb2ludHNBcnJheS5wdXNoKHBvbHlnb25Qb2ludHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2xpbmVhcnVwJzpcbiAgICAgICAgICAgICAgICB0aGlzLmJpbmFyeVN0cmluZyA9IHRoaXMuX2NvbnZlcnRBbmdsZVRvQmluYXJ5KDkwKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9hc3NpZ25CaW5hcnlWYWx1ZSh0aGlzLmJpbmFyeVN0cmluZyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdsaW5lYXJkb3duJzpcbiAgICAgICAgICAgICAgICB0aGlzLmJpbmFyeVN0cmluZyA9IHRoaXMuX2NvbnZlcnRBbmdsZVRvQmluYXJ5KDI3MCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fYXNzaWduQmluYXJ5VmFsdWUodGhpcy5iaW5hcnlTdHJpbmcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbGluZWFybGVmdCc6XG4gICAgICAgICAgICAgICAgdGhpcy5iaW5hcnlTdHJpbmcgPSB0aGlzLl9jb252ZXJ0QW5nbGVUb0JpbmFyeSgxODApO1xuICAgICAgICAgICAgICAgIHRoaXMuX2Fzc2lnbkJpbmFyeVZhbHVlKHRoaXMuYmluYXJ5U3RyaW5nKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBmZFN0YXR1c0luZGljYXRvcjogTm8gZmlsbFR5cGUgZm91bmQgZm9yICR7dGhpcy5maWxsaW5nVHlwZX0uYCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbnZlcnRBbmdsZVRvQmluYXJ5KGFuZ2xlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICBpZiAoYW5nbGUgPiAwICYmIGFuZ2xlIDw9IDQ1KSB7XG4gICAgICAgICAgICByZXR1cm4gJzEsMCwwLDEnO1xuICAgICAgICB9IGVsc2UgaWYgKGFuZ2xlID49IDQ1ICYmIGFuZ2xlIDwgOTApIHtcbiAgICAgICAgICAgIHJldHVybiAnMCwwLDAsMSc7XG4gICAgICAgIH0gZWxzZSBpZiAoYW5nbGUgPj0gOTAgJiYgYW5nbGUgPCAxMzUpIHtcbiAgICAgICAgICAgIHJldHVybiAnMCwwLDAsMSc7XG4gICAgICAgIH0gZWxzZSBpZiAoYW5nbGUgPj0gMTM1ICYmIGFuZ2xlIDwgMTgwKSB7XG4gICAgICAgICAgICByZXR1cm4gJzAsMCwxLDEnO1xuICAgICAgICB9IGVsc2UgaWYgKGFuZ2xlID49IDE4MCAmJiBhbmdsZSA8IDIyNSkge1xuICAgICAgICAgICAgcmV0dXJuICcwLDAsMSwwJztcbiAgICAgICAgfSBlbHNlIGlmIChhbmdsZSA+PSAyMjUgJiYgYW5nbGUgPCAyNzApIHtcbiAgICAgICAgICAgIHJldHVybiAnMCwxLDEsMCc7XG4gICAgICAgIH0gZWxzZSBpZiAoYW5nbGUgPj0gMjcwICYmIGFuZ2xlIDwgMzE1KSB7XG4gICAgICAgICAgICByZXR1cm4gJzAsMSwwLDAnO1xuICAgICAgICB9IGVsc2UgaWYgKGFuZ2xlID49IDMxNSAmJiBhbmdsZSA8IDM2MCkge1xuICAgICAgICAgICAgcmV0dXJuICcxLDEsMCwwJztcbiAgICAgICAgfSBlbHNlIGlmIChhbmdsZSA9PT0gMCB8fCBhbmdsZSA9PT0gMzYwKSB7XG4gICAgICAgICAgICByZXR1cm4gJzEsMCwwLDAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuICdpbnZhbGlkJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYXNzaWduQmluYXJ5VmFsdWUoYmluYXJ5U3RyaW5nOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYmluYXJ5VmFsdWUgPSBiaW5hcnlTdHJpbmcuc3BsaXQoJywnKTtcbiAgICAgICAgdGhpcy54MSA9IGJpbmFyeVZhbHVlWzBdO1xuICAgICAgICB0aGlzLnkxID0gYmluYXJ5VmFsdWVbMV07XG4gICAgICAgIHRoaXMueDIgPSBiaW5hcnlWYWx1ZVsyXTtcbiAgICAgICAgdGhpcy55MiA9IGJpbmFyeVZhbHVlWzNdO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0UG9seWdvblBvaW50c0ZvckNpcmN1bGFyRmlsbGluZyh2YWx1ZTogbnVtYmVyLCBib3VuZGluZ0JveFN2ZzogRE9NUmVjdCk6IEFycmF5PFBvaW50PiB7XG4gICAgICAgIGNvbnN0IGFuZ2xlID0gMy42ICogdmFsdWU7XG4gICAgICAgIGNvbnN0IHBvaW50czogUG9pbnRbXSA9IFtdO1xuICAgICAgICBsZXQgeERpZmZlcmVuY2VGcm9tQm91bmRhcnlDZW50cmU6IG51bWJlcjtcbiAgICAgICAgbGV0IHlEaWZmZXJlbmNlRnJvbUJvdW5kYXJ5Q2VudHJlOiBudW1iZXI7XG4gICAgICAgIGxldCBwb2x5Z29uUG9pbnQ6IFBvaW50O1xuXG4gICAgICAgIC8vIHN0YXJ0cyBhdCAxMiwgdGhlIGFsZ29yaXRobSBjb21wdXRlcyB0aGUgY29vcmRpbmF0aW9uIGZvciBjbG9ja3dpc2UgZGlyZWN0aW9uIG9ubHlcbiAgICAgICAgLy8gY291bnRlciBjbG9ja3dpc2UgZGlyZWN0aW9uIGlzIG1hbmFnZWQgYnkgc3ltbWV0cnlcbiAgICAgICAgY29uc3Qgb1N0YXJ0UG9pbnQgPSBuZXcgUG9pbnQoYm91bmRpbmdCb3hTdmcueCArIGJvdW5kaW5nQm94U3ZnLndpZHRoIC8gMiwgYm91bmRpbmdCb3hTdmcueSk7XG4gICAgICAgIGNvbnN0IG9DZW50cmVQb2ludCA9IG5ldyBQb2ludChcbiAgICAgICAgICAgIGJvdW5kaW5nQm94U3ZnLnggKyBib3VuZGluZ0JveFN2Zy53aWR0aCAvIDIsXG4gICAgICAgICAgICBib3VuZGluZ0JveFN2Zy55ICsgYm91bmRpbmdCb3hTdmcuaGVpZ2h0IC8gMlxuICAgICAgICApO1xuXG4gICAgICAgIC8vIFJlZmxlY3RzIHggY29vcmRpbmF0ZSBieSBjZW50cmUgcG9pbnQgZm9yIENvdW50ZXIgQ2xvY2t3aXNlIHR5cGVcbiAgICAgICAgY29uc3QgX2FkanVzdElmQ291bnRlckNsb2Nrd2lzZSA9IChvUG9pbnQ6IFBvaW50KTogUG9pbnQgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzID0gT2JqZWN0LmFzc2lnbih7fSwgb1BvaW50KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuX2ZpbGxEaXJlY3Rpb24gPT09ICdjb3VudGVyY2xvY2t3aXNlJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlYRGlzdGFuY2VGcm9tQ2VudHJlID0gb1BvaW50LnggLSBvQ2VudHJlUG9pbnQueDtcbiAgICAgICAgICAgICAgICByZXMueCA9IG9DZW50cmVQb2ludC54IC0gaVhEaXN0YW5jZUZyb21DZW50cmU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gQm91bmRhcnkgY2VudHJlIGlzIGdpdmVuIGJ5IGFuZ2xlIGRpc3RhbmNlIGZyb20gdGhlIGJlZ2lubmluZyAoMMKwKS4gVGhlIHJldHVybmVkIGRpZmZlcmVuY2UgaXMgcmVsYXRlZFxuICAgICAgICAvLyB0byB4IG9yIHkgY29vcmRpbmF0ZSBkZXBlbmRpbmcgb24gYm91bmRhcnkgY2VudHJlIGFuZ2xlIChlLmcuIDDCsCAtPiB4LCA5MMKwIC0+IHksIDE4MMKwIC0+IHggIDI3MMKwIC0+IHkpLlxuICAgICAgICAvLyBCb3VuZGFyeSBsZW5ndGggaXMgbGVuZ3RoIG9mIHRoZSBjb3JyZXNwb25kaW5nIHNpZGUgb2YgYm91bmRpbmcgYm94ICh3aWR0aCBmb3IgeCwgaGVpZ2h0IGZvciB5KS5cbiAgICAgICAgY29uc3QgY29tcHV0ZURpZmZlcmVuY2VGcm9tQm91bmRhcnlDZW50cmUgPSAoXG4gICAgICAgICAgICBpbkFuZ2xlOiBudW1iZXIsXG4gICAgICAgICAgICBpQm91bmRhcnlDZW50cmVBbmdsZTogbnVtYmVyLFxuICAgICAgICAgICAgaUJvdW5kYXJ5TGVuZ3RoOiBudW1iZXJcbiAgICAgICAgKTogbnVtYmVyID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhbiA9IE1hdGgudGFuKCgoaUJvdW5kYXJ5Q2VudHJlQW5nbGUgLSBpbkFuZ2xlKSAqIE1hdGguUEkpIC8gMTgwKTtcblxuICAgICAgICAgICAgcmV0dXJuICh0YW4gKiBpQm91bmRhcnlMZW5ndGgpIC8gMjtcbiAgICAgICAgfTtcblxuICAgICAgICBwb2ludHMucHVzaChvU3RhcnRQb2ludCk7XG5cbiAgICAgICAgaWYgKDAgPCBhbmdsZSAmJiBhbmdsZSA8IDQ1KSB7XG4gICAgICAgICAgICB4RGlmZmVyZW5jZUZyb21Cb3VuZGFyeUNlbnRyZSA9IGNvbXB1dGVEaWZmZXJlbmNlRnJvbUJvdW5kYXJ5Q2VudHJlKGFuZ2xlLCAwLCBib3VuZGluZ0JveFN2Zy5oZWlnaHQpO1xuICAgICAgICAgICAgcG9seWdvblBvaW50ID0gbmV3IFBvaW50KG9TdGFydFBvaW50LnggLSB4RGlmZmVyZW5jZUZyb21Cb3VuZGFyeUNlbnRyZSwgb1N0YXJ0UG9pbnQueSk7XG4gICAgICAgICAgICBwb2ludHMucHVzaChfYWRqdXN0SWZDb3VudGVyQ2xvY2t3aXNlKHBvbHlnb25Qb2ludCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKDQ1IDw9IGFuZ2xlKSB7XG4gICAgICAgICAgICBwb2ludHMucHVzaChcbiAgICAgICAgICAgICAgICBfYWRqdXN0SWZDb3VudGVyQ2xvY2t3aXNlKG5ldyBQb2ludChib3VuZGluZ0JveFN2Zy54ICsgYm91bmRpbmdCb3hTdmcud2lkdGgsIGJvdW5kaW5nQm94U3ZnLnkpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICg0NSA8IGFuZ2xlICYmIGFuZ2xlIDwgMTM1KSB7XG4gICAgICAgICAgICB5RGlmZmVyZW5jZUZyb21Cb3VuZGFyeUNlbnRyZSA9IGNvbXB1dGVEaWZmZXJlbmNlRnJvbUJvdW5kYXJ5Q2VudHJlKGFuZ2xlLCA5MCwgYm91bmRpbmdCb3hTdmcud2lkdGgpO1xuICAgICAgICAgICAgcG9seWdvblBvaW50ID0gbmV3IFBvaW50KFxuICAgICAgICAgICAgICAgIGJvdW5kaW5nQm94U3ZnLnggKyBib3VuZGluZ0JveFN2Zy53aWR0aCxcbiAgICAgICAgICAgICAgICBib3VuZGluZ0JveFN2Zy55ICsgYm91bmRpbmdCb3hTdmcuaGVpZ2h0IC8gMiAtIHlEaWZmZXJlbmNlRnJvbUJvdW5kYXJ5Q2VudHJlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcG9pbnRzLnB1c2goX2FkanVzdElmQ291bnRlckNsb2Nrd2lzZShwb2x5Z29uUG9pbnQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgxMzUgPD0gYW5nbGUpIHtcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFxuICAgICAgICAgICAgICAgIF9hZGp1c3RJZkNvdW50ZXJDbG9ja3dpc2UoXG4gICAgICAgICAgICAgICAgICAgIG5ldyBQb2ludChib3VuZGluZ0JveFN2Zy54ICsgYm91bmRpbmdCb3hTdmcud2lkdGgsIGJvdW5kaW5nQm94U3ZnLnkgKyBib3VuZGluZ0JveFN2Zy5oZWlnaHQpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgxMzUgPCBhbmdsZSAmJiBhbmdsZSA8IDIyNSkge1xuICAgICAgICAgICAgeERpZmZlcmVuY2VGcm9tQm91bmRhcnlDZW50cmUgPSBjb21wdXRlRGlmZmVyZW5jZUZyb21Cb3VuZGFyeUNlbnRyZShhbmdsZSwgMTgwLCBib3VuZGluZ0JveFN2Zy5oZWlnaHQpO1xuICAgICAgICAgICAgcG9seWdvblBvaW50ID0gbmV3IFBvaW50KFxuICAgICAgICAgICAgICAgIGJvdW5kaW5nQm94U3ZnLnggKyBib3VuZGluZ0JveFN2Zy53aWR0aCAvIDIgKyB4RGlmZmVyZW5jZUZyb21Cb3VuZGFyeUNlbnRyZSxcbiAgICAgICAgICAgICAgICBib3VuZGluZ0JveFN2Zy55ICsgYm91bmRpbmdCb3hTdmcuaGVpZ2h0XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcG9pbnRzLnB1c2goX2FkanVzdElmQ291bnRlckNsb2Nrd2lzZShwb2x5Z29uUG9pbnQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgyMjUgPD0gYW5nbGUpIHtcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFxuICAgICAgICAgICAgICAgIF9hZGp1c3RJZkNvdW50ZXJDbG9ja3dpc2UobmV3IFBvaW50KGJvdW5kaW5nQm94U3ZnLngsIGJvdW5kaW5nQm94U3ZnLnkgKyBib3VuZGluZ0JveFN2Zy5oZWlnaHQpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgyMjUgPCBhbmdsZSAmJiBhbmdsZSA8IDMxNSkge1xuICAgICAgICAgICAgeURpZmZlcmVuY2VGcm9tQm91bmRhcnlDZW50cmUgPSBjb21wdXRlRGlmZmVyZW5jZUZyb21Cb3VuZGFyeUNlbnRyZShhbmdsZSwgMjcwLCBib3VuZGluZ0JveFN2Zy53aWR0aCk7XG4gICAgICAgICAgICBwb2x5Z29uUG9pbnQgPSBuZXcgUG9pbnQoXG4gICAgICAgICAgICAgICAgYm91bmRpbmdCb3hTdmcueCxcbiAgICAgICAgICAgICAgICBib3VuZGluZ0JveFN2Zy55ICsgYm91bmRpbmdCb3hTdmcuaGVpZ2h0IC8gMiArIHlEaWZmZXJlbmNlRnJvbUJvdW5kYXJ5Q2VudHJlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcG9pbnRzLnB1c2goX2FkanVzdElmQ291bnRlckNsb2Nrd2lzZShwb2x5Z29uUG9pbnQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgzMTUgPD0gYW5nbGUpIHtcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKF9hZGp1c3RJZkNvdW50ZXJDbG9ja3dpc2UobmV3IFBvaW50KGJvdW5kaW5nQm94U3ZnLngsIGJvdW5kaW5nQm94U3ZnLnkpKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoMzE1IDwgYW5nbGUgJiYgYW5nbGUgPD0gMzYwKSB7XG4gICAgICAgICAgICB4RGlmZmVyZW5jZUZyb21Cb3VuZGFyeUNlbnRyZSA9IGNvbXB1dGVEaWZmZXJlbmNlRnJvbUJvdW5kYXJ5Q2VudHJlKGFuZ2xlLCAzNjAsIGJvdW5kaW5nQm94U3ZnLmhlaWdodCk7XG4gICAgICAgICAgICBwb2x5Z29uUG9pbnQgPSBuZXcgUG9pbnQoXG4gICAgICAgICAgICAgICAgYm91bmRpbmdCb3hTdmcueCArIGJvdW5kaW5nQm94U3ZnLndpZHRoIC8gMiAtIHhEaWZmZXJlbmNlRnJvbUJvdW5kYXJ5Q2VudHJlLFxuICAgICAgICAgICAgICAgIGJvdW5kaW5nQm94U3ZnLnlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBwb2ludHMucHVzaChfYWRqdXN0SWZDb3VudGVyQ2xvY2t3aXNlKHBvbHlnb25Qb2ludCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcG9pbnRzLnB1c2gob0NlbnRyZVBvaW50KTtcblxuICAgICAgICByZXR1cm4gcG9pbnRzO1xuICAgIH1cbn1cbiIsIjxzcGFuXG4gICAgKm5nSWY9XCJsYWJlbFBvc2l0aW9uID09PSAnbGVmdCcgfHwgbGFiZWxQb3NpdGlvbiA9PT0gJ3RvcCdcIlxuICAgIFtjbGFzcy5mZC1zdGF0dXMtaW5kaWNhdG9yX19sYWJlbC0tc21dPVwibGFiZWxTaXplID09PSAnc20nXCJcbiAgICBbY2xhc3MuZmQtc3RhdHVzLWluZGljYXRvcl9fbGFiZWwtLW1kXT1cImxhYmVsU2l6ZSA9PT0gJ21kJ1wiXG4gICAgW2NsYXNzLmZkLXN0YXR1cy1pbmRpY2F0b3JfX2xhYmVsLS1sZ109XCJsYWJlbFNpemUgPT09ICdsZydcIlxuICAgIFtjbGFzcy5mZC1zdGF0dXMtaW5kaWNhdG9yX19sYWJlbC0teGxdPVwibGFiZWxTaXplID09PSAneGwnXCJcbiAgICBbY2xhc3MuZmQtc3RhdHVzLWluZGljYXRvcl9fbGFiZWwtLXRvcF09XCJsYWJlbFBvc2l0aW9uID09PSAndG9wJ1wiXG4gICAgW2NsYXNzLmZkLXN0YXR1cy1pbmRpY2F0b3JfX2xhYmVsLS1sZWZ0XT1cImxhYmVsUG9zaXRpb24gPT09ICdsZWZ0J1wiXG4gICAgY2xhc3M9XCJmZC1zdGF0dXMtaW5kaWNhdG9yX19sYWJlbFwiXG4gICAgPnt7IHN0YXR1c0xhYmVsIH19XG48L3NwYW4+XG48c3ZnXG4gICAgW2F0dHIuaWRdPVwiaWRcIlxuICAgIGRhdGEtc2FwLXVpPVwiX19zaGFwZTAtX19ib3gyMS0yNFwiXG4gICAgdmVyc2lvbj1cIjEuMVwiXG4gICAgW2F0dHIudmlld0JveF09XCJ2aWV3Qm94XCJcbiAgICB4bG1ucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwieE1pZFlNaWQgbWVldFwiXG4gICAgY2xhc3M9XCJmZC1zdGF0dXMtaW5kaWNhdG9yX19zdmdcIlxuPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3ZnVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvc3ZnPlxuPHNwYW5cbiAgICAqbmdJZj1cImxhYmVsUG9zaXRpb24gPT09ICdyaWdodCcgfHwgbGFiZWxQb3NpdGlvbiA9PT0gJ2JvdHRvbSdcIlxuICAgIFtjbGFzcy5mZC1zdGF0dXMtaW5kaWNhdG9yX19sYWJlbC0tc21dPVwibGFiZWxTaXplID09PSAnc20nXCJcbiAgICBbY2xhc3MuZmQtc3RhdHVzLWluZGljYXRvcl9fbGFiZWwtLW1kXT1cImxhYmVsU2l6ZSA9PT0gJ21kJ1wiXG4gICAgW2NsYXNzLmZkLXN0YXR1cy1pbmRpY2F0b3JfX2xhYmVsLS1sZ109XCJsYWJlbFNpemUgPT09ICdsZydcIlxuICAgIFtjbGFzcy5mZC1zdGF0dXMtaW5kaWNhdG9yX19sYWJlbC0teGxdPVwibGFiZWxTaXplID09PSAneGwnXCJcbiAgICBbY2xhc3MuZmQtc3RhdHVzLWluZGljYXRvcl9fbGFiZWwtLXJpZ2h0XT1cImxhYmVsUG9zaXRpb24gPT09ICdyaWdodCdcIlxuICAgIFtjbGFzcy5mZC1zdGF0dXMtaW5kaWNhdG9yX19sYWJlbC0tYm90dG9tXT1cImxhYmVsUG9zaXRpb24gPT09ICdib3R0b20nXCJcbiAgICBjbGFzcz1cImZkLXN0YXR1cy1pbmRpY2F0b3JfX2xhYmVsXCJcbiAgICA+e3sgc3RhdHVzTGFiZWwgfX1cbjwvc3Bhbj5cblxuPG5nLXRlbXBsYXRlICNzdmdUZW1wbGF0ZT5cbiAgICA8c3ZnXG4gICAgICAgIHhsbW5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwieE1pZFlNaWQgbWVldFwiXG4gICAgICAgIG92ZXJmbG93PVwidmlzaWJsZVwiXG4gICAgICAgIFthdHRyLmlkXT1cImlkICsgaVwiXG4gICAgICAgIGRhdGEtc2FwLXVpPVwiaWRcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgcGF0aCBvZiBwYXRoOyBsZXQgaSA9IGluZGV4XCJcbiAgICA+XG4gICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgPGxpbmVhckdyYWRpZW50XG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhKGZpbGxDYWxjdWxhdG9yIC0gaSA+IDAgJiYgZmlsbENhbGN1bGF0b3IgLSBpIDwgMSkgfHwgZmlsbGluZ1R5cGUgIT09ICdyYWRpYWwnXCJcbiAgICAgICAgICAgICAgICBpZD1cInt7IGlkICsgaSB9fS1ncmFkaWVudFwiXG4gICAgICAgICAgICAgICAgW2F0dHIueDFdPVwieDFcIlxuICAgICAgICAgICAgICAgIFthdHRyLnkxXT1cInkxXCJcbiAgICAgICAgICAgICAgICBbYXR0ci54Ml09XCJ4MlwiXG4gICAgICAgICAgICAgICAgW2F0dHIueTJdPVwieTJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzdG9wIFthdHRyLm9mZnNldF09XCJmaWxsQ2FsY3VsYXRvciAtIGlcIiBzdG9wLWNvbG9yPVwid2hpdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFuaW1hdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZU5hbWU9XCJvZmZzZXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci52YWx1ZXM9XCIwLCB7eyBmaWxsQ2FsY3VsYXRvciAtIGkgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVwZWF0Q291bnQ9XCIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGR1cj1cIjFzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luPVwiMHNcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvc3RvcD5cbiAgICAgICAgICAgICAgICA8c3RvcCBbYXR0ci5vZmZzZXRdPVwiZmlsbENhbGN1bGF0b3IgLSBpXCIgc3RvcC1jb2xvcj1cInRyYW5zcGFyZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxhbmltYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVOYW1lPVwib2Zmc2V0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIudmFsdWVzPVwiMCwge3sgZmlsbENhbGN1bGF0b3IgLSBpIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdENvdW50PVwiMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkdXI9XCIxc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBiZWdpbj1cIjBzXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L3N0b3A+XG4gICAgICAgICAgICA8L2xpbmVhckdyYWRpZW50PlxuICAgICAgICAgICAgPG1hc2sgI21hc2tUZW1wbGF0ZSBpZD1cInt7IGlkICsgaSB9fS1tYXNrXCI+XG4gICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhKGZpbGxDYWxjdWxhdG9yIC0gaSA+IDAgJiYgZmlsbENhbGN1bGF0b3IgLSBpIDwgMSkgfHwgZmlsbGluZ1R5cGUgIT09ICdyYWRpYWwnXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyBpZCArIGkgfX0tbWFzay1zaGFwZVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRdPVwicGF0aFwiXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjBcIlxuICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgIGF0dHIuZmlsbD1cInVybCgje3sgaWQgKyBpIH19LWdyYWRpZW50KVwiXG4gICAgICAgICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgICAgICAgICA8cG9seWdvblxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZpbGxpbmdUeXBlID09PSAncmFkaWFsJyAmJiBmaWxsQ2FsY3VsYXRvciAtIGkgPiAwICYmIGZpbGxDYWxjdWxhdG9yIC0gaSA8IDFcIlxuICAgICAgICAgICAgICAgICAgICBpZD1cInt7IGlkICsgaSB9fS1tYXNrLXNoYXBlXCJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIucG9pbnRzXT1cInBvaW50c0FycmF5W2ldXCJcbiAgICAgICAgICAgICAgICA+PC9wb2x5Z29uPlxuICAgICAgICAgICAgPC9tYXNrPlxuICAgICAgICA8L2RlZnM+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgICBpZD1cInt7IGlkICsgaSB9fS1zaGFwZVwiXG4gICAgICAgICAgICBbYXR0ci5kXT1cInBhdGhcIlxuICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMFwiXG4gICAgICAgICAgICBzdHJva2U9XCIjODk5MTlBXCJcbiAgICAgICAgICAgIGF0dHIubWFzaz1cInVybCgje3sgaWQgKyBpIH19LW1hc2spXCJcbiAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGlkPVwie3sgaWQgKyBpIH19LXNoYXBlLWJvcmRlclwiXG4gICAgICAgICAgICBbYXR0ci5kXT1cInBhdGhcIlxuICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMC4yNVwiXG4gICAgICAgICAgICBzdHJva2U9XCIjODk5MTlBXCJcbiAgICAgICAgICAgIGZpbGw9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,23 +1,18 @@
1
- import { Directive, ElementRef, HostBinding, Input, QueryList, ContentChildren, inject } from '@angular/core';
1
+ import { Directive, HostBinding, Input, QueryList, ContentChildren } from '@angular/core';
2
2
  import { FD_CHECKBOX_COMPONENT } from '@fundamental-ngx/core/checkbox';
3
- import { FocusableItemDirective } from '@fundamental-ngx/cdk/utils';
3
+ import { DestroyedService, FDK_FOCUSABLE_ITEM_DIRECTIVE, FocusableItemDirective } from '@fundamental-ngx/cdk/utils';
4
4
  import * as i0 from "@angular/core";
5
- import * as i1 from "@fundamental-ngx/cdk/utils";
6
- export class TableCellDirective {
5
+ export class TableCellDirective extends FocusableItemDirective {
7
6
  /** @hidden */
8
7
  set focusable(value) {
9
- this._focusableItemDirective.fdkFocusableItem = value;
8
+ this.fdkFocusableItem = value;
10
9
  }
11
10
  get focusable() {
12
- return this._focusableItemDirective.fdkFocusableItem;
13
- }
14
- /** Function, that creates a string to be announced by screen-reader whenever cell receives focus */
15
- set cellFocusedEventAnnouncer(announcer) {
16
- this._focusableItemDirective.cellFocusedEventAnnouncer = announcer;
11
+ return this.fdkFocusableItem;
17
12
  }
18
13
  /** @hidden */
19
- constructor(elementRef) {
20
- this.elementRef = elementRef;
14
+ constructor() {
15
+ super();
21
16
  /** Whether to show the table cell's horizontal borders */
22
17
  this.noBorderX = false;
23
18
  /** Whether to show the table cell's vertical borders */
@@ -34,9 +29,7 @@ export class TableCellDirective {
34
29
  this.noData = false;
35
30
  /** @hidden */
36
31
  this._fdTableCellClass = true;
37
- /** @hidden */
38
- this._focusableItemDirective = inject(FocusableItemDirective);
39
- this._focusableItemDirective.fdkFocusableItem = false;
32
+ this.fdkFocusableItem = false;
40
33
  }
41
34
  /** @hidden */
42
35
  ngAfterContentInit() {
@@ -49,21 +42,35 @@ export class TableCellDirective {
49
42
  }
50
43
  }
51
44
  }
52
- TableCellDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: TableCellDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
53
- TableCellDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.8", type: TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: { noBorderX: "noBorderX", noBorderY: "noBorderY", activable: "activable", focusable: "focusable", hoverable: "hoverable", fitContent: "fitContent", noPadding: "noPadding", noData: "noData", key: "key", cellFocusedEventAnnouncer: "cellFocusedEventAnnouncer" }, host: { properties: { "class.fd-table__cell--no-horizontal-border": "this.noBorderX", "class.fd-table__cell--no-vertical-border": "this.noBorderY", "class.fd-table__cell--activable": "this.activable", "class.fd-table__cell--focusable": "this.focusable", "class.fd-table__cell--hoverable": "this.hoverable", "class.fd-table__cell--fit-content": "this.fitContent", "class.fd-table__cell--no-padding": "this.noPadding", "class.fd-table__cell--no-data": "this.noData", "class.fd-table__cell": "this._fdTableCellClass" } }, queries: [{ propertyName: "_checkboxes", predicate: FD_CHECKBOX_COMPONENT }], hostDirectives: [{ directive: i1.FocusableItemDirective, outputs: ["cellFocused", "cellFocused"] }], ngImport: i0 });
45
+ TableCellDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: TableCellDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
46
+ TableCellDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.8", type: TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: { noBorderX: "noBorderX", noBorderY: "noBorderY", activable: "activable", focusable: "focusable", hoverable: "hoverable", fitContent: "fitContent", noPadding: "noPadding", noData: "noData", key: "key" }, host: { properties: { "class.fd-table__cell--no-horizontal-border": "this.noBorderX", "class.fd-table__cell--no-vertical-border": "this.noBorderY", "class.fd-table__cell--activable": "this.activable", "class.fd-table__cell--focusable": "this.focusable", "class.fd-table__cell--hoverable": "this.hoverable", "class.fd-table__cell--fit-content": "this.fitContent", "class.fd-table__cell--no-padding": "this.noPadding", "class.fd-table__cell--no-data": "this.noData", "class.fd-table__cell": "this._fdTableCellClass" } }, providers: [
47
+ {
48
+ provide: FocusableItemDirective,
49
+ useExisting: TableCellDirective
50
+ },
51
+ {
52
+ provide: FDK_FOCUSABLE_ITEM_DIRECTIVE,
53
+ useExisting: TableCellDirective
54
+ },
55
+ DestroyedService
56
+ ], queries: [{ propertyName: "_checkboxes", predicate: FD_CHECKBOX_COMPONENT }], usesInheritance: true, ngImport: i0 });
54
57
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: TableCellDirective, decorators: [{
55
58
  type: Directive,
56
59
  args: [{
57
60
  selector: '[fdTableCell], [fd-table-cell]',
58
- hostDirectives: [
61
+ providers: [
59
62
  {
60
- directive: FocusableItemDirective,
61
- // eslint-disable-next-line @angular-eslint/no-outputs-metadata-property
62
- outputs: ['cellFocused']
63
- }
63
+ provide: FocusableItemDirective,
64
+ useExisting: TableCellDirective
65
+ },
66
+ {
67
+ provide: FDK_FOCUSABLE_ITEM_DIRECTIVE,
68
+ useExisting: TableCellDirective
69
+ },
70
+ DestroyedService
64
71
  ]
65
72
  }]
66
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { noBorderX: [{
73
+ }], ctorParameters: function () { return []; }, propDecorators: { noBorderX: [{
67
74
  type: HostBinding,
68
75
  args: ['class.fd-table__cell--no-horizontal-border']
69
76
  }, {
@@ -105,8 +112,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
105
112
  type: Input
106
113
  }], key: [{
107
114
  type: Input
108
- }], cellFocusedEventAnnouncer: [{
109
- type: Input
110
115
  }], _checkboxes: [{
111
116
  type: ContentChildren,
112
117
  args: [FD_CHECKBOX_COMPONENT]
@@ -114,4 +119,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
114
119
  type: HostBinding,
115
120
  args: ['class.fd-table__cell']
116
121
  }] } });
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90YWJsZS9kaXJlY3RpdmVzL3RhYmxlLWNlbGwuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBQ0wsU0FBUyxFQUNULGVBQWUsRUFDZixNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFxQixxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzFGLE9BQU8sRUFBNkIsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBYS9GLE1BQU0sT0FBTyxrQkFBa0I7SUFnQjNCLGNBQWM7SUFDZCxJQUVJLFNBQVMsQ0FBQyxLQUFtQjtRQUM3QixJQUFJLENBQUMsdUJBQXVCLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQzFELENBQUM7SUFDRCxJQUFJLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxnQkFBZ0IsQ0FBQztJQUN6RCxDQUFDO0lBMEJELG9HQUFvRztJQUNwRyxJQUNJLHlCQUF5QixDQUFDLFNBQW9DO1FBQzlELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyx5QkFBeUIsR0FBRyxTQUFTLENBQUM7SUFDdkUsQ0FBQztJQWFELGNBQWM7SUFDZCxZQUE0QixVQUFtQztRQUFuQyxlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQW5FL0QsMERBQTBEO1FBRzFELGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEIsd0RBQXdEO1FBR3hELGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEIsMENBQTBDO1FBRzFDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFZbEIsMENBQTBDO1FBRzFDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEIsNERBQTREO1FBRzVELGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFbkIsNkRBQTZEO1FBRzdELGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEIsNkRBQTZEO1FBRzdELFdBQU0sR0FBRyxLQUFLLENBQUM7UUFnQmYsY0FBYztRQUVkLHNCQUFpQixHQUFHLElBQUksQ0FBQztRQUV6QixjQUFjO1FBQ0UsNEJBQXVCLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFJckUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUMxRCxDQUFDO0lBRUQsY0FBYztJQUNkLGtCQUFrQjtRQUNkLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBRTNDLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTtZQUM3QyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1NBQ2xEO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDeEM7SUFDTCxDQUFDOzsrR0FuRlEsa0JBQWtCO21HQUFsQixrQkFBa0IscTNCQXlEVixxQkFBcUI7MkZBekQ3QixrQkFBa0I7a0JBVjlCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGdDQUFnQztvQkFDMUMsY0FBYyxFQUFFO3dCQUNaOzRCQUNJLFNBQVMsRUFBRSxzQkFBc0I7NEJBQ2pDLHdFQUF3RTs0QkFDeEUsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDO3lCQUMzQjtxQkFDSjtpQkFDSjtpR0FLRyxTQUFTO3NCQUZSLFdBQVc7dUJBQUMsNENBQTRDOztzQkFDeEQsS0FBSztnQkFNTixTQUFTO3NCQUZSLFdBQVc7dUJBQUMsMENBQTBDOztzQkFDdEQsS0FBSztnQkFNTixTQUFTO3NCQUZSLFdBQVc7dUJBQUMsaUNBQWlDOztzQkFDN0MsS0FBSztnQkFNRixTQUFTO3NCQUZaLFdBQVc7dUJBQUMsaUNBQWlDOztzQkFDN0MsS0FBSztnQkFXTixTQUFTO3NCQUZSLFdBQVc7dUJBQUMsaUNBQWlDOztzQkFDN0MsS0FBSztnQkFNTixVQUFVO3NCQUZULFdBQVc7dUJBQUMsbUNBQW1DOztzQkFDL0MsS0FBSztnQkFNTixTQUFTO3NCQUZSLFdBQVc7dUJBQUMsa0NBQWtDOztzQkFDOUMsS0FBSztnQkFNTixNQUFNO3NCQUZMLFdBQVc7dUJBQUMsK0JBQStCOztzQkFDM0MsS0FBSztnQkFLTixHQUFHO3NCQURGLEtBQUs7Z0JBS0YseUJBQXlCO3NCQUQ1QixLQUFLO2dCQU9OLFdBQVc7c0JBRFYsZUFBZTt1QkFBQyxxQkFBcUI7Z0JBS3RDLGlCQUFpQjtzQkFEaEIsV0FBVzt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCwgRkRfQ0hFQ0tCT1hfQ09NUE9ORU5UIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NoZWNrYm94JztcbmltcG9ydCB7IENlbGxGb2N1c2VkRXZlbnRBbm5vdW5jZXIsIEZvY3VzYWJsZUl0ZW1EaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZFRhYmxlQ2VsbF0sIFtmZC10YWJsZS1jZWxsXScsXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgZGlyZWN0aXZlOiBGb2N1c2FibGVJdGVtRGlyZWN0aXZlLFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gICAgICAgICAgICBvdXRwdXRzOiBbJ2NlbGxGb2N1c2VkJ11cbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDZWxsRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgdGFibGUgY2VsbCdzIGhvcml6b250YWwgYm9yZGVycyAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtdGFibGVfX2NlbGwtLW5vLWhvcml6b250YWwtYm9yZGVyJylcbiAgICBASW5wdXQoKVxuICAgIG5vQm9yZGVyWCA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgdGFibGUgY2VsbCdzIHZlcnRpY2FsIGJvcmRlcnMgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLXRhYmxlX19jZWxsLS1uby12ZXJ0aWNhbC1ib3JkZXInKVxuICAgIEBJbnB1dCgpXG4gICAgbm9Cb3JkZXJZID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0aGUgdGFibGUgY2VsbCBpcyBhY3RpdmFibGUgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLXRhYmxlX19jZWxsLS1hY3RpdmFibGUnKVxuICAgIEBJbnB1dCgpXG4gICAgYWN0aXZhYmxlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtdGFibGVfX2NlbGwtLWZvY3VzYWJsZScpXG4gICAgQElucHV0KClcbiAgICBzZXQgZm9jdXNhYmxlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fZm9jdXNhYmxlSXRlbURpcmVjdGl2ZS5mZGtGb2N1c2FibGVJdGVtID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBmb2N1c2FibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mb2N1c2FibGVJdGVtRGlyZWN0aXZlLmZka0ZvY3VzYWJsZUl0ZW07XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHRhYmxlIGNlbGwgaXMgaG92ZXJhYmxlICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC10YWJsZV9fY2VsbC0taG92ZXJhYmxlJylcbiAgICBASW5wdXQoKVxuICAgIGhvdmVyYWJsZSA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHRhYmxlIGNlbGwncyB3aWR0aCBzaG91bGQgZml0IHRvIGNvbnRlbnQgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC10YWJsZV9fY2VsbC0tZml0LWNvbnRlbnQnKVxuICAgIEBJbnB1dCgpXG4gICAgZml0Q29udGVudCA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHRhYmxlIGNlbGwgc2hvdWxkbid0IGhhdmUgcGFkZGluZyBvbiBzaWRlcyAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtdGFibGVfX2NlbGwtLW5vLXBhZGRpbmcnKVxuICAgIEBJbnB1dCgpXG4gICAgbm9QYWRkaW5nID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0aGUgdGFibGUgY2VsbCBpbmRpY2F0ZXMgdGhhdCB0aGVyZSBpcyBubyBkYXRhICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC10YWJsZV9fY2VsbC0tbm8tZGF0YScpXG4gICAgQElucHV0KClcbiAgICBub0RhdGEgPSBmYWxzZTtcblxuICAgIC8qKiBLZXkgb2YgY2VsbCBlbGVtZW50LCBpdCdzIHVzZWQgdG8gaWRlbnRpZnkgdGhpcyBjZWxsIHdpdGggY2VydGFpbiBjb2x1bW4gKi9cbiAgICBASW5wdXQoKVxuICAgIGtleTogc3RyaW5nO1xuXG4gICAgLyoqIEZ1bmN0aW9uLCB0aGF0IGNyZWF0ZXMgYSBzdHJpbmcgdG8gYmUgYW5ub3VuY2VkIGJ5IHNjcmVlbi1yZWFkZXIgd2hlbmV2ZXIgY2VsbCByZWNlaXZlcyBmb2N1cyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGNlbGxGb2N1c2VkRXZlbnRBbm5vdW5jZXIoYW5ub3VuY2VyOiBDZWxsRm9jdXNlZEV2ZW50QW5ub3VuY2VyKSB7XG4gICAgICAgIHRoaXMuX2ZvY3VzYWJsZUl0ZW1EaXJlY3RpdmUuY2VsbEZvY3VzZWRFdmVudEFubm91bmNlciA9IGFubm91bmNlcjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oRkRfQ0hFQ0tCT1hfQ09NUE9ORU5UKVxuICAgIF9jaGVja2JveGVzOiBRdWVyeUxpc3Q8Q2hlY2tib3hDb21wb25lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLXRhYmxlX19jZWxsJylcbiAgICBfZmRUYWJsZUNlbGxDbGFzcyA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHB1YmxpYyByZWFkb25seSBfZm9jdXNhYmxlSXRlbURpcmVjdGl2ZSA9IGluamVjdChGb2N1c2FibGVJdGVtRGlyZWN0aXZlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7XG4gICAgICAgIHRoaXMuX2ZvY3VzYWJsZUl0ZW1EaXJlY3RpdmUuZmRrRm9jdXNhYmxlSXRlbSA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjZWxsID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKHRoaXMuX2NoZWNrYm94ZXMgJiYgdGhpcy5fY2hlY2tib3hlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LmFkZCgnZmQtdGFibGVfX2NlbGwtLWNoZWNrYm94Jyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5ub0RhdGEpIHtcbiAgICAgICAgICAgIGNlbGwuc2V0QXR0cmlidXRlKCdjb2xzcGFuJywgJzEwMCUnKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90YWJsZS9kaXJlY3RpdmVzL3RhYmxlLWNlbGwuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RyxPQUFPLEVBQXFCLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDMUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLDRCQUE0QixFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBaUJwSCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsc0JBQXNCO0lBZ0IxRCxjQUFjO0lBQ2QsSUFFSSxTQUFTLENBQUMsS0FBbUI7UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUNsQyxDQUFDO0lBQ0QsSUFBSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDakMsQ0FBQztJQWtDRCxjQUFjO0lBQ2Q7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQTNEWiwwREFBMEQ7UUFHMUQsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVsQix3REFBd0Q7UUFHeEQsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVsQiwwQ0FBMEM7UUFHMUMsY0FBUyxHQUFHLEtBQUssQ0FBQztRQVlsQiwwQ0FBMEM7UUFHMUMsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVsQiw0REFBNEQ7UUFHNUQsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUVuQiw2REFBNkQ7UUFHN0QsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVsQiw2REFBNkQ7UUFHN0QsV0FBTSxHQUFHLEtBQUssQ0FBQztRQVVmLGNBQWM7UUFFZCxzQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFLckIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUNsQyxDQUFDO0lBRUQsY0FBYztJQUNkLGtCQUFrQjtRQUNkLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBRTNDLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTtZQUM3QyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1NBQ2xEO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDeEM7SUFDTCxDQUFDOzsrR0EzRVEsa0JBQWtCO21HQUFsQixrQkFBa0Isb3hCQVpoQjtRQUNQO1lBQ0ksT0FBTyxFQUFFLHNCQUFzQjtZQUMvQixXQUFXLEVBQUUsa0JBQWtCO1NBQ2xDO1FBQ0Q7WUFDSSxPQUFPLEVBQUUsNEJBQTRCO1lBQ3JDLFdBQVcsRUFBRSxrQkFBa0I7U0FDbEM7UUFDRCxnQkFBZ0I7S0FDbkIsc0RBcURnQixxQkFBcUI7MkZBbkQ3QixrQkFBa0I7a0JBZDlCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGdDQUFnQztvQkFDMUMsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxzQkFBc0I7NEJBQy9CLFdBQVcsb0JBQW9CO3lCQUNsQzt3QkFDRDs0QkFDSSxPQUFPLEVBQUUsNEJBQTRCOzRCQUNyQyxXQUFXLG9CQUFvQjt5QkFDbEM7d0JBQ0QsZ0JBQWdCO3FCQUNuQjtpQkFDSjswRUFLRyxTQUFTO3NCQUZSLFdBQVc7dUJBQUMsNENBQTRDOztzQkFDeEQsS0FBSztnQkFNTixTQUFTO3NCQUZSLFdBQVc7dUJBQUMsMENBQTBDOztzQkFDdEQsS0FBSztnQkFNTixTQUFTO3NCQUZSLFdBQVc7dUJBQUMsaUNBQWlDOztzQkFDN0MsS0FBSztnQkFNRixTQUFTO3NCQUZaLFdBQVc7dUJBQUMsaUNBQWlDOztzQkFDN0MsS0FBSztnQkFXTixTQUFTO3NCQUZSLFdBQVc7dUJBQUMsaUNBQWlDOztzQkFDN0MsS0FBSztnQkFNTixVQUFVO3NCQUZULFdBQVc7dUJBQUMsbUNBQW1DOztzQkFDL0MsS0FBSztnQkFNTixTQUFTO3NCQUZSLFdBQVc7dUJBQUMsa0NBQWtDOztzQkFDOUMsS0FBSztnQkFNTixNQUFNO3NCQUZMLFdBQVc7dUJBQUMsK0JBQStCOztzQkFDM0MsS0FBSztnQkFLTixHQUFHO3NCQURGLEtBQUs7Z0JBS04sV0FBVztzQkFEVixlQUFlO3VCQUFDLHFCQUFxQjtnQkFLdEMsaUJBQWlCO3NCQURoQixXQUFXO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIERpcmVjdGl2ZSwgSG9zdEJpbmRpbmcsIElucHV0LCBRdWVyeUxpc3QsIENvbnRlbnRDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2hlY2tib3hDb21wb25lbnQsIEZEX0NIRUNLQk9YX0NPTVBPTkVOVCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jaGVja2JveCc7XG5pbXBvcnQgeyBEZXN0cm95ZWRTZXJ2aWNlLCBGREtfRk9DVVNBQkxFX0lURU1fRElSRUNUSVZFLCBGb2N1c2FibGVJdGVtRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRUYWJsZUNlbGxdLCBbZmQtdGFibGUtY2VsbF0nLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGb2N1c2FibGVJdGVtRGlyZWN0aXZlLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFRhYmxlQ2VsbERpcmVjdGl2ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGREtfRk9DVVNBQkxFX0lURU1fRElSRUNUSVZFLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFRhYmxlQ2VsbERpcmVjdGl2ZVxuICAgICAgICB9LFxuICAgICAgICBEZXN0cm95ZWRTZXJ2aWNlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNlbGxEaXJlY3RpdmUgZXh0ZW5kcyBGb2N1c2FibGVJdGVtRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgdGFibGUgY2VsbCdzIGhvcml6b250YWwgYm9yZGVycyAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtdGFibGVfX2NlbGwtLW5vLWhvcml6b250YWwtYm9yZGVyJylcbiAgICBASW5wdXQoKVxuICAgIG5vQm9yZGVyWCA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgdGFibGUgY2VsbCdzIHZlcnRpY2FsIGJvcmRlcnMgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLXRhYmxlX19jZWxsLS1uby12ZXJ0aWNhbC1ib3JkZXInKVxuICAgIEBJbnB1dCgpXG4gICAgbm9Cb3JkZXJZID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0aGUgdGFibGUgY2VsbCBpcyBhY3RpdmFibGUgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLXRhYmxlX19jZWxsLS1hY3RpdmFibGUnKVxuICAgIEBJbnB1dCgpXG4gICAgYWN0aXZhYmxlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtdGFibGVfX2NlbGwtLWZvY3VzYWJsZScpXG4gICAgQElucHV0KClcbiAgICBzZXQgZm9jdXNhYmxlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5mZGtGb2N1c2FibGVJdGVtID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBmb2N1c2FibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZka0ZvY3VzYWJsZUl0ZW07XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHRhYmxlIGNlbGwgaXMgaG92ZXJhYmxlICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC10YWJsZV9fY2VsbC0taG92ZXJhYmxlJylcbiAgICBASW5wdXQoKVxuICAgIGhvdmVyYWJsZSA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHRhYmxlIGNlbGwncyB3aWR0aCBzaG91bGQgZml0IHRvIGNvbnRlbnQgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC10YWJsZV9fY2VsbC0tZml0LWNvbnRlbnQnKVxuICAgIEBJbnB1dCgpXG4gICAgZml0Q29udGVudCA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHRhYmxlIGNlbGwgc2hvdWxkbid0IGhhdmUgcGFkZGluZyBvbiBzaWRlcyAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtdGFibGVfX2NlbGwtLW5vLXBhZGRpbmcnKVxuICAgIEBJbnB1dCgpXG4gICAgbm9QYWRkaW5nID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0aGUgdGFibGUgY2VsbCBpbmRpY2F0ZXMgdGhhdCB0aGVyZSBpcyBubyBkYXRhICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC10YWJsZV9fY2VsbC0tbm8tZGF0YScpXG4gICAgQElucHV0KClcbiAgICBub0RhdGEgPSBmYWxzZTtcblxuICAgIC8qKiBLZXkgb2YgYSBjZWxsIGVsZW1lbnQsIGl0J3MgdXNlZCB0byBpZGVudGlmeSB0aGlzIGNlbGwgd2l0aCBjZXJ0YWluIGNvbHVtbiAqL1xuICAgIEBJbnB1dCgpXG4gICAga2V5OiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oRkRfQ0hFQ0tCT1hfQ09NUE9ORU5UKVxuICAgIF9jaGVja2JveGVzOiBRdWVyeUxpc3Q8Q2hlY2tib3hDb21wb25lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLXRhYmxlX19jZWxsJylcbiAgICBfZmRUYWJsZUNlbGxDbGFzcyA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmZka0ZvY3VzYWJsZUl0ZW0gPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2VsbCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIGlmICh0aGlzLl9jaGVja2JveGVzICYmIHRoaXMuX2NoZWNrYm94ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjZWxsLmNsYXNzTGlzdC5hZGQoJ2ZkLXRhYmxlX19jZWxsLS1jaGVja2JveCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubm9EYXRhKSB7XG4gICAgICAgICAgICBjZWxsLnNldEF0dHJpYnV0ZSgnY29sc3BhbicsICcxMDAlJyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -4,8 +4,8 @@ import { applyCssClass } from '@fundamental-ngx/cdk/utils';
4
4
  import * as i0 from "@angular/core";
5
5
  export class TableIconDirective {
6
6
  /** @hidden */
7
- constructor(_elementRef) {
8
- this._elementRef = _elementRef;
7
+ constructor(elementRef) {
8
+ this.elementRef = elementRef;
9
9
  /** @hidden */
10
10
  this.fdTableIconClass = true;
11
11
  /** The property allows user to pass additional css classes
@@ -42,12 +42,6 @@ export class TableIconDirective {
42
42
  this.class
43
43
  ];
44
44
  }
45
- /** HasElementRef interface implementation
46
- * function used by applyCssClass and applyCssStyle decorators
47
- */
48
- elementRef() {
49
- return this._elementRef;
50
- }
51
45
  }
52
46
  TableIconDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: TableIconDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
53
47
  TableIconDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.8", type: TableIconDirective, selector: "[fdTableIcon], [fd-table-icon]", inputs: { class: "class", glyph: "glyph", navigation: "navigation" }, host: { properties: { "class.fd-table__icon": "this.fdTableIconClass" } }, usesOnChanges: true, ngImport: i0 });
@@ -72,4 +66,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
72
66
  }], navigation: [{
73
67
  type: Input
74
68
  }], buildComponentCssClass: [] } });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaWNvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90YWJsZS9kaXJlY3RpdmVzL3RhYmxlLWljb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQUUsYUFBYSxFQUFtQixNQUFNLDRCQUE0QixDQUFDOztBQUs1RSxNQUFNLE9BQU8sa0JBQWtCO0lBcUIzQixjQUFjO0lBQ2QsWUFBb0IsV0FBdUI7UUFBdkIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFyQjNDLGNBQWM7UUFFZCxxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFFeEI7V0FDRztRQUVJLFVBQUssR0FBRyxFQUFFLENBQUM7UUFFbEI7OztXQUdHO1FBRUksVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUVsQixnREFBZ0Q7UUFFaEQsZUFBVSxHQUFHLEtBQUssQ0FBQztJQUcyQixDQUFDO0lBRS9DOzs7T0FHRztJQUNILFdBQVc7UUFDUCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsY0FBYztJQUNkLFFBQVE7UUFDSixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7OztPQUdHO0lBRUgsc0JBQXNCO1FBQ2xCLE9BQU87WUFDSCxnQkFBZ0I7WUFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsYUFBYSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDM0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbkQsSUFBSSxDQUFDLEtBQUs7U0FDYixDQUFDO0lBQ04sQ0FBQztJQUVEOztPQUVHO0lBQ0ksVUFBVTtRQUNiLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDOzsrR0F4RFEsa0JBQWtCO21HQUFsQixrQkFBa0I7QUF5QzNCO0lBQUMsYUFBYTs7OztnRUFRYjsyRkFqRFEsa0JBQWtCO2tCQUg5QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxnQ0FBZ0M7aUJBQzdDO2lHQUlHLGdCQUFnQjtzQkFEZixXQUFXO3VCQUFDLHNCQUFzQjtnQkFNNUIsS0FBSztzQkFEWCxLQUFLO2dCQVFDLEtBQUs7c0JBRFgsS0FBSztnQkFLTixVQUFVO3NCQURULEtBQUs7Z0JBd0JOLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYXBwbHlDc3NDbGFzcywgQ3NzQ2xhc3NCdWlsZGVyIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZFRhYmxlSWNvbl0sIFtmZC10YWJsZS1pY29uXSdcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVJY29uRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBDc3NDbGFzc0J1aWxkZXIsIE9uSW5pdCB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLXRhYmxlX19pY29uJylcbiAgICBmZFRhYmxlSWNvbkNsYXNzID0gdHJ1ZTtcblxuICAgIC8qKiBUaGUgcHJvcGVydHkgYWxsb3dzIHVzZXIgdG8gcGFzcyBhZGRpdGlvbmFsIGNzcyBjbGFzc2VzXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY2xhc3MgPSAnJztcblxuICAgIC8qKiBUaGUgaWNvbiB0byBpbmNsdWRlIGluIHRoZSBidXR0b24uIFNlZSB0aGUgaWNvbiBwYWdlIGZvciB0aGUgbGlzdCBvZiBpY29ucy5cbiAgICAgKiBTZXR0ZXIgaXMgdXNlZCB0byBjb250cm9sIHdoZW4gY3NzIGNsYXNzIGhhdmUgdG8gYmUgcmVidWlsZGVkLlxuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgc2V0IHRvICcnLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdseXBoID0gJyc7XG5cbiAgICAvKiogV2hldGhlciBvciBubyBpY29uIGlzIHVzZWQgYXMgbmF2aWdhdGlvbiAgKi9cbiAgICBASW5wdXQoKVxuICAgIG5hdmlnYXRpb24gPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cblxuICAgIC8qKiBGdW5jdGlvbiBydW5zIHdoZW4gY29tcG9uZW50IGlzIGluaXRpYWxpemVkXG4gICAgICogZnVuY3Rpb24gc2hvdWxkIGJ1aWxkIGNvbXBvbmVudCBjc3MgY2xhc3NcbiAgICAgKiBmdW5jdGlvbiBzaG91bGQgYnVpbGQgY3NzIHN0eWxlXG4gICAgICovXG4gICAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIENzc0NsYXNzQnVpbGRlciBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb25cbiAgICAgKiBmdW5jdGlvbiBtdXN0IHJldHVybiBzaW5nbGUgc3RyaW5nXG4gICAgICogZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIG9yZGVyIHdoaWNoIGNzcyBjbGFzc2VzIGFyZSBhcHBsaWVkXG4gICAgICovXG4gICAgQGFwcGx5Q3NzQ2xhc3NcbiAgICBidWlsZENvbXBvbmVudENzc0NsYXNzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICdmZC10YWJsZV9faWNvbicsXG4gICAgICAgICAgICB0aGlzLmdseXBoID8gYHNhcC1pY29uLS0ke3RoaXMuZ2x5cGh9YCA6ICcnLFxuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uID8gJ2ZkLXRhYmxlX19pY29uLS1uYXZpZ2F0aW9uJyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5jbGFzc1xuICAgICAgICBdO1xuICAgIH1cblxuICAgIC8qKiBIYXNFbGVtZW50UmVmIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvblxuICAgICAqIGZ1bmN0aW9uIHVzZWQgYnkgYXBwbHlDc3NDbGFzcyBhbmQgYXBwbHlDc3NTdHlsZSBkZWNvcmF0b3JzXG4gICAgICovXG4gICAgcHVibGljIGVsZW1lbnRSZWYoKTogRWxlbWVudFJlZjxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWY7XG4gICAgfVxufVxuIl19
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaWNvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90YWJsZS9kaXJlY3RpdmVzL3RhYmxlLWljb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQUUsYUFBYSxFQUFtQixNQUFNLDRCQUE0QixDQUFDOztBQUs1RSxNQUFNLE9BQU8sa0JBQWtCO0lBcUIzQixjQUFjO0lBQ2QsWUFBNEIsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQXJCbEQsY0FBYztRQUVkLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUV4QjtXQUNHO1FBRUksVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUVsQjs7O1dBR0c7UUFFSSxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBRWxCLGdEQUFnRDtRQUVoRCxlQUFVLEdBQUcsS0FBSyxDQUFDO0lBR2tDLENBQUM7SUFFdEQ7OztPQUdHO0lBQ0gsV0FBVztRQUNQLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxjQUFjO0lBQ2QsUUFBUTtRQUNKLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7O09BR0c7SUFFSCxzQkFBc0I7UUFDbEIsT0FBTztZQUNILGdCQUFnQjtZQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxhQUFhLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNuRCxJQUFJLENBQUMsS0FBSztTQUNiLENBQUM7SUFDTixDQUFDOzsrR0FqRFEsa0JBQWtCO21HQUFsQixrQkFBa0I7QUF5QzNCO0lBQUMsYUFBYTs7OztnRUFRYjsyRkFqRFEsa0JBQWtCO2tCQUg5QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxnQ0FBZ0M7aUJBQzdDO2lHQUlHLGdCQUFnQjtzQkFEZixXQUFXO3VCQUFDLHNCQUFzQjtnQkFNNUIsS0FBSztzQkFEWCxLQUFLO2dCQVFDLEtBQUs7c0JBRFgsS0FBSztnQkFLTixVQUFVO3NCQURULEtBQUs7Z0JBd0JOLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYXBwbHlDc3NDbGFzcywgQ3NzQ2xhc3NCdWlsZGVyIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZFRhYmxlSWNvbl0sIFtmZC10YWJsZS1pY29uXSdcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVJY29uRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBDc3NDbGFzc0J1aWxkZXIsIE9uSW5pdCB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLXRhYmxlX19pY29uJylcbiAgICBmZFRhYmxlSWNvbkNsYXNzID0gdHJ1ZTtcblxuICAgIC8qKiBUaGUgcHJvcGVydHkgYWxsb3dzIHVzZXIgdG8gcGFzcyBhZGRpdGlvbmFsIGNzcyBjbGFzc2VzXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY2xhc3MgPSAnJztcblxuICAgIC8qKiBUaGUgaWNvbiB0byBpbmNsdWRlIGluIHRoZSBidXR0b24uIFNlZSB0aGUgaWNvbiBwYWdlIGZvciB0aGUgbGlzdCBvZiBpY29ucy5cbiAgICAgKiBTZXR0ZXIgaXMgdXNlZCB0byBjb250cm9sIHdoZW4gY3NzIGNsYXNzIGhhdmUgdG8gYmUgcmVidWlsZGVkLlxuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgc2V0IHRvICcnLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdseXBoID0gJyc7XG5cbiAgICAvKiogV2hldGhlciBvciBubyBpY29uIGlzIHVzZWQgYXMgbmF2aWdhdGlvbiAgKi9cbiAgICBASW5wdXQoKVxuICAgIG5hdmlnYXRpb24gPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgICAvKiogRnVuY3Rpb24gcnVucyB3aGVuIGNvbXBvbmVudCBpcyBpbml0aWFsaXplZFxuICAgICAqIGZ1bmN0aW9uIHNob3VsZCBidWlsZCBjb21wb25lbnQgY3NzIGNsYXNzXG4gICAgICogZnVuY3Rpb24gc2hvdWxkIGJ1aWxkIGNzcyBzdHlsZVxuICAgICAqL1xuICAgIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBDc3NDbGFzc0J1aWxkZXIgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uXG4gICAgICogZnVuY3Rpb24gbXVzdCByZXR1cm4gc2luZ2xlIHN0cmluZ1xuICAgICAqIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBvcmRlciB3aGljaCBjc3MgY2xhc3NlcyBhcmUgYXBwbGllZFxuICAgICAqL1xuICAgIEBhcHBseUNzc0NsYXNzXG4gICAgYnVpbGRDb21wb25lbnRDc3NDbGFzcygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAnZmQtdGFibGVfX2ljb24nLFxuICAgICAgICAgICAgdGhpcy5nbHlwaCA/IGBzYXAtaWNvbi0tJHt0aGlzLmdseXBofWAgOiAnJyxcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbiA/ICdmZC10YWJsZV9faWNvbi0tbmF2aWdhdGlvbicgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuY2xhc3NcbiAgICAgICAgXTtcbiAgICB9XG59XG4iXX0=
@@ -2,24 +2,22 @@ import { ChangeDetectorRef, ContentChildren, Directive, ElementRef, HostBinding,
2
2
  import { startWith } from 'rxjs/operators';
3
3
  import { TableService } from '../table.service';
4
4
  import { TableCellDirective } from './table-cell.directive';
5
- import { DestroyedService, FocusableListDirective } from '@fundamental-ngx/cdk/utils';
5
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
6
+ import { DestroyedService, FDK_FOCUSABLE_LIST_DIRECTIVE, FocusableListDirective } from '@fundamental-ngx/cdk/utils';
6
7
  import * as i0 from "@angular/core";
7
- import * as i1 from "../table.service";
8
- import * as i2 from "@fundamental-ngx/cdk/utils";
9
8
  export const HIDDEN_CLASS_NAME = 'fd-table--hidden';
10
- export class TableRowDirective {
9
+ export class TableRowDirective extends FocusableListDirective {
11
10
  /** Whether the table row is focusable */
12
11
  set focusable(value) {
13
- this._focusableListDirective.focusable = value;
12
+ this._focusable = coerceBooleanProperty(value);
13
+ this.setTabbable(this._focusable);
14
14
  }
15
15
  get focusable() {
16
- return this._focusableListDirective.focusable;
16
+ return this._focusable;
17
17
  }
18
18
  /** @hidden */
19
- constructor(_changeDetRef, _tableService, elementRef) {
20
- this._changeDetRef = _changeDetRef;
21
- this._tableService = _tableService;
22
- this.elementRef = elementRef;
19
+ constructor() {
20
+ super();
23
21
  /** @hidden */
24
22
  this.fdTableRowClass = true;
25
23
  /** Whether the table row is activable */
@@ -36,21 +34,27 @@ export class TableRowDirective {
36
34
  /** Whether the table row is active. */
37
35
  this.active = false;
38
36
  /** @hidden */
39
- this._focusableListDirective = inject(FocusableListDirective);
40
- this._focusableListDirective.navigationDirection = 'grid';
41
- this._focusableListDirective._updateNavigationDirection();
37
+ this._changeDetRef = inject(ChangeDetectorRef);
38
+ /** @hidden */
39
+ this._tableService = inject(TableService);
40
+ /** @hidden */
41
+ this.elementRef = inject(ElementRef);
42
42
  }
43
43
  /** @hidden */
44
44
  ngOnInit() {
45
+ this.navigationDirection = 'grid';
46
+ this._updateNavigationDirection();
45
47
  this._propagateKeysSubscription = this._tableService.propagateKeys$.subscribe((keys) => this._resetCells(keys));
46
48
  }
47
49
  /** @hidden */
48
50
  ngAfterViewInit() {
51
+ super.ngAfterViewInit();
49
52
  this._resetCells(this._tableService.propagateKeys$.getValue());
50
53
  this._setupCellsSubscription();
51
54
  }
52
55
  /** @hidden */
53
56
  ngOnDestroy() {
57
+ super.ngOnDestroy();
54
58
  this._propagateKeysSubscription.unsubscribe();
55
59
  }
56
60
  /** @hidden */
@@ -95,16 +99,27 @@ export class TableRowDirective {
95
99
  });
96
100
  }
97
101
  }
98
- TableRowDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: TableRowDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TableService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
99
- TableRowDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.8", type: TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: { activable: "activable", highlightActive: "highlightActive", hoverable: "hoverable", focusable: "focusable", main: "main", secondary: "secondary", active: "active" }, host: { properties: { "class.fd-table__row": "this.fdTableRowClass", "class.fd-table__row--activable": "this.activable", "class.fd-table__row--hoverable": "this.hoverable", "class.fd-table__row--focusable": "this.focusable", "class.fd-table__row--main": "this.main", "class.fd-table__row--secondary": "this.secondary", "class.is-selected": "this.active" } }, providers: [DestroyedService], queries: [{ propertyName: "cells", predicate: TableCellDirective }], hostDirectives: [{ directive: i2.FocusableListDirective }], ngImport: i0 });
102
+ TableRowDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: TableRowDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
103
+ TableRowDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.8", type: TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: { activable: "activable", highlightActive: "highlightActive", hoverable: "hoverable", focusable: "focusable", main: "main", secondary: "secondary", active: "active" }, host: { properties: { "class.fd-table__row": "this.fdTableRowClass", "class.fd-table__row--activable": "this.activable", "class.fd-table__row--hoverable": "this.hoverable", "class.fd-table__row--focusable": "this.focusable", "class.fd-table__row--main": "this.main", "class.fd-table__row--secondary": "this.secondary", "class.is-selected": "this.active" } }, providers: [
104
+ {
105
+ provide: FDK_FOCUSABLE_LIST_DIRECTIVE,
106
+ useExisting: TableRowDirective
107
+ },
108
+ DestroyedService
109
+ ], queries: [{ propertyName: "cells", predicate: TableCellDirective }], usesInheritance: true, ngImport: i0 });
100
110
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: TableRowDirective, decorators: [{
101
111
  type: Directive,
102
112
  args: [{
103
113
  selector: '[fdTableRow], [fd-table-row]',
104
- providers: [DestroyedService],
105
- hostDirectives: [FocusableListDirective]
114
+ providers: [
115
+ {
116
+ provide: FDK_FOCUSABLE_LIST_DIRECTIVE,
117
+ useExisting: TableRowDirective
118
+ },
119
+ DestroyedService
120
+ ]
106
121
  }]
107
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.TableService }, { type: i0.ElementRef }]; }, propDecorators: { cells: [{
122
+ }], ctorParameters: function () { return []; }, propDecorators: { cells: [{
108
123
  type: ContentChildren,
109
124
  args: [TableCellDirective]
110
125
  }], fdTableRowClass: [{
@@ -143,4 +158,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
143
158
  }, {
144
159
  type: Input
145
160
  }] } });
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcm93LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3RhYmxlL2RpcmVjdGl2ZXMvdGFibGUtcm93LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUdMLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBRXRGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGtCQUFrQixDQUFDO0FBT3BELE1BQU0sT0FBTyxpQkFBaUI7SUF3QjFCLHlDQUF5QztJQUN6QyxJQUVJLFNBQVMsQ0FBQyxLQUFtQjtRQUM3QixJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUNuRCxDQUFDO0lBQ0QsSUFBSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDO0lBQ2xELENBQUM7SUF1QkQsY0FBYztJQUNkLFlBQ1ksYUFBZ0MsRUFDaEMsYUFBMkIsRUFDNUIsVUFBMkM7UUFGMUMsa0JBQWEsR0FBYixhQUFhLENBQW1CO1FBQ2hDLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzVCLGVBQVUsR0FBVixVQUFVLENBQWlDO1FBdER0RCxjQUFjO1FBRWQsb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFFdkIseUNBQXlDO1FBR3pDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEIseUNBQXlDO1FBQ3pDLG9EQUFvRDtRQUVwRCxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUV4QiwwQ0FBMEM7UUFHMUMsY0FBUyxHQUFHLEtBQUssQ0FBQztRQVlsQiw0RUFBNEU7UUFHNUUsU0FBSSxHQUFHLEtBQUssQ0FBQztRQUViLGlGQUFpRjtRQUdqRixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLHVDQUF1QztRQUd2QyxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBS2YsY0FBYztRQUNHLDRCQUF1QixHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBUXRFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxtQkFBbUIsR0FBRyxNQUFNLENBQUM7UUFDMUQsSUFBSSxDQUFDLHVCQUF1QixDQUFDLDBCQUEwQixFQUFFLENBQUM7SUFDOUQsQ0FBQztJQUVELGNBQWM7SUFDZCxRQUFRO1FBQ0osSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQWMsRUFBRSxFQUFFLENBQzdGLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQ3pCLENBQUM7SUFDTixDQUFDO0lBRUQsY0FBYztJQUNkLGVBQWU7UUFDWCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELGNBQWM7SUFDZCxXQUFXO1FBQ1AsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFRCxjQUFjO0lBQ04sV0FBVyxDQUFDLElBQWM7UUFDOUIsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN2QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFN0IsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUV0RixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUU5QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUUzQixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ3RDO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDTixXQUFXLENBQUMsQ0FBcUIsRUFBRSxDQUFxQixFQUFFLElBQWM7UUFDNUUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDckYsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNiO2FBQU07WUFDSCxPQUFPLENBQUMsQ0FBQztTQUNaO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDTixtQkFBbUI7UUFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQ3ZGLENBQUM7SUFDTixDQUFDO0lBRUQsY0FBYztJQUNOLGlCQUFpQixDQUFDLElBQWM7UUFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQ2hHLE1BQU0sZ0JBQWdCLEdBQXlCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUM1RCxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUNsRCxDQUFDO1FBQ0YsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsY0FBYztJQUNOLFlBQVksQ0FBQyxPQUEyQjtRQUM1QyxPQUFPLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELGNBQWM7SUFDTix1QkFBdUI7UUFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDcEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEUsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OzhHQXZJUSxpQkFBaUI7a0dBQWpCLGlCQUFpQiw4a0JBSGYsQ0FBQyxnQkFBZ0IsQ0FBQyxnREFLWixrQkFBa0I7MkZBRjFCLGlCQUFpQjtrQkFMN0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsOEJBQThCO29CQUN4QyxTQUFTLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDN0IsY0FBYyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQzNDOzRKQUlHLEtBQUs7c0JBREosZUFBZTt1QkFBQyxrQkFBa0I7Z0JBS25DLGVBQWU7c0JBRGQsV0FBVzt1QkFBQyxxQkFBcUI7Z0JBTWxDLFNBQVM7c0JBRlIsV0FBVzt1QkFBQyxnQ0FBZ0M7O3NCQUM1QyxLQUFLO2dCQU1OLGVBQWU7c0JBRGQsS0FBSztnQkFNTixTQUFTO3NCQUZSLFdBQVc7dUJBQUMsZ0NBQWdDOztzQkFDNUMsS0FBSztnQkFNRixTQUFTO3NCQUZaLFdBQVc7dUJBQUMsZ0NBQWdDOztzQkFDNUMsS0FBSztnQkFXTixJQUFJO3NCQUZILFdBQVc7dUJBQUMsMkJBQTJCOztzQkFDdkMsS0FBSztnQkFNTixTQUFTO3NCQUZSLFdBQVc7dUJBQUMsZ0NBQWdDOztzQkFDNUMsS0FBSztnQkFNTixNQUFNO3NCQUZMLFdBQVc7dUJBQUMsbUJBQW1COztzQkFDL0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgUXVlcnlMaXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFRhYmxlU2VydmljZSB9IGZyb20gJy4uL3RhYmxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGVDZWxsRGlyZWN0aXZlIH0gZnJvbSAnLi90YWJsZS1jZWxsLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRGVzdHJveWVkU2VydmljZSwgRm9jdXNhYmxlTGlzdERpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IEhJRERFTl9DTEFTU19OQU1FID0gJ2ZkLXRhYmxlLS1oaWRkZW4nO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZFRhYmxlUm93XSwgW2ZkLXRhYmxlLXJvd10nLFxuICAgIHByb3ZpZGVyczogW0Rlc3Ryb3llZFNlcnZpY2VdLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbRm9jdXNhYmxlTGlzdERpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgVGFibGVSb3dEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uSW5pdCB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFRhYmxlQ2VsbERpcmVjdGl2ZSlcbiAgICBjZWxsczogUXVlcnlMaXN0PFRhYmxlQ2VsbERpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtdGFibGVfX3JvdycpXG4gICAgZmRUYWJsZVJvd0NsYXNzID0gdHJ1ZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSB0YWJsZSByb3cgaXMgYWN0aXZhYmxlICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC10YWJsZV9fcm93LS1hY3RpdmFibGUnKVxuICAgIEBJbnB1dCgpXG4gICAgYWN0aXZhYmxlID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0aGUgdGFibGUgcm93IGlzIGhvdmVyYWJsZSAqL1xuICAgIC8qKiBXaGV0aGVyIHRvIGhpZ2hsaWdodCBhY3RpdmUgcm93IHdoZW4gY2xpY2tlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGhpZ2hsaWdodEFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgLyoqICBXaGV0aGVyIHRoZSB0YWJsZSByb3cgaXMgaG92ZXJhYmxlICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC10YWJsZV9fcm93LS1ob3ZlcmFibGUnKVxuICAgIEBJbnB1dCgpXG4gICAgaG92ZXJhYmxlID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0aGUgdGFibGUgcm93IGlzIGZvY3VzYWJsZSAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtdGFibGVfX3Jvdy0tZm9jdXNhYmxlJylcbiAgICBASW5wdXQoKVxuICAgIHNldCBmb2N1c2FibGUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9mb2N1c2FibGVMaXN0RGlyZWN0aXZlLmZvY3VzYWJsZSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgZm9jdXNhYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9jdXNhYmxlTGlzdERpcmVjdGl2ZS5mb2N1c2FibGU7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHRhYmxlIHJvdyBpcyBtYWluIHJvdywgaXQncyBjb25jZXJuZWQgb25seSBvbiBwb3AgaW4gbW9kZSAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtdGFibGVfX3Jvdy0tbWFpbicpXG4gICAgQElucHV0KClcbiAgICBtYWluID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0aGUgdGFibGUgcm93IGlzIHNlY29uZGFyeSByb3csIGl0J3MgY29uY2VybmVkIG9ubHkgb24gcG9wIGluIG1vZGUgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLXRhYmxlX19yb3ctLXNlY29uZGFyeScpXG4gICAgQElucHV0KClcbiAgICBzZWNvbmRhcnkgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSB0YWJsZSByb3cgaXMgYWN0aXZlLiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaXMtc2VsZWN0ZWQnKVxuICAgIEBJbnB1dCgpXG4gICAgYWN0aXZlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Byb3BhZ2F0ZUtleXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZm9jdXNhYmxlTGlzdERpcmVjdGl2ZSA9IGluamVjdChGb2N1c2FibGVMaXN0RGlyZWN0aXZlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2NoYW5nZURldFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgX3RhYmxlU2VydmljZTogVGFibGVTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MVGFibGVSb3dFbGVtZW50PlxuICAgICkge1xuICAgICAgICB0aGlzLl9mb2N1c2FibGVMaXN0RGlyZWN0aXZlLm5hdmlnYXRpb25EaXJlY3Rpb24gPSAnZ3JpZCc7XG4gICAgICAgIHRoaXMuX2ZvY3VzYWJsZUxpc3REaXJlY3RpdmUuX3VwZGF0ZU5hdmlnYXRpb25EaXJlY3Rpb24oKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wcm9wYWdhdGVLZXlzU3Vic2NyaXB0aW9uID0gdGhpcy5fdGFibGVTZXJ2aWNlLnByb3BhZ2F0ZUtleXMkLnN1YnNjcmliZSgoa2V5czogc3RyaW5nW10pID0+XG4gICAgICAgICAgICB0aGlzLl9yZXNldENlbGxzKGtleXMpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Jlc2V0Q2VsbHModGhpcy5fdGFibGVTZXJ2aWNlLnByb3BhZ2F0ZUtleXMkLmdldFZhbHVlKCkpO1xuICAgICAgICB0aGlzLl9zZXR1cENlbGxzU3Vic2NyaXB0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcHJvcGFnYXRlS2V5c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzZXRDZWxscyhrZXlzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jZWxscyAmJiBrZXlzICYmIGtleXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlVmlzaWJpbGl0eShrZXlzKTtcblxuICAgICAgICAgICAgY29uc3Qgc29ydGVkQ2VsbHMgPSB0aGlzLmNlbGxzLnRvQXJyYXkoKS5zb3J0KChhLCBiKSA9PiB0aGlzLl9zb3J0TWV0aG9kKGEsIGIsIGtleXMpKTtcblxuICAgICAgICAgICAgdGhpcy5jZWxscy5yZXNldChzb3J0ZWRDZWxscyk7XG5cbiAgICAgICAgICAgIHRoaXMuX3NvcnROYXRpdmVFbGVtZW50cygpO1xuXG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zb3J0TWV0aG9kKGE6IFRhYmxlQ2VsbERpcmVjdGl2ZSwgYjogVGFibGVDZWxsRGlyZWN0aXZlLCBrZXlzOiBzdHJpbmdbXSk6IG51bWJlciB7XG4gICAgICAgIGlmIChrZXlzLmZpbmRJbmRleCgoX2tleSkgPT4gX2tleSA9PT0gYS5rZXkpIDwga2V5cy5maW5kSW5kZXgoKF9rZXkpID0+IF9rZXkgPT09IGIua2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NvcnROYXRpdmVFbGVtZW50cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jZWxscy5mb3JFYWNoKChjZWxsKSA9PlxuICAgICAgICAgICAgY2VsbC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZT8uYXBwZW5kQ2hpbGQoY2VsbC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jaGFuZ2VWaXNpYmlsaXR5KGtleXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2VsbHMuZm9yRWFjaCgoY2VsbCkgPT4gY2VsbC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShISURERU5fQ0xBU1NfTkFNRSkpO1xuICAgICAgICBjb25zdCBub3RGb3VuZEVsZW1lbnRzOiBUYWJsZUNlbGxEaXJlY3RpdmVbXSA9IHRoaXMuY2VsbHMuZmlsdGVyKFxuICAgICAgICAgICAgKGNlbGwpID0+ICFrZXlzLmZpbmQoKGtleSkgPT4ga2V5ID09PSBjZWxsLmtleSlcbiAgICAgICAgKTtcbiAgICAgICAgbm90Rm91bmRFbGVtZW50cy5mb3JFYWNoKHRoaXMuX2hpZGVFbGVtZW50KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hpZGVFbGVtZW50KGVsZW1lbnQ6IFRhYmxlQ2VsbERpcmVjdGl2ZSk6IHZvaWQge1xuICAgICAgICBlbGVtZW50LmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKEhJRERFTl9DTEFTU19OQU1FKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldHVwQ2VsbHNTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2VsbHMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aChudWxsKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2VsbHMuZm9yRWFjaCgoY2VsbCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBjZWxsLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hcmlhQ29sSW5kZXggPSBpbmRleC50b1N0cmluZygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcm93LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3RhYmxlL2RpcmVjdGl2ZXMvdGFibGUtcm93LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUdMLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsNEJBQTRCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFcEgsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsa0JBQWtCLENBQUM7QUFZcEQsTUFBTSxPQUFPLGlCQUFrQixTQUFRLHNCQUFzQjtJQXdCekQseUNBQXlDO0lBQ3pDLElBRUksU0FBUyxDQUFDLEtBQW1CO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFL0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUNELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBMkJELGNBQWM7SUFDZDtRQUNJLEtBQUssRUFBRSxDQUFDO1FBMURaLGNBQWM7UUFFZCxvQkFBZSxHQUFHLElBQUksQ0FBQztR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QkFSZjtRQUNQO1lBQ0ksT0FBTyxFQUFFLDRCQUE0QjtZQUNyQyxXQUFXLEVBQUUsaUJBQWlCO1NBQ2pDO1FBQ0QsZ0JBQWdCO0tBQ25CLGdEQUlnQixrQkFBa0I7MkZBRjFCLGlCQUFpQjtrQkFWN0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsOEJBQThCO29CQUN4QyxTQUFTLEVBQUU7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLDRCQUE0Qjs0QkFDckMsV0FBVyxtQkFBbUI7eUJBQ2pDO3dCQUNELGdCQUFnQjtxQkFDbkI7aUJBQ0o7MEVBSUcsS0FBSztzQkFESixlQUFlO3VCQUFDLGtCQUFrQjtnQkFLbkMsZUFBZTtzQkFEZCxXQUFXO3VCQUFDLHFCQUFxQjtnQkFNbEMsU0FBUztzQkFGUixXQUFXO3VCQUFDLGdDQUFnQzs7c0JBQzVDLEtBQUs7Z0JBTU4sZUFBZTtzQkFEZCxLQUFLO2dCQU1OLFNBQVM7c0JBRlIsV0FBVzt1QkFBQyxnQ0FBZ0M7O3NCQUM1QyxLQUFLO2dCQU1GLFNBQVM7c0JBRlosV0FBVzt1QkFBQyxnQ0FBZ0M7O3NCQUM1QyxLQUFLO2dCQWFOLElBQUk7c0JBRkgsV0FBVzt1QkFBQywyQkFBMkI7O3NCQUN2QyxLQUFLO2dCQU1OLFNBQVM7c0JBRlIsV0FBVzt1QkFBQyxnQ0FBZ0M7O3NCQUM1QyxLQUFLO2dCQU1OLE1BQU07c0JBRkwsV0FBVzt1QkFBQyxtQkFBbUI7O3NCQUMvQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi4vdGFibGUuc2VydmljZSc7XG5pbXBvcnQgeyBUYWJsZUNlbGxEaXJlY3RpdmUgfSBmcm9tICcuL3RhYmxlLWNlbGwuZGlyZWN0aXZlJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IERlc3Ryb3llZFNlcnZpY2UsIEZES19GT0NVU0FCTEVfTElTVF9ESVJFQ1RJVkUsIEZvY3VzYWJsZUxpc3REaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5cbmV4cG9ydCBjb25zdCBISURERU5fQ0xBU1NfTkFNRSA9ICdmZC10YWJsZS0taGlkZGVuJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRUYWJsZVJvd10sIFtmZC10YWJsZS1yb3ddJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRkRLX0ZPQ1VTQUJMRV9MSVNUX0RJUkVDVElWRSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBUYWJsZVJvd0RpcmVjdGl2ZVxuICAgICAgICB9LFxuICAgICAgICBEZXN0cm95ZWRTZXJ2aWNlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZVJvd0RpcmVjdGl2ZSBleHRlbmRzIEZvY3VzYWJsZUxpc3REaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uSW5pdCB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFRhYmxlQ2VsbERpcmVjdGl2ZSlcbiAgICBjZWxsczogUXVlcnlMaXN0PFRhYmxlQ2VsbERpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtdGFibGVfX3JvdycpXG4gICAgZmRUYWJsZVJvd0NsYXNzID0gdHJ1ZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSB0YWJsZSByb3cgaXMgYWN0aXZhYmxlICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC10YWJsZV9fcm93LS1hY3RpdmFibGUnKVxuICAgIEBJbnB1dCgpXG4gICAgYWN0aXZhYmxlID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0aGUgdGFibGUgcm93IGlzIGhvdmVyYWJsZSAqL1xuICAgIC8qKiBXaGV0aGVyIHRvIGhpZ2hsaWdodCBhY3RpdmUgcm93IHdoZW4gY2xpY2tlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGhpZ2hsaWdodEFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgLyoqICBXaGV0aGVyIHRoZSB0YWJsZSByb3cgaXMgaG92ZXJhYmxlICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC10YWJsZV9fcm93LS1ob3ZlcmFibGUnKVxuICAgIEBJbnB1dCgpXG4gICAgaG92ZXJhYmxlID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0aGUgdGFibGUgcm93IGlzIGZvY3VzYWJsZSAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtdGFibGVfX3Jvdy0tZm9jdXNhYmxlJylcbiAgICBASW5wdXQoKVxuICAgIHNldCBmb2N1c2FibGUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9mb2N1c2FibGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuXG4gICAgICAgIHRoaXMuc2V0VGFiYmFibGUodGhpcy5fZm9jdXNhYmxlKTtcbiAgICB9XG4gICAgZ2V0IGZvY3VzYWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZvY3VzYWJsZTtcbiAgICB9XG5cbiAgICAvKiogV2hldGhlciB0aGUgdGFibGUgcm93IGlzIG1haW4gcm93LCBpdCdzIGNvbmNlcm5lZCBvbmx5IG9uIHBvcCBpbiBtb2RlICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC10YWJsZV9fcm93LS1tYWluJylcbiAgICBASW5wdXQoKVxuICAgIG1haW4gPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSB0YWJsZSByb3cgaXMgc2Vjb25kYXJ5IHJvdywgaXQncyBjb25jZXJuZWQgb25seSBvbiBwb3AgaW4gbW9kZSAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtdGFibGVfX3Jvdy0tc2Vjb25kYXJ5JylcbiAgICBASW5wdXQoKVxuICAgIHNlY29uZGFyeSA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHRhYmxlIHJvdyBpcyBhY3RpdmUuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1zZWxlY3RlZCcpXG4gICAgQElucHV0KClcbiAgICBhY3RpdmUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJvcGFnYXRlS2V5c1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdGFibGVTZXJ2aWNlID0gaW5qZWN0KFRhYmxlU2VydmljZSk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MVGFibGVSb3dFbGVtZW50PiA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uRGlyZWN0aW9uID0gJ2dyaWQnO1xuICAgICAgICB0aGlzLl91cGRhdGVOYXZpZ2F0aW9uRGlyZWN0aW9uKCk7XG4gICAgICAgIHRoaXMuX3Byb3BhZ2F0ZUtleXNTdWJzY3JpcHRpb24gPSB0aGlzLl90YWJsZVNlcnZpY2UucHJvcGFnYXRlS2V5cyQuc3Vic2NyaWJlKChrZXlzOiBzdHJpbmdbXSkgPT5cbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0Q2VsbHMoa2V5cylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICAgIHRoaXMuX3Jlc2V0Q2VsbHModGhpcy5fdGFibGVTZXJ2aWNlLnByb3BhZ2F0ZUtleXMkLmdldFZhbHVlKCkpO1xuICAgICAgICB0aGlzLl9zZXR1cENlbGxzU3Vic2NyaXB0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5fcHJvcGFnYXRlS2V5c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzZXRDZWxscyhrZXlzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jZWxscyAmJiBrZXlzICYmIGtleXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlVmlzaWJpbGl0eShrZXlzKTtcblxuICAgICAgICAgICAgY29uc3Qgc29ydGVkQ2VsbHMgPSB0aGlzLmNlbGxzLnRvQXJyYXkoKS5zb3J0KChhLCBiKSA9PiB0aGlzLl9zb3J0TWV0aG9kKGEsIGIsIGtleXMpKTtcblxuICAgICAgICAgICAgdGhpcy5jZWxscy5yZXNldChzb3J0ZWRDZWxscyk7XG5cbiAgICAgICAgICAgIHRoaXMuX3NvcnROYXRpdmVFbGVtZW50cygpO1xuXG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zb3J0TWV0aG9kKGE6IFRhYmxlQ2VsbERpcmVjdGl2ZSwgYjogVGFibGVDZWxsRGlyZWN0aXZlLCBrZXlzOiBzdHJpbmdbXSk6IG51bWJlciB7XG4gICAgICAgIGlmIChrZXlzLmZpbmRJbmRleCgoX2tleSkgPT4gX2tleSA9PT0gYS5rZXkpIDwga2V5cy5maW5kSW5kZXgoKF9rZXkpID0+IF9rZXkgPT09IGIua2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NvcnROYXRpdmVFbGVtZW50cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jZWxscy5mb3JFYWNoKChjZWxsKSA9PlxuICAgICAgICAgICAgY2VsbC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZT8uYXBwZW5kQ2hpbGQoY2VsbC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jaGFuZ2VWaXNpYmlsaXR5KGtleXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2VsbHMuZm9yRWFjaCgoY2VsbCkgPT4gY2VsbC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShISURERU5fQ0xBU1NfTkFNRSkpO1xuICAgICAgICBjb25zdCBub3RGb3VuZEVsZW1lbnRzOiBUYWJsZUNlbGxEaXJlY3RpdmVbXSA9IHRoaXMuY2VsbHMuZmlsdGVyKFxuICAgICAgICAgICAgKGNlbGwpID0+ICFrZXlzLmZpbmQoKGtleSkgPT4ga2V5ID09PSBjZWxsLmtleSlcbiAgICAgICAgKTtcbiAgICAgICAgbm90Rm91bmRFbGVtZW50cy5mb3JFYWNoKHRoaXMuX2hpZGVFbGVtZW50KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hpZGVFbGVtZW50KGVsZW1lbnQ6IFRhYmxlQ2VsbERpcmVjdGl2ZSk6IHZvaWQge1xuICAgICAgICBlbGVtZW50LmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKEhJRERFTl9DTEFTU19OQU1FKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldHVwQ2VsbHNTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2VsbHMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aChudWxsKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2VsbHMuZm9yRWFjaCgoY2VsbCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBjZWxsLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hcmlhQ29sSW5kZXggPSBpbmRleC50b1N0cmluZygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==