@microsoft/windows-admin-center-sdk 4.167.0 → 4.260.0

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 (617) hide show
  1. package/angular/assets/strings/cs-CZ/strings.json +1 -1
  2. package/angular/assets/strings/de-DE/strings.json +1 -1
  3. package/angular/assets/strings/es-ES/strings.json +1 -1
  4. package/angular/assets/strings/fr-FR/strings.json +1 -1
  5. package/angular/assets/strings/hu-HU/strings.json +1 -1
  6. package/angular/assets/strings/id-ID/strings.json +1 -1
  7. package/angular/assets/strings/it-IT/strings.json +1 -1
  8. package/angular/assets/strings/ja-JP/strings.json +1 -1
  9. package/angular/assets/strings/ko-KR/strings.json +1 -1
  10. package/angular/assets/strings/nl-NL/strings.json +1 -1
  11. package/angular/assets/strings/pl-PL/strings.json +1 -1
  12. package/angular/assets/strings/pt-BR/strings.json +1 -1
  13. package/angular/assets/strings/pt-PT/strings.json +1 -1
  14. package/angular/assets/strings/ru-RU/strings.json +1 -1
  15. package/angular/assets/strings/strings.json +1 -1
  16. package/angular/assets/strings/sv-SE/strings.json +1 -1
  17. package/angular/assets/strings/tr-TR/strings.json +1 -1
  18. package/angular/assets/strings/zh-CN/strings.json +1 -1
  19. package/angular/assets/strings/zh-TW/strings.json +1 -1
  20. package/angular/esm2020/src/controls/accordion/accordion-panel/accordion-panel.component.mjs +36 -12
  21. package/angular/esm2020/src/controls/copilot/copilot.component.mjs +55 -0
  22. package/angular/esm2020/src/controls/copilot/copilot.module.mjs +25 -0
  23. package/angular/esm2020/src/controls/copilot/index.mjs +3 -0
  24. package/angular/esm2020/src/controls/data-table/data-table.component.mjs +7 -9
  25. package/angular/esm2020/src/controls/details/details.component.mjs +62 -25
  26. package/angular/esm2020/src/controls/details/details.module.mjs +5 -1
  27. package/angular/esm2020/src/controls/dialog/dialog.component.mjs +35 -23
  28. package/angular/esm2020/src/controls/form/form-field/array/array-form-field-accessibility-manager.service.mjs +59 -0
  29. package/angular/esm2020/src/controls/form/form-field/array/array-form-field.component.mjs +24 -35
  30. package/angular/esm2020/src/controls/form/form-field/form-field-accessibility-manager-base.service.mjs +105 -0
  31. package/angular/esm2020/src/controls/form/form-field/list/list-form-field-accessibility-manager.service.mjs +38 -0
  32. package/angular/esm2020/src/controls/form/form-field/list/list-form-field.component.mjs +56 -38
  33. package/angular/esm2020/src/controls/form/form-field/ordered-list/ordered-list-form-field-accessibility-manager.service.mjs +54 -0
  34. package/angular/esm2020/src/controls/form/form-field/ordered-list/ordered-list-form-field.component.mjs +67 -67
  35. package/angular/esm2020/src/controls/form/forms.module.mjs +19 -2
  36. package/angular/esm2020/src/controls/guided-panel/guided-pane/guided-pane.component.mjs +12 -3
  37. package/angular/esm2020/src/controls/index.mjs +4 -1
  38. package/angular/esm2020/src/controls/page-alert-bar/page-alert-bar.component.mjs +4 -4
  39. package/angular/esm2020/src/controls/snap-in-extension/snap-in-extension.component.mjs +1 -1
  40. package/angular/esm2020/src/controls/summary/index.mjs +4 -0
  41. package/angular/esm2020/src/controls/summary/summary-item.mjs +83 -0
  42. package/angular/esm2020/src/controls/summary/summary.component.mjs +391 -0
  43. package/angular/esm2020/src/controls/summary/summary.module.mjs +37 -0
  44. package/angular/esm2020/src/controls/summary-group/index.mjs +3 -0
  45. package/angular/esm2020/src/controls/summary-group/summary-group.component.mjs +84 -0
  46. package/angular/esm2020/src/controls/summary-group/summary-group.module.mjs +33 -0
  47. package/angular/esm2020/src/controls/wizard/models/wizard-step-snap-in-output.mjs +1 -1
  48. package/angular/esm2020/src/controls/wizard-lite/wizard-navigation-button/wizard-navigation-button.component.mjs +3 -3
  49. package/angular/esm2020/src/data/extension-broker/snap-in-listener.mjs +80 -0
  50. package/angular/esm2020/src/data/index.mjs +2 -1
  51. package/angular/esm2020/src/generated/strings.mjs +1 -1
  52. package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.mjs +1798 -597
  53. package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.mjs.map +1 -1
  54. package/angular/fesm2020/microsoft-windows-admin-center-sdk-angular.mjs +1679 -597
  55. package/angular/fesm2020/microsoft-windows-admin-center-sdk-angular.mjs.map +1 -1
  56. package/angular/src/controls/accordion/accordion-panel/accordion-panel.component.d.ts +13 -4
  57. package/angular/src/controls/copilot/copilot.component.d.ts +31 -0
  58. package/angular/src/controls/copilot/copilot.module.d.ts +8 -0
  59. package/angular/src/controls/copilot/index.d.ts +2 -0
  60. package/angular/src/controls/details/details.component.d.ts +5 -1
  61. package/angular/src/controls/details/details.module.d.ts +3 -2
  62. package/angular/src/controls/dialog/dialog.component.d.ts +5 -1
  63. package/angular/src/controls/form/form-field/array/array-form-field-accessibility-manager.service.d.ts +38 -0
  64. package/angular/src/controls/form/form-field/array/array-form-field.component.d.ts +3 -1
  65. package/angular/src/controls/form/form-field/form-field-accessibility-manager-base.service.d.ts +37 -0
  66. package/angular/src/controls/form/form-field/list/list-form-field-accessibility-manager.service.d.ts +25 -0
  67. package/angular/src/controls/form/form-field/list/list-form-field.component.d.ts +12 -2
  68. package/angular/src/controls/form/form-field/ordered-list/ordered-list-form-field-accessibility-manager.service.d.ts +37 -0
  69. package/angular/src/controls/form/form-field/ordered-list/ordered-list-form-field.component.d.ts +12 -8
  70. package/angular/src/controls/guided-panel/guided-pane/guided-pane.component.d.ts +4 -0
  71. package/angular/src/controls/index.d.ts +3 -0
  72. package/angular/src/controls/summary/index.d.ts +3 -0
  73. package/angular/src/controls/summary/summary-item.d.ts +105 -0
  74. package/angular/src/controls/summary/summary.component.d.ts +82 -0
  75. package/angular/src/controls/summary/summary.module.d.ts +11 -0
  76. package/angular/src/controls/summary-group/index.d.ts +3 -0
  77. package/angular/src/controls/summary-group/summary-group.component.d.ts +57 -0
  78. package/angular/src/controls/summary-group/summary-group.module.d.ts +10 -0
  79. package/angular/src/controls/wizard/models/wizard-step-snap-in-output.d.ts +1 -1
  80. package/{core → angular/src}/data/extension-broker/snap-in-listener.d.ts +49 -46
  81. package/angular/src/data/index.d.ts +1 -0
  82. package/angular/src/generated/strings.d.ts +11 -0
  83. package/core/async/cancellation.js +316 -0
  84. package/core/async/index.js +312 -0
  85. package/core/async/progress.js +312 -0
  86. package/core/azure/azure-constants.js +316 -0
  87. package/core/azure/azure-logging.js +316 -0
  88. package/core/azure/azure-manager.js +316 -0
  89. package/core/azure/models/aadAppConfig-data.js +312 -0
  90. package/core/azure/models/azureArcStatusEnum.js +315 -0
  91. package/core/azure/models/azureTokenResult-data.js +315 -0
  92. package/core/azure/resources/deployment-operation-request-body.js +316 -0
  93. package/core/azure/resources/deployment-operation-response.js +312 -0
  94. package/core/azure/resources/location-data.js +316 -0
  95. package/core/azure/resources/resource-group-data.js +316 -0
  96. package/core/azure/resources/subscription-data.js +316 -0
  97. package/core/base/data-store/browser-storage-data-store.js +312 -0
  98. package/core/base/data-store/cached-data-store.js +316 -0
  99. package/core/base/data-store/data-store.js +312 -0
  100. package/core/base/data-store/local-data-store.js +312 -0
  101. package/core/base/data-store/memory-data-store.js +312 -0
  102. package/core/base/data-store/session-data-store.js +316 -0
  103. package/core/base/date/date-like.js +315 -0
  104. package/core/base/date/date-range.js +316 -0
  105. package/core/base/date/date-time.js +312 -0
  106. package/core/base/date/date-type.js +312 -0
  107. package/core/base/date/time-unit.js +316 -0
  108. package/core/base/decorators/base.js +316 -0
  109. package/core/base/decorators/debounce.decorators.js +316 -0
  110. package/core/base/decorators/delay.decorator.js +312 -0
  111. package/core/base/decorators/yield.decorator.js +312 -0
  112. package/core/base/environment.js +316 -0
  113. package/core/base/json.js +316 -0
  114. package/core/base/msft-sme.mock.js +315 -0
  115. package/core/base/polyfills/array.js +316 -0
  116. package/core/base/polyfills/string.js +316 -0
  117. package/core/base/rxjs-lifetime-manager.js +312 -0
  118. package/core/base/utilities.js +312 -0
  119. package/core/base/versioned-object.js +316 -0
  120. package/core/copilot/copilot-extension-service.d.ts +49 -0
  121. package/core/copilot/copilot-extension-service.d.ts.map +1 -0
  122. package/core/copilot/copilot-extension-service.js +446 -0
  123. package/core/copilot/copilot-extension-service.js.map +1 -0
  124. package/core/copilot/copilot-iframe/iframe-broker-service.d.ts +19 -0
  125. package/core/copilot/copilot-iframe/iframe-broker-service.d.ts.map +1 -0
  126. package/core/copilot/copilot-iframe/iframe-broker-service.js +344 -0
  127. package/core/copilot/copilot-iframe/iframe-broker-service.js.map +1 -0
  128. package/core/copilot/copilot-iframe/iframe-child-service.d.ts +15 -0
  129. package/core/copilot/copilot-iframe/iframe-child-service.d.ts.map +1 -0
  130. package/core/copilot/copilot-iframe/iframe-child-service.js +337 -0
  131. package/core/copilot/copilot-iframe/iframe-child-service.js.map +1 -0
  132. package/core/copilot/copilot-iframe/iframe-message-payload.d.ts +4 -0
  133. package/core/copilot/copilot-iframe/iframe-message-payload.d.ts.map +1 -0
  134. package/core/copilot/copilot-iframe/iframe-message-payload.js +319 -0
  135. package/core/copilot/copilot-iframe/iframe-message-payload.js.map +1 -0
  136. package/core/copilot/copilot-iframe/iframe-message-type.d.ts +4 -0
  137. package/core/copilot/copilot-iframe/iframe-message-type.d.ts.map +1 -0
  138. package/core/copilot/copilot-iframe/iframe-message-type.js +319 -0
  139. package/core/copilot/copilot-iframe/iframe-message-type.js.map +1 -0
  140. package/core/copilot/copilot-iframe/iframe-message.d.ts +6 -0
  141. package/core/copilot/copilot-iframe/iframe-message.d.ts.map +1 -0
  142. package/core/copilot/copilot-iframe/iframe-message.js +315 -0
  143. package/core/copilot/copilot-iframe/iframe-message.js.map +1 -0
  144. package/core/data/accessibility-manager.js +316 -0
  145. package/core/data/active-directory/active-directory.js +312 -0
  146. package/core/data/active-directory/models/account-info.js +316 -0
  147. package/core/data/active-directory/models/active-directory-search-options.js +312 -0
  148. package/core/data/active-directory/models/search-type.js +315 -0
  149. package/core/data/animation.js +312 -0
  150. package/core/data/app-context.js +316 -0
  151. package/core/data/asset-manager.js +316 -0
  152. package/core/data/base64-array-buffer.js +312 -0
  153. package/core/data/batch-connection.js +316 -0
  154. package/core/data/cim-connection.js +312 -0
  155. package/core/data/cim-stream.js +312 -0
  156. package/core/data/cim.js +316 -0
  157. package/core/data/column-picker.js +315 -0
  158. package/core/data/cookie.js +316 -0
  159. package/core/data/core-environment.js +312 -0
  160. package/core/data/crypto.js +312 -0
  161. package/core/data/deployment-share.js +316 -0
  162. package/core/data/disposable.js +316 -0
  163. package/core/data/electron.js +316 -0
  164. package/core/data/error-extended.js +316 -0
  165. package/core/data/extension-broker/dialog-listener.js +312 -0
  166. package/core/data/extension-broker/extension-broker.js +316 -0
  167. package/core/data/extension-broker/extension-listener.js +316 -0
  168. package/core/data/extension-broker/model/extension-broker-request-payload.js +316 -0
  169. package/core/data/extension-broker/model/extension-broker-response-error.js +315 -0
  170. package/core/data/extension-broker/model/extension-broker-response-payload.js +316 -0
  171. package/core/data/extension-broker/model/extension-entries.js +315 -0
  172. package/core/data/extension-broker/model/extension-instance.js +316 -0
  173. package/core/data/extension-broker/model/extension-rect.js +316 -0
  174. package/core/data/extension-broker/model/extension-search-options.js +316 -0
  175. package/core/data/extension-broker/service-listener.js +315 -0
  176. package/core/data/extension-broker/worker-listener.js +315 -0
  177. package/core/data/extension-broker/worker-set.js +316 -0
  178. package/core/data/file-transfer.js +316 -0
  179. package/core/data/gateway-connection.js +316 -0
  180. package/core/data/gateway-status.js +316 -0
  181. package/core/data/gateway-url-builder.js +316 -0
  182. package/core/data/gateway-url-translator.js +316 -0
  183. package/core/data/gateway-urls.js +316 -0
  184. package/core/data/globalization.js +315 -0
  185. package/core/data/http-constants.js +316 -0
  186. package/core/data/http.js +316 -0
  187. package/core/data/jobs/jobs-manager.js +316 -0
  188. package/core/data/jobs/models/job-credentials.js +312 -0
  189. package/core/data/jobs/models/job-node.js +316 -0
  190. package/core/data/jobs/models/job-paginated-response.js +312 -0
  191. package/core/data/jobs/models/job-pagination-options.js +316 -0
  192. package/core/data/jobs/models/job.js +316 -0
  193. package/core/data/jobs/models/node-job.js +316 -0
  194. package/core/data/jobs/models/powershell-job.js +312 -0
  195. package/core/data/language.js +312 -0
  196. package/core/data/lifetime-data.js +316 -0
  197. package/core/data/localization-manager.js +316 -0
  198. package/core/data/native-q.js +312 -0
  199. package/core/data/net.d.ts.map +1 -1
  200. package/core/data/net.js +317 -1
  201. package/core/data/net.js.map +1 -1
  202. package/core/data/node-connection.d.ts.map +1 -1
  203. package/core/data/node-connection.js +316 -0
  204. package/core/data/node-connection.js.map +1 -1
  205. package/core/data/node-extension-install.js +316 -0
  206. package/core/data/powershell-alternate.js +316 -0
  207. package/core/data/powershell-batch.js +312 -0
  208. package/core/data/powershell-connection.js +312 -0
  209. package/core/data/powershell-crypto.js +316 -0
  210. package/core/data/powershell-stream.js +315 -0
  211. package/core/data/powershell.js +316 -0
  212. package/core/data/query-cache.js +312 -0
  213. package/core/data/resource-cache.js +312 -0
  214. package/core/data/schedule-reboot.js +315 -0
  215. package/core/data/settings-manager.js +316 -0
  216. package/core/data/settings-manger.mock.js +315 -0
  217. package/core/data/sme-extension.js +312 -0
  218. package/core/data/ssh-stream.js +316 -0
  219. package/core/data/units.js +312 -0
  220. package/core/data/uri-builder.js +316 -0
  221. package/core/data/wdac-operations.js +315 -0
  222. package/core/data/websocket-stream.js +316 -0
  223. package/core/diagnostics/error-monitor.js +316 -0
  224. package/core/diagnostics/log-level.js +316 -0
  225. package/core/diagnostics/log-record.js +312 -0
  226. package/core/diagnostics/logging-constants.js +316 -0
  227. package/core/diagnostics/logging.js +316 -0
  228. package/core/diagnostics/logging.mock.js +316 -0
  229. package/core/diagnostics/sme-web-telemetry-models.js +316 -0
  230. package/core/diagnostics/sme-web-telemetry.d.ts +1 -2
  231. package/core/diagnostics/sme-web-telemetry.d.ts.map +1 -1
  232. package/core/diagnostics/sme-web-telemetry.js +339 -15
  233. package/core/diagnostics/sme-web-telemetry.js.map +1 -1
  234. package/core/diagnostics/telemetry-control-type.js +316 -0
  235. package/core/diagnostics/telemetry-options.js +316 -0
  236. package/core/diagnostics/telemetry-record.js +316 -0
  237. package/core/dom/dom.js +316 -0
  238. package/core/frame/frame-connection.js +316 -0
  239. package/core/frame/frame-connection.mock.js +316 -0
  240. package/core/frame/shell-navigation-connection.js +316 -0
  241. package/core/generated/powershell-scripts.d.ts.map +1 -1
  242. package/core/generated/powershell-scripts.js +313 -1
  243. package/core/generated/powershell-scripts.js.map +1 -1
  244. package/core/generated/strings.js +312 -0
  245. package/core/host/host-core-manager.js +316 -0
  246. package/core/host/host-core-message-type.js +316 -0
  247. package/core/host/host-core-messages.js +312 -0
  248. package/core/index.d.ts +48 -25
  249. package/core/index.d.ts.map +1 -1
  250. package/core/index.js +351 -18
  251. package/core/index.js.map +1 -1
  252. package/core/manifest/environment-modules.d.ts +3 -1
  253. package/core/manifest/environment-modules.d.ts.map +1 -1
  254. package/core/manifest/environment-modules.js +314 -0
  255. package/core/manifest/environment-modules.js.map +1 -1
  256. package/core/manifest/manifest-loader.js +312 -0
  257. package/core/manifest/module-schema.json +3 -1
  258. package/core/notification/client-notification-instance.js +316 -0
  259. package/core/notification/client-notification.js +316 -0
  260. package/core/notification/notification-connection.js +316 -0
  261. package/core/notification/notification-link-type.js +312 -0
  262. package/core/notification/notification-manager.js +312 -0
  263. package/core/notification/notification-message.js +312 -0
  264. package/core/notification/notification-state.js +316 -0
  265. package/core/notification/notification.js +312 -0
  266. package/core/notification/powershell-notification.js +316 -0
  267. package/core/notification/socket-signalr.js +312 -0
  268. package/core/notification/work-item-connection.js +312 -0
  269. package/core/notification/work-item-manager.js +316 -0
  270. package/core/notification/work-item-request.js +315 -0
  271. package/core/performance/performance-profile-data-type.js +315 -0
  272. package/core/performance/performance-profile-data.js +315 -0
  273. package/core/performance/performance-profile-database.js +315 -0
  274. package/core/performance/performance-profile-record.js +316 -0
  275. package/core/performance/performance-profile.d.ts.map +1 -1
  276. package/core/performance/performance-profile.js +325 -9
  277. package/core/performance/performance-profile.js.map +1 -1
  278. package/core/performance/performance-tracker.js +312 -0
  279. package/core/polyfills.js +316 -0
  280. package/core/resources/scripts/public/crypto/Get-DecryptedDataFromNode.ps1 +219 -0
  281. package/core/resources/scripts/public/crypto/Get-EncryptionJWKOnNode.ps1 +218 -0
  282. package/core/resources/scripts/public/inventory/Get-CimWin32LogicalDisk.ps1 +218 -0
  283. package/core/resources/scripts/public/inventory/Get-CimWin32NetworkAdapter.ps1 +216 -0
  284. package/core/resources/scripts/public/inventory/Get-CimWin32PhysicalMemory.ps1 +216 -0
  285. package/core/resources/scripts/public/inventory/Get-CimWin32Processor.ps1 +218 -0
  286. package/core/resources/scripts/public/inventory/Get-ClusterInventory.ps1 +218 -0
  287. package/core/resources/scripts/public/inventory/Get-ClusterNodes.ps1 +218 -0
  288. package/core/resources/scripts/public/inventory/Get-ServerInventory.ps1 +221 -1
  289. package/core/rpc/alive/rpc-alive-client.js +312 -0
  290. package/core/rpc/alive/rpc-alive-handler.js +312 -0
  291. package/core/rpc/alive/rpc-alive-model.js +316 -0
  292. package/core/rpc/alive/rpc-alive-subject-server.js +312 -0
  293. package/core/rpc/alive/rpc-observable-alive-client.js +316 -0
  294. package/core/rpc/alive/rpc-observable-alive-model.js +315 -0
  295. package/core/rpc/alive/rpc-observable-alive-server.js +315 -0
  296. package/core/rpc/azure/rpc-azure-model.js +312 -0
  297. package/core/rpc/azure/rpc-azure-request-client.js +312 -0
  298. package/core/rpc/azure/rpc-azure-request-handler.js +316 -0
  299. package/core/rpc/azure/rpc-azure-request-subject-server.js +316 -0
  300. package/core/rpc/azure/rpc-azure-response-client.js +316 -0
  301. package/core/rpc/azure/rpc-azure-response-handler.js +312 -0
  302. package/core/rpc/copilot/rpc-observable-copilot-client.d.ts +24 -0
  303. package/core/rpc/copilot/rpc-observable-copilot-client.d.ts.map +1 -0
  304. package/core/rpc/copilot/rpc-observable-copilot-client.js +343 -0
  305. package/core/rpc/copilot/rpc-observable-copilot-client.js.map +1 -0
  306. package/core/rpc/copilot/rpc-observable-copilot-config-client.d.ts +24 -0
  307. package/core/rpc/copilot/rpc-observable-copilot-config-client.d.ts.map +1 -0
  308. package/core/rpc/copilot/rpc-observable-copilot-config-client.js +343 -0
  309. package/core/rpc/copilot/rpc-observable-copilot-config-client.js.map +1 -0
  310. package/core/rpc/copilot/rpc-observable-copilot-config-server.d.ts +14 -0
  311. package/core/rpc/copilot/rpc-observable-copilot-config-server.d.ts.map +1 -0
  312. package/core/rpc/copilot/rpc-observable-copilot-config-server.js +332 -0
  313. package/core/rpc/copilot/rpc-observable-copilot-config-server.js.map +1 -0
  314. package/core/rpc/copilot/rpc-observable-copilot-model.d.ts +55 -0
  315. package/core/rpc/copilot/rpc-observable-copilot-model.d.ts.map +1 -0
  316. package/core/rpc/copilot/rpc-observable-copilot-model.js +334 -0
  317. package/core/rpc/copilot/rpc-observable-copilot-model.js.map +1 -0
  318. package/core/rpc/copilot/rpc-observable-copilot-server.d.ts +14 -0
  319. package/core/rpc/copilot/rpc-observable-copilot-server.d.ts.map +1 -0
  320. package/core/rpc/copilot/rpc-observable-copilot-server.js +333 -0
  321. package/core/rpc/copilot/rpc-observable-copilot-server.js.map +1 -0
  322. package/core/rpc/credssp/rpc-credssp-model.js +315 -0
  323. package/core/rpc/credssp/rpc-credssp-request-client.js +316 -0
  324. package/core/rpc/credssp/rpc-credssp-request-handler.js +316 -0
  325. package/core/rpc/credssp/rpc-credssp-request-subject-server.js +316 -0
  326. package/core/rpc/credssp/rpc-credssp-response-client.js +316 -0
  327. package/core/rpc/credssp/rpc-credssp-response-handler.js +316 -0
  328. package/core/rpc/dialog/rpc-dialog-client.js +312 -0
  329. package/core/rpc/dialog/rpc-dialog-handler.js +315 -0
  330. package/core/rpc/dialog/rpc-dialog-model.js +316 -0
  331. package/core/rpc/dialog/rpc-dialog-subject-server.js +316 -0
  332. package/core/rpc/electron/rpc-electron-model.js +316 -0
  333. package/core/rpc/electron/rpc-electron-request-client.js +316 -0
  334. package/core/rpc/electron/rpc-electron-request-handler.js +315 -0
  335. package/core/rpc/electron/rpc-electron-request-subject-server.js +316 -0
  336. package/core/rpc/electron/rpc-electron-response-client.js +312 -0
  337. package/core/rpc/electron/rpc-electron-response-handler.js +315 -0
  338. package/core/rpc/elevate/rpc-observable-elevate-client.js +315 -0
  339. package/core/rpc/elevate/rpc-observable-elevate-model.js +312 -0
  340. package/core/rpc/elevate/rpc-observable-elevate-server.js +312 -0
  341. package/core/rpc/error-monitor/rpc-observable-error-monitor-client.js +316 -0
  342. package/core/rpc/error-monitor/rpc-observable-error-monitor-model.js +316 -0
  343. package/core/rpc/error-monitor/rpc-observable-error-monitor-server.js +312 -0
  344. package/core/rpc/extension-broker/rpc-extension-broker-model.js +312 -0
  345. package/core/rpc/extension-broker/rpc-extension-broker-module-request-subject-server.js +312 -0
  346. package/core/rpc/extension-broker/rpc-extension-broker-request-client.js +312 -0
  347. package/core/rpc/extension-broker/rpc-extension-broker-request-handler.js +312 -0
  348. package/core/rpc/extension-broker/rpc-extension-broker-request-subject-server.js +312 -0
  349. package/core/rpc/extension-broker/rpc-extension-broker-response-client.js +312 -0
  350. package/core/rpc/extension-broker/rpc-extension-broker-response-handler.js +312 -0
  351. package/core/rpc/extension-data/rpc-observable-extension-data-client.js +316 -0
  352. package/core/rpc/extension-data/rpc-observable-extension-data-model.js +312 -0
  353. package/core/rpc/extension-data/rpc-observable-extension-data-server.js +315 -0
  354. package/core/rpc/forward/rpc-forward-auto-client.js +315 -0
  355. package/core/rpc/forward/rpc-forward-down-client.js +315 -0
  356. package/core/rpc/forward/rpc-forward-down-handler.js +316 -0
  357. package/core/rpc/forward/rpc-forward-model.js +316 -0
  358. package/core/rpc/forward/rpc-forward-up-client.js +312 -0
  359. package/core/rpc/forward/rpc-forward-up-handler.js +316 -0
  360. package/core/rpc/forward/rpc-forward-up-subject-server.js +316 -0
  361. package/core/rpc/log/rpc-log-client.js +316 -0
  362. package/core/rpc/log/rpc-log-handler.js +312 -0
  363. package/core/rpc/log/rpc-log-model.js +316 -0
  364. package/core/rpc/log/rpc-log-subject-server.js +316 -0
  365. package/core/rpc/notification/rpc-notification-client.js +316 -0
  366. package/core/rpc/notification/rpc-notification-handler.js +312 -0
  367. package/core/rpc/notification/rpc-notification-model.js +316 -0
  368. package/core/rpc/notification/rpc-notification-subject-server.js +312 -0
  369. package/core/rpc/overlay/rpc-overlay-close-client.js +312 -0
  370. package/core/rpc/overlay/rpc-overlay-close-handler.js +316 -0
  371. package/core/rpc/overlay/rpc-overlay-model.js +312 -0
  372. package/core/rpc/overlay/rpc-overlay-open-client.js +312 -0
  373. package/core/rpc/overlay/rpc-overlay-open-handler.js +316 -0
  374. package/core/rpc/overlay/rpc-overlay-open-subject-server.js +316 -0
  375. package/core/rpc/performance/rpc-observable-performance-client.js +315 -0
  376. package/core/rpc/performance/rpc-observable-performance-config-client.js +312 -0
  377. package/core/rpc/performance/rpc-observable-performance-config-server.js +316 -0
  378. package/core/rpc/performance/rpc-observable-performance-model.js +312 -0
  379. package/core/rpc/performance/rpc-observable-performance-server.js +312 -0
  380. package/core/rpc/report/rpc-report-client.js +316 -0
  381. package/core/rpc/report/rpc-report-handler.js +315 -0
  382. package/core/rpc/report/rpc-report-model.js +315 -0
  383. package/core/rpc/report/rpc-report-subject-server.js +312 -0
  384. package/core/rpc/rpc-base.d.ts +4 -0
  385. package/core/rpc/rpc-base.d.ts.map +1 -1
  386. package/core/rpc/rpc-base.js +316 -0
  387. package/core/rpc/rpc-base.js.map +1 -1
  388. package/core/rpc/rpc-channel.js +316 -0
  389. package/core/rpc/rpc-forwarder.js +312 -0
  390. package/core/rpc/rpc-inbound-client.js +315 -0
  391. package/core/rpc/rpc-inbound.js +312 -0
  392. package/core/rpc/rpc-manager.js +316 -0
  393. package/core/rpc/rpc-module-subject-server.js +316 -0
  394. package/core/rpc/rpc-observable-client.js +316 -0
  395. package/core/rpc/rpc-observable-request.js +316 -0
  396. package/core/rpc/rpc-observable-result.js +316 -0
  397. package/core/rpc/rpc-observable-server.js +316 -0
  398. package/core/rpc/rpc-outbound-client.js +316 -0
  399. package/core/rpc/rpc-outbound.js +315 -0
  400. package/core/rpc/rpc-subject-server.js +316 -0
  401. package/core/rpc/rpc.js +316 -0
  402. package/core/rpc/seek/rpc-seek-client.js +316 -0
  403. package/core/rpc/seek/rpc-seek-handler.js +315 -0
  404. package/core/rpc/seek/rpc-seek-model.js +315 -0
  405. package/core/rpc/settings/rpc-settings-client.js +312 -0
  406. package/core/rpc/settings/rpc-settings-handler.js +315 -0
  407. package/core/rpc/settings/rpc-settings-model.js +315 -0
  408. package/core/rpc/settings/rpc-settings-subject-server.js +312 -0
  409. package/core/rpc/shell-navigate/rpc-shell-navigate-client.js +316 -0
  410. package/core/rpc/shell-navigate/rpc-shell-navigate-handler.js +316 -0
  411. package/core/rpc/shell-navigate/rpc-shell-navigate-model.js +315 -0
  412. package/core/rpc/shell-navigate/rpc-shell-navigate-subject-server.js +315 -0
  413. package/core/rpc/sme-extension/rpc-sme-extension-model.js +316 -0
  414. package/core/rpc/sme-extension/rpc-sme-extension-request-client.js +316 -0
  415. package/core/rpc/sme-extension/rpc-sme-extension-request-handler.js +312 -0
  416. package/core/rpc/sme-extension/rpc-sme-extension-request-subject-server.js +312 -0
  417. package/core/rpc/sme-extension/rpc-sme-extension-response-client.js +316 -0
  418. package/core/rpc/sme-extension/rpc-sme-extension-response-handler.js +316 -0
  419. package/core/rpc/telemetry/rpc-telemetry-client.js +312 -0
  420. package/core/rpc/telemetry/rpc-telemetry-handler.js +312 -0
  421. package/core/rpc/telemetry/rpc-telemetry-model.js +312 -0
  422. package/core/rpc/telemetry/rpc-telemetry-subject-server.js +316 -0
  423. package/core/rpc/update-data/rpc-update-data-client.js +316 -0
  424. package/core/rpc/update-data/rpc-update-data-handler.js +312 -0
  425. package/core/rpc/update-data/rpc-update-data-model.js +312 -0
  426. package/core/rpc/update-data/rpc-update-data-subject-server.js +312 -0
  427. package/core/rpc/update-theme/rpc-observable-update-theme-client.js +316 -0
  428. package/core/rpc/update-theme/rpc-observable-update-theme-model.js +315 -0
  429. package/core/rpc/update-theme/rpc-observable-update-theme-server.js +316 -0
  430. package/core/rpc/work-item/rpc-work-item-client.js +315 -0
  431. package/core/rpc/work-item/rpc-work-item-handler.js +312 -0
  432. package/core/rpc/work-item/rpc-work-item-model.js +316 -0
  433. package/core/rpc/work-item/rpc-work-item-subject-server.js +316 -0
  434. package/core/rpc/work-item-find/rpc-work-item-find-client.js +312 -0
  435. package/core/rpc/work-item-find/rpc-work-item-find-handler.js +315 -0
  436. package/core/rpc/work-item-find/rpc-work-item-find-model.js +316 -0
  437. package/core/rpc/work-item-find/rpc-work-item-find-subject-server.js +312 -0
  438. package/core/security/active-connection.js +315 -0
  439. package/core/security/authorization-manager.js +315 -0
  440. package/core/security/connection-manager-settings/common-connection-settings.js +316 -0
  441. package/core/security/connection-manager-settings/connection-settings.js +315 -0
  442. package/core/security/connection-manager.js +316 -0
  443. package/core/security/connection-stream.js +316 -0
  444. package/core/security/connection.js +312 -0
  445. package/core/security/credssp-manager.js +315 -0
  446. package/core/security/sign-on-manager.js +316 -0
  447. package/core/security/tag-manager.js +315 -0
  448. package/core/security/tool-condition-validator.js +316 -0
  449. package/core/security/tool-connection-query.js +312 -0
  450. package/core/security/user-principal.js +312 -0
  451. package/core/shared/cluster-inventory/cluster-inventory-cache.js +316 -0
  452. package/core/shared/cluster-inventory/cluster-inventory.js +315 -0
  453. package/core/shared/cluster-inventory/cluster-node-inventory.js +316 -0
  454. package/core/shared/gateway-inventory/gateway-inventory-cache.js +316 -0
  455. package/core/shared/gateway-inventory/gateway-inventory-detail-cache.js +316 -0
  456. package/core/shared/gateway-inventory/gateway-inventory-detail.js +316 -0
  457. package/core/shared/gateway-inventory/gateway-inventory.js +316 -0
  458. package/core/shared/inventory-query-caches.js +316 -0
  459. package/core/shared/server-inventory/server-inventory-cache.d.ts.map +1 -1
  460. package/core/shared/server-inventory/server-inventory-cache.js +313 -0
  461. package/core/shared/server-inventory/server-inventory-cache.js.map +1 -1
  462. package/core/shared/server-inventory/server-inventory-detail-cache.js +315 -0
  463. package/core/shared/server-inventory/server-inventory-detail.js +316 -0
  464. package/core/shared/server-inventory/server-inventory.d.ts +8 -0
  465. package/core/shared/server-inventory/server-inventory.d.ts.map +1 -1
  466. package/core/shared/server-inventory/server-inventory.js +320 -0
  467. package/core/shared/server-inventory/server-inventory.js.map +1 -1
  468. package/core/shared/shared-cache.js +312 -0
  469. package/core/shared/tool-inventory/tool-inventory-cache.js +312 -0
  470. package/core/shared/tool-inventory/tool-inventory.js +316 -0
  471. package/core/special.js +316 -0
  472. package/core/test-utilities/accessibility-tester.js +316 -0
  473. package/core/test-utilities/console.mock.js +316 -0
  474. package/core/test-utilities/jasmine-axe-matcher.js +316 -0
  475. package/core/test-utilities/wait-async.js +315 -0
  476. package/core/test.js +312 -0
  477. package/core/testing.js +316 -0
  478. package/core/workflow/persistent-local-storage.js +316 -0
  479. package/core/workflow/persistent-work-item-apply-state.js +316 -0
  480. package/core/workflow/persistent-work-item-state.js +316 -0
  481. package/core/workflow/persistent-work-item.js +316 -0
  482. package/core/workflow/persistent-workflow-builder.js +316 -0
  483. package/core/workflow/persistent-workflow-context.js +315 -0
  484. package/core/workflow/persistent-workflow-runner.js +316 -0
  485. package/core/workflow/persistent-workflow-snapshot.js +315 -0
  486. package/core/workflow/persistent-workflow-store.js +312 -0
  487. package/core/workflow/persistent-workflow.js +312 -0
  488. package/package.json +7 -6
  489. package/styles/css/main-v2.css +1 -1
  490. package/styles/fonts/SegoeUI/Bold/SegoeUIBold-5.27.woff +0 -0
  491. package/styles/fonts/SegoeUI/Light/SegoeUILight-5.27.woff +0 -0
  492. package/styles/fonts/SegoeUI/Normal/SegoeUI-5.27.woff +0 -0
  493. package/styles/fonts/SegoeUI/SemiBold/SegoeUISemiBold-5.27.woff +0 -0
  494. package/styles/fonts/SegoeUI/SemiLight/SegoeUISemiLight-5.27.woff +0 -0
  495. package/styles/fonts/ServMDL2/ServMDL2-4.66.woff +0 -0
  496. package/tools/build/webpack/index-html.transform.js +312 -0
  497. package/tools/build/webpack/shell.index-html.transform.js +316 -0
  498. package/tools/build/webpack/shell.webpack.config.js +312 -0
  499. package/tools/build/webpack/webpack.config.js +312 -0
  500. package/tools/code-formatter/.eslintrc.base.json +2 -1
  501. package/tools/code-formatter/lint.js +316 -0
  502. package/tools/code-formatter/utilities.d.ts.map +1 -1
  503. package/tools/code-formatter/utilities.js +313 -1
  504. package/tools/code-formatter/utilities.js.map +1 -1
  505. package/tools/gulp-doc-generator/index.js +316 -0
  506. package/tools/gulp-manifest-resource/index.js +315 -0
  507. package/tools/gulp-manifest-validator/index.js +316 -0
  508. package/tools/gulp-merge-json-in-folders/index.js +316 -0
  509. package/tools/gulp-merge-json-in-folders/json-merge.js +316 -0
  510. package/tools/gulp-ps-cim/index.js +316 -0
  511. package/tools/gulp-ps-code/index.d.ts.map +1 -1
  512. package/tools/gulp-ps-code/index.js +326 -2
  513. package/tools/gulp-ps-code/index.js.map +1 -1
  514. package/tools/gulp-ps-code/ps-code-convert.js +316 -0
  515. package/tools/gulp-ps-manifest/index.js +312 -0
  516. package/tools/gulp-ps-module/index.d.ts.map +1 -1
  517. package/tools/gulp-ps-module/index.js +328 -3
  518. package/tools/gulp-ps-module/index.js.map +1 -1
  519. package/tools/gulp-ps-resjson/index.js +316 -0
  520. package/tools/gulp-resjson/index.js +312 -0
  521. package/tools/gulp-resjson/resjson-convert.js +316 -0
  522. package/tools/gulp-schema-form/index.js +312 -0
  523. package/tools/gulp-svg-code/index.js +316 -0
  524. package/tools/gulp-svg-code/svg-code-convert.js +312 -0
  525. package/tools/gulp-update-notes-resource/index.js +312 -0
  526. package/tools/module-template/build/increment-package-version.ps1 +219 -0
  527. package/tools/module-template/build/pipelines/ci-build.yml +5 -5
  528. package/tools/module-template/build/pipelines/pull-request.yml +4 -4
  529. package/tools/module-template/build/push-incremented-version.ps1 +218 -1
  530. package/tools/module-template/build/update-powershell-code.ps1 +216 -0
  531. package/tools/module-template/gulpfile.ts/common/clean.ts +2 -0
  532. package/tools/module-template/gulpfile.ts/common/pack.ts +17 -5
  533. package/tools/module-template/gulpfile.ts/common/powershell.ts +40 -2
  534. package/tools/module-template/gulpfile.ts/common/test.ts +2 -3
  535. package/tools/module-template/gulpfile.ts/common/utilities.ts +40 -12
  536. package/tools/pack-nuget/index.d.ts.map +1 -1
  537. package/tools/pack-nuget/index.js +325 -3
  538. package/tools/pack-nuget/index.js.map +1 -1
  539. package/tools/scripts/Invoke-PesterTest.ps1 +218 -0
  540. package/tools/scripts/New-ExtensionPackage.ps1 +373 -6
  541. package/tools/scripts/Search-NonAsciiText.ps1 +219 -0
  542. package/tools/scripts/package-information/README.md +3 -0
  543. package/tools/scripts/package-information/ms-logo.png +0 -0
  544. package/tools/test-runner/index.js +316 -0
  545. package/tools/utilities/index.js +312 -0
  546. package/tools/wac-cli/src/angular15/configs/angular-json-config.js +315 -0
  547. package/tools/wac-cli/src/angular15/configs/ci-build-yml-config.js +315 -0
  548. package/tools/wac-cli/src/angular15/configs/config.js +312 -0
  549. package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.js +315 -0
  550. package/tools/wac-cli/src/angular15/configs/git-ignore-config.js +315 -0
  551. package/tools/wac-cli/src/angular15/configs/jasmine-test-config.js +316 -0
  552. package/tools/wac-cli/src/angular15/configs/package-json-config.js +316 -0
  553. package/tools/wac-cli/src/angular15/configs/replace-config.js +312 -0
  554. package/tools/wac-cli/src/angular15/configs/tsconfig-config.js +316 -0
  555. package/tools/wac-cli/src/angular15/configs/ui-test-automation-lagacy-config.js +316 -0
  556. package/tools/wac-cli/src/angular15/main.js +316 -0
  557. package/tools/wac-cli/src/angular15/upgrader/angular-json-upgrader.js +316 -0
  558. package/tools/wac-cli/src/angular15/upgrader/audit/ajax-response-updater.js +316 -0
  559. package/tools/wac-cli/src/angular15/upgrader/audit/css-syntax-error-updater.js +316 -0
  560. package/tools/wac-cli/src/angular15/upgrader/audit/declare-override-updater.js +312 -0
  561. package/tools/wac-cli/src/angular15/upgrader/audit/error-updater-angular15.js +316 -0
  562. package/tools/wac-cli/src/angular15/upgrader/audit/form-control-updater.js +312 -0
  563. package/tools/wac-cli/src/angular15/upgrader/audit/iif-updater-util.js +315 -0
  564. package/tools/wac-cli/src/angular15/upgrader/audit/load-children-callback-updater.js +316 -0
  565. package/tools/wac-cli/src/angular15/upgrader/audit/log-parser.js +316 -0
  566. package/tools/wac-cli/src/angular15/upgrader/audit/observable-throw-updater.js +316 -0
  567. package/tools/wac-cli/src/angular15/upgrader/audit/parameter-count-violation-updater.js +312 -0
  568. package/tools/wac-cli/src/angular15/upgrader/audit/string-replace-updater.js +316 -0
  569. package/tools/wac-cli/src/angular15/upgrader/audit/subjuct-next-updater-util.js +315 -0
  570. package/tools/wac-cli/src/angular15/upgrader/ci-build-yml-upgrader.js +316 -0
  571. package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.js +312 -0
  572. package/tools/wac-cli/src/angular15/upgrader/file-replacement-upgrader.js +315 -0
  573. package/tools/wac-cli/src/angular15/upgrader/git-ignore-upgrader.js +316 -0
  574. package/tools/wac-cli/src/angular15/upgrader/jasmine-test-upgrader.js +316 -0
  575. package/tools/wac-cli/src/angular15/upgrader/package-json-upgrader.js +316 -0
  576. package/tools/wac-cli/src/angular15/upgrader/remove-upgrader.js +316 -0
  577. package/tools/wac-cli/src/angular15/upgrader/replace-upgrader.js +316 -0
  578. package/tools/wac-cli/src/angular15/upgrader/tsconfig-upgrader.js +316 -0
  579. package/tools/wac-cli/src/angular15/upgrader/ui-test-automation-legacy-upgrader.js +316 -0
  580. package/tools/wac-cli/src/angular15/upgrader/version-json-upgrader.js +312 -0
  581. package/tools/wac-cli/src/angular15/utils/add-item.js +312 -0
  582. package/tools/wac-cli/src/angular15/utils/command-runner.js +316 -0
  583. package/tools/wac-cli/src/angular15/utils/file-comparison.js +316 -0
  584. package/tools/wac-cli/src/angular15/utils/file-replacement.js +315 -0
  585. package/tools/wac-cli/src/angular15/utils/file-writer.js +312 -0
  586. package/tools/wac-cli/src/angular15/utils/logger.js +312 -0
  587. package/tools/wac-cli/src/angular15/utils/main-debugger.js +312 -0
  588. package/tools/wac-cli/src/angular15/utils/relative-path.js +316 -0
  589. package/tools/wac-cli/src/angular15/utils/remove-item.js +316 -0
  590. package/tools/wac-cli/src/angular15/utils/space-generator.js +312 -0
  591. package/tools/wac-cli/src/angular15/utils/update-shell-references.js +312 -0
  592. package/tools/wac-cli/src/common.js +316 -0
  593. package/tools/wac-cli/src/create/main.js +316 -0
  594. package/tools/wac-cli/src/eslint/main.js +312 -0
  595. package/tools/wac-cli/src/index.js +316 -0
  596. package/tools/wac-cli/src/upgrade/error-updater.js +312 -0
  597. package/tools/wac-cli/src/upgrade/error-updaters/component-selector-updater.js +312 -0
  598. package/tools/wac-cli/src/upgrade/error-updaters/only-arrow-functions-updater.js +316 -0
  599. package/tools/wac-cli/src/upgrade/error-updaters/updater-lookup.js +312 -0
  600. package/tools/wac-cli/src/upgrade/file-updater.js +316 -0
  601. package/tools/wac-cli/src/upgrade/get-files.js +312 -0
  602. package/tools/wac-cli/src/upgrade/main.js +316 -0
  603. package/tools/wac-cli/src/upgrade/models/error-result.js +316 -0
  604. package/tools/wac-cli/src/upgrade/models/updater-interface.js +316 -0
  605. package/tools/wac-cli/src/upgrade/package-updater.js +316 -0
  606. package/tools/wac-cli/templates/wac-template/package.json +1 -1
  607. package/tools/wac-cli/templates/wac-template/src/favicon.ico +0 -0
  608. package/tools/wac-cli/templates/wac-template/src/karma.conf.js +317 -1
  609. package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Error.ps1 +218 -0
  610. package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Exception.ps1 +216 -0
  611. package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Process.ps1 +216 -1
  612. package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Service.ps1 +216 -1
  613. package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-WinRmState.ps1 +218 -1
  614. package/core/data/extension-broker/snap-in-listener.d.ts.map +0 -1
  615. package/core/data/extension-broker/snap-in-listener.js +0 -73
  616. package/core/data/extension-broker/snap-in-listener.js.map +0 -1
  617. package/microsoft-windows-admin-center-sdk-4.167.0.tgz +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../packages/core/data/net.ts"],"names":[],"mappings":"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","file":"net.d.ts","sourcesContent":["import { Observable, of } from 'rxjs';\r\nimport { AjaxError } from 'rxjs/ajax';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { Strings } from '../generated/strings';\r\nimport { Crypto } from './crypto';\r\nimport { ErrorExtended } from './error-extended';\r\nimport { HttpStatusCode } from './http-constants';\r\n\r\n/**\r\n * Escape binary string code\r\n * @param data A value representing original binary string code\r\n */\r\ndeclare function escape(data: string): string;\r\n\r\n/**\r\n * Unescape non-binary string code\r\n * @param data A value representing original non-binary string code\r\n */\r\ndeclare function unescape(data: string): string;\r\n\r\n/**\r\n * The options interface of getErrorMessage function\r\n */\r\nexport interface ErrorMessageOptions {\r\n /**\r\n * adding additional error message\r\n * addNativeError: native error code\r\n */\r\n addNativeError?: boolean;\r\n\r\n /**\r\n * Add error prefix for output string.\r\n *\r\n * \"Error: {error message}\"\r\n */\r\n errorPrefix?: boolean;\r\n\r\n /**\r\n * Use the detailRecordremoteExceptionMessage on the error instead of detailRecord.message\r\n */\r\n useRemoteExceptionMessage?: boolean;\r\n}\r\n\r\ninterface Credentials {\r\n username: string;\r\n password: string;\r\n passwordEncryptedWith: string;\r\n domain: string;\r\n}\r\n\r\n/**\r\n * Net communication class.\r\n * @dynamic\r\n */\r\nexport class Net {\r\n private static cachedErrorCodeMap: { [index: number]: string };\r\n private static get errorCodeMap(): { [index: number]: string } {\r\n if (!Net.cachedErrorCodeMap) {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n Net.cachedErrorCodeMap = {\r\n // added from https://msdn.microsoft.com/en-us/library/aa392154(v=vs.85).aspx\r\n 0: strings.ErrorCode.Code0.message,\r\n 5: strings.ErrorCode.Code5.message,\r\n 50: strings.ErrorCode.Code50.message,\r\n 87: strings.ErrorCode.Code87.message,\r\n 110: strings.ErrorCode.Code110.message,\r\n 1323: strings.ErrorCode.Code1323.message,\r\n 1326: strings.ErrorCode.Code1326.message,\r\n 1355: strings.ErrorCode.Code1355.message,\r\n 2224: strings.ErrorCode.Code2224.message,\r\n 2691: strings.ErrorCode.Code2691.message,\r\n 2692: strings.ErrorCode.Code2692.message,\r\n 0x80041087: strings.ErrorCode.Code8004108.message\r\n };\r\n }\r\n\r\n return Net.cachedErrorCodeMap;\r\n }\r\n\r\n /**\r\n * The static definition of Web API URLs.\r\n */\r\n public static apiVersionParam = 'api-version';\r\n public static apiVersion20190201 = '2019-02-01';\r\n public static apiRoot = '/api/{0}';\r\n public static batch = '/batch';\r\n public static streamSocket = '{0}/api/streams/socket/{1}';\r\n public static downlevel = 'features/downlevelSupport';\r\n public static downlevelInstall = Net.downlevel + '/install';\r\n public static downlevelComponents = Net.downlevel + '/components';\r\n public static extensionsSettings = '/settings/extension';\r\n public static installedExtensions = '/settings/extension/installed';\r\n public static extensions = '/extensions';\r\n public static updatesSettings = '/settings/updates';\r\n public static isExtensionUpdateAvailable = Net.extensions + '/isUpdateAvailable';\r\n public static cimClass = 'features/cim/namespaces/{0}/classes/{1}';\r\n public static cimQuery = 'features/cim/query';\r\n public static cimInvoke = '/methods/{0}/invoke';\r\n public static powerShellApiInvokeCommand = 'features/powershellApi/invokeCommand';\r\n public static powerShellApiSessions = 'features/powershellApi/pssessions/{0}';\r\n public static powerShellApiExecuteCommand: string = Net.powerShellApiSessions + '/invokeCommand';\r\n public static powerShellApiRetrieveOutput: string = Net.powerShellApiSessions + '?$expand=output';\r\n public static powerShellApiCancelCommand: string = Net.powerShellApiSessions + '/cancel';\r\n public static powerShellConsoleSessions = 'features/powershellConsole/pssessions/{0}';\r\n public static powerShellConsoleExecuteCommand: string = Net.powerShellConsoleSessions + '/invokeCommand';\r\n public static powerShellConsoleRetrieveOutput: string = Net.powerShellConsoleSessions + '?$expand=output';\r\n public static stopCommand: string = Net.powerShellConsoleSessions + '/cancel';\r\n public static tabCommand: string = Net.powerShellConsoleSessions + '/tab';\r\n public static userProfile = '/settings/user';\r\n public static applicationSettings = '/settings/all';\r\n public static adminSettings = '/settings/admin';\r\n public static user = '/user';\r\n\r\n public static fileTransferFormat = 'features/fileTransfer/files/{0}';\r\n public static fileTransferDownloadPost: string = Net.fileTransferFormat + '/download';\r\n public static fileTransferUpload: string = Net.fileTransferFormat + '/uploadlink';\r\n\r\n public static jeaFeature = 'features/jea/endpoint';\r\n public static jeaExport = Net.jeaFeature + '/export';\r\n\r\n public static gateway = '/gateway';\r\n public static gatewayAccessCheck = Net.gateway + '/access/check';\r\n public static gatewayStatus = Net.gateway + '/status';\r\n\r\n // {HttpMethod} {relativeNodeUrl} HTTP/1.1\r\n public static multiPartCallBodyUrl = '{0} {1} HTTP/1.1';\r\n\r\n /**\r\n * Gateway version 2.0.0 Node API set.\r\n */\r\n /**\r\n * WinREST service on Windows platform.\r\n */\r\n public static serviceWinRest = 'WinREST';\r\n\r\n /**\r\n * WinStream service on Windows platform.\r\n */\r\n public static serviceWinStream = 'WinStream';\r\n\r\n /**\r\n * LinuxBase on Linux platform.\r\n */\r\n public static serviceLinuxBase = 'LinuxBase';\r\n\r\n /**\r\n * ActiveDirectory on WinREST.\r\n */\r\n public static controllerActiveDirectory = 'ActiveDirectory';\r\n\r\n /**\r\n * CIM on WinREST.\r\n */\r\n public static controllerCim = 'CIM';\r\n\r\n /**\r\n * Extensions on WinREST.\r\n */\r\n public static controllerExtensions = 'Extensions';\r\n\r\n /**\r\n * FileTransfer on WinREST.\r\n */\r\n public static controllerFileTransfer = 'FileTransfer';\r\n\r\n /**\r\n * JEA on WinREST.\r\n */\r\n public static controllerJea = 'JEA';\r\n\r\n /**\r\n * Nuget on WinREST.\r\n */\r\n public static controllerNuget = 'Nuget';\r\n\r\n /**\r\n * PerformanceCounter on WinREST.\r\n */\r\n public static controllerPerformanceCounter = 'PerformanceCounter';\r\n\r\n /**\r\n * PowerShell on WinREST.\r\n */\r\n public static controllerPowerShell = 'PowerShell';\r\n\r\n /**\r\n * PseudoConsole on WinStream.\r\n */\r\n public static controllerPseudoConsole = 'PseudoConsole';\r\n\r\n /**\r\n * Ssh on LinuxBase.\r\n */\r\n public static controllerSsh = 'Ssh';\r\n\r\n /**\r\n * SshFile on LinuxBase.\r\n */\r\n public static controllerSshFile = 'SshFile';\r\n\r\n /**\r\n * State on WinREST.\r\n */\r\n public static controllerState = 'State';\r\n\r\n /**\r\n * Stream on WinStream.\r\n */\r\n public static controllerStream = 'Stream';\r\n\r\n /**\r\n * Stream on LinuxBase.\r\n */\r\n public static controllerStreamSsh = 'StreamSsh';\r\n\r\n /**\r\n * Tcp on WinStream and LinuxBase.\r\n */\r\n public static controllerTcp = 'Tcp';\r\n\r\n /**\r\n * Wdac on WinREST.\r\n */\r\n public static controllerWdac = 'Wdac';\r\n\r\n /**\r\n * Socket URL on WinStream.\r\n */\r\n public static streamSocketV200 = '{0}/api/services/' + Net.serviceWinStream + '/' + Net.controllerStream + '/socket/{1}';\r\n\r\n /**\r\n * Socket URL on LinuxBase.\r\n */\r\n public static sshStreamSocket = '{0}/api/services/' + Net.serviceLinuxBase + '/' + Net.controllerStreamSsh + '/socket';\r\n\r\n /**\r\n * Encodes the specified data as Base64-encoded URL.\r\n *\r\n * If the resultant URL is longer than 260 characters, it is converted to a\r\n * relative path where each segment (e.g. '/') defines the character length boundary.\r\n * The HTTP.SYS subsystem in Windows does now allow a URL segment larger than 260\r\n * characters without changing a Registry key and restarting the OS.\r\n * @param data The data to be encoded.\r\n * @return An encoded Base64 URL, potentially segmented by '/' every 260 characters.\r\n */\r\n public static toSegmentedBase64Url(data: string): string {\r\n const MAX_HTTP_SYS_URL_SEGMENT_LENGTH = 260;\r\n const base64Url = Net.utf8Base64UrlEncode(data);\r\n const parts = Net.splitByLength(base64Url, MAX_HTTP_SYS_URL_SEGMENT_LENGTH);\r\n return parts.join('/');\r\n }\r\n\r\n /**\r\n * Update URL with api-version=20190201.\r\n * @param url the original URL\r\n * @returns new url string added version parameter.\r\n */\r\n public static updateApiVersion20190201(url: string): string {\r\n const index = url.indexOf('?');\r\n const prefix = index > 0 ? '&' : '?';\r\n if (index > 0 && url.indexOf(`${Net.apiVersionParam}=`) > 0) {\r\n return url;\r\n }\r\n\r\n return `${url}${prefix}${Net.apiVersionParam}=${Net.apiVersion20190201}`;\r\n }\r\n\r\n /**\r\n * Convert IPV6 address to literal format.\r\n *\r\n * @param ipv6Address the ipv6 address format.\r\n */\r\n public static convertIPv6ToLiteral(ipv6Address: string): string {\r\n let data = '';\r\n for (let i = 0; i < ipv6Address.length; i++) {\r\n let ch = ipv6Address.charAt(i);\r\n if (ch === ':') {\r\n ch = '-';\r\n } else if (ch === '%') {\r\n ch = 's';\r\n }\r\n\r\n data += ch;\r\n }\r\n\r\n return `${data}.ipv6-literal.net`;\r\n }\r\n\r\n /**\r\n * Convert IPV6 address to literal format.\r\n *\r\n * @param ipv6Address the ipv6 address format.\r\n */\r\n public static convertLiteralToIPv6(literal: string): string {\r\n const firstSegment = literal.split('.ipv6-literal.net')[0];\r\n if (!firstSegment) {\r\n throw new Error('Not recognized as an IPv6 literal format: \\'{0}\\'!'.format(literal || 'null'));\r\n }\r\n\r\n let data = '';\r\n for (let i = 0; i < firstSegment.length; i++) {\r\n let ch = firstSegment.charAt(i);\r\n if (ch === '-') {\r\n ch = ':';\r\n } else if (ch === 's') {\r\n ch = '%';\r\n }\r\n\r\n data += ch;\r\n }\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * Encode a string with base64url.\r\n *\r\n * @param data the input string.\r\n * @return string the encoded string.\r\n */\r\n public static base64urlEncode(data: string): string {\r\n // REF: https://tools.ietf.org/html/rfc4648#section-5\r\n const base64 = window.btoa(data);\r\n let base64Url = '';\r\n\r\n for (let i = 0; i < base64.length; i++) {\r\n const ch = base64.charAt(i);\r\n\r\n switch (ch) {\r\n case '+':\r\n base64Url += '-';\r\n break;\r\n case '/':\r\n base64Url += '_';\r\n break;\r\n case '=':\r\n return base64Url;\r\n default:\r\n base64Url += ch;\r\n break;\r\n }\r\n }\r\n\r\n return base64Url;\r\n }\r\n\r\n /**\r\n * Decode a base64 url string.\r\n *\r\n * @param data the string to decode.\r\n * @return string the decoded string.\r\n */\r\n public static base64urlDecode(data: string): string {\r\n while (data.length % 4 !== 0) {\r\n data += '=';\r\n }\r\n\r\n data = data.replaceAll('-', '+').replaceAll('_', '/');\r\n return window.atob(data);\r\n }\r\n\r\n /**\r\n * Encode utf8 string.\r\n *\r\n * @param data the unencoded string.\r\n */\r\n public static utf8Encode(data: string): string {\r\n return unescape(encodeURIComponent(data));\r\n }\r\n\r\n /**\r\n * Decode utf8 string.\r\n *\r\n * @param data the encoded UTF8 string.\r\n */\r\n public static utf8Decode(data: string): string {\r\n return decodeURIComponent(escape(data));\r\n }\r\n\r\n /**\r\n * Encode with utf8 (first) and base64url (second).\r\n *\r\n * @param data data the original string to encode. The string can be full unicode character string.\r\n * @return string the encoded string used on a part of URL.\r\n */\r\n public static utf8Base64UrlEncode(data: string): string {\r\n const utf8: string = Net.utf8Encode(data);\r\n return Net.base64urlEncode(utf8);\r\n }\r\n\r\n /**\r\n * Decode with utf8 (second) and base64url (first).\r\n *\r\n * @param data data the encoded URL string to decode.\r\n * @return string the decoded unicode string.\r\n */\r\n public static utf8Base64UrlDecode(data: string): string {\r\n const utf8: string = Net.base64urlDecode(data);\r\n return Net.utf8Decode(utf8);\r\n }\r\n\r\n /**\r\n * Create a key name from key value pairs.\r\n *\r\n * @param properties the key value pairs.\r\n * @return string the key name.\r\n */\r\n public static cimCreateName(properties: any): string {\r\n const data: string = JSON.stringify(properties);\r\n const utf8: string = Net.utf8Encode(data);\r\n return Net.base64urlEncode(utf8);\r\n }\r\n\r\n /**\r\n * Get properties of the item from the response.\r\n *\r\n * @param data the item in the response object.\r\n * @return any the properties.\r\n */\r\n public static getItemProperties(data: any): any {\r\n if (data && data.properties) {\r\n return data.properties;\r\n }\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * Get properties of first item from the response.\r\n *\r\n * @param data the response object.\r\n * @return any the properties.\r\n */\r\n public static getFirstProperties(data: any): any {\r\n if (data && data.value && data.value.length) {\r\n if (data.value[0].properties) {\r\n return data.value[0].properties;\r\n }\r\n } else if (data && data.length) {\r\n return data[0];\r\n }\r\n\r\n return Net.getItemProperties(data);\r\n }\r\n\r\n /**\r\n * Get array of items from the response.\r\n *\r\n * @param data the response object.\r\n * @return any the item array.\r\n */\r\n public static getItemArray(data: any): any {\r\n if (data && data.value) {\r\n return data.value;\r\n }\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * Create JSON string with properties.\r\n *\r\n * @param data the input data.\r\n * @return string the JSON string with properties.\r\n */\r\n public static createPropertiesJSONString(data: any): string {\r\n return JSON.stringify({\r\n properties: data\r\n });\r\n }\r\n\r\n /**\r\n * Creates an encoded authentication header.\r\n *\r\n * @param usersName name of user.\r\n * @param password the password.\r\n * @return the token string.\r\n */\r\n public static createEncodedAuthenticationHeader(userNames: string[], password: string, passwordEncryptedWith: string = null): string {\r\n const credentials: any = {\r\n ...Net.toUsernameAndDomain(userNames),\r\n password: password\r\n };\r\n if (!MsftSme.isNullOrWhiteSpace(passwordEncryptedWith)) {\r\n credentials.passwordEncryptedWith = passwordEncryptedWith;\r\n }\r\n return window.btoa(Net.utf8Encode(JSON.stringify(credentials)));\r\n }\r\n\r\n public static toUsernameAndDomain(value: string): { domain: string, username: string };\r\n public static toUsernameAndDomain(value: string[]): { domain: string, username: string };\r\n public static toUsernameAndDomain(value: string | string[]): { domain: string, username: string } {\r\n let username: string[];\r\n if (Array.isArray(value)) {\r\n username = value;\r\n } else if (value.indexOf('@') >= 0) {\r\n // domain is empty if UPN is used.\r\n username = [\"\", value];\r\n } else {\r\n username = value.split('\\\\');\r\n }\r\n\r\n return {\r\n // if only a username was provided, use '.' (shorthand for the locale machine hostname)\r\n domain: username.length === 1 ? '.' : username[0],\r\n username: username.length === 1 ? username[0] : username[1]\r\n };\r\n }\r\n\r\n /**\r\n * Creates an encrypted authentication header value.\r\n *\r\n * @param jwk the JWK (Json Web Key)\r\n * @param usersName name of user.\r\n * @param password the password.\r\n * @param logonUser the gateway user\r\n * @param expirationTimeInMs manage as token expiration time in milliseconds\r\n * @return the token string.\r\n */\r\n public static createEncryptedAuthenticationHeader(\r\n jwk: string,\r\n userNames: string[],\r\n password: string,\r\n logonUser: string,\r\n expirationTimeInMs: number\r\n ): Observable<string> {\r\n const credentials: Credentials = {\r\n ...Net.toUsernameAndDomain(userNames),\r\n password: password,\r\n passwordEncryptedWith: undefined\r\n };\r\n const passwordData = Net.createPasswordData(credentials, logonUser, expirationTimeInMs);\r\n return Crypto.encryptRsaSha1(jwk, passwordData)\r\n .pipe(\r\n map(encryptedPassword => {\r\n credentials.password = encryptedPassword;\r\n credentials.passwordEncryptedWith = 'JWK2';\r\n return window.btoa(Net.utf8Encode(JSON.stringify(credentials)));\r\n }),\r\n catchError(() => of(\r\n window.btoa(Net.utf8Encode(JSON.stringify(credentials)))\r\n ))\r\n );\r\n }\r\n\r\n private static createPasswordData(\r\n credentials: Credentials,\r\n logOnUser: string,\r\n expirationTimeInMs: number\r\n ): string {\r\n const millisecondsInHour = 60 * 60 * 1000;\r\n const hoursInYear = 365 * 24;\r\n\r\n const currentTimeStamp = Date.now();\r\n const expirationOffsetInMilliseconds = expirationTimeInMs || (hoursInYear * millisecondsInHour);\r\n\r\n const passwordData = {\r\n p: credentials.password,\r\n l: logOnUser,\r\n t: currentTimeStamp,\r\n e: currentTimeStamp + expirationOffsetInMilliseconds\r\n };\r\n\r\n return JSON.stringify(passwordData);\r\n }\r\n\r\n /**\r\n * Creates encrypted data for auth header\r\n * @param jwk the JSON web key to be used to encrypt data\r\n * @param data the data to be encrypted\r\n * @returns an encrypted string\r\n */\r\n public static createEncryptedExtensionDataHeader(jwk: string, data: string) {\r\n return Crypto.encryptRsaSha1(jwk, data)\r\n .pipe(map(encryptedData => window.btoa(Net.utf8Encode(encryptedData))));\r\n }\r\n\r\n /**\r\n * Create /api/nodes URL with relativeUrl.\r\n *\r\n * @param gatewayName The name of gateway.\r\n * @param nodeName The name of node.\r\n * @param relativeUrl The relative Url.\r\n */\r\n public static gatewayNodeApi(gatewayName: string, nodeName: string, relativeUrl?: string): string {\r\n\r\n if (!relativeUrl) {\r\n relativeUrl = '';\r\n }\r\n\r\n if (!relativeUrl.startsWith('/')) {\r\n relativeUrl = '/' + relativeUrl;\r\n }\r\n\r\n if (!nodeName) {\r\n const message = MsftSme.getStrings<Strings>().MsftSmeShell.Core.Error.ArgumentNullError.message;\r\n throw new Error(message.format('Net/gatewayNodeApi', 'nodeName'));\r\n }\r\n\r\n return Net.gatewayApi(gatewayName, `/nodes/${nodeName}${relativeUrl}`);\r\n }\r\n\r\n /**\r\n * Create /api URL with relativeUrl.\r\n *\r\n * @param gatewayName The name of gateway.\r\n * @param nodeName The name of node.\r\n * @param relativeUrl The relative Url.\r\n */\r\n public static gatewayApi(gatewayName: string, relativeUrl?: string): string {\r\n if (!gatewayName) {\r\n const message = MsftSme.getStrings<Strings>().MsftSmeShell.Core.Error.ArgumentNullError.message;\r\n throw new Error(message.format('Net/gatewayApi', 'gatewayName'));\r\n }\r\n\r\n if (!relativeUrl) {\r\n relativeUrl = '';\r\n }\r\n\r\n if (!relativeUrl.startsWith('/')) {\r\n relativeUrl = '/' + relativeUrl;\r\n }\r\n\r\n gatewayName = gatewayName.toLowerCase();\r\n if (!gatewayName.startsWith('http://') && !gatewayName.startsWith('https://')) {\r\n gatewayName = 'https://' + gatewayName;\r\n }\r\n\r\n return `${gatewayName}/api${relativeUrl}`;\r\n }\r\n\r\n /**\r\n * Get error message from ajax result or any other error result and optionally includes native error message.\r\n *\r\n * @param error the error context from Net.ajax.\r\n * @param options add additional optional error message: such as native error messages if possible\r\n * @return string the error message.\r\n */\r\n public static getErrorMessage(error: any, options?: ErrorMessageOptions): string {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n const prefixFormat = strings.Error.PrefixFormat.message;\r\n const errorPrefix = options && options.errorPrefix;\r\n const xhr = error && error.xhr;\r\n const exception = error && error.exception;\r\n\r\n if (typeof error === 'string') {\r\n return errorPrefix ? prefixFormat.format(error) : error;\r\n }\r\n\r\n if (xhr && xhr.response) {\r\n const message = Net.parseErrorResponse(xhr.response, options);\r\n if (message) {\r\n return errorPrefix ? prefixFormat.format(message) : message;\r\n }\r\n }\r\n\r\n if (error && error.message) {\r\n const errorMessage = errorPrefix ? prefixFormat.format(error.message) : error.message;\r\n if(error.details && Array.isArray(error.details)) {\r\n // Add details to error message.\r\n return this.parseErrorDetails(error.details, errorMessage);\r\n }\r\n return errorMessage;\r\n }\r\n\r\n if (exception && exception.message) {\r\n return errorPrefix ? prefixFormat.format(exception.message) : exception.message;\r\n }\r\n\r\n const statusText = xhr && xhr.statusText;\r\n if (statusText) {\r\n return errorPrefix ? prefixFormat.format(statusText) : statusText;\r\n }\r\n\r\n throw new Error(strings.Error.NoResponseError.message);\r\n }\r\n\r\n private static parseErrorDetails(details: any, message: string): string {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n const detailsText = strings.Error.Details.text;\r\n const errorMessages = details.map((detail) => {\r\n try {\r\n const parsedDetail = JSON.parse(detail.message);\r\n if (parsedDetail?.error?.message) {\r\n return parsedDetail.error.message;\r\n }\r\n } catch (error) {\r\n // The message is not valid JSON\r\n return detail.message;\r\n }\r\n });\r\n // Joining the error messages with newline characters\r\n const detailsMessage = `${detailsText}\\n${errorMessages.join('\\n\\n')}`;\r\n // Joining the actual error message with details\r\n return `${message}\\n\\n${detailsMessage}`;\r\n }\r\n\r\n /**\r\n * Get error message from PowerShell ajax response.\r\n * Can be used by a PowerShell batch consumer to get error message in batch response.\r\n *\r\n * @param response the ajax response.\r\n * @return string the error message.\r\n */\r\n public static getPowerShellErrorMessage(response: any): string {\r\n const message = Net.parseErrorResponse(response);\r\n if (message) {\r\n return message;\r\n }\r\n\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n throw new Error(strings.Error.NoResponseError.message);\r\n }\r\n\r\n /**\r\n * Get error code from ajax result.\r\n *\r\n * @param error the error context from Net.ajax.\r\n * @return string the error code.\r\n */\r\n public static getErrorCode(error: any): string {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n const err = error && error.xhr && error.xhr.response && error.xhr.response.error;\r\n if (!err) {\r\n throw new Error(strings.Error.NoResponseError.message);\r\n }\r\n\r\n if (err.code) {\r\n return err.code;\r\n }\r\n\r\n throw new Error(strings.Error.NoCode.message);\r\n }\r\n\r\n /**\r\n * Get error message from ajax result excluding error stackTrace\r\n *\r\n * @param error the error context from Net.ajax.\r\n * @return string the error.\r\n */\r\n public static getErrorMessageWithoutStacktrace(error: any): string {\r\n let errorMessage: string = Net.getErrorMessage(error);\r\n if (errorMessage) {\r\n const stackTraceIndex: number = errorMessage.toLowerCase().indexOf('stacktrace');\r\n if (stackTraceIndex > 0) {\r\n errorMessage = errorMessage.substring(0, stackTraceIndex);\r\n }\r\n }\r\n\r\n return errorMessage;\r\n }\r\n\r\n /**\r\n * Translates error code to string\r\n *\r\n * @param code the error code\r\n * @return string the related error string.\r\n */\r\n public static translateErrorCode(code: number): string {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n const message: string = Net.errorCodeMap[code];\r\n if (message) {\r\n return strings.ErrorCode.Translated.message.format(message, code);\r\n }\r\n\r\n return strings.ErrorCode.Generic.message.format(code);\r\n }\r\n\r\n /**\r\n * Determine if this is an authorization login error. This code never work if it uses NTLM or Kerberos.\r\n *\r\n * @param error The ajax error object.\r\n */\r\n public static isUnauthorizedLogin(error: AjaxError): boolean {\r\n // new login 401 handling.\r\n const forbidden = error?.xhr?.response?.error?.forbidden;\r\n return error.status === HttpStatusCode.Unauthorized && forbidden && forbidden === 'UnauthorizedLogin';\r\n }\r\n\r\n /**\r\n * Determine if this is an authorization error.\r\n *\r\n * @param error The ajax error object.\r\n */\r\n public static isUnauthorized(error: AjaxError): boolean {\r\n const errorObject = error?.xhr?.response?.error;\r\n const forbidden = errorObject?.forbidden;\r\n if (forbidden) {\r\n // new 403 handling.\r\n return error.status === HttpStatusCode.Forbidden && forbidden === 'Unauthorized';\r\n } else {\r\n // legacy 401 handling. (this should be obsolete now)\r\n const unauthorized = errorObject?.unauthorized;\r\n return error.status === HttpStatusCode.Unauthorized && !(unauthorized && unauthorized === 'UnauthorizedLogin');\r\n }\r\n }\r\n\r\n /**\r\n * Determine if this is an forbidden error.\r\n *\r\n * @param error The ajax error object.\r\n */\r\n public static isForbidden(error: AjaxError): boolean {\r\n const forbidden = error?.xhr?.response?.error?.forbidden;\r\n if (forbidden) {\r\n // new forbidden.\r\n return error.status === HttpStatusCode.BadRequest && forbidden === 'Forbidden';\r\n } else {\r\n // legacy 403 handling.\r\n return error.status === HttpStatusCode.Forbidden;\r\n }\r\n }\r\n\r\n /**\r\n * Get property from an ErrorExtended error object\r\n *\r\n * @param error The ErrorExtended error object.\r\n * @param sourceName The source of the error.\r\n * @param propertyName The property to get from the error object.\r\n * @return The value of the property or null if the source doesn't match.\r\n */\r\n public static getErrorExtendedProperty<T1, T2>(error: ErrorExtended<T1>, sourceName: string, propertyName: string): T2 {\r\n if (error.extendedSource &&\r\n (error.extendedSource === sourceName || error.extendedSource.includes(sourceName))) {\r\n return <T2>error?.extended[propertyName];\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Parse error message from standard ajax error and PowerShell errors.\r\n *\r\n * @param response the ajax response.\r\n * @return string the error message.\r\n */\r\n private static parseErrorResponse(response: any, options?: ErrorMessageOptions): string {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n const err = response && response.error;\r\n if (err && err.message) {\r\n const errorMessage = err.message;\r\n\r\n if (options && options.addNativeError && err.detailRecord) {\r\n return strings.Error.AddNativeErrorCode.message.format(errorMessage, err.detailRecord.nativeErrorCode);\r\n }\r\n\r\n return errorMessage;\r\n }\r\n\r\n const psErrors: any[] = response && response.errors;\r\n if (psErrors && psErrors.length > 0) {\r\n if (psErrors.length === 1) {\r\n if (options && options.addNativeError && psErrors[0].detailRecord) {\r\n\r\n if (options && options.useRemoteExceptionMessage) {\r\n return strings.ErrorFormat.Single.Details.message.format(\r\n psErrors[0].errorType,\r\n psErrors[0].detailRecord.remoteExceptionMessage,\r\n psErrors[0].detailRecord.nativeErrorCode);\r\n }\r\n\r\n return strings.ErrorFormat.Single.Details.message.format(\r\n psErrors[0].errorType,\r\n psErrors[0].message,\r\n psErrors[0].detailRecord.nativeErrorCode);\r\n }\r\n\r\n if (options && options.useRemoteExceptionMessage && psErrors[0].detailRecord) {\r\n return strings.ErrorFormat.Single.message.format(\r\n psErrors[0].errorType,\r\n psErrors[0].detailRecord.remoteExceptionMessage);\r\n }\r\n return strings.ErrorFormat.Single.message.format(psErrors[0].errorType, psErrors[0].message);\r\n }\r\n\r\n let joinedMessage = '';\r\n for (let i = 0; i < psErrors.length; i++) {\r\n if (options && options.addNativeError && psErrors[i].detailRecord) {\r\n joinedMessage += strings.ErrorFormat.Multiple.Details.message.format(\r\n i + 1,\r\n psErrors[i].errorType,\r\n psErrors[i].message,\r\n psErrors[i].detailRecord.nativeErrorCode);\r\n } else if (options && options.useRemoteExceptionMessage && psErrors[i].detailRecord) {\r\n joinedMessage += strings.ErrorFormat.Multiple.message.format(\r\n i + 1,\r\n psErrors[i].errorType,\r\n psErrors[i].detailRecord.remoteExceptionMessage);\r\n } else {\r\n joinedMessage += strings.ErrorFormat.Multiple.message.format(i + 1, psErrors[i].errorType, psErrors[i].message);\r\n }\r\n }\r\n\r\n return joinedMessage;\r\n }\r\n\r\n if (response && response.exception) {\r\n return response.exception;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private static splitByLength(text: string, length: number): string[] {\r\n const parts = new Array<string>();\r\n\r\n if (text === null) {\r\n return parts;\r\n }\r\n\r\n const totalLength = text.length;\r\n const count = Math.ceil(totalLength / length);\r\n\r\n if (count < 2) {\r\n parts.push(text);\r\n return parts;\r\n }\r\n\r\n const lastPart = count - 1;\r\n let position = 0;\r\n\r\n for (let i = 0; i < lastPart; i++, position += length) {\r\n parts.push(text.substring(position, length));\r\n }\r\n\r\n parts.push(text.substring(position));\r\n\r\n return parts;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"sources":["../../../packages/core/data/net.ts"],"names":[],"mappings":"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","file":"net.d.ts","sourcesContent":["import { Observable, of } from 'rxjs';\r\nimport { AjaxError } from 'rxjs/ajax';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { Strings } from '../generated/strings';\r\nimport { Crypto } from './crypto';\r\nimport { ErrorExtended } from './error-extended';\r\nimport { HttpStatusCode } from './http-constants';\r\n\r\n/**\r\n * Escape binary string code\r\n * @param data A value representing original binary string code\r\n */\r\ndeclare function escape(data: string): string;\r\n\r\n/**\r\n * Unescape non-binary string code\r\n * @param data A value representing original non-binary string code\r\n */\r\ndeclare function unescape(data: string): string;\r\n\r\n/**\r\n * The options interface of getErrorMessage function\r\n */\r\nexport interface ErrorMessageOptions {\r\n /**\r\n * adding additional error message\r\n * addNativeError: native error code\r\n */\r\n addNativeError?: boolean;\r\n\r\n /**\r\n * Add error prefix for output string.\r\n *\r\n * \"Error: {error message}\"\r\n */\r\n errorPrefix?: boolean;\r\n\r\n /**\r\n * Use the detailRecordremoteExceptionMessage on the error instead of detailRecord.message\r\n */\r\n useRemoteExceptionMessage?: boolean;\r\n}\r\n\r\ninterface Credentials {\r\n username: string;\r\n password: string;\r\n passwordEncryptedWith: string;\r\n domain: string;\r\n}\r\n\r\n/**\r\n * Net communication class.\r\n * @dynamic\r\n */\r\nexport class Net {\r\n private static cachedErrorCodeMap: { [index: number]: string };\r\n private static get errorCodeMap(): { [index: number]: string } {\r\n if (!Net.cachedErrorCodeMap) {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n Net.cachedErrorCodeMap = {\r\n // added from https://msdn.microsoft.com/en-us/library/aa392154(v=vs.85).aspx\r\n 0: strings.ErrorCode.Code0.message,\r\n 5: strings.ErrorCode.Code5.message,\r\n 50: strings.ErrorCode.Code50.message,\r\n 87: strings.ErrorCode.Code87.message,\r\n 110: strings.ErrorCode.Code110.message,\r\n 1323: strings.ErrorCode.Code1323.message,\r\n 1326: strings.ErrorCode.Code1326.message,\r\n 1355: strings.ErrorCode.Code1355.message,\r\n 2224: strings.ErrorCode.Code2224.message,\r\n 2691: strings.ErrorCode.Code2691.message,\r\n 2692: strings.ErrorCode.Code2692.message,\r\n 0x80041087: strings.ErrorCode.Code8004108.message\r\n };\r\n }\r\n\r\n return Net.cachedErrorCodeMap;\r\n }\r\n\r\n /**\r\n * The static definition of Web API URLs.\r\n */\r\n public static apiVersionParam = 'api-version';\r\n public static apiVersion20190201 = '2019-02-01';\r\n public static apiRoot = '/api/{0}';\r\n public static batch = '/batch';\r\n public static streamSocket = '{0}/api/streams/socket/{1}';\r\n public static downlevel = 'features/downlevelSupport';\r\n public static downlevelInstall = Net.downlevel + '/install';\r\n public static downlevelComponents = Net.downlevel + '/components';\r\n public static extensionsSettings = '/settings/extension';\r\n public static installedExtensions = '/settings/extension/installed';\r\n public static extensions = '/extensions';\r\n public static updatesSettings = '/settings/updates';\r\n public static isExtensionUpdateAvailable = Net.extensions + '/isUpdateAvailable';\r\n public static cimClass = 'features/cim/namespaces/{0}/classes/{1}';\r\n public static cimQuery = 'features/cim/query';\r\n public static cimInvoke = '/methods/{0}/invoke';\r\n public static powerShellApiInvokeCommand = 'features/powershellApi/invokeCommand';\r\n public static powerShellApiSessions = 'features/powershellApi/pssessions/{0}';\r\n public static powerShellApiExecuteCommand: string = Net.powerShellApiSessions + '/invokeCommand';\r\n public static powerShellApiRetrieveOutput: string = Net.powerShellApiSessions + '?$expand=output';\r\n public static powerShellApiCancelCommand: string = Net.powerShellApiSessions + '/cancel';\r\n public static powerShellConsoleSessions = 'features/powershellConsole/pssessions/{0}';\r\n public static powerShellConsoleExecuteCommand: string = Net.powerShellConsoleSessions + '/invokeCommand';\r\n public static powerShellConsoleRetrieveOutput: string = Net.powerShellConsoleSessions + '?$expand=output';\r\n public static stopCommand: string = Net.powerShellConsoleSessions + '/cancel';\r\n public static tabCommand: string = Net.powerShellConsoleSessions + '/tab';\r\n public static userProfile = '/settings/user';\r\n public static applicationSettings = '/settings/all';\r\n public static adminSettings = '/settings/admin';\r\n public static user = '/user';\r\n\r\n public static fileTransferFormat = 'features/fileTransfer/files/{0}';\r\n public static fileTransferDownloadPost: string = Net.fileTransferFormat + '/download';\r\n public static fileTransferUpload: string = Net.fileTransferFormat + '/uploadlink';\r\n\r\n public static jeaFeature = 'features/jea/endpoint';\r\n public static jeaExport = Net.jeaFeature + '/export';\r\n\r\n public static gateway = '/gateway';\r\n public static gatewayAccessCheck = Net.gateway + '/access/check';\r\n public static gatewayStatus = Net.gateway + '/status';\r\n\r\n // {HttpMethod} {relativeNodeUrl} HTTP/1.1\r\n public static multiPartCallBodyUrl = '{0} {1} HTTP/1.1';\r\n\r\n /**\r\n * Gateway version 2.0.0 Node API set.\r\n */\r\n /**\r\n * WinREST service on Windows platform.\r\n */\r\n public static serviceWinRest = 'WinREST';\r\n\r\n /**\r\n * WinStream service on Windows platform.\r\n */\r\n public static serviceWinStream = 'WinStream';\r\n\r\n /**\r\n * LinuxBase on Linux platform.\r\n */\r\n public static serviceLinuxBase = 'LinuxBase';\r\n\r\n /**\r\n * ActiveDirectory on WinREST.\r\n */\r\n public static controllerActiveDirectory = 'ActiveDirectory';\r\n\r\n /**\r\n * CIM on WinREST.\r\n */\r\n public static controllerCim = 'CIM';\r\n\r\n /**\r\n * Extensions on WinREST.\r\n */\r\n public static controllerExtensions = 'Extensions';\r\n\r\n /**\r\n * FileTransfer on WinREST.\r\n */\r\n public static controllerFileTransfer = 'FileTransfer';\r\n\r\n /**\r\n * JEA on WinREST.\r\n */\r\n public static controllerJea = 'JEA';\r\n\r\n /**\r\n * Nuget on WinREST.\r\n */\r\n public static controllerNuget = 'Nuget';\r\n\r\n /**\r\n * PerformanceCounter on WinREST.\r\n */\r\n public static controllerPerformanceCounter = 'PerformanceCounter';\r\n\r\n /**\r\n * PowerShell on WinREST.\r\n */\r\n public static controllerPowerShell = 'PowerShell';\r\n\r\n /**\r\n * PseudoConsole on WinStream.\r\n */\r\n public static controllerPseudoConsole = 'PseudoConsole';\r\n\r\n /**\r\n * Ssh on LinuxBase.\r\n */\r\n public static controllerSsh = 'Ssh';\r\n\r\n /**\r\n * SshFile on LinuxBase.\r\n */\r\n public static controllerSshFile = 'SshFile';\r\n\r\n /**\r\n * State on WinREST.\r\n */\r\n public static controllerState = 'State';\r\n\r\n /**\r\n * Stream on WinStream.\r\n */\r\n public static controllerStream = 'Stream';\r\n\r\n /**\r\n * Stream on LinuxBase.\r\n */\r\n public static controllerStreamSsh = 'StreamSsh';\r\n\r\n /**\r\n * Tcp on WinStream and LinuxBase.\r\n */\r\n public static controllerTcp = 'Tcp';\r\n\r\n /**\r\n * Wdac on WinREST.\r\n */\r\n public static controllerWdac = 'Wdac';\r\n\r\n /**\r\n * Socket URL on WinStream.\r\n */\r\n public static streamSocketV200 = '{0}/api/services/' + Net.serviceWinStream + '/' + Net.controllerStream + '/socket/{1}';\r\n\r\n /**\r\n * Socket URL on LinuxBase.\r\n */\r\n public static sshStreamSocket = '{0}/api/services/' + Net.serviceLinuxBase + '/' + Net.controllerStreamSsh + '/socket';\r\n\r\n /**\r\n * Encodes the specified data as Base64-encoded URL.\r\n *\r\n * If the resultant URL is longer than 260 characters, it is converted to a\r\n * relative path where each segment (e.g. '/') defines the character length boundary.\r\n * The HTTP.SYS subsystem in Windows does now allow a URL segment larger than 260\r\n * characters without changing a Registry key and restarting the OS.\r\n * @param data The data to be encoded.\r\n * @return An encoded Base64 URL, potentially segmented by '/' every 260 characters.\r\n */\r\n public static toSegmentedBase64Url(data: string): string {\r\n const MAX_HTTP_SYS_URL_SEGMENT_LENGTH = 260;\r\n const base64Url = Net.utf8Base64UrlEncode(data);\r\n const parts = Net.splitByLength(base64Url, MAX_HTTP_SYS_URL_SEGMENT_LENGTH);\r\n return parts.join('/');\r\n }\r\n\r\n /**\r\n * Update URL with api-version=20190201.\r\n * @param url the original URL\r\n * @returns new url string added version parameter.\r\n */\r\n public static updateApiVersion20190201(url: string): string {\r\n const index = url.indexOf('?');\r\n const prefix = index > 0 ? '&' : '?';\r\n if (index > 0 && url.indexOf(`${Net.apiVersionParam}=`) > 0) {\r\n return url;\r\n }\r\n\r\n return `${url}${prefix}${Net.apiVersionParam}=${Net.apiVersion20190201}`;\r\n }\r\n\r\n /**\r\n * Convert IPV6 address to literal format.\r\n *\r\n * @param ipv6Address the ipv6 address format.\r\n */\r\n public static convertIPv6ToLiteral(ipv6Address: string): string {\r\n let data = '';\r\n for (let i = 0; i < ipv6Address.length; i++) {\r\n let ch = ipv6Address.charAt(i);\r\n if (ch === ':') {\r\n ch = '-';\r\n } else if (ch === '%') {\r\n ch = 's';\r\n }\r\n\r\n data += ch;\r\n }\r\n\r\n return `${data}.ipv6-literal.net`;\r\n }\r\n\r\n /**\r\n * Convert IPV6 address to literal format.\r\n *\r\n * @param ipv6Address the ipv6 address format.\r\n */\r\n public static convertLiteralToIPv6(literal: string): string {\r\n const firstSegment = literal.split('.ipv6-literal.net')[0];\r\n if (!firstSegment) {\r\n throw new Error('Not recognized as an IPv6 literal format: \\'{0}\\'!'.format(literal || 'null'));\r\n }\r\n\r\n let data = '';\r\n for (let i = 0; i < firstSegment.length; i++) {\r\n let ch = firstSegment.charAt(i);\r\n if (ch === '-') {\r\n ch = ':';\r\n } else if (ch === 's') {\r\n ch = '%';\r\n }\r\n\r\n data += ch;\r\n }\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * Encode a string with base64url.\r\n *\r\n * @param data the input string.\r\n * @return string the encoded string.\r\n */\r\n public static base64urlEncode(data: string): string {\r\n // REF: https://tools.ietf.org/html/rfc4648#section-5\r\n const base64 = window.btoa(data);\r\n let base64Url = '';\r\n\r\n for (let i = 0; i < base64.length; i++) {\r\n const ch = base64.charAt(i);\r\n\r\n switch (ch) {\r\n case '+':\r\n base64Url += '-';\r\n break;\r\n case '/':\r\n base64Url += '_';\r\n break;\r\n case '=':\r\n return base64Url;\r\n default:\r\n base64Url += ch;\r\n break;\r\n }\r\n }\r\n\r\n return base64Url;\r\n }\r\n\r\n /**\r\n * Decode a base64 url string.\r\n *\r\n * @param data the string to decode.\r\n * @return string the decoded string.\r\n */\r\n public static base64urlDecode(data: string): string {\r\n while (data.length % 4 !== 0) {\r\n data += '=';\r\n }\r\n\r\n data = data.replaceAll('-', '+').replaceAll('_', '/');\r\n return window.atob(data);\r\n }\r\n\r\n /**\r\n * Encode utf8 string.\r\n *\r\n * @param data the unencoded string.\r\n */\r\n public static utf8Encode(data: string): string {\r\n return unescape(encodeURIComponent(data));\r\n }\r\n\r\n /**\r\n * Decode utf8 string.\r\n *\r\n * @param data the encoded UTF8 string.\r\n */\r\n public static utf8Decode(data: string): string {\r\n return decodeURIComponent(escape(data));\r\n }\r\n\r\n /**\r\n * Encode with utf8 (first) and base64url (second).\r\n *\r\n * @param data data the original string to encode. The string can be full unicode character string.\r\n * @return string the encoded string used on a part of URL.\r\n */\r\n public static utf8Base64UrlEncode(data: string): string {\r\n const utf8: string = Net.utf8Encode(data);\r\n return Net.base64urlEncode(utf8);\r\n }\r\n\r\n /**\r\n * Decode with utf8 (second) and base64url (first).\r\n *\r\n * @param data data the encoded URL string to decode.\r\n * @return string the decoded unicode string.\r\n */\r\n public static utf8Base64UrlDecode(data: string): string {\r\n const utf8: string = Net.base64urlDecode(data);\r\n return Net.utf8Decode(utf8);\r\n }\r\n\r\n /**\r\n * Create a key name from key value pairs.\r\n *\r\n * @param properties the key value pairs.\r\n * @return string the key name.\r\n */\r\n public static cimCreateName(properties: any): string {\r\n const data: string = JSON.stringify(properties);\r\n const utf8: string = Net.utf8Encode(data);\r\n return Net.base64urlEncode(utf8);\r\n }\r\n\r\n /**\r\n * Get properties of the item from the response.\r\n *\r\n * @param data the item in the response object.\r\n * @return any the properties.\r\n */\r\n public static getItemProperties(data: any): any {\r\n if (data && data.properties) {\r\n return data.properties;\r\n }\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * Get properties of first item from the response.\r\n *\r\n * @param data the response object.\r\n * @return any the properties.\r\n */\r\n public static getFirstProperties(data: any): any {\r\n if (data && data.value && data.value.length) {\r\n if (data.value[0].properties) {\r\n return data.value[0].properties;\r\n }\r\n } else if (data && data.length) {\r\n return data[0];\r\n }\r\n\r\n return Net.getItemProperties(data);\r\n }\r\n\r\n /**\r\n * Get array of items from the response.\r\n *\r\n * @param data the response object.\r\n * @return any the item array.\r\n */\r\n public static getItemArray(data: any): any {\r\n if (data && data.value) {\r\n return data.value;\r\n }\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * Create JSON string with properties.\r\n *\r\n * @param data the input data.\r\n * @return string the JSON string with properties.\r\n */\r\n public static createPropertiesJSONString(data: any): string {\r\n return JSON.stringify({\r\n properties: data\r\n });\r\n }\r\n\r\n /**\r\n * Creates an encoded authentication header.\r\n *\r\n * @param usersName name of user.\r\n * @param password the password.\r\n * @return the token string.\r\n */\r\n public static createEncodedAuthenticationHeader(userNames: string[], password: string, passwordEncryptedWith: string = null): string {\r\n const credentials: any = {\r\n ...Net.toUsernameAndDomain(userNames),\r\n password: password\r\n };\r\n if (!MsftSme.isNullOrWhiteSpace(passwordEncryptedWith)) {\r\n credentials.passwordEncryptedWith = passwordEncryptedWith;\r\n }\r\n return window.btoa(Net.utf8Encode(JSON.stringify(credentials)));\r\n }\r\n\r\n public static toUsernameAndDomain(value: string): { domain: string, username: string };\r\n public static toUsernameAndDomain(value: string[]): { domain: string, username: string };\r\n public static toUsernameAndDomain(value: string | string[]): { domain: string, username: string } {\r\n let username: string[];\r\n if (Array.isArray(value)) {\r\n username = value;\r\n } else if (value.indexOf('@') >= 0) {\r\n // domain is empty if UPN is used.\r\n username = [\"\", value];\r\n } else {\r\n username = value.split('\\\\');\r\n }\r\n\r\n return {\r\n // if only a username was provided, use '.' (shorthand for the locale machine hostname)\r\n domain: username.length === 1 ? '.' : username[0],\r\n username: username.length === 1 ? username[0] : username[1]\r\n };\r\n }\r\n\r\n /**\r\n * Creates an encrypted authentication header value.\r\n *\r\n * @param jwk the JWK (Json Web Key)\r\n * @param usersName name of user.\r\n * @param password the password.\r\n * @param logonUser the gateway user\r\n * @param expirationTimeInMs manage as token expiration time in milliseconds\r\n * @return the token string.\r\n */\r\n public static createEncryptedAuthenticationHeader(\r\n jwk: string,\r\n userNames: string[],\r\n password: string,\r\n logonUser: string,\r\n expirationTimeInMs: number\r\n ): Observable<string> {\r\n const credentials: Credentials = {\r\n ...Net.toUsernameAndDomain(userNames),\r\n password: password,\r\n passwordEncryptedWith: undefined\r\n };\r\n const passwordData = Net.createPasswordData(credentials, logonUser, expirationTimeInMs);\r\n return Crypto.encryptRsaSha1(jwk, passwordData)\r\n .pipe(\r\n map(encryptedPassword => {\r\n credentials.password = encryptedPassword;\r\n credentials.passwordEncryptedWith = 'JWK2';\r\n return window.btoa(Net.utf8Encode(JSON.stringify(credentials)));\r\n }),\r\n catchError(() => of(\r\n window.btoa(Net.utf8Encode(JSON.stringify(credentials)))\r\n ))\r\n );\r\n }\r\n\r\n private static createPasswordData(\r\n credentials: Credentials,\r\n logOnUser: string,\r\n expirationTimeInMs: number\r\n ): string {\r\n const millisecondsInHour = 60 * 60 * 1000;\r\n const hoursInYear = 365 * 24;\r\n\r\n const currentTimeStamp = Date.now();\r\n const expirationOffsetInMilliseconds = expirationTimeInMs || (hoursInYear * millisecondsInHour);\r\n\r\n const passwordData = {\r\n p: credentials.password,\r\n l: logOnUser,\r\n t: currentTimeStamp,\r\n e: currentTimeStamp + expirationOffsetInMilliseconds\r\n };\r\n\r\n return JSON.stringify(passwordData);\r\n }\r\n\r\n /**\r\n * Creates encrypted data for auth header\r\n * @param jwk the JSON web key to be used to encrypt data\r\n * @param data the data to be encrypted\r\n * @returns an encrypted string\r\n */\r\n public static createEncryptedExtensionDataHeader(jwk: string, data: string) {\r\n return Crypto.encryptRsaSha1(jwk, data)\r\n .pipe(map(encryptedData => window.btoa(Net.utf8Encode(encryptedData))));\r\n }\r\n\r\n /**\r\n * Create /api/nodes URL with relativeUrl.\r\n *\r\n * @param gatewayName The name of gateway.\r\n * @param nodeName The name of node.\r\n * @param relativeUrl The relative Url.\r\n */\r\n public static gatewayNodeApi(gatewayName: string, nodeName: string, relativeUrl?: string): string {\r\n\r\n if (!relativeUrl) {\r\n relativeUrl = '';\r\n }\r\n\r\n if (!relativeUrl.startsWith('/')) {\r\n relativeUrl = '/' + relativeUrl;\r\n }\r\n\r\n if (!nodeName) {\r\n const message = MsftSme.getStrings<Strings>().MsftSmeShell.Core.Error.ArgumentNullError.message;\r\n throw new Error(message.format('Net/gatewayNodeApi', 'nodeName'));\r\n }\r\n\r\n return Net.gatewayApi(gatewayName, `/nodes/${nodeName}${relativeUrl}`);\r\n }\r\n\r\n /**\r\n * Create /api URL with relativeUrl.\r\n *\r\n * @param gatewayName The name of gateway.\r\n * @param nodeName The name of node.\r\n * @param relativeUrl The relative Url.\r\n */\r\n public static gatewayApi(gatewayName: string, relativeUrl?: string): string {\r\n if (!gatewayName) {\r\n const message = MsftSme.getStrings<Strings>().MsftSmeShell.Core.Error.ArgumentNullError.message;\r\n throw new Error(message.format('Net/gatewayApi', 'gatewayName'));\r\n }\r\n\r\n if (!relativeUrl) {\r\n relativeUrl = '';\r\n }\r\n\r\n if (!relativeUrl.startsWith('/')) {\r\n relativeUrl = '/' + relativeUrl;\r\n }\r\n\r\n gatewayName = gatewayName.toLowerCase();\r\n if (!gatewayName.startsWith('http://') && !gatewayName.startsWith('https://')) {\r\n gatewayName = 'https://' + gatewayName;\r\n }\r\n\r\n return `${gatewayName}/api${relativeUrl}`;\r\n }\r\n\r\n /**\r\n * Get error message from ajax result or any other error result and optionally includes native error message.\r\n *\r\n * @param error the error context from Net.ajax.\r\n * @param options add additional optional error message: such as native error messages if possible\r\n * @return string the error message.\r\n */\r\n public static getErrorMessage(error: any, options?: ErrorMessageOptions): string {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n const prefixFormat = strings.Error.PrefixFormat.message;\r\n const errorPrefix = options && options.errorPrefix;\r\n const xhr = error && error.xhr;\r\n const exception = error && error.exception;\r\n\r\n if (typeof error === 'string') {\r\n return errorPrefix ? prefixFormat.format(error) : error;\r\n }\r\n\r\n if (xhr && xhr.response) {\r\n const message = Net.parseErrorResponse(xhr.response, options);\r\n if (message) {\r\n return errorPrefix ? prefixFormat.format(message) : message;\r\n }\r\n }\r\n\r\n if (error && error.message) {\r\n const errorMessage = errorPrefix ? prefixFormat.format(error.message) : error.message;\r\n if(error.details && Array.isArray(error.details)) {\r\n // Add details to error message.\r\n return this.parseErrorDetails(error.details, errorMessage);\r\n }\r\n return errorMessage;\r\n }\r\n\r\n if (exception && exception.message) {\r\n return errorPrefix ? prefixFormat.format(exception.message) : exception.message;\r\n }\r\n\r\n const statusText = xhr && xhr.statusText;\r\n if (statusText) {\r\n return errorPrefix ? prefixFormat.format(statusText) : statusText;\r\n }\r\n\r\n throw new Error(strings.Error.NoResponseError.message);\r\n }\r\n\r\n private static parseErrorDetails(details: any, message: string): string {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n const detailsText = strings.Error.Details.text;\r\n const errorMessages = details.map((detail) => {\r\n try {\r\n const parsedDetail = JSON.parse(detail.message);\r\n if (parsedDetail?.error?.message) {\r\n return parsedDetail.error.message;\r\n }\r\n } catch (error) {\r\n // The message is not valid JSON\r\n return detail.message;\r\n }\r\n });\r\n // Joining the error messages with newline characters\r\n const detailsMessage = `${detailsText}\\n${errorMessages.join('\\n\\n')}`;\r\n // Joining the actual error message with details\r\n return `${message}\\n\\n${detailsMessage}`;\r\n }\r\n\r\n /**\r\n * Get error message from PowerShell ajax response.\r\n * Can be used by a PowerShell batch consumer to get error message in batch response.\r\n *\r\n * @param response the ajax response.\r\n * @return string the error message.\r\n */\r\n public static getPowerShellErrorMessage(response: any): string {\r\n const message = Net.parseErrorResponse(response);\r\n if (message) {\r\n return message;\r\n }\r\n\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n throw new Error(strings.Error.NoResponseError.message);\r\n }\r\n\r\n /**\r\n * Get error code from ajax result.\r\n *\r\n * @param error the error context from Net.ajax.\r\n * @return string the error code.\r\n */\r\n public static getErrorCode(error: any): string {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n const err = error && error.xhr && error.xhr.response && error.xhr.response.error;\r\n if (!err) {\r\n throw new Error(strings.Error.NoResponseError.message);\r\n }\r\n\r\n if (err.code) {\r\n return err.code;\r\n }\r\n\r\n throw new Error(strings.Error.NoCode.message);\r\n }\r\n\r\n /**\r\n * Get error message from ajax result excluding error stackTrace\r\n *\r\n * @param error the error context from Net.ajax.\r\n * @return string the error.\r\n */\r\n public static getErrorMessageWithoutStacktrace(error: any): string {\r\n let errorMessage: string = Net.getErrorMessage(error);\r\n if (errorMessage) {\r\n const stackTraceIndex: number = errorMessage.toLowerCase().indexOf('stacktrace');\r\n if (stackTraceIndex > 0) {\r\n errorMessage = errorMessage.substring(0, stackTraceIndex);\r\n }\r\n }\r\n\r\n return errorMessage;\r\n }\r\n\r\n /**\r\n * Translates error code to string\r\n *\r\n * @param code the error code\r\n * @return string the related error string.\r\n */\r\n public static translateErrorCode(code: number): string {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n const message: string = Net.errorCodeMap[code];\r\n if (message) {\r\n return strings.ErrorCode.Translated.message.format(message, code);\r\n }\r\n\r\n return strings.ErrorCode.Generic.message.format(code);\r\n }\r\n\r\n /**\r\n * Determine if this is an authorization login error. This code never work if it uses NTLM or Kerberos.\r\n *\r\n * @param error The ajax error object.\r\n */\r\n public static isUnauthorizedLogin(error: AjaxError): boolean {\r\n // new login 401 handling.\r\n const forbidden = error?.xhr?.response?.error?.forbidden;\r\n return error.status === HttpStatusCode.Unauthorized && forbidden && forbidden === 'UnauthorizedLogin';\r\n }\r\n\r\n /**\r\n * Determine if this is an authorization error.\r\n *\r\n * @param error The ajax error object.\r\n */\r\n public static isUnauthorized(error: AjaxError): boolean {\r\n const errorObject = error?.xhr?.response?.error;\r\n const forbidden = errorObject?.forbidden;\r\n if (forbidden) {\r\n // new 403 handling.\r\n return error.status === HttpStatusCode.Forbidden && forbidden === 'Unauthorized';\r\n } else {\r\n // legacy 401 handling. (this should be obsolete now)\r\n const unauthorized = errorObject?.unauthorized;\r\n return error.status === HttpStatusCode.Unauthorized && !(unauthorized && unauthorized === 'UnauthorizedLogin');\r\n }\r\n }\r\n\r\n /**\r\n * Determine if this is an forbidden error.\r\n *\r\n * @param error The ajax error object.\r\n */\r\n public static isForbidden(error: AjaxError): boolean {\r\n const forbidden = error?.xhr?.response?.error?.forbidden;\r\n if (forbidden) {\r\n // new forbidden.\r\n return error.status === HttpStatusCode.BadRequest && forbidden === 'Forbidden';\r\n } else {\r\n // legacy 403 handling.\r\n return error.status === HttpStatusCode.Forbidden;\r\n }\r\n }\r\n\r\n /**\r\n * Get property from an ErrorExtended error object\r\n *\r\n * @param error The ErrorExtended error object.\r\n * @param sourceName The source of the error.\r\n * @param propertyName The property to get from the error object.\r\n * @return The value of the property or null if the source doesn't match.\r\n */\r\n public static getErrorExtendedProperty<T1, T2>(error: ErrorExtended<T1>, sourceName: string, propertyName: string): T2 {\r\n if (error.extendedSource &&\r\n (error.extendedSource === sourceName || error.extendedSource.includes(sourceName))) {\r\n return <T2>error?.extended[propertyName];\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Parse error message from standard ajax error and PowerShell errors.\r\n *\r\n * @param response the ajax response.\r\n * @return string the error message.\r\n */\r\n private static parseErrorResponse(response: any, options?: ErrorMessageOptions): string {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n const err = response && response.error;\r\n if (err && err.message) {\r\n const errorMessage = err.message;\r\n\r\n if (options && options.addNativeError && err.detailRecord) {\r\n return strings.Error.AddNativeErrorCode.message.format(errorMessage, err.detailRecord.nativeErrorCode);\r\n }\r\n\r\n return errorMessage;\r\n }\r\n\r\n const psErrors: any[] = response && response.errors;\r\n if (psErrors && psErrors.length > 0) {\r\n if (psErrors.length === 1) {\r\n if (options && options.addNativeError && psErrors[0].detailRecord) {\r\n\r\n if (options && options.useRemoteExceptionMessage) {\r\n return strings.ErrorFormat.Single.Details.message.format(\r\n psErrors[0].errorType,\r\n psErrors[0].detailRecord.remoteExceptionMessage,\r\n psErrors[0].detailRecord.nativeErrorCode);\r\n }\r\n\r\n return strings.ErrorFormat.Single.Details.message.format(\r\n psErrors[0].errorType,\r\n psErrors[0].message,\r\n psErrors[0].detailRecord.nativeErrorCode);\r\n }\r\n\r\n if (options && options.useRemoteExceptionMessage && psErrors[0].detailRecord) {\r\n return strings.ErrorFormat.Single.message.format(\r\n psErrors[0].errorType,\r\n psErrors[0].detailRecord.remoteExceptionMessage);\r\n }\r\n return strings.ErrorFormat.Single.message.format(psErrors[0].errorType, psErrors[0].message);\r\n }\r\n\r\n let joinedMessage = '';\r\n for (let i = 0; i < psErrors.length; i++) {\r\n if (options && options.addNativeError && psErrors[i].detailRecord) {\r\n joinedMessage += strings.ErrorFormat.Multiple.Details.message.format(\r\n i + 1,\r\n psErrors[i].errorType,\r\n psErrors[i].message,\r\n psErrors[i].detailRecord.nativeErrorCode);\r\n } else if (options && options.useRemoteExceptionMessage && psErrors[i].detailRecord) {\r\n joinedMessage += strings.ErrorFormat.Multiple.message.format(\r\n i + 1,\r\n psErrors[i].errorType,\r\n psErrors[i].detailRecord.remoteExceptionMessage);\r\n } else {\r\n joinedMessage += strings.ErrorFormat.Multiple.message.format(i + 1, psErrors[i].errorType, psErrors[i].message);\r\n }\r\n }\r\n\r\n return joinedMessage;\r\n }\r\n\r\n if (response && response.exception) {\r\n return response.exception;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private static splitByLength(text: string, length: number): string[] {\r\n const parts = new Array<string>();\r\n\r\n if (text === null) {\r\n return parts;\r\n }\r\n\r\n const totalLength = text.length;\r\n const count = Math.ceil(totalLength / length);\r\n\r\n if (count < 2) {\r\n parts.push(text);\r\n return parts;\r\n }\r\n\r\n const lastPart = count - 1;\r\n let position = 0;\r\n\r\n for (let i = 0; i < lastPart; i++, position += length) {\r\n parts.push(text.substring(position, position + length));\r\n }\r\n\r\n parts.push(text.substring(position));\r\n\r\n return parts;\r\n }\r\n}\r\n"]}
package/core/data/net.js CHANGED
@@ -738,7 +738,7 @@ export class Net {
738
738
  const lastPart = count - 1;
739
739
  let position = 0;
740
740
  for (let i = 0; i < lastPart; i++, position += length) {
741
- parts.push(text.substring(position, length));
741
+ parts.push(text.substring(position, position + length));
742
742
  }
743
743
  parts.push(text.substring(position));
744
744
  return parts;
@@ -746,3 +746,319 @@ export class Net {
746
746
  }
747
747
 
748
748
  //# sourceMappingURL=net.js.map
749
+
750
+ // SIG // Begin signature block
751
+ // SIG // MIIoQAYJKoZIhvcNAQcCoIIoMTCCKC0CAQExDzANBglg
752
+ // SIG // hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor
753
+ // SIG // BgEEAYI3AgEeMCQCAQEEEBDgyQbOONQRoqMAEEvTUJAC
754
+ // SIG // AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg
755
+ // SIG // 4ngYDGhavZNjD3TiQMRcNIU67vpaTjZNJYyzsfeljAyg
756
+ // SIG // gg12MIIF9DCCA9ygAwIBAgITMwAAA68wQA5Mo00FQQAA
757
+ // SIG // AAADrzANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJV
758
+ // SIG // UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH
759
+ // SIG // UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
760
+ // SIG // cmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQgQ29kZSBT
761
+ // SIG // aWduaW5nIFBDQSAyMDExMB4XDTIzMTExNjE5MDkwMFoX
762
+ // SIG // DTI0MTExNDE5MDkwMFowdDELMAkGA1UEBhMCVVMxEzAR
763
+ // SIG // BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v
764
+ // SIG // bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv
765
+ // SIG // bjEeMBwGA1UEAxMVTWljcm9zb2Z0IENvcnBvcmF0aW9u
766
+ // SIG // MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
767
+ // SIG // zkvLNa2un9GBrYNDoRGkGv7d0PqtTBB4ViYakFbjuWpm
768
+ // SIG // F0KcvDAzzaCWJPhVgIXjz+S8cHEoHuWnp/n+UOljT3eh
769
+ // SIG // A8Rs6Lb1aTYub3tB/e0txewv2sQ3yscjYdtTBtFvEm9L
770
+ // SIG // 8Yv76K3Cxzi/Yvrdg+sr7w8y5RHn1Am0Ff8xggY1xpWC
771
+ // SIG // XFI+kQM18njQDcUqSlwBnexYfqHBhzz6YXA/S0EziYBu
772
+ // SIG // 2O2mM7R6gSyYkEOHgIGTVOGnOvvC5xBgC4KNcnQuQSRL
773
+ // SIG // iUI2CmzU8vefR6ykruyzt1rNMPI8OqWHQtSDKXU5JNqb
774
+ // SIG // k4GNjwzcwbSzOHrxuxWHq91l/vLdVDGDUwIDAQABo4IB
775
+ // SIG // czCCAW8wHwYDVR0lBBgwFgYKKwYBBAGCN0wIAQYIKwYB
776
+ // SIG // BQUHAwMwHQYDVR0OBBYEFEcccTTyBDxkjvJKs/m4AgEF
777
+ // SIG // hl7BMEUGA1UdEQQ+MDykOjA4MR4wHAYDVQQLExVNaWNy
778
+ // SIG // b3NvZnQgQ29ycG9yYXRpb24xFjAUBgNVBAUTDTIzMDAx
779
+ // SIG // Mis1MDE4MjYwHwYDVR0jBBgwFoAUSG5k5VAF04KqFzc3
780
+ // SIG // IrVtqMp1ApUwVAYDVR0fBE0wSzBJoEegRYZDaHR0cDov
781
+ // SIG // L3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWlj
782
+ // SIG // Q29kU2lnUENBMjAxMV8yMDExLTA3LTA4LmNybDBhBggr
783
+ // SIG // BgEFBQcBAQRVMFMwUQYIKwYBBQUHMAKGRWh0dHA6Ly93
784
+ // SIG // d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY2VydHMvTWlj
785
+ // SIG // Q29kU2lnUENBMjAxMV8yMDExLTA3LTA4LmNydDAMBgNV
786
+ // SIG // HRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4ICAQCEsRbf
787
+ // SIG // 80dn60xTweOWHZoWaQdpzSaDqIvqpYHE5ZzuEMJWDdcP
788
+ // SIG // 72MGw8v6BSaJQ+a+hTCXdERnIBDPKvU4ENjgu4EBJocH
789
+ // SIG // lSe8riiZUAR+z+z4OUYqoFd3EqJyfjjOJBR2z94Dy4ss
790
+ // SIG // 7LEkHUbj2NZiFqBoPYu2OGQvEk+1oaUsnNKZ7Nl7FHtV
791
+ // SIG // 7CI2lHBru83e4IPe3glIi0XVZJT5qV6Gx/QhAFmpEVBj
792
+ // SIG // SAmDdgII4UUwuI9yiX6jJFNOEek6MoeP06LMJtbqA3Bq
793
+ // SIG // +ZWmJ033F97uVpyaiS4bj3vFI/ZBgDnMqNDtZjcA2vi4
794
+ // SIG // RRMweggd9vsHyTLpn6+nXoLy03vMeebq0C3k44pgUIEu
795
+ // SIG // PQUlJIRTe6IrN3GcjaZ6zHGuQGWgu6SyO9r7qkrEpS2p
796
+ // SIG // RjnGZjx2RmCamdAWnDdu+DmfNEPAddYjaJJ7PTnd+PGz
797
+ // SIG // G+WeH4ocWgVnm5fJFhItjj70CJjgHqt57e1FiQcyWCwB
798
+ // SIG // hKX2rGgN2UICHBF3Q/rsKOspjMw2OlGphTn2KmFl5J7c
799
+ // SIG // Qxru54A9roClLnHGCiSUYos/iwFHI/dAVXEh0S0KKfTf
800
+ // SIG // M6AC6/9bCbsD61QLcRzRIElvgCgaiMWFjOBL99pemoEl
801
+ // SIG // AHsyzG6uX93fMfas09N9YzA0/rFAKAsNDOcFbQlEHKiD
802
+ // SIG // T7mI20tVoCcmSIhJATCCB3owggVioAMCAQICCmEOkNIA
803
+ // SIG // AAAAAAMwDQYJKoZIhvcNAQELBQAwgYgxCzAJBgNVBAYT
804
+ // SIG // AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQH
805
+ // SIG // EwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y
806
+ // SIG // cG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBSb290
807
+ // SIG // IENlcnRpZmljYXRlIEF1dGhvcml0eSAyMDExMB4XDTEx
808
+ // SIG // MDcwODIwNTkwOVoXDTI2MDcwODIxMDkwOVowfjELMAkG
809
+ // SIG // A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAO
810
+ // SIG // BgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29m
811
+ // SIG // dCBDb3Jwb3JhdGlvbjEoMCYGA1UEAxMfTWljcm9zb2Z0
812
+ // SIG // IENvZGUgU2lnbmluZyBQQ0EgMjAxMTCCAiIwDQYJKoZI
813
+ // SIG // hvcNAQEBBQADggIPADCCAgoCggIBAKvw+nIQHC6t2G6q
814
+ // SIG // ghBNNLrytlghn0IbKmvpWlCquAY4GgRJun/DDB7dN2vG
815
+ // SIG // EtgL8DjCmQawyDnVARQxQtOJDXlkh36UYCRsr55JnOlo
816
+ // SIG // XtLfm1OyCizDr9mpK656Ca/XllnKYBoF6WZ26DJSJhIv
817
+ // SIG // 56sIUM+zRLdd2MQuA3WraPPLbfM6XKEW9Ea64DhkrG5k
818
+ // SIG // NXimoGMPLdNAk/jj3gcN1Vx5pUkp5w2+oBN3vpQ97/vj
819
+ // SIG // K1oQH01WKKJ6cuASOrdJXtjt7UORg9l7snuGG9k+sYxd
820
+ // SIG // 6IlPhBryoS9Z5JA7La4zWMW3Pv4y07MDPbGyr5I4ftKd
821
+ // SIG // gCz1TlaRITUlwzluZH9TupwPrRkjhMv0ugOGjfdf8NBS
822
+ // SIG // v4yUh7zAIXQlXxgotswnKDglmDlKNs98sZKuHCOnqWbs
823
+ // SIG // YR9q4ShJnV+I4iVd0yFLPlLEtVc/JAPw0XpbL9Uj43Bd
824
+ // SIG // D1FGd7P4AOG8rAKCX9vAFbO9G9RVS+c5oQ/pI0m8GLhE
825
+ // SIG // fEXkwcNyeuBy5yTfv0aZxe/CHFfbg43sTUkwp6uO3+xb
826
+ // SIG // n6/83bBm4sGXgXvt1u1L50kppxMopqd9Z4DmimJ4X7Iv
827
+ // SIG // hNdXnFy/dygo8e1twyiPLI9AN0/B4YVEicQJTMXUpUMv
828
+ // SIG // dJX3bvh4IFgsE11glZo+TzOE2rCIF96eTvSWsLxGoGyY
829
+ // SIG // 0uDWiIwLAgMBAAGjggHtMIIB6TAQBgkrBgEEAYI3FQEE
830
+ // SIG // AwIBADAdBgNVHQ4EFgQUSG5k5VAF04KqFzc3IrVtqMp1
831
+ // SIG // ApUwGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwCwYD
832
+ // SIG // VR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j
833
+ // SIG // BBgwFoAUci06AjGQQ7kUBU7h6qfHMdEjiTQwWgYDVR0f
834
+ // SIG // BFMwUTBPoE2gS4ZJaHR0cDovL2NybC5taWNyb3NvZnQu
835
+ // SIG // Y29tL3BraS9jcmwvcHJvZHVjdHMvTWljUm9vQ2VyQXV0
836
+ // SIG // MjAxMV8yMDExXzAzXzIyLmNybDBeBggrBgEFBQcBAQRS
837
+ // SIG // MFAwTgYIKwYBBQUHMAKGQmh0dHA6Ly93d3cubWljcm9z
838
+ // SIG // b2Z0LmNvbS9wa2kvY2VydHMvTWljUm9vQ2VyQXV0MjAx
839
+ // SIG // MV8yMDExXzAzXzIyLmNydDCBnwYDVR0gBIGXMIGUMIGR
840
+ // SIG // BgkrBgEEAYI3LgMwgYMwPwYIKwYBBQUHAgEWM2h0dHA6
841
+ // SIG // Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvZG9jcy9w
842
+ // SIG // cmltYXJ5Y3BzLmh0bTBABggrBgEFBQcCAjA0HjIgHQBM
843
+ // SIG // AGUAZwBhAGwAXwBwAG8AbABpAGMAeQBfAHMAdABhAHQA
844
+ // SIG // ZQBtAGUAbgB0AC4gHTANBgkqhkiG9w0BAQsFAAOCAgEA
845
+ // SIG // Z/KGpZjgVHkaLtPYdGcimwuWEeFjkplCln3SeQyQwWVf
846
+ // SIG // Liw++MNy0W2D/r4/6ArKO79HqaPzadtjvyI1pZddZYSQ
847
+ // SIG // fYtGUFXYDJJ80hpLHPM8QotS0LD9a+M+By4pm+Y9G6XU
848
+ // SIG // tR13lDni6WTJRD14eiPzE32mkHSDjfTLJgJGKsKKELuk
849
+ // SIG // qQUMm+1o+mgulaAqPyprWEljHwlpblqYluSD9MCP80Yr
850
+ // SIG // 3vw70L01724lruWvJ+3Q3fMOr5kol5hNDj0L8giJ1h/D
851
+ // SIG // Mhji8MUtzluetEk5CsYKwsatruWy2dsViFFFWDgycSca
852
+ // SIG // f7H0J/jeLDogaZiyWYlobm+nt3TDQAUGpgEqKD6CPxNN
853
+ // SIG // ZgvAs0314Y9/HG8VfUWnduVAKmWjw11SYobDHWM2l4bf
854
+ // SIG // 2vP48hahmifhzaWX0O5dY0HjWwechz4GdwbRBrF1HxS+
855
+ // SIG // YWG18NzGGwS+30HHDiju3mUv7Jf2oVyW2ADWoUa9WfOX
856
+ // SIG // pQlLSBCZgB/QACnFsZulP0V3HjXG0qKin3p6IvpIlR+r
857
+ // SIG // +0cjgPWe+L9rt0uX4ut1eBrs6jeZeRhL/9azI2h15q/6
858
+ // SIG // /IvrC4DqaTuv/DDtBEyO3991bWORPdGdVk5Pv4BXIqF4
859
+ // SIG // ETIheu9BCrE/+6jMpF3BoYibV3FWTkhFwELJm3ZbCoBI
860
+ // SIG // a/15n8G9bW1qyVJzEw16UM0xghoiMIIaHgIBATCBlTB+
861
+ // SIG // MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv
862
+ // SIG // bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWlj
863
+ // SIG // cm9zb2Z0IENvcnBvcmF0aW9uMSgwJgYDVQQDEx9NaWNy
864
+ // SIG // b3NvZnQgQ29kZSBTaWduaW5nIFBDQSAyMDExAhMzAAAD
865
+ // SIG // rzBADkyjTQVBAAAAAAOvMA0GCWCGSAFlAwQCAQUAoIGu
866
+ // SIG // MBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisG
867
+ // SIG // AQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMC8GCSqGSIb3
868
+ // SIG // DQEJBDEiBCAqcbIwMJa6o0UsqqEvDAkmFT/vClhnXShO
869
+ // SIG // ZAMVKZWN0TBCBgorBgEEAYI3AgEMMTQwMqAUgBIATQBp
870
+ // SIG // AGMAcgBvAHMAbwBmAHShGoAYaHR0cDovL3d3dy5taWNy
871
+ // SIG // b3NvZnQuY29tMA0GCSqGSIb3DQEBAQUABIIBAFtF6BSq
872
+ // SIG // Wqib3yonPQ4YDY4ErhubBywqYvUEWU+a6qZJSRDT18xA
873
+ // SIG // SCsIuLWz+uf+dwKs5oYTTJQjnaibWVeFkZHxDwx7Q4oy
874
+ // SIG // to8FoD5JRWUimW2Ith34hTOQBQZZ9Pps0zBPmqiBHlp4
875
+ // SIG // jg/Gg59j+H22P9ILljDsMcYpniJbKPi24jGGAYucsAo3
876
+ // SIG // tw575d3MQJvzCuboz4fp8fnEdkBWXfO+fhS3ABE36hfc
877
+ // SIG // 1cbd8BIbigsACA0PCHq/Y/6Dor6zmCbagHEwqQXb1hpp
878
+ // SIG // PZveWbqCZLDIt3zEC3wTSP/5z4QBvxfeAvlMMVxGQbVj
879
+ // SIG // Xsco2u3G3bqXJLEAY8c89x9XecehghesMIIXqAYKKwYB
880
+ // SIG // BAGCNwMDATGCF5gwgheUBgkqhkiG9w0BBwKggheFMIIX
881
+ // SIG // gQIBAzEPMA0GCWCGSAFlAwQCAQUAMIIBWQYLKoZIhvcN
882
+ // SIG // AQkQAQSgggFIBIIBRDCCAUACAQEGCisGAQQBhFkKAwEw
883
+ // SIG // MTANBglghkgBZQMEAgEFAAQgNl5eR5qfM7HL1rvIFoDP
884
+ // SIG // qnlE3poG2gURa46L7W2cHnYCBmbrL/UiMRgSMjAyNDA5
885
+ // SIG // MjYwMDAwNTAuNjJaMASAAgH0oIHZpIHWMIHTMQswCQYD
886
+ // SIG // VQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4G
887
+ // SIG // A1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0
888
+ // SIG // IENvcnBvcmF0aW9uMS0wKwYDVQQLEyRNaWNyb3NvZnQg
889
+ // SIG // SXJlbGFuZCBPcGVyYXRpb25zIExpbWl0ZWQxJzAlBgNV
890
+ // SIG // BAsTHm5TaGllbGQgVFNTIEVTTjoyRDFBLTA1RTAtRDk0
891
+ // SIG // NzElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAg
892
+ // SIG // U2VydmljZaCCEfswggcoMIIFEKADAgECAhMzAAAB/XP5
893
+ // SIG // aFrNDGHtAAEAAAH9MA0GCSqGSIb3DQEBCwUAMHwxCzAJ
894
+ // SIG // BgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAw
895
+ // SIG // DgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3Nv
896
+ // SIG // ZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29m
897
+ // SIG // dCBUaW1lLVN0YW1wIFBDQSAyMDEwMB4XDTI0MDcyNTE4
898
+ // SIG // MzExNloXDTI1MTAyMjE4MzExNlowgdMxCzAJBgNVBAYT
899
+ // SIG // AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQH
900
+ // SIG // EwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y
901
+ // SIG // cG9yYXRpb24xLTArBgNVBAsTJE1pY3Jvc29mdCBJcmVs
902
+ // SIG // YW5kIE9wZXJhdGlvbnMgTGltaXRlZDEnMCUGA1UECxMe
903
+ // SIG // blNoaWVsZCBUU1MgRVNOOjJEMUEtMDVFMC1EOTQ3MSUw
904
+ // SIG // IwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBTZXJ2
905
+ // SIG // aWNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC
906
+ // SIG // AgEAoWWs+D+Ou4JjYnRHRedu0MTFYzNJEVPnILzc02R3
907
+ // SIG // qbnujvhZgkhp+p/lymYLzkQyG2zpxYceTjIF7HiQWbt6
908
+ // SIG // FW3ARkBrthJUz05ZnKpcF31lpUEb8gUXiD2xIpo8YM+S
909
+ // SIG // D0S+hTP1TCA/we38yZ3BEtmZtcVnaLRp/Avsqg+5KI0K
910
+ // SIG // w6TDJpKwTLl0VW0/23sKikeWDSnHQeTprO0zIm/btagS
911
+ // SIG // Ym3V/8zXlfxy7s/EVFdSglHGsUq8EZupUO8XbHzz7tUR
912
+ // SIG // yiD3kOxNnw5ox1eZX/c/XmW4H6b4yNmZF0wTZuw37yA1
913
+ // SIG // PJKOySSrXrWEh+H6++Wb6+1ltMCPoMJHUtPP3Cn0CNcN
914
+ // SIG // vrPyJtDacqjnITrLzrsHdOLqjsH229Zkvndk0IqxBDZg
915
+ // SIG // MoY+Ef7ffFRP2pPkrF1F9IcBkYz8hL+QjX+u4y4Uqq4U
916
+ // SIG // tT7VRnsqvR/x/+QLE0pcSEh/XE1w1fcp6Jmq8RnHEXik
917
+ // SIG // ycMLN/a/KYxpSP3FfFbLZuf+qIryFL0gEDytapGn1ONj
918
+ // SIG // VkiKpVP2uqVIYj4ViCjy5pLUceMeqiKgYqhpmUHCE2Ws
919
+ // SIG // sLLhdQBHdpl28+k+ZY6m4dPFnEoGcJHuMcIZnw4cOwix
920
+ // SIG // ojROr+Nq71cJj7Q4L0XwPvuTHQt0oH7RKMQgmsy7CVD7
921
+ // SIG // v55dOhdHXdYsyO69dAdK+nWlyYcCAwEAAaOCAUkwggFF
922
+ // SIG // MB0GA1UdDgQWBBTpDMXA4ZW8+yL2+3vA6RmU7oEKpDAf
923
+ // SIG // BgNVHSMEGDAWgBSfpxVdAF5iXYP05dJlpxtTNRnpcjBf
924
+ // SIG // BgNVHR8EWDBWMFSgUqBQhk5odHRwOi8vd3d3Lm1pY3Jv
925
+ // SIG // c29mdC5jb20vcGtpb3BzL2NybC9NaWNyb3NvZnQlMjBU
926
+ // SIG // aW1lLVN0YW1wJTIwUENBJTIwMjAxMCgxKS5jcmwwbAYI
927
+ // SIG // KwYBBQUHAQEEYDBeMFwGCCsGAQUFBzAChlBodHRwOi8v
928
+ // SIG // d3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01p
929
+ // SIG // Y3Jvc29mdCUyMFRpbWUtU3RhbXAlMjBQQ0ElMjAyMDEw
930
+ // SIG // KDEpLmNydDAMBgNVHRMBAf8EAjAAMBYGA1UdJQEB/wQM
931
+ // SIG // MAoGCCsGAQUFBwMIMA4GA1UdDwEB/wQEAwIHgDANBgkq
932
+ // SIG // hkiG9w0BAQsFAAOCAgEAY9hYX+T5AmCrYGaH96TdR5T5
933
+ // SIG // 2/PNOG7ySYeopv4flnDWQLhBlravAg+pjlNv5XSXZrKG
934
+ // SIG // v8e4s5dJ5WdhfC9ywFQq4TmXnUevPXtlubZk+02BXK6/
935
+ // SIG // 23hM0TSKs2KlhYiqzbRe8QbMfKXEDtvMoHSZT7r+wI2I
936
+ // SIG // gjYQwka+3P9VXgERwu46/czz8IR/Zq+vO5523Jld6ssV
937
+ // SIG // uzs9uwIrJhfcYBj50mXWRBcMhzajLjWDgcih0DuykPcB
938
+ // SIG // poTLlOL8LpXooqnr+QLYE4BpUep3JySMYfPz2hfOL3g0
939
+ // SIG // 2WEfsOxp8ANbcdiqM31dm3vSheEkmjHA2zuM+Tgn4j5n
940
+ // SIG // +Any7IODYQkIrNVhLdML09eu1dIPhp24lFtnWTYNaFTO
941
+ // SIG // fMqFa3Ab8KDKicmp0AthRNZVg0BPAL58+B0UcoBGKzS9
942
+ // SIG // jscwOTu1JmNlisOKkVUVkSJ5Fo/ctfDSPdCTVaIXXF7l
943
+ // SIG // 40k1cM/X2O0JdAS97T78lYjtw/PybuzX5shxBh/RqTPv
944
+ // SIG // CyAhIxBVKfN/hfs4CIoFaqWJ0r/8SB1CGsyyIcPfEgMo
945
+ // SIG // 8ceq1w5Zo0JfnyFi6Guo+z3LPFl/exQaRubErsAUTfyB
946
+ // SIG // Y5/5liyvjAgyDYnEB8vHO7c7Fg2tGd5hGgYs+AOoWx24
947
+ // SIG // +XcyxpUkAajDhky9Dl+8JZTjts6BcT9sYTmOodk/SgIw
948
+ // SIG // ggdxMIIFWaADAgECAhMzAAAAFcXna54Cm0mZAAAAAAAV
949
+ // SIG // MA0GCSqGSIb3DQEBCwUAMIGIMQswCQYDVQQGEwJVUzET
950
+ // SIG // MBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVk
951
+ // SIG // bW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0
952
+ // SIG // aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUm9vdCBDZXJ0
953
+ // SIG // aWZpY2F0ZSBBdXRob3JpdHkgMjAxMDAeFw0yMTA5MzAx
954
+ // SIG // ODIyMjVaFw0zMDA5MzAxODMyMjVaMHwxCzAJBgNVBAYT
955
+ // SIG // AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQH
956
+ // SIG // EwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y
957
+ // SIG // cG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1l
958
+ // SIG // LVN0YW1wIFBDQSAyMDEwMIICIjANBgkqhkiG9w0BAQEF
959
+ // SIG // AAOCAg8AMIICCgKCAgEA5OGmTOe0ciELeaLL1yR5vQ7V
960
+ // SIG // gtP97pwHB9KpbE51yMo1V/YBf2xK4OK9uT4XYDP/XE/H
961
+ // SIG // ZveVU3Fa4n5KWv64NmeFRiMMtY0Tz3cywBAY6GB9alKD
962
+ // SIG // RLemjkZrBxTzxXb1hlDcwUTIcVxRMTegCjhuje3XD9gm
963
+ // SIG // U3w5YQJ6xKr9cmmvHaus9ja+NSZk2pg7uhp7M62AW36M
964
+ // SIG // EBydUv626GIl3GoPz130/o5Tz9bshVZN7928jaTjkY+y
965
+ // SIG // OSxRnOlwaQ3KNi1wjjHINSi947SHJMPgyY9+tVSP3PoF
966
+ // SIG // VZhtaDuaRr3tpK56KTesy+uDRedGbsoy1cCGMFxPLOJi
967
+ // SIG // ss254o2I5JasAUq7vnGpF1tnYN74kpEeHT39IM9zfUGa
968
+ // SIG // RnXNxF803RKJ1v2lIH1+/NmeRd+2ci/bfV+Autuqfjbs
969
+ // SIG // Nkz2K26oElHovwUDo9Fzpk03dJQcNIIP8BDyt0cY7afo
970
+ // SIG // mXw/TNuvXsLz1dhzPUNOwTM5TI4CvEJoLhDqhFFG4tG9
971
+ // SIG // ahhaYQFzymeiXtcodgLiMxhy16cg8ML6EgrXY28MyTZk
972
+ // SIG // i1ugpoMhXV8wdJGUlNi5UPkLiWHzNgY1GIRH29wb0f2y
973
+ // SIG // 1BzFa/ZcUlFdEtsluq9QBXpsxREdcu+N+VLEhReTwDwV
974
+ // SIG // 2xo3xwgVGD94q0W29R6HXtqPnhZyacaue7e3PmriLq0C
975
+ // SIG // AwEAAaOCAd0wggHZMBIGCSsGAQQBgjcVAQQFAgMBAAEw
976
+ // SIG // IwYJKwYBBAGCNxUCBBYEFCqnUv5kxJq+gpE8RjUpzxD/
977
+ // SIG // LwTuMB0GA1UdDgQWBBSfpxVdAF5iXYP05dJlpxtTNRnp
978
+ // SIG // cjBcBgNVHSAEVTBTMFEGDCsGAQQBgjdMg30BATBBMD8G
979
+ // SIG // CCsGAQUFBwIBFjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5j
980
+ // SIG // b20vcGtpb3BzL0RvY3MvUmVwb3NpdG9yeS5odG0wEwYD
981
+ // SIG // VR0lBAwwCgYIKwYBBQUHAwgwGQYJKwYBBAGCNxQCBAwe
982
+ // SIG // CgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB
983
+ // SIG // /wQFMAMBAf8wHwYDVR0jBBgwFoAU1fZWy4/oolxiaNE9
984
+ // SIG // lJBb186aGMQwVgYDVR0fBE8wTTBLoEmgR4ZFaHR0cDov
985
+ // SIG // L2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVj
986
+ // SIG // dHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3JsMFoG
987
+ // SIG // CCsGAQUFBwEBBE4wTDBKBggrBgEFBQcwAoY+aHR0cDov
988
+ // SIG // L3d3dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9NaWNS
989
+ // SIG // b29DZXJBdXRfMjAxMC0wNi0yMy5jcnQwDQYJKoZIhvcN
990
+ // SIG // AQELBQADggIBAJ1VffwqreEsH2cBMSRb4Z5yS/ypb+pc
991
+ // SIG // FLY+TkdkeLEGk5c9MTO1OdfCcTY/2mRsfNB1OW27DzHk
992
+ // SIG // wo/7bNGhlBgi7ulmZzpTTd2YurYeeNg2LpypglYAA7AF
993
+ // SIG // vonoaeC6Ce5732pvvinLbtg/SHUB2RjebYIM9W0jVOR4
994
+ // SIG // U3UkV7ndn/OOPcbzaN9l9qRWqveVtihVJ9AkvUCgvxm2
995
+ // SIG // EhIRXT0n4ECWOKz3+SmJw7wXsFSFQrP8DJ6LGYnn8Atq
996
+ // SIG // gcKBGUIZUnWKNsIdw2FzLixre24/LAl4FOmRsqlb30mj
997
+ // SIG // dAy87JGA0j3mSj5mO0+7hvoyGtmW9I/2kQH2zsZ0/fZM
998
+ // SIG // cm8Qq3UwxTSwethQ/gpY3UA8x1RtnWN0SCyxTkctwRQE
999
+ // SIG // cb9k+SS+c23Kjgm9swFXSVRk2XPXfx5bRAGOWhmRaw2f
1000
+ // SIG // pCjcZxkoJLo4S5pu+yFUa2pFEUep8beuyOiJXk+d0tBM
1001
+ // SIG // drVXVAmxaQFEfnyhYWxz/gq77EFmPWn9y8FBSX5+k77L
1002
+ // SIG // +DvktxW/tM4+pTFRhLy/AsGConsXHRWJjXD+57XQKBqJ
1003
+ // SIG // C4822rpM+Zv/Cuk0+CQ1ZyvgDbjmjJnW4SLq8CdCPSWU
1004
+ // SIG // 5nR0W2rRnj7tfqAxM328y+l7vzhwRNGQ8cirOoo6CGJ/
1005
+ // SIG // 2XBjU02N7oJtpQUQwXEGahC0HVUzWLOhcGbyoYIDVjCC
1006
+ // SIG // Aj4CAQEwggEBoYHZpIHWMIHTMQswCQYDVQQGEwJVUzET
1007
+ // SIG // MBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVk
1008
+ // SIG // bW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0
1009
+ // SIG // aW9uMS0wKwYDVQQLEyRNaWNyb3NvZnQgSXJlbGFuZCBP
1010
+ // SIG // cGVyYXRpb25zIExpbWl0ZWQxJzAlBgNVBAsTHm5TaGll
1011
+ // SIG // bGQgVFNTIEVTTjoyRDFBLTA1RTAtRDk0NzElMCMGA1UE
1012
+ // SIG // AxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZaIj
1013
+ // SIG // CgEBMAcGBSsOAwIaAxUAoj0WtVVQUNSKoqtrjinRAsBU
1014
+ // SIG // doOggYMwgYCkfjB8MQswCQYDVQQGEwJVUzETMBEGA1UE
1015
+ // SIG // CBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEe
1016
+ // SIG // MBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYw
1017
+ // SIG // JAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0Eg
1018
+ // SIG // MjAxMDANBgkqhkiG9w0BAQsFAAIFAOqe6J8wIhgPMjAy
1019
+ // SIG // NDA5MjUxOTUzMDNaGA8yMDI0MDkyNjE5NTMwM1owdDA6
1020
+ // SIG // BgorBgEEAYRZCgQBMSwwKjAKAgUA6p7onwIBADAHAgEA
1021
+ // SIG // AgID3TAHAgEAAgIUNjAKAgUA6qA6HwIBADA2BgorBgEE
1022
+ // SIG // AYRZCgQCMSgwJjAMBgorBgEEAYRZCgMCoAowCAIBAAID
1023
+ // SIG // B6EgoQowCAIBAAIDAYagMA0GCSqGSIb3DQEBCwUAA4IB
1024
+ // SIG // AQAzFUvmDqLaX0Wt/6KG60QhgV/xNygm8oEGc2xANsnY
1025
+ // SIG // k05hE77GXjRu7S2hb9aINC3qL8qpymB2LV6O8lFEZWKE
1026
+ // SIG // qpD9ta82tFXgnqE6w29y0bX0JdtJk65kS3n3sQR5bmhk
1027
+ // SIG // GxHYtG6uET66YTLyDkY0gWecKBJlvbC32MJRKSDyJqtN
1028
+ // SIG // zah+NK9+TjdzZVoyKcIxENxrnBXDH/g0bm5ULIMdOBD9
1029
+ // SIG // h5tHQOYcPnmKfQODzMCz9nE2rE5di8x1MDWVleMrASta
1030
+ // SIG // YgoiWJ9D9t3F3KcKxZShMJi3VNdXtRjdZWhwQ7L6zRXy
1031
+ // SIG // Nk+XbXX5nnikuxz12E9TYJX0Vy9JUdXwJxX5MYIEDTCC
1032
+ // SIG // BAkCAQEwgZMwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
1033
+ // SIG // Cldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc
1034
+ // SIG // BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQG
1035
+ // SIG // A1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIw
1036
+ // SIG // MTACEzMAAAH9c/loWs0MYe0AAQAAAf0wDQYJYIZIAWUD
1037
+ // SIG // BAIBBQCgggFKMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0B
1038
+ // SIG // CRABBDAvBgkqhkiG9w0BCQQxIgQg1yJhqz6sry+GAYS1
1039
+ // SIG // OtIbRxDed6yaZ591/Z7ns/bDW94wgfoGCyqGSIb3DQEJ
1040
+ // SIG // EAIvMYHqMIHnMIHkMIG9BCCAKEgNyUowvIfx/eDfYSup
1041
+ // SIG // HkeF1p6GFwjKBs8lRB4NRzCBmDCBgKR+MHwxCzAJBgNV
1042
+ // SIG // BAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYD
1043
+ // SIG // VQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQg
1044
+ // SIG // Q29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBU
1045
+ // SIG // aW1lLVN0YW1wIFBDQSAyMDEwAhMzAAAB/XP5aFrNDGHt
1046
+ // SIG // AAEAAAH9MCIEIHRVS/GU/No0wqjU++gqNmW/61Oh4w8e
1047
+ // SIG // QVqNM1Kq9PgJMA0GCSqGSIb3DQEBCwUABIICAFfdVkkM
1048
+ // SIG // Je3hPevJTpN9OVSW4cvfmBdGm+dclVbI0YLWZ/RbHv10
1049
+ // SIG // l8amadCsLUxVm474FzYeIoQN/3Fv6zWxMr3C54AX6pnE
1050
+ // SIG // yWaCtzNI6dBGqSr8csk57kya9H2eduf/Nl6geU9NKe2p
1051
+ // SIG // Q9lHvEh/ekrFjo5Tkhv9Pl81ZefPFRLAU2ZHxwD/H75X
1052
+ // SIG // Zzuy7kOcyOHgSUUzzt9UUwzNfurkSbxN5EH6y4w/759r
1053
+ // SIG // MQbQE4J6FGyZaJG/j/zj3YXIsy2PmiITCJFpAqg+E9m+
1054
+ // SIG // ZwHoSe07gyLy03wW8WLM2YRJC2OcLckedT1eLLC/qXsw
1055
+ // SIG // gMVb4JL1FljIY1ndJo+F0CRQ1uIQToe7c/rvyvQkZnE6
1056
+ // SIG // agPbx9WPFUbpFH4F4UWKyxy2ERYr+OTJtIukvczTQhzX
1057
+ // SIG // 5bGizEdn4DQLmXBi364G2Js7YEr3Be1RA+eB5Ac7a7nl
1058
+ // SIG // r8MTORU6RMKmdtjZx/tyzCmm/MhbfRQ8u04a2msvPvyn
1059
+ // SIG // tlP36nAsAiYqQVClU1jLg7vFo0O6t/Etx8YEQfdLEz/P
1060
+ // SIG // 11UU7qQvL8AU63OOTc2MviY1NH8v50KuXdtoqhBknWYI
1061
+ // SIG // CoYJl9ODWwvimEoD4mgmUmqrCk5QLVnm9g8wYVBfZ2kF
1062
+ // SIG // ksAR2cgLZerPJzjkLbXeZQ56sISRh4rrHp5PDkNben7Z
1063
+ // SIG // Z/VCwAmJqnZ2VWD/
1064
+ // SIG // End signature block