@microsoft/windows-admin-center-sdk 4.52.0 → 4.87.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 (97) hide show
  1. package/angular/esm2020/src/controls/master-view/master-view.component.mjs +8 -6
  2. package/angular/esm2020/src/controls/ux/sme-ux-footer/sme-ux-footer-template/sme-wizard-lite-footer-template/sme-wizard-lite-footer-template.component.mjs +56 -1
  3. package/angular/esm2020/src/service/navigation.service.mjs +3 -1
  4. package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.mjs +64 -5
  5. package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.mjs.map +1 -1
  6. package/angular/fesm2020/microsoft-windows-admin-center-sdk-angular.mjs +64 -5
  7. package/angular/fesm2020/microsoft-windows-admin-center-sdk-angular.mjs.map +1 -1
  8. package/angular/src/controls/master-view/master-view.component.d.ts +6 -2
  9. package/angular/src/controls/ux/sme-ux-footer/sme-ux-footer-template/sme-wizard-lite-footer-template/sme-wizard-lite-footer-template.component.d.ts +64 -0
  10. package/core/assets/strings/cs-CZ/strings.json +1 -1
  11. package/core/assets/strings/de-DE/strings.json +1 -1
  12. package/core/assets/strings/es-ES/strings.json +1 -1
  13. package/core/assets/strings/fr-FR/strings.json +1 -1
  14. package/core/assets/strings/hu-HU/strings.json +1 -1
  15. package/core/assets/strings/id-ID/strings.json +1 -1
  16. package/core/assets/strings/it-IT/strings.json +1 -1
  17. package/core/assets/strings/ja-JP/strings.json +1 -1
  18. package/core/assets/strings/ko-KR/strings.json +1 -1
  19. package/core/assets/strings/nl-NL/strings.json +1 -1
  20. package/core/assets/strings/pl-PL/strings.json +1 -1
  21. package/core/assets/strings/pt-BR/strings.json +1 -1
  22. package/core/assets/strings/pt-PT/strings.json +1 -1
  23. package/core/assets/strings/ru-RU/strings.json +1 -1
  24. package/core/assets/strings/strings.json +1 -1
  25. package/core/assets/strings/sv-SE/strings.json +1 -1
  26. package/core/assets/strings/tr-TR/strings.json +1 -1
  27. package/core/assets/strings/zh-CN/strings.json +1 -1
  28. package/core/assets/strings/zh-TW/strings.json +1 -1
  29. package/core/azure/azure-constants.d.ts +6 -3
  30. package/core/azure/azure-constants.d.ts.map +1 -1
  31. package/core/azure/azure-constants.js +7 -4
  32. package/core/azure/azure-constants.js.map +1 -1
  33. package/core/azure/models/azureArcStatusEnum.d.ts +4 -2
  34. package/core/azure/models/azureArcStatusEnum.d.ts.map +1 -1
  35. package/core/azure/models/azureArcStatusEnum.js +3 -1
  36. package/core/azure/models/azureArcStatusEnum.js.map +1 -1
  37. package/core/data/gateway-connection.d.ts +12 -0
  38. package/core/data/gateway-connection.d.ts.map +1 -1
  39. package/core/data/gateway-connection.js +16 -0
  40. package/core/data/gateway-connection.js.map +1 -1
  41. package/core/data/gateway-url-translator.d.ts +1 -0
  42. package/core/data/gateway-url-translator.d.ts.map +1 -1
  43. package/core/data/gateway-url-translator.js +15 -0
  44. package/core/data/gateway-url-translator.js.map +1 -1
  45. package/core/data/net.d.ts +1 -0
  46. package/core/data/net.d.ts.map +1 -1
  47. package/core/data/net.js +26 -1
  48. package/core/data/net.js.map +1 -1
  49. package/core/data/websocket-stream.d.ts.map +1 -1
  50. package/core/data/websocket-stream.js +2 -2
  51. package/core/data/websocket-stream.js.map +1 -1
  52. package/core/generated/strings.d.ts +3 -0
  53. package/core/generated/strings.d.ts.map +1 -1
  54. package/core/generated/strings.js.map +1 -1
  55. package/core/notification/notification.d.ts.map +1 -1
  56. package/core/notification/notification.js +1 -3
  57. package/core/notification/notification.js.map +1 -1
  58. package/core/shared/server-inventory/server-inventory-cache.d.ts.map +1 -1
  59. package/core/shared/server-inventory/server-inventory-cache.js +0 -1
  60. package/core/shared/server-inventory/server-inventory-cache.js.map +1 -1
  61. package/package.json +3 -3
  62. package/styles/css/main-v2.css +1 -1
  63. package/tools/wac-cli/src/angular15/configs/ui-test-automation-lagacy-config.d.ts +14 -0
  64. package/tools/wac-cli/src/angular15/configs/ui-test-automation-lagacy-config.d.ts.map +1 -0
  65. package/tools/wac-cli/src/angular15/configs/ui-test-automation-lagacy-config.js +21 -0
  66. package/tools/wac-cli/src/angular15/configs/ui-test-automation-lagacy-config.js.map +1 -0
  67. package/tools/wac-cli/src/angular15/main.d.ts +32 -2
  68. package/tools/wac-cli/src/angular15/main.d.ts.map +1 -1
  69. package/tools/wac-cli/src/angular15/main.js +66 -6
  70. package/tools/wac-cli/src/angular15/main.js.map +1 -1
  71. package/tools/wac-cli/src/angular15/test/ui-test-automation-package.json/after.json +14 -0
  72. package/tools/wac-cli/src/angular15/test/ui-test-automation-package.json/before.json +13 -0
  73. package/tools/wac-cli/src/angular15/upgrader/ui-test-automation-legacy-upgrader.d.ts +15 -0
  74. package/tools/wac-cli/src/angular15/upgrader/ui-test-automation-legacy-upgrader.d.ts.map +1 -0
  75. package/tools/wac-cli/src/angular15/upgrader/ui-test-automation-legacy-upgrader.js +48 -0
  76. package/tools/wac-cli/src/angular15/upgrader/ui-test-automation-legacy-upgrader.js.map +1 -0
  77. package/tools/wac-cli/src/angular15/utils/main-debugger.d.ts.map +1 -1
  78. package/tools/wac-cli/src/angular15/utils/main-debugger.js +3 -0
  79. package/tools/wac-cli/src/angular15/utils/main-debugger.js.map +1 -1
  80. package/tools/wac-cli/src/angular15/utils/update-shell-references.d.ts +2 -0
  81. package/tools/wac-cli/src/angular15/utils/update-shell-references.d.ts.map +1 -0
  82. package/tools/wac-cli/src/angular15/utils/update-shell-references.js +69 -0
  83. package/tools/wac-cli/src/angular15/utils/update-shell-references.js.map +1 -0
  84. package/tools/wac-cli/src/common.d.ts +6 -0
  85. package/tools/wac-cli/src/common.d.ts.map +1 -1
  86. package/tools/wac-cli/src/common.js +13 -0
  87. package/tools/wac-cli/src/common.js.map +1 -1
  88. package/tools/wac-cli/src/create/main.d.ts.map +1 -1
  89. package/tools/wac-cli/src/create/main.js +3 -51
  90. package/tools/wac-cli/src/create/main.js.map +1 -1
  91. package/tools/wac-cli/src/eslint/main.d.ts +5 -1
  92. package/tools/wac-cli/src/eslint/main.d.ts.map +1 -1
  93. package/tools/wac-cli/src/eslint/main.js +17 -2
  94. package/tools/wac-cli/src/eslint/main.js.map +1 -1
  95. package/tools/wac-cli/src/index.d.ts.map +1 -1
  96. package/tools/wac-cli/src/index.js +2 -2
  97. package/tools/wac-cli/src/index.js.map +1 -1
@@ -132,6 +132,8 @@ export class NavigationService {
132
132
  PerformanceProfile.logRouteNavigation('NavigationService', startTimestamp, Date.now(), '[rpcInit]', this.moduleName);
133
133
  }
134
134
  onInit(data) {
135
+ // Iframe has received all initialization data from the shell.
136
+ this.appContextService.gateway.navigationReadyStatus = true;
135
137
  this.active = true;
136
138
  const self = MsftSme.self();
137
139
  if (!MsftSme.isNullOrUndefined(self.Init.sessionExpiration) && self.Init.sessionExpiration > 0) {
@@ -377,4 +379,4 @@ NavigationService.initialWaitTime = 2000;
377
379
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NavigationService, [{
378
380
  type: Injectable
379
381
  }], function () { return [{ type: i1.AppContextService }, { type: i2.UserAliveService }, { type: i3.Router }, { type: i3.ActivatedRoute }]; }, null); })();
380
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvc2VydmljZS9uYXZpZ2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBb0IsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUNqRyxPQUFPLEVBQWtCLE9BQU8sRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN4RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sOERBQThELENBQUM7QUFDdkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBFQUEwRSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBFQUEwRSxDQUFDO0FBRTlHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLG1HQUFtRyxDQUFDO0FBRXpKLE9BQU8sRUFHSCxrQkFBa0IsRUFHbEIsWUFBWSxFQUNaLG1CQUFtQixFQUd0QixNQUFNLHVEQUF1RCxDQUFDO0FBQy9ELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhGQUE4RixDQUFDO0FBQzlJLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFB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ZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBOYXZpZ2F0aW9uRXh0cmFzLCBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IENvcmVFbnZpcm9ubWVudCB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvZGF0YS9jb3JlLWVudmlyb25tZW50JztcclxuaW1wb3J0IHsgTmF0aXZlRGVmZXJyZWQsIE5hdGl2ZVEgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL2RhdGEvbmF0aXZlLXEnO1xyXG5pbXBvcnQgeyBOZXQgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL2RhdGEvbmV0JztcclxuaW1wb3J0IHsgTG9nZ2luZyB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvZGlhZ25vc3RpY3MvbG9nZ2luZyc7XHJcbmltcG9ydCB7IFNtZVdlYlRlbGVtZXRyeSB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvZGlhZ25vc3RpY3Mvc21lLXdlYi10ZWxlbWV0cnknO1xyXG5pbXBvcnQgeyBQZXJmb3JtYW5jZVByb2ZpbGUgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL3BlcmZvcm1hbmNlL3BlcmZvcm1hbmNlLXByb2ZpbGUnO1xyXG5pbXBvcnQgeyBQZXJmb3JtYW5jZVRyYWNrZXIgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL3BlcmZvcm1hbmNlL3BlcmZvcm1hbmNlLXRyYWNrZXInO1xyXG5pbXBvcnQgeyBScGNEaWFsb2dPdmVybGF5RGF0YSwgUnBjRGlhbG9nT3ZlcmxheVJlc3VsdCB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvcnBjL292ZXJsYXkvcnBjLW92ZXJsYXktbW9kZWwnO1xyXG5pbXBvcnQgeyBScGNPdmVybGF5Q2xvc2VLZXkgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL3JwYy9vdmVybGF5L3JwYy1vdmVybGF5LW1vZGVsJztcclxuaW1wb3J0IHsgUnBjT2JzZXJ2YWJsZVBlcmZvcm1hbmNlQ29uZmlnU2VydmVyIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9ycGMvcGVyZm9ybWFuY2UvcnBjLW9ic2VydmFibGUtcGVyZm9ybWFuY2UtY29uZmlnLXNlcnZlcic7XHJcbmltcG9ydCB7IFNlbGVjdGFibGVQYXRoIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9ycGMvcmVwb3J0L3JwYy1yZXBvcnQtbW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gICAgUnBjQWN0aXZhdGVEYXRhLFxyXG4gICAgUnBjRGVhY3RpdmF0ZVJlc3VsdCxcclxuICAgIFJwY0RlYWN0aXZhdGVTdGF0ZSxcclxuICAgIFJwY09wZW5EYXRhLFxyXG4gICAgUnBjT3BlblJlc3VsdCxcclxuICAgIFJwY09wZW5TdGF0ZSxcclxuICAgIFJwY091dGJvdW5kQ29tbWFuZHMsXHJcbiAgICBScGNTaHV0ZG93bkRhdGEsXHJcbiAgICBScGNTaHV0ZG93blJlc3VsdFxyXG59IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvcnBjL3JwYy1iYXNlJztcclxuaW1wb3J0IHsgUnBjT2JzZXJ2YWJsZVVwZGF0ZVRoZW1lU2VydmVyIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9ycGMvdXBkYXRlLXRoZW1lL3JwYy1vYnNlcnZhYmxlLXVwZGF0ZS10aGVtZS1zZXJ2ZXInO1xyXG5pbXBvcnQgeyBFTVBUWSwgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgbWVyZ2VNYXAsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vY29udHJvbHMvZGlhbG9nL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBwQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuL2FwcC1jb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25uZWN0aXZpdHlFbmZvcmNlciB9IGZyb20gJy4vY29ubmVjdGl2aXR5LWVuZm9yY2VyJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbiwgTmF2aWdhdGlvbkRhdGEsIE5hdmlnYXRpb25EYXRhRXh0cmFzIH0gZnJvbSAnLi9uYXZpZ2F0aW9uJztcclxuaW1wb3J0IHsgVXNlckFsaXZlU2VydmljZSB9IGZyb20gJy4vdXNlci1hbGl2ZS5zZXJ2aWNlJztcclxuLyoqXHJcbiAqIE9wdGlvbnMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlIG5hdmlnYXRpb24gc2VydmljZVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBOYXZpZ2F0b3JTZXJ2aWNlT3B0aW9ucyB7XHJcbiAgICAvKipcclxuICAgICAqIFRoZSBhbmd1bGFyIDIgZGVmYXVsdCByb3V0ZSB0byB1c2UgZHVyaW5nIGluaXRpYWxpemF0aW9uIGFuZFxyXG4gICAgICogaWYgdGhlIGFwcGxpY2F0aW9uIGdldHMgZGVhY3RpdmF0ZWQgYnV0IHN0aWxsIHJ1bm5pbmdcclxuICAgICAqIFNlZSBAYW5ndWxhci9yb3V0ZXIgLSBSb3V0ZXIubmF2aWdhdGUgbWV0aG9kIGZvciBtb3JlIGRldGFpbHNcclxuICAgICAqL1xyXG4gICAgaWRsZVJvdXRlPzogYW55W107XHJcbn1cclxuXHJcbmludGVyZmFjZSBTdGF0ZUNvbnRleHQ8VFN0YXRlLCBUUmVzdWx0PiB7XHJcbiAgICBzdGF0ZTogVFN0YXRlO1xyXG4gICAgcmVxdWVzdGVkVGltZTogbnVtYmVyO1xyXG4gICAgdGltZXI6IGFueTtcclxuICAgIGRlZmVycmVkOiBOYXRpdmVEZWZlcnJlZDxUUmVzdWx0PjtcclxuICAgIGVycm9yPzogc3RyaW5nO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbi8qKlxyXG4gKiBPbmNlIGluaXRpYWxpemUgdGhpcyBjbGFzcyB1c2VzIHRoZSB1bmRlcmx5aW5nIFJQQyBjaGFubmVsXHJcbiAqIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIHJlbW90ZSBSUEMgc2VydmljZS5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBOYXZpZ2F0aW9uU2VydmljZSB7XHJcbiAgICBwcml2YXRlIHN0YXRpYyBpbml0aWFsV2FpdFRpbWUgPSAyMDAwO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0TmF2aWdhdGlvbk9wdGlvbnM6IE5hdmlnYXRpb25FeHRyYXMgPSB7IHNraXBMb2NhdGlvbkNoYW5nZTogdHJ1ZSB9O1xyXG4gICAgcHJpdmF0ZSBsYXN0Um91dGU6IE5hdmlnYXRpb25EYXRhO1xyXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICAgIHByaXZhdGUgb3B0aW9uczogTmF2aWdhdG9yU2VydmljZU9wdGlvbnM7XHJcbiAgICBwcml2YXRlIGlkbGVVcmw6IHN0cmluZztcclxuICAgIHByaXZhdGUgYWN0aXZlOiBib29sZWFuO1xyXG4gICAgcHJpdmF0ZSBlbnRlcmluZ01vZHVsZSA9IHRydWU7XHJcbiAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2VNYXA6IHsgW2luZGV4OiBzdHJpbmddOiBEaWFsb2dTZXJ2aWNlIH0gPSB7fTtcclxuICAgIHByaXZhdGUgb3BlbkNvbnRleHQ6IFN0YXRlQ29udGV4dDxScGNPcGVuU3RhdGUsIFJwY09wZW5SZXN1bHQ+ID0ge1xyXG4gICAgICAgIHN0YXRlOiBudWxsLFxyXG4gICAgICAgIHJlcXVlc3RlZFRpbWU6IDAsXHJcbiAgICAgICAgdGltZXI6IG51bGwsXHJcbiAgICAgICAgZGVmZXJyZWQ6IG51bGwsXHJcbiAgICAgICAgZXJyb3I6IG51bGxcclxuICAgIH07XHJcbiAgICBwcml2YXRlIGRlYWN0aXZhdGVDb250ZXh0OiBTdGF0ZUNvbnRleHQ8UnBjRGVhY3RpdmF0ZVN0YXRlLCBScGNEZWFjdGl2YXRlUmVzdWx0PiA9IHtcclxuICAgICAgICBzdGF0ZTogbnVsbCxcclxuICAgICAgICByZXF1ZXN0ZWRUaW1lOiAwLFxyXG4gICAgICAgIHRpbWVyOiBudWxsLFxyXG4gICAgICAgIGRlZmVycmVkOiBudWxsXHJcbiAgICB9O1xyXG4gICAgcHJpdmF0ZSBtb2R1bGVOYW1lOiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIFJwY09ic2VydmFibGVQZXJmb3JtYW5jZUNvbmZpZ1NlcnZlcjogUnBjT2JzZXJ2YWJsZVBlcmZvcm1hbmNlQ29uZmlnU2VydmVyO1xyXG4gICAgcHJpdmF0ZSBycGNPYnNlcnZhYmxlVXBkYXRlVGhlbWVTZXJ2ZXI6IFJwY09ic2VydmFibGVVcGRhdGVUaGVtZVNlcnZlcjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhpcyBzZXJ2aWNlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgYXBwQ29udGV4dFNlcnZpY2U6IEFwcENvbnRleHRTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgdXNlckFsaXZlU2VydmljZTogVXNlckFsaXZlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlKSB7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbml0aWFsaXplIG5hdmlnYXRpb24gY29tbXVuaWNhdGlvbiBmcm9tL3RvIHRoZSBzaGVsbC5cclxuICAgICAqXHJcbiAgICAgKiAgUmVnaXN0ZXJzIHRoZSBtZXRob2RzIHdpdGggdGhlIHJlbW90ZSBSUEMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3RcclxuICAgICAqICBTdWJzY3JpYmVzIHRvIHRoZSByb3V0ZXIgZXZlbnRzIGFuZCByZXBvcnRzIHRoZSBicmVhZGNydW1iIGl0ZW1zXHJcbiAgICAgKiAgYmFjayB0byB0aGUgcnBjIHJlbW90ZVxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpbml0aWFsaXplKG9wdGlvbnM/OiBOYXZpZ2F0b3JTZXJ2aWNlT3B0aW9ucyk6IHZvaWQge1xyXG4gICAgICAgIFBlcmZvcm1hbmNlVHJhY2tlci5uYXZpZ2F0aW9uSW5pdGlhbGl6ZWQoKTtcclxuICAgICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucyA/IG9wdGlvbnMgOiB7IGlkbGVSb3V0ZTogWydpZGxlJ10gfTtcclxuICAgICAgICB0aGlzLmlkbGVVcmwgPSBgLyR7dGhpcy5vcHRpb25zLmlkbGVSb3V0ZVswXX1gO1xyXG5cclxuICAgICAgICAvLyBuYXZpZ2F0ZSB0byBpZGxlLlxyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKHRoaXMub3B0aW9ucy5pZGxlUm91dGUsIHRoaXMuZGVmYXVsdE5hdmlnYXRpb25PcHRpb25zKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgc3RhcnRUaW1lc3RhbXAgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZXIuZXZlbnRzXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFwKGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRUaW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBQZXJmb3JtYW5jZVRyYWNrZXIubmF2aWdhdGlvblN0YXJ0ZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCAmJiBzdGFydFRpbWVzdGFtcCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBQZXJmb3JtYW5jZVByb2ZpbGUubG9nUm91dGVOYXZpZ2F0aW9uKCdOYXZpZ2F0aW9uU2VydmljZScsIHN0YXJ0VGltZXN0YW1wLCBEYXRlLm5vdygpLCBldmVudC51cmwsIHRoaXMubW9kdWxlTmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0VGltZXN0YW1wID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgUGVyZm9ybWFuY2VUcmFja2VyLm5hdmlnYXRpb25Db21wbGV0ZWQodGhpcy5lbnRlcmluZ01vZHVsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChldmVudCA9PlxyXG4gICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uYnVpbGRTZWxlY3RhYmxlUGF0aHNGb3JSb3V0ZSh0aGlzLmFwcENvbnRleHRTZXJ2aWNlLCB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKG1hcChzZWxlY3RhYmxlUGF0aHMgPT4gPGFueT57IGV2ZW50LCBzZWxlY3RhYmxlUGF0aHMgfSkpKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IHsgZXZlbnQ6IE5hdmlnYXRpb25FbmQsIHNlbGVjdGFibGVQYXRoczogU2VsZWN0YWJsZVBhdGhbXX0pID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIGluIHRoZSBjYXNlIG9mIGluaXRpYWwgaWRsZSBzdGF0ZSwgcmVwb3J0aW5nIHVybCB3aWxsIGNhdXNlIHJwYyBlcnJvci4gYWxsIG90aGVyIGNhc2VzIHNob3VsZCBiZSBvay5cclxuICAgICAgICAgICAgICAgIC8vIFJwY1JlcG9ydCBpbmNsdWRlIGZyYWdtZW50IGFuZCBxdWVyeVBhcmFtcyBpbiAncGF0aCcgYW5kICdiZWZvcmVSZWRpcmVjdGVkUGF0aCcuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hY3RpdmUgJiYgZGF0YS5ldmVudC51cmwgIT09IHRoaXMuaWRsZVVybCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwQ29udGV4dFNlcnZpY2UuZnJhbWUucmVwb3J0KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogZGVjb2RlVVJJKGRhdGEuZXZlbnQudXJsQWZ0ZXJSZWRpcmVjdHMpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmVSZWRpcmVjdGVkUGF0aDogZGVjb2RlVVJJKGRhdGEuZXZlbnQudXJsKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0YWJsZVBhdGg6IGRhdGEuc2VsZWN0YWJsZVBhdGhzXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbnRlcmluZ01vZHVsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5hcHBDb250ZXh0U2VydmljZS5ycGMucmVnaXN0ZXIoUnBjT3V0Ym91bmRDb21tYW5kcy5Jbml0LCB0aGlzLm9uSW5pdC5iaW5kKHRoaXMpKTtcclxuICAgICAgICB0aGlzLmFwcENvbnRleHRTZXJ2aWNlLnJwYy5yZWdpc3RlcihScGNPdXRib3VuZENvbW1hbmRzLk9wZW4sIHRoaXMub25PcGVuLmJpbmQodGhpcykpO1xyXG4gICAgICAgIHRoaXMuYXBwQ29udGV4dFNlcnZpY2UucnBjLnJlZ2lzdGVyKFJwY091dGJvdW5kQ29tbWFuZHMuRGVhY3RpdmF0ZTIsIHRoaXMub25EZWFjdGl2YXRlMi5iaW5kKHRoaXMpKTtcclxuICAgICAgICB0aGlzLmFwcENvbnRleHRTZXJ2aWNlLnJwYy5yZWdpc3RlcihScGNPdXRib3VuZENvbW1hbmRzLkFjdGl2YXRlLCB0aGlzLm9uQWN0aXZhdGUuYmluZCh0aGlzKSk7XHJcbiAgICAgICAgdGhpcy5hcHBDb250ZXh0U2VydmljZS5ycGMucmVnaXN0ZXIoUnBjT3V0Ym91bmRDb21tYW5kcy5TaHV0ZG93biwgdGhpcy5vblNodXRkb3duLmJpbmQodGhpcykpO1xyXG4gICAgICAgIHRoaXMuYXBwQ29udGV4dFNlcnZpY2UucnBjLnJlZ2lzdGVyKFJwY092ZXJsYXlDbG9zZUtleS5jb21tYW5kLCB0aGlzLm9uT3ZlcmxheUNsb3NlLmJpbmQodGhpcykpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2h1dGRvd24gdGhlIG5hdmlnYXRpb24gY29tbXVuaWNhdGlvbiBmcm9tL3RvIHRoZSBzaGVsbC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNodXRkb3duKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNYXAgZGlhbG9nIHNlcnZpY2UgYW5kIGRpYWxvZyBpZCBzbyB0aGF0IGNvcnJlY3QgZGlhbG9nIHNlcnZpY2UgaW5zdGFuY2UgY2FuIGJlIGZvdW5kXHJcbiAgICAgKiBAcGFyYW0gZGlhbG9nU2VydmljZSBkaWFsb2cgc2VydmljZSB0byBiZSByZWdpc3RlcmVkXHJcbiAgICAgKiBAcGFyYW0gZGlhbG9nSWQgYXNzb2NpYXRlZCBkaWFsb2cgaWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlZ2lzdGVyRGlhbG9nU2VydmljZShkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLCBkaWFsb2dJZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlTWFwW2RpYWxvZ0lkXSA9IGRpYWxvZ1NlcnZpY2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjb25maWd1cmVQZXJmb3JtYW5jZVByb2ZpbGUoZW5hYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHN0YXJ0VGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICBpZiAoZW5hYmxlZCkge1xyXG4gICAgICAgICAgICBQZXJmb3JtYW5jZVByb2ZpbGUuY3VycmVudC5lbmFibGUodGhpcy5hcHBDb250ZXh0U2VydmljZS5ycGMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIFBlcmZvcm1hbmNlUHJvZmlsZS5jdXJyZW50LmRpc2FibGUodGhpcy5hcHBDb250ZXh0U2VydmljZS5ycGMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgUGVyZm9ybWFuY2VQcm9maWxlLmxvZ1JvdXRlTmF2aWdhdGlvbignTmF2aWdhdGlvblNlcnZpY2UnLCBzdGFydFRpbWVzdGFtcCwgRGF0ZS5ub3coKSwgJ1tycGNJbml0XScsIHRoaXMubW9kdWxlTmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBvbkluaXQoZGF0YTogYW55KTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgY29uc3Qgc2VsZiA9IE1zZnRTbWUuc2VsZigpO1xyXG4gICAgICAgIGlmICghTXNmdFNtZS5pc051bGxPclVuZGVmaW5lZChzZWxmLkluaXQuc2Vzc2lvbkV4cGlyYXRpb24pICYmIHNlbGYuSW5pdC5zZXNzaW9uRXhwaXJhdGlvbiA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy51c2VyQWxpdmVTZXJ2aWNlLnN0YXJ0KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBDb25uZWN0aXZpdHlFbmZvcmNlci5yZWdpc3Rlcih0aGlzLmFwcENvbnRleHRTZXJ2aWNlKTtcclxuICAgICAgICB0aGlzLm1vZHVsZU5hbWUgPSBzZWxmLkluaXQubW9kdWxlTmFtZTtcclxuICAgICAgICB0aGlzLmNvbmZpZ3VyZVBlcmZvcm1hbmNlUHJvZmlsZShzZWxmLkluaXQucGVyZm9ybWFuY2VQcm9maWxlKTtcclxuICAgICAgICBQZXJmb3JtYW5jZVByb2ZpbGUubG9nTnVsbCh0aGlzLm1vZHVsZU5hbWUpO1xyXG4gICAgICAgIGlmICghdGhpcy5ScGNPYnNlcnZhYmxlUGVyZm9ybWFuY2VDb25maWdTZXJ2ZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5ScGNPYnNlcnZhYmxlUGVyZm9ybWFuY2VDb25maWdTZXJ2ZXIgPSBuZXcgUnBjT2JzZXJ2YWJsZVBlcmZvcm1hbmNlQ29uZmlnU2VydmVyKHRoaXMuYXBwQ29udGV4dFNlcnZpY2UucnBjKTtcclxuICAgICAgICAgICAgdGhpcy5ScGNPYnNlcnZhYmxlUGVyZm9ybWFuY2VDb25maWdTZXJ2ZXIucmVnaXN0ZXIoKHJlcXVlc3QpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlndXJlUGVyZm9ybWFuY2VQcm9maWxlKHJlcXVlc3QuZW5hYmxlZCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnJwY09ic2VydmFibGVVcGRhdGVUaGVtZVNlcnZlcikge1xyXG4gICAgICAgICAgICB0aGlzLnJwY09ic2VydmFibGVVcGRhdGVUaGVtZVNlcnZlciA9IG5ldyBScGNPYnNlcnZhYmxlVXBkYXRlVGhlbWVTZXJ2ZXIodGhpcy5hcHBDb250ZXh0U2VydmljZS5ycGMpO1xyXG4gICAgICAgICAgICB0aGlzLnJwY09ic2VydmFibGVVcGRhdGVUaGVtZVNlcnZlci5yZWdpc3RlcigocmVxdWVzdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgQ29yZUVudmlyb25tZW50LmFzc2V0TWFuYWdlci5zZXRUaGVtZShyZXF1ZXN0Lm5ld1RoZW1lKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxsIHRvIGRpYWxvZyBzZXJ2aWNlIHRvIHJlcXVlc3QgY2xvc2UgYSBkaWFsb2dcclxuICAgICAqIEBwYXJhbSBkYXRhIGRhdGEgb2JqZWN0IHRvIGNsb3NlIGEgZGlhbG9nIGZyb20gc2hlbGxcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBvbk92ZXJsYXlDbG9zZShkYXRhOiBScGNEaWFsb2dPdmVybGF5RGF0YSk6IFByb21pc2U8UnBjRGlhbG9nT3ZlcmxheVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IGRpYWxvZ1NlcnZpY2UgPSB0aGlzLmRpYWxvZ1NlcnZpY2VNYXBbZGF0YS5kaWFsb2dJZF07XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChkaWFsb2dTZXJ2aWNlKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IGRpYWxvZ1NlcnZpY2Uub3ZlcmxheUNsaWNrZWQoZGF0YS5kaWFsb2dJZCk7XHJcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmRpYWxvZ1NlcnZpY2VNYXBbZGF0YS5kaWFsb2dJZF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgb3ZlcmxheUNsb3NlZDogcmVzdWx0IH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVwZWF0ZWQgb3BlbiBjYWxsZWQgdW50aWwgbmF2aWdhdGlvbiBpcyBlc3RhYmxpc2hlZCBvciBmYWlsZWQuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGRhdGEgdGhlIFJwY09wZW5EYXRhIGRhdGEuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgb25PcGVuKGRhdGE6IFJwY09wZW5EYXRhKTogUHJvbWlzZTxScGNPcGVuUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgY29udGV4dDogU3RhdGVDb250ZXh0PFJwY09wZW5TdGF0ZSwgUnBjT3BlblJlc3VsdD4gPSB0aGlzLm9wZW5Db250ZXh0O1xyXG4gICAgICAgIGlmIChjb250ZXh0LnN0YXRlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0ge1xyXG4gICAgICAgICAgICAgICAgd2FpdGVkVGltZTogRGF0ZS5ub3coKSAtIGNvbnRleHQucmVxdWVzdGVkVGltZSxcclxuICAgICAgICAgICAgICAgIHN0YXRlOiB0aGlzLm9wZW5Db250ZXh0LnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgZXJyb3I6IGNvbnRleHQuZXJyb3JcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgaWYgKGNvbnRleHQuc3RhdGUgIT09IFJwY09wZW5TdGF0ZS5JblByb2dyZXNzKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnN0YXRlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQucmVxdWVzdGVkVGltZSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnRleHQucmVxdWVzdGVkVGltZSA9IERhdGUubm93KCk7XHJcbiAgICAgICAgY29udGV4dC5zdGF0ZSA9IFJwY09wZW5TdGF0ZS5JblByb2dyZXNzO1xyXG4gICAgICAgIGNvbnRleHQuZGVmZXJyZWQgPSBOYXRpdmVRLmRlZmVyPFJwY09wZW5SZXN1bHQ+KCk7XHJcblxyXG4gICAgICAgIC8vIHNldCB0aW1lb3V0IHRvIHJlc3BvbmQgYmFjayBzdGF0dXMgdG8gc2hlbGwuXHJcbiAgICAgICAgY29udGV4dC50aW1lciA9IHNldFRpbWVvdXQoXHJcbiAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuZGVmZXJyZWQucmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FpdGVkVGltZTogRGF0ZS5ub3coKSAtIGNvbnRleHQucmVxdWVzdGVkVGltZSxcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZTogY29udGV4dC5zdGF0ZVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnRpbWVyID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuZGVmZXJyZWQgPSBudWxsO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBOYXZpZ2F0aW9uU2VydmljZS5pbml0aWFsV2FpdFRpbWUpO1xyXG5cclxuICAgICAgICB0aGlzLmFwcENvbnRleHRTZXJ2aWNlLnNlcnZpY2VzUmVhZHlcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICAgICAgbWVyZ2VNYXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgU21lV2ViVGVsZW1ldHJ5LmluaXQodGhpcy5hcHBDb250ZXh0U2VydmljZSkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgICAgIGxvYWRlZCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dpbmcubG9nRGVidWcoJ1NtZVdlYlRlbGVtZXRyeScsIGxvYWRlZCA/ICdMb2FkZWQgYnJvd3NlciB0ZWxlbWV0cnknIDogJ0ZhaWxlZCB0byBsb2FkIGJyb3dzZXIgdGVsZW1ldHJ5Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFBlcmZvcm1hbmNlVHJhY2tlci50cnlTdGFydENhbGN1bGF0aW5nVGltZVRvSW50ZXJhY3RpdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IG5hdmlnYXRpb24gPSBOYXZpZ2F0aW9uLmdldFVybE5hdmlnYXRpb25EYXRhKHRoaXMucm91dGVyLCBkYXRhLnBhdGgpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlKG5hdmlnYXRpb24uY29tbWFuZHMsIHRoaXMuYWRkRGVmYXVsdE5hdmlnYXRpb25PcHRpb25zKG5hdmlnYXRpb24ub3B0aW9ucykpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbWFwKHN1Y2Nlc3MgPT4ge1xyXG4gICAgICAgICAgICAgICAgUGVyZm9ybWFuY2VQcm9maWxlLmxvZ1JvdXRlTmF2aWdhdGlvbihcclxuICAgICAgICAgICAgICAgICAgICAnTmF2aWdhdGlvblNlcnZpY2UnLCBjb250ZXh0LnJlcXVlc3RlZFRpbWUsIERhdGUubm93KCksICdbcnBjT3Blbl0nLCB0aGlzLm1vZHVsZU5hbWUpO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zdGF0ZSA9IFJwY09wZW5TdGF0ZS5PcGVuZWQ7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gaWYgdGltZXIgaXNuJ3QgZmlyZWQgeWV0LCBqdXN0IGNvbXBsZXRlIHdpdGggc3VjY2VzcyBuYXZpZ2F0aW9uLlxyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQudGltZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoY29udGV4dC50aW1lcik7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZWZlcnJlZC5yZXNvbHZlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2FpdGVkVGltZTogRGF0ZS5ub3coKSAtIGNvbnRleHQucmVxdWVzdGVkVGltZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGU6IGNvbnRleHQuc3RhdGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBjb250ZXh0LmVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5zdGF0ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5yZXF1ZXN0ZWRUaW1lID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnRpbWVyID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlZmVycmVkID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yLCBjYXVnaHQpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuc3RhdGUgPSBScGNPcGVuU3RhdGUuRmFpbGVkO1xyXG4gICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSAnJztcclxuICAgICAgICAgICAgICAgIGlmIChlcnJvciAmJiBlcnJvci54aHIpIHtcclxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gTmV0LmdldEVycm9yTWVzc2FnZShlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBlcnJvciA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gZXJyb3I7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvci5zdGFjaykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gZXJyb3Iuc3RhY2s7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlcnJvci5tZXNzYWdlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmVycm9yID0gbWVzc2FnZTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBpZiB0aW1lciBpc24ndCBmaXJlZCB5ZXQsIGp1c3QgY29tcGxldGUgd2l0aCBlcnJvciBuYXZpZ2F0aW9uLlxyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQudGltZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoY29udGV4dC50aW1lcik7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZWZlcnJlZC5yZWplY3QoY29udGV4dC5lcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5zdGF0ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5yZXF1ZXN0ZWRUaW1lID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnRpbWVyID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlZmVycmVkID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgICAgIH0pKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGNvbnRleHQuZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlcGVhdGVkIGNhbGxlZCB1bnRpbCBHdWFyZCBpcyBjb250aW51ZWQgb3IgY2FuY2VsbGVkLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBkYXRhIHRoZSB2b2lkIGRhdGEuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgb25EZWFjdGl2YXRlMihkYXRhOiB2b2lkKTogUHJvbWlzZTxScGNEZWFjdGl2YXRlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3Qgc3RhcnRUaW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgIGNvbnN0IGNvbnRleHQ6IFN0YXRlQ29udGV4dDxScGNEZWFjdGl2YXRlU3RhdGUsIFJwY0RlYWN0aXZhdGVSZXN1bHQ+ID0gdGhpcy5kZWFjdGl2YXRlQ29udGV4dDtcclxuICAgICAgICBpZiAoY29udGV4dC5zdGF0ZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHtcclxuICAgICAgICAgICAgICAgIHdhaXRlZFRpbWU6IERhdGUubm93KCkgLSBjb250ZXh0LnJlcXVlc3RlZFRpbWUsXHJcbiAgICAgICAgICAgICAgICBzdGF0ZTogY29udGV4dC5zdGF0ZVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBpZiAoY29udGV4dC5zdGF0ZSAhPT0gUnBjRGVhY3RpdmF0ZVN0YXRlLkluUHJvZ3Jlc3MpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuc3RhdGUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5yZXF1ZXN0ZWRUaW1lID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgUGVyZm9ybWFuY2VQcm9maWxlLmxvZ1JvdXRlTmF2aWdhdGlvbignTmF2aWdhdGlvblNlcnZpY2UnLCBzdGFydFRpbWVzdGFtcCwgRGF0ZS5ub3coKSwgJ1tycGNEZWFjdGl2YXRlXScsIHRoaXMubW9kdWxlTmFtZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBkZWNvZGVVUkkodGhpcy5yb3V0ZXIudXJsKTtcclxuICAgICAgICBpZiAoY3VycmVudCA9PT0gdGhpcy5pZGxlVXJsKSB7XHJcbiAgICAgICAgICAgIC8vIGl0J3MgYWxyZWFkeSBpbmFjdGl2ZS5cclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICB3YWl0ZWRUaW1lOiAwLFxyXG4gICAgICAgICAgICAgICAgc3RhdGU6IFJwY0RlYWN0aXZhdGVTdGF0ZS5EZWFjdGl2YXRlZFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnRleHQucmVxdWVzdGVkVGltZSA9IERhdGUubm93KCk7XHJcbiAgICAgICAgY29udGV4dC5zdGF0ZSA9IFJwY0RlYWN0aXZhdGVTdGF0ZS5JblByb2dyZXNzO1xyXG4gICAgICAgIGNvbnRleHQuZGVmZXJyZWQgPSBOYXRpdmVRLmRlZmVyPFJwY0RlYWN0aXZhdGVSZXN1bHQ+KCk7XHJcblxyXG4gICAgICAgIC8vIHNldCB0aW1lb3V0IHRvIHJlc3BvbmQgYmFjayBzdGF0dXMgdG8gc2hlbGwuXHJcbiAgICAgICAgY29udGV4dC50aW1lciA9IHNldFRpbWVvdXQoXHJcbiAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuZGVmZXJyZWQucmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FpdGVkVGltZTogRGF0ZS5ub3coKSAtIGNvbnRleHQucmVxdWVzdGVkVGltZSxcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZTogY29udGV4dC5zdGF0ZVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnRpbWVyID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuZGVmZXJyZWQgPSBudWxsO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIGlmIGl0IGlzbid0IGluIHByb2dyZXNzLCByZXNldCB0aGUgc3RhdGUuXHJcbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5zdGF0ZSAhPT0gUnBjRGVhY3RpdmF0ZVN0YXRlLkluUHJvZ3Jlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnN0YXRlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnJlcXVlc3RlZFRpbWUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBOYXZpZ2F0aW9uU2VydmljZS5pbml0aWFsV2FpdFRpbWUpO1xyXG5cclxuICAgICAgICAvLyB0cnkgbmF2aWdhdGUgdG8gaWRsZS5cclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZSh0aGlzLm9wdGlvbnMuaWRsZVJvdXRlLCB0aGlzLmRlZmF1bHROYXZpZ2F0aW9uT3B0aW9ucylcclxuICAgICAgICAgICAgLnRoZW4oXHJcbiAgICAgICAgICAgIHN1Y2Nlc3MgPT4ge1xyXG4gICAgICAgICAgICAgICAgUGVyZm9ybWFuY2VQcm9maWxlLmxvZ1JvdXRlTmF2aWdhdGlvbihcclxuICAgICAgICAgICAgICAgICAgICAnTmF2aWdhdGlvblNlcnZpY2UnLCBzdGFydFRpbWVzdGFtcCwgRGF0ZS5ub3coKSwgJ1tycGNEZWFjdGl2YXRlXScsIHRoaXMubW9kdWxlTmFtZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIG5hdmlnYXRlIGF3YXkgc28gaW5hY3RpdmUgbW9kZS5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGFzdFJvdXRlID0gTmF2aWdhdGlvbi5nZXRVcmxOYXZpZ2F0aW9uRGF0YSh0aGlzLnJvdXRlciwgY3VycmVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5zdGF0ZSA9IFJwY0RlYWN0aXZhdGVTdGF0ZS5EZWFjdGl2YXRlZDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gbmF2aWdhdGUgY2FuY2VsIHNvIGFjdGl2ZSBtb2RlLlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnN0YXRlID0gUnBjRGVhY3RpdmF0ZVN0YXRlLkNhbmNlbGxlZDtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvLyBpZiB0aW1lciBpc24ndCBmaXJlZCB5ZXQsIGp1c3QgY29tcGxldGUgd2l0aCBzdWNjZXNzIG5hdmlnYXRpb24uXHJcbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dC50aW1lcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dChjb250ZXh0LnRpbWVyKTtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlZmVycmVkLnJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3YWl0ZWRUaW1lOiBEYXRlLm5vdygpIC0gY29udGV4dC5yZXF1ZXN0ZWRUaW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogY29udGV4dC5zdGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQudGltZXIgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVmZXJyZWQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc3RhdGUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQucmVxdWVzdGVkVGltZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGVycm9yID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIG5hdmlnYXRlIGVycm9yIHNvIGFjdGl2ZSBtb2RlLlxyXG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zdGF0ZSA9IFJwY0RlYWN0aXZhdGVTdGF0ZS5DYW5jZWxsZWQ7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gaWYgdGltZXIgaXNuJ3QgZmlyZWQgeWV0LCBqdXN0IGNvbXBsZXRlIHdpdGggc3VjY2VzcyBuYXZpZ2F0aW9uLlxyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQudGltZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoY29udGV4dC50aW1lcik7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZWZlcnJlZC5yZXNvbHZlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2FpdGVkVGltZTogRGF0ZS5ub3coKSAtIGNvbnRleHQucmVxdWVzdGVkVGltZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGU6IGNvbnRleHQuc3RhdGVcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnRpbWVyID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlZmVycmVkID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnN0YXRlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnJlcXVlc3RlZFRpbWUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gY29udGV4dC5kZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgb25BY3RpdmF0ZShkYXRhOiBScGNBY3RpdmF0ZURhdGEpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIGNvbnN0IHN0YXJ0VGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICBjb25zdCBuZXdSb3V0ZSA9IGRhdGEudXJsIHx8IGRhdGEudXJsID09PSAnJyA/XHJcbiAgICAgICAgICAgIE5hdmlnYXRpb24uZ2V0VXJsTmF2aWdhdGlvbkRhdGEodGhpcy5yb3V0ZXIsIGRhdGEudXJsKVxyXG4gICAgICAgICAgICA6IHRoaXMubGFzdFJvdXRlIHx8IHsgY29tbWFuZHM6IFsnJ10sIG9wdGlvbnM6IG51bGwgfTtcclxuICAgICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5lbnRlcmluZ01vZHVsZSA9IHRydWU7XHJcblxyXG4gICAgICAgIC8vIE1hbnVhbGx5IGZpcmUgcGFnZSB2aWV3IGZvciBldmVyeSB0aW1lIHdlIHJlYWN0aXZhdGUgYSBtb2R1bGVcclxuICAgICAgICBTbWVXZWJUZWxlbWV0cnkudHJhY2VQYWdlVmlldyh7fSk7XHJcblxyXG4gICAgICAgIC8vIHB1bGwgbGF0ZXN0IHJwYyBmb3J3YXJkZXIgc2VydmljZXMgZGF0YSB3aGVuIHJlYWN0aXZhdGVkLlxyXG4gICAgICAgIHJldHVybiB0aGlzLmFwcENvbnRleHRTZXJ2aWNlLnJlaW5pdGlhbGl6ZVNlcnZpY2VzKClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtZXJnZU1hcCgoKSA9PiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShuZXdSb3V0ZS5jb21tYW5kcywgdGhpcy5hZGREZWZhdWx0TmF2aWdhdGlvbk9wdGlvbnMobmV3Um91dGUub3B0aW9ucykpKSxcclxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiBQZXJmb3JtYW5jZVByb2ZpbGUubG9nUm91dGVOYXZpZ2F0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgICdOYXZpZ2F0aW9uU2VydmljZScsIHN0YXJ0VGltZXN0YW1wLCBEYXRlLm5vdygpLCAnW3JwY0FjdGl2YXRlXScsIHRoaXMubW9kdWxlTmFtZSkpXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC50b1Byb21pc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG9uU2h1dGRvd24oZGF0YTogUnBjU2h1dGRvd25EYXRhKTogUHJvbWlzZTxScGNTaHV0ZG93blJlc3VsdD4ge1xyXG4gICAgICAgIHRoaXMudXNlckFsaXZlU2VydmljZS5zdG9wKCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlKHRoaXMub3B0aW9ucy5pZGxlUm91dGUsIHRoaXMuZGVmYXVsdE5hdmlnYXRpb25PcHRpb25zKVxyXG4gICAgICAgICAgICAudGhlbihyZXN1bHQgPT4gPFJwY1NodXRkb3duUmVzdWx0PnsgY2FuU2h1dGRvd246IHJlc3VsdCB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFkZERlZmF1bHROYXZpZ2F0aW9uT3B0aW9ucyhvcHRpb25zOiBOYXZpZ2F0aW9uRGF0YUV4dHJhcyk6IE5hdmlnYXRpb25FeHRyYXMge1xyXG4gICAgICAgIHJldHVybiB7IC4uLihvcHRpb25zIHx8IHt9KSwgLi4udGhpcy5kZWZhdWx0TmF2aWdhdGlvbk9wdGlvbnMgfTtcclxuICAgIH1cclxufVxyXG4iXX0=
382
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvc2VydmljZS9uYXZpZ2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBb0IsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUNqRyxPQUFPLEVBQWtCLE9BQU8sRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN4RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sOERBQThELENBQUM7QUFDdkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBFQUEwRSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBFQUEwRSxDQUFDO0FBRTlHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLG1HQUFtRyxDQUFDO0FBRXpKLE9BQU8sRUFHSCxrQkFBa0IsRUFHbEIsWUFBWSxFQUNaLG1CQUFtQixFQUd0QixNQUFNLHVEQUF1RCxDQUFDO0FBQy9ELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhGQUE4RixDQUFDO0FBQzlJLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFB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QkFBaUI7dUZBQWpCLGlCQUFpQjtjQUw3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkVuZCwgTmF2aWdhdGlvbkV4dHJhcywgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBDb3JlRW52aXJvbm1lbnQgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL2RhdGEvY29yZS1lbnZpcm9ubWVudCc7XHJcbmltcG9ydCB7IE5hdGl2ZURlZmVycmVkLCBOYXRpdmVRIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9kYXRhL25hdGl2ZS1xJztcclxuaW1wb3J0IHsgTmV0IH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9kYXRhL25ldCc7XHJcbmltcG9ydCB7IExvZ2dpbmcgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL2RpYWdub3N0aWNzL2xvZ2dpbmcnO1xyXG5pbXBvcnQgeyBTbWVXZWJUZWxlbWV0cnkgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL2RpYWdub3N0aWNzL3NtZS13ZWItdGVsZW1ldHJ5JztcclxuaW1wb3J0IHsgUGVyZm9ybWFuY2VQcm9maWxlIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS1wcm9maWxlJztcclxuaW1wb3J0IHsgUGVyZm9ybWFuY2VUcmFja2VyIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS10cmFja2VyJztcclxuaW1wb3J0IHsgUnBjRGlhbG9nT3ZlcmxheURhdGEsIFJwY0RpYWxvZ092ZXJsYXlSZXN1bHQgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL3JwYy9vdmVybGF5L3JwYy1vdmVybGF5LW1vZGVsJztcclxuaW1wb3J0IHsgUnBjT3ZlcmxheUNsb3NlS2V5IH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9ycGMvb3ZlcmxheS9ycGMtb3ZlcmxheS1tb2RlbCc7XHJcbmltcG9ydCB7IFJwY09ic2VydmFibGVQZXJmb3JtYW5jZUNvbmZpZ1NlcnZlciB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvcnBjL3BlcmZvcm1hbmNlL3JwYy1vYnNlcnZhYmxlLXBlcmZvcm1hbmNlLWNvbmZpZy1zZXJ2ZXInO1xyXG5pbXBvcnQgeyBTZWxlY3RhYmxlUGF0aCB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvcnBjL3JlcG9ydC9ycGMtcmVwb3J0LW1vZGVsJztcclxuaW1wb3J0IHtcclxuICAgIFJwY0FjdGl2YXRlRGF0YSxcclxuICAgIFJwY0RlYWN0aXZhdGVSZXN1bHQsXHJcbiAgICBScGNEZWFjdGl2YXRlU3RhdGUsXHJcbiAgICBScGNPcGVuRGF0YSxcclxuICAgIFJwY09wZW5SZXN1bHQsXHJcbiAgICBScGNPcGVuU3RhdGUsXHJcbiAgICBScGNPdXRib3VuZENvbW1hbmRzLFxyXG4gICAgUnBjU2h1dGRvd25EYXRhLFxyXG4gICAgUnBjU2h1dGRvd25SZXN1bHRcclxufSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL3JwYy9ycGMtYmFzZSc7XHJcbmltcG9ydCB7IFJwY09ic2VydmFibGVVcGRhdGVUaGVtZVNlcnZlciB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvcnBjL3VwZGF0ZS10aGVtZS9ycGMtb2JzZXJ2YWJsZS11cGRhdGUtdGhlbWUtc2VydmVyJztcclxuaW1wb3J0IHsgRU1QVFksIG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAsIG1lcmdlTWFwLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uL2NvbnRyb2xzL2RpYWxvZy9kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwcENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi9hcHAtY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29ubmVjdGl2aXR5RW5mb3JjZXIgfSBmcm9tICcuL2Nvbm5lY3Rpdml0eS1lbmZvcmNlcic7XHJcbmltcG9ydCB7IE5hdmlnYXRpb24sIE5hdmlnYXRpb25EYXRhLCBOYXZpZ2F0aW9uRGF0YUV4dHJhcyB9IGZyb20gJy4vbmF2aWdhdGlvbic7XHJcbmltcG9ydCB7IFVzZXJBbGl2ZVNlcnZpY2UgfSBmcm9tICcuL3VzZXItYWxpdmUuc2VydmljZSc7XHJcbi8qKlxyXG4gKiBPcHRpb25zIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZSBuYXZpZ2F0aW9uIHNlcnZpY2VcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTmF2aWdhdG9yU2VydmljZU9wdGlvbnMge1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgYW5ndWxhciAyIGRlZmF1bHQgcm91dGUgdG8gdXNlIGR1cmluZyBpbml0aWFsaXphdGlvbiBhbmRcclxuICAgICAqIGlmIHRoZSBhcHBsaWNhdGlvbiBnZXRzIGRlYWN0aXZhdGVkIGJ1dCBzdGlsbCBydW5uaW5nXHJcbiAgICAgKiBTZWUgQGFuZ3VsYXIvcm91dGVyIC0gUm91dGVyLm5hdmlnYXRlIG1ldGhvZCBmb3IgbW9yZSBkZXRhaWxzXHJcbiAgICAgKi9cclxuICAgIGlkbGVSb3V0ZT86IGFueVtdO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgU3RhdGVDb250ZXh0PFRTdGF0ZSwgVFJlc3VsdD4ge1xyXG4gICAgc3RhdGU6IFRTdGF0ZTtcclxuICAgIHJlcXVlc3RlZFRpbWU6IG51bWJlcjtcclxuICAgIHRpbWVyOiBhbnk7XHJcbiAgICBkZWZlcnJlZDogTmF0aXZlRGVmZXJyZWQ8VFJlc3VsdD47XHJcbiAgICBlcnJvcj86IHN0cmluZztcclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG4vKipcclxuICogT25jZSBpbml0aWFsaXplIHRoaXMgY2xhc3MgdXNlcyB0aGUgdW5kZXJseWluZyBSUEMgY2hhbm5lbFxyXG4gKiB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSByZW1vdGUgUlBDIHNlcnZpY2UuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvblNlcnZpY2Uge1xyXG4gICAgcHJpdmF0ZSBzdGF0aWMgaW5pdGlhbFdhaXRUaW1lID0gMjAwMDtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdE5hdmlnYXRpb25PcHRpb25zOiBOYXZpZ2F0aW9uRXh0cmFzID0geyBza2lwTG9jYXRpb25DaGFuZ2U6IHRydWUgfTtcclxuICAgIHByaXZhdGUgbGFzdFJvdXRlOiBOYXZpZ2F0aW9uRGF0YTtcclxuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgICBwcml2YXRlIG9wdGlvbnM6IE5hdmlnYXRvclNlcnZpY2VPcHRpb25zO1xyXG4gICAgcHJpdmF0ZSBpZGxlVXJsOiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIGFjdGl2ZTogYm9vbGVhbjtcclxuICAgIHByaXZhdGUgZW50ZXJpbmdNb2R1bGUgPSB0cnVlO1xyXG4gICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlTWFwOiB7IFtpbmRleDogc3RyaW5nXTogRGlhbG9nU2VydmljZSB9ID0ge307XHJcbiAgICBwcml2YXRlIG9wZW5Db250ZXh0OiBTdGF0ZUNvbnRleHQ8UnBjT3BlblN0YXRlLCBScGNPcGVuUmVzdWx0PiA9IHtcclxuICAgICAgICBzdGF0ZTogbnVsbCxcclxuICAgICAgICByZXF1ZXN0ZWRUaW1lOiAwLFxyXG4gICAgICAgIHRpbWVyOiBudWxsLFxyXG4gICAgICAgIGRlZmVycmVkOiBudWxsLFxyXG4gICAgICAgIGVycm9yOiBudWxsXHJcbiAgICB9O1xyXG4gICAgcHJpdmF0ZSBkZWFjdGl2YXRlQ29udGV4dDogU3RhdGVDb250ZXh0PFJwY0RlYWN0aXZhdGVTdGF0ZSwgUnBjRGVhY3RpdmF0ZVJlc3VsdD4gPSB7XHJcbiAgICAgICAgc3RhdGU6IG51bGwsXHJcbiAgICAgICAgcmVxdWVzdGVkVGltZTogMCxcclxuICAgICAgICB0aW1lcjogbnVsbCxcclxuICAgICAgICBkZWZlcnJlZDogbnVsbFxyXG4gICAgfTtcclxuICAgIHByaXZhdGUgbW9kdWxlTmFtZTogc3RyaW5nO1xyXG4gICAgcHJpdmF0ZSBScGNPYnNlcnZhYmxlUGVyZm9ybWFuY2VDb25maWdTZXJ2ZXI6IFJwY09ic2VydmFibGVQZXJmb3JtYW5jZUNvbmZpZ1NlcnZlcjtcclxuICAgIHByaXZhdGUgcnBjT2JzZXJ2YWJsZVVwZGF0ZVRoZW1lU2VydmVyOiBScGNPYnNlcnZhYmxlVXBkYXRlVGhlbWVTZXJ2ZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIHRoaXMgc2VydmljZVxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGFwcENvbnRleHRTZXJ2aWNlOiBBcHBDb250ZXh0U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHVzZXJBbGl2ZVNlcnZpY2U6IFVzZXJBbGl2ZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkge1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5pdGlhbGl6ZSBuYXZpZ2F0aW9uIGNvbW11bmljYXRpb24gZnJvbS90byB0aGUgc2hlbGwuXHJcbiAgICAgKlxyXG4gICAgICogIFJlZ2lzdGVycyB0aGUgbWV0aG9kcyB3aXRoIHRoZSByZW1vdGUgUlBDIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0XHJcbiAgICAgKiAgU3Vic2NyaWJlcyB0byB0aGUgcm91dGVyIGV2ZW50cyBhbmQgcmVwb3J0cyB0aGUgYnJlYWRjcnVtYiBpdGVtc1xyXG4gICAgICogIGJhY2sgdG8gdGhlIHJwYyByZW1vdGVcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvclxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaW5pdGlhbGl6ZShvcHRpb25zPzogTmF2aWdhdG9yU2VydmljZU9wdGlvbnMpOiB2b2lkIHtcclxuICAgICAgICBQZXJmb3JtYW5jZVRyYWNrZXIubmF2aWdhdGlvbkluaXRpYWxpemVkKCk7XHJcbiAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgPyBvcHRpb25zIDogeyBpZGxlUm91dGU6IFsnaWRsZSddIH07XHJcbiAgICAgICAgdGhpcy5pZGxlVXJsID0gYC8ke3RoaXMub3B0aW9ucy5pZGxlUm91dGVbMF19YDtcclxuXHJcbiAgICAgICAgLy8gbmF2aWdhdGUgdG8gaWRsZS5cclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZSh0aGlzLm9wdGlvbnMuaWRsZVJvdXRlLCB0aGlzLmRlZmF1bHROYXZpZ2F0aW9uT3B0aW9ucyk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHN0YXJ0VGltZXN0YW1wID0gbnVsbDtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGVyLmV2ZW50c1xyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHRhcChldmVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0VGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgUGVyZm9ybWFuY2VUcmFja2VyLm5hdmlnYXRpb25TdGFydGVkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQgJiYgc3RhcnRUaW1lc3RhbXApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgUGVyZm9ybWFuY2VQcm9maWxlLmxvZ1JvdXRlTmF2aWdhdGlvbignTmF2aWdhdGlvblNlcnZpY2UnLCBzdGFydFRpbWVzdGFtcCwgRGF0ZS5ub3coKSwgZXZlbnQudXJsLCB0aGlzLm1vZHVsZU5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydFRpbWVzdGFtcCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFBlcmZvcm1hbmNlVHJhY2tlci5uYXZpZ2F0aW9uQ29tcGxldGVkKHRoaXMuZW50ZXJpbmdNb2R1bGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoZXZlbnQgPT5cclxuICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLmJ1aWxkU2VsZWN0YWJsZVBhdGhzRm9yUm91dGUodGhpcy5hcHBDb250ZXh0U2VydmljZSwgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucGlwZShtYXAoc2VsZWN0YWJsZVBhdGhzID0+IDxhbnk+eyBldmVudCwgc2VsZWN0YWJsZVBhdGhzIH0pKSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChkYXRhOiB7IGV2ZW50OiBOYXZpZ2F0aW9uRW5kLCBzZWxlY3RhYmxlUGF0aHM6IFNlbGVjdGFibGVQYXRoW119KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBpbiB0aGUgY2FzZSBvZiBpbml0aWFsIGlkbGUgc3RhdGUsIHJlcG9ydGluZyB1cmwgd2lsbCBjYXVzZSBycGMgZXJyb3IuIGFsbCBvdGhlciBjYXNlcyBzaG91bGQgYmUgb2suXHJcbiAgICAgICAgICAgICAgICAvLyBScGNSZXBvcnQgaW5jbHVkZSBmcmFnbWVudCBhbmQgcXVlcnlQYXJhbXMgaW4gJ3BhdGgnIGFuZCAnYmVmb3JlUmVkaXJlY3RlZFBhdGgnLlxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlICYmIGRhdGEuZXZlbnQudXJsICE9PSB0aGlzLmlkbGVVcmwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcENvbnRleHRTZXJ2aWNlLmZyYW1lLnJlcG9ydCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IGRlY29kZVVSSShkYXRhLmV2ZW50LnVybEFmdGVyUmVkaXJlY3RzKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlUmVkaXJlY3RlZFBhdGg6IGRlY29kZVVSSShkYXRhLmV2ZW50LnVybCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGFibGVQYXRoOiBkYXRhLnNlbGVjdGFibGVQYXRoc1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW50ZXJpbmdNb2R1bGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuYXBwQ29udGV4dFNlcnZpY2UucnBjLnJlZ2lzdGVyKFJwY091dGJvdW5kQ29tbWFuZHMuSW5pdCwgdGhpcy5vbkluaXQuYmluZCh0aGlzKSk7XHJcbiAgICAgICAgdGhpcy5hcHBDb250ZXh0U2VydmljZS5ycGMucmVnaXN0ZXIoUnBjT3V0Ym91bmRDb21tYW5kcy5PcGVuLCB0aGlzLm9uT3Blbi5iaW5kKHRoaXMpKTtcclxuICAgICAgICB0aGlzLmFwcENvbnRleHRTZXJ2aWNlLnJwYy5yZWdpc3RlcihScGNPdXRib3VuZENvbW1hbmRzLkRlYWN0aXZhdGUyLCB0aGlzLm9uRGVhY3RpdmF0ZTIuYmluZCh0aGlzKSk7XHJcbiAgICAgICAgdGhpcy5hcHBDb250ZXh0U2VydmljZS5ycGMucmVnaXN0ZXIoUnBjT3V0Ym91bmRDb21tYW5kcy5BY3RpdmF0ZSwgdGhpcy5vbkFjdGl2YXRlLmJpbmQodGhpcykpO1xyXG4gICAgICAgIHRoaXMuYXBwQ29udGV4dFNlcnZpY2UucnBjLnJlZ2lzdGVyKFJwY091dGJvdW5kQ29tbWFuZHMuU2h1dGRvd24sIHRoaXMub25TaHV0ZG93bi5iaW5kKHRoaXMpKTtcclxuICAgICAgICB0aGlzLmFwcENvbnRleHRTZXJ2aWNlLnJwYy5yZWdpc3RlcihScGNPdmVybGF5Q2xvc2VLZXkuY29tbWFuZCwgdGhpcy5vbk92ZXJsYXlDbG9zZS5iaW5kKHRoaXMpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNodXRkb3duIHRoZSBuYXZpZ2F0aW9uIGNvbW11bmljYXRpb24gZnJvbS90byB0aGUgc2hlbGwuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzaHV0ZG93bigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWFwIGRpYWxvZyBzZXJ2aWNlIGFuZCBkaWFsb2cgaWQgc28gdGhhdCBjb3JyZWN0IGRpYWxvZyBzZXJ2aWNlIGluc3RhbmNlIGNhbiBiZSBmb3VuZFxyXG4gICAgICogQHBhcmFtIGRpYWxvZ1NlcnZpY2UgZGlhbG9nIHNlcnZpY2UgdG8gYmUgcmVnaXN0ZXJlZFxyXG4gICAgICogQHBhcmFtIGRpYWxvZ0lkIGFzc29jaWF0ZWQgZGlhbG9nIGlkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZWdpc3RlckRpYWxvZ1NlcnZpY2UoZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSwgZGlhbG9nSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZU1hcFtkaWFsb2dJZF0gPSBkaWFsb2dTZXJ2aWNlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY29uZmlndXJlUGVyZm9ybWFuY2VQcm9maWxlKGVuYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBzdGFydFRpbWVzdGFtcCA9IERhdGUubm93KCk7XHJcbiAgICAgICAgaWYgKGVuYWJsZWQpIHtcclxuICAgICAgICAgICAgUGVyZm9ybWFuY2VQcm9maWxlLmN1cnJlbnQuZW5hYmxlKHRoaXMuYXBwQ29udGV4dFNlcnZpY2UucnBjKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBQZXJmb3JtYW5jZVByb2ZpbGUuY3VycmVudC5kaXNhYmxlKHRoaXMuYXBwQ29udGV4dFNlcnZpY2UucnBjKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIFBlcmZvcm1hbmNlUHJvZmlsZS5sb2dSb3V0ZU5hdmlnYXRpb24oJ05hdmlnYXRpb25TZXJ2aWNlJywgc3RhcnRUaW1lc3RhbXAsIERhdGUubm93KCksICdbcnBjSW5pdF0nLCB0aGlzLm1vZHVsZU5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgb25Jbml0KGRhdGE6IGFueSk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgLy8gSWZyYW1lIGhhcyByZWNlaXZlZCBhbGwgaW5pdGlhbGl6YXRpb24gZGF0YSBmcm9tIHRoZSBzaGVsbC5cclxuICAgICAgICB0aGlzLmFwcENvbnRleHRTZXJ2aWNlLmdhdGV3YXkubmF2aWdhdGlvblJlYWR5U3RhdHVzID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IHNlbGYgPSBNc2Z0U21lLnNlbGYoKTtcclxuICAgICAgICBpZiAoIU1zZnRTbWUuaXNOdWxsT3JVbmRlZmluZWQoc2VsZi5Jbml0LnNlc3Npb25FeHBpcmF0aW9uKSAmJiBzZWxmLkluaXQuc2Vzc2lvbkV4cGlyYXRpb24gPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXNlckFsaXZlU2VydmljZS5zdGFydCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQ29ubmVjdGl2aXR5RW5mb3JjZXIucmVnaXN0ZXIodGhpcy5hcHBDb250ZXh0U2VydmljZSk7XHJcbiAgICAgICAgdGhpcy5tb2R1bGVOYW1lID0gc2VsZi5Jbml0Lm1vZHVsZU5hbWU7XHJcbiAgICAgICAgdGhpcy5jb25maWd1cmVQZXJmb3JtYW5jZVByb2ZpbGUoc2VsZi5Jbml0LnBlcmZvcm1hbmNlUHJvZmlsZSk7XHJcbiAgICAgICAgUGVyZm9ybWFuY2VQcm9maWxlLmxvZ051bGwodGhpcy5tb2R1bGVOYW1lKTtcclxuICAgICAgICBpZiAoIXRoaXMuUnBjT2JzZXJ2YWJsZVBlcmZvcm1hbmNlQ29uZmlnU2VydmVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuUnBjT2JzZXJ2YWJsZVBlcmZvcm1hbmNlQ29uZmlnU2VydmVyID0gbmV3IFJwY09ic2VydmFibGVQZXJmb3JtYW5jZUNvbmZpZ1NlcnZlcih0aGlzLmFwcENvbnRleHRTZXJ2aWNlLnJwYyk7XHJcbiAgICAgICAgICAgIHRoaXMuUnBjT2JzZXJ2YWJsZVBlcmZvcm1hbmNlQ29uZmlnU2VydmVyLnJlZ2lzdGVyKChyZXF1ZXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ3VyZVBlcmZvcm1hbmNlUHJvZmlsZShyZXF1ZXN0LmVuYWJsZWQpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5ycGNPYnNlcnZhYmxlVXBkYXRlVGhlbWVTZXJ2ZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5ycGNPYnNlcnZhYmxlVXBkYXRlVGhlbWVTZXJ2ZXIgPSBuZXcgUnBjT2JzZXJ2YWJsZVVwZGF0ZVRoZW1lU2VydmVyKHRoaXMuYXBwQ29udGV4dFNlcnZpY2UucnBjKTtcclxuICAgICAgICAgICAgdGhpcy5ycGNPYnNlcnZhYmxlVXBkYXRlVGhlbWVTZXJ2ZXIucmVnaXN0ZXIoKHJlcXVlc3QpID0+IHtcclxuICAgICAgICAgICAgICAgIENvcmVFbnZpcm9ubWVudC5hc3NldE1hbmFnZXIuc2V0VGhlbWUocmVxdWVzdC5uZXdUaGVtZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbCB0byBkaWFsb2cgc2VydmljZSB0byByZXF1ZXN0IGNsb3NlIGEgZGlhbG9nXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBkYXRhIG9iamVjdCB0byBjbG9zZSBhIGRpYWxvZyBmcm9tIHNoZWxsXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgb25PdmVybGF5Q2xvc2UoZGF0YTogUnBjRGlhbG9nT3ZlcmxheURhdGEpOiBQcm9taXNlPFJwY0RpYWxvZ092ZXJsYXlSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBkaWFsb2dTZXJ2aWNlID0gdGhpcy5kaWFsb2dTZXJ2aWNlTWFwW2RhdGEuZGlhbG9nSWRdO1xyXG4gICAgICAgIGxldCByZXN1bHQgPSBmYWxzZTtcclxuICAgICAgICBpZiAoZGlhbG9nU2VydmljZSkge1xyXG4gICAgICAgICAgICByZXN1bHQgPSBkaWFsb2dTZXJ2aWNlLm92ZXJsYXlDbGlja2VkKGRhdGEuZGlhbG9nSWQpO1xyXG4gICAgICAgICAgICBkZWxldGUgdGhpcy5kaWFsb2dTZXJ2aWNlTWFwW2RhdGEuZGlhbG9nSWRdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IG92ZXJsYXlDbG9zZWQ6IHJlc3VsdCB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlcGVhdGVkIG9wZW4gY2FsbGVkIHVudGlsIG5hdmlnYXRpb24gaXMgZXN0YWJsaXNoZWQgb3IgZmFpbGVkLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBkYXRhIHRoZSBScGNPcGVuRGF0YSBkYXRhLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIG9uT3BlbihkYXRhOiBScGNPcGVuRGF0YSk6IFByb21pc2U8UnBjT3BlblJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IGNvbnRleHQ6IFN0YXRlQ29udGV4dDxScGNPcGVuU3RhdGUsIFJwY09wZW5SZXN1bHQ+ID0gdGhpcy5vcGVuQ29udGV4dDtcclxuICAgICAgICBpZiAoY29udGV4dC5zdGF0ZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHtcclxuICAgICAgICAgICAgICAgIHdhaXRlZFRpbWU6IERhdGUubm93KCkgLSBjb250ZXh0LnJlcXVlc3RlZFRpbWUsXHJcbiAgICAgICAgICAgICAgICBzdGF0ZTogdGhpcy5vcGVuQ29udGV4dC5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiBjb250ZXh0LmVycm9yXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGlmIChjb250ZXh0LnN0YXRlICE9PSBScGNPcGVuU3RhdGUuSW5Qcm9ncmVzcykge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zdGF0ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnJlcXVlc3RlZFRpbWUgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb250ZXh0LnJlcXVlc3RlZFRpbWUgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgIGNvbnRleHQuc3RhdGUgPSBScGNPcGVuU3RhdGUuSW5Qcm9ncmVzcztcclxuICAgICAgICBjb250ZXh0LmRlZmVycmVkID0gTmF0aXZlUS5kZWZlcjxScGNPcGVuUmVzdWx0PigpO1xyXG5cclxuICAgICAgICAvLyBzZXQgdGltZW91dCB0byByZXNwb25kIGJhY2sgc3RhdHVzIHRvIHNoZWxsLlxyXG4gICAgICAgIGNvbnRleHQudGltZXIgPSBzZXRUaW1lb3V0KFxyXG4gICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmRlZmVycmVkLnJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHdhaXRlZFRpbWU6IERhdGUubm93KCkgLSBjb250ZXh0LnJlcXVlc3RlZFRpbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGU6IGNvbnRleHQuc3RhdGVcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC50aW1lciA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmRlZmVycmVkID0gbnVsbDtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgTmF2aWdhdGlvblNlcnZpY2UuaW5pdGlhbFdhaXRUaW1lKTtcclxuXHJcbiAgICAgICAgdGhpcy5hcHBDb250ZXh0U2VydmljZS5zZXJ2aWNlc1JlYWR5XHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgICAgIG1lcmdlTWFwKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIFNtZVdlYlRlbGVtZXRyeS5pbml0KHRoaXMuYXBwQ29udGV4dFNlcnZpY2UpLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgICAgICBsb2FkZWQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnaW5nLmxvZ0RlYnVnKCdTbWVXZWJUZWxlbWV0cnknLCBsb2FkZWQgPyAnTG9hZGVkIGJyb3dzZXIgdGVsZW1ldHJ5JyA6ICdGYWlsZWQgdG8gbG9hZCBicm93c2VyIHRlbGVtZXRyeScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBQZXJmb3JtYW5jZVRyYWNrZXIudHJ5U3RhcnRDYWxjdWxhdGluZ1RpbWVUb0ludGVyYWN0aXZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBuYXZpZ2F0aW9uID0gTmF2aWdhdGlvbi5nZXRVcmxOYXZpZ2F0aW9uRGF0YSh0aGlzLnJvdXRlciwgZGF0YS5wYXRoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShuYXZpZ2F0aW9uLmNvbW1hbmRzLCB0aGlzLmFkZERlZmF1bHROYXZpZ2F0aW9uT3B0aW9ucyhuYXZpZ2F0aW9uLm9wdGlvbnMpKTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG1hcChzdWNjZXNzID0+IHtcclxuICAgICAgICAgICAgICAgIFBlcmZvcm1hbmNlUHJvZmlsZS5sb2dSb3V0ZU5hdmlnYXRpb24oXHJcbiAgICAgICAgICAgICAgICAgICAgJ05hdmlnYXRpb25TZXJ2aWNlJywgY29udGV4dC5yZXF1ZXN0ZWRUaW1lLCBEYXRlLm5vdygpLCAnW3JwY09wZW5dJywgdGhpcy5tb2R1bGVOYW1lKTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuc3RhdGUgPSBScGNPcGVuU3RhdGUuT3BlbmVkO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIGlmIHRpbWVyIGlzbid0IGZpcmVkIHlldCwganVzdCBjb21wbGV0ZSB3aXRoIHN1Y2Nlc3MgbmF2aWdhdGlvbi5cclxuICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LnRpbWVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGNvbnRleHQudGltZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVmZXJyZWQucmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRlZFRpbWU6IERhdGUubm93KCkgLSBjb250ZXh0LnJlcXVlc3RlZFRpbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiBjb250ZXh0LnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogY29udGV4dC5lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc3RhdGUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQucmVxdWVzdGVkVGltZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC50aW1lciA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZWZlcnJlZCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvciwgY2F1Z2h0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnN0YXRlID0gUnBjT3BlblN0YXRlLkZhaWxlZDtcclxuICAgICAgICAgICAgICAgIGxldCBtZXNzYWdlID0gJyc7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3IgJiYgZXJyb3IueGhyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IE5ldC5nZXRFcnJvck1lc3NhZ2UoZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZXJyb3IgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IGVycm9yO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3Iuc3RhY2spIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IGVycm9yLnN0YWNrO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXJyb3IubWVzc2FnZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gZXJyb3IubWVzc2FnZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29udGV4dC5lcnJvciA9IG1lc3NhZ2U7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gaWYgdGltZXIgaXNuJ3QgZmlyZWQgeWV0LCBqdXN0IGNvbXBsZXRlIHdpdGggZXJyb3IgbmF2aWdhdGlvbi5cclxuICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LnRpbWVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGNvbnRleHQudGltZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVmZXJyZWQucmVqZWN0KGNvbnRleHQuZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc3RhdGUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQucmVxdWVzdGVkVGltZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC50aW1lciA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZWZlcnJlZCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgICAgICB9KSlcclxuICAgICAgICAuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgICAgIHJldHVybiBjb250ZXh0LmRlZmVycmVkLnByb21pc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXBlYXRlZCBjYWxsZWQgdW50aWwgR3VhcmQgaXMgY29udGludWVkIG9yIGNhbmNlbGxlZC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZGF0YSB0aGUgdm9pZCBkYXRhLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIG9uRGVhY3RpdmF0ZTIoZGF0YTogdm9pZCk6IFByb21pc2U8UnBjRGVhY3RpdmF0ZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IHN0YXJ0VGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICBjb25zdCBjb250ZXh0OiBTdGF0ZUNvbnRleHQ8UnBjRGVhY3RpdmF0ZVN0YXRlLCBScGNEZWFjdGl2YXRlUmVzdWx0PiA9IHRoaXMuZGVhY3RpdmF0ZUNvbnRleHQ7XHJcbiAgICAgICAgaWYgKGNvbnRleHQuc3RhdGUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB7XHJcbiAgICAgICAgICAgICAgICB3YWl0ZWRUaW1lOiBEYXRlLm5vdygpIC0gY29udGV4dC5yZXF1ZXN0ZWRUaW1lLFxyXG4gICAgICAgICAgICAgICAgc3RhdGU6IGNvbnRleHQuc3RhdGVcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgaWYgKGNvbnRleHQuc3RhdGUgIT09IFJwY0RlYWN0aXZhdGVTdGF0ZS5JblByb2dyZXNzKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnN0YXRlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQucmVxdWVzdGVkVGltZSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIFBlcmZvcm1hbmNlUHJvZmlsZS5sb2dSb3V0ZU5hdmlnYXRpb24oJ05hdmlnYXRpb25TZXJ2aWNlJywgc3RhcnRUaW1lc3RhbXAsIERhdGUubm93KCksICdbcnBjRGVhY3RpdmF0ZV0nLCB0aGlzLm1vZHVsZU5hbWUpO1xyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBjdXJyZW50ID0gZGVjb2RlVVJJKHRoaXMucm91dGVyLnVybCk7XHJcbiAgICAgICAgaWYgKGN1cnJlbnQgPT09IHRoaXMuaWRsZVVybCkge1xyXG4gICAgICAgICAgICAvLyBpdCdzIGFscmVhZHkgaW5hY3RpdmUuXHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgd2FpdGVkVGltZTogMCxcclxuICAgICAgICAgICAgICAgIHN0YXRlOiBScGNEZWFjdGl2YXRlU3RhdGUuRGVhY3RpdmF0ZWRcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb250ZXh0LnJlcXVlc3RlZFRpbWUgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgIGNvbnRleHQuc3RhdGUgPSBScGNEZWFjdGl2YXRlU3RhdGUuSW5Qcm9ncmVzcztcclxuICAgICAgICBjb250ZXh0LmRlZmVycmVkID0gTmF0aXZlUS5kZWZlcjxScGNEZWFjdGl2YXRlUmVzdWx0PigpO1xyXG5cclxuICAgICAgICAvLyBzZXQgdGltZW91dCB0byByZXNwb25kIGJhY2sgc3RhdHVzIHRvIHNoZWxsLlxyXG4gICAgICAgIGNvbnRleHQudGltZXIgPSBzZXRUaW1lb3V0KFxyXG4gICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmRlZmVycmVkLnJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHdhaXRlZFRpbWU6IERhdGUubm93KCkgLSBjb250ZXh0LnJlcXVlc3RlZFRpbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGU6IGNvbnRleHQuc3RhdGVcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC50aW1lciA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmRlZmVycmVkID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBpZiBpdCBpc24ndCBpbiBwcm9ncmVzcywgcmVzZXQgdGhlIHN0YXRlLlxyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQuc3RhdGUgIT09IFJwY0RlYWN0aXZhdGVTdGF0ZS5JblByb2dyZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5zdGF0ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5yZXF1ZXN0ZWRUaW1lID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgTmF2aWdhdGlvblNlcnZpY2UuaW5pdGlhbFdhaXRUaW1lKTtcclxuXHJcbiAgICAgICAgLy8gdHJ5IG5hdmlnYXRlIHRvIGlkbGUuXHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUodGhpcy5vcHRpb25zLmlkbGVSb3V0ZSwgdGhpcy5kZWZhdWx0TmF2aWdhdGlvbk9wdGlvbnMpXHJcbiAgICAgICAgICAgIC50aGVuKFxyXG4gICAgICAgICAgICBzdWNjZXNzID0+IHtcclxuICAgICAgICAgICAgICAgIFBlcmZvcm1hbmNlUHJvZmlsZS5sb2dSb3V0ZU5hdmlnYXRpb24oXHJcbiAgICAgICAgICAgICAgICAgICAgJ05hdmlnYXRpb25TZXJ2aWNlJywgc3RhcnRUaW1lc3RhbXAsIERhdGUubm93KCksICdbcnBjRGVhY3RpdmF0ZV0nLCB0aGlzLm1vZHVsZU5hbWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBuYXZpZ2F0ZSBhd2F5IHNvIGluYWN0aXZlIG1vZGUuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxhc3RSb3V0ZSA9IE5hdmlnYXRpb24uZ2V0VXJsTmF2aWdhdGlvbkRhdGEodGhpcy5yb3V0ZXIsIGN1cnJlbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc3RhdGUgPSBScGNEZWFjdGl2YXRlU3RhdGUuRGVhY3RpdmF0ZWQ7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIG5hdmlnYXRlIGNhbmNlbCBzbyBhY3RpdmUgbW9kZS5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5zdGF0ZSA9IFJwY0RlYWN0aXZhdGVTdGF0ZS5DYW5jZWxsZWQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gaWYgdGltZXIgaXNuJ3QgZmlyZWQgeWV0LCBqdXN0IGNvbXBsZXRlIHdpdGggc3VjY2VzcyBuYXZpZ2F0aW9uLlxyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQudGltZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoY29udGV4dC50aW1lcik7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZWZlcnJlZC5yZXNvbHZlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2FpdGVkVGltZTogRGF0ZS5ub3coKSAtIGNvbnRleHQucmVxdWVzdGVkVGltZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGU6IGNvbnRleHQuc3RhdGVcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnRpbWVyID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlZmVycmVkID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnN0YXRlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnJlcXVlc3RlZFRpbWUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBuYXZpZ2F0ZSBlcnJvciBzbyBhY3RpdmUgbW9kZS5cclxuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuc3RhdGUgPSBScGNEZWFjdGl2YXRlU3RhdGUuQ2FuY2VsbGVkO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIGlmIHRpbWVyIGlzbid0IGZpcmVkIHlldCwganVzdCBjb21wbGV0ZSB3aXRoIHN1Y2Nlc3MgbmF2aWdhdGlvbi5cclxuICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LnRpbWVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGNvbnRleHQudGltZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVmZXJyZWQucmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRlZFRpbWU6IERhdGUubm93KCkgLSBjb250ZXh0LnJlcXVlc3RlZFRpbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiBjb250ZXh0LnN0YXRlXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC50aW1lciA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZWZlcnJlZCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5zdGF0ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5yZXF1ZXN0ZWRUaW1lID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGNvbnRleHQuZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG9uQWN0aXZhdGUoZGF0YTogUnBjQWN0aXZhdGVEYXRhKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBjb25zdCBzdGFydFRpbWVzdGFtcCA9IERhdGUubm93KCk7XHJcbiAgICAgICAgY29uc3QgbmV3Um91dGUgPSBkYXRhLnVybCB8fCBkYXRhLnVybCA9PT0gJycgP1xyXG4gICAgICAgICAgICBOYXZpZ2F0aW9uLmdldFVybE5hdmlnYXRpb25EYXRhKHRoaXMucm91dGVyLCBkYXRhLnVybClcclxuICAgICAgICAgICAgOiB0aGlzLmxhc3RSb3V0ZSB8fCB7IGNvbW1hbmRzOiBbJyddLCBvcHRpb25zOiBudWxsIH07XHJcbiAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZW50ZXJpbmdNb2R1bGUgPSB0cnVlO1xyXG5cclxuICAgICAgICAvLyBNYW51YWxseSBmaXJlIHBhZ2UgdmlldyBmb3IgZXZlcnkgdGltZSB3ZSByZWFjdGl2YXRlIGEgbW9kdWxlXHJcbiAgICAgICAgU21lV2ViVGVsZW1ldHJ5LnRyYWNlUGFnZVZpZXcoe30pO1xyXG5cclxuICAgICAgICAvLyBwdWxsIGxhdGVzdCBycGMgZm9yd2FyZGVyIHNlcnZpY2VzIGRhdGEgd2hlbiByZWFjdGl2YXRlZC5cclxuICAgICAgICByZXR1cm4gdGhpcy5hcHBDb250ZXh0U2VydmljZS5yZWluaXRpYWxpemVTZXJ2aWNlcygpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWVyZ2VNYXAoKCkgPT4gdGhpcy5yb3V0ZXIubmF2aWdhdGUobmV3Um91dGUuY29tbWFuZHMsIHRoaXMuYWRkRGVmYXVsdE5hdmlnYXRpb25PcHRpb25zKG5ld1JvdXRlLm9wdGlvbnMpKSksXHJcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4gUGVyZm9ybWFuY2VQcm9maWxlLmxvZ1JvdXRlTmF2aWdhdGlvbihcclxuICAgICAgICAgICAgICAgICAgICAnTmF2aWdhdGlvblNlcnZpY2UnLCBzdGFydFRpbWVzdGFtcCwgRGF0ZS5ub3coKSwgJ1tycGNBY3RpdmF0ZV0nLCB0aGlzLm1vZHVsZU5hbWUpKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBvblNodXRkb3duKGRhdGE6IFJwY1NodXRkb3duRGF0YSk6IFByb21pc2U8UnBjU2h1dGRvd25SZXN1bHQ+IHtcclxuICAgICAgICB0aGlzLnVzZXJBbGl2ZVNlcnZpY2Uuc3RvcCgpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZSh0aGlzLm9wdGlvbnMuaWRsZVJvdXRlLCB0aGlzLmRlZmF1bHROYXZpZ2F0aW9uT3B0aW9ucylcclxuICAgICAgICAgICAgLnRoZW4ocmVzdWx0ID0+IDxScGNTaHV0ZG93blJlc3VsdD57IGNhblNodXRkb3duOiByZXN1bHQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhZGREZWZhdWx0TmF2aWdhdGlvbk9wdGlvbnMob3B0aW9uczogTmF2aWdhdGlvbkRhdGFFeHRyYXMpOiBOYXZpZ2F0aW9uRXh0cmFzIHtcclxuICAgICAgICByZXR1cm4geyAuLi4ob3B0aW9ucyB8fCB7fSksIC4uLnRoaXMuZGVmYXVsdE5hdmlnYXRpb25PcHRpb25zIH07XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -36055,8 +36055,8 @@ function MasterViewComponent_button_16_Template(rf, ctx) {
36055
36055
  }
36056
36056
  if (rf & 2) {
36057
36057
  const ctx_r7 = i0.ɵɵnextContext();
36058
- i0.ɵɵproperty("title", ctx_r7.resourceStrings.refresh.title);
36059
- i0.ɵɵattribute("aria-disabled", ctx_r7.disableRefresh)("aria-label", ctx_r7.refreshButtonAriaLabel);
36058
+ i0.ɵɵproperty("title", ctx_r7.refreshTooltipText || ctx_r7.resourceStrings.refresh.title);
36059
+ i0.ɵɵattribute("aria-disabled", ctx_r7.disableRefresh)("aria-label", ctx_r7.refreshTooltipText || ctx_r7.refreshButtonAriaLabel);
36060
36060
  }
36061
36061
  }
36062
36062
  function MasterViewComponent_button_17_Template(rf, ctx) {
@@ -36164,7 +36164,7 @@ class MasterViewComponent extends SpacerBaseDirective {
36164
36164
  */
36165
36165
  this.showRefresh = true;
36166
36166
  /**
36167
- * It determines whether to disable to refresh button.
36167
+ * It determines whether to disable the refresh button.
36168
36168
  */
36169
36169
  this.disableRefresh = false;
36170
36170
  /**
@@ -36644,7 +36644,7 @@ class MasterViewComponent extends SpacerBaseDirective {
36644
36644
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dataView = _t.first);
36645
36645
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.smeMasterViewContentDirective = _t.first);
36646
36646
  }
36647
- }, inputs: { hideHeader: "hideHeader", header: "header", total: "total", showSelection: "showSelection", showColumnPicker: "showColumnPicker", showDownloadButton: "showDownloadButton", getDownloadContextParameters: "getDownloadContextParameters", columnPickerActive: "columnPickerActive", showRefresh: "showRefresh", disableRefresh: "disableRefresh", dataTableMinWidth: "dataTableMinWidth", showFilter: "showFilter", filterActive: "filterActive", downloadActive: "downloadActive", enableQueryEditor: "enableQueryEditor", selection: "selection", requireDataItemUniqueId: "requireDataItemUniqueId", showCustomFilter: "showCustomFilter", groupActive: "groupActive", stretchToAbsolute: "stretchToAbsolute", autoExpandDetailsPane: "autoExpandDetailsPane", showGroup: "showGroup", downloadDataType: "downloadDataType" }, outputs: { selectionChange: "selectionChange", downloadPrompted: "downloadPrompted", downloadFinished: "downloadFinished", columnPicker: "columnPicker", refresh: "refresh", filter: "filter", group: "group", clearSelection: "clearSelection", smeDataTableFromTemplateReady: "smeDataTableFromTemplateReady", layoutChanged: "layoutChanged", windowBreakpointChanged: "windowBreakpointChanged" }, features: [i0.ɵɵProvidersFeature([
36647
+ }, inputs: { hideHeader: "hideHeader", header: "header", total: "total", showSelection: "showSelection", showColumnPicker: "showColumnPicker", showDownloadButton: "showDownloadButton", getDownloadContextParameters: "getDownloadContextParameters", columnPickerActive: "columnPickerActive", showRefresh: "showRefresh", disableRefresh: "disableRefresh", dataTableMinWidth: "dataTableMinWidth", showFilter: "showFilter", filterActive: "filterActive", downloadActive: "downloadActive", enableQueryEditor: "enableQueryEditor", selection: "selection", requireDataItemUniqueId: "requireDataItemUniqueId", showCustomFilter: "showCustomFilter", groupActive: "groupActive", stretchToAbsolute: "stretchToAbsolute", autoExpandDetailsPane: "autoExpandDetailsPane", showGroup: "showGroup", downloadDataType: "downloadDataType", refreshTooltipText: "refreshTooltipText" }, outputs: { selectionChange: "selectionChange", downloadPrompted: "downloadPrompted", downloadFinished: "downloadFinished", columnPicker: "columnPicker", refresh: "refresh", filter: "filter", group: "group", clearSelection: "clearSelection", smeDataTableFromTemplateReady: "smeDataTableFromTemplateReady", layoutChanged: "layoutChanged", windowBreakpointChanged: "windowBreakpointChanged" }, features: [i0.ɵɵProvidersFeature([
36648
36648
  { provide: SME_LAYOUT_PROVIDER, useExisting: forwardRef((() => MasterViewComponent)) }
36649
36649
  ]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c5$1, decls: 25, vars: 36, consts: [["class", "sme-position-flex-none sme-padding-squish-v-lg sme-arrange-word-wrap-break-word sme-font-h3", 3, "hidden", "id", 4, "ngIf"], [3, "layoutChanged"], ["layout", ""], ["name", "narrow", 3, "until"], ["class", "sme-position-flex-none", 3, "sme-padding-horizontal-sm", 4, "ngIf"], [1, "sme-position-flex-none", "sme-arrange-stack-reversed"], ["container", ""], [1, "sme-position-flex-none", "sme-arrange-stack-h"], [1, "sme-focus-zone", "sme-position-flex-none", "sme-arrange-stack-h", "sme-arrange-ws-nowrap", "sme-scheme-secondary-text"], ["role", "status", 1, "sme-layout-action-bar-item", "sme-padding-horizontal-sm", 3, "id"], ["type", "button", "role", "button", "class", "sme-button-trigger sme-layout-action-bar-item-height sme-scheme-secondary-text sme-button-auto-width", 3, "click", 4, "ngIf"], [1, "sme-focus-zone", "sme-arrange-ws-nowrap"], ["type", "button", "role", "button", "title", "Download", "class", "sme-layout-action-bar-item-height sme-button-trigger sme-button-auto-width", "data-uta-id", "download-button", 3, "sme-toggled", "click", 4, "ngIf"], ["type", "button", "role", "button", "class", "sme-layout-action-bar-item-height sme-button-trigger sme-button-auto-width", "data-uta-id", "column-picker-button", 3, "title", "sme-toggled", "click", 4, "ngIf"], ["aria-live", "polite", "type", "button", "role", "button", "class", "sme-layout-action-bar-item-height sme-button-trigger sme-button-auto-width", 3, "title", "click", 4, "ngIf"], ["type", "button", "role", "button", "class", "sme-layout-action-bar-item-height sme-button-trigger sme-button-auto-width", 3, "title", "sme-toggled", "click", 4, "ngIf"], [1, "sme-focus-zone"], ["class", "sme-margin-horizontal-sm", 4, "ngIf"], ["style", "position: relative;", 4, "ngIf"], ["smeMasterViewContentDirective", "", 3, "smeDataTableFromTemplateReady"], ["dataView", ""], [1, "sme-position-flex-none", "sme-padding-squish-v-lg", "sme-arrange-word-wrap-break-word", "sme-font-h3", 3, "hidden", "id"], [1, "sme-position-flex-none"], ["type", "button", "role", "button", 1, "sme-button-trigger", "sme-layout-action-bar-item-height", "sme-scheme-secondary-text", "sme-button-auto-width", 3, "click"], ["aria-hidden", "true"], [1, "sme-screen-reader"], ["aria-hidden", "true", 1, "sme-icon", "sme-icon-clear", "sme-margin-left-xs", 3, "title"], ["type", "button", "role", "button", "title", "Download", "data-uta-id", "download-button", 1, "sme-layout-action-bar-item-height", "sme-button-trigger", "sme-button-auto-width", 3, "click"], [1, "sme-icon", "sme-icon-download"], ["type", "button", "role", "button", "data-uta-id", "column-picker-button", 1, "sme-layout-action-bar-item-height", "sme-button-trigger", "sme-button-auto-width", 3, "title", "click"], [1, "sme-icon", "sme-icon-tripleColumn"], ["aria-live", "polite", "type", "button", "role", "button", 1, "sme-layout-action-bar-item-height", "sme-button-trigger", "sme-button-auto-width", 3, "title", "click"], [1, "sme-icon", "sme-icon-refresh"], ["type", "button", "role", "button", 1, "sme-layout-action-bar-item-height", "sme-button-trigger", "sme-button-auto-width", 3, "title", "click"], [1, "sme-icon", "sme-icon-filter"], [1, "sme-icon", "sme-icon-groupedList"], [1, "sme-margin-horizontal-sm"], [2, "position", "relative"], [1, "sme-position-flex-none", "sme-layout-action-bar-item"]], template: function MasterViewComponent_Template(rf, ctx) {
36650
36650
  if (rf & 1) {
@@ -36734,7 +36734,7 @@ __decorate([
36734
36734
  type: Component,
36735
36735
  args: [{ selector: 'sme-master-view', providers: [
36736
36736
  { provide: SME_LAYOUT_PROVIDER, useExisting: forwardRef((() => MasterViewComponent)) }
36737
- ], template: "<h2 class=\"sme-position-flex-none sme-padding-squish-v-lg sme-arrange-word-wrap-break-word sme-font-h3\" *ngIf=\"header\"\r\n [hidden]=\"hideHeader\" [id]='headerId'>{{ header }}</h2>\r\n<sme-layout #layout (layoutChanged)=\"updateActionBar()\">\r\n <sme-layout-definition name=\"narrow\" [until]=\"768\"></sme-layout-definition>\r\n</sme-layout>\r\n<div *ngIf=\"enableQueryEditor\" class=\"sme-position-flex-none\" [class.sme-padding-horizontal-sm]=\"!noSideMargin\">\r\n <!-- Query Editor -->\r\n <ng-content select='sme-query-editor'></ng-content>\r\n</div>\r\n<div class=\"sme-position-flex-none sme-arrange-stack-reversed\" #container\r\n [class.sme-padding-horizontal-sm]=\"!noSideMargin\"\r\n [class.sme-arrange-stack-h]=\"!(layout.currentLayoutDefinitionName==='narrow')\">\r\n <!-- Actions -->\r\n <ng-content select='sme-action-bar,.action-bar'></ng-content>\r\n\r\n <div class=\"sme-position-flex-none sme-arrange-stack-h\" [class.sme-padding-horizontal-sm]=\"!noSideMargin\"\r\n [class.sme-padding-left-sm]=\"noSideMargin\" [class.sme-arrange-stack-wrap]=\"searchBoxAutoWrapOnWindowSizeChanges\">\r\n <!-- Counts -->\r\n <div\r\n class=\"sme-focus-zone sme-position-flex-none sme-arrange-stack-h sme-arrange-ws-nowrap sme-scheme-secondary-text\"\r\n [class.sme-padding-right-xs]=\"selectedItemCount === 0 || !showSelection\">\r\n <i role=\"status\" [id]=\"idBag.itemCountLabel\" class=\"sme-layout-action-bar-item sme-padding-horizontal-sm\">{{\r\n getItemCountText() }}</i>\r\n <button type=\"button\" role=\"button\"\r\n class=\"sme-button-trigger sme-layout-action-bar-item-height sme-scheme-secondary-text sme-button-auto-width\"\r\n *ngIf=\"selectedItemCount > 0 && showSelection\" (click)=\"doClearSelection($event)\">\r\n <i aria-hidden=\"true\">{{ getSelectedCountText() }}</i>\r\n <i class=\"sme-screen-reader\">{{ getSelectedCountAriaText() }}</i>\r\n <i aria-hidden=\"true\" class=\"sme-icon sme-icon-clear sme-margin-left-xs\"\r\n [title]=\"resourceStrings.selectedTitle\"></i>\r\n </button>\r\n </div>\r\n <!-- Common Actions -->\r\n <div class=\"sme-focus-zone sme-arrange-ws-nowrap\">\r\n <button *ngIf=\"showDownloadButton\" (click)=\"onDownloadButtonClicked($event)\" type=\"button\" role=\"button\"\r\n title=\"Download\" class=\"sme-layout-action-bar-item-height sme-button-trigger sme-button-auto-width\"\r\n [class.sme-toggled]=\"downloadActive\" data-uta-id=\"download-button\">\r\n <span class=\"sme-icon sme-icon-download\"></span>\r\n </button>\r\n <button *ngIf=\"showColumnPicker\" (click)=\"columnPicker.next();\" type=\"button\" role=\"button\"\r\n [title]=\"resourceStrings.columnPicker.title\" [attr.aria-label]=\"getFilterAriaLabel()\"\r\n class=\"sme-layout-action-bar-item-height sme-button-trigger sme-button-auto-width\"\r\n [class.sme-toggled]=\"columnPickerActive\" data-uta-id=\"column-picker-button\">\r\n <span class=\"sme-icon sme-icon-tripleColumn\"></span>\r\n </button>\r\n <button aria-live=\"polite\" *ngIf=\"showRefresh\" [attr.aria-disabled]=\"disableRefresh\"\r\n (click)=\"refreshButtonClicked()\" type=\"button\" role=\"button\" [title]=\"resourceStrings.refresh.title\"\r\n [attr.aria-label]=\"refreshButtonAriaLabel\"\r\n class=\"sme-layout-action-bar-item-height sme-button-trigger sme-button-auto-width\">\r\n <span class=\"sme-icon sme-icon-refresh\"></span>\r\n </button>\r\n <button *ngIf=\"showFilter\" (click)=\"filter.next();\" type=\"button\" role=\"button\"\r\n [title]=\"resourceStrings.filter.title\" [attr.aria-label]=\"getFilterAriaLabel()\"\r\n class=\"sme-layout-action-bar-item-height sme-button-trigger sme-button-auto-width\"\r\n [class.sme-toggled]=\"filterActive\">\r\n <span class=\"sme-icon sme-icon-filter\"></span>\r\n </button>\r\n <button *ngIf=\"showGroup\" (click)=\"group.next()\" type=\"button\" role=\"button\" [title]=\"resourceStrings.group.title\"\r\n [attr.aria-label]=\"resourceStrings.group.title\"\r\n class=\"sme-layout-action-bar-item-height sme-button-trigger sme-button-auto-width\"\r\n [class.sme-toggled]=\"groupActive\">\r\n <!-- TODO: use grouping icon when available. -->\r\n <span class=\"sme-icon sme-icon-groupedList\"></span>\r\n </button>\r\n </div>\r\n <!-- Grouping (Deprecated) -->\r\n <div class=\"sme-focus-zone\">\r\n <div *ngIf=\"showCustomFilter\" class=\"sme-margin-horizontal-sm\">\r\n <ng-content select='.sme-master-view-custom-filter'></ng-content>\r\n </div>\r\n </div>\r\n <!-- Search Box -->\r\n <form *ngIf=\"useSearch\" style=\"position: relative;\">\r\n <div class=\"sme-position-flex-none sme-layout-action-bar-item\">\r\n <ng-content select='sme-form-field[type=\"search\"]'></ng-content>\r\n </div>\r\n </form>\r\n </div>\r\n</div>\r\n<div #dataView smeMasterViewContentDirective (smeDataTableFromTemplateReady)=\"onSmeDataTableFromTemplateReady()\"\r\n [class.sme-margin-horizontal-lg]=\"shouldDataTableSlim\"\r\n [class.sme-padding-bottom-md]=\"shouldDataTableRenderWithBottomMargin\"\r\n [class.sme-arrange-overflow-hide]=\"shouldDataTableParentOverflowHide\"\r\n class=\"sme-layout-relative sme-position-flex-auto sme-arrange-stack-h sme-layout-minwidth-{{dataTableMinWidthClassString}}\"\r\n [class.sme-shadow-scrolled-content]=\"!isDataListScrolledToTop\">\r\n <ng-content></ng-content>\r\n</div>\r\n" }]
36737
+ ], template: "<h2 class=\"sme-position-flex-none sme-padding-squish-v-lg sme-arrange-word-wrap-break-word sme-font-h3\" *ngIf=\"header\"\r\n [hidden]=\"hideHeader\" [id]='headerId'>{{ header }}</h2>\r\n<sme-layout #layout (layoutChanged)=\"updateActionBar()\">\r\n <sme-layout-definition name=\"narrow\" [until]=\"768\"></sme-layout-definition>\r\n</sme-layout>\r\n<div *ngIf=\"enableQueryEditor\" class=\"sme-position-flex-none\" [class.sme-padding-horizontal-sm]=\"!noSideMargin\">\r\n <!-- Query Editor -->\r\n <ng-content select='sme-query-editor'></ng-content>\r\n</div>\r\n<div class=\"sme-position-flex-none sme-arrange-stack-reversed\" #container\r\n [class.sme-padding-horizontal-sm]=\"!noSideMargin\"\r\n [class.sme-arrange-stack-h]=\"!(layout.currentLayoutDefinitionName==='narrow')\">\r\n <!-- Actions -->\r\n <ng-content select='sme-action-bar,.action-bar'></ng-content>\r\n\r\n <div class=\"sme-position-flex-none sme-arrange-stack-h\" [class.sme-padding-horizontal-sm]=\"!noSideMargin\"\r\n [class.sme-padding-left-sm]=\"noSideMargin\" [class.sme-arrange-stack-wrap]=\"searchBoxAutoWrapOnWindowSizeChanges\">\r\n <!-- Counts -->\r\n <div\r\n class=\"sme-focus-zone sme-position-flex-none sme-arrange-stack-h sme-arrange-ws-nowrap sme-scheme-secondary-text\"\r\n [class.sme-padding-right-xs]=\"selectedItemCount === 0 || !showSelection\">\r\n <i role=\"status\" [id]=\"idBag.itemCountLabel\" class=\"sme-layout-action-bar-item sme-padding-horizontal-sm\">{{\r\n getItemCountText() }}</i>\r\n <button type=\"button\" role=\"button\"\r\n class=\"sme-button-trigger sme-layout-action-bar-item-height sme-scheme-secondary-text sme-button-auto-width\"\r\n *ngIf=\"selectedItemCount > 0 && showSelection\" (click)=\"doClearSelection($event)\">\r\n <i aria-hidden=\"true\">{{ getSelectedCountText() }}</i>\r\n <i class=\"sme-screen-reader\">{{ getSelectedCountAriaText() }}</i>\r\n <i aria-hidden=\"true\" class=\"sme-icon sme-icon-clear sme-margin-left-xs\"\r\n [title]=\"resourceStrings.selectedTitle\"></i>\r\n </button>\r\n </div>\r\n <!-- Common Actions -->\r\n <div class=\"sme-focus-zone sme-arrange-ws-nowrap\">\r\n <button *ngIf=\"showDownloadButton\" (click)=\"onDownloadButtonClicked($event)\" type=\"button\" role=\"button\"\r\n title=\"Download\" class=\"sme-layout-action-bar-item-height sme-button-trigger sme-button-auto-width\"\r\n [class.sme-toggled]=\"downloadActive\" data-uta-id=\"download-button\">\r\n <span class=\"sme-icon sme-icon-download\"></span>\r\n </button>\r\n <button *ngIf=\"showColumnPicker\" (click)=\"columnPicker.next();\" type=\"button\" role=\"button\"\r\n [title]=\"resourceStrings.columnPicker.title\" [attr.aria-label]=\"getFilterAriaLabel()\"\r\n class=\"sme-layout-action-bar-item-height sme-button-trigger sme-button-auto-width\"\r\n [class.sme-toggled]=\"columnPickerActive\" data-uta-id=\"column-picker-button\">\r\n <span class=\"sme-icon sme-icon-tripleColumn\"></span>\r\n </button>\r\n <button aria-live=\"polite\" *ngIf=\"showRefresh\" [attr.aria-disabled]=\"disableRefresh\"\r\n (click)=\"refreshButtonClicked()\" type=\"button\" role=\"button\" [title]=\"refreshTooltipText || resourceStrings.refresh.title\"\r\n [attr.aria-label]=\"refreshTooltipText || refreshButtonAriaLabel\"\r\n class=\"sme-layout-action-bar-item-height sme-button-trigger sme-button-auto-width\">\r\n <span class=\"sme-icon sme-icon-refresh\"></span>\r\n </button>\r\n <button *ngIf=\"showFilter\" (click)=\"filter.next();\" type=\"button\" role=\"button\"\r\n [title]=\"resourceStrings.filter.title\" [attr.aria-label]=\"getFilterAriaLabel()\"\r\n class=\"sme-layout-action-bar-item-height sme-button-trigger sme-button-auto-width\"\r\n [class.sme-toggled]=\"filterActive\">\r\n <span class=\"sme-icon sme-icon-filter\"></span>\r\n </button>\r\n <button *ngIf=\"showGroup\" (click)=\"group.next()\" type=\"button\" role=\"button\" [title]=\"resourceStrings.group.title\"\r\n [attr.aria-label]=\"resourceStrings.group.title\"\r\n class=\"sme-layout-action-bar-item-height sme-button-trigger sme-button-auto-width\"\r\n [class.sme-toggled]=\"groupActive\">\r\n <!-- TODO: use grouping icon when available. -->\r\n <span class=\"sme-icon sme-icon-groupedList\"></span>\r\n </button>\r\n </div>\r\n <!-- Grouping (Deprecated) -->\r\n <div class=\"sme-focus-zone\">\r\n <div *ngIf=\"showCustomFilter\" class=\"sme-margin-horizontal-sm\">\r\n <ng-content select='.sme-master-view-custom-filter'></ng-content>\r\n </div>\r\n </div>\r\n <!-- Search Box -->\r\n <form *ngIf=\"useSearch\" style=\"position: relative;\">\r\n <div class=\"sme-position-flex-none sme-layout-action-bar-item\">\r\n <ng-content select='sme-form-field[type=\"search\"]'></ng-content>\r\n </div>\r\n </form>\r\n </div>\r\n</div>\r\n<div #dataView smeMasterViewContentDirective (smeDataTableFromTemplateReady)=\"onSmeDataTableFromTemplateReady()\"\r\n [class.sme-margin-horizontal-lg]=\"shouldDataTableSlim\"\r\n [class.sme-padding-bottom-md]=\"shouldDataTableRenderWithBottomMargin\"\r\n [class.sme-arrange-overflow-hide]=\"shouldDataTableParentOverflowHide\"\r\n class=\"sme-layout-relative sme-position-flex-auto sme-arrange-stack-h sme-layout-minwidth-{{dataTableMinWidthClassString}}\"\r\n [class.sme-shadow-scrolled-content]=\"!isDataListScrolledToTop\">\r\n <ng-content></ng-content>\r\n</div>\r\n" }]
36738
36738
  }], function () {
36739
36739
  return [{ type: i0.Injector }, { type: i0.ElementRef }, { type: DataTableDownloadService, decorators: [{
36740
36740
  type: Optional
@@ -36819,6 +36819,8 @@ __decorate([
36819
36819
  type: Input
36820
36820
  }], downloadDataType: [{
36821
36821
  type: Input
36822
+ }], refreshTooltipText: [{
36823
+ type: Input
36822
36824
  }], downloadPrompted: [{
36823
36825
  type: Output
36824
36826
  }], downloadFinished: [{
@@ -53160,29 +53162,68 @@ function SmeWizardLiteFooterTemplateComponent_div_0_Template(rf, ctx) {
53160
53162
  class SmeWizardLiteFooterTemplateComponent extends CoreBaseComponent {
53161
53163
  constructor(injector) {
53162
53164
  super(injector);
53165
+ /**
53166
+ * Whether to display the exit button.
53167
+ */
53163
53168
  this.displayExitButton = true;
53169
+ /**
53170
+ * Whether to display the wizard button.
53171
+ */
53164
53172
  this.displayWizardButton = true;
53173
+ /**
53174
+ * Whether to display the review button.
53175
+ */
53165
53176
  this.displayReviewButton = true;
53177
+ /**
53178
+ * Whether the review button is disabled.
53179
+ */
53166
53180
  this.isReviewButtonDisabled = false;
53181
+ /**
53182
+ * The output event emitter for the review button clicked event.
53183
+ */
53167
53184
  this.reviewButtonClickedEventEmitter = new EventEmitter();
53185
+ /**
53186
+ * The output event emitter for the exit button clicked event.
53187
+ */
53168
53188
  this.exitButtonClickedEventEmitter = new EventEmitter();
53189
+ /**
53190
+ * The output event emitter for the prev button clicked event.
53191
+ */
53169
53192
  this.prevButtonClickedEventEmitter = new EventEmitter();
53193
+ /**
53194
+ * The output event emitter for the next button clicked event.
53195
+ */
53170
53196
  this.nextButtonClickedEventEmitter = new EventEmitter();
53197
+ /**
53198
+ * Internal buttons.
53199
+ */
53171
53200
  this.buttonsInternal = [];
53172
53201
  }
53173
53202
  get logSourceName() {
53174
53203
  return 'SmeWizardLiteFooterTemplateComponent';
53175
53204
  }
53205
+ /**
53206
+ * Setter buttons object.
53207
+ */
53176
53208
  set buttons(buttons) {
53177
53209
  this.buttonsInternal = buttons;
53178
53210
  }
53211
+ /**
53212
+ * Getter button object.
53213
+ */
53179
53214
  get buttons() {
53180
53215
  return this.buttonsInternal;
53181
53216
  }
53217
+ /**
53218
+ * Getter for the review button text.
53219
+ */
53182
53220
  get reviewButtonTextForRendering() {
53183
53221
  var _a;
53184
53222
  return (_a = this.reviewButtonText) !== null && _a !== void 0 ? _a : this.strings.MsftSmeShell.Angular.Wizard.Lite.FooterTemplate.review;
53185
53223
  }
53224
+ /**
53225
+ * Getter for the exit button text.
53226
+ */
53186
53227
  get exitButtonTextForRendering() {
53187
53228
  var _a;
53188
53229
  return (_a = this.exitButtonText) !== null && _a !== void 0 ? _a : this.strings.MsftSmeShell.Angular.Wizard.Lite.FooterTemplate.exit;
@@ -53201,21 +53242,37 @@ class SmeWizardLiteFooterTemplateComponent extends CoreBaseComponent {
53201
53242
  }
53202
53243
  this.wizardButton.updateStartIndexByLabel(tab.label);
53203
53244
  }
53245
+ /**
53246
+ * The on prev button clicked event handler.
53247
+ * @param $event the click event
53248
+ */
53204
53249
  onPrevButtonClicked($event) {
53205
53250
  if (!this.wizardButton) {
53206
53251
  return;
53207
53252
  }
53208
53253
  this.prevButtonClickedEventEmitter.emit($event);
53209
53254
  }
53255
+ /**
53256
+ * The on next button clicked event handler.
53257
+ * @param $event the click event
53258
+ */
53210
53259
  onNextButtonClicked($event) {
53211
53260
  if (!this.wizardButton) {
53212
53261
  return;
53213
53262
  }
53214
53263
  this.nextButtonClickedEventEmitter.emit($event);
53215
53264
  }
53265
+ /**
53266
+ * The on review button clicked event handler.
53267
+ * @param $event the click event
53268
+ */
53216
53269
  onReviewButtonClicked($event) {
53217
53270
  this.reviewButtonClickedEventEmitter.emit($event);
53218
53271
  }
53272
+ /**
53273
+ * The on exit button clicked event handler.
53274
+ * @param $event the click event
53275
+ */
53219
53276
  onExitButtonClicked($event) {
53220
53277
  this.exitButtonClickedEventEmitter.emit($event);
53221
53278
  }
@@ -56066,6 +56123,8 @@ class NavigationService {
56066
56123
  PerformanceProfile.logRouteNavigation('NavigationService', startTimestamp, Date.now(), '[rpcInit]', this.moduleName);
56067
56124
  }
56068
56125
  onInit(data) {
56126
+ // Iframe has received all initialization data from the shell.
56127
+ this.appContextService.gateway.navigationReadyStatus = true;
56069
56128
  this.active = true;
56070
56129
  const self = MsftSme.self();
56071
56130
  if (!MsftSme.isNullOrUndefined(self.Init.sessionExpiration) && self.Init.sessionExpiration > 0) {