@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
@@ -107,7 +107,7 @@ export class RadioButtonComponent {
107
107
  return ['fd-radio', this.state !== 'default' ? `is-${this.state}` : ''];
108
108
  }
109
109
  /** @hidden */
110
- elementRef() {
110
+ get elementRef() {
111
111
  return this.inputElement;
112
112
  }
113
113
  /** @hidden */
@@ -219,4 +219,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
219
219
  }], standalone: [{
220
220
  type: Input
221
221
  }], buildComponentCssClass: [] } });
222
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3JhZGlvL3JhZGlvLWJ1dHRvbi9yYWRpby1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcmFkaW8vcmFkaW8tYnV0dG9uL3JhZGlvLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFlLE1BQU0sdUJBQXVCLENBQUM7QUFDMUUsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsS0FBSyxFQUdMLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLGFBQWEsRUFBbUIsTUFBTSw0QkFBNEIsQ0FBQztBQUU1RSxPQUFPLEVBQUUsdUJBQXVCLEVBQW1CLE1BQU0sNEJBQTRCLENBQUM7QUFDdEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEgsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sV0FBVyxDQUFDOzs7OztBQUd0RCxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7QUF5QmpCLE1BQU0sT0FBTyxvQkFBb0I7SUF1QjdCOztPQUVHO0lBQ0gsSUFDSSxRQUFRLENBQUMsS0FBa0I7UUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJ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b2VyY2VOdW1iZXJQcm9wZXJ0eSwgTnVtYmVySW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGFwcGx5Q3NzQ2xhc3MsIENzc0NsYXNzQnVpbGRlciB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgcmVnaXN0ZXJGb3JtSXRlbUNvbnRyb2wsIEZvcm1JdGVtQ29udHJvbCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9mb3JtJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IEZEX1JBRElPX0JVVFRPTl9DT01QT05FTlQgfSBmcm9tICcuLi90b2tlbnMnO1xuXG5leHBvcnQgdHlwZSBzdGF0ZVR5cGUgPSAnc3VjY2VzcycgfCAnZXJyb3InIHwgJ3dhcm5pbmcnIHwgJ2RlZmF1bHQnIHwgJ2luZm9ybWF0aW9uJztcbmxldCB1bmlxdWVJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtcmFkaW8tYnV0dG9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmFkaW8tYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9yYWRpby1idXR0b24uY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJhZGlvQnV0dG9uQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEX1JBRElPX0JVVFRPTl9DT01QT05FTlQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogUmFkaW9CdXR0b25Db21wb25lbnRcbiAgICAgICAgfSxcbiAgICAgICAgcmVnaXN0ZXJGb3JtSXRlbUNvbnRyb2woUmFkaW9CdXR0b25Db21wb25lbnQpLFxuICAgICAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzKClcbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhmb2N1c291dCknOiAnb25Ub3VjaGVkKCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBSYWRpb0J1dHRvbkNvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBDc3NDbGFzc0J1aWxkZXIsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3ksIEZvcm1JdGVtQ29udHJvbFxue1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnaW5wdXRFbGVtZW50JylcbiAgICBpbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICAvKiogU2V0cyB0aGUgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZSB0byB0aGUgZWxlbWVudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbDogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBTZXRzIHRoZSBgYXJpYS1sYWJlbGxlZGJ5YCBhdHRyaWJ1dGUgdG8gdGhlIGVsZW1lbnQuICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWxsZWRCeTogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBTZXRzIHRoZSBgYXJpYS1kZXNjcmliZWRieWAgYXR0cmlidXRlIHRvIHRoZSBlbGVtZW50LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYURlc2NyaWJlZEJ5OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIHNldHMgcmFkaW8gdG9vbHRpcCAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGl0bGU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEluY2x1ZGVzIHRoZSByYWRpbyBpbiB0aGUgcGFnZSB0YWIgc2VxdWVuY2UuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGFiSW5kZXgodmFsdWU6IE51bWJlcklucHV0KSB7XG4gICAgICAgIHRoaXMuX3RhYkluZGV4ID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xuICAgIH1cblxuICAgIGdldCB0YWJJbmRleCgpOiBOdW1iZXJJbnB1dCB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJJbmRleDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RhYkluZGV4OiBudW1iZXI7XG5cbiAgICAvKiogVGhlIGZpZWxkIHRvIHNldCBzdGF0ZSBvZiByYWRpbyBidXR0b24gdXNpbmc6XG4gICAgICogJ3N1Y2Nlc3MnIHwgJ2Vycm9yJyB8ICd3YXJuaW5nJyB8ICdkZWZhdWx0JyB8ICdpbmZvcm1hdGlvbidcbiAgICAgKiBieSBkZWZhdWx0IHZhbHVlIGlzIHNldCB0byAnZGVmYXVsdCdcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHN0YXRlPzogc3RhdGVUeXBlID0gJ2RlZmF1bHQnO1xuXG4gICAgLyoqIFRoZSBmaWVsZCBpcyB1c2VkIHRvIHRlbGwgaWYgcmFkaW8gYnV0dG9uIHNob3VsZCBiZSBkaXNhYmxlZFxuICAgICAqIFZhbHVlOiB0cnVlIG9yIGZhbHNlXG4gICAgICogYnkgZGVmYXVsdCBkaXNhYmxlZCBzdGF0ZSBpcyBzZXQgdG8gZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKiogVGhlIGZpZWxkIHNob3VsZCBiZSBvbmx5IHVzZWQgd2l0aCByZWFjdGl2ZSBmb3Jtc1xuICAgICAqIEl0cyBwdXJwb3NlIGlzIHRvIHBhc3MgYSBjdXJyZW50IHNlbGVjdGVkIHZhbHVlIGZyb20gZnJvdW1Hcm91cFxuICAgICAqIFRoZSBmaWVsZCBpcyBtYW5kYXRvcnkgd2hlbiB3b3JraW5nIHdpdGggcmVhY3RpdmUgZm9ybXNcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzZWxlY3RlZFZhbHVlKHZhbDogYW55KSB7XG4gICAgICAgIHRoaXMuY3VycmVudFZhbHVlID0gdmFsO1xuICAgICAgICB0aGlzLl9zZXROYXRpdmVFbGVtZW50Q2hlY2tlZFN0YXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBuYW1lIG9mIHRoZSByYWRpbyBidXR0b25cbiAgICAgKiBUaGUgZmllbGQgaXMgbWFuZGF0b3J5XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBuYW1lOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiB1bmlxdWVJZCB0byBhIHJhZGlvIGJ1dHRvblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgaWQgPSBgcmFkaW8taWQtJHt1bmlxdWVJZCsrfWA7XG5cbiAgICAvKiogVmFsdWUgZmllbGQgc3RvcmVzIGluZm9ybWF0aW9uIGFib3V0IGhvbGRpbmcgdmFsdWUgYnkgcmFkaW8gYnV0dG9uXG4gICAgICogVGhlIGZpZWxkIGlzIG1hbmRhdG9yeVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdmFsdWU6IGFueTtcblxuICAgIC8qKiBJZiBpdCBpcyBhIG1hbmRhdG9yeSBmaWVsZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVxdWlyZWQgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBjb250cm9sIGlzIGEgc3RhbmRhbG9uZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHN0YW5kYWxvbmUgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSByYWRpbyBidXR0b24gaXMgY2hlY2tlZC4gKi9cbiAgICBnZXQgY2hlY2tlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRWYWx1ZSA9PT0gdGhpcy52YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNsYXNzOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGN1cnJlbnRWYWx1ZTogYW55O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3Rpb25SZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICByZWFkb25seSBfY29udGVudERlbnNpdHlPYnNlcnZlcjogQ29udGVudERlbnNpdHlPYnNlcnZlclxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTtcbiAgICAgICAgdGhpcy5fY2hlY2tNYW5kYXRvcnlGaWVsZHMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5idWlsZENvbXBvbmVudENzc0NsYXNzKCk7XG4gICAgICAgIHRoaXMuX2NoZWNrTWFuZGF0b3J5RmllbGRzKCk7XG4gICAgfVxuXG4gICAgLy8gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW1wbGVtZW50YXRpb25cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uQ2hhbmdlOiBhbnkgPSAoKTogdm9pZCA9PiB7fTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25Ub3VjaGVkOiBhbnkgPSAoKTogdm9pZCA9PiB7fTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rpb25SZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UodmFsdWUsIGZhbHNlKTtcbiAgICB9XG5cbiAgICAvLyBFbmQgaW1wbGVtZW50YXRpb25cblxuICAgIC8qKiBUaGlzIG1ldGhvZCBpcyByZXNwb25zaWJsZSBmb3IgYnVpbGRpbmcgYSBjc3MgY2xhc3MgYmFzZWQgb24gY3VycmVudCBzdGF0ZVxuICAgICAqICBJdCBpcyBpbXBsZW1lbnRhdGlvbiBvZiBDc3NDbGFzc0J1aWxkZXIgaW50ZXJmYWNlIGFuZFxuICAgICAqICBzaG91bGQgYmUgdXNlZCB3aXRoIEBhcHBseUNzc0NsYXNzIGRlY29yYXRvclxuICAgICAqL1xuICAgIEBhcHBseUNzc0NsYXNzXG4gICAgYnVpbGRDb21wb25lbnRDc3NDbGFzcygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBbJ2ZkLXJhZGlvJywgdGhpcy5zdGF0ZSAhPT0gJ2RlZmF1bHQnID8gYGlzLSR7dGhpcy5zdGF0ZX1gIDogJyddO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZWxlbWVudFJlZigpOiBFbGVtZW50UmVmPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnB1dEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBsYWJlbENsaWNrZWQoZXZlbnQ6IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50LCBhcHBseUZvY3VzID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlKHRoaXMudmFsdWUpO1xuXG4gICAgICAgIGlmIChhcHBseUZvY3VzKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRGb2N1c09uTmF0aXZlRWxlbWVudCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB2YWx1ZUNoYW5nZSh2YWx1ZTogYW55LCBlbWl0RXZlbnQgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy5fc2V0TmF0aXZlRWxlbWVudENoZWNrZWRTdGF0ZSgpO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgaWYgKGVtaXRFdmVudCkge1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NoZWNrTWFuZGF0b3J5RmllbGRzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zdGFuZGFsb25lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubmFtZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25hbWUgZmllbGQgaXMgcmVxdWlyZWQnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3ZhbHVlIGZpZWxkIGlzIHJlcXVpcmVkJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldEZvY3VzT25OYXRpdmVFbGVtZW50KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pbnB1dEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0TmF0aXZlRWxlbWVudENoZWNrZWRTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmNoZWNrZWQgPSB0aGlzLmNoZWNrZWQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8aW5wdXRcbiAgICB0eXBlPVwicmFkaW9cIlxuICAgIGNsYXNzPVwiZmQtcmFkaW9cIlxuICAgIFtjbGFzcy5pcy1jb21wYWN0XT1cIl9jb250ZW50RGVuc2l0eU9ic2VydmVyLmlzQ29tcGFjdCQgfCBhc3luY1wiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbaWRdPVwiaWRcIlxuICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgW25hbWVdPVwibmFtZVwiXG4gICAgW2F0dHIudGFiaW5kZXhdPVwidGFiSW5kZXhcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZEJ5XCJcbiAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiY2hlY2tlZFwiXG4gICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgW25nTW9kZWxdPVwiY3VycmVudFZhbHVlXCJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiBzdGFuZGFsb25lIH1cIlxuICAgICNpbnB1dEVsZW1lbnRcbiAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgIFthdHRyLnZhbHVlXT1cInZhbHVlXCJcbi8+XG48bGFiZWwgY2xhc3M9XCJmZC1yYWRpb19fbGFiZWxcIiBbYXR0ci50aXRsZV09XCJ0aXRsZVwiIFtmb3JdPVwiaWRcIiAoY2xpY2spPVwibGFiZWxDbGlja2VkKCRldmVudClcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2xhYmVsPlxuIl19
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3JhZGlvL3JhZGlvLWJ1dHRvbi9yYWRpby1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcmFkaW8vcmFkaW8tYnV0dG9uL3JhZGlvLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFlLE1BQU0sdUJBQXVCLENBQUM7QUFDMUUsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsS0FBSyxFQUdMLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLGFBQWEsRUFBbUIsTUFBTSw0QkFBNEIsQ0FBQztBQUU1RSxPQUFPLEVBQUUsdUJBQXVCLEVBQW1CLE1BQU0sNEJBQTRCLENBQUM7QUFDdEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEgsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sV0FBVyxDQUFDOzs7OztBQUd0RCxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7QUF5QmpCLE1BQU0sT0FBTyxvQkFBb0I7SUF1QjdCOztPQUVHO0lBQ0gsSUFDSSxRQUFRLENBQUMsS0FBa0I7UUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJ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dCB7IGNvZXJjZU51bWJlclByb3BlcnR5LCBOdW1iZXJJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgYXBwbHlDc3NDbGFzcywgQ3NzQ2xhc3NCdWlsZGVyIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyByZWdpc3RlckZvcm1JdGVtQ29udHJvbCwgRm9ybUl0ZW1Db250cm9sIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Zvcm0nO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlPYnNlcnZlciwgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IHsgRkRfUkFESU9fQlVUVE9OX0NPTVBPTkVOVCB9IGZyb20gJy4uL3Rva2Vucyc7XG5cbmV4cG9ydCB0eXBlIHN0YXRlVHlwZSA9ICdzdWNjZXNzJyB8ICdlcnJvcicgfCAnd2FybmluZycgfCAnZGVmYXVsdCcgfCAnaW5mb3JtYXRpb24nO1xubGV0IHVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1yYWRpby1idXR0b24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yYWRpby1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3JhZGlvLWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUmFkaW9CdXR0b25Db21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRkRfUkFESU9fQlVUVE9OX0NPTVBPTkVOVCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBSYWRpb0J1dHRvbkNvbXBvbmVudFxuICAgICAgICB9LFxuICAgICAgICByZWdpc3RlckZvcm1JdGVtQ29udHJvbChSYWRpb0J1dHRvbkNvbXBvbmVudCksXG4gICAgICAgIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMoKVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICAnKGZvY3Vzb3V0KSc6ICdvblRvdWNoZWQoKSdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFJhZGlvQnV0dG9uQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIENzc0NsYXNzQnVpbGRlciwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSwgRm9ybUl0ZW1Db250cm9sXG57XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdpbnB1dEVsZW1lbnQnKVxuICAgIGlucHV0RWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAgIC8qKiBTZXRzIHRoZSBgYXJpYS1sYWJlbGAgYXR0cmlidXRlIHRvIHRoZSBlbGVtZW50LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIFNldHMgdGhlIGBhcmlhLWxhYmVsbGVkYnlgIGF0dHJpYnV0ZSB0byB0aGUgZWxlbWVudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbGxlZEJ5OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIFNldHMgdGhlIGBhcmlhLWRlc2NyaWJlZGJ5YCBhdHRyaWJ1dGUgdG8gdGhlIGVsZW1lbnQuICovXG4gICAgQElucHV0KClcbiAgICBhcmlhRGVzY3JpYmVkQnk6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogc2V0cyByYWRpbyB0b29sdGlwICovXG4gICAgQElucHV0KClcbiAgICB0aXRsZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogSW5jbHVkZXMgdGhlIHJhZGlvIGluIHRoZSBwYWdlIHRhYiBzZXF1ZW5jZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0YWJJbmRleCh2YWx1ZTogTnVtYmVySW5wdXQpIHtcbiAgICAgICAgdGhpcy5fdGFiSW5kZXggPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IHRhYkluZGV4KCk6IE51bWJlcklucHV0IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYkluZGV4O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdGFiSW5kZXg6IG51bWJlcjtcblxuICAgIC8qKiBUaGUgZmllbGQgdG8gc2V0IHN0YXRlIG9mIHJhZGlvIGJ1dHRvbiB1c2luZzpcbiAgICAgKiAnc3VjY2VzcycgfCAnZXJyb3InIHwgJ3dhcm5pbmcnIHwgJ2RlZmF1bHQnIHwgJ2luZm9ybWF0aW9uJ1xuICAgICAqIGJ5IGRlZmF1bHQgdmFsdWUgaXMgc2V0IHRvICdkZWZhdWx0J1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RhdGU/OiBzdGF0ZVR5cGUgPSAnZGVmYXVsdCc7XG5cbiAgICAvKiogVGhlIGZpZWxkIGlzIHVzZWQgdG8gdGVsbCBpZiByYWRpbyBidXR0b24gc2hvdWxkIGJlIGRpc2FibGVkXG4gICAgICogVmFsdWU6IHRydWUgb3IgZmFsc2VcbiAgICAgKiBieSBkZWZhdWx0IGRpc2FibGVkIHN0YXRlIGlzIHNldCB0byBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKiBUaGUgZmllbGQgc2hvdWxkIGJlIG9ubHkgdXNlZCB3aXRoIHJlYWN0aXZlIGZvcm1zXG4gICAgICogSXRzIHB1cnBvc2UgaXMgdG8gcGFzcyBhIGN1cnJlbnQgc2VsZWN0ZWQgdmFsdWUgZnJvbSBmcm91bUdyb3VwXG4gICAgICogVGhlIGZpZWxkIGlzIG1hbmRhdG9yeSB3aGVuIHdvcmtpbmcgd2l0aCByZWFjdGl2ZSBmb3Jtc1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHNlbGVjdGVkVmFsdWUodmFsOiBhbnkpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VmFsdWUgPSB2YWw7XG4gICAgICAgIHRoaXMuX3NldE5hdGl2ZUVsZW1lbnRDaGVja2VkU3RhdGUoKTtcbiAgICB9XG5cbiAgICAvKiogVGhlIG5hbWUgb2YgdGhlIHJhZGlvIGJ1dHRvblxuICAgICAqIFRoZSBmaWVsZCBpcyBtYW5kYXRvcnlcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG5hbWU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIHVuaXF1ZUlkIHRvIGEgcmFkaW8gYnV0dG9uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBpZCA9IGByYWRpby1pZC0ke3VuaXF1ZUlkKyt9YDtcblxuICAgIC8qKiBWYWx1ZSBmaWVsZCBzdG9yZXMgaW5mb3JtYXRpb24gYWJvdXQgaG9sZGluZyB2YWx1ZSBieSByYWRpbyBidXR0b25cbiAgICAgKiBUaGUgZmllbGQgaXMgbWFuZGF0b3J5XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB2YWx1ZTogYW55O1xuXG4gICAgLyoqIElmIGl0IGlzIGEgbWFuZGF0b3J5IGZpZWxkICovXG4gICAgQElucHV0KClcbiAgICByZXF1aXJlZCA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGNvbnRyb2wgaXMgYSBzdGFuZGFsb25lLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RhbmRhbG9uZSA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHJhZGlvIGJ1dHRvbiBpcyBjaGVja2VkLiAqL1xuICAgIGdldCBjaGVja2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFZhbHVlID09PSB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY2xhc3M6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY3VycmVudFZhbHVlOiBhbnk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdGlvblJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHJlYWRvbmx5IF9jb250ZW50RGVuc2l0eU9ic2VydmVyOiBDb250ZW50RGVuc2l0eU9ic2VydmVyXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgICAgICB0aGlzLl9jaGVja01hbmRhdG9yeUZpZWxkcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTtcbiAgICAgICAgdGhpcy5fY2hlY2tNYW5kYXRvcnlGaWVsZHMoKTtcbiAgICB9XG5cbiAgICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvciBpbXBsZW1lbnRhdGlvblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25DaGFuZ2U6IGFueSA9ICgpOiB2b2lkID0+IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvblRvdWNoZWQ6IGFueSA9ICgpOiB2b2lkID0+IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdGlvblJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZSh2YWx1ZSwgZmFsc2UpO1xuICAgIH1cblxuICAgIC8vIEVuZCBpbXBsZW1lbnRhdGlvblxuXG4gICAgLyoqIFRoaXMgbWV0aG9kIGlzIHJlc3BvbnNpYmxlIGZvciBidWlsZGluZyBhIGNzcyBjbGFzcyBiYXNlZCBvbiBjdXJyZW50IHN0YXRlXG4gICAgICogIEl0IGlzIGltcGxlbWVudGF0aW9uIG9mIENzc0NsYXNzQnVpbGRlciBpbnRlcmZhY2UgYW5kXG4gICAgICogIHNob3VsZCBiZSB1c2VkIHdpdGggQGFwcGx5Q3NzQ2xhc3MgZGVjb3JhdG9yXG4gICAgICovXG4gICAgQGFwcGx5Q3NzQ2xhc3NcbiAgICBidWlsZENvbXBvbmVudENzc0NsYXNzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIFsnZmQtcmFkaW8nLCB0aGlzLnN0YXRlICE9PSAnZGVmYXVsdCcgPyBgaXMtJHt0aGlzLnN0YXRlfWAgOiAnJ107XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgZWxlbWVudFJlZigpOiBFbGVtZW50UmVmIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbGFiZWxDbGlja2VkKGV2ZW50OiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCwgYXBwbHlGb2N1cyA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZSh0aGlzLnZhbHVlKTtcblxuICAgICAgICBpZiAoYXBwbHlGb2N1cykge1xuICAgICAgICAgICAgdGhpcy5fc2V0Rm9jdXNPbk5hdGl2ZUVsZW1lbnQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgdmFsdWVDaGFuZ2UodmFsdWU6IGFueSwgZW1pdEV2ZW50ID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1cnJlbnRWYWx1ZSA9IHZhbHVlO1xuXG4gICAgICAgIHRoaXMuX3NldE5hdGl2ZUVsZW1lbnRDaGVja2VkU3RhdGUoKTtcblxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdGlvblJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIGlmIChlbWl0RXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jaGVja01hbmRhdG9yeUZpZWxkcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhbmRhbG9uZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm5hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCduYW1lIGZpZWxkIGlzIHJlcXVpcmVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd2YWx1ZSBmaWVsZCBpcyByZXF1aXJlZCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRGb2N1c09uTmF0aXZlRWxlbWVudCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldE5hdGl2ZUVsZW1lbnRDaGVja2VkU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0RWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5jaGVja2VkID0gdGhpcy5jaGVja2VkO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGlucHV0XG4gICAgdHlwZT1cInJhZGlvXCJcbiAgICBjbGFzcz1cImZkLXJhZGlvXCJcbiAgICBbY2xhc3MuaXMtY29tcGFjdF09XCJfY29udGVudERlbnNpdHlPYnNlcnZlci5pc0NvbXBhY3QkIHwgYXN5bmNcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW2lkXT1cImlkXCJcbiAgICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgIFthdHRyLnRhYmluZGV4XT1cInRhYkluZGV4XCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmliZWRCeVwiXG4gICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW2F0dHIuYXJpYS1jaGVja2VkXT1cImNoZWNrZWRcIlxuICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgIFtuZ01vZGVsXT1cImN1cnJlbnRWYWx1ZVwiXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogc3RhbmRhbG9uZSB9XCJcbiAgICAjaW5wdXRFbGVtZW50XG4gICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICBbYXR0ci52YWx1ZV09XCJ2YWx1ZVwiXG4vPlxuPGxhYmVsIGNsYXNzPVwiZmQtcmFkaW9fX2xhYmVsXCIgW2F0dHIudGl0bGVdPVwidGl0bGVcIiBbZm9yXT1cImlkXCIgKGNsaWNrKT1cImxhYmVsQ2xpY2tlZCgkZXZlbnQpXCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9sYWJlbD5cbiJdfQ==
@@ -19,8 +19,8 @@ export class RatingIndicatorComponent {
19
19
  this._indicatorCapacity = val < 1 ? INDICATOR_DEFAULT_CAPACITY : val;
20
20
  }
21
21
  /** @hidden */
22
- constructor(_elementRef, _changeDetectorRef) {
23
- this._elementRef = _elementRef;
22
+ constructor(elementRef, _changeDetectorRef) {
23
+ this.elementRef = elementRef;
24
24
  this._changeDetectorRef = _changeDetectorRef;
25
25
  /**
26
26
  * Sets the aria-disabled attribute to the element.
@@ -146,10 +146,6 @@ export class RatingIndicatorComponent {
146
146
  this.onTouched();
147
147
  this.ratingChanged.emit(value);
148
148
  }
149
- /** @hidden */
150
- elementRef() {
151
- return this._elementRef;
152
- }
153
149
  /** @hidden
154
150
  * CssClassBuilder interface implementation
155
151
  * function must return single string
@@ -319,4 +315,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
319
315
  }], ratingChanged: [{
320
316
  type: Output
321
317
  }], buildComponentCssClass: [] } });
322
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0aW5nLWluZGljYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9yYXRpbmctaW5kaWNhdG9yL2NvbXBvbmVudHMvcmF0aW5nLWluZGljYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9yYXRpbmctaW5kaWNhdG9yL2NvbXBvbmVudHMvcmF0aW5nLWluZGljYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFHVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixVQUFVLEVBQ1YsdUJBQXVCLEVBRXZCLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUNILDBCQUEwQixFQUMxQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBRWpCLHVCQUF1QixFQUMxQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQW1CLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTVFLE9BQU8sRUFBRSx1QkFBdUIsRUFBbUIsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7QUFFdEYsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBMEJsQixNQUFNLE9BQU8sd0JBQXdCO0lBMkNqQzs7T0FFRztJQUNILElBQ0ksaUJBQWlCLENBQUMsS0FBYTtRQUMvQixNQUFNLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsMEJBQTBCLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxHQUFHLENB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O0FEb05JO0lBQUMsYUFBYTs7OztzRUFZYjsyRkFyUFEsd0JBQXdCO2tCQWZwQyxTQUFTOytCQUNJLHFCQUFxQixpQkFHaEIsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx5QkFBeUIsQ0FBQzs0QkFDdkQsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7d0JBQ0QsdUJBQXVCLDBCQUEwQjtxQkFDcEQ7aUlBT0QsS0FBSztzQkFESixLQUFLO2dCQUtOLElBQUk7c0JBREgsS0FBSztnQkFRTixTQUFTO3NCQUZSLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsaUJBQWlCO2dCQVE5QixjQUFjO3NCQUZiLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsaUJBQWlCO2dCQVc5QixRQUFRO3NCQUhQLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsbUJBQW1COztzQkFDL0IsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBU2pDLFdBQVc7c0JBRlYsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyx1QkFBdUI7Z0JBT2hDLGlCQUFpQjtzQkFEcEIsS0FBSztnQkFVTixXQUFXO3NCQURWLEtBQUs7Z0JBT04sS0FBSztzQkFESixLQUFLO2dCQU9OLFlBQVk7c0JBRFgsS0FBSztnQkFPTixhQUFhO3NCQURaLEtBQUs7Z0JBUU4sT0FBTztzQkFETixLQUFLO2dCQU9OLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFPTixTQUFTO3NCQURSLEtBQUs7Z0JBTU4sV0FBVztzQkFEVixLQUFLO2dCQU9OLElBQUk7c0JBREgsS0FBSztnQkFPTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBT04sYUFBYTtzQkFEWixNQUFNO2dCQXVIUCxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBPbkluaXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgRWxlbWVudFJlZixcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIGZvcndhcmRSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7XG4gICAgSU5ESUNBVE9SX0RFRkFVTFRfQ0FQQUNJVFksXG4gICAgSU5ESUNBVE9SX1BSRUZJWCxcbiAgICBJTkRJQ0FUT1JfQ0xBU1NFUyxcbiAgICBSYXRpbmdJbmRpY2F0b3JTaXplLFxuICAgIFJhdGluZ0luZGljYXRvclNpemVFbnVtXG59IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBDc3NDbGFzc0J1aWxkZXIsIGFwcGx5Q3NzQ2xhc3MgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IHJlZ2lzdGVyRm9ybUl0ZW1Db250cm9sLCBGb3JtSXRlbUNvbnRyb2wgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZm9ybSc7XG5cbmxldCByYXRpbmdVSUQgPSAwO1xuXG5pbnRlcmZhY2UgTnVtYmVyS2V5PFQ+IHtcbiAgICBba2V5OiBudW1iZXJdOiBUO1xufVxuXG5pbnRlcmZhY2UgUmF0aW5nVmlld0l0ZW0ge1xuICAgIHJhdGU6IG51bWJlcjtcbiAgICB2b3RlczogbnVtYmVyO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLXJhdGluZy1pbmRpY2F0b3InLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yYXRpbmctaW5kaWNhdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9yYXRpbmctaW5kaWNhdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBSYXRpbmdJbmRpY2F0b3JDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgcmVnaXN0ZXJGb3JtSXRlbUNvbnRyb2woUmF0aW5nSW5kaWNhdG9yQ29tcG9uZW50KVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgUmF0aW5nSW5kaWNhdG9yQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQ3NzQ2xhc3NCdWlsZGVyLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUl0ZW1Db250cm9sXG57XG4gICAgLyoqIFVzZXIncyBjdXN0b20gY2xhc3NlcyAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2xhc3M6IHN0cmluZztcblxuICAgIC8qKiBTZXRzIFtuYW1lXSBhdHRyaWJ1dGUgb2YgaW5wdXQuICovXG4gICAgQElucHV0KClcbiAgICBuYW1lOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBhcmlhLWxhYmVsIGF0dHJpYnV0ZSB0byB0aGUgZWxlbWVudC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWxhYmVsJylcbiAgICBhcmlhTGFiZWw6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBhcmlhLWxhYmVsbGVkYnkgYXR0cmlidXRlIHRvIHRoZSBlbGVtZW50LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbGFiZWwnKVxuICAgIGFyaWFMYWJlbGxlZEJ5OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYXJpYS1kaXNhYmxlZCBhdHRyaWJ1dGUgdG8gdGhlIGVsZW1lbnQuXG4gICAgICogU2V0cyB0aGUgaXMtZGlzYWJsZWQgY2xhc3MgdG8gdGhlIGVsZW1lbnQuXG4gICAgICogV2hldGhlciB0aGUgcmF0aW5nIGluZGljYXRvciBpcyBkaXNhYmxlZFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1kaXNhYmxlZCcpXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZGlzYWJsZWQnKVxuICAgIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBpcy1kaXNwbGF5LW1vZGUgY2xhc3MgdG8gdGhlIGVsZW1lbnQuXG4gICAgICogV2hldGhlciB0aGUgcmF0aW5nIGluZGljYXRvciBpcyBpbiBkaXNwbGF5TW9kZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1kaXNwbGF5LW1vZGUnKVxuICAgIGRpc3BsYXlNb2RlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBOdW1iZXIgb2YgcmF0ZXMgdG8gZGlzcGxheVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGluZGljYXRvckNhcGFjaXR5KHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgdmFsID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUsIElORElDQVRPUl9ERUZBVUxUX0NBUEFDSVRZKTtcbiAgICAgICAgdGhpcy5faW5kaWNhdG9yQ2FwYWNpdHkgPSB2YWwgPCAxID8gSU5ESUNBVE9SX0RFRkFVTFRfQ0FQQUNJVFkgOiB2YWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdG8gZGlzcGxheSBoYWxmIHZhbHVlcy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGFsbG93SGFsdmVzID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBVc2VyJ3MgdmFsdWUgbnVtYmVyIG9mIHJhdGluZ3MuIElmIHByb3ZpZGVkLCBPdmVycmlkZXMgcmF0aW5nQXZlcmFnZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHZhbHVlID0gMDtcblxuICAgIC8qKlxuICAgICAqIFRvdGFsIG51bWJlciBvZiByYXRpbmdzLiBJZiBwcm92aWRlZCwgd2lsbCBkaXNwbGF5IHRleHQgc2hvd2luZyB0aGUgdG90YWwgbnVtYmVyIG9mIHJhdGluZ3MuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB0b3RhbFJhdGluZ3M6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFJhdGluZyBhdmVyYWdlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICByYXRpbmdBdmVyYWdlOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBPYmplY3QgY29udGFpbmluZyBrZXktdmFsdWUgcGFpcnMgd2hlcmUgdGhlIGtleSBpcyB0aGUgcmF0aW5nIGFuZCB0aGUgdmFsdWUgaXMgdGhlIHRvdGFsIHN1bSBvZiB0aG9zZSByYXRpbmdzLlxuICAgICAqIE92ZXJyaWRlcyB0b3RhbFJhdGluZ3MgYW5kIHJhdGluZ0F2ZXJhZ2UuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICByYXRpbmdzOiBOdW1iZXJLZXk8bnVtYmVyPjtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRvIGRpc3BsYXkgdGhlIHBvcG92ZXIgdGhhdCBzaG93cyB0aGUgc3VtIG9mIGVhY2ggcmF0aW5nLiBSZXF1aXJlcyBbcmF0aW5nc10gb2JqZWN0LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheUFsbFJhdGluZ3MgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEljb24gY2xhc3MgZm9yIHJhdGVkIGljb24gZnJvbSBmdW5kYW1lbnRhbC1zdHlsZXMgbGliIGh0dHBzOi8vc2FwLmdpdGh1Yi5pby9mdW5kYW1lbnRhbC1zdHlsZXMvP3BhdGg9L2RvY3MvY29tcG9uZW50cy1pY29uLS1zaXplc1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmF0ZWRJY29uOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogSWNvbiBjbGFzcyBmb3IgdW5yYXRlZCBpY29uIGZyb20gZnVuZGFtZW50YWwtc3R5bGVzIGxpYiBodHRwczovL3NhcC5naXRodWIuaW8vZnVuZGFtZW50YWwtc3R5bGVzLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtaWNvbi0tc2l6ZXNcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHVucmF0ZWRJY29uOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBQb3NzaWJsZSB2YWx1ZXMgYXJlICd4cycsICdzbScsICdtZCcsICdsZycsICdjb3p5JywgJ2NvbXBhY3QnLCAnY29uZGVuc2VkJ1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2l6ZTogUmF0aW5nSW5kaWNhdG9yU2l6ZSA9ICdtZCc7XG5cbiAgICAvKipcbiAgICAgKiBUZXh0IGRpdmlkZXIgbGFiZWwgYmV0d2VlbiB2aWV3IHZhbHVlIGFuZCBpbmRpY2F0b3IgY291bnQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBkeW5hbWljVGV4dEluZGljYXRvciA9ICdvZic7XG5cbiAgICAvKipcbiAgICAgKiBGaXJlZCB3aGVuIHRoZSB1c2VyIHNldHMgb3IgY2hhbmdlcyB0aGVpciByYXRpbmcuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcmF0aW5nQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzaXplQ2xhc3MgPSB0aGlzLl9nZXRTaXplQ2xhc3ModGhpcy5zaXplKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9yYXRlczogeyBpZDogc3RyaW5nOyB2YWx1ZTogbnVtYmVyIH1bXSA9IFtdO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3JhdGluZ0l0ZW1zOiBSYXRpbmdWaWV3SXRlbVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JhdGluZ1VJRCA9IHJhdGluZ1VJRCsrO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5kaWNhdG9yQ2FwYWNpdHkgPSBJTkRJQ0FUT1JfREVGQVVMVF9DQVBBQ0lUWTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ZhbHVlID0gMDtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hpZGVEeW5hbWljVGV4dCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgdmlld1JhdGluZ1VJRCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmF0aW5nVUlEO1xuICAgIH1cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBpbmRpY2F0b3JDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5kaWNhdG9yQ2FwYWNpdHk7XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IHZpZXdWYWx1ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvbkNoYW5nZTogKHZhbHVlOiBudW1iZXIpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25Ub3VjaGVkID0gKCk6IHZvaWQgPT4ge307XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuX2NvbnZlcnRUb1ZhbHVlKCk7XG4gICAgICAgIHRoaXMuX3JhdGVzID0gdGhpcy5fZ2V0UmF0ZXMoKTtcbiAgICAgICAgdGhpcy5idWlsZENvbXBvbmVudENzc0NsYXNzKCk7XG4gICAgICAgIHRoaXMuX2dlbmVyYXRlUmF0aW5ncygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAnY2xhc3MnIGluIGNoYW5nZXMgfHxcbiAgICAgICAgICAgICdzaXplJyBpbiBjaGFuZ2VzIHx8XG4gICAgICAgICAgICAncmF0ZWRJY29uJyBpbiBjaGFuZ2VzIHx8XG4gICAgICAgICAgICAndW5yYXRlZEljb24nIGluIGNoYW5nZXMgfHxcbiAgICAgICAgICAgICdhbGxvd0hhbHZlcycgaW4gY2hhbmdlc1xuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgndmFsdWUnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5fY29udmVydFRvVmFsdWUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoJ2luZGljYXRvckNhcGFjaXR5JyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLl9yYXRlcyA9IHRoaXMuX2dldFJhdGVzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCdhbGxvd0hhbHZlcycgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLl9jb252ZXJ0VG9WYWx1ZSgpO1xuICAgICAgICAgICAgdGhpcy5fcmF0ZXMgPSB0aGlzLl9nZXRSYXRlcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCdyYXRpbmdzJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLl9nZW5lcmF0ZVJhdGluZ3MoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5fcGFyc2VWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBudW1iZXIpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgaXRlbTogeyBpZDogc3RyaW5nOyB2YWx1ZTogbnVtYmVyIH0pOiBudW1iZXIgfCBzdHJpbmcge1xuICAgICAgICByZXR1cm4gaXRlbS5pZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uU2VsZWN0KHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLnJhdGluZ0NoYW5nZWQuZW1pdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBlbGVtZW50UmVmKCk6IEVsZW1lbnRSZWY8UmF0aW5nSW5kaWNhdG9yQ29tcG9uZW50ICYgSFRNTEVsZW1lbnQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWY7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBDc3NDbGFzc0J1aWxkZXIgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uXG4gICAgICogZnVuY3Rpb24gbXVzdCByZXR1cm4gc2luZ2xlIHN0cmluZ1xuICAgICAqIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBvcmRlciB3aGljaCBjc3MgY2xhc3NlcyBhcmUgYXBwbGllZFxuICAgICAqL1xuICAgIEBhcHBseUNzc0NsYXNzXG4gICAgYnVpbGRDb21wb25lbnRDc3NDbGFzcygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHRoaXMuc2l6ZUNsYXNzID0gdGhpcy5fZ2V0U2l6ZUNsYXNzKHRoaXMuc2l6ZSk7XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIElORElDQVRPUl9QUkVGSVgsXG4gICAgICAgICAgICB0aGlzLnNpemVDbGFzcyxcbiAgICAgICAgICAgIHRoaXMuYWxsb3dIYWx2ZXMgPyBJTkRJQ0FUT1JfQ0xBU1NFUy5oYWx2ZXMgOiAnJyxcbiAgICAgICAgICAgICEhdGhpcy5yYXRlZEljb24gJiYgISF0aGlzLnVucmF0ZWRJY29uID8gSU5ESUNBVE9SX0NMQVNTRVMuaWNvbiA6ICcnLFxuICAgICAgICAgICAgdGhpcy5faGlkZUR5bmFtaWNUZXh0IHx8ICF0aGlzLl92YWx1ZSA/IElORElDQVRPUl9DTEFTU0VTLmhpZGVEeW5hbWljVGV4dCA6ICcnLFxuICAgICAgICAgICAgdGhpcy5jbGFzc1xuICAgICAgICBdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBHZW5lcmF0ZSByYXRpbmcgaXRlbXMgZm9yIHBvcG92ZXIgY29udGVudCBpZiByYXRpbmcgb2JqZWN0IHdhcyBkZWZpbmVkXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2VuZXJhdGVSYXRpbmdzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMucmF0aW5ncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJhdGluZ3MgPSBPYmplY3QuZW50cmllcyh0aGlzLnJhdGluZ3MpXG4gICAgICAgICAgICAuZmlsdGVyKChbcmF0ZSwgdm90ZV0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBfcmF0ZSA9ICtyYXRlO1xuICAgICAgICAgICAgICAgIHJldHVybiAhaXNOYU4oX3JhdGUpICYmICFpc05hTigrdm90ZSkgJiYgX3JhdGUgPiAwO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5tYXAoKFtyYXRlLCB2b3Rlc10pID0+ICh7IHJhdGU6ICtyYXRlLCB2b3RlcyB9KSk7XG4gICAgICAgIGlmIChyYXRpbmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgdG90YWxWb3RlcywgdG90YWxSYXRpbmcgfSA9IHJhdGluZ3MucmVkdWNlKFxuICAgICAgICAgICAgKHRvdGFsLCByYXRpbmcpID0+ICh7XG4gICAgICAgICAgICAgICAgdG90YWxWb3RlczogdG90YWwudG90YWxWb3RlcyArIHJhdGluZy52b3RlcyxcbiAgICAgICAgICAgICAgICB0b3RhbFJhdGluZzogdG90YWwudG90YWxSYXRpbmcgKyByYXRpbmcucmF0ZSAqIHJhdGluZy52b3Rlc1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB7IHRvdGFsVm90ZXM6IDAsIHRvdGFsUmF0aW5nOiAwIH1cbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9yYXRpbmdJdGVtcyA9IHJhdGluZ3M7XG4gICAgICAgIHRoaXMucmF0aW5nQXZlcmFnZSA9IHRvdGFsUmF0aW5nIC8gdG90YWxWb3RlcztcbiAgICAgICAgdGhpcy50b3RhbFJhdGluZ3MgPSB0b3RhbFZvdGVzO1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuX2NvbnZlcnRUb1ZhbHVlKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBnZXQgY29udmVydGVkIHZpZXdWYWx1ZSBmb3IgcmVuZGVyIGluIGNvbXBvbmVudCB0ZW1wbGF0ZSBmcm9tIG9yaWdpbmFsIHZhbHVlIGlmIGl0IHN0aWxsIGV4aXN0cywgb3IgcmF0aW5nQXZlcmFnZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9jb252ZXJ0VG9WYWx1ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyc2VWYWx1ZSh0aGlzLnZhbHVlIHx8IHRoaXMucmF0aW5nQXZlcmFnZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBnZXQgY29udmVydGVkIHZhbHVlIGZyb20gb3JpZ2luYWwgdG8gdmlldyB2YWx1ZSB3aXRoIGRlcGVuZHMgb24gaGFsdmVzXG4gICAgICogRm9yIGV4YW1wbGUsXG4gICAgICogIG9yaWdpbmFsIHZhbHVlIGlzIGVxdWFsIHRvIDIuMzQsIHlvdSB3aWxsIGdldCBhbmQgcmVuZGVyIDJcbiAgICAgKiAgb3JpZ2luYWwgdmFsdWUgaXMgZXF1YWwgdG8gMy43NCwgeW91IHdpbGwgZ2V0IGFuZCByZW5kZXIgNFxuICAgICAqL1xuICAgIHByaXZhdGUgX3BhcnNlVmFsdWUodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGlmICghdmFsdWUgfHwgdmFsdWUgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGludGVnZXIgPSBNYXRoLmZsb29yKHZhbHVlKTtcbiAgICAgICAgY29uc3QgZnJhY3Rpb25hbCA9IHZhbHVlICUgMTtcbiAgICAgICAgbGV0IHYgPSBpbnRlZ2VyO1xuXG4gICAgICAgIGlmICh0aGlzLmFsbG93SGFsdmVzICYmIGZyYWN0aW9uYWwgPiAwLjI1ICYmIGZyYWN0aW9uYWwgPD0gMC41KSB7XG4gICAgICAgICAgICB2ID0gaW50ZWdlciArIDAuNTtcbiAgICAgICAgfSBlbHNlIGlmIChmcmFjdGlvbmFsID4gMC41KSB7XG4gICAgICAgICAgICB2ID0gaW50ZWdlciArIDE7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gTWF0aC5taW4odGhpcy5pbmRpY2F0b3JDb3VudCwgdik7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBnZXQgcmF0aW5nIGljb25zIGFycmF5IHdpdGggdmFsdWUgYW5kIHVuaWMgaWRcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRSYXRlcygpOiB7IGlkOiBzdHJpbmc7IHZhbHVlOiBudW1iZXIgfVtdIHtcbiAgICAgICAgY29uc3Qgd2l0aEhhbHZlcyA9IHRoaXMuYWxsb3dIYWx2ZXMgPyAyIDogMTtcbiAgICAgICAgcmV0dXJuIEFycmF5KHRoaXMuaW5kaWNhdG9yQ291bnQgKiB3aXRoSGFsdmVzKVxuICAgICAgICAgICAgLmZpbGwoYHJhdGluZy0ke3RoaXMuX3JhdGluZ1VJRH1gKVxuICAgICAgICAgICAgLm1hcCgobmFtZSwgaW5kZXgpID0+ICh7XG4gICAgICAgICAgICAgICAgaWQ6IGAke25hbWV9LSR7aW5kZXggKyAxfWAsXG4gICAgICAgICAgICAgICAgdmFsdWU6IChpbmRleCArIDEpIC8gd2l0aEhhbHZlc1xuICAgICAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBnZXQgcmF0aW5nIGljb25zIGFycmF5IHdpdGggdmFsdWUgYW5kIHVuaWMgaWRcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRTaXplQ2xhc3Moc2l6ZTogUmF0aW5nSW5kaWNhdG9yU2l6ZSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHtJTkRJQ0FUT1JfUFJFRklYfS0tJHtzaXplIGluIFJhdGluZ0luZGljYXRvclNpemVFbnVtID8gc2l6ZSA6ICdtZCd9YDtcbiAgICB9XG59XG4iLCI8IS0tICByb2xlPVwiYXBwbGljYXRpb25cIiBpcyB1c2VkIGluIG9yZGVyIHRvIGxldCB1c2VyIHRvIGNoYW5nZSB2YWx1ZSB3aXRoIGxlZnQvcmlnaHQgYXJyb3dzIGluIEpBV1MsIHNpbmNlIEpBV1Mgb3Z2ZXJyaWRlcyB0aGVzZSBhY3Rpb25zIC0tPlxuPGRpdiBjbGFzcz1cImZkLXJhdGluZy1pbmRpY2F0b3JfX2NvbnRhaW5lclwiIHJvbGU9XCJhcHBsaWNhdGlvblwiIGFyaWEtcm9sZWRlc2NyaXB0aW9uPVwiUmF0aW5nIGluZGljYXRvclwiPlxuICAgIDwhLS0gWmVybyB2YWx1ZSBpZiB3ZSBkb24ndCBoYXZlIHByb3ZpZGVkIHZhbHVlIGZyb20gdXNlciwgYHJhdGluZ0F2ZXJhZ2VgIG9yIGByYXRpbmdzYCAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiemVyb1JhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8IS0tIEF2YWlsYWJsZSByYXRlIHZhbHVlcyAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByYXRlIG9mIF9yYXRlczsgaW5kZXggYXMgaTsgdHJhY2tCeTogdHJhY2tCeUZuXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpIHwgcmF0aW5nU3RhckxhYmVsOiBfcmF0ZXMubGVuZ3RoOmFsbG93SGFsdmVzXCJcbiAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtcmF0aW5nLWluZGljYXRvcl9faW5wdXRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFtpZF09XCJyYXRlLmlkXCJcbiAgICAgICAgICAgIG5hbWU9XCJyYXRpbmcte3sgdmlld1JhdGluZ1VJRCB9fVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwicmF0ZS52YWx1ZVwiXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJ2aWV3VmFsdWUgPT09IHJhdGUudmFsdWVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0KHJhdGUudmFsdWUpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiZmQtcmF0aW5nLWluZGljYXRvcl9fbGFiZWxcIiBbZm9yXT1cInJhdGUuaWRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgIDxpICpuZ0lmPVwicmF0ZWRJY29uXCIgY2xhc3M9XCJmZC1yYXRpbmctaW5kaWNhdG9yX19sYWJlbC1yYXRlZFwiIFtjbGFzc109XCJ1bnJhdGVkSWNvblwiPjwvaT5cbiAgICAgICAgICAgIDxpICpuZ0lmPVwidW5yYXRlZEljb25cIiBjbGFzcz1cImZkLXJhdGluZy1pbmRpY2F0b3JfX2xhYmVsLXVucmF0ZWRcIiBbY2xhc3NdPVwicmF0ZWRJY29uXCI+PC9pPlxuICAgICAgICA8L2xhYmVsPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG48IS0tIFBvcG92ZXIgaWYgZGlzcGxheUFsbFJhdGluZ3MgaXMgdHJ1ZSBhbmQgd2UgaGF2ZSByYXRpbmdzIG9iamVjdCAtLT5cbjxzcGFuXG4gICAgW2ZkUG9wb3ZlclRyaWdnZXJdPVwiYWxsUmF0aW5nQ29udGVudFwiXG4gICAgKm5nSWY9XCJkaXNwbGF5QWxsUmF0aW5ncyAmJiBfcmF0aW5nSXRlbXM/Lmxlbmd0aDsgZWxzZSBkeW5hbWljVGV4dFwiXG4gICAgY2xhc3M9XCJmZC1yYXRpbmctaW5kaWNhdG9yX19keW5hbWljLXRleHRcIlxuPlxuICAgICg8c3BhbiBhcmVhLWxhYmVsPVwiVG90YWwgcmFpdGluZ1wiIGZkLWxpbms+e3sgdG90YWxSYXRpbmdzIH19PC9zcGFuXG4gICAgPilcbjwvc3Bhbj5cbjxmZC1wb3BvdmVyXG4gICAgI2FsbFJhdGluZ0NvbnRlbnRcbiAgICBbdHJpZ2dlcnNdPVwiWydtb3VzZWVudGVyJywgJ21vdXNlbGVhdmUnXVwiXG4gICAgW25vQXJyb3ddPVwiZmFsc2VcIlxuICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgYWRkaXRpb25hbEJvZHlDbGFzcz1cImZkLXJhdGluZy1pbmRpY2F0b3JfX3BvcG92ZXJcIlxuPlxuICAgIDxkaXYgY2xhc3M9XCJmZC1yYXRpbmctaW5kaWNhdG9yX19zdW0tcm93XCIgW2NsYXNzXT1cInNpemVDbGFzc1wiICpuZ0Zvcj1cImxldCByYXRpbmcgb2YgX3JhdGluZ0l0ZW1zXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmZC1yYXRpbmctaW5kaWNhdG9yX19jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJhdGUgb2YgX3JhdGVzOyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmQtcmF0aW5nLWluZGljYXRvcl9faW5wdXQtY2hlY2tlZF09XCJyYXRlLnZhbHVlID09PSByYXRpbmcucmF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtcmF0aW5nLWluZGljYXRvcl9faW5wdXRcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZmQtcmF0aW5nLWluZGljYXRvcl9fbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJyYXRlZEljb25cIiBjbGFzcz1cImZkLXJhdGluZy1pbmRpY2F0b3JfX2xhYmVsLXJhdGVkXCIgW2NsYXNzXT1cInVucmF0ZWRJY29uXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cInVucmF0ZWRJY29uXCIgY2xhc3M9XCJmZC1yYXRpbmctaW5kaWNhdG9yX19sYWJlbC11bnJhdGVkXCIgW2NsYXNzXT1cInJhdGVkSWNvblwiPjwvaT5cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICAoe3sgcmF0aW5nLnZvdGVzIH19KVxuICAgIDwvZGl2PlxuPC9mZC1wb3BvdmVyPlxuXG48bmctdGVtcGxhdGUgI2R5bmFtaWNUZXh0PlxuICAgIDxzcGFuICpuZ0lmPVwidG90YWxSYXRpbmdzXCIgY2xhc3M9XCJmZC1yYXRpbmctaW5kaWNhdG9yX19keW5hbWljLXRleHRcIj4oe3sgdG90YWxSYXRpbmdzIH19KTwvc3Bhbj5cbiAgICA8c3BhbiAqbmdJZj1cIiF0b3RhbFJhdGluZ3NcIiBjbGFzcz1cImZkLXJhdGluZy1pbmRpY2F0b3JfX2R5bmFtaWMtdGV4dFwiXG4gICAgICAgID4oe3sgdmlld1ZhbHVlIH19IHt7IGR5bmFtaWNUZXh0SW5kaWNhdG9yIH19IHt7IGluZGljYXRvckNvdW50IH19KTwvc3BhblxuICAgID5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3plcm9SYXRlIGxldC1oYWx2ZXM9XCJoYWx2ZXNcIj5cbiAgICA8aW5wdXRcbiAgICAgICAgYXJpYS1sYWJlbD1cIlJlc2V0IHRvIHplcm9cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgY2xhc3M9XCJmZC1yYXRpbmctaW5kaWNhdG9yX19pbnB1dCBmZC1yYXRpbmctaW5kaWNhdG9yX19pbnB1dC0temVyby1yYXRpbmdcIlxuICAgICAgICAoY2xpY2spPVwib25TZWxlY3QoMClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBuYW1lPVwicmF0aW5nLXt7IHZpZXdSYXRpbmdVSUQgfX17eyBoYWx2ZXMgPyAnLWhhbHZlcycgOiAnJyB9fVwiXG4gICAgICAgIFtjaGVja2VkXT1cInZpZXdWYWx1ZSA9PT0gMFwiXG4gICAgLz5cbiAgICA8bGFiZWwgY2xhc3M9XCJmZC1yYXRpbmctaW5kaWNhdG9yX19sYWJlbCBmZC1yYXRpbmctaW5kaWNhdG9yX19sYWJlbC0temVyby1yYXRpbmdcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2xhYmVsPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
318
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0aW5nLWluZGljYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9yYXRpbmctaW5kaWNhdG9yL2NvbXBvbmVudHMvcmF0aW5nLWluZGljYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9yYXRpbmctaW5kaWNhdG9yL2NvbXBvbmVudHMvcmF0aW5nLWluZGljYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFHVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixVQUFVLEVBQ1YsdUJBQXVCLEVBRXZCLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUNILDBCQUEwQixFQUMxQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBRWpCLHVCQUF1QixFQUMxQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQW1CLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTVFLE9BQU8sRUFBRSx1QkFBdUIsRUFBbUIsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7QUFFdEYsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBMEJsQixNQUFNLE9BQU8sd0JBQXdCO0lBMkNqQzs7T0FFRztJQUNILElBQ0ksaUJBQWlCLENBQUMsS0FBYTtRQUMvQixNQUFNLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsMEJBQTBCLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxHQUFHLENB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cUIsaUJBR2hCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUseUJBQXlCLENBQUM7NEJBQ3ZELEtBQUssRUFBRSxJQUFJO3lCQUNkO3dCQUNELHVCQUF1QiwwQkFBMEI7cUJBQ3BEO2lJQU9ELEtBQUs7c0JBREosS0FBSztnQkFLTixJQUFJO3NCQURILEtBQUs7Z0JBUU4sU0FBUztzQkFGUixLQUFLOztzQkFDTCxXQUFXO3VCQUFDLGlCQUFpQjtnQkFROUIsY0FBYztzQkFGYixLQUFLOztzQkFDTCxXQUFXO3VCQUFDLGlCQUFpQjtnQkFXOUIsUUFBUTtzQkFIUCxLQUFLOztzQkFDTCxXQUFXO3VCQUFDLG1CQUFtQjs7c0JBQy9CLFdBQVc7dUJBQUMsb0JBQW9CO2dCQVNqQyxXQUFXO3NCQUZWLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsdUJBQXVCO2dCQU9oQyxpQkFBaUI7c0JBRHBCLEtBQUs7Z0JBVU4sV0FBVztzQkFEVixLQUFLO2dCQU9OLEtBQUs7c0JBREosS0FBSztnQkFPTixZQUFZO3NCQURYLEtBQUs7Z0JBT04sYUFBYTtzQkFEWixLQUFLO2dCQVFOLE9BQU87c0JBRE4sS0FBSztnQkFPTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBT04sU0FBUztzQkFEUixLQUFLO2dCQU1OLFdBQVc7c0JBRFYsS0FBSztnQkFPTixJQUFJO3NCQURILEtBQUs7Z0JBT04sb0JBQW9CO3NCQURuQixLQUFLO2dCQU9OLGFBQWE7c0JBRFosTUFBTTtnQkFrSFAsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgT25Jbml0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBIb3N0QmluZGluZyxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBmb3J3YXJkUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge1xuICAgIElORElDQVRPUl9ERUZBVUxUX0NBUEFDSVRZLFxuICAgIElORElDQVRPUl9QUkVGSVgsXG4gICAgSU5ESUNBVE9SX0NMQVNTRVMsXG4gICAgUmF0aW5nSW5kaWNhdG9yU2l6ZSxcbiAgICBSYXRpbmdJbmRpY2F0b3JTaXplRW51bVxufSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQ3NzQ2xhc3NCdWlsZGVyLCBhcHBseUNzc0NsYXNzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyByZWdpc3RlckZvcm1JdGVtQ29udHJvbCwgRm9ybUl0ZW1Db250cm9sIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Zvcm0nO1xuXG5sZXQgcmF0aW5nVUlEID0gMDtcblxuaW50ZXJmYWNlIE51bWJlcktleTxUPiB7XG4gICAgW2tleTogbnVtYmVyXTogVDtcbn1cblxuaW50ZXJmYWNlIFJhdGluZ1ZpZXdJdGVtIHtcbiAgICByYXRlOiBudW1iZXI7XG4gICAgdm90ZXM6IG51bWJlcjtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1yYXRpbmctaW5kaWNhdG9yJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmF0aW5nLWluZGljYXRvci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcmF0aW5nLWluZGljYXRvci5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUmF0aW5nSW5kaWNhdG9yQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHJlZ2lzdGVyRm9ybUl0ZW1Db250cm9sKFJhdGluZ0luZGljYXRvckNvbXBvbmVudClcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFJhdGluZ0luZGljYXRvckNvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIENzc0NsYXNzQnVpbGRlciwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1JdGVtQ29udHJvbFxue1xuICAgIC8qKiBVc2VyJ3MgY3VzdG9tIGNsYXNzZXMgKi9cbiAgICBASW5wdXQoKVxuICAgIGNsYXNzOiBzdHJpbmc7XG5cbiAgICAvKiogU2V0cyBbbmFtZV0gYXR0cmlidXRlIG9mIGlucHV0LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbmFtZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYXJpYS1sYWJlbCBhdHRyaWJ1dGUgdG8gdGhlIGVsZW1lbnQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1sYWJlbCcpXG4gICAgYXJpYUxhYmVsOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYXJpYS1sYWJlbGxlZGJ5IGF0dHJpYnV0ZSB0byB0aGUgZWxlbWVudC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWxhYmVsJylcbiAgICBhcmlhTGFiZWxsZWRCeTogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGFyaWEtZGlzYWJsZWQgYXR0cmlidXRlIHRvIHRoZSBlbGVtZW50LlxuICAgICAqIFNldHMgdGhlIGlzLWRpc2FibGVkIGNsYXNzIHRvIHRoZSBlbGVtZW50LlxuICAgICAqIFdoZXRoZXIgdGhlIHJhdGluZyBpbmRpY2F0b3IgaXMgZGlzYWJsZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaXMtZGlzYWJsZWQnKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWRpc2FibGVkJylcbiAgICBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgaXMtZGlzcGxheS1tb2RlIGNsYXNzIHRvIHRoZSBlbGVtZW50LlxuICAgICAqIFdoZXRoZXIgdGhlIHJhdGluZyBpbmRpY2F0b3IgaXMgaW4gZGlzcGxheU1vZGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaXMtZGlzcGxheS1tb2RlJylcbiAgICBkaXNwbGF5TW9kZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogTnVtYmVyIG9mIHJhdGVzIHRvIGRpc3BsYXlcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBpbmRpY2F0b3JDYXBhY2l0eSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlLCBJTkRJQ0FUT1JfREVGQVVMVF9DQVBBQ0lUWSk7XG4gICAgICAgIHRoaXMuX2luZGljYXRvckNhcGFjaXR5ID0gdmFsIDwgMSA/IElORElDQVRPUl9ERUZBVUxUX0NBUEFDSVRZIDogdmFsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRvIGRpc3BsYXkgaGFsZiB2YWx1ZXMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhbGxvd0hhbHZlcyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogVXNlcidzIHZhbHVlIG51bWJlciBvZiByYXRpbmdzLiBJZiBwcm92aWRlZCwgT3ZlcnJpZGVzIHJhdGluZ0F2ZXJhZ2UuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB2YWx1ZSA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBUb3RhbCBudW1iZXIgb2YgcmF0aW5ncy4gSWYgcHJvdmlkZWQsIHdpbGwgZGlzcGxheSB0ZXh0IHNob3dpbmcgdGhlIHRvdGFsIG51bWJlciBvZiByYXRpbmdzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdG90YWxSYXRpbmdzOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBSYXRpbmcgYXZlcmFnZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmF0aW5nQXZlcmFnZTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogT2JqZWN0IGNvbnRhaW5pbmcga2V5LXZhbHVlIHBhaXJzIHdoZXJlIHRoZSBrZXkgaXMgdGhlIHJhdGluZyBhbmQgdGhlIHZhbHVlIGlzIHRoZSB0b3RhbCBzdW0gb2YgdGhvc2UgcmF0aW5ncy5cbiAgICAgKiBPdmVycmlkZXMgdG90YWxSYXRpbmdzIGFuZCByYXRpbmdBdmVyYWdlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmF0aW5nczogTnVtYmVyS2V5PG51bWJlcj47XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0byBkaXNwbGF5IHRoZSBwb3BvdmVyIHRoYXQgc2hvd3MgdGhlIHN1bSBvZiBlYWNoIHJhdGluZy4gUmVxdWlyZXMgW3JhdGluZ3NdIG9iamVjdC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlBbGxSYXRpbmdzID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBJY29uIGNsYXNzIGZvciByYXRlZCBpY29uIGZyb20gZnVuZGFtZW50YWwtc3R5bGVzIGxpYiBodHRwczovL3NhcC5naXRodWIuaW8vZnVuZGFtZW50YWwtc3R5bGVzLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtaWNvbi0tc2l6ZXNcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHJhdGVkSWNvbjogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEljb24gY2xhc3MgZm9yIHVucmF0ZWQgaWNvbiBmcm9tIGZ1bmRhbWVudGFsLXN0eWxlcyBsaWIgaHR0cHM6Ly9zYXAuZ2l0aHViLmlvL2Z1bmRhbWVudGFsLXN0eWxlcy8/cGF0aD0vZG9jcy9jb21wb25lbnRzLWljb24tLXNpemVzXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB1bnJhdGVkSWNvbjogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogUG9zc2libGUgdmFsdWVzIGFyZSAneHMnLCAnc20nLCAnbWQnLCAnbGcnLCAnY296eScsICdjb21wYWN0JywgJ2NvbmRlbnNlZCdcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNpemU6IFJhdGluZ0luZGljYXRvclNpemUgPSAnbWQnO1xuXG4gICAgLyoqXG4gICAgICogVGV4dCBkaXZpZGVyIGxhYmVsIGJldHdlZW4gdmlldyB2YWx1ZSBhbmQgaW5kaWNhdG9yIGNvdW50LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZHluYW1pY1RleHRJbmRpY2F0b3IgPSAnb2YnO1xuXG4gICAgLyoqXG4gICAgICogRmlyZWQgd2hlbiB0aGUgdXNlciBzZXRzIG9yIGNoYW5nZXMgdGhlaXIgcmF0aW5nLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJhdGluZ0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2l6ZUNsYXNzID0gdGhpcy5fZ2V0U2l6ZUNsYXNzKHRoaXMuc2l6ZSk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcmF0ZXM6IHsgaWQ6IHN0cmluZzsgdmFsdWU6IG51bWJlciB9W10gPSBbXTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9yYXRpbmdJdGVtczogUmF0aW5nVmlld0l0ZW1bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yYXRpbmdVSUQgPSByYXRpbmdVSUQrKztcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luZGljYXRvckNhcGFjaXR5ID0gSU5ESUNBVE9SX0RFRkFVTFRfQ0FQQUNJVFk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF92YWx1ZSA9IDA7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oaWRlRHluYW1pY1RleHQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCB2aWV3UmF0aW5nVUlEKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yYXRpbmdVSUQ7XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGluZGljYXRvckNvdW50KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbmRpY2F0b3JDYXBhY2l0eTtcbiAgICB9XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgdmlld1ZhbHVlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uQ2hhbmdlOiAodmFsdWU6IG51bWJlcikgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5fY29udmVydFRvVmFsdWUoKTtcbiAgICAgICAgdGhpcy5fcmF0ZXMgPSB0aGlzLl9nZXRSYXRlcygpO1xuICAgICAgICB0aGlzLmJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTtcbiAgICAgICAgdGhpcy5fZ2VuZXJhdGVSYXRpbmdzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICdjbGFzcycgaW4gY2hhbmdlcyB8fFxuICAgICAgICAgICAgJ3NpemUnIGluIGNoYW5nZXMgfHxcbiAgICAgICAgICAgICdyYXRlZEljb24nIGluIGNoYW5nZXMgfHxcbiAgICAgICAgICAgICd1bnJhdGVkSWNvbicgaW4gY2hhbmdlcyB8fFxuICAgICAgICAgICAgJ2FsbG93SGFsdmVzJyBpbiBjaGFuZ2VzXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5idWlsZENvbXBvbmVudENzc0NsYXNzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCd2YWx1ZScgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLl9jb252ZXJ0VG9WYWx1ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgnaW5kaWNhdG9yQ2FwYWNpdHknIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX3JhdGVzID0gdGhpcy5fZ2V0UmF0ZXMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoJ2FsbG93SGFsdmVzJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuX2NvbnZlcnRUb1ZhbHVlKCk7XG4gICAgICAgICAgICB0aGlzLl9yYXRlcyA9IHRoaXMuX2dldFJhdGVzKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoJ3JhdGluZ3MnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2dlbmVyYXRlUmF0aW5ncygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLl9wYXJzZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IG51bWJlcikgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHRyYWNrQnlGbihpbmRleDogbnVtYmVyLCBpdGVtOiB7IGlkOiBzdHJpbmc7IHZhbHVlOiBudW1iZXIgfSk6IG51bWJlciB8IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBpdGVtLmlkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25TZWxlY3QodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIHRoaXMucmF0aW5nQ2hhbmdlZC5lbWl0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIENzc0NsYXNzQnVpbGRlciBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb25cbiAgICAgKiBmdW5jdGlvbiBtdXN0IHJldHVybiBzaW5nbGUgc3RyaW5nXG4gICAgICogZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIG9yZGVyIHdoaWNoIGNzcyBjbGFzc2VzIGFyZSBhcHBsaWVkXG4gICAgICovXG4gICAgQGFwcGx5Q3NzQ2xhc3NcbiAgICBidWlsZENvbXBvbmVudENzc0NsYXNzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgdGhpcy5zaXplQ2xhc3MgPSB0aGlzLl9nZXRTaXplQ2xhc3ModGhpcy5zaXplKTtcblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgSU5ESUNBVE9SX1BSRUZJWCxcbiAgICAgICAgICAgIHRoaXMuc2l6ZUNsYXNzLFxuICAgICAgICAgICAgdGhpcy5hbGxvd0hhbHZlcyA/IElORElDQVRPUl9DTEFTU0VTLmhhbHZlcyA6ICcnLFxuICAgICAgICAgICAgISF0aGlzLnJhdGVkSWNvbiAmJiAhIXRoaXMudW5yYXRlZEljb24gPyBJTkRJQ0FUT1JfQ0xBU1NFUy5pY29uIDogJycsXG4gICAgICAgICAgICB0aGlzLl9oaWRlRHluYW1pY1RleHQgfHwgIXRoaXMuX3ZhbHVlID8gSU5ESUNBVE9SX0NMQVNTRVMuaGlkZUR5bmFtaWNUZXh0IDogJycsXG4gICAgICAgICAgICB0aGlzLmNsYXNzXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEdlbmVyYXRlIHJhdGluZyBpdGVtcyBmb3IgcG9wb3ZlciBjb250ZW50IGlmIHJhdGluZyBvYmplY3Qgd2FzIGRlZmluZWRcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZW5lcmF0ZVJhdGluZ3MoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5yYXRpbmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmF0aW5ncyA9IE9iamVjdC5lbnRyaWVzKHRoaXMucmF0aW5ncylcbiAgICAgICAgICAgIC5maWx0ZXIoKFtyYXRlLCB2b3RlXSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IF9yYXRlID0gK3JhdGU7XG4gICAgICAgICAgICAgICAgcmV0dXJuICFpc05hTihfcmF0ZSkgJiYgIWlzTmFOKCt2b3RlKSAmJiBfcmF0ZSA+IDA7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLm1hcCgoW3JhdGUsIHZvdGVzXSkgPT4gKHsgcmF0ZTogK3JhdGUsIHZvdGVzIH0pKTtcbiAgICAgICAgaWYgKHJhdGluZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyB0b3RhbFZvdGVzLCB0b3RhbFJhdGluZyB9ID0gcmF0aW5ncy5yZWR1Y2UoXG4gICAgICAgICAgICAodG90YWwsIHJhdGluZykgPT4gKHtcbiAgICAgICAgICAgICAgICB0b3RhbFZvdGVzOiB0b3RhbC50b3RhbFZvdGVzICsgcmF0aW5nLnZvdGVzLFxuICAgICAgICAgICAgICAgIHRvdGFsUmF0aW5nOiB0b3RhbC50b3RhbFJhdGluZyArIHJhdGluZy5yYXRlICogcmF0aW5nLnZvdGVzXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHsgdG90YWxWb3RlczogMCwgdG90YWxSYXRpbmc6IDAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX3JhdGluZ0l0ZW1zID0gcmF0aW5ncztcbiAgICAgICAgdGhpcy5yYXRpbmdBdmVyYWdlID0gdG90YWxSYXRpbmcgLyB0b3RhbFZvdGVzO1xuICAgICAgICB0aGlzLnRvdGFsUmF0aW5ncyA9IHRvdGFsVm90ZXM7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5fY29udmVydFRvVmFsdWUoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIGdldCBjb252ZXJ0ZWQgdmlld1ZhbHVlIGZvciByZW5kZXIgaW4gY29tcG9uZW50IHRlbXBsYXRlIGZyb20gb3JpZ2luYWwgdmFsdWUgaWYgaXQgc3RpbGwgZXhpc3RzLCBvciByYXRpbmdBdmVyYWdlLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2NvbnZlcnRUb1ZhbHVlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYXJzZVZhbHVlKHRoaXMudmFsdWUgfHwgdGhpcy5yYXRpbmdBdmVyYWdlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIGdldCBjb252ZXJ0ZWQgdmFsdWUgZnJvbSBvcmlnaW5hbCB0byB2aWV3IHZhbHVlIHdpdGggZGVwZW5kcyBvbiBoYWx2ZXNcbiAgICAgKiBGb3IgZXhhbXBsZSxcbiAgICAgKiAgb3JpZ2luYWwgdmFsdWUgaXMgZXF1YWwgdG8gMi4zNCwgeW91IHdpbGwgZ2V0IGFuZCByZW5kZXIgMlxuICAgICAqICBvcmlnaW5hbCB2YWx1ZSBpcyBlcXVhbCB0byAzLjc0LCB5b3Ugd2lsbCBnZXQgYW5kIHJlbmRlciA0XG4gICAgICovXG4gICAgcHJpdmF0ZSBfcGFyc2VWYWx1ZSh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKCF2YWx1ZSB8fCB2YWx1ZSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW50ZWdlciA9IE1hdGguZmxvb3IodmFsdWUpO1xuICAgICAgICBjb25zdCBmcmFjdGlvbmFsID0gdmFsdWUgJSAxO1xuICAgICAgICBsZXQgdiA9IGludGVnZXI7XG5cbiAgICAgICAgaWYgKHRoaXMuYWxsb3dIYWx2ZXMgJiYgZnJhY3Rpb25hbCA+IDAuMjUgJiYgZnJhY3Rpb25hbCA8PSAwLjUpIHtcbiAgICAgICAgICAgIHYgPSBpbnRlZ2VyICsgMC41O1xuICAgICAgICB9IGVsc2UgaWYgKGZyYWN0aW9uYWwgPiAwLjUpIHtcbiAgICAgICAgICAgIHYgPSBpbnRlZ2VyICsgMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBNYXRoLm1pbih0aGlzLmluZGljYXRvckNvdW50LCB2KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIGdldCByYXRpbmcgaWNvbnMgYXJyYXkgd2l0aCB2YWx1ZSBhbmQgdW5pYyBpZFxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldFJhdGVzKCk6IHsgaWQ6IHN0cmluZzsgdmFsdWU6IG51bWJlciB9W10ge1xuICAgICAgICBjb25zdCB3aXRoSGFsdmVzID0gdGhpcy5hbGxvd0hhbHZlcyA/IDIgOiAxO1xuICAgICAgICByZXR1cm4gQXJyYXkodGhpcy5pbmRpY2F0b3JDb3VudCAqIHdpdGhIYWx2ZXMpXG4gICAgICAgICAgICAuZmlsbChgcmF0aW5nLSR7dGhpcy5fcmF0aW5nVUlEfWApXG4gICAgICAgICAgICAubWFwKChuYW1lLCBpbmRleCkgPT4gKHtcbiAgICAgICAgICAgICAgICBpZDogYCR7bmFtZX0tJHtpbmRleCArIDF9YCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogKGluZGV4ICsgMSkgLyB3aXRoSGFsdmVzXG4gICAgICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIGdldCByYXRpbmcgaWNvbnMgYXJyYXkgd2l0aCB2YWx1ZSBhbmQgdW5pYyBpZFxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldFNpemVDbGFzcyhzaXplOiBSYXRpbmdJbmRpY2F0b3JTaXplKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke0lORElDQVRPUl9QUkVGSVh9LS0ke3NpemUgaW4gUmF0aW5nSW5kaWNhdG9yU2l6ZUVudW0gPyBzaXplIDogJ21kJ31gO1xuICAgIH1cbn1cbiIsIjwhLS0gIHJvbGU9XCJhcHBsaWNhdGlvblwiIGlzIHVzZWQgaW4gb3JkZXIgdG8gbGV0IHVzZXIgdG8gY2hhbmdlIHZhbHVlIHdpdGggbGVmdC9yaWdodCBhcnJvd3MgaW4gSkFXUywgc2luY2UgSkFXUyBvdnZlcnJpZGVzIHRoZXNlIGFjdGlvbnMgLS0+XG48ZGl2IGNsYXNzPVwiZmQtcmF0aW5nLWluZGljYXRvcl9fY29udGFpbmVyXCIgcm9sZT1cImFwcGxpY2F0aW9uXCIgYXJpYS1yb2xlZGVzY3JpcHRpb249XCJSYXRpbmcgaW5kaWNhdG9yXCI+XG4gICAgPCEtLSBaZXJvIHZhbHVlIGlmIHdlIGRvbid0IGhhdmUgcHJvdmlkZWQgdmFsdWUgZnJvbSB1c2VyLCBgcmF0aW5nQXZlcmFnZWAgb3IgYHJhdGluZ3NgIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ6ZXJvUmF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwhLS0gQXZhaWxhYmxlIHJhdGUgdmFsdWVzIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJhdGUgb2YgX3JhdGVzOyBpbmRleCBhcyBpOyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImkgfCByYXRpbmdTdGFyTGFiZWw6IF9yYXRlcy5sZW5ndGg6YWxsb3dIYWx2ZXNcIlxuICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgY2xhc3M9XCJmZC1yYXRpbmctaW5kaWNhdG9yX19pbnB1dFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2lkXT1cInJhdGUuaWRcIlxuICAgICAgICAgICAgbmFtZT1cInJhdGluZy17eyB2aWV3UmF0aW5nVUlEIH19XCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJyYXRlLnZhbHVlXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cInZpZXdWYWx1ZSA9PT0gcmF0ZS52YWx1ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3QocmF0ZS52YWx1ZSlcIlxuICAgICAgICAvPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJmZC1yYXRpbmctaW5kaWNhdG9yX19sYWJlbFwiIFtmb3JdPVwicmF0ZS5pZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPGkgKm5nSWY9XCJyYXRlZEljb25cIiBjbGFzcz1cImZkLXJhdGluZy1pbmRpY2F0b3JfX2xhYmVsLXJhdGVkXCIgW2NsYXNzXT1cInVucmF0ZWRJY29uXCI+PC9pPlxuICAgICAgICAgICAgPGkgKm5nSWY9XCJ1bnJhdGVkSWNvblwiIGNsYXNzPVwiZmQtcmF0aW5nLWluZGljYXRvcl9fbGFiZWwtdW5yYXRlZFwiIFtjbGFzc109XCJyYXRlZEljb25cIj48L2k+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjwhLS0gUG9wb3ZlciBpZiBkaXNwbGF5QWxsUmF0aW5ncyBpcyB0cnVlIGFuZCB3ZSBoYXZlIHJhdGluZ3Mgb2JqZWN0IC0tPlxuPHNwYW5cbiAgICBbZmRQb3BvdmVyVHJpZ2dlcl09XCJhbGxSYXRpbmdDb250ZW50XCJcbiAgICAqbmdJZj1cImRpc3BsYXlBbGxSYXRpbmdzICYmIF9yYXRpbmdJdGVtcz8ubGVuZ3RoOyBlbHNlIGR5bmFtaWNUZXh0XCJcbiAgICBjbGFzcz1cImZkLXJhdGluZy1pbmRpY2F0b3JfX2R5bmFtaWMtdGV4dFwiXG4+XG4gICAgKDxzcGFuIGFyZWEtbGFiZWw9XCJUb3RhbCByYWl0aW5nXCIgZmQtbGluaz57eyB0b3RhbFJhdGluZ3MgfX08L3NwYW5cbiAgICA+KVxuPC9zcGFuPlxuPGZkLXBvcG92ZXJcbiAgICAjYWxsUmF0aW5nQ29udGVudFxuICAgIFt0cmlnZ2Vyc109XCJbJ21vdXNlZW50ZXInLCAnbW91c2VsZWF2ZSddXCJcbiAgICBbbm9BcnJvd109XCJmYWxzZVwiXG4gICAgcGxhY2VtZW50PVwidG9wXCJcbiAgICBhZGRpdGlvbmFsQm9keUNsYXNzPVwiZmQtcmF0aW5nLWluZGljYXRvcl9fcG9wb3ZlclwiXG4+XG4gICAgPGRpdiBjbGFzcz1cImZkLXJhdGluZy1pbmRpY2F0b3JfX3N1bS1yb3dcIiBbY2xhc3NdPVwic2l6ZUNsYXNzXCIgKm5nRm9yPVwibGV0IHJhdGluZyBvZiBfcmF0aW5nSXRlbXNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZkLXJhdGluZy1pbmRpY2F0b3JfX2NvbnRhaW5lclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcmF0ZSBvZiBfcmF0ZXM7IHRyYWNrQnk6IHRyYWNrQnlGblwiPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mZC1yYXRpbmctaW5kaWNhdG9yX19pbnB1dC1jaGVja2VkXT1cInJhdGUudmFsdWUgPT09IHJhdGluZy5yYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1yYXRpbmctaW5kaWNhdG9yX19pbnB1dFwiXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmZC1yYXRpbmctaW5kaWNhdG9yX19sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cInJhdGVkSWNvblwiIGNsYXNzPVwiZmQtcmF0aW5nLWluZGljYXRvcl9fbGFiZWwtcmF0ZWRcIiBbY2xhc3NdPVwidW5yYXRlZEljb25cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwidW5yYXRlZEljb25cIiBjbGFzcz1cImZkLXJhdGluZy1pbmRpY2F0b3JfX2xhYmVsLXVucmF0ZWRcIiBbY2xhc3NdPVwicmF0ZWRJY29uXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgICh7eyByYXRpbmcudm90ZXMgfX0pXG4gICAgPC9kaXY+XG48L2ZkLXBvcG92ZXI+XG5cbjxuZy10ZW1wbGF0ZSAjZHluYW1pY1RleHQ+XG4gICAgPHNwYW4gKm5nSWY9XCJ0b3RhbFJhdGluZ3NcIiBjbGFzcz1cImZkLXJhdGluZy1pbmRpY2F0b3JfX2R5bmFtaWMtdGV4dFwiPih7eyB0b3RhbFJhdGluZ3MgfX0pPC9zcGFuPlxuICAgIDxzcGFuICpuZ0lmPVwiIXRvdGFsUmF0aW5nc1wiIGNsYXNzPVwiZmQtcmF0aW5nLWluZGljYXRvcl9fZHluYW1pYy10ZXh0XCJcbiAgICAgICAgPih7eyB2aWV3VmFsdWUgfX0ge3sgZHluYW1pY1RleHRJbmRpY2F0b3IgfX0ge3sgaW5kaWNhdG9yQ291bnQgfX0pPC9zcGFuXG4gICAgPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjemVyb1JhdGUgbGV0LWhhbHZlcz1cImhhbHZlc1wiPlxuICAgIDxpbnB1dFxuICAgICAgICBhcmlhLWxhYmVsPVwiUmVzZXQgdG8gemVyb1wiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICBjbGFzcz1cImZkLXJhdGluZy1pbmRpY2F0b3JfX2lucHV0IGZkLXJhdGluZy1pbmRpY2F0b3JfX2lucHV0LS16ZXJvLXJhdGluZ1wiXG4gICAgICAgIChjbGljayk9XCJvblNlbGVjdCgwKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIG5hbWU9XCJyYXRpbmcte3sgdmlld1JhdGluZ1VJRCB9fXt7IGhhbHZlcyA/ICctaGFsdmVzJyA6ICcnIH19XCJcbiAgICAgICAgW2NoZWNrZWRdPVwidmlld1ZhbHVlID09PSAwXCJcbiAgICAvPlxuICAgIDxsYWJlbCBjbGFzcz1cImZkLXJhdGluZy1pbmRpY2F0b3JfX2xhYmVsIGZkLXJhdGluZy1pbmRpY2F0b3JfX2xhYmVsLS16ZXJvLXJhdGluZ1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvbGFiZWw+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -89,9 +89,9 @@ export class ResizableCardItemComponent {
89
89
  return this._cardMiniContentRowSpan ?? 0;
90
90
  }
91
91
  /** @hidden */
92
- constructor(_cd, _elementRef, _rtlService) {
92
+ constructor(_cd, elementRef, _rtlService) {
93
93
  this._cd = _cd;
94
- this._elementRef = _elementRef;
94
+ this.elementRef = elementRef;
95
95
  this._rtlService = _rtlService;
96
96
  /** set uinque id for the card */
97
97
  this.itemId = `fd-card-item-${cardUniqueId++}`;
@@ -258,7 +258,7 @@ export class ResizableCardItemComponent {
258
258
  }
259
259
  /** Sets focus on the element */
260
260
  focus() {
261
- const header = this._elementRef.nativeElement.querySelector('.fd-card__header');
261
+ const header = this.elementRef.nativeElement.querySelector('.fd-card__header');
262
262
  header?.focus();
263
263
  }
264
264
  /** Shows resize icon */
@@ -315,10 +315,6 @@ export class ResizableCardItemComponent {
315
315
  this.resized.emit(this.getResizedEventObject());
316
316
  }
317
317
  }
318
- /** @hidden */
319
- elementRef() {
320
- return this._elementRef;
321
- }
322
318
  /** Returns ResizedEvent object to emit. */
323
319
  getResizedEventObject() {
324
320
  const newCardHeightRowSpan = Math.floor(this.cardHeight / verticalResizeStep);
@@ -620,4 +616,4 @@ export class ResizedEvent {
620
616
  this.newCardHeightRowSpan = newCardHeightRowSpan;
621
617
  }
622
618
  }
623
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLWNhcmQtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9yZXNpemFibGUtY2FyZC1sYXlvdXQvcmVzaXphYmxlLWNhcmQtbGF5b3V0L3Jlc2l6YWJsZS1jYXJkLWl0ZW0vcmVzaXphYmxlLWNhcmQtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9yZXNpemFibGUtY2FyZC1sYXlvdXQvcmVzaXphYmxlLWNhcmQtbGF5b3V0L3Jlc2l6YWJsZS1jYXJkLWl0ZW0vcmVzaXphYmxlLWNhcmQtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQUlwQyw0REFBNEQ7QUFDNUQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxDQUFDO0FBRXhDLHVCQUF1QjtBQUN2QixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxFQUFFLENBQUM7QUFFckMsZ0NBQWdDO0FBQ2hDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFFdEIsNENBQTRDO0FBQzVDLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQztBQUUxQywwQ0FBMEM7QUFDMUMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0FB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YSxDQUFRO1FBQ3JCLG1CQUFjLEdBQWQsY0FBYyxDQUFRO1FBQ3RCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNsQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQVE7UUFDeEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFRO1FBQ3pCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBUTtRQUMzQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQVE7SUFDcEMsQ0FBQztDQUNQIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb2N1c2FibGVPcHRpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBSdGxTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IHR5cGUgUmVzaXplRGlyZWN0aW9uID0gJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJyB8ICdib3RoJztcblxuLy8gQ2FyZCByZXNpemVzIGluIHN0ZXAgb2YgZml4ZWQgdmFsdWVzLiB2YWx1ZXMgYXJlIGluIHBpeGVsXG5leHBvcnQgY29uc3QgaG9yaXpvbnRhbFJlc2l6ZVN0ZXAgPSAzMjA7XG5cbi8vIHZlcnRpY2FsIHJlc2l6ZSBzdGVwXG5leHBvcnQgY29uc3QgdmVydGljYWxSZXNpemVTdGVwID0gMTY7XG5cbi8vIGdhcCBvZiAxcmVtIGJldHdlZW4gdGhlIGNhcmRzXG5leHBvcnQgY29uc3QgZ2FwID0gMTY7XG5cbi8vIHRocmVzaG9sZCBvZmZzZXQgZm9yIGhvcml6b250YWwgcmVzaXppbmcuXG5leHBvcnQgY29uc3QgaG9yaXpvbnRhbFJlc2l6ZU9mZnNldCA9IDE2MDtcblxuLy8gdGhyZXNob2xkIG9mZnNldCBmb3IgdmVydGljYWwgcmVzaXppbmcuXG5leHBvcnQgY29uc3QgdmVydGljYWxSZXNpemVPZmZzZXQgPSA4O1xuXG4vLyBzdGF0ZSBvZiBjYXJkLiBJbmNyZWFzaW5nIHdpZHRoLCBubyBjaGFuZ2Ugb3IgZGVjcmVhc2luZyB3aWR0aC5cbmV4cG9ydCB0eXBlIENhcmRTdGF0ZSA9IDEgfCAwIHwgLTE7XG5cbi8vIGNhcmQgaXMgZ2l2ZW4gbnVtZXJpYyB2YWx1ZSwgb24gd2hpY2ggc29ydGluZyBvZiBjYXJkcyBpcyBkb25lXG5sZXQgY2FyZFJhbmsgPSAxO1xubGV0IGNhcmRVbmlxdWVJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtcmVzaXphYmxlLWNhcmQtaXRlbScsXG4gICAgdGVtcGxhdGVVcmw6ICdyZXNpemFibGUtY2FyZC1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9yZXNpemFibGUtY2FyZC1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIEZvY3VzYWJsZU9wdGlvbiwgT25EZXN0cm95IHtcbiAgICAvKiogQ2FyZCBwcm9wZXJ0aWVzIGZyb20gdGhlIGNvbmZpZyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGNvbmZpZyhjb25maWc6IFJlc2l6YWJsZUNhcmRJdGVtQ29uZmlnKSB7XG4gICAgICAgIHRoaXMuX2NvbmZpZyA9IGNvbmZpZztcbiAgICAgICAgdGhpcy5faW5pdGlhbFNldHVwKCk7XG4gICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gICAgZ2V0IGNvbmZpZygpOiBSZXNpemFibGVDYXJkSXRlbUNvbmZpZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb25maWc7XG4gICAgfVxuXG4gICAgLyoqIHNldCB1aW5xdWUgaWQgZm9yIHRoZSBjYXJkICovXG4gICAgQElucHV0KClcbiAgICBpdGVtSWQgPSBgZmQtY2FyZC1pdGVtLSR7Y2FyZFVuaXF1ZUlkKyt9YDtcblxuICAgIC8qKiBzZXQgdGl0bGUgb2YgdGhlIGNhcmQgKi9cbiAgICBASW5wdXQoKVxuICAgIHRpdGxlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBTZXJpYWwgb3JkZXIgb2YgY2FyZC5cbiAgICAgKiBjYXJkcyBhcmUgc29ydGVkIGJhc2VkIG9uIHJhbmtzIGJlZm9yZSBkaXNwbGF5aW5nIGxheW91dC5cbiAgICAgKiBjYXJkIHdpdGggbG93ZXIgcmFuayB3aWxsIGJlIGRpc3BsYXllZCBmaXJzdCBpbiBsYXlvdXQgdGhhbiB0aGUgY2FyZCB3aXRoIGhpZ2hlciByYW5rLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHJhbmsocmFua1ZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgLy8gZGV0ZXJtaW5lIG1heCB2YWx1ZSBiZXR3ZWVuIHVzZXIgZ2l2ZW4gdmFsdWUgYW5kIGRlZmF1bHQgdmFsdWVcbiAgICAgICAgdGhpcy5fcmFuayA9IHJhbmtWYWx1ZSA/IHJhbmtWYWx1ZSA6IGNhcmRSYW5rKys7XG4gICAgICAgIGlmIChyYW5rVmFsdWUgPiBjYXJkUmFuaykge1xuICAgICAgICAgICAgY2FyZFJhbmsgPSByYW5rVmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IHJhbmsoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jhbms7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTnVtYmVyIG9mIGNvbHVtbiBzcGFuIGNhcmQgd2lkdGggdGFrZXMuXG4gICAgICogSXQgd2lsbCBiZSBpbiBzdGVwIG9mIDIwcmVtLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGNhcmRXaWR0aENvbFNwYW4oY29sU3BhbjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2NhcmRXaWR0aENvbFNwYW4gPSBjb2xTcGFuO1xuICAgICAgICB0aGlzLl9zZXRDYXJkV2lkdGgoKTtcbiAgICB9XG4gICAgZ2V0IGNhcmRXaWR0aENvbFNwYW4oKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhcmRXaWR0aENvbFNwYW47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTnVtYmVyIG9mIHJvdyBzcGFuLCBjYXJkIGhlaWdodCB0YWtlcy5cbiAgICAgKiBJdCB3aWxsIGJlIGluIHRoZSBzdGVwIG9mIDFyZW0uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgY2FyZEhlaWdodFJvd1NwYW4ocm93U3BhbjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2NhcmRIZWlnaHRSb3dTcGFuID0gcm93U3BhbjtcbiAgICAgICAgdGhpcy5fc2V0Q2FyZEhlaWdodCgpO1xuICAgIH1cbiAgICBnZXQgY2FyZEhlaWdodFJvd1NwYW4oKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhcmRIZWlnaHRSb3dTcGFuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE51bWJlciBvZiByb3cgc3BhbiBjYXJkIG1pbmkgaGVhZGVyIGhlaWdodCB0YWtlcy5cbiAgICAgKiBNaW5pIEhlYWRlcjogVGhlIHNtYWxsZXN0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjYXJkIGlzIHRoZSBoZWFkZXIuXG4gICAgICogVGhlIGNhcmQgY2FuIGJlIGNvbGxhcHNlZCB0byBvbmx5IGl0cyBoZWFkZXIgaGVpZ2h0LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGNhcmRNaW5pSGVhZGVyUm93U3Bhbihyb3dTcGFuOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fY2FyZE1pbmlIZWFkZXJSb3dTcGFuID0gcm93U3BhbjtcbiAgICAgICAgdGhpcy5fc2V0Q2FyZE1pbmlIZWFkZXJIZWlnaHQoKTtcbiAgICB9XG4gICAgZ2V0IGNhcmRNaW5pSGVhZGVyUm93U3BhbigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FyZE1pbmlIZWFkZXJSb3dTcGFuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE51bWJlciBvZiByb3cgc3BhbiBjYXJkIG1pbmkgY29udGVudCBoZWlnaHQgdGFrZXMuXG4gICAgICogTWluaSBDb250ZW50OiBUaGUgbWluaW11bSBoZWlnaHQgZm9yIHRoZSBjYXJkIGNvbnRlbnQgZGVwZW5kcyBvbiB0aGUgY2FyZCB0eXBlLFxuICAgICAqIGFuZCBtdXN0IGJlIGFzIGhpZ2ggYXMgdGhlIHNtYWxsZXN0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb250ZW50LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGNhcmRNaW5pQ29udGVudFJvd1NwYW4ocm93U3BhbjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2NhcmRNaW5pQ29udGVudFJvd1NwYW4gPSByb3dTcGFuO1xuICAgICAgICB0aGlzLl9zZXRDYXJkTWluaUNvbnRlbnRIZWlnaHQoKTtcbiAgICB9XG4gICAgZ2V0IGNhcmRNaW5pQ29udGVudFJvd1NwYW4oKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhcmRNaW5pQ29udGVudFJvd1NwYW4gPz8gMDtcbiAgICB9XG5cbiAgICAvKiogQ2FyZCBjYW4gYmUgc2V0IHRvIHJlc2l6YWJsZT1mYWxzZSwgdG8gcmVzdHJpY3QgY2FyZCByZXNpemUgKi9cbiAgICBASW5wdXQoKVxuICAgIHJlc2l6YWJsZSA9IHRydWU7XG5cbiAgICAvKiogU2V0IGxlZnQgcG9zaXRpb24gZm9yIHRoZSBjYXJkICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmxlZnQucHgnKVxuICAgIGxlZnQ6IE51bGxhYmxlPG51bWJlcj47XG5cbiAgICAvKiogU2V0IHJpZ2h0IHBvc2l0aW9uIGZvciB0aGUgY2FyZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5yaWdodC5weCcpXG4gICAgcmlnaHQ6IE51bGxhYmxlPG51bWJlcj47XG5cbiAgICAvKiogU2V0IHRvcCBwb3NpdGlvbiBmb3IgdGhlIGNhcmQqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS50b3AucHgnKVxuICAgIHRvcCA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiB3aGlsZSByZXNpemluZyB0aGlzIHZhbHVlIHdpbGwgY2hhbmdlIHRvIGEgZ3JlYXRlciB2YWx1ZSAqL1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUuei1pbmRleCcpXG4gICAgekluZGV4ID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5wb3NpdGlvbicpXG4gICAgcG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuXG4gICAgLyoqIEBoaWRkZW4gdHJhbnNpdGlvbiBhbmltYXRpb24gd2hlbiBsYXlvdXQgcmUtZHJhd3MgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLXJlc2l6YWJsZS1jYXJkLWxheW91dF9fZHJhdy10cmFuc2l0aW9uJylcbiAgICByZURyYXdBbmltYXRpb24gPSB0cnVlO1xuXG4gICAgLyoqIEVtaXRzIHdoZW4gY2FyZCBpcyBzdGlsbCByZXNpemluZyAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlc2l6aW5nOiBFdmVudEVtaXR0ZXI8UmVzaXplZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UmVzaXplZEV2ZW50PigpO1xuXG4gICAgLyoqIEVtaXRzIHdoZW4gY2FyZCByZXNpemUgaXMgY29tcGxldGVkICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVzaXplZDogRXZlbnRFbWl0dGVyPFJlc2l6ZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlc2l6ZWRFdmVudD4oKTtcblxuICAgIC8qKiBFbWl0cyB3aGVuIGNhcmQgaGVpZ2h0IGlzIHJlZHVjZWQgdG8gc2hvdyBvbmx5IGhlYWRlciAqL1xuICAgIEBPdXRwdXQoKVxuICAgIG1pbmlIZWFkZXJSZWFjaGVkOiBFdmVudEVtaXR0ZXI8UmVzaXplZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UmVzaXplZEV2ZW50PigpO1xuXG4gICAgLyoqIEVtaXRzIHdoZW4gbWluaW11bSBoZWlnaHQgb2YgY2FyZCBjb250ZW50IGFyZWEgaXMgcmVhY2hlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIG1pbmlDb250ZW50UmVhY2hlZDogRXZlbnRFbWl0dGVyPFJlc2l6ZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlc2l6ZWRFdmVudD4oKTtcblxuICAgIC8qKiBzaG93IGNvcm5lciByZXNpemUgaWNvbiBvbiBob3ZlciBvdmVyIGNhcmQgKi9cbiAgICBzaG93aW5nUmVzaXplSWNvbiA9IGZhbHNlO1xuXG4gICAgLyoqIHNob3cgYm9yZGVyIHdoZW4gY2FyZCBpcyByZXNpemluZyAqL1xuICAgIHNob3dCb3JkZXIgPSBmYWxzZTtcblxuICAgIC8qKiBzdGFydGluZyBjb2x1bW4gcG9zaXRpb24gb2YgY2FyZC4gc3RhcnRzIHdpdGggMCAqL1xuICAgIHN0YXJ0aW5nQ29sdW1uUG9zaXRpb246IG51bWJlcjtcblxuICAgIC8qKiBjYXJkIHdpZHRoIGluIHB4LiBEZWZhdWx0IHZhbHVlIHRvIDIwcmVtICovXG4gICAgY2FyZFdpZHRoOiBudW1iZXIgPSBob3Jpem9udGFsUmVzaXplU3RlcDtcblxuICAgIC8qKiBjYXJkIGhlaWdodCBpbiBweCAqL1xuICAgIGNhcmRIZWlnaHQ6IG51bWJlcjtcblxuICAgIC8qKiBNaW5pLWhlYWRlciBoZWlnaHQgb2YgY2FyZCAqL1xuICAgIGNhcmRNaW5pSGVhZGVySGVpZ2h0OiBudW1iZXI7XG5cbiAgICAvKiogTWluaS1jb250ZW50IGhlaWdodCBvZiBjYXJkIHRvIGRpc3BsYXkgbWluaW11bSB2YWxpZCBjb250ZW50ICovXG4gICAgY2FyZE1pbmlDb250ZW50SGVpZ2h0OiBudW1iZXI7XG5cbiAgICAvKiogT3V0ZXIgcmVzaXplIGluZGljYXRpb24gYm9yZGVyIHdpZHRoIGZvciB0aGUgY2FyZCAqL1xuICAgIHJlc2l6ZUluZGljYXRpb25Cb3JkZXJXaWR0aCA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBEZW5vdGVzIGlmIGNhcmQgaXMgY3VycmVudGx5IGV4cGFuZGluZyBvciBjb250cmFjdGluZyBob3Jpem9udGFsbHkuXG4gICAgICogKzEgZGVub3RlcyBpbmNyZWFzaW5nLCAtMSBkZW5vdGVzIGRlY3JlYXNpbmcgYW5kIDAgZGVub3RlcyBjYXJkLXN0YXRlIGhhcyBub3QgY2hhbmdlZCBob3Jpem9udGFsbHkuXG4gICAgICovXG4gICAgY2FyZFN0YXRlOiBDYXJkU3RhdGUgPSAwO1xuXG4gICAgLyoqIENoYW5nZSBpbiByYW5rIGZyb20gcHJldmlvdXMgdmFsdWUqL1xuICAgIHByZXZSYW5rID0gMDtcblxuICAgIC8qKiBAaGlkZGVuIERlZmF1bHQgd2lkdGggb2YgY2FyZCBpcyAyMHJlbSBpZS4gMSBjb2x1bW4gKi9cbiAgICBwcml2YXRlIF9jYXJkV2lkdGhDb2xTcGFuID0gMTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FyZEhlaWdodFJvd1NwYW46IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuIGhlbHBzIGluIHZlcnRpY2FsIHN0ZXAgY2hhbmdlIGV2ZW50IGVtaXQgKi9cbiAgICBwcml2YXRlIF9wcmV2Q2FyZEhlaWdodFJvd1NwYW46IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FyZE1pbmlIZWFkZXJSb3dTcGFuOiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhcmRNaW5pQ29udGVudFJvd1NwYW4/OiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiBjb25maWcgdmFsdWVzIGZvciBjYXJkICovXG4gICAgcHJpdmF0ZSBfY29uZmlnOiBSZXNpemFibGVDYXJkSXRlbUNvbmZpZztcblxuICAgIC8qKiBAaGlkZGVuIHByZXZpb3VzIGN1cnNvciB4IHBvc2l0aW9uICovXG4gICAgcHJpdmF0ZSBfcHJldlg6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuIHByZXZpb3VzIGN1cnNvciB5IHBvc2l0aW9uICovXG4gICAgcHJpdmF0ZSBfcHJldlk6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJldkNhcmRXaWR0aDogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wcmV2Q2FyZEhlaWdodDogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gZmxhZyB0byBjb250cm9sIHJlc2l6ZSAqL1xuICAgIHByaXZhdGUgX3Jlc2l6ZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZXNpemVEaXJlY3Rpb246IFJlc2l6ZURpcmVjdGlvbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbWF4Q29sdW1uOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIHN0b3JlcyBvcmlnaW5hbCB3aWR0aCBzcGFuIG9mIGNhcmQuXG4gICAgICogSXQgbWF5IHJlZHVjZSBvbiBzbWFsbCBzY3JlZW4sIHNvIGhhdmUgdG8gcmVzdG9yZSB1c2luZyB0aGlzLlxuICAgICAqL1xuICAgIHByaXZhdGUgX29yaWdpbmFsQ2FyZFdpZHRoU3BhbiA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Jhbms6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcnRsID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgX3J0bFNlcnZpY2U6IFJ0bFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgaWYgKHRoaXMuX3J0bFNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKHRoaXMuX3J0bFNlcnZpY2UucnRsLnN1YnNjcmliZSgodmFsdWUpID0+ICh0aGlzLl9ydGwgPSB2YWx1ZSkpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGVuIHJlc2l6ZSBoYW5kbGVyIGlzIHByZXNzZWQgYW5kIHJlc2l6aW5nIG1heSBzdGFydC5cbiAgICAgKiBAcGFyYW0gZXZlbnQ6IE1vdXNlRXZlbnRcbiAgICAgKiBAcGFyYW0gcmVzaXplRGlyZWN0aW9uOiB3aGljaCBoYW5kbGVyIGlzIHByZXNzZWQgdG8gcmVzaXplXG4gICAgICovXG4gICAgb25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQsIHJlc2l6ZURpcmVjdGlvbjogUmVzaXplRGlyZWN0aW9uKTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICghdGhpcy5yZXNpemFibGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2hvd2luZ1Jlc2l6ZUljb24gPSB0cnVlO1xuICAgICAgICB0aGlzLl9yZXNpemUgPSB0cnVlO1xuICAgICAgICB0aGlzLl9wcmV2WCA9IGV2ZW50LmNsaWVudFg7XG4gICAgICAgIHRoaXMuX3ByZXZZID0gZXZlbnQuY2xpZW50WTtcbiAgICAgICAgdGhpcy5fcHJldkNhcmRXaWR0aCA9IHRoaXMuY2FyZFdpZHRoO1xuICAgICAgICB0aGlzLl9wcmV2Q2FyZEhlaWdodCA9IHRoaXMuY2FyZEhlaWdodDtcbiAgICAgICAgdGhpcy5fcmVzaXplRGlyZWN0aW9uID0gcmVzaXplRGlyZWN0aW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gV2hlbiBtb3VzZSBtb3ZlcyB0byByZXNpemUgdGhlIGNhcmQuXG4gICAgICogdXNpbmcgd2luZG93Om1vdXNlbW92ZSBzbywgcmVzaXplIHdpbGwgaGFwcGVuIHNtb290aGx5XG4gICAgICogQHBhcmFtIGV2ZW50OiBNb3VzZUV2ZW50XG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1vdXNlbW92ZScsIFsnJGV2ZW50J10pXG4gICAgb25Nb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKCF0aGlzLnJlc2l6YWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc2F2ZXMgZnJvbSB1bi1uZWNlc3NhcnkgcmVzaXplXG4gICAgICAgIGlmICghdGhpcy5fcmVzaXplKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuc2hvd0JvcmRlcikge1xuICAgICAgICAgICAgdGhpcy5zaG93Qm9yZGVyID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHJlc2l6aW5nIGNhcmQgd2lsbCBnbyBvdmVyIG90aGVyIGNhcmRzXG4gICAgICAgIHRoaXMuekluZGV4ID0gMTtcblxuICAgICAgICBjb25zdCB7IGNsaWVudFgsIGNsaWVudFkgfSA9IGV2ZW50O1xuICAgICAgICBzd2l0Y2ggKHRoaXMuX3Jlc2l6ZURpcmVjdGlvbikge1xuICAgICAgICAgICAgY2FzZSAnYm90aCc6XG4gICAgICAgICAgICAgICAgdGhpcy5faG9yaXpvbnRhbFJlc2l6aW5nKGNsaWVudFgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3ZlcnRpY2FsUmVzaXppbmcoY2xpZW50WSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdob3Jpem9udGFsJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9ob3Jpem9udGFsUmVzaXppbmcoY2xpZW50WCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd2ZXJ0aWNhbCc6XG4gICAgICAgICAgICAgICAgdGhpcy5fdmVydGljYWxSZXNpemluZyhjbGllbnRZKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy5faG9yaXpvbnRhbFJlc2l6aW5nKGNsaWVudFgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3ZlcnRpY2FsUmVzaXppbmcoY2xpZW50WSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjYXJkV2lkdGhDb2xTcGFuID0gTWF0aC5mbG9vcih0aGlzLmNhcmRXaWR0aCAvIGhvcml6b250YWxSZXNpemVTdGVwKTtcbiAgICAgICAgY29uc3QgY2FyZFdpZHRoV2l0aENvbHVtbiA9IGNhcmRXaWR0aENvbFNwYW4gKiBob3Jpem9udGFsUmVzaXplU3RlcCArIGNhcmRXaWR0aENvbFNwYW4gKiBnYXA7XG5cbiAgICAgICAgY29uc3QgaG9yaXpvbnRhbFJlc2l6ZVRocmVzaG9sZFJlYWNoZWQgPSB0aGlzLmNhcmRXaWR0aCAtIGNhcmRXaWR0aFdpdGhDb2x1bW4gPiBob3Jpem9udGFsUmVzaXplT2Zmc2V0O1xuXG4gICAgICAgIGlmIChjbGllbnRYID4gdGhpcy5fcHJldlgpIHtcbiAgICAgICAgICAgIC8vIGluY3JlYXNpbmcgd2lkdGhcbiAgICAgICAgICAgIHRoaXMuY2FyZFN0YXRlID0gMTtcblxuICAgICAgICAgICAgaWYgKGhvcml6b250YWxSZXNpemVUaHJlc2hvbGRSZWFjaGVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZnV0dXJlQ2FyZFdpZHRoID0gKGNhcmRXaWR0aENvbFNwYW4gKyAxKSAqIGhvcml6b250YWxSZXNpemVTdGVwICsgY2FyZFdpZHRoQ29sU3BhbiAqIGdhcDtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZUluZGljYXRpb25Cb3JkZXJXaWR0aCA9IGZ1dHVyZUNhcmRXaWR0aCAtIHRoaXMuY2FyZFdpZHRoO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZUluZGljYXRpb25Cb3JkZXJXaWR0aCA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoY2xpZW50WCA8IHRoaXMuX3ByZXZYKSB7XG4gICAgICAgICAgICAvLyBkZWNyZWFzaW5nIHdpZHRoXG4gICAgICAgICAgICB0aGlzLmNhcmRTdGF0ZSA9IC0xO1xuICAgICAgICAgICAgaWYgKGhvcml6b250YWxSZXNpemVUaHJlc2hvbGRSZWFjaGVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZnV0dXJlQ2FyZFdpZHRoID0gKGNhcmRXaWR0aENvbFNwYW4gKyAxKSAqIGhvcml6b250YWxSZXNpemVTdGVwICsgY2FyZFdpZHRoQ29sU3BhbiAqIGdhcDtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZUluZGljYXRpb25Cb3JkZXJXaWR0aCA9IGZ1dHVyZUNhcmRXaWR0aCAtIHRoaXMuY2FyZFdpZHRoO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZUluZGljYXRpb25Cb3JkZXJXaWR0aCA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9wcmV2WCA9IGNsaWVudFg7XG4gICAgICAgIHRoaXMuX3ByZXZZID0gY2xpZW50WTtcbiAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIC8vIEVtaXRzIHJlc2l6aW5nIGV2ZW50LlxuICAgICAgICB0aGlzLnJlc2l6aW5nLmVtaXQodGhpcy5nZXRSZXNpemVkRXZlbnRPYmplY3QoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogd2hlbiByZXNpemluZyBvZiBjYXJkIHN0b3BzXG4gICAgICogQHBhcmFtIGV2ZW50OiBNb3VzZUV2ZW50XG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6IG1vdXNldXAnLCBbJyRldmVudCddKVxuICAgIG9uTW91c2VVcCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnJlc2l6YWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGlmIGNhcmQgd2FzIG5vdCByZXNpemluZ1xuICAgICAgICBpZiAoIXRoaXMuX3Jlc2l6ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaW5jcmVhc2UvZGVjcmVhc2Ugd2lkdGggb2YgY2FyZCBpbiBvcmRlciBvZiAyMHJlbVxuICAgICAgICBpZiAoTWF0aC5hYnModGhpcy5jYXJkV2lkdGggLSB0aGlzLl9wcmV2Q2FyZFdpZHRoKSA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2hvcml6b250YWxTdGVwUmVzaXppbmcoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGluY3JlYXNlL2RlY3JlYXNlIGhlaWdodCBvZiBjYXJkIGluIG9yZGVyIG9mIDFyZW1cbiAgICAgICAgaWYgKE1hdGguYWJzKHRoaXMuY2FyZEhlaWdodCAtIHRoaXMuX3ByZXZDYXJkSGVpZ2h0KSA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX3ZlcnRpY2FsU3RlcFJlc2l6aW5nKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zdG9wUmVzaXppbmcoKTtcbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIFNldHMgZm9jdXMgb24gdGhlIGVsZW1lbnQgKi9cbiAgICBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaGVhZGVyID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5mZC1jYXJkX19oZWFkZXInKTtcbiAgICAgICAgaGVhZGVyPy5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKiBTaG93cyByZXNpemUgaWNvbiAqL1xuICAgIHNob3dSZXNpemVJY29uKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMucmVzaXphYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zaG93aW5nUmVzaXplSWNvbiA9IHRydWU7XG4gICAgfVxuXG4gICAgLyoqIEhpZGVzIHJlc2l6ZSBpY29uICovXG4gICAgaGlkZVJlc2l6ZUljb24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fcmVzaXplKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dpbmdSZXNpemVJY29uID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogUmV0dXJucyBtYXggd2lkdGggZm9yIGNhcmQsIGJhc2VkIG9uIGxheW91dCBzaXplIHBhc3NlZCAqL1xuICAgIGdldE1heENvbFNwYW4obGF5b3V0U2l6ZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgc3dpdGNoIChsYXlvdXRTaXplKSB7XG4gICAgICAgICAgICBjYXNlICdzbSc6XG4gICAgICAgICAgICAgICAgdGhpcy5fbWF4Q29sdW1uID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21kJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9tYXhDb2x1bW4gPSAyO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbGcnOlxuICAgICAgICAgICAgICAgIHRoaXMuX21heENvbHVtbiA9IDM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd4bCc6XG4gICAgICAgICAgICAgICAgdGhpcy5fbWF4Q29sdW1uID0gNDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy5fbWF4Q29sdW1uID0gMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fbWF4Q29sdW1uO1xuICAgIH1cblxuICAgIC8qKiBVcGRhdGUgY2FyZCB3aWR0aCBpZiBpdCBleGNlZWRzIGNvbHVtbiBzcGFuIGJhc2VkIG9uIGxheW91dCAqL1xuICAgIHZlcmlmeVVwZGF0ZUNhcmRXaWR0aChsYXlvdXRTaXplOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgd2lkdGhDb2xTcGFuID0gdGhpcy5fY29uZmlnPy5jYXJkV2lkdGhDb2xTcGFuIHx8IHRoaXMuY2FyZFdpZHRoQ29sU3BhbjtcbiAgICAgICAgLy8gc3RvcmluZyBvcmlnaW5hbCB3aWR0aCBvZiBjYXJkLlxuICAgICAgICAvLyB1c2VkIHRvIHJlc3RvcmUgd2lkdGggb24gd2luZG93IHJlc2l6ZSBmcm9tIHNtYWxsIHRvIGxhcmdlXG4gICAgICAgIHRoaXMuX29yaWdpbmFsQ2FyZFdpZHRoU3BhbiA9ICF0aGlzLl9vcmlnaW5hbENhcmRXaWR0aFNwYW4gPyB3aWR0aENvbFNwYW4gOiB0aGlzLl9vcmlnaW5hbENhcmRXaWR0aFNwYW47XG4gICAgICAgIHRoaXMuX21heENvbHVtbiA9IHRoaXMuZ2V0TWF4Q29sU3BhbihsYXlvdXRTaXplKTtcbiAgICAgICAgaWYgKHdpZHRoQ29sU3BhbiA+IHRoaXMuX21heENvbHVtbikge1xuICAgICAgICAgICAgdGhpcy5jYXJkV2lkdGhDb2xTcGFuID0gdGhpcy5fbWF4Q29sdW1uO1xuICAgICAgICAgICAgdGhpcy5fc2V0Q2FyZFdpZHRoKCk7XG4gICAgICAgICAgICAvLyBFbWl0cyByZXNpemVkIGV2ZW50LlxuICAgICAgICAgICAgdGhpcy5yZXNpemVkLmVtaXQodGhpcy5nZXRSZXNpemVkRXZlbnRPYmplY3QoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBrZWVwIGNhcmQgd2lkdGggbWluaW11bSwgc28gaXQgY2FuIGZpdCBpbiBzY3JlZW4uXG4gICAgICAgICAgICB0aGlzLmNhcmRXaWR0aENvbFNwYW4gPSBNYXRoLm1pbih0aGlzLl9tYXhDb2x1bW4sIHRoaXMuX29yaWdpbmFsQ2FyZFdpZHRoU3Bhbik7XG4gICAgICAgICAgICB0aGlzLl9zZXRDYXJkV2lkdGgoKTtcbiAgICAgICAgICAgIC8vIEVtaXRzIHJlc2l6ZWQgZXZlbnQuXG4gICAgICAgICAgICB0aGlzLnJlc2l6ZWQuZW1pdCh0aGlzLmdldFJlc2l6ZWRFdmVudE9iamVjdCgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZWxlbWVudFJlZigpOiBFbGVtZW50UmVmIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWY7XG4gICAgfVxuXG4gICAgLyoqIFJldHVybnMgUmVzaXplZEV2ZW50IG9iamVjdCB0byBlbWl0LiAqL1xuICAgIGdldFJlc2l6ZWRFdmVudE9iamVjdCgpOiBSZXNpemVkRXZlbnQge1xuICAgICAgICBjb25zdCBuZXdDYXJkSGVpZ2h0Um93U3BhbiA9IE1hdGguZmxvb3IodGhpcy5jYXJkSGVpZ2h0IC8gdmVydGljYWxSZXNpemVTdGVwKTtcbiAgICAgICAgY29uc3QgbmV3Q2FyZFdpZHRoQ29sU3BhbiA9IE1hdGguZmxvb3IodGhpcy5jYXJkV2lkdGggLyBob3Jpem9udGFsUmVzaXplU3RlcCk7XG4gICAgICAgIGNvbnN0IG5ld0NhcmRXaWR0aCA9IG5ld0NhcmRXaWR0aENvbFNwYW4gKiBob3Jpem9udGFsUmVzaXplU3RlcCArIG5ld0NhcmRXaWR0aENvbFNwYW4gKiBnYXA7XG5cbiAgICAgICAgY29uc3QgaG9yaXpvbnRhbFJlc2l6ZVRocmVzaG9sZFJlYWNoZWQgPSB0aGlzLmNhcmRXaWR0aCAtIG5ld0NhcmRXaWR0aCA+IGhvcml6b250YWxSZXNpemVPZmZzZXQ7XG4gICAgICAgIGNvbnN0IG5ld0NhcmRDb2xTcGFuID0gaG9yaXpvbnRhbFJlc2l6ZVRocmVzaG9sZFJlYWNoZWQgPyBuZXdDYXJkV2lkdGhDb2xTcGFuICsgMSA6IG5ld0NhcmRXaWR0aENvbFNwYW47XG4gICAgICAgIHJldHVybiBuZXcgUmVzaXplZEV2ZW50KFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIHRoaXMuX3ByZXZDYXJkV2lkdGgsXG4gICAgICAgICAgICB0aGlzLl9wcmV2Q2FyZEhlaWdodCxcbiAgICAgICAgICAgIHRoaXMuY2FyZFdpZHRoLFxuICAgICAgICAgICAgdGhpcy5jYXJkSGVpZ2h0LFxuICAgICAgICAgICAgdGhpcy5fY2FyZFdpZHRoQ29sU3BhbixcbiAgICAgICAgICAgIHRoaXMuX2NhcmRIZWlnaHRSb3dTcGFuLFxuICAgICAgICAgICAgbmV3Q2FyZENvbFNwYW4sXG4gICAgICAgICAgICBuZXdDYXJkSGVpZ2h0Um93U3BhblxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJldHVybiBwcmV2aW91cyBoZWlnaHQgcm93IHNwYW4gb2YgdGhlIGNhcmQgKi9cbiAgICBnZXQgcHJldmlvdXNDYXJkSGVpZ2h0Um93U3BhbigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJldkNhcmRIZWlnaHRSb3dTcGFuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFNldCBjYXJkIHByb3BlcnRpZXMgdXNpbmcgY29uZmlnIHJlY2VpdmVkICovXG4gICAgcHJpdmF0ZSBfaW5pdGlhbFNldHVwKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhcmRXaWR0aENvbFNwYW4gPSB0aGlzLl9jb25maWc/LmNhcmRXaWR0aENvbFNwYW4gfHwgdGhpcy5jYXJkV2lkdGhDb2xTcGFuO1xuICAgICAgICB0aGlzLmNhcmRIZWlnaHRSb3dTcGFuID0gdGhpcy5fY29uZmlnPy5jYXJkSGVpZ2h0Um93U3BhbiB8fCB0aGlzLmNhcmRIZWlnaHRSb3dTcGFuO1xuICAgICAgICB0aGlzLnRpdGxlID0gdGhpcy5fY29uZmlnPy50aXRsZSB8fCB0aGlzLnRpdGxlO1xuICAgICAgICB0aGlzLnJhbmsgPSB0aGlzLl9jb25maWc/LnJhbmsgfHwgdGhpcy5yYW5rO1xuICAgICAgICB0aGlzLmNhcmRNaW5pSGVhZGVyUm93U3BhbiA9IHRoaXMuX2NvbmZpZz8uY2FyZE1pbmlIZWFkZXJSb3dTcGFuIHx8IHRoaXMuY2FyZE1pbmlIZWFkZXJSb3dTcGFuO1xuICAgICAgICB0aGlzLmNhcmRNaW5pQ29udGVudFJvd1NwYW4gPSB0aGlzLl9jb25maWc/LmNhcmRNaW5pQ29udGVudFJvd1NwYW4gfHwgdGhpcy5jYXJkTWluaUNvbnRlbnRSb3dTcGFuO1xuICAgICAgICB0aGlzLnJlc2l6YWJsZSA9IHRoaXMuX2NvbmZpZy5yZXNpemFibGUgfHwgdGhpcy5yZXNpemFibGU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUmV0dXJucyB0cnVlIHdoZW4gcmVzaXplIG9mZnNldCBpcyBjcm9zc2VkICovXG4gICAgcHJpdmF0ZSBfaG9yaXpvbnRhbFJlc2l6ZVdpdGhPZmZzZXQoKTogdm9pZCB7XG4gICAgICAgIC8vIHBvc2l0aXZlIHZhbHVlIGluZGljYXRlcyB0aGF0IHdpZHRoIGhhcyBpbmNyZWFzZWRcbiAgICAgICAgY29uc3Qgd2lkdGhJbmNyZW1lbnQgPSB0aGlzLmNhcmRXaWR0aCAtIHRoaXMuX3ByZXZDYXJkV2lkdGg7XG4gICAgICAgIGNvbnN0IGNhcmRTcGFuID0gTWF0aC5mbG9vcih0aGlzLmNhcmRXaWR0aCAvIGhvcml6b250YWxSZXNpemVTdGVwKTtcbiAgICAgICAgY29uc3QgY2FyZFNwYW5GcmFjdGlvbiA9IHRoaXMuY2FyZFdpZHRoICUgaG9yaXpvbnRhbFJlc2l6ZVN0ZXA7XG5cbiAgICAgICAgLy8gd2hlbiB3aWR0aCBpbmNyZWFzZXNcbiAgICAgICAgaWYgKHdpZHRoSW5jcmVtZW50ID4gMCkge1xuICAgICAgICAgICAgaWYgKHdpZHRoSW5jcmVtZW50IDwgaG9yaXpvbnRhbFJlc2l6ZU9mZnNldCArIGdhcCkge1xuICAgICAgICAgICAgICAgIC8vIHdpZHRoSW5jcmVtZW50IGlzIGxlc3MgdGhhbiBvZmZzZXQsIGRvIG5vdCBpbmNyZWFzZSB3aWR0aFxuICAgICAgICAgICAgICAgIHRoaXMuY2FyZFdpZHRoID0gdGhpcy5fcHJldkNhcmRXaWR0aDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gY2hlY2sgdmFsdWUgb2YgY2FyZFNwYW5GcmFjdGlvbiwgaW5jbHVkaW5nIGdhcHMgaW4gY2FyZHNcbiAgICAgICAgICAgICAgICBsZXQgaXNDYXJkU3BhbkZyYWN0aW9uQ3Jvc3NpbmdPZmZzZXQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpc0NhcmRTcGFuRnJhY3Rpb25Dcm9zc2luZ09mZnNldCA9IGNhcmRTcGFuRnJhY3Rpb24gLSAoY2FyZFNwYW4gLSAxKSAqIGdhcCA+IGhvcml6b250YWxSZXNpemVPZmZzZXQ7XG4gICAgICAgICAgICAgICAgdGhpcy5jYXJkV2lkdGggPSBpc0NhcmRTcGFuRnJhY3Rpb25Dcm9zc2luZ09mZnNldFxuICAgICAgICAgICAgICAgICAgICA/IChjYXJkU3BhbiArIDEpICogaG9yaXpvbnRhbFJlc2l6ZVN0ZXBcbiAgICAgICAgICAgICAgICAgICAgOiBjYXJkU3BhbiAqIGhvcml6b250YWxSZXNpemVTdGVwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gd2hlbiB3aWR0aCBkZWNyZWFzZXNcbiAgICAgICAgICAgIGlmIChNYXRoLmFicyh3aWR0aEluY3JlbWVudCkgPCBob3Jpem9udGFsUmVzaXplT2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgLy8gd2lkdGhJbmNyZW1lbnQgaXMgbGVzcyB0aGFuIG9mZnNldCwgZG8gbm90IGRlY3JlYXNlIHdpZHRoXG4gICAgICAgICAgICAgICAgdGhpcy5jYXJkV2lkdGggPSB0aGlzLl9wcmV2Q2FyZFdpZHRoO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBjaGVjayB2YWx1ZSBvZiBjYXJkU3BhbkZyYWN0aW9uLCBpbmNsdWRpbmcgZ2FwcyBpbiBjYXJkc1xuICAgICAgICAgICAgICAgIGxldCBpc0NhcmRTcGFuRnJhY3Rpb25Dcm9zc2luZ09mZnNldCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlzQ2FyZFNwYW5GcmFjdGlvbkNyb3NzaW5nT2Zmc2V0ID0gY2FyZFNwYW5GcmFjdGlvbiAtIGNhcmRTcGFuICogZ2FwID4gaG9yaXpvbnRhbFJlc2l6ZU9mZnNldDtcbiAgICAgICAgICAgICAgICB0aGlzLmNhcmRXaWR0aCA9IGlzQ2FyZFNwYW5GcmFjdGlvbkNyb3NzaW5nT2Zmc2V0XG4gICAgICAgICAgICAgICAgICAgID8gKGNhcmRTcGFuICsgMSkgKiBob3Jpem9udGFsUmVzaXplU3RlcFxuICAgICAgICAgICAgICAgICAgICA6IGNhcmRTcGFuICogaG9yaXpvbnRhbFJlc2l6ZVN0ZXA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIG1ha2UgaG9yaXpvbnRhbCByZXNpemUgb25seSBvbiBzdGVwIG9mIDIwcmVtXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaG9yaXpvbnRhbFN0ZXBSZXNpemluZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faG9yaXpvbnRhbFJlc2l6ZVdpdGhPZmZzZXQoKTtcblxuICAgICAgICAvLyBBZGQgaW5uZXIgZ2FwIGluICBjYXJkV2lkdGggaWYgd2lkdGggaXMgbW9yZSB0aGFuIDEgY29sdW1uXG4gICAgICAgIGlmICh0aGlzLmNhcmRXaWR0aCA+IGhvcml6b250YWxSZXNpemVTdGVwKSB7XG4gICAgICAgICAgICB0aGlzLmNhcmRXaWR0aCA9IHRoaXMuY2FyZFdpZHRoICsgKHRoaXMuY2FyZFdpZHRoIC8gaG9yaXpvbnRhbFJlc2l6ZVN0ZXAgLSAxKSAqIGdhcDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNhcmRXaWR0aENvbFNwYW4gPSBNYXRoLmZsb29yKHRoaXMuY2FyZFdpZHRoIC8gaG9yaXpvbnRhbFJlc2l6ZVN0ZXApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gbWFrZSB2ZXJ0aWNhbCByZXNpemUgb25seSBvbiBzdGVwIG9mIDFyZW1cbiAgICAgKi9cbiAgICBwcml2YXRlIF92ZXJ0aWNhbFN0ZXBSZXNpemluZygpOiB2b2lkIHtcbiAgICAgICAgLy8gcG9zaXRpdmUgdmFsdWUgaW5kaWNhdGVzIHRoYXQgaGVpZ2h0IGhhcyBpbmNyZWFzZWRcbiAgICAgICAgY29uc3QgY2FyZEhlaWdodFNwYW4gPSBNYXRoLmZsb29yKHRoaXMuY2FyZEhlaWdodCAvIHZlcnRpY2FsUmVzaXplU3RlcCk7XG4gICAgICAgIGNvbnN0IGNhcmRTcGFuRnJhY3Rpb24gPSB0aGlzLmNhcmRIZWlnaHQgJSB2ZXJ0aWNhbFJlc2l6ZVN0ZXA7XG4gICAgICAgIHRoaXMuY2FyZEhlaWdodCA9XG4gICAgICAgICAgICBjYXJkU3BhbkZyYWN0aW9uID4gdmVydGljYWxSZXNpemVPZmZzZXRcbiAgICAgICAgICAgICAgICA/IChjYXJkSGVpZ2h0U3BhbiArIDEpICogdmVydGljYWxSZXNpemVTdGVwXG4gICAgICAgICAgICAgICAgOiBjYXJkSGVpZ2h0U3BhbiAqIHZlcnRpY2FsUmVzaXplU3RlcDtcblxuICAgICAgICB0aGlzLmNhcmRIZWlnaHRSb3dTcGFuID0gTWF0aC5mbG9vcih0aGlzLmNhcmRIZWlnaHQgLyB2ZXJ0aWNhbFJlc2l6ZVN0ZXApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gUmVzaXplIGNhcmQgaG9yaXpvbnRhbGx5IGJ5IGNoZWNraW5nIGJvdW5kYXJ5IGNvbmRpdGlvblxuICAgICAqIEBwYXJhbSB4UG9zaXRpb246IGN1cnJlbnQgeC1wb3NpdGlvbiBvZiBjdXJzb3JcbiAgICAgKi9cbiAgICBwcml2YXRlIF9ob3Jpem9udGFsUmVzaXppbmcoeFBvc2l0aW9uOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGlmZmVyZW5jZSA9IHRoaXMuX3ByZXZYIC0geFBvc2l0aW9uO1xuICAgICAgICB0aGlzLmNhcmRXaWR0aCA9IHRoaXMuX3J0bCA/IHRoaXMuY2FyZFdpZHRoICsgZGlmZmVyZW5jZSA6IHRoaXMuY2FyZFdpZHRoIC0gZGlmZmVyZW5jZTtcblxuICAgICAgICBjb25zdCB0b3RhbEluZGVudGF0aW9uID0gKHRoaXMuX21heENvbHVtbiAtIDEpICogZ2FwO1xuICAgICAgICBjb25zdCBtYXhDYXJkV2lkdFdpdGhvdXRJbmRlbnRhdGlvbiA9IHRoaXMuX21heENvbHVtbiAqIGhvcml6b250YWxSZXNpemVTdGVwO1xuXG4gICAgICAgIGNvbnN0IG1heENhcmRXaWR0aCA9IHRoaXMuX3J0bFxuICAgICAgICAgICAgPyBtYXhDYXJkV2lkdFdpdGhvdXRJbmRlbnRhdGlvbiAtIHRvdGFsSW5kZW50YXRpb25cbiAgICAgICAgICAgIDogbWF4Q2FyZFdpZHRXaXRob3V0SW5kZW50YXRpb24gKyB0b3RhbEluZGVudGF0aW9uO1xuXG4gICAgICAgIGlmICh0aGlzLmNhcmRXaWR0aCA+IG1heENhcmRXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5jYXJkV2lkdGggPSBtYXhDYXJkV2lkdGg7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jYXJkV2lkdGggPCBob3Jpem9udGFsUmVzaXplU3RlcCkge1xuICAgICAgICAgICAgdGhpcy5jYXJkV2lkdGggPSBob3Jpem9udGFsUmVzaXplU3RlcDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gUmVzaXplIGNhcmQgdmVydGljYWxseS5cbiAgICAgKiB0YWtlcyBjYXJlIG9mIG1pbmktaGVhZGVyIGhlaWdodCBhbmQgbWluaS1jb250ZW50IGhlaWdodFxuICAgICAqIEBwYXJhbSB5UG9zaXRpb246IGN1cnJlbnQgeS1wb3NpdGlvbiBvZiBjdXJzb3JcbiAgICAgKi9cbiAgICBwcml2YXRlIF92ZXJ0aWNhbFJlc2l6aW5nKHlQb3NpdGlvbjogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGxldCByZWFjaGluZ01pbmlIZWFkZXIgPSBmYWxzZTtcblxuICAgICAgICBpZiAodGhpcy5jYXJkSGVpZ2h0ID09PSB0aGlzLmNhcmRNaW5pSGVhZGVySGVpZ2h0KSB7XG4gICAgICAgICAgICAvLyBpZiBjYXJkIGhlaWdodCBpcyBhbHJlYWR5IGF0IG1pbmktaGVhZGVyIGhlaWdodFxuICAgICAgICAgICAgaWYgKHRoaXMuX3ByZXZZIC0geVBvc2l0aW9uID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIGRlY3JlYXNpbmcgaGVpZ2h0XG4gICAgICAgICAgICAgICAgLy8gaWYgbWluaUhlYWRlciBoZWlnaHQgcmVhY2hlZCwgc3RvcCByZXNpemluZ1xuICAgICAgICAgICAgICAgIHRoaXMuY2FyZEhlaWdodCA9IHRoaXMuY2FyZE1pbmlIZWFkZXJIZWlnaHQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHJldkNhcmRIZWlnaHRSb3dTcGFuID0gdGhpcy5fY2FyZEhlaWdodFJvd1NwYW47XG4gICAgICAgICAgICAgICAgdGhpcy5fY2FyZEhlaWdodFJvd1NwYW4gPSBNYXRoLmZsb29yKHRoaXMuY2FyZEhlaWdodCAvIHZlcnRpY2FsUmVzaXplU3RlcCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGluY3JlYXNpbmcgaGVpZ2h0XG4gICAgICAgICAgICAgICAgdGhpcy5jYXJkSGVpZ2h0ID0gdGhpcy5jYXJkTWluaUhlYWRlckhlaWdodCArIHRoaXMuY2FyZE1pbmlDb250ZW50SGVpZ2h0O1xuICAgICAgICAgICAgICAgIHRoaXMuX3ByZXZDYXJkSGVpZ2h0Um93U3BhbiA9IHRoaXMuX2NhcmRIZWlnaHRSb3dTcGFuO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NhcmRIZWlnaHRSb3dTcGFuID0gTWF0aC5mbG9vcih0aGlzLmNhcmRIZWlnaHQgLyB2ZXJ0aWNhbFJlc2l6ZVN0ZXApO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0b3BSZXNpemluZygpO1xuICAgICAgICAgICAgICAgIHRoaXMubWluaUNvbnRlbnRSZWFjaGVkLmVtaXQodGhpcy5nZXRSZXNpemVkRXZlbnRPYmplY3QoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jYXJkSGVpZ2h0IDwgdGhpcy5jYXJkTWluaUNvbnRlbnRIZWlnaHQgKyB0aGlzLmNhcmRNaW5pSGVhZGVySGVpZ2h0KSB7XG4gICAgICAgICAgICAvLyBpZiBjYXJkIGhlaWdodCBpcyBiZXR3ZWVuIG1pbmktaGVhZGVyIGFuZCBtaW5pLWNvbnRlbnRcbiAgICAgICAgICAgIGlmICh0aGlzLl9wcmV2WSAtIHlQb3NpdGlvbiA8IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhcmRIZWlnaHQgPSB0aGlzLmNhcmRNaW5pSGVhZGVySGVpZ2h0ICsgdGhpcy5jYXJkTWluaUNvbnRlbnRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHJldkNhcmRIZWlnaHRSb3dTcGFuID0gdGhpcy5fY2FyZEhlaWdodFJvd1NwYW47XG4gICAgICAgICAgICAgICAgdGhpcy5fY2FyZEhlaWdodFJvd1NwYW4gPSBNYXRoLmZsb29yKHRoaXMuY2FyZEhlaWdodCAvIHZlcnRpY2FsUmVzaXplU3RlcCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RvcFJlc2l6aW5nKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5taW5pQ29udGVudFJlYWNoZWQuZW1pdCh0aGlzLmdldFJlc2l6ZWRFdmVudE9iamVjdCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIHRoaXMuY2FyZEhlaWdodCA9PT0gdGhpcy5jYXJkTWluaUNvbnRlbnRIZWlnaHQgKyB0aGlzLmNhcmRNaW5pSGVhZGVySGVpZ2h0ICYmXG4gICAgICAgICAgICB0aGlzLl9wcmV2WSAtIHlQb3NpdGlvbiA+IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBkZWNyZWFzaW5nIGhlaWdodFxuICAgICAgICAgICAgLy8gaGVpZ2h0IGRlY3JlYXNpbmcgYWZ0ZXIgcmVhY2hpbmcgbWluaS1jb250ZW50LiB0aGlzIG5lZWRzIHRvIGRpZmZlcmVudGlhdGVcbiAgICAgICAgICAgIC8vIGZyb20gaGVpZ2h0IGRlY3JlYXNpbmcgYW5kIHJlYWNoaW5nIHRvIG1pbmktY29udGVudC5cbiAgICAgICAgICAgIHJlYWNoaW5nTWluaUhlYWRlciA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmNhcmRIZWlnaHQgPSB0aGlzLmNhcmRNaW5pSGVhZGVySGVpZ2h0O1xuICAgICAgICAgICAgdGhpcy5fcHJldkNhcmRIZWlnaHRSb3dTcGFuID0gdGhpcy5fY2FyZEhlaWdodFJvd1NwYW47XG4gICAgICAgICAgICB0aGlzLl9jYXJkSGVpZ2h0Um93U3BhbiA9IE1hdGguZmxvb3IodGhpcy5jYXJkSGVpZ2h0IC8gdmVydGljYWxSZXNpemVTdGVwKTtcbiAgICAgICAgICAgIC8vIG1pbmlIZWFkZXIgaGVpZ2h0IHJlYWNoZWQsIHN0b3AgcmVzaXppbmdcbiAgICAgICAgICAgIHRoaXMuX3N0b3BSZXNpemluZygpO1xuICAgICAgICAgICAgdGhpcy5taW5pSGVhZGVyUmVhY2hlZC5lbWl0KHRoaXMuZ2V0UmVzaXplZEV2ZW50T2JqZWN0KCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jYXJkSGVpZ2h0ID0gdGhpcy5jYXJkSGVpZ2h0IC0gKHRoaXMuX3ByZXZZIC0geVBvc2l0aW9uKTtcbiAgICAgICAgICAgIHRoaXMuX3ByZXZDYXJkSGVpZ2h0Um93U3BhbiA9IHRoaXMuX2NhcmRIZWlnaHRSb3dTcGFuO1xuICAgICAgICAgICAgdGhpcy5fY2FyZEhlaWdodFJvd1NwYW4gPSBNYXRoLmZsb29yKHRoaXMuY2FyZEhlaWdodCAvIHZlcnRpY2FsUmVzaXplU3RlcCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzdG9wIHJlc2l6aW5nIG9uIG1pbmlDb250ZW50IGhlaWdodFxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmNhcmRIZWlnaHQgPD0gdGhpcy5jYXJkTWluaUNvbnRlbnRIZWlnaHQgKyB0aGlzLmNhcmRNaW5pSGVhZGVySGVpZ2h0ICYmXG4gICAgICAgICAgICB0aGlzLl9wcmV2WSAtIHlQb3NpdGlvbiA+IDAgJiZcbiAgICAgICAgICAgICFyZWFjaGluZ01pbmlIZWFkZXJcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmNhcmRIZWlnaHQgPSB0aGlzLmNhcmRNaW5pQ29udGVudEhlaWdodCArIHRoaXMuY2FyZE1pbmlIZWFkZXJIZWlnaHQ7XG4gICAgICAgICAgICB0aGlzLl9wcmV2Q2FyZEhlaWdodFJvd1NwYW4gPSB0aGlzLl9jYXJkSGVpZ2h0Um93U3BhbjtcbiAgICAgICAgICAgIHRoaXMuX2NhcmRIZWlnaHRSb3dTcGFuID0gTWF0aC5mbG9vcih0aGlzLmNhcmRIZWlnaHQgLyB2ZXJ0aWNhbFJlc2l6ZVN0ZXApO1xuICAgICAgICAgICAgdGhpcy5taW5pQ29udGVudFJlYWNoZWQuZW1pdCh0aGlzLmdldFJlc2l6ZWRFdmVudE9iamVjdCgpKTtcbiAgICAgICAgICAgIHRoaXMuX3N0b3BSZXNpemluZygpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gd2hpbGUgY29ybmVyIHJlc2l6ZSwgd2lkdGggbWlnaHQgaGF2ZSBpbmNyZWFzZWQgYW5kIHJlYWNoZWQgdG8gbWluaS1jb250ZW50IGhlaWdodC5cbiAgICAgICAgLy8gc28sIG9uIG1pbmktY29udGVudCByZXNpemUgd2lsbCBzdG9wLCBidXQgaGF2ZSB0byBkbyBzdGVwIHJlc2l6aW5nIGZvciB2ZXJ0aWNhbCBhbmQgaG9yaXpvbnRhbC5cbiAgICAgICAgaWYgKCF0aGlzLl9yZXNpemUpIHtcbiAgICAgICAgICAgIC8vIGluY3JlYXNlL2RlY3JlYXNlIHdpZHRoIG9mIGNhcmQgaW4gb3JkZXIgb2YgMjByZW1cbiAgICAgICAgICAgIGlmIChNYXRoLmFicyh0aGlzLmNhcmRXaWR0aCAtIHRoaXMuX3ByZXZDYXJkV2lkdGgpID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hvcml6b250YWxTdGVwUmVzaXppbmcoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gaW5jcmVhc2UvZGVjcmVhc2UgaGVpZ2h0IG9mIGNhcmQgaW4gb3JkZXIgb2YgMXJlbVxuICAgICAgICAgICAgaWYgKE1hdGguYWJzKHRoaXMuY2FyZEhlaWdodCAtIHRoaXMuX3ByZXZDYXJkSGVpZ2h0KSA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl92ZXJ0aWNhbFN0ZXBSZXNpemluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gcmVzZXQgaW52b2x2ZWQgdmFyaWFibGVzIHdoaWxlIHJlc2l6aW5nICovXG4gICAgcHJpdmF0ZSBfc3RvcFJlc2l6aW5nKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fcmVzaXplKSB7XG4gICAgICAgICAgICB0aGlzLmNhcmRTdGF0ZSA9IDA7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUluZGljYXRpb25Cb3JkZXJXaWR0aCA9IDA7XG4gICAgICAgICAgICB0aGlzLl9yZXNpemUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuekluZGV4ID0gMDtcbiAgICAgICAgICAgIHRoaXMuc2hvd0JvcmRlciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXNpemVkLmVtaXQodGhpcy5nZXRSZXNpemVkRXZlbnRPYmplY3QoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBSZXR1cm5zIGNhcmRXaWR0aCBiYXNlZCBvbiBjYXJkIGNvbHVtbiBzcGFuICovXG4gICAgcHJpdmF0ZSBfc2V0Q2FyZFdpZHRoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhcmRXaWR0aCA9IHRoaXMuX2NhcmRXaWR0aENvbFNwYW4gKiBob3Jpem9udGFsUmVzaXplU3RlcCArICh0aGlzLl9jYXJkV2lkdGhDb2xTcGFuIC0gMSkgKiBnYXA7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJldHVybnMgY2FyZEhlaWdodCBiYXNlZCBvbiBjYXJkIHJvdyBzcGFuICovXG4gICAgcHJpdmF0ZSBfc2V0Q2FyZEhlaWdodCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYXJkSGVpZ2h0ID0gdGhpcy5fY2FyZEhlaWdodFJvd1NwYW4gKiB2ZXJ0aWNhbFJlc2l6ZVN0ZXA7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJldHVybnMgY2FyZCBtaW5pIGhlYWRlciBoZWlnaHQgKi9cbiAgICBwcml2YXRlIF9zZXRDYXJkTWluaUhlYWRlckhlaWdodCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYXJkTWluaUhlYWRlckhlaWdodCA9IHRoaXMuX2NhcmRNaW5pSGVhZGVyUm93U3BhbiAqIHZlcnRpY2FsUmVzaXplU3RlcDtcbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUmV0dXJucyBjYXJkIG1pbmkgY29udGVudCBoZWlnaHQgKi9cbiAgICBwcml2YXRlIF9zZXRDYXJkTWluaUNvbnRlbnRIZWlnaHQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2FyZE1pbmlDb250ZW50SGVpZ2h0ID0gdGhpcy5jYXJkTWluaUNvbnRlbnRSb3dTcGFuICogdmVydGljYWxSZXNpemVTdGVwO1xuICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG59XG5cbi8qKiBDb25maWcgaW50ZXJmYWNlIGZvciBjYXJkIHByb3BlcnRpZXMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzaXphYmxlQ2FyZEl0ZW1Db25maWcge1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHJhbms/OiBudW1iZXI7XG4gICAgY2FyZFdpZHRoQ29sU3Bhbj86IG51bWJlcjtcbiAgICBjYXJkSGVpZ2h0Um93U3Bhbj86IG51bWJlcjtcbiAgICBjYXJkTWluaUhlYWRlclJvd1NwYW4/OiBudW1iZXI7XG4gICAgY2FyZE1pbmlDb250ZW50Um93U3Bhbj86IG51bWJlcjtcbiAgICByZXNpemFibGU/OiBib29sZWFuO1xufVxuXG4vKiogT2JqZWN0IHRvIGVtaXQgb24gcmVzaXplIGNvbXBsZXRlICovXG5leHBvcnQgY2xhc3MgUmVzaXplZEV2ZW50IHtcbiAgICAvKipcbiAgICAgKiBPYmplY3QgdG8gZW1pdCBvbiByZXNpemUgY29tcGxldGVcbiAgICAgKiBAcGFyYW0gY2FyZFxuICAgICAqIEBwYXJhbSBwcmV2Q2FyZFdpZHRoIFByZXZpb3VzIGNhcmQgd2lkdGhcbiAgICAgKiBAcGFyYW0gcHJldkNhcmRIZWlnaHQgUHJldmlvdXMgY2FyZCBoZWlnaHRcbiAgICAgKiBAcGFyYW0gY2FyZFdpZHRoIEN1cnJlbnQgY2FyZCB3aWR0aFxuICAgICAqIEBwYXJhbSBjYXJkSGVpZ2h0IEN1cnJlbnQgY2FyZCBoZWlnaHRcbiAgICAgKiBAcGFyYW0gY2FyZFdpZHRoQ29sU3BhbiBDdXJyZW50IGNhcmQgd2lkdGggY29sdW1uIHNwYW5cbiAgICAgKiBAcGFyYW0gY2FyZEhlaWdodFJvd1NwYW4gQ3VycmVudCBjYXJkIGhlaWdodCByb3cgc3BhblxuICAgICAqIEBwYXJhbSBuZXdDYXJkV2lkdGhDb2xTcGFuIE5ldyBjYXJkIHdpZHRoIGNvbHVtbiBzcGFuXG4gICAgICogQHBhcmFtIG5ld0NhcmRIZWlnaHRSb3dTcGFuIE5ldyBjYXJkIGhlaWdodCByb3cgc3BhblxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgY2FyZDogUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnQsXG4gICAgICAgIHB1YmxpYyBwcmV2Q2FyZFdpZHRoOiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyBwcmV2Q2FyZEhlaWdodDogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgY2FyZFdpZHRoOiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyBjYXJkSGVpZ2h0OiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyBjYXJkV2lkdGhDb2xTcGFuOiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyBjYXJkSGVpZ2h0Um93U3BhbjogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgbmV3Q2FyZFdpZHRoQ29sU3BhbjogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgbmV3Q2FyZEhlaWdodFJvd1NwYW46IG51bWJlclxuICAgICkge31cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImZkLXJlc2l6YWJsZS1jYXJkLWxheW91dF9faXRlbVwiXG4gICAgW2NsYXNzLmZkLXJlc2l6YWJsZS1jYXJkLWxheW91dF9faW5kaWNhdGlvbi1ib3JkZXJdPVwic2hvd0JvcmRlclwiXG4gICAgI3Jlc2l6ZUNhcmRcbj5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmQtcmVzaXphYmxlLWNhcmQtbGF5b3V0X19pdGVtLS1ib3JkZXItZGlzcGxheSBmZC1yZXNpemFibGUtY2FyZC1sYXlvdXRfX2l0ZW0tLXJlc2l6ZS10cmFuc2l0aW9uXCJcbiAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNhcmRXaWR0aFwiXG4gICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiY2FyZEhlaWdodFwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cInNob3dSZXNpemVJY29uKClcIlxuICAgICAgICAobW91c2VsZWF2ZSk9XCJoaWRlUmVzaXplSWNvbigpXCJcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmZC1yZXNpemFibGUtY2FyZC1sYXlvdXRfX2NhcmRcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dpbmdSZXNpemVJY29uXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkLXJlc2l6YWJsZS1jYXJkLWxheW91dF9faWNvbi13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtcmVzaXphYmxlLWNhcmQtbGF5b3V0X19pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICNjb3JuZXJIYW5kbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25Nb3VzZURvd24oJGV2ZW50LCAnYm90aCcpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXNpemFibGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ2ZXJ0aWNhbEhhbmRsZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaG9yaXpvbnRhbEhhbmRsZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZkLXJlc2l6YWJsZS1jYXJkLWxheW91dF9faXRlbS0tcmVzaXplLXRyYW5zaXRpb25cIlxuICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwicmVzaXplSW5kaWNhdGlvbkJvcmRlcldpZHRoXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJjYXJkSGVpZ2h0XCJcbiAgICA+PC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICN2ZXJ0aWNhbEhhbmRsZVRlbXBsYXRlPlxuICAgIDxkaXZcbiAgICAgICAgI3ZlcnRpY2FsSGFuZGxlXG4gICAgICAgIGNsYXNzPVwiZmQtcmVzaXphYmxlLWNhcmQtbGF5b3V0X19yZXNpemUtLXZlcnRpY2FsXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvbk1vdXNlRG93bigkZXZlbnQsICdob3Jpem9udGFsJylcIlxuICAgID48L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaG9yaXpvbnRhbEhhbmRsZVRlbXBsYXRlPlxuICAgIDxkaXZcbiAgICAgICAgI2hvcml6b250YWxIYW5kbGVcbiAgICAgICAgY2xhc3M9XCJmZC1yZXNpemFibGUtY2FyZC1sYXlvdXRfX3Jlc2l6ZS0taG9yaXpvbnRhbFwiXG4gICAgICAgIChtb3VzZWRvd24pPVwib25Nb3VzZURvd24oJGV2ZW50LCAndmVydGljYWwnKVwiXG4gICAgPjwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
619
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLWNhcmQtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9yZXNpemFibGUtY2FyZC1sYXlvdXQvcmVzaXphYmxlLWNhcmQtbGF5b3V0L3Jlc2l6YWJsZS1jYXJkLWl0ZW0vcmVzaXphYmxlLWNhcmQtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9yZXNpemFibGUtY2FyZC1sYXlvdXQvcmVzaXphYmxlLWNhcmQtbGF5b3V0L3Jlc2l6YWJsZS1jYXJkLWl0ZW0vcmVzaXphYmxlLWNhcmQtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQUlwQyw0REFBNEQ7QUFDNUQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxDQUFDO0FBRXhDLHVCQUF1QjtBQUN2QixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxFQUFFLENBQUM7QUFFckMsZ0NBQWdDO0FBQ2hDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFFdEIsNENBQTRDO0FBQzVDLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQztBQUUxQywwQ0FBMEM7QUFDMUMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0FB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Q2pCLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDbEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFRO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBUTtRQUN6Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQVE7UUFDM0IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFRO0lBQ3BDLENBQUM7Q0FDUCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9jdXNhYmxlT3B0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgUnRsU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCB0eXBlIFJlc2l6ZURpcmVjdGlvbiA9ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCcgfCAnYm90aCc7XG5cbi8vIENhcmQgcmVzaXplcyBpbiBzdGVwIG9mIGZpeGVkIHZhbHVlcy4gdmFsdWVzIGFyZSBpbiBwaXhlbFxuZXhwb3J0IGNvbnN0IGhvcml6b250YWxSZXNpemVTdGVwID0gMzIwO1xuXG4vLyB2ZXJ0aWNhbCByZXNpemUgc3RlcFxuZXhwb3J0IGNvbnN0IHZlcnRpY2FsUmVzaXplU3RlcCA9IDE2O1xuXG4vLyBnYXAgb2YgMXJlbSBiZXR3ZWVuIHRoZSBjYXJkc1xuZXhwb3J0IGNvbnN0IGdhcCA9IDE2O1xuXG4vLyB0aHJlc2hvbGQgb2Zmc2V0IGZvciBob3Jpem9udGFsIHJlc2l6aW5nLlxuZXhwb3J0IGNvbnN0IGhvcml6b250YWxSZXNpemVPZmZzZXQgPSAxNjA7XG5cbi8vIHRocmVzaG9sZCBvZmZzZXQgZm9yIHZlcnRpY2FsIHJlc2l6aW5nLlxuZXhwb3J0IGNvbnN0IHZlcnRpY2FsUmVzaXplT2Zmc2V0ID0gODtcblxuLy8gc3RhdGUgb2YgY2FyZC4gSW5jcmVhc2luZyB3aWR0aCwgbm8gY2hhbmdlIG9yIGRlY3JlYXNpbmcgd2lkdGguXG5leHBvcnQgdHlwZSBDYXJkU3RhdGUgPSAxIHwgMCB8IC0xO1xuXG4vLyBjYXJkIGlzIGdpdmVuIG51bWVyaWMgdmFsdWUsIG9uIHdoaWNoIHNvcnRpbmcgb2YgY2FyZHMgaXMgZG9uZVxubGV0IGNhcmRSYW5rID0gMTtcbmxldCBjYXJkVW5pcXVlSWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLXJlc2l6YWJsZS1jYXJkLWl0ZW0nLFxuICAgIHRlbXBsYXRlVXJsOiAncmVzaXphYmxlLWNhcmQtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcmVzaXphYmxlLWNhcmQtaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBGb2N1c2FibGVPcHRpb24sIE9uRGVzdHJveSB7XG4gICAgLyoqIENhcmQgcHJvcGVydGllcyBmcm9tIHRoZSBjb25maWcgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBjb25maWcoY29uZmlnOiBSZXNpemFibGVDYXJkSXRlbUNvbmZpZykge1xuICAgICAgICB0aGlzLl9jb25maWcgPSBjb25maWc7XG4gICAgICAgIHRoaXMuX2luaXRpYWxTZXR1cCgpO1xuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICAgIGdldCBjb25maWcoKTogUmVzaXphYmxlQ2FyZEl0ZW1Db25maWcge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlnO1xuICAgIH1cblxuICAgIC8qKiBzZXQgdWlucXVlIGlkIGZvciB0aGUgY2FyZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgaXRlbUlkID0gYGZkLWNhcmQtaXRlbS0ke2NhcmRVbmlxdWVJZCsrfWA7XG5cbiAgICAvKiogc2V0IHRpdGxlIG9mIHRoZSBjYXJkICovXG4gICAgQElucHV0KClcbiAgICB0aXRsZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogU2VyaWFsIG9yZGVyIG9mIGNhcmQuXG4gICAgICogY2FyZHMgYXJlIHNvcnRlZCBiYXNlZCBvbiByYW5rcyBiZWZvcmUgZGlzcGxheWluZyBsYXlvdXQuXG4gICAgICogY2FyZCB3aXRoIGxvd2VyIHJhbmsgd2lsbCBiZSBkaXNwbGF5ZWQgZmlyc3QgaW4gbGF5b3V0IHRoYW4gdGhlIGNhcmQgd2l0aCBoaWdoZXIgcmFuay5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCByYW5rKHJhbmtWYWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIC8vIGRldGVybWluZSBtYXggdmFsdWUgYmV0d2VlbiB1c2VyIGdpdmVuIHZhbHVlIGFuZCBkZWZhdWx0IHZhbHVlXG4gICAgICAgIHRoaXMuX3JhbmsgPSByYW5rVmFsdWUgPyByYW5rVmFsdWUgOiBjYXJkUmFuaysrO1xuICAgICAgICBpZiAocmFua1ZhbHVlID4gY2FyZFJhbmspIHtcbiAgICAgICAgICAgIGNhcmRSYW5rID0gcmFua1ZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCByYW5rKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yYW5rO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE51bWJlciBvZiBjb2x1bW4gc3BhbiBjYXJkIHdpZHRoIHRha2VzLlxuICAgICAqIEl0IHdpbGwgYmUgaW4gc3RlcCBvZiAyMHJlbS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBjYXJkV2lkdGhDb2xTcGFuKGNvbFNwYW46IG51bWJlcikge1xuICAgICAgICB0aGlzLl9jYXJkV2lkdGhDb2xTcGFuID0gY29sU3BhbjtcbiAgICAgICAgdGhpcy5fc2V0Q2FyZFdpZHRoKCk7XG4gICAgfVxuICAgIGdldCBjYXJkV2lkdGhDb2xTcGFuKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYXJkV2lkdGhDb2xTcGFuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE51bWJlciBvZiByb3cgc3BhbiwgY2FyZCBoZWlnaHQgdGFrZXMuXG4gICAgICogSXQgd2lsbCBiZSBpbiB0aGUgc3RlcCBvZiAxcmVtLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGNhcmRIZWlnaHRSb3dTcGFuKHJvd1NwYW46IG51bWJlcikge1xuICAgICAgICB0aGlzLl9jYXJkSGVpZ2h0Um93U3BhbiA9IHJvd1NwYW47XG4gICAgICAgIHRoaXMuX3NldENhcmRIZWlnaHQoKTtcbiAgICB9XG4gICAgZ2V0IGNhcmRIZWlnaHRSb3dTcGFuKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYXJkSGVpZ2h0Um93U3BhbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOdW1iZXIgb2Ygcm93IHNwYW4gY2FyZCBtaW5pIGhlYWRlciBoZWlnaHQgdGFrZXMuXG4gICAgICogTWluaSBIZWFkZXI6IFRoZSBzbWFsbGVzdCByZXByZXNlbnRhdGlvbiBvZiB0aGUgY2FyZCBpcyB0aGUgaGVhZGVyLlxuICAgICAqIFRoZSBjYXJkIGNhbiBiZSBjb2xsYXBzZWQgdG8gb25seSBpdHMgaGVhZGVyIGhlaWdodC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBjYXJkTWluaUhlYWRlclJvd1NwYW4ocm93U3BhbjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2NhcmRNaW5pSGVhZGVyUm93U3BhbiA9IHJvd1NwYW47XG4gICAgICAgIHRoaXMuX3NldENhcmRNaW5pSGVhZGVySGVpZ2h0KCk7XG4gICAgfVxuICAgIGdldCBjYXJkTWluaUhlYWRlclJvd1NwYW4oKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhcmRNaW5pSGVhZGVyUm93U3BhbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOdW1iZXIgb2Ygcm93IHNwYW4gY2FyZCBtaW5pIGNvbnRlbnQgaGVpZ2h0IHRha2VzLlxuICAgICAqIE1pbmkgQ29udGVudDogVGhlIG1pbmltdW0gaGVpZ2h0IGZvciB0aGUgY2FyZCBjb250ZW50IGRlcGVuZHMgb24gdGhlIGNhcmQgdHlwZSxcbiAgICAgKiBhbmQgbXVzdCBiZSBhcyBoaWdoIGFzIHRoZSBzbWFsbGVzdCByZXByZXNlbnRhdGlvbiBvZiB0aGUgY29udGVudC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBjYXJkTWluaUNvbnRlbnRSb3dTcGFuKHJvd1NwYW46IG51bWJlcikge1xuICAgICAgICB0aGlzLl9jYXJkTWluaUNvbnRlbnRSb3dTcGFuID0gcm93U3BhbjtcbiAgICAgICAgdGhpcy5fc2V0Q2FyZE1pbmlDb250ZW50SGVpZ2h0KCk7XG4gICAgfVxuICAgIGdldCBjYXJkTWluaUNvbnRlbnRSb3dTcGFuKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYXJkTWluaUNvbnRlbnRSb3dTcGFuID8/IDA7XG4gICAgfVxuXG4gICAgLyoqIENhcmQgY2FuIGJlIHNldCB0byByZXNpemFibGU9ZmFsc2UsIHRvIHJlc3RyaWN0IGNhcmQgcmVzaXplICovXG4gICAgQElucHV0KClcbiAgICByZXNpemFibGUgPSB0cnVlO1xuXG4gICAgLyoqIFNldCBsZWZ0IHBvc2l0aW9uIGZvciB0aGUgY2FyZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5sZWZ0LnB4JylcbiAgICBsZWZ0OiBOdWxsYWJsZTxudW1iZXI+O1xuXG4gICAgLyoqIFNldCByaWdodCBwb3NpdGlvbiBmb3IgdGhlIGNhcmQgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnc3R5bGUucmlnaHQucHgnKVxuICAgIHJpZ2h0OiBOdWxsYWJsZTxudW1iZXI+O1xuXG4gICAgLyoqIFNldCB0b3AgcG9zaXRpb24gZm9yIHRoZSBjYXJkKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnc3R5bGUudG9wLnB4JylcbiAgICB0b3AgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gd2hpbGUgcmVzaXppbmcgdGhpcyB2YWx1ZSB3aWxsIGNoYW5nZSB0byBhIGdyZWF0ZXIgdmFsdWUgKi9cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLnotaW5kZXgnKVxuICAgIHpJbmRleCA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUucG9zaXRpb24nKVxuICAgIHBvc2l0aW9uID0gJ2Fic29sdXRlJztcblxuICAgIC8qKiBAaGlkZGVuIHRyYW5zaXRpb24gYW5pbWF0aW9uIHdoZW4gbGF5b3V0IHJlLWRyYXdzICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC1yZXNpemFibGUtY2FyZC1sYXlvdXRfX2RyYXctdHJhbnNpdGlvbicpXG4gICAgcmVEcmF3QW5pbWF0aW9uID0gdHJ1ZTtcblxuICAgIC8qKiBFbWl0cyB3aGVuIGNhcmQgaXMgc3RpbGwgcmVzaXppbmcgKi9cbiAgICBAT3V0cHV0KClcbiAgICByZXNpemluZzogRXZlbnRFbWl0dGVyPFJlc2l6ZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlc2l6ZWRFdmVudD4oKTtcblxuICAgIC8qKiBFbWl0cyB3aGVuIGNhcmQgcmVzaXplIGlzIGNvbXBsZXRlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlc2l6ZWQ6IEV2ZW50RW1pdHRlcjxSZXNpemVkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZXNpemVkRXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHMgd2hlbiBjYXJkIGhlaWdodCBpcyByZWR1Y2VkIHRvIHNob3cgb25seSBoZWFkZXIgKi9cbiAgICBAT3V0cHV0KClcbiAgICBtaW5pSGVhZGVyUmVhY2hlZDogRXZlbnRFbWl0dGVyPFJlc2l6ZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlc2l6ZWRFdmVudD4oKTtcblxuICAgIC8qKiBFbWl0cyB3aGVuIG1pbmltdW0gaGVpZ2h0IG9mIGNhcmQgY29udGVudCBhcmVhIGlzIHJlYWNoZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICBtaW5pQ29udGVudFJlYWNoZWQ6IEV2ZW50RW1pdHRlcjxSZXNpemVkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZXNpemVkRXZlbnQ+KCk7XG5cbiAgICAvKiogc2hvdyBjb3JuZXIgcmVzaXplIGljb24gb24gaG92ZXIgb3ZlciBjYXJkICovXG4gICAgc2hvd2luZ1Jlc2l6ZUljb24gPSBmYWxzZTtcblxuICAgIC8qKiBzaG93IGJvcmRlciB3aGVuIGNhcmQgaXMgcmVzaXppbmcgKi9cbiAgICBzaG93Qm9yZGVyID0gZmFsc2U7XG5cbiAgICAvKiogc3RhcnRpbmcgY29sdW1uIHBvc2l0aW9uIG9mIGNhcmQuIHN0YXJ0cyB3aXRoIDAgKi9cbiAgICBzdGFydGluZ0NvbHVtblBvc2l0aW9uOiBudW1iZXI7XG5cbiAgICAvKiogY2FyZCB3aWR0aCBpbiBweC4gRGVmYXVsdCB2YWx1ZSB0byAyMHJlbSAqL1xuICAgIGNhcmRXaWR0aDogbnVtYmVyID0gaG9yaXpvbnRhbFJlc2l6ZVN0ZXA7XG5cbiAgICAvKiogY2FyZCBoZWlnaHQgaW4gcHggKi9cbiAgICBjYXJkSGVpZ2h0OiBudW1iZXI7XG5cbiAgICAvKiogTWluaS1oZWFkZXIgaGVpZ2h0IG9mIGNhcmQgKi9cbiAgICBjYXJkTWluaUhlYWRlckhlaWdodDogbnVtYmVyO1xuXG4gICAgLyoqIE1pbmktY29udGVudCBoZWlnaHQgb2YgY2FyZCB0byBkaXNwbGF5IG1pbmltdW0gdmFsaWQgY29udGVudCAqL1xuICAgIGNhcmRNaW5pQ29udGVudEhlaWdodDogbnVtYmVyO1xuXG4gICAgLyoqIE91dGVyIHJlc2l6ZSBpbmRpY2F0aW9uIGJvcmRlciB3aWR0aCBmb3IgdGhlIGNhcmQgKi9cbiAgICByZXNpemVJbmRpY2F0aW9uQm9yZGVyV2lkdGggPSAwO1xuXG4gICAgLyoqXG4gICAgICogRGVub3RlcyBpZiBjYXJkIGlzIGN1cnJlbnRseSBleHBhbmRpbmcgb3IgY29udHJhY3RpbmcgaG9yaXpvbnRhbGx5LlxuICAgICAqICsxIGRlbm90ZXMgaW5jcmVhc2luZywgLTEgZGVub3RlcyBkZWNyZWFzaW5nIGFuZCAwIGRlbm90ZXMgY2FyZC1zdGF0ZSBoYXMgbm90IGNoYW5nZWQgaG9yaXpvbnRhbGx5LlxuICAgICAqL1xuICAgIGNhcmRTdGF0ZTogQ2FyZFN0YXRlID0gMDtcblxuICAgIC8qKiBDaGFuZ2UgaW4gcmFuayBmcm9tIHByZXZpb3VzIHZhbHVlKi9cbiAgICBwcmV2UmFuayA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiBEZWZhdWx0IHdpZHRoIG9mIGNhcmQgaXMgMjByZW0gaWUuIDEgY29sdW1uICovXG4gICAgcHJpdmF0ZSBfY2FyZFdpZHRoQ29sU3BhbiA9IDE7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhcmRIZWlnaHRSb3dTcGFuOiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiBoZWxwcyBpbiB2ZXJ0aWNhbCBzdGVwIGNoYW5nZSBldmVudCBlbWl0ICovXG4gICAgcHJpdmF0ZSBfcHJldkNhcmRIZWlnaHRSb3dTcGFuOiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhcmRNaW5pSGVhZGVyUm93U3BhbjogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYXJkTWluaUNvbnRlbnRSb3dTcGFuPzogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gY29uZmlnIHZhbHVlcyBmb3IgY2FyZCAqL1xuICAgIHByaXZhdGUgX2NvbmZpZzogUmVzaXphYmxlQ2FyZEl0ZW1Db25maWc7XG5cbiAgICAvKiogQGhpZGRlbiBwcmV2aW91cyBjdXJzb3IgeCBwb3NpdGlvbiAqL1xuICAgIHByaXZhdGUgX3ByZXZYOiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiBwcmV2aW91cyBjdXJzb3IgeSBwb3NpdGlvbiAqL1xuICAgIHByaXZhdGUgX3ByZXZZOiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ByZXZDYXJkV2lkdGg6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJldkNhcmRIZWlnaHQ6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuIGZsYWcgdG8gY29udHJvbCByZXNpemUgKi9cbiAgICBwcml2YXRlIF9yZXNpemUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzaXplRGlyZWN0aW9uOiBSZXNpemVEaXJlY3Rpb247XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX21heENvbHVtbjogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBzdG9yZXMgb3JpZ2luYWwgd2lkdGggc3BhbiBvZiBjYXJkLlxuICAgICAqIEl0IG1heSByZWR1Y2Ugb24gc21hbGwgc2NyZWVuLCBzbyBoYXZlIHRvIHJlc3RvcmUgdXNpbmcgdGhpcy5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9vcmlnaW5hbENhcmRXaWR0aFNwYW4gPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yYW5rOiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3J0bCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfcnRsU2VydmljZTogUnRsU2VydmljZVxuICAgICkge1xuICAgICAgICBpZiAodGhpcy5fcnRsU2VydmljZSkge1xuICAgICAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5fcnRsU2VydmljZS5ydGwuc3Vic2NyaWJlKCh2YWx1ZSkgPT4gKHRoaXMuX3J0bCA9IHZhbHVlKSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZW4gcmVzaXplIGhhbmRsZXIgaXMgcHJlc3NlZCBhbmQgcmVzaXppbmcgbWF5IHN0YXJ0LlxuICAgICAqIEBwYXJhbSBldmVudDogTW91c2VFdmVudFxuICAgICAqIEBwYXJhbSByZXNpemVEaXJlY3Rpb246IHdoaWNoIGhhbmRsZXIgaXMgcHJlc3NlZCB0byByZXNpemVcbiAgICAgKi9cbiAgICBvbk1vdXNlRG93bihldmVudDogTW91c2VFdmVudCwgcmVzaXplRGlyZWN0aW9uOiBSZXNpemVEaXJlY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKCF0aGlzLnJlc2l6YWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zaG93aW5nUmVzaXplSWNvbiA9IHRydWU7XG4gICAgICAgIHRoaXMuX3Jlc2l6ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuX3ByZXZYID0gZXZlbnQuY2xpZW50WDtcbiAgICAgICAgdGhpcy5fcHJldlkgPSBldmVudC5jbGllbnRZO1xuICAgICAgICB0aGlzLl9wcmV2Q2FyZFdpZHRoID0gdGhpcy5jYXJkV2lkdGg7XG4gICAgICAgIHRoaXMuX3ByZXZDYXJkSGVpZ2h0ID0gdGhpcy5jYXJkSGVpZ2h0O1xuICAgICAgICB0aGlzLl9yZXNpemVEaXJlY3Rpb24gPSByZXNpemVEaXJlY3Rpb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBXaGVuIG1vdXNlIG1vdmVzIHRvIHJlc2l6ZSB0aGUgY2FyZC5cbiAgICAgKiB1c2luZyB3aW5kb3c6bW91c2Vtb3ZlIHNvLCByZXNpemUgd2lsbCBoYXBwZW4gc21vb3RobHlcbiAgICAgKiBAcGFyYW0gZXZlbnQ6IE1vdXNlRXZlbnRcbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bW91c2Vtb3ZlJywgWyckZXZlbnQnXSlcbiAgICBvbk1vdXNlTW92ZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAoIXRoaXMucmVzaXphYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzYXZlcyBmcm9tIHVuLW5lY2Vzc2FyeSByZXNpemVcbiAgICAgICAgaWYgKCF0aGlzLl9yZXNpemUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5zaG93Qm9yZGVyKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dCb3JkZXIgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcmVzaXppbmcgY2FyZCB3aWxsIGdvIG92ZXIgb3RoZXIgY2FyZHNcbiAgICAgICAgdGhpcy56SW5kZXggPSAxO1xuXG4gICAgICAgIGNvbnN0IHsgY2xpZW50WCwgY2xpZW50WSB9ID0gZXZlbnQ7XG4gICAgICAgIHN3aXRjaCAodGhpcy5fcmVzaXplRGlyZWN0aW9uKSB7XG4gICAgICAgICAgICBjYXNlICdib3RoJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9ob3Jpem9udGFsUmVzaXppbmcoY2xpZW50WCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fdmVydGljYWxSZXNpemluZyhjbGllbnRZKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2hvcml6b250YWwnOlxuICAgICAgICAgICAgICAgIHRoaXMuX2hvcml6b250YWxSZXNpemluZyhjbGllbnRYKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3ZlcnRpY2FsJzpcbiAgICAgICAgICAgICAgICB0aGlzLl92ZXJ0aWNhbFJlc2l6aW5nKGNsaWVudFkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aGlzLl9ob3Jpem9udGFsUmVzaXppbmcoY2xpZW50WCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fdmVydGljYWxSZXNpemluZyhjbGllbnRZKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNhcmRXaWR0aENvbFNwYW4gPSBNYXRoLmZsb29yKHRoaXMuY2FyZFdpZHRoIC8gaG9yaXpvbnRhbFJlc2l6ZVN0ZXApO1xuICAgICAgICBjb25zdCBjYXJkV2lkdGhXaXRoQ29sdW1uID0gY2FyZFdpZHRoQ29sU3BhbiAqIGhvcml6b250YWxSZXNpemVTdGVwICsgY2FyZFdpZHRoQ29sU3BhbiAqIGdhcDtcblxuICAgICAgICBjb25zdCBob3Jpem9udGFsUmVzaXplVGhyZXNob2xkUmVhY2hlZCA9IHRoaXMuY2FyZFdpZHRoIC0gY2FyZFdpZHRoV2l0aENvbHVtbiA+IGhvcml6b250YWxSZXNpemVPZmZzZXQ7XG5cbiAgICAgICAgaWYgKGNsaWVudFggPiB0aGlzLl9wcmV2WCkge1xuICAgICAgICAgICAgLy8gaW5jcmVhc2luZyB3aWR0aFxuICAgICAgICAgICAgdGhpcy5jYXJkU3RhdGUgPSAxO1xuXG4gICAgICAgICAgICBpZiAoaG9yaXpvbnRhbFJlc2l6ZVRocmVzaG9sZFJlYWNoZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmdXR1cmVDYXJkV2lkdGggPSAoY2FyZFdpZHRoQ29sU3BhbiArIDEpICogaG9yaXpvbnRhbFJlc2l6ZVN0ZXAgKyBjYXJkV2lkdGhDb2xTcGFuICogZ2FwO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzaXplSW5kaWNhdGlvbkJvcmRlcldpZHRoID0gZnV0dXJlQ2FyZFdpZHRoIC0gdGhpcy5jYXJkV2lkdGg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzaXplSW5kaWNhdGlvbkJvcmRlcldpZHRoID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChjbGllbnRYIDwgdGhpcy5fcHJldlgpIHtcbiAgICAgICAgICAgIC8vIGRlY3JlYXNpbmcgd2lkdGhcbiAgICAgICAgICAgIHRoaXMuY2FyZFN0YXRlID0gLTE7XG4gICAgICAgICAgICBpZiAoaG9yaXpvbnRhbFJlc2l6ZVRocmVzaG9sZFJlYWNoZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmdXR1cmVDYXJkV2lkdGggPSAoY2FyZFdpZHRoQ29sU3BhbiArIDEpICogaG9yaXpvbnRhbFJlc2l6ZVN0ZXAgKyBjYXJkV2lkdGhDb2xTcGFuICogZ2FwO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzaXplSW5kaWNhdGlvbkJvcmRlcldpZHRoID0gZnV0dXJlQ2FyZFdpZHRoIC0gdGhpcy5jYXJkV2lkdGg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzaXplSW5kaWNhdGlvbkJvcmRlcldpZHRoID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3ByZXZYID0gY2xpZW50WDtcbiAgICAgICAgdGhpcy5fcHJldlkgPSBjbGllbnRZO1xuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgLy8gRW1pdHMgcmVzaXppbmcgZXZlbnQuXG4gICAgICAgIHRoaXMucmVzaXppbmcuZW1pdCh0aGlzLmdldFJlc2l6ZWRFdmVudE9iamVjdCgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB3aGVuIHJlc2l6aW5nIG9mIGNhcmQgc3RvcHNcbiAgICAgKiBAcGFyYW0gZXZlbnQ6IE1vdXNlRXZlbnRcbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDogbW91c2V1cCcsIFsnJGV2ZW50J10pXG4gICAgb25Nb3VzZVVwKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMucmVzaXphYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gaWYgY2FyZCB3YXMgbm90IHJlc2l6aW5nXG4gICAgICAgIGlmICghdGhpcy5fcmVzaXplKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpbmNyZWFzZS9kZWNyZWFzZSB3aWR0aCBvZiBjYXJkIGluIG9yZGVyIG9mIDIwcmVtXG4gICAgICAgIGlmIChNYXRoLmFicyh0aGlzLmNhcmRXaWR0aCAtIHRoaXMuX3ByZXZDYXJkV2lkdGgpID4gMCkge1xuICAgICAgICAgICAgdGhpcy5faG9yaXpvbnRhbFN0ZXBSZXNpemluZygpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaW5jcmVhc2UvZGVjcmVhc2UgaGVpZ2h0IG9mIGNhcmQgaW4gb3JkZXIgb2YgMXJlbVxuICAgICAgICBpZiAoTWF0aC5hYnModGhpcy5jYXJkSGVpZ2h0IC0gdGhpcy5fcHJldkNhcmRIZWlnaHQpID4gMCkge1xuICAgICAgICAgICAgdGhpcy5fdmVydGljYWxTdGVwUmVzaXppbmcoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3N0b3BSZXNpemluZygpO1xuICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogU2V0cyBmb2N1cyBvbiB0aGUgZWxlbWVudCAqL1xuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBoZWFkZXIgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZmQtY2FyZF9faGVhZGVyJyk7XG4gICAgICAgIGhlYWRlcj8uZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKiogU2hvd3MgcmVzaXplIGljb24gKi9cbiAgICBzaG93UmVzaXplSWNvbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnJlc2l6YWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2hvd2luZ1Jlc2l6ZUljb24gPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKiBIaWRlcyByZXNpemUgaWNvbiAqL1xuICAgIGhpZGVSZXNpemVJY29uKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3Jlc2l6ZSkge1xuICAgICAgICAgICAgdGhpcy5zaG93aW5nUmVzaXplSWNvbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFJldHVybnMgbWF4IHdpZHRoIGZvciBjYXJkLCBiYXNlZCBvbiBsYXlvdXQgc2l6ZSBwYXNzZWQgKi9cbiAgICBnZXRNYXhDb2xTcGFuKGxheW91dFNpemU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIHN3aXRjaCAobGF5b3V0U2l6ZSkge1xuICAgICAgICAgICAgY2FzZSAnc20nOlxuICAgICAgICAgICAgICAgIHRoaXMuX21heENvbHVtbiA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5fbWF4Q29sdW1uID0gMjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2xnJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9tYXhDb2x1bW4gPSAzO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAneGwnOlxuICAgICAgICAgICAgICAgIHRoaXMuX21heENvbHVtbiA9IDQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMuX21heENvbHVtbiA9IDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX21heENvbHVtbjtcbiAgICB9XG5cbiAgICAvKiogVXBkYXRlIGNhcmQgd2lkdGggaWYgaXQgZXhjZWVkcyBjb2x1bW4gc3BhbiBiYXNlZCBvbiBsYXlvdXQgKi9cbiAgICB2ZXJpZnlVcGRhdGVDYXJkV2lkdGgobGF5b3V0U2l6ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHdpZHRoQ29sU3BhbiA9IHRoaXMuX2NvbmZpZz8uY2FyZFdpZHRoQ29sU3BhbiB8fCB0aGlzLmNhcmRXaWR0aENvbFNwYW47XG4gICAgICAgIC8vIHN0b3Jpbmcgb3JpZ2luYWwgd2lkdGggb2YgY2FyZC5cbiAgICAgICAgLy8gdXNlZCB0byByZXN0b3JlIHdpZHRoIG9uIHdpbmRvdyByZXNpemUgZnJvbSBzbWFsbCB0byBsYXJnZVxuICAgICAgICB0aGlzLl9vcmlnaW5hbENhcmRXaWR0aFNwYW4gPSAhdGhpcy5fb3JpZ2luYWxDYXJkV2lkdGhTcGFuID8gd2lkdGhDb2xTcGFuIDogdGhpcy5fb3JpZ2luYWxDYXJkV2lkdGhTcGFuO1xuICAgICAgICB0aGlzLl9tYXhDb2x1bW4gPSB0aGlzLmdldE1heENvbFNwYW4obGF5b3V0U2l6ZSk7XG4gICAgICAgIGlmICh3aWR0aENvbFNwYW4gPiB0aGlzLl9tYXhDb2x1bW4pIHtcbiAgICAgICAgICAgIHRoaXMuY2FyZFdpZHRoQ29sU3BhbiA9IHRoaXMuX21heENvbHVtbjtcbiAgICAgICAgICAgIHRoaXMuX3NldENhcmRXaWR0aCgpO1xuICAgICAgICAgICAgLy8gRW1pdHMgcmVzaXplZCBldmVudC5cbiAgICAgICAgICAgIHRoaXMucmVzaXplZC5lbWl0KHRoaXMuZ2V0UmVzaXplZEV2ZW50T2JqZWN0KCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8ga2VlcCBjYXJkIHdpZHRoIG1pbmltdW0sIHNvIGl0IGNhbiBmaXQgaW4gc2NyZWVuLlxuICAgICAgICAgICAgdGhpcy5jYXJkV2lkdGhDb2xTcGFuID0gTWF0aC5taW4odGhpcy5fbWF4Q29sdW1uLCB0aGlzLl9vcmlnaW5hbENhcmRXaWR0aFNwYW4pO1xuICAgICAgICAgICAgdGhpcy5fc2V0Q2FyZFdpZHRoKCk7XG4gICAgICAgICAgICAvLyBFbWl0cyByZXNpemVkIGV2ZW50LlxuICAgICAgICAgICAgdGhpcy5yZXNpemVkLmVtaXQodGhpcy5nZXRSZXNpemVkRXZlbnRPYmplY3QoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogUmV0dXJucyBSZXNpemVkRXZlbnQgb2JqZWN0IHRvIGVtaXQuICovXG4gICAgZ2V0UmVzaXplZEV2ZW50T2JqZWN0KCk6IFJlc2l6ZWRFdmVudCB7XG4gICAgICAgIGNvbnN0IG5ld0NhcmRIZWlnaHRSb3dTcGFuID0gTWF0aC5mbG9vcih0aGlzLmNhcmRIZWlnaHQgLyB2ZXJ0aWNhbFJlc2l6ZVN0ZXApO1xuICAgICAgICBjb25zdCBuZXdDYXJkV2lkdGhDb2xTcGFuID0gTWF0aC5mbG9vcih0aGlzLmNhcmRXaWR0aCAvIGhvcml6b250YWxSZXNpemVTdGVwKTtcbiAgICAgICAgY29uc3QgbmV3Q2FyZFdpZHRoID0gbmV3Q2FyZFdpZHRoQ29sU3BhbiAqIGhvcml6b250YWxSZXNpemVTdGVwICsgbmV3Q2FyZFdpZHRoQ29sU3BhbiAqIGdhcDtcblxuICAgICAgICBjb25zdCBob3Jpem9udGFsUmVzaXplVGhyZXNob2xkUmVhY2hlZCA9IHRoaXMuY2FyZFdpZHRoIC0gbmV3Q2FyZFdpZHRoID4gaG9yaXpvbnRhbFJlc2l6ZU9mZnNldDtcbiAgICAgICAgY29uc3QgbmV3Q2FyZENvbFNwYW4gPSBob3Jpem9udGFsUmVzaXplVGhyZXNob2xkUmVhY2hlZCA/IG5ld0NhcmRXaWR0aENvbFNwYW4gKyAxIDogbmV3Q2FyZFdpZHRoQ29sU3BhbjtcbiAgICAgICAgcmV0dXJuIG5ldyBSZXNpemVkRXZlbnQoXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgdGhpcy5fcHJldkNhcmRXaWR0aCxcbiAgICAgICAgICAgIHRoaXMuX3ByZXZDYXJkSGVpZ2h0LFxuICAgICAgICAgICAgdGhpcy5jYXJkV2lkdGgsXG4gICAgICAgICAgICB0aGlzLmNhcmRIZWlnaHQsXG4gICAgICAgICAgICB0aGlzLl9jYXJkV2lkdGhDb2xTcGFuLFxuICAgICAgICAgICAgdGhpcy5fY2FyZEhlaWdodFJvd1NwYW4sXG4gICAgICAgICAgICBuZXdDYXJkQ29sU3BhbixcbiAgICAgICAgICAgIG5ld0NhcmRIZWlnaHRSb3dTcGFuXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUmV0dXJuIHByZXZpb3VzIGhlaWdodCByb3cgc3BhbiBvZiB0aGUgY2FyZCAqL1xuICAgIGdldCBwcmV2aW91c0NhcmRIZWlnaHRSb3dTcGFuKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcmV2Q2FyZEhlaWdodFJvd1NwYW47XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gU2V0IGNhcmQgcHJvcGVydGllcyB1c2luZyBjb25maWcgcmVjZWl2ZWQgKi9cbiAgICBwcml2YXRlIF9pbml0aWFsU2V0dXAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2FyZFdpZHRoQ29sU3BhbiA9IHRoaXMuX2NvbmZpZz8uY2FyZFdpZHRoQ29sU3BhbiB8fCB0aGlzLmNhcmRXaWR0aENvbFNwYW47XG4gICAgICAgIHRoaXMuY2FyZEhlaWdodFJvd1NwYW4gPSB0aGlzLl9jb25maWc/LmNhcmRIZWlnaHRSb3dTcGFuIHx8IHRoaXMuY2FyZEhlaWdodFJvd1NwYW47XG4gICAgICAgIHRoaXMudGl0bGUgPSB0aGlzLl9jb25maWc/LnRpdGxlIHx8IHRoaXMudGl0bGU7XG4gICAgICAgIHRoaXMucmFuayA9IHRoaXMuX2NvbmZpZz8ucmFuayB8fCB0aGlzLnJhbms7XG4gICAgICAgIHRoaXMuY2FyZE1pbmlIZWFkZXJSb3dTcGFuID0gdGhpcy5fY29uZmlnPy5jYXJkTWluaUhlYWRlclJvd1NwYW4gfHwgdGhpcy5jYXJkTWluaUhlYWRlclJvd1NwYW47XG4gICAgICAgIHRoaXMuY2FyZE1pbmlDb250ZW50Um93U3BhbiA9IHRoaXMuX2NvbmZpZz8uY2FyZE1pbmlDb250ZW50Um93U3BhbiB8fCB0aGlzLmNhcmRNaW5pQ29udGVudFJvd1NwYW47XG4gICAgICAgIHRoaXMucmVzaXphYmxlID0gdGhpcy5fY29uZmlnLnJlc2l6YWJsZSB8fCB0aGlzLnJlc2l6YWJsZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBSZXR1cm5zIHRydWUgd2hlbiByZXNpemUgb2Zmc2V0IGlzIGNyb3NzZWQgKi9cbiAgICBwcml2YXRlIF9ob3Jpem9udGFsUmVzaXplV2l0aE9mZnNldCgpOiB2b2lkIHtcbiAgICAgICAgLy8gcG9zaXRpdmUgdmFsdWUgaW5kaWNhdGVzIHRoYXQgd2lkdGggaGFzIGluY3JlYXNlZFxuICAgICAgICBjb25zdCB3aWR0aEluY3JlbWVudCA9IHRoaXMuY2FyZFdpZHRoIC0gdGhpcy5fcHJldkNhcmRXaWR0aDtcbiAgICAgICAgY29uc3QgY2FyZFNwYW4gPSBNYXRoLmZsb29yKHRoaXMuY2FyZFdpZHRoIC8gaG9yaXpvbnRhbFJlc2l6ZVN0ZXApO1xuICAgICAgICBjb25zdCBjYXJkU3BhbkZyYWN0aW9uID0gdGhpcy5jYXJkV2lkdGggJSBob3Jpem9udGFsUmVzaXplU3RlcDtcblxuICAgICAgICAvLyB3aGVuIHdpZHRoIGluY3JlYXNlc1xuICAgICAgICBpZiAod2lkdGhJbmNyZW1lbnQgPiAwKSB7XG4gICAgICAgICAgICBpZiAod2lkdGhJbmNyZW1lbnQgPCBob3Jpem9udGFsUmVzaXplT2Zmc2V0ICsgZ2FwKSB7XG4gICAgICAgICAgICAgICAgLy8gd2lkdGhJbmNyZW1lbnQgaXMgbGVzcyB0aGFuIG9mZnNldCwgZG8gbm90IGluY3JlYXNlIHdpZHRoXG4gICAgICAgICAgICAgICAgdGhpcy5jYXJkV2lkdGggPSB0aGlzLl9wcmV2Q2FyZFdpZHRoO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBjaGVjayB2YWx1ZSBvZiBjYXJkU3BhbkZyYWN0aW9uLCBpbmNsdWRpbmcgZ2FwcyBpbiBjYXJkc1xuICAgICAgICAgICAgICAgIGxldCBpc0NhcmRTcGFuRnJhY3Rpb25Dcm9zc2luZ09mZnNldCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlzQ2FyZFNwYW5GcmFjdGlvbkNyb3NzaW5nT2Zmc2V0ID0gY2FyZFNwYW5GcmFjdGlvbiAtIChjYXJkU3BhbiAtIDEpICogZ2FwID4gaG9yaXpvbnRhbFJlc2l6ZU9mZnNldDtcbiAgICAgICAgICAgICAgICB0aGlzLmNhcmRXaWR0aCA9IGlzQ2FyZFNwYW5GcmFjdGlvbkNyb3NzaW5nT2Zmc2V0XG4gICAgICAgICAgICAgICAgICAgID8gKGNhcmRTcGFuICsgMSkgKiBob3Jpem9udGFsUmVzaXplU3RlcFxuICAgICAgICAgICAgICAgICAgICA6IGNhcmRTcGFuICogaG9yaXpvbnRhbFJlc2l6ZVN0ZXA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyB3aGVuIHdpZHRoIGRlY3JlYXNlc1xuICAgICAgICAgICAgaWYgKE1hdGguYWJzKHdpZHRoSW5jcmVtZW50KSA8IGhvcml6b250YWxSZXNpemVPZmZzZXQpIHtcbiAgICAgICAgICAgICAgICAvLyB3aWR0aEluY3JlbWVudCBpcyBsZXNzIHRoYW4gb2Zmc2V0LCBkbyBub3QgZGVjcmVhc2Ugd2lkdGhcbiAgICAgICAgICAgICAgICB0aGlzLmNhcmRXaWR0aCA9IHRoaXMuX3ByZXZDYXJkV2lkdGg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGNoZWNrIHZhbHVlIG9mIGNhcmRTcGFuRnJhY3Rpb24sIGluY2x1ZGluZyBnYXBzIGluIGNhcmRzXG4gICAgICAgICAgICAgICAgbGV0IGlzQ2FyZFNwYW5GcmFjdGlvbkNyb3NzaW5nT2Zmc2V0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaXNDYXJkU3BhbkZyYWN0aW9uQ3Jvc3NpbmdPZmZzZXQgPSBjYXJkU3BhbkZyYWN0aW9uIC0gY2FyZFNwYW4gKiBnYXAgPiBob3Jpem9udGFsUmVzaXplT2Zmc2V0O1xuICAgICAgICAgICAgICAgIHRoaXMuY2FyZFdpZHRoID0gaXNDYXJkU3BhbkZyYWN0aW9uQ3Jvc3NpbmdPZmZzZXRcbiAgICAgICAgICAgICAgICAgICAgPyAoY2FyZFNwYW4gKyAxKSAqIGhvcml6b250YWxSZXNpemVTdGVwXG4gICAgICAgICAgICAgICAgICAgIDogY2FyZFNwYW4gKiBob3Jpem9udGFsUmVzaXplU3RlcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gbWFrZSBob3Jpem9udGFsIHJlc2l6ZSBvbmx5IG9uIHN0ZXAgb2YgMjByZW1cbiAgICAgKi9cbiAgICBwcml2YXRlIF9ob3Jpem9udGFsU3RlcFJlc2l6aW5nKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9ob3Jpem9udGFsUmVzaXplV2l0aE9mZnNldCgpO1xuXG4gICAgICAgIC8vIEFkZCBpbm5lciBnYXAgaW4gIGNhcmRXaWR0aCBpZiB3aWR0aCBpcyBtb3JlIHRoYW4gMSBjb2x1bW5cbiAgICAgICAgaWYgKHRoaXMuY2FyZFdpZHRoID4gaG9yaXpvbnRhbFJlc2l6ZVN0ZXApIHtcbiAgICAgICAgICAgIHRoaXMuY2FyZFdpZHRoID0gdGhpcy5jYXJkV2lkdGggKyAodGhpcy5jYXJkV2lkdGggLyBob3Jpem9udGFsUmVzaXplU3RlcCAtIDEpICogZ2FwO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2FyZFdpZHRoQ29sU3BhbiA9IE1hdGguZmxvb3IodGhpcy5jYXJkV2lkdGggLyBob3Jpem9udGFsUmVzaXplU3RlcCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBtYWtlIHZlcnRpY2FsIHJlc2l6ZSBvbmx5IG9uIHN0ZXAgb2YgMXJlbVxuICAgICAqL1xuICAgIHByaXZhdGUgX3ZlcnRpY2FsU3RlcFJlc2l6aW5nKCk6IHZvaWQge1xuICAgICAgICAvLyBwb3NpdGl2ZSB2YWx1ZSBpbmRpY2F0ZXMgdGhhdCBoZWlnaHQgaGFzIGluY3JlYXNlZFxuICAgICAgICBjb25zdCBjYXJkSGVpZ2h0U3BhbiA9IE1hdGguZmxvb3IodGhpcy5jYXJkSGVpZ2h0IC8gdmVydGljYWxSZXNpemVTdGVwKTtcbiAgICAgICAgY29uc3QgY2FyZFNwYW5GcmFjdGlvbiA9IHRoaXMuY2FyZEhlaWdodCAlIHZlcnRpY2FsUmVzaXplU3RlcDtcbiAgICAgICAgdGhpcy5jYXJkSGVpZ2h0ID1cbiAgICAgICAgICAgIGNhcmRTcGFuRnJhY3Rpb24gPiB2ZXJ0aWNhbFJlc2l6ZU9mZnNldFxuICAgICAgICAgICAgICAgID8gKGNhcmRIZWlnaHRTcGFuICsgMSkgKiB2ZXJ0aWNhbFJlc2l6ZVN0ZXBcbiAgICAgICAgICAgICAgICA6IGNhcmRIZWlnaHRTcGFuICogdmVydGljYWxSZXNpemVTdGVwO1xuXG4gICAgICAgIHRoaXMuY2FyZEhlaWdodFJvd1NwYW4gPSBNYXRoLmZsb29yKHRoaXMuY2FyZEhlaWdodCAvIHZlcnRpY2FsUmVzaXplU3RlcCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBSZXNpemUgY2FyZCBob3Jpem9udGFsbHkgYnkgY2hlY2tpbmcgYm91bmRhcnkgY29uZGl0aW9uXG4gICAgICogQHBhcmFtIHhQb3NpdGlvbjogY3VycmVudCB4LXBvc2l0aW9uIG9mIGN1cnNvclxuICAgICAqL1xuICAgIHByaXZhdGUgX2hvcml6b250YWxSZXNpemluZyh4UG9zaXRpb246IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBkaWZmZXJlbmNlID0gdGhpcy5fcHJldlggLSB4UG9zaXRpb247XG4gICAgICAgIHRoaXMuY2FyZFdpZHRoID0gdGhpcy5fcnRsID8gdGhpcy5jYXJkV2lkdGggKyBkaWZmZXJlbmNlIDogdGhpcy5jYXJkV2lkdGggLSBkaWZmZXJlbmNlO1xuXG4gICAgICAgIGNvbnN0IHRvdGFsSW5kZW50YXRpb24gPSAodGhpcy5fbWF4Q29sdW1uIC0gMSkgKiBnYXA7XG4gICAgICAgIGNvbnN0IG1heENhcmRXaWR0V2l0aG91dEluZGVudGF0aW9uID0gdGhpcy5fbWF4Q29sdW1uICogaG9yaXpvbnRhbFJlc2l6ZVN0ZXA7XG5cbiAgICAgICAgY29uc3QgbWF4Q2FyZFdpZHRoID0gdGhpcy5fcnRsXG4gICAgICAgICAgICA/IG1heENhcmRXaWR0V2l0aG91dEluZGVudGF0aW9uIC0gdG90YWxJbmRlbnRhdGlvblxuICAgICAgICAgICAgOiBtYXhDYXJkV2lkdFdpdGhvdXRJbmRlbnRhdGlvbiArIHRvdGFsSW5kZW50YXRpb247XG5cbiAgICAgICAgaWYgKHRoaXMuY2FyZFdpZHRoID4gbWF4Q2FyZFdpZHRoKSB7XG4gICAgICAgICAgICB0aGlzLmNhcmRXaWR0aCA9IG1heENhcmRXaWR0aDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNhcmRXaWR0aCA8IGhvcml6b250YWxSZXNpemVTdGVwKSB7XG4gICAgICAgICAgICB0aGlzLmNhcmRXaWR0aCA9IGhvcml6b250YWxSZXNpemVTdGVwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBSZXNpemUgY2FyZCB2ZXJ0aWNhbGx5LlxuICAgICAqIHRha2VzIGNhcmUgb2YgbWluaS1oZWFkZXIgaGVpZ2h0IGFuZCBtaW5pLWNvbnRlbnQgaGVpZ2h0XG4gICAgICogQHBhcmFtIHlQb3NpdGlvbjogY3VycmVudCB5LXBvc2l0aW9uIG9mIGN1cnNvclxuICAgICAqL1xuICAgIHByaXZhdGUgX3ZlcnRpY2FsUmVzaXppbmcoeVBvc2l0aW9uOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgbGV0IHJlYWNoaW5nTWluaUhlYWRlciA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0aGlzLmNhcmRIZWlnaHQgPT09IHRoaXMuY2FyZE1pbmlIZWFkZXJIZWlnaHQpIHtcbiAgICAgICAgICAgIC8vIGlmIGNhcmQgaGVpZ2h0IGlzIGFscmVhZHkgYXQgbWluaS1oZWFkZXIgaGVpZ2h0XG4gICAgICAgICAgICBpZiAodGhpcy5fcHJldlkgLSB5UG9zaXRpb24gPiAwKSB7XG4gICAgICAgICAgICAgICAgLy8gZGVjcmVhc2luZyBoZWlnaHRcbiAgICAgICAgICAgICAgICAvLyBpZiBtaW5pSGVhZGVyIGhlaWdodCByZWFjaGVkLCBzdG9wIHJlc2l6aW5nXG4gICAgICAgICAgICAgICAgdGhpcy5jYXJkSGVpZ2h0ID0gdGhpcy5jYXJkTWluaUhlYWRlckhlaWdodDtcbiAgICAgICAgICAgICAgICB0aGlzLl9wcmV2Q2FyZEhlaWdodFJvd1NwYW4gPSB0aGlzLl9jYXJkSGVpZ2h0Um93U3BhbjtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYXJkSGVpZ2h0Um93U3BhbiA9IE1hdGguZmxvb3IodGhpcy5jYXJkSGVpZ2h0IC8gdmVydGljYWxSZXNpemVTdGVwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gaW5jcmVhc2luZyBoZWlnaHRcbiAgICAgICAgICAgICAgICB0aGlzLmNhcmRIZWlnaHQgPSB0aGlzLmNhcmRNaW5pSGVhZGVySGVpZ2h0ICsgdGhpcy5jYXJkTWluaUNvbnRlbnRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHJldkNhcmRIZWlnaHRSb3dTcGFuID0gdGhpcy5fY2FyZEhlaWdodFJvd1NwYW47XG4gICAgICAgICAgICAgICAgdGhpcy5fY2FyZEhlaWdodFJvd1NwYW4gPSBNYXRoLmZsb29yKHRoaXMuY2FyZEhlaWdodCAvIHZlcnRpY2FsUmVzaXplU3RlcCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RvcFJlc2l6aW5nKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5taW5pQ29udGVudFJlYWNoZWQuZW1pdCh0aGlzLmdldFJlc2l6ZWRFdmVudE9iamVjdCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNhcmRIZWlnaHQgPCB0aGlzLmNhcmRNaW5pQ29udGVudEhlaWdodCArIHRoaXMuY2FyZE1pbmlIZWFkZXJIZWlnaHQpIHtcbiAgICAgICAgICAgIC8vIGlmIGNhcmQgaGVpZ2h0IGlzIGJldHdlZW4gbWluaS1oZWFkZXIgYW5kIG1pbmktY29udGVudFxuICAgICAgICAgICAgaWYgKHRoaXMuX3ByZXZZIC0geVBvc2l0aW9uIDwgMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FyZEhlaWdodCA9IHRoaXMuY2FyZE1pbmlIZWFkZXJIZWlnaHQgKyB0aGlzLmNhcmRNaW5pQ29udGVudEhlaWdodDtcbiAgICAgICAgICAgICAgICB0aGlzLl9wcmV2Q2FyZEhlaWdodFJvd1NwYW4gPSB0aGlzLl9jYXJkSGVpZ2h0Um93U3BhbjtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYXJkSGVpZ2h0Um93U3BhbiA9IE1hdGguZmxvb3IodGhpcy5jYXJkSGVpZ2h0IC8gdmVydGljYWxSZXNpemVTdGVwKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdG9wUmVzaXppbmcoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1pbmlDb250ZW50UmVhY2hlZC5lbWl0KHRoaXMuZ2V0UmVzaXplZEV2ZW50T2JqZWN0KCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgdGhpcy5jYXJkSGVpZ2h0ID09PSB0aGlzLmNhcmRNaW5pQ29udGVudEhlaWdodCArIHRoaXMuY2FyZE1pbmlIZWFkZXJIZWlnaHQgJiZcbiAgICAgICAgICAgIHRoaXMuX3ByZXZZIC0geVBvc2l0aW9uID4gMFxuICAgICAgICApIHtcbiAgICAgICAgICAgIC8vIGRlY3JlYXNpbmcgaGVpZ2h0XG4gICAgICAgICAgICAvLyBoZWlnaHQgZGVjcmVhc2luZyBhZnRlciByZWFjaGluZyBtaW5pLWNvbnRlbnQuIHRoaXMgbmVlZHMgdG8gZGlmZmVyZW50aWF0ZVxuICAgICAgICAgICAgLy8gZnJvbSBoZWlnaHQgZGVjcmVhc2luZyBhbmQgcmVhY2hpbmcgdG8gbWluaS1jb250ZW50LlxuICAgICAgICAgICAgcmVhY2hpbmdNaW5pSGVhZGVyID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY2FyZEhlaWdodCA9IHRoaXMuY2FyZE1pbmlIZWFkZXJIZWlnaHQ7XG4gICAgICAgICAgICB0aGlzLl9wcmV2Q2FyZEhlaWdodFJvd1NwYW4gPSB0aGlzLl9jYXJkSGVpZ2h0Um93U3BhbjtcbiAgICAgICAgICAgIHRoaXMuX2NhcmRIZWlnaHRSb3dTcGFuID0gTWF0aC5mbG9vcih0aGlzLmNhcmRIZWlnaHQgLyB2ZXJ0aWNhbFJlc2l6ZVN0ZXApO1xuICAgICAgICAgICAgLy8gbWluaUhlYWRlciBoZWlnaHQgcmVhY2hlZCwgc3RvcCByZXNpemluZ1xuICAgICAgICAgICAgdGhpcy5fc3RvcFJlc2l6aW5nKCk7XG4gICAgICAgICAgICB0aGlzLm1pbmlIZWFkZXJSZWFjaGVkLmVtaXQodGhpcy5nZXRSZXNpemVkRXZlbnRPYmplY3QoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNhcmRIZWlnaHQgPSB0aGlzLmNhcmRIZWlnaHQgLSAodGhpcy5fcHJldlkgLSB5UG9zaXRpb24pO1xuICAgICAgICAgICAgdGhpcy5fcHJldkNhcmRIZWlnaHRSb3dTcGFuID0gdGhpcy5fY2FyZEhlaWdodFJvd1NwYW47XG4gICAgICAgICAgICB0aGlzLl9jYXJkSGVpZ2h0Um93U3BhbiA9IE1hdGguZmxvb3IodGhpcy5jYXJkSGVpZ2h0IC8gdmVydGljYWxSZXNpemVTdGVwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHN0b3AgcmVzaXppbmcgb24gbWluaUNvbnRlbnQgaGVpZ2h0XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuY2FyZEhlaWdodCA8PSB0aGlzLmNhcmRNaW5pQ29udGVudEhlaWdodCArIHRoaXMuY2FyZE1pbmlIZWFkZXJIZWlnaHQgJiZcbiAgICAgICAgICAgIHRoaXMuX3ByZXZZIC0geVBvc2l0aW9uID4gMCAmJlxuICAgICAgICAgICAgIXJlYWNoaW5nTWluaUhlYWRlclxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuY2FyZEhlaWdodCA9IHRoaXMuY2FyZE1pbmlDb250ZW50SGVpZ2h0ICsgdGhpcy5jYXJkTWluaUhlYWRlckhlaWdodDtcbiAgICAgICAgICAgIHRoaXMuX3ByZXZDYXJkSGVpZ2h0Um93U3BhbiA9IHRoaXMuX2NhcmRIZWlnaHRSb3dTcGFuO1xuICAgICAgICAgICAgdGhpcy5fY2FyZEhlaWdodFJvd1NwYW4gPSBNYXRoLmZsb29yKHRoaXMuY2FyZEhlaWdodCAvIHZlcnRpY2FsUmVzaXplU3RlcCk7XG4gICAgICAgICAgICB0aGlzLm1pbmlDb250ZW50UmVhY2hlZC5lbWl0KHRoaXMuZ2V0UmVzaXplZEV2ZW50T2JqZWN0KCkpO1xuICAgICAgICAgICAgdGhpcy5fc3RvcFJlc2l6aW5nKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB3aGlsZSBjb3JuZXIgcmVzaXplLCB3aWR0aCBtaWdodCBoYXZlIGluY3JlYXNlZCBhbmQgcmVhY2hlZCB0byBtaW5pLWNvbnRlbnQgaGVpZ2h0LlxuICAgICAgICAvLyBzbywgb24gbWluaS1jb250ZW50IHJlc2l6ZSB3aWxsIHN0b3AsIGJ1dCBoYXZlIHRvIGRvIHN0ZXAgcmVzaXppbmcgZm9yIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsLlxuICAgICAgICBpZiAoIXRoaXMuX3Jlc2l6ZSkge1xuICAgICAgICAgICAgLy8gaW5jcmVhc2UvZGVjcmVhc2Ugd2lkdGggb2YgY2FyZCBpbiBvcmRlciBvZiAyMHJlbVxuICAgICAgICAgICAgaWYgKE1hdGguYWJzKHRoaXMuY2FyZFdpZHRoIC0gdGhpcy5fcHJldkNhcmRXaWR0aCkgPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5faG9yaXpvbnRhbFN0ZXBSZXNpemluZygpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBpbmNyZWFzZS9kZWNyZWFzZSBoZWlnaHQgb2YgY2FyZCBpbiBvcmRlciBvZiAxcmVtXG4gICAgICAgICAgICBpZiAoTWF0aC5hYnModGhpcy5jYXJkSGVpZ2h0IC0gdGhpcy5fcHJldkNhcmRIZWlnaHQpID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3ZlcnRpY2FsU3RlcFJlc2l6aW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiByZXNldCBpbnZvbHZlZCB2YXJpYWJsZXMgd2hpbGUgcmVzaXppbmcgKi9cbiAgICBwcml2YXRlIF9zdG9wUmVzaXppbmcoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9yZXNpemUpIHtcbiAgICAgICAgICAgIHRoaXMuY2FyZFN0YXRlID0gMDtcbiAgICAgICAgICAgIHRoaXMucmVzaXplSW5kaWNhdGlvbkJvcmRlcldpZHRoID0gMDtcbiAgICAgICAgICAgIHRoaXMuX3Jlc2l6ZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy56SW5kZXggPSAwO1xuICAgICAgICAgICAgdGhpcy5zaG93Qm9yZGVyID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZWQuZW1pdCh0aGlzLmdldFJlc2l6ZWRFdmVudE9iamVjdCgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJldHVybnMgY2FyZFdpZHRoIGJhc2VkIG9uIGNhcmQgY29sdW1uIHNwYW4gKi9cbiAgICBwcml2YXRlIF9zZXRDYXJkV2lkdGgoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2FyZFdpZHRoID0gdGhpcy5fY2FyZFdpZHRoQ29sU3BhbiAqIGhvcml6b250YWxSZXNpemVTdGVwICsgKHRoaXMuX2NhcmRXaWR0aENvbFNwYW4gLSAxKSAqIGdhcDtcbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUmV0dXJucyBjYXJkSGVpZ2h0IGJhc2VkIG9uIGNhcmQgcm93IHNwYW4gKi9cbiAgICBwcml2YXRlIF9zZXRDYXJkSGVpZ2h0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhcmRIZWlnaHQgPSB0aGlzLl9jYXJkSGVpZ2h0Um93U3BhbiAqIHZlcnRpY2FsUmVzaXplU3RlcDtcbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUmV0dXJucyBjYXJkIG1pbmkgaGVhZGVyIGhlaWdodCAqL1xuICAgIHByaXZhdGUgX3NldENhcmRNaW5pSGVhZGVySGVpZ2h0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhcmRNaW5pSGVhZGVySGVpZ2h0ID0gdGhpcy5fY2FyZE1pbmlIZWFkZXJSb3dTcGFuICogdmVydGljYWxSZXNpemVTdGVwO1xuICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBSZXR1cm5zIGNhcmQgbWluaSBjb250ZW50IGhlaWdodCAqL1xuICAgIHByaXZhdGUgX3NldENhcmRNaW5pQ29udGVudEhlaWdodCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYXJkTWluaUNvbnRlbnRIZWlnaHQgPSB0aGlzLmNhcmRNaW5pQ29udGVudFJvd1NwYW4gKiB2ZXJ0aWNhbFJlc2l6ZVN0ZXA7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbn1cblxuLyoqIENvbmZpZyBpbnRlcmZhY2UgZm9yIGNhcmQgcHJvcGVydGllcyAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNpemFibGVDYXJkSXRlbUNvbmZpZyB7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgcmFuaz86IG51bWJlcjtcbiAgICBjYXJkV2lkdGhDb2xTcGFuPzogbnVtYmVyO1xuICAgIGNhcmRIZWlnaHRSb3dTcGFuPzogbnVtYmVyO1xuICAgIGNhcmRNaW5pSGVhZGVyUm93U3Bhbj86IG51bWJlcjtcbiAgICBjYXJkTWluaUNvbnRlbnRSb3dTcGFuPzogbnVtYmVyO1xuICAgIHJlc2l6YWJsZT86IGJvb2xlYW47XG59XG5cbi8qKiBPYmplY3QgdG8gZW1pdCBvbiByZXNpemUgY29tcGxldGUgKi9cbmV4cG9ydCBjbGFzcyBSZXNpemVkRXZlbnQge1xuICAgIC8qKlxuICAgICAqIE9iamVjdCB0byBlbWl0IG9uIHJlc2l6ZSBjb21wbGV0ZVxuICAgICAqIEBwYXJhbSBjYXJkXG4gICAgICogQHBhcmFtIHByZXZDYXJkV2lkdGggUHJldmlvdXMgY2FyZCB3aWR0aFxuICAgICAqIEBwYXJhbSBwcmV2Q2FyZEhlaWdodCBQcmV2aW91cyBjYXJkIGhlaWdodFxuICAgICAqIEBwYXJhbSBjYXJkV2lkdGggQ3VycmVudCBjYXJkIHdpZHRoXG4gICAgICogQHBhcmFtIGNhcmRIZWlnaHQgQ3VycmVudCBjYXJkIGhlaWdodFxuICAgICAqIEBwYXJhbSBjYXJkV2lkdGhDb2xTcGFuIEN1cnJlbnQgY2FyZCB3aWR0aCBjb2x1bW4gc3BhblxuICAgICAqIEBwYXJhbSBjYXJkSGVpZ2h0Um93U3BhbiBDdXJyZW50IGNhcmQgaGVpZ2h0IHJvdyBzcGFuXG4gICAgICogQHBhcmFtIG5ld0NhcmRXaWR0aENvbFNwYW4gTmV3IGNhcmQgd2lkdGggY29sdW1uIHNwYW5cbiAgICAgKiBAcGFyYW0gbmV3Q2FyZEhlaWdodFJvd1NwYW4gTmV3IGNhcmQgaGVpZ2h0IHJvdyBzcGFuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBjYXJkOiBSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudCxcbiAgICAgICAgcHVibGljIHByZXZDYXJkV2lkdGg6IG51bWJlcixcbiAgICAgICAgcHVibGljIHByZXZDYXJkSGVpZ2h0OiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyBjYXJkV2lkdGg6IG51bWJlcixcbiAgICAgICAgcHVibGljIGNhcmRIZWlnaHQ6IG51bWJlcixcbiAgICAgICAgcHVibGljIGNhcmRXaWR0aENvbFNwYW46IG51bWJlcixcbiAgICAgICAgcHVibGljIGNhcmRIZWlnaHRSb3dTcGFuOiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyBuZXdDYXJkV2lkdGhDb2xTcGFuOiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyBuZXdDYXJkSGVpZ2h0Um93U3BhbjogbnVtYmVyXG4gICAgKSB7fVxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwiZmQtcmVzaXphYmxlLWNhcmQtbGF5b3V0X19pdGVtXCJcbiAgICBbY2xhc3MuZmQtcmVzaXphYmxlLWNhcmQtbGF5b3V0X19pbmRpY2F0aW9uLWJvcmRlcl09XCJzaG93Qm9yZGVyXCJcbiAgICAjcmVzaXplQ2FyZFxuPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmZC1yZXNpemFibGUtY2FyZC1sYXlvdXRfX2l0ZW0tLWJvcmRlci1kaXNwbGF5IGZkLXJlc2l6YWJsZS1jYXJkLWxheW91dF9faXRlbS0tcmVzaXplLXRyYW5zaXRpb25cIlxuICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY2FyZFdpZHRoXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJjYXJkSGVpZ2h0XCJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwic2hvd1Jlc2l6ZUljb24oKVwiXG4gICAgICAgIChtb3VzZWxlYXZlKT1cImhpZGVSZXNpemVJY29uKClcIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZkLXJlc2l6YWJsZS1jYXJkLWxheW91dF9fY2FyZFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd2luZ1Jlc2l6ZUljb25cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtcmVzaXphYmxlLWNhcmQtbGF5b3V0X19pY29uLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1yZXNpemFibGUtY2FyZC1sYXlvdXRfX2ljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgI2Nvcm5lckhhbmRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvbk1vdXNlRG93bigkZXZlbnQsICdib3RoJylcIlxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlc2l6YWJsZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInZlcnRpY2FsSGFuZGxlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJob3Jpem9udGFsSGFuZGxlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmQtcmVzaXphYmxlLWNhcmQtbGF5b3V0X19pdGVtLS1yZXNpemUtdHJhbnNpdGlvblwiXG4gICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJyZXNpemVJbmRpY2F0aW9uQm9yZGVyV2lkdGhcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImNhcmRIZWlnaHRcIlxuICAgID48L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3ZlcnRpY2FsSGFuZGxlVGVtcGxhdGU+XG4gICAgPGRpdlxuICAgICAgICAjdmVydGljYWxIYW5kbGVcbiAgICAgICAgY2xhc3M9XCJmZC1yZXNpemFibGUtY2FyZC1sYXlvdXRfX3Jlc2l6ZS0tdmVydGljYWxcIlxuICAgICAgICAobW91c2Vkb3duKT1cIm9uTW91c2VEb3duKCRldmVudCwgJ2hvcml6b250YWwnKVwiXG4gICAgPjwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNob3Jpem9udGFsSGFuZGxlVGVtcGxhdGU+XG4gICAgPGRpdlxuICAgICAgICAjaG9yaXpvbnRhbEhhbmRsZVxuICAgICAgICBjbGFzcz1cImZkLXJlc2l6YWJsZS1jYXJkLWxheW91dF9fcmVzaXplLS1ob3Jpem9udGFsXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvbk1vdXNlRG93bigkZXZlbnQsICd2ZXJ0aWNhbCcpXCJcbiAgICA+PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19