@smartbit4all/ng-client 1.1.30 → 1.1.31

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 (267) hide show
  1. package/README.md +386 -386
  2. package/esm2020/lib/session/api/api/api.mjs +4 -4
  3. package/esm2020/lib/session/api/api/session.service.mjs +306 -306
  4. package/esm2020/lib/session/api/configuration.mjs +91 -91
  5. package/esm2020/lib/session/api/encoder.mjs +19 -19
  6. package/esm2020/lib/session/api/index.mjs +3 -3
  7. package/esm2020/lib/session/api/model/accountInfo.mjs +13 -13
  8. package/esm2020/lib/session/api/model/apiError.mjs +13 -13
  9. package/esm2020/lib/session/api/model/authenticationProviderData.mjs +13 -13
  10. package/esm2020/lib/session/api/model/getAuthenticationProvidersResponse.mjs +2 -2
  11. package/esm2020/lib/session/api/model/models.mjs +9 -9
  12. package/esm2020/lib/session/api/model/refreshSessionRequest.mjs +13 -13
  13. package/esm2020/lib/session/api/model/session.mjs +2 -2
  14. package/esm2020/lib/session/api/model/sessionInfoData.mjs +2 -2
  15. package/esm2020/lib/session/api/model/userActivityLog.mjs +13 -13
  16. package/esm2020/lib/session/api/param.mjs +2 -2
  17. package/esm2020/lib/session/api/variables.mjs +9 -9
  18. package/esm2020/lib/session/cookie-service/smart-cookie.service.mjs +225 -225
  19. package/esm2020/lib/session/dev-tool/smart-dev-tool-dialog/smart-dev-tool-dialog.component.mjs +90 -90
  20. package/esm2020/lib/session/dev-tool/smart-dev-tool-dialog/smart-dev-tool-dialog.service.mjs +43 -43
  21. package/esm2020/lib/session/dev-tool/smart-dev-tool-floating-button/smart-dev-tool-floating-button.component.mjs +40 -40
  22. package/esm2020/lib/session/dev-tool/smart-dev-tool.interceptor.mjs +52 -52
  23. package/esm2020/lib/session/dev-tool/smart-dev-tool.service.mjs +165 -165
  24. package/esm2020/lib/session/projects.mjs +12 -12
  25. package/esm2020/lib/session/smart-error-catching.interceptor.mjs +71 -71
  26. package/esm2020/lib/session/smart-header-maintainer.interceptor.mjs +46 -46
  27. package/esm2020/lib/session/smart-session-handler.service.mjs +6 -6
  28. package/esm2020/lib/session/smart-session.module.mjs +74 -74
  29. package/esm2020/lib/session/smart-session.service.mjs +225 -225
  30. package/esm2020/lib/session/smart-timer/smart-session-timer.component.mjs +35 -35
  31. package/esm2020/lib/session/smart-timer/smart-session-timer.service.mjs +52 -52
  32. package/esm2020/lib/smart-client/projects.mjs +5 -5
  33. package/esm2020/lib/smart-client/smart-authentication.service.mjs +21 -21
  34. package/esm2020/lib/smart-client/smart-component-api-client.mjs +330 -316
  35. package/esm2020/lib/smart-client/smart.component.mjs +30 -30
  36. package/esm2020/lib/smart-client/smart.service.mjs +30 -30
  37. package/esm2020/lib/smart-ng-client.module.mjs +20 -20
  38. package/esm2020/lib/smart-ng-client.service.mjs +19 -19
  39. package/esm2020/lib/view-context/api/api/api.mjs +4 -4
  40. package/esm2020/lib/view-context/api/api/view.service.mjs +859 -701
  41. package/esm2020/lib/view-context/api/api.module.mjs +40 -40
  42. package/esm2020/lib/view-context/api/configuration.mjs +91 -91
  43. package/esm2020/lib/view-context/api/encoder.mjs +19 -19
  44. package/esm2020/lib/view-context/api/index.mjs +7 -7
  45. package/esm2020/lib/view-context/api/model/closeResult.mjs +17 -17
  46. package/esm2020/lib/view-context/api/model/componentConstraint.mjs +2 -2
  47. package/esm2020/lib/view-context/api/model/componentModel.mjs +2 -2
  48. package/esm2020/lib/view-context/api/model/componentModelChange.mjs +13 -13
  49. package/esm2020/lib/view-context/api/model/dataChange.mjs +2 -2
  50. package/esm2020/lib/view-context/api/model/dataChangeEvent.mjs +2 -2
  51. package/esm2020/lib/view-context/api/model/dataChangeKind.mjs +17 -17
  52. package/esm2020/lib/view-context/api/model/messageData.mjs +2 -2
  53. package/esm2020/lib/view-context/api/model/messageOption.mjs +2 -2
  54. package/esm2020/lib/view-context/api/model/messageOptionType.mjs +17 -17
  55. package/esm2020/lib/view-context/api/model/messageResult.mjs +2 -2
  56. package/esm2020/lib/view-context/api/model/messageType.mjs +18 -18
  57. package/esm2020/lib/view-context/api/model/models.mjs +40 -37
  58. package/esm2020/lib/view-context/api/model/openPendingData.mjs +2 -2
  59. package/esm2020/lib/view-context/api/model/smartLinkData.mjs +2 -2
  60. package/esm2020/lib/view-context/api/model/uiAction.mjs +2 -2
  61. package/esm2020/lib/view-context/api/model/uiActionButtonDescriptor.mjs +13 -13
  62. package/esm2020/lib/view-context/api/model/uiActionButtonIconPos.mjs +16 -16
  63. package/esm2020/lib/view-context/api/model/uiActionButtonType.mjs +21 -21
  64. package/esm2020/lib/view-context/api/model/uiActionConstraint.mjs +13 -0
  65. package/esm2020/lib/view-context/api/model/uiActionDescriptor.mjs +2 -2
  66. package/esm2020/lib/view-context/api/model/uiActionDialogDescriptor.mjs +2 -2
  67. package/esm2020/lib/view-context/api/model/uiActionFeedbackType.mjs +16 -16
  68. package/esm2020/lib/view-context/api/model/uiActionInputType.mjs +20 -18
  69. package/esm2020/lib/view-context/api/model/uiActionRequest.mjs +13 -13
  70. package/esm2020/lib/view-context/api/model/uiActionUploadDescriptor.mjs +13 -0
  71. package/esm2020/lib/view-context/api/model/uploadedFile.mjs +13 -0
  72. package/esm2020/lib/view-context/api/model/valueSet.mjs +2 -2
  73. package/esm2020/lib/view-context/api/model/view.mjs +2 -2
  74. package/esm2020/lib/view-context/api/model/viewApiError.mjs +13 -13
  75. package/esm2020/lib/view-context/api/model/viewConstraint.mjs +2 -2
  76. package/esm2020/lib/view-context/api/model/viewContext.mjs +2 -2
  77. package/esm2020/lib/view-context/api/model/viewContextChange.mjs +2 -2
  78. package/esm2020/lib/view-context/api/model/viewContextData.mjs +2 -2
  79. package/esm2020/lib/view-context/api/model/viewContextUpdate.mjs +2 -2
  80. package/esm2020/lib/view-context/api/model/viewData.mjs +2 -2
  81. package/esm2020/lib/view-context/api/model/viewEventHandler.mjs +20 -20
  82. package/esm2020/lib/view-context/api/model/viewState.mjs +21 -21
  83. package/esm2020/lib/view-context/api/model/viewStateUpdate.mjs +2 -2
  84. package/esm2020/lib/view-context/api/model/viewType.mjs +17 -17
  85. package/esm2020/lib/view-context/api/param.mjs +2 -2
  86. package/esm2020/lib/view-context/api/variables.mjs +9 -9
  87. package/esm2020/lib/view-context/message-dialog/message-dialog.component.mjs +63 -63
  88. package/esm2020/lib/view-context/projects.mjs +17 -17
  89. package/esm2020/lib/view-context/property-definition-data.mjs +2 -2
  90. package/esm2020/lib/view-context/smart-ui-action/components/success-snack-bar/success-snack-bar.component.mjs +30 -30
  91. package/esm2020/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.component.mjs +53 -53
  92. package/esm2020/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.service.mjs +48 -48
  93. package/esm2020/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component.mjs +68 -0
  94. package/esm2020/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.service.mjs +53 -0
  95. package/esm2020/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component.mjs +119 -119
  96. package/esm2020/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.service.mjs +52 -52
  97. package/esm2020/lib/view-context/smart-ui-action/ui-action-toolbar.component.mjs +109 -109
  98. package/esm2020/lib/view-context/smart-ui-action/ui-action.descriptor.service.mjs +119 -119
  99. package/esm2020/lib/view-context/smart-ui-action/ui-action.model.mjs +7 -7
  100. package/esm2020/lib/view-context/smart-ui-action/ui-action.service.mjs +182 -155
  101. package/esm2020/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.component.mjs +29 -29
  102. package/esm2020/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.service.mjs +69 -69
  103. package/esm2020/lib/view-context/smart-view-context.interceptor.mjs +39 -39
  104. package/esm2020/lib/view-context/smart-view-context.model.mjs +2 -2
  105. package/esm2020/lib/view-context/smart-view-context.module.mjs +87 -84
  106. package/esm2020/lib/view-context/smart-view-context.service.mjs +536 -510
  107. package/esm2020/lib/view-context/smart-view-redirect/smart-view-redirect.mjs +33 -33
  108. package/esm2020/lib/view-context/value-api/api/api.mjs +4 -4
  109. package/esm2020/lib/view-context/value-api/api/value.service.mjs +138 -138
  110. package/esm2020/lib/view-context/value-api/api.module.mjs +40 -40
  111. package/esm2020/lib/view-context/value-api/configuration.mjs +91 -91
  112. package/esm2020/lib/view-context/value-api/encoder.mjs +19 -19
  113. package/esm2020/lib/view-context/value-api/index.mjs +7 -7
  114. package/esm2020/lib/view-context/value-api/model/models.mjs +9 -9
  115. package/esm2020/lib/view-context/value-api/model/value.mjs +13 -13
  116. package/esm2020/lib/view-context/value-api/model/valueSetData.mjs +13 -13
  117. package/esm2020/lib/view-context/value-api/model/valueSetDefinition.mjs +2 -2
  118. package/esm2020/lib/view-context/value-api/model/valueSetDefinitionData.mjs +2 -2
  119. package/esm2020/lib/view-context/value-api/model/valueSetDefinitionKind.mjs +23 -23
  120. package/esm2020/lib/view-context/value-api/model/valueSetExpression.mjs +2 -2
  121. package/esm2020/lib/view-context/value-api/model/valueSetOperand.mjs +2 -2
  122. package/esm2020/lib/view-context/value-api/model/valueSetOperation.mjs +18 -18
  123. package/esm2020/lib/view-context/value-api/param.mjs +2 -2
  124. package/esm2020/lib/view-context/value-api/variables.mjs +9 -9
  125. package/esm2020/projects.mjs +9 -9
  126. package/esm2020/smartbit4all-ng-client.mjs +4 -4
  127. package/fesm2015/smartbit4all-ng-client.mjs +4688 -4343
  128. package/fesm2015/smartbit4all-ng-client.mjs.map +1 -1
  129. package/fesm2020/smartbit4all-ng-client.mjs +4668 -4298
  130. package/fesm2020/smartbit4all-ng-client.mjs.map +1 -1
  131. package/lib/session/api/api/api.d.ts +3 -3
  132. package/lib/session/api/api/session.service.d.ts +107 -107
  133. package/lib/session/api/configuration.d.ts +104 -104
  134. package/lib/session/api/encoder.d.ts +11 -11
  135. package/lib/session/api/index.d.ts +2 -2
  136. package/lib/session/api/model/accountInfo.d.ts +22 -22
  137. package/lib/session/api/model/apiError.d.ts +15 -15
  138. package/lib/session/api/model/authenticationProviderData.d.ts +17 -17
  139. package/lib/session/api/model/getAuthenticationProvidersResponse.d.ts +15 -15
  140. package/lib/session/api/model/models.d.ts +8 -8
  141. package/lib/session/api/model/refreshSessionRequest.d.ts +14 -14
  142. package/lib/session/api/model/session.d.ts +32 -32
  143. package/lib/session/api/model/sessionInfoData.d.ts +22 -22
  144. package/lib/session/api/model/userActivityLog.d.ts +33 -33
  145. package/lib/session/api/param.d.ts +37 -37
  146. package/lib/session/api/variables.d.ts +8 -8
  147. package/lib/session/cookie-service/smart-cookie.service.d.ts +129 -129
  148. package/lib/session/dev-tool/smart-dev-tool-dialog/smart-dev-tool-dialog.component.d.ts +28 -28
  149. package/lib/session/dev-tool/smart-dev-tool-dialog/smart-dev-tool-dialog.service.d.ts +18 -18
  150. package/lib/session/dev-tool/smart-dev-tool-floating-button/smart-dev-tool-floating-button.component.d.ts +15 -15
  151. package/lib/session/dev-tool/smart-dev-tool.interceptor.d.ts +18 -18
  152. package/lib/session/dev-tool/smart-dev-tool.service.d.ts +57 -57
  153. package/lib/session/projects.d.ts +8 -8
  154. package/lib/session/smart-error-catching.interceptor.d.ts +13 -13
  155. package/lib/session/smart-header-maintainer.interceptor.d.ts +11 -11
  156. package/lib/session/smart-session-handler.service.d.ts +11 -11
  157. package/lib/session/smart-session.module.d.ts +15 -15
  158. package/lib/session/smart-session.service.d.ts +54 -54
  159. package/lib/session/smart-timer/smart-session-timer.component.d.ts +14 -14
  160. package/lib/session/smart-timer/smart-session-timer.service.d.ts +21 -21
  161. package/lib/smart-client/projects.d.ts +4 -4
  162. package/lib/smart-client/smart-authentication.service.d.ts +15 -15
  163. package/lib/smart-client/smart-component-api-client.d.ts +71 -71
  164. package/lib/smart-client/smart.component.d.ts +11 -11
  165. package/lib/smart-client/smart.service.d.ts +11 -11
  166. package/lib/smart-ng-client.module.d.ts +8 -8
  167. package/lib/smart-ng-client.service.d.ts +10 -10
  168. package/lib/view-context/api/api/api.d.ts +3 -3
  169. package/lib/view-context/api/api/view.service.d.ts +313 -266
  170. package/lib/view-context/api/api.module.d.ts +11 -11
  171. package/lib/view-context/api/configuration.d.ts +104 -104
  172. package/lib/view-context/api/encoder.d.ts +11 -11
  173. package/lib/view-context/api/index.d.ts +6 -6
  174. package/lib/view-context/api/model/closeResult.d.ts +17 -17
  175. package/lib/view-context/api/model/componentConstraint.d.ts +25 -25
  176. package/lib/view-context/api/model/componentModel.d.ts +35 -31
  177. package/lib/view-context/api/model/componentModelChange.d.ts +29 -29
  178. package/lib/view-context/api/model/dataChange.d.ts +27 -27
  179. package/lib/view-context/api/model/dataChangeEvent.d.ts +33 -33
  180. package/lib/view-context/api/model/dataChangeKind.d.ts +20 -20
  181. package/lib/view-context/api/model/messageData.d.ts +29 -29
  182. package/lib/view-context/api/model/messageOption.d.ts +20 -20
  183. package/lib/view-context/api/model/messageOptionType.d.ts +17 -17
  184. package/lib/view-context/api/model/messageResult.d.ts +16 -16
  185. package/lib/view-context/api/model/messageType.d.ts +18 -18
  186. package/lib/view-context/api/model/models.d.ts +39 -36
  187. package/lib/view-context/api/model/openPendingData.d.ts +22 -22
  188. package/lib/view-context/api/model/smartLinkData.d.ts +21 -21
  189. package/lib/view-context/api/model/uiAction.d.ts +29 -29
  190. package/lib/view-context/api/model/uiActionButtonDescriptor.d.ts +18 -18
  191. package/lib/view-context/api/model/uiActionButtonIconPos.d.ts +19 -19
  192. package/lib/view-context/api/model/uiActionButtonType.d.ts +24 -24
  193. package/lib/view-context/api/model/uiActionConstraint.d.ts +22 -0
  194. package/lib/view-context/api/model/uiActionDescriptor.d.ts +36 -34
  195. package/lib/view-context/api/model/uiActionDialogDescriptor.d.ts +23 -23
  196. package/lib/view-context/api/model/uiActionFeedbackType.d.ts +19 -19
  197. package/lib/view-context/api/model/uiActionInputType.d.ts +20 -18
  198. package/lib/view-context/api/model/uiActionRequest.d.ts +28 -28
  199. package/lib/view-context/api/model/uiActionUploadDescriptor.d.ts +23 -0
  200. package/lib/view-context/api/model/uploadedFile.d.ts +19 -0
  201. package/lib/view-context/api/model/valueSet.d.ts +20 -20
  202. package/lib/view-context/api/model/view.d.ts +68 -68
  203. package/lib/view-context/api/model/viewApiError.d.ts +18 -18
  204. package/lib/view-context/api/model/viewConstraint.d.ts +18 -18
  205. package/lib/view-context/api/model/viewContext.d.ts +22 -22
  206. package/lib/view-context/api/model/viewContextChange.d.ts +20 -20
  207. package/lib/view-context/api/model/viewContextData.d.ts +19 -19
  208. package/lib/view-context/api/model/viewContextUpdate.d.ts +22 -22
  209. package/lib/view-context/api/model/viewData.d.ts +27 -27
  210. package/lib/view-context/api/model/viewEventHandler.d.ts +30 -30
  211. package/lib/view-context/api/model/viewState.d.ts +21 -21
  212. package/lib/view-context/api/model/viewStateUpdate.d.ts +24 -24
  213. package/lib/view-context/api/model/viewType.d.ts +17 -17
  214. package/lib/view-context/api/param.d.ts +37 -37
  215. package/lib/view-context/api/variables.d.ts +8 -8
  216. package/lib/view-context/message-dialog/message-dialog.component.d.ts +17 -17
  217. package/lib/view-context/projects.d.ts +13 -13
  218. package/lib/view-context/property-definition-data.d.ts +5 -5
  219. package/lib/view-context/smart-ui-action/components/success-snack-bar/success-snack-bar.component.d.ts +13 -13
  220. package/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.component.d.ts +25 -25
  221. package/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.service.d.ts +18 -18
  222. package/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component.d.ts +30 -0
  223. package/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.service.d.ts +22 -0
  224. package/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component.d.ts +29 -29
  225. package/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.service.d.ts +25 -25
  226. package/lib/view-context/smart-ui-action/ui-action-toolbar.component.d.ts +30 -30
  227. package/lib/view-context/smart-ui-action/ui-action.descriptor.service.d.ts +21 -21
  228. package/lib/view-context/smart-ui-action/ui-action.model.d.ts +32 -32
  229. package/lib/view-context/smart-ui-action/ui-action.service.d.ts +37 -34
  230. package/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.component.d.ts +13 -13
  231. package/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.service.d.ts +19 -19
  232. package/lib/view-context/smart-view-context.interceptor.d.ts +13 -13
  233. package/lib/view-context/smart-view-context.model.d.ts +30 -30
  234. package/lib/view-context/smart-view-context.module.d.ts +21 -20
  235. package/lib/view-context/smart-view-context.service.d.ts +106 -102
  236. package/lib/view-context/smart-view-redirect/smart-view-redirect.d.ts +14 -14
  237. package/lib/view-context/value-api/api/api.d.ts +3 -3
  238. package/lib/view-context/value-api/api/value.service.d.ts +35 -35
  239. package/lib/view-context/value-api/api.module.d.ts +11 -11
  240. package/lib/view-context/value-api/configuration.d.ts +104 -104
  241. package/lib/view-context/value-api/encoder.d.ts +11 -11
  242. package/lib/view-context/value-api/index.d.ts +6 -6
  243. package/lib/view-context/value-api/model/models.d.ts +8 -8
  244. package/lib/view-context/value-api/model/value.d.ts +29 -29
  245. package/lib/view-context/value-api/model/valueSetData.d.ts +41 -41
  246. package/lib/view-context/value-api/model/valueSetDefinition.d.ts +16 -16
  247. package/lib/view-context/value-api/model/valueSetDefinitionData.d.ts +55 -55
  248. package/lib/view-context/value-api/model/valueSetDefinitionKind.d.ts +23 -23
  249. package/lib/view-context/value-api/model/valueSetExpression.d.ts +20 -20
  250. package/lib/view-context/value-api/model/valueSetOperand.d.ts +25 -25
  251. package/lib/view-context/value-api/model/valueSetOperation.d.ts +18 -18
  252. package/lib/view-context/value-api/param.d.ts +37 -37
  253. package/lib/view-context/value-api/variables.d.ts +8 -8
  254. package/package.json +1 -1
  255. package/projects.d.ts +5 -5
  256. package/schematics/collection.json +11 -11
  257. package/schematics/smart-component/index.ts +26 -26
  258. package/schematics/smart-component/schema.json +20 -20
  259. package/schematics/smart-component/smart-component.schema.ts +4 -4
  260. package/schematics/smart-component/templates/__name@dasherize__.component.html.template +2 -2
  261. package/schematics/smart-component/templates/__name@dasherize__.component.ts.template +26 -26
  262. package/smartbit4all-ng-client-1.1.31.tgz +0 -0
  263. package/smartbit4all-ng-client.d.ts +5 -5
  264. package/src/lib/session/api/README.md +226 -226
  265. package/src/lib/view-context/api/README.md +226 -226
  266. package/src/lib/view-context/value-api/README.md +226 -226
  267. package/smartbit4all-ng-client-1.1.30.tgz +0 -0
@@ -1,90 +1,90 @@
1
- import { Component } from '@angular/core';
2
- import { Subject, takeUntil } from 'rxjs';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "./smart-dev-tool-dialog.service";
5
- import * as i2 from "@angular/material/button";
6
- import * as i3 from "@smartbit4all/icon";
7
- import * as i4 from "@angular/material/expansion";
8
- import * as i5 from "@angular/common";
9
- import * as i6 from "../smart-dev-tool.service";
10
- export class SmartDevToolDialogComponent {
11
- constructor(service) {
12
- this.service = service;
13
- this._destroy$ = new Subject();
14
- this.descriptor = this.service.getData();
15
- this.service.update.pipe(takeUntil(this._destroy$)).subscribe(() => {
16
- this.descriptor = this.service.getData();
17
- });
18
- this.service.service.clearErrors();
19
- }
20
- ngOnDestroy() {
21
- this._destroy$.next();
22
- }
23
- clear() {
24
- this.service.clear();
25
- }
26
- getBody(inp) {
27
- return this.syntaxHighlight(inp);
28
- }
29
- syntaxHighlight(json) {
30
- if (typeof json != 'string') {
31
- json = JSON.stringify(json, undefined, 2);
32
- }
33
- json = json.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
34
- return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function (match) {
35
- var cls = 'number';
36
- if (/^"/.test(match)) {
37
- if (/:$/.test(match)) {
38
- cls = 'key';
39
- }
40
- else {
41
- cls = 'string';
42
- }
43
- }
44
- else if (/true|false/.test(match)) {
45
- cls = 'boolean';
46
- }
47
- else if (/null/.test(match)) {
48
- cls = 'null';
49
- }
50
- return '<span class="' + cls + '">' + match + '</span>';
51
- });
52
- }
53
- copy() {
54
- copyToClipboard({
55
- value: this.service.getPureString(),
56
- });
57
- }
58
- close() {
59
- this.service.closeDialog();
60
- }
61
- }
62
- SmartDevToolDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartDevToolDialogComponent, deps: [{ token: i1.SmartDevToolDialogService }], target: i0.ɵɵFactoryTarget.Component });
63
- SmartDevToolDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: SmartDevToolDialogComponent, selector: "app-smart-dev-tool-dialog", ngImport: i0, template: "<div class=\"smartDevToolDialogContainer\">\r\n <div class=\"header\">\r\n <h2>Developer tool</h2>\r\n <button mat-icon-button title=\"close\" (click)=\"close()\">\r\n <smart-icon icon=\"close\"></smart-icon>\r\n </button>\r\n </div>\r\n <div class=\"requestsContainer\">\r\n <mat-accordion multi>\r\n <mat-expansion-panel\r\n class=\"requestCard\"\r\n [ngClass]=\"apiCall.responseStatus === 200 ? '' : 'hasError'\"\r\n *ngFor=\"let apiCall of descriptor?.apiCalls; let i = index\"\r\n >\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <div class=\"titlePanel\">\r\n <span class=\"date\">\r\n {{ apiCall.responseDate | smartDevToolDatePipe }}\r\n </span>\r\n <span class=\"urlText\">\r\n {{ apiCall.url }}\r\n </span>\r\n <div [ngClass]=\"apiCall.requestMethod\">\r\n {{ apiCall.requestMethod }}\r\n </div>\r\n <div [ngClass]=\"'statusCode-' + apiCall.responseStatus.toString()[0]\">\r\n {{ apiCall.responseStatus }}\r\n </div>\r\n </div>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n\r\n <div>\r\n <div class=\"table\">\r\n <div class=\"row\">\r\n <div class=\"mainCol heading\">Request</div>\r\n <div class=\"mainCol heading\">Response</div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Date</div>\r\n <div class=\"data\">\r\n {{ apiCall.requestDate | smartDevToolDatePipe }}\r\n </div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Date</div>\r\n <div class=\"data\">\r\n {{ apiCall.responseDate | smartDevToolDatePipe }}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Headers</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Headers</div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <pre\r\n *ngIf=\"apiCall.requestHeader\"\r\n class=\"data\"\r\n [innerHTML]=\"getBody(apiCall.requestHeader)\"\r\n ></pre>\r\n <div *ngIf=\"!apiCall.requestHeader\" class=\"data\">null</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <pre\r\n *ngIf=\"apiCall.responseHeader\"\r\n class=\"data\"\r\n [innerHTML]=\"getBody(apiCall.responseHeader)\"\r\n ></pre>\r\n <div *ngIf=\"!apiCall.responseHeader\" class=\"data\">null</div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <div class=\"heading\"></div>\r\n <div class=\"data\"></div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Status</div>\r\n <div class=\"data\">\r\n {{ apiCall.responseStatus }}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <div class=\"heading\"></div>\r\n <div class=\"data\"></div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Status text</div>\r\n <div class=\"data\">\r\n {{ apiCall.responseStatusText }}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Body</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Body</div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <pre\r\n *ngIf=\"apiCall.requestBody\"\r\n class=\"data\"\r\n [innerHTML]=\"getBody(apiCall.requestBody)\"\r\n ></pre>\r\n <div *ngIf=\"!apiCall.requestBody\" class=\"data\">null</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <pre\r\n *ngIf=\"apiCall.responseBody\"\r\n class=\"data\"\r\n [innerHTML]=\"getBody(apiCall.responseBody)\"\r\n ></pre>\r\n <div *ngIf=\"!apiCall.responseBody\" class=\"data\">null</div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Session Storage</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Local Storage</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Cookies</div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <pre\r\n *ngIf=\"apiCall.sessionStorage\"\r\n class=\"data\"\r\n [innerHTML]=\"getBody(apiCall.sessionStorage)\"\r\n ></pre>\r\n <div *ngIf=\"!apiCall.sessionStorage\" class=\"data\">null</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <pre\r\n *ngIf=\"apiCall.localStorage\"\r\n class=\"data\"\r\n [innerHTML]=\"getBody(apiCall.localStorage)\"\r\n ></pre>\r\n <div *ngIf=\"!apiCall.localStorage\" class=\"data\">null</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <pre\r\n *ngIf=\"apiCall.cookies\"\r\n class=\"data\"\r\n [innerHTML]=\"getBody(apiCall.cookies)\"\r\n ></pre>\r\n <div *ngIf=\"!apiCall.cookies\" class=\"data\">null</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </div>\r\n <div class=\"buttonsContainer\">\r\n <button color=\"primary\" mat-raised-button (click)=\"copy()\">Copy</button>\r\n <button color=\"warn\" mat-raised-button (click)=\"clear()\">Clear</button>\r\n </div>\r\n</div>\r\n", styles: [".smartDevToolDialogContainer{display:flex;flex-direction:column;gap:1rem;width:78vw;height:90vh}.header{display:flex;flex-direction:row;justify-content:space-between}.requestsContainer{display:flex;flex-direction:column;gap:1rem;flex:1;overflow:auto}.requestCard{background-color:var(--primary-lighter-color);padding:.5rem;border-radius:.5rem;display:flex;flex-direction:column}.table{display:flex;flex-direction:column;gap:.25rem}.row{display:flex;flex-direction:row;gap:1rem}.mainCol{flex:1;display:flex;flex-direction:row;gap:.5rem;overflow:auto}.heading{font-weight:700}.data{word-wrap:break-word}.buttonsContainer{display:flex;flex-direction:row;justify-content:space-between}pre{outline:1px solid #000;padding:5px;margin:5px}.string{color:green}.number{color:#ff8c00}.boolean{color:#00f}.null{color:#f0f}.key{color:red}@media only screen and (max-width: 1000px){.row{flex-direction:column;gap:.5rem}.mainCol{flex-direction:column;overflow-x:auto;overflow-y:visible;flex:auto}.requestCard h4{font-size:small;overflow:auto}.smartDevToolDialogContainer{width:calc(80vw - 3rem)}}.hasError{background-color:var(--warn-lighter-color)}.titlePanel{flex:1;display:flex;flex-direction:row;gap:1rem}.urlText{flex:1;text-decoration:underline}.PATCH{color:#d38042}.DELETE{color:#a41e22}.GET{color:#0f6ab4}.POST{color:#10a54a}.PUT{color:#c5862b}.HEAD{color:#ffd20f}.statusCode-2{color:#5fb442}.statusCode-3{color:#5970f6}.statusCode-4{color:#ec6762}.statusCode-5{color:#f2a63b}\n"], components: [{ type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color"] }, { type: i4.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { type: i4.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }], directives: [{ type: i4.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.MatExpansionPanelTitle, selector: "mat-panel-title" }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "smartDevToolDatePipe": i6.SmartDevToolDatePipe } });
64
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartDevToolDialogComponent, decorators: [{
65
- type: Component,
66
- args: [{ selector: 'app-smart-dev-tool-dialog', template: "<div class=\"smartDevToolDialogContainer\">\r\n <div class=\"header\">\r\n <h2>Developer tool</h2>\r\n <button mat-icon-button title=\"close\" (click)=\"close()\">\r\n <smart-icon icon=\"close\"></smart-icon>\r\n </button>\r\n </div>\r\n <div class=\"requestsContainer\">\r\n <mat-accordion multi>\r\n <mat-expansion-panel\r\n class=\"requestCard\"\r\n [ngClass]=\"apiCall.responseStatus === 200 ? '' : 'hasError'\"\r\n *ngFor=\"let apiCall of descriptor?.apiCalls; let i = index\"\r\n >\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <div class=\"titlePanel\">\r\n <span class=\"date\">\r\n {{ apiCall.responseDate | smartDevToolDatePipe }}\r\n </span>\r\n <span class=\"urlText\">\r\n {{ apiCall.url }}\r\n </span>\r\n <div [ngClass]=\"apiCall.requestMethod\">\r\n {{ apiCall.requestMethod }}\r\n </div>\r\n <div [ngClass]=\"'statusCode-' + apiCall.responseStatus.toString()[0]\">\r\n {{ apiCall.responseStatus }}\r\n </div>\r\n </div>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n\r\n <div>\r\n <div class=\"table\">\r\n <div class=\"row\">\r\n <div class=\"mainCol heading\">Request</div>\r\n <div class=\"mainCol heading\">Response</div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Date</div>\r\n <div class=\"data\">\r\n {{ apiCall.requestDate | smartDevToolDatePipe }}\r\n </div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Date</div>\r\n <div class=\"data\">\r\n {{ apiCall.responseDate | smartDevToolDatePipe }}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Headers</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Headers</div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <pre\r\n *ngIf=\"apiCall.requestHeader\"\r\n class=\"data\"\r\n [innerHTML]=\"getBody(apiCall.requestHeader)\"\r\n ></pre>\r\n <div *ngIf=\"!apiCall.requestHeader\" class=\"data\">null</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <pre\r\n *ngIf=\"apiCall.responseHeader\"\r\n class=\"data\"\r\n [innerHTML]=\"getBody(apiCall.responseHeader)\"\r\n ></pre>\r\n <div *ngIf=\"!apiCall.responseHeader\" class=\"data\">null</div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <div class=\"heading\"></div>\r\n <div class=\"data\"></div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Status</div>\r\n <div class=\"data\">\r\n {{ apiCall.responseStatus }}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <div class=\"heading\"></div>\r\n <div class=\"data\"></div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Status text</div>\r\n <div class=\"data\">\r\n {{ apiCall.responseStatusText }}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Body</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Body</div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <pre\r\n *ngIf=\"apiCall.requestBody\"\r\n class=\"data\"\r\n [innerHTML]=\"getBody(apiCall.requestBody)\"\r\n ></pre>\r\n <div *ngIf=\"!apiCall.requestBody\" class=\"data\">null</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <pre\r\n *ngIf=\"apiCall.responseBody\"\r\n class=\"data\"\r\n [innerHTML]=\"getBody(apiCall.responseBody)\"\r\n ></pre>\r\n <div *ngIf=\"!apiCall.responseBody\" class=\"data\">null</div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Session Storage</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Local Storage</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Cookies</div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <pre\r\n *ngIf=\"apiCall.sessionStorage\"\r\n class=\"data\"\r\n [innerHTML]=\"getBody(apiCall.sessionStorage)\"\r\n ></pre>\r\n <div *ngIf=\"!apiCall.sessionStorage\" class=\"data\">null</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <pre\r\n *ngIf=\"apiCall.localStorage\"\r\n class=\"data\"\r\n [innerHTML]=\"getBody(apiCall.localStorage)\"\r\n ></pre>\r\n <div *ngIf=\"!apiCall.localStorage\" class=\"data\">null</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <pre\r\n *ngIf=\"apiCall.cookies\"\r\n class=\"data\"\r\n [innerHTML]=\"getBody(apiCall.cookies)\"\r\n ></pre>\r\n <div *ngIf=\"!apiCall.cookies\" class=\"data\">null</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </div>\r\n <div class=\"buttonsContainer\">\r\n <button color=\"primary\" mat-raised-button (click)=\"copy()\">Copy</button>\r\n <button color=\"warn\" mat-raised-button (click)=\"clear()\">Clear</button>\r\n </div>\r\n</div>\r\n", styles: [".smartDevToolDialogContainer{display:flex;flex-direction:column;gap:1rem;width:78vw;height:90vh}.header{display:flex;flex-direction:row;justify-content:space-between}.requestsContainer{display:flex;flex-direction:column;gap:1rem;flex:1;overflow:auto}.requestCard{background-color:var(--primary-lighter-color);padding:.5rem;border-radius:.5rem;display:flex;flex-direction:column}.table{display:flex;flex-direction:column;gap:.25rem}.row{display:flex;flex-direction:row;gap:1rem}.mainCol{flex:1;display:flex;flex-direction:row;gap:.5rem;overflow:auto}.heading{font-weight:700}.data{word-wrap:break-word}.buttonsContainer{display:flex;flex-direction:row;justify-content:space-between}pre{outline:1px solid #000;padding:5px;margin:5px}.string{color:green}.number{color:#ff8c00}.boolean{color:#00f}.null{color:#f0f}.key{color:red}@media only screen and (max-width: 1000px){.row{flex-direction:column;gap:.5rem}.mainCol{flex-direction:column;overflow-x:auto;overflow-y:visible;flex:auto}.requestCard h4{font-size:small;overflow:auto}.smartDevToolDialogContainer{width:calc(80vw - 3rem)}}.hasError{background-color:var(--warn-lighter-color)}.titlePanel{flex:1;display:flex;flex-direction:row;gap:1rem}.urlText{flex:1;text-decoration:underline}.PATCH{color:#d38042}.DELETE{color:#a41e22}.GET{color:#0f6ab4}.POST{color:#10a54a}.PUT{color:#c5862b}.HEAD{color:#ffd20f}.statusCode-2{color:#5fb442}.statusCode-3{color:#5970f6}.statusCode-4{color:#ec6762}.statusCode-5{color:#f2a63b}\n"] }]
67
- }], ctorParameters: function () { return [{ type: i1.SmartDevToolDialogService }]; } });
68
- export const copyToClipboard = async ({ target, message, value }) => {
69
- try {
70
- let copyValue = '';
71
- if (!navigator.clipboard) {
72
- throw new Error("Browser don't have support for native clipboard.");
73
- }
74
- if (target) {
75
- const node = document.querySelector(target);
76
- if (!node || !node.textContent) {
77
- throw new Error('Element not found');
78
- }
79
- value = node.textContent;
80
- }
81
- if (value) {
82
- copyValue = value;
83
- }
84
- await navigator.clipboard.writeText(copyValue);
85
- }
86
- catch (error) {
87
- console.error(error.toString());
88
- }
89
- };
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZGV2LXRvb2wtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3Nlc3Npb24vZGV2LXRvb2wvc21hcnQtZGV2LXRvb2wtZGlhbG9nL3NtYXJ0LWRldi10b29sLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zZXNzaW9uL2Rldi10b29sL3NtYXJ0LWRldi10b29sLWRpYWxvZy9zbWFydC1kZXYtdG9vbC1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7QUFTMUMsTUFBTSxPQUFPLDJCQUEyQjtJQUt0QyxZQUFvQixPQUFrQztRQUFsQyxZQUFPLEdBQVAsT0FBTyxDQUEyQjtRQUo5QyxjQUFTLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFLL0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNqRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBUTtRQUNkLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsZUFBZSxDQUFDLElBQVM7UUFDdkIsSUFBSSxPQUFPLElBQUksSUFBSSxRQUFRLEVBQUU7WUFDM0IsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUMzQztRQUNELElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDL0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUNqQix3R0FBd0csRUFDeEcsVUFBVSxLQUFVO1lBQ2xCLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQztZQUNuQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3BCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDcEIsR0FBRyxHQUFHLEtBQUssQ0FBQztpQkFDYjtxQkFBTTtvQkFDTCxHQUFHLEdBQUcsUUFBUSxDQUFDO2lCQUNoQjthQUNGO2lCQUFNLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDbkMsR0FBRyxHQUFHLFNBQVMsQ0FBQzthQUNqQjtpQkFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQzdCLEdBQUcsR0FBRyxNQUFNLENBQUM7YUFDZDtZQUNELE9BQU8sZUFBZSxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsS0FBSyxHQUFHLFNBQVMsQ0FBQztRQUMxRCxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJO1FBQ0YsZUFBZSxDQUFDO1lBQ2QsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO1NBQ3BDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM3QixDQUFDOzt5SEF6RFUsMkJBQTJCOzZHQUEzQiwyQkFBMkIsaUVDVnhDLDRuU0FnTEE7NEZEdEthLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSwyQkFBMkI7O0FBeUV2QyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQW9CLEVBQUUsRUFBRTtJQUNwRixJQUFJO1FBQ0YsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBRW5CLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFO1lBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztTQUNyRTtRQUVELElBQUksTUFBTSxFQUFFO1lBQ1YsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUU1QyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2FBQ3RDO1lBRUQsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7U0FDMUI7UUFFRCxJQUFJLEtBQUssRUFBRTtZQUNULFNBQVMsR0FBRyxLQUFLLENBQUM7U0FDbkI7UUFFRCxNQUFNLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBQ2hEO0lBQUMsT0FBTyxLQUFVLEVBQUU7UUFDbkIsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztLQUNqQztBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTbWFydERldlRvb2xEZXNjcmlwdG9yIH0gZnJvbSAnLi4vc21hcnQtZGV2LXRvb2wuc2VydmljZSc7XHJcbmltcG9ydCB7IFNtYXJ0RGV2VG9vbERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuL3NtYXJ0LWRldi10b29sLWRpYWxvZy5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXNtYXJ0LWRldi10b29sLWRpYWxvZycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NtYXJ0LWRldi10b29sLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc21hcnQtZGV2LXRvb2wtZGlhbG9nLmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0RGV2VG9vbERpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBfZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBkZXNjcmlwdG9yPzogU21hcnREZXZUb29sRGVzY3JpcHRvcjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXJ2aWNlOiBTbWFydERldlRvb2xEaWFsb2dTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmRlc2NyaXB0b3IgPSB0aGlzLnNlcnZpY2UuZ2V0RGF0YSgpO1xyXG4gICAgdGhpcy5zZXJ2aWNlLnVwZGF0ZS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZGVzY3JpcHRvciA9IHRoaXMuc2VydmljZS5nZXREYXRhKCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2VydmljZS5zZXJ2aWNlLmNsZWFyRXJyb3JzKCk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlcnZpY2UuY2xlYXIoKTtcclxuICB9XHJcblxyXG4gIGdldEJvZHkoaW5wOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLnN5bnRheEhpZ2hsaWdodChpbnApO1xyXG4gIH1cclxuXHJcbiAgc3ludGF4SGlnaGxpZ2h0KGpzb246IGFueSkge1xyXG4gICAgaWYgKHR5cGVvZiBqc29uICE9ICdzdHJpbmcnKSB7XHJcbiAgICAgIGpzb24gPSBKU09OLnN0cmluZ2lmeShqc29uLCB1bmRlZmluZWQsIDIpO1xyXG4gICAgfVxyXG4gICAganNvbiA9IGpzb24ucmVwbGFjZSgvJi9nLCAnJmFtcDsnKS5yZXBsYWNlKC88L2csICcmbHQ7JykucmVwbGFjZSgvPi9nLCAnJmd0OycpO1xyXG4gICAgcmV0dXJuIGpzb24ucmVwbGFjZShcclxuICAgICAgLyhcIihcXFxcdVthLXpBLVowLTldezR9fFxcXFxbXnVdfFteXFxcXFwiXSkqXCIoXFxzKjopP3xcXGIodHJ1ZXxmYWxzZXxudWxsKVxcYnwtP1xcZCsoPzpcXC5cXGQqKT8oPzpbZUVdWytcXC1dP1xcZCspPykvZyxcclxuICAgICAgZnVuY3Rpb24gKG1hdGNoOiBhbnkpIHtcclxuICAgICAgICB2YXIgY2xzID0gJ251bWJlcic7XHJcbiAgICAgICAgaWYgKC9eXCIvLnRlc3QobWF0Y2gpKSB7XHJcbiAgICAgICAgICBpZiAoLzokLy50ZXN0KG1hdGNoKSkge1xyXG4gICAgICAgICAgICBjbHMgPSAna2V5JztcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNscyA9ICdzdHJpbmcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoL3RydWV8ZmFsc2UvLnRlc3QobWF0Y2gpKSB7XHJcbiAgICAgICAgICBjbHMgPSAnYm9vbGVhbic7XHJcbiAgICAgICAgfSBlbHNlIGlmICgvbnVsbC8udGVzdChtYXRjaCkpIHtcclxuICAgICAgICAgIGNscyA9ICdudWxsJztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuICc8c3BhbiBjbGFzcz1cIicgKyBjbHMgKyAnXCI+JyArIG1hdGNoICsgJzwvc3Bhbj4nO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY29weSgpOiB2b2lkIHtcclxuICAgIGNvcHlUb0NsaXBib2FyZCh7XHJcbiAgICAgIHZhbHVlOiB0aGlzLnNlcnZpY2UuZ2V0UHVyZVN0cmluZygpLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VydmljZS5jbG9zZURpYWxvZygpO1xyXG4gIH1cclxufVxyXG5cclxuaW50ZXJmYWNlIElDb3B5VG9DbGlwYm9hcmQge1xyXG4gIC8qKiBIVE1MIHJlZmVyZW5jZSBpZGVudGlmaWVyIGBgYDxkaXYgaWQ9XCJmb29cIj48L2Rpdj5gYGAgICovXHJcbiAgdGFyZ2V0Pzogc3RyaW5nO1xyXG4gIC8qKiBTdHJpbmcgdmFsdWUgKi9cclxuICB2YWx1ZT86IHN0cmluZztcclxuICAvKiogKE9wdGlvbmFsKSBtZXNzYWdlIHRvIGRpc3BsYXkgaW4gc25hY2tiYXIgb24gc3VjY2VzcyAqL1xyXG4gIG1lc3NhZ2U/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBjb3B5VG9DbGlwYm9hcmQgPSBhc3luYyAoeyB0YXJnZXQsIG1lc3NhZ2UsIHZhbHVlIH06IElDb3B5VG9DbGlwYm9hcmQpID0+IHtcclxuICB0cnkge1xyXG4gICAgbGV0IGNvcHlWYWx1ZSA9ICcnO1xyXG5cclxuICAgIGlmICghbmF2aWdhdG9yLmNsaXBib2FyZCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJCcm93c2VyIGRvbid0IGhhdmUgc3VwcG9ydCBmb3IgbmF0aXZlIGNsaXBib2FyZC5cIik7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRhcmdldCkge1xyXG4gICAgICBjb25zdCBub2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpO1xyXG5cclxuICAgICAgaWYgKCFub2RlIHx8ICFub2RlLnRleHRDb250ZW50KSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbGVtZW50IG5vdCBmb3VuZCcpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB2YWx1ZSA9IG5vZGUudGV4dENvbnRlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIGNvcHlWYWx1ZSA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGNvcHlWYWx1ZSk7XHJcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xyXG4gICAgY29uc29sZS5lcnJvcihlcnJvci50b1N0cmluZygpKTtcclxuICB9XHJcbn07XHJcbiIsIjxkaXYgY2xhc3M9XCJzbWFydERldlRvb2xEaWFsb2dDb250YWluZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cclxuICAgICAgICA8aDI+RGV2ZWxvcGVyIHRvb2w8L2gyPlxyXG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHRpdGxlPVwiY2xvc2VcIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxyXG4gICAgICAgICAgICA8c21hcnQtaWNvbiBpY29uPVwiY2xvc2VcIj48L3NtYXJ0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyZXF1ZXN0c0NvbnRhaW5lclwiPlxyXG4gICAgICAgIDxtYXQtYWNjb3JkaW9uIG11bHRpPlxyXG4gICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbFxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJyZXF1ZXN0Q2FyZFwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJhcGlDYWxsLnJlc3BvbnNlU3RhdHVzID09PSAyMDAgPyAnJyA6ICdoYXNFcnJvcidcIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFwaUNhbGwgb2YgZGVzY3JpcHRvcj8uYXBpQ2FsbHM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1wYW5lbC10aXRsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlUGFuZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFwaUNhbGwucmVzcG9uc2VEYXRlIHwgc21hcnREZXZUb29sRGF0ZVBpcGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsVGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFwaUNhbGwudXJsIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImFwaUNhbGwucmVxdWVzdE1ldGhvZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFwaUNhbGwucmVxdWVzdE1ldGhvZCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cIidzdGF0dXNDb2RlLScgKyBhcGlDYWxsLnJlc3BvbnNlU3RhdHVzLnRvU3RyaW5nKClbMF1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhcGlDYWxsLnJlc3BvbnNlU3RhdHVzIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtcGFuZWwtdGl0bGU+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluQ29sIGhlYWRpbmdcIj5SZXF1ZXN0PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbkNvbCBoZWFkaW5nXCI+UmVzcG9uc2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluQ29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmdcIj5EYXRlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYXBpQ2FsbC5yZXF1ZXN0RGF0ZSB8IHNtYXJ0RGV2VG9vbERhdGVQaXBlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluQ29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmdcIj5EYXRlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYXBpQ2FsbC5yZXNwb25zZURhdGUgfCBzbWFydERldlRvb2xEYXRlUGlwZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbkNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nXCI+SGVhZGVyczwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbkNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nXCI+SGVhZGVyczwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbkNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhcGlDYWxsLnJlcXVlc3RIZWFkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImdldEJvZHkoYXBpQ2FsbC5yZXF1ZXN0SGVhZGVyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcHJlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhYXBpQ2FsbC5yZXF1ZXN0SGVhZGVyXCIgY2xhc3M9XCJkYXRhXCI+bnVsbDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbkNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhcGlDYWxsLnJlc3BvbnNlSGVhZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJnZXRCb2R5KGFwaUNhbGwucmVzcG9uc2VIZWFkZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wcmU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFhcGlDYWxsLnJlc3BvbnNlSGVhZGVyXCIgY2xhc3M9XCJkYXRhXCI+bnVsbDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbkNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGFcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW5Db2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZ1wiPlN0YXR1czwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFwaUNhbGwucmVzcG9uc2VTdGF0dXMgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW5Db2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZ1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRhXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluQ29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmdcIj5TdGF0dXMgdGV4dDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFwaUNhbGwucmVzcG9uc2VTdGF0dXNUZXh0IH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluQ29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmdcIj5Cb2R5PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluQ29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmdcIj5Cb2R5PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluQ29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFwaUNhbGwucmVxdWVzdEJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImdldEJvZHkoYXBpQ2FsbC5yZXF1ZXN0Qm9keSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3ByZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWFwaUNhbGwucmVxdWVzdEJvZHlcIiBjbGFzcz1cImRhdGFcIj5udWxsPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluQ29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFwaUNhbGwucmVzcG9uc2VCb2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJnZXRCb2R5KGFwaUNhbGwucmVzcG9uc2VCb2R5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcHJlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhYXBpQ2FsbC5yZXNwb25zZUJvZHlcIiBjbGFzcz1cImRhdGFcIj5udWxsPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluQ29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmdcIj5TZXNzaW9uIFN0b3JhZ2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW5Db2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZ1wiPkxvY2FsIFN0b3JhZ2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW5Db2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZ1wiPkNvb2tpZXM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW5Db2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYXBpQ2FsbC5zZXNzaW9uU3RvcmFnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiZ2V0Qm9keShhcGlDYWxsLnNlc3Npb25TdG9yYWdlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcHJlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhYXBpQ2FsbC5zZXNzaW9uU3RvcmFnZVwiIGNsYXNzPVwiZGF0YVwiPm51bGw8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW5Db2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYXBpQ2FsbC5sb2NhbFN0b3JhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImdldEJvZHkoYXBpQ2FsbC5sb2NhbFN0b3JhZ2UpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wcmU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFhcGlDYWxsLmxvY2FsU3RvcmFnZVwiIGNsYXNzPVwiZGF0YVwiPm51bGw8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW5Db2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYXBpQ2FsbC5jb29raWVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJnZXRCb2R5KGFwaUNhbGwuY29va2llcylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3ByZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWFwaUNhbGwuY29va2llc1wiIGNsYXNzPVwiZGF0YVwiPm51bGw8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcbiAgICAgICAgPC9tYXQtYWNjb3JkaW9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uc0NvbnRhaW5lclwiPlxyXG4gICAgICAgIDxidXR0b24gY29sb3I9XCJwcmltYXJ5XCIgbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cImNvcHkoKVwiPkNvcHk8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNvbG9yPVwid2FyblwiIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJjbGVhcigpXCI+Q2xlYXI8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
1
+ import { Component } from '@angular/core';
2
+ import { Subject, takeUntil } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./smart-dev-tool-dialog.service";
5
+ import * as i2 from "@angular/material/button";
6
+ import * as i3 from "@smartbit4all/icon";
7
+ import * as i4 from "@angular/material/expansion";
8
+ import * as i5 from "@angular/common";
9
+ import * as i6 from "../smart-dev-tool.service";
10
+ export class SmartDevToolDialogComponent {
11
+ constructor(service) {
12
+ this.service = service;
13
+ this._destroy$ = new Subject();
14
+ this.descriptor = this.service.getData();
15
+ this.service.update.pipe(takeUntil(this._destroy$)).subscribe(() => {
16
+ this.descriptor = this.service.getData();
17
+ });
18
+ this.service.service.clearErrors();
19
+ }
20
+ ngOnDestroy() {
21
+ this._destroy$.next();
22
+ }
23
+ clear() {
24
+ this.service.clear();
25
+ }
26
+ getBody(inp) {
27
+ return this.syntaxHighlight(inp);
28
+ }
29
+ syntaxHighlight(json) {
30
+ if (typeof json != 'string') {
31
+ json = JSON.stringify(json, undefined, 2);
32
+ }
33
+ json = json.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
34
+ return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function (match) {
35
+ var cls = 'number';
36
+ if (/^"/.test(match)) {
37
+ if (/:$/.test(match)) {
38
+ cls = 'key';
39
+ }
40
+ else {
41
+ cls = 'string';
42
+ }
43
+ }
44
+ else if (/true|false/.test(match)) {
45
+ cls = 'boolean';
46
+ }
47
+ else if (/null/.test(match)) {
48
+ cls = 'null';
49
+ }
50
+ return '<span class="' + cls + '">' + match + '</span>';
51
+ });
52
+ }
53
+ copy() {
54
+ copyToClipboard({
55
+ value: this.service.getPureString(),
56
+ });
57
+ }
58
+ close() {
59
+ this.service.closeDialog();
60
+ }
61
+ }
62
+ SmartDevToolDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartDevToolDialogComponent, deps: [{ token: i1.SmartDevToolDialogService }], target: i0.ɵɵFactoryTarget.Component });
63
+ SmartDevToolDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: SmartDevToolDialogComponent, selector: "app-smart-dev-tool-dialog", ngImport: i0, template: "<div class=\"smartDevToolDialogContainer\">\n <div class=\"header\">\n <h2>Developer tool</h2>\n <button mat-icon-button title=\"close\" (click)=\"close()\">\n <smart-icon icon=\"close\"></smart-icon>\n </button>\n </div>\n <div class=\"requestsContainer\">\n <mat-accordion multi>\n <mat-expansion-panel\n class=\"requestCard\"\n [ngClass]=\"apiCall.responseStatus === 200 ? '' : 'hasError'\"\n *ngFor=\"let apiCall of descriptor?.apiCalls; let i = index\"\n >\n <mat-expansion-panel-header>\n <mat-panel-title>\n <div class=\"titlePanel\">\n <span class=\"date\">\n {{ apiCall.responseDate | smartDevToolDatePipe }}\n </span>\n <span class=\"urlText\">\n {{ apiCall.url }}\n </span>\n <div [ngClass]=\"apiCall.requestMethod\">\n {{ apiCall.requestMethod }}\n </div>\n <div [ngClass]=\"'statusCode-' + apiCall.responseStatus.toString()[0]\">\n {{ apiCall.responseStatus }}\n </div>\n </div>\n </mat-panel-title>\n </mat-expansion-panel-header>\n\n <div>\n <div class=\"table\">\n <div class=\"row\">\n <div class=\"mainCol heading\">Request</div>\n <div class=\"mainCol heading\">Response</div>\n </div>\n <div class=\"row\">\n <div class=\"mainCol\">\n <div class=\"heading\">Date</div>\n <div class=\"data\">\n {{ apiCall.requestDate | smartDevToolDatePipe }}\n </div>\n </div>\n <div class=\"mainCol\">\n <div class=\"heading\">Date</div>\n <div class=\"data\">\n {{ apiCall.responseDate | smartDevToolDatePipe }}\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"mainCol\">\n <div class=\"heading\">Headers</div>\n </div>\n <div class=\"mainCol\">\n <div class=\"heading\">Headers</div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"mainCol\">\n <pre\n *ngIf=\"apiCall.requestHeader\"\n class=\"data\"\n [innerHTML]=\"getBody(apiCall.requestHeader)\"\n ></pre>\n <div *ngIf=\"!apiCall.requestHeader\" class=\"data\">null</div>\n </div>\n <div class=\"mainCol\">\n <pre\n *ngIf=\"apiCall.responseHeader\"\n class=\"data\"\n [innerHTML]=\"getBody(apiCall.responseHeader)\"\n ></pre>\n <div *ngIf=\"!apiCall.responseHeader\" class=\"data\">null</div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"mainCol\">\n <div class=\"heading\"></div>\n <div class=\"data\"></div>\n </div>\n <div class=\"mainCol\">\n <div class=\"heading\">Status</div>\n <div class=\"data\">\n {{ apiCall.responseStatus }}\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"mainCol\">\n <div class=\"heading\"></div>\n <div class=\"data\"></div>\n </div>\n <div class=\"mainCol\">\n <div class=\"heading\">Status text</div>\n <div class=\"data\">\n {{ apiCall.responseStatusText }}\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"mainCol\">\n <div class=\"heading\">Body</div>\n </div>\n <div class=\"mainCol\">\n <div class=\"heading\">Body</div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"mainCol\">\n <pre\n *ngIf=\"apiCall.requestBody\"\n class=\"data\"\n [innerHTML]=\"getBody(apiCall.requestBody)\"\n ></pre>\n <div *ngIf=\"!apiCall.requestBody\" class=\"data\">null</div>\n </div>\n <div class=\"mainCol\">\n <pre\n *ngIf=\"apiCall.responseBody\"\n class=\"data\"\n [innerHTML]=\"getBody(apiCall.responseBody)\"\n ></pre>\n <div *ngIf=\"!apiCall.responseBody\" class=\"data\">null</div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"mainCol\">\n <div class=\"heading\">Session Storage</div>\n </div>\n <div class=\"mainCol\">\n <div class=\"heading\">Local Storage</div>\n </div>\n <div class=\"mainCol\">\n <div class=\"heading\">Cookies</div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"mainCol\">\n <pre\n *ngIf=\"apiCall.sessionStorage\"\n class=\"data\"\n [innerHTML]=\"getBody(apiCall.sessionStorage)\"\n ></pre>\n <div *ngIf=\"!apiCall.sessionStorage\" class=\"data\">null</div>\n </div>\n <div class=\"mainCol\">\n <pre\n *ngIf=\"apiCall.localStorage\"\n class=\"data\"\n [innerHTML]=\"getBody(apiCall.localStorage)\"\n ></pre>\n <div *ngIf=\"!apiCall.localStorage\" class=\"data\">null</div>\n </div>\n <div class=\"mainCol\">\n <pre\n *ngIf=\"apiCall.cookies\"\n class=\"data\"\n [innerHTML]=\"getBody(apiCall.cookies)\"\n ></pre>\n <div *ngIf=\"!apiCall.cookies\" class=\"data\">null</div>\n </div>\n </div>\n </div>\n </div>\n </mat-expansion-panel>\n </mat-accordion>\n </div>\n <div class=\"buttonsContainer\">\n <button color=\"primary\" mat-raised-button (click)=\"copy()\">Copy</button>\n <button color=\"warn\" mat-raised-button (click)=\"clear()\">Clear</button>\n </div>\n</div>\n", styles: [".smartDevToolDialogContainer{display:flex;flex-direction:column;gap:1rem;width:78vw;height:90vh}.header{display:flex;flex-direction:row;justify-content:space-between}.requestsContainer{display:flex;flex-direction:column;gap:1rem;flex:1;overflow:auto}.requestCard{background-color:var(--primary-lighter-color);padding:.5rem;border-radius:.5rem;display:flex;flex-direction:column}.table{display:flex;flex-direction:column;gap:.25rem}.row{display:flex;flex-direction:row;gap:1rem}.mainCol{flex:1;display:flex;flex-direction:row;gap:.5rem;overflow:auto}.heading{font-weight:700}.data{word-wrap:break-word}.buttonsContainer{display:flex;flex-direction:row;justify-content:space-between}pre{outline:1px solid #000;padding:5px;margin:5px}.string{color:green}.number{color:#ff8c00}.boolean{color:#00f}.null{color:#f0f}.key{color:red}@media only screen and (max-width: 1000px){.row{flex-direction:column;gap:.5rem}.mainCol{flex-direction:column;overflow-x:auto;overflow-y:visible;flex:auto}.requestCard h4{font-size:small;overflow:auto}.smartDevToolDialogContainer{width:calc(80vw - 3rem)}}.hasError{background-color:var(--warn-lighter-color)}.titlePanel{flex:1;display:flex;flex-direction:row;gap:1rem}.urlText{flex:1;text-decoration:underline}.PATCH{color:#d38042}.DELETE{color:#a41e22}.GET{color:#0f6ab4}.POST{color:#10a54a}.PUT{color:#c5862b}.HEAD{color:#ffd20f}.statusCode-2{color:#5fb442}.statusCode-3{color:#5970f6}.statusCode-4{color:#ec6762}.statusCode-5{color:#f2a63b}\n"], components: [{ type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color"] }, { type: i4.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { type: i4.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }], directives: [{ type: i4.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.MatExpansionPanelTitle, selector: "mat-panel-title" }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "smartDevToolDatePipe": i6.SmartDevToolDatePipe } });
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartDevToolDialogComponent, decorators: [{
65
+ type: Component,
66
+ args: [{ selector: 'app-smart-dev-tool-dialog', template: "<div class=\"smartDevToolDialogContainer\">\n <div class=\"header\">\n <h2>Developer tool</h2>\n <button mat-icon-button title=\"close\" (click)=\"close()\">\n <smart-icon icon=\"close\"></smart-icon>\n </button>\n </div>\n <div class=\"requestsContainer\">\n <mat-accordion multi>\n <mat-expansion-panel\n class=\"requestCard\"\n [ngClass]=\"apiCall.responseStatus === 200 ? '' : 'hasError'\"\n *ngFor=\"let apiCall of descriptor?.apiCalls; let i = index\"\n >\n <mat-expansion-panel-header>\n <mat-panel-title>\n <div class=\"titlePanel\">\n <span class=\"date\">\n {{ apiCall.responseDate | smartDevToolDatePipe }}\n </span>\n <span class=\"urlText\">\n {{ apiCall.url }}\n </span>\n <div [ngClass]=\"apiCall.requestMethod\">\n {{ apiCall.requestMethod }}\n </div>\n <div [ngClass]=\"'statusCode-' + apiCall.responseStatus.toString()[0]\">\n {{ apiCall.responseStatus }}\n </div>\n </div>\n </mat-panel-title>\n </mat-expansion-panel-header>\n\n <div>\n <div class=\"table\">\n <div class=\"row\">\n <div class=\"mainCol heading\">Request</div>\n <div class=\"mainCol heading\">Response</div>\n </div>\n <div class=\"row\">\n <div class=\"mainCol\">\n <div class=\"heading\">Date</div>\n <div class=\"data\">\n {{ apiCall.requestDate | smartDevToolDatePipe }}\n </div>\n </div>\n <div class=\"mainCol\">\n <div class=\"heading\">Date</div>\n <div class=\"data\">\n {{ apiCall.responseDate | smartDevToolDatePipe }}\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"mainCol\">\n <div class=\"heading\">Headers</div>\n </div>\n <div class=\"mainCol\">\n <div class=\"heading\">Headers</div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"mainCol\">\n <pre\n *ngIf=\"apiCall.requestHeader\"\n class=\"data\"\n [innerHTML]=\"getBody(apiCall.requestHeader)\"\n ></pre>\n <div *ngIf=\"!apiCall.requestHeader\" class=\"data\">null</div>\n </div>\n <div class=\"mainCol\">\n <pre\n *ngIf=\"apiCall.responseHeader\"\n class=\"data\"\n [innerHTML]=\"getBody(apiCall.responseHeader)\"\n ></pre>\n <div *ngIf=\"!apiCall.responseHeader\" class=\"data\">null</div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"mainCol\">\n <div class=\"heading\"></div>\n <div class=\"data\"></div>\n </div>\n <div class=\"mainCol\">\n <div class=\"heading\">Status</div>\n <div class=\"data\">\n {{ apiCall.responseStatus }}\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"mainCol\">\n <div class=\"heading\"></div>\n <div class=\"data\"></div>\n </div>\n <div class=\"mainCol\">\n <div class=\"heading\">Status text</div>\n <div class=\"data\">\n {{ apiCall.responseStatusText }}\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"mainCol\">\n <div class=\"heading\">Body</div>\n </div>\n <div class=\"mainCol\">\n <div class=\"heading\">Body</div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"mainCol\">\n <pre\n *ngIf=\"apiCall.requestBody\"\n class=\"data\"\n [innerHTML]=\"getBody(apiCall.requestBody)\"\n ></pre>\n <div *ngIf=\"!apiCall.requestBody\" class=\"data\">null</div>\n </div>\n <div class=\"mainCol\">\n <pre\n *ngIf=\"apiCall.responseBody\"\n class=\"data\"\n [innerHTML]=\"getBody(apiCall.responseBody)\"\n ></pre>\n <div *ngIf=\"!apiCall.responseBody\" class=\"data\">null</div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"mainCol\">\n <div class=\"heading\">Session Storage</div>\n </div>\n <div class=\"mainCol\">\n <div class=\"heading\">Local Storage</div>\n </div>\n <div class=\"mainCol\">\n <div class=\"heading\">Cookies</div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"mainCol\">\n <pre\n *ngIf=\"apiCall.sessionStorage\"\n class=\"data\"\n [innerHTML]=\"getBody(apiCall.sessionStorage)\"\n ></pre>\n <div *ngIf=\"!apiCall.sessionStorage\" class=\"data\">null</div>\n </div>\n <div class=\"mainCol\">\n <pre\n *ngIf=\"apiCall.localStorage\"\n class=\"data\"\n [innerHTML]=\"getBody(apiCall.localStorage)\"\n ></pre>\n <div *ngIf=\"!apiCall.localStorage\" class=\"data\">null</div>\n </div>\n <div class=\"mainCol\">\n <pre\n *ngIf=\"apiCall.cookies\"\n class=\"data\"\n [innerHTML]=\"getBody(apiCall.cookies)\"\n ></pre>\n <div *ngIf=\"!apiCall.cookies\" class=\"data\">null</div>\n </div>\n </div>\n </div>\n </div>\n </mat-expansion-panel>\n </mat-accordion>\n </div>\n <div class=\"buttonsContainer\">\n <button color=\"primary\" mat-raised-button (click)=\"copy()\">Copy</button>\n <button color=\"warn\" mat-raised-button (click)=\"clear()\">Clear</button>\n </div>\n</div>\n", styles: [".smartDevToolDialogContainer{display:flex;flex-direction:column;gap:1rem;width:78vw;height:90vh}.header{display:flex;flex-direction:row;justify-content:space-between}.requestsContainer{display:flex;flex-direction:column;gap:1rem;flex:1;overflow:auto}.requestCard{background-color:var(--primary-lighter-color);padding:.5rem;border-radius:.5rem;display:flex;flex-direction:column}.table{display:flex;flex-direction:column;gap:.25rem}.row{display:flex;flex-direction:row;gap:1rem}.mainCol{flex:1;display:flex;flex-direction:row;gap:.5rem;overflow:auto}.heading{font-weight:700}.data{word-wrap:break-word}.buttonsContainer{display:flex;flex-direction:row;justify-content:space-between}pre{outline:1px solid #000;padding:5px;margin:5px}.string{color:green}.number{color:#ff8c00}.boolean{color:#00f}.null{color:#f0f}.key{color:red}@media only screen and (max-width: 1000px){.row{flex-direction:column;gap:.5rem}.mainCol{flex-direction:column;overflow-x:auto;overflow-y:visible;flex:auto}.requestCard h4{font-size:small;overflow:auto}.smartDevToolDialogContainer{width:calc(80vw - 3rem)}}.hasError{background-color:var(--warn-lighter-color)}.titlePanel{flex:1;display:flex;flex-direction:row;gap:1rem}.urlText{flex:1;text-decoration:underline}.PATCH{color:#d38042}.DELETE{color:#a41e22}.GET{color:#0f6ab4}.POST{color:#10a54a}.PUT{color:#c5862b}.HEAD{color:#ffd20f}.statusCode-2{color:#5fb442}.statusCode-3{color:#5970f6}.statusCode-4{color:#ec6762}.statusCode-5{color:#f2a63b}\n"] }]
67
+ }], ctorParameters: function () { return [{ type: i1.SmartDevToolDialogService }]; } });
68
+ export const copyToClipboard = async ({ target, message, value }) => {
69
+ try {
70
+ let copyValue = '';
71
+ if (!navigator.clipboard) {
72
+ throw new Error("Browser don't have support for native clipboard.");
73
+ }
74
+ if (target) {
75
+ const node = document.querySelector(target);
76
+ if (!node || !node.textContent) {
77
+ throw new Error('Element not found');
78
+ }
79
+ value = node.textContent;
80
+ }
81
+ if (value) {
82
+ copyValue = value;
83
+ }
84
+ await navigator.clipboard.writeText(copyValue);
85
+ }
86
+ catch (error) {
87
+ console.error(error.toString());
88
+ }
89
+ };
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZGV2LXRvb2wtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3Nlc3Npb24vZGV2LXRvb2wvc21hcnQtZGV2LXRvb2wtZGlhbG9nL3NtYXJ0LWRldi10b29sLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zZXNzaW9uL2Rldi10b29sL3NtYXJ0LWRldi10b29sLWRpYWxvZy9zbWFydC1kZXYtdG9vbC1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7QUFTMUMsTUFBTSxPQUFPLDJCQUEyQjtJQUt0QyxZQUFvQixPQUFrQztRQUFsQyxZQUFPLEdBQVAsT0FBTyxDQUEyQjtRQUo5QyxjQUFTLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFLL0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNqRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBUTtRQUNkLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsZUFBZSxDQUFDLElBQVM7UUFDdkIsSUFBSSxPQUFPLElBQUksSUFBSSxRQUFRLEVBQUU7WUFDM0IsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUMzQztRQUNELElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDL0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUNqQix3R0FBd0csRUFDeEcsVUFBVSxLQUFVO1lBQ2xCLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQztZQUNuQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3BCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDcEIsR0FBRyxHQUFHLEtBQUssQ0FBQztpQkFDYjtxQkFBTTtvQkFDTCxHQUFHLEdBQUcsUUFBUSxDQUFDO2lCQUNoQjthQUNGO2lCQUFNLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDbkMsR0FBRyxHQUFHLFNBQVMsQ0FBQzthQUNqQjtpQkFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQzdCLEdBQUcsR0FBRyxNQUFNLENBQUM7YUFDZDtZQUNELE9BQU8sZUFBZSxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsS0FBSyxHQUFHLFNBQVMsQ0FBQztRQUMxRCxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJO1FBQ0YsZUFBZSxDQUFDO1lBQ2QsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO1NBQ3BDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM3QixDQUFDOzt5SEF6RFUsMkJBQTJCOzZHQUEzQiwyQkFBMkIsaUVDVnhDLDR4UkFnTEE7NEZEdEthLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSwyQkFBMkI7O0FBeUV2QyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQW9CLEVBQUUsRUFBRTtJQUNwRixJQUFJO1FBQ0YsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBRW5CLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFO1lBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztTQUNyRTtRQUVELElBQUksTUFBTSxFQUFFO1lBQ1YsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUU1QyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2FBQ3RDO1lBRUQsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7U0FDMUI7UUFFRCxJQUFJLEtBQUssRUFBRTtZQUNULFNBQVMsR0FBRyxLQUFLLENBQUM7U0FDbkI7UUFFRCxNQUFNLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBQ2hEO0lBQUMsT0FBTyxLQUFVLEVBQUU7UUFDbkIsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztLQUNqQztBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNtYXJ0RGV2VG9vbERlc2NyaXB0b3IgfSBmcm9tICcuLi9zbWFydC1kZXYtdG9vbC5zZXJ2aWNlJztcbmltcG9ydCB7IFNtYXJ0RGV2VG9vbERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuL3NtYXJ0LWRldi10b29sLWRpYWxvZy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXNtYXJ0LWRldi10b29sLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zbWFydC1kZXYtdG9vbC1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zbWFydC1kZXYtdG9vbC1kaWFsb2cuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBTbWFydERldlRvb2xEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9kZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgZGVzY3JpcHRvcj86IFNtYXJ0RGV2VG9vbERlc2NyaXB0b3I7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXJ2aWNlOiBTbWFydERldlRvb2xEaWFsb2dTZXJ2aWNlKSB7XG4gICAgdGhpcy5kZXNjcmlwdG9yID0gdGhpcy5zZXJ2aWNlLmdldERhdGEoKTtcbiAgICB0aGlzLnNlcnZpY2UudXBkYXRlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZGVzY3JpcHRvciA9IHRoaXMuc2VydmljZS5nZXREYXRhKCk7XG4gICAgfSk7XG4gICAgdGhpcy5zZXJ2aWNlLnNlcnZpY2UuY2xlYXJFcnJvcnMoKTtcbiAgfVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLnNlcnZpY2UuY2xlYXIoKTtcbiAgfVxuXG4gIGdldEJvZHkoaW5wOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5zeW50YXhIaWdobGlnaHQoaW5wKTtcbiAgfVxuXG4gIHN5bnRheEhpZ2hsaWdodChqc29uOiBhbnkpIHtcbiAgICBpZiAodHlwZW9mIGpzb24gIT0gJ3N0cmluZycpIHtcbiAgICAgIGpzb24gPSBKU09OLnN0cmluZ2lmeShqc29uLCB1bmRlZmluZWQsIDIpO1xuICAgIH1cbiAgICBqc29uID0ganNvbi5yZXBsYWNlKC8mL2csICcmYW1wOycpLnJlcGxhY2UoLzwvZywgJyZsdDsnKS5yZXBsYWNlKC8+L2csICcmZ3Q7Jyk7XG4gICAgcmV0dXJuIGpzb24ucmVwbGFjZShcbiAgICAgIC8oXCIoXFxcXHVbYS16QS1aMC05XXs0fXxcXFxcW151XXxbXlxcXFxcIl0pKlwiKFxccyo6KT98XFxiKHRydWV8ZmFsc2V8bnVsbClcXGJ8LT9cXGQrKD86XFwuXFxkKik/KD86W2VFXVsrXFwtXT9cXGQrKT8pL2csXG4gICAgICBmdW5jdGlvbiAobWF0Y2g6IGFueSkge1xuICAgICAgICB2YXIgY2xzID0gJ251bWJlcic7XG4gICAgICAgIGlmICgvXlwiLy50ZXN0KG1hdGNoKSkge1xuICAgICAgICAgIGlmICgvOiQvLnRlc3QobWF0Y2gpKSB7XG4gICAgICAgICAgICBjbHMgPSAna2V5JztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2xzID0gJ3N0cmluZyc7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKC90cnVlfGZhbHNlLy50ZXN0KG1hdGNoKSkge1xuICAgICAgICAgIGNscyA9ICdib29sZWFuJztcbiAgICAgICAgfSBlbHNlIGlmICgvbnVsbC8udGVzdChtYXRjaCkpIHtcbiAgICAgICAgICBjbHMgPSAnbnVsbCc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICc8c3BhbiBjbGFzcz1cIicgKyBjbHMgKyAnXCI+JyArIG1hdGNoICsgJzwvc3Bhbj4nO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBjb3B5KCk6IHZvaWQge1xuICAgIGNvcHlUb0NsaXBib2FyZCh7XG4gICAgICB2YWx1ZTogdGhpcy5zZXJ2aWNlLmdldFB1cmVTdHJpbmcoKSxcbiAgICB9KTtcbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuc2VydmljZS5jbG9zZURpYWxvZygpO1xuICB9XG59XG5cbmludGVyZmFjZSBJQ29weVRvQ2xpcGJvYXJkIHtcbiAgLyoqIEhUTUwgcmVmZXJlbmNlIGlkZW50aWZpZXIgYGBgPGRpdiBpZD1cImZvb1wiPjwvZGl2PmBgYCAgKi9cbiAgdGFyZ2V0Pzogc3RyaW5nO1xuICAvKiogU3RyaW5nIHZhbHVlICovXG4gIHZhbHVlPzogc3RyaW5nO1xuICAvKiogKE9wdGlvbmFsKSBtZXNzYWdlIHRvIGRpc3BsYXkgaW4gc25hY2tiYXIgb24gc3VjY2VzcyAqL1xuICBtZXNzYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgY29weVRvQ2xpcGJvYXJkID0gYXN5bmMgKHsgdGFyZ2V0LCBtZXNzYWdlLCB2YWx1ZSB9OiBJQ29weVRvQ2xpcGJvYXJkKSA9PiB7XG4gIHRyeSB7XG4gICAgbGV0IGNvcHlWYWx1ZSA9ICcnO1xuXG4gICAgaWYgKCFuYXZpZ2F0b3IuY2xpcGJvYXJkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJCcm93c2VyIGRvbid0IGhhdmUgc3VwcG9ydCBmb3IgbmF0aXZlIGNsaXBib2FyZC5cIik7XG4gICAgfVxuXG4gICAgaWYgKHRhcmdldCkge1xuICAgICAgY29uc3Qgbm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGFyZ2V0KTtcblxuICAgICAgaWYgKCFub2RlIHx8ICFub2RlLnRleHRDb250ZW50KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRWxlbWVudCBub3QgZm91bmQnKTtcbiAgICAgIH1cblxuICAgICAgdmFsdWUgPSBub2RlLnRleHRDb250ZW50O1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgY29weVZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoY29weVZhbHVlKTtcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IudG9TdHJpbmcoKSk7XG4gIH1cbn07XG4iLCI8ZGl2IGNsYXNzPVwic21hcnREZXZUb29sRGlhbG9nQ29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgICA8aDI+RGV2ZWxvcGVyIHRvb2w8L2gyPlxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0aXRsZT1cImNsb3NlXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgICAgICAgIDxzbWFydC1pY29uIGljb249XCJjbG9zZVwiPjwvc21hcnQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJlcXVlc3RzQ29udGFpbmVyXCI+XG4gICAgICAgIDxtYXQtYWNjb3JkaW9uIG11bHRpPlxuICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWxcbiAgICAgICAgICAgICAgICBjbGFzcz1cInJlcXVlc3RDYXJkXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJhcGlDYWxsLnJlc3BvbnNlU3RhdHVzID09PSAyMDAgPyAnJyA6ICdoYXNFcnJvcidcIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhcGlDYWxsIG9mIGRlc2NyaXB0b3I/LmFwaUNhbGxzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVQYW5lbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhcGlDYWxsLnJlc3BvbnNlRGF0ZSB8IHNtYXJ0RGV2VG9vbERhdGVQaXBlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsVGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhcGlDYWxsLnVybCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImFwaUNhbGwucmVxdWVzdE1ldGhvZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhcGlDYWxsLnJlcXVlc3RNZXRob2QgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cIidzdGF0dXNDb2RlLScgKyBhcGlDYWxsLnJlc3BvbnNlU3RhdHVzLnRvU3RyaW5nKClbMF1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYXBpQ2FsbC5yZXNwb25zZVN0YXR1cyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbkNvbCBoZWFkaW5nXCI+UmVxdWVzdDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluQ29sIGhlYWRpbmdcIj5SZXNwb25zZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW5Db2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmdcIj5EYXRlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhcGlDYWxsLnJlcXVlc3REYXRlIHwgc21hcnREZXZUb29sRGF0ZVBpcGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW5Db2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmdcIj5EYXRlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhcGlDYWxsLnJlc3BvbnNlRGF0ZSB8IHNtYXJ0RGV2VG9vbERhdGVQaXBlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW5Db2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmdcIj5IZWFkZXJzPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW5Db2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmdcIj5IZWFkZXJzPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbkNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFwaUNhbGwucmVxdWVzdEhlYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJnZXRCb2R5KGFwaUNhbGwucmVxdWVzdEhlYWRlcilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wcmU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhYXBpQ2FsbC5yZXF1ZXN0SGVhZGVyXCIgY2xhc3M9XCJkYXRhXCI+bnVsbDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluQ29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYXBpQ2FsbC5yZXNwb25zZUhlYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJnZXRCb2R5KGFwaUNhbGwucmVzcG9uc2VIZWFkZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcHJlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWFwaUNhbGwucmVzcG9uc2VIZWFkZXJcIiBjbGFzcz1cImRhdGFcIj5udWxsPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbkNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZ1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0YVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluQ29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nXCI+U3RhdHVzPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhcGlDYWxsLnJlc3BvbnNlU3RhdHVzIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW5Db2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmdcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGFcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbkNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZ1wiPlN0YXR1cyB0ZXh0PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhcGlDYWxsLnJlc3BvbnNlU3RhdHVzVGV4dCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluQ29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nXCI+Qm9keTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluQ29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nXCI+Qm9keTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW5Db2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhcGlDYWxsLnJlcXVlc3RCb2R5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImdldEJvZHkoYXBpQ2FsbC5yZXF1ZXN0Qm9keSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wcmU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhYXBpQ2FsbC5yZXF1ZXN0Qm9keVwiIGNsYXNzPVwiZGF0YVwiPm51bGw8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbkNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFwaUNhbGwucmVzcG9uc2VCb2R5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImdldEJvZHkoYXBpQ2FsbC5yZXNwb25zZUJvZHkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcHJlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWFwaUNhbGwucmVzcG9uc2VCb2R5XCIgY2xhc3M9XCJkYXRhXCI+bnVsbDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW5Db2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmdcIj5TZXNzaW9uIFN0b3JhZ2U8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbkNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZ1wiPkxvY2FsIFN0b3JhZ2U8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbkNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZ1wiPkNvb2tpZXM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluQ29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYXBpQ2FsbC5zZXNzaW9uU3RvcmFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJnZXRCb2R5KGFwaUNhbGwuc2Vzc2lvblN0b3JhZ2UpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcHJlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWFwaUNhbGwuc2Vzc2lvblN0b3JhZ2VcIiBjbGFzcz1cImRhdGFcIj5udWxsPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW5Db2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhcGlDYWxsLmxvY2FsU3RvcmFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJnZXRCb2R5KGFwaUNhbGwubG9jYWxTdG9yYWdlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3ByZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFhcGlDYWxsLmxvY2FsU3RvcmFnZVwiIGNsYXNzPVwiZGF0YVwiPm51bGw8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbkNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFwaUNhbGwuY29va2llc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJnZXRCb2R5KGFwaUNhbGwuY29va2llcylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wcmU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhYXBpQ2FsbC5jb29raWVzXCIgY2xhc3M9XCJkYXRhXCI+bnVsbDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxuICAgICAgICA8L21hdC1hY2NvcmRpb24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImJ1dHRvbnNDb250YWluZXJcIj5cbiAgICAgICAgPGJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiY29weSgpXCI+Q29weTwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIGNvbG9yPVwid2FyblwiIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJjbGVhcigpXCI+Q2xlYXI8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,43 +1,43 @@
1
- import { Injectable } from '@angular/core';
2
- import { SmartdialogService } from '@smartbit4all/dialog';
3
- import { SmartDevToolDialogComponent } from './smart-dev-tool-dialog.component';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/material/dialog";
6
- import * as i2 from "@angular/router";
7
- import * as i3 from "../smart-dev-tool.service";
8
- export class SmartDevToolDialogService extends SmartdialogService {
9
- constructor(dialog, router, service) {
10
- super(dialog, router);
11
- this.service = service;
12
- this.update = this.service.descriptorChanged;
13
- }
14
- handleAfterClosed(result) { }
15
- openDialog() {
16
- const dialogData = {
17
- content: {
18
- title: ''
19
- },
20
- size: {},
21
- customComponent: SmartDevToolDialogComponent
22
- };
23
- this.createDialog(dialogData, SmartDevToolDialogComponent);
24
- }
25
- getData() {
26
- return this.service.descriptor;
27
- }
28
- getPureString() {
29
- return this.service.getPureString();
30
- }
31
- clear() {
32
- this.service.clear();
33
- }
34
- }
35
- SmartDevToolDialogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartDevToolDialogService, deps: [{ token: i1.MatDialog }, { token: i2.Router }, { token: i3.SmartDevToolService }], target: i0.ɵɵFactoryTarget.Injectable });
36
- SmartDevToolDialogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartDevToolDialogService, providedIn: 'root' });
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartDevToolDialogService, decorators: [{
38
- type: Injectable,
39
- args: [{
40
- providedIn: 'root'
41
- }]
42
- }], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.Router }, { type: i3.SmartDevToolService }]; } });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZGV2LXRvb2wtZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zZXNzaW9uL2Rldi10b29sL3NtYXJ0LWRldi10b29sLWRpYWxvZy9zbWFydC1kZXYtdG9vbC1kaWFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBbUIsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUczRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7QUFLaEYsTUFBTSxPQUFPLHlCQUEwQixTQUFRLGtCQUFrQjtJQUdoRSxZQUFZLE1BQWlCLEVBQUUsTUFBYyxFQUFTLE9BQTRCO1FBQ2pGLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFEK0IsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7UUFFakYsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDO0lBQzlDLENBQUM7SUFFUSxpQkFBaUIsQ0FBQyxNQUFXLElBQVMsQ0FBQztJQUV2QyxVQUFVO1FBQ2xCLE1BQU0sVUFBVSxHQUFvQjtZQUNuQyxPQUFPLEVBQUU7Z0JBQ1IsS0FBSyxFQUFFLEVBQUU7YUFDVDtZQUNELElBQUksRUFBRSxFQUFFO1lBQ1IsZUFBZSxFQUFFLDJCQUEyQjtTQUM1QyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsMkJBQTJCLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsT0FBTztRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFXLENBQUM7SUFDakMsQ0FBQztJQUVELGFBQWE7UUFDWixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELEtBQUs7UUFDSixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RCLENBQUM7O3VIQS9CVyx5QkFBeUI7MkhBQXpCLHlCQUF5QixjQUZ6QixNQUFNOzRGQUVOLHlCQUF5QjtrQkFIckMsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFNtYXJ0RGlhbG9nRGF0YSwgU21hcnRkaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQHNtYXJ0Yml0NGFsbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNtYXJ0RGV2VG9vbERlc2NyaXB0b3IsIFNtYXJ0RGV2VG9vbFNlcnZpY2UgfSBmcm9tICcuLi9zbWFydC1kZXYtdG9vbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU21hcnREZXZUb29sRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9zbWFydC1kZXYtdG9vbC1kaWFsb2cuY29tcG9uZW50JztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0RGV2VG9vbERpYWxvZ1NlcnZpY2UgZXh0ZW5kcyBTbWFydGRpYWxvZ1NlcnZpY2Uge1xyXG5cdHVwZGF0ZTogU3ViamVjdDx2b2lkPjtcclxuXHJcblx0Y29uc3RydWN0b3IoZGlhbG9nOiBNYXREaWFsb2csIHJvdXRlcjogUm91dGVyLCBwdWJsaWMgc2VydmljZTogU21hcnREZXZUb29sU2VydmljZSkge1xyXG5cdFx0c3VwZXIoZGlhbG9nLCByb3V0ZXIpO1xyXG5cdFx0dGhpcy51cGRhdGUgPSB0aGlzLnNlcnZpY2UuZGVzY3JpcHRvckNoYW5nZWQ7XHJcblx0fVxyXG5cclxuXHRvdmVycmlkZSBoYW5kbGVBZnRlckNsb3NlZChyZXN1bHQ6IGFueSk6IHZvaWQge31cclxuXHJcblx0b3ZlcnJpZGUgb3BlbkRpYWxvZygpOiB2b2lkIHtcclxuXHRcdGNvbnN0IGRpYWxvZ0RhdGE6IFNtYXJ0RGlhbG9nRGF0YSA9IHtcclxuXHRcdFx0Y29udGVudDoge1xyXG5cdFx0XHRcdHRpdGxlOiAnJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRzaXplOiB7fSxcclxuXHRcdFx0Y3VzdG9tQ29tcG9uZW50OiBTbWFydERldlRvb2xEaWFsb2dDb21wb25lbnRcclxuXHRcdH07XHJcblx0XHR0aGlzLmNyZWF0ZURpYWxvZyhkaWFsb2dEYXRhLCBTbWFydERldlRvb2xEaWFsb2dDb21wb25lbnQpO1xyXG5cdH1cclxuXHJcblx0Z2V0RGF0YSgpOiBTbWFydERldlRvb2xEZXNjcmlwdG9yIHtcclxuXHRcdHJldHVybiB0aGlzLnNlcnZpY2UuZGVzY3JpcHRvciE7XHJcblx0fVxyXG5cclxuXHRnZXRQdXJlU3RyaW5nKCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gdGhpcy5zZXJ2aWNlLmdldFB1cmVTdHJpbmcoKTtcclxuXHR9XHJcblxyXG5cdGNsZWFyKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5zZXJ2aWNlLmNsZWFyKCk7XHJcblx0fVxyXG59XHJcbiJdfQ==
1
+ import { Injectable } from '@angular/core';
2
+ import { SmartdialogService } from '@smartbit4all/dialog';
3
+ import { SmartDevToolDialogComponent } from './smart-dev-tool-dialog.component';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/material/dialog";
6
+ import * as i2 from "@angular/router";
7
+ import * as i3 from "../smart-dev-tool.service";
8
+ export class SmartDevToolDialogService extends SmartdialogService {
9
+ constructor(dialog, router, service) {
10
+ super(dialog, router);
11
+ this.service = service;
12
+ this.update = this.service.descriptorChanged;
13
+ }
14
+ handleAfterClosed(result) { }
15
+ openDialog() {
16
+ const dialogData = {
17
+ content: {
18
+ title: ''
19
+ },
20
+ size: {},
21
+ customComponent: SmartDevToolDialogComponent
22
+ };
23
+ this.createDialog(dialogData, SmartDevToolDialogComponent);
24
+ }
25
+ getData() {
26
+ return this.service.descriptor;
27
+ }
28
+ getPureString() {
29
+ return this.service.getPureString();
30
+ }
31
+ clear() {
32
+ this.service.clear();
33
+ }
34
+ }
35
+ SmartDevToolDialogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartDevToolDialogService, deps: [{ token: i1.MatDialog }, { token: i2.Router }, { token: i3.SmartDevToolService }], target: i0.ɵɵFactoryTarget.Injectable });
36
+ SmartDevToolDialogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartDevToolDialogService, providedIn: 'root' });
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartDevToolDialogService, decorators: [{
38
+ type: Injectable,
39
+ args: [{
40
+ providedIn: 'root'
41
+ }]
42
+ }], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.Router }, { type: i3.SmartDevToolService }]; } });
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZGV2LXRvb2wtZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zZXNzaW9uL2Rldi10b29sL3NtYXJ0LWRldi10b29sLWRpYWxvZy9zbWFydC1kZXYtdG9vbC1kaWFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBbUIsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUczRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7QUFLaEYsTUFBTSxPQUFPLHlCQUEwQixTQUFRLGtCQUFrQjtJQUdoRSxZQUFZLE1BQWlCLEVBQUUsTUFBYyxFQUFTLE9BQTRCO1FBQ2pGLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFEK0IsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7UUFFakYsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDO0lBQzlDLENBQUM7SUFFUSxpQkFBaUIsQ0FBQyxNQUFXLElBQVMsQ0FBQztJQUV2QyxVQUFVO1FBQ2xCLE1BQU0sVUFBVSxHQUFvQjtZQUNuQyxPQUFPLEVBQUU7Z0JBQ1IsS0FBSyxFQUFFLEVBQUU7YUFDVDtZQUNELElBQUksRUFBRSxFQUFFO1lBQ1IsZUFBZSxFQUFFLDJCQUEyQjtTQUM1QyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsMkJBQTJCLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsT0FBTztRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFXLENBQUM7SUFDakMsQ0FBQztJQUVELGFBQWE7UUFDWixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELEtBQUs7UUFDSixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RCLENBQUM7O3VIQS9CVyx5QkFBeUI7MkhBQXpCLHlCQUF5QixjQUZ6QixNQUFNOzRGQUVOLHlCQUF5QjtrQkFIckMsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFNtYXJ0RGlhbG9nRGF0YSwgU21hcnRkaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQHNtYXJ0Yml0NGFsbC9kaWFsb2cnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU21hcnREZXZUb29sRGVzY3JpcHRvciwgU21hcnREZXZUb29sU2VydmljZSB9IGZyb20gJy4uL3NtYXJ0LWRldi10b29sLnNlcnZpY2UnO1xuaW1wb3J0IHsgU21hcnREZXZUb29sRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9zbWFydC1kZXYtdG9vbC1kaWFsb2cuY29tcG9uZW50JztcblxuQEluamVjdGFibGUoe1xuXHRwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU21hcnREZXZUb29sRGlhbG9nU2VydmljZSBleHRlbmRzIFNtYXJ0ZGlhbG9nU2VydmljZSB7XG5cdHVwZGF0ZTogU3ViamVjdDx2b2lkPjtcblxuXHRjb25zdHJ1Y3RvcihkaWFsb2c6IE1hdERpYWxvZywgcm91dGVyOiBSb3V0ZXIsIHB1YmxpYyBzZXJ2aWNlOiBTbWFydERldlRvb2xTZXJ2aWNlKSB7XG5cdFx0c3VwZXIoZGlhbG9nLCByb3V0ZXIpO1xuXHRcdHRoaXMudXBkYXRlID0gdGhpcy5zZXJ2aWNlLmRlc2NyaXB0b3JDaGFuZ2VkO1xuXHR9XG5cblx0b3ZlcnJpZGUgaGFuZGxlQWZ0ZXJDbG9zZWQocmVzdWx0OiBhbnkpOiB2b2lkIHt9XG5cblx0b3ZlcnJpZGUgb3BlbkRpYWxvZygpOiB2b2lkIHtcblx0XHRjb25zdCBkaWFsb2dEYXRhOiBTbWFydERpYWxvZ0RhdGEgPSB7XG5cdFx0XHRjb250ZW50OiB7XG5cdFx0XHRcdHRpdGxlOiAnJ1xuXHRcdFx0fSxcblx0XHRcdHNpemU6IHt9LFxuXHRcdFx0Y3VzdG9tQ29tcG9uZW50OiBTbWFydERldlRvb2xEaWFsb2dDb21wb25lbnRcblx0XHR9O1xuXHRcdHRoaXMuY3JlYXRlRGlhbG9nKGRpYWxvZ0RhdGEsIFNtYXJ0RGV2VG9vbERpYWxvZ0NvbXBvbmVudCk7XG5cdH1cblxuXHRnZXREYXRhKCk6IFNtYXJ0RGV2VG9vbERlc2NyaXB0b3Ige1xuXHRcdHJldHVybiB0aGlzLnNlcnZpY2UuZGVzY3JpcHRvciE7XG5cdH1cblxuXHRnZXRQdXJlU3RyaW5nKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMuc2VydmljZS5nZXRQdXJlU3RyaW5nKCk7XG5cdH1cblxuXHRjbGVhcigpOiB2b2lkIHtcblx0XHR0aGlzLnNlcnZpY2UuY2xlYXIoKTtcblx0fVxufVxuIl19
@@ -1,40 +1,40 @@
1
- import { Component } from '@angular/core';
2
- import { Subject, takeUntil } from 'rxjs';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../smart-dev-tool-dialog/smart-dev-tool-dialog.service";
5
- import * as i2 from "@angular/material/button";
6
- import * as i3 from "@smartbit4all/icon";
7
- import * as i4 from "@angular/common";
8
- export class SmartDevToolFloatingButtonComponent {
9
- constructor(service) {
10
- this.service = service;
11
- this._destroy$ = new Subject();
12
- this.adminKeyName = 'useDevTool';
13
- this.isShown = false;
14
- this.errorsCount = '';
15
- this.service.service.newErrorsCountChanged.pipe(takeUntil(this._destroy$)).subscribe(() => {
16
- this.errorsCount = `${this.service.service.newErrorsCount > 0 ? this.service.service.newErrorsCount : ''}`;
17
- });
18
- window.addEventListener('storage', (event) => {
19
- if (event.storageArea === localStorage) {
20
- if (Object.keys(localStorage).includes(this.adminKeyName)) {
21
- this.isShown = localStorage.getItem(this.adminKeyName) === 'true';
22
- }
23
- }
24
- });
25
- this.isShown = localStorage.getItem(this.adminKeyName) === 'true';
26
- }
27
- ngOnDestroy() {
28
- this._destroy$.next();
29
- }
30
- openDevToolDialog() {
31
- this.service.openDialog();
32
- }
33
- }
34
- SmartDevToolFloatingButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartDevToolFloatingButtonComponent, deps: [{ token: i1.SmartDevToolDialogService }], target: i0.ɵɵFactoryTarget.Component });
35
- SmartDevToolFloatingButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: SmartDevToolFloatingButtonComponent, selector: "smart-session-dev-tool", ngImport: i0, template: "<button\r\n *ngIf=\"isShown\"\r\n mat-fab\r\n [color]=\"errorsCount.length ? 'warn' : 'accent'\"\r\n class=\"floatingButton\"\r\n extended\r\n title=\"devTool\"\r\n (click)=\"openDevToolDialog()\"\r\n>\r\n <smart-icon color=\"white\" icon=\"developer_mode\"></smart-icon>\r\n {{ errorsCount }}\r\n</button>\r\n", styles: [".floatingButton{position:fixed;right:2rem;bottom:2rem}.mat-icon.mat-white{color:#fff}\n"], components: [{ type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartDevToolFloatingButtonComponent, decorators: [{
37
- type: Component,
38
- args: [{ selector: 'smart-session-dev-tool', template: "<button\r\n *ngIf=\"isShown\"\r\n mat-fab\r\n [color]=\"errorsCount.length ? 'warn' : 'accent'\"\r\n class=\"floatingButton\"\r\n extended\r\n title=\"devTool\"\r\n (click)=\"openDevToolDialog()\"\r\n>\r\n <smart-icon color=\"white\" icon=\"developer_mode\"></smart-icon>\r\n {{ errorsCount }}\r\n</button>\r\n", styles: [".floatingButton{position:fixed;right:2rem;bottom:2rem}.mat-icon.mat-white{color:#fff}\n"] }]
39
- }], ctorParameters: function () { return [{ type: i1.SmartDevToolDialogService }]; } });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZGV2LXRvb2wtZmxvYXRpbmctYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3Nlc3Npb24vZGV2LXRvb2wvc21hcnQtZGV2LXRvb2wtZmxvYXRpbmctYnV0dG9uL3NtYXJ0LWRldi10b29sLWZsb2F0aW5nLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zZXNzaW9uL2Rldi10b29sL3NtYXJ0LWRldi10b29sLWZsb2F0aW5nLWJ1dHRvbi9zbWFydC1kZXYtdG9vbC1mbG9hdGluZy1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBUTFDLE1BQU0sT0FBTyxtQ0FBbUM7SUFROUMsWUFBb0IsT0FBa0M7UUFBbEMsWUFBTyxHQUFQLE9BQU8sQ0FBMkI7UUFQOUMsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRWpELGlCQUFZLEdBQVcsWUFBWSxDQUFDO1FBQ3BDLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFFekIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFHdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3hGLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUNsRixFQUFFLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUMzQyxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssWUFBWSxFQUFFO2dCQUN0QyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRTtvQkFDekQsSUFBSSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxNQUFNLENBQUM7aUJBQ25FO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssTUFBTSxDQUFDO0lBQ3BFLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUM1QixDQUFDOztpSUEvQlUsbUNBQW1DO3FIQUFuQyxtQ0FBbUMsOERDVGhELG1WQVlBOzRGREhhLG1DQUFtQztrQkFML0MsU0FBUzsrQkFDRSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU21hcnREZXZUb29sRGlhbG9nU2VydmljZSB9IGZyb20gJy4uL3NtYXJ0LWRldi10b29sLWRpYWxvZy9zbWFydC1kZXYtdG9vbC1kaWFsb2cuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NtYXJ0LXNlc3Npb24tZGV2LXRvb2wnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zbWFydC1kZXYtdG9vbC1mbG9hdGluZy1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NtYXJ0LWRldi10b29sLWZsb2F0aW5nLWJ1dHRvbi5jb21wb25lbnQuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbWFydERldlRvb2xGbG9hdGluZ0J1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBfZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBhZG1pbktleU5hbWU6IHN0cmluZyA9ICd1c2VEZXZUb29sJztcclxuICBpc1Nob3duOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGVycm9yc0NvdW50OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXJ2aWNlOiBTbWFydERldlRvb2xEaWFsb2dTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLnNlcnZpY2Uuc2VydmljZS5uZXdFcnJvcnNDb3VudENoYW5nZWQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmVycm9yc0NvdW50ID0gYCR7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLnNlcnZpY2UubmV3RXJyb3JzQ291bnQgPiAwID8gdGhpcy5zZXJ2aWNlLnNlcnZpY2UubmV3RXJyb3JzQ291bnQgOiAnJ1xyXG4gICAgICB9YDtcclxuICAgIH0pO1xyXG5cclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzdG9yYWdlJywgKGV2ZW50KSA9PiB7XHJcbiAgICAgIGlmIChldmVudC5zdG9yYWdlQXJlYSA9PT0gbG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKGxvY2FsU3RvcmFnZSkuaW5jbHVkZXModGhpcy5hZG1pbktleU5hbWUpKSB7XHJcbiAgICAgICAgICB0aGlzLmlzU2hvd24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmFkbWluS2V5TmFtZSkgPT09ICd0cnVlJztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuaXNTaG93biA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuYWRtaW5LZXlOYW1lKSA9PT0gJ3RydWUnO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcclxuICB9XHJcblxyXG4gIG9wZW5EZXZUb29sRGlhbG9nKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXJ2aWNlLm9wZW5EaWFsb2coKTtcclxuICB9XHJcbn1cclxuIiwiPGJ1dHRvblxyXG4gICAgKm5nSWY9XCJpc1Nob3duXCJcclxuICAgIG1hdC1mYWJcclxuICAgIFtjb2xvcl09XCJlcnJvcnNDb3VudC5sZW5ndGggPyAnd2FybicgOiAnYWNjZW50J1wiXHJcbiAgICBjbGFzcz1cImZsb2F0aW5nQnV0dG9uXCJcclxuICAgIGV4dGVuZGVkXHJcbiAgICB0aXRsZT1cImRldlRvb2xcIlxyXG4gICAgKGNsaWNrKT1cIm9wZW5EZXZUb29sRGlhbG9nKClcIlxyXG4+XHJcbiAgICA8c21hcnQtaWNvbiBjb2xvcj1cIndoaXRlXCIgaWNvbj1cImRldmVsb3Blcl9tb2RlXCI+PC9zbWFydC1pY29uPlxyXG4gICAge3sgZXJyb3JzQ291bnQgfX1cclxuPC9idXR0b24+XHJcbiJdfQ==
1
+ import { Component } from '@angular/core';
2
+ import { Subject, takeUntil } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../smart-dev-tool-dialog/smart-dev-tool-dialog.service";
5
+ import * as i2 from "@angular/material/button";
6
+ import * as i3 from "@smartbit4all/icon";
7
+ import * as i4 from "@angular/common";
8
+ export class SmartDevToolFloatingButtonComponent {
9
+ constructor(service) {
10
+ this.service = service;
11
+ this._destroy$ = new Subject();
12
+ this.adminKeyName = 'useDevTool';
13
+ this.isShown = false;
14
+ this.errorsCount = '';
15
+ this.service.service.newErrorsCountChanged.pipe(takeUntil(this._destroy$)).subscribe(() => {
16
+ this.errorsCount = `${this.service.service.newErrorsCount > 0 ? this.service.service.newErrorsCount : ''}`;
17
+ });
18
+ window.addEventListener('storage', (event) => {
19
+ if (event.storageArea === localStorage) {
20
+ if (Object.keys(localStorage).includes(this.adminKeyName)) {
21
+ this.isShown = localStorage.getItem(this.adminKeyName) === 'true';
22
+ }
23
+ }
24
+ });
25
+ this.isShown = localStorage.getItem(this.adminKeyName) === 'true';
26
+ }
27
+ ngOnDestroy() {
28
+ this._destroy$.next();
29
+ }
30
+ openDevToolDialog() {
31
+ this.service.openDialog();
32
+ }
33
+ }
34
+ SmartDevToolFloatingButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartDevToolFloatingButtonComponent, deps: [{ token: i1.SmartDevToolDialogService }], target: i0.ɵɵFactoryTarget.Component });
35
+ SmartDevToolFloatingButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: SmartDevToolFloatingButtonComponent, selector: "smart-session-dev-tool", ngImport: i0, template: "<button\n *ngIf=\"isShown\"\n mat-fab\n [color]=\"errorsCount.length ? 'warn' : 'accent'\"\n class=\"floatingButton\"\n extended\n title=\"devTool\"\n (click)=\"openDevToolDialog()\"\n>\n <smart-icon color=\"white\" icon=\"developer_mode\"></smart-icon>\n {{ errorsCount }}\n</button>\n", styles: [".floatingButton{position:fixed;right:2rem;bottom:2rem}.mat-icon.mat-white{color:#fff}\n"], components: [{ type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartDevToolFloatingButtonComponent, decorators: [{
37
+ type: Component,
38
+ args: [{ selector: 'smart-session-dev-tool', template: "<button\n *ngIf=\"isShown\"\n mat-fab\n [color]=\"errorsCount.length ? 'warn' : 'accent'\"\n class=\"floatingButton\"\n extended\n title=\"devTool\"\n (click)=\"openDevToolDialog()\"\n>\n <smart-icon color=\"white\" icon=\"developer_mode\"></smart-icon>\n {{ errorsCount }}\n</button>\n", styles: [".floatingButton{position:fixed;right:2rem;bottom:2rem}.mat-icon.mat-white{color:#fff}\n"] }]
39
+ }], ctorParameters: function () { return [{ type: i1.SmartDevToolDialogService }]; } });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZGV2LXRvb2wtZmxvYXRpbmctYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3Nlc3Npb24vZGV2LXRvb2wvc21hcnQtZGV2LXRvb2wtZmxvYXRpbmctYnV0dG9uL3NtYXJ0LWRldi10b29sLWZsb2F0aW5nLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zZXNzaW9uL2Rldi10b29sL3NtYXJ0LWRldi10b29sLWZsb2F0aW5nLWJ1dHRvbi9zbWFydC1kZXYtdG9vbC1mbG9hdGluZy1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBUTFDLE1BQU0sT0FBTyxtQ0FBbUM7SUFROUMsWUFBb0IsT0FBa0M7UUFBbEMsWUFBTyxHQUFQLE9BQU8sQ0FBMkI7UUFQOUMsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRWpELGlCQUFZLEdBQVcsWUFBWSxDQUFDO1FBQ3BDLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFFekIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFHdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3hGLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUNsRixFQUFFLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUMzQyxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssWUFBWSxFQUFFO2dCQUN0QyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRTtvQkFDekQsSUFBSSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxNQUFNLENBQUM7aUJBQ25FO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssTUFBTSxDQUFDO0lBQ3BFLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUM1QixDQUFDOztpSUEvQlUsbUNBQW1DO3FIQUFuQyxtQ0FBbUMsOERDVGhELDJUQVlBOzRGREhhLG1DQUFtQztrQkFML0MsU0FBUzsrQkFDRSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTbWFydERldlRvb2xEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vc21hcnQtZGV2LXRvb2wtZGlhbG9nL3NtYXJ0LWRldi10b29sLWRpYWxvZy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc21hcnQtc2Vzc2lvbi1kZXYtdG9vbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zbWFydC1kZXYtdG9vbC1mbG9hdGluZy1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zbWFydC1kZXYtdG9vbC1mbG9hdGluZy1idXR0b24uY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBTbWFydERldlRvb2xGbG9hdGluZ0J1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX2Rlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBhZG1pbktleU5hbWU6IHN0cmluZyA9ICd1c2VEZXZUb29sJztcbiAgaXNTaG93bjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGVycm9yc0NvdW50OiBzdHJpbmcgPSAnJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlcnZpY2U6IFNtYXJ0RGV2VG9vbERpYWxvZ1NlcnZpY2UpIHtcbiAgICB0aGlzLnNlcnZpY2Uuc2VydmljZS5uZXdFcnJvcnNDb3VudENoYW5nZWQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5lcnJvcnNDb3VudCA9IGAke1xuICAgICAgICB0aGlzLnNlcnZpY2Uuc2VydmljZS5uZXdFcnJvcnNDb3VudCA+IDAgPyB0aGlzLnNlcnZpY2Uuc2VydmljZS5uZXdFcnJvcnNDb3VudCA6ICcnXG4gICAgICB9YDtcbiAgICB9KTtcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzdG9yYWdlJywgKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQuc3RvcmFnZUFyZWEgPT09IGxvY2FsU3RvcmFnZSkge1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMobG9jYWxTdG9yYWdlKS5pbmNsdWRlcyh0aGlzLmFkbWluS2V5TmFtZSkpIHtcbiAgICAgICAgICB0aGlzLmlzU2hvd24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmFkbWluS2V5TmFtZSkgPT09ICd0cnVlJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5pc1Nob3duID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5hZG1pbktleU5hbWUpID09PSAndHJ1ZSc7XG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICB9XG5cbiAgb3BlbkRldlRvb2xEaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy5zZXJ2aWNlLm9wZW5EaWFsb2coKTtcbiAgfVxufVxuIiwiPGJ1dHRvblxuICAgICpuZ0lmPVwiaXNTaG93blwiXG4gICAgbWF0LWZhYlxuICAgIFtjb2xvcl09XCJlcnJvcnNDb3VudC5sZW5ndGggPyAnd2FybicgOiAnYWNjZW50J1wiXG4gICAgY2xhc3M9XCJmbG9hdGluZ0J1dHRvblwiXG4gICAgZXh0ZW5kZWRcbiAgICB0aXRsZT1cImRldlRvb2xcIlxuICAgIChjbGljayk9XCJvcGVuRGV2VG9vbERpYWxvZygpXCJcbj5cbiAgICA8c21hcnQtaWNvbiBjb2xvcj1cIndoaXRlXCIgaWNvbj1cImRldmVsb3Blcl9tb2RlXCI+PC9zbWFydC1pY29uPlxuICAgIHt7IGVycm9yc0NvdW50IH19XG48L2J1dHRvbj5cbiJdfQ==