@thetradeengineorg1/snova-shell-module 0.0.265 → 0.0.267
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.
- package/bundles/thetradeengineorg1-snova-shell-module.umd.js +425 -416
- package/bundles/thetradeengineorg1-snova-shell-module.umd.js.map +1 -1
- package/esm2015/lib/shell-components/components/menu/menu.component.js +420 -394
- package/esm2015/lib/shell-components/components/sidenav/sidenav.component.js +3 -22
- package/fesm2015/thetradeengineorg1-snova-shell-module.js +423 -416
- package/fesm2015/thetradeengineorg1-snova-shell-module.js.map +1 -1
- package/lib/shell-components/components/sidenav/sidenav.component.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -68,10 +68,10 @@ const _c7 = ["allDeleteSelected"];
|
|
|
68
68
|
const _c8 = ["infoPopOver"];
|
|
69
69
|
const _c9 = ["openMenuPopUp"];
|
|
70
70
|
function MenuComponent_div_9_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
71
|
-
const
|
|
71
|
+
const _r37 = i0.ɵɵgetCurrentView();
|
|
72
72
|
i0.ɵɵelementStart(0, "div");
|
|
73
73
|
i0.ɵɵelementStart(1, "button", 56);
|
|
74
|
-
i0.ɵɵlistener("click", function MenuComponent_div_9_div_1_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(
|
|
74
|
+
i0.ɵɵlistener("click", function MenuComponent_div_9_div_1_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r37); const item_r33 = i0.ɵɵnextContext().$implicit; const ctx_r35 = i0.ɵɵnextContext(); return ctx_r35.selectMenu(item_r33, $event); });
|
|
75
75
|
i0.ɵɵelementStart(2, "mat-icon");
|
|
76
76
|
i0.ɵɵtext(3);
|
|
77
77
|
i0.ɵɵelementEnd();
|
|
@@ -80,29 +80,29 @@ function MenuComponent_div_9_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
|
80
80
|
i0.ɵɵelementEnd();
|
|
81
81
|
i0.ɵɵelementEnd();
|
|
82
82
|
} if (rf & 2) {
|
|
83
|
-
const
|
|
84
|
-
const
|
|
83
|
+
const item_r33 = i0.ɵɵnextContext().$implicit;
|
|
84
|
+
const ctx_r34 = i0.ɵɵnextContext();
|
|
85
85
|
i0.ɵɵadvance(1);
|
|
86
|
-
i0.ɵɵpropertyInterpolate1("routerLink", "/",
|
|
86
|
+
i0.ɵɵpropertyInterpolate1("routerLink", "/", item_r33.state, "");
|
|
87
87
|
i0.ɵɵadvance(2);
|
|
88
|
-
i0.ɵɵtextInterpolate(
|
|
88
|
+
i0.ɵɵtextInterpolate(item_r33.icon);
|
|
89
89
|
i0.ɵɵadvance(1);
|
|
90
|
-
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(5, 3,
|
|
90
|
+
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(5, 3, item_r33.menu, ctx_r34.softLabels), " ");
|
|
91
91
|
} }
|
|
92
92
|
function MenuComponent_div_9_Template(rf, ctx) { if (rf & 1) {
|
|
93
93
|
i0.ɵɵelementStart(0, "div");
|
|
94
94
|
i0.ɵɵtemplate(1, MenuComponent_div_9_div_1_Template, 6, 6, "div", 16);
|
|
95
95
|
i0.ɵɵelementEnd();
|
|
96
96
|
} if (rf & 2) {
|
|
97
|
-
const
|
|
97
|
+
const item_r33 = ctx.$implicit;
|
|
98
98
|
i0.ɵɵadvance(1);
|
|
99
|
-
i0.ɵɵproperty("ngIf",
|
|
99
|
+
i0.ɵɵproperty("ngIf", item_r33.type == "link" || item_r33.type == "applicationlink");
|
|
100
100
|
} }
|
|
101
101
|
function MenuComponent_div_10_Template(rf, ctx) { if (rf & 1) {
|
|
102
|
-
const
|
|
102
|
+
const _r40 = i0.ɵɵgetCurrentView();
|
|
103
103
|
i0.ɵɵelementStart(0, "div", 57);
|
|
104
104
|
i0.ɵɵelementStart(1, "fa-icon", 58);
|
|
105
|
-
i0.ɵɵlistener("click", function MenuComponent_div_10_Template_fa_icon_click_1_listener() { i0.ɵɵrestoreView(
|
|
105
|
+
i0.ɵɵlistener("click", function MenuComponent_div_10_Template_fa_icon_click_1_listener() { i0.ɵɵrestoreView(_r40); const ctx_r39 = i0.ɵɵnextContext(); return ctx_r39.openApps(); });
|
|
106
106
|
i0.ɵɵpipe(2, "translate");
|
|
107
107
|
i0.ɵɵelementEnd();
|
|
108
108
|
i0.ɵɵelementEnd();
|
|
@@ -126,262 +126,285 @@ function MenuComponent_span_19_Template(rf, ctx) { if (rf & 1) {
|
|
|
126
126
|
i0.ɵɵelement(0, "span");
|
|
127
127
|
} }
|
|
128
128
|
function MenuComponent_mat_icon_20_Template(rf, ctx) { if (rf & 1) {
|
|
129
|
-
const
|
|
129
|
+
const _r42 = i0.ɵɵgetCurrentView();
|
|
130
130
|
i0.ɵɵelementStart(0, "mat-icon", 60);
|
|
131
|
-
i0.ɵɵlistener("click", function MenuComponent_mat_icon_20_Template_mat_icon_click_0_listener($event) { i0.ɵɵrestoreView(
|
|
131
|
+
i0.ɵɵlistener("click", function MenuComponent_mat_icon_20_Template_mat_icon_click_0_listener($event) { i0.ɵɵrestoreView(_r42); const ctx_r41 = i0.ɵɵnextContext(); return ctx_r41.closeSearch($event); });
|
|
132
132
|
i0.ɵɵtext(1, " close");
|
|
133
133
|
i0.ɵɵelementEnd();
|
|
134
134
|
} }
|
|
135
135
|
function MenuComponent_mat_progress_bar_27_Template(rf, ctx) { if (rf & 1) {
|
|
136
136
|
i0.ɵɵelement(0, "mat-progress-bar", 61);
|
|
137
137
|
} }
|
|
138
|
+
function MenuComponent_div_29_Template(rf, ctx) { if (rf & 1) {
|
|
139
|
+
i0.ɵɵelementStart(0, "div", 62);
|
|
140
|
+
i0.ɵɵelementStart(1, "div", 63);
|
|
141
|
+
i0.ɵɵelementStart(2, "div", 64);
|
|
142
|
+
i0.ɵɵtext(3, "Dashboard");
|
|
143
|
+
i0.ɵɵelementEnd();
|
|
144
|
+
i0.ɵɵelementStart(4, "div", 65);
|
|
145
|
+
i0.ɵɵelementStart(5, "button", 66);
|
|
146
|
+
i0.ɵɵnamespaceSVG();
|
|
147
|
+
i0.ɵɵelementStart(6, "svg", 67);
|
|
148
|
+
i0.ɵɵelement(7, "path", 68);
|
|
149
|
+
i0.ɵɵelement(8, "polyline", 69);
|
|
150
|
+
i0.ɵɵelement(9, "polyline", 70);
|
|
151
|
+
i0.ɵɵelementEnd();
|
|
152
|
+
i0.ɵɵnamespaceHTML();
|
|
153
|
+
i0.ɵɵelementStart(10, "span", 71);
|
|
154
|
+
i0.ɵɵtext(11, "Dashboard");
|
|
155
|
+
i0.ɵɵelementEnd();
|
|
156
|
+
i0.ɵɵelementEnd();
|
|
157
|
+
i0.ɵɵelementEnd();
|
|
158
|
+
i0.ɵɵelementEnd();
|
|
159
|
+
i0.ɵɵelementEnd();
|
|
160
|
+
} }
|
|
138
161
|
const _c10 = function () { return { exact: true }; };
|
|
139
|
-
function
|
|
140
|
-
const
|
|
141
|
-
i0.ɵɵelementStart(0, "div",
|
|
142
|
-
i0.ɵɵelementStart(1, "button",
|
|
143
|
-
i0.ɵɵlistener("mousedown", function
|
|
162
|
+
function MenuComponent_div_30_ng_container_12_div_1_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
163
|
+
const _r50 = i0.ɵɵgetCurrentView();
|
|
164
|
+
i0.ɵɵelementStart(0, "div", 85);
|
|
165
|
+
i0.ɵɵelementStart(1, "button", 86);
|
|
166
|
+
i0.ɵɵlistener("mousedown", function MenuComponent_div_30_ng_container_12_div_1_div_1_Template_button_mousedown_1_listener($event) { i0.ɵɵrestoreView(_r50); const item_r45 = i0.ɵɵnextContext().$implicit; const ctx_r48 = i0.ɵɵnextContext(3); return ctx_r48.selectAdimnTool(item_r45.state, $event, item_r45); });
|
|
144
167
|
i0.ɵɵpipe(2, "softLabelsPipe");
|
|
145
|
-
i0.ɵɵelementStart(3, "mat-icon",
|
|
168
|
+
i0.ɵɵelementStart(3, "mat-icon", 87);
|
|
146
169
|
i0.ɵɵtext(4);
|
|
147
170
|
i0.ɵɵelementEnd();
|
|
148
|
-
i0.ɵɵelement(5, "span",
|
|
171
|
+
i0.ɵɵelement(5, "span", 88);
|
|
149
172
|
i0.ɵɵpipe(6, "highLightText");
|
|
150
173
|
i0.ɵɵpipe(7, "softLabelsPipe");
|
|
151
174
|
i0.ɵɵelementEnd();
|
|
152
175
|
i0.ɵɵelementEnd();
|
|
153
176
|
} if (rf & 2) {
|
|
154
|
-
const
|
|
155
|
-
const
|
|
156
|
-
const
|
|
157
|
-
const
|
|
177
|
+
const ctx_r51 = i0.ɵɵnextContext();
|
|
178
|
+
const item_r45 = ctx_r51.$implicit;
|
|
179
|
+
const i_r46 = ctx_r51.index;
|
|
180
|
+
const ctx_r47 = i0.ɵɵnextContext(3);
|
|
158
181
|
i0.ɵɵadvance(1);
|
|
159
|
-
i0.ɵɵpropertyInterpolate1("routerLink", "/",
|
|
160
|
-
i0.ɵɵpropertyInterpolate("matTooltip",
|
|
161
|
-
i0.ɵɵproperty("ngClass",
|
|
182
|
+
i0.ɵɵpropertyInterpolate1("routerLink", "/", item_r45.state, "");
|
|
183
|
+
i0.ɵɵpropertyInterpolate("matTooltip", ctx_r47.translateapplicationname(i0.ɵɵpipeBind2(2, 7, item_r45.menu, ctx_r47.softLabels)));
|
|
184
|
+
i0.ɵɵproperty("ngClass", ctx_r47.selectedRowIndex == i_r46 ? "color-text" : "color-text1")("routerLinkActiveOptions", i0.ɵɵpureFunction0(16, _c10));
|
|
162
185
|
i0.ɵɵadvance(2);
|
|
163
|
-
i0.ɵɵproperty("ngClass",
|
|
186
|
+
i0.ɵɵproperty("ngClass", ctx_r47.selectedRowIndex == i_r46 ? "color-text" : "color-text1");
|
|
164
187
|
i0.ɵɵadvance(1);
|
|
165
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
188
|
+
i0.ɵɵtextInterpolate1(" ", item_r45.icon, "");
|
|
166
189
|
i0.ɵɵadvance(1);
|
|
167
|
-
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(6, 10, i0.ɵɵpipeBind2(7, 13,
|
|
190
|
+
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(6, 10, i0.ɵɵpipeBind2(7, 13, ctx_r47.translateapplicationname(item_r45.menu), ctx_r47.softLabels), ctx_r47.searchText), i0.ɵɵsanitizeHtml);
|
|
168
191
|
} }
|
|
169
|
-
function
|
|
170
|
-
i0.ɵɵelementStart(0, "div",
|
|
171
|
-
i0.ɵɵtemplate(1,
|
|
192
|
+
function MenuComponent_div_30_ng_container_12_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
193
|
+
i0.ɵɵelementStart(0, "div", 83);
|
|
194
|
+
i0.ɵɵtemplate(1, MenuComponent_div_30_ng_container_12_div_1_div_1_Template, 8, 17, "div", 84);
|
|
172
195
|
i0.ɵɵelementEnd();
|
|
173
196
|
} if (rf & 2) {
|
|
174
|
-
const
|
|
175
|
-
const
|
|
176
|
-
const
|
|
177
|
-
i0.ɵɵstyleProp("background-color",
|
|
197
|
+
const item_r45 = ctx.$implicit;
|
|
198
|
+
const i_r46 = ctx.index;
|
|
199
|
+
const ctx_r44 = i0.ɵɵnextContext(3);
|
|
200
|
+
i0.ɵɵstyleProp("background-color", ctx_r44.selectedRowIndex == i_r46 ? "#f1f5f9" : "white");
|
|
178
201
|
i0.ɵɵadvance(1);
|
|
179
|
-
i0.ɵɵproperty("ngIf",
|
|
202
|
+
i0.ɵɵproperty("ngIf", item_r45.type == "link" || item_r45.type == "applicationlink");
|
|
180
203
|
} }
|
|
181
|
-
function
|
|
204
|
+
function MenuComponent_div_30_ng_container_12_Template(rf, ctx) { if (rf & 1) {
|
|
182
205
|
i0.ɵɵelementContainerStart(0);
|
|
183
|
-
i0.ɵɵtemplate(1,
|
|
206
|
+
i0.ɵɵtemplate(1, MenuComponent_div_30_ng_container_12_div_1_Template, 2, 3, "div", 82);
|
|
184
207
|
i0.ɵɵelementContainerEnd();
|
|
185
208
|
} if (rf & 2) {
|
|
186
|
-
const
|
|
209
|
+
const ctx_r43 = i0.ɵɵnextContext(2);
|
|
187
210
|
i0.ɵɵadvance(1);
|
|
188
|
-
i0.ɵɵproperty("ngForOf",
|
|
211
|
+
i0.ɵɵproperty("ngForOf", ctx_r43.items);
|
|
189
212
|
} }
|
|
190
|
-
function
|
|
191
|
-
i0.ɵɵelementStart(0, "div",
|
|
192
|
-
i0.ɵɵelementStart(1, "div",
|
|
213
|
+
function MenuComponent_div_30_Template(rf, ctx) { if (rf & 1) {
|
|
214
|
+
i0.ɵɵelementStart(0, "div", 72);
|
|
215
|
+
i0.ɵɵelementStart(1, "div", 73);
|
|
193
216
|
i0.ɵɵnamespaceSVG();
|
|
194
|
-
i0.ɵɵelementStart(2, "svg",
|
|
195
|
-
i0.ɵɵelement(3, "path",
|
|
196
|
-
i0.ɵɵelement(4, "path",
|
|
197
|
-
i0.ɵɵelement(5, "path",
|
|
198
|
-
i0.ɵɵelement(6, "path",
|
|
199
|
-
i0.ɵɵelement(7, "path",
|
|
217
|
+
i0.ɵɵelementStart(2, "svg", 74);
|
|
218
|
+
i0.ɵɵelement(3, "path", 75);
|
|
219
|
+
i0.ɵɵelement(4, "path", 76);
|
|
220
|
+
i0.ɵɵelement(5, "path", 77);
|
|
221
|
+
i0.ɵɵelement(6, "path", 78);
|
|
222
|
+
i0.ɵɵelement(7, "path", 79);
|
|
200
223
|
i0.ɵɵelementEnd();
|
|
201
224
|
i0.ɵɵnamespaceHTML();
|
|
202
|
-
i0.ɵɵelementStart(8, "span",
|
|
225
|
+
i0.ɵɵelementStart(8, "span", 80);
|
|
203
226
|
i0.ɵɵtext(9);
|
|
204
227
|
i0.ɵɵpipe(10, "translate");
|
|
205
228
|
i0.ɵɵelementEnd();
|
|
206
229
|
i0.ɵɵelementEnd();
|
|
207
|
-
i0.ɵɵelementStart(11, "div",
|
|
208
|
-
i0.ɵɵtemplate(12,
|
|
230
|
+
i0.ɵɵelementStart(11, "div", 81);
|
|
231
|
+
i0.ɵɵtemplate(12, MenuComponent_div_30_ng_container_12_Template, 2, 1, "ng-container", 16);
|
|
209
232
|
i0.ɵɵelementEnd();
|
|
210
233
|
i0.ɵɵelementEnd();
|
|
211
234
|
} if (rf & 2) {
|
|
212
|
-
const
|
|
235
|
+
const ctx_r11 = i0.ɵɵnextContext();
|
|
213
236
|
i0.ɵɵadvance(9);
|
|
214
237
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(10, 2, "SHELL.APPLICATIONS"));
|
|
215
238
|
i0.ɵɵadvance(3);
|
|
216
|
-
i0.ɵɵproperty("ngIf",
|
|
239
|
+
i0.ɵɵproperty("ngIf", ctx_r11.items && ctx_r11.items.length > 0);
|
|
217
240
|
} }
|
|
218
|
-
function
|
|
219
|
-
const
|
|
220
|
-
i0.ɵɵelementStart(0, "fa-icon",
|
|
221
|
-
i0.ɵɵlistener("click", function
|
|
241
|
+
function MenuComponent_div_31_div_1_fa_icon_10_Template(rf, ctx) { if (rf & 1) {
|
|
242
|
+
const _r56 = i0.ɵɵgetCurrentView();
|
|
243
|
+
i0.ɵɵelementStart(0, "fa-icon", 100);
|
|
244
|
+
i0.ɵɵlistener("click", function MenuComponent_div_31_div_1_fa_icon_10_Template_fa_icon_click_0_listener() { i0.ɵɵrestoreView(_r56); const ctx_r55 = i0.ɵɵnextContext(3); ctx_r55.initializeWorkspaceForm(); return ctx_r55.openWorkspaceForm(); });
|
|
222
245
|
i0.ɵɵpipe(1, "translate");
|
|
223
246
|
i0.ɵɵelementEnd();
|
|
224
247
|
} if (rf & 2) {
|
|
225
248
|
i0.ɵɵnextContext(3);
|
|
226
|
-
const
|
|
249
|
+
const _r19 = i0.ɵɵreference(39);
|
|
227
250
|
i0.ɵɵpropertyInterpolate("matTooltip", i0.ɵɵpipeBind1(1, 2, "APP.ADDDASHBOARD"));
|
|
228
|
-
i0.ɵɵproperty("satPopoverAnchorFor",
|
|
251
|
+
i0.ɵɵproperty("satPopoverAnchorFor", _r19);
|
|
229
252
|
} }
|
|
230
|
-
function
|
|
231
|
-
const
|
|
232
|
-
i0.ɵɵelementStart(0, "div",
|
|
233
|
-
i0.ɵɵelementStart(2, "button",
|
|
234
|
-
i0.ɵɵlistener("mousedown", function
|
|
253
|
+
function MenuComponent_div_31_div_1_ng_container_12_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
254
|
+
const _r62 = i0.ɵɵgetCurrentView();
|
|
255
|
+
i0.ɵɵelementStart(0, "div", 102, 103);
|
|
256
|
+
i0.ɵɵelementStart(2, "button", 104);
|
|
257
|
+
i0.ɵɵlistener("mousedown", function MenuComponent_div_31_div_1_ng_container_12_div_1_Template_button_mousedown_2_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r62); const wc_r58 = restoredCtx.$implicit; const ctx_r61 = i0.ɵɵnextContext(4); return ctx_r61.selectMenu(wc_r58, $event); })("click", function MenuComponent_div_31_div_1_ng_container_12_div_1_Template_button_click_2_listener() { const restoredCtx = i0.ɵɵrestoreView(_r62); const wc_r58 = restoredCtx.$implicit; const ctx_r63 = i0.ɵɵnextContext(4); return ctx_r63.navigateToUrl(wc_r58.workspaceId); });
|
|
235
258
|
i0.ɵɵnamespaceSVG();
|
|
236
|
-
i0.ɵɵelementStart(3, "svg",
|
|
237
|
-
i0.ɵɵelement(4, "rect",
|
|
238
|
-
i0.ɵɵelement(5, "rect",
|
|
239
|
-
i0.ɵɵelement(6, "rect",
|
|
240
|
-
i0.ɵɵelement(7, "rect",
|
|
259
|
+
i0.ɵɵelementStart(3, "svg", 92);
|
|
260
|
+
i0.ɵɵelement(4, "rect", 93);
|
|
261
|
+
i0.ɵɵelement(5, "rect", 94);
|
|
262
|
+
i0.ɵɵelement(6, "rect", 95);
|
|
263
|
+
i0.ɵɵelement(7, "rect", 96);
|
|
241
264
|
i0.ɵɵelementEnd();
|
|
242
265
|
i0.ɵɵnamespaceHTML();
|
|
243
|
-
i0.ɵɵelement(8, "span",
|
|
266
|
+
i0.ɵɵelement(8, "span", 105);
|
|
244
267
|
i0.ɵɵpipe(9, "highLightText");
|
|
245
268
|
i0.ɵɵelementEnd();
|
|
246
269
|
i0.ɵɵelementEnd();
|
|
247
270
|
} if (rf & 2) {
|
|
248
|
-
const
|
|
249
|
-
const
|
|
250
|
-
const
|
|
251
|
-
i0.ɵɵstyleProp("background-color",
|
|
271
|
+
const wc_r58 = ctx.$implicit;
|
|
272
|
+
const i_r59 = ctx.index;
|
|
273
|
+
const ctx_r57 = i0.ɵɵnextContext(4);
|
|
274
|
+
i0.ɵɵstyleProp("background-color", ctx_r57.ws == i_r59 ? "#f1f5f9" : "white");
|
|
252
275
|
i0.ɵɵadvance(2);
|
|
253
|
-
i0.ɵɵpropertyInterpolate1("routerLink", "/dashboard-management/dashboard/",
|
|
254
|
-
i0.ɵɵpropertyInterpolate("matTooltip",
|
|
255
|
-
i0.ɵɵproperty("ngClass",
|
|
276
|
+
i0.ɵɵpropertyInterpolate1("routerLink", "/dashboard-management/dashboard/", wc_r58.workspaceId, "");
|
|
277
|
+
i0.ɵɵpropertyInterpolate("matTooltip", wc_r58.workspaceName);
|
|
278
|
+
i0.ɵɵproperty("ngClass", ctx_r57.ws == i_r59 ? "color-text" : "color-text1");
|
|
256
279
|
i0.ɵɵadvance(6);
|
|
257
|
-
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(9, 6,
|
|
280
|
+
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(9, 6, wc_r58.workspaceName, ctx_r57.searchText), i0.ɵɵsanitizeHtml);
|
|
258
281
|
} }
|
|
259
|
-
function
|
|
282
|
+
function MenuComponent_div_31_div_1_ng_container_12_Template(rf, ctx) { if (rf & 1) {
|
|
260
283
|
i0.ɵɵelementContainerStart(0);
|
|
261
|
-
i0.ɵɵtemplate(1,
|
|
284
|
+
i0.ɵɵtemplate(1, MenuComponent_div_31_div_1_ng_container_12_div_1_Template, 10, 9, "div", 101);
|
|
262
285
|
i0.ɵɵelementContainerEnd();
|
|
263
286
|
} if (rf & 2) {
|
|
264
|
-
const
|
|
287
|
+
const ctx_r54 = i0.ɵɵnextContext(3);
|
|
265
288
|
i0.ɵɵadvance(1);
|
|
266
|
-
i0.ɵɵproperty("ngForOf",
|
|
289
|
+
i0.ɵɵproperty("ngForOf", ctx_r54.workspaces);
|
|
267
290
|
} }
|
|
268
|
-
function
|
|
269
|
-
i0.ɵɵelementStart(0, "div",
|
|
270
|
-
i0.ɵɵelementStart(1, "div",
|
|
291
|
+
function MenuComponent_div_31_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
292
|
+
i0.ɵɵelementStart(0, "div", 90);
|
|
293
|
+
i0.ɵɵelementStart(1, "div", 91);
|
|
271
294
|
i0.ɵɵnamespaceSVG();
|
|
272
|
-
i0.ɵɵelementStart(2, "svg",
|
|
273
|
-
i0.ɵɵelement(3, "rect",
|
|
274
|
-
i0.ɵɵelement(4, "rect",
|
|
275
|
-
i0.ɵɵelement(5, "rect",
|
|
276
|
-
i0.ɵɵelement(6, "rect",
|
|
295
|
+
i0.ɵɵelementStart(2, "svg", 92);
|
|
296
|
+
i0.ɵɵelement(3, "rect", 93);
|
|
297
|
+
i0.ɵɵelement(4, "rect", 94);
|
|
298
|
+
i0.ɵɵelement(5, "rect", 95);
|
|
299
|
+
i0.ɵɵelement(6, "rect", 96);
|
|
277
300
|
i0.ɵɵelementEnd();
|
|
278
301
|
i0.ɵɵnamespaceHTML();
|
|
279
|
-
i0.ɵɵelementStart(7, "span",
|
|
302
|
+
i0.ɵɵelementStart(7, "span", 97);
|
|
280
303
|
i0.ɵɵtext(8);
|
|
281
304
|
i0.ɵɵpipe(9, "translate");
|
|
282
305
|
i0.ɵɵelementEnd();
|
|
283
|
-
i0.ɵɵtemplate(10,
|
|
306
|
+
i0.ɵɵtemplate(10, MenuComponent_div_31_div_1_fa_icon_10_Template, 2, 4, "fa-icon", 98);
|
|
284
307
|
i0.ɵɵelementEnd();
|
|
285
|
-
i0.ɵɵelementStart(11, "div",
|
|
286
|
-
i0.ɵɵtemplate(12,
|
|
308
|
+
i0.ɵɵelementStart(11, "div", 99);
|
|
309
|
+
i0.ɵɵtemplate(12, MenuComponent_div_31_div_1_ng_container_12_Template, 2, 1, "ng-container", 16);
|
|
287
310
|
i0.ɵɵelementEnd();
|
|
288
311
|
i0.ɵɵelementEnd();
|
|
289
312
|
} if (rf & 2) {
|
|
290
|
-
const
|
|
313
|
+
const ctx_r52 = i0.ɵɵnextContext(2);
|
|
291
314
|
i0.ɵɵadvance(8);
|
|
292
315
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(9, 3, "SHELL.DASHBOARDS"));
|
|
293
316
|
i0.ɵɵadvance(2);
|
|
294
|
-
i0.ɵɵproperty("ngIf",
|
|
317
|
+
i0.ɵɵproperty("ngIf", ctx_r52.canAccess_feature_AddDashboard);
|
|
295
318
|
i0.ɵɵadvance(2);
|
|
296
|
-
i0.ɵɵproperty("ngIf",
|
|
319
|
+
i0.ɵɵproperty("ngIf", ctx_r52.workspaces && ctx_r52.workspaces.length > 0);
|
|
297
320
|
} }
|
|
298
|
-
function
|
|
299
|
-
i0.ɵɵelementStart(0, "div",
|
|
300
|
-
i0.ɵɵtemplate(1,
|
|
321
|
+
function MenuComponent_div_31_Template(rf, ctx) { if (rf & 1) {
|
|
322
|
+
i0.ɵɵelementStart(0, "div", 62);
|
|
323
|
+
i0.ɵɵtemplate(1, MenuComponent_div_31_div_1_Template, 13, 5, "div", 89);
|
|
301
324
|
i0.ɵɵelementEnd();
|
|
302
325
|
} if (rf & 2) {
|
|
303
|
-
const
|
|
326
|
+
const ctx_r12 = i0.ɵɵnextContext();
|
|
304
327
|
i0.ɵɵadvance(1);
|
|
305
|
-
i0.ɵɵproperty("ngIf",
|
|
328
|
+
i0.ɵɵproperty("ngIf", ctx_r12.workspaces && ctx_r12.workspaces.length > 0);
|
|
306
329
|
} }
|
|
307
|
-
function
|
|
308
|
-
const
|
|
330
|
+
function MenuComponent_div_32_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
331
|
+
const _r68 = i0.ɵɵgetCurrentView();
|
|
309
332
|
i0.ɵɵelementStart(0, "div");
|
|
310
|
-
i0.ɵɵelementStart(1, "button",
|
|
311
|
-
i0.ɵɵlistener("mousedown", function
|
|
333
|
+
i0.ɵɵelementStart(1, "button", 109);
|
|
334
|
+
i0.ɵɵlistener("mousedown", function MenuComponent_div_32_div_5_Template_button_mousedown_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r68); const widget_r65 = restoredCtx.$implicit; const ctx_r67 = i0.ɵɵnextContext(2); return ctx_r67.OnSelect(widget_r65, $event); });
|
|
312
335
|
i0.ɵɵpipe(2, "softLabelsPipe");
|
|
313
|
-
i0.ɵɵelement(3, "span",
|
|
336
|
+
i0.ɵɵelement(3, "span", 110);
|
|
314
337
|
i0.ɵɵpipe(4, "highLightText");
|
|
315
338
|
i0.ɵɵpipe(5, "softLabelsPipe");
|
|
316
339
|
i0.ɵɵelementEnd();
|
|
317
340
|
i0.ɵɵelementEnd();
|
|
318
341
|
} if (rf & 2) {
|
|
319
|
-
const
|
|
320
|
-
const
|
|
321
|
-
const
|
|
322
|
-
i0.ɵɵstyleProp("background-color",
|
|
342
|
+
const widget_r65 = ctx.$implicit;
|
|
343
|
+
const i_r66 = ctx.index;
|
|
344
|
+
const ctx_r64 = i0.ɵɵnextContext(2);
|
|
345
|
+
i0.ɵɵstyleProp("background-color", ctx_r64.wd == i_r66 ? ctx_r64.themeBaseColor : "white");
|
|
323
346
|
i0.ɵɵadvance(1);
|
|
324
|
-
i0.ɵɵpropertyInterpolate1("routerLink", "/dashboard-management/widgets/",
|
|
325
|
-
i0.ɵɵpropertyInterpolate("matTooltip", i0.ɵɵpipeBind2(2, 7,
|
|
326
|
-
i0.ɵɵproperty("routerLinkActiveOptions", i0.ɵɵpureFunction0(16, _c10))("ngClass",
|
|
347
|
+
i0.ɵɵpropertyInterpolate1("routerLink", "/dashboard-management/widgets/", widget_r65.widgetId, "");
|
|
348
|
+
i0.ɵɵpropertyInterpolate("matTooltip", i0.ɵɵpipeBind2(2, 7, widget_r65.widgetName, ctx_r64.softLabels));
|
|
349
|
+
i0.ɵɵproperty("routerLinkActiveOptions", i0.ɵɵpureFunction0(16, _c10))("ngClass", ctx_r64.wd == i_r66 ? "color-text" : "color-text1");
|
|
327
350
|
i0.ɵɵadvance(2);
|
|
328
|
-
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(4, 10, i0.ɵɵpipeBind2(5, 13,
|
|
351
|
+
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(4, 10, i0.ɵɵpipeBind2(5, 13, widget_r65.widgetName, ctx_r64.softLabels), ctx_r64.searchText), i0.ɵɵsanitizeHtml);
|
|
329
352
|
} }
|
|
330
|
-
function
|
|
331
|
-
i0.ɵɵelementStart(0, "div",
|
|
332
|
-
i0.ɵɵelementStart(1, "div",
|
|
353
|
+
function MenuComponent_div_32_Template(rf, ctx) { if (rf & 1) {
|
|
354
|
+
i0.ɵɵelementStart(0, "div", 106);
|
|
355
|
+
i0.ɵɵelementStart(1, "div", 64);
|
|
333
356
|
i0.ɵɵtext(2);
|
|
334
357
|
i0.ɵɵpipe(3, "translate");
|
|
335
358
|
i0.ɵɵelementEnd();
|
|
336
|
-
i0.ɵɵelementStart(4, "div",
|
|
337
|
-
i0.ɵɵtemplate(5,
|
|
359
|
+
i0.ɵɵelementStart(4, "div", 107);
|
|
360
|
+
i0.ɵɵtemplate(5, MenuComponent_div_32_div_5_Template, 6, 17, "div", 108);
|
|
338
361
|
i0.ɵɵelementEnd();
|
|
339
362
|
i0.ɵɵelementEnd();
|
|
340
363
|
} if (rf & 2) {
|
|
341
|
-
const
|
|
364
|
+
const ctx_r13 = i0.ɵɵnextContext();
|
|
342
365
|
i0.ɵɵadvance(2);
|
|
343
366
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, "SHELL.FAVOURITEAPPS"));
|
|
344
367
|
i0.ɵɵadvance(3);
|
|
345
|
-
i0.ɵɵproperty("ngForOf",
|
|
368
|
+
i0.ɵɵproperty("ngForOf", ctx_r13.widgets);
|
|
346
369
|
} }
|
|
347
|
-
function
|
|
348
|
-
const
|
|
370
|
+
function MenuComponent_div_33_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
371
|
+
const _r73 = i0.ɵɵgetCurrentView();
|
|
349
372
|
i0.ɵɵelementStart(0, "div");
|
|
350
|
-
i0.ɵɵelementStart(1, "button",
|
|
351
|
-
i0.ɵɵlistener("mousedown", function
|
|
373
|
+
i0.ɵɵelementStart(1, "button", 112);
|
|
374
|
+
i0.ɵɵlistener("mousedown", function MenuComponent_div_33_div_4_Template_button_mousedown_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r73); const project_r70 = restoredCtx.$implicit; const ctx_r72 = i0.ɵɵnextContext(2); return ctx_r72.onProjectSelect(project_r70, $event); });
|
|
352
375
|
i0.ɵɵpipe(2, "softLabelsPipe");
|
|
353
|
-
i0.ɵɵelement(3, "span",
|
|
376
|
+
i0.ɵɵelement(3, "span", 110);
|
|
354
377
|
i0.ɵɵpipe(4, "highLightText");
|
|
355
378
|
i0.ɵɵpipe(5, "softLabelsPipe");
|
|
356
379
|
i0.ɵɵelementEnd();
|
|
357
380
|
i0.ɵɵelementEnd();
|
|
358
381
|
} if (rf & 2) {
|
|
359
|
-
const
|
|
360
|
-
const
|
|
361
|
-
const
|
|
362
|
-
i0.ɵɵstyleProp("background-color",
|
|
382
|
+
const project_r70 = ctx.$implicit;
|
|
383
|
+
const i_r71 = ctx.index;
|
|
384
|
+
const ctx_r69 = i0.ɵɵnextContext(2);
|
|
385
|
+
i0.ɵɵstyleProp("background-color", ctx_r69.projectIndex == i_r71 ? ctx_r69.themeBaseColor : "white");
|
|
363
386
|
i0.ɵɵadvance(1);
|
|
364
|
-
i0.ɵɵpropertyInterpolate("matTooltip", i0.ɵɵpipeBind2(2, 6,
|
|
365
|
-
i0.ɵɵproperty("routerLinkActiveOptions", i0.ɵɵpureFunction0(15, _c10))("ngClass",
|
|
387
|
+
i0.ɵɵpropertyInterpolate("matTooltip", i0.ɵɵpipeBind2(2, 6, project_r70.itemName, ctx_r69.softLabels));
|
|
388
|
+
i0.ɵɵproperty("routerLinkActiveOptions", i0.ɵɵpureFunction0(15, _c10))("ngClass", ctx_r69.projectIndex == i_r71 ? "color-text" : "color-text1");
|
|
366
389
|
i0.ɵɵadvance(2);
|
|
367
|
-
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(4, 9, i0.ɵɵpipeBind2(5, 12,
|
|
390
|
+
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(4, 9, i0.ɵɵpipeBind2(5, 12, project_r70.itemName, ctx_r69.softLabels), ctx_r69.searchText), i0.ɵɵsanitizeHtml);
|
|
368
391
|
} }
|
|
369
|
-
function
|
|
370
|
-
i0.ɵɵelementStart(0, "div",
|
|
371
|
-
i0.ɵɵelementStart(1, "div",
|
|
392
|
+
function MenuComponent_div_33_Template(rf, ctx) { if (rf & 1) {
|
|
393
|
+
i0.ɵɵelementStart(0, "div", 63);
|
|
394
|
+
i0.ɵɵelementStart(1, "div", 64);
|
|
372
395
|
i0.ɵɵtext(2, "Projects");
|
|
373
396
|
i0.ɵɵelementEnd();
|
|
374
|
-
i0.ɵɵelementStart(3, "div",
|
|
375
|
-
i0.ɵɵtemplate(4,
|
|
397
|
+
i0.ɵɵelementStart(3, "div", 111);
|
|
398
|
+
i0.ɵɵtemplate(4, MenuComponent_div_33_div_4_Template, 6, 16, "div", 108);
|
|
376
399
|
i0.ɵɵelementEnd();
|
|
377
400
|
i0.ɵɵelementEnd();
|
|
378
401
|
} if (rf & 2) {
|
|
379
|
-
const
|
|
402
|
+
const ctx_r14 = i0.ɵɵnextContext();
|
|
380
403
|
i0.ɵɵadvance(4);
|
|
381
|
-
i0.ɵɵproperty("ngForOf",
|
|
404
|
+
i0.ɵɵproperty("ngForOf", ctx_r14.projectList);
|
|
382
405
|
} }
|
|
383
|
-
function
|
|
384
|
-
i0.ɵɵelementStart(0, "div",
|
|
406
|
+
function MenuComponent_div_34_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
407
|
+
i0.ɵɵelementStart(0, "div", 64);
|
|
385
408
|
i0.ɵɵtext(1);
|
|
386
409
|
i0.ɵɵpipe(2, "translate");
|
|
387
410
|
i0.ɵɵelementEnd();
|
|
@@ -389,8 +412,8 @@ function MenuComponent_div_33_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
|
389
412
|
i0.ɵɵadvance(1);
|
|
390
413
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "SHELL.WIBUG"));
|
|
391
414
|
} }
|
|
392
|
-
function
|
|
393
|
-
i0.ɵɵelementStart(0, "div",
|
|
415
|
+
function MenuComponent_div_34_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
416
|
+
i0.ɵɵelementStart(0, "div", 64);
|
|
394
417
|
i0.ɵɵtext(1);
|
|
395
418
|
i0.ɵɵpipe(2, "translate");
|
|
396
419
|
i0.ɵɵelementEnd();
|
|
@@ -398,149 +421,149 @@ function MenuComponent_div_33_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
|
398
421
|
i0.ɵɵadvance(1);
|
|
399
422
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "SHELL.WI"));
|
|
400
423
|
} }
|
|
401
|
-
function
|
|
402
|
-
const
|
|
424
|
+
function MenuComponent_div_34_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
425
|
+
const _r80 = i0.ɵɵgetCurrentView();
|
|
403
426
|
i0.ɵɵelementStart(0, "div");
|
|
404
|
-
i0.ɵɵelementStart(1, "button",
|
|
405
|
-
i0.ɵɵlistener("mousedown", function
|
|
427
|
+
i0.ɵɵelementStart(1, "button", 112);
|
|
428
|
+
i0.ɵɵlistener("mousedown", function MenuComponent_div_34_div_4_Template_button_mousedown_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r80); const userStory_r77 = restoredCtx.$implicit; const ctx_r79 = i0.ɵɵnextContext(2); return ctx_r79.OnUserStorySelect(userStory_r77, $event); });
|
|
406
429
|
i0.ɵɵpipe(2, "softLabelsPipe");
|
|
407
|
-
i0.ɵɵelement(3, "span",
|
|
430
|
+
i0.ɵɵelement(3, "span", 110);
|
|
408
431
|
i0.ɵɵpipe(4, "highLightText");
|
|
409
432
|
i0.ɵɵpipe(5, "softLabelsPipe");
|
|
410
433
|
i0.ɵɵelementEnd();
|
|
411
434
|
i0.ɵɵelementEnd();
|
|
412
435
|
} if (rf & 2) {
|
|
413
|
-
const
|
|
414
|
-
const
|
|
415
|
-
const
|
|
416
|
-
i0.ɵɵstyleProp("background-color",
|
|
436
|
+
const userStory_r77 = ctx.$implicit;
|
|
437
|
+
const i_r78 = ctx.index;
|
|
438
|
+
const ctx_r76 = i0.ɵɵnextContext(2);
|
|
439
|
+
i0.ɵɵstyleProp("background-color", ctx_r76.users == i_r78 ? ctx_r76.themeBaseColor : "white");
|
|
417
440
|
i0.ɵɵadvance(1);
|
|
418
|
-
i0.ɵɵpropertyInterpolate("matTooltip", i0.ɵɵpipeBind2(2, 6,
|
|
419
|
-
i0.ɵɵproperty("routerLinkActiveOptions", i0.ɵɵpureFunction0(15, _c10))("ngClass",
|
|
441
|
+
i0.ɵɵpropertyInterpolate("matTooltip", i0.ɵɵpipeBind2(2, 6, userStory_r77.itemName, ctx_r76.softLabels));
|
|
442
|
+
i0.ɵɵproperty("routerLinkActiveOptions", i0.ɵɵpureFunction0(15, _c10))("ngClass", ctx_r76.users == i_r78 ? "color-text" : "color-text1");
|
|
420
443
|
i0.ɵɵadvance(2);
|
|
421
|
-
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(4, 9, i0.ɵɵpipeBind2(5, 12,
|
|
444
|
+
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(4, 9, i0.ɵɵpipeBind2(5, 12, userStory_r77.itemName, ctx_r76.softLabels), ctx_r76.searchText), i0.ɵɵsanitizeHtml);
|
|
422
445
|
} }
|
|
423
|
-
function
|
|
424
|
-
i0.ɵɵelementStart(0, "div",
|
|
425
|
-
i0.ɵɵtemplate(1,
|
|
426
|
-
i0.ɵɵtemplate(2,
|
|
427
|
-
i0.ɵɵelementStart(3, "div",
|
|
428
|
-
i0.ɵɵtemplate(4,
|
|
446
|
+
function MenuComponent_div_34_Template(rf, ctx) { if (rf & 1) {
|
|
447
|
+
i0.ɵɵelementStart(0, "div", 63);
|
|
448
|
+
i0.ɵɵtemplate(1, MenuComponent_div_34_div_1_Template, 3, 3, "div", 113);
|
|
449
|
+
i0.ɵɵtemplate(2, MenuComponent_div_34_div_2_Template, 3, 3, "div", 113);
|
|
450
|
+
i0.ɵɵelementStart(3, "div", 114);
|
|
451
|
+
i0.ɵɵtemplate(4, MenuComponent_div_34_div_4_Template, 6, 16, "div", 108);
|
|
429
452
|
i0.ɵɵelementEnd();
|
|
430
453
|
i0.ɵɵelementEnd();
|
|
431
454
|
} if (rf & 2) {
|
|
432
|
-
const
|
|
455
|
+
const ctx_r15 = i0.ɵɵnextContext();
|
|
433
456
|
i0.ɵɵadvance(1);
|
|
434
|
-
i0.ɵɵproperty("ngIf",
|
|
457
|
+
i0.ɵɵproperty("ngIf", ctx_r15.isEnableBugBoard);
|
|
435
458
|
i0.ɵɵadvance(1);
|
|
436
|
-
i0.ɵɵproperty("ngIf", !
|
|
459
|
+
i0.ɵɵproperty("ngIf", !ctx_r15.isEnableBugBoard);
|
|
437
460
|
i0.ɵɵadvance(2);
|
|
438
|
-
i0.ɵɵproperty("ngForOf",
|
|
461
|
+
i0.ɵɵproperty("ngForOf", ctx_r15.userStorySearchList);
|
|
439
462
|
} }
|
|
440
|
-
function
|
|
441
|
-
const
|
|
463
|
+
function MenuComponent_div_35_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
464
|
+
const _r85 = i0.ɵɵgetCurrentView();
|
|
442
465
|
i0.ɵɵelementStart(0, "div");
|
|
443
|
-
i0.ɵɵelementStart(1, "button",
|
|
444
|
-
i0.ɵɵlistener("mousedown", function
|
|
466
|
+
i0.ɵɵelementStart(1, "button", 112);
|
|
467
|
+
i0.ɵɵlistener("mousedown", function MenuComponent_div_35_div_5_Template_button_mousedown_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r85); const goal_r82 = restoredCtx.$implicit; const ctx_r84 = i0.ɵɵnextContext(2); return ctx_r84.OnGoalSelect(goal_r82, $event); });
|
|
445
468
|
i0.ɵɵpipe(2, "softLabelsPipe");
|
|
446
|
-
i0.ɵɵelement(3, "span",
|
|
469
|
+
i0.ɵɵelement(3, "span", 110);
|
|
447
470
|
i0.ɵɵpipe(4, "highLightText");
|
|
448
471
|
i0.ɵɵpipe(5, "softLabelsPipe");
|
|
449
472
|
i0.ɵɵelementEnd();
|
|
450
473
|
i0.ɵɵelementEnd();
|
|
451
474
|
} if (rf & 2) {
|
|
452
|
-
const
|
|
453
|
-
const
|
|
454
|
-
const
|
|
455
|
-
i0.ɵɵstyleProp("background-color",
|
|
475
|
+
const goal_r82 = ctx.$implicit;
|
|
476
|
+
const i_r83 = ctx.index;
|
|
477
|
+
const ctx_r81 = i0.ɵɵnextContext(2);
|
|
478
|
+
i0.ɵɵstyleProp("background-color", ctx_r81.goalIndex == i_r83 ? ctx_r81.themeBaseColor : "white");
|
|
456
479
|
i0.ɵɵadvance(1);
|
|
457
|
-
i0.ɵɵpropertyInterpolate("matTooltip", i0.ɵɵpipeBind2(2, 6,
|
|
458
|
-
i0.ɵɵproperty("routerLinkActiveOptions", i0.ɵɵpureFunction0(15, _c10))("ngClass",
|
|
480
|
+
i0.ɵɵpropertyInterpolate("matTooltip", i0.ɵɵpipeBind2(2, 6, goal_r82.itemName, ctx_r81.softLabels));
|
|
481
|
+
i0.ɵɵproperty("routerLinkActiveOptions", i0.ɵɵpureFunction0(15, _c10))("ngClass", ctx_r81.goalIndex == i_r83 ? "color-text" : "color-text1");
|
|
459
482
|
i0.ɵɵadvance(2);
|
|
460
|
-
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(4, 9, i0.ɵɵpipeBind2(5, 12,
|
|
483
|
+
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(4, 9, i0.ɵɵpipeBind2(5, 12, goal_r82.itemName, ctx_r81.softLabels), ctx_r81.searchText), i0.ɵɵsanitizeHtml);
|
|
461
484
|
} }
|
|
462
|
-
function
|
|
463
|
-
i0.ɵɵelementStart(0, "div",
|
|
464
|
-
i0.ɵɵelementStart(1, "div",
|
|
485
|
+
function MenuComponent_div_35_Template(rf, ctx) { if (rf & 1) {
|
|
486
|
+
i0.ɵɵelementStart(0, "div", 63);
|
|
487
|
+
i0.ɵɵelementStart(1, "div", 64);
|
|
465
488
|
i0.ɵɵtext(2);
|
|
466
489
|
i0.ɵɵpipe(3, "translate");
|
|
467
490
|
i0.ɵɵelementEnd();
|
|
468
|
-
i0.ɵɵelementStart(4, "div",
|
|
469
|
-
i0.ɵɵtemplate(5,
|
|
491
|
+
i0.ɵɵelementStart(4, "div", 115);
|
|
492
|
+
i0.ɵɵtemplate(5, MenuComponent_div_35_div_5_Template, 6, 16, "div", 108);
|
|
470
493
|
i0.ɵɵelementEnd();
|
|
471
494
|
i0.ɵɵelementEnd();
|
|
472
495
|
} if (rf & 2) {
|
|
473
|
-
const
|
|
496
|
+
const ctx_r16 = i0.ɵɵnextContext();
|
|
474
497
|
i0.ɵɵadvance(2);
|
|
475
498
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, "SHELL.GOALSPRINT"));
|
|
476
499
|
i0.ɵɵadvance(3);
|
|
477
|
-
i0.ɵɵproperty("ngForOf",
|
|
500
|
+
i0.ɵɵproperty("ngForOf", ctx_r16.goalSearchList);
|
|
478
501
|
} }
|
|
479
|
-
function
|
|
480
|
-
const
|
|
481
|
-
i0.ɵɵelementStart(0, "div",
|
|
482
|
-
i0.ɵɵelementStart(2, "button",
|
|
483
|
-
i0.ɵɵlistener("mousedown", function
|
|
484
|
-
i0.ɵɵelementStart(3, "div",
|
|
485
|
-
i0.ɵɵelementStart(4, "app-avatar",
|
|
486
|
-
i0.ɵɵlistener("click", function
|
|
502
|
+
function MenuComponent_div_36_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
503
|
+
const _r91 = i0.ɵɵgetCurrentView();
|
|
504
|
+
i0.ɵɵelementStart(0, "div", 118, 103);
|
|
505
|
+
i0.ɵɵelementStart(2, "button", 119);
|
|
506
|
+
i0.ɵɵlistener("mousedown", function MenuComponent_div_36_div_4_Template_button_mousedown_2_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r91); const employee_r87 = restoredCtx.$implicit; const ctx_r90 = i0.ɵɵnextContext(2); return ctx_r90.selectEmployee(employee_r87, $event); });
|
|
507
|
+
i0.ɵɵelementStart(3, "div", 120);
|
|
508
|
+
i0.ɵɵelementStart(4, "app-avatar", 121);
|
|
509
|
+
i0.ɵɵlistener("click", function MenuComponent_div_36_div_4_Template_app_avatar_click_4_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r91); const employee_r87 = restoredCtx.$implicit; const ctx_r92 = i0.ɵɵnextContext(2); ctx_r92.profilePage(employee_r87.userId); return $event.stopPropagation(); });
|
|
487
510
|
i0.ɵɵpipe(5, "removeSpecialCharacters");
|
|
488
511
|
i0.ɵɵpipe(6, "fetchSizedAndCachedImage");
|
|
489
512
|
i0.ɵɵelementEnd();
|
|
490
|
-
i0.ɵɵelementStart(7, "div",
|
|
491
|
-
i0.ɵɵelement(8, "span",
|
|
513
|
+
i0.ɵɵelementStart(7, "div", 122);
|
|
514
|
+
i0.ɵɵelement(8, "span", 110);
|
|
492
515
|
i0.ɵɵpipe(9, "highLightText");
|
|
493
516
|
i0.ɵɵelementEnd();
|
|
494
517
|
i0.ɵɵelementEnd();
|
|
495
518
|
i0.ɵɵelementEnd();
|
|
496
519
|
i0.ɵɵelementEnd();
|
|
497
520
|
} if (rf & 2) {
|
|
498
|
-
const
|
|
499
|
-
const
|
|
500
|
-
const
|
|
501
|
-
i0.ɵɵstyleProp("background-color",
|
|
521
|
+
const employee_r87 = ctx.$implicit;
|
|
522
|
+
const i_r88 = ctx.index;
|
|
523
|
+
const ctx_r86 = i0.ɵɵnextContext(2);
|
|
524
|
+
i0.ɵɵstyleProp("background-color", ctx_r86.selectedEmployeeIndex == i_r88 ? ctx_r86.themeBaseColor : "white");
|
|
502
525
|
i0.ɵɵadvance(2);
|
|
503
|
-
i0.ɵɵpropertyInterpolate1("routerLink", "/dashboard/profile/",
|
|
504
|
-
i0.ɵɵpropertyInterpolate("matTooltip",
|
|
505
|
-
i0.ɵɵproperty("ngClass",
|
|
526
|
+
i0.ɵɵpropertyInterpolate1("routerLink", "/dashboard/profile/", employee_r87.itemId, "/overview");
|
|
527
|
+
i0.ɵɵpropertyInterpolate("matTooltip", employee_r87.itemName);
|
|
528
|
+
i0.ɵɵproperty("ngClass", ctx_r86.selectedEmployeeIndex == i_r88 ? "color-text" : "color-text1");
|
|
506
529
|
i0.ɵɵadvance(2);
|
|
507
|
-
i0.ɵɵpropertyInterpolate("matTooltip",
|
|
508
|
-
i0.ɵɵproperty("name", i0.ɵɵpipeBind1(5, 10,
|
|
530
|
+
i0.ɵɵpropertyInterpolate("matTooltip", employee_r87.itemName);
|
|
531
|
+
i0.ɵɵproperty("name", i0.ɵɵpipeBind1(5, 10, employee_r87.itemName))("src", i0.ɵɵpipeBind3(6, 12, employee_r87.profileImage, "20", ""))("isRound", true);
|
|
509
532
|
i0.ɵɵadvance(4);
|
|
510
|
-
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(9, 16,
|
|
533
|
+
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(9, 16, employee_r87.itemName, ctx_r86.searchText), i0.ɵɵsanitizeHtml);
|
|
511
534
|
} }
|
|
512
|
-
function
|
|
513
|
-
i0.ɵɵelementStart(0, "div",
|
|
514
|
-
i0.ɵɵelementStart(1, "div",
|
|
535
|
+
function MenuComponent_div_36_Template(rf, ctx) { if (rf & 1) {
|
|
536
|
+
i0.ɵɵelementStart(0, "div", 106);
|
|
537
|
+
i0.ɵɵelementStart(1, "div", 64);
|
|
515
538
|
i0.ɵɵtext(2, "Employees");
|
|
516
539
|
i0.ɵɵelementEnd();
|
|
517
|
-
i0.ɵɵelementStart(3, "div",
|
|
518
|
-
i0.ɵɵtemplate(4,
|
|
540
|
+
i0.ɵɵelementStart(3, "div", 116);
|
|
541
|
+
i0.ɵɵtemplate(4, MenuComponent_div_36_div_4_Template, 10, 19, "div", 117);
|
|
519
542
|
i0.ɵɵelementEnd();
|
|
520
543
|
i0.ɵɵelementEnd();
|
|
521
544
|
} if (rf & 2) {
|
|
522
|
-
const
|
|
545
|
+
const ctx_r17 = i0.ɵɵnextContext();
|
|
523
546
|
i0.ɵɵadvance(4);
|
|
524
|
-
i0.ɵɵproperty("ngForOf",
|
|
547
|
+
i0.ɵɵproperty("ngForOf", ctx_r17.employeeList);
|
|
525
548
|
} }
|
|
526
|
-
function
|
|
527
|
-
const
|
|
528
|
-
i0.ɵɵelementStart(0, "div",
|
|
529
|
-
i0.ɵɵelementStart(1, "button",
|
|
530
|
-
i0.ɵɵlistener("mousedown", function
|
|
549
|
+
function MenuComponent_div_37_div_9_Template(rf, ctx) { if (rf & 1) {
|
|
550
|
+
const _r97 = i0.ɵɵgetCurrentView();
|
|
551
|
+
i0.ɵɵelementStart(0, "div", 131);
|
|
552
|
+
i0.ɵɵelementStart(1, "button", 132);
|
|
553
|
+
i0.ɵɵlistener("mousedown", function MenuComponent_div_37_div_9_Template_button_mousedown_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r97); const search_r94 = restoredCtx.$implicit; const ctx_r96 = i0.ɵɵnextContext(2); ctx_r96.searchText = search_r94.recentSearch; return ctx_r96.SearchRecentItem(search_r94, $event); });
|
|
531
554
|
i0.ɵɵpipe(2, "softLabelsPipe");
|
|
532
555
|
i0.ɵɵpipe(3, "timeago");
|
|
533
556
|
i0.ɵɵnamespaceSVG();
|
|
534
|
-
i0.ɵɵelementStart(4, "svg",
|
|
535
|
-
i0.ɵɵelement(5, "circle",
|
|
536
|
-
i0.ɵɵelement(6, "polyline",
|
|
557
|
+
i0.ɵɵelementStart(4, "svg", 133);
|
|
558
|
+
i0.ɵɵelement(5, "circle", 126);
|
|
559
|
+
i0.ɵɵelement(6, "polyline", 127);
|
|
537
560
|
i0.ɵɵelementEnd();
|
|
538
561
|
i0.ɵɵnamespaceHTML();
|
|
539
|
-
i0.ɵɵelementStart(7, "span",
|
|
540
|
-
i0.ɵɵelement(8, "span",
|
|
562
|
+
i0.ɵɵelementStart(7, "span", 134);
|
|
563
|
+
i0.ɵɵelement(8, "span", 135);
|
|
541
564
|
i0.ɵɵpipe(9, "highLightText");
|
|
542
565
|
i0.ɵɵpipe(10, "softLabelsPipe");
|
|
543
|
-
i0.ɵɵelementStart(11, "span",
|
|
566
|
+
i0.ɵɵelementStart(11, "span", 136);
|
|
544
567
|
i0.ɵɵtext(12);
|
|
545
568
|
i0.ɵɵpipe(13, "timeago");
|
|
546
569
|
i0.ɵɵelementEnd();
|
|
@@ -548,45 +571,45 @@ function MenuComponent_div_36_div_9_Template(rf, ctx) { if (rf & 1) {
|
|
|
548
571
|
i0.ɵɵelementEnd();
|
|
549
572
|
i0.ɵɵelementEnd();
|
|
550
573
|
} if (rf & 2) {
|
|
551
|
-
const
|
|
552
|
-
const
|
|
553
|
-
const
|
|
554
|
-
i0.ɵɵstyleProp("background-color",
|
|
574
|
+
const search_r94 = ctx.$implicit;
|
|
575
|
+
const i_r95 = ctx.index;
|
|
576
|
+
const ctx_r93 = i0.ɵɵnextContext(2);
|
|
577
|
+
i0.ɵɵstyleProp("background-color", ctx_r93.rs == i_r95 ? "#f1f5f9" : "white");
|
|
555
578
|
i0.ɵɵadvance(1);
|
|
556
|
-
i0.ɵɵpropertyInterpolate2("matTooltip", "", i0.ɵɵpipeBind2(2, 7,
|
|
557
|
-
i0.ɵɵproperty("ngClass",
|
|
579
|
+
i0.ɵɵpropertyInterpolate2("matTooltip", "", i0.ɵɵpipeBind2(2, 7, search_r94.recentSearch, ctx_r93.softLabels), " \n (", i0.ɵɵpipeBind1(3, 10, ctx_r93.convertToLocalTime(search_r94.createdDateTime)), ")");
|
|
580
|
+
i0.ɵɵproperty("ngClass", ctx_r93.rs == i_r95 ? "color-text" : "color-text1");
|
|
558
581
|
i0.ɵɵadvance(7);
|
|
559
|
-
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(9, 12, i0.ɵɵpipeBind2(10, 15,
|
|
582
|
+
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(9, 12, i0.ɵɵpipeBind2(10, 15, search_r94.recentSearch, ctx_r93.softLabels), ctx_r93.searchText), i0.ɵɵsanitizeHtml);
|
|
560
583
|
i0.ɵɵadvance(4);
|
|
561
|
-
i0.ɵɵtextInterpolate1("(", i0.ɵɵpipeBind1(13, 18,
|
|
584
|
+
i0.ɵɵtextInterpolate1("(", i0.ɵɵpipeBind1(13, 18, ctx_r93.convertToLocalTime(search_r94.createdDateTime)), ")");
|
|
562
585
|
} }
|
|
563
|
-
function
|
|
564
|
-
i0.ɵɵelementStart(0, "div",
|
|
565
|
-
i0.ɵɵelementStart(1, "div",
|
|
586
|
+
function MenuComponent_div_37_Template(rf, ctx) { if (rf & 1) {
|
|
587
|
+
i0.ɵɵelementStart(0, "div", 123);
|
|
588
|
+
i0.ɵɵelementStart(1, "div", 124);
|
|
566
589
|
i0.ɵɵnamespaceSVG();
|
|
567
|
-
i0.ɵɵelementStart(2, "svg",
|
|
568
|
-
i0.ɵɵelement(3, "circle",
|
|
569
|
-
i0.ɵɵelement(4, "polyline",
|
|
590
|
+
i0.ɵɵelementStart(2, "svg", 125);
|
|
591
|
+
i0.ɵɵelement(3, "circle", 126);
|
|
592
|
+
i0.ɵɵelement(4, "polyline", 127);
|
|
570
593
|
i0.ɵɵelementEnd();
|
|
571
594
|
i0.ɵɵnamespaceHTML();
|
|
572
|
-
i0.ɵɵelementStart(5, "span",
|
|
595
|
+
i0.ɵɵelementStart(5, "span", 128);
|
|
573
596
|
i0.ɵɵtext(6);
|
|
574
597
|
i0.ɵɵpipe(7, "translate");
|
|
575
598
|
i0.ɵɵelementEnd();
|
|
576
599
|
i0.ɵɵelementEnd();
|
|
577
|
-
i0.ɵɵelementStart(8, "div",
|
|
578
|
-
i0.ɵɵtemplate(9,
|
|
600
|
+
i0.ɵɵelementStart(8, "div", 129);
|
|
601
|
+
i0.ɵɵtemplate(9, MenuComponent_div_37_div_9_Template, 14, 20, "div", 130);
|
|
579
602
|
i0.ɵɵpipe(10, "slice");
|
|
580
603
|
i0.ɵɵelementEnd();
|
|
581
604
|
i0.ɵɵelementEnd();
|
|
582
605
|
} if (rf & 2) {
|
|
583
|
-
const
|
|
606
|
+
const ctx_r18 = i0.ɵɵnextContext();
|
|
584
607
|
i0.ɵɵadvance(6);
|
|
585
608
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(7, 2, "SHELL.RECENTSEARCHS"));
|
|
586
609
|
i0.ɵɵadvance(3);
|
|
587
|
-
i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind3(10, 4,
|
|
610
|
+
i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind3(10, 4, ctx_r18.recentSearches, 0, 9));
|
|
588
611
|
} }
|
|
589
|
-
function
|
|
612
|
+
function MenuComponent_mat_error_51_Template(rf, ctx) { if (rf & 1) {
|
|
590
613
|
i0.ɵɵelementStart(0, "mat-error");
|
|
591
614
|
i0.ɵɵtext(1);
|
|
592
615
|
i0.ɵɵpipe(2, "translate");
|
|
@@ -595,7 +618,7 @@ function MenuComponent_mat_error_50_Template(rf, ctx) { if (rf & 1) {
|
|
|
595
618
|
i0.ɵɵadvance(1);
|
|
596
619
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "APP.DASHBOARDNAMEREQUIRED"), " ");
|
|
597
620
|
} }
|
|
598
|
-
function
|
|
621
|
+
function MenuComponent_mat_error_52_Template(rf, ctx) { if (rf & 1) {
|
|
599
622
|
i0.ɵɵelementStart(0, "mat-error");
|
|
600
623
|
i0.ɵɵtext(1);
|
|
601
624
|
i0.ɵɵpipe(2, "translate");
|
|
@@ -604,7 +627,7 @@ function MenuComponent_mat_error_51_Template(rf, ctx) { if (rf & 1) {
|
|
|
604
627
|
i0.ɵɵadvance(1);
|
|
605
628
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "APP.DASHBOARDNAMELENGTHEXCEED"), " ");
|
|
606
629
|
} }
|
|
607
|
-
function
|
|
630
|
+
function MenuComponent_mat_error_56_Template(rf, ctx) { if (rf & 1) {
|
|
608
631
|
i0.ɵɵelementStart(0, "mat-error");
|
|
609
632
|
i0.ɵɵtext(1);
|
|
610
633
|
i0.ɵɵpipe(2, "translate");
|
|
@@ -613,19 +636,19 @@ function MenuComponent_mat_error_55_Template(rf, ctx) { if (rf & 1) {
|
|
|
613
636
|
i0.ɵɵadvance(1);
|
|
614
637
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "APP.CUSTOMAPPDESCRIPTIONMAXLENGTHERROR"), " ");
|
|
615
638
|
} }
|
|
616
|
-
function
|
|
617
|
-
const
|
|
639
|
+
function MenuComponent_mat_option_64_Template(rf, ctx) { if (rf & 1) {
|
|
640
|
+
const _r101 = i0.ɵɵgetCurrentView();
|
|
618
641
|
i0.ɵɵelementStart(0, "mat-option", 41, 42);
|
|
619
|
-
i0.ɵɵlistener("click", function
|
|
642
|
+
i0.ɵɵlistener("click", function MenuComponent_mat_option_64_Template_mat_option_click_0_listener() { i0.ɵɵrestoreView(_r101); const _r99 = i0.ɵɵreference(1); const ctx_r100 = i0.ɵɵnextContext(); return ctx_r100.toggleRolesPerOne(_r99.value); });
|
|
620
643
|
i0.ɵɵtext(2);
|
|
621
644
|
i0.ɵɵelementEnd();
|
|
622
645
|
} if (rf & 2) {
|
|
623
|
-
const
|
|
624
|
-
i0.ɵɵproperty("value",
|
|
646
|
+
const roles_r98 = ctx.$implicit;
|
|
647
|
+
i0.ɵɵproperty("value", roles_r98.roleId);
|
|
625
648
|
i0.ɵɵadvance(2);
|
|
626
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
649
|
+
i0.ɵɵtextInterpolate1(" ", roles_r98.roleName, " ");
|
|
627
650
|
} }
|
|
628
|
-
function
|
|
651
|
+
function MenuComponent_mat_error_65_Template(rf, ctx) { if (rf & 1) {
|
|
629
652
|
i0.ɵɵelementStart(0, "mat-error");
|
|
630
653
|
i0.ɵɵtext(1);
|
|
631
654
|
i0.ɵɵpipe(2, "translate");
|
|
@@ -634,35 +657,35 @@ function MenuComponent_mat_error_64_Template(rf, ctx) { if (rf & 1) {
|
|
|
634
657
|
i0.ɵɵadvance(1);
|
|
635
658
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "APP.SELECTANYROLE"), " ");
|
|
636
659
|
} }
|
|
637
|
-
function
|
|
638
|
-
const
|
|
660
|
+
function MenuComponent_mat_option_73_Template(rf, ctx) { if (rf & 1) {
|
|
661
|
+
const _r105 = i0.ɵɵgetCurrentView();
|
|
639
662
|
i0.ɵɵelementStart(0, "mat-option", 41, 45);
|
|
640
|
-
i0.ɵɵlistener("click", function
|
|
663
|
+
i0.ɵɵlistener("click", function MenuComponent_mat_option_73_Template_mat_option_click_0_listener() { i0.ɵɵrestoreView(_r105); const ctx_r104 = i0.ɵɵnextContext(); return ctx_r104.toggleEditRolesPerOne(); });
|
|
641
664
|
i0.ɵɵtext(2);
|
|
642
665
|
i0.ɵɵelementEnd();
|
|
643
666
|
} if (rf & 2) {
|
|
644
|
-
const
|
|
645
|
-
i0.ɵɵproperty("value",
|
|
667
|
+
const role_r102 = ctx.$implicit;
|
|
668
|
+
i0.ɵɵproperty("value", role_r102.roleId);
|
|
646
669
|
i0.ɵɵadvance(2);
|
|
647
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
670
|
+
i0.ɵɵtextInterpolate1(" ", role_r102.roleName, " ");
|
|
648
671
|
} }
|
|
649
|
-
function
|
|
650
|
-
const
|
|
672
|
+
function MenuComponent_mat_option_81_Template(rf, ctx) { if (rf & 1) {
|
|
673
|
+
const _r109 = i0.ɵɵgetCurrentView();
|
|
651
674
|
i0.ɵɵelementStart(0, "mat-option", 41, 47);
|
|
652
|
-
i0.ɵɵlistener("click", function
|
|
675
|
+
i0.ɵɵlistener("click", function MenuComponent_mat_option_81_Template_mat_option_click_0_listener() { i0.ɵɵrestoreView(_r109); const ctx_r108 = i0.ɵɵnextContext(); return ctx_r108.toggleDeleteRolesPerOne(); });
|
|
653
676
|
i0.ɵɵtext(2);
|
|
654
677
|
i0.ɵɵelementEnd();
|
|
655
678
|
} if (rf & 2) {
|
|
656
|
-
const
|
|
657
|
-
i0.ɵɵproperty("value",
|
|
679
|
+
const role_r106 = ctx.$implicit;
|
|
680
|
+
i0.ɵɵproperty("value", role_r106.roleId);
|
|
658
681
|
i0.ɵɵadvance(2);
|
|
659
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
682
|
+
i0.ɵɵtextInterpolate1(" ", role_r106.roleName, " ");
|
|
660
683
|
} }
|
|
661
|
-
function
|
|
684
|
+
function MenuComponent_mat_progress_bar_84_Template(rf, ctx) { if (rf & 1) {
|
|
662
685
|
i0.ɵɵelement(0, "mat-progress-bar", 61);
|
|
663
686
|
} }
|
|
664
|
-
function
|
|
665
|
-
i0.ɵɵelement(0, "mat-spinner",
|
|
687
|
+
function MenuComponent_mat_spinner_128_Template(rf, ctx) { if (rf & 1) {
|
|
688
|
+
i0.ɵɵelement(0, "mat-spinner", 137);
|
|
666
689
|
} if (rf & 2) {
|
|
667
690
|
i0.ɵɵproperty("diameter", 100);
|
|
668
691
|
} }
|
|
@@ -3050,8 +3073,8 @@ MenuComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MenuComponent
|
|
|
3050
3073
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.openMenuPopOver = _t);
|
|
3051
3074
|
} }, hostBindings: function MenuComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
3052
3075
|
i0.ɵɵlistener("keydown.control.q", function MenuComponent_keydown_control_q_HostBindingHandler() { return ctx.keyOpenEvent(); }, false, i0.ɵɵresolveDocument)("keydown.control.m", function MenuComponent_keydown_control_m_HostBindingHandler() { return ctx.keyCloseEvent(); }, false, i0.ɵɵresolveDocument)("keydown.control.b", function MenuComponent_keydown_control_b_HostBindingHandler() { return ctx.remoteSearchByText(); }, false, i0.ɵɵresolveDocument)("keydown.control.y", function MenuComponent_keydown_control_y_HostBindingHandler() { return ctx.remoteSearchById(); }, false, i0.ɵɵresolveDocument);
|
|
3053
|
-
} }, inputs: { reloadAll: ["reload", "reloadAll"] }, outputs: { isOpened: "isOpened", openNewDashboard: "openNewDashboard" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 128, vars: 93, consts: [["type", "submit", "mat-icon-button", "", "fxHide.gt-xs", "", "fxShow", "", 1, "visibles", 3, "matMenuTriggerFor"], [1, "newMenu"], ["fxFlex", "", "fxHide.gt-xs", "", "fxShow", "", 1, "newLogo", "default-bg", "top-logo-bg", "newminilogo", "zoom-image-hover", "custom-header-icon-mobile"], ["alt", "", "id", "mini-logo-topbar", 2, "width", "30px", "height", "30px", 3, "src", "click"], ["fxFlex", "", "fxHide", "", "fxShow.gt-xs", "", 1, "newLogo", "top-logo-bg", "apps-button", "zoom-image-hover", "custom-header-icon", 2, "left", "0px"], ["id", "main-logo-topbar", 1, "img-height-main-logo-topbar", 2, "cursor", "pointer", "left", "20px", "position", "relative", 3, "src", "click"], ["yPosition", "below", 1, "filter-panel", 2, "height", "auto", 3, "click"], ["menus", "matMenu"], [4, "ngFor", "ngForOf"], ["style", "position: relative;\nleft: 90%", "class", "store-icom mat-icon-button store-icon-container", 3, "ngClass", 4, "ngIf"], [1, "SearchBox", "dropdown", 2, "position", "absolute !important"], ["class", "mat-color-accent input-group-addon", 4, "ngIf"], ["type", "text", "autocomplete", "off", 1, "SearchBox-input", "dropbtn", 3, "placeholder", "ngModel", "ngModelChange", "input", "click", "focus", "blur", "keydown.enter", "keydown.arrowdown", "keydown.arrowup", "keydown.arrowleft", "keydown.arrowright"], ["element", ""], [1, "SearchBox-button"], [1, "close_icon_search"], [4, "ngIf"], ["class", "icon-button mr-05", "aria-hidden", "false", "style", "cursor:pointer", 3, "click", 4, "ngIf"], ["color", "primary", 1, "SearchBox-icon", "icon-color", "mt-lg-n2", "mr-05", "info-class", "info-icon-custom", 3, "satPopoverAnchorFor", "click"], ["infoPopOver", "satPopoverAnchor"], ["color", "primary", 1, "SearchBox-icon", "icon-color", "mt-lg-n2", "search-icon-custom"], [1, "dropdown-content", "dropdown-content-navbar", "search-dropdown-custom-modal", 3, "ngClass"], ["color", "primary", "mode", "indeterminate", 4, "ngIf"], [1, "row", "rowselect", "custom-row-selector"], ["class", "column columnselect-next pl-05 custom-search-modal-apps-container-main", 4, "ngIf"], ["class", "column pl-05", 4, "ngIf"], ["class", "column columnselect-apps ml-0", 4, "ngIf"], ["class", "columnselect-next ml-0", 4, "ngIf"], ["class", "column columnselect-apps ml-0 custom-search-modal-recents-container-main", 4, "ngIf"], ["backdropClass", "backdrop-color", "hasBackdrop", "", "verticalAlign", "below", "horizontalAlign", "end", 3, "interactiveClose"], ["addWorkspace", ""], [1, "filter-data", "p-0"], [1, "text-center"], [1, "card-title-text", "mat-bg-primary", "p-05", "mb-1"], ["novalidate", "", 3, "formGroup", "submit"], [1, "card-content"], [1, "full-width"], ["matInput", "", "formControlName", "workspaceName", 3, "placeholder"], ["matInput", "", "formControlName", "description", "rows", "2", 3, "placeholder"], [1, "full-width", 3, "click"], ["formControlName", "selectedRoles", "multiple", "", "required", "", 3, "compareWith", "placeholder"], [3, "value", "click"], ["allSelected", ""], [3, "value", "click", 4, "ngFor", "ngForOf"], ["formControlName", "editRoleIds", "multiple", "", 3, "compareWith", "placeholder"], ["allEditSelected", ""], ["formControlName", "deleteRoleIds", "multiple", "", 3, "compareWith", "placeholder"], ["allDeleteSelected", ""], ["mat-button", "", "mat-raised-button", "", "color", "primary", "type", "button", 1, "mr-1", 3, "disabled", "click"], ["icon", "plus", 1, "mr-05"], ["mat-button", "", "mat-raised-button", "", "type", "button", 3, "click"], ["icon", "times", 1, "mr-05"], ["hasBackdrop", "", "verticalAlign", "above", 3, "interactiveClose"], ["p", ""], [1, "tooltip-wrapper", 2, "background", "#fff", "border", "1px solid #ddd", "border-radius", "10px", "padding", "10px 14px", "box-shadow", "0 4px 12px rgba(0,0,0,0.12)"], ["class", "spinner-class", 3, "diameter", 4, "ngIf"], ["mat-menu-item", "", "routerLinkActive", "item-active", 3, "routerLink", "click"], [1, "store-icom", "mat-icon-button", "store-icon-container", 2, "position", "relative", "left", "90%", 3, "ngClass"], ["icon", "store", "matTooltipClass", "tooltipClass-mat", 1, "mat-color-accent", "cursor-pointer", "theme-navbar-icon-color", "store-icon-fa", 3, "matTooltip", "click"], [1, "mat-color-accent", "input-group-addon"], ["aria-hidden", "false", 1, "icon-button", "mr-05", 2, "cursor", "pointer", 3, "click"], ["color", "primary", "mode", "indeterminate"], [1, "column", "columnselect-next", "pl-05", "custom-search-modal-apps-container-main"], [1, "in-header", "custom-search-modal-apps-header"], ["xmlns", "http://www.w3.org/2000/svg", "width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "stroke", "currentColor", "stroke-width", "2", "stroke-linecap", "round", "stroke-linejoin", "round", "aria-hidden", "true", 1, "lucide", "lucide-file-text", "w-4", "h-4"], ["d", "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"], ["d", "M14 2v4a2 2 0 0 0 2 2h4"], ["d", "M10 9H8"], ["d", "M16 13H8"], ["d", "M16 17H8"], [1, "custom-search-modal-apps-header-text"], ["id", "style-1", 1, "custom-search-modal-apps-container", 2, "background-color", "white !important"], ["class", "custom-search-modal-apps-main", 3, "background-color", 4, "ngFor", "ngForOf"], [1, "custom-search-modal-apps-main"], ["class", "custom-search-modal-apps-content", 4, "ngIf"], [1, "custom-search-modal-apps-content"], ["mat-menu-item", "", "routerLinkActive", "item-active", "matTooltipClass", "tooltipClass-mat", 1, "custom-search-modal-apps-btn", 3, "routerLink", "ngClass", "routerLinkActiveOptions", "matTooltip", "mousedown"], [1, "icon-color", "custom-search-modal-apps-icon", 3, "ngClass"], [1, "custom-search-modal-apps-text", 3, "innerHTML"], [1, "column", "pl-05"], ["class", "columnselect-next ml-0 custom-search-modal-dashboard-container-main", 4, "ngIf"], [1, "columnselect-next", "ml-0", "custom-search-modal-dashboard-container-main"], [1, "in-header", "custom-search-modal-dashboard-header"], ["xmlns", "http://www.w3.org/2000/svg", "width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "stroke", "currentColor", "stroke-width", "2", "stroke-linecap", "round", "stroke-linejoin", "round", "aria-hidden", "true", 1, "lucide", "lucide-layout-dashboard", "w-4", "h-4"], ["width", "7", "height", "9", "x", "3", "y", "3", "rx", "1"], ["width", "7", "height", "5", "x", "14", "y", "3", "rx", "1"], ["width", "7", "height", "9", "x", "14", "y", "12", "rx", "1"], ["width", "7", "height", "5", "x", "3", "y", "16", "rx", "1"], [1, "custom-search-modal-dashboard-header-text"], ["icon", "plus-square", "class", "mat-color-accent cursor-pointer custom-search-modal-dashboard-header-add-icon", 3, "matTooltip", "satPopoverAnchorFor", "click", 4, "ngIf"], ["id", "style-2", 1, "custom-search-modal-dashboard-container", 2, "background-color", "white !important"], ["icon", "plus-square", 1, "mat-color-accent", "cursor-pointer", "custom-search-modal-dashboard-header-add-icon", 3, "matTooltip", "satPopoverAnchorFor", "click"], ["class", "scroll custom-search-modal-dashboard-main", 3, "background-color", 4, "ngFor", "ngForOf"], [1, "scroll", "custom-search-modal-dashboard-main"], ["workspaceElement", ""], ["mat-menu-item", "", "routerLinkActive", "item-active", "matTooltipClass", "tooltipClass-mat", 1, "custom-search-modal-dashboard-btn", 3, "ngClass", "routerLink", "matTooltip", "mousedown", "click"], [1, "custom-search-modal-dashboard-text", 3, "innerHTML"], [1, "column", "columnselect-apps", "ml-0"], [1, "in-header"], ["id", "style-3", 2, "background-color", "white !important", "height", "445px !important", "overflow", "auto"], [3, "background-color", 4, "ngFor", "ngForOf"], ["mat-menu-item", "", "routerLinkActive", "item-active", "matTooltipClass", "tooltipClass-mat", 3, "routerLinkActiveOptions", "routerLink", "ngClass", "matTooltip", "mousedown"], [3, "innerHTML"], [1, "columnselect-next", "ml-0"], ["id", "style-7", 1, "scroll", 2, "background-color", "white !important", "height", "445px !important", "overflow", "auto"], ["mat-menu-item", "", "routerLinkActive", "item-active", "matTooltipClass", "tooltipClass-mat", 3, "routerLinkActiveOptions", "ngClass", "matTooltip", "mousedown"], ["class", "in-header", 4, "ngIf"], ["id", "style-5", 1, "scroll", 2, "background-color", "white !important", "height", "445px !important", "overflow", "auto"], ["id", "style-6", 1, "scroll", 2, "background-color", "white !important", "height", "445px !important", "overflow", "auto"], ["id", "style-4", 2, "background-color", "white !important", "height", "445px !important", "overflow", "auto"], ["style", "background-color: white;", 3, "background-color", 4, "ngFor", "ngForOf"], [2, "background-color", "white"], ["mat-menu-item", "", "routerLinkActive", "item-active", "matTooltipClass", "tooltipClass-mat", 3, "ngClass", "routerLink", "matTooltip", "mousedown"], ["fxLayout", "row"], ["fxLayoutAlign", "start center", "size", "20", 3, "name", "matTooltip", "src", "isRound", "click"], [1, "ml-05"], [1, "column", "columnselect-apps", "ml-0", "custom-search-modal-recents-container-main"], [1, "in-header", "custom-search-modal-recents-header"], ["xmlns", "http://www.w3.org/2000/svg", "width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "stroke", "currentColor", "stroke-width", "2", "stroke-linecap", "round", "stroke-linejoin", "round", "aria-hidden", "true", 1, "lucide", "lucide-clock", "w-4", "h-4"], ["cx", "12", "cy", "12", "r", "10"], ["points", "12 6 12 12 16 14"], [1, "custom-search-modal-recents-header-text"], [1, "custom-search-modal-recents-container", 2, "background-color", "white !important"], ["class", "scroll custom-search-modal-recents-main", 3, "background-color", 4, "ngFor", "ngForOf"], [1, "scroll", "custom-search-modal-recents-main"], ["mat-menu-item", "", "matTooltipClass", "tooltipClass-mat", 1, "custom-search-modal-recents-btn", 3, "ngClass", "matTooltip", "mousedown"], ["xmlns", "http://www.w3.org/2000/svg", "width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "stroke", "currentColor", "stroke-width", "2", "stroke-linecap", "round", "stroke-linejoin", "round", "aria-hidden", "true", 1, "lucide", "lucide-clock", "w-4", "h-4", "text-muted-foreground"], [1, "custom-search-modal-recents-item"], [1, "custom-search-modal-recents-text", 3, "innerHTML"], [1, "custom-search-modal-recents-time-text"], [1, "spinner-class", 3, "diameter"]], template: function MenuComponent_Template(rf, ctx) { if (rf & 1) {
|
|
3054
|
-
const
|
|
3076
|
+
} }, inputs: { reloadAll: ["reload", "reloadAll"] }, outputs: { isOpened: "isOpened", openNewDashboard: "openNewDashboard" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 129, vars: 94, consts: [["type", "submit", "mat-icon-button", "", "fxHide.gt-xs", "", "fxShow", "", 1, "visibles", 3, "matMenuTriggerFor"], [1, "newMenu"], ["fxFlex", "", "fxHide.gt-xs", "", "fxShow", "", 1, "newLogo", "default-bg", "top-logo-bg", "newminilogo", "zoom-image-hover", "custom-header-icon-mobile"], ["alt", "", "id", "mini-logo-topbar", 2, "width", "30px", "height", "30px", 3, "src", "click"], ["fxFlex", "", "fxHide", "", "fxShow.gt-xs", "", 1, "newLogo", "top-logo-bg", "apps-button", "zoom-image-hover", "custom-header-icon", 2, "left", "0px"], ["id", "main-logo-topbar", 1, "img-height-main-logo-topbar", 2, "cursor", "pointer", "left", "20px", "position", "relative", 3, "src", "click"], ["yPosition", "below", 1, "filter-panel", 2, "height", "auto", 3, "click"], ["menus", "matMenu"], [4, "ngFor", "ngForOf"], ["style", "position: relative;\nleft: 90%", "class", "store-icom mat-icon-button store-icon-container", 3, "ngClass", 4, "ngIf"], [1, "SearchBox", "dropdown", 2, "position", "absolute !important"], ["class", "mat-color-accent input-group-addon", 4, "ngIf"], ["type", "text", "autocomplete", "off", 1, "SearchBox-input", "dropbtn", 3, "placeholder", "ngModel", "ngModelChange", "input", "click", "focus", "blur", "keydown.enter", "keydown.arrowdown", "keydown.arrowup", "keydown.arrowleft", "keydown.arrowright"], ["element", ""], [1, "SearchBox-button"], [1, "close_icon_search"], [4, "ngIf"], ["class", "icon-button mr-05", "aria-hidden", "false", "style", "cursor:pointer", 3, "click", 4, "ngIf"], ["color", "primary", 1, "SearchBox-icon", "icon-color", "mt-lg-n2", "mr-05", "info-class", "info-icon-custom", 3, "satPopoverAnchorFor", "click"], ["infoPopOver", "satPopoverAnchor"], ["color", "primary", 1, "SearchBox-icon", "icon-color", "mt-lg-n2", "search-icon-custom"], [1, "dropdown-content", "dropdown-content-navbar", "search-dropdown-custom-modal", 3, "ngClass"], ["color", "primary", "mode", "indeterminate", 4, "ngIf"], [1, "row", "rowselect", "custom-row-selector"], ["class", "column pl-05", 4, "ngIf"], ["class", "column columnselect-next pl-05 custom-search-modal-apps-container-main", 4, "ngIf"], ["class", "column columnselect-apps ml-0", 4, "ngIf"], ["class", "columnselect-next ml-0", 4, "ngIf"], ["class", "column columnselect-apps ml-0 custom-search-modal-recents-container-main", 4, "ngIf"], ["backdropClass", "backdrop-color", "hasBackdrop", "", "verticalAlign", "below", "horizontalAlign", "end", 3, "interactiveClose"], ["addWorkspace", ""], [1, "filter-data", "p-0"], [1, "text-center"], [1, "card-title-text", "mat-bg-primary", "p-05", "mb-1"], ["novalidate", "", 3, "formGroup", "submit"], [1, "card-content"], [1, "full-width"], ["matInput", "", "formControlName", "workspaceName", 3, "placeholder"], ["matInput", "", "formControlName", "description", "rows", "2", 3, "placeholder"], [1, "full-width", 3, "click"], ["formControlName", "selectedRoles", "multiple", "", "required", "", 3, "compareWith", "placeholder"], [3, "value", "click"], ["allSelected", ""], [3, "value", "click", 4, "ngFor", "ngForOf"], ["formControlName", "editRoleIds", "multiple", "", 3, "compareWith", "placeholder"], ["allEditSelected", ""], ["formControlName", "deleteRoleIds", "multiple", "", 3, "compareWith", "placeholder"], ["allDeleteSelected", ""], ["mat-button", "", "mat-raised-button", "", "color", "primary", "type", "button", 1, "mr-1", 3, "disabled", "click"], ["icon", "plus", 1, "mr-05"], ["mat-button", "", "mat-raised-button", "", "type", "button", 3, "click"], ["icon", "times", 1, "mr-05"], ["hasBackdrop", "", "verticalAlign", "above", 3, "interactiveClose"], ["p", ""], [1, "tooltip-wrapper", 2, "background", "#fff", "border", "1px solid #ddd", "border-radius", "10px", "padding", "10px 14px", "box-shadow", "0 4px 12px rgba(0,0,0,0.12)"], ["class", "spinner-class", 3, "diameter", 4, "ngIf"], ["mat-menu-item", "", "routerLinkActive", "item-active", 3, "routerLink", "click"], [1, "store-icom", "mat-icon-button", "store-icon-container", 2, "position", "relative", "left", "90%", 3, "ngClass"], ["icon", "store", "matTooltipClass", "tooltipClass-mat", 1, "mat-color-accent", "cursor-pointer", "theme-navbar-icon-color", "store-icon-fa", 3, "matTooltip", "click"], [1, "mat-color-accent", "input-group-addon"], ["aria-hidden", "false", 1, "icon-button", "mr-05", 2, "cursor", "pointer", 3, "click"], ["color", "primary", "mode", "indeterminate"], [1, "column", "pl-05"], [1, "columnselect-next", "ml-0"], [1, "in-header"], [1, "custom-search-modal-dashboard-container", 2, "background-color", "white !important", "overflow", "auto"], ["mat-menu-item", "", "routerLink", "/dashboard-management/dashboard", "routerLinkActive", "item-active", "matTooltipClass", "tooltipClass-mat", "matTooltip", "Go to Dashboard", 1, "custom-search-modal-dashboard-btn", "color-text1"], ["xmlns", "http://www.w3.org/2000/svg", "width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "stroke", "currentColor", "stroke-width", "2", "stroke-linecap", "round", "stroke-linejoin", "round", "aria-hidden", "true", 1, "lucide", "lucide-box", "w-4", "h-4"], ["d", "M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"], ["points", "3.27 6.96 12 12.01 20.73 6.96"], ["points", "12 22.08 12 12"], [1, "custom-search-modal-dashboard-text"], [1, "column", "columnselect-next", "pl-05", "custom-search-modal-apps-container-main"], [1, "in-header", "custom-search-modal-apps-header"], ["xmlns", "http://www.w3.org/2000/svg", "width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "stroke", "currentColor", "stroke-width", "2", "stroke-linecap", "round", "stroke-linejoin", "round", "aria-hidden", "true", 1, "lucide", "lucide-file-text", "w-4", "h-4"], ["d", "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"], ["d", "M14 2v4a2 2 0 0 0 2 2h4"], ["d", "M10 9H8"], ["d", "M16 13H8"], ["d", "M16 17H8"], [1, "custom-search-modal-apps-header-text"], ["id", "style-1", 1, "custom-search-modal-apps-container", 2, "background-color", "white !important"], ["class", "custom-search-modal-apps-main", 3, "background-color", 4, "ngFor", "ngForOf"], [1, "custom-search-modal-apps-main"], ["class", "custom-search-modal-apps-content", 4, "ngIf"], [1, "custom-search-modal-apps-content"], ["mat-menu-item", "", "routerLinkActive", "item-active", "matTooltipClass", "tooltipClass-mat", 1, "custom-search-modal-apps-btn", 3, "routerLink", "ngClass", "routerLinkActiveOptions", "matTooltip", "mousedown"], [1, "icon-color", "custom-search-modal-apps-icon", 3, "ngClass"], [1, "custom-search-modal-apps-text", 3, "innerHTML"], ["class", "columnselect-next ml-0 custom-search-modal-dashboard-container-main", 4, "ngIf"], [1, "columnselect-next", "ml-0", "custom-search-modal-dashboard-container-main"], [1, "in-header", "custom-search-modal-dashboard-header"], ["xmlns", "http://www.w3.org/2000/svg", "width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "stroke", "currentColor", "stroke-width", "2", "stroke-linecap", "round", "stroke-linejoin", "round", "aria-hidden", "true", 1, "lucide", "lucide-layout-dashboard", "w-4", "h-4"], ["width", "7", "height", "9", "x", "3", "y", "3", "rx", "1"], ["width", "7", "height", "5", "x", "14", "y", "3", "rx", "1"], ["width", "7", "height", "9", "x", "14", "y", "12", "rx", "1"], ["width", "7", "height", "5", "x", "3", "y", "16", "rx", "1"], [1, "custom-search-modal-dashboard-header-text"], ["icon", "plus-square", "class", "mat-color-accent cursor-pointer custom-search-modal-dashboard-header-add-icon", 3, "matTooltip", "satPopoverAnchorFor", "click", 4, "ngIf"], ["id", "style-2", 1, "custom-search-modal-dashboard-container", 2, "background-color", "white !important"], ["icon", "plus-square", 1, "mat-color-accent", "cursor-pointer", "custom-search-modal-dashboard-header-add-icon", 3, "matTooltip", "satPopoverAnchorFor", "click"], ["class", "scroll custom-search-modal-dashboard-main", 3, "background-color", 4, "ngFor", "ngForOf"], [1, "scroll", "custom-search-modal-dashboard-main"], ["workspaceElement", ""], ["mat-menu-item", "", "routerLinkActive", "item-active", "matTooltipClass", "tooltipClass-mat", 1, "custom-search-modal-dashboard-btn", 3, "ngClass", "routerLink", "matTooltip", "mousedown", "click"], [1, "custom-search-modal-dashboard-text", 3, "innerHTML"], [1, "column", "columnselect-apps", "ml-0"], ["id", "style-3", 2, "background-color", "white !important", "height", "445px !important", "overflow", "auto"], [3, "background-color", 4, "ngFor", "ngForOf"], ["mat-menu-item", "", "routerLinkActive", "item-active", "matTooltipClass", "tooltipClass-mat", 3, "routerLinkActiveOptions", "routerLink", "ngClass", "matTooltip", "mousedown"], [3, "innerHTML"], ["id", "style-7", 1, "scroll", 2, "background-color", "white !important", "height", "445px !important", "overflow", "auto"], ["mat-menu-item", "", "routerLinkActive", "item-active", "matTooltipClass", "tooltipClass-mat", 3, "routerLinkActiveOptions", "ngClass", "matTooltip", "mousedown"], ["class", "in-header", 4, "ngIf"], ["id", "style-5", 1, "scroll", 2, "background-color", "white !important", "height", "445px !important", "overflow", "auto"], ["id", "style-6", 1, "scroll", 2, "background-color", "white !important", "height", "445px !important", "overflow", "auto"], ["id", "style-4", 2, "background-color", "white !important", "height", "445px !important", "overflow", "auto"], ["style", "background-color: white;", 3, "background-color", 4, "ngFor", "ngForOf"], [2, "background-color", "white"], ["mat-menu-item", "", "routerLinkActive", "item-active", "matTooltipClass", "tooltipClass-mat", 3, "ngClass", "routerLink", "matTooltip", "mousedown"], ["fxLayout", "row"], ["fxLayoutAlign", "start center", "size", "20", 3, "name", "matTooltip", "src", "isRound", "click"], [1, "ml-05"], [1, "column", "columnselect-apps", "ml-0", "custom-search-modal-recents-container-main"], [1, "in-header", "custom-search-modal-recents-header"], ["xmlns", "http://www.w3.org/2000/svg", "width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "stroke", "currentColor", "stroke-width", "2", "stroke-linecap", "round", "stroke-linejoin", "round", "aria-hidden", "true", 1, "lucide", "lucide-clock", "w-4", "h-4"], ["cx", "12", "cy", "12", "r", "10"], ["points", "12 6 12 12 16 14"], [1, "custom-search-modal-recents-header-text"], [1, "custom-search-modal-recents-container", 2, "background-color", "white !important"], ["class", "scroll custom-search-modal-recents-main", 3, "background-color", 4, "ngFor", "ngForOf"], [1, "scroll", "custom-search-modal-recents-main"], ["mat-menu-item", "", "matTooltipClass", "tooltipClass-mat", 1, "custom-search-modal-recents-btn", 3, "ngClass", "matTooltip", "mousedown"], ["xmlns", "http://www.w3.org/2000/svg", "width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "stroke", "currentColor", "stroke-width", "2", "stroke-linecap", "round", "stroke-linejoin", "round", "aria-hidden", "true", 1, "lucide", "lucide-clock", "w-4", "h-4", "text-muted-foreground"], [1, "custom-search-modal-recents-item"], [1, "custom-search-modal-recents-text", 3, "innerHTML"], [1, "custom-search-modal-recents-time-text"], [1, "spinner-class", 3, "diameter"]], template: function MenuComponent_Template(rf, ctx) { if (rf & 1) {
|
|
3077
|
+
const _r110 = i0.ɵɵgetCurrentView();
|
|
3055
3078
|
i0.ɵɵelementStart(0, "button", 0);
|
|
3056
3079
|
i0.ɵɵelementStart(1, "mat-icon", 1);
|
|
3057
3080
|
i0.ɵɵtext(2, "menu");
|
|
@@ -3085,7 +3108,7 @@ MenuComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MenuComponent
|
|
|
3085
3108
|
i0.ɵɵtemplate(20, MenuComponent_mat_icon_20_Template, 2, 0, "mat-icon", 17);
|
|
3086
3109
|
i0.ɵɵelementEnd();
|
|
3087
3110
|
i0.ɵɵelementStart(21, "mat-icon", 18, 19);
|
|
3088
|
-
i0.ɵɵlistener("click", function MenuComponent_Template_mat_icon_click_21_listener() { i0.ɵɵrestoreView(
|
|
3111
|
+
i0.ɵɵlistener("click", function MenuComponent_Template_mat_icon_click_21_listener() { i0.ɵɵrestoreView(_r110); const _r8 = i0.ɵɵreference(22); return ctx.openInfo(_r8); });
|
|
3089
3112
|
i0.ɵɵtext(23, "info");
|
|
3090
3113
|
i0.ɵɵelementEnd();
|
|
3091
3114
|
i0.ɵɵelementStart(24, "mat-icon", 20);
|
|
@@ -3095,153 +3118,154 @@ MenuComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MenuComponent
|
|
|
3095
3118
|
i0.ɵɵelementStart(26, "div", 21);
|
|
3096
3119
|
i0.ɵɵtemplate(27, MenuComponent_mat_progress_bar_27_Template, 1, 0, "mat-progress-bar", 22);
|
|
3097
3120
|
i0.ɵɵelementStart(28, "div", 23);
|
|
3098
|
-
i0.ɵɵtemplate(29, MenuComponent_div_29_Template,
|
|
3099
|
-
i0.ɵɵtemplate(30, MenuComponent_div_30_Template,
|
|
3100
|
-
i0.ɵɵtemplate(31, MenuComponent_div_31_Template,
|
|
3101
|
-
i0.ɵɵtemplate(32, MenuComponent_div_32_Template,
|
|
3102
|
-
i0.ɵɵtemplate(33, MenuComponent_div_33_Template, 5,
|
|
3103
|
-
i0.ɵɵtemplate(34, MenuComponent_div_34_Template,
|
|
3104
|
-
i0.ɵɵtemplate(35, MenuComponent_div_35_Template,
|
|
3105
|
-
i0.ɵɵtemplate(36, MenuComponent_div_36_Template,
|
|
3121
|
+
i0.ɵɵtemplate(29, MenuComponent_div_29_Template, 12, 0, "div", 24);
|
|
3122
|
+
i0.ɵɵtemplate(30, MenuComponent_div_30_Template, 13, 4, "div", 25);
|
|
3123
|
+
i0.ɵɵtemplate(31, MenuComponent_div_31_Template, 2, 1, "div", 24);
|
|
3124
|
+
i0.ɵɵtemplate(32, MenuComponent_div_32_Template, 6, 4, "div", 26);
|
|
3125
|
+
i0.ɵɵtemplate(33, MenuComponent_div_33_Template, 5, 1, "div", 27);
|
|
3126
|
+
i0.ɵɵtemplate(34, MenuComponent_div_34_Template, 5, 3, "div", 27);
|
|
3127
|
+
i0.ɵɵtemplate(35, MenuComponent_div_35_Template, 6, 4, "div", 27);
|
|
3128
|
+
i0.ɵɵtemplate(36, MenuComponent_div_36_Template, 5, 1, "div", 26);
|
|
3129
|
+
i0.ɵɵtemplate(37, MenuComponent_div_37_Template, 11, 8, "div", 28);
|
|
3106
3130
|
i0.ɵɵelementEnd();
|
|
3107
|
-
i0.ɵɵelementStart(
|
|
3108
|
-
i0.ɵɵelementStart(
|
|
3109
|
-
i0.ɵɵelementStart(
|
|
3110
|
-
i0.ɵɵelementStart(
|
|
3111
|
-
i0.ɵɵtext(
|
|
3112
|
-
i0.ɵɵpipe(
|
|
3131
|
+
i0.ɵɵelementStart(38, "sat-popover", 29, 30);
|
|
3132
|
+
i0.ɵɵelementStart(40, "mat-card", 31);
|
|
3133
|
+
i0.ɵɵelementStart(41, "mat-card-title", 32);
|
|
3134
|
+
i0.ɵɵelementStart(42, "div", 33);
|
|
3135
|
+
i0.ɵɵtext(43);
|
|
3136
|
+
i0.ɵɵpipe(44, "translate");
|
|
3113
3137
|
i0.ɵɵelementEnd();
|
|
3114
3138
|
i0.ɵɵelementEnd();
|
|
3115
|
-
i0.ɵɵelementStart(
|
|
3116
|
-
i0.ɵɵelementStart(
|
|
3117
|
-
i0.ɵɵlistener("submit", function
|
|
3118
|
-
i0.ɵɵelementStart(
|
|
3119
|
-
i0.ɵɵelementStart(
|
|
3120
|
-
i0.ɵɵelement(
|
|
3121
|
-
i0.ɵɵpipe(
|
|
3122
|
-
i0.ɵɵtemplate(50, MenuComponent_mat_error_50_Template, 3, 3, "mat-error", 16);
|
|
3139
|
+
i0.ɵɵelementStart(45, "mat-card-content");
|
|
3140
|
+
i0.ɵɵelementStart(46, "form", 34);
|
|
3141
|
+
i0.ɵɵlistener("submit", function MenuComponent_Template_form_submit_46_listener() { return ctx.workspaceForm.valid && ctx.upsertWorkspace(); });
|
|
3142
|
+
i0.ɵɵelementStart(47, "div", 35);
|
|
3143
|
+
i0.ɵɵelementStart(48, "mat-form-field", 36);
|
|
3144
|
+
i0.ɵɵelement(49, "input", 37);
|
|
3145
|
+
i0.ɵɵpipe(50, "translate");
|
|
3123
3146
|
i0.ɵɵtemplate(51, MenuComponent_mat_error_51_Template, 3, 3, "mat-error", 16);
|
|
3147
|
+
i0.ɵɵtemplate(52, MenuComponent_mat_error_52_Template, 3, 3, "mat-error", 16);
|
|
3124
3148
|
i0.ɵɵelementEnd();
|
|
3125
|
-
i0.ɵɵelementStart(
|
|
3126
|
-
i0.ɵɵelement(
|
|
3127
|
-
i0.ɵɵpipe(
|
|
3128
|
-
i0.ɵɵtemplate(
|
|
3149
|
+
i0.ɵɵelementStart(53, "mat-form-field", 36);
|
|
3150
|
+
i0.ɵɵelement(54, "textarea", 38);
|
|
3151
|
+
i0.ɵɵpipe(55, "translate");
|
|
3152
|
+
i0.ɵɵtemplate(56, MenuComponent_mat_error_56_Template, 3, 3, "mat-error", 16);
|
|
3129
3153
|
i0.ɵɵelementEnd();
|
|
3130
|
-
i0.ɵɵelementStart(
|
|
3131
|
-
i0.ɵɵlistener("click", function
|
|
3132
|
-
i0.ɵɵelementStart(
|
|
3133
|
-
i0.ɵɵpipe(
|
|
3134
|
-
i0.ɵɵelementStart(
|
|
3135
|
-
i0.ɵɵlistener("click", function
|
|
3136
|
-
i0.ɵɵtext(
|
|
3137
|
-
i0.ɵɵpipe(
|
|
3154
|
+
i0.ɵɵelementStart(57, "mat-form-field", 39);
|
|
3155
|
+
i0.ɵɵlistener("click", function MenuComponent_Template_mat_form_field_click_57_listener($event) { return $event.stopPropagation(); });
|
|
3156
|
+
i0.ɵɵelementStart(58, "mat-select", 40);
|
|
3157
|
+
i0.ɵɵpipe(59, "translate");
|
|
3158
|
+
i0.ɵɵelementStart(60, "mat-option", 41, 42);
|
|
3159
|
+
i0.ɵɵlistener("click", function MenuComponent_Template_mat_option_click_60_listener() { return ctx.toggleAllRolesSelected(); });
|
|
3160
|
+
i0.ɵɵtext(62);
|
|
3161
|
+
i0.ɵɵpipe(63, "translate");
|
|
3138
3162
|
i0.ɵɵelementEnd();
|
|
3139
|
-
i0.ɵɵtemplate(
|
|
3163
|
+
i0.ɵɵtemplate(64, MenuComponent_mat_option_64_Template, 3, 2, "mat-option", 43);
|
|
3140
3164
|
i0.ɵɵelementEnd();
|
|
3141
|
-
i0.ɵɵtemplate(
|
|
3165
|
+
i0.ɵɵtemplate(65, MenuComponent_mat_error_65_Template, 3, 3, "mat-error", 16);
|
|
3142
3166
|
i0.ɵɵelementEnd();
|
|
3143
|
-
i0.ɵɵelementStart(
|
|
3144
|
-
i0.ɵɵelementStart(
|
|
3145
|
-
i0.ɵɵpipe(
|
|
3146
|
-
i0.ɵɵelementStart(
|
|
3147
|
-
i0.ɵɵlistener("click", function
|
|
3148
|
-
i0.ɵɵtext(
|
|
3149
|
-
i0.ɵɵpipe(
|
|
3167
|
+
i0.ɵɵelementStart(66, "mat-form-field", 36);
|
|
3168
|
+
i0.ɵɵelementStart(67, "mat-select", 44);
|
|
3169
|
+
i0.ɵɵpipe(68, "translate");
|
|
3170
|
+
i0.ɵɵelementStart(69, "mat-option", 41, 45);
|
|
3171
|
+
i0.ɵɵlistener("click", function MenuComponent_Template_mat_option_click_69_listener() { return ctx.toggleEditAllRolesSelected(); });
|
|
3172
|
+
i0.ɵɵtext(71);
|
|
3173
|
+
i0.ɵɵpipe(72, "translate");
|
|
3150
3174
|
i0.ɵɵelementEnd();
|
|
3151
|
-
i0.ɵɵtemplate(
|
|
3175
|
+
i0.ɵɵtemplate(73, MenuComponent_mat_option_73_Template, 3, 2, "mat-option", 43);
|
|
3152
3176
|
i0.ɵɵelementEnd();
|
|
3153
3177
|
i0.ɵɵelementEnd();
|
|
3154
|
-
i0.ɵɵelementStart(
|
|
3155
|
-
i0.ɵɵelementStart(
|
|
3156
|
-
i0.ɵɵpipe(
|
|
3157
|
-
i0.ɵɵelementStart(
|
|
3158
|
-
i0.ɵɵlistener("click", function
|
|
3159
|
-
i0.ɵɵtext(
|
|
3160
|
-
i0.ɵɵpipe(
|
|
3178
|
+
i0.ɵɵelementStart(74, "mat-form-field", 36);
|
|
3179
|
+
i0.ɵɵelementStart(75, "mat-select", 46);
|
|
3180
|
+
i0.ɵɵpipe(76, "translate");
|
|
3181
|
+
i0.ɵɵelementStart(77, "mat-option", 41, 47);
|
|
3182
|
+
i0.ɵɵlistener("click", function MenuComponent_Template_mat_option_click_77_listener() { return ctx.toggleDeleteAllRolesSelected(); });
|
|
3183
|
+
i0.ɵɵtext(79);
|
|
3184
|
+
i0.ɵɵpipe(80, "translate");
|
|
3161
3185
|
i0.ɵɵelementEnd();
|
|
3162
|
-
i0.ɵɵtemplate(
|
|
3186
|
+
i0.ɵɵtemplate(81, MenuComponent_mat_option_81_Template, 3, 2, "mat-option", 43);
|
|
3163
3187
|
i0.ɵɵelementEnd();
|
|
3164
3188
|
i0.ɵɵelementEnd();
|
|
3165
3189
|
i0.ɵɵelementEnd();
|
|
3166
|
-
i0.ɵɵelementStart(
|
|
3167
|
-
i0.ɵɵelementStart(
|
|
3168
|
-
i0.ɵɵlistener("click", function
|
|
3169
|
-
i0.ɵɵtemplate(
|
|
3170
|
-
i0.ɵɵelement(
|
|
3171
|
-
i0.ɵɵtext(
|
|
3172
|
-
i0.ɵɵpipe(
|
|
3190
|
+
i0.ɵɵelementStart(82, "div", 32);
|
|
3191
|
+
i0.ɵɵelementStart(83, "button", 48);
|
|
3192
|
+
i0.ɵɵlistener("click", function MenuComponent_Template_button_click_83_listener() { return ctx.upsertWorkspace(); });
|
|
3193
|
+
i0.ɵɵtemplate(84, MenuComponent_mat_progress_bar_84_Template, 1, 0, "mat-progress-bar", 22);
|
|
3194
|
+
i0.ɵɵelement(85, "fa-icon", 49);
|
|
3195
|
+
i0.ɵɵtext(86);
|
|
3196
|
+
i0.ɵɵpipe(87, "translate");
|
|
3173
3197
|
i0.ɵɵelementEnd();
|
|
3174
|
-
i0.ɵɵelementStart(
|
|
3175
|
-
i0.ɵɵlistener("click", function
|
|
3176
|
-
i0.ɵɵelement(
|
|
3177
|
-
i0.ɵɵtext(
|
|
3178
|
-
i0.ɵɵpipe(
|
|
3198
|
+
i0.ɵɵelementStart(88, "button", 50);
|
|
3199
|
+
i0.ɵɵlistener("click", function MenuComponent_Template_button_click_88_listener() { return ctx.closeAddWorkspaceDialog(); });
|
|
3200
|
+
i0.ɵɵelement(89, "fa-icon", 51);
|
|
3201
|
+
i0.ɵɵtext(90);
|
|
3202
|
+
i0.ɵɵpipe(91, "translate");
|
|
3179
3203
|
i0.ɵɵelementEnd();
|
|
3180
3204
|
i0.ɵɵelementEnd();
|
|
3181
3205
|
i0.ɵɵelementEnd();
|
|
3182
3206
|
i0.ɵɵelementEnd();
|
|
3183
3207
|
i0.ɵɵelementEnd();
|
|
3184
3208
|
i0.ɵɵelementEnd();
|
|
3185
|
-
i0.ɵɵelementStart(
|
|
3186
|
-
i0.ɵɵelementStart(
|
|
3187
|
-
i0.ɵɵelementStart(
|
|
3188
|
-
i0.ɵɵelementStart(
|
|
3189
|
-
i0.ɵɵelementStart(
|
|
3190
|
-
i0.ɵɵtext(
|
|
3209
|
+
i0.ɵɵelementStart(92, "sat-popover", 52, 53);
|
|
3210
|
+
i0.ɵɵelementStart(94, "div", 54);
|
|
3211
|
+
i0.ɵɵelementStart(95, "table");
|
|
3212
|
+
i0.ɵɵelementStart(96, "tr");
|
|
3213
|
+
i0.ɵɵelementStart(97, "td");
|
|
3214
|
+
i0.ɵɵtext(98, "Ctrl + Q: ");
|
|
3191
3215
|
i0.ɵɵelementEnd();
|
|
3192
|
-
i0.ɵɵelementStart(
|
|
3193
|
-
i0.ɵɵtext(
|
|
3216
|
+
i0.ɵɵelementStart(99, "td");
|
|
3217
|
+
i0.ɵɵtext(100, "\u00A0");
|
|
3194
3218
|
i0.ɵɵelementEnd();
|
|
3195
|
-
i0.ɵɵelementStart(
|
|
3196
|
-
i0.ɵɵtext(
|
|
3197
|
-
i0.ɵɵpipe(
|
|
3219
|
+
i0.ɵɵelementStart(101, "td");
|
|
3220
|
+
i0.ɵɵtext(102);
|
|
3221
|
+
i0.ɵɵpipe(103, "translate");
|
|
3198
3222
|
i0.ɵɵelementEnd();
|
|
3199
3223
|
i0.ɵɵelementEnd();
|
|
3200
|
-
i0.ɵɵelementStart(
|
|
3201
|
-
i0.ɵɵelementStart(
|
|
3202
|
-
i0.ɵɵtext(
|
|
3224
|
+
i0.ɵɵelementStart(104, "tr");
|
|
3225
|
+
i0.ɵɵelementStart(105, "td");
|
|
3226
|
+
i0.ɵɵtext(106, "Ctrl + B: ");
|
|
3203
3227
|
i0.ɵɵelementEnd();
|
|
3204
|
-
i0.ɵɵelementStart(
|
|
3205
|
-
i0.ɵɵtext(
|
|
3228
|
+
i0.ɵɵelementStart(107, "td");
|
|
3229
|
+
i0.ɵɵtext(108, "\u00A0");
|
|
3206
3230
|
i0.ɵɵelementEnd();
|
|
3207
|
-
i0.ɵɵelementStart(
|
|
3208
|
-
i0.ɵɵtext(
|
|
3209
|
-
i0.ɵɵpipe(
|
|
3231
|
+
i0.ɵɵelementStart(109, "td");
|
|
3232
|
+
i0.ɵɵtext(110);
|
|
3233
|
+
i0.ɵɵpipe(111, "translate");
|
|
3210
3234
|
i0.ɵɵelementEnd();
|
|
3211
3235
|
i0.ɵɵelementEnd();
|
|
3212
|
-
i0.ɵɵelementStart(
|
|
3213
|
-
i0.ɵɵelementStart(
|
|
3214
|
-
i0.ɵɵtext(
|
|
3236
|
+
i0.ɵɵelementStart(112, "tr");
|
|
3237
|
+
i0.ɵɵelementStart(113, "td");
|
|
3238
|
+
i0.ɵɵtext(114, "Ctrl + Y: ");
|
|
3215
3239
|
i0.ɵɵelementEnd();
|
|
3216
|
-
i0.ɵɵelementStart(
|
|
3217
|
-
i0.ɵɵtext(
|
|
3240
|
+
i0.ɵɵelementStart(115, "td");
|
|
3241
|
+
i0.ɵɵtext(116, "\u00A0");
|
|
3218
3242
|
i0.ɵɵelementEnd();
|
|
3219
|
-
i0.ɵɵelementStart(
|
|
3220
|
-
i0.ɵɵtext(
|
|
3221
|
-
i0.ɵɵpipe(
|
|
3243
|
+
i0.ɵɵelementStart(117, "td");
|
|
3244
|
+
i0.ɵɵtext(118);
|
|
3245
|
+
i0.ɵɵpipe(119, "translate");
|
|
3222
3246
|
i0.ɵɵelementEnd();
|
|
3223
3247
|
i0.ɵɵelementEnd();
|
|
3224
|
-
i0.ɵɵelementStart(
|
|
3225
|
-
i0.ɵɵelementStart(
|
|
3226
|
-
i0.ɵɵtext(
|
|
3248
|
+
i0.ɵɵelementStart(120, "tr");
|
|
3249
|
+
i0.ɵɵelementStart(121, "td");
|
|
3250
|
+
i0.ɵɵtext(122, "Ctrl + M: ");
|
|
3227
3251
|
i0.ɵɵelementEnd();
|
|
3228
|
-
i0.ɵɵelementStart(
|
|
3229
|
-
i0.ɵɵtext(
|
|
3252
|
+
i0.ɵɵelementStart(123, "td");
|
|
3253
|
+
i0.ɵɵtext(124, "\u00A0");
|
|
3230
3254
|
i0.ɵɵelementEnd();
|
|
3231
|
-
i0.ɵɵelementStart(
|
|
3232
|
-
i0.ɵɵtext(
|
|
3233
|
-
i0.ɵɵpipe(
|
|
3255
|
+
i0.ɵɵelementStart(125, "td");
|
|
3256
|
+
i0.ɵɵtext(126);
|
|
3257
|
+
i0.ɵɵpipe(127, "translate");
|
|
3234
3258
|
i0.ɵɵelementEnd();
|
|
3235
3259
|
i0.ɵɵelementEnd();
|
|
3236
3260
|
i0.ɵɵelementEnd();
|
|
3237
3261
|
i0.ɵɵelementEnd();
|
|
3238
3262
|
i0.ɵɵelementEnd();
|
|
3239
|
-
i0.ɵɵtemplate(
|
|
3263
|
+
i0.ɵɵtemplate(128, MenuComponent_mat_spinner_128_Template, 1, 1, "mat-spinner", 55);
|
|
3240
3264
|
i0.ɵɵelementEnd();
|
|
3241
3265
|
i0.ɵɵelementEnd();
|
|
3242
3266
|
} if (rf & 2) {
|
|
3243
3267
|
const _r0 = i0.ɵɵreference(8);
|
|
3244
|
-
const
|
|
3268
|
+
const _r31 = i0.ɵɵreference(93);
|
|
3245
3269
|
i0.ɵɵproperty("matMenuTriggerFor", _r0);
|
|
3246
3270
|
i0.ɵɵadvance(4);
|
|
3247
3271
|
i0.ɵɵpropertyInterpolate("src", ctx.companyMiniLogo, i0.ɵɵsanitizeUrl);
|
|
@@ -3257,19 +3281,21 @@ MenuComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MenuComponent
|
|
|
3257
3281
|
i0.ɵɵproperty("ngIf", ctx.searchById);
|
|
3258
3282
|
i0.ɵɵadvance(1);
|
|
3259
3283
|
i0.ɵɵclassProp("hide-placeholder", ctx.searchByText || ctx.searchById);
|
|
3260
|
-
i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(16,
|
|
3284
|
+
i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(16, 59, "APP.STARTHEREORCLICKCONTROL+Q"));
|
|
3261
3285
|
i0.ɵɵproperty("ngModel", ctx.searchText);
|
|
3262
3286
|
i0.ɵɵadvance(5);
|
|
3263
3287
|
i0.ɵɵproperty("ngIf", !ctx.searchText);
|
|
3264
3288
|
i0.ɵɵadvance(1);
|
|
3265
3289
|
i0.ɵɵproperty("ngIf", ctx.searchText);
|
|
3266
3290
|
i0.ɵɵadvance(1);
|
|
3267
|
-
i0.ɵɵproperty("satPopoverAnchorFor",
|
|
3291
|
+
i0.ɵɵproperty("satPopoverAnchorFor", _r31);
|
|
3268
3292
|
i0.ɵɵadvance(5);
|
|
3269
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(
|
|
3293
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(91, _c11, ctx.display, !ctx.display));
|
|
3270
3294
|
i0.ɵɵadvance(1);
|
|
3271
3295
|
i0.ɵɵproperty("ngIf", ctx.loadingSearchMenuData || ctx.recentSearchesfetchInProgress || ctx.widgetsfetchInProgress);
|
|
3272
3296
|
i0.ɵɵadvance(2);
|
|
3297
|
+
i0.ɵɵproperty("ngIf", !(ctx.searchById || ctx.searchByText));
|
|
3298
|
+
i0.ɵɵadvance(1);
|
|
3273
3299
|
i0.ɵɵproperty("ngIf", ctx.items && ctx.items.length > 0 && !(ctx.searchById || ctx.searchByText));
|
|
3274
3300
|
i0.ɵɵadvance(1);
|
|
3275
3301
|
i0.ɵɵproperty("ngIf", !(ctx.searchById || ctx.searchByText));
|
|
@@ -3288,46 +3314,46 @@ MenuComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MenuComponent
|
|
|
3288
3314
|
i0.ɵɵadvance(1);
|
|
3289
3315
|
i0.ɵɵproperty("interactiveClose", false);
|
|
3290
3316
|
i0.ɵɵadvance(5);
|
|
3291
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(
|
|
3317
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(44, 61, "APP.ADDDASHBOARDTITLE"), " ");
|
|
3292
3318
|
i0.ɵɵadvance(3);
|
|
3293
3319
|
i0.ɵɵproperty("formGroup", ctx.workspaceForm);
|
|
3294
3320
|
i0.ɵɵadvance(3);
|
|
3295
|
-
i0.ɵɵpropertyInterpolate1("placeholder", "", i0.ɵɵpipeBind1(
|
|
3321
|
+
i0.ɵɵpropertyInterpolate1("placeholder", "", i0.ɵɵpipeBind1(50, 63, "HRMANAGAMENT.NAME"), "*");
|
|
3296
3322
|
i0.ɵɵadvance(2);
|
|
3297
3323
|
i0.ɵɵproperty("ngIf", ctx.workspaceForm.get("workspaceName").hasError("required") && ctx.workspaceForm.get("workspaceName").touched);
|
|
3298
3324
|
i0.ɵɵadvance(1);
|
|
3299
3325
|
i0.ɵɵproperty("ngIf", ctx.workspaceForm.get("workspaceName").hasError("maxlength"));
|
|
3300
3326
|
i0.ɵɵadvance(2);
|
|
3301
|
-
i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(
|
|
3327
|
+
i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(55, 65, "COMPANYSETTINGS.DESCRIPTION"));
|
|
3302
3328
|
i0.ɵɵadvance(2);
|
|
3303
3329
|
i0.ɵɵproperty("ngIf", ctx.workspaceForm.get("description").hasError("maxlength") && ctx.workspaceForm.get("description").touched);
|
|
3304
3330
|
i0.ɵɵadvance(2);
|
|
3305
|
-
i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(
|
|
3331
|
+
i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(59, 67, "WIDGETS.VIEWROLES"));
|
|
3306
3332
|
i0.ɵɵproperty("compareWith", ctx.compareSelectedRolesFn);
|
|
3307
3333
|
i0.ɵɵadvance(2);
|
|
3308
3334
|
i0.ɵɵproperty("value", 0);
|
|
3309
3335
|
i0.ɵɵadvance(2);
|
|
3310
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(
|
|
3336
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(63, 69, "PERMISSIONMANAGEMENT.SELECTALL"), "");
|
|
3311
3337
|
i0.ɵɵadvance(2);
|
|
3312
3338
|
i0.ɵɵproperty("ngForOf", ctx.rolesDropDown);
|
|
3313
3339
|
i0.ɵɵadvance(1);
|
|
3314
3340
|
i0.ɵɵproperty("ngIf", ctx.workspaceForm.get("selectedRoles").hasError("required") && ctx.workspaceForm.get("selectedRoles").touched);
|
|
3315
3341
|
i0.ɵɵadvance(2);
|
|
3316
|
-
i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(
|
|
3342
|
+
i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(68, 71, "WIDGETS.EDITROLES"));
|
|
3317
3343
|
i0.ɵɵproperty("compareWith", ctx.compareEditSelectedRolesFn);
|
|
3318
3344
|
i0.ɵɵadvance(2);
|
|
3319
3345
|
i0.ɵɵproperty("value", 0);
|
|
3320
3346
|
i0.ɵɵadvance(2);
|
|
3321
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(
|
|
3347
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(72, 73, "PERMISSIONMANAGEMENT.SELECTALL"), "");
|
|
3322
3348
|
i0.ɵɵadvance(2);
|
|
3323
3349
|
i0.ɵɵproperty("ngForOf", ctx.rolesDropDown);
|
|
3324
3350
|
i0.ɵɵadvance(2);
|
|
3325
|
-
i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(
|
|
3351
|
+
i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(76, 75, "WIDGETS.DELETEROLES"));
|
|
3326
3352
|
i0.ɵɵproperty("compareWith", ctx.compareDeleteSelectedRolesFn);
|
|
3327
3353
|
i0.ɵɵadvance(2);
|
|
3328
3354
|
i0.ɵɵproperty("value", 0);
|
|
3329
3355
|
i0.ɵɵadvance(2);
|
|
3330
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(
|
|
3356
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(80, 77, "PERMISSIONMANAGEMENT.SELECTALL"), "");
|
|
3331
3357
|
i0.ɵɵadvance(2);
|
|
3332
3358
|
i0.ɵɵproperty("ngForOf", ctx.rolesDropDown);
|
|
3333
3359
|
i0.ɵɵadvance(2);
|
|
@@ -3335,19 +3361,19 @@ MenuComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MenuComponent
|
|
|
3335
3361
|
i0.ɵɵadvance(1);
|
|
3336
3362
|
i0.ɵɵproperty("ngIf", ctx.dashboardUpdateInProgress);
|
|
3337
3363
|
i0.ɵɵadvance(2);
|
|
3338
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(
|
|
3364
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(87, 79, "SAVE"), " ");
|
|
3339
3365
|
i0.ɵɵadvance(4);
|
|
3340
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(
|
|
3366
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(91, 81, "CANCEL"), " ");
|
|
3341
3367
|
i0.ɵɵadvance(2);
|
|
3342
3368
|
i0.ɵɵproperty("interactiveClose", true);
|
|
3343
3369
|
i0.ɵɵadvance(10);
|
|
3344
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(
|
|
3370
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(103, 83, "SHELL.TOOPENSEARCHMENU"), "");
|
|
3345
3371
|
i0.ɵɵadvance(8);
|
|
3346
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(
|
|
3372
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(111, 85, "SHELL.TOOPENGOALSANDUSERS"), "");
|
|
3347
3373
|
i0.ɵɵadvance(8);
|
|
3348
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(
|
|
3374
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(119, 87, "SHELL.TOSEARCHBYID"), "");
|
|
3349
3375
|
i0.ɵɵadvance(8);
|
|
3350
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(
|
|
3376
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(127, 89, "SHELL.TOCLOSEMENU"), "");
|
|
3351
3377
|
i0.ɵɵadvance(2);
|
|
3352
3378
|
i0.ɵɵproperty("ngIf", ctx.searchByTextLoading && ctx.display);
|
|
3353
3379
|
} }, directives: [i14.MatButton, i15.DefaultShowHideDirective, i16.MatMenuTrigger, i17.MatIcon, i18.DefaultFlexDirective, i16.MatMenu, i9.NgForOf, i9.NgIf, i19.DefaultValueAccessor, i19.NgControlStatus, i19.NgModel, i20.SatPopoverAnchor, i9.NgClass, i15.DefaultClassDirective, i20.SatPopover, i21.MatCard, i21.MatCardTitle, i21.MatCardContent, i19.ɵNgNoValidate, i19.NgControlStatusGroup, i19.FormGroupDirective, i22.MatFormField, i23.MatInput, i19.FormControlName, i24.MatSelect, i19.RequiredValidator, i25.MatOption, i26.FaIconComponent, i16.MatMenuItem, i3.RouterLinkActive, i3.RouterLink, i27.MatTooltip, i28.MatProgressBar, i18.DefaultLayoutDirective, i29.AvatarComponent, i18.DefaultLayoutAlignDirective, i22.MatError, i30.MatSpinner], pipes: [i5.TranslatePipe, i31.SoftLabelPipe, i32.HighLightTextPipe, i33.RemoveSpecialCharactersPipe, i34.FetchSizedAndCachedImagePipe, i9.SlicePipe, i35.TimeagoPipe], encapsulation: 2 });
|
|
@@ -3410,4 +3436,4 @@ MenuComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MenuComponent
|
|
|
3410
3436
|
type: HostListener,
|
|
3411
3437
|
args: ['document:keydown.control.y', []]
|
|
3412
3438
|
}] }); })();
|
|
3413
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL21lbnUvbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL21lbnUvbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXNCLFlBQVksRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFLLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFtQixZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRixPQUFPLEVBQVMsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRzVDLE9BQU8sS0FBSyxvQkFBb0IsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFJakYsT0FBTyxFQUEwQixhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQU14RSxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUdqQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENB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QUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDO1NBQ2hHO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUM7WUFDM0csSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDckMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQztZQUN2RyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNyRCxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQztTQUNoRztRQUNELG1CQUFtQjthQUNkLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLHFCQUFxQixHQUFHLENBQUMsRUFB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O1lBQ2QsUUFBUTtrQkFBakIsTUFBTTtZQUNHLGdCQUFnQjtrQkFBekIsTUFBTTtZQXdFSCxTQUFTO2tCQURaLEtBQUs7bUJBQUMsUUFBUTtZQThLZixZQUFZO2tCQURYLFlBQVk7bUJBQUMsNEJBQTRCLEVBQUUsRUFBRTtZQVc5QyxhQUFhO2tCQURaLFlBQVk7bUJBQUMsNEJBQTRCLEVBQUUsRUFBRTtZQVc5QyxrQkFBa0I7a0JBRGpCLFlBQVk7bUJBQUMsNEJBQTRCLEVBQUUsRUFBRTtZQVU5QyxnQkFBZ0I7a0JBRGYsWUFBWTttQkFBQyw0QkFBNEIsRUFBRSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGRyZW4sIFZpZXdDaGlsZCwgVGVtcGxhdGVSZWYsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgRWxlbWVudFJlZiwgT25Jbml0LCBIb3N0TGlzdGVuZXIsIENoYW5nZURldGVjdG9yUmVmLCBJbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IFN0b3JlLCBzZWxlY3QgfSBmcm9tIFwiQG5ncngvc3RvcmVcIjtcbi8vIGltcG9ydCB7IFN0YXRlIH0gZnJvbSBcImFwcC9zaGFyZWQvc3RvcmUvcmVkdWNlcnMvbWVudWl0ZW1zLnJlZHVjZXJzXCI7XG5pbXBvcnQgeyBTdGF0ZSB9IGZyb20gXCIuLi8uLi9zdG9yZS9yZWR1Y2Vycy9pbmRleFwiO1xuaW1wb3J0ICogYXMgc2hhcmVkTW9kdWxlUmVkdWNlcnMgZnJvbSBcIi4vLi4vLi4vc3RvcmUvcmVkdWNlcnMvaW5kZXhcIjtcbmltcG9ydCB7IHRhcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgR2V0QWxsTWVudUl0ZW1zVHJpZ2dlcmVkIH0gZnJvbSBcIi4uLy4uL3N0b3JlL2FjdGlvbnMvbWVudWl0ZW1zLmFjdGlvbnNcIjtcbmltcG9ydCB7IE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL21lbnVcIjtcbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2lucHV0XCI7XG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSBcIm5neC1jb29raWUtc2VydmljZVwiO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciwgTmF2aWdhdGlvbkVuZCB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xuaW1wb3J0IHsgTWF0T3B0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhclwiO1xuaW1wb3J0IHsgUmVjZW50U2VhcmNoU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9yZWNlbnRTZWFyY2guc2VydmljZVwiO1xuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uQWN0aW9uVHlwZXMsIEdldENvbXBhbnlUaGVtZVRyaWdnZXJlZCB9IGZyb20gXCIuLi8uLi9zdG9yZS9hY3Rpb25zL2F1dGhlbnRpY2F0aW9uLmFjdGlvbnNcIjtcbmltcG9ydCB7IG9mVHlwZSwgQWN0aW9ucyB9IGZyb20gXCJAbmdyeC9lZmZlY3RzXCI7XG5pbXBvcnQgeyBTZWFyY2hUYXNrVHlwZSB9IGZyb20gXCIuL3NlYXJjaFRhc2suZW51bVwiO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNhdFBvcG92ZXIgfSBmcm9tICdAbmNzdGF0ZS9zYXQtcG9wb3Zlcic7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ3VuZGVyc2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbW1vbi11c2VkLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlUHJvcGVydGllcyB9IGZyb20gJy4uLy4uLy4uL2dsb2JhbGRlcGVuZGVuY2llcy9jb25zdGFudHMvbG9jYWxzdG9yYWdlLXByb3BlcnRpZXMnO1xuaW1wb3J0IHsgRW1wbG95ZWVMaXN0TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZW1wbG95ZWUnO1xuaW1wb3J0IHsgRW1wbG95ZWVMaXN0SW5wdXQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZW1wbG95ZWUtTGlzdCc7XG5pbXBvcnQgeyBDdXN0b21BcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFsZGVwZW5kZW5jaWVzL2NvbXBvbmVudHMvY29tcG9uZW50YmFzZSc7XG5pbXBvcnQgeyBTb2Z0TGFiZWxDb25maWd1cmF0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvc29mdGxhYmVscy1tb2RlbCc7XG5pbXBvcnQgeyBJTWVudUl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvSU1lbnVJdGVtJztcbmltcG9ydCB7IFVzZXJTdG9yeSB9IGZyb20gJy4uLy4uL21vZGVscy91c2VyU3RvcnknO1xuaW1wb3J0IHsgV2lkZ2V0TGlzdCB9IGZyb20gJy4uLy4uL21vZGVscy93aWRnZXRsaXN0JztcbmltcG9ydCB7IERyYWdlZFdpZGdldCB9IGZyb20gJy4uLy4uL21vZGVscy9kcmFnZWRXaWRnZXQnO1xuaW1wb3J0IHsgV29ya3NwYWNlTGlzdCB9IGZyb20gJy4uLy4uL21vZGVscy93b3Jrc3BhY2VMaXN0JztcbmltcG9ydCB7IFJlY2VudFNlYXJjaE1vZGVsLCBTZWFyY2hUYXNrVHlwZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1JlY2VudFNlYXJjaE1vZGVsJztcbmltcG9ydCB7IFRoZW1lTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvdGhlbWVzLm1vZGVsJztcbmltcG9ydCB7IFdJTkRPVyB9IGZyb20gJy4uLy4uLy4uL2dsb2JhbGRlcGVuZGVuY2llcy9oZWxwZXJzL3dpbmRvdy5oZWxwZXInO1xuaW1wb3J0IHsgVGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGhlbWUuc2VydmljZSc7XG5pbXBvcnQgeyBHb29nbGVBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZ29vZ2xlLWFuYWx5dGljcy5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2plY3RTZWFyY2hDcml0ZXJpYUlucHV0TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvUHJvamVjdFNlYXJjaENyaXRlcmlhSW5wdXRNb2RlbCc7XG5pbXBvcnQgeyBNZW51Q2F0ZWdvcmllcyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9tZW51LWNhdGVnb3JpZXMnO1xuaW1wb3J0IHsgRmVhdHVyZUlkcyB9IGZyb20gJy4uLy4uLy4uL2dsb2JhbGRlcGVuZGVuY2llcy9jb25zdGFudHMvZmVhdHVyZS1pZHMnO1xuaW1wb3J0ICcuLi8uLi8uLi9nbG9iYWxkZXBlbmRlbmNpZXMvaGVscGVycy9mb250YXdlc29tZS1pY29ucyc7XG5pbXBvcnQgeyBSZWNlbnRTZWFyY2hUeXBlIH0gZnJvbSAnLi4vLi4vZW51bS9yZWNlbnRTZWFyY2hUeXBlLmVudW0nO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gXCJuZ3gtdG9hc3RyXCI7XG5pbXBvcnQgeyB0cmlnZ2VyLCBzdHlsZSwgYW5pbWF0ZSwgdHJhbnNpdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvYXV0aGVudGljYXRpb24uc2VydmljZVwiO1xuXG4vKiogQGR5bmFtaWMgKi9cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImFwcC1tZW51XCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vbWVudS5jb21wb25lbnQuaHRtbFwiXG59KVxuXG5leHBvcnQgY2xhc3MgTWVudUNvbXBvbmVudCBleHRlbmRzIEN1c3RvbUFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBbeDogc3RyaW5nXTogYW55O1xuXG4gIEBWaWV3Q2hpbGRyZW4oXCJvcGVuTWVudVBvcFVwXCIpIG9wZW5NZW51UG9wT3ZlcjtcbiAgQFZpZXdDaGlsZChcIm1lbnVUcmlnZ2VyXCIpIG1lbnVUcmlnZ2VyOiBNYXRNZW51VHJpZ2dlcjtcbiAgQFZpZXdDaGlsZChcImVsZW1lbnRcIikgZWxlbWVudDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZChcIndvcmtzcGFjZUVsZW1lbnRcIikgd29ya3NwYWNlRWxlbWVudDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZChcIm1lbnVFbGVtZW50XCIpIG1lbnVFbGVtZW50OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKFwiYWRkV29ya3NwYWNlXCIpIGFkZFdvcmtTcGFjZVBvcE92ZXI6IFNhdFBvcG92ZXI7XG4gIEBWaWV3Q2hpbGQoXCJhbGxTZWxlY3RlZFwiKSBwcml2YXRlIGFsbFNlbGVjdGVkOiBNYXRPcHRpb247XG4gIEBWaWV3Q2hpbGQoXCJhbGxFZGl0U2VsZWN0ZWRcIikgcHJpdmF0ZSBhbGxFZGl0U2VsZWN0ZWQ6IE1hdE9wdGlvbjtcbiAgQFZpZXdDaGlsZChcImFsbERlbGV0ZVNlbGVjdGVkXCIpIHByaXZhdGUgYWxsRGVsZXRlU2VsZWN0ZWQ6IE1hdE9wdGlvbjtcbiAgQFZpZXdDaGlsZCgnaW5mb1BvcE92ZXInKSBpbmZvUG9wT3ZlcjogVGVtcGxhdGVSZWY8YW55PlxuICBAT3V0cHV0KCkgaXNPcGVuZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9wZW5OZXdEYXNoYm9hcmQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgZTogRWxlbWVudDtcbiAgc2VhcmNoVGV4dDogc3RyaW5nO1xuICBmb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuICBzb2Z0TGFiZWxzOiBTb2Z0TGFiZWxDb25maWd1cmF0aW9uTW9kZWxbXTtcbiAgcHVibGljIG1lbnVJdGVtcyQ6IE9ic2VydmFibGU8SU1lbnVJdGVtW10+O1xuICB1c2VyU3Rvcmllc0xpc3QkOiBPYnNlcnZhYmxlPFVzZXJTdG9yeVtdPjtcbiAgbWVudUl0ZW06IElNZW51SXRlbVtdO1xuICBpdGVtcyA9IFtdO1xuICBtZW51SXRlbU5hbWU6IHN0cmluZyA9IFwiXCI7XG4gIHdpZGdldHM6IFdpZGdldExpc3RbXTtcbiAgb3JpZ2luYWxXaWRnZXRzOiBXaWRnZXRMaXN0W107XG4gIHNlbGVjdGVkTGlzdDogRHJhZ2VkV2lkZ2V0W107XG4gIHdpZGdldDogV2lkZ2V0TGlzdDtcbiAgc2VsZWN0ZWRBcHBzOiBhbnk7XG4gIHVybDogc3RyaW5nO1xuICBzZWxlY3RlZERhc2hib2FyZDogYW55O1xuICBkZWZhdWx0RGFzaGJvYXJkOiBhbnk7XG4gIHN1YkxldmVsczogc3RyaW5nW10gPSBbXTtcbiAgc3RhdGVMdmwxOiBzdHJpbmc7XG4gIGxldmVsM0xpbmsxOiBzdHJpbmc7XG4gIGxldmVsM0xpbmsyOiBzdHJpbmc7XG4gIHN1YkxldmVsc0ZvckxldmVsMjogc3RyaW5nO1xuICBjb21wYW55TWFpbkxvZ286IHN0cmluZztcbiAgY29tcGFueU1pbmlMb2dvOiBzdHJpbmc7XG4gIHJvbGVzRHJvcERvd246IGFueVtdO1xuICB3b3Jrc3BhY2VzTGlzdCQ6IE9ic2VydmFibGU8V29ya3NwYWNlTGlzdFtdPjtcbiAgd29ya3NwYWNlczogV29ya3NwYWNlTGlzdFtdO1xuICB3b3Jrc3BhY2VzRm9yTG9vcDogYW55O1xuICBkaXNwbGF5OiBib29sZWFuO1xuICBhZG1pblRvb2xzOiBhbnkgPSBbXTtcbiAgdG9vbHM6IGFueTtcbiAgc2VsZWN0ZWRSb3dJbmRleDogYW55O1xuICBpdGVtQ2xpY2tlZDogYW55O1xuICB0OiBhbnk7XG4gIHdkOiBhbnk7XG4gIHdzOiBhbnk7XG4gIHJzOiBhbnk7XG4gIGFsbHNlYXJjaGVzOiBSZWNlbnRTZWFyY2hNb2RlbFtdID0gW107XG4gIHJlY2VudFNlYXJjaGVzOiBSZWNlbnRTZWFyY2hNb2RlbFtdID0gW107XG4gIHByb2plY3RSb2xlVGV4dDogc3RyaW5nID0gXCJQcm9qZWN0IHJvbGUgY29uZmlndXJhdGlvblwiO1xuICBjYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUFwcGxpY2F0aW9uczogQm9vbGVhbjtcbiAgY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVGb3JtOiBCb29sZWFuO1xuICBjYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Rm9ybXM6IEJvb2xlYW47XG4gIGNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZVByb2plY3RSb2xlUGVybWlzc2lvbnM6IEJvb2xlYW47XG4gIGNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdSb2xlczogQm9vbGVhbjtcbiAgY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVBcHBsaWNhdGlvbnMkOiBPYnNlcnZhYmxlPEJvb2xlYW4+O1xuICBjYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUZvcm0kOiBPYnNlcnZhYmxlPEJvb2xlYW4+O1xuICBjYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Rm9ybXMkOiBPYnNlcnZhYmxlPEJvb2xlYW4+XG4gIGNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZVByb2plY3RSb2xlUGVybWlzc2lvbnMkOiBPYnNlcnZhYmxlPEJvb2xlYW4+XG4gIGNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdSb2xlcyQ6IE9ic2VydmFibGU8Qm9vbGVhbj47XG4gIGNvbXBhbnlTZXR0aW5nc01PZGVsJDogT2JzZXJ2YWJsZTxhbnlbXT47XG4gIGRpc2FibGVXb3Jrc3BhY2UgPSBmYWxzZTtcbiAgZGlzYWJsZVdvcmtzcGFjZURlbGV0ZSA9IGZhbHNlO1xuICBkaXNhYmxlV29ya3NwYWNlaGlkZSA9IGZhbHNlO1xuICBmb3JtczogYW55O1xuICBjdXN0YXBwOiBhbnk7XG4gIHByb2plY3RSb2xlQ29uZmlndXJhdGlvbjogYW55O1xuICByb2xlQ29uZmlndXJhdGlvbjogYW55O1xuICB0aGVtZU1vZGVsOiBUaGVtZU1vZGVsO1xuICBlbXBsb3llZUxpc3Q6IGFueVtdID0gW107XG4gIHRoZW1lTW9kZWwkOiBPYnNlcnZhYmxlPFRoZW1lTW9kZWw+O1xuICB0aGVtZUJhc2VDb2xvcjogc3RyaW5nO1xuICBzZWxlY3RlZEVtcGxveWVlOiBzdHJpbmc7XG4gIGxvYWRlZEVtcGxveWVlTGlzdDogRW1wbG95ZWVMaXN0TW9kZWxbXSA9IFtdO1xuICBzZWxlY3RlZEVtcGxveWVlSW5kZXg6IG51bWJlciA9IG51bGw7XG4gIHZpZXdFbXBsb3llZVBlcm1pc3Npb246IGJvb2xlYW47XG4gIGNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlsczogQm9vbGVhbjtcbiAgcHJvamVjdExpc3Q6IGFueSA9IFtdO1xuICBwcm9qZWN0SW5kZXg6IGFueTtcbiAgc2VhcmNoQnlUZXh0TG9hZGluZzogYm9vbGVhbjtcbiAgQElucHV0KFwicmVsb2FkXCIpXG4gIHNldCByZWxvYWRBbGwoZGF0YTogYm9vbGVhbikge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICB0aGlzLmFkbWluVG9vbHMgPSBbXTtcbiAgICAgIHRoaXMudG9vbHMgPSBbXTtcbiAgICAgIHRoaXMubmdPbkluaXQoKTtcbiAgICB9XG4gIH1cbiAgcHVibGljIG5nRGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0KCk7XG4gIHVzZXJTdG9yeUxpc3Q6IGFueSA9IFtdO1xuICB1c2VyU3RvcnlTZWFyY2hMaXN0OiBhbnkgPSBbXTtcbiAgZ29hbFNlYXJjaExpc3Q6IGFueSA9IFtdO1xuICBpc0VuYWJsZUJ1Z0JvYXJkOiBib29sZWFuO1xuICBzZWxlY3RlZFJvbGVJZHM6IHN0cmluZ1tdID0gW107XG4gIGRhc2hib2FyZFVwZGF0ZUluUHJvZ3Jlc3M6IGJvb2xlYW47XG4gIHVzZXJzOiBhbnk7XG4gIGdvYWxJbmRleDogYW55O1xuICB3b3Jrc3BhY2VGb3JtOiBGb3JtR3JvdXA7XG4gIHByb2plY3RTZWFyY2hSZXN1bHRzOiBhbnk7XG4gIGRlbGF5VGltZUlucHV0ID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICBtZW51c2ZldGNoSW5Qcm9ncmVzczogYm9vbGVhbjtcbiAgd29ya3NwYWNlc2ZldGNoSW5Qcm9ncmVzczogYm9vbGVhbjtcbiAgd2lkZ2V0c2ZldGNoSW5Qcm9ncmVzczogYm9vbGVhbjtcbiAgcmVjZW50U2VhcmNoZXNmZXRjaEluUHJvZ3Jlc3M6IGJvb2xlYW47XG4gIHNlYXJjaFRhc2tzOiBTZWFyY2hUYXNrVHlwZU1vZGVsO1xuICBsb2FkaW5nU2VhcmNoTWVudURhdGE6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZGVmYXVsdERhc2hib2FyZElkOiBzdHJpbmc7XG4gIHNlYXJjaEJ5SWQ6IGJvb2xlYW47XG4gIHNlYXJjaEJ5VGV4dDogYm9vbGVhbjtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8U3RhdGU+LFxuICAgIHByaXZhdGUgY29va2llU2VydmljZTogQ29va2llU2VydmljZSxcbiAgICBwdWJsaWMgcm91dGVzOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHB1YmxpYyBhdXRoZW50aWNhdGlvblNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSByc3M6IFJlY2VudFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgcHJpdmF0ZSB0aGVtZVNlcnZpY2U6IFRoZW1lU2VydmljZSxcbiAgICBwcml2YXRlIGFjdGlvblVwZGF0ZXMkOiBBY3Rpb25zLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBJbmplY3QoV0lORE9XKSBwcml2YXRlIHdpbmRvdzogV2luZG93LFxuICAgIHByaXZhdGUgZ29vZ2xlQW5hbHl0aWNzU2VydmljZTogR29vZ2xlQW5hbHl0aWNzU2VydmljZSxcbiAgICBwcml2YXRlIGNvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICAvL3RoaXMub25Gb2N1cygpO1xuXG4gICAgLy8gbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XG4gICAgLy8gdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlNlYXJjaENsaWNrLCBKU09OLnN0cmluZ2lmeShmYWxzZSksIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XG4gICAgdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5kb2VzVXNlckhhdmVQZXJtaXNzaW9uLCB7IGZlYXR1cmVJZDogRmVhdHVyZUlkcy5GZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscyB9KSk7XG4gICAgdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMkLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMgPSByZXN1bHQ7XG4gICAgfSlcbiAgICB0aGlzLmluaXRpYWxpemVXb3Jrc3BhY2VGb3JtKCk7XG4gICAgdGhpcy5yb3V0ZXMuZXZlbnRzLnN1YnNjcmliZSh2YWwgPT4ge1xuICAgICAgaWYgKHRoaXMubG9jYXRpb24ucGF0aCgpICE9IFwiXCIpIHtcbiAgICAgICAgdGhpcy51cmwgPSB0aGlzLmxvY2F0aW9uLnBhdGgoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvLyB0aGlzLndpZGdldFNlcnZpY2Uuc2VsZWN0ZWRXb3Jrc3BhY2Uuc3Vic2NyaWJlKGlkID0+IHtcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWREYXNoYm9hcmQgPSBpZDtcbiAgICAvLyB9KTtcbiAgICAvLyB0aGlzLmFjdGlvblVwZGF0ZXMkXG4gICAgLy8gICAucGlwZShcbiAgICAvLyAgICAgdGFrZVVudGlsKHRoaXMubmdEZXN0cm95ZWQkKSxcbiAgICAvLyAgICAgb2ZUeXBlKEF1dGhlbnRpY2F0aW9uQWN0aW9uVHlwZXMuR2V0Q29tcGFueVRoZW1lQ29tcGxldGVkKSxcbiAgICAvLyAgICAgdGFwKCgpID0+IHtcbiAgICAvL3RoaXMudGhlbWVNb2RlbCQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmdldFRoZW1lTW9kZWwpKTtcbiAgICAvL3RoaXMudGhlbWVNb2RlbCQuc3Vic2NyaWJlKHggPT4gdGhpcy50aGVtZU1vZGVsID0geCk7XG4gICAgLy8gdGhpcy5nZXRUaGVtZSgpO1xuICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xuICAgIHRoaXMudGhlbWVNb2RlbCA9IHRoaXMuY29va2llU2VydmljZS5jaGVjaygnQ29tcGFueVRoZW1lJykgPyBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDb21wYW55VGhlbWVcIikpIDogbnVsbDtcbiAgICB0aGlzLnRoZW1lU2VydmljZS5jaGFuZ2VUaGVtZSh0aGlzLnRoZW1lTW9kZWwpO1xuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWFpbkxvZ28sIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWFpbkxvZ28sIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNaW5pTG9nbywgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlNaW5pTG9nbywgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcbiAgICB0aGlzLnRoZW1lTW9kZWwgPSB0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soJ0NvbXBhbnlUaGVtZScpID8gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KFwiQ29tcGFueVRoZW1lXCIpKSA6IG51bGw7XG5cbiAgICB2YXIgY29tcGFueVNldHRpbmdzTW9kZWwgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueVNldHRpbmdzKSk7XG5cbiAgICB0aGlzLmNvbXBhbnlNYWluTG9nbyA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikgIT0gbnVsbCA/IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikudmFsdWUgOiB0aGlzLmNvbXBhbnlNYWluTG9nbztcbiAgICB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWluaWxvZ29cIikgIT0gbnVsbCA/IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWluaWxvZ29cIikudmFsdWUgOiB0aGlzLmNvbXBhbnlNaW5pTG9nbztcblxuICAgIC8vZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzaG9ydGN1dC1mYXYtaWNvblwiKS5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWluaUxvZ28pO1xuICAgIHRoaXMudGhlbWVCYXNlQ29sb3IgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGhlbWVDb2xvcicpO1xuICAgIC8vIC8vIHRoaXMudGhlbWVNb2RlbCA9IHRoaXMuY29va2llU2VydmljZS5jaGVjaygnQ29tcGFueVRoZW1lJykgPyBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDb21wYW55VGhlbWVcIikpIDogbnVsbDtcbiAgICAvLyAvLyBpZiAodGhpcy50aGVtZU1vZGVsICYmIHRoaXMudGhlbWVNb2RlbC5jb21wYW55VGhlbWVJZCAhPT0gXCIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIikge1xuICAgIC8vIC8vICAgdGhpcy50aGVtZVNlcnZpY2UuY2hhbmdlVGhlbWUodGhpcy50aGVtZU1vZGVsKTtcbiAgICAvLyAvLyAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWFpbkxvZ28sIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWFpbkxvZ28sIG51bGwpO1xuICAgIC8vIC8vICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNaW5pTG9nbywgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlNaW5pTG9nbywgbnVsbCk7XG4gICAgLy8gLy8gfVxuICAgIC8vIC8vIGVsc2Uge1xuICAgIC8vIC8vICAgdmFyIHRoZW1lTW9kZWwgPSBuZXcgVGhlbWVNb2RlbCgpXG4gICAgLy8gLy8gICB0aGVtZU1vZGVsLmNvbXBhbnlUaGVtZUlkID0gXCIwOTI5RDM1QS0zNTczLTRCMDYtOTNGQi1DN0Q0NkFBRkE5MThcIjtcbiAgICAvLyAvLyAgIC8vIHRoZW1lTW9kZWwuY29tcGFueU1pbmlMb2dvID0gXCJhc3NldHMvaW1hZ2VzL0xvZ28tZmF2aWNvbi5wbmdcIjtcbiAgICAvLyAvLyAgIC8vIHRoZW1lTW9kZWwuY29tcGFueU1haW5Mb2dvID0gXCJhc3NldHMvaW1hZ2VzL01haW4tTG9nby5wbmdcIjtcbiAgICAvLyAvLyAgIHRoaXMudGhlbWVNb2RlbCA9IHRoZW1lTW9kZWw7XG4gICAgLy8gLy8gICB0aGlzLnRoZW1lU2VydmljZS5jaGFuZ2VUaGVtZSh0aGVtZU1vZGVsKTtcbiAgICAvLyAvLyAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWFpbkxvZ28sIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWFpbkxvZ28sIG51bGwpO1xuICAgIC8vIC8vICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNaW5pTG9nbywgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlNaW5pTG9nbywgbnVsbCk7XG4gICAgLy8gLy8gfVxuICAgIC8vIC8vIHRoaXMuY29tcGFueU1haW5Mb2dvID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNYWluTG9nbyk7XG4gICAgLy8gLy8gdGhpcy5jb21wYW55TWluaUxvZ28gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1pbmlMb2dvKTtcbiAgICAvLyAvLyAvL3RoaXMuY2hhbmdlRmF2SWNvbigpO1xuICAgIC8vIC8vIHRoaXMudGhlbWVCYXNlQ29sb3IgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGhlbWVDb2xvcicpO1xuICAgIC8vdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgLy8gICB9KVxuICAgIC8vIClcbiAgICAvLyAuc3Vic2NyaWJlKCk7XG5cblxuICAgIC8vIHRoaXMuYWN0aW9uVXBkYXRlcyRcbiAgICAvLyAgIC5waXBlKFxuICAgIC8vICAgICB0YWtlVW50aWwodGhpcy5uZ0Rlc3Ryb3llZCQpLFxuICAgIC8vICAgICBvZlR5cGUoV29ya3NwYWNlc0FjdGlvblR5cGVzLkxvYWRXb3Jrc3BhY2VCeUlkQ29tcGxldGVkKSxcbiAgICAvLyAgICAgdGFwKChkYXRhOiBhbnkpID0+IHtcbiAgICAvLyAgICAgICB2YXIgd29ya3NwYWNlc0xpc3QgPSBkYXRhLnNlYXJjaFdvcmtzcGFjZXNTdWNjZXNzO1xuICAgIC8vICAgICAgIHRoaXMuZGFzaGJvYXJkVXBkYXRlSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgIC8vICAgICAgIC8vIHRoaXMuY2xvc2VBZGRXb3Jrc3BhY2VEaWFsb2coKTtcbiAgICAvLyAgICAgICB0aGlzLmRpc2FibGVXb3Jrc3BhY2UgPSBmYWxzZTtcbiAgICAvLyAgICAgICBpZiAod29ya3NwYWNlc0xpc3QubGVuZ3RoID4gMCkge1xuICAgIC8vICAgICAgICAgdGhpcy53b3Jrc3BhY2VzLnB1c2god29ya3NwYWNlc0xpc3RbMF0pO1xuICAgIC8vICAgICAgICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XG4gICAgLy8gICAgICAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcbiAgICAvLyAgICAgICAgIHRoaXMub3Blbk5ld0Rhc2hib2FyZC5lbWl0KHdvcmtzcGFjZXNMaXN0WzBdLndvcmtzcGFjZUlkKVxuICAgIC8vICAgICAgIH1cblxuICAgIC8vICAgICB9KVxuICAgIC8vICAgKS5zdWJzY3JpYmUoKTtcblxuICAgIC8vdGhpcy5nZXRBbGxQcm9qZWN0cygpO1xuXG4gICAgdGhpcy5kZWxheVRpbWVJbnB1dC5waXBlKFxuICAgICAgZGVib3VuY2VUaW1lKDIwMDApLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICB0aGlzLlNlYXJjaEl0ZW0odmFsdWUpO1xuICAgICAgfSk7XG5cbiAgfVxuXG4gIGdldFRoZW1lKCkge1xuICAgIHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmdldFRoZW1lcygpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XG4gICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoJ0NvbXBhbnlUaGVtZScsIEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmRhdGEpLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xuICAgICAgICB0aGlzLnRoZW1lTW9kZWwgPSB0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soJ0NvbXBhbnlUaGVtZScpID8gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KFwiQ29tcGFueVRoZW1lXCIpKSA6IG51bGw7XG4gICAgICAgIHRoaXMudGhlbWVTZXJ2aWNlLmNoYW5nZVRoZW1lKHRoaXMudGhlbWVNb2RlbCk7XG4gICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWFpbkxvZ28sIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWFpbkxvZ28sIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XG4gICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWluaUxvZ28sIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWluaUxvZ28sIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XG4gICAgICAgIHRoaXMuc2l0ZVVybCA9IHJlc3BvbnNlLmRhdGEucmVnaXN0cmVyU2l0ZUFkZHJlc3M7XG4gICAgICAgIHRoaXMudGhlbWVNb2RlbCA9IHRoaXMuY29va2llU2VydmljZS5jaGVjaygnQ29tcGFueVRoZW1lJykgPyBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDb21wYW55VGhlbWVcIikpIDogbnVsbDtcblxuICAgICAgICB2YXIgY29tcGFueVNldHRpbmdzTW9kZWwgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueVNldHRpbmdzKSk7XG5cbiAgICAgICAgdGhpcy5jb21wYW55TWFpbkxvZ28gPSBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1haW5sb2dvXCIpICE9IG51bGwgPyBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1haW5sb2dvXCIpLnZhbHVlIDogdGhpcy5jb21wYW55TWFpbkxvZ287XG4gICAgICAgIHRoaXMuY29tcGFueU1pbmlMb2dvID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKSAhPSBudWxsID8gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKS52YWx1ZSA6IHRoaXMuY29tcGFueU1pbmlMb2dvO1xuXG4gICAgICAgIGlmICh0aGlzLmNvbXBhbnlNYWluTG9nbyA9PSBcIlwiIHx8IHRoaXMuY29tcGFueU1haW5Mb2dvID09IG51bGwgfHwgdGhpcy5jb21wYW55TWFpbkxvZ28gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5jb21wYW55TWFpbkxvZ28gPSByZXNwb25zZS5kYXRhLmNvbXBhbnlNYWluTG9nbztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jb21wYW55TWluaUxvZ28gPT0gXCJcIiB8fCB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9PSBudWxsIHx8IHRoaXMuY29tcGFueU1pbmlMb2dvID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuY29tcGFueU1pbmlMb2dvID0gcmVzcG9uc2UuZGF0YS5jb21wYW55TWluaUxvZ287XG4gICAgICAgIH1cbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzaG9ydGN1dC1mYXYtaWNvblwiKS5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWluaUxvZ28pO1xuICAgICAgICB0aGlzLnRoZW1lQmFzZUNvbG9yID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RoZW1lQ29sb3InKTtcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmNvbnRyb2wucScsIFtdKVxuICBrZXlPcGVuRXZlbnQoKSB7XG4gICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB0aGlzLmRpc3BsYXkgPSB0cnVlO1xuICAgIHRoaXMuc2VhcmNoQnlUZXh0ID0gZmFsc2U7XG4gICAgdGhpcy5zZWFyY2hCeUlkID0gZmFsc2U7XG4gICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XG4gICAgdGhpcy5vbkZvY3VzKClcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uY29udHJvbC5tJywgW10pXG4gIGtleUNsb3NlRXZlbnQoKSB7XG4gICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgIHRoaXMuZGlzcGxheSA9IGZhbHNlO1xuICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgIHRoaXMuc2VhcmNoQnlUZXh0ID0gZmFsc2U7XG4gICAgdGhpcy5zZWFyY2hCeUlkID0gZmFsc2U7XG4gICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmNvbnRyb2wuYicsIFtdKVxuICByZW1vdGVTZWFyY2hCeVRleHQoKSB7XG4gICAgdGhpcy5zZWFyY2hCeUlkID0gZmFsc2U7XG4gICAgdGhpcy5zZWFyY2hCeVRleHQgPSB0cnVlXG4gICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAvL3RoaXMuZGlzcGxheSA9IHRydWU7XG4gICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmNvbnRyb2wueScsIFtdKVxuICByZW1vdGVTZWFyY2hCeUlkKCkge1xuICAgIHRoaXMuc2VhcmNoQnlUZXh0ID0gZmFsc2VcbiAgICB0aGlzLnNlYXJjaEJ5SWQgPSB0cnVlO1xuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgLy90aGlzLmRpc3BsYXkgPSB0cnVlO1xuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xuICB9XG5cbiAgY29udmVydFRvTG9jYWxUaW1lKHRpbWUpIHtcbiAgICB2YXIgdXRjRGF0ZSA9IG1vbWVudC51dGModGltZSkuZm9ybWF0KCk7XG4gICAgdmFyIGxvY2FsRGF0ZSA9IG1vbWVudC51dGModXRjRGF0ZSkubG9jYWwoKS5mb3JtYXQoKTtcbiAgICByZXR1cm4gbG9jYWxEYXRlO1xuICB9XG5cbiAgaW5pdGlhbGl6ZVdvcmtzcGFjZUZvcm0oKSB7XG4gICAgdGhpcy5zZWxlY3RlZFJvbGVJZHMgPSBudWxsO1xuICAgIHRoaXMuZGlzYWJsZVdvcmtzcGFjZSA9IGZhbHNlO1xuICAgIHRoaXMuZGlzYWJsZVdvcmtzcGFjZWhpZGUgPSBmYWxzZTtcbiAgICB0aGlzLndvcmtzcGFjZUZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgIHdvcmtzcGFjZU5hbWU6IG5ldyBGb3JtQ29udHJvbChudWxsLFxuICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTApXG4gICAgICAgIF0pXG4gICAgICApLFxuICAgICAgc2VsZWN0ZWRSb2xlczogbmV3IEZvcm1Db250cm9sKG51bGwsXG4gICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxuICAgICAgICBdKVxuICAgICAgKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBuZXcgRm9ybUNvbnRyb2wobnVsbCxcbiAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCgxMDAwKVxuICAgICAgICBdKVxuICAgICAgKSxcbiAgICAgIGVkaXRSb2xlSWRzOiBuZXcgRm9ybUNvbnRyb2wobnVsbCwgW10pLFxuICAgICAgZGVsZXRlUm9sZUlkczogbmV3IEZvcm1Db250cm9sKG51bGwsIFtdKVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIHRoaXMuZGVmYXVsdERhc2hib2FyZElkID0gdGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGVmYXVsdERhc2hib2FyZCkgPyBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EZWZhdWx0RGFzaGJvYXJkKSkgOiBudWxsOztcblxuICAgIC8vdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgR2V0Q29tcGFueVRoZW1lVHJpZ2dlcmVkKCkpO1xuICAgIHRoaXMuYWRtaW5Ub29scyA9IFtdO1xuICAgIC8vIHZhciBkYXNoYm9hcmRzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkRhc2hib2FyZHMpKTtcbiAgICAvLyBpZiAoZGFzaGJvYXJkcyAmJiBkYXNoYm9hcmRzICE9IFwibnVsbFwiKSB7XG4gICAgLy8gICB0aGlzLndvcmtzcGFjZXMgPSB0aGlzLndvcmtzcGFjZXNGb3JMb29wID0gZGFzaGJvYXJkcztcbiAgICAvLyB9XG4gICAgLy8gdmFyIG1lbnVJdGVtcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5NZW51SXRlbXMpKVxuICAgIC8vIGlmIChtZW51SXRlbXMgJiYgbWVudUl0ZW1zICE9IFwibnVsbFwiKSB7XG4gICAgLy8gICB0aGlzLm1lbnVJdGVtID0gbWVudUl0ZW1zO1xuICAgIC8vICAgdGhpcy5pdGVtcyA9IHRoaXMubWVudUl0ZW0uZmlsdGVyKGl0ZW0gPT4gaXRlbS50eXBlICE9IFwiZHJvcERvd25cIik7XG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcbiAgICAvLyB9XG4gICAgLy8gdmFyIHdpZGdldHMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRmF2b3VyaXRlV2lkZ2V0cykpO1xuICAgIC8vIGlmICh3aWRnZXRzICYmIHdpZGdldHMgIT0gXCJudWxsXCIpIHtcbiAgICAvLyAgIHRoaXMud2lkZ2V0cyA9IHRoaXMub3JpZ2luYWxXaWRnZXRzID0gd2lkZ2V0cztcbiAgICAvLyB9XG4gICAgLy8gdmFyIHJlY2VudFNlYXJjaGVzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlJlY2VudFNlYXJjaGVzKSk7XG4gICAgLy8gaWYgKHJlY2VudFNlYXJjaGVzICYmIHJlY2VudFNlYXJjaGVzICE9IFwibnVsbFwiKSB7XG4gICAgLy8gICB0aGlzLmFsbHNlYXJjaGVzID0gdGhpcy5yZWNlbnRTZWFyY2hlcyA9IHJlY2VudFNlYXJjaGVzO1xuICAgIC8vIH1cbiAgICAvLyB0aGlzLmxvYWRXaWRnZXRzTGlzdCgpO1xuICAgIC8vICB0aGlzLmxvYWRXb3Jrc3BhY2VzTGlzdCgpO1xuICAgIHRoaXMuZ2V0U29mdExhYmVsQ29uZmlndXJhdGlvbnMoKTtcbiAgICB0aGlzLmdldENvbXBhbnlTZXR0aW5ncygpO1xuICAgIHRoaXMubWVudUl0ZW1zJCA9IHRoaXMuc3RvcmUucGlwZShcbiAgICAgIHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5nZXRDdXJyZW50QWN0aXZlTWVudUNhdGVnb3J5TWVudUl0ZW1zKSxcbiAgICAgIHRhcChtZW51TGlzdCA9PiBjb25zb2xlLmxvZyhtZW51TGlzdCkpXG4gICAgKTtcbiAgICAvLyB0aGlzLm1lbnVJdGVtcyQuc3Vic2NyaWJlKHggPT4ge1xuICAgIC8vICAgdmFyIGEgPSB4O1xuICAgIC8vICAgdmFyIGIgPSB0aGlzLm1lbnVJdGVtLmZpbHRlcihpdGVtID0+IGl0ZW0udHlwZSAhPSBcImRyb3BEb3duXCIpO1xuXG4gICAgLy8gICAvL3RoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xuICAgIC8vICAgLy90aGlzLm1lbnVzZmV0Y2hJblByb2dyZXNzID0gZmFsc2U7XG4gICAgLy8gfSk7XG5cbiAgICAvLyB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBHZXRBbGxNZW51SXRlbXNUcmlnZ2VyZWQoTWVudUNhdGVnb3JpZXMuTWFpbikpO1xuXG4gICAgdmFyIGNvbXBhbnlTZXR0aW5nc01vZGVsID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlTZXR0aW5ncykpO1xuXG4gICAgdGhpcy5jb21wYW55TWFpbkxvZ28gPSBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1haW5sb2dvXCIpICE9IG51bGwgPyBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1haW5sb2dvXCIpLnZhbHVlIDogdGhpcy5jb21wYW55TWFpbkxvZ287XG4gICAgdGhpcy5jb21wYW55TWluaUxvZ28gPSBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1pbmlsb2dvXCIpICE9IG51bGwgPyBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1pbmlsb2dvXCIpLnZhbHVlIDogdGhpcy5jb21wYW55TWluaUxvZ287XG5cbiAgICBpZiAodGhpcy5jb21wYW55TWFpbkxvZ28gPT0gXCJcIiB8fCB0aGlzLmNvbXBhbnlNYWluTG9nbyA9PSBudWxsIHx8IHRoaXMuY29tcGFueU1haW5Mb2dvID09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jb21wYW55TWFpbkxvZ28gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1haW5Mb2dvKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29tcGFueU1pbmlMb2dvID09IFwiXCIgfHwgdGhpcy5jb21wYW55TWluaUxvZ28gPT0gbnVsbCB8fCB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY29tcGFueU1pbmlMb2dvID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNaW5pTG9nbyk7XG4gICAgfVxuXG4gICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaG9ydGN1dC1mYXYtaWNvbicpKSB7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hvcnRjdXQtZmF2LWljb24nKS5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIHRoaXMuY29tcGFueU1pbmlMb2dvKTtcbiAgICB9XG4gICAgLy90aGlzLmdldFJlY2VudFNlYXJjaGVzKCk7XG4gICAgdGhpcy5zZWxlY3RlZExpc3QgPSBbXTtcblxuICAgIC8vIHRoaXMuY3VzdGFwcCA9IHtcbiAgICAvLyAgIG5hbWU6IFwiQ3VzdG9tIGFwcGxpY2F0aW9uc1wiLFxuICAgIC8vICAgbGluazogXCIvYXBwbGljYXRpb25zL2N1c3RvbS1hcHBsaWNhdGlvbnNcIixcbiAgICAvLyAgIHBlcm1pc3Npb246IHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVBcHBsaWNhdGlvbnMkXG4gICAgLy8gfVxuICAgIC8vIHRoaXMuZm9ybXMgPSB7XG4gICAgLy8gICBuYW1lOiBcIkZvcm1zXCIsXG4gICAgLy8gICBsaW5rOiBcIi9hcHBsaWNhdGlvbnMvdmlldy1mb3Jtc1wiLFxuICAgIC8vICAgcGVybWlzc2lvbjogdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Rm9ybXMkXG4gICAgLy8gfVxuICAgIC8vIHRoaXMucHJvamVjdFJvbGVDb25maWd1cmF0aW9uID0ge1xuICAgIC8vICAgbmFtZTogXCJQcm9qZWN0IHJvbGUgY29uZmlndXJhdGlvblwiLFxuICAgIC8vICAgbGluazogXCIvcm9sZW1hbmFnZW1lbnQvZW50aXR5cm9sZW1hbmFnZW1lbnRcIixcbiAgICAvLyAgIHBlcm1pc3Npb246IHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfTWFuYWdlUHJvamVjdFJvbGVQZXJtaXNzaW9ucyRcbiAgICAvLyB9XG4gICAgLy8gdGhpcy5yb2xlQ29uZmlndXJhdGlvbiA9IHtcbiAgICAvLyAgIG5hbWU6IFwiUm9sZSBjb25maWd1cmF0aW9uXCIsXG4gICAgLy8gICBsaW5rOiBcIi9yb2xlbWFuYWdlbWVudC9yb2xlbWFuYWdlbWVudFwiLFxuICAgIC8vICAgcGVybWlzc2lvbjogdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Um9sZXMkXG4gICAgLy8gfVxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVBcHBsaWNhdGlvbnMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5kb2VzVXNlckhhdmVQZXJtaXNzaW9uLCB7IGZlYXR1cmVJZDogRmVhdHVyZUlkcy5GZWF0dXJlX0FkZE9yVXBkYXRlQXBwbGljYXRpb25zIH0pKTtcbiAgICAvLyB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0FkZE9yVXBkYXRlQXBwbGljYXRpb25zJC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgIC8vICAgdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUFwcGxpY2F0aW9ucyA9IHJlc3VsdDtcbiAgICAvLyAgIGlmIChyZXN1bHQpIHtcbiAgICAvLyAgICAgdGhpcy5hZG1pblRvb2xzLnNvbWUoKGZsb3cpID0+IGZsb3cubmFtZSA9PSAnQ3VzdG9tIGFwcGxpY2F0aW9ucycpID8gbnVsbCA6IHRoaXMuYWRtaW5Ub29scy5wdXNoKHRoaXMuY3VzdGFwcCk7XG4gICAgLy8gICB9XG4gICAgLy8gfSlcbiAgICAvLyB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0FkZE9yVXBkYXRlRm9ybSQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmRvZXNVc2VySGF2ZVBlcm1pc3Npb24sIHsgZmVhdHVyZUlkOiBGZWF0dXJlSWRzLkZlYXR1cmVfQWRkT3JVcGRhdGVGb3JtIH0pKTtcbiAgICAvLyB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0FkZE9yVXBkYXRlRm9ybSQuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAvLyAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVGb3JtID0gcmVzdWx0O1xuICAgIC8vICAgaWYgKHJlc3VsdCkge1xuICAgIC8vICAgICB0aGlzLmFkbWluVG9vbHMuc29tZSgoZmxvdykgPT4gZmxvdy5uYW1lID09ICdGb3JtcycpID8gbnVsbCA6IHRoaXMuYWRtaW5Ub29scy5wdXNoKHRoaXMuZm9ybXMpO1xuICAgIC8vICAgfVxuICAgIC8vIH0pXG4gICAgLy8gdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Rm9ybXMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5kb2VzVXNlckhhdmVQZXJtaXNzaW9uLCB7IGZlYXR1cmVJZDogRmVhdHVyZUlkcy5GZWF0dXJlX1ZpZXdGb3JtcyB9KSk7ICAgIC8vIC8vdGhpcy5yb3V0ZS51cmwuc3Vic2NyaWJlKCh1cmwpID0+IHRoaXMudXJsID0gdXJsLnRvU3RyaW5nKCkpO1xuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfVmlld0Zvcm1zJC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgIC8vICAgdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Rm9ybXMgPSByZXN1bHQ7XG4gICAgLy8gICBpZiAocmVzdWx0KSB7XG4gICAgLy8gICAgIHRoaXMuYWRtaW5Ub29scy5zb21lKChmbG93KSA9PiBmbG93Lm5hbWUgPT0gJ0Zvcm1zJykgPyBudWxsIDogdGhpcy5hZG1pblRvb2xzLnB1c2godGhpcy5mb3Jtcyk7XG4gICAgLy8gICB9XG4gICAgLy8gfSlcbiAgICAvLyB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZVByb2plY3RSb2xlUGVybWlzc2lvbnMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5kb2VzVXNlckhhdmVQZXJtaXNzaW9uLCB7IGZlYXR1cmVJZDogRmVhdHVyZUlkcy5GZWF0dXJlX01hbmFnZVByb2plY3RSb2xlUGVybWlzc2lvbnMgfSkpO1xuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfTWFuYWdlUHJvamVjdFJvbGVQZXJtaXNzaW9ucyQuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAvLyAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfTWFuYWdlUHJvamVjdFJvbGVQZXJtaXNzaW9ucyA9IHJlc3VsdDtcbiAgICAvLyAgIGlmIChyZXN1bHQpIHtcbiAgICAvLyAgICAgdGhpcy5hZG1pblRvb2xzLnNvbWUoKGZsb3cpID0+IGZsb3cubmFtZSA9PSAnUHJvamVjdCByb2xlIGNvbmZpZ3VyYXRpb24nKSA/IG51bGwgOiB0aGlzLmFkbWluVG9vbHMucHVzaCh0aGlzLnByb2plY3RSb2xlQ29uZmlndXJhdGlvbik7XG4gICAgLy8gICB9XG4gICAgLy8gfSlcbiAgICAvLyB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdSb2xlcyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmRvZXNVc2VySGF2ZVBlcm1pc3Npb24sIHsgZmVhdHVyZUlkOiBGZWF0dXJlSWRzLkZlYXR1cmVfVmlld1JvbGVzIH0pKTtcbiAgICAvLyB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdSb2xlcyQuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAvLyAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfVmlld1JvbGVzID0gcmVzdWx0O1xuICAgIC8vICAgaWYgKHJlc3VsdCkge1xuICAgIC8vICAgICB0aGlzLmFkbWluVG9vbHMuc29tZSgoZmxvdykgPT4gZmxvdy5uYW1lID09ICdSb2xlIGNvbmZpZ3VyYXRpb24nKSA/IG51bGwgOiB0aGlzLmFkbWluVG9vbHMucHVzaCh0aGlzLnJvbGVDb25maWd1cmF0aW9uKTtcbiAgICAvLyAgIH1cbiAgICAvLyB9KVxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZG9lc1VzZXJIYXZlUGVybWlzc2lvbiwgeyBmZWF0dXJlSWQ6IEZlYXR1cmVJZHMuRmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMgfSkpO1xuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzJC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAvLyAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzID0gcmVzdWx0O1xuICAgIC8vICAgaWYgKHJlc3VsdCkge1xuICAgIC8vICAgIC8vIHRoaXMuZ2V0QWxsRW1wbG95ZWVzKCk7XG4gICAgLy8gICB9XG4gICAgLy8gfSlcbiAgICB0aGlzLnRvb2xzID0gdGhpcy5hZG1pblRvb2xzO1xuICAgIC8vdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gMDtcbiAgICAvL3RoaXMuZ2V0QWxsRW1wbG95ZWVzKCk7XG4gICAgLy8gdGhpcy5sb2FkV2lkZ2V0c0xpc3QobnVsbCk7XG4gICAgLy8gdGhpcy5sb2FkV29ya3NwYWNlc0xpc3QoKTtcbiAgICB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgPSBbXTtcbiAgICB0aGlzLmdvYWxTZWFyY2hMaXN0ID0gW107XG4gICAgLy8gaWYodGhpcy5pdGVtcy5sZW5ndGg+MCkge1xuICAgIC8vICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gMDsgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XG4gICAgLy8gfSBlbHNlIGlmKHRoaXMudG9vbHMubGVuZ3RoPjApIHtcbiAgICAvLyAgIHRoaXMudD0wOyB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy50b29sc1swXTtcbiAgICAvLyB9IGVsc2UgaWYodGhpcy53b3Jrc3BhY2VzLmxlbmd0aD4wKSB7XG4gICAgLy8gICB0aGlzLndzID0gMDsgdGhpcy5pdGVtQ2xpY2tlZCA9dGhpcy53b3Jrc3BhY2VzWzBdO1xuICAgIC8vIH0gIFxuXG4gICAgdGhpcy5TZWFyY2hJdGVtID0gXy5kZWJvdW5jZSh0aGlzLlNlYXJjaEl0ZW0sIDEwMDApO1xuICAgIHRoaXMucm91dGVzLmV2ZW50c1xuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlckFjdGl2ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gIH1cblxuICBvcGVuSW5mbyhpbmZvUG9wT3Zlcikge1xuICAgIGluZm9Qb3BPdmVyLm9wZW5Qb3BvdmVyKCk7XG4gIH1cblxuICAvLyBnZXRBbGxQcm9qZWN0cygpIHtcbiAgLy8gICBjb25zdCBwcm9qZWN0U2VhcmNoUmVzdWx0ID0gbmV3IFByb2plY3RTZWFyY2hDcml0ZXJpYUlucHV0TW9kZWwoKTtcbiAgLy8gICBwcm9qZWN0U2VhcmNoUmVzdWx0LmlzQXJjaGl2ZWQgPSBmYWxzZTtcbiAgLy8gICB0aGlzLmNvbW1vblNlcnZpY2Uuc2VhcmNoUHJvamVjdHMocHJvamVjdFNlYXJjaFJlc3VsdCkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gIC8vICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyA9PSB0cnVlKSB7XG4gIC8vICAgICAgIGlmIChyZXNwb25zZS5kYXRhKSB7XG4gIC8vICAgICAgICAgdGhpcy5wcm9qZWN0U2VhcmNoUmVzdWx0cyA9IHJlc3BvbnNlLmRhdGE7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgIH1cbiAgLy8gICAgIGVsc2Uge1xuICAvLyAgICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID0gcmVzcG9uc2UuYXBpUmVzcG9uc2VNZXNzYWdlc1swXS5tZXNzYWdlO1xuICAvLyAgICAgICB0aGlzLnByb2plY3RTZWFyY2hSZXN1bHRzID0gW107XG4gIC8vICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHRoaXMudmFsaWRhdGlvbk1lc3NhZ2UpO1xuICAvLyAgICAgfVxuICAvLyAgIH0pXG4gIC8vIH1cblxuICBnZXRDb21wYW55U2V0dGluZ3MoKSB7XG4gICAgbGV0IGNvbXBhbnlTZXR0aW5nc01vZGVsID0gW107XG4gICAgdGhpcy5jb21wYW55U2V0dGluZ3NNT2RlbCQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmdldENvbXBhbnlTZXR0aW5ncykpO1xuICAgIHRoaXMuY29tcGFueVNldHRpbmdzTU9kZWwkLnN1YnNjcmliZSgoeCkgPT4gY29tcGFueVNldHRpbmdzTW9kZWwgPSB4KTtcbiAgICBsZXQgYnVnQm9hcmRSZXN1bHQgPSBjb21wYW55U2V0dGluZ3NNb2RlbC5maWx0ZXIoaXRlbSA9PiBpdGVtLmtleS50cmltKCkgPT0gXCJFbmFibGVCdWdCb2FyZFwiKTtcbiAgICBpZiAoYnVnQm9hcmRSZXN1bHQgJiYgYnVnQm9hcmRSZXN1bHQubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5pc0VuYWJsZUJ1Z0JvYXJkID0gYnVnQm9hcmRSZXN1bHRbMF0udmFsdWUgPT0gXCIxXCIgPyB0cnVlIDogZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5jb21wYW55TWFpbkxvZ28gPSBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1haW5sb2dvXCIpICE9IG51bGwgPyBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1haW5sb2dvXCIpLnZhbHVlIDogdGhpcy5jb21wYW55TWFpbkxvZ287XG4gICAgdGhpcy5jb21wYW55TWluaUxvZ28gPSBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1pbmlsb2dvXCIpICE9IG51bGwgPyBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1pbmlsb2dvXCIpLnZhbHVlIDogdGhpcy5jb21wYW55TWluaUxvZ287XG5cbiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nob3J0Y3V0LWZhdi1pY29uJykpIHtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaG9ydGN1dC1mYXYtaWNvbicpLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgdGhpcy5jb21wYW55TWluaUxvZ28pO1xuICAgIH1cbiAgfVxuXG4gIGxvYWRTZWFyY2hEYXRhKCkge1xuICAgIHZhciBtZW51SXRlbXMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTWVudUl0ZW1zKSlcbiAgICBpZiAobWVudUl0ZW1zICYmIG1lbnVJdGVtcyAhPSBcIm51bGxcIikge1xuICAgICAgdGhpcy5tZW51SXRlbSA9IG1lbnVJdGVtcztcbiAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLm1lbnVJdGVtLmZpbHRlcihpdGVtID0+IGl0ZW0udHlwZSAhPSBcImRyb3BEb3duXCIpO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XG4gICAgfVxuICAgIHZhciB3aWRnZXRzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkZhdm91cml0ZVdpZGdldHMpKTtcbiAgICBpZiAod2lkZ2V0cyAmJiB3aWRnZXRzICE9IFwibnVsbFwiKSB7XG4gICAgICB0aGlzLndpZGdldHMgPSB0aGlzLm9yaWdpbmFsV2lkZ2V0cyA9IHdpZGdldHM7XG4gICAgfVxuICAgIHZhciByZWNlbnRTZWFyY2hlcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5SZWNlbnRTZWFyY2hlcykpO1xuICAgIGlmIChyZWNlbnRTZWFyY2hlcyAmJiByZWNlbnRTZWFyY2hlcyAhPSBcIm51bGxcIikge1xuICAgICAgdGhpcy5hbGxzZWFyY2hlcyA9IHRoaXMucmVjZW50U2VhcmNoZXMgPSByZWNlbnRTZWFyY2hlcztcbiAgICB9XG4gIH1cbiAgdHJhbnNsYXRlYXBwbGljYXRpb25uYW1lKGl0ZW0pIHtcbiAgICBpZiAoaXRlbSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIGxvY2FsdmFyaWFibGUgPSBpdGVtLnRyaW0oKTtcbiAgICB2YXIgbmFtZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiQVBQLlwiICsgbG9jYWx2YXJpYWJsZSk7XG4gICAgaWYgKG5hbWUuaW5kZXhPZihcIkFQUC5cIikgIT0gLTEpIHtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHJldHVybiBuYW1lO1xuICAgIH1cbiAgfVxuXG4gIG9uRm9jdXMoKSB7XG4gICAgaWYgKCF0aGlzLnNlYXJjaEJ5SWQgJiYgIXRoaXMuc2VhcmNoQnlUZXh0KSB7XG4gICAgICB2YXIgcmV0cmlldmVEYXNoYm9hcmRzOiBib29sZWFuID0gdHJ1ZTtcbiAgICAgIHZhciBkYXNoYm9hcmRzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EYXNoYm9hcmRzKTtcbiAgICAgIGlmIChkYXNoYm9hcmRzICYmIGRhc2hib2FyZHMgIT0gXCJudWxsXCIpIHtcbiAgICAgICAgcmV0cmlldmVEYXNoYm9hcmRzID0gZmFsc2U7XG4gICAgICAgIHRoaXMud29ya3NwYWNlc0Zvckxvb3AgPSBKU09OLnBhcnNlKGRhc2hib2FyZHMpO1xuICAgICAgICBpZiAodGhpcy5zZWFyY2hUZXh0KSB7XG4gICAgICAgICAgdGhpcy53b3Jrc3BhY2VzID0gdGhpcy53b3Jrc3BhY2VzRm9yTG9vcC5maWx0ZXIoXG4gICAgICAgICAgICBpdGVtID0+XG4gICAgICAgICAgICAgIGl0ZW0ud29ya3NwYWNlTmFtZVxuICAgICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgLmluY2x1ZGVzKHRoaXMuc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpKSAhPT1cbiAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMud29ya3NwYWNlcyA9IHRoaXMud29ya3NwYWNlc0Zvckxvb3A7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghKHRoaXMuY29va2llU2VydmljZS5jaGVjayhMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlNlYXJjaENsaWNrKSAmJiBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5TZWFyY2hDbGljaykpID09IHRydWUpKSB7XG4gICAgICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xuICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuU2VhcmNoQ2xpY2ssIEpTT04uc3RyaW5naWZ5KHRydWUpLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xuICAgICAgICAvLyB0aGlzLmxvYWRXaWRnZXRzTGlzdChudWxsKTtcbiAgICAgICAgLy8gdGhpcy5sb2FkV29ya3NwYWNlc0xpc3QoKTtcbiAgICAgICAgLy8gdGhpcy5nZXRBbGxNZW51SXRlbXMoKTtcblxuICAgICAgICB0aGlzLmxvYWRpbmdTZWFyY2hNZW51RGF0YSA9IHRydWU7XG4gICAgICAgIHRoaXMucnNzLnNlYXJjaE1lbnVEYXRhKHJldHJpZXZlRGFzaGJvYXJkcylcbiAgICAgICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcy5zdWNjZXNzICYmIHJlcy5kYXRhKSB7XG4gICAgICAgICAgICAgIGlmIChyZXMuZGF0YS53b3Jrc3BhY2VzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy53b3Jrc3BhY2VzID0gcmVzLmRhdGEud29ya3NwYWNlcztcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkRhc2hib2FyZHMsIEpTT04uc3RyaW5naWZ5KHRoaXMud29ya3NwYWNlcykpO1xuICAgICAgICAgICAgICAgIHRoaXMud29ya3NwYWNlc0Zvckxvb3AgPSB0aGlzLndvcmtzcGFjZXM7XG4gICAgICAgICAgICAgICAgLy90aGlzLmRlZmF1bHREYXNoYm9hcmQgPSB0aGlzLndvcmtzcGFjZXMuZmluZChpID0+IGkuaXNEZWZhdWx0ID09IHRydWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChyZXMuZGF0YS53aWRnZXRzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmlnaW5hbFdpZGdldHMgPSByZXMuZGF0YS53aWRnZXRzLnNvcnQoKGEsIGIpID0+XG4gICAgICAgICAgICAgICAgICBhLndpZGdldE5hbWUudG9Mb3dlckNhc2UoKSA+IGIud2lkZ2V0TmFtZS50b0xvd2VyQ2FzZSgpID8gMSA6IC0xXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLndpZGdldHMgPSB0aGlzLm9yaWdpbmFsV2lkZ2V0cztcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkZhdm91cml0ZVdpZGdldHMsIEpTT04uc3RyaW5naWZ5KHRoaXMud2lkZ2V0cykpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5tZW51SXRlbXMpIHtcbiAgICAgICAgICAgICAgICAvLyB2YXIgYXBwbGljYXRpb25zID0gcmVzLmRhdGEubWVudUl0ZW1zLmZpbHRlcihmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgICAgIC8vICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAvLyAgICAgeC5tZW51Q2F0ZWdvcnkgJiZcbiAgICAgICAgICAgICAgICAvLyAgICAgTWVudUNhdGVnb3JpZXMuTWFpbiAmJlxuICAgICAgICAgICAgICAgIC8vICAgICB4Lm1lbnVDYXRlZ29yeS50b0xvd2VyQ2FzZSgpID09PSBNZW51Q2F0ZWdvcmllcy5NYWluLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAvLyAgICk7XG4gICAgICAgICAgICAgICAgLy8gfSlcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVJdGVtID0gcmVzLmRhdGEubWVudUl0ZW1zO1xuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTWVudUl0ZW1zLCBKU09OLnN0cmluZ2lmeSh0aGlzLm1lbnVJdGVtKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcyA9IHRoaXMubWVudUl0ZW0uZmlsdGVyKGl0ZW0gPT4gaXRlbS50eXBlICE9IFwiZHJvcERvd25cIik7XG4gICAgICAgICAgICAgICAgLy90aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAocmVzLmRhdGEucmVjZW50U2VhcmNoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hbGxzZWFyY2hlcyA9IHJlcy5kYXRhLnJlY2VudFNlYXJjaDtcbiAgICAgICAgICAgICAgICB0aGlzLnJlY2VudFNlYXJjaGVzID0gdGhpcy5hbGxzZWFyY2hlcztcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlJlY2VudFNlYXJjaGVzLCBKU09OLnN0cmluZ2lmeSh0aGlzLmFsbHNlYXJjaGVzKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XG4gICAgICAgICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Mb2FkRmF2b3VyaXRlV2lkZ2V0cywgSlNPTi5zdHJpbmdpZnkoZmFsc2UpLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xuICAgICAgICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTG9hZFJlY2VudFNlYXJjaGVzLCBKU09OLnN0cmluZ2lmeShmYWxzZSksIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XG4gICAgICAgICAgICAgIHRoaXMucm91dGVyQWN0aXZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdTZWFyY2hNZW51RGF0YSA9IGZhbHNlO1xuICAgICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2FkU2VhcmNoRGF0YSgpO1xuICAgICAgfVxuICAgICAgLy8gZWxzZSB7XG4gICAgICAvLyAgIGlmICghKHRoaXMuY29va2llU2VydmljZS5jaGVjayhMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkxvYWRGYXZvdXJpdGVXaWRnZXRzKSAmJiBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Mb2FkRmF2b3VyaXRlV2lkZ2V0cykpID09IGZhbHNlKSkge1xuICAgICAgLy8gICAgIHRoaXMubG9hZFdpZGdldHNMaXN0KG51bGwsIHRydWUpO1xuICAgICAgLy8gICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xuICAgICAgLy8gICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Mb2FkRmF2b3VyaXRlV2lkZ2V0cywgSlNPTi5zdHJpbmdpZnkoZmFsc2UpLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xuICAgICAgLy8gICB9XG4gICAgICAvLyAgIGlmICghKHRoaXMuY29va2llU2VydmljZS5jaGVjayhMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkxvYWRSZWNlbnRTZWFyY2hlcykgJiYgSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTG9hZFJlY2VudFNlYXJjaGVzKSkgPT0gZmFsc2UpKSB7XG4gICAgICAvLyAgICAgdGhpcy5nZXRSZWNlbnRTZWFyY2hlcygpO1xuICAgICAgLy8gICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xuICAgICAgLy8gICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Mb2FkUmVjZW50U2VhcmNoZXMsIEpTT04uc3RyaW5naWZ5KGZhbHNlKSwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcbiAgICAgIC8vICAgfVxuICAgICAgLy8gICB0aGlzLnJvdXRlckFjdGl2ZSgpO1xuICAgICAgLy8gfVxuICAgICAgdGhpcy5yb3V0ZXJBY3RpdmUoKTtcbiAgICB9XG4gICAgdGhpcy5kaXNwbGF5ID0gdHJ1ZTtcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcbiAgfVxuXG4gIHJvdXRlckFjdGl2ZSgpIHtcbiAgICBpZiAodGhpcy5yb3V0ZXMudXJsLmluY2x1ZGVzKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkXCIpICYmIHRoaXMucm91dGVzLnVybC5zcGxpdChcIi9cIilbM10pIHtcbiAgICAgIHZhciBkYXNoYm9hcmRJZCA9IHRoaXMucm91dGVzLnVybC5zcGxpdChcIi9cIilbM107XG4gICAgICBpZiAoZGFzaGJvYXJkSWQgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdmFyIGluZGV4ID0gdGhpcy53b3Jrc3BhY2VzLmZpbmRJbmRleChpID0+IGkud29ya3NwYWNlSWQgPT0gZGFzaGJvYXJkSWQpO1xuICAgICAgICB0aGlzLndzID0gaW5kZXg7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnJzID0gbnVsbDtcbiAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMucm91dGVzLnVybC5pbmNsdWRlcyhcImRhc2hib2FyZC1tYW5hZ2VtZW50L3dpZGdldHNcIikgJiYgdGhpcy5yb3V0ZXMudXJsLnNwbGl0KFwiL1wiKVszXSkge1xuICAgICAgdmFyIHdpZGdldElkID0gdGhpcy5yb3V0ZXMudXJsLnNwbGl0KFwiL1wiKVszXTtcbiAgICAgIGlmICh3aWRnZXRJZCAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xuICAgICAgICB2YXIgaW5kZXggPSB0aGlzLndpZGdldHMuZmluZEluZGV4KGkgPT4gaS53aWRnZXRJZCA9PSB3aWRnZXRJZCk7XG4gICAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgICB0aGlzLndkID0gaW5kZXg7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53cyA9IHRoaXMucnMgPSBudWxsO1xuICAgICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbdGhpcy53ZF07XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB2YXIgaW5kZXhScyA9IHRoaXMucmVjZW50U2VhcmNoZXMuZmluZEluZGV4KGkgPT4gaS5pdGVtSWQgPT0gd2lkZ2V0SWQpXG4gICAgICAgICAgdGhpcy5ycyA9IGluZGV4UnM7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53cyA9IHRoaXMud2QgPSBudWxsO1xuICAgICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzW3RoaXMucnNdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciBpbmRleCA9IHRoaXMuaXRlbXMuZmluZEluZGV4KGkgPT4gdGhpcy5yb3V0ZXMudXJsID09IFwiL1wiICsgaS5zdGF0ZSk7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSBpbmRleDtcbiAgICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5ycyA9IG51bGw7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkUm93SW5kZXhdO1xuICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgbG9hZFdvcmtzcGFjZXNMaXN0KCkge1xuICAgIHRoaXMud29ya3NwYWNlc2ZldGNoSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgdmFyIHdvcmtzcGFjZWxpc3QgPSBuZXcgV29ya3NwYWNlTGlzdCgpO1xuICAgIHdvcmtzcGFjZWxpc3Qud29ya3NwYWNlSWQgPSBcIm51bGxcIjtcbiAgICB3b3Jrc3BhY2VsaXN0LmlzSGlkZGVuID0gZmFsc2U7XG4gICAgdGhpcy5jb21tb25TZXJ2aWNlLkdldFdvcmtzcGFjZUxpc3Qod29ya3NwYWNlbGlzdCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgdGhpcy53b3Jrc3BhY2VzID0gcmVzdWx0LmRhdGE7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkRhc2hib2FyZHMsIEpTT04uc3RyaW5naWZ5KHJlc3VsdC5kYXRhKSk7XG4gICAgICB0aGlzLndvcmtzcGFjZXNGb3JMb29wID0gdGhpcy53b3Jrc3BhY2VzO1xuICAgICAgdGhpcy5kZWZhdWx0RGFzaGJvYXJkID0gdGhpcy53b3Jrc3BhY2VzLmZpbmQoaSA9PiBpLmlzRGVmYXVsdCA9PSB0cnVlKTtcbiAgICAgIHRoaXMud29ya3NwYWNlc2ZldGNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgIH0pO1xuICAgIC8vIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IExvYWRXb3Jrc3BhY2VzTGlzdFRyaWdnZXJlZCh0aGlzLndvcmtzcGFjZWxpc3QpKTtcbiAgfTtcblxuICBvcGVuQXBwcygpIHtcbiAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJhcHAtc3RvcmUvd2lkZ2V0c1wiXSk7XG4gIH1cblxuICBsb2FkV2lkZ2V0c0xpc3Qoc2VhcmNoVGV4dCwgc3RvcmUgPSBmYWxzZSkge1xuICAgIHRoaXMud2lkZ2V0c2ZldGNoSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgdGhpcy53aWRnZXQgPSBuZXcgV2lkZ2V0TGlzdCgpO1xuICAgIHRoaXMud2lkZ2V0LndpZGdldElkID0gXCJudWxsXCI7XG4gICAgdGhpcy53aWRnZXQuaXNBcmNoaXZlZCA9IGZhbHNlO1xuICAgIHRoaXMud2lkZ2V0LnBhZ2VOdW1iZXIgPSBudWxsO1xuICAgIHRoaXMud2lkZ2V0LnBhZ2VTaXplID0gbnVsbDtcbiAgICB0aGlzLndpZGdldC5zb3J0RGlyZWN0aW9uQXNjID0gdHJ1ZTtcbiAgICB0aGlzLndpZGdldC5pc0Zhdm91cml0ZVdpZGdldCA9IHRydWU7XG4gICAgaWYgKHNlYXJjaFRleHQpXG4gICAgICB0aGlzLndpZGdldC5zZWFyY2hUZXh0ID0gc2VhcmNoVGV4dDtcblxuICAgIHRoaXMuY29tbW9uU2VydmljZS5HZXRXaWRnZXRzQmFzZWRPblVzZXIodGhpcy53aWRnZXQpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgIHRoaXMud2lkZ2V0cyA9IFtdO1xuICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICAgIHRoaXMub3JpZ2luYWxXaWRnZXRzID0gcmVzdWx0LmRhdGEuc29ydCgoYSwgYikgPT5cbiAgICAgICAgICBhLndpZGdldE5hbWUudG9Mb3dlckNhc2UoKSA+IGIud2lkZ2V0TmFtZS50b0xvd2VyQ2FzZSgpID8gMSA6IC0xXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMud2lkZ2V0cyA9IHRoaXMub3JpZ2luYWxXaWRnZXRzO1xuICAgICAgICBpZiAoc3RvcmUpIHtcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkZhdm91cml0ZVdpZGdldHMsIEpTT04uc3RyaW5naWZ5KHRoaXMud2lkZ2V0cykpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMud2lkZ2V0c2ZldGNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cblxuICAgIH0pO1xuXG4gICAgdmFyIGNvbXBhbnlTZXR0aW5nc01vZGVsID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlTZXR0aW5ncykpO1xuXG4gICAgdGhpcy5jb21wYW55TWFpbkxvZ28gPSBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1haW5sb2dvXCIpICE9IG51bGwgPyBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1haW5sb2dvXCIpLnZhbHVlIDogdGhpcy5jb21wYW55TWFpbkxvZ287XG4gICAgdGhpcy5jb21wYW55TWluaUxvZ28gPSBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1pbmlsb2dvXCIpICE9IG51bGwgPyBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1pbmlsb2dvXCIpLnZhbHVlIDogdGhpcy5jb21wYW55TWluaUxvZ287XG4gICAgLy8gdGhpcy5jb21wYW55TWFpbkxvZ28gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1haW5Mb2dvKTtcbiAgICAvLyB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWluaUxvZ28pO1xuXG4gICAgaWYgKHRoaXMuY29tcGFueU1haW5Mb2dvID09IFwiXCIgfHwgdGhpcy5jb21wYW55TWFpbkxvZ28gPT0gbnVsbCB8fCB0aGlzLmNvbXBhbnlNYWluTG9nbyA9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY29tcGFueU1haW5Mb2dvID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNYWluTG9nbyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbXBhbnlNaW5pTG9nbyA9PSBcIlwiIHx8IHRoaXMuY29tcGFueU1pbmlMb2dvID09IG51bGwgfHwgdGhpcy5jb21wYW55TWluaUxvZ28gPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWluaUxvZ28pO1xuICAgIH1cblxuICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hvcnRjdXQtZmF2LWljb24nKSkge1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nob3J0Y3V0LWZhdi1pY29uJykuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCB0aGlzLmNvbXBhbnlNaW5pTG9nbyk7XG4gICAgfVxuICB9XG5cblxuICBnZXRBbGxFbXBsb3llZXMoKSB7XG4gICAgdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5kb2VzVXNlckhhdmVQZXJtaXNzaW9uLCB7IGZlYXR1cmVJZDogRmVhdHVyZUlkcy5GZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscyB9KSk7XG4gICAgdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMkLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMgPSByZXN1bHQ7XG4gICAgfSlcbiAgICBsZXQgZW1wbG95ZWVTcGVudFRpbWUgPSBuZXcgRW1wbG95ZWVMaXN0SW5wdXQoKTtcbiAgICBlbXBsb3llZVNwZW50VGltZS5zb3J0RGlyZWN0aW9uQXNjID0gdHJ1ZTtcbiAgICBlbXBsb3llZVNwZW50VGltZS5pc0FjdGl2ZSA9IHRydWU7XG4gICAgLy8gdGhpcy5ockRhc2hib2FyU2VydmljZS5HZXRBbGxFbXBsb3llZXMoZW1wbG95ZWVTcGVudFRpbWUpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcbiAgICAvLyAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xuICAgIC8vICAgICB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdCA9IHJlc3VsdC5kYXRhO1xuICAgIC8vICAgICBpZiAoISh0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscykpIHtcbiAgICAvLyAgICAgICB2YXIgY3VycmVudFVzZXJJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKTtcbiAgICAvLyAgICAgICB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdCA9IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0LmZpbHRlcih4ID0+ICh4LnVzZXJJZC50b0xvd2VyQ2FzZSgpID09IGN1cnJlbnRVc2VySWQudG9Mb3dlckNhc2UoKSkpO1xuICAgIC8vICAgICB9XG4gICAgLy8gICAgIHRoaXMuZW1wbG95ZWVMaXN0ID0gdGhpcy5sb2FkZWRFbXBsb3llZUxpc3Q7XG4gICAgLy8gICB9XG4gICAgLy8gfSlcblxuICAgIGNvbnN0IGVtcGxveWVlTGlzdFNlYXJjaFJlc3VsdCA9IG5ldyBFbXBsb3llZUxpc3RNb2RlbCgpO1xuICAgIGVtcGxveWVlTGlzdFNlYXJjaFJlc3VsdC5zb3J0RGlyZWN0aW9uQXNjID0gdHJ1ZTtcbiAgICB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0QWxsRW1wbG95ZWVzKGVtcGxveWVlTGlzdFNlYXJjaFJlc3VsdCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICAgIHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0ID0gcmVzdWx0LmRhdGE7XG4gICAgICAgIGlmICghKHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzKSkge1xuICAgICAgICAgIHZhciBjdXJyZW50VXNlcklkID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpO1xuICAgICAgICAgIHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0ID0gdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QuZmlsdGVyKHggPT4gKHgudXNlcklkLnRvTG93ZXJDYXNlKCkgPT0gY3VycmVudFVzZXJJZC50b0xvd2VyQ2FzZSgpKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbXBsb3llZUxpc3QgPSB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdDtcbiAgICAgIH1cbiAgICB9KVxuICB9XG4gIC8vIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgLy8gICB0aGlzLmUgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgLy8gICBsZXQgb3V0U2lkZUNsaWNrID0gIHRoaXMuZS5hZGRFdmVudExpc3RlbmVyKCdibHVyJywoKT0+e1xuICAvLyAgICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XG4gIC8vIH0pO1xuICAvLyB9XG5cbiAgT3Blbk1lbnVJdGVtcyhvcGVuTWVudVBvcFVwKSB7XG4gICAgb3Blbk1lbnVQb3BVcC5vcGVuUG9wb3ZlcigpO1xuICB9XG5cbiAgb3BlbkxldmVsMk1lbnUobGluaywgZXZlbnQpIHtcbiAgICB0aGlzLnN0YXRlTHZsMSA9IGxpbms7XG4gICAgdGhpcy5zdWJMZXZlbHMgPSBldmVudDtcbiAgfVxuXG4gIG9wZW5MZXZlbDNNZW51KGxpbmsxLCBsaW5rMiwgZXZlbnQpIHtcbiAgICB0aGlzLmxldmVsM0xpbmsxID0gbGluazE7XG4gICAgdGhpcy5sZXZlbDNMaW5rMiA9IGxpbmsyO1xuICAgIHRoaXMuc3ViTGV2ZWxzRm9yTGV2ZWwyID0gZXZlbnQ7XG4gIH1cblxuICBnZXRBbGxNZW51SXRlbXMoKSB7XG4gICAgdGhpcy5tZW51c2ZldGNoSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgR2V0QWxsTWVudUl0ZW1zVHJpZ2dlcmVkKE1lbnVDYXRlZ29yaWVzLk1haW4pKTtcbiAgICBjb25zdCB1c2VyUmVmZXJlbmNlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyUmVmZXJlbmNlSWQpO1xuICAgIHRoaXMuZGVmYXVsdERhc2hib2FyZElkID0gdGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGVmYXVsdERhc2hib2FyZCkgPyBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EZWZhdWx0RGFzaGJvYXJkKSkgOiBudWxsOztcbiAgICBpZiAodGhpcy5kZWZhdWx0RGFzaGJvYXJkSWQgJiYgdXNlclJlZmVyZW5jZSAhPSBcIm51bGxcIiAmJiB1c2VyUmVmZXJlbmNlICE9IG51bGwpIHtcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvXCIgKyB0aGlzLmRlZmF1bHREYXNoYm9hcmRJZCArIFwiL2Zvcm0vXCIgKyB1c2VyUmVmZXJlbmNlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGVmYXVsdERhc2hib2FyZElkKSB7XG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgdGhpcy5kZWZhdWx0RGFzaGJvYXJkSWQpO1xuICAgIH1cbiAgICAvLyB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwibGl2ZXMvd2VsY29tZVwiKTtcbiAgfVxuXG4gIG5hdmlnYXRlVG9Vcmwod29ya3NwYWNlSWQpIHtcbiAgICBjb25zdCB1c2VyUmVmZXJlbmNlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyUmVmZXJlbmNlSWQpO1xuICAgIGlmICh1c2VyUmVmZXJlbmNlICE9IFwibnVsbFwiICYmIHVzZXJSZWZlcmVuY2UgIT0gbnVsbCkge1xuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIHdvcmtzcGFjZUlkICsgXCIvZm9ybS9cIiArIHVzZXJSZWZlcmVuY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgd29ya3NwYWNlSWQpO1xuICAgIH1cbiAgfVxuXG4gIGdldFNvZnRMYWJlbENvbmZpZ3VyYXRpb25zKCkge1xuICAgIHRoaXMuc29mdExhYmVscyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1NvZnRMYWJlbHMnKSk7XG4gICAgdGhpcy5jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGdldFNlYXJjaE1lbnVJdGVtcygpIHtcbiAgICBpZiAodGhpcy5zZWFyY2hCeVRleHQpIHtcbiAgICAgIHRoaXMuc2VhcmNoQnlUZXh0TG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLnJzcy5nZXRTZWFyY2hNZW51SXRlbXMoeyBzZWFyY2hUZXh0OiB0aGlzLnNlYXJjaFRleHQsIHNlYXJjaFVuaXF1ZUlkOiBudWxsIH0pXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyAmJiByZXNwb25zZS5kYXRhICE9IG51bGwgJiYgcmVzcG9uc2UuZGF0YSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoVGV4dCkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvamVjdExpc3QgPSByZXNwb25zZS5kYXRhLmZpbHRlcih1cyA9PiB1cy5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5Qcm9qZWN0KTtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgPSByZXNwb25zZS5kYXRhLmZpbHRlcih1cyA9PiAodXMuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZykgfHwgKHVzLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5nb2FsU2VhcmNoTGlzdCA9IHJlc3BvbnNlLmRhdGEuZmlsdGVyKHVzID0+IHVzLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgKHVzLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJzID0gcmVzcG9uc2UuZGF0YS5maWx0ZXIodXMgPT4gdXMuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUpO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0ID0gdXNlcnM7XG4gICAgICAgICAgICAgICAgaWYgKCEodGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMpKSB7XG4gICAgICAgICAgICAgICAgICB2YXIgY3VycmVudFVzZXJJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0ID0gdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QuZmlsdGVyKCh4OiBhbnkpID0+ICh4Lml0ZW1JZC50b0xvd2VyQ2FzZSgpID09IGN1cnJlbnRVc2VySWQudG9Mb3dlckNhc2UoKSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmVtcGxveWVlTGlzdCA9IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0O1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb2plY3RMaXN0ICYmIHRoaXMucHJvamVjdExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsO1xuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSAwO1xuICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucHJvamVjdExpc3RbMF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICB0aGlzLnVzZXJzID0gMDtcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy51c2VycyA9IHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsO1xuICAgICAgICAgICAgICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xuICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ID0gW107XG4gICAgICAgICAgICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zZWFyY2hCeVRleHRMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgb25Qcm9qZWN0U2VsZWN0KGl0ZW0sIGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LndoaWNoID09IDEpIHtcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgICAgdGhpcy5wcm9qZWN0TGlzdCA9IFtdO1xuICAgICAgdGhpcy5JbnNlcnRTZWFyY2goaXRlbS5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS5wcm9qZWN0LCBpdGVtLml0ZW1JZCk7XG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwicHJvamVjdHMvcHJvamVjdHN0YXR1cy9cIiArIGl0ZW0uaXRlbUlkICsgXCIvYWN0aXZlLWdvYWxzXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgU2VhcmNoSXRlbShldmVudCkge1xuICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IFtdO1xuICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSBbXTtcbiAgICB0aGlzLnRoZW1lQmFzZUNvbG9yID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RoZW1lQ29sb3InKTtcbiAgICB2YXIgZWxlbWVudCA9XG4gICAgICAhIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKTtcbiAgICBlbGVtZW50ID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IDAgOiBudWxsO1xuICAgIHZhciBlbGVtID1cbiAgICAgICEhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpO1xuICAgIGVsZW0gPyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gMCA6IG51bGw7XG4gICAgdmFyIGVtcCA9ICEhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpO1xuICAgIGVtcCA/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSAwIDogbnVsbDtcbiAgICB2YXIgd2lkZ2V0ID0gISFkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIik7XG4gICAgd2lkZ2V0ID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDAgOiBudWxsO1xuICAgIC8vdGhpcy5kaXNwbGF5ID0gdHJ1ZTtcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcbiAgICBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlKSB7XG4gICAgICBpZiAodGhpcy5zZWFyY2hCeVRleHQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U2VhcmNoTWVudUl0ZW1zKCk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmICh0aGlzLnNlYXJjaEJ5SWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMubWVudUl0ZW0uZmlsdGVyKFxuICAgICAgICBpdGVtID0+XG4gICAgICAgICAgaXRlbS5tZW51LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCkpICE9PVxuICAgICAgICAgIGZhbHNlICYmIGl0ZW0udHlwZSAhPSBcImRyb3BEb3duXCJcbiAgICAgICk7XG4gICAgICB0aGlzLndvcmtzcGFjZXMgPSB0aGlzLndvcmtzcGFjZXNGb3JMb29wLmZpbHRlcihcbiAgICAgICAgaXRlbSA9PlxuICAgICAgICAgIGl0ZW0ud29ya3NwYWNlTmFtZVxuICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgIC5pbmNsdWRlcyhldmVudC50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKSkgIT09XG4gICAgICAgICAgZmFsc2VcbiAgICAgICk7XG4gICAgICB0aGlzLmFkbWluVG9vbHMgPyB0aGlzLnRvb2xzID0gdGhpcy5hZG1pblRvb2xzLmZpbHRlcihcbiAgICAgICAgaXRlbSA9PlxuICAgICAgICAgIGl0ZW0ubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT1cbiAgICAgICAgICBmYWxzZVxuICAgICAgKSA6IG51bGw7XG4gICAgICAvL3RoaXMubG9hZFdpZGdldHNMaXN0KGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICB0aGlzLm9yaWdpbmFsV2lkZ2V0cyA/IHRoaXMud2lkZ2V0cyA9IHRoaXMub3JpZ2luYWxXaWRnZXRzLmZpbHRlcihcbiAgICAgICAgaXRlbSA9PlxuICAgICAgICAgIGl0ZW0ud2lkZ2V0TmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT1cbiAgICAgICAgICBmYWxzZVxuICAgICAgKSA6IG51bGw7XG4gICAgICB0aGlzLmVtcGxveWVlTGlzdCA9IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDAgPyAodGhpcy5sb2FkZWRFbXBsb3llZUxpc3QuZmlsdGVyKHggPT5cbiAgICAgICgoeC5mdWxsTmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT0gZmFsc2UpXG4gICAgICAgIHx8ICh4LmVtcGxveWVlTnVtYmVyLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCkpICE9PSBmYWxzZSlcbiAgICAgICAgfHwgKHguc3VyTmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT0gZmFsc2UpKVxuICAgICAgKSkgOiBudWxsO1xuICAgICAgLy8gdGhpcy5hbGxzZWFyY2hlcyA/IHRoaXMucmVjZW50U2VhcmNoZXMgPSB0aGlzLmFsbHNlYXJjaGVzLmZpbHRlcihcbiAgICAgIC8vICAgaXRlbSA9PlxuICAgICAgLy8gICAgIGl0ZW0ucmVjZW50U2VhcmNoLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihldmVudC50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKSkgIT09IC0xXG4gICAgICAvLyApIDogbnVsbDtcbiAgICAgIHRoaXMuYWxsc2VhcmNoZXMgPyB0aGlzLnJlY2VudFNlYXJjaGVzID0gdGhpcy5hbGxzZWFyY2hlcy5maWx0ZXIoXG4gICAgICAgIGl0ZW0gPT5cbiAgICAgICAgICBpdGVtLnJlY2VudFNlYXJjaC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT1cbiAgICAgICAgICBmYWxzZVxuICAgICAgKSA6IG51bGw7XG5cbiAgICAgIGlmIChldmVudC50YXJnZXQudmFsdWUgJiYgZXZlbnQudGFyZ2V0LnZhbHVlLnNlYXJjaCgnLScpID4gMCkge1xuICAgICAgICB0aGlzLnJzcy5zZWFyY2hHb2FsVGFza3MoZXZlbnQudGFyZ2V0LnZhbHVlKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyAmJiByZXNwb25zZS5kYXRhICE9IG51bGwgJiYgcmVzcG9uc2UuZGF0YSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoVGV4dCkge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IHJlc3BvbnNlLmRhdGEuZmlsdGVyKHVzID0+ICh1cy50eXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcpIHx8ICh1cy50eXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5nb2FsU2VhcmNoTGlzdCA9IHJlc3BvbnNlLmRhdGEuZmlsdGVyKHVzID0+IHVzLnR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCAodXMudHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpKTtcbiAgICAgICAgICAgICAgICBpZiAoISgodGhpcy5pdGVtcy5sZW5ndGggPiAwICYmIHRoaXMuaXRlbXMpIHx8ICh0aGlzLnRvb2xzICYmIHRoaXMudG9vbHMubGVuZ3RoID4gMCkgfHwgKHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkgfHwgKHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkpKSB7XG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VycyA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XG4gICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ID0gW107XG4gICAgICAgICAgICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG5cblxuXG4gICAgICAvLyAgIGNvbnN0IHVzZXJTdG9yeVNlYXJjaENyaXRlcmlhVGVtcCA9IG5ldyBVc2VyU3RvcnlTZWFyY2hDcml0ZXJpYUlucHV0TW9kZWwoKTtcbiAgICAgIC8vICAgdXNlclN0b3J5U2VhcmNoQ3JpdGVyaWFUZW1wLnBhZ2VTaXplID0gMTAwMDtcbiAgICAgIC8vICAgdXNlclN0b3J5U2VhcmNoQ3JpdGVyaWFUZW1wLnNlYXJjaFRleHQgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgICAvLyAgIC8vLnJlcGxhY2UoL1xccy9nLCBcIlwiKTtcblxuICAgICAgLy8gIC8vIGlmIChldmVudC50YXJnZXQudmFsdWUuaW5kZXhPZignLScpKSB7XG4gICAgICAvLyAgICAgdGhpcy51c2VyU2VydmljZS5zZWFyY2hVc2VyU3Rvcmllcyh1c2VyU3RvcnlTZWFyY2hDcml0ZXJpYVRlbXApLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuXG4gICAgICAvLyAgICAgICB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgPSBbXTtcbiAgICAgIC8vICAgICAgIGxldCBjb21wYW55U2V0dGluZ3NNb2RlbCA9IFtdO1xuXG4gICAgICAvLyAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyAmJiByZXNwb25zZS5kYXRhICE9IG51bGwgJiYgcmVzcG9uc2UuZGF0YSAhPSB1bmRlZmluZWQgJiYgcmVzcG9uc2UuZGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICAvLyAgICAgICAgIHZhciB1c2VyU3Rvcmllc0xpc3QgPSByZXNwb25zZS5kYXRhO1xuICAgICAgLy8gICAgICAgICB0aGlzLmNvbXBhbnlTZXR0aW5nc01PZGVsJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZ2V0Q29tcGFueVNldHRpbmdzKSk7XG4gICAgICAvLyAgICAgICAgIHRoaXMuY29tcGFueVNldHRpbmdzTU9kZWwkLnN1YnNjcmliZSgoeCkgPT4gY29tcGFueVNldHRpbmdzTW9kZWwgPSB4KTtcbiAgICAgIC8vICAgICAgICAgbGV0IGJ1Z0JvYXJkUmVzdWx0ID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmlsdGVyKGl0ZW0gPT4gaXRlbS5rZXkudHJpbSgpID09IFwiRW5hYmxlQnVnQm9hcmRcIik7XG4gICAgICAvLyAgICAgICAgIGlmIChidWdCb2FyZFJlc3VsdC5sZW5ndGggPiAwKSB7XG4gICAgICAvLyAgICAgICAgICAgdGhpcy5pc0VuYWJsZUJ1Z0JvYXJkID0gYnVnQm9hcmRSZXN1bHRbMF0udmFsdWUgPT0gXCIxXCIgPyB0cnVlIDogZmFsc2U7XG4gICAgICAvLyAgICAgICAgIH1cbiAgICAgIC8vICAgICAgICAgaWYgKCF0aGlzLmlzRW5hYmxlQnVnQm9hcmQpIHtcbiAgICAgIC8vICAgICAgICAgICB1c2VyU3Rvcmllc0xpc3QgPSB1c2VyU3Rvcmllc0xpc3QubWFwKCh4KSA9PiB4LmlzQnVnID09IGZhbHNlKTtcbiAgICAgIC8vICAgICAgICAgfVxuXG4gICAgICAvLyAgICAgICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IHVzZXJTdG9yaWVzTGlzdC5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIC8vICAgICAgICAgICByZXR1cm4ge1xuICAgICAgLy8gICAgICAgICAgICAgZ29hbElkOiBpdGVtLmdvYWxJZCxcbiAgICAgIC8vICAgICAgICAgICAgIGdvYWxOYW1lOiBpdGVtLmdvYWxOYW1lLFxuICAgICAgLy8gICAgICAgICAgICAgZ29hbFNob3J0TmFtZTogaXRlbS5nb2FsU2hvcnROYW1lLFxuICAgICAgLy8gICAgICAgICAgICAgZ29hbFVuaXF1ZU5hbWU6IGl0ZW0uZ29hbFVuaXF1ZU5hbWUsXG4gICAgICAvLyAgICAgICAgICAgICBwcm9qZWN0SWQ6IGl0ZW0ucHJvamVjdElkLFxuICAgICAgLy8gICAgICAgICAgICAgcHJvamVjdE5hbWU6IGl0ZW0ucHJvamVjdE5hbWUsXG4gICAgICAvLyAgICAgICAgICAgICBzcHJpbnRJZDogaXRlbS5zcHJpbnRJZCxcbiAgICAgIC8vICAgICAgICAgICAgIHNwcmludE5hbWU6IGl0ZW0uc3ByaW50TmFtZSxcbiAgICAgIC8vICAgICAgICAgICAgIHVzZXJTdG9yeUlkOiBpdGVtLnVzZXJTdG9yeUlkLFxuICAgICAgLy8gICAgICAgICAgICAgdXNlclN0b3J5TmFtZTogaXRlbS51c2VyU3RvcnlOYW1lLFxuICAgICAgLy8gICAgICAgICAgICAgdXNlclN0b3J5U3RhdHVzTmFtZTogaXRlbS51c2VyU3RvcnlTdGF0dXNOYW1lLFxuICAgICAgLy8gICAgICAgICAgICAgdXNlclN0b3J5VHlwZU5hbWU6IGl0ZW0udXNlclN0b3J5VHlwZU5hbWUsXG4gICAgICAvLyAgICAgICAgICAgICB1c2VyU3RvcnlVbmlxdWVOYW1lOiBpdGVtLnVzZXJTdG9yeVVuaXF1ZU5hbWVcbiAgICAgIC8vICAgICAgICAgICB9XG4gICAgICAvLyAgICAgICAgIH0pO1xuXG4gICAgICAvLyAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgLy8gICAgICAgfVxuICAgICAgLy8gICAgIH0pO1xuICAgICAgLy8gIC8vIH1cblxuICAgICAgLy8gICBsZXQgc2VhcmNoR29hbHMgPSBuZXcgR29hbFNlYXJjaENyaXRlcmlhQXBpSW5wdXRNb2RlbCgpO1xuICAgICAgLy8gICBzZWFyY2hHb2Fscy5zZWFyY2hUZXh0ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgLy8gICAvLy5yZXBsYWNlKC9cXHMvZywgXCJcIik7XG4gICAgICAvLyAgIC8vaWYgKGV2ZW50LnRhcmdldC52YWx1ZS5pbmRleE9mKCctJykpIHtcbiAgICAgIC8vICAgdGhpcy51c2VyU2VydmljZS5zZWFyY2hHb2FscyhzZWFyY2hHb2Fscykuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAvLyAgICAgdGhpcy5nb2FsU2VhcmNoTGlzdCA9IFtdO1xuXG4gICAgICAvLyAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgJiYgcmVzcG9uc2UuZGF0YSAhPSBudWxsICYmIHJlc3BvbnNlLmRhdGEgIT0gdW5kZWZpbmVkICYmIHJlc3BvbnNlLmRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgLy8gICAgICAgdGhpcy5nb2FsU2VhcmNoTGlzdCA9IHJlc3BvbnNlLmRhdGEubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAvLyAgICAgICAgIHJldHVybiB7XG4gICAgICAvLyAgICAgICAgICAgZ29hbElkOiBpdGVtLmdvYWxJZCxcbiAgICAgIC8vICAgICAgICAgICBnb2FsTmFtZTogaXRlbS5nb2FsTmFtZSxcbiAgICAgIC8vICAgICAgICAgICBnb2FsU2hvcnROYW1lOiBpdGVtLmdvYWxTaG9ydE5hbWUsXG4gICAgICAvLyAgICAgICAgICAgZ29hbFVuaXF1ZU5hbWU6IGl0ZW0uZ29hbFVuaXF1ZU5hbWUsXG4gICAgICAvLyAgICAgICAgICAgcHJvamVjdElkOiBpdGVtLnByb2plY3RJZCxcbiAgICAgIC8vICAgICAgICAgICBwcm9qZWN0TmFtZTogaXRlbS5wcm9qZWN0TmFtZVxuICAgICAgLy8gICAgICAgICB9XG4gICAgICAvLyAgICAgICB9KTtcblxuICAgICAgLy8gICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAvLyAgICAgfVxuXG4gICAgICAvLyAgIH0pXG4gICAgICAvLyAvL31cblxuICAgICAgLy8gaWYgKCEodGhpcy5pdGVtcy5sZW5ndGggPiAwKSAmJiAhKHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApICYmICEodGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSAmJiAhKHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSAmJiAhKHRoaXMudG9vbHMubGVuZ3RoID4gMCkgJiYgISh0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkpIHtcbiAgICAgIGlmICghKHRoaXMuaXRlbXMubGVuZ3RoID4gMCkgJiYgISh0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApICYmICEodGhpcy53aWRnZXRzLmxlbmd0aCA+IDApICYmICEodGhpcy50b29scy5sZW5ndGggPiAwKSAmJiAhKHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSkge1xuICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMucnMgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsXG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gMDtcbiAgICAgICAgdGhpcy53ZCA9IHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsO1xuICAgICAgICB0aGlzLnQgPSBudWxsO1xuICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHRoaXMudG9vbHMgJiYgdGhpcy50b29scy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcbiAgICAgICAgdGhpcy53ZCA9IHRoaXMud3MgPSB0aGlzLnJzID0gbnVsbDtcbiAgICAgICAgdGhpcy50ID0gMDtcbiAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudG9vbHNbMF07XG4gICAgICB9IGVsc2UgaWYgKHRoaXMud29ya3NwYWNlcyAmJlxuICAgICAgICB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcbiAgICAgICAgdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMucnMgPSBudWxsO1xuICAgICAgICB0aGlzLndzID0gMDtcbiAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1swXTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHRoaXMud2lkZ2V0cyAmJlxuICAgICAgICB0aGlzLndpZGdldHMubGVuZ3RoID4gMFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcbiAgICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSBudWxsO1xuICAgICAgICB0aGlzLndkID0gMDtcbiAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1swXTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHRoaXMuZW1wbG95ZWVMaXN0ICYmXG4gICAgICAgIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDBcbiAgICAgICkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSBudWxsO1xuICAgICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XG4gICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHRoaXMucmVjZW50U2VhcmNoZXMgJiZcbiAgICAgICAgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gbnVsbDtcbiAgICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMud2QgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgICB0aGlzLnJzID0gMDtcbiAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbMF07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLm1lbnVJdGVtKSB7XG4gICAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLm1lbnVJdGVtXG4gICAgICAgICAgLmZpbHRlcihpdGVtID0+IGl0ZW0udHlwZSAhPSBcImRyb3BEb3duXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pdGVtcyA9IFtdO1xuICAgICAgfVxuICAgICAgdGhpcy53b3Jrc3BhY2VzID0gdGhpcy53b3Jrc3BhY2VzRm9yTG9vcDtcbiAgICAgIHRoaXMudG9vbHMgPSB0aGlzLmFkbWluVG9vbHM7XG4gICAgICB0aGlzLndpZGdldHMgPSB0aGlzLm9yaWdpbmFsV2lkZ2V0cztcbiAgICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IFtdO1xuICAgICAgdGhpcy5nb2FsU2VhcmNoTGlzdCA9IFtdO1xuICAgICAgdGhpcy5wcm9qZWN0TGlzdCA9IFtdO1xuICAgICAgdGhpcy5yZWNlbnRTZWFyY2hlcyA9IHRoaXMuYWxsc2VhcmNoZXM7XG4gICAgICAvL3RoaXMuZW1wbG95ZWVMaXN0ID0gKHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0ICYmIHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApID8gdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QgOiBbXTtcbiAgICAgIHRoaXMuZW1wbG95ZWVMaXN0ID0gW107XG4gICAgICAvLyB0aGlzLndzID0gdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgLy8gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gMDtcbiAgICAgIC8vIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zLmxlbmd0aCA+IDAgPyB0aGlzLml0ZW1zWzBdIDogbnVsbDtcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9PSBcIlwiID8gKHRoaXMuc2VhcmNoVGV4dCA9IHVuZGVmaW5lZCkgOiBudWxsO1xuICAgIH1cbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGNsb3NlU2VhcmNoKGV2ZW50KSB7XG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgdGhpcy5pdGVtcyA9IHRoaXMubWVudUl0ZW1cbiAgICAgIC5maWx0ZXIoaXRlbSA9PiBpdGVtLnR5cGUgIT0gXCJkcm9wRG93blwiKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IChhLm1lbnUudG9Mb3dlckNhc2UoKSA+IGIubWVudS50b0xvd2VyQ2FzZSgpID8gMSA6IC0xKSk7XG4gICAgdGhpcy53b3Jrc3BhY2VzID0gdGhpcy53b3Jrc3BhY2VzRm9yTG9vcDtcbiAgICB0aGlzLndpZGdldHMgPSB0aGlzLm9yaWdpbmFsV2lkZ2V0cztcbiAgICB0aGlzLnRvb2xzID0gdGhpcy5hZG1pblRvb2xzO1xuICAgIHRoaXMucmVjZW50U2VhcmNoZXMgPSB0aGlzLmFsbHNlYXJjaGVzO1xuICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSAwO1xuICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xuICAgIHRoaXMuZGlzcGxheSA9IHRydWU7XG4gICAgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ID0gW107XG4gICAgdGhpcy5nb2FsU2VhcmNoTGlzdCA9IFtdO1xuICAgIHRoaXMucHJvamVjdExpc3QgPSBbXTtcbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIHRoaXMuZW1wbG95ZWVMaXN0ID0gdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QubGVuZ3RoID4gMCA/IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0IDogW107XG4gICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XG4gIH1cblxuICBuYXZpZ2F0ZShldmVudCwgaXRlbSkge1xuICAgIGlmICh0aGlzLnNlYXJjaEJ5SWQpIHtcbiAgICAgIHRoaXMuc2VhcmNoQnlUZXh0TG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLnJzcy5nZXRTZWFyY2hNZW51SXRlbXMoeyBzZWFyY2hUZXh0OiBudWxsLCBzZWFyY2hVbmlxdWVJZDogdGhpcy5zZWFyY2hUZXh0IH0pXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHJlcy5zdWNjZXNzKSB7XG4gICAgICAgICAgICBpZiAocmVzLmRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICB0aGlzLnJlZGlyZWN0VG9Sb3V0ZShyZXMuZGF0YVswXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnRvYXN0ci53YXJuaW5nKCdHaXZlbiBJZCBpcyBub3QgdmFsaWQsIHBsZWFzZSBwcm92aWRlIGNvcnJlY3QgaWQgdG8gbmF2aWdhdGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKCFyZXMuc3VjY2Vzcykge1xuICAgICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzLmFwaVJlc3BvbnNlTWVzc2FnZXNbMF0ubWVzc2FnZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2VhcmNoQnlUZXh0TG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXRlbSkge1xuICAgICAgdGhpcy5yZWRpcmVjdFRvUm91dGUoaXRlbSk7XG4gICAgfVxuICB9XG5cbiAgcmVkaXJlY3RUb1JvdXRlKGl0ZW0pIHtcbiAgICB2YXIgbmFtZTtcbiAgICBpZiAodGhpcy5zZWFyY2hCeVRleHQgfHwgdGhpcy5zZWFyY2hCeUlkKSB7XG4gICAgICBpZiAoaXRlbS5pdGVtVHlwZSAmJiAoaXRlbS5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnKSB8fCAoaXRlbS5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgICAgLy90aGlzLkluc2VydFNlYXJjaChpdGVtLnVuaXF1ZW5OYW1lKTtcbiAgICAgICAgLy9pZiAodGhpcy5wcm9qZWN0U2VhcmNoUmVzdWx0cy5maWx0ZXIoZWxlbWVudCA9PiBlbGVtZW50LnByb2plY3RJZCA9PSBpdGVtLnByb2plY3RJZCkubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAoaXRlbS5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnKSB7XG4gICAgICAgICAgdGhpcy5JbnNlcnRTZWFyY2godGhpcy5zZWFyY2hCeUlkID8gaXRlbS5pdGVtVW5pcXVlTmFtZSA6IGl0ZW0uaXRlbU5hbWUsIFJlY2VudFNlYXJjaFR5cGUud29ya0l0ZW1PckJ1ZywgaXRlbS5pdGVtSWQpO1xuICAgICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcInByb2plY3RzL3dvcmtpdGVtXCIsIGl0ZW0uaXRlbVVuaXF1ZU5hbWVdLCB7IGZyYWdtZW50OiAndW5pcXVlJyB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLkluc2VydFNlYXJjaCh0aGlzLnNlYXJjaEJ5SWQgPyBpdGVtLml0ZW1VbmlxdWVOYW1lIDogaXRlbS5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS5hZGhvYywgaXRlbS5pdGVtSWQpO1xuICAgICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcImRhc2hib2FyZC9hZGhvYy13b3JraXRlbVwiLCBpdGVtLml0ZW1JZF0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIH1cbiAgICAgIH0gZWxzZSBpZiAoaXRlbS5pdGVtVHlwZSAmJiAoaXRlbS5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IGl0ZW0uaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSkge1xuICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgICAvL2lmICh0aGlzLnByb2plY3RTZWFyY2hSZXN1bHRzLmZpbHRlcihlbGVtZW50ID0+IGVsZW1lbnQucHJvamVjdElkID09IGl0ZW0ucHJvamVjdElkKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChpdGVtLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwpIHtcbiAgICAgICAgICB0aGlzLkluc2VydFNlYXJjaCh0aGlzLnNlYXJjaEJ5SWQgPyBpdGVtLml0ZW1VbmlxdWVOYW1lIDogaXRlbS5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS5nb2FsLCBpdGVtLml0ZW1JZCk7XG4gICAgICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW1wicHJvamVjdHMvZ29hbFwiLCBpdGVtLml0ZW1VbmlxdWVOYW1lXSwgeyBmcmFnbWVudDogJ3VuaXF1ZScgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5JbnNlcnRTZWFyY2godGhpcy5zZWFyY2hCeUlkID8gaXRlbS5pdGVtVW5pcXVlTmFtZSA6IGl0ZW0uaXRlbU5hbWUsIFJlY2VudFNlYXJjaFR5cGUuc3ByaW50LCBpdGVtLml0ZW1JZCk7XG4gICAgICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW1wicHJvamVjdHMvc3ByaW50XCIsIGl0ZW0uaXRlbVVuaXF1ZU5hbWVdLCB7IGZyYWdtZW50OiAndW5pcXVlJyB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyB9XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChpdGVtLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLkVtcGxveWVlKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHRoaXMuc2VhcmNoQnlJZCA/IGl0ZW0uaXRlbVVuaXF1ZU5hbWUgOiBpdGVtLml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLmVtcGxveWVlLCBpdGVtLml0ZW1JZCk7XG4gICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXG4gICAgICAgICAgXCIvZGFzaGJvYXJkL3Byb2ZpbGUvXCIgKyBpdGVtLml0ZW1JZCArIFwiL292ZXJ2aWV3XCJcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoaXRlbS5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5Qcm9qZWN0KSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgICAgICB0aGlzLkluc2VydFNlYXJjaCh0aGlzLnNlYXJjaEJ5SWQgPyBpdGVtLml0ZW1VbmlxdWVOYW1lIDogaXRlbS5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS5wcm9qZWN0LCBpdGVtLml0ZW1JZCk7XG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcInByb2plY3RzL3Byb2plY3RzdGF0dXMvXCIgKyBpdGVtLml0ZW1JZCArIFwiL2FjdGl2ZS1nb2Fsc1wiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBlbHNlIGlmIChpdGVtLm1lbnUpIHtcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgbmFtZSA9IGl0ZW0ubWVudTtcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtpdGVtLnN0YXRlXSk7XG4gICAgICB0aGlzLkluc2VydFNlYXJjaChuYW1lLCBSZWNlbnRTZWFyY2hUeXBlLm1lbnUsIGl0ZW0uaWQpO1xuICAgIH1cbiAgICAvLyBlbHNlIGlmIChpdGVtLnBlcm1pc3Npb24pIHtcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgIC8vICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgIC8vICAgbmFtZSA9IGl0ZW0ubmFtZTtcbiAgICAvLyAgIHRoaXMuSW5zZXJ0U2VhcmNoKG5hbWUsIFJlY2UpO1xuICAgIC8vICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW2l0ZW0ubGlua10pO1xuICAgIC8vIH0gXG4gICAgZWxzZSBpZiAoaXRlbS53b3Jrc3BhY2VJZCkge1xuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgICBuYW1lID0gaXRlbS53b3Jrc3BhY2VOYW1lO1xuICAgICAgdGhpcy5JbnNlcnRTZWFyY2gobmFtZSwgUmVjZW50U2VhcmNoVHlwZS5kYXNoYm9hcmQsIGl0ZW0ud29ya3NwYWNlSWQpO1xuICAgICAgY29uc3QgdXNlclJlZmVyZW5jZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlclJlZmVyZW5jZUlkKTtcbiAgICAgIGlmICh1c2VyUmVmZXJlbmNlICE9IFwibnVsbFwiICYmIHVzZXJSZWZlcmVuY2UgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgaXRlbS53b3Jrc3BhY2VJZCArIFwiL2Zvcm0vXCIgKyB1c2VyUmVmZXJlbmNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvXCIgKyBpdGVtLndvcmtzcGFjZUlkKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGl0ZW0ud2lkZ2V0SWQpIHtcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgbmFtZSA9IGl0ZW0ud2lkZ2V0TmFtZTtcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKG5hbWUsIFJlY2VudFNlYXJjaFR5cGUud2lkZ2V0LCBpdGVtLndpZGdldElkKTtcbiAgICAgIHRoaXMuUmVkaXJlY3RUb0FwcChpdGVtKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLlNlYXJjaFJlY2VudEl0ZW0oaXRlbSwgZXZlbnQpO1xuICAgIH1cbiAgfVxuXG5cbiAgSW5zZXJ0U2VhcmNoKG5hbWUsIHJlY2VudFNlYXJjaFR5cGUsIGlkKSB7XG4gICAgdGhpcy5yc3MuaW5zZXJ0UmVjZW50U2VhcmNoKHsgbmFtZTogbmFtZSwgcmVjZW50U2VhcmNoVHlwZTogcmVjZW50U2VhcmNoVHlwZSwgaXRlbUlkOiBpZCB9KS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgIC8vIHRoaXMucmVjZW50U2VhcmNoZXMuaW5jbHVkZXMobmFtZSlcbiAgICAgICAgLy8gICA/ICh0aGlzLnJlY2VudFNlYXJjaGVzLnNwbGljZSh0aGlzLnJlY2VudFNlYXJjaGVzLmluZGV4T2YobmFtZSksIDEpLFxuICAgICAgICAvLyAgICAgdGhpcy5yZWNlbnRTZWFyY2hlcy5zcGxpY2UoMCwgMCwgbmFtZSkpXG4gICAgICAgIC8vICAgOiB0aGlzLnJlY2VudFNlYXJjaGVzLnVuc2hpZnQobmFtZSk7XG4gICAgICAgIHRoaXMuZ2V0UmVjZW50U2VhcmNoZXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIFNlYXJjaFJlY2VudEl0ZW0oc2VhcmNoLCBldmVudCkge1xuICAgIHRoaXMuZGlzcGxheSA9IHRydWU7XG4gICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XG4gICAgaWYgKHNlYXJjaC5yZWNlbnRTZWFyY2hUeXBlID09IFJlY2VudFNlYXJjaFR5cGUubWVudSkge1xuICAgICAgdmFyIGl0ZW0gPSB0aGlzLml0ZW1zLmZpbHRlcihcbiAgICAgICAgaXRlbSA9PlxuICAgICAgICAgIGl0ZW0ubWVudS50b0xvd2VyQ2FzZSgpID09IHNlYXJjaC5yZWNlbnRTZWFyY2gudG9Mb3dlckNhc2UoKVxuICAgICAgKTtcbiAgICAgIGl0ZW0ubGVuZ3RoID4gMCA/IHRoaXMubmF2aWdhdGUoZXZlbnQsIGl0ZW1bMF0pIDogbnVsbFxuICAgIH0gZWxzZSBpZiAoc2VhcmNoLnJlY2VudFNlYXJjaFR5cGUgPT0gUmVjZW50U2VhcmNoVHlwZS5kYXNoYm9hcmQpIHtcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgdGhpcy5JbnNlcnRTZWFyY2goc2VhcmNoLnJlY2VudFNlYXJjaCwgUmVjZW50U2VhcmNoVHlwZS5kYXNoYm9hcmQsIHNlYXJjaC5pdGVtSWQpO1xuICAgICAgY29uc3QgdXNlclJlZmVyZW5jZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlclJlZmVyZW5jZUlkKTtcbiAgICAgIGlmICh1c2VyUmVmZXJlbmNlICE9IFwibnVsbFwiICYmIHVzZXJSZWZlcmVuY2UgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgc2VhcmNoLml0ZW1JZCArIFwiL2Zvcm0vXCIgKyB1c2VyUmVmZXJlbmNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvXCIgKyBzZWFyY2guaXRlbUlkKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHNlYXJjaC5yZWNlbnRTZWFyY2hUeXBlID09IFJlY2VudFNlYXJjaFR5cGUud2lkZ2V0KSB7XG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHNlYXJjaC5yZWNlbnRTZWFyY2gsIFJlY2VudFNlYXJjaFR5cGUud2lkZ2V0LCBzZWFyY2guaXRlbUlkKTtcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFxuICAgICAgICBbXCJkYXNoYm9hcmQtbWFuYWdlbWVudC93aWRnZXRzXCIsIHNlYXJjaC5pdGVtSWRdXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoc2VhcmNoLnJlY2VudFNlYXJjaFR5cGUgPT0gUmVjZW50U2VhcmNoVHlwZS5hZGhvYykge1xuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgICB0aGlzLkluc2VydFNlYXJjaChzZWFyY2gucmVjZW50U2VhcmNoLCBSZWNlbnRTZWFyY2hUeXBlLmFkaG9jLCBzZWFyY2guaXRlbUlkKTtcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcImRhc2hib2FyZC9hZGhvYy13b3JraXRlbVwiLCBzZWFyY2guaXRlbUlkXSk7XG4gICAgfSBlbHNlIGlmIChzZWFyY2gucmVjZW50U2VhcmNoVHlwZSA9PSBSZWNlbnRTZWFyY2hUeXBlLndvcmtJdGVtT3JCdWcpIHtcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgdGhpcy5JbnNlcnRTZWFyY2goc2VhcmNoLnJlY2VudFNlYXJjaCwgUmVjZW50U2VhcmNoVHlwZS53b3JrSXRlbU9yQnVnLCBzZWFyY2guaXRlbUlkKTtcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcInByb2plY3RzL3dvcmtpdGVtXCIsIHNlYXJjaC5pdGVtVW5pcXVlTmFtZV0sIHsgZnJhZ21lbnQ6ICd1bmlxdWUnIH0pO1xuICAgIH0gZWxzZSBpZiAoc2VhcmNoLnJlY2VudFNlYXJjaFR5cGUgPT0gUmVjZW50U2VhcmNoVHlwZS5nb2FsKSB7XG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHNlYXJjaC5yZWNlbnRTZWFyY2gsIFJlY2VudFNlYXJjaFR5cGUuZ29hbCwgc2VhcmNoLml0ZW1JZCk7XG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9nb2FsXCIsIHNlYXJjaC5pdGVtVW5pcXVlTmFtZV0sIHsgZnJhZ21lbnQ6ICd1bmlxdWUnIH0pO1xuICAgIH0gZWxzZSBpZiAoc2VhcmNoLnJlY2VudFNlYXJjaFR5cGUgPT0gUmVjZW50U2VhcmNoVHlwZS5zcHJpbnQpIHtcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgdGhpcy5JbnNlcnRTZWFyY2goc2VhcmNoLnJlY2VudFNlYXJjaCwgUmVjZW50U2VhcmNoVHlwZS5zcHJpbnQsIHNlYXJjaC5pdGVtSWQpO1xuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW1wicHJvamVjdHMvc3ByaW50XCIsIHNlYXJjaC5pdGVtVW5pcXVlTmFtZV0sIHsgZnJhZ21lbnQ6ICd1bmlxdWUnIH0pO1xuICAgIH0gZWxzZSBpZiAoc2VhcmNoLnJlY2VudFNlYXJjaFR5cGUgPT0gUmVjZW50U2VhcmNoVHlwZS5wcm9qZWN0KSB7XG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHNlYXJjaC5yZWNlbnRTZWFyY2gsIFJlY2VudFNlYXJjaFR5cGUucHJvamVjdCwgc2VhcmNoLml0ZW1JZCk7XG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwicHJvamVjdHMvcHJvamVjdHN0YXR1cy9cIiArIHNlYXJjaC5pdGVtSWQgKyBcIi9hY3RpdmUtZ29hbHNcIik7XG4gICAgfSBlbHNlIGlmIChzZWFyY2gucmVjZW50U2VhcmNoVHlwZSA9PSBSZWNlbnRTZWFyY2hUeXBlLmVtcGxveWVlKSB7XG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHNlYXJjaC5yZWNlbnRTZWFyY2gsIFJlY2VudFNlYXJjaFR5cGUuZW1wbG95ZWUsIHNlYXJjaC5pdGVtSWQpO1xuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcbiAgICAgICAgXCIvZGFzaGJvYXJkL3Byb2ZpbGUvXCIgKyBzZWFyY2guaXRlbUlkICsgXCIvb3ZlcnZpZXdcIlxuICAgICAgKTtcbiAgICB9XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIHNlbGVjdE1lbnUoZXZlbnQsIGNsaWNrKSB7XG4gICAgaWYgKGNsaWNrLndoaWNoID09IDEgJiYgZXZlbnQud29ya3NwYWNlSWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2VhcmNoQnlUZXh0ID0gZmFsc2U7XG4gICAgICB0aGlzLnNlYXJjaEJ5SWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgICBjb25zdCB1c2VyUmVmZXJlbmNlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyUmVmZXJlbmNlSWQpO1xuICAgICAgaWYgKHVzZXJSZWZlcmVuY2UgIT0gXCJudWxsXCIgJiYgdXNlclJlZmVyZW5jZSAhPSBudWxsKSB7XG4gICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvXCIgKyBldmVudC53b3Jrc3BhY2VJZCArIFwiL2Zvcm0vXCIgKyB1c2VyUmVmZXJlbmNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvXCIgKyBldmVudC53b3Jrc3BhY2VJZCk7XG4gICAgICB9XG4gICAgICB0aGlzLnNlbGVjdGVkRGFzaGJvYXJkID0gZXZlbnQud29ya3NwYWNlSWQ7XG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgICB0aGlzLm1lbnVJdGVtTmFtZSA9IGV2ZW50LndvcmtzcGFjZU5hbWU7XG4gICAgICB0aGlzLnJzc1xuICAgICAgICAuaW5zZXJ0UmVjZW50U2VhcmNoKHsgbmFtZTogZXZlbnQud29ya3NwYWNlTmFtZSwgcmVjZW50U2VhcmNoVHlwZTogUmVjZW50U2VhcmNoVHlwZS5kYXNoYm9hcmQsIGl0ZW1JZDogZXZlbnQud29ya3NwYWNlSWQgfSlcbiAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAvLyB0aGlzLnJlY2VudFNlYXJjaGVzLmluY2x1ZGVzKGV2ZW50LndvcmtzcGFjZU5hbWUpXG4gICAgICAgICAgICAvLyAgID8gKHRoaXMucmVjZW50U2VhcmNoZXMuc3BsaWNlKFxuICAgICAgICAgICAgLy8gICAgICAgdGhpcy5yZWNlbnRTZWFyY2hlcy5pbmRleE9mKGV2ZW50LndvcmtzcGFjZU5hbWUpLFxuICAgICAgICAgICAgLy8gICAgICAgMVxuICAgICAgICAgICAgLy8gICAgICksXG4gICAgICAgICAgICAvLyAgICAgdGhpcy5yZWNlbnRTZWFyY2hlcy5zcGxpY2UoMCwgMCwgZXZlbnQud29ya3NwYWNlTmFtZSkpXG4gICAgICAgICAgICAvLyAgIDogdGhpcy5yZWNlbnRTZWFyY2hlcy51bnNoaWZ0KGV2ZW50LndvcmtzcGFjZU5hbWUpO1xuICAgICAgICAgICAgdGhpcy5nZXRSZWNlbnRTZWFyY2hlcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RFbXBsb3llZShldmVudCwgY2xpY2spIHtcbiAgICBpZiAoY2xpY2sud2hpY2ggPT0gMSkge1xuICAgICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XG4gICAgICB0aGlzLnNlYXJjaEJ5VGV4dCA9IGZhbHNlO1xuICAgICAgdGhpcy5zZWFyY2hCeUlkID0gZmFsc2U7XG4gICAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcbiAgICAgICAgXCIvZGFzaGJvYXJkL3Byb2ZpbGUvXCIgKyBldmVudC5pdGVtSWQgKyBcIi9vdmVydmlld1wiXG4gICAgICApO1xuICAgICAgdGhpcy5zZWxlY3RlZERhc2hib2FyZCA9IGV2ZW50LndvcmtzcGFjZUlkO1xuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlID0gZXZlbnQuaXRlbUlkO1xuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgdGhpcy5tZW51SXRlbU5hbWUgPSBldmVudC5pdGVtTmFtZTtcbiAgICAgIHRoaXMucnNzXG4gICAgICAgIC5pbnNlcnRSZWNlbnRTZWFyY2goeyBuYW1lOiBldmVudC5pdGVtTmFtZSwgcmVjZW50U2VhcmNoVHlwZTogUmVjZW50U2VhcmNoVHlwZS5lbXBsb3llZSwgaXRlbUlkOiBldmVudC5pdGVtSWQgfSlcbiAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICB0aGlzLnJzcy5nZXRSZWNlbnRTZWFyY2goKS5zdWJzY3JpYmUoKHJlc3BvbnNlRGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChyZXNwb25zZURhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgIHRoaXMuYWxsc2VhcmNoZXMgPSByZXNwb25zZURhdGEuZGF0YTtcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlJlY2VudFNlYXJjaGVzLCBKU09OLnN0cmluZ2lmeSh0aGlzLmFsbHNlYXJjaGVzKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWNlbnRTZWFyY2hlcyA9IHJlc3BvbnNlRGF0YS5kYXRhO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RBZGltblRvb2wobGluaywgZXZlbnQsIGl0ZW0pIHtcbiAgICBpZiAoZXZlbnQud2hpY2ggPT0gMSkge1xuICAgICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XG4gICAgICB0aGlzLnNlYXJjaEJ5VGV4dCA9IGZhbHNlO1xuICAgICAgdGhpcy5zZWFyY2hCeUlkID0gZmFsc2U7XG4gICAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW2xpbmtdKTtcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgIHRoaXMucnNzLmluc2VydFJlY2VudFNlYXJjaCh7IG5hbWU6IGl0ZW0ubWVudSwgcmVjZW50U2VhcmNoVHlwZTogUmVjZW50U2VhcmNoVHlwZS5tZW51LCBpdGVtSWQ6IGl0ZW0uaWQgfSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgLy8gdGhpcy5yZWNlbnRTZWFyY2hlcy5pbmNsdWRlcyhuYW1lKVxuICAgICAgICAgIC8vICAgPyAodGhpcy5yZWNlbnRTZWFyY2hlcy5zcGxpY2UodGhpcy5yZWNlbnRTZWFyY2hlcy5pbmRleE9mKG5hbWUpLCAxKSxcbiAgICAgICAgICAvLyAgICAgdGhpcy5yZWNlbnRTZWFyY2hlcy5zcGxpY2UoMCwgMCwgbmFtZSkpXG4gICAgICAgICAgLy8gICA6IHRoaXMucmVjZW50U2VhcmNoZXMudW5zaGlmdChuYW1lKTtcbiAgICAgICAgICB0aGlzLmdldFJlY2VudFNlYXJjaGVzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cblxuICBPblNlbGVjdCh3aWRnZXQsIGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LndoaWNoID09IDEpIHtcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgICAgdGhpcy5SZWRpcmVjdFRvQXBwKHdpZGdldCk7XG4gICAgICB0aGlzLnJzc1xuICAgICAgICAuaW5zZXJ0UmVjZW50U2VhcmNoKHsgbmFtZTogd2lkZ2V0LndpZGdldE5hbWUsIHJlY2VudFNlYXJjaFR5cGU6IFJlY2VudFNlYXJjaFR5cGUud2lkZ2V0LCBpdGVtSWQ6IHdpZGdldC53aWRnZXRJZCB9KVxuICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIC8vIHRoaXMucmVjZW50U2VhcmNoZXMuaW5jbHVkZXMod2lkZ2V0LndpZGdldE5hbWUpXG4gICAgICAgICAgICAvLyAgID8gKHRoaXMucmVjZW50U2VhcmNoZXMuc3BsaWNlKFxuICAgICAgICAgICAgLy8gICAgICAgdGhpcy5yZWNlbnRTZWFyY2hlcy5pbmRleE9mKHdpZGdldC53aWRnZXROYW1lKSxcbiAgICAgICAgICAgIC8vICAgICAgIDFcbiAgICAgICAgICAgIC8vICAgICApLFxuICAgICAgICAgICAgLy8gICAgIHRoaXMucmVjZW50U2VhcmNoZXMuc3BsaWNlKDAsIDAsIHdpZGdldC53aWRnZXROYW1lKSlcbiAgICAgICAgICAgIC8vICAgOiB0aGlzLnJlY2VudFNlYXJjaGVzLnVuc2hpZnQod2lkZ2V0LndpZGdldE5hbWUpO1xuICAgICAgICAgICAgdGhpcy5nZXRSZWNlbnRTZWFyY2hlcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuXG4gIGdldFJlY2VudFNlYXJjaGVzKCkge1xuICAgIHRoaXMucmVjZW50U2VhcmNoZXNmZXRjaEluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgIHRoaXMucnNzLmdldFJlY2VudFNlYXJjaCgpLnN1YnNjcmliZSgocmVzcG9uc2VEYXRhOiBhbnkpID0+IHtcbiAgICAgIGlmIChyZXNwb25zZURhdGEuc3VjY2Vzcykge1xuICAgICAgICB0aGlzLmFsbHNlYXJjaGVzID0gcmVzcG9uc2VEYXRhLmRhdGE7XG4gICAgICAgIHRoaXMucmVjZW50U2VhcmNoZXMgPSByZXNwb25zZURhdGEuZGF0YTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5SZWNlbnRTZWFyY2hlcywgSlNPTi5zdHJpbmdpZnkodGhpcy5hbGxzZWFyY2hlcykpO1xuICAgICAgICB0aGlzLnJlY2VudFNlYXJjaGVzZmV0Y2hJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgUmVkaXJlY3RUb0FwcCh3aWRnZXQpIHtcbiAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShcbiAgICAgIFtcImRhc2hib2FyZC1tYW5hZ2VtZW50L3dpZGdldHNcIiwgd2lkZ2V0LndpZGdldElkXVxuICAgICk7XG4gIH1cblxuXG5cbiAgT25Hb2FsU2VsZWN0KGdvYWwsIGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LndoaWNoID09IDEpIHtcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgICAgdGhpcy5SZWRpcmVjdFRvR29hbChnb2FsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIFJlZGlyZWN0VG9Hb2FsKGdvYWwpIHtcbiAgICAvL2lmICh0aGlzLnByb2plY3RTZWFyY2hSZXN1bHRzLmZpbHRlcihpdGVtID0+IGl0ZW0ucHJvamVjdElkID09IGdvYWwucHJvamVjdElkKS5sZW5ndGggPiAwKSB7XG4gICAgaWYgKGdvYWwuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCkge1xuICAgICAgdGhpcy5JbnNlcnRTZWFyY2goZ29hbC5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS5nb2FsLCBnb2FsLml0ZW1JZCk7XG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9nb2FsXCIsIGdvYWwuaXRlbVVuaXF1ZU5hbWVdLCB7IGZyYWdtZW50OiAndW5pcXVlJyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5JbnNlcnRTZWFyY2goZ29hbC5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS5zcHJpbnQsIGdvYWwuaXRlbUlkKTtcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcInByb2plY3RzL3NwcmludFwiLCBnb2FsLml0ZW1VbmlxdWVOYW1lXSwgeyBmcmFnbWVudDogJ3VuaXF1ZScgfSk7XG4gICAgfVxuICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSBbXTtcbiAgICB0aGlzLmRpc3BsYXkgPSB0cnVlO1xuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xuICB9XG4gIC8vICB9XG5cbiAgT25Vc2VyU3RvcnlTZWxlY3QodXNlclN0b3J5LCBldmVudCkge1xuICAgIGlmIChldmVudC53aGljaCA9PSAxKSB7XG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICAgIHRoaXMuUmVkaXJlY3RUb1VzZXJTdG9yeSh1c2VyU3RvcnkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgUmVkaXJlY3RUb1VzZXJTdG9yeSh1c2VyU3RvcnkpIHtcbiAgICAvL2lmICh0aGlzLnByb2plY3RTZWFyY2hSZXN1bHRzLmZpbHRlcihpdGVtID0+IGl0ZW0ucHJvamVjdElkID09IHVzZXJTdG9yeS5wcm9qZWN0SWQpLmxlbmd0aCA+IDApIHtcbiAgICBpZiAodXNlclN0b3J5Lml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcpIHtcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHVzZXJTdG9yeS5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS53b3JrSXRlbU9yQnVnLCB1c2VyU3RvcnkuaXRlbUlkKTtcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcInByb2plY3RzL3dvcmtpdGVtXCIsIHVzZXJTdG9yeS5pdGVtVW5pcXVlTmFtZV0sIHsgZnJhZ21lbnQ6ICd1bmlxdWUnIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLkluc2VydFNlYXJjaCh1c2VyU3RvcnkuaXRlbU5hbWUsIFJlY2VudFNlYXJjaFR5cGUuYWRob2MsIHVzZXJTdG9yeS5pdGVtSWQpO1xuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW1wiZGFzaGJvYXJkL2FkaG9jLXdvcmtpdGVtXCIsIHVzZXJTdG9yeS5pdGVtSWRdKTtcbiAgICB9XG4gICAgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ID0gW107XG4gICAgdGhpcy5kaXNwbGF5ID0gdHJ1ZTtcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcbiAgfVxuICAvLyB9XG5cbiAgU2V0KCkge1xuICAgIHRoaXMuZGlzcGxheSA9IGZhbHNlO1xuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xuICAgIC8vIGlmIChcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PSB1bmRlZmluZWQgfHxcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PSBudWxsIHx8XG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgPT09IFwiXCJcbiAgICAvLyApIHtcbiAgICAvLyAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy50ID0gbnVsbDtcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcbiAgICAvLyB9XG4gIH1cbiAgYXJyb3dEb3duRXZlbnRGb3JTZWFyY2hCeVRleHQoKSB7XG4gICAgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuUHJvamVjdCAmJiB0aGlzLnByb2plY3RJbmRleCA8IHRoaXMucHJvamVjdExpc3QubGVuZ3RoIC0gMSkge1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS03XCIpLnNjcm9sbFRvcCArPSA0NTtcbiAgICAgIHRoaXMucHJvamVjdEluZGV4Kys7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5wcm9qZWN0TGlzdFt0aGlzLnByb2plY3RJbmRleF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QgJiYgdGhpcy5wcm9qZWN0SW5kZXggPT0gdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggLSAxICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy51c2VycyA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5Qcm9qZWN0ICYmIHRoaXMucHJvamVjdEluZGV4ID09IHRoaXMucHJvamVjdExpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuUHJvamVjdCAmJiB0aGlzLnByb2plY3RJbmRleCA9PSB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCAtIDEgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLmdvYWxJbmRleCA9IHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmIHRoaXMudXNlcnMgPCB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoIC0gMSkge1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCArPSA0NTtcbiAgICAgIHRoaXMudXNlcnMrKztcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbdGhpcy51c2Vyc107XG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmIHRoaXMudXNlcnMgPT0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCAtIDFcbiAgICAgICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wICs9IDQ1O1xuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmIHRoaXMudXNlcnMgPT0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCAtIDFcbiAgICAgICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy5nb2FsSW5kZXggPSB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiYgdGhpcy5nb2FsSW5kZXggPCB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCAtIDEpIHtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgKz0gNDU7XG4gICAgICB0aGlzLmdvYWxJbmRleCsrO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbdGhpcy5nb2FsSW5kZXhdO1xuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiYgdGhpcy5nb2FsSW5kZXggPT0gdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggLSAxXG4gICAgICAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPCB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggLSAxKSB7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wICs9IDQ1O1xuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXgrKztcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFt0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleF07XG4gICAgfVxuICB9XG4gIGFycm93RG93bkV2ZW50KCkge1xuICAgIC8vIGlmIChcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCAhPSB1bmRlZmluZWQgfHxcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCAhPSBudWxsIHx8XG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgPT09IFwiXCJcbiAgICAvLyApIHtcbiAgICAvLyAgIHJldHVybjtcbiAgICAvLyB9XG4gICAgaWYgKHRoaXMuc2VhcmNoQnlUZXh0ICYmIHRoaXMuc2VhcmNoVGV4dCkge1xuICAgICAgdGhpcy5hcnJvd0Rvd25FdmVudEZvclNlYXJjaEJ5VGV4dCgpO1xuICAgIH1cbiAgICBlbHNlIGlmIChcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJlxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4IDwgdGhpcy5pdGVtcy5sZW5ndGggLSAxXG4gICAgKSB7XG4gICAgICAvL3RoaXMubWVudUVsZW1lbnQubmF0aXZlRWxlbWVudC5zY3JvbGxCeSgwLCAxMDApO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCArPSA0NTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCsrO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZFJvd0luZGV4XTtcbiAgICAgIC8vIHRoaXMuaGlnaGxpZ2h0KG5leHRyb3cpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmXG4gICAgICB0aGlzLndzIDwgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDFcbiAgICApIHtcbiAgICAgIHRoaXMud3MrKztcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgKz0gNDE7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMud3NdO1xuICAgICAgLy8gdGhpcy5oaWdobGlnaHQobmV4dHJvdyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud2QgPCB0aGlzLndpZGdldHMubGVuZ3RoIC0gMSkge1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCArPSA0ODtcbiAgICAgIHRoaXMud2QrKztcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbdGhpcy53ZF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4IDwgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoIC0gMSkge1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCArPSA0NTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4Kys7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXhdO1xuICAgICAgLy8gdGhpcy5oaWdobGlnaHQobmV4dHJvdyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiYgdGhpcy51c2VycyA8IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggLSAxKSB7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wICs9IDQ1O1xuICAgICAgdGhpcy51c2VycysrO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFt0aGlzLnVzZXJzXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiYgdGhpcy5nb2FsSW5kZXggPCB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCAtIDEpIHtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgKz0gNDU7XG4gICAgICB0aGlzLmdvYWxJbmRleCsrO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbdGhpcy5nb2FsSW5kZXhdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA8IDgpIHtcbiAgICAgIHRoaXMucnMrKztcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzW3RoaXMucnNdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9PSB0aGlzLml0ZW1zLmxlbmd0aCAtIDEgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMudCA9IG51bGw7XG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMud3MgPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1swXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLnNlbGVjdGVkUm93SW5kZXggPT0gdGhpcy5pdGVtcy5sZW5ndGggLSAxICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gbnVsbDtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy50ID0gdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLndkID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID09IHRoaXMuaXRlbXMubGVuZ3RoIC0gMSAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnQgPSBudWxsO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9PSB0aGlzLml0ZW1zLmxlbmd0aCAtIDEgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnQgPSBudWxsO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLnNlbGVjdGVkUm93SW5kZXggPT0gdGhpcy5pdGVtcy5sZW5ndGggLSAxICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnQgPSBudWxsO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID09IHRoaXMuaXRlbXMubGVuZ3RoIC0gMSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy50ID0gbnVsbDtcbiAgICAgIHRoaXMud2QgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xuICAgICAgdGhpcy5ycyA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53cyA9PSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMSAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy53ZCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLndzID09IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudCA9IG51bGw7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDEgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnQgPSBudWxsO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53cyA9PSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMSAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy50ID0gbnVsbDtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLndzID09IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxICYmIHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnQgPSBudWxsO1xuICAgICAgdGhpcy53ZCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XG4gICAgICB0aGlzLnJzID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkID09IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudCA9IG51bGw7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud2QgPT0gdGhpcy53aWRnZXRzLmxlbmd0aCAtIDEgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnQgPSBudWxsO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy53ZCA9PSB0aGlzLndpZGdldHMubGVuZ3RoIC0gMSAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy50ID0gbnVsbDtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkID09IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxICYmIHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnQgPSBudWxsO1xuICAgICAgdGhpcy53ZCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XG4gICAgICB0aGlzLnJzID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggLSAxICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy50ID0gbnVsbDtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLnVzZXJzID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDEgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudCA9IG51bGw7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy50ID0gbnVsbDtcbiAgICAgIHRoaXMud2QgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xuICAgICAgdGhpcy5ycyA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJlxuICAgICAgdGhpcy51c2VycyA9PSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy50ID0gbnVsbDtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmXG4gICAgICB0aGlzLnVzZXJzID09IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggLSAxICYmIHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnQgPSBudWxsO1xuICAgICAgdGhpcy53ZCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XG4gICAgICB0aGlzLnJzID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJlxuICAgICAgdGhpcy5nb2FsSW5kZXggPT0gdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggLSAxICYmIHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnQgPSBudWxsO1xuICAgICAgdGhpcy53ZCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XG4gICAgICB0aGlzLnJzID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xuICAgIH1cblxuXG4gICAgLy8gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLndzID09IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xuICAgIC8vICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgLy8gICB0aGlzLnQgPSBudWxsO1xuICAgIC8vICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XG4gICAgLy8gICB0aGlzLndkID0gMDtcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbMF07XG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDEgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xuICAgIC8vICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgLy8gICB0aGlzLndkID0gbnVsbDtcbiAgICAvLyAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gbnVsbDtcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53cyA9PSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xuICAgIC8vICAgdGhpcy53ZCA9IG51bGw7XG4gICAgLy8gICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gbnVsbDtcbiAgICAvLyAgIHRoaXMucnMgPSAwO1xuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbMF07XG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud2QgPT0gOCAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAvLyAgIHRoaXMud2QgPSBudWxsO1xuICAgIC8vICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSBudWxsO1xuICAgIC8vICAgdGhpcy5ycyA9IG51bGw7XG4gICAgLy8gICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDBcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcbiAgICAvLyB9XG4gICAgLy8gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkID09IDggJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAvLyAgIHRoaXMud2QgPSBudWxsO1xuICAgIC8vICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XG4gICAgLy8gICB0aGlzLnJzID0gMDtcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xuICAgIC8vIH1cbiAgICAvLyBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmZ1bGxOYW1lICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDEgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAvLyAgIHRoaXMud2QgPSBudWxsO1xuICAgIC8vICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XG4gICAgLy8gICB0aGlzLnJzID0gMDtcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xuICAgIC8vIH1cbiAgICAvLyBlbHNlIHtcbiAgICAvLyAgIGlmICh0aGlzLnJzICE9PSBudWxsICYmIHRoaXMucnMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDggJiYgdGhpcy5ycyA8IDgpIHtcbiAgICAvLyAgICAgdGhpcy5ycysrO1xuICAgIC8vICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1t0aGlzLnJzXTtcbiAgICAvLyAgICAgLy8gdGhpcy5oaWdobGlnaHQobmV4dHJvdyk7XG4gICAgLy8gICB9XG4gICAgLy8gICBlbHNlIGlmICh0aGlzLnJzICE9PSBudWxsICYmIHRoaXMucnMgIT09IHVuZGVmaW5lZCAmJiAodGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGgpIC0gMSA+IHRoaXMucnMgJiYgdGhpcy5ycyA8IDgpIHtcbiAgICAvLyAgICAgdGhpcy5ycysrO1xuICAgIC8vICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1t0aGlzLnJzXTtcbiAgICAvLyAgIH1cbiAgICAvLyB9XG5cblxuICB9XG4gIGFycm93VXBFdmVudEZvclNlYXJjaEJ5VGV4dCgpIHtcbiAgICBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5Qcm9qZWN0ICYmIHRoaXMucHJvamVjdEluZGV4ID4gMCkge1xuICAgICAgdGhpcy5wcm9qZWN0SW5kZXgtLTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtN1wiKS5zY3JvbGxUb3AgLT0gNDU7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5wcm9qZWN0TGlzdFt0aGlzLnByb2plY3RJbmRleF07XG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmIHRoaXMuaXRlbUNsaWNrZWQuaXRlbUlkID09IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXS5pdGVtSWQgJiYgdGhpcy51c2VycyA9PSAwICYmIHRoaXMucHJvamVjdExpc3QgJiYgdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMucHJvamVjdExpc3QubGVuZ3RoIC0gMTtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnByb2plY3RMaXN0W3RoaXMucHJvamVjdEluZGV4XTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtN1wiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsSGVpZ2h0O1xuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLnVzZXJzID4gMCkge1xuICAgICAgdGhpcy51c2Vycy0tO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCAtPSA0NTtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbdGhpcy51c2Vyc107XG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJiB0aGlzLml0ZW1DbGlja2VkLml0ZW1JZCA9PSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdLml0ZW1JZCAmJiB0aGlzLmdvYWxJbmRleCA9PSAwICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMudXNlcnMgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoIC0gMTtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbdGhpcy51c2Vyc107XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbEhlaWdodDtcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmIHRoaXMuaXRlbUNsaWNrZWQuaXRlbUlkID09IHRoaXMuZ29hbFNlYXJjaExpc3RbMF0uaXRlbUlkICYmIHRoaXMuZ29hbEluZGV4ID09IDAgJiYgdGhpcy5wcm9qZWN0TGlzdCAmJiB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggLSAxO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucHJvamVjdExpc3RbdGhpcy5wcm9qZWN0SW5kZXhdO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS03XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtN1wiKS5zY3JvbGxIZWlnaHQ7XG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJiB0aGlzLmdvYWxJbmRleCA+IDApIHtcbiAgICAgIHRoaXMuZ29hbEluZGV4LS07XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wIC09IDQ1O1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbdGhpcy5nb2FsSW5kZXhdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5FbXBsb3llZSAmJiB0aGlzLml0ZW1DbGlja2VkLml0ZW1JZCA9PSB0aGlzLmVtcGxveWVlTGlzdFswXS5pdGVtSWQgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gMCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xuICAgICAgdGhpcy5nb2FsSW5kZXggPSB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCAtIDE7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFt0aGlzLmdvYWxJbmRleF07XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbEhlaWdodDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUgJiYgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtSWQgPT0gdGhpcy5lbXBsb3llZUxpc3RbMF0uaXRlbUlkICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IDAgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy51c2VycyA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggLSAxO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFt0aGlzLnVzZXJzXTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsSGVpZ2h0O1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5FbXBsb3llZSAmJiB0aGlzLml0ZW1DbGlja2VkLml0ZW1JZCA9PSB0aGlzLmVtcGxveWVlTGlzdFswXS5pdGVtSWQgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gMCAmJiB0aGlzLnByb2plY3RMaXN0ICYmIHRoaXMucHJvamVjdExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCAtIDE7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5wcm9qZWN0TGlzdFt0aGlzLnByb2plY3RJbmRleF07XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS03XCIpLnNjcm9sbEhlaWdodDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleC0tO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCAtPSA0NTtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFt0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleF07XG4gICAgfVxuICB9XG4gIGFycm93VXBFdmVudCgpIHtcbiAgICAvLyBpZiAoXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgIT0gdW5kZWZpbmVkIHx8XG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgIT0gbnVsbCB8fFxuICAgIC8vICAgdGhpcy5zZWFyY2hUZXh0ID09PSBcIlwiXG4gICAgLy8gKSB7XG4gICAgLy8gICByZXR1cm47XG4gICAgLy8gfSBcbiAgICBpZiAodGhpcy5zZWFyY2hCeVRleHQgJiYgdGhpcy5zZWFyY2hUZXh0KSB7XG4gICAgICB0aGlzLmFycm93VXBFdmVudEZvclNlYXJjaEJ5VGV4dCgpO1xuICAgIH1cbiAgICAvL0Zyb20gbWVudXNcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4LS07XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wIC09IDQ1O1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZFJvd0luZGV4XTtcbiAgICB9XG4gICAgLy9Gcm9tIHdvcmtzcGFjZXNcbiAgICBlbHNlIGlmIChcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiZcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgPT0gdGhpcy53b3Jrc3BhY2VzWzBdLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gMCAmJlxuICAgICAgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZFJvd0luZGV4XTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsSGVpZ2h0O1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLndzID4gMCkge1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCAtPSA0MTtcbiAgICAgIHRoaXMud3MtLTtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbdGhpcy53c107XG4gICAgfVxuICAgIC8vRnJvbSB3aWRnZXRzICAgIFxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy53ZCA+IDApIHtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgLT0gNDg7XG4gICAgICB0aGlzLndkLS07XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzW3RoaXMud2RdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLml0ZW1DbGlja2VkLndpZGdldElkID09IHRoaXMud2lkZ2V0c1swXS53aWRnZXRJZCAmJiB0aGlzLndkID09IDAgJiZcbiAgICAgIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XG4gICAgICB0aGlzLndzID0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDE7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMud3NdO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxIZWlnaHQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgPT0gdGhpcy53aWRnZXRzWzBdLndpZGdldElkICYmIHRoaXMud2QgPT0gMCAmJlxuICAgICAgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF07XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbEhlaWdodDtcbiAgICB9XG4gICAgLy9Gcm9tIEVtcGxveWVlcyAgIFxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPiAwKSB7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wIC09IDQ1O1xuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXgtLTtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFt0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgPT0gdGhpcy5lbXBsb3llZUxpc3RbMF0uZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gMCAmJlxuICAgICAgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcbiAgICAgIHRoaXMud2QgPSB0aGlzLndpZGdldHMubGVuZ3RoIC0gMTtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbdGhpcy53ZF07XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbEhlaWdodDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciA9PSB0aGlzLmVtcGxveWVlTGlzdFswXS5lbXBsb3llZU51bWJlciAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSAwICYmXG4gICAgICB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud2QgPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xuICAgICAgdGhpcy53cyA9IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsSGVpZ2h0O1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyID09IHRoaXMuZW1wbG95ZWVMaXN0WzBdLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IDAgJiZcbiAgICAgIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMud2QgPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZFJvd0luZGV4XTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsSGVpZ2h0O1xuICAgIH1cbiAgICAvL0Zyb20gV0kvQnVnICAgICAgICAgTkVFRCBUTyBETyBcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYylcbiAgICAgICYmIHRoaXMudXNlcnMgPiAwKSB7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wIC09IDQ1O1xuICAgICAgdGhpcy51c2Vycy0tO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFt0aGlzLnVzZXJzXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJlxuICAgICAgdGhpcy51c2VycyA9PSAwICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy53ZCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDE7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXhdO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxIZWlnaHQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiZcbiAgICAgIHRoaXMudXNlcnMgPT0gMCAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xuICAgICAgdGhpcy53ZCA9IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1t0aGlzLndkXTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsSGVpZ2h0O1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmXG4gICAgICB0aGlzLnVzZXJzID09IDAgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcbiAgICAgIHRoaXMud3MgPSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMTtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbdGhpcy53c107XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbEhlaWdodDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJlxuICAgICAgdGhpcy51c2VycyA9PSAwICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMud2QgPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZFJvd0luZGV4XTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsSGVpZ2h0O1xuICAgIH1cbiAgICAvL0Zyb20gZ29hbC9zcHJpbnRcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpXG4gICAgICAmJiB0aGlzLmdvYWxJbmRleCA+IDApIHtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgLT0gNDU7XG4gICAgICB0aGlzLmdvYWxJbmRleC0tO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbdGhpcy5nb2FsSW5kZXhdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJlxuICAgICAgdGhpcy5nb2FsSW5kZXggPT0gMCAmJiB0aGlzLnVzZXJTdG9yeUxpc3QgJiYgdGhpcy51c2VyU3RvcnlMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xuICAgICAgdGhpcy51c2VycyA9IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDE7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlMaXN0W3RoaXMudXNlcnNdO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxIZWlnaHQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmXG4gICAgICB0aGlzLmdvYWxJbmRleCA9PSAwICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy53ZCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDE7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXhdO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxIZWlnaHQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmXG4gICAgICB0aGlzLmdvYWxJbmRleCA9PSAwICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XG4gICAgICB0aGlzLndkID0gdGhpcy53aWRnZXRzLmxlbmd0aCAtIDE7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzW3RoaXMud2RdO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxIZWlnaHQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZXR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJlxuICAgICAgdGhpcy5nb2FsSW5kZXggPT0gMCAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud2QgPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xuICAgICAgdGhpcy53cyA9IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsSGVpZ2h0O1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJlxuICAgICAgdGhpcy5nb2FsSW5kZXggPT0gMCAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF07XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbEhlaWdodDtcbiAgICB9XG4gICAgLy9Gcm9tIHJlY2VudCBzZWFyY2hlc1xuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPiAwKSB7XG4gICAgICB0aGlzLnJzLS07XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1t0aGlzLnJzXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPT0gMCAmJlxuICAgICAgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy5ycyA9IG51bGw7XG4gICAgICB0aGlzLmdvYWxJbmRleCA9IHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoIC0gMTtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0W3RoaXMuZ29hbEluZGV4XTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsSGVpZ2h0O1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmXG4gICAgICB0aGlzLnVzZXJTdG9yeUxpc3QgJiYgdGhpcy51c2VyU3RvcnlMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xuICAgICAgdGhpcy51c2VycyA9IHRoaXMudXNlclN0b3J5TGlzdC5sZW5ndGggLSAxO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5TGlzdFt0aGlzLnVzZXJzXTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsSGVpZ2h0O1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmXG4gICAgICB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMud2QgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggLSAxO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0W3RoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4XTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsSGVpZ2h0O1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmXG4gICAgICB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xuICAgICAgdGhpcy53ZCA9IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1t0aGlzLndkXTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsSGVpZ2h0O1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmXG4gICAgICB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud2QgPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xuICAgICAgdGhpcy53cyA9IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsSGVpZ2h0O1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmXG4gICAgICB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF07XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbEhlaWdodDtcbiAgICB9XG5cblxuICAgIC8vIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPT0gMCAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbEhlaWdodDtcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoIC0gMTtcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXhdO1xuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xuICAgIC8vICAgdGhpcy53ZCA9IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxO1xuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53cyA9IG51bGw7XG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzW3RoaXMud2RdO1xuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xuICAgIC8vICAgdGhpcy53cyA9IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxO1xuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy50ID0gdGhpcy53ZCA9IG51bGw7XG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMud3NdO1xuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmIHRoaXMudG9vbHMgJiYgdGhpcy50b29scy5sZW5ndGggPiAwKSB7XG4gICAgLy8gICB0aGlzLnQgPSB0aGlzLnRvb2xzLmxlbmd0aCAtIDE7XG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndzID0gdGhpcy53ZCA9IG51bGw7XG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMudF07XG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaCAmJiB0aGlzLnJzID09IDAgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gbnVsbDtcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMudF07XG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmZ1bGxOYW1lICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IDAgJiYgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XG4gICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbEhlaWdodDtcbiAgICAvLyAgIHRoaXMud2QgPSA4O1xuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IG51bGw7XG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzW3RoaXMud2RdO1xuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5mdWxsTmFtZSAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSAwICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xuICAgIC8vICAgdGhpcy53cyA9IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxO1xuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy50ID0gdGhpcy53ZCA9IG51bGw7XG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMud3NdO1xuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5mdWxsTmFtZSAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSAwICYmIHRoaXMudG9vbHMgJiYgdGhpcy50b29scy5sZW5ndGggPiAwKSB7XG4gICAgLy8gICB0aGlzLnQgPSB0aGlzLnRvb2xzLmxlbmd0aCAtIDE7XG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndzID0gdGhpcy53ZCA9IG51bGw7XG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMudF07XG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmZ1bGxOYW1lICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IDAgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gbnVsbDtcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMudF07XG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud2QgPT0gMCAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcbiAgICAvLyAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsSGVpZ2h0O1xuICAgIC8vICAgdGhpcy53cyA9IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxO1xuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud2QgPSBudWxsO1xuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcbiAgICAvLyAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsSGVpZ2h0O1xuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkID09IDAgJiYgdGhpcy50b29scyAmJiB0aGlzLnRvb2xzLmxlbmd0aCA+IDApIHtcbiAgICAvLyAgIHRoaXMudCA9IHRoaXMudG9vbHMubGVuZ3RoIC0gMTtcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndzID0gdGhpcy53ZCA9IG51bGw7XG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMudF07XG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud2QgPT0gMCAmJiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xuICAgIC8vICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLndkID0gbnVsbDtcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMudF07XG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gMCAmJiB0aGlzLnRvb2xzICYmIHRoaXMudG9vbHMubGVuZ3RoID4gMCkge1xuICAgIC8vICAgdGhpcy50ID0gdGhpcy50b29scy5sZW5ndGggLSAxO1xuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud3MgPSB0aGlzLndkID0gbnVsbDtcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnRvb2xzW3RoaXMudF07XG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gMCAmJiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xuICAgIC8vICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLndkID0gbnVsbDtcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF07XG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnBlcm1pc3Npb24gJiYgdGhpcy50ID09IDAgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy53ZCA9IG51bGw7XG4gICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbEhlaWdodDtcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF07XG4gICAgLy8gfSBlbHNlIHtcbiAgICAvLyAgIGlmICh0aGlzLnJzICE9PSBudWxsICYmIHRoaXMucnMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnJzID4gMCkge1xuICAgIC8vICAgICB0aGlzLnJzLS07XG4gICAgLy8gICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzW3RoaXMucnNdO1xuICAgIC8vICAgICAvLyB0aGlzLmhpZ2hsaWdodChuZXh0cm93KTtcbiAgICAvLyAgIH1cbiAgICAvLyB9XG4gIH1cbiAgYXJyb3dMZWZ0RXZlbnRGb3JTZWFyY2hCeVRleHQoKSB7XG4gICAgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuUHJvamVjdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmIHRoaXMucHJvamVjdExpc3QgJiYgdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbFxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucHJvamVjdExpc3RbMF07XG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbFxuICAgICAgdGhpcy51c2VycyA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiYgdGhpcy5wcm9qZWN0TGlzdCAmJiB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtN1wiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5wcm9qZWN0TGlzdFswXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGxcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUgJiYgdGhpcy5wcm9qZWN0TGlzdCAmJiB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtN1wiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5wcm9qZWN0TGlzdFswXTtcbiAgICB9XG4gIH1cbiAgYXJyb3dMZWZ0RXZlbnQoKSB7XG4gICAgLy8gaWYgKFxuICAgIC8vICAgdGhpcy5zZWFyY2hUZXh0ICE9IHVuZGVmaW5lZCB8fFxuICAgIC8vICAgdGhpcy5zZWFyY2hUZXh0ICE9IG51bGwgfHxcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PT0gXCJcIlxuICAgIC8vICkge1xuICAgIC8vICAgcmV0dXJuO1xuICAgIC8vIH1cbiAgICBpZiAodGhpcy5zZWFyY2hCeVRleHQgJiYgdGhpcy5zZWFyY2hUZXh0KSB7XG4gICAgICB0aGlzLmFycm93TGVmdEV2ZW50Rm9yU2VhcmNoQnlUZXh0KCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvL0Zyb20gd29ya3NwYWNlc1xuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xuICAgIH1cbiAgICAvL2Zyb20gd2lkZ2V0c1xuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMud3MgPSAwO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzWzBdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gMDtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XG4gICAgfVxuICAgIC8vRnJvbSBlbXBsb3llZXNcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLndkID0gMDtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1swXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMud3MgPSAwO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzWzBdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gMDtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XG4gICAgfVxuICAgIC8vRnJvbSBXSS9CdWdcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYylcbiAgICAgICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcbiAgICB9XG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpXG4gICAgICAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy53ZCA9IDA7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYylcbiAgICAgICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLndzID0gMDtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1swXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKVxuICAgICAgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xuICAgIH1cbiAgICAvL0Zyb20gR29hbC9TcHJpbnRcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpXG4gICAgICAmJiB0aGlzLnVzZXJTdG9yeUxpc3QgJiYgdGhpcy51c2VyU3RvcnlMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy51c2VycyA9IDA7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeUxpc3RbMF07XG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludClcbiAgICAgICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcbiAgICB9XG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KVxuICAgICAgJiYgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMud2QgPSAwO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KVxuICAgICAgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMud3MgPSAwO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzWzBdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KVxuICAgICAgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xuICAgIH1cbiAgICAvL0Zyb20gcmVjZW50IHNlYXJjaGVzXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2hcbiAgICAgICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcbiAgICB9XG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2hcbiAgICAgICYmIHRoaXMudXNlclN0b3J5TGlzdCAmJiB0aGlzLnVzZXJTdG9yeUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLnVzZXJzID0gMDtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5TGlzdFswXTtcbiAgICB9XG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2hcbiAgICAgICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcbiAgICB9XG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2hcbiAgICAgICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLndkID0gMDtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1swXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoXG4gICAgICAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy53cyA9IDA7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaFxuICAgICAgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xuICAgIH1cbiAgfVxuICBhcnJvd1JpZ2h0RXZlbnRGb3JTZWFyY2hCeVRleHQoKSB7XG4gICAgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuUHJvamVjdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLnVzZXJzID0gMDtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuUHJvamVjdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuUHJvamVjdCAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XG4gICAgfVxuICB9XG4gIGFycm93UmlnaHRFdmVudCgpIHtcbiAgICAvLyBpZiAoXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgPT0gdW5kZWZpbmVkIHx8XG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgPT0gbnVsbCB8fFxuICAgIC8vICAgdGhpcy5zZWFyY2hUZXh0ID09PSBcIlwiXG4gICAgLy8gKSB7XG4gICAgLy8gICByZXR1cm47XG4gICAgLy8gfSBcbiAgICBpZiAodGhpcy5zZWFyY2hCeVRleHQgJiYgdGhpcy5zZWFyY2hUZXh0KSB7XG4gICAgICB0aGlzLmFycm93UmlnaHRFdmVudEZvclNlYXJjaEJ5VGV4dCgpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvL0Zyb20gbWVudXNcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnQgPSBudWxsO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLndkID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMud3MgPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1swXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMud2QgPSAwO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy50ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMucnMgPSAwO1xuICAgICAgdGhpcy53cyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcbiAgICB9XG4gICAgLy9Gcm9tIHdvcmtzcGFjZXNcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy53ZCA9IDA7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1swXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnVzZXJzID0gMDtcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMucnMgPSAwO1xuICAgICAgdGhpcy53cyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcbiAgICB9XG4gICAgLy9Gcm9tIHdpZGdldHNcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy51c2VycyA9IDA7XG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnJzID0gMDtcbiAgICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbMF07XG4gICAgfVxuICAgIC8vRnJvbSBFbXBsb3llZXNcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy51c2VycyA9IDA7XG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnJzID0gMDtcbiAgICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbMF07XG4gICAgfVxuICAgIC8vRnJvbSBXSS9CdWdcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYylcbiAgICAgICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYylcbiAgICAgICYmIHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnJzID0gMDtcbiAgICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbMF07XG4gICAgfVxuICAgIC8vRnJvbSBHb2FsL1NwcmludFxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50IHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbClcbiAgICAgICYmIHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnJzID0gMDtcbiAgICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbMF07XG4gICAgfVxuICB9XG5cbiAgb3BlbldvcmtzcGFjZUZvcm0oKSB7XG4gICAgdGhpcy5hZGRXb3JrU3BhY2VQb3BPdmVyLm9wZW4oKTtcbiAgICB0aGlzLmRpc3BsYXkgPSB0cnVlO1xuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xuICAgIHRoaXMuZ2V0QWxsUm9sZXMoKTtcbiAgfVxuXG4gIGdldEFsbFJvbGVzKCkge1xuICAgIHRoaXMuY29tbW9uU2VydmljZS5HZXRhbGxSb2xlcygpLnN1YnNjcmliZSgocmVzcG9uc2VEYXRhOiBhbnkpID0+IHtcbiAgICAgIHRoaXMucm9sZXNEcm9wRG93biA9IHJlc3BvbnNlRGF0YS5kYXRhO1xuICAgICAgdGhpcy5yb2xlc0Ryb3BEb3duLmZvckVhY2goKHApID0+IHtcbiAgICAgICAgY29uc3QgaWQgPSBwLnJvbGVJZC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBwLnJvbGVJZCA9IGlkO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLm5nRGVzdHJveWVkJC5uZXh0KCk7XG4gICAgdGhpcy5uZ0Rlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGNvbXBhcmVTZWxlY3RlZFJvbGVzRm4oKSB7IH1cbiAgY29tcGFyZUVkaXRTZWxlY3RlZFJvbGVzRm4oKSB7IH1cbiAgY29tcGFyZURlbGV0ZVNlbGVjdGVkUm9sZXNGbigpIHsgfVxuICB1cHNlcnRXb3Jrc3BhY2UoKSB7IH1cbiAgdG9nZ2xlQWxsUm9sZXNTZWxlY3RlZCgpIHsgfVxuICB0b2dnbGVFZGl0QWxsUm9sZXNTZWxlY3RlZCgpIHsgfVxuICB0b2dnbGVEZWxldGVBbGxSb2xlc1NlbGVjdGVkKCkgeyB9XG4gIGNsb3NlQWRkV29ya3NwYWNlRGlhbG9nKCkgeyB9XG59XG4iLCI8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cInZpc2libGVzXCIgbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51c1wiIGZ4SGlkZS5ndC14cyBmeFNob3c+XG4gIDxtYXQtaWNvbiBjbGFzcz1cIm5ld01lbnVcIj5tZW51PC9tYXQtaWNvbj5cbjwvYnV0dG9uPlxuPGRpdiBmeEZsZXggY2xhc3M9XCJuZXdMb2dvIGRlZmF1bHQtYmcgdG9wLWxvZ28tYmcgbmV3bWluaWxvZ28gem9vbS1pbWFnZS1ob3ZlciBjdXN0b20taGVhZGVyLWljb24tbW9iaWxlXCIgZnhIaWRlLmd0LXhzIGZ4U2hvdz5cbiAgPGltZyBzcmM9XCJ7e2NvbXBhbnlNaW5pTG9nb319XCIgYWx0PVwiXCIgaWQ9XCJtaW5pLWxvZ28tdG9wYmFyXCIgc3R5bGU9XCJ3aWR0aDozMHB4OyBoZWlnaHQ6MzBweDtcIlxuICAgIChjbGljayk9XCJnZXRBbGxNZW51SXRlbXMoKVwiIC8+XG48L2Rpdj5cbjxkaXYgZnhGbGV4IGNsYXNzPVwibmV3TG9nbyAgdG9wLWxvZ28tYmcgYXBwcy1idXR0b24gem9vbS1pbWFnZS1ob3ZlciBjdXN0b20taGVhZGVyLWljb25cIiBzdHlsZT1cImxlZnQ6IDBweDtcIiBmeEhpZGUgZnhTaG93Lmd0LXhzPlxuICA8aW1nIHNyYz1cInt7Y29tcGFueU1haW5Mb2dvfX1cIiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtsZWZ0OiAyMHB4O3Bvc2l0aW9uOiByZWxhdGl2ZTtcIiBpZD1cIm1haW4tbG9nby10b3BiYXJcIlxuICAgIGNsYXNzPVwiaW1nLWhlaWdodC1tYWluLWxvZ28tdG9wYmFyXCIgKGNsaWNrKT1cImdldEFsbE1lbnVJdGVtcygpXCIgLz5cbjwvZGl2PlxuXG48IS0tIFxuPG1hdC1tZW51ICNtZW51cz1cIm1hdE1lbnVcIiBjbGFzcz1cImZpbHRlci1wYW5lbFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZihtZW51SXRlbXMkIHwgYXN5bmMpXCI+XG4gICAgPGRpdiAqbmdJZj1cIml0ZW0udHlwZSA9PT0gJ2Ryb3BEb3duJ1wiPlxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIFttYXRNZW51VHJpZ2dlckZvcl09XCJsZXZlbFR3b01lbnVcIiAobW91c2VvdmVyKT1cIm9wZW5MZXZlbDJNZW51KGl0ZW0uc3RhdGUsaXRlbS5zdWIpXCI+XG4gICAgICAgIDxtYXQtaWNvbj57eyBpdGVtLmljb24gfX08L21hdC1pY29uPnt7IGl0ZW0ubWVudSB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVsc319XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiaXRlbS50eXBlID09ICdsaW5rJ1wiPlxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIHJvdXRlckxpbms9XCIve3sgaXRlbS5zdGF0ZSB9fVwiPlxuICAgICAgICA8bWF0LWljb24+e3sgaXRlbS5pY29uIH19PC9tYXQtaWNvbj57eyBpdGVtLm1lbnUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHN9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9tYXQtbWVudT5cblxuPG1hdC1tZW51ICNsZXZlbFR3b01lbnU9XCJtYXRNZW51XCI+XG4gIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW1MdmwyIG9mIHN1YkxldmVsc1wiPlxuICAgIDxkaXYgKm5nSWY9XCJpdGVtTHZsMi50eXBlID09PSAnZHJvcERvd24nXCI+XG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW21hdE1lbnVUcmlnZ2VyRm9yXT1cImxldmVsVGhyZWVNZW51XCJcbiAgICAgICAgKG1vdXNlb3Zlcik9XCJvcGVuTGV2ZWwzTWVudShzdGF0ZUx2bDEsaXRlbUx2bDIuc3RhdGUsaXRlbS5zdWIpXCI+XG4gICAgICAgIHt7IGl0ZW1MdmwyLm1lbnUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHN9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIml0ZW1MdmwyLnR5cGUgPT0gJ2FwcGxpY2F0aW9ubGluaydcIj5cbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSByb3V0ZXJMaW5rPVwiL3t7IGl0ZW1MdmwyLnN0YXRlIH19XCI+XG4gICAgICAgIHt7IGl0ZW1MdmwyLm1lbnUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHN9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIml0ZW1MdmwyLnR5cGUgPT0gJ2xpbmsnXCI+XG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gcm91dGVyTGluaz1cIi97e3N0YXRlTHZsMX19L3t7IGl0ZW1MdmwyLnN0YXRlIH19XCI+XG4gICAgICAgIHt7IGl0ZW1MdmwyLm1lbnUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHN9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9tYXQtbWVudT5cblxuPG1hdC1tZW51ICNsZXZlbFRocmVlTWVudT1cIm1hdE1lbnVcIj5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbUx2bDMgb2Ygc3ViTGV2ZWxzRm9yTGV2ZWwyXCI+XG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIHJvdXRlckxpbms9XCIve3sgbGV2ZWwzTGluazEgfX0ve3sgbGV2ZWwzTGluazIgfX0ve3tpdGVtTHZsMy5zdGF0ZX19XCI+XG4gICAgICB7eyBpdGVtTHZsMy5tZW51IHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L21hdC1tZW51PiAtLT5cblxuPG1hdC1tZW51ICNtZW51cz1cIm1hdE1lbnVcIiB5UG9zaXRpb249XCJiZWxvd1wiIGNsYXNzPVwiZmlsdGVyLXBhbmVsXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gIHN0eWxlPVwiaGVpZ2h0OmF1dG9cIj5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiPlxuICAgIDxkaXYgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ2xpbmsnIHx8IGl0ZW0udHlwZSA9PSAnYXBwbGljYXRpb25saW5rJ1wiPlxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIHJvdXRlckxpbms9XCIve3sgaXRlbS5zdGF0ZSB9fVwiIChjbGljayk9XCJzZWxlY3RNZW51KGl0ZW0sJGV2ZW50KVwiXG4gICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJpdGVtLWFjdGl2ZVwiPlxuICAgICAgICA8bWF0LWljb24+e3sgaXRlbS5pY29uIH19PC9tYXQtaWNvbj57eyBpdGVtLm1lbnUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHN9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9tYXQtbWVudT5cblxuXG48ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO1xubGVmdDogOTAlXCIgY2xhc3M9XCJzdG9yZS1pY29tIG1hdC1pY29uLWJ1dHRvbiBzdG9yZS1pY29uLWNvbnRhaW5lclwiICpuZ0lmPVwiY2FuQWNjZXNzX2ZlYXR1cmVfRHJhZ0FwcHNcIlxuICBbbmdDbGFzc109XCJ0aGlzLnJvdXRlcy51cmwuaW5jbHVkZXMoJy9hcHAtc3RvcmUvd2lkZ2V0cycpID8gJ2ljb25fYWN0aXZlX2NsYXNzJyA6ICcnXCI+XG4gIDwhLS0gPGZhLWljb24gaWNvbj1cInN0b3JlXCIgc3R5bGU9XCJmb250LXNpemU6IDIwcHggIWltcG9ydGFudDtcIiBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCJcbiAgICBtYXRUb29sdGlwPVwie3sgJ0FQUC5BUFBTVE9SRScgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJvcGVuQXBwcygpXCJcbiAgICBjbGFzcz1cIm1hdC1jb2xvci1hY2NlbnQgY3Vyc29yLXBvaW50ZXIgdGhlbWUtbmF2YmFyLWljb24tY29sb3JcIj48L2ZhLWljb24+IC0tPlxuICA8ZmEtaWNvbiBpY29uPVwic3RvcmVcIiBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCJcbiAgICBtYXRUb29sdGlwPVwie3sgJ0FQUC5BUFBTVE9SRScgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJvcGVuQXBwcygpXCJcbiAgICBjbGFzcz1cIm1hdC1jb2xvci1hY2NlbnQgY3Vyc29yLXBvaW50ZXIgdGhlbWUtbmF2YmFyLWljb24tY29sb3Igc3RvcmUtaWNvbi1mYVwiPjwvZmEtaWNvbj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiU2VhcmNoQm94IGRyb3Bkb3duXCIgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcIj5cbiAgPHNwYW4gY2xhc3M9XCJtYXQtY29sb3ItYWNjZW50IGlucHV0LWdyb3VwLWFkZG9uXCIgKm5nSWY9XCJzZWFyY2hCeVRleHRcIj5AICZuYnNwOzwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJtYXQtY29sb3ItYWNjZW50IGlucHV0LWdyb3VwLWFkZG9uXCIgKm5nSWY9XCJzZWFyY2hCeUlkXCI+IyAmbmJzcDs8L3NwYW4+XG4gIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiU2VhcmNoQm94LWlucHV0IGRyb3BidG5cIiBwbGFjZWhvbGRlcj1cInt7ICdBUFAuU1RBUlRIRVJFT1JDTElDS0NPTlRST0wrUScgfCB0cmFuc2xhdGV9fVwiXG4gICAgW2NsYXNzLmhpZGUtcGxhY2Vob2xkZXJdPVwic2VhcmNoQnlUZXh0IHx8IHNlYXJjaEJ5SWRcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAjZWxlbWVudCBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRcIlxuICAgIChpbnB1dCk9XCJTZWFyY2hJdGVtKCRldmVudClcIiAoY2xpY2spPVwiU2VhcmNoSXRlbSgkZXZlbnQpXCIgKGZvY3VzKT1cIm9uRm9jdXMoKVwiIChibHVyKT1cIlNldCgpO1wiXG4gICAgKGtleWRvd24uZW50ZXIpPVwibmF2aWdhdGUoJGV2ZW50LCBpdGVtQ2xpY2tlZClcIiAoa2V5ZG93bi5hcnJvd2Rvd24pPVwiYXJyb3dEb3duRXZlbnQoKVwiXG4gICAgKGtleWRvd24uYXJyb3d1cCk9XCJhcnJvd1VwRXZlbnQoKVwiIChrZXlkb3duLmFycm93bGVmdCk9XCJhcnJvd0xlZnRFdmVudCgpXCIgKGtleWRvd24uYXJyb3dyaWdodCk9XCJhcnJvd1JpZ2h0RXZlbnQoKVwiPlxuXG4gIDxidXR0b24gY2xhc3M9XCJTZWFyY2hCb3gtYnV0dG9uXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJjbG9zZV9pY29uX3NlYXJjaFwiPlxuICAgICAgPHNwYW4gKm5nSWY9XCIhc2VhcmNoVGV4dFwiPjwvc3Bhbj5cbiAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInNlYXJjaFRleHRcIiBjbGFzcz1cImljb24tYnV0dG9uIG1yLTA1XCIgYXJpYS1oaWRkZW49XCJmYWxzZVwiIChjbGljayk9XCJjbG9zZVNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgc3R5bGU9XCJjdXJzb3I6cG9pbnRlclwiPlxuICAgICAgICBjbG9zZTwvbWF0LWljb24+XG4gICAgPC9zcGFuPlxuICAgIDxtYXQtaWNvbiBjbGFzcz1cIlNlYXJjaEJveC1pY29uIGljb24tY29sb3IgbXQtbGctbjIgbXItMDUgaW5mby1jbGFzcyBpbmZvLWljb24tY3VzdG9tXCIgW3NhdFBvcG92ZXJBbmNob3JGb3JdPVwicFwiXG4gICAgICAjaW5mb1BvcE92ZXI9XCJzYXRQb3BvdmVyQW5jaG9yXCIgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cIm9wZW5JbmZvKGluZm9Qb3BPdmVyKVwiPmluZm88L21hdC1pY29uPlxuICAgIDxtYXQtaWNvbiBjbGFzcz1cIlNlYXJjaEJveC1pY29uIGljb24tY29sb3IgbXQtbGctbjIgc2VhcmNoLWljb24tY3VzdG9tXCIgY29sb3I9XCJwcmltYXJ5XCI+c2VhcmNoPC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG4gIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1jb250ZW50IGRyb3Bkb3duLWNvbnRlbnQtbmF2YmFyIHNlYXJjaC1kcm9wZG93bi1jdXN0b20tbW9kYWxcIiBbbmdDbGFzc109XCJ7J2QtYmxvY2snIDogZGlzcGxheSwgICdkLW5vbmUnIDogIWRpc3BsYXl9XCI+XG4gICAgPG1hdC1wcm9ncmVzcy1iYXIgY29sb3I9XCJwcmltYXJ5XCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIlxuICAgICAgKm5nSWY9XCJsb2FkaW5nU2VhcmNoTWVudURhdGEgfHwgcmVjZW50U2VhcmNoZXNmZXRjaEluUHJvZ3Jlc3MgfHwgd2lkZ2V0c2ZldGNoSW5Qcm9ncmVzc1wiPlxuICAgIDwvbWF0LXByb2dyZXNzLWJhcj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IHJvd3NlbGVjdCBjdXN0b20tcm93LXNlbGVjdG9yXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGNvbHVtbnNlbGVjdC1uZXh0IHBsLTA1IGN1c3RvbS1zZWFyY2gtbW9kYWwtYXBwcy1jb250YWluZXItbWFpblwiICpuZ0lmPVwiaXRlbXMgJiYgKGl0ZW1zLmxlbmd0aD4wKSAmJiAhKHNlYXJjaEJ5SWQgfHwgc2VhcmNoQnlUZXh0KVwiPlxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJpbi1oZWFkZXJcIj57eyAnU0hFTEwuQVBQTElDQVRJT05TJyB8IHRyYW5zbGF0ZX19PC9kaXY+IC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW4taGVhZGVyIGN1c3RvbS1zZWFyY2gtbW9kYWwtYXBwcy1oZWFkZXJcIj5cbiAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgY2xhc3M9XCJsdWNpZGUgbHVjaWRlLWZpbGUtdGV4dCB3LTQgaC00XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PHBhdGggZD1cIk0xNSAySDZhMiAyIDAgMCAwLTIgMnYxNmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWN1pcIj48L3BhdGg+PHBhdGggZD1cIk0xNCAydjRhMiAyIDAgMCAwIDIgMmg0XCI+PC9wYXRoPjxwYXRoIGQ9XCJNMTAgOUg4XCI+PC9wYXRoPjxwYXRoIGQ9XCJNMTYgMTNIOFwiPjwvcGF0aD48cGF0aCBkPVwiTTE2IDE3SDhcIj48L3BhdGg+PC9zdmc+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tc2VhcmNoLW1vZGFsLWFwcHMtaGVhZGVyLXRleHRcIj57eyAnU0hFTEwuQVBQTElDQVRJT05TJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gPGRpdiBpZD1cInN0eWxlLTFcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7IGhlaWdodDogNDQ1cHggIWltcG9ydGFudDsgb3ZlcmZsb3c6IGF1dG87XCIgY2xhc3M9XCJjdXN0b20tc2VhcmNoLW1vZGFsLWFwcHMtY29udGFpbmVyXCI+IC0tPlxuICAgICAgICA8ZGl2IGlkPVwic3R5bGUtMVwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDtcIiBjbGFzcz1cImN1c3RvbS1zZWFyY2gtbW9kYWwtYXBwcy1jb250YWluZXJcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbXMgJiYgaXRlbXMubGVuZ3RoPjBcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXM7IGxldCBpID0gaW5kZXg7XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwic2VsZWN0ZWRSb3dJbmRleCA9PSBpID8gJyNmMWY1ZjknIDogJ3doaXRlJ1wiIGNsYXNzPVwiY3VzdG9tLXNlYXJjaC1tb2RhbC1hcHBzLW1haW5cIj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0udHlwZSA9PSAnbGluaycgfHwgaXRlbS50eXBlID09ICdhcHBsaWNhdGlvbmxpbmsnXCIgY2xhc3M9XCJjdXN0b20tc2VhcmNoLW1vZGFsLWFwcHMtY29udGVudFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSByb3V0ZXJMaW5rPVwiL3t7IGl0ZW0uc3RhdGUgfX1cIiBjbGFzcz1cImN1c3RvbS1zZWFyY2gtbW9kYWwtYXBwcy1idG5cIlxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ZWRSb3dJbmRleCA9PSBpID8gJ2NvbG9yLXRleHQnIDogJ2NvbG9yLXRleHQxJ1wiXG4gICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cInNlbGVjdEFkaW1uVG9vbChpdGVtLnN0YXRlLCAkZXZlbnQsIGl0ZW0pXCIgcm91dGVyTGlua0FjdGl2ZT1cIml0ZW0tYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJ7ZXhhY3Q6XG4gICAgICAgICAgICAgICAgICAgIHRydWV9XCIgbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiXG4gICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3sgdHJhbnNsYXRlYXBwbGljYXRpb25uYW1lKGl0ZW0ubWVudSB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVscyl9fVwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbi1jb2xvciBjdXN0b20tc2VhcmNoLW1vZGFsLWFwcHMtaWNvblwiIFtuZ0NsYXNzXT1cInNlbGVjdGVkUm93SW5kZXggPT0gaSA/ICdjb2xvci10ZXh0JyA6ICdjb2xvci10ZXh0MSdcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5pY29uIH19PC9tYXQtaWNvbj48c3BhblxuICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInRyYW5zbGF0ZWFwcGxpY2F0aW9ubmFtZShpdGVtLm1lbnUpIHwgIHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVscyB8IGhpZ2hMaWdodFRleHQgOiBzZWFyY2hUZXh0XCIgY2xhc3M9XCJjdXN0b20tc2VhcmNoLW1vZGFsLWFwcHMtdGV4dFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBwbC0wNVwiICpuZ0lmPVwiIShzZWFyY2hCeUlkIHx8IHNlYXJjaEJ5VGV4dClcIj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uc2VsZWN0LW5leHQgbWwtMCBjdXN0b20tc2VhcmNoLW1vZGFsLWRhc2hib2FyZC1jb250YWluZXItbWFpblwiICpuZ0lmPVwid29ya3NwYWNlcyAmJiAod29ya3NwYWNlcy5sZW5ndGg+MClcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW4taGVhZGVyIGN1c3RvbS1zZWFyY2gtbW9kYWwtZGFzaGJvYXJkLWhlYWRlclwiPlxuICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIGNsYXNzPVwibHVjaWRlIGx1Y2lkZS1sYXlvdXQtZGFzaGJvYXJkIHctNCBoLTRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48cmVjdCB3aWR0aD1cIjdcIiBoZWlnaHQ9XCI5XCIgeD1cIjNcIiB5PVwiM1wiIHJ4PVwiMVwiPjwvcmVjdD48cmVjdCB3aWR0aD1cIjdcIiBoZWlnaHQ9XCI1XCIgeD1cIjE0XCIgeT1cIjNcIiByeD1cIjFcIj48L3JlY3Q+PHJlY3Qgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiOVwiIHg9XCIxNFwiIHk9XCIxMlwiIHJ4PVwiMVwiPjwvcmVjdD48cmVjdCB3aWR0aD1cIjdcIiBoZWlnaHQ9XCI1XCIgeD1cIjNcIiB5PVwiMTZcIiByeD1cIjFcIj48L3JlY3Q+PC9zdmc+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1zZWFyY2gtbW9kYWwtZGFzaGJvYXJkLWhlYWRlci10ZXh0XCI+e3sgJ1NIRUxMLkRBU0hCT0FSRFMnIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwicGx1cy1zcXVhcmVcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNhbkFjY2Vzc19mZWF0dXJlX0FkZERhc2hib2FyZFwiIG1hdFRvb2x0aXA9XCJ7eyAnQVBQLkFERERBU0hCT0FSRCcgfCB0cmFuc2xhdGV9fVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJpbml0aWFsaXplV29ya3NwYWNlRm9ybSgpO29wZW5Xb3Jrc3BhY2VGb3JtKCk7XCIgY2xhc3M9XCJtYXQtY29sb3ItYWNjZW50IGN1cnNvci1wb2ludGVyIGN1c3RvbS1zZWFyY2gtbW9kYWwtZGFzaGJvYXJkLWhlYWRlci1hZGQtaWNvblwiXG4gICAgICAgICAgICAgIFtzYXRQb3BvdmVyQW5jaG9yRm9yXT1cImFkZFdvcmtzcGFjZVwiPlxuICAgICAgICAgICAgPC9mYS1pY29uPiBcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIDxkaXYgaWQ9XCJzdHlsZS0yXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OyBoZWlnaHQ6IDQ0NXB4ICFpbXBvcnRhbnQ7IG92ZXJmbG93OiBhdXRvO1wiIGNsYXNzPVwiY3VzdG9tLXNlYXJjaC1tb2RhbC1kYXNoYm9hcmQtY29udGFpbmVyXCI+IC0tPlxuICAgICAgICAgIDxkaXYgaWQ9XCJzdHlsZS0yXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1wiIGNsYXNzPVwiY3VzdG9tLXNlYXJjaC1tb2RhbC1kYXNoYm9hcmQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya3NwYWNlcyAmJiB3b3Jrc3BhY2VzLmxlbmd0aD4wXCI+XG4gICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHdjIG9mIHdvcmtzcGFjZXM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIndzID09IGkgPyAnI2YxZjVmOScgOiAnd2hpdGUnXCIgY2xhc3M9XCJzY3JvbGwgY3VzdG9tLXNlYXJjaC1tb2RhbC1kYXNoYm9hcmQtbWFpblwiICN3b3Jrc3BhY2VFbGVtZW50PlxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAobW91c2Vkb3duKT1cInNlbGVjdE1lbnUod2MsJGV2ZW50KVwiIGNsYXNzPVwiY3VzdG9tLXNlYXJjaC1tb2RhbC1kYXNoYm9hcmQtYnRuXCJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIndzID09IGkgPyAnY29sb3ItdGV4dCcgOiAnY29sb3ItdGV4dDEnXCIgKGNsaWNrKT1cIm5hdmlnYXRlVG9Vcmwod2Mud29ya3NwYWNlSWQpXCJcbiAgICAgICAgICAgICAgICAgIHJvdXRlckxpbms9XCIvZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL3t7IHdjLndvcmtzcGFjZUlkIH19XCIgcm91dGVyTGlua0FjdGl2ZT1cIml0ZW0tYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIiBtYXRUb29sdGlwPVwie3t3Yy53b3Jrc3BhY2VOYW1lfX1cIj5cbiAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBjbGFzcz1cImx1Y2lkZSBsdWNpZGUtbGF5b3V0LWRhc2hib2FyZCB3LTQgaC00XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PHJlY3Qgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiOVwiIHg9XCIzXCIgeT1cIjNcIiByeD1cIjFcIj48L3JlY3Q+PHJlY3Qgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiNVwiIHg9XCIxNFwiIHk9XCIzXCIgcng9XCIxXCI+PC9yZWN0PjxyZWN0IHdpZHRoPVwiN1wiIGhlaWdodD1cIjlcIiB4PVwiMTRcIiB5PVwiMTJcIiByeD1cIjFcIj48L3JlY3Q+PHJlY3Qgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiNVwiIHg9XCIzXCIgeT1cIjE2XCIgcng9XCIxXCI+PC9yZWN0Pjwvc3ZnPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJ3Yy53b3Jrc3BhY2VOYW1lIHwgaGlnaExpZ2h0VGV4dCA6IHNlYXJjaFRleHQgXCIgY2xhc3M9XCJjdXN0b20tc2VhcmNoLW1vZGFsLWRhc2hib2FyZC10ZXh0XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGNvbHVtbnNlbGVjdC1hcHBzIG1sLTBcIiAqbmdJZj1cIndpZGdldHMgJiYgd2lkZ2V0cy5sZW5ndGg+MCAgJiYgIShzZWFyY2hCeUlkIHx8IHNlYXJjaEJ5VGV4dClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImluLWhlYWRlclwiPnt7ICdTSEVMTC5GQVZPVVJJVEVBUFBTJyB8IHRyYW5zbGF0ZX19PC9kaXY+XG4gICAgICAgIDxkaXYgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OyBoZWlnaHQ6IDQ0NXB4ICFpbXBvcnRhbnQ7IG92ZXJmbG93OiBhdXRvO1wiIGlkPVwic3R5bGUtM1wiPlxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHdpZGdldCBvZiB3aWRnZXRzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIndkID09IGkgPyB0aGVtZUJhc2VDb2xvciA6ICd3aGl0ZSdcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSByb3V0ZXJMaW5rQWN0aXZlPVwiaXRlbS1hY3RpdmVcIiBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwie2V4YWN0OlxuICAgICAgICAgIHRydWV9XCIgcm91dGVyTGluaz1cIi9kYXNoYm9hcmQtbWFuYWdlbWVudC93aWRnZXRzL3t7IHdpZGdldC53aWRnZXRJZCB9fVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIndkID09IGkgPyAnY29sb3ItdGV4dCcgOiAnY29sb3ItdGV4dDEnXCIgKG1vdXNlZG93bik9XCJPblNlbGVjdCh3aWRnZXQsJGV2ZW50KVwiXG4gICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIiBtYXRUb29sdGlwPVwie3t3aWRnZXQud2lkZ2V0TmFtZSB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVsc319XCI+XG4gICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwid2lkZ2V0LndpZGdldE5hbWUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHMgfCBoaWdoTGlnaHRUZXh0IDogc2VhcmNoVGV4dFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uc2VsZWN0LW5leHQgbWwtMFwiICpuZ0lmPVwicHJvamVjdExpc3QgJiYgcHJvamVjdExpc3QubGVuZ3RoPjAgJiYgc2VhcmNoVGV4dCAmJiBzZWFyY2hCeVRleHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImluLWhlYWRlclwiPlByb2plY3RzPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxcIiBpZD1cInN0eWxlLTdcIlxuICAgICAgICAgIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDsgaGVpZ2h0OiA0NDVweCAhaW1wb3J0YW50OyBvdmVyZmxvdzogYXV0bztcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwcm9qZWN0IG9mIHByb2plY3RMaXN0OyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cInByb2plY3RJbmRleCA9PSBpID8gdGhlbWVCYXNlQ29sb3IgOiAnd2hpdGUnXCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gcm91dGVyTGlua0FjdGl2ZT1cIml0ZW0tYWN0aXZlXCIgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cIntleGFjdDpcbiAgICAgICB0cnVlfVwiIFtuZ0NsYXNzXT1cInByb2plY3RJbmRleCA9PSBpID8gJ2NvbG9yLXRleHQnIDogJ2NvbG9yLXRleHQxJ1wiXG4gICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25Qcm9qZWN0U2VsZWN0KHByb2plY3QsJGV2ZW50KVwiIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIlxuICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3twcm9qZWN0Lml0ZW1OYW1lIHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX1cIj5cbiAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJwcm9qZWN0Lml0ZW1OYW1lIHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzIHwgaGlnaExpZ2h0VGV4dCA6IHNlYXJjaFRleHRcIj48L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbnNlbGVjdC1uZXh0IG1sLTBcIlxuICAgICAgICAqbmdJZj1cInVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGg+MCAmJiBzZWFyY2hUZXh0ICYmIHNlYXJjaEJ5VGV4dFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW4taGVhZGVyXCIgKm5nSWY9XCJpc0VuYWJsZUJ1Z0JvYXJkXCI+e3sgJ1NIRUxMLldJQlVHJyB8IHRyYW5zbGF0ZX19PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbi1oZWFkZXJcIiAqbmdJZj1cIiFpc0VuYWJsZUJ1Z0JvYXJkXCI+e3sgJ1NIRUxMLldJJ3wgdHJhbnNsYXRlfX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbFwiIGlkPVwic3R5bGUtNVwiXG4gICAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OyBoZWlnaHQ6IDQ0NXB4ICFpbXBvcnRhbnQ7IG92ZXJmbG93OiBhdXRvO1wiPlxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHVzZXJTdG9yeSBvZiB1c2VyU3RvcnlTZWFyY2hMaXN0OyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cInVzZXJzID09IGkgPyB0aGVtZUJhc2VDb2xvciA6ICd3aGl0ZSdcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSByb3V0ZXJMaW5rQWN0aXZlPVwiaXRlbS1hY3RpdmVcIiBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwie2V4YWN0OlxuICAgICAgICAgdHJ1ZX1cIiBbbmdDbGFzc109XCJ1c2VycyA9PSBpID8gJ2NvbG9yLXRleHQnIDogJ2NvbG9yLXRleHQxJ1wiIChtb3VzZWRvd24pPVwiT25Vc2VyU3RvcnlTZWxlY3QodXNlclN0b3J5LCRldmVudClcIlxuICAgICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCIgbWF0VG9vbHRpcD1cInt7dXNlclN0b3J5Lml0ZW1OYW1lIHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX1cIj5cbiAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJ1c2VyU3RvcnkuaXRlbU5hbWUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHMgfCBoaWdoTGlnaHRUZXh0IDogc2VhcmNoVGV4dFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5zZWxlY3QtbmV4dCBtbC0wXCJcbiAgICAgICAgKm5nSWY9XCJnb2FsU2VhcmNoTGlzdCAmJiBnb2FsU2VhcmNoTGlzdC5sZW5ndGg+MCAmJiBzZWFyY2hUZXh0ICYmIHNlYXJjaEJ5VGV4dFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW4taGVhZGVyXCI+e3sgJ1NIRUxMLkdPQUxTUFJJTlQnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxcIiBpZD1cInN0eWxlLTZcIlxuICAgICAgICAgIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDsgaGVpZ2h0OiA0NDVweCAhaW1wb3J0YW50OyBvdmVyZmxvdzogYXV0bztcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBnb2FsIG9mIGdvYWxTZWFyY2hMaXN0OyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImdvYWxJbmRleCA9PSBpID8gdGhlbWVCYXNlQ29sb3IgOiAnd2hpdGUnXCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gcm91dGVyTGlua0FjdGl2ZT1cIml0ZW0tYWN0aXZlXCIgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cIntleGFjdDpcbiAgICAgICAgIHRydWV9XCIgW25nQ2xhc3NdPVwiZ29hbEluZGV4ID09IGkgPyAnY29sb3ItdGV4dCcgOiAnY29sb3ItdGV4dDEnXCIgKG1vdXNlZG93bik9XCJPbkdvYWxTZWxlY3QoZ29hbCwkZXZlbnQpXCJcbiAgICAgICAgICAgICAgbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiIG1hdFRvb2x0aXA9XCJ7e2dvYWwuaXRlbU5hbWUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHN9fVwiPlxuICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImdvYWwuaXRlbU5hbWUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHMgfCBoaWdoTGlnaHRUZXh0IDogc2VhcmNoVGV4dFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGNvbHVtbnNlbGVjdC1hcHBzIG1sLTBcIlxuICAgICAgICAqbmdJZj1cIihlbXBsb3llZUxpc3QgJiYgZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApICYmIHNlYXJjaFRleHQgJiYgc2VhcmNoQnlUZXh0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbi1oZWFkZXJcIj5FbXBsb3llZXM8L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cInN0eWxlLTRcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7IGhlaWdodDogNDQ1cHggIWltcG9ydGFudDsgb3ZlcmZsb3c6IGF1dG87XCI+XG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZW1wbG95ZWUgb2YgZW1wbG95ZWVMaXN0OyBsZXQgaSA9IGluZGV4XCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcIlxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwic2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IGkgPyB0aGVtZUJhc2VDb2xvciA6ICd3aGl0ZSdcIiAjd29ya3NwYWNlRWxlbWVudD5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAobW91c2Vkb3duKT1cInNlbGVjdEVtcGxveWVlKGVtcGxveWVlLCRldmVudClcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gaSA/ICdjb2xvci10ZXh0JyA6ICdjb2xvci10ZXh0MSdcIlxuICAgICAgICAgICAgICByb3V0ZXJMaW5rPVwiL2Rhc2hib2FyZC9wcm9maWxlL3t7IGVtcGxveWVlLml0ZW1JZCB9fS9vdmVydmlld1wiIHJvdXRlckxpbmtBY3RpdmU9XCJpdGVtLWFjdGl2ZVwiXG4gICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIiBtYXRUb29sdGlwPVwie3tlbXBsb3llZS5pdGVtTmFtZX19XCI+XG4gICAgICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWF2YXRhciBbbmFtZV09XCJlbXBsb3llZS5pdGVtTmFtZSB8IHJlbW92ZVNwZWNpYWxDaGFyYWN0ZXJzXCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiXG4gICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3sgZW1wbG95ZWUuaXRlbU5hbWUgfX1cIiBbc3JjXT1cImVtcGxveWVlLnByb2ZpbGVJbWFnZSB8IGZldGNoU2l6ZWRBbmRDYWNoZWRJbWFnZTogJzIwJzonJ1wiXG4gICAgICAgICAgICAgICAgICBbaXNSb3VuZF09XCJ0cnVlXCIgc2l6ZT1cIjIwXCIgKGNsaWNrKT1cInByb2ZpbGVQYWdlKGVtcGxveWVlLnVzZXJJZCk7JGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWF2YXRhcj4gXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTA1XCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImVtcGxveWVlLml0ZW1OYW1lIHwgaGlnaExpZ2h0VGV4dCA6IHNlYXJjaFRleHRcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gY29sdW1uc2VsZWN0LWFwcHMgbWwtMCBjdXN0b20tc2VhcmNoLW1vZGFsLXJlY2VudHMtY29udGFpbmVyLW1haW5cIlxuICAgICAgICAqbmdJZj1cInJlY2VudFNlYXJjaGVzICYmIChyZWNlbnRTZWFyY2hlcy5sZW5ndGg+MCkgICYmICEoc2VhcmNoQnlJZCB8fCBzZWFyY2hCeVRleHQpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbi1oZWFkZXIgY3VzdG9tLXNlYXJjaC1tb2RhbC1yZWNlbnRzLWhlYWRlclwiPlxuICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBjbGFzcz1cImx1Y2lkZSBsdWNpZGUtY2xvY2sgdy00IGgtNFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIj48L2NpcmNsZT48cG9seWxpbmUgcG9pbnRzPVwiMTIgNiAxMiAxMiAxNiAxNFwiPjwvcG9seWxpbmU+PC9zdmc+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tc2VhcmNoLW1vZGFsLXJlY2VudHMtaGVhZGVyLXRleHRcIj57eyAnU0hFTEwuUkVDRU5UU0VBUkNIUycgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gPGRpdiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7IGhlaWdodDogNDQ1cHggIWltcG9ydGFudFwiIGNsYXNzPVwiY3VzdG9tLXNlYXJjaC1tb2RhbC1yZWNlbnRzLWNvbnRhaW5lclwiPiAtLT5cbiAgICAgICAgPGRpdiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XCIgY2xhc3M9XCJjdXN0b20tc2VhcmNoLW1vZGFsLXJlY2VudHMtY29udGFpbmVyXCI+XG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2VhcmNoIG9mIHJlY2VudFNlYXJjaGVzIHwgc2xpY2U6MDo5IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwicnMgPT0gaSA/ICcjZjFmNWY5JyA6ICd3aGl0ZSdcIiBjbGFzcz1cInNjcm9sbCBjdXN0b20tc2VhcmNoLW1vZGFsLXJlY2VudHMtbWFpblwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIGNsYXNzPVwiY3VzdG9tLXNlYXJjaC1tb2RhbC1yZWNlbnRzLWJ0blwiIFtuZ0NsYXNzXT1cInJzID09IGkgPyAnY29sb3ItdGV4dCcgOiAnY29sb3ItdGV4dDEnXCJcbiAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJzZWFyY2hUZXh0PXNlYXJjaC5yZWNlbnRTZWFyY2g7U2VhcmNoUmVjZW50SXRlbShzZWFyY2gsJGV2ZW50KVwiXG4gICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIiBtYXRUb29sdGlwPVwie3tzZWFyY2gucmVjZW50U2VhcmNoIHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX0gXG4gICAgICAgICAgICAgICh7eyBjb252ZXJ0VG9Mb2NhbFRpbWUoc2VhcmNoLmNyZWF0ZWREYXRlVGltZSkgfCB0aW1lYWdvIH19KVwiPlxuICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgY2xhc3M9XCJsdWNpZGUgbHVjaWRlLWNsb2NrIHctNCBoLTQgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiPjwvY2lyY2xlPjxwb2x5bGluZSBwb2ludHM9XCIxMiA2IDEyIDEyIDE2IDE0XCI+PC9wb2x5bGluZT48L3N2Zz5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tc2VhcmNoLW1vZGFsLXJlY2VudHMtaXRlbVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwic2VhcmNoLnJlY2VudFNlYXJjaCB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVscyB8IGhpZ2hMaWdodFRleHQgOiBzZWFyY2hUZXh0XCIgY2xhc3M9XCJjdXN0b20tc2VhcmNoLW1vZGFsLXJlY2VudHMtdGV4dFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1zZWFyY2gtbW9kYWwtcmVjZW50cy10aW1lLXRleHRcIj4oe3sgY29udmVydFRvTG9jYWxUaW1lKHNlYXJjaC5jcmVhdGVkRGF0ZVRpbWUpIHwgdGltZWFnbyB9fSk8L3NwYW4+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgaW4taGVhZGVyIFwiICpuZ0lmPVwiIXNlYXJjaFRleHQgJiYgc2VhcmNoQnlJZFwiPlxuICAgICAgUGxlYXNlIGVudGVyIHVuaXF1ZSBpZCBhbmQgY2xpY2sgZW50ZXIgZm9yIG5hdmlnYXRpbmcgdG8gY29ycmVzcGluZyBwYWdlXG4gIDwvZGl2PlxuICBcbiAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIGluLWhlYWRlciBcIiAqbmdJZj1cIiFzZWFyY2hUZXh0ICYmIHNlYXJjaEJ5VGV4dFwiID5cbiAgICBQbGVhc2UgZW50ZXIgdGV4dCB0byByZXRyZWl2ZSBkYXRhIGJ5IGZpbHRlcmluZ1xuICA8L2Rpdj4gLS0+XG4gIFxuXG4gIDxzYXQtcG9wb3ZlciBiYWNrZHJvcENsYXNzPVwiYmFja2Ryb3AtY29sb3JcIiBoYXNCYWNrZHJvcCAjYWRkV29ya3NwYWNlIHZlcnRpY2FsQWxpZ249XCJiZWxvd1wiIGhvcml6b250YWxBbGlnbj1cImVuZFwiXG4gICAgW2ludGVyYWN0aXZlQ2xvc2VdPVwiZmFsc2VcIj5cbiAgICA8bWF0LWNhcmQgY2xhc3M9XCJmaWx0ZXItZGF0YSBwLTBcIj5cbiAgICAgIDxtYXQtY2FyZC10aXRsZSBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlLXRleHQgbWF0LWJnLXByaW1hcnkgcC0wNSBtYi0xXCI+XG4gICAgICAgICAge3sgJ0FQUC5BREREQVNIQk9BUkRUSVRMRScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC1jYXJkLXRpdGxlPlxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwid29ya3NwYWNlRm9ybVwiIG5vdmFsaWRhdGUgKHN1Ym1pdCk9XCJ3b3Jrc3BhY2VGb3JtLnZhbGlkICYmIHVwc2VydFdvcmtzcGFjZSgpXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtY29udGVudFwiPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJ7eyAnSFJNQU5BR0FNRU5ULk5BTUUnIHwgdHJhbnNsYXRlfX0qXCIgZm9ybUNvbnRyb2xOYW1lPVwid29ya3NwYWNlTmFtZVwiIC8+XG4gICAgICAgICAgICAgIDxtYXQtZXJyb3JcbiAgICAgICAgICAgICAgICAqbmdJZj1cIndvcmtzcGFjZUZvcm0uZ2V0KCd3b3Jrc3BhY2VOYW1lJykuaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiYgd29ya3NwYWNlRm9ybS5nZXQoJ3dvcmtzcGFjZU5hbWUnKS50b3VjaGVkIFwiPlxuICAgICAgICAgICAgICAgIHt7ICdBUFAuREFTSEJPQVJETkFNRVJFUVVJUkVEJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cIndvcmtzcGFjZUZvcm0uZ2V0KCd3b3Jrc3BhY2VOYW1lJykuaGFzRXJyb3IoJ21heGxlbmd0aCcpXCI+XG4gICAgICAgICAgICAgICAge3sgJ0FQUC5EQVNIQk9BUkROQU1FTEVOR1RIRVhDRUVEJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmdWxsLXdpZHRoXCI+XG4gICAgICAgICAgICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiIHJvd3M9XCIyXCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdDT01QQU5ZU0VUVElOR1MuREVTQ1JJUFRJT04nIHwgdHJhbnNsYXRlIH19XCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgPG1hdC1lcnJvclxuICAgICAgICAgICAgICAgICpuZ0lmPVwid29ya3NwYWNlRm9ybS5nZXQoJ2Rlc2NyaXB0aW9uJykuaGFzRXJyb3IoJ21heGxlbmd0aCcpICYmIHdvcmtzcGFjZUZvcm0uZ2V0KCdkZXNjcmlwdGlvbicpLnRvdWNoZWRcIj5cbiAgICAgICAgICAgICAgICB7eyAnQVBQLkNVU1RPTUFQUERFU0NSSVBUSU9OTUFYTEVOR1RIRVJST1InIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZ1bGwtd2lkdGhcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiPlxuICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJzZWxlY3RlZFJvbGVzXCIgW2NvbXBhcmVXaXRoXT1cImNvbXBhcmVTZWxlY3RlZFJvbGVzRm5cIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ1dJREdFVFMuVklFV1JPTEVTJyB8IHRyYW5zbGF0ZSB9fVwiIG11bHRpcGxlIHJlcXVpcmVkPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICNhbGxTZWxlY3RlZCAoY2xpY2spPVwidG9nZ2xlQWxsUm9sZXNTZWxlY3RlZCgpXCIgW3ZhbHVlXT1cIjBcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdQRVJNSVNTSU9OTUFOQUdFTUVOVC5TRUxFQ1RBTEwnIHwgdHJhbnNsYXRlIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJyb2xlcy5yb2xlSWRcIiAqbmdGb3I9XCJsZXQgcm9sZXMgb2Ygcm9sZXNEcm9wRG93blwiICNhbGxTZWxlY3RlZFxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJvbGVzUGVyT25lKGFsbFNlbGVjdGVkLnZhbHVlKVwiPlxuICAgICAgICAgICAgICAgICAge3sgcm9sZXMucm9sZU5hbWUgfX1cbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgPG1hdC1lcnJvclxuICAgICAgICAgICAgICAgICpuZ0lmPVwid29ya3NwYWNlRm9ybS5nZXQoJ3NlbGVjdGVkUm9sZXMnKS5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiB3b3Jrc3BhY2VGb3JtLmdldCgnc2VsZWN0ZWRSb2xlcycpLnRvdWNoZWRcIj5cbiAgICAgICAgICAgICAgICB7eyAnQVBQLlNFTEVDVEFOWVJPTEUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiZWRpdFJvbGVJZHNcIiBbY29tcGFyZVdpdGhdPVwiY29tcGFyZUVkaXRTZWxlY3RlZFJvbGVzRm5cIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ1dJREdFVFMuRURJVFJPTEVTJyB8IHRyYW5zbGF0ZSB9fVwiIG11bHRpcGxlPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICNhbGxFZGl0U2VsZWN0ZWQgKGNsaWNrKT1cInRvZ2dsZUVkaXRBbGxSb2xlc1NlbGVjdGVkKClcIiBbdmFsdWVdPVwiMFwiPlxuICAgICAgICAgICAgICAgICAge3sgJ1BFUk1JU1NJT05NQU5BR0VNRU5ULlNFTEVDVEFMTCcgfCB0cmFuc2xhdGUgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cInJvbGUucm9sZUlkXCIgKm5nRm9yPVwibGV0IHJvbGUgb2Ygcm9sZXNEcm9wRG93blwiICNhbGxFZGl0U2VsZWN0ZWRcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVFZGl0Um9sZXNQZXJPbmUoKVwiPlxuICAgICAgICAgICAgICAgICAge3sgcm9sZS5yb2xlTmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiZGVsZXRlUm9sZUlkc1wiIFtjb21wYXJlV2l0aF09XCJjb21wYXJlRGVsZXRlU2VsZWN0ZWRSb2xlc0ZuXCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdXSURHRVRTLkRFTEVURVJPTEVTJyB8IHRyYW5zbGF0ZSB9fVwiIG11bHRpcGxlPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICNhbGxEZWxldGVTZWxlY3RlZCAoY2xpY2spPVwidG9nZ2xlRGVsZXRlQWxsUm9sZXNTZWxlY3RlZCgpXCIgW3ZhbHVlXT1cIjBcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdQRVJNSVNTSU9OTUFOQUdFTUVOVC5TRUxFQ1RBTEwnIHwgdHJhbnNsYXRlIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJyb2xlLnJvbGVJZFwiICpuZ0Zvcj1cImxldCByb2xlIG9mIHJvbGVzRHJvcERvd25cIiAjYWxsRGVsZXRlU2VsZWN0ZWRcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVEZWxldGVSb2xlc1Blck9uZSgpXCI+XG4gICAgICAgICAgICAgICAgICB7eyByb2xlLnJvbGVOYW1lIH19XG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yLTFcIiBtYXQtYnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwidXBzZXJ0V29ya3NwYWNlKClcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXdvcmtzcGFjZUZvcm0udmFsaWRcIj5cbiAgICAgICAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgY29sb3I9XCJwcmltYXJ5XCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiAqbmdJZj1cImRhc2hib2FyZFVwZGF0ZUluUHJvZ3Jlc3NcIj5cbiAgICAgICAgICAgICAgPC9tYXQtcHJvZ3Jlc3MtYmFyPlxuICAgICAgICAgICAgICA8ZmEtaWNvbiBjbGFzcz1cIm1yLTA1XCIgaWNvbj1cInBsdXNcIj48L2ZhLWljb24+IHt7ICdTQVZFJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gbWF0LXJhaXNlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbG9zZUFkZFdvcmtzcGFjZURpYWxvZygpXCI+XG4gICAgICAgICAgICAgIDxmYS1pY29uIGNsYXNzPVwibXItMDVcIiBpY29uPVwidGltZXNcIj48L2ZhLWljb24+IHt7ICdDQU5DRUwnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mb3JtPlxuICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgIDwvbWF0LWNhcmQ+XG4gIDwvc2F0LXBvcG92ZXI+XG5cblxuICA8c2F0LXBvcG92ZXIgI3AgaGFzQmFja2Ryb3AgW2ludGVyYWN0aXZlQ2xvc2VdPVwidHJ1ZVwiIHZlcnRpY2FsQWxpZ249XCJhYm92ZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0b29sdGlwLXdyYXBwZXJcIiBzdHlsZT1cIiBiYWNrZ3JvdW5kOiAjZmZmO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICBwYWRkaW5nOiAxMHB4IDE0cHg7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLDAsMCwwLjEyKTtcIj5cbiAgICAgIDx0YWJsZT5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD5DdHJsICsgUTogPC90ZD5cbiAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD5cbiAgICAgICAgICA8dGQ+IHt7ICdTSEVMTC5UT09QRU5TRUFSQ0hNRU5VJyB8IHRyYW5zbGF0ZX19PC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD5DdHJsICsgQjogPC90ZD5cbiAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD5cbiAgICAgICAgICA8dGQ+IHt7ICdTSEVMTC5UT09QRU5HT0FMU0FORFVTRVJTJyB8IHRyYW5zbGF0ZX19PC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD5DdHJsICsgWTogPC90ZD5cbiAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD5cbiAgICAgICAgICA8dGQ+IHt7ICdTSEVMTC5UT1NFQVJDSEJZSUQnIHwgdHJhbnNsYXRlfX08L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPkN0cmwgKyBNOiA8L3RkPlxuICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPlxuICAgICAgICAgIDx0ZD4ge3sgJ1NIRUxMLlRPQ0xPU0VNRU5VJyB8IHRyYW5zbGF0ZX19PC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9kaXY+XG4gIDwvc2F0LXBvcG92ZXI+XG5cbiAgPG1hdC1zcGlubmVyICpuZ0lmPVwic2VhcmNoQnlUZXh0TG9hZGluZyAmJiBkaXNwbGF5XCIgY2xhc3M9XCJzcGlubmVyLWNsYXNzXCIgW2RpYW1ldGVyXT1cIjEwMFwiPjwvbWF0LXNwaW5uZXI+Il19
|
|
3439
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL21lbnUvbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL21lbnUvbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXNCLFlBQVksRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFLLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFtQixZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRixPQUFPLEVBQVMsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRzVDLE9BQU8sS0FBSyxvQkFBb0IsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFJakYsT0FBTyxFQUEwQixhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQU14RSxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUdqQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENB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O1lBQzNHLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQy9DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQztZQUNySCxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDO1NBQ2hHO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUM7WUFDM0csSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDckMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQztZQUN2RyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNyRCxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQztTQUNoRztRQUNELG1CQUFtQjthQUNkLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLHFCQUFxQixHQUFHLENBQUMsRUFBRTtZQUMxRSxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1NBQ2xFO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMscUJBQXFCLElBQUksQ0FBQztZQUNySixJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN6QyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFDckgsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN6QyxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQztTQUNoRzthQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLHFCQUFxQixJQUFJLENBQUM7WUFDckosSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDL0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBQ3JILElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUM7U0FDaEc7YUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDO1lBQ3JKLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQy9DLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFDdkcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDckQsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUM7U0FDaEc7UUFDRCxpQ0FBaUM7YUFDNUIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLGNBQWMsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQztlQUNqSixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTtZQUNuQixRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3pEO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLGNBQWMsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQztZQUN0SixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN0RSxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBQ2xHLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ2pFLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDO1NBQ2hHO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLGNBQWMsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQztZQUN0SixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM1RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFDckgsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN6QyxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQztTQUNoRzthQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUM7WUFDdEosSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbEUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBQ3JILElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUM7U0FDaEc7YUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksY0FBYyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDO1lBQ3RKLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2xFLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFDdkcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDckQsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUM7U0FDaEc7UUFDRCxrQkFBa0I7YUFDYixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksY0FBYyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDO2VBQ3pJLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZCLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztZQUNuRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUN4RDthQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLGNBQWMsQ0FBQyxNQUFNLENBQUM7WUFDOUksSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDNUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBQ2xILElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEQsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUM7U0FDaEc7YUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksY0FBYyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDO1lBQzlJLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzFFLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFDbEcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDakUsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUM7U0FDaEc7YUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksY0FBYyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDO1lBQzlJLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2hFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQztZQUNySCxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDO1NBQ2hHO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLGNBQWMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLElBQUksY0FBYyxDQUFDLE1BQU0sQ0FBQztZQUNsSixJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN0RSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFDckgsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1QyxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQztTQUNoRzthQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLGNBQWMsQ0FBQyxNQUFNLENBQUM7WUFDOUksSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdEUsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQztZQUN2RyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNyRCxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQztTQUNoRztRQUNELHNCQUFzQjthQUNqQixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQ3JELElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDakQ7YUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQztZQUN0RCxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN2RCxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFDOUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDaEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN2RCxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQztTQUNoRzthQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDO1lBQ3RELElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3JELElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQztZQUNsSCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xELFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDO1NBQ2hHO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUM7WUFDdEQsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbkQsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQztZQUMvRixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQzFELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUNqRSxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQztTQUNoRzthQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDO1lBQ3RELElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3pDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQztZQUNySCxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDO1NBQ2hHO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUM7WUFDdEQsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDL0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBQ3JILElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUM7U0FDaEc7YUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQztZQUN0RCxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMvQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBQ3ZHLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3JELFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDO1NBQ2hHO1FBR0QsaUhBQWlIO1FBQ2pILG9HQUFvRztRQUNwRywrREFBK0Q7UUFDL0QseUVBQXlFO1FBQ3pFLHNFQUFzRTtRQUN0RSx5R0FBeUc7UUFDekcsdUNBQXVDO1FBQ3ZDLDRGQUE0RjtRQUM1Riw4Q0FBOEM7UUFDOUMsK0dBQStHO1FBQy9HLDBDQUEwQztRQUMxQyw0RkFBNEY7UUFDNUYsaURBQWlEO1FBQ2pELHFHQUFxRztRQUNyRyxvQ0FBb0M7UUFDcEMsNkZBQTZGO1FBQzdGLGdEQUFnRDtRQUNoRCxxR0FBcUc7UUFDckcsbURBQW1EO1FBQ25ELDhFQUE4RTtRQUM5RSwyQ0FBMkM7UUFDM0Msd0hBQXdIO1FBQ3hILG9HQUFvRztRQUNwRyxpQkFBaUI7UUFDakIsNEZBQTRGO1FBQzVGLDhDQUE4QztRQUM5Qyw4SEFBOEg7UUFDOUgsMENBQTBDO1FBQzFDLDRGQUE0RjtRQUM1RixpREFBaUQ7UUFDakQsb0hBQW9IO1FBQ3BILG9DQUFvQztRQUNwQyw2RkFBNkY7UUFDN0YsZ0RBQWdEO1FBQ2hELG9IQUFvSDtRQUNwSCxtREFBbUQ7UUFDbkQsOEVBQThFO1FBQzlFLDJDQUEyQztRQUMzQywyR0FBMkc7UUFDM0csb0dBQW9HO1FBQ3BHLDBDQUEwQztRQUMxQywrREFBK0Q7UUFDL0QsaURBQWlEO1FBQ2pELG9HQUFvRztRQUNwRyxpR0FBaUc7UUFDakcsb0NBQW9DO1FBQ3BDLGdFQUFnRTtRQUNoRSxnREFBZ0Q7UUFDaEQsaUdBQWlHO1FBQ2pHLG1EQUFtRDtRQUNuRCxpREFBaUQ7UUFDakQsMkNBQTJDO1FBQzNDLG9HQUFvRztRQUNwRyxvQ0FBb0M7UUFDcEMsZ0VBQWdFO1FBQ2hFLDJDQUEyQztRQUMzQyxvR0FBb0c7UUFDcEcsbURBQW1EO1FBQ25ELGlEQUFpRDtRQUNqRCwwREFBMEQ7UUFDMUQsa0dBQWtHO1FBQ2xHLG1EQUFtRDtRQUNuRCxpREFBaUQ7UUFDakQsb0dBQW9HO1FBQ3BHLDBEQUEwRDtRQUMxRCxXQUFXO1FBQ1gsb0VBQW9FO1FBQ3BFLGlCQUFpQjtRQUNqQix1REFBdUQ7UUFDdkQsa0NBQWtDO1FBQ2xDLE1BQU07UUFDTixJQUFJO0lBQ04sQ0FBQztJQUNELDZCQUE2QjtRQUMzQixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLGNBQWMsQ0FBQyxPQUFPLEVBQUU7WUFDdkQsT0FBTztTQUNSO2FBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLGNBQWMsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzVLLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQTtZQUMvRCxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDeEM7YUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksY0FBYyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3RMLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQTtZQUN0RSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNmLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2hEO2FBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLGNBQWMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3RLLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQTtZQUMvRCxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDeEM7YUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLGNBQWMsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDeEgsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFBO1lBQ2xFLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMzQzthQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksY0FBYyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsbUJBQW1CLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbEksUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFBO1lBQ3RFLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDaEQ7YUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLGNBQWMsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbEgsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFBO1lBQy9ELElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN4QztJQUNILENBQUM7SUFDRCxjQUFjO1FBQ1osT0FBTztRQUNQLG9DQUFvQztRQUNwQywrQkFBK0I7UUFDL0IsMkJBQTJCO1FBQzNCLE1BQU07UUFDTixZQUFZO1FBQ1osSUFBSTtRQUNKLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3hDLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1NBQ3RDO2FBQ0ksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRTtZQUM5QixPQUFPO1NBQ1I7UUFDRCxpQkFBaUI7YUFDWixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzVFLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3ZHLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsY0FBYzthQUNULElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbkYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3JILElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ1osUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2QzthQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDM0UsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN2RyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO1lBQzFCLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbEM7UUFDRCxnQkFBZ0I7YUFDWCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25GLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUNySCxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNaLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDcEM7YUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzNGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUNySCxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNaLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdkM7YUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2pGLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdkcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztZQUMxQixRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsYUFBYTthQUNSLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUM7ZUFDakosSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUNsRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsQ0FBQyxDQUFDO1lBQy9CLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDekM7YUFDSSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksY0FBYyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDO2VBQ2pKLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzVDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUNySCxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNaLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDcEM7YUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksY0FBYyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDO2VBQ25KLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2xELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUNySCxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNaLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdkM7YUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksY0FBYyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDO2VBQ25KLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdkcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztZQUMxQixRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2xDO1FBQ0Qsa0JBQWtCO2FBQ2IsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLGNBQWMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksY0FBYyxDQUFDLE1BQU0sQ0FBQztlQUN6SSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN4RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDbEgsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDZixRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzFDO2FBQ0ksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLGNBQWMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksY0FBYyxDQUFDLE1BQU0sQ0FBQztlQUN6SSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN0RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ2xHLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLENBQUM7WUFDL0IsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN6QzthQUNJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLGNBQWMsQ0FBQyxNQUFNLENBQUM7ZUFDekksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDNUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3JILElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ1osUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwQzthQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLGNBQWMsQ0FBQyxNQUFNLENBQUM7ZUFDM0ksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3JILElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ1osUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2QzthQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLGNBQWMsQ0FBQyxNQUFNLENBQUM7ZUFDM0ksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDeEMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN2RyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO1lBQzFCLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbEM7UUFDRCxzQkFBc0I7YUFDakIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVk7ZUFDakMsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDMUQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQzlHLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDM0M7YUFDSSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWTtlQUNqQyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN4RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDbEgsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDZixRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzFDO2FBQ0ksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVk7ZUFDakMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUNsRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsQ0FBQyxDQUFDO1lBQy9CLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDekM7YUFDSSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWTtlQUNqQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM1QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDckgsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDWixRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3BDO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVk7ZUFDbkMsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3JILElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ1osUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2QzthQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZO2VBQ25DLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdkcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztZQUMxQixRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2xDO0lBQ0gsQ0FBQztJQUNELDhCQUE4QjtRQUM1QixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLGNBQWMsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzFILElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO1lBQ3ZFLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2hEO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZILElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO1lBQ25FLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDM0M7YUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLGNBQWMsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbkgsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3ZELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLENBQUM7WUFDL0IsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN6QzthQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNwTCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztZQUNuRSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNuQixRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzNDO2FBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLGNBQWMsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2hMLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN2RCxJQUFJLENBQUMscUJBQXFCLEdBQUcsQ0FBQyxDQUFDO1lBQy9CLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzNDO2FBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLGNBQWMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3hLLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN2RCxJQUFJLENBQUMscUJBQXFCLEdBQUcsQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN6QztJQUNILENBQUM7SUFDRCxlQUFlO1FBQ2IsT0FBTztRQUNQLG9DQUFvQztRQUNwQywrQkFBK0I7UUFDL0IsMkJBQTJCO1FBQzNCLE1BQU07UUFDTixZQUFZO1FBQ1osS0FBSztRQUNMLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3hDLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1NBQ3ZDO2FBQ0ksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRTtZQUN0QyxPQUFPO1NBQ1I7UUFDRCxZQUFZO2FBQ1AsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMvRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUNkLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQzVHLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ1osSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZDO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMzRSxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNaLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDckgsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3BDO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNyRixJQUFJLENBQUMscUJBQXFCLEdBQUcsQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDbEcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3pDO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsbUJBQW1CLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbkcsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDZixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDbEgsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDaEQ7YUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3pGLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUM5RyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDM0M7YUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3pGLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ1osSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3JILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMzQztRQUNELGlCQUFpQjthQUNaLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDaEYsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDWixRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3JILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwQzthQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDNUYsSUFBSSxDQUFDLHFCQUFxQixHQUFHLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ2xHLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN6QzthQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzFHLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ2xILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2hEO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNoRyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNuQixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDOUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzNDO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNoRyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNaLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUNySCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDM0M7UUFDRCxjQUFjO2FBQ1QsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN2RixJQUFJLENBQUMscUJBQXFCLEdBQUcsQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDbEcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3pDO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsbUJBQW1CLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdkcsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDZixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDbEgsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDaEQ7YUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzdGLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUM5RyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDM0M7YUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzdGLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ1osSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3JILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMzQztRQUNELGdCQUFnQjthQUNYLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzNHLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ2xILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2hEO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNuRyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNuQixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDOUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzNDO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNuRyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNaLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUNySCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDM0M7UUFDRCxhQUFhO2FBQ1IsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLGNBQWMsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQztlQUNqSixJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMxRCxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNuQixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDOUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzNDO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLGNBQWMsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQztlQUNuSixJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMxRCxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNaLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUNySCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDM0M7UUFDRCxrQkFBa0I7YUFDYixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksY0FBYyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDO2VBQ3pJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzFELElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ1osSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3JILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMzQztJQUNILENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBaUIsRUFBRSxFQUFFO1lBQy9ELElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQztZQUN2QyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUMvQixNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNsQyxDQUFDLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUNoQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELHNCQUFzQixLQUFLLENBQUM7SUFDNUIsMEJBQTBCLEtBQUssQ0FBQztJQUNoQyw0QkFBNEIsS0FBSyxDQUFDO0lBQ2xDLGVBQWUsS0FBSyxDQUFDO0lBQ3JCLHNCQUFzQixLQUFLLENBQUM7SUFDNUIsMEJBQTBCLEtBQUssQ0FBQztJQUNoQyw0QkFBNEIsS0FBSyxDQUFDO0lBQ2xDLHVCQUF1QixLQUFLLENBQUM7OzBFQS81RWxCLGFBQWEsd2hCQWdJZCxNQUFNO2dFQWhJTCxhQUFhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0hBQWIsa0JBQWMsOEhBQWQsbUJBQWUsOEhBQWYsd0JBQW9CLDhIQUFwQixzQkFBa0I7OztRQzFEL0IsaUNBQXVHO1FBQ3JHLG1DQUEwQjtRQUFBLG9CQUFJO1FBQUEsaUJBQVc7UUFDM0MsaUJBQVM7UUFDVCw4QkFBOEg7UUFDNUgsOEJBQ2dDO1FBQTlCLHVGQUFTLHFCQUFpQixJQUFDO1FBRDdCLGlCQUNnQztRQUNsQyxpQkFBTTtRQUNOLDhCQUFnSTtRQUM5SCw4QkFDb0U7UUFBOUIsdUZBQVMscUJBQWlCLElBQUM7UUFEakUsaUJBQ29FO1FBQ3RFLGlCQUFNO1FBK0NOLHNDQUNzQjtRQUQ0QyxrR0FBUyx3QkFBd0IsSUFBQztRQUVsRyw4REFPTTtRQUNSLGlCQUFXO1FBR1gsZ0VBU007UUFFTixnQ0FBdUU7UUFDckUsbUVBQXFGO1FBQ3JGLG1FQUFtRjtRQUNuRixzQ0FJcUg7UUFIakMsMklBQXdCLG1GQUNqRyxzQkFBa0IsSUFEK0UsbUZBQ3BFLHNCQUFrQixJQURrRCw2RUFDdkMsYUFBUyxJQUQ4QiwyRUFDcEIsU0FBSyxJQURlLG1HQUV6RixxQ0FBNkIsSUFGNEQscUdBRXJDLG9CQUFnQixJQUZxQixpR0FHdkYsa0JBQWMsSUFIeUUscUdBR2xELG9CQUFnQixJQUhrQyx1R0FHVixxQkFBaUIsSUFIUDs7UUFENUcsaUJBSXFIO1FBRXJILG1DQUFpQztRQUMvQixpQ0FBZ0M7UUFDOUIsbUVBQWlDO1FBQ2pDLDJFQUVrQjtRQUNwQixpQkFBTztRQUNQLHlDQUNrRjtRQUFoQyxzSkFBUyxpQkFBcUIsSUFBQztRQUFDLHFCQUFJO1FBQUEsaUJBQVc7UUFDakcscUNBQXdGO1FBQUEsdUJBQU07UUFBQSxpQkFBVztRQUMzRyxpQkFBUztRQUNULGdDQUEySTtRQUN6SSwyRkFFbUI7UUFDbkIsZ0NBQStDO1FBQzdDLGtFQWFNO1FBRU4sa0VBMEJNO1FBRU4saUVBNEJNO1FBRU4saUVBYU07UUFFTixpRUFjTTtRQUVOLGlFQWVNO1FBR04saUVBY007UUFFTixpRUF1Qk07UUFFTixrRUFzQk07UUFFUixpQkFBTTtRQVVSLDRDQUM2QjtRQUMzQixxQ0FBa0M7UUFDaEMsMkNBQW9DO1FBQ2xDLGdDQUFzRDtRQUNwRCxhQUNGOztRQUFBLGlCQUFNO1FBQ1IsaUJBQWlCO1FBQ2pCLHlDQUFrQjtRQUNoQixpQ0FBaUc7UUFBcEQsc0hBQWlDLHFCQUFpQixJQUFDO1FBQzlGLGdDQUEwQjtRQUN4QiwyQ0FBbUM7UUFDakMsNkJBQXNHOztRQUN0Ryw2RUFHWTtRQUNaLDZFQUVZO1FBQ2QsaUJBQWlCO1FBQ2pCLDJDQUFtQztRQUNqQyxnQ0FDMkU7O1FBQzNFLDZFQUdZO1FBQ2QsaUJBQWlCO1FBQ2pCLDJDQUF1RTtRQUFwQyx5R0FBUyx3QkFBd0IsSUFBRTtRQUNwRSx1Q0FDd0U7O1FBQ3RFLDJDQUF3RTtRQUEvQywrRkFBUyw0QkFBd0IsSUFBQztRQUN6RCxhQUFrRDs7UUFBQSxpQkFBYTtRQUNqRSwrRUFHYTtRQUNmLGlCQUFhO1FBQ2IsNkVBR1k7UUFDZCxpQkFBaUI7UUFDakIsMkNBQW1DO1FBQ2pDLHVDQUMrRDs7UUFDN0QsMkNBQWdGO1FBQW5ELCtGQUFTLGdDQUE0QixJQUFDO1FBQ2pFLGFBQWtEOztRQUFBLGlCQUFhO1FBQ2pFLCtFQUdhO1FBQ2YsaUJBQWE7UUFDZixpQkFBaUI7UUFDakIsMkNBQW1DO1FBQ2pDLHVDQUNpRTs7UUFDL0QsMkNBQW9GO1FBQXJELCtGQUFTLGtDQUE4QixJQUFDO1FBQ3JFLGFBQWtEOztRQUFBLGlCQUFhO1FBQ2pFLCtFQUdhO1FBQ2YsaUJBQWE7UUFDZixpQkFBaUI7UUFDbkIsaUJBQU07UUFDTixnQ0FBeUI7UUFDdkIsbUNBQ29DO1FBRDRDLDJGQUFTLHFCQUFpQixJQUFDO1FBRXpHLDJGQUNtQjtRQUNuQiwrQkFBNkM7UUFBQyxhQUNoRDs7UUFBQSxpQkFBUztRQUNULG1DQUF1RjtRQUFwQywyRkFBUyw2QkFBeUIsSUFBQztRQUNwRiwrQkFBOEM7UUFBQyxhQUNqRDs7UUFBQSxpQkFBUztRQUNYLGlCQUFNO1FBQ1IsaUJBQU87UUFDVCxpQkFBbUI7UUFDckIsaUJBQVc7UUFDYixpQkFBYztRQUdkLDRDQUE0RTtRQUMxRSxnQ0FJd0M7UUFDdEMsOEJBQU87UUFDTCwyQkFBSTtRQUNGLDJCQUFJO1FBQUEsMkJBQVU7UUFBQSxpQkFBSztRQUNuQiwyQkFBSTtRQUFBLHdCQUFNO1FBQUEsaUJBQUs7UUFDZiw0QkFBSTtRQUFDLGNBQXlDOztRQUFBLGlCQUFLO1FBQ3JELGlCQUFLO1FBQ0wsNEJBQUk7UUFDRiw0QkFBSTtRQUFBLDRCQUFVO1FBQUEsaUJBQUs7UUFDbkIsNEJBQUk7UUFBQSx3QkFBTTtRQUFBLGlCQUFLO1FBQ2YsNEJBQUk7UUFBQyxjQUE0Qzs7UUFBQSxpQkFBSztRQUN4RCxpQkFBSztRQUNMLDRCQUFJO1FBQ0YsNEJBQUk7UUFBQSw0QkFBVTtRQUFBLGlCQUFLO1FBQ25CLDRCQUFJO1FBQUEsd0JBQU07UUFBQSxpQkFBSztRQUNmLDRCQUFJO1FBQUMsY0FBcUM7O1FBQUEsaUJBQUs7UUFDakQsaUJBQUs7UUFDTCw0QkFBSTtRQUNGLDRCQUFJO1FBQUEsNEJBQVU7UUFBQSxpQkFBSztRQUNuQiw0QkFBSTtRQUFBLHdCQUFNO1FBQUEsaUJBQUs7UUFDZiw0QkFBSTtRQUFDLGNBQW9DOztRQUFBLGlCQUFLO1FBQ2hELGlCQUFLO1FBQ1AsaUJBQVE7UUFDVixpQkFBTTtRQUNSLGlCQUFjO1FBRWQsbUZBQXlHO1FBN1R6RyxpQkFBMkk7UUFwQjdJLGlCQUF1RTs7OztRQWpGaEIsdUNBQTJCO1FBSTNFLGVBQXlCO1FBQXpCLHNFQUF5QjtRQUl6QixlQUF5QjtRQUF6QixzRUFBeUI7UUFtRFIsZUFBUTtRQUFSLG1DQUFRO1FBWW9DLGVBQWdDO1FBQWhDLHFEQUFnQztRQVdoRCxlQUFrQjtRQUFsQix1Q0FBa0I7UUFDbEIsZUFBZ0I7UUFBaEIscUNBQWdCO1FBRWhFLGVBQXFEO1FBQXJELHNFQUFxRDtRQURKLGdHQUE4RDtRQUM3Qix3Q0FBd0I7UUFPakcsZUFBaUI7UUFBakIsc0NBQWlCO1FBQ2IsZUFBZ0I7UUFBaEIscUNBQWdCO1FBSTBELGVBQXlCO1FBQXpCLDBDQUF5QjtRQUkvQixlQUF1RDtRQUF2RCxpRkFBdUQ7UUFFckksZUFBc0Y7UUFBdEYsbUhBQXNGO1FBRzVELGVBQW1DO1FBQW5DLDREQUFtQztRQWV1QixlQUFnRTtRQUFoRSxpR0FBZ0U7UUE0QjFILGVBQW1DO1FBQW5DLDREQUFtQztRQThCbEIsZUFBbUU7UUFBbkUscUdBQW1FO1FBZTFFLGVBQXVFO1FBQXZFLDBHQUF1RTtRQWlCekcsZUFBdUY7UUFBdkYsMEhBQXVGO1FBa0J2RixlQUE2RTtRQUE3RSxnSEFBNkU7UUFnQjdFLGVBQTZFO1FBQTdFLDRHQUE2RTtRQXlCN0UsZUFBbUY7UUFBbkYsbUhBQW1GO1FBa0N4RixlQUEwQjtRQUExQix3Q0FBMEI7UUFJcEIsZUFDRjtRQURFLGdGQUNGO1FBR00sZUFBMkI7UUFBM0IsNkNBQTJCO1FBR1gsZUFBbUQ7UUFBbkQsOEZBQW1EO1FBRWhFLGVBQTJHO1FBQTNHLG9JQUEyRztRQUdsRyxlQUE4RDtRQUE5RCxtRkFBOEQ7UUFNeEUsZUFBNkQ7UUFBN0QsOEZBQTZEO1FBRTVELGVBQXdHO1FBQXhHLGlJQUF3RztRQU16RyxlQUFtRDtRQUFuRCxvRkFBbUQ7UUFEVCx3REFBc0M7UUFFcEIsZUFBVztRQUFYLHlCQUFXO1FBQ3JFLGVBQWtEO1FBQWxELHdGQUFrRDtRQUNDLGVBQWdCO1FBQWhCLDJDQUFnQjtRQU1wRSxlQUEyRztRQUEzRyxvSUFBMkc7UUFNNUcsZUFBbUQ7UUFBbkQsb0ZBQW1EO1FBRFgsNERBQTBDO1FBRWQsZUFBVztRQUFYLHlCQUFXO1FBQzdFLGVBQWtEO1FBQWxELHdGQUFrRDtRQUNELGVBQWdCO1FBQWhCLDJDQUFnQjtRQVFuRSxlQUFxRDtRQUFyRCxzRkFBcUQ7UUFEWCw4REFBNEM7UUFFZCxlQUFXO1FBQVgseUJBQVc7UUFDakYsZUFBa0Q7UUFBbEQsd0ZBQWtEO1FBQ0QsZUFBZ0I7UUFBaEIsMkNBQWdCO1FBU3JFLGVBQWlDO1FBQWpDLG1EQUFpQztRQUN1QixlQUErQjtRQUEvQixvREFBK0I7UUFFekMsZUFDaEQ7UUFEZ0QsK0RBQ2hEO1FBRWlELGVBQ2pEO1FBRGlELGlFQUNqRDtRQVFrQixlQUF5QjtRQUF6Qix1Q0FBeUI7UUFVeEMsZ0JBQXlDO1FBQXpDLGlGQUF5QztRQUt6QyxlQUE0QztRQUE1QyxvRkFBNEM7UUFLNUMsZUFBcUM7UUFBckMsNkVBQXFDO1FBS3JDLGVBQW9DO1FBQXBDLDRFQUFvQztRQU1uQyxlQUFvQztRQUFwQyw2REFBb0M7O3VGRHhXdkMsYUFBYTtjQUx6QixTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLFdBQVcsRUFBRSx1QkFBdUI7YUFDckM7MllBa0ltQyxNQUFNO3NCQUFyQyxNQUFNO3VCQUFDLE1BQU07MkZBN0hlLGVBQWU7a0JBQTdDLFlBQVk7bUJBQUMsZUFBZTtZQUNILFdBQVc7a0JBQXBDLFNBQVM7bUJBQUMsYUFBYTtZQUNGLE9BQU87a0JBQTVCLFNBQVM7bUJBQUMsU0FBUztZQUNXLGdCQUFnQjtrQkFBOUMsU0FBUzttQkFBQyxrQkFBa0I7WUFDSCxXQUFXO2tCQUFwQyxTQUFTO21CQUFDLGFBQWE7WUFDRyxtQkFBbUI7a0JBQTdDLFNBQVM7bUJBQUMsY0FBYztZQUNTLFdBQVc7a0JBQTVDLFNBQVM7bUJBQUMsYUFBYTtZQUNjLGVBQWU7a0JBQXBELFNBQVM7bUJBQUMsaUJBQWlCO1lBQ1ksaUJBQWlCO2tCQUF4RCxTQUFTO21CQUFDLG1CQUFtQjtZQUNKLFdBQVc7a0JBQXBDLFNBQVM7bUJBQUMsYUFBYTtZQUNkLFFBQVE7a0JBQWpCLE1BQU07WUFDRyxnQkFBZ0I7a0JBQXpCLE1BQU07WUF3RUgsU0FBUztrQkFEWixLQUFLO21CQUFDLFFBQVE7WUE4S2YsWUFBWTtrQkFEWCxZQUFZO21CQUFDLDRCQUE0QixFQUFFLEVBQUU7WUFXOUMsYUFBYTtrQkFEWixZQUFZO21CQUFDLDRCQUE0QixFQUFFLEVBQUU7WUFXOUMsa0JBQWtCO2tCQURqQixZQUFZO21CQUFDLDRCQUE0QixFQUFFLEVBQUU7WUFVOUMsZ0JBQWdCO2tCQURmLFlBQVk7bUJBQUMsNEJBQTRCLEVBQUUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkcmVuLCBWaWV3Q2hpbGQsIFRlbXBsYXRlUmVmLCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWYsIE9uSW5pdCwgSG9zdExpc3RlbmVyLCBDaGFuZ2VEZXRlY3RvclJlZiwgSW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgdGFrZSwgdGFrZVVudGlsLCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBTdG9yZSwgc2VsZWN0IH0gZnJvbSBcIkBuZ3J4L3N0b3JlXCI7XG4vLyBpbXBvcnQgeyBTdGF0ZSB9IGZyb20gXCJhcHAvc2hhcmVkL3N0b3JlL3JlZHVjZXJzL21lbnVpdGVtcy5yZWR1Y2Vyc1wiO1xuaW1wb3J0IHsgU3RhdGUgfSBmcm9tIFwiLi4vLi4vc3RvcmUvcmVkdWNlcnMvaW5kZXhcIjtcbmltcG9ydCAqIGFzIHNoYXJlZE1vZHVsZVJlZHVjZXJzIGZyb20gXCIuLy4uLy4uL3N0b3JlL3JlZHVjZXJzL2luZGV4XCI7XG5pbXBvcnQgeyB0YXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IEdldEFsbE1lbnVJdGVtc1RyaWdnZXJlZCB9IGZyb20gXCIuLi8uLi9zdG9yZS9hY3Rpb25zL21lbnVpdGVtcy5hY3Rpb25zXCI7XG5pbXBvcnQgeyBNYXRNZW51VHJpZ2dlciB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9tZW51XCI7XG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gXCJuZ3gtY29va2llLXNlcnZpY2VcIjtcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIsIE5hdmlnYXRpb25FbmQgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcbmltcG9ydCB7IE1hdE9wdGlvbiB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jb3JlXCI7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXJcIjtcbmltcG9ydCB7IFJlY2VudFNlYXJjaFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvcmVjZW50U2VhcmNoLnNlcnZpY2VcIjtcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tIFwibW9tZW50XCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvbkFjdGlvblR5cGVzLCBHZXRDb21wYW55VGhlbWVUcmlnZ2VyZWQgfSBmcm9tIFwiLi4vLi4vc3RvcmUvYWN0aW9ucy9hdXRoZW50aWNhdGlvbi5hY3Rpb25zXCI7XG5pbXBvcnQgeyBvZlR5cGUsIEFjdGlvbnMgfSBmcm9tIFwiQG5ncngvZWZmZWN0c1wiO1xuaW1wb3J0IHsgU2VhcmNoVGFza1R5cGUgfSBmcm9tIFwiLi9zZWFyY2hUYXNrLmVudW1cIjtcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTYXRQb3BvdmVyIH0gZnJvbSAnQG5jc3RhdGUvc2F0LXBvcG92ZXInO1xuaW1wb3J0ICogYXMgXyBmcm9tICd1bmRlcnNjb3JlJztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb21tb24tdXNlZC5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZVByb3BlcnRpZXMgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWxkZXBlbmRlbmNpZXMvY29uc3RhbnRzL2xvY2Fsc3RvcmFnZS1wcm9wZXJ0aWVzJztcbmltcG9ydCB7IEVtcGxveWVlTGlzdE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VtcGxveWVlJztcbmltcG9ydCB7IEVtcGxveWVlTGlzdElucHV0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VtcGxveWVlLUxpc3QnO1xuaW1wb3J0IHsgQ3VzdG9tQXBwQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2dsb2JhbGRlcGVuZGVuY2llcy9jb21wb25lbnRzL2NvbXBvbmVudGJhc2UnO1xuaW1wb3J0IHsgU29mdExhYmVsQ29uZmlndXJhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NvZnRsYWJlbHMtbW9kZWwnO1xuaW1wb3J0IHsgSU1lbnVJdGVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0lNZW51SXRlbSc7XG5pbXBvcnQgeyBVc2VyU3RvcnkgfSBmcm9tICcuLi8uLi9tb2RlbHMvdXNlclN0b3J5JztcbmltcG9ydCB7IFdpZGdldExpc3QgfSBmcm9tICcuLi8uLi9tb2RlbHMvd2lkZ2V0bGlzdCc7XG5pbXBvcnQgeyBEcmFnZWRXaWRnZXQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZHJhZ2VkV2lkZ2V0JztcbmltcG9ydCB7IFdvcmtzcGFjZUxpc3QgfSBmcm9tICcuLi8uLi9tb2RlbHMvd29ya3NwYWNlTGlzdCc7XG5pbXBvcnQgeyBSZWNlbnRTZWFyY2hNb2RlbCwgU2VhcmNoVGFza1R5cGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9SZWNlbnRTZWFyY2hNb2RlbCc7XG5pbXBvcnQgeyBUaGVtZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RoZW1lcy5tb2RlbCc7XG5pbXBvcnQgeyBXSU5ET1cgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWxkZXBlbmRlbmNpZXMvaGVscGVycy93aW5kb3cuaGVscGVyJztcbmltcG9ydCB7IFRoZW1lU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RoZW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgR29vZ2xlQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2dvb2dsZS1hbmFseXRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBQcm9qZWN0U2VhcmNoQ3JpdGVyaWFJbnB1dE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1Byb2plY3RTZWFyY2hDcml0ZXJpYUlucHV0TW9kZWwnO1xuaW1wb3J0IHsgTWVudUNhdGVnb3JpZXMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbWVudS1jYXRlZ29yaWVzJztcbmltcG9ydCB7IEZlYXR1cmVJZHMgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWxkZXBlbmRlbmNpZXMvY29uc3RhbnRzL2ZlYXR1cmUtaWRzJztcbmltcG9ydCAnLi4vLi4vLi4vZ2xvYmFsZGVwZW5kZW5jaWVzL2hlbHBlcnMvZm9udGF3ZXNvbWUtaWNvbnMnO1xuaW1wb3J0IHsgUmVjZW50U2VhcmNoVHlwZSB9IGZyb20gJy4uLy4uL2VudW0vcmVjZW50U2VhcmNoVHlwZS5lbnVtJztcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tIFwibmd4LXRvYXN0clwiO1xuaW1wb3J0IHsgdHJpZ2dlciwgc3R5bGUsIGFuaW1hdGUsIHRyYW5zaXRpb24gfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2VcIjtcblxuLyoqIEBkeW5hbWljICovXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhcHAtbWVudVwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL21lbnUuY29tcG9uZW50Lmh0bWxcIlxufSlcblxuZXhwb3J0IGNsYXNzIE1lbnVDb21wb25lbnQgZXh0ZW5kcyBDdXN0b21BcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgW3g6IHN0cmluZ106IGFueTtcblxuICBAVmlld0NoaWxkcmVuKFwib3Blbk1lbnVQb3BVcFwiKSBvcGVuTWVudVBvcE92ZXI7XG4gIEBWaWV3Q2hpbGQoXCJtZW51VHJpZ2dlclwiKSBtZW51VHJpZ2dlcjogTWF0TWVudVRyaWdnZXI7XG4gIEBWaWV3Q2hpbGQoXCJlbGVtZW50XCIpIGVsZW1lbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoXCJ3b3Jrc3BhY2VFbGVtZW50XCIpIHdvcmtzcGFjZUVsZW1lbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoXCJtZW51RWxlbWVudFwiKSBtZW51RWxlbWVudDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZChcImFkZFdvcmtzcGFjZVwiKSBhZGRXb3JrU3BhY2VQb3BPdmVyOiBTYXRQb3BvdmVyO1xuICBAVmlld0NoaWxkKFwiYWxsU2VsZWN0ZWRcIikgcHJpdmF0ZSBhbGxTZWxlY3RlZDogTWF0T3B0aW9uO1xuICBAVmlld0NoaWxkKFwiYWxsRWRpdFNlbGVjdGVkXCIpIHByaXZhdGUgYWxsRWRpdFNlbGVjdGVkOiBNYXRPcHRpb247XG4gIEBWaWV3Q2hpbGQoXCJhbGxEZWxldGVTZWxlY3RlZFwiKSBwcml2YXRlIGFsbERlbGV0ZVNlbGVjdGVkOiBNYXRPcHRpb247XG4gIEBWaWV3Q2hpbGQoJ2luZm9Qb3BPdmVyJykgaW5mb1BvcE92ZXI6IFRlbXBsYXRlUmVmPGFueT5cbiAgQE91dHB1dCgpIGlzT3BlbmVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBvcGVuTmV3RGFzaGJvYXJkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIGU6IEVsZW1lbnQ7XG4gIHNlYXJjaFRleHQ6IHN0cmluZztcbiAgZm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc29mdExhYmVsczogU29mdExhYmVsQ29uZmlndXJhdGlvbk1vZGVsW107XG4gIHB1YmxpYyBtZW51SXRlbXMkOiBPYnNlcnZhYmxlPElNZW51SXRlbVtdPjtcbiAgdXNlclN0b3JpZXNMaXN0JDogT2JzZXJ2YWJsZTxVc2VyU3RvcnlbXT47XG4gIG1lbnVJdGVtOiBJTWVudUl0ZW1bXTtcbiAgaXRlbXMgPSBbXTtcbiAgbWVudUl0ZW1OYW1lOiBzdHJpbmcgPSBcIlwiO1xuICB3aWRnZXRzOiBXaWRnZXRMaXN0W107XG4gIG9yaWdpbmFsV2lkZ2V0czogV2lkZ2V0TGlzdFtdO1xuICBzZWxlY3RlZExpc3Q6IERyYWdlZFdpZGdldFtdO1xuICB3aWRnZXQ6IFdpZGdldExpc3Q7XG4gIHNlbGVjdGVkQXBwczogYW55O1xuICB1cmw6IHN0cmluZztcbiAgc2VsZWN0ZWREYXNoYm9hcmQ6IGFueTtcbiAgZGVmYXVsdERhc2hib2FyZDogYW55O1xuICBzdWJMZXZlbHM6IHN0cmluZ1tdID0gW107XG4gIHN0YXRlTHZsMTogc3RyaW5nO1xuICBsZXZlbDNMaW5rMTogc3RyaW5nO1xuICBsZXZlbDNMaW5rMjogc3RyaW5nO1xuICBzdWJMZXZlbHNGb3JMZXZlbDI6IHN0cmluZztcbiAgY29tcGFueU1haW5Mb2dvOiBzdHJpbmc7XG4gIGNvbXBhbnlNaW5pTG9nbzogc3RyaW5nO1xuICByb2xlc0Ryb3BEb3duOiBhbnlbXTtcbiAgd29ya3NwYWNlc0xpc3QkOiBPYnNlcnZhYmxlPFdvcmtzcGFjZUxpc3RbXT47XG4gIHdvcmtzcGFjZXM6IFdvcmtzcGFjZUxpc3RbXTtcbiAgd29ya3NwYWNlc0Zvckxvb3A6IGFueTtcbiAgZGlzcGxheTogYm9vbGVhbjtcbiAgYWRtaW5Ub29sczogYW55ID0gW107XG4gIHRvb2xzOiBhbnk7XG4gIHNlbGVjdGVkUm93SW5kZXg6IGFueTtcbiAgaXRlbUNsaWNrZWQ6IGFueTtcbiAgdDogYW55O1xuICB3ZDogYW55O1xuICB3czogYW55O1xuICByczogYW55O1xuICBhbGxzZWFyY2hlczogUmVjZW50U2VhcmNoTW9kZWxbXSA9IFtdO1xuICByZWNlbnRTZWFyY2hlczogUmVjZW50U2VhcmNoTW9kZWxbXSA9IFtdO1xuICBwcm9qZWN0Um9sZVRleHQ6IHN0cmluZyA9IFwiUHJvamVjdCByb2xlIGNvbmZpZ3VyYXRpb25cIjtcbiAgY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVBcHBsaWNhdGlvbnM6IEJvb2xlYW47XG4gIGNhbkFjY2Vzc19mZWF0dXJlX0FkZE9yVXBkYXRlRm9ybTogQm9vbGVhbjtcbiAgY2FuQWNjZXNzX2ZlYXR1cmVfVmlld0Zvcm1zOiBCb29sZWFuO1xuICBjYW5BY2Nlc3NfZmVhdHVyZV9NYW5hZ2VQcm9qZWN0Um9sZVBlcm1pc3Npb25zOiBCb29sZWFuO1xuICBjYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Um9sZXM6IEJvb2xlYW47XG4gIGNhbkFjY2Vzc19mZWF0dXJlX0FkZE9yVXBkYXRlQXBwbGljYXRpb25zJDogT2JzZXJ2YWJsZTxCb29sZWFuPjtcbiAgY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVGb3JtJDogT2JzZXJ2YWJsZTxCb29sZWFuPjtcbiAgY2FuQWNjZXNzX2ZlYXR1cmVfVmlld0Zvcm1zJDogT2JzZXJ2YWJsZTxCb29sZWFuPlxuICBjYW5BY2Nlc3NfZmVhdHVyZV9NYW5hZ2VQcm9qZWN0Um9sZVBlcm1pc3Npb25zJDogT2JzZXJ2YWJsZTxCb29sZWFuPlxuICBjYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Um9sZXMkOiBPYnNlcnZhYmxlPEJvb2xlYW4+O1xuICBjb21wYW55U2V0dGluZ3NNT2RlbCQ6IE9ic2VydmFibGU8YW55W10+O1xuICBkaXNhYmxlV29ya3NwYWNlID0gZmFsc2U7XG4gIGRpc2FibGVXb3Jrc3BhY2VEZWxldGUgPSBmYWxzZTtcbiAgZGlzYWJsZVdvcmtzcGFjZWhpZGUgPSBmYWxzZTtcbiAgZm9ybXM6IGFueTtcbiAgY3VzdGFwcDogYW55O1xuICBwcm9qZWN0Um9sZUNvbmZpZ3VyYXRpb246IGFueTtcbiAgcm9sZUNvbmZpZ3VyYXRpb246IGFueTtcbiAgdGhlbWVNb2RlbDogVGhlbWVNb2RlbDtcbiAgZW1wbG95ZWVMaXN0OiBhbnlbXSA9IFtdO1xuICB0aGVtZU1vZGVsJDogT2JzZXJ2YWJsZTxUaGVtZU1vZGVsPjtcbiAgdGhlbWVCYXNlQ29sb3I6IHN0cmluZztcbiAgc2VsZWN0ZWRFbXBsb3llZTogc3RyaW5nO1xuICBsb2FkZWRFbXBsb3llZUxpc3Q6IEVtcGxveWVlTGlzdE1vZGVsW10gPSBbXTtcbiAgc2VsZWN0ZWRFbXBsb3llZUluZGV4OiBudW1iZXIgPSBudWxsO1xuICB2aWV3RW1wbG95ZWVQZXJtaXNzaW9uOiBib29sZWFuO1xuICBjYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHM6IEJvb2xlYW47XG4gIHByb2plY3RMaXN0OiBhbnkgPSBbXTtcbiAgcHJvamVjdEluZGV4OiBhbnk7XG4gIHNlYXJjaEJ5VGV4dExvYWRpbmc6IGJvb2xlYW47XG4gIEBJbnB1dChcInJlbG9hZFwiKVxuICBzZXQgcmVsb2FkQWxsKGRhdGE6IGJvb2xlYW4pIHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgdGhpcy5hZG1pblRvb2xzID0gW107XG4gICAgICB0aGlzLnRvb2xzID0gW107XG4gICAgICB0aGlzLm5nT25Jbml0KCk7XG4gICAgfVxuICB9XG4gIHB1YmxpYyBuZ0Rlc3Ryb3llZCQgPSBuZXcgU3ViamVjdCgpO1xuICB1c2VyU3RvcnlMaXN0OiBhbnkgPSBbXTtcbiAgdXNlclN0b3J5U2VhcmNoTGlzdDogYW55ID0gW107XG4gIGdvYWxTZWFyY2hMaXN0OiBhbnkgPSBbXTtcbiAgaXNFbmFibGVCdWdCb2FyZDogYm9vbGVhbjtcbiAgc2VsZWN0ZWRSb2xlSWRzOiBzdHJpbmdbXSA9IFtdO1xuICBkYXNoYm9hcmRVcGRhdGVJblByb2dyZXNzOiBib29sZWFuO1xuICB1c2VyczogYW55O1xuICBnb2FsSW5kZXg6IGFueTtcbiAgd29ya3NwYWNlRm9ybTogRm9ybUdyb3VwO1xuICBwcm9qZWN0U2VhcmNoUmVzdWx0czogYW55O1xuICBkZWxheVRpbWVJbnB1dCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgbWVudXNmZXRjaEluUHJvZ3Jlc3M6IGJvb2xlYW47XG4gIHdvcmtzcGFjZXNmZXRjaEluUHJvZ3Jlc3M6IGJvb2xlYW47XG4gIHdpZGdldHNmZXRjaEluUHJvZ3Jlc3M6IGJvb2xlYW47XG4gIHJlY2VudFNlYXJjaGVzZmV0Y2hJblByb2dyZXNzOiBib29sZWFuO1xuICBzZWFyY2hUYXNrczogU2VhcmNoVGFza1R5cGVNb2RlbDtcbiAgbG9hZGluZ1NlYXJjaE1lbnVEYXRhOiBib29sZWFuID0gZmFsc2U7XG4gIGRlZmF1bHREYXNoYm9hcmRJZDogc3RyaW5nO1xuICBzZWFyY2hCeUlkOiBib29sZWFuO1xuICBzZWFyY2hCeVRleHQ6IGJvb2xlYW47XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPFN0YXRlPixcbiAgICBwcml2YXRlIGNvb2tpZVNlcnZpY2U6IENvb2tpZVNlcnZpY2UsXG4gICAgcHVibGljIHJvdXRlczogUm91dGVyLFxuICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwdWJsaWMgYXV0aGVudGljYXRpb25TZXJ2aWNlOiBBdXRoZW50aWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgcnNzOiBSZWNlbnRTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uLFxuICAgIHByaXZhdGUgdGhlbWVTZXJ2aWNlOiBUaGVtZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY3Rpb25VcGRhdGVzJDogQWN0aW9ucyxcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBASW5qZWN0KFdJTkRPVykgcHJpdmF0ZSB3aW5kb3c6IFdpbmRvdyxcbiAgICBwcml2YXRlIGdvb2dsZUFuYWx5dGljc1NlcnZpY2U6IEdvb2dsZUFuYWx5dGljc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgLy90aGlzLm9uRm9jdXMoKTtcblxuICAgIC8vIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xuICAgIC8vIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5TZWFyY2hDbGljaywgSlNPTi5zdHJpbmdpZnkoZmFsc2UpLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xuICAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZG9lc1VzZXJIYXZlUGVybWlzc2lvbiwgeyBmZWF0dXJlSWQ6IEZlYXR1cmVJZHMuRmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMgfSkpO1xuICAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzJC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzID0gcmVzdWx0O1xuICAgIH0pXG4gICAgdGhpcy5pbml0aWFsaXplV29ya3NwYWNlRm9ybSgpO1xuICAgIHRoaXMucm91dGVzLmV2ZW50cy5zdWJzY3JpYmUodmFsID0+IHtcbiAgICAgIGlmICh0aGlzLmxvY2F0aW9uLnBhdGgoKSAhPSBcIlwiKSB7XG4gICAgICAgIHRoaXMudXJsID0gdGhpcy5sb2NhdGlvbi5wYXRoKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy8gdGhpcy53aWRnZXRTZXJ2aWNlLnNlbGVjdGVkV29ya3NwYWNlLnN1YnNjcmliZShpZCA9PiB7XG4gICAgLy8gICB0aGlzLnNlbGVjdGVkRGFzaGJvYXJkID0gaWQ7XG4gICAgLy8gfSk7XG4gICAgLy8gdGhpcy5hY3Rpb25VcGRhdGVzJFxuICAgIC8vICAgLnBpcGUoXG4gICAgLy8gICAgIHRha2VVbnRpbCh0aGlzLm5nRGVzdHJveWVkJCksXG4gICAgLy8gICAgIG9mVHlwZShBdXRoZW50aWNhdGlvbkFjdGlvblR5cGVzLkdldENvbXBhbnlUaGVtZUNvbXBsZXRlZCksXG4gICAgLy8gICAgIHRhcCgoKSA9PiB7XG4gICAgLy90aGlzLnRoZW1lTW9kZWwkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5nZXRUaGVtZU1vZGVsKSk7XG4gICAgLy90aGlzLnRoZW1lTW9kZWwkLnN1YnNjcmliZSh4ID0+IHRoaXMudGhlbWVNb2RlbCA9IHgpO1xuICAgIC8vIHRoaXMuZ2V0VGhlbWUoKTtcbiAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcbiAgICB0aGlzLnRoZW1lTW9kZWwgPSB0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soJ0NvbXBhbnlUaGVtZScpID8gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KFwiQ29tcGFueVRoZW1lXCIpKSA6IG51bGw7XG4gICAgdGhpcy50aGVtZVNlcnZpY2UuY2hhbmdlVGhlbWUodGhpcy50aGVtZU1vZGVsKTtcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1haW5Mb2dvLCB0aGlzLnRoZW1lTW9kZWwuY29tcGFueU1haW5Mb2dvLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWluaUxvZ28sIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWluaUxvZ28sIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XG4gICAgdGhpcy50aGVtZU1vZGVsID0gdGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKCdDb21wYW55VGhlbWUnKSA/IEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChcIkNvbXBhbnlUaGVtZVwiKSkgOiBudWxsO1xuXG4gICAgdmFyIGNvbXBhbnlTZXR0aW5nc01vZGVsID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlTZXR0aW5ncykpO1xuXG4gICAgdGhpcy5jb21wYW55TWFpbkxvZ28gPSBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1haW5sb2dvXCIpICE9IG51bGwgPyBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1haW5sb2dvXCIpLnZhbHVlIDogdGhpcy5jb21wYW55TWFpbkxvZ287XG4gICAgdGhpcy5jb21wYW55TWluaUxvZ28gPSBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1pbmlsb2dvXCIpICE9IG51bGwgPyBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1pbmlsb2dvXCIpLnZhbHVlIDogdGhpcy5jb21wYW55TWluaUxvZ287XG5cbiAgICAvL2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2hvcnRjdXQtZmF2LWljb25cIikuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCB0aGlzLnRoZW1lTW9kZWwuY29tcGFueU1pbmlMb2dvKTtcbiAgICB0aGlzLnRoZW1lQmFzZUNvbG9yID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RoZW1lQ29sb3InKTtcbiAgICAvLyAvLyB0aGlzLnRoZW1lTW9kZWwgPSB0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soJ0NvbXBhbnlUaGVtZScpID8gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KFwiQ29tcGFueVRoZW1lXCIpKSA6IG51bGw7XG4gICAgLy8gLy8gaWYgKHRoaXMudGhlbWVNb2RlbCAmJiB0aGlzLnRoZW1lTW9kZWwuY29tcGFueVRoZW1lSWQgIT09IFwiMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIpIHtcbiAgICAvLyAvLyAgIHRoaXMudGhlbWVTZXJ2aWNlLmNoYW5nZVRoZW1lKHRoaXMudGhlbWVNb2RlbCk7XG4gICAgLy8gLy8gICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1haW5Mb2dvLCB0aGlzLnRoZW1lTW9kZWwuY29tcGFueU1haW5Mb2dvLCBudWxsKTtcbiAgICAvLyAvLyAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWluaUxvZ28sIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWluaUxvZ28sIG51bGwpO1xuICAgIC8vIC8vIH1cbiAgICAvLyAvLyBlbHNlIHtcbiAgICAvLyAvLyAgIHZhciB0aGVtZU1vZGVsID0gbmV3IFRoZW1lTW9kZWwoKVxuICAgIC8vIC8vICAgdGhlbWVNb2RlbC5jb21wYW55VGhlbWVJZCA9IFwiMDkyOUQzNUEtMzU3My00QjA2LTkzRkItQzdENDZBQUZBOTE4XCI7XG4gICAgLy8gLy8gICAvLyB0aGVtZU1vZGVsLmNvbXBhbnlNaW5pTG9nbyA9IFwiYXNzZXRzL2ltYWdlcy9Mb2dvLWZhdmljb24ucG5nXCI7XG4gICAgLy8gLy8gICAvLyB0aGVtZU1vZGVsLmNvbXBhbnlNYWluTG9nbyA9IFwiYXNzZXRzL2ltYWdlcy9NYWluLUxvZ28ucG5nXCI7XG4gICAgLy8gLy8gICB0aGlzLnRoZW1lTW9kZWwgPSB0aGVtZU1vZGVsO1xuICAgIC8vIC8vICAgdGhpcy50aGVtZVNlcnZpY2UuY2hhbmdlVGhlbWUodGhlbWVNb2RlbCk7XG4gICAgLy8gLy8gICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1haW5Mb2dvLCB0aGlzLnRoZW1lTW9kZWwuY29tcGFueU1haW5Mb2dvLCBudWxsKTtcbiAgICAvLyAvLyAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWluaUxvZ28sIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWluaUxvZ28sIG51bGwpO1xuICAgIC8vIC8vIH1cbiAgICAvLyAvLyB0aGlzLmNvbXBhbnlNYWluTG9nbyA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWFpbkxvZ28pO1xuICAgIC8vIC8vIHRoaXMuY29tcGFueU1pbmlMb2dvID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNaW5pTG9nbyk7XG4gICAgLy8gLy8gLy90aGlzLmNoYW5nZUZhdkljb24oKTtcbiAgICAvLyAvLyB0aGlzLnRoZW1lQmFzZUNvbG9yID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RoZW1lQ29sb3InKTtcbiAgICAvL3RoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIC8vICAgfSlcbiAgICAvLyApXG4gICAgLy8gLnN1YnNjcmliZSgpO1xuXG5cbiAgICAvLyB0aGlzLmFjdGlvblVwZGF0ZXMkXG4gICAgLy8gICAucGlwZShcbiAgICAvLyAgICAgdGFrZVVudGlsKHRoaXMubmdEZXN0cm95ZWQkKSxcbiAgICAvLyAgICAgb2ZUeXBlKFdvcmtzcGFjZXNBY3Rpb25UeXBlcy5Mb2FkV29ya3NwYWNlQnlJZENvbXBsZXRlZCksXG4gICAgLy8gICAgIHRhcCgoZGF0YTogYW55KSA9PiB7XG4gICAgLy8gICAgICAgdmFyIHdvcmtzcGFjZXNMaXN0ID0gZGF0YS5zZWFyY2hXb3Jrc3BhY2VzU3VjY2VzcztcbiAgICAvLyAgICAgICB0aGlzLmRhc2hib2FyZFVwZGF0ZUluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAvLyAgICAgICAvLyB0aGlzLmNsb3NlQWRkV29ya3NwYWNlRGlhbG9nKCk7XG4gICAgLy8gICAgICAgdGhpcy5kaXNhYmxlV29ya3NwYWNlID0gZmFsc2U7XG4gICAgLy8gICAgICAgaWYgKHdvcmtzcGFjZXNMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAvLyAgICAgICAgIHRoaXMud29ya3NwYWNlcy5wdXNoKHdvcmtzcGFjZXNMaXN0WzBdKTtcbiAgICAvLyAgICAgICAgIHRoaXMuZGlzcGxheSA9IGZhbHNlO1xuICAgIC8vICAgICAgICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XG4gICAgLy8gICAgICAgICB0aGlzLm9wZW5OZXdEYXNoYm9hcmQuZW1pdCh3b3Jrc3BhY2VzTGlzdFswXS53b3Jrc3BhY2VJZClcbiAgICAvLyAgICAgICB9XG5cbiAgICAvLyAgICAgfSlcbiAgICAvLyAgICkuc3Vic2NyaWJlKCk7XG5cbiAgICAvL3RoaXMuZ2V0QWxsUHJvamVjdHMoKTtcblxuICAgIHRoaXMuZGVsYXlUaW1lSW5wdXQucGlwZShcbiAgICAgIGRlYm91bmNlVGltZSgyMDAwKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgdGhpcy5TZWFyY2hJdGVtKHZhbHVlKTtcbiAgICAgIH0pO1xuXG4gIH1cblxuICBnZXRUaGVtZSgpIHtcbiAgICB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5nZXRUaGVtZXMoKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xuICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KCdDb21wYW55VGhlbWUnLCBKU09OLnN0cmluZ2lmeShyZXNwb25zZS5kYXRhKSwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcbiAgICAgICAgdGhpcy50aGVtZU1vZGVsID0gdGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKCdDb21wYW55VGhlbWUnKSA/IEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChcIkNvbXBhbnlUaGVtZVwiKSkgOiBudWxsO1xuICAgICAgICB0aGlzLnRoZW1lU2VydmljZS5jaGFuZ2VUaGVtZSh0aGlzLnRoZW1lTW9kZWwpO1xuICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1haW5Mb2dvLCB0aGlzLnRoZW1lTW9kZWwuY29tcGFueU1haW5Mb2dvLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xuICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1pbmlMb2dvLCB0aGlzLnRoZW1lTW9kZWwuY29tcGFueU1pbmlMb2dvLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xuICAgICAgICB0aGlzLnNpdGVVcmwgPSByZXNwb25zZS5kYXRhLnJlZ2lzdHJlclNpdGVBZGRyZXNzO1xuICAgICAgICB0aGlzLnRoZW1lTW9kZWwgPSB0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soJ0NvbXBhbnlUaGVtZScpID8gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KFwiQ29tcGFueVRoZW1lXCIpKSA6IG51bGw7XG5cbiAgICAgICAgdmFyIGNvbXBhbnlTZXR0aW5nc01vZGVsID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlTZXR0aW5ncykpO1xuXG4gICAgICAgIHRoaXMuY29tcGFueU1haW5Mb2dvID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtYWlubG9nb1wiKSAhPSBudWxsID8gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtYWlubG9nb1wiKS52YWx1ZSA6IHRoaXMuY29tcGFueU1haW5Mb2dvO1xuICAgICAgICB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWluaWxvZ29cIikgIT0gbnVsbCA/IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWluaWxvZ29cIikudmFsdWUgOiB0aGlzLmNvbXBhbnlNaW5pTG9nbztcblxuICAgICAgICBpZiAodGhpcy5jb21wYW55TWFpbkxvZ28gPT0gXCJcIiB8fCB0aGlzLmNvbXBhbnlNYWluTG9nbyA9PSBudWxsIHx8IHRoaXMuY29tcGFueU1haW5Mb2dvID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuY29tcGFueU1haW5Mb2dvID0gcmVzcG9uc2UuZGF0YS5jb21wYW55TWFpbkxvZ287XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY29tcGFueU1pbmlMb2dvID09IFwiXCIgfHwgdGhpcy5jb21wYW55TWluaUxvZ28gPT0gbnVsbCB8fCB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9IHJlc3BvbnNlLmRhdGEuY29tcGFueU1pbmlMb2dvO1xuICAgICAgICB9XG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2hvcnRjdXQtZmF2LWljb25cIikuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCB0aGlzLnRoZW1lTW9kZWwuY29tcGFueU1pbmlMb2dvKTtcbiAgICAgICAgdGhpcy50aGVtZUJhc2VDb2xvciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0aGVtZUNvbG9yJyk7XG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5jb250cm9sLnEnLCBbXSlcbiAga2V5T3BlbkV2ZW50KCkge1xuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgdGhpcy5kaXNwbGF5ID0gdHJ1ZTtcbiAgICB0aGlzLnNlYXJjaEJ5VGV4dCA9IGZhbHNlO1xuICAgIHRoaXMuc2VhcmNoQnlJZCA9IGZhbHNlO1xuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xuICAgIHRoaXMub25Gb2N1cygpXG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmNvbnRyb2wubScsIFtdKVxuICBrZXlDbG9zZUV2ZW50KCkge1xuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcbiAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICB0aGlzLnNlYXJjaEJ5VGV4dCA9IGZhbHNlO1xuICAgIHRoaXMuc2VhcmNoQnlJZCA9IGZhbHNlO1xuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5jb250cm9sLmInLCBbXSlcbiAgcmVtb3RlU2VhcmNoQnlUZXh0KCkge1xuICAgIHRoaXMuc2VhcmNoQnlJZCA9IGZhbHNlO1xuICAgIHRoaXMuc2VhcmNoQnlUZXh0ID0gdHJ1ZVxuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgLy90aGlzLmRpc3BsYXkgPSB0cnVlO1xuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5jb250cm9sLnknLCBbXSlcbiAgcmVtb3RlU2VhcmNoQnlJZCgpIHtcbiAgICB0aGlzLnNlYXJjaEJ5VGV4dCA9IGZhbHNlXG4gICAgdGhpcy5zZWFyY2hCeUlkID0gdHJ1ZTtcbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIC8vdGhpcy5kaXNwbGF5ID0gdHJ1ZTtcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcbiAgfVxuXG4gIGNvbnZlcnRUb0xvY2FsVGltZSh0aW1lKSB7XG4gICAgdmFyIHV0Y0RhdGUgPSBtb21lbnQudXRjKHRpbWUpLmZvcm1hdCgpO1xuICAgIHZhciBsb2NhbERhdGUgPSBtb21lbnQudXRjKHV0Y0RhdGUpLmxvY2FsKCkuZm9ybWF0KCk7XG4gICAgcmV0dXJuIGxvY2FsRGF0ZTtcbiAgfVxuXG4gIGluaXRpYWxpemVXb3Jrc3BhY2VGb3JtKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRSb2xlSWRzID0gbnVsbDtcbiAgICB0aGlzLmRpc2FibGVXb3Jrc3BhY2UgPSBmYWxzZTtcbiAgICB0aGlzLmRpc2FibGVXb3Jrc3BhY2VoaWRlID0gZmFsc2U7XG4gICAgdGhpcy53b3Jrc3BhY2VGb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICB3b3Jrc3BhY2VOYW1lOiBuZXcgRm9ybUNvbnRyb2wobnVsbCxcbiAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKVxuICAgICAgICBdKVxuICAgICAgKSxcbiAgICAgIHNlbGVjdGVkUm9sZXM6IG5ldyBGb3JtQ29udHJvbChudWxsLFxuICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcbiAgICAgICAgXSlcbiAgICAgICksXG4gICAgICBkZXNjcmlwdGlvbjogbmV3IEZvcm1Db250cm9sKG51bGwsXG4gICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTAwMClcbiAgICAgICAgXSlcbiAgICAgICksXG4gICAgICBlZGl0Um9sZUlkczogbmV3IEZvcm1Db250cm9sKG51bGwsIFtdKSxcbiAgICAgIGRlbGV0ZVJvbGVJZHM6IG5ldyBGb3JtQ29udHJvbChudWxsLCBbXSlcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICB0aGlzLmRlZmF1bHREYXNoYm9hcmRJZCA9IHRoaXMuY29va2llU2VydmljZS5jaGVjayhMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkRlZmF1bHREYXNoYm9hcmQpID8gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGVmYXVsdERhc2hib2FyZCkpIDogbnVsbDs7XG5cbiAgICAvL3RoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IEdldENvbXBhbnlUaGVtZVRyaWdnZXJlZCgpKTtcbiAgICB0aGlzLmFkbWluVG9vbHMgPSBbXTtcbiAgICAvLyB2YXIgZGFzaGJvYXJkcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EYXNoYm9hcmRzKSk7XG4gICAgLy8gaWYgKGRhc2hib2FyZHMgJiYgZGFzaGJvYXJkcyAhPSBcIm51bGxcIikge1xuICAgIC8vICAgdGhpcy53b3Jrc3BhY2VzID0gdGhpcy53b3Jrc3BhY2VzRm9yTG9vcCA9IGRhc2hib2FyZHM7XG4gICAgLy8gfVxuICAgIC8vIHZhciBtZW51SXRlbXMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTWVudUl0ZW1zKSlcbiAgICAvLyBpZiAobWVudUl0ZW1zICYmIG1lbnVJdGVtcyAhPSBcIm51bGxcIikge1xuICAgIC8vICAgdGhpcy5tZW51SXRlbSA9IG1lbnVJdGVtcztcbiAgICAvLyAgIHRoaXMuaXRlbXMgPSB0aGlzLm1lbnVJdGVtLmZpbHRlcihpdGVtID0+IGl0ZW0udHlwZSAhPSBcImRyb3BEb3duXCIpO1xuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XG4gICAgLy8gfVxuICAgIC8vIHZhciB3aWRnZXRzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkZhdm91cml0ZVdpZGdldHMpKTtcbiAgICAvLyBpZiAod2lkZ2V0cyAmJiB3aWRnZXRzICE9IFwibnVsbFwiKSB7XG4gICAgLy8gICB0aGlzLndpZGdldHMgPSB0aGlzLm9yaWdpbmFsV2lkZ2V0cyA9IHdpZGdldHM7XG4gICAgLy8gfVxuICAgIC8vIHZhciByZWNlbnRTZWFyY2hlcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5SZWNlbnRTZWFyY2hlcykpO1xuICAgIC8vIGlmIChyZWNlbnRTZWFyY2hlcyAmJiByZWNlbnRTZWFyY2hlcyAhPSBcIm51bGxcIikge1xuICAgIC8vICAgdGhpcy5hbGxzZWFyY2hlcyA9IHRoaXMucmVjZW50U2VhcmNoZXMgPSByZWNlbnRTZWFyY2hlcztcbiAgICAvLyB9XG4gICAgLy8gdGhpcy5sb2FkV2lkZ2V0c0xpc3QoKTtcbiAgICAvLyAgdGhpcy5sb2FkV29ya3NwYWNlc0xpc3QoKTtcbiAgICB0aGlzLmdldFNvZnRMYWJlbENvbmZpZ3VyYXRpb25zKCk7XG4gICAgdGhpcy5nZXRDb21wYW55U2V0dGluZ3MoKTtcbiAgICB0aGlzLm1lbnVJdGVtcyQgPSB0aGlzLnN0b3JlLnBpcGUoXG4gICAgICBzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZ2V0Q3VycmVudEFjdGl2ZU1lbnVDYXRlZ29yeU1lbnVJdGVtcyksXG4gICAgICB0YXAobWVudUxpc3QgPT4gY29uc29sZS5sb2cobWVudUxpc3QpKVxuICAgICk7XG4gICAgLy8gdGhpcy5tZW51SXRlbXMkLnN1YnNjcmliZSh4ID0+IHtcbiAgICAvLyAgIHZhciBhID0geDtcbiAgICAvLyAgIHZhciBiID0gdGhpcy5tZW51SXRlbS5maWx0ZXIoaXRlbSA9PiBpdGVtLnR5cGUgIT0gXCJkcm9wRG93blwiKTtcblxuICAgIC8vICAgLy90aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcbiAgICAvLyAgIC8vdGhpcy5tZW51c2ZldGNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgIC8vIH0pO1xuXG4gICAgLy8gdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgR2V0QWxsTWVudUl0ZW1zVHJpZ2dlcmVkKE1lbnVDYXRlZ29yaWVzLk1haW4pKTtcblxuICAgIHZhciBjb21wYW55U2V0dGluZ3NNb2RlbCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55U2V0dGluZ3MpKTtcblxuICAgIHRoaXMuY29tcGFueU1haW5Mb2dvID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtYWlubG9nb1wiKSAhPSBudWxsID8gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtYWlubG9nb1wiKS52YWx1ZSA6IHRoaXMuY29tcGFueU1haW5Mb2dvO1xuICAgIHRoaXMuY29tcGFueU1pbmlMb2dvID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKSAhPSBudWxsID8gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKS52YWx1ZSA6IHRoaXMuY29tcGFueU1pbmlMb2dvO1xuXG4gICAgaWYgKHRoaXMuY29tcGFueU1haW5Mb2dvID09IFwiXCIgfHwgdGhpcy5jb21wYW55TWFpbkxvZ28gPT0gbnVsbCB8fCB0aGlzLmNvbXBhbnlNYWluTG9nbyA9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY29tcGFueU1haW5Mb2dvID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNYWluTG9nbyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbXBhbnlNaW5pTG9nbyA9PSBcIlwiIHx8IHRoaXMuY29tcGFueU1pbmlMb2dvID09IG51bGwgfHwgdGhpcy5jb21wYW55TWluaUxvZ28gPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWluaUxvZ28pO1xuICAgIH1cblxuICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hvcnRjdXQtZmF2LWljb24nKSkge1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nob3J0Y3V0LWZhdi1pY29uJykuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCB0aGlzLmNvbXBhbnlNaW5pTG9nbyk7XG4gICAgfVxuICAgIC8vdGhpcy5nZXRSZWNlbnRTZWFyY2hlcygpO1xuICAgIHRoaXMuc2VsZWN0ZWRMaXN0ID0gW107XG5cbiAgICAvLyB0aGlzLmN1c3RhcHAgPSB7XG4gICAgLy8gICBuYW1lOiBcIkN1c3RvbSBhcHBsaWNhdGlvbnNcIixcbiAgICAvLyAgIGxpbms6IFwiL2FwcGxpY2F0aW9ucy9jdXN0b20tYXBwbGljYXRpb25zXCIsXG4gICAgLy8gICBwZXJtaXNzaW9uOiB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0FkZE9yVXBkYXRlQXBwbGljYXRpb25zJFxuICAgIC8vIH1cbiAgICAvLyB0aGlzLmZvcm1zID0ge1xuICAgIC8vICAgbmFtZTogXCJGb3Jtc1wiLFxuICAgIC8vICAgbGluazogXCIvYXBwbGljYXRpb25zL3ZpZXctZm9ybXNcIixcbiAgICAvLyAgIHBlcm1pc3Npb246IHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfVmlld0Zvcm1zJFxuICAgIC8vIH1cbiAgICAvLyB0aGlzLnByb2plY3RSb2xlQ29uZmlndXJhdGlvbiA9IHtcbiAgICAvLyAgIG5hbWU6IFwiUHJvamVjdCByb2xlIGNvbmZpZ3VyYXRpb25cIixcbiAgICAvLyAgIGxpbms6IFwiL3JvbGVtYW5hZ2VtZW50L2VudGl0eXJvbGVtYW5hZ2VtZW50XCIsXG4gICAgLy8gICBwZXJtaXNzaW9uOiB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZVByb2plY3RSb2xlUGVybWlzc2lvbnMkXG4gICAgLy8gfVxuICAgIC8vIHRoaXMucm9sZUNvbmZpZ3VyYXRpb24gPSB7XG4gICAgLy8gICBuYW1lOiBcIlJvbGUgY29uZmlndXJhdGlvblwiLFxuICAgIC8vICAgbGluazogXCIvcm9sZW1hbmFnZW1lbnQvcm9sZW1hbmFnZW1lbnRcIixcbiAgICAvLyAgIHBlcm1pc3Npb246IHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfVmlld1JvbGVzJFxuICAgIC8vIH1cbiAgICAvLyB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0FkZE9yVXBkYXRlQXBwbGljYXRpb25zJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZG9lc1VzZXJIYXZlUGVybWlzc2lvbiwgeyBmZWF0dXJlSWQ6IEZlYXR1cmVJZHMuRmVhdHVyZV9BZGRPclVwZGF0ZUFwcGxpY2F0aW9ucyB9KSk7XG4gICAgLy8gdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUFwcGxpY2F0aW9ucyQuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAvLyAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVBcHBsaWNhdGlvbnMgPSByZXN1bHQ7XG4gICAgLy8gICBpZiAocmVzdWx0KSB7XG4gICAgLy8gICAgIHRoaXMuYWRtaW5Ub29scy5zb21lKChmbG93KSA9PiBmbG93Lm5hbWUgPT0gJ0N1c3RvbSBhcHBsaWNhdGlvbnMnKSA/IG51bGwgOiB0aGlzLmFkbWluVG9vbHMucHVzaCh0aGlzLmN1c3RhcHApO1xuICAgIC8vICAgfVxuICAgIC8vIH0pXG4gICAgLy8gdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUZvcm0kID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5kb2VzVXNlckhhdmVQZXJtaXNzaW9uLCB7IGZlYXR1cmVJZDogRmVhdHVyZUlkcy5GZWF0dXJlX0FkZE9yVXBkYXRlRm9ybSB9KSk7XG4gICAgLy8gdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUZvcm0kLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgLy8gICB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0FkZE9yVXBkYXRlRm9ybSA9IHJlc3VsdDtcbiAgICAvLyAgIGlmIChyZXN1bHQpIHtcbiAgICAvLyAgICAgdGhpcy5hZG1pblRvb2xzLnNvbWUoKGZsb3cpID0+IGZsb3cubmFtZSA9PSAnRm9ybXMnKSA/IG51bGwgOiB0aGlzLmFkbWluVG9vbHMucHVzaCh0aGlzLmZvcm1zKTtcbiAgICAvLyAgIH1cbiAgICAvLyB9KVxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfVmlld0Zvcm1zJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZG9lc1VzZXJIYXZlUGVybWlzc2lvbiwgeyBmZWF0dXJlSWQ6IEZlYXR1cmVJZHMuRmVhdHVyZV9WaWV3Rm9ybXMgfSkpOyAgICAvLyAvL3RoaXMucm91dGUudXJsLnN1YnNjcmliZSgodXJsKSA9PiB0aGlzLnVybCA9IHVybC50b1N0cmluZygpKTtcbiAgICAvLyB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdGb3JtcyQuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAvLyAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfVmlld0Zvcm1zID0gcmVzdWx0O1xuICAgIC8vICAgaWYgKHJlc3VsdCkge1xuICAgIC8vICAgICB0aGlzLmFkbWluVG9vbHMuc29tZSgoZmxvdykgPT4gZmxvdy5uYW1lID09ICdGb3JtcycpID8gbnVsbCA6IHRoaXMuYWRtaW5Ub29scy5wdXNoKHRoaXMuZm9ybXMpO1xuICAgIC8vICAgfVxuICAgIC8vIH0pXG4gICAgLy8gdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9NYW5hZ2VQcm9qZWN0Um9sZVBlcm1pc3Npb25zJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZG9lc1VzZXJIYXZlUGVybWlzc2lvbiwgeyBmZWF0dXJlSWQ6IEZlYXR1cmVJZHMuRmVhdHVyZV9NYW5hZ2VQcm9qZWN0Um9sZVBlcm1pc3Npb25zIH0pKTtcbiAgICAvLyB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZVByb2plY3RSb2xlUGVybWlzc2lvbnMkLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgLy8gICB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZVByb2plY3RSb2xlUGVybWlzc2lvbnMgPSByZXN1bHQ7XG4gICAgLy8gICBpZiAocmVzdWx0KSB7XG4gICAgLy8gICAgIHRoaXMuYWRtaW5Ub29scy5zb21lKChmbG93KSA9PiBmbG93Lm5hbWUgPT0gJ1Byb2plY3Qgcm9sZSBjb25maWd1cmF0aW9uJykgPyBudWxsIDogdGhpcy5hZG1pblRvb2xzLnB1c2godGhpcy5wcm9qZWN0Um9sZUNvbmZpZ3VyYXRpb24pO1xuICAgIC8vICAgfVxuICAgIC8vIH0pXG4gICAgLy8gdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Um9sZXMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5kb2VzVXNlckhhdmVQZXJtaXNzaW9uLCB7IGZlYXR1cmVJZDogRmVhdHVyZUlkcy5GZWF0dXJlX1ZpZXdSb2xlcyB9KSk7XG4gICAgLy8gdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Um9sZXMkLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgLy8gICB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdSb2xlcyA9IHJlc3VsdDtcbiAgICAvLyAgIGlmIChyZXN1bHQpIHtcbiAgICAvLyAgICAgdGhpcy5hZG1pblRvb2xzLnNvbWUoKGZsb3cpID0+IGZsb3cubmFtZSA9PSAnUm9sZSBjb25maWd1cmF0aW9uJykgPyBudWxsIDogdGhpcy5hZG1pblRvb2xzLnB1c2godGhpcy5yb2xlQ29uZmlndXJhdGlvbik7XG4gICAgLy8gICB9XG4gICAgLy8gfSlcbiAgICAvLyB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmRvZXNVc2VySGF2ZVBlcm1pc3Npb24sIHsgZmVhdHVyZUlkOiBGZWF0dXJlSWRzLkZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzIH0pKTtcbiAgICAvLyB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscyQuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgLy8gICB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscyA9IHJlc3VsdDtcbiAgICAvLyAgIGlmIChyZXN1bHQpIHtcbiAgICAvLyAgICAvLyB0aGlzLmdldEFsbEVtcGxveWVlcygpO1xuICAgIC8vICAgfVxuICAgIC8vIH0pXG4gICAgdGhpcy50b29scyA9IHRoaXMuYWRtaW5Ub29scztcbiAgICAvL3RoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XG4gICAgLy90aGlzLmdldEFsbEVtcGxveWVlcygpO1xuICAgIC8vIHRoaXMubG9hZFdpZGdldHNMaXN0KG51bGwpO1xuICAgIC8vIHRoaXMubG9hZFdvcmtzcGFjZXNMaXN0KCk7XG4gICAgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ID0gW107XG4gICAgdGhpcy5nb2FsU2VhcmNoTGlzdCA9IFtdO1xuICAgIC8vIGlmKHRoaXMuaXRlbXMubGVuZ3RoPjApIHtcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7IHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xuICAgIC8vIH0gZWxzZSBpZih0aGlzLnRvb2xzLmxlbmd0aD4wKSB7XG4gICAgLy8gICB0aGlzLnQ9MDsgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudG9vbHNbMF07XG4gICAgLy8gfSBlbHNlIGlmKHRoaXMud29ya3NwYWNlcy5sZW5ndGg+MCkge1xuICAgIC8vICAgdGhpcy53cyA9IDA7IHRoaXMuaXRlbUNsaWNrZWQgPXRoaXMud29ya3NwYWNlc1swXTtcbiAgICAvLyB9ICBcblxuICAgIHRoaXMuU2VhcmNoSXRlbSA9IF8uZGVib3VuY2UodGhpcy5TZWFyY2hJdGVtLCAxMDAwKTtcbiAgICB0aGlzLnJvdXRlcy5ldmVudHNcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXJBY3RpdmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICB9XG5cbiAgb3BlbkluZm8oaW5mb1BvcE92ZXIpIHtcbiAgICBpbmZvUG9wT3Zlci5vcGVuUG9wb3ZlcigpO1xuICB9XG5cbiAgLy8gZ2V0QWxsUHJvamVjdHMoKSB7XG4gIC8vICAgY29uc3QgcHJvamVjdFNlYXJjaFJlc3VsdCA9IG5ldyBQcm9qZWN0U2VhcmNoQ3JpdGVyaWFJbnB1dE1vZGVsKCk7XG4gIC8vICAgcHJvamVjdFNlYXJjaFJlc3VsdC5pc0FyY2hpdmVkID0gZmFsc2U7XG4gIC8vICAgdGhpcy5jb21tb25TZXJ2aWNlLnNlYXJjaFByb2plY3RzKHByb2plY3RTZWFyY2hSZXN1bHQpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAvLyAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgPT0gdHJ1ZSkge1xuICAvLyAgICAgICBpZiAocmVzcG9uc2UuZGF0YSkge1xuICAvLyAgICAgICAgIHRoaXMucHJvamVjdFNlYXJjaFJlc3VsdHMgPSByZXNwb25zZS5kYXRhO1xuICAvLyAgICAgICB9XG4gIC8vICAgICB9XG4gIC8vICAgICBlbHNlIHtcbiAgLy8gICAgICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZSA9IHJlc3BvbnNlLmFwaVJlc3BvbnNlTWVzc2FnZXNbMF0ubWVzc2FnZTtcbiAgLy8gICAgICAgdGhpcy5wcm9qZWN0U2VhcmNoUmVzdWx0cyA9IFtdO1xuICAvLyAgICAgICB0aGlzLnRvYXN0ci5lcnJvcih0aGlzLnZhbGlkYXRpb25NZXNzYWdlKTtcbiAgLy8gICAgIH1cbiAgLy8gICB9KVxuICAvLyB9XG5cbiAgZ2V0Q29tcGFueVNldHRpbmdzKCkge1xuICAgIGxldCBjb21wYW55U2V0dGluZ3NNb2RlbCA9IFtdO1xuICAgIHRoaXMuY29tcGFueVNldHRpbmdzTU9kZWwkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5nZXRDb21wYW55U2V0dGluZ3MpKTtcbiAgICB0aGlzLmNvbXBhbnlTZXR0aW5nc01PZGVsJC5zdWJzY3JpYmUoKHgpID0+IGNvbXBhbnlTZXR0aW5nc01vZGVsID0geCk7XG4gICAgbGV0IGJ1Z0JvYXJkUmVzdWx0ID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmlsdGVyKGl0ZW0gPT4gaXRlbS5rZXkudHJpbSgpID09IFwiRW5hYmxlQnVnQm9hcmRcIik7XG4gICAgaWYgKGJ1Z0JvYXJkUmVzdWx0ICYmIGJ1Z0JvYXJkUmVzdWx0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuaXNFbmFibGVCdWdCb2FyZCA9IGJ1Z0JvYXJkUmVzdWx0WzBdLnZhbHVlID09IFwiMVwiID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMuY29tcGFueU1haW5Mb2dvID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtYWlubG9nb1wiKSAhPSBudWxsID8gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtYWlubG9nb1wiKS52YWx1ZSA6IHRoaXMuY29tcGFueU1haW5Mb2dvO1xuICAgIHRoaXMuY29tcGFueU1pbmlMb2dvID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKSAhPSBudWxsID8gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKS52YWx1ZSA6IHRoaXMuY29tcGFueU1pbmlMb2dvO1xuXG4gICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaG9ydGN1dC1mYXYtaWNvbicpKSB7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hvcnRjdXQtZmF2LWljb24nKS5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIHRoaXMuY29tcGFueU1pbmlMb2dvKTtcbiAgICB9XG4gIH1cblxuICBsb2FkU2VhcmNoRGF0YSgpIHtcbiAgICB2YXIgbWVudUl0ZW1zID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLk1lbnVJdGVtcykpXG4gICAgaWYgKG1lbnVJdGVtcyAmJiBtZW51SXRlbXMgIT0gXCJudWxsXCIpIHtcbiAgICAgIHRoaXMubWVudUl0ZW0gPSBtZW51SXRlbXM7XG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5tZW51SXRlbS5maWx0ZXIoaXRlbSA9PiBpdGVtLnR5cGUgIT0gXCJkcm9wRG93blwiKTtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xuICAgIH1cbiAgICB2YXIgd2lkZ2V0cyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5GYXZvdXJpdGVXaWRnZXRzKSk7XG4gICAgaWYgKHdpZGdldHMgJiYgd2lkZ2V0cyAhPSBcIm51bGxcIikge1xuICAgICAgdGhpcy53aWRnZXRzID0gdGhpcy5vcmlnaW5hbFdpZGdldHMgPSB3aWRnZXRzO1xuICAgIH1cbiAgICB2YXIgcmVjZW50U2VhcmNoZXMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuUmVjZW50U2VhcmNoZXMpKTtcbiAgICBpZiAocmVjZW50U2VhcmNoZXMgJiYgcmVjZW50U2VhcmNoZXMgIT0gXCJudWxsXCIpIHtcbiAgICAgIHRoaXMuYWxsc2VhcmNoZXMgPSB0aGlzLnJlY2VudFNlYXJjaGVzID0gcmVjZW50U2VhcmNoZXM7XG4gICAgfVxuICB9XG4gIHRyYW5zbGF0ZWFwcGxpY2F0aW9ubmFtZShpdGVtKSB7XG4gICAgaWYgKGl0ZW0gPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBsb2NhbHZhcmlhYmxlID0gaXRlbS50cmltKCk7XG4gICAgdmFyIG5hbWUgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcIkFQUC5cIiArIGxvY2FsdmFyaWFibGUpO1xuICAgIGlmIChuYW1lLmluZGV4T2YoXCJBUFAuXCIpICE9IC0xKSB7XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXR1cm4gbmFtZTtcbiAgICB9XG4gIH1cblxuICBvbkZvY3VzKCkge1xuICAgIGlmICghdGhpcy5zZWFyY2hCeUlkICYmICF0aGlzLnNlYXJjaEJ5VGV4dCkge1xuICAgICAgdmFyIHJldHJpZXZlRGFzaGJvYXJkczogYm9vbGVhbiA9IHRydWU7XG4gICAgICB2YXIgZGFzaGJvYXJkcyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGFzaGJvYXJkcyk7XG4gICAgICBpZiAoZGFzaGJvYXJkcyAmJiBkYXNoYm9hcmRzICE9IFwibnVsbFwiKSB7XG4gICAgICAgIHJldHJpZXZlRGFzaGJvYXJkcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLndvcmtzcGFjZXNGb3JMb29wID0gSlNPTi5wYXJzZShkYXNoYm9hcmRzKTtcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoVGV4dCkge1xuICAgICAgICAgIHRoaXMud29ya3NwYWNlcyA9IHRoaXMud29ya3NwYWNlc0Zvckxvb3AuZmlsdGVyKFxuICAgICAgICAgICAgaXRlbSA9PlxuICAgICAgICAgICAgICBpdGVtLndvcmtzcGFjZU5hbWVcbiAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgIC5pbmNsdWRlcyh0aGlzLnNlYXJjaFRleHQudG9Mb3dlckNhc2UoKSkgIT09XG4gICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLndvcmtzcGFjZXMgPSB0aGlzLndvcmtzcGFjZXNGb3JMb29wO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoISh0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soTG9jYWxTdG9yYWdlUHJvcGVydGllcy5TZWFyY2hDbGljaykgJiYgSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuU2VhcmNoQ2xpY2spKSA9PSB0cnVlKSkge1xuICAgICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcbiAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlNlYXJjaENsaWNrLCBKU09OLnN0cmluZ2lmeSh0cnVlKSwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcbiAgICAgICAgLy8gdGhpcy5sb2FkV2lkZ2V0c0xpc3QobnVsbCk7XG4gICAgICAgIC8vIHRoaXMubG9hZFdvcmtzcGFjZXNMaXN0KCk7XG4gICAgICAgIC8vIHRoaXMuZ2V0QWxsTWVudUl0ZW1zKCk7XG5cbiAgICAgICAgdGhpcy5sb2FkaW5nU2VhcmNoTWVudURhdGEgPSB0cnVlO1xuICAgICAgICB0aGlzLnJzcy5zZWFyY2hNZW51RGF0YShyZXRyaWV2ZURhc2hib2FyZHMpXG4gICAgICAgICAgLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMuc3VjY2VzcyAmJiByZXMuZGF0YSkge1xuICAgICAgICAgICAgICBpZiAocmVzLmRhdGEud29ya3NwYWNlcykge1xuICAgICAgICAgICAgICAgIHRoaXMud29ya3NwYWNlcyA9IHJlcy5kYXRhLndvcmtzcGFjZXM7XG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EYXNoYm9hcmRzLCBKU09OLnN0cmluZ2lmeSh0aGlzLndvcmtzcGFjZXMpKTtcbiAgICAgICAgICAgICAgICB0aGlzLndvcmtzcGFjZXNGb3JMb29wID0gdGhpcy53b3Jrc3BhY2VzO1xuICAgICAgICAgICAgICAgIC8vdGhpcy5kZWZhdWx0RGFzaGJvYXJkID0gdGhpcy53b3Jrc3BhY2VzLmZpbmQoaSA9PiBpLmlzRGVmYXVsdCA9PSB0cnVlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAocmVzLmRhdGEud2lkZ2V0cykge1xuICAgICAgICAgICAgICAgIHRoaXMub3JpZ2luYWxXaWRnZXRzID0gcmVzLmRhdGEud2lkZ2V0cy5zb3J0KChhLCBiKSA9PlxuICAgICAgICAgICAgICAgICAgYS53aWRnZXROYW1lLnRvTG93ZXJDYXNlKCkgPiBiLndpZGdldE5hbWUudG9Mb3dlckNhc2UoKSA/IDEgOiAtMVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy53aWRnZXRzID0gdGhpcy5vcmlnaW5hbFdpZGdldHM7XG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5GYXZvdXJpdGVXaWRnZXRzLCBKU09OLnN0cmluZ2lmeSh0aGlzLndpZGdldHMpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAocmVzLmRhdGEubWVudUl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgLy8gdmFyIGFwcGxpY2F0aW9ucyA9IHJlcy5kYXRhLm1lbnVJdGVtcy5maWx0ZXIoZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICAgICAgICAvLyAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgLy8gICAgIHgubWVudUNhdGVnb3J5ICYmXG4gICAgICAgICAgICAgICAgLy8gICAgIE1lbnVDYXRlZ29yaWVzLk1haW4gJiZcbiAgICAgICAgICAgICAgICAvLyAgICAgeC5tZW51Q2F0ZWdvcnkudG9Mb3dlckNhc2UoKSA9PT0gTWVudUNhdGVnb3JpZXMuTWFpbi50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgLy8gICApO1xuICAgICAgICAgICAgICAgIC8vIH0pXG4gICAgICAgICAgICAgICAgdGhpcy5tZW51SXRlbSA9IHJlcy5kYXRhLm1lbnVJdGVtcztcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLk1lbnVJdGVtcywgSlNPTi5zdHJpbmdpZnkodGhpcy5tZW51SXRlbSkpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLm1lbnVJdGVtLmZpbHRlcihpdGVtID0+IGl0ZW0udHlwZSAhPSBcImRyb3BEb3duXCIpO1xuICAgICAgICAgICAgICAgIC8vdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnJlY2VudFNlYXJjaCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWxsc2VhcmNoZXMgPSByZXMuZGF0YS5yZWNlbnRTZWFyY2g7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWNlbnRTZWFyY2hlcyA9IHRoaXMuYWxsc2VhcmNoZXM7XG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5SZWNlbnRTZWFyY2hlcywgSlNPTi5zdHJpbmdpZnkodGhpcy5hbGxzZWFyY2hlcykpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xuICAgICAgICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTG9hZEZhdm91cml0ZVdpZGdldHMsIEpTT04uc3RyaW5naWZ5KGZhbHNlKSwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcbiAgICAgICAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkxvYWRSZWNlbnRTZWFyY2hlcywgSlNPTi5zdHJpbmdpZnkoZmFsc2UpLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xuICAgICAgICAgICAgICB0aGlzLnJvdXRlckFjdGl2ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nU2VhcmNoTWVudURhdGEgPSBmYWxzZTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9hZFNlYXJjaERhdGEoKTtcbiAgICAgIH1cbiAgICAgIC8vIGVsc2Uge1xuICAgICAgLy8gICBpZiAoISh0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Mb2FkRmF2b3VyaXRlV2lkZ2V0cykgJiYgSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTG9hZEZhdm91cml0ZVdpZGdldHMpKSA9PSBmYWxzZSkpIHtcbiAgICAgIC8vICAgICB0aGlzLmxvYWRXaWRnZXRzTGlzdChudWxsLCB0cnVlKTtcbiAgICAgIC8vICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcbiAgICAgIC8vICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTG9hZEZhdm91cml0ZVdpZGdldHMsIEpTT04uc3RyaW5naWZ5KGZhbHNlKSwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcbiAgICAgIC8vICAgfVxuICAgICAgLy8gICBpZiAoISh0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Mb2FkUmVjZW50U2VhcmNoZXMpICYmIEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkxvYWRSZWNlbnRTZWFyY2hlcykpID09IGZhbHNlKSkge1xuICAgICAgLy8gICAgIHRoaXMuZ2V0UmVjZW50U2VhcmNoZXMoKTtcbiAgICAgIC8vICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcbiAgICAgIC8vICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTG9hZFJlY2VudFNlYXJjaGVzLCBKU09OLnN0cmluZ2lmeShmYWxzZSksIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XG4gICAgICAvLyAgIH1cbiAgICAgIC8vICAgdGhpcy5yb3V0ZXJBY3RpdmUoKTtcbiAgICAgIC8vIH1cbiAgICAgIHRoaXMucm91dGVyQWN0aXZlKCk7XG4gICAgfVxuICAgIHRoaXMuZGlzcGxheSA9IHRydWU7XG4gICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XG4gIH1cblxuICByb3V0ZXJBY3RpdmUoKSB7XG4gICAgaWYgKHRoaXMucm91dGVzLnVybC5pbmNsdWRlcyhcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZFwiKSAmJiB0aGlzLnJvdXRlcy51cmwuc3BsaXQoXCIvXCIpWzNdKSB7XG4gICAgICB2YXIgZGFzaGJvYXJkSWQgPSB0aGlzLnJvdXRlcy51cmwuc3BsaXQoXCIvXCIpWzNdO1xuICAgICAgaWYgKGRhc2hib2FyZElkICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHZhciBpbmRleCA9IHRoaXMud29ya3NwYWNlcy5maW5kSW5kZXgoaSA9PiBpLndvcmtzcGFjZUlkID09IGRhc2hib2FyZElkKTtcbiAgICAgICAgdGhpcy53cyA9IGluZGV4O1xuICAgICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy5ycyA9IG51bGw7XG4gICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbdGhpcy53c107XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnJvdXRlcy51cmwuaW5jbHVkZXMoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC93aWRnZXRzXCIpICYmIHRoaXMucm91dGVzLnVybC5zcGxpdChcIi9cIilbM10pIHtcbiAgICAgIHZhciB3aWRnZXRJZCA9IHRoaXMucm91dGVzLnVybC5zcGxpdChcIi9cIilbM107XG4gICAgICBpZiAod2lkZ2V0SWQgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdmFyIGluZGV4ID0gdGhpcy53aWRnZXRzLmZpbmRJbmRleChpID0+IGkud2lkZ2V0SWQgPT0gd2lkZ2V0SWQpO1xuICAgICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgICAgdGhpcy53ZCA9IGluZGV4O1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud3MgPSB0aGlzLnJzID0gbnVsbDtcbiAgICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzW3RoaXMud2RdO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdmFyIGluZGV4UnMgPSB0aGlzLnJlY2VudFNlYXJjaGVzLmZpbmRJbmRleChpID0+IGkuaXRlbUlkID09IHdpZGdldElkKVxuICAgICAgICAgIHRoaXMucnMgPSBpbmRleFJzO1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud3MgPSB0aGlzLndkID0gbnVsbDtcbiAgICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1t0aGlzLnJzXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgaW5kZXggPSB0aGlzLml0ZW1zLmZpbmRJbmRleChpID0+IHRoaXMucm91dGVzLnVybCA9PSBcIi9cIiArIGkuc3RhdGUpO1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gaW5kZXg7XG4gICAgICB0aGlzLndzID0gdGhpcy53ZCA9IHRoaXMucnMgPSBudWxsO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZFJvd0luZGV4XTtcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIGxvYWRXb3Jrc3BhY2VzTGlzdCgpIHtcbiAgICB0aGlzLndvcmtzcGFjZXNmZXRjaEluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgIHZhciB3b3Jrc3BhY2VsaXN0ID0gbmV3IFdvcmtzcGFjZUxpc3QoKTtcbiAgICB3b3Jrc3BhY2VsaXN0LndvcmtzcGFjZUlkID0gXCJudWxsXCI7XG4gICAgd29ya3NwYWNlbGlzdC5pc0hpZGRlbiA9IGZhbHNlO1xuICAgIHRoaXMuY29tbW9uU2VydmljZS5HZXRXb3Jrc3BhY2VMaXN0KHdvcmtzcGFjZWxpc3QpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgIHRoaXMud29ya3NwYWNlcyA9IHJlc3VsdC5kYXRhO1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EYXNoYm9hcmRzLCBKU09OLnN0cmluZ2lmeShyZXN1bHQuZGF0YSkpO1xuICAgICAgdGhpcy53b3Jrc3BhY2VzRm9yTG9vcCA9IHRoaXMud29ya3NwYWNlcztcbiAgICAgIHRoaXMuZGVmYXVsdERhc2hib2FyZCA9IHRoaXMud29ya3NwYWNlcy5maW5kKGkgPT4gaS5pc0RlZmF1bHQgPT0gdHJ1ZSk7XG4gICAgICB0aGlzLndvcmtzcGFjZXNmZXRjaEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICB9KTtcbiAgICAvLyB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBMb2FkV29ya3NwYWNlc0xpc3RUcmlnZ2VyZWQodGhpcy53b3Jrc3BhY2VsaXN0KSk7XG4gIH07XG5cbiAgb3BlbkFwcHMoKSB7XG4gICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW1wiYXBwLXN0b3JlL3dpZGdldHNcIl0pO1xuICB9XG5cbiAgbG9hZFdpZGdldHNMaXN0KHNlYXJjaFRleHQsIHN0b3JlID0gZmFsc2UpIHtcbiAgICB0aGlzLndpZGdldHNmZXRjaEluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgIHRoaXMud2lkZ2V0ID0gbmV3IFdpZGdldExpc3QoKTtcbiAgICB0aGlzLndpZGdldC53aWRnZXRJZCA9IFwibnVsbFwiO1xuICAgIHRoaXMud2lkZ2V0LmlzQXJjaGl2ZWQgPSBmYWxzZTtcbiAgICB0aGlzLndpZGdldC5wYWdlTnVtYmVyID0gbnVsbDtcbiAgICB0aGlzLndpZGdldC5wYWdlU2l6ZSA9IG51bGw7XG4gICAgdGhpcy53aWRnZXQuc29ydERpcmVjdGlvbkFzYyA9IHRydWU7XG4gICAgdGhpcy53aWRnZXQuaXNGYXZvdXJpdGVXaWRnZXQgPSB0cnVlO1xuICAgIGlmIChzZWFyY2hUZXh0KVxuICAgICAgdGhpcy53aWRnZXQuc2VhcmNoVGV4dCA9IHNlYXJjaFRleHQ7XG5cbiAgICB0aGlzLmNvbW1vblNlcnZpY2UuR2V0V2lkZ2V0c0Jhc2VkT25Vc2VyKHRoaXMud2lkZ2V0KS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICB0aGlzLndpZGdldHMgPSBbXTtcbiAgICAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xuICAgICAgICB0aGlzLm9yaWdpbmFsV2lkZ2V0cyA9IHJlc3VsdC5kYXRhLnNvcnQoKGEsIGIpID0+XG4gICAgICAgICAgYS53aWRnZXROYW1lLnRvTG93ZXJDYXNlKCkgPiBiLndpZGdldE5hbWUudG9Mb3dlckNhc2UoKSA/IDEgOiAtMVxuICAgICAgICApO1xuICAgICAgICB0aGlzLndpZGdldHMgPSB0aGlzLm9yaWdpbmFsV2lkZ2V0cztcbiAgICAgICAgaWYgKHN0b3JlKSB7XG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5GYXZvdXJpdGVXaWRnZXRzLCBKU09OLnN0cmluZ2lmeSh0aGlzLndpZGdldHMpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLndpZGdldHNmZXRjaEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG5cbiAgICB9KTtcblxuICAgIHZhciBjb21wYW55U2V0dGluZ3NNb2RlbCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55U2V0dGluZ3MpKTtcblxuICAgIHRoaXMuY29tcGFueU1haW5Mb2dvID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtYWlubG9nb1wiKSAhPSBudWxsID8gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtYWlubG9nb1wiKS52YWx1ZSA6IHRoaXMuY29tcGFueU1haW5Mb2dvO1xuICAgIHRoaXMuY29tcGFueU1pbmlMb2dvID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKSAhPSBudWxsID8gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKS52YWx1ZSA6IHRoaXMuY29tcGFueU1pbmlMb2dvO1xuICAgIC8vIHRoaXMuY29tcGFueU1haW5Mb2dvID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNYWluTG9nbyk7XG4gICAgLy8gdGhpcy5jb21wYW55TWluaUxvZ28gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1pbmlMb2dvKTtcblxuICAgIGlmICh0aGlzLmNvbXBhbnlNYWluTG9nbyA9PSBcIlwiIHx8IHRoaXMuY29tcGFueU1haW5Mb2dvID09IG51bGwgfHwgdGhpcy5jb21wYW55TWFpbkxvZ28gPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmNvbXBhbnlNYWluTG9nbyA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWFpbkxvZ28pO1xuICAgIH1cbiAgICBpZiAodGhpcy5jb21wYW55TWluaUxvZ28gPT0gXCJcIiB8fCB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9PSBudWxsIHx8IHRoaXMuY29tcGFueU1pbmlMb2dvID09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jb21wYW55TWluaUxvZ28gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1pbmlMb2dvKTtcbiAgICB9XG5cbiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nob3J0Y3V0LWZhdi1pY29uJykpIHtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaG9ydGN1dC1mYXYtaWNvbicpLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgdGhpcy5jb21wYW55TWluaUxvZ28pO1xuICAgIH1cbiAgfVxuXG5cbiAgZ2V0QWxsRW1wbG95ZWVzKCkge1xuICAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZG9lc1VzZXJIYXZlUGVybWlzc2lvbiwgeyBmZWF0dXJlSWQ6IEZlYXR1cmVJZHMuRmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMgfSkpO1xuICAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzJC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzID0gcmVzdWx0O1xuICAgIH0pXG4gICAgbGV0IGVtcGxveWVlU3BlbnRUaW1lID0gbmV3IEVtcGxveWVlTGlzdElucHV0KCk7XG4gICAgZW1wbG95ZWVTcGVudFRpbWUuc29ydERpcmVjdGlvbkFzYyA9IHRydWU7XG4gICAgZW1wbG95ZWVTcGVudFRpbWUuaXNBY3RpdmUgPSB0cnVlO1xuICAgIC8vIHRoaXMuaHJEYXNoYm9hclNlcnZpY2UuR2V0QWxsRW1wbG95ZWVzKGVtcGxveWVlU3BlbnRUaW1lKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XG4gICAgLy8gICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAvLyAgICAgdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QgPSByZXN1bHQuZGF0YTtcbiAgICAvLyAgICAgaWYgKCEodGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMpKSB7XG4gICAgLy8gICAgICAgdmFyIGN1cnJlbnRVc2VySWQgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudFVzZXJJZCk7XG4gICAgLy8gICAgICAgdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QgPSB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdC5maWx0ZXIoeCA9PiAoeC51c2VySWQudG9Mb3dlckNhc2UoKSA9PSBjdXJyZW50VXNlcklkLnRvTG93ZXJDYXNlKCkpKTtcbiAgICAvLyAgICAgfVxuICAgIC8vICAgICB0aGlzLmVtcGxveWVlTGlzdCA9IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0O1xuICAgIC8vICAgfVxuICAgIC8vIH0pXG5cbiAgICBjb25zdCBlbXBsb3llZUxpc3RTZWFyY2hSZXN1bHQgPSBuZXcgRW1wbG95ZWVMaXN0TW9kZWwoKTtcbiAgICBlbXBsb3llZUxpc3RTZWFyY2hSZXN1bHQuc29ydERpcmVjdGlvbkFzYyA9IHRydWU7XG4gICAgdGhpcy5jb21tb25TZXJ2aWNlLmdldEFsbEVtcGxveWVlcyhlbXBsb3llZUxpc3RTZWFyY2hSZXN1bHQpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xuICAgICAgICB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdCA9IHJlc3VsdC5kYXRhO1xuICAgICAgICBpZiAoISh0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscykpIHtcbiAgICAgICAgICB2YXIgY3VycmVudFVzZXJJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKTtcbiAgICAgICAgICB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdCA9IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0LmZpbHRlcih4ID0+ICh4LnVzZXJJZC50b0xvd2VyQ2FzZSgpID09IGN1cnJlbnRVc2VySWQudG9Mb3dlckNhc2UoKSkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW1wbG95ZWVMaXN0ID0gdGhpcy5sb2FkZWRFbXBsb3llZUxpc3Q7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuICAvLyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gIC8vICAgdGhpcy5lID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gIC8vICAgbGV0IG91dFNpZGVDbGljayA9ICB0aGlzLmUuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsKCk9PntcbiAgLy8gICAgIHRoaXMuZGlzcGxheSA9IGZhbHNlO1xuICAvLyB9KTtcbiAgLy8gfVxuXG4gIE9wZW5NZW51SXRlbXMob3Blbk1lbnVQb3BVcCkge1xuICAgIG9wZW5NZW51UG9wVXAub3BlblBvcG92ZXIoKTtcbiAgfVxuXG4gIG9wZW5MZXZlbDJNZW51KGxpbmssIGV2ZW50KSB7XG4gICAgdGhpcy5zdGF0ZUx2bDEgPSBsaW5rO1xuICAgIHRoaXMuc3ViTGV2ZWxzID0gZXZlbnQ7XG4gIH1cblxuICBvcGVuTGV2ZWwzTWVudShsaW5rMSwgbGluazIsIGV2ZW50KSB7XG4gICAgdGhpcy5sZXZlbDNMaW5rMSA9IGxpbmsxO1xuICAgIHRoaXMubGV2ZWwzTGluazIgPSBsaW5rMjtcbiAgICB0aGlzLnN1YkxldmVsc0ZvckxldmVsMiA9IGV2ZW50O1xuICB9XG5cbiAgZ2V0QWxsTWVudUl0ZW1zKCkge1xuICAgIHRoaXMubWVudXNmZXRjaEluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IEdldEFsbE1lbnVJdGVtc1RyaWdnZXJlZChNZW51Q2F0ZWdvcmllcy5NYWluKSk7XG4gICAgY29uc3QgdXNlclJlZmVyZW5jZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlclJlZmVyZW5jZUlkKTtcbiAgICB0aGlzLmRlZmF1bHREYXNoYm9hcmRJZCA9IHRoaXMuY29va2llU2VydmljZS5jaGVjayhMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkRlZmF1bHREYXNoYm9hcmQpID8gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGVmYXVsdERhc2hib2FyZCkpIDogbnVsbDs7XG4gICAgaWYgKHRoaXMuZGVmYXVsdERhc2hib2FyZElkICYmIHVzZXJSZWZlcmVuY2UgIT0gXCJudWxsXCIgJiYgdXNlclJlZmVyZW5jZSAhPSBudWxsKSB7XG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgdGhpcy5kZWZhdWx0RGFzaGJvYXJkSWQgKyBcIi9mb3JtL1wiICsgdXNlclJlZmVyZW5jZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmRlZmF1bHREYXNoYm9hcmRJZCkge1xuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIHRoaXMuZGVmYXVsdERhc2hib2FyZElkKTtcbiAgICB9XG4gICAgLy8gdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImxpdmVzL3dlbGNvbWVcIik7XG4gIH1cblxuICBuYXZpZ2F0ZVRvVXJsKHdvcmtzcGFjZUlkKSB7XG4gICAgY29uc3QgdXNlclJlZmVyZW5jZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlclJlZmVyZW5jZUlkKTtcbiAgICBpZiAodXNlclJlZmVyZW5jZSAhPSBcIm51bGxcIiAmJiB1c2VyUmVmZXJlbmNlICE9IG51bGwpIHtcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvXCIgKyB3b3Jrc3BhY2VJZCArIFwiL2Zvcm0vXCIgKyB1c2VyUmVmZXJlbmNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIHdvcmtzcGFjZUlkKTtcbiAgICB9XG4gIH1cblxuICBnZXRTb2Z0TGFiZWxDb25maWd1cmF0aW9ucygpIHtcbiAgICB0aGlzLnNvZnRMYWJlbHMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdTb2Z0TGFiZWxzJykpO1xuICAgIHRoaXMuY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBnZXRTZWFyY2hNZW51SXRlbXMoKSB7XG4gICAgaWYgKHRoaXMuc2VhcmNoQnlUZXh0KSB7XG4gICAgICB0aGlzLnNlYXJjaEJ5VGV4dExvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5yc3MuZ2V0U2VhcmNoTWVudUl0ZW1zKHsgc2VhcmNoVGV4dDogdGhpcy5zZWFyY2hUZXh0LCBzZWFyY2hVbmlxdWVJZDogbnVsbCB9KVxuICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgJiYgcmVzcG9uc2UuZGF0YSAhPSBudWxsICYmIHJlc3BvbnNlLmRhdGEgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaFRleHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2plY3RMaXN0ID0gcmVzcG9uc2UuZGF0YS5maWx0ZXIodXMgPT4gdXMuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuUHJvamVjdCk7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ID0gcmVzcG9uc2UuZGF0YS5maWx0ZXIodXMgPT4gKHVzLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcpIHx8ICh1cy5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSByZXNwb25zZS5kYXRhLmZpbHRlcih1cyA9PiB1cy5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8ICh1cy5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1c2VycyA9IHJlc3BvbnNlLmRhdGEuZmlsdGVyKHVzID0+IHVzLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLkVtcGxveWVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdCA9IHVzZXJzO1xuICAgICAgICAgICAgICAgIGlmICghKHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzKSkge1xuICAgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRVc2VySWQgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudFVzZXJJZCk7XG4gICAgICAgICAgICAgICAgICB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdCA9IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0LmZpbHRlcigoeDogYW55KSA9PiAoeC5pdGVtSWQudG9Mb3dlckNhc2UoKSA9PSBjdXJyZW50VXNlcklkLnRvTG93ZXJDYXNlKCkpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5lbXBsb3llZUxpc3QgPSB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdDtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9qZWN0TGlzdCAmJiB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnByb2plY3RMaXN0WzBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsO1xuICAgICAgICAgICAgICAgICAgdGhpcy51c2VycyA9IDA7XG4gICAgICAgICAgICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy51c2VycyA9IHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xuICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IFtdO1xuICAgICAgICAgICAgICB0aGlzLmdvYWxTZWFyY2hMaXN0ID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2VhcmNoQnlUZXh0TG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIG9uUHJvamVjdFNlbGVjdChpdGVtLCBldmVudCkge1xuICAgIGlmIChldmVudC53aGljaCA9PSAxKSB7XG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICAgIHRoaXMucHJvamVjdExpc3QgPSBbXTtcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKGl0ZW0uaXRlbU5hbWUsIFJlY2VudFNlYXJjaFR5cGUucHJvamVjdCwgaXRlbS5pdGVtSWQpO1xuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcInByb2plY3RzL3Byb2plY3RzdGF0dXMvXCIgKyBpdGVtLml0ZW1JZCArIFwiL2FjdGl2ZS1nb2Fsc1wiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIFNlYXJjaEl0ZW0oZXZlbnQpIHtcbiAgICB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgPSBbXTtcbiAgICB0aGlzLmdvYWxTZWFyY2hMaXN0ID0gW107XG4gICAgdGhpcy50aGVtZUJhc2VDb2xvciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0aGVtZUNvbG9yJyk7XG4gICAgdmFyIGVsZW1lbnQgPVxuICAgICAgISFkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIik7XG4gICAgZWxlbWVudCA/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSAwIDogbnVsbDtcbiAgICB2YXIgZWxlbSA9XG4gICAgICAhIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKTtcbiAgICBlbGVtID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IDAgOiBudWxsO1xuICAgIHZhciBlbXAgPSAhIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKTtcbiAgICBlbXAgPyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMCA6IG51bGw7XG4gICAgdmFyIHdpZGdldCA9ICEhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpO1xuICAgIHdpZGdldCA/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSAwIDogbnVsbDtcbiAgICAvL3RoaXMuZGlzcGxheSA9IHRydWU7XG4gICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XG4gICAgaWYgKGV2ZW50LnRhcmdldC52YWx1ZSkge1xuICAgICAgaWYgKHRoaXMuc2VhcmNoQnlUZXh0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFNlYXJjaE1lbnVJdGVtcygpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAodGhpcy5zZWFyY2hCeUlkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLm1lbnVJdGVtLmZpbHRlcihcbiAgICAgICAgaXRlbSA9PlxuICAgICAgICAgIGl0ZW0ubWVudS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT1cbiAgICAgICAgICBmYWxzZSAmJiBpdGVtLnR5cGUgIT0gXCJkcm9wRG93blwiXG4gICAgICApO1xuICAgICAgdGhpcy53b3Jrc3BhY2VzID0gdGhpcy53b3Jrc3BhY2VzRm9yTG9vcC5maWx0ZXIoXG4gICAgICAgIGl0ZW0gPT5cbiAgICAgICAgICBpdGVtLndvcmtzcGFjZU5hbWVcbiAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAuaW5jbHVkZXMoZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCkpICE9PVxuICAgICAgICAgIGZhbHNlXG4gICAgICApO1xuICAgICAgdGhpcy5hZG1pblRvb2xzID8gdGhpcy50b29scyA9IHRoaXMuYWRtaW5Ub29scy5maWx0ZXIoXG4gICAgICAgIGl0ZW0gPT5cbiAgICAgICAgICBpdGVtLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhldmVudC50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKSkgIT09XG4gICAgICAgICAgZmFsc2VcbiAgICAgICkgOiBudWxsO1xuICAgICAgLy90aGlzLmxvYWRXaWRnZXRzTGlzdChldmVudC50YXJnZXQudmFsdWUpO1xuICAgICAgdGhpcy5vcmlnaW5hbFdpZGdldHMgPyB0aGlzLndpZGdldHMgPSB0aGlzLm9yaWdpbmFsV2lkZ2V0cy5maWx0ZXIoXG4gICAgICAgIGl0ZW0gPT5cbiAgICAgICAgICBpdGVtLndpZGdldE5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhldmVudC50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKSkgIT09XG4gICAgICAgICAgZmFsc2VcbiAgICAgICkgOiBudWxsO1xuICAgICAgdGhpcy5lbXBsb3llZUxpc3QgPSB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdC5sZW5ndGggPiAwID8gKHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0LmZpbHRlcih4ID0+XG4gICAgICAoKHguZnVsbE5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhldmVudC50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKSkgIT09IGZhbHNlKVxuICAgICAgICB8fCAoeC5lbXBsb3llZU51bWJlci50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT0gZmFsc2UpXG4gICAgICAgIHx8ICh4LnN1ck5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhldmVudC50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKSkgIT09IGZhbHNlKSlcbiAgICAgICkpIDogbnVsbDtcbiAgICAgIC8vIHRoaXMuYWxsc2VhcmNoZXMgPyB0aGlzLnJlY2VudFNlYXJjaGVzID0gdGhpcy5hbGxzZWFyY2hlcy5maWx0ZXIoXG4gICAgICAvLyAgIGl0ZW0gPT5cbiAgICAgIC8vICAgICBpdGVtLnJlY2VudFNlYXJjaC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCkpICE9PSAtMVxuICAgICAgLy8gKSA6IG51bGw7XG4gICAgICB0aGlzLmFsbHNlYXJjaGVzID8gdGhpcy5yZWNlbnRTZWFyY2hlcyA9IHRoaXMuYWxsc2VhcmNoZXMuZmlsdGVyKFxuICAgICAgICBpdGVtID0+XG4gICAgICAgICAgaXRlbS5yZWNlbnRTZWFyY2gudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhldmVudC50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKSkgIT09XG4gICAgICAgICAgZmFsc2VcbiAgICAgICkgOiBudWxsO1xuXG4gICAgICBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlICYmIGV2ZW50LnRhcmdldC52YWx1ZS5zZWFyY2goJy0nKSA+IDApIHtcbiAgICAgICAgdGhpcy5yc3Muc2VhcmNoR29hbFRhc2tzKGV2ZW50LnRhcmdldC52YWx1ZSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgJiYgcmVzcG9uc2UuZGF0YSAhPSBudWxsICYmIHJlc3BvbnNlLmRhdGEgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaFRleHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgPSByZXNwb25zZS5kYXRhLmZpbHRlcih1cyA9PiAodXMudHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnKSB8fCAodXMudHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSByZXNwb25zZS5kYXRhLmZpbHRlcih1cyA9PiB1cy50eXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgKHVzLnR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSk7XG4gICAgICAgICAgICAgICAgaWYgKCEoKHRoaXMuaXRlbXMubGVuZ3RoID4gMCAmJiB0aGlzLml0ZW1zKSB8fCAodGhpcy50b29scyAmJiB0aGlzLnRvb2xzLmxlbmd0aCA+IDApIHx8ICh0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHx8ICh0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApKSkge1xuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXNlcnMgPSAwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IFtdO1xuICAgICAgICAgICAgICB0aGlzLmdvYWxTZWFyY2hMaXN0ID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfVxuXG5cblxuICAgICAgLy8gICBjb25zdCB1c2VyU3RvcnlTZWFyY2hDcml0ZXJpYVRlbXAgPSBuZXcgVXNlclN0b3J5U2VhcmNoQ3JpdGVyaWFJbnB1dE1vZGVsKCk7XG4gICAgICAvLyAgIHVzZXJTdG9yeVNlYXJjaENyaXRlcmlhVGVtcC5wYWdlU2l6ZSA9IDEwMDA7XG4gICAgICAvLyAgIHVzZXJTdG9yeVNlYXJjaENyaXRlcmlhVGVtcC5zZWFyY2hUZXh0ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgLy8gICAvLy5yZXBsYWNlKC9cXHMvZywgXCJcIik7XG5cbiAgICAgIC8vICAvLyBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlLmluZGV4T2YoJy0nKSkge1xuICAgICAgLy8gICAgIHRoaXMudXNlclNlcnZpY2Uuc2VhcmNoVXNlclN0b3JpZXModXNlclN0b3J5U2VhcmNoQ3JpdGVyaWFUZW1wKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcblxuICAgICAgLy8gICAgICAgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ID0gW107XG4gICAgICAvLyAgICAgICBsZXQgY29tcGFueVNldHRpbmdzTW9kZWwgPSBbXTtcblxuICAgICAgLy8gICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgJiYgcmVzcG9uc2UuZGF0YSAhPSBudWxsICYmIHJlc3BvbnNlLmRhdGEgIT0gdW5kZWZpbmVkICYmIHJlc3BvbnNlLmRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgLy8gICAgICAgICB2YXIgdXNlclN0b3JpZXNMaXN0ID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgIC8vICAgICAgICAgdGhpcy5jb21wYW55U2V0dGluZ3NNT2RlbCQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmdldENvbXBhbnlTZXR0aW5ncykpO1xuICAgICAgLy8gICAgICAgICB0aGlzLmNvbXBhbnlTZXR0aW5nc01PZGVsJC5zdWJzY3JpYmUoKHgpID0+IGNvbXBhbnlTZXR0aW5nc01vZGVsID0geCk7XG4gICAgICAvLyAgICAgICAgIGxldCBidWdCb2FyZFJlc3VsdCA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbHRlcihpdGVtID0+IGl0ZW0ua2V5LnRyaW0oKSA9PSBcIkVuYWJsZUJ1Z0JvYXJkXCIpO1xuICAgICAgLy8gICAgICAgICBpZiAoYnVnQm9hcmRSZXN1bHQubGVuZ3RoID4gMCkge1xuICAgICAgLy8gICAgICAgICAgIHRoaXMuaXNFbmFibGVCdWdCb2FyZCA9IGJ1Z0JvYXJkUmVzdWx0WzBdLnZhbHVlID09IFwiMVwiID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgLy8gICAgICAgICB9XG4gICAgICAvLyAgICAgICAgIGlmICghdGhpcy5pc0VuYWJsZUJ1Z0JvYXJkKSB7XG4gICAgICAvLyAgICAgICAgICAgdXNlclN0b3JpZXNMaXN0ID0gdXNlclN0b3JpZXNMaXN0Lm1hcCgoeCkgPT4geC5pc0J1ZyA9PSBmYWxzZSk7XG4gICAgICAvLyAgICAgICAgIH1cblxuICAgICAgLy8gICAgICAgICB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgPSB1c2VyU3Rvcmllc0xpc3QubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAvLyAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgIC8vICAgICAgICAgICAgIGdvYWxJZDogaXRlbS5nb2FsSWQsXG4gICAgICAvLyAgICAgICAgICAgICBnb2FsTmFtZTogaXRlbS5nb2FsTmFtZSxcbiAgICAgIC8vICAgICAgICAgICAgIGdvYWxTaG9ydE5hbWU6IGl0ZW0uZ29hbFNob3J0TmFtZSxcbiAgICAgIC8vICAgICAgICAgICAgIGdvYWxVbmlxdWVOYW1lOiBpdGVtLmdvYWxVbmlxdWVOYW1lLFxuICAgICAgLy8gICAgICAgICAgICAgcHJvamVjdElkOiBpdGVtLnByb2plY3RJZCxcbiAgICAgIC8vICAgICAgICAgICAgIHByb2plY3ROYW1lOiBpdGVtLnByb2plY3ROYW1lLFxuICAgICAgLy8gICAgICAgICAgICAgc3ByaW50SWQ6IGl0ZW0uc3ByaW50SWQsXG4gICAgICAvLyAgICAgICAgICAgICBzcHJpbnROYW1lOiBpdGVtLnNwcmludE5hbWUsXG4gICAgICAvLyAgICAgICAgICAgICB1c2VyU3RvcnlJZDogaXRlbS51c2VyU3RvcnlJZCxcbiAgICAgIC8vICAgICAgICAgICAgIHVzZXJTdG9yeU5hbWU6IGl0ZW0udXNlclN0b3J5TmFtZSxcbiAgICAgIC8vICAgICAgICAgICAgIHVzZXJTdG9yeVN0YXR1c05hbWU6IGl0ZW0udXNlclN0b3J5U3RhdHVzTmFtZSxcbiAgICAgIC8vICAgICAgICAgICAgIHVzZXJTdG9yeVR5cGVOYW1lOiBpdGVtLnVzZXJTdG9yeVR5cGVOYW1lLFxuICAgICAgLy8gICAgICAgICAgICAgdXNlclN0b3J5VW5pcXVlTmFtZTogaXRlbS51c2VyU3RvcnlVbmlxdWVOYW1lXG4gICAgICAvLyAgICAgICAgICAgfVxuICAgICAgLy8gICAgICAgICB9KTtcblxuICAgICAgLy8gICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIC8vICAgICAgIH1cbiAgICAgIC8vICAgICB9KTtcbiAgICAgIC8vICAvLyB9XG5cbiAgICAgIC8vICAgbGV0IHNlYXJjaEdvYWxzID0gbmV3IEdvYWxTZWFyY2hDcml0ZXJpYUFwaUlucHV0TW9kZWwoKTtcbiAgICAgIC8vICAgc2VhcmNoR29hbHMuc2VhcmNoVGV4dCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICAgIC8vICAgLy8ucmVwbGFjZSgvXFxzL2csIFwiXCIpO1xuICAgICAgLy8gICAvL2lmIChldmVudC50YXJnZXQudmFsdWUuaW5kZXhPZignLScpKSB7XG4gICAgICAvLyAgIHRoaXMudXNlclNlcnZpY2Uuc2VhcmNoR29hbHMoc2VhcmNoR29hbHMpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgLy8gICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSBbXTtcblxuICAgICAgLy8gICAgIGlmIChyZXNwb25zZS5zdWNjZXNzICYmIHJlc3BvbnNlLmRhdGEgIT0gbnVsbCAmJiByZXNwb25zZS5kYXRhICE9IHVuZGVmaW5lZCAmJiByZXNwb25zZS5kYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vICAgICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSByZXNwb25zZS5kYXRhLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgLy8gICAgICAgICByZXR1cm4ge1xuICAgICAgLy8gICAgICAgICAgIGdvYWxJZDogaXRlbS5nb2FsSWQsXG4gICAgICAvLyAgICAgICAgICAgZ29hbE5hbWU6IGl0ZW0uZ29hbE5hbWUsXG4gICAgICAvLyAgICAgICAgICAgZ29hbFNob3J0TmFtZTogaXRlbS5nb2FsU2hvcnROYW1lLFxuICAgICAgLy8gICAgICAgICAgIGdvYWxVbmlxdWVOYW1lOiBpdGVtLmdvYWxVbmlxdWVOYW1lLFxuICAgICAgLy8gICAgICAgICAgIHByb2plY3RJZDogaXRlbS5wcm9qZWN0SWQsXG4gICAgICAvLyAgICAgICAgICAgcHJvamVjdE5hbWU6IGl0ZW0ucHJvamVjdE5hbWVcbiAgICAgIC8vICAgICAgICAgfVxuICAgICAgLy8gICAgICAgfSk7XG5cbiAgICAgIC8vICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgLy8gICAgIH1cblxuICAgICAgLy8gICB9KVxuICAgICAgLy8gLy99XG5cbiAgICAgIC8vIGlmICghKHRoaXMuaXRlbXMubGVuZ3RoID4gMCkgJiYgISh0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSAmJiAhKHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkgJiYgISh0aGlzLndpZGdldHMubGVuZ3RoID4gMCkgJiYgISh0aGlzLnRvb2xzLmxlbmd0aCA+IDApICYmICEodGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApKSB7XG4gICAgICBpZiAoISh0aGlzLml0ZW1zLmxlbmd0aCA+IDApICYmICEodGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSAmJiAhKHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSAmJiAhKHRoaXMudG9vbHMubGVuZ3RoID4gMCkgJiYgISh0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkpIHtcbiAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnJzID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbFxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XG4gICAgICAgIHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcbiAgICAgICAgdGhpcy50ID0gbnVsbDtcbiAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XG4gICAgICB9XG4gICAgICBlbHNlIGlmICh0aGlzLnRvb2xzICYmIHRoaXMudG9vbHMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XG4gICAgICAgIHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy5ycyA9IG51bGw7XG4gICAgICAgIHRoaXMudCA9IDA7XG4gICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnRvb2xzWzBdO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLndvcmtzcGFjZXMgJiZcbiAgICAgICAgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDBcbiAgICAgICkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XG4gICAgICAgIHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gbnVsbDtcbiAgICAgICAgdGhpcy53cyA9IDA7XG4gICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbMF07XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0aGlzLndpZGdldHMgJiZcbiAgICAgICAgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDBcbiAgICAgICkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XG4gICAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gbnVsbDtcbiAgICAgICAgdGhpcy53ZCA9IDA7XG4gICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbMF07XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0aGlzLmVtcGxveWVlTGlzdCAmJlxuICAgICAgICB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gbnVsbDtcbiAgICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xuICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0aGlzLnJlY2VudFNlYXJjaGVzICYmXG4gICAgICAgIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XG4gICAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgICAgdGhpcy5ycyA9IDA7XG4gICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5tZW51SXRlbSkge1xuICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5tZW51SXRlbVxuICAgICAgICAgIC5maWx0ZXIoaXRlbSA9PiBpdGVtLnR5cGUgIT0gXCJkcm9wRG93blwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaXRlbXMgPSBbXTtcbiAgICAgIH1cbiAgICAgIHRoaXMud29ya3NwYWNlcyA9IHRoaXMud29ya3NwYWNlc0Zvckxvb3A7XG4gICAgICB0aGlzLnRvb2xzID0gdGhpcy5hZG1pblRvb2xzO1xuICAgICAgdGhpcy53aWRnZXRzID0gdGhpcy5vcmlnaW5hbFdpZGdldHM7XG4gICAgICB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgPSBbXTtcbiAgICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSBbXTtcbiAgICAgIHRoaXMucHJvamVjdExpc3QgPSBbXTtcbiAgICAgIHRoaXMucmVjZW50U2VhcmNoZXMgPSB0aGlzLmFsbHNlYXJjaGVzO1xuICAgICAgLy90aGlzLmVtcGxveWVlTGlzdCA9ICh0aGlzLmxvYWRlZEVtcGxveWVlTGlzdCAmJiB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSA/IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0IDogW107XG4gICAgICB0aGlzLmVtcGxveWVlTGlzdCA9IFtdO1xuICAgICAgLy8gdGhpcy53cyA9IHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy50ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIC8vIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XG4gICAgICAvLyB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtcy5sZW5ndGggPiAwID8gdGhpcy5pdGVtc1swXSA6IG51bGw7XG4gICAgICB0aGlzLnNlYXJjaFRleHQgPT0gXCJcIiA/ICh0aGlzLnNlYXJjaFRleHQgPSB1bmRlZmluZWQpIDogbnVsbDtcbiAgICB9XG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBjbG9zZVNlYXJjaChldmVudCkge1xuICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgIHRoaXMuaXRlbXMgPSB0aGlzLm1lbnVJdGVtXG4gICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbS50eXBlICE9IFwiZHJvcERvd25cIilcbiAgICAgIC5zb3J0KChhLCBiKSA9PiAoYS5tZW51LnRvTG93ZXJDYXNlKCkgPiBiLm1lbnUudG9Mb3dlckNhc2UoKSA/IDEgOiAtMSkpO1xuICAgIHRoaXMud29ya3NwYWNlcyA9IHRoaXMud29ya3NwYWNlc0Zvckxvb3A7XG4gICAgdGhpcy53aWRnZXRzID0gdGhpcy5vcmlnaW5hbFdpZGdldHM7XG4gICAgdGhpcy50b29scyA9IHRoaXMuYWRtaW5Ub29scztcbiAgICB0aGlzLnJlY2VudFNlYXJjaGVzID0gdGhpcy5hbGxzZWFyY2hlcztcbiAgICB0aGlzLndzID0gdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gMDtcbiAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcbiAgICB0aGlzLmRpc3BsYXkgPSB0cnVlO1xuICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IFtdO1xuICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSBbXTtcbiAgICB0aGlzLnByb2plY3RMaXN0ID0gW107XG4gICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB0aGlzLmVtcGxveWVlTGlzdCA9IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDAgPyB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdCA6IFtdO1xuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xuICB9XG5cbiAgbmF2aWdhdGUoZXZlbnQsIGl0ZW0pIHtcbiAgICBpZiAodGhpcy5zZWFyY2hCeUlkKSB7XG4gICAgICB0aGlzLnNlYXJjaEJ5VGV4dExvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5yc3MuZ2V0U2VhcmNoTWVudUl0ZW1zKHsgc2VhcmNoVGV4dDogbnVsbCwgc2VhcmNoVW5pcXVlSWQ6IHRoaXMuc2VhcmNoVGV4dCB9KVxuICAgICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXMuc3VjY2Vzcykge1xuICAgICAgICAgICAgaWYgKHJlcy5kYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgdGhpcy5yZWRpcmVjdFRvUm91dGUocmVzLmRhdGFbMF0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy50b2FzdHIud2FybmluZygnR2l2ZW4gSWQgaXMgbm90IHZhbGlkLCBwbGVhc2UgcHJvdmlkZSBjb3JyZWN0IGlkIHRvIG5hdmlnYXRlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmICghcmVzLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlcy5hcGlSZXNwb25zZU1lc3NhZ2VzWzBdLm1lc3NhZ2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnNlYXJjaEJ5VGV4dExvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGl0ZW0pIHtcbiAgICAgIHRoaXMucmVkaXJlY3RUb1JvdXRlKGl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIHJlZGlyZWN0VG9Sb3V0ZShpdGVtKSB7XG4gICAgdmFyIG5hbWU7XG4gICAgaWYgKHRoaXMuc2VhcmNoQnlUZXh0IHx8IHRoaXMuc2VhcmNoQnlJZCkge1xuICAgICAgaWYgKGl0ZW0uaXRlbVR5cGUgJiYgKGl0ZW0uaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZykgfHwgKGl0ZW0uaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgICAgIC8vdGhpcy5JbnNlcnRTZWFyY2goaXRlbS51bmlxdWVuTmFtZSk7XG4gICAgICAgIC8vaWYgKHRoaXMucHJvamVjdFNlYXJjaFJlc3VsdHMuZmlsdGVyKGVsZW1lbnQgPT4gZWxlbWVudC5wcm9qZWN0SWQgPT0gaXRlbS5wcm9qZWN0SWQpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKGl0ZW0uaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1Zykge1xuICAgICAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHRoaXMuc2VhcmNoQnlJZCA/IGl0ZW0uaXRlbVVuaXF1ZU5hbWUgOiBpdGVtLml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLndvcmtJdGVtT3JCdWcsIGl0ZW0uaXRlbUlkKTtcbiAgICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJwcm9qZWN0cy93b3JraXRlbVwiLCBpdGVtLml0ZW1VbmlxdWVOYW1lXSwgeyBmcmFnbWVudDogJ3VuaXF1ZScgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5JbnNlcnRTZWFyY2godGhpcy5zZWFyY2hCeUlkID8gaXRlbS5pdGVtVW5pcXVlTmFtZSA6IGl0ZW0uaXRlbU5hbWUsIFJlY2VudFNlYXJjaFR5cGUuYWRob2MsIGl0ZW0uaXRlbUlkKTtcbiAgICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJkYXNoYm9hcmQvYWRob2Mtd29ya2l0ZW1cIiwgaXRlbS5pdGVtSWRdKTtcbiAgICAgICAgfVxuICAgICAgICAvLyB9XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0uaXRlbVR5cGUgJiYgKGl0ZW0uaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCBpdGVtLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgICAgLy9pZiAodGhpcy5wcm9qZWN0U2VhcmNoUmVzdWx0cy5maWx0ZXIoZWxlbWVudCA9PiBlbGVtZW50LnByb2plY3RJZCA9PSBpdGVtLnByb2plY3RJZCkubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAoaXRlbS5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsKSB7XG4gICAgICAgICAgdGhpcy5JbnNlcnRTZWFyY2godGhpcy5zZWFyY2hCeUlkID8gaXRlbS5pdGVtVW5pcXVlTmFtZSA6IGl0ZW0uaXRlbU5hbWUsIFJlY2VudFNlYXJjaFR5cGUuZ29hbCwgaXRlbS5pdGVtSWQpO1xuICAgICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcInByb2plY3RzL2dvYWxcIiwgaXRlbS5pdGVtVW5pcXVlTmFtZV0sIHsgZnJhZ21lbnQ6ICd1bmlxdWUnIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHRoaXMuc2VhcmNoQnlJZCA/IGl0ZW0uaXRlbVVuaXF1ZU5hbWUgOiBpdGVtLml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLnNwcmludCwgaXRlbS5pdGVtSWQpO1xuICAgICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcInByb2plY3RzL3NwcmludFwiLCBpdGVtLml0ZW1VbmlxdWVOYW1lXSwgeyBmcmFnbWVudDogJ3VuaXF1ZScgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gfVxuICAgICAgfVxuICAgICAgZWxzZSBpZiAoaXRlbS5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5FbXBsb3llZSkge1xuICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgICB0aGlzLkluc2VydFNlYXJjaCh0aGlzLnNlYXJjaEJ5SWQgPyBpdGVtLml0ZW1VbmlxdWVOYW1lIDogaXRlbS5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS5lbXBsb3llZSwgaXRlbS5pdGVtSWQpO1xuICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFxuICAgICAgICAgIFwiL2Rhc2hib2FyZC9wcm9maWxlL1wiICsgaXRlbS5pdGVtSWQgKyBcIi9vdmVydmlld1wiXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0uaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuUHJvamVjdCkge1xuICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICAgICAgdGhpcy5JbnNlcnRTZWFyY2godGhpcy5zZWFyY2hCeUlkID8gaXRlbS5pdGVtVW5pcXVlTmFtZSA6IGl0ZW0uaXRlbU5hbWUsIFJlY2VudFNlYXJjaFR5cGUucHJvamVjdCwgaXRlbS5pdGVtSWQpO1xuICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJwcm9qZWN0cy9wcm9qZWN0c3RhdHVzL1wiICsgaXRlbS5pdGVtSWQgKyBcIi9hY3RpdmUtZ29hbHNcIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZWxzZSBpZiAoaXRlbS5tZW51KSB7XG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgIG5hbWUgPSBpdGVtLm1lbnU7XG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbaXRlbS5zdGF0ZV0pO1xuICAgICAgdGhpcy5JbnNlcnRTZWFyY2gobmFtZSwgUmVjZW50U2VhcmNoVHlwZS5tZW51LCBpdGVtLmlkKTtcbiAgICB9XG4gICAgLy8gZWxzZSBpZiAoaXRlbS5wZXJtaXNzaW9uKSB7XG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICAvLyAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAvLyAgIG5hbWUgPSBpdGVtLm5hbWU7XG4gICAgLy8gICB0aGlzLkluc2VydFNlYXJjaChuYW1lLCBSZWNlKTtcbiAgICAvLyAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtpdGVtLmxpbmtdKTtcbiAgICAvLyB9IFxuICAgIGVsc2UgaWYgKGl0ZW0ud29ya3NwYWNlSWQpIHtcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgbmFtZSA9IGl0ZW0ud29ya3NwYWNlTmFtZTtcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKG5hbWUsIFJlY2VudFNlYXJjaFR5cGUuZGFzaGJvYXJkLCBpdGVtLndvcmtzcGFjZUlkKTtcbiAgICAgIGNvbnN0IHVzZXJSZWZlcmVuY2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJSZWZlcmVuY2VJZCk7XG4gICAgICBpZiAodXNlclJlZmVyZW5jZSAhPSBcIm51bGxcIiAmJiB1c2VyUmVmZXJlbmNlICE9IG51bGwpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIGl0ZW0ud29ya3NwYWNlSWQgKyBcIi9mb3JtL1wiICsgdXNlclJlZmVyZW5jZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgaXRlbS53b3Jrc3BhY2VJZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpdGVtLndpZGdldElkKSB7XG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgIG5hbWUgPSBpdGVtLndpZGdldE5hbWU7XG4gICAgICB0aGlzLkluc2VydFNlYXJjaChuYW1lLCBSZWNlbnRTZWFyY2hUeXBlLndpZGdldCwgaXRlbS53aWRnZXRJZCk7XG4gICAgICB0aGlzLlJlZGlyZWN0VG9BcHAoaXRlbSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5TZWFyY2hSZWNlbnRJdGVtKGl0ZW0sIGV2ZW50KTtcbiAgICB9XG4gIH1cblxuXG4gIEluc2VydFNlYXJjaChuYW1lLCByZWNlbnRTZWFyY2hUeXBlLCBpZCkge1xuICAgIHRoaXMucnNzLmluc2VydFJlY2VudFNlYXJjaCh7IG5hbWU6IG5hbWUsIHJlY2VudFNlYXJjaFR5cGU6IHJlY2VudFNlYXJjaFR5cGUsIGl0ZW1JZDogaWQgfSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAvLyB0aGlzLnJlY2VudFNlYXJjaGVzLmluY2x1ZGVzKG5hbWUpXG4gICAgICAgIC8vICAgPyAodGhpcy5yZWNlbnRTZWFyY2hlcy5zcGxpY2UodGhpcy5yZWNlbnRTZWFyY2hlcy5pbmRleE9mKG5hbWUpLCAxKSxcbiAgICAgICAgLy8gICAgIHRoaXMucmVjZW50U2VhcmNoZXMuc3BsaWNlKDAsIDAsIG5hbWUpKVxuICAgICAgICAvLyAgIDogdGhpcy5yZWNlbnRTZWFyY2hlcy51bnNoaWZ0KG5hbWUpO1xuICAgICAgICB0aGlzLmdldFJlY2VudFNlYXJjaGVzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBTZWFyY2hSZWNlbnRJdGVtKHNlYXJjaCwgZXZlbnQpIHtcbiAgICB0aGlzLmRpc3BsYXkgPSB0cnVlO1xuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xuICAgIGlmIChzZWFyY2gucmVjZW50U2VhcmNoVHlwZSA9PSBSZWNlbnRTZWFyY2hUeXBlLm1lbnUpIHtcbiAgICAgIHZhciBpdGVtID0gdGhpcy5pdGVtcy5maWx0ZXIoXG4gICAgICAgIGl0ZW0gPT5cbiAgICAgICAgICBpdGVtLm1lbnUudG9Mb3dlckNhc2UoKSA9PSBzZWFyY2gucmVjZW50U2VhcmNoLnRvTG93ZXJDYXNlKClcbiAgICAgICk7XG4gICAgICBpdGVtLmxlbmd0aCA+IDAgPyB0aGlzLm5hdmlnYXRlKGV2ZW50LCBpdGVtWzBdKSA6IG51bGxcbiAgICB9IGVsc2UgaWYgKHNlYXJjaC5yZWNlbnRTZWFyY2hUeXBlID09IFJlY2VudFNlYXJjaFR5cGUuZGFzaGJvYXJkKSB7XG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHNlYXJjaC5yZWNlbnRTZWFyY2gsIFJlY2VudFNlYXJjaFR5cGUuZGFzaGJvYXJkLCBzZWFyY2guaXRlbUlkKTtcbiAgICAgIGNvbnN0IHVzZXJSZWZlcmVuY2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJSZWZlcmVuY2VJZCk7XG4gICAgICBpZiAodXNlclJlZmVyZW5jZSAhPSBcIm51bGxcIiAmJiB1c2VyUmVmZXJlbmNlICE9IG51bGwpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIHNlYXJjaC5pdGVtSWQgKyBcIi9mb3JtL1wiICsgdXNlclJlZmVyZW5jZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgc2VhcmNoLml0ZW1JZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzZWFyY2gucmVjZW50U2VhcmNoVHlwZSA9PSBSZWNlbnRTZWFyY2hUeXBlLndpZGdldCkge1xuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgICB0aGlzLkluc2VydFNlYXJjaChzZWFyY2gucmVjZW50U2VhcmNoLCBSZWNlbnRTZWFyY2hUeXBlLndpZGdldCwgc2VhcmNoLml0ZW1JZCk7XG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShcbiAgICAgICAgW1wiZGFzaGJvYXJkLW1hbmFnZW1lbnQvd2lkZ2V0c1wiLCBzZWFyY2guaXRlbUlkXVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHNlYXJjaC5yZWNlbnRTZWFyY2hUeXBlID09IFJlY2VudFNlYXJjaFR5cGUuYWRob2MpIHtcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgdGhpcy5JbnNlcnRTZWFyY2goc2VhcmNoLnJlY2VudFNlYXJjaCwgUmVjZW50U2VhcmNoVHlwZS5hZGhvYywgc2VhcmNoLml0ZW1JZCk7XG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJkYXNoYm9hcmQvYWRob2Mtd29ya2l0ZW1cIiwgc2VhcmNoLml0ZW1JZF0pO1xuICAgIH0gZWxzZSBpZiAoc2VhcmNoLnJlY2VudFNlYXJjaFR5cGUgPT0gUmVjZW50U2VhcmNoVHlwZS53b3JrSXRlbU9yQnVnKSB7XG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHNlYXJjaC5yZWNlbnRTZWFyY2gsIFJlY2VudFNlYXJjaFR5cGUud29ya0l0ZW1PckJ1Zywgc2VhcmNoLml0ZW1JZCk7XG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJwcm9qZWN0cy93b3JraXRlbVwiLCBzZWFyY2guaXRlbVVuaXF1ZU5hbWVdLCB7IGZyYWdtZW50OiAndW5pcXVlJyB9KTtcbiAgICB9IGVsc2UgaWYgKHNlYXJjaC5yZWNlbnRTZWFyY2hUeXBlID09IFJlY2VudFNlYXJjaFR5cGUuZ29hbCkge1xuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgICB0aGlzLkluc2VydFNlYXJjaChzZWFyY2gucmVjZW50U2VhcmNoLCBSZWNlbnRTZWFyY2hUeXBlLmdvYWwsIHNlYXJjaC5pdGVtSWQpO1xuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW1wicHJvamVjdHMvZ29hbFwiLCBzZWFyY2guaXRlbVVuaXF1ZU5hbWVdLCB7IGZyYWdtZW50OiAndW5pcXVlJyB9KTtcbiAgICB9IGVsc2UgaWYgKHNlYXJjaC5yZWNlbnRTZWFyY2hUeXBlID09IFJlY2VudFNlYXJjaFR5cGUuc3ByaW50KSB7XG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHNlYXJjaC5yZWNlbnRTZWFyY2gsIFJlY2VudFNlYXJjaFR5cGUuc3ByaW50LCBzZWFyY2guaXRlbUlkKTtcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcInByb2plY3RzL3NwcmludFwiLCBzZWFyY2guaXRlbVVuaXF1ZU5hbWVdLCB7IGZyYWdtZW50OiAndW5pcXVlJyB9KTtcbiAgICB9IGVsc2UgaWYgKHNlYXJjaC5yZWNlbnRTZWFyY2hUeXBlID09IFJlY2VudFNlYXJjaFR5cGUucHJvamVjdCkge1xuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgICB0aGlzLkluc2VydFNlYXJjaChzZWFyY2gucmVjZW50U2VhcmNoLCBSZWNlbnRTZWFyY2hUeXBlLnByb2plY3QsIHNlYXJjaC5pdGVtSWQpO1xuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcInByb2plY3RzL3Byb2plY3RzdGF0dXMvXCIgKyBzZWFyY2guaXRlbUlkICsgXCIvYWN0aXZlLWdvYWxzXCIpO1xuICAgIH0gZWxzZSBpZiAoc2VhcmNoLnJlY2VudFNlYXJjaFR5cGUgPT0gUmVjZW50U2VhcmNoVHlwZS5lbXBsb3llZSkge1xuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgICB0aGlzLkluc2VydFNlYXJjaChzZWFyY2gucmVjZW50U2VhcmNoLCBSZWNlbnRTZWFyY2hUeXBlLmVtcGxveWVlLCBzZWFyY2guaXRlbUlkKTtcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXG4gICAgICAgIFwiL2Rhc2hib2FyZC9wcm9maWxlL1wiICsgc2VhcmNoLml0ZW1JZCArIFwiL292ZXJ2aWV3XCJcbiAgICAgICk7XG4gICAgfVxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICBzZWxlY3RNZW51KGV2ZW50LCBjbGljaykge1xuICAgIGlmIChjbGljay53aGljaCA9PSAxICYmIGV2ZW50LndvcmtzcGFjZUlkICE9IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XG4gICAgICB0aGlzLnNlYXJjaEJ5VGV4dCA9IGZhbHNlO1xuICAgICAgdGhpcy5zZWFyY2hCeUlkID0gZmFsc2U7XG4gICAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgICAgY29uc3QgdXNlclJlZmVyZW5jZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlclJlZmVyZW5jZUlkKTtcbiAgICAgIGlmICh1c2VyUmVmZXJlbmNlICE9IFwibnVsbFwiICYmIHVzZXJSZWZlcmVuY2UgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgZXZlbnQud29ya3NwYWNlSWQgKyBcIi9mb3JtL1wiICsgdXNlclJlZmVyZW5jZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgZXZlbnQud29ya3NwYWNlSWQpO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3RlZERhc2hib2FyZCA9IGV2ZW50LndvcmtzcGFjZUlkO1xuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgdGhpcy5tZW51SXRlbU5hbWUgPSBldmVudC53b3Jrc3BhY2VOYW1lO1xuICAgICAgdGhpcy5yc3NcbiAgICAgICAgLmluc2VydFJlY2VudFNlYXJjaCh7IG5hbWU6IGV2ZW50LndvcmtzcGFjZU5hbWUsIHJlY2VudFNlYXJjaFR5cGU6IFJlY2VudFNlYXJjaFR5cGUuZGFzaGJvYXJkLCBpdGVtSWQ6IGV2ZW50LndvcmtzcGFjZUlkIH0pXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgLy8gdGhpcy5yZWNlbnRTZWFyY2hlcy5pbmNsdWRlcyhldmVudC53b3Jrc3BhY2VOYW1lKVxuICAgICAgICAgICAgLy8gICA/ICh0aGlzLnJlY2VudFNlYXJjaGVzLnNwbGljZShcbiAgICAgICAgICAgIC8vICAgICAgIHRoaXMucmVjZW50U2VhcmNoZXMuaW5kZXhPZihldmVudC53b3Jrc3BhY2VOYW1lKSxcbiAgICAgICAgICAgIC8vICAgICAgIDFcbiAgICAgICAgICAgIC8vICAgICApLFxuICAgICAgICAgICAgLy8gICAgIHRoaXMucmVjZW50U2VhcmNoZXMuc3BsaWNlKDAsIDAsIGV2ZW50LndvcmtzcGFjZU5hbWUpKVxuICAgICAgICAgICAgLy8gICA6IHRoaXMucmVjZW50U2VhcmNoZXMudW5zaGlmdChldmVudC53b3Jrc3BhY2VOYW1lKTtcbiAgICAgICAgICAgIHRoaXMuZ2V0UmVjZW50U2VhcmNoZXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0RW1wbG95ZWUoZXZlbnQsIGNsaWNrKSB7XG4gICAgaWYgKGNsaWNrLndoaWNoID09IDEpIHtcbiAgICAgIHRoaXMuZGlzcGxheSA9IGZhbHNlO1xuICAgICAgdGhpcy5zZWFyY2hCeVRleHQgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2VhcmNoQnlJZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXG4gICAgICAgIFwiL2Rhc2hib2FyZC9wcm9maWxlL1wiICsgZXZlbnQuaXRlbUlkICsgXCIvb3ZlcnZpZXdcIlxuICAgICAgKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXNoYm9hcmQgPSBldmVudC53b3Jrc3BhY2VJZDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZSA9IGV2ZW50Lml0ZW1JZDtcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgIHRoaXMubWVudUl0ZW1OYW1lID0gZXZlbnQuaXRlbU5hbWU7XG4gICAgICB0aGlzLnJzc1xuICAgICAgICAuaW5zZXJ0UmVjZW50U2VhcmNoKHsgbmFtZTogZXZlbnQuaXRlbU5hbWUsIHJlY2VudFNlYXJjaFR5cGU6IFJlY2VudFNlYXJjaFR5cGUuZW1wbG95ZWUsIGl0ZW1JZDogZXZlbnQuaXRlbUlkIH0pXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgdGhpcy5yc3MuZ2V0UmVjZW50U2VhcmNoKCkuc3Vic2NyaWJlKChyZXNwb25zZURhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBpZiAocmVzcG9uc2VEYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFsbHNlYXJjaGVzID0gcmVzcG9uc2VEYXRhLmRhdGE7XG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5SZWNlbnRTZWFyY2hlcywgSlNPTi5zdHJpbmdpZnkodGhpcy5hbGxzZWFyY2hlcykpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVjZW50U2VhcmNoZXMgPSByZXNwb25zZURhdGEuZGF0YTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0QWRpbW5Ub29sKGxpbmssIGV2ZW50LCBpdGVtKSB7XG4gICAgaWYgKGV2ZW50LndoaWNoID09IDEpIHtcbiAgICAgIHRoaXMuZGlzcGxheSA9IGZhbHNlO1xuICAgICAgdGhpcy5zZWFyY2hCeVRleHQgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2VhcmNoQnlJZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtsaW5rXSk7XG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgICB0aGlzLnJzcy5pbnNlcnRSZWNlbnRTZWFyY2goeyBuYW1lOiBpdGVtLm1lbnUsIHJlY2VudFNlYXJjaFR5cGU6IFJlY2VudFNlYXJjaFR5cGUubWVudSwgaXRlbUlkOiBpdGVtLmlkIH0pLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgIC8vIHRoaXMucmVjZW50U2VhcmNoZXMuaW5jbHVkZXMobmFtZSlcbiAgICAgICAgICAvLyAgID8gKHRoaXMucmVjZW50U2VhcmNoZXMuc3BsaWNlKHRoaXMucmVjZW50U2VhcmNoZXMuaW5kZXhPZihuYW1lKSwgMSksXG4gICAgICAgICAgLy8gICAgIHRoaXMucmVjZW50U2VhcmNoZXMuc3BsaWNlKDAsIDAsIG5hbWUpKVxuICAgICAgICAgIC8vICAgOiB0aGlzLnJlY2VudFNlYXJjaGVzLnVuc2hpZnQobmFtZSk7XG4gICAgICAgICAgdGhpcy5nZXRSZWNlbnRTZWFyY2hlcygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG5cbiAgT25TZWxlY3Qod2lkZ2V0LCBldmVudCkge1xuICAgIGlmIChldmVudC53aGljaCA9PSAxKSB7XG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICAgIHRoaXMuUmVkaXJlY3RUb0FwcCh3aWRnZXQpO1xuICAgICAgdGhpcy5yc3NcbiAgICAgICAgLmluc2VydFJlY2VudFNlYXJjaCh7IG5hbWU6IHdpZGdldC53aWRnZXROYW1lLCByZWNlbnRTZWFyY2hUeXBlOiBSZWNlbnRTZWFyY2hUeXBlLndpZGdldCwgaXRlbUlkOiB3aWRnZXQud2lkZ2V0SWQgfSlcbiAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAvLyB0aGlzLnJlY2VudFNlYXJjaGVzLmluY2x1ZGVzKHdpZGdldC53aWRnZXROYW1lKVxuICAgICAgICAgICAgLy8gICA/ICh0aGlzLnJlY2VudFNlYXJjaGVzLnNwbGljZShcbiAgICAgICAgICAgIC8vICAgICAgIHRoaXMucmVjZW50U2VhcmNoZXMuaW5kZXhPZih3aWRnZXQud2lkZ2V0TmFtZSksXG4gICAgICAgICAgICAvLyAgICAgICAxXG4gICAgICAgICAgICAvLyAgICAgKSxcbiAgICAgICAgICAgIC8vICAgICB0aGlzLnJlY2VudFNlYXJjaGVzLnNwbGljZSgwLCAwLCB3aWRnZXQud2lkZ2V0TmFtZSkpXG4gICAgICAgICAgICAvLyAgIDogdGhpcy5yZWNlbnRTZWFyY2hlcy51bnNoaWZ0KHdpZGdldC53aWRnZXROYW1lKTtcbiAgICAgICAgICAgIHRoaXMuZ2V0UmVjZW50U2VhcmNoZXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cblxuICBnZXRSZWNlbnRTZWFyY2hlcygpIHtcbiAgICB0aGlzLnJlY2VudFNlYXJjaGVzZmV0Y2hJblByb2dyZXNzID0gdHJ1ZTtcbiAgICB0aGlzLnJzcy5nZXRSZWNlbnRTZWFyY2goKS5zdWJzY3JpYmUoKHJlc3BvbnNlRGF0YTogYW55KSA9PiB7XG4gICAgICBpZiAocmVzcG9uc2VEYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgdGhpcy5hbGxzZWFyY2hlcyA9IHJlc3BvbnNlRGF0YS5kYXRhO1xuICAgICAgICB0aGlzLnJlY2VudFNlYXJjaGVzID0gcmVzcG9uc2VEYXRhLmRhdGE7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuUmVjZW50U2VhcmNoZXMsIEpTT04uc3RyaW5naWZ5KHRoaXMuYWxsc2VhcmNoZXMpKTtcbiAgICAgICAgdGhpcy5yZWNlbnRTZWFyY2hlc2ZldGNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIFJlZGlyZWN0VG9BcHAod2lkZ2V0KSB7XG4gICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoXG4gICAgICBbXCJkYXNoYm9hcmQtbWFuYWdlbWVudC93aWRnZXRzXCIsIHdpZGdldC53aWRnZXRJZF1cbiAgICApO1xuICB9XG5cblxuXG4gIE9uR29hbFNlbGVjdChnb2FsLCBldmVudCkge1xuICAgIGlmIChldmVudC53aGljaCA9PSAxKSB7XG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICAgIHRoaXMuUmVkaXJlY3RUb0dvYWwoZ29hbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBSZWRpcmVjdFRvR29hbChnb2FsKSB7XG4gICAgLy9pZiAodGhpcy5wcm9qZWN0U2VhcmNoUmVzdWx0cy5maWx0ZXIoaXRlbSA9PiBpdGVtLnByb2plY3RJZCA9PSBnb2FsLnByb2plY3RJZCkubGVuZ3RoID4gMCkge1xuICAgIGlmIChnb2FsLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwpIHtcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKGdvYWwuaXRlbU5hbWUsIFJlY2VudFNlYXJjaFR5cGUuZ29hbCwgZ29hbC5pdGVtSWQpO1xuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW1wicHJvamVjdHMvZ29hbFwiLCBnb2FsLml0ZW1VbmlxdWVOYW1lXSwgeyBmcmFnbWVudDogJ3VuaXF1ZScgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKGdvYWwuaXRlbU5hbWUsIFJlY2VudFNlYXJjaFR5cGUuc3ByaW50LCBnb2FsLml0ZW1JZCk7XG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9zcHJpbnRcIiwgZ29hbC5pdGVtVW5pcXVlTmFtZV0sIHsgZnJhZ21lbnQ6ICd1bmlxdWUnIH0pO1xuICAgIH1cbiAgICB0aGlzLmdvYWxTZWFyY2hMaXN0ID0gW107XG4gICAgdGhpcy5kaXNwbGF5ID0gdHJ1ZTtcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcbiAgfVxuICAvLyAgfVxuXG4gIE9uVXNlclN0b3J5U2VsZWN0KHVzZXJTdG9yeSwgZXZlbnQpIHtcbiAgICBpZiAoZXZlbnQud2hpY2ggPT0gMSkge1xuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgICB0aGlzLlJlZGlyZWN0VG9Vc2VyU3RvcnkodXNlclN0b3J5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIFJlZGlyZWN0VG9Vc2VyU3RvcnkodXNlclN0b3J5KSB7XG4gICAgLy9pZiAodGhpcy5wcm9qZWN0U2VhcmNoUmVzdWx0cy5maWx0ZXIoaXRlbSA9PiBpdGVtLnByb2plY3RJZCA9PSB1c2VyU3RvcnkucHJvamVjdElkKS5sZW5ndGggPiAwKSB7XG4gICAgaWYgKHVzZXJTdG9yeS5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnKSB7XG4gICAgICB0aGlzLkluc2VydFNlYXJjaCh1c2VyU3RvcnkuaXRlbU5hbWUsIFJlY2VudFNlYXJjaFR5cGUud29ya0l0ZW1PckJ1ZywgdXNlclN0b3J5Lml0ZW1JZCk7XG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJwcm9qZWN0cy93b3JraXRlbVwiLCB1c2VyU3RvcnkuaXRlbVVuaXF1ZU5hbWVdLCB7IGZyYWdtZW50OiAndW5pcXVlJyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5JbnNlcnRTZWFyY2godXNlclN0b3J5Lml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLmFkaG9jLCB1c2VyU3RvcnkuaXRlbUlkKTtcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcImRhc2hib2FyZC9hZGhvYy13b3JraXRlbVwiLCB1c2VyU3RvcnkuaXRlbUlkXSk7XG4gICAgfVxuICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IFtdO1xuICAgIHRoaXMuZGlzcGxheSA9IHRydWU7XG4gICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XG4gIH1cbiAgLy8gfVxuXG4gIFNldCgpIHtcbiAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcbiAgICAvLyBpZiAoXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgPT0gdW5kZWZpbmVkIHx8XG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgPT0gbnVsbCB8fFxuICAgIC8vICAgdGhpcy5zZWFyY2hUZXh0ID09PSBcIlwiXG4gICAgLy8gKSB7XG4gICAgLy8gICB0aGlzLndzID0gdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudCA9IG51bGw7XG4gICAgLy8gICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSAwO1xuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XG4gICAgLy8gfVxuICB9XG4gIGFycm93RG93bkV2ZW50Rm9yU2VhcmNoQnlUZXh0KCkge1xuICAgIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QgJiYgdGhpcy5wcm9qZWN0SW5kZXggPCB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCAtIDEpIHtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtN1wiKS5zY3JvbGxUb3AgKz0gNDU7XG4gICAgICB0aGlzLnByb2plY3RJbmRleCsrO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucHJvamVjdExpc3RbdGhpcy5wcm9qZWN0SW5kZXhdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5Qcm9qZWN0ICYmIHRoaXMucHJvamVjdEluZGV4ID09IHRoaXMucHJvamVjdExpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuUHJvamVjdCAmJiB0aGlzLnByb2plY3RJbmRleCA9PSB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCAtIDEgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QgJiYgdGhpcy5wcm9qZWN0SW5kZXggPT0gdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggLSAxICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy5nb2FsSW5kZXggPSB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLnVzZXJzIDwgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCAtIDEpIHtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgKz0gNDU7XG4gICAgICB0aGlzLnVzZXJzKys7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0W3RoaXMudXNlcnNdO1xuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLnVzZXJzID09IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggLSAxXG4gICAgICAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCArPSA0NTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLnVzZXJzID09IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggLSAxXG4gICAgICAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmIHRoaXMuZ29hbEluZGV4IDwgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggLSAxKSB7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wICs9IDQ1O1xuICAgICAgdGhpcy5nb2FsSW5kZXgrKztcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0W3RoaXMuZ29hbEluZGV4XTtcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmIHRoaXMuZ29hbEluZGV4ID09IHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoIC0gMVxuICAgICAgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLmdvYWxJbmRleCA9IHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLkVtcGxveWVlICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4IDwgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoIC0gMSkge1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCArPSA0NTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4Kys7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXhdO1xuICAgIH1cbiAgfVxuICBhcnJvd0Rvd25FdmVudCgpIHtcbiAgICAvLyBpZiAoXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgIT0gdW5kZWZpbmVkIHx8XG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgIT0gbnVsbCB8fFxuICAgIC8vICAgdGhpcy5zZWFyY2hUZXh0ID09PSBcIlwiXG4gICAgLy8gKSB7XG4gICAgLy8gICByZXR1cm47XG4gICAgLy8gfVxuICAgIGlmICh0aGlzLnNlYXJjaEJ5VGV4dCAmJiB0aGlzLnNlYXJjaFRleHQpIHtcbiAgICAgIHRoaXMuYXJyb3dEb3duRXZlbnRGb3JTZWFyY2hCeVRleHQoKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoXG4gICAgICB0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiZcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA8IHRoaXMuaXRlbXMubGVuZ3RoIC0gMVxuICAgICkge1xuICAgICAgLy90aGlzLm1lbnVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsQnkoMCwgMTAwKTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgKz0gNDU7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXgrKztcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF07XG4gICAgICAvLyB0aGlzLmhpZ2hsaWdodChuZXh0cm93KTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJlxuICAgICAgdGhpcy53cyA8IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxXG4gICAgKSB7XG4gICAgICB0aGlzLndzKys7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wICs9IDQxO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcbiAgICAgIC8vIHRoaXMuaGlnaGxpZ2h0KG5leHRyb3cpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkIDwgdGhpcy53aWRnZXRzLmxlbmd0aCAtIDEpIHtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgKz0gNDg7XG4gICAgICB0aGlzLndkKys7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzW3RoaXMud2RdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA8IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDEpIHtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgKz0gNDU7XG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCsrO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0W3RoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4XTtcbiAgICAgIC8vIHRoaXMuaGlnaGxpZ2h0KG5leHRyb3cpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmIHRoaXMudXNlcnMgPCB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoIC0gMSkge1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCArPSA0NTtcbiAgICAgIHRoaXMudXNlcnMrKztcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbdGhpcy51c2Vyc107XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmIHRoaXMuZ29hbEluZGV4IDwgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggLSAxKSB7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wICs9IDQ1O1xuICAgICAgdGhpcy5nb2FsSW5kZXgrKztcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0W3RoaXMuZ29hbEluZGV4XTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPCA4KSB7XG4gICAgICB0aGlzLnJzKys7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1t0aGlzLnJzXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLnNlbGVjdGVkUm93SW5kZXggPT0gdGhpcy5pdGVtcy5sZW5ndGggLSAxICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLnQgPSBudWxsO1xuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLndzID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID09IHRoaXMuaXRlbXMubGVuZ3RoIC0gMSAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy53ZCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9PSB0aGlzLml0ZW1zLmxlbmd0aCAtIDEgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy50ID0gbnVsbDtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLnNlbGVjdGVkUm93SW5kZXggPT0gdGhpcy5pdGVtcy5sZW5ndGggLSAxICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy50ID0gbnVsbDtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLnVzZXJzID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID09IHRoaXMuaXRlbXMubGVuZ3RoIC0gMSAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy50ID0gbnVsbDtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9PSB0aGlzLml0ZW1zLmxlbmd0aCAtIDEgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudCA9IG51bGw7XG4gICAgICB0aGlzLndkID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcbiAgICAgIHRoaXMucnMgPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDEgJiYgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSBudWxsO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMud2QgPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1swXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53cyA9PSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMSAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnQgPSBudWxsO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLndzID09IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy50ID0gbnVsbDtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLnVzZXJzID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDEgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudCA9IG51bGw7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53cyA9PSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy50ID0gbnVsbDtcbiAgICAgIHRoaXMud2QgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xuICAgICAgdGhpcy5ycyA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy53ZCA9PSB0aGlzLndpZGdldHMubGVuZ3RoIC0gMSAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnQgPSBudWxsO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkID09IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy50ID0gbnVsbDtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLnVzZXJzID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud2QgPT0gdGhpcy53aWRnZXRzLmxlbmd0aCAtIDEgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudCA9IG51bGw7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy53ZCA9PSB0aGlzLndpZGdldHMubGVuZ3RoIC0gMSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy50ID0gbnVsbDtcbiAgICAgIHRoaXMud2QgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xuICAgICAgdGhpcy5ycyA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudCA9IG51bGw7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy51c2VycyA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggLSAxICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnQgPSBudWxsO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDEgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudCA9IG51bGw7XG4gICAgICB0aGlzLndkID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcbiAgICAgIHRoaXMucnMgPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiZcbiAgICAgIHRoaXMudXNlcnMgPT0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCAtIDEgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudCA9IG51bGw7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJlxuICAgICAgdGhpcy51c2VycyA9PSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy50ID0gbnVsbDtcbiAgICAgIHRoaXMud2QgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xuICAgICAgdGhpcy5ycyA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiZcbiAgICAgIHRoaXMuZ29hbEluZGV4ID09IHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy50ID0gbnVsbDtcbiAgICAgIHRoaXMud2QgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xuICAgICAgdGhpcy5ycyA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcbiAgICB9XG5cblxuICAgIC8vIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53cyA9PSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMSAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcbiAgICAvLyAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSAwO1xuICAgIC8vICAgdGhpcy50ID0gbnVsbDtcbiAgICAvLyAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsO1xuICAgIC8vICAgdGhpcy53ZCA9IDA7XG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLndzID09IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAvLyAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSAwO1xuICAgIC8vICAgdGhpcy53ZCA9IG51bGw7XG4gICAgLy8gICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XG4gICAgLy8gICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDEgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAvLyAgIHRoaXMud2QgPSBudWxsO1xuICAgIC8vICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XG4gICAgLy8gICB0aGlzLnJzID0gMDtcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkID09IDggJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xuICAgIC8vICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgLy8gICB0aGlzLndkID0gbnVsbDtcbiAgICAvLyAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gbnVsbDtcbiAgICAvLyAgIHRoaXMucnMgPSBudWxsO1xuICAgIC8vICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XG4gICAgLy8gfVxuICAgIC8vIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy53ZCA9PSA4ICYmIHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XG4gICAgLy8gICB0aGlzLndkID0gbnVsbDtcbiAgICAvLyAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSBudWxsO1xuICAgIC8vICAgdGhpcy5ycyA9IDA7XG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcbiAgICAvLyB9XG4gICAgLy8gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5mdWxsTmFtZSAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggLSAxICYmIHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XG4gICAgLy8gICB0aGlzLndkID0gbnVsbDtcbiAgICAvLyAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSBudWxsO1xuICAgIC8vICAgdGhpcy5ycyA9IDA7XG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcbiAgICAvLyB9XG4gICAgLy8gZWxzZSB7XG4gICAgLy8gICBpZiAodGhpcy5ycyAhPT0gbnVsbCAmJiB0aGlzLnJzICE9PSB1bmRlZmluZWQgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiA4ICYmIHRoaXMucnMgPCA4KSB7XG4gICAgLy8gICAgIHRoaXMucnMrKztcbiAgICAvLyAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbdGhpcy5yc107XG4gICAgLy8gICAgIC8vIHRoaXMuaGlnaGxpZ2h0KG5leHRyb3cpO1xuICAgIC8vICAgfVxuICAgIC8vICAgZWxzZSBpZiAodGhpcy5ycyAhPT0gbnVsbCAmJiB0aGlzLnJzICE9PSB1bmRlZmluZWQgJiYgKHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoKSAtIDEgPiB0aGlzLnJzICYmIHRoaXMucnMgPCA4KSB7XG4gICAgLy8gICAgIHRoaXMucnMrKztcbiAgICAvLyAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbdGhpcy5yc107XG4gICAgLy8gICB9XG4gICAgLy8gfVxuXG5cbiAgfVxuICBhcnJvd1VwRXZlbnRGb3JTZWFyY2hCeVRleHQoKSB7XG4gICAgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuUHJvamVjdCAmJiB0aGlzLnByb2plY3RJbmRleCA+IDApIHtcbiAgICAgIHRoaXMucHJvamVjdEluZGV4LS07XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsVG9wIC09IDQ1O1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucHJvamVjdExpc3RbdGhpcy5wcm9qZWN0SW5kZXhdO1xuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLml0ZW1DbGlja2VkLml0ZW1JZCA9PSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF0uaXRlbUlkICYmIHRoaXMudXNlcnMgPT0gMCAmJiB0aGlzLnByb2plY3RMaXN0ICYmIHRoaXMucHJvamVjdExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCAtIDE7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5wcm9qZWN0TGlzdFt0aGlzLnByb2plY3RJbmRleF07XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS03XCIpLnNjcm9sbEhlaWdodDtcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiYgdGhpcy51c2VycyA+IDApIHtcbiAgICAgIHRoaXMudXNlcnMtLTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgLT0gNDU7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0W3RoaXMudXNlcnNdO1xuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiYgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtSWQgPT0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXS5pdGVtSWQgJiYgdGhpcy5nb2FsSW5kZXggPT0gMCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLnVzZXJzID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCAtIDE7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0W3RoaXMudXNlcnNdO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxIZWlnaHQ7XG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJiB0aGlzLml0ZW1DbGlja2VkLml0ZW1JZCA9PSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdLml0ZW1JZCAmJiB0aGlzLmdvYWxJbmRleCA9PSAwICYmIHRoaXMucHJvamVjdExpc3QgJiYgdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMucHJvamVjdExpc3QubGVuZ3RoIC0gMTtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnByb2plY3RMaXN0W3RoaXMucHJvamVjdEluZGV4XTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtN1wiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsSGVpZ2h0O1xuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiYgdGhpcy5nb2FsSW5kZXggPiAwKSB7XG4gICAgICB0aGlzLmdvYWxJbmRleC0tO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCAtPSA0NTtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0W3RoaXMuZ29hbEluZGV4XTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUgJiYgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtSWQgPT0gdGhpcy5lbXBsb3llZUxpc3RbMF0uaXRlbUlkICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IDAgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggLSAxO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbdGhpcy5nb2FsSW5kZXhdO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxIZWlnaHQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLkVtcGxveWVlICYmIHRoaXMuaXRlbUNsaWNrZWQuaXRlbUlkID09IHRoaXMuZW1wbG95ZWVMaXN0WzBdLml0ZW1JZCAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSAwICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMudXNlcnMgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoIC0gMTtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbdGhpcy51c2Vyc107XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbEhlaWdodDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUgJiYgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtSWQgPT0gdGhpcy5lbXBsb3llZUxpc3RbMF0uaXRlbUlkICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IDAgJiYgdGhpcy5wcm9qZWN0TGlzdCAmJiB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggLSAxO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucHJvamVjdExpc3RbdGhpcy5wcm9qZWN0SW5kZXhdO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS03XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtN1wiKS5zY3JvbGxIZWlnaHQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLkVtcGxveWVlICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXgtLTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgLT0gNDU7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXhdO1xuICAgIH1cbiAgfVxuICBhcnJvd1VwRXZlbnQoKSB7XG4gICAgLy8gaWYgKFxuICAgIC8vICAgdGhpcy5zZWFyY2hUZXh0ICE9IHVuZGVmaW5lZCB8fFxuICAgIC8vICAgdGhpcy5zZWFyY2hUZXh0ICE9IG51bGwgfHxcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PT0gXCJcIlxuICAgIC8vICkge1xuICAgIC8vICAgcmV0dXJuO1xuICAgIC8vIH0gXG4gICAgaWYgKHRoaXMuc2VhcmNoQnlUZXh0ICYmIHRoaXMuc2VhcmNoVGV4dCkge1xuICAgICAgdGhpcy5hcnJvd1VwRXZlbnRGb3JTZWFyY2hCeVRleHQoKTtcbiAgICB9XG4gICAgLy9Gcm9tIG1lbnVzXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleC0tO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCAtPSA0NTtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF07XG4gICAgfVxuICAgIC8vRnJvbSB3b3Jrc3BhY2VzXG4gICAgZWxzZSBpZiAoXG4gICAgICB0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmXG4gICAgICB0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkID09IHRoaXMud29ya3NwYWNlc1swXS53b3Jrc3BhY2VJZCAmJiB0aGlzLndzID09IDAgJiZcbiAgICAgIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF07XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbEhlaWdodDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53cyA+IDApIHtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgLT0gNDE7XG4gICAgICB0aGlzLndzLS07XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMud3NdO1xuICAgIH1cbiAgICAvL0Zyb20gd2lkZ2V0cyAgICBcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud2QgPiAwKSB7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wIC09IDQ4O1xuICAgICAgdGhpcy53ZC0tO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1t0aGlzLndkXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCA9PSB0aGlzLndpZGdldHNbMF0ud2lkZ2V0SWQgJiYgdGhpcy53ZCA9PSAwICYmXG4gICAgICB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud2QgPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xuICAgICAgdGhpcy53cyA9IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsSGVpZ2h0O1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLml0ZW1DbGlja2VkLndpZGdldElkID09IHRoaXMud2lkZ2V0c1swXS53aWRnZXRJZCAmJiB0aGlzLndkID09IDAgJiZcbiAgICAgIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkUm93SW5kZXhdO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxIZWlnaHQ7XG4gICAgfVxuICAgIC8vRnJvbSBFbXBsb3llZXMgICBcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID4gMCkge1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCAtPSA0NTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4LS07XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXhdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyID09IHRoaXMuZW1wbG95ZWVMaXN0WzBdLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IDAgJiZcbiAgICAgIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XG4gICAgICB0aGlzLndkID0gdGhpcy53aWRnZXRzLmxlbmd0aCAtIDE7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzW3RoaXMud2RdO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxIZWlnaHQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgPT0gdGhpcy5lbXBsb3llZUxpc3RbMF0uZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gMCAmJlxuICAgICAgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcbiAgICAgIHRoaXMud3MgPSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMTtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbdGhpcy53c107XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbEhlaWdodDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciA9PSB0aGlzLmVtcGxveWVlTGlzdFswXS5lbXBsb3llZU51bWJlciAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSAwICYmXG4gICAgICB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF07XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbEhlaWdodDtcbiAgICB9XG4gICAgLy9Gcm9tIFdJL0J1ZyAgICAgICAgIE5FRUQgVE8gRE8gXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpXG4gICAgICAmJiB0aGlzLnVzZXJzID4gMCkge1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCAtPSA0NTtcbiAgICAgIHRoaXMudXNlcnMtLTtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbdGhpcy51c2Vyc107XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiZcbiAgICAgIHRoaXMudXNlcnMgPT0gMCAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy51c2VycyA9IHRoaXMud2QgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggLSAxO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0W3RoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4XTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsSGVpZ2h0O1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmXG4gICAgICB0aGlzLnVzZXJzID09IDAgJiYgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcbiAgICAgIHRoaXMud2QgPSB0aGlzLndpZGdldHMubGVuZ3RoIC0gMTtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbdGhpcy53ZF07XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbEhlaWdodDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJlxuICAgICAgdGhpcy51c2VycyA9PSAwICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XG4gICAgICB0aGlzLndzID0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDE7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMud3NdO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxIZWlnaHQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiZcbiAgICAgIHRoaXMudXNlcnMgPT0gMCAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF07XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbEhlaWdodDtcbiAgICB9XG4gICAgLy9Gcm9tIGdvYWwvc3ByaW50XG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KVxuICAgICAgJiYgdGhpcy5nb2FsSW5kZXggPiAwKSB7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wIC09IDQ1O1xuICAgICAgdGhpcy5nb2FsSW5kZXgtLTtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0W3RoaXMuZ29hbEluZGV4XTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiZcbiAgICAgIHRoaXMuZ29hbEluZGV4ID09IDAgJiYgdGhpcy51c2VyU3RvcnlMaXN0ICYmIHRoaXMudXNlclN0b3J5TGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcbiAgICAgIHRoaXMudXNlcnMgPSB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggLSAxO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5TGlzdFt0aGlzLnVzZXJzXTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsSGVpZ2h0O1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJlxuICAgICAgdGhpcy5nb2FsSW5kZXggPT0gMCAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy51c2VycyA9IHRoaXMud2QgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggLSAxO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0W3RoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4XTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsSGVpZ2h0O1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJlxuICAgICAgdGhpcy5nb2FsSW5kZXggPT0gMCAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xuICAgICAgdGhpcy53ZCA9IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1t0aGlzLndkXTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsSGVpZ2h0O1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGV0eXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiZcbiAgICAgIHRoaXMuZ29hbEluZGV4ID09IDAgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcbiAgICAgIHRoaXMud3MgPSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMTtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbdGhpcy53c107XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbEhlaWdodDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiZcbiAgICAgIHRoaXMuZ29hbEluZGV4ID09IDAgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkUm93SW5kZXhdO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxIZWlnaHQ7XG4gICAgfVxuICAgIC8vRnJvbSByZWNlbnQgc2VhcmNoZXNcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaCAmJiB0aGlzLnJzID4gMCkge1xuICAgICAgdGhpcy5ycy0tO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbdGhpcy5yc107XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaCAmJiB0aGlzLnJzID09IDAgJiZcbiAgICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53ZCA9IHRoaXMucnMgPSBudWxsO1xuICAgICAgdGhpcy5nb2FsSW5kZXggPSB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCAtIDE7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFt0aGlzLmdvYWxJbmRleF07XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbEhlaWdodDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPT0gMCAmJlxuICAgICAgdGhpcy51c2VyU3RvcnlMaXN0ICYmIHRoaXMudXNlclN0b3J5TGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcbiAgICAgIHRoaXMudXNlcnMgPSB0aGlzLnVzZXJTdG9yeUxpc3QubGVuZ3RoIC0gMTtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeUxpc3RbdGhpcy51c2Vyc107XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbEhlaWdodDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPT0gMCAmJlxuICAgICAgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndkID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoIC0gMTtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFt0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleF07XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbEhlaWdodDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPT0gMCAmJlxuICAgICAgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcbiAgICAgIHRoaXMud2QgPSB0aGlzLndpZGdldHMubGVuZ3RoIC0gMTtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbdGhpcy53ZF07XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbEhlaWdodDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPT0gMCAmJlxuICAgICAgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcbiAgICAgIHRoaXMud3MgPSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMTtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbdGhpcy53c107XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbEhlaWdodDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPT0gMCAmJlxuICAgICAgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkUm93SW5kZXhdO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxIZWlnaHQ7XG4gICAgfVxuXG5cbiAgICAvLyBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaCAmJiB0aGlzLnJzID09IDAgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xuICAgIC8vICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxIZWlnaHQ7XG4gICAgLy8gICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDE7XG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSBudWxsO1xuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0W3RoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4XTtcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPT0gMCAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcbiAgICAvLyAgIHRoaXMud2QgPSB0aGlzLndpZGdldHMubGVuZ3RoIC0gMTtcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud3MgPSBudWxsO1xuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1t0aGlzLndkXTtcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPT0gMCAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcbiAgICAvLyAgIHRoaXMud3MgPSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMTtcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudCA9IHRoaXMud2QgPSBudWxsO1xuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPT0gMCAmJiB0aGlzLnRvb2xzICYmIHRoaXMudG9vbHMubGVuZ3RoID4gMCkge1xuICAgIC8vICAgdGhpcy50ID0gdGhpcy50b29scy5sZW5ndGggLSAxO1xuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53cyA9IHRoaXMud2QgPSBudWxsO1xuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLnRdO1xuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgLy8gICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53ZCA9IG51bGw7XG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnRdO1xuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5mdWxsTmFtZSAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSAwICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xuICAgIC8vICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxIZWlnaHQ7XG4gICAgLy8gICB0aGlzLndkID0gODtcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSBudWxsO1xuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1t0aGlzLndkXTtcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZnVsbE5hbWUgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gMCAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcbiAgICAvLyAgIHRoaXMud3MgPSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMTtcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudCA9IHRoaXMud2QgPSBudWxsO1xuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZnVsbE5hbWUgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gMCAmJiB0aGlzLnRvb2xzICYmIHRoaXMudG9vbHMubGVuZ3RoID4gMCkge1xuICAgIC8vICAgdGhpcy50ID0gdGhpcy50b29scy5sZW5ndGggLSAxO1xuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53cyA9IHRoaXMud2QgPSBudWxsO1xuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLnRdO1xuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5mdWxsTmFtZSAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSAwICYmIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgLy8gICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53ZCA9IG51bGw7XG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnRdO1xuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkID09IDAgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XG4gICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbEhlaWdodDtcbiAgICAvLyAgIHRoaXMud3MgPSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMTtcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndkID0gbnVsbDtcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbdGhpcy53c107XG4gICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbEhlaWdodDtcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy53ZCA9PSAwICYmIHRoaXMudG9vbHMgJiYgdGhpcy50b29scy5sZW5ndGggPiAwKSB7XG4gICAgLy8gICB0aGlzLnQgPSB0aGlzLnRvb2xzLmxlbmd0aCAtIDE7XG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53cyA9IHRoaXMud2QgPSBudWxsO1xuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLnRdO1xuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkID09IDAgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy53ZCA9IG51bGw7XG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnRdO1xuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLndzID09IDAgJiYgdGhpcy50b29scyAmJiB0aGlzLnRvb2xzLmxlbmd0aCA+IDApIHtcbiAgICAvLyAgIHRoaXMudCA9IHRoaXMudG9vbHMubGVuZ3RoIC0gMTtcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndzID0gdGhpcy53ZCA9IG51bGw7XG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy50b29sc1t0aGlzLnRdO1xuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLndzID09IDAgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy53ZCA9IG51bGw7XG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkUm93SW5kZXhdO1xuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5wZXJtaXNzaW9uICYmIHRoaXMudCA9PSAwICYmIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgLy8gICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMud2QgPSBudWxsO1xuICAgIC8vICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxIZWlnaHQ7XG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkUm93SW5kZXhdO1xuICAgIC8vIH0gZWxzZSB7XG4gICAgLy8gICBpZiAodGhpcy5ycyAhPT0gbnVsbCAmJiB0aGlzLnJzICE9PSB1bmRlZmluZWQgJiYgdGhpcy5ycyA+IDApIHtcbiAgICAvLyAgICAgdGhpcy5ycy0tO1xuICAgIC8vICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1t0aGlzLnJzXTtcbiAgICAvLyAgICAgLy8gdGhpcy5oaWdobGlnaHQobmV4dHJvdyk7XG4gICAgLy8gICB9XG4gICAgLy8gfVxuICB9XG4gIGFycm93TGVmdEV2ZW50Rm9yU2VhcmNoQnlUZXh0KCkge1xuICAgIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLnByb2plY3RMaXN0ICYmIHRoaXMucHJvamVjdExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS03XCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGxcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnByb2plY3RMaXN0WzBdO1xuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGxcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmIHRoaXMucHJvamVjdExpc3QgJiYgdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbFxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucHJvamVjdExpc3RbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLkVtcGxveWVlICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbFxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLkVtcGxveWVlICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsXG4gICAgICB0aGlzLnVzZXJzID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLkVtcGxveWVlICYmIHRoaXMucHJvamVjdExpc3QgJiYgdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbFxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucHJvamVjdExpc3RbMF07XG4gICAgfVxuICB9XG4gIGFycm93TGVmdEV2ZW50KCkge1xuICAgIC8vIGlmIChcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCAhPSB1bmRlZmluZWQgfHxcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCAhPSBudWxsIHx8XG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgPT09IFwiXCJcbiAgICAvLyApIHtcbiAgICAvLyAgIHJldHVybjtcbiAgICAvLyB9XG4gICAgaWYgKHRoaXMuc2VhcmNoQnlUZXh0ICYmIHRoaXMuc2VhcmNoVGV4dCkge1xuICAgICAgdGhpcy5hcnJvd0xlZnRFdmVudEZvclNlYXJjaEJ5VGV4dCgpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy9Gcm9tIHdvcmtzcGFjZXNcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMudCA9IHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcbiAgICB9XG4gICAgLy9mcm9tIHdpZGdldHNcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLndzID0gMDtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1swXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xuICAgIH1cbiAgICAvL0Zyb20gZW1wbG95ZWVzXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy53ZCA9IDA7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLndzID0gMDtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1swXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xuICAgIH1cbiAgICAvL0Zyb20gV0kvQnVnXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpXG4gICAgICAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKVxuICAgICAgJiYgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMud2QgPSAwO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpXG4gICAgICAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy53cyA9IDA7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYylcbiAgICAgICYmIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSAwO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcbiAgICB9XG4gICAgLy9Gcm9tIEdvYWwvU3ByaW50XG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KVxuICAgICAgJiYgdGhpcy51c2VyU3RvcnlMaXN0ICYmIHRoaXMudXNlclN0b3J5TGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlMaXN0WzBdO1xuICAgIH1cbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpXG4gICAgICAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludClcbiAgICAgICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLndkID0gMDtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1swXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludClcbiAgICAgICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLndzID0gMDtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1swXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludClcbiAgICAgICYmIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSAwO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcbiAgICB9XG4gICAgLy9Gcm9tIHJlY2VudCBzZWFyY2hlc1xuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoXG4gICAgICAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoXG4gICAgICAmJiB0aGlzLnVzZXJTdG9yeUxpc3QgJiYgdGhpcy51c2VyU3RvcnlMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy51c2VycyA9IDA7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeUxpc3RbMF07XG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoXG4gICAgICAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoXG4gICAgICAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy53ZCA9IDA7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaFxuICAgICAgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMud3MgPSAwO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzWzBdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2hcbiAgICAgICYmIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSAwO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcbiAgICB9XG4gIH1cbiAgYXJyb3dSaWdodEV2ZW50Rm9yU2VhcmNoQnlUZXh0KCkge1xuICAgIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy51c2VycyA9IDA7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xuICAgIH1cbiAgfVxuICBhcnJvd1JpZ2h0RXZlbnQoKSB7XG4gICAgLy8gaWYgKFxuICAgIC8vICAgdGhpcy5zZWFyY2hUZXh0ID09IHVuZGVmaW5lZCB8fFxuICAgIC8vICAgdGhpcy5zZWFyY2hUZXh0ID09IG51bGwgfHxcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PT0gXCJcIlxuICAgIC8vICkge1xuICAgIC8vICAgcmV0dXJuO1xuICAgIC8vIH0gXG4gICAgaWYgKHRoaXMuc2VhcmNoQnlUZXh0ICYmIHRoaXMuc2VhcmNoVGV4dCkge1xuICAgICAgdGhpcy5hcnJvd1JpZ2h0RXZlbnRGb3JTZWFyY2hCeVRleHQoKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2gpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy9Gcm9tIG1lbnVzXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy50ID0gbnVsbDtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLndzID0gMDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLndkID0gMDtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSAwO1xuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnVzZXJzID0gMDtcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnJzID0gMDtcbiAgICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbMF07XG4gICAgfVxuICAgIC8vRnJvbSB3b3Jrc3BhY2VzXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMud2QgPSAwO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy51c2VycyA9IDA7XG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnJzID0gMDtcbiAgICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbMF07XG4gICAgfVxuICAgIC8vRnJvbSB3aWRnZXRzXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5ycyA9IDA7XG4gICAgICB0aGlzLndzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xuICAgIH1cbiAgICAvL0Zyb20gRW1wbG95ZWVzXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5ycyA9IDA7XG4gICAgICB0aGlzLndzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xuICAgIH1cbiAgICAvL0Zyb20gV0kvQnVnXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpXG4gICAgICAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpXG4gICAgICAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5ycyA9IDA7XG4gICAgICB0aGlzLndzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xuICAgIH1cbiAgICAvL0Zyb20gR29hbC9TcHJpbnRcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwpXG4gICAgICAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5ycyA9IDA7XG4gICAgICB0aGlzLndzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5Xb3Jrc3BhY2VGb3JtKCkge1xuICAgIHRoaXMuYWRkV29ya1NwYWNlUG9wT3Zlci5vcGVuKCk7XG4gICAgdGhpcy5kaXNwbGF5ID0gdHJ1ZTtcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcbiAgICB0aGlzLmdldEFsbFJvbGVzKCk7XG4gIH1cblxuICBnZXRBbGxSb2xlcygpIHtcbiAgICB0aGlzLmNvbW1vblNlcnZpY2UuR2V0YWxsUm9sZXMoKS5zdWJzY3JpYmUoKHJlc3BvbnNlRGF0YTogYW55KSA9PiB7XG4gICAgICB0aGlzLnJvbGVzRHJvcERvd24gPSByZXNwb25zZURhdGEuZGF0YTtcbiAgICAgIHRoaXMucm9sZXNEcm9wRG93bi5mb3JFYWNoKChwKSA9PiB7XG4gICAgICAgIGNvbnN0IGlkID0gcC5yb2xlSWQudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcC5yb2xlSWQgPSBpZDtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5uZ0Rlc3Ryb3llZCQubmV4dCgpO1xuICAgIHRoaXMubmdEZXN0cm95ZWQkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBjb21wYXJlU2VsZWN0ZWRSb2xlc0ZuKCkgeyB9XG4gIGNvbXBhcmVFZGl0U2VsZWN0ZWRSb2xlc0ZuKCkgeyB9XG4gIGNvbXBhcmVEZWxldGVTZWxlY3RlZFJvbGVzRm4oKSB7IH1cbiAgdXBzZXJ0V29ya3NwYWNlKCkgeyB9XG4gIHRvZ2dsZUFsbFJvbGVzU2VsZWN0ZWQoKSB7IH1cbiAgdG9nZ2xlRWRpdEFsbFJvbGVzU2VsZWN0ZWQoKSB7IH1cbiAgdG9nZ2xlRGVsZXRlQWxsUm9sZXNTZWxlY3RlZCgpIHsgfVxuICBjbG9zZUFkZFdvcmtzcGFjZURpYWxvZygpIHsgfVxufVxuIiwiPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJ2aXNpYmxlc1wiIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudXNcIiBmeEhpZGUuZ3QteHMgZnhTaG93PlxuICA8bWF0LWljb24gY2xhc3M9XCJuZXdNZW51XCI+bWVudTwvbWF0LWljb24+XG48L2J1dHRvbj5cbjxkaXYgZnhGbGV4IGNsYXNzPVwibmV3TG9nbyBkZWZhdWx0LWJnIHRvcC1sb2dvLWJnIG5ld21pbmlsb2dvIHpvb20taW1hZ2UtaG92ZXIgY3VzdG9tLWhlYWRlci1pY29uLW1vYmlsZVwiIGZ4SGlkZS5ndC14cyBmeFNob3c+XG4gIDxpbWcgc3JjPVwie3tjb21wYW55TWluaUxvZ299fVwiIGFsdD1cIlwiIGlkPVwibWluaS1sb2dvLXRvcGJhclwiIHN0eWxlPVwid2lkdGg6MzBweDsgaGVpZ2h0OjMwcHg7XCJcbiAgICAoY2xpY2spPVwiZ2V0QWxsTWVudUl0ZW1zKClcIiAvPlxuPC9kaXY+XG48ZGl2IGZ4RmxleCBjbGFzcz1cIm5ld0xvZ28gIHRvcC1sb2dvLWJnIGFwcHMtYnV0dG9uIHpvb20taW1hZ2UtaG92ZXIgY3VzdG9tLWhlYWRlci1pY29uXCIgc3R5bGU9XCJsZWZ0OiAwcHg7XCIgZnhIaWRlIGZ4U2hvdy5ndC14cz5cbiAgPGltZyBzcmM9XCJ7e2NvbXBhbnlNYWluTG9nb319XCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7bGVmdDogMjBweDtwb3NpdGlvbjogcmVsYXRpdmU7XCIgaWQ9XCJtYWluLWxvZ28tdG9wYmFyXCJcbiAgICBjbGFzcz1cImltZy1oZWlnaHQtbWFpbi1sb2dvLXRvcGJhclwiIChjbGljayk9XCJnZXRBbGxNZW51SXRlbXMoKVwiIC8+XG48L2Rpdj5cblxuPCEtLSBcbjxtYXQtbWVudSAjbWVudXM9XCJtYXRNZW51XCIgY2xhc3M9XCJmaWx0ZXItcGFuZWxcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YobWVudUl0ZW1zJCB8IGFzeW5jKVwiPlxuICAgIDxkaXYgKm5nSWY9XCJpdGVtLnR5cGUgPT09ICdkcm9wRG93bidcIj5cbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbbWF0TWVudVRyaWdnZXJGb3JdPVwibGV2ZWxUd29NZW51XCIgKG1vdXNlb3Zlcik9XCJvcGVuTGV2ZWwyTWVudShpdGVtLnN0YXRlLGl0ZW0uc3ViKVwiPlxuICAgICAgICA8bWF0LWljb24+e3sgaXRlbS5pY29uIH19PC9tYXQtaWNvbj57eyBpdGVtLm1lbnUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHN9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIml0ZW0udHlwZSA9PSAnbGluaydcIj5cbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSByb3V0ZXJMaW5rPVwiL3t7IGl0ZW0uc3RhdGUgfX1cIj5cbiAgICAgICAgPG1hdC1pY29uPnt7IGl0ZW0uaWNvbiB9fTwvbWF0LWljb24+e3sgaXRlbS5tZW51IHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbWF0LW1lbnU+XG5cbjxtYXQtbWVudSAjbGV2ZWxUd29NZW51PVwibWF0TWVudVwiPlxuICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtTHZsMiBvZiBzdWJMZXZlbHNcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiaXRlbUx2bDIudHlwZSA9PT0gJ2Ryb3BEb3duJ1wiPlxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIFttYXRNZW51VHJpZ2dlckZvcl09XCJsZXZlbFRocmVlTWVudVwiXG4gICAgICAgIChtb3VzZW92ZXIpPVwib3BlbkxldmVsM01lbnUoc3RhdGVMdmwxLGl0ZW1MdmwyLnN0YXRlLGl0ZW0uc3ViKVwiPlxuICAgICAgICB7eyBpdGVtTHZsMi5tZW51IHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJpdGVtTHZsMi50eXBlID09ICdhcHBsaWNhdGlvbmxpbmsnXCI+XG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gcm91dGVyTGluaz1cIi97eyBpdGVtTHZsMi5zdGF0ZSB9fVwiPlxuICAgICAgICB7eyBpdGVtTHZsMi5tZW51IHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJpdGVtTHZsMi50eXBlID09ICdsaW5rJ1wiPlxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIHJvdXRlckxpbms9XCIve3tzdGF0ZUx2bDF9fS97eyBpdGVtTHZsMi5zdGF0ZSB9fVwiPlxuICAgICAgICB7eyBpdGVtTHZsMi5tZW51IHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbWF0LW1lbnU+XG5cbjxtYXQtbWVudSAjbGV2ZWxUaHJlZU1lbnU9XCJtYXRNZW51XCI+XG4gIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW1MdmwzIG9mIHN1YkxldmVsc0ZvckxldmVsMlwiPlxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSByb3V0ZXJMaW5rPVwiL3t7IGxldmVsM0xpbmsxIH19L3t7IGxldmVsM0xpbmsyIH19L3t7aXRlbUx2bDMuc3RhdGV9fVwiPlxuICAgICAge3sgaXRlbUx2bDMubWVudSB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVsc319XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9tYXQtbWVudT4gLS0+XG5cbjxtYXQtbWVudSAjbWVudXM9XCJtYXRNZW51XCIgeVBvc2l0aW9uPVwiYmVsb3dcIiBjbGFzcz1cImZpbHRlci1wYW5lbFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICBzdHlsZT1cImhlaWdodDphdXRvXCI+XG4gIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiaXRlbS50eXBlID09ICdsaW5rJyB8fCBpdGVtLnR5cGUgPT0gJ2FwcGxpY2F0aW9ubGluaydcIj5cbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSByb3V0ZXJMaW5rPVwiL3t7IGl0ZW0uc3RhdGUgfX1cIiAoY2xpY2spPVwic2VsZWN0TWVudShpdGVtLCRldmVudClcIlxuICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwiaXRlbS1hY3RpdmVcIj5cbiAgICAgICAgPG1hdC1pY29uPnt7IGl0ZW0uaWNvbiB9fTwvbWF0LWljb24+e3sgaXRlbS5tZW51IHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbWF0LW1lbnU+XG5cblxuPGRpdiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcbmxlZnQ6IDkwJVwiIGNsYXNzPVwic3RvcmUtaWNvbSBtYXQtaWNvbi1idXR0b24gc3RvcmUtaWNvbi1jb250YWluZXJcIiAqbmdJZj1cImNhbkFjY2Vzc19mZWF0dXJlX0RyYWdBcHBzXCJcbiAgW25nQ2xhc3NdPVwidGhpcy5yb3V0ZXMudXJsLmluY2x1ZGVzKCcvYXBwLXN0b3JlL3dpZGdldHMnKSA/ICdpY29uX2FjdGl2ZV9jbGFzcycgOiAnJ1wiPlxuICA8IS0tIDxmYS1pY29uIGljb249XCJzdG9yZVwiIHN0eWxlPVwiZm9udC1zaXplOiAyMHB4ICFpbXBvcnRhbnQ7XCIgbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiXG4gICAgbWF0VG9vbHRpcD1cInt7ICdBUFAuQVBQU1RPUkUnIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwib3BlbkFwcHMoKVwiXG4gICAgY2xhc3M9XCJtYXQtY29sb3ItYWNjZW50IGN1cnNvci1wb2ludGVyIHRoZW1lLW5hdmJhci1pY29uLWNvbG9yXCI+PC9mYS1pY29uPiAtLT5cbiAgPGZhLWljb24gaWNvbj1cInN0b3JlXCIgbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiXG4gICAgbWF0VG9vbHRpcD1cInt7ICdBUFAuQVBQU1RPUkUnIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwib3BlbkFwcHMoKVwiXG4gICAgY2xhc3M9XCJtYXQtY29sb3ItYWNjZW50IGN1cnNvci1wb2ludGVyIHRoZW1lLW5hdmJhci1pY29uLWNvbG9yIHN0b3JlLWljb24tZmFcIj48L2ZhLWljb24+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cIlNlYXJjaEJveCBkcm9wZG93blwiIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XCI+XG4gIDxzcGFuIGNsYXNzPVwibWF0LWNvbG9yLWFjY2VudCBpbnB1dC1ncm91cC1hZGRvblwiICpuZ0lmPVwic2VhcmNoQnlUZXh0XCI+QCAmbmJzcDs8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwibWF0LWNvbG9yLWFjY2VudCBpbnB1dC1ncm91cC1hZGRvblwiICpuZ0lmPVwic2VhcmNoQnlJZFwiPiMgJm5ic3A7PC9zcGFuPlxuICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cIlNlYXJjaEJveC1pbnB1dCBkcm9wYnRuXCIgcGxhY2Vob2xkZXI9XCJ7eyAnQVBQLlNUQVJUSEVSRU9SQ0xJQ0tDT05UUk9MK1EnIHwgdHJhbnNsYXRlfX1cIlxuICAgIFtjbGFzcy5oaWRlLXBsYWNlaG9sZGVyXT1cInNlYXJjaEJ5VGV4dCB8fCBzZWFyY2hCeUlkXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgI2VsZW1lbnQgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCJcbiAgICAoaW5wdXQpPVwiU2VhcmNoSXRlbSgkZXZlbnQpXCIgKGNsaWNrKT1cIlNlYXJjaEl0ZW0oJGV2ZW50KVwiIChmb2N1cyk9XCJvbkZvY3VzKClcIiAoYmx1cik9XCJTZXQoKTtcIlxuICAgIChrZXlkb3duLmVudGVyKT1cIm5hdmlnYXRlKCRldmVudCwgaXRlbUNsaWNrZWQpXCIgKGtleWRvd24uYXJyb3dkb3duKT1cImFycm93RG93bkV2ZW50KClcIlxuICAgIChrZXlkb3duLmFycm93dXApPVwiYXJyb3dVcEV2ZW50KClcIiAoa2V5ZG93bi5hcnJvd2xlZnQpPVwiYXJyb3dMZWZ0RXZlbnQoKVwiIChrZXlkb3duLmFycm93cmlnaHQpPVwiYXJyb3dSaWdodEV2ZW50KClcIj5cblxuICA8YnV0dG9uIGNsYXNzPVwiU2VhcmNoQm94LWJ1dHRvblwiPlxuICAgIDxzcGFuIGNsYXNzPVwiY2xvc2VfaWNvbl9zZWFyY2hcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiIXNlYXJjaFRleHRcIj48L3NwYW4+XG4gICAgICA8bWF0LWljb24gKm5nSWY9XCJzZWFyY2hUZXh0XCIgY2xhc3M9XCJpY29uLWJ1dHRvbiBtci0wNVwiIGFyaWEtaGlkZGVuPVwiZmFsc2VcIiAoY2xpY2spPVwiY2xvc2VTZWFyY2goJGV2ZW50KVwiXG4gICAgICAgIHN0eWxlPVwiY3Vyc29yOnBvaW50ZXJcIj5cbiAgICAgICAgY2xvc2U8L21hdC1pY29uPlxuICAgIDwvc3Bhbj5cbiAgICA8bWF0LWljb24gY2xhc3M9XCJTZWFyY2hCb3gtaWNvbiBpY29uLWNvbG9yIG10LWxnLW4yIG1yLTA1IGluZm8tY2xhc3MgaW5mby1pY29uLWN1c3RvbVwiIFtzYXRQb3BvdmVyQW5jaG9yRm9yXT1cInBcIlxuICAgICAgI2luZm9Qb3BPdmVyPVwic2F0UG9wb3ZlckFuY2hvclwiIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJvcGVuSW5mbyhpbmZvUG9wT3ZlcilcIj5pbmZvPC9tYXQtaWNvbj5cbiAgICA8bWF0LWljb24gY2xhc3M9XCJTZWFyY2hCb3gtaWNvbiBpY29uLWNvbG9yIG10LWxnLW4yIHNlYXJjaC1pY29uLWN1c3RvbVwiIGNvbG9yPVwicHJpbWFyeVwiPnNlYXJjaDwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tY29udGVudCBkcm9wZG93bi1jb250ZW50LW5hdmJhciBzZWFyY2gtZHJvcGRvd24tY3VzdG9tLW1vZGFsXCIgW25nQ2xhc3NdPVwieydkLWJsb2NrJyA6IGRpc3BsYXksICAnZC1ub25lJyA6ICFkaXNwbGF5fVwiPlxuICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIGNvbG9yPVwicHJpbWFyeVwiIG1vZGU9XCJpbmRldGVybWluYXRlXCJcbiAgICAgICpuZ0lmPVwibG9hZGluZ1NlYXJjaE1lbnVEYXRhIHx8IHJlY2VudFNlYXJjaGVzZmV0Y2hJblByb2dyZXNzIHx8IHdpZGdldHNmZXRjaEluUHJvZ3Jlc3NcIj5cbiAgICA8L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgPGRpdiBjbGFzcz1cInJvdyByb3dzZWxlY3QgY3VzdG9tLXJvdy1zZWxlY3RvclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBwbC0wNVwiICpuZ0lmPVwiIShzZWFyY2hCeUlkIHx8IHNlYXJjaEJ5VGV4dClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbnNlbGVjdC1uZXh0IG1sLTBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW4taGVhZGVyXCI+RGFzaGJvYXJkPC9kaXY+XG4gICAgICAgICAgPGRpdiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7IG92ZXJmbG93OiBhdXRvO1wiIGNsYXNzPVwiY3VzdG9tLXNlYXJjaC1tb2RhbC1kYXNoYm9hcmQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJjdXN0b20tc2VhcmNoLW1vZGFsLWRhc2hib2FyZC1idG4gY29sb3ItdGV4dDFcIlxuICAgICAgICAgICAgICByb3V0ZXJMaW5rPVwiL2Rhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZFwiXG4gICAgICAgICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJpdGVtLWFjdGl2ZVwiXG4gICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIiBtYXRUb29sdGlwPVwiR28gdG8gRGFzaGJvYXJkXCI+XG4gICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBjbGFzcz1cImx1Y2lkZSBsdWNpZGUtYm94IHctNCBoLTRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48cGF0aCBkPVwiTTIxIDE2VjhhMiAyIDAgMCAwLTEtMS43M2wtNy00YTIgMiAwIDAgMC0yIDBsLTcgNEEyIDIgMCAwIDAgMyA4djhhMiAyIDAgMCAwIDEgMS43M2w3IDRhMiAyIDAgMCAwIDIgMGw3LTRBMiAyIDAgMCAwIDIxIDE2elwiPjwvcGF0aD48cG9seWxpbmUgcG9pbnRzPVwiMy4yNyA2Ljk2IDEyIDEyLjAxIDIwLjczIDYuOTZcIj48L3BvbHlsaW5lPjxwb2x5bGluZSBwb2ludHM9XCIxMiAyMi4wOCAxMiAxMlwiPjwvcG9seWxpbmU+PC9zdmc+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLXNlYXJjaC1tb2RhbC1kYXNoYm9hcmQtdGV4dFwiPkRhc2hib2FyZDwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGNvbHVtbnNlbGVjdC1uZXh0IHBsLTA1IGN1c3RvbS1zZWFyY2gtbW9kYWwtYXBwcy1jb250YWluZXItbWFpblwiICpuZ0lmPVwiaXRlbXMgJiYgKGl0ZW1zLmxlbmd0aD4wKSAmJiAhKHNlYXJjaEJ5SWQgfHwgc2VhcmNoQnlUZXh0KVwiPlxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJpbi1oZWFkZXJcIj57eyAnU0hFTEwuQVBQTElDQVRJT05TJyB8IHRyYW5zbGF0ZX19PC9kaXY+IC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW4taGVhZGVyIGN1c3RvbS1zZWFyY2gtbW9kYWwtYXBwcy1oZWFkZXJcIj5cbiAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgY2xhc3M9XCJsdWNpZGUgbHVjaWRlLWZpbGUtdGV4dCB3LTQgaC00XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PHBhdGggZD1cIk0xNSAySDZhMiAyIDAgMCAwLTIgMnYxNmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWN1pcIj48L3BhdGg+PHBhdGggZD1cIk0xNCAydjRhMiAyIDAgMCAwIDIgMmg0XCI+PC9wYXRoPjxwYXRoIGQ9XCJNMTAgOUg4XCI+PC9wYXRoPjxwYXRoIGQ9XCJNMTYgMTNIOFwiPjwvcGF0aD48cGF0aCBkPVwiTTE2IDE3SDhcIj48L3BhdGg+PC9zdmc+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tc2VhcmNoLW1vZGFsLWFwcHMtaGVhZGVyLXRleHRcIj57eyAnU0hFTEwuQVBQTElDQVRJT05TJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gPGRpdiBpZD1cInN0eWxlLTFcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7IGhlaWdodDogNDQ1cHggIWltcG9ydGFudDsgb3ZlcmZsb3c6IGF1dG87XCIgY2xhc3M9XCJjdXN0b20tc2VhcmNoLW1vZGFsLWFwcHMtY29udGFpbmVyXCI+IC0tPlxuICAgICAgICA8ZGl2IGlkPVwic3R5bGUtMVwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDtcIiBjbGFzcz1cImN1c3RvbS1zZWFyY2gtbW9kYWwtYXBwcy1jb250YWluZXJcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbXMgJiYgaXRlbXMubGVuZ3RoPjBcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXM7IGxldCBpID0gaW5kZXg7XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwic2VsZWN0ZWRSb3dJbmRleCA9PSBpID8gJyNmMWY1ZjknIDogJ3doaXRlJ1wiIGNsYXNzPVwiY3VzdG9tLXNlYXJjaC1tb2RhbC1hcHBzLW1haW5cIj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0udHlwZSA9PSAnbGluaycgfHwgaXRlbS50eXBlID09ICdhcHBsaWNhdGlvbmxpbmsnXCIgY2xhc3M9XCJjdXN0b20tc2VhcmNoLW1vZGFsLWFwcHMtY29udGVudFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSByb3V0ZXJMaW5rPVwiL3t7IGl0ZW0uc3RhdGUgfX1cIiBjbGFzcz1cImN1c3RvbS1zZWFyY2gtbW9kYWwtYXBwcy1idG5cIlxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ZWRSb3dJbmRleCA9PSBpID8gJ2NvbG9yLXRleHQnIDogJ2NvbG9yLXRleHQxJ1wiXG4gICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cInNlbGVjdEFkaW1uVG9vbChpdGVtLnN0YXRlLCAkZXZlbnQsIGl0ZW0pXCIgcm91dGVyTGlua0FjdGl2ZT1cIml0ZW0tYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJ7ZXhhY3Q6XG4gICAgICAgICAgICAgICAgICAgIHRydWV9XCIgbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiXG4gICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3sgdHJhbnNsYXRlYXBwbGljYXRpb25uYW1lKGl0ZW0ubWVudSB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVscyl9fVwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbi1jb2xvciBjdXN0b20tc2VhcmNoLW1vZGFsLWFwcHMtaWNvblwiIFtuZ0NsYXNzXT1cInNlbGVjdGVkUm93SW5kZXggPT0gaSA/ICdjb2xvci10ZXh0JyA6ICdjb2xvci10ZXh0MSdcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5pY29uIH19PC9tYXQtaWNvbj48c3BhblxuICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInRyYW5zbGF0ZWFwcGxpY2F0aW9ubmFtZShpdGVtLm1lbnUpIHwgIHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVscyB8IGhpZ2hMaWdodFRleHQgOiBzZWFyY2hUZXh0XCIgY2xhc3M9XCJjdXN0b20tc2VhcmNoLW1vZGFsLWFwcHMtdGV4dFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBwbC0wNVwiICpuZ0lmPVwiIShzZWFyY2hCeUlkIHx8IHNlYXJjaEJ5VGV4dClcIj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uc2VsZWN0LW5leHQgbWwtMCBjdXN0b20tc2VhcmNoLW1vZGFsLWRhc2hib2FyZC1jb250YWluZXItbWFpblwiICpuZ0lmPVwid29ya3NwYWNlcyAmJiAod29ya3NwYWNlcy5sZW5ndGg+MClcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW4taGVhZGVyIGN1c3RvbS1zZWFyY2gtbW9kYWwtZGFzaGJvYXJkLWhlYWRlclwiPlxuICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIGNsYXNzPVwibHVjaWRlIGx1Y2lkZS1sYXlvdXQtZGFzaGJvYXJkIHctNCBoLTRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48cmVjdCB3aWR0aD1cIjdcIiBoZWlnaHQ9XCI5XCIgeD1cIjNcIiB5PVwiM1wiIHJ4PVwiMVwiPjwvcmVjdD48cmVjdCB3aWR0aD1cIjdcIiBoZWlnaHQ9XCI1XCIgeD1cIjE0XCIgeT1cIjNcIiByeD1cIjFcIj48L3JlY3Q+PHJlY3Qgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiOVwiIHg9XCIxNFwiIHk9XCIxMlwiIHJ4PVwiMVwiPjwvcmVjdD48cmVjdCB3aWR0aD1cIjdcIiBoZWlnaHQ9XCI1XCIgeD1cIjNcIiB5PVwiMTZcIiByeD1cIjFcIj48L3JlY3Q+PC9zdmc+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1zZWFyY2gtbW9kYWwtZGFzaGJvYXJkLWhlYWRlci10ZXh0XCI+e3sgJ1NIRUxMLkRBU0hCT0FSRFMnIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwicGx1cy1zcXVhcmVcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNhbkFjY2Vzc19mZWF0dXJlX0FkZERhc2hib2FyZFwiIG1hdFRvb2x0aXA9XCJ7eyAnQVBQLkFERERBU0hCT0FSRCcgfCB0cmFuc2xhdGV9fVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJpbml0aWFsaXplV29ya3NwYWNlRm9ybSgpO29wZW5Xb3Jrc3BhY2VGb3JtKCk7XCIgY2xhc3M9XCJtYXQtY29sb3ItYWNjZW50IGN1cnNvci1wb2ludGVyIGN1c3RvbS1zZWFyY2gtbW9kYWwtZGFzaGJvYXJkLWhlYWRlci1hZGQtaWNvblwiXG4gICAgICAgICAgICAgIFtzYXRQb3BvdmVyQW5jaG9yRm9yXT1cImFkZFdvcmtzcGFjZVwiPlxuICAgICAgICAgICAgPC9mYS1pY29uPiBcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIDxkaXYgaWQ9XCJzdHlsZS0yXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OyBoZWlnaHQ6IDQ0NXB4ICFpbXBvcnRhbnQ7IG92ZXJmbG93OiBhdXRvO1wiIGNsYXNzPVwiY3VzdG9tLXNlYXJjaC1tb2RhbC1kYXNoYm9hcmQtY29udGFpbmVyXCI+IC0tPlxuICAgICAgICAgIDxkaXYgaWQ9XCJzdHlsZS0yXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1wiIGNsYXNzPVwiY3VzdG9tLXNlYXJjaC1tb2RhbC1kYXNoYm9hcmQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya3NwYWNlcyAmJiB3b3Jrc3BhY2VzLmxlbmd0aD4wXCI+XG4gICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHdjIG9mIHdvcmtzcGFjZXM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIndzID09IGkgPyAnI2YxZjVmOScgOiAnd2hpdGUnXCIgY2xhc3M9XCJzY3JvbGwgY3VzdG9tLXNlYXJjaC1tb2RhbC1kYXNoYm9hcmQtbWFpblwiICN3b3Jrc3BhY2VFbGVtZW50PlxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAobW91c2Vkb3duKT1cInNlbGVjdE1lbnUod2MsJGV2ZW50KVwiIGNsYXNzPVwiY3VzdG9tLXNlYXJjaC1tb2RhbC1kYXNoYm9hcmQtYnRuXCJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIndzID09IGkgPyAnY29sb3ItdGV4dCcgOiAnY29sb3ItdGV4dDEnXCIgKGNsaWNrKT1cIm5hdmlnYXRlVG9Vcmwod2Mud29ya3NwYWNlSWQpXCJcbiAgICAgICAgICAgICAgICAgIHJvdXRlckxpbms9XCIvZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL3t7IHdjLndvcmtzcGFjZUlkIH19XCIgcm91dGVyTGlua0FjdGl2ZT1cIml0ZW0tYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIiBtYXRUb29sdGlwPVwie3t3Yy53b3Jrc3BhY2VOYW1lfX1cIj5cbiAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBjbGFzcz1cImx1Y2lkZSBsdWNpZGUtbGF5b3V0LWRhc2hib2FyZCB3LTQgaC00XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PHJlY3Qgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiOVwiIHg9XCIzXCIgeT1cIjNcIiByeD1cIjFcIj48L3JlY3Q+PHJlY3Qgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiNVwiIHg9XCIxNFwiIHk9XCIzXCIgcng9XCIxXCI+PC9yZWN0PjxyZWN0IHdpZHRoPVwiN1wiIGhlaWdodD1cIjlcIiB4PVwiMTRcIiB5PVwiMTJcIiByeD1cIjFcIj48L3JlY3Q+PHJlY3Qgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiNVwiIHg9XCIzXCIgeT1cIjE2XCIgcng9XCIxXCI+PC9yZWN0Pjwvc3ZnPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJ3Yy53b3Jrc3BhY2VOYW1lIHwgaGlnaExpZ2h0VGV4dCA6IHNlYXJjaFRleHQgXCIgY2xhc3M9XCJjdXN0b20tc2VhcmNoLW1vZGFsLWRhc2hib2FyZC10ZXh0XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGNvbHVtbnNlbGVjdC1hcHBzIG1sLTBcIiAqbmdJZj1cIndpZGdldHMgJiYgd2lkZ2V0cy5sZW5ndGg+MCAgJiYgIShzZWFyY2hCeUlkIHx8IHNlYXJjaEJ5VGV4dClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImluLWhlYWRlclwiPnt7ICdTSEVMTC5GQVZPVVJJVEVBUFBTJyB8IHRyYW5zbGF0ZX19PC9kaXY+XG4gICAgICAgIDxkaXYgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OyBoZWlnaHQ6IDQ0NXB4ICFpbXBvcnRhbnQ7IG92ZXJmbG93OiBhdXRvO1wiIGlkPVwic3R5bGUtM1wiPlxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHdpZGdldCBvZiB3aWRnZXRzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIndkID09IGkgPyB0aGVtZUJhc2VDb2xvciA6ICd3aGl0ZSdcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSByb3V0ZXJMaW5rQWN0aXZlPVwiaXRlbS1hY3RpdmVcIiBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwie2V4YWN0OlxuICAgICAgICAgIHRydWV9XCIgcm91dGVyTGluaz1cIi9kYXNoYm9hcmQtbWFuYWdlbWVudC93aWRnZXRzL3t7IHdpZGdldC53aWRnZXRJZCB9fVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIndkID09IGkgPyAnY29sb3ItdGV4dCcgOiAnY29sb3ItdGV4dDEnXCIgKG1vdXNlZG93bik9XCJPblNlbGVjdCh3aWRnZXQsJGV2ZW50KVwiXG4gICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIiBtYXRUb29sdGlwPVwie3t3aWRnZXQud2lkZ2V0TmFtZSB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVsc319XCI+XG4gICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwid2lkZ2V0LndpZGdldE5hbWUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHMgfCBoaWdoTGlnaHRUZXh0IDogc2VhcmNoVGV4dFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uc2VsZWN0LW5leHQgbWwtMFwiICpuZ0lmPVwicHJvamVjdExpc3QgJiYgcHJvamVjdExpc3QubGVuZ3RoPjAgJiYgc2VhcmNoVGV4dCAmJiBzZWFyY2hCeVRleHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImluLWhlYWRlclwiPlByb2plY3RzPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxcIiBpZD1cInN0eWxlLTdcIlxuICAgICAgICAgIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDsgaGVpZ2h0OiA0NDVweCAhaW1wb3J0YW50OyBvdmVyZmxvdzogYXV0bztcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwcm9qZWN0IG9mIHByb2plY3RMaXN0OyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cInByb2plY3RJbmRleCA9PSBpID8gdGhlbWVCYXNlQ29sb3IgOiAnd2hpdGUnXCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gcm91dGVyTGlua0FjdGl2ZT1cIml0ZW0tYWN0aXZlXCIgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cIntleGFjdDpcbiAgICAgICB0cnVlfVwiIFtuZ0NsYXNzXT1cInByb2plY3RJbmRleCA9PSBpID8gJ2NvbG9yLXRleHQnIDogJ2NvbG9yLXRleHQxJ1wiXG4gICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25Qcm9qZWN0U2VsZWN0KHByb2plY3QsJGV2ZW50KVwiIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIlxuICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3twcm9qZWN0Lml0ZW1OYW1lIHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX1cIj5cbiAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJwcm9qZWN0Lml0ZW1OYW1lIHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzIHwgaGlnaExpZ2h0VGV4dCA6IHNlYXJjaFRleHRcIj48L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbnNlbGVjdC1uZXh0IG1sLTBcIlxuICAgICAgICAqbmdJZj1cInVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGg+MCAmJiBzZWFyY2hUZXh0ICYmIHNlYXJjaEJ5VGV4dFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW4taGVhZGVyXCIgKm5nSWY9XCJpc0VuYWJsZUJ1Z0JvYXJkXCI+e3sgJ1NIRUxMLldJQlVHJyB8IHRyYW5zbGF0ZX19PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbi1oZWFkZXJcIiAqbmdJZj1cIiFpc0VuYWJsZUJ1Z0JvYXJkXCI+e3sgJ1NIRUxMLldJJ3wgdHJhbnNsYXRlfX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbFwiIGlkPVwic3R5bGUtNVwiXG4gICAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OyBoZWlnaHQ6IDQ0NXB4ICFpbXBvcnRhbnQ7IG92ZXJmbG93OiBhdXRvO1wiPlxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHVzZXJTdG9yeSBvZiB1c2VyU3RvcnlTZWFyY2hMaXN0OyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cInVzZXJzID09IGkgPyB0aGVtZUJhc2VDb2xvciA6ICd3aGl0ZSdcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSByb3V0ZXJMaW5rQWN0aXZlPVwiaXRlbS1hY3RpdmVcIiBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwie2V4YWN0OlxuICAgICAgICAgdHJ1ZX1cIiBbbmdDbGFzc109XCJ1c2VycyA9PSBpID8gJ2NvbG9yLXRleHQnIDogJ2NvbG9yLXRleHQxJ1wiIChtb3VzZWRvd24pPVwiT25Vc2VyU3RvcnlTZWxlY3QodXNlclN0b3J5LCRldmVudClcIlxuICAgICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCIgbWF0VG9vbHRpcD1cInt7dXNlclN0b3J5Lml0ZW1OYW1lIHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX1cIj5cbiAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJ1c2VyU3RvcnkuaXRlbU5hbWUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHMgfCBoaWdoTGlnaHRUZXh0IDogc2VhcmNoVGV4dFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5zZWxlY3QtbmV4dCBtbC0wXCJcbiAgICAgICAgKm5nSWY9XCJnb2FsU2VhcmNoTGlzdCAmJiBnb2FsU2VhcmNoTGlzdC5sZW5ndGg+MCAmJiBzZWFyY2hUZXh0ICYmIHNlYXJjaEJ5VGV4dFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW4taGVhZGVyXCI+e3sgJ1NIRUxMLkdPQUxTUFJJTlQnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxcIiBpZD1cInN0eWxlLTZcIlxuICAgICAgICAgIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDsgaGVpZ2h0OiA0NDVweCAhaW1wb3J0YW50OyBvdmVyZmxvdzogYXV0bztcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBnb2FsIG9mIGdvYWxTZWFyY2hMaXN0OyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImdvYWxJbmRleCA9PSBpID8gdGhlbWVCYXNlQ29sb3IgOiAnd2hpdGUnXCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gcm91dGVyTGlua0FjdGl2ZT1cIml0ZW0tYWN0aXZlXCIgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cIntleGFjdDpcbiAgICAgICAgIHRydWV9XCIgW25nQ2xhc3NdPVwiZ29hbEluZGV4ID09IGkgPyAnY29sb3ItdGV4dCcgOiAnY29sb3ItdGV4dDEnXCIgKG1vdXNlZG93bik9XCJPbkdvYWxTZWxlY3QoZ29hbCwkZXZlbnQpXCJcbiAgICAgICAgICAgICAgbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiIG1hdFRvb2x0aXA9XCJ7e2dvYWwuaXRlbU5hbWUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHN9fVwiPlxuICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImdvYWwuaXRlbU5hbWUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHMgfCBoaWdoTGlnaHRUZXh0IDogc2VhcmNoVGV4dFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGNvbHVtbnNlbGVjdC1hcHBzIG1sLTBcIlxuICAgICAgICAqbmdJZj1cIihlbXBsb3llZUxpc3QgJiYgZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApICYmIHNlYXJjaFRleHQgJiYgc2VhcmNoQnlUZXh0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbi1oZWFkZXJcIj5FbXBsb3llZXM8L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cInN0eWxlLTRcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7IGhlaWdodDogNDQ1cHggIWltcG9ydGFudDsgb3ZlcmZsb3c6IGF1dG87XCI+XG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZW1wbG95ZWUgb2YgZW1wbG95ZWVMaXN0OyBsZXQgaSA9IGluZGV4XCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcIlxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwic2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IGkgPyB0aGVtZUJhc2VDb2xvciA6ICd3aGl0ZSdcIiAjd29ya3NwYWNlRWxlbWVudD5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAobW91c2Vkb3duKT1cInNlbGVjdEVtcGxveWVlKGVtcGxveWVlLCRldmVudClcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gaSA/ICdjb2xvci10ZXh0JyA6ICdjb2xvci10ZXh0MSdcIlxuICAgICAgICAgICAgICByb3V0ZXJMaW5rPVwiL2Rhc2hib2FyZC9wcm9maWxlL3t7IGVtcGxveWVlLml0ZW1JZCB9fS9vdmVydmlld1wiIHJvdXRlckxpbmtBY3RpdmU9XCJpdGVtLWFjdGl2ZVwiXG4gICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIiBtYXRUb29sdGlwPVwie3tlbXBsb3llZS5pdGVtTmFtZX19XCI+XG4gICAgICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWF2YXRhciBbbmFtZV09XCJlbXBsb3llZS5pdGVtTmFtZSB8IHJlbW92ZVNwZWNpYWxDaGFyYWN0ZXJzXCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiXG4gICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3sgZW1wbG95ZWUuaXRlbU5hbWUgfX1cIiBbc3JjXT1cImVtcGxveWVlLnByb2ZpbGVJbWFnZSB8IGZldGNoU2l6ZWRBbmRDYWNoZWRJbWFnZTogJzIwJzonJ1wiXG4gICAgICAgICAgICAgICAgICBbaXNSb3VuZF09XCJ0cnVlXCIgc2l6ZT1cIjIwXCIgKGNsaWNrKT1cInByb2ZpbGVQYWdlKGVtcGxveWVlLnVzZXJJZCk7JGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWF2YXRhcj4gXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTA1XCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImVtcGxveWVlLml0ZW1OYW1lIHwgaGlnaExpZ2h0VGV4dCA6IHNlYXJjaFRleHRcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gY29sdW1uc2VsZWN0LWFwcHMgbWwtMCBjdXN0b20tc2VhcmNoLW1vZGFsLXJlY2VudHMtY29udGFpbmVyLW1haW5cIlxuICAgICAgICAqbmdJZj1cInJlY2VudFNlYXJjaGVzICYmIChyZWNlbnRTZWFyY2hlcy5sZW5ndGg+MCkgICYmICEoc2VhcmNoQnlJZCB8fCBzZWFyY2hCeVRleHQpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbi1oZWFkZXIgY3VzdG9tLXNlYXJjaC1tb2RhbC1yZWNlbnRzLWhlYWRlclwiPlxuICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBjbGFzcz1cImx1Y2lkZSBsdWNpZGUtY2xvY2sgdy00IGgtNFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIj48L2NpcmNsZT48cG9seWxpbmUgcG9pbnRzPVwiMTIgNiAxMiAxMiAxNiAxNFwiPjwvcG9seWxpbmU+PC9zdmc+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tc2VhcmNoLW1vZGFsLXJlY2VudHMtaGVhZGVyLXRleHRcIj57eyAnU0hFTEwuUkVDRU5UU0VBUkNIUycgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gPGRpdiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7IGhlaWdodDogNDQ1cHggIWltcG9ydGFudFwiIGNsYXNzPVwiY3VzdG9tLXNlYXJjaC1tb2RhbC1yZWNlbnRzLWNvbnRhaW5lclwiPiAtLT5cbiAgICAgICAgPGRpdiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XCIgY2xhc3M9XCJjdXN0b20tc2VhcmNoLW1vZGFsLXJlY2VudHMtY29udGFpbmVyXCI+XG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2VhcmNoIG9mIHJlY2VudFNlYXJjaGVzIHwgc2xpY2U6MDo5IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwicnMgPT0gaSA/ICcjZjFmNWY5JyA6ICd3aGl0ZSdcIiBjbGFzcz1cInNjcm9sbCBjdXN0b20tc2VhcmNoLW1vZGFsLXJlY2VudHMtbWFpblwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIGNsYXNzPVwiY3VzdG9tLXNlYXJjaC1tb2RhbC1yZWNlbnRzLWJ0blwiIFtuZ0NsYXNzXT1cInJzID09IGkgPyAnY29sb3ItdGV4dCcgOiAnY29sb3ItdGV4dDEnXCJcbiAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJzZWFyY2hUZXh0PXNlYXJjaC5yZWNlbnRTZWFyY2g7U2VhcmNoUmVjZW50SXRlbShzZWFyY2gsJGV2ZW50KVwiXG4gICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIiBtYXRUb29sdGlwPVwie3tzZWFyY2gucmVjZW50U2VhcmNoIHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX0gXG4gICAgICAgICAgICAgICh7eyBjb252ZXJ0VG9Mb2NhbFRpbWUoc2VhcmNoLmNyZWF0ZWREYXRlVGltZSkgfCB0aW1lYWdvIH19KVwiPlxuICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgY2xhc3M9XCJsdWNpZGUgbHVjaWRlLWNsb2NrIHctNCBoLTQgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiPjwvY2lyY2xlPjxwb2x5bGluZSBwb2ludHM9XCIxMiA2IDEyIDEyIDE2IDE0XCI+PC9wb2x5bGluZT48L3N2Zz5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tc2VhcmNoLW1vZGFsLXJlY2VudHMtaXRlbVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwic2VhcmNoLnJlY2VudFNlYXJjaCB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVscyB8IGhpZ2hMaWdodFRleHQgOiBzZWFyY2hUZXh0XCIgY2xhc3M9XCJjdXN0b20tc2VhcmNoLW1vZGFsLXJlY2VudHMtdGV4dFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1zZWFyY2gtbW9kYWwtcmVjZW50cy10aW1lLXRleHRcIj4oe3sgY29udmVydFRvTG9jYWxUaW1lKHNlYXJjaC5jcmVhdGVkRGF0ZVRpbWUpIHwgdGltZWFnbyB9fSk8L3NwYW4+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgaW4taGVhZGVyIFwiICpuZ0lmPVwiIXNlYXJjaFRleHQgJiYgc2VhcmNoQnlJZFwiPlxuICAgICAgUGxlYXNlIGVudGVyIHVuaXF1ZSBpZCBhbmQgY2xpY2sgZW50ZXIgZm9yIG5hdmlnYXRpbmcgdG8gY29ycmVzcGluZyBwYWdlXG4gIDwvZGl2PlxuICBcbiAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIGluLWhlYWRlciBcIiAqbmdJZj1cIiFzZWFyY2hUZXh0ICYmIHNlYXJjaEJ5VGV4dFwiID5cbiAgICBQbGVhc2UgZW50ZXIgdGV4dCB0byByZXRyZWl2ZSBkYXRhIGJ5IGZpbHRlcmluZ1xuICA8L2Rpdj4gLS0+XG4gIFxuXG4gIDxzYXQtcG9wb3ZlciBiYWNrZHJvcENsYXNzPVwiYmFja2Ryb3AtY29sb3JcIiBoYXNCYWNrZHJvcCAjYWRkV29ya3NwYWNlIHZlcnRpY2FsQWxpZ249XCJiZWxvd1wiIGhvcml6b250YWxBbGlnbj1cImVuZFwiXG4gICAgW2ludGVyYWN0aXZlQ2xvc2VdPVwiZmFsc2VcIj5cbiAgICA8bWF0LWNhcmQgY2xhc3M9XCJmaWx0ZXItZGF0YSBwLTBcIj5cbiAgICAgIDxtYXQtY2FyZC10aXRsZSBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlLXRleHQgbWF0LWJnLXByaW1hcnkgcC0wNSBtYi0xXCI+XG4gICAgICAgICAge3sgJ0FQUC5BREREQVNIQk9BUkRUSVRMRScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC1jYXJkLXRpdGxlPlxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwid29ya3NwYWNlRm9ybVwiIG5vdmFsaWRhdGUgKHN1Ym1pdCk9XCJ3b3Jrc3BhY2VGb3JtLnZhbGlkICYmIHVwc2VydFdvcmtzcGFjZSgpXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtY29udGVudFwiPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJ7eyAnSFJNQU5BR0FNRU5ULk5BTUUnIHwgdHJhbnNsYXRlfX0qXCIgZm9ybUNvbnRyb2xOYW1lPVwid29ya3NwYWNlTmFtZVwiIC8+XG4gICAgICAgICAgICAgIDxtYXQtZXJyb3JcbiAgICAgICAgICAgICAgICAqbmdJZj1cIndvcmtzcGFjZUZvcm0uZ2V0KCd3b3Jrc3BhY2VOYW1lJykuaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiYgd29ya3NwYWNlRm9ybS5nZXQoJ3dvcmtzcGFjZU5hbWUnKS50b3VjaGVkIFwiPlxuICAgICAgICAgICAgICAgIHt7ICdBUFAuREFTSEJPQVJETkFNRVJFUVVJUkVEJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cIndvcmtzcGFjZUZvcm0uZ2V0KCd3b3Jrc3BhY2VOYW1lJykuaGFzRXJyb3IoJ21heGxlbmd0aCcpXCI+XG4gICAgICAgICAgICAgICAge3sgJ0FQUC5EQVNIQk9BUkROQU1FTEVOR1RIRVhDRUVEJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmdWxsLXdpZHRoXCI+XG4gICAgICAgICAgICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiIHJvd3M9XCIyXCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdDT01QQU5ZU0VUVElOR1MuREVTQ1JJUFRJT04nIHwgdHJhbnNsYXRlIH19XCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgPG1hdC1lcnJvclxuICAgICAgICAgICAgICAgICpuZ0lmPVwid29ya3NwYWNlRm9ybS5nZXQoJ2Rlc2NyaXB0aW9uJykuaGFzRXJyb3IoJ21heGxlbmd0aCcpICYmIHdvcmtzcGFjZUZvcm0uZ2V0KCdkZXNjcmlwdGlvbicpLnRvdWNoZWRcIj5cbiAgICAgICAgICAgICAgICB7eyAnQVBQLkNVU1RPTUFQUERFU0NSSVBUSU9OTUFYTEVOR1RIRVJST1InIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZ1bGwtd2lkdGhcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiPlxuICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJzZWxlY3RlZFJvbGVzXCIgW2NvbXBhcmVXaXRoXT1cImNvbXBhcmVTZWxlY3RlZFJvbGVzRm5cIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ1dJREdFVFMuVklFV1JPTEVTJyB8IHRyYW5zbGF0ZSB9fVwiIG11bHRpcGxlIHJlcXVpcmVkPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICNhbGxTZWxlY3RlZCAoY2xpY2spPVwidG9nZ2xlQWxsUm9sZXNTZWxlY3RlZCgpXCIgW3ZhbHVlXT1cIjBcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdQRVJNSVNTSU9OTUFOQUdFTUVOVC5TRUxFQ1RBTEwnIHwgdHJhbnNsYXRlIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJyb2xlcy5yb2xlSWRcIiAqbmdGb3I9XCJsZXQgcm9sZXMgb2Ygcm9sZXNEcm9wRG93blwiICNhbGxTZWxlY3RlZFxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJvbGVzUGVyT25lKGFsbFNlbGVjdGVkLnZhbHVlKVwiPlxuICAgICAgICAgICAgICAgICAge3sgcm9sZXMucm9sZU5hbWUgfX1cbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgPG1hdC1lcnJvclxuICAgICAgICAgICAgICAgICpuZ0lmPVwid29ya3NwYWNlRm9ybS5nZXQoJ3NlbGVjdGVkUm9sZXMnKS5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiB3b3Jrc3BhY2VGb3JtLmdldCgnc2VsZWN0ZWRSb2xlcycpLnRvdWNoZWRcIj5cbiAgICAgICAgICAgICAgICB7eyAnQVBQLlNFTEVDVEFOWVJPTEUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiZWRpdFJvbGVJZHNcIiBbY29tcGFyZVdpdGhdPVwiY29tcGFyZUVkaXRTZWxlY3RlZFJvbGVzRm5cIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ1dJREdFVFMuRURJVFJPTEVTJyB8IHRyYW5zbGF0ZSB9fVwiIG11bHRpcGxlPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICNhbGxFZGl0U2VsZWN0ZWQgKGNsaWNrKT1cInRvZ2dsZUVkaXRBbGxSb2xlc1NlbGVjdGVkKClcIiBbdmFsdWVdPVwiMFwiPlxuICAgICAgICAgICAgICAgICAge3sgJ1BFUk1JU1NJT05NQU5BR0VNRU5ULlNFTEVDVEFMTCcgfCB0cmFuc2xhdGUgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cInJvbGUucm9sZUlkXCIgKm5nRm9yPVwibGV0IHJvbGUgb2Ygcm9sZXNEcm9wRG93blwiICNhbGxFZGl0U2VsZWN0ZWRcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVFZGl0Um9sZXNQZXJPbmUoKVwiPlxuICAgICAgICAgICAgICAgICAge3sgcm9sZS5yb2xlTmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiZGVsZXRlUm9sZUlkc1wiIFtjb21wYXJlV2l0aF09XCJjb21wYXJlRGVsZXRlU2VsZWN0ZWRSb2xlc0ZuXCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdXSURHRVRTLkRFTEVURVJPTEVTJyB8IHRyYW5zbGF0ZSB9fVwiIG11bHRpcGxlPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICNhbGxEZWxldGVTZWxlY3RlZCAoY2xpY2spPVwidG9nZ2xlRGVsZXRlQWxsUm9sZXNTZWxlY3RlZCgpXCIgW3ZhbHVlXT1cIjBcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdQRVJNSVNTSU9OTUFOQUdFTUVOVC5TRUxFQ1RBTEwnIHwgdHJhbnNsYXRlIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJyb2xlLnJvbGVJZFwiICpuZ0Zvcj1cImxldCByb2xlIG9mIHJvbGVzRHJvcERvd25cIiAjYWxsRGVsZXRlU2VsZWN0ZWRcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVEZWxldGVSb2xlc1Blck9uZSgpXCI+XG4gICAgICAgICAgICAgICAgICB7eyByb2xlLnJvbGVOYW1lIH19XG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yLTFcIiBtYXQtYnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwidXBzZXJ0V29ya3NwYWNlKClcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXdvcmtzcGFjZUZvcm0udmFsaWRcIj5cbiAgICAgICAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgY29sb3I9XCJwcmltYXJ5XCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiAqbmdJZj1cImRhc2hib2FyZFVwZGF0ZUluUHJvZ3Jlc3NcIj5cbiAgICAgICAgICAgICAgPC9tYXQtcHJvZ3Jlc3MtYmFyPlxuICAgICAgICAgICAgICA8ZmEtaWNvbiBjbGFzcz1cIm1yLTA1XCIgaWNvbj1cInBsdXNcIj48L2ZhLWljb24+IHt7ICdTQVZFJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gbWF0LXJhaXNlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbG9zZUFkZFdvcmtzcGFjZURpYWxvZygpXCI+XG4gICAgICAgICAgICAgIDxmYS1pY29uIGNsYXNzPVwibXItMDVcIiBpY29uPVwidGltZXNcIj48L2ZhLWljb24+IHt7ICdDQU5DRUwnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mb3JtPlxuICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgIDwvbWF0LWNhcmQ+XG4gIDwvc2F0LXBvcG92ZXI+XG5cblxuICA8c2F0LXBvcG92ZXIgI3AgaGFzQmFja2Ryb3AgW2ludGVyYWN0aXZlQ2xvc2VdPVwidHJ1ZVwiIHZlcnRpY2FsQWxpZ249XCJhYm92ZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0b29sdGlwLXdyYXBwZXJcIiBzdHlsZT1cIiBiYWNrZ3JvdW5kOiAjZmZmO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICBwYWRkaW5nOiAxMHB4IDE0cHg7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLDAsMCwwLjEyKTtcIj5cbiAgICAgIDx0YWJsZT5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD5DdHJsICsgUTogPC90ZD5cbiAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD5cbiAgICAgICAgICA8dGQ+IHt7ICdTSEVMTC5UT09QRU5TRUFSQ0hNRU5VJyB8IHRyYW5zbGF0ZX19PC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD5DdHJsICsgQjogPC90ZD5cbiAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD5cbiAgICAgICAgICA8dGQ+IHt7ICdTSEVMTC5UT09QRU5HT0FMU0FORFVTRVJTJyB8IHRyYW5zbGF0ZX19PC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD5DdHJsICsgWTogPC90ZD5cbiAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD5cbiAgICAgICAgICA8dGQ+IHt7ICdTSEVMTC5UT1NFQVJDSEJZSUQnIHwgdHJhbnNsYXRlfX08L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPkN0cmwgKyBNOiA8L3RkPlxuICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPlxuICAgICAgICAgIDx0ZD4ge3sgJ1NIRUxMLlRPQ0xPU0VNRU5VJyB8IHRyYW5zbGF0ZX19PC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9kaXY+XG4gIDwvc2F0LXBvcG92ZXI+XG5cbiAgPG1hdC1zcGlubmVyICpuZ0lmPVwic2VhcmNoQnlUZXh0TG9hZGluZyAmJiBkaXNwbGF5XCIgY2xhc3M9XCJzcGlubmVyLWNsYXNzXCIgW2RpYW1ldGVyXT1cIjEwMFwiPjwvbWF0LXNwaW5uZXI+Il19
|