@alauda-fe/common 1.3.1 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/array-form-table/form/component.d.ts +1 -1
  2. package/authorization/interceptor.service.d.ts +0 -1
  3. package/authorization/state.service.d.ts +13 -13
  4. package/core/abstract/base-nested-form-control.d.ts +1 -1
  5. package/core/constants/patterns.d.ts +4 -0
  6. package/core/directives/scroll-to-first-invalid.directive.d.ts +1 -1
  7. package/core/module.d.ts +21 -21
  8. package/core/pipes/time.pipe.d.ts +1 -1
  9. package/core/services/context.service.d.ts +3 -4
  10. package/core/services/feature-gate.service.d.ts +1 -1
  11. package/core/services/workspace-helper.service.d.ts +3 -1
  12. package/core/utils/common.d.ts +0 -2
  13. package/core/utils/public-api.d.ts +1 -0
  14. package/core/utils/router.d.ts +3 -0
  15. package/core/utils/version.d.ts +1 -1
  16. package/editable/editable.component.d.ts +23 -0
  17. package/editable/editable.directive.d.ts +9 -0
  18. package/editable/editable.type.d.ts +5 -0
  19. package/editable/public-api.d.ts +2 -0
  20. package/esm2022/authorization/guard.service.mjs +2 -2
  21. package/esm2022/authorization/interceptor.service.mjs +7 -22
  22. package/esm2022/authorization/state.service.mjs +58 -92
  23. package/esm2022/core/constants/patterns.mjs +6 -4
  24. package/esm2022/core/module.mjs +7 -12
  25. package/esm2022/core/pipes/time.pipe.mjs +3 -3
  26. package/esm2022/core/services/context.service.mjs +9 -12
  27. package/esm2022/core/services/workspace-helper.service.mjs +7 -1
  28. package/esm2022/core/types/k8s/crd.mjs +1 -1
  29. package/esm2022/core/utils/common.mjs +1 -11
  30. package/esm2022/core/utils/public-api.mjs +2 -1
  31. package/esm2022/core/utils/router.mjs +20 -0
  32. package/esm2022/editable/editable.component.mjs +136 -0
  33. package/esm2022/editable/editable.directive.mjs +25 -0
  34. package/esm2022/editable/editable.type.mjs +6 -0
  35. package/esm2022/editable/public-api.mjs +3 -0
  36. package/esm2022/exec/terminal/component.mjs +12 -19
  37. package/esm2022/k8s-resource-list/footer/component.mjs +57 -21
  38. package/esm2022/k8s-resource-list/k8s-resource-list.module.mjs +18 -6
  39. package/esm2022/k8s-resource-list/utils.mjs +7 -3
  40. package/esm2022/page-scaffold/navigation/breadcrumb/breadcrumb.component.mjs +55 -53
  41. package/esm2022/page-scaffold/navigation/navconfig-loader/navconfig-loader.service.mjs +4 -4
  42. package/esm2022/page-scaffold/page-header/common-layout/product-select/component.mjs +6 -10
  43. package/esm2022/pie-derivative-chart/pie-derivative-chart.module.mjs +6 -6
  44. package/esm2022/pie-derivative-chart/radial-bar/radial-bar-chart.component.mjs +51 -40
  45. package/esm2022/pie-derivative-chart/units.mjs +14 -0
  46. package/esm2022/public-api.mjs +2 -1
  47. package/esm2022/table/component.mjs +47 -30
  48. package/esm2022/table/module.mjs +1 -1
  49. package/esm2022/view-chart/view-chart.component.mjs +5 -8
  50. package/esm2022/widget/public-api.mjs +2 -1
  51. package/esm2022/widget/resource-label/component.mjs +131 -0
  52. package/esm2022/widget/zero-state/zero-state.component.mjs +36 -21
  53. package/exec/terminal/component.d.ts +1 -3
  54. package/k8s-resource-list/footer/component.d.ts +8 -1
  55. package/k8s-resource-list/k8s-resource-list.module.d.ts +1 -1
  56. package/k8s-resource-list/k8s-resource-paged-list.d.ts +2 -2
  57. package/package.json +1 -1
  58. package/page-scaffold/page-header/common-layout/product-select/component.d.ts +1 -3
  59. package/pie-derivative-chart/radial-bar/radial-bar-chart.component.d.ts +4 -0
  60. package/pie-derivative-chart/units.d.ts +2 -0
  61. package/public-api.d.ts +1 -0
  62. package/styles/global.scss +1 -0
  63. package/styles/tailwind-preset.scss +1 -1
  64. package/table/component.d.ts +5 -4
  65. package/table/helper.d.ts +1 -1
  66. package/table/module.d.ts +1 -1
  67. package/widget/public-api.d.ts +1 -0
  68. package/widget/resource-label/component.d.ts +25 -0
  69. package/widget/zero-state/zero-state.component.d.ts +4 -1
@@ -20,20 +20,20 @@ const _forTrack1 = ($index, $item) => $item.name;
20
20
  const _c1 = a0 => ({ item: a0, inLink: true });
21
21
  const _c2 = a0 => ({ item: a0, inLink: false });
22
22
  const _c3 = a0 => ({ $implicit: a0 });
23
- function BreadcrumbComponent_Conditional_0_For_2_Conditional_1_Conditional_1_ng_container_0_Template(rf, ctx) { if (rf & 1) {
23
+ function BreadcrumbComponent_Conditional_1_For_1_Conditional_1_Conditional_1_ng_container_0_Template(rf, ctx) { if (rf & 1) {
24
24
  i0.ɵɵelementContainer(0);
25
25
  } }
26
- function BreadcrumbComponent_Conditional_0_For_2_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
27
- i0.ɵɵtemplate(0, BreadcrumbComponent_Conditional_0_For_2_Conditional_1_Conditional_1_ng_container_0_Template, 1, 0, "ng-container", 4);
26
+ function BreadcrumbComponent_Conditional_1_For_1_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
27
+ i0.ɵɵtemplate(0, BreadcrumbComponent_Conditional_1_For_1_Conditional_1_Conditional_1_ng_container_0_Template, 1, 0, "ng-container", 4);
28
28
  } if (rf & 2) {
29
29
  const item_r1 = i0.ɵɵnextContext(2).$implicit;
30
30
  i0.ɵɵnextContext(2);
31
- const icon_r2 = i0.ɵɵreference(2);
31
+ const icon_r2 = i0.ɵɵreference(5);
32
32
  i0.ɵɵproperty("ngTemplateOutlet", icon_r2)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c1, item_r1));
33
33
  } }
34
- function BreadcrumbComponent_Conditional_0_For_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
34
+ function BreadcrumbComponent_Conditional_1_For_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
35
35
  i0.ɵɵelementStart(0, "a", 2);
36
- i0.ɵɵtemplate(1, BreadcrumbComponent_Conditional_0_For_2_Conditional_1_Conditional_1_Template, 1, 4, "ng-container");
36
+ i0.ɵɵtemplate(1, BreadcrumbComponent_Conditional_1_For_1_Conditional_1_Conditional_1_Template, 1, 4, "ng-container");
37
37
  i0.ɵɵelementStart(2, "span");
38
38
  i0.ɵɵtext(3);
39
39
  i0.ɵɵpipe(4, "translate");
@@ -48,20 +48,20 @@ function BreadcrumbComponent_Conditional_0_For_2_Conditional_1_Template(rf, ctx)
48
48
  i0.ɵɵadvance(2);
49
49
  i0.ɵɵtextInterpolate(item_r1.label || i0.ɵɵpipeBind1(4, 3, item_r1.name));
50
50
  } }
51
- function BreadcrumbComponent_Conditional_0_For_2_Conditional_2_Conditional_1_ng_container_0_Template(rf, ctx) { if (rf & 1) {
51
+ function BreadcrumbComponent_Conditional_1_For_1_Conditional_2_Conditional_1_ng_container_0_Template(rf, ctx) { if (rf & 1) {
52
52
  i0.ɵɵelementContainer(0);
53
53
  } }
54
- function BreadcrumbComponent_Conditional_0_For_2_Conditional_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
55
- i0.ɵɵtemplate(0, BreadcrumbComponent_Conditional_0_For_2_Conditional_2_Conditional_1_ng_container_0_Template, 1, 0, "ng-container", 4);
54
+ function BreadcrumbComponent_Conditional_1_For_1_Conditional_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
55
+ i0.ɵɵtemplate(0, BreadcrumbComponent_Conditional_1_For_1_Conditional_2_Conditional_1_ng_container_0_Template, 1, 0, "ng-container", 4);
56
56
  } if (rf & 2) {
57
57
  const item_r1 = i0.ɵɵnextContext(2).$implicit;
58
58
  i0.ɵɵnextContext(2);
59
- const icon_r2 = i0.ɵɵreference(2);
59
+ const icon_r2 = i0.ɵɵreference(5);
60
60
  i0.ɵɵproperty("ngTemplateOutlet", icon_r2)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c2, item_r1));
61
61
  } }
62
- function BreadcrumbComponent_Conditional_0_For_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
62
+ function BreadcrumbComponent_Conditional_1_For_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
63
63
  i0.ɵɵelementStart(0, "span", 3);
64
- i0.ɵɵtemplate(1, BreadcrumbComponent_Conditional_0_For_2_Conditional_2_Conditional_1_Template, 1, 4, "ng-container");
64
+ i0.ɵɵtemplate(1, BreadcrumbComponent_Conditional_1_For_1_Conditional_2_Conditional_1_Template, 1, 4, "ng-container");
65
65
  i0.ɵɵelementStart(2, "span");
66
66
  i0.ɵɵtext(3);
67
67
  i0.ɵɵpipe(4, "translate");
@@ -75,9 +75,9 @@ function BreadcrumbComponent_Conditional_0_For_2_Conditional_2_Template(rf, ctx)
75
75
  i0.ɵɵadvance(2);
76
76
  i0.ɵɵtextInterpolate(item_r1.label || i0.ɵɵpipeBind1(4, 2, item_r1.name));
77
77
  } }
78
- function BreadcrumbComponent_Conditional_0_For_2_Template(rf, ctx) { if (rf & 1) {
78
+ function BreadcrumbComponent_Conditional_1_For_1_Template(rf, ctx) { if (rf & 1) {
79
79
  i0.ɵɵelementStart(0, "aui-breadcrumb-item");
80
- i0.ɵɵtemplate(1, BreadcrumbComponent_Conditional_0_For_2_Conditional_1_Template, 5, 5, "a", 2)(2, BreadcrumbComponent_Conditional_0_For_2_Conditional_2_Template, 5, 4, "span", 3);
80
+ i0.ɵɵtemplate(1, BreadcrumbComponent_Conditional_1_For_1_Conditional_1_Template, 5, 5, "a", 2)(2, BreadcrumbComponent_Conditional_1_For_1_Conditional_2_Template, 5, 4, "span", 3);
81
81
  i0.ɵɵelementEnd();
82
82
  } if (rf & 2) {
83
83
  const item_r1 = ctx.$implicit;
@@ -85,13 +85,19 @@ function BreadcrumbComponent_Conditional_0_For_2_Template(rf, ctx) { if (rf & 1)
85
85
  i0.ɵɵadvance();
86
86
  i0.ɵɵconditional(item_r1.routerLink && !ctx_r4.isSameUrl(item_r1.routerLink) ? 1 : 2);
87
87
  } }
88
- function BreadcrumbComponent_Conditional_0_Conditional_3_Template(rf, ctx) { if (rf & 1) {
88
+ function BreadcrumbComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
89
+ i0.ɵɵrepeaterCreate(0, BreadcrumbComponent_Conditional_1_For_1_Template, 3, 1, "aui-breadcrumb-item", null, _forTrack0);
90
+ } if (rf & 2) {
91
+ const ctx_r4 = i0.ɵɵnextContext();
92
+ i0.ɵɵrepeater(ctx_r4.activatedPath);
93
+ } }
94
+ function BreadcrumbComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
89
95
  i0.ɵɵelementContainer(0, 1);
90
96
  } if (rf & 2) {
91
- const ctx_r4 = i0.ɵɵnextContext(2);
97
+ const ctx_r4 = i0.ɵɵnextContext();
92
98
  i0.ɵɵproperty("ngTemplateOutlet", ctx_r4.customTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c3, ctx_r4.rootPath()));
93
99
  } }
94
- function BreadcrumbComponent_Conditional_0_Conditional_4_For_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
100
+ function BreadcrumbComponent_Conditional_3_For_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
95
101
  i0.ɵɵelementStart(0, "a", 5);
96
102
  i0.ɵɵtext(1);
97
103
  i0.ɵɵpipe(2, "translate");
@@ -102,7 +108,7 @@ function BreadcrumbComponent_Conditional_0_Conditional_4_For_1_Conditional_1_Tem
102
108
  i0.ɵɵadvance();
103
109
  i0.ɵɵtextInterpolate(item_r6.translate ? i0.ɵɵpipeBind1(2, 2, item_r6.name) : item_r6.name);
104
110
  } }
105
- function BreadcrumbComponent_Conditional_0_Conditional_4_For_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
111
+ function BreadcrumbComponent_Conditional_3_For_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
106
112
  i0.ɵɵelementStart(0, "span");
107
113
  i0.ɵɵtext(1);
108
114
  i0.ɵɵpipe(2, "translate");
@@ -112,36 +118,22 @@ function BreadcrumbComponent_Conditional_0_Conditional_4_For_1_Conditional_2_Tem
112
118
  i0.ɵɵadvance();
113
119
  i0.ɵɵtextInterpolate(item_r6.translate ? i0.ɵɵpipeBind1(2, 1, item_r6.name) : item_r6.name);
114
120
  } }
115
- function BreadcrumbComponent_Conditional_0_Conditional_4_For_1_Template(rf, ctx) { if (rf & 1) {
121
+ function BreadcrumbComponent_Conditional_3_For_1_Template(rf, ctx) { if (rf & 1) {
116
122
  i0.ɵɵelementStart(0, "aui-breadcrumb-item");
117
- i0.ɵɵtemplate(1, BreadcrumbComponent_Conditional_0_Conditional_4_For_1_Conditional_1_Template, 3, 4, "a", 5)(2, BreadcrumbComponent_Conditional_0_Conditional_4_For_1_Conditional_2_Template, 3, 3, "span");
123
+ i0.ɵɵtemplate(1, BreadcrumbComponent_Conditional_3_For_1_Conditional_1_Template, 3, 4, "a", 5)(2, BreadcrumbComponent_Conditional_3_For_1_Conditional_2_Template, 3, 3, "span");
118
124
  i0.ɵɵelementEnd();
119
125
  } if (rf & 2) {
120
126
  const item_r6 = ctx.$implicit;
121
127
  i0.ɵɵadvance();
122
128
  i0.ɵɵconditional(item_r6.routerLink ? 1 : 2);
123
129
  } }
124
- function BreadcrumbComponent_Conditional_0_Conditional_4_Template(rf, ctx) { if (rf & 1) {
125
- i0.ɵɵrepeaterCreate(0, BreadcrumbComponent_Conditional_0_Conditional_4_For_1_Template, 3, 1, "aui-breadcrumb-item", null, _forTrack1);
126
- } if (rf & 2) {
127
- const ctx_r4 = i0.ɵɵnextContext(2);
128
- i0.ɵɵrepeater(ctx_r4.subItems());
129
- } }
130
- function BreadcrumbComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
131
- i0.ɵɵelementStart(0, "aui-breadcrumb");
132
- i0.ɵɵrepeaterCreate(1, BreadcrumbComponent_Conditional_0_For_2_Template, 3, 1, "aui-breadcrumb-item", null, _forTrack0);
133
- i0.ɵɵtemplate(3, BreadcrumbComponent_Conditional_0_Conditional_3_Template, 1, 4, "ng-container", 1)(4, BreadcrumbComponent_Conditional_0_Conditional_4_Template, 2, 0);
134
- i0.ɵɵelementEnd();
130
+ function BreadcrumbComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
131
+ i0.ɵɵrepeaterCreate(0, BreadcrumbComponent_Conditional_3_For_1_Template, 3, 1, "aui-breadcrumb-item", null, _forTrack1);
135
132
  } if (rf & 2) {
136
133
  const ctx_r4 = i0.ɵɵnextContext();
137
- i0.ɵɵadvance();
138
- i0.ɵɵrepeater(ctx_r4.activatedPath);
139
- i0.ɵɵadvance(2);
140
- i0.ɵɵconditional(ctx_r4.customTemplateState === "ready" ? 3 : -1);
141
- i0.ɵɵadvance();
142
- i0.ɵɵconditional(ctx_r4.customTemplateState !== "initialing" && !ctx_r4.customTemplate ? 4 : -1);
134
+ i0.ɵɵrepeater(ctx_r4.subItems());
143
135
  } }
144
- function BreadcrumbComponent_ng_template_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
136
+ function BreadcrumbComponent_ng_template_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
145
137
  i0.ɵɵelement(0, "acl-nav-lottie-icon", 6);
146
138
  } if (rf & 2) {
147
139
  const ctx_r6 = i0.ɵɵnextContext();
@@ -150,14 +142,14 @@ function BreadcrumbComponent_ng_template_1_Conditional_0_Template(rf, ctx) { if
150
142
  const ctx_r4 = i0.ɵɵnextContext();
151
143
  i0.ɵɵproperty("frame", inLink_r9 ? -1 : 0)("animData", ctx_r4.animDataMap[item_r8.icon]);
152
144
  } }
153
- function BreadcrumbComponent_ng_template_1_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
145
+ function BreadcrumbComponent_ng_template_4_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
154
146
  i0.ɵɵelement(0, "acl-nav-lottie-icon", 6);
155
147
  } if (rf & 2) {
156
148
  const inLink_r9 = i0.ɵɵnextContext(2).inLink;
157
149
  i0.ɵɵproperty("frame", inLink_r9 ? -1 : 0)("animData", ctx());
158
150
  } }
159
- function BreadcrumbComponent_ng_template_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
160
- i0.ɵɵtemplate(0, BreadcrumbComponent_ng_template_1_Conditional_1_Conditional_0_Template, 1, 2, "acl-nav-lottie-icon", 6);
151
+ function BreadcrumbComponent_ng_template_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
152
+ i0.ɵɵtemplate(0, BreadcrumbComponent_ng_template_4_Conditional_1_Conditional_0_Template, 1, 2, "acl-nav-lottie-icon", 6);
161
153
  i0.ɵɵpipe(1, "pure");
162
154
  } if (rf & 2) {
163
155
  let tmp_5_0;
@@ -165,14 +157,14 @@ function BreadcrumbComponent_ng_template_1_Conditional_1_Template(rf, ctx) { if
165
157
  const ctx_r4 = i0.ɵɵnextContext();
166
158
  i0.ɵɵconditional((tmp_5_0 = i0.ɵɵpipeBind2(1, 1, item_r8.iconLottieJson, ctx_r4.loadLottieJson)) ? 0 : -1, tmp_5_0);
167
159
  } }
168
- function BreadcrumbComponent_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
160
+ function BreadcrumbComponent_ng_template_4_Conditional_2_Template(rf, ctx) { if (rf & 1) {
169
161
  i0.ɵɵelement(0, "img", 7);
170
162
  i0.ɵɵpipe(1, "aclSanitize");
171
163
  } if (rf & 2) {
172
164
  const item_r8 = i0.ɵɵnextContext().item;
173
165
  i0.ɵɵproperty("src", i0.ɵɵpipeBind2(1, 1, item_r8.iconImgSrc, "url"), i0.ɵɵsanitizeUrl);
174
166
  } }
175
- function BreadcrumbComponent_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
167
+ function BreadcrumbComponent_ng_template_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
176
168
  i0.ɵɵelement(0, "img", 7);
177
169
  i0.ɵɵpipe(1, "aclImageHeader");
178
170
  i0.ɵɵpipe(2, "aclSanitize");
@@ -180,21 +172,21 @@ function BreadcrumbComponent_ng_template_1_Conditional_3_Template(rf, ctx) { if
180
172
  const item_r8 = i0.ɵɵnextContext().item;
181
173
  i0.ɵɵproperty("src", i0.ɵɵpipeBind2(2, 3, i0.ɵɵpipeBind1(1, 1, item_r8.iconImgData || item_r8.iconData), "url"), i0.ɵɵsanitizeUrl);
182
174
  } }
183
- function BreadcrumbComponent_ng_template_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
175
+ function BreadcrumbComponent_ng_template_4_Conditional_4_Template(rf, ctx) { if (rf & 1) {
184
176
  i0.ɵɵelement(0, "aui-icon", 8);
185
177
  } if (rf & 2) {
186
178
  const item_r8 = i0.ɵɵnextContext().item;
187
179
  i0.ɵɵproperty("icon", item_r8.iconStatic);
188
180
  } }
189
- function BreadcrumbComponent_ng_template_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
181
+ function BreadcrumbComponent_ng_template_4_Conditional_5_Template(rf, ctx) { if (rf & 1) {
190
182
  i0.ɵɵelement(0, "acl-nav-lottie-icon", 6);
191
183
  } if (rf & 2) {
192
184
  const inLink_r9 = i0.ɵɵnextContext().inLink;
193
185
  const ctx_r4 = i0.ɵɵnextContext();
194
186
  i0.ɵɵproperty("frame", inLink_r9 ? -1 : 0)("animData", ctx_r4.animDataMap.product);
195
187
  } }
196
- function BreadcrumbComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {
197
- i0.ɵɵtemplate(0, BreadcrumbComponent_ng_template_1_Conditional_0_Template, 1, 2, "acl-nav-lottie-icon", 6)(1, BreadcrumbComponent_ng_template_1_Conditional_1_Template, 2, 4)(2, BreadcrumbComponent_ng_template_1_Conditional_2_Template, 2, 4, "img", 7)(3, BreadcrumbComponent_ng_template_1_Conditional_3_Template, 3, 6, "img", 7)(4, BreadcrumbComponent_ng_template_1_Conditional_4_Template, 1, 1, "aui-icon", 8)(5, BreadcrumbComponent_ng_template_1_Conditional_5_Template, 1, 2, "acl-nav-lottie-icon", 6);
188
+ function BreadcrumbComponent_ng_template_4_Template(rf, ctx) { if (rf & 1) {
189
+ i0.ɵɵtemplate(0, BreadcrumbComponent_ng_template_4_Conditional_0_Template, 1, 2, "acl-nav-lottie-icon", 6)(1, BreadcrumbComponent_ng_template_4_Conditional_1_Template, 2, 4)(2, BreadcrumbComponent_ng_template_4_Conditional_2_Template, 2, 4, "img", 7)(3, BreadcrumbComponent_ng_template_4_Conditional_3_Template, 3, 6, "img", 7)(4, BreadcrumbComponent_ng_template_4_Conditional_4_Template, 1, 1, "aui-icon", 8)(5, BreadcrumbComponent_ng_template_4_Conditional_5_Template, 1, 2, "acl-nav-lottie-icon", 6);
198
190
  } if (rf & 2) {
199
191
  const item_r8 = ctx.item;
200
192
  const ctx_r4 = i0.ɵɵnextContext();
@@ -277,7 +269,9 @@ export class BreadcrumbComponent {
277
269
  return [];
278
270
  }
279
271
  rootPath() {
280
- return this.linkToUrl(this.activatedPath.at(-1).routerLink);
272
+ return this.activatedPath?.at(-1)
273
+ ? this.linkToUrl(this.activatedPath.at(-1).routerLink)
274
+ : '/';
281
275
  }
282
276
  loadLottieJson(icon) {
283
277
  const data = signal(null);
@@ -320,10 +314,18 @@ export class BreadcrumbComponent {
320
314
  } if (rf & 2) {
321
315
  let _t;
322
316
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.iconRef = _t.first);
323
- } }, inputs: { configs: "configs", groups: "groups", activatedKey: "activatedKey", _subItems: [0, "subItems", "_subItems"] }, standalone: true, features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature], decls: 3, vars: 1, consts: [["icon", ""], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "item", 3, "routerLink"], [1, "item"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [3, "routerLink"], [3, "frame", "animData"], [3, "src"], [3, "icon"]], template: function BreadcrumbComponent_Template(rf, ctx) { if (rf & 1) {
324
- i0.ɵɵtemplate(0, BreadcrumbComponent_Conditional_0_Template, 5, 2, "aui-breadcrumb")(1, BreadcrumbComponent_ng_template_1_Template, 6, 1, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
317
+ } }, inputs: { configs: "configs", groups: "groups", activatedKey: "activatedKey", _subItems: [0, "subItems", "_subItems"] }, standalone: true, features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature], decls: 6, vars: 3, consts: [["icon", ""], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "item", 3, "routerLink"], [1, "item"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [3, "routerLink"], [3, "frame", "animData"], [3, "src"], [3, "icon"]], template: function BreadcrumbComponent_Template(rf, ctx) { if (rf & 1) {
318
+ i0.ɵɵelementStart(0, "aui-breadcrumb");
319
+ i0.ɵɵtemplate(1, BreadcrumbComponent_Conditional_1_Template, 2, 0)(2, BreadcrumbComponent_Conditional_2_Template, 1, 4, "ng-container", 1)(3, BreadcrumbComponent_Conditional_3_Template, 2, 0);
320
+ i0.ɵɵelementEnd();
321
+ i0.ɵɵtemplate(4, BreadcrumbComponent_ng_template_4_Template, 6, 1, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
325
322
  } if (rf & 2) {
326
- i0.ɵɵconditional((ctx.activatedPath == null ? null : ctx.activatedPath.length) ? 0 : -1);
323
+ i0.ɵɵadvance();
324
+ i0.ɵɵconditional((ctx.activatedPath == null ? null : ctx.activatedPath.length) ? 1 : -1);
325
+ i0.ɵɵadvance();
326
+ i0.ɵɵconditional(ctx.customTemplateState === "ready" ? 2 : -1);
327
+ i0.ɵɵadvance();
328
+ i0.ɵɵconditional(ctx.customTemplateState !== "initialing" && !ctx.customTemplate ? 3 : -1);
327
329
  } }, dependencies: [BreadcrumbModule, i3.BreadcrumbComponent, i3.BreadcrumbItemComponent, RouterLink,
328
330
  NavLottieIconDirective,
329
331
  NgTemplateOutlet,
@@ -347,7 +349,7 @@ export class BreadcrumbComponent {
347
349
  ImgHeaderPipe,
348
350
  IconComponent,
349
351
  PurePipe,
350
- ], template: "@if (activatedPath?.length) {\n <aui-breadcrumb>\n @for (item of activatedPath; track item.key; let index = $index) {\n <aui-breadcrumb-item>\n @if (item.routerLink && !isSameUrl(item.routerLink)) {\n <a\n class=\"item\"\n [routerLink]=\"item.routerLink\"\n >\n @if (index === 0) {\n <ng-container\n *ngTemplateOutlet=\"icon; context: { item, inLink: true }\"\n ></ng-container>\n }\n <span>{{ item.label || (item.name | translate) }}</span>\n </a>\n } @else {\n <span class=\"item\">\n @if (index === 0) {\n <ng-container\n *ngTemplateOutlet=\"icon; context: { item, inLink: false }\"\n ></ng-container>\n }\n <span>{{ item.label || (item.name | translate) }}</span>\n </span>\n }\n </aui-breadcrumb-item>\n }\n @if (customTemplateState === 'ready') {\n <ng-container\n [ngTemplateOutlet]=\"customTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: rootPath() }\"\n ></ng-container>\n }\n @if (customTemplateState !== 'initialing' && !customTemplate) {\n @for (item of subItems(); track item.name) {\n <aui-breadcrumb-item>\n @if (item.routerLink) {\n <a [routerLink]=\"item.routerLink\">{{\n item.translate ? (item.name | translate) : item.name\n }}</a>\n } @else {\n <span>{{\n item.translate ? (item.name | translate) : item.name\n }}</span>\n }\n </aui-breadcrumb-item>\n }\n }\n </aui-breadcrumb>\n}\n\n<ng-template\n #icon\n let-item=\"item\"\n let-inLink=\"inLink\"\n>\n @if (item.icon && animDataMap[item.icon]) {\n <acl-nav-lottie-icon\n [frame]=\"inLink ? -1 : 0\"\n [animData]=\"animDataMap[item.icon]\"\n ></acl-nav-lottie-icon>\n } @else if (item.iconLottieJson) {\n @if (item.iconLottieJson | pure: loadLottieJson; as animData) {\n <acl-nav-lottie-icon\n [frame]=\"inLink ? -1 : 0\"\n [animData]=\"animData()\"\n ></acl-nav-lottie-icon>\n }\n } @else if (item.iconImgSrc) {\n <img [src]=\"item.iconImgSrc | aclSanitize: 'url'\" />\n } @else if (item.iconImgData || item.iconData) {\n <img\n [src]=\"\n item.iconImgData || item.iconData | aclImageHeader | aclSanitize: 'url'\n \"\n />\n } @else if (item.iconStatic) {\n <aui-icon [icon]=\"item.iconStatic\"></aui-icon>\n } @else {\n <acl-nav-lottie-icon\n [frame]=\"inLink ? -1 : 0\"\n [animData]=\"animDataMap.product\"\n ></acl-nav-lottie-icon>\n }\n</ng-template>\n", styles: [".item{display:inline-flex;align-items:center;vertical-align:bottom}.item>acl-nav-lottie-icon,.item>img{margin-right:4px;width:var(--aui-icon-size-m);height:var(--aui-icon-size-m)}.item>aui-icon{margin-right:4px;font-size:var(--aui-icon-size-m)}\n"] }]
352
+ ], template: "<aui-breadcrumb>\n @if (activatedPath?.length) {\n @for (item of activatedPath; track item.key; let index = $index) {\n <aui-breadcrumb-item>\n @if (item.routerLink && !isSameUrl(item.routerLink)) {\n <a\n class=\"item\"\n [routerLink]=\"item.routerLink\"\n >\n @if (index === 0) {\n <ng-container\n *ngTemplateOutlet=\"icon; context: { item, inLink: true }\"\n ></ng-container>\n }\n <span>{{ item.label || (item.name | translate) }}</span>\n </a>\n } @else {\n <span class=\"item\">\n @if (index === 0) {\n <ng-container\n *ngTemplateOutlet=\"icon; context: { item, inLink: false }\"\n ></ng-container>\n }\n <span>{{ item.label || (item.name | translate) }}</span>\n </span>\n }\n </aui-breadcrumb-item>\n }\n }\n @if (customTemplateState === 'ready') {\n <ng-container\n [ngTemplateOutlet]=\"customTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: rootPath() }\"\n ></ng-container>\n }\n @if (customTemplateState !== 'initialing' && !customTemplate) {\n @for (item of subItems(); track item.name) {\n <aui-breadcrumb-item>\n @if (item.routerLink) {\n <a [routerLink]=\"item.routerLink\">{{\n item.translate ? (item.name | translate) : item.name\n }}</a>\n } @else {\n <span>{{\n item.translate ? (item.name | translate) : item.name\n }}</span>\n }\n </aui-breadcrumb-item>\n }\n }\n</aui-breadcrumb>\n\n<ng-template\n #icon\n let-item=\"item\"\n let-inLink=\"inLink\"\n>\n @if (item.icon && animDataMap[item.icon]) {\n <acl-nav-lottie-icon\n [frame]=\"inLink ? -1 : 0\"\n [animData]=\"animDataMap[item.icon]\"\n ></acl-nav-lottie-icon>\n } @else if (item.iconLottieJson) {\n @if (item.iconLottieJson | pure: loadLottieJson; as animData) {\n <acl-nav-lottie-icon\n [frame]=\"inLink ? -1 : 0\"\n [animData]=\"animData()\"\n ></acl-nav-lottie-icon>\n }\n } @else if (item.iconImgSrc) {\n <img [src]=\"item.iconImgSrc | aclSanitize: 'url'\" />\n } @else if (item.iconImgData || item.iconData) {\n <img\n [src]=\"\n item.iconImgData || item.iconData | aclImageHeader | aclSanitize: 'url'\n \"\n />\n } @else if (item.iconStatic) {\n <aui-icon [icon]=\"item.iconStatic\"></aui-icon>\n } @else {\n <acl-nav-lottie-icon\n [frame]=\"inLink ? -1 : 0\"\n [animData]=\"animDataMap.product\"\n ></acl-nav-lottie-icon>\n }\n</ng-template>\n", styles: [".item{display:inline-flex;align-items:center;vertical-align:bottom}.item>acl-nav-lottie-icon,.item>img{margin-right:4px;width:var(--aui-icon-size-m);height:var(--aui-icon-size-m)}.item>aui-icon{margin-right:4px;font-size:var(--aui-icon-size-m)}\n"] }]
351
353
  }], () => [{ type: i1.Router }, { type: i0.ChangeDetectorRef }, { type: i2.BreadcrumbService }], { configs: [{
352
354
  type: Input
353
355
  }], groups: [{
@@ -370,4 +372,4 @@ function findIndex(compare, value) {
370
372
  }
371
373
  return -1;
372
374
  }
373
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvcGFnZS1zY2FmZm9sZC9uYXZpZ2F0aW9uL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvcGFnZS1zY2FmZm9sZC9uYXZpZ2F0aW9uL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBQ0wsU0FBUyxFQUdULE1BQU0sRUFHTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU5QixPQUFPLEVBQ0wsYUFBYSxFQUNiLFFBQVEsRUFDUixZQUFZLEdBRWIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxXQUFXLE1BQU0sZ0NBQWdDLENBQUM7QUFFekQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFdkMsT0FBTyxFQUNMLGlC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QUM7SUFDVCxDQUFDO29GQWhMVSxtQkFBbUI7b0VBQW5CLG1CQUFtQjs7Ozs7O1lDSmhDLEFBcERBLG9GQUE2Qix3R0F3RDVCOztZQXhERCx3RkFrREM7NEJETkcsZ0JBQWdCLHNEQUNoQixVQUFVO1lBQ1Ysc0JBQXNCO1lBQ3RCLGdCQUFnQjtZQUNoQixhQUFhO1lBQ2IsZ0JBQWdCO1lBQ2hCLFlBQVk7WUFDWixhQUFhO1lBQ2IsYUFBYTtZQUNiLFFBQVE7O2lGQUdDLG1CQUFtQjtjQW5CL0IsU0FBUzsyQkFDRSxnQkFBZ0IsbUJBR1QsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7b0JBQ1AsZ0JBQWdCO29CQUNoQixVQUFVO29CQUNWLHNCQUFzQjtvQkFDdEIsZ0JBQWdCO29CQUNoQixhQUFhO29CQUNiLGdCQUFnQjtvQkFDaEIsWUFBWTtvQkFDWixhQUFhO29CQUNiLGFBQWE7b0JBQ2IsUUFBUTtpQkFDVDt1R0FNRCxPQUFPO2tCQUROLEtBQUs7WUFJTixNQUFNO2tCQURMLEtBQUs7WUFJTixZQUFZO2tCQURYLEtBQUs7WUFLTixTQUFTO2tCQURSLEtBQUs7bUJBQUMsVUFBVTtZQVdqQixPQUFPO2tCQUROLFNBQVM7bUJBQUMsTUFBTTs7a0ZBdkJOLG1CQUFtQjtBQW1MaEMsU0FBUyxTQUFTLENBQUMsT0FBK0IsRUFBRSxLQUFhO0lBQy9ELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDdEMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDN0IsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlYWRjcnVtYk1vZHVsZSwgSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIGlzRGV2TW9kZSxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIHNpZ25hbCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIsIFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIEltZ0hlYWRlclBpcGUsXG4gIFB1cmVQaXBlLFxuICBTYW5pdGl6ZVBpcGUsXG4gIFN0cmluZ01hcCxcbn0gZnJvbSAnLi4vLi4vLi4vY29yZS9wdWJsaWMtYXBpJztcbmltcG9ydCB7IEdyaWRMYXlvdXRNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9ncmlkLWxheW91dC9tb2R1bGUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uLy4uL3B1YmxpYy1hcGknO1xuaW1wb3J0IGFuaW1EYXRhTWFwIGZyb20gJy4uL2xvdHRpZS1pY29ucy9hbmltYXRpb24tZGF0YSc7XG5pbXBvcnQgeyBOYXZHcm91cENvbmZpZywgTmF2SXRlbUNvbmZpZyB9IGZyb20gJy4uL25hdi1tZW51L3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgTmF2TG90dGllSWNvbkRpcmVjdGl2ZSB9IGZyb20gJy4uL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgZmluZE5hdlBhdGggfSBmcm9tICcuLi91dGlscyc7XG5cbmltcG9ydCB7XG4gIEJyZWFkY3J1bWJTZXJ2aWNlLFxuICBCcmVhZGNydW1iVGVtcGxhdGVTdGF0ZSxcbn0gZnJvbSAnLi9icmVhZGNydW1iLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wtYnJlYWRjcnVtYicsXG4gIHRlbXBsYXRlVXJsOiAnLi9icmVhZGNydW1iLnRlbXBsYXRlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9icmVhZGNydW1iLnN0eWxlLnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBCcmVhZGNydW1iTW9kdWxlLFxuICAgIFJvdXRlckxpbmssXG4gICAgTmF2TG90dGllSWNvbkRpcmVjdGl2ZSxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIFRyYW5zbGF0ZVBpcGUsXG4gICAgR3JpZExheW91dE1vZHVsZSxcbiAgICBTYW5pdGl6ZVBpcGUsXG4gICAgSW1nSGVhZGVyUGlwZSxcbiAgICBJY29uQ29tcG9uZW50LFxuICAgIFB1cmVQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBCcmVhZGNydW1iQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBhbmltRGF0YU1hcCA9IGFuaW1EYXRhTWFwO1xuXG4gIEBJbnB1dCgpXG4gIGNvbmZpZ3M6IE5hdkl0ZW1Db25maWdbXTtcblxuICBASW5wdXQoKVxuICBncm91cHM6IE5hdkdyb3VwQ29uZmlnW107XG5cbiAgQElucHV0KClcbiAgYWN0aXZhdGVkS2V5OiBzdHJpbmc7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgQElucHV0KCdzdWJJdGVtcycpXG4gIF9zdWJJdGVtczogKFxuICAgIHJlc3Q6IHN0cmluZ1tdLFxuICAgIGxhc3RSb3V0ZUxpbms6IEFycmF5PHN0cmluZyB8IFN0cmluZ01hcD4sXG4gICkgPT4gQXJyYXk8e1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB0cmFuc2xhdGU/OiBib29sZWFuO1xuICAgIHJvdXRlckxpbms/OiBOYXZJdGVtQ29uZmlnWydyb3V0ZXJMaW5rJ107XG4gIH0+IHwgdm9pZDtcblxuICBAVmlld0NoaWxkKCdpY29uJylcbiAgaWNvblJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgYWN0aXZhdGVkUGF0aDogTmF2SXRlbUNvbmZpZ1tdO1xuICBjdXN0b21UZW1wbGF0ZVN0YXRlOiBCcmVhZGNydW1iVGVtcGxhdGVTdGF0ZTtcbiAgY3VzdG9tVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIHByaXZhdGUgaW50ZXJuYWxDb25maWdzOiBOYXZJdGVtQ29uZmlnW10gPSBbXTtcbiAgcHJpdmF0ZSB1cmw6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlcnZpY2U6IEJyZWFkY3J1bWJTZXJ2aWNlLFxuICApIHtcbiAgICB0aGlzLnVybCA9IHJvdXRlci51cmw7XG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBOYXZpZ2F0aW9uRW5kKSA9PiB7XG4gICAgICAgIHRoaXMudXJsID0gZXZlbnQudXJsQWZ0ZXJSZWRpcmVjdHM7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNlcnZpY2UudGVtcGxhdGVTdGF0ZSQuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVTdGF0ZSA9IHN0YXRlO1xuICAgICAgdGhpcy5jdXN0b21UZW1wbGF0ZSA9IHRoaXMuc2VydmljZS50ZW1wbGF0ZTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmNvbmZpZ3MgfHwgY2hhbmdlcy5ncm91cHMpIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxDb25maWdzID1cbiAgICAgICAgdGhpcy5jb25maWdzID8/XG4gICAgICAgIHRoaXMuZ3JvdXBzPy5yZWR1Y2UoXG4gICAgICAgICAgKGFjYywgZ3JvdXApID0+IGFjYy5jb25jYXQoZ3JvdXAuaXRlbXMpLFxuICAgICAgICAgIFtdIGFzIE5hdkl0ZW1Db25maWdbXSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZUFjdGl2YXRlZFBhdGgoKTtcbiAgfVxuXG4gIGlzU2FtZVVybChsaW5rOiBOYXZJdGVtQ29uZmlnWydyb3V0ZXJMaW5rJ10pOiBib29sZWFuIHtcbiAgICBjb25zdCByZXN0ID0gdGhpcy5yZXN0Tm9kZShsaW5rKTtcbiAgICByZXR1cm4gcmVzdC5sZW5ndGggPT09IDAgfHwgcmVzdCA9PT0gJ2xpc3QnO1xuICB9XG5cbiAgc3ViSXRlbXMoKTogQXJyYXk8e1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB0cmFuc2xhdGU/OiBib29sZWFuO1xuICAgIHJvdXRlckxpbms/OiBOYXZJdGVtQ29uZmlnWydyb3V0ZXJMaW5rJ107XG4gIH0+IHtcbiAgICBpZiAoIXRoaXMuYWN0aXZhdGVkUGF0aD8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJvdXRlckxpbmsgPSB0aGlzLmFjdGl2YXRlZFBhdGguYXQoLTEpLnJvdXRlckxpbms7XG5cbiAgICBjb25zdCByZXN0ID0gdGhpcy5yZXN0Tm9kZShyb3V0ZXJMaW5rKVxuICAgICAgLnNwbGl0KCcvJylcbiAgICAgIC5maWx0ZXIodiA9PiAhIXYpO1xuXG4gICAgaWYgKHRoaXMuX3N1Ykl0ZW1zKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9zdWJJdGVtcyhyZXN0LCByb3V0ZXJMaW5rKTtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocmVzdC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgaWYgKHJlc3QubGVuZ3RoID09PSAxKSB7XG4gICAgICBpZiAocmVzdFswXSA9PT0gJ2xpc3QnKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXN0WzBdID09PSAnY3JlYXRlJykge1xuICAgICAgICByZXR1cm4gW3sgbmFtZTogJ2NyZWF0ZScsIHRyYW5zbGF0ZTogdHJ1ZSB9XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocmVzdC5sZW5ndGggPT09IDIgJiYgcmVzdFswXSA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiByZXN0WzFdLFxuICAgICAgICAgIHJvdXRlckxpbms6IHJvdXRlckxpbmsuY29uY2F0KFsnZGV0YWlsJywgcmVzdFsxXV0pLFxuICAgICAgICB9LFxuICAgICAgICB7IG5hbWU6ICd1cGRhdGUnLCB0cmFuc2xhdGU6IHRydWUgfSxcbiAgICAgIF07XG4gICAgfVxuICAgIGlmIChyZXN0Lmxlbmd0aCA9PT0gMiAmJiByZXN0WzBdID09PSAnZGV0YWlsJykge1xuICAgICAgcmV0dXJuIFt7IG5hbWU6IHJlc3RbMV0gfV07XG4gICAgfVxuXG4gICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiVVJMIGNhbid0IG1hdGNoIGFueSBkZWZhdWx0IGJyZWFkY3J1bWI6XCIsIHRoaXMudXJsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gW107XG4gIH1cblxuICByb290UGF0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5saW5rVG9VcmwodGhpcy5hY3RpdmF0ZWRQYXRoLmF0KC0xKS5yb3V0ZXJMaW5rKTtcbiAgfVxuXG4gIGxvYWRMb3R0aWVKc29uKGljb246IHN0cmluZykge1xuICAgIGNvbnN0IGRhdGEgPSBzaWduYWw8dW5rbm93bj4obnVsbCk7XG5cbiAgICBmZXRjaChpY29uKVxuICAgICAgLnRoZW4ocmVzID0+IHJlcy5qc29uKCkpXG4gICAgICAudGhlbihqc29uID0+IHtcbiAgICAgICAgZGF0YS5zZXQoanNvbik7XG4gICAgICB9KTtcblxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVBY3RpdmF0ZWRQYXRoKCkge1xuICAgIHRoaXMuYWN0aXZhdGVkUGF0aCA9XG4gICAgICB0aGlzLmFjdGl2YXRlZEtleSAmJiB0aGlzLmludGVybmFsQ29uZmlnc1xuICAgICAgICA/IGZpbmROYXZQYXRoPE5hdkl0ZW1Db25maWc+KGl0ZW0gPT4gaXRlbS5rZXkgPT09IHRoaXMuYWN0aXZhdGVkS2V5KShcbiAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxDb25maWdzLFxuICAgICAgICAgIClcbiAgICAgICAgOiBbXTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzdE5vZGUobGluazogTmF2SXRlbUNvbmZpZ1sncm91dGVyTGluayddKSB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5saW5rVG9VcmwobGluayk7XG4gICAgaWYgKCF0aGlzLnVybC5zdGFydHNXaXRoKHVybCkpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgY29uc3QgZW5kSW5kZXggPSBmaW5kSW5kZXgoYyA9PiBjID09PSAnPycgfHwgYyA9PT0gJyMnLCB0aGlzLnVybCk7XG4gICAgcmV0dXJuIHRoaXMudXJsLnNsaWNlKFxuICAgICAgdXJsLmxlbmd0aCArIDEsXG4gICAgICBlbmRJbmRleCA9PT0gLTEgPyB0aGlzLnVybC5sZW5ndGggOiBlbmRJbmRleCxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBsaW5rVG9VcmwobGluazogTmF2SXRlbUNvbmZpZ1sncm91dGVyTGluayddKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbGluay5yZWR1Y2VSaWdodDxzdHJpbmc+KChhY2MsIGN1cnIpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgY3VyciA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAnOycgK1xuICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGN1cnIgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPilcbiAgICAgICAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCR7a2V5fT0ke3ZhbHVlfWApXG4gICAgICAgICAgICAuam9pbignJykgK1xuICAgICAgICAgIGFjY1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGN1cnIuc3RhcnRzV2l0aCgnLycpID8gY3VyciArIGFjYyA6ICcvJyArIGN1cnIgKyBhY2M7XG4gICAgfSwgJycpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmRJbmRleChjb21wYXJlOiAodjogc3RyaW5nKSA9PiBib29sZWFuLCB2YWx1ZTogc3RyaW5nKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoY29tcGFyZSh2YWx1ZS5jaGFyQXQoaSkpKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gLTE7XG59XG4iLCJAaWYgKGFjdGl2YXRlZFBhdGg/Lmxlbmd0aCkge1xuICA8YXVpLWJyZWFkY3J1bWI+XG4gICAgQGZvciAoaXRlbSBvZiBhY3RpdmF0ZWRQYXRoOyB0cmFjayBpdGVtLmtleTsgbGV0IGluZGV4ID0gJGluZGV4KSB7XG4gICAgICA8YXVpLWJyZWFkY3J1bWItaXRlbT5cbiAgICAgICAgQGlmIChpdGVtLnJvdXRlckxpbmsgJiYgIWlzU2FtZVVybChpdGVtLnJvdXRlckxpbmspKSB7XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIGNsYXNzPVwiaXRlbVwiXG4gICAgICAgICAgICBbcm91dGVyTGlua109XCJpdGVtLnJvdXRlckxpbmtcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiaWNvbjsgY29udGV4dDogeyBpdGVtLCBpbkxpbms6IHRydWUgfVwiXG4gICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0ubGFiZWwgfHwgKGl0ZW0ubmFtZSB8IHRyYW5zbGF0ZSkgfX08L3NwYW4+XG4gICAgICAgICAgPC9hPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIml0ZW1cIj5cbiAgICAgICAgICAgIEBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiaWNvbjsgY29udGV4dDogeyBpdGVtLCBpbkxpbms6IGZhbHNlIH1cIlxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8c3Bhbj57eyBpdGVtLmxhYmVsIHx8IChpdGVtLm5hbWUgfCB0cmFuc2xhdGUpIH19PC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgPC9hdWktYnJlYWRjcnVtYi1pdGVtPlxuICAgIH1cbiAgICBAaWYgKGN1c3RvbVRlbXBsYXRlU3RhdGUgPT09ICdyZWFkeScpIHtcbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tVGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvb3RQYXRoKCkgfVwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgfVxuICAgIEBpZiAoY3VzdG9tVGVtcGxhdGVTdGF0ZSAhPT0gJ2luaXRpYWxpbmcnICYmICFjdXN0b21UZW1wbGF0ZSkge1xuICAgICAgQGZvciAoaXRlbSBvZiBzdWJJdGVtcygpOyB0cmFjayBpdGVtLm5hbWUpIHtcbiAgICAgICAgPGF1aS1icmVhZGNydW1iLWl0ZW0+XG4gICAgICAgICAgQGlmIChpdGVtLnJvdXRlckxpbmspIHtcbiAgICAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIml0ZW0ucm91dGVyTGlua1wiPnt7XG4gICAgICAgICAgICAgIGl0ZW0udHJhbnNsYXRlID8gKGl0ZW0ubmFtZSB8IHRyYW5zbGF0ZSkgOiBpdGVtLm5hbWVcbiAgICAgICAgICAgIH19PC9hPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHNwYW4+e3tcbiAgICAgICAgICAgICAgaXRlbS50cmFuc2xhdGUgPyAoaXRlbS5uYW1lIHwgdHJhbnNsYXRlKSA6IGl0ZW0ubmFtZVxuICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L2F1aS1icmVhZGNydW1iLWl0ZW0+XG4gICAgICB9XG4gICAgfVxuICA8L2F1aS1icmVhZGNydW1iPlxufVxuXG48bmctdGVtcGxhdGVcbiAgI2ljb25cbiAgbGV0LWl0ZW09XCJpdGVtXCJcbiAgbGV0LWluTGluaz1cImluTGlua1wiXG4+XG4gIEBpZiAoaXRlbS5pY29uICYmIGFuaW1EYXRhTWFwW2l0ZW0uaWNvbl0pIHtcbiAgICA8YWNsLW5hdi1sb3R0aWUtaWNvblxuICAgICAgW2ZyYW1lXT1cImluTGluayA/IC0xIDogMFwiXG4gICAgICBbYW5pbURhdGFdPVwiYW5pbURhdGFNYXBbaXRlbS5pY29uXVwiXG4gICAgPjwvYWNsLW5hdi1sb3R0aWUtaWNvbj5cbiAgfSBAZWxzZSBpZiAoaXRlbS5pY29uTG90dGllSnNvbikge1xuICAgIEBpZiAoaXRlbS5pY29uTG90dGllSnNvbiB8IHB1cmU6IGxvYWRMb3R0aWVKc29uOyBhcyBhbmltRGF0YSkge1xuICAgICAgPGFjbC1uYXYtbG90dGllLWljb25cbiAgICAgICAgW2ZyYW1lXT1cImluTGluayA/IC0xIDogMFwiXG4gICAgICAgIFthbmltRGF0YV09XCJhbmltRGF0YSgpXCJcbiAgICAgID48L2FjbC1uYXYtbG90dGllLWljb24+XG4gICAgfVxuICB9IEBlbHNlIGlmIChpdGVtLmljb25JbWdTcmMpIHtcbiAgICA8aW1nIFtzcmNdPVwiaXRlbS5pY29uSW1nU3JjIHwgYWNsU2FuaXRpemU6ICd1cmwnXCIgLz5cbiAgfSBAZWxzZSBpZiAoaXRlbS5pY29uSW1nRGF0YSB8fCBpdGVtLmljb25EYXRhKSB7XG4gICAgPGltZ1xuICAgICAgW3NyY109XCJcbiAgICAgICAgaXRlbS5pY29uSW1nRGF0YSB8fCBpdGVtLmljb25EYXRhIHwgYWNsSW1hZ2VIZWFkZXIgfCBhY2xTYW5pdGl6ZTogJ3VybCdcbiAgICAgIFwiXG4gICAgLz5cbiAgfSBAZWxzZSBpZiAoaXRlbS5pY29uU3RhdGljKSB7XG4gICAgPGF1aS1pY29uIFtpY29uXT1cIml0ZW0uaWNvblN0YXRpY1wiPjwvYXVpLWljb24+XG4gIH0gQGVsc2Uge1xuICAgIDxhY2wtbmF2LWxvdHRpZS1pY29uXG4gICAgICBbZnJhbWVdPVwiaW5MaW5rID8gLTEgOiAwXCJcbiAgICAgIFthbmltRGF0YV09XCJhbmltRGF0YU1hcC5wcm9kdWN0XCJcbiAgICA+PC9hY2wtbmF2LWxvdHRpZS1pY29uPlxuICB9XG48L25nLXRlbXBsYXRlPlxuIl19
375
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvcGFnZS1zY2FmZm9sZC9uYXZpZ2F0aW9uL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvcGFnZS1zY2FmZm9sZC9uYXZpZ2F0aW9uL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBQ0wsU0FBUyxFQUdULE1BQU0sRUFHTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU5QixPQUFPLEVBQ0wsYUFBYSxFQUNiLFFBQVEsRUFDUixZQUFZLEdBRWIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxXQUFXLE1BQU0sZ0NBQWdDLENBQUM7QUFFekQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFdkMsT0FBTyxFQUNMLGlC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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyZWFkY3J1bWJNb2R1bGUsIEljb25Db21wb25lbnQgfSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBpc0Rldk1vZGUsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBzaWduYWwsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyLCBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBJbWdIZWFkZXJQaXBlLFxuICBQdXJlUGlwZSxcbiAgU2FuaXRpemVQaXBlLFxuICBTdHJpbmdNYXAsXG59IGZyb20gJy4uLy4uLy4uL2NvcmUvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBHcmlkTGF5b3V0TW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vZ3JpZC1sYXlvdXQvbW9kdWxlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9wdWJsaWMtYXBpJztcbmltcG9ydCBhbmltRGF0YU1hcCBmcm9tICcuLi9sb3R0aWUtaWNvbnMvYW5pbWF0aW9uLWRhdGEnO1xuaW1wb3J0IHsgTmF2R3JvdXBDb25maWcsIE5hdkl0ZW1Db25maWcgfSBmcm9tICcuLi9uYXYtbWVudS9wdWJsaWMtYXBpJztcbmltcG9ydCB7IE5hdkxvdHRpZUljb25EaXJlY3RpdmUgfSBmcm9tICcuLi9wdWJsaWMtYXBpJztcbmltcG9ydCB7IGZpbmROYXZQYXRoIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5pbXBvcnQge1xuICBCcmVhZGNydW1iU2VydmljZSxcbiAgQnJlYWRjcnVtYlRlbXBsYXRlU3RhdGUsXG59IGZyb20gJy4vYnJlYWRjcnVtYi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNsLWJyZWFkY3J1bWInLFxuICB0ZW1wbGF0ZVVybDogJy4vYnJlYWRjcnVtYi50ZW1wbGF0ZS5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYnJlYWRjcnVtYi5zdHlsZS5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQnJlYWRjcnVtYk1vZHVsZSxcbiAgICBSb3V0ZXJMaW5rLFxuICAgIE5hdkxvdHRpZUljb25EaXJlY3RpdmUsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBUcmFuc2xhdGVQaXBlLFxuICAgIEdyaWRMYXlvdXRNb2R1bGUsXG4gICAgU2FuaXRpemVQaXBlLFxuICAgIEltZ0hlYWRlclBpcGUsXG4gICAgSWNvbkNvbXBvbmVudCxcbiAgICBQdXJlUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQnJlYWRjcnVtYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgYW5pbURhdGFNYXAgPSBhbmltRGF0YU1hcDtcblxuICBASW5wdXQoKVxuICBjb25maWdzOiBOYXZJdGVtQ29uZmlnW107XG5cbiAgQElucHV0KClcbiAgZ3JvdXBzOiBOYXZHcm91cENvbmZpZ1tdO1xuXG4gIEBJbnB1dCgpXG4gIGFjdGl2YXRlZEtleTogc3RyaW5nO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gIEBJbnB1dCgnc3ViSXRlbXMnKVxuICBfc3ViSXRlbXM6IChcbiAgICByZXN0OiBzdHJpbmdbXSxcbiAgICBsYXN0Um91dGVMaW5rOiBBcnJheTxzdHJpbmcgfCBTdHJpbmdNYXA+LFxuICApID0+IEFycmF5PHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdHJhbnNsYXRlPzogYm9vbGVhbjtcbiAgICByb3V0ZXJMaW5rPzogTmF2SXRlbUNvbmZpZ1sncm91dGVyTGluayddO1xuICB9PiB8IHZvaWQ7XG5cbiAgQFZpZXdDaGlsZCgnaWNvbicpXG4gIGljb25SZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIGFjdGl2YXRlZFBhdGg6IE5hdkl0ZW1Db25maWdbXTtcbiAgY3VzdG9tVGVtcGxhdGVTdGF0ZTogQnJlYWRjcnVtYlRlbXBsYXRlU3RhdGU7XG4gIGN1c3RvbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBwcml2YXRlIGludGVybmFsQ29uZmlnczogTmF2SXRlbUNvbmZpZ1tdID0gW107XG4gIHByaXZhdGUgdXJsOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXJ2aWNlOiBCcmVhZGNydW1iU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy51cmwgPSByb3V0ZXIudXJsO1xuICAgIHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogTmF2aWdhdGlvbkVuZCkgPT4ge1xuICAgICAgICB0aGlzLnVybCA9IGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZXJ2aWNlLnRlbXBsYXRlU3RhdGUkLnN1YnNjcmliZShzdGF0ZSA9PiB7XG4gICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlU3RhdGUgPSBzdGF0ZTtcbiAgICAgIHRoaXMuY3VzdG9tVGVtcGxhdGUgPSB0aGlzLnNlcnZpY2UudGVtcGxhdGU7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5jb25maWdzIHx8IGNoYW5nZXMuZ3JvdXBzKSB7XG4gICAgICB0aGlzLmludGVybmFsQ29uZmlncyA9XG4gICAgICAgIHRoaXMuY29uZmlncyA/P1xuICAgICAgICB0aGlzLmdyb3Vwcz8ucmVkdWNlKFxuICAgICAgICAgIChhY2MsIGdyb3VwKSA9PiBhY2MuY29uY2F0KGdyb3VwLml0ZW1zKSxcbiAgICAgICAgICBbXSBhcyBOYXZJdGVtQ29uZmlnW10sXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVBY3RpdmF0ZWRQYXRoKCk7XG4gIH1cblxuICBpc1NhbWVVcmwobGluazogTmF2SXRlbUNvbmZpZ1sncm91dGVyTGluayddKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmVzdCA9IHRoaXMucmVzdE5vZGUobGluayk7XG4gICAgcmV0dXJuIHJlc3QubGVuZ3RoID09PSAwIHx8IHJlc3QgPT09ICdsaXN0JztcbiAgfVxuXG4gIHN1Ykl0ZW1zKCk6IEFycmF5PHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdHJhbnNsYXRlPzogYm9vbGVhbjtcbiAgICByb3V0ZXJMaW5rPzogTmF2SXRlbUNvbmZpZ1sncm91dGVyTGluayddO1xuICB9PiB7XG4gICAgaWYgKCF0aGlzLmFjdGl2YXRlZFBhdGg/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCByb3V0ZXJMaW5rID0gdGhpcy5hY3RpdmF0ZWRQYXRoLmF0KC0xKS5yb3V0ZXJMaW5rO1xuXG4gICAgY29uc3QgcmVzdCA9IHRoaXMucmVzdE5vZGUocm91dGVyTGluaylcbiAgICAgIC5zcGxpdCgnLycpXG4gICAgICAuZmlsdGVyKHYgPT4gISF2KTtcblxuICAgIGlmICh0aGlzLl9zdWJJdGVtcykge1xuICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fc3ViSXRlbXMocmVzdCwgcm91dGVyTGluayk7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJlc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGlmIChyZXN0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgaWYgKHJlc3RbMF0gPT09ICdsaXN0Jykge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBpZiAocmVzdFswXSA9PT0gJ2NyZWF0ZScpIHtcbiAgICAgICAgcmV0dXJuIFt7IG5hbWU6ICdjcmVhdGUnLCB0cmFuc2xhdGU6IHRydWUgfV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJlc3QubGVuZ3RoID09PSAyICYmIHJlc3RbMF0gPT09ICd1cGRhdGUnKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogcmVzdFsxXSxcbiAgICAgICAgICByb3V0ZXJMaW5rOiByb3V0ZXJMaW5rLmNvbmNhdChbJ2RldGFpbCcsIHJlc3RbMV1dKSxcbiAgICAgICAgfSxcbiAgICAgICAgeyBuYW1lOiAndXBkYXRlJywgdHJhbnNsYXRlOiB0cnVlIH0sXG4gICAgICBdO1xuICAgIH1cbiAgICBpZiAocmVzdC5sZW5ndGggPT09IDIgJiYgcmVzdFswXSA9PT0gJ2RldGFpbCcpIHtcbiAgICAgIHJldHVybiBbeyBuYW1lOiByZXN0WzFdIH1dO1xuICAgIH1cblxuICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgY29uc29sZS5lcnJvcihcIlVSTCBjYW4ndCBtYXRjaCBhbnkgZGVmYXVsdCBicmVhZGNydW1iOlwiLCB0aGlzLnVybCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcm9vdFBhdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZhdGVkUGF0aD8uYXQoLTEpXG4gICAgICA/IHRoaXMubGlua1RvVXJsKHRoaXMuYWN0aXZhdGVkUGF0aC5hdCgtMSkucm91dGVyTGluaylcbiAgICAgIDogJy8nO1xuICB9XG5cbiAgbG9hZExvdHRpZUpzb24oaWNvbjogc3RyaW5nKSB7XG4gICAgY29uc3QgZGF0YSA9IHNpZ25hbDx1bmtub3duPihudWxsKTtcblxuICAgIGZldGNoKGljb24pXG4gICAgICAudGhlbihyZXMgPT4gcmVzLmpzb24oKSlcbiAgICAgIC50aGVuKGpzb24gPT4ge1xuICAgICAgICBkYXRhLnNldChqc29uKTtcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUFjdGl2YXRlZFBhdGgoKSB7XG4gICAgdGhpcy5hY3RpdmF0ZWRQYXRoID1cbiAgICAgIHRoaXMuYWN0aXZhdGVkS2V5ICYmIHRoaXMuaW50ZXJuYWxDb25maWdzXG4gICAgICAgID8gZmluZE5hdlBhdGg8TmF2SXRlbUNvbmZpZz4oaXRlbSA9PiBpdGVtLmtleSA9PT0gdGhpcy5hY3RpdmF0ZWRLZXkpKFxuICAgICAgICAgICAgdGhpcy5pbnRlcm5hbENvbmZpZ3MsXG4gICAgICAgICAgKVxuICAgICAgICA6IFtdO1xuICB9XG5cbiAgcHJpdmF0ZSByZXN0Tm9kZShsaW5rOiBOYXZJdGVtQ29uZmlnWydyb3V0ZXJMaW5rJ10pIHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmxpbmtUb1VybChsaW5rKTtcbiAgICBpZiAoIXRoaXMudXJsLnN0YXJ0c1dpdGgodXJsKSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBjb25zdCBlbmRJbmRleCA9IGZpbmRJbmRleChjID0+IGMgPT09ICc/JyB8fCBjID09PSAnIycsIHRoaXMudXJsKTtcbiAgICByZXR1cm4gdGhpcy51cmwuc2xpY2UoXG4gICAgICB1cmwubGVuZ3RoICsgMSxcbiAgICAgIGVuZEluZGV4ID09PSAtMSA/IHRoaXMudXJsLmxlbmd0aCA6IGVuZEluZGV4LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGxpbmtUb1VybChsaW5rOiBOYXZJdGVtQ29uZmlnWydyb3V0ZXJMaW5rJ10pOiBzdHJpbmcge1xuICAgIHJldHVybiBsaW5rLnJlZHVjZVJpZ2h0PHN0cmluZz4oKGFjYywgY3VycikgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBjdXJyID09PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICc7JyArXG4gICAgICAgICAgT2JqZWN0LmVudHJpZXMoY3VyciBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KVxuICAgICAgICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJHtrZXl9PSR7dmFsdWV9YClcbiAgICAgICAgICAgIC5qb2luKCcnKSArXG4gICAgICAgICAgYWNjXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY3Vyci5zdGFydHNXaXRoKCcvJykgPyBjdXJyICsgYWNjIDogJy8nICsgY3VyciArIGFjYztcbiAgICB9LCAnJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmluZEluZGV4KGNvbXBhcmU6ICh2OiBzdHJpbmcpID0+IGJvb2xlYW4sIHZhbHVlOiBzdHJpbmcpIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChjb21wYXJlKHZhbHVlLmNoYXJBdChpKSkpIHtcbiAgICAgIHJldHVybiBpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAtMTtcbn1cbiIsIjxhdWktYnJlYWRjcnVtYj5cbiAgQGlmIChhY3RpdmF0ZWRQYXRoPy5sZW5ndGgpIHtcbiAgICBAZm9yIChpdGVtIG9mIGFjdGl2YXRlZFBhdGg7IHRyYWNrIGl0ZW0ua2V5OyBsZXQgaW5kZXggPSAkaW5kZXgpIHtcbiAgICAgIDxhdWktYnJlYWRjcnVtYi1pdGVtPlxuICAgICAgICBAaWYgKGl0ZW0ucm91dGVyTGluayAmJiAhaXNTYW1lVXJsKGl0ZW0ucm91dGVyTGluaykpIHtcbiAgICAgICAgICA8YVxuICAgICAgICAgICAgY2xhc3M9XCJpdGVtXCJcbiAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIml0ZW0ucm91dGVyTGlua1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgQGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpY29uOyBjb250ZXh0OiB7IGl0ZW0sIGluTGluazogdHJ1ZSB9XCJcbiAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPHNwYW4+e3sgaXRlbS5sYWJlbCB8fCAoaXRlbS5uYW1lIHwgdHJhbnNsYXRlKSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXRlbVwiPlxuICAgICAgICAgICAgQGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpY29uOyBjb250ZXh0OiB7IGl0ZW0sIGluTGluazogZmFsc2UgfVwiXG4gICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0ubGFiZWwgfHwgKGl0ZW0ubmFtZSB8IHRyYW5zbGF0ZSkgfX08L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICB9XG4gICAgICA8L2F1aS1icmVhZGNydW1iLWl0ZW0+XG4gICAgfVxuICB9XG4gIEBpZiAoY3VzdG9tVGVtcGxhdGVTdGF0ZSA9PT0gJ3JlYWR5Jykge1xuICAgIDxuZy1jb250YWluZXJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbVRlbXBsYXRlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm9vdFBhdGgoKSB9XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gIH1cbiAgQGlmIChjdXN0b21UZW1wbGF0ZVN0YXRlICE9PSAnaW5pdGlhbGluZycgJiYgIWN1c3RvbVRlbXBsYXRlKSB7XG4gICAgQGZvciAoaXRlbSBvZiBzdWJJdGVtcygpOyB0cmFjayBpdGVtLm5hbWUpIHtcbiAgICAgIDxhdWktYnJlYWRjcnVtYi1pdGVtPlxuICAgICAgICBAaWYgKGl0ZW0ucm91dGVyTGluaykge1xuICAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIml0ZW0ucm91dGVyTGlua1wiPnt7XG4gICAgICAgICAgICBpdGVtLnRyYW5zbGF0ZSA/IChpdGVtLm5hbWUgfCB0cmFuc2xhdGUpIDogaXRlbS5uYW1lXG4gICAgICAgICAgfX08L2E+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxzcGFuPnt7XG4gICAgICAgICAgICBpdGVtLnRyYW5zbGF0ZSA/IChpdGVtLm5hbWUgfCB0cmFuc2xhdGUpIDogaXRlbS5uYW1lXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIH1cbiAgICAgIDwvYXVpLWJyZWFkY3J1bWItaXRlbT5cbiAgICB9XG4gIH1cbjwvYXVpLWJyZWFkY3J1bWI+XG5cbjxuZy10ZW1wbGF0ZVxuICAjaWNvblxuICBsZXQtaXRlbT1cIml0ZW1cIlxuICBsZXQtaW5MaW5rPVwiaW5MaW5rXCJcbj5cbiAgQGlmIChpdGVtLmljb24gJiYgYW5pbURhdGFNYXBbaXRlbS5pY29uXSkge1xuICAgIDxhY2wtbmF2LWxvdHRpZS1pY29uXG4gICAgICBbZnJhbWVdPVwiaW5MaW5rID8gLTEgOiAwXCJcbiAgICAgIFthbmltRGF0YV09XCJhbmltRGF0YU1hcFtpdGVtLmljb25dXCJcbiAgICA+PC9hY2wtbmF2LWxvdHRpZS1pY29uPlxuICB9IEBlbHNlIGlmIChpdGVtLmljb25Mb3R0aWVKc29uKSB7XG4gICAgQGlmIChpdGVtLmljb25Mb3R0aWVKc29uIHwgcHVyZTogbG9hZExvdHRpZUpzb247IGFzIGFuaW1EYXRhKSB7XG4gICAgICA8YWNsLW5hdi1sb3R0aWUtaWNvblxuICAgICAgICBbZnJhbWVdPVwiaW5MaW5rID8gLTEgOiAwXCJcbiAgICAgICAgW2FuaW1EYXRhXT1cImFuaW1EYXRhKClcIlxuICAgICAgPjwvYWNsLW5hdi1sb3R0aWUtaWNvbj5cbiAgICB9XG4gIH0gQGVsc2UgaWYgKGl0ZW0uaWNvbkltZ1NyYykge1xuICAgIDxpbWcgW3NyY109XCJpdGVtLmljb25JbWdTcmMgfCBhY2xTYW5pdGl6ZTogJ3VybCdcIiAvPlxuICB9IEBlbHNlIGlmIChpdGVtLmljb25JbWdEYXRhIHx8IGl0ZW0uaWNvbkRhdGEpIHtcbiAgICA8aW1nXG4gICAgICBbc3JjXT1cIlxuICAgICAgICBpdGVtLmljb25JbWdEYXRhIHx8IGl0ZW0uaWNvbkRhdGEgfCBhY2xJbWFnZUhlYWRlciB8IGFjbFNhbml0aXplOiAndXJsJ1xuICAgICAgXCJcbiAgICAvPlxuICB9IEBlbHNlIGlmIChpdGVtLmljb25TdGF0aWMpIHtcbiAgICA8YXVpLWljb24gW2ljb25dPVwiaXRlbS5pY29uU3RhdGljXCI+PC9hdWktaWNvbj5cbiAgfSBAZWxzZSB7XG4gICAgPGFjbC1uYXYtbG90dGllLWljb25cbiAgICAgIFtmcmFtZV09XCJpbkxpbmsgPyAtMSA6IDBcIlxuICAgICAgW2FuaW1EYXRhXT1cImFuaW1EYXRhTWFwLnByb2R1Y3RcIlxuICAgID48L2FjbC1uYXYtbG90dGllLWljb24+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -7,7 +7,7 @@ import { HttpClient } from '@angular/common/http';
7
7
  import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';
8
8
  import { concat, of, combineLatest, filter, map, shareReplay, switchMap, tap, } from 'rxjs';
9
9
  import { K8sApiService } from '../../../api/k8s-api.service';
10
- import { parse, skipError } from '../../../core/public-api';
10
+ import { parse, parseJson, skipError, } from '../../../core/public-api';
11
11
  import { TranslateService } from '../../../translate/public-api';
12
12
  import { filterNavTrees, mapNavTrees } from '../utils';
13
13
  import * as i0 from "@angular/core";
@@ -122,8 +122,8 @@ export class NavConfigLoaderService {
122
122
  .pipe(map(cm => {
123
123
  try {
124
124
  return {
125
- buildIn: JSON.parse(cm.data?.buildIn || null) || {},
126
- customs: JSON.parse(cm.data?.customs || null) || [],
125
+ buildIn: parseJson(cm.data?.buildIn) || {},
126
+ customs: parseJson(cm.data?.customs) || [],
127
127
  };
128
128
  }
129
129
  catch (e) {
@@ -173,4 +173,4 @@ export class NavConfigLoaderService {
173
173
  }, {
174
174
  type: Optional
175
175
  }] }, { type: i4.K8sApiService }], null); })();
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2Y29uZmlnLWxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3BhZ2Utc2NhZmZvbGQvbmF2aWdhdGlvbi9uYXZjb25maWctbG9hZGVyL25hdmNvbmZpZy1sb2FkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUVMLE1BQU0sRUFDTixFQUFFLEVBQ0YsYUFBYSxFQUNiLE1BQU0sRUFDTixHQUFHLEVBQ0gsV0FBVyxFQUNYLFNBQVMsRUFDVCxHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFzQixLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7OztBQXlCdkQsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsSUFBSSxjQUFjLENBQzVELDhCQUE4QixDQUMvQixDQUFDO0FBSUYsTUFBTSxVQUFVLEdBQUcsQ0FDakIsSUFBcUIsRUFDckIsTUFBcUMsRUFDcEIsRUFBRSxDQUNuQixJQUFJO0tBQ0QsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO0lBQ1YsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUks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c0NvbnRlbnQiOlsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqIEBtb2R1bGUgbmF2Y29uZmlnLWxvYWRlclxuICovXG5cbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgT2JzZXJ2YWJsZSxcbiAgY29uY2F0LFxuICBvZixcbiAgY29tYmluZUxhdGVzdCxcbiAgZmlsdGVyLFxuICBtYXAsXG4gIHNoYXJlUmVwbGF5LFxuICBzd2l0Y2hNYXAsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEs4c0FwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcGkvazhzLWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IEt1YmVybmV0ZXNSZXNvdXJjZSwgcGFyc2UsIHNraXBFcnJvciB9IGZyb20gJy4uLy4uLy4uL2NvcmUvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdHJhbnNsYXRlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgTmF2R3JvdXBDb25maWcsIE5hdkl0ZW1Db25maWcgfSBmcm9tICcuLi9uYXYtbWVudS9wdWJsaWMtYXBpJztcbmltcG9ydCB7IGZpbHRlck5hdlRyZWVzLCBtYXBOYXZUcmVlcyB9IGZyb20gJy4uL3V0aWxzJztcblxuaW50ZXJmYWNlIE5hdmlnYXRpb25Db25maWdDb25maWdNYXBEYXRhIHtcbiAgYnVpbGRJbjoge1xuICAgIFtuYW1lOiBzdHJpbmddOiB7XG4gICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgaGlkZGVuOiBib29sZWFuO1xuICAgIH07XG4gIH07XG4gIGN1c3RvbXM6IEFycmF5PHtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIGljb24/OiBzdHJpbmc7XG4gICAgaWNvbkRhdGE/OiBzdHJpbmc7XG4gICAgaGlkZGVuOiBib29sZWFuO1xuICAgIGhyZWY6IHN0cmluZztcbiAgfT47XG59XG5cbmludGVyZmFjZSBOYXZpZ2F0aW9uQ29uZmlnQ29uZmlnTWFwIGV4dGVuZHMgS3ViZXJuZXRlc1Jlc291cmNlIHtcbiAgZGF0YToge1xuICAgIGJ1aWxkSW46IHN0cmluZztcbiAgICBjdXN0b21zOiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBOQVZfQ09ORklHX0xPQ0FMX1NUT1JBR0VfS0VZID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oXG4gICduYXYgY29uZmlnIGxvY2FsIHN0b3JhZ2Uga2V5Jyxcbik7XG5cbmV4cG9ydCB0eXBlIE5hdiA9IE5hdkl0ZW1Db25maWcgfCBOYXZHcm91cENvbmZpZztcblxuY29uc3QgY29uZmlnVHJlZSA9IChcbiAgdHJlZTogTmF2SXRlbUNvbmZpZ1tdLFxuICBjb25maWc6IE5hdmlnYXRpb25Db25maWdDb25maWdNYXBEYXRhLFxuKTogTmF2SXRlbUNvbmZpZ1tdID0+XG4gIHRyZWVcbiAgICAubWFwKGl0ZW0gPT4ge1xuICAgICAgaXRlbS5sYWJlbCA9IGNvbmZpZy5idWlsZEluW2l0ZW0ubmFtZV0/LmxhYmVsO1xuICAgICAgcmV0dXJuIGl0ZW0uY2hpbGRyZW4gJiYgIWNvbmZpZy5idWlsZEluW2l0ZW0ubmFtZV0/LmhpZGRlbiAvLyDniLboioLngrnooqsgaGlkZGVuIOi3s+i/hyBjb25maWcg5a2Q6IqC54K5XG4gICAgICAgID8ge1xuICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgIGNoaWxkcmVuOiBjb25maWdUcmVlKGl0ZW0uY2hpbGRyZW4sIGNvbmZpZyksXG4gICAgICAgICAgfVxuICAgICAgICA6IGl0ZW07XG4gICAgfSlcbiAgICAuZmlsdGVyKGl0ZW0gPT4gIWNvbmZpZy5idWlsZEluW2l0ZW0ubmFtZV0/LmhpZGRlbik7IC8vIOi/h+a7pCBoaWRkZW4g6IqC54K5XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBOYXZDb25maWdMb2FkZXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjYWNoZWRDb25maWcgPSBuZXcgTWFwPHN0cmluZywgT2JzZXJ2YWJsZTxzdHJpbmc+PigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBASW5qZWN0KE5BVl9DT05GSUdfTE9DQUxfU1RPUkFHRV9LRVkpXG4gICAgQE9wdGlvbmFsKClcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2FsU3RvcmFnZUtleTogc3RyaW5nID0gJycsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrOHNBcGk6IEs4c0FwaVNlcnZpY2UsXG4gICkge31cblxuICBsb2FkTmF2Q29uZmlnKGFkZHJlc3M6IHN0cmluZykge1xuICAgIGlmICghdGhpcy5jYWNoZWRDb25maWcuaGFzKGFkZHJlc3MpKSB7XG4gICAgICB0aGlzLmNhY2hlZENvbmZpZy5zZXQoYWRkcmVzcywgdGhpcy5idWlsZExvYWRTdHJlYW0oYWRkcmVzcykpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jYWNoZWRDb25maWcuZ2V0KGFkZHJlc3MpO1xuICB9XG5cbiAgbG9hZE5hdlRyZWUoYWRkcmVzczogc3RyaW5nLCBjbUNvbmZpZ05hbWU6IHN0cmluZywgd2l0aEdyb3VwID0gZmFsc2UpIHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmxvYWROYXZDb25maWcoYWRkcmVzcykucGlwZSh0aGlzLnBhcnNlWWFtbCgpKSxcbiAgICAgIHRoaXMubG9hZENtQ29uZmlnKGNtQ29uZmlnTmFtZSksXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW3RyZWUsIGNvbmZpZ10pID0+XG4gICAgICAgIHdpdGhHcm91cFxuICAgICAgICAgID8gdGhpcy5jb25maWdUcmVlV2l0aEdyb3VwKHRyZWUgYXMgTmF2R3JvdXBDb25maWdbXSwgY29uZmlnKVxuICAgICAgICAgIDogdGhpcy5jb25maWdUcmVlKHRyZWUsIGNvbmZpZyksXG4gICAgICApLFxuICAgICAgdGhpcy5tYXBUb0F1aU5hdih3aXRoR3JvdXApLFxuICAgICk7XG4gIH1cblxuICBjb25maWdUcmVlKFxuICAgIHRyZWVJdGVtQ29uZmlnOiBOYXZJdGVtQ29uZmlnW10sXG4gICAgY29uZmlnOiBOYXZpZ2F0aW9uQ29uZmlnQ29uZmlnTWFwRGF0YSxcbiAgKSB7XG4gICAgcmV0dXJuIGZpbHRlck5hdlRyZWVzKHRyZWUgPT4gISh0cmVlLmNoaWxkcmVuICYmICF0cmVlLmNoaWxkcmVuLmxlbmd0aCkpKFxuICAgICAgY29uZmlnVHJlZSh0cmVlSXRlbUNvbmZpZywgY29uZmlnKS5jb25jYXQoXG4gICAgICAgIGNvbmZpZy5jdXN0b21zLmZpbHRlcihpdGVtID0+ICFpdGVtLmhpZGRlbiksIC8vIOa3u+WKoOiHquWumuS5ieeahOW3puWvvOiIqlxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgY29uZmlnVHJlZVdpdGhHcm91cChcbiAgICB0cmVlR3JvdXBDb25maWc6IE5hdkdyb3VwQ29uZmlnW10sXG4gICAgY29uZmlnOiBOYXZpZ2F0aW9uQ29uZmlnQ29uZmlnTWFwRGF0YSxcbiAgKSB7XG4gICAgcmV0dXJuIHRyZWVHcm91cENvbmZpZ1xuICAgICAgLm1hcCh0ID0+ICh7XG4gICAgICAgIC4uLnQsXG4gICAgICAgIGl0ZW1zOiBmaWx0ZXJOYXZUcmVlczxOYXZJdGVtQ29uZmlnPiggLy8g6L+H5ruk5a2Y5Zyo5a2Q6IqC54K577yM5L2G5a2Q6IqC54K55Li656m655qE6IqC54K5XG4gICAgICAgICAgdHJlZSA9PiAhKHRyZWUuY2hpbGRyZW4gJiYgIXRyZWUuY2hpbGRyZW4ubGVuZ3RoKSxcbiAgICAgICAgKShcbiAgICAgICAgICBjb25maWdUcmVlKHQuaXRlbXMsIGNvbmZpZykuY29uY2F0KFxuICAgICAgICAgICAgY29uZmlnLmN1c3RvbXMuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uaGlkZGVuKSwgLy8g5re75Yqg6Ieq5a6a5LmJ55qE5bem5a+86IiqXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgIH0pKVxuICAgICAgLmZpbHRlcihpdGVtID0+IGl0ZW0uaXRlbXMubGVuZ3RoKTtcbiAgfVxuXG4gIHBhcnNlWWFtbCgpIHtcbiAgICByZXR1cm4gbWFwPHN0cmluZywgTmF2W10+KCh5YW1sOiBzdHJpbmcpID0+IHtcbiAgICAgIGxldCBkYXRhOiBOYXZbXSA9IFtdO1xuICAgICAgdHJ5IHtcbiAgICAgICAgZGF0YSA9IHBhcnNlKHlhbWwpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgdGhpcy50b2FzdFBhcnNlRXJyb3IoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH0pO1xuICB9XG5cbiAgbWFwVG9BdWlOYXYod2l0aEdyb3VwID0gZmFsc2UpIHtcbiAgICByZXR1cm4gc3dpdGNoTWFwPE5hdltdLCBPYnNlcnZhYmxlPE5hdltdPj4oaXRlbXMgPT5cbiAgICAgIHRoaXMudHJhbnNsYXRlLmxvY2FsZSQucGlwZShcbiAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICBsZXQgZGF0YTogTmF2W10gPSBbXTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgZGF0YSA9IHdpdGhHcm91cFxuICAgICAgICAgICAgICA/IGl0ZW1zLm1hcChpdGVtID0+ICh7XG4gICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUgPyB0aGlzLnRyYW5zbGF0ZS5nZXQoaXRlbS50aXRsZSkgOiAnJyxcbiAgICAgICAgICAgICAgICAgIGl0ZW1zOiBtYXBOYXZUcmVlcyh0aGlzLm1hcFRvQXVpTmF2SXRlbSkoaXRlbS5pdGVtcyksXG4gICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgIDogbWFwTmF2VHJlZXModGhpcy5tYXBUb0F1aU5hdkl0ZW0pKGl0ZW1zKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgIHRoaXMudG9hc3RQYXJzZUVycm9yKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9KSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gbmFtZVxuICAgKiDliqDovb3lt6blr7zoiKrphY3nva4gdG9kbzog5re75Yqg5paH5qGj6ZO+5o6lXG4gICAqL1xuICBsb2FkQ21Db25maWcobmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgZGVmYXVsdENvbmZpZzogTmF2aWdhdGlvbkNvbmZpZ0NvbmZpZ01hcERhdGEgPSB7XG4gICAgICBidWlsZEluOiB7fSxcbiAgICAgIGN1c3RvbXM6IFtdLFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuazhzQXBpXG4gICAgICAuZ2V0R2xvYmFsUmVzb3VyY2U8TmF2aWdhdGlvbkNvbmZpZ0NvbmZpZ01hcD4oe1xuICAgICAgICBkZWZpbml0aW9uOiB7XG4gICAgICAgICAgdHlwZTogJ2NvbmZpZ21hcHMnLFxuICAgICAgICAgIGFwaVZlcnNpb246ICd2MScsXG4gICAgICAgIH0sXG4gICAgICAgIG5hbWUsXG4gICAgICAgIG5hbWVzcGFjZWQ6IHRydWUsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChjbSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGJ1aWxkSW46IEpTT04ucGFyc2UoY20uZGF0YT8uYnVpbGRJbiB8fCBudWxsKSB8fCB7fSxcbiAgICAgICAgICAgICAgY3VzdG9tczogSlNPTi5wYXJzZShjbS5kYXRhPy5jdXN0b21zIHx8IG51bGwpIHx8IFtdLFxuICAgICAgICAgICAgfSBhcyBOYXZpZ2F0aW9uQ29uZmlnQ29uZmlnTWFwRGF0YTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRDb25maWc7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgc2tpcEVycm9yKGRlZmF1bHRDb25maWcpLFxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRMb2FkU3RyZWFtKHBhdGg6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGNvbmNhdChcbiAgICAgIG9mKHRoaXMuZ2V0TG9jYWwocGF0aCkpLFxuICAgICAgdGhpcy5odHRwXG4gICAgICAgIC5nZXQocGF0aCwge1xuICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnLFxuICAgICAgICAgIGhlYWRlcnM6IHsgJ0NhY2hlLUNvbnRyb2wnOiAnbm8tY2FjaGUnIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRhcChjb25maWcgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRMb2NhbChwYXRoLCBjb25maWcpO1xuICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgICkucGlwZShcbiAgICAgIGZpbHRlcihjb25maWcgPT4gISFjb25maWcpLFxuICAgICAgc2hhcmVSZXBsYXkoMSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgbWFwVG9BdWlOYXZJdGVtID0gKFxuICAgIGl0ZW06IE5hdkl0ZW1Db25maWcsXG4gICAgcGFyZW50czogTmF2SXRlbUNvbmZpZ1tdLFxuICApOiBOYXZJdGVtQ29uZmlnID0+ICh7XG4gICAgLi4uaXRlbSxcbiAgICBjaGlsZHJlbjogbnVsbCxcbiAgICBrZXk6IFsuLi5wYXJlbnRzLm1hcCgoeyBuYW1lIH0pID0+IG5hbWUpLCBpdGVtLm5hbWVdLmpvaW4oJy8nKSxcbiAgICBsYWJlbDogaXRlbS5sYWJlbCB8fCB0aGlzLnRyYW5zbGF0ZS5nZXQoaXRlbS5uYW1lKSxcbiAgfSk7XG5cbiAgcHJpdmF0ZSB0b2FzdFBhcnNlRXJyb3IoKSB7XG4gICAgdGhpcy5ub3RpZmljYXRpb24uZXJyb3IodGhpcy50cmFuc2xhdGUuZ2V0KCduYXZfY29uZmlnX2Vycm9yJykpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2NhbEtleShwYXRoOiBzdHJpbmcpIHtcbiAgICBjb25zdCBub2RlcyA9IHBhdGguc3BsaXQoJy8nKTtcbiAgICByZXR1cm4gYCR7dGhpcy5sb2NhbFN0b3JhZ2VLZXl9LiR7bm9kZXMuYXQoLTEpfWA7XG4gIH1cblxuICBwcml2YXRlIHNldExvY2FsKHBhdGg6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmxvY2FsU3RvcmFnZUtleSkge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5sb2NhbEtleShwYXRoKSwgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG9jYWwocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5sb2NhbFN0b3JhZ2VLZXlcbiAgICAgID8gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5sb2NhbEtleShwYXRoKSkgfHwgJydcbiAgICAgIDogJyc7XG4gIH1cbn1cbiJdfQ==
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2Y29uZmlnLWxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3BhZ2Utc2NhZmZvbGQvbmF2aWdhdGlvbi9uYXZjb25maWctbG9hZGVyL25hdmNvbmZpZy1sb2FkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUVMLE1BQU0sRUFDTixFQUFFLEVBQ0YsYUFBYSxFQUNiLE1BQU0sRUFDTixHQUFHLEVBQ0gsV0FBVyxFQUNYLFNBQVMsRUFDVCxHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUVMLEtBQUssRUFDTCxTQUFTLEVBQ1QsU0FBUyxHQUNWLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7OztBQXlCdkQsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsSUFBSSxjQUFjLENBQzVELDhCQUE4QixDQUMvQixDQUFDO0FBSUYsTUFBTSxVQUFVLEdBQUcsQ0FDakIsSUFBcUIsRUFDckIsTUFBcUMsRUFDcEIsRUFBRSxDQUNuQixJQUFJO0tBQ0QsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO0lBQ1YsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDOUMsT0FBTyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDLDRCQUE0QjtRQUNyRixDQUFDLENBQUM7WUFDRSxHQUFHLElBQUk7WUFDUCxRQUFRLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDO1NBQzVDO1FBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNYLENBQUMsQ0FBQztLQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxlQUFlO0FBS3hFLE1BQU0sT0FBTyxzQkFBc0I7SUFHakMsWUFDbUIsSUFBZ0IsRUFDaEIsU0FBMkIsRUFDM0IsWUFBaUMsRUFHakMsa0JBQTBCLEVBQUUsRUFDNUIsTUFBcUI7UUFOckIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFHakMsb0JBQWUsR0FBZixlQUFlLENBQWE7UUFDNUIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQVR2QixpQkFBWSxHQUFHLElBQUksR0FBRyxFQUE4QixDQUFDO1FBdUpyRCxvQkFBZSxHQUFHLENBQ2pDLElBQW1CLEVBQ25CLE9BQXdCLEVBQ1QsRUFBRSxDQUFDLENBQUM7WUFDbkIsR0FBRyxJQUFJO1lBQ1AsUUFBUSxFQUFFLElBQUk7WUFDZCxHQUFHLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUM5RCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ25ELENBQUMsQ0FBQztJQXJKQSxDQUFDO0lBRUosYUFBYSxDQUFDLE9BQWU7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQWUsRUFBRSxZQUFvQixFQUFFLFNBQVMsR0FBRyxLQUFLO1FBQ2xFLE9BQU8sYUFBYSxDQUFDO1lBQ25CLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNsRCxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQztTQUNoQyxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FDckIsU0FBUztZQUNQLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBd0IsRUFBRSxNQUFNLENBQUM7WUFDNUQsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUNsQyxFQUNELElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQzVCLENBQUM7SUFDSixDQUFDO0lBRUQsVUFBVSxDQUNSLGNBQStCLEVBQy9CLE1BQXFDO1FBRXJDLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQ3RFLFVBQVUsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUN2QyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUM1QyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsbUJBQW1CLENBQ2pCLGVBQWlDLEVBQ2pDLE1BQXFDO1FBRXJDLE9BQU8sZUFBZTthQUNuQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ1QsR0FBRyxDQUFDO1lBQ0osS0FBSyxFQUFFLGNBQWMsQ0FBaUIsb0JBQW9CO1lBQ3hELEFBRG9DLG9CQUFvQjtZQUN4RCxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FDbEQsQ0FDQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQ2hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQzVDLENBQ0Y7U0FDRixDQUFDLENBQUM7YUFDRixNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxHQUFHLENBQWdCLENBQUMsSUFBWSxFQUFFLEVBQUU7WUFDekMsSUFBSSxJQUFJLEdBQVUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQztnQkFDSCxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JCLENBQUM7WUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsU0FBUyxHQUFHLEtBQUs7UUFDM0IsT0FBTyxTQUFTLENBQTJCLEtBQUssQ0FBQyxFQUFFLENBQ2pELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDekIsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLElBQUksSUFBSSxHQUFVLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUM7Z0JBQ0gsSUFBSSxHQUFHLFNBQVM7b0JBQ2QsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUNqQixHQUFHLElBQUk7d0JBQ1AsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDdkQsS0FBSyxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztxQkFDckQsQ0FBQyxDQUFDO29CQUNMLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9DLENBQUM7WUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FDSCxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsWUFBWSxDQUFDLElBQVk7UUFDdkIsTUFBTSxhQUFhLEdBQWtDO1lBQ25ELE9BQU8sRUFBRSxFQUFFO1lBQ1gsT0FBTyxFQUFFLEVBQUU7U0FDWixDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsTUFBTTthQUNmLGlCQUFpQixDQUE0QjtZQUM1QyxVQUFVLEVBQUU7Z0JBQ1YsSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLFVBQVUsRUFBRSxJQUFJO2FBQ2pCO1lBQ0QsSUFBSTtZQUNKLFVBQVUsRUFBRSxJQUFJO1NBQ2pCLENBQUM7YUFDRCxJQUFJLENBQ0gsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ1AsSUFBSSxDQUFDO2dCQUNILE9BQU87b0JBQ0wsT0FBTyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUU7b0JBQzFDLE9BQU8sRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFO2lCQUNWLENBQUM7WUFDckMsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDakIsT0FBTyxhQUFhLENBQUM7WUFDdkIsQ0FBQztRQUNILENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FDekIsQ0FBQztJQUNOLENBQUM7SUFFTyxlQUFlLENBQUMsSUFBWTtRQUNsQyxPQUFPLE1BQU0sQ0FDWCxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUN2QixJQUFJLENBQUMsSUFBSTthQUNOLEdBQUcsQ0FBQyxJQUFJLEVBQUU7WUFDVCxZQUFZLEVBQUUsTUFBTTtZQUNwQixPQUFPLEVBQUUsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFO1NBQ3pDLENBQUM7YUFDRCxJQUFJLENBQ0gsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ1gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQ0gsQ0FDSixDQUFDLElBQUksQ0FDSixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQzFCLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO0lBQ0osQ0FBQztJQVlPLGVBQWU7UUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTyxRQUFRLENBQUMsSUFBWTtRQUMzQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFTyxRQUFRLENBQUMsSUFBWSxFQUFFLEtBQWE7UUFDMUMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ25ELENBQUM7SUFDSCxDQUFDO0lBRU8sUUFBUSxDQUFDLElBQVk7UUFDM0IsT0FBTyxJQUFJLENBQUMsZUFBZTtZQUN6QixDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRTtZQUNqRCxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ1QsQ0FBQzt1RkFyTFUsc0JBQXNCLGlIQU92Qiw0QkFBNEI7dUVBUDNCLHNCQUFzQixXQUF0QixzQkFBc0IsbUJBRnJCLE1BQU07O2lGQUVQLHNCQUFzQjtjQUhsQyxVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7O3NCQVFJLE1BQU07dUJBQUMsNEJBQTRCOztzQkFDbkMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKiBAbW9kdWxlIG5hdmNvbmZpZy1sb2FkZXJcbiAqL1xuXG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFsYXVkYS91aSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE9ic2VydmFibGUsXG4gIGNvbmNhdCxcbiAgb2YsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBzaGFyZVJlcGxheSxcbiAgc3dpdGNoTWFwLFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBLOHNBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXBpL2s4cy1hcGkuc2VydmljZSc7XG5pbXBvcnQge1xuICBLdWJlcm5ldGVzUmVzb3VyY2UsXG4gIHBhcnNlLFxuICBwYXJzZUpzb24sXG4gIHNraXBFcnJvcixcbn0gZnJvbSAnLi4vLi4vLi4vY29yZS9wdWJsaWMtYXBpJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi90cmFuc2xhdGUvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBOYXZHcm91cENvbmZpZywgTmF2SXRlbUNvbmZpZyB9IGZyb20gJy4uL25hdi1tZW51L3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgZmlsdGVyTmF2VHJlZXMsIG1hcE5hdlRyZWVzIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5pbnRlcmZhY2UgTmF2aWdhdGlvbkNvbmZpZ0NvbmZpZ01hcERhdGEge1xuICBidWlsZEluOiB7XG4gICAgW25hbWU6IHN0cmluZ106IHtcbiAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgICBoaWRkZW46IGJvb2xlYW47XG4gICAgfTtcbiAgfTtcbiAgY3VzdG9tczogQXJyYXk8e1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgaWNvbj86IHN0cmluZztcbiAgICBpY29uRGF0YT86IHN0cmluZztcbiAgICBoaWRkZW46IGJvb2xlYW47XG4gICAgaHJlZjogc3RyaW5nO1xuICB9Pjtcbn1cblxuaW50ZXJmYWNlIE5hdmlnYXRpb25Db25maWdDb25maWdNYXAgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2Uge1xuICBkYXRhOiB7XG4gICAgYnVpbGRJbjogc3RyaW5nO1xuICAgIGN1c3RvbXM6IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IE5BVl9DT05GSUdfTE9DQUxfU1RPUkFHRV9LRVkgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPihcbiAgJ25hdiBjb25maWcgbG9jYWwgc3RvcmFnZSBrZXknLFxuKTtcblxuZXhwb3J0IHR5cGUgTmF2ID0gTmF2SXRlbUNvbmZpZyB8IE5hdkdyb3VwQ29uZmlnO1xuXG5jb25zdCBjb25maWdUcmVlID0gKFxuICB0cmVlOiBOYXZJdGVtQ29uZmlnW10sXG4gIGNvbmZpZzogTmF2aWdhdGlvbkNvbmZpZ0NvbmZpZ01hcERhdGEsXG4pOiBOYXZJdGVtQ29uZmlnW10gPT5cbiAgdHJlZVxuICAgIC5tYXAoaXRlbSA9PiB7XG4gICAgICBpdGVtLmxhYmVsID0gY29uZmlnLmJ1aWxkSW5baXRlbS5uYW1lXT8ubGFiZWw7XG4gICAgICByZXR1cm4gaXRlbS5jaGlsZHJlbiAmJiAhY29uZmlnLmJ1aWxkSW5baXRlbS5uYW1lXT8uaGlkZGVuIC8vIOeItuiKgueCueiiqyBoaWRkZW4g6Lez6L+HIGNvbmZpZyDlrZDoioLngrlcbiAgICAgICAgPyB7XG4gICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgY2hpbGRyZW46IGNvbmZpZ1RyZWUoaXRlbS5jaGlsZHJlbiwgY29uZmlnKSxcbiAgICAgICAgICB9XG4gICAgICAgIDogaXRlbTtcbiAgICB9KVxuICAgIC5maWx0ZXIoaXRlbSA9PiAhY29uZmlnLmJ1aWxkSW5baXRlbS5uYW1lXT8uaGlkZGVuKTsgLy8g6L+H5rukIGhpZGRlbiDoioLngrlcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE5hdkNvbmZpZ0xvYWRlclNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGNhY2hlZENvbmZpZyA9IG5ldyBNYXA8c3RyaW5nLCBPYnNlcnZhYmxlPHN0cmluZz4+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgIEBJbmplY3QoTkFWX0NPTkZJR19MT0NBTF9TVE9SQUdFX0tFWSlcbiAgICBAT3B0aW9uYWwoKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxTdG9yYWdlS2V5OiBzdHJpbmcgPSAnJyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGs4c0FwaTogSzhzQXBpU2VydmljZSxcbiAgKSB7fVxuXG4gIGxvYWROYXZDb25maWcoYWRkcmVzczogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLmNhY2hlZENvbmZpZy5oYXMoYWRkcmVzcykpIHtcbiAgICAgIHRoaXMuY2FjaGVkQ29uZmlnLnNldChhZGRyZXNzLCB0aGlzLmJ1aWxkTG9hZFN0cmVhbShhZGRyZXNzKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNhY2hlZENvbmZpZy5nZXQoYWRkcmVzcyk7XG4gIH1cblxuICBsb2FkTmF2VHJlZShhZGRyZXNzOiBzdHJpbmcsIGNtQ29uZmlnTmFtZTogc3RyaW5nLCB3aXRoR3JvdXAgPSBmYWxzZSkge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMubG9hZE5hdkNvbmZpZyhhZGRyZXNzKS5waXBlKHRoaXMucGFyc2VZYW1sKCkpLFxuICAgICAgdGhpcy5sb2FkQ21Db25maWcoY21Db25maWdOYW1lKSxcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbdHJlZSwgY29uZmlnXSkgPT5cbiAgICAgICAgd2l0aEdyb3VwXG4gICAgICAgICAgPyB0aGlzLmNvbmZpZ1RyZWVXaXRoR3JvdXAodHJlZSBhcyBOYXZHcm91cENvbmZpZ1tdLCBjb25maWcpXG4gICAgICAgICAgOiB0aGlzLmNvbmZpZ1RyZWUodHJlZSwgY29uZmlnKSxcbiAgICAgICksXG4gICAgICB0aGlzLm1hcFRvQXVpTmF2KHdpdGhHcm91cCksXG4gICAgKTtcbiAgfVxuXG4gIGNvbmZpZ1RyZWUoXG4gICAgdHJlZUl0ZW1Db25maWc6IE5hdkl0ZW1Db25maWdbXSxcbiAgICBjb25maWc6IE5hdmlnYXRpb25Db25maWdDb25maWdNYXBEYXRhLFxuICApIHtcbiAgICByZXR1cm4gZmlsdGVyTmF2VHJlZXModHJlZSA9PiAhKHRyZWUuY2hpbGRyZW4gJiYgIXRyZWUuY2hpbGRyZW4ubGVuZ3RoKSkoXG4gICAgICBjb25maWdUcmVlKHRyZWVJdGVtQ29uZmlnLCBjb25maWcpLmNvbmNhdChcbiAgICAgICAgY29uZmlnLmN1c3RvbXMuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uaGlkZGVuKSwgLy8g5re75Yqg6Ieq5a6a5LmJ55qE5bem5a+86IiqXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBjb25maWdUcmVlV2l0aEdyb3VwKFxuICAgIHRyZWVHcm91cENvbmZpZzogTmF2R3JvdXBDb25maWdbXSxcbiAgICBjb25maWc6IE5hdmlnYXRpb25Db25maWdDb25maWdNYXBEYXRhLFxuICApIHtcbiAgICByZXR1cm4gdHJlZUdyb3VwQ29uZmlnXG4gICAgICAubWFwKHQgPT4gKHtcbiAgICAgICAgLi4udCxcbiAgICAgICAgaXRlbXM6IGZpbHRlck5hdlRyZWVzPE5hdkl0ZW1Db25maWc+KCAvLyDov4fmu6TlrZjlnKjlrZDoioLngrnvvIzkvYblrZDoioLngrnkuLrnqbrnmoToioLngrlcbiAgICAgICAgICB0cmVlID0+ICEodHJlZS5jaGlsZHJlbiAmJiAhdHJlZS5jaGlsZHJlbi5sZW5ndGgpLFxuICAgICAgICApKFxuICAgICAgICAgIGNvbmZpZ1RyZWUodC5pdGVtcywgY29uZmlnKS5jb25jYXQoXG4gICAgICAgICAgICBjb25maWcuY3VzdG9tcy5maWx0ZXIoaXRlbSA9PiAhaXRlbS5oaWRkZW4pLCAvLyDmt7vliqDoh6rlrprkuYnnmoTlt6blr7zoiKpcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgfSkpXG4gICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pdGVtcy5sZW5ndGgpO1xuICB9XG5cbiAgcGFyc2VZYW1sKCkge1xuICAgIHJldHVybiBtYXA8c3RyaW5nLCBOYXZbXT4oKHlhbWw6IHN0cmluZykgPT4ge1xuICAgICAgbGV0IGRhdGE6IE5hdltdID0gW107XG4gICAgICB0cnkge1xuICAgICAgICBkYXRhID0gcGFyc2UoeWFtbCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB0aGlzLnRvYXN0UGFyc2VFcnJvcigpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfSk7XG4gIH1cblxuICBtYXBUb0F1aU5hdih3aXRoR3JvdXAgPSBmYWxzZSkge1xuICAgIHJldHVybiBzd2l0Y2hNYXA8TmF2W10sIE9ic2VydmFibGU8TmF2W10+PihpdGVtcyA9PlxuICAgICAgdGhpcy50cmFuc2xhdGUubG9jYWxlJC5waXBlKFxuICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgIGxldCBkYXRhOiBOYXZbXSA9IFtdO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBkYXRhID0gd2l0aEdyb3VwXG4gICAgICAgICAgICAgID8gaXRlbXMubWFwKGl0ZW0gPT4gKHtcbiAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSA/IHRoaXMudHJhbnNsYXRlLmdldChpdGVtLnRpdGxlKSA6ICcnLFxuICAgICAgICAgICAgICAgICAgaXRlbXM6IG1hcE5hdlRyZWVzKHRoaXMubWFwVG9BdWlOYXZJdGVtKShpdGVtLml0ZW1zKSxcbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgOiBtYXBOYXZUcmVlcyh0aGlzLm1hcFRvQXVpTmF2SXRlbSkoaXRlbXMpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgdGhpcy50b2FzdFBhcnNlRXJyb3IoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBuYW1lXG4gICAqIOWKoOi9veW3puWvvOiIqumFjee9riB0b2RvOiDmt7vliqDmlofmoaPpk77mjqVcbiAgICovXG4gIGxvYWRDbUNvbmZpZyhuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBkZWZhdWx0Q29uZmlnOiBOYXZpZ2F0aW9uQ29uZmlnQ29uZmlnTWFwRGF0YSA9IHtcbiAgICAgIGJ1aWxkSW46IHt9LFxuICAgICAgY3VzdG9tczogW10sXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5rOHNBcGlcbiAgICAgIC5nZXRHbG9iYWxSZXNvdXJjZTxOYXZpZ2F0aW9uQ29uZmlnQ29uZmlnTWFwPih7XG4gICAgICAgIGRlZmluaXRpb246IHtcbiAgICAgICAgICB0eXBlOiAnY29uZmlnbWFwcycsXG4gICAgICAgICAgYXBpVmVyc2lvbjogJ3YxJyxcbiAgICAgICAgfSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgbmFtZXNwYWNlZDogdHJ1ZSxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKGNtID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgYnVpbGRJbjogcGFyc2VKc29uKGNtLmRhdGE/LmJ1aWxkSW4pIHx8IHt9LFxuICAgICAgICAgICAgICBjdXN0b21zOiBwYXJzZUpzb24oY20uZGF0YT8uY3VzdG9tcykgfHwgW10sXG4gICAgICAgICAgICB9IGFzIE5hdmlnYXRpb25Db25maWdDb25maWdNYXBEYXRhO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdENvbmZpZztcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBza2lwRXJyb3IoZGVmYXVsdENvbmZpZyksXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZExvYWRTdHJlYW0ocGF0aDogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gY29uY2F0KFxuICAgICAgb2YodGhpcy5nZXRMb2NhbChwYXRoKSksXG4gICAgICB0aGlzLmh0dHBcbiAgICAgICAgLmdldChwYXRoLCB7XG4gICAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCcsXG4gICAgICAgICAgaGVhZGVyczogeyAnQ2FjaGUtQ29udHJvbCc6ICduby1jYWNoZScgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFwKGNvbmZpZyA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldExvY2FsKHBhdGgsIGNvbmZpZyk7XG4gICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgKS5waXBlKFxuICAgICAgZmlsdGVyKGNvbmZpZyA9PiAhIWNvbmZpZyksXG4gICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBtYXBUb0F1aU5hdkl0ZW0gPSAoXG4gICAgaXRlbTogTmF2SXRlbUNvbmZpZyxcbiAgICBwYXJlbnRzOiBOYXZJdGVtQ29uZmlnW10sXG4gICk6IE5hdkl0ZW1Db25maWcgPT4gKHtcbiAgICAuLi5pdGVtLFxuICAgIGNoaWxkcmVuOiBudWxsLFxuICAgIGtleTogWy4uLnBhcmVudHMubWFwKCh7IG5hbWUgfSkgPT4gbmFtZSksIGl0ZW0ubmFtZV0uam9pbignLycpLFxuICAgIGxhYmVsOiBpdGVtLmxhYmVsIHx8IHRoaXMudHJhbnNsYXRlLmdldChpdGVtLm5hbWUpLFxuICB9KTtcblxuICBwcml2YXRlIHRvYXN0UGFyc2VFcnJvcigpIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvbi5lcnJvcih0aGlzLnRyYW5zbGF0ZS5nZXQoJ25hdl9jb25maWdfZXJyb3InKSk7XG4gIH1cblxuICBwcml2YXRlIGxvY2FsS2V5KHBhdGg6IHN0cmluZykge1xuICAgIGNvbnN0IG5vZGVzID0gcGF0aC5zcGxpdCgnLycpO1xuICAgIHJldHVybiBgJHt0aGlzLmxvY2FsU3RvcmFnZUtleX0uJHtub2Rlcy5hdCgtMSl9YDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0TG9jYWwocGF0aDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMubG9jYWxTdG9yYWdlS2V5KSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmxvY2FsS2V5KHBhdGgpLCB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhbChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmxvY2FsU3RvcmFnZUtleVxuICAgICAgPyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmxvY2FsS2V5KHBhdGgpKSB8fCAnJ1xuICAgICAgOiAnJztcbiAgfVxufVxuIl19