@reusa/ngx-reusa-app-lib 0.0.1322 → 0.0.1324

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/esm2022/lib/components/add-employer/add-employer.component.mjs +196 -132
  2. package/esm2022/lib/components/add-participant/add-participant.component.mjs +29 -24
  3. package/esm2022/lib/components/add-payment/add-payment.component.mjs +45 -31
  4. package/esm2022/lib/components/address/address.component.mjs +97 -46
  5. package/esm2022/lib/components/bank-details/bank-details.component.mjs +139 -75
  6. package/esm2022/lib/components/contact-us/contact-us.component.mjs +42 -28
  7. package/esm2022/lib/components/email-update/email-update.component.mjs +119 -62
  8. package/esm2022/lib/components/employer-grid/employer-grid.component.mjs +165 -84
  9. package/esm2022/lib/components/footer/footer.component.mjs +23 -11
  10. package/esm2022/lib/components/header/header.component.mjs +163 -109
  11. package/esm2022/lib/components/idle-detector/idle-detector.component.mjs +29 -18
  12. package/esm2022/lib/components/job-search-result-page/job-search-result-page.component.mjs +22 -16
  13. package/esm2022/lib/components/job-title/job-title.component.mjs +20 -16
  14. package/esm2022/lib/components/legal-disclaimar/legal-disclaimar.component.mjs +389 -208
  15. package/esm2022/lib/components/lexis-nexis/lexis-nexis.component.mjs +83 -21
  16. package/esm2022/lib/components/menu/menu.component.mjs +63 -25
  17. package/esm2022/lib/components/mfa/mfa.component.mjs +155 -98
  18. package/esm2022/lib/components/mfa2/mfa2.component.mjs +54 -30
  19. package/esm2022/lib/components/money-expect/money-expect.component.mjs +31 -23
  20. package/esm2022/lib/components/profile/profile.component.mjs +34 -14
  21. package/esm2022/lib/components/profile-redirect/profile-redirect.component.mjs +17 -10
  22. package/esm2022/lib/components/questionnaire/common-success/common-success.page.mjs +80 -27
  23. package/esm2022/lib/components/questionnaire/dynamic-form-panel.component.mjs +29 -8
  24. package/esm2022/lib/components/questionnaire/dynamic-form-question.component.mjs +172 -119
  25. package/esm2022/lib/components/questionnaire/dynamic-form.component.mjs +122 -41
  26. package/esm2022/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.mjs +7 -7
  27. package/esm2022/lib/components/search-employer/search-employer.component.mjs +10 -7
  28. package/esm2022/lib/components/security-question/security-question.component.mjs +19 -9
  29. package/esm2022/lib/components/select/select.component.mjs +10 -5
  30. package/esm2022/lib/components/ssn-reverify/ssn-reverify.component.mjs +72 -52
  31. package/esm2022/lib/components/user-login/user-login.component.mjs +116 -82
  32. package/esm2022/lib/components/weekly-cert-employer/weekly-cert-employer.component.mjs +69 -47
  33. package/esm2022/lib/models/questionnaire/ComboModel.mjs +480 -1
  34. package/esm2022/lib/pages/common/login/login.component.mjs +7 -2
  35. package/esm2022/lib/pages/popovers/language/language.page.mjs +2 -1
  36. package/esm2022/lib/pipes/translate/dynamic-translate.pipe.mjs +2 -2
  37. package/esm2022/lib/validations/AppValidators.mjs +9 -9
  38. package/fesm2022/reusa-ngx-reusa-app-lib.mjs +3103 -1492
  39. package/fesm2022/reusa-ngx-reusa-app-lib.mjs.map +1 -1
  40. package/lib/components/add-employer/add-employer.component.d.ts +22 -73
  41. package/lib/components/add-employer/add-employer.component.d.ts.map +1 -1
  42. package/lib/components/add-participant/add-participant.component.d.ts +4 -1
  43. package/lib/components/add-participant/add-participant.component.d.ts.map +1 -1
  44. package/lib/components/add-payment/add-payment.component.d.ts +1 -2
  45. package/lib/components/add-payment/add-payment.component.d.ts.map +1 -1
  46. package/lib/components/address/address.component.d.ts +10 -1
  47. package/lib/components/address/address.component.d.ts.map +1 -1
  48. package/lib/components/bank-details/bank-details.component.d.ts +17 -1
  49. package/lib/components/bank-details/bank-details.component.d.ts.map +1 -1
  50. package/lib/components/contact-us/contact-us.component.d.ts +4 -1
  51. package/lib/components/contact-us/contact-us.component.d.ts.map +1 -1
  52. package/lib/components/email-update/email-update.component.d.ts +6 -1
  53. package/lib/components/email-update/email-update.component.d.ts.map +1 -1
  54. package/lib/components/employer-grid/employer-grid.component.d.ts +6 -24
  55. package/lib/components/employer-grid/employer-grid.component.d.ts.map +1 -1
  56. package/lib/components/footer/footer.component.d.ts.map +1 -1
  57. package/lib/components/header/header.component.d.ts +3 -0
  58. package/lib/components/header/header.component.d.ts.map +1 -1
  59. package/lib/components/job-search-result-page/job-search-result-page.component.d.ts +3 -1
  60. package/lib/components/job-search-result-page/job-search-result-page.component.d.ts.map +1 -1
  61. package/lib/components/job-title/job-title.component.d.ts +3 -1
  62. package/lib/components/job-title/job-title.component.d.ts.map +1 -1
  63. package/lib/components/legal-disclaimar/legal-disclaimar.component.d.ts +5 -1
  64. package/lib/components/legal-disclaimar/legal-disclaimar.component.d.ts.map +1 -1
  65. package/lib/components/lexis-nexis/lexis-nexis.component.d.ts.map +1 -1
  66. package/lib/components/menu/menu.component.d.ts +11 -1
  67. package/lib/components/menu/menu.component.d.ts.map +1 -1
  68. package/lib/components/mfa/mfa.component.d.ts +6 -1
  69. package/lib/components/mfa/mfa.component.d.ts.map +1 -1
  70. package/lib/components/profile/profile.component.d.ts.map +1 -1
  71. package/lib/components/questionnaire/common-success/common-success.page.d.ts +1 -0
  72. package/lib/components/questionnaire/common-success/common-success.page.d.ts.map +1 -1
  73. package/lib/components/questionnaire/dynamic-form-question.component.d.ts.map +1 -1
  74. package/lib/components/questionnaire/dynamic-form.component.d.ts.map +1 -1
  75. package/lib/components/ssn-reverify/ssn-reverify.component.d.ts +5 -1
  76. package/lib/components/ssn-reverify/ssn-reverify.component.d.ts.map +1 -1
  77. package/lib/components/user-login/user-login.component.d.ts +7 -1
  78. package/lib/components/user-login/user-login.component.d.ts.map +1 -1
  79. package/lib/components/weekly-cert-employer/weekly-cert-employer.component.d.ts +7 -1
  80. package/lib/components/weekly-cert-employer/weekly-cert-employer.component.d.ts.map +1 -1
  81. package/lib/models/questionnaire/ComboModel.d.ts +80 -0
  82. package/lib/models/questionnaire/ComboModel.d.ts.map +1 -1
  83. package/lib/pages/common/login/login.component.d.ts.map +1 -1
  84. package/lib/pages/popovers/language/language.page.d.ts.map +1 -1
  85. package/lib/validations/AppValidators.d.ts +8 -8
  86. package/lib/validations/AppValidators.d.ts.map +1 -1
  87. package/package.json +1 -1
@@ -11,21 +11,21 @@ import * as i6 from "../../services/ovp/ovp.service";
11
11
  import * as i7 from "@angular/router";
12
12
  import * as i8 from "../../services/claimant-service/claimant.service";
13
13
  import * as i9 from "../../services/lexis-nexis/lexis.nexis.service";
14
- import * as i10 from "@angular/common";
15
- import * as i11 from "primeng/api";
16
- import * as i12 from "primeng/dialog";
17
- import * as i13 from "primeng/password";
18
- import * as i14 from "primeng/inputtext";
19
- import * as i15 from "../error/error.component";
20
- import * as i16 from "../captcha/captcha.component";
21
- import * as i17 from "../email-update/email-update.component";
22
- import * as i18 from "../mfa-popup/mfa-popup.component";
23
- import * as i19 from "../mfa2/mfa2.component";
24
- import * as i20 from "../lexis-nexis/lexis-nexis.component";
25
- import * as i21 from "@ngx-translate/core";
14
+ import * as i10 from "@ngx-translate/core";
15
+ import * as i11 from "@angular/common";
16
+ import * as i12 from "primeng/api";
17
+ import * as i13 from "primeng/dialog";
18
+ import * as i14 from "primeng/password";
19
+ import * as i15 from "primeng/inputtext";
20
+ import * as i16 from "../error/error.component";
21
+ import * as i17 from "../captcha/captcha.component";
22
+ import * as i18 from "../email-update/email-update.component";
23
+ import * as i19 from "../mfa-popup/mfa-popup.component";
24
+ import * as i20 from "../mfa2/mfa2.component";
25
+ import * as i21 from "../lexis-nexis/lexis-nexis.component";
26
26
  const _c0 = ["loginFormDirective"];
27
27
  const _c1 = ["resetFormDirective"];
28
- function UserLoginComponent_div_4_Template(rf, ctx) { if (rf & 1) {
28
+ function UserLoginComponent_div_6_Template(rf, ctx) { if (rf & 1) {
29
29
  i0.ɵɵelementStart(0, "div")(1, "ul")(2, "li");
30
30
  i0.ɵɵtext(3, "Employers may call 601-493-9427");
31
31
  i0.ɵɵelementEnd();
@@ -33,7 +33,7 @@ function UserLoginComponent_div_4_Template(rf, ctx) { if (rf & 1) {
33
33
  i0.ɵɵtext(5, "Claimants may call 601-493-9427.");
34
34
  i0.ɵɵelementEnd()()();
35
35
  } }
36
- function UserLoginComponent_div_5_Template(rf, ctx) { if (rf & 1) {
36
+ function UserLoginComponent_div_7_Template(rf, ctx) { if (rf & 1) {
37
37
  i0.ɵɵelementStart(0, "div")(1, "ul")(2, "li");
38
38
  i0.ɵɵtext(3, "Employers may call 207-621-5120");
39
39
  i0.ɵɵelementEnd();
@@ -41,26 +41,26 @@ function UserLoginComponent_div_5_Template(rf, ctx) { if (rf & 1) {
41
41
  i0.ɵɵtext(5, "Claimants may call 1-800-593-7660");
42
42
  i0.ɵɵelementEnd()()();
43
43
  } }
44
- function UserLoginComponent_app_mfa2_12_Template(rf, ctx) { if (rf & 1) {
44
+ function UserLoginComponent_app_mfa2_15_Template(rf, ctx) { if (rf & 1) {
45
45
  const _r9 = i0.ɵɵgetCurrentView();
46
46
  i0.ɵɵelementStart(0, "app-mfa2", 13);
47
- i0.ɵɵlistener("displayChange", function UserLoginComponent_app_mfa2_12_Template_app_mfa2_displayChange_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r8 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r8.isOtpModalEnabled = $event); })("success", function UserLoginComponent_app_mfa2_12_Template_app_mfa2_success_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r10 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r10.loginSuccess()); })("clear", function UserLoginComponent_app_mfa2_12_Template_app_mfa2_clear_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r11 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r11.enableLexisNexis()); });
47
+ i0.ɵɵlistener("displayChange", function UserLoginComponent_app_mfa2_15_Template_app_mfa2_displayChange_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r8 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r8.isOtpModalEnabled = $event); })("success", function UserLoginComponent_app_mfa2_15_Template_app_mfa2_success_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r10 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r10.loginSuccess()); })("clear", function UserLoginComponent_app_mfa2_15_Template_app_mfa2_clear_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r11 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r11.enableLexisNexis()); });
48
48
  i0.ɵɵelementEnd();
49
49
  } if (rf & 2) {
50
50
  const ctx_r2 = i0.ɵɵnextContext();
51
51
  i0.ɵɵproperty("display", ctx_r2.isOtpModalEnabled)("returningUser", ctx_r2.isReturningUser)("verificationPreference", ctx_r2.verificationPreference)("ssn", ctx_r2.ssn);
52
52
  } }
53
- function UserLoginComponent_app_lexis_nexis_13_Template(rf, ctx) { if (rf & 1) {
53
+ function UserLoginComponent_app_lexis_nexis_16_Template(rf, ctx) { if (rf & 1) {
54
54
  const _r13 = i0.ɵɵgetCurrentView();
55
55
  i0.ɵɵelementStart(0, "app-lexis-nexis", 14);
56
- i0.ɵɵlistener("success", function UserLoginComponent_app_lexis_nexis_13_Template_app_lexis_nexis_success_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r12 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r12.onLnSuccess()); })("error", function UserLoginComponent_app_lexis_nexis_13_Template_app_lexis_nexis_error_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r14 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r14.onLNError()); })("usps", function UserLoginComponent_app_lexis_nexis_13_Template_app_lexis_nexis_usps_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r15 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r15.triggerUSPS()); });
56
+ i0.ɵɵlistener("success", function UserLoginComponent_app_lexis_nexis_16_Template_app_lexis_nexis_success_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r12 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r12.onLnSuccess()); })("error", function UserLoginComponent_app_lexis_nexis_16_Template_app_lexis_nexis_error_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r14 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r14.onLNError()); })("usps", function UserLoginComponent_app_lexis_nexis_16_Template_app_lexis_nexis_usps_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r15 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r15.triggerUSPS()); });
57
57
  i0.ɵɵelementEnd();
58
58
  } if (rf & 2) {
59
59
  const ctx_r3 = i0.ɵɵnextContext();
60
60
  i0.ɵɵproperty("display", ctx_r3.isLexisNexisPopupEnabled)("userModel", ctx_r3.userModel);
61
61
  } }
62
- const _c2 = () => ({ required: "Captcha is required." });
63
- function UserLoginComponent_form_15_div_15_Template(rf, ctx) { if (rf & 1) {
62
+ const _c2 = a0 => ({ required: a0 });
63
+ function UserLoginComponent_form_18_div_15_Template(rf, ctx) { if (rf & 1) {
64
64
  i0.ɵɵelementStart(0, "div", 33);
65
65
  i0.ɵɵelement(1, "app-captcha", 34)(2, "app-error", 21);
66
66
  i0.ɵɵelementEnd();
@@ -71,11 +71,10 @@ function UserLoginComponent_form_15_div_15_Template(rf, ctx) { if (rf & 1) {
71
71
  i0.ɵɵadvance(1);
72
72
  i0.ɵɵproperty("formControl", ctx_r17.captcha);
73
73
  i0.ɵɵadvance(1);
74
- i0.ɵɵproperty("field", ctx_r17.captcha)("form", _r16)("errDef", i0.ɵɵpureFunction0(4, _c2));
74
+ i0.ɵɵproperty("field", ctx_r17.captcha)("form", _r16)("errDef", i0.ɵɵpureFunction1(4, _c2, ctx_r17.captchaRequired));
75
75
  } }
76
- const _c3 = () => ({ required: "User ID is required.", minlength: "User ID should have minimum 5 characters." });
77
- const _c4 = () => ({ required: "Password is required." });
78
- function UserLoginComponent_form_15_Template(rf, ctx) { if (rf & 1) {
76
+ const _c3 = (a0, a1) => ({ required: a0, minlength: a1 });
77
+ function UserLoginComponent_form_18_Template(rf, ctx) { if (rf & 1) {
79
78
  const _r19 = i0.ɵɵgetCurrentView();
80
79
  i0.ɵɵelementStart(0, "form", 15, 16)(2, "div", 17)(3, "div", 18)(4, "label", 19);
81
80
  i0.ɵɵtext(5);
@@ -89,20 +88,20 @@ function UserLoginComponent_form_15_Template(rf, ctx) { if (rf & 1) {
89
88
  i0.ɵɵelementEnd();
90
89
  i0.ɵɵelement(13, "p-password", 23)(14, "app-error", 21);
91
90
  i0.ɵɵelementEnd()();
92
- i0.ɵɵtemplate(15, UserLoginComponent_form_15_div_15_Template, 3, 5, "div", 24);
91
+ i0.ɵɵtemplate(15, UserLoginComponent_form_18_div_15_Template, 3, 6, "div", 24);
93
92
  i0.ɵɵelementStart(16, "div", 25)(17, "div", 26)(18, "ion-button", 27);
94
- i0.ɵɵlistener("click", function UserLoginComponent_form_15_Template_ion_button_click_18_listener() { i0.ɵɵrestoreView(_r19); const ctx_r18 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r18.signIn()); });
93
+ i0.ɵɵlistener("click", function UserLoginComponent_form_18_Template_ion_button_click_18_listener() { i0.ɵɵrestoreView(_r19); const ctx_r18 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r18.signIn()); });
95
94
  i0.ɵɵelement(19, "ion-icon", 28);
96
95
  i0.ɵɵtext(20);
97
96
  i0.ɵɵpipe(21, "translate");
98
97
  i0.ɵɵelementEnd()();
99
98
  i0.ɵɵelementStart(22, "ion-row", 29)(23, "ion-col", 30)(24, "a", 31);
100
- i0.ɵɵlistener("click", function UserLoginComponent_form_15_Template_a_click_24_listener() { i0.ɵɵrestoreView(_r19); const ctx_r20 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r20.showDialog()); })("keydown.enter", function UserLoginComponent_form_15_Template_a_keydown_enter_24_listener() { i0.ɵɵrestoreView(_r19); const ctx_r21 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r21.showDialog()); });
99
+ i0.ɵɵlistener("click", function UserLoginComponent_form_18_Template_a_click_24_listener() { i0.ɵɵrestoreView(_r19); const ctx_r20 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r20.showDialog()); })("keydown.enter", function UserLoginComponent_form_18_Template_a_keydown_enter_24_listener() { i0.ɵɵrestoreView(_r19); const ctx_r21 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r21.showDialog()); });
101
100
  i0.ɵɵtext(25);
102
101
  i0.ɵɵpipe(26, "translate");
103
102
  i0.ɵɵelementEnd()();
104
103
  i0.ɵɵelementStart(27, "ion-col", 26)(28, "a", 32);
105
- i0.ɵɵlistener("click", function UserLoginComponent_form_15_Template_a_click_28_listener() { i0.ɵɵrestoreView(_r19); const ctx_r22 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r22.showForgotPassword = !ctx_r22.showForgotPassword); })("keydown.enter", function UserLoginComponent_form_15_Template_a_keydown_enter_28_listener() { i0.ɵɵrestoreView(_r19); const ctx_r23 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r23.showForgotPassword = !ctx_r23.showForgotPassword); });
104
+ i0.ɵɵlistener("click", function UserLoginComponent_form_18_Template_a_click_28_listener() { i0.ɵɵrestoreView(_r19); const ctx_r22 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r22.showForgotPassword = !ctx_r22.showForgotPassword); })("keydown.enter", function UserLoginComponent_form_18_Template_a_keydown_enter_28_listener() { i0.ɵɵrestoreView(_r19); const ctx_r23 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r23.showForgotPassword = !ctx_r23.showForgotPassword); });
106
105
  i0.ɵɵtext(29);
107
106
  i0.ɵɵpipe(30, "translate");
108
107
  i0.ɵɵelementEnd()()()()();
@@ -113,29 +112,29 @@ function UserLoginComponent_form_15_Template(rf, ctx) { if (rf & 1) {
113
112
  i0.ɵɵadvance(4);
114
113
  i0.ɵɵstyleProp("font-size", ctx_r4.fontSize)("color", ctx_r4.color);
115
114
  i0.ɵɵadvance(1);
116
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(6, 25, "User ID"));
115
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(6, 25, "login.user.id"));
117
116
  i0.ɵɵadvance(2);
118
117
  i0.ɵɵproperty("formControl", ctx_r4.username);
119
118
  i0.ɵɵadvance(1);
120
- i0.ɵɵproperty("field", ctx_r4.username)("form", _r16)("errDef", i0.ɵɵpureFunction0(35, _c3));
119
+ i0.ɵɵproperty("field", ctx_r4.username)("form", _r16)("errDef", i0.ɵɵpureFunction2(35, _c3, ctx_r4.userIdRequired, ctx_r4.userIdMinimumLength));
121
120
  i0.ɵɵadvance(2);
122
121
  i0.ɵɵstyleProp("font-size", ctx_r4.fontSize)("color", ctx_r4.color);
123
122
  i0.ɵɵadvance(1);
124
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(12, 27, "Password (Case Sensitive)"));
123
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(12, 27, "login.password.case.sensitive"));
125
124
  i0.ɵɵadvance(2);
126
125
  i0.ɵɵproperty("formControl", ctx_r4.password)("toggleMask", true)("feedback", false);
127
126
  i0.ɵɵadvance(1);
128
- i0.ɵɵproperty("field", ctx_r4.password)("form", _r16)("errDef", i0.ɵɵpureFunction0(36, _c4));
127
+ i0.ɵɵproperty("field", ctx_r4.password)("form", _r16)("errDef", i0.ɵɵpureFunction1(38, _c2, ctx_r4.passwordRequired));
129
128
  i0.ɵɵadvance(1);
130
129
  i0.ɵɵproperty("ngIf", false);
131
130
  i0.ɵɵadvance(5);
132
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(21, 29, "Login"), " ");
131
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(21, 29, "login.login"), " ");
133
132
  i0.ɵɵadvance(5);
134
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(26, 31, "Forgot user ID?"));
133
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(26, 31, "login.user.id.forgot"));
135
134
  i0.ɵɵadvance(4);
136
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(30, 33, "Forgot Password?"));
135
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(30, 33, "login.password.forgot"));
137
136
  } }
138
- function UserLoginComponent_form_16_Template(rf, ctx) { if (rf & 1) {
137
+ function UserLoginComponent_form_19_Template(rf, ctx) { if (rf & 1) {
139
138
  const _r26 = i0.ɵɵgetCurrentView();
140
139
  i0.ɵɵelementStart(0, "form", 15, 35)(2, "div", 17)(3, "div", 18)(4, "label", 19);
141
140
  i0.ɵɵtext(5);
@@ -147,13 +146,13 @@ function UserLoginComponent_form_16_Template(rf, ctx) { if (rf & 1) {
147
146
  i0.ɵɵelement(10, "app-captcha", 34)(11, "app-error", 21);
148
147
  i0.ɵɵelementEnd()();
149
148
  i0.ɵɵelementStart(12, "div", 25)(13, "div", 26)(14, "ion-button", 27);
150
- i0.ɵɵlistener("click", function UserLoginComponent_form_16_Template_ion_button_click_14_listener() { i0.ɵɵrestoreView(_r26); const ctx_r25 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r25.showForgotPassword = !ctx_r25.showForgotPassword); });
149
+ i0.ɵɵlistener("click", function UserLoginComponent_form_19_Template_ion_button_click_14_listener() { i0.ɵɵrestoreView(_r26); const ctx_r25 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r25.showForgotPassword = !ctx_r25.showForgotPassword); });
151
150
  i0.ɵɵelement(15, "ion-icon", 36);
152
151
  i0.ɵɵtext(16);
153
152
  i0.ɵɵpipe(17, "translate");
154
153
  i0.ɵɵelementEnd();
155
154
  i0.ɵɵelementStart(18, "ion-button", 37);
156
- i0.ɵɵlistener("click", function UserLoginComponent_form_16_Template_ion_button_click_18_listener() { i0.ɵɵrestoreView(_r26); const ctx_r27 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r27.initiateForgotPassword()); });
155
+ i0.ɵɵlistener("click", function UserLoginComponent_form_19_Template_ion_button_click_18_listener() { i0.ɵɵrestoreView(_r26); const ctx_r27 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r27.initiateForgotPassword()); });
157
156
  i0.ɵɵelement(19, "ion-icon", 38);
158
157
  i0.ɵɵtext(20);
159
158
  i0.ɵɵpipe(21, "translate");
@@ -165,31 +164,31 @@ function UserLoginComponent_form_16_Template(rf, ctx) { if (rf & 1) {
165
164
  i0.ɵɵadvance(4);
166
165
  i0.ɵɵstyleProp("font-size", ctx_r5.fontSize)("color", ctx_r5.color);
167
166
  i0.ɵɵadvance(1);
168
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(6, 17, "User ID"));
167
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(6, 17, "login.user.id"));
169
168
  i0.ɵɵadvance(2);
170
169
  i0.ɵɵproperty("formControl", ctx_r5.resetUsername);
171
170
  i0.ɵɵadvance(1);
172
- i0.ɵɵproperty("field", ctx_r5.resetUsername)("form", _r24)("errDef", i0.ɵɵpureFunction0(23, _c3));
171
+ i0.ɵɵproperty("field", ctx_r5.resetUsername)("form", _r24)("errDef", i0.ɵɵpureFunction2(23, _c3, ctx_r5.userIdRequired, ctx_r5.userIdMinimumLength));
173
172
  i0.ɵɵadvance(2);
174
173
  i0.ɵɵproperty("formControl", ctx_r5.resetCaptcha);
175
174
  i0.ɵɵadvance(1);
176
- i0.ɵɵproperty("field", ctx_r5.resetCaptcha)("form", _r24)("errDef", i0.ɵɵpureFunction0(24, _c2));
175
+ i0.ɵɵproperty("field", ctx_r5.resetCaptcha)("form", _r24)("errDef", i0.ɵɵpureFunction1(26, _c2, ctx_r5.captchaRequired));
177
176
  i0.ɵɵadvance(5);
178
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(17, 19, "Login"), " ");
177
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(17, 19, "login.login"), " ");
179
178
  i0.ɵɵadvance(2);
180
179
  i0.ɵɵpropertyInterpolate("disabled", ctx_r5.resetForm.invalid);
181
180
  i0.ɵɵadvance(2);
182
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(21, 21, "Send email"), " ");
181
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(21, 21, "login.send.email"), " ");
183
182
  } }
184
- function UserLoginComponent_ng_template_21_Template(rf, ctx) { if (rf & 1) {
183
+ function UserLoginComponent_ng_template_24_Template(rf, ctx) { if (rf & 1) {
185
184
  const _r29 = i0.ɵɵgetCurrentView();
186
185
  i0.ɵɵelementStart(0, "ion-button", 39);
187
- i0.ɵɵlistener("click", function UserLoginComponent_ng_template_21_Template_ion_button_click_0_listener() { i0.ɵɵrestoreView(_r29); const ctx_r28 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r28.close()); });
186
+ i0.ɵɵlistener("click", function UserLoginComponent_ng_template_24_Template_ion_button_click_0_listener() { i0.ɵɵrestoreView(_r29); const ctx_r28 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r28.close()); });
188
187
  i0.ɵɵtext(1);
189
188
  i0.ɵɵpipe(2, "translate");
190
189
  i0.ɵɵelementEnd();
191
190
  i0.ɵɵelementStart(3, "ion-button", 40);
192
- i0.ɵɵlistener("click", function UserLoginComponent_ng_template_21_Template_ion_button_click_3_listener() { i0.ɵɵrestoreView(_r29); const ctx_r30 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r30.triggerUSPSForExpiredProcess()); });
191
+ i0.ɵɵlistener("click", function UserLoginComponent_ng_template_24_Template_ion_button_click_3_listener() { i0.ɵɵrestoreView(_r29); const ctx_r30 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r30.triggerUSPSForExpiredProcess()); });
193
192
  i0.ɵɵtext(4);
194
193
  i0.ɵɵpipe(5, "translate");
195
194
  i0.ɵɵelementEnd();
@@ -199,19 +198,19 @@ function UserLoginComponent_ng_template_21_Template(rf, ctx) { if (rf & 1) {
199
198
  i0.ɵɵadvance(3);
200
199
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 4, "usps.expd.popup.process"), " ");
201
200
  } }
202
- function UserLoginComponent_app_email_update_22_Template(rf, ctx) { if (rf & 1) {
201
+ function UserLoginComponent_app_email_update_25_Template(rf, ctx) { if (rf & 1) {
203
202
  const _r32 = i0.ɵɵgetCurrentView();
204
203
  i0.ɵɵelementStart(0, "app-email-update", 41);
205
- i0.ɵɵlistener("onClose", function UserLoginComponent_app_email_update_22_Template_app_email_update_onClose_0_listener() { i0.ɵɵrestoreView(_r32); const ctx_r31 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r31.logout()); })("onSuccess", function UserLoginComponent_app_email_update_22_Template_app_email_update_onSuccess_0_listener() { i0.ɵɵrestoreView(_r32); const ctx_r33 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r33.emailVerificationSuccess()); });
204
+ i0.ɵɵlistener("onClose", function UserLoginComponent_app_email_update_25_Template_app_email_update_onClose_0_listener() { i0.ɵɵrestoreView(_r32); const ctx_r31 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r31.logout()); })("onSuccess", function UserLoginComponent_app_email_update_25_Template_app_email_update_onSuccess_0_listener() { i0.ɵɵrestoreView(_r32); const ctx_r33 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r33.emailVerificationSuccess()); });
206
205
  i0.ɵɵelementEnd();
207
206
  } if (rf & 2) {
208
207
  const ctx_r7 = i0.ɵɵnextContext();
209
208
  i0.ɵɵproperty("email", ctx_r7.userModel.emailId);
210
209
  } }
211
- const _c5 = () => ({ width: "45vw" });
212
- const _c6 = () => ({ "1200px": "660px", "992px": "660px", "768px": "660px", "576px": "100vw" });
210
+ const _c4 = () => ({ width: "45vw" });
211
+ const _c5 = () => ({ "1200px": "660px", "992px": "660px", "768px": "660px", "576px": "100vw" });
213
212
  export class UserLoginComponent {
214
- constructor(util, nav, fb, loginService, platform, wcService, ovpService, cdr, router, cs, ln) {
213
+ constructor(util, nav, fb, loginService, platform, wcService, ovpService, cdr, router, cs, ln, translateService) {
215
214
  this.util = util;
216
215
  this.nav = nav;
217
216
  this.fb = fb;
@@ -223,6 +222,7 @@ export class UserLoginComponent {
223
222
  this.router = router;
224
223
  this.cs = cs;
225
224
  this.ln = ln;
225
+ this.translateService = translateService;
226
226
  this.show2FADialog = false;
227
227
  this.showForgotPassword = false;
228
228
  this.showUsernameError = false;
@@ -232,16 +232,24 @@ export class UserLoginComponent {
232
232
  this.showProgressBar = false;
233
233
  this.showEmailVerificationDialog = false;
234
234
  this.isLexisNexisPopupEnabled = false;
235
- this.mfaLoginHeader = "Validation code has been sent to the phone number entered";
235
+ this.mfaLoginHeader = "";
236
236
  this.isUSPSExpired = false;
237
237
  this.isPhoneMfaRequiredForAccountActivation = true;
238
238
  this.success = new EventEmitter();
239
239
  this.error = new EventEmitter();
240
+ this.translateService.use(localStorage.getItem("language"));
240
241
  }
242
+ ;
241
243
  ngOnInit() {
242
244
  this.isOtpModalEnabled = false;
243
245
  this.isLexisNexisEnabled = false;
244
246
  this.isReturningUser = true;
247
+ if (localStorage.getItem("language") === "es") {
248
+ this.mfaLoginHeader = "El código de validación ha sido enviado al número de teléfono ingresado";
249
+ }
250
+ else {
251
+ this.mfaLoginHeader = "Validation code has been sent to the phone number entered";
252
+ }
245
253
  this.initilizeLoginForm();
246
254
  }
247
255
  reset() {
@@ -470,7 +478,12 @@ export class UserLoginComponent {
470
478
  this.loginService
471
479
  .initiateForgotPasswordV2(this.resetUsername.value)
472
480
  .subscribe((res) => {
473
- this.util.success('Your password has been reset. You should receive an email with a temporary password and login instructions.');
481
+ if (localStorage.getItem("language") === "es") {
482
+ this.util.success('Se ha restablecido su contraseña. Recibirá un correo electrónico con una contraseña temporal e instrucciones para iniciar sesión.');
483
+ }
484
+ else {
485
+ this.util.success('Your password has been reset. You should receive an email with a temporary password and login instructions.');
486
+ }
474
487
  this.loginForm.reset();
475
488
  this.loginService.reset();
476
489
  this.resetFormDirective.reset();
@@ -499,7 +512,19 @@ export class UserLoginComponent {
499
512
  this.util.hideLoader();
500
513
  this.isUSPSExpired = false;
501
514
  }
502
- static { this.ɵfac = function UserLoginComponent_Factory(t) { return new (t || UserLoginComponent)(i0.ɵɵdirectiveInject(i1.UtilService), i0.ɵɵdirectiveInject(i2.NavController), i0.ɵɵdirectiveInject(i3.UntypedFormBuilder), i0.ɵɵdirectiveInject(i4.LoginService), i0.ɵɵdirectiveInject(i2.Platform), i0.ɵɵdirectiveInject(i5.WeeklyCertServiceV2), i0.ɵɵdirectiveInject(i6.OvpService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i7.Router), i0.ɵɵdirectiveInject(i8.ClaimantService), i0.ɵɵdirectiveInject(i9.LexisNexisService)); }; }
515
+ get userIdRequired() {
516
+ return this.translateService.instant('common.user.id.required');
517
+ }
518
+ get userIdMinimumLength() {
519
+ return this.translateService.instant('common.user.id.minlength');
520
+ }
521
+ get passwordRequired() {
522
+ return this.translateService.instant('common.password.required');
523
+ }
524
+ get captchaRequired() {
525
+ return this.translateService.instant('common.captcha.required');
526
+ }
527
+ static { this.ɵfac = function UserLoginComponent_Factory(t) { return new (t || UserLoginComponent)(i0.ɵɵdirectiveInject(i1.UtilService), i0.ɵɵdirectiveInject(i2.NavController), i0.ɵɵdirectiveInject(i3.UntypedFormBuilder), i0.ɵɵdirectiveInject(i4.LoginService), i0.ɵɵdirectiveInject(i2.Platform), i0.ɵɵdirectiveInject(i5.WeeklyCertServiceV2), i0.ɵɵdirectiveInject(i6.OvpService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i7.Router), i0.ɵɵdirectiveInject(i8.ClaimantService), i0.ɵɵdirectiveInject(i9.LexisNexisService), i0.ɵɵdirectiveInject(i10.TranslateService)); }; }
503
528
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserLoginComponent, selectors: [["app-user-login"]], viewQuery: function UserLoginComponent_Query(rf, ctx) { if (rf & 1) {
504
529
  i0.ɵɵviewQuery(_c0, 5);
505
530
  i0.ɵɵviewQuery(_c1, 5);
@@ -507,39 +532,48 @@ export class UserLoginComponent {
507
532
  let _t;
508
533
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.loginFormDirective = _t.first);
509
534
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.resetFormDirective = _t.first);
510
- } }, inputs: { fontSize: "fontSize", color: "color", isPhoneMfaRequiredForAccountActivation: "isPhoneMfaRequiredForAccountActivation" }, outputs: { success: "success", error: "error" }, decls: 23, vars: 26, consts: [["appendTo", "body", 3, "visible", "modal", "visibleChange"], [1, "heading"], [4, "ngIf"], [1, "ion-text-center"], ["shape", "round", "type", "submit", "color", "success", 3, "click"], ["slot", "start", "name", "close-sharp"], [3, "display", "returningUser", "verificationPreference", "ssn", "displayChange", "success", "clear", 4, "ngIf"], [3, "display", "userModel", "success", "error", "usps", 4, "ngIf"], [3, "display", "user", "returningUser", "heading", "displayChange", "success", "clear"], [3, "formGroup", 4, "ngIf"], ["appendTo", "body", "position", "top", "closeOnEscape", "false", 3, "visible", "modal", "breakpoints", "baseZIndex", "draggable", "resizable"], ["pTemplate", "footer"], [3, "email", "onClose", "onSuccess", 4, "ngIf"], [3, "display", "returningUser", "verificationPreference", "ssn", "displayChange", "success", "clear"], [3, "display", "userModel", "success", "error", "usps"], [3, "formGroup"], ["loginFormDirective", "ngForm"], [1, "p-fluid", "p-formgrid", "p-grid"], [1, "field", "ion-text-left", 2, "width", "-webkit-fill-available"], ["for", "userProfileId"], ["id", "userProfileId", "type", "text", "pInputText", "", "maxlength", "30", "minlength", "5", 3, "formControl"], [3, "field", "form", "errDef"], ["for", "userProfilePassword"], ["inputId", "userProfilePassword", 3, "formControl", "toggleMask", "feedback"], ["class", "ion-padding-start ion-padding-end ion-text-left", "style", "margin-top: -8px;", 4, "ngIf"], [1, "p-fluid"], [1, "ion-text-right"], ["color", "primary", "type", "submit", "shape", "round", "fill", "outline", 1, "white-background", 3, "click"], ["name", "power-outline", "slot", "start"], [1, "ion-padding-top"], [1, "ion-text-left"], ["tabindex", "0", "role", "button", 1, "link", 2, "font-size", "14px", 3, "click", "keydown.enter"], ["tabindex", "0", "role", "button", "type", "submit", 1, "link", 2, "font-size", "14px", 3, "click", "keydown.enter"], [1, "ion-padding-start", "ion-padding-end", "ion-text-left", 2, "margin-top", "-8px"], [3, "formControl"], ["resetFormDirective", "ngForm"], ["name", "arrow-back-outline", "slot", "start"], ["color", "primary", "type", "submit", "shape", "round", "fill", "outline", 1, "white-background", 3, "disabled", "click"], ["name", "mail-outline", "slot", "start"], ["shape", "round", "type", "submit", "fill", "outline", 3, "click"], ["shape", "round", "type", "submit", "fill", "solid", 3, "click"], [3, "email", "onClose", "onSuccess"]], template: function UserLoginComponent_Template(rf, ctx) { if (rf & 1) {
535
+ } }, inputs: { fontSize: "fontSize", color: "color", isPhoneMfaRequiredForAccountActivation: "isPhoneMfaRequiredForAccountActivation" }, outputs: { success: "success", error: "error" }, decls: 26, vars: 35, consts: [["appendTo", "body", 3, "visible", "modal", "visibleChange"], [1, "heading"], [4, "ngIf"], [1, "ion-text-center"], ["shape", "round", "type", "submit", "color", "success", 3, "click"], ["slot", "start", "name", "close-sharp"], [3, "display", "returningUser", "verificationPreference", "ssn", "displayChange", "success", "clear", 4, "ngIf"], [3, "display", "userModel", "success", "error", "usps", 4, "ngIf"], [3, "display", "user", "returningUser", "heading", "displayChange", "success", "clear"], [3, "formGroup", 4, "ngIf"], ["appendTo", "body", "position", "top", "closeOnEscape", "false", 3, "visible", "modal", "breakpoints", "baseZIndex", "draggable", "resizable"], ["pTemplate", "footer"], [3, "email", "onClose", "onSuccess", 4, "ngIf"], [3, "display", "returningUser", "verificationPreference", "ssn", "displayChange", "success", "clear"], [3, "display", "userModel", "success", "error", "usps"], [3, "formGroup"], ["loginFormDirective", "ngForm"], [1, "p-fluid", "p-formgrid", "p-grid"], [1, "field", "ion-text-left", 2, "width", "-webkit-fill-available"], ["for", "userProfileId"], ["id", "userProfileId", "type", "text", "pInputText", "", "maxlength", "30", "minlength", "5", 3, "formControl"], [3, "field", "form", "errDef"], ["for", "userProfilePassword"], ["inputId", "userProfilePassword", 3, "formControl", "toggleMask", "feedback"], ["class", "ion-padding-start ion-padding-end ion-text-left", "style", "margin-top: -8px;", 4, "ngIf"], [1, "p-fluid"], [1, "ion-text-right"], ["color", "primary", "type", "submit", "shape", "round", "fill", "outline", 1, "white-background", 3, "click"], ["name", "power-outline", "slot", "start"], [1, "ion-padding-top"], [1, "ion-text-left"], ["tabindex", "0", "role", "button", 1, "link", 2, "font-size", "14px", 3, "click", "keydown.enter"], ["tabindex", "0", "role", "button", "type", "submit", 1, "link", 2, "font-size", "14px", 3, "click", "keydown.enter"], [1, "ion-padding-start", "ion-padding-end", "ion-text-left", 2, "margin-top", "-8px"], [3, "formControl"], ["resetFormDirective", "ngForm"], ["name", "arrow-back-outline", "slot", "start"], ["color", "primary", "type", "submit", "shape", "round", "fill", "outline", 1, "white-background", 3, "disabled", "click"], ["name", "mail-outline", "slot", "start"], ["shape", "round", "type", "submit", "fill", "outline", 3, "click"], ["shape", "round", "type", "submit", "fill", "solid", 3, "click"], [3, "email", "onClose", "onSuccess"]], template: function UserLoginComponent_Template(rf, ctx) { if (rf & 1) {
511
536
  i0.ɵɵelementStart(0, "p-dialog", 0);
512
537
  i0.ɵɵlistener("visibleChange", function UserLoginComponent_Template_p_dialog_visibleChange_0_listener($event) { return ctx.displayDialog = $event; });
513
538
  i0.ɵɵelementStart(1, "h4", 1);
514
- i0.ɵɵtext(2, "Message");
539
+ i0.ɵɵtext(2);
540
+ i0.ɵɵpipe(3, "translate");
515
541
  i0.ɵɵelementEnd();
516
- i0.ɵɵtext(3, " If you forgot your User ID, a Customer Service Representative is available to assist you during normal business hours. ");
517
- i0.ɵɵtemplate(4, UserLoginComponent_div_4_Template, 6, 0, "div", 2)(5, UserLoginComponent_div_5_Template, 6, 0, "div", 2);
518
- i0.ɵɵelement(6, "br");
519
- i0.ɵɵelementStart(7, "p-footer")(8, "div", 3)(9, "ion-button", 4);
520
- i0.ɵɵlistener("click", function UserLoginComponent_Template_ion_button_click_9_listener() { return ctx.displayDialog = !ctx.displayDialog; });
521
- i0.ɵɵelement(10, "ion-icon", 5);
522
- i0.ɵɵtext(11, " Close ");
542
+ i0.ɵɵtext(4);
543
+ i0.ɵɵpipe(5, "translate");
544
+ i0.ɵɵtemplate(6, UserLoginComponent_div_6_Template, 6, 0, "div", 2)(7, UserLoginComponent_div_7_Template, 6, 0, "div", 2);
545
+ i0.ɵɵelement(8, "br");
546
+ i0.ɵɵelementStart(9, "p-footer")(10, "div", 3)(11, "ion-button", 4);
547
+ i0.ɵɵlistener("click", function UserLoginComponent_Template_ion_button_click_11_listener() { return ctx.displayDialog = !ctx.displayDialog; });
548
+ i0.ɵɵelement(12, "ion-icon", 5);
549
+ i0.ɵɵtext(13);
550
+ i0.ɵɵpipe(14, "translate");
523
551
  i0.ɵɵelementEnd()()()();
524
- i0.ɵɵtemplate(12, UserLoginComponent_app_mfa2_12_Template, 1, 4, "app-mfa2", 6)(13, UserLoginComponent_app_lexis_nexis_13_Template, 1, 2, "app-lexis-nexis", 7);
525
- i0.ɵɵelementStart(14, "app-mfa-popup", 8);
526
- i0.ɵɵlistener("displayChange", function UserLoginComponent_Template_app_mfa_popup_displayChange_14_listener($event) { return ctx.show2FADialog = $event; })("success", function UserLoginComponent_Template_app_mfa_popup_success_14_listener() { return ctx.loginSuccess(); })("clear", function UserLoginComponent_Template_app_mfa_popup_clear_14_listener($event) { return ctx.enableLexisNexis($event); });
552
+ i0.ɵɵtemplate(15, UserLoginComponent_app_mfa2_15_Template, 1, 4, "app-mfa2", 6)(16, UserLoginComponent_app_lexis_nexis_16_Template, 1, 2, "app-lexis-nexis", 7);
553
+ i0.ɵɵelementStart(17, "app-mfa-popup", 8);
554
+ i0.ɵɵlistener("displayChange", function UserLoginComponent_Template_app_mfa_popup_displayChange_17_listener($event) { return ctx.show2FADialog = $event; })("success", function UserLoginComponent_Template_app_mfa_popup_success_17_listener() { return ctx.loginSuccess(); })("clear", function UserLoginComponent_Template_app_mfa_popup_clear_17_listener($event) { return ctx.enableLexisNexis($event); });
527
555
  i0.ɵɵelementEnd();
528
- i0.ɵɵtemplate(15, UserLoginComponent_form_15_Template, 31, 37, "form", 9)(16, UserLoginComponent_form_16_Template, 22, 25, "form", 9);
529
- i0.ɵɵelementStart(17, "p-dialog", 10);
530
- i0.ɵɵtext(18);
531
- i0.ɵɵpipe(19, "translate");
532
- i0.ɵɵelement(20, "br");
533
- i0.ɵɵtemplate(21, UserLoginComponent_ng_template_21_Template, 6, 6, "ng-template", 11);
556
+ i0.ɵɵtemplate(18, UserLoginComponent_form_18_Template, 31, 40, "form", 9)(19, UserLoginComponent_form_19_Template, 22, 28, "form", 9);
557
+ i0.ɵɵelementStart(20, "p-dialog", 10);
558
+ i0.ɵɵtext(21);
559
+ i0.ɵɵpipe(22, "translate");
560
+ i0.ɵɵelement(23, "br");
561
+ i0.ɵɵtemplate(24, UserLoginComponent_ng_template_24_Template, 6, 6, "ng-template", 11);
534
562
  i0.ɵɵelementEnd();
535
- i0.ɵɵtemplate(22, UserLoginComponent_app_email_update_22_Template, 1, 1, "app-email-update", 12);
563
+ i0.ɵɵtemplate(25, UserLoginComponent_app_email_update_25_Template, 1, 1, "app-email-update", 12);
536
564
  } if (rf & 2) {
537
565
  i0.ɵɵproperty("visible", ctx.displayDialog)("modal", true);
538
- i0.ɵɵadvance(4);
566
+ i0.ɵɵadvance(2);
567
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 25, "common.message"));
568
+ i0.ɵɵadvance(2);
569
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 27, "login.forgot.id.assist"), " ");
570
+ i0.ɵɵadvance(2);
539
571
  i0.ɵɵproperty("ngIf", ctx.util.isState("MS"));
540
572
  i0.ɵɵadvance(1);
541
573
  i0.ɵɵproperty("ngIf", ctx.util.isState("ME"));
542
- i0.ɵɵadvance(7);
574
+ i0.ɵɵadvance(6);
575
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(14, 29, "common.close"), " ");
576
+ i0.ɵɵadvance(2);
543
577
  i0.ɵɵproperty("ngIf", ctx.isOtpModalEnabled);
544
578
  i0.ɵɵadvance(1);
545
579
  i0.ɵɵproperty("ngIf", ctx.isLexisNexisPopupEnabled);
@@ -550,18 +584,18 @@ export class UserLoginComponent {
550
584
  i0.ɵɵadvance(1);
551
585
  i0.ɵɵproperty("ngIf", ctx.showForgotPassword);
552
586
  i0.ɵɵadvance(1);
553
- i0.ɵɵstyleMap(i0.ɵɵpureFunction0(24, _c5));
554
- i0.ɵɵproperty("visible", ctx.isUSPSExpired)("modal", true)("breakpoints", i0.ɵɵpureFunction0(25, _c6))("baseZIndex", 5000)("draggable", false)("resizable", false);
587
+ i0.ɵɵstyleMap(i0.ɵɵpureFunction0(33, _c4));
588
+ i0.ɵɵproperty("visible", ctx.isUSPSExpired)("modal", true)("breakpoints", i0.ɵɵpureFunction0(34, _c5))("baseZIndex", 5000)("draggable", false)("resizable", false);
555
589
  i0.ɵɵadvance(1);
556
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(19, 22, "usps.expd.popup.heading"), "");
590
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(22, 31, "usps.expd.popup.heading"), "");
557
591
  i0.ɵɵadvance(4);
558
592
  i0.ɵɵproperty("ngIf", ctx.showEmailVerificationDialog);
559
- } }, dependencies: [i2.IonButton, i2.IonCol, i2.IonIcon, i2.IonRow, i10.NgIf, i11.Footer, i11.PrimeTemplate, i3.ɵNgNoValidate, i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgControlStatusGroup, i3.MinLengthValidator, i3.MaxLengthValidator, i3.FormControlDirective, i3.FormGroupDirective, i12.Dialog, i13.Password, i14.InputText, i15.ErrorComponent, i16.CaptchaComponent, i17.EmailUpdateComponent, i18.MfaPopupComponent, i19.Mfa2Component, i20.LexisNexisComponent, i21.TranslatePipe] }); }
593
+ } }, dependencies: [i2.IonButton, i2.IonCol, i2.IonIcon, i2.IonRow, i11.NgIf, i12.Footer, i12.PrimeTemplate, i3.ɵNgNoValidate, i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgControlStatusGroup, i3.MinLengthValidator, i3.MaxLengthValidator, i3.FormControlDirective, i3.FormGroupDirective, i13.Dialog, i14.Password, i15.InputText, i16.ErrorComponent, i17.CaptchaComponent, i18.EmailUpdateComponent, i19.MfaPopupComponent, i20.Mfa2Component, i21.LexisNexisComponent, i10.TranslatePipe] }); }
560
594
  }
561
595
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UserLoginComponent, [{
562
596
  type: Component,
563
- args: [{ selector: 'app-user-login', template: "<p-dialog [(visible)]=\"displayDialog\" [modal]=\"true\" appendTo=\"body\">\r\n <h4 class=\"heading\">Message</h4>\r\n\r\n If you forgot your User ID, a Customer Service Representative is available to assist you during normal business hours.\r\n <div *ngIf=\"util.isState('MS')\">\r\n <ul>\r\n <li>Employers may call 601-493-9427</li>\r\n <li>Claimants may call 601-493-9427.</li>\r\n </ul>\r\n </div>\r\n <div *ngIf=\"util.isState('ME')\">\r\n <ul>\r\n <li>Employers may call 207-621-5120</li>\r\n <li>Claimants may call 1-800-593-7660</li>\r\n </ul>\r\n </div>\r\n <!-- todo: get KS number-->\r\n <br />\r\n <p-footer>\r\n <div class=\"ion-text-center\">\r\n <ion-button shape=\"round\" type=\"submit\" (click)=\"displayDialog = !displayDialog\" color=\"success\">\r\n <ion-icon slot=\"start\" name=\"close-sharp\"></ion-icon>\r\n Close\r\n </ion-button>\r\n </div>\r\n </p-footer>\r\n</p-dialog>\r\n<app-mfa2 *ngIf=\"isOtpModalEnabled\" [(display)]=\"isOtpModalEnabled\" [returningUser]=\"isReturningUser\" [verificationPreference]=\"verificationPreference\" [ssn]=\"ssn\" (success)=\"loginSuccess()\" (clear)=\"enableLexisNexis()\"></app-mfa2>\r\n<app-lexis-nexis *ngIf=\"isLexisNexisPopupEnabled\" [display]=\"isLexisNexisPopupEnabled\" [userModel] = \"userModel\" (success)=\"onLnSuccess()\" (error)=\"onLNError()\" (usps)=\"triggerUSPS()\"></app-lexis-nexis>\r\n<app-mfa-popup [(display)]=\"show2FADialog\" [user]=\"userModel\" [returningUser]=\"isReturningUser\" [heading]=\"mfaLoginHeader\" (success)=\"loginSuccess()\" (clear)=\"enableLexisNexis($event)\"></app-mfa-popup>\r\n\r\n\r\n<form [formGroup]=\"loginForm\" #loginFormDirective=\"ngForm\" *ngIf=\"!showForgotPassword\">\r\n <div class=\"p-fluid p-formgrid p-grid\">\r\n <div class=\"field ion-text-left\" style=\"width: -webkit-fill-available;\">\r\n <label for=\"userProfileId\" [style.font-size]=\"fontSize\" [style.color]=\"color\">{{'User ID' | translate}}</label>\r\n <input id=\"userProfileId\" type=\"text\" pInputText maxlength=\"30\" minlength=\"5\" [formControl]=\"username\">\r\n <app-error [field]='username' [form]=\"loginFormDirective\" [errDef]=\"{ \r\n required: 'User ID is required.',\r\n minlength: 'User ID should have minimum 5 characters.'\r\n }\"></app-error>\r\n </div>\r\n <div class=\"field ion-text-left\" style=\"width: -webkit-fill-available;\">\r\n <label for=\"userProfilePassword\" [style.font-size]=\"fontSize\" [style.color]=\"color\">{{'Password (Case Sensitive)' | translate}}</label>\r\n <p-password [formControl]=\"password\" inputId=\"userProfilePassword\" [toggleMask]='true' [feedback]='false'></p-password>\r\n <app-error [field]='password' [form]=\"loginFormDirective\" [errDef]=\"{ \r\n required: 'Password is required.'\r\n }\"></app-error>\r\n </div>\r\n </div>\r\n <div class=\"ion-padding-start ion-padding-end ion-text-left\" style=\"margin-top: -8px;\" *ngIf=\"false\">\r\n <app-captcha [formControl]=\"captcha\"></app-captcha>\r\n <app-error [field]='captcha' [form]=\"loginFormDirective\" [errDef]=\"{ \r\n required: 'Captcha is required.'\r\n }\"></app-error>\r\n </div>\r\n\r\n\r\n <div class=\"p-fluid\">\r\n <div class=\"ion-text-right\">\r\n <ion-button (click)=\"signIn()\" color=\"primary\" type=\"submit\" shape=\"round\" fill=\"outline\" class=\"white-background\">\r\n <ion-icon name=\"power-outline\" slot=\"start\"></ion-icon>\r\n {{'Login' | translate}}\r\n </ion-button>\r\n </div>\r\n <ion-row class=\"ion-padding-top\">\r\n <ion-col class=\"ion-text-left\">\r\n <a tabindex=\"0\" role=\"button\" class=\"link\" style=\"font-size: 14px;\" (click)=\"showDialog()\" (keydown.enter)=\"showDialog()\">{{'Forgot user ID?' | translate}}</a>\r\n </ion-col>\r\n <ion-col class=\"ion-text-right\">\r\n <a tabindex=\"0\" role=\"button\" class=\"link\" (click)=\"showForgotPassword = !showForgotPassword\" (keydown.enter)=\"showForgotPassword = !showForgotPassword\" style=\"font-size: 14px;\"\r\n type=\"submit\">{{'Forgot\r\n Password?' | translate}}</a>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n</form>\r\n\r\n<form *ngIf=\"showForgotPassword\" [formGroup]=\"resetForm\" #resetFormDirective=\"ngForm\">\r\n <div class=\"p-fluid p-formgrid p-grid\">\r\n <div class=\"field ion-text-left\" style=\"width: -webkit-fill-available;\">\r\n <label for=\"userProfileId\" [style.font-size]=\"fontSize\" [style.color]=\"color\">{{'User ID' | translate}}</label>\r\n <input id=\"userProfileId\" type=\"text\" pInputText maxlength=\"30\" minlength=\"5\" [formControl]=\"resetUsername\">\r\n <app-error [field]='resetUsername' [form]=\"resetFormDirective\" [errDef]=\"{ \r\n required: 'User ID is required.',\r\n minlength: 'User ID should have minimum 5 characters.'\r\n }\"></app-error>\r\n </div>\r\n <div class=\"ion-text-left\">\r\n <app-captcha [formControl]=\"resetCaptcha\"></app-captcha>\r\n <app-error [field]='resetCaptcha' [form]=\"resetFormDirective\" [errDef]=\"{ \r\n required: 'Captcha is required.'\r\n }\"></app-error>\r\n </div>\r\n </div>\r\n <div class=\"p-fluid\">\r\n <div class=\"ion-text-right\">\r\n <ion-button (click)=\"showForgotPassword = !showForgotPassword\" color=\"primary\" type=\"submit\" shape=\"round\" fill=\"outline\" class=\"white-background\">\r\n <ion-icon name=\"arrow-back-outline\" slot=\"start\"></ion-icon>\r\n {{'Login' | translate}}\r\n </ion-button>\r\n\r\n <ion-button (click)=\"initiateForgotPassword()\" color=\"primary\" type=\"submit\" shape=\"round\" fill=\"outline\"\r\n disabled=\"{{resetForm.invalid}}\" class=\"white-background\">\r\n <ion-icon name=\"mail-outline\" slot=\"start\"></ion-icon>\r\n {{'Send email' | translate}}\r\n </ion-button>\r\n </div>\r\n </div>\r\n\r\n \r\n</form>\r\n\r\n<p-dialog [visible]=\"isUSPSExpired\" [modal]=\"true\" appendTo=\"body\" position=\"top\" [breakpoints]=\"{'1200px': '660px', '992px': '660px', '768px': '660px', '576px': '100vw'}\" [style]=\"{width: '45vw'}\"\r\n[baseZIndex]=\"5000\" [draggable]=\"false\" [resizable]=\"false\" closeOnEscape=\"false\">\r\n {{'usps.expd.popup.heading' | translate}}<br/>\r\n \r\n <ng-template pTemplate=\"footer\">\r\n <ion-button shape=\"round\" type=\"submit\" fill=\"outline\" (click)=\"close()\">\r\n {{'usps.expd.popup.cancel' | translate}}\r\n </ion-button>\r\n <ion-button shape=\"round\" type=\"submit\" fill=\"solid\" (click)=\"triggerUSPSForExpiredProcess()\">\r\n {{'usps.expd.popup.process' | translate}}\r\n </ion-button>\r\n </ng-template>\r\n</p-dialog>\r\n\r\n<app-email-update [email]=\"userModel.emailId\" *ngIf=\"showEmailVerificationDialog\" (onClose)=\"logout()\" (onSuccess)=\"emailVerificationSuccess()\"></app-email-update>" }]
564
- }], () => [{ type: i1.UtilService }, { type: i2.NavController }, { type: i3.UntypedFormBuilder }, { type: i4.LoginService }, { type: i2.Platform }, { type: i5.WeeklyCertServiceV2 }, { type: i6.OvpService }, { type: i0.ChangeDetectorRef }, { type: i7.Router }, { type: i8.ClaimantService }, { type: i9.LexisNexisService }], { loginFormDirective: [{
597
+ args: [{ selector: 'app-user-login', template: "<p-dialog [(visible)]=\"displayDialog\" [modal]=\"true\" appendTo=\"body\">\r\n <h4 class=\"heading\">{{\"common.message\" | translate}}</h4>\r\n {{\"login.forgot.id.assist\" | translate}}\r\n <div *ngIf=\"util.isState('MS')\">\r\n <ul>\r\n <li>Employers may call 601-493-9427</li>\r\n <li>Claimants may call 601-493-9427.</li>\r\n </ul>\r\n </div>\r\n <div *ngIf=\"util.isState('ME')\">\r\n <ul>\r\n <li>Employers may call 207-621-5120</li>\r\n <li>Claimants may call 1-800-593-7660</li>\r\n </ul>\r\n </div>\r\n <!-- todo: get KS number-->\r\n <br />\r\n <p-footer>\r\n <div class=\"ion-text-center\">\r\n <ion-button shape=\"round\" type=\"submit\" (click)=\"displayDialog = !displayDialog\" color=\"success\">\r\n <ion-icon slot=\"start\" name=\"close-sharp\"></ion-icon>\r\n {{\"common.close\" | translate}}\r\n </ion-button>\r\n </div>\r\n </p-footer>\r\n</p-dialog>\r\n<app-mfa2 *ngIf=\"isOtpModalEnabled\" [(display)]=\"isOtpModalEnabled\" [returningUser]=\"isReturningUser\" [verificationPreference]=\"verificationPreference\" [ssn]=\"ssn\" (success)=\"loginSuccess()\" (clear)=\"enableLexisNexis()\"></app-mfa2>\r\n<app-lexis-nexis *ngIf=\"isLexisNexisPopupEnabled\" [display]=\"isLexisNexisPopupEnabled\" [userModel] = \"userModel\" (success)=\"onLnSuccess()\" (error)=\"onLNError()\" (usps)=\"triggerUSPS()\"></app-lexis-nexis>\r\n<app-mfa-popup [(display)]=\"show2FADialog\" [user]=\"userModel\" [returningUser]=\"isReturningUser\" [heading]=\"mfaLoginHeader\" (success)=\"loginSuccess()\" (clear)=\"enableLexisNexis($event)\"></app-mfa-popup>\r\n\r\n\r\n<form [formGroup]=\"loginForm\" #loginFormDirective=\"ngForm\" *ngIf=\"!showForgotPassword\">\r\n <div class=\"p-fluid p-formgrid p-grid\">\r\n <div class=\"field ion-text-left\" style=\"width: -webkit-fill-available;\">\r\n <label for=\"userProfileId\" [style.font-size]=\"fontSize\" [style.color]=\"color\">{{'login.user.id' | translate}}</label>\r\n <input id=\"userProfileId\" type=\"text\" pInputText maxlength=\"30\" minlength=\"5\" [formControl]=\"username\">\r\n <app-error [field]='username' [form]=\"loginFormDirective\" [errDef]=\"{ \r\n required: userIdRequired,\r\n minlength: userIdMinimumLength\r\n }\"></app-error>\r\n </div>\r\n <div class=\"field ion-text-left\" style=\"width: -webkit-fill-available;\">\r\n <label for=\"userProfilePassword\" [style.font-size]=\"fontSize\" [style.color]=\"color\">{{'login.password.case.sensitive' | translate}}</label>\r\n <p-password [formControl]=\"password\" inputId=\"userProfilePassword\" [toggleMask]='true' [feedback]='false'></p-password>\r\n <app-error [field]='password' [form]=\"loginFormDirective\" [errDef]=\"{ \r\n required: passwordRequired\r\n }\"></app-error>\r\n </div>\r\n </div>\r\n <div class=\"ion-padding-start ion-padding-end ion-text-left\" style=\"margin-top: -8px;\" *ngIf=\"false\">\r\n <app-captcha [formControl]=\"captcha\"></app-captcha>\r\n <app-error [field]='captcha' [form]=\"loginFormDirective\" [errDef]=\"{ \r\n required: captchaRequired\r\n }\"></app-error>\r\n </div>\r\n\r\n\r\n <div class=\"p-fluid\">\r\n <div class=\"ion-text-right\">\r\n <ion-button (click)=\"signIn()\" color=\"primary\" type=\"submit\" shape=\"round\" fill=\"outline\" class=\"white-background\">\r\n <ion-icon name=\"power-outline\" slot=\"start\"></ion-icon>\r\n {{'login.login' | translate}}\r\n </ion-button>\r\n </div>\r\n <ion-row class=\"ion-padding-top\">\r\n <ion-col class=\"ion-text-left\">\r\n <a tabindex=\"0\" role=\"button\" class=\"link\" style=\"font-size: 14px;\" (click)=\"showDialog()\" (keydown.enter)=\"showDialog()\">{{'login.user.id.forgot' | translate}}</a>\r\n </ion-col>\r\n <ion-col class=\"ion-text-right\">\r\n <a tabindex=\"0\" role=\"button\" class=\"link\" (click)=\"showForgotPassword = !showForgotPassword\" (keydown.enter)=\"showForgotPassword = !showForgotPassword\" style=\"font-size: 14px;\"\r\n type=\"submit\">{{'login.password.forgot' | translate}}</a>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n</form>\r\n\r\n<form *ngIf=\"showForgotPassword\" [formGroup]=\"resetForm\" #resetFormDirective=\"ngForm\">\r\n <div class=\"p-fluid p-formgrid p-grid\">\r\n <div class=\"field ion-text-left\" style=\"width: -webkit-fill-available;\">\r\n <label for=\"userProfileId\" [style.font-size]=\"fontSize\" [style.color]=\"color\">{{'login.user.id' | translate}}</label>\r\n <input id=\"userProfileId\" type=\"text\" pInputText maxlength=\"30\" minlength=\"5\" [formControl]=\"resetUsername\">\r\n <app-error [field]='resetUsername' [form]=\"resetFormDirective\" [errDef]=\"{ \r\n required: userIdRequired,\r\n minlength: userIdMinimumLength\r\n }\"></app-error>\r\n </div>\r\n <div class=\"ion-text-left\">\r\n <app-captcha [formControl]=\"resetCaptcha\"></app-captcha>\r\n <app-error [field]='resetCaptcha' [form]=\"resetFormDirective\" [errDef]=\"{ \r\n required: captchaRequired\r\n }\"></app-error>\r\n </div>\r\n </div>\r\n <div class=\"p-fluid\">\r\n <div class=\"ion-text-right\">\r\n <ion-button (click)=\"showForgotPassword = !showForgotPassword\" color=\"primary\" type=\"submit\" shape=\"round\" fill=\"outline\" class=\"white-background\">\r\n <ion-icon name=\"arrow-back-outline\" slot=\"start\"></ion-icon>\r\n {{'login.login' | translate}}\r\n </ion-button>\r\n\r\n <ion-button (click)=\"initiateForgotPassword()\" color=\"primary\" type=\"submit\" shape=\"round\" fill=\"outline\"\r\n disabled=\"{{resetForm.invalid}}\" class=\"white-background\">\r\n <ion-icon name=\"mail-outline\" slot=\"start\"></ion-icon>\r\n {{'login.send.email' | translate}}\r\n </ion-button>\r\n </div>\r\n </div>\r\n\r\n \r\n</form>\r\n\r\n<p-dialog [visible]=\"isUSPSExpired\" [modal]=\"true\" appendTo=\"body\" position=\"top\" [breakpoints]=\"{'1200px': '660px', '992px': '660px', '768px': '660px', '576px': '100vw'}\" [style]=\"{width: '45vw'}\"\r\n[baseZIndex]=\"5000\" [draggable]=\"false\" [resizable]=\"false\" closeOnEscape=\"false\">\r\n {{'usps.expd.popup.heading' | translate}}<br/>\r\n \r\n <ng-template pTemplate=\"footer\">\r\n <ion-button shape=\"round\" type=\"submit\" fill=\"outline\" (click)=\"close()\">\r\n {{'usps.expd.popup.cancel' | translate}}\r\n </ion-button>\r\n <ion-button shape=\"round\" type=\"submit\" fill=\"solid\" (click)=\"triggerUSPSForExpiredProcess()\">\r\n {{'usps.expd.popup.process' | translate}}\r\n </ion-button>\r\n </ng-template>\r\n</p-dialog>\r\n\r\n<app-email-update [email]=\"userModel.emailId\" *ngIf=\"showEmailVerificationDialog\" (onClose)=\"logout()\" (onSuccess)=\"emailVerificationSuccess()\"></app-email-update>" }]
598
+ }], () => [{ type: i1.UtilService }, { type: i2.NavController }, { type: i3.UntypedFormBuilder }, { type: i4.LoginService }, { type: i2.Platform }, { type: i5.WeeklyCertServiceV2 }, { type: i6.OvpService }, { type: i0.ChangeDetectorRef }, { type: i7.Router }, { type: i8.ClaimantService }, { type: i9.LexisNexisService }, { type: i10.TranslateService }], { loginFormDirective: [{
565
599
  type: ViewChild,
566
600
  args: ['loginFormDirective', { static: false }]
567
601
  }], resetFormDirective: [{
@@ -579,4 +613,4 @@ export class UserLoginComponent {
579
613
  type: Output
580
614
  }] }); })();
581
615
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UserLoginComponent, { className: "UserLoginComponent", filePath: "lib\\components\\user-login\\user-login.component.ts", lineNumber: 21 }); })();
582
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1sb2dpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvdXNlci1sb2dpbi91c2VyLWxvZ2luLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy91c2VyLWxvZ2luL3VzZXItbG9naW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBb0UsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ0NyRCwyQkFBZ0MsU0FBQSxTQUFBO0lBRXBCLCtDQUErQjtJQUFBLGlCQUFLO0lBQ3hDLDBCQUFJO0lBQUEsZ0RBQWdDO0lBQUEsaUJBQUssRUFBQSxFQUFBOzs7SUFHakQsMkJBQWdDLFNBQUEsU0FBQTtJQUVwQiwrQ0FBK0I7SUFBQSxpQkFBSztJQUN4QywwQkFBSTtJQUFBLGlEQUFpQztJQUFBLGlCQUFLLEVBQUEsRUFBQTs7OztJQWN0RCxvQ0FBNE47SUFBeEwsa1BBQStCLCtKQUE0RyxlQUFBLHNCQUFjLENBQUEsSUFBMUgsMkpBQXFJLGVBQUEsMEJBQWtCLENBQUEsSUFBdko7SUFBeUosaUJBQVc7OztJQUFuTSxrREFBK0IseUNBQUEseURBQUEsbUJBQUE7Ozs7SUFDbkUsMkNBQXdMO0lBQXZFLDJMQUFXLGVBQUEscUJBQWEsQ0FBQSxJQUFDLDBLQUFVLGVBQUEsbUJBQVcsQ0FBQSxJQUFyQix3S0FBK0IsZUFB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LEtBQUs7WUFFRyxLQUFLO2tCQUFiLEtBQUs7WUFFRyxzQ0FBc0M7a0JBQTlDLEtBQUs7WUFHTixPQUFPO2tCQUROLE1BQU07WUFJUCxLQUFLO2tCQURKLE1BQU07O2tGQXBDSSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQsIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwLCBOZ0Zvcm0sIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE5hdkNvbnRyb2xsZXIsIFBsYXRmb3JtIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBMaWJDb25zdGFudHMgfSBmcm9tICcuLi8uLi9tb2RlbHMvTGliQ29uc3RhbnRzJztcclxuaW1wb3J0IHsgVXNlck1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1VzZXJNb2RlbCc7XHJcbmltcG9ydCB7IExvZ2luU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xvZ2luL2xvZ2luLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDbGFpbWFudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jbGFpbWFudC1zZXJ2aWNlL2NsYWltYW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWwvdXRpbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV2Vla2x5Q2VydFNlcnZpY2VWMiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3dlZWtseS1jZXJ0L3dlZWtseS1jZXJ0LXYyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPdnBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvb3ZwL292cC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTG9jYWxTdG9yYWdlRXhwaXJ5IH0gZnJvbSAnQG5nLWlkbGUvY29yZSc7XHJcbmltcG9ydCB7IExleGlzTmV4aXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbGV4aXMtbmV4aXMvbGV4aXMubmV4aXMuc2VydmljZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtdXNlci1sb2dpbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXItbG9naW4uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3VzZXItbG9naW4uY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFVzZXJMb2dpbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgnbG9naW5Gb3JtRGlyZWN0aXZlJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcHVibGljIGxvZ2luRm9ybURpcmVjdGl2ZTogTmdGb3JtO1xyXG4gIEBWaWV3Q2hpbGQoJ3Jlc2V0Rm9ybURpcmVjdGl2ZScsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHB1YmxpYyByZXNldEZvcm1EaXJlY3RpdmU6IE5nRm9ybTtcclxuXHJcbiAgcHVibGljIHNob3cyRkFEaWFsb2cgPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd0ZvcmdvdFBhc3N3b3JkID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dVc2VybmFtZUVycm9yID0gZmFsc2U7XHJcbiAgcHVibGljIGNhcHNPbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBkaXNwbGF5RGlhbG9nID0gZmFsc2U7XHJcbiAgcHVibGljIGxvZ2luRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcclxuICBwdWJsaWMgcmVzZXRGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG4gIHB1YmxpYyBpc0xvZ2luSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93UHJvZ3Jlc3NCYXIgPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd0VtYWlsVmVyaWZpY2F0aW9uRGlhbG9nID0gZmFsc2U7XHJcbiAgcHVibGljIGlzTGV4aXNOZXhpc0VuYWJsZWQ6IGJvb2xlYW47XHJcbiAgcHVibGljIGlzT3RwTW9kYWxFbmFibGVkOiBib29sZWFuO1xyXG4gIHB1YmxpYyBpc1JldHVybmluZ1VzZXI6IGJvb2xlYW47XHJcbiAgcHVibGljIHZlcmlmaWNhdGlvblByZWZlcmVuY2U7XHJcbiAgcHVibGljIHNzbjogc3RyaW5nO1xyXG4gIHB1YmxpYyBpc0xleGlzTmV4aXNQb3B1cEVuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgbWZhTG9naW5IZWFkZXIgOiBzdHJpbmcgPSBcIlZhbGlkYXRpb24gY29kZSBoYXMgYmVlbiBzZW50IHRvIHRoZSBwaG9uZSBudW1iZXIgZW50ZXJlZFwiO1xyXG4gIHB1YmxpYyBpc1VTUFNFeHBpcmVkOiBib29sZWFuID1mYWxzZTtcclxuXHJcbiAgcHVibGljIHVzZXJNb2RlbDogVXNlck1vZGVsO1xyXG5cclxuICBASW5wdXQoKSBmb250U2l6ZTogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKSBjb2xvcjogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKSBpc1Bob25lTWZhUmVxdWlyZWRGb3JBY2NvdW50QWN0aXZhdGlvbjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHN1Y2Nlc3M6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBlcnJvcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHV0aWw6IFV0aWxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuYXY6IE5hdkNvbnRyb2xsZXIsXHJcbiAgICBwdWJsaWMgZmI6IFVudHlwZWRGb3JtQnVpbGRlcixcclxuICAgIHB1YmxpYyBsb2dpblNlcnZpY2U6IExvZ2luU2VydmljZSxcclxuICAgIHByaXZhdGUgcGxhdGZvcm06IFBsYXRmb3JtLFxyXG4gICAgcHJpdmF0ZSB3Y1NlcnZpY2U6IFdlZWtseUNlcnRTZXJ2aWNlVjIsXHJcbiAgICBwcml2YXRlIG92cFNlcnZpY2U6IE92cFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBjczogQ2xhaW1hbnRTZXJ2aWNlLFxyXG4gICAgcHVibGljIGxuOiBMZXhpc05leGlzU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmlzT3RwTW9kYWxFbmFibGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzTGV4aXNOZXhpc0VuYWJsZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNSZXR1cm5pbmdVc2VyID0gdHJ1ZTtcclxuICAgIHRoaXMuaW5pdGlsaXplTG9naW5Gb3JtKCk7XHJcbiAgfVxyXG5cclxuICByZXNldCgpIHtcclxuICAgIHRoaXMuc2hvd1Byb2dyZXNzQmFyID0gZmFsc2U7XHJcbiAgICB0aGlzLmxvZ2luRm9ybS5yZXNldCgpO1xyXG4gICAgdGhpcy5sb2dpbkZvcm1EaXJlY3RpdmUucmVzZXRGb3JtKCk7XHJcbiAgICB0aGlzLmxvZ2luU2VydmljZS5yZXNldCgpO1xyXG4gICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgIHRoaXMudXNlck1vZGVsID0gbnVsbDtcclxuICAgIHRoaXMuc2hvdzJGQURpYWxvZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgaW5pdGlsaXplTG9naW5Gb3JtKCkge1xyXG4gICAgdGhpcy5sb2dpbkZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgdXNlcm5hbWU6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgcGFzc3dvcmQ6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgY2FwdGNoYTogW251bGxdLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5yZXNldEZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgdXNlcm5hbWU6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgY2FwdGNoYTogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgdXNlcm5hbWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5sb2dpbkZvcm0uY29udHJvbHNbJ3VzZXJuYW1lJ10gYXMgVW50eXBlZEZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBhc3N3b3JkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubG9naW5Gb3JtLmNvbnRyb2xzWydwYXNzd29yZCddIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcclxuICB9XHJcblxyXG4gIGdldCBjYXB0Y2hhKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubG9naW5Gb3JtLmNvbnRyb2xzWydjYXB0Y2hhJ10gYXMgVW50eXBlZEZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJlc2V0VXNlcm5hbWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5yZXNldEZvcm0uY29udHJvbHNbJ3VzZXJuYW1lJ10gYXMgVW50eXBlZEZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJlc2V0Q2FwdGNoYSgpIHtcclxuICAgIHJldHVybiB0aGlzLnJlc2V0Rm9ybS5jb250cm9sc1snY2FwdGNoYSddIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcclxuICB9XHJcblxyXG4gIHNpZ25JbigpIHtcclxuICAgIGlmICh0aGlzLmxvZ2luRm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBhdXRoOiBhbnkgPSB7fTtcclxuICAgIGF1dGgudXNlcklkID0gdGhpcy51c2VybmFtZS52YWx1ZTtcclxuICAgIGF1dGgucGFzc3dvcmQgPSB0aGlzLnBhc3N3b3JkLnZhbHVlO1xyXG5cclxuICAgIHRoaXMudXRpbFxyXG4gICAgICAuc2hvd0xvYWRlcigpXHJcbiAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLmxvZ2luU2VydmljZS5sb2dpbkFuZENoZWNrRm9yTUZBKGF1dGgpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCB1c2VyTW9kZWw6IFVzZXJNb2RlbCA9IHJlcztcclxuICAgICAgICAgICAgdGhpcy5sb2dpblNlcnZpY2VcclxuICAgICAgICAgICAgICAuc2V0VXNlcih1c2VyTW9kZWwpXHJcbiAgICAgICAgICAgICAgLnRoZW4oKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51c2VyTW9kZWwgPSB1c2VyTW9kZWw7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNzbiA9IHVzZXJNb2RlbD8uc3NuO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2dpblN1Y2Nlc3MoKTtcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIC5jYXRjaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIuaXMyRkFSZXF1aXJlZCArICcnID09ICd0cnVlJykge1xyXG4gICAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy51c2VyTW9kZWwgPSBlcnI7XHJcbiAgICAgICAgICAgICAgdGhpcy51c2VyTW9kZWwudXNlcm5hbWUgPSB0aGlzLnVzZXJuYW1lLnZhbHVlO1xyXG4gICAgICAgICAgICAgIHRoaXMudXNlck1vZGVsLnBhc3N3b3JkID0gdGhpcy5wYXNzd29yZC52YWx1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnNob3cyRkFEaWFsb2cgPSB0cnVlO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYoZXJyLmRldGFpbHMuaW5jbHVkZXMoXCJZb3VyIGlkZW50aXR5IG11c3QgYmUgdmVyaWZpZWQgYXQgVVNQUyBidXQgeW91ciB0aW1lZnJhbWUgaGFzIGV4cGlyZWQuXCIpKXtcclxuICAgICAgICAgICAgIC8vIHRoaXMudXRpbC5lcnJvckhhbmRsZXIoZXJyKTtcclxuICAgICAgICAgICAgIC8vIFxyXG4gICAgICAgICAgICAgLy8gdGhpcy5lcnJvci5lbWl0KGVycik7XHJcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnRyaWdnZXJVU1BTRm9yRXhwaXJlZCh0aGlzLnVzZXJuYW1lLnZhbHVlKSwgMjAwMCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2luc2lkZSBlbHNlJywgZXJyKTtcclxuICAgICAgICAgICAgICB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XHJcbiAgICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgICB0aGlzLmVycm9yLmVtaXQoZXJyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGUpID0+IHtcclxuICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGVuYWJsZUxleGlzTmV4aXModHJpZ2dlckV4aXRBUEkgPSB0cnVlKSB7XHJcbiAgICB0aGlzLnNob3cyRkFEaWFsb2cgPSBmYWxzZTtcclxuICAgIGlmICghdHJpZ2dlckV4aXRBUEkpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvKlxyXG4gICAgICB0aGlzLmxuLmlzTGV4aXNOZXhpc0lkUHJvb2ZpbmdFbmFibGVkV2l0aFVzZXJJZCh0aGlzLnVzZXJNb2RlbC51c2VybmFtZSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICAvLyBJZiBsZXhpcy1uZXhpcyBpZCBwcm9vZmluZyBpcyBlbmFibGVkXHJcbiAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgdGhpcy5pc0xleGlzTmV4aXNQb3B1cEVuYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnV0aWwuc2hvd0Vycm9yKFwiVGhlIGNsYWltYW50IGFjY291bnQgd2l0aCB1c2VyIG5hbWVcIiArIHRoaXMudXNlck1vZGVsLnVzZXJuYW1lICsgXCIgaGFzIGJlZW4gYmxvY2tlZC4gUGxlYXNlIGNvbnRhY3QgS0RPTC5cIilcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgKi9cclxuICB9XHJcblxyXG4gIG9uTG5TdWNjZXNzKCl7XHJcbiAgICB0aGlzLmlzTGV4aXNOZXhpc1BvcHVwRW5hYmxlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgIHRoaXMudXRpbC5zdWNjZXNzKCdZb3VyIElEIHByb29maW5nIHdhcyBzdWNjZXNzZnVsLiBUcnkgcmUtbG9naW4gb3IgY2hhbmdlIHlvdXIgcGFzc3dvcmQgdG8gY29udGludWUhJyk7XHJcbiAgICBpZiAodGhpcy5yZXNldEZvcm0uaW52YWxpZCkge1xyXG4gICAgICB0aGlzLnBhc3N3b3JkLnJlc2V0KCk7XHJcbiAgICAgIHRoaXMubG9naW5Gb3JtLnJlc2V0KCk7XHJcbiAgICAgIHRoaXMubG9naW5Gb3JtRGlyZWN0aXZlLnJlc2V0KCk7XHJcbiAgICAgIHRoaXMucmVzZXRGb3JtLnJlc2V0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkxORXJyb3IoKXtcclxuICAgIHRoaXMudHJpZ2dlclVTUFMoKTtcclxuICB9XHJcblxyXG4gIHRyaWdnZXJVU1BTKCl7XHJcbiAgICB0aGlzLmlzTGV4aXNOZXhpc1BvcHVwRW5hYmxlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgIGNvbnNvbGUubG9nKFwidXNwcyBpcyB0cmlnZ2VyZWRcIilcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd1c2VySWQnLCBKU09OLnN0cmluZ2lmeSh0aGlzLnVzZXJNb2RlbC51c2VybmFtZSkpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy91c3BzLXJlZGlyZWN0JywgXCJcIl0pLCAxMDAwKTtcclxuICB9XHJcblxyXG4gIHRyaWdnZXJVU1BTRm9yRXhwaXJlZCh1c2VybmFtZSA6IFN0cmluZyl7XHJcbiAgICB0aGlzLmlzTGV4aXNOZXhpc1BvcHVwRW5hYmxlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1VTUFNFeHBpcmVkPXRydWU7ICBcclxuICAgIGNvbnNvbGUubG9nKFwidXNwcyBpcyB0cmlnZ2VyZWRcIilcclxuICAgXHJcbiAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd1c2VySWQnLCBKU09OLnN0cmluZ2lmeSh1c2VybmFtZSkpO1xyXG4gICAgLy9zZXRUaW1lb3V0KCgpID0+IHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3VzcHMtcmVkaXJlY3QnLCBcIlwiXSksIDEwMDApO1xyXG4gIH1cclxuXHJcbiAgdHJpZ2dlclVTUFNGb3JFeHBpcmVkUHJvY2Vzcygpe1xyXG4gICAgdGhpcy51dGlsLnNob3dMb2FkZXIoKTtcclxuICAgIHRoaXMuaXNMZXhpc05leGlzUG9wdXBFbmFibGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzVVNQU0V4cGlyZWQ9dHJ1ZTsgIFxyXG4gICAgY29uc29sZS5sb2coXCJ1c3BzIGlzIHRyaWdnZXJlZFwiKVxyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3VzZXJJZCcsIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidXNlcklkXCIpKTsgIFxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy91c3BzLXJlZGlyZWN0JywgXCJcIl0pLCAxMDAwKTtcclxuICAgIHRoaXMuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gYXN5bmMgbG9naW5TdWNjZXNzKCkge1xyXG4gICAgbGV0IHVzZXJNb2RlbCA9IHRoaXMubG9naW5TZXJ2aWNlLmdldFVzZXIoKTtcclxuICAgIHRoaXMudXNlck1vZGVsID0gdXNlck1vZGVsO1xyXG4gICAgaWYgKHVzZXJNb2RlbC5jaGFuZ2VQd2QpIHtcclxuICAgICAgdGhpcy5uYXYubmF2aWdhdGVSb290KCdjaGFuZ2UtcGFzc3dvcmQnKTtcclxuICAgICAgdGhpcy5zaG93UHJvZ3Jlc3NCYXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc0xvZ2luSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB1c2VyTW9kZWwuZW1haWxTdGF0dXMgIT0gJ1ZFUkYnICYmXHJcbiAgICAgIHVzZXJNb2RlbC5pc0VtYWlsVmVyaWZpY2F0aW9uUmVxdWlyZWRcclxuICAgICkge1xyXG4gICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICB0aGlzLnNob3dFbWFpbFZlcmlmaWNhdGlvbkRpYWxvZyA9IHRydWU7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodXNlck1vZGVsLmlzMkZBUmVxdWlyZWQpIHtcclxuICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgdGhpcy5zaG93MkZBRGlhbG9nID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGlzQ2FwYWNpdG9yID0gdGhpcy5wbGF0Zm9ybS5pcygnY2FwYWNpdG9yJyk7XHJcbiAgICBpZiAoXHJcbiAgICAgIHVzZXJNb2RlbC5kYXlzVGlsbFBhc3N3b3JkRXhwaXJlICYmXHJcbiAgICAgIHVzZXJNb2RlbC5kYXlzVGlsbFBhc3N3b3JkRXhwaXJlIDwgMTAgJiZcclxuICAgICAgTGliQ29uc3RhbnRzLmxlZ2FjeU1lbnUgPT0gJ3RydWUnICYmXHJcbiAgICAgIGlzQ2FwYWNpdG9yXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5uYXYubmF2aWdhdGVSb290KCdjaGFuZ2UtcGFzc3dvcmQ/Y2hhbmdlUHdkPXRydWUnKTtcclxuICAgICAgdGhpcy5zaG93UHJvZ3Jlc3NCYXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc0xvZ2luSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9ICAgIFxyXG4gICAgaWYodXNlck1vZGVsLnNzbiE9bnVsbCl7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiQUlDIEZMT1cgaW4gTG9naW5TZXJ2aWNlXCIpOyAgICBcclxuICAgICBjb25zdCBkYXRhPSBhd2FpdCB0aGlzLndjU2VydmljZS5nZW5lcmF0ZUV2ZW50Rm9yUmVvcGVuQWljRmxvdyh1c2VyTW9kZWwuc3NuKVxyXG4gICAgICAgLnRoZW4oYXN5bmMgPT57ICAgICAgICAgIFxyXG4gICAgICAgfVxyXG5cclxuICAgICApLmNhdGNoKGFzeW5jIGVyciA9PntcclxuICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICAgIH0pICBcclxuICB9XHJcbiAvKiAgIGl0IHdhcyBjb21tZW50ZWQgICBmb3IgUEdMUC0yMjgxICAgXHJcbiBpZih1c2VyTW9kZWwuc3NuIT1udWxsKXtcclxuICAgIGNvbnNvbGUubG9nKFwib3ZlcnBheW1lbnQgTG9naW5TZXJ2aWNlXCIpOyAgICBcclxuICAgY29uc3QgZGF0YT0gYXdhaXQgdGhpcy5vdnBTZXJ2aWNlLnRyaWdnZXJSZXBheW1lbnRFdmVudCh1c2VyTW9kZWwuc3NuKVxyXG4gICAgIC50aGVuKGFzeW5jID0+eyAgICAgICAgXHJcbiAgICAgfVxyXG4gICApLmNhdGNoKGFzeW5jIGVyciA9PntcclxuICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XHJcbiAgIH0pICBcclxufSovXHJcblxyXG4gICAgaWYgKHVzZXJNb2RlbC5jbGFpbWFudElkICE9IG51bGwpIHtcclxuICAgICAgY29uc3QgZGF0YSA9IHRoaXMub3ZwU2VydmljZS50cmlnZ2VyT3ZlcnBheW1lbnRFdmVudCgpLnN1YnNjcmliZShcclxuICAgICAgICAoeCkgPT4ge30sXHJcbiAgICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgIHRoaXMudXRpbC5lcnJvckhhbmRsZXIoZXJyKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHVzZXJNb2RlbC5jbGFpbWFudElkICE9IG51bGwpIHtcclxuICAgICAgY29uc3QgZGF0YSA9IHRoaXMub3ZwU2VydmljZS50cmlnZ2VyT3ZlcnBheW1lbnRFdmVudEhpc3RvcnkoKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHgpID0+IHt9LFxyXG4gICAgICAgIChlcnIpID0+IHtcclxuICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zaG93MkZBRGlhbG9nID0gZmFsc2U7XHJcbiAgICB0aGlzLnN1Y2Nlc3MuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0RpYWxvZygpIHtcclxuICAgIHRoaXMuZGlzcGxheURpYWxvZyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBpbml0aWF0ZUZvcmdvdFBhc3N3b3JkKCkge1xyXG4gICAgaWYgKHRoaXMucmVzZXRGb3JtLmludmFsaWQpIHtcclxuICAgICAgdGhpcy5wYXNzd29yZC5yZXNldCgpO1xyXG4gICAgICB0aGlzLmxvZ2luRm9ybS5yZXNldCgpO1xyXG4gICAgICB0aGlzLmxvZ2luRm9ybURpcmVjdGl2ZS5yZXNldCgpO1xyXG4gICAgICB0aGlzLnJlc2V0Rm9ybS5yZXNldCgpO1xyXG4gICAgICB0aGlzLnJlc2V0Rm9ybURpcmVjdGl2ZS5yZXNldCgpO1xyXG4gICAgICB0aGlzLnJlc2V0VXNlcm5hbWUubWFya0FzRGlydHkoKTtcclxuICAgICAgdGhpcy5yZXNldENhcHRjaGEubWFya0FzRGlydHkoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy51dGlsLnNob3dMb2FkZXIoKS50aGVuKCgpID0+IHtcclxuICAgICAgdGhpcy5sb2dpblNlcnZpY2VcclxuICAgICAgICAuaW5pdGlhdGVGb3Jnb3RQYXNzd29yZFYyKHRoaXMucmVzZXRVc2VybmFtZS52YWx1ZSlcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnV0aWwuc3VjY2VzcyhcclxuICAgICAgICAgICAgICAnWW91ciBwYXNzd29yZCBoYXMgYmVlbiByZXNldC4gWW91IHNob3VsZCByZWNlaXZlIGFuIGVtYWlsIHdpdGggYSB0ZW1wb3JhcnkgcGFzc3dvcmQgYW5kIGxvZ2luIGluc3RydWN0aW9ucy4nXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMubG9naW5Gb3JtLnJlc2V0KCk7XHJcbiAgICAgICAgICAgIHRoaXMubG9naW5TZXJ2aWNlLnJlc2V0KCk7XHJcbiAgICAgICAgICAgIHRoaXMucmVzZXRGb3JtRGlyZWN0aXZlLnJlc2V0KCk7XHJcbiAgICAgICAgICAgIHRoaXMucmVzZXRVc2VybmFtZS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dGb3Jnb3RQYXNzd29yZCA9ICF0aGlzLnNob3dGb3Jnb3RQYXNzd29yZDtcclxuICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXRpbC5lcnJvckhhbmRsZXIoZXJyKTtcclxuICAgICAgICAgICAgdGhpcy5sb2dpbkZvcm0ucmVzZXQoKTtcclxuICAgICAgICAgICAgdGhpcy5sb2dpblNlcnZpY2UucmVzZXQoKTtcclxuICAgICAgICAgICAgdGhpcy5yZXNldEZvcm1EaXJlY3RpdmUucmVzZXRGb3JtKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0ZvcmdvdFBhc3N3b3JkID0gIXRoaXMuc2hvd0ZvcmdvdFBhc3N3b3JkO1xyXG4gICAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvZ291dCgpIHtcclxuICAgIHRoaXMubG9naW5TZXJ2aWNlLmxvZ291dCgpO1xyXG4gICAgdGhpcy5zaG93RW1haWxWZXJpZmljYXRpb25EaWFsb2cgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGVtYWlsVmVyaWZpY2F0aW9uU3VjY2VzcygpIHtcclxuICAgIHRoaXMuc2hvd0VtYWlsVmVyaWZpY2F0aW9uRGlhbG9nID0gZmFsc2U7XHJcbiAgICB0aGlzLnN1Y2Nlc3MuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UoKSB7ICBcclxuICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICB0aGlzLmlzVVNQU0V4cGlyZWQgPSBmYWxzZTsgICBcclxuICAgXHJcbiAgfVxyXG59XHJcbiIsIjxwLWRpYWxvZyBbKHZpc2libGUpXT1cImRpc3BsYXlEaWFsb2dcIiBbbW9kYWxdPVwidHJ1ZVwiIGFwcGVuZFRvPVwiYm9keVwiPlxyXG4gICAgPGg0IGNsYXNzPVwiaGVhZGluZ1wiPk1lc3NhZ2U8L2g0PlxyXG5cclxuICAgIElmIHlvdSBmb3Jnb3QgeW91ciBVc2VyIElELCBhIEN1c3RvbWVyIFNlcnZpY2UgUmVwcmVzZW50YXRpdmUgaXMgYXZhaWxhYmxlIHRvIGFzc2lzdCB5b3UgZHVyaW5nIG5vcm1hbCBidXNpbmVzcyBob3Vycy5cclxuICAgIDxkaXYgKm5nSWY9XCJ1dGlsLmlzU3RhdGUoJ01TJylcIj5cclxuICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgIDxsaT5FbXBsb3llcnMgbWF5IGNhbGwgNjAxLTQ5My05NDI3PC9saT5cclxuICAgICAgICAgICAgPGxpPkNsYWltYW50cyBtYXkgY2FsbCA2MDEtNDkzLTk0MjcuPC9saT5cclxuICAgICAgICA8L3VsPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwidXRpbC5pc1N0YXRlKCdNRScpXCI+XHJcbiAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICA8bGk+RW1wbG95ZXJzIG1heSBjYWxsIDIwNy02MjEtNTEyMDwvbGk+XHJcbiAgICAgICAgICAgIDxsaT5DbGFpbWFudHMgbWF5IGNhbGwgMS04MDAtNTkzLTc2NjA8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gdG9kbzogZ2V0IEtTIG51bWJlci0tPlxyXG4gICAgPGJyIC8+XHJcbiAgICA8cC1mb290ZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgdHlwZT1cInN1Ym1pdFwiIChjbGljayk9XCJkaXNwbGF5RGlhbG9nID0gIWRpc3BsYXlEaWFsb2dcIiBjb2xvcj1cInN1Y2Nlc3NcIj5cclxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwic3RhcnRcIiBuYW1lPVwiY2xvc2Utc2hhcnBcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgICAgQ2xvc2VcclxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9wLWZvb3Rlcj5cclxuPC9wLWRpYWxvZz5cclxuPGFwcC1tZmEyICpuZ0lmPVwiaXNPdHBNb2RhbEVuYWJsZWRcIiBbKGRpc3BsYXkpXT1cImlzT3RwTW9kYWxFbmFibGVkXCIgW3JldHVybmluZ1VzZXJdPVwiaXNSZXR1cm5pbmdVc2VyXCIgW3ZlcmlmaWNhdGlvblByZWZlcmVuY2VdPVwidmVyaWZpY2F0aW9uUHJlZmVyZW5jZVwiIFtzc25dPVwic3NuXCIgKHN1Y2Nlc3MpPVwibG9naW5TdWNjZXNzKClcIiAoY2xlYXIpPVwiZW5hYmxlTGV4aXNOZXhpcygpXCI+PC9hcHAtbWZhMj5cclxuPGFwcC1sZXhpcy1uZXhpcyAqbmdJZj1cImlzTGV4aXNOZXhpc1BvcHVwRW5hYmxlZFwiIFtkaXNwbGF5XT1cImlzTGV4aXNOZXhpc1BvcHVwRW5hYmxlZFwiIFt1c2VyTW9kZWxdID0gXCJ1c2VyTW9kZWxcIiAoc3VjY2Vzcyk9XCJvbkxuU3VjY2VzcygpXCIgKGVycm9yKT1cIm9uTE5FcnJvcigpXCIgKHVzcHMpPVwidHJpZ2dlclVTUFMoKVwiPjwvYXBwLWxleGlzLW5leGlzPlxyXG48YXBwLW1mYS1wb3B1cCBbKGRpc3BsYXkpXT1cInNob3cyRkFEaWFsb2dcIiBbdXNlcl09XCJ1c2VyTW9kZWxcIiBbcmV0dXJuaW5nVXNlcl09XCJpc1JldHVybmluZ1VzZXJcIiBbaGVhZGluZ109XCJtZmFMb2dpbkhlYWRlclwiIChzdWNjZXNzKT1cImxvZ2luU3VjY2VzcygpXCIgKGNsZWFyKT1cImVuYWJsZUxleGlzTmV4aXMoJGV2ZW50KVwiPjwvYXBwLW1mYS1wb3B1cD5cclxuXHJcblxyXG48Zm9ybSBbZm9ybUdyb3VwXT1cImxvZ2luRm9ybVwiICNsb2dpbkZvcm1EaXJlY3RpdmU9XCJuZ0Zvcm1cIiAqbmdJZj1cIiFzaG93Rm9yZ290UGFzc3dvcmRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJwLWZsdWlkIHAtZm9ybWdyaWQgcC1ncmlkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGlvbi10ZXh0LWxlZnRcIiBzdHlsZT1cIndpZHRoOiAtd2Via2l0LWZpbGwtYXZhaWxhYmxlO1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwidXNlclByb2ZpbGVJZFwiIFtzdHlsZS5mb250LXNpemVdPVwiZm9udFNpemVcIiBbc3R5bGUuY29sb3JdPVwiY29sb3JcIj57eydVc2VyIElEJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0IGlkPVwidXNlclByb2ZpbGVJZFwiIHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBtYXhsZW5ndGg9XCIzMFwiIG1pbmxlbmd0aD1cIjVcIiBbZm9ybUNvbnRyb2xdPVwidXNlcm5hbWVcIj5cclxuICAgICAgICAgICAgPGFwcC1lcnJvciBbZmllbGRdPSd1c2VybmFtZScgW2Zvcm1dPVwibG9naW5Gb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICByZXF1aXJlZDogJ1VzZXIgSUQgaXMgcmVxdWlyZWQuJyxcclxuICAgICAgICAgICAgbWlubGVuZ3RoOiAnVXNlciBJRCBzaG91bGQgaGF2ZSBtaW5pbXVtIDUgY2hhcmFjdGVycy4nXHJcbiAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGlvbi10ZXh0LWxlZnRcIiBzdHlsZT1cIndpZHRoOiAtd2Via2l0LWZpbGwtYXZhaWxhYmxlO1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwidXNlclByb2ZpbGVQYXNzd29yZFwiIFtzdHlsZS5mb250LXNpemVdPVwiZm9udFNpemVcIiBbc3R5bGUuY29sb3JdPVwiY29sb3JcIj57eydQYXNzd29yZCAoQ2FzZSBTZW5zaXRpdmUpJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgPHAtcGFzc3dvcmQgW2Zvcm1Db250cm9sXT1cInBhc3N3b3JkXCIgaW5wdXRJZD1cInVzZXJQcm9maWxlUGFzc3dvcmRcIiBbdG9nZ2xlTWFza109J3RydWUnIFtmZWVkYmFja109J2ZhbHNlJz48L3AtcGFzc3dvcmQ+XHJcbiAgICAgICAgICAgIDxhcHAtZXJyb3IgW2ZpZWxkXT0ncGFzc3dvcmQnIFtmb3JtXT1cImxvZ2luRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnUGFzc3dvcmQgaXMgcmVxdWlyZWQuJ1xyXG4gICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImlvbi1wYWRkaW5nLXN0YXJ0IGlvbi1wYWRkaW5nLWVuZCBpb24tdGV4dC1sZWZ0XCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAtOHB4O1wiICpuZ0lmPVwiZmFsc2VcIj5cclxuICAgICAgICA8YXBwLWNhcHRjaGEgW2Zvcm1Db250cm9sXT1cImNhcHRjaGFcIj48L2FwcC1jYXB0Y2hhPlxyXG4gICAgICAgIDxhcHAtZXJyb3IgW2ZpZWxkXT0nY2FwdGNoYScgW2Zvcm1dPVwibG9naW5Gb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgIHJlcXVpcmVkOiAnQ2FwdGNoYSBpcyByZXF1aXJlZC4nXHJcbiAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicC1mbHVpZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiPlxyXG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwic2lnbkluKClcIiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwic3VibWl0XCIgc2hhcGU9XCJyb3VuZFwiIGZpbGw9XCJvdXRsaW5lXCIgY2xhc3M9XCJ3aGl0ZS1iYWNrZ3JvdW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInBvd2VyLW91dGxpbmVcIiBzbG90PVwic3RhcnRcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgICAge3snTG9naW4nIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLXBhZGRpbmctdG9wXCI+XHJcbiAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgPGEgdGFiaW5kZXg9XCIwXCIgcm9sZT1cImJ1dHRvblwiIGNsYXNzPVwibGlua1wiIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4O1wiIChjbGljayk9XCJzaG93RGlhbG9nKClcIiAoa2V5ZG93bi5lbnRlcik9XCJzaG93RGlhbG9nKClcIj57eydGb3Jnb3QgdXNlciBJRD8nIHwgdHJhbnNsYXRlfX08L2E+XHJcbiAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPGEgdGFiaW5kZXg9XCIwXCIgcm9sZT1cImJ1dHRvblwiIGNsYXNzPVwibGlua1wiIChjbGljayk9XCJzaG93Rm9yZ290UGFzc3dvcmQgPSAhc2hvd0ZvcmdvdFBhc3N3b3JkXCIgKGtleWRvd24uZW50ZXIpPVwic2hvd0ZvcmdvdFBhc3N3b3JkID0gIXNob3dGb3Jnb3RQYXNzd29yZFwiIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiPnt7J0ZvcmdvdFxyXG4gICAgICAgICAgICAgICAgICAgIFBhc3N3b3JkPycgfCB0cmFuc2xhdGV9fTwvYT5cclxuICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgIDwvaW9uLXJvdz5cclxuICAgIDwvZGl2PlxyXG48L2Zvcm0+XHJcblxyXG48Zm9ybSAqbmdJZj1cInNob3dGb3Jnb3RQYXNzd29yZFwiIFtmb3JtR3JvdXBdPVwicmVzZXRGb3JtXCIgI3Jlc2V0Rm9ybURpcmVjdGl2ZT1cIm5nRm9ybVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInAtZmx1aWQgcC1mb3JtZ3JpZCBwLWdyaWRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgaW9uLXRleHQtbGVmdFwiIHN0eWxlPVwid2lkdGg6IC13ZWJraXQtZmlsbC1hdmFpbGFibGU7XCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJ1c2VyUHJvZmlsZUlkXCIgW3N0eWxlLmZvbnQtc2l6ZV09XCJmb250U2l6ZVwiIFtzdHlsZS5jb2xvcl09XCJjb2xvclwiPnt7J1VzZXIgSUQnIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJ1c2VyUHJvZmlsZUlkXCIgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IG1heGxlbmd0aD1cIjMwXCIgbWlubGVuZ3RoPVwiNVwiIFtmb3JtQ29udHJvbF09XCJyZXNldFVzZXJuYW1lXCI+XHJcbiAgICAgICAgICAgIDxhcHAtZXJyb3IgW2ZpZWxkXT0ncmVzZXRVc2VybmFtZScgW2Zvcm1dPVwicmVzZXRGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICByZXF1aXJlZDogJ1VzZXIgSUQgaXMgcmVxdWlyZWQuJyxcclxuICAgICAgICAgICAgbWlubGVuZ3RoOiAnVXNlciBJRCBzaG91bGQgaGF2ZSBtaW5pbXVtIDUgY2hhcmFjdGVycy4nXHJcbiAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlvbi10ZXh0LWxlZnRcIj5cclxuICAgICAgICAgICAgPGFwcC1jYXB0Y2hhIFtmb3JtQ29udHJvbF09XCJyZXNldENhcHRjaGFcIj48L2FwcC1jYXB0Y2hhPlxyXG4gICAgICAgICAgICA8YXBwLWVycm9yIFtmaWVsZF09J3Jlc2V0Q2FwdGNoYScgW2Zvcm1dPVwicmVzZXRGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgcmVxdWlyZWQ6ICdDYXB0Y2hhIGlzIHJlcXVpcmVkLidcclxuICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJwLWZsdWlkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlvbi10ZXh0LXJpZ2h0XCI+XHJcbiAgICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJzaG93Rm9yZ290UGFzc3dvcmQgPSAhc2hvd0ZvcmdvdFBhc3N3b3JkXCIgY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cInN1Ym1pdFwiIHNoYXBlPVwicm91bmRcIiBmaWxsPVwib3V0bGluZVwiIGNsYXNzPVwid2hpdGUtYmFja2dyb3VuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJhcnJvdy1iYWNrLW91dGxpbmVcIiBzbG90PVwic3RhcnRcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgICAge3snTG9naW4nIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImluaXRpYXRlRm9yZ290UGFzc3dvcmQoKVwiIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJzdWJtaXRcIiBzaGFwZT1cInJvdW5kXCIgZmlsbD1cIm91dGxpbmVcIlxyXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9XCJ7e3Jlc2V0Rm9ybS5pbnZhbGlkfX1cIiBjbGFzcz1cIndoaXRlLWJhY2tncm91bmRcIj5cclxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwibWFpbC1vdXRsaW5lXCIgc2xvdD1cInN0YXJ0XCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgICAgIHt7J1NlbmQgZW1haWwnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgICAgXHJcbjwvZm9ybT5cclxuXHJcbjxwLWRpYWxvZyBbdmlzaWJsZV09XCJpc1VTUFNFeHBpcmVkXCIgW21vZGFsXT1cInRydWVcIiBhcHBlbmRUbz1cImJvZHlcIiBwb3NpdGlvbj1cInRvcFwiIFticmVha3BvaW50c109XCJ7JzEyMDBweCc6ICc2NjBweCcsICc5OTJweCc6ICc2NjBweCcsICc3NjhweCc6ICc2NjBweCcsICc1NzZweCc6ICcxMDB2dyd9XCIgW3N0eWxlXT1cInt3aWR0aDogJzQ1dncnfVwiXHJcbltiYXNlWkluZGV4XT1cIjUwMDBcIiBbZHJhZ2dhYmxlXT1cImZhbHNlXCIgW3Jlc2l6YWJsZV09XCJmYWxzZVwiIGNsb3NlT25Fc2NhcGU9XCJmYWxzZVwiPlxyXG4gICAge3sndXNwcy5leHBkLnBvcHVwLmhlYWRpbmcnIHwgdHJhbnNsYXRlfX08YnIvPlxyXG4gICAgXHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZm9vdGVyXCI+XHJcbiAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIHR5cGU9XCJzdWJtaXRcIiBmaWxsPVwib3V0bGluZVwiIChjbGljayk9XCJjbG9zZSgpXCI+XHJcbiAgICAgICAgICB7eyd1c3BzLmV4cGQucG9wdXAuY2FuY2VsJyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiB0eXBlPVwic3VibWl0XCIgZmlsbD1cInNvbGlkXCIgKGNsaWNrKT1cInRyaWdnZXJVU1BTRm9yRXhwaXJlZFByb2Nlc3MoKVwiPlxyXG4gICAgICAgICAge3sndXNwcy5leHBkLnBvcHVwLnByb2Nlc3MnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L3AtZGlhbG9nPlxyXG5cclxuPGFwcC1lbWFpbC11cGRhdGUgW2VtYWlsXT1cInVzZXJNb2RlbC5lbWFpbElkXCIgKm5nSWY9XCJzaG93RW1haWxWZXJpZmljYXRpb25EaWFsb2dcIiAob25DbG9zZSk9XCJsb2dvdXQoKVwiIChvblN1Y2Nlc3MpPVwiZW1haWxWZXJpZmljYXRpb25TdWNjZXNzKClcIj48L2FwcC1lbWFpbC11cGRhdGU+Il19
616
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1sb2dpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvdXNlci1sb2dpbi91c2VyLWxvZ2luLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy91c2VyLWxvZ2luL3VzZXItbG9naW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBb0UsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ0FyRCwyQkFBZ0MsU0FBQSxTQUFBO0lBRXBCLCtDQUErQjtJQUFBLGlCQUFLO0lBQ3hDLDBCQUFJO0lBQUEsZ0RBQWdDO0lBQUEsaUJBQUssRUFBQSxFQUFBOzs7SUFHakQsMkJBQWdDLFNBQUEsU0FBQTtJQUVwQiwrQ0FBK0I7SUFBQSxpQkFBSztJQUN4QywwQkFBSTtJQUFBLGlEQUFpQztJQUFBLGlCQUFLLEVBQUEsRUFBQTs7OztJQWN0RCxvQ0FBNE47SUFBeEwsa1BBQStCLCtKQUE0RyxlQUFBLHNCQUFjLENBQUEsSUFBMUgsMkpBQXFJLGVBQUEsMEJBQWtCLENBQUEsSUFBdko7SUFBeUosaUJBQVc7OztJQUFuTSxrREFBK0IseUNBQUEseURBQUEsbUJBQUE7Ozs7SUFDbkUsMkNBQXdMO0lBQXZFLDJMQUFXLGVBQUEscUJBQWEsQ0FBQSxJQUFDLDBLQUFVLGVBQUEsbUJBQVcsQ0FBQSxJQUFyQix3S0FBK0IsZUFB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S0FBSztrQkFESixNQUFNOztrRkFwQ0ksa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkLCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtQ29udHJvbCwgVW50eXBlZEZvcm1Hcm91cCwgTmdGb3JtLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBOYXZDb250cm9sbGVyLCBQbGF0Zm9ybSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcclxuaW1wb3J0IHsgTGliQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0xpYkNvbnN0YW50cyc7XHJcbmltcG9ydCB7IFVzZXJNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9Vc2VyTW9kZWwnO1xyXG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2dpbi9sb2dpbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2xhaW1hbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2xhaW1hbnQtc2VydmljZS9jbGFpbWFudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlsL3V0aWwuc2VydmljZSc7XHJcbmltcG9ydCB7IFdlZWtseUNlcnRTZXJ2aWNlVjIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy93ZWVrbHktY2VydC93ZWVrbHktY2VydC12Mi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT3ZwU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL292cC9vdnAuc2VydmljZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IExvY2FsU3RvcmFnZUV4cGlyeSB9IGZyb20gJ0BuZy1pZGxlL2NvcmUnO1xyXG5pbXBvcnQgeyBMZXhpc05leGlzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xleGlzLW5leGlzL2xleGlzLm5leGlzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC11c2VyLWxvZ2luJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdXNlci1sb2dpbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdXNlci1sb2dpbi5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXNlckxvZ2luQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKCdsb2dpbkZvcm1EaXJlY3RpdmUnLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBwdWJsaWMgbG9naW5Gb3JtRGlyZWN0aXZlOiBOZ0Zvcm07XHJcbiAgQFZpZXdDaGlsZCgncmVzZXRGb3JtRGlyZWN0aXZlJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcHVibGljIHJlc2V0Rm9ybURpcmVjdGl2ZTogTmdGb3JtO1xyXG5cclxuICBwdWJsaWMgc2hvdzJGQURpYWxvZyA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93Rm9yZ290UGFzc3dvcmQgPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd1VzZXJuYW1lRXJyb3IgPSBmYWxzZTtcclxuICBwdWJsaWMgY2Fwc09uID0gZmFsc2U7XHJcbiAgcHVibGljIGRpc3BsYXlEaWFsb2cgPSBmYWxzZTtcclxuICBwdWJsaWMgbG9naW5Gb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG4gIHB1YmxpYyByZXNldEZvcm06IFVudHlwZWRGb3JtR3JvdXA7XHJcbiAgcHVibGljIGlzTG9naW5JblByb2dyZXNzID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dQcm9ncmVzc0JhciA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93RW1haWxWZXJpZmljYXRpb25EaWFsb2cgPSBmYWxzZTtcclxuICBwdWJsaWMgaXNMZXhpc05leGlzRW5hYmxlZDogYm9vbGVhbjtcclxuICBwdWJsaWMgaXNPdHBNb2RhbEVuYWJsZWQ6IGJvb2xlYW47XHJcbiAgcHVibGljIGlzUmV0dXJuaW5nVXNlcjogYm9vbGVhbjtcclxuICBwdWJsaWMgdmVyaWZpY2F0aW9uUHJlZmVyZW5jZTtcclxuICBwdWJsaWMgc3NuOiBzdHJpbmc7XHJcbiAgcHVibGljIGlzTGV4aXNOZXhpc1BvcHVwRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBtZmFMb2dpbkhlYWRlciA6IHN0cmluZyA9IFwiXCI7XHJcbiAgcHVibGljIGlzVVNQU0V4cGlyZWQ6IGJvb2xlYW4gPWZhbHNlO1xyXG5cclxuICBwdWJsaWMgdXNlck1vZGVsOiBVc2VyTW9kZWw7XHJcblxyXG4gIEBJbnB1dCgpIGZvbnRTaXplOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpIGNvbG9yOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpIGlzUGhvbmVNZmFSZXF1aXJlZEZvckFjY291bnRBY3RpdmF0aW9uOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgc3VjY2VzczogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGVycm9yOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgdXRpbDogVXRpbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5hdjogTmF2Q29udHJvbGxlcixcclxuICAgIHB1YmxpYyBmYjogVW50eXBlZEZvcm1CdWlsZGVyLFxyXG4gICAgcHVibGljIGxvZ2luU2VydmljZTogTG9naW5TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBwbGF0Zm9ybTogUGxhdGZvcm0sXHJcbiAgICBwcml2YXRlIHdjU2VydmljZTogV2Vla2x5Q2VydFNlcnZpY2VWMixcclxuICAgIHByaXZhdGUgb3ZwU2VydmljZTogT3ZwU2VydmljZSxcclxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGNzOiBDbGFpbWFudFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgbG46IExleGlzTmV4aXNTZXJ2aWNlLFxyXG4gICAgcHVibGljIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcclxuICApIHt0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudXNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibGFuZ3VhZ2VcIikpfTtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmlzT3RwTW9kYWxFbmFibGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzTGV4aXNOZXhpc0VuYWJsZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNSZXR1cm5pbmdVc2VyID0gdHJ1ZTtcclxuICAgIGlmKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibGFuZ3VhZ2VcIikgPT09IFwiZXNcIil7XHJcbiAgICAgIHRoaXMubWZhTG9naW5IZWFkZXIgPSBcIkVsIGPDs2RpZ28gZGUgdmFsaWRhY2nDs24gaGEgc2lkbyBlbnZpYWRvIGFsIG7Dum1lcm8gZGUgdGVsw6lmb25vIGluZ3Jlc2Fkb1wiO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5tZmFMb2dpbkhlYWRlciA9IFwiVmFsaWRhdGlvbiBjb2RlIGhhcyBiZWVuIHNlbnQgdG8gdGhlIHBob25lIG51bWJlciBlbnRlcmVkXCI7XHJcbiAgICB9XHJcbiAgICB0aGlzLmluaXRpbGl6ZUxvZ2luRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXQoKSB7XHJcbiAgICB0aGlzLnNob3dQcm9ncmVzc0JhciA9IGZhbHNlO1xyXG4gICAgdGhpcy5sb2dpbkZvcm0ucmVzZXQoKTtcclxuICAgIHRoaXMubG9naW5Gb3JtRGlyZWN0aXZlLnJlc2V0Rm9ybSgpO1xyXG4gICAgdGhpcy5sb2dpblNlcnZpY2UucmVzZXQoKTtcclxuICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICB0aGlzLnVzZXJNb2RlbCA9IG51bGw7XHJcbiAgICB0aGlzLnNob3cyRkFEaWFsb2cgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGluaXRpbGl6ZUxvZ2luRm9ybSgpIHtcclxuICAgIHRoaXMubG9naW5Gb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIHVzZXJuYW1lOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIHBhc3N3b3JkOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIGNhcHRjaGE6IFtudWxsXSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucmVzZXRGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIHVzZXJuYW1lOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIGNhcHRjaGE6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHVzZXJuYW1lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubG9naW5Gb3JtLmNvbnRyb2xzWyd1c2VybmFtZSddIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcclxuICB9XHJcblxyXG4gIGdldCBwYXNzd29yZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmxvZ2luRm9ybS5jb250cm9sc1sncGFzc3dvcmQnXSBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBnZXQgY2FwdGNoYSgpIHtcclxuICAgIHJldHVybiB0aGlzLmxvZ2luRm9ybS5jb250cm9sc1snY2FwdGNoYSddIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcclxuICB9XHJcblxyXG4gIGdldCByZXNldFVzZXJuYW1lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucmVzZXRGb3JtLmNvbnRyb2xzWyd1c2VybmFtZSddIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcclxuICB9XHJcblxyXG4gIGdldCByZXNldENhcHRjaGEoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5yZXNldEZvcm0uY29udHJvbHNbJ2NhcHRjaGEnXSBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBzaWduSW4oKSB7XHJcbiAgICBpZiAodGhpcy5sb2dpbkZvcm0uaW52YWxpZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgYXV0aDogYW55ID0ge307XHJcbiAgICBhdXRoLnVzZXJJZCA9IHRoaXMudXNlcm5hbWUudmFsdWU7XHJcbiAgICBhdXRoLnBhc3N3b3JkID0gdGhpcy5wYXNzd29yZC52YWx1ZTtcclxuXHJcbiAgICB0aGlzLnV0aWxcclxuICAgICAgLnNob3dMb2FkZXIoKVxyXG4gICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2dpblNlcnZpY2UubG9naW5BbmRDaGVja0Zvck1GQShhdXRoKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgICAgICBsZXQgdXNlck1vZGVsOiBVc2VyTW9kZWwgPSByZXM7XHJcbiAgICAgICAgICAgIHRoaXMubG9naW5TZXJ2aWNlXHJcbiAgICAgICAgICAgICAgLnNldFVzZXIodXNlck1vZGVsKVxyXG4gICAgICAgICAgICAgIC50aGVuKChyZXMpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMudXNlck1vZGVsID0gdXNlck1vZGVsO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zc24gPSB1c2VyTW9kZWw/LnNzbjtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9naW5TdWNjZXNzKCk7XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAuY2F0Y2goKGUpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXJyLmlzMkZBUmVxdWlyZWQgKyAnJyA9PSAndHJ1ZScpIHtcclxuICAgICAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICAgICAgICAgIHRoaXMudXNlck1vZGVsID0gZXJyO1xyXG4gICAgICAgICAgICAgIHRoaXMudXNlck1vZGVsLnVzZXJuYW1lID0gdGhpcy51c2VybmFtZS52YWx1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnVzZXJNb2RlbC5wYXNzd29yZCA9IHRoaXMucGFzc3dvcmQudmFsdWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93MkZBRGlhbG9nID0gdHJ1ZTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmKGVyci5kZXRhaWxzLmluY2x1ZGVzKFwiWW91ciBpZGVudGl0eSBtdXN0IGJlIHZlcmlmaWVkIGF0IFVTUFMgYnV0IHlvdXIgdGltZWZyYW1lIGhhcyBleHBpcmVkLlwiKSl7XHJcbiAgICAgICAgICAgICAvLyB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XHJcbiAgICAgICAgICAgICAvLyBcclxuICAgICAgICAgICAgIC8vIHRoaXMuZXJyb3IuZW1pdChlcnIpO1xyXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy50cmlnZ2VyVVNQU0ZvckV4cGlyZWQodGhpcy51c2VybmFtZS52YWx1ZSksIDIwMDApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdpbnNpZGUgZWxzZScsIGVycik7XHJcbiAgICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5lcnJvci5lbWl0KGVycik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlKSA9PiB7XHJcbiAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBlbmFibGVMZXhpc05leGlzKHRyaWdnZXJFeGl0QVBJID0gdHJ1ZSkge1xyXG4gICAgdGhpcy5zaG93MkZBRGlhbG9nID0gZmFsc2U7XHJcbiAgICBpZiAoIXRyaWdnZXJFeGl0QVBJKXtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLypcclxuICAgICAgdGhpcy5sbi5pc0xleGlzTmV4aXNJZFByb29maW5nRW5hYmxlZFdpdGhVc2VySWQodGhpcy51c2VyTW9kZWwudXNlcm5hbWUpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgLy8gSWYgbGV4aXMtbmV4aXMgaWQgcHJvb2ZpbmcgaXMgZW5hYmxlZFxyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIHRoaXMuaXNMZXhpc05leGlzUG9wdXBFbmFibGVkID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy51dGlsLnNob3dFcnJvcihcIlRoZSBjbGFpbWFudCBhY2NvdW50IHdpdGggdXNlciBuYW1lXCIgKyB0aGlzLnVzZXJNb2RlbC51c2VybmFtZSArIFwiIGhhcyBiZWVuIGJsb2NrZWQuIFBsZWFzZSBjb250YWN0IEtET0wuXCIpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICovXHJcbiAgfVxyXG5cclxuICBvbkxuU3VjY2Vzcygpe1xyXG4gICAgdGhpcy5pc0xleGlzTmV4aXNQb3B1cEVuYWJsZWQgPSBmYWxzZTtcclxuICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICB0aGlzLnV0aWwuc3VjY2VzcygnWW91ciBJRCBwcm9vZmluZyB3YXMgc3VjY2Vzc2Z1bC4gVHJ5IHJlLWxvZ2luIG9yIGNoYW5nZSB5b3VyIHBhc3N3b3JkIHRvIGNvbnRpbnVlIScpO1xyXG4gICAgaWYgKHRoaXMucmVzZXRGb3JtLmludmFsaWQpIHtcclxuICAgICAgdGhpcy5wYXNzd29yZC5yZXNldCgpO1xyXG4gICAgICB0aGlzLmxvZ2luRm9ybS5yZXNldCgpO1xyXG4gICAgICB0aGlzLmxvZ2luRm9ybURpcmVjdGl2ZS5yZXNldCgpO1xyXG4gICAgICB0aGlzLnJlc2V0Rm9ybS5yZXNldCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25MTkVycm9yKCl7XHJcbiAgICB0aGlzLnRyaWdnZXJVU1BTKCk7XHJcbiAgfVxyXG5cclxuICB0cmlnZ2VyVVNQUygpe1xyXG4gICAgdGhpcy5pc0xleGlzTmV4aXNQb3B1cEVuYWJsZWQgPSBmYWxzZTtcclxuICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICBjb25zb2xlLmxvZyhcInVzcHMgaXMgdHJpZ2dlcmVkXCIpXHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndXNlcklkJywgSlNPTi5zdHJpbmdpZnkodGhpcy51c2VyTW9kZWwudXNlcm5hbWUpKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvdXNwcy1yZWRpcmVjdCcsIFwiXCJdKSwgMTAwMCk7XHJcbiAgfVxyXG5cclxuICB0cmlnZ2VyVVNQU0ZvckV4cGlyZWQodXNlcm5hbWUgOiBTdHJpbmcpe1xyXG4gICAgdGhpcy5pc0xleGlzTmV4aXNQb3B1cEVuYWJsZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNVU1BTRXhwaXJlZD10cnVlOyAgXHJcbiAgICBjb25zb2xlLmxvZyhcInVzcHMgaXMgdHJpZ2dlcmVkXCIpXHJcbiAgIFxyXG4gICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndXNlcklkJywgSlNPTi5zdHJpbmdpZnkodXNlcm5hbWUpKTtcclxuICAgIC8vc2V0VGltZW91dCgoKSA9PiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy91c3BzLXJlZGlyZWN0JywgXCJcIl0pLCAxMDAwKTtcclxuICB9XHJcblxyXG4gIHRyaWdnZXJVU1BTRm9yRXhwaXJlZFByb2Nlc3MoKXtcclxuICAgIHRoaXMudXRpbC5zaG93TG9hZGVyKCk7XHJcbiAgICB0aGlzLmlzTGV4aXNOZXhpc1BvcHVwRW5hYmxlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1VTUFNFeHBpcmVkPXRydWU7ICBcclxuICAgIGNvbnNvbGUubG9nKFwidXNwcyBpcyB0cmlnZ2VyZWRcIilcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd1c2VySWQnLCBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInVzZXJJZFwiKSk7ICBcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvdXNwcy1yZWRpcmVjdCcsIFwiXCJdKSwgMTAwMCk7XHJcbiAgICB0aGlzLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuIGFzeW5jIGxvZ2luU3VjY2VzcygpIHtcclxuICAgIGxldCB1c2VyTW9kZWwgPSB0aGlzLmxvZ2luU2VydmljZS5nZXRVc2VyKCk7XHJcbiAgICB0aGlzLnVzZXJNb2RlbCA9IHVzZXJNb2RlbDtcclxuICAgIGlmICh1c2VyTW9kZWwuY2hhbmdlUHdkKSB7XHJcbiAgICAgIHRoaXMubmF2Lm5hdmlnYXRlUm9vdCgnY2hhbmdlLXBhc3N3b3JkJyk7XHJcbiAgICAgIHRoaXMuc2hvd1Byb2dyZXNzQmFyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXNMb2dpbkluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgdXNlck1vZGVsLmVtYWlsU3RhdHVzICE9ICdWRVJGJyAmJlxyXG4gICAgICB1c2VyTW9kZWwuaXNFbWFpbFZlcmlmaWNhdGlvblJlcXVpcmVkXHJcbiAgICApIHtcclxuICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgdGhpcy5zaG93RW1haWxWZXJpZmljYXRpb25EaWFsb2cgPSB0cnVlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHVzZXJNb2RlbC5pczJGQVJlcXVpcmVkKSB7XHJcbiAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgIHRoaXMuc2hvdzJGQURpYWxvZyA9IHRydWU7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpc0NhcGFjaXRvciA9IHRoaXMucGxhdGZvcm0uaXMoJ2NhcGFjaXRvcicpO1xyXG4gICAgaWYgKFxyXG4gICAgICB1c2VyTW9kZWwuZGF5c1RpbGxQYXNzd29yZEV4cGlyZSAmJlxyXG4gICAgICB1c2VyTW9kZWwuZGF5c1RpbGxQYXNzd29yZEV4cGlyZSA8IDEwICYmXHJcbiAgICAgIExpYkNvbnN0YW50cy5sZWdhY3lNZW51ID09ICd0cnVlJyAmJlxyXG4gICAgICBpc0NhcGFjaXRvclxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMubmF2Lm5hdmlnYXRlUm9vdCgnY2hhbmdlLXBhc3N3b3JkP2NoYW5nZVB3ZD10cnVlJyk7XHJcbiAgICAgIHRoaXMuc2hvd1Byb2dyZXNzQmFyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXNMb2dpbkluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSAgICBcclxuICAgIGlmKHVzZXJNb2RlbC5zc24hPW51bGwpe1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkFJQyBGTE9XIGluIExvZ2luU2VydmljZVwiKTsgICAgXHJcbiAgICAgY29uc3QgZGF0YT0gYXdhaXQgdGhpcy53Y1NlcnZpY2UuZ2VuZXJhdGVFdmVudEZvclJlb3BlbkFpY0Zsb3codXNlck1vZGVsLnNzbilcclxuICAgICAgIC50aGVuKGFzeW5jID0+eyAgICAgICAgICBcclxuICAgICAgIH1cclxuXHJcbiAgICAgKS5jYXRjaChhc3luYyBlcnIgPT57XHJcbiAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgIHRoaXMudXRpbC5lcnJvckhhbmRsZXIoZXJyKTtcclxuICAgICB9KSAgXHJcbiAgfVxyXG4gLyogICBpdCB3YXMgY29tbWVudGVkICAgZm9yIFBHTFAtMjI4MSAgIFxyXG4gaWYodXNlck1vZGVsLnNzbiE9bnVsbCl7XHJcbiAgICBjb25zb2xlLmxvZyhcIm92ZXJwYXltZW50IExvZ2luU2VydmljZVwiKTsgICAgXHJcbiAgIGNvbnN0IGRhdGE9IGF3YWl0IHRoaXMub3ZwU2VydmljZS50cmlnZ2VyUmVwYXltZW50RXZlbnQodXNlck1vZGVsLnNzbilcclxuICAgICAudGhlbihhc3luYyA9PnsgICAgICAgIFxyXG4gICAgIH1cclxuICAgKS5jYXRjaChhc3luYyBlcnIgPT57XHJcbiAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICB9KSAgXHJcbn0qL1xyXG5cclxuICAgIGlmICh1c2VyTW9kZWwuY2xhaW1hbnRJZCAhPSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLm92cFNlcnZpY2UudHJpZ2dlck92ZXJwYXltZW50RXZlbnQoKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHgpID0+IHt9LFxyXG4gICAgICAgIChlcnIpID0+IHtcclxuICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh1c2VyTW9kZWwuY2xhaW1hbnRJZCAhPSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLm92cFNlcnZpY2UudHJpZ2dlck92ZXJwYXltZW50RXZlbnRIaXN0b3J5KCkuc3Vic2NyaWJlKFxyXG4gICAgICAgICh4KSA9PiB7fSxcclxuICAgICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2hvdzJGQURpYWxvZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zdWNjZXNzLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHNob3dEaWFsb2coKSB7XHJcbiAgICB0aGlzLmRpc3BsYXlEaWFsb2cgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgaW5pdGlhdGVGb3Jnb3RQYXNzd29yZCgpIHtcclxuICAgIGlmICh0aGlzLnJlc2V0Rm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIHRoaXMucGFzc3dvcmQucmVzZXQoKTtcclxuICAgICAgdGhpcy5sb2dpbkZvcm0ucmVzZXQoKTtcclxuICAgICAgdGhpcy5sb2dpbkZvcm1EaXJlY3RpdmUucmVzZXQoKTtcclxuICAgICAgdGhpcy5yZXNldEZvcm0ucmVzZXQoKTtcclxuICAgICAgdGhpcy5yZXNldEZvcm1EaXJlY3RpdmUucmVzZXQoKTtcclxuICAgICAgdGhpcy5yZXNldFVzZXJuYW1lLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgIHRoaXMucmVzZXRDYXB0Y2hhLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudXRpbC5zaG93TG9hZGVyKCkudGhlbigoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9naW5TZXJ2aWNlXHJcbiAgICAgICAgLmluaXRpYXRlRm9yZ290UGFzc3dvcmRWMih0aGlzLnJlc2V0VXNlcm5hbWUudmFsdWUpXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgIChyZXMpID0+IHtcclxuICAgICAgICAgICAgaWYobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZVwiKSA9PT0gXCJlc1wiKXtcclxuICAgICAgICAgICAgICB0aGlzLnV0aWwuc3VjY2VzcygnU2UgaGEgcmVzdGFibGVjaWRvIHN1IGNvbnRyYXNlw7FhLiBSZWNpYmlyw6EgdW4gY29ycmVvIGVsZWN0csOzbmljbyBjb24gdW5hIGNvbnRyYXNlw7FhIHRlbXBvcmFsIGUgaW5zdHJ1Y2Npb25lcyBwYXJhIGluaWNpYXIgc2VzacOzbi4nKTtcclxuICAgICAgICAgICAgfSBlbHNle1xyXG4gICAgICAgICAgICAgIHRoaXMudXRpbC5zdWNjZXNzKCdZb3VyIHBhc3N3b3JkIGhhcyBiZWVuIHJlc2V0LiBZb3Ugc2hvdWxkIHJlY2VpdmUgYW4gZW1haWwgd2l0aCBhIHRlbXBvcmFyeSBwYXNzd29yZCBhbmQgbG9naW4gaW5zdHJ1Y3Rpb25zLicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMubG9naW5Gb3JtLnJlc2V0KCk7XHJcbiAgICAgICAgICAgIHRoaXMubG9naW5TZXJ2aWNlLnJlc2V0KCk7XHJcbiAgICAgICAgICAgIHRoaXMucmVzZXRGb3JtRGlyZWN0aXZlLnJlc2V0KCk7XHJcbiAgICAgICAgICAgIHRoaXMucmVzZXRVc2VybmFtZS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dGb3Jnb3RQYXNzd29yZCA9ICF0aGlzLnNob3dGb3Jnb3RQYXNzd29yZDtcclxuICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXRpbC5lcnJvckhhbmRsZXIoZXJyKTtcclxuICAgICAgICAgICAgdGhpcy5sb2dpbkZvcm0ucmVzZXQoKTtcclxuICAgICAgICAgICAgdGhpcy5sb2dpblNlcnZpY2UucmVzZXQoKTtcclxuICAgICAgICAgICAgdGhpcy5yZXNldEZvcm1EaXJlY3RpdmUucmVzZXRGb3JtKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0ZvcmdvdFBhc3N3b3JkID0gIXRoaXMuc2hvd0ZvcmdvdFBhc3N3b3JkO1xyXG4gICAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvZ291dCgpIHtcclxuICAgIHRoaXMubG9naW5TZXJ2aWNlLmxvZ291dCgpO1xyXG4gICAgdGhpcy5zaG93RW1haWxWZXJpZmljYXRpb25EaWFsb2cgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGVtYWlsVmVyaWZpY2F0aW9uU3VjY2VzcygpIHtcclxuICAgIHRoaXMuc2hvd0VtYWlsVmVyaWZpY2F0aW9uRGlhbG9nID0gZmFsc2U7XHJcbiAgICB0aGlzLnN1Y2Nlc3MuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UoKSB7ICBcclxuICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICB0aGlzLmlzVVNQU0V4cGlyZWQgPSBmYWxzZTsgICBcclxuICAgXHJcbiAgfVxyXG5cclxuICBnZXQgdXNlcklkUmVxdWlyZWQoKXtcclxuICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdjb21tb24udXNlci5pZC5yZXF1aXJlZCcpO1xyXG4gIH1cclxuICBcclxuICBnZXQgdXNlcklkTWluaW11bUxlbmd0aCgpe1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdjb21tb24udXNlci5pZC5taW5sZW5ndGgnKTtcclxuICB9XHJcblxyXG4gIGdldCBwYXNzd29yZFJlcXVpcmVkKCl7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2NvbW1vbi5wYXNzd29yZC5yZXF1aXJlZCcpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNhcHRjaGFSZXF1aXJlZCgpe1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdjb21tb24uY2FwdGNoYS5yZXF1aXJlZCcpO1xyXG4gIH1cclxufVxyXG4iLCI8cC1kaWFsb2cgWyh2aXNpYmxlKV09XCJkaXNwbGF5RGlhbG9nXCIgW21vZGFsXT1cInRydWVcIiBhcHBlbmRUbz1cImJvZHlcIj5cclxuICAgIDxoNCBjbGFzcz1cImhlYWRpbmdcIj57e1wiY29tbW9uLm1lc3NhZ2VcIiB8IHRyYW5zbGF0ZX19PC9oND5cclxuICAgIHt7XCJsb2dpbi5mb3Jnb3QuaWQuYXNzaXN0XCIgfCB0cmFuc2xhdGV9fVxyXG4gICAgPGRpdiAqbmdJZj1cInV0aWwuaXNTdGF0ZSgnTVMnKVwiPlxyXG4gICAgICAgIDx1bD5cclxuICAgICAgICAgICAgPGxpPkVtcGxveWVycyBtYXkgY2FsbCA2MDEtNDkzLTk0Mjc8L2xpPlxyXG4gICAgICAgICAgICA8bGk+Q2xhaW1hbnRzIG1heSBjYWxsIDYwMS00OTMtOTQyNy48L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJ1dGlsLmlzU3RhdGUoJ01FJylcIj5cclxuICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgIDxsaT5FbXBsb3llcnMgbWF5IGNhbGwgMjA3LTYyMS01MTIwPC9saT5cclxuICAgICAgICAgICAgPGxpPkNsYWltYW50cyBtYXkgY2FsbCAxLTgwMC01OTMtNzY2MDwvbGk+XHJcbiAgICAgICAgPC91bD5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSB0b2RvOiBnZXQgS1MgbnVtYmVyLS0+XHJcbiAgICA8YnIgLz5cclxuICAgIDxwLWZvb3Rlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiB0eXBlPVwic3VibWl0XCIgKGNsaWNrKT1cImRpc3BsYXlEaWFsb2cgPSAhZGlzcGxheURpYWxvZ1wiIGNvbG9yPVwic3VjY2Vzc1wiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJjbG9zZS1zaGFycFwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgICB7e1wiY29tbW9uLmNsb3NlXCIgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L3AtZm9vdGVyPlxyXG48L3AtZGlhbG9nPlxyXG48YXBwLW1mYTIgKm5nSWY9XCJpc090cE1vZGFsRW5hYmxlZFwiIFsoZGlzcGxheSldPVwiaXNPdHBNb2RhbEVuYWJsZWRcIiBbcmV0dXJuaW5nVXNlcl09XCJpc1JldHVybmluZ1VzZXJcIiBbdmVyaWZpY2F0aW9uUHJlZmVyZW5jZV09XCJ2ZXJpZmljYXRpb25QcmVmZXJlbmNlXCIgW3Nzbl09XCJzc25cIiAoc3VjY2Vzcyk9XCJsb2dpblN1Y2Nlc3MoKVwiIChjbGVhcik9XCJlbmFibGVMZXhpc05leGlzKClcIj48L2FwcC1tZmEyPlxyXG48YXBwLWxleGlzLW5leGlzICpuZ0lmPVwiaXNMZXhpc05leGlzUG9wdXBFbmFibGVkXCIgW2Rpc3BsYXldPVwiaXNMZXhpc05leGlzUG9wdXBFbmFibGVkXCIgW3VzZXJNb2RlbF0gPSBcInVzZXJNb2RlbFwiIChzdWNjZXNzKT1cIm9uTG5TdWNjZXNzKClcIiAoZXJyb3IpPVwib25MTkVycm9yKClcIiAodXNwcyk9XCJ0cmlnZ2VyVVNQUygpXCI+PC9hcHAtbGV4aXMtbmV4aXM+XHJcbjxhcHAtbWZhLXBvcHVwIFsoZGlzcGxheSldPVwic2hvdzJGQURpYWxvZ1wiIFt1c2VyXT1cInVzZXJNb2RlbFwiIFtyZXR1cm5pbmdVc2VyXT1cImlzUmV0dXJuaW5nVXNlclwiIFtoZWFkaW5nXT1cIm1mYUxvZ2luSGVhZGVyXCIgKHN1Y2Nlc3MpPVwibG9naW5TdWNjZXNzKClcIiAoY2xlYXIpPVwiZW5hYmxlTGV4aXNOZXhpcygkZXZlbnQpXCI+PC9hcHAtbWZhLXBvcHVwPlxyXG5cclxuXHJcbjxmb3JtIFtmb3JtR3JvdXBdPVwibG9naW5Gb3JtXCIgI2xvZ2luRm9ybURpcmVjdGl2ZT1cIm5nRm9ybVwiICpuZ0lmPVwiIXNob3dGb3Jnb3RQYXNzd29yZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInAtZmx1aWQgcC1mb3JtZ3JpZCBwLWdyaWRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgaW9uLXRleHQtbGVmdFwiIHN0eWxlPVwid2lkdGg6IC13ZWJraXQtZmlsbC1hdmFpbGFibGU7XCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJ1c2VyUHJvZmlsZUlkXCIgW3N0eWxlLmZvbnQtc2l6ZV09XCJmb250U2l6ZVwiIFtzdHlsZS5jb2xvcl09XCJjb2xvclwiPnt7J2xvZ2luLnVzZXIuaWQnIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJ1c2VyUHJvZmlsZUlkXCIgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IG1heGxlbmd0aD1cIjMwXCIgbWlubGVuZ3RoPVwiNVwiIFtmb3JtQ29udHJvbF09XCJ1c2VybmFtZVwiPlxyXG4gICAgICAgICAgICA8YXBwLWVycm9yIFtmaWVsZF09J3VzZXJuYW1lJyBbZm9ybV09XCJsb2dpbkZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogdXNlcklkUmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgICBtaW5sZW5ndGg6IHVzZXJJZE1pbmltdW1MZW5ndGhcclxuICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgaW9uLXRleHQtbGVmdFwiIHN0eWxlPVwid2lkdGg6IC13ZWJraXQtZmlsbC1hdmFpbGFibGU7XCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJ1c2VyUHJvZmlsZVBhc3N3b3JkXCIgW3N0eWxlLmZvbnQtc2l6ZV09XCJmb250U2l6ZVwiIFtzdHlsZS5jb2xvcl09XCJjb2xvclwiPnt7J2xvZ2luLnBhc3N3b3JkLmNhc2Uuc2Vuc2l0aXZlJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgPHAtcGFzc3dvcmQgW2Zvcm1Db250cm9sXT1cInBhc3N3b3JkXCIgaW5wdXRJZD1cInVzZXJQcm9maWxlUGFzc3dvcmRcIiBbdG9nZ2xlTWFza109J3RydWUnIFtmZWVkYmFja109J2ZhbHNlJz48L3AtcGFzc3dvcmQ+XHJcbiAgICAgICAgICAgIDxhcHAtZXJyb3IgW2ZpZWxkXT0ncGFzc3dvcmQnIFtmb3JtXT1cImxvZ2luRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBwYXNzd29yZFJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW9uLXBhZGRpbmctc3RhcnQgaW9uLXBhZGRpbmctZW5kIGlvbi10ZXh0LWxlZnRcIiBzdHlsZT1cIm1hcmdpbi10b3A6IC04cHg7XCIgKm5nSWY9XCJmYWxzZVwiPlxyXG4gICAgICAgIDxhcHAtY2FwdGNoYSBbZm9ybUNvbnRyb2xdPVwiY2FwdGNoYVwiPjwvYXBwLWNhcHRjaGE+XHJcbiAgICAgICAgPGFwcC1lcnJvciBbZmllbGRdPSdjYXB0Y2hhJyBbZm9ybV09XCJsb2dpbkZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgcmVxdWlyZWQ6IGNhcHRjaGFSZXF1aXJlZFxyXG4gICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInAtZmx1aWRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW9uLXRleHQtcmlnaHRcIj5cclxuICAgICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cInNpZ25JbigpXCIgY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cInN1Ym1pdFwiIHNoYXBlPVwicm91bmRcIiBmaWxsPVwib3V0bGluZVwiIGNsYXNzPVwid2hpdGUtYmFja2dyb3VuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJwb3dlci1vdXRsaW5lXCIgc2xvdD1cInN0YXJ0XCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgICAgIHt7J2xvZ2luLmxvZ2luJyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1wYWRkaW5nLXRvcFwiPlxyXG4gICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWxlZnRcIj5cclxuICAgICAgICAgICAgICAgIDxhIHRhYmluZGV4PVwiMFwiIHJvbGU9XCJidXR0b25cIiBjbGFzcz1cImxpbmtcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTRweDtcIiAoY2xpY2spPVwic2hvd0RpYWxvZygpXCIgKGtleWRvd24uZW50ZXIpPVwic2hvd0RpYWxvZygpXCI+e3snbG9naW4udXNlci5pZC5mb3Jnb3QnIHwgdHJhbnNsYXRlfX08L2E+XHJcbiAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPGEgdGFiaW5kZXg9XCIwXCIgcm9sZT1cImJ1dHRvblwiIGNsYXNzPVwibGlua1wiIChjbGljayk9XCJzaG93Rm9yZ290UGFzc3dvcmQgPSAhc2hvd0ZvcmdvdFBhc3N3b3JkXCIgKGtleWRvd24uZW50ZXIpPVwic2hvd0ZvcmdvdFBhc3N3b3JkID0gIXNob3dGb3Jnb3RQYXNzd29yZFwiIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiPnt7J2xvZ2luLnBhc3N3b3JkLmZvcmdvdCcgfCB0cmFuc2xhdGV9fTwvYT5cclxuICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgIDwvaW9uLXJvdz5cclxuICAgIDwvZGl2PlxyXG48L2Zvcm0+XHJcblxyXG48Zm9ybSAqbmdJZj1cInNob3dGb3Jnb3RQYXNzd29yZFwiIFtmb3JtR3JvdXBdPVwicmVzZXRGb3JtXCIgI3Jlc2V0Rm9ybURpcmVjdGl2ZT1cIm5nRm9ybVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInAtZmx1aWQgcC1mb3JtZ3JpZCBwLWdyaWRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgaW9uLXRleHQtbGVmdFwiIHN0eWxlPVwid2lkdGg6IC13ZWJraXQtZmlsbC1hdmFpbGFibGU7XCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJ1c2VyUHJvZmlsZUlkXCIgW3N0eWxlLmZvbnQtc2l6ZV09XCJmb250U2l6ZVwiIFtzdHlsZS5jb2xvcl09XCJjb2xvclwiPnt7J2xvZ2luLnVzZXIuaWQnIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJ1c2VyUHJvZmlsZUlkXCIgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IG1heGxlbmd0aD1cIjMwXCIgbWlubGVuZ3RoPVwiNVwiIFtmb3JtQ29udHJvbF09XCJyZXNldFVzZXJuYW1lXCI+XHJcbiAgICAgICAgICAgIDxhcHAtZXJyb3IgW2ZpZWxkXT0ncmVzZXRVc2VybmFtZScgW2Zvcm1dPVwicmVzZXRGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICByZXF1aXJlZDogdXNlcklkUmVxdWlyZWQsXHJcbiAgICAgICAgICAgIG1pbmxlbmd0aDogdXNlcklkTWluaW11bUxlbmd0aFxyXG4gICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpb24tdGV4dC1sZWZ0XCI+XHJcbiAgICAgICAgICAgIDxhcHAtY2FwdGNoYSBbZm9ybUNvbnRyb2xdPVwicmVzZXRDYXB0Y2hhXCI+PC9hcHAtY2FwdGNoYT5cclxuICAgICAgICAgICAgPGFwcC1lcnJvciBbZmllbGRdPSdyZXNldENhcHRjaGEnIFtmb3JtXT1cInJlc2V0Rm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgIHJlcXVpcmVkOiBjYXB0Y2hhUmVxdWlyZWRcclxuICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJwLWZsdWlkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlvbi10ZXh0LXJpZ2h0XCI+XHJcbiAgICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJzaG93Rm9yZ290UGFzc3dvcmQgPSAhc2hvd0ZvcmdvdFBhc3N3b3JkXCIgY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cInN1Ym1pdFwiIHNoYXBlPVwicm91bmRcIiBmaWxsPVwib3V0bGluZVwiIGNsYXNzPVwid2hpdGUtYmFja2dyb3VuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJhcnJvdy1iYWNrLW91dGxpbmVcIiBzbG90PVwic3RhcnRcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgICAge3snbG9naW4ubG9naW4nIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImluaXRpYXRlRm9yZ290UGFzc3dvcmQoKVwiIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJzdWJtaXRcIiBzaGFwZT1cInJvdW5kXCIgZmlsbD1cIm91dGxpbmVcIlxyXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9XCJ7e3Jlc2V0Rm9ybS5pbnZhbGlkfX1cIiBjbGFzcz1cIndoaXRlLWJhY2tncm91bmRcIj5cclxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwibWFpbC1vdXRsaW5lXCIgc2xvdD1cInN0YXJ0XCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgICAgIHt7J2xvZ2luLnNlbmQuZW1haWwnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgICAgXHJcbjwvZm9ybT5cclxuXHJcbjxwLWRpYWxvZyBbdmlzaWJsZV09XCJpc1VTUFNFeHBpcmVkXCIgW21vZGFsXT1cInRydWVcIiBhcHBlbmRUbz1cImJvZHlcIiBwb3NpdGlvbj1cInRvcFwiIFticmVha3BvaW50c109XCJ7JzEyMDBweCc6ICc2NjBweCcsICc5OTJweCc6ICc2NjBweCcsICc3NjhweCc6ICc2NjBweCcsICc1NzZweCc6ICcxMDB2dyd9XCIgW3N0eWxlXT1cInt3aWR0aDogJzQ1dncnfVwiXHJcbltiYXNlWkluZGV4XT1cIjUwMDBcIiBbZHJhZ2dhYmxlXT1cImZhbHNlXCIgW3Jlc2l6YWJsZV09XCJmYWxzZVwiIGNsb3NlT25Fc2NhcGU9XCJmYWxzZVwiPlxyXG4gICAge3sndXNwcy5leHBkLnBvcHVwLmhlYWRpbmcnIHwgdHJhbnNsYXRlfX08YnIvPlxyXG4gICAgXHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZm9vdGVyXCI+XHJcbiAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIHR5cGU9XCJzdWJtaXRcIiBmaWxsPVwib3V0bGluZVwiIChjbGljayk9XCJjbG9zZSgpXCI+XHJcbiAgICAgICAgICB7eyd1c3BzLmV4cGQucG9wdXAuY2FuY2VsJyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiB0eXBlPVwic3VibWl0XCIgZmlsbD1cInNvbGlkXCIgKGNsaWNrKT1cInRyaWdnZXJVU1BTRm9yRXhwaXJlZFByb2Nlc3MoKVwiPlxyXG4gICAgICAgICAge3sndXNwcy5leHBkLnBvcHVwLnByb2Nlc3MnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L3AtZGlhbG9nPlxyXG5cclxuPGFwcC1lbWFpbC11cGRhdGUgW2VtYWlsXT1cInVzZXJNb2RlbC5lbWFpbElkXCIgKm5nSWY9XCJzaG93RW1haWxWZXJpZmljYXRpb25EaWFsb2dcIiAob25DbG9zZSk9XCJsb2dvdXQoKVwiIChvblN1Y2Nlc3MpPVwiZW1haWxWZXJpZmljYXRpb25TdWNjZXNzKClcIj48L2FwcC1lbWFpbC11cGRhdGU+Il19