@alauda-fe/common 1.3.1 → 1.4.1

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 (99) hide show
  1. package/api/auth-api.service.d.ts +14 -0
  2. package/api/platform-ui.service.d.ts +1 -0
  3. package/api/public-api.d.ts +1 -0
  4. package/array-form-table/form/component.d.ts +6 -2
  5. package/assets/icons/icon-refresh-drag.svg +1 -0
  6. package/authorization/interceptor.service.d.ts +2 -1
  7. package/authorization/public-api.d.ts +1 -0
  8. package/authorization/session-manage.service.d.ts +2 -4
  9. package/authorization/state.service.d.ts +19 -18
  10. package/authorization/storage-token.d.ts +4 -10
  11. package/core/constants/patterns.d.ts +4 -0
  12. package/core/directives/feature-gate.directive.d.ts +2 -1
  13. package/core/module.d.ts +21 -21
  14. package/core/pipes/minimum-format.pipe.d.ts +1 -1
  15. package/core/pipes/time.pipe.d.ts +1 -1
  16. package/core/services/context.service.d.ts +3 -4
  17. package/core/services/feature-gate.service.d.ts +1 -0
  18. package/core/services/workspace-helper.service.d.ts +3 -1
  19. package/core/types/commons.d.ts +2 -0
  20. package/core/types/k8s/crd.d.ts +64 -0
  21. package/core/types/resource-definitions.d.ts +3 -3
  22. package/core/utils/cache-store.d.ts +15 -13
  23. package/core/utils/common.d.ts +1 -2
  24. package/core/utils/public-api.d.ts +1 -0
  25. package/core/utils/router.d.ts +3 -0
  26. package/editable/editable.component.d.ts +23 -0
  27. package/editable/editable.directive.d.ts +9 -0
  28. package/editable/editable.type.d.ts +5 -0
  29. package/editable/public-api.d.ts +2 -0
  30. package/effect-directive/event.directive.d.ts +36 -0
  31. package/esm2022/api/auth-api.service.mjs +34 -0
  32. package/esm2022/api/platform-ui.service.mjs +2 -1
  33. package/esm2022/api/public-api.mjs +2 -1
  34. package/esm2022/array-form-table/form/component.mjs +30 -15
  35. package/esm2022/authorization/guard.service.mjs +2 -2
  36. package/esm2022/authorization/interceptor.service.mjs +31 -24
  37. package/esm2022/authorization/public-api.mjs +2 -1
  38. package/esm2022/authorization/session-manage.service.mjs +11 -24
  39. package/esm2022/authorization/state.service.mjs +94 -100
  40. package/esm2022/authorization/storage-token.mjs +12 -88
  41. package/esm2022/core/constants/patterns.mjs +6 -4
  42. package/esm2022/core/directives/feature-gate.directive.mjs +7 -4
  43. package/esm2022/core/guards/feature.guard.mjs +3 -2
  44. package/esm2022/core/module.mjs +7 -12
  45. package/esm2022/core/pipes/minimum-format.pipe.mjs +4 -3
  46. package/esm2022/core/pipes/time.pipe.mjs +3 -3
  47. package/esm2022/core/services/context.service.mjs +9 -12
  48. package/esm2022/core/services/feature-gate.service.mjs +4 -3
  49. package/esm2022/core/services/workspace-helper.service.mjs +7 -1
  50. package/esm2022/core/types/commons.mjs +1 -1
  51. package/esm2022/core/types/k8s/crd.mjs +8 -1
  52. package/esm2022/core/types/resource-definitions.mjs +2 -2
  53. package/esm2022/core/utils/cache-store.mjs +51 -29
  54. package/esm2022/core/utils/common.mjs +8 -10
  55. package/esm2022/core/utils/public-api.mjs +2 -1
  56. package/esm2022/core/utils/router.mjs +20 -0
  57. package/esm2022/editable/editable.component.mjs +136 -0
  58. package/esm2022/editable/editable.directive.mjs +25 -0
  59. package/esm2022/editable/editable.type.mjs +6 -0
  60. package/esm2022/editable/public-api.mjs +3 -0
  61. package/esm2022/effect-directive/event.directive.mjs +79 -4
  62. package/esm2022/exec/terminal/component.mjs +12 -19
  63. package/esm2022/k8s-resource-list/footer/component.mjs +63 -25
  64. package/esm2022/k8s-resource-list/k8s-resource-list.module.mjs +18 -6
  65. package/esm2022/k8s-resource-list/utils.mjs +7 -3
  66. package/esm2022/multi-search/multi-search-tags/component.mjs +2 -2
  67. package/esm2022/multi-search/types.mjs +1 -1
  68. package/esm2022/page-scaffold/navigation/breadcrumb/breadcrumb.component.mjs +55 -53
  69. package/esm2022/page-scaffold/navigation/navconfig-loader/navconfig-loader.service.mjs +4 -4
  70. package/esm2022/page-scaffold/page-header/account-menu/component/component.mjs +3 -8
  71. package/esm2022/page-scaffold/page-header/common-layout/product-select/component.mjs +6 -10
  72. package/esm2022/pie-derivative-chart/pie-derivative-chart.module.mjs +6 -6
  73. package/esm2022/pie-derivative-chart/radial-bar/radial-bar-chart.component.mjs +51 -40
  74. package/esm2022/pie-derivative-chart/units.mjs +14 -0
  75. package/esm2022/pod-status/component.mjs +34 -55
  76. package/esm2022/public-api.mjs +2 -1
  77. package/esm2022/searchable-selector/component.mjs +2 -2
  78. package/esm2022/table/component.mjs +47 -30
  79. package/esm2022/table/module.mjs +1 -1
  80. package/esm2022/view-chart/view-chart.component.mjs +5 -8
  81. package/esm2022/widget/public-api.mjs +2 -1
  82. package/esm2022/widget/resource-label/component.mjs +131 -0
  83. package/esm2022/widget/zero-state/zero-state.component.mjs +36 -21
  84. package/exec/terminal/component.d.ts +1 -3
  85. package/k8s-resource-list/footer/component.d.ts +8 -1
  86. package/k8s-resource-list/k8s-resource-list.module.d.ts +1 -1
  87. package/multi-search/types.d.ts +1 -0
  88. package/package.json +1 -1
  89. package/page-scaffold/page-header/common-layout/product-select/component.d.ts +1 -3
  90. package/pie-derivative-chart/radial-bar/radial-bar-chart.component.d.ts +4 -0
  91. package/pie-derivative-chart/units.d.ts +2 -0
  92. package/pod-status/component.d.ts +1 -3
  93. package/public-api.d.ts +1 -0
  94. package/styles/global.scss +1 -0
  95. package/styles/tailwind-preset.scss +1 -1
  96. package/table/component.d.ts +4 -3
  97. package/widget/public-api.d.ts +1 -0
  98. package/widget/resource-label/component.d.ts +25 -0
  99. package/widget/zero-state/zero-state.component.d.ts +4 -1
@@ -0,0 +1,34 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { inject, Injectable } from '@angular/core';
3
+ import { API_GATEWAY, } from '../core/public-api';
4
+ import * as i0 from "@angular/core";
5
+ export class AuthApiService {
6
+ constructor() {
7
+ this.http = inject(HttpClient);
8
+ }
9
+ getUserBindingList(params) {
10
+ return this.http.get(API_GATEWAY + '/auth/v2/userbindings', {
11
+ params,
12
+ });
13
+ }
14
+ getUserRoleList(params) {
15
+ return this.http.get(API_GATEWAY + '/auth/v2/usersroles', {
16
+ params,
17
+ });
18
+ }
19
+ getRoleTemplateList(params) {
20
+ return this.http.get(API_GATEWAY + '/auth/v2/roletemplates', {
21
+ params,
22
+ });
23
+ }
24
+ getUser(name) {
25
+ return this.http.get(API_GATEWAY + '/auth/v2/users/' + name);
26
+ }
27
+ static { this.ɵfac = function AuthApiService_Factory(t) { return new (t || AuthApiService)(); }; }
28
+ static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AuthApiService, factory: AuthApiService.ɵfac, providedIn: 'root' }); }
29
+ }
30
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AuthApiService, [{
31
+ type: Injectable,
32
+ args: [{ providedIn: 'root' }]
33
+ }], null, null); })();
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hcGkvYXV0aC1hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUNMLFdBQVcsR0FPWixNQUFNLG9CQUFvQixDQUFDOztBQUc1QixNQUFNLE9BQU8sY0FBYztJQUQzQjtRQUVVLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7S0FnQ25DO0lBOUJDLGtCQUFrQixDQUFDLE1BQTBCO1FBQzNDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLFdBQVcsR0FBRyx1QkFBdUIsRUFDckM7WUFDRSxNQUFNO1NBQ1AsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUEyQztRQUN6RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixXQUFXLEdBQUcscUJBQXFCLEVBQ25DO1lBQ0UsTUFBTTtTQUNQLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxNQUEwQjtRQUM1QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixXQUFXLEdBQUcsd0JBQXdCLEVBQ3RDO1lBQ0UsTUFBTTtTQUNQLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBWTtRQUNsQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFPLFdBQVcsR0FBRyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNyRSxDQUFDOytFQWhDVSxjQUFjO3VFQUFkLGNBQWMsV0FBZCxjQUFjLG1CQURELE1BQU07O2lGQUNuQixjQUFjO2NBRDFCLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIEFQSV9HQVRFV0FZLFxuICBLdWJlcm5ldGVzUmVzb3VyY2VMaXN0LFxuICBSZXNvdXJjZUxpc3RQYXJhbXMsXG4gIFJvbGVUZW1wbGF0ZSxcbiAgVXNlcixcbiAgVXNlckJpbmRpbmcsXG4gIFVzZXJSb2xlLFxufSBmcm9tICcuLi9jb3JlL3B1YmxpYy1hcGknO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEF1dGhBcGlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuXG4gIGdldFVzZXJCaW5kaW5nTGlzdChwYXJhbXM6IFJlc291cmNlTGlzdFBhcmFtcykge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEt1YmVybmV0ZXNSZXNvdXJjZUxpc3Q8VXNlckJpbmRpbmc+PihcbiAgICAgIEFQSV9HQVRFV0FZICsgJy9hdXRoL3YyL3VzZXJiaW5kaW5ncycsXG4gICAgICB7XG4gICAgICAgIHBhcmFtcyxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIGdldFVzZXJSb2xlTGlzdChwYXJhbXM6IHsgdXNlcnM6IHN0cmluZzsgcHJvamVjdD86IHN0cmluZyB9KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8S3ViZXJuZXRlc1Jlc291cmNlTGlzdDxVc2VyUm9sZT4+KFxuICAgICAgQVBJX0dBVEVXQVkgKyAnL2F1dGgvdjIvdXNlcnNyb2xlcycsXG4gICAgICB7XG4gICAgICAgIHBhcmFtcyxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIGdldFJvbGVUZW1wbGF0ZUxpc3QocGFyYW1zOiBSZXNvdXJjZUxpc3RQYXJhbXMpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxLdWJlcm5ldGVzUmVzb3VyY2VMaXN0PFJvbGVUZW1wbGF0ZT4+KFxuICAgICAgQVBJX0dBVEVXQVkgKyAnL2F1dGgvdjIvcm9sZXRlbXBsYXRlcycsXG4gICAgICB7XG4gICAgICAgIHBhcmFtcyxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIGdldFVzZXIobmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VXNlcj4oQVBJX0dBVEVXQVkgKyAnL2F1dGgvdjIvdXNlcnMvJyArIG5hbWUpO1xuICB9XG59XG4iXX0=
@@ -81,6 +81,7 @@ export class PlatformUIService {
81
81
  `images/${theme}/${DEFAULT_PORTAL_TOP_RESOURCE_NAME}`,
82
82
  bottomImage: appendImageHeader(bottomImage) ||
83
83
  `images/${theme}/${DEFAULT_PORTAL_BOTTOM_RESOURCE_NAME}`,
84
+ hasCustomized: !!topImage || !!bottomImage,
84
85
  };
85
86
  }));
86
87
  }));
@@ -92,4 +93,4 @@ export class PlatformUIService {
92
93
  type: Injectable,
93
94
  args: [{ providedIn: 'root' }]
94
95
  }], null, null); })();
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0tdWkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hcGkvcGxhdGZvcm0tdWkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRDLE9BQU8sRUFDTCxpQkFBaUIsRUFJakIsY0FBYyxHQUNmLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUVsRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxlQUFlLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsc0JBQXNCLENBQUM7QUFDbkUsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsc0JBQXNCLENBQUM7QUFFbkUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsbUJBQW1CLENBQUM7QUFDNUQsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsbUJBQW1CLENBQUM7QUFDNUQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsa0JBQWtCLENBQUM7QUFDMUQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsa0JBQWtCLENBQUM7QUFDMUQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsV0FBVyxDQUFDO0FBQzdDLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLG1CQUFtQixDQUFDO0FBQzdELE1BQU0s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QUN2RCxXQUFXLEVBQ1QsaUJBQWlCLENBQUMsV0FBVyxDQUFDO3dCQUM5QixVQUFVLEtBQUssSUFBSSxtQ0FBbUMsRUFBRTtpQkFDM0QsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztrRkExRVUsaUJBQWlCO3VFQUFqQixpQkFBaUIsV0FBakIsaUJBQWlCLG1CQURKLE1BQU07O2lGQUNuQixpQkFBaUI7Y0FEN0IsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRoZW1lU2VydmljZSB9IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBhcHBlbmRJbWFnZUhlYWRlcixcbiAgQ29uZmlnTWFwLFxuICBQcm9kdWN0RG9jc0VudHJ5LFxuICBQcm9kdWN0RW50cnksXG4gIFJFU09VUkNFX1RZUEVTLFxufSBmcm9tICcuLi9jb3JlL3B1YmxpYy1hcGknO1xuXG5pbXBvcnQgeyBLOHNBcGlTZXJ2aWNlIH0gZnJvbSAnLi9rOHMtYXBpLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgUExBVEZPUk1fSU5GT19DTV9OQU1FID0gJ3BsYXRmb3JtLWluZm8nO1xuZXhwb3J0IGNvbnN0IFBMQVRGT1JNX05BTUVfWkhfS0VZID0gJ3BsYXRmb3JtTmFtZVpIJztcbmV4cG9ydCBjb25zdCBQTEFURk9STV9OQU1FX0VOX0tFWSA9ICdwbGF0Zm9ybU5hbWVFTic7XG5leHBvcnQgY29uc3QgREVGQVVMVF9QTEFURk9STV9OQU1FX1pIX0tFWSA9ICdvcmlnaW5QbGF0Zm9ybU5hbWVaSCc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9QTEFURk9STV9OQU1FX0VOX0tFWSA9ICdvcmlnaW5QbGF0Zm9ybU5hbWVFTic7XG5cbmV4cG9ydCBjb25zdCBQT1JUQUxfTUFJTl9USVRMRV9FTl9LRVkgPSAncG9ydGFsTWFpblRpdGxlRU4nO1xuZXhwb3J0IGNvbnN0IFBPUlRBTF9NQUlOX1RJVExFX1pIX0tFWSA9ICdwb3J0YWxNYWluVGl0bGVaSCc7XG5leHBvcnQgY29uc3QgUE9SVEFMX1NVQl9USVRMRV9aSF9LRVkgPSAncG9ydGFsU3ViVGl0bGVaSCc7XG5leHBvcnQgY29uc3QgUE9SVEFMX1NVQl9USVRMRV9FTl9LRVkgPSAncG9ydGFsU3ViVGl0bGVFTic7XG5leHBvcnQgY29uc3QgUE9SVEFMX1VJX0NNX05BTUUgPSAndWktcG9ydGFsJztcbmV4cG9ydCBjb25zdCBQT1JUQUxfVUlfQ01fTkFNRV9ERUZBVUxUID0gJ3VpLXBvcnRhbC1kZWZhdWx0JztcbmV4cG9ydCBjb25zdCBQT1JUQUxfVE9QX0lNQUdFX0tFWSA9ICd0b3AtYmcnO1xuZXhwb3J0IGNvbnN0IFBPUlRBTF9CT1RUT01fSU1BR0VfS0VZID0gJ2JvdHRvbS1iZyc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1BPUlRBTF9UT1BfUkVTT1VSQ0VfTkFNRSA9ICdwb3J0YWwtdG9wLnBuZyc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9QT1JUQUxfQk9UVE9NX1JFU09VUkNFX05BTUUgPSAncG9ydGFsLWJvdHRvbS5wbmcnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUE9SVEFMX1RPUF9SRVNPVVJDRV9VUkwgPSAnaW1hZ2VzL2xpZ2h0L3BvcnRhbC10b3AucG5nJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX1BPUlRBTF9CT1RUT01fUkVTT1VSQ0VfVVJMID1cbiAgJ2ltYWdlcy9saWdodC9wb3J0YWwtYm90dG9tLnBuZyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUGxhdGZvcm1VSVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGs4c0FwaSA9IGluamVjdChLOHNBcGlTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0aGVtZSA9IGluamVjdChUaGVtZVNlcnZpY2UpO1xuXG4gIGdldEVudHJpZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuazhzQXBpXG4gICAgICAuZ2V0R2xvYmFsUmVzb3VyY2VMaXN0PFByb2R1Y3RFbnRyeT4oe1xuICAgICAgICB0eXBlOiBSRVNPVVJDRV9UWVBFUy5QUk9EVUNUX0VOVFJZLFxuICAgICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICAgIGZpZWxkU2VsZWN0b3I6ICdtZXRhZGF0YS5uYW1lIT1jb25zb2xlLXBvcnRhbCcsXG4gICAgICAgICAgbGltaXQ6ICcwJyxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXAobGlzdCA9PiBsaXN0Lml0ZW1zKSk7XG4gIH1cblxuICBnZXREb2NzRW50cnkoKSB7XG4gICAgcmV0dXJuIHRoaXMuazhzQXBpLmdldEdsb2JhbFJlc291cmNlPFByb2R1Y3REb2NzRW50cnk+KHtcbiAgICAgIHR5cGU6IFJFU09VUkNFX1RZUEVTLlBST0RVQ1RfRE9DU19FTlRSWSxcbiAgICAgIG5hbWU6ICdwcm9kdWN0LWRvY3MtZW50cnknLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0UGxhdGZvcm1JbmZvKCkge1xuICAgIHJldHVybiB0aGlzLms4c0FwaVxuICAgICAgLmdldEdsb2JhbFJlc291cmNlPENvbmZpZ01hcD4oe1xuICAgICAgICB0eXBlOiBSRVNPVVJDRV9UWVBFUy5DT05GSUdfTUFQLFxuICAgICAgICBuYW1lOiBQTEFURk9STV9JTkZPX0NNX05BTUUsXG4gICAgICAgIG5hbWVzcGFjZWQ6IHRydWUsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChjbSA9PiAoe1xuICAgICAgICAgIG5hbWU6IHtcbiAgICAgICAgICAgIHpoOiBjbS5kYXRhW1BMQVRGT1JNX05BTUVfWkhfS0VZXSxcbiAgICAgICAgICAgIGVuOiBjbS5kYXRhW1BMQVRGT1JNX05BTUVfRU5fS0VZXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1haW5UaXRsZToge1xuICAgICAgICAgICAgemg6IGNtLmRhdGFbUE9SVEFMX01BSU5fVElUTEVfWkhfS0VZXSxcbiAgICAgICAgICAgIGVuOiBjbS5kYXRhW1BPUlRBTF9NQUlOX1RJVExFX0VOX0tFWV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdWJUaXRsZToge1xuICAgICAgICAgICAgemg6IGNtLmRhdGFbUE9SVEFMX1NVQl9USVRMRV9aSF9LRVldLFxuICAgICAgICAgICAgZW46IGNtLmRhdGFbUE9SVEFMX1NVQl9USVRMRV9FTl9LRVldLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pKSxcbiAgICAgICk7XG4gIH1cblxuICBnZXRCYWNrZ3JvdW5kSW1hZ2VzKCkge1xuICAgIHJldHVybiB0aGlzLms4c0FwaVxuICAgICAgLmdldEdsb2JhbFJlc291cmNlPENvbmZpZ01hcD4oe1xuICAgICAgICB0eXBlOiBSRVNPVVJDRV9UWVBFUy5DT05GSUdfTUFQLFxuICAgICAgICBuYW1lOiBQT1JUQUxfVUlfQ01fTkFNRSxcbiAgICAgICAgbmFtZXNwYWNlZDogdHJ1ZSxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKGNtID0+IHtcbiAgICAgICAgICBjb25zdCB0b3BJbWFnZSA9IGNtLmJpbmFyeURhdGE/LltQT1JUQUxfVE9QX0lNQUdFX0tFWV07XG4gICAgICAgICAgY29uc3QgYm90dG9tSW1hZ2UgPSBjbS5iaW5hcnlEYXRhPy5bUE9SVEFMX0JPVFRPTV9JTUFHRV9LRVldO1xuXG4gICAgICAgICAgcmV0dXJuIHRoaXMudGhlbWUuY3VycmVudFRoZW1lJC5waXBlKFxuICAgICAgICAgICAgbWFwKHRoZW1lID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0b3BJbWFnZTpcbiAgICAgICAgICAgICAgICAgIGFwcGVuZEltYWdlSGVhZGVyKHRvcEltYWdlKSB8fFxuICAgICAgICAgICAgICAgICAgYGltYWdlcy8ke3RoZW1lfS8ke0RFRkFVTFRfUE9SVEFMX1RPUF9SRVNPVVJDRV9OQU1FfWAsXG4gICAgICAgICAgICAgICAgYm90dG9tSW1hZ2U6XG4gICAgICAgICAgICAgICAgICBhcHBlbmRJbWFnZUhlYWRlcihib3R0b21JbWFnZSkgfHxcbiAgICAgICAgICAgICAgICAgIGBpbWFnZXMvJHt0aGVtZX0vJHtERUZBVUxUX1BPUlRBTF9CT1RUT01fUkVTT1VSQ0VfTkFNRX1gLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG59XG4iXX0=
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0tdWkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hcGkvcGxhdGZvcm0tdWkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRDLE9BQU8sRUFDTCxpQkFBaUIsRUFJakIsY0FBYyxHQUNmLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUVsRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxlQUFlLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsc0JBQXNCLENBQUM7QUFDbkUsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsc0JBQXNCLENBQUM7QUFFbkUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsbUJBQW1CLENBQUM7QUFDNUQsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsbUJBQW1CLENBQUM7QUFDNUQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsa0JBQWtCLENBQUM7QUFDMUQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsa0JBQWtCLENBQUM7QUFDMUQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsV0FBVyxDQUFDO0FBQzdDLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLG1CQUFtQixDQUFDO0FBQzdELE1BQU0s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QUN2RCxXQUFXLEVBQ1QsaUJBQWlCLENBQUMsV0FBVyxDQUFDO3dCQUM5QixVQUFVLEtBQUssSUFBSSxtQ0FBbUMsRUFBRTtvQkFDMUQsYUFBYSxFQUFFLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLFdBQVc7aUJBQzNDLENBQUM7WUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7a0ZBM0VVLGlCQUFpQjt1RUFBakIsaUJBQWlCLFdBQWpCLGlCQUFpQixtQkFESixNQUFNOztpRkFDbkIsaUJBQWlCO2NBRDdCLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaGVtZVNlcnZpY2UgfSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgYXBwZW5kSW1hZ2VIZWFkZXIsXG4gIENvbmZpZ01hcCxcbiAgUHJvZHVjdERvY3NFbnRyeSxcbiAgUHJvZHVjdEVudHJ5LFxuICBSRVNPVVJDRV9UWVBFUyxcbn0gZnJvbSAnLi4vY29yZS9wdWJsaWMtYXBpJztcblxuaW1wb3J0IHsgSzhzQXBpU2VydmljZSB9IGZyb20gJy4vazhzLWFwaS5zZXJ2aWNlJztcblxuZXhwb3J0IGNvbnN0IFBMQVRGT1JNX0lORk9fQ01fTkFNRSA9ICdwbGF0Zm9ybS1pbmZvJztcbmV4cG9ydCBjb25zdCBQTEFURk9STV9OQU1FX1pIX0tFWSA9ICdwbGF0Zm9ybU5hbWVaSCc7XG5leHBvcnQgY29uc3QgUExBVEZPUk1fTkFNRV9FTl9LRVkgPSAncGxhdGZvcm1OYW1lRU4nO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUExBVEZPUk1fTkFNRV9aSF9LRVkgPSAnb3JpZ2luUGxhdGZvcm1OYW1lWkgnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUExBVEZPUk1fTkFNRV9FTl9LRVkgPSAnb3JpZ2luUGxhdGZvcm1OYW1lRU4nO1xuXG5leHBvcnQgY29uc3QgUE9SVEFMX01BSU5fVElUTEVfRU5fS0VZID0gJ3BvcnRhbE1haW5UaXRsZUVOJztcbmV4cG9ydCBjb25zdCBQT1JUQUxfTUFJTl9USVRMRV9aSF9LRVkgPSAncG9ydGFsTWFpblRpdGxlWkgnO1xuZXhwb3J0IGNvbnN0IFBPUlRBTF9TVUJfVElUTEVfWkhfS0VZID0gJ3BvcnRhbFN1YlRpdGxlWkgnO1xuZXhwb3J0IGNvbnN0IFBPUlRBTF9TVUJfVElUTEVfRU5fS0VZID0gJ3BvcnRhbFN1YlRpdGxlRU4nO1xuZXhwb3J0IGNvbnN0IFBPUlRBTF9VSV9DTV9OQU1FID0gJ3VpLXBvcnRhbCc7XG5leHBvcnQgY29uc3QgUE9SVEFMX1VJX0NNX05BTUVfREVGQVVMVCA9ICd1aS1wb3J0YWwtZGVmYXVsdCc7XG5leHBvcnQgY29uc3QgUE9SVEFMX1RPUF9JTUFHRV9LRVkgPSAndG9wLWJnJztcbmV4cG9ydCBjb25zdCBQT1JUQUxfQk9UVE9NX0lNQUdFX0tFWSA9ICdib3R0b20tYmcnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9QT1JUQUxfVE9QX1JFU09VUkNFX05BTUUgPSAncG9ydGFsLXRvcC5wbmcnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUE9SVEFMX0JPVFRPTV9SRVNPVVJDRV9OQU1FID0gJ3BvcnRhbC1ib3R0b20ucG5nJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX1BPUlRBTF9UT1BfUkVTT1VSQ0VfVVJMID0gJ2ltYWdlcy9saWdodC9wb3J0YWwtdG9wLnBuZyc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9QT1JUQUxfQk9UVE9NX1JFU09VUkNFX1VSTCA9XG4gICdpbWFnZXMvbGlnaHQvcG9ydGFsLWJvdHRvbS5wbmcnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFBsYXRmb3JtVUlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBrOHNBcGkgPSBpbmplY3QoSzhzQXBpU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGhlbWUgPSBpbmplY3QoVGhlbWVTZXJ2aWNlKTtcblxuICBnZXRFbnRyaWVzKCkge1xuICAgIHJldHVybiB0aGlzLms4c0FwaVxuICAgICAgLmdldEdsb2JhbFJlc291cmNlTGlzdDxQcm9kdWN0RW50cnk+KHtcbiAgICAgICAgdHlwZTogUkVTT1VSQ0VfVFlQRVMuUFJPRFVDVF9FTlRSWSxcbiAgICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgICBmaWVsZFNlbGVjdG9yOiAnbWV0YWRhdGEubmFtZSE9Y29uc29sZS1wb3J0YWwnLFxuICAgICAgICAgIGxpbWl0OiAnMCcsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwKGxpc3QgPT4gbGlzdC5pdGVtcykpO1xuICB9XG5cbiAgZ2V0RG9jc0VudHJ5KCkge1xuICAgIHJldHVybiB0aGlzLms4c0FwaS5nZXRHbG9iYWxSZXNvdXJjZTxQcm9kdWN0RG9jc0VudHJ5Pih7XG4gICAgICB0eXBlOiBSRVNPVVJDRV9UWVBFUy5QUk9EVUNUX0RPQ1NfRU5UUlksXG4gICAgICBuYW1lOiAncHJvZHVjdC1kb2NzLWVudHJ5JyxcbiAgICB9KTtcbiAgfVxuXG4gIGdldFBsYXRmb3JtSW5mbygpIHtcbiAgICByZXR1cm4gdGhpcy5rOHNBcGlcbiAgICAgIC5nZXRHbG9iYWxSZXNvdXJjZTxDb25maWdNYXA+KHtcbiAgICAgICAgdHlwZTogUkVTT1VSQ0VfVFlQRVMuQ09ORklHX01BUCxcbiAgICAgICAgbmFtZTogUExBVEZPUk1fSU5GT19DTV9OQU1FLFxuICAgICAgICBuYW1lc3BhY2VkOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoY20gPT4gKHtcbiAgICAgICAgICBuYW1lOiB7XG4gICAgICAgICAgICB6aDogY20uZGF0YVtQTEFURk9STV9OQU1FX1pIX0tFWV0sXG4gICAgICAgICAgICBlbjogY20uZGF0YVtQTEFURk9STV9OQU1FX0VOX0tFWV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBtYWluVGl0bGU6IHtcbiAgICAgICAgICAgIHpoOiBjbS5kYXRhW1BPUlRBTF9NQUlOX1RJVExFX1pIX0tFWV0sXG4gICAgICAgICAgICBlbjogY20uZGF0YVtQT1JUQUxfTUFJTl9USVRMRV9FTl9LRVldLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc3ViVGl0bGU6IHtcbiAgICAgICAgICAgIHpoOiBjbS5kYXRhW1BPUlRBTF9TVUJfVElUTEVfWkhfS0VZXSxcbiAgICAgICAgICAgIGVuOiBjbS5kYXRhW1BPUlRBTF9TVUJfVElUTEVfRU5fS0VZXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSksXG4gICAgICApO1xuICB9XG5cbiAgZ2V0QmFja2dyb3VuZEltYWdlcygpIHtcbiAgICByZXR1cm4gdGhpcy5rOHNBcGlcbiAgICAgIC5nZXRHbG9iYWxSZXNvdXJjZTxDb25maWdNYXA+KHtcbiAgICAgICAgdHlwZTogUkVTT1VSQ0VfVFlQRVMuQ09ORklHX01BUCxcbiAgICAgICAgbmFtZTogUE9SVEFMX1VJX0NNX05BTUUsXG4gICAgICAgIG5hbWVzcGFjZWQ6IHRydWUsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChjbSA9PiB7XG4gICAgICAgICAgY29uc3QgdG9wSW1hZ2UgPSBjbS5iaW5hcnlEYXRhPy5bUE9SVEFMX1RPUF9JTUFHRV9LRVldO1xuICAgICAgICAgIGNvbnN0IGJvdHRvbUltYWdlID0gY20uYmluYXJ5RGF0YT8uW1BPUlRBTF9CT1RUT01fSU1BR0VfS0VZXTtcblxuICAgICAgICAgIHJldHVybiB0aGlzLnRoZW1lLmN1cnJlbnRUaGVtZSQucGlwZShcbiAgICAgICAgICAgIG1hcCh0aGVtZSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdG9wSW1hZ2U6XG4gICAgICAgICAgICAgICAgICBhcHBlbmRJbWFnZUhlYWRlcih0b3BJbWFnZSkgfHxcbiAgICAgICAgICAgICAgICAgIGBpbWFnZXMvJHt0aGVtZX0vJHtERUZBVUxUX1BPUlRBTF9UT1BfUkVTT1VSQ0VfTkFNRX1gLFxuICAgICAgICAgICAgICAgIGJvdHRvbUltYWdlOlxuICAgICAgICAgICAgICAgICAgYXBwZW5kSW1hZ2VIZWFkZXIoYm90dG9tSW1hZ2UpIHx8XG4gICAgICAgICAgICAgICAgICBgaW1hZ2VzLyR7dGhlbWV9LyR7REVGQVVMVF9QT1JUQUxfQk9UVE9NX1JFU09VUkNFX05BTUV9YCxcbiAgICAgICAgICAgICAgICBoYXNDdXN0b21pemVkOiAhIXRvcEltYWdlIHx8ICEhYm90dG9tSW1hZ2UsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -19,4 +19,5 @@ export * from './project-api.service';
19
19
  export * from './platform-ui.service';
20
20
  export * from './api-compatible.interceptor';
21
21
  export * from './acp-common-api.service';
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hcGkvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsY0FBYztBQUNkLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFtbaW5jbHVkZTphcGkvUkVBRE1FLm1kXV1cbiAqIEBtb2R1bGUgYXBpXG4gKiBAcHJlZmVycmVkXG4gKi9cblxuLyoqIGltcG9ydHMgKi9cbmV4cG9ydCAqIGZyb20gJy4vYXBpLWdhdGV3YXkuaW50ZXJjZXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9hcGktZ2F0ZXdheS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY2x1c3Rlci12ZXJzaW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9oZWxwZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vazhzLWFwaS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vazhzLWFwaS1yZXNvdXJjZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcGFnZS12aXNpYmlsaXR5LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9yZXNvdXJjZS11cGRhdGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vY3J5cHRvLmludGVyY2VwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvZHVjdC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvamVjdC1hcGkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3BsYXRmb3JtLXVpLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGktY29tcGF0aWJsZS5pbnRlcmNlcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2FjcC1jb21tb24tYXBpLnNlcnZpY2UnO1xuIl19
22
+ export * from './auth-api.service';
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hcGkvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsY0FBYztBQUNkLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogW1tpbmNsdWRlOmFwaS9SRUFETUUubWRdXVxuICogQG1vZHVsZSBhcGlcbiAqIEBwcmVmZXJyZWRcbiAqL1xuXG4vKiogaW1wb3J0cyAqL1xuZXhwb3J0ICogZnJvbSAnLi9hcGktZ2F0ZXdheS5pbnRlcmNlcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2FwaS1nYXRld2F5LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jbHVzdGVyLXZlcnNpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2hlbHBlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9rOHMtYXBpLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9rOHMtYXBpLXJlc291cmNlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wYWdlLXZpc2liaWxpdHkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3Jlc291cmNlLXVwZGF0ZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9jcnlwdG8uaW50ZXJjZXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9wcm9kdWN0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wcm9qZWN0LWFwaS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcGxhdGZvcm0tdWkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2FwaS1jb21wYXRpYmxlLmludGVyY2VwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vYWNwLWNvbW1vbi1hcGkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2F1dGgtYXBpLnNlcnZpY2UnO1xuIl19
@@ -114,23 +114,32 @@ function ArrayFormTableComponent_ng_container_3_tr_2_Template(rf, ctx) { if (rf
114
114
  i0.ɵɵadvance(5);
115
115
  i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.rowErrorTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction2(15, _c0, row_r3, index_r4));
116
116
  } }
117
- function ArrayFormTableComponent_ng_container_3_ng_container_3_ng_container_3_Template(rf, ctx) { if (rf & 1) {
117
+ function ArrayFormTableComponent_ng_container_3_ng_container_3_Conditional_3_ng_container_0_Template(rf, ctx) { if (rf & 1) {
118
118
  i0.ɵɵelementContainer(0);
119
119
  } }
120
+ function ArrayFormTableComponent_ng_container_3_ng_container_3_Conditional_3_Template(rf, ctx) { if (rf & 1) {
121
+ i0.ɵɵtemplate(0, ArrayFormTableComponent_ng_container_3_ng_container_3_Conditional_3_ng_container_0_Template, 1, 0, "ng-container", 4);
122
+ } if (rf & 2) {
123
+ const ctx_r0 = i0.ɵɵnextContext(3);
124
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.separatorTemplate);
125
+ } }
126
+ function ArrayFormTableComponent_ng_container_3_ng_container_3_Conditional_4_Template(rf, ctx) { if (rf & 1) {
127
+ i0.ɵɵelement(0, "div", 18);
128
+ } }
120
129
  function ArrayFormTableComponent_ng_container_3_ng_container_3_Template(rf, ctx) { if (rf & 1) {
121
130
  i0.ɵɵelementContainerStart(0);
122
131
  i0.ɵɵelementStart(1, "tr", 16)(2, "td", 17);
123
- i0.ɵɵtemplate(3, ArrayFormTableComponent_ng_container_3_ng_container_3_ng_container_3_Template, 1, 0, "ng-container", 4);
132
+ i0.ɵɵtemplate(3, ArrayFormTableComponent_ng_container_3_ng_container_3_Conditional_3_Template, 1, 1, "ng-container")(4, ArrayFormTableComponent_ng_container_3_ng_container_3_Conditional_4_Template, 1, 0, "div", 18);
124
133
  i0.ɵɵelementEnd()();
125
134
  i0.ɵɵelementContainerEnd();
126
135
  } if (rf & 2) {
127
136
  const ctx_r0 = i0.ɵɵnextContext(2);
128
137
  i0.ɵɵadvance(3);
129
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.separatorTemplate);
138
+ i0.ɵɵconditional(ctx_r0.separatorTemplate ? 3 : 4);
130
139
  } }
131
140
  function ArrayFormTableComponent_ng_container_3_Template(rf, ctx) { if (rf & 1) {
132
141
  i0.ɵɵelementContainerStart(0);
133
- i0.ɵɵtemplate(1, ArrayFormTableComponent_ng_container_3_tr_1_Template, 5, 14, "tr", 7)(2, ArrayFormTableComponent_ng_container_3_tr_2_Template, 6, 18, "tr", 8)(3, ArrayFormTableComponent_ng_container_3_ng_container_3_Template, 4, 1, "ng-container", 1);
142
+ i0.ɵɵtemplate(1, ArrayFormTableComponent_ng_container_3_tr_1_Template, 5, 14, "tr", 7)(2, ArrayFormTableComponent_ng_container_3_tr_2_Template, 6, 18, "tr", 8)(3, ArrayFormTableComponent_ng_container_3_ng_container_3_Template, 5, 1, "ng-container", 1);
134
143
  i0.ɵɵelementContainerEnd();
135
144
  } if (rf & 2) {
136
145
  const index_r4 = ctx.index;
@@ -140,10 +149,10 @@ function ArrayFormTableComponent_ng_container_3_Template(rf, ctx) { if (rf & 1)
140
149
  i0.ɵɵadvance();
141
150
  i0.ɵɵproperty("ngIf", ctx_r0.rowErrorTemplate && !ctx_r0.readonly);
142
151
  i0.ɵɵadvance();
143
- i0.ɵɵproperty("ngIf", ctx_r0.separatorTemplate && (ctx_r0.rows == null ? null : ctx_r0.rows.length) > 1 && index_r4 !== (ctx_r0.rows == null ? null : ctx_r0.rows.length) - 1);
152
+ i0.ɵɵproperty("ngIf", (ctx_r0.rowSeparator || ctx_r0.separatorTemplate) && (ctx_r0.rows == null ? null : ctx_r0.rows.length) > 1 && index_r4 !== (ctx_r0.rows == null ? null : ctx_r0.rows.length) - 1);
144
153
  } }
145
154
  function ArrayFormTableComponent_tr_4_acl_zero_state_2_Template(rf, ctx) { if (rf & 1) {
146
- i0.ɵɵelement(0, "acl-zero-state", 20);
155
+ i0.ɵɵelement(0, "acl-zero-state", 21);
147
156
  } if (rf & 2) {
148
157
  const ctx_r0 = i0.ɵɵnextContext(2);
149
158
  i0.ɵɵproperty("zeroState", true)("resourceName", ctx_r0.resourceName)("resourceNameTranslated", ctx_r0.resourceNameTranslated)("minHeight", 48);
@@ -161,8 +170,8 @@ function ArrayFormTableComponent_tr_4_ng_container_3_Template(rf, ctx) { if (rf
161
170
  i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.zeroStateTemplate);
162
171
  } }
163
172
  function ArrayFormTableComponent_tr_4_Template(rf, ctx) { if (rf & 1) {
164
- i0.ɵɵelementStart(0, "tr")(1, "td", 18);
165
- i0.ɵɵtemplate(2, ArrayFormTableComponent_tr_4_acl_zero_state_2_Template, 1, 4, "acl-zero-state", 19)(3, ArrayFormTableComponent_tr_4_ng_container_3_Template, 2, 1, "ng-container", 1);
173
+ i0.ɵɵelementStart(0, "tr")(1, "td", 19);
174
+ i0.ɵɵtemplate(2, ArrayFormTableComponent_tr_4_acl_zero_state_2_Template, 1, 4, "acl-zero-state", 20)(3, ArrayFormTableComponent_tr_4_ng_container_3_Template, 2, 1, "ng-container", 1);
166
175
  i0.ɵɵelementEnd()();
167
176
  } if (rf & 2) {
168
177
  const ctx_r0 = i0.ɵɵnextContext();
@@ -185,9 +194,9 @@ function ArrayFormTableComponent_tr_5_ng_container_3_Template(rf, ctx) { if (rf
185
194
  } }
186
195
  function ArrayFormTableComponent_tr_5_div_4_Template(rf, ctx) { if (rf & 1) {
187
196
  const _r8 = i0.ɵɵgetCurrentView();
188
- i0.ɵɵelementStart(0, "div", 24)(1, "button", 25);
197
+ i0.ɵɵelementStart(0, "div", 25)(1, "button", 26);
189
198
  i0.ɵɵlistener("click", function ArrayFormTableComponent_tr_5_div_4_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r8); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.add.emit()); });
190
- i0.ɵɵelement(2, "aui-icon", 26);
199
+ i0.ɵɵelement(2, "aui-icon", 27);
191
200
  i0.ɵɵtext(3);
192
201
  i0.ɵɵpipe(4, "translate");
193
202
  i0.ɵɵelementEnd()();
@@ -200,8 +209,8 @@ function ArrayFormTableComponent_tr_5_div_4_Template(rf, ctx) { if (rf & 1) {
200
209
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 5, "add"), " ");
201
210
  } }
202
211
  function ArrayFormTableComponent_tr_5_Template(rf, ctx) { if (rf & 1) {
203
- i0.ɵɵelementStart(0, "tr", 21)(1, "td", 17)(2, "div", 22);
204
- i0.ɵɵtemplate(3, ArrayFormTableComponent_tr_5_ng_container_3_Template, 2, 1, "ng-container", 1)(4, ArrayFormTableComponent_tr_5_div_4_Template, 5, 7, "div", 23);
212
+ i0.ɵɵelementStart(0, "tr", 22)(1, "td", 17)(2, "div", 23);
213
+ i0.ɵɵtemplate(3, ArrayFormTableComponent_tr_5_ng_container_3_Template, 2, 1, "ng-container", 1)(4, ArrayFormTableComponent_tr_5_div_4_Template, 5, 7, "div", 24);
205
214
  i0.ɵɵelementEnd()()();
206
215
  } if (rf & 2) {
207
216
  const ctx_r0 = i0.ɵɵnextContext();
@@ -345,6 +354,10 @@ export class ArrayFormTableComponent {
345
354
  }
346
355
  constructor(injector) {
347
356
  this.injector = injector;
357
+ /**
358
+ * 行之间的分隔区域,默认关闭
359
+ */
360
+ this.rowSeparator = false;
348
361
  this.resourceName = null;
349
362
  this.add = new EventEmitter();
350
363
  this.remove = new EventEmitter(); // Returns the index to be removed
@@ -389,7 +402,7 @@ export class ArrayFormTableComponent {
389
402
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.separatorTemplate = _t.first);
390
403
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.ngFormGroupDirective = _t.first);
391
404
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.rowTemplates = _t);
392
- } }, inputs: { rows: "rows", resourceName: "resourceName", resourceNameTranslated: "resourceNameTranslated", readonly: "readonly", addDisabled: "addDisabled", actionColumnDivider: "actionColumnDivider", showZeroState: "showZeroState", showRowError: "showRowError", rowBackgroundColorFn: "rowBackgroundColorFn", minRow: "minRow", minRowTooltip: "minRowTooltip", maxRow: "maxRow", maxRowTooltip: "maxRowTooltip" }, outputs: { add: "add", remove: "remove" }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 6, vars: 6, consts: [[1, "acl-array-form-table"], [4, "ngIf"], [4, "ngFor", "ngForOf"], ["class", "acl-array-form-table--row-action", 4, "ngIf"], [4, "ngTemplateOutlet"], ["class", "acl-array-form-table__action-col", 4, "ngIf"], [1, "acl-array-form-table__action-col"], [3, "acl-array-form-table__row-error", 4, "ngFor", "ngForOf"], [3, "acl-array-form-table__row-error", "hidden", 4, "ngIf"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["class", "acl-array-form-table__action-col", 3, "acl-array-form-table__action-col-divider", 4, "ngIf"], [3, "auiTooltip", "auiTooltipDisabled"], ["aui-button", "text", "type", "button", 3, "disabled", "square", "plain", "click", 4, "ngIf"], ["aui-button", "text", "type", "button", 3, "click", "disabled", "square", "plain"], ["icon", "minus_circle"], [3, "hidden"], [1, "acl-array-form-table__separator"], ["colspan", "100"], ["colspan", "100", 2, "padding", "unset"], [3, "zeroState", "resourceName", "resourceNameTranslated", "minHeight", 4, "ngIf"], [3, "zeroState", "resourceName", "resourceNameTranslated", "minHeight"], [1, "acl-array-form-table--row-action"], [1, "acl-array-form-table__bottom-control-buttons"], ["class", "tw-flex tw-w-full", 3, "auiTooltip", "auiTooltipDisabled", 4, "ngIf"], [1, "tw-flex", "tw-w-full", 3, "auiTooltip", "auiTooltipDisabled"], ["aui-button", "primary", "type", "button", "size", "mini", 3, "click", "plain", "disabled"], ["icon", "plus_circle"]], template: function ArrayFormTableComponent_Template(rf, ctx) { if (rf & 1) {
405
+ } }, inputs: { rowSeparator: "rowSeparator", rows: "rows", resourceName: "resourceName", resourceNameTranslated: "resourceNameTranslated", readonly: "readonly", addDisabled: "addDisabled", actionColumnDivider: "actionColumnDivider", showZeroState: "showZeroState", showRowError: "showRowError", rowBackgroundColorFn: "rowBackgroundColorFn", minRow: "minRow", minRowTooltip: "minRowTooltip", maxRow: "maxRow", maxRowTooltip: "maxRowTooltip" }, outputs: { add: "add", remove: "remove" }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 6, vars: 6, consts: [[1, "acl-array-form-table"], [4, "ngIf"], [4, "ngFor", "ngForOf"], ["class", "acl-array-form-table--row-action", 4, "ngIf"], [4, "ngTemplateOutlet"], ["class", "acl-array-form-table__action-col", 4, "ngIf"], [1, "acl-array-form-table__action-col"], [3, "acl-array-form-table__row-error", 4, "ngFor", "ngForOf"], [3, "acl-array-form-table__row-error", "hidden", 4, "ngIf"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["class", "acl-array-form-table__action-col", 3, "acl-array-form-table__action-col-divider", 4, "ngIf"], [3, "auiTooltip", "auiTooltipDisabled"], ["aui-button", "text", "type", "button", 3, "disabled", "square", "plain", "click", 4, "ngIf"], ["aui-button", "text", "type", "button", 3, "click", "disabled", "square", "plain"], ["icon", "minus_circle"], [3, "hidden"], [1, "acl-array-form-table__separator"], ["colspan", "100"], [1, "tw-h-[8px]"], ["colspan", "100", 2, "padding", "unset"], [3, "zeroState", "resourceName", "resourceNameTranslated", "minHeight", 4, "ngIf"], [3, "zeroState", "resourceName", "resourceNameTranslated", "minHeight"], [1, "acl-array-form-table--row-action"], [1, "acl-array-form-table__bottom-control-buttons"], ["class", "tw-flex tw-w-full", 3, "auiTooltip", "auiTooltipDisabled", 4, "ngIf"], [1, "tw-flex", "tw-w-full", 3, "auiTooltip", "auiTooltipDisabled"], ["aui-button", "primary", "type", "button", "size", "mini", 3, "click", "plain", "disabled"], ["icon", "plus_circle"]], template: function ArrayFormTableComponent_Template(rf, ctx) { if (rf & 1) {
393
406
  i0.ɵɵelementStart(0, "table", 0);
394
407
  i0.ɵɵtemplate(1, ArrayFormTableComponent_thead_1_Template, 4, 2, "thead", 1);
395
408
  i0.ɵɵelementStart(2, "tbody");
@@ -427,7 +440,7 @@ export class ArrayFormTableComponent {
427
440
  AsyncPipe,
428
441
  TranslateModule,
429
442
  ...EFFECT_DIRECTIVE_MODULE,
430
- ], standalone: true, template: "<table\n class=\"acl-array-form-table\"\n [class.acl-array-form-table__readonly-mode]=\"readonly\"\n>\n <thead *ngIf=\"headerTemplate\">\n <tr>\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n <th\n *ngIf=\"!readonly && minRow !== maxRow\"\n class=\"acl-array-form-table__action-col\"\n ></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let row of rows; let index = index\">\n <tr\n *ngFor=\"let rowTemplate of rowTemplates; let templateIndex = index\"\n [class.acl-array-form-table__row-error]=\"\n row | pure: shouldShowRowError | async\n \"\n [attr.rowtemplateindex]=\"templateIndex\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n rowTemplate;\n context: { $implicit: row, index: index }\n \"\n ></ng-container>\n <td\n *ngIf=\"templateIndex === 0 && !readonly && minRow !== maxRow\"\n class=\"acl-array-form-table__action-col\"\n [class.acl-array-form-table__action-col-divider]=\"actionColumnDivider\"\n >\n <ng-container *ngIf=\"rowControlTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n rowControlTemplate;\n context: { $implicit: row, index: index }\n \"\n ></ng-container>\n </ng-container>\n <div\n [auiTooltip]=\"minRowTooltip\"\n [auiTooltipDisabled]=\"rows?.length > minRow || !minRowTooltip\"\n >\n <button\n *ngIf=\"!rowControlTemplate\"\n aui-button=\"text\"\n type=\"button\"\n [disabled]=\"rows?.length <= minRow\"\n [square]=\"true\"\n [plain]=\"true\"\n (click)=\"remove.emit(index)\"\n >\n <aui-icon icon=\"minus_circle\"></aui-icon>\n </button>\n </div>\n </td>\n </tr>\n\n <tr\n *ngIf=\"rowErrorTemplate && !readonly\"\n [class.acl-array-form-table__row-error]=\"\n row | pure: shouldShowRowError | async\n \"\n [hidden]=\"!(row | pure: shouldShowRowError | async)\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n rowErrorTemplate;\n context: { $implicit: row, index: index }\n \"\n ></ng-container>\n </tr>\n <ng-container\n *ngIf=\"\n separatorTemplate && rows?.length > 1 && index !== rows?.length - 1\n \"\n >\n <tr class=\"acl-array-form-table__separator\">\n <td colspan=\"100\">\n <ng-container *ngTemplateOutlet=\"separatorTemplate\"></ng-container>\n </td>\n </tr>\n </ng-container>\n </ng-container>\n\n <tr *ngIf=\"(!rows || rows.length === 0) && showZeroState\">\n <td\n colspan=\"100\"\n style=\"padding: unset\"\n >\n <acl-zero-state\n *ngIf=\"!zeroStateTemplate\"\n [zeroState]=\"true\"\n [resourceName]=\"resourceName\"\n [resourceNameTranslated]=\"resourceNameTranslated\"\n [minHeight]=\"48\"\n ></acl-zero-state>\n\n <ng-container *ngIf=\"zeroStateTemplate\">\n <ng-container *ngTemplateOutlet=\"zeroStateTemplate\"></ng-container>\n </ng-container>\n </td>\n </tr>\n\n <tr\n *ngIf=\"!readonly && minRow !== maxRow\"\n class=\"acl-array-form-table--row-action\"\n >\n <td colspan=\"100\">\n <div class=\"acl-array-form-table__bottom-control-buttons\">\n <ng-container *ngIf=\"footerTemplate\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </ng-container>\n <div\n *ngIf=\"!footerTemplate\"\n class=\"tw-flex tw-w-full\"\n [auiTooltip]=\"maxRowTooltip\"\n [auiTooltipDisabled]=\"rows?.length < maxRow || !maxRowTooltip\"\n >\n <button\n aui-button=\"primary\"\n type=\"button\"\n [plain]=\"true\"\n size=\"mini\"\n (click)=\"add.emit()\"\n [disabled]=\"rows?.length >= maxRow || addDisabled\"\n >\n <aui-icon icon=\"plus_circle\"></aui-icon>\n {{ 'add' | translate }}\n </button>\n </div>\n </div>\n </td>\n </tr>\n </tbody>\n</table>\n" }]
443
+ ], standalone: true, template: "<table\n class=\"acl-array-form-table\"\n [class.acl-array-form-table__readonly-mode]=\"readonly\"\n>\n <thead *ngIf=\"headerTemplate\">\n <tr>\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n <th\n *ngIf=\"!readonly && minRow !== maxRow\"\n class=\"acl-array-form-table__action-col\"\n ></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let row of rows; let index = index\">\n <tr\n *ngFor=\"let rowTemplate of rowTemplates; let templateIndex = index\"\n [class.acl-array-form-table__row-error]=\"\n row | pure: shouldShowRowError | async\n \"\n [attr.rowtemplateindex]=\"templateIndex\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n rowTemplate;\n context: { $implicit: row, index: index }\n \"\n ></ng-container>\n <td\n *ngIf=\"templateIndex === 0 && !readonly && minRow !== maxRow\"\n class=\"acl-array-form-table__action-col\"\n [class.acl-array-form-table__action-col-divider]=\"actionColumnDivider\"\n >\n <ng-container *ngIf=\"rowControlTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n rowControlTemplate;\n context: { $implicit: row, index: index }\n \"\n ></ng-container>\n </ng-container>\n <div\n [auiTooltip]=\"minRowTooltip\"\n [auiTooltipDisabled]=\"rows?.length > minRow || !minRowTooltip\"\n >\n <button\n *ngIf=\"!rowControlTemplate\"\n aui-button=\"text\"\n type=\"button\"\n [disabled]=\"rows?.length <= minRow\"\n [square]=\"true\"\n [plain]=\"true\"\n (click)=\"remove.emit(index)\"\n >\n <aui-icon icon=\"minus_circle\"></aui-icon>\n </button>\n </div>\n </td>\n </tr>\n\n <tr\n *ngIf=\"rowErrorTemplate && !readonly\"\n [class.acl-array-form-table__row-error]=\"\n row | pure: shouldShowRowError | async\n \"\n [hidden]=\"!(row | pure: shouldShowRowError | async)\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n rowErrorTemplate;\n context: { $implicit: row, index: index }\n \"\n ></ng-container>\n </tr>\n <ng-container\n *ngIf=\"\n (rowSeparator || separatorTemplate) &&\n rows?.length > 1 &&\n index !== rows?.length - 1\n \"\n >\n <tr class=\"acl-array-form-table__separator\">\n <td colspan=\"100\">\n @if (separatorTemplate) {\n <ng-container\n *ngTemplateOutlet=\"separatorTemplate\"\n ></ng-container>\n } @else {\n <div class=\"tw-h-[8px]\"></div>\n }\n </td>\n </tr>\n </ng-container>\n </ng-container>\n\n <tr *ngIf=\"(!rows || rows.length === 0) && showZeroState\">\n <td\n colspan=\"100\"\n style=\"padding: unset\"\n >\n <acl-zero-state\n *ngIf=\"!zeroStateTemplate\"\n [zeroState]=\"true\"\n [resourceName]=\"resourceName\"\n [resourceNameTranslated]=\"resourceNameTranslated\"\n [minHeight]=\"48\"\n ></acl-zero-state>\n\n <ng-container *ngIf=\"zeroStateTemplate\">\n <ng-container *ngTemplateOutlet=\"zeroStateTemplate\"></ng-container>\n </ng-container>\n </td>\n </tr>\n\n <tr\n *ngIf=\"!readonly && minRow !== maxRow\"\n class=\"acl-array-form-table--row-action\"\n >\n <td colspan=\"100\">\n <div class=\"acl-array-form-table__bottom-control-buttons\">\n <ng-container *ngIf=\"footerTemplate\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </ng-container>\n <div\n *ngIf=\"!footerTemplate\"\n class=\"tw-flex tw-w-full\"\n [auiTooltip]=\"maxRowTooltip\"\n [auiTooltipDisabled]=\"rows?.length < maxRow || !maxRowTooltip\"\n >\n <button\n aui-button=\"primary\"\n type=\"button\"\n [plain]=\"true\"\n size=\"mini\"\n (click)=\"add.emit()\"\n [disabled]=\"rows?.length >= maxRow || addDisabled\"\n >\n <aui-icon icon=\"plus_circle\"></aui-icon>\n {{ 'add' | translate }}\n </button>\n </div>\n </div>\n </td>\n </tr>\n </tbody>\n</table>\n" }]
431
444
  }], () => [{ type: i0.Injector }], { headerTemplate: [{
432
445
  type: ContentChild,
433
446
  args: [ArrayFormTableHeaderDirective, {
@@ -464,6 +477,8 @@ export class ArrayFormTableComponent {
464
477
  read: TemplateRef,
465
478
  static: false,
466
479
  }]
480
+ }], rowSeparator: [{
481
+ type: Input
467
482
  }], ngFormGroupDirective: [{
468
483
  type: ContentChild,
469
484
  args: [FormGroupDirective, { static: false }]
@@ -499,4 +514,4 @@ export class ArrayFormTableComponent {
499
514
  type: Input
500
515
  }] }); })();
501
516
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ArrayFormTableComponent, { className: "ArrayFormTableComponent" }); })();
502
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2FycmF5LWZvcm0tdGFibGUvZm9ybS9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvYXJyYXktZm9ybS10YWJsZS9mb3JtL3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMvRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixTQUFTLEVBQ1QsWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLFNBQVMsRUFDVCxTQUFTLEVBQ1Qsa0JBQWtCLEVBQ2xCLE1BQU0sR0FDUCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7Ozs7O0lDdkI1RSx3QkFBZ0U7OztJQUNoRSx3QkFHTTs7O0lBTFIsQUFERiw2QkFBOEIsU0FDeEI7SUFFRixBQURBLGtHQUFpRCxpRUFJaEQ7SUFFTCxBQURFLGlCQUFLLEVBQ0M7OztJQU5XLGVBQWdDO0lBQWhDLHdEQUFnQztJQUU1QyxjQUFvQztJQUFwQywwRUFBb0M7OztJQWNyQyx3QkFLZ0I7OztJQU9aLHdCQUtnQjs7O0lBTmxCLDZCQUF5QztJQUN2QyxrSUFLQzs7Ozs7OztJQUpFLGNBRWtCO0lBQUEsQUFGbEIsNERBRWtCLHlFQUVqQzs7OztJQU1ZLGtDQVFDO0lBREMsMlBBQVMsNEJBQWtCLEtBQUM7SUFFNUIsK0JBQXlDO0lBQzNDLGlCQUFTOzs7SUFKUCxBQURBLEFBREEsNkZBQW1DLGdCQUNwQixlQUNEOzs7SUF2QnBCLDZCQUlDO0lBQ0MsbUhBQXlDO0lBUXpDLCtCQUdDO0lBQ0Msd0dBUUM7SUFJTCxBQURFLGlCQUFNLEVBQ0g7OztJQTFCSCxzRkFBc0U7SUFFdkQsY0FBd0I7SUFBeEIsZ0RBQXdCO0lBU3JDLGNBQTRCO0lBQzVCLEFBREEsaURBQTRCLGtIQUNrQztJQUczRCxjQUF5QjtJQUF6QixpREFBeUI7OztJQS9CbEMsMEJBTUM7OztJQU9DLEFBTkEsOEdBS0MsOEVBS0E7SUEwQkgsaUJBQUs7Ozs7Ozs7O0lBekNILGdJQUVDOztJQUlFLGVBRWM7SUFBQSxBQUZkLGlEQUVjLDBFQUV6QjtJQUVXLGNBQTJEO0lBQTNELG9HQUEyRDs7O0lBc0M5RCx3QkFLZ0I7OztJQVpsQiw4QkFNQzs7Ozs7SUFDQyw4R0FLQztJQUNILGlCQUFLOzs7Ozs7SUFYSCxnSUFFQztJQUNELHlHQUFvRDtJQUdqRCxlQUVjO0lBQUEsQUFGZCwwREFFYywwRUFFekI7OztJQVNZLHdCQUFtRTs7O0lBUHpFLDZCQUlDO0lBRUcsQUFERiw4QkFBNEMsYUFDeEI7SUFDaEIsd0hBQW9EO0lBRXhELEFBREUsaUJBQUssRUFDRjs7OztJQUZjLGVBQW1DO0lBQW5DLDJEQUFtQzs7O0lBbkUxRCw2QkFBMEQ7SUE0RHhELEFBZEEsQUE3Q0Esc0ZBTUMseUVBNkNBLDRGQVlBOzs7OztJQTlEeUIsY0FBaUI7SUFBakIsNkNBQWlCO0lBNkN4QyxjQUFtQztJQUFuQyxrRUFBbUM7SUFjbkMsY0FHVDtJQUhTLDhLQUdUOzs7SUFjUSxxQ0FNa0I7OztJQURoQixBQURBLEFBREEsQUFEQSxnQ0FBa0IscUNBQ1cseURBQ29CLGlCQUNqQzs7O0lBSWhCLHdCQUFtRTs7O0lBRHJFLDZCQUF3QztJQUN0Qyw4R0FBb0Q7Ozs7SUFBckMsY0FBbUM7SUFBbkMsMkRBQW1DOzs7SUFidEQsQUFERiwwQkFBMEQsYUFJdkQ7SUFTQyxBQVJBLG9HQU1DLGtGQUV1QztJQUk1QyxBQURFLGlCQUFLLEVBQ0Y7OztJQVhFLGVBQXdCO0lBQXhCLGdEQUF3QjtJQU9aLGNBQXVCO0lBQXZCLCtDQUF1Qjs7O0lBYWxDLHdCQUFnRTs7O0lBRGxFLDZCQUFxQztJQUNuQyw4R0FBaUQ7Ozs7SUFBbEMsY0FBZ0M7SUFBaEMsd0RBQWdDOzs7O0lBUS9DLEFBTkYsK0JBS0MsaUJBUUU7SUFGQyx5TEFBUyxpQkFBVSxLQUFDO0lBR3BCLCtCQUF3QztJQUN4QyxZQUNGOztJQUNGLEFBREUsaUJBQVMsRUFDTDs7O0lBYkosQUFEQSxpREFBNEIsa0hBQ2tDO0lBSzVELGNBQWM7SUFHZCxBQUhBLDRCQUFjLHNHQUdvQztJQUdsRCxlQUNGO0lBREUsNERBQ0Y7OztJQXBCSixBQURGLEFBSkYsOEJBR0MsYUFDbUIsY0FDMEM7SUFJeEQsQUFIQSwrRkFBcUMsaUVBUXBDO0lBZVAsQUFERSxBQURFLGlCQUFNLEVBQ0gsRUFDRjs7O0lBdkJnQixlQUFvQjtJQUFwQiw0Q0FBb0I7SUFJaEMsY0FBcUI7SUFBckIsNkNBQXFCOztBRHJGbEMsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRXpELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQTRCLEVBQzlELE9BQU8sR0FDTCxFQUFVLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBRTVELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7QUFNMUMsTUFBTSxPQUFPLDZCQUE2QjtJQUN4QyxZQUFtQixXQUE2QjtRQUE3QixnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7SUFBRyxDQUFDOzhGQUR6Qyw2QkFBNkI7b0VBQTdCLDZCQUE2Qjs7aUZBQTdCLDZCQUE2QjtjQUp6QyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtnQkFDckMsVUFBVSxFQUFFLElBQUk7YUFDakI7O0FBU0QsTUFBTSxPQUFPLCtCQUErQjtJQUMxQyxZQUFtQixXQUE2QjtRQUE3QixnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7SUFBRyxDQUFDO2dHQUR6QywrQkFBK0I7b0VBQS9CLCtCQUErQjs7aUZBQS9CLCtCQUErQjtjQUozQyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLDZCQUE2QjtnQkFDdkMsVUFBVSxFQUFFLElBQUk7YUFDakI7O0FBU0QsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxZQUFtQixXQUE2QjtRQUE3QixnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7SUFBRyxDQUFDOzJGQUR6QywwQkFBMEI7b0VBQTFCLDBCQUEwQjs7aUZBQTFCLDBCQUEwQjtjQUp0QyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLHdCQUF3QjtnQkFDbEMsVUFBVSxFQUFFLElBQUk7YUFDakI7O0FBU0QsTUFBTSxPQUFPLGdDQUFnQztJQUMzQyxZQUFtQixXQUE2QjtRQUE3QixnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7SUFBRyxDQUFDO2lHQUR6QyxnQ0FBZ0M7b0VBQWhDLGdDQUFnQzs7aUZBQWhDLGdDQUFnQztjQUo1QyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLDhCQUE4QjtnQkFDeEMsVUFBVSxFQUFFLElBQUk7YUFDakI7O0FBU0QsTUFBTSxPQUFPLGlDQUFpQztJQUM1QyxZQUFtQixXQUE2QjtRQUE3QixnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7SUFBRyxDQUFDO2tHQUR6QyxpQ0FBaUM7b0VBQWpDLGlDQUFpQzs7aUZBQWpDLGlDQUFpQztjQUo3QyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLCtCQUErQjtnQkFDekMsVUFBVSxFQUFFLElBQUk7YUFDakI7O0FBU0QsTUFBTSxPQUFPLG1DQUFtQztJQUM5QyxZQUFtQixXQUE2QjtRQUE3QixnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7SUFBRyxDQUFDO29HQUR6QyxtQ0FBbUM7b0VBQW5DLG1DQUFtQzs7aUZBQW5DLG1DQUFtQztjQUovQyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlDQUFpQztnQkFDM0MsVUFBVSxFQUFFLElBQUk7YUFDakI7O0FBU0QsTUFBTSxPQUFPLDZCQUE2QjtJQUN4QyxZQUFtQixXQUE2QjtRQUE3QixnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7SUFBRyxDQUFDOzhGQUR6Qyw2QkFBNkI7b0VBQTdCLDZCQUE2Qjs7aUZBQTdCLDZCQUE2QjtjQUp6QyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtnQkFDckMsVUFBVSxFQUFFLElBQUk7YUFDakI7O0FBS0QsdUNBQXVDO0FBQ3ZDLFNBQVMscUJBQXFCLENBQUMsT0FBd0I7SUFDckQsSUFBSSxPQUFPLFlBQVksU0FBUyxJQUFJLE9BQU8sWUFBWSxTQUFTLEVBQUUsQ0FBQztRQUNqRSxPQUFPLENBQ0wsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQ25DLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUM1RCxDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDO0FBQzFDLENBQUM7QUF1QkQsTUFBTSxPQUFPLHVCQUF1QjtJQWlGbEMsSUFBSSxhQUFhO1FBQ2YsT0FBTyxDQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQztZQUMzQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQ2hDLENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBRUgsWUFBWSxDQUNWLE9BQVUsRUFDVixhQUEyQztRQUUzQyxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLE9BQU8sQ0FDTCxPQUFPLENBQUMsT0FBTztnQkFDZixDQUFDLGFBQWEsQ0FBQyxTQUFTLElBQUkscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FDNUQsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7T0FFRztJQUVILG9CQUFvQixDQUNsQixPQUFVLEVBQ1YsYUFBMkM7UUFFM0MsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUM7WUFDOUMsQ0FBQyxDQUFDLHlCQUF5QjtZQUMzQixDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ1gsQ0FBQztJQWtCRCxZQUFtQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBOUVyQyxpQkFBWSxHQUFHLElBQWMsQ0FBQztRQU05QixRQUFHLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUcvQixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQyxDQUFDLGtDQUFrQztRQUd2RSxhQUFRLEdBQWlCLEtBQUssQ0FBQztRQUcvQixnQkFBVyxHQUFpQixLQUFLLENBQUM7UUFHbEMsd0JBQW1CLEdBQWlCLEtBQUssQ0FBQztRQUcxQyxrQkFBYSxHQUFHLElBQUksQ0FBQztRQTBDckIsV0FBTSxHQUFHLENBQUMsQ0FBQztRQUdYLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBR25CLFdBQU0sR0FBRyxRQUFRLENBQUM7UUFHbEIsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFFbkIsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFaEMsUUFBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFTM0MsdUJBQWtCLEdBQUcsQ0FBQyxPQUF3QixFQUFFLEVBQUU7WUFDaEQsTUFBTSxFQUFFLGFBQWEsR0FBRyxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDO1lBRWxELE9BQU8sQ0FDTCxJQUFJLENBQUMsYUFBYTtnQkFDaEIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7Z0JBQ25ELENBQUMsQ0FBQyxhQUFhLENBQ2xCLENBQUMsSUFBSSxDQUNKLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFDakIsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUNmLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FDMUQsQ0FBQztRQUNKLENBQUMsQ0FBQztJQW5Cc0MsQ0FBQztJQUV6QyxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7d0ZBN0lVLHVCQUF1QjtvRUFBdkIsdUJBQXVCO3dDQUNwQiw2QkFBNkIsS0FDbkMsV0FBVzt3Q0FTTCwrQkFBK0IsS0FBVSxXQUFXO3dDQU1wRCxpQ0FBaUMsS0FDdkMsV0FBVzt3Q0FRTCw2QkFBNkIsS0FDbkMsV0FBVzt3Q0FRTCxnQ0FBZ0MsS0FDdEMsV0FBVzt3Q0FRTCxtQ0FBbUMsS0FDekMsV0FBVzt3Q0FLTCxrQkFBa0I7d0NBMUNmLDBCQUEwQixLQUFVLFdBQVc7Ozs7Ozs7Ozs7OztZQ3ZJbEUsZ0NBR0M7WUFDQyw0RUFBOEI7WUFTOUIsNkJBQU87WUE2RkwsQUFuQkEsQUF6RUEsMEZBQTBELHlEQXlFQSx5REFzQnpEO1lBNEJMLEFBREUsaUJBQVEsRUFDRjs7WUF2SU4sbUVBQXNEO1lBRTlDLGNBQW9CO1lBQXBCLHlDQUFvQjtZQVVJLGVBQVM7WUFBVCxrQ0FBUztZQXlFbEMsY0FBbUQ7WUFBbkQsZ0ZBQW1EO1lBb0JyRCxjQUFvQztZQUFwQyxpRUFBb0M7NEJETXZDLGdCQUFnQjtZQUNoQixhQUFhLHVCQUNiLGtCQUFrQjtZQUNsQixZQUFZLHNCQUNaLFVBQVUsb0JBQ1YsSUFBSTtZQUNKLE9BQU87WUFDUCxRQUFRO1lBQ1IsU0FBUztZQUNULGVBQWU7O2lGQUtOLHVCQUF1QjtjQXJCbkMsU0FBUzsyQkFDRSxzQkFBc0IsbUJBSWYsdUJBQXVCLENBQUMsT0FBTyxXQUN2QztvQkFDUCxnQkFBZ0I7b0JBQ2hCLGFBQWE7b0JBQ2Isa0JBQWtCO29CQUNsQixZQUFZO29CQUNaLFVBQVU7b0JBQ1YsSUFBSTtvQkFDSixPQUFPO29CQUNQLFFBQVE7b0JBQ1IsU0FBUztvQkFDVCxlQUFlO29CQUNmLEdBQUcsdUJBQXVCO2lCQUMzQixjQUNXLElBQUk7eUNBT2hCLGNBQWM7a0JBSmIsWUFBWTttQkFBQyw2QkFBNkIsRUFBRTtvQkFDM0MsSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLE1BQU0sRUFBRSxJQUFJO2lCQUNiO1lBS0QsWUFBWTtrQkFEWCxlQUFlO21CQUFDLDBCQUEwQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtZQUlsRSxnQkFBZ0I7a0JBRGYsWUFBWTttQkFBQywrQkFBK0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7WUFVcEUsa0JBQWtCO2tCQUpqQixZQUFZO21CQUFDLGlDQUFpQyxFQUFFO29CQUMvQyxJQUFJLEVBQUUsV0FBVztvQkFDakIsTUFBTSxFQUFFLElBQUk7aUJBQ2I7WUFVRCxjQUFjO2tCQUpiLFlBQVk7bUJBQUMsNkJBQTZCLEVBQUU7b0JBQzNDLElBQUksRUFBRSxXQUFXO29CQUNqQixNQUFNLEVBQUUsSUFBSTtpQkFDYjtZQVVELGlCQUFpQjtrQkFKaEIsWUFBWTttQkFBQyxnQ0FBZ0MsRUFBRTtvQkFDOUMsSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLE1BQU0sRUFBRSxLQUFLO2lCQUNkO1lBVUQsaUJBQWlCO2tCQUpoQixZQUFZO21CQUFDLG1DQUFtQyxFQUFFO29CQUNqRCxJQUFJLEVBQUUsV0FBVztvQkFDakIsTUFBTSxFQUFFLEtBQUs7aUJBQ2Q7WUFJRCxvQkFBb0I7a0JBRG5CLFlBQVk7bUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBS25ELElBQUk7a0JBREgsS0FBSztZQUlOLFlBQVk7a0JBRFgsS0FBSztZQUlOLHNCQUFzQjtrQkFEckIsS0FBSztZQUlOLEdBQUc7a0JBREYsTUFBTTtZQUlQLE1BQU07a0JBREwsTUFBTTtZQUlQLFFBQVE7a0JBRFAsS0FBSztZQUlOLFdBQVc7a0JBRFYsS0FBSztZQUlOLG1CQUFtQjtrQkFEbEIsS0FBSztZQUlOLGFBQWE7a0JBRFosS0FBSztZQWVOLFlBQVk7a0JBRFgsS0FBSztZQW1CTixvQkFBb0I7a0JBRG5CLEtBQUs7WUFXTixNQUFNO2tCQURMLEtBQUs7WUFJTixhQUFhO2tCQURaLEtBQUs7WUFJTixNQUFNO2tCQURMLEtBQUs7WUFJTixhQUFhO2tCQURaLEtBQUs7O2tGQWpJSyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdXR0b25Nb2R1bGUsIEljb25Nb2R1bGUsIHJnYkNvbG9yLCBUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFsYXVkYS91aSc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nRm9yT2YsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBEaXJlY3RpdmUsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEZvcm1BcnJheSxcbiAgRm9ybUdyb3VwLFxuICBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gIE5nRm9ybSxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBFTVBUWSwgbWFwLCBtZXJnZSwgc3RhcnRXaXRoLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFB1cmVQaXBlIH0gZnJvbSAnLi4vLi4vY29yZS9waXBlcy9wdXJlLnBpcGUnO1xuaW1wb3J0IHsgRUZGRUNUX0RJUkVDVElWRV9NT0RVTEUgfSBmcm9tICcuLi8uLi9lZmZlY3QtZGlyZWN0aXZlL21vZHVsZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICcuLi8uLi90cmFuc2xhdGUvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBaZXJvU3RhdGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi93aWRnZXQvemVyby1zdGF0ZS96ZXJvLXN0YXRlLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBjb25zdCBBUlJBWV9UQUJMRV9GT1JNX0VSUk9SX0JHID0gcmdiQ29sb3IoJ3ItNicpO1xuXG5leHBvcnQgY29uc3Qgcm93QmFja2dyb3VuZENvbG9yRm4gPSA8VCBleHRlbmRzIEFic3RyYWN0Q29udHJvbD4oe1xuICBpbnZhbGlkLFxufTogVCk6IHN0cmluZyA9PiAoaW52YWxpZCA/IEFSUkFZX1RBQkxFX0ZPUk1fRVJST1JfQkcgOiAnJyk7XG5cbmV4cG9ydCBjb25zdCBub1Nob3dSb3dFcnJvciA9ICgpID0+IGZhbHNlO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYWNsQXJyYXlGb3JtVGFibGVIZWFkZXJdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQXJyYXlGb3JtVGFibGVIZWFkZXJEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1thY2xBcnJheUZvcm1UYWJsZVJvd0Vycm9yXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEFycmF5Rm9ybVRhYmxlUm93RXJyb3JEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1thY2xBcnJheUZvcm1UYWJsZVJvd10nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBBcnJheUZvcm1UYWJsZVJvd0RpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Pikge31cbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FjbEFycmF5Rm9ybVRhYmxlWmVyb1N0YXRlXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEFycmF5Rm9ybVRhYmxlWmVyb1N0YXRlRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYWNsQXJyYXlGb3JtVGFibGVSb3dDb250cm9sXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEFycmF5Rm9ybVRhYmxlUm93Q29udHJvbERpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Pikge31cbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FjbEFycmF5Rm9ybVRhYmxlUm93U2VwYXJhdG9yXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEFycmF5Rm9ybVRhYmxlUm93U2VwYXJhdG9yRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYWNsQXJyYXlGb3JtVGFibGVGb290ZXJdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQXJyYXlGb3JtVGFibGVGb290ZXJEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG59XG5cbi8vIOmAkuW9kumqjOivgSBjb250cm9sIOaYr+WQpuaciemXrumimO+8jGdyb3VwIOWGhemDqOWPr+iDveS8muacieW1jOWll+eahOaDheWGtVxuZnVuY3Rpb24gX2lzRm9ybUNvbnRyb2xJbnZhbGlkKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xuICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCB8fCBjb250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIChjb250cm9sLmRpcnR5ICYmICEhY29udHJvbC5lcnJvcnMpIHx8XG4gICAgICBPYmplY3QudmFsdWVzKGNvbnRyb2wuY29udHJvbHMpLnNvbWUoX2lzRm9ybUNvbnRyb2xJbnZhbGlkKVxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGNvbnRyb2wuZGlydHkgJiYgY29udHJvbC5pbnZhbGlkO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wtYXJyYXktZm9ybS10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZW1wbGF0ZS5odG1sJyxcbiAgLy8gU2luY2Ugcm93cyBtYXliZSB1cGRhdGVkIHdpdGhvdXQgY2hhbmdpbmcgcmVmZXJlbmNlLCB3ZSB1c2UgRGVmYXVsdCBoZXJlOlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L3ByZWZlci1vbi1wdXNoLWNvbXBvbmVudC1jaGFuZ2UtZGV0ZWN0aW9uXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcbiAgaW1wb3J0czogW1xuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgICBaZXJvU3RhdGVDb21wb25lbnQsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gICAgTmdJZixcbiAgICBOZ0Zvck9mLFxuICAgIFB1cmVQaXBlLFxuICAgIEFzeW5jUGlwZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgLi4uRUZGRUNUX0RJUkVDVElWRV9NT0RVTEUsXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEFycmF5Rm9ybVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQENvbnRlbnRDaGlsZChBcnJheUZvcm1UYWJsZUhlYWRlckRpcmVjdGl2ZSwge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLy8g55So5oi35Y+v5Lul5o+Q5L6b5aSa6KGM5qih5p2/LCDkvYblj6rmnInnrKzkuIDooYzmnInmjqfliLbmjInplK4uXG4gIEBDb250ZW50Q2hpbGRyZW4oQXJyYXlGb3JtVGFibGVSb3dEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcm93VGVtcGxhdGVzOiBRdWVyeUxpc3Q8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgQENvbnRlbnRDaGlsZChBcnJheUZvcm1UYWJsZVJvd0Vycm9yRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHJvd0Vycm9yVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqXG4gICAqIOihqOWNlem7mOiupOaPkOS+m+WIoOmZpOaMiemUrjsg5YGH5aaC55So5oi35o+Q5L6b5qih5p2/LCDlsIbkvb/nlKjnlKjmiLfnmoTmqKHmnb9cbiAgICovXG4gIEBDb250ZW50Q2hpbGQoQXJyYXlGb3JtVGFibGVSb3dDb250cm9sRGlyZWN0aXZlLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICByb3dDb250cm9sVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqXG4gICAqIOihqOWNlem7mOiupOaPkOS+m+a3u+WKoOaMiemUrjsg5YGH5aaC55So5oi35o+Q5L6b5qih5p2/LCDlsIbkvb/nlKjnlKjmiLfnmoTmqKHmnb9cbiAgICovXG4gIEBDb250ZW50Q2hpbGQoQXJyYXlGb3JtVGFibGVGb290ZXJEaXJlY3RpdmUsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8qKlxuICAgKiDooajljZXpu5jorqTkuLrnqbrmlbDmja7mj5Dkvpvml6B4eHjnmoTmqKHmnb87IOWBh+WmgueUqOaIt+aPkOS+m+aooeadvywg5bCG5L2/55So55So5oi355qE5qih5p2/XG4gICAqL1xuICBAQ29udGVudENoaWxkKEFycmF5Rm9ybVRhYmxlWmVyb1N0YXRlRGlyZWN0aXZlLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiBmYWxzZSxcbiAgfSlcbiAgemVyb1N0YXRlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqXG4gICAqIOihjOS5i+mXtOeahOWIhumalOWMuuWfn1xuICAgKi9cbiAgQENvbnRlbnRDaGlsZChBcnJheUZvcm1UYWJsZVJvd1NlcGFyYXRvckRpcmVjdGl2ZSwge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogZmFsc2UsXG4gIH0pXG4gIHNlcGFyYXRvclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBDb250ZW50Q2hpbGQoRm9ybUdyb3VwRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgbmdGb3JtR3JvdXBEaXJlY3RpdmU6IEZvcm1Hcm91cERpcmVjdGl2ZTtcblxuICAvLyBEYXRhIGNvbnRleHQgZm9yIHJvd3MuXG4gIEBJbnB1dCgpXG4gIHJvd3M6IGFueVtdO1xuXG4gIEBJbnB1dCgpXG4gIHJlc291cmNlTmFtZSA9IG51bGwgYXMgc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHJlc291cmNlTmFtZVRyYW5zbGF0ZWQ6IHN0cmluZztcblxuICBAT3V0cHV0KClcbiAgYWRkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBPdXRwdXQoKVxuICByZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTsgLy8gUmV0dXJucyB0aGUgaW5kZXggdG8gYmUgcmVtb3ZlZFxuXG4gIEBJbnB1dCgpXG4gIHJlYWRvbmx5OiBib29sZWFuIHwgJycgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBhZGREaXNhYmxlZDogYm9vbGVhbiB8ICcnID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgYWN0aW9uQ29sdW1uRGl2aWRlcjogYm9vbGVhbiB8ICcnID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgc2hvd1plcm9TdGF0ZSA9IHRydWU7XG5cbiAgZ2V0IGZvcm1EaXJlY3RpdmUoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0KEZvcm1Hcm91cERpcmVjdGl2ZSwgbnVsbCkgfHxcbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0KE5nRm9ybSwgbnVsbClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIOiHquWumuS5ieaYr+WQpuWxleekuumUmeivr+WGheWuuVxuICAgKiDkvovlpoIgY29udHJvbCDmmK8gRm9ybUdyb3Vw77yM5Y+q5pyJ5Zyo5YaF6YOo5a2QIGNvbnRyb2wg6ZSZ6K+v5pe25omN6ZyA6KaB5bGV56S66ZSZ6K+v5YaF5a65XG4gICAqL1xuICBASW5wdXQoKVxuICBzaG93Um93RXJyb3I8VCBleHRlbmRzIEFic3RyYWN0Q29udHJvbD4oXG4gICAgY29udHJvbDogVCxcbiAgICBmb3JtRGlyZWN0aXZlPzogTmdGb3JtIHwgRm9ybUdyb3VwRGlyZWN0aXZlLFxuICApOiBib29sZWFuIHtcbiAgICBpZiAoZm9ybURpcmVjdGl2ZSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgY29udHJvbC5pbnZhbGlkICYmXG4gICAgICAgIChmb3JtRGlyZWN0aXZlLnN1Ym1pdHRlZCB8fCBfaXNGb3JtQ29udHJvbEludmFsaWQoY29udHJvbCkpXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2Uge0BsaW5rIHNob3dSb3dFcnJvcn0gaW5zdGVhZFxuICAgKi9cbiAgQElucHV0KClcbiAgcm93QmFja2dyb3VuZENvbG9yRm48VCBleHRlbmRzIEFic3RyYWN0Q29udHJvbD4oXG4gICAgY29udHJvbDogVCxcbiAgICBmb3JtRGlyZWN0aXZlPzogTmdGb3JtIHwgRm9ybUdyb3VwRGlyZWN0aXZlLFxuICApOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnNob3dSb3dFcnJvcihjb250cm9sLCBmb3JtRGlyZWN0aXZlKVxuICAgICAgPyBBUlJBWV9UQUJMRV9GT1JNX0VSUk9SX0JHXG4gICAgICA6IG51bGw7XG4gIH1cblxuICBASW5wdXQoKVxuICBtaW5Sb3cgPSAwO1xuXG4gIEBJbnB1dCgpXG4gIG1pblJvd1Rvb2x0aXAgPSAnJztcblxuICBASW5wdXQoKVxuICBtYXhSb3cgPSBJbmZpbml0eTtcblxuICBASW5wdXQoKVxuICBtYXhSb3dUb29sdGlwID0gJyc7XG5cbiAgZGVzdHJveSQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjZHIgPSB0aGlzLmluamVjdG9yLmdldChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGluamVjdG9yOiBJbmplY3Rvcikge31cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkJC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHNob3VsZFNob3dSb3dFcnJvciA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcbiAgICBjb25zdCB7IHN0YXR1c0NoYW5nZXMgPSBFTVBUWSwgc3RhdHVzIH0gPSBjb250cm9sO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuZm9ybURpcmVjdGl2ZVxuICAgICAgICA/IG1lcmdlKHN0YXR1c0NoYW5nZXMsIHRoaXMuZm9ybURpcmVjdGl2ZS5uZ1N1Ym1pdClcbiAgICAgICAgOiBzdGF0dXNDaGFuZ2VzXG4gICAgKS5waXBlKFxuICAgICAgc3RhcnRXaXRoKHN0YXR1cyksXG4gICAgICBkZWJvdW5jZVRpbWUoMCksXG4gICAgICBtYXAoKCkgPT4gdGhpcy5zaG93Um93RXJyb3IoY29udHJvbCwgdGhpcy5mb3JtRGlyZWN0aXZlKSksXG4gICAgKTtcbiAgfTtcbn1cbiIsIjx0YWJsZVxuICBjbGFzcz1cImFjbC1hcnJheS1mb3JtLXRhYmxlXCJcbiAgW2NsYXNzLmFjbC1hcnJheS1mb3JtLXRhYmxlX19yZWFkb25seS1tb2RlXT1cInJlYWRvbmx5XCJcbj5cbiAgPHRoZWFkICpuZ0lmPVwiaGVhZGVyVGVtcGxhdGVcIj5cbiAgICA8dHI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDx0aFxuICAgICAgICAqbmdJZj1cIiFyZWFkb25seSAmJiBtaW5Sb3cgIT09IG1heFJvd1wiXG4gICAgICAgIGNsYXNzPVwiYWNsLWFycmF5LWZvcm0tdGFibGVfX2FjdGlvbi1jb2xcIlxuICAgICAgPjwvdGg+XG4gICAgPC90cj5cbiAgPC90aGVhZD5cbiAgPHRib2R5PlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJvdyBvZiByb3dzOyBsZXQgaW5kZXggPSBpbmRleFwiPlxuICAgICAgPHRyXG4gICAgICAgICpuZ0Zvcj1cImxldCByb3dUZW1wbGF0ZSBvZiByb3dUZW1wbGF0ZXM7IGxldCB0ZW1wbGF0ZUluZGV4ID0gaW5kZXhcIlxuICAgICAgICBbY2xhc3MuYWNsLWFycmF5LWZvcm0tdGFibGVfX3Jvdy1lcnJvcl09XCJcbiAgICAgICAgICByb3cgfCBwdXJlOiBzaG91bGRTaG93Um93RXJyb3IgfCBhc3luY1xuICAgICAgICBcIlxuICAgICAgICBbYXR0ci5yb3d0ZW1wbGF0ZWluZGV4XT1cInRlbXBsYXRlSW5kZXhcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIHJvd1RlbXBsYXRlO1xuICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdywgaW5kZXg6IGluZGV4IH1cbiAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDx0ZFxuICAgICAgICAgICpuZ0lmPVwidGVtcGxhdGVJbmRleCA9PT0gMCAmJiAhcmVhZG9ubHkgJiYgbWluUm93ICE9PSBtYXhSb3dcIlxuICAgICAgICAgIGNsYXNzPVwiYWNsLWFycmF5LWZvcm0tdGFibGVfX2FjdGlvbi1jb2xcIlxuICAgICAgICAgIFtjbGFzcy5hY2wtYXJyYXktZm9ybS10YWJsZV9fYWN0aW9uLWNvbC1kaXZpZGVyXT1cImFjdGlvbkNvbHVtbkRpdmlkZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvd0NvbnRyb2xUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgIHJvd0NvbnRyb2xUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93LCBpbmRleDogaW5kZXggfVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIFthdWlUb29sdGlwXT1cIm1pblJvd1Rvb2x0aXBcIlxuICAgICAgICAgICAgW2F1aVRvb2x0aXBEaXNhYmxlZF09XCJyb3dzPy5sZW5ndGggPiBtaW5Sb3cgfHwgIW1pblJvd1Rvb2x0aXBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKm5nSWY9XCIhcm93Q29udHJvbFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgYXVpLWJ1dHRvbj1cInRleHRcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJvd3M/Lmxlbmd0aCA8PSBtaW5Sb3dcIlxuICAgICAgICAgICAgICBbc3F1YXJlXT1cInRydWVcIlxuICAgICAgICAgICAgICBbcGxhaW5dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUuZW1pdChpbmRleClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YXVpLWljb24gaWNvbj1cIm1pbnVzX2NpcmNsZVwiPjwvYXVpLWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG5cbiAgICAgIDx0clxuICAgICAgICAqbmdJZj1cInJvd0Vycm9yVGVtcGxhdGUgJiYgIXJlYWRvbmx5XCJcbiAgICAgICAgW2NsYXNzLmFjbC1hcnJheS1mb3JtLXRhYmxlX19yb3ctZXJyb3JdPVwiXG4gICAgICAgICAgcm93IHwgcHVyZTogc2hvdWxkU2hvd1Jvd0Vycm9yIHwgYXN5bmNcbiAgICAgICAgXCJcbiAgICAgICAgW2hpZGRlbl09XCIhKHJvdyB8IHB1cmU6IHNob3VsZFNob3dSb3dFcnJvciB8IGFzeW5jKVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgcm93RXJyb3JUZW1wbGF0ZTtcbiAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3csIGluZGV4OiBpbmRleCB9XG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC90cj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBzZXBhcmF0b3JUZW1wbGF0ZSAmJiByb3dzPy5sZW5ndGggPiAxICYmIGluZGV4ICE9PSByb3dzPy5sZW5ndGggLSAxXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDx0ciBjbGFzcz1cImFjbC1hcnJheS1mb3JtLXRhYmxlX19zZXBhcmF0b3JcIj5cbiAgICAgICAgICA8dGQgY29sc3Bhbj1cIjEwMFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNlcGFyYXRvclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPHRyICpuZ0lmPVwiKCFyb3dzIHx8IHJvd3MubGVuZ3RoID09PSAwKSAmJiBzaG93WmVyb1N0YXRlXCI+XG4gICAgICA8dGRcbiAgICAgICAgY29sc3Bhbj1cIjEwMFwiXG4gICAgICAgIHN0eWxlPVwicGFkZGluZzogdW5zZXRcIlxuICAgICAgPlxuICAgICAgICA8YWNsLXplcm8tc3RhdGVcbiAgICAgICAgICAqbmdJZj1cIiF6ZXJvU3RhdGVUZW1wbGF0ZVwiXG4gICAgICAgICAgW3plcm9TdGF0ZV09XCJ0cnVlXCJcbiAgICAgICAgICBbcmVzb3VyY2VOYW1lXT1cInJlc291cmNlTmFtZVwiXG4gICAgICAgICAgW3Jlc291cmNlTmFtZVRyYW5zbGF0ZWRdPVwicmVzb3VyY2VOYW1lVHJhbnNsYXRlZFwiXG4gICAgICAgICAgW21pbkhlaWdodF09XCI0OFwiXG4gICAgICAgID48L2FjbC16ZXJvLXN0YXRlPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ6ZXJvU3RhdGVUZW1wbGF0ZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ6ZXJvU3RhdGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdGQ+XG4gICAgPC90cj5cblxuICAgIDx0clxuICAgICAgKm5nSWY9XCIhcmVhZG9ubHkgJiYgbWluUm93ICE9PSBtYXhSb3dcIlxuICAgICAgY2xhc3M9XCJhY2wtYXJyYXktZm9ybS10YWJsZS0tcm93LWFjdGlvblwiXG4gICAgPlxuICAgICAgPHRkIGNvbHNwYW49XCIxMDBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFjbC1hcnJheS1mb3JtLXRhYmxlX19ib3R0b20tY29udHJvbC1idXR0b25zXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvb3RlclRlbXBsYXRlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cIiFmb290ZXJUZW1wbGF0ZVwiXG4gICAgICAgICAgICBjbGFzcz1cInR3LWZsZXggdHctdy1mdWxsXCJcbiAgICAgICAgICAgIFthdWlUb29sdGlwXT1cIm1heFJvd1Rvb2x0aXBcIlxuICAgICAgICAgICAgW2F1aVRvb2x0aXBEaXNhYmxlZF09XCJyb3dzPy5sZW5ndGggPCBtYXhSb3cgfHwgIW1heFJvd1Rvb2x0aXBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgYXVpLWJ1dHRvbj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW3BsYWluXT1cInRydWVcIlxuICAgICAgICAgICAgICBzaXplPVwibWluaVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhZGQuZW1pdCgpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJvd3M/Lmxlbmd0aCA+PSBtYXhSb3cgfHwgYWRkRGlzYWJsZWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YXVpLWljb24gaWNvbj1cInBsdXNfY2lyY2xlXCI+PC9hdWktaWNvbj5cbiAgICAgICAgICAgICAge3sgJ2FkZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvdGQ+XG4gICAgPC90cj5cbiAgPC90Ym9keT5cbjwvdGFibGU+XG4iXX0=
517
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2FycmF5LWZvcm0tdGFibGUvZm9ybS9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvYXJyYXktZm9ybS10YWJsZS9mb3JtL3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMvRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixTQUFTLEVBQ1QsWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLFNBQVMsRUFDVCxTQUFTLEVBQ1Qsa0JBQWtCLEVBQ2xCLE1BQU0sR0FDUCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7Ozs7O0lDdkI1RSx3QkFBZ0U7OztJQUNo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TSxFQUFFLElBQUk7aUJBQ2I7WUFVRCxpQkFBaUI7a0JBSmhCLFlBQVk7bUJBQUMsZ0NBQWdDLEVBQUU7b0JBQzlDLElBQUksRUFBRSxXQUFXO29CQUNqQixNQUFNLEVBQUUsS0FBSztpQkFDZDtZQVVELGlCQUFpQjtrQkFKaEIsWUFBWTttQkFBQyxtQ0FBbUMsRUFBRTtvQkFDakQsSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLE1BQU0sRUFBRSxLQUFLO2lCQUNkO1lBT0QsWUFBWTtrQkFEWCxLQUFLO1lBSU4sb0JBQW9CO2tCQURuQixZQUFZO21CQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUtuRCxJQUFJO2tCQURILEtBQUs7WUFJTixZQUFZO2tCQURYLEtBQUs7WUFJTixzQkFBc0I7a0JBRHJCLEtBQUs7WUFJTixHQUFHO2tCQURGLE1BQU07WUFJUCxNQUFNO2tCQURMLE1BQU07WUFJUCxRQUFRO2tCQURQLEtBQUs7WUFJTixXQUFXO2tCQURWLEtBQUs7WUFJTixtQkFBbUI7a0JBRGxCLEtBQUs7WUFJTixhQUFhO2tCQURaLEtBQUs7WUFlTixZQUFZO2tCQURYLEtBQUs7WUFtQk4sb0JBQW9CO2tCQURuQixLQUFLO1lBV04sTUFBTTtrQkFETCxLQUFLO1lBSU4sYUFBYTtrQkFEWixLQUFLO1lBSU4sTUFBTTtrQkFETCxLQUFLO1lBSU4sYUFBYTtrQkFEWixLQUFLOztrRkF2SUssdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnV0dG9uTW9kdWxlLCBJY29uTW9kdWxlLCByZ2JDb2xvciwgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0Zvck9mLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGlyZWN0aXZlLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBGb3JtQXJyYXksXG4gIEZvcm1Hcm91cCxcbiAgRm9ybUdyb3VwRGlyZWN0aXZlLFxuICBOZ0Zvcm0sXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgRU1QVFksIG1hcCwgbWVyZ2UsIHN0YXJ0V2l0aCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBQdXJlUGlwZSB9IGZyb20gJy4uLy4uL2NvcmUvcGlwZXMvcHVyZS5waXBlJztcbmltcG9ydCB7IEVGRkVDVF9ESVJFQ1RJVkVfTU9EVUxFIH0gZnJvbSAnLi4vLi4vZWZmZWN0LWRpcmVjdGl2ZS9tb2R1bGUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnLi4vLi4vdHJhbnNsYXRlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgWmVyb1N0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vd2lkZ2V0L3plcm8tc3RhdGUvemVyby1zdGF0ZS5jb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgQVJSQVlfVEFCTEVfRk9STV9FUlJPUl9CRyA9IHJnYkNvbG9yKCdyLTYnKTtcblxuZXhwb3J0IGNvbnN0IHJvd0JhY2tncm91bmRDb2xvckZuID0gPFQgZXh0ZW5kcyBBYnN0cmFjdENvbnRyb2w+KHtcbiAgaW52YWxpZCxcbn06IFQpOiBzdHJpbmcgPT4gKGludmFsaWQgPyBBUlJBWV9UQUJMRV9GT1JNX0VSUk9SX0JHIDogJycpO1xuXG5leHBvcnQgY29uc3Qgbm9TaG93Um93RXJyb3IgPSAoKSA9PiBmYWxzZTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FjbEFycmF5Rm9ybVRhYmxlSGVhZGVyXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEFycmF5Rm9ybVRhYmxlSGVhZGVyRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYWNsQXJyYXlGb3JtVGFibGVSb3dFcnJvcl0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBBcnJheUZvcm1UYWJsZVJvd0Vycm9yRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYWNsQXJyYXlGb3JtVGFibGVSb3ddJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQXJyYXlGb3JtVGFibGVSb3dEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1thY2xBcnJheUZvcm1UYWJsZVplcm9TdGF0ZV0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBBcnJheUZvcm1UYWJsZVplcm9TdGF0ZURpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Pikge31cbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FjbEFycmF5Rm9ybVRhYmxlUm93Q29udHJvbF0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBBcnJheUZvcm1UYWJsZVJvd0NvbnRyb2xEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1thY2xBcnJheUZvcm1UYWJsZVJvd1NlcGFyYXRvcl0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBBcnJheUZvcm1UYWJsZVJvd1NlcGFyYXRvckRpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Pikge31cbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FjbEFycmF5Rm9ybVRhYmxlRm9vdGVyXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEFycmF5Rm9ybVRhYmxlRm9vdGVyRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxufVxuXG4vLyDpgJLlvZLpqozor4EgY29udHJvbCDmmK/lkKbmnInpl67popjvvIxncm91cCDlhoXpg6jlj6/og73kvJrmnInltYzlpZfnmoTmg4XlhrVcbmZ1bmN0aW9uIF9pc0Zvcm1Db250cm9sSW52YWxpZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXAgfHwgY29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuICAgIHJldHVybiAoXG4gICAgICAoY29udHJvbC5kaXJ0eSAmJiAhIWNvbnRyb2wuZXJyb3JzKSB8fFxuICAgICAgT2JqZWN0LnZhbHVlcyhjb250cm9sLmNvbnRyb2xzKS5zb21lKF9pc0Zvcm1Db250cm9sSW52YWxpZClcbiAgICApO1xuICB9XG4gIHJldHVybiBjb250cm9sLmRpcnR5ICYmIGNvbnRyb2wuaW52YWxpZDtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNsLWFycmF5LWZvcm0tdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGVtcGxhdGUuaHRtbCcsXG4gIC8vIFNpbmNlIHJvd3MgbWF5YmUgdXBkYXRlZCB3aXRob3V0IGNoYW5naW5nIHJlZmVyZW5jZSwgd2UgdXNlIERlZmF1bHQgaGVyZTpcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9wcmVmZXItb24tcHVzaC1jb21wb25lbnQtY2hhbmdlLWRldGVjdGlvblxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG4gIGltcG9ydHM6IFtcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIFRvb2x0aXBNb2R1bGUsXG4gICAgWmVyb1N0YXRlQ29tcG9uZW50LFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBJY29uTW9kdWxlLFxuICAgIE5nSWYsXG4gICAgTmdGb3JPZixcbiAgICBQdXJlUGlwZSxcbiAgICBBc3luY1BpcGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIC4uLkVGRkVDVF9ESVJFQ1RJVkVfTU9EVUxFLFxuICBdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBBcnJheUZvcm1UYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBDb250ZW50Q2hpbGQoQXJyYXlGb3JtVGFibGVIZWFkZXJEaXJlY3RpdmUsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIGhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8vIOeUqOaIt+WPr+S7peaPkOS+m+WkmuihjOaooeadvywg5L2G5Y+q5pyJ56ys5LiA6KGM5pyJ5o6n5Yi25oyJ6ZSuLlxuICBAQ29udGVudENoaWxkcmVuKEFycmF5Rm9ybVRhYmxlUm93RGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHJvd1RlbXBsYXRlczogUXVlcnlMaXN0PFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gIEBDb250ZW50Q2hpbGQoQXJyYXlGb3JtVGFibGVSb3dFcnJvckRpcmVjdGl2ZSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICByb3dFcnJvclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8qKlxuICAgKiDooajljZXpu5jorqTmj5DkvpvliKDpmaTmjInplK47IOWBh+WmgueUqOaIt+aPkOS+m+aooeadvywg5bCG5L2/55So55So5oi355qE5qih5p2/XG4gICAqL1xuICBAQ29udGVudENoaWxkKEFycmF5Rm9ybVRhYmxlUm93Q29udHJvbERpcmVjdGl2ZSwge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcm93Q29udHJvbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8qKlxuICAgKiDooajljZXpu5jorqTmj5Dkvpvmt7vliqDmjInplK47IOWBh+WmgueUqOaIt+aPkOS+m+aooeadvywg5bCG5L2/55So55So5oi355qE5qih5p2/XG4gICAqL1xuICBAQ29udGVudENoaWxkKEFycmF5Rm9ybVRhYmxlRm9vdGVyRGlyZWN0aXZlLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBmb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKipcbiAgICog6KGo5Y2V6buY6K6k5Li656m65pWw5o2u5o+Q5L6b5pegeHh455qE5qih5p2/OyDlgYflpoLnlKjmiLfmj5DkvpvmqKHmnb8sIOWwhuS9v+eUqOeUqOaIt+eahOaooeadv1xuICAgKi9cbiAgQENvbnRlbnRDaGlsZChBcnJheUZvcm1UYWJsZVplcm9TdGF0ZURpcmVjdGl2ZSwge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogZmFsc2UsXG4gIH0pXG4gIHplcm9TdGF0ZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8qKlxuICAgKiDooYzkuYvpl7TnmoTliIbpmpTljLrln5/oh6rlrprkuYnmqKHmnb9cbiAgICovXG4gIEBDb250ZW50Q2hpbGQoQXJyYXlGb3JtVGFibGVSb3dTZXBhcmF0b3JEaXJlY3RpdmUsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IGZhbHNlLFxuICB9KVxuICBzZXBhcmF0b3JUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKipcbiAgICog6KGM5LmL6Ze055qE5YiG6ZqU5Yy65Z+f77yM6buY6K6k5YWz6ZetXG4gICAqL1xuICBASW5wdXQoKVxuICByb3dTZXBhcmF0b3IgPSBmYWxzZTtcblxuICBAQ29udGVudENoaWxkKEZvcm1Hcm91cERpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIG5nRm9ybUdyb3VwRGlyZWN0aXZlOiBGb3JtR3JvdXBEaXJlY3RpdmU7XG5cbiAgLy8gRGF0YSBjb250ZXh0IGZvciByb3dzLlxuICBASW5wdXQoKVxuICByb3dzOiBhbnlbXTtcblxuICBASW5wdXQoKVxuICByZXNvdXJjZU5hbWUgPSBudWxsIGFzIHN0cmluZztcblxuICBASW5wdXQoKVxuICByZXNvdXJjZU5hbWVUcmFuc2xhdGVkOiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpXG4gIGFkZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAT3V0cHV0KClcbiAgcmVtb3ZlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7IC8vIFJldHVybnMgdGhlIGluZGV4IHRvIGJlIHJlbW92ZWRcblxuICBASW5wdXQoKVxuICByZWFkb25seTogYm9vbGVhbiB8ICcnID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgYWRkRGlzYWJsZWQ6IGJvb2xlYW4gfCAnJyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGFjdGlvbkNvbHVtbkRpdmlkZXI6IGJvb2xlYW4gfCAnJyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHNob3daZXJvU3RhdGUgPSB0cnVlO1xuXG4gIGdldCBmb3JtRGlyZWN0aXZlKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmluamVjdG9yLmdldChGb3JtR3JvdXBEaXJlY3RpdmUsIG51bGwpIHx8XG4gICAgICB0aGlzLmluamVjdG9yLmdldChOZ0Zvcm0sIG51bGwpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDoh6rlrprkuYnmmK/lkKblsZXnpLrplJnor6/lhoXlrrlcbiAgICog5L6L5aaCIGNvbnRyb2wg5pivIEZvcm1Hcm91cO+8jOWPquacieWcqOWGhemDqOWtkCBjb250cm9sIOmUmeivr+aXtuaJjemcgOimgeWxleekuumUmeivr+WGheWuuVxuICAgKi9cbiAgQElucHV0KClcbiAgc2hvd1Jvd0Vycm9yPFQgZXh0ZW5kcyBBYnN0cmFjdENvbnRyb2w+KFxuICAgIGNvbnRyb2w6IFQsXG4gICAgZm9ybURpcmVjdGl2ZT86IE5nRm9ybSB8IEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgKTogYm9vbGVhbiB7XG4gICAgaWYgKGZvcm1EaXJlY3RpdmUpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGNvbnRyb2wuaW52YWxpZCAmJlxuICAgICAgICAoZm9ybURpcmVjdGl2ZS5zdWJtaXR0ZWQgfHwgX2lzRm9ybUNvbnRyb2xJbnZhbGlkKGNvbnRyb2wpKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIHtAbGluayBzaG93Um93RXJyb3J9IGluc3RlYWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHJvd0JhY2tncm91bmRDb2xvckZuPFQgZXh0ZW5kcyBBYnN0cmFjdENvbnRyb2w+KFxuICAgIGNvbnRyb2w6IFQsXG4gICAgZm9ybURpcmVjdGl2ZT86IE5nRm9ybSB8IEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zaG93Um93RXJyb3IoY29udHJvbCwgZm9ybURpcmVjdGl2ZSlcbiAgICAgID8gQVJSQVlfVEFCTEVfRk9STV9FUlJPUl9CR1xuICAgICAgOiBudWxsO1xuICB9XG5cbiAgQElucHV0KClcbiAgbWluUm93ID0gMDtcblxuICBASW5wdXQoKVxuICBtaW5Sb3dUb29sdGlwID0gJyc7XG5cbiAgQElucHV0KClcbiAgbWF4Um93ID0gSW5maW5pdHk7XG5cbiAgQElucHV0KClcbiAgbWF4Um93VG9vbHRpcCA9ICcnO1xuXG4gIGRlc3Ryb3kkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY2RyID0gdGhpcy5pbmplY3Rvci5nZXQoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpbmplY3RvcjogSW5qZWN0b3IpIHt9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JCQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBzaG91bGRTaG93Um93RXJyb3IgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XG4gICAgY29uc3QgeyBzdGF0dXNDaGFuZ2VzID0gRU1QVFksIHN0YXR1cyB9ID0gY29udHJvbDtcblxuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmZvcm1EaXJlY3RpdmVcbiAgICAgICAgPyBtZXJnZShzdGF0dXNDaGFuZ2VzLCB0aGlzLmZvcm1EaXJlY3RpdmUubmdTdWJtaXQpXG4gICAgICAgIDogc3RhdHVzQ2hhbmdlc1xuICAgICkucGlwZShcbiAgICAgIHN0YXJ0V2l0aChzdGF0dXMpLFxuICAgICAgZGVib3VuY2VUaW1lKDApLFxuICAgICAgbWFwKCgpID0+IHRoaXMuc2hvd1Jvd0Vycm9yKGNvbnRyb2wsIHRoaXMuZm9ybURpcmVjdGl2ZSkpLFxuICAgICk7XG4gIH07XG59XG4iLCI8dGFibGVcbiAgY2xhc3M9XCJhY2wtYXJyYXktZm9ybS10YWJsZVwiXG4gIFtjbGFzcy5hY2wtYXJyYXktZm9ybS10YWJsZV9fcmVhZG9ubHktbW9kZV09XCJyZWFkb25seVwiXG4+XG4gIDx0aGVhZCAqbmdJZj1cImhlYWRlclRlbXBsYXRlXCI+XG4gICAgPHRyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8dGhcbiAgICAgICAgKm5nSWY9XCIhcmVhZG9ubHkgJiYgbWluUm93ICE9PSBtYXhSb3dcIlxuICAgICAgICBjbGFzcz1cImFjbC1hcnJheS1mb3JtLXRhYmxlX19hY3Rpb24tY29sXCJcbiAgICAgID48L3RoPlxuICAgIDwvdHI+XG4gIDwvdGhlYWQ+XG4gIDx0Ym9keT5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByb3cgb2Ygcm93czsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICAgIDx0clxuICAgICAgICAqbmdGb3I9XCJsZXQgcm93VGVtcGxhdGUgb2Ygcm93VGVtcGxhdGVzOyBsZXQgdGVtcGxhdGVJbmRleCA9IGluZGV4XCJcbiAgICAgICAgW2NsYXNzLmFjbC1hcnJheS1mb3JtLXRhYmxlX19yb3ctZXJyb3JdPVwiXG4gICAgICAgICAgcm93IHwgcHVyZTogc2hvdWxkU2hvd1Jvd0Vycm9yIHwgYXN5bmNcbiAgICAgICAgXCJcbiAgICAgICAgW2F0dHIucm93dGVtcGxhdGVpbmRleF09XCJ0ZW1wbGF0ZUluZGV4XCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICByb3dUZW1wbGF0ZTtcbiAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3csIGluZGV4OiBpbmRleCB9XG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8dGRcbiAgICAgICAgICAqbmdJZj1cInRlbXBsYXRlSW5kZXggPT09IDAgJiYgIXJlYWRvbmx5ICYmIG1pblJvdyAhPT0gbWF4Um93XCJcbiAgICAgICAgICBjbGFzcz1cImFjbC1hcnJheS1mb3JtLXRhYmxlX19hY3Rpb24tY29sXCJcbiAgICAgICAgICBbY2xhc3MuYWNsLWFycmF5LWZvcm0tdGFibGVfX2FjdGlvbi1jb2wtZGl2aWRlcl09XCJhY3Rpb25Db2x1bW5EaXZpZGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3dDb250cm9sVGVtcGxhdGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICByb3dDb250cm9sVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdywgaW5kZXg6IGluZGV4IH1cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBbYXVpVG9vbHRpcF09XCJtaW5Sb3dUb29sdGlwXCJcbiAgICAgICAgICAgIFthdWlUb29sdGlwRGlzYWJsZWRdPVwicm93cz8ubGVuZ3RoID4gbWluUm93IHx8ICFtaW5Sb3dUb29sdGlwXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwiIXJvd0NvbnRyb2xUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgIGF1aS1idXR0b249XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyb3dzPy5sZW5ndGggPD0gbWluUm93XCJcbiAgICAgICAgICAgICAgW3NxdWFyZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3BsYWluXT1cInRydWVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlLmVtaXQoaW5kZXgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGF1aS1pY29uIGljb249XCJtaW51c19jaXJjbGVcIj48L2F1aS1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L3RyPlxuXG4gICAgICA8dHJcbiAgICAgICAgKm5nSWY9XCJyb3dFcnJvclRlbXBsYXRlICYmICFyZWFkb25seVwiXG4gICAgICAgIFtjbGFzcy5hY2wtYXJyYXktZm9ybS10YWJsZV9fcm93LWVycm9yXT1cIlxuICAgICAgICAgIHJvdyB8IHB1cmU6IHNob3VsZFNob3dSb3dFcnJvciB8IGFzeW5jXG4gICAgICAgIFwiXG4gICAgICAgIFtoaWRkZW5dPVwiIShyb3cgfCBwdXJlOiBzaG91bGRTaG93Um93RXJyb3IgfCBhc3luYylcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIHJvd0Vycm9yVGVtcGxhdGU7XG4gICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93LCBpbmRleDogaW5kZXggfVxuICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdHI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgKHJvd1NlcGFyYXRvciB8fCBzZXBhcmF0b3JUZW1wbGF0ZSkgJiZcbiAgICAgICAgICByb3dzPy5sZW5ndGggPiAxICYmXG4gICAgICAgICAgaW5kZXggIT09IHJvd3M/Lmxlbmd0aCAtIDFcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPHRyIGNsYXNzPVwiYWNsLWFycmF5LWZvcm0tdGFibGVfX3NlcGFyYXRvclwiPlxuICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiMTAwXCI+XG4gICAgICAgICAgICBAaWYgKHNlcGFyYXRvclRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInNlcGFyYXRvclRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0dy1oLVs4cHhdXCI+PC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPHRyICpuZ0lmPVwiKCFyb3dzIHx8IHJvd3MubGVuZ3RoID09PSAwKSAmJiBzaG93WmVyb1N0YXRlXCI+XG4gICAgICA8dGRcbiAgICAgICAgY29sc3Bhbj1cIjEwMFwiXG4gICAgICAgIHN0eWxlPVwicGFkZGluZzogdW5zZXRcIlxuICAgICAgPlxuICAgICAgICA8YWNsLXplcm8tc3RhdGVcbiAgICAgICAgICAqbmdJZj1cIiF6ZXJvU3RhdGVUZW1wbGF0ZVwiXG4gICAgICAgICAgW3plcm9TdGF0ZV09XCJ0cnVlXCJcbiAgICAgICAgICBbcmVzb3VyY2VOYW1lXT1cInJlc291cmNlTmFtZVwiXG4gICAgICAgICAgW3Jlc291cmNlTmFtZVRyYW5zbGF0ZWRdPVwicmVzb3VyY2VOYW1lVHJhbnNsYXRlZFwiXG4gICAgICAgICAgW21pbkhlaWdodF09XCI0OFwiXG4gICAgICAgID48L2FjbC16ZXJvLXN0YXRlPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ6ZXJvU3RhdGVUZW1wbGF0ZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ6ZXJvU3RhdGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdGQ+XG4gICAgPC90cj5cblxuICAgIDx0clxuICAgICAgKm5nSWY9XCIhcmVhZG9ubHkgJiYgbWluUm93ICE9PSBtYXhSb3dcIlxuICAgICAgY2xhc3M9XCJhY2wtYXJyYXktZm9ybS10YWJsZS0tcm93LWFjdGlvblwiXG4gICAgPlxuICAgICAgPHRkIGNvbHNwYW49XCIxMDBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFjbC1hcnJheS1mb3JtLXRhYmxlX19ib3R0b20tY29udHJvbC1idXR0b25zXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvb3RlclRlbXBsYXRlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cIiFmb290ZXJUZW1wbGF0ZVwiXG4gICAgICAgICAgICBjbGFzcz1cInR3LWZsZXggdHctdy1mdWxsXCJcbiAgICAgICAgICAgIFthdWlUb29sdGlwXT1cIm1heFJvd1Rvb2x0aXBcIlxuICAgICAgICAgICAgW2F1aVRvb2x0aXBEaXNhYmxlZF09XCJyb3dzPy5sZW5ndGggPCBtYXhSb3cgfHwgIW1heFJvd1Rvb2x0aXBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgYXVpLWJ1dHRvbj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW3BsYWluXT1cInRydWVcIlxuICAgICAgICAgICAgICBzaXplPVwibWluaVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhZGQuZW1pdCgpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJvd3M/Lmxlbmd0aCA+PSBtYXhSb3cgfHwgYWRkRGlzYWJsZWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YXVpLWljb24gaWNvbj1cInBsdXNfY2lyY2xlXCI+PC9hdWktaWNvbj5cbiAgICAgICAgICAgICAge3sgJ2FkZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvdGQ+XG4gICAgPC90cj5cbiAgPC90Ym9keT5cbjwvdGFibGU+XG4iXX0=
@@ -21,7 +21,7 @@ export class AuthorizationGuardService {
21
21
  this.silentlyNavigate = silentlyNavigate;
22
22
  }
23
23
  canActivate(_route, state) {
24
- return this.auth.getToken().pipe(map(token => !!token), catchError(() => {
24
+ return this.auth.getAccountInfo().pipe(map(info => !!info), catchError(() => {
25
25
  this.silentlyNavigate.navigate(state.url, this.emptyUrl);
26
26
  return of(false);
27
27
  }));
@@ -39,4 +39,4 @@ export class AuthorizationGuardService {
39
39
  type: Inject,
40
40
  args: [ABNORMAL_EMPTY_URL_TOKEN]
41
41
  }] }, { type: i1.AuthorizationStateService }, { type: i2.SilentlyNavigateService }], null); })();
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hdXRob3JpemF0aW9uL2d1YXJkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBQ0gsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBT25FLE9BQU8sRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUV0RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQUU1RCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxpQkFBaUIsQ0FBQztBQUU1RCxNQUFNLFVBQVUsdUJBQXVCO0lBQ3JDLE9BQU8sMEJBQTBCLENBQUM7QUFDcEMsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUN4RCxvQkFBb0IsRUFDcEIsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxDQUN6RCxDQUFDO0FBR0YsTUFBTSxPQUFPLHlCQUF5QjtJQUdwQyxZQUVtQixRQUFnQixFQUNoQixJQUErQixFQUMvQixnQkFBeUM7UUFGekMsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixTQUFJLEdBQUosSUFBSSxDQUEyQjtRQUMvQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXlCO0lBQ3pELENBQUM7SUFFSixXQUFXLENBQUMsTUFBOEIsRUFBRSxLQUEwQjtRQUNwRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUM5QixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQ3JCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pELE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBNkIsRUFBRSxLQUEwQjtRQUN4RSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUM7MEZBdEJVLHlCQUF5QixjQUkxQix3QkFBd0I7dUVBSnZCLHlCQUF5QixXQUF6Qix5QkFBeUIsbUJBRFosTUFBTTs7aUZBQ25CLHlCQUF5QjtjQURyQyxVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztzQkFLN0IsTUFBTTt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICogQG1vZHVsZSBhdXRob3JpemF0aW9uXG4gKi9cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gIENhbkFjdGl2YXRlLFxuICBDYW5BY3RpdmF0ZUNoaWxkLFxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90LFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgb2YsIGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTaWxlbnRseU5hdmlnYXRlU2VydmljZSB9IGZyb20gJy4uL2NvcmUvc2VydmljZXMvcHVibGljLWFwaSc7XG5cbmltcG9ydCB7IEF1dGhvcml6YXRpb25TdGF0ZVNlcnZpY2UgfSBmcm9tICcuL3N0YXRlLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9BQk5PUk1BTF9FTVBUWV9VUkwgPSAnc3lzdGVtLWFibm9ybWFsJztcblxuZXhwb3J0IGZ1bmN0aW9uIGFibm9ybWFsRW1wdHlVcmxGYWN0b3J5KCkge1xuICByZXR1cm4gREVGQVVMVF9BQk5PUk1BTF9FTVBUWV9VUkw7XG59XG5cbmV4cG9ydCBjb25zdCBBQk5PUk1BTF9FTVBUWV9VUkxfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPihcbiAgJ2Fibm9ybWFsX2VtcHR5X3VybCcsXG4gIHsgcHJvdmlkZWRJbjogJ3Jvb3QnLCBmYWN0b3J5OiBhYm5vcm1hbEVtcHR5VXJsRmFjdG9yeSB9LFxuKTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBdXRob3JpemF0aW9uR3VhcmRTZXJ2aWNlXG4gIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUsIENhbkFjdGl2YXRlQ2hpbGRcbntcbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChBQk5PUk1BTF9FTVBUWV9VUkxfVE9LRU4pXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbXB0eVVybDogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYXV0aDogQXV0aG9yaXphdGlvblN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNpbGVudGx5TmF2aWdhdGU6IFNpbGVudGx5TmF2aWdhdGVTZXJ2aWNlLFxuICApIHt9XG5cbiAgY2FuQWN0aXZhdGUoX3JvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCkge1xuICAgIHJldHVybiB0aGlzLmF1dGguZ2V0VG9rZW4oKS5waXBlKFxuICAgICAgbWFwKHRva2VuID0+ICEhdG9rZW4pLFxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiB7XG4gICAgICAgIHRoaXMuc2lsZW50bHlOYXZpZ2F0ZS5uYXZpZ2F0ZShzdGF0ZS51cmwsIHRoaXMuZW1wdHlVcmwpO1xuICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIGNhbkFjdGl2YXRlQ2hpbGQocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KSB7XG4gICAgcmV0dXJuIHRoaXMuY2FuQWN0aXZhdGUocm91dGUsIHN0YXRlKTtcbiAgfVxufVxuIl19
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hdXRob3JpemF0aW9uL2d1YXJkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBQ0gsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBT25FLE9BQU8sRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUV0RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQUU1RCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxpQkFBaUIsQ0FBQztBQUU1RCxNQUFNLFVBQVUsdUJBQXVCO0lBQ3JDLE9BQU8sMEJBQTBCLENBQUM7QUFDcEMsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUN4RCxvQkFBb0IsRUFDcEIsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxDQUN6RCxDQUFDO0FBR0YsTUFBTSxPQUFPLHlCQUF5QjtJQUdwQyxZQUVtQixRQUFnQixFQUNoQixJQUErQixFQUMvQixnQkFBeUM7UUFGekMsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixTQUFJLEdBQUosSUFBSSxDQUEyQjtRQUMvQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXlCO0lBQ3pELENBQUM7SUFFSixXQUFXLENBQUMsTUFBOEIsRUFBRSxLQUEwQjtRQUNwRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUNwQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQ25CLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pELE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBNkIsRUFBRSxLQUEwQjtRQUN4RSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUM7MEZBdEJVLHlCQUF5QixjQUkxQix3QkFBd0I7dUVBSnZCLHlCQUF5QixXQUF6Qix5QkFBeUIsbUJBRFosTUFBTTs7aUZBQ25CLHlCQUF5QjtjQURyQyxVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztzQkFLN0IsTUFBTTt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICogQG1vZHVsZSBhdXRob3JpemF0aW9uXG4gKi9cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gIENhbkFjdGl2YXRlLFxuICBDYW5BY3RpdmF0ZUNoaWxkLFxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90LFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgb2YsIGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTaWxlbnRseU5hdmlnYXRlU2VydmljZSB9IGZyb20gJy4uL2NvcmUvc2VydmljZXMvcHVibGljLWFwaSc7XG5cbmltcG9ydCB7IEF1dGhvcml6YXRpb25TdGF0ZVNlcnZpY2UgfSBmcm9tICcuL3N0YXRlLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9BQk5PUk1BTF9FTVBUWV9VUkwgPSAnc3lzdGVtLWFibm9ybWFsJztcblxuZXhwb3J0IGZ1bmN0aW9uIGFibm9ybWFsRW1wdHlVcmxGYWN0b3J5KCkge1xuICByZXR1cm4gREVGQVVMVF9BQk5PUk1BTF9FTVBUWV9VUkw7XG59XG5cbmV4cG9ydCBjb25zdCBBQk5PUk1BTF9FTVBUWV9VUkxfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPihcbiAgJ2Fibm9ybWFsX2VtcHR5X3VybCcsXG4gIHsgcHJvdmlkZWRJbjogJ3Jvb3QnLCBmYWN0b3J5OiBhYm5vcm1hbEVtcHR5VXJsRmFjdG9yeSB9LFxuKTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBdXRob3JpemF0aW9uR3VhcmRTZXJ2aWNlXG4gIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUsIENhbkFjdGl2YXRlQ2hpbGRcbntcbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChBQk5PUk1BTF9FTVBUWV9VUkxfVE9LRU4pXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbXB0eVVybDogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYXV0aDogQXV0aG9yaXphdGlvblN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNpbGVudGx5TmF2aWdhdGU6IFNpbGVudGx5TmF2aWdhdGVTZXJ2aWNlLFxuICApIHt9XG5cbiAgY2FuQWN0aXZhdGUoX3JvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCkge1xuICAgIHJldHVybiB0aGlzLmF1dGguZ2V0QWNjb3VudEluZm8oKS5waXBlKFxuICAgICAgbWFwKGluZm8gPT4gISFpbmZvKSxcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICB0aGlzLnNpbGVudGx5TmF2aWdhdGUubmF2aWdhdGUoc3RhdGUudXJsLCB0aGlzLmVtcHR5VXJsKTtcbiAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBjYW5BY3RpdmF0ZUNoaWxkKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCkge1xuICAgIHJldHVybiB0aGlzLmNhbkFjdGl2YXRlKHJvdXRlLCBzdGF0ZSk7XG4gIH1cbn1cbiJdfQ==
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { DialogService } from '@alauda/ui';
6
6
  import { Inject, Injectable, Injector } from '@angular/core';
7
- import { NEVER, combineLatest, throwError, catchError, concatMap, take, map, of, switchMap, } from 'rxjs';
7
+ import { NEVER, throwError, catchError, concatMap, take, map, of, switchMap, } from 'rxjs';
8
8
  import { ApiGatewayService } from '../api/public-api';
9
9
  import { ANONYMOUS_APIS, catchPromise } from '../core/public-api';
10
10
  import { TranslateService } from '../public-api';
@@ -23,23 +23,18 @@ export class AuthorizationInterceptorService {
23
23
  this.injector = injector;
24
24
  this.dialog = dialog;
25
25
  this.sessionManage = sessionManage;
26
+ this.sessionInvalidConfirm = false;
26
27
  }
27
- // eslint-disable-next-line sonarjs/cognitive-complexity
28
28
  intercept(req, next) {
29
29
  if (this.isConsoleRelative(req.url)) {
30
30
  return next.handle(req);
31
31
  }
32
32
  const auth = this.getAuth();
33
- return combineLatest([
34
- this.apiGateway.getApiAddress(),
35
- auth.getToken(),
36
- ]).pipe(take(1), concatMap(([apiAddress, idToken]) => {
33
+ return auth.getTokenPayload().pipe(switchMap(() => this.apiGateway.getApiAddress()), take(1), concatMap(apiAddress => {
37
34
  if (!this.needAuthorization(apiAddress, req)) {
38
35
  return next.handle(req);
39
36
  }
40
- if (!idToken) {
41
- return NEVER;
42
- }
37
+ const idToken = auth.getTokenByStorage();
43
38
  const authReq = this.cloneReq(req, idToken);
44
39
  return next.handle(authReq).pipe(catchError((error) => {
45
40
  if (this.isSessionInvalid(error)) {
@@ -57,7 +52,9 @@ export class AuthorizationInterceptorService {
57
52
  if (this.isWatchReq(apiAddress, authReq)) {
58
53
  return NEVER;
59
54
  }
60
- return auth.checkToken(idToken).pipe(map(() => false), catchError(() => of(true)), switchMap(expired => expired ? this.retryAuth(next, req) : throwError(() => error)));
55
+ return auth.checkToken().pipe(map(() => false), catchError(() => of(true)), switchMap(expired => expired
56
+ ? this.retryAuth(next, authReq)
57
+ : throwError(() => error)));
61
58
  }));
62
59
  }));
63
60
  }
@@ -68,21 +65,26 @@ export class AuthorizationInterceptorService {
68
65
  !lowerCaseUrl.startsWith('https://') &&
69
66
  !lowerCaseUrl.startsWith('//'));
70
67
  }
68
+ cloneReq(req, idToken) {
69
+ return idToken
70
+ ? req.clone({
71
+ setHeaders: {
72
+ Authorization: `Bearer ${idToken}`,
73
+ },
74
+ })
75
+ : req;
76
+ }
71
77
  retryAuth(next, req) {
72
78
  const auth = this.getAuth();
73
- return auth.refreshToken().pipe(concatMap(token => next.handle(this.cloneReq(req, token)).pipe(catchError((error) => {
74
- if (this.isUnauthorized(error)) {
75
- auth.logout(true);
76
- }
77
- return throwError(() => error);
78
- }))));
79
- }
80
- cloneReq(req, idToken) {
81
- return req.clone({
82
- setHeaders: {
83
- Authorization: `Bearer ${idToken}`,
84
- },
85
- });
79
+ return auth.refreshToken().pipe(concatMap(({ id_token: idToken }) => {
80
+ const authReq = this.cloneReq(req, idToken);
81
+ return next.handle(authReq).pipe(catchError((error) => {
82
+ if (this.isUnauthorized(error)) {
83
+ auth.logout(true);
84
+ }
85
+ return throwError(() => error);
86
+ }));
87
+ }));
86
88
  }
87
89
  getAuth() {
88
90
  if (!this.auth) {
@@ -111,6 +113,10 @@ export class AuthorizationInterceptorService {
111
113
  this.auth.logout(true);
112
114
  return;
113
115
  }
116
+ if (this.sessionInvalidConfirm) {
117
+ return;
118
+ }
119
+ this.sessionInvalidConfirm = true;
114
120
  // fix circle dependency error
115
121
  const translate = this.injector.get(TranslateService);
116
122
  catchPromise(this.dialog.confirm({
@@ -118,6 +124,7 @@ export class AuthorizationInterceptorService {
118
124
  confirmText: translate.get('i_know'),
119
125
  cancelButton: false,
120
126
  })).subscribe(() => {
127
+ this.sessionInvalidConfirm = false;
121
128
  this.auth.logout(true);
122
129
  });
123
130
  }
@@ -146,4 +153,4 @@ export class AuthorizationInterceptorService {
146
153
  type: Inject,
147
154
  args: [ANONYMOUS_APIS]
148
155
  }] }, { type: i1.ApiGatewayService }, { type: i0.Injector }, { type: i2.DialogService }, { type: i3.SessionManageService }], null); })();
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJjZXB0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hdXRob3JpemF0aW9uL2ludGVyY2VwdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQU8zQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUNMLEtBQUssRUFDTCxhQUFhLEVBQ2IsVUFBVSxFQUNWLFVBQVUsRUFDVixTQUFTLEVBQ1QsSUFBSSxFQUNKLEdBQUcsRUFDSCxFQUFFLEVBQ0YsU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRSxPQUFPLEVBQVUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekQsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixvQkFBb0IsR0FDckIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFFNUQsd0VBQXdFO0FBQ3hFLGtEQUFrRDtBQUVsRCxNQUFNLE9BQU8sK0JBQStCO0lBRzFDLFlBRW1CLGFBQXFDLEVBQ3JDLFVBQTZCLEVBQzdCLFFBQWtCLEVBQ2xCLE1BQXFCLEVBQ3JCLGFBQW1DO1FBSm5DLGtCQUFhLEdBQWIsYUFBYSxDQUF3QjtRQUNyQyxlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsa0JBQWEsR0FBYixhQUFhLENBQXNCO0lB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Q0FBQyxPQUFPLENBQUMsRUFBRSxXQUFXLEVBQUUsS0FBSyxNQUFNLENBQUM7UUFDaEUsT0FBTyxhQUFhLElBQUksU0FBUyxDQUFDO0lBQ3BDLENBQUM7Z0dBbkxVLCtCQUErQixjQUloQyxjQUFjO3VFQUpiLCtCQUErQixXQUEvQiwrQkFBK0I7O2lGQUEvQiwrQkFBK0I7Y0FEM0MsVUFBVTs7c0JBS04sTUFBTTt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqIEBtb2R1bGUgYXV0aG9yaXphdGlvblxuICovXG5cbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7XG4gIEh0dHBFcnJvclJlc3BvbnNlLFxuICBIdHRwSGFuZGxlcixcbiAgSHR0cEludGVyY2VwdG9yLFxuICBIdHRwUmVxdWVzdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgTkVWRVIsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIHRocm93RXJyb3IsXG4gIGNhdGNoRXJyb3IsXG4gIGNvbmNhdE1hcCxcbiAgdGFrZSxcbiAgbWFwLFxuICBvZixcbiAgc3dpdGNoTWFwLFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXBpR2F0ZXdheVNlcnZpY2UgfSBmcm9tICcuLi9hcGkvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBBTk9OWU1PVVNfQVBJUywgY2F0Y2hQcm9taXNlIH0gZnJvbSAnLi4vY29yZS9wdWJsaWMtYXBpJztcbmltcG9ydCB7IFN0YXR1cywgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uL3B1YmxpYy1hcGknO1xuXG5pbXBvcnQge1xuICBTRVNTSU9OX01BTkFHRV9LRVksXG4gIFNlc3Npb25NYW5hZ2VTZXJ2aWNlLFxufSBmcm9tICcuL3Nlc3Npb24tbWFuYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aG9yaXphdGlvblN0YXRlU2VydmljZSB9IGZyb20gJy4vc3RhdGUuc2VydmljZSc7XG5cbi8vIEludGVyY2VwdG9yIG11c3QgcHJvdmlkZSB3aXRoIGNvcnJlY3Qgb3JkZXIsIG5vdCBwcm92aWRlIGluIHJvb3QgaGVyZVxuLy8gaHR0cHM6Ly9hbmd1bGFyLmNuL2d1aWRlL2h0dHAjaW50ZXJjZXB0b3Itb3JkZXJcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBdXRob3JpemF0aW9uSW50ZXJjZXB0b3JTZXJ2aWNlIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcbiAgcHJpdmF0ZSBhdXRoOiBBdXRob3JpemF0aW9uU3RhdGVTZXJ2aWNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoQU5PTllNT1VTX0FQSVMpXG4gICAgcHJpdmF0ZSByZWFkb25seSBhbm9ueW1vdXNBcGlzOiBBcnJheTxzdHJpbmcgfCBSZWdFeHA+LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYXBpR2F0ZXdheTogQXBpR2F0ZXdheVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IERpYWxvZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uTWFuYWdlOiBTZXNzaW9uTWFuYWdlU2VydmljZSxcbiAgKSB7fVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzb25hcmpzL2NvZ25pdGl2ZS1jb21wbGV4aXR5XG4gIGludGVyY2VwdChyZXE6IEh0dHBSZXF1ZXN0PHVua25vd24+LCBuZXh0OiBIdHRwSGFuZGxlcikge1xuICAgIGlmICh0aGlzLmlzQ29uc29sZVJlbGF0aXZlKHJlcS51cmwpKSB7XG4gICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcbiAgICB9XG5cbiAgICBjb25zdCBhdXRoID0gdGhpcy5nZXRBdXRoKCk7XG5cbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmFwaUdhdGV3YXkuZ2V0QXBpQWRkcmVzcygpLFxuICAgICAgYXV0aC5nZXRUb2tlbigpLFxuICAgIF0pLnBpcGUoXG4gICAgICB0YWtlKDEpLFxuICAgICAgY29uY2F0TWFwKChbYXBpQWRkcmVzcywgaWRUb2tlbl0pID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLm5lZWRBdXRob3JpemF0aW9uKGFwaUFkZHJlc3MsIHJlcSkpIHtcbiAgICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaWRUb2tlbikge1xuICAgICAgICAgIHJldHVybiBORVZFUjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGF1dGhSZXEgPSB0aGlzLmNsb25lUmVxKHJlcSwgaWRUb2tlbik7XG4gICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShhdXRoUmVxKS5waXBlKFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNTZXNzaW9uSW52YWxpZChlcnJvcikpIHtcbiAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTZXNzaW9uSW52YWxpZCgpO1xuICAgICAgICAgICAgICByZXR1cm4gTkVWRVI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIOW9k+eUqOaIt+iiq+emgeeUqOiHquWKqOeZu+WHulxuICAgICAgICAgICAgaWYgKHRoaXMuaXNJbnZhbGlkVXNlcihlcnJvcikpIHtcbiAgICAgICAgICAgICAgYXV0aC5sb2dvdXQodHJ1ZSk7XG4gICAgICAgICAgICAgIHJldHVybiBORVZFUjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzVW5hdXRob3JpemVkKGVycm9yKSkge1xuICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzV2F0Y2hSZXEoYXBpQWRkcmVzcywgYXV0aFJlcSkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIE5FVkVSO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gYXV0aC5jaGVja1Rva2VuKGlkVG9rZW4pLnBpcGUoXG4gICAgICAgICAgICAgIG1hcCgoKSA9PiBmYWxzZSksXG4gICAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YodHJ1ZSkpLFxuICAgICAgICAgICAgICBzd2l0Y2hNYXAoZXhwaXJlZCA9PlxuICAgICAgICAgICAgICAgIGV4cGlyZWQgPyB0aGlzLnJldHJ5QXV0aChuZXh0LCByZXEpIDogdGhyb3dFcnJvcigoKSA9PiBlcnJvciksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIC8vIGNvbnNvbGUgcmVsYXRpdmUgbWVhbnMgdXJsIHByb3RvY29sK2hvc3RuYW1lK3BvcnQgc2FtZSB3aXRoIGNvbnNvbGUsIGZvciB0aGlzIGNhc2UsIGp1c3QgY2hlY2sgdXJsIHN0YXJ0IHdpdGggYGBgaHR0cChzKTovL2BgYCBvciBgYGAvL2BgYFxuICBpc0NvbnNvbGVSZWxhdGl2ZSh1cmw6IHN0cmluZykge1xuICAgIGNvbnN0IGxvd2VyQ2FzZVVybCA9ICh1cmwgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgIWxvd2VyQ2FzZVVybC5zdGFydHNXaXRoKCdodHRwOi8vJykgJiZcbiAgICAgICFsb3dlckNhc2VVcmwuc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSAmJlxuICAgICAgIWxvd2VyQ2FzZVVybC5zdGFydHNXaXRoKCcvLycpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmV0cnlBdXRoKG5leHQ6IEh0dHBIYW5kbGVyLCByZXE6IEh0dHBSZXF1ZXN0PHVua25vd24+KSB7XG4gICAgY29uc3QgYXV0aCA9IHRoaXMuZ2V0QXV0aCgpO1xuICAgIHJldHVybiBhdXRoLnJlZnJlc2hUb2tlbigpLnBpcGUoXG4gICAgICBjb25jYXRNYXAodG9rZW4gPT5cbiAgICAgICAgbmV4dC5oYW5kbGUodGhpcy5jbG9uZVJlcShyZXEsIHRva2VuKSkucGlwZShcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzVW5hdXRob3JpemVkKGVycm9yKSkge1xuICAgICAgICAgICAgICBhdXRoLmxvZ291dCh0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9uZVJlcShyZXE6IEh0dHBSZXF1ZXN0PHVua25vd24+LCBpZFRva2VuOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gcmVxLmNsb25lKHtcbiAgICAgIHNldEhlYWRlcnM6IHtcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke2lkVG9rZW59YCxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldEF1dGgoKSB7XG4gICAgaWYgKCF0aGlzLmF1dGgpIHtcbiAgICAgIHRoaXMuYXV0aCA9IHRoaXMuaW5qZWN0b3IuZ2V0KEF1dGhvcml6YXRpb25TdGF0ZVNlcnZpY2UpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hdXRoO1xuICB9XG5cbiAgcHJpdmF0ZSBuZWVkQXV0aG9yaXphdGlvbihcbiAgICBhcGlBZGRyZXNzOiBzdHJpbmcsXG4gICAgcmVxOiBIdHRwUmVxdWVzdDx1bmtub3duPixcbiAgKTogYm9vbGVhbiB7XG4gICAgaWYgKCFyZXEudXJsLnN0YXJ0c1dpdGgoYXBpQWRkcmVzcykgfHwgcmVxLmhlYWRlcnMuZ2V0KCdBdXRob3JpemF0aW9uJykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gIXRoaXMuYW5vbnltb3VzQXBpcy5zb21lKGFwaSA9PlxuICAgICAgYXBpIGluc3RhbmNlb2YgUmVnRXhwID8gYXBpLnRlc3QocmVxLnVybCkgOiByZXEudXJsLmluY2x1ZGVzKGFwaSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaXM0MDEoeyBlcnJvciB9OiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgIHJldHVybiB0aGlzLmlzU3RhdHVzKGVycm9yKSAmJiBlcnJvci5jb2RlID09PSA0MDE7XG4gIH1cblxuICBwcml2YXRlIGlzU2Vzc2lvbkludmFsaWQoZXJyb3JSZXM6IEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgY29uc3QgeyBlcnJvciB9ID0gZXJyb3JSZXM7XG4gICAgcmV0dXJuIHRoaXMuaXM0MDEoZXJyb3JSZXMpICYmIGVycm9yLnJlYXNvbiA9PT0gJ1Nlc3Npb25JbnZhbGlkJztcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU2Vzc2lvbkludmFsaWQoKSB7XG4gICAgdGhpcy5zZXNzaW9uTWFuYWdlLmNvbXBsZXRlKCk7XG4gICAgaWYgKFxuICAgICAgRGF0ZS5ub3coKSAtIHBhcnNlSW50KHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oU0VTU0lPTl9NQU5BR0VfS0VZKSkgPFxuICAgICAgNTAwMFxuICAgICkge1xuICAgICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShTRVNTSU9OX01BTkFHRV9LRVkpO1xuICAgICAgdGhpcy5hdXRoLmxvZ291dCh0cnVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gZml4IGNpcmNsZSBkZXBlbmRlbmN5IGVycm9yXG4gICAgY29uc3QgdHJhbnNsYXRlID0gdGhpcy5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSk7XG4gICAgY2F0Y2hQcm9taXNlKFxuICAgICAgdGhpcy5kaWFsb2cuY29uZmlybSh7XG4gICAgICAgIHRpdGxlOiB0cmFuc2xhdGUuZ2V0KCdzZXNzaW9uX2ludmFsaWRfaGludCcpLFxuICAgICAgICBjb25maXJtVGV4dDogdHJhbnNsYXRlLmdldCgnaV9rbm93JyksXG4gICAgICAgIGNhbmNlbEJ1dHRvbjogZmFsc2UsXG4gICAgICB9KSxcbiAgICApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmF1dGgubG9nb3V0KHRydWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1VuYXV0aG9yaXplZChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICByZXR1cm4gdGhpcy5pczQwMShlcnJvclJlcykgJiYgZXJyb3JSZXMuZXJyb3IucmVhc29uID09PSAnVW5hdXRob3JpemVkJztcbiAgfVxuXG4gIHByaXZhdGUgaXNJbnZhbGlkVXNlcihlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICByZXR1cm4gdGhpcy5pczQwMShlcnJvclJlcykgJiYgZXJyb3JSZXMuZXJyb3IucmVhc29uID09PSAnSW52YWxpZFVzZXInO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1N0YXR1cyhlcnJvcjogc3RyaW5nIHwgU3RhdHVzKTogZXJyb3IgaXMgU3RhdHVzIHtcbiAgICByZXR1cm4gZXJyb3IgJiYgdHlwZW9mIGVycm9yICE9PSAnc3RyaW5nJyAmJiAnY29kZScgaW4gZXJyb3I7XG4gIH1cblxuICBwcml2YXRlIGlzV2F0Y2hSZXEoXG4gICAgYXBpQWRkcmVzczogc3RyaW5nLFxuICAgIHsgdXJsLCBwYXJhbXMgfTogSHR0cFJlcXVlc3Q8dW5rbm93bj4sXG4gICkge1xuICAgIGNvbnN0IGlzU3RhbmRhcmRBcGkgPVxuICAgICAgdXJsLnN0YXJ0c1dpdGgoYXBpQWRkcmVzcyArICcvYXBpLycpIHx8XG4gICAgICB1cmwuc3RhcnRzV2l0aChhcGlBZGRyZXNzICsgJy9hcGlzLycpIHx8XG4gICAgICB1cmwuc3RhcnRzV2l0aChhcGlBZGRyZXNzICsgJy9rdWJlcm5ldGVzLycpO1xuICAgIGNvbnN0IGlzV2F0Y2hPbiA9IHBhcmFtcy5nZXQoJ3dhdGNoJyk/LnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJztcbiAgICByZXR1cm4gaXNTdGFuZGFyZEFwaSAmJiBpc1dhdGNoT247XG4gIH1cbn1cbiJdfQ==
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJjZXB0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hdXRob3JpemF0aW9uL2ludGVyY2VwdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQU8zQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUNMLEtBQUssRUFDTCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFNBQVMsRUFDVCxJQUFJLEVBQ0osR0FBRyxFQUNILEVBQUUsRUFDRixTQUFTLEdBQ1YsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xFLE9BQU8sRUFBVSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLG9CQUFvQixHQUNyQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQUU1RCx3RUFBd0U7QUFDeEUsa0RBQWtEO0FBRWxELE1BQU0sT0FBTywrQkFBK0I7SUFLMUMsWUFFbUIsYUFBcUMsRUFDckMsVUFBNkIsRUFDN0IsUUFBa0IsRUFDbEIsTUFBcUIsRUFDckIsYUFBbUM7UUFKbkMsa0JBQWEsR0FBYixhQUFhLENBQXdCO1FBQ3JDLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBQzdCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUFSOUMsMEJBQXFC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QUUsR0FBRyxFQUFFLE1BQU0sRUFBd0I7UUFFckMsTUFBTSxhQUFhLEdBQ2pCLEdBQUcsQ0FBQyxVQUFVLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQztZQUNwQyxHQUFHLENBQUMsVUFBVSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7WUFDckMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsY0FBYyxDQUFDLENBQUM7UUFDOUMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxXQUFXLEVBQUUsS0FBSyxNQUFNLENBQUM7UUFDaEUsT0FBTyxhQUFhLElBQUksU0FBUyxDQUFDO0lBQ3BDLENBQUM7Z0dBN0xVLCtCQUErQixjQU1oQyxjQUFjO3VFQU5iLCtCQUErQixXQUEvQiwrQkFBK0I7O2lGQUEvQiwrQkFBK0I7Y0FEM0MsVUFBVTs7c0JBT04sTUFBTTt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqIEBtb2R1bGUgYXV0aG9yaXphdGlvblxuICovXG5cbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7XG4gIEh0dHBFcnJvclJlc3BvbnNlLFxuICBIdHRwSGFuZGxlcixcbiAgSHR0cEludGVyY2VwdG9yLFxuICBIdHRwUmVxdWVzdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgTkVWRVIsXG4gIHRocm93RXJyb3IsXG4gIGNhdGNoRXJyb3IsXG4gIGNvbmNhdE1hcCxcbiAgdGFrZSxcbiAgbWFwLFxuICBvZixcbiAgc3dpdGNoTWFwLFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXBpR2F0ZXdheVNlcnZpY2UgfSBmcm9tICcuLi9hcGkvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBBTk9OWU1PVVNfQVBJUywgY2F0Y2hQcm9taXNlIH0gZnJvbSAnLi4vY29yZS9wdWJsaWMtYXBpJztcbmltcG9ydCB7IFN0YXR1cywgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uL3B1YmxpYy1hcGknO1xuXG5pbXBvcnQge1xuICBTRVNTSU9OX01BTkFHRV9LRVksXG4gIFNlc3Npb25NYW5hZ2VTZXJ2aWNlLFxufSBmcm9tICcuL3Nlc3Npb24tbWFuYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aG9yaXphdGlvblN0YXRlU2VydmljZSB9IGZyb20gJy4vc3RhdGUuc2VydmljZSc7XG5cbi8vIEludGVyY2VwdG9yIG11c3QgcHJvdmlkZSB3aXRoIGNvcnJlY3Qgb3JkZXIsIG5vdCBwcm92aWRlIGluIHJvb3QgaGVyZVxuLy8gaHR0cHM6Ly9hbmd1bGFyLmNuL2d1aWRlL2h0dHAjaW50ZXJjZXB0b3Itb3JkZXJcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBdXRob3JpemF0aW9uSW50ZXJjZXB0b3JTZXJ2aWNlIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcbiAgcHJpdmF0ZSBhdXRoOiBBdXRob3JpemF0aW9uU3RhdGVTZXJ2aWNlO1xuXG4gIHByaXZhdGUgc2Vzc2lvbkludmFsaWRDb25maXJtID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChBTk9OWU1PVVNfQVBJUylcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFub255bW91c0FwaXM6IEFycmF5PHN0cmluZyB8IFJlZ0V4cD4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBhcGlHYXRld2F5OiBBcGlHYXRld2F5U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZzogRGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb25NYW5hZ2U6IFNlc3Npb25NYW5hZ2VTZXJ2aWNlLFxuICApIHt9XG5cbiAgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8dW5rbm93bj4sIG5leHQ6IEh0dHBIYW5kbGVyKSB7XG4gICAgaWYgKHRoaXMuaXNDb25zb2xlUmVsYXRpdmUocmVxLnVybCkpIHtcbiAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpO1xuICAgIH1cblxuICAgIGNvbnN0IGF1dGggPSB0aGlzLmdldEF1dGgoKTtcblxuICAgIHJldHVybiBhdXRoLmdldFRva2VuUGF5bG9hZCgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5hcGlHYXRld2F5LmdldEFwaUFkZHJlc3MoKSksXG4gICAgICB0YWtlKDEpLFxuICAgICAgY29uY2F0TWFwKGFwaUFkZHJlc3MgPT4ge1xuICAgICAgICBpZiAoIXRoaXMubmVlZEF1dGhvcml6YXRpb24oYXBpQWRkcmVzcywgcmVxKSkge1xuICAgICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaWRUb2tlbiA9IGF1dGguZ2V0VG9rZW5CeVN0b3JhZ2UoKTtcblxuICAgICAgICBjb25zdCBhdXRoUmVxID0gdGhpcy5jbG9uZVJlcShyZXEsIGlkVG9rZW4pO1xuXG4gICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShhdXRoUmVxKS5waXBlKFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNTZXNzaW9uSW52YWxpZChlcnJvcikpIHtcbiAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTZXNzaW9uSW52YWxpZCgpO1xuICAgICAgICAgICAgICByZXR1cm4gTkVWRVI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIOW9k+eUqOaIt+iiq+emgeeUqOiHquWKqOeZu+WHulxuICAgICAgICAgICAgaWYgKHRoaXMuaXNJbnZhbGlkVXNlcihlcnJvcikpIHtcbiAgICAgICAgICAgICAgYXV0aC5sb2dvdXQodHJ1ZSk7XG4gICAgICAgICAgICAgIHJldHVybiBORVZFUjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzVW5hdXRob3JpemVkKGVycm9yKSkge1xuICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzV2F0Y2hSZXEoYXBpQWRkcmVzcywgYXV0aFJlcSkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIE5FVkVSO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gYXV0aC5jaGVja1Rva2VuKCkucGlwZShcbiAgICAgICAgICAgICAgbWFwKCgpID0+IGZhbHNlKSxcbiAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZih0cnVlKSksXG4gICAgICAgICAgICAgIHN3aXRjaE1hcChleHBpcmVkID0+XG4gICAgICAgICAgICAgICAgZXhwaXJlZFxuICAgICAgICAgICAgICAgICAgPyB0aGlzLnJldHJ5QXV0aChuZXh0LCBhdXRoUmVxKVxuICAgICAgICAgICAgICAgICAgOiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLy8gY29uc29sZSByZWxhdGl2ZSBtZWFucyB1cmwgcHJvdG9jb2wraG9zdG5hbWUrcG9ydCBzYW1lIHdpdGggY29uc29sZSwgZm9yIHRoaXMgY2FzZSwganVzdCBjaGVjayB1cmwgc3RhcnQgd2l0aCBgYGBodHRwKHMpOi8vYGBgIG9yIGBgYC8vYGBgXG4gIGlzQ29uc29sZVJlbGF0aXZlKHVybDogc3RyaW5nKSB7XG4gICAgY29uc3QgbG93ZXJDYXNlVXJsID0gKHVybCB8fCAnJykudG9Mb3dlckNhc2UoKTtcblxuICAgIHJldHVybiAoXG4gICAgICAhbG93ZXJDYXNlVXJsLnN0YXJ0c1dpdGgoJ2h0dHA6Ly8nKSAmJlxuICAgICAgIWxvd2VyQ2FzZVVybC5zdGFydHNXaXRoKCdodHRwczovLycpICYmXG4gICAgICAhbG93ZXJDYXNlVXJsLnN0YXJ0c1dpdGgoJy8vJylcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9uZVJlcShyZXE6IEh0dHBSZXF1ZXN0PHVua25vd24+LCBpZFRva2VuOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gaWRUb2tlblxuICAgICAgPyByZXEuY2xvbmUoe1xuICAgICAgICAgIHNldEhlYWRlcnM6IHtcbiAgICAgICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHtpZFRva2VufWAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgIDogcmVxO1xuICB9XG5cbiAgcHJpdmF0ZSByZXRyeUF1dGgobmV4dDogSHR0cEhhbmRsZXIsIHJlcTogSHR0cFJlcXVlc3Q8dW5rbm93bj4pIHtcbiAgICBjb25zdCBhdXRoID0gdGhpcy5nZXRBdXRoKCk7XG4gICAgcmV0dXJuIGF1dGgucmVmcmVzaFRva2VuKCkucGlwZShcbiAgICAgIGNvbmNhdE1hcCgoeyBpZF90b2tlbjogaWRUb2tlbiB9KSA9PiB7XG4gICAgICAgIGNvbnN0IGF1dGhSZXEgPSB0aGlzLmNsb25lUmVxKHJlcSwgaWRUb2tlbik7XG4gICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShhdXRoUmVxKS5waXBlKFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNVbmF1dGhvcml6ZWQoZXJyb3IpKSB7XG4gICAgICAgICAgICAgIGF1dGgubG9nb3V0KHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBdXRoKCkge1xuICAgIGlmICghdGhpcy5hdXRoKSB7XG4gICAgICB0aGlzLmF1dGggPSB0aGlzLmluamVjdG9yLmdldChBdXRob3JpemF0aW9uU3RhdGVTZXJ2aWNlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYXV0aDtcbiAgfVxuXG4gIHByaXZhdGUgbmVlZEF1dGhvcml6YXRpb24oXG4gICAgYXBpQWRkcmVzczogc3RyaW5nLFxuICAgIHJlcTogSHR0cFJlcXVlc3Q8dW5rbm93bj4sXG4gICk6IGJvb2xlYW4ge1xuICAgIGlmICghcmVxLnVybC5zdGFydHNXaXRoKGFwaUFkZHJlc3MpIHx8IHJlcS5oZWFkZXJzLmdldCgnQXV0aG9yaXphdGlvbicpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuICF0aGlzLmFub255bW91c0FwaXMuc29tZShhcGkgPT5cbiAgICAgIGFwaSBpbnN0YW5jZW9mIFJlZ0V4cCA/IGFwaS50ZXN0KHJlcS51cmwpIDogcmVxLnVybC5pbmNsdWRlcyhhcGkpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGlzNDAxKHsgZXJyb3IgfTogSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICByZXR1cm4gdGhpcy5pc1N0YXR1cyhlcnJvcikgJiYgZXJyb3IuY29kZSA9PT0gNDAxO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1Nlc3Npb25JbnZhbGlkKGVycm9yUmVzOiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgIGNvbnN0IHsgZXJyb3IgfSA9IGVycm9yUmVzO1xuICAgIHJldHVybiB0aGlzLmlzNDAxKGVycm9yUmVzKSAmJiBlcnJvci5yZWFzb24gPT09ICdTZXNzaW9uSW52YWxpZCc7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVNlc3Npb25JbnZhbGlkKCkge1xuICAgIHRoaXMuc2Vzc2lvbk1hbmFnZS5jb21wbGV0ZSgpO1xuICAgIGlmIChcbiAgICAgIERhdGUubm93KCkgLSBwYXJzZUludChzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFNFU1NJT05fTUFOQUdFX0tFWSkpIDxcbiAgICAgIDUwMDBcbiAgICApIHtcbiAgICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oU0VTU0lPTl9NQU5BR0VfS0VZKTtcbiAgICAgIHRoaXMuYXV0aC5sb2dvdXQodHJ1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2Vzc2lvbkludmFsaWRDb25maXJtKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXNzaW9uSW52YWxpZENvbmZpcm0gPSB0cnVlO1xuICAgIC8vIGZpeCBjaXJjbGUgZGVwZW5kZW5jeSBlcnJvclxuICAgIGNvbnN0IHRyYW5zbGF0ZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuICAgIGNhdGNoUHJvbWlzZShcbiAgICAgIHRoaXMuZGlhbG9nLmNvbmZpcm0oe1xuICAgICAgICB0aXRsZTogdHJhbnNsYXRlLmdldCgnc2Vzc2lvbl9pbnZhbGlkX2hpbnQnKSxcbiAgICAgICAgY29uZmlybVRleHQ6IHRyYW5zbGF0ZS5nZXQoJ2lfa25vdycpLFxuICAgICAgICBjYW5jZWxCdXR0b246IGZhbHNlLFxuICAgICAgfSksXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5zZXNzaW9uSW52YWxpZENvbmZpcm0gPSBmYWxzZTtcbiAgICAgIHRoaXMuYXV0aC5sb2dvdXQodHJ1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGlzVW5hdXRob3JpemVkKGVycm9yUmVzOiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgIHJldHVybiB0aGlzLmlzNDAxKGVycm9yUmVzKSAmJiBlcnJvclJlcy5lcnJvci5yZWFzb24gPT09ICdVbmF1dGhvcml6ZWQnO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0ludmFsaWRVc2VyKGVycm9yUmVzOiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgIHJldHVybiB0aGlzLmlzNDAxKGVycm9yUmVzKSAmJiBlcnJvclJlcy5lcnJvci5yZWFzb24gPT09ICdJbnZhbGlkVXNlcic7XG4gIH1cblxuICBwcml2YXRlIGlzU3RhdHVzKGVycm9yOiBzdHJpbmcgfCBTdGF0dXMpOiBlcnJvciBpcyBTdGF0dXMge1xuICAgIHJldHVybiBlcnJvciAmJiB0eXBlb2YgZXJyb3IgIT09ICdzdHJpbmcnICYmICdjb2RlJyBpbiBlcnJvcjtcbiAgfVxuXG4gIHByaXZhdGUgaXNXYXRjaFJlcShcbiAgICBhcGlBZGRyZXNzOiBzdHJpbmcsXG4gICAgeyB1cmwsIHBhcmFtcyB9OiBIdHRwUmVxdWVzdDx1bmtub3duPixcbiAgKSB7XG4gICAgY29uc3QgaXNTdGFuZGFyZEFwaSA9XG4gICAgICB1cmwuc3RhcnRzV2l0aChhcGlBZGRyZXNzICsgJy9hcGkvJykgfHxcbiAgICAgIHVybC5zdGFydHNXaXRoKGFwaUFkZHJlc3MgKyAnL2FwaXMvJykgfHxcbiAgICAgIHVybC5zdGFydHNXaXRoKGFwaUFkZHJlc3MgKyAnL2t1YmVybmV0ZXMvJyk7XG4gICAgY29uc3QgaXNXYXRjaE9uID0gcGFyYW1zLmdldCgnd2F0Y2gnKT8udG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnO1xuICAgIHJldHVybiBpc1N0YW5kYXJkQXBpICYmIGlzV2F0Y2hPbjtcbiAgfVxufVxuIl19