@smartbit4all/ng-client 4.5.24 → 4.5.25

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 (318) hide show
  1. package/README.md +386 -386
  2. package/esm2022/lib/component-factory-service/component-factory-service.module.mjs +1 -1
  3. package/esm2022/lib/component-factory-service/component-factory-service.service.mjs +1 -1
  4. package/esm2022/lib/component-factory-service/projects.mjs +1 -1
  5. package/esm2022/lib/session/api/api/api.mjs +1 -1
  6. package/esm2022/lib/session/api/api/session.service.mjs +1 -1
  7. package/esm2022/lib/session/api/configuration.mjs +1 -1
  8. package/esm2022/lib/session/api/encoder.mjs +1 -1
  9. package/esm2022/lib/session/api/index.mjs +1 -1
  10. package/esm2022/lib/session/api/model/accountInfo.mjs +1 -1
  11. package/esm2022/lib/session/api/model/apiError.mjs +1 -1
  12. package/esm2022/lib/session/api/model/authenticationProviderData.mjs +1 -1
  13. package/esm2022/lib/session/api/model/getAuthenticationProvidersResponse.mjs +1 -1
  14. package/esm2022/lib/session/api/model/models.mjs +1 -1
  15. package/esm2022/lib/session/api/model/refreshSessionRequest.mjs +1 -1
  16. package/esm2022/lib/session/api/model/session.mjs +1 -1
  17. package/esm2022/lib/session/api/model/sessionInfoData.mjs +1 -1
  18. package/esm2022/lib/session/api/model/userActivityLog.mjs +1 -1
  19. package/esm2022/lib/session/api/param.mjs +1 -1
  20. package/esm2022/lib/session/api/variables.mjs +1 -1
  21. package/esm2022/lib/session/cookie-service/smart-cookie.service.mjs +1 -1
  22. package/esm2022/lib/session/projects.mjs +1 -1
  23. package/esm2022/lib/session/smart-backend-bootstrap.config.mjs +1 -1
  24. package/esm2022/lib/session/smart-backend-bootstrap.service.mjs +33 -12
  25. package/esm2022/lib/session/smart-default-error-ui.service.mjs +1 -1
  26. package/esm2022/lib/session/smart-error-catching.interceptor.mjs +1 -1
  27. package/esm2022/lib/session/smart-header-maintainer.interceptor.mjs +1 -1
  28. package/esm2022/lib/session/smart-session-handler.service.mjs +1 -1
  29. package/esm2022/lib/session/smart-session.module.mjs +1 -1
  30. package/esm2022/lib/session/smart-session.service.mjs +29 -17
  31. package/esm2022/lib/session/smart-timer/smart-session-timer.component.mjs +3 -3
  32. package/esm2022/lib/session/smart-timer/smart-session-timer.service.mjs +1 -1
  33. package/esm2022/lib/shared/projects.mjs +1 -1
  34. package/esm2022/lib/shared/shared.module.mjs +1 -1
  35. package/esm2022/lib/shared/smart-tooltip.directive.mjs +1 -1
  36. package/esm2022/lib/shared/smarttable.date-pipe.mjs +1 -1
  37. package/esm2022/lib/smart-client/projects.mjs +1 -1
  38. package/esm2022/lib/smart-client/smart-component-api-client.mjs +1 -1
  39. package/esm2022/lib/smart-client/smart-file-uploader/smart-file-uploader.component.mjs +3 -3
  40. package/esm2022/lib/smart-client/smart.component.mjs +1 -1
  41. package/esm2022/lib/smart-client/smart.service.mjs +1 -1
  42. package/esm2022/lib/smart-component-layout/api/model/componentWidgetType.mjs +1 -1
  43. package/esm2022/lib/smart-component-layout/api/model/models.mjs +1 -1
  44. package/esm2022/lib/smart-component-layout/api/model/toolbarDirection.mjs +1 -1
  45. package/esm2022/lib/smart-component-layout/api/model/toolbarProperties.mjs +1 -1
  46. package/esm2022/lib/smart-component-layout/projects.mjs +1 -1
  47. package/esm2022/lib/smart-component-layout/smart-component-layout-utility.mjs +1 -1
  48. package/esm2022/lib/smart-component-layout/smart-component-layout.component.mjs +3 -3
  49. package/esm2022/lib/smart-component-layout/smart-component-layout.module.mjs +1 -1
  50. package/esm2022/lib/smart-diagram/component/default-smart-diagram-options.provider.mjs +1 -1
  51. package/esm2022/lib/smart-diagram/component/smart-diagram.component.mjs +22 -22
  52. package/esm2022/lib/smart-diagram/component/smart-diagram.module.mjs +1 -1
  53. package/esm2022/lib/smart-diagram/component/smart-diagram.util.mjs +1 -1
  54. package/esm2022/lib/smart-diagram/projects.mjs +1 -1
  55. package/esm2022/lib/smart-dialog/projects.mjs +1 -1
  56. package/esm2022/lib/smart-dialog/smartdialog.component.mjs +3 -3
  57. package/esm2022/lib/smart-dialog/smartdialog.model.mjs +1 -1
  58. package/esm2022/lib/smart-dialog/smartdialog.module.mjs +1 -1
  59. package/esm2022/lib/smart-dialog/smartdialog.service.mjs +1 -1
  60. package/esm2022/lib/smart-expandable-section/expandable-section.component.mjs +3 -3
  61. package/esm2022/lib/smart-expandable-section/expandable-section.model.mjs +1 -1
  62. package/esm2022/lib/smart-expandable-section/projects.mjs +1 -1
  63. package/esm2022/lib/smart-expandable-section/smart-expandable-section.module.mjs +1 -1
  64. package/esm2022/lib/smart-expandable-section/smart-expandable-section.service.mjs +1 -1
  65. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBoolOperator.mjs +1 -1
  66. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBuilderField.mjs +1 -1
  67. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBuilderGroup.mjs +1 -1
  68. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBuilderModel.mjs +1 -1
  69. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionData.mjs +1 -1
  70. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionDataType.mjs +1 -1
  71. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionField.mjs +1 -1
  72. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionFieldList.mjs +1 -1
  73. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionFieldWidgetType.mjs +1 -1
  74. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionList.mjs +1 -1
  75. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionOperandData.mjs +1 -1
  76. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionOperation.mjs +1 -1
  77. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionOrderBy.mjs +1 -1
  78. package/esm2022/lib/smart-filter/api/filter/model/model.mjs +1 -1
  79. package/esm2022/lib/smart-filter/api/filter/model/searchIndexObjectDefinitionData.mjs +1 -1
  80. package/esm2022/lib/smart-filter/api/filter/model/searchIndexPropertyDefinitionData.mjs +1 -1
  81. package/esm2022/lib/smart-filter/api/value/model/value.mjs +1 -1
  82. package/esm2022/lib/smart-filter/projects.mjs +1 -1
  83. package/esm2022/lib/smart-filter/smart-filter/components/smart-filter-expression-field/smart-filter-expression-field.component.mjs +1 -1
  84. package/esm2022/lib/smart-filter/smart-filter/components/smart-filter-simple/components/smart-filter-simple-field/smart-filter-simple-field.component.mjs +3 -3
  85. package/esm2022/lib/smart-filter/smart-filter/components/smart-filter-simple/smart-filter-simple.component.mjs +3 -3
  86. package/esm2022/lib/smart-filter/smart-filter/smart-filter.component.mjs +3 -3
  87. package/esm2022/lib/smart-filter/smart-filter/smart-filter.service.mjs +1 -1
  88. package/esm2022/lib/smart-filter/smart-filter.model.mjs +1 -1
  89. package/esm2022/lib/smart-filter/smart-filter.module.mjs +1 -1
  90. package/esm2022/lib/smart-filter-editor/api/api/filter.service.mjs +1 -1
  91. package/esm2022/lib/smart-filter-editor/api/configuration.mjs +1 -1
  92. package/esm2022/lib/smart-filter-editor/api/encoder.mjs +1 -1
  93. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBoolOperator.mjs +1 -1
  94. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderApiConfig.mjs +1 -1
  95. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderField.mjs +1 -1
  96. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderGroup.mjs +1 -1
  97. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderModel.mjs +1 -1
  98. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderUiModel.mjs +1 -1
  99. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionData.mjs +1 -1
  100. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionDataType.mjs +1 -1
  101. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionField.mjs +1 -1
  102. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldEditor.mjs +1 -1
  103. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldList.mjs +1 -1
  104. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldWidgetType.mjs +1 -1
  105. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionList.mjs +1 -1
  106. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOperandData.mjs +1 -1
  107. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOperation.mjs +1 -1
  108. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOrderBy.mjs +1 -1
  109. package/esm2022/lib/smart-filter-editor/api/model/smartFilterType.mjs +1 -1
  110. package/esm2022/lib/smart-filter-editor/api/param.mjs +1 -1
  111. package/esm2022/lib/smart-filter-editor/api/variables.mjs +1 -1
  112. package/esm2022/lib/smart-filter-editor/filterExpressionBuilderApiActions.mjs +1 -1
  113. package/esm2022/lib/smart-filter-editor/project.mjs +1 -1
  114. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-item/smart-filter-expression-item.component.mjs +3 -3
  115. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-items/smart-filter-expression-items.component.mjs +3 -3
  116. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/smart-filter-editor-content.component.mjs +3 -3
  117. package/esm2022/lib/smart-filter-editor/smart-filter-editor.model.mjs +1 -1
  118. package/esm2022/lib/smart-filter-editor/smart-filter-editor.module.mjs +1 -1
  119. package/esm2022/lib/smart-filter-editor/smart-filter-editor.service.mjs +1 -1
  120. package/esm2022/lib/smart-filter-editor/smart-filter-params/components/smart-filter-param/smart-filter-param.component.mjs +3 -3
  121. package/esm2022/lib/smart-filter-editor/smart-filter-params/smart-filter-params.component.mjs +3 -3
  122. package/esm2022/lib/smart-form/highlightMacthingString-pipe.mjs +1 -1
  123. package/esm2022/lib/smart-form/projects.mjs +1 -1
  124. package/esm2022/lib/smart-form/services/smartform.layout-definition.service.mjs +1 -1
  125. package/esm2022/lib/smart-form/services/smartform.service.mjs +1 -1
  126. package/esm2022/lib/smart-form/smartfileuploader/large-file-snack-bar/large-file-snack-bar.component.mjs +3 -3
  127. package/esm2022/lib/smart-form/smartfileuploader/smartfileuploader.component.mjs +3 -3
  128. package/esm2022/lib/smart-form/smartfileuploader/smartfileuploader.model.mjs +1 -1
  129. package/esm2022/lib/smart-form/smartform.component.mjs +3 -3
  130. package/esm2022/lib/smart-form/smartform.form-model.mjs +1 -1
  131. package/esm2022/lib/smart-form/smartform.model.mjs +1 -1
  132. package/esm2022/lib/smart-form/widgets/components/smart-file-editor/smart-file-editor.component.mjs +3 -3
  133. package/esm2022/lib/smart-form/widgets/components/smart-month-picker/smart-month-picker.component.mjs +3 -3
  134. package/esm2022/lib/smart-form/widgets/components/smart-multi-file-editor/smart-multi-file-editor.component.mjs +3 -3
  135. package/esm2022/lib/smart-form/widgets/components/smart-voice-recorder/smart-voice-recorder.component.mjs +3 -3
  136. package/esm2022/lib/smart-form/widgets/directives/comparable-dropdown.directive.mjs +1 -1
  137. package/esm2022/lib/smart-form/widgets/directives/comparable-multiselect.directive.mjs +1 -1
  138. package/esm2022/lib/smart-form/widgets/smartformwidget/smartformwidget.component.mjs +3 -3
  139. package/esm2022/lib/smart-form/widgets/smartformwidget/sortable-widget/sortable-widget.component.mjs +3 -3
  140. package/esm2022/lib/smart-form/widgets/smartformwidget/trackCaps.directive.mjs +1 -1
  141. package/esm2022/lib/smart-grid/api/grid-api/api/api.mjs +1 -1
  142. package/esm2022/lib/smart-grid/api/grid-api/api/grid.service.mjs +1 -1
  143. package/esm2022/lib/smart-grid/api/grid-api/api.module.mjs +1 -1
  144. package/esm2022/lib/smart-grid/api/grid-api/configuration.mjs +1 -1
  145. package/esm2022/lib/smart-grid/api/grid-api/encoder.mjs +1 -1
  146. package/esm2022/lib/smart-grid/api/grid-api/index.mjs +1 -1
  147. package/esm2022/lib/smart-grid/api/grid-api/model/gridColumnContentType.mjs +1 -1
  148. package/esm2022/lib/smart-grid/api/grid-api/model/gridColumnMeta.mjs +1 -1
  149. package/esm2022/lib/smart-grid/api/grid-api/model/gridDataAccessConfig.mjs +1 -1
  150. package/esm2022/lib/smart-grid/api/grid-api/model/gridExportDescriptor.mjs +1 -1
  151. package/esm2022/lib/smart-grid/api/grid-api/model/gridModel.mjs +1 -1
  152. package/esm2022/lib/smart-grid/api/grid-api/model/gridPage.mjs +1 -1
  153. package/esm2022/lib/smart-grid/api/grid-api/model/gridRow.mjs +1 -1
  154. package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionChange.mjs +1 -1
  155. package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionMode.mjs +1 -1
  156. package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionType.mjs +1 -1
  157. package/esm2022/lib/smart-grid/api/grid-api/model/gridServerModel.mjs +1 -1
  158. package/esm2022/lib/smart-grid/api/grid-api/model/gridUpdateData.mjs +1 -1
  159. package/esm2022/lib/smart-grid/api/grid-api/model/gridView.mjs +1 -1
  160. package/esm2022/lib/smart-grid/api/grid-api/model/gridViewDescriptor.mjs +1 -1
  161. package/esm2022/lib/smart-grid/api/grid-api/model/models.mjs +1 -1
  162. package/esm2022/lib/smart-grid/api/grid-api/param.mjs +1 -1
  163. package/esm2022/lib/smart-grid/api/grid-api/variables.mjs +1 -1
  164. package/esm2022/lib/smart-grid/components/expandable-grid/expandable-grid.component.mjs +3 -3
  165. package/esm2022/lib/smart-grid/components/generic-component/expanded-row-renderer.component.mjs +3 -3
  166. package/esm2022/lib/smart-grid/components/smart-grid-card/smart-grid-card.component.mjs +3 -3
  167. package/esm2022/lib/smart-grid/components/table-layout-definer/table-layout-definer.component.mjs +3 -3
  168. package/esm2022/lib/smart-grid/models/model.mjs +1 -1
  169. package/esm2022/lib/smart-grid/projects.mjs +1 -1
  170. package/esm2022/lib/smart-grid/smart-grid-toolbar-util.mjs +1 -1
  171. package/esm2022/lib/smart-grid/smart-grid.component.mjs +3 -3
  172. package/esm2022/lib/smart-grid/smart-grid.module.mjs +1 -1
  173. package/esm2022/lib/smart-grid/smart-grid.service.mjs +1 -1
  174. package/esm2022/lib/smart-icon/projects.mjs +1 -1
  175. package/esm2022/lib/smart-icon/smart-icon/smart-icon.component.mjs +3 -3
  176. package/esm2022/lib/smart-icon/smart-icon/ui-badge/ui-badge.component.mjs +3 -3
  177. package/esm2022/lib/smart-icon/smart-icon/ui-badge/ui-badge.directive.mjs +1 -1
  178. package/esm2022/lib/smart-icon/smart-icon.module.mjs +1 -1
  179. package/esm2022/lib/smart-icon/smart-icon.service.mjs +1 -1
  180. package/esm2022/lib/smart-map/abstract-map.mjs +1 -1
  181. package/esm2022/lib/smart-map/api-default/api-default.mjs +1 -1
  182. package/esm2022/lib/smart-map/impl/google-map.mjs +1 -1
  183. package/esm2022/lib/smart-map/impl/leaflet-map.mjs +1 -1
  184. package/esm2022/lib/smart-map/projects.mjs +1 -1
  185. package/esm2022/lib/smart-map/smart-map.component.mjs +3 -3
  186. package/esm2022/lib/smart-map/smart-map.module.mjs +1 -1
  187. package/esm2022/lib/smart-map/smart-map.types.mjs +1 -1
  188. package/esm2022/lib/smart-navbar/projects.mjs +1 -1
  189. package/esm2022/lib/smart-navbar/smart-navbar.component.mjs +3 -3
  190. package/esm2022/lib/smart-navbar/smart-navbar.model.mjs +1 -1
  191. package/esm2022/lib/smart-navbar/smart-navbar.module.mjs +1 -1
  192. package/esm2022/lib/smart-navbar/smart-navbar.service.mjs +1 -1
  193. package/esm2022/lib/smart-navigation/projects.mjs +1 -1
  194. package/esm2022/lib/smart-navigation/smart-navigation.interface.mjs +1 -1
  195. package/esm2022/lib/smart-navigation/smart-navigation.module.mjs +1 -1
  196. package/esm2022/lib/smart-navigation/smart-navigation.service.mjs +1 -1
  197. package/esm2022/lib/smart-ng-client.module.mjs +1 -1
  198. package/esm2022/lib/smart-ng-client.service.mjs +1 -1
  199. package/esm2022/lib/smart-subject/projects.mjs +1 -1
  200. package/esm2022/lib/smart-subject/smart-subject.mjs +1 -1
  201. package/esm2022/lib/smart-tab-group/projects.mjs +1 -1
  202. package/esm2022/lib/smart-tab-group/smart-tab-group.component.mjs +3 -3
  203. package/esm2022/lib/smart-tab-group/smart-tab-group.module.mjs +1 -1
  204. package/esm2022/lib/smart-tab-group/smart-tab-group.service.mjs +1 -1
  205. package/esm2022/lib/smart-tab-group/tab-content/tab-content.component.mjs +3 -3
  206. package/esm2022/lib/smart-tab-group/tab-group-simplified/tab-group.component.mjs +3 -3
  207. package/esm2022/lib/smart-tab-group/tabTile.model.mjs +1 -1
  208. package/esm2022/lib/smart-table/components/default-actions-popup/default-actions-popup.component.mjs +3 -3
  209. package/esm2022/lib/smart-table/components/loading/loading.component.mjs +3 -3
  210. package/esm2022/lib/smart-table/directives/mat-context-menu-trigger-for.directive.mjs +1 -1
  211. package/esm2022/lib/smart-table/projects.mjs +1 -1
  212. package/esm2022/lib/smart-table/smarttable.component.mjs +3 -3
  213. package/esm2022/lib/smart-table/smarttable.model.mjs +1 -1
  214. package/esm2022/lib/smart-table/smarttable.module.mjs +1 -1
  215. package/esm2022/lib/smart-table/smarttable.service.mjs +1 -1
  216. package/esm2022/lib/smart-table/tables/material-table/material-table.component.mjs +3 -3
  217. package/esm2022/lib/smart-table/tables/mobile-table/mobile-table.component.mjs +3 -3
  218. package/esm2022/lib/smart-table/tables/table.mjs +1 -1
  219. package/esm2022/lib/smart-tree/projects.mjs +1 -1
  220. package/esm2022/lib/smart-tree/smarttree-generic.service.mjs +1 -1
  221. package/esm2022/lib/smart-tree/smarttree.component.mjs +3 -3
  222. package/esm2022/lib/smart-tree/smarttree.model.mjs +1 -1
  223. package/esm2022/lib/smart-tree/smarttree.module.mjs +1 -1
  224. package/esm2022/lib/smart-tree/smarttree.node.model.mjs +1 -1
  225. package/esm2022/lib/smart-tree/smarttree.service.interface.mjs +1 -1
  226. package/esm2022/lib/smart-tree/smarttree.service.mjs +1 -1
  227. package/esm2022/lib/smart-tree/tree-api/api/tree.service.mjs +1 -1
  228. package/esm2022/lib/smart-tree/tree-api/configuration.mjs +1 -1
  229. package/esm2022/lib/smart-tree/tree-api/encoder.mjs +1 -1
  230. package/esm2022/lib/smart-tree/tree-api/param.mjs +1 -1
  231. package/esm2022/lib/smart-tree/tree-api/variables.mjs +1 -1
  232. package/esm2022/lib/smart-validation/named-validator.service.mjs +1 -1
  233. package/esm2022/lib/smart-validation/projects.mjs +1 -1
  234. package/esm2022/lib/smart-validation/smart-validation.module.mjs +1 -1
  235. package/esm2022/lib/smart-validation/smart-validation.types.mjs +1 -1
  236. package/esm2022/lib/view-context/api/api/view.service.mjs +1 -1
  237. package/esm2022/lib/view-context/api/api-default/binaryData.mjs +1 -1
  238. package/esm2022/lib/view-context/api/api-default/invocationError.mjs +1 -1
  239. package/esm2022/lib/view-context/api/api-default/invocationRequest.mjs +1 -1
  240. package/esm2022/lib/view-context/api/api-default/invocationRun.mjs +1 -1
  241. package/esm2022/lib/view-context/api/model/iconPosition.mjs +1 -1
  242. package/esm2022/lib/view-context/api/model/models.mjs +1 -1
  243. package/esm2022/lib/view-context/api/model/namedValidator.mjs +1 -1
  244. package/esm2022/lib/view-context/api/model/smartLinkData.mjs +1 -1
  245. package/esm2022/lib/view-context/api/model/uiAction.mjs +1 -1
  246. package/esm2022/lib/view-context/api/model/uiActionDefinition.mjs +1 -1
  247. package/esm2022/lib/view-context/api/model/uiActionDefinitionEntry.mjs +1 -1
  248. package/esm2022/lib/view-context/api/model/uiActionInputType.mjs +1 -1
  249. package/esm2022/lib/view-context/api/model/uiActionSchedule.mjs +1 -1
  250. package/esm2022/lib/view-context/api/model/uiActionUploadDescriptor.mjs +1 -1
  251. package/esm2022/lib/view-context/api/model/view.mjs +1 -1
  252. package/esm2022/lib/view-context/api/model/viewData.mjs +1 -1
  253. package/esm2022/lib/view-context/api/model/viewEventHandler.mjs +1 -1
  254. package/esm2022/lib/view-context/invalid-fields-snack-bar/invalid-fields-snack-bar.component.mjs +3 -3
  255. package/esm2022/lib/view-context/message-dialog/message-dialog.component.mjs +3 -3
  256. package/esm2022/lib/view-context/projects.mjs +1 -1
  257. package/esm2022/lib/view-context/property-definition-data.mjs +1 -1
  258. package/esm2022/lib/view-context/smart-embedded-slot.directive.mjs +1 -1
  259. package/esm2022/lib/view-context/smart-ui-action/components/menu/menu.component.mjs +3 -3
  260. package/esm2022/lib/view-context/smart-ui-action/components/menu/menu.constants.mjs +1 -1
  261. package/esm2022/lib/view-context/smart-ui-action/components/menu/menu.service.mjs +1 -1
  262. package/esm2022/lib/view-context/smart-ui-action/components/success-snack-bar/success-snack-bar.component.mjs +3 -3
  263. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/photo-capture-widget/photo-capture-widget.component.mjs +3 -3
  264. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/prime-file-uploader/prime-file-uploader.component.mjs +3 -3
  265. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/upload-widget.component.mjs +3 -3
  266. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/upload-widget.utils.mjs +1 -1
  267. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/voice-record-widget/voice-record-widget.component.mjs +3 -3
  268. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.component.mjs +3 -3
  269. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.service.mjs +1 -1
  270. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-dialog-button/ui-action-dialog-button.component.mjs +3 -3
  271. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component.mjs +3 -3
  272. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.service.mjs +1 -1
  273. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component.mjs +3 -3
  274. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.service.mjs +1 -1
  275. package/esm2022/lib/view-context/smart-ui-action/file-editor-toolbar/file-editor-toolbar.component.mjs +3 -3
  276. package/esm2022/lib/view-context/smart-ui-action/ui-action-button/ui-action-button.component.mjs +3 -3
  277. package/esm2022/lib/view-context/smart-ui-action/ui-action-toolbar.component.mjs +3 -3
  278. package/esm2022/lib/view-context/smart-ui-action/ui-action.descriptor.service.mjs +1 -1
  279. package/esm2022/lib/view-context/smart-ui-action/ui-action.model.mjs +1 -1
  280. package/esm2022/lib/view-context/smart-ui-action/ui-action.service.mjs +1 -1
  281. package/esm2022/lib/view-context/smart-view-context-dialog.service.mjs +1 -1
  282. package/esm2022/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.component.mjs +3 -3
  283. package/esm2022/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.service.mjs +1 -1
  284. package/esm2022/lib/view-context/smart-view-context.interceptor.mjs +1 -1
  285. package/esm2022/lib/view-context/smart-view-context.model.mjs +1 -1
  286. package/esm2022/lib/view-context/smart-view-context.module.mjs +1 -1
  287. package/esm2022/lib/view-context/smart-view-context.service.mjs +1 -1
  288. package/esm2022/lib/view-context/smart-view-redirect/smart-view-redirect.mjs +1 -1
  289. package/esm2022/lib/view-context/utility/componentLibrary.mjs +1 -1
  290. package/esm2022/lib/view-context/utility/smart-object-utility.mjs +1 -1
  291. package/esm2022/lib/view-context/utility/smart-style-utility.mjs +1 -1
  292. package/esm2022/lib/view-context/value-api/api/api.mjs +1 -1
  293. package/esm2022/lib/view-context/value-api/api/value.service.mjs +1 -1
  294. package/esm2022/lib/view-context/value-api/api.module.mjs +1 -1
  295. package/esm2022/lib/view-context/value-api/configuration.mjs +1 -1
  296. package/esm2022/lib/view-context/value-api/encoder.mjs +1 -1
  297. package/esm2022/lib/view-context/value-api/index.mjs +1 -1
  298. package/esm2022/lib/view-context/value-api/model/genericValue.mjs +1 -1
  299. package/esm2022/lib/view-context/value-api/model/models.mjs +1 -1
  300. package/esm2022/lib/view-context/value-api/model/value.mjs +1 -1
  301. package/esm2022/lib/view-context/value-api/model/valueSetData.mjs +1 -1
  302. package/esm2022/lib/view-context/value-api/model/valueSetDefinition.mjs +1 -1
  303. package/esm2022/lib/view-context/value-api/model/valueSetDefinitionData.mjs +1 -1
  304. package/esm2022/lib/view-context/value-api/model/valueSetDefinitionIdentifier.mjs +1 -1
  305. package/esm2022/lib/view-context/value-api/model/valueSetDefinitionKind.mjs +1 -1
  306. package/esm2022/lib/view-context/value-api/model/valueSetExpression.mjs +1 -1
  307. package/esm2022/lib/view-context/value-api/model/valueSetOperand.mjs +1 -1
  308. package/esm2022/lib/view-context/value-api/model/valueSetOperation.mjs +1 -1
  309. package/esm2022/lib/view-context/value-api/param.mjs +1 -1
  310. package/esm2022/lib/view-context/value-api/variables.mjs +1 -1
  311. package/esm2022/projects.mjs +1 -1
  312. package/fesm2022/smartbit4all-ng-client.mjs +193 -160
  313. package/fesm2022/smartbit4all-ng-client.mjs.map +1 -1
  314. package/lib/session/smart-backend-bootstrap.service.d.ts +2 -0
  315. package/lib/session/smart-session.service.d.ts +2 -0
  316. package/package.json +1 -1
  317. package/smartbit4all-ng-client-4.5.25.tgz +0 -0
  318. package/smartbit4all-ng-client-4.5.24.tgz +0 -0
@@ -925,4 +925,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
925
925
  providedIn: 'root',
926
926
  }]
927
927
  }], ctorParameters: () => [] });
928
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtdmlldy1jb250ZXh0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdmlldy1jb250ZXh0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLE1BQU0sRUFDTixVQUFVLEVBQ1YsY0FBYyxFQUlkLFFBQVEsR0FFVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcxQyxPQUFPLEVBT0wsY0FBYyxFQVdkLFNBQVMsRUFFVCxRQUFRLEdBQ1QsTUFBTSxPQUFPLENBQUM7QUFDZixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQVNuRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBb0IsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7OztBQUVqRixNQUFNLENBQUMsTUFBTSxzQ0FBc0MsR0FBRyx3Q0FBd0MsQ0FBQztBQUMvRixNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxrQ0FBa0MsQ0FBQztBQUNuRixNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FBRyxvQ0FBb0MsQ0FBQztBQUN2RixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxlQUFlLENBQUM7QUFFekQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQVUsb0JBQW9CLENBQUMsQ0FBQztBQUt0RixNQUFNLE9BQU8sdUJBQXVCO0lBcUNsQyxJQUFXLGdCQUFnQixDQUFDLGdCQUFt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RSxDQUFDO0lBQzVCLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBa0IsRUFBRSxXQUFvQixLQUFLO1FBQ3RELElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLDhEQUE4RDtRQUMxRixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsdURBQXVEO1FBQ2hGLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZO1FBQ2hCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDMUIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3hDLElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsTUFBTSxZQUFZLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqRCxZQUFZLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7K0dBdENVLGVBQWU7bUhBQWYsZUFBZSxjQUZkLE1BQU07OzRGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBJbmplY3QsXHJcbiAgSW5qZWN0YWJsZSxcclxuICBJbmplY3Rpb25Ub2tlbixcclxuICBJbmplY3RvcixcclxuICBtb2RlbCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT3B0aW9uYWwsXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNtYXJ0Rm9ybUludmFsaWRGaWVsZHMgfSBmcm9tICcuLi9zbWFydC1mb3JtL3NtYXJ0Zm9ybS5tb2RlbCc7XHJcbmltcG9ydCB7IFNtYXJ0U2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi9zZXNzaW9uL3NtYXJ0LXNlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgQ2xpcGJvYXJkRGF0YSxcclxuICBDb21wb25lbnRNb2RlbCxcclxuICBDb21wb25lbnRNb2RlbENoYW5nZSxcclxuICBEYXRhQ2hhbmdlLFxyXG4gIERvd25sb2FkZWRGaWxlLFxyXG4gIExpbmssXHJcbiAgTGlua1RhcmdldEVudW0sXHJcbiAgTWVzc2FnZURhdGEsXHJcbiAgTWVzc2FnZVJlc3VsdCxcclxuICBVaUFjdGlvbkRlc2NyaXB0b3IsXHJcbiAgVWlBY3Rpb25SZXF1ZXN0LFxyXG4gIFZpZXdDb25zdHJhaW50LFxyXG4gIFZpZXdDb250ZXh0Q2hhbmdlLFxyXG4gIFZpZXdDb250ZXh0RGF0YSxcclxuICBWaWV3Q29udGV4dFVwZGF0ZSxcclxuICBWaWV3RGF0YSxcclxuICBWaWV3U2VydmljZSxcclxuICBWaWV3U3RhdGUsXHJcbiAgVmlld1N0YXRlVXBkYXRlLFxyXG4gIFZpZXdUeXBlLFxyXG59IGZyb20gJy4vYXBpJztcclxuaW1wb3J0IHsgTWVzc2FnZURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vbWVzc2FnZS1kaWFsb2cvbWVzc2FnZS1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBTbWFydEVtYmVkZGVkVmlld1JlZixcclxuICBTbWFydFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgU21hcnRWaWV3Q29udGV4dEFwaUVycm9yLFxyXG4gIFNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvcnMsXHJcbiAgU21hcnRWaWV3RGlhbG9nUmVmLFxyXG4gIFNtYXJ0Vmlld0hhbmRsZXJNb2RlbCxcclxufSBmcm9tICcuL3NtYXJ0LXZpZXctY29udGV4dC5tb2RlbCc7XHJcbmltcG9ydCB7IFNtYXJ0U3ViamVjdCB9IGZyb20gJy4uL3NtYXJ0LXN1YmplY3QvcHJvamVjdHMnO1xyXG5pbXBvcnQgeyBTbWFydE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc21hcnQtbmF2aWdhdGlvbi9wcm9qZWN0cyc7XHJcbmltcG9ydCB7IFNtYXJ0Vmlld0NvbnRleHREaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi9zbWFydC12aWV3LWNvbnRleHQtZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBEeW5hbWljRGlhbG9nUmVmIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcclxuaW1wb3J0IHsgQ09NUE9ORU5UX0xJQlJBUlksIENvbXBvbmVudExpYnJhcnkgfSBmcm9tICcuL3V0aWxpdHkvY29tcG9uZW50TGlicmFyeSc7XHJcblxyXG5leHBvcnQgY29uc3QgU21hcnRWaWV3Q29udGV4dEVycm9yRGlhbG9nQnV0dG9uTGFiZWwgPSAnU21hcnRWaWV3Q29udGV4dEVycm9yRGlhbG9nQnV0dG9uTGFiZWwnO1xyXG5leHBvcnQgY29uc3QgU21hcnRWaWV3Q29udGV4dEVycm9yRGlhbG9nVGl0bGUgPSAnU21hcnRWaWV3Q29udGV4dEVycm9yRGlhbG9nVGl0bGUnO1xyXG5leHBvcnQgY29uc3QgU21hcnRWaWV3Q29udGV4dEVycm9yRGlhbG9nTWVzc2FnZSA9ICdTbWFydFZpZXdDb250ZXh0RXJyb3JEaWFsb2dNZXNzYWdlJztcclxuZXhwb3J0IGNvbnN0IERlZmF1bHRVaUFjdGlvbkNvZGVfQ0xPU0UgPSAnREVGQVVMVF9DTE9TRSc7XHJcblxyXG5leHBvcnQgY29uc3QgRElBTE9HX0RJU0FCTEVfQ0xPU0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48Ym9vbGVhbj4oJ2RpYWxvZ0Rpc2FibGVDbG9zZScpO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0Vmlld0NvbnRleHRTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250ZXh0VXVpZE5hbWU6IHN0cmluZyA9ICd2aWV3Q29udGV4dFV1aWQnO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbnRleHRVdWlkSGVhZGVyTmFtZTogc3RyaW5nID0gJ3ZpZXdDb250ZXh0VXVpZCc7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBwYWdlTmFtZVByZWZpeDogc3RyaW5nID0gJ3BhZ2UuJztcclxuICBwcml2YXRlIHJlYWRvbmx5IGNvbXBvbmVudE5hbWVQcmVmaXg6IHN0cmluZyA9ICdjb21wb25lbnQuJztcclxuICBwdWJsaWMgbWVzc2FnZURpYWxvZ25hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBwcml2YXRlIHVybD86IHN0cmluZztcclxuICBwcml2YXRlIHZpZXdDb250ZXh0PzogVmlld0NvbnRleHREYXRhO1xyXG4gIHByaXZhdGUgdmlld0hhbmRsZXJzOiBBcnJheTxTbWFydFZpZXdIYW5kbGVyTW9kZWw+ID0gbmV3IEFycmF5KCk7XHJcbiAgcHJpdmF0ZSBvcGVuZWRWaWV3VXVpZHM6IEFycmF5PHN0cmluZz4gPSBuZXcgQXJyYXkoKTtcclxuICBwcml2YXRlIG9wZW5lZFZpZXdEYXRhOiBBcnJheTxWaWV3RGF0YT4gPSBuZXcgQXJyYXkoKTtcclxuXHJcbiAgcHJpdmF0ZSBfZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG4gIHB1YmxpYyB1dWlkT2ZQYWdlSGFzQmVlbkNoYW5nZWQ6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTbWFydFN1YmplY3QodGhpcy5fZGVzdHJveSQpO1xyXG4gIHB1YmxpYyB2aWV3Q29udGV4dEhhc0JlZW5TeW5jZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU21hcnRTdWJqZWN0KHRoaXMuX2Rlc3Ryb3kkKTtcclxuICBwcml2YXRlIGluaXRpYWxpemVSdW5uaW5nOiBTdWJqZWN0PFZpZXdDb250ZXh0RGF0YT4gfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBpbml0aU5ld0NvbnRleHRSdW5uaW5nOiBTdWJqZWN0PHZvaWQ+IHwgdW5kZWZpbmVkO1xyXG5cclxuICBwdWJsaWMgc21hcnRWaWV3Q29udGV4dEFwaUVycm9ycz86IFNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvcnM7XHJcblxyXG4gIHB1YmxpYyBvcGVuU21hcnRMaW5rOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU21hcnRTdWJqZWN0KHRoaXMuX2Rlc3Ryb3kkKTtcclxuICBwdWJsaWMgaXNPcGVuaW5nU21hcnRMaW5rOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgZGlhbG9nUmVmczogU21hcnRWaWV3RGlhbG9nUmVmW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBlbWJlZGRlZENvbnRhaW5lcnM6IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIFZpZXdDb250YWluZXJSZWY+PiA9IG5ldyBNYXAoKTtcclxuICBwcml2YXRlIGVtYmVkZGVkVmlld1JlZnM6IFNtYXJ0RW1iZWRkZWRWaWV3UmVmW10gPSBbXTtcclxuICBwcml2YXRlIHBlbmRpbmdFbWJlZGRlZFZpZXdzOiBWaWV3RGF0YVtdID0gW107XHJcblxyXG4gIHByaXZhdGUgYWN0aW9uRGVzY3JpcHRvcnM/OiBNYXA8c3RyaW5nLCBVaUFjdGlvbkRlc2NyaXB0b3I+O1xyXG5cclxuICBwcml2YXRlIG1vZHVsZVVybHNCeU1vZHVsZT86IE1hcDxzdHJpbmcsIHN0cmluZz47XHJcblxyXG4gIHB1YmxpYyBjb21tb25GZWVkYmFja1RleHQ/OiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyBzbWFydEFwaUNsaWVudHM6IE1hcDxzdHJpbmcsIFNtYXJ0U3ViamVjdDxhbnk+PiA9IG5ldyBNYXAoKTtcclxuXHJcbiAgcHVibGljIHNldCB0cmFuc2xhdGVTZXJ2aWNlKHRyYW5zbGF0ZVNlcnZpY2U6IFNtYXJ0VHJhbnNsYXRlU2VydmljZSB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fdHJhbnNsYXRlU2VydmljZSA9IHRyYW5zbGF0ZVNlcnZpY2U7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2VDaGFuZ2VkLm5leHQoKTtcclxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZUNoYW5nZWQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgdHJhbnNsYXRlU2VydmljZSgpOiBTbWFydFRyYW5zbGF0ZVNlcnZpY2UgfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdHJhbnNsYXRlU2VydmljZT86IFNtYXJ0VHJhbnNsYXRlU2VydmljZTtcclxuICBwdWJsaWMgdHJhbnNsYXRlU2VydmljZUNoYW5nZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU21hcnRTdWJqZWN0KHRoaXMuX2Rlc3Ryb3kkKTtcclxuXHJcbiAgcHVibGljIGNvbXBvbmVudExpYnJhcnk6IENvbXBvbmVudExpYnJhcnkgfCB1bmRlZmluZWQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB2aWV3OiBWaWV3U2VydmljZSxcclxuICAgIHByaXZhdGUgc2Vzc2lvbjogU21hcnRTZXNzaW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgbmF2aWdhdGlvbjogU21hcnROYXZpZ2F0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgZGlhbG9nOiBTbWFydFZpZXdDb250ZXh0RGlhbG9nU2VydmljZSxcclxuICAgIHByaXZhdGUgYXBpUXVldWVTZXJ2aWNlOiBBcGlRdWV1ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGluamVjdDogSW5qZWN0b3IsXHJcbiAgICBASW5qZWN0KENPTVBPTkVOVF9MSUJSQVJZKSBAT3B0aW9uYWwoKSBjb21wTGliPzogQ29tcG9uZW50TGlicmFyeVxyXG4gICkge1xyXG4gICAgdGhpcy5jb21wb25lbnRMaWJyYXJ5ID0gY29tcExpYjtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBmb2xsb3codXVpZDogc3RyaW5nLCBkZXRlY3RDaGFuZ2U6IFNtYXJ0U3ViamVjdDxhbnk+KTogdm9pZCB7XHJcbiAgICB0aGlzLnNtYXJ0QXBpQ2xpZW50cy5zZXQodXVpZCwgZGV0ZWN0Q2hhbmdlKTtcclxuICB9XHJcbiAgcHVibGljIHVuZm9sbG93KHV1aWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5zbWFydEFwaUNsaWVudHMuZGVsZXRlKHV1aWQpO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJFbWJlZGRlZFNsb3QoY29udGFpbmVyVXVpZDogc3RyaW5nLCBjb250YWluZXJJZDogc3RyaW5nLCB2Y1JlZjogVmlld0NvbnRhaW5lclJlZik6IHZvaWQge1xyXG4gICAgbGV0IGlubmVyTWFwID0gdGhpcy5lbWJlZGRlZENvbnRhaW5lcnMuZ2V0KGNvbnRhaW5lclV1aWQpO1xyXG4gICAgaWYgKCFpbm5lck1hcCkge1xyXG4gICAgICBpbm5lck1hcCA9IG5ldyBNYXAoKTtcclxuICAgICAgdGhpcy5lbWJlZGRlZENvbnRhaW5lcnMuc2V0KGNvbnRhaW5lclV1aWQsIGlubmVyTWFwKTtcclxuICAgIH1cclxuICAgIGlubmVyTWFwLnNldChjb250YWluZXJJZCwgdmNSZWYpO1xyXG5cclxuICAgIC8vIFJlYXR0YWNoIGVtYmVkZGVkIHZpZXdzIHRoYXQgd2VyZSBkZXRhY2hlZCBiZWZvcmUgbGF5b3V0IHJlLXJlbmRlclxyXG4gICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLmVtYmVkZGVkVmlld1JlZnMuZmlsdGVyKFxyXG4gICAgICAocmVmKSA9PiByZWYuY29udGFpbmVyVXVpZCA9PT0gY29udGFpbmVyVXVpZCAmJiByZWYuY29udGFpbmVySWQgPT09IGNvbnRhaW5lcklkXHJcbiAgICApO1xyXG4gICAgZm9yIChjb25zdCByZWYgb2YgZXhpc3RpbmcpIHtcclxuICAgICAgaWYgKCFyZWYuY29tcG9uZW50UmVmLmhvc3RWaWV3LmRlc3Ryb3llZCkge1xyXG4gICAgICAgIHZjUmVmLmluc2VydChyZWYuY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIERyYWluIHBlbmRpbmcgcXVldWVcclxuICAgIGNvbnN0IG1hdGNoaW5nID0gdGhpcy5wZW5kaW5nRW1iZWRkZWRWaWV3cy5maWx0ZXIoXHJcbiAgICAgICh2KSA9PiB2LmNvbnRhaW5lclV1aWQgPT09IGNvbnRhaW5lclV1aWQgJiYgdi5jb250YWluZXJJZCA9PT0gY29udGFpbmVySWRcclxuICAgICk7XHJcbiAgICB0aGlzLnBlbmRpbmdFbWJlZGRlZFZpZXdzID0gdGhpcy5wZW5kaW5nRW1iZWRkZWRWaWV3cy5maWx0ZXIoXHJcbiAgICAgICh2KSA9PiAhKHYuY29udGFpbmVyVXVpZCA9PT0gY29udGFpbmVyVXVpZCAmJiB2LmNvbnRhaW5lcklkID09PSBjb250YWluZXJJZClcclxuICAgICk7XHJcblxyXG4gICAgaWYgKG1hdGNoaW5nLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgdXBkYXRlczogKFZpZXdTdGF0ZVVwZGF0ZSB8IHVuZGVmaW5lZClbXSA9IG1hdGNoaW5nLm1hcCgodikgPT4gdGhpcy5vcGVuVmlldyh2KSk7XHJcbiAgICAgIHRoaXMuc2VuZFZpZXdDb250ZXh0VXBkYXRlcyh1cGRhdGVzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRldGFjaEFsbEVtYmVkZGVkVmlld3MoY29udGFpbmVyVXVpZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuZW1iZWRkZWRWaWV3UmVmcy5maWx0ZXIoKHJlZikgPT4gcmVmLmNvbnRhaW5lclV1aWQgPT09IGNvbnRhaW5lclV1aWQpO1xyXG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikge1xyXG4gICAgICBpZiAoY2hpbGQuY29tcG9uZW50UmVmLmhvc3RWaWV3LmRlc3Ryb3llZCkge1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHZjUmVmID0gdGhpcy5nZXRFbWJlZGRlZFNsb3QoY29udGFpbmVyVXVpZCwgY2hpbGQuY29udGFpbmVySWQpO1xyXG4gICAgICBpZiAodmNSZWYpIHtcclxuICAgICAgICBjb25zdCBpZHggPSB2Y1JlZi5pbmRleE9mKGNoaWxkLmNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XHJcbiAgICAgICAgaWYgKGlkeCA+PSAwKSB7XHJcbiAgICAgICAgICB2Y1JlZi5kZXRhY2goaWR4KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsZWFudXBPcnBoYW5lZEVtYmVkZGVkVmlld3MoY29udGFpbmVyVXVpZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBvcnBoYW5lZCA9IHRoaXMuZW1iZWRkZWRWaWV3UmVmcy5maWx0ZXIoKHJlZikgPT4ge1xyXG4gICAgICBpZiAocmVmLmNvbnRhaW5lclV1aWQgIT09IGNvbnRhaW5lclV1aWQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHJlZi5jb21wb25lbnRSZWYuaG9zdFZpZXcuZGVzdHJveWVkKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdmNSZWYgPSB0aGlzLmdldEVtYmVkZGVkU2xvdChjb250YWluZXJVdWlkLCByZWYuY29udGFpbmVySWQpO1xyXG4gICAgICByZXR1cm4gIXZjUmVmIHx8IHZjUmVmLmluZGV4T2YocmVmLmNvbXBvbmVudFJlZi5ob3N0VmlldykgPCAwO1xyXG4gICAgfSk7XHJcbiAgICBmb3IgKGNvbnN0IHJlZiBvZiBvcnBoYW5lZCkge1xyXG4gICAgICBpZiAoIXJlZi5jb21wb25lbnRSZWYuaG9zdFZpZXcuZGVzdHJveWVkKSB7XHJcbiAgICAgICAgcmVmLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgaWR4ID0gdGhpcy5vcGVuZWRWaWV3VXVpZHMuaW5kZXhPZihyZWYudXVpZCk7XHJcbiAgICAgIGlmIChpZHggPj0gMCkge1xyXG4gICAgICAgIHRoaXMub3BlbmVkVmlld1V1aWRzLnNwbGljZShpZHgsIDEpO1xyXG4gICAgICAgIHRoaXMub3BlbmVkVmlld0RhdGEuc3BsaWNlKGlkeCwgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuZW1iZWRkZWRWaWV3UmVmcyA9IHRoaXMuZW1iZWRkZWRWaWV3UmVmcy5maWx0ZXIoKHJlZikgPT4gIW9ycGhhbmVkLmluY2x1ZGVzKHJlZikpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29tcG9zaXRlTW9kZWwoY29udGFpbmVyVXVpZDogc3RyaW5nKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XHJcbiAgICBjb25zdCByZXN1bHQ6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5lbWJlZGRlZFZpZXdSZWZzLmZpbHRlcigocmVmKSA9PiByZWYuY29udGFpbmVyVXVpZCA9PT0gY29udGFpbmVyVXVpZCk7XHJcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XHJcbiAgICAgIHJlc3VsdFtjaGlsZC51dWlkXSA9IGNoaWxkLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5nZXRNb2RlbCgpO1xyXG4gICAgICBPYmplY3QuYXNzaWduKHJlc3VsdCwgdGhpcy5nZXRDb21wb3NpdGVNb2RlbChjaGlsZC51dWlkKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgc3VibWl0RW1iZWRkZWRGb3Jtcyhjb250YWluZXJVdWlkOiBzdHJpbmcsIHZhbGlkYXRlOiBib29sZWFuKTogU21hcnRGb3JtSW52YWxpZEZpZWxkcyB7XHJcbiAgICBjb25zdCBhbGxJbnZhbGlkS2V5czogc3RyaW5nW10gPSBbXTtcclxuICAgIGNvbnN0IGFsbEludmFsaWROYW1lczogc3RyaW5nW10gPSBbXTtcclxuICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5lbWJlZGRlZFZpZXdSZWZzLmZpbHRlcigocmVmKSA9PiByZWYuY29udGFpbmVyVXVpZCA9PT0gY29udGFpbmVyVXVpZCk7XHJcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XHJcbiAgICAgIGNvbnN0IGluc3RhbmNlID0gY2hpbGQuY29tcG9uZW50UmVmLmluc3RhbmNlO1xyXG4gICAgICBpbnN0YW5jZS5zdWJtaXRGb3JtKHZhbGlkYXRlKTtcclxuICAgICAgaWYgKHZhbGlkYXRlKSB7XHJcbiAgICAgICAgY29uc3QgaW52YWxpZDogU21hcnRGb3JtSW52YWxpZEZpZWxkcyA9IGluc3RhbmNlLmdldEludmFsaWRGaWVsZHMoKTtcclxuICAgICAgICBhbGxJbnZhbGlkS2V5cy5wdXNoKC4uLmludmFsaWQuaW52YWxpZEZpZWxkS2V5cyk7XHJcbiAgICAgICAgYWxsSW52YWxpZE5hbWVzLnB1c2goLi4uaW52YWxpZC5pbnZhbGlkRmllbGROYW1lcyk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgbmVzdGVkID0gdGhpcy5zdWJtaXRFbWJlZGRlZEZvcm1zKGNoaWxkLnV1aWQsIHZhbGlkYXRlKTtcclxuICAgICAgYWxsSW52YWxpZEtleXMucHVzaCguLi5uZXN0ZWQuaW52YWxpZEZpZWxkS2V5cyk7XHJcbiAgICAgIGFsbEludmFsaWROYW1lcy5wdXNoKC4uLm5lc3RlZC5pbnZhbGlkRmllbGROYW1lcyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyBpbnZhbGlkRmllbGRLZXlzOiBhbGxJbnZhbGlkS2V5cywgaW52YWxpZEZpZWxkTmFtZXM6IGFsbEludmFsaWROYW1lcyB9O1xyXG4gIH1cclxuXHJcbiAgdW5yZWdpc3RlckVtYmVkZGVkU2xvdChjb250YWluZXJVdWlkOiBzdHJpbmcsIGNvbnRhaW5lcklkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlubmVyTWFwID0gdGhpcy5lbWJlZGRlZENvbnRhaW5lcnMuZ2V0KGNvbnRhaW5lclV1aWQpO1xyXG4gICAgaWYgKGlubmVyTWFwKSB7XHJcbiAgICAgIGlubmVyTWFwLmRlbGV0ZShjb250YWluZXJJZCk7XHJcbiAgICAgIGlmIChpbm5lck1hcC5zaXplID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5lbWJlZGRlZENvbnRhaW5lcnMuZGVsZXRlKGNvbnRhaW5lclV1aWQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEVtYmVkZGVkU2xvdChcclxuICAgIGNvbnRhaW5lclV1aWQ6IHN0cmluZyxcclxuICAgIGNvbnRhaW5lcklkOiBzdHJpbmdcclxuICApOiBWaWV3Q29udGFpbmVyUmVmIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLmVtYmVkZGVkQ29udGFpbmVycy5nZXQoY29udGFpbmVyVXVpZCk/LmdldChjb250YWluZXJJZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0QWN0aW9uRGVzY3JpcHRvcnMoYWN0aW9uRGVzY3JpcHRvcnM6IE1hcDxzdHJpbmcsIFVpQWN0aW9uRGVzY3JpcHRvcj4pOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aW9uRGVzY3JpcHRvcnMgPSBhY3Rpb25EZXNjcmlwdG9ycztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRBY3Rpb25EZXNjcmlwdG9ycygpOiBNYXA8c3RyaW5nLCBVaUFjdGlvbkRlc2NyaXB0b3I+IHwgdW5kZWZpbmVkIHtcclxuICAgIGlmICghdGhpcy5hY3Rpb25EZXNjcmlwdG9ycykge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdObyBhY3Rpb24gZGVzY3JpcHRvcnMgaGFzIGJlZW4gc2V0IHRvIFZpZXdDb250ZXh0LicpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuYWN0aW9uRGVzY3JpcHRvcnM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0Vmlld0hhbmRsZXJzKHZpZXdIYW5kbGVyczogQXJyYXk8U21hcnRWaWV3SGFuZGxlck1vZGVsPik6IHZvaWQge1xyXG4gICAgdGhpcy52aWV3SGFuZGxlcnMgPSB2aWV3SGFuZGxlcnM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0Vmlld0FwaUVycm9ycyh2aWV3QXBpRXJyb3JzOiBTbWFydFZpZXdDb250ZXh0QXBpRXJyb3JzKTogdm9pZCB7XHJcbiAgICB0aGlzLnNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvcnMgPSB2aWV3QXBpRXJyb3JzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldE1lc3NhZ2VEaWFsb2dOYW1lKG1lc3NhZ2VEaWFsb2dOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMubWVzc2FnZURpYWxvZ25hbWUgPSBtZXNzYWdlRGlhbG9nTmFtZTtcclxuICAgIHRoaXMudmlld0hhbmRsZXJzLnB1c2goe1xyXG4gICAgICBuYW1lOiBtZXNzYWdlRGlhbG9nTmFtZSxcclxuICAgICAgY29tcG9uZW50OiBNZXNzYWdlRGlhbG9nQ29tcG9uZW50LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFVwVXJsRm9yVmlld1NlcnZpY2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLnZpZXcuY29uZmlndXJhdGlvbi5iYXNlUGF0aCA9IHRoaXMudXJsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldE1vZHVsZVVSTChtb2R1bGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXRoaXMubW9kdWxlVXJsc0J5TW9kdWxlKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignTW9kdWxlc01hcCBkb2VzIG5vdCBleGlzdC4nKTtcclxuICAgIH1cclxuICAgIGxldCBtb2R1bGVVcmwgPSB0aGlzLm1vZHVsZVVybHNCeU1vZHVsZT8uZ2V0KG1vZHVsZSk7XHJcblxyXG4gICAgaWYgKCFtb2R1bGVVcmwpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNb2R1bGVVcmwgZG9lcyBub3QgZXhpc3Qgd2l0aCB0aGUgZ2l2ZW4gbW9kdWxlLicpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1vZHVsZVVybDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRNb2R1bGVVUkwobW9kdWxlczogTWFwPHN0cmluZywgc3RyaW5nPik6IHZvaWQge1xyXG4gICAgdGhpcy5tb2R1bGVVcmxzQnlNb2R1bGUgPSBtb2R1bGVzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFVybCh1cmw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy51cmwgPSB1cmwgKyAnL3ZpZXcnO1xyXG4gICAgdGhpcy5zZXRVcFVybEZvclZpZXdTZXJ2aWNlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0QW5kU3luY1ZpZXdDb250ZXh0KHV1aWQ/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICghdXVpZCkge1xyXG4gICAgICB1dWlkID0gdGhpcy5nZXRWaWV3Q29udGV4dFV1aWQoKTtcclxuICAgIH1cclxuICAgIGF3YWl0IHRoaXMuZ2V0Vmlld0NvbnRleHQodXVpZCkudGhlbihhc3luYyAoKSA9PiB7XHJcbiAgICAgIGF3YWl0IHRoaXMuc3luY1ZpZXcoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFZpZXdDb250ZXh0KHV1aWQ6IHN0cmluZyk6IFByb21pc2U8Vmlld0NvbnRleHREYXRhPiB7XHJcbiAgICB0aGlzLnZpZXdDb250ZXh0ID0gYXdhaXQgdGhpcy52aWV3LmdldFZpZXdDb250ZXh0KHV1aWQpLnRvUHJvbWlzZSgpO1xyXG4gICAgaWYgKCF0aGlzLnZpZXdDb250ZXh0KSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignVmlld0NvbnRleHQgZG9lcyBub3QgZXhpc3Qgd2l0aCB0aGUgZ2l2ZW4gdXVpZC4nKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnZpZXdDb250ZXh0O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFZpZXdDb250ZXh0RGF0YUJ5UGFnZU5hbWUocGFnZU5hbWU6IHN0cmluZyk6IFByb21pc2U8Vmlld0RhdGE+IHtcclxuICAgIGlmICghdGhpcy52aWV3Q29udGV4dCkge1xyXG4gICAgICBhd2FpdCB0aGlzLmdldFZpZXdDb250ZXh0KHRoaXMuZ2V0Vmlld0NvbnRleHRVdWlkKCkpO1xyXG4gICAgfVxyXG4gICAgbGV0IHBhZ2VVdWlkID0gdGhpcy5nZXRVdWlkT2ZQYWdlKHBhZ2VOYW1lKTtcclxuXHJcbiAgICBsZXQgdmlld0NvbnRleHRCeVBhZ2VOYW1lID0gdGhpcy52aWV3Q29udGV4dD8udmlld3MuZmluZCgodmlldykgPT4gdmlldy51dWlkID09PSBwYWdlVXVpZCk7XHJcbiAgICBpZiAoIXZpZXdDb250ZXh0QnlQYWdlTmFtZSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBWaWV3RGF0YSBvZiAke3BhZ2VOYW1lfSBpcyBub3QgZm91bmQhYCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmlld0NvbnRleHRCeVBhZ2VOYW1lO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHVwZGF0ZVZpZXdDb250ZXh0KFxyXG4gICAgdmlld0NvbnRleHRVcGRhdGU6IFZpZXdDb250ZXh0VXBkYXRlXHJcbiAgKTogUHJvbWlzZTxWaWV3Q29udGV4dERhdGEgfCB1bmRlZmluZWQ+IHtcclxuICAgIHZpZXdDb250ZXh0VXBkYXRlLmRldmljZUluZm8gPz89IHtcclxuICAgICAgZGV2aWNlSWQ6ICdpZCcsXHJcbiAgICAgIHVzZXJBZ2VudDogbmF2aWdhdG9yLnVzZXJBZ2VudCxcclxuICAgICAgcGFyYW1ldGVyczogbmV3IE1hcCgpLFxyXG4gICAgfTtcclxuICAgIHZpZXdDb250ZXh0VXBkYXRlLmRldmljZUluZm8uY29tcG9uZW50TGlicmFyeSA9IHRoaXMuY29tcG9uZW50TGlicmFyeTtcclxuXHJcbiAgICB0aGlzLnZpZXdDb250ZXh0ID0gYXdhaXQgdGhpcy52aWV3LnVwZGF0ZVZpZXdDb250ZXh0KHZpZXdDb250ZXh0VXBkYXRlKS50b1Byb21pc2UoKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy52aWV3Q29udGV4dDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xlYXJTZXNzaW9uU3RvcmFnZSgpOiB2b2lkIHtcclxuICAgIHNlc3Npb25TdG9yYWdlLmNsZWFyKCk7XHJcbiAgICB0aGlzLm9wZW5lZFZpZXdEYXRhID0gW107XHJcbiAgICB0aGlzLm9wZW5lZFZpZXdVdWlkcyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHN0YXJ0Vmlld0NvbnRleHQoKTogUHJvbWlzZTxWaWV3Q29udGV4dERhdGE+IHtcclxuICAgIHRoaXMuY2xlYXJTZXNzaW9uU3RvcmFnZSgpO1xyXG4gICAgdGhpcy5zZXNzaW9uLmFkZEhlYWRlclBhcmFtKHtcclxuICAgICAgaGVhZGVyTmFtZTogdGhpcy52aWV3Q29udGV4dFV1aWRIZWFkZXJOYW1lLFxyXG4gICAgICB2YWx1ZTogJycsXHJcbiAgICB9KTtcclxuXHJcbiAgICBsZXQgbmV3Vmlld0NvbnRleHQ6IFZpZXdDb250ZXh0RGF0YSB8IHVuZGVmaW5lZCA9IGF3YWl0IHRoaXMudmlld1xyXG4gICAgICAuY3JlYXRlVmlld0NvbnRleHQoKVxyXG4gICAgICAudG9Qcm9taXNlKCk7XHJcbiAgICBpZiAoIW5ld1ZpZXdDb250ZXh0KSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gVmlld0NvbnRleHQgd2FzIGNyZWF0ZWQnKTtcclxuICAgIH1cclxuICAgIHRoaXMudmlld0NvbnRleHQgPSBuZXdWaWV3Q29udGV4dDtcclxuICAgIHRoaXMuc2V0Vmlld0NvbnRleHRVdWlkKG5ld1ZpZXdDb250ZXh0LnV1aWQhKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy52aWV3Q29udGV4dDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBpbml0aWFsaXplKHV1aWQ/OiBzdHJpbmcpOiBQcm9taXNlPFZpZXdDb250ZXh0RGF0YSB8IHVuZGVmaW5lZD4ge1xyXG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZVJ1bm5pbmcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZVJ1bm5pbmcudG9Qcm9taXNlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmluaXRpYWxpemVSdW5uaW5nID0gbmV3IFNtYXJ0U3ViamVjdCh0aGlzLl9kZXN0cm95JCk7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgaWYgKHRoaXMudmlld0hhbmRsZXJzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgICBcIlRoZXJlIGFyZW4ndCBhbnkgdmlld0hhbmRsZXJzIGluIFNtYXJ0Vmlld0NvbnRleHRTZXJ2aWNlISBQcm92aWRlIHNvbWUgdG8gdXNlIGl0cyBmdW5jdGlvbnMuXCJcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5tZXNzYWdlRGlhbG9nbmFtZSkge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgbWVzc2FnZURpYWxvZ05hbWUgcHJvdmlkZWQgYnkgdGhlIGJhY2tlbmQgaGFzIG5vdCBiZWVuIHNldC4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHV1aWQpIHtcclxuICAgICAgICAgIHRoaXMuc2V0Vmlld0NvbnRleHRVdWlkKHV1aWQpO1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5nZXRWaWV3Q29udGV4dCh1dWlkKTtcclxuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnN0YXJ0Vmlld0NvbnRleHQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5zdGFydFZpZXdDb250ZXh0KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy52aWV3Q29udGV4dCE7XHJcbiAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgdGhpcy5pbml0aWFsaXplUnVubmluZy5uZXh0KHRoaXMudmlld0NvbnRleHQhKTtcclxuICAgICAgICB0aGlzLmluaXRpYWxpemVSdW5uaW5nLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgdGhpcy5pbml0aWFsaXplUnVubmluZyA9IHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGluaXRWaWV3Q29udGV4dCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGxldCB1dWlkO1xyXG4gICAgdHJ5IHtcclxuICAgICAgdXVpZCA9IHRoaXMuZ2V0Vmlld0NvbnRleHRVdWlkKCk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBhd2FpdCB0aGlzLmluaXRpYWxpemUoKTtcclxuICAgICAgdXVpZCA9IHRoaXMuZ2V0Vmlld0NvbnRleHRVdWlkKCk7XHJcbiAgICB9XHJcbiAgICBhd2FpdCB0aGlzLmluaXRpYWxpemUodXVpZCk7XHJcbiAgICBhd2FpdCB0aGlzLnJlc3RvcmVWaWV3cyh1dWlkKTtcclxuICAgIGF3YWl0IHRoaXMuZ2V0QW5kU3luY1ZpZXdDb250ZXh0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIeWRyYXRlcyB0aGUgdmlldy1jb250ZXh0IHN0YXRlIGZyb20gYW4gYWxyZWFkeS1leGlzdGluZyBVVUlEIHByb3ZpZGVkXHJcbiAgICogZXh0ZXJuYWxseSAoZS5nLiBieSBhIG5hdGl2ZSBtb2JpbGUgc2hlbGwgdmlhIFVSTCBmcmFnbWVudCkuIFVubGlrZVxyXG4gICAqIGBpbml0aWFsaXplKHV1aWQpYCwgdGhpcyBtZXRob2QgZG9lcyBOT1QgZmFsbCBiYWNrIHRvIGNyZWF0aW5nIGEgZnJlc2hcclxuICAgKiB2aWV3Q29udGV4dCBpZiB0aGUgYmFja2VuZCByZWplY3RzIHRoZSBVVUlEIOKAlCB0aGUgY2FsbGVyIGlzIGV4cGVjdGVkIHRvXHJcbiAgICogc3VyZmFjZSB0aGUgZmFpbHVyZSAodHlwaWNhbGx5IHZpYSB0aGUgYm9vdHN0cmFwJ3MgYG9uU3RhcnRFcnJvcmAgaG9vaykuXHJcbiAgICovXHJcbiAgcHVibGljIGFzeW5jIGluaXRGcm9tRXhpc3RpbmdWaWV3Q29udGV4dCh1dWlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuc2V0Vmlld0NvbnRleHRVdWlkKHV1aWQpO1xyXG4gICAgYXdhaXQgdGhpcy5nZXRWaWV3Q29udGV4dCh1dWlkKTtcclxuICAgIGF3YWl0IHRoaXMucmVzdG9yZVZpZXdzKHV1aWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGluaXROZXdWaWV3Q29udGV4dCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLmluaXRpTmV3Q29udGV4dFJ1bm5pbmcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaW5pdGlOZXdDb250ZXh0UnVubmluZy50b1Byb21pc2UoKTtcclxuICAgIH1cclxuICAgIHRoaXMuaW5pdGlOZXdDb250ZXh0UnVubmluZyA9IG5ldyBTbWFydFN1YmplY3QodGhpcy5fZGVzdHJveSQpO1xyXG4gICAgdHJ5IHtcclxuICAgICAgYXdhaXQgdGhpcy5zdGFydFZpZXdDb250ZXh0KCk7XHJcbiAgICAgIGxldCB1dWlkID0gdGhpcy5nZXRWaWV3Q29udGV4dFV1aWQoKTtcclxuICAgICAgYXdhaXQgdGhpcy5pbml0aWFsaXplKHV1aWQpO1xyXG4gICAgICBhd2FpdCB0aGlzLnJlc3RvcmVWaWV3cyh1dWlkKTtcclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIHRoaXMuaW5pdGlOZXdDb250ZXh0UnVubmluZy5uZXh0KCk7XHJcbiAgICAgIHRoaXMuaW5pdGlOZXdDb250ZXh0UnVubmluZy5jb21wbGV0ZSgpO1xyXG4gICAgICB0aGlzLmluaXRpTmV3Q29udGV4dFJ1bm5pbmcgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3BlblZpZXcodmlldzogVmlld0RhdGEpOiBWaWV3U3RhdGVVcGRhdGUgfCB1bmRlZmluZWQge1xyXG4gICAgbGV0IGFscmVhZHlPcGVuZWQgPSB0aGlzLm9wZW5lZFZpZXdVdWlkcy5zb21lKCh1dWlkKSA9PiB1dWlkID09PSB2aWV3LnV1aWQpO1xyXG4gICAgaWYgKGFscmVhZHlPcGVuZWQpIHJldHVybiB1bmRlZmluZWQ7XHJcblxyXG4gICAgbGV0IHZpZXdIYW5kbGVyOiBTbWFydFZpZXdIYW5kbGVyTW9kZWwgfCB1bmRlZmluZWQgPSB0aGlzLnZpZXdIYW5kbGVycy5maW5kKFxyXG4gICAgICAoaGFuZGxlcikgPT4gaGFuZGxlci5uYW1lID09PSB2aWV3LnZpZXdOYW1lXHJcbiAgICApO1xyXG4gICAgLy8gY29uc29sZS5sb2codmlld0hhbmRsZXIpO1xyXG5cclxuICAgIGlmICghdmlld0hhbmRsZXIpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTbWFydFZpZXdIYW5kbGVyTW9kZWwgd2FzIG5vdCBmb3VuZCBieSB2aWV3IG5hbWU6ICR7dmlldy52aWV3TmFtZX1gKTtcclxuICAgIH1cclxuICAgIGlmICh2aWV3LnR5cGUgPT09IFZpZXdUeXBlLkRJQUxPRykge1xyXG4gICAgICBpZiAoIXZpZXdIYW5kbGVyLmNvbXBvbmVudCkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgIGBDb21wb25lbnQgaXMgdW5kZWZpbmVkIGluIFNtYXJ0Vmlld0hhbmRsZXJNb2RlbCB3aXRoIG5hbWU6ICR7dmlldy52aWV3TmFtZX1gXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgcmVmSXNBbHJhZHlBZGRlZCA9IHRoaXMuZGlhbG9nUmVmcy5zb21lKFxyXG4gICAgICAgIChyZWY6IFNtYXJ0Vmlld0RpYWxvZ1JlZikgPT4gcmVmLnV1aWQgPT09IHZpZXcudXVpZFxyXG4gICAgICApO1xyXG4gICAgICBpZiAoIXJlZklzQWxyYWR5QWRkZWQpIHtcclxuICAgICAgICBsZXQgZGlhbG9nUmVmO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICB0aGlzLm9wZW5lZFZpZXdVdWlkcy5wdXNoKHZpZXcudXVpZCk7XHJcbiAgICAgICAgICB0aGlzLm9wZW5lZFZpZXdEYXRhLnB1c2godmlldyk7XHJcbiAgICAgICAgICB0aGlzLnNldFV1aWRPZlBhZ2Uodmlldy52aWV3TmFtZSwgdmlldy51dWlkLCB2aWV3SGFuZGxlci5jb21wb25lbnROYW1lKTtcclxuICAgICAgICAgIGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW5Db21wb25lbnRBc0RpYWxvZyh2aWV3SGFuZGxlci5jb21wb25lbnQsIHZpZXdIYW5kbGVyLm5hbWUpO1xyXG4gICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMub3BlbmVkVmlld1V1aWRzLmluZGV4T2Yodmlldy51dWlkKTtcclxuICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMub3BlbmVkVmlld1V1aWRzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgIHRoaXMub3BlbmVkVmlld0RhdGEuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgICAgdGhpcy5jbGVhclV1aWRPZlBhZ2Uodmlldy52aWV3TmFtZSwgdmlld0hhbmRsZXIuY29tcG9uZW50TmFtZSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5zZXRVdWlkT2ZQYWdlKHZpZXcudmlld05hbWUsIHZpZXcudXVpZCwgdmlld0hhbmRsZXIuY29tcG9uZW50TmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBkaWFsb2dEaXNhYmxlQ2xvc2UgPSB0cnVlO1xyXG4gICAgICAgIGxldCBpc01lc3NhZ2VEaWFsb2cgPSB2aWV3LnZpZXdOYW1lID09PSB0aGlzLm1lc3NhZ2VEaWFsb2duYW1lO1xyXG4gICAgICAgIGlmICghaXNNZXNzYWdlRGlhbG9nKSB7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBkaWFsb2dEaXNhYmxlQ2xvc2UgPSB0aGlzLmluamVjdC5nZXQoRElBTE9HX0RJU0FCTEVfQ0xPU0UpO1xyXG4gICAgICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGR1cmluZyByZWFkaW5nIERJQUxPR19ESVNBQkxFX0NMT1NFJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkaWFsb2dSZWYgaW5zdGFuY2VvZiBNYXREaWFsb2dSZWYpIHtcclxuICAgICAgICAgIGRpYWxvZ1JlZi5kaXNhYmxlQ2xvc2UgPSBkaWFsb2dEaXNhYmxlQ2xvc2U7XHJcbiAgICAgICAgICAvLyBpZiAoaXNNZXNzYWdlRGlhbG9nKSB7XHJcbiAgICAgICAgICAvLyAgIGlmICh2aWV3Lm1lc3NhZ2U/Lm9wdGlvbnMgJiYgdmlldy5tZXNzYWdlLm9wdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICAgIGlmICghZGlhbG9nRGlzYWJsZUNsb3NlKSB7XHJcbiAgICAgICAgICAgIGRpYWxvZ1JlZlxyXG4gICAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcclxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucGVyZm9ybUFjdGlvbih2aWV3LnV1aWQsIHsgY29kZTogRGVmYXVsdFVpQWN0aW9uQ29kZV9DTE9TRSwgcGFyYW1zOiB7fSB9KTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKGRpYWxvZ1JlZiBpbnN0YW5jZW9mIER5bmFtaWNEaWFsb2dSZWYpIHtcclxuICAgICAgICAgIGlmICghZGlhbG9nRGlzYWJsZUNsb3NlKSB7XHJcbiAgICAgICAgICAgIGRpYWxvZ1JlZi5vbkRlc3Ryb3kucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMucGVyZm9ybUFjdGlvbih2aWV3LnV1aWQsIHsgY29kZTogRGVmYXVsdFVpQWN0aW9uQ29kZV9DTE9TRSwgcGFyYW1zOiB7fSB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZnMucHVzaCh7XHJcbiAgICAgICAgICB1dWlkOiB2aWV3LnV1aWQsXHJcbiAgICAgICAgICBkaWFsb2dSZWYsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodmlldy50eXBlID09PSBWaWV3VHlwZS5OT1JNQUwpIHtcclxuICAgICAgaWYgKHZpZXdIYW5kbGVyLnJvdXRlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFJvdXRlIGlzIHVuZGVmaW5lZCBpbiBTbWFydFZpZXdIYW5kbGVyTW9kZWwgd2l0aCBuYW1lOiAke3ZpZXcudmlld05hbWV9YCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5uYXZpZ2F0aW9uLm5hdmlnYXRlVG8odmlld0hhbmRsZXIucm91dGUuc3BsaXQoJy8nKSk7XHJcbiAgICB9IGVsc2UgaWYgKHZpZXcudHlwZSA9PT0gVmlld1R5cGUuRU1CRURERUQpIHtcclxuICAgICAgLy8gY29uc29sZS5sb2coJ1tFbWJlZGRlZF0gb3BlblZpZXcgRU1CRURERUQnLCB7IHZpZXdOYW1lOiB2aWV3LnZpZXdOYW1lLCB1dWlkOiB2aWV3LnV1aWQsIGNvbnRhaW5lclV1aWQ6IHZpZXcuY29udGFpbmVyVXVpZCwgY29udGFpbmVySWQ6IHZpZXcuY29udGFpbmVySWQgfSk7XHJcbiAgICAgIGlmICghdmlld0hhbmRsZXIuY29tcG9uZW50KSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgYENvbXBvbmVudCBpcyB1bmRlZmluZWQgaW4gU21hcnRWaWV3SGFuZGxlck1vZGVsIHdpdGggbmFtZTogJHt2aWV3LnZpZXdOYW1lfWBcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHZjUmVmID0gdGhpcy5nZXRFbWJlZGRlZFNsb3Qodmlldy5jb250YWluZXJVdWlkISwgdmlldy5jb250YWluZXJJZCEpO1xyXG4gICAgICAvLyBjb25zb2xlLmxvZygnW0VtYmVkZGVkXSBzbG90IGxvb2t1cCcsIHsgZm91bmQ6ICEhdmNSZWYsIGNvbnRhaW5lclV1aWQ6IHZpZXcuY29udGFpbmVyVXVpZCwgY29udGFpbmVySWQ6IHZpZXcuY29udGFpbmVySWQsIHJlZ2lzdGVyZWRDb250YWluZXJzOiBBcnJheS5mcm9tKHRoaXMuZW1iZWRkZWRDb250YWluZXJzLmtleXMoKSkgfSk7XHJcbiAgICAgIGlmICghdmNSZWYpIHtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZygnW0VtYmVkZGVkXSBzbG90IG5vdCBmb3VuZCDigJQgZGVmZXJyaW5nIHRvIHBlbmRpbmdFbWJlZGRlZFZpZXdzJyk7XHJcbiAgICAgICAgdGhpcy5wZW5kaW5nRW1iZWRkZWRWaWV3cy5wdXNoKHZpZXcpO1xyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdmNSZWYuY3JlYXRlQ29tcG9uZW50KHZpZXdIYW5kbGVyLmNvbXBvbmVudCk7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdbRW1iZWRkZWRdIGNvbXBvbmVudCBjcmVhdGVkLCBzZXR0aW5nIHV1aWQ6Jywgdmlldy51dWlkKTtcclxuICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnV1aWQgPSB2aWV3LnV1aWQ7XHJcbiAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5ydW4oKTtcclxuICAgICAgdGhpcy5lbWJlZGRlZFZpZXdSZWZzLnB1c2goe1xyXG4gICAgICAgIHV1aWQ6IHZpZXcudXVpZCxcclxuICAgICAgICBjb250YWluZXJVdWlkOiB2aWV3LmNvbnRhaW5lclV1aWQhLFxyXG4gICAgICAgIGNvbnRhaW5lcklkOiB2aWV3LmNvbnRhaW5lcklkISxcclxuICAgICAgICBjb21wb25lbnRSZWYsXHJcbiAgICAgIH0pO1xyXG4gICAgICAvLyBjb25zb2xlLmxvZygnW0VtYmVkZGVkXSBvcGVuVmlldyBFTUJFRERFRCBjb21wbGV0ZSwgZW1iZWRkZWRWaWV3UmVmcyBjb3VudDonLCB0aGlzLmVtYmVkZGVkVmlld1JlZnMubGVuZ3RoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHR5cGUgb2YgdGhlIHZpZXcgYW5kIGl0cyB2aWV3SGFuZGxlciBpcyBub3QgdGhlIHNhbWUhJyk7XHJcbiAgICB9XHJcblxyXG4gICAgdmlldy5zdGF0ZSA9IFZpZXdTdGF0ZS5PUEVORUQ7XHJcblxyXG4gICAgdGhpcy5vcGVuZWRWaWV3VXVpZHMucHVzaCh2aWV3LnV1aWQpO1xyXG4gICAgdGhpcy5vcGVuZWRWaWV3RGF0YS5wdXNoKHZpZXcpO1xyXG5cclxuICAgIGlmICh2aWV3LnR5cGUgIT09IFZpZXdUeXBlLkVNQkVEREVEKSB7XHJcbiAgICAgIHRoaXMuc2V0VXVpZE9mUGFnZSh2aWV3LnZpZXdOYW1lLCB2aWV3LnV1aWQsIHZpZXdIYW5kbGVyLmNvbXBvbmVudE5hbWUpO1xyXG4gICAgICB0aGlzLnV1aWRPZlBhZ2VIYXNCZWVuQ2hhbmdlZC5uZXh0KHZpZXcudmlld05hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHN0YXRlOiBWaWV3U3RhdGUuT1BFTkVELFxyXG4gICAgICB1dWlkOiB2aWV3LnV1aWQsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlVmlldyh2aWV3OiBWaWV3RGF0YSk6IFZpZXdTdGF0ZVVwZGF0ZVtdIHtcclxuICAgIGxldCB2aWV3SGFuZGxlcjogU21hcnRWaWV3SGFuZGxlck1vZGVsIHwgdW5kZWZpbmVkID0gdGhpcy52aWV3SGFuZGxlcnMuZmluZChcclxuICAgICAgKGhhbmRsZXIpID0+IGhhbmRsZXIubmFtZSA9PT0gdmlldy52aWV3TmFtZVxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoIXZpZXdIYW5kbGVyKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU21hcnRWaWV3SGFuZGxlck1vZGVsIHdhcyBub3QgZm91bmQgYnkgdmlldyBuYW1lOiAke3ZpZXcudmlld05hbWV9YCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdXBkYXRlczogVmlld1N0YXRlVXBkYXRlW10gPSBbXTtcclxuXHJcbiAgICBpZiAodmlldy50eXBlID09PSBWaWV3VHlwZS5ESUFMT0cpIHtcclxuICAgICAgbGV0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nUmVmcy5maW5kKFxyXG4gICAgICAgIChkaWFsb2dSZWY6IFNtYXJ0Vmlld0RpYWxvZ1JlZikgPT4gZGlhbG9nUmVmLnV1aWQgPT09IHZpZXcudXVpZFxyXG4gICAgICApO1xyXG4gICAgICBpZiAoZGlhbG9nUmVmKSB7XHJcbiAgICAgICAgZGlhbG9nUmVmLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuZGlhbG9nUmVmcy5pbmRleE9mKGRpYWxvZ1JlZik7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWZzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ0RpYWxvZ1JlZiBpcyBub3QgZm91bmQgYnkgdXVpZC4nKTtcclxuICAgICAgfVxyXG4gICAgICB1cGRhdGVzLnB1c2goLi4udGhpcy5jbGVhbnVwRW1iZWRkZWRDaGlsZHJlbih2aWV3LnV1aWQpKTtcclxuICAgIH0gZWxzZSBpZiAodmlldy50eXBlID09PSBWaWV3VHlwZS5OT1JNQUwpIHtcclxuICAgICAgLy8gVE9ETzogY2xvc2Ugbm9ybWFsIHBhZ2U/Pz9cclxuICAgICAgLy8gdGhpcy5uYXZpZ2F0aW9uLm5hdmlnYXRlVG8odmlld0hhbmRsZXIucm91dGUuc3BsaXQoXCIvXCIpKTtcclxuICAgICAgdXBkYXRlcy5wdXNoKC4uLnRoaXMuY2xlYW51cEVtYmVkZGVkQ2hpbGRyZW4odmlldy51dWlkKSk7XHJcbiAgICB9IGVsc2UgaWYgKHZpZXcudHlwZSA9PT0gVmlld1R5cGUuRU1CRURERUQpIHtcclxuICAgICAgY29uc3QgcmVmSW5kZXggPSB0aGlzLmVtYmVkZGVkVmlld1JlZnMuZmluZEluZGV4KChyZWYpID0+IHJlZi51dWlkID09PSB2aWV3LnV1aWQpO1xyXG4gICAgICBpZiAocmVmSW5kZXggPj0gMCkge1xyXG4gICAgICAgIHRoaXMuZW1iZWRkZWRWaWV3UmVmc1tyZWZJbmRleF0uY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcclxuICAgICAgICB0aGlzLmVtYmVkZGVkVmlld1JlZnMuc3BsaWNlKHJlZkluZGV4LCAxKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnBlbmRpbmdFbWJlZGRlZFZpZXdzID0gdGhpcy5wZW5kaW5nRW1iZWRkZWRWaWV3cy5maWx0ZXIoKHYpID0+IHYudXVpZCAhPT0gdmlldy51dWlkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHR5cGUgb2YgdGhlIHZpZXcgYW5kIGl0cyB2aWV3SGFuZGxlciBpcyBub3QgdGhlIHNhbWUhJyk7XHJcbiAgICB9XHJcblxyXG4gICAgdmlldy5zdGF0ZSA9IFZpZXdTdGF0ZS5DTE9TRUQ7XHJcblxyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLm9wZW5lZFZpZXdVdWlkcy5pbmRleE9mKHZpZXcudXVpZCk7XHJcbiAgICBpZiAoaW5kZXggPj0gMCkge1xyXG4gICAgICB0aGlzLm9wZW5lZFZpZXdVdWlkcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB0aGlzLm9wZW5lZFZpZXdEYXRhLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIGlmICh2aWV3LnR5cGUgIT09IFZpZXdUeXBlLkVNQkVEREVEKSB7XHJcbiAgICAgICAgdGhpcy5jbGVhclV1aWRPZlBhZ2Uodmlldy52aWV3TmFtZSwgdmlld0hhbmRsZXIuY29tcG9uZW50TmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVzLnB1c2goe1xyXG4gICAgICBzdGF0ZTogVmlld1N0YXRlLkNMT1NFRCxcclxuICAgICAgdXVpZDogdmlldy51dWlkLFxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHVwZGF0ZXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsZWFudXBFbWJlZGRlZENoaWxkcmVuKGNvbnRhaW5lclV1aWQ6IHN0cmluZyk6IFZpZXdTdGF0ZVVwZGF0ZVtdIHtcclxuICAgIGNvbnN0IHVwZGF0ZXM6IFZpZXdTdGF0ZVVwZGF0ZVtdID0gW107XHJcblxyXG4gICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmVtYmVkZGVkVmlld1JlZnMuZmlsdGVyKChyZWYpID0+IHJlZi5jb250YWluZXJVdWlkID09PSBjb250YWluZXJVdWlkKTtcclxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcclxuICAgICAgY2hpbGQuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcclxuICAgICAgdXBkYXRlcy5wdXNoKHsgc3RhdGU6IFZpZXdTdGF0ZS5DTE9TRUQsIHV1aWQ6IGNoaWxkLnV1aWQgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmVtYmVkZGVkVmlld1JlZnMgPSB0aGlzLmVtYmVkZGVkVmlld1JlZnMuZmlsdGVyKFxyXG4gICAgICAocmVmKSA9PiByZWYuY29udGFpbmVyVXVpZCAhPT0gY29udGFpbmVyVXVpZFxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnBlbmRpbmdFbWJlZGRlZFZpZXdzID0gdGhpcy5wZW5kaW5nRW1iZWRkZWRWaWV3cy5maWx0ZXIoXHJcbiAgICAgICh2KSA9PiB2LmNvbnRhaW5lclV1aWQgIT09IGNvbnRhaW5lclV1aWRcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5lbWJlZGRlZENvbnRhaW5lcnMuZGVsZXRlKGNvbnRhaW5lclV1aWQpO1xyXG5cclxuICAgIHJldHVybiB1cGRhdGVzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBzZW5kVmlld0NvbnRleHRVcGRhdGVzKHVwZGF0ZXNUb1NlbmQ6IChWaWV3U3RhdGVVcGRhdGUgfCB1bmRlZmluZWQpW10pIHtcclxuICAgIGNvbnN0IHVwZGF0ZXM6IFZpZXdTdGF0ZVVwZGF0ZVtdID0gW107XHJcbiAgICB1cGRhdGVzVG9TZW5kLmZvckVhY2goKHVwZGF0ZSkgPT4ge1xyXG4gICAgICBpZiAodXBkYXRlICE9PSB1bmRlZmluZWQgJiYgdXBkYXRlICE9PSBudWxsKSB1cGRhdGVzLnB1c2godXBkYXRlKTtcclxuICAgIH0pO1xyXG4gICAgaWYgKHVwZGF0ZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBhd2FpdCB0aGlzLnVwZGF0ZVZpZXdDb250ZXh0KHtcclxuICAgICAgICB1cGRhdGVzLFxyXG4gICAgICAgIHV1aWQ6IHRoaXMudmlld0NvbnRleHQ/LnV1aWQsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBwdWJsaWMgYXN5bmMgcmVzdG9yZVZpZXdzKHV1aWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgdXBkYXRlczogVmlld1N0YXRlVXBkYXRlW10gPSBbXTtcclxuICAgIGlmICghdGhpcy52aWV3Q29udGV4dCkge1xyXG4gICAgICBhd2FpdCB0aGlzLmdldFZpZXdDb250ZXh0KHV1aWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudmlld0NvbnRleHQhLnZpZXdzLmZpbHRlcihcclxuICAgICAgKHZpZXcpID0+IHZpZXcuc3RhdGUgPT09IFZpZXdTdGF0ZS5PUEVORUQgfHwgdmlldy5zdGF0ZSA9PT0gVmlld1N0YXRlLlRPX09QRU5cclxuICAgICkubWFwKCh2aWV3OiBWaWV3RGF0YSkgPT4ge1xyXG4gICAgICBjb25zdCB1cGRhdGUgPSB0aGlzLm9wZW5WaWV3KHZpZXcpO1xyXG4gICAgICBpZiAodXBkYXRlKSB7XHJcbiAgICAgICAgdXBkYXRlcy5wdXNoKHVwZGF0ZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgYXdhaXQgdGhpcy5zZW5kVmlld0NvbnRleHRVcGRhdGVzKHVwZGF0ZXMpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHN5bmNWaWV3KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgdXBkYXRlczogKFZpZXdTdGF0ZVVwZGF0ZSB8IHVuZGVmaW5lZClbXSA9IFtdO1xyXG4gICAgLy8gY29uc29sZS5sb2coJ1tFbWJlZGRlZF0gc3luY1ZpZXcg4oCUIHZpZXdzOicsIHRoaXMudmlld0NvbnRleHQ/LnZpZXdzPy5tYXAodiA9PiAoeyB2aWV3TmFtZTogdi52aWV3TmFtZSwgdHlwZTogdi50eXBlLCBzdGF0ZTogdi5zdGF0ZSwgY29udGFpbmVyVXVpZDogdi5jb250YWluZXJVdWlkLCBjb250YWluZXJJZDogdi5jb250YWluZXJJZCwgdXVpZDogdi51dWlkIH0pKSk7XHJcbiAgICB0aGlzLnZpZXdDb250ZXh0Py52aWV3cy5tYXAoKHZpZXc6IFZpZXdEYXRhKSA9PiB7XHJcbiAgICAgIHN3aXRjaCAodmlldy5zdGF0ZSkge1xyXG4gICAgICAgIGNhc2UgVmlld1N0YXRlLlRPX09QRU46XHJcbiAgICAgICAgICB1cGRhdGVzLnB1c2godGhpcy5vcGVuVmlldyh2aWV3KSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFZpZXdTdGF0ZS5UT19DTE9TRTpcclxuICAgICAgICAgIHVwZGF0ZXMucHVzaCguLi50aGlzLmNsb3NlVmlldyh2aWV3KSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3Qgdmlld0RhdGFUb0Nsb3NlID0gdGhpcy5vcGVuZWRWaWV3RGF0YS5maWx0ZXIoXHJcbiAgICAgICh2aWV3RGF0YTogVmlld0RhdGEpID0+XHJcbiAgICAgICAgIXRoaXMudmlld0NvbnRleHQ/LnZpZXdzXHJcbiAgICAgICAgICAuZmxhdE1hcCgodmlld0RhdGE6IFZpZXdEYXRhKSA9PiB2aWV3RGF0YS51dWlkKVxyXG4gICAgICAgICAgLmluY2x1ZGVzKHZpZXdEYXRhLnV1aWQpXHJcbiAgICApO1xyXG4gICAgaWYgKHZpZXdEYXRhVG9DbG9zZT8ubGVuZ3RoKSB7XHJcbiAgICAgIHZpZXdEYXRhVG9DbG9zZS5tYXAoKHZpZXdEYXRhOiBWaWV3RGF0YSkgPT4ge1xyXG4gICAgICAgIHVwZGF0ZXMucHVzaCguLi50aGlzLmNsb3NlVmlldyh2aWV3RGF0YSkpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnZpZXdDb250ZXh0Py5saW5rcz8ubWFwKChkYXRhOiBMaW5rKSA9PiB7XHJcbiAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICAgIGxldCB0YXJnZXQgPSAnX2JsYW5rJzsgLy8gZGVmYXVsdFxyXG4gICAgICBzd2l0Y2ggKGRhdGEudGFyZ2V0ID8/IExpbmtUYXJnZXRFbnVtLkJMQU5LKSB7XHJcbiAgICAgICAgY2FzZSAnU0VMRic6XHJcbiAgICAgICAgICB0YXJnZXQgPSAnX3NlbGYnO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnQkxBTksnOlxyXG4gICAgICAgICAgdGFyZ2V0ID0gJ19ibGFuayc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdQQVJFTlQnOlxyXG4gICAgICAgICAgdGFyZ2V0ID0gJ19wYXJlbnQnO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnVE9QJzpcclxuICAgICAgICAgIHRhcmdldCA9ICdfdG9wJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCd0YXJnZXQnLCB0YXJnZXQpO1xyXG4gICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIGRhdGEudXJsKTtcclxuICAgICAgaWYgKGRhdGEuZG93bmxvYWQpIHtcclxuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBkYXRhLmZpbGVuYW1lID8/ICcnKTtcclxuICAgICAgfVxyXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICAgIGxpbmsucmVtb3ZlKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnN0YXJ0RG93bmxvYWRzRmlsZXModGhpcy52aWV3Q29udGV4dD8uZG93bmxvYWRzIHx8IFtdKTtcclxuXHJcbiAgICBjb25zdCBjbGlwYm9hcmRUZXh0ID0gdGhpcy52aWV3Q29udGV4dD8uY2xpcGJvYXJkRGF0YVxyXG4gICAgICA/Lm1hcCgoY2Q6IENsaXBib2FyZERhdGEpID0+IGNkLnRleHQgfHwgJycpXHJcbiAgICAgIC5qb2luKCcnKTtcclxuICAgIGlmIChjbGlwYm9hcmRUZXh0KSB7XHJcbiAgICAgIGNvbnN0IGNsaXBib2FyZCA9IG5hdmlnYXRvci5jbGlwYm9hcmQ7XHJcbiAgICAgIC8vIGF2YWlsYWJsZSBvbmx5IGluIHNlY3VyZSBjb250ZXh0cy5cclxuICAgICAgaWYgKGNsaXBib2FyZCkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBjbGlwYm9hcmRcclxuICAgICAgICAgICAgLndyaXRlVGV4dChjbGlwYm9hcmRUZXh0KVxyXG4gICAgICAgICAgICAuY2F0Y2goKGUpID0+IGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBjb3B5IHRleHQgdG8gY2xpcGJvYXJkJywgZSkpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGFjY2Vzc2luZyBjbGlwYm9hcmQnLCBlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGF3YWl0IHRoaXMuc2VuZFZpZXdDb250ZXh0VXBkYXRlcyh1cGRhdGVzKTtcclxuICAgIHRoaXMudmlld0NvbnRleHRIYXNCZWVuU3luY2VkLm5leHQoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHN0YXJ0RG93bmxvYWRzRmlsZXMoZG93bmxvYWRzOiBEb3dubG9hZGVkRmlsZVtdKSB7XHJcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZG93bmxvYWRzKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgbGV0IGJsb2IgPSBhd2FpdCB0aGlzLmRvd25sb2FkUmVzb3VyY2UoZmlsZS51dWlkISwgZmlsZS5pZGVudGlmaWVyISk7XHJcbiAgICAgICAgbGV0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcblxyXG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoJ3RhcmdldCcsICdfYmxhbmsnKTtcclxuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIHVybCk7XHJcbiAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgZmlsZS5maWxlbmFtZSEpO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XHJcbiAgICAgICAgbGluay5jbGljaygpO1xyXG4gICAgICAgIGxpbmsucmVtb3ZlKCk7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBkb3dubG9hZGluZyBmaWxlJywgZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Vmlld0NvbnRleHRVdWlkKHV1aWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnZpZXdDb250ZXh0VXVpZE5hbWUsIHV1aWQpO1xyXG4gICAgdGhpcy5zZXNzaW9uLmFkZEhlYWRlclBhcmFtKHtcclxuICAgICAgaGVhZGVyTmFtZTogdGhpcy52aWV3Q29udGV4dFV1aWRIZWFkZXJOYW1lLFxyXG4gICAgICB2YWx1ZTogdXVpZCxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFZpZXdDb250ZXh0VXVpZCgpOiBzdHJpbmcge1xyXG4gICAgbGV0IHZpZXdDb250ZXh0VXVpZCA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy52aWV3Q29udGV4dFV1aWROYW1lKTtcclxuICAgIGlmICghdmlld0NvbnRleHRVdWlkKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignVmlldyBjb250ZXh0IGlzIG5vdCBpbml0aWFsaXplZCEnKTtcclxuICAgIH1cclxuICAgIHJldHVybiB2aWV3Q29udGV4dFV1aWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFzVmlld0NvbnRleHRVdWlkKCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHZpZXdDb250ZXh0VXVpZCA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy52aWV3Q29udGV4dFV1aWROYW1lKTtcclxuICAgIHJldHVybiB2aWV3Q29udGV4dFV1aWQgIT09IG51bGwgJiYgdmlld0NvbnRleHRVdWlkICE9PSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0VXVpZE9mUGFnZShwYWdlTmFtZTogc3RyaW5nLCB1dWlkOiBzdHJpbmcsIGNvbXBvbmVudE5hbWU/OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5wYWdlTmFtZVByZWZpeCArIHBhZ2VOYW1lLCB1dWlkKTtcclxuICAgIGlmIChjb21wb25lbnROYW1lKSB7XHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5jb21wb25lbnROYW1lUHJlZml4ICsgY29tcG9uZW50TmFtZSwgcGFnZU5hbWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsZWFyVXVpZE9mUGFnZShwYWdlTmFtZTogc3RyaW5nLCBjb21wb25lbnROYW1lPzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMucGFnZU5hbWVQcmVmaXggKyBwYWdlTmFtZSk7XHJcbiAgICBpZiAoY29tcG9uZW50TmFtZSkge1xyXG4gICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuY29tcG9uZW50TmFtZVByZWZpeCArIGNvbXBvbmVudE5hbWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFV1aWRPZlBhZ2UocGFnZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgdXVpZCA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5wYWdlTmFtZVByZWZpeCArIHBhZ2VOYW1lKTtcclxuICAgIGlmICghdXVpZCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSB1dWlkIG9mICR7cGFnZU5hbWV9IGlzIG5vdCBhdmFpbGFibGUuYCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdXVpZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRQYWdlTmFtZU9mQ29tcG9uZW50KGNvbXBvbmVudE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgcGFnZU5hbWUgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuY29tcG9uZW50TmFtZVByZWZpeCArIGNvbXBvbmVudE5hbWUpO1xyXG4gICAgaWYgKCFwYWdlTmFtZSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBwYWdlTmFtZSBvZiAke2NvbXBvbmVudE5hbWV9IGlzIG5vdCBhdmFpbGFibGUuYCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGFnZU5hbWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgbWVzc2FnZShtZXNzYWdlRGF0YTogTWVzc2FnZURhdGEsIG1lc3NhZ2VSZXN1bHQ6IE1lc3NhZ2VSZXN1bHQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmhhbmRsZVBlcmZvcm1BY3Rpb25SZXNwb25zZShcclxuICAgICAgYXdhaXQgdGhpcy52aWV3XHJcbiAgICAgICAgLm1lc3NhZ2UobWVzc2FnZURhdGEudmlld1V1aWQgPz8gJycsIG1lc3NhZ2VEYXRhLnV1aWQsIG1lc3NhZ2VSZXN1bHQpXHJcbiAgICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICApO1xyXG4gICAgLy8gaW4gZnV0dXJlIHVzZSB0aGlzLmFwaVF1ZXVlU2VydmljZS5hZGRUb1F1ZXVlXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0U21hcnRWaWV3Q29udGV4dEFwaUVycm9yQnlDb2RlKGNvZGU6IHN0cmluZyk6IFByb21pc2U8U21hcnRWaWV3Q29udGV4dEFwaUVycm9yPiB7XHJcbiAgICBsZXQgYnV0dG9uTGFiZWw7XHJcbiAgICBsZXQgZGlhbG9nVGl0bGU7XHJcbiAgICBsZXQgbWVzc2FnZTtcclxuICAgIGlmICh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UpIHtcclxuICAgICAgYnV0dG9uTGFiZWwgPSBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2VcclxuICAgICAgICAuZ2V0KFNtYXJ0Vmlld0NvbnRleHRFcnJvckRpYWxvZ0J1dHRvbkxhYmVsKVxyXG4gICAgICAgIC50b1Byb21pc2UoKTtcclxuICAgICAgZGlhbG9nVGl0bGUgPSBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KFNtYXJ0Vmlld0NvbnRleHRFcnJvckRpYWxvZ1RpdGxlKS50b1Byb21pc2UoKTtcclxuICAgICAgbWVzc2FnZSA9IGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoU21hcnRWaWV3Q29udGV4dEVycm9yRGlhbG9nTWVzc2FnZSkudG9Qcm9taXNlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBidXR0b25MYWJlbCA9ICdPayc7XHJcbiAgICAgIGRpYWxvZ1RpdGxlID0gJ0hpYmEnO1xyXG4gICAgICBtZXNzYWdlID0gJ0FuIGVycm9yIGhhcyBvY2N1cmVkLic7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLnNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvcnMpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBjb2RlLFxyXG4gICAgICAgIG1lc3NhZ2UsXHJcbiAgICAgICAgYnV0dG9uTGFiZWwsXHJcbiAgICAgICAgZGlhbG9nVGl0bGUsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBsZXQgYXBpRXJyb3JzV2l0aENvZGUgPSB0aGlzLnNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvcnMudmlld0NvbnRleHRBcGlFcnJvcnMuZmlsdGVyKFxyXG4gICAgICAoYXBpRXJyb3I6IFNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvcikgPT4ge1xyXG4gICAgICAgIHJldHVybiBhcGlFcnJvci5jb2RlID09PSBjb2RlO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgaWYgKCFhcGlFcnJvcnNXaXRoQ29kZSB8fCAoYXBpRXJyb3JzV2l0aENvZGUgJiYgIWFwaUVycm9yc1dpdGhDb2RlLmxlbmd0aCkpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihgU21hcnRWaWV3Q29udGV4dEFwaUVycm9yIHdpdGggY29kZSAke2NvZGV9IGNvdWxkIG5vdCBiZSBmb3VuZC5gKTtcclxuXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgY29kZSxcclxuICAgICAgICBtZXNzYWdlLFxyXG4gICAgICAgIGJ1dHRvbkxhYmVsLFxyXG4gICAgICAgIGRpYWxvZ1RpdGxlLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFwaUVycm9yc1dpdGhDb2RlWzBdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFZpZXdDb25zdHJhaW50KHV1aWQ6IHN0cmluZyk6IFByb21pc2U8Vmlld0NvbnN0cmFpbnQ+IHtcclxuICAgIGxldCB2aWV3Q29uc3RyYWludFJlc3BvbnNlID0gYXdhaXQgdGhpcy52aWV3LmdldFZpZXdDb25zdHJhaW50KHV1aWQpLnRvUHJvbWlzZSgpO1xyXG4gICAgaWYgKCF2aWV3Q29uc3RyYWludFJlc3BvbnNlKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBnZXQgVmlld0NvbnN0cmFpbnQgd2l0aCB0aGUgZ2l2ZW4gdXVpZC4nKTtcclxuICAgIHJldHVybiB2aWV3Q29uc3RyYWludFJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHNob3dQdWJsaXNoZWRWaWV3KGNoYW5uZWw6IHN0cmluZywgdXVpZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmlzT3BlbmluZ1NtYXJ0TGluayA9IHRydWU7XHJcblxyXG4gICAgYXdhaXQgdGhpcy5zZXNzaW9uLmluaXRpYWxpemUoKTtcclxuICAgIC8vIFRPRE8gaW5pdCB2aWV3IGNvbnRleHQgYXV0b21hdGljYWxseVxyXG4gICAgLy8gYXdhaXQgdGhpcy5pbml0aWFsaXplKCk7XHJcbiAgICBhd2FpdCB0aGlzLmluaXRWaWV3Q29udGV4dCgpO1xyXG5cclxuICAgIHRoaXMub3BlblNtYXJ0TGluay5uZXh0KGNoYW5uZWwpO1xyXG4gICAgYXdhaXQgdGhpcy5vcGVuU21hcnRMaW5rLnRvUHJvbWlzZSgpO1xyXG5cclxuICAgIGF3YWl0IHRoaXMudmlldy5zaG93UHVibGlzaGVkVmlldyhjaGFubmVsLCB1dWlkKS50b1Byb21pc2UoKTtcclxuICAgIGF3YWl0IHRoaXMuZ2V0QW5kU3luY1ZpZXdDb250ZXh0KCk7XHJcbiAgICB0aGlzLmlzT3BlbmluZ1NtYXJ0TGluayA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGRvd25sb2FkUmVzb3VyY2UodXVpZDogc3RyaW5nLCBpdGVtOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMudmlldy5kb3dubG9hZEl0ZW0odXVpZCwgaXRlbSkudG9Qcm9taXNlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgcGVyZm9ybUFjdGlvbih1dWlkOiBzdHJpbmcsIHVpQWN0aW9uUmVxdWVzdDogVWlBY3Rpb25SZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fcGVyZm9ybUFjdGlvbih7XHJcbiAgICAgIHV1aWQsXHJcbiAgICAgIHVpQWN0aW9uUmVxdWVzdCxcclxuICAgIH0pO1xyXG4gICAgLy8gY29uc3QgaXNDb21wbGV0ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgLy8gdGhpcy5hcGlRdWV1ZVNlcnZpY2UuYWRkVG9RdWV1ZSh7XHJcbiAgICAvLyAgIGNhbGxiYWNrOiB0aGlzLl9wZXJmb3JtQWN0aW9uLmJpbmQodGhpcyksXHJcbiAgICAvLyAgIGNvbmZpZzoge1xyXG4gICAgLy8gICAgIHV1aWQsXHJcbiAgICAvLyAgICAgdWlBY3Rpb25SZXF1ZXN0LFxyXG4gICAgLy8gICB9LFxyXG4gICAgLy8gICBpc0NvbXBsZXRlZCxcclxuICAgIC8vIH0pO1xyXG4gICAgLy8gcmV0dXJuIGF3YWl0IGlzQ29tcGxldGVkLnRvUHJvbWlzZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHBlcmZvcm1XaWRnZXRBY3Rpb24oXHJcbiAgICB1dWlkOiBzdHJpbmcsXHJcbiAgICB3aWRnZXRJZDogc3RyaW5nLFxyXG4gICAgbm9kZUlkOiBzdHJpbmcsXHJcbiAgICB1aUFjdGlvblJlcXVlc3Q6IFVpQWN0aW9uUmVxdWVzdFxyXG4gICk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX3BlcmZvcm1XaWRnZXRBY3Rpb24oeyB1dWlkLCB3aWRnZXRJZCwgbm9kZUlkLCB1aUFjdGlvblJlcXVlc3QgfSk7XHJcbiAgICAvLyBjb25zdCBpc0NvbXBsZXRlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICAvLyB0aGlzLmFwaVF1ZXVlU2VydmljZS5hZGRUb1F1ZXVlKHtcclxuICAgIC8vICAgY2FsbGJhY2s6IHRoaXMuX3BlcmZvcm1XaWRnZXRBY3Rpb24uYmluZCh0aGlzKSxcclxuICAgIC8vICAgY29uZmlnOiB7XHJcbiAgICAvLyAgICAgdXVpZCxcclxuICAgIC8vICAgICB3aWRnZXRJZCxcclxuICAgIC8vICAgICBub2RlSWQsXHJcbiAgICAvLyAgICAgdWlBY3Rpb25SZXF1ZXN0LFxyXG4gICAgLy8gICB9LFxyXG4gICAgLy8gICBpc0NvbXBsZXRlZCxcclxuICAgIC8vIH0pO1xyXG4gICAgLy8gcmV0dXJuIGF3YWl0IGlzQ29tcGxldGVkLnRvUHJvbWlzZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHBlcmZvcm1XaWRnZXRNYWluQWN0aW9uKFxyXG4gICAgdXVpZDogc3RyaW5nLFxyXG4gICAgd2lkZ2V0SWQ6IHN0cmluZyxcclxuICAgIHVpQWN0aW9uUmVxdWVzdDogVWlBY3Rpb25SZXF1ZXN0XHJcbiAgKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fcGVyZm9ybVdpZGdldE1haW5BY3Rpb24oeyB1dWlkLCB3aWRnZXRJZCwgdWlBY3Rpb25SZXF1ZXN0IH0pO1xyXG4gICAgLy8gY29uc3QgaXNDb21wbGV0ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgLy8gdGhpcy5hcGlRdWV1ZVNlcnZpY2UuYWRkVG9RdWV1ZSh7XHJcbiAgICAvLyAgIGNhbGxiYWNrOiB0aGlzLl9wZXJmb3JtV2lkZ2V0TWFpbkFjdGlvbi5iaW5kKHRoaXMpLFxyXG4gICAgLy8gICBjb25maWc6IHtcclxuICAgIC8vICAgICB1dWlkLFxyXG4gICAgLy8gICAgIHdpZGdldElkLFxyXG4gICAgLy8gICAgIHVpQWN0aW9uUmVxdWVzdCxcclxuICAgIC8vICAgfSxcclxuICAgIC8vICAgaXNDb21wbGV0ZWQsXHJcbiAgICAvLyB9KTtcclxuICAgIC8vIHJldHVybiBhd2FpdCBpc0NvbXBsZXRlZC50b1Byb21pc2UoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBwZXJmb3JtVXBsb2FkQWN0aW9uKFxyXG4gICAgdXVpZDogc3RyaW5nLFxyXG4gICAgdWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3QsXHJcbiAgICBwYXJhbTogJ2lucHV0JyB8ICdpbnB1dFwiJyxcclxuICAgIGNvbnRlbnQ6IGFueVxyXG4gICk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5fcGVyZm9ybVVwbG9hZEFjdGlvbih7XHJcbiAgICAgIHV1aWQsXHJcbiAgICAgIHVpQWN0aW9uUmVxdWVzdCxcclxuICAgICAgcGFyYW0sXHJcbiAgICAgIGNvbnRlbnQsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBwZXJmb3JtVXBsb2FkTXVsdGlwbGVBY3Rpb24oXHJcbiAgICB1dWlkOiBzdHJpbmcsXHJcbiAgICB1aUFjdGlvblJlcXVlc3Q6IFVpQWN0aW9uUmVxdWVzdCxcclxuICAgIHBhcmFtOiAnaW5wdXQnIHwgJ2lucHV0MicsXHJcbiAgICBjb250ZW50OiBhbnlbXVxyXG4gICk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5fcGVyZm9ybVVwbG9hZE11bHRpcGxlQWN0aW9uKHtcclxuICAgICAgdXVpZCxcclxuICAgICAgdWlBY3Rpb25SZXF1ZXN0LFxyXG4gICAgICBwYXJhbSxcclxuICAgICAgY29udGVudCxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGRhdGFDaGFuZ2VkKHV1aWQ6IHN0cmluZywgZGF0YUNoYW5nZTogRGF0YUNoYW5nZSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2RhdGFDaGFuZ2VkKHsgdXVpZCwgZGF0YUNoYW5nZSB9KTtcclxuICAgIC8vIGNvbnN0IGlzQ29tcGxldGVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIC8vIHRoaXMuYXBpUXVldWVTZXJ2aWNlLmFkZFRvUXVldWUoXHJcbiAgICAvLyAgIHtcclxuICAgIC8vICAgICBjYWxsYmFjazogdGhpcy5fZGF0YUNoYW5nZWQuYmluZCh0aGlzKSxcclxuICAgIC8vICAgICBjb25maWc6IHtcclxuICAgIC8vICAgICAgIHV1aWQsXHJcbiAgICAvLyAgICAgICBkYXRhQ2hhbmdlLFxyXG4gICAgLy8gICAgIH0sXHJcbiAgICAvLyAgICAgaXNDb21wbGV0ZWQsXHJcbiAgICAvLyAgIH0sXHJcbiAgICAvLyAgIHRydWVcclxuICAgIC8vICk7XHJcbiAgICAvLyByZXR1cm4gYXdhaXQgaXNDb21wbGV0ZWQudG9Qcm9taXNlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9wZXJmb3JtQWN0aW9uKGNvbmZpZzogYW55KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5oYW5kbGVQZXJmb3JtQWN0aW9uUmVzcG9uc2UoXHJcbiAgICAgIGF3YWl0IHRoaXMudmlldy5wZXJmb3JtQWN0aW9uKGNvbmZpZy51dWlkLCBjb25maWcudWlBY3Rpb25SZXF1ZXN0KS50b1Byb21pc2UoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX3BlcmZvcm1XaWRnZXRBY3Rpb24oY29uZmlnOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmhhbmRsZVBlcmZvcm1BY3Rpb25SZXNwb25zZShcclxuICAgICAgYXdhaXQgdGhpcy52aWV3XHJcbiAgICAgICAgLnBlcmZvcm1XaWRnZXRBY3Rpb24oY29uZmlnLnV1aWQsIGNvbmZpZy53aWRnZXRJZCwgY29uZmlnLm5vZGVJZCwgY29uZmlnLnVpQWN0aW9uUmVxdWVzdClcclxuICAgICAgICAudG9Qcm9taXNlKClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9wZXJmb3JtV2lkZ2V0TWFpbkFjdGlvbihjb25maWc6IGFueSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuaGFuZGxlUGVyZm9ybUFjdGlvblJlc3BvbnNlKFxyXG4gICAgICBhd2FpdCB0aGlzLnZpZXdcclxuICAgICAgICAucGVyZm9ybVdpZGdldE1haW5BY3Rpb24oY29uZmlnLnV1aWQsIGNvbmZpZy53aWRnZXRJZCwgY29uZmlnLnVpQWN0aW9uUmVxdWVzdClcclxuICAgICAgICAudG9Qcm9taXNlKClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9wZXJmb3JtVXBsb2FkQWN0aW9uKGNvbmZpZzogYW55KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5oYW5kbGVQZXJmb3JtQWN0aW9uUmVzcG9uc2UoXHJcbiAgICAgIGF3YWl0IHRoaXMudmlld1xyXG4gICAgICAgIC51cGxvYWRBY3Rpb24oXHJcbiAgICAgICAgICBjb25maWcudXVpZCxcclxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGNvbmZpZy51aUFjdGlvblJlcXVlc3QpLFxyXG4gICAgICAgICAgY29uZmlnLnBhcmFtLFxyXG4gICAgICAgICAgY29uZmlnLmNvbnRlbnRcclxuICAgICAgICApXHJcbiAgICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICApO1xyXG4gIH1cclxuICBwcml2YXRlIGFzeW5jIF9wZXJmb3JtVXBsb2FkTXVsdGlwbGVBY3Rpb24oY29uZmlnOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmhhbmRsZVBlcmZvcm1BY3Rpb25SZXNwb25zZShcclxuICAgICAgYXdhaXQgdGhpcy52aWV3XHJcbiAgICAgICAgLnVwbG9hZE11bHRpcGxlQWN0aW9uKFxyXG4gICAgICAgICAgY29uZmlnLnV1aWQsXHJcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShjb25maWcudWlBY3Rpb25SZXF1ZXN0KSxcclxuICAgICAgICAgIGNvbmZpZy5wYXJhbSxcclxuICAgICAgICAgIGNvbmZpZy5jb250ZW50XHJcbiAgICAgICAgKVxyXG4gICAgICAgIC50b1Byb21pc2UoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX2RhdGFDaGFuZ2VkKGNvbmZpZzogYW55KTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmhhbmRsZVBlcmZvcm1BY3Rpb25SZXNwb25zZShcclxuICAgICAgYXdhaXQgdGhpcy52aWV3LmRhdGFDaGFuZ2VkKGNvbmZpZy51dWlkLCBjb25maWcuZGF0YUNoYW5nZSkudG9Qcm9taXNlKClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlUGVyZm9ybUFjdGlvblJlc3BvbnNlKFxyXG4gICAgdmlld0NvbnRleHRDaGFuZ2U6IFZpZXdDb250ZXh0Q2hhbmdlIHwgdW5kZWZpbmVkXHJcbiAgKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHRoaXMudmlld0NvbnRleHQgPSB2aWV3Q29udGV4dENoYW5nZT8udmlld0NvbnRleHQ7XHJcbiAgICBhd2FpdCB0aGlzLnN5bmNWaWV3KCk7XHJcblxyXG4gICAgaWYgKHZpZXdDb250ZXh0Q2hhbmdlPy5jaGFuZ2VzKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlcyh2aWV3Q29udGV4dENoYW5nZS5jaGFuZ2VzKTtcclxuICAgIH1cclxuICAgIHJldHVybiB2aWV3Q29udGV4dENoYW5nZT8ucmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVDaGFuZ2VzKGNoYW5nZXM6IEFycmF5PENvbXBvbmVudE1vZGVsQ2hhbmdlPik6IHZvaWQge1xyXG4gICAgY2hhbmdlcy5mb3JFYWNoKChjb21wb25lbnRNb2RlbENoYW5nZTogQ29tcG9uZW50TW9kZWxDaGFuZ2UpID0+IHtcclxuICAgICAgbGV0IGRldGVjdENoYW5nZTogU21hcnRTdWJqZWN0PENvbXBvbmVudE1vZGVsQ2hhbmdlPiB8IHVuZGVmaW5lZCA9IHRoaXMuc21hcnRBcGlDbGllbnRzLmdldChcclxuICAgICAgICBjb21wb25lbnRNb2RlbENoYW5nZS51dWlkXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChkZXRlY3RDaGFuZ2UpIHtcclxuICAgICAgICBkZXRlY3RDaGFuZ2UubmV4dChjb21wb25lbnRNb2RlbENoYW5nZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGxvYWQodXVpZDogc3RyaW5nKTogUHJvbWlzZTxDb21wb25lbnRNb2RlbCB8IHVuZGVmaW5lZD4ge1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMudmlldy5nZXRDb21wb25lbnRNb2RlbCh1dWlkKS50b1Byb21pc2UoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBsb2FkMih1dWlkOiBzdHJpbmcpOiBQcm9taXNlPFZpZXdDb250ZXh0Q2hhbmdlIHwgdW5kZWZpbmVkPiB7XHJcbiAgICBsZXQgY2hhbmdlID0gYXdhaXQgdGhpcy52aWV3LmdldENvbXBvbmVudE1vZGVsMih1dWlkKS50b1Byb21pc2UoKTtcclxuICAgIHRoaXMuaGFuZGxlUGVyZm9ybUFjdGlvblJlc3BvbnNlKGNoYW5nZSk7XHJcbiAgICByZXR1cm4gY2hhbmdlO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q3VycmVudFZpZXdDb250ZXh0KCk6IFZpZXdDb250ZXh0RGF0YSB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy52aWV3Q29udGV4dDtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBJU19BU1lOQ19QQVJBTV9OQU1FID0gJ2lzQXN5bmMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBcGlRdWV1ZUNhbGwge1xyXG4gIGNhbGxiYWNrOiAoY29uZmlnOiBhbnkpID0+IFByb21pc2U8YW55PjtcclxuICBjb25maWc6IGFueTtcclxuICBpc0NvbXBsZXRlZDogU3ViamVjdDx2b2lkPjtcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFwaVF1ZXVlU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBfZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBwcml2YXRlIHF1ZXVlOiBBcGlRdWV1ZUNhbGxbXSA9IFtdO1xyXG4gIHByaXZhdGUgaXNQcm9jZXNzaW5nID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBxdWV1ZVN1YmplY3Q6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU21hcnRTdWJqZWN0KHRoaXMuX2Rlc3Ryb3kkKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLnF1ZXVlU3ViamVjdC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnByb2Nlc3NRdWV1ZSgpKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgYWRkVG9RdWV1ZShjYWxsOiBBcGlRdWV1ZUNhbGwsIHByaW9yaXR5OiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGlmIChwcmlvcml0eSkge1xyXG4gICAgICB0aGlzLnF1ZXVlLnVuc2hpZnQoY2FsbCk7IC8vIEFkZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBxdWV1ZSBpZiBpdCBoYXMgaGlnaGVyIHByaW9yaXR5XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnF1ZXVlLnB1c2goY2FsbCk7IC8vIEFkZCBhdCB0aGUgZW5kIG9mIHRoZSBxdWV1ZSBpZiBpdCBoYXMgbG93ZXIgcHJpb3JpdHlcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5pc1Byb2Nlc3NpbmcpIHtcclxuICAgICAgdGhpcy5wcm9jZXNzUXVldWUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIHByb2Nlc3NRdWV1ZSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLnF1ZXVlLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmlzUHJvY2Vzc2luZyA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgYXBpUXVldWVDYWxsID0gdGhpcy5xdWV1ZS5zaGlmdCgpO1xyXG4gICAgaWYgKGFwaVF1ZXVlQ2FsbCkge1xyXG4gICAgICBhd2FpdCBhcGlRdWV1ZUNhbGwuY2FsbGJhY2soYXBpUXVldWVDYWxsLmNvbmZpZyk7XHJcbiAgICAgIGFwaVF1ZXVlQ2FsbC5pc0NvbXBsZXRlZC5jb21wbGV0ZSgpO1xyXG4gICAgICB0aGlzLnF1ZXVlU3ViamVjdC5uZXh0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
928
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtdmlldy1jb250ZXh0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdmlldy1jb250ZXh0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLE1BQU0sRUFDTixVQUFVLEVBQ1YsY0FBYyxFQUlkLFFBQVEsR0FFVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcxQyxPQUFPLEVBT0wsY0FBYyxFQVdkLFNBQVMsRUFFVCxRQUFRLEdBQ1QsTUFBTSxPQUFPLENBQUM7QUFDZixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQVNuRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBb0IsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7OztBQUVqRixNQUFNLENBQUMsTUFBTSxzQ0FBc0MsR0FBRyx3Q0FBd0MsQ0FBQztBQUMvRixNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxrQ0FBa0MsQ0FBQztBQUNuRixNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FBRyxvQ0FBb0MsQ0FBQztBQUN2RixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxlQUFlLENBQUM7QUFFekQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQVUsb0JBQW9CLENBQUMsQ0FBQztBQUt0RixNQUFNLE9BQU8sdUJBQXVCO0lBcUNsQyxJQUFXLGdCQUFnQixDQUFDLGdCQUFt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RSxDQUFDO0lBQzVCLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBa0IsRUFBRSxXQUFvQixLQUFLO1FBQ3RELElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLDhEQUE4RDtRQUMxRixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsdURBQXVEO1FBQ2hGLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZO1FBQ2hCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDMUIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3hDLElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsTUFBTSxZQUFZLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqRCxZQUFZLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7K0dBdENVLGVBQWU7bUhBQWYsZUFBZSxjQUZkLE1BQU07OzRGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0LFxuICBJbmplY3RhYmxlLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5qZWN0b3IsXG4gIG1vZGVsLFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU21hcnRGb3JtSW52YWxpZEZpZWxkcyB9IGZyb20gJy4uL3NtYXJ0LWZvcm0vc21hcnRmb3JtLm1vZGVsJztcbmltcG9ydCB7IFNtYXJ0U2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi9zZXNzaW9uL3NtYXJ0LXNlc3Npb24uc2VydmljZSc7XG5pbXBvcnQge1xuICBDbGlwYm9hcmREYXRhLFxuICBDb21wb25lbnRNb2RlbCxcbiAgQ29tcG9uZW50TW9kZWxDaGFuZ2UsXG4gIERhdGFDaGFuZ2UsXG4gIERvd25sb2FkZWRGaWxlLFxuICBMaW5rLFxuICBMaW5rVGFyZ2V0RW51bSxcbiAgTWVzc2FnZURhdGEsXG4gIE1lc3NhZ2VSZXN1bHQsXG4gIFVpQWN0aW9uRGVzY3JpcHRvcixcbiAgVWlBY3Rpb25SZXF1ZXN0LFxuICBWaWV3Q29uc3RyYWludCxcbiAgVmlld0NvbnRleHRDaGFuZ2UsXG4gIFZpZXdDb250ZXh0RGF0YSxcbiAgVmlld0NvbnRleHRVcGRhdGUsXG4gIFZpZXdEYXRhLFxuICBWaWV3U2VydmljZSxcbiAgVmlld1N0YXRlLFxuICBWaWV3U3RhdGVVcGRhdGUsXG4gIFZpZXdUeXBlLFxufSBmcm9tICcuL2FwaSc7XG5pbXBvcnQgeyBNZXNzYWdlRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9tZXNzYWdlLWRpYWxvZy9tZXNzYWdlLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgU21hcnRFbWJlZGRlZFZpZXdSZWYsXG4gIFNtYXJ0VHJhbnNsYXRlU2VydmljZSxcbiAgU21hcnRWaWV3Q29udGV4dEFwaUVycm9yLFxuICBTbWFydFZpZXdDb250ZXh0QXBpRXJyb3JzLFxuICBTbWFydFZpZXdEaWFsb2dSZWYsXG4gIFNtYXJ0Vmlld0hhbmRsZXJNb2RlbCxcbn0gZnJvbSAnLi9zbWFydC12aWV3LWNvbnRleHQubW9kZWwnO1xuaW1wb3J0IHsgU21hcnRTdWJqZWN0IH0gZnJvbSAnLi4vc21hcnQtc3ViamVjdC9wcm9qZWN0cyc7XG5pbXBvcnQgeyBTbWFydE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc21hcnQtbmF2aWdhdGlvbi9wcm9qZWN0cyc7XG5pbXBvcnQgeyBTbWFydFZpZXdDb250ZXh0RGlhbG9nU2VydmljZSB9IGZyb20gJy4vc21hcnQtdmlldy1jb250ZXh0LWRpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBEeW5hbWljRGlhbG9nUmVmIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcbmltcG9ydCB7IENPTVBPTkVOVF9MSUJSQVJZLCBDb21wb25lbnRMaWJyYXJ5IH0gZnJvbSAnLi91dGlsaXR5L2NvbXBvbmVudExpYnJhcnknO1xuXG5leHBvcnQgY29uc3QgU21hcnRWaWV3Q29udGV4dEVycm9yRGlhbG9nQnV0dG9uTGFiZWwgPSAnU21hcnRWaWV3Q29udGV4dEVycm9yRGlhbG9nQnV0dG9uTGFiZWwnO1xuZXhwb3J0IGNvbnN0IFNtYXJ0Vmlld0NvbnRleHRFcnJvckRpYWxvZ1RpdGxlID0gJ1NtYXJ0Vmlld0NvbnRleHRFcnJvckRpYWxvZ1RpdGxlJztcbmV4cG9ydCBjb25zdCBTbWFydFZpZXdDb250ZXh0RXJyb3JEaWFsb2dNZXNzYWdlID0gJ1NtYXJ0Vmlld0NvbnRleHRFcnJvckRpYWxvZ01lc3NhZ2UnO1xuZXhwb3J0IGNvbnN0IERlZmF1bHRVaUFjdGlvbkNvZGVfQ0xPU0UgPSAnREVGQVVMVF9DTE9TRSc7XG5cbmV4cG9ydCBjb25zdCBESUFMT0dfRElTQUJMRV9DTE9TRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxib29sZWFuPignZGlhbG9nRGlzYWJsZUNsb3NlJyk7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTbWFydFZpZXdDb250ZXh0U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbnRleHRVdWlkTmFtZTogc3RyaW5nID0gJ3ZpZXdDb250ZXh0VXVpZCc7XG4gIHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbnRleHRVdWlkSGVhZGVyTmFtZTogc3RyaW5nID0gJ3ZpZXdDb250ZXh0VXVpZCc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGFnZU5hbWVQcmVmaXg6IHN0cmluZyA9ICdwYWdlLic7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50TmFtZVByZWZpeDogc3RyaW5nID0gJ2NvbXBvbmVudC4nO1xuICBwdWJsaWMgbWVzc2FnZURpYWxvZ25hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSB1cmw/OiBzdHJpbmc7XG4gIHByaXZhdGUgdmlld0NvbnRleHQ/OiBWaWV3Q29udGV4dERhdGE7XG4gIHByaXZhdGUgdmlld0hhbmRsZXJzOiBBcnJheTxTbWFydFZpZXdIYW5kbGVyTW9kZWw+ID0gbmV3IEFycmF5KCk7XG4gIHByaXZhdGUgb3BlbmVkVmlld1V1aWRzOiBBcnJheTxzdHJpbmc+ID0gbmV3IEFycmF5KCk7XG4gIHByaXZhdGUgb3BlbmVkVmlld0RhdGE6IEFycmF5PFZpZXdEYXRhPiA9IG5ldyBBcnJheSgpO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHVibGljIHV1aWRPZlBhZ2VIYXNCZWVuQ2hhbmdlZDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFNtYXJ0U3ViamVjdCh0aGlzLl9kZXN0cm95JCk7XG4gIHB1YmxpYyB2aWV3Q29udGV4dEhhc0JlZW5TeW5jZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU21hcnRTdWJqZWN0KHRoaXMuX2Rlc3Ryb3kkKTtcbiAgcHJpdmF0ZSBpbml0aWFsaXplUnVubmluZzogU3ViamVjdDxWaWV3Q29udGV4dERhdGE+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGluaXRpTmV3Q29udGV4dFJ1bm5pbmc6IFN1YmplY3Q8dm9pZD4gfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIHNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvcnM/OiBTbWFydFZpZXdDb250ZXh0QXBpRXJyb3JzO1xuXG4gIHB1YmxpYyBvcGVuU21hcnRMaW5rOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU21hcnRTdWJqZWN0KHRoaXMuX2Rlc3Ryb3kkKTtcbiAgcHVibGljIGlzT3BlbmluZ1NtYXJ0TGluazogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgZGlhbG9nUmVmczogU21hcnRWaWV3RGlhbG9nUmVmW10gPSBbXTtcblxuICBwcml2YXRlIGVtYmVkZGVkQ29udGFpbmVyczogTWFwPHN0cmluZywgTWFwPHN0cmluZywgVmlld0NvbnRhaW5lclJlZj4+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIGVtYmVkZGVkVmlld1JlZnM6IFNtYXJ0RW1iZWRkZWRWaWV3UmVmW10gPSBbXTtcbiAgcHJpdmF0ZSBwZW5kaW5nRW1iZWRkZWRWaWV3czogVmlld0RhdGFbXSA9IFtdO1xuXG4gIHByaXZhdGUgYWN0aW9uRGVzY3JpcHRvcnM/OiBNYXA8c3RyaW5nLCBVaUFjdGlvbkRlc2NyaXB0b3I+O1xuXG4gIHByaXZhdGUgbW9kdWxlVXJsc0J5TW9kdWxlPzogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICBwdWJsaWMgY29tbW9uRmVlZGJhY2tUZXh0Pzogc3RyaW5nO1xuXG4gIHB1YmxpYyBzbWFydEFwaUNsaWVudHM6IE1hcDxzdHJpbmcsIFNtYXJ0U3ViamVjdDxhbnk+PiA9IG5ldyBNYXAoKTtcblxuICBwdWJsaWMgc2V0IHRyYW5zbGF0ZVNlcnZpY2UodHJhbnNsYXRlU2VydmljZTogU21hcnRUcmFuc2xhdGVTZXJ2aWNlIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fdHJhbnNsYXRlU2VydmljZSA9IHRyYW5zbGF0ZVNlcnZpY2U7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlQ2hhbmdlZC5uZXh0KCk7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlQ2hhbmdlZC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCB0cmFuc2xhdGVTZXJ2aWNlKCk6IFNtYXJ0VHJhbnNsYXRlU2VydmljZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBfdHJhbnNsYXRlU2VydmljZT86IFNtYXJ0VHJhbnNsYXRlU2VydmljZTtcbiAgcHVibGljIHRyYW5zbGF0ZVNlcnZpY2VDaGFuZ2VkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFNtYXJ0U3ViamVjdCh0aGlzLl9kZXN0cm95JCk7XG5cbiAgcHVibGljIGNvbXBvbmVudExpYnJhcnk6IENvbXBvbmVudExpYnJhcnkgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB2aWV3OiBWaWV3U2VydmljZSxcbiAgICBwcml2YXRlIHNlc3Npb246IFNtYXJ0U2Vzc2lvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBuYXZpZ2F0aW9uOiBTbWFydE5hdmlnYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZGlhbG9nOiBTbWFydFZpZXdDb250ZXh0RGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIGFwaVF1ZXVlU2VydmljZTogQXBpUXVldWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW5qZWN0OiBJbmplY3RvcixcbiAgICBASW5qZWN0KENPTVBPTkVOVF9MSUJSQVJZKSBAT3B0aW9uYWwoKSBjb21wTGliPzogQ29tcG9uZW50TGlicmFyeVxuICApIHtcbiAgICB0aGlzLmNvbXBvbmVudExpYnJhcnkgPSBjb21wTGliO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgZm9sbG93KHV1aWQ6IHN0cmluZywgZGV0ZWN0Q2hhbmdlOiBTbWFydFN1YmplY3Q8YW55Pik6IHZvaWQge1xuICAgIHRoaXMuc21hcnRBcGlDbGllbnRzLnNldCh1dWlkLCBkZXRlY3RDaGFuZ2UpO1xuICB9XG4gIHB1YmxpYyB1bmZvbGxvdyh1dWlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNtYXJ0QXBpQ2xpZW50cy5kZWxldGUodXVpZCk7XG4gIH1cblxuICByZWdpc3RlckVtYmVkZGVkU2xvdChjb250YWluZXJVdWlkOiBzdHJpbmcsIGNvbnRhaW5lcklkOiBzdHJpbmcsIHZjUmVmOiBWaWV3Q29udGFpbmVyUmVmKTogdm9pZCB7XG4gICAgbGV0IGlubmVyTWFwID0gdGhpcy5lbWJlZGRlZENvbnRhaW5lcnMuZ2V0KGNvbnRhaW5lclV1aWQpO1xuICAgIGlmICghaW5uZXJNYXApIHtcbiAgICAgIGlubmVyTWFwID0gbmV3IE1hcCgpO1xuICAgICAgdGhpcy5lbWJlZGRlZENvbnRhaW5lcnMuc2V0KGNvbnRhaW5lclV1aWQsIGlubmVyTWFwKTtcbiAgICB9XG4gICAgaW5uZXJNYXAuc2V0KGNvbnRhaW5lcklkLCB2Y1JlZik7XG5cbiAgICAvLyBSZWF0dGFjaCBlbWJlZGRlZCB2aWV3cyB0aGF0IHdlcmUgZGV0YWNoZWQgYmVmb3JlIGxheW91dCByZS1yZW5kZXJcbiAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuZW1iZWRkZWRWaWV3UmVmcy5maWx0ZXIoXG4gICAgICAocmVmKSA9PiByZWYuY29udGFpbmVyVXVpZCA9PT0gY29udGFpbmVyVXVpZCAmJiByZWYuY29udGFpbmVySWQgPT09IGNvbnRhaW5lcklkXG4gICAgKTtcbiAgICBmb3IgKGNvbnN0IHJlZiBvZiBleGlzdGluZykge1xuICAgICAgaWYgKCFyZWYuY29tcG9uZW50UmVmLmhvc3RWaWV3LmRlc3Ryb3llZCkge1xuICAgICAgICB2Y1JlZi5pbnNlcnQocmVmLmNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRHJhaW4gcGVuZGluZyBxdWV1ZVxuICAgIGNvbnN0IG1hdGNoaW5nID0gdGhpcy5wZW5kaW5nRW1iZWRkZWRWaWV3cy5maWx0ZXIoXG4gICAgICAodikgPT4gdi5jb250YWluZXJVdWlkID09PSBjb250YWluZXJVdWlkICYmIHYuY29udGFpbmVySWQgPT09IGNvbnRhaW5lcklkXG4gICAgKTtcbiAgICB0aGlzLnBlbmRpbmdFbWJlZGRlZFZpZXdzID0gdGhpcy5wZW5kaW5nRW1iZWRkZWRWaWV3cy5maWx0ZXIoXG4gICAgICAodikgPT4gISh2LmNvbnRhaW5lclV1aWQgPT09IGNvbnRhaW5lclV1aWQgJiYgdi5jb250YWluZXJJZCA9PT0gY29udGFpbmVySWQpXG4gICAgKTtcblxuICAgIGlmIChtYXRjaGluZy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB1cGRhdGVzOiAoVmlld1N0YXRlVXBkYXRlIHwgdW5kZWZpbmVkKVtdID0gbWF0Y2hpbmcubWFwKCh2KSA9PiB0aGlzLm9wZW5WaWV3KHYpKTtcbiAgICAgIHRoaXMuc2VuZFZpZXdDb250ZXh0VXBkYXRlcyh1cGRhdGVzKTtcbiAgICB9XG4gIH1cblxuICBkZXRhY2hBbGxFbWJlZGRlZFZpZXdzKGNvbnRhaW5lclV1aWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5lbWJlZGRlZFZpZXdSZWZzLmZpbHRlcigocmVmKSA9PiByZWYuY29udGFpbmVyVXVpZCA9PT0gY29udGFpbmVyVXVpZCk7XG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgICAgaWYgKGNoaWxkLmNvbXBvbmVudFJlZi5ob3N0Vmlldy5kZXN0cm95ZWQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCB2Y1JlZiA9IHRoaXMuZ2V0RW1iZWRkZWRTbG90KGNvbnRhaW5lclV1aWQsIGNoaWxkLmNvbnRhaW5lcklkKTtcbiAgICAgIGlmICh2Y1JlZikge1xuICAgICAgICBjb25zdCBpZHggPSB2Y1JlZi5pbmRleE9mKGNoaWxkLmNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgICAgIGlmIChpZHggPj0gMCkge1xuICAgICAgICAgIHZjUmVmLmRldGFjaChpZHgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2xlYW51cE9ycGhhbmVkRW1iZWRkZWRWaWV3cyhjb250YWluZXJVdWlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBvcnBoYW5lZCA9IHRoaXMuZW1iZWRkZWRWaWV3UmVmcy5maWx0ZXIoKHJlZikgPT4ge1xuICAgICAgaWYgKHJlZi5jb250YWluZXJVdWlkICE9PSBjb250YWluZXJVdWlkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChyZWYuY29tcG9uZW50UmVmLmhvc3RWaWV3LmRlc3Ryb3llZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHZjUmVmID0gdGhpcy5nZXRFbWJlZGRlZFNsb3QoY29udGFpbmVyVXVpZCwgcmVmLmNvbnRhaW5lcklkKTtcbiAgICAgIHJldHVybiAhdmNSZWYgfHwgdmNSZWYuaW5kZXhPZihyZWYuY29tcG9uZW50UmVmLmhvc3RWaWV3KSA8IDA7XG4gICAgfSk7XG4gICAgZm9yIChjb25zdCByZWYgb2Ygb3JwaGFuZWQpIHtcbiAgICAgIGlmICghcmVmLmNvbXBvbmVudFJlZi5ob3N0Vmlldy5kZXN0cm95ZWQpIHtcbiAgICAgICAgcmVmLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICB9XG4gICAgICBjb25zdCBpZHggPSB0aGlzLm9wZW5lZFZpZXdVdWlkcy5pbmRleE9mKHJlZi51dWlkKTtcbiAgICAgIGlmIChpZHggPj0gMCkge1xuICAgICAgICB0aGlzLm9wZW5lZFZpZXdVdWlkcy5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgdGhpcy5vcGVuZWRWaWV3RGF0YS5zcGxpY2UoaWR4LCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5lbWJlZGRlZFZpZXdSZWZzID0gdGhpcy5lbWJlZGRlZFZpZXdSZWZzLmZpbHRlcigocmVmKSA9PiAhb3JwaGFuZWQuaW5jbHVkZXMocmVmKSk7XG4gIH1cblxuICBnZXRDb21wb3NpdGVNb2RlbChjb250YWluZXJVdWlkOiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICBjb25zdCByZXN1bHQ6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuZW1iZWRkZWRWaWV3UmVmcy5maWx0ZXIoKHJlZikgPT4gcmVmLmNvbnRhaW5lclV1aWQgPT09IGNvbnRhaW5lclV1aWQpO1xuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgIHJlc3VsdFtjaGlsZC51dWlkXSA9IGNoaWxkLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5nZXRNb2RlbCgpO1xuICAgICAgT2JqZWN0LmFzc2lnbihyZXN1bHQsIHRoaXMuZ2V0Q29tcG9zaXRlTW9kZWwoY2hpbGQudXVpZCkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc3VibWl0RW1iZWRkZWRGb3Jtcyhjb250YWluZXJVdWlkOiBzdHJpbmcsIHZhbGlkYXRlOiBib29sZWFuKTogU21hcnRGb3JtSW52YWxpZEZpZWxkcyB7XG4gICAgY29uc3QgYWxsSW52YWxpZEtleXM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgYWxsSW52YWxpZE5hbWVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5lbWJlZGRlZFZpZXdSZWZzLmZpbHRlcigocmVmKSA9PiByZWYuY29udGFpbmVyVXVpZCA9PT0gY29udGFpbmVyVXVpZCk7XG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgICAgY29uc3QgaW5zdGFuY2UgPSBjaGlsZC5jb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgICBpbnN0YW5jZS5zdWJtaXRGb3JtKHZhbGlkYXRlKTtcbiAgICAgIGlmICh2YWxpZGF0ZSkge1xuICAgICAgICBjb25zdCBpbnZhbGlkOiBTbWFydEZvcm1JbnZhbGlkRmllbGRzID0gaW5zdGFuY2UuZ2V0SW52YWxpZEZpZWxkcygpO1xuICAgICAgICBhbGxJbnZhbGlkS2V5cy5wdXNoKC4uLmludmFsaWQuaW52YWxpZEZpZWxkS2V5cyk7XG4gICAgICAgIGFsbEludmFsaWROYW1lcy5wdXNoKC4uLmludmFsaWQuaW52YWxpZEZpZWxkTmFtZXMpO1xuICAgICAgfVxuICAgICAgY29uc3QgbmVzdGVkID0gdGhpcy5zdWJtaXRFbWJlZGRlZEZvcm1zKGNoaWxkLnV1aWQsIHZhbGlkYXRlKTtcbiAgICAgIGFsbEludmFsaWRLZXlzLnB1c2goLi4ubmVzdGVkLmludmFsaWRGaWVsZEtleXMpO1xuICAgICAgYWxsSW52YWxpZE5hbWVzLnB1c2goLi4ubmVzdGVkLmludmFsaWRGaWVsZE5hbWVzKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgaW52YWxpZEZpZWxkS2V5czogYWxsSW52YWxpZEtleXMsIGludmFsaWRGaWVsZE5hbWVzOiBhbGxJbnZhbGlkTmFtZXMgfTtcbiAgfVxuXG4gIHVucmVnaXN0ZXJFbWJlZGRlZFNsb3QoY29udGFpbmVyVXVpZDogc3RyaW5nLCBjb250YWluZXJJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgaW5uZXJNYXAgPSB0aGlzLmVtYmVkZGVkQ29udGFpbmVycy5nZXQoY29udGFpbmVyVXVpZCk7XG4gICAgaWYgKGlubmVyTWFwKSB7XG4gICAgICBpbm5lck1hcC5kZWxldGUoY29udGFpbmVySWQpO1xuICAgICAgaWYgKGlubmVyTWFwLnNpemUgPT09IDApIHtcbiAgICAgICAgdGhpcy5lbWJlZGRlZENvbnRhaW5lcnMuZGVsZXRlKGNvbnRhaW5lclV1aWQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0RW1iZWRkZWRTbG90KFxuICAgIGNvbnRhaW5lclV1aWQ6IHN0cmluZyxcbiAgICBjb250YWluZXJJZDogc3RyaW5nXG4gICk6IFZpZXdDb250YWluZXJSZWYgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmVtYmVkZGVkQ29udGFpbmVycy5nZXQoY29udGFpbmVyVXVpZCk/LmdldChjb250YWluZXJJZCk7XG4gIH1cblxuICBwdWJsaWMgc2V0QWN0aW9uRGVzY3JpcHRvcnMoYWN0aW9uRGVzY3JpcHRvcnM6IE1hcDxzdHJpbmcsIFVpQWN0aW9uRGVzY3JpcHRvcj4pOiB2b2lkIHtcbiAgICB0aGlzLmFjdGlvbkRlc2NyaXB0b3JzID0gYWN0aW9uRGVzY3JpcHRvcnM7XG4gIH1cblxuICBwdWJsaWMgZ2V0QWN0aW9uRGVzY3JpcHRvcnMoKTogTWFwPHN0cmluZywgVWlBY3Rpb25EZXNjcmlwdG9yPiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLmFjdGlvbkRlc2NyaXB0b3JzKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdObyBhY3Rpb24gZGVzY3JpcHRvcnMgaGFzIGJlZW4gc2V0IHRvIFZpZXdDb250ZXh0LicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hY3Rpb25EZXNjcmlwdG9ycztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWaWV3SGFuZGxlcnModmlld0hhbmRsZXJzOiBBcnJheTxTbWFydFZpZXdIYW5kbGVyTW9kZWw+KTogdm9pZCB7XG4gICAgdGhpcy52aWV3SGFuZGxlcnMgPSB2aWV3SGFuZGxlcnM7XG4gIH1cblxuICBwdWJsaWMgc2V0Vmlld0FwaUVycm9ycyh2aWV3QXBpRXJyb3JzOiBTbWFydFZpZXdDb250ZXh0QXBpRXJyb3JzKTogdm9pZCB7XG4gICAgdGhpcy5zbWFydFZpZXdDb250ZXh0QXBpRXJyb3JzID0gdmlld0FwaUVycm9ycztcbiAgfVxuXG4gIHB1YmxpYyBzZXRNZXNzYWdlRGlhbG9nTmFtZShtZXNzYWdlRGlhbG9nTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5tZXNzYWdlRGlhbG9nbmFtZSA9IG1lc3NhZ2VEaWFsb2dOYW1lO1xuICAgIHRoaXMudmlld0hhbmRsZXJzLnB1c2goe1xuICAgICAgbmFtZTogbWVzc2FnZURpYWxvZ05hbWUsXG4gICAgICBjb21wb25lbnQ6IE1lc3NhZ2VEaWFsb2dDb21wb25lbnQsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldFVwVXJsRm9yVmlld1NlcnZpY2UoKTogdm9pZCB7XG4gICAgdGhpcy52aWV3LmNvbmZpZ3VyYXRpb24uYmFzZVBhdGggPSB0aGlzLnVybDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNb2R1bGVVUkwobW9kdWxlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5tb2R1bGVVcmxzQnlNb2R1bGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTW9kdWxlc01hcCBkb2VzIG5vdCBleGlzdC4nKTtcbiAgICB9XG4gICAgbGV0IG1vZHVsZVVybCA9IHRoaXMubW9kdWxlVXJsc0J5TW9kdWxlPy5nZXQobW9kdWxlKTtcblxuICAgIGlmICghbW9kdWxlVXJsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01vZHVsZVVybCBkb2VzIG5vdCBleGlzdCB3aXRoIHRoZSBnaXZlbiBtb2R1bGUuJyk7XG4gICAgfVxuICAgIHJldHVybiBtb2R1bGVVcmw7XG4gIH1cblxuICBwdWJsaWMgc2V0TW9kdWxlVVJMKG1vZHVsZXM6IE1hcDxzdHJpbmcsIHN0cmluZz4pOiB2b2lkIHtcbiAgICB0aGlzLm1vZHVsZVVybHNCeU1vZHVsZSA9IG1vZHVsZXM7XG4gIH1cblxuICBwdWJsaWMgc2V0VXJsKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy51cmwgPSB1cmwgKyAnL3ZpZXcnO1xuICAgIHRoaXMuc2V0VXBVcmxGb3JWaWV3U2VydmljZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEFuZFN5bmNWaWV3Q29udGV4dCh1dWlkPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF1dWlkKSB7XG4gICAgICB1dWlkID0gdGhpcy5nZXRWaWV3Q29udGV4dFV1aWQoKTtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5nZXRWaWV3Q29udGV4dCh1dWlkKS50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMuc3luY1ZpZXcoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRWaWV3Q29udGV4dCh1dWlkOiBzdHJpbmcpOiBQcm9taXNlPFZpZXdDb250ZXh0RGF0YT4ge1xuICAgIHRoaXMudmlld0NvbnRleHQgPSBhd2FpdCB0aGlzLnZpZXcuZ2V0Vmlld0NvbnRleHQodXVpZCkudG9Qcm9taXNlKCk7XG4gICAgaWYgKCF0aGlzLnZpZXdDb250ZXh0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZpZXdDb250ZXh0IGRvZXMgbm90IGV4aXN0IHdpdGggdGhlIGdpdmVuIHV1aWQuJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnZpZXdDb250ZXh0O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFZpZXdDb250ZXh0RGF0YUJ5UGFnZU5hbWUocGFnZU5hbWU6IHN0cmluZyk6IFByb21pc2U8Vmlld0RhdGE+IHtcbiAgICBpZiAoIXRoaXMudmlld0NvbnRleHQpIHtcbiAgICAgIGF3YWl0IHRoaXMuZ2V0Vmlld0NvbnRleHQodGhpcy5nZXRWaWV3Q29udGV4dFV1aWQoKSk7XG4gICAgfVxuICAgIGxldCBwYWdlVXVpZCA9IHRoaXMuZ2V0VXVpZE9mUGFnZShwYWdlTmFtZSk7XG5cbiAgICBsZXQgdmlld0NvbnRleHRCeVBhZ2VOYW1lID0gdGhpcy52aWV3Q29udGV4dD8udmlld3MuZmluZCgodmlldykgPT4gdmlldy51dWlkID09PSBwYWdlVXVpZCk7XG4gICAgaWYgKCF2aWV3Q29udGV4dEJ5UGFnZU5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIFZpZXdEYXRhIG9mICR7cGFnZU5hbWV9IGlzIG5vdCBmb3VuZCFgKTtcbiAgICB9XG4gICAgcmV0dXJuIHZpZXdDb250ZXh0QnlQYWdlTmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVWaWV3Q29udGV4dChcbiAgICB2aWV3Q29udGV4dFVwZGF0ZTogVmlld0NvbnRleHRVcGRhdGVcbiAgKTogUHJvbWlzZTxWaWV3Q29udGV4dERhdGEgfCB1bmRlZmluZWQ+IHtcbiAgICB2aWV3Q29udGV4dFVwZGF0ZS5kZXZpY2VJbmZvID8/PSB7XG4gICAgICBkZXZpY2VJZDogJ2lkJyxcbiAgICAgIHVzZXJBZ2VudDogbmF2aWdhdG9yLnVzZXJBZ2VudCxcbiAgICAgIHBhcmFtZXRlcnM6IG5ldyBNYXAoKSxcbiAgICB9O1xuICAgIHZpZXdDb250ZXh0VXBkYXRlLmRldmljZUluZm8uY29tcG9uZW50TGlicmFyeSA9IHRoaXMuY29tcG9uZW50TGlicmFyeTtcblxuICAgIHRoaXMudmlld0NvbnRleHQgPSBhd2FpdCB0aGlzLnZpZXcudXBkYXRlVmlld0NvbnRleHQodmlld0NvbnRleHRVcGRhdGUpLnRvUHJvbWlzZSgpO1xuXG4gICAgcmV0dXJuIHRoaXMudmlld0NvbnRleHQ7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyU2Vzc2lvblN0b3JhZ2UoKTogdm9pZCB7XG4gICAgc2Vzc2lvblN0b3JhZ2UuY2xlYXIoKTtcbiAgICB0aGlzLm9wZW5lZFZpZXdEYXRhID0gW107XG4gICAgdGhpcy5vcGVuZWRWaWV3VXVpZHMgPSBbXTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzdGFydFZpZXdDb250ZXh0KCk6IFByb21pc2U8Vmlld0NvbnRleHREYXRhPiB7XG4gICAgdGhpcy5jbGVhclNlc3Npb25TdG9yYWdlKCk7XG4gICAgdGhpcy5zZXNzaW9uLmFkZEhlYWRlclBhcmFtKHtcbiAgICAgIGhlYWRlck5hbWU6IHRoaXMudmlld0NvbnRleHRVdWlkSGVhZGVyTmFtZSxcbiAgICAgIHZhbHVlOiAnJyxcbiAgICB9KTtcblxuICAgIGxldCBuZXdWaWV3Q29udGV4dDogVmlld0NvbnRleHREYXRhIHwgdW5kZWZpbmVkID0gYXdhaXQgdGhpcy52aWV3XG4gICAgICAuY3JlYXRlVmlld0NvbnRleHQoKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICAgIGlmICghbmV3Vmlld0NvbnRleHQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gVmlld0NvbnRleHQgd2FzIGNyZWF0ZWQnKTtcbiAgICB9XG4gICAgdGhpcy52aWV3Q29udGV4dCA9IG5ld1ZpZXdDb250ZXh0O1xuICAgIHRoaXMuc2V0Vmlld0NvbnRleHRVdWlkKG5ld1ZpZXdDb250ZXh0LnV1aWQhKTtcblxuICAgIHJldHVybiB0aGlzLnZpZXdDb250ZXh0O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGluaXRpYWxpemUodXVpZD86IHN0cmluZyk6IFByb21pc2U8Vmlld0NvbnRleHREYXRhIHwgdW5kZWZpbmVkPiB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZVJ1bm5pbmcpIHtcbiAgICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVSdW5uaW5nLnRvUHJvbWlzZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVSdW5uaW5nID0gbmV3IFNtYXJ0U3ViamVjdCh0aGlzLl9kZXN0cm95JCk7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAodGhpcy52aWV3SGFuZGxlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgXCJUaGVyZSBhcmVuJ3QgYW55IHZpZXdIYW5kbGVycyBpbiBTbWFydFZpZXdDb250ZXh0U2VydmljZSEgUHJvdmlkZSBzb21lIHRvIHVzZSBpdHMgZnVuY3Rpb25zLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMubWVzc2FnZURpYWxvZ25hbWUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBtZXNzYWdlRGlhbG9nTmFtZSBwcm92aWRlZCBieSB0aGUgYmFja2VuZCBoYXMgbm90IGJlZW4gc2V0LicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1dWlkKSB7XG4gICAgICAgICAgdGhpcy5zZXRWaWV3Q29udGV4dFV1aWQodXVpZCk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZ2V0Vmlld0NvbnRleHQodXVpZCk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnN0YXJ0Vmlld0NvbnRleHQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zdGFydFZpZXdDb250ZXh0KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy52aWV3Q29udGV4dCE7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0aGlzLmluaXRpYWxpemVSdW5uaW5nLm5leHQodGhpcy52aWV3Q29udGV4dCEpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVSdW5uaW5nLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZVJ1bm5pbmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGluaXRWaWV3Q29udGV4dCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQgdXVpZDtcbiAgICB0cnkge1xuICAgICAgdXVpZCA9IHRoaXMuZ2V0Vmlld0NvbnRleHRVdWlkKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGF3YWl0IHRoaXMuaW5pdGlhbGl6ZSgpO1xuICAgICAgdXVpZCA9IHRoaXMuZ2V0Vmlld0NvbnRleHRVdWlkKCk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuaW5pdGlhbGl6ZSh1dWlkKTtcbiAgICBhd2FpdCB0aGlzLnJlc3RvcmVWaWV3cyh1dWlkKTtcbiAgICBhd2FpdCB0aGlzLmdldEFuZFN5bmNWaWV3Q29udGV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEh5ZHJhdGVzIHRoZSB2aWV3LWNvbnRleHQgc3RhdGUgZnJvbSBhbiBhbHJlYWR5LWV4aXN0aW5nIFVVSUQgcHJvdmlkZWRcbiAgICogZXh0ZXJuYWxseSAoZS5nLiBieSBhIG5hdGl2ZSBtb2JpbGUgc2hlbGwgdmlhIFVSTCBmcmFnbWVudCkuIFVubGlrZVxuICAgKiBgaW5pdGlhbGl6ZSh1dWlkKWAsIHRoaXMgbWV0aG9kIGRvZXMgTk9UIGZhbGwgYmFjayB0byBjcmVhdGluZyBhIGZyZXNoXG4gICAqIHZpZXdDb250ZXh0IGlmIHRoZSBiYWNrZW5kIHJlamVjdHMgdGhlIFVVSUQg4oCUIHRoZSBjYWxsZXIgaXMgZXhwZWN0ZWQgdG9cbiAgICogc3VyZmFjZSB0aGUgZmFpbHVyZSAodHlwaWNhbGx5IHZpYSB0aGUgYm9vdHN0cmFwJ3MgYG9uU3RhcnRFcnJvcmAgaG9vaykuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaW5pdEZyb21FeGlzdGluZ1ZpZXdDb250ZXh0KHV1aWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuc2V0Vmlld0NvbnRleHRVdWlkKHV1aWQpO1xuICAgIGF3YWl0IHRoaXMuZ2V0Vmlld0NvbnRleHQodXVpZCk7XG4gICAgYXdhaXQgdGhpcy5yZXN0b3JlVmlld3ModXVpZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaW5pdE5ld1ZpZXdDb250ZXh0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmluaXRpTmV3Q29udGV4dFJ1bm5pbmcpIHtcbiAgICAgIHJldHVybiB0aGlzLmluaXRpTmV3Q29udGV4dFJ1bm5pbmcudG9Qcm9taXNlKCk7XG4gICAgfVxuICAgIHRoaXMuaW5pdGlOZXdDb250ZXh0UnVubmluZyA9IG5ldyBTbWFydFN1YmplY3QodGhpcy5fZGVzdHJveSQpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnN0YXJ0Vmlld0NvbnRleHQoKTtcbiAgICAgIGxldCB1dWlkID0gdGhpcy5nZXRWaWV3Q29udGV4dFV1aWQoKTtcbiAgICAgIGF3YWl0IHRoaXMuaW5pdGlhbGl6ZSh1dWlkKTtcbiAgICAgIGF3YWl0IHRoaXMucmVzdG9yZVZpZXdzKHV1aWQpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmluaXRpTmV3Q29udGV4dFJ1bm5pbmcubmV4dCgpO1xuICAgICAgdGhpcy5pbml0aU5ld0NvbnRleHRSdW5uaW5nLmNvbXBsZXRlKCk7XG4gICAgICB0aGlzLmluaXRpTmV3Q29udGV4dFJ1bm5pbmcgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9wZW5WaWV3KHZpZXc6IFZpZXdEYXRhKTogVmlld1N0YXRlVXBkYXRlIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgYWxyZWFkeU9wZW5lZCA9IHRoaXMub3BlbmVkVmlld1V1aWRzLnNvbWUoKHV1aWQpID0+IHV1aWQgPT09IHZpZXcudXVpZCk7XG4gICAgaWYgKGFscmVhZHlPcGVuZWQpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBsZXQgdmlld0hhbmRsZXI6IFNtYXJ0Vmlld0hhbmRsZXJNb2RlbCB8IHVuZGVmaW5lZCA9IHRoaXMudmlld0hhbmRsZXJzLmZpbmQoXG4gICAgICAoaGFuZGxlcikgPT4gaGFuZGxlci5uYW1lID09PSB2aWV3LnZpZXdOYW1lXG4gICAgKTtcbiAgICAvLyBjb25zb2xlLmxvZyh2aWV3SGFuZGxlcik7XG5cbiAgICBpZiAoIXZpZXdIYW5kbGVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFNtYXJ0Vmlld0hhbmRsZXJNb2RlbCB3YXMgbm90IGZvdW5kIGJ5IHZpZXcgbmFtZTogJHt2aWV3LnZpZXdOYW1lfWApO1xuICAgIH1cbiAgICBpZiAodmlldy50eXBlID09PSBWaWV3VHlwZS5ESUFMT0cpIHtcbiAgICAgIGlmICghdmlld0hhbmRsZXIuY29tcG9uZW50KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQ29tcG9uZW50IGlzIHVuZGVmaW5lZCBpbiBTbWFydFZpZXdIYW5kbGVyTW9kZWwgd2l0aCBuYW1lOiAke3ZpZXcudmlld05hbWV9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgbGV0IHJlZklzQWxyYWR5QWRkZWQgPSB0aGlzLmRpYWxvZ1JlZnMuc29tZShcbiAgICAgICAgKHJlZjogU21hcnRWaWV3RGlhbG9nUmVmKSA9PiByZWYudXVpZCA9PT0gdmlldy51dWlkXG4gICAgICApO1xuICAgICAgaWYgKCFyZWZJc0FscmFkeUFkZGVkKSB7XG4gICAgICAgIGxldCBkaWFsb2dSZWY7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhpcy5vcGVuZWRWaWV3VXVpZHMucHVzaCh2aWV3LnV1aWQpO1xuICAgICAgICAgIHRoaXMub3BlbmVkVmlld0RhdGEucHVzaCh2aWV3KTtcbiAgICAgICAgICB0aGlzLnNldFV1aWRPZlBhZ2Uodmlldy52aWV3TmFtZSwgdmlldy51dWlkLCB2aWV3SGFuZGxlci5jb21wb25lbnROYW1lKTtcbiAgICAgICAgICBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuQ29tcG9uZW50QXNEaWFsb2codmlld0hhbmRsZXIuY29tcG9uZW50LCB2aWV3SGFuZGxlci5uYW1lKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMub3BlbmVkVmlld1V1aWRzLmluZGV4T2Yodmlldy51dWlkKTtcbiAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgdGhpcy5vcGVuZWRWaWV3VXVpZHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIHRoaXMub3BlbmVkVmlld0RhdGEuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJVdWlkT2ZQYWdlKHZpZXcudmlld05hbWUsIHZpZXdIYW5kbGVyLmNvbXBvbmVudE5hbWUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuc2V0VXVpZE9mUGFnZSh2aWV3LnZpZXdOYW1lLCB2aWV3LnV1aWQsIHZpZXdIYW5kbGVyLmNvbXBvbmVudE5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBkaWFsb2dEaXNhYmxlQ2xvc2UgPSB0cnVlO1xuICAgICAgICBsZXQgaXNNZXNzYWdlRGlhbG9nID0gdmlldy52aWV3TmFtZSA9PT0gdGhpcy5tZXNzYWdlRGlhbG9nbmFtZTtcbiAgICAgICAgaWYgKCFpc01lc3NhZ2VEaWFsb2cpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgZGlhbG9nRGlzYWJsZUNsb3NlID0gdGhpcy5pbmplY3QuZ2V0KERJQUxPR19ESVNBQkxFX0NMT1NFKTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGR1cmluZyByZWFkaW5nIERJQUxPR19ESVNBQkxFX0NMT1NFJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChkaWFsb2dSZWYgaW5zdGFuY2VvZiBNYXREaWFsb2dSZWYpIHtcbiAgICAgICAgICBkaWFsb2dSZWYuZGlzYWJsZUNsb3NlID0gZGlhbG9nRGlzYWJsZUNsb3NlO1xuICAgICAgICAgIC8vIGlmIChpc01lc3NhZ2VEaWFsb2cpIHtcbiAgICAgICAgICAvLyAgIGlmICh2aWV3Lm1lc3NhZ2U/Lm9wdGlvbnMgJiYgdmlldy5tZXNzYWdlLm9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgLy8gICB9XG4gICAgICAgICAgLy8gfVxuICAgICAgICAgIGlmICghZGlhbG9nRGlzYWJsZUNsb3NlKSB7XG4gICAgICAgICAgICBkaWFsb2dSZWZcbiAgICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wZXJmb3JtQWN0aW9uKHZpZXcudXVpZCwgeyBjb2RlOiBEZWZhdWx0VWlBY3Rpb25Db2RlX0NMT1NFLCBwYXJhbXM6IHt9IH0pO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZGlhbG9nUmVmIGluc3RhbmNlb2YgRHluYW1pY0RpYWxvZ1JlZikge1xuICAgICAgICAgIGlmICghZGlhbG9nRGlzYWJsZUNsb3NlKSB7XG4gICAgICAgICAgICBkaWFsb2dSZWYub25EZXN0cm95LnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5wZXJmb3JtQWN0aW9uKHZpZXcudXVpZCwgeyBjb2RlOiBEZWZhdWx0VWlBY3Rpb25Db2RlX0NMT1NFLCBwYXJhbXM6IHt9IH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kaWFsb2dSZWZzLnB1c2goe1xuICAgICAgICAgIHV1aWQ6IHZpZXcudXVpZCxcbiAgICAgICAgICBkaWFsb2dSZWYsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodmlldy50eXBlID09PSBWaWV3VHlwZS5OT1JNQUwpIHtcbiAgICAgIGlmICh2aWV3SGFuZGxlci5yb3V0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUm91dGUgaXMgdW5kZWZpbmVkIGluIFNtYXJ0Vmlld0hhbmRsZXJNb2RlbCB3aXRoIG5hbWU6ICR7dmlldy52aWV3TmFtZX1gKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubmF2aWdhdGlvbi5uYXZpZ2F0ZVRvKHZpZXdIYW5kbGVyLnJvdXRlLnNwbGl0KCcvJykpO1xuICAgIH0gZWxzZSBpZiAodmlldy50eXBlID09PSBWaWV3VHlwZS5FTUJFRERFRCkge1xuICAgICAgLy8gY29uc29sZS5sb2coJ1tFbWJlZGRlZF0gb3BlblZpZXcgRU1CRURERUQnLCB7IHZpZXdOYW1lOiB2aWV3LnZpZXdOYW1lLCB1dWlkOiB2aWV3LnV1aWQsIGNvbnRhaW5lclV1aWQ6IHZpZXcuY29udGFpbmVyVXVpZCwgY29udGFpbmVySWQ6IHZpZXcuY29udGFpbmVySWQgfSk7XG4gICAgICBpZiAoIXZpZXdIYW5kbGVyLmNvbXBvbmVudCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYENvbXBvbmVudCBpcyB1bmRlZmluZWQgaW4gU21hcnRWaWV3SGFuZGxlck1vZGVsIHdpdGggbmFtZTogJHt2aWV3LnZpZXdOYW1lfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHZjUmVmID0gdGhpcy5nZXRFbWJlZGRlZFNsb3Qodmlldy5jb250YWluZXJVdWlkISwgdmlldy5jb250YWluZXJJZCEpO1xuICAgICAgLy8gY29uc29sZS5sb2coJ1tFbWJlZGRlZF0gc2xvdCBsb29rdXAnLCB7IGZvdW5kOiAhIXZjUmVmLCBjb250YWluZXJVdWlkOiB2aWV3LmNvbnRhaW5lclV1aWQsIGNvbnRhaW5lcklkOiB2aWV3LmNvbnRhaW5lcklkLCByZWdpc3RlcmVkQ29udGFpbmVyczogQXJyYXkuZnJvbSh0aGlzLmVtYmVkZGVkQ29udGFpbmVycy5rZXlzKCkpIH0pO1xuICAgICAgaWYgKCF2Y1JlZikge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnW0VtYmVkZGVkXSBzbG90IG5vdCBmb3VuZCDigJQgZGVmZXJyaW5nIHRvIHBlbmRpbmdFbWJlZGRlZFZpZXdzJyk7XG4gICAgICAgIHRoaXMucGVuZGluZ0VtYmVkZGVkVmlld3MucHVzaCh2aWV3KTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHZjUmVmLmNyZWF0ZUNvbXBvbmVudCh2aWV3SGFuZGxlci5jb21wb25lbnQpO1xuICAgICAgLy8gY29uc29sZS5sb2coJ1tFbWJlZGRlZF0gY29tcG9uZW50IGNyZWF0ZWQsIHNldHRpbmcgdXVpZDonLCB2aWV3LnV1aWQpO1xuICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnV1aWQgPSB2aWV3LnV1aWQ7XG4gICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UucnVuKCk7XG4gICAgICB0aGlzLmVtYmVkZGVkVmlld1JlZnMucHVzaCh7XG4gICAgICAgIHV1aWQ6IHZpZXcudXVpZCxcbiAgICAgICAgY29udGFpbmVyVXVpZDogdmlldy5jb250YWluZXJVdWlkISxcbiAgICAgICAgY29udGFpbmVySWQ6IHZpZXcuY29udGFpbmVySWQhLFxuICAgICAgICBjb21wb25lbnRSZWYsXG4gICAgICB9KTtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdbRW1iZWRkZWRdIG9wZW5WaWV3IEVNQkVEREVEIGNvbXBsZXRlLCBlbWJlZGRlZFZpZXdSZWZzIGNvdW50OicsIHRoaXMuZW1iZWRkZWRWaWV3UmVmcy5sZW5ndGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSB0eXBlIG9mIHRoZSB2aWV3IGFuZCBpdHMgdmlld0hhbmRsZXIgaXMgbm90IHRoZSBzYW1lIScpO1xuICAgIH1cblxuICAgIHZpZXcuc3RhdGUgPSBWaWV3U3RhdGUuT1BFTkVEO1xuXG4gICAgdGhpcy5vcGVuZWRWaWV3VXVpZHMucHVzaCh2aWV3LnV1aWQpO1xuICAgIHRoaXMub3BlbmVkVmlld0RhdGEucHVzaCh2aWV3KTtcblxuICAgIGlmICh2aWV3LnR5cGUgIT09IFZpZXdUeXBlLkVNQkVEREVEKSB7XG4gICAgICB0aGlzLnNldFV1aWRPZlBhZ2Uodmlldy52aWV3TmFtZSwgdmlldy51dWlkLCB2aWV3SGFuZGxlci5jb21wb25lbnROYW1lKTtcbiAgICAgIHRoaXMudXVpZE9mUGFnZUhhc0JlZW5DaGFuZ2VkLm5leHQodmlldy52aWV3TmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXRlOiBWaWV3U3RhdGUuT1BFTkVELFxuICAgICAgdXVpZDogdmlldy51dWlkLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgY2xvc2VWaWV3KHZpZXc6IFZpZXdEYXRhKTogVmlld1N0YXRlVXBkYXRlW10ge1xuICAgIGxldCB2aWV3SGFuZGxlcjogU21hcnRWaWV3SGFuZGxlck1vZGVsIHwgdW5kZWZpbmVkID0gdGhpcy52aWV3SGFuZGxlcnMuZmluZChcbiAgICAgIChoYW5kbGVyKSA9PiBoYW5kbGVyLm5hbWUgPT09IHZpZXcudmlld05hbWVcbiAgICApO1xuXG4gICAgaWYgKCF2aWV3SGFuZGxlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTbWFydFZpZXdIYW5kbGVyTW9kZWwgd2FzIG5vdCBmb3VuZCBieSB2aWV3IG5hbWU6ICR7dmlldy52aWV3TmFtZX1gKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVzOiBWaWV3U3RhdGVVcGRhdGVbXSA9IFtdO1xuXG4gICAgaWYgKHZpZXcudHlwZSA9PT0gVmlld1R5cGUuRElBTE9HKSB7XG4gICAgICBsZXQgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2dSZWZzLmZpbmQoXG4gICAgICAgIChkaWFsb2dSZWY6IFNtYXJ0Vmlld0RpYWxvZ1JlZikgPT4gZGlhbG9nUmVmLnV1aWQgPT09IHZpZXcudXVpZFxuICAgICAgKTtcbiAgICAgIGlmIChkaWFsb2dSZWYpIHtcbiAgICAgICAgZGlhbG9nUmVmLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmRpYWxvZ1JlZnMuaW5kZXhPZihkaWFsb2dSZWYpO1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdEaWFsb2dSZWYgaXMgbm90IGZvdW5kIGJ5IHV1aWQuJyk7XG4gICAgICB9XG4gICAgICB1cGRhdGVzLnB1c2goLi4udGhpcy5jbGVhbnVwRW1iZWRkZWRDaGlsZHJlbih2aWV3LnV1aWQpKTtcbiAgICB9IGVsc2UgaWYgKHZpZXcudHlwZSA9PT0gVmlld1R5cGUuTk9STUFMKSB7XG4gICAgICAvLyBUT0RPOiBjbG9zZSBub3JtYWwgcGFnZT8/P1xuICAgICAgLy8gdGhpcy5uYXZpZ2F0aW9uLm5hdmlnYXRlVG8odmlld0hhbmRsZXIucm91dGUuc3BsaXQoXCIvXCIpKTtcbiAgICAgIHVwZGF0ZXMucHVzaCguLi50aGlzLmNsZWFudXBFbWJlZGRlZENoaWxkcmVuKHZpZXcudXVpZCkpO1xuICAgIH0gZWxzZSBpZiAodmlldy50eXBlID09PSBWaWV3VHlwZS5FTUJFRERFRCkge1xuICAgICAgY29uc3QgcmVmSW5kZXggPSB0aGlzLmVtYmVkZGVkVmlld1JlZnMuZmluZEluZGV4KChyZWYpID0+IHJlZi51dWlkID09PSB2aWV3LnV1aWQpO1xuICAgICAgaWYgKHJlZkluZGV4ID49IDApIHtcbiAgICAgICAgdGhpcy5lbWJlZGRlZFZpZXdSZWZzW3JlZkluZGV4XS5jb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgICAgICB0aGlzLmVtYmVkZGVkVmlld1JlZnMuc3BsaWNlKHJlZkluZGV4LCAxKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGVuZGluZ0VtYmVkZGVkVmlld3MgPSB0aGlzLnBlbmRpbmdFbWJlZGRlZFZpZXdzLmZpbHRlcigodikgPT4gdi51dWlkICE9PSB2aWV3LnV1aWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSB0eXBlIG9mIHRoZSB2aWV3IGFuZCBpdHMgdmlld0hhbmRsZXIgaXMgbm90IHRoZSBzYW1lIScpO1xuICAgIH1cblxuICAgIHZpZXcuc3RhdGUgPSBWaWV3U3RhdGUuQ0xPU0VEO1xuXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLm9wZW5lZFZpZXdVdWlkcy5pbmRleE9mKHZpZXcudXVpZCk7XG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIHRoaXMub3BlbmVkVmlld1V1aWRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB0aGlzLm9wZW5lZFZpZXdEYXRhLnNwbGljZShpbmRleCwgMSk7XG4gICAgICBpZiAodmlldy50eXBlICE9PSBWaWV3VHlwZS5FTUJFRERFRCkge1xuICAgICAgICB0aGlzLmNsZWFyVXVpZE9mUGFnZSh2aWV3LnZpZXdOYW1lLCB2aWV3SGFuZGxlci5jb21wb25lbnROYW1lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVzLnB1c2goe1xuICAgICAgc3RhdGU6IFZpZXdTdGF0ZS5DTE9TRUQsXG4gICAgICB1dWlkOiB2aWV3LnV1aWQsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdXBkYXRlcztcbiAgfVxuXG4gIHByaXZhdGUgY2xlYW51cEVtYmVkZGVkQ2hpbGRyZW4oY29udGFpbmVyVXVpZDogc3RyaW5nKTogVmlld1N0YXRlVXBkYXRlW10ge1xuICAgIGNvbnN0IHVwZGF0ZXM6IFZpZXdTdGF0ZVVwZGF0ZVtdID0gW107XG5cbiAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuZW1iZWRkZWRWaWV3UmVmcy5maWx0ZXIoKHJlZikgPT4gcmVmLmNvbnRhaW5lclV1aWQgPT09IGNvbnRhaW5lclV1aWQpO1xuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgIGNoaWxkLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICB1cGRhdGVzLnB1c2goeyBzdGF0ZTogVmlld1N0YXRlLkNMT1NFRCwgdXVpZDogY2hpbGQudXVpZCB9KTtcbiAgICB9XG4gICAgdGhpcy5lbWJlZGRlZFZpZXdSZWZzID0gdGhpcy5lbWJlZGRlZFZpZXdSZWZzLmZpbHRlcihcbiAgICAgIChyZWYpID0+IHJlZi5jb250YWluZXJVdWlkICE9PSBjb250YWluZXJVdWlkXG4gICAgKTtcblxuICAgIHRoaXMucGVuZGluZ0VtYmVkZGVkVmlld3MgPSB0aGlzLnBlbmRpbmdFbWJlZGRlZFZpZXdzLmZpbHRlcihcbiAgICAgICh2KSA9PiB2LmNvbnRhaW5lclV1aWQgIT09IGNvbnRhaW5lclV1aWRcbiAgICApO1xuXG4gICAgdGhpcy5lbWJlZGRlZENvbnRhaW5lcnMuZGVsZXRlKGNvbnRhaW5lclV1aWQpO1xuXG4gICAgcmV0dXJuIHVwZGF0ZXM7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbmRWaWV3Q29udGV4dFVwZGF0ZXModXBkYXRlc1RvU2VuZDogKFZpZXdTdGF0ZVVwZGF0ZSB8IHVuZGVmaW5lZClbXSkge1xuICAgIGNvbnN0IHVwZGF0ZXM6IFZpZXdTdGF0ZVVwZGF0ZVtdID0gW107XG4gICAgdXBkYXRlc1RvU2VuZC5mb3JFYWNoKCh1cGRhdGUpID0+IHtcbiAgICAgIGlmICh1cGRhdGUgIT09IHVuZGVmaW5lZCAmJiB1cGRhdGUgIT09IG51bGwpIHVwZGF0ZXMucHVzaCh1cGRhdGUpO1xuICAgIH0pO1xuICAgIGlmICh1cGRhdGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlVmlld0NvbnRleHQoe1xuICAgICAgICB1cGRhdGVzLFxuICAgICAgICB1dWlkOiB0aGlzLnZpZXdDb250ZXh0Py51dWlkLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHB1YmxpYyBhc3luYyByZXN0b3JlVmlld3ModXVpZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdXBkYXRlczogVmlld1N0YXRlVXBkYXRlW10gPSBbXTtcbiAgICBpZiAoIXRoaXMudmlld0NvbnRleHQpIHtcbiAgICAgIGF3YWl0IHRoaXMuZ2V0Vmlld0NvbnRleHQodXVpZCk7XG4gICAgfVxuXG4gICAgdGhpcy52aWV3Q29udGV4dCEudmlld3MuZmlsdGVyKFxuICAgICAgKHZpZXcpID0+IHZpZXcuc3RhdGUgPT09IFZpZXdTdGF0ZS5PUEVORUQgfHwgdmlldy5zdGF0ZSA9PT0gVmlld1N0YXRlLlRPX09QRU5cbiAgICApLm1hcCgodmlldzogVmlld0RhdGEpID0+IHtcbiAgICAgIGNvbnN0IHVwZGF0ZSA9IHRoaXMub3BlblZpZXcodmlldyk7XG4gICAgICBpZiAodXBkYXRlKSB7XG4gICAgICAgIHVwZGF0ZXMucHVzaCh1cGRhdGUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGF3YWl0IHRoaXMuc2VuZFZpZXdDb250ZXh0VXBkYXRlcyh1cGRhdGVzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzeW5jVmlldygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB1cGRhdGVzOiAoVmlld1N0YXRlVXBkYXRlIHwgdW5kZWZpbmVkKVtdID0gW107XG4gICAgLy8gY29uc29sZS5sb2coJ1tFbWJlZGRlZF0gc3luY1ZpZXcg4oCUIHZpZXdzOicsIHRoaXMudmlld0NvbnRleHQ/LnZpZXdzPy5tYXAodiA9PiAoeyB2aWV3TmFtZTogdi52aWV3TmFtZSwgdHlwZTogdi50eXBlLCBzdGF0ZTogdi5zdGF0ZSwgY29udGFpbmVyVXVpZDogdi5jb250YWluZXJVdWlkLCBjb250YWluZXJJZDogdi5jb250YWluZXJJZCwgdXVpZDogdi51dWlkIH0pKSk7XG4gICAgdGhpcy52aWV3Q29udGV4dD8udmlld3MubWFwKCh2aWV3OiBWaWV3RGF0YSkgPT4ge1xuICAgICAgc3dpdGNoICh2aWV3LnN0YXRlKSB7XG4gICAgICAgIGNhc2UgVmlld1N0YXRlLlRPX09QRU46XG4gICAgICAgICAgdXBkYXRlcy5wdXNoKHRoaXMub3BlblZpZXcodmlldykpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFZpZXdTdGF0ZS5UT19DTE9TRTpcbiAgICAgICAgICB1cGRhdGVzLnB1c2goLi4udGhpcy5jbG9zZVZpZXcodmlldykpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3Qgdmlld0RhdGFUb0Nsb3NlID0gdGhpcy5vcGVuZWRWaWV3RGF0YS5maWx0ZXIoXG4gICAgICAodmlld0RhdGE6IFZpZXdEYXRhKSA9PlxuICAgICAgICAhdGhpcy52aWV3Q29udGV4dD8udmlld3NcbiAgICAgICAgICAuZmxhdE1hcCgodmlld0RhdGE6IFZpZXdEYXRhKSA9PiB2aWV3RGF0YS51dWlkKVxuICAgICAgICAgIC5pbmNsdWRlcyh2aWV3RGF0YS51dWlkKVxuICAgICk7XG4gICAgaWYgKHZpZXdEYXRhVG9DbG9zZT8ubGVuZ3RoKSB7XG4gICAgICB2aWV3RGF0YVRvQ2xvc2UubWFwKCh2aWV3RGF0YTogVmlld0RhdGEpID0+IHtcbiAgICAgICAgdXBkYXRlcy5wdXNoKC4uLnRoaXMuY2xvc2VWaWV3KHZpZXdEYXRhKSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnZpZXdDb250ZXh0Py5saW5rcz8ubWFwKChkYXRhOiBMaW5rKSA9PiB7XG4gICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgbGV0IHRhcmdldCA9ICdfYmxhbmsnOyAvLyBkZWZhdWx0XG4gICAgICBzd2l0Y2ggKGRhdGEudGFyZ2V0ID8/IExpbmtUYXJnZXRFbnVtLkJMQU5LKSB7XG4gICAgICAgIGNhc2UgJ1NFTEYnOlxuICAgICAgICAgIHRhcmdldCA9ICdfc2VsZic7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0JMQU5LJzpcbiAgICAgICAgICB0YXJnZXQgPSAnX2JsYW5rJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnUEFSRU5UJzpcbiAgICAgICAgICB0YXJnZXQgPSAnX3BhcmVudCc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1RPUCc6XG4gICAgICAgICAgdGFyZ2V0ID0gJ190b3AnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgbGluay5zZXRBdHRyaWJ1dGUoJ3RhcmdldCcsIHRhcmdldCk7XG4gICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIGRhdGEudXJsKTtcbiAgICAgIGlmIChkYXRhLmRvd25sb2FkKSB7XG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsIGRhdGEuZmlsZW5hbWUgPz8gJycpO1xuICAgICAgfVxuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcbiAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgIGxpbmsucmVtb3ZlKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnN0YXJ0RG93bmxvYWRzRmlsZXModGhpcy52aWV3Q29udGV4dD8uZG93bmxvYWRzIHx8IFtdKTtcblxuICAgIGNvbnN0IGNsaXBib2FyZFRleHQgPSB0aGlzLnZpZXdDb250ZXh0Py5jbGlwYm9hcmREYXRhXG4gICAgICA/Lm1hcCgoY2Q6IENsaXBib2FyZERhdGEpID0+IGNkLnRleHQgfHwgJycpXG4gICAgICAuam9pbignJyk7XG4gICAgaWYgKGNsaXBib2FyZFRleHQpIHtcbiAgICAgIGNvbnN0IGNsaXBib2FyZCA9IG5hdmlnYXRvci5jbGlwYm9hcmQ7XG4gICAgICAvLyBhdmFpbGFibGUgb25seSBpbiBzZWN1cmUgY29udGV4dHMuXG4gICAgICBpZiAoY2xpcGJvYXJkKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY2xpcGJvYXJkXG4gICAgICAgICAgICAud3JpdGVUZXh0KGNsaXBib2FyZFRleHQpXG4gICAgICAgICAgICAuY2F0Y2goKGUpID0+IGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBjb3B5IHRleHQgdG8gY2xpcGJvYXJkJywgZSkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgYWNjZXNzaW5nIGNsaXBib2FyZCcsIGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuc2VuZFZpZXdDb250ZXh0VXBkYXRlcyh1cGRhdGVzKTtcbiAgICB0aGlzLnZpZXdDb250ZXh0SGFzQmVlblN5bmNlZC5uZXh0KCk7XG4gIH1cblxuICBhc3luYyBzdGFydERvd25sb2Fkc0ZpbGVzKGRvd25sb2FkczogRG93bmxvYWRlZEZpbGVbXSkge1xuICAgIGZvciAoY29uc3QgZmlsZSBvZiBkb3dubG9hZHMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxldCBibG9iID0gYXdhaXQgdGhpcy5kb3dubG9hZFJlc291cmNlKGZpbGUudXVpZCEsIGZpbGUuaWRlbnRpZmllciEpO1xuICAgICAgICBsZXQgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcblxuICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZSgndGFyZ2V0JywgJ19ibGFuaycpO1xuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIHVybCk7XG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsIGZpbGUuZmlsZW5hbWUhKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcbiAgICAgICAgbGluay5jbGljaygpO1xuICAgICAgICBsaW5rLnJlbW92ZSgpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBkb3dubG9hZGluZyBmaWxlJywgZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRWaWV3Q29udGV4dFV1aWQodXVpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnZpZXdDb250ZXh0VXVpZE5hbWUsIHV1aWQpO1xuICAgIHRoaXMuc2Vzc2lvbi5hZGRIZWFkZXJQYXJhbSh7XG4gICAgICBoZWFkZXJOYW1lOiB0aGlzLnZpZXdDb250ZXh0VXVpZEhlYWRlck5hbWUsXG4gICAgICB2YWx1ZTogdXVpZCxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRWaWV3Q29udGV4dFV1aWQoKTogc3RyaW5nIHtcbiAgICBsZXQgdmlld0NvbnRleHRVdWlkID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnZpZXdDb250ZXh0VXVpZE5hbWUpO1xuICAgIGlmICghdmlld0NvbnRleHRVdWlkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZpZXcgY29udGV4dCBpcyBub3QgaW5pdGlhbGl6ZWQhJyk7XG4gICAgfVxuICAgIHJldHVybiB2aWV3Q29udGV4dFV1aWQ7XG4gIH1cblxuICBwdWJsaWMgaGFzVmlld0NvbnRleHRVdWlkKCk6IGJvb2xlYW4ge1xuICAgIGxldCB2aWV3Q29udGV4dFV1aWQgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMudmlld0NvbnRleHRVdWlkTmFtZSk7XG4gICAgcmV0dXJuIHZpZXdDb250ZXh0VXVpZCAhPT0gbnVsbCAmJiB2aWV3Q29udGV4dFV1aWQgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRVdWlkT2ZQYWdlKHBhZ2VOYW1lOiBzdHJpbmcsIHV1aWQ6IHN0cmluZywgY29tcG9uZW50TmFtZT86IHN0cmluZyk6IHZvaWQge1xuICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5wYWdlTmFtZVByZWZpeCArIHBhZ2VOYW1lLCB1dWlkKTtcbiAgICBpZiAoY29tcG9uZW50TmFtZSkge1xuICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmNvbXBvbmVudE5hbWVQcmVmaXggKyBjb21wb25lbnROYW1lLCBwYWdlTmFtZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsZWFyVXVpZE9mUGFnZShwYWdlTmFtZTogc3RyaW5nLCBjb21wb25lbnROYW1lPzogc3RyaW5nKTogdm9pZCB7XG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLnBhZ2VOYW1lUHJlZml4ICsgcGFnZU5hbWUpO1xuICAgIGlmIChjb21wb25lbnROYW1lKSB7XG4gICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuY29tcG9uZW50TmFtZVByZWZpeCArIGNvbXBvbmVudE5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRVdWlkT2ZQYWdlKHBhZ2VOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCB1dWlkID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnBhZ2VOYW1lUHJlZml4ICsgcGFnZU5hbWUpO1xuICAgIGlmICghdXVpZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgdXVpZCBvZiAke3BhZ2VOYW1lfSBpcyBub3QgYXZhaWxhYmxlLmApO1xuICAgIH1cbiAgICByZXR1cm4gdXVpZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRQYWdlTmFtZU9mQ29tcG9uZW50KGNvbXBvbmVudE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IHBhZ2VOYW1lID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmNvbXBvbmVudE5hbWVQcmVmaXggKyBjb21wb25lbnROYW1lKTtcbiAgICBpZiAoIXBhZ2VOYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBwYWdlTmFtZSBvZiAke2NvbXBvbmVudE5hbWV9IGlzIG5vdCBhdmFpbGFibGUuYCk7XG4gICAgfVxuICAgIHJldHVybiBwYWdlTmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBtZXNzYWdlKG1lc3NhZ2VEYXRhOiBNZXNzYWdlRGF0YSwgbWVzc2FnZVJlc3VsdDogTWVzc2FnZVJlc3VsdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmhhbmRsZVBlcmZvcm1BY3Rpb25SZXNwb25zZShcbiAgICAgIGF3YWl0IHRoaXMudmlld1xuICAgICAgICAubWVzc2FnZShtZXNzYWdlRGF0YS52aWV3VXVpZCA/PyAnJywgbWVzc2FnZURhdGEudXVpZCwgbWVzc2FnZVJlc3VsdClcbiAgICAgICAgLnRvUHJvbWlzZSgpXG4gICAgKTtcbiAgICAvLyBpbiBmdXR1cmUgdXNlIHRoaXMuYXBpUXVldWVTZXJ2aWNlLmFkZFRvUXVldWVcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTbWFydFZpZXdDb250ZXh0QXBpRXJyb3JCeUNvZGUoY29kZTogc3RyaW5nKTogUHJvbWlzZTxTbWFydFZpZXdDb250ZXh0QXBpRXJyb3I+IHtcbiAgICBsZXQgYnV0dG9uTGFiZWw7XG4gICAgbGV0IGRpYWxvZ1RpdGxlO1xuICAgIGxldCBtZXNzYWdlO1xuICAgIGlmICh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICAgIGJ1dHRvbkxhYmVsID0gYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlXG4gICAgICAgIC5nZXQoU21hcnRWaWV3Q29udGV4dEVycm9yRGlhbG9nQnV0dG9uTGFiZWwpXG4gICAgICAgIC50b1Byb21pc2UoKTtcbiAgICAgIGRpYWxvZ1RpdGxlID0gYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldChTbWFydFZpZXdDb250ZXh0RXJyb3JEaWFsb2dUaXRsZSkudG9Qcm9taXNlKCk7XG4gICAgICBtZXNzYWdlID0gYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldChTbWFydFZpZXdDb250ZXh0RXJyb3JEaWFsb2dNZXNzYWdlKS50b1Byb21pc2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYnV0dG9uTGFiZWwgPSAnT2snO1xuICAgICAgZGlhbG9nVGl0bGUgPSAnSGliYSc7XG4gICAgICBtZXNzYWdlID0gJ0FuIGVycm9yIGhhcyBvY2N1cmVkLic7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvcnMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvZGUsXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIGJ1dHRvbkxhYmVsLFxuICAgICAgICBkaWFsb2dUaXRsZSxcbiAgICAgIH07XG4gICAgfVxuICAgIGxldCBhcGlFcnJvcnNXaXRoQ29kZSA9IHRoaXMuc21hcnRWaWV3Q29udGV4dEFwaUVycm9ycy52aWV3Q29udGV4dEFwaUVycm9ycy5maWx0ZXIoXG4gICAgICAoYXBpRXJyb3I6IFNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvcikgPT4ge1xuICAgICAgICByZXR1cm4gYXBpRXJyb3IuY29kZSA9PT0gY29kZTtcbiAgICAgIH1cbiAgICApO1xuICAgIGlmICghYXBpRXJyb3JzV2l0aENvZGUgfHwgKGFwaUVycm9yc1dpdGhDb2RlICYmICFhcGlFcnJvcnNXaXRoQ29kZS5sZW5ndGgpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBTbWFydFZpZXdDb250ZXh0QXBpRXJyb3Igd2l0aCBjb2RlICR7Y29kZX0gY291bGQgbm90IGJlIGZvdW5kLmApO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2RlLFxuICAgICAgICBtZXNzYWdlLFxuICAgICAgICBidXR0b25MYWJlbCxcbiAgICAgICAgZGlhbG9nVGl0bGUsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gYXBpRXJyb3JzV2l0aENvZGVbMF07XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Vmlld0NvbnN0cmFpbnQodXVpZDogc3RyaW5nKTogUHJvbWlzZTxWaWV3Q29uc3RyYWludD4ge1xuICAgIGxldCB2aWV3Q29uc3RyYWludFJlc3BvbnNlID0gYXdhaXQgdGhpcy52aWV3LmdldFZpZXdDb25zdHJhaW50KHV1aWQpLnRvUHJvbWlzZSgpO1xuICAgIGlmICghdmlld0NvbnN0cmFpbnRSZXNwb25zZSlcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGdldCBWaWV3Q29uc3RyYWludCB3aXRoIHRoZSBnaXZlbiB1dWlkLicpO1xuICAgIHJldHVybiB2aWV3Q29uc3RyYWludFJlc3BvbnNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNob3dQdWJsaXNoZWRWaWV3KGNoYW5uZWw6IHN0cmluZywgdXVpZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5pc09wZW5pbmdTbWFydExpbmsgPSB0cnVlO1xuXG4gICAgYXdhaXQgdGhpcy5zZXNzaW9uLmluaXRpYWxpemUoKTtcbiAgICAvLyBUT0RPIGluaXQgdmlldyBjb250ZXh0IGF1dG9tYXRpY2FsbHlcbiAgICAvLyBhd2FpdCB0aGlzLmluaXRpYWxpemUoKTtcbiAgICBhd2FpdCB0aGlzLmluaXRWaWV3Q29udGV4dCgpO1xuXG4gICAgdGhpcy5vcGVuU21hcnRMaW5rLm5leHQoY2hhbm5lbCk7XG4gICAgYXdhaXQgdGhpcy5vcGVuU21hcnRMaW5rLnRvUHJvbWlzZSgpO1xuXG4gICAgYXdhaXQgdGhpcy52aWV3LnNob3dQdWJsaXNoZWRWaWV3KGNoYW5uZWwsIHV1aWQpLnRvUHJvbWlzZSgpO1xuICAgIGF3YWl0IHRoaXMuZ2V0QW5kU3luY1ZpZXdDb250ZXh0KCk7XG4gICAgdGhpcy5pc09wZW5pbmdTbWFydExpbmsgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkb3dubG9hZFJlc291cmNlKHV1aWQ6IHN0cmluZywgaXRlbTogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy52aWV3LmRvd25sb2FkSXRlbSh1dWlkLCBpdGVtKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwZXJmb3JtQWN0aW9uKHV1aWQ6IHN0cmluZywgdWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fcGVyZm9ybUFjdGlvbih7XG4gICAgICB1dWlkLFxuICAgICAgdWlBY3Rpb25SZXF1ZXN0LFxuICAgIH0pO1xuICAgIC8vIGNvbnN0IGlzQ29tcGxldGVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICAvLyB0aGlzLmFwaVF1ZXVlU2VydmljZS5hZGRUb1F1ZXVlKHtcbiAgICAvLyAgIGNhbGxiYWNrOiB0aGlzLl9wZXJmb3JtQWN0aW9uLmJpbmQodGhpcyksXG4gICAgLy8gICBjb25maWc6IHtcbiAgICAvLyAgICAgdXVpZCxcbiAgICAvLyAgICAgdWlBY3Rpb25SZXF1ZXN0LFxuICAgIC8vICAgfSxcbiAgICAvLyAgIGlzQ29tcGxldGVkLFxuICAgIC8vIH0pO1xuICAgIC8vIHJldHVybiBhd2FpdCBpc0NvbXBsZXRlZC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwZXJmb3JtV2lkZ2V0QWN0aW9uKFxuICAgIHV1aWQ6IHN0cmluZyxcbiAgICB3aWRnZXRJZDogc3RyaW5nLFxuICAgIG5vZGVJZDogc3RyaW5nLFxuICAgIHVpQWN0aW9uUmVxdWVzdDogVWlBY3Rpb25SZXF1ZXN0XG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9wZXJmb3JtV2lkZ2V0QWN0aW9uKHsgdXVpZCwgd2lkZ2V0SWQsIG5vZGVJZCwgdWlBY3Rpb25SZXF1ZXN0IH0pO1xuICAgIC8vIGNvbnN0IGlzQ29tcGxldGVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICAvLyB0aGlzLmFwaVF1ZXVlU2VydmljZS5hZGRUb1F1ZXVlKHtcbiAgICAvLyAgIGNhbGxiYWNrOiB0aGlzLl9wZXJmb3JtV2lkZ2V0QWN0aW9uLmJpbmQodGhpcyksXG4gICAgLy8gICBjb25maWc6IHtcbiAgICAvLyAgICAgdXVpZCxcbiAgICAvLyAgICAgd2lkZ2V0SWQsXG4gICAgLy8gICAgIG5vZGVJZCxcbiAgICAvLyAgICAgdWlBY3Rpb25SZXF1ZXN0LFxuICAgIC8vICAgfSxcbiAgICAvLyAgIGlzQ29tcGxldGVkLFxuICAgIC8vIH0pO1xuICAgIC8vIHJldHVybiBhd2FpdCBpc0NvbXBsZXRlZC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwZXJmb3JtV2lkZ2V0TWFpbkFjdGlvbihcbiAgICB1dWlkOiBzdHJpbmcsXG4gICAgd2lkZ2V0SWQ6IHN0cmluZyxcbiAgICB1aUFjdGlvblJlcXVlc3Q6IFVpQWN0aW9uUmVxdWVzdFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fcGVyZm9ybVdpZGdldE1haW5BY3Rpb24oeyB1dWlkLCB3aWRnZXRJZCwgdWlBY3Rpb25SZXF1ZXN0IH0pO1xuICAgIC8vIGNvbnN0IGlzQ29tcGxldGVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICAvLyB0aGlzLmFwaVF1ZXVlU2VydmljZS5hZGRUb1F1ZXVlKHtcbiAgICAvLyAgIGNhbGxiYWNrOiB0aGlzLl9wZXJmb3JtV2lkZ2V0TWFpbkFjdGlvbi5iaW5kKHRoaXMpLFxuICAgIC8vICAgY29uZmlnOiB7XG4gICAgLy8gICAgIHV1aWQsXG4gICAgLy8gICAgIHdpZGdldElkLFxuICAgIC8vICAgICB1aUFjdGlvblJlcXVlc3QsXG4gICAgLy8gICB9LFxuICAgIC8vICAgaXNDb21wbGV0ZWQsXG4gICAgLy8gfSk7XG4gICAgLy8gcmV0dXJuIGF3YWl0IGlzQ29tcGxldGVkLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBlcmZvcm1VcGxvYWRBY3Rpb24oXG4gICAgdXVpZDogc3RyaW5nLFxuICAgIHVpQWN0aW9uUmVxdWVzdDogVWlBY3Rpb25SZXF1ZXN0LFxuICAgIHBhcmFtOiAnaW5wdXQnIHwgJ2lucHV0XCInLFxuICAgIGNvbnRlbnQ6IGFueVxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLl9wZXJmb3JtVXBsb2FkQWN0aW9uKHtcbiAgICAgIHV1aWQsXG4gICAgICB1aUFjdGlvblJlcXVlc3QsXG4gICAgICBwYXJhbSxcbiAgICAgIGNvbnRlbnQsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGVyZm9ybVVwbG9hZE11bHRpcGxlQWN0aW9uKFxuICAgIHV1aWQ6IHN0cmluZyxcbiAgICB1aUFjdGlvblJlcXVlc3Q6IFVpQWN0aW9uUmVxdWVzdCxcbiAgICBwYXJhbTogJ2lucHV0JyB8ICdpbnB1dDInLFxuICAgIGNvbnRlbnQ6IGFueVtdXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuX3BlcmZvcm1VcGxvYWRNdWx0aXBsZUFjdGlvbih7XG4gICAgICB1dWlkLFxuICAgICAgdWlBY3Rpb25SZXF1ZXN0LFxuICAgICAgcGFyYW0sXG4gICAgICBjb250ZW50LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRhdGFDaGFuZ2VkKHV1aWQ6IHN0cmluZywgZGF0YUNoYW5nZTogRGF0YUNoYW5nZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9kYXRhQ2hhbmdlZCh7IHV1aWQsIGRhdGFDaGFuZ2UgfSk7XG4gICAgLy8gY29uc3QgaXNDb21wbGV0ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIC8vIHRoaXMuYXBpUXVldWVTZXJ2aWNlLmFkZFRvUXVldWUoXG4gICAgLy8gICB7XG4gICAgLy8gICAgIGNhbGxiYWNrOiB0aGlzLl9kYXRhQ2hhbmdlZC5iaW5kKHRoaXMpLFxuICAgIC8vICAgICBjb25maWc6IHtcbiAgICAvLyAgICAgICB1dWlkLFxuICAgIC8vICAgICAgIGRhdGFDaGFuZ2UsXG4gICAgLy8gICAgIH0sXG4gICAgLy8gICAgIGlzQ29tcGxldGVkLFxuICAgIC8vICAgfSxcbiAgICAvLyAgIHRydWVcbiAgICAvLyApO1xuICAgIC8vIHJldHVybiBhd2FpdCBpc0NvbXBsZXRlZC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX3BlcmZvcm1BY3Rpb24oY29uZmlnOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5oYW5kbGVQZXJmb3JtQWN0aW9uUmVzcG9uc2UoXG4gICAgICBhd2FpdCB0aGlzLnZpZXcucGVyZm9ybUFjdGlvbihjb25maWcudXVpZCwgY29uZmlnLnVpQWN0aW9uUmVxdWVzdCkudG9Qcm9taXNlKClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfcGVyZm9ybVdpZGdldEFjdGlvbihjb25maWc6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmhhbmRsZVBlcmZvcm1BY3Rpb25SZXNwb25zZShcbiAgICAgIGF3YWl0IHRoaXMudmlld1xuICAgICAgICAucGVyZm9ybVdpZGdldEFjdGlvbihjb25maWcudXVpZCwgY29uZmlnLndpZGdldElkLCBjb25maWcubm9kZUlkLCBjb25maWcudWlBY3Rpb25SZXF1ZXN0KVxuICAgICAgICAudG9Qcm9taXNlKClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfcGVyZm9ybVdpZGdldE1haW5BY3Rpb24oY29uZmlnOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5oYW5kbGVQZXJmb3JtQWN0aW9uUmVzcG9uc2UoXG4gICAgICBhd2FpdCB0aGlzLnZpZXdcbiAgICAgICAgLnBlcmZvcm1XaWRnZXRNYWluQWN0aW9uKGNvbmZpZy51dWlkLCBjb25maWcud2lkZ2V0SWQsIGNvbmZpZy51aUFjdGlvblJlcXVlc3QpXG4gICAgICAgIC50b1Byb21pc2UoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9wZXJmb3JtVXBsb2FkQWN0aW9uKGNvbmZpZzogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuaGFuZGxlUGVyZm9ybUFjdGlvblJlc3BvbnNlKFxuICAgICAgYXdhaXQgdGhpcy52aWV3XG4gICAgICAgIC51cGxvYWRBY3Rpb24oXG4gICAgICAgICAgY29uZmlnLnV1aWQsXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoY29uZmlnLnVpQWN0aW9uUmVxdWVzdCksXG4gICAgICAgICAgY29uZmlnLnBhcmFtLFxuICAgICAgICAgIGNvbmZpZy5jb250ZW50XG4gICAgICAgIClcbiAgICAgICAgLnRvUHJvbWlzZSgpXG4gICAgKTtcbiAgfVxuICBwcml2YXRlIGFzeW5jIF9wZXJmb3JtVXBsb2FkTXVsdGlwbGVBY3Rpb24oY29uZmlnOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5oYW5kbGVQZXJmb3JtQWN0aW9uUmVzcG9uc2UoXG4gICAgICBhd2FpdCB0aGlzLnZpZXdcbiAgICAgICAgLnVwbG9hZE11bHRpcGxlQWN0aW9uKFxuICAgICAgICAgIGNvbmZpZy51dWlkLFxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGNvbmZpZy51aUFjdGlvblJlcXVlc3QpLFxuICAgICAgICAgIGNvbmZpZy5wYXJhbSxcbiAgICAgICAgICBjb25maWcuY29udGVudFxuICAgICAgICApXG4gICAgICAgIC50b1Byb21pc2UoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9kYXRhQ2hhbmdlZChjb25maWc6IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuaGFuZGxlUGVyZm9ybUFjdGlvblJlc3BvbnNlKFxuICAgICAgYXdhaXQgdGhpcy52aWV3LmRhdGFDaGFuZ2VkKGNvbmZpZy51dWlkLCBjb25maWcuZGF0YUNoYW5nZSkudG9Qcm9taXNlKClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGhhbmRsZVBlcmZvcm1BY3Rpb25SZXNwb25zZShcbiAgICB2aWV3Q29udGV4dENoYW5nZTogVmlld0NvbnRleHRDaGFuZ2UgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICB0aGlzLnZpZXdDb250ZXh0ID0gdmlld0NvbnRleHRDaGFuZ2U/LnZpZXdDb250ZXh0O1xuICAgIGF3YWl0IHRoaXMuc3luY1ZpZXcoKTtcblxuICAgIGlmICh2aWV3Q29udGV4dENoYW5nZT8uY2hhbmdlcykge1xuICAgICAgdGhpcy5oYW5kbGVDaGFuZ2VzKHZpZXdDb250ZXh0Q2hhbmdlLmNoYW5nZXMpO1xuICAgIH1cbiAgICByZXR1cm4gdmlld0NvbnRleHRDaGFuZ2U/LnJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ2hhbmdlcyhjaGFuZ2VzOiBBcnJheTxDb21wb25lbnRNb2RlbENoYW5nZT4pOiB2b2lkIHtcbiAgICBjaGFuZ2VzLmZvckVhY2goKGNvbXBvbmVudE1vZGVsQ2hhbmdlOiBDb21wb25lbnRNb2RlbENoYW5nZSkgPT4ge1xuICAgICAgbGV0IGRldGVjdENoYW5nZTogU21hcnRTdWJqZWN0PENvbXBvbmVudE1vZGVsQ2hhbmdlPiB8IHVuZGVmaW5lZCA9IHRoaXMuc21hcnRBcGlDbGllbnRzLmdldChcbiAgICAgICAgY29tcG9uZW50TW9kZWxDaGFuZ2UudXVpZFxuICAgICAgKTtcbiAgICAgIGlmIChkZXRlY3RDaGFuZ2UpIHtcbiAgICAgICAgZGV0ZWN0Q2hhbmdlLm5leHQoY29tcG9uZW50TW9kZWxDaGFuZ2UpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvYWQodXVpZDogc3RyaW5nKTogUHJvbWlzZTxDb21wb25lbnRNb2RlbCB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnZpZXcuZ2V0Q29tcG9uZW50TW9kZWwodXVpZCkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9hZDIodXVpZDogc3RyaW5nKTogUHJvbWlzZTxWaWV3Q29udGV4dENoYW5nZSB8IHVuZGVmaW5lZD4ge1xuICAgIGxldCBjaGFuZ2UgPSBhd2FpdCB0aGlzLnZpZXcuZ2V0Q29tcG9uZW50TW9kZWwyKHV1aWQpLnRvUHJvbWlzZSgpO1xuICAgIHRoaXMuaGFuZGxlUGVyZm9ybUFjdGlvblJlc3BvbnNlKGNoYW5nZSk7XG4gICAgcmV0dXJuIGNoYW5nZTtcbiAgfVxuXG4gIGdldEN1cnJlbnRWaWV3Q29udGV4dCgpOiBWaWV3Q29udGV4dERhdGEgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnZpZXdDb250ZXh0O1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBJU19BU1lOQ19QQVJBTV9OQU1FID0gJ2lzQXN5bmMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwaVF1ZXVlQ2FsbCB7XG4gIGNhbGxiYWNrOiAoY29uZmlnOiBhbnkpID0+IFByb21pc2U8YW55PjtcbiAgY29uZmlnOiBhbnk7XG4gIGlzQ29tcGxldGVkOiBTdWJqZWN0PHZvaWQ+O1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQXBpUXVldWVTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByaXZhdGUgcXVldWU6IEFwaVF1ZXVlQ2FsbFtdID0gW107XG4gIHByaXZhdGUgaXNQcm9jZXNzaW5nID0gZmFsc2U7XG4gIHByaXZhdGUgcXVldWVTdWJqZWN0OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFNtYXJ0U3ViamVjdCh0aGlzLl9kZXN0cm95JCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5xdWV1ZVN1YmplY3QucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5wcm9jZXNzUXVldWUoKSk7XG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBhZGRUb1F1ZXVlKGNhbGw6IEFwaVF1ZXVlQ2FsbCwgcHJpb3JpdHk6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIGlmIChwcmlvcml0eSkge1xuICAgICAgdGhpcy5xdWV1ZS51bnNoaWZ0KGNhbGwpOyAvLyBBZGQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgcXVldWUgaWYgaXQgaGFzIGhpZ2hlciBwcmlvcml0eVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnF1ZXVlLnB1c2goY2FsbCk7IC8vIEFkZCBhdCB0aGUgZW5kIG9mIHRoZSBxdWV1ZSBpZiBpdCBoYXMgbG93ZXIgcHJpb3JpdHlcbiAgICB9XG4gICAgaWYgKCF0aGlzLmlzUHJvY2Vzc2luZykge1xuICAgICAgdGhpcy5wcm9jZXNzUXVldWUoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBwcm9jZXNzUXVldWUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMucXVldWUubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmlzUHJvY2Vzc2luZyA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFwaVF1ZXVlQ2FsbCA9IHRoaXMucXVldWUuc2hpZnQoKTtcbiAgICBpZiAoYXBpUXVldWVDYWxsKSB7XG4gICAgICBhd2FpdCBhcGlRdWV1ZUNhbGwuY2FsbGJhY2soYXBpUXVldWVDYWxsLmNvbmZpZyk7XG4gICAgICBhcGlRdWV1ZUNhbGwuaXNDb21wbGV0ZWQuY29tcGxldGUoKTtcbiAgICAgIHRoaXMucXVldWVTdWJqZWN0Lm5leHQoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -30,4 +30,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
30
30
  }], ctorParameters: () => [{ type: i1.SmartViewContextService }, { type: i2.SmartNavigationService }, { type: i3.ActivatedRoute }] });
31
31
  export const SmartLinkChannelVariableInPath = 'channel';
32
32
  export const SmartLinkUuidVariableInPath = 'uuid';
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtdmlldy1yZWRpcmVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3ZpZXctY29udGV4dC9zbWFydC12aWV3LXJlZGlyZWN0L3NtYXJ0LXZpZXctcmVkaXJlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFTMUMsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixZQUNVLE9BQWdDLEVBQ2hDLFVBQWtDLEVBQ2xDLEtBQXFCO1FBRnJCLFlBQU8sR0FBUCxPQUFPLENBQXlCO1FBQ2hDLGVBQVUsR0FBVixVQUFVLENBQXdCO1FBQ2xDLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBRTdCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFO1lBQ25ELElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsOEJBQThCLENBQUMsQ0FBQztZQUMvRSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLENBQUM7WUFFekUsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7WUFDcEUsQ0FBQztZQUNELElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FoQlUsaUJBQWlCO21HQUFqQixpQkFBaUIsb0RBRmxCLDJCQUEyQjs7NEZBRTFCLGlCQUFpQjtrQkFKN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsY0FBYztvQkFDeEIsUUFBUSxFQUFFLDJCQUEyQjtpQkFDdEM7O0FBb0JELE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFXLFNBQVMsQ0FBQztBQUNoRSxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBVyxNQUFNLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBTbWFydFZpZXdDb250ZXh0U2VydmljZSB9IGZyb20gJy4uL3NtYXJ0LXZpZXctY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU21hcnROYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NtYXJ0LW5hdmlnYXRpb24vcHJvamVjdHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcmVkaXJlY3QnLFxyXG4gIHRlbXBsYXRlOiAnPGRpdj5TbWFydCByZWRpcmVjdDwvZGl2PicsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbWFydFZpZXdSZWRpcmVjdCB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHNlcnZpY2U6IFNtYXJ0Vmlld0NvbnRleHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuYXZpZ2F0aW9uOiBTbWFydE5hdmlnYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGVcclxuICApIHtcclxuICAgIHRoaXMubmF2aWdhdGlvbi5yb3V0ZSA9IHRoaXMucm91dGU7XHJcbiAgICB0aGlzLm5hdmlnYXRpb24uc3Vic2NyaWJlVG9VcmxDaGFuZ2UoKHVybDogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGxldCBjaGFubmVsID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoU21hcnRMaW5rQ2hhbm5lbFZhcmlhYmxlSW5QYXRoKTtcclxuICAgICAgbGV0IHV1aWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldChTbWFydExpbmtVdWlkVmFyaWFibGVJblBhdGgpO1xyXG5cclxuICAgICAgaWYgKCFjaGFubmVsIHx8ICF1dWlkKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjaGFubmVsIG9yIHV1aWQgaXMgbm90IHJlYWNoYWJsZSBmcm9tIHRoZSB1cmwhJyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXJ2aWNlLnNob3dQdWJsaXNoZWRWaWV3KGNoYW5uZWwsIHV1aWQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgU21hcnRMaW5rQ2hhbm5lbFZhcmlhYmxlSW5QYXRoOiBzdHJpbmcgPSAnY2hhbm5lbCc7XHJcbmV4cG9ydCBjb25zdCBTbWFydExpbmtVdWlkVmFyaWFibGVJblBhdGg6IHN0cmluZyA9ICd1dWlkJztcclxuIl19
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtdmlldy1yZWRpcmVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3ZpZXctY29udGV4dC9zbWFydC12aWV3LXJlZGlyZWN0L3NtYXJ0LXZpZXctcmVkaXJlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFTMUMsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixZQUNVLE9BQWdDLEVBQ2hDLFVBQWtDLEVBQ2xDLEtBQXFCO1FBRnJCLFlBQU8sR0FBUCxPQUFPLENBQXlCO1FBQ2hDLGVBQVUsR0FBVixVQUFVLENBQXdCO1FBQ2xDLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBRTdCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFO1lBQ25ELElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsOEJBQThCLENBQUMsQ0FBQztZQUMvRSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLENBQUM7WUFFekUsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7WUFDcEUsQ0FBQztZQUNELElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FoQlUsaUJBQWlCO21HQUFqQixpQkFBaUIsb0RBRmxCLDJCQUEyQjs7NEZBRTFCLGlCQUFpQjtrQkFKN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsY0FBYztvQkFDeEIsUUFBUSxFQUFFLDJCQUEyQjtpQkFDdEM7O0FBb0JELE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFXLFNBQVMsQ0FBQztBQUNoRSxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBVyxNQUFNLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFNtYXJ0Vmlld0NvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vc21hcnQtdmlldy1jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU21hcnROYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NtYXJ0LW5hdmlnYXRpb24vcHJvamVjdHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcmVkaXJlY3QnLFxuICB0ZW1wbGF0ZTogJzxkaXY+U21hcnQgcmVkaXJlY3Q8L2Rpdj4nLFxufSlcbmV4cG9ydCBjbGFzcyBTbWFydFZpZXdSZWRpcmVjdCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2VydmljZTogU21hcnRWaWV3Q29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBuYXZpZ2F0aW9uOiBTbWFydE5hdmlnYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkge1xuICAgIHRoaXMubmF2aWdhdGlvbi5yb3V0ZSA9IHRoaXMucm91dGU7XG4gICAgdGhpcy5uYXZpZ2F0aW9uLnN1YnNjcmliZVRvVXJsQ2hhbmdlKCh1cmw6IHN0cmluZykgPT4ge1xuICAgICAgbGV0IGNoYW5uZWwgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldChTbWFydExpbmtDaGFubmVsVmFyaWFibGVJblBhdGgpO1xuICAgICAgbGV0IHV1aWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldChTbWFydExpbmtVdWlkVmFyaWFibGVJblBhdGgpO1xuXG4gICAgICBpZiAoIWNoYW5uZWwgfHwgIXV1aWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjaGFubmVsIG9yIHV1aWQgaXMgbm90IHJlYWNoYWJsZSBmcm9tIHRoZSB1cmwhJyk7XG4gICAgICB9XG4gICAgICB0aGlzLnNlcnZpY2Uuc2hvd1B1Ymxpc2hlZFZpZXcoY2hhbm5lbCwgdXVpZCk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IFNtYXJ0TGlua0NoYW5uZWxWYXJpYWJsZUluUGF0aDogc3RyaW5nID0gJ2NoYW5uZWwnO1xuZXhwb3J0IGNvbnN0IFNtYXJ0TGlua1V1aWRWYXJpYWJsZUluUGF0aDogc3RyaW5nID0gJ3V1aWQnO1xuIl19
@@ -6,4 +6,4 @@ export var ComponentLibrary;
6
6
  ComponentLibrary["PRIMENG"] = "primeng";
7
7
  })(ComponentLibrary || (ComponentLibrary = {}));
8
8
  export const COMPONENT_LIBRARY = new InjectionToken('COMPONENT_LIBRARY');
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50TGlicmFyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3ZpZXctY29udGV4dC91dGlsaXR5L2NvbXBvbmVudExpYnJhcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFOLElBQVksZ0JBR1g7QUFIRCxXQUFZLGdCQUFnQjtJQUMxQix5Q0FBcUIsQ0FBQTtJQUNyQix1Q0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBSFcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQUczQjtBQUVELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUFtQixtQkFBbUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gbGliL3ZpZXctY29udGV4dC91dGlsaXR5L2NvbXBvbmVudExpYnJhcnkudHNcclxuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmV4cG9ydCBlbnVtIENvbXBvbmVudExpYnJhcnkge1xyXG4gIE1BVEVSSUFMID0gJ21hdGVyaWFsJyxcclxuICBQUklNRU5HID0gJ3ByaW1lbmcnLFxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgQ09NUE9ORU5UX0xJQlJBUlkgPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29tcG9uZW50TGlicmFyeT4oJ0NPTVBPTkVOVF9MSUJSQVJZJyk7XHJcbiJdfQ==
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50TGlicmFyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3ZpZXctY29udGV4dC91dGlsaXR5L2NvbXBvbmVudExpYnJhcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFOLElBQVksZ0JBR1g7QUFIRCxXQUFZLGdCQUFnQjtJQUMxQix5Q0FBcUIsQ0FBQTtJQUNyQix1Q0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBSFcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQUczQjtBQUVELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUFtQixtQkFBbUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gbGliL3ZpZXctY29udGV4dC91dGlsaXR5L2NvbXBvbmVudExpYnJhcnkudHNcbmltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBlbnVtIENvbXBvbmVudExpYnJhcnkge1xuICBNQVRFUklBTCA9ICdtYXRlcmlhbCcsXG4gIFBSSU1FTkcgPSAncHJpbWVuZycsXG59XG5cbmV4cG9ydCBjb25zdCBDT01QT05FTlRfTElCUkFSWSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDb21wb25lbnRMaWJyYXJ5PignQ09NUE9ORU5UX0xJQlJBUlknKTtcbiJdfQ==
@@ -41,4 +41,4 @@ export class SmartObjectUtility {
41
41
  return true;
42
42
  }
43
43
  }
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtb2JqZWN0LXV0aWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvdXRpbGl0eS9zbWFydC1vYmplY3QtdXRpbGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXhDLE1BQU0sT0FBTyxrQkFBa0I7SUFDdEIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFVLEVBQUUsR0FBVztRQUNsRCw4RUFBOEU7UUFDOUUsSUFBSSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7WUFDakIsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEIsQ0FBQztRQUVELHdEQUF3RDtRQUN4RCxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTVCLHlEQUF5RDtRQUN6RCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxZQUFpQixFQUFFLElBQWMsRUFBRSxLQUFhO1FBQ3RFLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN6QixPQUFPLFlBQVksQ0FBQztRQUN0QixDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxzQ0FBc0M7UUFDdEMsS0FBSyxJQUFJLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN6QyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUQsSUFBSSxnQkFBZ0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDckMsOEVBQThFO2dCQUM5RSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNwRSxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFTSxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQU8sRUFBRSxFQUFPLEVBQUUsS0FBZTtRQUM1RCxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ25DLE9BQU8sS0FBSyxDQUFDO2dCQUNmLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVlcEVxdWFsIH0gZnJvbSAnZmFzdC1lcXVhbHMnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFNtYXJ0T2JqZWN0VXRpbGl0eSB7XHJcbiAgcHVibGljIHN0YXRpYyBnZXRWYWx1ZUJ5UGF0aChtb2RlbDogYW55LCBrZXk6IHN0cmluZyk6IGFueSB7XHJcbiAgICAvLyBBdHRlbXB0IHRvIGRpcmVjdGx5IGFjY2VzcyB0aGUga2V5IGluIGNhc2UgaXQncyBmdWxseSByZXByZXNlbnRlZCB3aXRoIGRvdHNcclxuICAgIGlmIChrZXkgaW4gbW9kZWwpIHtcclxuICAgICAgcmV0dXJuIG1vZGVsW2tleV07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU3BsaXQgdGhlIGtleSBpbnRvIHBhcnRzIG9uIHRoZSBkb3QgZm9yIGRlZXBlciBjaGVja3NcclxuICAgIGNvbnN0IGtleXMgPSBrZXkuc3BsaXQoJy4nKTtcclxuXHJcbiAgICAvLyBVc2UgYSByZWN1cnNpdmUgaGVscGVyIGZ1bmN0aW9uIHRvIHRyYXZlcnNlIHRoZSBvYmplY3RcclxuICAgIHJldHVybiB0aGlzLnRyYXZlcnNlKG1vZGVsLCBrZXlzLCAwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIHRyYXZlcnNlKGN1cnJlbnRNb2RlbDogYW55LCBrZXlzOiBzdHJpbmdbXSwgaW5kZXg6IG51bWJlcik6IGFueSB7XHJcbiAgICBpZiAoaW5kZXggPj0ga2V5cy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIGN1cnJlbnRNb2RlbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWN1cnJlbnRNb2RlbCkge1xyXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJlY29uc3RydWN0IHBvc3NpYmxlIGtleXMgd2l0aCBkb3RzXHJcbiAgICBmb3IgKGxldCBpID0gaW5kZXg7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHJlY29uc3RydWN0ZWRLZXkgPSBrZXlzLnNsaWNlKGluZGV4LCBpICsgMSkuam9pbignLicpO1xyXG4gICAgICBpZiAocmVjb25zdHJ1Y3RlZEtleSBpbiBjdXJyZW50TW9kZWwpIHtcclxuICAgICAgICAvLyBSZWN1cnNpdmVseSBjb250aW51ZSB3aXRoIHRoZSBuZXh0IGluZGV4IHBhc3QgdGhlIGN1cnJlbnQgcmVjb25zdHJ1Y3RlZCBrZXlcclxuICAgICAgICByZXR1cm4gdGhpcy50cmF2ZXJzZShjdXJyZW50TW9kZWxbcmVjb25zdHJ1Y3RlZEtleV0sIGtleXMsIGkgKyAxKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGNvbXBhcmVCeVByb3BzKG8xOiBhbnksIG8yOiBhbnksIHByb3BzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xyXG4gICAgZm9yIChsZXQgcHJvcCBvZiBwcm9wcykge1xyXG4gICAgICBpZiAocHJvcCBpbiBvMSAmJiBwcm9wIGluIG8yKSB7XHJcbiAgICAgICAgaWYgKCFkZWVwRXF1YWwobzFbcHJvcF0sIG8yW3Byb3BdKSkge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxufVxyXG4iXX0=
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtb2JqZWN0LXV0aWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvdXRpbGl0eS9zbWFydC1vYmplY3QtdXRpbGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXhDLE1BQU0sT0FBTyxrQkFBa0I7SUFDdEIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFVLEVBQUUsR0FBVztRQUNsRCw4RUFBOEU7UUFDOUUsSUFBSSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7WUFDakIsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEIsQ0FBQztRQUVELHdEQUF3RDtRQUN4RCxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTVCLHlEQUF5RDtRQUN6RCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxZQUFpQixFQUFFLElBQWMsRUFBRSxLQUFhO1FBQ3RFLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN6QixPQUFPLFlBQVksQ0FBQztRQUN0QixDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxzQ0FBc0M7UUFDdEMsS0FBSyxJQUFJLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN6QyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUQsSUFBSSxnQkFBZ0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDckMsOEVBQThFO2dCQUM5RSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNwRSxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFTSxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQU8sRUFBRSxFQUFPLEVBQUUsS0FBZTtRQUM1RCxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ25DLE9BQU8sS0FBSyxDQUFDO2dCQUNmLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVlcEVxdWFsIH0gZnJvbSAnZmFzdC1lcXVhbHMnO1xuXG5leHBvcnQgY2xhc3MgU21hcnRPYmplY3RVdGlsaXR5IHtcbiAgcHVibGljIHN0YXRpYyBnZXRWYWx1ZUJ5UGF0aChtb2RlbDogYW55LCBrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgLy8gQXR0ZW1wdCB0byBkaXJlY3RseSBhY2Nlc3MgdGhlIGtleSBpbiBjYXNlIGl0J3MgZnVsbHkgcmVwcmVzZW50ZWQgd2l0aCBkb3RzXG4gICAgaWYgKGtleSBpbiBtb2RlbCkge1xuICAgICAgcmV0dXJuIG1vZGVsW2tleV07XG4gICAgfVxuXG4gICAgLy8gU3BsaXQgdGhlIGtleSBpbnRvIHBhcnRzIG9uIHRoZSBkb3QgZm9yIGRlZXBlciBjaGVja3NcbiAgICBjb25zdCBrZXlzID0ga2V5LnNwbGl0KCcuJyk7XG5cbiAgICAvLyBVc2UgYSByZWN1cnNpdmUgaGVscGVyIGZ1bmN0aW9uIHRvIHRyYXZlcnNlIHRoZSBvYmplY3RcbiAgICByZXR1cm4gdGhpcy50cmF2ZXJzZShtb2RlbCwga2V5cywgMCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyB0cmF2ZXJzZShjdXJyZW50TW9kZWw6IGFueSwga2V5czogc3RyaW5nW10sIGluZGV4OiBudW1iZXIpOiBhbnkge1xuICAgIGlmIChpbmRleCA+PSBrZXlzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGN1cnJlbnRNb2RlbDtcbiAgICB9XG5cbiAgICBpZiAoIWN1cnJlbnRNb2RlbCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBSZWNvbnN0cnVjdCBwb3NzaWJsZSBrZXlzIHdpdGggZG90c1xuICAgIGZvciAobGV0IGkgPSBpbmRleDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHJlY29uc3RydWN0ZWRLZXkgPSBrZXlzLnNsaWNlKGluZGV4LCBpICsgMSkuam9pbignLicpO1xuICAgICAgaWYgKHJlY29uc3RydWN0ZWRLZXkgaW4gY3VycmVudE1vZGVsKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbnRpbnVlIHdpdGggdGhlIG5leHQgaW5kZXggcGFzdCB0aGUgY3VycmVudCByZWNvbnN0cnVjdGVkIGtleVxuICAgICAgICByZXR1cm4gdGhpcy50cmF2ZXJzZShjdXJyZW50TW9kZWxbcmVjb25zdHJ1Y3RlZEtleV0sIGtleXMsIGkgKyAxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb21wYXJlQnlQcm9wcyhvMTogYW55LCBvMjogYW55LCBwcm9wczogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICBmb3IgKGxldCBwcm9wIG9mIHByb3BzKSB7XG4gICAgICBpZiAocHJvcCBpbiBvMSAmJiBwcm9wIGluIG8yKSB7XG4gICAgICAgIGlmICghZGVlcEVxdWFsKG8xW3Byb3BdLCBvMltwcm9wXSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiJdfQ==
@@ -65,4 +65,4 @@ export class SmartStyleUtility {
65
65
  });
66
66
  }
67
67
  }
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtc3R5bGUtdXRpbGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3ZpZXctY29udGV4dC91dGlsaXR5L3NtYXJ0LXN0eWxlLXV0aWxpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF5QixtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczRSxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLGdDQUFnQztJQUNoQywrQkFBK0I7SUFDL0IsNkJBQTZCO0lBRXRCLE1BQU0sQ0FBQyxVQUFVLENBQ3RCLEtBQXdCLEVBQ3hCLFVBQXVCLEVBQ3ZCLFFBQW9CLEVBQ3BCLE1BQWdCO1FBRWhCLHVEQUF1RDtRQUN2RCxJQUFJLEtBQUssSUFBSSxVQUFVLElBQUksUUFBUSxFQUFFLENBQUM7WUFDcEMsSUFBSSxPQUFPLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQztZQUN2QyxJQUFJLE1BQU0sSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUM1QyxPQUFPLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztZQUMvQixDQUFDO1lBQ0QsdUJBQXVCO1lBQ3ZCLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNoQixNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO29CQUNuRCxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN4RSxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRCxjQUFjO1lBQ2QsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3ZCLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JFLENBQUM7WUFDRCxpQkFBaUI7WUFDakIsSUFBSSxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQzFCLEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzNFLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVNLE1BQU0sQ0FBQyxZQUFZLENBQ3hCLEtBQXdCLEVBQ3hCLFlBQXVCLEVBQ3ZCLGVBQTBCO1FBRTFCLHdEQUF3RDtRQUN4RCxJQUFJLFlBQVksS0FBSyxTQUFTLElBQUksWUFBWSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3hELFlBQVksR0FBRyxFQUFFLENBQUM7UUFDcEIsQ0FBQztRQUNELElBQUksZUFBZSxLQUFLLFNBQVMsSUFBSSxlQUFlLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDOUQsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUN2QixDQUFDO1FBQ0QsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxZQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGVBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUNELE1BQU0sT0FBTyxHQUFxQyxFQUFFLENBQUM7UUFDckQsNkNBQTZDO1FBQzdDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNqQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO1FBRUgsd0RBQXdEO1FBQ3hELGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNwQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBd0I7UUFDaEQsTUFBTSxNQUFNLEdBQXVDLEVBQUUsQ0FBQztRQUN0RCxxREFBcUQ7UUFDckQsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLEtBQUssTUFBTSxHQUFHLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUM5QixNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkQsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFXO1FBQ3BDLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDO1lBQ3pDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgUmVuZGVyZXIyLCBSZW5kZXJlclN0eWxlRmxhZ3MyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN0eWxlIH0gZnJvbSAnLi4vYXBpL21vZGVsL3N0eWxlJztcclxuXHJcbmV4cG9ydCBjbGFzcyBTbWFydFN0eWxlVXRpbGl0eSB7XHJcbiAgLy8gc3RhdGljIGNvdW50ZXJBcHBseVN0eWxlID0gMDtcclxuICAvLyBzdGF0aWMgY291bnRlck5nQ2xhc3NlcyA9IDA7XHJcbiAgLy8gc3RhdGljIGNvdW50ZXJOZ1N0eWxlID0gMDtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBhcHBseVN0eWxlKFxyXG4gICAgc3R5bGU6IFN0eWxlIHwgdW5kZWZpbmVkLFxyXG4gICAgZWxlbWVudFJlZj86IEVsZW1lbnRSZWYsXHJcbiAgICByZW5kZXJlcj86IFJlbmRlcmVyMixcclxuICAgIHBhcmVudD86IGJvb2xlYW5cclxuICApIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCdhcHBseVN0eWxlJywgdGhpcy5jb3VudGVyQXBwbHlTdHlsZSsrKTtcclxuICAgIGlmIChzdHlsZSAmJiBlbGVtZW50UmVmICYmIHJlbmRlcmVyKSB7XHJcbiAgICAgIGxldCBlbGVtZW50ID0gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgICBpZiAocGFyZW50ICYmIGVsZW1lbnQgJiYgZWxlbWVudC5wYXJlbnROb2RlKSB7XHJcbiAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQucGFyZW50Tm9kZTtcclxuICAgICAgfVxyXG4gICAgICAvLyBjc3Mgc3R5bGUgcHJvcGVydGllc1xyXG4gICAgICBpZiAoc3R5bGUuc3R5bGUpIHtcclxuICAgICAgICBPYmplY3QuZW50cmllcyhzdHlsZS5zdHlsZSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XHJcbiAgICAgICAgICByZW5kZXJlci5zZXRTdHlsZShlbGVtZW50LCBrZXksIHZhbHVlLCBSZW5kZXJlclN0eWxlRmxhZ3MyLkltcG9ydGFudCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gYWRkIGNsYXNzZXNcclxuICAgICAgaWYgKHN0eWxlLmNsYXNzZXNUb0FkZCkge1xyXG4gICAgICAgIHN0eWxlLmNsYXNzZXNUb0FkZC5mb3JFYWNoKChjbCkgPT4gcmVuZGVyZXIuYWRkQ2xhc3MoZWxlbWVudCwgY2wpKTtcclxuICAgICAgfVxyXG4gICAgICAvLyByZW1vdmUgY2xhc3Nlc1xyXG4gICAgICBpZiAoc3R5bGUuY2xhc3Nlc1RvUmVtb3ZlKSB7XHJcbiAgICAgICAgc3R5bGUuY2xhc3Nlc1RvUmVtb3ZlLmZvckVhY2goKGNsKSA9PiByZW5kZXJlci5yZW1vdmVDbGFzcyhlbGVtZW50LCBjbCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGdldE5nQ2xhc3NlcyhcclxuICAgIHN0eWxlOiBTdHlsZSB8IHVuZGVmaW5lZCxcclxuICAgIGNsYXNzZXNUb0FkZD86IHN0cmluZ1tdLFxyXG4gICAgY2xhc3Nlc1RvUmVtb3ZlPzogc3RyaW5nW11cclxuICApIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCdnZXROZ0NsYXNzZXMnLCB0aGlzLmNvdW50ZXJOZ0NsYXNzZXMrKyk7XHJcbiAgICBpZiAoY2xhc3Nlc1RvQWRkID09PSB1bmRlZmluZWQgfHwgY2xhc3Nlc1RvQWRkID09PSBudWxsKSB7XHJcbiAgICAgIGNsYXNzZXNUb0FkZCA9IFtdO1xyXG4gICAgfVxyXG4gICAgaWYgKGNsYXNzZXNUb1JlbW92ZSA9PT0gdW5kZWZpbmVkIHx8IGNsYXNzZXNUb1JlbW92ZSA9PT0gbnVsbCkge1xyXG4gICAgICBjbGFzc2VzVG9SZW1vdmUgPSBbXTtcclxuICAgIH1cclxuICAgIGlmIChzdHlsZSkge1xyXG4gICAgICBzdHlsZS5jbGFzc2VzVG9BZGQuZm9yRWFjaCgocykgPT4gY2xhc3Nlc1RvQWRkIS5wdXNoKHMpKTtcclxuICAgICAgc3R5bGUuY2xhc3Nlc1RvUmVtb3ZlLmZvckVhY2goKHMpID0+IGNsYXNzZXNUb1JlbW92ZSEucHVzaChzKSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjbGFzc2VzOiB7IFtjbGFzc05hbWU6IHN0cmluZ106IGJvb2xlYW4gfSA9IHt9O1xyXG4gICAgLy8gQWRkIGNsYXNzZXMgdG8gdGhlIG9iamVjdCB3aXRoIHRydWUgdmFsdWVzXHJcbiAgICBjbGFzc2VzVG9BZGQuZm9yRWFjaCgoY2xhc3NOYW1lKSA9PiB7XHJcbiAgICAgIGNsYXNzZXNbY2xhc3NOYW1lXSA9IHRydWU7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBBZGQgY2xhc3NlcyB0byByZW1vdmUgdG8gdGhlIG9iamVjdCB3aXRoIGZhbHNlIHZhbHVlc1xyXG4gICAgY2xhc3Nlc1RvUmVtb3ZlLmZvckVhY2goKGNsYXNzTmFtZSkgPT4ge1xyXG4gICAgICBjbGFzc2VzW2NsYXNzTmFtZV0gPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGNsYXNzZXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGdldE5nU3R5bGVzKHN0eWxlOiBTdHlsZSB8IHVuZGVmaW5lZCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIH0ge1xyXG4gICAgY29uc3Qgc3R5bGVzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB9ID0ge307XHJcbiAgICAvLyBjb25zb2xlLmxvZygnZ2V0TmdTdHlsZXMnLCB0aGlzLmNvdW50ZXJOZ1N0eWxlKyspO1xyXG4gICAgaWYgKHN0eWxlKSB7XHJcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIHN0eWxlLnN0eWxlKSB7XHJcbiAgICAgICAgc3R5bGVzW3RoaXMudG9DYW1lbENhc2Uoa2V5KV0gPSBzdHlsZS5zdHlsZVtrZXldO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3R5bGVzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgdG9DYW1lbENhc2UoY3NzOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGNzcy5yZXBsYWNlKC8tKFthLXpdKS9nLCBmdW5jdGlvbiAoZykge1xyXG4gICAgICByZXR1cm4gZ1sxXS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtc3R5bGUtdXRpbGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3ZpZXctY29udGV4dC91dGlsaXR5L3NtYXJ0LXN0eWxlLXV0aWxpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF5QixtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczRSxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLGdDQUFnQztJQUNoQywrQkFBK0I7SUFDL0IsNkJBQTZCO0lBRXRCLE1BQU0sQ0FBQyxVQUFVLENBQ3RCLEtBQXdCLEVBQ3hCLFVBQXVCLEVBQ3ZCLFFBQW9CLEVBQ3BCLE1BQWdCO1FBRWhCLHVEQUF1RDtRQUN2RCxJQUFJLEtBQUssSUFBSSxVQUFVLElBQUksUUFBUSxFQUFFLENBQUM7WUFDcEMsSUFBSSxPQUFPLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQztZQUN2QyxJQUFJLE1BQU0sSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUM1QyxPQUFPLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztZQUMvQixDQUFDO1lBQ0QsdUJBQXVCO1lBQ3ZCLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNoQixNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO29CQUNuRCxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN4RSxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRCxjQUFjO1lBQ2QsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3ZCLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JFLENBQUM7WUFDRCxpQkFBaUI7WUFDakIsSUFBSSxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQzFCLEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzNFLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVNLE1BQU0sQ0FBQyxZQUFZLENBQ3hCLEtBQXdCLEVBQ3hCLFlBQXVCLEVBQ3ZCLGVBQTBCO1FBRTFCLHdEQUF3RDtRQUN4RCxJQUFJLFlBQVksS0FBSyxTQUFTLElBQUksWUFBWSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3hELFlBQVksR0FBRyxFQUFFLENBQUM7UUFDcEIsQ0FBQztRQUNELElBQUksZUFBZSxLQUFLLFNBQVMsSUFBSSxlQUFlLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDOUQsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUN2QixDQUFDO1FBQ0QsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxZQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGVBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUNELE1BQU0sT0FBTyxHQUFxQyxFQUFFLENBQUM7UUFDckQsNkNBQTZDO1FBQzdDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNqQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO1FBRUgsd0RBQXdEO1FBQ3hELGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNwQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBd0I7UUFDaEQsTUFBTSxNQUFNLEdBQXVDLEVBQUUsQ0FBQztRQUN0RCxxREFBcUQ7UUFDckQsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLEtBQUssTUFBTSxHQUFHLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUM5QixNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkQsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFXO1FBQ3BDLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDO1lBQ3pDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgUmVuZGVyZXIyLCBSZW5kZXJlclN0eWxlRmxhZ3MyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdHlsZSB9IGZyb20gJy4uL2FwaS9tb2RlbC9zdHlsZSc7XG5cbmV4cG9ydCBjbGFzcyBTbWFydFN0eWxlVXRpbGl0eSB7XG4gIC8vIHN0YXRpYyBjb3VudGVyQXBwbHlTdHlsZSA9IDA7XG4gIC8vIHN0YXRpYyBjb3VudGVyTmdDbGFzc2VzID0gMDtcbiAgLy8gc3RhdGljIGNvdW50ZXJOZ1N0eWxlID0gMDtcblxuICBwdWJsaWMgc3RhdGljIGFwcGx5U3R5bGUoXG4gICAgc3R5bGU6IFN0eWxlIHwgdW5kZWZpbmVkLFxuICAgIGVsZW1lbnRSZWY/OiBFbGVtZW50UmVmLFxuICAgIHJlbmRlcmVyPzogUmVuZGVyZXIyLFxuICAgIHBhcmVudD86IGJvb2xlYW5cbiAgKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ2FwcGx5U3R5bGUnLCB0aGlzLmNvdW50ZXJBcHBseVN0eWxlKyspO1xuICAgIGlmIChzdHlsZSAmJiBlbGVtZW50UmVmICYmIHJlbmRlcmVyKSB7XG4gICAgICBsZXQgZWxlbWVudCA9IGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgIGlmIChwYXJlbnQgJiYgZWxlbWVudCAmJiBlbGVtZW50LnBhcmVudE5vZGUpIHtcbiAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQucGFyZW50Tm9kZTtcbiAgICAgIH1cbiAgICAgIC8vIGNzcyBzdHlsZSBwcm9wZXJ0aWVzXG4gICAgICBpZiAoc3R5bGUuc3R5bGUpIHtcbiAgICAgICAgT2JqZWN0LmVudHJpZXMoc3R5bGUuc3R5bGUpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgIHJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnQsIGtleSwgdmFsdWUsIFJlbmRlcmVyU3R5bGVGbGFnczIuSW1wb3J0YW50KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICAvLyBhZGQgY2xhc3Nlc1xuICAgICAgaWYgKHN0eWxlLmNsYXNzZXNUb0FkZCkge1xuICAgICAgICBzdHlsZS5jbGFzc2VzVG9BZGQuZm9yRWFjaCgoY2wpID0+IHJlbmRlcmVyLmFkZENsYXNzKGVsZW1lbnQsIGNsKSk7XG4gICAgICB9XG4gICAgICAvLyByZW1vdmUgY2xhc3Nlc1xuICAgICAgaWYgKHN0eWxlLmNsYXNzZXNUb1JlbW92ZSkge1xuICAgICAgICBzdHlsZS5jbGFzc2VzVG9SZW1vdmUuZm9yRWFjaCgoY2wpID0+IHJlbmRlcmVyLnJlbW92ZUNsYXNzKGVsZW1lbnQsIGNsKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXROZ0NsYXNzZXMoXG4gICAgc3R5bGU6IFN0eWxlIHwgdW5kZWZpbmVkLFxuICAgIGNsYXNzZXNUb0FkZD86IHN0cmluZ1tdLFxuICAgIGNsYXNzZXNUb1JlbW92ZT86IHN0cmluZ1tdXG4gICkge1xuICAgIC8vIGNvbnNvbGUubG9nKCdnZXROZ0NsYXNzZXMnLCB0aGlzLmNvdW50ZXJOZ0NsYXNzZXMrKyk7XG4gICAgaWYgKGNsYXNzZXNUb0FkZCA9PT0gdW5kZWZpbmVkIHx8IGNsYXNzZXNUb0FkZCA9PT0gbnVsbCkge1xuICAgICAgY2xhc3Nlc1RvQWRkID0gW107XG4gICAgfVxuICAgIGlmIChjbGFzc2VzVG9SZW1vdmUgPT09IHVuZGVmaW5lZCB8fCBjbGFzc2VzVG9SZW1vdmUgPT09IG51bGwpIHtcbiAgICAgIGNsYXNzZXNUb1JlbW92ZSA9IFtdO1xuICAgIH1cbiAgICBpZiAoc3R5bGUpIHtcbiAgICAgIHN0eWxlLmNsYXNzZXNUb0FkZC5mb3JFYWNoKChzKSA9PiBjbGFzc2VzVG9BZGQhLnB1c2gocykpO1xuICAgICAgc3R5bGUuY2xhc3Nlc1RvUmVtb3ZlLmZvckVhY2goKHMpID0+IGNsYXNzZXNUb1JlbW92ZSEucHVzaChzKSk7XG4gICAgfVxuICAgIGNvbnN0IGNsYXNzZXM6IHsgW2NsYXNzTmFtZTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XG4gICAgLy8gQWRkIGNsYXNzZXMgdG8gdGhlIG9iamVjdCB3aXRoIHRydWUgdmFsdWVzXG4gICAgY2xhc3Nlc1RvQWRkLmZvckVhY2goKGNsYXNzTmFtZSkgPT4ge1xuICAgICAgY2xhc3Nlc1tjbGFzc05hbWVdID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIC8vIEFkZCBjbGFzc2VzIHRvIHJlbW92ZSB0byB0aGUgb2JqZWN0IHdpdGggZmFsc2UgdmFsdWVzXG4gICAgY2xhc3Nlc1RvUmVtb3ZlLmZvckVhY2goKGNsYXNzTmFtZSkgPT4ge1xuICAgICAgY2xhc3Nlc1tjbGFzc05hbWVdID0gZmFsc2U7XG4gICAgfSk7XG4gICAgcmV0dXJuIGNsYXNzZXM7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldE5nU3R5bGVzKHN0eWxlOiBTdHlsZSB8IHVuZGVmaW5lZCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIH0ge1xuICAgIGNvbnN0IHN0eWxlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfSA9IHt9O1xuICAgIC8vIGNvbnNvbGUubG9nKCdnZXROZ1N0eWxlcycsIHRoaXMuY291bnRlck5nU3R5bGUrKyk7XG4gICAgaWYgKHN0eWxlKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBzdHlsZS5zdHlsZSkge1xuICAgICAgICBzdHlsZXNbdGhpcy50b0NhbWVsQ2FzZShrZXkpXSA9IHN0eWxlLnN0eWxlW2tleV07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdHlsZXM7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyB0b0NhbWVsQ2FzZShjc3M6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNzcy5yZXBsYWNlKC8tKFthLXpdKS9nLCBmdW5jdGlvbiAoZykge1xuICAgICAgcmV0dXJuIGdbMV0udG9VcHBlckNhc2UoKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,4 +1,4 @@
1
1
  export * from './value.service';
2
2
  import { ValueService } from './value.service';
3
3
  export const APIS = [ValueService];
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvdmlldy1jb250ZXh0L3ZhbHVlLWFwaS9hcGkvYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi92YWx1ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmFsdWVTZXJ2aWNlIH0gZnJvbSAnLi92YWx1ZS5zZXJ2aWNlJztcclxuZXhwb3J0IGNvbnN0IEFQSVMgPSBbVmFsdWVTZXJ2aWNlXTtcclxuIl19
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvdmlldy1jb250ZXh0L3ZhbHVlLWFwaS9hcGkvYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi92YWx1ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbHVlU2VydmljZSB9IGZyb20gJy4vdmFsdWUuc2VydmljZSc7XG5leHBvcnQgY29uc3QgQVBJUyA9IFtWYWx1ZVNlcnZpY2VdO1xuIl19