@tilde-nlp/ngx-menu 6.1.6 → 6.1.7

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 (26) hide show
  1. package/esm2022/lib/components/menu-columns/menu-columns.component.mjs +14 -11
  2. package/esm2022/lib/components/menu-item-list/menu-item-list.component.mjs +6 -6
  3. package/esm2022/lib/components/side-nav-menu/side-nav-menu.component.mjs +160 -105
  4. package/esm2022/lib/menu.module.mjs +1 -11
  5. package/esm2022/public-api.mjs +1 -4
  6. package/fesm2022/tilde-nlp-ngx-menu.mjs +182 -323
  7. package/fesm2022/tilde-nlp-ngx-menu.mjs.map +1 -1
  8. package/lib/components/menu-columns/menu-columns.component.d.ts +5 -6
  9. package/lib/components/side-nav-menu/side-nav-menu.component.d.ts +3 -1
  10. package/lib/menu.module.d.ts +17 -19
  11. package/package.json +1 -1
  12. package/public-api.d.ts +0 -3
  13. package/esm2022/lib/assets/menu-logo.svg.mjs +0 -7
  14. package/esm2022/lib/components/menu-item-icon/menu-item-icon.component.mjs +0 -115
  15. package/esm2022/lib/components/menu-item-icon/menu.model.mjs +0 -4
  16. package/esm2022/lib/components/menu-item-icon/models/menu-dialog-settings.model.mjs +0 -2
  17. package/esm2022/lib/components/menu-item-icon/models/menu-item-settings.model.mjs +0 -2
  18. package/esm2022/lib/components/menu-item-icon/models/menu-title-placement.model.mjs +0 -7
  19. package/esm2022/lib/components/modal-nav-menu/modal-nav-menu.component.mjs +0 -82
  20. package/lib/assets/menu-logo.svg.d.ts +0 -1
  21. package/lib/components/menu-item-icon/menu-item-icon.component.d.ts +0 -28
  22. package/lib/components/menu-item-icon/menu.model.d.ts +0 -3
  23. package/lib/components/menu-item-icon/models/menu-dialog-settings.model.d.ts +0 -8
  24. package/lib/components/menu-item-icon/models/menu-item-settings.model.d.ts +0 -6
  25. package/lib/components/menu-item-icon/models/menu-title-placement.model.d.ts +0 -5
  26. package/lib/components/modal-nav-menu/modal-nav-menu.component.d.ts +0 -14
@@ -1,4 +1,5 @@
1
1
  import { Component, Inject, Input, Optional } from '@angular/core';
2
+ import { ResolutionHelper } from '@tilde-nlp/ngx-common';
2
3
  import { MENU_SHARED_CONFIG } from '../../injection-tokens';
3
4
  import { NavBaseComponent } from '../nav-base/nav-base.component';
4
5
  import * as i0 from "@angular/core";
@@ -6,169 +7,217 @@ import * as i1 from "@tilde-nlp/ngx-strapi";
6
7
  import * as i2 from "@tilde-nlp/ngx-common";
7
8
  import * as i3 from "../../services/menu-items.service";
8
9
  import * as i4 from "@ngbracket/ngx-layout/flex";
9
- import * as i5 from "@angular/router";
10
- import * as i6 from "@angular/common";
11
- import * as i7 from "@angular/material/icon";
12
- import * as i8 from "@angular/material/button";
13
- import * as i9 from "@angular/material/menu";
14
- import * as i10 from "../menu-columns/menu-columns.component";
15
- import * as i11 from "@ngx-translate/core";
10
+ import * as i5 from "@ngbracket/ngx-layout/extended";
11
+ import * as i6 from "@angular/router";
12
+ import * as i7 from "@angular/common";
13
+ import * as i8 from "@angular/material/icon";
14
+ import * as i9 from "@angular/material/button";
15
+ import * as i10 from "@angular/material/menu";
16
+ import * as i11 from "../menu-columns/menu-columns.component";
17
+ import * as i12 from "@ngx-translate/core";
16
18
  const _forTrack0 = ($index, $item) => $item.label;
17
19
  const _c0 = (a0, a1, a2, a3) => ({ icon: a0, isIconCustom: a1, isIconOutlined: a2, label: a3 });
18
- function SideNavMenuComponent_a_3_Template(rf, ctx) { if (rf & 1) {
20
+ function SideNavMenuComponent_div_0_Template(rf, ctx) { if (rf & 1) {
19
21
  const _r2 = i0.ɵɵgetCurrentView();
20
- i0.ɵɵelementStart(0, "a", 13);
22
+ i0.ɵɵelementStart(0, "div", 14)(1, "a", 15);
23
+ i0.ɵɵpipe(2, "translate");
24
+ i0.ɵɵlistener("click", function SideNavMenuComponent_div_0_Template_a_click_1_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.logoClick($event)); });
25
+ i0.ɵɵelement(3, "img", 16);
26
+ i0.ɵɵelementStart(4, "span", 17);
27
+ i0.ɵɵtext(5);
28
+ i0.ɵɵelementEnd()();
29
+ i0.ɵɵelementStart(6, "button", 9);
30
+ i0.ɵɵpipe(7, "translate");
31
+ i0.ɵɵlistener("click", function SideNavMenuComponent_div_0_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleCollapse()); });
32
+ i0.ɵɵelementStart(8, "mat-icon");
33
+ i0.ɵɵtext(9, "menu");
34
+ i0.ɵɵelementEnd()()();
35
+ } if (rf & 2) {
36
+ const ctx_r2 = i0.ɵɵnextContext();
37
+ i0.ɵɵproperty("fxHide", !ctx_r2.collapsed);
38
+ i0.ɵɵadvance();
39
+ i0.ɵɵproperty("libPlausibleEvent", ctx_r2.LOGOCLICK_PLAUSIBLE_EVENT)("href", ctx_r2.baseUrl, i0.ɵɵsanitizeUrl);
40
+ i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(2, 8, "MENU.ARIA_LABELS.LOGO"));
41
+ i0.ɵɵadvance(2);
42
+ i0.ɵɵproperty("src", ctx_r2.menuLogoImage, i0.ɵɵsanitizeUrl);
43
+ i0.ɵɵadvance(2);
44
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.productName, " ");
45
+ i0.ɵɵadvance();
46
+ i0.ɵɵproperty("libPlausibleEvent", ctx_r2.collapsed ? ctx_r2.EXPAND_PLAUSIBLE_EVENT : ctx_r2.COLLAPSE_PLAUSIBLE_EVENT);
47
+ i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(7, 10, "ARIA_LABELS.MENU_TOGGLER"));
48
+ } }
49
+ function SideNavMenuComponent_a_4_Template(rf, ctx) { if (rf & 1) {
50
+ const _r4 = i0.ɵɵgetCurrentView();
51
+ i0.ɵɵelementStart(0, "a", 15);
21
52
  i0.ɵɵpipe(1, "translate");
22
- i0.ɵɵlistener("click", function SideNavMenuComponent_a_3_Template_a_click_0_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.logoClick($event)); });
23
- i0.ɵɵelement(2, "img", 14);
24
- i0.ɵɵelementEnd();
53
+ i0.ɵɵlistener("click", function SideNavMenuComponent_a_4_Template_a_click_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.logoClick($event)); });
54
+ i0.ɵɵelement(2, "img", 16);
55
+ i0.ɵɵelementStart(3, "span", 17);
56
+ i0.ɵɵtext(4);
57
+ i0.ɵɵelementEnd()();
25
58
  } if (rf & 2) {
26
59
  const ctx_r2 = i0.ɵɵnextContext();
27
60
  i0.ɵɵproperty("libPlausibleEvent", ctx_r2.LOGOCLICK_PLAUSIBLE_EVENT)("href", ctx_r2.baseUrl, i0.ɵɵsanitizeUrl);
28
- i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(1, 4, "MENU.ARIA_LABELS.LOGO"));
61
+ i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(1, 5, "MENU.ARIA_LABELS.LOGO"));
29
62
  i0.ɵɵadvance(2);
30
63
  i0.ɵɵproperty("src", ctx_r2.menuLogoImage, i0.ɵɵsanitizeUrl);
64
+ i0.ɵɵadvance(2);
65
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.productName, " ");
31
66
  } }
32
- function SideNavMenuComponent_button_10_ng_container_4_mat_icon_3_Template(rf, ctx) { if (rf & 1) {
33
- i0.ɵɵelementStart(0, "mat-icon", 20);
67
+ function SideNavMenuComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
68
+ i0.ɵɵelementStart(0, "mat-icon");
69
+ i0.ɵɵtext(1, "close");
70
+ i0.ɵɵelementEnd();
71
+ } }
72
+ function SideNavMenuComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
73
+ i0.ɵɵelementStart(0, "mat-icon");
74
+ i0.ɵɵtext(1);
75
+ i0.ɵɵelementEnd();
76
+ } if (rf & 2) {
77
+ const ctx_r2 = i0.ɵɵnextContext();
78
+ i0.ɵɵadvance();
79
+ i0.ɵɵtextInterpolate(ctx_r2.collapsed ? "keyboard_double_arrow_right" : "keyboard_double_arrow_left");
80
+ } }
81
+ function SideNavMenuComponent_button_11_ng_container_4_mat_icon_3_Template(rf, ctx) { if (rf & 1) {
82
+ i0.ɵɵelementStart(0, "mat-icon", 23);
34
83
  i0.ɵɵtext(1);
35
84
  i0.ɵɵelementEnd();
36
85
  } if (rf & 2) {
37
86
  i0.ɵɵadvance();
38
87
  i0.ɵɵtextInterpolate("keyboard_arrow_down");
39
88
  } }
40
- function SideNavMenuComponent_button_10_ng_container_4_ng_template_4_Template(rf, ctx) { if (rf & 1) {
41
- i0.ɵɵelementStart(0, "mat-icon", 20);
89
+ function SideNavMenuComponent_button_11_ng_container_4_ng_template_4_Template(rf, ctx) { if (rf & 1) {
90
+ i0.ɵɵelementStart(0, "mat-icon", 23);
42
91
  i0.ɵɵtext(1);
43
92
  i0.ɵɵelementEnd();
44
93
  } if (rf & 2) {
45
94
  i0.ɵɵadvance();
46
95
  i0.ɵɵtextInterpolate("keyboard_arrow_up");
47
96
  } }
48
- function SideNavMenuComponent_button_10_ng_container_4_Template(rf, ctx) { if (rf & 1) {
97
+ function SideNavMenuComponent_button_11_ng_container_4_Template(rf, ctx) { if (rf & 1) {
49
98
  i0.ɵɵelementContainerStart(0);
50
- i0.ɵɵelementStart(1, "span", 18);
99
+ i0.ɵɵelementStart(1, "span", 21);
51
100
  i0.ɵɵtext(2);
52
101
  i0.ɵɵelementEnd();
53
- i0.ɵɵtemplate(3, SideNavMenuComponent_button_10_ng_container_4_mat_icon_3_Template, 2, 1, "mat-icon", 19)(4, SideNavMenuComponent_button_10_ng_container_4_ng_template_4_Template, 2, 1, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
102
+ i0.ɵɵtemplate(3, SideNavMenuComponent_button_11_ng_container_4_mat_icon_3_Template, 2, 1, "mat-icon", 22)(4, SideNavMenuComponent_button_11_ng_container_4_ng_template_4_Template, 2, 1, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
54
103
  i0.ɵɵelementContainerEnd();
55
104
  } if (rf & 2) {
56
- const iconDown_r4 = i0.ɵɵreference(5);
105
+ const iconDown_r5 = i0.ɵɵreference(5);
57
106
  i0.ɵɵnextContext();
58
- const state_r5 = i0.ɵɵreference(1);
107
+ const state_r6 = i0.ɵɵreference(1);
59
108
  const ctx_r2 = i0.ɵɵnextContext();
60
109
  i0.ɵɵadvance(2);
61
110
  i0.ɵɵtextInterpolate1(" ", ctx_r2.username, " ");
62
111
  i0.ɵɵadvance();
63
- i0.ɵɵproperty("ngIf", state_r5.menuOpen)("ngIfElse", iconDown_r4);
112
+ i0.ɵɵproperty("ngIf", state_r6.menuOpen)("ngIfElse", iconDown_r5);
64
113
  } }
65
- function SideNavMenuComponent_button_10_Template(rf, ctx) { if (rf & 1) {
66
- i0.ɵɵelementStart(0, "button", 15, 2)(2, "div", 16);
114
+ function SideNavMenuComponent_button_11_Template(rf, ctx) { if (rf & 1) {
115
+ i0.ɵɵelementStart(0, "button", 18, 2)(2, "div", 19);
67
116
  i0.ɵɵtext(3);
68
117
  i0.ɵɵelementEnd();
69
- i0.ɵɵtemplate(4, SideNavMenuComponent_button_10_ng_container_4_Template, 6, 3, "ng-container", 17);
118
+ i0.ɵɵtemplate(4, SideNavMenuComponent_button_11_ng_container_4_Template, 6, 3, "ng-container", 20);
70
119
  i0.ɵɵelementEnd();
71
120
  } if (rf & 2) {
72
121
  const ctx_r2 = i0.ɵɵnextContext();
73
- const menu_r6 = i0.ɵɵreference(12);
74
- i0.ɵɵproperty("matMenuTriggerFor", menu_r6);
122
+ const menu_r7 = i0.ɵɵreference(13);
123
+ i0.ɵɵproperty("matMenuTriggerFor", menu_r7);
75
124
  i0.ɵɵadvance(3);
76
125
  i0.ɵɵtextInterpolate1(" ", ctx_r2.userInitials, " ");
77
126
  i0.ɵɵadvance();
78
127
  i0.ɵɵproperty("ngIf", !ctx_r2.collapsed);
79
128
  } }
80
- function SideNavMenuComponent_For_14_Conditional_0_Conditional_0_ng_container_1_Template(rf, ctx) { if (rf & 1) {
129
+ function SideNavMenuComponent_For_15_Conditional_0_Conditional_0_ng_container_1_Template(rf, ctx) { if (rf & 1) {
81
130
  i0.ɵɵelementContainer(0);
82
131
  } }
83
- function SideNavMenuComponent_For_14_Conditional_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
84
- i0.ɵɵelementStart(0, "a", 22);
85
- i0.ɵɵtemplate(1, SideNavMenuComponent_For_14_Conditional_0_Conditional_0_ng_container_1_Template, 1, 0, "ng-container", 24);
132
+ function SideNavMenuComponent_For_15_Conditional_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
133
+ i0.ɵɵelementStart(0, "a", 25);
134
+ i0.ɵɵtemplate(1, SideNavMenuComponent_For_15_Conditional_0_Conditional_0_ng_container_1_Template, 1, 0, "ng-container", 27);
86
135
  i0.ɵɵelementEnd();
87
136
  } if (rf & 2) {
88
- const item_r7 = i0.ɵɵnextContext(2).$implicit;
137
+ const item_r8 = i0.ɵɵnextContext(2).$implicit;
89
138
  i0.ɵɵnextContext();
90
- const profileMenuItem_r8 = i0.ɵɵreference(16);
91
- i0.ɵɵproperty("href", item_r7.href, i0.ɵɵsanitizeUrl);
139
+ const profileMenuItem_r9 = i0.ɵɵreference(17);
140
+ i0.ɵɵproperty("href", item_r8.href, i0.ɵɵsanitizeUrl);
92
141
  i0.ɵɵadvance();
93
- i0.ɵɵproperty("ngTemplateOutlet", profileMenuItem_r8)("ngTemplateOutletContext", i0.ɵɵpureFunction4(3, _c0, item_r7.icon, item_r7.isIconCustom, item_r7.isIconOutlined, item_r7.label));
142
+ i0.ɵɵproperty("ngTemplateOutlet", profileMenuItem_r9)("ngTemplateOutletContext", i0.ɵɵpureFunction4(3, _c0, item_r8.icon, item_r8.isIconCustom, item_r8.isIconOutlined, item_r8.label));
94
143
  } }
95
- function SideNavMenuComponent_For_14_Conditional_0_Conditional_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
144
+ function SideNavMenuComponent_For_15_Conditional_0_Conditional_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
96
145
  i0.ɵɵelementContainer(0);
97
146
  } }
98
- function SideNavMenuComponent_For_14_Conditional_0_Conditional_1_Template(rf, ctx) { if (rf & 1) {
99
- i0.ɵɵelementStart(0, "a", 23);
100
- i0.ɵɵtemplate(1, SideNavMenuComponent_For_14_Conditional_0_Conditional_1_ng_container_1_Template, 1, 0, "ng-container", 24);
147
+ function SideNavMenuComponent_For_15_Conditional_0_Conditional_1_Template(rf, ctx) { if (rf & 1) {
148
+ i0.ɵɵelementStart(0, "a", 26);
149
+ i0.ɵɵtemplate(1, SideNavMenuComponent_For_15_Conditional_0_Conditional_1_ng_container_1_Template, 1, 0, "ng-container", 27);
101
150
  i0.ɵɵelementEnd();
102
151
  } if (rf & 2) {
103
- const item_r7 = i0.ɵɵnextContext(2).$implicit;
152
+ const item_r8 = i0.ɵɵnextContext(2).$implicit;
104
153
  i0.ɵɵnextContext();
105
- const profileMenuItem_r8 = i0.ɵɵreference(16);
106
- i0.ɵɵproperty("routerLink", item_r7.href);
154
+ const profileMenuItem_r9 = i0.ɵɵreference(17);
155
+ i0.ɵɵproperty("routerLink", item_r8.href);
107
156
  i0.ɵɵadvance();
108
- i0.ɵɵproperty("ngTemplateOutlet", profileMenuItem_r8)("ngTemplateOutletContext", i0.ɵɵpureFunction4(3, _c0, item_r7.icon, item_r7.isIconCustom, item_r7.isIconOutlined, item_r7.label));
157
+ i0.ɵɵproperty("ngTemplateOutlet", profileMenuItem_r9)("ngTemplateOutletContext", i0.ɵɵpureFunction4(3, _c0, item_r8.icon, item_r8.isIconCustom, item_r8.isIconOutlined, item_r8.label));
109
158
  } }
110
- function SideNavMenuComponent_For_14_Conditional_0_Template(rf, ctx) { if (rf & 1) {
111
- i0.ɵɵtemplate(0, SideNavMenuComponent_For_14_Conditional_0_Conditional_0_Template, 2, 8, "a", 22)(1, SideNavMenuComponent_For_14_Conditional_0_Conditional_1_Template, 2, 8, "a", 23);
159
+ function SideNavMenuComponent_For_15_Conditional_0_Template(rf, ctx) { if (rf & 1) {
160
+ i0.ɵɵtemplate(0, SideNavMenuComponent_For_15_Conditional_0_Conditional_0_Template, 2, 8, "a", 25)(1, SideNavMenuComponent_For_15_Conditional_0_Conditional_1_Template, 2, 8, "a", 26);
112
161
  } if (rf & 2) {
113
- const item_r7 = i0.ɵɵnextContext().$implicit;
114
- i0.ɵɵconditional(item_r7.openInNewTab ? 0 : 1);
162
+ const item_r8 = i0.ɵɵnextContext().$implicit;
163
+ i0.ɵɵconditional(item_r8.openInNewTab ? 0 : 1);
115
164
  } }
116
- function SideNavMenuComponent_For_14_Conditional_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
165
+ function SideNavMenuComponent_For_15_Conditional_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
117
166
  i0.ɵɵelementContainer(0);
118
167
  } }
119
- function SideNavMenuComponent_For_14_Conditional_1_Template(rf, ctx) { if (rf & 1) {
120
- const _r9 = i0.ɵɵgetCurrentView();
121
- i0.ɵɵelementStart(0, "button", 25);
122
- i0.ɵɵlistener("click", function SideNavMenuComponent_For_14_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r9); const item_r7 = i0.ɵɵnextContext().$implicit; return i0.ɵɵresetView(item_r7 == null ? null : item_r7.callback()); });
123
- i0.ɵɵtemplate(1, SideNavMenuComponent_For_14_Conditional_1_ng_container_1_Template, 1, 0, "ng-container", 24);
168
+ function SideNavMenuComponent_For_15_Conditional_1_Template(rf, ctx) { if (rf & 1) {
169
+ const _r10 = i0.ɵɵgetCurrentView();
170
+ i0.ɵɵelementStart(0, "button", 28);
171
+ i0.ɵɵlistener("click", function SideNavMenuComponent_For_15_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const item_r8 = i0.ɵɵnextContext().$implicit; return i0.ɵɵresetView(item_r8 == null ? null : item_r8.callback()); });
172
+ i0.ɵɵtemplate(1, SideNavMenuComponent_For_15_Conditional_1_ng_container_1_Template, 1, 0, "ng-container", 27);
124
173
  i0.ɵɵelementEnd();
125
174
  } if (rf & 2) {
126
- const item_r7 = i0.ɵɵnextContext().$implicit;
175
+ const item_r8 = i0.ɵɵnextContext().$implicit;
127
176
  i0.ɵɵnextContext();
128
- const profileMenuItem_r8 = i0.ɵɵreference(16);
177
+ const profileMenuItem_r9 = i0.ɵɵreference(17);
129
178
  i0.ɵɵadvance();
130
- i0.ɵɵproperty("ngTemplateOutlet", profileMenuItem_r8)("ngTemplateOutletContext", i0.ɵɵpureFunction4(2, _c0, item_r7.icon, item_r7.isIconCustom, item_r7.isIconOutlined, item_r7.label));
179
+ i0.ɵɵproperty("ngTemplateOutlet", profileMenuItem_r9)("ngTemplateOutletContext", i0.ɵɵpureFunction4(2, _c0, item_r8.icon, item_r8.isIconCustom, item_r8.isIconOutlined, item_r8.label));
131
180
  } }
132
- function SideNavMenuComponent_For_14_Template(rf, ctx) { if (rf & 1) {
133
- i0.ɵɵtemplate(0, SideNavMenuComponent_For_14_Conditional_0_Template, 2, 1)(1, SideNavMenuComponent_For_14_Conditional_1_Template, 2, 7, "button", 21);
181
+ function SideNavMenuComponent_For_15_Template(rf, ctx) { if (rf & 1) {
182
+ i0.ɵɵtemplate(0, SideNavMenuComponent_For_15_Conditional_0_Template, 2, 1)(1, SideNavMenuComponent_For_15_Conditional_1_Template, 2, 7, "button", 24);
134
183
  } if (rf & 2) {
135
- const item_r7 = ctx.$implicit;
136
- i0.ɵɵconditional(item_r7.isLink ? 0 : 1);
184
+ const item_r8 = ctx.$implicit;
185
+ i0.ɵɵconditional(item_r8.isLink ? 0 : 1);
137
186
  } }
138
- function SideNavMenuComponent_ng_template_15_Conditional_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
139
- i0.ɵɵelementStart(0, "span", 28);
187
+ function SideNavMenuComponent_ng_template_16_Conditional_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
188
+ i0.ɵɵelementStart(0, "span", 31);
140
189
  i0.ɵɵtext(1);
141
190
  i0.ɵɵelementEnd();
142
191
  } if (rf & 2) {
143
- const ctx_r9 = i0.ɵɵnextContext(2);
144
- const icon_r11 = ctx_r9.icon;
145
- const isIconOutlined_r12 = ctx_r9.isIconOutlined;
146
- i0.ɵɵclassProp("material-icons-outlined", isIconOutlined_r12);
192
+ const ctx_r10 = i0.ɵɵnextContext(2);
193
+ const icon_r12 = ctx_r10.icon;
194
+ const isIconOutlined_r13 = ctx_r10.isIconOutlined;
195
+ i0.ɵɵclassProp("material-icons-outlined", isIconOutlined_r13);
147
196
  i0.ɵɵadvance();
148
- i0.ɵɵtextInterpolate1(" ", icon_r11, " ");
197
+ i0.ɵɵtextInterpolate1(" ", icon_r12, " ");
149
198
  } }
150
- function SideNavMenuComponent_ng_template_15_Conditional_0_Conditional_1_Template(rf, ctx) { if (rf & 1) {
151
- i0.ɵɵelement(0, "mat-icon", 27);
199
+ function SideNavMenuComponent_ng_template_16_Conditional_0_Conditional_1_Template(rf, ctx) { if (rf & 1) {
200
+ i0.ɵɵelement(0, "mat-icon", 30);
152
201
  } if (rf & 2) {
153
- const icon_r11 = i0.ɵɵnextContext(2).icon;
154
- i0.ɵɵproperty("svgIcon", icon_r11);
202
+ const icon_r12 = i0.ɵɵnextContext(2).icon;
203
+ i0.ɵɵproperty("svgIcon", icon_r12);
155
204
  } }
156
- function SideNavMenuComponent_ng_template_15_Conditional_0_Template(rf, ctx) { if (rf & 1) {
157
- i0.ɵɵtemplate(0, SideNavMenuComponent_ng_template_15_Conditional_0_Conditional_0_Template, 2, 3, "span", 26)(1, SideNavMenuComponent_ng_template_15_Conditional_0_Conditional_1_Template, 1, 1, "mat-icon", 27);
205
+ function SideNavMenuComponent_ng_template_16_Conditional_0_Template(rf, ctx) { if (rf & 1) {
206
+ i0.ɵɵtemplate(0, SideNavMenuComponent_ng_template_16_Conditional_0_Conditional_0_Template, 2, 3, "span", 29)(1, SideNavMenuComponent_ng_template_16_Conditional_0_Conditional_1_Template, 1, 1, "mat-icon", 30);
158
207
  } if (rf & 2) {
159
- const isIconCustom_r13 = i0.ɵɵnextContext().isIconCustom;
160
- i0.ɵɵconditional(!isIconCustom_r13 ? 0 : 1);
208
+ const isIconCustom_r14 = i0.ɵɵnextContext().isIconCustom;
209
+ i0.ɵɵconditional(!isIconCustom_r14 ? 0 : 1);
161
210
  } }
162
- function SideNavMenuComponent_ng_template_15_Template(rf, ctx) { if (rf & 1) {
163
- i0.ɵɵtemplate(0, SideNavMenuComponent_ng_template_15_Conditional_0_Template, 2, 1);
211
+ function SideNavMenuComponent_ng_template_16_Template(rf, ctx) { if (rf & 1) {
212
+ i0.ɵɵtemplate(0, SideNavMenuComponent_ng_template_16_Conditional_0_Template, 2, 1);
164
213
  i0.ɵɵtext(1);
165
214
  i0.ɵɵpipe(2, "translate");
166
215
  } if (rf & 2) {
167
- const icon_r11 = ctx.icon;
168
- const label_r14 = ctx.label;
169
- i0.ɵɵconditional(icon_r11 ? 0 : -1);
216
+ const icon_r12 = ctx.icon;
217
+ const label_r15 = ctx.label;
218
+ i0.ɵɵconditional(icon_r12 ? 0 : -1);
170
219
  i0.ɵɵadvance();
171
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, label_r14), "\n");
220
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, label_r15), "\n");
172
221
  } }
173
222
  export class SideNavMenuComponent extends NavBaseComponent {
174
223
  #username;
@@ -198,6 +247,7 @@ export class SideNavMenuComponent extends NavBaseComponent {
198
247
  disableStrapi: false
199
248
  };
200
249
  this.collapsed = false;
250
+ this.isMobile = ResolutionHelper.isMobileRes();
201
251
  this.COLLAPSED_LOCAL_STORAGE_KEY = "TLD_MENU_SIDE_NAV_COLLAPSED";
202
252
  //#region Plausible event variables for collapse button
203
253
  this.COLLAPSE_PLAUSIBLE_EVENT_ID = "collapseMenu";
@@ -233,7 +283,7 @@ export class SideNavMenuComponent extends NavBaseComponent {
233
283
  if (!this.domService.localStorage) {
234
284
  return;
235
285
  }
236
- this.collapsed = this.domService.localStorage.getItem(this.COLLAPSED_LOCAL_STORAGE_KEY) == 'true' ? true : false;
286
+ this.collapsed = (this.domService.localStorage.getItem(this.COLLAPSED_LOCAL_STORAGE_KEY) == 'true' || this.isMobile) ? true : false;
237
287
  }
238
288
  setColapsedFromLocalStorage() {
239
289
  if (!this.domService.localStorage) {
@@ -256,48 +306,51 @@ export class SideNavMenuComponent extends NavBaseComponent {
256
306
  this.userInitials = splittedUsername[0][0] + splittedUsername[1][0];
257
307
  }
258
308
  static { this.ɵfac = function SideNavMenuComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SideNavMenuComponent)(i0.ɵɵdirectiveInject(i1.StrapiLinkService), i0.ɵɵdirectiveInject(i2.DOMService), i0.ɵɵdirectiveInject(i3.MenuItemsService), i0.ɵɵdirectiveInject(MENU_SHARED_CONFIG, 8)); }; }
259
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SideNavMenuComponent, selectors: [["lib-side-nav-menu"]], inputs: { username: "username", menuSettings: "menuSettings" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 17, vars: 15, consts: [["menu", "matMenu"], ["profileMenuItem", ""], ["state", "matMenuTrigger"], ["iconDown", ""], ["fxLayout", "column", 1, "menu-container"], ["fxLayout", "column", "fxFlexFill", "", 1, "content"], ["fxLayout", "row", 1, "menu-container-header", 3, "fxLayoutAlign"], ["fxFlex", "3.125em", "fxLayoutAlign", "start center", 3, "libPlausibleEvent", "href", "click", 4, "ngIf"], ["mat-icon-button", "", 1, "toggler", 3, "click", "libPlausibleEvent"], ["fxLayout", "column", "fxFlex", "", 1, "menu-wrapper"], ["role", "navigation", "fxFlex", "", 3, "toggleCollapseEvent", "direction", "labelsVisible", "active"], ["class", "profile-wrapper", 3, "matMenuTriggerFor", 4, "ngIf"], [1, "profile-menu"], ["fxFlex", "3.125em", "fxLayoutAlign", "start center", 3, "click", "libPlausibleEvent", "href"], ["height", "40", "alt", "logo", 1, "menu-logo", 3, "src"], [1, "profile-wrapper", 3, "matMenuTriggerFor"], [1, "profile-icon"], [4, "ngIf"], [1, "profile-name"], ["class", "spin", 4, "ngIf", "ngIfElse"], [1, "spin"], ["mat-menu-item", "", 1, "profile-option"], ["target", "_blank", 1, "mat-mdc-menu-item", 3, "href"], [1, "mat-mdc-menu-item", 3, "routerLink"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["mat-menu-item", "", 1, "profile-option", 3, "click"], [1, "material-icons", "profile-option-icon", 3, "material-icons-outlined"], [1, "profile-option-icon", 3, "svgIcon"], [1, "material-icons", "profile-option-icon"]], template: function SideNavMenuComponent_Template(rf, ctx) { if (rf & 1) {
309
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SideNavMenuComponent, selectors: [["lib-side-nav-menu"]], inputs: { username: "username", menuSettings: "menuSettings", productName: "productName" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 18, vars: 17, consts: [["menu", "matMenu"], ["profileMenuItem", ""], ["state", "matMenuTrigger"], ["iconDown", ""], ["class", "mobile-header", 3, "fxHide", 4, "ngIf"], ["fxLayout", "column", 1, "menu-container", 3, "ngClass.lt-sm"], ["fxLayout", "column", "fxFlexFill", "", 1, "content"], ["fxLayout", "row", 1, "menu-container-header", 3, "fxLayoutAlign"], ["fxFlex", "3.125em", "fxLayoutAlign", "start center", 3, "libPlausibleEvent", "href", "click", 4, "ngIf"], ["mat-icon-button", "", 1, "toggler", 3, "click", "libPlausibleEvent"], ["fxLayout", "column", "fxFlex", "", 1, "menu-wrapper"], ["role", "navigation", "fxFlex", "", 3, "toggleCollapseEvent", "direction", "isOpen", "active"], ["class", "profile-wrapper", 3, "matMenuTriggerFor", 4, "ngIf"], [1, "profile-menu"], [1, "mobile-header", 3, "fxHide"], ["fxFlex", "3.125em", "fxLayoutAlign", "start center", 3, "click", "libPlausibleEvent", "href"], ["height", "40", "width", "40", "alt", "logo", 1, "menu-logo", 3, "src"], [1, "menu-product-name"], [1, "profile-wrapper", 3, "matMenuTriggerFor"], [1, "profile-icon"], [4, "ngIf"], [1, "profile-name"], ["class", "spin", 4, "ngIf", "ngIfElse"], [1, "spin"], ["mat-menu-item", "", 1, "profile-option"], ["target", "_blank", 1, "mat-mdc-menu-item", 3, "href"], [1, "mat-mdc-menu-item", 3, "routerLink"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["mat-menu-item", "", 1, "profile-option", 3, "click"], [1, "material-icons", "profile-option-icon", 3, "material-icons-outlined"], [1, "profile-option-icon", 3, "svgIcon"], [1, "material-icons", "profile-option-icon"]], template: function SideNavMenuComponent_Template(rf, ctx) { if (rf & 1) {
260
310
  const _r1 = i0.ɵɵgetCurrentView();
261
- i0.ɵɵelementStart(0, "div", 4)(1, "div", 5)(2, "div", 6);
262
- i0.ɵɵtemplate(3, SideNavMenuComponent_a_3_Template, 3, 6, "a", 7);
263
- i0.ɵɵelementStart(4, "button", 8);
264
- i0.ɵɵpipe(5, "translate");
265
- i0.ɵɵlistener("click", function SideNavMenuComponent_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.toggleCollapse()); });
266
- i0.ɵɵelementStart(6, "mat-icon");
267
- i0.ɵɵtext(7);
268
- i0.ɵɵelementEnd()()();
269
- i0.ɵɵelementStart(8, "div", 9)(9, "menu-columns", 10);
270
- i0.ɵɵlistener("toggleCollapseEvent", function SideNavMenuComponent_Template_menu_columns_toggleCollapseEvent_9_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.toggleCollapse()); });
311
+ i0.ɵɵtemplate(0, SideNavMenuComponent_div_0_Template, 10, 12, "div", 4);
312
+ i0.ɵɵelementStart(1, "div", 5)(2, "div", 6)(3, "div", 7);
313
+ i0.ɵɵtemplate(4, SideNavMenuComponent_a_4_Template, 5, 7, "a", 8);
314
+ i0.ɵɵelementStart(5, "button", 9);
315
+ i0.ɵɵpipe(6, "translate");
316
+ i0.ɵɵlistener("click", function SideNavMenuComponent_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.toggleCollapse()); });
317
+ i0.ɵɵtemplate(7, SideNavMenuComponent_Conditional_7_Template, 2, 0, "mat-icon")(8, SideNavMenuComponent_Conditional_8_Template, 2, 1, "mat-icon");
318
+ i0.ɵɵelementEnd()();
319
+ i0.ɵɵelementStart(9, "div", 10)(10, "menu-columns", 11);
320
+ i0.ɵɵlistener("toggleCollapseEvent", function SideNavMenuComponent_Template_menu_columns_toggleCollapseEvent_10_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.toggleCollapse()); });
271
321
  i0.ɵɵelementEnd()();
272
- i0.ɵɵtemplate(10, SideNavMenuComponent_button_10_Template, 5, 3, "button", 11);
273
- i0.ɵɵelementStart(11, "mat-menu", 12, 0);
274
- i0.ɵɵrepeaterCreate(13, SideNavMenuComponent_For_14_Template, 2, 1, null, null, _forTrack0);
322
+ i0.ɵɵtemplate(11, SideNavMenuComponent_button_11_Template, 5, 3, "button", 12);
323
+ i0.ɵɵelementStart(12, "mat-menu", 13, 0);
324
+ i0.ɵɵrepeaterCreate(14, SideNavMenuComponent_For_15_Template, 2, 1, null, null, _forTrack0);
275
325
  i0.ɵɵelementEnd()();
276
- i0.ɵɵtemplate(15, SideNavMenuComponent_ng_template_15_Template, 3, 4, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
326
+ i0.ɵɵtemplate(16, SideNavMenuComponent_ng_template_16_Template, 3, 4, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
277
327
  i0.ɵɵelementEnd();
278
328
  } if (rf & 2) {
329
+ i0.ɵɵproperty("ngIf", ctx.isMobile);
330
+ i0.ɵɵadvance();
279
331
  i0.ɵɵstyleProp("width", ctx.sideNavWidth);
280
332
  i0.ɵɵclassProp("collapsed", ctx.collapsed);
333
+ i0.ɵɵproperty("ngClass.lt-sm", "mobile");
281
334
  i0.ɵɵadvance(2);
282
335
  i0.ɵɵproperty("fxLayoutAlign", ctx.collapsed ? "center center" : "space-between center");
283
336
  i0.ɵɵadvance();
284
337
  i0.ɵɵproperty("ngIf", !ctx.collapsed);
285
338
  i0.ɵɵadvance();
286
339
  i0.ɵɵproperty("libPlausibleEvent", ctx.collapsed ? ctx.EXPAND_PLAUSIBLE_EVENT : ctx.COLLAPSE_PLAUSIBLE_EVENT);
287
- i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(5, 13, "ARIA_LABELS.MENU_TOGGLER"));
288
- i0.ɵɵadvance(3);
289
- i0.ɵɵtextInterpolate(ctx.collapsed ? "keyboard_double_arrow_right" : "keyboard_double_arrow_left");
340
+ i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(6, 15, "ARIA_LABELS.MENU_TOGGLER"));
290
341
  i0.ɵɵadvance(2);
291
- i0.ɵɵproperty("direction", ctx.direction)("labelsVisible", !ctx.collapsed)("active", ctx.active);
342
+ i0.ɵɵconditional(ctx.isMobile ? 7 : 8);
343
+ i0.ɵɵadvance(3);
344
+ i0.ɵɵproperty("direction", ctx.direction)("isOpen", !ctx.collapsed)("active", ctx.active);
292
345
  i0.ɵɵadvance();
293
346
  i0.ɵɵproperty("ngIf", ctx.userInitials);
294
347
  i0.ɵɵadvance(3);
295
348
  i0.ɵɵrepeater(ctx.menuSettings.userOptions);
296
- } }, dependencies: [i4.DefaultLayoutDirective, i4.DefaultLayoutAlignDirective, i4.FlexFillDirective, i4.DefaultFlexDirective, i5.RouterLink, i6.NgIf, i6.NgTemplateOutlet, i7.MatIcon, i8.MatIconButton, i9.MatMenu, i9.MatMenuItem, i9.MatMenuTrigger, i2.PlausibleEventDirective, i10.MenuColumnsComponent, i11.TranslatePipe], styles: [".menu-container[_ngcontent-%COMP%]{white-space:nowrap;height:100%;transition:width .2s ease;min-height:100vh;overflow:auto;background:var(--base-100);border-right:2px solid var(--base-95)}.menu-container[_ngcontent-%COMP%] .menu-container-header[_ngcontent-%COMP%]{margin:24px 0;max-height:40px}.menu-container.collapsed[_ngcontent-%COMP%] .menu-container-header[_ngcontent-%COMP%]{margin:24px 0 32px!important}.menu-container[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]:not(.collapsed){overflow-x:hidden;padding:0 12px}.menu-container[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]:not(.collapsed) .menu-logo[_ngcontent-%COMP%]{margin-left:16px;max-width:100%}.menu-container[_ngcontent-%COMP%] .divider[_ngcontent-%COMP%]{width:100%}.menu-container[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%]{background:none;color:var(--base-30);display:flex;align-items:center;justify-content:start;margin:32px 16px}.menu-container[_ngcontent-%COMP%] .profile-icon[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;min-width:40px;height:40px;border-radius:100%;color:var(--base-0);background-color:var(--base-70);font-size:16px;font-weight:600}.menu-container[_ngcontent-%COMP%] .profile-name[_ngcontent-%COMP%]{max-width:145px;overflow:hidden;margin-left:12px}.profile-option-icon[_ngcontent-%COMP%]{vertical-align:middle;margin:0 5px 5px 0}[_nghost-%COMP%] .collapsed .profile-wrapper{left:8px!important}[_nghost-%COMP%] .menu-item{display:flex;padding:16px!important;border-radius:4px!important}[_nghost-%COMP%] .child-list .menu-item{padding:8px 46px!important}[_nghost-%COMP%] .collapsed .menu-item{padding:0!important;width:40px;height:40px;border-radius:50%!important}[_nghost-%COMP%] .active-menu-item{background-color:var(--base-95)!important}[_nghost-%COMP%] .menu-item-title{margin-left:12px}tld-menu-icon[_ngcontent-%COMP%]{margin-right:10px}.spin[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_spinArrow .3s forwards}[_nghost-%COMP%] button.collapse-btn .mat-mdc-button-persistent-ripple, [_nghost-%COMP%] button.toggler .mat-mdc-button-persistent-ripple{display:none} .mobile-child-list{margin-left:25px!important} .cdk-overlay-container .profile-menu{margin:10px 0!important} .mat-mdc-menu-item .mat-icon{margin-right:5px!important} .collapsed .profile-wrapper{justify-content:center!important} .profile-menu a{font-weight:400!important;display:flex;align-items:center;gap:5px} .profile-menu a:hover{color:var(--mat-menu-item-label-text-color, var(--mat-app-on-surface))!important;text-decoration:inherit}@keyframes _ngcontent-%COMP%_spinArrow{to{transform:rotate(180deg)}}"] }); }
349
+ } }, dependencies: [i4.DefaultLayoutDirective, i4.DefaultLayoutAlignDirective, i4.FlexFillDirective, i4.DefaultFlexDirective, i5.DefaultShowHideDirective, i5.DefaultClassDirective, i6.RouterLink, i7.NgIf, i7.NgTemplateOutlet, i8.MatIcon, i9.MatIconButton, i10.MatMenu, i10.MatMenuItem, i10.MatMenuTrigger, i2.PlausibleEventDirective, i11.MenuColumnsComponent, i12.TranslatePipe], styles: ["a[_ngcontent-%COMP%]{text-decoration:none}.mobile-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;padding:23px 27px;background-color:#fcfcfc;border:1px solid var(--base-70)}.mobile.menu-container.collapsed[_ngcontent-%COMP%]{display:none!important}.mobile.menu-container[_ngcontent-%COMP%]:not(.collapsed){display:block!important;position:absolute;min-width:100vw;min-height:100vh;z-index:1000}.mobile[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%]{position:relative}.mobile[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:absolute!important;right:0}.menu-product-name[_ngcontent-%COMP%]{white-space:nowrap;margin-left:12px;font-weight:600;color:var(--primary-accent)}.menu-container[_ngcontent-%COMP%]{max-height:100vh;white-space:nowrap;height:100%;transition:width .2s ease;min-height:100vh;overflow:auto;background:var(--base-100);border-right:2px solid var(--base-95)}.menu-container[_ngcontent-%COMP%] .menu-container-header[_ngcontent-%COMP%]{margin:24px 0;max-height:40px}.menu-container.collapsed[_ngcontent-%COMP%] .menu-container-header[_ngcontent-%COMP%]{margin:24px 0 32px!important}.menu-container[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]:not(.collapsed){overflow-x:hidden;padding:0 12px}.menu-container[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]:not(.collapsed) .menu-logo[_ngcontent-%COMP%]{margin-left:16px;max-width:100%}.menu-container[_ngcontent-%COMP%] .divider[_ngcontent-%COMP%]{width:100%}.menu-container[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%]{background:none;color:var(--base-30);display:flex;align-items:center;justify-content:start;margin:32px 16px}.menu-container[_ngcontent-%COMP%] .profile-icon[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;min-width:40px;height:40px;border-radius:100%;color:var(--base-0);background-color:var(--base-70);font-size:16px;font-weight:600}.menu-container[_ngcontent-%COMP%] .profile-name[_ngcontent-%COMP%]{max-width:145px;overflow:hidden;margin-left:12px}.profile-option-icon[_ngcontent-%COMP%]{vertical-align:middle;margin:0 5px 5px 0}[_nghost-%COMP%] .collapsed .profile-wrapper{left:8px!important}[_nghost-%COMP%] .menu-item{display:flex;padding:16px!important;border-radius:4px!important}[_nghost-%COMP%] .child-list .menu-item{padding:8px 46px!important}[_nghost-%COMP%] .collapsed .menu-item{padding:0!important;width:40px;height:40px;border-radius:50%!important}[_nghost-%COMP%] .active-menu-item{background-color:var(--base-95)!important}[_nghost-%COMP%] .menu-item-title{margin-left:12px}tld-menu-icon[_ngcontent-%COMP%]{margin-right:10px}.spin[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_spinArrow .3s forwards}[_nghost-%COMP%] button.collapse-btn .mat-mdc-button-persistent-ripple, [_nghost-%COMP%] button.toggler .mat-mdc-button-persistent-ripple{display:none}[_nghost-%COMP%] .mobile .child-list .menu-item{padding:8px 54px!important} .cdk-overlay-container .profile-menu{margin:10px 0!important} .mat-mdc-menu-item .mat-icon{margin-right:5px!important} .collapsed .profile-wrapper{justify-content:center!important} .profile-menu a{font-weight:400!important;display:flex;align-items:center;gap:5px} .profile-menu a:hover{color:var(--mat-menu-item-label-text-color, var(--mat-app-on-surface))!important;text-decoration:inherit}@keyframes _ngcontent-%COMP%_spinArrow{to{transform:rotate(180deg)}}"] }); }
297
350
  }
298
351
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SideNavMenuComponent, [{
299
352
  type: Component,
300
- args: [{ selector: 'lib-side-nav-menu', template: "<div class=\"menu-container\" [style.width]=\"sideNavWidth\" fxLayout=\"column\" [class.collapsed]=\"collapsed\">\r\n <div class=\"content\" fxLayout=\"column\" fxFlexFill>\r\n <div class=\"menu-container-header\" fxLayout=\"row\" [fxLayoutAlign]=\"collapsed ? 'center center' : 'space-between center'\">\r\n <a *ngIf=\"!collapsed\" [libPlausibleEvent]=\"LOGOCLICK_PLAUSIBLE_EVENT\" fxFlex=\"3.125em\" [href]=\"baseUrl\"\r\n [attr.aria-label]=\"'MENU.ARIA_LABELS.LOGO' | translate\" (click)=\"logoClick($event)\" fxLayoutAlign=\"start center\"\r\n >\r\n <img height=\"40\" class=\"menu-logo\" [src]=\"menuLogoImage\" alt=\"logo\" />\r\n </a>\r\n \r\n <button\r\n mat-icon-button\r\n class=\"toggler\"\r\n [attr.aria-label]=\"'ARIA_LABELS.MENU_TOGGLER' | translate\"\r\n [libPlausibleEvent]=\"collapsed ? EXPAND_PLAUSIBLE_EVENT : COLLAPSE_PLAUSIBLE_EVENT\"\r\n (click)=\"toggleCollapse()\"\r\n >\r\n <mat-icon>{{ collapsed ? 'keyboard_double_arrow_right' : 'keyboard_double_arrow_left' }}</mat-icon>\r\n </button>\r\n </div>\r\n \r\n <div class=\"menu-wrapper\" fxLayout=\"column\" fxFlex>\r\n <menu-columns (toggleCollapseEvent)=\"toggleCollapse()\" [direction]=\"direction\" role=\"navigation\" fxFlex [labelsVisible]=\"!collapsed\"\r\n [active]=\"active\"></menu-columns>\r\n </div>\r\n\r\n\r\n <button *ngIf=\"userInitials\" #state=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" class=\"profile-wrapper\">\r\n <div class=\"profile-icon\">\r\n {{userInitials}}\r\n </div>\r\n\r\n <ng-container *ngIf=\"!collapsed\">\r\n <span class=\"profile-name\">\r\n {{ username }}\r\n </span>\r\n \r\n <mat-icon *ngIf=\"state.menuOpen; else iconDown\" class=\"spin\">{{\"keyboard_arrow_down\"}}</mat-icon>\r\n\r\n <ng-template #iconDown>\r\n <mat-icon class=\"spin\">{{\"keyboard_arrow_up\" }}</mat-icon>\r\n </ng-template>\r\n </ng-container>\r\n </button>\r\n\r\n <mat-menu #menu=\"matMenu\" class=\"profile-menu\">\r\n @for (item of menuSettings.userOptions; track item.label) {\r\n @if (item.isLink) {\r\n @if (item.openInNewTab) {\r\n <a class=\"mat-mdc-menu-item\" [href]=\"item.href\" target=\"_blank\">\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, isIconCustom: item.isIconCustom, isIconOutlined: item.isIconOutlined, label: item.label }\">\r\n </ng-container>\r\n </a>\r\n } @else {\r\n <a class=\"mat-mdc-menu-item\" [routerLink]=\"item.href\">\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, isIconCustom: item.isIconCustom, isIconOutlined: item.isIconOutlined, label: item.label }\">\r\n </ng-container>\r\n </a>\r\n }\r\n } @else {\r\n <button\r\n mat-menu-item\r\n class=\"profile-option\"\r\n (click)=\"item?.callback()\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, isIconCustom: item.isIconCustom, isIconOutlined: item.isIconOutlined, label: item.label }\">\r\n </ng-container>\r\n </button>\r\n }\r\n }\r\n </mat-menu>\r\n </div>\r\n\r\n<ng-template #profileMenuItem let-icon=\"icon\" let-isIconCustom=\"isIconCustom\" let-isIconOutlined=\"isIconOutlined\" let-label=\"label\">\r\n @if (icon) {\r\n @if (!isIconCustom) {\r\n <span class=\"material-icons profile-option-icon\" [class.material-icons-outlined]=\"isIconOutlined\">\r\n {{icon}}\r\n </span>\r\n } @else {\r\n <mat-icon class=\"profile-option-icon\" [svgIcon]=\"icon\"></mat-icon>\r\n }\r\n }\r\n {{ label | translate }}\r\n</ng-template>", styles: [".menu-container{white-space:nowrap;height:100%;transition:width .2s ease;min-height:100vh;overflow:auto;background:var(--base-100);border-right:2px solid var(--base-95)}.menu-container .menu-container-header{margin:24px 0;max-height:40px}.menu-container.collapsed .menu-container-header{margin:24px 0 32px!important}.menu-container .content:not(.collapsed){overflow-x:hidden;padding:0 12px}.menu-container .content:not(.collapsed) .menu-logo{margin-left:16px;max-width:100%}.menu-container .divider{width:100%}.menu-container .profile-wrapper{background:none;color:var(--base-30);display:flex;align-items:center;justify-content:start;margin:32px 16px}.menu-container .profile-icon{display:flex;justify-content:center;align-items:center;min-width:40px;height:40px;border-radius:100%;color:var(--base-0);background-color:var(--base-70);font-size:16px;font-weight:600}.menu-container .profile-name{max-width:145px;overflow:hidden;margin-left:12px}.profile-option-icon{vertical-align:middle;margin:0 5px 5px 0}:host ::ng-deep .collapsed .profile-wrapper{left:8px!important}:host ::ng-deep .menu-item{display:flex;padding:16px!important;border-radius:4px!important}:host ::ng-deep .child-list .menu-item{padding:8px 46px!important}:host ::ng-deep .collapsed .menu-item{padding:0!important;width:40px;height:40px;border-radius:50%!important}:host ::ng-deep .active-menu-item{background-color:var(--base-95)!important}:host ::ng-deep .menu-item-title{margin-left:12px}tld-menu-icon{margin-right:10px}.spin{animation:spinArrow .3s forwards}:host::ng-deep button.collapse-btn .mat-mdc-button-persistent-ripple,:host::ng-deep button.toggler .mat-mdc-button-persistent-ripple{display:none}::ng-deep .mobile-child-list{margin-left:25px!important}::ng-deep .cdk-overlay-container .profile-menu{margin:10px 0!important}::ng-deep .mat-mdc-menu-item .mat-icon{margin-right:5px!important}::ng-deep .collapsed .profile-wrapper{justify-content:center!important}::ng-deep .profile-menu a{font-weight:400!important;display:flex;align-items:center;gap:5px}::ng-deep .profile-menu a:hover{color:var(--mat-menu-item-label-text-color, var(--mat-app-on-surface))!important;text-decoration:inherit}@keyframes spinArrow{to{transform:rotate(180deg)}}\n"] }]
353
+ args: [{ selector: 'lib-side-nav-menu', template: "<div *ngIf=\"isMobile\" [fxHide]=\"!collapsed\" class=\"mobile-header\">\r\n <a [libPlausibleEvent]=\"LOGOCLICK_PLAUSIBLE_EVENT\" fxFlex=\"3.125em\" [href]=\"baseUrl\"\r\n [attr.aria-label]=\"'MENU.ARIA_LABELS.LOGO' | translate\" (click)=\"logoClick($event)\" fxLayoutAlign=\"start center\"\r\n >\r\n <img height=\"40\" width=\"40\" class=\"menu-logo\" [src]=\"menuLogoImage\" alt=\"logo\" />\r\n <span class=\"menu-product-name\">\r\n {{ productName }}\r\n </span>\r\n </a>\r\n \r\n <button\r\n mat-icon-button\r\n class=\"toggler\"\r\n [attr.aria-label]=\"'ARIA_LABELS.MENU_TOGGLER' | translate\"\r\n [libPlausibleEvent]=\"collapsed ? EXPAND_PLAUSIBLE_EVENT : COLLAPSE_PLAUSIBLE_EVENT\"\r\n (click)=\"toggleCollapse()\"\r\n >\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n</div>\r\n\r\n<div [ngClass.lt-sm]=\"'mobile'\" class=\"menu-container\" [style.width]=\"sideNavWidth\" fxLayout=\"column\" [class.collapsed]=\"collapsed\">\r\n <div class=\"content\" fxLayout=\"column\" fxFlexFill>\r\n <div class=\"menu-container-header\" fxLayout=\"row\" [fxLayoutAlign]=\"collapsed ? 'center center' : 'space-between center'\">\r\n <a *ngIf=\"!collapsed\" [libPlausibleEvent]=\"LOGOCLICK_PLAUSIBLE_EVENT\" fxFlex=\"3.125em\" [href]=\"baseUrl\"\r\n [attr.aria-label]=\"'MENU.ARIA_LABELS.LOGO' | translate\" (click)=\"logoClick($event)\" fxLayoutAlign=\"start center\"\r\n >\r\n <img height=\"40\" width=\"40\" class=\"menu-logo\" [src]=\"menuLogoImage\" alt=\"logo\" />\r\n <span class=\"menu-product-name\">\r\n {{ productName }}\r\n </span>\r\n </a>\r\n \r\n <button\r\n mat-icon-button\r\n class=\"toggler\"\r\n [attr.aria-label]=\"'ARIA_LABELS.MENU_TOGGLER' | translate\"\r\n [libPlausibleEvent]=\"collapsed ? EXPAND_PLAUSIBLE_EVENT : COLLAPSE_PLAUSIBLE_EVENT\"\r\n (click)=\"toggleCollapse()\"\r\n >\r\n @if (isMobile) {\r\n <mat-icon>close</mat-icon>\r\n } @else {\r\n <mat-icon>{{ collapsed ? 'keyboard_double_arrow_right' : 'keyboard_double_arrow_left' }}</mat-icon>\r\n }\r\n </button>\r\n </div>\r\n \r\n <div class=\"menu-wrapper\" fxLayout=\"column\" fxFlex>\r\n <menu-columns (toggleCollapseEvent)=\"toggleCollapse()\" [direction]=\"direction\" role=\"navigation\" fxFlex [isOpen]=\"!collapsed\"\r\n [active]=\"active\"></menu-columns>\r\n </div>\r\n\r\n\r\n <button *ngIf=\"userInitials\" #state=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" class=\"profile-wrapper\">\r\n <div class=\"profile-icon\">\r\n {{userInitials}}\r\n </div>\r\n\r\n <ng-container *ngIf=\"!collapsed\">\r\n <span class=\"profile-name\">\r\n {{ username }}\r\n </span>\r\n \r\n <mat-icon *ngIf=\"state.menuOpen; else iconDown\" class=\"spin\">{{\"keyboard_arrow_down\"}}</mat-icon>\r\n\r\n <ng-template #iconDown>\r\n <mat-icon class=\"spin\">{{\"keyboard_arrow_up\" }}</mat-icon>\r\n </ng-template>\r\n </ng-container>\r\n </button>\r\n\r\n <mat-menu #menu=\"matMenu\" class=\"profile-menu\">\r\n @for (item of menuSettings.userOptions; track item.label) {\r\n @if (item.isLink) {\r\n @if (item.openInNewTab) {\r\n <a class=\"mat-mdc-menu-item\" [href]=\"item.href\" target=\"_blank\">\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, isIconCustom: item.isIconCustom, isIconOutlined: item.isIconOutlined, label: item.label }\">\r\n </ng-container>\r\n </a>\r\n } @else {\r\n <a class=\"mat-mdc-menu-item\" [routerLink]=\"item.href\">\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, isIconCustom: item.isIconCustom, isIconOutlined: item.isIconOutlined, label: item.label }\">\r\n </ng-container>\r\n </a>\r\n }\r\n } @else {\r\n <button\r\n mat-menu-item\r\n class=\"profile-option\"\r\n (click)=\"item?.callback()\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, isIconCustom: item.isIconCustom, isIconOutlined: item.isIconOutlined, label: item.label }\">\r\n </ng-container>\r\n </button>\r\n }\r\n }\r\n </mat-menu>\r\n </div>\r\n\r\n<ng-template #profileMenuItem let-icon=\"icon\" let-isIconCustom=\"isIconCustom\" let-isIconOutlined=\"isIconOutlined\" let-label=\"label\">\r\n @if (icon) {\r\n @if (!isIconCustom) {\r\n <span class=\"material-icons profile-option-icon\" [class.material-icons-outlined]=\"isIconOutlined\">\r\n {{icon}}\r\n </span>\r\n } @else {\r\n <mat-icon class=\"profile-option-icon\" [svgIcon]=\"icon\"></mat-icon>\r\n }\r\n }\r\n {{ label | translate }}\r\n</ng-template>", styles: ["a{text-decoration:none}.mobile-header{display:flex;justify-content:space-between;padding:23px 27px;background-color:#fcfcfc;border:1px solid var(--base-70)}.mobile.menu-container.collapsed{display:none!important}.mobile.menu-container:not(.collapsed){display:block!important;position:absolute;min-width:100vw;min-height:100vh;z-index:1000}.mobile .profile-wrapper{position:relative}.mobile .profile-wrapper mat-icon{position:absolute!important;right:0}.menu-product-name{white-space:nowrap;margin-left:12px;font-weight:600;color:var(--primary-accent)}.menu-container{max-height:100vh;white-space:nowrap;height:100%;transition:width .2s ease;min-height:100vh;overflow:auto;background:var(--base-100);border-right:2px solid var(--base-95)}.menu-container .menu-container-header{margin:24px 0;max-height:40px}.menu-container.collapsed .menu-container-header{margin:24px 0 32px!important}.menu-container .content:not(.collapsed){overflow-x:hidden;padding:0 12px}.menu-container .content:not(.collapsed) .menu-logo{margin-left:16px;max-width:100%}.menu-container .divider{width:100%}.menu-container .profile-wrapper{background:none;color:var(--base-30);display:flex;align-items:center;justify-content:start;margin:32px 16px}.menu-container .profile-icon{display:flex;justify-content:center;align-items:center;min-width:40px;height:40px;border-radius:100%;color:var(--base-0);background-color:var(--base-70);font-size:16px;font-weight:600}.menu-container .profile-name{max-width:145px;overflow:hidden;margin-left:12px}.profile-option-icon{vertical-align:middle;margin:0 5px 5px 0}:host ::ng-deep .collapsed .profile-wrapper{left:8px!important}:host ::ng-deep .menu-item{display:flex;padding:16px!important;border-radius:4px!important}:host ::ng-deep .child-list .menu-item{padding:8px 46px!important}:host ::ng-deep .collapsed .menu-item{padding:0!important;width:40px;height:40px;border-radius:50%!important}:host ::ng-deep .active-menu-item{background-color:var(--base-95)!important}:host ::ng-deep .menu-item-title{margin-left:12px}tld-menu-icon{margin-right:10px}.spin{animation:spinArrow .3s forwards}:host::ng-deep button.collapse-btn .mat-mdc-button-persistent-ripple,:host::ng-deep button.toggler .mat-mdc-button-persistent-ripple{display:none}:host ::ng-deep .mobile .child-list .menu-item{padding:8px 54px!important}::ng-deep .cdk-overlay-container .profile-menu{margin:10px 0!important}::ng-deep .mat-mdc-menu-item .mat-icon{margin-right:5px!important}::ng-deep .collapsed .profile-wrapper{justify-content:center!important}::ng-deep .profile-menu a{font-weight:400!important;display:flex;align-items:center;gap:5px}::ng-deep .profile-menu a:hover{color:var(--mat-menu-item-label-text-color, var(--mat-app-on-surface))!important;text-decoration:inherit}@keyframes spinArrow{to{transform:rotate(180deg)}}\n"] }]
301
354
  }], () => [{ type: i1.StrapiLinkService }, { type: i2.DOMService }, { type: i3.MenuItemsService }, { type: undefined, decorators: [{
302
355
  type: Optional
303
356
  }, {
@@ -307,6 +360,8 @@ export class SideNavMenuComponent extends NavBaseComponent {
307
360
  type: Input
308
361
  }], menuSettings: [{
309
362
  type: Input
363
+ }], productName: [{
364
+ type: Input
310
365
  }] }); })();
311
366
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SideNavMenuComponent, { className: "SideNavMenuComponent", filePath: "lib\\components\\side-nav-menu\\side-nav-menu.component.ts", lineNumber: 16 }); })();
312
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXYtbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWVudS9zcmMvbGliL2NvbXBvbmVudHMvc2lkZS1uYXYtbWVudS9zaWRlLW5hdi1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tZW51L3NyYy9saWIvY29tcG9uZW50cy9zaWRlLW5hdi1tZW51L3NpZGUtbmF2LW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDRjVELDZCQUVDOztJQUR5RCwrS0FBUyx3QkFBaUIsS0FBQztJQUVuRiwwQkFBc0U7SUFDeEUsaUJBQUk7OztJQUptRixBQUFqRSxvRUFBK0MsMENBQWtDOztJQUdsRSxlQUFxQjtJQUFyQiw0REFBcUI7OztJQThCeEQsb0NBQTZEO0lBQUEsWUFBeUI7SUFBQSxpQkFBVzs7SUFBcEMsY0FBeUI7SUFBekIsMkNBQXlCOzs7SUFHcEYsb0NBQXVCO0lBQUEsWUFBd0I7SUFBQSxpQkFBVzs7SUFBbkMsY0FBd0I7SUFBeEIseUNBQXdCOzs7SUFSbkQsNkJBQWlDO0lBQy9CLGdDQUEyQjtJQUN6QixZQUNGO0lBQUEsaUJBQU87SUFJUCxBQUZBLHlHQUE2RCxrSUFFdEM7Ozs7Ozs7SUFMckIsZUFDRjtJQURFLGdEQUNGO0lBRVcsY0FBc0I7SUFBQSxBQUF0Qix3Q0FBc0IseUJBQWE7OztJQVRoRCxBQURGLHFDQUF3RyxjQUM1RTtJQUN4QixZQUNGO0lBQUEsaUJB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QUNQO1lBRVIsd0hBQW9JO1lBM0VwSSxpQkFBeUc7O1lBQTdFLHlDQUE0QjtZQUFtQiwwQ0FBNkI7WUFFbEQsZUFBc0U7WUFBdEUsd0ZBQXNFO1lBQ2xILGNBQWdCO1lBQWhCLHFDQUFnQjtZQVVsQixjQUFtRjtZQUFuRiw2R0FBbUY7O1lBR3pFLGVBQThFO1lBQTlFLGtHQUE4RTtZQUtuQyxlQUF1QjtZQUM1RSxBQURzRyxBQUFqRCx5Q0FBdUIsaUNBQXNELHNCQUNqSDtZQUlaLGNBQWtCO1lBQWxCLHVDQUFrQjtZQW1CekIsZUEwQkM7WUExQkQsMkNBMEJDOzs7aUZEeERNLG9CQUFvQjtjQUxoQyxTQUFTOzJCQUNFLG1CQUFtQjs7c0JBOEQxQixRQUFROztzQkFBSSxNQUFNO3VCQUFDLGtCQUFrQjtxQkF2RDNCLFFBQVE7a0JBQXBCLEtBQUs7WUFLRyxZQUFZO2tCQUFwQixLQUFLOztrRkFSSyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBET01TZXJ2aWNlLCBQbGF1c2libGVFdmVudCB9IGZyb20gJ0B0aWxkZS1ubHAvbmd4LWNvbW1vbic7XHJcbmltcG9ydCB7IFN0cmFwaUxpbmtTZXJ2aWNlIH0gZnJvbSAnQHRpbGRlLW5scC9uZ3gtc3RyYXBpJztcclxuaW1wb3J0IHsgTUVOVV9TSEFSRURfQ09ORklHIH0gZnJvbSAnLi4vLi4vaW5qZWN0aW9uLXRva2Vucyc7XHJcbmltcG9ydCB7IE1lbnVTaGFyZWRDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvbWVudS1zaGFyZWQtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgTmF2QmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL25hdi1iYXNlL25hdi1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNpZGVOYXZTZXR0aW5ncyB9IGZyb20gJy4vbW9kZWxzL3NpZGUtbmF2LXNldHRpbmdzLm1vZGVsJztcclxuaW1wb3J0IHsgTWVudUl0ZW1zU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21lbnUtaXRlbXMuc2VydmljZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItc2lkZS1uYXYtbWVudScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZGUtbmF2LW1lbnUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NpZGUtbmF2LW1lbnUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2lkZU5hdk1lbnVDb21wb25lbnQgZXh0ZW5kcyBOYXZCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gICN1c2VybmFtZSE6IHN0cmluZztcclxuICBnZXQgdXNlcm5hbWUoKSB7IHJldHVybiB0aGlzLiN1c2VybmFtZTsgfVxyXG4gIEBJbnB1dCgpIHNldCB1c2VybmFtZSh2YWx1ZSkge1xyXG4gICAgdGhpcy4jdXNlcm5hbWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuc2V0VXNlckluaXRpYWxzKCk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBtZW51U2V0dGluZ3M6IFNpZGVOYXZTZXR0aW5ncyA9IHtcclxuICAgIGV4cGFuZGVkV2lkdGg6ICcyNDFweCcsXHJcbiAgICBjb2xsYXBzZWRXaWR0aDogJzU2cHgnLFxyXG4gICAgbWVudUxvZ286ICcnLFxyXG4gICAgbWVudUxvZ29Db2xsYXBzZWQ6ICcnLFxyXG4gICAgZGlzYWJsZVN0cmFwaTogZmFsc2VcclxuICB9XHJcblxyXG4gIHVzZXJJbml0aWFscyE6IHN0cmluZztcclxuICBjb2xsYXBzZWQgPSBmYWxzZTtcclxuXHJcbiAgcmVhZG9ubHkgQ09MTEFQU0VEX0xPQ0FMX1NUT1JBR0VfS0VZID0gXCJUTERfTUVOVV9TSURFX05BVl9DT0xMQVBTRURcIjtcclxuXHJcbiAgLy8jcmVnaW9uIFBsYXVzaWJsZSBldmVudCB2YXJpYWJsZXMgZm9yIGNvbGxhcHNlIGJ1dHRvblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgQ09MTEFQU0VfUExBVVNJQkxFX0VWRU5UX0lEID0gXCJjb2xsYXBzZU1lbnVcIjtcclxuICBwcml2YXRlIHJlYWRvbmx5IENPTExBUFNFX1BMQVVTSUJMRV9BQ1RJT05fS0VZID0gXCJhY3Rpb25cIjtcclxuICBwcml2YXRlIHJlYWRvbmx5IExPR09DTElDS19QTEFVU0lCTEVfQUNUSU9OX0lEID0gXCJ0aWxkZV9sb2dvX2NsaWNrXCJcclxuXHJcbiAgcmVhZG9ubHkgTE9HT0NMSUNLX1BMQVVTSUJMRV9FVkVOVDogUGxhdXNpYmxlRXZlbnQgPSB7XHJcbiAgICBldmVudElkOiB0aGlzLkxPR09DTElDS19QTEFVU0lCTEVfQUNUSU9OX0lELFxyXG4gICAgcHJvcGVydGllczogW11cclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IEVYUEFORF9QTEFVU0lCTEVfRVZFTlQ6IFBsYXVzaWJsZUV2ZW50ID0ge1xyXG4gICAgZXZlbnRJZDogdGhpcy5DT0xMQVBTRV9QTEFVU0lCTEVfRVZFTlRfSUQsXHJcbiAgICBwcm9wZXJ0aWVzOiBbeyBrZXk6IHRoaXMuQ09MTEFQU0VfUExBVVNJQkxFX0FDVElPTl9LRVksIHZhbHVlOiBcImV4cGFuZFwiIH1dXHJcbiAgfVxyXG5cclxuICByZWFkb25seSBDT0xMQVBTRV9QTEFVU0lCTEVfRVZFTlQ6IFBsYXVzaWJsZUV2ZW50ID0ge1xyXG4gICAgZXZlbnRJZDogdGhpcy5DT0xMQVBTRV9QTEFVU0lCTEVfRVZFTlRfSUQsXHJcbiAgICBwcm9wZXJ0aWVzOiBbeyBrZXk6IHRoaXMuQ09MTEFQU0VfUExBVVNJQkxFX0FDVElPTl9LRVksIHZhbHVlOiBcImNvbGxhcHNlXCIgfV1cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIHJlYWRvbmx5IGJhc2VVcmw6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgZ2V0IG1lbnVMb2dvSW1hZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNvbGxhcHNlZFxyXG4gICAgICA/IHRoaXMubWVudVNldHRpbmdzLm1lbnVMb2dvQ29sbGFwc2VkID8/IHRoaXMubWVudVNldHRpbmdzLm1lbnVMb2dvXHJcbiAgICAgIDogdGhpcy5tZW51U2V0dGluZ3MubWVudUxvZ287XHJcbiAgfVxyXG5cclxuICBnZXQgc2lkZU5hdldpZHRoKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5jb2xsYXBzZWQgPyB0aGlzLm1lbnVTZXR0aW5ncy5jb2xsYXBzZWRXaWR0aCA6IHRoaXMubWVudVNldHRpbmdzLmV4cGFuZGVkV2lkdGg7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBzdHJhcGlMaW5rU2VydmljZTogU3RyYXBpTGlua1NlcnZpY2UsXHJcbiAgICByZWFkb25seSBkb21TZXJ2aWNlOiBET01TZXJ2aWNlLFxyXG4gICAgcmVhZG9ubHkgbWVudUl0ZW1zOiBNZW51SXRlbXNTZXJ2aWNlLFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChNRU5VX1NIQVJFRF9DT05GSUcpIG1lbnVTaGFyZWRDb25maWc6IE1lbnVTaGFyZWRDb25maWdcclxuICApIHtcclxuICAgIHN1cGVyKG1lbnVJdGVtcyk7XHJcbiAgICB0aGlzLmJhc2VVcmwgPSBtZW51U2hhcmVkQ29uZmlnLmJhc2VVcmwgfHwgJyc7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB0aGlzLmdldENvbGFwc2VkRnJvbUxvY2FsU3RvcmFnZSgpO1xyXG4gICAgdGhpcy5zZXRVc2VySW5pdGlhbHMoKTtcclxuICB9XHJcblxyXG4gIGxvZ29DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdHJhcGlMaW5rU2VydmljZS5zdHJhcGlMaW5rQ2xpY2soZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQ29sbGFwc2UoKSB7XHJcbiAgICB0aGlzLmNvbGxhcHNlZCA9ICF0aGlzLmNvbGxhcHNlZDtcclxuICAgIHRoaXMuc2V0Q29sYXBzZWRGcm9tTG9jYWxTdG9yYWdlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENvbGFwc2VkRnJvbUxvY2FsU3RvcmFnZSgpIHtcclxuICAgIGlmICghdGhpcy5kb21TZXJ2aWNlLmxvY2FsU3RvcmFnZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jb2xsYXBzZWQgPSB0aGlzLmRvbVNlcnZpY2UubG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5DT0xMQVBTRURfTE9DQUxfU1RPUkFHRV9LRVkpID09ICd0cnVlJyA/IHRydWUgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Q29sYXBzZWRGcm9tTG9jYWxTdG9yYWdlKCkge1xyXG4gICAgaWYgKCF0aGlzLmRvbVNlcnZpY2UubG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuZG9tU2VydmljZS5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLkNPTExBUFNFRF9MT0NBTF9TVE9SQUdFX0tFWSwgdGhpcy5jb2xsYXBzZWQudG9TdHJpbmcoKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFVzZXJJbml0aWFscygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy51c2VybmFtZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZGlzcGxheWluZyBmaXJzdCBsZXR0ZXJzIG9mIG5hbWUgYW5kIHN1cm5hbWVcclxuICAgIGNvbnN0IHNwbGl0dGVkVXNlcm5hbWUgPSB0aGlzLnVzZXJuYW1lLnNwbGl0KCcgJyk7XHJcblxyXG4gICAgaWYgKHNwbGl0dGVkVXNlcm5hbWUubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIC8vIElmIHRoZXJlJ3Mgb25seSBvbmUgd29yZCwgdXNlIHRoZSBmaXJzdCBsZXR0ZXJcclxuICAgICAgdGhpcy51c2VySW5pdGlhbHMgPSBzcGxpdHRlZFVzZXJuYW1lWzBdWzBdO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyBJZiB0aGVyZSBhcmUgbW9yZSB0aGFuIG9uZSB3b3JkLCB1c2UgdGhlIGZpcnN0IGxldHRlciBvZiB0aGUgZmlyc3QgdHdvIG5hbWVzXHJcbiAgICB0aGlzLnVzZXJJbml0aWFscyA9IHNwbGl0dGVkVXNlcm5hbWVbMF1bMF0gKyBzcGxpdHRlZFVzZXJuYW1lWzFdWzBdO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibWVudS1jb250YWluZXJcIiBbc3R5bGUud2lkdGhdPVwic2lkZU5hdldpZHRoXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIiBbY2xhc3MuY29sbGFwc2VkXT1cImNvbGxhcHNlZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjb250ZW50XCIgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeEZsZXhGaWxsPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1lbnUtY29udGFpbmVyLWhlYWRlclwiIGZ4TGF5b3V0PVwicm93XCIgW2Z4TGF5b3V0QWxpZ25dPVwiY29sbGFwc2VkID8gJ2NlbnRlciBjZW50ZXInIDogJ3NwYWNlLWJldHdlZW4gY2VudGVyJ1wiPlxyXG4gICAgICA8YSAqbmdJZj1cIiFjb2xsYXBzZWRcIiBbbGliUGxhdXNpYmxlRXZlbnRdPVwiTE9HT0NMSUNLX1BMQVVTSUJMRV9FVkVOVFwiIGZ4RmxleD1cIjMuMTI1ZW1cIiBbaHJlZl09XCJiYXNlVXJsXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidNRU5VLkFSSUFfTEFCRUxTLkxPR08nIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cImxvZ29DbGljaygkZXZlbnQpXCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiXHJcbiAgICAgID5cclxuICAgICAgICA8aW1nIGhlaWdodD1cIjQwXCIgY2xhc3M9XCJtZW51LWxvZ29cIiBbc3JjXT1cIm1lbnVMb2dvSW1hZ2VcIiBhbHQ9XCJsb2dvXCIgLz5cclxuICAgICAgPC9hPlxyXG4gICAgICBcclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwidG9nZ2xlclwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQVJJQV9MQUJFTFMuTUVOVV9UT0dHTEVSJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgW2xpYlBsYXVzaWJsZUV2ZW50XT1cImNvbGxhcHNlZCA/IEVYUEFORF9QTEFVU0lCTEVfRVZFTlQgOiBDT0xMQVBTRV9QTEFVU0lCTEVfRVZFTlRcIlxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVDb2xsYXBzZSgpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxtYXQtaWNvbj57eyBjb2xsYXBzZWQgPyAna2V5Ym9hcmRfZG91YmxlX2Fycm93X3JpZ2h0JyA6ICdrZXlib2FyZF9kb3VibGVfYXJyb3dfbGVmdCcgfX08L21hdC1pY29uPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICBcclxuICAgIDxkaXYgY2xhc3M9XCJtZW51LXdyYXBwZXJcIiBmeExheW91dD1cImNvbHVtblwiIGZ4RmxleD5cclxuICAgICAgPG1lbnUtY29sdW1ucyAodG9nZ2xlQ29sbGFwc2VFdmVudCk9XCJ0b2dnbGVDb2xsYXBzZSgpXCIgW2RpcmVjdGlvbl09XCJkaXJlY3Rpb25cIiByb2xlPVwibmF2aWdhdGlvblwiIGZ4RmxleCBbbGFiZWxzVmlzaWJsZV09XCIhY29sbGFwc2VkXCJcclxuICAgICAgICBbYWN0aXZlXT1cImFjdGl2ZVwiPjwvbWVudS1jb2x1bW5zPlxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDxidXR0b24gKm5nSWY9XCJ1c2VySW5pdGlhbHNcIiAjc3RhdGU9XCJtYXRNZW51VHJpZ2dlclwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgY2xhc3M9XCJwcm9maWxlLXdyYXBwZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInByb2ZpbGUtaWNvblwiPlxyXG4gICAgICAgIHt7dXNlckluaXRpYWxzfX1cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbGxhcHNlZFwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwicHJvZmlsZS1uYW1lXCI+XHJcbiAgICAgICAgICB7eyB1c2VybmFtZSB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICBcclxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJzdGF0ZS5tZW51T3BlbjsgZWxzZSBpY29uRG93blwiIGNsYXNzPVwic3BpblwiPnt7XCJrZXlib2FyZF9hcnJvd19kb3duXCJ9fTwvbWF0LWljb24+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjaWNvbkRvd24+XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJzcGluXCI+e3tcImtleWJvYXJkX2Fycm93X3VwXCIgfX08L21hdC1pY29uPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiIGNsYXNzPVwicHJvZmlsZS1tZW51XCI+XHJcbiAgICAgIEBmb3IgKGl0ZW0gb2YgbWVudVNldHRpbmdzLnVzZXJPcHRpb25zOyB0cmFjayBpdGVtLmxhYmVsKSB7XHJcbiAgICAgICAgQGlmIChpdGVtLmlzTGluaykge1xyXG4gICAgICAgICAgQGlmIChpdGVtLm9wZW5Jbk5ld1RhYikge1xyXG4gICAgICAgICAgICA8YSBjbGFzcz1cIm1hdC1tZGMtbWVudS1pdGVtXCIgW2hyZWZdPVwiaXRlbS5ocmVmXCIgdGFyZ2V0PVwiX2JsYW5rXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcm9maWxlTWVudUl0ZW07IGNvbnRleHQ6IHsgaWNvbjogaXRlbS5pY29uLCBpc0ljb25DdXN0b206IGl0ZW0uaXNJY29uQ3VzdG9tLCBpc0ljb25PdXRsaW5lZDogaXRlbS5pc0ljb25PdXRsaW5lZCwgbGFiZWw6IGl0ZW0ubGFiZWwgfVwiPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJtYXQtbWRjLW1lbnUtaXRlbVwiIFtyb3V0ZXJMaW5rXT1cIml0ZW0uaHJlZlwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvZmlsZU1lbnVJdGVtOyBjb250ZXh0OiB7IGljb246IGl0ZW0uaWNvbiwgaXNJY29uQ3VzdG9tOiBpdGVtLmlzSWNvbkN1c3RvbSwgaXNJY29uT3V0bGluZWQ6IGl0ZW0uaXNJY29uT3V0bGluZWQsIGxhYmVsOiBpdGVtLmxhYmVsIH1cIj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgbWF0LW1lbnUtaXRlbVxyXG4gICAgICAgICAgY2xhc3M9XCJwcm9maWxlLW9wdGlvblwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiaXRlbT8uY2FsbGJhY2soKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInByb2ZpbGVNZW51SXRlbTsgY29udGV4dDogeyBpY29uOiBpdGVtLmljb24sIGlzSWNvbkN1c3RvbTogaXRlbS5pc0ljb25DdXN0b20sIGlzSWNvbk91dGxpbmVkOiBpdGVtLmlzSWNvbk91dGxpbmVkLCBsYWJlbDogaXRlbS5sYWJlbCB9XCI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIDwvbWF0LW1lbnU+XHJcbiAgPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI3Byb2ZpbGVNZW51SXRlbSBsZXQtaWNvbj1cImljb25cIiBsZXQtaXNJY29uQ3VzdG9tPVwiaXNJY29uQ3VzdG9tXCIgbGV0LWlzSWNvbk91dGxpbmVkPVwiaXNJY29uT3V0bGluZWRcIiBsZXQtbGFiZWw9XCJsYWJlbFwiPlxyXG4gIEBpZiAoaWNvbikge1xyXG4gICAgQGlmICghaXNJY29uQ3VzdG9tKSB7XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgcHJvZmlsZS1vcHRpb24taWNvblwiIFtjbGFzcy5tYXRlcmlhbC1pY29ucy1vdXRsaW5lZF09XCJpc0ljb25PdXRsaW5lZFwiPlxyXG4gICAgICAgIHt7aWNvbn19XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIH0gQGVsc2Uge1xyXG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJwcm9maWxlLW9wdGlvbi1pY29uXCIgW3N2Z0ljb25dPVwiaWNvblwiPjwvbWF0LWljb24+XHJcbiAgICB9XHJcbiAgfVxyXG4gIHt7IGxhYmVsIHwgdHJhbnNsYXRlIH19XHJcbjwvbmctdGVtcGxhdGU+Il19
367
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXYtbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWVudS9zcmMvbGliL2NvbXBvbmVudHMvc2lkZS1uYXYtbWVudS9zaWRlLW5hdi1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tZW51L3NyYy9saWIvY29tcG9uZW50cy9zaWRlLW5hdi1tZW51L3NpZGUtbmF2LW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUE4QixnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXJGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNKOUQsQUFESiwrQkFBa0UsWUFHN0Q7O0lBRHlELGlMQUFTLHdCQUFpQixLQUFDO0lBRW5GLDBCQUFpRjtJQUNqRixnQ0FBZ0M7SUFDOUIsWUFDRjtJQUNGLEFBREUsaUJBQU8sRUFDTDtJQUVKLGlDQU1DOztJQURDLGdMQUFTLHVCQUFnQixLQUFDO0lBRTFCLGdDQUFVO0lBQUEsb0JBQUk7SUFFcEIsQUFESSxBQURnQixpQkFBVyxFQUNsQixFQUNQOzs7SUFuQmdCLDBDQUFxQjtJQUNwQyxjQUErQztJQUFrQixBQUFqRSxvRUFBK0MsMENBQWtDOztJQUdwQyxlQUFxQjtJQUFyQiw0REFBcUI7SUFFakUsZUFDRjtJQURFLG1EQUNGO0lBT0EsY0FBbUY7SUFBbkYsc0hBQW1GOzs7OztJQVVuRiw2QkFFQzs7SUFEeUQsK0tBQVMsd0JBQWlCLEtBQUM7SUFFbkYsMEJBQWlG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OztpRkRwRk0sb0JBQW9CO2NBTGhDLFNBQVM7MkJBQ0UsbUJBQW1COztzQkFpRTFCLFFBQVE7O3NCQUFJLE1BQU07dUJBQUMsa0JBQWtCO3FCQTFEM0IsUUFBUTtrQkFBcEIsS0FBSztZQUtHLFlBQVk7a0JBQXBCLEtBQUs7WUFRRyxXQUFXO2tCQUFuQixLQUFLOztrRkFoQkssb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRE9NU2VydmljZSwgUGxhdXNpYmxlRXZlbnQsIFJlc29sdXRpb25IZWxwZXIgfSBmcm9tICdAdGlsZGUtbmxwL25neC1jb21tb24nO1xyXG5pbXBvcnQgeyBTdHJhcGlMaW5rU2VydmljZSB9IGZyb20gJ0B0aWxkZS1ubHAvbmd4LXN0cmFwaSc7XHJcbmltcG9ydCB7IE1FTlVfU0hBUkVEX0NPTkZJRyB9IGZyb20gJy4uLy4uL2luamVjdGlvbi10b2tlbnMnO1xyXG5pbXBvcnQgeyBNZW51U2hhcmVkQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL21lbnUtc2hhcmVkLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IE5hdkJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9uYXYtYmFzZS9uYXYtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTaWRlTmF2U2V0dGluZ3MgfSBmcm9tICcuL21vZGVscy9zaWRlLW5hdi1zZXR0aW5ncy5tb2RlbCc7XHJcbmltcG9ydCB7IE1lbnVJdGVtc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tZW51LWl0ZW1zLnNlcnZpY2UnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXNpZGUtbmF2LW1lbnUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zaWRlLW5hdi1tZW51LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zaWRlLW5hdi1tZW51LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNpZGVOYXZNZW51Q29tcG9uZW50IGV4dGVuZHMgTmF2QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAjdXNlcm5hbWUhOiBzdHJpbmc7XHJcbiAgZ2V0IHVzZXJuYW1lKCkgeyByZXR1cm4gdGhpcy4jdXNlcm5hbWU7IH1cclxuICBASW5wdXQoKSBzZXQgdXNlcm5hbWUodmFsdWUpIHtcclxuICAgIHRoaXMuI3VzZXJuYW1lID0gdmFsdWU7XHJcbiAgICB0aGlzLnNldFVzZXJJbml0aWFscygpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgbWVudVNldHRpbmdzOiBTaWRlTmF2U2V0dGluZ3MgPSB7XHJcbiAgICBleHBhbmRlZFdpZHRoOiAnMjQxcHgnLFxyXG4gICAgY29sbGFwc2VkV2lkdGg6ICc1NnB4JyxcclxuICAgIG1lbnVMb2dvOiAnJyxcclxuICAgIG1lbnVMb2dvQ29sbGFwc2VkOiAnJyxcclxuICAgIGRpc2FibGVTdHJhcGk6IGZhbHNlXHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBwcm9kdWN0TmFtZSE6IHN0cmluZztcclxuXHJcbiAgdXNlckluaXRpYWxzITogc3RyaW5nO1xyXG4gIGNvbGxhcHNlZCA9IGZhbHNlO1xyXG4gIGlzTW9iaWxlID0gUmVzb2x1dGlvbkhlbHBlci5pc01vYmlsZVJlcygpO1xyXG5cclxuICByZWFkb25seSBDT0xMQVBTRURfTE9DQUxfU1RPUkFHRV9LRVkgPSBcIlRMRF9NRU5VX1NJREVfTkFWX0NPTExBUFNFRFwiO1xyXG5cclxuICAvLyNyZWdpb24gUGxhdXNpYmxlIGV2ZW50IHZhcmlhYmxlcyBmb3IgY29sbGFwc2UgYnV0dG9uXHJcbiAgcHJpdmF0ZSByZWFkb25seSBDT0xMQVBTRV9QTEFVU0lCTEVfRVZFTlRfSUQgPSBcImNvbGxhcHNlTWVudVwiO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgQ09MTEFQU0VfUExBVVNJQkxFX0FDVElPTl9LRVkgPSBcImFjdGlvblwiO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgTE9HT0NMSUNLX1BMQVVTSUJMRV9BQ1RJT05fSUQgPSBcInRpbGRlX2xvZ29fY2xpY2tcIlxyXG5cclxuICByZWFkb25seSBMT0dPQ0xJQ0tfUExBVVNJQkxFX0VWRU5UOiBQbGF1c2libGVFdmVudCA9IHtcclxuICAgIGV2ZW50SWQ6IHRoaXMuTE9HT0NMSUNLX1BMQVVTSUJMRV9BQ1RJT05fSUQsXHJcbiAgICBwcm9wZXJ0aWVzOiBbXVxyXG4gIH1cclxuXHJcbiAgcmVhZG9ubHkgRVhQQU5EX1BMQVVTSUJMRV9FVkVOVDogUGxhdXNpYmxlRXZlbnQgPSB7XHJcbiAgICBldmVudElkOiB0aGlzLkNPTExBUFNFX1BMQVVTSUJMRV9FVkVOVF9JRCxcclxuICAgIHByb3BlcnRpZXM6IFt7IGtleTogdGhpcy5DT0xMQVBTRV9QTEFVU0lCTEVfQUNUSU9OX0tFWSwgdmFsdWU6IFwiZXhwYW5kXCIgfV1cclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IENPTExBUFNFX1BMQVVTSUJMRV9FVkVOVDogUGxhdXNpYmxlRXZlbnQgPSB7XHJcbiAgICBldmVudElkOiB0aGlzLkNPTExBUFNFX1BMQVVTSUJMRV9FVkVOVF9JRCxcclxuICAgIHByb3BlcnRpZXM6IFt7IGtleTogdGhpcy5DT0xMQVBTRV9QTEFVU0lCTEVfQUNUSU9OX0tFWSwgdmFsdWU6IFwiY29sbGFwc2VcIiB9XVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgcmVhZG9ubHkgYmFzZVVybDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuICBnZXQgbWVudUxvZ29JbWFnZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY29sbGFwc2VkXHJcbiAgICAgID8gdGhpcy5tZW51U2V0dGluZ3MubWVudUxvZ29Db2xsYXBzZWQgPz8gdGhpcy5tZW51U2V0dGluZ3MubWVudUxvZ29cclxuICAgICAgOiB0aGlzLm1lbnVTZXR0aW5ncy5tZW51TG9nbztcclxuICB9XHJcblxyXG4gIGdldCBzaWRlTmF2V2lkdGgoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLmNvbGxhcHNlZCA/IHRoaXMubWVudVNldHRpbmdzLmNvbGxhcHNlZFdpZHRoIDogdGhpcy5tZW51U2V0dGluZ3MuZXhwYW5kZWRXaWR0aDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHN0cmFwaUxpbmtTZXJ2aWNlOiBTdHJhcGlMaW5rU2VydmljZSxcclxuICAgIHJlYWRvbmx5IGRvbVNlcnZpY2U6IERPTVNlcnZpY2UsXHJcbiAgICByZWFkb25seSBtZW51SXRlbXM6IE1lbnVJdGVtc1NlcnZpY2UsXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1FTlVfU0hBUkVEX0NPTkZJRykgbWVudVNoYXJlZENvbmZpZzogTWVudVNoYXJlZENvbmZpZ1xyXG4gICkge1xyXG4gICAgc3VwZXIobWVudUl0ZW1zKTtcclxuICAgIHRoaXMuYmFzZVVybCA9IG1lbnVTaGFyZWRDb25maWcuYmFzZVVybCB8fCAnJztcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIHRoaXMuZ2V0Q29sYXBzZWRGcm9tTG9jYWxTdG9yYWdlKCk7XHJcbiAgICB0aGlzLnNldFVzZXJJbml0aWFscygpO1xyXG4gIH1cclxuXHJcbiAgbG9nb0NsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLnN0cmFwaUxpbmtTZXJ2aWNlLnN0cmFwaUxpbmtDbGljayhldmVudCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVDb2xsYXBzZSgpIHtcclxuICAgIHRoaXMuY29sbGFwc2VkID0gIXRoaXMuY29sbGFwc2VkO1xyXG4gICAgdGhpcy5zZXRDb2xhcHNlZEZyb21Mb2NhbFN0b3JhZ2UoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q29sYXBzZWRGcm9tTG9jYWxTdG9yYWdlKCkge1xyXG4gICAgaWYgKCF0aGlzLmRvbVNlcnZpY2UubG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNvbGxhcHNlZCA9ICh0aGlzLmRvbVNlcnZpY2UubG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5DT0xMQVBTRURfTE9DQUxfU1RPUkFHRV9LRVkpID09ICd0cnVlJyB8fCB0aGlzLmlzTW9iaWxlKSA/IHRydWUgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Q29sYXBzZWRGcm9tTG9jYWxTdG9yYWdlKCkge1xyXG4gICAgaWYgKCF0aGlzLmRvbVNlcnZpY2UubG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuZG9tU2VydmljZS5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLkNPTExBUFNFRF9MT0NBTF9TVE9SQUdFX0tFWSwgdGhpcy5jb2xsYXBzZWQudG9TdHJpbmcoKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFVzZXJJbml0aWFscygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy51c2VybmFtZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZGlzcGxheWluZyBmaXJzdCBsZXR0ZXJzIG9mIG5hbWUgYW5kIHN1cm5hbWVcclxuICAgIGNvbnN0IHNwbGl0dGVkVXNlcm5hbWUgPSB0aGlzLnVzZXJuYW1lLnNwbGl0KCcgJyk7XHJcblxyXG4gICAgaWYgKHNwbGl0dGVkVXNlcm5hbWUubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIC8vIElmIHRoZXJlJ3Mgb25seSBvbmUgd29yZCwgdXNlIHRoZSBmaXJzdCBsZXR0ZXJcclxuICAgICAgdGhpcy51c2VySW5pdGlhbHMgPSBzcGxpdHRlZFVzZXJuYW1lWzBdWzBdO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyBJZiB0aGVyZSBhcmUgbW9yZSB0aGFuIG9uZSB3b3JkLCB1c2UgdGhlIGZpcnN0IGxldHRlciBvZiB0aGUgZmlyc3QgdHdvIG5hbWVzXHJcbiAgICB0aGlzLnVzZXJJbml0aWFscyA9IHNwbGl0dGVkVXNlcm5hbWVbMF1bMF0gKyBzcGxpdHRlZFVzZXJuYW1lWzFdWzBdO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwiaXNNb2JpbGVcIiBbZnhIaWRlXT1cIiFjb2xsYXBzZWRcIiBjbGFzcz1cIm1vYmlsZS1oZWFkZXJcIj5cclxuICAgIDxhIFtsaWJQbGF1c2libGVFdmVudF09XCJMT0dPQ0xJQ0tfUExBVVNJQkxFX0VWRU5UXCIgZnhGbGV4PVwiMy4xMjVlbVwiIFtocmVmXT1cImJhc2VVcmxcIlxyXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidNRU5VLkFSSUFfTEFCRUxTLkxPR08nIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cImxvZ29DbGljaygkZXZlbnQpXCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiXHJcbiAgICA+XHJcbiAgICAgIDxpbWcgaGVpZ2h0PVwiNDBcIiB3aWR0aD1cIjQwXCIgY2xhc3M9XCJtZW51LWxvZ29cIiBbc3JjXT1cIm1lbnVMb2dvSW1hZ2VcIiBhbHQ9XCJsb2dvXCIgLz5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LXByb2R1Y3QtbmFtZVwiPlxyXG4gICAgICAgIHt7IHByb2R1Y3ROYW1lIH19XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYT5cclxuICAgIFxyXG4gICAgPGJ1dHRvblxyXG4gICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgY2xhc3M9XCJ0b2dnbGVyXCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQVJJQV9MQUJFTFMuTUVOVV9UT0dHTEVSJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgIFtsaWJQbGF1c2libGVFdmVudF09XCJjb2xsYXBzZWQgPyBFWFBBTkRfUExBVVNJQkxFX0VWRU5UIDogQ09MTEFQU0VfUExBVVNJQkxFX0VWRU5UXCJcclxuICAgICAgKGNsaWNrKT1cInRvZ2dsZUNvbGxhcHNlKClcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWljb24+bWVudTwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IFtuZ0NsYXNzLmx0LXNtXT1cIidtb2JpbGUnXCIgY2xhc3M9XCJtZW51LWNvbnRhaW5lclwiIFtzdHlsZS53aWR0aF09XCJzaWRlTmF2V2lkdGhcIiBmeExheW91dD1cImNvbHVtblwiIFtjbGFzcy5jb2xsYXBzZWRdPVwiY29sbGFwc2VkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIiBmeExheW91dD1cImNvbHVtblwiIGZ4RmxleEZpbGw+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWVudS1jb250YWluZXItaGVhZGVyXCIgZnhMYXlvdXQ9XCJyb3dcIiBbZnhMYXlvdXRBbGlnbl09XCJjb2xsYXBzZWQgPyAnY2VudGVyIGNlbnRlcicgOiAnc3BhY2UtYmV0d2VlbiBjZW50ZXInXCI+XHJcbiAgICAgIDxhICpuZ0lmPVwiIWNvbGxhcHNlZFwiIFtsaWJQbGF1c2libGVFdmVudF09XCJMT0dPQ0xJQ0tfUExBVVNJQkxFX0VWRU5UXCIgZnhGbGV4PVwiMy4xMjVlbVwiIFtocmVmXT1cImJhc2VVcmxcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01FTlUuQVJJQV9MQUJFTFMuTE9HTycgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwibG9nb0NsaWNrKCRldmVudClcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpbWcgaGVpZ2h0PVwiNDBcIiB3aWR0aD1cIjQwXCIgY2xhc3M9XCJtZW51LWxvZ29cIiBbc3JjXT1cIm1lbnVMb2dvSW1hZ2VcIiBhbHQ9XCJsb2dvXCIgLz5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtcHJvZHVjdC1uYW1lXCI+XHJcbiAgICAgICAgICB7eyBwcm9kdWN0TmFtZSB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9hPlxyXG4gICAgICBcclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwidG9nZ2xlclwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQVJJQV9MQUJFTFMuTUVOVV9UT0dHTEVSJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgW2xpYlBsYXVzaWJsZUV2ZW50XT1cImNvbGxhcHNlZCA/IEVYUEFORF9QTEFVU0lCTEVfRVZFTlQgOiBDT0xMQVBTRV9QTEFVU0lCTEVfRVZFTlRcIlxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVDb2xsYXBzZSgpXCJcclxuICAgICAgPlxyXG4gICAgICAgIEBpZiAoaXNNb2JpbGUpIHtcclxuICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICA8bWF0LWljb24+e3sgY29sbGFwc2VkID8gJ2tleWJvYXJkX2RvdWJsZV9hcnJvd19yaWdodCcgOiAna2V5Ym9hcmRfZG91YmxlX2Fycm93X2xlZnQnIH19PC9tYXQtaWNvbj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgIFxyXG4gICAgPGRpdiBjbGFzcz1cIm1lbnUtd3JhcHBlclwiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhGbGV4PlxyXG4gICAgICA8bWVudS1jb2x1bW5zICh0b2dnbGVDb2xsYXBzZUV2ZW50KT1cInRvZ2dsZUNvbGxhcHNlKClcIiBbZGlyZWN0aW9uXT1cImRpcmVjdGlvblwiIHJvbGU9XCJuYXZpZ2F0aW9uXCIgZnhGbGV4IFtpc09wZW5dPVwiIWNvbGxhcHNlZFwiXHJcbiAgICAgICAgW2FjdGl2ZV09XCJhY3RpdmVcIj48L21lbnUtY29sdW1ucz5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICA8YnV0dG9uICpuZ0lmPVwidXNlckluaXRpYWxzXCIgI3N0YXRlPVwibWF0TWVudVRyaWdnZXJcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIGNsYXNzPVwicHJvZmlsZS13cmFwcGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlLWljb25cIj5cclxuICAgICAgICB7e3VzZXJJbml0aWFsc319XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2xsYXBzZWRcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInByb2ZpbGUtbmFtZVwiPlxyXG4gICAgICAgICAge3sgdXNlcm5hbWUgfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgXHJcbiAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwic3RhdGUubWVudU9wZW47IGVsc2UgaWNvbkRvd25cIiBjbGFzcz1cInNwaW5cIj57e1wia2V5Ym9hcmRfYXJyb3dfZG93blwifX08L21hdC1pY29uPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI2ljb25Eb3duPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwic3BpblwiPnt7XCJrZXlib2FyZF9hcnJvd191cFwiIH19PC9tYXQtaWNvbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cInByb2ZpbGUtbWVudVwiPlxyXG4gICAgICBAZm9yIChpdGVtIG9mIG1lbnVTZXR0aW5ncy51c2VyT3B0aW9uczsgdHJhY2sgaXRlbS5sYWJlbCkge1xyXG4gICAgICAgIEBpZiAoaXRlbS5pc0xpbmspIHtcclxuICAgICAgICAgIEBpZiAoaXRlbS5vcGVuSW5OZXdUYWIpIHtcclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJtYXQtbWRjLW1lbnUtaXRlbVwiIFtocmVmXT1cIml0ZW0uaHJlZlwiIHRhcmdldD1cIl9ibGFua1wiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvZmlsZU1lbnVJdGVtOyBjb250ZXh0OiB7IGljb246IGl0ZW0uaWNvbiwgaXNJY29uQ3VzdG9tOiBpdGVtLmlzSWNvbkN1c3RvbSwgaXNJY29uT3V0bGluZWQ6IGl0ZW0uaXNJY29uT3V0bGluZWQsIGxhYmVsOiBpdGVtLmxhYmVsIH1cIj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwibWF0LW1kYy1tZW51LWl0ZW1cIiBbcm91dGVyTGlua109XCJpdGVtLmhyZWZcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInByb2ZpbGVNZW51SXRlbTsgY29udGV4dDogeyBpY29uOiBpdGVtLmljb24sIGlzSWNvbkN1c3RvbTogaXRlbS5pc0ljb25DdXN0b20sIGlzSWNvbk91dGxpbmVkOiBpdGVtLmlzSWNvbk91dGxpbmVkLCBsYWJlbDogaXRlbS5sYWJlbCB9XCI+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxyXG4gICAgICAgICAgICBjbGFzcz1cInByb2ZpbGUtb3B0aW9uXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIml0ZW0/LmNhbGxiYWNrKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcm9maWxlTWVudUl0ZW07IGNvbnRleHQ6IHsgaWNvbjogaXRlbS5pY29uLCBpc0ljb25DdXN0b206IGl0ZW0uaXNJY29uQ3VzdG9tLCBpc0ljb25PdXRsaW5lZDogaXRlbS5pc0ljb25PdXRsaW5lZCwgbGFiZWw6IGl0ZW0ubGFiZWwgfVwiPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICA8L21hdC1tZW51PlxyXG4gIDwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNwcm9maWxlTWVudUl0ZW0gbGV0LWljb249XCJpY29uXCIgbGV0LWlzSWNvbkN1c3RvbT1cImlzSWNvbkN1c3RvbVwiIGxldC1pc0ljb25PdXRsaW5lZD1cImlzSWNvbk91dGxpbmVkXCIgbGV0LWxhYmVsPVwibGFiZWxcIj5cclxuICBAaWYgKGljb24pIHtcclxuICAgIEBpZiAoIWlzSWNvbkN1c3RvbSkge1xyXG4gICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIHByb2ZpbGUtb3B0aW9uLWljb25cIiBbY2xhc3MubWF0ZXJpYWwtaWNvbnMtb3V0bGluZWRdPVwiaXNJY29uT3V0bGluZWRcIj5cclxuICAgICAgICB7e2ljb259fVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICB9IEBlbHNlIHtcclxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwicHJvZmlsZS1vcHRpb24taWNvblwiIFtzdmdJY29uXT1cImljb25cIj48L21hdC1pY29uPlxyXG4gICAgfVxyXG4gIH1cclxuICB7eyBsYWJlbCB8IHRyYW5zbGF0ZSB9fVxyXG48L25nLXRlbXBsYXRlPiJdfQ==