@smartbit4all/ng-client 6.0.51 → 6.0.52

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 (504) 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 +1 -1
  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 +1 -1
  31. package/esm2022/lib/session/smart-timer/smart-session-timer.component.mjs +3 -3
  32. package/esm2022/lib/shared/projects.mjs +1 -1
  33. package/esm2022/lib/shared/shared.module.mjs +1 -1
  34. package/esm2022/lib/shared/smart-tooltip.directive.mjs +1 -1
  35. package/esm2022/lib/shared/smarttable.date-pipe.mjs +1 -1
  36. package/esm2022/lib/smart-client/projects.mjs +1 -1
  37. package/esm2022/lib/smart-client/smart-component-api-client.mjs +1 -1
  38. package/esm2022/lib/smart-client/smart-file-uploader/smart-file-uploader.component.mjs +3 -3
  39. package/esm2022/lib/smart-client/smart.component.mjs +1 -1
  40. package/esm2022/lib/smart-client/smart.service.mjs +1 -1
  41. package/esm2022/lib/smart-component-layout/api/api/api.mjs +1 -1
  42. package/esm2022/lib/smart-component-layout/api/api/default.service.mjs +1 -1
  43. package/esm2022/lib/smart-component-layout/api/api.module.mjs +1 -1
  44. package/esm2022/lib/smart-component-layout/api/configuration.mjs +1 -1
  45. package/esm2022/lib/smart-component-layout/api/encoder.mjs +1 -1
  46. package/esm2022/lib/smart-component-layout/api/index.mjs +1 -1
  47. package/esm2022/lib/smart-component-layout/api/model/componentType.mjs +1 -1
  48. package/esm2022/lib/smart-component-layout/api/model/componentWidgetType.mjs +1 -1
  49. package/esm2022/lib/smart-component-layout/api/model/layoutDefinitionDescriptor.mjs +1 -1
  50. package/esm2022/lib/smart-component-layout/api/model/layoutDirection.mjs +1 -1
  51. package/esm2022/lib/smart-component-layout/api/model/models.mjs +1 -1
  52. package/esm2022/lib/smart-component-layout/api/model/smartComponentLayoutDefinition.mjs +1 -1
  53. package/esm2022/lib/smart-component-layout/api/model/smartComponentWidgetDefinition.mjs +1 -1
  54. package/esm2022/lib/smart-component-layout/api/model/toolbarAlignment.mjs +1 -1
  55. package/esm2022/lib/smart-component-layout/api/model/toolbarDirection.mjs +1 -1
  56. package/esm2022/lib/smart-component-layout/api/model/toolbarProperties.mjs +1 -1
  57. package/esm2022/lib/smart-component-layout/api/param.mjs +1 -1
  58. package/esm2022/lib/smart-component-layout/api/variables.mjs +1 -1
  59. package/esm2022/lib/smart-component-layout/projects.mjs +1 -1
  60. package/esm2022/lib/smart-component-layout/smart-component-layout-utility.mjs +1 -1
  61. package/esm2022/lib/smart-component-layout/smart-component-layout.component.mjs +3 -3
  62. package/esm2022/lib/smart-component-layout/smart-component-layout.module.mjs +1 -1
  63. package/esm2022/lib/smart-diagram/api/api/api.mjs +1 -1
  64. package/esm2022/lib/smart-diagram/api/api/diagramService.service.mjs +1 -1
  65. package/esm2022/lib/smart-diagram/api/api.module.mjs +1 -1
  66. package/esm2022/lib/smart-diagram/api/configuration.mjs +1 -1
  67. package/esm2022/lib/smart-diagram/api/encoder.mjs +1 -1
  68. package/esm2022/lib/smart-diagram/api/index.mjs +1 -1
  69. package/esm2022/lib/smart-diagram/api/model/diagramColor.mjs +1 -1
  70. package/esm2022/lib/smart-diagram/api/model/diagramDataContainer.mjs +1 -1
  71. package/esm2022/lib/smart-diagram/api/model/diagramDataItem.mjs +1 -1
  72. package/esm2022/lib/smart-diagram/api/model/diagramDataSet.mjs +1 -1
  73. package/esm2022/lib/smart-diagram/api/model/diagramDescriptor.mjs +1 -1
  74. package/esm2022/lib/smart-diagram/api/model/diagramModel.mjs +1 -1
  75. package/esm2022/lib/smart-diagram/api/model/diagramShape.mjs +1 -1
  76. package/esm2022/lib/smart-diagram/api/model/drawTime.mjs +1 -1
  77. package/esm2022/lib/smart-diagram/api/model/labelText.mjs +1 -1
  78. package/esm2022/lib/smart-diagram/api/model/models.mjs +1 -1
  79. package/esm2022/lib/smart-diagram/api/param.mjs +1 -1
  80. package/esm2022/lib/smart-diagram/api/variables.mjs +1 -1
  81. package/esm2022/lib/smart-diagram/component/default-smart-diagram-options.provider.mjs +1 -1
  82. package/esm2022/lib/smart-diagram/component/smart-diagram.component.mjs +22 -22
  83. package/esm2022/lib/smart-diagram/component/smart-diagram.module.mjs +1 -1
  84. package/esm2022/lib/smart-diagram/component/smart-diagram.util.mjs +1 -1
  85. package/esm2022/lib/smart-diagram/projects.mjs +1 -1
  86. package/esm2022/lib/smart-dialog/projects.mjs +1 -1
  87. package/esm2022/lib/smart-dialog/smartdialog.component.mjs +3 -3
  88. package/esm2022/lib/smart-dialog/smartdialog.model.mjs +1 -1
  89. package/esm2022/lib/smart-dialog/smartdialog.module.mjs +1 -1
  90. package/esm2022/lib/smart-dialog/smartdialog.service.mjs +1 -1
  91. package/esm2022/lib/smart-expandable-section/expandable-section.component.mjs +3 -3
  92. package/esm2022/lib/smart-expandable-section/expandable-section.model.mjs +1 -1
  93. package/esm2022/lib/smart-expandable-section/projects.mjs +1 -1
  94. package/esm2022/lib/smart-expandable-section/smart-expandable-section.module.mjs +1 -1
  95. package/esm2022/lib/smart-expandable-section/smart-expandable-section.service.mjs +1 -1
  96. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBoolOperator.mjs +1 -1
  97. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBuilderField.mjs +1 -1
  98. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBuilderGroup.mjs +1 -1
  99. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBuilderModel.mjs +1 -1
  100. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionData.mjs +1 -1
  101. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionDataType.mjs +1 -1
  102. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionField.mjs +1 -1
  103. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionFieldList.mjs +1 -1
  104. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionFieldWidgetType.mjs +1 -1
  105. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionList.mjs +1 -1
  106. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionOperandData.mjs +1 -1
  107. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionOperation.mjs +1 -1
  108. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionOrderBy.mjs +1 -1
  109. package/esm2022/lib/smart-filter/api/filter/model/model.mjs +1 -1
  110. package/esm2022/lib/smart-filter/api/filter/model/searchIndexObjectDefinitionData.mjs +1 -1
  111. package/esm2022/lib/smart-filter/api/filter/model/searchIndexPropertyDefinitionData.mjs +1 -1
  112. package/esm2022/lib/smart-filter/api/value/model/value.mjs +1 -1
  113. package/esm2022/lib/smart-filter/projects.mjs +1 -1
  114. package/esm2022/lib/smart-filter/smart-filter/components/smart-filter-expression-field/smart-filter-expression-field.component.mjs +1 -1
  115. package/esm2022/lib/smart-filter/smart-filter/components/smart-filter-simple/components/smart-filter-simple-field/smart-filter-simple-field.component.mjs +3 -3
  116. package/esm2022/lib/smart-filter/smart-filter/components/smart-filter-simple/smart-filter-simple.component.mjs +3 -3
  117. package/esm2022/lib/smart-filter/smart-filter/smart-filter.component.mjs +3 -3
  118. package/esm2022/lib/smart-filter/smart-filter/smart-filter.service.mjs +1 -1
  119. package/esm2022/lib/smart-filter/smart-filter.model.mjs +1 -1
  120. package/esm2022/lib/smart-filter/smart-filter.module.mjs +1 -1
  121. package/esm2022/lib/smart-filter-editor/api/api/api.mjs +1 -1
  122. package/esm2022/lib/smart-filter-editor/api/api/filter.service.mjs +1 -1
  123. package/esm2022/lib/smart-filter-editor/api/api.module.mjs +1 -1
  124. package/esm2022/lib/smart-filter-editor/api/configuration.mjs +1 -1
  125. package/esm2022/lib/smart-filter-editor/api/encoder.mjs +1 -1
  126. package/esm2022/lib/smart-filter-editor/api/index.mjs +1 -1
  127. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBoolOperator.mjs +1 -1
  128. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilder.mjs +1 -1
  129. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderApiConfig.mjs +1 -1
  130. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderField.mjs +1 -1
  131. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderGroup.mjs +1 -1
  132. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderModel.mjs +1 -1
  133. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderUiModel.mjs +1 -1
  134. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionData.mjs +1 -1
  135. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionDataType.mjs +1 -1
  136. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionField.mjs +1 -1
  137. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldEditor.mjs +1 -1
  138. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldList.mjs +1 -1
  139. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldWidgetType.mjs +1 -1
  140. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionList.mjs +1 -1
  141. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOperandData.mjs +1 -1
  142. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOperation.mjs +1 -1
  143. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOrderBy.mjs +1 -1
  144. package/esm2022/lib/smart-filter-editor/api/model/models.mjs +1 -1
  145. package/esm2022/lib/smart-filter-editor/api/model/searchPageConfig.mjs +1 -1
  146. package/esm2022/lib/smart-filter-editor/api/model/smartFilterType.mjs +1 -1
  147. package/esm2022/lib/smart-filter-editor/api/param.mjs +1 -1
  148. package/esm2022/lib/smart-filter-editor/api/variables.mjs +1 -1
  149. package/esm2022/lib/smart-filter-editor/filter-utils.mjs +1 -1
  150. package/esm2022/lib/smart-filter-editor/filterExpressionBuilderApiActions.mjs +1 -1
  151. package/esm2022/lib/smart-filter-editor/project.mjs +1 -1
  152. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/advanced/advanced-relation-button/advanced-relation-button.component.mjs +3 -3
  153. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/advanced/advanced-smart-filter-expression-item/advanced-smart-filter-expression-item.component.mjs +3 -3
  154. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/advanced/expression-editor-dialog/expression-editor-dialog.component.mjs +3 -3
  155. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/advanced/expression-editor-dialog/expression-editor-dialog.service.mjs +1 -1
  156. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-item/smart-filter-expression-item.component.mjs +3 -3
  157. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-items/smart-filter-expression-items.component.mjs +3 -3
  158. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/smart-filter-editor-content.component.mjs +3 -3
  159. package/esm2022/lib/smart-filter-editor/smart-filter-editor.model.mjs +1 -1
  160. package/esm2022/lib/smart-filter-editor/smart-filter-editor.module.mjs +1 -1
  161. package/esm2022/lib/smart-filter-editor/smart-filter-editor.service.mjs +1 -1
  162. package/esm2022/lib/smart-filter-editor/smart-filter-params/components/smart-filter-param/smart-filter-param.component.mjs +3 -3
  163. package/esm2022/lib/smart-filter-editor/smart-filter-params/smart-filter-params.component.mjs +3 -3
  164. package/esm2022/lib/smart-form/api/api/api.mjs +1 -1
  165. package/esm2022/lib/smart-form/api/api/default.service.mjs +1 -1
  166. package/esm2022/lib/smart-form/api/api.module.mjs +1 -1
  167. package/esm2022/lib/smart-form/api/configuration.mjs +1 -1
  168. package/esm2022/lib/smart-form/api/encoder.mjs +1 -1
  169. package/esm2022/lib/smart-form/api/index.mjs +1 -1
  170. package/esm2022/lib/smart-form/api/model/dateFieldProperties.mjs +1 -1
  171. package/esm2022/lib/smart-form/api/model/divProperties.mjs +1 -1
  172. package/esm2022/lib/smart-form/api/model/fileUploaderProperties.mjs +1 -1
  173. package/esm2022/lib/smart-form/api/model/imageProperties.mjs +1 -1
  174. package/esm2022/lib/smart-form/api/model/models.mjs +1 -1
  175. package/esm2022/lib/smart-form/api/model/multiFileUploaderProperties.mjs +1 -1
  176. package/esm2022/lib/smart-form/api/model/propertyMapping.mjs +1 -1
  177. package/esm2022/lib/smart-form/api/model/recordingUploaderProperties.mjs +1 -1
  178. package/esm2022/lib/smart-form/api/model/selectionDefinition.mjs +1 -1
  179. package/esm2022/lib/smart-form/api/model/smartFormInputMode.mjs +1 -1
  180. package/esm2022/lib/smart-form/api/model/smartFormWidgetDirection.mjs +1 -1
  181. package/esm2022/lib/smart-form/api/model/smartFormWidgetType.mjs +1 -1
  182. package/esm2022/lib/smart-form/api/model/smartLayoutDefinition.mjs +1 -1
  183. package/esm2022/lib/smart-form/api/model/smartMatrixModel.mjs +1 -1
  184. package/esm2022/lib/smart-form/api/model/smartWidgetDefinition.mjs +1 -1
  185. package/esm2022/lib/smart-form/api/model/smartWidgetHint.mjs +1 -1
  186. package/esm2022/lib/smart-form/api/model/sortDefinition.mjs +1 -1
  187. package/esm2022/lib/smart-form/api/model/textBoxProperties.mjs +1 -1
  188. package/esm2022/lib/smart-form/api/model/textFieldProperties.mjs +1 -1
  189. package/esm2022/lib/smart-form/api/model/valueChangeMode.mjs +1 -1
  190. package/esm2022/lib/smart-form/api/param.mjs +1 -1
  191. package/esm2022/lib/smart-form/api/variables.mjs +1 -1
  192. package/esm2022/lib/smart-form/highlightMacthingString-pipe.mjs +1 -1
  193. package/esm2022/lib/smart-form/projects.mjs +1 -1
  194. package/esm2022/lib/smart-form/services/smartform.layout-definition.service.mjs +1 -1
  195. package/esm2022/lib/smart-form/services/smartform.service.mjs +1 -1
  196. package/esm2022/lib/smart-form/smartfileuploader/large-file-snack-bar/large-file-snack-bar.component.mjs +3 -3
  197. package/esm2022/lib/smart-form/smartfileuploader/smartfileuploader.component.mjs +3 -3
  198. package/esm2022/lib/smart-form/smartfileuploader/smartfileuploader.model.mjs +1 -1
  199. package/esm2022/lib/smart-form/smartform.component.mjs +3 -3
  200. package/esm2022/lib/smart-form/smartform.form-model.mjs +1 -1
  201. package/esm2022/lib/smart-form/smartform.model.mjs +1 -1
  202. package/esm2022/lib/smart-form/widgets/components/smart-file-editor/smart-file-editor.component.mjs +3 -3
  203. package/esm2022/lib/smart-form/widgets/components/smart-month-picker/smart-month-picker.component.mjs +3 -3
  204. package/esm2022/lib/smart-form/widgets/components/smart-multi-file-editor/smart-multi-file-editor.component.mjs +3 -3
  205. package/esm2022/lib/smart-form/widgets/components/smart-voice-recorder/smart-voice-recorder.component.mjs +3 -3
  206. package/esm2022/lib/smart-form/widgets/directives/comparable-dropdown.directive.mjs +1 -1
  207. package/esm2022/lib/smart-form/widgets/directives/comparable-multiselect.directive.mjs +1 -1
  208. package/esm2022/lib/smart-form/widgets/smartformwidget/smartformwidget.component.mjs +3 -3
  209. package/esm2022/lib/smart-form/widgets/smartformwidget/sortable-widget/sortable-widget.component.mjs +3 -3
  210. package/esm2022/lib/smart-form/widgets/smartformwidget/trackCaps.directive.mjs +1 -1
  211. package/esm2022/lib/smart-generic-pages/acl-editing-view/acl-editing-view.component.mjs +3 -3
  212. package/esm2022/lib/smart-generic-pages/api/platform/acl/model/aCL.mjs +1 -1
  213. package/esm2022/lib/smart-generic-pages/api/platform/acl/model/aCLEntry.mjs +1 -1
  214. package/esm2022/lib/smart-generic-pages/api/platform/acl/model/objectValidationSeverity.mjs +1 -1
  215. package/esm2022/lib/smart-generic-pages/api/platform/acl/model/subject.mjs +1 -1
  216. package/esm2022/lib/smart-generic-pages/api/platform/api-default/objectHistoryRangeData.mjs +1 -1
  217. package/esm2022/lib/smart-generic-pages/api/platform/searchpage/model/searchPageModel.mjs +1 -1
  218. package/esm2022/lib/smart-generic-pages/api/platform/subjectselector/model/subjectSelectorPageModel.mjs +1 -1
  219. package/esm2022/lib/smart-generic-pages/api/platform/validation/model/validationItem.mjs +1 -1
  220. package/esm2022/lib/smart-generic-pages/api/platform/validation/model/validationResultPageModel.mjs +1 -1
  221. package/esm2022/lib/smart-generic-pages/generic-page/generic-page.component.mjs +3 -3
  222. package/esm2022/lib/smart-generic-pages/invalid-smartlink/invalid-smartlink.component.mjs +3 -3
  223. package/esm2022/lib/smart-generic-pages/no-permission-page/no-permission-page.component.mjs +3 -3
  224. package/esm2022/lib/smart-generic-pages/projects.mjs +1 -1
  225. package/esm2022/lib/smart-generic-pages/search-page/search-page.component.mjs +3 -3
  226. package/esm2022/lib/smart-generic-pages/smart-generic-pages.module.mjs +1 -1
  227. package/esm2022/lib/smart-generic-pages/subject-selector/subject-selector.component.mjs +3 -3
  228. package/esm2022/lib/smart-generic-pages/validation-result-page/validation-result-page.component.mjs +3 -3
  229. package/esm2022/lib/smart-grid/api/grid-api/api/api.mjs +1 -1
  230. package/esm2022/lib/smart-grid/api/grid-api/api/grid.service.mjs +1 -1
  231. package/esm2022/lib/smart-grid/api/grid-api/api.module.mjs +1 -1
  232. package/esm2022/lib/smart-grid/api/grid-api/configuration.mjs +1 -1
  233. package/esm2022/lib/smart-grid/api/grid-api/encoder.mjs +1 -1
  234. package/esm2022/lib/smart-grid/api/grid-api/index.mjs +1 -1
  235. package/esm2022/lib/smart-grid/api/grid-api/model/gridColumnContentType.mjs +1 -1
  236. package/esm2022/lib/smart-grid/api/grid-api/model/gridColumnMeta.mjs +1 -1
  237. package/esm2022/lib/smart-grid/api/grid-api/model/gridDataAccessConfig.mjs +1 -1
  238. package/esm2022/lib/smart-grid/api/grid-api/model/gridExportDescriptor.mjs +1 -1
  239. package/esm2022/lib/smart-grid/api/grid-api/model/gridModel.mjs +1 -1
  240. package/esm2022/lib/smart-grid/api/grid-api/model/gridPage.mjs +1 -1
  241. package/esm2022/lib/smart-grid/api/grid-api/model/gridRow.mjs +1 -1
  242. package/esm2022/lib/smart-grid/api/grid-api/model/gridRowLayoutDescriptor.mjs +1 -1
  243. package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionChange.mjs +1 -1
  244. package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionMode.mjs +1 -1
  245. package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionType.mjs +1 -1
  246. package/esm2022/lib/smart-grid/api/grid-api/model/gridServerModel.mjs +1 -1
  247. package/esm2022/lib/smart-grid/api/grid-api/model/gridUpdateData.mjs +1 -1
  248. package/esm2022/lib/smart-grid/api/grid-api/model/gridView.mjs +1 -1
  249. package/esm2022/lib/smart-grid/api/grid-api/model/gridViewDescriptor.mjs +1 -1
  250. package/esm2022/lib/smart-grid/api/grid-api/model/models.mjs +1 -1
  251. package/esm2022/lib/smart-grid/api/grid-api/param.mjs +1 -1
  252. package/esm2022/lib/smart-grid/api/grid-api/variables.mjs +1 -1
  253. package/esm2022/lib/smart-grid/components/expandable-grid/expandable-grid.component.mjs +3 -3
  254. package/esm2022/lib/smart-grid/components/generic-component/expanded-row-renderer.component.mjs +3 -3
  255. package/esm2022/lib/smart-grid/components/smart-grid-card/smart-grid-card.component.mjs +3 -3
  256. package/esm2022/lib/smart-grid/components/table-layout-definer/table-layout-definer.component.mjs +3 -3
  257. package/esm2022/lib/smart-grid/models/model.mjs +1 -1
  258. package/esm2022/lib/smart-grid/projects.mjs +1 -1
  259. package/esm2022/lib/smart-grid/smart-grid-toolbar-util.mjs +1 -1
  260. package/esm2022/lib/smart-grid/smart-grid.component.mjs +3 -3
  261. package/esm2022/lib/smart-grid/smart-grid.module.mjs +1 -1
  262. package/esm2022/lib/smart-grid/smart-grid.service.mjs +1 -1
  263. package/esm2022/lib/smart-icon/projects.mjs +1 -1
  264. package/esm2022/lib/smart-icon/smart-icon/smart-icon.component.mjs +3 -3
  265. package/esm2022/lib/smart-icon/smart-icon/ui-badge/ui-badge.component.mjs +3 -3
  266. package/esm2022/lib/smart-icon/smart-icon/ui-badge/ui-badge.directive.mjs +1 -1
  267. package/esm2022/lib/smart-icon/smart-icon.module.mjs +1 -1
  268. package/esm2022/lib/smart-icon/smart-icon.service.mjs +1 -1
  269. package/esm2022/lib/smart-map/abstract-map.mjs +1 -1
  270. package/esm2022/lib/smart-map/api/api/api.mjs +1 -1
  271. package/esm2022/lib/smart-map/api/api/geoMap.service.mjs +1 -1
  272. package/esm2022/lib/smart-map/api/api.module.mjs +1 -1
  273. package/esm2022/lib/smart-map/api/configuration.mjs +1 -1
  274. package/esm2022/lib/smart-map/api/encoder.mjs +1 -1
  275. package/esm2022/lib/smart-map/api/index.mjs +1 -1
  276. package/esm2022/lib/smart-map/api/model/gPSPosition.mjs +1 -1
  277. package/esm2022/lib/smart-map/api/model/gPSRoute.mjs +1 -1
  278. package/esm2022/lib/smart-map/api/model/geoMapChange.mjs +1 -1
  279. package/esm2022/lib/smart-map/api/model/geoMapDataLoadingMode.mjs +1 -1
  280. package/esm2022/lib/smart-map/api/model/geoMapDataSourceDescriptor.mjs +1 -1
  281. package/esm2022/lib/smart-map/api/model/geoMapDataSourceType.mjs +1 -1
  282. package/esm2022/lib/smart-map/api/model/geoMapEditingSession.mjs +1 -1
  283. package/esm2022/lib/smart-map/api/model/geoMapInteraction.mjs +1 -1
  284. package/esm2022/lib/smart-map/api/model/geoMapItem.mjs +1 -1
  285. package/esm2022/lib/smart-map/api/model/geoMapItemKind.mjs +1 -1
  286. package/esm2022/lib/smart-map/api/model/geoMapLayer.mjs +1 -1
  287. package/esm2022/lib/smart-map/api/model/geoMapLayerChange.mjs +1 -1
  288. package/esm2022/lib/smart-map/api/model/geoMapLayerDescriptor.mjs +1 -1
  289. package/esm2022/lib/smart-map/api/model/geoMapModel.mjs +1 -1
  290. package/esm2022/lib/smart-map/api/model/geoMapOperationMode.mjs +1 -1
  291. package/esm2022/lib/smart-map/api/model/geoMapSelectionMode.mjs +1 -1
  292. package/esm2022/lib/smart-map/api/model/geoMapServerModel.mjs +1 -1
  293. package/esm2022/lib/smart-map/api/model/geoMapTextType.mjs +1 -1
  294. package/esm2022/lib/smart-map/api/model/geoMapViewState.mjs +1 -1
  295. package/esm2022/lib/smart-map/api/model/geoMapViewport.mjs +1 -1
  296. package/esm2022/lib/smart-map/api/model/models.mjs +1 -1
  297. package/esm2022/lib/smart-map/api/param.mjs +1 -1
  298. package/esm2022/lib/smart-map/api/variables.mjs +1 -1
  299. package/esm2022/lib/smart-map/api-default/api-default.mjs +1 -1
  300. package/esm2022/lib/smart-map/impl/google-map.mjs +1 -1
  301. package/esm2022/lib/smart-map/impl/leaflet-map.mjs +1 -1
  302. package/esm2022/lib/smart-map/projects.mjs +1 -1
  303. package/esm2022/lib/smart-map/smart-map.component.mjs +3 -3
  304. package/esm2022/lib/smart-map/smart-map.module.mjs +1 -1
  305. package/esm2022/lib/smart-map/smart-map.types.mjs +1 -1
  306. package/esm2022/lib/smart-navbar/projects.mjs +1 -1
  307. package/esm2022/lib/smart-navbar/smart-navbar.component.mjs +3 -3
  308. package/esm2022/lib/smart-navbar/smart-navbar.model.mjs +1 -1
  309. package/esm2022/lib/smart-navbar/smart-navbar.module.mjs +1 -1
  310. package/esm2022/lib/smart-navbar/smart-navbar.service.mjs +1 -1
  311. package/esm2022/lib/smart-navigation/projects.mjs +1 -1
  312. package/esm2022/lib/smart-navigation/smart-navigation.interface.mjs +1 -1
  313. package/esm2022/lib/smart-navigation/smart-navigation.module.mjs +1 -1
  314. package/esm2022/lib/smart-navigation/smart-navigation.service.mjs +1 -1
  315. package/esm2022/lib/smart-ng-client.module.mjs +1 -1
  316. package/esm2022/lib/smart-ng-client.service.mjs +1 -1
  317. package/esm2022/lib/smart-subject/projects.mjs +1 -1
  318. package/esm2022/lib/smart-subject/smart-subject.mjs +1 -1
  319. package/esm2022/lib/smart-tab-group/projects.mjs +1 -1
  320. package/esm2022/lib/smart-tab-group/smart-tab-group.module.mjs +1 -1
  321. package/esm2022/lib/smart-table/components/default-actions-popup/default-actions-popup.component.mjs +3 -3
  322. package/esm2022/lib/smart-table/components/loading/loading.component.mjs +3 -3
  323. package/esm2022/lib/smart-table/directives/mat-context-menu-trigger-for.directive.mjs +1 -1
  324. package/esm2022/lib/smart-table/projects.mjs +1 -1
  325. package/esm2022/lib/smart-table/smarttable.component.mjs +3 -3
  326. package/esm2022/lib/smart-table/smarttable.model.mjs +1 -1
  327. package/esm2022/lib/smart-table/smarttable.module.mjs +1 -1
  328. package/esm2022/lib/smart-table/smarttable.service.mjs +1 -1
  329. package/esm2022/lib/smart-table/tables/material-table/material-table.component.mjs +3 -3
  330. package/esm2022/lib/smart-table/tables/mobile-table/mobile-table.component.mjs +3 -3
  331. package/esm2022/lib/smart-table/tables/table.mjs +1 -1
  332. package/esm2022/lib/smart-tree/projects.mjs +1 -1
  333. package/esm2022/lib/smart-tree/smarttree-generic.service.mjs +1 -1
  334. package/esm2022/lib/smart-tree/smarttree.component.mjs +3 -3
  335. package/esm2022/lib/smart-tree/smarttree.model.mjs +1 -1
  336. package/esm2022/lib/smart-tree/smarttree.module.mjs +1 -1
  337. package/esm2022/lib/smart-tree/smarttree.node.model.mjs +1 -1
  338. package/esm2022/lib/smart-tree/smarttree.service.interface.mjs +1 -1
  339. package/esm2022/lib/smart-tree/smarttree.service.mjs +1 -1
  340. package/esm2022/lib/smart-tree/tree-api/api/tree.service.mjs +1 -1
  341. package/esm2022/lib/smart-tree/tree-api/configuration.mjs +1 -1
  342. package/esm2022/lib/smart-tree/tree-api/encoder.mjs +1 -1
  343. package/esm2022/lib/smart-tree/tree-api/param.mjs +1 -1
  344. package/esm2022/lib/smart-tree/tree-api/variables.mjs +1 -1
  345. package/esm2022/lib/smart-validation/named-validator.service.mjs +1 -1
  346. package/esm2022/lib/smart-validation/projects.mjs +1 -1
  347. package/esm2022/lib/smart-validation/smart-validation.module.mjs +1 -1
  348. package/esm2022/lib/smart-validation/smart-validation.types.mjs +1 -1
  349. package/esm2022/lib/theme/theme.service.mjs +1 -1
  350. package/esm2022/lib/view-context/api/api/api.mjs +1 -1
  351. package/esm2022/lib/view-context/api/api/view.service.mjs +1 -1
  352. package/esm2022/lib/view-context/api/api-default/binaryContentData.mjs +1 -1
  353. package/esm2022/lib/view-context/api/api-default/binaryData.mjs +1 -1
  354. package/esm2022/lib/view-context/api/api-default/invocationError.mjs +1 -1
  355. package/esm2022/lib/view-context/api/api-default/invocationRequest.mjs +1 -1
  356. package/esm2022/lib/view-context/api/api-default/invocationRun.mjs +1 -1
  357. package/esm2022/lib/view-context/api/api.module.mjs +1 -1
  358. package/esm2022/lib/view-context/api/configuration.mjs +1 -1
  359. package/esm2022/lib/view-context/api/encoder.mjs +1 -1
  360. package/esm2022/lib/view-context/api/index.mjs +1 -1
  361. package/esm2022/lib/view-context/api/model/backgroundProcessInfo.mjs +1 -1
  362. package/esm2022/lib/view-context/api/model/badgeDescriptor.mjs +1 -1
  363. package/esm2022/lib/view-context/api/model/clipboardData.mjs +1 -1
  364. package/esm2022/lib/view-context/api/model/closeResult.mjs +1 -1
  365. package/esm2022/lib/view-context/api/model/componentConstraint.mjs +1 -1
  366. package/esm2022/lib/view-context/api/model/componentModel.mjs +1 -1
  367. package/esm2022/lib/view-context/api/model/componentModelChange.mjs +1 -1
  368. package/esm2022/lib/view-context/api/model/dataChange.mjs +1 -1
  369. package/esm2022/lib/view-context/api/model/dataChangeEvent.mjs +1 -1
  370. package/esm2022/lib/view-context/api/model/dataChangeKind.mjs +1 -1
  371. package/esm2022/lib/view-context/api/model/deviceInfo.mjs +1 -1
  372. package/esm2022/lib/view-context/api/model/downloadedFile.mjs +1 -1
  373. package/esm2022/lib/view-context/api/model/iconPosition.mjs +1 -1
  374. package/esm2022/lib/view-context/api/model/imageResource.mjs +1 -1
  375. package/esm2022/lib/view-context/api/model/link.mjs +1 -1
  376. package/esm2022/lib/view-context/api/model/menuDescriptor.mjs +1 -1
  377. package/esm2022/lib/view-context/api/model/menuOpenDirection.mjs +1 -1
  378. package/esm2022/lib/view-context/api/model/menuTriggerType.mjs +1 -1
  379. package/esm2022/lib/view-context/api/model/messageData.mjs +1 -1
  380. package/esm2022/lib/view-context/api/model/messageOption.mjs +1 -1
  381. package/esm2022/lib/view-context/api/model/messageOptionType.mjs +1 -1
  382. package/esm2022/lib/view-context/api/model/messageResult.mjs +1 -1
  383. package/esm2022/lib/view-context/api/model/messageTextType.mjs +1 -1
  384. package/esm2022/lib/view-context/api/model/messageType.mjs +1 -1
  385. package/esm2022/lib/view-context/api/model/models.mjs +1 -1
  386. package/esm2022/lib/view-context/api/model/multiComboBoxElement.mjs +1 -1
  387. package/esm2022/lib/view-context/api/model/multiComboBoxModel.mjs +1 -1
  388. package/esm2022/lib/view-context/api/model/namedValidator.mjs +1 -1
  389. package/esm2022/lib/view-context/api/model/openPendingData.mjs +1 -1
  390. package/esm2022/lib/view-context/api/model/publishedViewData.mjs +1 -1
  391. package/esm2022/lib/view-context/api/model/serverRequestExecutionStat.mjs +1 -1
  392. package/esm2022/lib/view-context/api/model/serverRequestTrack.mjs +1 -1
  393. package/esm2022/lib/view-context/api/model/serverRequestType.mjs +1 -1
  394. package/esm2022/lib/view-context/api/model/shellProperty.mjs +1 -1
  395. package/esm2022/lib/view-context/api/model/smartLinkData.mjs +1 -1
  396. package/esm2022/lib/view-context/api/model/smartLinkMigrationStatus.mjs +1 -1
  397. package/esm2022/lib/view-context/api/model/statisticRecord.mjs +1 -1
  398. package/esm2022/lib/view-context/api/model/style.mjs +1 -1
  399. package/esm2022/lib/view-context/api/model/themeDefinition.mjs +1 -1
  400. package/esm2022/lib/view-context/api/model/themeDescriptor.mjs +1 -1
  401. package/esm2022/lib/view-context/api/model/themeShellDescriptor.mjs +1 -1
  402. package/esm2022/lib/view-context/api/model/uiAction.mjs +1 -1
  403. package/esm2022/lib/view-context/api/model/uiActionButtonDescriptor.mjs +1 -1
  404. package/esm2022/lib/view-context/api/model/uiActionButtonType.mjs +1 -1
  405. package/esm2022/lib/view-context/api/model/uiActionConstraint.mjs +1 -1
  406. package/esm2022/lib/view-context/api/model/uiActionDefinition.mjs +1 -1
  407. package/esm2022/lib/view-context/api/model/uiActionDefinitionEntry.mjs +1 -1
  408. package/esm2022/lib/view-context/api/model/uiActionDescriptor.mjs +1 -1
  409. package/esm2022/lib/view-context/api/model/uiActionDialogDescriptor.mjs +1 -1
  410. package/esm2022/lib/view-context/api/model/uiActionFeedbackType.mjs +1 -1
  411. package/esm2022/lib/view-context/api/model/uiActionInputType.mjs +1 -1
  412. package/esm2022/lib/view-context/api/model/uiActionRequest.mjs +1 -1
  413. package/esm2022/lib/view-context/api/model/uiActionSchedule.mjs +1 -1
  414. package/esm2022/lib/view-context/api/model/uiActionTooltip.mjs +1 -1
  415. package/esm2022/lib/view-context/api/model/uiActionUploadDescriptor.mjs +1 -1
  416. package/esm2022/lib/view-context/api/model/uploadWidgetType.mjs +1 -1
  417. package/esm2022/lib/view-context/api/model/uploadedFile.mjs +1 -1
  418. package/esm2022/lib/view-context/api/model/valueSet.mjs +1 -1
  419. package/esm2022/lib/view-context/api/model/view.mjs +1 -1
  420. package/esm2022/lib/view-context/api/model/viewApiError.mjs +1 -1
  421. package/esm2022/lib/view-context/api/model/viewConstraint.mjs +1 -1
  422. package/esm2022/lib/view-context/api/model/viewContext.mjs +1 -1
  423. package/esm2022/lib/view-context/api/model/viewContextChange.mjs +1 -1
  424. package/esm2022/lib/view-context/api/model/viewContextData.mjs +1 -1
  425. package/esm2022/lib/view-context/api/model/viewContextUpdate.mjs +1 -1
  426. package/esm2022/lib/view-context/api/model/viewData.mjs +1 -1
  427. package/esm2022/lib/view-context/api/model/viewEventHandler.mjs +1 -1
  428. package/esm2022/lib/view-context/api/model/viewPlaceholder.mjs +1 -1
  429. package/esm2022/lib/view-context/api/model/viewState.mjs +1 -1
  430. package/esm2022/lib/view-context/api/model/viewStateUpdate.mjs +1 -1
  431. package/esm2022/lib/view-context/api/model/viewType.mjs +1 -1
  432. package/esm2022/lib/view-context/api/param.mjs +1 -1
  433. package/esm2022/lib/view-context/api/variables.mjs +1 -1
  434. package/esm2022/lib/view-context/default-view-components.token.mjs +1 -1
  435. package/esm2022/lib/view-context/invalid-fields-snack-bar/invalid-fields-snack-bar.component.mjs +3 -3
  436. package/esm2022/lib/view-context/message-dialog/message-dialog.component.mjs +3 -3
  437. package/esm2022/lib/view-context/projects.mjs +1 -1
  438. package/esm2022/lib/view-context/property-definition-data.mjs +1 -1
  439. package/esm2022/lib/view-context/reuse-router-slot.token.mjs +1 -1
  440. package/esm2022/lib/view-context/smart-embedded-slot.directive.mjs +1 -1
  441. package/esm2022/lib/view-context/smart-ui-action/components/menu/click/menu.component.mjs +3 -3
  442. package/esm2022/lib/view-context/smart-ui-action/components/menu/hover/hover-menu.component.mjs +3 -3
  443. package/esm2022/lib/view-context/smart-ui-action/components/menu/menu.constants.mjs +1 -1
  444. package/esm2022/lib/view-context/smart-ui-action/components/menu/menu.service.mjs +1 -1
  445. package/esm2022/lib/view-context/smart-ui-action/components/success-snack-bar/success-snack-bar.component.mjs +3 -3
  446. package/esm2022/lib/view-context/smart-ui-action/components/theme-selector/theme-selector.component.mjs +3 -3
  447. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/photo-capture-widget/photo-capture-widget.component.mjs +3 -3
  448. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/prime-file-uploader/prime-file-uploader.component.mjs +3 -3
  449. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/upload-widget.component.mjs +3 -3
  450. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/upload-widget.utils.mjs +1 -1
  451. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/voice-record-widget/voice-record-widget.component.mjs +3 -3
  452. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.component.mjs +3 -3
  453. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.service.mjs +1 -1
  454. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-dialog-button/ui-action-dialog-button.component.mjs +3 -3
  455. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component.mjs +3 -3
  456. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.service.mjs +1 -1
  457. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component.mjs +3 -3
  458. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.service.mjs +1 -1
  459. package/esm2022/lib/view-context/smart-ui-action/file-editor-toolbar/file-editor-toolbar.component.mjs +3 -3
  460. package/esm2022/lib/view-context/smart-ui-action/ui-action-button/button-icon-placeholder.mjs +1 -1
  461. package/esm2022/lib/view-context/smart-ui-action/ui-action-button/ui-action-button.component.mjs +3 -3
  462. package/esm2022/lib/view-context/smart-ui-action/ui-action-toolbar.component.mjs +3 -3
  463. package/esm2022/lib/view-context/smart-ui-action/ui-action.descriptor.service.mjs +1 -1
  464. package/esm2022/lib/view-context/smart-ui-action/ui-action.model.mjs +1 -1
  465. package/esm2022/lib/view-context/smart-ui-action/ui-action.service.mjs +1 -1
  466. package/esm2022/lib/view-context/smart-view-context-dialog.service.mjs +1 -1
  467. package/esm2022/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.component.mjs +3 -3
  468. package/esm2022/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.service.mjs +1 -1
  469. package/esm2022/lib/view-context/smart-view-context.interceptor.mjs +1 -1
  470. package/esm2022/lib/view-context/smart-view-context.model.mjs +1 -1
  471. package/esm2022/lib/view-context/smart-view-context.module.mjs +1 -1
  472. package/esm2022/lib/view-context/smart-view-context.service.mjs +1 -1
  473. package/esm2022/lib/view-context/smart-view-redirect/smart-view-redirect.mjs +1 -1
  474. package/esm2022/lib/view-context/utility/componentLibrary.mjs +1 -1
  475. package/esm2022/lib/view-context/utility/smart-object-utility.mjs +1 -1
  476. package/esm2022/lib/view-context/utility/smart-style-utility.mjs +1 -1
  477. package/esm2022/lib/view-context/value-api/api/api.mjs +1 -1
  478. package/esm2022/lib/view-context/value-api/api/value.service.mjs +1 -1
  479. package/esm2022/lib/view-context/value-api/api.module.mjs +1 -1
  480. package/esm2022/lib/view-context/value-api/configuration.mjs +1 -1
  481. package/esm2022/lib/view-context/value-api/encoder.mjs +1 -1
  482. package/esm2022/lib/view-context/value-api/index.mjs +1 -1
  483. package/esm2022/lib/view-context/value-api/model/genericValue.mjs +1 -1
  484. package/esm2022/lib/view-context/value-api/model/models.mjs +1 -1
  485. package/esm2022/lib/view-context/value-api/model/value.mjs +1 -1
  486. package/esm2022/lib/view-context/value-api/model/valueSetData.mjs +1 -1
  487. package/esm2022/lib/view-context/value-api/model/valueSetDefinition.mjs +1 -1
  488. package/esm2022/lib/view-context/value-api/model/valueSetDefinitionData.mjs +1 -1
  489. package/esm2022/lib/view-context/value-api/model/valueSetDefinitionIdentifier.mjs +1 -1
  490. package/esm2022/lib/view-context/value-api/model/valueSetDefinitionKind.mjs +1 -1
  491. package/esm2022/lib/view-context/value-api/model/valueSetExpression.mjs +1 -1
  492. package/esm2022/lib/view-context/value-api/model/valueSetOperand.mjs +1 -1
  493. package/esm2022/lib/view-context/value-api/model/valueSetOperation.mjs +1 -1
  494. package/esm2022/lib/view-context/value-api/param.mjs +1 -1
  495. package/esm2022/lib/view-context/value-api/variables.mjs +1 -1
  496. package/esm2022/lib/view-context/view-handler-resolution.mjs +1 -1
  497. package/esm2022/lib/view-context/view-op.mjs +1 -1
  498. package/esm2022/lib/view-context/view-slot-resolution.mjs +1 -1
  499. package/esm2022/projects.mjs +1 -1
  500. package/fesm2022/smartbit4all-ng-client.mjs +151 -151
  501. package/fesm2022/smartbit4all-ng-client.mjs.map +1 -1
  502. package/package.json +1 -1
  503. package/smartbit4all-ng-client-6.0.52.tgz +0 -0
  504. package/smartbit4all-ng-client-6.0.51.tgz +0 -0
@@ -14,10 +14,10 @@ export class MobileTableComponent extends Table {
14
14
  super(cfService);
15
15
  }
16
16
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: MobileTableComponent, deps: [{ token: i1.ComponentFactoryService }], target: i0.ɵɵFactoryTarget.Component }); }
17
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: MobileTableComponent, selector: "lib-mobile-table", usesInheritance: true, ngImport: i0, template: "<div class=\"mobileTable\">\r\n <div\r\n class=\"mobileTableRow\"\r\n *ngFor=\"let row of smartTable.tableRows\"\r\n [ngClass]=\"getRowClasses(row)\"\r\n [ngStyle]=\"getRowStyles(row)\"\r\n [attr.data-testid]=\"row?.id ?? null\"\r\n >\r\n <div\r\n class=\"mobileTableCell\"\r\n *ngFor=\"let header of smartTable.customSmartTableHeaders; let i = index\"\r\n (click)=\"handleOnRowClick(row)\"\r\n (dblclick)=\"handleOnRowDoubleClick($event, row)\"\r\n >\r\n <div class=\"mobileTableCellHeader\" [attr.data-testid]=\"header.propertyName\">\r\n {{ header.label }}\r\n </div>\r\n\r\n <mat-checkbox\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].propertyName === 'select'\r\n \"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"\r\n $event\r\n ? setSelection(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(row, smartTable.selectionProperty)\r\n : row\r\n )\r\n : null\r\n \"\r\n [disabled]=\"isDisabled(row)\"\r\n [checked]=\"\r\n smartTable.selection!.isSelected(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(row, smartTable.selectionProperty)\r\n : row\r\n )\r\n \"\r\n [aria-label]=\"\r\n checkboxLabel(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(row, smartTable.selectionProperty)\r\n : row\r\n )\r\n \"\r\n >\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].properties\r\n \"\r\n >\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATETIME\">\r\n {{\r\n getValue(row, header.propertyName)\r\n | smartDateTime: smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATE\">\r\n {{\r\n getValue(row, header.propertyName)\r\n | smartDate: smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().TIME\">\r\n {{\r\n getValue(row, header.propertyName)\r\n | smartTime: smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().CHECKBOX\">\r\n <mat-checkbox\r\n [disabled]=\"true\"\r\n [checked]=\"getValue(row, header.propertyName)\"\r\n ></mat-checkbox>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders[i].properties?.type === type().ICON &&\r\n smartTable.customSmartTableHeaders[i].properties?.icons?.length\r\n \"\r\n >\r\n <smart-icon\r\n [smartTooltip]=\"getToolTip(row, i)\"\r\n [icon]=\"getIcon(getValue(row, header.propertyName), i)!\"\r\n [color]=\"getColor(getValue(row, header.propertyName), i)\"\r\n >\r\n </smart-icon>\r\n </div>\r\n </div>\r\n <div *ngIf=\"isImageResource(row, header.propertyName)\">\r\n <smart-icon\r\n [icon]=\"getImageResourceIcon(row, header.propertyName)\"\r\n [color]=\"getImageResourceColor(row, header.propertyName)\"\r\n >\r\n </smart-icon>\r\n </div>\r\n <div\r\n *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].buttons\"\r\n class=\"smart-table-buttons-col\"\r\n >\r\n <div *ngFor=\"let button of smartTable.customSmartTableHeaders[i].buttons\">\r\n <div *ngIf=\"showButton(button, row)\" [ngSwitch]=\"button.type\">\r\n <button\r\n (click)=\"customButtonClicked($event, button, row)\"\r\n *ngSwitchCase=\"smartTableButtonType.ICON\"\r\n mat-icon-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon title=\"{{ button.label }}\" [icon]=\"button.icon!\"></smart-icon>\r\n </button>\r\n <button\r\n (click)=\"customButtonClicked($event, button, row)\"\r\n *ngSwitchCase=\"smartTableButtonType.NORMAL\"\r\n mat-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label }}\r\n </button>\r\n <button\r\n (click)=\"customButtonClicked($event, button, row)\"\r\n *ngSwitchCase=\"smartTableButtonType.RAISED\"\r\n mat-raised-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label }}\r\n </button>\r\n <!------ MENU ------>\r\n <div *ngSwitchCase=\"smartTableButtonType.MENU\" class=\"menu-button\">\r\n <!------ DEFAULT_ACTION_COLUMN ID TOOLBAR ------>\r\n <smart-ui-action-toolbar\r\n [uiActionModels]=\"getRowColumnAction(element, defaultActionToolbarId)\"\r\n ></smart-ui-action-toolbar>\r\n\r\n <!------ GENERIC HAMBURGER ------>\r\n @if (shouldShowMenuButton(element)) {\r\n <smart-ui-action-toolbar\r\n [uiActionModels]=\"getRowMenuActionModelArray(element)\"\r\n ></smart-ui-action-toolbar>\r\n }\r\n <!------ MENU ------>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].icon\">\r\n <smart-icon\r\n *ngIf=\"smartTable.customSmartTableHeaders[i].icon?.icon\"\r\n [ngClass]=\"smartTable.customSmartTableHeaders[i].icon?.cssClass ?? ''\"\r\n [color]=\"smartTable.customSmartTableHeaders[i].icon?.color\"\r\n [icon]=\"smartTable.customSmartTableHeaders[i].icon!.icon\"\r\n >\r\n </smart-icon>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].translator !== undefined\r\n \"\r\n >\r\n {{ smartTable.customSmartTableHeaders[i].translator!(getValue(row, header.propertyName)) }}\r\n </div>\r\n <div\r\n *ngIf=\"\r\n !smartTable.customSmartTableHeaders ||\r\n (smartTable.customSmartTableHeaders &&\r\n !smartTable.customSmartTableHeaders[i].properties &&\r\n !smartTable.customSmartTableHeaders[i].icon &&\r\n !smartTable.customSmartTableHeaders[i].buttons &&\r\n !smartTable.customSmartTableHeaders[i].translator &&\r\n !(smartTable.customSmartTableHeaders[i].propertyName === 'select') &&\r\n !(smartTable.customSmartTableHeaders[i].propertyName === 'expand'))\r\n \"\r\n >\r\n <smart-icon\r\n *ngIf=\"header.propertyName === 'icon'\"\r\n [icon]=\"getValue(row, header.propertyName)!\"\r\n >\r\n </smart-icon>\r\n <img\r\n *ngIf=\"header.propertyName === 'img'\"\r\n [src]=\"getValue(row, header.propertyName)\"\r\n alt=\"\"\r\n class=\"smarttableImg\"\r\n />\r\n <div\r\n *ngIf=\"\r\n header.propertyName !== 'icon' &&\r\n header.propertyName !== 'img' &&\r\n header.propertyName !== 'option' &&\r\n header.propertyName !== 'button'\r\n \"\r\n [innerHtml]=\"getValue(row, header.propertyName)\"\r\n ></div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".mobileTable{display:flex;flex-direction:column}.mobileTableRow{display:flex;flex-direction:column;border-bottom:1px solid #ccc;padding:.5rem;gap:.5rem}.mobileTableCell{display:flex;flex-direction:column;gap:.25rem}.mobileTableCellHeader{font-weight:700;color:var(--primary-color)}.selected{background-color:var(--primary-light-color)}.mat-mdc-menu-item[disabled]{cursor:default!important}\n"], dependencies: [{ kind: "directive", type: i2.SmartTooltipDirective, selector: "[smartTooltip]", inputs: ["smartTooltip"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i6.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: i7.UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id", "scrollOnWrap", "toolbarPropertes"] }, { kind: "pipe", type: i8.SmartDateTimePipe, name: "smartDateTime" }, { kind: "pipe", type: i8.SmartDatePipe, name: "smartDate" }, { kind: "pipe", type: i8.SmartTimePipe, name: "smartTime" }] }); }
17
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: MobileTableComponent, selector: "lib-mobile-table", usesInheritance: true, ngImport: i0, template: "<div class=\"mobileTable\">\n <div\n class=\"mobileTableRow\"\n *ngFor=\"let row of smartTable.tableRows\"\n [ngClass]=\"getRowClasses(row)\"\n [ngStyle]=\"getRowStyles(row)\"\n [attr.data-testid]=\"row?.id ?? null\"\n >\n <div\n class=\"mobileTableCell\"\n *ngFor=\"let header of smartTable.customSmartTableHeaders; let i = index\"\n (click)=\"handleOnRowClick(row)\"\n (dblclick)=\"handleOnRowDoubleClick($event, row)\"\n >\n <div class=\"mobileTableCellHeader\" [attr.data-testid]=\"header.propertyName\">\n {{ header.label }}\n </div>\n\n <mat-checkbox\n *ngIf=\"\n smartTable.customSmartTableHeaders &&\n smartTable.customSmartTableHeaders[i].propertyName === 'select'\n \"\n (click)=\"$event.stopPropagation()\"\n (change)=\"\n $event\n ? setSelection(\n smartTable.selectionProperty\n ? smartTable.getValueDeeply(row, smartTable.selectionProperty)\n : row\n )\n : null\n \"\n [disabled]=\"isDisabled(row)\"\n [checked]=\"\n smartTable.selection!.isSelected(\n smartTable.selectionProperty\n ? smartTable.getValueDeeply(row, smartTable.selectionProperty)\n : row\n )\n \"\n [aria-label]=\"\n checkboxLabel(\n smartTable.selectionProperty\n ? smartTable.getValueDeeply(row, smartTable.selectionProperty)\n : row\n )\n \"\n >\n </mat-checkbox>\n <div\n *ngIf=\"\n smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].properties\n \"\n >\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATETIME\">\n {{\n getValue(row, header.propertyName)\n | smartDateTime: smartTable.customSmartTableHeaders[i].properties?.dateFormat\n }}\n </div>\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATE\">\n {{\n getValue(row, header.propertyName)\n | smartDate: smartTable.customSmartTableHeaders[i].properties?.dateFormat\n }}\n </div>\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().TIME\">\n {{\n getValue(row, header.propertyName)\n | smartTime: smartTable.customSmartTableHeaders[i].properties?.dateFormat\n }}\n </div>\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().CHECKBOX\">\n <mat-checkbox\n [disabled]=\"true\"\n [checked]=\"getValue(row, header.propertyName)\"\n ></mat-checkbox>\n </div>\n <div\n *ngIf=\"\n smartTable.customSmartTableHeaders[i].properties?.type === type().ICON &&\n smartTable.customSmartTableHeaders[i].properties?.icons?.length\n \"\n >\n <smart-icon\n [smartTooltip]=\"getToolTip(row, i)\"\n [icon]=\"getIcon(getValue(row, header.propertyName), i)!\"\n [color]=\"getColor(getValue(row, header.propertyName), i)\"\n >\n </smart-icon>\n </div>\n </div>\n <div *ngIf=\"isImageResource(row, header.propertyName)\">\n <smart-icon\n [icon]=\"getImageResourceIcon(row, header.propertyName)\"\n [color]=\"getImageResourceColor(row, header.propertyName)\"\n >\n </smart-icon>\n </div>\n <div\n *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].buttons\"\n class=\"smart-table-buttons-col\"\n >\n <div *ngFor=\"let button of smartTable.customSmartTableHeaders[i].buttons\">\n <div *ngIf=\"showButton(button, row)\" [ngSwitch]=\"button.type\">\n <button\n (click)=\"customButtonClicked($event, button, row)\"\n *ngSwitchCase=\"smartTableButtonType.ICON\"\n mat-icon-button\n color=\"{{ button.color }}\"\n >\n <smart-icon title=\"{{ button.label }}\" [icon]=\"button.icon!\"></smart-icon>\n </button>\n <button\n (click)=\"customButtonClicked($event, button, row)\"\n *ngSwitchCase=\"smartTableButtonType.NORMAL\"\n mat-button\n color=\"{{ button.color }}\"\n >\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\n {{ button.label }}\n </button>\n <button\n (click)=\"customButtonClicked($event, button, row)\"\n *ngSwitchCase=\"smartTableButtonType.RAISED\"\n mat-raised-button\n color=\"{{ button.color }}\"\n >\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\n {{ button.label }}\n </button>\n <!------ MENU ------>\n <div *ngSwitchCase=\"smartTableButtonType.MENU\" class=\"menu-button\">\n <!------ DEFAULT_ACTION_COLUMN ID TOOLBAR ------>\n <smart-ui-action-toolbar\n [uiActionModels]=\"getRowColumnAction(element, defaultActionToolbarId)\"\n ></smart-ui-action-toolbar>\n\n <!------ GENERIC HAMBURGER ------>\n @if (shouldShowMenuButton(element)) {\n <smart-ui-action-toolbar\n [uiActionModels]=\"getRowMenuActionModelArray(element)\"\n ></smart-ui-action-toolbar>\n }\n <!------ MENU ------>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].icon\">\n <smart-icon\n *ngIf=\"smartTable.customSmartTableHeaders[i].icon?.icon\"\n [ngClass]=\"smartTable.customSmartTableHeaders[i].icon?.cssClass ?? ''\"\n [color]=\"smartTable.customSmartTableHeaders[i].icon?.color\"\n [icon]=\"smartTable.customSmartTableHeaders[i].icon!.icon\"\n >\n </smart-icon>\n </div>\n <div\n *ngIf=\"\n smartTable.customSmartTableHeaders &&\n smartTable.customSmartTableHeaders[i].translator !== undefined\n \"\n >\n {{ smartTable.customSmartTableHeaders[i].translator!(getValue(row, header.propertyName)) }}\n </div>\n <div\n *ngIf=\"\n !smartTable.customSmartTableHeaders ||\n (smartTable.customSmartTableHeaders &&\n !smartTable.customSmartTableHeaders[i].properties &&\n !smartTable.customSmartTableHeaders[i].icon &&\n !smartTable.customSmartTableHeaders[i].buttons &&\n !smartTable.customSmartTableHeaders[i].translator &&\n !(smartTable.customSmartTableHeaders[i].propertyName === 'select') &&\n !(smartTable.customSmartTableHeaders[i].propertyName === 'expand'))\n \"\n >\n <smart-icon\n *ngIf=\"header.propertyName === 'icon'\"\n [icon]=\"getValue(row, header.propertyName)!\"\n >\n </smart-icon>\n <img\n *ngIf=\"header.propertyName === 'img'\"\n [src]=\"getValue(row, header.propertyName)\"\n alt=\"\"\n class=\"smarttableImg\"\n />\n <div\n *ngIf=\"\n header.propertyName !== 'icon' &&\n header.propertyName !== 'img' &&\n header.propertyName !== 'option' &&\n header.propertyName !== 'button'\n \"\n [innerHtml]=\"getValue(row, header.propertyName)\"\n ></div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".mobileTable{display:flex;flex-direction:column}.mobileTableRow{display:flex;flex-direction:column;border-bottom:1px solid #ccc;padding:.5rem;gap:.5rem}.mobileTableCell{display:flex;flex-direction:column;gap:.25rem}.mobileTableCellHeader{font-weight:700;color:var(--primary-color)}.selected{background-color:var(--primary-light-color)}.mat-mdc-menu-item[disabled]{cursor:default!important}\n"], dependencies: [{ kind: "directive", type: i2.SmartTooltipDirective, selector: "[smartTooltip]", inputs: ["smartTooltip"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i6.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: i7.UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id", "scrollOnWrap", "toolbarPropertes"] }, { kind: "pipe", type: i8.SmartDateTimePipe, name: "smartDateTime" }, { kind: "pipe", type: i8.SmartDatePipe, name: "smartDate" }, { kind: "pipe", type: i8.SmartTimePipe, name: "smartTime" }] }); }
18
18
  }
19
19
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: MobileTableComponent, decorators: [{
20
20
  type: Component,
21
- args: [{ selector: 'lib-mobile-table', template: "<div class=\"mobileTable\">\r\n <div\r\n class=\"mobileTableRow\"\r\n *ngFor=\"let row of smartTable.tableRows\"\r\n [ngClass]=\"getRowClasses(row)\"\r\n [ngStyle]=\"getRowStyles(row)\"\r\n [attr.data-testid]=\"row?.id ?? null\"\r\n >\r\n <div\r\n class=\"mobileTableCell\"\r\n *ngFor=\"let header of smartTable.customSmartTableHeaders; let i = index\"\r\n (click)=\"handleOnRowClick(row)\"\r\n (dblclick)=\"handleOnRowDoubleClick($event, row)\"\r\n >\r\n <div class=\"mobileTableCellHeader\" [attr.data-testid]=\"header.propertyName\">\r\n {{ header.label }}\r\n </div>\r\n\r\n <mat-checkbox\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].propertyName === 'select'\r\n \"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"\r\n $event\r\n ? setSelection(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(row, smartTable.selectionProperty)\r\n : row\r\n )\r\n : null\r\n \"\r\n [disabled]=\"isDisabled(row)\"\r\n [checked]=\"\r\n smartTable.selection!.isSelected(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(row, smartTable.selectionProperty)\r\n : row\r\n )\r\n \"\r\n [aria-label]=\"\r\n checkboxLabel(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(row, smartTable.selectionProperty)\r\n : row\r\n )\r\n \"\r\n >\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].properties\r\n \"\r\n >\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATETIME\">\r\n {{\r\n getValue(row, header.propertyName)\r\n | smartDateTime: smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATE\">\r\n {{\r\n getValue(row, header.propertyName)\r\n | smartDate: smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().TIME\">\r\n {{\r\n getValue(row, header.propertyName)\r\n | smartTime: smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().CHECKBOX\">\r\n <mat-checkbox\r\n [disabled]=\"true\"\r\n [checked]=\"getValue(row, header.propertyName)\"\r\n ></mat-checkbox>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders[i].properties?.type === type().ICON &&\r\n smartTable.customSmartTableHeaders[i].properties?.icons?.length\r\n \"\r\n >\r\n <smart-icon\r\n [smartTooltip]=\"getToolTip(row, i)\"\r\n [icon]=\"getIcon(getValue(row, header.propertyName), i)!\"\r\n [color]=\"getColor(getValue(row, header.propertyName), i)\"\r\n >\r\n </smart-icon>\r\n </div>\r\n </div>\r\n <div *ngIf=\"isImageResource(row, header.propertyName)\">\r\n <smart-icon\r\n [icon]=\"getImageResourceIcon(row, header.propertyName)\"\r\n [color]=\"getImageResourceColor(row, header.propertyName)\"\r\n >\r\n </smart-icon>\r\n </div>\r\n <div\r\n *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].buttons\"\r\n class=\"smart-table-buttons-col\"\r\n >\r\n <div *ngFor=\"let button of smartTable.customSmartTableHeaders[i].buttons\">\r\n <div *ngIf=\"showButton(button, row)\" [ngSwitch]=\"button.type\">\r\n <button\r\n (click)=\"customButtonClicked($event, button, row)\"\r\n *ngSwitchCase=\"smartTableButtonType.ICON\"\r\n mat-icon-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon title=\"{{ button.label }}\" [icon]=\"button.icon!\"></smart-icon>\r\n </button>\r\n <button\r\n (click)=\"customButtonClicked($event, button, row)\"\r\n *ngSwitchCase=\"smartTableButtonType.NORMAL\"\r\n mat-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label }}\r\n </button>\r\n <button\r\n (click)=\"customButtonClicked($event, button, row)\"\r\n *ngSwitchCase=\"smartTableButtonType.RAISED\"\r\n mat-raised-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label }}\r\n </button>\r\n <!------ MENU ------>\r\n <div *ngSwitchCase=\"smartTableButtonType.MENU\" class=\"menu-button\">\r\n <!------ DEFAULT_ACTION_COLUMN ID TOOLBAR ------>\r\n <smart-ui-action-toolbar\r\n [uiActionModels]=\"getRowColumnAction(element, defaultActionToolbarId)\"\r\n ></smart-ui-action-toolbar>\r\n\r\n <!------ GENERIC HAMBURGER ------>\r\n @if (shouldShowMenuButton(element)) {\r\n <smart-ui-action-toolbar\r\n [uiActionModels]=\"getRowMenuActionModelArray(element)\"\r\n ></smart-ui-action-toolbar>\r\n }\r\n <!------ MENU ------>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].icon\">\r\n <smart-icon\r\n *ngIf=\"smartTable.customSmartTableHeaders[i].icon?.icon\"\r\n [ngClass]=\"smartTable.customSmartTableHeaders[i].icon?.cssClass ?? ''\"\r\n [color]=\"smartTable.customSmartTableHeaders[i].icon?.color\"\r\n [icon]=\"smartTable.customSmartTableHeaders[i].icon!.icon\"\r\n >\r\n </smart-icon>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].translator !== undefined\r\n \"\r\n >\r\n {{ smartTable.customSmartTableHeaders[i].translator!(getValue(row, header.propertyName)) }}\r\n </div>\r\n <div\r\n *ngIf=\"\r\n !smartTable.customSmartTableHeaders ||\r\n (smartTable.customSmartTableHeaders &&\r\n !smartTable.customSmartTableHeaders[i].properties &&\r\n !smartTable.customSmartTableHeaders[i].icon &&\r\n !smartTable.customSmartTableHeaders[i].buttons &&\r\n !smartTable.customSmartTableHeaders[i].translator &&\r\n !(smartTable.customSmartTableHeaders[i].propertyName === 'select') &&\r\n !(smartTable.customSmartTableHeaders[i].propertyName === 'expand'))\r\n \"\r\n >\r\n <smart-icon\r\n *ngIf=\"header.propertyName === 'icon'\"\r\n [icon]=\"getValue(row, header.propertyName)!\"\r\n >\r\n </smart-icon>\r\n <img\r\n *ngIf=\"header.propertyName === 'img'\"\r\n [src]=\"getValue(row, header.propertyName)\"\r\n alt=\"\"\r\n class=\"smarttableImg\"\r\n />\r\n <div\r\n *ngIf=\"\r\n header.propertyName !== 'icon' &&\r\n header.propertyName !== 'img' &&\r\n header.propertyName !== 'option' &&\r\n header.propertyName !== 'button'\r\n \"\r\n [innerHtml]=\"getValue(row, header.propertyName)\"\r\n ></div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".mobileTable{display:flex;flex-direction:column}.mobileTableRow{display:flex;flex-direction:column;border-bottom:1px solid #ccc;padding:.5rem;gap:.5rem}.mobileTableCell{display:flex;flex-direction:column;gap:.25rem}.mobileTableCellHeader{font-weight:700;color:var(--primary-color)}.selected{background-color:var(--primary-light-color)}.mat-mdc-menu-item[disabled]{cursor:default!important}\n"] }]
21
+ args: [{ selector: 'lib-mobile-table', template: "<div class=\"mobileTable\">\n <div\n class=\"mobileTableRow\"\n *ngFor=\"let row of smartTable.tableRows\"\n [ngClass]=\"getRowClasses(row)\"\n [ngStyle]=\"getRowStyles(row)\"\n [attr.data-testid]=\"row?.id ?? null\"\n >\n <div\n class=\"mobileTableCell\"\n *ngFor=\"let header of smartTable.customSmartTableHeaders; let i = index\"\n (click)=\"handleOnRowClick(row)\"\n (dblclick)=\"handleOnRowDoubleClick($event, row)\"\n >\n <div class=\"mobileTableCellHeader\" [attr.data-testid]=\"header.propertyName\">\n {{ header.label }}\n </div>\n\n <mat-checkbox\n *ngIf=\"\n smartTable.customSmartTableHeaders &&\n smartTable.customSmartTableHeaders[i].propertyName === 'select'\n \"\n (click)=\"$event.stopPropagation()\"\n (change)=\"\n $event\n ? setSelection(\n smartTable.selectionProperty\n ? smartTable.getValueDeeply(row, smartTable.selectionProperty)\n : row\n )\n : null\n \"\n [disabled]=\"isDisabled(row)\"\n [checked]=\"\n smartTable.selection!.isSelected(\n smartTable.selectionProperty\n ? smartTable.getValueDeeply(row, smartTable.selectionProperty)\n : row\n )\n \"\n [aria-label]=\"\n checkboxLabel(\n smartTable.selectionProperty\n ? smartTable.getValueDeeply(row, smartTable.selectionProperty)\n : row\n )\n \"\n >\n </mat-checkbox>\n <div\n *ngIf=\"\n smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].properties\n \"\n >\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATETIME\">\n {{\n getValue(row, header.propertyName)\n | smartDateTime: smartTable.customSmartTableHeaders[i].properties?.dateFormat\n }}\n </div>\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATE\">\n {{\n getValue(row, header.propertyName)\n | smartDate: smartTable.customSmartTableHeaders[i].properties?.dateFormat\n }}\n </div>\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().TIME\">\n {{\n getValue(row, header.propertyName)\n | smartTime: smartTable.customSmartTableHeaders[i].properties?.dateFormat\n }}\n </div>\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().CHECKBOX\">\n <mat-checkbox\n [disabled]=\"true\"\n [checked]=\"getValue(row, header.propertyName)\"\n ></mat-checkbox>\n </div>\n <div\n *ngIf=\"\n smartTable.customSmartTableHeaders[i].properties?.type === type().ICON &&\n smartTable.customSmartTableHeaders[i].properties?.icons?.length\n \"\n >\n <smart-icon\n [smartTooltip]=\"getToolTip(row, i)\"\n [icon]=\"getIcon(getValue(row, header.propertyName), i)!\"\n [color]=\"getColor(getValue(row, header.propertyName), i)\"\n >\n </smart-icon>\n </div>\n </div>\n <div *ngIf=\"isImageResource(row, header.propertyName)\">\n <smart-icon\n [icon]=\"getImageResourceIcon(row, header.propertyName)\"\n [color]=\"getImageResourceColor(row, header.propertyName)\"\n >\n </smart-icon>\n </div>\n <div\n *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].buttons\"\n class=\"smart-table-buttons-col\"\n >\n <div *ngFor=\"let button of smartTable.customSmartTableHeaders[i].buttons\">\n <div *ngIf=\"showButton(button, row)\" [ngSwitch]=\"button.type\">\n <button\n (click)=\"customButtonClicked($event, button, row)\"\n *ngSwitchCase=\"smartTableButtonType.ICON\"\n mat-icon-button\n color=\"{{ button.color }}\"\n >\n <smart-icon title=\"{{ button.label }}\" [icon]=\"button.icon!\"></smart-icon>\n </button>\n <button\n (click)=\"customButtonClicked($event, button, row)\"\n *ngSwitchCase=\"smartTableButtonType.NORMAL\"\n mat-button\n color=\"{{ button.color }}\"\n >\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\n {{ button.label }}\n </button>\n <button\n (click)=\"customButtonClicked($event, button, row)\"\n *ngSwitchCase=\"smartTableButtonType.RAISED\"\n mat-raised-button\n color=\"{{ button.color }}\"\n >\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\n {{ button.label }}\n </button>\n <!------ MENU ------>\n <div *ngSwitchCase=\"smartTableButtonType.MENU\" class=\"menu-button\">\n <!------ DEFAULT_ACTION_COLUMN ID TOOLBAR ------>\n <smart-ui-action-toolbar\n [uiActionModels]=\"getRowColumnAction(element, defaultActionToolbarId)\"\n ></smart-ui-action-toolbar>\n\n <!------ GENERIC HAMBURGER ------>\n @if (shouldShowMenuButton(element)) {\n <smart-ui-action-toolbar\n [uiActionModels]=\"getRowMenuActionModelArray(element)\"\n ></smart-ui-action-toolbar>\n }\n <!------ MENU ------>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].icon\">\n <smart-icon\n *ngIf=\"smartTable.customSmartTableHeaders[i].icon?.icon\"\n [ngClass]=\"smartTable.customSmartTableHeaders[i].icon?.cssClass ?? ''\"\n [color]=\"smartTable.customSmartTableHeaders[i].icon?.color\"\n [icon]=\"smartTable.customSmartTableHeaders[i].icon!.icon\"\n >\n </smart-icon>\n </div>\n <div\n *ngIf=\"\n smartTable.customSmartTableHeaders &&\n smartTable.customSmartTableHeaders[i].translator !== undefined\n \"\n >\n {{ smartTable.customSmartTableHeaders[i].translator!(getValue(row, header.propertyName)) }}\n </div>\n <div\n *ngIf=\"\n !smartTable.customSmartTableHeaders ||\n (smartTable.customSmartTableHeaders &&\n !smartTable.customSmartTableHeaders[i].properties &&\n !smartTable.customSmartTableHeaders[i].icon &&\n !smartTable.customSmartTableHeaders[i].buttons &&\n !smartTable.customSmartTableHeaders[i].translator &&\n !(smartTable.customSmartTableHeaders[i].propertyName === 'select') &&\n !(smartTable.customSmartTableHeaders[i].propertyName === 'expand'))\n \"\n >\n <smart-icon\n *ngIf=\"header.propertyName === 'icon'\"\n [icon]=\"getValue(row, header.propertyName)!\"\n >\n </smart-icon>\n <img\n *ngIf=\"header.propertyName === 'img'\"\n [src]=\"getValue(row, header.propertyName)\"\n alt=\"\"\n class=\"smarttableImg\"\n />\n <div\n *ngIf=\"\n header.propertyName !== 'icon' &&\n header.propertyName !== 'img' &&\n header.propertyName !== 'option' &&\n header.propertyName !== 'button'\n \"\n [innerHtml]=\"getValue(row, header.propertyName)\"\n ></div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".mobileTable{display:flex;flex-direction:column}.mobileTableRow{display:flex;flex-direction:column;border-bottom:1px solid #ccc;padding:.5rem;gap:.5rem}.mobileTableCell{display:flex;flex-direction:column;gap:.25rem}.mobileTableCellHeader{font-weight:700;color:var(--primary-color)}.selected{background-color:var(--primary-light-color)}.mat-mdc-menu-item[disabled]{cursor:default!important}\n"] }]
22
22
  }], ctorParameters: () => [{ type: i1.ComponentFactoryService }] });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9iaWxlLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LXRhYmxlL3RhYmxlcy9tb2JpbGUtdGFibGUvbW9iaWxlLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LXRhYmxlL3RhYmxlcy9tb2JpbGUtdGFibGUvbW9iaWxlLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7Ozs7OztBQVFqQyxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsS0FBSztJQUM3QyxZQUFZLFNBQWtDO1FBQzVDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuQixDQUFDOytHQUhVLG9CQUFvQjttR0FBcEIsb0JBQW9CLCtFQ1RqQywwbVFBMk1BOzs0RkRsTWEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJy4uL3RhYmxlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50RmFjdG9yeVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnQtZmFjdG9yeS1zZXJ2aWNlL3Byb2plY3RzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLW1vYmlsZS10YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21vYmlsZS10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbW9iaWxlLXRhYmxlLmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1vYmlsZVRhYmxlQ29tcG9uZW50IGV4dGVuZHMgVGFibGUge1xyXG4gIGNvbnN0cnVjdG9yKGNmU2VydmljZTogQ29tcG9uZW50RmFjdG9yeVNlcnZpY2UpIHtcclxuICAgIHN1cGVyKGNmU2VydmljZSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJtb2JpbGVUYWJsZVwiPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwibW9iaWxlVGFibGVSb3dcIlxyXG4gICAgKm5nRm9yPVwibGV0IHJvdyBvZiBzbWFydFRhYmxlLnRhYmxlUm93c1wiXHJcbiAgICBbbmdDbGFzc109XCJnZXRSb3dDbGFzc2VzKHJvdylcIlxyXG4gICAgW25nU3R5bGVdPVwiZ2V0Um93U3R5bGVzKHJvdylcIlxyXG4gICAgW2F0dHIuZGF0YS10ZXN0aWRdPVwicm93Py5pZCA/PyBudWxsXCJcclxuICA+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwibW9iaWxlVGFibGVDZWxsXCJcclxuICAgICAgKm5nRm9yPVwibGV0IGhlYWRlciBvZiBzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgKGNsaWNrKT1cImhhbmRsZU9uUm93Q2xpY2socm93KVwiXHJcbiAgICAgIChkYmxjbGljayk9XCJoYW5kbGVPblJvd0RvdWJsZUNsaWNrKCRldmVudCwgcm93KVwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2JpbGVUYWJsZUNlbGxIZWFkZXJcIiBbYXR0ci5kYXRhLXRlc3RpZF09XCJoZWFkZXIucHJvcGVydHlOYW1lXCI+XHJcbiAgICAgICAge3sgaGVhZGVyLmxhYmVsIH19XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPG1hdC1jaGVja2JveFxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICBzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzICYmXHJcbiAgICAgICAgICBzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2ldLnByb3BlcnR5TmFtZSA9PT0gJ3NlbGVjdCdcclxuICAgICAgICBcIlxyXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgIChjaGFuZ2UpPVwiXHJcbiAgICAgICAgICAkZXZlbnRcclxuICAgICAgICAgICAgPyBzZXRTZWxlY3Rpb24oXHJcbiAgICAgICAgICAgICAgICBzbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5XHJcbiAgICAgICAgICAgICAgICAgID8gc21hcnRUYWJsZS5nZXRWYWx1ZURlZXBseShyb3csIHNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHkpXHJcbiAgICAgICAgICAgICAgICAgIDogcm93XHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICA6IG51bGxcclxuICAgICAgICBcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkKHJvdylcIlxyXG4gICAgICAgIFtjaGVja2VkXT1cIlxyXG4gICAgICAgICAgc21hcnRUYWJsZS5zZWxlY3Rpb24hLmlzU2VsZWN0ZWQoXHJcbiAgICAgICAgICAgIHNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHlcclxuICAgICAgICAgICAgICA/IHNtYXJ0VGFibGUuZ2V0VmFsdWVEZWVwbHkocm93LCBzbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5KVxyXG4gICAgICAgICAgICAgIDogcm93XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgXCJcclxuICAgICAgICBbYXJpYS1sYWJlbF09XCJcclxuICAgICAgICAgIGNoZWNrYm94TGFiZWwoXHJcbiAgICAgICAgICAgIHNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHlcclxuICAgICAgICAgICAgICA/IHNtYXJ0VGFibGUuZ2V0VmFsdWVEZWVwbHkocm93LCBzbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5KVxyXG4gICAgICAgICAgICAgIDogcm93XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgPGRpdlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICBzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzICYmIHNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0ucHJvcGVydGllc1xyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5wcm9wZXJ0aWVzPy50eXBlID09PSB0eXBlKCkuREFURVRJTUVcIj5cclxuICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgIGdldFZhbHVlKHJvdywgaGVhZGVyLnByb3BlcnR5TmFtZSlcclxuICAgICAgICAgICAgICB8IHNtYXJ0RGF0ZVRpbWU6IHNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0ucHJvcGVydGllcz8uZGF0ZUZvcm1hdFxyXG4gICAgICAgICAgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5wcm9wZXJ0aWVzPy50eXBlID09PSB0eXBlKCkuREFURVwiPlxyXG4gICAgICAgICAge3tcclxuICAgICAgICAgICAgZ2V0VmFsdWUocm93LCBoZWFkZXIucHJvcGVydHlOYW1lKVxyXG4gICAgICAgICAgICAgIHwgc21hcnREYXRlOiBzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2ldLnByb3BlcnRpZXM/LmRhdGVGb3JtYXRcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0ucHJvcGVydGllcz8udHlwZSA9PT0gdHlwZSgpLlRJTUVcIj5cclxuICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgIGdldFZhbHVlKHJvdywgaGVhZGVyLnByb3BlcnR5TmFtZSlcclxuICAgICAgICAgICAgICB8IHNtYXJ0VGltZTogc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5wcm9wZXJ0aWVzPy5kYXRlRm9ybWF0XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2ldLnByb3BlcnRpZXM/LnR5cGUgPT09IHR5cGUoKS5DSEVDS0JPWFwiPlxyXG4gICAgICAgICAgPG1hdC1jaGVja2JveFxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImdldFZhbHVlKHJvdywgaGVhZGVyLnByb3BlcnR5TmFtZSlcIlxyXG4gICAgICAgICAgPjwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIHNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0ucHJvcGVydGllcz8udHlwZSA9PT0gdHlwZSgpLklDT04gJiZcclxuICAgICAgICAgICAgc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5wcm9wZXJ0aWVzPy5pY29ucz8ubGVuZ3RoXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAgIFtzbWFydFRvb2x0aXBdPVwiZ2V0VG9vbFRpcChyb3csIGkpXCJcclxuICAgICAgICAgICAgW2ljb25dPVwiZ2V0SWNvbihnZXRWYWx1ZShyb3csIGhlYWRlci5wcm9wZXJ0eU5hbWUpLCBpKSFcIlxyXG4gICAgICAgICAgICBbY29sb3JdPVwiZ2V0Q29sb3IoZ2V0VmFsdWUocm93LCBoZWFkZXIucHJvcGVydHlOYW1lKSwgaSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPC9zbWFydC1pY29uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiAqbmdJZj1cImlzSW1hZ2VSZXNvdXJjZShyb3csIGhlYWRlci5wcm9wZXJ0eU5hbWUpXCI+XHJcbiAgICAgICAgPHNtYXJ0LWljb25cclxuICAgICAgICAgIFtpY29uXT1cImdldEltYWdlUmVzb3VyY2VJY29uKHJvdywgaGVhZGVyLnByb3BlcnR5TmFtZSlcIlxyXG4gICAgICAgICAgW2NvbG9yXT1cImdldEltYWdlUmVzb3VyY2VDb2xvcihyb3csIGhlYWRlci5wcm9wZXJ0eU5hbWUpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9zbWFydC1pY29uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgICpuZ0lmPVwic21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVycyAmJiBzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2ldLmJ1dHRvbnNcIlxyXG4gICAgICAgIGNsYXNzPVwic21hcnQtdGFibGUtYnV0dG9ucy1jb2xcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIHNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0uYnV0dG9uc1wiPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dCdXR0b24oYnV0dG9uLCByb3cpXCIgW25nU3dpdGNoXT1cImJ1dHRvbi50eXBlXCI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAoY2xpY2spPVwiY3VzdG9tQnV0dG9uQ2xpY2tlZCgkZXZlbnQsIGJ1dHRvbiwgcm93KVwiXHJcbiAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cInNtYXJ0VGFibGVCdXR0b25UeXBlLklDT05cIlxyXG4gICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICAgIGNvbG9yPVwie3sgYnV0dG9uLmNvbG9yIH19XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzbWFydC1pY29uIHRpdGxlPVwie3sgYnV0dG9uLmxhYmVsIH19XCIgW2ljb25dPVwiYnV0dG9uLmljb24hXCI+PC9zbWFydC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJjdXN0b21CdXR0b25DbGlja2VkKCRldmVudCwgYnV0dG9uLCByb3cpXCJcclxuICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwic21hcnRUYWJsZUJ1dHRvblR5cGUuTk9STUFMXCJcclxuICAgICAgICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgY29sb3I9XCJ7eyBidXR0b24uY29sb3IgfX1cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNtYXJ0LWljb24gKm5nSWY9XCJidXR0b24uaWNvblwiIFtpY29uXT1cImJ1dHRvbi5pY29uXCI+PC9zbWFydC1pY29uPlxyXG4gICAgICAgICAgICAgIHt7IGJ1dHRvbi5sYWJlbCB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJjdXN0b21CdXR0b25DbGlja2VkKCRldmVudCwgYnV0dG9uLCByb3cpXCJcclxuICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwic21hcnRUYWJsZUJ1dHRvblR5cGUuUkFJU0VEXCJcclxuICAgICAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxyXG4gICAgICAgICAgICAgIGNvbG9yPVwie3sgYnV0dG9uLmNvbG9yIH19XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzbWFydC1pY29uICpuZ0lmPVwiYnV0dG9uLmljb25cIiBbaWNvbl09XCJidXR0b24uaWNvblwiPjwvc21hcnQtaWNvbj5cclxuICAgICAgICAgICAgICB7eyBidXR0b24ubGFiZWwgfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwhLS0tLS0tIE1FTlUgLS0tLS0tPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCJzbWFydFRhYmxlQnV0dG9uVHlwZS5NRU5VXCIgY2xhc3M9XCJtZW51LWJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgIDwhLS0tLS0tIERFRkFVTFRfQUNUSU9OX0NPTFVNTiBJRCBUT09MQkFSIC0tLS0tLT5cclxuICAgICAgICAgICAgICA8c21hcnQtdWktYWN0aW9uLXRvb2xiYXJcclxuICAgICAgICAgICAgICAgIFt1aUFjdGlvbk1vZGVsc109XCJnZXRSb3dDb2x1bW5BY3Rpb24oZWxlbWVudCwgZGVmYXVsdEFjdGlvblRvb2xiYXJJZClcIlxyXG4gICAgICAgICAgICAgID48L3NtYXJ0LXVpLWFjdGlvbi10b29sYmFyPlxyXG5cclxuICAgICAgICAgICAgICA8IS0tLS0tLSBHRU5FUklDIEhBTUJVUkdFUiAtLS0tLS0+XHJcbiAgICAgICAgICAgICAgQGlmIChzaG91bGRTaG93TWVudUJ1dHRvbihlbGVtZW50KSkge1xyXG4gICAgICAgICAgICAgICAgPHNtYXJ0LXVpLWFjdGlvbi10b29sYmFyXHJcbiAgICAgICAgICAgICAgICAgIFt1aUFjdGlvbk1vZGVsc109XCJnZXRSb3dNZW51QWN0aW9uTW9kZWxBcnJheShlbGVtZW50KVwiXHJcbiAgICAgICAgICAgICAgICA+PC9zbWFydC11aS1hY3Rpb24tdG9vbGJhcj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgPCEtLS0tLS0gTUVOVSAtLS0tLS0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwic21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVycyAmJiBzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2ldLmljb25cIj5cclxuICAgICAgICA8c21hcnQtaWNvblxyXG4gICAgICAgICAgKm5nSWY9XCJzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2ldLmljb24/Lmljb25cIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwic21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5pY29uPy5jc3NDbGFzcyA/PyAnJ1wiXHJcbiAgICAgICAgICBbY29sb3JdPVwic21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5pY29uPy5jb2xvclwiXHJcbiAgICAgICAgICBbaWNvbl09XCJzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2ldLmljb24hLmljb25cIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L3NtYXJ0LWljb24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnMgJiZcclxuICAgICAgICAgIHNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0udHJhbnNsYXRvciAhPT0gdW5kZWZpbmVkXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7IHNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0udHJhbnNsYXRvciEoZ2V0VmFsdWUocm93LCBoZWFkZXIucHJvcGVydHlOYW1lKSkgfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgIXNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnMgfHxcclxuICAgICAgICAgIChzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzICYmXHJcbiAgICAgICAgICAgICFzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2ldLnByb3BlcnRpZXMgJiZcclxuICAgICAgICAgICAgIXNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0uaWNvbiAmJlxyXG4gICAgICAgICAgICAhc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5idXR0b25zICYmXHJcbiAgICAgICAgICAgICFzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2ldLnRyYW5zbGF0b3IgJiZcclxuICAgICAgICAgICAgIShzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2ldLnByb3BlcnR5TmFtZSA9PT0gJ3NlbGVjdCcpICYmXHJcbiAgICAgICAgICAgICEoc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5wcm9wZXJ0eU5hbWUgPT09ICdleHBhbmQnKSlcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNtYXJ0LWljb25cclxuICAgICAgICAgICpuZ0lmPVwiaGVhZGVyLnByb3BlcnR5TmFtZSA9PT0gJ2ljb24nXCJcclxuICAgICAgICAgIFtpY29uXT1cImdldFZhbHVlKHJvdywgaGVhZGVyLnByb3BlcnR5TmFtZSkhXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9zbWFydC1pY29uPlxyXG4gICAgICAgIDxpbWdcclxuICAgICAgICAgICpuZ0lmPVwiaGVhZGVyLnByb3BlcnR5TmFtZSA9PT0gJ2ltZydcIlxyXG4gICAgICAgICAgW3NyY109XCJnZXRWYWx1ZShyb3csIGhlYWRlci5wcm9wZXJ0eU5hbWUpXCJcclxuICAgICAgICAgIGFsdD1cIlwiXHJcbiAgICAgICAgICBjbGFzcz1cInNtYXJ0dGFibGVJbWdcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgaGVhZGVyLnByb3BlcnR5TmFtZSAhPT0gJ2ljb24nICYmXHJcbiAgICAgICAgICAgIGhlYWRlci5wcm9wZXJ0eU5hbWUgIT09ICdpbWcnICYmXHJcbiAgICAgICAgICAgIGhlYWRlci5wcm9wZXJ0eU5hbWUgIT09ICdvcHRpb24nICYmXHJcbiAgICAgICAgICAgIGhlYWRlci5wcm9wZXJ0eU5hbWUgIT09ICdidXR0b24nXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgW2lubmVySHRtbF09XCJnZXRWYWx1ZShyb3csIGhlYWRlci5wcm9wZXJ0eU5hbWUpXCJcclxuICAgICAgICA+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9iaWxlLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LXRhYmxlL3RhYmxlcy9tb2JpbGUtdGFibGUvbW9iaWxlLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LXRhYmxlL3RhYmxlcy9tb2JpbGUtdGFibGUvbW9iaWxlLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7Ozs7OztBQVFqQyxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsS0FBSztJQUM3QyxZQUFZLFNBQWtDO1FBQzVDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuQixDQUFDOytHQUhVLG9CQUFvQjttR0FBcEIsb0JBQW9CLCtFQ1RqQyxvdFBBMk1BOzs0RkRsTWEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tICcuLi90YWJsZSc7XG5pbXBvcnQgeyBDb21wb25lbnRGYWN0b3J5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudC1mYWN0b3J5LXNlcnZpY2UvcHJvamVjdHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItbW9iaWxlLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vYmlsZS10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vYmlsZS10YWJsZS5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1vYmlsZVRhYmxlQ29tcG9uZW50IGV4dGVuZHMgVGFibGUge1xuICBjb25zdHJ1Y3RvcihjZlNlcnZpY2U6IENvbXBvbmVudEZhY3RvcnlTZXJ2aWNlKSB7XG4gICAgc3VwZXIoY2ZTZXJ2aWNlKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1vYmlsZVRhYmxlXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm1vYmlsZVRhYmxlUm93XCJcbiAgICAqbmdGb3I9XCJsZXQgcm93IG9mIHNtYXJ0VGFibGUudGFibGVSb3dzXCJcbiAgICBbbmdDbGFzc109XCJnZXRSb3dDbGFzc2VzKHJvdylcIlxuICAgIFtuZ1N0eWxlXT1cImdldFJvd1N0eWxlcyhyb3cpXCJcbiAgICBbYXR0ci5kYXRhLXRlc3RpZF09XCJyb3c/LmlkID8/IG51bGxcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJtb2JpbGVUYWJsZUNlbGxcIlxuICAgICAgKm5nRm9yPVwibGV0IGhlYWRlciBvZiBzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVPblJvd0NsaWNrKHJvdylcIlxuICAgICAgKGRibGNsaWNrKT1cImhhbmRsZU9uUm93RG91YmxlQ2xpY2soJGV2ZW50LCByb3cpXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwibW9iaWxlVGFibGVDZWxsSGVhZGVyXCIgW2F0dHIuZGF0YS10ZXN0aWRdPVwiaGVhZGVyLnByb3BlcnR5TmFtZVwiPlxuICAgICAgICB7eyBoZWFkZXIubGFiZWwgfX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVycyAmJlxuICAgICAgICAgIHNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0ucHJvcGVydHlOYW1lID09PSAnc2VsZWN0J1xuICAgICAgICBcIlxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgKGNoYW5nZSk9XCJcbiAgICAgICAgICAkZXZlbnRcbiAgICAgICAgICAgID8gc2V0U2VsZWN0aW9uKFxuICAgICAgICAgICAgICAgIHNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHlcbiAgICAgICAgICAgICAgICAgID8gc21hcnRUYWJsZS5nZXRWYWx1ZURlZXBseShyb3csIHNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHkpXG4gICAgICAgICAgICAgICAgICA6IHJvd1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IG51bGxcbiAgICAgICAgXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWQocm93KVwiXG4gICAgICAgIFtjaGVja2VkXT1cIlxuICAgICAgICAgIHNtYXJ0VGFibGUuc2VsZWN0aW9uIS5pc1NlbGVjdGVkKFxuICAgICAgICAgICAgc21hcnRUYWJsZS5zZWxlY3Rpb25Qcm9wZXJ0eVxuICAgICAgICAgICAgICA/IHNtYXJ0VGFibGUuZ2V0VmFsdWVEZWVwbHkocm93LCBzbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5KVxuICAgICAgICAgICAgICA6IHJvd1xuICAgICAgICAgIClcbiAgICAgICAgXCJcbiAgICAgICAgW2FyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgY2hlY2tib3hMYWJlbChcbiAgICAgICAgICAgIHNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHlcbiAgICAgICAgICAgICAgPyBzbWFydFRhYmxlLmdldFZhbHVlRGVlcGx5KHJvdywgc21hcnRUYWJsZS5zZWxlY3Rpb25Qcm9wZXJ0eSlcbiAgICAgICAgICAgICAgOiByb3dcbiAgICAgICAgICApXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzICYmIHNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0ucHJvcGVydGllc1xuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwic21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5wcm9wZXJ0aWVzPy50eXBlID09PSB0eXBlKCkuREFURVRJTUVcIj5cbiAgICAgICAgICB7e1xuICAgICAgICAgICAgZ2V0VmFsdWUocm93LCBoZWFkZXIucHJvcGVydHlOYW1lKVxuICAgICAgICAgICAgICB8IHNtYXJ0RGF0ZVRpbWU6IHNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0ucHJvcGVydGllcz8uZGF0ZUZvcm1hdFxuICAgICAgICAgIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwic21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5wcm9wZXJ0aWVzPy50eXBlID09PSB0eXBlKCkuREFURVwiPlxuICAgICAgICAgIHt7XG4gICAgICAgICAgICBnZXRWYWx1ZShyb3csIGhlYWRlci5wcm9wZXJ0eU5hbWUpXG4gICAgICAgICAgICAgIHwgc21hcnREYXRlOiBzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2ldLnByb3BlcnRpZXM/LmRhdGVGb3JtYXRcbiAgICAgICAgICB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0ucHJvcGVydGllcz8udHlwZSA9PT0gdHlwZSgpLlRJTUVcIj5cbiAgICAgICAgICB7e1xuICAgICAgICAgICAgZ2V0VmFsdWUocm93LCBoZWFkZXIucHJvcGVydHlOYW1lKVxuICAgICAgICAgICAgICB8IHNtYXJ0VGltZTogc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5wcm9wZXJ0aWVzPy5kYXRlRm9ybWF0XG4gICAgICAgICAgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2ldLnByb3BlcnRpZXM/LnR5cGUgPT09IHR5cGUoKS5DSEVDS0JPWFwiPlxuICAgICAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImdldFZhbHVlKHJvdywgaGVhZGVyLnByb3BlcnR5TmFtZSlcIlxuICAgICAgICAgID48L21hdC1jaGVja2JveD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5wcm9wZXJ0aWVzPy50eXBlID09PSB0eXBlKCkuSUNPTiAmJlxuICAgICAgICAgICAgc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5wcm9wZXJ0aWVzPy5pY29ucz8ubGVuZ3RoXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzbWFydC1pY29uXG4gICAgICAgICAgICBbc21hcnRUb29sdGlwXT1cImdldFRvb2xUaXAocm93LCBpKVwiXG4gICAgICAgICAgICBbaWNvbl09XCJnZXRJY29uKGdldFZhbHVlKHJvdywgaGVhZGVyLnByb3BlcnR5TmFtZSksIGkpIVwiXG4gICAgICAgICAgICBbY29sb3JdPVwiZ2V0Q29sb3IoZ2V0VmFsdWUocm93LCBoZWFkZXIucHJvcGVydHlOYW1lKSwgaSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L3NtYXJ0LWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiaXNJbWFnZVJlc291cmNlKHJvdywgaGVhZGVyLnByb3BlcnR5TmFtZSlcIj5cbiAgICAgICAgPHNtYXJ0LWljb25cbiAgICAgICAgICBbaWNvbl09XCJnZXRJbWFnZVJlc291cmNlSWNvbihyb3csIGhlYWRlci5wcm9wZXJ0eU5hbWUpXCJcbiAgICAgICAgICBbY29sb3JdPVwiZ2V0SW1hZ2VSZXNvdXJjZUNvbG9yKHJvdywgaGVhZGVyLnByb3BlcnR5TmFtZSlcIlxuICAgICAgICA+XG4gICAgICAgIDwvc21hcnQtaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cInNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnMgJiYgc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5idXR0b25zXCJcbiAgICAgICAgY2xhc3M9XCJzbWFydC10YWJsZS1idXR0b25zLWNvbFwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2ldLmJ1dHRvbnNcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0J1dHRvbihidXR0b24sIHJvdylcIiBbbmdTd2l0Y2hdPVwiYnV0dG9uLnR5cGVcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKGNsaWNrKT1cImN1c3RvbUJ1dHRvbkNsaWNrZWQoJGV2ZW50LCBidXR0b24sIHJvdylcIlxuICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwic21hcnRUYWJsZUJ1dHRvblR5cGUuSUNPTlwiXG4gICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICBjb2xvcj1cInt7IGJ1dHRvbi5jb2xvciB9fVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzbWFydC1pY29uIHRpdGxlPVwie3sgYnV0dG9uLmxhYmVsIH19XCIgW2ljb25dPVwiYnV0dG9uLmljb24hXCI+PC9zbWFydC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIChjbGljayk9XCJjdXN0b21CdXR0b25DbGlja2VkKCRldmVudCwgYnV0dG9uLCByb3cpXCJcbiAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cInNtYXJ0VGFibGVCdXR0b25UeXBlLk5PUk1BTFwiXG4gICAgICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAgICAgY29sb3I9XCJ7eyBidXR0b24uY29sb3IgfX1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c21hcnQtaWNvbiAqbmdJZj1cImJ1dHRvbi5pY29uXCIgW2ljb25dPVwiYnV0dG9uLmljb25cIj48L3NtYXJ0LWljb24+XG4gICAgICAgICAgICAgIHt7IGJ1dHRvbi5sYWJlbCB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIChjbGljayk9XCJjdXN0b21CdXR0b25DbGlja2VkKCRldmVudCwgYnV0dG9uLCByb3cpXCJcbiAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cInNtYXJ0VGFibGVCdXR0b25UeXBlLlJBSVNFRFwiXG4gICAgICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgICAgICAgIGNvbG9yPVwie3sgYnV0dG9uLmNvbG9yIH19XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNtYXJ0LWljb24gKm5nSWY9XCJidXR0b24uaWNvblwiIFtpY29uXT1cImJ1dHRvbi5pY29uXCI+PC9zbWFydC1pY29uPlxuICAgICAgICAgICAgICB7eyBidXR0b24ubGFiZWwgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPCEtLS0tLS0gTUVOVSAtLS0tLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCJzbWFydFRhYmxlQnV0dG9uVHlwZS5NRU5VXCIgY2xhc3M9XCJtZW51LWJ1dHRvblwiPlxuICAgICAgICAgICAgICA8IS0tLS0tLSBERUZBVUxUX0FDVElPTl9DT0xVTU4gSUQgVE9PTEJBUiAtLS0tLS0+XG4gICAgICAgICAgICAgIDxzbWFydC11aS1hY3Rpb24tdG9vbGJhclxuICAgICAgICAgICAgICAgIFt1aUFjdGlvbk1vZGVsc109XCJnZXRSb3dDb2x1bW5BY3Rpb24oZWxlbWVudCwgZGVmYXVsdEFjdGlvblRvb2xiYXJJZClcIlxuICAgICAgICAgICAgICA+PC9zbWFydC11aS1hY3Rpb24tdG9vbGJhcj5cblxuICAgICAgICAgICAgICA8IS0tLS0tLSBHRU5FUklDIEhBTUJVUkdFUiAtLS0tLS0+XG4gICAgICAgICAgICAgIEBpZiAoc2hvdWxkU2hvd01lbnVCdXR0b24oZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICA8c21hcnQtdWktYWN0aW9uLXRvb2xiYXJcbiAgICAgICAgICAgICAgICAgIFt1aUFjdGlvbk1vZGVsc109XCJnZXRSb3dNZW51QWN0aW9uTW9kZWxBcnJheShlbGVtZW50KVwiXG4gICAgICAgICAgICAgICAgPjwvc21hcnQtdWktYWN0aW9uLXRvb2xiYXI+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPCEtLS0tLS0gTUVOVSAtLS0tLS0+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzICYmIHNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0uaWNvblwiPlxuICAgICAgICA8c21hcnQtaWNvblxuICAgICAgICAgICpuZ0lmPVwic21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5pY29uPy5pY29uXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2ldLmljb24/LmNzc0NsYXNzID8/ICcnXCJcbiAgICAgICAgICBbY29sb3JdPVwic21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5pY29uPy5jb2xvclwiXG4gICAgICAgICAgW2ljb25dPVwic21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5pY29uIS5pY29uXCJcbiAgICAgICAgPlxuICAgICAgICA8L3NtYXJ0LWljb24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzICYmXG4gICAgICAgICAgc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS50cmFuc2xhdG9yICE9PSB1bmRlZmluZWRcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAge3sgc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS50cmFuc2xhdG9yIShnZXRWYWx1ZShyb3csIGhlYWRlci5wcm9wZXJ0eU5hbWUpKSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgIXNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnMgfHxcbiAgICAgICAgICAoc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVycyAmJlxuICAgICAgICAgICAgIXNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0ucHJvcGVydGllcyAmJlxuICAgICAgICAgICAgIXNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0uaWNvbiAmJlxuICAgICAgICAgICAgIXNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0uYnV0dG9ucyAmJlxuICAgICAgICAgICAgIXNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0udHJhbnNsYXRvciAmJlxuICAgICAgICAgICAgIShzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2ldLnByb3BlcnR5TmFtZSA9PT0gJ3NlbGVjdCcpICYmXG4gICAgICAgICAgICAhKHNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0ucHJvcGVydHlOYW1lID09PSAnZXhwYW5kJykpXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxzbWFydC1pY29uXG4gICAgICAgICAgKm5nSWY9XCJoZWFkZXIucHJvcGVydHlOYW1lID09PSAnaWNvbidcIlxuICAgICAgICAgIFtpY29uXT1cImdldFZhbHVlKHJvdywgaGVhZGVyLnByb3BlcnR5TmFtZSkhXCJcbiAgICAgICAgPlxuICAgICAgICA8L3NtYXJ0LWljb24+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICAqbmdJZj1cImhlYWRlci5wcm9wZXJ0eU5hbWUgPT09ICdpbWcnXCJcbiAgICAgICAgICBbc3JjXT1cImdldFZhbHVlKHJvdywgaGVhZGVyLnByb3BlcnR5TmFtZSlcIlxuICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgY2xhc3M9XCJzbWFydHRhYmxlSW1nXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBoZWFkZXIucHJvcGVydHlOYW1lICE9PSAnaWNvbicgJiZcbiAgICAgICAgICAgIGhlYWRlci5wcm9wZXJ0eU5hbWUgIT09ICdpbWcnICYmXG4gICAgICAgICAgICBoZWFkZXIucHJvcGVydHlOYW1lICE9PSAnb3B0aW9uJyAmJlxuICAgICAgICAgICAgaGVhZGVyLnByb3BlcnR5TmFtZSAhPT0gJ2J1dHRvbidcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtpbm5lckh0bWxdPVwiZ2V0VmFsdWUocm93LCBoZWFkZXIucHJvcGVydHlOYW1lKVwiXG4gICAgICAgID48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -611,4 +611,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
611
611
  type: ViewChildren,
612
612
  args: [MatMenuTrigger]
613
613
  }] } });
614
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC10YWJsZS90YWJsZXMvdGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBSUwsU0FBUyxFQUNULFlBQVksRUFDWixnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBR0wsa0JBQWtCLEdBRW5CLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDbkYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scUVBQXFFLENBQUM7QUFDbkgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDM0UsT0FBTyxFQUdMLG9CQUFvQixFQUVwQiw0QkFBNEIsRUFDNUIsK0JBQStCLEVBQy9CLGVBQWUsRUFDZixjQUFjLEdBQ2YsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNyRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN2RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQUl4RCxNQUFNLE9BQU8sS0FBSztJQTRCaEIsWUFBc0IsU0FBa0M7UUFBbEMsY0FBUyxHQUFULFNBQVMsQ0FBeUI7UUEzQmpELGNBQVMsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQVloRCxjQUFTLEdBQUcsY0FBYyxDQUFDO1FBQzNCLHlCQUFvQixHQUFHLG9CQUFvQixDQUFDO1FBQzVDLG9CQUFlLEdBQVUsRUFBRSxDQUFDO1FBQzVCLGNBQVMsR0FBOEIs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LFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLEVBQUU7aUJBQ2I7NEZBSUMsS0FBSztzQkFESixZQUFZO3VCQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQkFLeEQsMkJBQTJCO3NCQUQxQixZQUFZO3VCQUFDLDRCQUE0QjtnQkFHcEIsWUFBWTtzQkFBakMsU0FBUzt1QkFBQyxTQUFTO2dCQUNRLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZTtnQkFFakIsVUFBVTtzQkFBbEIsS0FBSztnQkFPd0IsUUFBUTtzQkFBckMsWUFBWTt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgQ29tcG9uZW50UmVmLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVGhlbWVQYWxldHRlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XHJcbmltcG9ydCB7IE1hdFRhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbXBvbmVudEZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50LWZhY3Rvcnktc2VydmljZS9wcm9qZWN0cyc7XHJcbmltcG9ydCB7XHJcbiAgSW1hZ2VSZXNvdXJjZSxcclxuICBVaUFjdGlvbixcclxuICBVaUFjdGlvbkJ1dHRvblR5cGUsXHJcbiAgVWlBY3Rpb25Ub29sdGlwLFxyXG59IGZyb20gJy4uLy4uL3ZpZXctY29udGV4dC9hcGkvbW9kZWwvbW9kZWxzJztcclxuaW1wb3J0IHsgU21hcnRTdHlsZVV0aWxpdHkgfSBmcm9tICcuLi8uLi92aWV3LWNvbnRleHQvdXRpbGl0eS9zbWFydC1zdHlsZS11dGlsaXR5JztcclxuaW1wb3J0IHsgRGVmYXVsdEFjdGlvbnNQb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZGVmYXVsdC1hY3Rpb25zLXBvcHVwL2RlZmF1bHQtYWN0aW9ucy1wb3B1cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMb2FkaW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9sb2FkaW5nL2xvYWRpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBTbWFydFRhYmxlLFxyXG4gIFNtYXJ0VGFibGVCdXR0b24sXHJcbiAgU21hcnRUYWJsZUJ1dHRvblR5cGUsXHJcbiAgU21hcnRUYWJsZUhlYWRlcixcclxuICBTbWFydFRhYmxlSGVhZGVyUHJvcGVydHlUeXBlLFxyXG4gIFNtYXJ0VGFibGVPcHRpb25CdXR0b25EaXJlY3Rpb24sXHJcbiAgU21hcnRUYWJsZU9yZGVyLFxyXG4gIFNtYXJ0VGFibGVUeXBlLFxyXG59IGZyb20gJy4uL3NtYXJ0dGFibGUubW9kZWwnO1xyXG5pbXBvcnQgeyBTbWFydE9iamVjdFV0aWxpdHkgfSBmcm9tICcuLi8uLi92aWV3LWNvbnRleHQvdXRpbGl0eS9zbWFydC1vYmplY3QtdXRpbGl0eSc7XHJcbmltcG9ydCB7IFNtYXJ0R3JpZFRvb2xiYXJBY3Rpb25zVXRpbCB9IGZyb20gJy4uLy4uL3NtYXJ0LWdyaWQvc21hcnQtZ3JpZC10b29sYmFyLXV0aWwnO1xyXG5pbXBvcnQgeyBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZTogJycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJsZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwdWJsaWMgX2Rlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuICBAVmlld0NoaWxkcmVuKCdleHBhbmRlZEFyZWEnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcclxuICB2Y1JlZj86IFZpZXdDb250YWluZXJSZWZbXTtcclxuICBjb21wb25lbnRSZWY/OiBDb21wb25lbnRSZWY8YW55PjtcclxuXHJcbiAgQFZpZXdDaGlsZHJlbihEZWZhdWx0QWN0aW9uc1BvcHVwQ29tcG9uZW50KVxyXG4gIGRlZmF1bHRBY3Rpb25NZW51Q29tcG9uZW50cyE6IFF1ZXJ5TGlzdDxEZWZhdWx0QWN0aW9uc1BvcHVwQ29tcG9uZW50PjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbXlUYWJsZScpIG15VGFibGVDaGlsZCE6IE1hdFRhYmxlPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnaGVhZGVyVG9vbGJhcicpIGhlYWRlclRvb2xiYXIhOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgpIHNtYXJ0VGFibGUhOiBTbWFydFRhYmxlPGFueT47XHJcbiAgdGFibGVUeXBlID0gU21hcnRUYWJsZVR5cGU7XHJcbiAgc21hcnRUYWJsZUJ1dHRvblR5cGUgPSBTbWFydFRhYmxlQnV0dG9uVHlwZTtcclxuICBoaWdobGlnaHRlZFJvd3M6IGFueVtdID0gW107XHJcbiAgc29ydEV2ZW50OiBTdWJqZWN0PFNtYXJ0VGFibGVIZWFkZXI+ID0gbmV3IFN1YmplY3QoKTtcclxuICBleHBhbmRlZEVsZW1lbnQ6IGFueSB8IG51bGw7XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oTWF0TWVudVRyaWdnZXIpIHRyaWdnZXJzITogUXVlcnlMaXN0PE1hdE1lbnVUcmlnZ2VyPjtcclxuXHJcbiAgZWxlbWVudD86IGFueTtcclxuXHJcbiAgLy8gQ2VsbHMgdG8gVWlBY3Rpb24gbW9kZWxzLCB1c2VkIGZvciB0b29sYmFycyBpbiBjZWxsc1xyXG4gIGNlbGxUb0FjdGlvbk1hcDogUmVjb3JkPHN0cmluZywgYW55W10+ID0ge307XHJcblxyXG4gIG9uU2VsZWN0aW9uQ2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBjZlNlcnZpY2U6IENvbXBvbmVudEZhY3RvcnlTZXJ2aWNlKSB7fVxyXG5cclxuICBwdWJsaWMgYXN5bmNUcmFuc2xhdGlvblJlc3VsdCA9ICh0cmFuc2xhdG9yOiBhbnksIHBhcmFtOiBzdHJpbmcpID0+IHRyYW5zbGF0b3IocGFyYW0pO1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgQUNUSU9OX1NFUEVSQVRPUiA9ICdfYWN0aW9uU2VwYXJhdG9yXyc7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5zb3J0YWJsZSkgdGhpcy5zb3J0RXZlbnQgPSBuZXcgU3ViamVjdCgpO1xyXG4gICAgdGhpcy5jcmVhdGVDZWxsVG9BY3Rpb25NYXAoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZU9uUm93Q2xpY2soZWxlbWVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLnRhYmxlVHlwZSA9PT0gU21hcnRUYWJsZVR5cGUuSU5IRVJJVEVEKSB7XHJcbiAgICAgIHRoaXMub25Sb3dDbGljayhlbGVtZW50KTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5zbWFydFRhYmxlLnRhYmxlVHlwZSA9PT0gU21hcnRUYWJsZVR5cGUuQ0hFQ0tfQk9YKSB7XHJcbiAgICAgIGlmICghdGhpcy5zbWFydFRhYmxlLm9uUm93RG91YmxlQ2xpY2sgJiYgIXRoaXMuc21hcnRUYWJsZS5vblJvd0NsaWNrKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb24oXHJcbiAgICAgICAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHlcclxuICAgICAgICAgICAgPyB0aGlzLnNtYXJ0VGFibGUuZ2V0VmFsdWVEZWVwbHkoZWxlbWVudCwgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5KVxyXG4gICAgICAgICAgICA6IGVsZW1lbnRcclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc21hcnRUYWJsZS5vblJvd0NsaWNrKSB7XHJcbiAgICAgICAgdGhpcy5vblJvd0NsaWNrKGVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc21hcnRUYWJsZS50YWJsZVR5cGUgPT09IFNtYXJ0VGFibGVUeXBlLlJPV19TRUxFQ1QpIHtcclxuICAgICAgdGhpcy5zZXRTZWxlY3Rpb24oXHJcbiAgICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5XHJcbiAgICAgICAgICA/IHRoaXMuc21hcnRUYWJsZS5nZXRWYWx1ZURlZXBseShlbGVtZW50LCB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHkpXHJcbiAgICAgICAgICA6IGVsZW1lbnRcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZVNtYXJ0VGFibGUoc21hcnRUYWJsZTogU21hcnRUYWJsZTxhbnk+KTogdm9pZCB7XHJcbiAgICB0aGlzLnNtYXJ0VGFibGUgPSBzbWFydFRhYmxlO1xyXG4gICAgdGhpcy5yZW5kZXJSb3dzKCk7XHJcbiAgfVxyXG5cclxuICByZW5kZXJSb3dzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jcmVhdGVDZWxsVG9BY3Rpb25NYXAoKTtcclxuICAgIHRoaXMubXlUYWJsZUNoaWxkLnJlbmRlclJvd3MoKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUNlbGxUb0FjdGlvbk1hcCgpIHtcclxuICAgIGNvbnN0IHNlcnZpY2UgPSB0aGlzLnNtYXJ0VGFibGUuZ2V0U2VydmljZVRvVXNlKCk7XHJcbiAgICBjb25zdCBncmlkSWQgPSB0aGlzLnNtYXJ0VGFibGUuZ2V0R3JpZElkKCk7XHJcblxyXG4gICAgaWYgKHNlcnZpY2UgJiYgZ3JpZElkKSB7XHJcbiAgICAgIHRoaXMuY2VsbFRvQWN0aW9uTWFwID0gU21hcnRHcmlkVG9vbGJhckFjdGlvbnNVdGlsLmNhbGN1bGF0ZUNlbGxUb0FjdGlvbk1hcChcclxuICAgICAgICB0aGlzLnNtYXJ0VGFibGUudGFibGVSb3dzLFxyXG4gICAgICAgIHNlcnZpY2UsXHJcbiAgICAgICAgZ3JpZElkXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVPblJvd0RvdWJsZUNsaWNrKGV2ZW50OiBhbnksIGVsZW1lbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5kZWZhdWx0QWN0aW9ucyAmJiB0aGlzLnNtYXJ0VGFibGUuZGVmYXVsdEFjdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLm9wZW5EZWZhdWx0QWN0aW9uc01lbnUoZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuc21hcnRUYWJsZS50YWJsZVR5cGUgPT09IFNtYXJ0VGFibGVUeXBlLklOSEVSSVRFRCkge1xyXG4gICAgICAgIHRoaXMub25Sb3dEb3VibGVDbGljayhlbGVtZW50KTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNtYXJ0VGFibGUudGFibGVUeXBlID09PSBTbWFydFRhYmxlVHlwZS5DSEVDS19CT1gpIHtcclxuICAgICAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uUm93RG91YmxlQ2xpY2spIHtcclxuICAgICAgICAgIHRoaXMub25Sb3dEb3VibGVDbGljayhlbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHR5cGUoKTogdHlwZW9mIFNtYXJ0VGFibGVIZWFkZXJQcm9wZXJ0eVR5cGUge1xyXG4gICAgcmV0dXJuIFNtYXJ0VGFibGVIZWFkZXJQcm9wZXJ0eVR5cGU7XHJcbiAgfVxyXG5cclxuICBzb3J0QnV0dG9uQ2xpY2tlZChldmVudDogYW55LCBoZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5zb3J0RXZlbnQubmV4dChoZWFkZXIpO1xyXG4gIH1cclxuXHJcbiAgY3VzdG9tQnV0dG9uQ2xpY2tlZChcclxuICAgIGV2ZW50OiBhbnksXHJcbiAgICBidXR0b246IFNtYXJ0VGFibGVCdXR0b24sXHJcbiAgICBlbGVtZW50OiBhbnksXHJcbiAgICBidG4/OiBhbnksXHJcbiAgICBjbG9zZT86IGJvb2xlYW5cclxuICApIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgaWYgKGJ0bj8uZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChidXR0b24udHlwZSA9PT0gU21hcnRUYWJsZUJ1dHRvblR5cGUuTUVOVSAmJiBidG4gPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xyXG5cclxuICAgIGlmICghYnV0dG9uLmNhbGxiYWNrKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQnV0dG9uIHdpdGggbmFtZSAke2J1dHRvbi5sYWJlbCB8fCBidXR0b24uaWNvbn0gZG9lcyBub3QgaGF2ZSBhIGNhbGxiYWNrIWApO1xyXG4gICAgfVxyXG4gICAgYnV0dG9uLmNhbGxiYWNrKGJ1dHRvbi5hcmdzLCBlbGVtZW50LCBidG4pO1xyXG4gICAgaWYgKGNsb3NlKSB7XHJcbiAgICAgIGxldCBvcGVuTWVudXMgPSB0aGlzLnRyaWdnZXJzLmZpbHRlcihcclxuICAgICAgICAobWF0TWVudVRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyKSA9PiBtYXRNZW51VHJpZ2dlci5tZW51T3BlblxyXG4gICAgICApO1xyXG4gICAgICBvcGVuTWVudXMuZm9yRWFjaCgobWF0TWVudVRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyKSA9PiB7XHJcbiAgICAgICAgbWF0TWVudVRyaWdnZXIuY2xvc2VNZW51KCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNTb3J0YWJsZShoZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpOiBib29sZWFuIHtcclxuICAgIGxldCBpc1NvcnRhYmxlVGFibGUgPSB0aGlzLnNtYXJ0VGFibGUuc29ydGFibGU7XHJcbiAgICBpZiAoaXNTb3J0YWJsZVRhYmxlKSB7XHJcbiAgICAgIHJldHVybiBoZWFkZXIuaXNTb3J0YWJsZSAhPT0gdW5kZWZpbmVkID8gaGVhZGVyLmlzU29ydGFibGUgOiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0U29ydEljb24oaGVhZGVyOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgbGV0IHRhYmxlSGVhZGVyID0gdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzPy5maW5kKFxyXG4gICAgICAodGFibGVIZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpID0+IHRhYmxlSGVhZGVyLnByb3BlcnR5TmFtZSA9PT0gaGVhZGVyXHJcbiAgICApO1xyXG4gICAgaWYgKHRhYmxlSGVhZGVyICYmIHRhYmxlSGVhZGVyLm9yZGVyKSB7XHJcbiAgICAgIHJldHVybiB0YWJsZUhlYWRlci5vcmRlciA9PT0gU21hcnRUYWJsZU9yZGVyLkFTQ1xyXG4gICAgICAgID8gKHRoaXMuc21hcnRUYWJsZS5zb3J0SWNvbkFzYyA/PyAna2V5Ym9hcmRfYXJyb3dfZG93bicpXHJcbiAgICAgICAgOiAodGhpcy5zbWFydFRhYmxlLnNvcnRJY29uRGVzYyA/PyAna2V5Ym9hcmRfYXJyb3dfdXAnKTtcclxuICAgIH1cclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG4gIGhhc1NvcnROdW1JY29uKGhlYWRlcjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgdGFibGVIZWFkZXIgPSB0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnM/LmZpbmQoXHJcbiAgICAgICh0YWJsZUhlYWRlcjogU21hcnRUYWJsZUhlYWRlcikgPT4gdGFibGVIZWFkZXIucHJvcGVydHlOYW1lID09PSBoZWFkZXJcclxuICAgICk7XHJcbiAgICByZXR1cm4gdGFibGVIZWFkZXI/Lm9yZGVyTnVtYmVyICE9PSB1bmRlZmluZWQ7XHJcbiAgfVxyXG4gIGdldFNvcnROdW1JY29uKGhlYWRlcjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCB0YWJsZUhlYWRlciA9IHRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVycz8uZmluZChcclxuICAgICAgKHRhYmxlSGVhZGVyOiBTbWFydFRhYmxlSGVhZGVyKSA9PiB0YWJsZUhlYWRlci5wcm9wZXJ0eU5hbWUgPT09IGhlYWRlclxyXG4gICAgKTtcclxuICAgIGlmICh0YWJsZUhlYWRlciAmJiB0YWJsZUhlYWRlci5vcmRlck51bWJlcikge1xyXG4gICAgICByZXR1cm4gYGZpbHRlcl8ke3RhYmxlSGVhZGVyLm9yZGVyTnVtYmVyfWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBnZXRUb29sVGlwKGVsZW1lbnQ6IGFueSwgaGVhZGVySW5kZXg6IG51bWJlcik6IFVpQWN0aW9uVG9vbHRpcCB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAoIXRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVycykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0N1c3RvbVRhYmxlSGVhZGVycyBwcm9wZXJ0eSBpcyBtaXNzaW5nJyk7XHJcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaGVhZGVySW5kZXhdLnByb3BlcnRpZXMpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDdXN0b21UYWJsZUhlYWRlciB3aXRoIGluZGV4ICR7aGVhZGVySW5kZXh9IGRvZXMgbm90IGhhdmUgcHJvcGVydGllc2ApO1xyXG4gICAgfSBlbHNlIGlmICghdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2hlYWRlckluZGV4XS5wcm9wZXJ0aWVzIS5pY29ucykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1c3RvbVRhYmxlSGVhZGVyIHdpdGggaW5kZXggJHtoZWFkZXJJbmRleH0gZG9lcyBub3QgaGF2ZSBpY29ucyBkZWZpbmVkYCk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHRvb2xUaXBDb2x1bW4gPVxyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaGVhZGVySW5kZXhdLnByb3BlcnRpZXM/LnRvb2xUaXBDb2x1bW47XHJcbiAgICByZXR1cm4gdG9vbFRpcENvbHVtbiA/IHRoaXMuZ2V0VmFsdWUoZWxlbWVudCwgdG9vbFRpcENvbHVtbikgOiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBnZXRJY29uKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuLCBoZWFkZXJJbmRleDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmICghdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ3VzdG9tVGFibGVIZWFkZXJzIHByb3BlcnR5IGlzIG1pc3NpbmcnKTtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1toZWFkZXJJbmRleF0ucHJvcGVydGllcykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1c3RvbVRhYmxlSGVhZGVyIHdpdGggaW5kZXggJHtoZWFkZXJJbmRleH0gZG9lcyBub3QgaGF2ZSBwcm9wZXJ0aWVzYCk7XHJcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaGVhZGVySW5kZXhdLnByb3BlcnRpZXMhLmljb25zKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VzdG9tVGFibGVIZWFkZXIgd2l0aCBpbmRleCAke2hlYWRlckluZGV4fSBkb2VzIG5vdCBoYXZlIGljb25zIGRlZmluZWRgKTtcclxuICAgIH1cclxuICAgIGxldCBjdXN0b21UYWJsZUhlYWRlckljb25zID1cclxuICAgICAgdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2hlYWRlckluZGV4XS5wcm9wZXJ0aWVzIS5pY29ucztcclxuXHJcbiAgICBsZXQgaWNvbjogc3RyaW5nID0gJyc7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjdXN0b21UYWJsZUhlYWRlckljb25zIS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgY3VzdG9tVGFibGVIZWFkZXJJY29uID0gY3VzdG9tVGFibGVIZWFkZXJJY29ucyFbaV07XHJcbiAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVOdWxsICYmXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlTnVsbCA9PT0gdmFsdWVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGljb24gPSBjdXN0b21UYWJsZUhlYWRlckljb24uaWNvbjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVCaWdnZXJUaGFuTnVtYmVyICYmXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlQmlnZ2VyVGhhbk51bWJlciA8IHZhbHVlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpY29uID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmljb247XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZVNtYWxsZXJUaGFuTnVtYmVyICYmXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlU21hbGxlclRoYW5OdW1iZXIgPiB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgaWNvbiA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbi5pY29uO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVFcXVhbHNXaXRoTnVtYmVyICYmXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlRXF1YWxzV2l0aE51bWJlciA9PT0gdmFsdWVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGljb24gPSBjdXN0b21UYWJsZUhlYWRlckljb24uaWNvbjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUVxdWFsc1dpdGhTdHJpbmcgJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVFcXVhbHNXaXRoU3RyaW5nID09PSB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgaWNvbiA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbi5pY29uO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUJvb2xlYW4gJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVCb29sZWFuID09PSB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgaWNvbiA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbi5pY29uO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGljb247XHJcbiAgfVxyXG5cclxuICBnZXRDb2xvcih2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiwgaGVhZGVySW5kZXg6IG51bWJlcik6IFRoZW1lUGFsZXR0ZSB7XHJcbiAgICBpZiAoIXRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVycykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0N1c3RvbVRhYmxlSGVhZGVycyBwcm9wZXJ0eSBpcyBtaXNzaW5nJyk7XHJcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaGVhZGVySW5kZXhdLnByb3BlcnRpZXMpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDdXN0b21UYWJsZUhlYWRlciB3aXRoIGluZGV4ICR7aGVhZGVySW5kZXh9IGRvZXMgbm90IGhhdmUgcHJvcGVydGllc2ApO1xyXG4gICAgfSBlbHNlIGlmICghdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2hlYWRlckluZGV4XS5wcm9wZXJ0aWVzIS5pY29ucykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1c3RvbVRhYmxlSGVhZGVyIHdpdGggaW5kZXggJHtoZWFkZXJJbmRleH0gZG9lcyBub3QgaGF2ZSBpY29ucyBkZWZpbmVkYCk7XHJcbiAgICB9XHJcbiAgICBsZXQgY3VzdG9tVGFibGVIZWFkZXJJY29ucyA9XHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1toZWFkZXJJbmRleF0ucHJvcGVydGllcyEuaWNvbnM7XHJcblxyXG4gICAgbGV0IGNvbG9yOiBUaGVtZVBhbGV0dGUgPSAncHJpbWFyeSc7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjdXN0b21UYWJsZUhlYWRlckljb25zIS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgY3VzdG9tVGFibGVIZWFkZXJJY29uID0gY3VzdG9tVGFibGVIZWFkZXJJY29ucyFbaV07XHJcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUJpZ2dlclRoYW5OdW1iZXIgJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVCaWdnZXJUaGFuTnVtYmVyIDwgdmFsdWVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGNvbG9yID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmNvbG9yO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVTbWFsbGVyVGhhbk51bWJlciAmJlxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZVNtYWxsZXJUaGFuTnVtYmVyID4gdmFsdWVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGNvbG9yID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmNvbG9yO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVFcXVhbHNXaXRoTnVtYmVyICYmXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlRXF1YWxzV2l0aE51bWJlciA9PT0gdmFsdWVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGNvbG9yID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmNvbG9yO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlRXF1YWxzV2l0aFN0cmluZyAmJlxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUVxdWFsc1dpdGhTdHJpbmcgPT09IHZhbHVlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBjb2xvciA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbi5jb2xvcjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVCb29sZWFuICYmXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlQm9vbGVhbiA9PT0gdmFsdWVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGNvbG9yID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmNvbG9yO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNvbG9yO1xyXG4gIH1cclxuXHJcbiAgdGFibGVPcHRpb25CdXR0b25EaXJlY3Rpb24oKTogdHlwZW9mIFNtYXJ0VGFibGVPcHRpb25CdXR0b25EaXJlY3Rpb24ge1xyXG4gICAgcmV0dXJuIFNtYXJ0VGFibGVPcHRpb25CdXR0b25EaXJlY3Rpb247XHJcbiAgfVxyXG5cclxuICBpc0FsbFNlbGVjdGVkKCkge1xyXG4gICAgY29uc3QgbnVtU2VsZWN0ZWQgPSB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uIS5zZWxlY3RlZC5sZW5ndGg7XHJcbiAgICBjb25zdCBudW1Sb3dzID0gdGhpcy5zbWFydFRhYmxlLnRhYmxlUm93cy5sZW5ndGg7XHJcbiAgICByZXR1cm4gbnVtU2VsZWN0ZWQgPT09IG51bVJvd3M7XHJcbiAgfVxyXG5cclxuICAvKiogU2VsZWN0cyBhbGwgcm93cyBpZiB0aGV5IGFyZSBub3QgYWxsIHNlbGVjdGVkOyBvdGhlcndpc2UgY2xlYXIgc2VsZWN0aW9uLiAqL1xyXG4gIHRvZ2dsZUFsbFJvd3MoKSB7XHJcbiAgICBpZiAodGhpcy5pc0FsbFNlbGVjdGVkKCkpIHtcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbiEuY2xlYXIoKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnNtYXJ0VGFibGUub25BbGxTZWxlY3Rpb24pIHtcclxuICAgICAgICB0aGlzLnNtYXJ0VGFibGUub25BbGxTZWxlY3Rpb24oZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUubWF4TnVtT2ZTZWxlY3RhYmxlUm93cykge1xyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uIS5jbGVhcigpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuc21hcnRUYWJsZS5vbkFsbFNlbGVjdGlvbikge1xyXG4gICAgICAgIHRoaXMuc21hcnRUYWJsZS5vbkFsbFNlbGVjdGlvbihmYWxzZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5KSB7XHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb24hLnNlbGVjdChcclxuICAgICAgICAuLi50aGlzLnNtYXJ0VGFibGUudGFibGVSb3dzLm1hcCgocm93OiBhbnkpID0+XHJcbiAgICAgICAgICB0aGlzLnNtYXJ0VGFibGUuZ2V0VmFsdWVEZWVwbHkocm93LCB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHkhKVxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb24hLnNlbGVjdCguLi50aGlzLnNtYXJ0VGFibGUudGFibGVSb3dzKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUub25BbGxTZWxlY3Rpb24pIHtcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLm9uQWxsU2VsZWN0aW9uKHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIFRoZSBsYWJlbCBmb3IgdGhlIGNoZWNrYm94IG9uIHRoZSBwYXNzZWQgcm93ICovXHJcbiAgY2hlY2tib3hMYWJlbChyb3c/OiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFyb3cpIHtcclxuICAgICAgcmV0dXJuIGAke3RoaXMuaXNBbGxTZWxlY3RlZCgpID8gJ2Rlc2VsZWN0JyA6ICdzZWxlY3QnfSBhbGxgO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGAke3RoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb24hLmlzU2VsZWN0ZWQocm93KSA/ICdkZXNlbGVjdCcgOiAnc2VsZWN0J30gcm93ICR7XHJcbiAgICAgIHJvdy5wb3NpdGlvbiArIDFcclxuICAgIH1gO1xyXG4gIH1cclxuXHJcbiAgaXNIaWdobGlnaHRlZChyb3c6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5oaWdobGlnaHRQcm9wZXJ0eSkge1xyXG4gICAgICBpZiAocm93WydkYXRhJ11bdGhpcy5zbWFydFRhYmxlLmhpZ2hsaWdodFByb3BlcnR5XSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmhpZ2hsaWdodGVkUm93cyB8fCAhdGhpcy5oaWdobGlnaHRlZFJvd3MubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodGVkUm93cy5pbmNsdWRlcyhyb3cpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Um93Q2xhc3Nlcyhyb3c6IGFueSkge1xyXG4gICAgbGV0IGNsYXNzZXNUb0FkZDogc3RyaW5nW10gPSBbXTtcclxuICAgIGxldCBjbGFzc2VzVG9SZW1vdmU6IHN0cmluZ1tdID0gW107XHJcbiAgICBjbGFzc2VzVG9BZGQucHVzaCh0aGlzLmlzSGlnaGxpZ2h0ZWQocm93KSA/IHRoaXMuc21hcnRUYWJsZS5oaWdobGlnaHRDbGFzcyEgOiAndW5zZWxlY3RlZCcpO1xyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5ob3Zlcikge1xyXG4gICAgICBjbGFzc2VzVG9BZGQucHVzaCgnc21hcnRUYWJsZVJvd0hvdmVyJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjbGFzc2VzVG9SZW1vdmUucHVzaCgnc21hcnRUYWJsZVJvd0hvdmVyJyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5pc1NlbGVjdGVkKHJvdykpIHtcclxuICAgICAgY2xhc3Nlc1RvQWRkLnB1c2goJ3NlbGVjdGVkJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjbGFzc2VzVG9SZW1vdmUucHVzaCgnc2VsZWN0ZWQnKTtcclxuICAgIH1cclxuICAgIHJldHVybiBTbWFydFN0eWxlVXRpbGl0eS5nZXROZ0NsYXNzZXMocm93LnN0eWxlLCBjbGFzc2VzVG9BZGQsIGNsYXNzZXNUb1JlbW92ZSk7XHJcbiAgfVxyXG5cclxuICBnZXRSb3dTdHlsZXMocm93OiBhbnkpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB9IHtcclxuICAgIHJldHVybiBTbWFydFN0eWxlVXRpbGl0eS5nZXROZ1N0eWxlcyhyb3cuc3R5bGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29sdW1uQ2xhc3NlcyhoZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpIHtcclxuICAgIHJldHVybiBTbWFydFN0eWxlVXRpbGl0eS5nZXROZ0NsYXNzZXMoaGVhZGVyLnN0eWxlKTtcclxuICB9XHJcblxyXG4gIGdldENvbHVtblN0eWxlcyhoZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpIHtcclxuICAgIHJldHVybiBTbWFydFN0eWxlVXRpbGl0eS5nZXROZ1N0eWxlcyhoZWFkZXIuc3R5bGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b0NhbWVsQ2FzZShjc3M6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gY3NzLnJlcGxhY2UoLy0oW2Etel0pL2csIGZ1bmN0aW9uIChnKSB7XHJcbiAgICAgIHJldHVybiBnWzFdLnRvVXBwZXJDYXNlKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uUm93Q2xpY2socm93OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUuaGlnaGxpZ2h0T25Sb3dDbGljaykge1xyXG4gICAgICBpZiAodGhpcy5pc0hpZ2hsaWdodGVkKHJvdykpIHtcclxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmhpZ2hsaWdodGVkUm93cy5pbmRleE9mKHJvdywgMCk7XHJcbiAgICAgICAgdGhpcy5oaWdobGlnaHRlZFJvd3Muc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgfSBlbHNlIGlmICghdGhpcy5oaWdobGlnaHRlZFJvd3MgfHwgIXRoaXMuaGlnaGxpZ2h0ZWRSb3dzLmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRSb3dzID0gW107XHJcbiAgICAgICAgdGhpcy5oaWdobGlnaHRlZFJvd3MucHVzaChyb3cpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRSb3dzLnB1c2gocm93KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5leHBhbmRhYmxlICYmICF0aGlzLnNtYXJ0VGFibGUub25Sb3dEb3VibGVDbGljaykge1xyXG4gICAgICB0aGlzLm9uVG9nZ2xlKHJvdyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uUm93Q2xpY2spIHtcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLm9uUm93Q2xpY2socm93KTtcclxuICAgIH1cclxuICB9XHJcbiAgb25Sb3dEb3VibGVDbGljayhyb3c6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5oaWdobGlnaHRPblJvd0NsaWNrKSB7XHJcbiAgICAgIGlmICh0aGlzLmlzSGlnaGxpZ2h0ZWQocm93KSkge1xyXG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuaGlnaGxpZ2h0ZWRSb3dzLmluZGV4T2Yocm93LCAwKTtcclxuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkUm93cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLmhpZ2hsaWdodGVkUm93cyB8fCAhdGhpcy5oaWdobGlnaHRlZFJvd3MubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5oaWdobGlnaHRlZFJvd3MgPSBbXTtcclxuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkUm93cy5wdXNoKHJvdyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5oaWdobGlnaHRlZFJvd3MucHVzaChyb3cpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uUm93RG91YmxlQ2xpY2spIHtcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLm9uUm93RG91YmxlQ2xpY2socm93KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIG9uVG9nZ2xlKGVsZW1lbnQ6IGFueSwgZXZlbnQ/OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICghdGhpcy5zbWFydFRhYmxlLnJvd0V4cGFuZGVyKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAnU21hcnRUYWJsZVJvd0V4cGFuZGVyIG5vdCBmb3VuZCEuIFBsZWFzZSBwcm92aWRlIGEgU21hcnRUYWJsZVJvd0V4cGFuZGVyIGltcGxlbWVudGF0aW9uLidcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBvbGRJbmRleCA9IHRoaXMuc21hcnRUYWJsZS50YWJsZVJvd3MuZmluZEluZGV4KFxyXG4gICAgICAoZWxlbWVudCkgPT4gZWxlbWVudCA9PT0gdGhpcy5leHBhbmRlZEVsZW1lbnRcclxuICAgICk7XHJcbiAgICBpZiAob2xkSW5kZXggIT09IC0xKSB7XHJcbiAgICAgIGxldCByZWYgPSB0aGlzLnZjUmVmIS5maWx0ZXIoKGVsZW1lbnQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4gaW5kZXggPT09IG9sZEluZGV4KTtcclxuICAgICAgcmVmWzBdLmNsZWFyKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmV4cGFuZGVkRWxlbWVudCA9IHRoaXMuZXhwYW5kZWRFbGVtZW50ID09PSBlbGVtZW50ID8gbnVsbCA6IGVsZW1lbnQ7XHJcblxyXG4gICAgbGV0IG5ld0luZGV4ID0gdGhpcy5zbWFydFRhYmxlLnRhYmxlUm93cy5maW5kSW5kZXgoXHJcbiAgICAgIChlbGVtZW50KSA9PiBlbGVtZW50ID09PSB0aGlzLmV4cGFuZGVkRWxlbWVudFxyXG4gICAgKTtcclxuXHJcbiAgICBsZXQgcm93RGF0YVJlc3BvbnNlO1xyXG5cclxuICAgIGlmIChuZXdJbmRleCAhPT0gLTEpIHtcclxuICAgICAgaWYgKHRoaXMuc21hcnRUYWJsZS5hc3luY09uRXhwYW5kKSB7XHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLmNmU2VydmljZS5jcmVhdGVDb21wb25lbnQoXHJcbiAgICAgICAgICB0aGlzLnZjUmVmPy5maWx0ZXIoKGVsZW1lbnQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4gaW5kZXggPT09IG5ld0luZGV4KVswXSEsXHJcbiAgICAgICAgICBMb2FkaW5nQ29tcG9uZW50LFxyXG4gICAgICAgICAgbmV3IE1hcDxzdHJpbmcsIGFueT4oKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHJvd0RhdGFSZXNwb25zZSA9IGF3YWl0IHRoaXMuc21hcnRUYWJsZS5yb3dFeHBhbmRlcj8uZXhwYW5kQXN5bmMobmV3SW5kZXgpO1xyXG5cclxuICAgICAgICBsZXQgcmVmID0gdGhpcy52Y1JlZiEuZmlsdGVyKChlbGVtZW50OiBhbnksIGluZGV4OiBudW1iZXIpID0+IGluZGV4ID09PSBuZXdJbmRleClbMF0hO1xyXG4gICAgICAgIHJlZi5jbGVhcigpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMuY2ZTZXJ2aWNlLmNyZWF0ZUNvbXBvbmVudChcclxuICAgICAgICB0aGlzLnZjUmVmPy5maWx0ZXIoKGVsZW1lbnQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4gaW5kZXggPT09IG5ld0luZGV4KVswXSEsXHJcbiAgICAgICAgdGhpcy5zbWFydFRhYmxlLmV4cGFuZGVkQ29tcG9uZW50LFxyXG4gICAgICAgIG5ldyBNYXA8c3RyaW5nLCBhbnk+KFtbJ3Jvd0RhdGEnLCByb3dEYXRhUmVzcG9uc2VdXSlcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuZWxlbWVudCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFNlbGVjdGlvbihlbGVtZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLm1heE51bU9mU2VsZWN0YWJsZVJvd3MgJiZcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbiEuc2VsZWN0ZWQubGVuZ3RoID09PSB0aGlzLnNtYXJ0VGFibGUubWF4TnVtT2ZTZWxlY3RhYmxlUm93c1xyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb24/LnRvZ2dsZShlbGVtZW50KTtcclxuICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2VkLm5leHQoKTtcclxuXHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uU2VsZWN0aW9uKSB7XHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5vblNlbGVjdGlvbihlbGVtZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3dNZW51QnV0dG9uKGVsZW1lbnQ6IGFueSwgYnV0dG9uOiBTbWFydFRhYmxlQnV0dG9uKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgaGVhZGVyczogc3RyaW5nW10gPSB0aGlzLnNtYXJ0VGFibGUudGFibGVIZWFkZXJzLm1hcCgoaGVhZGVyKSA9PlxyXG4gICAgICB0aGlzLm9yaWdpbmFsUHJvcGVydHkoaGVhZGVyKVxyXG4gICAgKTtcclxuICAgIGxldCBzaG93TWVudSA9IFNtYXJ0R3JpZFRvb2xiYXJBY3Rpb25zVXRpbC5zaG93TWVudShlbGVtZW50LCBoZWFkZXJzKTtcclxuXHJcbiAgICBpZiAoIXNob3dNZW51KSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYnV0dG9uLm1lbnVJdGVtQnV0dG9ucykge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSBpZiAoYnV0dG9uLm1lbnVJdGVtQnV0dG9uc1Byb3BlcnR5TmFtZSkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGxldCBsZW5ndGggPSB0aGlzLmdldFZhbHVlKGVsZW1lbnQsIGJ1dHRvbi5tZW51SXRlbUJ1dHRvbnNQcm9wZXJ0eU5hbWUhKS5sZW5ndGg7XHJcbiAgICAgICAgcmV0dXJuIGxlbmd0aCA+IDA7XHJcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXRWYWx1ZShlbGVtZW50OiBhbnksIGhlYWRlcjogc3RyaW5nKTogYW55IHtcclxuICAgIHJldHVybiBTbWFydE9iamVjdFV0aWxpdHkuZ2V0VmFsdWVCeVBhdGgoZWxlbWVudCwgaGVhZGVyKTtcclxuICB9XHJcblxyXG4gIHNob3dCdXR0b24oYnV0dG9uOiBTbWFydFRhYmxlQnV0dG9uLCBlbGVtZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmIChidXR0b24uc2hvd0J1dHRvbklmKSB7XHJcbiAgICAgIHJldHVybiBidXR0b24uc2hvd0J1dHRvbklmKGVsZW1lbnQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBpc0Rpc2FibGVkKGVsZW1lbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5pc1Jvd0Rpc2FibGVkUHJvcGVydHlOYW1lKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnNtYXJ0VGFibGUuZ2V0VmFsdWVEZWVwbHkoZWxlbWVudCwgdGhpcy5zbWFydFRhYmxlLmlzUm93RGlzYWJsZWRQcm9wZXJ0eU5hbWUpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNtYXJ0VGFibGUuc2VsZWN0YWJsZVByb3BlcnR5TmFtZSkge1xyXG4gICAgICBjb25zdCBzZWxlY3RhYmxlID0gdGhpcy5zbWFydFRhYmxlLmdldFZhbHVlRGVlcGx5KFxyXG4gICAgICAgIGVsZW1lbnQsXHJcbiAgICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGFibGVQcm9wZXJ0eU5hbWVcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIHNlbGVjdGFibGUgPT09IHVuZGVmaW5lZCB8fCBzZWxlY3RhYmxlID09PSBudWxsID8gZmFsc2UgOiAhc2VsZWN0YWJsZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGlzU2VsZWN0ZWQoZWxlbWVudDogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uPy5pc1NlbGVjdGVkKFxyXG4gICAgICAgIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb25Qcm9wZXJ0eVxyXG4gICAgICAgICAgPyB0aGlzLnNtYXJ0VGFibGUuZ2V0VmFsdWVEZWVwbHkoZWxlbWVudCwgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5KVxyXG4gICAgICAgICAgOiBlbGVtZW50XHJcbiAgICAgICkgPz8gZmFsc2VcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBvcmlnaW5hbFByb3BlcnR5KGhlYWRlcjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmIChoZWFkZXIuc3RhcnRzV2l0aCgnZGF0YS4nKSkge1xyXG4gICAgICByZXR1cm4gaGVhZGVyLnN1YnN0cmluZygnZGF0YS4nLmxlbmd0aCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaGVhZGVyO1xyXG4gIH1cclxuXHJcbiAgaXNJbWFnZVJlc291cmNlKGVsZW1lbnQ6IGFueSwgaGVhZGVyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmICghZWxlbWVudC5pY29ucykge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBsZXQgcHJvcGVydHkgPSB0aGlzLm9yaWdpbmFsUHJvcGVydHkoaGVhZGVyKTtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyhlbGVtZW50Lmljb25zKS5zb21lKChrZXkpID0+IGtleSA9PT0gcHJvcGVydHkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW1hZ2VSZXNvdXJjZUljb25zKGVsZW1lbnQ6IGFueSwgaGVhZGVyOiBzdHJpbmcpOiBJbWFnZVJlc291cmNlW10ge1xyXG4gICAgaWYgKGVsZW1lbnQ/Lmljb25zKSB7XHJcbiAgICAgIGxldCBpY29uQ29kZXMgPSBlbGVtZW50Py5pY29uc1t0aGlzLm9yaWdpbmFsUHJvcGVydHkoaGVhZGVyKV07XHJcbiAgICAgIHJldHVybiBpY29uQ29kZXM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW107XHJcbiAgfVxyXG5cclxuICBnZXRJbWFnZVJlc291cmNlSWNvbihlbGVtZW50OiBhbnksIGhlYWRlcjogc3RyaW5nKTogYW55IHtcclxuICAgIHJldHVybiBlbGVtZW50Lmljb25zW3RoaXMub3JpZ2luYWxQcm9wZXJ0eShoZWFkZXIpXS5pZGVudGlmaWVyO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW1hZ2VSZXNvdXJjZUNvbG9yKGVsZW1lbnQ6IGFueSwgaGVhZGVyOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgcmV0dXJuIGVsZW1lbnQuaWNvbnNbdGhpcy5vcmlnaW5hbFByb3BlcnR5KGhlYWRlcildLmNvbG9yID8/ICdwcmltYXJ5JztcclxuICB9XHJcblxyXG4gIGdldEltYWdlUmVzb3VyY2VTdHlsZShyZXNvdXJjZTogSW1hZ2VSZXNvdXJjZSk6IGFueSB7XHJcbiAgICByZXR1cm4gcmVzb3VyY2Uuc3R5bGUgPyByZXNvdXJjZS5zdHlsZSA6IHt9O1xyXG4gIH1cclxuXHJcbiAgb3BlbkRlZmF1bHRBY3Rpb25zTWVudShldmVudDogYW55LCByb3c6IGFueSkge1xyXG4gICAgbGV0IGFjdGlvbkNvZGVzRnJvbVJvdyA9IHJvdz8uYWN0aW9ucz8ubWFwKChhY3Rpb246IFVpQWN0aW9uKSA9PiBhY3Rpb24uY29kZSk7XHJcbiAgICBpZiAoIWFjdGlvbkNvZGVzRnJvbVJvdykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgZmlsdGVyZWRBY3Rpb25zID0gdGhpcy5zbWFydFRhYmxlLmRlZmF1bHRBY3Rpb25zPy5maWx0ZXIoKGFjdGlvbjogU21hcnRUYWJsZUJ1dHRvbikgPT5cclxuICAgICAgYWN0aW9uQ29kZXNGcm9tUm93LmluY2x1ZGVzKGFjdGlvbi5jb2RlISlcclxuICAgICk7XHJcblxyXG4gICAgaWYgKGZpbHRlcmVkQWN0aW9ucyAmJiBmaWx0ZXJlZEFjdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBpZiAoZmlsdGVyZWRBY3Rpb25zLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgIGlmICh0aGlzLnNtYXJ0VGFibGUub25Sb3dEb3VibGVDbGljaykge1xyXG4gICAgICAgICAgdGhpcy5zbWFydFRhYmxlLm9uUm93RG91YmxlQ2xpY2socm93KTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5kZWZhdWx0QWN0aW9uTWVudUNvbXBvbmVudHNcclxuICAgICAgICAudG9BcnJheSgpXHJcbiAgICAgICAgLmZpbmQoKGNvbXA6IERlZmF1bHRBY3Rpb25zUG9wdXBDb21wb25lbnQpID0+IGNvbXAucm93LmlkID09PSByb3cuaWQpXHJcbiAgICAgICAgPy5vcGVuRGVmYXVsdEFjdGlvbnNNZW51KGV2ZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldERlZmF1bHRBY3Rpb25zRm9yUm93KGVsZW1lbnQ6IGFueSk6IE1hcDxTbWFydFRhYmxlQnV0dG9uLCBVaUFjdGlvbj4gfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKGVsZW1lbnQ/LmFjdGlvbnMpIHtcclxuICAgICAgY29uc3QgYWN0aW9uQ29kZXNGcm9tUm93ID0gbmV3IE1hcDxzdHJpbmcsIFVpQWN0aW9uPihcclxuICAgICAgICBlbGVtZW50Py5hY3Rpb25zPy5tYXAoKGFjdGlvbjogVWlBY3Rpb24pID0+IFthY3Rpb24uY29kZSwgYWN0aW9uXSlcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIG5ldyBNYXA8U21hcnRUYWJsZUJ1dHRvbiwgVWlBY3Rpb24+KFxyXG4gICAgICAgIHRoaXMuc21hcnRUYWJsZS5kZWZhdWx0QWN0aW9uc1xyXG4gICAgICAgICAgPy5maWx0ZXIoKGFjdGlvbjogU21hcnRUYWJsZUJ1dHRvbikgPT4gYWN0aW9uQ29kZXNGcm9tUm93LmhhcyhhY3Rpb24uY29kZSEpKVxyXG4gICAgICAgICAgLm1hcCgoYWN0aW9uOiBTbWFydFRhYmxlQnV0dG9uKSA9PiBbYWN0aW9uLCBhY3Rpb25Db2Rlc0Zyb21Sb3cuZ2V0KGFjdGlvbi5jb2RlISkhXSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICAvLyAtLS0tIFRvb2xiYXIgLS0tLVxyXG4gIGRlZmF1bHRBY3Rpb25Ub29sYmFySWQ6IHN0cmluZyA9IFNtYXJ0R3JpZFRvb2xiYXJBY3Rpb25zVXRpbC5kZWZhdWx0QWN0aW9uVG9vbGJhcklkO1xyXG5cclxuICBnZXRSb3dDb2x1bW5BY3Rpb24ocm93OiBhbnksIGhlYWRlcjogc3RyaW5nKTogYW55W10ge1xyXG4gICAgcmV0dXJuIFNtYXJ0R3JpZFRvb2xiYXJBY3Rpb25zVXRpbC5nZXRBY3Rpb25Nb2RlbHNGcm9tTWFwKFxyXG4gICAgICB0aGlzLmNlbGxUb0FjdGlvbk1hcCxcclxuICAgICAgcm93LFxyXG4gICAgICB0aGlzLm9yaWdpbmFsUHJvcGVydHkoaGVhZGVyKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHNob3dDZWxsVG9vbGJhcihyb3c6IGFueSwgY29sdW1uTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gU21hcnRHcmlkVG9vbGJhckFjdGlvbnNVdGlsLnNob3dUb29sYmFyKHJvdywgdGhpcy5vcmlnaW5hbFByb3BlcnR5KGNvbHVtbk5hbWUpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcm93TWVudUFjdGlvbk1vZGVsQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xyXG5cclxuICBnZXRSb3dNZW51QWN0aW9uTW9kZWwoZWxlbWVudDogYW55KTogYW55IHtcclxuICAgIGNvbnN0IHNlcnZpY2UgPSB0aGlzLnNtYXJ0VGFibGUuZ2V0U2VydmljZVRvVXNlKCk7XHJcbiAgICBjb25zdCBncmlkSWQgPSB0aGlzLnNtYXJ0VGFibGUuZ2V0R3JpZElkKCk7XHJcblxyXG4gICAgaWYgKCFzZXJ2aWNlIHx8ICFncmlkSWQpIHJldHVybiB1bmRlZmluZWQ7XHJcblxyXG4gICAgY29uc3QgbGVmdG92ZXJBY3Rpb25zID0gU21hcnRHcmlkVG9vbGJhckFjdGlvbnNVdGlsLmNhbGN1bGF0ZU1lbnVBY3Rpb25Nb2RlbHMoXHJcbiAgICAgIGVsZW1lbnQsXHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS50YWJsZUhlYWRlcnMsXHJcbiAgICAgIHNlcnZpY2UsXHJcbiAgICAgIGdyaWRJZFxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBtZW51VWlBY3Rpb246IFVpQWN0aW9uID0ge1xyXG4gICAgICBjb2RlOiAncm93TWVudScsXHJcbiAgICAgIGRlc2NyaXB0b3I6IHtcclxuICAgICAgICBpY29uOiAnbW9yZV92ZXJ0JyxcclxuICAgICAgICB0aXRsZTogJycsXHJcbiAgICAgICAgdHlwZTogVWlBY3Rpb25CdXR0b25UeXBlLklDT04sXHJcbiAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcclxuICAgICAgfSxcclxuICAgICAgc3ViQWN0aW9uczogbGVmdG92ZXJBY3Rpb25zLm1hcCgobSkgPT4gbS51aUFjdGlvbiksXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHNlcnZpY2VUb1VzZTogc2VydmljZSxcclxuICAgICAgdWlBY3Rpb246IG1lbnVVaUFjdGlvbixcclxuICAgICAgbm9kZUlkOiBlbGVtZW50LmlkLFxyXG4gICAgICB3aWRnZXRJZDogZ3JpZElkLFxyXG4gICAgfTtcclxuICB9XHJcbiAgcHJpdmF0ZSByb3dNZW51QWN0aW9uTW9kZWxBcnJheUNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIGFueVtdPigpO1xyXG5cclxuICBnZXRSb3dNZW51QWN0aW9uTW9kZWxBcnJheShlbGVtZW50OiBhbnkpOiBhbnlbXSB7XHJcbiAgICB2YXIgY2FjaGVLZXkgPSBlbGVtZW50LmlkO1xyXG4gICAgaWYgKHRoaXMucm93TWVudUFjdGlvbk1vZGVsQXJyYXlDYWNoZS5oYXMoY2FjaGVLZXkpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJvd01lbnVBY3Rpb25Nb2RlbEFycmF5Q2FjaGUuZ2V0KGNhY2hlS2V5KSE7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIG1vZGVsID0gdGhpcy5nZXRSb3dNZW51QWN0aW9uTW9kZWwoZWxlbWVudCk7XHJcbiAgICB2YXIgYXJyID0gbW9kZWwgPyBbbW9kZWxdIDogW107XHJcbiAgICB0aGlzLnJvd01lbnVBY3Rpb25Nb2RlbEFycmF5Q2FjaGUuc2V0KGNhY2hlS2V5LCBhcnIpO1xyXG4gICAgcmV0dXJuIGFycjtcclxuICB9XHJcblxyXG4gIHNob3VsZFNob3dNZW51QnV0dG9uKHJvdzogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gU21hcnRHcmlkVG9vbGJhckFjdGlvbnNVdGlsLnNob3dNZW51KHJvdywgdGhpcy5zbWFydFRhYmxlLnRhYmxlSGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvLyBPTEQgU1RVRkZcclxuXHJcbiAgZ2V0TWVudUJ1dHRvbnMocm93OiBhbnksIGJ1dHRvbjogU21hcnRUYWJsZUJ1dHRvbik6IFNtYXJ0VGFibGVCdXR0b25bXSB7XHJcbiAgICBsZXQgY29sdW1uQWN0aW9ucyA9IHJvdy5jb2x1bW5BY3Rpb25zID8/IHt9O1xyXG5cclxuICAgIC8vIEZpbHRlciBmb3IgY29sdW1uQWN0aW9ucyB0aGF0IGFyZSBpbiBhIGNvbHVtbkFjdGlvbiwgYnV0IHRoZSBjb2x1bW4gaXMgbm90IGluIHRoZSBoZWFkZXJzXHJcbiAgICBsZXQgZmlsdGVyZWRBY3Rpb25Db2x1bW5zID0gT2JqZWN0LmtleXMoY29sdW1uQWN0aW9ucylcclxuICAgICAgLmZpbHRlcigoa2V5KSA9PiB0aGlzLnNtYXJ0VGFibGUudGFibGVIZWFkZXJzLmluY2x1ZGVzKCdkYXRhLicgKyBrZXkpKVxyXG4gICAgICAucmVkdWNlKFxyXG4gICAgICAgIChhY2MsIGtleSkgPT4ge1xyXG4gICAgICAgICAgYWNjW2tleV0gPSBjb2x1bW5BY3Rpb25zW2tleV07XHJcbiAgICAgICAgICByZXR1cm4gYWNjO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nW10+XHJcbiAgICAgICk7XHJcblxyXG4gICAgbGV0IGNvbHVtbkNvZGVzOiBzdHJpbmdbXSA9IE9iamVjdC52YWx1ZXMoZmlsdGVyZWRBY3Rpb25Db2x1bW5zKS5mbGF0KCk7XHJcbiAgICByZXR1cm4gKGJ1dHRvbi5tZW51SXRlbUJ1dHRvbnMgfHwgW10pLmZpbHRlcigoYnRuKSA9PiAhY29sdW1uQ29kZXMuaW5jbHVkZXMoYnRuLmNvZGUhKSk7XHJcbiAgfVxyXG5cclxuICBnZXRNZW51SXRlbUJ1dHRvbnNQcm9wZXJ0eU5hbWUoZWxlbWVudDogYW55LCBidXR0b246IFNtYXJ0VGFibGVCdXR0b24pOiBhbnlbXSB7XHJcbiAgICBsZXQgYnV0dG9uczogU21hcnRUYWJsZUJ1dHRvbltdID0gdGhpcy5nZXRWYWx1ZShlbGVtZW50LCBidXR0b24ubWVudUl0ZW1CdXR0b25zUHJvcGVydHlOYW1lISk7XHJcbiAgICBsZXQgZ3JpZFJvdzogYW55ID0gZWxlbWVudDtcclxuXHJcbiAgICBsZXQgY29sdW1uQWN0aW9ucyA9IGdyaWRSb3cuY29sdW1uQWN0aW9ucyA/PyB7fTtcclxuXHJcbiAgICAvLyBGaWx0ZXIgZm9yIGNvbHVtbkFjdGlvbnMgdGhhdCBhcmUgaW4gYSBjb2x1bW5BY3Rpb24sIGJ1dCB0aGUgY29sdW1uIGlzIG5vdCBpbiB0aGUgaGVhZGVyc1xyXG4gICAgbGV0IGZpbHRlcmVkQWN0aW9uQ29sdW1ucyA9IE9iamVjdC5rZXlzKGNvbHVtbkFjdGlvbnMpXHJcbiAgICAgIC5maWx0ZXIoKGtleSkgPT4gdGhpcy5zbWFydFRhYmxlLnRhYmxlSGVhZGVycy5pbmNsdWRlcygnZGF0YS4nICsga2V5KSlcclxuICAgICAgLnJlZHVjZShcclxuICAgICAgICAoYWNjLCBrZXkpID0+IHtcclxuICAgICAgICAgIGFjY1trZXldID0gY29sdW1uQWN0aW9uc1trZXldO1xyXG4gICAgICAgICAgcmV0dXJuIGFjYztcclxuICAgICAgICB9LFxyXG4gICAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPlxyXG4gICAgICApO1xyXG4gICAgbGV0IGNvbHVtbkNvZGVzOiBzdHJpbmdbXSA9IE9iamVjdC52YWx1ZXMoZmlsdGVyZWRBY3Rpb25Db2x1bW5zIHx8IHt9KS5mbGF0KCk7XHJcblxyXG4gICAgcmV0dXJuIGJ1dHRvbnM/LmZpbHRlcigoYnV0dG9uKSA9PiAhY29sdW1uQ29kZXMuaW5jbHVkZXMoYnV0dG9uLmNvZGUhKSkhO1xyXG4gIH1cclxufVxyXG4iXX0=
614
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC10YWJsZS90YWJsZXMvdGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBSUwsU0FBUyxFQUNULFlBQVksRUFDWixnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBR0wsa0JBQWtCLEdBRW5CLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDbkYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scUVBQXFFLENBQUM7QUFDbkgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDM0UsT0FBTyxFQUdMLG9CQUFvQixFQUVwQiw0QkFBNEIsRUFDNUIsK0JBQStCLEVBQy9CLGVBQWUsRUFDZixjQUFjLEdBQ2YsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNyRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN2RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQUl4RCxNQUFNLE9BQU8sS0FBSztJQTRCaEIsWUFBc0IsU0FBa0M7UUFBbEMsY0FBUyxHQUFULFNBQVMsQ0FBeUI7UUEzQmpELGNBQVMsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQVloRCxjQUFTLEdBQUcsY0FBYyxDQUFDO1FBQzNCLHlCQUFvQixHQUFHLG9CQUFvQixDQUFDO1FBQzVDLG9CQUFlLEdBQVUsRUFBRSxDQUFDO1FBQzVCLGNBQVMsR0FBOEIs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LFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLEVBQUU7aUJBQ2I7NEZBSUMsS0FBSztzQkFESixZQUFZO3VCQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQkFLeEQsMkJBQTJCO3NCQUQxQixZQUFZO3VCQUFDLDRCQUE0QjtnQkFHcEIsWUFBWTtzQkFBakMsU0FBUzt1QkFBQyxTQUFTO2dCQUNRLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZTtnQkFFakIsVUFBVTtzQkFBbEIsS0FBSztnQkFPd0IsUUFBUTtzQkFBckMsWUFBWTt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlbixcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaGVtZVBhbGV0dGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdFRhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29tcG9uZW50RmFjdG9yeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21wb25lbnQtZmFjdG9yeS1zZXJ2aWNlL3Byb2plY3RzJztcbmltcG9ydCB7XG4gIEltYWdlUmVzb3VyY2UsXG4gIFVpQWN0aW9uLFxuICBVaUFjdGlvbkJ1dHRvblR5cGUsXG4gIFVpQWN0aW9uVG9vbHRpcCxcbn0gZnJvbSAnLi4vLi4vdmlldy1jb250ZXh0L2FwaS9tb2RlbC9tb2RlbHMnO1xuaW1wb3J0IHsgU21hcnRTdHlsZVV0aWxpdHkgfSBmcm9tICcuLi8uLi92aWV3LWNvbnRleHQvdXRpbGl0eS9zbWFydC1zdHlsZS11dGlsaXR5JztcbmltcG9ydCB7IERlZmF1bHRBY3Rpb25zUG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2RlZmF1bHQtYWN0aW9ucy1wb3B1cC9kZWZhdWx0LWFjdGlvbnMtcG9wdXAuY29tcG9uZW50JztcbmltcG9ydCB7IExvYWRpbmdDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2xvYWRpbmcvbG9hZGluZy5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgU21hcnRUYWJsZSxcbiAgU21hcnRUYWJsZUJ1dHRvbixcbiAgU21hcnRUYWJsZUJ1dHRvblR5cGUsXG4gIFNtYXJ0VGFibGVIZWFkZXIsXG4gIFNtYXJ0VGFibGVIZWFkZXJQcm9wZXJ0eVR5cGUsXG4gIFNtYXJ0VGFibGVPcHRpb25CdXR0b25EaXJlY3Rpb24sXG4gIFNtYXJ0VGFibGVPcmRlcixcbiAgU21hcnRUYWJsZVR5cGUsXG59IGZyb20gJy4uL3NtYXJ0dGFibGUubW9kZWwnO1xuaW1wb3J0IHsgU21hcnRPYmplY3RVdGlsaXR5IH0gZnJvbSAnLi4vLi4vdmlldy1jb250ZXh0L3V0aWxpdHkvc21hcnQtb2JqZWN0LXV0aWxpdHknO1xuaW1wb3J0IHsgU21hcnRHcmlkVG9vbGJhckFjdGlvbnNVdGlsIH0gZnJvbSAnLi4vLi4vc21hcnQtZ3JpZC9zbWFydC1ncmlkLXRvb2xiYXItdXRpbCc7XG5pbXBvcnQgeyBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiAnJyxcbn0pXG5leHBvcnQgY2xhc3MgVGFibGUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBfZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuICBAVmlld0NoaWxkcmVuKCdleHBhbmRlZEFyZWEnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcbiAgdmNSZWY/OiBWaWV3Q29udGFpbmVyUmVmW107XG4gIGNvbXBvbmVudFJlZj86IENvbXBvbmVudFJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGRyZW4oRGVmYXVsdEFjdGlvbnNQb3B1cENvbXBvbmVudClcbiAgZGVmYXVsdEFjdGlvbk1lbnVDb21wb25lbnRzITogUXVlcnlMaXN0PERlZmF1bHRBY3Rpb25zUG9wdXBDb21wb25lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoJ215VGFibGUnKSBteVRhYmxlQ2hpbGQhOiBNYXRUYWJsZTxhbnk+O1xuICBAVmlld0NoaWxkKCdoZWFkZXJUb29sYmFyJykgaGVhZGVyVG9vbGJhciE6IGFueTtcblxuICBASW5wdXQoKSBzbWFydFRhYmxlITogU21hcnRUYWJsZTxhbnk+O1xuICB0YWJsZVR5cGUgPSBTbWFydFRhYmxlVHlwZTtcbiAgc21hcnRUYWJsZUJ1dHRvblR5cGUgPSBTbWFydFRhYmxlQnV0dG9uVHlwZTtcbiAgaGlnaGxpZ2h0ZWRSb3dzOiBhbnlbXSA9IFtdO1xuICBzb3J0RXZlbnQ6IFN1YmplY3Q8U21hcnRUYWJsZUhlYWRlcj4gPSBuZXcgU3ViamVjdCgpO1xuICBleHBhbmRlZEVsZW1lbnQ6IGFueSB8IG51bGw7XG5cbiAgQFZpZXdDaGlsZHJlbihNYXRNZW51VHJpZ2dlcikgdHJpZ2dlcnMhOiBRdWVyeUxpc3Q8TWF0TWVudVRyaWdnZXI+O1xuXG4gIGVsZW1lbnQ/OiBhbnk7XG5cbiAgLy8gQ2VsbHMgdG8gVWlBY3Rpb24gbW9kZWxzLCB1c2VkIGZvciB0b29sYmFycyBpbiBjZWxsc1xuICBjZWxsVG9BY3Rpb25NYXA6IFJlY29yZDxzdHJpbmcsIGFueVtdPiA9IHt9O1xuXG4gIG9uU2VsZWN0aW9uQ2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGNmU2VydmljZTogQ29tcG9uZW50RmFjdG9yeVNlcnZpY2UpIHt9XG5cbiAgcHVibGljIGFzeW5jVHJhbnNsYXRpb25SZXN1bHQgPSAodHJhbnNsYXRvcjogYW55LCBwYXJhbTogc3RyaW5nKSA9PiB0cmFuc2xhdG9yKHBhcmFtKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgQUNUSU9OX1NFUEVSQVRPUiA9ICdfYWN0aW9uU2VwYXJhdG9yXyc7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5zb3J0YWJsZSkgdGhpcy5zb3J0RXZlbnQgPSBuZXcgU3ViamVjdCgpO1xuICAgIHRoaXMuY3JlYXRlQ2VsbFRvQWN0aW9uTWFwKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGhhbmRsZU9uUm93Q2xpY2soZWxlbWVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS50YWJsZVR5cGUgPT09IFNtYXJ0VGFibGVUeXBlLklOSEVSSVRFRCkge1xuICAgICAgdGhpcy5vblJvd0NsaWNrKGVsZW1lbnQpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zbWFydFRhYmxlLnRhYmxlVHlwZSA9PT0gU21hcnRUYWJsZVR5cGUuQ0hFQ0tfQk9YKSB7XG4gICAgICBpZiAoIXRoaXMuc21hcnRUYWJsZS5vblJvd0RvdWJsZUNsaWNrICYmICF0aGlzLnNtYXJ0VGFibGUub25Sb3dDbGljaykge1xuICAgICAgICB0aGlzLnNldFNlbGVjdGlvbihcbiAgICAgICAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHlcbiAgICAgICAgICAgID8gdGhpcy5zbWFydFRhYmxlLmdldFZhbHVlRGVlcGx5KGVsZW1lbnQsIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb25Qcm9wZXJ0eSlcbiAgICAgICAgICAgIDogZWxlbWVudFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnNtYXJ0VGFibGUub25Sb3dDbGljaykge1xuICAgICAgICB0aGlzLm9uUm93Q2xpY2soZWxlbWVudCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnNtYXJ0VGFibGUudGFibGVUeXBlID09PSBTbWFydFRhYmxlVHlwZS5ST1dfU0VMRUNUKSB7XG4gICAgICB0aGlzLnNldFNlbGVjdGlvbihcbiAgICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5XG4gICAgICAgICAgPyB0aGlzLnNtYXJ0VGFibGUuZ2V0VmFsdWVEZWVwbHkoZWxlbWVudCwgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5KVxuICAgICAgICAgIDogZWxlbWVudFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVTbWFydFRhYmxlKHNtYXJ0VGFibGU6IFNtYXJ0VGFibGU8YW55Pik6IHZvaWQge1xuICAgIHRoaXMuc21hcnRUYWJsZSA9IHNtYXJ0VGFibGU7XG4gICAgdGhpcy5yZW5kZXJSb3dzKCk7XG4gIH1cblxuICByZW5kZXJSb3dzKCk6IHZvaWQge1xuICAgIHRoaXMuY3JlYXRlQ2VsbFRvQWN0aW9uTWFwKCk7XG4gICAgdGhpcy5teVRhYmxlQ2hpbGQucmVuZGVyUm93cygpO1xuICB9XG5cbiAgY3JlYXRlQ2VsbFRvQWN0aW9uTWFwKCkge1xuICAgIGNvbnN0IHNlcnZpY2UgPSB0aGlzLnNtYXJ0VGFibGUuZ2V0U2VydmljZVRvVXNlKCk7XG4gICAgY29uc3QgZ3JpZElkID0gdGhpcy5zbWFydFRhYmxlLmdldEdyaWRJZCgpO1xuXG4gICAgaWYgKHNlcnZpY2UgJiYgZ3JpZElkKSB7XG4gICAgICB0aGlzLmNlbGxUb0FjdGlvbk1hcCA9IFNtYXJ0R3JpZFRvb2xiYXJBY3Rpb25zVXRpbC5jYWxjdWxhdGVDZWxsVG9BY3Rpb25NYXAoXG4gICAgICAgIHRoaXMuc21hcnRUYWJsZS50YWJsZVJvd3MsXG4gICAgICAgIHNlcnZpY2UsXG4gICAgICAgIGdyaWRJZFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVPblJvd0RvdWJsZUNsaWNrKGV2ZW50OiBhbnksIGVsZW1lbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUuZGVmYXVsdEFjdGlvbnMgJiYgdGhpcy5zbWFydFRhYmxlLmRlZmF1bHRBY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMub3BlbkRlZmF1bHRBY3Rpb25zTWVudShldmVudCwgZWxlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLnNtYXJ0VGFibGUudGFibGVUeXBlID09PSBTbWFydFRhYmxlVHlwZS5JTkhFUklURUQpIHtcbiAgICAgICAgdGhpcy5vblJvd0RvdWJsZUNsaWNrKGVsZW1lbnQpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnNtYXJ0VGFibGUudGFibGVUeXBlID09PSBTbWFydFRhYmxlVHlwZS5DSEVDS19CT1gpIHtcbiAgICAgICAgaWYgKHRoaXMuc21hcnRUYWJsZS5vblJvd0RvdWJsZUNsaWNrKSB7XG4gICAgICAgICAgdGhpcy5vblJvd0RvdWJsZUNsaWNrKGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdHlwZSgpOiB0eXBlb2YgU21hcnRUYWJsZUhlYWRlclByb3BlcnR5VHlwZSB7XG4gICAgcmV0dXJuIFNtYXJ0VGFibGVIZWFkZXJQcm9wZXJ0eVR5cGU7XG4gIH1cblxuICBzb3J0QnV0dG9uQ2xpY2tlZChldmVudDogYW55LCBoZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnNvcnRFdmVudC5uZXh0KGhlYWRlcik7XG4gIH1cblxuICBjdXN0b21CdXR0b25DbGlja2VkKFxuICAgIGV2ZW50OiBhbnksXG4gICAgYnV0dG9uOiBTbWFydFRhYmxlQnV0dG9uLFxuICAgIGVsZW1lbnQ6IGFueSxcbiAgICBidG4/OiBhbnksXG4gICAgY2xvc2U/OiBib29sZWFuXG4gICkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmIChidG4/LmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGJ1dHRvbi50eXBlID09PSBTbWFydFRhYmxlQnV0dG9uVHlwZS5NRU5VICYmIGJ0biA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG5cbiAgICBpZiAoIWJ1dHRvbi5jYWxsYmFjaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBCdXR0b24gd2l0aCBuYW1lICR7YnV0dG9uLmxhYmVsIHx8IGJ1dHRvbi5pY29ufSBkb2VzIG5vdCBoYXZlIGEgY2FsbGJhY2shYCk7XG4gICAgfVxuICAgIGJ1dHRvbi5jYWxsYmFjayhidXR0b24uYXJncywgZWxlbWVudCwgYnRuKTtcbiAgICBpZiAoY2xvc2UpIHtcbiAgICAgIGxldCBvcGVuTWVudXMgPSB0aGlzLnRyaWdnZXJzLmZpbHRlcihcbiAgICAgICAgKG1hdE1lbnVUcmlnZ2VyOiBNYXRNZW51VHJpZ2dlcikgPT4gbWF0TWVudVRyaWdnZXIubWVudU9wZW5cbiAgICAgICk7XG4gICAgICBvcGVuTWVudXMuZm9yRWFjaCgobWF0TWVudVRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyKSA9PiB7XG4gICAgICAgIG1hdE1lbnVUcmlnZ2VyLmNsb3NlTWVudSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaXNTb3J0YWJsZShoZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpOiBib29sZWFuIHtcbiAgICBsZXQgaXNTb3J0YWJsZVRhYmxlID0gdGhpcy5zbWFydFRhYmxlLnNvcnRhYmxlO1xuICAgIGlmIChpc1NvcnRhYmxlVGFibGUpIHtcbiAgICAgIHJldHVybiBoZWFkZXIuaXNTb3J0YWJsZSAhPT0gdW5kZWZpbmVkID8gaGVhZGVyLmlzU29ydGFibGUgOiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXRTb3J0SWNvbihoZWFkZXI6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IHRhYmxlSGVhZGVyID0gdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzPy5maW5kKFxuICAgICAgKHRhYmxlSGVhZGVyOiBTbWFydFRhYmxlSGVhZGVyKSA9PiB0YWJsZUhlYWRlci5wcm9wZXJ0eU5hbWUgPT09IGhlYWRlclxuICAgICk7XG4gICAgaWYgKHRhYmxlSGVhZGVyICYmIHRhYmxlSGVhZGVyLm9yZGVyKSB7XG4gICAgICByZXR1cm4gdGFibGVIZWFkZXIub3JkZXIgPT09IFNtYXJ0VGFibGVPcmRlci5BU0NcbiAgICAgICAgPyAodGhpcy5zbWFydFRhYmxlLnNvcnRJY29uQXNjID8/ICdrZXlib2FyZF9hcnJvd19kb3duJylcbiAgICAgICAgOiAodGhpcy5zbWFydFRhYmxlLnNvcnRJY29uRGVzYyA/PyAna2V5Ym9hcmRfYXJyb3dfdXAnKTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBoYXNTb3J0TnVtSWNvbihoZWFkZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGxldCB0YWJsZUhlYWRlciA9IHRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVycz8uZmluZChcbiAgICAgICh0YWJsZUhlYWRlcjogU21hcnRUYWJsZUhlYWRlcikgPT4gdGFibGVIZWFkZXIucHJvcGVydHlOYW1lID09PSBoZWFkZXJcbiAgICApO1xuICAgIHJldHVybiB0YWJsZUhlYWRlcj8ub3JkZXJOdW1iZXIgIT09IHVuZGVmaW5lZDtcbiAgfVxuICBnZXRTb3J0TnVtSWNvbihoZWFkZXI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IHRhYmxlSGVhZGVyID0gdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzPy5maW5kKFxuICAgICAgKHRhYmxlSGVhZGVyOiBTbWFydFRhYmxlSGVhZGVyKSA9PiB0YWJsZUhlYWRlci5wcm9wZXJ0eU5hbWUgPT09IGhlYWRlclxuICAgICk7XG4gICAgaWYgKHRhYmxlSGVhZGVyICYmIHRhYmxlSGVhZGVyLm9yZGVyTnVtYmVyKSB7XG4gICAgICByZXR1cm4gYGZpbHRlcl8ke3RhYmxlSGVhZGVyLm9yZGVyTnVtYmVyfWA7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGdldFRvb2xUaXAoZWxlbWVudDogYW55LCBoZWFkZXJJbmRleDogbnVtYmVyKTogVWlBY3Rpb25Ub29sdGlwIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVycykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDdXN0b21UYWJsZUhlYWRlcnMgcHJvcGVydHkgaXMgbWlzc2luZycpO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1toZWFkZXJJbmRleF0ucHJvcGVydGllcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDdXN0b21UYWJsZUhlYWRlciB3aXRoIGluZGV4ICR7aGVhZGVySW5kZXh9IGRvZXMgbm90IGhhdmUgcHJvcGVydGllc2ApO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1toZWFkZXJJbmRleF0ucHJvcGVydGllcyEuaWNvbnMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VzdG9tVGFibGVIZWFkZXIgd2l0aCBpbmRleCAke2hlYWRlckluZGV4fSBkb2VzIG5vdCBoYXZlIGljb25zIGRlZmluZWRgKTtcbiAgICB9XG5cbiAgICBsZXQgdG9vbFRpcENvbHVtbiA9XG4gICAgICB0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaGVhZGVySW5kZXhdLnByb3BlcnRpZXM/LnRvb2xUaXBDb2x1bW47XG4gICAgcmV0dXJuIHRvb2xUaXBDb2x1bW4gPyB0aGlzLmdldFZhbHVlKGVsZW1lbnQsIHRvb2xUaXBDb2x1bW4pIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0SWNvbih2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiwgaGVhZGVySW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ3VzdG9tVGFibGVIZWFkZXJzIHByb3BlcnR5IGlzIG1pc3NpbmcnKTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaGVhZGVySW5kZXhdLnByb3BlcnRpZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VzdG9tVGFibGVIZWFkZXIgd2l0aCBpbmRleCAke2hlYWRlckluZGV4fSBkb2VzIG5vdCBoYXZlIHByb3BlcnRpZXNgKTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaGVhZGVySW5kZXhdLnByb3BlcnRpZXMhLmljb25zKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1c3RvbVRhYmxlSGVhZGVyIHdpdGggaW5kZXggJHtoZWFkZXJJbmRleH0gZG9lcyBub3QgaGF2ZSBpY29ucyBkZWZpbmVkYCk7XG4gICAgfVxuICAgIGxldCBjdXN0b21UYWJsZUhlYWRlckljb25zID1cbiAgICAgIHRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1toZWFkZXJJbmRleF0ucHJvcGVydGllcyEuaWNvbnM7XG5cbiAgICBsZXQgaWNvbjogc3RyaW5nID0gJyc7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGN1c3RvbVRhYmxlSGVhZGVySWNvbnMhLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgY3VzdG9tVGFibGVIZWFkZXJJY29uID0gY3VzdG9tVGFibGVIZWFkZXJJY29ucyFbaV07XG4gICAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVOdWxsICYmXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZU51bGwgPT09IHZhbHVlXG4gICAgICAgICkge1xuICAgICAgICAgIGljb24gPSBjdXN0b21UYWJsZUhlYWRlckljb24uaWNvbjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVCaWdnZXJUaGFuTnVtYmVyICYmXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUJpZ2dlclRoYW5OdW1iZXIgPCB2YWx1ZVxuICAgICAgICApIHtcbiAgICAgICAgICBpY29uID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmljb247XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZVNtYWxsZXJUaGFuTnVtYmVyICYmXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZVNtYWxsZXJUaGFuTnVtYmVyID4gdmFsdWVcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWNvbiA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbi5pY29uO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVFcXVhbHNXaXRoTnVtYmVyICYmXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUVxdWFsc1dpdGhOdW1iZXIgPT09IHZhbHVlXG4gICAgICAgICkge1xuICAgICAgICAgIGljb24gPSBjdXN0b21UYWJsZUhlYWRlckljb24uaWNvbjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlRXF1YWxzV2l0aFN0cmluZyAmJlxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVFcXVhbHNXaXRoU3RyaW5nID09PSB2YWx1ZVxuICAgICAgICApIHtcbiAgICAgICAgICBpY29uID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmljb247XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVCb29sZWFuICYmXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUJvb2xlYW4gPT09IHZhbHVlXG4gICAgICAgICkge1xuICAgICAgICAgIGljb24gPSBjdXN0b21UYWJsZUhlYWRlckljb24uaWNvbjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpY29uO1xuICB9XG5cbiAgZ2V0Q29sb3IodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4sIGhlYWRlckluZGV4OiBudW1iZXIpOiBUaGVtZVBhbGV0dGUge1xuICAgIGlmICghdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0N1c3RvbVRhYmxlSGVhZGVycyBwcm9wZXJ0eSBpcyBtaXNzaW5nJyk7XG4gICAgfSBlbHNlIGlmICghdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2hlYWRlckluZGV4XS5wcm9wZXJ0aWVzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1c3RvbVRhYmxlSGVhZGVyIHdpdGggaW5kZXggJHtoZWFkZXJJbmRleH0gZG9lcyBub3QgaGF2ZSBwcm9wZXJ0aWVzYCk7XG4gICAgfSBlbHNlIGlmICghdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2hlYWRlckluZGV4XS5wcm9wZXJ0aWVzIS5pY29ucykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDdXN0b21UYWJsZUhlYWRlciB3aXRoIGluZGV4ICR7aGVhZGVySW5kZXh9IGRvZXMgbm90IGhhdmUgaWNvbnMgZGVmaW5lZGApO1xuICAgIH1cbiAgICBsZXQgY3VzdG9tVGFibGVIZWFkZXJJY29ucyA9XG4gICAgICB0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaGVhZGVySW5kZXhdLnByb3BlcnRpZXMhLmljb25zO1xuXG4gICAgbGV0IGNvbG9yOiBUaGVtZVBhbGV0dGUgPSAncHJpbWFyeSc7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGN1c3RvbVRhYmxlSGVhZGVySWNvbnMhLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgY3VzdG9tVGFibGVIZWFkZXJJY29uID0gY3VzdG9tVGFibGVIZWFkZXJJY29ucyFbaV07XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUJpZ2dlclRoYW5OdW1iZXIgJiZcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlQmlnZ2VyVGhhbk51bWJlciA8IHZhbHVlXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbG9yID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmNvbG9yO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVTbWFsbGVyVGhhbk51bWJlciAmJlxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVTbWFsbGVyVGhhbk51bWJlciA+IHZhbHVlXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbG9yID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmNvbG9yO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVFcXVhbHNXaXRoTnVtYmVyICYmXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUVxdWFsc1dpdGhOdW1iZXIgPT09IHZhbHVlXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbG9yID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmNvbG9yO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVFcXVhbHNXaXRoU3RyaW5nICYmXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUVxdWFsc1dpdGhTdHJpbmcgPT09IHZhbHVlXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbG9yID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmNvbG9yO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlQm9vbGVhbiAmJlxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVCb29sZWFuID09PSB2YWx1ZVxuICAgICAgICApIHtcbiAgICAgICAgICBjb2xvciA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbi5jb2xvcjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb2xvcjtcbiAgfVxuXG4gIHRhYmxlT3B0aW9uQnV0dG9uRGlyZWN0aW9uKCk6IHR5cGVvZiBTbWFydFRhYmxlT3B0aW9uQnV0dG9uRGlyZWN0aW9uIHtcbiAgICByZXR1cm4gU21hcnRUYWJsZU9wdGlvbkJ1dHRvbkRpcmVjdGlvbjtcbiAgfVxuXG4gIGlzQWxsU2VsZWN0ZWQoKSB7XG4gICAgY29uc3QgbnVtU2VsZWN0ZWQgPSB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uIS5zZWxlY3RlZC5sZW5ndGg7XG4gICAgY29uc3QgbnVtUm93cyA9IHRoaXMuc21hcnRUYWJsZS50YWJsZVJvd3MubGVuZ3RoO1xuICAgIHJldHVybiBudW1TZWxlY3RlZCA9PT0gbnVtUm93cztcbiAgfVxuXG4gIC8qKiBTZWxlY3RzIGFsbCByb3dzIGlmIHRoZXkgYXJlIG5vdCBhbGwgc2VsZWN0ZWQ7IG90aGVyd2lzZSBjbGVhciBzZWxlY3Rpb24uICovXG4gIHRvZ2dsZUFsbFJvd3MoKSB7XG4gICAgaWYgKHRoaXMuaXNBbGxTZWxlY3RlZCgpKSB7XG4gICAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uIS5jbGVhcigpO1xuXG4gICAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uQWxsU2VsZWN0aW9uKSB7XG4gICAgICAgIHRoaXMuc21hcnRUYWJsZS5vbkFsbFNlbGVjdGlvbihmYWxzZSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUubWF4TnVtT2ZTZWxlY3RhYmxlUm93cykge1xuICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbiEuY2xlYXIoKTtcblxuICAgICAgaWYgKHRoaXMuc21hcnRUYWJsZS5vbkFsbFNlbGVjdGlvbikge1xuICAgICAgICB0aGlzLnNtYXJ0VGFibGUub25BbGxTZWxlY3Rpb24oZmFsc2UpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb25Qcm9wZXJ0eSkge1xuICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbiEuc2VsZWN0KFxuICAgICAgICAuLi50aGlzLnNtYXJ0VGFibGUudGFibGVSb3dzLm1hcCgocm93OiBhbnkpID0+XG4gICAgICAgICAgdGhpcy5zbWFydFRhYmxlLmdldFZhbHVlRGVlcGx5KHJvdywgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5ISlcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbiEuc2VsZWN0KC4uLnRoaXMuc21hcnRUYWJsZS50YWJsZVJvd3MpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uQWxsU2VsZWN0aW9uKSB7XG4gICAgICB0aGlzLnNtYXJ0VGFibGUub25BbGxTZWxlY3Rpb24odHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFRoZSBsYWJlbCBmb3IgdGhlIGNoZWNrYm94IG9uIHRoZSBwYXNzZWQgcm93ICovXG4gIGNoZWNrYm94TGFiZWwocm93PzogYW55KTogc3RyaW5nIHtcbiAgICBpZiAoIXJvdykge1xuICAgICAgcmV0dXJuIGAke3RoaXMuaXNBbGxTZWxlY3RlZCgpID8gJ2Rlc2VsZWN0JyA6ICdzZWxlY3QnfSBhbGxgO1xuICAgIH1cbiAgICByZXR1cm4gYCR7dGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbiEuaXNTZWxlY3RlZChyb3cpID8gJ2Rlc2VsZWN0JyA6ICdzZWxlY3QnfSByb3cgJHtcbiAgICAgIHJvdy5wb3NpdGlvbiArIDFcbiAgICB9YDtcbiAgfVxuXG4gIGlzSGlnaGxpZ2h0ZWQocm93OiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLmhpZ2hsaWdodFByb3BlcnR5KSB7XG4gICAgICBpZiAocm93WydkYXRhJ11bdGhpcy5zbWFydFRhYmxlLmhpZ2hsaWdodFByb3BlcnR5XSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaGlnaGxpZ2h0ZWRSb3dzIHx8ICF0aGlzLmhpZ2hsaWdodGVkUm93cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0ZWRSb3dzLmluY2x1ZGVzKHJvdyk7XG4gIH1cblxuICBnZXRSb3dDbGFzc2VzKHJvdzogYW55KSB7XG4gICAgbGV0IGNsYXNzZXNUb0FkZDogc3RyaW5nW10gPSBbXTtcbiAgICBsZXQgY2xhc3Nlc1RvUmVtb3ZlOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNsYXNzZXNUb0FkZC5wdXNoKHRoaXMuaXNIaWdobGlnaHRlZChyb3cpID8gdGhpcy5zbWFydFRhYmxlLmhpZ2hsaWdodENsYXNzISA6ICd1bnNlbGVjdGVkJyk7XG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5ob3Zlcikge1xuICAgICAgY2xhc3Nlc1RvQWRkLnB1c2goJ3NtYXJ0VGFibGVSb3dIb3ZlcicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjbGFzc2VzVG9SZW1vdmUucHVzaCgnc21hcnRUYWJsZVJvd0hvdmVyJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQocm93KSkge1xuICAgICAgY2xhc3Nlc1RvQWRkLnB1c2goJ3NlbGVjdGVkJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNsYXNzZXNUb1JlbW92ZS5wdXNoKCdzZWxlY3RlZCcpO1xuICAgIH1cbiAgICByZXR1cm4gU21hcnRTdHlsZVV0aWxpdHkuZ2V0TmdDbGFzc2VzKHJvdy5zdHlsZSwgY2xhc3Nlc1RvQWRkLCBjbGFzc2VzVG9SZW1vdmUpO1xuICB9XG5cbiAgZ2V0Um93U3R5bGVzKHJvdzogYW55KTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfSB7XG4gICAgcmV0dXJuIFNtYXJ0U3R5bGVVdGlsaXR5LmdldE5nU3R5bGVzKHJvdy5zdHlsZSk7XG4gIH1cblxuICBnZXRDb2x1bW5DbGFzc2VzKGhlYWRlcjogU21hcnRUYWJsZUhlYWRlcikge1xuICAgIHJldHVybiBTbWFydFN0eWxlVXRpbGl0eS5nZXROZ0NsYXNzZXMoaGVhZGVyLnN0eWxlKTtcbiAgfVxuXG4gIGdldENvbHVtblN0eWxlcyhoZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpIHtcbiAgICByZXR1cm4gU21hcnRTdHlsZVV0aWxpdHkuZ2V0TmdTdHlsZXMoaGVhZGVyLnN0eWxlKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9DYW1lbENhc2UoY3NzOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBjc3MucmVwbGFjZSgvLShbYS16XSkvZywgZnVuY3Rpb24gKGcpIHtcbiAgICAgIHJldHVybiBnWzFdLnRvVXBwZXJDYXNlKCk7XG4gICAgfSk7XG4gIH1cblxuICBvblJvd0NsaWNrKHJvdzogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5oaWdobGlnaHRPblJvd0NsaWNrKSB7XG4gICAgICBpZiAodGhpcy5pc0hpZ2hsaWdodGVkKHJvdykpIHtcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5oaWdobGlnaHRlZFJvd3MuaW5kZXhPZihyb3csIDApO1xuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkUm93cy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgfSBlbHNlIGlmICghdGhpcy5oaWdobGlnaHRlZFJvd3MgfHwgIXRoaXMuaGlnaGxpZ2h0ZWRSb3dzLmxlbmd0aCkge1xuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkUm93cyA9IFtdO1xuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkUm93cy5wdXNoKHJvdyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkUm93cy5wdXNoKHJvdyk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUuZXhwYW5kYWJsZSAmJiAhdGhpcy5zbWFydFRhYmxlLm9uUm93RG91YmxlQ2xpY2spIHtcbiAgICAgIHRoaXMub25Ub2dnbGUocm93KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5vblJvd0NsaWNrKSB7XG4gICAgICB0aGlzLnNtYXJ0VGFibGUub25Sb3dDbGljayhyb3cpO1xuICAgIH1cbiAgfVxuICBvblJvd0RvdWJsZUNsaWNrKHJvdzogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5oaWdobGlnaHRPblJvd0NsaWNrKSB7XG4gICAgICBpZiAodGhpcy5pc0hpZ2hsaWdodGVkKHJvdykpIHtcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5oaWdobGlnaHRlZFJvd3MuaW5kZXhPZihyb3csIDApO1xuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkUm93cy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgfSBlbHNlIGlmICghdGhpcy5oaWdobGlnaHRlZFJvd3MgfHwgIXRoaXMuaGlnaGxpZ2h0ZWRSb3dzLmxlbmd0aCkge1xuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkUm93cyA9IFtdO1xuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkUm93cy5wdXNoKHJvdyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkUm93cy5wdXNoKHJvdyk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUub25Sb3dEb3VibGVDbGljaykge1xuICAgICAgdGhpcy5zbWFydFRhYmxlLm9uUm93RG91YmxlQ2xpY2socm93KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBvblRvZ2dsZShlbGVtZW50OiBhbnksIGV2ZW50PzogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLnNtYXJ0VGFibGUucm93RXhwYW5kZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1NtYXJ0VGFibGVSb3dFeHBhbmRlciBub3QgZm91bmQhLiBQbGVhc2UgcHJvdmlkZSBhIFNtYXJ0VGFibGVSb3dFeHBhbmRlciBpbXBsZW1lbnRhdGlvbi4nXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChldmVudCkge1xuICAgICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIGxldCBvbGRJbmRleCA9IHRoaXMuc21hcnRUYWJsZS50YWJsZVJvd3MuZmluZEluZGV4KFxuICAgICAgKGVsZW1lbnQpID0+IGVsZW1lbnQgPT09IHRoaXMuZXhwYW5kZWRFbGVtZW50XG4gICAgKTtcbiAgICBpZiAob2xkSW5kZXggIT09IC0xKSB7XG4gICAgICBsZXQgcmVmID0gdGhpcy52Y1JlZiEuZmlsdGVyKChlbGVtZW50OiBhbnksIGluZGV4OiBudW1iZXIpID0+IGluZGV4ID09PSBvbGRJbmRleCk7XG4gICAgICByZWZbMF0uY2xlYXIoKTtcbiAgICB9XG4gICAgdGhpcy5leHBhbmRlZEVsZW1lbnQgPSB0aGlzLmV4cGFuZGVkRWxlbWVudCA9PT0gZWxlbWVudCA/IG51bGwgOiBlbGVtZW50O1xuXG4gICAgbGV0IG5ld0luZGV4ID0gdGhpcy5zbWFydFRhYmxlLnRhYmxlUm93cy5maW5kSW5kZXgoXG4gICAgICAoZWxlbWVudCkgPT4gZWxlbWVudCA9PT0gdGhpcy5leHBhbmRlZEVsZW1lbnRcbiAgICApO1xuXG4gICAgbGV0IHJvd0RhdGFSZXNwb25zZTtcblxuICAgIGlmIChuZXdJbmRleCAhPT0gLTEpIHtcbiAgICAgIGlmICh0aGlzLnNtYXJ0VGFibGUuYXN5bmNPbkV4cGFuZCkge1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMuY2ZTZXJ2aWNlLmNyZWF0ZUNvbXBvbmVudChcbiAgICAgICAgICB0aGlzLnZjUmVmPy5maWx0ZXIoKGVsZW1lbnQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4gaW5kZXggPT09IG5ld0luZGV4KVswXSEsXG4gICAgICAgICAgTG9hZGluZ0NvbXBvbmVudCxcbiAgICAgICAgICBuZXcgTWFwPHN0cmluZywgYW55PigpXG4gICAgICAgICk7XG5cbiAgICAgICAgcm93RGF0YVJlc3BvbnNlID0gYXdhaXQgdGhpcy5zbWFydFRhYmxlLnJvd0V4cGFuZGVyPy5leHBhbmRBc3luYyhuZXdJbmRleCk7XG5cbiAgICAgICAgbGV0IHJlZiA9IHRoaXMudmNSZWYhLmZpbHRlcigoZWxlbWVudDogYW55LCBpbmRleDogbnVtYmVyKSA9PiBpbmRleCA9PT0gbmV3SW5kZXgpWzBdITtcbiAgICAgICAgcmVmLmNsZWFyKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy5jZlNlcnZpY2UuY3JlYXRlQ29tcG9uZW50KFxuICAgICAgICB0aGlzLnZjUmVmPy5maWx0ZXIoKGVsZW1lbnQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4gaW5kZXggPT09IG5ld0luZGV4KVswXSEsXG4gICAgICAgIHRoaXMuc21hcnRUYWJsZS5leHBhbmRlZENvbXBvbmVudCxcbiAgICAgICAgbmV3IE1hcDxzdHJpbmcsIGFueT4oW1sncm93RGF0YScsIHJvd0RhdGFSZXNwb25zZV1dKVxuICAgICAgKTtcblxuICAgICAgdGhpcy5lbGVtZW50ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHNldFNlbGVjdGlvbihlbGVtZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnNtYXJ0VGFibGUubWF4TnVtT2ZTZWxlY3RhYmxlUm93cyAmJlxuICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbiEuc2VsZWN0ZWQubGVuZ3RoID09PSB0aGlzLnNtYXJ0VGFibGUubWF4TnVtT2ZTZWxlY3RhYmxlUm93c1xuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uPy50b2dnbGUoZWxlbWVudCk7XG4gICAgdGhpcy5vblNlbGVjdGlvbkNoYW5nZWQubmV4dCgpO1xuXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5vblNlbGVjdGlvbikge1xuICAgICAgdGhpcy5zbWFydFRhYmxlLm9uU2VsZWN0aW9uKGVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHNob3dNZW51QnV0dG9uKGVsZW1lbnQ6IGFueSwgYnV0dG9uOiBTbWFydFRhYmxlQnV0dG9uKTogYm9vbGVhbiB7XG4gICAgbGV0IGhlYWRlcnM6IHN0cmluZ1tdID0gdGhpcy5zbWFydFRhYmxlLnRhYmxlSGVhZGVycy5tYXAoKGhlYWRlcikgPT5cbiAgICAgIHRoaXMub3JpZ2luYWxQcm9wZXJ0eShoZWFkZXIpXG4gICAgKTtcbiAgICBsZXQgc2hvd01lbnUgPSBTbWFydEdyaWRUb29sYmFyQWN0aW9uc1V0aWwuc2hvd01lbnUoZWxlbWVudCwgaGVhZGVycyk7XG5cbiAgICBpZiAoIXNob3dNZW51KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKGJ1dHRvbi5tZW51SXRlbUJ1dHRvbnMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAoYnV0dG9uLm1lbnVJdGVtQnV0dG9uc1Byb3BlcnR5TmFtZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgbGV0IGxlbmd0aCA9IHRoaXMuZ2V0VmFsdWUoZWxlbWVudCwgYnV0dG9uLm1lbnVJdGVtQnV0dG9uc1Byb3BlcnR5TmFtZSEpLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIGxlbmd0aCA+IDA7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldFZhbHVlKGVsZW1lbnQ6IGFueSwgaGVhZGVyOiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiBTbWFydE9iamVjdFV0aWxpdHkuZ2V0VmFsdWVCeVBhdGgoZWxlbWVudCwgaGVhZGVyKTtcbiAgfVxuXG4gIHNob3dCdXR0b24oYnV0dG9uOiBTbWFydFRhYmxlQnV0dG9uLCBlbGVtZW50OiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAoYnV0dG9uLnNob3dCdXR0b25JZikge1xuICAgICAgcmV0dXJuIGJ1dHRvbi5zaG93QnV0dG9uSWYoZWxlbWVudCk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaXNEaXNhYmxlZChlbGVtZW50OiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLmlzUm93RGlzYWJsZWRQcm9wZXJ0eU5hbWUpIHtcbiAgICAgIHJldHVybiB0aGlzLnNtYXJ0VGFibGUuZ2V0VmFsdWVEZWVwbHkoZWxlbWVudCwgdGhpcy5zbWFydFRhYmxlLmlzUm93RGlzYWJsZWRQcm9wZXJ0eU5hbWUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zbWFydFRhYmxlLnNlbGVjdGFibGVQcm9wZXJ0eU5hbWUpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGFibGUgPSB0aGlzLnNtYXJ0VGFibGUuZ2V0VmFsdWVEZWVwbHkoXG4gICAgICAgIGVsZW1lbnQsXG4gICAgICAgIHRoaXMuc21hcnRUYWJsZS5zZWxlY3RhYmxlUHJvcGVydHlOYW1lXG4gICAgICApO1xuICAgICAgcmV0dXJuIHNlbGVjdGFibGUgPT09IHVuZGVmaW5lZCB8fCBzZWxlY3RhYmxlID09PSBudWxsID8gZmFsc2UgOiAhc2VsZWN0YWJsZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaXNTZWxlY3RlZChlbGVtZW50OiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbj8uaXNTZWxlY3RlZChcbiAgICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5XG4gICAgICAgICAgPyB0aGlzLnNtYXJ0VGFibGUuZ2V0VmFsdWVEZWVwbHkoZWxlbWVudCwgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5KVxuICAgICAgICAgIDogZWxlbWVudFxuICAgICAgKSA/PyBmYWxzZVxuICAgICk7XG4gIH1cblxuICBvcmlnaW5hbFByb3BlcnR5KGhlYWRlcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoaGVhZGVyLnN0YXJ0c1dpdGgoJ2RhdGEuJykpIHtcbiAgICAgIHJldHVybiBoZWFkZXIuc3Vic3RyaW5nKCdkYXRhLicubGVuZ3RoKTtcbiAgICB9XG4gICAgcmV0dXJuIGhlYWRlcjtcbiAgfVxuXG4gIGlzSW1hZ2VSZXNvdXJjZShlbGVtZW50OiBhbnksIGhlYWRlcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCFlbGVtZW50Lmljb25zKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGxldCBwcm9wZXJ0eSA9IHRoaXMub3JpZ2luYWxQcm9wZXJ0eShoZWFkZXIpO1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhlbGVtZW50Lmljb25zKS5zb21lKChrZXkpID0+IGtleSA9PT0gcHJvcGVydHkpO1xuICB9XG5cbiAgZ2V0SW1hZ2VSZXNvdXJjZUljb25zKGVsZW1lbnQ6IGFueSwgaGVhZGVyOiBzdHJpbmcpOiBJbWFnZVJlc291cmNlW10ge1xuICAgIGlmIChlbGVtZW50Py5pY29ucykge1xuICAgICAgbGV0IGljb25Db2RlcyA9IGVsZW1lbnQ/Lmljb25zW3RoaXMub3JpZ2luYWxQcm9wZXJ0eShoZWFkZXIpXTtcbiAgICAgIHJldHVybiBpY29uQ29kZXM7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGdldEltYWdlUmVzb3VyY2VJY29uKGVsZW1lbnQ6IGFueSwgaGVhZGVyOiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiBlbGVtZW50Lmljb25zW3RoaXMub3JpZ2luYWxQcm9wZXJ0eShoZWFkZXIpXS5pZGVudGlmaWVyO1xuICB9XG5cbiAgZ2V0SW1hZ2VSZXNvdXJjZUNvbG9yKGVsZW1lbnQ6IGFueSwgaGVhZGVyOiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiBlbGVtZW50Lmljb25zW3RoaXMub3JpZ2luYWxQcm9wZXJ0eShoZWFkZXIpXS5jb2xvciA/PyAncHJpbWFyeSc7XG4gIH1cblxuICBnZXRJbWFnZVJlc291cmNlU3R5bGUocmVzb3VyY2U6IEltYWdlUmVzb3VyY2UpOiBhbnkge1xuICAgIHJldHVybiByZXNvdXJjZS5zdHlsZSA/IHJlc291cmNlLnN0eWxlIDoge307XG4gIH1cblxuICBvcGVuRGVmYXVsdEFjdGlvbnNNZW51KGV2ZW50OiBhbnksIHJvdzogYW55KSB7XG4gICAgbGV0IGFjdGlvbkNvZGVzRnJvbVJvdyA9IHJvdz8uYWN0aW9ucz8ubWFwKChhY3Rpb246IFVpQWN0aW9uKSA9PiBhY3Rpb24uY29kZSk7XG4gICAgaWYgKCFhY3Rpb25Db2Rlc0Zyb21Sb3cpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IGZpbHRlcmVkQWN0aW9ucyA9IHRoaXMuc21hcnRUYWJsZS5kZWZhdWx0QWN0aW9ucz8uZmlsdGVyKChhY3Rpb246IFNtYXJ0VGFibGVCdXR0b24pID0+XG4gICAgICBhY3Rpb25Db2Rlc0Zyb21Sb3cuaW5jbHVkZXMoYWN0aW9uLmNvZGUhKVxuICAgICk7XG5cbiAgICBpZiAoZmlsdGVyZWRBY3Rpb25zICYmIGZpbHRlcmVkQWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAoZmlsdGVyZWRBY3Rpb25zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uUm93RG91YmxlQ2xpY2spIHtcbiAgICAgICAgICB0aGlzLnNtYXJ0VGFibGUub25Sb3dEb3VibGVDbGljayhyb3cpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5kZWZhdWx0QWN0aW9uTWVudUNvbXBvbmVudHNcbiAgICAgICAgLnRvQXJyYXkoKVxuICAgICAgICAuZmluZCgoY29tcDogRGVmYXVsdEFjdGlvbnNQb3B1cENvbXBvbmVudCkgPT4gY29tcC5yb3cuaWQgPT09IHJvdy5pZClcbiAgICAgICAgPy5vcGVuRGVmYXVsdEFjdGlvbnNNZW51KGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBnZXREZWZhdWx0QWN0aW9uc0ZvclJvdyhlbGVtZW50OiBhbnkpOiBNYXA8U21hcnRUYWJsZUJ1dHRvbiwgVWlBY3Rpb24+IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoZWxlbWVudD8uYWN0aW9ucykge1xuICAgICAgY29uc3QgYWN0aW9uQ29kZXNGcm9tUm93ID0gbmV3IE1hcDxzdHJpbmcsIFVpQWN0aW9uPihcbiAgICAgICAgZWxlbWVudD8uYWN0aW9ucz8ubWFwKChhY3Rpb246IFVpQWN0aW9uKSA9PiBbYWN0aW9uLmNvZGUsIGFjdGlvbl0pXG4gICAgICApO1xuICAgICAgcmV0dXJuIG5ldyBNYXA8U21hcnRUYWJsZUJ1dHRvbiwgVWlBY3Rpb24+KFxuICAgICAgICB0aGlzLnNtYXJ0VGFibGUuZGVmYXVsdEFjdGlvbnNcbiAgICAgICAgICA/LmZpbHRlcigoYWN0aW9uOiBTbWFydFRhYmxlQnV0dG9uKSA9PiBhY3Rpb25Db2Rlc0Zyb21Sb3cuaGFzKGFjdGlvbi5jb2RlISkpXG4gICAgICAgICAgLm1hcCgoYWN0aW9uOiBTbWFydFRhYmxlQnV0dG9uKSA9PiBbYWN0aW9uLCBhY3Rpb25Db2Rlc0Zyb21Sb3cuZ2V0KGFjdGlvbi5jb2RlISkhXSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyAtLS0tIFRvb2xiYXIgLS0tLVxuICBkZWZhdWx0QWN0aW9uVG9vbGJhcklkOiBzdHJpbmcgPSBTbWFydEdyaWRUb29sYmFyQWN0aW9uc1V0aWwuZGVmYXVsdEFjdGlvblRvb2xiYXJJZDtcblxuICBnZXRSb3dDb2x1bW5BY3Rpb24ocm93OiBhbnksIGhlYWRlcjogc3RyaW5nKTogYW55W10ge1xuICAgIHJldHVybiBTbWFydEdyaWRUb29sYmFyQWN0aW9uc1V0aWwuZ2V0QWN0aW9uTW9kZWxzRnJvbU1hcChcbiAgICAgIHRoaXMuY2VsbFRvQWN0aW9uTWFwLFxuICAgICAgcm93LFxuICAgICAgdGhpcy5vcmlnaW5hbFByb3BlcnR5KGhlYWRlcilcbiAgICApO1xuICB9XG5cbiAgc2hvd0NlbGxUb29sYmFyKHJvdzogYW55LCBjb2x1bW5OYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU21hcnRHcmlkVG9vbGJhckFjdGlvbnNVdGlsLnNob3dUb29sYmFyKHJvdywgdGhpcy5vcmlnaW5hbFByb3BlcnR5KGNvbHVtbk5hbWUpKTtcbiAgfVxuXG4gIHByaXZhdGUgcm93TWVudUFjdGlvbk1vZGVsQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuXG4gIGdldFJvd01lbnVBY3Rpb25Nb2RlbChlbGVtZW50OiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IHNlcnZpY2UgPSB0aGlzLnNtYXJ0VGFibGUuZ2V0U2VydmljZVRvVXNlKCk7XG4gICAgY29uc3QgZ3JpZElkID0gdGhpcy5zbWFydFRhYmxlLmdldEdyaWRJZCgpO1xuXG4gICAgaWYgKCFzZXJ2aWNlIHx8ICFncmlkSWQpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBsZWZ0b3ZlckFjdGlvbnMgPSBTbWFydEdyaWRUb29sYmFyQWN0aW9uc1V0aWwuY2FsY3VsYXRlTWVudUFjdGlvbk1vZGVscyhcbiAgICAgIGVsZW1lbnQsXG4gICAgICB0aGlzLnNtYXJ0VGFibGUudGFibGVIZWFkZXJzLFxuICAgICAgc2VydmljZSxcbiAgICAgIGdyaWRJZFxuICAgICk7XG5cbiAgICBjb25zdCBtZW51VWlBY3Rpb246IFVpQWN0aW9uID0ge1xuICAgICAgY29kZTogJ3Jvd01lbnUnLFxuICAgICAgZGVzY3JpcHRvcjoge1xuICAgICAgICBpY29uOiAnbW9yZV92ZXJ0JyxcbiAgICAgICAgdGl0bGU6ICcnLFxuICAgICAgICB0eXBlOiBVaUFjdGlvbkJ1dHRvblR5cGUuSUNPTixcbiAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgIH0sXG4gICAgICBzdWJBY3Rpb25zOiBsZWZ0b3ZlckFjdGlvbnMubWFwKChtKSA9PiBtLnVpQWN0aW9uKSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNlcnZpY2VUb1VzZTogc2VydmljZSxcbiAgICAgIHVpQWN0aW9uOiBtZW51VWlBY3Rpb24sXG4gICAgICBub2RlSWQ6IGVsZW1lbnQuaWQsXG4gICAgICB3aWRnZXRJZDogZ3JpZElkLFxuICAgIH07XG4gIH1cbiAgcHJpdmF0ZSByb3dNZW51QWN0aW9uTW9kZWxBcnJheUNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIGFueVtdPigpO1xuXG4gIGdldFJvd01lbnVBY3Rpb25Nb2RlbEFycmF5KGVsZW1lbnQ6IGFueSk6IGFueVtdIHtcbiAgICB2YXIgY2FjaGVLZXkgPSBlbGVtZW50LmlkO1xuICAgIGlmICh0aGlzLnJvd01lbnVBY3Rpb25Nb2RlbEFycmF5Q2FjaGUuaGFzKGNhY2hlS2V5KSkge1xuICAgICAgcmV0dXJuIHRoaXMucm93TWVudUFjdGlvbk1vZGVsQXJyYXlDYWNoZS5nZXQoY2FjaGVLZXkpITtcbiAgICB9XG5cbiAgICB2YXIgbW9kZWwgPSB0aGlzLmdldFJvd01lbnVBY3Rpb25Nb2RlbChlbGVtZW50KTtcbiAgICB2YXIgYXJyID0gbW9kZWwgPyBbbW9kZWxdIDogW107XG4gICAgdGhpcy5yb3dNZW51QWN0aW9uTW9kZWxBcnJheUNhY2hlLnNldChjYWNoZUtleSwgYXJyKTtcbiAgICByZXR1cm4gYXJyO1xuICB9XG5cbiAgc2hvdWxkU2hvd01lbnVCdXR0b24ocm93OiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU21hcnRHcmlkVG9vbGJhckFjdGlvbnNVdGlsLnNob3dNZW51KHJvdywgdGhpcy5zbWFydFRhYmxlLnRhYmxlSGVhZGVycyk7XG4gIH1cblxuICAvLyBPTEQgU1RVRkZcblxuICBnZXRNZW51QnV0dG9ucyhyb3c6IGFueSwgYnV0dG9uOiBTbWFydFRhYmxlQnV0dG9uKTogU21hcnRUYWJsZUJ1dHRvbltdIHtcbiAgICBsZXQgY29sdW1uQWN0aW9ucyA9IHJvdy5jb2x1bW5BY3Rpb25zID8/IHt9O1xuXG4gICAgLy8gRmlsdGVyIGZvciBjb2x1bW5BY3Rpb25zIHRoYXQgYXJlIGluIGEgY29sdW1uQWN0aW9uLCBidXQgdGhlIGNvbHVtbiBpcyBub3QgaW4gdGhlIGhlYWRlcnNcbiAgICBsZXQgZmlsdGVyZWRBY3Rpb25Db2x1bW5zID0gT2JqZWN0LmtleXMoY29sdW1uQWN0aW9ucylcbiAgICAgIC5maWx0ZXIoKGtleSkgPT4gdGhpcy5zbWFydFRhYmxlLnRhYmxlSGVhZGVycy5pbmNsdWRlcygnZGF0YS4nICsga2V5KSlcbiAgICAgIC5yZWR1Y2UoXG4gICAgICAgIChhY2MsIGtleSkgPT4ge1xuICAgICAgICAgIGFjY1trZXldID0gY29sdW1uQWN0aW9uc1trZXldO1xuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sXG4gICAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPlxuICAgICAgKTtcblxuICAgIGxldCBjb2x1bW5Db2Rlczogc3RyaW5nW10gPSBPYmplY3QudmFsdWVzKGZpbHRlcmVkQWN0aW9uQ29sdW1ucykuZmxhdCgpO1xuICAgIHJldHVybiAoYnV0dG9uLm1lbnVJdGVtQnV0dG9ucyB8fCBbXSkuZmlsdGVyKChidG4pID0+ICFjb2x1bW5Db2Rlcy5pbmNsdWRlcyhidG4uY29kZSEpKTtcbiAgfVxuXG4gIGdldE1lbnVJdGVtQnV0dG9uc1Byb3BlcnR5TmFtZShlbGVtZW50OiBhbnksIGJ1dHRvbjogU21hcnRUYWJsZUJ1dHRvbik6IGFueVtdIHtcbiAgICBsZXQgYnV0dG9uczogU21hcnRUYWJsZUJ1dHRvbltdID0gdGhpcy5nZXRWYWx1ZShlbGVtZW50LCBidXR0b24ubWVudUl0ZW1CdXR0b25zUHJvcGVydHlOYW1lISk7XG4gICAgbGV0IGdyaWRSb3c6IGFueSA9IGVsZW1lbnQ7XG5cbiAgICBsZXQgY29sdW1uQWN0aW9ucyA9IGdyaWRSb3cuY29sdW1uQWN0aW9ucyA/PyB7fTtcblxuICAgIC8vIEZpbHRlciBmb3IgY29sdW1uQWN0aW9ucyB0aGF0IGFyZSBpbiBhIGNvbHVtbkFjdGlvbiwgYnV0IHRoZSBjb2x1bW4gaXMgbm90IGluIHRoZSBoZWFkZXJzXG4gICAgbGV0IGZpbHRlcmVkQWN0aW9uQ29sdW1ucyA9IE9iamVjdC5rZXlzKGNvbHVtbkFjdGlvbnMpXG4gICAgICAuZmlsdGVyKChrZXkpID0+IHRoaXMuc21hcnRUYWJsZS50YWJsZUhlYWRlcnMuaW5jbHVkZXMoJ2RhdGEuJyArIGtleSkpXG4gICAgICAucmVkdWNlKFxuICAgICAgICAoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgICBhY2Nba2V5XSA9IGNvbHVtbkFjdGlvbnNba2V5XTtcbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LFxuICAgICAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT5cbiAgICAgICk7XG4gICAgbGV0IGNvbHVtbkNvZGVzOiBzdHJpbmdbXSA9IE9iamVjdC52YWx1ZXMoZmlsdGVyZWRBY3Rpb25Db2x1bW5zIHx8IHt9KS5mbGF0KCk7XG5cbiAgICByZXR1cm4gYnV0dG9ucz8uZmlsdGVyKChidXR0b24pID0+ICFjb2x1bW5Db2Rlcy5pbmNsdWRlcyhidXR0b24uY29kZSEpKSE7XG4gIH1cbn1cbiJdfQ==
@@ -6,4 +6,4 @@ export * from './smarttree.component';
6
6
  export * from './smarttree.module';
7
7
  export * from './smarttree.model';
8
8
  export * from './smarttree-generic.service';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC10cmVlL3Byb2plY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHNtYXJ0dHJlZVxyXG4gKi9cclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vc21hcnR0cmVlLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NtYXJ0dHJlZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NtYXJ0dHJlZS5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NtYXJ0dHJlZS5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc21hcnR0cmVlLWdlbmVyaWMuc2VydmljZSc7XHJcbiJdfQ==
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC10cmVlL3Byb2plY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBzbWFydHRyZWVcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3NtYXJ0dHJlZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc21hcnR0cmVlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NtYXJ0dHJlZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zbWFydHRyZWUubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zbWFydHRyZWUtZ2VuZXJpYy5zZXJ2aWNlJztcbiJdfQ==