@thetradeengineorg1/snova-shell-module 0.0.18 → 0.0.20
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 +85 -51
- package/bundles/thetradeengineorg1-snova-shell-module.umd.js.map +1 -1
- package/esm2015/lib/globaldependencies/components/avatar.component.js +3 -5
- package/esm2015/lib/shell-components/components/header-side/header-side.component.js +90 -55
- package/fesm2015/thetradeengineorg1-snova-shell-module.js +85 -51
- package/fesm2015/thetradeengineorg1-snova-shell-module.js.map +1 -1
- package/lib/shell-components/components/header-side/header-side.component.d.ts +4 -0
- package/lib/shell-components/components/header-side/header-side.component.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -86,13 +86,12 @@ import * as i35 from "@angular/forms";
|
|
|
86
86
|
import * as i36 from "@angular/material/form-field";
|
|
87
87
|
import * as i37 from "@angular/material/input";
|
|
88
88
|
import * as i38 from "@angular/material/tooltip";
|
|
89
|
-
import * as i39 from "
|
|
90
|
-
import * as i40 from "@angular/material/
|
|
91
|
-
import * as i41 from "
|
|
92
|
-
import * as i42 from "
|
|
93
|
-
import * as i43 from "
|
|
94
|
-
import * as i44 from "
|
|
95
|
-
import * as i45 from "../../../globaldependencies/pipes/softlabels.pipes";
|
|
89
|
+
import * as i39 from "@angular/material/core";
|
|
90
|
+
import * as i40 from "@angular/material/button";
|
|
91
|
+
import * as i41 from "../submit-feedback/submit-feedback.component";
|
|
92
|
+
import * as i42 from "@angular/material/progress-bar";
|
|
93
|
+
import * as i43 from "../notifications/announcement-dialog.component";
|
|
94
|
+
import * as i44 from "../../../globaldependencies/pipes/softlabels.pipes";
|
|
96
95
|
const _c0 = ["feedTimeSheet"];
|
|
97
96
|
const _c1 = ["feedBackPopover"];
|
|
98
97
|
const _c2 = ["documentPopover"];
|
|
@@ -104,19 +103,23 @@ function HeaderSideComponent_div_5_div_3_img_2_Template(rf, ctx) { if (rf & 1) {
|
|
|
104
103
|
const ctx_r37 = i0.ɵɵnextContext(3);
|
|
105
104
|
i0.ɵɵproperty("src", ctx_r37.selectedCompany.companyMiniLogo, i0.ɵɵsanitizeUrl);
|
|
106
105
|
} }
|
|
107
|
-
function
|
|
108
|
-
i0.ɵɵ
|
|
106
|
+
function HeaderSideComponent_div_5_div_3_div_3_Template(rf, ctx) { if (rf & 1) {
|
|
107
|
+
i0.ɵɵelementStart(0, "div", 62);
|
|
108
|
+
i0.ɵɵtext(1);
|
|
109
|
+
i0.ɵɵelementEnd();
|
|
109
110
|
} if (rf & 2) {
|
|
110
111
|
const ctx_r38 = i0.ɵɵnextContext(3);
|
|
112
|
+
i0.ɵɵstyleProp("background-color", ctx_r38.getAvatarColor(ctx_r38.selectedCompany.companyName));
|
|
111
113
|
i0.ɵɵpropertyInterpolate("matTooltip", ctx_r38.selectedCompany.companyName);
|
|
112
|
-
i0.ɵɵ
|
|
114
|
+
i0.ɵɵadvance(1);
|
|
115
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r38.getInitials(ctx_r38.selectedCompany.companyName), "");
|
|
113
116
|
} }
|
|
114
117
|
const _c5 = function (a0) { return { "margin-bottom": a0 }; };
|
|
115
118
|
function HeaderSideComponent_div_5_div_3_Template(rf, ctx) { if (rf & 1) {
|
|
116
119
|
i0.ɵɵelementStart(0, "div", 56);
|
|
117
120
|
i0.ɵɵelementStart(1, "div", 57);
|
|
118
121
|
i0.ɵɵtemplate(2, HeaderSideComponent_div_5_div_3_img_2_Template, 1, 1, "img", 58);
|
|
119
|
-
i0.ɵɵtemplate(3,
|
|
122
|
+
i0.ɵɵtemplate(3, HeaderSideComponent_div_5_div_3_div_3_Template, 2, 4, "div", 59);
|
|
120
123
|
i0.ɵɵelementEnd();
|
|
121
124
|
i0.ɵɵelementStart(4, "span", 60);
|
|
122
125
|
i0.ɵɵtext(5);
|
|
@@ -151,18 +154,23 @@ function HeaderSideComponent_div_5_mat_option_12_img_2_Template(rf, ctx) { if (r
|
|
|
151
154
|
const companyList_r41 = i0.ɵɵnextContext().$implicit;
|
|
152
155
|
i0.ɵɵproperty("src", companyList_r41.companyMiniLogo, i0.ɵɵsanitizeUrl);
|
|
153
156
|
} }
|
|
154
|
-
function
|
|
155
|
-
i0.ɵɵ
|
|
157
|
+
function HeaderSideComponent_div_5_mat_option_12_div_3_Template(rf, ctx) { if (rf & 1) {
|
|
158
|
+
i0.ɵɵelementStart(0, "div", 62);
|
|
159
|
+
i0.ɵɵtext(1);
|
|
160
|
+
i0.ɵɵelementEnd();
|
|
156
161
|
} if (rf & 2) {
|
|
157
162
|
const companyList_r41 = i0.ɵɵnextContext().$implicit;
|
|
163
|
+
const ctx_r43 = i0.ɵɵnextContext(2);
|
|
164
|
+
i0.ɵɵstyleProp("background-color", ctx_r43.getAvatarColor(companyList_r41.companyName));
|
|
158
165
|
i0.ɵɵpropertyInterpolate("matTooltip", companyList_r41.companyName);
|
|
159
|
-
i0.ɵɵ
|
|
166
|
+
i0.ɵɵadvance(1);
|
|
167
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r43.getInitials(companyList_r41.companyName), "");
|
|
160
168
|
} }
|
|
161
169
|
function HeaderSideComponent_div_5_mat_option_12_Template(rf, ctx) { if (rf & 1) {
|
|
162
170
|
i0.ɵɵelementStart(0, "mat-option", 64);
|
|
163
171
|
i0.ɵɵelementStart(1, "div", 65);
|
|
164
172
|
i0.ɵɵtemplate(2, HeaderSideComponent_div_5_mat_option_12_img_2_Template, 1, 1, "img", 66);
|
|
165
|
-
i0.ɵɵtemplate(3,
|
|
173
|
+
i0.ɵɵtemplate(3, HeaderSideComponent_div_5_mat_option_12_div_3_Template, 2, 4, "div", 59);
|
|
166
174
|
i0.ɵɵelementStart(4, "div", 67);
|
|
167
175
|
i0.ɵɵtext(5);
|
|
168
176
|
i0.ɵɵelementEnd();
|
|
@@ -308,19 +316,24 @@ function HeaderSideComponent_button_13_img_1_Template(rf, ctx) { if (rf & 1) {
|
|
|
308
316
|
} }
|
|
309
317
|
function HeaderSideComponent_button_13_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
310
318
|
i0.ɵɵelementStart(0, "div", 79);
|
|
311
|
-
i0.ɵɵ
|
|
319
|
+
i0.ɵɵelementStart(1, "div", 62);
|
|
320
|
+
i0.ɵɵtext(2);
|
|
321
|
+
i0.ɵɵelementEnd();
|
|
312
322
|
i0.ɵɵelementEnd();
|
|
313
323
|
} if (rf & 2) {
|
|
314
324
|
const ctx_r61 = i0.ɵɵnextContext(2);
|
|
315
325
|
i0.ɵɵadvance(1);
|
|
316
|
-
i0.ɵɵ
|
|
326
|
+
i0.ɵɵstyleProp("background-color", ctx_r61.getAvatarColor(ctx_r61.authenticatedUserRecord.fullName));
|
|
327
|
+
i0.ɵɵpropertyInterpolate("matTooltip", ctx_r61.authenticatedUserRecord.fullName);
|
|
328
|
+
i0.ɵɵadvance(1);
|
|
329
|
+
i0.ɵɵtextInterpolate(ctx_r61.getInitials(ctx_r61.authenticatedUserRecord.fullName));
|
|
317
330
|
} }
|
|
318
331
|
function HeaderSideComponent_button_13_Template(rf, ctx) { if (rf & 1) {
|
|
319
332
|
const _r63 = i0.ɵɵgetCurrentView();
|
|
320
333
|
i0.ɵɵelementStart(0, "button", 75);
|
|
321
334
|
i0.ɵɵlistener("click", function HeaderSideComponent_button_13_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r63); const ctx_r62 = i0.ɵɵnextContext(); return ctx_r62.toggleRecording(); });
|
|
322
335
|
i0.ɵɵtemplate(1, HeaderSideComponent_button_13_img_1_Template, 1, 1, "img", 76);
|
|
323
|
-
i0.ɵɵtemplate(2, HeaderSideComponent_button_13_div_2_Template,
|
|
336
|
+
i0.ɵɵtemplate(2, HeaderSideComponent_button_13_div_2_Template, 3, 4, "div", 77);
|
|
324
337
|
i0.ɵɵelementEnd();
|
|
325
338
|
} if (rf & 2) {
|
|
326
339
|
const ctx_r6 = i0.ɵɵnextContext();
|
|
@@ -332,11 +345,11 @@ function HeaderSideComponent_button_13_Template(rf, ctx) { if (rf & 1) {
|
|
|
332
345
|
i0.ɵɵproperty("ngIf", !ctx_r6.authenticatedUserRecord.profileImage);
|
|
333
346
|
} }
|
|
334
347
|
function HeaderSideComponent_mat_icon_25_Template(rf, ctx) { if (rf & 1) {
|
|
335
|
-
i0.ɵɵelement(0, "mat-icon",
|
|
348
|
+
i0.ɵɵelement(0, "mat-icon", 80);
|
|
336
349
|
} }
|
|
337
350
|
function HeaderSideComponent_button_26_Template(rf, ctx) { if (rf & 1) {
|
|
338
351
|
const _r65 = i0.ɵɵgetCurrentView();
|
|
339
|
-
i0.ɵɵelementStart(0, "button",
|
|
352
|
+
i0.ɵɵelementStart(0, "button", 81);
|
|
340
353
|
i0.ɵɵlistener("click", function HeaderSideComponent_button_26_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r65); const ctx_r64 = i0.ɵɵnextContext(); return ctx_r64.clearDemoData(); });
|
|
341
354
|
i0.ɵɵpipe(1, "translate");
|
|
342
355
|
i0.ɵɵelementStart(2, "mat-icon");
|
|
@@ -355,7 +368,7 @@ function HeaderSideComponent_button_26_Template(rf, ctx) { if (rf & 1) {
|
|
|
355
368
|
} }
|
|
356
369
|
function HeaderSideComponent_button_27_Template(rf, ctx) { if (rf & 1) {
|
|
357
370
|
const _r67 = i0.ɵɵgetCurrentView();
|
|
358
|
-
i0.ɵɵelementStart(0, "button",
|
|
371
|
+
i0.ɵɵelementStart(0, "button", 81);
|
|
359
372
|
i0.ɵɵlistener("click", function HeaderSideComponent_button_27_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r67); const ctx_r66 = i0.ɵɵnextContext(); return ctx_r66.exportConfigurationDialogData(); });
|
|
360
373
|
i0.ɵɵpipe(1, "translate");
|
|
361
374
|
i0.ɵɵelementStart(2, "mat-icon");
|
|
@@ -374,7 +387,7 @@ function HeaderSideComponent_button_27_Template(rf, ctx) { if (rf & 1) {
|
|
|
374
387
|
} }
|
|
375
388
|
function HeaderSideComponent_button_28_Template(rf, ctx) { if (rf & 1) {
|
|
376
389
|
const _r70 = i0.ɵɵgetCurrentView();
|
|
377
|
-
i0.ɵɵelementStart(0, "button",
|
|
390
|
+
i0.ɵɵelementStart(0, "button", 82, 83);
|
|
378
391
|
i0.ɵɵlistener("click", function HeaderSideComponent_button_28_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r70); const _r68 = i0.ɵɵreference(1); const ctx_r69 = i0.ɵɵnextContext(); return ctx_r69.addUploadFilePopupOpen(_r68); });
|
|
379
392
|
i0.ɵɵpipe(2, "translate");
|
|
380
393
|
i0.ɵɵelementStart(3, "mat-icon");
|
|
@@ -419,7 +432,7 @@ function HeaderSideComponent_button_30_Template(rf, ctx) { if (rf & 1) {
|
|
|
419
432
|
} }
|
|
420
433
|
function HeaderSideComponent_button_31_Template(rf, ctx) { if (rf & 1) {
|
|
421
434
|
const _r76 = i0.ɵɵgetCurrentView();
|
|
422
|
-
i0.ɵɵelementStart(0, "button",
|
|
435
|
+
i0.ɵɵelementStart(0, "button", 81);
|
|
423
436
|
i0.ɵɵlistener("click", function HeaderSideComponent_button_31_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r76); const ctx_r75 = i0.ɵɵnextContext(); return ctx_r75.alternateSignIn(); });
|
|
424
437
|
i0.ɵɵpipe(1, "translate");
|
|
425
438
|
i0.ɵɵelementStart(2, "mat-icon");
|
|
@@ -437,18 +450,18 @@ function HeaderSideComponent_button_31_Template(rf, ctx) { if (rf & 1) {
|
|
|
437
450
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(6, 6, "SHELL.SIGNINAS"));
|
|
438
451
|
} }
|
|
439
452
|
function HeaderSideComponent_div_44_Template(rf, ctx) { if (rf & 1) {
|
|
440
|
-
i0.ɵɵelement(0, "div",
|
|
453
|
+
i0.ɵɵelement(0, "div", 84);
|
|
441
454
|
} }
|
|
442
455
|
function HeaderSideComponent_app_submit_feedback_47_Template(rf, ctx) { if (rf & 1) {
|
|
443
456
|
const _r78 = i0.ɵɵgetCurrentView();
|
|
444
|
-
i0.ɵɵelementStart(0, "app-submit-feedback",
|
|
457
|
+
i0.ɵɵelementStart(0, "app-submit-feedback", 85);
|
|
445
458
|
i0.ɵɵlistener("closeDialog", function HeaderSideComponent_app_submit_feedback_47_Template_app_submit_feedback_closeDialog_0_listener() { i0.ɵɵrestoreView(_r78); const ctx_r77 = i0.ɵɵnextContext(); return ctx_r77.closeFeedBacklogDialog(); });
|
|
446
459
|
i0.ɵɵelementEnd();
|
|
447
460
|
} }
|
|
448
461
|
const _c6 = function () { return ["/applications/view-forms"]; };
|
|
449
462
|
function HeaderSideComponent_mat_card_52_Template(rf, ctx) { if (rf & 1) {
|
|
450
|
-
i0.ɵɵelementStart(0, "mat-card",
|
|
451
|
-
i0.ɵɵelementStart(1, "span",
|
|
463
|
+
i0.ɵɵelementStart(0, "mat-card", 86);
|
|
464
|
+
i0.ɵɵelementStart(1, "span", 87);
|
|
452
465
|
i0.ɵɵtext(2, "Forms");
|
|
453
466
|
i0.ɵɵelementEnd();
|
|
454
467
|
i0.ɵɵelementEnd();
|
|
@@ -457,8 +470,8 @@ function HeaderSideComponent_mat_card_52_Template(rf, ctx) { if (rf & 1) {
|
|
|
457
470
|
} }
|
|
458
471
|
const _c7 = function () { return ["/applications/custom-applications"]; };
|
|
459
472
|
function HeaderSideComponent_mat_card_53_Template(rf, ctx) { if (rf & 1) {
|
|
460
|
-
i0.ɵɵelementStart(0, "mat-card",
|
|
461
|
-
i0.ɵɵelementStart(1, "span",
|
|
473
|
+
i0.ɵɵelementStart(0, "mat-card", 86);
|
|
474
|
+
i0.ɵɵelementStart(1, "span", 87);
|
|
462
475
|
i0.ɵɵtext(2, "Custom applications");
|
|
463
476
|
i0.ɵɵelementEnd();
|
|
464
477
|
i0.ɵɵelementEnd();
|
|
@@ -467,8 +480,8 @@ function HeaderSideComponent_mat_card_53_Template(rf, ctx) { if (rf & 1) {
|
|
|
467
480
|
} }
|
|
468
481
|
const _c8 = function () { return ["/rolemanagement/rolemanagement"]; };
|
|
469
482
|
function HeaderSideComponent_mat_card_54_Template(rf, ctx) { if (rf & 1) {
|
|
470
|
-
i0.ɵɵelementStart(0, "mat-card",
|
|
471
|
-
i0.ɵɵelementStart(1, "span",
|
|
483
|
+
i0.ɵɵelementStart(0, "mat-card", 86);
|
|
484
|
+
i0.ɵɵelementStart(1, "span", 87);
|
|
472
485
|
i0.ɵɵtext(2, "Role configuration");
|
|
473
486
|
i0.ɵɵelementEnd();
|
|
474
487
|
i0.ɵɵelementEnd();
|
|
@@ -477,8 +490,8 @@ function HeaderSideComponent_mat_card_54_Template(rf, ctx) { if (rf & 1) {
|
|
|
477
490
|
} }
|
|
478
491
|
const _c9 = function () { return ["/rolemanagement/entityrolemanagement"]; };
|
|
479
492
|
function HeaderSideComponent_mat_card_55_Template(rf, ctx) { if (rf & 1) {
|
|
480
|
-
i0.ɵɵelementStart(0, "mat-card",
|
|
481
|
-
i0.ɵɵelementStart(1, "span",
|
|
493
|
+
i0.ɵɵelementStart(0, "mat-card", 86);
|
|
494
|
+
i0.ɵɵelementStart(1, "span", 87);
|
|
482
495
|
i0.ɵɵtext(2);
|
|
483
496
|
i0.ɵɵpipe(3, "softLabelsPipe");
|
|
484
497
|
i0.ɵɵelementEnd();
|
|
@@ -498,12 +511,12 @@ function HeaderSideComponent_div_56_ng_template_4_Template(rf, ctx) { if (rf & 1
|
|
|
498
511
|
i0.ɵɵtext(0, " Welcome back \u00A0");
|
|
499
512
|
} }
|
|
500
513
|
function HeaderSideComponent_div_56_Template(rf, ctx) { if (rf & 1) {
|
|
501
|
-
i0.ɵɵelementStart(0, "div",
|
|
502
|
-
i0.ɵɵtemplate(1, HeaderSideComponent_div_56_span_1_Template, 2, 0, "span",
|
|
514
|
+
i0.ɵɵelementStart(0, "div", 88);
|
|
515
|
+
i0.ɵɵtemplate(1, HeaderSideComponent_div_56_span_1_Template, 2, 0, "span", 89);
|
|
503
516
|
i0.ɵɵelementStart(2, "span");
|
|
504
517
|
i0.ɵɵtext(3);
|
|
505
518
|
i0.ɵɵelementEnd();
|
|
506
|
-
i0.ɵɵtemplate(4, HeaderSideComponent_div_56_ng_template_4_Template, 1, 0, "ng-template", null,
|
|
519
|
+
i0.ɵɵtemplate(4, HeaderSideComponent_div_56_ng_template_4_Template, 1, 0, "ng-template", null, 90, i0.ɵɵtemplateRefExtractor);
|
|
507
520
|
i0.ɵɵelementEnd();
|
|
508
521
|
} if (rf & 2) {
|
|
509
522
|
const _r80 = i0.ɵɵreference(5);
|
|
@@ -516,9 +529,9 @@ function HeaderSideComponent_div_56_Template(rf, ctx) { if (rf & 1) {
|
|
|
516
529
|
} }
|
|
517
530
|
function HeaderSideComponent_ngx_dropzone_preview_74_Template(rf, ctx) { if (rf & 1) {
|
|
518
531
|
const _r84 = i0.ɵɵgetCurrentView();
|
|
519
|
-
i0.ɵɵelementStart(0, "ngx-dropzone-preview",
|
|
532
|
+
i0.ɵɵelementStart(0, "ngx-dropzone-preview", 91);
|
|
520
533
|
i0.ɵɵlistener("removed", function HeaderSideComponent_ngx_dropzone_preview_74_Template_ngx_dropzone_preview_removed_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r84); const f_r82 = restoredCtx.$implicit; const ctx_r83 = i0.ɵɵnextContext(); return ctx_r83.onRemove(f_r82); });
|
|
521
|
-
i0.ɵɵelementStart(1, "ngx-dropzone-label",
|
|
534
|
+
i0.ɵɵelementStart(1, "ngx-dropzone-label", 92);
|
|
522
535
|
i0.ɵɵtext(2);
|
|
523
536
|
i0.ɵɵelementEnd();
|
|
524
537
|
i0.ɵɵelementEnd();
|
|
@@ -532,7 +545,7 @@ function HeaderSideComponent_ngx_dropzone_preview_74_Template(rf, ctx) { if (rf
|
|
|
532
545
|
i0.ɵɵtextInterpolate1(" ", ctx_r26.setLabelNameForDropzone(f_r82.name), " ");
|
|
533
546
|
} }
|
|
534
547
|
function HeaderSideComponent_mat_progress_bar_78_Template(rf, ctx) { if (rf & 1) {
|
|
535
|
-
i0.ɵɵelement(0, "mat-progress-bar",
|
|
548
|
+
i0.ɵɵelement(0, "mat-progress-bar", 93);
|
|
536
549
|
} if (rf & 2) {
|
|
537
550
|
const ctx_r27 = i0.ɵɵnextContext();
|
|
538
551
|
i0.ɵɵproperty("value", ctx_r27.progressValue);
|
|
@@ -548,16 +561,16 @@ function HeaderSideComponent_div_79_Template(rf, ctx) { if (rf & 1) {
|
|
|
548
561
|
} }
|
|
549
562
|
function HeaderSideComponent_div_80_Template(rf, ctx) { if (rf & 1) {
|
|
550
563
|
const _r86 = i0.ɵɵgetCurrentView();
|
|
551
|
-
i0.ɵɵelementStart(0, "div",
|
|
552
|
-
i0.ɵɵelementStart(1, "button",
|
|
564
|
+
i0.ɵɵelementStart(0, "div", 94);
|
|
565
|
+
i0.ɵɵelementStart(1, "button", 95);
|
|
553
566
|
i0.ɵɵlistener("click", function HeaderSideComponent_div_80_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r86); const ctx_r85 = i0.ɵɵnextContext(); return ctx_r85.saveFiles(); });
|
|
554
|
-
i0.ɵɵelement(2, "fa-icon",
|
|
567
|
+
i0.ɵɵelement(2, "fa-icon", 96);
|
|
555
568
|
i0.ɵɵtext(3);
|
|
556
569
|
i0.ɵɵpipe(4, "translate");
|
|
557
570
|
i0.ɵɵelementEnd();
|
|
558
|
-
i0.ɵɵelementStart(5, "button",
|
|
571
|
+
i0.ɵɵelementStart(5, "button", 97);
|
|
559
572
|
i0.ɵɵlistener("click", function HeaderSideComponent_div_80_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r86); const ctx_r87 = i0.ɵɵnextContext(); return ctx_r87.removeAllFiles(); });
|
|
560
|
-
i0.ɵɵelement(6, "fa-icon",
|
|
573
|
+
i0.ɵɵelement(6, "fa-icon", 98);
|
|
561
574
|
i0.ɵɵtext(7);
|
|
562
575
|
i0.ɵɵpipe(8, "translate");
|
|
563
576
|
i0.ɵɵelementEnd();
|
|
@@ -569,15 +582,15 @@ function HeaderSideComponent_div_80_Template(rf, ctx) { if (rf & 1) {
|
|
|
569
582
|
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(8, 4, "DOCUMENTMANAGEMENT.CLEARFILES"), " ");
|
|
570
583
|
} }
|
|
571
584
|
function HeaderSideComponent_div_81_i_5_Template(rf, ctx) { if (rf & 1) {
|
|
572
|
-
i0.ɵɵelement(0, "i",
|
|
585
|
+
i0.ɵɵelement(0, "i", 102);
|
|
573
586
|
} }
|
|
574
587
|
function HeaderSideComponent_div_81_Template(rf, ctx) { if (rf & 1) {
|
|
575
|
-
i0.ɵɵelementStart(0, "div",
|
|
576
|
-
i0.ɵɵelementStart(1, "button",
|
|
577
|
-
i0.ɵɵelement(2, "fa-icon",
|
|
588
|
+
i0.ɵɵelementStart(0, "div", 94);
|
|
589
|
+
i0.ɵɵelementStart(1, "button", 99);
|
|
590
|
+
i0.ɵɵelement(2, "fa-icon", 100);
|
|
578
591
|
i0.ɵɵtext(3);
|
|
579
592
|
i0.ɵɵpipe(4, "translate");
|
|
580
|
-
i0.ɵɵtemplate(5, HeaderSideComponent_div_81_i_5_Template, 1, 0, "i",
|
|
593
|
+
i0.ɵɵtemplate(5, HeaderSideComponent_div_81_i_5_Template, 1, 0, "i", 101);
|
|
581
594
|
i0.ɵɵelementEnd();
|
|
582
595
|
i0.ɵɵelementEnd();
|
|
583
596
|
} if (rf & 2) {
|
|
@@ -591,7 +604,7 @@ function HeaderSideComponent_div_81_Template(rf, ctx) { if (rf & 1) {
|
|
|
591
604
|
} }
|
|
592
605
|
const _c10 = function (a0) { return [a0]; };
|
|
593
606
|
function HeaderSideComponent_ng_template_82_Template(rf, ctx) { if (rf & 1) {
|
|
594
|
-
i0.ɵɵelement(0, "announcement-dialog",
|
|
607
|
+
i0.ɵɵelement(0, "announcement-dialog", 103);
|
|
595
608
|
} if (rf & 2) {
|
|
596
609
|
const data_r89 = ctx.$implicit;
|
|
597
610
|
i0.ɵɵproperty("data", i0.ɵɵpureFunction1(1, _c10, data_r89));
|
|
@@ -667,6 +680,7 @@ export class HeaderSideComponent extends CustomAppBaseComponent {
|
|
|
667
680
|
this.searchText = null;
|
|
668
681
|
this.logInUserId = this.cookieService.get("CurrentUserId");
|
|
669
682
|
this.newNotificationsCount = 0;
|
|
683
|
+
this.avatarColors = ["#0000FF", "#A52A2A", "#D2691E", "#8B008B", "#8B0000", "#008000"];
|
|
670
684
|
// this.signalr.initializeSignalRConnection();
|
|
671
685
|
this.signalr.notifications$.subscribe((data) => this.newNotificationsCount = data && data.length ? data.length : 0);
|
|
672
686
|
this.pushNotifications.requestPermission();
|
|
@@ -1973,9 +1987,7 @@ export class HeaderSideComponent extends CustomAppBaseComponent {
|
|
|
1973
1987
|
this.searchText = null;
|
|
1974
1988
|
}
|
|
1975
1989
|
searchCompanies(companies, search) {
|
|
1976
|
-
console.log(companies, search);
|
|
1977
1990
|
if (search == null || search == '') {
|
|
1978
|
-
console.log("loop enters");
|
|
1979
1991
|
return companies;
|
|
1980
1992
|
}
|
|
1981
1993
|
else if (search != null) {
|
|
@@ -2047,6 +2059,29 @@ export class HeaderSideComponent extends CustomAppBaseComponent {
|
|
|
2047
2059
|
}
|
|
2048
2060
|
});
|
|
2049
2061
|
}
|
|
2062
|
+
getAvatarColor(name) {
|
|
2063
|
+
if (!name)
|
|
2064
|
+
return this.avatarColors[0];
|
|
2065
|
+
const index = this.stringToNumber(name) % this.avatarColors.length;
|
|
2066
|
+
return this.avatarColors[index];
|
|
2067
|
+
}
|
|
2068
|
+
// Convert name to numeric hash
|
|
2069
|
+
stringToNumber(str) {
|
|
2070
|
+
let hash = 0;
|
|
2071
|
+
for (let i = 0; i < str.length; i++) {
|
|
2072
|
+
hash = str.charCodeAt(i) + ((hash << 5) - hash);
|
|
2073
|
+
}
|
|
2074
|
+
return Math.abs(hash);
|
|
2075
|
+
}
|
|
2076
|
+
// Extract initials (e.g. “Time Champ” → “TC”)
|
|
2077
|
+
getInitials(name) {
|
|
2078
|
+
if (!name)
|
|
2079
|
+
return "";
|
|
2080
|
+
const words = name.trim().split(" ");
|
|
2081
|
+
if (words.length === 1)
|
|
2082
|
+
return words[0].substring(0, 2).toUpperCase();
|
|
2083
|
+
return (words[0][0] + words[1][0]).toUpperCase();
|
|
2084
|
+
}
|
|
2050
2085
|
}
|
|
2051
2086
|
HeaderSideComponent.ɵfac = function HeaderSideComponent_Factory(t) { return new (t || HeaderSideComponent)(i0.ɵɵdirectiveInject(i1.PushNotificationsService), i0.ɵɵdirectiveInject(i2.ThemeService), i0.ɵɵdirectiveInject(i3.NgxUiLoaderService), i0.ɵɵdirectiveInject(i4.LayoutService), i0.ɵɵdirectiveInject(i5.TranslateService), i0.ɵɵdirectiveInject(i6.Router), i0.ɵɵdirectiveInject(i7.CookieService), i0.ɵɵdirectiveInject(i8.MatDialog), i0.ɵɵdirectiveInject(i9.CommonService), i0.ɵɵdirectiveInject(i10.Store), i0.ɵɵdirectiveInject(i11.PubNubAngular), i0.ɵɵdirectiveInject(i12.AuthenticationService), i0.ɵɵdirectiveInject(i13.Actions), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i14.ToastrService), i0.ɵɵdirectiveInject(i15.StoreManagementService), i0.ɵɵdirectiveInject(i16.ShellModulesService), i0.ɵɵdirectiveInject(i17.ChatService), i0.ɵɵdirectiveInject(i18.SignalrService), i0.ɵɵdirectiveInject(WINDOW)); };
|
|
2052
2087
|
HeaderSideComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: HeaderSideComponent, selectors: [["app-header-side"]], viewQuery: function HeaderSideComponent_Query(rf, ctx) { if (rf & 1) {
|
|
@@ -2062,7 +2097,7 @@ HeaderSideComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: HeaderS
|
|
|
2062
2097
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.documentPopover = _t.first);
|
|
2063
2098
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.openAnnoucementDialogComponent = _t.first);
|
|
2064
2099
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.fileUploadDropzonePopup = _t);
|
|
2065
|
-
} }, inputs: { notificPanel: "notificPanel" }, outputs: { opened: "opened" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 84, vars: 46, consts: [[1, "topbar", "remove-padding"], ["fxFlex", ""], [3, "reload", "isOpened", "openNewDashboard"], ["fxFlex", "", "fxLayout", "row", "fxHide.xs", "", "fxLayoutAlign", "center", 2, "vertical-align", "center"], ["fxFlex", "", "fxLayout", "row", "fxLayoutAlign", "end center"], ["class", "filter-data custom-box language-section", "style", "width:150px;", 3, "click", 4, "ngIf"], [4, "ngIf"], ["mat-icon-button", "", "matTooltipClass", "tooltipClass-mat", "class", "topbar-button-right theme-navbar-icon-color", 3, "matTooltip", "overflow", "matMenuTriggerFor", "click", 4, "ngIf"], ["notification", "matMenu"], ["mat-icon-button", "", "class", "topbar-button-right img-button", 3, "matMenuTriggerFor", "ngClass", "click", 4, "ngIf"], ["hasBackdrop", "", "scrollStrategy", "reposition", "verticalAlign", "below", "horizontalAlign", "before", 3, "autoFocus", "restoreFocus", "interactiveClose"], ["feedTimeSheet", ""], [3, "isFeedTimeSheet", "closeFeedTimeSheetPopup"], ["accountMenu", "matMenu"], ["mat-menu-item", "", 3, "click"], ["class", "activity-recorder recording-style", 4, "ngIf"], ["mat-menu-item", "", "matTooltipClass", "tooltipClass-mat", 3, "matTooltip", "overflow", "click", 4, "ngIf"], ["mat-menu-item", "", "matTooltipClass", "tooltipClass-mat", 3, "matTooltip", "satPopoverAnchorFor", "click", 4, "ngIf"], ["mat-menu-item", "", 3, "click", 4, "ngIf"], ["mat-menu-item", "", "matTooltipClass", "tooltipClass-mat", 3, "overflow", "matTooltip", "click", 4, "ngIf"], [1, "feedback-icon", 3, "satPopoverAnchorFor"], ["class", "k-i-loading", 4, "ngIf"], ["verticalAlign", "below", "hasBackdrop", "", "backdropClass", "backdrop-color", "horizontalAlign", "end", 3, "interactiveClose"], ["feedBackPopover", ""], [3, "closeDialog", 4, "ngIf"], [1, "dialog_window", 3, "click"], ["menu2", "matMenu"], ["id", "style-1", 1, "p-0", "m-0", "listof_assets", "store-list-dropdown"], [1, "compact-list"], ["class", "p-0 asset-card", 3, "routerLink", 4, "ngIf"], ["class", "welcome-note", 4, "ngIf"], ["hasBackdrop", "", "backdropClass", "testrun-popover", "scrollStrategy", "reposition", 3, "interactiveClose"], ["fileUploadDropzonePopover", ""], [1, "p-0", "mr-0", "custom-hrm-dropzone"], ["fxLayout", "row", 1, "card-title-text", "mat-bg-primary", "p-05"], ["fxFlex", "", 1, "text-center"], ["fxFlex", "20px", "fxLayoutAlign", "end center"], [1, "inline_edit_close_btn", "btn", 3, "click"], ["icon", "times"], [1, "m-1"], ["ngx-dropzone", "", "accept", ".json", 1, "custom-dropzone", "dropzone-height", 3, "change"], ["class", "custom-dropzone-preview", 3, "removable", "removed", 4, "ngFor", "ngForOf"], [1, "m-05", "text-muted", 2, "text-align", "center"], ["color", "primary", "mode", "determinate", 3, "value", 4, "ngIf"], ["class", "mt-05", "fxLayoutAlign", "center end", 4, "ngIf"], ["openAnnoucementDialogComponent", ""], [1, "filter-data", "custom-box", "language-section", 2, "width", "150px", 3, "click"], ["placeholder", "", "name", "selectedCompany", 3, "ngModel", "ngModelChange", "selectionChange"], ["fxLayout", "row", "fxLayoutGap", "15px", 4, "ngIf"], ["fxFlex", "", "fxLayoutAlign", "start center", 1, "search_goalinput", "ml-1", 2, "position", "sticky", "top", "0", "z-index", "1", "background-color", "white"], ["fxLayoutAlign", "start center"], [1, "full-width"], ["matInput", "", "autocomplete", "off", 1, "search_goal", 3, "placeholder", "ngModel", "ngModelChange"], ["fxLayoutAlign", "end center", 1, "close_icon", "masterdata-search-close"], ["class", "icon-button mr-05 mt-05", "aria-hidden", "false", "style", "cursor:pointer", 3, "click", 4, "ngIf"], ["matTooltipClass", "tooltipClass-mat", "matTooltipShowDelay", "400", 3, "value", "matTooltip", 4, "ngFor", "ngForOf", "ngForTrackBy"], ["fxLayout", "row", "fxLayoutGap", "15px"], [3, "ngStyle"], ["style", "width: 20px;height: 20px;border-radius: 50px;", 3, "src", 4, "ngIf"], ["
|
|
2100
|
+
} }, inputs: { notificPanel: "notificPanel" }, outputs: { opened: "opened" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 84, vars: 46, consts: [[1, "topbar", "remove-padding"], ["fxFlex", ""], [3, "reload", "isOpened", "openNewDashboard"], ["fxFlex", "", "fxLayout", "row", "fxHide.xs", "", "fxLayoutAlign", "center", 2, "vertical-align", "center"], ["fxFlex", "", "fxLayout", "row", "fxLayoutAlign", "end center"], ["class", "filter-data custom-box language-section", "style", "width:150px;", 3, "click", 4, "ngIf"], [4, "ngIf"], ["mat-icon-button", "", "matTooltipClass", "tooltipClass-mat", "class", "topbar-button-right theme-navbar-icon-color", 3, "matTooltip", "overflow", "matMenuTriggerFor", "click", 4, "ngIf"], ["notification", "matMenu"], ["mat-icon-button", "", "class", "topbar-button-right img-button", 3, "matMenuTriggerFor", "ngClass", "click", 4, "ngIf"], ["hasBackdrop", "", "scrollStrategy", "reposition", "verticalAlign", "below", "horizontalAlign", "before", 3, "autoFocus", "restoreFocus", "interactiveClose"], ["feedTimeSheet", ""], [3, "isFeedTimeSheet", "closeFeedTimeSheetPopup"], ["accountMenu", "matMenu"], ["mat-menu-item", "", 3, "click"], ["class", "activity-recorder recording-style", 4, "ngIf"], ["mat-menu-item", "", "matTooltipClass", "tooltipClass-mat", 3, "matTooltip", "overflow", "click", 4, "ngIf"], ["mat-menu-item", "", "matTooltipClass", "tooltipClass-mat", 3, "matTooltip", "satPopoverAnchorFor", "click", 4, "ngIf"], ["mat-menu-item", "", 3, "click", 4, "ngIf"], ["mat-menu-item", "", "matTooltipClass", "tooltipClass-mat", 3, "overflow", "matTooltip", "click", 4, "ngIf"], [1, "feedback-icon", 3, "satPopoverAnchorFor"], ["class", "k-i-loading", 4, "ngIf"], ["verticalAlign", "below", "hasBackdrop", "", "backdropClass", "backdrop-color", "horizontalAlign", "end", 3, "interactiveClose"], ["feedBackPopover", ""], [3, "closeDialog", 4, "ngIf"], [1, "dialog_window", 3, "click"], ["menu2", "matMenu"], ["id", "style-1", 1, "p-0", "m-0", "listof_assets", "store-list-dropdown"], [1, "compact-list"], ["class", "p-0 asset-card", 3, "routerLink", 4, "ngIf"], ["class", "welcome-note", 4, "ngIf"], ["hasBackdrop", "", "backdropClass", "testrun-popover", "scrollStrategy", "reposition", 3, "interactiveClose"], ["fileUploadDropzonePopover", ""], [1, "p-0", "mr-0", "custom-hrm-dropzone"], ["fxLayout", "row", 1, "card-title-text", "mat-bg-primary", "p-05"], ["fxFlex", "", 1, "text-center"], ["fxFlex", "20px", "fxLayoutAlign", "end center"], [1, "inline_edit_close_btn", "btn", 3, "click"], ["icon", "times"], [1, "m-1"], ["ngx-dropzone", "", "accept", ".json", 1, "custom-dropzone", "dropzone-height", 3, "change"], ["class", "custom-dropzone-preview", 3, "removable", "removed", 4, "ngFor", "ngForOf"], [1, "m-05", "text-muted", 2, "text-align", "center"], ["color", "primary", "mode", "determinate", 3, "value", 4, "ngIf"], ["class", "mt-05", "fxLayoutAlign", "center end", 4, "ngIf"], ["openAnnoucementDialogComponent", ""], [1, "filter-data", "custom-box", "language-section", 2, "width", "150px", 3, "click"], ["placeholder", "", "name", "selectedCompany", 3, "ngModel", "ngModelChange", "selectionChange"], ["fxLayout", "row", "fxLayoutGap", "15px", 4, "ngIf"], ["fxFlex", "", "fxLayoutAlign", "start center", 1, "search_goalinput", "ml-1", 2, "position", "sticky", "top", "0", "z-index", "1", "background-color", "white"], ["fxLayoutAlign", "start center"], [1, "full-width"], ["matInput", "", "autocomplete", "off", 1, "search_goal", 3, "placeholder", "ngModel", "ngModelChange"], ["fxLayoutAlign", "end center", 1, "close_icon", "masterdata-search-close"], ["class", "icon-button mr-05 mt-05", "aria-hidden", "false", "style", "cursor:pointer", 3, "click", 4, "ngIf"], ["matTooltipClass", "tooltipClass-mat", "matTooltipShowDelay", "400", 3, "value", "matTooltip", 4, "ngFor", "ngForOf", "ngForTrackBy"], ["fxLayout", "row", "fxLayoutGap", "15px"], [3, "ngStyle"], ["style", "width: 20px;height: 20px;border-radius: 50px;", 3, "src", 4, "ngIf"], ["class", "avatar", "matTooltipClass", "tooltipClass-mat", 3, "matTooltip", "backgroundColor", 4, "ngIf"], ["matTooltipClass", "tooltipClass-mat", "matTooltipShowDelay", "400", "fxFlex", "calc(100% - 40px)", 1, "language-display", 2, "color", "black !important", 3, "matTooltip"], [2, "width", "20px", "height", "20px", "border-radius", "50px", 3, "src"], ["matTooltipClass", "tooltipClass-mat", 1, "avatar", 3, "matTooltip"], ["aria-hidden", "false", 1, "icon-button", "mr-05", "mt-05", 2, "cursor", "pointer", 3, "click"], ["matTooltipClass", "tooltipClass-mat", "matTooltipShowDelay", "400", 3, "value", "matTooltip"], ["fxLayout", "row", 1, "cursor-pointer"], ["style", "width: 20px;height: 20px;border-radius: 50px;margin-top: 10px;", 3, "src", 4, "ngIf"], [1, "ml-05"], [2, "width", "20px", "height", "20px", "border-radius", "50px", "margin-top", "10px", 3, "src"], ["matTooltipClass", "tooltipClass-mat", "mat-icon-button", "", 1, "topbar-button-right", "theme-navbar-icon-color", 3, "matTooltip", "ngClass", "click"], ["matTooltipClass", "tooltipClass-mat", "mat-icon-button", "", 1, "topbar-button-right", "theme-navbar-icon-color", 3, "matTooltip", "click"], ["mat-icon-button", "", "id", "feedTimeSheetComponent", "matTooltipClass", "tooltipClass-mat", 1, "topbar-button-right", "theme-navbar-icon-color", 3, "matTooltip", "satPopoverAnchorFor", "click"], ["mat-icon-button", "", "matTooltipClass", "tooltipClass-mat", 1, "topbar-button-right", "theme-navbar-icon-color", 3, "matTooltip", "matMenuTriggerFor", "click"], ["class", "notification-number mat-bg-warn", 4, "ngIf"], [1, "notification-number", "mat-bg-warn"], ["mat-icon-button", "", 1, "topbar-button-right", "img-button", 3, "matMenuTriggerFor", "ngClass", "click"], ["class", "icon-highlight-setter", "alt", "profile image", 3, "src", 4, "ngIf"], ["style", "margin-left: 4px !important;", 4, "ngIf"], ["alt", "profile image", 1, "icon-highlight-setter", 3, "src"], [2, "margin-left", "4px !important"], [1, "activity-recorder", "recording-style"], ["mat-menu-item", "", "matTooltipClass", "tooltipClass-mat", 3, "matTooltip", "click"], ["mat-menu-item", "", "matTooltipClass", "tooltipClass-mat", 3, "matTooltip", "satPopoverAnchorFor", "click"], ["fileUploadDropzonePopup", "satPopoverAnchor"], [1, "k-i-loading"], [3, "closeDialog"], [1, "p-0", "asset-card", 3, "routerLink"], [1, "hide-content-overflow", "userStory-name-control", "store-dropdown-padding"], [1, "welcome-note"], [4, "ngIf", "ngIfElse"], ["elseSpan", ""], [1, "custom-dropzone-preview", 3, "removable", "removed"], [1, "custom-dropzone-label"], ["color", "primary", "mode", "determinate", 3, "value"], ["fxLayoutAlign", "center end", 1, "mt-05"], ["mat-button", "", "mat-raised-button", "", "color", "primary", 3, "click"], ["icon", "save", 1, "mr-05"], ["mat-button", "", "mat-raised-button", "", 1, "ml-1", 3, "click"], ["icon", "times", 1, "mr-05"], ["mat-button", "", "mat-raised-button", "", 1, "ml-1", 3, "disabled"], ["icon", "upload", 1, "mr-05"], ["class", "fa fa-spin fa-spinner", 4, "ngIf"], [1, "fa", "fa-spin", "fa-spinner"], [3, "data"]], template: function HeaderSideComponent_Template(rf, ctx) { if (rf & 1) {
|
|
2066
2101
|
const _r90 = i0.ɵɵgetCurrentView();
|
|
2067
2102
|
i0.ɵɵelementStart(0, "mat-toolbar", 0);
|
|
2068
2103
|
i0.ɵɵelementStart(1, "div", 1);
|
|
@@ -2257,7 +2292,7 @@ HeaderSideComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: HeaderS
|
|
|
2257
2292
|
i0.ɵɵproperty("ngIf", ctx.filesPresent);
|
|
2258
2293
|
i0.ɵɵadvance(1);
|
|
2259
2294
|
i0.ɵɵproperty("ngIf", ctx.importingInProgress);
|
|
2260
|
-
} }, directives: [i19.MatToolbar, i20.DefaultFlexDirective, i21.MenuComponent, i20.DefaultLayoutDirective, i22.DefaultShowHideDirective, i20.DefaultLayoutAlignDirective, i23.NgIf, i24.MatMenu, i25.NotificationsComponent, i26.SatPopover, i27.FeedTimeComponent, i24.MatMenuItem, i28.MatIcon, i29.MatDivider, i26.SatPopoverAnchor, i30.MatCardContent, i31.MatList, i30.MatCard, i30.MatCardTitle, i32.FaIconComponent, i33.NgxDropzoneComponent, i33.ɵb, i23.NgForOf, i34.MatSelect, i35.NgControlStatus, i35.NgModel, i34.MatSelectTrigger, i36.MatFormField, i37.MatInput, i35.DefaultValueAccessor, i20.DefaultLayoutGapDirective, i23.NgStyle, i22.DefaultStyleDirective, i38.MatTooltip, i39.
|
|
2295
|
+
} }, directives: [i19.MatToolbar, i20.DefaultFlexDirective, i21.MenuComponent, i20.DefaultLayoutDirective, i22.DefaultShowHideDirective, i20.DefaultLayoutAlignDirective, i23.NgIf, i24.MatMenu, i25.NotificationsComponent, i26.SatPopover, i27.FeedTimeComponent, i24.MatMenuItem, i28.MatIcon, i29.MatDivider, i26.SatPopoverAnchor, i30.MatCardContent, i31.MatList, i30.MatCard, i30.MatCardTitle, i32.FaIconComponent, i33.NgxDropzoneComponent, i33.ɵb, i23.NgForOf, i34.MatSelect, i35.NgControlStatus, i35.NgModel, i34.MatSelectTrigger, i36.MatFormField, i37.MatInput, i35.DefaultValueAccessor, i20.DefaultLayoutGapDirective, i23.NgStyle, i22.DefaultStyleDirective, i38.MatTooltip, i39.MatOption, i40.MatButton, i23.NgClass, i22.DefaultClassDirective, i24.MatMenuTrigger, i41.FeedBackSubmissionComponent, i6.RouterLink, i33.NgxDropzonePreviewComponent, i42.MatProgressBar, i43.AnnoucementDialogComponent], pipes: [i5.TranslatePipe, i44.SoftLabelPipe], styles: [".file-or-folder-icon[_ngcontent-%COMP%] {\n width: 50px;\n height: 50px;\n font-size: 50px;\n }\n\n .file-or-folder-name-align[_ngcontent-%COMP%] {\n overflow: hidden;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n text-align: center;\n word-break: break-word;\n }\n\n .dropzone-height[_ngcontent-%COMP%] {\n height: 130px;\n }\n\n .custom-dropzone-preview[_ngcontent-%COMP%] {\n height: 100px !important;\n min-height: 100px !important;\n padding: 0px !important;\n }"], data: { animation: [
|
|
2261
2296
|
trigger('fade', [
|
|
2262
2297
|
transition('void => *', [
|
|
2263
2298
|
style({ opacity: 0 }),
|
|
@@ -2304,4 +2339,4 @@ HeaderSideComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: HeaderS
|
|
|
2304
2339
|
type: ViewChild,
|
|
2305
2340
|
args: ["openAnnoucementDialogComponent"]
|
|
2306
2341
|
}] }); })();
|
|
2307
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLXNpZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc2hlbGwtbW9kdWxlLWNvbXBvbmVudHMvc2hlbGwtY29tcG9uZW50cy9zcmMvbGliL3NoZWxsLWNvbXBvbmVudHMvY29tcG9uZW50cy9oZWFkZXItc2lkZS9oZWFkZXItc2lkZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL2hlYWRlci1zaWRlL2hlYWRlci1zaWRlLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQywyQkFBMkIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQy9HLE9BQU8sRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssRUFFTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFlBQVksRUFDWixZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixzQkFBc0IsRUFDdEIsMkJBQTJCLEVBQzNCLGtCQUFrQixFQUNsQixrQ0FBa0MsRUFDbEMsc0JBQXNCLEdBQ3ZCLE1BQU0sa0NBQWtDLENBQUE7QUFJekMsT0FBTyxFQUFFLE1BQU0sRUFBUyxNQUFNLGFBQWEsQ0FBQztBQUk1QyxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLHlCQUF5QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDaEgsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLGlDQUFpQyxFQUFFLHVCQUF1QixFQUFFLHdCQUF3QixFQUFFLGtD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RTt3QkFDZCxVQUFVLENBQUMsV0FBVyxFQUFFOzRCQUN0QixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7NEJBQ3JCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7NEJBQ3BDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7eUJBQ3JDLENBQUM7cUJBQ0gsQ0FBQztpQkFDSDthQUNGO3NsQkFxSW1DLE1BQU07c0JBQXJDLE1BQU07dUJBQUMsTUFBTTt3QkFsSVksb0JBQW9CO2tCQUEvQyxTQUFTO21CQUFDLGVBQWU7WUFDSSxlQUFlO2tCQUE1QyxTQUFTO21CQUFDLGlCQUFpQjtZQUNhLHVCQUF1QjtrQkFBL0QsWUFBWTttQkFBQyx5QkFBeUI7WUFDVCxlQUFlO2tCQUE1QyxTQUFTO21CQUFDLGlCQUFpQjtZQUVuQixZQUFZO2tCQUFwQixLQUFLO1lBQ0ksTUFBTTtrQkFBZixNQUFNO1lBQzhDLDhCQUE4QjtrQkFBbEYsU0FBUzttQkFBQyxnQ0FBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0ZldGNoVGltZVNoZWV0QnV0dG9uRGV0YWlscywgUm9sZXNGZXRjaFRyaWdnZXJlZCB9IGZyb20gJy4vLi4vLi4vc3RvcmUvYWN0aW9ucy9hdXRoZW50aWNhdGlvbi5hY3Rpb25zJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBWaWV3Q2hpbGRyZW4sIENoYW5nZURldGVjdG9yUmVmLCBUZW1wbGF0ZVJlZlxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7XHJcbiAgUmVjZWl2ZU1lc3NhZ2VUcmlnZ2VyZWQsXHJcbiAgUHJlc2VuY2VFdmVudFRyaWdnZXJlZCxcclxuICBJbml0YWxTdGF0ZU9mVXNlcnNUcmlnZ2VyZWQsXHJcbiAgTWVzc2FnZUFjdGlvblR5cGVzLFxyXG4gIFJlY2VpdmVDaGFubmVsVXBkYXRlTW9kZWxUcmlnZ2VyZWQsXHJcbiAgUmVjZWl2ZVNpZ25hbFRyaWdnZXJlZCxcclxufSBmcm9tIFwiLi4vLi4vc3RvcmUvYWN0aW9ucy9jaGF0LmFjdGlvbnNcIlxyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgU2F0UG9wb3ZlciB9IGZyb20gXCJAbmNzdGF0ZS9zYXQtcG9wb3ZlclwiO1xyXG5pbXBvcnQgeyBzZWxlY3QsIFN0b3JlIH0gZnJvbSBcIkBuZ3J4L3N0b3JlXCI7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSBcIm5neC1jb29raWUtc2VydmljZVwiO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IHRha2VVbnRpbCwgdGFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IEdldFVzZXJTdG9yZUlkVHJpZ2dlcmVkLCBBdXRoZW50aWNhdGlvbkFjdGlvblR5cGVzIH0gZnJvbSBcIi4uLy4uL3N0b3JlL2FjdGlvbnMvYXV0aGVudGljYXRpb24uYWN0aW9uc1wiO1xyXG5pbXBvcnQgeyBDbGVhckFsbFVucmVhZE5vdGlmaWNhdGlvbnNUcmlnZ2VyZWQsIENsZWFyVW5yZWFkTm90aWZpY2F0aW9uc1RyaWdnZXJlZCwgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQsIE5vdGlmaWNhdGlvbnNBY3Rpb25UeXBlcywgVXBzZXJ0VW5yZWFkTm90aWZpY2F0aW9uc1RyaWdnZXJlZCB9IGZyb20gXCIuLi8uLi9zdG9yZS9hY3Rpb25zL25vdGlmaWNhdGlvbnMuYWN0aW9uc1wiO1xyXG5pbXBvcnQgeyBTdGF0ZSB9IGZyb20gXCIuLi8uLi9zdG9yZS9yZWR1Y2Vycy9pbmRleFwiO1xyXG5pbXBvcnQgKiBhcyBzaGFyZWRNb2R1bGVSZWR1Y2VycyBmcm9tIFwiLi4vLi4vc3RvcmUvcmVkdWNlcnMvaW5kZXhcIjtcclxuaW1wb3J0ICcuLi8uLi8uLi9nbG9iYWxkZXBlbmRlbmNpZXMvaGVscGVycy9mb250YXdlc29tZS1pY29ucyc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCB9IGZyb20gXCIuLi9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvY29tbW9uLXVzZWQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBBY3Rpb25zLCBvZlR5cGUgfSBmcm9tIFwiQG5ncngvZWZmZWN0c1wiO1xyXG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFsZGVwZW5kZW5jaWVzL2NvbnN0YW50cy9sb2NhbHN0b3JhZ2UtcHJvcGVydGllcyc7XHJcbmltcG9ydCB7IENoYW5uZWxOYW1lcyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jaGFubmVsLW5hbWVzJztcclxuaW1wb3J0IHsgV0lORE9XIH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFsZGVwZW5kZW5jaWVzL2hlbHBlcnMvd2luZG93LmhlbHBlcic7XHJcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUaGVtZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90aGVtZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xheW91dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGltZXNoZWV0RGlzYWJsZW9yRW5hYmxlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RpbWVzaGVldGVuYWJsZWRpc2FibGUnO1xyXG5pbXBvcnQgeyBUaGVtZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RoZW1lcy5tb2RlbCc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbk91dHB1dE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL05vdGlmaWNhdGlvbnNPdXRQdXRNb2RlbCc7XHJcbmltcG9ydCB7IEN1c3RvbUFwcEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWxkZXBlbmRlbmNpZXMvY29tcG9uZW50cy9jb21wb25lbnRiYXNlJztcclxuaW1wb3J0IHsgU29mdExhYmVsQ29uZmlndXJhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NvZnRsYWJlbHMtbW9kZWwnO1xyXG5pbXBvcnQgeyBVc2VyTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvdXNlcic7XHJcbmltcG9ydCB7IENvbXBhbmllc0xpc3QgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29tcGFuaWVzbGlzdC5tb2RlbCc7XHJcbmltcG9ydCB7IFN0b3JlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvc3RvcmUtbW9kZWwnO1xyXG5pbXBvcnQgeyBBcHBOb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvQXBwTm90aWZpY2F0aW9uJztcclxuaW1wb3J0IHsgU3RvcmVTZWFyY2hNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zdG9yZS1zZWFyY2gtbW9kZWwnO1xyXG5pbXBvcnQgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFdvcmtJdGVtc0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2FsbC13b3JrLWl0ZW1zLWRpYWxvZy9hbGwtd29yay1pdGVtcy1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2hlbGxNb2R1bGVzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NoZWxsLm1vZHVsZXMuc2VydmljZSc7XHJcbmltcG9ydCAqIGFzIF8gZnJvbSBcInVuZGVyc2NvcmVcIjtcclxuaW1wb3J0IHsgRmVlZFRpbWVEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9mZWVkLXRpbWUvZmVlZC10aW1lLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25UeXBlSWRzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL25vdGlmaWNhdGlvbi10eXBlLWlkcyc7XHJcbmltcG9ydCB7IFVzZXJTdG9yeUFzc2lnbmVkTm90aWZpY2F0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1VzZXJTdG9yeUFzc2lnbmVkTm90aWZpY2F0aW9uJztcclxuaW1wb3J0IHsgQ2hhbm5lbFJvdXRlcyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9ub3RpZmljYXRpb24tcm91dGVzJztcclxuaW1wb3J0IHsgUm9sZVVwZGF0ZWROb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvUm9sZVVwZGF0ZWROb3RpZmljYXRpb24nO1xyXG5pbXBvcnQgeyBSZXBvcnRTdWJtaXR0ZWROb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvUmVwb3J0U3VibWl0dGVkTm90aWZpY2F0aW9uJztcclxuaW1wb3J0IHsgUmVwb3J0Q29uZmlnQXNzaWduZWROb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvUmVwb3J0Q29uZmlnQXNzaWduZWROb3RpZmljYXRpb24nO1xyXG5pbXBvcnQgeyBNdWx0aXBsZUNoYXJ0c1NjaGVkdWxpbmcgfSBmcm9tICcuLi8uLi9tb2RlbHMvbXVsdGlDaGFydHNTY2hlZHVsaW5nJztcclxuaW1wb3J0IHsgQXNzZXRBc3NpZ25lZE5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9Bc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uTW9kZWwnO1xyXG5pbXBvcnQgeyBOZXdQcm9qZWN0Q3JlYXRlZE5vdGlmaWNhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL05ld1Byb2plY3RDcmVhdGVkTm90aWZpY2F0aW9uTW9kZWwnO1xyXG5pbXBvcnQgeyBHb2FsQXBwcm92ZWROb3RpZmljYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nb2FsQXBwcm92ZWROb3RpZmljYXRpb25Nb2RlbCc7XHJcbmltcG9ydCB7IFVzZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3VzZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbk1vZGVsJztcclxuaW1wb3J0IHsgVXNlclN0b3J5Q29tbWVudE5vdGlmaWNhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3VzZXJTdG9yeUNvbW1lbnROb3RpZmljYXRpb25Nb2RlbCc7XHJcbmltcG9ydCB7IFNwcmludFN0YXJ0ZWROb3RpZmljYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zcHJpbnRTdGFydGVkTm90aWZpY2F0aW9uTW9kZWwnO1xyXG5pbXBvcnQgeyBTcHJpbnRSZXBsYW5TdGFydGVkTm90aWZpY2F0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvc3ByaW50UmVwbGFuUmVxdWVzdGVkTW9kZWwnO1xyXG5pbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBOZ3hVaUxvYWRlclNlcnZpY2UsIFNQSU5ORVIgfSBmcm9tICduZ3gtdWktbG9hZGVyJztcclxuaW1wb3J0IHsgTmV3UHJvamVjdEZlYXR1cmVDcmVhdGVkTm90aWZpY2F0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvTmV3UHJvamVjdEZlYXR1cmVOb3RpZmljYXRpb25Nb2RlbCc7XHJcbmltcG9ydCB7IFVzZXJTdG9yeUFyY2hpdmVOb3RpZmljYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9hcmNoaXZlVXNlclN0b3J5TW9kZWwnO1xyXG5pbXBvcnQgeyBVc2VyU3RvcnlQYXJrTm90aWZpY2F0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvcGFya1VzZXJTdG9yeUlucHV0TW9kZWwnO1xyXG5pbXBvcnQgeyBFeHBvcnRDb25maWd1cmF0aW9uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vZXhwb3J0LWltcG9ydC1jb25maWd1cmF0aW9uL2V4cG9ydC1jb25maWd1cmF0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZpbGVSZXN1bHRNb2RlbCwgU3RvcmVNYW5hZ2VtZW50U2VydmljZSB9IGZyb20gXCJAdGhldHJhZGVlbmdpbmVvcmcxL3Nub3ZhLWRvY3VtZW50LW1hbmFnZW1lbnRcIjtcclxuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xyXG5pbXBvcnQgUmVzdW1hYmxlIGZyb20gXCJyZXN1bWFibGVqc1wiO1xyXG5pbXBvcnQgeyBBcGlVcmxzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2FwaS11cmxzJztcclxuaW1wb3J0IHsgQXZhaWxhYmxlTGFuZ3MgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvYXZhaWxhYmxlLWxhbmd1YWdlcyc7XHJcbmltcG9ydCB7IEltcG9ydENvbmZpZ3VyYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9pbXBvcnQtY29uZmlndXJhdGlvbi1tb2RlbCc7XHJcbmltcG9ydCB7IENoYXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2hhdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHVzaE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnbmctcHVzaC1pdnknO1xyXG5pbXBvcnQgeyBNZXNzYWdlVHlwaW5nRGV0YWlscyB9IGZyb20gJy4uLy4uL21vZGVscy9NZXNzYWdlVHlwaW5nRGV0YWlscyc7XHJcbmltcG9ydCB7IFB1Yk51YkFuZ3VsYXIgfSBmcm9tICdwdWJudWItYW5ndWxhcjInO1xyXG5pbXBvcnQgeyBJbnRyb01vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVscy9JbnRyb01vZGVsXCI7XHJcbmltcG9ydCB7IExlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWN0aW9uJztcclxuaW1wb3J0IHsgU2lnbmFsclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zaWduYWxyLnNlcnZpY2UnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImFwcC1oZWFkZXItc2lkZVwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vaGVhZGVyLXNpZGUudGVtcGxhdGUuaHRtbFwiLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ2ZhZGUnLCBbXHJcbiAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gKicsIFtcclxuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAgfSksXHJcbiAgICAgICAgYW5pbWF0ZSgyMDAwLCBzdHlsZSh7IG9wYWNpdHk6IDEgfSkpLFxyXG4gICAgICAgIGFuaW1hdGUoNjAwMCwgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKVxyXG4gICAgICBdKVxyXG4gICAgXSlcclxuICBdXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgSGVhZGVyU2lkZUNvbXBvbmVudCBleHRlbmRzIEN1c3RvbUFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoJ2ZlZWRUaW1lU2hlZXQnKSBmZWVkVGltZVNoZWV0UG9wb3ZlcjogU2F0UG9wb3ZlcjtcclxuICBAVmlld0NoaWxkKCdmZWVkQmFja1BvcG92ZXInKSBmZWVkQmFja1BvcE92ZXI6IFNhdFBvcG92ZXI7XHJcbiAgQFZpZXdDaGlsZHJlbihcImZpbGVVcGxvYWREcm9wem9uZVBvcHVwXCIpIGZpbGVVcGxvYWREcm9wem9uZVBvcHVwO1xyXG4gIEBWaWV3Q2hpbGQoJ2RvY3VtZW50UG9wb3ZlcicpIGRvY3VtZW50UG9wb3ZlcjogU2F0UG9wb3ZlcjtcclxuICBzb2Z0TGFiZWxzOiBTb2Z0TGFiZWxDb25maWd1cmF0aW9uTW9kZWxbXTtcclxuICBASW5wdXQoKSBub3RpZmljUGFuZWw7XHJcbiAgQE91dHB1dCgpIG9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBWaWV3Q2hpbGQoXCJvcGVuQW5ub3VjZW1lbnREaWFsb2dDb21wb25lbnRcIikgcHJpdmF0ZSBvcGVuQW5ub3VjZW1lbnREaWFsb2dDb21wb25lbnQ6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgc3Bpbm5lclR5cGUgPSBTUElOTkVSLmNpcmNsZTtcclxuICBwdWJsaWMgYXZhaWxhYmxlTGFuZ3MgPSBBdmFpbGFibGVMYW5ncy5sYW5ndWFnZXM7XHJcbiAgcHVibGljIGF2YWlsYWJsZUxhbmdzTW9iaWxlID0gW1xyXG4gICAge1xyXG4gICAgICBuYW1lOiBcIkVuXCIsXHJcbiAgICAgIGNvZGU6IFwiZW5cIlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgbmFtZTogXCJUZVwiLFxyXG4gICAgICBjb2RlOiBcInRlXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIG5hbWU6IFwiS29cIixcclxuICAgICAgY29kZTogXCJrb1wiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBuYW1lOiBcIkFyXCIsXHJcbiAgICAgIGNvZGU6IFwiYXJcIlxyXG4gICAgfVxyXG4gIF07XHJcbiAgLy8gdGhlbWVNb2RlbCQ6IE9ic2VydmFibGU8VGhlbWVNb2RlbD47XHJcbiAgY291bnRPZk5vdGlmaWNhdGlvbnMkOiBPYnNlcnZhYmxlPG51bWJlcj47XHJcbiAgbm90aWZpY2F0aW9ucyQ6IE9ic2VydmFibGU8Tm90aWZpY2F0aW9uT3V0cHV0TW9kZWxbXT47XHJcbiAgdW5yZWFkQ291bnRPZk5vdGlmaWNhdGlvbnMkOiBPYnNlcnZhYmxlPG51bWJlcj47XHJcbiAgYXNzZXRJZCQ6IE9ic2VydmFibGU8c3RyaW5nPjtcclxuICB1c2VyU3RvcmVJZCQ6IE9ic2VydmFibGU8c3RyaW5nPjtcclxuICB0aGVtZU1vZGVsOiBUaGVtZU1vZGVsO1xyXG4gIHJlbG9hZDogYm9vbGVhbjtcclxuICBwdWJsaWMgbmdEZXN0cm95ZWQkID0gbmV3IFN1YmplY3QoKTtcclxuICBkYXNoYm9hcmRGaWx0ZXJzID0ge1xyXG4gICAgcHJvamVjdElkOiBudWxsLFxyXG4gICAgdXNlcklkOiBudWxsLFxyXG4gICAgZ29hbElkOiBudWxsLFxyXG4gICAgaXNEYWlsb2d1ZTogdHJ1ZVxyXG4gIH07XHJcbiAgcHVibGljIGVncmV0VGhlbWVzO1xyXG4gIHB1YmxpYyBsYXlvdXRDb25mOiBhbnk7XHJcbiAgcHVibGljIHRpbWVzaGVldERpc2FibGVvckVuYWJsZTogVGltZXNoZWV0RGlzYWJsZW9yRW5hYmxlO1xyXG4gIGRvbWFpbnM6IGFueVtdO1xyXG4gIGxvYWRpbmdJblByb2dyZXNzJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuICB0aW1lUHVuY2hDYXJkU2hvdyA9IGZhbHNlO1xyXG4gIHNob3dUcmFpbFBlcmlvZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFwcGxpY2F0aW9uVmVyc2lvbjogYW55O1xyXG4gIGNvbXBhbmllc0xpc3QgPSBbXTtcclxuICBtZW51VHlwZTogc3RyaW5nXHJcbiAgaXNGZWVkQmFja0RpYWxvZzogYm9vbGVhbjtcclxuICBzZWxlY3RlZExhbmdOYW1lOiBzdHJpbmc7XHJcbiAgY3VycmVudExhbmc6IHN0cmluZztcclxuICBzZWxlY3RlZFN0b3JlSWQ6IHN0cmluZyA9IFwiXCI7XHJcbiAgdXNlclN0b3JlSWQ6IHN0cmluZztcclxuICBzdG9yZXNMaXN0OiBTdG9yZU1vZGVsW107XHJcbiAgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZztcclxuICBpc1JlY29yZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByb2plY3RSb2xlVGV4dDogc3RyaW5nID0gJ1Byb2plY3Qgcm9sZSBjb25maWd1cmF0aW9uJztcclxuICBsb2dnZWRJblVzZXJJZDogc3RyaW5nID0gXCJcIjtcclxuICBjb21wYW55OiBhbnk7XHJcbiAgbG9nZ2VkVXNlckRldGFpbHM6IGFueTtcclxuICBub09mRGF5czogYW55O1xyXG4gIHNob3dEZWxldGVJY29uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd0RlbGV0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzU3RvcmVBY2Nlc3M6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGNvbXBhbnlJZDogc3RyaW5nO1xyXG4gIHJldHVyblVybDogc3RyaW5nO1xyXG4gIHNlbGVjdGVkQ29tcGFueU5hbWU6IHN0cmluZztcclxuICBzZWxlY3RlZENvbXBhbnk6IENvbXBhbmllc0xpc3Q7XHJcbiAgdXNlck5hbWU6IHN0cmluZztcclxuICBsb2FkaW5nOiBib29sZWFuO1xyXG4gIGF1dGhlbnRpY2F0ZWRVc2VyUmVjb3JkOiBVc2VyTW9kZWw7XHJcbiAgZW1wbG95ZWVJZDogc3RyaW5nO1xyXG4gIGlzRmVlZFRpbWVTaGVldDogYm9vbGVhbjtcclxuICBkZWZhdWx0RGFzaGJvYXJkSWQ6IHN0cmluZztcclxuICB0aW1lU2hlZXRCdXR0b25EZXRhaWxzJDogT2JzZXJ2YWJsZTxUaW1lc2hlZXREaXNhYmxlb3JFbmFibGU+XHJcbiAgbm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uT3V0cHV0TW9kZWxbXTtcclxuICBhbm5vdW5jZW1lbnRJZDogc3RyaW5nO1xyXG4gIGFubm91bmNlTm90aWZpY2F0aW9uSWQ6IHN0cmluZztcclxuICBkaXNwbGF5V2VsY29tZU5vdGU6IGJvb2xlYW47XHJcbiAgbG9nZ2VkSW5Db3VudDogYW55O1xyXG4gIHVzZXJGdWxsTmFtZTogYW55O1xyXG4gIGZpbGVzOiBGaWxlW10gPSBbXTtcclxuICBmaWxlc1ByZXNlbnQ6IGJvb2xlYW47XHJcbiAgcHJvZ3Jlc3NWYWx1ZTogbnVtYmVyO1xyXG4gIGZpbGVSZXN1bHRNb2RlbDogRmlsZVJlc3VsdE1vZGVsW107XHJcbiAgbW9kdWxlVHlwZUlkID0gOTtcclxuICBhbnlPcGVyYXRpb25JblByb2dyZXNzOiBib29sZWFuO1xyXG4gIGZpbGVJbmRleDogbnVtYmVyID0gMDtcclxuICBmaWxlQ291bnRlcjogbnVtYmVyID0gMTtcclxuICB1cGxvYWRlZEZpbGVOYW1lcyA9IFtdO1xyXG4gIGlzRmlsZVVwbG9hZENvbXBsZXRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzRm9sZGVyVXBsb2FkQ29tcGxldGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaW1wb3J0aW5nSW5Qcm9ncmVzczogYm9vbGVhbjtcclxuICBzZWFyY2hUZXh0OiBzdHJpbmcgPSBudWxsO1xyXG4gIC8vIG1lc3NhZ2VzVW5yZWFkQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgY2hhbm5lbExpc3Q6IGFueTtcclxuICB1c2VyQ2hhbm5lbHM6IGFueTtcclxuICBjb2xsZWFndWVzTGlzdDogYW55O1xyXG4gIGxvZ2dlZEluVXNlcmZ1bGxOYW1lOiBhbnk7XHJcbiAgbG9nSW5Vc2VySWQgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KFwiQ3VycmVudFVzZXJJZFwiKTtcclxuICBsb2dpblVzZXJjaGFubmVsTmFtZTogc3RyaW5nO1xyXG4gIHByZXZpb3VzTWVzc2FnZTogYW55O1xyXG4gIHB1Ymxpc2hpbmdNZXNzYWdlT2ZVc2VyOiBhbnk7XHJcbiAgbmV3Tm90aWZpY2F0aW9uc0NvdW50OiBhbnkgPSAwO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcHVzaE5vdGlmaWNhdGlvbnM6IFB1c2hOb3RpZmljYXRpb25zU2VydmljZSxcclxuICAgIHByaXZhdGUgdGhlbWVTZXJ2aWNlOiBUaGVtZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5neFNlcnZpY2U6IE5neFVpTG9hZGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgbGF5b3V0OiBMYXlvdXRTZXJ2aWNlLFxyXG4gICAgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHB1YmxpYyByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgY29va2llU2VydmljZTogQ29va2llU2VydmljZSxcclxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPFN0YXRlPixcclxuICAgIHByaXZhdGUgcHVibnViOiBQdWJOdWJBbmd1bGFyLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhY3Rpb25VcGRhdGVzJDogQWN0aW9ucyxcclxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN0b3JlTWFuYWdlbWVudFNlcnZpY2U6IFN0b3JlTWFuYWdlbWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIFNoZWxsTW9kdWxlc1NlcnZpY2U6IFNoZWxsTW9kdWxlc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNoYXRTZXJ2aWNlOiBDaGF0U2VydmljZSxcclxuICAgIHByaXZhdGUgc2lnbmFscjogU2lnbmFsclNlcnZpY2UsXHJcbiAgICBASW5qZWN0KFdJTkRPVykgcHJpdmF0ZSB3aW5kb3c6IFdpbmRvd1xyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIC8vIHRoaXMuc2lnbmFsci5pbml0aWFsaXplU2lnbmFsUkNvbm5lY3Rpb24oKTtcclxuICAgIHRoaXMuc2lnbmFsci5ub3RpZmljYXRpb25zJC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4gdGhpcy5uZXdOb3RpZmljYXRpb25zQ291bnQgPSBkYXRhICYmIGRhdGEubGVuZ3RoID8gZGF0YS5sZW5ndGggOiAwKTtcclxuXHJcbiAgICB0aGlzLnB1c2hOb3RpZmljYXRpb25zLnJlcXVlc3RQZXJtaXNzaW9uKCk7XHJcbiAgICB0aGlzLmlzUmVjb3JkaW5nID0gZmFsc2U7XHJcbiAgICAvLyB0aGlzLmdldEFjdFRyYWNrZXJSZWNvcmRlcigpO1xyXG4gICAgaWYgKChsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJNb2RlbCkgIT0gbnVsbCAmJiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJNb2RlbCkgIT0gdW5kZWZpbmVkKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMubG9hZE5vdGlmaWNhdGlvbnMoKTtcclxuICAgICAgdGhpcy50b2dnbGVSZWNvcmRpbmcoKTtcclxuICAgIH1cclxuICAgIGxldCBjdXJyZW50Q3VsdHVyZSA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50Q3VsdHVyZSk7XHJcbiAgICBjb25zdCBjb21wYW55bGFuID0gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueURldGFpbHMpKTtcclxuICAgIGxldCBjdXJyZW50Q3VsdHVyZWxhbiA9IGNvbXBhbnlsYW4ubGFuQ29kZTtcclxuXHJcbiAgICBpZiAoY3VycmVudEN1bHR1cmUgPT0gJycgfHwgY3VycmVudEN1bHR1cmUgPT0gbnVsbCB8fCBjdXJyZW50Q3VsdHVyZSA9PSB1bmRlZmluZWQgfHwgY3VycmVudEN1bHR1cmUgPT09ICdudWxsJyB8fCBjdXJyZW50Q3VsdHVyZSA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgaWYgKGN1cnJlbnRDdWx0dXJlbGFuID09ICcnIHx8IGN1cnJlbnRDdWx0dXJlbGFuID09IG51bGwgfHwgY3VycmVudEN1bHR1cmVsYW4gPT0gdW5kZWZpbmVkIHx8IGN1cnJlbnRDdWx0dXJlbGFuID09PSAnbnVsbCcgfHwgY3VycmVudEN1bHR1cmVsYW4gPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgY3VycmVudEN1bHR1cmUgPSAnZW4nO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGN1cnJlbnRDdWx0dXJlID0gY3VycmVudEN1bHR1cmVsYW47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuY3VycmVudExhbmcgPSBjdXJyZW50Q3VsdHVyZTtcclxuICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRDdWx0dXJlLCB0aGlzLmN1cnJlbnRMYW5nLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgdGhpcy5hY3Rpb25VcGRhdGVzJFxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ0Rlc3Ryb3llZCQpLFxyXG4gICAgICAgIG9mVHlwZShBdXRoZW50aWNhdGlvbkFjdGlvblR5cGVzLlVzZXJEZXRhaWxzRmV0Y2hlZEFmdGVyQ29tcGFueUxvZ2luKSxcclxuICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZWxvYWQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5nZXRJbnRyb0RldGFpbHMoKTtcclxuICAgICAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgICAgICAgIHRoaXMuZ2V0Tm90aWZpY2F0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5nZXRUZWFtTWVtYmVycygpO1xyXG4gICAgICAgICAgdmFyIERlZmF1bHREYXNoYm9hcmRJZEZvckxvZ2dlZEluVXNlciA9IHRoaXMuY29va2llU2VydmljZS5jaGVjayhMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkRlZmF1bHREYXNoYm9hcmQpID8gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGVmYXVsdERhc2hib2FyZCkpIDogbnVsbDtcclxuICAgICAgICAgIGNvbnN0IHVzZXJSZWZlcmVuY2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJSZWZlcmVuY2VJZCk7XHJcbiAgICAgICAgICBpZiAoIURlZmF1bHREYXNoYm9hcmRJZEZvckxvZ2dlZEluVXNlcikge1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5yZXR1cm5VcmxdKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAodXNlclJlZmVyZW5jZSAhPSBcIm51bGxcIiAmJiB1c2VyUmVmZXJlbmNlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIERlZmF1bHREYXNoYm9hcmRJZEZvckxvZ2dlZEluVXNlciArIFwiL2Zvcm0vXCIgKyB1c2VyUmVmZXJlbmNlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvXCIgKyBEZWZhdWx0RGFzaGJvYXJkSWRGb3JMb2dnZWRJblVzZXIpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKTtcclxuXHJcblxyXG4gICAgdGhpcy5hY3Rpb25VcGRhdGVzJFxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ0Rlc3Ryb3llZCQpLFxyXG4gICAgICAgIG9mVHlwZShBdXRoZW50aWNhdGlvbkFjdGlvblR5cGVzLlVzZXJEZXRhaWxzRmV0Y2hlZEFmdGVyTG9naW4pLFxyXG4gICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29va2llU2VydmljZS5jaGVjayhMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgQ3VycmVudFVzZXJJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKTtcclxuICAgICAgICAgICAgICAvLyBTdWJzY3JpYmUgdG8gVGFzayBBc3NpZ25tZW50IE5vdGlmaWNhaXRvbnMgaGVyZS5cclxuICAgICAgICAgICAgICBjb25zdCB0YXNrQXNzaWdubWVudENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9UYXNrQXNzaWdubWVudHMgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHRhc3RhdHVzUmVwb3J0U3VibWlzc2lvbkNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9TdGF0dXNSZXBvcnRTdWJtaXNzaW9uICsgQ3VycmVudFVzZXJJZDtcclxuICAgICAgICAgICAgICBjb25zdCB0YXN0YXR1c0NvbmZpZ0Fzc2lnbkNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9TdGF0dXNDb25maWdBc3NpZ24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICAgIGNvbnN0IG11bHRpQ2hhcnRzU2NoZWR1bGluZ0NoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9NdWx0aUNoYXJ0c1NjaGVkdWxpbmcgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGFzc2V0c0Fzc2lnbmVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX0Fzc2V0QXNzaWdubWVudCArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgICAgY29uc3QgcHJvamVjdENyZWF0ZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfTmV3UHJvamVjdCArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgICAgY29uc3QgcHJvamVjdEFjY2Vzc1RvTWVtYmVyQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1Byb2plY3RNZW1iZXJSb2xlICsgQ3VycmVudFVzZXJJZDtcclxuICAgICAgICAgICAgICBjb25zdCBnb2FsQXBwcm92ZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfR29hbEFwcHJvdmVkRnJvbVJlcGxhbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgICAgY29uc3QgdXNlclN0b3J5VXBkYXRlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1VzZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgICAgY29uc3QgQW5ub3VuY2VtZW50Q2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX0Fubm91bmNlbWVudE5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgICAgY29uc3QgcHVyY2hhc2VFeGVjdXRpb25Bc3NpZ25lZENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9QdXJjaGFzZUV4ZWN1dGlvbkFzc2lnblRvRW1wbG95ZWVOb3RpZmljYXRpb24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICAgIHB1Ym51Yi5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgY2hhbm5lbHM6IFt0YXNrQXNzaWdubWVudENoYW5uZWxUb1N1YnNjcmliZUludG8sIHRhc3RhdHVzUmVwb3J0U3VibWlzc2lvbkNoYW5uZWxUb1N1YnNjcmliZUludG8sXHJcbiAgICAgICAgICAgICAgICAgIHRhc3RhdHVzQ29uZmlnQXNzaWduQ2hhbm5lbFRvU3Vic2NyaWJlSW50bywgbXVsdGlDaGFydHNTY2hlZHVsaW5nQ2hhbm5lbFRvU3Vic2NyaWJlSW50byxcclxuICAgICAgICAgICAgICAgICAgYXNzZXRzQXNzaWduZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvLCBwcm9qZWN0Q3JlYXRlZENoYW5uZWxUb1N1YnNjcmliZUludG8sICxcclxuICAgICAgICAgICAgICAgICAgcHJvamVjdEFjY2Vzc1RvTWVtYmVyQ2hhbm5lbFRvU3Vic2NyaWJlSW50bywgZ29hbEFwcHJvdmVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50byxcclxuICAgICAgICAgICAgICAgICAgdXNlclN0b3J5VXBkYXRlQ2hhbm5lbFRvU3Vic2NyaWJlSW50bywgQW5ub3VuY2VtZW50Q2hhbm5lbFRvU3Vic2NyaWJlSW50bywgcHVyY2hhc2VFeGVjdXRpb25Bc3NpZ25lZENoYW5uZWxUb1N1YnNjcmliZUludG9dXHJcbiAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgIC8vIEFkZCBvdGhlciBzdWJzY3JpcHRpb25zIGhlcmUuXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJVc2VyIG5vdCBsb2dnZWQgaW4geWV0IHRvIGJlIGFibGUgdG8gc3Vic2NyaWJlLlwiKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdmFyIHJvbGVVcGRhdGVzQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1JvbGVVcGRhdGVzICsgXCIxOUI2RjlGQy03MzcwLTRCOUMtQTA1Qy0zQjhEODE5RUVFQUZcIjtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0byBcIiArIHJvbGVVcGRhdGVzQ2hhbm5lbFRvU3Vic2NyaWJlSW50byk7XHJcbiAgICAgICAgICAgIHB1Ym51Yi5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgIGNoYW5uZWxzOiBbcm9sZVVwZGF0ZXNDaGFubmVsVG9TdWJzY3JpYmVJbnRvXVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0sIDMwMDApO1xyXG4gICAgICAgIH0pKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICB0aGlzLmFjdGlvblVwZGF0ZXMkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm5nRGVzdHJveWVkJCksXHJcbiAgICAgICAgb2ZUeXBlKE5vdGlmaWNhdGlvbnNBY3Rpb25UeXBlcy5DbGVhckFsbFVucmVhZE5vdGlmaWNhdGlvbnNDb21wbGV0ZWQpLFxyXG4gICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5nZXROb3RpZmljYXRpb25BbGwpKTtcclxuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9ucyQuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMgPSB4O1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMubm90aWZpY2F0aW9ucy5maW5kSW5kZXgoKHApID0+IEpTT04ucGFyc2UocC5ub3RpZmljYXRpb25Kc29uKS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5Bbm5vdW5jZW1lbnRfUmVjZWl2ZWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICAgICAgICAvL3RoaXMuYW5ub3VuY2VOb3RpZmljYXRpb25JZCA9IEpTT04ucGFyc2UodGhpcy5ub3RpZmljYXRpb25zW2luZGV4XS5ub3RpZmljYXRpb25Kc29uKS5ub3RpZmljYXRpb25JZDtcclxuICAgICAgICAgICAgICB0aGlzLmFubm91bmNlTm90aWZpY2F0aW9uSWQgPSB0aGlzLm5vdGlmaWNhdGlvbnNbaW5kZXhdLm5vdGlmaWNhdGlvbklkO1xyXG4gICAgICAgICAgICAgIHRoaXMub3BlbkFubm91bmNlbWVudERpYWxvZyhKU09OLnBhcnNlKHRoaXMubm90aWZpY2F0aW9uc1tpbmRleF0ubm90aWZpY2F0aW9uSnNvbikpO1xyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIC8vIHRoaXMuYWN0aW9uVXBkYXRlcyRcclxuICAgIC8vICAgLnBpcGUoXHJcbiAgICAvLyAgICAgdGFrZVVudGlsKHRoaXMubmdEZXN0cm95ZWQkKSxcclxuICAgIC8vICAgICBvZlR5cGUoTWVzc2FnZUFjdGlvblR5cGVzLkNvdW50Q29tcGxldGVkKSxcclxuICAgIC8vICAgICB0YXAoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAvLyAgICAgICB0aGlzLm1lc3NhZ2VzVW5yZWFkQ291bnQgPSByZXN1bHQubWVzc2FnZUNvdW50O1xyXG4gICAgLy8gICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAvLyAgICAgfSlcclxuICAgIC8vICAgKVxyXG4gICAgLy8gICAuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgdGhpcy5hY3Rpb25VcGRhdGVzJFxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ0Rlc3Ryb3llZCQpLFxyXG4gICAgICAgIG9mVHlwZShNZXNzYWdlQWN0aW9uVHlwZXMuUmVxdWVzdGluZ1N0YXRlT2ZVc2Vyc0NvbXBsZXRlZCksXHJcbiAgICAgICAgdGFwKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zdWJTY3JpYmluZ1RvUHJlc2VuY2VDaGFubmVsKCk7XHJcblxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5hY3Rpb25VcGRhdGVzJFxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ0Rlc3Ryb3llZCQpLFxyXG4gICAgICAgIG9mVHlwZShNZXNzYWdlQWN0aW9uVHlwZXMuTWVzc2FnZUNvbXBsZXRlZCksXHJcbiAgICAgICAgdGFwKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdmFyIG1lc3NhZ2VEZXRhaWxzID0gcmVzdWx0WydtZXNzYWdlRGV0YWlscyddO1xyXG4gICAgICAgICAgdGhpcy5wdWJsaXNoaW5nTWVzc2FnZU9mVXNlciA9IG1lc3NhZ2VEZXRhaWxzO1xyXG4gICAgICAgICAgdGhpcy5wdWJsaXNoaW5nTWVzc2FnZSgpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5hY3Rpb25VcGRhdGVzJFxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ0Rlc3Ryb3llZCQpLFxyXG4gICAgICAgIG9mVHlwZShNZXNzYWdlQWN0aW9uVHlwZXMuU2VuZENoYW5uZWxVcGRhdGVNb2RlbENvbXBsZXRlZCksXHJcbiAgICAgICAgdGFwKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdmFyIGNoYW5uZWxVcGRhdGVNb2RlbCA9IHJlc3VsdFsnY2hhbm5lbFVwZGF0ZU1vZGVsJ107XHJcbiAgICAgICAgICB2YXIgbG9naW5Db21wYW55SWQgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KFwiQ29tcGFueUlkXCIpO1xyXG4gICAgICAgICAgdGhpcy5wdWJudWIucHVibGlzaCh7XHJcbiAgICAgICAgICAgIGNoYW5uZWw6IFsobG9naW5Db21wYW55SWQgKyAnLScgKyBjaGFubmVsVXBkYXRlTW9kZWwuY2hhbm5lbElkKV0sXHJcbiAgICAgICAgICAgIG1lc3NhZ2U6IEpTT04uc3RyaW5naWZ5KGNoYW5uZWxVcGRhdGVNb2RlbClcclxuICAgICAgICAgIH0sIGZ1bmN0aW9uIChzdGF0dXMsIHJlc29wbnNlKSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHN0YXR1cylcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2cocmVzb3Buc2UpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgpO1xyXG5cclxuXHJcbiAgICB0aGlzLmFjdGlvblVwZGF0ZXMkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm5nRGVzdHJveWVkJCksXHJcbiAgICAgICAgb2ZUeXBlKE1lc3NhZ2VBY3Rpb25UeXBlcy5TZW5kaW5nU2lnbmFsQ29tcGxldGVkKSxcclxuICAgICAgICB0YXAoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgICB2YXIgbWVzc2FnZVR5cGluZ0RldGFpbHMgPSByZXN1bHQubWVzc2FnZVR5cGluZ0RldGFpbHM7XHJcbiAgICAgICAgICB2YXIgc2lnbmFsTWVzc2FnZSA9IG5ldyBNZXNzYWdlVHlwaW5nRGV0YWlscygpO1xyXG4gICAgICAgICAgc2lnbmFsTWVzc2FnZS5zdGF0ZSA9IG1lc3NhZ2VUeXBpbmdEZXRhaWxzLnN0YXRlO1xyXG4gICAgICAgICAgY29uc29sZS5sb2cobWVzc2FnZVR5cGluZ0RldGFpbHMsIHNpZ25hbE1lc3NhZ2UpO1xyXG4gICAgICAgICAgLy8gdGhpcy5wdWJudWIuc2lnbmFsKHtcclxuICAgICAgICAgIC8vICAgY2hhbm5lbDpbbWVzc2FnZVR5cGluZ0RldGFpbHMucHVibnViQ2hhbm5lbE5hbWVPZk1lc3NhZ2VdLFxyXG4gICAgICAgICAgLy8gICBtZXNzYWdlIDogSlNPTi5zdHJpbmdpZnkoc2lnbmFsTWVzc2FnZSlcclxuICAgICAgICAgIC8vIH0pXHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCk7XHJcbiAgICBjb25zdCBzdG9yZUxpc3RuZXIgPSAobWVzc2FnZSkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIi0tLS0tLS0tLVJlY2VpdmVkIHB1Ym51YiBtZXNzYWdlLS0tLS0tLS0tXCIpO1xyXG4gICAgICAvL3RoaXMudG9hc3RyLmluZm8obWVzc2FnZS5tZXNzYWdlLlN1bW1hcnkpO1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIC8vUmVjZWl2aW5nIHRoZSBVc2VyIFN0b3J5IEFzc2lnbmVkIE5vdGlmaWNhdGlvblxyXG4gICAgICAgIGlmICh0eXBlb2YgKG1lc3NhZ2UubWVzc2FnZSkgPT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgIHZhciBpbmRleE9mQ3VycmVudFRvcGljOiBudW1iZXI7XHJcbiAgICAgICAgICB2YXIgbWVzc2FnZURldGFpbHNPYmplY3QgPSBKU09OLnBhcnNlKG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICBpZiAobWVzc2FnZURldGFpbHNPYmplY3QudGV4dE1lc3NhZ2UgfHwgbWVzc2FnZURldGFpbHNPYmplY3QuZmlsZVBhdGggfHwgbWVzc2FnZURldGFpbHNPYmplY3QubWVzc2FnZVR5cGUpIHtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUmVjZWl2ZU1lc3NhZ2VUcmlnZ2VyZWQobWVzc2FnZURldGFpbHNPYmplY3QpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKG1lc3NhZ2VEZXRhaWxzT2JqZWN0LmlzRnJvbUNoYW5uZWxBcmNoaXZlID09IHRydWUgfHxcclxuICAgICAgICAgICAgbWVzc2FnZURldGFpbHNPYmplY3QuaXNGcm9tUmVtb3ZlTWVtYmVyID09IHRydWUgfHxcclxuICAgICAgICAgICAgbWVzc2FnZURldGFpbHNPYmplY3QucmVmcmVzaENoYW5uZWxzID09IHRydWUgfHwgbWVzc2FnZURldGFpbHNPYmplY3QuaXNGcm9tQWRkTWVtYmVyID09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5jaGF0U2VydmljZS5nZXRVc2VyQ2hhbm5lbHMoKS5zdWJzY3JpYmUoKGNoYW5uZWxzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5uZWxMaXN0ID0gY2hhbm5lbHMuZGF0YTtcclxuICAgICAgICAgICAgICB2YXIgbG9naW5Db21wYW55SWQgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KFwiQ29tcGFueUlkXCIpO1xyXG4gICAgICAgICAgICAgIHZhciBjaGFubmVsTmFtZSA9IGxvZ2luQ29tcGFueUlkICsgJy0nICsgbWVzc2FnZURldGFpbHNPYmplY3QuY2hhbm5lbElkO1xyXG4gICAgICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuY2hhbm5lbExpc3QuZmluZEluZGV4KHggPT4geC5pZCA9PSBtZXNzYWdlRGV0YWlsc09iamVjdC5jaGFubmVsSWQpO1xyXG4gICAgICAgICAgICAgIGlmIChpbmRleCAhPSAtMSAmJiAobWVzc2FnZURldGFpbHNPYmplY3QucmVmcmVzaENoYW5uZWxzID09IHRydWUgfHwgbWVzc2FnZURldGFpbHNPYmplY3QuaXNGcm9tQWRkTWVtYmVyID09IHRydWUpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnB1Ym51Yi5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgICBjaGFubmVsczogW2NoYW5uZWxOYW1lXVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgICAgICBjaGFubmVsczogW2NoYW5uZWxOYW1lXVxyXG4gICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSZWNlaXZlQ2hhbm5lbFVwZGF0ZU1vZGVsVHJpZ2dlcmVkKG1lc3NhZ2VEZXRhaWxzT2JqZWN0KSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICh0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC51cmwgIT0gXCIvY2hhdFwiICYmIG1lc3NhZ2VEZXRhaWxzT2JqZWN0Lm1lc3NhZ2VUeXBlICE9IFwiUmVhY3Rpb25cIiAmJiBtZXNzYWdlRGV0YWlsc09iamVjdC5ib2R5ICE9IG51bGwgJiYgbWVzc2FnZURldGFpbHNPYmplY3QudGl0bGUgIT0gbnVsbCAmJiAobWVzc2FnZURldGFpbHNPYmplY3QuaXNQaW5uZWQgPT0gbnVsbCB8fCBtZXNzYWdlRGV0YWlsc09iamVjdC5pc1Bpbm5lZCA9PSB1bmRlZmluZWQpICYmIChtZXNzYWdlRGV0YWlsc09iamVjdC5pc1N0YXJyZWQgPT0gbnVsbCB8fCBtZXNzYWdlRGV0YWlsc09iamVjdC5pc1N0YXJyZWQgPT0gdW5kZWZpbmVkKSAmJiBtZXNzYWdlRGV0YWlsc09iamVjdC5zZW5kZXJVc2VySWQgIT0gdGhpcy5sb2dJblVzZXJJZCkge1xyXG4gICAgICAgICAgICBpZiAobWVzc2FnZURldGFpbHNPYmplY3QuY2hhbm5lbElkKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGF0U2VydmljZS5nZXRVc2VyQ2hhbm5lbHMoKS5zdWJzY3JpYmUoKGNoYW5uZWxzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbm5lbExpc3QgPSBjaGFubmVscy5kYXRhO1xyXG4gICAgICAgICAgICAgICAgaW5kZXhPZkN1cnJlbnRUb3BpYyA9IHRoaXMuY2hhbm5lbExpc3QuZmluZEluZGV4KHggPT4geC5pZCA9PSBtZXNzYWdlRGV0YWlsc09iamVjdC5jaGFubmVsSWQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGluZGV4T2ZDdXJyZW50VG9waWMgIT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgLy8gdGhpcy5ub3RpZmljYXRpb25PZkNoYXQobWVzc2FnZURldGFpbHNPYmplY3QpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIC8vIHRoaXMubm90aWZpY2F0aW9uT2ZDaGF0KG1lc3NhZ2VEZXRhaWxzT2JqZWN0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZVxyXG4gICAgICAgICAgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZCA9PSBOb3RpZmljYXRpb25UeXBlSWRzLk5vdGlmaWNhdGlvbl9Xb3JrSXRlbUFzc2lnbmVkVG9Vc2VyKSB7XHJcbiAgICAgICAgICAgIHZhciB1c2VyU3RvcnlBc3NpZ25lZE5vdGlmaWNhdGlvbiA9IG5ldyBVc2VyU3RvcnlBc3NpZ25lZE5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgICAgICB1c2VyU3RvcnlBc3NpZ25lZE5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB1c2VyU3RvcnlBc3NpZ25lZE5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld1dvcmtJdGVtICsgdXNlclN0b3J5QXNzaWduZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uSWQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKHVzZXJTdG9yeUFzc2lnbmVkTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZCA9PSBOb3RpZmljYXRpb25UeXBlSWRzLkdlbmVyaWNOb3RpZmljYXRpb25BY3Rpdml0eSkge1xyXG4gICAgICAgICAgICB2YXIgdXNlclN0b3J5QXNzaWduZWROb3RpZmljYXRpb24gPSBuZXcgVXNlclN0b3J5QXNzaWduZWROb3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgdXNlclN0b3J5QXNzaWduZWROb3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgLy8gdXNlclN0b3J5QXNzaWduZWROb3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdXb3JrSXRlbSArIHVzZXJTdG9yeUFzc2lnbmVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvbklkO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZCh1c2VyU3RvcnlBc3NpZ25lZE5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5Ob3RpZmljYXRpb25fUm9sZVVwZGF0ZWQpIHtcclxuICAgICAgICAgICAgdmFyIHJvbGVVcGRhdGVkTm90aWZpY2F0aW9uID0gbmV3IFJvbGVVcGRhdGVkTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJvbGVVcGRhdGVkTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJvbGVVcGRhdGVkTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQocm9sZVVwZGF0ZWROb3RpZmljYXRpb24pKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkID09IE5vdGlmaWNhdGlvblR5cGVJZHMuU3RhdHVzX1JlcG9ydF9TdW1pdHRlZCkge1xyXG4gICAgICAgICAgICB2YXIgcmVwb3J0U3VibWl0dGVkTm90aWZpY2F0aW9uID0gbmV3IFJlcG9ydFN1Ym1pdHRlZE5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgICAgICByZXBvcnRTdWJtaXR0ZWROb3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgcmVwb3J0U3VibWl0dGVkTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQocmVwb3J0U3VibWl0dGVkTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZCA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlN0YXR1c19SZXBvcnRfQ29uZmlnX0NyZWF0ZWQpIHtcclxuICAgICAgICAgICAgdmFyIHJlcG9ydENvbmZpZ0Fzc2lnbmVkTm90aWZpY2F0aW9uID0gbmV3IFJlcG9ydENvbmZpZ0Fzc2lnbmVkTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJlcG9ydENvbmZpZ0Fzc2lnbmVkTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJlcG9ydENvbmZpZ0Fzc2lnbmVkTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQocmVwb3J0Q29uZmlnQXNzaWduZWROb3RpZmljYXRpb24pKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkID09IE5vdGlmaWNhdGlvblR5cGVJZHMuTXVsdGlwbGVfQ2hhcnRzX1NjaGVkdWxpbmdfY3JlYXRlZCkge1xyXG4gICAgICAgICAgICB2YXIgbXVsdGlwbGVDaGFydHNTY2hlZHVsaW5nID0gbmV3IE11bHRpcGxlQ2hhcnRzU2NoZWR1bGluZygpO1xyXG4gICAgICAgICAgICBtdWx0aXBsZUNoYXJ0c1NjaGVkdWxpbmcubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgbXVsdGlwbGVDaGFydHNTY2hlZHVsaW5nLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQobXVsdGlwbGVDaGFydHNTY2hlZHVsaW5nKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZCA9PSBOb3RpZmljYXRpb25UeXBlSWRzLkFzc2V0c19Bc3NpZ25tZW50KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFzc2V0QXNzaWduZWROb3RpZmljYXRpb24gPSBuZXcgQXNzZXRBc3NpZ25lZE5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgICAgICBhc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGFzc2V0QXNzaWduZWROb3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChhc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5SZW1pbmRlcl9Ob3RpZmljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFzc2V0QXNzaWduZWROb3RpZmljYXRpb24gPSBuZXcgQXNzZXRBc3NpZ25lZE5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgICAgICBhc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGFzc2V0QXNzaWduZWROb3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChhc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5Bbm5vdW5jZW1lbnRfUmVjZWl2ZWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFzc2V0QXNzaWduZWROb3RpZmljYXRpb24gPSBuZXcgQXNzZXRBc3NpZ25lZE5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgICAgICBhc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGFzc2V0QXNzaWduZWROb3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChhc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICAgIC8vIGlmIChtZXNzYWdlLm1lc3NhZ2UuSWQgIT0gdGhpcy5hbm5vdW5jZU5vdGlmaWNhdGlvbklkKSB7XHJcbiAgICAgICAgICAgIC8vICAgdGhpcy5hbm5vdW5jZU5vdGlmaWNhdGlvbklkID0gbWVzc2FnZS5tZXNzYWdlLklkO1xyXG4gICAgICAgICAgICAvLyAgIHRoaXMub3BlbkFubm91bmNlbWVudERpYWxvZyhtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5QZXJmb3JtYW5jZV9SZWNlaXZlZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgfHwgbWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlByb2plY3RNZW1iZXJSb2xlQWRkZWROb3RpZmljYXRpb25JZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgbmV3UHJvamVjdENyZWF0ZWROb3RpZmljYXRpb24gPSBuZXcgTmV3UHJvamVjdENyZWF0ZWROb3RpZmljYXRpb25Nb2RlbCgpO1xyXG4gICAgICAgICAgICBuZXdQcm9qZWN0Q3JlYXRlZE5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBuZXdQcm9qZWN0Q3JlYXRlZE5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKG5ld1Byb2plY3RDcmVhdGVkTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5OZXdQcm9qZWN0Q3JlYXRlZE5vdGlmaWNhdGlvbklkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSB8fCBtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuUHJvamVjdE1lbWJlclJvbGVBZGRlZE5vdGlmaWNhdGlvbklkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdQcm9qZWN0Q3JlYXRlZE5vdGlmaWNhdGlvbiA9IG5ldyBOZXdQcm9qZWN0Q3JlYXRlZE5vdGlmaWNhdGlvbk1vZGVsKCk7XHJcbiAgICAgICAgICAgIG5ld1Byb2plY3RDcmVhdGVkTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIG5ld1Byb2plY3RDcmVhdGVkTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQobmV3UHJvamVjdENyZWF0ZWROb3RpZmljYXRpb24pKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLkdvYWxBcHByb3ZlZEZyb21SZXBsYW4udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGdvYWxBcHByb3ZlZE5vdGlmaWNhdGlvbk1vZGVsID0gbmV3IEdvYWxBcHByb3ZlZE5vdGlmaWNhdGlvbk1vZGVsKCk7XHJcbiAgICAgICAgICAgIGdvYWxBcHByb3ZlZE5vdGlmaWNhdGlvbk1vZGVsLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGdvYWxBcHByb3ZlZE5vdGlmaWNhdGlvbk1vZGVsLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQoZ29hbEFwcHJvdmVkTm90aWZpY2F0aW9uTW9kZWwpKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlVTZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbklkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCB1c2VyU3RvcnlVcGRhdGVOb3RpZmljYXRpb25Nb2RlbCA9IG5ldyBVc2VyU3RvcnlVcGRhdGVOb3RpZmljYXRpb25Nb2RlbCgpO1xyXG4gICAgICAgICAgICB1c2VyU3RvcnlVcGRhdGVOb3RpZmljYXRpb25Nb2RlbC5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB1c2VyU3RvcnlVcGRhdGVOb3RpZmljYXRpb25Nb2RlbC5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKHVzZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbk1vZGVsKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5QdXNoTm90aWZpY2F0aW9uRm9yVXNlclN0b3J5Q29tbWVudC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgdXNlclN0b3J5Q29tbWVudE5vdGlmaWNhdGlvbk1vZGVsID0gbmV3IFVzZXJTdG9yeUNvbW1lbnROb3RpZmljYXRpb25Nb2RlbCgpO1xyXG4gICAgICAgICAgICB1c2VyU3RvcnlDb21tZW50Tm90aWZpY2F0aW9uTW9kZWwubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgdXNlclN0b3J5Q29tbWVudE5vdGlmaWNhdGlvbk1vZGVsLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQodXNlclN0b3J5Q29tbWVudE5vdGlmaWNhdGlvbk1vZGVsKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5TcHJpbnRTdGFydGVkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBzcHJpbnRTdGFydGVkTm90aWZpY2F0aW9uTW9kZWwgPSBuZXcgU3ByaW50U3RhcnRlZE5vdGlmaWNhdGlvbk1vZGVsKCk7XHJcbiAgICAgICAgICAgIHNwcmludFN0YXJ0ZWROb3RpZmljYXRpb25Nb2RlbC5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBzcHJpbnRTdGFydGVkTm90aWZpY2F0aW9uTW9kZWwucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChzcHJpbnRTdGFydGVkTm90aWZpY2F0aW9uTW9kZWwpKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlNwcmludFJlcXVlc3RkRm9yUkVwbGFuLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBzcHJpbnRSZXBsYW5TdGFydGVkTm90aWZpY2F0aW9uTW9kZWwgPSBuZXcgU3ByaW50UmVwbGFuU3RhcnRlZE5vdGlmaWNhdGlvbk1vZGVsKCk7XHJcbiAgICAgICAgICAgIHNwcmludFJlcGxhblN0YXJ0ZWROb3RpZmljYXRpb25Nb2RlbC5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBzcHJpbnRSZXBsYW5TdGFydGVkTm90aWZpY2F0aW9uTW9kZWwucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChzcHJpbnRSZXBsYW5TdGFydGVkTm90aWZpY2F0aW9uTW9kZWwpKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlByb2plY3RGZWF0dXJlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdQcm9qZWN0RmVhdHVyZUNyZWF0ZWROb3RpZmljYXRpb24gPSBuZXcgTmV3UHJvamVjdEZlYXR1cmVDcmVhdGVkTm90aWZpY2F0aW9uTW9kZWwoKTtcclxuICAgICAgICAgICAgbmV3UHJvamVjdEZlYXR1cmVDcmVhdGVkTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIG5ld1Byb2plY3RGZWF0dXJlQ3JlYXRlZE5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKG5ld1Byb2plY3RGZWF0dXJlQ3JlYXRlZE5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuVXNlclN0b3J5QXJjaGl2ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgbmV3VXNlclN0b3J5QXJjaGl2ZU1vZGVsID0gbmV3IFVzZXJTdG9yeUFyY2hpdmVOb3RpZmljYXRpb25Nb2RlbCgpO1xyXG4gICAgICAgICAgICBuZXdVc2VyU3RvcnlBcmNoaXZlTW9kZWwubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgbmV3VXNlclN0b3J5QXJjaGl2ZU1vZGVsLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQobmV3VXNlclN0b3J5QXJjaGl2ZU1vZGVsKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5Vc2VyU3RvcnlQYXJrLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdVc2VyU3RvcnlQYXJrTW9kZWwgPSBuZXcgVXNlclN0b3J5UGFya05vdGlmaWNhdGlvbk1vZGVsKCk7XHJcbiAgICAgICAgICAgIG5ld1VzZXJTdG9yeVBhcmtNb2RlbC5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBuZXdVc2VyU3RvcnlQYXJrTW9kZWwucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChuZXdVc2VyU3RvcnlQYXJrTW9kZWwpKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5MZWF2ZUFwcGxpY2F0aW9uLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uID0gbmV3IExlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQobGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLkFwcHJvdmVMZWF2ZUFwcGxpY2F0aW9uLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uID0gbmV3IExlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQobGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlJlamVjdExlYXZlQXBwbGljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24gPSBuZXcgTGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuUmVzaWduYXRpb25Ob3RpZmljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24gPSBuZXcgTGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuUmVzaWduYXRpb25BcHByb3ZhbE5vdGlmaWNhdGlvbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbiA9IG5ldyBMZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24pKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5SZXNpZ25hdGlvblJlamVjdGlvbk5vdGlmaWNhdGlvbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbiA9IG5ldyBMZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24pKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5BdXRvVGltZVNoZWV0U3VibWlzc2lvbk5vdGlmaWNhdGlvbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbiA9IG5ldyBMZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24pKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5Qcm9iYXRpb25Bc3NpZ25Ob3RpZmljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24gPSBuZXcgTGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuUmV2aWV3QXNzaWduVG9FbXBsb3llZU5vdGlmaWNhdGlvbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbiA9IG5ldyBMZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24pKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5SZXZpZXdTdWJtaXR0ZWRCeUVtcGxveWVlTm90aWZpY2F0aW9uLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uID0gbmV3IExlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQobGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlJldmlld0ludml0YXRpb25Ob3RpZmljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24gPSBuZXcgTGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuUGVyZm9ybWFuY2VSZXZpZXdTdWJtaXR0ZWRCeUVtcGxveWVlTm90aWZpY2F0aW9uLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uID0gbmV3IExlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQobGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlBlcmZvcm1hbmNlUmV2aWV3SW52aXRhdGlvbk5vdGlmaWNhdGlvbk1vZGVsLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uID0gbmV3IExlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQobGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlBlcmZvcm1hbmNlUmV2aWV3QXNzaWduVG9FbXBsb3llZU5vdGlmaWNhdGlvbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbiA9IG5ldyBMZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24pKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5QdXJjaGFzZVNoaXBtZW50Tm90aWZpY2F0aW9uSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHB1cmNoYXNlRXhlY3V0aW9uTm90aWZpY2F0aW9uID0gbmV3IExlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgcHVyY2hhc2VFeGVjdXRpb25Ob3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgcHVyY2hhc2VFeGVjdXRpb25Ob3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLkVkaXRQdXJjaGFzZUV4ZWN1dGlvbjtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQocHVyY2hhc2VFeGVjdXRpb25Ob3RpZmljYXRpb24pKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBUT0RPOiBTZW5kIHRoZXNlIGVycm9ycyBvbnRvIHNlcnZlciBmb3IgZnVydGhlciBwcm9jZXNzaW5nXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRm91bmQgdW5kZXRlY3RlZCBub3RpZmljYXRpb24gdHlwZS4gXCIgKyBtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIC8vIEFkZCBvdGhlciBub3RpZmljYXRpb25zIGhlcmUuXHJcblxyXG4gICAgICB9IGNhdGNoIChleGNlcHRpb24pIHtcclxuICAgICAgICAvLyBUT0RPOiBTZW5kIHRoZXNlIGV4Y2VwdGlvbnMgb250byBzZXJ2ZXIgZm9yIGZ1cnRoZXIgcHJvY2Vzc2luZ1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiRXhjZXB0aW9uIE9jY3VyZWRcIiArIGV4Y2VwdGlvbi5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHN0YXR1c09mVXNlciA9IChwcmVzZW5jZUV2ZW50KSA9PiB7XHJcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFByZXNlbmNlRXZlbnRUcmlnZ2VyZWQocHJlc2VuY2VFdmVudCkpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdHlwaW5nU3RhdHVzID0gKHNpZ25hbEV2ZW50KSA9PiB7XHJcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJlY2VpdmVTaWduYWxUcmlnZ2VyZWQoc2lnbmFsRXZlbnQpKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2hhdFNlcnZpY2UuZ2V0UHVibnViS2V5cygpLnN1YnNjcmliZSgoa2V5czogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMucHVibnViLmluaXQoe1xyXG4gICAgICAgIHB1Ymxpc2hLZXk6IGtleXMuZGF0YS5wdWJsaXNoS2V5LFxyXG4gICAgICAgIHN1YnNjcmliZUtleToga2V5cy5kYXRhLnN1YnNjcmliZUtleSxcclxuICAgICAgICB1dWlkOiB0aGlzLmxvZ0luVXNlcklkXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuY2hhdFNlcnZpY2UuZ2V0QWxsVXNlcnNGb3JTbGFja0FwcCgpLnN1YnNjcmliZSgoY29sbGVhZ3VlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb2xsZWFndWVzTGlzdCA9IGNvbGxlYWd1ZXMuZGF0YTtcclxuICAgICAgICB0aGlzLmNoYXRTZXJ2aWNlLmdldFVzZXJDaGFubmVscygpLnN1YnNjcmliZSgoY2hhbm5lbHM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jaGFubmVsTGlzdCA9IGNoYW5uZWxzLmRhdGE7XHJcbiAgICAgICAgICB0aGlzLnNpZ25PdXRVc2VyQ2hhbm5lbHMoKTtcclxuICAgICAgICAgIHZhciBsb2dpbkNvbXBhbnlJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDb21wYW55SWRcIik7XHJcbiAgICAgICAgICBpZiAodGhpcy5jaGFubmVsTGlzdCAhPSB1bmRlZmluZWQgfHwgdGhpcy5jaGFubmVsTGlzdCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGluZGV4MSA9IDA7IGluZGV4MSA8IHRoaXMuY2hhbm5lbExpc3QubGVuZ3RoOyBpbmRleDErKykge1xyXG4gICAgICAgICAgICAgIHRoaXMucHVibnViLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICBjaGFubmVsczogWyhsb2dpbkNvbXBhbnlJZCArICctJyArIHRoaXMuY2hhbm5lbExpc3RbaW5kZXgxXS5pZCldXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucHVibnViLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIGNoYW5uZWxzOiBbKCdDaGFubmVsVXBkYXRlcy0nICsgbG9naW5Db21wYW55SWQpXVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnB1Ym51Yi5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBjaGFubmVsczogWygnVXNlclVwZGF0ZXMtJyArIGxvZ2luQ29tcGFueUlkKV1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdmFyIGluZGV4MTIgPSB0aGlzLmNvbGxlYWd1ZXNMaXN0LmZpbmRJbmRleCh4ID0+IHgudXNlcklkID09IHRoaXMubG9nSW5Vc2VySWQpO1xyXG4gICAgICAgICAgaWYgKGluZGV4MTIgPiAtMSkge1xyXG4gICAgICAgICAgICB2YXIgbmFtZSA9IHRoaXMuY29sbGVhZ3Vlc0xpc3RbaW5kZXgxMl0uZnVsbE5hbWU7XHJcbiAgICAgICAgICAgIG5hbWUgPSBuYW1lLnRyaW0oKTtcclxuICAgICAgICAgICAgbmFtZSA9IHRoaXMucmVwbGFjZUFsbChuYW1lLCBcIiBcIiwgXCJcIilcclxuICAgICAgICAgICAgdGhpcy5sb2dpblVzZXJjaGFubmVsTmFtZSA9IChuYW1lICsgJy0nICsgdGhpcy5sb2dJblVzZXJJZCk7XHJcbiAgICAgICAgICAgIHRoaXMucHVibnViLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgY2hhbm5lbHM6IFt0aGlzLmxvZ2luVXNlcmNoYW5uZWxOYW1lXVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLnB1Ym51Yi5hZGRMaXN0ZW5lcih7XHJcbiAgICAgICAgc3RhdHVzOiBzdCA9PiB7XHJcbiAgICAgICAgICBpZiAoc3QuY2F0ZWdvcnkgPT09IFwiUE5Vbmtub3duQ2F0ZWdvcnlcIikge1xyXG4gICAgICAgICAgICB2YXIgbmV3U3RhdGUgPSB7XHJcbiAgICAgICAgICAgICAgbmV3OiBcImVycm9yXCJcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy5wdWJudWIuc2V0U3RhdGUoXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgc3RhdGU6IG5ld1N0YXRlXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vIGZ1bmN0aW9uIChzdGF0dXMpIHtcclxuICAgICAgICAgICAgICAvLyAgIGNvbnNvbGUubG9nKHN0LmVycm9yRGF0YS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBzaWduYWw6IHNpZ25hbEV2ZW50ID0+IHtcclxuICAgICAgICAgIHR5cGluZ1N0YXR1cyhzaWduYWxFdmVudClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHByZXNlbmNlOiBwcmVzZW5jZUV2ZW50ID0+IHtcclxuICAgICAgICAgIHN0YXR1c09mVXNlcihwcmVzZW5jZUV2ZW50KVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliZWQgdG8gXCIgKyBtZXNzYWdlKTtcclxuICAgICAgICAgIHN0b3JlTGlzdG5lcihtZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGFzeW5jIHNpZ25PdXRVc2VyQ2hhbm5lbHMoKSB7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbdGhpcy5sb2dpblVzZXJjaGFubmVsTmFtZV0gfSk7XHJcbiAgICB2YXIgbG9naW5Db21wYW55SWQgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KFwiQ29tcGFueUlkXCIpO1xyXG4gICAgaWYgKHRoaXMuY2hhbm5lbExpc3QgIT0gdW5kZWZpbmVkIHx8IHRoaXMuY2hhbm5lbExpc3QgIT0gbnVsbCkge1xyXG4gICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5jaGFubmVsTGlzdC5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBjaGFubmVsczogWyhsb2dpbkNvbXBhbnlJZCArICctJyArIHRoaXMuY2hhbm5lbExpc3RbaW5kZXhdLmlkKV1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoe1xyXG4gICAgICBjaGFubmVsczogWygnQ2hhbm5lbFVwZGF0ZXMtJyArIGxvZ2luQ29tcGFueUlkKV1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoe1xyXG4gICAgICBjaGFubmVsczogWygnVXNlclVwZGF0ZXMtJyArIGxvZ2luQ29tcGFueUlkKV1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc3ViU2NyaWJpbmdUb1ByZXNlbmNlQ2hhbm5lbCgpIHtcclxuICAgIHZhciBsb2dpbkNvbXBhbnlJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDb21wYW55SWRcIik7XHJcbiAgICB2YXIgcHJlc2VuY2VDaGFubmVsID0gXCJNZXNzZW5nZXJQcmVzZW5jZS1cIiArIGxvZ2luQ29tcGFueUlkO1xyXG4gICAgYXdhaXQgdGhpcy5wdWJudWIuc3Vic2NyaWJlKHtcclxuICAgICAgY2hhbm5lbHM6IFtwcmVzZW5jZUNoYW5uZWxdLFxyXG4gICAgICB3aXRoUHJlc2VuY2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgdGhpcy5wdWJudWIuaGVyZU5vdyh7XHJcbiAgICAgIGNoYW5uZWxzOiBbcHJlc2VuY2VDaGFubmVsXSxcclxuICAgICAgaW5jbHVkZVVVSURzOiB0cnVlLFxyXG4gICAgICBpbmNsdWRlU3RhdGU6IHRydWVcclxuICAgIH0sXHJcbiAgICAgIChzdGF0dXMsIHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgSW5pdGFsU3RhdGVPZlVzZXJzVHJpZ2dlcmVkKHJlc3BvbnNlKSlcclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgfVxyXG4gIHB1Ymxpc2hpbmdNZXNzYWdlKCkge1xyXG4gICAgaWYgKHRoaXMucHVibGlzaGluZ01lc3NhZ2VPZlVzZXIucHVibnViQ2hhbm5lbE5hbWVPZk1lc3NhZ2UubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnB1Ymxpc2hpbmdNZXNzYWdlT2ZVc2VyLnB1Ym51YkNoYW5uZWxOYW1lT2ZNZXNzYWdlLmZvckVhY2goY2hhbm5lbE5hbWUgPT4ge1xyXG4gICAgICAgIHRoaXMucHVibnViLnB1Ymxpc2goe1xyXG4gICAgICAgICAgY2hhbm5lbDogW2NoYW5uZWxOYW1lXSxcclxuICAgICAgICAgIG1lc3NhZ2U6IEpTT04uc3RyaW5naWZ5KHRoaXMucHVibGlzaGluZ01lc3NhZ2VPZlVzZXIpXHJcbiAgICAgICAgfSwgZnVuY3Rpb24gKHN0YXR1cywgcmVzb3Buc2UpIHtcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHN0YXR1cylcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHJlc29wbnNlKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3BlbkFubm91bmNlbWVudERpYWxvZyhhbm5vdW5jZWQpIHtcclxuICAgIHRoaXMuZGlhbG9nLmNsb3NlQWxsKCk7XHJcbiAgICBsZXQgZGlhbG9nSWQgPSBcImFubm91Y2VtZW50LWRpYWxvZ1wiO1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLm9wZW5Bbm5vdWNlbWVudERpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICBtaW5XaWR0aDogXCI2MHZ3XCIsXHJcbiAgICAgIG1heFdpZHRoOiBcIjYwdndcIixcclxuICAgICAgbWluSGVpZ2h0OiBcIjUwdmhcIixcclxuICAgICAgbWF4SGVpZ2h0OiBcIjgwdmhcIixcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICBpZDogZGlhbG9nSWQsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBkaWFsb2dJZDogZGlhbG9nSWQsXHJcbiAgICAgICAgYW5ub3VuY2VtZW50SWQ6IGFubm91bmNlZC5Bbm5vdW5jZW1lbnRJZCxcclxuICAgICAgICBhbm5vdW5jZW1lbnQ6IGFubm91bmNlZC5Bbm5vdW5jZW1lbnQsXHJcbiAgICAgICAgYW5ub3VuY2VkQnk6IGFubm91bmNlZC5Bbm5vdW5jZWRCeSxcclxuICAgICAgICBhbm5vdW5jZWRCeUlkOiBhbm5vdW5jZWQuQW5ub3VuY2VkQnlJZCxcclxuICAgICAgICBhbm5vdW5jZWRCeVVzZXJJbWFnZTogYW5ub3VuY2VkLkFubm91bmNlZEJ5VXNlckltYWdlLFxyXG4gICAgICAgIGFubm91bmNlZE9uOiBhbm5vdW5jZWQuQW5ub3VuY2VkT25cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMubm90aWZpY2F0aW9ucy5maW5kSW5kZXgoKHApID0+IHAubm90aWZpY2F0aW9uSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IHRoaXMuYW5ub3VuY2VOb3RpZmljYXRpb25JZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgIHRoaXMudXBzZXJ0UmVhZE5vdGlmaWNhdGlvbih0aGlzLm5vdGlmaWNhdGlvbnNbaW5kZXhdKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8vIG5vdGlmaWNhdGlvbk9mQ2hhdChtZXNzYWdlRGV0YWlsc09iamVjdCkge1xyXG4gIC8vICAgaWYodGhpcy5wcmV2aW91c01lc3NhZ2UgIT0gbWVzc2FnZURldGFpbHNPYmplY3Qpe1xyXG4gIC8vICAgdGhpcy5tZXNzYWdlc1VucmVhZENvdW50ICs9IDE7XHJcbiAgLy8gICB2YXIgaW1hZ2Vmb3JOb3RpZmljYXRpb246IGFueTtcclxuICAvLyAgIGlmIChtZXNzYWdlRGV0YWlsc09iamVjdC5zZW5kZXJQcm9maWxlSW1hZ2UgPT0gbnVsbCkge1xyXG4gIC8vICAgICBpbWFnZWZvck5vdGlmaWNhdGlvbiA9IFwiaHR0cHM6Ly9wbmdpbWFnZS5uZXQvd3AtY29udGVudC91cGxvYWRzLzIwMTgvMDUvYXZhdGFyLXBuZy1pbWFnZXMtMS5wbmdcIjtcclxuICAvLyAgIH1cclxuICAvLyAgIGVsc2Uge1xyXG4gIC8vICAgICBpbWFnZWZvck5vdGlmaWNhdGlvbiA9IG1lc3NhZ2VEZXRhaWxzT2JqZWN0LnNlbmRlclByb2ZpbGVJbWFnZTtcclxuICAvLyAgIH1cclxuICAvLyAgIGxldCBvcHRpb25zID0ge1xyXG4gIC8vICAgICBib2R5OiBtZXNzYWdlRGV0YWlsc09iamVjdC5ib2R5LFxyXG4gIC8vICAgICBpY29uOiBpbWFnZWZvck5vdGlmaWNhdGlvbixcclxuICAvLyAgICAgZGF0YToge1xyXG4gIC8vICAgICAgIHNlbmRlclVzZXJJZDogbWVzc2FnZURldGFpbHNPYmplY3Quc2VuZGVyVXNlcklkLFxyXG4gIC8vICAgICAgIGNoYW5uZWxJZDogbWVzc2FnZURldGFpbHNPYmplY3QuY2hhbm5lbElkXHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyAgIHRoaXMucHVzaE5vdGlmaWNhdGlvbnMuY3JlYXRlKG1lc3NhZ2VEZXRhaWxzT2JqZWN0LnRpdGxlLCBvcHRpb25zKS5zdWJzY3JpYmUoXHJcbiAgLy8gICAgIHJlcyA9PiB7XHJcbiAgLy8gICAgICAgaWYgKHJlcy5ldmVudC50eXBlID09PSAnY2xpY2snKSB7XHJcbiAgLy8gICAgICAgICB3aW5kb3cuZm9jdXMoKTtcclxuICAvLyAgICAgICAgIGlmICh0aGlzLnJvdXRlci51cmwgIT0gJy9jaGF0Jykge1xyXG4gIC8vICAgICAgICAgICBpZiAocmVzLm5vdGlmaWNhdGlvbi5kYXRhLmNoYW5uZWxJZCAhPSBudWxsICYmIHJlcy5ub3RpZmljYXRpb24uZGF0YS5jaGFubmVsSWQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgLy8gICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DaGF0SWQsIHJlcy5ub3RpZmljYXRpb24uZGF0YS5jaGFubmVsSWQpO1xyXG4gIC8vICAgICAgICAgICB9IGVsc2Uge1xyXG4gIC8vICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ2hhdElkLCByZXMubm90aWZpY2F0aW9uLmRhdGEuc2VuZGVyVXNlcklkKTtcclxuICAvLyAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvY2hhdFwiXSk7XHJcbiAgLy8gICAgICAgICB9XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9LFxyXG4gIC8vICAgICBlcnIgPT4gY29uc29sZS5sb2coZXJyKVxyXG4gIC8vICAgKTtcclxuICAvLyAgIHRoaXMucHJldmlvdXNNZXNzYWdlID0gbWVzc2FnZURldGFpbHNPYmplY3RcclxuICAvLyAgIH1cclxuICAvLyB9XHJcbiAgdXBzZXJ0UmVhZE5vdGlmaWNhdGlvbihzZWxlY3RlZE5vdGlmaWNhdGlvbikge1xyXG4gICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IFtdO1xyXG4gICAgbm90aWZpY2F0aW9ucy5wdXNoKHNlbGVjdGVkTm90aWZpY2F0aW9uKTtcclxuICAgIGNvbnN0IG5vdGlpZmNhdGlvbm1vZGVsID0gSlNPTi5wYXJzZShzZWxlY3RlZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25Kc29uKTtcclxuICAgIGlmIChzZWxlY3RlZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25UeXBlSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09XHJcbiAgICAgIE5vdGlmaWNhdGlvblR5cGVJZHMuTmV3UHJvamVjdENyZWF0ZWROb3RpZmljYXRpb25JZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgfHxcclxuICAgICAgc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLlByb2plY3RNZW1iZXJSb2xlQWRkZWROb3RpZmljYXRpb25JZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wicHJvamVjdHMvcHJvamVjdHN0YXR1cy9cIiArIG5vdGlpZmNhdGlvbm1vZGVsLlByb2plY3RHdWlkICsgXCIvYWN0aXZlLWdvYWxzXCJdKTtcclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLkdvYWxBcHByb3ZlZEZyb21SZXBsYW4udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcInByb2plY3RzL2dvYWwvXCIgKyBub3RpaWZjYXRpb25tb2RlbC5Hb2FsR3VpZF0pO1xyXG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25UeXBlSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09XHJcbiAgICAgIE5vdGlmaWNhdGlvblR5cGVJZHMuTm90aWZpY2F0aW9uX1dvcmtJdGVtQXNzaWduZWRUb1VzZXIudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcInByb2plY3RzL3dvcmtpdGVtL1wiICsgbm90aWlmY2F0aW9ubW9kZWwuVXNlclN0b3J5R3VpZF0pO1xyXG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25UeXBlSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09XHJcbiAgICAgIE5vdGlmaWNhdGlvblR5cGVJZHMuVVNlclN0b3J5VXBkYXRlTm90aWZpY2F0aW9uSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcInByb2plY3RzL3dvcmtpdGVtL1wiICsgbm90aWlmY2F0aW9ubW9kZWwuVXNlclN0b3J5SWRdKTtcclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLlNwcmludFN0YXJ0ZWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcInByb2plY3RzL3NwcmludC9cIiArIG5vdGlpZmNhdGlvbm1vZGVsLlNwcmludEd1aWRdKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5QdXNoTm90aWZpY2F0aW9uRm9yVXNlclN0b3J5Q29tbWVudC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wicHJvamVjdHMvd29ya2l0ZW0vXCIgKyBub3RpaWZjYXRpb25tb2RlbC5Vc2VyU3RvcnlHdWlkXSk7XHJcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5Hb2FsUmVxdWVzdGRGb3JSRXBsYW4udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcInByb2plY3RzL2dvYWwvXCIgKyBub3RpaWZjYXRpb25tb2RlbC5Hb2FsR3VpZF0pO1xyXG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25UeXBlSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09XHJcbiAgICAgIE5vdGlmaWNhdGlvblR5cGVJZHMuU3ByaW50UmVxdWVzdGRGb3JSRXBsYW4udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcInByb2plY3RzL3NwcmludC9cIiArIG5vdGlpZmNhdGlvbm1vZGVsLlNwcmludEd1aWRdKTtcclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLk5vdGlmaWNhdGlvbl9BZGhvY1dvcmtJdGVtQXNzaWduZWRUb1VzZXIudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcImRhc2hib2FyZC9hZGhvYy13b3JraXRlbS9cIiArIG5vdGlpZmNhdGlvbm1vZGVsLlVzZXJTdG9yeUd1aWRdKTtcclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLkFkaG9jVVNlclN0b3J5VXBkYXRlTm90aWZpY2F0aW9uSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcImRhc2hib2FyZC9hZGhvYy13b3JraXRlbS9cIiArIG5vdGlpZmNhdGlvbm1vZGVsLlVzZXJTdG9yeUlkXSk7XHJcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5QdXJjaGFzZVNoaXBtZW50Tm90aWZpY2F0aW9uSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcImNsaWVudC9wdXJjaGFzZS1leGVjdXRpb24vXCIgKyBub3RpaWZjYXRpb25tb2RlbC5QdXJjaGFzZUd1aWRdKTtcclxuICAgIH1cclxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFVwc2VydFVucmVhZE5vdGlmaWNhdGlvbnNUcmlnZ2VyZWQobm90aWZpY2F0aW9ucykpO1xyXG5cclxuXHJcbiAgfVxyXG4gIGxvYWROb3RpZmljYXRpb25zKCkge1xyXG4gICAgY29uc3QgQ3VycmVudFVzZXJJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKTtcclxuICAgIC8vIFN1YnNjcmliZSB0byBUYXNrIEFzc2lnbm1lbnQgTm90aWZpY2FpdG9ucyBoZXJlLlxyXG4gICAgY29uc3QgdGFza0Fzc2lnbm1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfVGFza0Fzc2lnbm1lbnRzICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IHRhc3RhdHVzUmVwb3J0U3VibWlzc2lvbkNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9TdGF0dXNSZXBvcnRTdWJtaXNzaW9uICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IHRhc3RhdHVzQ29uZmlnQXNzaWduQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1N0YXR1c0NvbmZpZ0Fzc2lnbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBtdWx0aUNoYXJ0c1NjaGVkdWxpbmdDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfTXVsdGlDaGFydHNTY2hlZHVsaW5nICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IGFzc2V0c0Fzc2lnbmVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX0Fzc2V0QXNzaWdubWVudCArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBwcm9qZWN0Q3JlYXRlZENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9OZXdQcm9qZWN0ICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IHByb2plY3RBY2Nlc3NUb01lbWJlckNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Qcm9qZWN0TWVtYmVyUm9sZSArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBnb2FsQXBwcm92ZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfR29hbEFwcHJvdmVkRnJvbVJlcGxhbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCB1c2VyU3RvcnlVcGRhdGVDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfVXNlclN0b3J5VXBkYXRlTm90aWZpY2F0aW9uICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IEFubm91bmNlbWVudENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Bbm5vdW5jZW1lbnROb3RpZmljYXRpb24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgUmVtaW5kZXJDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfUmVtaW5kZXJOb3RpZmljYXRpb24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgUGVyZm9ybWFuY2VDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfUGVyb2Zvcm1hbmNlTm90aWZpY2F0aW9uICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IHVzZXJTdG9yeUNvbW1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfVXNlclN0b3J5Q29tbWVudCArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBzcHJpbnRTdGFydGVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1NwcmludFN0YXJ0ZWQgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3Qgc3ByaW50UmVwbGFuQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1NwcmludFJlcXVlc3RlZFRvUmVwbGFuICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IHByb2plY3RGZWF0dXJlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1Byb2plY3RGZWF0dXJlICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IHVzZXJTdG9yeUFyY2hpdmVDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfVXNlclN0b3J5QXJjaGl2ZSArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCB1c2VyU3RvcnlQYXJrQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1VzZXJTdG9yeVBhcmsgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgZ2VuZXJpY0FjdGl2aXR5Tm90aWZpY2F0aW9uQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX0dlbmVyaWNBY3Rpdml0eU5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBwdXJjaGFzZUV4ZWN1dGlvbkFzc2lnbmVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX0dlbmVyaWNBY3Rpdml0eU5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcblxyXG4gICAgdGhpcy5wdWJudWIuc3Vic2NyaWJlKHtcclxuICAgICAgY2hhbm5lbHM6IFt0YXNrQXNzaWdubWVudENoYW5uZWxUb1N1YnNjcmliZUludG8sIHRhc3RhdHVzUmVwb3J0U3VibWlzc2lvbkNoYW5uZWxUb1N1YnNjcmliZUludG8sXHJcbiAgICAgICAgdGFzdGF0dXNDb25maWdBc3NpZ25DaGFubmVsVG9TdWJzY3JpYmVJbnRvLCBtdWx0aUNoYXJ0c1NjaGVkdWxpbmdDaGFubmVsVG9TdWJzY3JpYmVJbnRvLFxyXG4gICAgICAgIGFzc2V0c0Fzc2lnbmVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50bywgcHJvamVjdENyZWF0ZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvLCAsXHJcbiAgICAgICAgcHJvamVjdEFjY2Vzc1RvTWVtYmVyQ2hhbm5lbFRvU3Vic2NyaWJlSW50bywgZ29hbEFwcHJvdmVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50byxcclxuICAgICAgICB1c2VyU3RvcnlVcGRhdGVDaGFubmVsVG9TdWJzY3JpYmVJbnRvLCBBbm5vdW5jZW1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvLCBSZW1pbmRlckNoYW5uZWxUb1N1YnNjcmliZUludG8sXHJcbiAgICAgICAgdXNlclN0b3J5Q29tbWVudENoYW5uZWxUb1N1YnNjcmliZUludG8sIHNwcmludFN0YXJ0ZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvLFxyXG4gICAgICAgIHNwcmludFJlcGxhbkNoYW5uZWxUb1N1YnNjcmliZUludG8sXHJcbiAgICAgICAgUGVyZm9ybWFuY2VDaGFubmVsVG9TdWJzY3JpYmVJbnRvLFxyXG4gICAgICAgIHByb2plY3RGZWF0dXJlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byxcclxuICAgICAgICB1c2VyU3RvcnlBcmNoaXZlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byxcclxuICAgICAgICB1c2VyU3RvcnlQYXJrQ2hhbm5lbFRvU3Vic2NyaWJlSW50bywgZ2VuZXJpY0FjdGl2aXR5Tm90aWZpY2F0aW9uQ2hhbm5lbFRvU3Vic2NyaWJlSW50bywgcHVyY2hhc2VFeGVjdXRpb25Bc3NpZ25lZENoYW5uZWxUb1N1YnNjcmliZUludG9dXHJcbiAgICB9KTtcclxuICAgIHZhciByb2xlVXBkYXRlc0NoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Sb2xlVXBkYXRlcyArIFwiMTlCNkY5RkMtNzM3MC00QjlDLUEwNUMtM0I4RDgxOUVFRUFGXCI7XHJcbiAgICB0aGlzLnB1Ym51Yi5zdWJzY3JpYmUoe1xyXG4gICAgICBjaGFubmVsczogW3JvbGVVcGRhdGVzQ2hhbm5lbFRvU3Vic2NyaWJlSW50b11cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVwbGFjZUFsbChzdHIsIGZpbmQsIHJlcGxhY2UpIHtcclxuICAgIHZhciBlc2NhcGVkRmluZCA9IGZpbmQucmVwbGFjZSgvKFsuKis/Xj0hOiR7fSgpfFxcW1xcXVxcL1xcXFxdKS9nLCBcIlxcXFwkMVwiKTtcclxuICAgIHJldHVybiBzdHIucmVwbGFjZShuZXcgUmVnRXhwKGVzY2FwZWRGaW5kLCAnZycpLCByZXBsYWNlKTtcclxuICB9XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnNpZ25hbHIuZ2V0Tm90aWZpY2F0aW9uc0Zyb21BcGkoKS5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuZ2V0U29mdExhYmVscygpO1xyXG4gICAgaWYgKHRoaXMuY29va2llU2VydmljZS5jaGVjayhMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkRpc3BsYXlXZWxDb21lTm90ZSkgJiYgdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkRpc3BsYXlXZWxDb21lTm90ZSkgPT0gJ3RydWUnKSB7XHJcbiAgICAgIGlmICgobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyTW9kZWwpICE9IG51bGwgJiYgbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyTW9kZWwpICE9IHVuZGVmaW5lZClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy51c2VyRnVsbE5hbWUgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlck1vZGVsKSkuZnVsbE5hbWU7XHJcbiAgICAgIH1cclxuICAgICAgdmFyIGNvdW50ID0gdGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlckxvZ2dlZEluQ291bnQpO1xyXG4gICAgICBpZiAoY291bnQgJiYgdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJMb2dnZWRJbkNvdW50KSAhPSAnbnVsbCdcclxuICAgICAgICAmJiB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlckxvZ2dlZEluQ291bnQpICE9ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgdGhpcy5sb2dnZWRJbkNvdW50ID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJMb2dnZWRJbkNvdW50KTtcclxuICAgICAgICBpZiAodGhpcy5sb2dnZWRJbkNvdW50ID09ICcxJyB8fCB0aGlzLmxvZ2dlZEluQ291bnQgPT0gJzInKSB7XHJcbiAgICAgICAgICB0aGlzLmRpc3BsYXlXZWxjb21lTm90ZSA9IHRydWU7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5V2VsY29tZU5vdGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EaXNwbGF5V2VsQ29tZU5vdGUsICdmYWxzZScsIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICAgICAgICB9LCA4MDAwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBjdXJyZW50Q3VsdHVyZSA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50Q3VsdHVyZSk7XHJcbiAgICBjb25zdCBjb21wYW55bGFuID0gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueURldGFpbHMpKTtcclxuICAgIGxldCBjdXJyZW50Q3VsdHVyZWxhbiA9IGNvbXBhbnlsYW4ubGFuQ29kZTtcclxuXHJcbiAgICBpZiAoY3VycmVudEN1bHR1cmUgPT0gJycgfHwgY3VycmVudEN1bHR1cmUgPT0gbnVsbCB8fCBjdXJyZW50Q3VsdHVyZSA9PSB1bmRlZmluZWQgfHwgY3VycmVudEN1bHR1cmUgPT09ICdudWxsJyB8fCBjdXJyZW50Q3VsdHVyZSA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgaWYgKGN1cnJlbnRDdWx0dXJlbGFuID09ICcnIHx8IGN1cnJlbnRDdWx0dXJlbGFuID09IG51bGwgfHwgY3VycmVudEN1bHR1cmVsYW4gPT0gdW5kZWZpbmVkIHx8IGN1cnJlbnRDdWx0dXJlbGFuID09PSAnbnVsbCcgfHwgY3VycmVudEN1bHR1cmVsYW4gPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgY3VycmVudEN1bHR1cmUgPSAnZW4nO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGN1cnJlbnRDdWx0dXJlID0gY3VycmVudEN1bHR1cmVsYW47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuY3VycmVudExhbmcgPSBjdXJyZW50Q3VsdHVyZTtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB0aGlzLmxvYWRpbmdJblByb2dyZXNzJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuaXNUaW1lU2hlZXRGZXRjaGluZykpO1xyXG4gICAgdGhpcy50aW1lU2hlZXRCdXR0b25EZXRhaWxzJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZ2V0VGltZVNoZXR0QnV0dG9uRGV0YWlscykpO1xyXG4gICAgdGhpcy50aW1lU2hlZXRCdXR0b25EZXRhaWxzJFxyXG4gICAgICAuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgIHRoaXMudGltZXNoZWV0RGlzYWJsZW9yRW5hYmxlID0gZGF0YTtcclxuICAgICAgfSlcclxuICAgIC8vdGhpcy5nZXRUaW1lU2hlZXRCdXR0b25zKCk7XHJcbiAgICAvL3RoaXMuZ2V0VXNlclN0b3JlKCk7XHJcbiAgICB0aGlzLnNob3dUcmFpbFBlcmlvZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5lZ3JldFRoZW1lcyA9IHRoaXMudGhlbWVTZXJ2aWNlLmVncmV0VGhlbWVzO1xyXG4gICAgdGhpcy5sYXlvdXRDb25mID0gdGhpcy5sYXlvdXQubGF5b3V0Q29uZjtcclxuXHJcbiAgICAvLyB0aGlzLnRoZW1lTW9kZWwkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5nZXRUaGVtZU1vZGVsKSk7XHJcbiAgICAvL3RoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IEluaXRpYWxpemVBZnRlckxvZ2luRGF0YSgpKTtcclxuICAgIHRoaXMubG9nZ2VkSW5Vc2VySWQgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudFVzZXJJZCk7XHJcbiAgICB0aGlzLmdldEVtcGxveWVlSWRCeVVzZXJJZCgpO1xyXG4gICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICB0aGlzLmFwcGxpY2F0aW9uVmVyc2lvbiA9IGVudmlyb25tZW50LnZlcnNpb247XHJcbiAgICB0aGlzLm1lbnVUeXBlID0gXCJNYWluXCI7XHJcbiAgICB0aGlzLnNlbGVjdGVkTGFuZ05hbWUgPSB0aGlzLmF2YWlsYWJsZUxhbmdzLmZpbmQoeCA9PiB4LmNvZGUgPT0gdGhpcy5jdXJyZW50TGFuZykubmFtZTtcclxuICAgIHRoaXMudXNlclN0b3JlSWQkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5nZXRVc2VyU3RvcmVJZCkpO1xyXG4gICAgdGhpcy51c2VyU3RvcmVJZCQuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgIHRoaXMudXNlclN0b3JlSWQgPSByZXN1bHQ7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgc2hvd0hpZGVEZWxldGVCdXR0b24oZGF0YSkge1xyXG4gICAgdGhpcy5zaG93RGVsZXRlSWNvbiA9IGRhdGEuaXNEZW1vRGF0YUNsZWFyZWQgPyBmYWxzZSA6IGRhdGEuaXNUb1Nob3dEZWxldGVJY29uO1xyXG4gIH1cclxuXHJcbiAgbW9uaXRvckNvbXBhbnlyZWxhdGVkRGV0YWlscyh1c2VyKSB7XHJcbiAgICB0aGlzLmF1dGhlbnRpY2F0ZWRVc2VyUmVjb3JkID0gdXNlcjtcclxuICAgIHRoaXMuc2hvd0hpZGVEZWxldGVCdXR0b24odXNlcik7XHJcbiAgICB0aGlzLmNvbXBhbmllc0xpc3QgPSB1c2VyLmNvbXBhbmllc0xpc3Q7XHJcbiAgICB0aGlzLmdldENvbXBhbnlEZXRhaWxzKHVzZXIuY29tcGFueUlkKTtcclxuICAgIHZhciBjb21wYW55ID0gdGhpcy5jb21wYW5pZXNMaXN0LmZpbHRlcih4ID0+IHguY29tcGFueUlkLnRvTG93ZXJDYXNlKCkgPT0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlJZCkudG9Mb3dlckNhc2UoKSlcclxuICAgIHRoaXMuc2VsZWN0ZWRDb21wYW55ID0gY29tcGFueSA/IGNvbXBhbnlbMF0gOiBudWxsO1xyXG4gICAgdGhpcy5zZWxlY3RlZENvbXBhbnlOYW1lID0gY29tcGFueSA/IGNvbXBhbnlbMF0gPyBjb21wYW55WzBdLmNvbXBhbnlOYW1lIDogbnVsbCA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvRGFzaGJvYXJkcygpIHtcclxuICAgIGNvbnN0IHVzZXJSZWZlcmVuY2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJSZWZlcmVuY2VJZCk7XHJcbiAgICB0aGlzLmRlZmF1bHREYXNoYm9hcmRJZCA9IHRoaXMuY29va2llU2VydmljZS5jaGVjayhMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkRlZmF1bHREYXNoYm9hcmQpID8gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGVmYXVsdERhc2hib2FyZCkpIDogbnVsbDtcclxuICAgIGlmICh0aGlzLmRlZmF1bHREYXNoYm9hcmRJZCAmJiB1c2VyUmVmZXJlbmNlICE9IFwibnVsbFwiICYmIHVzZXJSZWZlcmVuY2UgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgdGhpcy5kZWZhdWx0RGFzaGJvYXJkSWQgKyBcIi9mb3JtL1wiICsgdXNlclJlZmVyZW5jZSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGVmYXVsdERhc2hib2FyZElkKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvXCIgKyB0aGlzLmRlZmF1bHREYXNoYm9hcmRJZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc09wZW5lZChldmVudCkge1xyXG4gICAgdGhpcy5vcGVuZWQuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBnZXRTb2Z0TGFiZWxzKCkge1xyXG4gICAgdGhpcy5zb2Z0TGFiZWxzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnU29mdExhYmVscycpKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uU2lnbm91dCgpIHtcclxuICAgIHRoaXMucmVsb2FkID0gZmFsc2U7XHJcbiAgICBjb25zdCBDdXJyZW50VXNlcklkID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpO1xyXG4gICAgY29uc3QgdGFza0Fzc2lnbm1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfVGFza0Fzc2lnbm1lbnRzXHJcbiAgICAgICsgdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpO1xyXG4gICAgY29uc3QgdGFzdGF0dXNSZXBvcnRTdWJtaXNzaW9uQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1N0YXR1c1JlcG9ydFN1Ym1pc3Npb25cclxuICAgICAgKyB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudFVzZXJJZCk7XHJcbiAgICBjb25zdCB0YXN0YXR1c0NvbmZpZ0Fzc2lnbkNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9TdGF0dXNDb25maWdBc3NpZ25cclxuICAgICAgKyB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudFVzZXJJZCk7XHJcbiAgICBjb25zdCBtdWx0aUNoYXJ0c1NjaGVkdWxpbmdDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfTXVsdGlDaGFydHNTY2hlZHVsaW5nICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IGFzc2V0c0Fzc2lnbmVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX0Fzc2V0QXNzaWdubWVudCArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBwcm9qZWN0Q3JlYXRlZENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9OZXdQcm9qZWN0ICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IHByb2plY3RBY2Nlc3NUb01lbWJlckNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Qcm9qZWN0TWVtYmVyUm9sZSArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBnb2FsQXBwcm92ZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfR29hbEFwcHJvdmVkRnJvbVJlcGxhbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCB1c2VyU3RvcnlVcGRhdGVDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfVXNlclN0b3J5VXBkYXRlTm90aWZpY2F0aW9uICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IEFubm91bmNlbWVudENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Bbm5vdW5jZW1lbnROb3RpZmljYXRpb24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgdXNlclN0b3J5Q29tbWVudENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Vc2VyU3RvcnlDb21tZW50ICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IHNwcmludFN0YXJ0ZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfU3ByaW50U3RhcnRlZCArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBzcHJpbnRSZXBsYW5DaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfU3ByaW50UmVxdWVzdGVkVG9SZXBsYW4gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgUGVyZm9ybWFuY2VDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfUGVyb2Zvcm1hbmNlTm90aWZpY2F0aW9uICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IFJlbWluZGVyQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1JlbWluZGVyTm90aWZpY2F0aW9uICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IHByb2plY3RGZWF0dXJlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1Byb2plY3RGZWF0dXJlICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IHVzZXJTdG9yeUFyY2hpdmVDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfVXNlclN0b3J5QXJjaGl2ZSArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCB1c2VyU3RvcnlQYXJrQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1VzZXJTdG9yeVBhcmsgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgZ2VuZXJpY0FjdGl2aXR5Tm90aWZpY2F0aW9uQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX0dlbmVyaWNBY3Rpdml0eU5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBwdXJjaGFzZUV4ZWN1dGlvbkFzc2lnbmVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1B1cmNoYXNlRXhlY3V0aW9uQXNzaWduVG9FbXBsb3llZU5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcblxyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW3Rhc2tBc3NpZ25tZW50Q2hhbm5lbFRvU3Vic2NyaWJlSW50b10gfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbdGFzdGF0dXNSZXBvcnRTdWJtaXNzaW9uQ2hhbm5lbFRvU3Vic2NyaWJlSW50b10gfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbdGFzdGF0dXNDb25maWdBc3NpZ25DaGFubmVsVG9TdWJzY3JpYmVJbnRvXSB9KTtcclxuICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHsgY2hhbm5lbHM6IFttdWx0aUNoYXJ0c1NjaGVkdWxpbmdDaGFubmVsVG9TdWJzY3JpYmVJbnRvXSB9KTtcclxuICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHsgY2hhbm5lbHM6IFthc3NldHNBc3NpZ25lZENoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW3Byb2plY3RDcmVhdGVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50b10gfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbcHJvamVjdEFjY2Vzc1RvTWVtYmVyQ2hhbm5lbFRvU3Vic2NyaWJlSW50b10gfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbZ29hbEFwcHJvdmVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50b10gfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbdXNlclN0b3J5VXBkYXRlQ2hhbm5lbFRvU3Vic2NyaWJlSW50b10gfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbQW5ub3VuY2VtZW50Q2hhbm5lbFRvU3Vic2NyaWJlSW50b10gfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbdXNlclN0b3J5Q29tbWVudENoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW3NwcmludFN0YXJ0ZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvXSB9KTtcclxuICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHsgY2hhbm5lbHM6IFtzcHJpbnRSZXBsYW5DaGFubmVsVG9TdWJzY3JpYmVJbnRvXSB9KTtcclxuICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHsgY2hhbm5lbHM6IFtQZXJmb3JtYW5jZUNoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW1JlbWluZGVyQ2hhbm5lbFRvU3Vic2NyaWJlSW50b10gfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbcHJvamVjdEZlYXR1cmVDaGFubmVsVG9TdWJzY3JpYmVJbnRvXSB9KTtcclxuICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHsgY2hhbm5lbHM6IFt1c2VyU3RvcnlBcmNoaXZlQ2hhbm5lbFRvU3Vic2NyaWJlSW50b10gfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbdXNlclN0b3J5UGFya0NoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW3B1cmNoYXNlRXhlY3V0aW9uQXNzaWduZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvXSB9KTtcclxuICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHsgY2hhbm5lbHM6IFt0aGlzLmxvZ2luVXNlcmNoYW5uZWxOYW1lXSB9KTtcclxuICAgIC8vIHZhciBsb2dpbkNvbXBhbnlJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDb21wYW55SWRcIik7XHJcbiAgICAvLyB2YXIgcHJlc2VuY2VDaGFubmVsID0gXCJNZXNzZW5nZXJQcmVzZW5jZS1cIiArIGxvZ2luQ29tcGFueUlkO1xyXG4gICAgLy8gdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoe1xyXG4gICAgLy8gICBjaGFubmVsczogW3ByZXNlbmNlQ2hhbm5lbF0sXHJcbiAgICAvLyB9KTtcclxuICAgIC8vIGlmICh0aGlzLmNoYW5uZWxMaXN0ICE9IHVuZGVmaW5lZCB8fCB0aGlzLmNoYW5uZWxMaXN0ICE9IG51bGwpIHtcclxuICAgIC8vICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuY2hhbm5lbExpc3QubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAvLyAgICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoe1xyXG4gICAgLy8gICAgICAgY2hhbm5lbHM6IFsobG9naW5Db21wYW55SWQgKyAnLScgKyB0aGlzLmNoYW5uZWxMaXN0W2luZGV4XS5pZCldXHJcbiAgICAvLyAgICAgfSk7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuICAgIC8vIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHtcclxuICAgIC8vICAgY2hhbm5lbHM6IFsoJ0NoYW5uZWxVcGRhdGVzLScgKyBsb2dpbkNvbXBhbnlJZCldXHJcbiAgICAvLyB9KTtcclxuICAgIC8vIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHtcclxuICAgIC8vICAgY2hhbm5lbHM6IFsoJ1VzZXJVcGRhdGVzLScgKyBsb2dpbkNvbXBhbnlJZCldXHJcbiAgICAvLyB9KTtcclxuICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHsgY2hhbm5lbHM6IFtnZW5lcmljQWN0aXZpdHlOb3RpZmljYXRpb25DaGFubmVsVG9TdWJzY3JpYmVJbnRvXSB9KTtcclxuICAgIC8vIHRoaXMucHVibnViLnVuc3Vic2NyaWJlQWxsKCk7XHJcbiAgICAvLyB0aGlzLnB1Ym51Yi5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcclxuICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xyXG4gICAgbGV0IGNvbXBhbnlOYW1lID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlEZXRhaWxzKTtcclxuICAgIGxldCBjb21wYW55SWQgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueUlkKTtcclxuXHJcbiAgICBsZXQgY29tcGFueURldGFpbHMgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueURldGFpbHMpO1xyXG4gICAgbGV0IGNvbXBhbnlUaGVtZSA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55VGhlbWUpO1xyXG4gICAgbGV0IFVzZXJMb2dnZWRJbkNvdW50ID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJMb2dnZWRJbkNvdW50KTtcclxuICAgIGxldCBjdXJyZW50Q3VsdHVyZSA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50Q3VsdHVyZSk7XHJcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2UuZGVsZXRlQWxsKGVudmlyb25tZW50LmNvb2tpZVBhdGgpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLmRlbGV0ZShcInNlbGVjdGVkUHJvamVjdHNUYWJcIik7XHJcblxyXG5cclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyTG9nZ2VkSW5Db3VudCwgVXNlckxvZ2dlZEluQ291bnQsIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudEN1bHR1cmUsIGN1cnJlbnRDdWx0dXJlLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VyLCBudWxsLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQsIG51bGwsIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU5hbWUsIGNvbXBhbnlOYW1lLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlJZCwgY29tcGFueUlkLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkRlZmF1bHREYXNoYm9hcmQsIG51bGwsIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueURldGFpbHMsIGNvbXBhbnlEZXRhaWxzLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlUaGVtZSwgY29tcGFueVRoZW1lLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlNlYXJjaENsaWNrLCBudWxsLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJNb2RlbCwgbnVsbCwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbmFibGVUZWFtRGFzaGJvYXJkLCBudWxsLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EYXNoYm9hcmRzLCBudWxsKTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlclJlZmVyZW5jZUlkLCBudWxsKTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuUm9sZUZlYXR1cmVzLCBudWxsKTtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlclJvbGVGZWF0dXJlcyk7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlJlZGlyZWN0aW9uVXJsKTtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuU2lkZUJhck1lbnVJdGVtcyk7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkludHJvTW9kdWxlcyk7XHJcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQWRkT3JFZGl0Q3VzdG9tQXBwSXNSZXF1aXJlZCwgbnVsbCwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuXHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvc2Vzc2lvbnMvc2lnbmluXCJdKTtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHNldExhbmcoKSB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS51c2UodGhpcy5jdXJyZW50TGFuZyk7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSk7XHJcbiAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50Q3VsdHVyZSwgdGhpcy5jdXJyZW50TGFuZywgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRMYW5nTmFtZSA9IHRoaXMuYXZhaWxhYmxlTGFuZ3MuZmluZCh4ID0+IHguY29kZSA9PSB0aGlzLmN1cnJlbnRMYW5nKS5uYW1lO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlVGhlbWUodGhlbWUpIHtcclxuICAgIHRoaXMudGhlbWVTZXJ2aWNlLmNoYW5nZVRoZW1lKHRoZW1lKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZU5vdGlmaWMoKSB7XHJcbiAgICAvLyB0aGlzLmdldFVucmVhZE5vdGlmaWNhdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZVJlY29yZGluZygpIHtcclxuICAgIC8vdGhpcy5nZXRBY3RUcmFja2VyUmVjb3JkZXIoKTtcclxuICAgIHZhciB1c2VyID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJNb2RlbCkpO1xyXG4gICAgaWYgKHVzZXIgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLm1vbml0b3JDb21wYW55cmVsYXRlZERldGFpbHModXNlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXROb3RpZmljYXRpb25zKCkge1xyXG4gICAgY29uc3Qgbm90aWZpY2F0aW9uU2VhcmNoTW9kZWwgPSBuZXcgQXBwTm90aWZpY2F0aW9uKCk7XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBDbGVhckFsbFVucmVhZE5vdGlmaWNhdGlvbnNUcmlnZ2VyZWQobm90aWZpY2F0aW9uU2VhcmNoTW9kZWwpKTtcclxuICAgIHRoaXMudW5yZWFkQ291bnRPZk5vdGlmaWNhdGlvbnMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5nZXROb3RpZmljYXRpb25VbnJlYWRUb3RhbCkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VW5yZWFkTm90aWZpY2F0aW9ucygpIHtcclxuICAgIGNvbnN0IG5vdGlmaWNhdGlvblNlYXJjaE1vZGVsID0gbmV3IEFwcE5vdGlmaWNhdGlvbigpO1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgQ2xlYXJVbnJlYWROb3RpZmljYXRpb25zVHJpZ2dlcmVkKG5vdGlmaWNhdGlvblNlYXJjaE1vZGVsKSk7XHJcbiAgICB0aGlzLnVucmVhZENvdW50T2ZOb3RpZmljYXRpb25zJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZ2V0Tm90aWZpY2F0aW9uVW5yZWFkVG90YWwpKTtcclxuICB9XHJcblxyXG4gIGdldEFjdFRyYWNrZXJSZWNvcmRlcigpIHtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZS5nZXRBY3RUcmFja2VyUmVjb3JkZXIoKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuICAgICAgICB0aGlzLmlzUmVjb3JkaW5nID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjbGVhckRlbW9EYXRhKCkge1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgaGVpZ2h0OiBcIjMwJVwiLFxyXG4gICAgICB3aWR0aDogXCIzMCVcIixcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIGRpcmVjdGlvbjogXCJsdHJcIixcclxuICAgICAgZGF0YToge30sXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIlRoZSBkaWFsb2cgd2FzIGNsb3NlZFwiKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIGV4cG9ydENvbmZpZ3VyYXRpb25EaWFsb2dEYXRhKCkge1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihFeHBvcnRDb25maWd1cmF0aW9uRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIGhlaWdodDogXCI0NSVcIixcclxuICAgICAgd2lkdGg6IFwiNDAlXCIsXHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICBkaXJlY3Rpb246IFwibHRyXCIsXHJcbiAgICAgIGRhdGE6IHt9LFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coXCJUaGUgZGlhbG9nIHdhcyBjbG9zZWRcIik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZVNpZGVuYXYoKSB7XHJcbiAgICBpZiAodGhpcy5sYXlvdXRDb25mLnNpZGViYXJTdHlsZSA9PT0gXCJjbG9zZWRcIikge1xyXG4gICAgICByZXR1cm4gdGhpcy5sYXlvdXQucHVibGlzaExheW91dENoYW5nZSh7XHJcbiAgICAgICAgc2lkZWJhclN0eWxlOiBcImZ1bGxcIlxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMubGF5b3V0LnB1Ymxpc2hMYXlvdXRDaGFuZ2Uoe1xyXG4gICAgICBzaWRlYmFyU3R5bGU6IFwiY2xvc2VkXCJcclxuICAgIH0pO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7IHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudChcInJlc2l6ZVwiKSk7IH0sIDI1MCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVDb2xsYXBzZSgpIHtcclxuICAgIC8vIGNvbXBhY3QgLS0+IGZ1bGxcclxuICAgIGlmICh0aGlzLmxheW91dENvbmYuc2lkZWJhclN0eWxlID09PSBcImNvbXBhY3RcIikge1xyXG4gICAgICByZXR1cm4gdGhpcy5sYXlvdXQucHVibGlzaExheW91dENoYW5nZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICBzaWRlYmFyU3R5bGU6IFwiZnVsbFwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7IHRyYW5zaXRpb25DbGFzczogdHJ1ZSB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gKiAtLT4gY29tcGFjdFxyXG4gICAgdGhpcy5sYXlvdXQucHVibGlzaExheW91dENoYW5nZShcclxuICAgICAge1xyXG4gICAgICAgIHNpZGViYXJTdHlsZTogXCJjb21wYWN0XCJcclxuICAgICAgfSxcclxuICAgICAgeyB0cmFuc2l0aW9uQ2xhc3M6IHRydWUgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRUaW1lU2hlZXRCdXR0b25zKCkge1xyXG4gICAgLy90aGlzLmxvYWRpbmdJblByb2dyZXNzID0gdHJ1ZTtcclxuICAgIC8vIHRoaXMuY29tbW9uU2VydmljZS5nZXRUaW1lU2hlZXRFbmFibGVkSW5mb3JtYXRpb24oKS5waXBlKHRha2VVbnRpbCh0aGlzLm5nRGVzdHJveWVkJCkpXHJcbiAgICAvLyAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgLy8gICAgIGlmIChkYXRhID09PSBcIlwiIHx8IGRhdGEgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgLy8gICAgICAgcmV0dXJuO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICB0aGlzLnRpbWVzaGVldERpc2FibGVvckVuYWJsZSA9IEpTT04ucGFyc2UoZGF0YSk7XHJcbiAgICAvLyAgICAgdGhpcy5sb2FkaW5nSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgLy8gICB9KTtcclxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IEZldGNoVGltZVNoZWV0QnV0dG9uRGV0YWlscygpKTtcclxuICB9XHJcblxyXG4gIGNsb3NlRmVlZFRpbWVTaGVldCgpIHtcclxuICAgIHRoaXMuZmVlZFRpbWVTaGVldFBvcG92ZXIuY2xvc2UoKTtcclxuICAgIHRoaXMuaXNGZWVkVGltZVNoZWV0ID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvcGVuVGltZVNoZWV0KCkge1xyXG4gICAgY29uc3QgcHJvamVjdERpYWxvZyA9IHRoaXMuZGlhbG9nLm9wZW4oRmVlZFRpbWVEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgbWluV2lkdGg6ICczMHZ3JyxcclxuICAgICAgaGVpZ2h0OiAnMzV2aCcsXHJcbiAgICAgIGRhdGE6ICF0aGlzLmlzRmVlZFRpbWVTaGVldFxyXG4gICAgICAvL2Rpc2FibGVDbG9zZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICBwcm9qZWN0RGlhbG9nLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5jbG9zZUZlZWRUaW1lU2hlZXQoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5nZXRUaW1lU2hlZXRCdXR0b25zKCk7XHJcbiAgICAvLyB0aGlzLmlzRmVlZFRpbWVTaGVldCA9ICF0aGlzLmlzRmVlZFRpbWVTaGVldDtcclxuICB9XHJcblxyXG4gIC8vIGdldEFsbE1lbnVJdGVtcygpIHtcclxuICAvLyAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IEdldEFsbE1lbnVJdGVtc1RyaWdnZXJlZChNZW51Q2F0ZWdvcmllcy5NYWluKSk7XHJcbiAgLy8gfVxyXG5cclxuICBjaGFuZ2VNZW51VHlwZSh0eXBlKSB7XHJcbiAgICB0aGlzLm1lbnVUeXBlID0gdHlwZTtcclxuICB9XHJcblxyXG4gIG9wZW5GZWVkQmFja0RpYWxvZygpIHtcclxuICAgIHRoaXMuaXNGZWVkQmFja0RpYWxvZyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBjbG9zZUZlZWRCYWNrbG9nRGlhbG9nKCkge1xyXG4gICAgdGhpcy5pc0ZlZWRCYWNrRGlhbG9nID0gZmFsc2U7XHJcbiAgICB0aGlzLmZlZWRCYWNrUG9wT3Zlci5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29tcGFueURldGFpbHMoY29tcGFueUlkOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55RGV0YWlscykgJiYgdGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueUlkKSkge1xyXG4gICAgICB0aGlzLmNvbXBhbnkgPSBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55RGV0YWlscykpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmNvbXBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlLmdldENvbXBhbnlCeUlkKGNvbXBhbnlJZCkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb21wYW55ID0gcmVzcG9uc2UuZGF0YTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29tcGFueS5pc1JlbW90ZUFjY2VzcyA9PSAxICYmIHRoaXMuY29tcGFueS50cmFpbERheXMgPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dUcmFpbFBlcmlvZCA9IHRydWU7XHJcbiAgICAgICAgICAvLyB0aGlzLm5vT2ZEYXlzPXRoaXMuY29tcGFueS5ub09mRGF5cztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuY29tcGFueS5pc0RlbW9EYXRhID09IHRydWUpIHtcclxuICAgICAgICAgIHRoaXMuc2hvd0RlbGV0ZSA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2hvd0RlbGV0ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5jb21wYW55LmlzRGVtb0RhdGEgPT0gZmFsc2UgfHwgdGhpcy5jb21wYW55LmlzRGVtb0RhdGEgPT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5zaG93RGVsZXRlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmNvbXBhbnkgIT0gbnVsbCAmJiB0aGlzLmNvbXBhbnkgIT0gdW5kZWZpbmVkICYmIHRoaXMuY29tcGFueS5pbmR1c3RyeUlkLnRvVXBwZXJDYXNlKCkgPT0gJzc0OTlGNUUzLTBFRjItNDA0NC1CODQwLTI0MTFCNjgzMDJGOScpXHJcbiAgICAgICAgICB0aGlzLmlzU3RvcmVBY2Nlc3MgPSBmYWxzZTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLmlzU3RvcmVBY2Nlc3MgPSB0cnVlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5jb21wYW55LmlzUmVtb3RlQWNjZXNzID09IDEgJiYgdGhpcy5jb21wYW55LnRyYWlsRGF5cyA+IDApIHtcclxuICAgICAgICB0aGlzLnNob3dUcmFpbFBlcmlvZCA9IHRydWU7XHJcbiAgICAgICAgLy8gdGhpcy5ub09mRGF5cz10aGlzLmNvbXBhbnkubm9PZkRheXM7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuY29tcGFueS5pc0RlbW9EYXRhID09IHRydWUpIHtcclxuICAgICAgICB0aGlzLnNob3dEZWxldGUgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNvbXBhbnkuaXNEZW1vRGF0YSA9PSBmYWxzZSB8fCB0aGlzLmNvbXBhbnkuaXNEZW1vRGF0YSA9PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5zaG93RGVsZXRlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuY29tcGFueSAhPSBudWxsICYmIHRoaXMuY29tcGFueSAhPSB1bmRlZmluZWQgJiYgdGhpcy5jb21wYW55LmluZHVzdHJ5SWQudG9VcHBlckNhc2UoKSA9PSAnNzQ5OUY1RTMtMEVGMi00MDQ0LUI4NDAtMjQxMUI2ODMwMkY5JylcclxuICAgICAgICB0aGlzLmlzU3RvcmVBY2Nlc3MgPSBmYWxzZTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMuaXNTdG9yZUFjY2VzcyA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyU3RvcmUoKSB7XHJcbiAgICBsZXQgc3RvcmVTZWFyY2hNb2RlbCA9IG5ldyBTdG9yZVNlYXJjaE1vZGVsKCk7XHJcbiAgICBzdG9yZVNlYXJjaE1vZGVsLmlzQXJjaGl2ZWQgPSBmYWxzZTtcclxuICAgIHN0b3JlU2VhcmNoTW9kZWwuaXNEZWZhdWx0ID0gdHJ1ZTtcclxuICAgIHN0b3JlU2VhcmNoTW9kZWwuaXNDb21wYW55ID0gZmFsc2U7XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBHZXRVc2VyU3RvcmVJZFRyaWdnZXJlZChzdG9yZVNlYXJjaE1vZGVsKSk7XHJcbiAgfVxyXG5cclxuICBnb1RvVXNlclN0b3JlKCkge1xyXG4gICAgaWYgKHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKSlcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiZG9jdW1lbnQvc3RvcmVcIiwgdGhpcy51c2VyU3RvcmVJZCwgdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpLnRvTG93ZXJDYXNlKCldKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdEFmdGVybG9naW4oZSkge1xyXG4gICAgdGhpcy5jb21wYW55SWQgPSBlLmNvbXBhbnlJZFxyXG4gICAgdGhpcy5zZWxlY3RlZENvbXBhbnlOYW1lID0gZS5jb21wYW55TmFtZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb21wYW55ID0gZTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHNlbGVjdENvbXBhbnkoZSkge1xyXG4gICAgaWYgKHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55SWQpLnRvTG93ZXJDYXNlKCkgIT0gZS5jb21wYW55SWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHRoaXMucmVsb2FkID0gZmFsc2U7XHJcbiAgICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgICB0aGlzLmNvbXBhbnlJZCA9IGUuY29tcGFueUlkO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29tcGFueU5hbWUgPSBlLmNvbXBhbnlOYW1lO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29tcGFueSA9IGU7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9IG51bGw7XHJcbiAgICAgIHRoaXMubmd4U2VydmljZS5zdGFydCgpO1xyXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmNvbXBhbnlMb2dpbih0aGlzLnNlbGVjdGVkQ29tcGFueSkuc3Vic2NyaWJlKGFzeW5jICh1c2VyVG9rZW46IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICh1c2VyVG9rZW4uc3VjY2Vzcykge1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5vblNpZ25vdXQoKTtcclxuICAgICAgICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xyXG4gICAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VyLCBlLmF1dGhUb2tlbiwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkLCBlLnVzZXJJZCwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlciwgdXNlclRva2VuLmRhdGEuYXV0aFRva2VuLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChcIkRlZmF1bHREYXNoYm9hcmRcIiwgdXNlclRva2VuLmRhdGEuZGVmYXVsdERhc2hib2FyZElkID8gSlNPTi5zdHJpbmdpZnkodXNlclRva2VuLmRhdGEuZGVmYXVsdERhc2hib2FyZElkLndvcmtzcGFjZUlkKSA6IG51bGwsIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KCdDb21wYW55RGV0YWlscycsIEpTT04uc3RyaW5naWZ5KHVzZXJUb2tlbi5kYXRhLmNvbXBhbnlEZXRhaWxzKSk7XHJcbiAgICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KCdDb21wYW5pZXNMaXN0JywgSlNPTi5zdHJpbmdpZnkodXNlclRva2VuLmRhdGEudXNlcnNNb2RlbC5jb21wYW5pZXNMaXN0KSksXHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdSb2xlRmVhdHVyZXMnLCBKU09OLnN0cmluZ2lmeSh1c2VyVG9rZW4uZGF0YS5yb2xlRmVhdHVyZXMpKTtcclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiVXNlck1vZGVsXCIsIEpTT04uc3RyaW5naWZ5KHVzZXJUb2tlbi5kYXRhLnVzZXJzTW9kZWwpKTtcclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdTb2Z0TGFiZWxzJywgSlNPTi5zdHJpbmdpZnkodXNlclRva2VuLmRhdGEuc29mdExhYmVscykpO1xyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJDb21wYW55U2V0dGluZ3NcIiwgSlNPTi5zdHJpbmdpZnkodXNlclRva2VuLmRhdGEuY29tcGFueVNldHRpbmdzKSk7XHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIkZyb21Mb2dJblwiLCBKU09OLnN0cmluZ2lmeSh0cnVlKSk7XHJcbiAgICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU5hbWUsIHVzZXJUb2tlbi5kYXRhLnVzZXJzTW9kZWwuY29tcGFueU5hbWUsIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueUlkLCB1c2VyVG9rZW4uZGF0YS51c2Vyc01vZGVsLmNvbXBhbnlJZCwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgICAgICAgIC8vdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgVXNlckRldGFpbHNGZXRjaGVkQWZ0ZXJDb21wYW55TG9naW4odXNlclRva2VuLmRhdGEudXNlcnNNb2RlbCkpO1xyXG4gICAgICAgICAgdGhpcy5zZXREYWZhdWx0TGFuZ3VhZ2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5uZ3hTZXJ2aWNlLnN0b3AoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXREYWZhdWx0TGFuZ3VhZ2UoKSB7XHJcbiAgICBjb25zdCBjb21wYW55ID0gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueURldGFpbHMpKTtcclxuICAgIGxldCBjdXJyZW50Q3VsdHVyZSA9IGNvbXBhbnkubGFuQ29kZTtcclxuICAgIGlmIChjdXJyZW50Q3VsdHVyZSA9PSBudWxsIHx8IGN1cnJlbnRDdWx0dXJlID09IHVuZGVmaW5lZCB8fCBjdXJyZW50Q3VsdHVyZSA9PT0gJ251bGwnIHx8IGN1cnJlbnRDdWx0dXJlID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICBjdXJyZW50Q3VsdHVyZSA9ICdlbic7XHJcbiAgICB9XHJcbiAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50Q3VsdHVyZSwgY3VycmVudEN1bHR1cmUsIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICB0aGlzLmN1cnJlbnRMYW5nID0gY3VycmVudEN1bHR1cmU7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS51c2UodGhpcy5jdXJyZW50TGFuZyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0RW1wbG95ZWVJZEJ5VXNlcklkKCkge1xyXG5cclxuICB9XHJcblxyXG4gIG5hdmlnYXRlVG9Qcm9maWxlKCkge1xyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlLmdldFVzZXJCeUlkKHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKS50b0xvd2VyQ2FzZSgpKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgPT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMuZW1wbG95ZWVJZCA9IHJlc3BvbnNlLmRhdGEuZW1wbG95ZWVJZDtcclxuICAgICAgICBpZiAodGhpcy5lbXBsb3llZUlkKSB7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJkYXNoYm9hcmQvcHJvZmlsZVwiLCB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudFVzZXJJZCkudG9Mb3dlckNhc2UoKSwgXCJvdmVydmlld1wiXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiZGFzaGJvYXJkL215UHJvZmlsZVwiLCB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudFVzZXJJZCkudG9Mb3dlckNhc2UoKV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIG5hdmlnYXRlVG9NZXNzZW5nZXIoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvY2hhdFwiXSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgbmF2aWdhdGVUb1N0YXR1c1JlcG9ydCgpIHtcclxuICAgIGNvbnN0IHByb2plY3REaWFsb2cgPSB0aGlzLmRpYWxvZy5vcGVuKFdvcmtJdGVtc0RpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICBtaW5XaWR0aDogJzgydncnLFxyXG4gICAgICBoZWlnaHQ6ICc4MnZoJyxcclxuICAgICAgZGF0YTogeyBkYXNoYm9hcmRGaWx0ZXJzOiB0aGlzLmRhc2hib2FyZEZpbHRlcnMgfSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIHByb2plY3REaWFsb2cuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4geyB9KTtcclxuICB9XHJcbiAgbmF2aWdhdGVUb1NldHRpbmdzKCkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL3NldHRpbmdzXCJdKTtcclxuICB9XHJcblxyXG4gIGFsdGVybmF0ZVNpZ25JbigpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9zZXNzaW9ucy9nZW5lcmljLXNpZ25pblwiXSk7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvUm9sZXMoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvcm9sZW1hbmFnZW1lbnQvcm9sZW1hbmFnZW1lbnRcIl0pO1xyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGVUb1VybCh3b3Jrc3BhY2VJZCkge1xyXG4gICAgY29uc3QgdXNlclJlZmVyZW5jZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlclJlZmVyZW5jZUlkKTtcclxuICAgIGlmICh1c2VyUmVmZXJlbmNlICE9IFwibnVsbFwiICYmIHVzZXJSZWZlcmVuY2UgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgd29ya3NwYWNlSWQgKyBcIi9mb3JtL1wiICsgdXNlclJlZmVyZW5jZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgd29ya3NwYWNlSWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkVXBsb2FkRmlsZVBvcHVwT3BlbihmaWxlVXBsb2FkRHJvcHpvbmVQb3B1cCkge1xyXG4gICAgZmlsZVVwbG9hZERyb3B6b25lUG9wdXAub3BlblBvcG92ZXIoKTtcclxuICB9XHJcbiAgc2V0TGFiZWxOYW1lRm9yRHJvcHpvbmUoZmlsZU5hbWUpIHtcclxuICAgIHJldHVybiBmaWxlTmFtZS5zdWJzdHJpbmcoMCwgMjApICsgXCIuLi5cIjtcclxuICB9XHJcbiAgb25SZW1vdmUoZXZlbnQpIHtcclxuICAgIHRoaXMuZmlsZXMuc3BsaWNlKHRoaXMuZmlsZXMuaW5kZXhPZihldmVudCksIDEpO1xyXG4gICAgaWYgKHRoaXMuZmlsZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmZpbGVzUHJlc2VudCA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpbGVzUHJlc2VudCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICByZW1vdmVBbGxGaWxlcygpIHtcclxuICAgIHRoaXMuZmlsZXNQcmVzZW50ID0gZmFsc2U7XHJcbiAgICB0aGlzLmZpbGVzID0gW107XHJcbiAgfVxyXG4gIGZpbGVzU2VsZWN0ZWQoZXZlbnQpIHtcclxuICAgIHRoaXMuZmlsZXMucHVzaCguLi5ldmVudC5hZGRlZEZpbGVzKTtcclxuICAgIGlmICh0aGlzLmZpbGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5maWxlc1ByZXNlbnQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VVcGxvYWRGaWxlUG9wdXAoKSB7XHJcbiAgICB0aGlzLmZpbGVVcGxvYWREcm9wem9uZVBvcHVwLmZvckVhY2goKHApID0+IHAuY2xvc2VQb3BvdmVyKCkpO1xyXG4gICAgdGhpcy5maWxlcyA9IFtdO1xyXG4gICAgdGhpcy5maWxlUmVzdWx0TW9kZWwgPSBbXTtcclxuICB9XHJcbiAgc2F2ZUZpbGVzKCkge1xyXG4gICAgdGhpcy5hbnlPcGVyYXRpb25JblByb2dyZXNzID0gdHJ1ZTtcclxuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICB0aGlzLmZpbGVzLmZvckVhY2goKGZpbGU6IEZpbGUpID0+IHtcclxuICAgICAgdGhpcy5maWxlSW5kZXggPSB0aGlzLmZpbGVJbmRleCArIDE7XHJcbiAgICAgIGNvbnN0IGZpbGVLZXlOYW1lID0gXCJmaWxlXCIgKyB0aGlzLmZpbGVJbmRleC50b1N0cmluZygpO1xyXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoZmlsZUtleU5hbWUsIGZpbGUpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICB0aGlzLlVwbG9hZGVyT25Jbml0KGVudmlyb25tZW50LmFwaVVSTCArIEFwaVVybHMuVXBsb2FkRmlsZUNodW5rcyk7XHJcbiAgfVxyXG4gIHByaXZhdGUgVXBsb2FkZXJPbkluaXQodXJsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGxldCBwcm9ncmVzcyA9IDA7XHJcbiAgICBjb25zdCByID0gbmV3IFJlc3VtYWJsZSh7XHJcbiAgICAgIHRhcmdldDogdXJsLFxyXG4gICAgICBjaHVua1NpemU6IDEgKiAxMDI0ICogMTAyNCwgLy8zIE1CXHJcbiAgICAgIHF1ZXJ5OiB7IG1vZHVsZVR5cGVJZDogdGhpcy5tb2R1bGVUeXBlSWQgfSxcclxuICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgIFwiQXV0aG9yaXphdGlvblwiOiBgQmVhcmVyICR7dGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VyKX1gXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICAgIHIuYWRkRmlsZXModGhpcy5maWxlcyk7XHJcbiAgICByLm9uKCdmaWxlQWRkZWQnLCAoZmlsZSwgZXZlbnQpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmZpbGVSZXN1bHRNb2RlbCB8fCB0aGlzLmZpbGVSZXN1bHRNb2RlbC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5maWxlUmVzdWx0TW9kZWwgPSBbXTtcclxuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgICByLnVwbG9hZCgpXHJcbiAgICB9KTtcclxuICAgIHIub24oJ2NvbXBsZXRlJywgKGV2ZW50KSA9PiB7XHJcbiAgICAgIHIuZmlsZXMucG9wKCk7XHJcbiAgICAgIHRoaXMucHJvZ3Jlc3NWYWx1ZSA9IDA7XHJcbiAgICAgIHRoaXMuZmlsZXNQcmVzZW50ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlTmFtZXMgPSBbXTtcclxuICAgICAgdGhpcy5maWxlQ291bnRlciA9IDE7XHJcbiAgICAgIHRoaXMuZmlsZUluZGV4ID0gMDtcclxuICAgICAgdGhpcy5hbnlPcGVyYXRpb25JblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICAgIHIub24oJ3Byb2dyZXNzJywgKCkgPT4ge1xyXG4gICAgICBwcm9ncmVzcyA9IE1hdGgucm91bmQoci5wcm9ncmVzcygpICogMTAwKTtcclxuICAgICAgdGhpcy5wcm9ncmVzc1ZhbHVlID0gcHJvZ3Jlc3M7XHJcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgICByLm9uKCdmaWxlU3VjY2VzcycsIChmaWxlLCByZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoZmlsZSAmJiBmaWxlLmZpbGVOYW1lKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnVwbG9hZGVkRmlsZU5hbWVzLmZpbmQoeCA9PiB4ID09IGZpbGUuZmlsZU5hbWUpKSB7XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZU5hbWVzLnB1c2goZmlsZS5maWxlTmFtZSlcclxuICAgICAgICAgIHRoaXMuZmlsZUNvdW50ZXIgPSB0aGlzLnVwbG9hZGVkRmlsZU5hbWVzLmxlbmd0aDtcclxuXHJcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSlNPTi5wYXJzZShyZXNwb25zZSk7XHJcbiAgICAgICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5maWxlUmVzdWx0TW9kZWwpIHtcclxuICAgICAgICAgICAgICB0aGlzLmZpbGVSZXN1bHRNb2RlbCA9IFtdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCBmaWxlUmVzdWx0ID0gbmV3IEZpbGVSZXN1bHRNb2RlbCgpO1xyXG4gICAgICAgICAgICBmaWxlUmVzdWx0LmZpbGVFeHRlbnNpb24gPSByZXN1bHRbMF0uRmlsZUV4dGVuc2lvbjtcclxuICAgICAgICAgICAgZmlsZVJlc3VsdC5maWxlTmFtZSA9IHJlc3VsdFswXS5GaWxlTmFtZTtcclxuICAgICAgICAgICAgZmlsZVJlc3VsdC5maWxlUGF0aCA9IHJlc3VsdFswXS5GaWxlUGF0aDtcclxuICAgICAgICAgICAgZmlsZVJlc3VsdC5maWxlU2l6ZSA9IHJlc3VsdFswXS5GaWxlU2l6ZTtcclxuICAgICAgICAgICAgdGhpcy5maWxlUmVzdWx0TW9kZWwucHVzaChmaWxlUmVzdWx0KTtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdFswXS5GaWxlUGF0aCAhPSBudWxsICYmIHJlc3VsdFswXS5GaWxlUGF0aCAhPSBcIlwiKVxyXG4gICAgICAgICAgICAgIHRoaXMuaW1wb3J0RHluYW1pY0pzb24ocmVzdWx0WzBdLkZpbGVQYXRoKTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgIHRoaXMuY2xvc2VVcGxvYWRGaWxlUG9wdXAoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBpbXBvcnREeW5hbWljSnNvbihjb25maWd1cmVkSnNvblVSTCkge1xyXG4gICAgdmFyIGltcG9ydENvbmZpZ3VyYXRpb25Nb2RlbCA9IG5ldyBJbXBvcnRDb25maWd1cmF0aW9uTW9kZWwoKTtcclxuICAgIGltcG9ydENvbmZpZ3VyYXRpb25Nb2RlbC5jb25maWd1cmF0aW9uVXJsID0gY29uZmlndXJlZEpzb25VUkw7XHJcbiAgICB0aGlzLmltcG9ydGluZ0luUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlLlN5c3RlbUltcG9ydENvbmZpZ3VyYXRpb24oaW1wb3J0Q29uZmlndXJhdGlvbk1vZGVsKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgPT09IHRydWUpIHtcclxuICAgICAgICB0aGlzLmNsb3NlVXBsb2FkRmlsZVBvcHVwKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcyhcIkRhdGEgaW1wb3J0ZWQgc3VjY2Vzc2Z1bGx5XCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLmFwaVJlc3BvbnNlTWVzc2FnZXNbMF0ubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5pbXBvcnRpbmdJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsb3NlU2VhcmNoKCkge1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHNlYXJjaENvbXBhbmllcyhjb21wYW5pZXMsIHNlYXJjaCkge1xyXG4gICAgY29uc29sZS5sb2coY29tcGFuaWVzICwgc2VhcmNoKTtcclxuICAgIGlmIChzZWFyY2ggPT0gbnVsbCB8fCBzZWFyY2ggPT0gJycpIHtcclxuICAgICAgY29uc29sZS5sb2coXCJsb29wIGVudGVyc1wiKVxyXG4gICAgICByZXR1cm4gY29tcGFuaWVzO1xyXG4gICAgfSBlbHNlIGlmIChzZWFyY2ggIT0gbnVsbCkge1xyXG4gICAgICBzZWFyY2ggPSBzZWFyY2gudG9Mb3dlckNhc2UoKTtcclxuICAgICAgc2VhcmNoID0gc2VhcmNoLnRyaW0oKTtcclxuICAgICAgY29uc3QgdGVtcCA9IGNvbXBhbmllcy5maWx0ZXIoZGF0YSA9PlxyXG4gICAgICAgIGRhdGEuY29tcGFueU5hbWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoKSA+IC0xXHJcbiAgICAgIClcclxuICAgICAgcmV0dXJuIHRlbXA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0cmFja0J5Q29tcGFueUlkKGluZGV4OiBudW1iZXIsIGNvbXBhbnk6IGFueSk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIGNvbXBhbnkuY29tcGFueUlkO1xyXG59XHJcblxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIC8vIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHsgY2hhbm5lbHM6IFt0aGlzLmxvZ2luVXNlcmNoYW5uZWxOYW1lXSB9KTtcclxuICAgIC8vIHZhciBsb2dpbkNvbXBhbnlJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDb21wYW55SWRcIik7XHJcbiAgICAvLyBpZiAodGhpcy5jaGFubmVsTGlzdCAhPSB1bmRlZmluZWQgfHwgdGhpcy5jaGFubmVsTGlzdCAhPSBudWxsKSB7XHJcbiAgICAvLyAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmNoYW5uZWxMaXN0Lmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgLy8gICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHtcclxuICAgIC8vICAgICAgIGNoYW5uZWxzOiBbKGxvZ2luQ29tcGFueUlkICsgJy0nICsgdGhpcy5jaGFubmVsTGlzdFtpbmRleF0uaWQpXVxyXG4gICAgLy8gICAgIH0pO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9XHJcbiAgICAvLyAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoe1xyXG4gICAgLy8gICBjaGFubmVsczogWygnQ2hhbm5lbFVwZGF0ZXMtJyArIGxvZ2luQ29tcGFueUlkKV1cclxuICAgIC8vIH0pO1xyXG4gICAgLy8gdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoe1xyXG4gICAgLy8gICBjaGFubmVsczogWygnVXNlclVwZGF0ZXMtJyArIGxvZ2luQ29tcGFueUlkKV1cclxuICAgIC8vIH0pO1xyXG4gICAgdGhpcy5uZ0Rlc3Ryb3llZCQubmV4dCgpO1xyXG4gICAgdGhpcy5uZ0Rlc3Ryb3llZCQuY29tcGxldGUoKTtcclxuICB9XHJcbiAgb25OYXZpZ2F0ZVRvQmlsbGluZ1NjcmVlbigpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9zaGVsbC9BY2NvdW50c1wiXSk7XHJcbiAgfVxyXG5cclxuICBvbk5hdmlnYXRlVG9QcmljaW5nU2NyZWVuKCkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL3NoZWxsL3BheW1lbnRzLXBsYW5zXCJdKTtcclxuICB9XHJcbiAgZ2V0SW50cm9EZXRhaWxzKCkge1xyXG4gICAgdmFyIGludHJvID0gbmV3IEludHJvTW9kZWwoKTtcclxuICAgIGludHJvLnVzZXJJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKTtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZS5nZXRJbnRyb0RldGFpbHMoaW50cm8pLnN1YnNjcmliZSgocmVzcG9uc2VEYXRhOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlRGF0YS5zdWNjZXNzID09IGZhbHNlKSB7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZSA9IHJlc3BvbnNlRGF0YS5hcGlSZXNwb25zZU1lc3NhZ2VzWzBdLm1lc3NhZ2U7XHJcbiAgICAgICAgdGhpcy5hbnlPcGVyYXRpb25JblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IodGhpcy52YWxpZGF0aW9uTWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAocmVzcG9uc2VEYXRhLnN1Y2Nlc3MgPT0gdHJ1ZSkge1xyXG4gICAgICAgIGxldCBpbnRybyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5JbnRyb01vZHVsZXMpKTtcclxuICAgICAgICBpZiAoIWludHJvKVxyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5JbnRyb01vZHVsZXMsIEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlRGF0YS5kYXRhKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGVhbU1lbWJlcnMoKSB7XHJcbiAgICB2YXIgdGVhbU1lbWJlck1vZGVsO1xyXG4gICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICB2YXIgdGVhbU1lbWJlck1vZGVsO1xyXG4gICAgdGVhbU1lbWJlck1vZGVsID0ge1xyXG4gICAgICBpc0ZvclRyYWNrZXI6IHRydWVcclxuICAgIH1cclxuICAgIHRlYW1NZW1iZXJNb2RlbC5pc0FyY2hpdmVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0VGVhbUxlYWRzTGlzdCh0ZWFtTWVtYmVyTW9kZWwpLnN1YnNjcmliZSgocmVzcG9uc2VEYXRhOiBhbnkpID0+IHtcclxuICAgICAgbGV0IGVtcGxveWVlc0Ryb3BEb3duID0gcmVzcG9uc2VEYXRhLmRhdGE7XHJcbiAgICAgIGlmIChlbXBsb3llZXNEcm9wRG93biAmJiBlbXBsb3llZXNEcm9wRG93bi5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVuYWJsZVRlYW1EYXNoYm9hcmQsICd0cnVlJywgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW5hYmxlVGVhbURhc2hib2FyZCwgJ2ZhbHNlJywgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuIiwiPG1hdC10b29sYmFyIGNsYXNzPVwidG9wYmFyIHJlbW92ZS1wYWRkaW5nXCI+XHJcbiAgICA8ZGl2IGZ4RmxleD5cclxuICAgICAgICA8YXBwLW1lbnUgW3JlbG9hZF09XCJyZWxvYWRcIiAoaXNPcGVuZWQpPVwiaXNPcGVuZWQoJGV2ZW50KVwiIChvcGVuTmV3RGFzaGJvYXJkKT1cIm5hdmlnYXRlVG9VcmwoJGV2ZW50KVwiPjwvYXBwLW1lbnU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgZnhGbGV4IGZ4TGF5b3V0PVwicm93XCIgZnhIaWRlLnhzIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXJcIiBzdHlsZT1cInZlcnRpY2FsLWFsaWduOiBjZW50ZXI7XCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgZnhGbGV4IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cImVuZCBjZW50ZXJcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY29tcGFuaWVzTGlzdCAhPSBudWxsICYmIGNvbXBhbmllc0xpc3QubGVuZ3RoID4gMVwiIGNsYXNzPVwiZmlsdGVyLWRhdGEgY3VzdG9tLWJveCBsYW5ndWFnZS1zZWN0aW9uXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDoxNTBweDtcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IHBsYWNlaG9sZGVyPVwiXCIgbmFtZT1cInNlbGVjdGVkQ29tcGFueVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRDb21wYW55XCJcclxuICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwic2VsZWN0Q29tcGFueSgkZXZlbnQudmFsdWUpXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdC10cmlnZ2VyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZENvbXBhbnlcIiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTVweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsgJ21hcmdpbi1ib3R0b20nOiBzZWxlY3RlZENvbXBhbnkuY29tcGFueU1pbmlMb2dvID8gJzEwcHgnIDogJzBweCcgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cInNlbGVjdGVkQ29tcGFueS5jb21wYW55TWluaUxvZ29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDIwcHg7aGVpZ2h0OiAyMHB4O2JvcmRlci1yYWRpdXM6IDUwcHg7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cInNlbGVjdGVkQ29tcGFueS5jb21wYW55TWluaUxvZ29cIiAvPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtYXZhdGFyICpuZ0lmPVwiIXNlbGVjdGVkQ29tcGFueS5jb21wYW55TWluaUxvZ29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cInNlbGVjdGVkQ29tcGFueS5jb21wYW55TmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyBzZWxlY3RlZENvbXBhbnkuY29tcGFueU5hbWUgfX1cIiBbaXNSb3VuZF09XCJ0cnVlXCIgc2l6ZT1cIjIwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1hdmF0YXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCIgbWF0VG9vbHRpcD1cInt7c2VsZWN0ZWRDb21wYW55LmNvbXBhbnlOYW1lfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjQwMFwiIGZ4RmxleD1cImNhbGMoMTAwJSAtIDQwcHgpXCIgY2xhc3M9XCJsYW5ndWFnZS1kaXNwbGF5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7XCI+e3sgc2VsZWN0ZWRDb21wYW55TmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdC10cmlnZ2VyPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBmeEZsZXggY2xhc3M9XCJzZWFyY2hfZ29hbGlucHV0IG1sLTFcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiBzdGlja3k7IHRvcDogMDsgei1pbmRleDogMTsgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZ1bGwtd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInNlYXJjaF9nb2FsXCIgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJ7eydIUk1BTkFHQU1FTlQuU0VBUkNIJyB8IHRyYW5zbGF0ZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRcIiBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gKGlucHV0KT1cInNlYXJjaCgkZXZlbnQpXCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2xvc2VfaWNvbiBtYXN0ZXJkYXRhLXNlYXJjaC1jbG9zZVwiIGZ4TGF5b3V0QWxpZ249XCJlbmQgY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXNlYXJjaFRleHRcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInNlYXJjaFRleHRcIiBjbGFzcz1cImljb24tYnV0dG9uIG1yLTA1IG10LTA1XCIgYXJpYS1oaWRkZW49XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VTZWFyY2goKVwiIHN0eWxlPVwiY3Vyc29yOnBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbXBhbnlMaXN0IG9mIHNlYXJjaENvbXBhbmllcyhjb21wYW5pZXNMaXN0LCBzZWFyY2hUZXh0KTt0cmFja0J5OiB0cmFja0J5Q29tcGFueUlkXCJcclxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiY29tcGFueUxpc3RcIiBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCIgbWF0VG9vbHRpcD1cInt7Y29tcGFueUxpc3QuY29tcGFueU5hbWV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjQwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIGZ4TGF5b3V0PVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJjb21wYW55TGlzdC5jb21wYW55TWluaUxvZ29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMjBweDtoZWlnaHQ6IDIwcHg7Ym9yZGVyLXJhZGl1czogNTBweDttYXJnaW4tdG9wOiAxMHB4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImNvbXBhbnlMaXN0LmNvbXBhbnlNaW5pTG9nb1wiIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWF2YXRhciAqbmdJZj1cIiFjb21wYW55TGlzdC5jb21wYW55TWluaUxvZ29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiY29tcGFueUxpc3QuY29tcGFueU5hbWVcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIiBtYXRUb29sdGlwPVwie3sgY29tcGFueUxpc3QuY29tcGFueU5hbWUgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzUm91bmRdPVwidHJ1ZVwiIHNpemU9XCIyMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1hdmF0YXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbC0wNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29tcGFueUxpc3QuY29tcGFueU5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIDxkaXYgKm5nSWY9XCJzaG93VHJhaWxQZXJpb2RcIj5cclxuICAgICAgICAgICAgPHNwYW4+e3sgJ1NIRUxMLkZSRUVUUkFJTEVYUElSRScgfCB0cmFuc2xhdGUgfX08c3BhbiBbKG5nTW9kZWwpXT1cIm5vT2ZEYXlzXCI+e3tjb21wYW55LnRyYWlsRGF5c319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAge3sgJ1NIRUxMLkRBWVMnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJob21lXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFtzdHlsZS5vdmVyZmxvd109XCIndmlzaWJsZSdcIiBtYXRUb29sdGlwPVwie3sgJ1NIRUxMLkhPTUUnIHwgdHJhbnNsYXRlfX1cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0b3BiYXItYnV0dG9uLXJpZ2h0XCIgKGNsaWNrKT1cImNoYW5nZU1lbnVUeXBlKCdXb3Jrc3BhY2VNZW51SXRlbXMnKTtuYXZpZ2F0ZVRvRGFzaGJvYXJkcygpXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihtZW51VHlwZSA9PSAnV29ya3NwYWNlTWVudUl0ZW1zJ3x8IHRoaXMucm91dGVyLnVybC5pbmNsdWRlcygnL2Rhc2hib2FyZC1tYW5hZ2VtZW50JykpID8gJ2ljb25fYWN0aXZlX2NsYXNzJyA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24+aG9tZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJob21lXCIgKm5nSWY9XCJjYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Um9sZXNcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW3N0eWxlLm92ZXJmbG93XT1cIid2aXNpYmxlJ1wiIG1hdFRvb2x0aXA9XCJ7eyAnUk9MRVNWSUVXLlJPTEVTJyB8IHRyYW5zbGF0ZX19XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidG9wYmFyLWJ1dHRvbi1yaWdodFwiIChjbGljayk9XCJjaGFuZ2VNZW51VHlwZSgnV29ya3NwYWNlTWVudUl0ZW1zJyk7bmF2aWdhdGVUb1JvbGVzKClcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiKG1lbnVUeXBlID09ICdXb3Jrc3BhY2VNZW51SXRlbXMnfHwgdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCcvcm9sZW1hbmFnZW1lbnQvcm9sZW1hbmFnZW1lbnQnKSkgPyAnaWNvbl9hY3RpdmVfY2xhc3MnIDogJydcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5icmlnaHRuZXNzX2hpZ2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIihjYW5BY2Nlc3NfZmVhdHVyZV9TZXR0aW5ncykgfHwgKGNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdSb2xlcylcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCIgbWF0VG9vbHRpcD1cInt7ICdTSEVMTC5TRVRUSU5HUycgfCB0cmFuc2xhdGUgfX1cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0b3BiYXItYnV0dG9uLXJpZ2h0IHRoZW1lLW5hdmJhci1pY29uLWNvbG9yXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJuYXZpZ2F0ZVRvU2V0dGluZ3MoKVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCIodGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCcvc2V0dGluZ3MnKSkgPyAnaWNvbl9hY3RpdmVfY2xhc3MnIDogJydcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5zZXR0aW5nczwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY2FuQWNjZXNzX2ZlYXR1cmVfTXlQcm9qZWN0V29ya1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIiBtYXRUb29sdGlwPVwie3sgJ1NIRUxMLk1ZV09SSycgfCB0cmFuc2xhdGUgfX1cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0b3BiYXItYnV0dG9uLXJpZ2h0IHRoZW1lLW5hdmJhci1pY29uLWNvbG9yXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJuYXZpZ2F0ZVRvU3RhdHVzUmVwb3J0KClcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hc3NpZ25tZW50PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCIoY2FuQWNjZXNzX2ZlYXR1cmVfUHVuY2hDYXJkKSAmJiAhKCB0aW1lc2hlZXREaXNhYmxlb3JFbmFibGUgJiYgdGltZXNoZWV0RGlzYWJsZW9yRW5hYmxlLlRpbWVTaGVldFJlc3RyaWN0ZWQpXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gaWQ9XCJmZWVkVGltZVNoZWV0Q29tcG9uZW50XCIgW3N0eWxlLm92ZXJmbG93XT1cIid2aXNpYmxlJ1wiXHJcbiAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIiBtYXRUb29sdGlwPVwie3sgJ1NIRUxMLkxPR1RJTUUnIHwgdHJhbnNsYXRlfX1cIlxyXG4gICAgICAgICAgICBbc2F0UG9wb3ZlckFuY2hvckZvcl09XCJmZWVkVGltZVNoZWV0XCIgKGNsaWNrKT1cIm9wZW5UaW1lU2hlZXQoKVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwidG9wYmFyLWJ1dHRvbi1yaWdodCB0aGVtZS1uYXZiYXItaWNvbi1jb2xvclwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+YWNjZXNzX3RpbWU8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIE5vdGlmaWNhdGlvbiB0b2dnbGUgYnV0dG9uIC0tPlxyXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiIG1hdFRvb2x0aXA9XCJ7eyAnU0hFTEwuTk9USUZJQ0FUSU9OUycgfCB0cmFuc2xhdGV9fVwiXHJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU5vdGlmaWMoKVwiIFtzdHlsZS5vdmVyZmxvd109XCIndmlzaWJsZSdcIiAqbmdJZj1cIm5ld05vdGlmaWNhdGlvbnNDb3VudCAhPSAwXCJcclxuICAgICAgICBjbGFzcz1cInRvcGJhci1idXR0b24tcmlnaHQgdGhlbWUtbmF2YmFyLWljb24tY29sb3JcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibm90aWZpY2F0aW9uXCI+XHJcbiAgICAgICAgPG1hdC1pY29uPm5vdGlmaWNhdGlvbnM8L21hdC1pY29uPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwibmV3Tm90aWZpY2F0aW9uc0NvdW50ICE9IDBcIiBjbGFzcz1cIm5vdGlmaWNhdGlvbi1udW1iZXIgbWF0LWJnLXdhcm5cIj57e1xyXG4gICAgICAgICAgICBuZXdOb3RpZmljYXRpb25zQ291bnQgfX08L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxtYXQtbWVudSAjbm90aWZpY2F0aW9uPVwibWF0TWVudVwiPlxyXG4gICAgICAgIDxhcHAtbm90aWZpY2F0aW9ucz48L2FwcC1ub3RpZmljYXRpb25zPlxyXG4gICAgPC9tYXQtbWVudT5cclxuXHJcbiAgICA8IS0tIFRvcCBsZWZ0IHVzZXIgbWVudSAtLT5cclxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJhY2NvdW50TWVudVwiIChjbGljayk9XCJ0b2dnbGVSZWNvcmRpbmcoKVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwidGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCcvZGFzaGJvYXJkL3Byb2ZpbGUvJykgPyAnaWNvbl9hY3RpdmVfY2xhc3MnIDogJydcIlxyXG4gICAgICAgIGNsYXNzPVwidG9wYmFyLWJ1dHRvbi1yaWdodCBpbWctYnV0dG9uXCIgKm5nSWY9XCJhdXRoZW50aWNhdGVkVXNlclJlY29yZFwiPlxyXG4gICAgICAgIDxpbWcgY2xhc3M9XCJpY29uLWhpZ2hsaWdodC1zZXR0ZXJcIiAqbmdJZj1cImF1dGhlbnRpY2F0ZWRVc2VyUmVjb3JkLnByb2ZpbGVJbWFnZVwiXHJcbiAgICAgICAgICAgIFtzcmNdPVwiYXV0aGVudGljYXRlZFVzZXJSZWNvcmQucHJvZmlsZUltYWdlXCIgYWx0PVwicHJvZmlsZSBpbWFnZVwiIC8+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhYXV0aGVudGljYXRlZFVzZXJSZWNvcmQucHJvZmlsZUltYWdlXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogNHB4ICFpbXBvcnRhbnQ7XCI+XHJcbiAgICAgICAgICAgIDxhcHAtYXZhdGFyIFtuYW1lXT1cImF1dGhlbnRpY2F0ZWRVc2VyUmVjb3JkLmZ1bGxOYW1lXCIgW2lzUm91bmRdPVwidHJ1ZVwiIHNpemU9XCIzMFwiPlxyXG4gICAgICAgICAgICA8L2FwcC1hdmF0YXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8c2F0LXBvcG92ZXIgI2ZlZWRUaW1lU2hlZXQgW2F1dG9Gb2N1c109XCJmYWxzZVwiIGhhc0JhY2tkcm9wIFtyZXN0b3JlRm9jdXNdPVwiZmFsc2VcIiBbaW50ZXJhY3RpdmVDbG9zZV09XCJ0cnVlXCJcclxuICAgICAgICBzY3JvbGxTdHJhdGVneT1cInJlcG9zaXRpb25cIiB2ZXJ0aWNhbEFsaWduPVwiYmVsb3dcIiBob3Jpem9udGFsQWxpZ249XCJiZWZvcmVcIj5cclxuICAgICAgICA8YXBwLWZlZWQtdGltZSAoY2xvc2VGZWVkVGltZVNoZWV0UG9wdXApPVwiY2xvc2VGZWVkVGltZVNoZWV0KClcIiBbaXNGZWVkVGltZVNoZWV0XT1cImlzRmVlZFRpbWVTaGVldFwiPlxyXG4gICAgICAgIDwvYXBwLWZlZWQtdGltZT5cclxuICAgIDwvc2F0LXBvcG92ZXI+XHJcblxyXG4gICAgPG1hdC1tZW51ICNhY2NvdW50TWVudT1cIm1hdE1lbnVcIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm5hdmlnYXRlVG9Qcm9maWxlKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmFjY291bnRfYm94PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPHNwYW4+e3sgJ1NIRUxMLlBST0ZJTEUnIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFjdGl2aXR5LXJlY29yZGVyIHJlY29yZGluZy1zdHlsZVwiICpuZ0lmPVwiaXNSZWNvcmRpbmdcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gZmliZXJfbWFudWFsX3JlY29yZCAtLT5cclxuICAgICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPCEtLSA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImdvVG9Vc2VyU3RvcmUoKVwiICpuZ0lmPVwiaXNTdG9yZUFjY2Vzc1wiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+Y2xvdWQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8c3Bhbj5TdG9yZTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIiBtYXRUb29sdGlwPVwie3sgJ1NIRUxMLkNMRUFSREVNT0RBVEEnIHwgdHJhbnNsYXRlfX1cIlxyXG4gICAgICAgICAgICAqbmdJZj1cInNob3dEZWxldGVJY29uICYmIHNob3dEZWxldGVcIiAoY2xpY2spPVwiY2xlYXJEZW1vRGF0YSgpXCIgW3N0eWxlLm92ZXJmbG93XT1cIid2aXNpYmxlJ1wiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPHNwYW4+e3sgJ1NIRUxMLkNMRUFSREVNT0RBVEEnIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIlxyXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwie3sgJ1NIRUxMLkVYUE9SVENPTkZJR1VSQVRJT04nIHwgdHJhbnNsYXRlfX1cIiAqbmdJZj1cImNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZVN5c3RlbUV4cG9ydHNcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZXhwb3J0Q29uZmlndXJhdGlvbkRpYWxvZ0RhdGEoKVwiIFtzdHlsZS5vdmVyZmxvd109XCIndmlzaWJsZSdcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmdldF9hcHA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8c3Bhbj57eyAnU0hFTEwuRVhQT1JUQ09ORklHVVJBVElPTicgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiXHJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyAnU0hFTEwuSU1QT1JUQ09ORklHVVJBVElPTicgfCB0cmFuc2xhdGV9fVwiIFtzYXRQb3BvdmVyQW5jaG9yRm9yXT1cImZpbGVVcGxvYWREcm9wem9uZVBvcG92ZXJcIlxyXG4gICAgICAgICAgICAjZmlsZVVwbG9hZERyb3B6b25lUG9wdXA9XCJzYXRQb3BvdmVyQW5jaG9yXCIgKm5nSWY9XCJjYW5BY2Nlc3NfZmVhdHVyZV9NYW5hZ2VTeXN0ZW1JbXBvcnRzXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFkZFVwbG9hZEZpbGVQb3B1cE9wZW4oZmlsZVVwbG9hZERyb3B6b25lUG9wdXApXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5wdWJsaXNoPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPHNwYW4+e3sgJ1NIRUxMLklNUE9SVENPTkZJR1VSQVRJT04nIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPCEtLTxkaXYgY2xhc3M9XCJmaWx0ZXItZGF0YSBjdXN0b20tYm94IGxhbmd1YWdlLXNlY3Rpb25cIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IHBsYWNlaG9sZGVyPVwiXCIgbmFtZT1cImN1cnJlbnRMYW5nXCIgWyhuZ01vZGVsKV09XCJjdXJyZW50TGFuZ1wiIChzZWxlY3Rpb25DaGFuZ2UpPVwic2V0TGFuZygpXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdC10cmlnZ2VyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjE1cHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGZ4RmxleD1cIjI0cHhcIiBjbGFzcz1cImxhbmd1YWdlLWljb25cIj5sYW5ndWFnZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZ4RmxleD1cImNhbGMoMTAwJSAtIDQwcHgpXCIgY2xhc3M9XCJsYW5ndWFnZS1kaXNwbGF5XCI+e3sgc2VsZWN0ZWRMYW5nTmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdC10cmlnZ2VyPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJvcHRpb25cIiAqbmdGb3I9XCJsZXQgbGFuZyBvZiBhdmFpbGFibGVMYW5nc1wiIFt2YWx1ZV09XCJsYW5nLmNvZGVcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBsYW5nLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2Pi0tPlxyXG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwib25OYXZpZ2F0ZVRvQmlsbGluZ1NjcmVlbigpXCIgKm5nSWY9XCJjYW5BY2Nlc3NfZmVhdHVyZV9NYW5hZ2VBY2NvdW50c0FuZEJpbGxpbmdcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmFjY291bnRfYmFsYW5jZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDxzcGFuPkFjY291bnQgJiBCaWxsaW5nPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwib25OYXZpZ2F0ZVRvUHJpY2luZ1NjcmVlbigpXCIgKm5nSWY9XCJjYW5BY2Nlc3NfZmVhdHVyZV9NYW5hZ2VBY2NvdW50c0FuZEJpbGxpbmdcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmFjY291bnRfYmFsYW5jZV93YWxsZXQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8c3Bhbj5QcmljaW5nICYgRmVhdHVyZXM8L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJjYW5BY2Nlc3NfZmVhdHVyZV9BbHRlcm5hdGVTaWduSW5cIiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJhbHRlcm5hdGVTaWduSW4oKVwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5vdmVyZmxvd109XCIndmlzaWJsZSdcIiBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCJcclxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7ICdTSEVMTC5TSUdOSU5BUycgfCB0cmFuc2xhdGV9fVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+aG93X3RvX3JlZzwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7ICdTSEVMTC5TSUdOSU5BUycgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uU2lnbm91dCgpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5leGl0X3RvX2FwcDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7ICdTSEVMTC5TSUdOT1VUJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiZmVlZEJhY2tQb3BvdmVyLnRvZ2dsZSgpO29wZW5GZWVkQmFja0RpYWxvZygpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImZlZWRiYWNrLWljb25cIiBbc2F0UG9wb3ZlckFuY2hvckZvcl09XCJmZWVkQmFja1BvcG92ZXJcIj5cclxuICAgICAgICAgICAgICAgIHNlbnRpbWVudF9zYXRpc2ZpZWRfYWx0XHJcbiAgICAgICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDxzcGFuPnYte3thcHBsaWNhdGlvblZlcnNpb259fTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgIDwvbWF0LW1lbnU+XHJcbjwvbWF0LXRvb2xiYXI+XHJcbjwhLS0gPG5neC11aS1sb2FkZXIgZmdzU2l6ZT1cIjE4MFwiIFtmZ3NUeXBlXT1cInNwaW5uZXJUeXBlXCIgY29sb3I9XCJwcmltYXJ5XCI+PC9uZ3gtdWktbG9hZGVyPiAtLT5cclxuPGRpdiAqbmdJZj1cImxvYWRpbmdcIiBjbGFzcz1cImstaS1sb2FkaW5nXCI+PC9kaXY+XHJcbjxzYXQtcG9wb3ZlciAjZmVlZEJhY2tQb3BvdmVyIHZlcnRpY2FsQWxpZ249XCJiZWxvd1wiIGhhc0JhY2tkcm9wIGJhY2tkcm9wQ2xhc3M9XCJiYWNrZHJvcC1jb2xvclwiXHJcbiAgICBbaW50ZXJhY3RpdmVDbG9zZV09XCJmYWxzZVwiIGhvcml6b250YWxBbGlnbj1cImVuZFwiPlxyXG4gICAgPGFwcC1zdWJtaXQtZmVlZGJhY2sgKm5nSWY9XCJpc0ZlZWRCYWNrRGlhbG9nXCIgKGNsb3NlRGlhbG9nKT1cImNsb3NlRmVlZEJhY2tsb2dEaWFsb2coKVwiPlxyXG4gICAgPC9hcHAtc3VibWl0LWZlZWRiYWNrPlxyXG48L3NhdC1wb3BvdmVyPlxyXG5cclxuPG1hdC1tZW51ICNtZW51Mj1cIm1hdE1lbnVcIiBjbGFzcz1cImRpYWxvZ193aW5kb3dcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcbiAgICA8bWF0LWNhcmQtY29udGVudCBjbGFzcz1cInAtMCBtLTAgbGlzdG9mX2Fzc2V0cyBzdG9yZS1saXN0LWRyb3Bkb3duXCIgaWQ9XCJzdHlsZS0xXCI+XHJcbiAgICAgICAgPG1hdC1saXN0IGNsYXNzPVwiY29tcGFjdC1saXN0XCI+XHJcbiAgICAgICAgICAgIDxtYXQtY2FyZCBjbGFzcz1cInAtMCBhc3NldC1jYXJkXCIgKm5nSWY9XCIoY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVGb3JtIHx8IGNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdGb3JtcylcIlxyXG4gICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvYXBwbGljYXRpb25zL3ZpZXctZm9ybXMnXVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoaWRlLWNvbnRlbnQtb3ZlcmZsb3cgdXNlclN0b3J5LW5hbWUtY29udHJvbCBzdG9yZS1kcm9wZG93bi1wYWRkaW5nXCI+Rm9ybXM8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbWF0LWNhcmQ+XHJcbiAgICAgICAgICAgIDxtYXQtY2FyZCBjbGFzcz1cInAtMCBhc3NldC1jYXJkXCIgKm5nSWY9XCJjYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUFwcGxpY2F0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9hcHBsaWNhdGlvbnMvY3VzdG9tLWFwcGxpY2F0aW9ucyddXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhpZGUtY29udGVudC1vdmVyZmxvdyB1c2VyU3RvcnktbmFtZS1jb250cm9sIHN0b3JlLWRyb3Bkb3duLXBhZGRpbmdcIj5DdXN0b21cclxuICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbnM8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbWF0LWNhcmQ+XHJcbiAgICAgICAgICAgIDxtYXQtY2FyZCAqbmdJZj1cImNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdSb2xlc1wiIGNsYXNzPVwicC0wIGFzc2V0LWNhcmRcIlxyXG4gICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvcm9sZW1hbmFnZW1lbnQvcm9sZW1hbmFnZW1lbnQnXVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoaWRlLWNvbnRlbnQtb3ZlcmZsb3cgdXNlclN0b3J5LW5hbWUtY29udHJvbCBzdG9yZS1kcm9wZG93bi1wYWRkaW5nXCI+Um9sZVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb248L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbWF0LWNhcmQ+XHJcbiAgICAgICAgICAgIDxtYXQtY2FyZCAqbmdJZj1cImNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZVByb2plY3RSb2xlUGVybWlzc2lvbnNcIiBjbGFzcz1cInAtMCBhc3NldC1jYXJkXCJcclxuICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL3JvbGVtYW5hZ2VtZW50L2VudGl0eXJvbGVtYW5hZ2VtZW50J11cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGlkZS1jb250ZW50LW92ZXJmbG93IHVzZXJTdG9yeS1uYW1lLWNvbnRyb2wgc3RvcmUtZHJvcGRvd24tcGFkZGluZ1wiPnt7cHJvamVjdFJvbGVUZXh0IHxcclxuICAgICAgICAgICAgICAgICAgICBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9tYXQtY2FyZD5cclxuICAgICAgICA8L21hdC1saXN0PlxyXG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG48L21hdC1tZW51PlxyXG5cclxuPGRpdiBbQGZhZGVdICpuZ0lmPVwiZGlzcGxheVdlbGNvbWVOb3RlICYmIHVzZXJGdWxsTmFtZVwiIGNsYXNzPVwid2VsY29tZS1ub3RlXCI+XHJcbiAgICA8c3BhbiAqbmdJZj1cImxvZ2dlZEluQ291bnQgPT0gMTsgZWxzZSBlbHNlU3BhblwiPldlbGNvbWUgJm5ic3A7IDwvc3Bhbj4gPHNwYW4+IHt7IHVzZXJGdWxsTmFtZSB9fSA8L3NwYW4+XHJcbiAgICA8bmctdGVtcGxhdGUgI2Vsc2VTcGFuPiBXZWxjb21lIGJhY2sgJm5ic3A7PC9uZy10ZW1wbGF0ZT5cclxuPC9kaXY+XHJcbjxzYXQtcG9wb3ZlciAjZmlsZVVwbG9hZERyb3B6b25lUG9wb3ZlciBoYXNCYWNrZHJvcCBbaW50ZXJhY3RpdmVDbG9zZV09XCJmYWxzZVwiIGJhY2tkcm9wQ2xhc3M9XCJ0ZXN0cnVuLXBvcG92ZXJcIlxyXG4gICAgc2Nyb2xsU3RyYXRlZ3k9XCJyZXBvc2l0aW9uXCI+XHJcbiAgICA8bWF0LWNhcmQgY2xhc3M9XCJwLTAgbXItMCBjdXN0b20taHJtLWRyb3B6b25lXCI+XHJcbiAgICAgICAgPG1hdC1jYXJkLXRpdGxlPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZS10ZXh0IG1hdC1iZy1wcmltYXJ5IHAtMDVcIiBmeExheW91dD1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBmeEZsZXggY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7J1RFU1RNQU5BR0VNRU5ULlVQTE9BREZJTEVTJyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgZnhGbGV4PVwiMjBweFwiIGZ4TGF5b3V0QWxpZ249XCJlbmQgY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImlubGluZV9lZGl0X2Nsb3NlX2J0biBidG5cIiAoY2xpY2spPVwiY2xvc2VVcGxvYWRGaWxlUG9wdXAoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwidGltZXNcIj48L2ZhLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9tYXQtY2FyZC10aXRsZT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibS0xXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tZHJvcHpvbmUgZHJvcHpvbmUtaGVpZ2h0XCIgbmd4LWRyb3B6b25lIChjaGFuZ2UpPVwiZmlsZXNTZWxlY3RlZCgkZXZlbnQpXCIgYWNjZXB0PVwiLmpzb25cIj5cclxuICAgICAgICAgICAgICAgIDxuZ3gtZHJvcHpvbmUtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3snRE9DVU1FTlRNQU5BR0VNRU5ULkRSQUdBTkREUk9QRklMRVNIRVJFJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9uZ3gtZHJvcHpvbmUtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8bmd4LWRyb3B6b25lLXByZXZpZXcgY2xhc3M9XCJjdXN0b20tZHJvcHpvbmUtcHJldmlld1wiICpuZ0Zvcj1cImxldCBmIG9mIGZpbGVzXCIgW3JlbW92YWJsZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAocmVtb3ZlZCk9XCJvblJlbW92ZShmKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZ3gtZHJvcHpvbmUtbGFiZWwgY2xhc3M9XCJjdXN0b20tZHJvcHpvbmUtbGFiZWxcIiBbYXR0ci5kYXRhLXRpcF09XCJmLm5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgc2V0TGFiZWxOYW1lRm9yRHJvcHpvbmUoZi5uYW1lKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmd4LWRyb3B6b25lLWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPC9uZ3gtZHJvcHpvbmUtcHJldmlldz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLTA1IHRleHQtbXV0ZWRcIiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPmFsbG93ZWQgZmlsZSBleHRlbnNpb25zIDogLmpzb248L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bWF0LXByb2dyZXNzLWJhciBjb2xvcj1cInByaW1hcnlcIiBtb2RlPVwiZGV0ZXJtaW5hdGVcIiBbdmFsdWVdPVwicHJvZ3Jlc3NWYWx1ZVwiICpuZ0lmPVwicHJvZ3Jlc3NWYWx1ZSA+IDBcIj5cclxuICAgICAgICAgICAgPC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvZ3Jlc3NWYWx1ZSA+IDBcIj5cclxuICAgICAgICAgICAgICAgIHt7cHJvZ3Jlc3NWYWx1ZX19JSBjb21wbGV0ZWQgKFVwbG9hZGluZyB7e2ZpbGVDb3VudGVyfX0gb2Yge3tmaWxlcy5sZW5ndGh9fSBmaWxlcylcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0wNVwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgZW5kXCIgKm5nSWY9XCJmaWxlc1ByZXNlbnRcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwic2F2ZUZpbGVzKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZmEtaWNvbiBjbGFzcz1cIm1yLTA1XCIgaWNvbj1cInNhdmVcIj48L2ZhLWljb24+e3snVVBMT0FEJyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtbC0xXCIgbWF0LWJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwicmVtb3ZlQWxsRmlsZXMoKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZmEtaWNvbiBjbGFzcz1cIm1yLTA1XCIgaWNvbj1cInRpbWVzXCI+PC9mYS1pY29uPnt7J0RPQ1VNRU5UTUFOQUdFTUVOVC5DTEVBUkZJTEVTJyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0wNVwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgZW5kXCIgKm5nSWY9XCJpbXBvcnRpbmdJblByb2dyZXNzXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWwtMVwiIG1hdC1idXR0b24gbWF0LXJhaXNlZC1idXR0b24gW2Rpc2FibGVkXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZmEtaWNvbiBjbGFzcz1cIm1yLTA1XCIgaWNvbj1cInVwbG9hZFwiPjwvZmEtaWNvbj57eydTSEVMTC5JTVBPUlRJTkdURVhUJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtc3BpbiBmYS1zcGlubmVyXCIgKm5nSWY9XCJpbXBvcnRpbmdJblByb2dyZXNzXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9tYXQtY2FyZD5cclxuPC9zYXQtcG9wb3Zlcj5cclxuXHJcbjxzdHlsZT5cclxuICAgIC5maWxlLW9yLWZvbGRlci1pY29uIHtcclxuICAgICAgICB3aWR0aDogNTBweDtcclxuICAgICAgICBoZWlnaHQ6IDUwcHg7XHJcbiAgICAgICAgZm9udC1zaXplOiA1MHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5maWxlLW9yLWZvbGRlci1uYW1lLWFsaWduIHtcclxuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xyXG4gICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMjtcclxuICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xyXG4gICAgfVxyXG5cclxuICAgIC5kcm9wem9uZS1oZWlnaHQge1xyXG4gICAgICAgIGhlaWdodDogMTMwcHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmN1c3RvbS1kcm9wem9uZS1wcmV2aWV3IHtcclxuICAgICAgICBoZWlnaHQ6IDEwMHB4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgbWluLWhlaWdodDogMTAwcHggIWltcG9ydGFudDtcclxuICAgICAgICBwYWRkaW5nOiAwcHggIWltcG9ydGFudDtcclxuICAgIH1cclxuPC9zdHlsZT5cclxuPG5nLXRlbXBsYXRlICNvcGVuQW5ub3VjZW1lbnREaWFsb2dDb21wb25lbnQgbGV0LWRhdGE+XHJcbiAgICA8YW5ub3VuY2VtZW50LWRpYWxvZyBbZGF0YV09W2RhdGFdPjwvYW5ub3VuY2VtZW50LWRpYWxvZz5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
2342
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLXNpZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc2hlbGwtbW9kdWxlLWNvbXBvbmVudHMvc2hlbGwtY29tcG9uZW50cy9zcmMvbGliL3NoZWxsLWNvbXBvbmVudHMvY29tcG9uZW50cy9oZWFkZXItc2lkZS9oZWFkZXItc2lkZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL2hlYWRlci1zaWRlL2hlYWRlci1zaWRlLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2hILE9BQU8sRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssRUFFTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFlBQVksRUFDWixZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixzQkFBc0IsRUFDdEIsMkJBQTJCLEVBQzNCLGtCQUFrQixFQUNsQixrQ0FBa0MsRUFDbEMsc0JBQXNCLEdBQ3ZCLE1BQU0sa0NBQWtDLENBQUE7QUFJekMsT0FBTyxFQUFFLE1BQU0sRUFBUyxNQUFNLGFBQWEsQ0FBQztBQUk1QyxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLHlCQUF5QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDaEgsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLGlDQUFpQyxFQUFFLHVCQUF1QixFQUFFLHdCQUF3QixFQUFFLGtD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RUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUNyQyxDQUFDO2FBQ0gsQ0FBQztTQUNIO3VGQUdVLG1CQUFtQjtjQWQvQixTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsV0FBVyxFQUFFLDZCQUE2QjtnQkFDMUMsVUFBVSxFQUFFO29CQUNWLE9BQU8sQ0FBQyxNQUFNLEVBQUU7d0JBQ2QsVUFBVSxDQUFDLFdBQVcsRUFBRTs0QkFDdEIsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDOzRCQUNyQixPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUNwQyxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3lCQUNyQyxDQUFDO3FCQUNILENBQUM7aUJBQ0g7YUFDRjtzbEJBdUltQyxNQUFNO3NCQUFyQyxNQUFNO3VCQUFDLE1BQU07d0JBcElZLG9CQUFvQjtrQkFBL0MsU0FBUzttQkFBQyxlQUFlO1lBQ0ksZUFBZTtrQkFBNUMsU0FBUzttQkFBQyxpQkFBaUI7WUFDYSx1QkFBdUI7a0JBQS9ELFlBQVk7bUJBQUMseUJBQXlCO1lBQ1QsZUFBZTtrQkFBNUMsU0FBUzttQkFBQyxpQkFBaUI7WUFFbkIsWUFBWTtrQkFBcEIsS0FBSztZQUNJLE1BQU07a0JBQWYsTUFBTTtZQUM4Qyw4QkFBOEI7a0JBQWxGLFNBQVM7bUJBQUMsZ0NBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmV0Y2hUaW1lU2hlZXRCdXR0b25EZXRhaWxzLCBSb2xlc0ZldGNoVHJpZ2dlcmVkIH0gZnJvbSAnLi8uLi8uLi9zdG9yZS9hY3Rpb25zL2F1dGhlbnRpY2F0aW9uLmFjdGlvbnMnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIFZpZXdDaGlsZHJlbiwgQ2hhbmdlRGV0ZWN0b3JSZWYsIFRlbXBsYXRlUmVmXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtcclxuICBSZWNlaXZlTWVzc2FnZVRyaWdnZXJlZCxcclxuICBQcmVzZW5jZUV2ZW50VHJpZ2dlcmVkLFxyXG4gIEluaXRhbFN0YXRlT2ZVc2Vyc1RyaWdnZXJlZCxcclxuICBNZXNzYWdlQWN0aW9uVHlwZXMsXHJcbiAgUmVjZWl2ZUNoYW5uZWxVcGRhdGVNb2RlbFRyaWdnZXJlZCxcclxuICBSZWNlaXZlU2lnbmFsVHJpZ2dlcmVkLFxyXG59IGZyb20gXCIuLi8uLi9zdG9yZS9hY3Rpb25zL2NoYXQuYWN0aW9uc1wiXHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBTYXRQb3BvdmVyIH0gZnJvbSBcIkBuY3N0YXRlL3NhdC1wb3BvdmVyXCI7XHJcbmltcG9ydCB7IHNlbGVjdCwgU3RvcmUgfSBmcm9tIFwiQG5ncngvc3RvcmVcIjtcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XHJcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tIFwibmd4LWNvb2tpZS1zZXJ2aWNlXCI7XHJcblxyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgdGFrZVVudGlsLCB0YXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgR2V0VXNlclN0b3JlSWRUcmlnZ2VyZWQsIEF1dGhlbnRpY2F0aW9uQWN0aW9uVHlwZXMgfSBmcm9tIFwiLi4vLi4vc3RvcmUvYWN0aW9ucy9hdXRoZW50aWNhdGlvbi5hY3Rpb25zXCI7XHJcbmltcG9ydCB7IENsZWFyQWxsVW5yZWFkTm90aWZpY2F0aW9uc1RyaWdnZXJlZCwgQ2xlYXJVbnJlYWROb3RpZmljYXRpb25zVHJpZ2dlcmVkLCBOZXdOb3RpZmljYXRpb25SZWNlaXZlZCwgTm90aWZpY2F0aW9uc0FjdGlvblR5cGVzLCBVcHNlcnRVbnJlYWROb3RpZmljYXRpb25zVHJpZ2dlcmVkIH0gZnJvbSBcIi4uLy4uL3N0b3JlL2FjdGlvbnMvbm90aWZpY2F0aW9ucy5hY3Rpb25zXCI7XHJcbmltcG9ydCB7IFN0YXRlIH0gZnJvbSBcIi4uLy4uL3N0b3JlL3JlZHVjZXJzL2luZGV4XCI7XHJcbmltcG9ydCAqIGFzIHNoYXJlZE1vZHVsZVJlZHVjZXJzIGZyb20gXCIuLi8uLi9zdG9yZS9yZWR1Y2Vycy9pbmRleFwiO1xyXG5pbXBvcnQgJy4uLy4uLy4uL2dsb2JhbGRlcGVuZGVuY2llcy9oZWxwZXJzL2ZvbnRhd2Vzb21lLWljb25zJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbmZpcm1hdGlvbi1kaWFsb2cvY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9jb21tb24tdXNlZC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEFjdGlvbnMsIG9mVHlwZSB9IGZyb20gXCJAbmdyeC9lZmZlY3RzXCI7XHJcbmltcG9ydCB7IExvY2FsU3RvcmFnZVByb3BlcnRpZXMgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWxkZXBlbmRlbmNpZXMvY29uc3RhbnRzL2xvY2Fsc3RvcmFnZS1wcm9wZXJ0aWVzJztcclxuaW1wb3J0IHsgQ2hhbm5lbE5hbWVzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2NoYW5uZWwtbmFtZXMnO1xyXG5pbXBvcnQgeyBXSU5ET1cgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWxkZXBlbmRlbmNpZXMvaGVscGVycy93aW5kb3cuaGVscGVyJztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aGVudGljYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFRoZW1lU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RoZW1lLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUaW1lc2hlZXREaXNhYmxlb3JFbmFibGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvdGltZXNoZWV0ZW5hYmxlZGlzYWJsZSc7XHJcbmltcG9ydCB7IFRoZW1lTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvdGhlbWVzLm1vZGVsJztcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uT3V0cHV0TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvTm90aWZpY2F0aW9uc091dFB1dE1vZGVsJztcclxuaW1wb3J0IHsgQ3VzdG9tQXBwQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2dsb2JhbGRlcGVuZGVuY2llcy9jb21wb25lbnRzL2NvbXBvbmVudGJhc2UnO1xyXG5pbXBvcnQgeyBTb2Z0TGFiZWxDb25maWd1cmF0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvc29mdGxhYmVscy1tb2RlbCc7XHJcbmltcG9ydCB7IFVzZXJNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy91c2VyJztcclxuaW1wb3J0IHsgQ29tcGFuaWVzTGlzdCB9IGZyb20gJy4uLy4uL21vZGVscy9jb21wYW5pZXNsaXN0Lm1vZGVsJztcclxuaW1wb3J0IHsgU3RvcmVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zdG9yZS1tb2RlbCc7XHJcbmltcG9ydCB7IEFwcE5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9BcHBOb3RpZmljYXRpb24nO1xyXG5pbXBvcnQgeyBTdG9yZVNlYXJjaE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3N0b3JlLXNlYXJjaC1tb2RlbCc7XHJcbmltcG9ydCB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgV29ya0l0ZW1zRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vYWxsLXdvcmstaXRlbXMtZGlhbG9nL2FsbC13b3JrLWl0ZW1zLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTaGVsbE1vZHVsZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2hlbGwubW9kdWxlcy5zZXJ2aWNlJztcclxuaW1wb3J0ICogYXMgXyBmcm9tIFwidW5kZXJzY29yZVwiO1xyXG5pbXBvcnQgeyBGZWVkVGltZURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2ZlZWQtdGltZS9mZWVkLXRpbWUtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvblR5cGVJZHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbm90aWZpY2F0aW9uLXR5cGUtaWRzJztcclxuaW1wb3J0IHsgVXNlclN0b3J5QXNzaWduZWROb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvVXNlclN0b3J5QXNzaWduZWROb3RpZmljYXRpb24nO1xyXG5pbXBvcnQgeyBDaGFubmVsUm91dGVzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL25vdGlmaWNhdGlvbi1yb3V0ZXMnO1xyXG5pbXBvcnQgeyBSb2xlVXBkYXRlZE5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9Sb2xlVXBkYXRlZE5vdGlmaWNhdGlvbic7XHJcbmltcG9ydCB7IFJlcG9ydFN1Ym1pdHRlZE5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9SZXBvcnRTdWJtaXR0ZWROb3RpZmljYXRpb24nO1xyXG5pbXBvcnQgeyBSZXBvcnRDb25maWdBc3NpZ25lZE5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9SZXBvcnRDb25maWdBc3NpZ25lZE5vdGlmaWNhdGlvbic7XHJcbmltcG9ydCB7IE11bHRpcGxlQ2hhcnRzU2NoZWR1bGluZyB9IGZyb20gJy4uLy4uL21vZGVscy9tdWx0aUNoYXJ0c1NjaGVkdWxpbmcnO1xyXG5pbXBvcnQgeyBBc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0Fzc2V0QXNzaWduZWROb3RpZmljYXRpb25Nb2RlbCc7XHJcbmltcG9ydCB7IE5ld1Byb2plY3RDcmVhdGVkTm90aWZpY2F0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvTmV3UHJvamVjdENyZWF0ZWROb3RpZmljYXRpb25Nb2RlbCc7XHJcbmltcG9ydCB7IEdvYWxBcHByb3ZlZE5vdGlmaWNhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dvYWxBcHByb3ZlZE5vdGlmaWNhdGlvbk1vZGVsJztcclxuaW1wb3J0IHsgVXNlclN0b3J5VXBkYXRlTm90aWZpY2F0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvdXNlclN0b3J5VXBkYXRlTm90aWZpY2F0aW9uTW9kZWwnO1xyXG5pbXBvcnQgeyBVc2VyU3RvcnlDb21tZW50Tm90aWZpY2F0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvdXNlclN0b3J5Q29tbWVudE5vdGlmaWNhdGlvbk1vZGVsJztcclxuaW1wb3J0IHsgU3ByaW50U3RhcnRlZE5vdGlmaWNhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NwcmludFN0YXJ0ZWROb3RpZmljYXRpb25Nb2RlbCc7XHJcbmltcG9ydCB7IFNwcmludFJlcGxhblN0YXJ0ZWROb3RpZmljYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zcHJpbnRSZXBsYW5SZXF1ZXN0ZWRNb2RlbCc7XHJcbmltcG9ydCB7IGFuaW1hdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IE5neFVpTG9hZGVyU2VydmljZSwgU1BJTk5FUiB9IGZyb20gJ25neC11aS1sb2FkZXInO1xyXG5pbXBvcnQgeyBOZXdQcm9qZWN0RmVhdHVyZUNyZWF0ZWROb3RpZmljYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9OZXdQcm9qZWN0RmVhdHVyZU5vdGlmaWNhdGlvbk1vZGVsJztcclxuaW1wb3J0IHsgVXNlclN0b3J5QXJjaGl2ZU5vdGlmaWNhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FyY2hpdmVVc2VyU3RvcnlNb2RlbCc7XHJcbmltcG9ydCB7IFVzZXJTdG9yeVBhcmtOb3RpZmljYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9wYXJrVXNlclN0b3J5SW5wdXRNb2RlbCc7XHJcbmltcG9ydCB7IEV4cG9ydENvbmZpZ3VyYXRpb25EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9leHBvcnQtaW1wb3J0LWNvbmZpZ3VyYXRpb24vZXhwb3J0LWNvbmZpZ3VyYXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgRmlsZVJlc3VsdE1vZGVsLCBTdG9yZU1hbmFnZW1lbnRTZXJ2aWNlIH0gZnJvbSBcIkB0aGV0cmFkZWVuZ2luZW9yZzEvc25vdmEtZG9jdW1lbnQtbWFuYWdlbWVudFwiO1xyXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XHJcbmltcG9ydCBSZXN1bWFibGUgZnJvbSBcInJlc3VtYWJsZWpzXCI7XHJcbmltcG9ydCB7IEFwaVVybHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvYXBpLXVybHMnO1xyXG5pbXBvcnQgeyBBdmFpbGFibGVMYW5ncyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9hdmFpbGFibGUtbGFuZ3VhZ2VzJztcclxuaW1wb3J0IHsgSW1wb3J0Q29uZmlndXJhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ltcG9ydC1jb25maWd1cmF0aW9uLW1vZGVsJztcclxuaW1wb3J0IHsgQ2hhdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jaGF0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQdXNoTm90aWZpY2F0aW9uc1NlcnZpY2UgfSBmcm9tICduZy1wdXNoLWl2eSc7XHJcbmltcG9ydCB7IE1lc3NhZ2VUeXBpbmdEZXRhaWxzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL01lc3NhZ2VUeXBpbmdEZXRhaWxzJztcclxuaW1wb3J0IHsgUHViTnViQW5ndWxhciB9IGZyb20gJ3B1Ym51Yi1hbmd1bGFyMic7XHJcbmltcG9ydCB7IEludHJvTW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL0ludHJvTW9kZWxcIjtcclxuaW1wb3J0IHsgTGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9sZWF2ZUFwcGxpY2F0aW9uTm90aWZpY3Rpb24nO1xyXG5pbXBvcnQgeyBTaWduYWxyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NpZ25hbHIuc2VydmljZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLWhlYWRlci1zaWRlXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9oZWFkZXItc2lkZS50ZW1wbGF0ZS5odG1sXCIsXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignZmFkZScsIFtcclxuICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgW1xyXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCB9KSxcclxuICAgICAgICBhbmltYXRlKDIwMDAsIHN0eWxlKHsgb3BhY2l0eTogMSB9KSksXHJcbiAgICAgICAgYW5pbWF0ZSg2MDAwLCBzdHlsZSh7IG9wYWNpdHk6IDAgfSkpXHJcbiAgICAgIF0pXHJcbiAgICBdKVxyXG4gIF1cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBIZWFkZXJTaWRlQ29tcG9uZW50IGV4dGVuZHMgQ3VzdG9tQXBwQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgnZmVlZFRpbWVTaGVldCcpIGZlZWRUaW1lU2hlZXRQb3BvdmVyOiBTYXRQb3BvdmVyO1xyXG4gIEBWaWV3Q2hpbGQoJ2ZlZWRCYWNrUG9wb3ZlcicpIGZlZWRCYWNrUG9wT3ZlcjogU2F0UG9wb3ZlcjtcclxuICBAVmlld0NoaWxkcmVuKFwiZmlsZVVwbG9hZERyb3B6b25lUG9wdXBcIikgZmlsZVVwbG9hZERyb3B6b25lUG9wdXA7XHJcbiAgQFZpZXdDaGlsZCgnZG9jdW1lbnRQb3BvdmVyJykgZG9jdW1lbnRQb3BvdmVyOiBTYXRQb3BvdmVyO1xyXG4gIHNvZnRMYWJlbHM6IFNvZnRMYWJlbENvbmZpZ3VyYXRpb25Nb2RlbFtdO1xyXG4gIEBJbnB1dCgpIG5vdGlmaWNQYW5lbDtcclxuICBAT3V0cHV0KCkgb3BlbmVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQFZpZXdDaGlsZChcIm9wZW5Bbm5vdWNlbWVudERpYWxvZ0NvbXBvbmVudFwiKSBwcml2YXRlIG9wZW5Bbm5vdWNlbWVudERpYWxvZ0NvbXBvbmVudDogVGVtcGxhdGVSZWY8YW55PjtcclxuICBzcGlubmVyVHlwZSA9IFNQSU5ORVIuY2lyY2xlO1xyXG4gIHB1YmxpYyBhdmFpbGFibGVMYW5ncyA9IEF2YWlsYWJsZUxhbmdzLmxhbmd1YWdlcztcclxuICBwdWJsaWMgYXZhaWxhYmxlTGFuZ3NNb2JpbGUgPSBbXHJcbiAgICB7XHJcbiAgICAgIG5hbWU6IFwiRW5cIixcclxuICAgICAgY29kZTogXCJlblwiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBuYW1lOiBcIlRlXCIsXHJcbiAgICAgIGNvZGU6IFwidGVcIlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgbmFtZTogXCJLb1wiLFxyXG4gICAgICBjb2RlOiBcImtvXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIG5hbWU6IFwiQXJcIixcclxuICAgICAgY29kZTogXCJhclwiXHJcbiAgICB9XHJcbiAgXTtcclxuICAvLyB0aGVtZU1vZGVsJDogT2JzZXJ2YWJsZTxUaGVtZU1vZGVsPjtcclxuICBjb3VudE9mTm90aWZpY2F0aW9ucyQ6IE9ic2VydmFibGU8bnVtYmVyPjtcclxuICBub3RpZmljYXRpb25zJDogT2JzZXJ2YWJsZTxOb3RpZmljYXRpb25PdXRwdXRNb2RlbFtdPjtcclxuICB1bnJlYWRDb3VudE9mTm90aWZpY2F0aW9ucyQ6IE9ic2VydmFibGU8bnVtYmVyPjtcclxuICBhc3NldElkJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xyXG4gIHVzZXJTdG9yZUlkJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xyXG4gIHRoZW1lTW9kZWw6IFRoZW1lTW9kZWw7XHJcbiAgcmVsb2FkOiBib29sZWFuO1xyXG4gIHB1YmxpYyBuZ0Rlc3Ryb3llZCQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIGRhc2hib2FyZEZpbHRlcnMgPSB7XHJcbiAgICBwcm9qZWN0SWQ6IG51bGwsXHJcbiAgICB1c2VySWQ6IG51bGwsXHJcbiAgICBnb2FsSWQ6IG51bGwsXHJcbiAgICBpc0RhaWxvZ3VlOiB0cnVlXHJcbiAgfTtcclxuICBwdWJsaWMgZWdyZXRUaGVtZXM7XHJcbiAgcHVibGljIGxheW91dENvbmY6IGFueTtcclxuICBwdWJsaWMgdGltZXNoZWV0RGlzYWJsZW9yRW5hYmxlOiBUaW1lc2hlZXREaXNhYmxlb3JFbmFibGU7XHJcbiAgZG9tYWluczogYW55W107XHJcbiAgbG9hZGluZ0luUHJvZ3Jlc3MkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xyXG4gIHRpbWVQdW5jaENhcmRTaG93ID0gZmFsc2U7XHJcbiAgc2hvd1RyYWlsUGVyaW9kOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYXBwbGljYXRpb25WZXJzaW9uOiBhbnk7XHJcbiAgY29tcGFuaWVzTGlzdCA9IFtdO1xyXG4gIG1lbnVUeXBlOiBzdHJpbmdcclxuICBpc0ZlZWRCYWNrRGlhbG9nOiBib29sZWFuO1xyXG4gIHNlbGVjdGVkTGFuZ05hbWU6IHN0cmluZztcclxuICBjdXJyZW50TGFuZzogc3RyaW5nO1xyXG4gIHNlbGVjdGVkU3RvcmVJZDogc3RyaW5nID0gXCJcIjtcclxuICB1c2VyU3RvcmVJZDogc3RyaW5nO1xyXG4gIHN0b3Jlc0xpc3Q6IFN0b3JlTW9kZWxbXTtcclxuICB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nO1xyXG4gIGlzUmVjb3JkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJvamVjdFJvbGVUZXh0OiBzdHJpbmcgPSAnUHJvamVjdCByb2xlIGNvbmZpZ3VyYXRpb24nO1xyXG4gIGxvZ2dlZEluVXNlcklkOiBzdHJpbmcgPSBcIlwiO1xyXG4gIGNvbXBhbnk6IGFueTtcclxuICBsb2dnZWRVc2VyRGV0YWlsczogYW55O1xyXG4gIG5vT2ZEYXlzOiBhbnk7XHJcbiAgc2hvd0RlbGV0ZUljb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93RGVsZXRlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNTdG9yZUFjY2VzczogYm9vbGVhbiA9IHRydWU7XHJcbiAgY29tcGFueUlkOiBzdHJpbmc7XHJcbiAgcmV0dXJuVXJsOiBzdHJpbmc7XHJcbiAgc2VsZWN0ZWRDb21wYW55TmFtZTogc3RyaW5nO1xyXG4gIHNlbGVjdGVkQ29tcGFueTogQ29tcGFuaWVzTGlzdDtcclxuICB1c2VyTmFtZTogc3RyaW5nO1xyXG4gIGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgYXV0aGVudGljYXRlZFVzZXJSZWNvcmQ6IFVzZXJNb2RlbDtcclxuICBlbXBsb3llZUlkOiBzdHJpbmc7XHJcbiAgaXNGZWVkVGltZVNoZWV0OiBib29sZWFuO1xyXG4gIGRlZmF1bHREYXNoYm9hcmRJZDogc3RyaW5nO1xyXG4gIHRpbWVTaGVldEJ1dHRvbkRldGFpbHMkOiBPYnNlcnZhYmxlPFRpbWVzaGVldERpc2FibGVvckVuYWJsZT5cclxuICBub3RpZmljYXRpb25zOiBOb3RpZmljYXRpb25PdXRwdXRNb2RlbFtdO1xyXG4gIGFubm91bmNlbWVudElkOiBzdHJpbmc7XHJcbiAgYW5ub3VuY2VOb3RpZmljYXRpb25JZDogc3RyaW5nO1xyXG4gIGRpc3BsYXlXZWxjb21lTm90ZTogYm9vbGVhbjtcclxuICBsb2dnZWRJbkNvdW50OiBhbnk7XHJcbiAgdXNlckZ1bGxOYW1lOiBhbnk7XHJcbiAgZmlsZXM6IEZpbGVbXSA9IFtdO1xyXG4gIGZpbGVzUHJlc2VudDogYm9vbGVhbjtcclxuICBwcm9ncmVzc1ZhbHVlOiBudW1iZXI7XHJcbiAgZmlsZVJlc3VsdE1vZGVsOiBGaWxlUmVzdWx0TW9kZWxbXTtcclxuICBtb2R1bGVUeXBlSWQgPSA5O1xyXG4gIGFueU9wZXJhdGlvbkluUHJvZ3Jlc3M6IGJvb2xlYW47XHJcbiAgZmlsZUluZGV4OiBudW1iZXIgPSAwO1xyXG4gIGZpbGVDb3VudGVyOiBudW1iZXIgPSAxO1xyXG4gIHVwbG9hZGVkRmlsZU5hbWVzID0gW107XHJcbiAgaXNGaWxlVXBsb2FkQ29tcGxldGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNGb2xkZXJVcGxvYWRDb21wbGV0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpbXBvcnRpbmdJblByb2dyZXNzOiBib29sZWFuO1xyXG4gIHNlYXJjaFRleHQ6IHN0cmluZyA9IG51bGw7XHJcbiAgLy8gbWVzc2FnZXNVbnJlYWRDb3VudDogbnVtYmVyID0gMDtcclxuICBjaGFubmVsTGlzdDogYW55O1xyXG4gIHVzZXJDaGFubmVsczogYW55O1xyXG4gIGNvbGxlYWd1ZXNMaXN0OiBhbnk7XHJcbiAgbG9nZ2VkSW5Vc2VyZnVsbE5hbWU6IGFueTtcclxuICBsb2dJblVzZXJJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDdXJyZW50VXNlcklkXCIpO1xyXG4gIGxvZ2luVXNlcmNoYW5uZWxOYW1lOiBzdHJpbmc7XHJcbiAgcHJldmlvdXNNZXNzYWdlOiBhbnk7XHJcbiAgcHVibGlzaGluZ01lc3NhZ2VPZlVzZXI6IGFueTtcclxuICBuZXdOb3RpZmljYXRpb25zQ291bnQ6IGFueSA9IDA7XHJcbiAgYXZhdGFyQ29sb3JzID0gW1wiIzAwMDBGRlwiLCBcIiNBNTJBMkFcIiwgXCIjRDI2OTFFXCIsIFwiIzhCMDA4QlwiLCBcIiM4QjAwMDBcIiwgXCIjMDA4MDAwXCJdO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHB1c2hOb3RpZmljYXRpb25zOiBQdXNoTm90aWZpY2F0aW9uc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRoZW1lU2VydmljZTogVGhlbWVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuZ3hTZXJ2aWNlOiBOZ3hVaUxvYWRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxheW91dDogTGF5b3V0U2VydmljZSxcclxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGNvb2tpZVNlcnZpY2U6IENvb2tpZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIGNvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxTdGF0ZT4sXHJcbiAgICBwcml2YXRlIHB1Ym51YjogUHViTnViQW5ndWxhcixcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgYWN0aW9uVXBkYXRlcyQ6IEFjdGlvbnMsXHJcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzdG9yZU1hbmFnZW1lbnRTZXJ2aWNlOiBTdG9yZU1hbmFnZW1lbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBTaGVsbE1vZHVsZXNTZXJ2aWNlOiBTaGVsbE1vZHVsZXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjaGF0U2VydmljZTogQ2hhdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNpZ25hbHI6IFNpZ25hbHJTZXJ2aWNlLFxyXG4gICAgQEluamVjdChXSU5ET1cpIHByaXZhdGUgd2luZG93OiBXaW5kb3dcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICAvLyB0aGlzLnNpZ25hbHIuaW5pdGlhbGl6ZVNpZ25hbFJDb25uZWN0aW9uKCk7XHJcbiAgICB0aGlzLnNpZ25hbHIubm90aWZpY2F0aW9ucyQuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHRoaXMubmV3Tm90aWZpY2F0aW9uc0NvdW50ID0gZGF0YSAmJiBkYXRhLmxlbmd0aCA/IGRhdGEubGVuZ3RoIDogMCk7XHJcblxyXG4gICAgdGhpcy5wdXNoTm90aWZpY2F0aW9ucy5yZXF1ZXN0UGVybWlzc2lvbigpO1xyXG4gICAgdGhpcy5pc1JlY29yZGluZyA9IGZhbHNlO1xyXG4gICAgLy8gdGhpcy5nZXRBY3RUcmFja2VyUmVjb3JkZXIoKTtcclxuICAgIGlmICgobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyTW9kZWwpICE9IG51bGwgJiYgbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyTW9kZWwpICE9IHVuZGVmaW5lZClcclxuICAgICkge1xyXG4gICAgICB0aGlzLmxvYWROb3RpZmljYXRpb25zKCk7XHJcbiAgICAgIHRoaXMudG9nZ2xlUmVjb3JkaW5nKCk7XHJcbiAgICB9XHJcbiAgICBsZXQgY3VycmVudEN1bHR1cmUgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudEN1bHR1cmUpO1xyXG4gICAgY29uc3QgY29tcGFueWxhbiA9IEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlEZXRhaWxzKSk7XHJcbiAgICBsZXQgY3VycmVudEN1bHR1cmVsYW4gPSBjb21wYW55bGFuLmxhbkNvZGU7XHJcblxyXG4gICAgaWYgKGN1cnJlbnRDdWx0dXJlID09ICcnIHx8IGN1cnJlbnRDdWx0dXJlID09IG51bGwgfHwgY3VycmVudEN1bHR1cmUgPT0gdW5kZWZpbmVkIHx8IGN1cnJlbnRDdWx0dXJlID09PSAnbnVsbCcgfHwgY3VycmVudEN1bHR1cmUgPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIGlmIChjdXJyZW50Q3VsdHVyZWxhbiA9PSAnJyB8fCBjdXJyZW50Q3VsdHVyZWxhbiA9PSBudWxsIHx8IGN1cnJlbnRDdWx0dXJlbGFuID09IHVuZGVmaW5lZCB8fCBjdXJyZW50Q3VsdHVyZWxhbiA9PT0gJ251bGwnIHx8IGN1cnJlbnRDdWx0dXJlbGFuID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgIGN1cnJlbnRDdWx0dXJlID0gJ2VuJztcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjdXJyZW50Q3VsdHVyZSA9IGN1cnJlbnRDdWx0dXJlbGFuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmN1cnJlbnRMYW5nID0gY3VycmVudEN1bHR1cmU7XHJcbiAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50Q3VsdHVyZSwgdGhpcy5jdXJyZW50TGFuZywgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMuYWN0aW9uVXBkYXRlcyRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdEZXN0cm95ZWQkKSxcclxuICAgICAgICBvZlR5cGUoQXV0aGVudGljYXRpb25BY3Rpb25UeXBlcy5Vc2VyRGV0YWlsc0ZldGNoZWRBZnRlckNvbXBhbnlMb2dpbiksXHJcbiAgICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMucmVsb2FkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuZ2V0SW50cm9EZXRhaWxzKCk7XHJcbiAgICAgICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICAgICAgICB0aGlzLmdldE5vdGlmaWNhdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuZ2V0VGVhbU1lbWJlcnMoKTtcclxuICAgICAgICAgIHZhciBEZWZhdWx0RGFzaGJvYXJkSWRGb3JMb2dnZWRJblVzZXIgPSB0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EZWZhdWx0RGFzaGJvYXJkKSA/IEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkRlZmF1bHREYXNoYm9hcmQpKSA6IG51bGw7XHJcbiAgICAgICAgICBjb25zdCB1c2VyUmVmZXJlbmNlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyUmVmZXJlbmNlSWQpO1xyXG4gICAgICAgICAgaWYgKCFEZWZhdWx0RGFzaGJvYXJkSWRGb3JMb2dnZWRJblVzZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMucmV0dXJuVXJsXSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHVzZXJSZWZlcmVuY2UgIT0gXCJudWxsXCIgJiYgdXNlclJlZmVyZW5jZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvXCIgKyBEZWZhdWx0RGFzaGJvYXJkSWRGb3JMb2dnZWRJblVzZXIgKyBcIi9mb3JtL1wiICsgdXNlclJlZmVyZW5jZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgRGVmYXVsdERhc2hib2FyZElkRm9yTG9nZ2VkSW5Vc2VyKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCk7XHJcblxyXG5cclxuICAgIHRoaXMuYWN0aW9uVXBkYXRlcyRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdEZXN0cm95ZWQkKSxcclxuICAgICAgICBvZlR5cGUoQXV0aGVudGljYXRpb25BY3Rpb25UeXBlcy5Vc2VyRGV0YWlsc0ZldGNoZWRBZnRlckxvZ2luKSxcclxuICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IEN1cnJlbnRVc2VySWQgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudFVzZXJJZCk7XHJcbiAgICAgICAgICAgICAgLy8gU3Vic2NyaWJlIHRvIFRhc2sgQXNzaWdubWVudCBOb3RpZmljYWl0b25zIGhlcmUuXHJcbiAgICAgICAgICAgICAgY29uc3QgdGFza0Fzc2lnbm1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfVGFza0Fzc2lnbm1lbnRzICsgQ3VycmVudFVzZXJJZDtcclxuICAgICAgICAgICAgICBjb25zdCB0YXN0YXR1c1JlcG9ydFN1Ym1pc3Npb25DaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfU3RhdHVzUmVwb3J0U3VibWlzc2lvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgICAgY29uc3QgdGFzdGF0dXNDb25maWdBc3NpZ25DaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfU3RhdHVzQ29uZmlnQXNzaWduICsgQ3VycmVudFVzZXJJZDtcclxuICAgICAgICAgICAgICBjb25zdCBtdWx0aUNoYXJ0c1NjaGVkdWxpbmdDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfTXVsdGlDaGFydHNTY2hlZHVsaW5nICsgQ3VycmVudFVzZXJJZDtcclxuICAgICAgICAgICAgICBjb25zdCBhc3NldHNBc3NpZ25lZENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Bc3NldEFzc2lnbm1lbnQgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHByb2plY3RDcmVhdGVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX05ld1Byb2plY3QgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHByb2plY3RBY2Nlc3NUb01lbWJlckNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Qcm9qZWN0TWVtYmVyUm9sZSArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgICAgY29uc3QgZ29hbEFwcHJvdmVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX0dvYWxBcHByb3ZlZEZyb21SZXBsYW4gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHVzZXJTdG9yeVVwZGF0ZUNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Vc2VyU3RvcnlVcGRhdGVOb3RpZmljYXRpb24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICAgIGNvbnN0IEFubm91bmNlbWVudENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Bbm5vdW5jZW1lbnROb3RpZmljYXRpb24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHB1cmNoYXNlRXhlY3V0aW9uQXNzaWduZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfUHVyY2hhc2VFeGVjdXRpb25Bc3NpZ25Ub0VtcGxveWVlTm90aWZpY2F0aW9uICsgQ3VycmVudFVzZXJJZDtcclxuICAgICAgICAgICAgICBwdWJudWIuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIGNoYW5uZWxzOiBbdGFza0Fzc2lnbm1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvLCB0YXN0YXR1c1JlcG9ydFN1Ym1pc3Npb25DaGFubmVsVG9TdWJzY3JpYmVJbnRvLFxyXG4gICAgICAgICAgICAgICAgICB0YXN0YXR1c0NvbmZpZ0Fzc2lnbkNoYW5uZWxUb1N1YnNjcmliZUludG8sIG11bHRpQ2hhcnRzU2NoZWR1bGluZ0NoYW5uZWxUb1N1YnNjcmliZUludG8sXHJcbiAgICAgICAgICAgICAgICAgIGFzc2V0c0Fzc2lnbmVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50bywgcHJvamVjdENyZWF0ZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvLCAsXHJcbiAgICAgICAgICAgICAgICAgIHByb2plY3RBY2Nlc3NUb01lbWJlckNoYW5uZWxUb1N1YnNjcmliZUludG8sIGdvYWxBcHByb3ZlZENoYW5uZWxUb1N1YnNjcmliZUludG8sXHJcbiAgICAgICAgICAgICAgICAgIHVzZXJTdG9yeVVwZGF0ZUNoYW5uZWxUb1N1YnNjcmliZUludG8sIEFubm91bmNlbWVudENoYW5uZWxUb1N1YnNjcmliZUludG8sIHB1cmNoYXNlRXhlY3V0aW9uQXNzaWduZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvXVxyXG4gICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAvLyBBZGQgb3RoZXIgc3Vic2NyaXB0aW9ucyBoZXJlLlxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiVXNlciBub3QgbG9nZ2VkIGluIHlldCB0byBiZSBhYmxlIHRvIHN1YnNjcmliZS5cIik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHZhciByb2xlVXBkYXRlc0NoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Sb2xlVXBkYXRlcyArIFwiMTlCNkY5RkMtNzM3MC00QjlDLUEwNUMtM0I4RDgxOUVFRUFGXCI7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwic3Vic2NyaWJpbmcgdG8gXCIgKyByb2xlVXBkYXRlc0NoYW5uZWxUb1N1YnNjcmliZUludG8pO1xyXG4gICAgICAgICAgICBwdWJudWIuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICBjaGFubmVsczogW3JvbGVVcGRhdGVzQ2hhbm5lbFRvU3Vic2NyaWJlSW50b11cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9LCAzMDAwKTtcclxuICAgICAgICB9KSkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgdGhpcy5hY3Rpb25VcGRhdGVzJFxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ0Rlc3Ryb3llZCQpLFxyXG4gICAgICAgIG9mVHlwZShOb3RpZmljYXRpb25zQWN0aW9uVHlwZXMuQ2xlYXJBbGxVbnJlYWROb3RpZmljYXRpb25zQ29tcGxldGVkKSxcclxuICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZ2V0Tm90aWZpY2F0aW9uQWxsKSk7XHJcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zID0geDtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLm5vdGlmaWNhdGlvbnMuZmluZEluZGV4KChwKSA9PiBKU09OLnBhcnNlKHAubm90aWZpY2F0aW9uSnNvbikuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuQW5ub3VuY2VtZW50X1JlY2VpdmVkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgLy90aGlzLmFubm91bmNlTm90aWZpY2F0aW9uSWQgPSBKU09OLnBhcnNlKHRoaXMubm90aWZpY2F0aW9uc1tpbmRleF0ubm90aWZpY2F0aW9uSnNvbikubm90aWZpY2F0aW9uSWQ7XHJcbiAgICAgICAgICAgICAgdGhpcy5hbm5vdW5jZU5vdGlmaWNhdGlvbklkID0gdGhpcy5ub3RpZmljYXRpb25zW2luZGV4XS5ub3RpZmljYXRpb25JZDtcclxuICAgICAgICAgICAgICB0aGlzLm9wZW5Bbm5vdW5jZW1lbnREaWFsb2coSlNPTi5wYXJzZSh0aGlzLm5vdGlmaWNhdGlvbnNbaW5kZXhdLm5vdGlmaWNhdGlvbkpzb24pKTtcclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAvLyB0aGlzLmFjdGlvblVwZGF0ZXMkXHJcbiAgICAvLyAgIC5waXBlKFxyXG4gICAgLy8gICAgIHRha2VVbnRpbCh0aGlzLm5nRGVzdHJveWVkJCksXHJcbiAgICAvLyAgICAgb2ZUeXBlKE1lc3NhZ2VBY3Rpb25UeXBlcy5Db3VudENvbXBsZXRlZCksXHJcbiAgICAvLyAgICAgdGFwKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgLy8gICAgICAgdGhpcy5tZXNzYWdlc1VucmVhZENvdW50ID0gcmVzdWx0Lm1lc3NhZ2VDb3VudDtcclxuICAgIC8vICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgLy8gICAgIH0pXHJcbiAgICAvLyAgIClcclxuICAgIC8vICAgLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIHRoaXMuYWN0aW9uVXBkYXRlcyRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdEZXN0cm95ZWQkKSxcclxuICAgICAgICBvZlR5cGUoTWVzc2FnZUFjdGlvblR5cGVzLlJlcXVlc3RpbmdTdGF0ZU9mVXNlcnNDb21wbGV0ZWQpLFxyXG4gICAgICAgIHRhcCgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuc3ViU2NyaWJpbmdUb1ByZXNlbmNlQ2hhbm5lbCgpO1xyXG5cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuYWN0aW9uVXBkYXRlcyRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdEZXN0cm95ZWQkKSxcclxuICAgICAgICBvZlR5cGUoTWVzc2FnZUFjdGlvblR5cGVzLk1lc3NhZ2VDb21wbGV0ZWQpLFxyXG4gICAgICAgIHRhcCgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICAgIHZhciBtZXNzYWdlRGV0YWlscyA9IHJlc3VsdFsnbWVzc2FnZURldGFpbHMnXTtcclxuICAgICAgICAgIHRoaXMucHVibGlzaGluZ01lc3NhZ2VPZlVzZXIgPSBtZXNzYWdlRGV0YWlscztcclxuICAgICAgICAgIHRoaXMucHVibGlzaGluZ01lc3NhZ2UoKTtcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuYWN0aW9uVXBkYXRlcyRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdEZXN0cm95ZWQkKSxcclxuICAgICAgICBvZlR5cGUoTWVzc2FnZUFjdGlvblR5cGVzLlNlbmRDaGFubmVsVXBkYXRlTW9kZWxDb21wbGV0ZWQpLFxyXG4gICAgICAgIHRhcCgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICAgIHZhciBjaGFubmVsVXBkYXRlTW9kZWwgPSByZXN1bHRbJ2NoYW5uZWxVcGRhdGVNb2RlbCddO1xyXG4gICAgICAgICAgdmFyIGxvZ2luQ29tcGFueUlkID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChcIkNvbXBhbnlJZFwiKTtcclxuICAgICAgICAgIHRoaXMucHVibnViLnB1Ymxpc2goe1xyXG4gICAgICAgICAgICBjaGFubmVsOiBbKGxvZ2luQ29tcGFueUlkICsgJy0nICsgY2hhbm5lbFVwZGF0ZU1vZGVsLmNoYW5uZWxJZCldLFxyXG4gICAgICAgICAgICBtZXNzYWdlOiBKU09OLnN0cmluZ2lmeShjaGFubmVsVXBkYXRlTW9kZWwpXHJcbiAgICAgICAgICB9LCBmdW5jdGlvbiAoc3RhdHVzLCByZXNvcG5zZSkge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhzdGF0dXMpXHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHJlc29wbnNlKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKTtcclxuXHJcblxyXG4gICAgdGhpcy5hY3Rpb25VcGRhdGVzJFxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ0Rlc3Ryb3llZCQpLFxyXG4gICAgICAgIG9mVHlwZShNZXNzYWdlQWN0aW9uVHlwZXMuU2VuZGluZ1NpZ25hbENvbXBsZXRlZCksXHJcbiAgICAgICAgdGFwKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdmFyIG1lc3NhZ2VUeXBpbmdEZXRhaWxzID0gcmVzdWx0Lm1lc3NhZ2VUeXBpbmdEZXRhaWxzO1xyXG4gICAgICAgICAgdmFyIHNpZ25hbE1lc3NhZ2UgPSBuZXcgTWVzc2FnZVR5cGluZ0RldGFpbHMoKTtcclxuICAgICAgICAgIHNpZ25hbE1lc3NhZ2Uuc3RhdGUgPSBtZXNzYWdlVHlwaW5nRGV0YWlscy5zdGF0ZTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKG1lc3NhZ2VUeXBpbmdEZXRhaWxzLCBzaWduYWxNZXNzYWdlKTtcclxuICAgICAgICAgIC8vIHRoaXMucHVibnViLnNpZ25hbCh7XHJcbiAgICAgICAgICAvLyAgIGNoYW5uZWw6W21lc3NhZ2VUeXBpbmdEZXRhaWxzLnB1Ym51YkNoYW5uZWxOYW1lT2ZNZXNzYWdlXSxcclxuICAgICAgICAgIC8vICAgbWVzc2FnZSA6IEpTT04uc3RyaW5naWZ5KHNpZ25hbE1lc3NhZ2UpXHJcbiAgICAgICAgICAvLyB9KVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgpO1xyXG4gICAgY29uc3Qgc3RvcmVMaXN0bmVyID0gKG1lc3NhZ2UpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coXCItLS0tLS0tLS1SZWNlaXZlZCBwdWJudWIgbWVzc2FnZS0tLS0tLS0tLVwiKTtcclxuICAgICAgLy90aGlzLnRvYXN0ci5pbmZvKG1lc3NhZ2UubWVzc2FnZS5TdW1tYXJ5KTtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICAvL1JlY2VpdmluZyB0aGUgVXNlciBTdG9yeSBBc3NpZ25lZCBOb3RpZmljYXRpb25cclxuICAgICAgICBpZiAodHlwZW9mIChtZXNzYWdlLm1lc3NhZ2UpID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICB2YXIgaW5kZXhPZkN1cnJlbnRUb3BpYzogbnVtYmVyO1xyXG4gICAgICAgICAgdmFyIG1lc3NhZ2VEZXRhaWxzT2JqZWN0ID0gSlNPTi5wYXJzZShtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgaWYgKG1lc3NhZ2VEZXRhaWxzT2JqZWN0LnRleHRNZXNzYWdlIHx8IG1lc3NhZ2VEZXRhaWxzT2JqZWN0LmZpbGVQYXRoIHx8IG1lc3NhZ2VEZXRhaWxzT2JqZWN0Lm1lc3NhZ2VUeXBlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJlY2VpdmVNZXNzYWdlVHJpZ2dlcmVkKG1lc3NhZ2VEZXRhaWxzT2JqZWN0KSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChtZXNzYWdlRGV0YWlsc09iamVjdC5pc0Zyb21DaGFubmVsQXJjaGl2ZSA9PSB0cnVlIHx8XHJcbiAgICAgICAgICAgIG1lc3NhZ2VEZXRhaWxzT2JqZWN0LmlzRnJvbVJlbW92ZU1lbWJlciA9PSB0cnVlIHx8XHJcbiAgICAgICAgICAgIG1lc3NhZ2VEZXRhaWxzT2JqZWN0LnJlZnJlc2hDaGFubmVscyA9PSB0cnVlIHx8IG1lc3NhZ2VEZXRhaWxzT2JqZWN0LmlzRnJvbUFkZE1lbWJlciA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhdFNlcnZpY2UuZ2V0VXNlckNoYW5uZWxzKCkuc3Vic2NyaWJlKChjaGFubmVsczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFubmVsTGlzdCA9IGNoYW5uZWxzLmRhdGE7XHJcbiAgICAgICAgICAgICAgdmFyIGxvZ2luQ29tcGFueUlkID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChcIkNvbXBhbnlJZFwiKTtcclxuICAgICAgICAgICAgICB2YXIgY2hhbm5lbE5hbWUgPSBsb2dpbkNvbXBhbnlJZCArICctJyArIG1lc3NhZ2VEZXRhaWxzT2JqZWN0LmNoYW5uZWxJZDtcclxuICAgICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmNoYW5uZWxMaXN0LmZpbmRJbmRleCh4ID0+IHguaWQgPT0gbWVzc2FnZURldGFpbHNPYmplY3QuY2hhbm5lbElkKTtcclxuICAgICAgICAgICAgICBpZiAoaW5kZXggIT0gLTEgJiYgKG1lc3NhZ2VEZXRhaWxzT2JqZWN0LnJlZnJlc2hDaGFubmVscyA9PSB0cnVlIHx8IG1lc3NhZ2VEZXRhaWxzT2JqZWN0LmlzRnJvbUFkZE1lbWJlciA9PSB0cnVlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wdWJudWIuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgICAgY2hhbm5lbHM6IFtjaGFubmVsTmFtZV1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hhbm5lbHM6IFtjaGFubmVsTmFtZV1cclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUmVjZWl2ZUNoYW5uZWxVcGRhdGVNb2RlbFRyaWdnZXJlZChtZXNzYWdlRGV0YWlsc09iamVjdCkpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3QudXJsICE9IFwiL2NoYXRcIiAmJiBtZXNzYWdlRGV0YWlsc09iamVjdC5tZXNzYWdlVHlwZSAhPSBcIlJlYWN0aW9uXCIgJiYgbWVzc2FnZURldGFpbHNPYmplY3QuYm9keSAhPSBudWxsICYmIG1lc3NhZ2VEZXRhaWxzT2JqZWN0LnRpdGxlICE9IG51bGwgJiYgKG1lc3NhZ2VEZXRhaWxzT2JqZWN0LmlzUGlubmVkID09IG51bGwgfHwgbWVzc2FnZURldGFpbHNPYmplY3QuaXNQaW5uZWQgPT0gdW5kZWZpbmVkKSAmJiAobWVzc2FnZURldGFpbHNPYmplY3QuaXNTdGFycmVkID09IG51bGwgfHwgbWVzc2FnZURldGFpbHNPYmplY3QuaXNTdGFycmVkID09IHVuZGVmaW5lZCkgJiYgbWVzc2FnZURldGFpbHNPYmplY3Quc2VuZGVyVXNlcklkICE9IHRoaXMubG9nSW5Vc2VySWQpIHtcclxuICAgICAgICAgICAgaWYgKG1lc3NhZ2VEZXRhaWxzT2JqZWN0LmNoYW5uZWxJZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhdFNlcnZpY2UuZ2V0VXNlckNoYW5uZWxzKCkuc3Vic2NyaWJlKChjaGFubmVsczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5uZWxMaXN0ID0gY2hhbm5lbHMuZGF0YTtcclxuICAgICAgICAgICAgICAgIGluZGV4T2ZDdXJyZW50VG9waWMgPSB0aGlzLmNoYW5uZWxMaXN0LmZpbmRJbmRleCh4ID0+IHguaWQgPT0gbWVzc2FnZURldGFpbHNPYmplY3QuY2hhbm5lbElkKTtcclxuICAgICAgICAgICAgICAgIGlmIChpbmRleE9mQ3VycmVudFRvcGljICE9IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgIC8vIHRoaXMubm90aWZpY2F0aW9uT2ZDaGF0KG1lc3NhZ2VEZXRhaWxzT2JqZWN0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAvLyB0aGlzLm5vdGlmaWNhdGlvbk9mQ2hhdChtZXNzYWdlRGV0YWlsc09iamVjdCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2VcclxuICAgICAgICAgIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5Ob3RpZmljYXRpb25fV29ya0l0ZW1Bc3NpZ25lZFRvVXNlcikge1xyXG4gICAgICAgICAgICB2YXIgdXNlclN0b3J5QXNzaWduZWROb3RpZmljYXRpb24gPSBuZXcgVXNlclN0b3J5QXNzaWduZWROb3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgdXNlclN0b3J5QXNzaWduZWROb3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgdXNlclN0b3J5QXNzaWduZWROb3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdXb3JrSXRlbSArIHVzZXJTdG9yeUFzc2lnbmVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvbklkO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZCh1c2VyU3RvcnlBc3NpZ25lZE5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5HZW5lcmljTm90aWZpY2F0aW9uQWN0aXZpdHkpIHtcclxuICAgICAgICAgICAgdmFyIHVzZXJTdG9yeUFzc2lnbmVkTm90aWZpY2F0aW9uID0gbmV3IFVzZXJTdG9yeUFzc2lnbmVkTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHVzZXJTdG9yeUFzc2lnbmVkTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIC8vIHVzZXJTdG9yeUFzc2lnbmVkTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3V29ya0l0ZW0gKyB1c2VyU3RvcnlBc3NpZ25lZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25JZDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQodXNlclN0b3J5QXNzaWduZWROb3RpZmljYXRpb24pKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkID09IE5vdGlmaWNhdGlvblR5cGVJZHMuTm90aWZpY2F0aW9uX1JvbGVVcGRhdGVkKSB7XHJcbiAgICAgICAgICAgIHZhciByb2xlVXBkYXRlZE5vdGlmaWNhdGlvbiA9IG5ldyBSb2xlVXBkYXRlZE5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgICAgICByb2xlVXBkYXRlZE5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByb2xlVXBkYXRlZE5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKHJvbGVVcGRhdGVkTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZCA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlN0YXR1c19SZXBvcnRfU3VtaXR0ZWQpIHtcclxuICAgICAgICAgICAgdmFyIHJlcG9ydFN1Ym1pdHRlZE5vdGlmaWNhdGlvbiA9IG5ldyBSZXBvcnRTdWJtaXR0ZWROb3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgcmVwb3J0U3VibWl0dGVkTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJlcG9ydFN1Ym1pdHRlZE5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKHJlcG9ydFN1Ym1pdHRlZE5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5TdGF0dXNfUmVwb3J0X0NvbmZpZ19DcmVhdGVkKSB7XHJcbiAgICAgICAgICAgIHZhciByZXBvcnRDb25maWdBc3NpZ25lZE5vdGlmaWNhdGlvbiA9IG5ldyBSZXBvcnRDb25maWdBc3NpZ25lZE5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgICAgICByZXBvcnRDb25maWdBc3NpZ25lZE5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXBvcnRDb25maWdBc3NpZ25lZE5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKHJlcG9ydENvbmZpZ0Fzc2lnbmVkTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZCA9PSBOb3RpZmljYXRpb25UeXBlSWRzLk11bHRpcGxlX0NoYXJ0c19TY2hlZHVsaW5nX2NyZWF0ZWQpIHtcclxuICAgICAgICAgICAgdmFyIG11bHRpcGxlQ2hhcnRzU2NoZWR1bGluZyA9IG5ldyBNdWx0aXBsZUNoYXJ0c1NjaGVkdWxpbmcoKTtcclxuICAgICAgICAgICAgbXVsdGlwbGVDaGFydHNTY2hlZHVsaW5nLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIG11bHRpcGxlQ2hhcnRzU2NoZWR1bGluZy5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKG11bHRpcGxlQ2hhcnRzU2NoZWR1bGluZykpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5Bc3NldHNfQXNzaWdubWVudCkge1xyXG4gICAgICAgICAgICBjb25zdCBhc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uID0gbmV3IEFzc2V0QXNzaWduZWROb3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgYXNzZXRBc3NpZ25lZE5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBhc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQoYXNzZXRBc3NpZ25lZE5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuUmVtaW5kZXJfTm90aWZpY2F0aW9uLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBhc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uID0gbmV3IEFzc2V0QXNzaWduZWROb3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgYXNzZXRBc3NpZ25lZE5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBhc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQoYXNzZXRBc3NpZ25lZE5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuQW5ub3VuY2VtZW50X1JlY2VpdmVkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBhc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uID0gbmV3IEFzc2V0QXNzaWduZWROb3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgYXNzZXRBc3NpZ25lZE5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBhc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQoYXNzZXRBc3NpZ25lZE5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgICAvLyBpZiAobWVzc2FnZS5tZXNzYWdlLklkICE9IHRoaXMuYW5ub3VuY2VOb3RpZmljYXRpb25JZCkge1xyXG4gICAgICAgICAgICAvLyAgIHRoaXMuYW5ub3VuY2VOb3RpZmljYXRpb25JZCA9IG1lc3NhZ2UubWVzc2FnZS5JZDtcclxuICAgICAgICAgICAgLy8gICB0aGlzLm9wZW5Bbm5vdW5jZW1lbnREaWFsb2cobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuUGVyZm9ybWFuY2VfUmVjZWl2ZWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIHx8IG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5Qcm9qZWN0TWVtYmVyUm9sZUFkZGVkTm90aWZpY2F0aW9uSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld1Byb2plY3RDcmVhdGVkTm90aWZpY2F0aW9uID0gbmV3IE5ld1Byb2plY3RDcmVhdGVkTm90aWZpY2F0aW9uTW9kZWwoKTtcclxuICAgICAgICAgICAgbmV3UHJvamVjdENyZWF0ZWROb3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgbmV3UHJvamVjdENyZWF0ZWROb3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChuZXdQcm9qZWN0Q3JlYXRlZE5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuTmV3UHJvamVjdENyZWF0ZWROb3RpZmljYXRpb25JZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgfHwgbWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlByb2plY3RNZW1iZXJSb2xlQWRkZWROb3RpZmljYXRpb25JZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgbmV3UHJvamVjdENyZWF0ZWROb3RpZmljYXRpb24gPSBuZXcgTmV3UHJvamVjdENyZWF0ZWROb3RpZmljYXRpb25Nb2RlbCgpO1xyXG4gICAgICAgICAgICBuZXdQcm9qZWN0Q3JlYXRlZE5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBuZXdQcm9qZWN0Q3JlYXRlZE5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKG5ld1Byb2plY3RDcmVhdGVkTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5Hb2FsQXBwcm92ZWRGcm9tUmVwbGFuLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBnb2FsQXBwcm92ZWROb3RpZmljYXRpb25Nb2RlbCA9IG5ldyBHb2FsQXBwcm92ZWROb3RpZmljYXRpb25Nb2RlbCgpO1xyXG4gICAgICAgICAgICBnb2FsQXBwcm92ZWROb3RpZmljYXRpb25Nb2RlbC5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBnb2FsQXBwcm92ZWROb3RpZmljYXRpb25Nb2RlbC5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKGdvYWxBcHByb3ZlZE5vdGlmaWNhdGlvbk1vZGVsKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5VU2VyU3RvcnlVcGRhdGVOb3RpZmljYXRpb25JZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgdXNlclN0b3J5VXBkYXRlTm90aWZpY2F0aW9uTW9kZWwgPSBuZXcgVXNlclN0b3J5VXBkYXRlTm90aWZpY2F0aW9uTW9kZWwoKTtcclxuICAgICAgICAgICAgdXNlclN0b3J5VXBkYXRlTm90aWZpY2F0aW9uTW9kZWwubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgdXNlclN0b3J5VXBkYXRlTm90aWZpY2F0aW9uTW9kZWwucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZCh1c2VyU3RvcnlVcGRhdGVOb3RpZmljYXRpb25Nb2RlbCkpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuUHVzaE5vdGlmaWNhdGlvbkZvclVzZXJTdG9yeUNvbW1lbnQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHVzZXJTdG9yeUNvbW1lbnROb3RpZmljYXRpb25Nb2RlbCA9IG5ldyBVc2VyU3RvcnlDb21tZW50Tm90aWZpY2F0aW9uTW9kZWwoKTtcclxuICAgICAgICAgICAgdXNlclN0b3J5Q29tbWVudE5vdGlmaWNhdGlvbk1vZGVsLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHVzZXJTdG9yeUNvbW1lbnROb3RpZmljYXRpb25Nb2RlbC5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKHVzZXJTdG9yeUNvbW1lbnROb3RpZmljYXRpb25Nb2RlbCkpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuU3ByaW50U3RhcnRlZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3Qgc3ByaW50U3RhcnRlZE5vdGlmaWNhdGlvbk1vZGVsID0gbmV3IFNwcmludFN0YXJ0ZWROb3RpZmljYXRpb25Nb2RlbCgpO1xyXG4gICAgICAgICAgICBzcHJpbnRTdGFydGVkTm90aWZpY2F0aW9uTW9kZWwubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgc3ByaW50U3RhcnRlZE5vdGlmaWNhdGlvbk1vZGVsLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQoc3ByaW50U3RhcnRlZE5vdGlmaWNhdGlvbk1vZGVsKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5TcHJpbnRSZXF1ZXN0ZEZvclJFcGxhbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3Qgc3ByaW50UmVwbGFuU3RhcnRlZE5vdGlmaWNhdGlvbk1vZGVsID0gbmV3IFNwcmludFJlcGxhblN0YXJ0ZWROb3RpZmljYXRpb25Nb2RlbCgpO1xyXG4gICAgICAgICAgICBzcHJpbnRSZXBsYW5TdGFydGVkTm90aWZpY2F0aW9uTW9kZWwubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgc3ByaW50UmVwbGFuU3RhcnRlZE5vdGlmaWNhdGlvbk1vZGVsLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQoc3ByaW50UmVwbGFuU3RhcnRlZE5vdGlmaWNhdGlvbk1vZGVsKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5Qcm9qZWN0RmVhdHVyZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgbmV3UHJvamVjdEZlYXR1cmVDcmVhdGVkTm90aWZpY2F0aW9uID0gbmV3IE5ld1Byb2plY3RGZWF0dXJlQ3JlYXRlZE5vdGlmaWNhdGlvbk1vZGVsKCk7XHJcbiAgICAgICAgICAgIG5ld1Byb2plY3RGZWF0dXJlQ3JlYXRlZE5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBuZXdQcm9qZWN0RmVhdHVyZUNyZWF0ZWROb3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChuZXdQcm9qZWN0RmVhdHVyZUNyZWF0ZWROb3RpZmljYXRpb24pKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlVzZXJTdG9yeUFyY2hpdmUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld1VzZXJTdG9yeUFyY2hpdmVNb2RlbCA9IG5ldyBVc2VyU3RvcnlBcmNoaXZlTm90aWZpY2F0aW9uTW9kZWwoKTtcclxuICAgICAgICAgICAgbmV3VXNlclN0b3J5QXJjaGl2ZU1vZGVsLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIG5ld1VzZXJTdG9yeUFyY2hpdmVNb2RlbC5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKG5ld1VzZXJTdG9yeUFyY2hpdmVNb2RlbCkpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuVXNlclN0b3J5UGFyay50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgbmV3VXNlclN0b3J5UGFya01vZGVsID0gbmV3IFVzZXJTdG9yeVBhcmtOb3RpZmljYXRpb25Nb2RlbCgpO1xyXG4gICAgICAgICAgICBuZXdVc2VyU3RvcnlQYXJrTW9kZWwubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgbmV3VXNlclN0b3J5UGFya01vZGVsLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQobmV3VXNlclN0b3J5UGFya01vZGVsKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuTGVhdmVBcHBsaWNhdGlvbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbiA9IG5ldyBMZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24pKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5BcHByb3ZlTGVhdmVBcHBsaWNhdGlvbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbiA9IG5ldyBMZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24pKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5SZWplY3RMZWF2ZUFwcGxpY2F0aW9uLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uID0gbmV3IExlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQobGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlJlc2lnbmF0aW9uTm90aWZpY2F0aW9uLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uID0gbmV3IExlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQobGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlJlc2lnbmF0aW9uQXBwcm92YWxOb3RpZmljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24gPSBuZXcgTGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuUmVzaWduYXRpb25SZWplY3Rpb25Ob3RpZmljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24gPSBuZXcgTGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuQXV0b1RpbWVTaGVldFN1Ym1pc3Npb25Ob3RpZmljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24gPSBuZXcgTGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuUHJvYmF0aW9uQXNzaWduTm90aWZpY2F0aW9uLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uID0gbmV3IExlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQobGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlJldmlld0Fzc2lnblRvRW1wbG95ZWVOb3RpZmljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24gPSBuZXcgTGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuUmV2aWV3U3VibWl0dGVkQnlFbXBsb3llZU5vdGlmaWNhdGlvbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbiA9IG5ldyBMZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24pKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5SZXZpZXdJbnZpdGF0aW9uTm90aWZpY2F0aW9uLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uID0gbmV3IExlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24oKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQobGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlBlcmZvcm1hbmNlUmV2aWV3U3VibWl0dGVkQnlFbXBsb3llZU5vdGlmaWNhdGlvbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbiA9IG5ldyBMZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24pKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5QZXJmb3JtYW5jZVJldmlld0ludml0YXRpb25Ob3RpZmljYXRpb25Nb2RlbC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbiA9IG5ldyBMZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgbGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24pKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5QZXJmb3JtYW5jZVJldmlld0Fzc2lnblRvRW1wbG95ZWVOb3RpZmljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24gPSBuZXcgTGVhdmVBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgICAgICBsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGxlYXZlQXBwbGljYXRpb25Ob3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChsZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuUHVyY2hhc2VTaGlwbWVudE5vdGlmaWNhdGlvbklkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBwdXJjaGFzZUV4ZWN1dGlvbk5vdGlmaWNhdGlvbiA9IG5ldyBMZWF2ZUFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHB1cmNoYXNlRXhlY3V0aW9uTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHB1cmNoYXNlRXhlY3V0aW9uTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5FZGl0UHVyY2hhc2VFeGVjdXRpb247XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKHB1cmNoYXNlRXhlY3V0aW9uTm90aWZpY2F0aW9uKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gVE9ETzogU2VuZCB0aGVzZSBlcnJvcnMgb250byBzZXJ2ZXIgZm9yIGZ1cnRoZXIgcHJvY2Vzc2luZ1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkZvdW5kIHVuZGV0ZWN0ZWQgbm90aWZpY2F0aW9uIHR5cGUuIFwiICsgbWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAvLyBBZGQgb3RoZXIgbm90aWZpY2F0aW9ucyBoZXJlLlxyXG5cclxuICAgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7XHJcbiAgICAgICAgLy8gVE9ETzogU2VuZCB0aGVzZSBleGNlcHRpb25zIG9udG8gc2VydmVyIGZvciBmdXJ0aGVyIHByb2Nlc3NpbmdcclxuICAgICAgICBjb25zb2xlLmxvZyhcIkV4Y2VwdGlvbiBPY2N1cmVkXCIgKyBleGNlcHRpb24ubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBzdGF0dXNPZlVzZXIgPSAocHJlc2VuY2VFdmVudCkgPT4ge1xyXG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBQcmVzZW5jZUV2ZW50VHJpZ2dlcmVkKHByZXNlbmNlRXZlbnQpKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHR5cGluZ1N0YXR1cyA9IChzaWduYWxFdmVudCkgPT4ge1xyXG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSZWNlaXZlU2lnbmFsVHJpZ2dlcmVkKHNpZ25hbEV2ZW50KSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNoYXRTZXJ2aWNlLmdldFB1Ym51YktleXMoKS5zdWJzY3JpYmUoKGtleXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnB1Ym51Yi5pbml0KHtcclxuICAgICAgICBwdWJsaXNoS2V5OiBrZXlzLmRhdGEucHVibGlzaEtleSxcclxuICAgICAgICBzdWJzY3JpYmVLZXk6IGtleXMuZGF0YS5zdWJzY3JpYmVLZXksXHJcbiAgICAgICAgdXVpZDogdGhpcy5sb2dJblVzZXJJZFxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmNoYXRTZXJ2aWNlLmdldEFsbFVzZXJzRm9yU2xhY2tBcHAoKS5zdWJzY3JpYmUoKGNvbGxlYWd1ZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29sbGVhZ3Vlc0xpc3QgPSBjb2xsZWFndWVzLmRhdGE7XHJcbiAgICAgICAgdGhpcy5jaGF0U2VydmljZS5nZXRVc2VyQ2hhbm5lbHMoKS5zdWJzY3JpYmUoKGNoYW5uZWxzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuY2hhbm5lbExpc3QgPSBjaGFubmVscy5kYXRhO1xyXG4gICAgICAgICAgdGhpcy5zaWduT3V0VXNlckNoYW5uZWxzKCk7XHJcbiAgICAgICAgICB2YXIgbG9naW5Db21wYW55SWQgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KFwiQ29tcGFueUlkXCIpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuY2hhbm5lbExpc3QgIT0gdW5kZWZpbmVkIHx8IHRoaXMuY2hhbm5lbExpc3QgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpbmRleDEgPSAwOyBpbmRleDEgPCB0aGlzLmNoYW5uZWxMaXN0Lmxlbmd0aDsgaW5kZXgxKyspIHtcclxuICAgICAgICAgICAgICB0aGlzLnB1Ym51Yi5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgY2hhbm5lbHM6IFsobG9naW5Db21wYW55SWQgKyAnLScgKyB0aGlzLmNoYW5uZWxMaXN0W2luZGV4MV0uaWQpXVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnB1Ym51Yi5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBjaGFubmVsczogWygnQ2hhbm5lbFVwZGF0ZXMtJyArIGxvZ2luQ29tcGFueUlkKV1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5wdWJudWIuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgY2hhbm5lbHM6IFsoJ1VzZXJVcGRhdGVzLScgKyBsb2dpbkNvbXBhbnlJZCldXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHZhciBpbmRleDEyID0gdGhpcy5jb2xsZWFndWVzTGlzdC5maW5kSW5kZXgoeCA9PiB4LnVzZXJJZCA9PSB0aGlzLmxvZ0luVXNlcklkKTtcclxuICAgICAgICAgIGlmIChpbmRleDEyID4gLTEpIHtcclxuICAgICAgICAgICAgdmFyIG5hbWUgPSB0aGlzLmNvbGxlYWd1ZXNMaXN0W2luZGV4MTJdLmZ1bGxOYW1lO1xyXG4gICAgICAgICAgICBuYW1lID0gbmFtZS50cmltKCk7XHJcbiAgICAgICAgICAgIG5hbWUgPSB0aGlzLnJlcGxhY2VBbGwobmFtZSwgXCIgXCIsIFwiXCIpXHJcbiAgICAgICAgICAgIHRoaXMubG9naW5Vc2VyY2hhbm5lbE5hbWUgPSAobmFtZSArICctJyArIHRoaXMubG9nSW5Vc2VySWQpO1xyXG4gICAgICAgICAgICB0aGlzLnB1Ym51Yi5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgIGNoYW5uZWxzOiBbdGhpcy5sb2dpblVzZXJjaGFubmVsTmFtZV1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5wdWJudWIuYWRkTGlzdGVuZXIoe1xyXG4gICAgICAgIHN0YXR1czogc3QgPT4ge1xyXG4gICAgICAgICAgaWYgKHN0LmNhdGVnb3J5ID09PSBcIlBOVW5rbm93bkNhdGVnb3J5XCIpIHtcclxuICAgICAgICAgICAgdmFyIG5ld1N0YXRlID0ge1xyXG4gICAgICAgICAgICAgIG5ldzogXCJlcnJvclwiXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHRoaXMucHVibnViLnNldFN0YXRlKFxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHN0YXRlOiBuZXdTdGF0ZVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvLyBmdW5jdGlvbiAoc3RhdHVzKSB7XHJcbiAgICAgICAgICAgICAgLy8gICBjb25zb2xlLmxvZyhzdC5lcnJvckRhdGEubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2lnbmFsOiBzaWduYWxFdmVudCA9PiB7XHJcbiAgICAgICAgICB0eXBpbmdTdGF0dXMoc2lnbmFsRXZlbnQpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBwcmVzZW5jZTogcHJlc2VuY2VFdmVudCA9PiB7XHJcbiAgICAgICAgICBzdGF0dXNPZlVzZXIocHJlc2VuY2VFdmVudClcclxuICAgICAgICB9LFxyXG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmVkIHRvIFwiICsgbWVzc2FnZSk7XHJcbiAgICAgICAgICBzdG9yZUxpc3RuZXIobWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBhc3luYyBzaWduT3V0VXNlckNoYW5uZWxzKCkge1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW3RoaXMubG9naW5Vc2VyY2hhbm5lbE5hbWVdIH0pO1xyXG4gICAgdmFyIGxvZ2luQ29tcGFueUlkID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChcIkNvbXBhbnlJZFwiKTtcclxuICAgIGlmICh0aGlzLmNoYW5uZWxMaXN0ICE9IHVuZGVmaW5lZCB8fCB0aGlzLmNoYW5uZWxMaXN0ICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuY2hhbm5lbExpc3QubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgY2hhbm5lbHM6IFsobG9naW5Db21wYW55SWQgKyAnLScgKyB0aGlzLmNoYW5uZWxMaXN0W2luZGV4XS5pZCldXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHtcclxuICAgICAgY2hhbm5lbHM6IFsoJ0NoYW5uZWxVcGRhdGVzLScgKyBsb2dpbkNvbXBhbnlJZCldXHJcbiAgICB9KTtcclxuICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHtcclxuICAgICAgY2hhbm5lbHM6IFsoJ1VzZXJVcGRhdGVzLScgKyBsb2dpbkNvbXBhbnlJZCldXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHN1YlNjcmliaW5nVG9QcmVzZW5jZUNoYW5uZWwoKSB7XHJcbiAgICB2YXIgbG9naW5Db21wYW55SWQgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KFwiQ29tcGFueUlkXCIpO1xyXG4gICAgdmFyIHByZXNlbmNlQ2hhbm5lbCA9IFwiTWVzc2VuZ2VyUHJlc2VuY2UtXCIgKyBsb2dpbkNvbXBhbnlJZDtcclxuICAgIGF3YWl0IHRoaXMucHVibnViLnN1YnNjcmliZSh7XHJcbiAgICAgIGNoYW5uZWxzOiBbcHJlc2VuY2VDaGFubmVsXSxcclxuICAgICAgd2l0aFByZXNlbmNlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIHRoaXMucHVibnViLmhlcmVOb3coe1xyXG4gICAgICBjaGFubmVsczogW3ByZXNlbmNlQ2hhbm5lbF0sXHJcbiAgICAgIGluY2x1ZGVVVUlEczogdHJ1ZSxcclxuICAgICAgaW5jbHVkZVN0YXRlOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgICAoc3RhdHVzLCByZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IEluaXRhbFN0YXRlT2ZVc2Vyc1RyaWdnZXJlZChyZXNwb25zZSkpXHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gIH1cclxuICBwdWJsaXNoaW5nTWVzc2FnZSgpIHtcclxuICAgIGlmICh0aGlzLnB1Ymxpc2hpbmdNZXNzYWdlT2ZVc2VyLnB1Ym51YkNoYW5uZWxOYW1lT2ZNZXNzYWdlLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5wdWJsaXNoaW5nTWVzc2FnZU9mVXNlci5wdWJudWJDaGFubmVsTmFtZU9mTWVzc2FnZS5mb3JFYWNoKGNoYW5uZWxOYW1lID0+IHtcclxuICAgICAgICB0aGlzLnB1Ym51Yi5wdWJsaXNoKHtcclxuICAgICAgICAgIGNoYW5uZWw6IFtjaGFubmVsTmFtZV0sXHJcbiAgICAgICAgICBtZXNzYWdlOiBKU09OLnN0cmluZ2lmeSh0aGlzLnB1Ymxpc2hpbmdNZXNzYWdlT2ZVc2VyKVxyXG4gICAgICAgIH0sIGZ1bmN0aW9uIChzdGF0dXMsIHJlc29wbnNlKSB7XHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhzdGF0dXMpXHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhyZXNvcG5zZSlcclxuICAgICAgICB9KVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5Bbm5vdW5jZW1lbnREaWFsb2coYW5ub3VuY2VkKSB7XHJcbiAgICB0aGlzLmRpYWxvZy5jbG9zZUFsbCgpO1xyXG4gICAgbGV0IGRpYWxvZ0lkID0gXCJhbm5vdWNlbWVudC1kaWFsb2dcIjtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5vcGVuQW5ub3VjZW1lbnREaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgbWluV2lkdGg6IFwiNjB2d1wiLFxyXG4gICAgICBtYXhXaWR0aDogXCI2MHZ3XCIsXHJcbiAgICAgIG1pbkhlaWdodDogXCI1MHZoXCIsXHJcbiAgICAgIG1heEhlaWdodDogXCI4MHZoXCIsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgaWQ6IGRpYWxvZ0lkLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgZGlhbG9nSWQ6IGRpYWxvZ0lkLFxyXG4gICAgICAgIGFubm91bmNlbWVudElkOiBhbm5vdW5jZWQuQW5ub3VuY2VtZW50SWQsXHJcbiAgICAgICAgYW5ub3VuY2VtZW50OiBhbm5vdW5jZWQuQW5ub3VuY2VtZW50LFxyXG4gICAgICAgIGFubm91bmNlZEJ5OiBhbm5vdW5jZWQuQW5ub3VuY2VkQnksXHJcbiAgICAgICAgYW5ub3VuY2VkQnlJZDogYW5ub3VuY2VkLkFubm91bmNlZEJ5SWQsXHJcbiAgICAgICAgYW5ub3VuY2VkQnlVc2VySW1hZ2U6IGFubm91bmNlZC5Bbm5vdW5jZWRCeVVzZXJJbWFnZSxcclxuICAgICAgICBhbm5vdW5jZWRPbjogYW5ub3VuY2VkLkFubm91bmNlZE9uXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLm5vdGlmaWNhdGlvbnMuZmluZEluZGV4KChwKSA9PiBwLm5vdGlmaWNhdGlvbklkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSB0aGlzLmFubm91bmNlTm90aWZpY2F0aW9uSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICB0aGlzLnVwc2VydFJlYWROb3RpZmljYXRpb24odGhpcy5ub3RpZmljYXRpb25zW2luZGV4XSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICAvLyBub3RpZmljYXRpb25PZkNoYXQobWVzc2FnZURldGFpbHNPYmplY3QpIHtcclxuICAvLyAgIGlmKHRoaXMucHJldmlvdXNNZXNzYWdlICE9IG1lc3NhZ2VEZXRhaWxzT2JqZWN0KXtcclxuICAvLyAgIHRoaXMubWVzc2FnZXNVbnJlYWRDb3VudCArPSAxO1xyXG4gIC8vICAgdmFyIGltYWdlZm9yTm90aWZpY2F0aW9uOiBhbnk7XHJcbiAgLy8gICBpZiAobWVzc2FnZURldGFpbHNPYmplY3Quc2VuZGVyUHJvZmlsZUltYWdlID09IG51bGwpIHtcclxuICAvLyAgICAgaW1hZ2Vmb3JOb3RpZmljYXRpb24gPSBcImh0dHBzOi8vcG5naW1hZ2UubmV0L3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDE4LzA1L2F2YXRhci1wbmctaW1hZ2VzLTEucG5nXCI7XHJcbiAgLy8gICB9XHJcbiAgLy8gICBlbHNlIHtcclxuICAvLyAgICAgaW1hZ2Vmb3JOb3RpZmljYXRpb24gPSBtZXNzYWdlRGV0YWlsc09iamVjdC5zZW5kZXJQcm9maWxlSW1hZ2U7XHJcbiAgLy8gICB9XHJcbiAgLy8gICBsZXQgb3B0aW9ucyA9IHtcclxuICAvLyAgICAgYm9keTogbWVzc2FnZURldGFpbHNPYmplY3QuYm9keSxcclxuICAvLyAgICAgaWNvbjogaW1hZ2Vmb3JOb3RpZmljYXRpb24sXHJcbiAgLy8gICAgIGRhdGE6IHtcclxuICAvLyAgICAgICBzZW5kZXJVc2VySWQ6IG1lc3NhZ2VEZXRhaWxzT2JqZWN0LnNlbmRlclVzZXJJZCxcclxuICAvLyAgICAgICBjaGFubmVsSWQ6IG1lc3NhZ2VEZXRhaWxzT2JqZWN0LmNoYW5uZWxJZFxyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcbiAgLy8gICB0aGlzLnB1c2hOb3RpZmljYXRpb25zLmNyZWF0ZShtZXNzYWdlRGV0YWlsc09iamVjdC50aXRsZSwgb3B0aW9ucykuc3Vic2NyaWJlKFxyXG4gIC8vICAgICByZXMgPT4ge1xyXG4gIC8vICAgICAgIGlmIChyZXMuZXZlbnQudHlwZSA9PT0gJ2NsaWNrJykge1xyXG4gIC8vICAgICAgICAgd2luZG93LmZvY3VzKCk7XHJcbiAgLy8gICAgICAgICBpZiAodGhpcy5yb3V0ZXIudXJsICE9ICcvY2hhdCcpIHtcclxuICAvLyAgICAgICAgICAgaWYgKHJlcy5ub3RpZmljYXRpb24uZGF0YS5jaGFubmVsSWQgIT0gbnVsbCAmJiByZXMubm90aWZpY2F0aW9uLmRhdGEuY2hhbm5lbElkICE9IHVuZGVmaW5lZCkge1xyXG4gIC8vICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ2hhdElkLCByZXMubm90aWZpY2F0aW9uLmRhdGEuY2hhbm5lbElkKTtcclxuICAvLyAgICAgICAgICAgfSBlbHNlIHtcclxuICAvLyAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNoYXRJZCwgcmVzLm5vdGlmaWNhdGlvbi5kYXRhLnNlbmRlclVzZXJJZCk7XHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL2NoYXRcIl0pO1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfSxcclxuICAvLyAgICAgZXJyID0+IGNvbnNvbGUubG9nKGVycilcclxuICAvLyAgICk7XHJcbiAgLy8gICB0aGlzLnByZXZpb3VzTWVzc2FnZSA9IG1lc3NhZ2VEZXRhaWxzT2JqZWN0XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG4gIHVwc2VydFJlYWROb3RpZmljYXRpb24oc2VsZWN0ZWROb3RpZmljYXRpb24pIHtcclxuICAgIGNvbnN0IG5vdGlmaWNhdGlvbnMgPSBbXTtcclxuICAgIG5vdGlmaWNhdGlvbnMucHVzaChzZWxlY3RlZE5vdGlmaWNhdGlvbik7XHJcbiAgICBjb25zdCBub3RpaWZjYXRpb25tb2RlbCA9IEpTT04ucGFyc2Uoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uSnNvbik7XHJcbiAgICBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLk5ld1Byb2plY3RDcmVhdGVkTm90aWZpY2F0aW9uSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIHx8XHJcbiAgICAgIHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5Qcm9qZWN0TWVtYmVyUm9sZUFkZGVkTm90aWZpY2F0aW9uSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcInByb2plY3RzL3Byb2plY3RzdGF0dXMvXCIgKyBub3RpaWZjYXRpb25tb2RlbC5Qcm9qZWN0R3VpZCArIFwiL2FjdGl2ZS1nb2Fsc1wiXSk7XHJcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5Hb2FsQXBwcm92ZWRGcm9tUmVwbGFuLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9nb2FsL1wiICsgbm90aWlmY2F0aW9ubW9kZWwuR29hbEd1aWRdKTtcclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLk5vdGlmaWNhdGlvbl9Xb3JrSXRlbUFzc2lnbmVkVG9Vc2VyLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwcm9qZWN0cy93b3JraXRlbS9cIiArIG5vdGlpZmNhdGlvbm1vZGVsLlVzZXJTdG9yeUd1aWRdKTtcclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLlVTZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbklkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwcm9qZWN0cy93b3JraXRlbS9cIiArIG5vdGlpZmNhdGlvbm1vZGVsLlVzZXJTdG9yeUlkXSk7XHJcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5TcHJpbnRTdGFydGVkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9zcHJpbnQvXCIgKyBub3RpaWZjYXRpb25tb2RlbC5TcHJpbnRHdWlkXSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChzZWxlY3RlZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25UeXBlSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09XHJcbiAgICAgIE5vdGlmaWNhdGlvblR5cGVJZHMuUHVzaE5vdGlmaWNhdGlvbkZvclVzZXJTdG9yeUNvbW1lbnQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcInByb2plY3RzL3dvcmtpdGVtL1wiICsgbm90aWlmY2F0aW9ubW9kZWwuVXNlclN0b3J5R3VpZF0pO1xyXG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25UeXBlSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09XHJcbiAgICAgIE5vdGlmaWNhdGlvblR5cGVJZHMuR29hbFJlcXVlc3RkRm9yUkVwbGFuLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9nb2FsL1wiICsgbm90aWlmY2F0aW9ubW9kZWwuR29hbEd1aWRdKTtcclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLlNwcmludFJlcXVlc3RkRm9yUkVwbGFuLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9zcHJpbnQvXCIgKyBub3RpaWZjYXRpb25tb2RlbC5TcHJpbnRHdWlkXSk7XHJcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5Ob3RpZmljYXRpb25fQWRob2NXb3JrSXRlbUFzc2lnbmVkVG9Vc2VyLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJkYXNoYm9hcmQvYWRob2Mtd29ya2l0ZW0vXCIgKyBub3RpaWZjYXRpb25tb2RlbC5Vc2VyU3RvcnlHdWlkXSk7XHJcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5BZGhvY1VTZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbklkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJkYXNoYm9hcmQvYWRob2Mtd29ya2l0ZW0vXCIgKyBub3RpaWZjYXRpb25tb2RlbC5Vc2VyU3RvcnlJZF0pO1xyXG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25UeXBlSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09XHJcbiAgICAgIE5vdGlmaWNhdGlvblR5cGVJZHMuUHVyY2hhc2VTaGlwbWVudE5vdGlmaWNhdGlvbklkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJjbGllbnQvcHVyY2hhc2UtZXhlY3V0aW9uL1wiICsgbm90aWlmY2F0aW9ubW9kZWwuUHVyY2hhc2VHdWlkXSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBVcHNlcnRVbnJlYWROb3RpZmljYXRpb25zVHJpZ2dlcmVkKG5vdGlmaWNhdGlvbnMpKTtcclxuXHJcblxyXG4gIH1cclxuICBsb2FkTm90aWZpY2F0aW9ucygpIHtcclxuICAgIGNvbnN0IEN1cnJlbnRVc2VySWQgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudFVzZXJJZCk7XHJcbiAgICAvLyBTdWJzY3JpYmUgdG8gVGFzayBBc3NpZ25tZW50IE5vdGlmaWNhaXRvbnMgaGVyZS5cclxuICAgIGNvbnN0IHRhc2tBc3NpZ25tZW50Q2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1Rhc2tBc3NpZ25tZW50cyArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCB0YXN0YXR1c1JlcG9ydFN1Ym1pc3Npb25DaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfU3RhdHVzUmVwb3J0U3VibWlzc2lvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCB0YXN0YXR1c0NvbmZpZ0Fzc2lnbkNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9TdGF0dXNDb25maWdBc3NpZ24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgbXVsdGlDaGFydHNTY2hlZHVsaW5nQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX011bHRpQ2hhcnRzU2NoZWR1bGluZyArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBhc3NldHNBc3NpZ25lZENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Bc3NldEFzc2lnbm1lbnQgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgcHJvamVjdENyZWF0ZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfTmV3UHJvamVjdCArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBwcm9qZWN0QWNjZXNzVG9NZW1iZXJDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfUHJvamVjdE1lbWJlclJvbGUgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgZ29hbEFwcHJvdmVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX0dvYWxBcHByb3ZlZEZyb21SZXBsYW4gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgdXNlclN0b3J5VXBkYXRlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1VzZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBBbm5vdW5jZW1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfQW5ub3VuY2VtZW50Tm90aWZpY2F0aW9uICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IFJlbWluZGVyQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1JlbWluZGVyTm90aWZpY2F0aW9uICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IFBlcmZvcm1hbmNlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1Blcm9mb3JtYW5jZU5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCB1c2VyU3RvcnlDb21tZW50Q2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1VzZXJTdG9yeUNvbW1lbnQgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3Qgc3ByaW50U3RhcnRlZENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9TcHJpbnRTdGFydGVkICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IHNwcmludFJlcGxhbkNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9TcHJpbnRSZXF1ZXN0ZWRUb1JlcGxhbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBwcm9qZWN0RmVhdHVyZUNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Qcm9qZWN0RmVhdHVyZSArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCB1c2VyU3RvcnlBcmNoaXZlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1VzZXJTdG9yeUFyY2hpdmUgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgdXNlclN0b3J5UGFya0NoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Vc2VyU3RvcnlQYXJrICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IGdlbmVyaWNBY3Rpdml0eU5vdGlmaWNhdGlvbkNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9HZW5lcmljQWN0aXZpdHlOb3RpZmljYXRpb24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgcHVyY2hhc2VFeGVjdXRpb25Bc3NpZ25lZENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9HZW5lcmljQWN0aXZpdHlOb3RpZmljYXRpb24gKyBDdXJyZW50VXNlcklkO1xyXG5cclxuICAgIHRoaXMucHVibnViLnN1YnNjcmliZSh7XHJcbiAgICAgIGNoYW5uZWxzOiBbdGFza0Fzc2lnbm1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvLCB0YXN0YXR1c1JlcG9ydFN1Ym1pc3Npb25DaGFubmVsVG9TdWJzY3JpYmVJbnRvLFxyXG4gICAgICAgIHRhc3RhdHVzQ29uZmlnQXNzaWduQ2hhbm5lbFRvU3Vic2NyaWJlSW50bywgbXVsdGlDaGFydHNTY2hlZHVsaW5nQ2hhbm5lbFRvU3Vic2NyaWJlSW50byxcclxuICAgICAgICBhc3NldHNBc3NpZ25lZENoYW5uZWxUb1N1YnNjcmliZUludG8sIHByb2plY3RDcmVhdGVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50bywgLFxyXG4gICAgICAgIHByb2plY3RBY2Nlc3NUb01lbWJlckNoYW5uZWxUb1N1YnNjcmliZUludG8sIGdvYWxBcHByb3ZlZENoYW5uZWxUb1N1YnNjcmliZUludG8sXHJcbiAgICAgICAgdXNlclN0b3J5VXBkYXRlQ2hhbm5lbFRvU3Vic2NyaWJlSW50bywgQW5ub3VuY2VtZW50Q2hhbm5lbFRvU3Vic2NyaWJlSW50bywgUmVtaW5kZXJDaGFubmVsVG9TdWJzY3JpYmVJbnRvLFxyXG4gICAgICAgIHVzZXJTdG9yeUNvbW1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvLCBzcHJpbnRTdGFydGVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50byxcclxuICAgICAgICBzcHJpbnRSZXBsYW5DaGFubmVsVG9TdWJzY3JpYmVJbnRvLFxyXG4gICAgICAgIFBlcmZvcm1hbmNlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byxcclxuICAgICAgICBwcm9qZWN0RmVhdHVyZUNoYW5uZWxUb1N1YnNjcmliZUludG8sXHJcbiAgICAgICAgdXNlclN0b3J5QXJjaGl2ZUNoYW5uZWxUb1N1YnNjcmliZUludG8sXHJcbiAgICAgICAgdXNlclN0b3J5UGFya0NoYW5uZWxUb1N1YnNjcmliZUludG8sIGdlbmVyaWNBY3Rpdml0eU5vdGlmaWNhdGlvbkNoYW5uZWxUb1N1YnNjcmliZUludG8sIHB1cmNoYXNlRXhlY3V0aW9uQXNzaWduZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvXVxyXG4gICAgfSk7XHJcbiAgICB2YXIgcm9sZVVwZGF0ZXNDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfUm9sZVVwZGF0ZXMgKyBcIjE5QjZGOUZDLTczNzAtNEI5Qy1BMDVDLTNCOEQ4MTlFRUVBRlwiO1xyXG4gICAgdGhpcy5wdWJudWIuc3Vic2NyaWJlKHtcclxuICAgICAgY2hhbm5lbHM6IFtyb2xlVXBkYXRlc0NoYW5uZWxUb1N1YnNjcmliZUludG9dXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlcGxhY2VBbGwoc3RyLCBmaW5kLCByZXBsYWNlKSB7XHJcbiAgICB2YXIgZXNjYXBlZEZpbmQgPSBmaW5kLnJlcGxhY2UoLyhbLiorP149IToke30oKXxcXFtcXF1cXC9cXFxcXSkvZywgXCJcXFxcJDFcIik7XHJcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UobmV3IFJlZ0V4cChlc2NhcGVkRmluZCwgJ2cnKSwgcmVwbGFjZSk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zaWduYWxyLmdldE5vdGlmaWNhdGlvbnNGcm9tQXBpKCkuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmdldFNvZnRMYWJlbHMoKTtcclxuICAgIGlmICh0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EaXNwbGF5V2VsQ29tZU5vdGUpICYmIHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EaXNwbGF5V2VsQ29tZU5vdGUpID09ICd0cnVlJykge1xyXG4gICAgICBpZiAoKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlck1vZGVsKSAhPSBudWxsICYmIGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlck1vZGVsKSAhPSB1bmRlZmluZWQpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMudXNlckZ1bGxOYW1lID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJNb2RlbCkpLmZ1bGxOYW1lO1xyXG4gICAgICB9XHJcbiAgICAgIHZhciBjb3VudCA9IHRoaXMuY29va2llU2VydmljZS5jaGVjayhMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJMb2dnZWRJbkNvdW50KTtcclxuICAgICAgaWYgKGNvdW50ICYmIHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyTG9nZ2VkSW5Db3VudCkgIT0gJ251bGwnXHJcbiAgICAgICAgJiYgdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJMb2dnZWRJbkNvdW50KSAhPSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgIHRoaXMubG9nZ2VkSW5Db3VudCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyTG9nZ2VkSW5Db3VudCk7XHJcbiAgICAgICAgaWYgKHRoaXMubG9nZ2VkSW5Db3VudCA9PSAnMScgfHwgdGhpcy5sb2dnZWRJbkNvdW50ID09ICcyJykge1xyXG4gICAgICAgICAgdGhpcy5kaXNwbGF5V2VsY29tZU5vdGUgPSB0cnVlO1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVdlbGNvbWVOb3RlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xyXG4gICAgICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGlzcGxheVdlbENvbWVOb3RlLCAnZmFsc2UnLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgICAgICAgfSwgODAwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgY3VycmVudEN1bHR1cmUgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudEN1bHR1cmUpO1xyXG4gICAgY29uc3QgY29tcGFueWxhbiA9IEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlEZXRhaWxzKSk7XHJcbiAgICBsZXQgY3VycmVudEN1bHR1cmVsYW4gPSBjb21wYW55bGFuLmxhbkNvZGU7XHJcblxyXG4gICAgaWYgKGN1cnJlbnRDdWx0dXJlID09ICcnIHx8IGN1cnJlbnRDdWx0dXJlID09IG51bGwgfHwgY3VycmVudEN1bHR1cmUgPT0gdW5kZWZpbmVkIHx8IGN1cnJlbnRDdWx0dXJlID09PSAnbnVsbCcgfHwgY3VycmVudEN1bHR1cmUgPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIGlmIChjdXJyZW50Q3VsdHVyZWxhbiA9PSAnJyB8fCBjdXJyZW50Q3VsdHVyZWxhbiA9PSBudWxsIHx8IGN1cnJlbnRDdWx0dXJlbGFuID09IHVuZGVmaW5lZCB8fCBjdXJyZW50Q3VsdHVyZWxhbiA9PT0gJ251bGwnIHx8IGN1cnJlbnRDdWx0dXJlbGFuID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgIGN1cnJlbnRDdWx0dXJlID0gJ2VuJztcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjdXJyZW50Q3VsdHVyZSA9IGN1cnJlbnRDdWx0dXJlbGFuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmN1cnJlbnRMYW5nID0gY3VycmVudEN1bHR1cmU7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgdGhpcy5sb2FkaW5nSW5Qcm9ncmVzcyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmlzVGltZVNoZWV0RmV0Y2hpbmcpKTtcclxuICAgIHRoaXMudGltZVNoZWV0QnV0dG9uRGV0YWlscyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmdldFRpbWVTaGV0dEJ1dHRvbkRldGFpbHMpKTtcclxuICAgIHRoaXMudGltZVNoZWV0QnV0dG9uRGV0YWlscyRcclxuICAgICAgLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICB0aGlzLnRpbWVzaGVldERpc2FibGVvckVuYWJsZSA9IGRhdGE7XHJcbiAgICAgIH0pXHJcbiAgICAvL3RoaXMuZ2V0VGltZVNoZWV0QnV0dG9ucygpO1xyXG4gICAgLy90aGlzLmdldFVzZXJTdG9yZSgpO1xyXG4gICAgdGhpcy5zaG93VHJhaWxQZXJpb2QgPSBmYWxzZTtcclxuICAgIHRoaXMuZWdyZXRUaGVtZXMgPSB0aGlzLnRoZW1lU2VydmljZS5lZ3JldFRoZW1lcztcclxuICAgIHRoaXMubGF5b3V0Q29uZiA9IHRoaXMubGF5b3V0LmxheW91dENvbmY7XHJcblxyXG4gICAgLy8gdGhpcy50aGVtZU1vZGVsJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZ2V0VGhlbWVNb2RlbCkpO1xyXG4gICAgLy90aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBJbml0aWFsaXplQWZ0ZXJMb2dpbkRhdGEoKSk7XHJcbiAgICB0aGlzLmxvZ2dlZEluVXNlcklkID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpO1xyXG4gICAgdGhpcy5nZXRFbXBsb3llZUlkQnlVc2VySWQoKTtcclxuICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xyXG4gICAgdGhpcy5hcHBsaWNhdGlvblZlcnNpb24gPSBlbnZpcm9ubWVudC52ZXJzaW9uO1xyXG4gICAgdGhpcy5tZW51VHlwZSA9IFwiTWFpblwiO1xyXG4gICAgdGhpcy5zZWxlY3RlZExhbmdOYW1lID0gdGhpcy5hdmFpbGFibGVMYW5ncy5maW5kKHggPT4geC5jb2RlID09IHRoaXMuY3VycmVudExhbmcpLm5hbWU7XHJcbiAgICB0aGlzLnVzZXJTdG9yZUlkJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZ2V0VXNlclN0b3JlSWQpKTtcclxuICAgIHRoaXMudXNlclN0b3JlSWQkLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICB0aGlzLnVzZXJTdG9yZUlkID0gcmVzdWx0O1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHNob3dIaWRlRGVsZXRlQnV0dG9uKGRhdGEpIHtcclxuICAgIHRoaXMuc2hvd0RlbGV0ZUljb24gPSBkYXRhLmlzRGVtb0RhdGFDbGVhcmVkID8gZmFsc2UgOiBkYXRhLmlzVG9TaG93RGVsZXRlSWNvbjtcclxuICB9XHJcblxyXG4gIG1vbml0b3JDb21wYW55cmVsYXRlZERldGFpbHModXNlcikge1xyXG4gICAgdGhpcy5hdXRoZW50aWNhdGVkVXNlclJlY29yZCA9IHVzZXI7XHJcbiAgICB0aGlzLnNob3dIaWRlRGVsZXRlQnV0dG9uKHVzZXIpO1xyXG4gICAgdGhpcy5jb21wYW5pZXNMaXN0ID0gdXNlci5jb21wYW5pZXNMaXN0O1xyXG4gICAgdGhpcy5nZXRDb21wYW55RGV0YWlscyh1c2VyLmNvbXBhbnlJZCk7XHJcbiAgICB2YXIgY29tcGFueSA9IHRoaXMuY29tcGFuaWVzTGlzdC5maWx0ZXIoeCA9PiB4LmNvbXBhbnlJZC50b0xvd2VyQ2FzZSgpID09IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55SWQpLnRvTG93ZXJDYXNlKCkpXHJcbiAgICB0aGlzLnNlbGVjdGVkQ29tcGFueSA9IGNvbXBhbnkgPyBjb21wYW55WzBdIDogbnVsbDtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb21wYW55TmFtZSA9IGNvbXBhbnkgPyBjb21wYW55WzBdID8gY29tcGFueVswXS5jb21wYW55TmFtZSA6IG51bGwgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGVUb0Rhc2hib2FyZHMoKSB7XHJcbiAgICBjb25zdCB1c2VyUmVmZXJlbmNlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyUmVmZXJlbmNlSWQpO1xyXG4gICAgdGhpcy5kZWZhdWx0RGFzaGJvYXJkSWQgPSB0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EZWZhdWx0RGFzaGJvYXJkKSA/IEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkRlZmF1bHREYXNoYm9hcmQpKSA6IG51bGw7XHJcbiAgICBpZiAodGhpcy5kZWZhdWx0RGFzaGJvYXJkSWQgJiYgdXNlclJlZmVyZW5jZSAhPSBcIm51bGxcIiAmJiB1c2VyUmVmZXJlbmNlICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIHRoaXMuZGVmYXVsdERhc2hib2FyZElkICsgXCIvZm9ybS9cIiArIHVzZXJSZWZlcmVuY2UpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmRlZmF1bHREYXNoYm9hcmRJZCkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgdGhpcy5kZWZhdWx0RGFzaGJvYXJkSWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNPcGVuZWQoZXZlbnQpIHtcclxuICAgIHRoaXMub3BlbmVkLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U29mdExhYmVscygpIHtcclxuICAgIHRoaXMuc29mdExhYmVscyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1NvZnRMYWJlbHMnKSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvblNpZ25vdXQoKSB7XHJcbiAgICB0aGlzLnJlbG9hZCA9IGZhbHNlO1xyXG4gICAgY29uc3QgQ3VycmVudFVzZXJJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKTtcclxuICAgIGNvbnN0IHRhc2tBc3NpZ25tZW50Q2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1Rhc2tBc3NpZ25tZW50c1xyXG4gICAgICArIHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKTtcclxuICAgIGNvbnN0IHRhc3RhdHVzUmVwb3J0U3VibWlzc2lvbkNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9TdGF0dXNSZXBvcnRTdWJtaXNzaW9uXHJcbiAgICAgICsgdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpO1xyXG4gICAgY29uc3QgdGFzdGF0dXNDb25maWdBc3NpZ25DaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfU3RhdHVzQ29uZmlnQXNzaWduXHJcbiAgICAgICsgdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpO1xyXG4gICAgY29uc3QgbXVsdGlDaGFydHNTY2hlZHVsaW5nQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX011bHRpQ2hhcnRzU2NoZWR1bGluZyArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBhc3NldHNBc3NpZ25lZENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Bc3NldEFzc2lnbm1lbnQgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgcHJvamVjdENyZWF0ZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfTmV3UHJvamVjdCArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBwcm9qZWN0QWNjZXNzVG9NZW1iZXJDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfUHJvamVjdE1lbWJlclJvbGUgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgZ29hbEFwcHJvdmVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX0dvYWxBcHByb3ZlZEZyb21SZXBsYW4gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgdXNlclN0b3J5VXBkYXRlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1VzZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBBbm5vdW5jZW1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfQW5ub3VuY2VtZW50Tm90aWZpY2F0aW9uICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IHVzZXJTdG9yeUNvbW1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfVXNlclN0b3J5Q29tbWVudCArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBzcHJpbnRTdGFydGVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1NwcmludFN0YXJ0ZWQgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3Qgc3ByaW50UmVwbGFuQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1NwcmludFJlcXVlc3RlZFRvUmVwbGFuICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IFBlcmZvcm1hbmNlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1Blcm9mb3JtYW5jZU5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBSZW1pbmRlckNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9SZW1pbmRlck5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCBwcm9qZWN0RmVhdHVyZUNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Qcm9qZWN0RmVhdHVyZSArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICBjb25zdCB1c2VyU3RvcnlBcmNoaXZlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1VzZXJTdG9yeUFyY2hpdmUgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgdXNlclN0b3J5UGFya0NoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Vc2VyU3RvcnlQYXJrICsgQ3VycmVudFVzZXJJZDtcclxuICAgIGNvbnN0IGdlbmVyaWNBY3Rpdml0eU5vdGlmaWNhdGlvbkNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9HZW5lcmljQWN0aXZpdHlOb3RpZmljYXRpb24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgY29uc3QgcHVyY2hhc2VFeGVjdXRpb25Bc3NpZ25lZENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9QdXJjaGFzZUV4ZWN1dGlvbkFzc2lnblRvRW1wbG95ZWVOb3RpZmljYXRpb24gKyBDdXJyZW50VXNlcklkO1xyXG5cclxuICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHsgY2hhbm5lbHM6IFt0YXNrQXNzaWdubWVudENoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW3Rhc3RhdHVzUmVwb3J0U3VibWlzc2lvbkNoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW3Rhc3RhdHVzQ29uZmlnQXNzaWduQ2hhbm5lbFRvU3Vic2NyaWJlSW50b10gfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbbXVsdGlDaGFydHNTY2hlZHVsaW5nQ2hhbm5lbFRvU3Vic2NyaWJlSW50b10gfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbYXNzZXRzQXNzaWduZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvXSB9KTtcclxuICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHsgY2hhbm5lbHM6IFtwcm9qZWN0Q3JlYXRlZENoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW3Byb2plY3RBY2Nlc3NUb01lbWJlckNoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW2dvYWxBcHByb3ZlZENoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW3VzZXJTdG9yeVVwZGF0ZUNoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW0Fubm91bmNlbWVudENoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW3VzZXJTdG9yeUNvbW1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvXSB9KTtcclxuICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHsgY2hhbm5lbHM6IFtzcHJpbnRTdGFydGVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50b10gfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbc3ByaW50UmVwbGFuQ2hhbm5lbFRvU3Vic2NyaWJlSW50b10gfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbUGVyZm9ybWFuY2VDaGFubmVsVG9TdWJzY3JpYmVJbnRvXSB9KTtcclxuICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHsgY2hhbm5lbHM6IFtSZW1pbmRlckNoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW3Byb2plY3RGZWF0dXJlQ2hhbm5lbFRvU3Vic2NyaWJlSW50b10gfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbdXNlclN0b3J5QXJjaGl2ZUNoYW5uZWxUb1N1YnNjcmliZUludG9dIH0pO1xyXG4gICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW3VzZXJTdG9yeVBhcmtDaGFubmVsVG9TdWJzY3JpYmVJbnRvXSB9KTtcclxuICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHsgY2hhbm5lbHM6IFtwdXJjaGFzZUV4ZWN1dGlvbkFzc2lnbmVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50b10gfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbdGhpcy5sb2dpblVzZXJjaGFubmVsTmFtZV0gfSk7XHJcbiAgICAvLyB2YXIgbG9naW5Db21wYW55SWQgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KFwiQ29tcGFueUlkXCIpO1xyXG4gICAgLy8gdmFyIHByZXNlbmNlQ2hhbm5lbCA9IFwiTWVzc2VuZ2VyUHJlc2VuY2UtXCIgKyBsb2dpbkNvbXBhbnlJZDtcclxuICAgIC8vIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHtcclxuICAgIC8vICAgY2hhbm5lbHM6IFtwcmVzZW5jZUNoYW5uZWxdLFxyXG4gICAgLy8gfSk7XHJcbiAgICAvLyBpZiAodGhpcy5jaGFubmVsTGlzdCAhPSB1bmRlZmluZWQgfHwgdGhpcy5jaGFubmVsTGlzdCAhPSBudWxsKSB7XHJcbiAgICAvLyAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmNoYW5uZWxMaXN0Lmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgLy8gICAgIHRoaXMucHVibnViLnVuc3Vic2NyaWJlKHtcclxuICAgIC8vICAgICAgIGNoYW5uZWxzOiBbKGxvZ2luQ29tcGFueUlkICsgJy0nICsgdGhpcy5jaGFubmVsTGlzdFtpbmRleF0uaWQpXVxyXG4gICAgLy8gICAgIH0pO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9XHJcbiAgICAvLyB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7XHJcbiAgICAvLyAgIGNoYW5uZWxzOiBbKCdDaGFubmVsVXBkYXRlcy0nICsgbG9naW5Db21wYW55SWQpXVxyXG4gICAgLy8gfSk7XHJcbiAgICAvLyB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7XHJcbiAgICAvLyAgIGNoYW5uZWxzOiBbKCdVc2VyVXBkYXRlcy0nICsgbG9naW5Db21wYW55SWQpXVxyXG4gICAgLy8gfSk7XHJcbiAgICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7IGNoYW5uZWxzOiBbZ2VuZXJpY0FjdGl2aXR5Tm90aWZpY2F0aW9uQ2hhbm5lbFRvU3Vic2NyaWJlSW50b10gfSk7XHJcbiAgICAvLyB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZUFsbCgpO1xyXG4gICAgLy8gdGhpcy5wdWJudWIucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XHJcbiAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgIGxldCBjb21wYW55TmFtZSA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55RGV0YWlscyk7XHJcbiAgICBsZXQgY29tcGFueUlkID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlJZCk7XHJcblxyXG4gICAgbGV0IGNvbXBhbnlEZXRhaWxzID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlEZXRhaWxzKTtcclxuICAgIGxldCBjb21wYW55VGhlbWUgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueVRoZW1lKTtcclxuICAgIGxldCBVc2VyTG9nZ2VkSW5Db3VudCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyTG9nZ2VkSW5Db3VudCk7XHJcbiAgICBsZXQgY3VycmVudEN1bHR1cmUgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudEN1bHR1cmUpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLmRlbGV0ZUFsbChlbnZpcm9ubWVudC5jb29raWVQYXRoKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5kZWxldGUoXCJzZWxlY3RlZFByb2plY3RzVGFiXCIpO1xyXG5cclxuXHJcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlckxvZ2dlZEluQ291bnQsIFVzZXJMb2dnZWRJbkNvdW50LCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRDdWx0dXJlLCBjdXJyZW50Q3VsdHVyZSwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlciwgbnVsbCwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkLCBudWxsLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlOYW1lLCBjb21wYW55TmFtZSwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55SWQsIGNvbXBhbnlJZCwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EZWZhdWx0RGFzaGJvYXJkLCBudWxsLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlEZXRhaWxzLCBjb21wYW55RGV0YWlscywgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55VGhlbWUsIGNvbXBhbnlUaGVtZSwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5TZWFyY2hDbGljaywgbnVsbCwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyTW9kZWwsIG51bGwsIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW5hYmxlVGVhbURhc2hib2FyZCwgbnVsbCwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGFzaGJvYXJkcywgbnVsbCk7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJSZWZlcmVuY2VJZCwgbnVsbCk7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlJvbGVGZWF0dXJlcywgbnVsbCk7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJSb2xlRmVhdHVyZXMpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5SZWRpcmVjdGlvblVybCk7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlNpZGVCYXJNZW51SXRlbXMpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5JbnRyb01vZHVsZXMpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkFkZE9yRWRpdEN1c3RvbUFwcElzUmVxdWlyZWQsIG51bGwsIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcblxyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL3Nlc3Npb25zL3NpZ25pblwiXSk7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzZXRMYW5nKCkge1xyXG4gICAgdGhpcy50cmFuc2xhdGUudXNlKHRoaXMuY3VycmVudExhbmcpO1xyXG4gICAgY29uc29sZS5sb2codGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUpO1xyXG4gICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudEN1bHR1cmUsIHRoaXMuY3VycmVudExhbmcsIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICB0aGlzLnNlbGVjdGVkTGFuZ05hbWUgPSB0aGlzLmF2YWlsYWJsZUxhbmdzLmZpbmQoeCA9PiB4LmNvZGUgPT0gdGhpcy5jdXJyZW50TGFuZykubmFtZTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVRoZW1lKHRoZW1lKSB7XHJcbiAgICB0aGlzLnRoZW1lU2VydmljZS5jaGFuZ2VUaGVtZSh0aGVtZSk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVOb3RpZmljKCkge1xyXG4gICAgLy8gdGhpcy5nZXRVbnJlYWROb3RpZmljYXRpb25zKCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVSZWNvcmRpbmcoKSB7XHJcbiAgICAvL3RoaXMuZ2V0QWN0VHJhY2tlclJlY29yZGVyKCk7XHJcbiAgICB2YXIgdXNlciA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyTW9kZWwpKTtcclxuICAgIGlmICh1c2VyICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5tb25pdG9yQ29tcGFueXJlbGF0ZWREZXRhaWxzKHVzZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Tm90aWZpY2F0aW9ucygpIHtcclxuICAgIGNvbnN0IG5vdGlmaWNhdGlvblNlYXJjaE1vZGVsID0gbmV3IEFwcE5vdGlmaWNhdGlvbigpO1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgQ2xlYXJBbGxVbnJlYWROb3RpZmljYXRpb25zVHJpZ2dlcmVkKG5vdGlmaWNhdGlvblNlYXJjaE1vZGVsKSk7XHJcbiAgICB0aGlzLnVucmVhZENvdW50T2ZOb3RpZmljYXRpb25zJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZ2V0Tm90aWZpY2F0aW9uVW5yZWFkVG90YWwpKTtcclxuICB9XHJcblxyXG4gIGdldFVucmVhZE5vdGlmaWNhdGlvbnMoKSB7XHJcbiAgICBjb25zdCBub3RpZmljYXRpb25TZWFyY2hNb2RlbCA9IG5ldyBBcHBOb3RpZmljYXRpb24oKTtcclxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IENsZWFyVW5yZWFkTm90aWZpY2F0aW9uc1RyaWdnZXJlZChub3RpZmljYXRpb25TZWFyY2hNb2RlbCkpO1xyXG4gICAgdGhpcy51bnJlYWRDb3VudE9mTm90aWZpY2F0aW9ucyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmdldE5vdGlmaWNhdGlvblVucmVhZFRvdGFsKSk7XHJcbiAgfVxyXG5cclxuICBnZXRBY3RUcmFja2VyUmVjb3JkZXIoKSB7XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0QWN0VHJhY2tlclJlY29yZGVyKCkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgdGhpcy5pc1JlY29yZGluZyA9IHJlc3BvbnNlLmRhdGE7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJEZW1vRGF0YSgpIHtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIGhlaWdodDogXCIzMCVcIixcclxuICAgICAgd2lkdGg6IFwiMzAlXCIsXHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICBkaXJlY3Rpb246IFwibHRyXCIsXHJcbiAgICAgIGRhdGE6IHt9LFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coXCJUaGUgZGlhbG9nIHdhcyBjbG9zZWRcIik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBleHBvcnRDb25maWd1cmF0aW9uRGlhbG9nRGF0YSgpIHtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oRXhwb3J0Q29uZmlndXJhdGlvbkRpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICBoZWlnaHQ6IFwiNDUlXCIsXHJcbiAgICAgIHdpZHRoOiBcIjQwJVwiLFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgZGlyZWN0aW9uOiBcImx0clwiLFxyXG4gICAgICBkYXRhOiB7fSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiVGhlIGRpYWxvZyB3YXMgY2xvc2VkXCIpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVTaWRlbmF2KCkge1xyXG4gICAgaWYgKHRoaXMubGF5b3V0Q29uZi5zaWRlYmFyU3R5bGUgPT09IFwiY2xvc2VkXCIpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubGF5b3V0LnB1Ymxpc2hMYXlvdXRDaGFuZ2Uoe1xyXG4gICAgICAgIHNpZGViYXJTdHlsZTogXCJmdWxsXCJcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmxheW91dC5wdWJsaXNoTGF5b3V0Q2hhbmdlKHtcclxuICAgICAgc2lkZWJhclN0eWxlOiBcImNsb3NlZFwiXHJcbiAgICB9KTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4geyB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoXCJyZXNpemVcIikpOyB9LCAyNTApO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQ29sbGFwc2UoKSB7XHJcbiAgICAvLyBjb21wYWN0IC0tPiBmdWxsXHJcbiAgICBpZiAodGhpcy5sYXlvdXRDb25mLnNpZGViYXJTdHlsZSA9PT0gXCJjb21wYWN0XCIpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubGF5b3V0LnB1Ymxpc2hMYXlvdXRDaGFuZ2UoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgc2lkZWJhclN0eWxlOiBcImZ1bGxcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgeyB0cmFuc2l0aW9uQ2xhc3M6IHRydWUgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8vICogLS0+IGNvbXBhY3RcclxuICAgIHRoaXMubGF5b3V0LnB1Ymxpc2hMYXlvdXRDaGFuZ2UoXHJcbiAgICAgIHtcclxuICAgICAgICBzaWRlYmFyU3R5bGU6IFwiY29tcGFjdFwiXHJcbiAgICAgIH0sXHJcbiAgICAgIHsgdHJhbnNpdGlvbkNsYXNzOiB0cnVlIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0VGltZVNoZWV0QnV0dG9ucygpIHtcclxuICAgIC8vdGhpcy5sb2FkaW5nSW5Qcm9ncmVzcyA9IHRydWU7XHJcbiAgICAvLyB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0VGltZVNoZWV0RW5hYmxlZEluZm9ybWF0aW9uKCkucGlwZSh0YWtlVW50aWwodGhpcy5uZ0Rlc3Ryb3llZCQpKVxyXG4gICAgLy8gICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgIC8vICAgICBpZiAoZGF0YSA9PT0gXCJcIiB8fCBkYXRhID09PSB1bmRlZmluZWQpIHtcclxuICAgIC8vICAgICAgIHJldHVybjtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgdGhpcy50aW1lc2hlZXREaXNhYmxlb3JFbmFibGUgPSBKU09OLnBhcnNlKGRhdGEpO1xyXG4gICAgLy8gICAgIHRoaXMubG9hZGluZ0luUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgIC8vICAgfSk7XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBGZXRjaFRpbWVTaGVldEJ1dHRvbkRldGFpbHMoKSk7XHJcbiAgfVxyXG5cclxuICBjbG9zZUZlZWRUaW1lU2hlZXQoKSB7XHJcbiAgICB0aGlzLmZlZWRUaW1lU2hlZXRQb3BvdmVyLmNsb3NlKCk7XHJcbiAgICB0aGlzLmlzRmVlZFRpbWVTaGVldCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgb3BlblRpbWVTaGVldCgpIHtcclxuICAgIGNvbnN0IHByb2plY3REaWFsb2cgPSB0aGlzLmRpYWxvZy5vcGVuKEZlZWRUaW1lRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIG1pbldpZHRoOiAnMzB2dycsXHJcbiAgICAgIGhlaWdodDogJzM1dmgnLFxyXG4gICAgICBkYXRhOiAhdGhpcy5pc0ZlZWRUaW1lU2hlZXRcclxuICAgICAgLy9kaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgcHJvamVjdERpYWxvZy5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuY2xvc2VGZWVkVGltZVNoZWV0KCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZ2V0VGltZVNoZWV0QnV0dG9ucygpO1xyXG4gICAgLy8gdGhpcy5pc0ZlZWRUaW1lU2hlZXQgPSAhdGhpcy5pc0ZlZWRUaW1lU2hlZXQ7XHJcbiAgfVxyXG5cclxuICAvLyBnZXRBbGxNZW51SXRlbXMoKSB7XHJcbiAgLy8gICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBHZXRBbGxNZW51SXRlbXNUcmlnZ2VyZWQoTWVudUNhdGVnb3JpZXMuTWFpbikpO1xyXG4gIC8vIH1cclxuXHJcbiAgY2hhbmdlTWVudVR5cGUodHlwZSkge1xyXG4gICAgdGhpcy5tZW51VHlwZSA9IHR5cGU7XHJcbiAgfVxyXG5cclxuICBvcGVuRmVlZEJhY2tEaWFsb2coKSB7XHJcbiAgICB0aGlzLmlzRmVlZEJhY2tEaWFsb2cgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VGZWVkQmFja2xvZ0RpYWxvZygpIHtcclxuICAgIHRoaXMuaXNGZWVkQmFja0RpYWxvZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5mZWVkQmFja1BvcE92ZXIuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIGdldENvbXBhbnlEZXRhaWxzKGNvbXBhbnlJZDogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueURldGFpbHMpICYmIHRoaXMuY29va2llU2VydmljZS5jaGVjayhMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlJZCkpIHtcclxuICAgICAgdGhpcy5jb21wYW55ID0gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueURldGFpbHMpKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5jb21wYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZS5nZXRDb21wYW55QnlJZChjb21wYW55SWQpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29tcGFueSA9IHJlc3BvbnNlLmRhdGE7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNvbXBhbnkuaXNSZW1vdGVBY2Nlc3MgPT0gMSAmJiB0aGlzLmNvbXBhbnkudHJhaWxEYXlzID4gMCkge1xyXG4gICAgICAgICAgdGhpcy5zaG93VHJhaWxQZXJpb2QgPSB0cnVlO1xyXG4gICAgICAgICAgLy8gdGhpcy5ub09mRGF5cz10aGlzLmNvbXBhbnkubm9PZkRheXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmNvbXBhbnkuaXNEZW1vRGF0YSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dEZWxldGUgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dEZWxldGUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuY29tcGFueS5pc0RlbW9EYXRhID09IGZhbHNlIHx8IHRoaXMuY29tcGFueS5pc0RlbW9EYXRhID09IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMuc2hvd0RlbGV0ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5jb21wYW55ICE9IG51bGwgJiYgdGhpcy5jb21wYW55ICE9IHVuZGVmaW5lZCAmJiB0aGlzLmNvbXBhbnkuaW5kdXN0cnlJZC50b1VwcGVyQ2FzZSgpID09ICc3NDk5RjVFMy0wRUYyLTQwNDQtQjg0MC0yNDExQjY4MzAyRjknKVxyXG4gICAgICAgICAgdGhpcy5pc1N0b3JlQWNjZXNzID0gZmFsc2U7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdGhpcy5pc1N0b3JlQWNjZXNzID0gdHJ1ZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuY29tcGFueS5pc1JlbW90ZUFjY2VzcyA9PSAxICYmIHRoaXMuY29tcGFueS50cmFpbERheXMgPiAwKSB7XHJcbiAgICAgICAgdGhpcy5zaG93VHJhaWxQZXJpb2QgPSB0cnVlO1xyXG4gICAgICAgIC8vIHRoaXMubm9PZkRheXM9dGhpcy5jb21wYW55Lm5vT2ZEYXlzO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNvbXBhbnkuaXNEZW1vRGF0YSA9PSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy5zaG93RGVsZXRlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5jb21wYW55LmlzRGVtb0RhdGEgPT0gZmFsc2UgfHwgdGhpcy5jb21wYW55LmlzRGVtb0RhdGEgPT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuc2hvd0RlbGV0ZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNvbXBhbnkgIT0gbnVsbCAmJiB0aGlzLmNvbXBhbnkgIT0gdW5kZWZpbmVkICYmIHRoaXMuY29tcGFueS5pbmR1c3RyeUlkLnRvVXBwZXJDYXNlKCkgPT0gJzc0OTlGNUUzLTBFRjItNDA0NC1CODQwLTI0MTFCNjgzMDJGOScpXHJcbiAgICAgICAgdGhpcy5pc1N0b3JlQWNjZXNzID0gZmFsc2U7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLmlzU3RvcmVBY2Nlc3MgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0VXNlclN0b3JlKCkge1xyXG4gICAgbGV0IHN0b3JlU2VhcmNoTW9kZWwgPSBuZXcgU3RvcmVTZWFyY2hNb2RlbCgpO1xyXG4gICAgc3RvcmVTZWFyY2hNb2RlbC5pc0FyY2hpdmVkID0gZmFsc2U7XHJcbiAgICBzdG9yZVNlYXJjaE1vZGVsLmlzRGVmYXVsdCA9IHRydWU7XHJcbiAgICBzdG9yZVNlYXJjaE1vZGVsLmlzQ29tcGFueSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgR2V0VXNlclN0b3JlSWRUcmlnZ2VyZWQoc3RvcmVTZWFyY2hNb2RlbCkpO1xyXG4gIH1cclxuXHJcbiAgZ29Ub1VzZXJTdG9yZSgpIHtcclxuICAgIGlmICh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudFVzZXJJZCkpXHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcImRvY3VtZW50L3N0b3JlXCIsIHRoaXMudXNlclN0b3JlSWQsIHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKS50b0xvd2VyQ2FzZSgpXSk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RBZnRlcmxvZ2luKGUpIHtcclxuICAgIHRoaXMuY29tcGFueUlkID0gZS5jb21wYW55SWRcclxuICAgIHRoaXMuc2VsZWN0ZWRDb21wYW55TmFtZSA9IGUuY29tcGFueU5hbWU7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ29tcGFueSA9IGU7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzZWxlY3RDb21wYW55KGUpIHtcclxuICAgIGlmICh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueUlkKS50b0xvd2VyQ2FzZSgpICE9IGUuY29tcGFueUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJlbG9hZCA9IGZhbHNlO1xyXG4gICAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgICAgdGhpcy5jb21wYW55SWQgPSBlLmNvbXBhbnlJZDtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbXBhbnlOYW1lID0gZS5jb21wYW55TmFtZTtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbXBhbnkgPSBlO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSBudWxsO1xyXG4gICAgICB0aGlzLm5neFNlcnZpY2Uuc3RhcnQoKTtcclxuICAgICAgdGhpcy5hdXRoU2VydmljZS5jb21wYW55TG9naW4odGhpcy5zZWxlY3RlZENvbXBhbnkpLnN1YnNjcmliZShhc3luYyAodXNlclRva2VuOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAodXNlclRva2VuLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgIGF3YWl0IHRoaXMub25TaWdub3V0KCk7XHJcbiAgICAgICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlciwgZS5hdXRoVG9rZW4sIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudFVzZXJJZCwgZS51c2VySWQsIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudFVzZXIsIHVzZXJUb2tlbi5kYXRhLmF1dGhUb2tlbiwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoXCJEZWZhdWx0RGFzaGJvYXJkXCIsIHVzZXJUb2tlbi5kYXRhLmRlZmF1bHREYXNoYm9hcmRJZCA/IEpTT04uc3RyaW5naWZ5KHVzZXJUb2tlbi5kYXRhLmRlZmF1bHREYXNoYm9hcmRJZC53b3Jrc3BhY2VJZCkgOiBudWxsLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldCgnQ29tcGFueURldGFpbHMnLCBKU09OLnN0cmluZ2lmeSh1c2VyVG9rZW4uZGF0YS5jb21wYW55RGV0YWlscykpO1xyXG4gICAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldCgnQ29tcGFuaWVzTGlzdCcsIEpTT04uc3RyaW5naWZ5KHVzZXJUb2tlbi5kYXRhLnVzZXJzTW9kZWwuY29tcGFuaWVzTGlzdCkpLFxyXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnUm9sZUZlYXR1cmVzJywgSlNPTi5zdHJpbmdpZnkodXNlclRva2VuLmRhdGEucm9sZUZlYXR1cmVzKSk7XHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIlVzZXJNb2RlbFwiLCBKU09OLnN0cmluZ2lmeSh1c2VyVG9rZW4uZGF0YS51c2Vyc01vZGVsKSk7XHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnU29mdExhYmVscycsIEpTT04uc3RyaW5naWZ5KHVzZXJUb2tlbi5kYXRhLnNvZnRMYWJlbHMpKTtcclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiQ29tcGFueVNldHRpbmdzXCIsIEpTT04uc3RyaW5naWZ5KHVzZXJUb2tlbi5kYXRhLmNvbXBhbnlTZXR0aW5ncykpO1xyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJGcm9tTG9nSW5cIiwgSlNPTi5zdHJpbmdpZnkodHJ1ZSkpO1xyXG4gICAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlOYW1lLCB1c2VyVG9rZW4uZGF0YS51c2Vyc01vZGVsLmNvbXBhbnlOYW1lLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlJZCwgdXNlclRva2VuLmRhdGEudXNlcnNNb2RlbC5jb21wYW55SWQsIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICAgICAgICAvL3RoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFVzZXJEZXRhaWxzRmV0Y2hlZEFmdGVyQ29tcGFueUxvZ2luKHVzZXJUb2tlbi5kYXRhLnVzZXJzTW9kZWwpKTtcclxuICAgICAgICAgIHRoaXMuc2V0RGFmYXVsdExhbmd1YWdlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubmd4U2VydmljZS5zdG9wKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RGFmYXVsdExhbmd1YWdlKCkge1xyXG4gICAgY29uc3QgY29tcGFueSA9IEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlEZXRhaWxzKSk7XHJcbiAgICBsZXQgY3VycmVudEN1bHR1cmUgPSBjb21wYW55LmxhbkNvZGU7XHJcbiAgICBpZiAoY3VycmVudEN1bHR1cmUgPT0gbnVsbCB8fCBjdXJyZW50Q3VsdHVyZSA9PSB1bmRlZmluZWQgfHwgY3VycmVudEN1bHR1cmUgPT09ICdudWxsJyB8fCBjdXJyZW50Q3VsdHVyZSA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgY3VycmVudEN1bHR1cmUgPSAnZW4nO1xyXG4gICAgfVxyXG4gICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudEN1bHR1cmUsIGN1cnJlbnRDdWx0dXJlLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgdGhpcy5jdXJyZW50TGFuZyA9IGN1cnJlbnRDdWx0dXJlO1xyXG4gICAgdGhpcy50cmFuc2xhdGUudXNlKHRoaXMuY3VycmVudExhbmcpO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldEVtcGxveWVlSWRCeVVzZXJJZCgpIHtcclxuXHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvUHJvZmlsZSgpIHtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZS5nZXRVc2VyQnlJZCh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudFVzZXJJZCkudG9Mb3dlckNhc2UoKSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzID09IHRydWUpIHtcclxuICAgICAgICB0aGlzLmVtcGxveWVlSWQgPSByZXNwb25zZS5kYXRhLmVtcGxveWVlSWQ7XHJcbiAgICAgICAgaWYgKHRoaXMuZW1wbG95ZWVJZCkge1xyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiZGFzaGJvYXJkL3Byb2ZpbGVcIiwgdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpLnRvTG93ZXJDYXNlKCksIFwib3ZlcnZpZXdcIl0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcImRhc2hib2FyZC9teVByb2ZpbGVcIiwgdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpLnRvTG93ZXJDYXNlKCldKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBuYXZpZ2F0ZVRvTWVzc2VuZ2VyKCkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL2NoYXRcIl0pO1xyXG4gIH1cclxuXHJcblxyXG4gIG5hdmlnYXRlVG9TdGF0dXNSZXBvcnQoKSB7XHJcbiAgICBjb25zdCBwcm9qZWN0RGlhbG9nID0gdGhpcy5kaWFsb2cub3BlbihXb3JrSXRlbXNEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgbWluV2lkdGg6ICc4MnZ3JyxcclxuICAgICAgaGVpZ2h0OiAnODJ2aCcsXHJcbiAgICAgIGRhdGE6IHsgZGFzaGJvYXJkRmlsdGVyczogdGhpcy5kYXNoYm9hcmRGaWx0ZXJzIH0sXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICBwcm9qZWN0RGlhbG9nLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHsgfSk7XHJcbiAgfVxyXG4gIG5hdmlnYXRlVG9TZXR0aW5ncygpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9zZXR0aW5nc1wiXSk7XHJcbiAgfVxyXG5cclxuICBhbHRlcm5hdGVTaWduSW4oKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvc2Vzc2lvbnMvZ2VuZXJpYy1zaWduaW5cIl0pO1xyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGVUb1JvbGVzKCkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL3JvbGVtYW5hZ2VtZW50L3JvbGVtYW5hZ2VtZW50XCJdKTtcclxuICB9XHJcblxyXG4gIG5hdmlnYXRlVG9Vcmwod29ya3NwYWNlSWQpIHtcclxuICAgIGNvbnN0IHVzZXJSZWZlcmVuY2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJSZWZlcmVuY2VJZCk7XHJcbiAgICBpZiAodXNlclJlZmVyZW5jZSAhPSBcIm51bGxcIiAmJiB1c2VyUmVmZXJlbmNlICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIHdvcmtzcGFjZUlkICsgXCIvZm9ybS9cIiArIHVzZXJSZWZlcmVuY2UpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIHdvcmtzcGFjZUlkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZFVwbG9hZEZpbGVQb3B1cE9wZW4oZmlsZVVwbG9hZERyb3B6b25lUG9wdXApIHtcclxuICAgIGZpbGVVcGxvYWREcm9wem9uZVBvcHVwLm9wZW5Qb3BvdmVyKCk7XHJcbiAgfVxyXG4gIHNldExhYmVsTmFtZUZvckRyb3B6b25lKGZpbGVOYW1lKSB7XHJcbiAgICByZXR1cm4gZmlsZU5hbWUuc3Vic3RyaW5nKDAsIDIwKSArIFwiLi4uXCI7XHJcbiAgfVxyXG4gIG9uUmVtb3ZlKGV2ZW50KSB7XHJcbiAgICB0aGlzLmZpbGVzLnNwbGljZSh0aGlzLmZpbGVzLmluZGV4T2YoZXZlbnQpLCAxKTtcclxuICAgIGlmICh0aGlzLmZpbGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5maWxlc1ByZXNlbnQgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maWxlc1ByZXNlbnQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgcmVtb3ZlQWxsRmlsZXMoKSB7XHJcbiAgICB0aGlzLmZpbGVzUHJlc2VudCA9IGZhbHNlO1xyXG4gICAgdGhpcy5maWxlcyA9IFtdO1xyXG4gIH1cclxuICBmaWxlc1NlbGVjdGVkKGV2ZW50KSB7XHJcbiAgICB0aGlzLmZpbGVzLnB1c2goLi4uZXZlbnQuYWRkZWRGaWxlcyk7XHJcbiAgICBpZiAodGhpcy5maWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZmlsZXNQcmVzZW50ID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlVXBsb2FkRmlsZVBvcHVwKCkge1xyXG4gICAgdGhpcy5maWxlVXBsb2FkRHJvcHpvbmVQb3B1cC5mb3JFYWNoKChwKSA9PiBwLmNsb3NlUG9wb3ZlcigpKTtcclxuICAgIHRoaXMuZmlsZXMgPSBbXTtcclxuICAgIHRoaXMuZmlsZVJlc3VsdE1vZGVsID0gW107XHJcbiAgfVxyXG4gIHNhdmVGaWxlcygpIHtcclxuICAgIHRoaXMuYW55T3BlcmF0aW9uSW5Qcm9ncmVzcyA9IHRydWU7XHJcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgdGhpcy5maWxlcy5mb3JFYWNoKChmaWxlOiBGaWxlKSA9PiB7XHJcbiAgICAgIHRoaXMuZmlsZUluZGV4ID0gdGhpcy5maWxlSW5kZXggKyAxO1xyXG4gICAgICBjb25zdCBmaWxlS2V5TmFtZSA9IFwiZmlsZVwiICsgdGhpcy5maWxlSW5kZXgudG9TdHJpbmcoKTtcclxuICAgICAgZm9ybURhdGEuYXBwZW5kKGZpbGVLZXlOYW1lLCBmaWxlKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xyXG4gICAgdGhpcy5VcGxvYWRlck9uSW5pdChlbnZpcm9ubWVudC5hcGlVUkwgKyBBcGlVcmxzLlVwbG9hZEZpbGVDaHVua3MpO1xyXG4gIH1cclxuICBwcml2YXRlIFVwbG9hZGVyT25Jbml0KHVybDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBsZXQgcHJvZ3Jlc3MgPSAwO1xyXG4gICAgY29uc3QgciA9IG5ldyBSZXN1bWFibGUoe1xyXG4gICAgICB0YXJnZXQ6IHVybCxcclxuICAgICAgY2h1bmtTaXplOiAxICogMTAyNCAqIDEwMjQsIC8vMyBNQlxyXG4gICAgICBxdWVyeTogeyBtb2R1bGVUeXBlSWQ6IHRoaXMubW9kdWxlVHlwZUlkIH0sXHJcbiAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICBcIkF1dGhvcml6YXRpb25cIjogYEJlYXJlciAke3RoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcil9YFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICByLmFkZEZpbGVzKHRoaXMuZmlsZXMpO1xyXG4gICAgci5vbignZmlsZUFkZGVkJywgKGZpbGUsIGV2ZW50KSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5maWxlUmVzdWx0TW9kZWwgfHwgdGhpcy5maWxlUmVzdWx0TW9kZWwubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuZmlsZVJlc3VsdE1vZGVsID0gW107XHJcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgICAgci51cGxvYWQoKVxyXG4gICAgfSk7XHJcbiAgICByLm9uKCdjb21wbGV0ZScsIChldmVudCkgPT4ge1xyXG4gICAgICByLmZpbGVzLnBvcCgpO1xyXG4gICAgICB0aGlzLnByb2dyZXNzVmFsdWUgPSAwO1xyXG4gICAgICB0aGlzLmZpbGVzUHJlc2VudCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnVwbG9hZGVkRmlsZU5hbWVzID0gW107XHJcbiAgICAgIHRoaXMuZmlsZUNvdW50ZXIgPSAxO1xyXG4gICAgICB0aGlzLmZpbGVJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuYW55T3BlcmF0aW9uSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgICByLm9uKCdwcm9ncmVzcycsICgpID0+IHtcclxuICAgICAgcHJvZ3Jlc3MgPSBNYXRoLnJvdW5kKHIucHJvZ3Jlc3MoKSAqIDEwMCk7XHJcbiAgICAgIHRoaXMucHJvZ3Jlc3NWYWx1ZSA9IHByb2dyZXNzO1xyXG4gICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gICAgci5vbignZmlsZVN1Y2Nlc3MnLCAoZmlsZSwgcmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKGZpbGUgJiYgZmlsZS5maWxlTmFtZSkge1xyXG4gICAgICAgIGlmICghdGhpcy51cGxvYWRlZEZpbGVOYW1lcy5maW5kKHggPT4geCA9PSBmaWxlLmZpbGVOYW1lKSkge1xyXG4gICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVOYW1lcy5wdXNoKGZpbGUuZmlsZU5hbWUpXHJcbiAgICAgICAgICB0aGlzLmZpbGVDb3VudGVyID0gdGhpcy51cGxvYWRlZEZpbGVOYW1lcy5sZW5ndGg7XHJcblxyXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEpTT04ucGFyc2UocmVzcG9uc2UpO1xyXG4gICAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuZmlsZVJlc3VsdE1vZGVsKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5maWxlUmVzdWx0TW9kZWwgPSBbXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgZmlsZVJlc3VsdCA9IG5ldyBGaWxlUmVzdWx0TW9kZWwoKTtcclxuICAgICAgICAgICAgZmlsZVJlc3VsdC5maWxlRXh0ZW5zaW9uID0gcmVzdWx0WzBdLkZpbGVFeHRlbnNpb247XHJcbiAgICAgICAgICAgIGZpbGVSZXN1bHQuZmlsZU5hbWUgPSByZXN1bHRbMF0uRmlsZU5hbWU7XHJcbiAgICAgICAgICAgIGZpbGVSZXN1bHQuZmlsZVBhdGggPSByZXN1bHRbMF0uRmlsZVBhdGg7XHJcbiAgICAgICAgICAgIGZpbGVSZXN1bHQuZmlsZVNpemUgPSByZXN1bHRbMF0uRmlsZVNpemU7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsZVJlc3VsdE1vZGVsLnB1c2goZmlsZVJlc3VsdCk7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHRbMF0uRmlsZVBhdGggIT0gbnVsbCAmJiByZXN1bHRbMF0uRmlsZVBhdGggIT0gXCJcIilcclxuICAgICAgICAgICAgICB0aGlzLmltcG9ydER5bmFtaWNKc29uKHJlc3VsdFswXS5GaWxlUGF0aCk7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICB0aGlzLmNsb3NlVXBsb2FkRmlsZVBvcHVwKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaW1wb3J0RHluYW1pY0pzb24oY29uZmlndXJlZEpzb25VUkwpIHtcclxuICAgIHZhciBpbXBvcnRDb25maWd1cmF0aW9uTW9kZWwgPSBuZXcgSW1wb3J0Q29uZmlndXJhdGlvbk1vZGVsKCk7XHJcbiAgICBpbXBvcnRDb25maWd1cmF0aW9uTW9kZWwuY29uZmlndXJhdGlvblVybCA9IGNvbmZpZ3VyZWRKc29uVVJMO1xyXG4gICAgdGhpcy5pbXBvcnRpbmdJblByb2dyZXNzID0gdHJ1ZTtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZS5TeXN0ZW1JbXBvcnRDb25maWd1cmF0aW9uKGltcG9ydENvbmZpZ3VyYXRpb25Nb2RlbCkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzID09PSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy5jbG9zZVVwbG9hZEZpbGVQb3B1cCgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoXCJEYXRhIGltcG9ydGVkIHN1Y2Nlc3NmdWxseVwiKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5hcGlSZXNwb25zZU1lc3NhZ2VzWzBdLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaW1wb3J0aW5nSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjbG9zZVNlYXJjaCgpIHtcclxuICAgIHRoaXMuc2VhcmNoVGV4dCA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBzZWFyY2hDb21wYW5pZXMoY29tcGFuaWVzLCBzZWFyY2gpIHtcclxuICAgIGlmIChzZWFyY2ggPT0gbnVsbCB8fCBzZWFyY2ggPT0gJycpIHtcclxuICAgICAgcmV0dXJuIGNvbXBhbmllcztcclxuICAgIH0gZWxzZSBpZiAoc2VhcmNoICE9IG51bGwpIHtcclxuICAgICAgc2VhcmNoID0gc2VhcmNoLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIHNlYXJjaCA9IHNlYXJjaC50cmltKCk7XHJcbiAgICAgIGNvbnN0IHRlbXAgPSBjb21wYW5pZXMuZmlsdGVyKGRhdGEgPT5cclxuICAgICAgICBkYXRhLmNvbXBhbnlOYW1lLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaCkgPiAtMVxyXG4gICAgICApXHJcbiAgICAgIHJldHVybiB0ZW1wO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUNvbXBhbnlJZChpbmRleDogbnVtYmVyLCBjb21wYW55OiBhbnkpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGNvbXBhbnkuY29tcGFueUlkO1xyXG4gIH1cclxuXHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgLy8gdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoeyBjaGFubmVsczogW3RoaXMubG9naW5Vc2VyY2hhbm5lbE5hbWVdIH0pO1xyXG4gICAgLy8gdmFyIGxvZ2luQ29tcGFueUlkID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChcIkNvbXBhbnlJZFwiKTtcclxuICAgIC8vIGlmICh0aGlzLmNoYW5uZWxMaXN0ICE9IHVuZGVmaW5lZCB8fCB0aGlzLmNoYW5uZWxMaXN0ICE9IG51bGwpIHtcclxuICAgIC8vICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuY2hhbm5lbExpc3QubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAvLyAgICAgdGhpcy5wdWJudWIudW5zdWJzY3JpYmUoe1xyXG4gICAgLy8gICAgICAgY2hhbm5lbHM6IFsobG9naW5Db21wYW55SWQgKyAnLScgKyB0aGlzLmNoYW5uZWxMaXN0W2luZGV4XS5pZCldXHJcbiAgICAvLyAgICAgfSk7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuICAgIC8vICB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7XHJcbiAgICAvLyAgIGNoYW5uZWxzOiBbKCdDaGFubmVsVXBkYXRlcy0nICsgbG9naW5Db21wYW55SWQpXVxyXG4gICAgLy8gfSk7XHJcbiAgICAvLyB0aGlzLnB1Ym51Yi51bnN1YnNjcmliZSh7XHJcbiAgICAvLyAgIGNoYW5uZWxzOiBbKCdVc2VyVXBkYXRlcy0nICsgbG9naW5Db21wYW55SWQpXVxyXG4gICAgLy8gfSk7XHJcbiAgICB0aGlzLm5nRGVzdHJveWVkJC5uZXh0KCk7XHJcbiAgICB0aGlzLm5nRGVzdHJveWVkJC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuICBvbk5hdmlnYXRlVG9CaWxsaW5nU2NyZWVuKCkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL3NoZWxsL0FjY291bnRzXCJdKTtcclxuICB9XHJcblxyXG4gIG9uTmF2aWdhdGVUb1ByaWNpbmdTY3JlZW4oKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvc2hlbGwvcGF5bWVudHMtcGxhbnNcIl0pO1xyXG4gIH1cclxuICBnZXRJbnRyb0RldGFpbHMoKSB7XHJcbiAgICB2YXIgaW50cm8gPSBuZXcgSW50cm9Nb2RlbCgpO1xyXG4gICAgaW50cm8udXNlcklkID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpO1xyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlLmdldEludHJvRGV0YWlscyhpbnRybykuc3Vic2NyaWJlKChyZXNwb25zZURhdGE6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2VEYXRhLnN1Y2Nlc3MgPT0gZmFsc2UpIHtcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID0gcmVzcG9uc2VEYXRhLmFwaVJlc3BvbnNlTWVzc2FnZXNbMF0ubWVzc2FnZTtcclxuICAgICAgICB0aGlzLmFueU9wZXJhdGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcih0aGlzLnZhbGlkYXRpb25NZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChyZXNwb25zZURhdGEuc3VjY2VzcyA9PSB0cnVlKSB7XHJcbiAgICAgICAgbGV0IGludHJvID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkludHJvTW9kdWxlcykpO1xyXG4gICAgICAgIGlmICghaW50cm8pXHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkludHJvTW9kdWxlcywgSlNPTi5zdHJpbmdpZnkocmVzcG9uc2VEYXRhLmRhdGEpKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRUZWFtTWVtYmVycygpIHtcclxuICAgIHZhciB0ZWFtTWVtYmVyTW9kZWw7XHJcbiAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgIHZhciB0ZWFtTWVtYmVyTW9kZWw7XHJcbiAgICB0ZWFtTWVtYmVyTW9kZWwgPSB7XHJcbiAgICAgIGlzRm9yVHJhY2tlcjogdHJ1ZVxyXG4gICAgfVxyXG4gICAgdGVhbU1lbWJlck1vZGVsLmlzQXJjaGl2ZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZS5nZXRUZWFtTGVhZHNMaXN0KHRlYW1NZW1iZXJNb2RlbCkuc3Vic2NyaWJlKChyZXNwb25zZURhdGE6IGFueSkgPT4ge1xyXG4gICAgICBsZXQgZW1wbG95ZWVzRHJvcERvd24gPSByZXNwb25zZURhdGEuZGF0YTtcclxuICAgICAgaWYgKGVtcGxveWVlc0Ryb3BEb3duICYmIGVtcGxveWVlc0Ryb3BEb3duLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW5hYmxlVGVhbURhc2hib2FyZCwgJ3RydWUnLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbmFibGVUZWFtRGFzaGJvYXJkLCAnZmFsc2UnLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0QXZhdGFyQ29sb3IobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghbmFtZSkgcmV0dXJuIHRoaXMuYXZhdGFyQ29sb3JzWzBdO1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnN0cmluZ1RvTnVtYmVyKG5hbWUpICUgdGhpcy5hdmF0YXJDb2xvcnMubGVuZ3RoO1xyXG4gICAgcmV0dXJuIHRoaXMuYXZhdGFyQ29sb3JzW2luZGV4XTtcclxuICB9XHJcblxyXG4gIC8vIENvbnZlcnQgbmFtZSB0byBudW1lcmljIGhhc2hcclxuICBwcml2YXRlIHN0cmluZ1RvTnVtYmVyKHN0cjogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIGxldCBoYXNoID0gMDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGhhc2ggPSBzdHIuY2hhckNvZGVBdChpKSArICgoaGFzaCA8PCA1KSAtIGhhc2gpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIE1hdGguYWJzKGhhc2gpO1xyXG4gIH1cclxuXHJcbiAgLy8gRXh0cmFjdCBpbml0aWFscyAoZS5nLiDigJxUaW1lIENoYW1w4oCdIOKGkiDigJxUQ+KAnSlcclxuICBnZXRJbml0aWFscyhuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFuYW1lKSByZXR1cm4gXCJcIjtcclxuICAgIGNvbnN0IHdvcmRzID0gbmFtZS50cmltKCkuc3BsaXQoXCIgXCIpO1xyXG4gICAgaWYgKHdvcmRzLmxlbmd0aCA9PT0gMSkgcmV0dXJuIHdvcmRzWzBdLnN1YnN0cmluZygwLCAyKS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgcmV0dXJuICh3b3Jkc1swXVswXSArIHdvcmRzWzFdWzBdKS50b1VwcGVyQ2FzZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8bWF0LXRvb2xiYXIgY2xhc3M9XCJ0b3BiYXIgcmVtb3ZlLXBhZGRpbmdcIj5cclxuICAgIDxkaXYgZnhGbGV4PlxyXG4gICAgICAgIDxhcHAtbWVudSBbcmVsb2FkXT1cInJlbG9hZFwiIChpc09wZW5lZCk9XCJpc09wZW5lZCgkZXZlbnQpXCIgKG9wZW5OZXdEYXNoYm9hcmQpPVwibmF2aWdhdGVUb1VybCgkZXZlbnQpXCI+PC9hcHAtbWVudT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBmeEZsZXggZnhMYXlvdXQ9XCJyb3dcIiBmeEhpZGUueHMgZnhMYXlvdXRBbGlnbj1cImNlbnRlclwiIHN0eWxlPVwidmVydGljYWwtYWxpZ246IGNlbnRlcjtcIj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBmeEZsZXggZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwiZW5kIGNlbnRlclwiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJjb21wYW5pZXNMaXN0ICE9IG51bGwgJiYgY29tcGFuaWVzTGlzdC5sZW5ndGggPiAxXCIgY2xhc3M9XCJmaWx0ZXItZGF0YSBjdXN0b20tYm94IGxhbmd1YWdlLXNlY3Rpb25cIlxyXG4gICAgICAgICAgICBzdHlsZT1cIndpZHRoOjE1MHB4O1wiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cclxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgcGxhY2Vob2xkZXI9XCJcIiBuYW1lPVwic2VsZWN0ZWRDb21wYW55XCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZENvbXBhbnlcIlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJzZWxlY3RDb21wYW55KCRldmVudC52YWx1ZSlcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0LXRyaWdnZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkQ29tcGFueVwiIGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIxNXB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwieyAnbWFyZ2luLWJvdHRvbSc6IHNlbGVjdGVkQ29tcGFueS5jb21wYW55TWluaUxvZ28gPyAnMTBweCcgOiAnMHB4JyB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwic2VsZWN0ZWRDb21wYW55LmNvbXBhbnlNaW5pTG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMjBweDtoZWlnaHQ6IDIwcHg7Ym9yZGVyLXJhZGl1czogNTBweDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwic2VsZWN0ZWRDb21wYW55LmNvbXBhbnlNaW5pTG9nb1wiIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFzZWxlY3RlZENvbXBhbnkuY29tcGFueU1pbmlMb2dvXCIgY2xhc3M9XCJhdmF0YXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIiBtYXRUb29sdGlwPVwie3sgc2VsZWN0ZWRDb21wYW55LmNvbXBhbnlOYW1lIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImdldEF2YXRhckNvbG9yKHNlbGVjdGVkQ29tcGFueS5jb21wYW55TmFtZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEluaXRpYWxzKHNlbGVjdGVkQ29tcGFueS5jb21wYW55TmFtZSkgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIiBtYXRUb29sdGlwPVwie3tzZWxlY3RlZENvbXBhbnkuY29tcGFueU5hbWV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNDAwXCIgZnhGbGV4PVwiY2FsYygxMDAlIC0gNDBweClcIiBjbGFzcz1cImxhbmd1YWdlLWRpc3BsYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogYmxhY2sgIWltcG9ydGFudDtcIj57eyBzZWxlY3RlZENvbXBhbnlOYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGZ4RmxleCBjbGFzcz1cInNlYXJjaF9nb2FsaW5wdXQgbWwtMVwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IHN0aWNreTsgdG9wOiAwOyB6LWluZGV4OiAxOyBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZnVsbC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwic2VhcmNoX2dvYWxcIiBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cInt7J0hSTUFOQUdBTUVOVC5TRUFSQ0gnIHwgdHJhbnNsYXRlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAoaW5wdXQpPVwic2VhcmNoKCRldmVudClcIj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjbG9zZV9pY29uIG1hc3RlcmRhdGEtc2VhcmNoLWNsb3NlXCIgZnhMYXlvdXRBbGlnbj1cImVuZCBjZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhc2VhcmNoVGV4dFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwic2VhcmNoVGV4dFwiIGNsYXNzPVwiaWNvbi1idXR0b24gbXItMDUgbXQtMDVcIiBhcmlhLWhpZGRlbj1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZVNlYXJjaCgpXCIgc3R5bGU9XCJjdXJzb3I6cG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb25cclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29tcGFueUxpc3Qgb2Ygc2VhcmNoQ29tcGFuaWVzKGNvbXBhbmllc0xpc3QsIHNlYXJjaFRleHQpO3RyYWNrQnk6IHRyYWNrQnlDb21wYW55SWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjb21wYW55TGlzdFwiIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIiBtYXRUb29sdGlwPVwie3tjb21wYW55TGlzdC5jb21wYW55TmFtZX19XCJcclxuICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNDAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgZnhMYXlvdXQ9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cImNvbXBhbnlMaXN0LmNvbXBhbnlNaW5pTG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAyMHB4O2hlaWdodDogMjBweDtib3JkZXItcmFkaXVzOiA1MHB4O21hcmdpbi10b3A6IDEwcHg7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiY29tcGFueUxpc3QuY29tcGFueU1pbmlMb2dvXCIgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhY29tcGFueUxpc3QuY29tcGFueU1pbmlMb2dvXCIgY2xhc3M9XCJhdmF0YXJcIiBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyBjb21wYW55TGlzdC5jb21wYW55TmFtZSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImdldEF2YXRhckNvbG9yKGNvbXBhbnlMaXN0LmNvbXBhbnlOYW1lKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEluaXRpYWxzKGNvbXBhbnlMaXN0LmNvbXBhbnlOYW1lKSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtMDVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbXBhbnlMaXN0LmNvbXBhbnlOYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwic2hvd1RyYWlsUGVyaW9kXCI+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7ICdTSEVMTC5GUkVFVFJBSUxFWFBJUkUnIHwgdHJhbnNsYXRlIH19PHNwYW4gWyhuZ01vZGVsKV09XCJub09mRGF5c1wiPnt7Y29tcGFueS50cmFpbERheXN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIHt7ICdTSEVMTC5EQVlTJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiaG9tZVwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbc3R5bGUub3ZlcmZsb3ddPVwiJ3Zpc2libGUnXCIgbWF0VG9vbHRpcD1cInt7ICdTSEVMTC5IT01FJyB8IHRyYW5zbGF0ZX19XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidG9wYmFyLWJ1dHRvbi1yaWdodFwiIChjbGljayk9XCJjaGFuZ2VNZW51VHlwZSgnV29ya3NwYWNlTWVudUl0ZW1zJyk7bmF2aWdhdGVUb0Rhc2hib2FyZHMoKVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCIobWVudVR5cGUgPT0gJ1dvcmtzcGFjZU1lbnVJdGVtcyd8fCB0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMoJy9kYXNoYm9hcmQtbWFuYWdlbWVudCcpKSA/ICdpY29uX2FjdGl2ZV9jbGFzcycgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmhvbWU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiaG9tZVwiICpuZ0lmPVwiY2FuQWNjZXNzX2ZlYXR1cmVfVmlld1JvbGVzXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFtzdHlsZS5vdmVyZmxvd109XCIndmlzaWJsZSdcIiBtYXRUb29sdGlwPVwie3sgJ1JPTEVTVklFVy5ST0xFUycgfCB0cmFuc2xhdGV9fVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRvcGJhci1idXR0b24tcmlnaHRcIiAoY2xpY2spPVwiY2hhbmdlTWVudVR5cGUoJ1dvcmtzcGFjZU1lbnVJdGVtcycpO25hdmlnYXRlVG9Sb2xlcygpXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihtZW51VHlwZSA9PSAnV29ya3NwYWNlTWVudUl0ZW1zJ3x8IHRoaXMucm91dGVyLnVybC5pbmNsdWRlcygnL3JvbGVtYW5hZ2VtZW50L3JvbGVtYW5hZ2VtZW50JykpID8gJ2ljb25fYWN0aXZlX2NsYXNzJyA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24+YnJpZ2h0bmVzc19oaWdoPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCIoY2FuQWNjZXNzX2ZlYXR1cmVfU2V0dGluZ3MpIHx8IChjYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Um9sZXMpXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiIG1hdFRvb2x0aXA9XCJ7eyAnU0hFTEwuU0VUVElOR1MnIHwgdHJhbnNsYXRlIH19XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidG9wYmFyLWJ1dHRvbi1yaWdodCB0aGVtZS1uYXZiYXItaWNvbi1jb2xvclwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwibmF2aWdhdGVUb1NldHRpbmdzKClcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiKHRoaXMucm91dGVyLnVybC5pbmNsdWRlcygnL3NldHRpbmdzJykpID8gJ2ljb25fYWN0aXZlX2NsYXNzJyA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24+c2V0dGluZ3M8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImNhbkFjY2Vzc19mZWF0dXJlX015UHJvamVjdFdvcmtcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCIgbWF0VG9vbHRpcD1cInt7ICdTSEVMTC5NWVdPUksnIHwgdHJhbnNsYXRlIH19XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidG9wYmFyLWJ1dHRvbi1yaWdodCB0aGVtZS1uYXZiYXItaWNvbi1jb2xvclwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwibmF2aWdhdGVUb1N0YXR1c1JlcG9ydCgpXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24+YXNzaWdubWVudDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICAgICpuZ0lmPVwiKGNhbkFjY2Vzc19mZWF0dXJlX1B1bmNoQ2FyZCkgJiYgISggdGltZXNoZWV0RGlzYWJsZW9yRW5hYmxlICYmIHRpbWVzaGVldERpc2FibGVvckVuYWJsZS5UaW1lU2hlZXRSZXN0cmljdGVkKVwiPlxyXG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGlkPVwiZmVlZFRpbWVTaGVldENvbXBvbmVudFwiIFtzdHlsZS5vdmVyZmxvd109XCIndmlzaWJsZSdcIlxyXG4gICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCIgbWF0VG9vbHRpcD1cInt7ICdTSEVMTC5MT0dUSU1FJyB8IHRyYW5zbGF0ZX19XCJcclxuICAgICAgICAgICAgW3NhdFBvcG92ZXJBbmNob3JGb3JdPVwiZmVlZFRpbWVTaGVldFwiIChjbGljayk9XCJvcGVuVGltZVNoZWV0KClcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInRvcGJhci1idXR0b24tcmlnaHQgdGhlbWUtbmF2YmFyLWljb24tY29sb3JcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmFjY2Vzc190aW1lPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBOb3RpZmljYXRpb24gdG9nZ2xlIGJ1dHRvbiAtLT5cclxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIiBtYXRUb29sdGlwPVwie3sgJ1NIRUxMLk5PVElGSUNBVElPTlMnIHwgdHJhbnNsYXRlfX1cIlxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVOb3RpZmljKClcIiBbc3R5bGUub3ZlcmZsb3ddPVwiJ3Zpc2libGUnXCIgKm5nSWY9XCJuZXdOb3RpZmljYXRpb25zQ291bnQgIT0gMFwiXHJcbiAgICAgICAgY2xhc3M9XCJ0b3BiYXItYnV0dG9uLXJpZ2h0IHRoZW1lLW5hdmJhci1pY29uLWNvbG9yXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm5vdGlmaWNhdGlvblwiPlxyXG4gICAgICAgIDxtYXQtaWNvbj5ub3RpZmljYXRpb25zPC9tYXQtaWNvbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIm5ld05vdGlmaWNhdGlvbnNDb3VudCAhPSAwXCIgY2xhc3M9XCJub3RpZmljYXRpb24tbnVtYmVyIG1hdC1iZy13YXJuXCI+e3tcclxuICAgICAgICAgICAgbmV3Tm90aWZpY2F0aW9uc0NvdW50IH19PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8bWF0LW1lbnUgI25vdGlmaWNhdGlvbj1cIm1hdE1lbnVcIj5cclxuICAgICAgICA8YXBwLW5vdGlmaWNhdGlvbnM+PC9hcHAtbm90aWZpY2F0aW9ucz5cclxuICAgIDwvbWF0LW1lbnU+XHJcblxyXG4gICAgPCEtLSBUb3AgbGVmdCB1c2VyIG1lbnUgLS0+XHJcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiYWNjb3VudE1lbnVcIiAoY2xpY2spPVwidG9nZ2xlUmVjb3JkaW5nKClcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInRoaXMucm91dGVyLnVybC5pbmNsdWRlcygnL2Rhc2hib2FyZC9wcm9maWxlLycpID8gJ2ljb25fYWN0aXZlX2NsYXNzJyA6ICcnXCJcclxuICAgICAgICBjbGFzcz1cInRvcGJhci1idXR0b24tcmlnaHQgaW1nLWJ1dHRvblwiICpuZ0lmPVwiYXV0aGVudGljYXRlZFVzZXJSZWNvcmRcIj5cclxuICAgICAgICA8aW1nIGNsYXNzPVwiaWNvbi1oaWdobGlnaHQtc2V0dGVyXCIgKm5nSWY9XCJhdXRoZW50aWNhdGVkVXNlclJlY29yZC5wcm9maWxlSW1hZ2VcIlxyXG4gICAgICAgICAgICBbc3JjXT1cImF1dGhlbnRpY2F0ZWRVc2VyUmVjb3JkLnByb2ZpbGVJbWFnZVwiIGFsdD1cInByb2ZpbGUgaW1hZ2VcIiAvPlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWF1dGhlbnRpY2F0ZWRVc2VyUmVjb3JkLnByb2ZpbGVJbWFnZVwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDRweCAhaW1wb3J0YW50O1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyXCIgbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiIG1hdFRvb2x0aXA9XCJ7eyBhdXRoZW50aWNhdGVkVXNlclJlY29yZC5mdWxsTmFtZSB9fVwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImdldEF2YXRhckNvbG9yKGF1dGhlbnRpY2F0ZWRVc2VyUmVjb3JkLmZ1bGxOYW1lKVwiPnt7XHJcbiAgICAgICAgICAgICAgICBnZXRJbml0aWFscyhhdXRoZW50aWNhdGVkVXNlclJlY29yZC5mdWxsTmFtZSkgfX08L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxzYXQtcG9wb3ZlciAjZmVlZFRpbWVTaGVldCBbYXV0b0ZvY3VzXT1cImZhbHNlXCIgaGFzQmFja2Ryb3AgW3Jlc3RvcmVGb2N1c109XCJmYWxzZVwiIFtpbnRlcmFjdGl2ZUNsb3NlXT1cInRydWVcIlxyXG4gICAgICAgIHNjcm9sbFN0cmF0ZWd5PVwicmVwb3NpdGlvblwiIHZlcnRpY2FsQWxpZ249XCJiZWxvd1wiIGhvcml6b250YWxBbGlnbj1cImJlZm9yZVwiPlxyXG4gICAgICAgIDxhcHAtZmVlZC10aW1lIChjbG9zZUZlZWRUaW1lU2hlZXRQb3B1cCk9XCJjbG9zZUZlZWRUaW1lU2hlZXQoKVwiIFtpc0ZlZWRUaW1lU2hlZXRdPVwiaXNGZWVkVGltZVNoZWV0XCI+XHJcbiAgICAgICAgPC9hcHAtZmVlZC10aW1lPlxyXG4gICAgPC9zYXQtcG9wb3Zlcj5cclxuXHJcbiAgICA8bWF0LW1lbnUgI2FjY291bnRNZW51PVwibWF0TWVudVwiPlxyXG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwibmF2aWdhdGVUb1Byb2ZpbGUoKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+YWNjb3VudF9ib3g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8c3Bhbj57eyAnU0hFTEwuUFJPRklMRScgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiYWN0aXZpdHktcmVjb3JkZXIgcmVjb3JkaW5nLXN0eWxlXCIgKm5nSWY9XCJpc1JlY29yZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBmaWJlcl9tYW51YWxfcmVjb3JkIC0tPlxyXG4gICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICA8IS0tIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiZ29Ub1VzZXJTdG9yZSgpXCIgKm5nSWY9XCJpc1N0b3JlQWNjZXNzXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbG91ZDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDxzcGFuPlN0b3JlPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPiAtLT5cclxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiIG1hdFRvb2x0aXA9XCJ7eyAnU0hFTEwuQ0xFQVJERU1PREFUQScgfCB0cmFuc2xhdGV9fVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0RlbGV0ZUljb24gJiYgc2hvd0RlbGV0ZVwiIChjbGljayk9XCJjbGVhckRlbW9EYXRhKClcIiBbc3R5bGUub3ZlcmZsb3ddPVwiJ3Zpc2libGUnXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5kZWxldGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8c3Bhbj57eyAnU0hFTEwuQ0xFQVJERU1PREFUQScgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiXHJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyAnU0hFTEwuRVhQT1JUQ09ORklHVVJBVElPTicgfCB0cmFuc2xhdGV9fVwiICpuZ0lmPVwiY2FuQWNjZXNzX2ZlYXR1cmVfTWFuYWdlU3lzdGVtRXhwb3J0c1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJleHBvcnRDb25maWd1cmF0aW9uRGlhbG9nRGF0YSgpXCIgW3N0eWxlLm92ZXJmbG93XT1cIid2aXNpYmxlJ1wiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+Z2V0X2FwcDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7ICdTSEVMTC5FWFBPUlRDT05GSUdVUkFUSU9OJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCJcclxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7ICdTSEVMTC5JTVBPUlRDT05GSUdVUkFUSU9OJyB8IHRyYW5zbGF0ZX19XCIgW3NhdFBvcG92ZXJBbmNob3JGb3JdPVwiZmlsZVVwbG9hZERyb3B6b25lUG9wb3ZlclwiXHJcbiAgICAgICAgICAgICNmaWxlVXBsb2FkRHJvcHpvbmVQb3B1cD1cInNhdFBvcG92ZXJBbmNob3JcIiAqbmdJZj1cImNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZVN5c3RlbUltcG9ydHNcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWRkVXBsb2FkRmlsZVBvcHVwT3BlbihmaWxlVXBsb2FkRHJvcHpvbmVQb3B1cClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPnB1Ymxpc2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8c3Bhbj57eyAnU0hFTEwuSU1QT1JUQ09ORklHVVJBVElPTicgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8IS0tPGRpdiBjbGFzcz1cImZpbHRlci1kYXRhIGN1c3RvbS1ib3ggbGFuZ3VhZ2Utc2VjdGlvblwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cclxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgcGxhY2Vob2xkZXI9XCJcIiBuYW1lPVwiY3VycmVudExhbmdcIiBbKG5nTW9kZWwpXT1cImN1cnJlbnRMYW5nXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJzZXRMYW5nKClcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0LXRyaWdnZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTVweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gZnhGbGV4PVwiMjRweFwiIGNsYXNzPVwibGFuZ3VhZ2UtaWNvblwiPmxhbmd1YWdlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZnhGbGV4PVwiY2FsYygxMDAlIC0gNDBweClcIiBjbGFzcz1cImxhbmd1YWdlLWRpc3BsYXlcIj57eyBzZWxlY3RlZExhbmdOYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cIm9wdGlvblwiICpuZ0Zvcj1cImxldCBsYW5nIG9mIGF2YWlsYWJsZUxhbmdzXCIgW3ZhbHVlXT1cImxhbmcuY29kZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGxhbmcubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+LS0+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvbk5hdmlnYXRlVG9CaWxsaW5nU2NyZWVuKClcIiAqbmdJZj1cImNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZUFjY291bnRzQW5kQmlsbGluZ1wiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+YWNjb3VudF9iYWxhbmNlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPHNwYW4+QWNjb3VudCAmIEJpbGxpbmc8L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvbk5hdmlnYXRlVG9QcmljaW5nU2NyZWVuKClcIiAqbmdJZj1cImNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZUFjY291bnRzQW5kQmlsbGluZ1wiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+YWNjb3VudF9iYWxhbmNlX3dhbGxldDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDxzcGFuPlByaWNpbmcgJiBGZWF0dXJlczwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNhbkFjY2Vzc19mZWF0dXJlX0FsdGVybmF0ZVNpZ25JblwiIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImFsdGVybmF0ZVNpZ25JbigpXCJcclxuICAgICAgICAgICAgW3N0eWxlLm92ZXJmbG93XT1cIid2aXNpYmxlJ1wiIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIlxyXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwie3sgJ1NIRUxMLlNJR05JTkFTJyB8IHRyYW5zbGF0ZX19XCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5ob3dfdG9fcmVnPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPHNwYW4+e3sgJ1NIRUxMLlNJR05JTkFTJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwib25TaWdub3V0KClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmV4aXRfdG9fYXBwPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPHNwYW4+e3sgJ1NIRUxMLlNJR05PVVQnIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJmZWVkQmFja1BvcG92ZXIudG9nZ2xlKCk7b3BlbkZlZWRCYWNrRGlhbG9nKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZmVlZGJhY2staWNvblwiIFtzYXRQb3BvdmVyQW5jaG9yRm9yXT1cImZlZWRCYWNrUG9wb3ZlclwiPlxyXG4gICAgICAgICAgICAgICAgc2VudGltZW50X3NhdGlzZmllZF9hbHRcclxuICAgICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPHNwYW4+di17e2FwcGxpY2F0aW9uVmVyc2lvbn19PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9tYXQtbWVudT5cclxuPC9tYXQtdG9vbGJhcj5cclxuPCEtLSA8bmd4LXVpLWxvYWRlciBmZ3NTaXplPVwiMTgwXCIgW2Znc1R5cGVdPVwic3Bpbm5lclR5cGVcIiBjb2xvcj1cInByaW1hcnlcIj48L25neC11aS1sb2FkZXI+IC0tPlxyXG48ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwiay1pLWxvYWRpbmdcIj48L2Rpdj5cclxuPHNhdC1wb3BvdmVyICNmZWVkQmFja1BvcG92ZXIgdmVydGljYWxBbGlnbj1cImJlbG93XCIgaGFzQmFja2Ryb3AgYmFja2Ryb3BDbGFzcz1cImJhY2tkcm9wLWNvbG9yXCJcclxuICAgIFtpbnRlcmFjdGl2ZUNsb3NlXT1cImZhbHNlXCIgaG9yaXpvbnRhbEFsaWduPVwiZW5kXCI+XHJcbiAgICA8YXBwLXN1Ym1pdC1mZWVkYmFjayAqbmdJZj1cImlzRmVlZEJhY2tEaWFsb2dcIiAoY2xvc2VEaWFsb2cpPVwiY2xvc2VGZWVkQmFja2xvZ0RpYWxvZygpXCI+XHJcbiAgICA8L2FwcC1zdWJtaXQtZmVlZGJhY2s+XHJcbjwvc2F0LXBvcG92ZXI+XHJcblxyXG48bWF0LW1lbnUgI21lbnUyPVwibWF0TWVudVwiIGNsYXNzPVwiZGlhbG9nX3dpbmRvd1wiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cclxuICAgIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwicC0wIG0tMCBsaXN0b2ZfYXNzZXRzIHN0b3JlLWxpc3QtZHJvcGRvd25cIiBpZD1cInN0eWxlLTFcIj5cclxuICAgICAgICA8bWF0LWxpc3QgY2xhc3M9XCJjb21wYWN0LWxpc3RcIj5cclxuICAgICAgICAgICAgPG1hdC1jYXJkIGNsYXNzPVwicC0wIGFzc2V0LWNhcmRcIiAqbmdJZj1cIihjYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUZvcm0gfHwgY2FuQWNjZXNzX2ZlYXR1cmVfVmlld0Zvcm1zKVwiXHJcbiAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9hcHBsaWNhdGlvbnMvdmlldy1mb3JtcyddXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhpZGUtY29udGVudC1vdmVyZmxvdyB1c2VyU3RvcnktbmFtZS1jb250cm9sIHN0b3JlLWRyb3Bkb3duLXBhZGRpbmdcIj5Gb3Jtczwvc3Bhbj5cclxuICAgICAgICAgICAgPC9tYXQtY2FyZD5cclxuICAgICAgICAgICAgPG1hdC1jYXJkIGNsYXNzPVwicC0wIGFzc2V0LWNhcmRcIiAqbmdJZj1cImNhbkFjY2Vzc19mZWF0dXJlX0FkZE9yVXBkYXRlQXBwbGljYXRpb25zXCJcclxuICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL2FwcGxpY2F0aW9ucy9jdXN0b20tYXBwbGljYXRpb25zJ11cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGlkZS1jb250ZW50LW92ZXJmbG93IHVzZXJTdG9yeS1uYW1lLWNvbnRyb2wgc3RvcmUtZHJvcGRvd24tcGFkZGluZ1wiPkN1c3RvbVxyXG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uczwvc3Bhbj5cclxuICAgICAgICAgICAgPC9tYXQtY2FyZD5cclxuICAgICAgICAgICAgPG1hdC1jYXJkICpuZ0lmPVwiY2FuQWNjZXNzX2ZlYXR1cmVfVmlld1JvbGVzXCIgY2xhc3M9XCJwLTAgYXNzZXQtY2FyZFwiXHJcbiAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9yb2xlbWFuYWdlbWVudC9yb2xlbWFuYWdlbWVudCddXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhpZGUtY29udGVudC1vdmVyZmxvdyB1c2VyU3RvcnktbmFtZS1jb250cm9sIHN0b3JlLWRyb3Bkb3duLXBhZGRpbmdcIj5Sb2xlXHJcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9tYXQtY2FyZD5cclxuICAgICAgICAgICAgPG1hdC1jYXJkICpuZ0lmPVwiY2FuQWNjZXNzX2ZlYXR1cmVfTWFuYWdlUHJvamVjdFJvbGVQZXJtaXNzaW9uc1wiIGNsYXNzPVwicC0wIGFzc2V0LWNhcmRcIlxyXG4gICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvcm9sZW1hbmFnZW1lbnQvZW50aXR5cm9sZW1hbmFnZW1lbnQnXVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoaWRlLWNvbnRlbnQtb3ZlcmZsb3cgdXNlclN0b3J5LW5hbWUtY29udHJvbCBzdG9yZS1kcm9wZG93bi1wYWRkaW5nXCI+e3twcm9qZWN0Um9sZVRleHQgfFxyXG4gICAgICAgICAgICAgICAgICAgIHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVsc319PC9zcGFuPlxyXG4gICAgICAgICAgICA8L21hdC1jYXJkPlxyXG4gICAgICAgIDwvbWF0LWxpc3Q+XHJcbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbjwvbWF0LW1lbnU+XHJcblxyXG48ZGl2IFtAZmFkZV0gKm5nSWY9XCJkaXNwbGF5V2VsY29tZU5vdGUgJiYgdXNlckZ1bGxOYW1lXCIgY2xhc3M9XCJ3ZWxjb21lLW5vdGVcIj5cclxuICAgIDxzcGFuICpuZ0lmPVwibG9nZ2VkSW5Db3VudCA9PSAxOyBlbHNlIGVsc2VTcGFuXCI+V2VsY29tZSAmbmJzcDsgPC9zcGFuPiA8c3Bhbj4ge3sgdXNlckZ1bGxOYW1lIH19IDwvc3Bhbj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjZWxzZVNwYW4+IFdlbGNvbWUgYmFjayAmbmJzcDs8L25nLXRlbXBsYXRlPlxyXG48L2Rpdj5cclxuPHNhdC1wb3BvdmVyICNmaWxlVXBsb2FkRHJvcHpvbmVQb3BvdmVyIGhhc0JhY2tkcm9wIFtpbnRlcmFjdGl2ZUNsb3NlXT1cImZhbHNlXCIgYmFja2Ryb3BDbGFzcz1cInRlc3RydW4tcG9wb3ZlclwiXHJcbiAgICBzY3JvbGxTdHJhdGVneT1cInJlcG9zaXRpb25cIj5cclxuICAgIDxtYXQtY2FyZCBjbGFzcz1cInAtMCBtci0wIGN1c3RvbS1ocm0tZHJvcHpvbmVcIj5cclxuICAgICAgICA8bWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlLXRleHQgbWF0LWJnLXByaW1hcnkgcC0wNVwiIGZ4TGF5b3V0PVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGZ4RmxleCBjbGFzcz1cInRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3snVEVTVE1BTkFHRU1FTlQuVVBMT0FERklMRVMnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCIyMHB4XCIgZnhMYXlvdXRBbGlnbj1cImVuZCBjZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiaW5saW5lX2VkaXRfY2xvc2VfYnRuIGJ0blwiIChjbGljayk9XCJjbG9zZVVwbG9hZEZpbGVQb3B1cCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJ0aW1lc1wiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L21hdC1jYXJkLXRpdGxlPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLTFcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1kcm9wem9uZSBkcm9wem9uZS1oZWlnaHRcIiBuZ3gtZHJvcHpvbmUgKGNoYW5nZSk9XCJmaWxlc1NlbGVjdGVkKCRldmVudClcIiBhY2NlcHQ9XCIuanNvblwiPlxyXG4gICAgICAgICAgICAgICAgPG5neC1kcm9wem9uZS1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eydET0NVTUVOVE1BTkFHRU1FTlQuRFJBR0FORERST1BGSUxFU0hFUkUnIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L25neC1kcm9wem9uZS1sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxuZ3gtZHJvcHpvbmUtcHJldmlldyBjbGFzcz1cImN1c3RvbS1kcm9wem9uZS1wcmV2aWV3XCIgKm5nRm9yPVwibGV0IGYgb2YgZmlsZXNcIiBbcmVtb3ZhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChyZW1vdmVkKT1cIm9uUmVtb3ZlKGYpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5neC1kcm9wem9uZS1sYWJlbCBjbGFzcz1cImN1c3RvbS1kcm9wem9uZS1sYWJlbFwiIFthdHRyLmRhdGEtdGlwXT1cImYubmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBzZXRMYWJlbE5hbWVGb3JEcm9wem9uZShmLm5hbWUpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZ3gtZHJvcHpvbmUtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8L25neC1kcm9wem9uZS1wcmV2aWV3PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tMDUgdGV4dC1tdXRlZFwiIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+YWxsb3dlZCBmaWxlIGV4dGVuc2lvbnMgOiAuanNvbjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIGNvbG9yPVwicHJpbWFyeVwiIG1vZGU9XCJkZXRlcm1pbmF0ZVwiIFt2YWx1ZV09XCJwcm9ncmVzc1ZhbHVlXCIgKm5nSWY9XCJwcm9ncmVzc1ZhbHVlID4gMFwiPlxyXG4gICAgICAgICAgICA8L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9ncmVzc1ZhbHVlID4gMFwiPlxyXG4gICAgICAgICAgICAgICAge3twcm9ncmVzc1ZhbHVlfX0lIGNvbXBsZXRlZCAoVXBsb2FkaW5nIHt7ZmlsZUNvdW50ZXJ9fSBvZiB7e2ZpbGVzLmxlbmd0aH19IGZpbGVzKVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTA1XCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBlbmRcIiAqbmdJZj1cImZpbGVzUHJlc2VudFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJzYXZlRmlsZXMoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmYS1pY29uIGNsYXNzPVwibXItMDVcIiBpY29uPVwic2F2ZVwiPjwvZmEtaWNvbj57eydVUExPQUQnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1sLTFcIiBtYXQtYnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJyZW1vdmVBbGxGaWxlcygpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmYS1pY29uIGNsYXNzPVwibXItMDVcIiBpY29uPVwidGltZXNcIj48L2ZhLWljb24+e3snRE9DVU1FTlRNQU5BR0VNRU5ULkNMRUFSRklMRVMnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTA1XCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBlbmRcIiAqbmdJZj1cImltcG9ydGluZ0luUHJvZ3Jlc3NcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtbC0xXCIgbWF0LWJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBbZGlzYWJsZWRdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmYS1pY29uIGNsYXNzPVwibXItMDVcIiBpY29uPVwidXBsb2FkXCI+PC9mYS1pY29uPnt7J1NIRUxMLklNUE9SVElOR1RFWFQnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zcGluIGZhLXNwaW5uZXJcIiAqbmdJZj1cImltcG9ydGluZ0luUHJvZ3Jlc3NcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L21hdC1jYXJkPlxyXG48L3NhdC1wb3BvdmVyPlxyXG5cclxuPHN0eWxlPlxyXG4gICAgLmZpbGUtb3ItZm9sZGVyLWljb24ge1xyXG4gICAgICAgIHdpZHRoOiA1MHB4O1xyXG4gICAgICAgIGhlaWdodDogNTBweDtcclxuICAgICAgICBmb250LXNpemU6IDUwcHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmZpbGUtb3ItZm9sZGVyLW5hbWUtYWxpZ24ge1xyXG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XHJcbiAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xyXG4gICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XHJcbiAgICB9XHJcblxyXG4gICAgLmRyb3B6b25lLWhlaWdodCB7XHJcbiAgICAgICAgaGVpZ2h0OiAxMzBweDtcclxuICAgIH1cclxuXHJcbiAgICAuY3VzdG9tLWRyb3B6b25lLXByZXZpZXcge1xyXG4gICAgICAgIGhlaWdodDogMTAwcHggIWltcG9ydGFudDtcclxuICAgICAgICBtaW4taGVpZ2h0OiAxMDBweCAhaW1wb3J0YW50O1xyXG4gICAgICAgIHBhZGRpbmc6IDBweCAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG48L3N0eWxlPlxyXG48bmctdGVtcGxhdGUgI29wZW5Bbm5vdWNlbWVudERpYWxvZ0NvbXBvbmVudCBsZXQtZGF0YT5cclxuICAgIDxhbm5vdW5jZW1lbnQtZGlhbG9nIFtkYXRhXT1bZGF0YV0+PC9hbm5vdW5jZW1lbnQtZGlhbG9nPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|