@ksremp/ngx-ksremp-app-lib 1.0.27 → 1.0.28

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.
@@ -21,23 +21,23 @@ import * as i13 from "../dropdown/dropdown.component";
21
21
  const _c0 = ["alienDocTypeFormDirective"];
22
22
  const _c1 = ["expDateCal"];
23
23
  const _c2 = ["expDateInput"];
24
- function AlienDoctypeComponent_div_12_div_1_ng_container_3_Template(rf, ctx) { if (rf & 1) {
24
+ function AlienDoctypeComponent_div_13_div_1_ng_container_3_Template(rf, ctx) { if (rf & 1) {
25
25
  i0.ɵɵelementContainer(0);
26
26
  } }
27
- function AlienDoctypeComponent_div_12_div_1_ng_container_5_Template(rf, ctx) { if (rf & 1) {
27
+ function AlienDoctypeComponent_div_13_div_1_ng_container_5_Template(rf, ctx) { if (rf & 1) {
28
28
  i0.ɵɵelementContainer(0);
29
29
  } }
30
- function AlienDoctypeComponent_div_12_div_1_Template(rf, ctx) { if (rf & 1) {
30
+ function AlienDoctypeComponent_div_13_div_1_Template(rf, ctx) { if (rf & 1) {
31
31
  i0.ɵɵelementStart(0, "div")(1, "ion-row")(2, "ion-col", 3);
32
- i0.ɵɵtemplate(3, AlienDoctypeComponent_div_12_div_1_ng_container_3_Template, 1, 0, "ng-container", 19);
32
+ i0.ɵɵtemplate(3, AlienDoctypeComponent_div_13_div_1_ng_container_3_Template, 1, 0, "ng-container", 19);
33
33
  i0.ɵɵelementEnd();
34
34
  i0.ɵɵelementStart(4, "ion-col", 3);
35
- i0.ɵɵtemplate(5, AlienDoctypeComponent_div_12_div_1_ng_container_5_Template, 1, 0, "ng-container", 19);
35
+ i0.ɵɵtemplate(5, AlienDoctypeComponent_div_13_div_1_ng_container_5_Template, 1, 0, "ng-container", 19);
36
36
  i0.ɵɵelementEnd()()();
37
37
  } if (rf & 2) {
38
38
  const ctx_r22 = i0.ɵɵnextContext(2);
39
- const _r3 = i0.ɵɵreference(14);
40
- const _r5 = i0.ɵɵreference(16);
39
+ const _r3 = i0.ɵɵreference(15);
40
+ const _r5 = i0.ɵɵreference(17);
41
41
  i0.ɵɵadvance(2);
42
42
  i0.ɵɵproperty("ngClass", ctx_r22.fromPopup ? "col" : "col col-fit-content");
43
43
  i0.ɵɵadvance(1);
@@ -47,30 +47,30 @@ function AlienDoctypeComponent_div_12_div_1_Template(rf, ctx) { if (rf & 1) {
47
47
  i0.ɵɵadvance(1);
48
48
  i0.ɵɵproperty("ngTemplateOutlet", _r5);
49
49
  } }
50
- function AlienDoctypeComponent_div_12_div_2_ng_container_3_Template(rf, ctx) { if (rf & 1) {
50
+ function AlienDoctypeComponent_div_13_div_2_ng_container_3_Template(rf, ctx) { if (rf & 1) {
51
51
  i0.ɵɵelementContainer(0);
52
52
  } }
53
- function AlienDoctypeComponent_div_12_div_2_ng_container_5_Template(rf, ctx) { if (rf & 1) {
53
+ function AlienDoctypeComponent_div_13_div_2_ng_container_5_Template(rf, ctx) { if (rf & 1) {
54
54
  i0.ɵɵelementContainer(0);
55
55
  } }
56
- function AlienDoctypeComponent_div_12_div_2_ng_container_7_Template(rf, ctx) { if (rf & 1) {
56
+ function AlienDoctypeComponent_div_13_div_2_ng_container_7_Template(rf, ctx) { if (rf & 1) {
57
57
  i0.ɵɵelementContainer(0);
58
58
  } }
59
- function AlienDoctypeComponent_div_12_div_2_Template(rf, ctx) { if (rf & 1) {
59
+ function AlienDoctypeComponent_div_13_div_2_Template(rf, ctx) { if (rf & 1) {
60
60
  i0.ɵɵelementStart(0, "div")(1, "ion-row")(2, "ion-col", 3);
61
- i0.ɵɵtemplate(3, AlienDoctypeComponent_div_12_div_2_ng_container_3_Template, 1, 0, "ng-container", 19);
61
+ i0.ɵɵtemplate(3, AlienDoctypeComponent_div_13_div_2_ng_container_3_Template, 1, 0, "ng-container", 19);
62
62
  i0.ɵɵelementEnd();
63
63
  i0.ɵɵelementStart(4, "ion-col", 3);
64
- i0.ɵɵtemplate(5, AlienDoctypeComponent_div_12_div_2_ng_container_5_Template, 1, 0, "ng-container", 19);
64
+ i0.ɵɵtemplate(5, AlienDoctypeComponent_div_13_div_2_ng_container_5_Template, 1, 0, "ng-container", 19);
65
65
  i0.ɵɵelementEnd();
66
66
  i0.ɵɵelementStart(6, "ion-col", 3);
67
- i0.ɵɵtemplate(7, AlienDoctypeComponent_div_12_div_2_ng_container_7_Template, 1, 0, "ng-container", 19);
67
+ i0.ɵɵtemplate(7, AlienDoctypeComponent_div_13_div_2_ng_container_7_Template, 1, 0, "ng-container", 19);
68
68
  i0.ɵɵelementEnd()()();
69
69
  } if (rf & 2) {
70
70
  const ctx_r23 = i0.ɵɵnextContext(2);
71
- const _r3 = i0.ɵɵreference(14);
72
- const _r7 = i0.ɵɵreference(18);
73
- const _r5 = i0.ɵɵreference(16);
71
+ const _r3 = i0.ɵɵreference(15);
72
+ const _r7 = i0.ɵɵreference(19);
73
+ const _r5 = i0.ɵɵreference(17);
74
74
  i0.ɵɵadvance(2);
75
75
  i0.ɵɵproperty("ngClass", ctx_r23.fromPopup ? "col" : "col col-fit-content");
76
76
  i0.ɵɵadvance(1);
@@ -84,46 +84,46 @@ function AlienDoctypeComponent_div_12_div_2_Template(rf, ctx) { if (rf & 1) {
84
84
  i0.ɵɵadvance(1);
85
85
  i0.ɵɵproperty("ngTemplateOutlet", _r5);
86
86
  } }
87
- function AlienDoctypeComponent_div_12_div_3_ng_container_3_Template(rf, ctx) { if (rf & 1) {
87
+ function AlienDoctypeComponent_div_13_div_3_ng_container_3_Template(rf, ctx) { if (rf & 1) {
88
88
  i0.ɵɵelementContainer(0);
89
89
  } }
90
- function AlienDoctypeComponent_div_12_div_3_ion_col_4_ng_container_1_Template(rf, ctx) { if (rf & 1) {
90
+ function AlienDoctypeComponent_div_13_div_3_ion_col_4_ng_container_1_Template(rf, ctx) { if (rf & 1) {
91
91
  i0.ɵɵelementContainer(0);
92
92
  } }
93
- function AlienDoctypeComponent_div_12_div_3_ion_col_4_Template(rf, ctx) { if (rf & 1) {
93
+ function AlienDoctypeComponent_div_13_div_3_ion_col_4_Template(rf, ctx) { if (rf & 1) {
94
94
  i0.ɵɵelementStart(0, "ion-col", 3);
95
- i0.ɵɵtemplate(1, AlienDoctypeComponent_div_12_div_3_ion_col_4_ng_container_1_Template, 1, 0, "ng-container", 19);
95
+ i0.ɵɵtemplate(1, AlienDoctypeComponent_div_13_div_3_ion_col_4_ng_container_1_Template, 1, 0, "ng-container", 19);
96
96
  i0.ɵɵelementEnd();
97
97
  } if (rf & 2) {
98
98
  const ctx_r35 = i0.ɵɵnextContext(3);
99
- const _r19 = i0.ɵɵreference(30);
99
+ const _r19 = i0.ɵɵreference(31);
100
100
  i0.ɵɵproperty("ngClass", ctx_r35.fromPopup ? "col" : "col col-fit-content");
101
101
  i0.ɵɵadvance(1);
102
102
  i0.ɵɵproperty("ngTemplateOutlet", _r19);
103
103
  } }
104
- function AlienDoctypeComponent_div_12_div_3_ion_col_5_ng_container_1_Template(rf, ctx) { if (rf & 1) {
104
+ function AlienDoctypeComponent_div_13_div_3_ion_col_5_ng_container_1_Template(rf, ctx) { if (rf & 1) {
105
105
  i0.ɵɵelementContainer(0);
106
106
  } }
107
- function AlienDoctypeComponent_div_12_div_3_ion_col_5_Template(rf, ctx) { if (rf & 1) {
107
+ function AlienDoctypeComponent_div_13_div_3_ion_col_5_Template(rf, ctx) { if (rf & 1) {
108
108
  i0.ɵɵelementStart(0, "ion-col", 3);
109
- i0.ɵɵtemplate(1, AlienDoctypeComponent_div_12_div_3_ion_col_5_ng_container_1_Template, 1, 0, "ng-container", 19);
109
+ i0.ɵɵtemplate(1, AlienDoctypeComponent_div_13_div_3_ion_col_5_ng_container_1_Template, 1, 0, "ng-container", 19);
110
110
  i0.ɵɵelementEnd();
111
111
  } if (rf & 2) {
112
112
  const ctx_r36 = i0.ɵɵnextContext(3);
113
- const _r21 = i0.ɵɵreference(32);
113
+ const _r21 = i0.ɵɵreference(33);
114
114
  i0.ɵɵproperty("ngClass", ctx_r36.fromPopup ? "col" : "col col-fit-content");
115
115
  i0.ɵɵadvance(1);
116
116
  i0.ɵɵproperty("ngTemplateOutlet", _r21);
117
117
  } }
118
- function AlienDoctypeComponent_div_12_div_3_Template(rf, ctx) { if (rf & 1) {
118
+ function AlienDoctypeComponent_div_13_div_3_Template(rf, ctx) { if (rf & 1) {
119
119
  i0.ɵɵelementStart(0, "div")(1, "ion-row")(2, "ion-col", 3);
120
- i0.ɵɵtemplate(3, AlienDoctypeComponent_div_12_div_3_ng_container_3_Template, 1, 0, "ng-container", 19);
120
+ i0.ɵɵtemplate(3, AlienDoctypeComponent_div_13_div_3_ng_container_3_Template, 1, 0, "ng-container", 19);
121
121
  i0.ɵɵelementEnd();
122
- i0.ɵɵtemplate(4, AlienDoctypeComponent_div_12_div_3_ion_col_4_Template, 2, 2, "ion-col", 20)(5, AlienDoctypeComponent_div_12_div_3_ion_col_5_Template, 2, 2, "ion-col", 20);
122
+ i0.ɵɵtemplate(4, AlienDoctypeComponent_div_13_div_3_ion_col_4_Template, 2, 2, "ion-col", 20)(5, AlienDoctypeComponent_div_13_div_3_ion_col_5_Template, 2, 2, "ion-col", 20);
123
123
  i0.ɵɵelementEnd()();
124
124
  } if (rf & 2) {
125
125
  const ctx_r24 = i0.ɵɵnextContext(2);
126
- const _r3 = i0.ɵɵreference(14);
126
+ const _r3 = i0.ɵɵreference(15);
127
127
  i0.ɵɵadvance(2);
128
128
  i0.ɵɵproperty("ngClass", ctx_r24.fromPopup ? "col" : "col col-fit-content");
129
129
  i0.ɵɵadvance(1);
@@ -133,77 +133,77 @@ function AlienDoctypeComponent_div_12_div_3_Template(rf, ctx) { if (rf & 1) {
133
133
  i0.ɵɵadvance(1);
134
134
  i0.ɵɵproperty("ngIf", ctx_r24.selectedKey === "CECI");
135
135
  } }
136
- function AlienDoctypeComponent_div_12_div_4_ng_container_3_Template(rf, ctx) { if (rf & 1) {
136
+ function AlienDoctypeComponent_div_13_div_4_ng_container_3_Template(rf, ctx) { if (rf & 1) {
137
137
  i0.ɵɵelementContainer(0);
138
138
  } }
139
- function AlienDoctypeComponent_div_12_div_4_ng_container_5_Template(rf, ctx) { if (rf & 1) {
139
+ function AlienDoctypeComponent_div_13_div_4_ng_container_5_Template(rf, ctx) { if (rf & 1) {
140
140
  i0.ɵɵelementContainer(0);
141
141
  } }
142
- function AlienDoctypeComponent_div_12_div_4_ion_col_6_ng_container_1_Template(rf, ctx) { if (rf & 1) {
142
+ function AlienDoctypeComponent_div_13_div_4_ion_col_6_ng_container_1_Template(rf, ctx) { if (rf & 1) {
143
143
  i0.ɵɵelementContainer(0);
144
144
  } }
145
- function AlienDoctypeComponent_div_12_div_4_ion_col_6_Template(rf, ctx) { if (rf & 1) {
145
+ function AlienDoctypeComponent_div_13_div_4_ion_col_6_Template(rf, ctx) { if (rf & 1) {
146
146
  i0.ɵɵelementStart(0, "ion-col", 3);
147
- i0.ɵɵtemplate(1, AlienDoctypeComponent_div_12_div_4_ion_col_6_ng_container_1_Template, 1, 0, "ng-container", 19);
147
+ i0.ɵɵtemplate(1, AlienDoctypeComponent_div_13_div_4_ion_col_6_ng_container_1_Template, 1, 0, "ng-container", 19);
148
148
  i0.ɵɵelementEnd();
149
149
  } if (rf & 2) {
150
150
  const ctx_r41 = i0.ɵɵnextContext(3);
151
- const _r15 = i0.ɵɵreference(26);
151
+ const _r15 = i0.ɵɵreference(27);
152
152
  i0.ɵɵproperty("ngClass", ctx_r41.fromPopup ? "col" : "col col-fit-content");
153
153
  i0.ɵɵadvance(1);
154
154
  i0.ɵɵproperty("ngTemplateOutlet", _r15);
155
155
  } }
156
- function AlienDoctypeComponent_div_12_div_4_div_8_ng_container_2_Template(rf, ctx) { if (rf & 1) {
156
+ function AlienDoctypeComponent_div_13_div_4_div_8_ng_container_2_Template(rf, ctx) { if (rf & 1) {
157
157
  i0.ɵɵelementContainer(0);
158
158
  } }
159
- function AlienDoctypeComponent_div_12_div_4_div_8_Template(rf, ctx) { if (rf & 1) {
159
+ function AlienDoctypeComponent_div_13_div_4_div_8_Template(rf, ctx) { if (rf & 1) {
160
160
  i0.ɵɵelementStart(0, "div")(1, "ion-col", 3);
161
- i0.ɵɵtemplate(2, AlienDoctypeComponent_div_12_div_4_div_8_ng_container_2_Template, 1, 0, "ng-container", 19);
161
+ i0.ɵɵtemplate(2, AlienDoctypeComponent_div_13_div_4_div_8_ng_container_2_Template, 1, 0, "ng-container", 19);
162
162
  i0.ɵɵelementEnd()();
163
163
  } if (rf & 2) {
164
164
  const ctx_r42 = i0.ɵɵnextContext(3);
165
- const _r17 = i0.ɵɵreference(28);
165
+ const _r17 = i0.ɵɵreference(29);
166
166
  i0.ɵɵadvance(1);
167
167
  i0.ɵɵproperty("ngClass", ctx_r42.fromPopup ? "col" : "col col-fit-content");
168
168
  i0.ɵɵadvance(1);
169
169
  i0.ɵɵproperty("ngTemplateOutlet", _r17);
170
170
  } }
171
- function AlienDoctypeComponent_div_12_div_4_ion_col_9_ng_container_1_Template(rf, ctx) { if (rf & 1) {
171
+ function AlienDoctypeComponent_div_13_div_4_ion_col_9_ng_container_1_Template(rf, ctx) { if (rf & 1) {
172
172
  i0.ɵɵelementContainer(0);
173
173
  } }
174
- function AlienDoctypeComponent_div_12_div_4_ion_col_9_Template(rf, ctx) { if (rf & 1) {
174
+ function AlienDoctypeComponent_div_13_div_4_ion_col_9_Template(rf, ctx) { if (rf & 1) {
175
175
  i0.ɵɵelementStart(0, "ion-col", 3);
176
- i0.ɵɵtemplate(1, AlienDoctypeComponent_div_12_div_4_ion_col_9_ng_container_1_Template, 1, 0, "ng-container", 19);
176
+ i0.ɵɵtemplate(1, AlienDoctypeComponent_div_13_div_4_ion_col_9_ng_container_1_Template, 1, 0, "ng-container", 19);
177
177
  i0.ɵɵelementEnd();
178
178
  } if (rf & 2) {
179
179
  const ctx_r43 = i0.ɵɵnextContext(3);
180
- const _r15 = i0.ɵɵreference(26);
180
+ const _r15 = i0.ɵɵreference(27);
181
181
  i0.ɵɵproperty("ngClass", ctx_r43.fromPopup ? "col" : "col col-fit-content");
182
182
  i0.ɵɵadvance(1);
183
183
  i0.ɵɵproperty("ngTemplateOutlet", _r15);
184
184
  } }
185
- function AlienDoctypeComponent_div_12_div_4_ng_container_11_Template(rf, ctx) { if (rf & 1) {
185
+ function AlienDoctypeComponent_div_13_div_4_ng_container_11_Template(rf, ctx) { if (rf & 1) {
186
186
  i0.ɵɵelementContainer(0);
187
187
  } }
188
- function AlienDoctypeComponent_div_12_div_4_Template(rf, ctx) { if (rf & 1) {
188
+ function AlienDoctypeComponent_div_13_div_4_Template(rf, ctx) { if (rf & 1) {
189
189
  i0.ɵɵelementStart(0, "div")(1, "ion-row")(2, "ion-col", 3);
190
- i0.ɵɵtemplate(3, AlienDoctypeComponent_div_12_div_4_ng_container_3_Template, 1, 0, "ng-container", 19);
190
+ i0.ɵɵtemplate(3, AlienDoctypeComponent_div_13_div_4_ng_container_3_Template, 1, 0, "ng-container", 19);
191
191
  i0.ɵɵelementEnd();
192
192
  i0.ɵɵelementStart(4, "ion-col", 3);
193
- i0.ɵɵtemplate(5, AlienDoctypeComponent_div_12_div_4_ng_container_5_Template, 1, 0, "ng-container", 19);
193
+ i0.ɵɵtemplate(5, AlienDoctypeComponent_div_13_div_4_ng_container_5_Template, 1, 0, "ng-container", 19);
194
194
  i0.ɵɵelementEnd();
195
- i0.ɵɵtemplate(6, AlienDoctypeComponent_div_12_div_4_ion_col_6_Template, 2, 2, "ion-col", 20);
195
+ i0.ɵɵtemplate(6, AlienDoctypeComponent_div_13_div_4_ion_col_6_Template, 2, 2, "ion-col", 20);
196
196
  i0.ɵɵelementEnd();
197
197
  i0.ɵɵelementStart(7, "ion-row");
198
- i0.ɵɵtemplate(8, AlienDoctypeComponent_div_12_div_4_div_8_Template, 3, 2, "div", 8)(9, AlienDoctypeComponent_div_12_div_4_ion_col_9_Template, 2, 2, "ion-col", 20);
198
+ i0.ɵɵtemplate(8, AlienDoctypeComponent_div_13_div_4_div_8_Template, 3, 2, "div", 8)(9, AlienDoctypeComponent_div_13_div_4_ion_col_9_Template, 2, 2, "ion-col", 20);
199
199
  i0.ɵɵelementStart(10, "ion-col", 3);
200
- i0.ɵɵtemplate(11, AlienDoctypeComponent_div_12_div_4_ng_container_11_Template, 1, 0, "ng-container", 19);
200
+ i0.ɵɵtemplate(11, AlienDoctypeComponent_div_13_div_4_ng_container_11_Template, 1, 0, "ng-container", 19);
201
201
  i0.ɵɵelementEnd()()();
202
202
  } if (rf & 2) {
203
203
  const ctx_r25 = i0.ɵɵnextContext(2);
204
- const _r3 = i0.ɵɵreference(14);
205
- const _r13 = i0.ɵɵreference(24);
206
- const _r5 = i0.ɵɵreference(16);
204
+ const _r3 = i0.ɵɵreference(15);
205
+ const _r13 = i0.ɵɵreference(25);
206
+ const _r5 = i0.ɵɵreference(17);
207
207
  i0.ɵɵadvance(2);
208
208
  i0.ɵɵproperty("ngClass", ctx_r25.fromPopup ? "col" : "col col-fit-content");
209
209
  i0.ɵɵadvance(1);
@@ -223,30 +223,30 @@ function AlienDoctypeComponent_div_12_div_4_Template(rf, ctx) { if (rf & 1) {
223
223
  i0.ɵɵadvance(1);
224
224
  i0.ɵɵproperty("ngTemplateOutlet", _r5);
225
225
  } }
226
- function AlienDoctypeComponent_div_12_div_5_ng_container_3_Template(rf, ctx) { if (rf & 1) {
226
+ function AlienDoctypeComponent_div_13_div_5_ng_container_3_Template(rf, ctx) { if (rf & 1) {
227
227
  i0.ɵɵelementContainer(0);
228
228
  } }
229
- function AlienDoctypeComponent_div_12_div_5_ng_container_5_Template(rf, ctx) { if (rf & 1) {
229
+ function AlienDoctypeComponent_div_13_div_5_ng_container_5_Template(rf, ctx) { if (rf & 1) {
230
230
  i0.ɵɵelementContainer(0);
231
231
  } }
232
- function AlienDoctypeComponent_div_12_div_5_ng_container_7_Template(rf, ctx) { if (rf & 1) {
232
+ function AlienDoctypeComponent_div_13_div_5_ng_container_7_Template(rf, ctx) { if (rf & 1) {
233
233
  i0.ɵɵelementContainer(0);
234
234
  } }
235
- function AlienDoctypeComponent_div_12_div_5_Template(rf, ctx) { if (rf & 1) {
235
+ function AlienDoctypeComponent_div_13_div_5_Template(rf, ctx) { if (rf & 1) {
236
236
  i0.ɵɵelementStart(0, "div")(1, "ion-row")(2, "ion-col", 3);
237
- i0.ɵɵtemplate(3, AlienDoctypeComponent_div_12_div_5_ng_container_3_Template, 1, 0, "ng-container", 19);
237
+ i0.ɵɵtemplate(3, AlienDoctypeComponent_div_13_div_5_ng_container_3_Template, 1, 0, "ng-container", 19);
238
238
  i0.ɵɵelementEnd();
239
239
  i0.ɵɵelementStart(4, "ion-col", 3);
240
- i0.ɵɵtemplate(5, AlienDoctypeComponent_div_12_div_5_ng_container_5_Template, 1, 0, "ng-container", 19);
240
+ i0.ɵɵtemplate(5, AlienDoctypeComponent_div_13_div_5_ng_container_5_Template, 1, 0, "ng-container", 19);
241
241
  i0.ɵɵelementEnd();
242
242
  i0.ɵɵelementStart(6, "ion-col", 3);
243
- i0.ɵɵtemplate(7, AlienDoctypeComponent_div_12_div_5_ng_container_7_Template, 1, 0, "ng-container", 19);
243
+ i0.ɵɵtemplate(7, AlienDoctypeComponent_div_13_div_5_ng_container_7_Template, 1, 0, "ng-container", 19);
244
244
  i0.ɵɵelementEnd()()();
245
245
  } if (rf & 2) {
246
246
  const ctx_r26 = i0.ɵɵnextContext(2);
247
- const _r9 = i0.ɵɵreference(20);
248
- const _r11 = i0.ɵɵreference(22);
249
- const _r5 = i0.ɵɵreference(16);
247
+ const _r9 = i0.ɵɵreference(21);
248
+ const _r11 = i0.ɵɵreference(23);
249
+ const _r5 = i0.ɵɵreference(17);
250
250
  i0.ɵɵadvance(2);
251
251
  i0.ɵɵproperty("ngClass", ctx_r26.fromPopup ? "col" : "col col-fit-content");
252
252
  i0.ɵɵadvance(1);
@@ -260,51 +260,51 @@ function AlienDoctypeComponent_div_12_div_5_Template(rf, ctx) { if (rf & 1) {
260
260
  i0.ɵɵadvance(1);
261
261
  i0.ɵɵproperty("ngTemplateOutlet", _r5);
262
262
  } }
263
- function AlienDoctypeComponent_div_12_div_6_ng_container_3_Template(rf, ctx) { if (rf & 1) {
263
+ function AlienDoctypeComponent_div_13_div_6_ng_container_3_Template(rf, ctx) { if (rf & 1) {
264
264
  i0.ɵɵelementContainer(0);
265
265
  } }
266
- function AlienDoctypeComponent_div_12_div_6_ng_container_5_Template(rf, ctx) { if (rf & 1) {
266
+ function AlienDoctypeComponent_div_13_div_6_ng_container_5_Template(rf, ctx) { if (rf & 1) {
267
267
  i0.ɵɵelementContainer(0);
268
268
  } }
269
- function AlienDoctypeComponent_div_12_div_6_ng_container_7_Template(rf, ctx) { if (rf & 1) {
269
+ function AlienDoctypeComponent_div_13_div_6_ng_container_7_Template(rf, ctx) { if (rf & 1) {
270
270
  i0.ɵɵelementContainer(0);
271
271
  } }
272
- function AlienDoctypeComponent_div_12_div_6_ng_container_10_Template(rf, ctx) { if (rf & 1) {
272
+ function AlienDoctypeComponent_div_13_div_6_ng_container_10_Template(rf, ctx) { if (rf & 1) {
273
273
  i0.ɵɵelementContainer(0);
274
274
  } }
275
- function AlienDoctypeComponent_div_12_div_6_ng_container_12_Template(rf, ctx) { if (rf & 1) {
275
+ function AlienDoctypeComponent_div_13_div_6_ng_container_12_Template(rf, ctx) { if (rf & 1) {
276
276
  i0.ɵɵelementContainer(0);
277
277
  } }
278
- function AlienDoctypeComponent_div_12_div_6_ng_container_14_Template(rf, ctx) { if (rf & 1) {
278
+ function AlienDoctypeComponent_div_13_div_6_ng_container_14_Template(rf, ctx) { if (rf & 1) {
279
279
  i0.ɵɵelementContainer(0);
280
280
  } }
281
- function AlienDoctypeComponent_div_12_div_6_Template(rf, ctx) { if (rf & 1) {
281
+ function AlienDoctypeComponent_div_13_div_6_Template(rf, ctx) { if (rf & 1) {
282
282
  i0.ɵɵelementStart(0, "div")(1, "ion-row")(2, "ion-col", 3);
283
- i0.ɵɵtemplate(3, AlienDoctypeComponent_div_12_div_6_ng_container_3_Template, 1, 0, "ng-container", 19);
283
+ i0.ɵɵtemplate(3, AlienDoctypeComponent_div_13_div_6_ng_container_3_Template, 1, 0, "ng-container", 19);
284
284
  i0.ɵɵelementEnd();
285
285
  i0.ɵɵelementStart(4, "ion-col", 3);
286
- i0.ɵɵtemplate(5, AlienDoctypeComponent_div_12_div_6_ng_container_5_Template, 1, 0, "ng-container", 19);
286
+ i0.ɵɵtemplate(5, AlienDoctypeComponent_div_13_div_6_ng_container_5_Template, 1, 0, "ng-container", 19);
287
287
  i0.ɵɵelementEnd();
288
288
  i0.ɵɵelementStart(6, "ion-col", 3);
289
- i0.ɵɵtemplate(7, AlienDoctypeComponent_div_12_div_6_ng_container_7_Template, 1, 0, "ng-container", 19);
289
+ i0.ɵɵtemplate(7, AlienDoctypeComponent_div_13_div_6_ng_container_7_Template, 1, 0, "ng-container", 19);
290
290
  i0.ɵɵelementEnd()();
291
291
  i0.ɵɵelementStart(8, "ion-row")(9, "ion-col", 3);
292
- i0.ɵɵtemplate(10, AlienDoctypeComponent_div_12_div_6_ng_container_10_Template, 1, 0, "ng-container", 19);
292
+ i0.ɵɵtemplate(10, AlienDoctypeComponent_div_13_div_6_ng_container_10_Template, 1, 0, "ng-container", 19);
293
293
  i0.ɵɵelementEnd();
294
294
  i0.ɵɵelementStart(11, "ion-col", 3);
295
- i0.ɵɵtemplate(12, AlienDoctypeComponent_div_12_div_6_ng_container_12_Template, 1, 0, "ng-container", 19);
295
+ i0.ɵɵtemplate(12, AlienDoctypeComponent_div_13_div_6_ng_container_12_Template, 1, 0, "ng-container", 19);
296
296
  i0.ɵɵelementEnd();
297
297
  i0.ɵɵelementStart(13, "ion-col", 3);
298
- i0.ɵɵtemplate(14, AlienDoctypeComponent_div_12_div_6_ng_container_14_Template, 1, 0, "ng-container", 19);
298
+ i0.ɵɵtemplate(14, AlienDoctypeComponent_div_13_div_6_ng_container_14_Template, 1, 0, "ng-container", 19);
299
299
  i0.ɵɵelementEnd()()();
300
300
  } if (rf & 2) {
301
301
  const ctx_r27 = i0.ɵɵnextContext(2);
302
- const _r9 = i0.ɵɵreference(20);
303
- const _r17 = i0.ɵɵreference(28);
304
- const _r13 = i0.ɵɵreference(24);
305
- const _r15 = i0.ɵɵreference(26);
306
- const _r11 = i0.ɵɵreference(22);
307
- const _r5 = i0.ɵɵreference(16);
302
+ const _r9 = i0.ɵɵreference(21);
303
+ const _r17 = i0.ɵɵreference(29);
304
+ const _r13 = i0.ɵɵreference(25);
305
+ const _r15 = i0.ɵɵreference(27);
306
+ const _r11 = i0.ɵɵreference(23);
307
+ const _r5 = i0.ɵɵreference(17);
308
308
  i0.ɵɵadvance(2);
309
309
  i0.ɵɵproperty("ngClass", ctx_r27.fromPopup ? "col" : "col col-fit-content");
310
310
  i0.ɵɵadvance(1);
@@ -330,44 +330,44 @@ function AlienDoctypeComponent_div_12_div_6_Template(rf, ctx) { if (rf & 1) {
330
330
  i0.ɵɵadvance(1);
331
331
  i0.ɵɵproperty("ngTemplateOutlet", _r5);
332
332
  } }
333
- function AlienDoctypeComponent_div_12_div_7_ng_container_3_Template(rf, ctx) { if (rf & 1) {
333
+ function AlienDoctypeComponent_div_13_div_7_ng_container_3_Template(rf, ctx) { if (rf & 1) {
334
334
  i0.ɵɵelementContainer(0);
335
335
  } }
336
- function AlienDoctypeComponent_div_12_div_7_ng_container_5_Template(rf, ctx) { if (rf & 1) {
336
+ function AlienDoctypeComponent_div_13_div_7_ng_container_5_Template(rf, ctx) { if (rf & 1) {
337
337
  i0.ɵɵelementContainer(0);
338
338
  } }
339
- function AlienDoctypeComponent_div_12_div_7_ng_container_7_Template(rf, ctx) { if (rf & 1) {
339
+ function AlienDoctypeComponent_div_13_div_7_ng_container_7_Template(rf, ctx) { if (rf & 1) {
340
340
  i0.ɵɵelementContainer(0);
341
341
  } }
342
- function AlienDoctypeComponent_div_12_div_7_ng_container_10_Template(rf, ctx) { if (rf & 1) {
342
+ function AlienDoctypeComponent_div_13_div_7_ng_container_10_Template(rf, ctx) { if (rf & 1) {
343
343
  i0.ɵɵelementContainer(0);
344
344
  } }
345
- function AlienDoctypeComponent_div_12_div_7_ng_container_12_Template(rf, ctx) { if (rf & 1) {
345
+ function AlienDoctypeComponent_div_13_div_7_ng_container_12_Template(rf, ctx) { if (rf & 1) {
346
346
  i0.ɵɵelementContainer(0);
347
347
  } }
348
- function AlienDoctypeComponent_div_12_div_7_Template(rf, ctx) { if (rf & 1) {
348
+ function AlienDoctypeComponent_div_13_div_7_Template(rf, ctx) { if (rf & 1) {
349
349
  i0.ɵɵelementStart(0, "div")(1, "ion-row")(2, "ion-col", 3);
350
- i0.ɵɵtemplate(3, AlienDoctypeComponent_div_12_div_7_ng_container_3_Template, 1, 0, "ng-container", 19);
350
+ i0.ɵɵtemplate(3, AlienDoctypeComponent_div_13_div_7_ng_container_3_Template, 1, 0, "ng-container", 19);
351
351
  i0.ɵɵelementEnd();
352
352
  i0.ɵɵelementStart(4, "ion-col", 3);
353
- i0.ɵɵtemplate(5, AlienDoctypeComponent_div_12_div_7_ng_container_5_Template, 1, 0, "ng-container", 19);
353
+ i0.ɵɵtemplate(5, AlienDoctypeComponent_div_13_div_7_ng_container_5_Template, 1, 0, "ng-container", 19);
354
354
  i0.ɵɵelementEnd();
355
355
  i0.ɵɵelementStart(6, "ion-col", 3);
356
- i0.ɵɵtemplate(7, AlienDoctypeComponent_div_12_div_7_ng_container_7_Template, 1, 0, "ng-container", 19);
356
+ i0.ɵɵtemplate(7, AlienDoctypeComponent_div_13_div_7_ng_container_7_Template, 1, 0, "ng-container", 19);
357
357
  i0.ɵɵelementEnd()();
358
358
  i0.ɵɵelementStart(8, "ion-row")(9, "ion-col", 3);
359
- i0.ɵɵtemplate(10, AlienDoctypeComponent_div_12_div_7_ng_container_10_Template, 1, 0, "ng-container", 19);
359
+ i0.ɵɵtemplate(10, AlienDoctypeComponent_div_13_div_7_ng_container_10_Template, 1, 0, "ng-container", 19);
360
360
  i0.ɵɵelementEnd();
361
361
  i0.ɵɵelementStart(11, "ion-col", 3);
362
- i0.ɵɵtemplate(12, AlienDoctypeComponent_div_12_div_7_ng_container_12_Template, 1, 0, "ng-container", 19);
362
+ i0.ɵɵtemplate(12, AlienDoctypeComponent_div_13_div_7_ng_container_12_Template, 1, 0, "ng-container", 19);
363
363
  i0.ɵɵelementEnd()()();
364
364
  } if (rf & 2) {
365
365
  const ctx_r28 = i0.ɵɵnextContext(2);
366
- const _r9 = i0.ɵɵreference(20);
367
- const _r13 = i0.ɵɵreference(24);
368
- const _r15 = i0.ɵɵreference(26);
369
- const _r11 = i0.ɵɵreference(22);
370
- const _r5 = i0.ɵɵreference(16);
366
+ const _r9 = i0.ɵɵreference(21);
367
+ const _r13 = i0.ɵɵreference(25);
368
+ const _r15 = i0.ɵɵreference(27);
369
+ const _r11 = i0.ɵɵreference(23);
370
+ const _r5 = i0.ɵɵreference(17);
371
371
  i0.ɵɵadvance(2);
372
372
  i0.ɵɵproperty("ngClass", ctx_r28.fromPopup ? "col" : "col col-fit-content");
373
373
  i0.ɵɵadvance(1);
@@ -389,9 +389,9 @@ function AlienDoctypeComponent_div_12_div_7_Template(rf, ctx) { if (rf & 1) {
389
389
  i0.ɵɵadvance(1);
390
390
  i0.ɵɵproperty("ngTemplateOutlet", _r5);
391
391
  } }
392
- function AlienDoctypeComponent_div_12_Template(rf, ctx) { if (rf & 1) {
392
+ function AlienDoctypeComponent_div_13_Template(rf, ctx) { if (rf & 1) {
393
393
  i0.ɵɵelementStart(0, "div");
394
- i0.ɵɵtemplate(1, AlienDoctypeComponent_div_12_div_1_Template, 6, 4, "div", 8)(2, AlienDoctypeComponent_div_12_div_2_Template, 8, 6, "div", 8)(3, AlienDoctypeComponent_div_12_div_3_Template, 6, 4, "div", 8)(4, AlienDoctypeComponent_div_12_div_4_Template, 12, 9, "div", 8)(5, AlienDoctypeComponent_div_12_div_5_Template, 8, 6, "div", 8)(6, AlienDoctypeComponent_div_12_div_6_Template, 15, 12, "div", 8)(7, AlienDoctypeComponent_div_12_div_7_Template, 13, 10, "div", 8);
394
+ i0.ɵɵtemplate(1, AlienDoctypeComponent_div_13_div_1_Template, 6, 4, "div", 8)(2, AlienDoctypeComponent_div_13_div_2_Template, 8, 6, "div", 8)(3, AlienDoctypeComponent_div_13_div_3_Template, 6, 4, "div", 8)(4, AlienDoctypeComponent_div_13_div_4_Template, 12, 9, "div", 8)(5, AlienDoctypeComponent_div_13_div_5_Template, 8, 6, "div", 8)(6, AlienDoctypeComponent_div_13_div_6_Template, 15, 12, "div", 8)(7, AlienDoctypeComponent_div_13_div_7_Template, 13, 10, "div", 8);
395
395
  i0.ɵɵelementEnd();
396
396
  } if (rf & 2) {
397
397
  const ctx_r1 = i0.ɵɵnextContext();
@@ -410,23 +410,28 @@ function AlienDoctypeComponent_div_12_Template(rf, ctx) { if (rf & 1) {
410
410
  i0.ɵɵadvance(1);
411
411
  i0.ɵɵproperty("ngIf", ctx_r1.DS2019DocType);
412
412
  } }
413
- function AlienDoctypeComponent_ng_template_13_span_4_Template(rf, ctx) { if (rf & 1) {
413
+ function AlienDoctypeComponent_ng_template_14_span_4_Template(rf, ctx) { if (rf & 1) {
414
414
  i0.ɵɵelementStart(0, "span", 24);
415
- i0.ɵɵtext(1, " (Optional)");
415
+ i0.ɵɵtext(1);
416
+ i0.ɵɵpipe(2, "translate");
416
417
  i0.ɵɵelementEnd();
418
+ } if (rf & 2) {
419
+ i0.ɵɵadvance(1);
420
+ i0.ɵɵtextInterpolate1(" (", i0.ɵɵpipeBind1(2, 1, "common.optional"), ")");
417
421
  } }
418
- function AlienDoctypeComponent_ng_template_13_Template(rf, ctx) { if (rf & 1) {
422
+ function AlienDoctypeComponent_ng_template_14_Template(rf, ctx) { if (rf & 1) {
419
423
  const _r64 = i0.ɵɵgetCurrentView();
420
424
  i0.ɵɵelementStart(0, "div", 21)(1, "label", 5);
421
425
  i0.ɵɵtext(2);
422
426
  i0.ɵɵpipe(3, "translate");
423
- i0.ɵɵtemplate(4, AlienDoctypeComponent_ng_template_13_span_4_Template, 2, 0, "span", 22);
427
+ i0.ɵɵtemplate(4, AlienDoctypeComponent_ng_template_14_span_4_Template, 3, 3, "span", 22);
424
428
  i0.ɵɵelementEnd();
425
429
  i0.ɵɵelement(5, "br");
426
430
  i0.ɵɵelementStart(6, "input", 23);
427
- i0.ɵɵlistener("input", function AlienDoctypeComponent_ng_template_13_Template_input_input_6_listener() { i0.ɵɵrestoreView(_r64); const ctx_r63 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r63.setalienNumberValidator()); });
431
+ i0.ɵɵlistener("input", function AlienDoctypeComponent_ng_template_14_Template_input_input_6_listener() { i0.ɵɵrestoreView(_r64); const ctx_r63 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r63.setalienNumberValidator()); });
432
+ i0.ɵɵpipe(7, "translate");
428
433
  i0.ɵɵelementEnd();
429
- i0.ɵɵelement(7, "app-error", 7);
434
+ i0.ɵɵelement(8, "app-error", 7);
430
435
  i0.ɵɵelementEnd();
431
436
  } if (rf & 2) {
432
437
  const ctx_r2 = i0.ɵɵnextContext();
@@ -438,31 +443,35 @@ function AlienDoctypeComponent_ng_template_13_Template(rf, ctx) { if (rf & 1) {
438
443
  i0.ɵɵadvance(2);
439
444
  i0.ɵɵproperty("ngIf", ctx_r2.isOptional(ctx_r2.alienNumber));
440
445
  i0.ɵɵadvance(2);
441
- i0.ɵɵproperty("id", ctx_r2.inputId ? ctx_r2.inputId + "-alienNumber" : "alienNumber")("formControl", ctx_r2.alienNumber)("placeholder", ctx_r2.isOptional(ctx_r2.alienNumber) ? "Optional" : "");
442
- i0.ɵɵadvance(1);
446
+ i0.ɵɵproperty("id", ctx_r2.inputId ? ctx_r2.inputId + "-alienNumber" : "alienNumber")("formControl", ctx_r2.alienNumber)("placeholder", ctx_r2.isOptional(ctx_r2.alienNumber) ? i0.ɵɵpipeBind1(7, 11, "common.optional") : "");
447
+ i0.ɵɵadvance(2);
443
448
  i0.ɵɵproperty("field", ctx_r2.alienNumber)("form", _r0)("errDef", ctx_r2.alienNumberErrDef);
444
449
  } }
445
- function AlienDoctypeComponent_ng_template_15_span_4_Template(rf, ctx) { if (rf & 1) {
450
+ function AlienDoctypeComponent_ng_template_16_span_4_Template(rf, ctx) { if (rf & 1) {
446
451
  i0.ɵɵelementStart(0, "span", 24);
447
- i0.ɵɵtext(1, " (Optional)");
452
+ i0.ɵɵtext(1);
453
+ i0.ɵɵpipe(2, "translate");
448
454
  i0.ɵɵelementEnd();
455
+ } if (rf & 2) {
456
+ i0.ɵɵadvance(1);
457
+ i0.ɵɵtextInterpolate1(" (", i0.ɵɵpipeBind1(2, 1, "common.optional"), ")");
449
458
  } }
450
- function AlienDoctypeComponent_ng_template_15_Template(rf, ctx) { if (rf & 1) {
459
+ function AlienDoctypeComponent_ng_template_16_Template(rf, ctx) { if (rf & 1) {
451
460
  const _r69 = i0.ɵɵgetCurrentView();
452
461
  i0.ɵɵelementStart(0, "div", 21)(1, "label");
453
462
  i0.ɵɵtext(2);
454
463
  i0.ɵɵpipe(3, "translate");
455
- i0.ɵɵtemplate(4, AlienDoctypeComponent_ng_template_15_span_4_Template, 2, 0, "span", 22);
464
+ i0.ɵɵtemplate(4, AlienDoctypeComponent_ng_template_16_span_4_Template, 3, 3, "span", 22);
456
465
  i0.ɵɵelementEnd();
457
466
  i0.ɵɵelement(5, "br");
458
467
  i0.ɵɵelementStart(6, "div", 25)(7, "input", 26, 27);
459
- i0.ɵɵlistener("input", function AlienDoctypeComponent_ng_template_15_Template_input_input_7_listener($event) { i0.ɵɵrestoreView(_r69); const ctx_r68 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r68.onExpDateInput($event)); })("keydown", function AlienDoctypeComponent_ng_template_15_Template_input_keydown_7_listener($event) { i0.ɵɵrestoreView(_r69); const _r66 = i0.ɵɵreference(8); const ctx_r70 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r70.onExpDateKeyDown($event, _r66)); });
468
+ i0.ɵɵlistener("input", function AlienDoctypeComponent_ng_template_16_Template_input_input_7_listener($event) { i0.ɵɵrestoreView(_r69); const ctx_r68 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r68.onExpDateInput($event)); })("keydown", function AlienDoctypeComponent_ng_template_16_Template_input_keydown_7_listener($event) { i0.ɵɵrestoreView(_r69); const _r66 = i0.ɵɵreference(8); const ctx_r70 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r70.onExpDateKeyDown($event, _r66)); });
460
469
  i0.ɵɵelementEnd();
461
470
  i0.ɵɵelementStart(9, "button", 28);
462
- i0.ɵɵlistener("click", function AlienDoctypeComponent_ng_template_15_Template_button_click_9_listener($event) { i0.ɵɵrestoreView(_r69); const _r67 = i0.ɵɵreference(11); return i0.ɵɵresetView(_r67.toggle($event)); });
471
+ i0.ɵɵlistener("click", function AlienDoctypeComponent_ng_template_16_Template_button_click_9_listener($event) { i0.ɵɵrestoreView(_r69); const _r67 = i0.ɵɵreference(11); return i0.ɵɵresetView(_r67.toggle($event)); });
463
472
  i0.ɵɵelementEnd()();
464
473
  i0.ɵɵelementStart(10, "p-overlayPanel", 29, 30)(12, "p-calendar", 31);
465
- i0.ɵɵlistener("onMonthChange", function AlienDoctypeComponent_ng_template_15_Template_p_calendar_onMonthChange_12_listener() { i0.ɵɵrestoreView(_r69); const ctx_r72 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r72.calendarPickerActive = true); })("onYearChange", function AlienDoctypeComponent_ng_template_15_Template_p_calendar_onYearChange_12_listener() { i0.ɵɵrestoreView(_r69); const ctx_r73 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r73.calendarPickerActive = true); })("onSelect", function AlienDoctypeComponent_ng_template_15_Template_p_calendar_onSelect_12_listener($event) { i0.ɵɵrestoreView(_r69); const _r67 = i0.ɵɵreference(11); const _r66 = i0.ɵɵreference(8); const ctx_r74 = i0.ɵɵnextContext(); ctx_r74.calendarPickerActive = true; return i0.ɵɵresetView(ctx_r74.onExpDatePickerSelect($event, _r67, _r66)); });
474
+ i0.ɵɵlistener("onMonthChange", function AlienDoctypeComponent_ng_template_16_Template_p_calendar_onMonthChange_12_listener() { i0.ɵɵrestoreView(_r69); const ctx_r72 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r72.calendarPickerActive = true); })("onYearChange", function AlienDoctypeComponent_ng_template_16_Template_p_calendar_onYearChange_12_listener() { i0.ɵɵrestoreView(_r69); const ctx_r73 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r73.calendarPickerActive = true); })("onSelect", function AlienDoctypeComponent_ng_template_16_Template_p_calendar_onSelect_12_listener($event) { i0.ɵɵrestoreView(_r69); const _r67 = i0.ɵɵreference(11); const _r66 = i0.ɵɵreference(8); const ctx_r74 = i0.ɵɵnextContext(); ctx_r74.calendarPickerActive = true; return i0.ɵɵresetView(ctx_r74.onExpDatePickerSelect($event, _r67, _r66)); });
466
475
  i0.ɵɵelementEnd()();
467
476
  i0.ɵɵelement(13, "app-error", 7);
468
477
  i0.ɵɵelementEnd();
@@ -478,23 +487,28 @@ function AlienDoctypeComponent_ng_template_15_Template(rf, ctx) { if (rf & 1) {
478
487
  i0.ɵɵadvance(1);
479
488
  i0.ɵɵproperty("field", ctx_r4.alienDocExpDate)("form", _r0)("errDef", ctx_r4.expDateRequiredErrDef);
480
489
  } }
481
- function AlienDoctypeComponent_ng_template_17_span_4_Template(rf, ctx) { if (rf & 1) {
490
+ function AlienDoctypeComponent_ng_template_18_span_4_Template(rf, ctx) { if (rf & 1) {
482
491
  i0.ɵɵelementStart(0, "span", 24);
483
- i0.ɵɵtext(1, " (Optional)");
492
+ i0.ɵɵtext(1);
493
+ i0.ɵɵpipe(2, "translate");
484
494
  i0.ɵɵelementEnd();
495
+ } if (rf & 2) {
496
+ i0.ɵɵadvance(1);
497
+ i0.ɵɵtextInterpolate1(" (", i0.ɵɵpipeBind1(2, 1, "common.optional"), ")");
485
498
  } }
486
- function AlienDoctypeComponent_ng_template_17_Template(rf, ctx) { if (rf & 1) {
499
+ function AlienDoctypeComponent_ng_template_18_Template(rf, ctx) { if (rf & 1) {
487
500
  const _r77 = i0.ɵɵgetCurrentView();
488
501
  i0.ɵɵelementStart(0, "div", 21)(1, "label", 5);
489
502
  i0.ɵɵtext(2);
490
503
  i0.ɵɵpipe(3, "translate");
491
- i0.ɵɵtemplate(4, AlienDoctypeComponent_ng_template_17_span_4_Template, 2, 0, "span", 22);
504
+ i0.ɵɵtemplate(4, AlienDoctypeComponent_ng_template_18_span_4_Template, 3, 3, "span", 22);
492
505
  i0.ɵɵelementEnd();
493
506
  i0.ɵɵelement(5, "br");
494
507
  i0.ɵɵelementStart(6, "input", 32);
495
- i0.ɵɵlistener("input", function AlienDoctypeComponent_ng_template_17_Template_input_input_6_listener() { i0.ɵɵrestoreView(_r77); const ctx_r76 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r76.setcardNumberValidator()); });
508
+ i0.ɵɵlistener("input", function AlienDoctypeComponent_ng_template_18_Template_input_input_6_listener() { i0.ɵɵrestoreView(_r77); const ctx_r76 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r76.setcardNumberValidator()); });
509
+ i0.ɵɵpipe(7, "translate");
496
510
  i0.ɵɵelementEnd();
497
- i0.ɵɵelement(7, "app-error", 7);
511
+ i0.ɵɵelement(8, "app-error", 7);
498
512
  i0.ɵɵelementEnd();
499
513
  } if (rf & 2) {
500
514
  const ctx_r6 = i0.ɵɵnextContext();
@@ -506,27 +520,32 @@ function AlienDoctypeComponent_ng_template_17_Template(rf, ctx) { if (rf & 1) {
506
520
  i0.ɵɵadvance(2);
507
521
  i0.ɵɵproperty("ngIf", ctx_r6.isOptional(ctx_r6.cardNumber));
508
522
  i0.ɵɵadvance(2);
509
- i0.ɵɵproperty("id", ctx_r6.inputId ? ctx_r6.inputId + "-cardNumber" : "cardNumber")("formControl", ctx_r6.cardNumber)("placeholder", ctx_r6.isOptional(ctx_r6.cardNumber) ? "Optional" : "");
510
- i0.ɵɵadvance(1);
523
+ i0.ɵɵproperty("id", ctx_r6.inputId ? ctx_r6.inputId + "-cardNumber" : "cardNumber")("formControl", ctx_r6.cardNumber)("placeholder", ctx_r6.isOptional(ctx_r6.cardNumber) ? i0.ɵɵpipeBind1(7, 11, "common.optional") : "");
524
+ i0.ɵɵadvance(2);
511
525
  i0.ɵɵproperty("field", ctx_r6.cardNumber)("form", _r0)("errDef", ctx_r6.cardNumberErrDef);
512
526
  } }
513
- function AlienDoctypeComponent_ng_template_19_span_4_Template(rf, ctx) { if (rf & 1) {
527
+ function AlienDoctypeComponent_ng_template_20_span_4_Template(rf, ctx) { if (rf & 1) {
514
528
  i0.ɵɵelementStart(0, "span", 24);
515
- i0.ɵɵtext(1, " (Optional)");
529
+ i0.ɵɵtext(1);
530
+ i0.ɵɵpipe(2, "translate");
516
531
  i0.ɵɵelementEnd();
532
+ } if (rf & 2) {
533
+ i0.ɵɵadvance(1);
534
+ i0.ɵɵtextInterpolate1(" (", i0.ɵɵpipeBind1(2, 1, "common.optional"), ")");
517
535
  } }
518
- function AlienDoctypeComponent_ng_template_19_Template(rf, ctx) { if (rf & 1) {
536
+ function AlienDoctypeComponent_ng_template_20_Template(rf, ctx) { if (rf & 1) {
519
537
  const _r80 = i0.ɵɵgetCurrentView();
520
538
  i0.ɵɵelementStart(0, "div", 21)(1, "label", 5);
521
539
  i0.ɵɵtext(2);
522
540
  i0.ɵɵpipe(3, "translate");
523
- i0.ɵɵtemplate(4, AlienDoctypeComponent_ng_template_19_span_4_Template, 2, 0, "span", 22);
541
+ i0.ɵɵtemplate(4, AlienDoctypeComponent_ng_template_20_span_4_Template, 3, 3, "span", 22);
524
542
  i0.ɵɵelementEnd();
525
543
  i0.ɵɵelement(5, "br");
526
544
  i0.ɵɵelementStart(6, "input", 33);
527
- i0.ɵɵlistener("input", function AlienDoctypeComponent_ng_template_19_Template_input_input_6_listener() { i0.ɵɵrestoreView(_r80); const ctx_r79 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r79.setI94NumberValidator()); });
545
+ i0.ɵɵlistener("input", function AlienDoctypeComponent_ng_template_20_Template_input_input_6_listener() { i0.ɵɵrestoreView(_r80); const ctx_r79 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r79.setI94NumberValidator()); });
546
+ i0.ɵɵpipe(7, "translate");
528
547
  i0.ɵɵelementEnd();
529
- i0.ɵɵelement(7, "app-error", 7);
548
+ i0.ɵɵelement(8, "app-error", 7);
530
549
  i0.ɵɵelementEnd();
531
550
  } if (rf & 2) {
532
551
  const ctx_r8 = i0.ɵɵnextContext();
@@ -538,27 +557,32 @@ function AlienDoctypeComponent_ng_template_19_Template(rf, ctx) { if (rf & 1) {
538
557
  i0.ɵɵadvance(2);
539
558
  i0.ɵɵproperty("ngIf", ctx_r8.isOptional(ctx_r8.alienDocNumberI94));
540
559
  i0.ɵɵadvance(2);
541
- i0.ɵɵproperty("id", ctx_r8.inputId ? ctx_r8.inputId + "-alienDocNumberI94" : "alienDocNumberI94")("formControl", ctx_r8.alienDocNumberI94)("placeholder", ctx_r8.isOptional(ctx_r8.alienDocNumberI94) ? "Optional" : "");
542
- i0.ɵɵadvance(1);
560
+ i0.ɵɵproperty("id", ctx_r8.inputId ? ctx_r8.inputId + "-alienDocNumberI94" : "alienDocNumberI94")("formControl", ctx_r8.alienDocNumberI94)("placeholder", ctx_r8.isOptional(ctx_r8.alienDocNumberI94) ? i0.ɵɵpipeBind1(7, 11, "common.optional") : "");
561
+ i0.ɵɵadvance(2);
543
562
  i0.ɵɵproperty("field", ctx_r8.alienDocNumberI94)("form", _r0)("errDef", ctx_r8.i94NumberErrDef);
544
563
  } }
545
- function AlienDoctypeComponent_ng_template_21_span_4_Template(rf, ctx) { if (rf & 1) {
564
+ function AlienDoctypeComponent_ng_template_22_span_4_Template(rf, ctx) { if (rf & 1) {
546
565
  i0.ɵɵelementStart(0, "span", 24);
547
- i0.ɵɵtext(1, " (Optional)");
566
+ i0.ɵɵtext(1);
567
+ i0.ɵɵpipe(2, "translate");
548
568
  i0.ɵɵelementEnd();
569
+ } if (rf & 2) {
570
+ i0.ɵɵadvance(1);
571
+ i0.ɵɵtextInterpolate1(" (", i0.ɵɵpipeBind1(2, 1, "common.optional"), ")");
549
572
  } }
550
- function AlienDoctypeComponent_ng_template_21_Template(rf, ctx) { if (rf & 1) {
573
+ function AlienDoctypeComponent_ng_template_22_Template(rf, ctx) { if (rf & 1) {
551
574
  const _r83 = i0.ɵɵgetCurrentView();
552
575
  i0.ɵɵelementStart(0, "div", 21)(1, "label", 5);
553
576
  i0.ɵɵtext(2);
554
577
  i0.ɵɵpipe(3, "translate");
555
- i0.ɵɵtemplate(4, AlienDoctypeComponent_ng_template_21_span_4_Template, 2, 0, "span", 22);
578
+ i0.ɵɵtemplate(4, AlienDoctypeComponent_ng_template_22_span_4_Template, 3, 3, "span", 22);
556
579
  i0.ɵɵelementEnd();
557
580
  i0.ɵɵelement(5, "br");
558
581
  i0.ɵɵelementStart(6, "input", 34);
559
- i0.ɵɵlistener("input", function AlienDoctypeComponent_ng_template_21_Template_input_input_6_listener() { i0.ɵɵrestoreView(_r83); const ctx_r82 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r82.setSVISIdValidator()); });
582
+ i0.ɵɵlistener("input", function AlienDoctypeComponent_ng_template_22_Template_input_input_6_listener() { i0.ɵɵrestoreView(_r83); const ctx_r82 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r82.setSVISIdValidator()); });
583
+ i0.ɵɵpipe(7, "translate");
560
584
  i0.ɵɵelementEnd();
561
- i0.ɵɵelement(7, "app-error", 7);
585
+ i0.ɵɵelement(8, "app-error", 7);
562
586
  i0.ɵɵelementEnd();
563
587
  } if (rf & 2) {
564
588
  const ctx_r10 = i0.ɵɵnextContext();
@@ -570,27 +594,32 @@ function AlienDoctypeComponent_ng_template_21_Template(rf, ctx) { if (rf & 1) {
570
594
  i0.ɵɵadvance(2);
571
595
  i0.ɵɵproperty("ngIf", ctx_r10.isOptional(ctx_r10.alienDocSvsId));
572
596
  i0.ɵɵadvance(2);
573
- i0.ɵɵproperty("id", ctx_r10.inputId ? ctx_r10.inputId + "-alienDocSvsId" : "alienDocSvsId")("formControl", ctx_r10.alienDocSvsId)("placeholder", ctx_r10.isOptional(ctx_r10.alienDocSvsId) ? "Optional" : "");
574
- i0.ɵɵadvance(1);
597
+ i0.ɵɵproperty("id", ctx_r10.inputId ? ctx_r10.inputId + "-alienDocSvsId" : "alienDocSvsId")("formControl", ctx_r10.alienDocSvsId)("placeholder", ctx_r10.isOptional(ctx_r10.alienDocSvsId) ? i0.ɵɵpipeBind1(7, 11, "common.optional") : "");
598
+ i0.ɵɵadvance(2);
575
599
  i0.ɵɵproperty("field", ctx_r10.alienDocSvsId)("form", _r0)("errDef", ctx_r10.sevisIdErrDef);
576
600
  } }
577
- function AlienDoctypeComponent_ng_template_23_span_4_Template(rf, ctx) { if (rf & 1) {
601
+ function AlienDoctypeComponent_ng_template_24_span_4_Template(rf, ctx) { if (rf & 1) {
578
602
  i0.ɵɵelementStart(0, "span", 24);
579
- i0.ɵɵtext(1, " (Optional)");
603
+ i0.ɵɵtext(1);
604
+ i0.ɵɵpipe(2, "translate");
580
605
  i0.ɵɵelementEnd();
606
+ } if (rf & 2) {
607
+ i0.ɵɵadvance(1);
608
+ i0.ɵɵtextInterpolate1(" (", i0.ɵɵpipeBind1(2, 1, "common.optional"), ")");
581
609
  } }
582
- function AlienDoctypeComponent_ng_template_23_Template(rf, ctx) { if (rf & 1) {
610
+ function AlienDoctypeComponent_ng_template_24_Template(rf, ctx) { if (rf & 1) {
583
611
  const _r86 = i0.ɵɵgetCurrentView();
584
612
  i0.ɵɵelementStart(0, "div", 21)(1, "label", 5);
585
613
  i0.ɵɵtext(2);
586
614
  i0.ɵɵpipe(3, "translate");
587
- i0.ɵɵtemplate(4, AlienDoctypeComponent_ng_template_23_span_4_Template, 2, 0, "span", 22);
615
+ i0.ɵɵtemplate(4, AlienDoctypeComponent_ng_template_24_span_4_Template, 3, 3, "span", 22);
588
616
  i0.ɵɵelementEnd();
589
617
  i0.ɵɵelement(5, "br");
590
618
  i0.ɵɵelementStart(6, "input", 35);
591
- i0.ɵɵlistener("input", function AlienDoctypeComponent_ng_template_23_Template_input_input_6_listener() { i0.ɵɵrestoreView(_r86); const ctx_r85 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r85.setPassportNumberValidator()); });
619
+ i0.ɵɵlistener("input", function AlienDoctypeComponent_ng_template_24_Template_input_input_6_listener() { i0.ɵɵrestoreView(_r86); const ctx_r85 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r85.setPassportNumberValidator()); });
620
+ i0.ɵɵpipe(7, "translate");
592
621
  i0.ɵɵelementEnd();
593
- i0.ɵɵelement(7, "app-error", 7);
622
+ i0.ɵɵelement(8, "app-error", 7);
594
623
  i0.ɵɵelementEnd();
595
624
  } if (rf & 2) {
596
625
  const ctx_r12 = i0.ɵɵnextContext();
@@ -602,60 +631,75 @@ function AlienDoctypeComponent_ng_template_23_Template(rf, ctx) { if (rf & 1) {
602
631
  i0.ɵɵadvance(2);
603
632
  i0.ɵɵproperty("ngIf", ctx_r12.isOptional(ctx_r12.alienDocPassportNumber));
604
633
  i0.ɵɵadvance(2);
605
- i0.ɵɵproperty("id", ctx_r12.inputId ? ctx_r12.inputId + "-alienDocPassportNumber" : "alienDocPassportNumber")("placeholder", ctx_r12.isOptional(ctx_r12.alienDocPassportNumber) ? "Optional" : "")("formControl", ctx_r12.alienDocPassportNumber);
606
- i0.ɵɵadvance(1);
634
+ i0.ɵɵproperty("id", ctx_r12.inputId ? ctx_r12.inputId + "-alienDocPassportNumber" : "alienDocPassportNumber")("placeholder", ctx_r12.isOptional(ctx_r12.alienDocPassportNumber) ? i0.ɵɵpipeBind1(7, 11, "common.optional") : "")("formControl", ctx_r12.alienDocPassportNumber);
635
+ i0.ɵɵadvance(2);
607
636
  i0.ɵɵproperty("field", ctx_r12.alienDocPassportNumber)("form", _r0)("errDef", ctx_r12.passportNumberErrDef);
608
637
  } }
609
- function AlienDoctypeComponent_ng_template_25_span_3_Template(rf, ctx) { if (rf & 1) {
638
+ function AlienDoctypeComponent_ng_template_26_span_4_Template(rf, ctx) { if (rf & 1) {
610
639
  i0.ɵɵelementStart(0, "span", 24);
611
- i0.ɵɵtext(1, " (Optional)");
640
+ i0.ɵɵtext(1);
641
+ i0.ɵɵpipe(2, "translate");
612
642
  i0.ɵɵelementEnd();
643
+ } if (rf & 2) {
644
+ i0.ɵɵadvance(1);
645
+ i0.ɵɵtextInterpolate1(" (", i0.ɵɵpipeBind1(2, 1, "common.optional"), ")");
613
646
  } }
614
647
  const _c3 = () => ({ "width": "100%" });
615
648
  const _c4 = () => ({ "text-transform": "uppercase" });
616
- const _c5 = () => ({ required: "Required" });
617
- function AlienDoctypeComponent_ng_template_25_Template(rf, ctx) { if (rf & 1) {
649
+ const _c5 = a0 => ({ required: a0 });
650
+ function AlienDoctypeComponent_ng_template_26_Template(rf, ctx) { if (rf & 1) {
618
651
  const _r89 = i0.ɵɵgetCurrentView();
619
652
  i0.ɵɵelementStart(0, "div", 21)(1, "label", 5);
620
- i0.ɵɵtext(2, "Country of Issuance");
621
- i0.ɵɵtemplate(3, AlienDoctypeComponent_ng_template_25_span_3_Template, 2, 0, "span", 22);
653
+ i0.ɵɵtext(2);
654
+ i0.ɵɵpipe(3, "translate");
655
+ i0.ɵɵtemplate(4, AlienDoctypeComponent_ng_template_26_span_4_Template, 3, 3, "span", 22);
622
656
  i0.ɵɵelementEnd();
623
- i0.ɵɵelement(4, "br");
624
- i0.ɵɵelementStart(5, "p-autoComplete", 36);
625
- i0.ɵɵlistener("completeMethod", function AlienDoctypeComponent_ng_template_25_Template_p_autoComplete_completeMethod_5_listener($event) { i0.ɵɵrestoreView(_r89); const ctx_r88 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r88.filterCountry($event)); })("onSelect", function AlienDoctypeComponent_ng_template_25_Template_p_autoComplete_onSelect_5_listener($event) { i0.ɵɵrestoreView(_r89); const ctx_r90 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r90.onCountrySelect($event)); })("onClear", function AlienDoctypeComponent_ng_template_25_Template_p_autoComplete_onClear_5_listener() { i0.ɵɵrestoreView(_r89); const ctx_r91 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r91.onCountryClear()); })("onKeyUp", function AlienDoctypeComponent_ng_template_25_Template_p_autoComplete_onKeyUp_5_listener($event) { i0.ɵɵrestoreView(_r89); const ctx_r92 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r92.onCountryKeyUp($event)); });
657
+ i0.ɵɵelement(5, "br");
658
+ i0.ɵɵelementStart(6, "p-autoComplete", 36);
659
+ i0.ɵɵlistener("completeMethod", function AlienDoctypeComponent_ng_template_26_Template_p_autoComplete_completeMethod_6_listener($event) { i0.ɵɵrestoreView(_r89); const ctx_r88 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r88.filterCountry($event)); })("onSelect", function AlienDoctypeComponent_ng_template_26_Template_p_autoComplete_onSelect_6_listener($event) { i0.ɵɵrestoreView(_r89); const ctx_r90 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r90.onCountrySelect($event)); })("onClear", function AlienDoctypeComponent_ng_template_26_Template_p_autoComplete_onClear_6_listener() { i0.ɵɵrestoreView(_r89); const ctx_r91 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r91.onCountryClear()); })("onKeyUp", function AlienDoctypeComponent_ng_template_26_Template_p_autoComplete_onKeyUp_6_listener($event) { i0.ɵɵrestoreView(_r89); const ctx_r92 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r92.onCountryKeyUp($event)); });
660
+ i0.ɵɵpipe(7, "translate");
661
+ i0.ɵɵpipe(8, "translate");
626
662
  i0.ɵɵelementEnd();
627
- i0.ɵɵelement(6, "app-error", 7);
663
+ i0.ɵɵelement(9, "app-error", 7);
664
+ i0.ɵɵpipe(10, "translate");
628
665
  i0.ɵɵelementEnd();
629
666
  } if (rf & 2) {
630
667
  const ctx_r14 = i0.ɵɵnextContext();
631
668
  const _r0 = i0.ɵɵreference(1);
632
669
  i0.ɵɵadvance(1);
633
670
  i0.ɵɵproperty("for", ctx_r14.inputId ? ctx_r14.inputId + "-countryOfIssuance" : "countryOfIssuance");
671
+ i0.ɵɵadvance(1);
672
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 16, "alien.doc.countryOfIssuance"));
634
673
  i0.ɵɵadvance(2);
635
674
  i0.ɵɵproperty("ngIf", ctx_r14.isOptional(ctx_r14.countryOfIssuance));
636
675
  i0.ɵɵadvance(2);
637
- i0.ɵɵstyleMap(i0.ɵɵpureFunction0(15, _c3));
638
- i0.ɵɵproperty("id", ctx_r14.inputId ? ctx_r14.inputId + "-countryOfIssuance" : "countryOfIssuance")("formControl", ctx_r14.countryOfIssuance)("suggestions", ctx_r14.filteredCountries)("dropdown", false)("maxlength", 3)("forceSelection", true)("placeholder", ctx_r14.isOptional(ctx_r14.countryOfIssuance) ? "Optional" : "Start... Typing Country Code")("inputStyle", i0.ɵɵpureFunction0(16, _c4));
639
- i0.ɵɵadvance(1);
640
- i0.ɵɵproperty("field", ctx_r14.countryOfIssuance)("form", _r0)("errDef", i0.ɵɵpureFunction0(17, _c5));
676
+ i0.ɵɵstyleMap(i0.ɵɵpureFunction0(24, _c3));
677
+ i0.ɵɵproperty("id", ctx_r14.inputId ? ctx_r14.inputId + "-countryOfIssuance" : "countryOfIssuance")("formControl", ctx_r14.countryOfIssuance)("suggestions", ctx_r14.filteredCountries)("dropdown", false)("maxlength", 3)("forceSelection", true)("placeholder", ctx_r14.isOptional(ctx_r14.countryOfIssuance) ? i0.ɵɵpipeBind1(7, 18, "common.optional") : i0.ɵɵpipeBind1(8, 20, "alien.doc.countryOfIssuance.placeholder"))("inputStyle", i0.ɵɵpureFunction0(25, _c4));
678
+ i0.ɵɵadvance(3);
679
+ i0.ɵɵproperty("field", ctx_r14.countryOfIssuance)("form", _r0)("errDef", i0.ɵɵpureFunction1(26, _c5, i0.ɵɵpipeBind1(10, 22, "alien.doc.error.required")));
641
680
  } }
642
- function AlienDoctypeComponent_ng_template_27_span_4_Template(rf, ctx) { if (rf & 1) {
681
+ function AlienDoctypeComponent_ng_template_28_span_4_Template(rf, ctx) { if (rf & 1) {
643
682
  i0.ɵɵelementStart(0, "span", 24);
644
- i0.ɵɵtext(1, " (Optional)");
683
+ i0.ɵɵtext(1);
684
+ i0.ɵɵpipe(2, "translate");
645
685
  i0.ɵɵelementEnd();
686
+ } if (rf & 2) {
687
+ i0.ɵɵadvance(1);
688
+ i0.ɵɵtextInterpolate1(" (", i0.ɵɵpipeBind1(2, 1, "common.optional"), ")");
646
689
  } }
647
- function AlienDoctypeComponent_ng_template_27_Template(rf, ctx) { if (rf & 1) {
690
+ function AlienDoctypeComponent_ng_template_28_Template(rf, ctx) { if (rf & 1) {
648
691
  const _r95 = i0.ɵɵgetCurrentView();
649
692
  i0.ɵɵelementStart(0, "div", 21)(1, "label", 5);
650
693
  i0.ɵɵtext(2);
651
694
  i0.ɵɵpipe(3, "translate");
652
- i0.ɵɵtemplate(4, AlienDoctypeComponent_ng_template_27_span_4_Template, 2, 0, "span", 22);
695
+ i0.ɵɵtemplate(4, AlienDoctypeComponent_ng_template_28_span_4_Template, 3, 3, "span", 22);
653
696
  i0.ɵɵelementEnd();
654
697
  i0.ɵɵelement(5, "br");
655
698
  i0.ɵɵelementStart(6, "input", 37);
656
- i0.ɵɵlistener("input", function AlienDoctypeComponent_ng_template_27_Template_input_input_6_listener() { i0.ɵɵrestoreView(_r95); const ctx_r94 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r94.setVisaValidator()); });
699
+ i0.ɵɵlistener("input", function AlienDoctypeComponent_ng_template_28_Template_input_input_6_listener() { i0.ɵɵrestoreView(_r95); const ctx_r94 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r94.setVisaValidator()); });
700
+ i0.ɵɵpipe(7, "translate");
657
701
  i0.ɵɵelementEnd();
658
- i0.ɵɵelement(7, "app-error", 7);
702
+ i0.ɵɵelement(8, "app-error", 7);
659
703
  i0.ɵɵelementEnd();
660
704
  } if (rf & 2) {
661
705
  const ctx_r16 = i0.ɵɵnextContext();
@@ -667,27 +711,32 @@ function AlienDoctypeComponent_ng_template_27_Template(rf, ctx) { if (rf & 1) {
667
711
  i0.ɵɵadvance(2);
668
712
  i0.ɵɵproperty("ngIf", ctx_r16.isOptional(ctx_r16.visaNumber));
669
713
  i0.ɵɵadvance(2);
670
- i0.ɵɵproperty("id", ctx_r16.inputId ? ctx_r16.inputId + "-visaNumber" : "visaNumber")("formControl", ctx_r16.visaNumber)("placeholder", ctx_r16.isOptional(ctx_r16.visaNumber) ? "Optional" : "");
671
- i0.ɵɵadvance(1);
714
+ i0.ɵɵproperty("id", ctx_r16.inputId ? ctx_r16.inputId + "-visaNumber" : "visaNumber")("formControl", ctx_r16.visaNumber)("placeholder", ctx_r16.isOptional(ctx_r16.visaNumber) ? i0.ɵɵpipeBind1(7, 11, "common.optional") : "");
715
+ i0.ɵɵadvance(2);
672
716
  i0.ɵɵproperty("field", ctx_r16.visaNumber)("form", _r0)("errDef", ctx_r16.visaNumberErrDef);
673
717
  } }
674
- function AlienDoctypeComponent_ng_template_29_span_4_Template(rf, ctx) { if (rf & 1) {
718
+ function AlienDoctypeComponent_ng_template_30_span_4_Template(rf, ctx) { if (rf & 1) {
675
719
  i0.ɵɵelementStart(0, "span", 24);
676
- i0.ɵɵtext(1, " (Optional)");
720
+ i0.ɵɵtext(1);
721
+ i0.ɵɵpipe(2, "translate");
677
722
  i0.ɵɵelementEnd();
723
+ } if (rf & 2) {
724
+ i0.ɵɵadvance(1);
725
+ i0.ɵɵtextInterpolate1(" (", i0.ɵɵpipeBind1(2, 1, "common.optional"), ")");
678
726
  } }
679
- function AlienDoctypeComponent_ng_template_29_Template(rf, ctx) { if (rf & 1) {
727
+ function AlienDoctypeComponent_ng_template_30_Template(rf, ctx) { if (rf & 1) {
680
728
  const _r98 = i0.ɵɵgetCurrentView();
681
729
  i0.ɵɵelementStart(0, "div", 21)(1, "label", 5);
682
730
  i0.ɵɵtext(2);
683
731
  i0.ɵɵpipe(3, "translate");
684
- i0.ɵɵtemplate(4, AlienDoctypeComponent_ng_template_29_span_4_Template, 2, 0, "span", 22);
732
+ i0.ɵɵtemplate(4, AlienDoctypeComponent_ng_template_30_span_4_Template, 3, 3, "span", 22);
685
733
  i0.ɵɵelementEnd();
686
734
  i0.ɵɵelement(5, "br");
687
735
  i0.ɵɵelementStart(6, "input", 38);
688
- i0.ɵɵlistener("input", function AlienDoctypeComponent_ng_template_29_Template_input_input_6_listener() { i0.ɵɵrestoreView(_r98); const ctx_r97 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r97.setNaturalizationNumberValidator()); });
736
+ i0.ɵɵlistener("input", function AlienDoctypeComponent_ng_template_30_Template_input_input_6_listener() { i0.ɵɵrestoreView(_r98); const ctx_r97 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r97.setNaturalizationNumberValidator()); });
737
+ i0.ɵɵpipe(7, "translate");
689
738
  i0.ɵɵelementEnd();
690
- i0.ɵɵelement(7, "app-error", 7);
739
+ i0.ɵɵelement(8, "app-error", 7);
691
740
  i0.ɵɵelementEnd();
692
741
  } if (rf & 2) {
693
742
  const ctx_r18 = i0.ɵɵnextContext();
@@ -699,27 +748,32 @@ function AlienDoctypeComponent_ng_template_29_Template(rf, ctx) { if (rf & 1) {
699
748
  i0.ɵɵadvance(2);
700
749
  i0.ɵɵproperty("ngIf", ctx_r18.isOptional(ctx_r18.naturalizationNumber));
701
750
  i0.ɵɵadvance(2);
702
- i0.ɵɵproperty("id", ctx_r18.inputId ? ctx_r18.inputId + "-naturalizationNumber" : "naturalizationNumber")("formControl", ctx_r18.naturalizationNumber)("placeholder", ctx_r18.isOptional(ctx_r18.naturalizationNumber) ? "Optional" : "");
703
- i0.ɵɵadvance(1);
751
+ i0.ɵɵproperty("id", ctx_r18.inputId ? ctx_r18.inputId + "-naturalizationNumber" : "naturalizationNumber")("formControl", ctx_r18.naturalizationNumber)("placeholder", ctx_r18.isOptional(ctx_r18.naturalizationNumber) ? i0.ɵɵpipeBind1(7, 11, "common.optional") : "");
752
+ i0.ɵɵadvance(2);
704
753
  i0.ɵɵproperty("field", ctx_r18.naturalizationNumber)("form", _r0)("errDef", ctx_r18.naturalizationNumberErrDef);
705
754
  } }
706
- function AlienDoctypeComponent_ng_template_31_span_4_Template(rf, ctx) { if (rf & 1) {
755
+ function AlienDoctypeComponent_ng_template_32_span_4_Template(rf, ctx) { if (rf & 1) {
707
756
  i0.ɵɵelementStart(0, "span", 24);
708
- i0.ɵɵtext(1, " (Optional)");
757
+ i0.ɵɵtext(1);
758
+ i0.ɵɵpipe(2, "translate");
709
759
  i0.ɵɵelementEnd();
760
+ } if (rf & 2) {
761
+ i0.ɵɵadvance(1);
762
+ i0.ɵɵtextInterpolate1(" (", i0.ɵɵpipeBind1(2, 1, "common.optional"), ")");
710
763
  } }
711
- function AlienDoctypeComponent_ng_template_31_Template(rf, ctx) { if (rf & 1) {
764
+ function AlienDoctypeComponent_ng_template_32_Template(rf, ctx) { if (rf & 1) {
712
765
  const _r101 = i0.ɵɵgetCurrentView();
713
766
  i0.ɵɵelementStart(0, "div", 21)(1, "label", 5);
714
767
  i0.ɵɵtext(2);
715
768
  i0.ɵɵpipe(3, "translate");
716
- i0.ɵɵtemplate(4, AlienDoctypeComponent_ng_template_31_span_4_Template, 2, 0, "span", 22);
769
+ i0.ɵɵtemplate(4, AlienDoctypeComponent_ng_template_32_span_4_Template, 3, 3, "span", 22);
717
770
  i0.ɵɵelementEnd();
718
771
  i0.ɵɵelement(5, "br");
719
772
  i0.ɵɵelementStart(6, "input", 39);
720
- i0.ɵɵlistener("input", function AlienDoctypeComponent_ng_template_31_Template_input_input_6_listener() { i0.ɵɵrestoreView(_r101); const ctx_r100 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r100.setCitizenshipNumberValidator()); });
773
+ i0.ɵɵlistener("input", function AlienDoctypeComponent_ng_template_32_Template_input_input_6_listener() { i0.ɵɵrestoreView(_r101); const ctx_r100 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r100.setCitizenshipNumberValidator()); });
774
+ i0.ɵɵpipe(7, "translate");
721
775
  i0.ɵɵelementEnd();
722
- i0.ɵɵelement(7, "app-error", 7);
776
+ i0.ɵɵelement(8, "app-error", 7);
723
777
  i0.ɵɵelementEnd();
724
778
  } if (rf & 2) {
725
779
  const ctx_r20 = i0.ɵɵnextContext();
@@ -731,8 +785,8 @@ function AlienDoctypeComponent_ng_template_31_Template(rf, ctx) { if (rf & 1) {
731
785
  i0.ɵɵadvance(2);
732
786
  i0.ɵɵproperty("ngIf", ctx_r20.isOptional(ctx_r20.citizenshipNumber));
733
787
  i0.ɵɵadvance(2);
734
- i0.ɵɵproperty("id", ctx_r20.inputId ? ctx_r20.inputId + "-citizenshipNumber" : "citizenshipNumber")("formControl", ctx_r20.citizenshipNumber)("placeholder", ctx_r20.isOptional(ctx_r20.citizenshipNumber) ? "Optional" : "");
735
- i0.ɵɵadvance(1);
788
+ i0.ɵɵproperty("id", ctx_r20.inputId ? ctx_r20.inputId + "-citizenshipNumber" : "citizenshipNumber")("formControl", ctx_r20.citizenshipNumber)("placeholder", ctx_r20.isOptional(ctx_r20.citizenshipNumber) ? i0.ɵɵpipeBind1(7, 11, "common.optional") : "");
789
+ i0.ɵɵadvance(2);
736
790
  i0.ɵɵproperty("field", ctx_r20.citizenshipNumber)("form", _r0)("errDef", ctx_r20.citizenshipNumberErrDef);
737
791
  } }
738
792
  export class AlienDoctypeComponent {
@@ -1146,7 +1200,7 @@ export class AlienDoctypeComponent {
1146
1200
  };
1147
1201
  this.expDateRequiredErrDef = {
1148
1202
  required: this.translateService.instant('alien.doc.error.required'),
1149
- invalidDateFormat: 'Date format should be mm/dd/yyyy'
1203
+ invalidDateFormat: this.translateService.instant('alien.doc.error.invalidDateFormat')
1150
1204
  };
1151
1205
  this.passportNumberErrDef = {
1152
1206
  required: this.translateService.instant('alien.doc.error.required'),
@@ -1478,16 +1532,17 @@ export class AlienDoctypeComponent {
1478
1532
  multi: true,
1479
1533
  useExisting: AlienDoctypeComponent
1480
1534
  }
1481
- ])], decls: 33, vars: 16, consts: [[2, "margin-bottom", "0px", "margin-left", "0px", 3, "formGroup"], ["alienDocTypeFormDirective", "ngForm"], [1, "p-formgrid", 3, "id"], [2, "padding-bottom", "0px", 3, "ngClass"], [1, "field", 2, "margin-bottom", "0px", "padding-bottom", "10px"], [3, "for"], ["optionLabel", "text", "appendTo", "body", 3, "options", "formControl", "autoDisplayFirst", "inputId"], [3, "field", "form", "errDef"], [4, "ngIf"], ["alienNumberTpl", ""], ["expDateTpl", ""], ["cardNumberTpl", ""], ["i94NumberTpl", ""], ["sevisIdTpl", ""], ["passportNumberTpl", ""], ["countryOfIssuanceTpl", ""], ["visaNumberTpl", ""], ["naturalizationNumberTpl", ""], ["citizenshipNumberTpl", ""], [4, "ngTemplateOutlet"], ["style", "padding-bottom: 0px;", 3, "ngClass", 4, "ngIf"], [1, "field", 2, "margin-bottom", "0px"], ["class", "optional-label", 4, "ngIf"], ["type", "input", "pInputText", "", "maxlength", "9", "oninput", "this.value = this.value.replace(/\\D+/g, '')", 3, "id", "formControl", "placeholder", "input"], [1, "optional-label"], [1, "p-inputgroup"], ["type", "text", "pInputText", "", 3, "input", "keydown"], ["expDateInput", ""], ["type", "button", "pButton", "", "icon", "pi pi-calendar", 1, "p-button-secondary", 3, "click"], ["appendTo", "body"], ["expDateOverlay", ""], ["yearRange", "1901:2050", "dateFormat", "mm/dd/yy", "dataType", "date", 3, "inline", "yearNavigator", "onMonthChange", "onYearChange", "onSelect"], ["type", "input", "pInputText", "", "maxlength", "13", "oninput", "this.value = this.value.replace(/[^a-zA-Z0-9]/g, '').toUpperCase()", 3, "id", "formControl", "placeholder", "input"], ["type", "input", "pInputText", "", "maxlength", "11", "oninput", "this.value = this.value.replace(/[^a-zA-Z0-9]/g, '').toUpperCase()", 3, "id", "formControl", "placeholder", "input"], ["type", "input", "pInputText", "", "maxlength", "10", "oninput", "this.value = this.value.replace(/\\D+/g, '')", 3, "id", "formControl", "placeholder", "input"], ["oninput", "this.value = this.value.replace(/[^a-zA-Z0-9]/g, '').toUpperCase()", "type", "input", "pInputText", "", 3, "id", "placeholder", "formControl", "input"], ["field", "value", "styleClass", "country-autocomplete", "appendTo", "body", 3, "id", "formControl", "suggestions", "dropdown", "maxlength", "forceSelection", "placeholder", "inputStyle", "completeMethod", "onSelect", "onClear", "onKeyUp"], ["type", "input", "pInputText", "", "maxlength", "10", "oninput", "this.value = this.value.replace(/[^a-zA-Z0-9]/g, '').toUpperCase()", 3, "id", "formControl", "placeholder", "input"], ["type", "input", "pInputText", "", "minlength", "6", "maxlength", "12", "oninput", "this.value = this.value.replace(/[^a-zA-Z0-9]/g, '').toUpperCase()", 3, "id", "formControl", "placeholder", "input"], ["type", "input", "pInputText", "", "minlength", "6", "maxlength", "12", "oninput", "this.value = this.value.replace(/[^a-zA-Z0-9]/g, '')", 3, "id", "formControl", "placeholder", "input"]], template: function AlienDoctypeComponent_Template(rf, ctx) { if (rf & 1) {
1535
+ ])], decls: 34, vars: 19, consts: [[2, "margin-bottom", "0px", "margin-left", "0px", 3, "formGroup"], ["alienDocTypeFormDirective", "ngForm"], [1, "p-formgrid", 3, "id"], [2, "padding-bottom", "0px", 3, "ngClass"], [1, "field", 2, "margin-bottom", "0px", "padding-bottom", "10px"], [3, "for"], ["optionLabel", "text", "appendTo", "body", 3, "options", "formControl", "autoDisplayFirst", "inputId"], [3, "field", "form", "errDef"], [4, "ngIf"], ["alienNumberTpl", ""], ["expDateTpl", ""], ["cardNumberTpl", ""], ["i94NumberTpl", ""], ["sevisIdTpl", ""], ["passportNumberTpl", ""], ["countryOfIssuanceTpl", ""], ["visaNumberTpl", ""], ["naturalizationNumberTpl", ""], ["citizenshipNumberTpl", ""], [4, "ngTemplateOutlet"], ["style", "padding-bottom: 0px;", 3, "ngClass", 4, "ngIf"], [1, "field", 2, "margin-bottom", "0px"], ["class", "optional-label", 4, "ngIf"], ["type", "input", "pInputText", "", "maxlength", "9", "oninput", "this.value = this.value.replace(/\\D+/g, '')", 3, "id", "formControl", "placeholder", "input"], [1, "optional-label"], [1, "p-inputgroup"], ["type", "text", "pInputText", "", 3, "input", "keydown"], ["expDateInput", ""], ["type", "button", "pButton", "", "icon", "pi pi-calendar", 1, "p-button-secondary", 3, "click"], ["appendTo", "body"], ["expDateOverlay", ""], ["yearRange", "1901:2050", "dateFormat", "mm/dd/yy", "dataType", "date", 3, "inline", "yearNavigator", "onMonthChange", "onYearChange", "onSelect"], ["type", "input", "pInputText", "", "maxlength", "13", "oninput", "this.value = this.value.replace(/[^a-zA-Z0-9]/g, '').toUpperCase()", 3, "id", "formControl", "placeholder", "input"], ["type", "input", "pInputText", "", "maxlength", "11", "oninput", "this.value = this.value.replace(/[^a-zA-Z0-9]/g, '').toUpperCase()", 3, "id", "formControl", "placeholder", "input"], ["type", "input", "pInputText", "", "maxlength", "10", "oninput", "this.value = this.value.replace(/\\D+/g, '')", 3, "id", "formControl", "placeholder", "input"], ["oninput", "this.value = this.value.replace(/[^a-zA-Z0-9]/g, '').toUpperCase()", "type", "input", "pInputText", "", 3, "id", "placeholder", "formControl", "input"], ["field", "value", "styleClass", "country-autocomplete", "appendTo", "body", 3, "id", "formControl", "suggestions", "dropdown", "maxlength", "forceSelection", "placeholder", "inputStyle", "completeMethod", "onSelect", "onClear", "onKeyUp"], ["type", "input", "pInputText", "", "maxlength", "10", "oninput", "this.value = this.value.replace(/[^a-zA-Z0-9]/g, '').toUpperCase()", 3, "id", "formControl", "placeholder", "input"], ["type", "input", "pInputText", "", "minlength", "6", "maxlength", "12", "oninput", "this.value = this.value.replace(/[^a-zA-Z0-9]/g, '').toUpperCase()", 3, "id", "formControl", "placeholder", "input"], ["type", "input", "pInputText", "", "minlength", "6", "maxlength", "12", "oninput", "this.value = this.value.replace(/[^a-zA-Z0-9]/g, '')", 3, "id", "formControl", "placeholder", "input"]], template: function AlienDoctypeComponent_Template(rf, ctx) { if (rf & 1) {
1482
1536
  i0.ɵɵelementStart(0, "form", 0, 1)(2, "div", 2)(3, "ion-row")(4, "ion-col", 3)(5, "div", 4)(6, "label", 5);
1483
1537
  i0.ɵɵtext(7);
1484
1538
  i0.ɵɵpipe(8, "translate");
1485
1539
  i0.ɵɵelementEnd();
1486
1540
  i0.ɵɵelement(9, "br")(10, "app-dropdown", 6)(11, "app-error", 7);
1541
+ i0.ɵɵpipe(12, "translate");
1487
1542
  i0.ɵɵelementEnd()()();
1488
- i0.ɵɵtemplate(12, AlienDoctypeComponent_div_12_Template, 8, 7, "div", 8);
1543
+ i0.ɵɵtemplate(13, AlienDoctypeComponent_div_13_Template, 8, 7, "div", 8);
1489
1544
  i0.ɵɵelementEnd()();
1490
- i0.ɵɵtemplate(13, AlienDoctypeComponent_ng_template_13_Template, 8, 11, "ng-template", null, 9, i0.ɵɵtemplateRefExtractor)(15, AlienDoctypeComponent_ng_template_15_Template, 14, 9, "ng-template", null, 10, i0.ɵɵtemplateRefExtractor)(17, AlienDoctypeComponent_ng_template_17_Template, 8, 11, "ng-template", null, 11, i0.ɵɵtemplateRefExtractor)(19, AlienDoctypeComponent_ng_template_19_Template, 8, 11, "ng-template", null, 12, i0.ɵɵtemplateRefExtractor)(21, AlienDoctypeComponent_ng_template_21_Template, 8, 11, "ng-template", null, 13, i0.ɵɵtemplateRefExtractor)(23, AlienDoctypeComponent_ng_template_23_Template, 8, 11, "ng-template", null, 14, i0.ɵɵtemplateRefExtractor)(25, AlienDoctypeComponent_ng_template_25_Template, 7, 18, "ng-template", null, 15, i0.ɵɵtemplateRefExtractor)(27, AlienDoctypeComponent_ng_template_27_Template, 8, 11, "ng-template", null, 16, i0.ɵɵtemplateRefExtractor)(29, AlienDoctypeComponent_ng_template_29_Template, 8, 11, "ng-template", null, 17, i0.ɵɵtemplateRefExtractor)(31, AlienDoctypeComponent_ng_template_31_Template, 8, 11, "ng-template", null, 18, i0.ɵɵtemplateRefExtractor);
1545
+ i0.ɵɵtemplate(14, AlienDoctypeComponent_ng_template_14_Template, 9, 13, "ng-template", null, 9, i0.ɵɵtemplateRefExtractor)(16, AlienDoctypeComponent_ng_template_16_Template, 14, 9, "ng-template", null, 10, i0.ɵɵtemplateRefExtractor)(18, AlienDoctypeComponent_ng_template_18_Template, 9, 13, "ng-template", null, 11, i0.ɵɵtemplateRefExtractor)(20, AlienDoctypeComponent_ng_template_20_Template, 9, 13, "ng-template", null, 12, i0.ɵɵtemplateRefExtractor)(22, AlienDoctypeComponent_ng_template_22_Template, 9, 13, "ng-template", null, 13, i0.ɵɵtemplateRefExtractor)(24, AlienDoctypeComponent_ng_template_24_Template, 9, 13, "ng-template", null, 14, i0.ɵɵtemplateRefExtractor)(26, AlienDoctypeComponent_ng_template_26_Template, 11, 28, "ng-template", null, 15, i0.ɵɵtemplateRefExtractor)(28, AlienDoctypeComponent_ng_template_28_Template, 9, 13, "ng-template", null, 16, i0.ɵɵtemplateRefExtractor)(30, AlienDoctypeComponent_ng_template_30_Template, 9, 13, "ng-template", null, 17, i0.ɵɵtemplateRefExtractor)(32, AlienDoctypeComponent_ng_template_32_Template, 9, 13, "ng-template", null, 18, i0.ɵɵtemplateRefExtractor);
1491
1546
  } if (rf & 2) {
1492
1547
  const _r0 = i0.ɵɵreference(1);
1493
1548
  i0.ɵɵproperty("formGroup", ctx.alienDocTypeForm);
@@ -1502,8 +1557,8 @@ export class AlienDoctypeComponent {
1502
1557
  i0.ɵɵadvance(3);
1503
1558
  i0.ɵɵproperty("options", ctx.alienDocTypeOptions)("formControl", ctx.alienDocType)("autoDisplayFirst", false)("inputId", ctx.inputId ? ctx.inputId + "-alienDocType" : "alienDocType");
1504
1559
  i0.ɵɵadvance(1);
1505
- i0.ɵɵproperty("field", ctx.alienDocType)("form", _r0)("errDef", i0.ɵɵpureFunction0(15, _c5));
1506
- i0.ɵɵadvance(1);
1560
+ i0.ɵɵproperty("field", ctx.alienDocType)("form", _r0)("errDef", i0.ɵɵpureFunction1(17, _c5, i0.ɵɵpipeBind1(12, 15, "alien.doc.error.required")));
1561
+ i0.ɵɵadvance(2);
1507
1562
  i0.ɵɵproperty("ngIf", ctx.selectedKey);
1508
1563
  } }, dependencies: [i5.IonCol, i5.IonRow, i6.NgClass, i6.NgIf, i6.NgTemplateOutlet, i7.ButtonDirective, i1.ɵNgNoValidate, i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgControlStatusGroup, i1.MinLengthValidator, i1.MaxLengthValidator, i1.FormControlDirective, i1.FormGroupDirective, i8.AutoComplete, i9.InputText, i10.Calendar, i11.OverlayPanel, i12.ErrorComponent, i13.Dropdown, i4.TranslatePipe], styles: [".col[_ngcontent-%COMP%]{padding-top:0;padding-bottom:0}.form-lbl[_ngcontent-%COMP%]{padding-bottom:6px}.optional-label[_ngcontent-%COMP%]{font-style:italic;color:#6c757d;font-size:.85em}.inline-flex[_ngcontent-%COMP%]{display:inline-flex}ion-col[_ngcontent-%COMP%]{padding-left:0}.app-col[_ngcontent-%COMP%]{margin-left:27px;padding-right:0}ion-row[_ngcontent-%COMP%]{align-items:flex-start!important;margin-bottom:10px;flex-wrap:nowrap}ion-col.col-fit-content[_ngcontent-%COMP%]{flex:1 1 0;min-width:0;padding-right:10px}.field[_ngcontent-%COMP%]{margin-bottom:5px;max-width:100%;overflow:hidden}.field[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{width:100%;box-sizing:border-box}[_nghost-%COMP%] .field p-autoComplete{display:block;width:100%}[_nghost-%COMP%] .field p-autoComplete .p-autocomplete{width:100%}[_nghost-%COMP%] .field p-autoComplete .p-autocomplete input{width:100%}[_nghost-%COMP%] .country-autocomplete .p-autocomplete{width:100%}[_nghost-%COMP%] .country-autocomplete input::placeholder{text-transform:none}[_nghost-%COMP%] .field app-error{display:block;white-space:normal;word-wrap:break-word;overflow-wrap:break-word;margin-top:4px;max-width:100%}@media (max-width: 767px){ion-row[_ngcontent-%COMP%]{flex-direction:column}ion-col[_ngcontent-%COMP%], .col-fit-content[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;flex:0 0 100%!important}.field[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{width:100%}[_nghost-%COMP%] p-calendar{width:100%}[_nghost-%COMP%] p-calendar .p-calendar{width:100%}ion-col[_ngcontent-%COMP%]{padding-bottom:5px!important}}"] }); }
1509
1564
  }
@@ -1519,7 +1574,7 @@ export class AlienDoctypeComponent {
1519
1574
  multi: true,
1520
1575
  useExisting: AlienDoctypeComponent
1521
1576
  }
1522
- ], template: "<form [formGroup]=\"alienDocTypeForm\" #alienDocTypeFormDirective=\"ngForm\" style=\"margin-bottom: 0px; margin-left: 0px;\">\r\n <div class=\"p-formgrid\" [id]=\"inputId ? inputId : 'alienDoc-div'\">\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <div class=\"field\" style=\"margin-bottom: 0px; padding-bottom: 10px;\">\r\n <label [for]=\"inputId ? inputId + '-alienDocType' : 'alienDocType'\">{{'alien.doc.heading' | translate}}</label><br />\r\n <app-dropdown [options]=\"alienDocTypeOptions\" [formControl]=\"alienDocType\" optionLabel=\"text\" appendTo=\"body\"\r\n [autoDisplayFirst]=\"false\" [inputId]=\"inputId ? inputId + '-alienDocType' : 'alienDocType'\"></app-dropdown>\r\n <app-error [field]='alienDocType' [form]=\"alienDocTypeFormDirective\" [errDef]=\"{\r\n required: 'Required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n\r\n <div *ngIf=\"selectedKey\">\r\n\r\n <!-- I-327 (Reentry Permit), I-571 (Refugee Travel Document) -->\r\n <div *ngIf=\"I327\">\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"alienNumberTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"expDateTpl\"></ng-container>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n\r\n <!-- I-551 (Permanent Resident Card), I-766 (Employment Authorization Card) -->\r\n <div *ngIf=\"I551\">\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"alienNumberTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"cardNumberTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"expDateTpl\"></ng-container>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n\r\n <!-- CECI, CECH, NATC - Certificate of Citizenship / Certificate Check / Naturalization Certificate -->\r\n <div *ngIf=\"CECI\">\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"alienNumberTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col *ngIf=\"selectedKey==='CECH' || selectedKey==='NATC'\" [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"naturalizationNumberTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col *ngIf=\"selectedKey==='CECI'\" [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"citizenshipNumberTpl\"></ng-container>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n\r\n <!-- T551 / MRIV -->\r\n <div *ngIf=\"T551\">\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"alienNumberTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"passportNumberTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col *ngIf=\"MRIV\" [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"countryOfIssuanceTpl\"></ng-container>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row>\r\n <div *ngIf=\"MRIV\">\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"visaNumberTpl\"></ng-container>\r\n </ion-col>\r\n </div>\r\n <ion-col *ngIf=\"!MRIV\" [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"countryOfIssuanceTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"expDateTpl\"></ng-container>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n\r\n <!-- I-94 -->\r\n <div *ngIf=\"I94\">\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"i94NumberTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"sevisIdTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"expDateTpl\"></ng-container>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n\r\n <!-- I-94 Unexpired -->\r\n <div *ngIf=\"I94U\">\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"i94NumberTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"visaNumberTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"passportNumberTpl\"></ng-container>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"countryOfIssuanceTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"sevisIdTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"expDateTpl\"></ng-container>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n\r\n\r\n <!-- I-20 or DS-2019 -->\r\n <div *ngIf=\"DS2019DocType\">\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"i94NumberTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"passportNumberTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"countryOfIssuanceTpl\"></ng-container>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"sevisIdTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"expDateTpl\"></ng-container>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n </div>\r\n</form>\r\n\r\n<!-- Reusable Templates -->\r\n\r\n<ng-template #alienNumberTpl>\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-alienNumber' : 'alienNumber'\">{{'alien.doc.number' | translate}}<span *ngIf=\"isOptional(alienNumber)\" class=\"optional-label\"> (Optional)</span></label><br />\r\n <input [id]=\"inputId ? inputId + '-alienNumber' : 'alienNumber'\" type=\"input\" pInputText [formControl]=\"alienNumber\"\r\n maxlength=\"9\"\r\n oninput=\"this.value = this.value.replace(/\\D+/g, '')\"\r\n [placeholder]=\"isOptional(alienNumber) ? 'Optional' : ''\"\r\n (input)=\"setalienNumberValidator()\" />\r\n <app-error [field]='alienNumber' [form]=\"alienDocTypeFormDirective\" [errDef]=\"alienNumberErrDef\"></app-error>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #expDateTpl>\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label>{{'alien.doc.alienDocExpDate' | translate}}<span *ngIf=\"isOptional(alienDocExpDate)\" class=\"optional-label\"> (Optional)</span></label><br />\r\n <div class=\"p-inputgroup\">\r\n <input #expDateInput type=\"text\" pInputText\r\n (input)=\"onExpDateInput($event)\"\r\n (keydown)=\"onExpDateKeyDown($event, expDateInput)\" />\r\n <button type=\"button\" pButton icon=\"pi pi-calendar\" class=\"p-button-secondary\"\r\n (click)=\"expDateOverlay.toggle($event)\"></button>\r\n </div>\r\n <p-overlayPanel #expDateOverlay appendTo=\"body\">\r\n <p-calendar [inline]=\"true\"\r\n [yearNavigator]=\"true\" yearRange=\"1901:2050\" dateFormat=\"mm/dd/yy\"\r\n dataType=\"date\"\r\n (onMonthChange)=\"calendarPickerActive = true\"\r\n (onYearChange)=\"calendarPickerActive = true\"\r\n (onSelect)=\"calendarPickerActive = true; onExpDatePickerSelect($event, expDateOverlay, expDateInput)\">\r\n </p-calendar>\r\n </p-overlayPanel>\r\n <app-error [field]='alienDocExpDate' [form]=\"alienDocTypeFormDirective\" [errDef]=\"expDateRequiredErrDef\"></app-error>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n<ng-template #cardNumberTpl>\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-cardNumber' : 'cardNumber'\">{{'alien.doc.cardNumber' | translate}}<span *ngIf=\"isOptional(cardNumber)\" class=\"optional-label\"> (Optional)</span></label><br />\r\n <input [id]=\"inputId ? inputId + '-cardNumber' : 'cardNumber'\" type=\"input\" pInputText [formControl]=\"cardNumber\"\r\n maxlength=\"13\"\r\n oninput=\"this.value = this.value.replace(/[^a-zA-Z0-9]/g, '').toUpperCase()\"\r\n [placeholder]=\"isOptional(cardNumber) ? 'Optional' : ''\"\r\n (input)=\"setcardNumberValidator()\" />\r\n <app-error [field]='cardNumber' [form]=\"alienDocTypeFormDirective\" [errDef]=\"cardNumberErrDef\"></app-error>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #i94NumberTpl>\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-alienDocNumberI94' : 'alienDocNumberI94'\">{{'alien.doc.alienDocNumberI94' | translate}}<span *ngIf=\"isOptional(alienDocNumberI94)\" class=\"optional-label\"> (Optional)</span></label><br />\r\n <input [id]=\"inputId ? inputId + '-alienDocNumberI94' : 'alienDocNumberI94'\" type=\"input\" pInputText [formControl]=\"alienDocNumberI94\"\r\n maxlength=\"11\"\r\n oninput=\"this.value = this.value.replace(/[^a-zA-Z0-9]/g, '').toUpperCase()\"\r\n [placeholder]=\"isOptional(alienDocNumberI94) ? 'Optional' : ''\"\r\n (input)=\"setI94NumberValidator()\" />\r\n <app-error [field]='alienDocNumberI94' [form]=\"alienDocTypeFormDirective\" [errDef]=\"i94NumberErrDef\"></app-error>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #sevisIdTpl>\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-alienDocSvsId' : 'alienDocSvsId'\">{{'alien.doc.alienDocSvsId' | translate}}<span *ngIf=\"isOptional(alienDocSvsId)\" class=\"optional-label\"> (Optional)</span></label><br />\r\n <input [id]=\"inputId ? inputId + '-alienDocSvsId' : 'alienDocSvsId'\" type=\"input\" pInputText [formControl]=\"alienDocSvsId\"\r\n maxlength=\"10\"\r\n oninput=\"this.value = this.value.replace(/\\D+/g, '')\"\r\n (input)=\"setSVISIdValidator()\" [placeholder]=\"isOptional(alienDocSvsId) ? 'Optional' : ''\" />\r\n <app-error [field]='alienDocSvsId' [form]=\"alienDocTypeFormDirective\" [errDef]=\"sevisIdErrDef\"></app-error>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #passportNumberTpl>\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-alienDocPassportNumber' : 'alienDocPassportNumber'\">{{'alien.doc.alienDocPassportNumber' | translate}}<span *ngIf=\"isOptional(alienDocPassportNumber)\" class=\"optional-label\"> (Optional)</span></label><br />\r\n <input [id]=\"inputId ? inputId + '-alienDocPassportNumber' : 'alienDocPassportNumber'\"\r\n (input)=\"setPassportNumberValidator()\"\r\n oninput=\"this.value = this.value.replace(/[^a-zA-Z0-9]/g, '').toUpperCase()\"\r\n [placeholder]=\"isOptional(alienDocPassportNumber) ? 'Optional' : ''\"\r\n type=\"input\" pInputText [formControl]=\"alienDocPassportNumber\" />\r\n <app-error [field]='alienDocPassportNumber' [form]=\"alienDocTypeFormDirective\" [errDef]=\"passportNumberErrDef\"></app-error>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #countryOfIssuanceTpl>\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-countryOfIssuance' : 'countryOfIssuance'\">Country of Issuance<span *ngIf=\"isOptional(countryOfIssuance)\" class=\"optional-label\"> (Optional)</span></label><br />\r\n <p-autoComplete [id]=\"inputId ? inputId + '-countryOfIssuance' : 'countryOfIssuance'\"\r\n [formControl]=\"countryOfIssuance\"\r\n [suggestions]=\"filteredCountries\"\r\n (completeMethod)=\"filterCountry($event)\"\r\n (onSelect)=\"onCountrySelect($event)\"\r\n (onClear)=\"onCountryClear()\"\r\n (onKeyUp)=\"onCountryKeyUp($event)\"\r\n field=\"value\"\r\n [dropdown]=\"false\"\r\n [maxlength]=\"3\"\r\n [forceSelection]=\"true\"\r\n [placeholder]=\"isOptional(countryOfIssuance) ? 'Optional' : 'Start... Typing Country Code'\"\r\n [style]=\"{'width': '100%'}\"\r\n [inputStyle]=\"{'text-transform': 'uppercase'}\"\r\n styleClass=\"country-autocomplete\"\r\n appendTo=\"body\">\r\n </p-autoComplete>\r\n <app-error [field]='countryOfIssuance' [form]=\"alienDocTypeFormDirective\" [errDef]=\"{\r\n required: 'Required'\r\n }\"></app-error>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #visaNumberTpl>\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-visaNumber' : 'visaNumber'\">{{'alien.doc.visaNumber' | translate}}<span *ngIf=\"isOptional(visaNumber)\" class=\"optional-label\"> (Optional)</span></label><br />\r\n <input [id]=\"inputId ? inputId + '-visaNumber' : 'visaNumber'\" type=\"input\" pInputText [formControl]=\"visaNumber\"\r\n maxlength=\"10\"\r\n oninput=\"this.value = this.value.replace(/[^a-zA-Z0-9]/g, '').toUpperCase()\"\r\n [placeholder]=\"isOptional(visaNumber) ? 'Optional' : ''\"\r\n (input)=\"setVisaValidator()\" />\r\n <app-error [field]='visaNumber' [form]=\"alienDocTypeFormDirective\" [errDef]=\"visaNumberErrDef\"></app-error>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #naturalizationNumberTpl>\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-naturalizationNumber' : 'naturalizationNumber'\">{{'alien.doc.naturalizationNumber' | translate}}<span *ngIf=\"isOptional(naturalizationNumber)\" class=\"optional-label\"> (Optional)</span></label><br />\r\n <input [id]=\"inputId ? inputId + '-naturalizationNumber' : 'naturalizationNumber'\" type=\"input\" pInputText [formControl]=\"naturalizationNumber\"\r\n minlength=\"6\" maxlength=\"12\"\r\n oninput=\"this.value = this.value.replace(/[^a-zA-Z0-9]/g, '').toUpperCase()\"\r\n [placeholder]=\"isOptional(naturalizationNumber) ? 'Optional' : ''\"\r\n (input)=\"setNaturalizationNumberValidator()\" />\r\n <app-error [field]='naturalizationNumber' [form]=\"alienDocTypeFormDirective\" [errDef]=\"naturalizationNumberErrDef\"></app-error>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n<ng-template #citizenshipNumberTpl>\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-citizenshipNumber' : 'citizenshipNumber'\">{{'alien.doc.citizenshipNumber' | translate}}<span *ngIf=\"isOptional(citizenshipNumber)\" class=\"optional-label\"> (Optional)</span></label><br />\r\n <input [id]=\"inputId ? inputId + '-citizenshipNumber' : 'citizenshipNumber'\" type=\"input\" pInputText [formControl]=\"citizenshipNumber\"\r\n minlength=\"6\" maxlength=\"12\"\r\n oninput=\"this.value = this.value.replace(/[^a-zA-Z0-9]/g, '')\"\r\n [placeholder]=\"isOptional(citizenshipNumber) ? 'Optional' : ''\"\r\n (input)=\"setCitizenshipNumberValidator()\" />\r\n <app-error [field]='citizenshipNumber' [form]=\"alienDocTypeFormDirective\" [errDef]=\"citizenshipNumberErrDef\"></app-error>\r\n </div>\r\n</ng-template>\r\n", styles: [".col{padding-top:0;padding-bottom:0}.form-lbl{padding-bottom:6px}.optional-label{font-style:italic;color:#6c757d;font-size:.85em}.inline-flex{display:inline-flex}ion-col{padding-left:0}.app-col{margin-left:27px;padding-right:0}ion-row{align-items:flex-start!important;margin-bottom:10px;flex-wrap:nowrap}ion-col.col-fit-content{flex:1 1 0;min-width:0;padding-right:10px}.field{margin-bottom:5px;max-width:100%;overflow:hidden}.field input{width:100%;box-sizing:border-box}:host ::ng-deep .field p-autoComplete{display:block;width:100%}:host ::ng-deep .field p-autoComplete .p-autocomplete{width:100%}:host ::ng-deep .field p-autoComplete .p-autocomplete input{width:100%}:host ::ng-deep .country-autocomplete .p-autocomplete{width:100%}:host ::ng-deep .country-autocomplete input::placeholder{text-transform:none}:host ::ng-deep .field app-error{display:block;white-space:normal;word-wrap:break-word;overflow-wrap:break-word;margin-top:4px;max-width:100%}@media (max-width: 767px){ion-row{flex-direction:column}ion-col,.col-fit-content{max-width:100%!important;width:100%!important;flex:0 0 100%!important}.field input{width:100%}:host ::ng-deep p-calendar{width:100%}:host ::ng-deep p-calendar .p-calendar{width:100%}ion-col{padding-bottom:5px!important}}\n"] }]
1577
+ ], template: "<form [formGroup]=\"alienDocTypeForm\" #alienDocTypeFormDirective=\"ngForm\" style=\"margin-bottom: 0px; margin-left: 0px;\">\r\n <div class=\"p-formgrid\" [id]=\"inputId ? inputId : 'alienDoc-div'\">\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <div class=\"field\" style=\"margin-bottom: 0px; padding-bottom: 10px;\">\r\n <label [for]=\"inputId ? inputId + '-alienDocType' : 'alienDocType'\">{{'alien.doc.heading' | translate}}</label><br />\r\n <app-dropdown [options]=\"alienDocTypeOptions\" [formControl]=\"alienDocType\" optionLabel=\"text\" appendTo=\"body\"\r\n [autoDisplayFirst]=\"false\" [inputId]=\"inputId ? inputId + '-alienDocType' : 'alienDocType'\"></app-dropdown>\r\n <app-error [field]='alienDocType' [form]=\"alienDocTypeFormDirective\" [errDef]=\"{\r\n required: 'alien.doc.error.required' | translate\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n\r\n <div *ngIf=\"selectedKey\">\r\n\r\n <!-- I-327 (Reentry Permit), I-571 (Refugee Travel Document) -->\r\n <div *ngIf=\"I327\">\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"alienNumberTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"expDateTpl\"></ng-container>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n\r\n <!-- I-551 (Permanent Resident Card), I-766 (Employment Authorization Card) -->\r\n <div *ngIf=\"I551\">\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"alienNumberTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"cardNumberTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"expDateTpl\"></ng-container>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n\r\n <!-- CECI, CECH, NATC - Certificate of Citizenship / Certificate Check / Naturalization Certificate -->\r\n <div *ngIf=\"CECI\">\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"alienNumberTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col *ngIf=\"selectedKey==='CECH' || selectedKey==='NATC'\" [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"naturalizationNumberTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col *ngIf=\"selectedKey==='CECI'\" [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"citizenshipNumberTpl\"></ng-container>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n\r\n <!-- T551 / MRIV -->\r\n <div *ngIf=\"T551\">\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"alienNumberTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"passportNumberTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col *ngIf=\"MRIV\" [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"countryOfIssuanceTpl\"></ng-container>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row>\r\n <div *ngIf=\"MRIV\">\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"visaNumberTpl\"></ng-container>\r\n </ion-col>\r\n </div>\r\n <ion-col *ngIf=\"!MRIV\" [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"countryOfIssuanceTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"expDateTpl\"></ng-container>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n\r\n <!-- I-94 -->\r\n <div *ngIf=\"I94\">\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"i94NumberTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"sevisIdTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"expDateTpl\"></ng-container>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n\r\n <!-- I-94 Unexpired -->\r\n <div *ngIf=\"I94U\">\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"i94NumberTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"visaNumberTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"passportNumberTpl\"></ng-container>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"countryOfIssuanceTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"sevisIdTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"expDateTpl\"></ng-container>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n\r\n\r\n <!-- I-20 or DS-2019 -->\r\n <div *ngIf=\"DS2019DocType\">\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"i94NumberTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"passportNumberTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"countryOfIssuanceTpl\"></ng-container>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"sevisIdTpl\"></ng-container>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <ng-container *ngTemplateOutlet=\"expDateTpl\"></ng-container>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n </div>\r\n</form>\r\n\r\n<!-- Reusable Templates -->\r\n\r\n<ng-template #alienNumberTpl>\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-alienNumber' : 'alienNumber'\">{{'alien.doc.number' | translate}}<span *ngIf=\"isOptional(alienNumber)\" class=\"optional-label\"> ({{'common.optional' | translate}})</span></label><br />\r\n <input [id]=\"inputId ? inputId + '-alienNumber' : 'alienNumber'\" type=\"input\" pInputText [formControl]=\"alienNumber\"\r\n maxlength=\"9\"\r\n oninput=\"this.value = this.value.replace(/\\D+/g, '')\"\r\n [placeholder]=\"isOptional(alienNumber) ? ('common.optional' | translate) : ''\"\r\n (input)=\"setalienNumberValidator()\" />\r\n <app-error [field]='alienNumber' [form]=\"alienDocTypeFormDirective\" [errDef]=\"alienNumberErrDef\"></app-error>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #expDateTpl>\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label>{{'alien.doc.alienDocExpDate' | translate}}<span *ngIf=\"isOptional(alienDocExpDate)\" class=\"optional-label\"> ({{'common.optional' | translate}})</span></label><br />\r\n <div class=\"p-inputgroup\">\r\n <input #expDateInput type=\"text\" pInputText\r\n (input)=\"onExpDateInput($event)\"\r\n (keydown)=\"onExpDateKeyDown($event, expDateInput)\" />\r\n <button type=\"button\" pButton icon=\"pi pi-calendar\" class=\"p-button-secondary\"\r\n (click)=\"expDateOverlay.toggle($event)\"></button>\r\n </div>\r\n <p-overlayPanel #expDateOverlay appendTo=\"body\">\r\n <p-calendar [inline]=\"true\"\r\n [yearNavigator]=\"true\" yearRange=\"1901:2050\" dateFormat=\"mm/dd/yy\"\r\n dataType=\"date\"\r\n (onMonthChange)=\"calendarPickerActive = true\"\r\n (onYearChange)=\"calendarPickerActive = true\"\r\n (onSelect)=\"calendarPickerActive = true; onExpDatePickerSelect($event, expDateOverlay, expDateInput)\">\r\n </p-calendar>\r\n </p-overlayPanel>\r\n <app-error [field]='alienDocExpDate' [form]=\"alienDocTypeFormDirective\" [errDef]=\"expDateRequiredErrDef\"></app-error>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n<ng-template #cardNumberTpl>\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-cardNumber' : 'cardNumber'\">{{'alien.doc.cardNumber' | translate}}<span *ngIf=\"isOptional(cardNumber)\" class=\"optional-label\"> ({{'common.optional' | translate}})</span></label><br />\r\n <input [id]=\"inputId ? inputId + '-cardNumber' : 'cardNumber'\" type=\"input\" pInputText [formControl]=\"cardNumber\"\r\n maxlength=\"13\"\r\n oninput=\"this.value = this.value.replace(/[^a-zA-Z0-9]/g, '').toUpperCase()\"\r\n [placeholder]=\"isOptional(cardNumber) ? ('common.optional' | translate) : ''\"\r\n (input)=\"setcardNumberValidator()\" />\r\n <app-error [field]='cardNumber' [form]=\"alienDocTypeFormDirective\" [errDef]=\"cardNumberErrDef\"></app-error>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #i94NumberTpl>\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-alienDocNumberI94' : 'alienDocNumberI94'\">{{'alien.doc.alienDocNumberI94' | translate}}<span *ngIf=\"isOptional(alienDocNumberI94)\" class=\"optional-label\"> ({{'common.optional' | translate}})</span></label><br />\r\n <input [id]=\"inputId ? inputId + '-alienDocNumberI94' : 'alienDocNumberI94'\" type=\"input\" pInputText [formControl]=\"alienDocNumberI94\"\r\n maxlength=\"11\"\r\n oninput=\"this.value = this.value.replace(/[^a-zA-Z0-9]/g, '').toUpperCase()\"\r\n [placeholder]=\"isOptional(alienDocNumberI94) ? ('common.optional' | translate) : ''\"\r\n (input)=\"setI94NumberValidator()\" />\r\n <app-error [field]='alienDocNumberI94' [form]=\"alienDocTypeFormDirective\" [errDef]=\"i94NumberErrDef\"></app-error>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #sevisIdTpl>\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-alienDocSvsId' : 'alienDocSvsId'\">{{'alien.doc.alienDocSvsId' | translate}}<span *ngIf=\"isOptional(alienDocSvsId)\" class=\"optional-label\"> ({{'common.optional' | translate}})</span></label><br />\r\n <input [id]=\"inputId ? inputId + '-alienDocSvsId' : 'alienDocSvsId'\" type=\"input\" pInputText [formControl]=\"alienDocSvsId\"\r\n maxlength=\"10\"\r\n oninput=\"this.value = this.value.replace(/\\D+/g, '')\"\r\n (input)=\"setSVISIdValidator()\" [placeholder]=\"isOptional(alienDocSvsId) ? ('common.optional' | translate) : ''\" />\r\n <app-error [field]='alienDocSvsId' [form]=\"alienDocTypeFormDirective\" [errDef]=\"sevisIdErrDef\"></app-error>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #passportNumberTpl>\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-alienDocPassportNumber' : 'alienDocPassportNumber'\">{{'alien.doc.alienDocPassportNumber' | translate}}<span *ngIf=\"isOptional(alienDocPassportNumber)\" class=\"optional-label\"> ({{'common.optional' | translate}})</span></label><br />\r\n <input [id]=\"inputId ? inputId + '-alienDocPassportNumber' : 'alienDocPassportNumber'\"\r\n (input)=\"setPassportNumberValidator()\"\r\n oninput=\"this.value = this.value.replace(/[^a-zA-Z0-9]/g, '').toUpperCase()\"\r\n [placeholder]=\"isOptional(alienDocPassportNumber) ? ('common.optional' | translate) : ''\"\r\n type=\"input\" pInputText [formControl]=\"alienDocPassportNumber\" />\r\n <app-error [field]='alienDocPassportNumber' [form]=\"alienDocTypeFormDirective\" [errDef]=\"passportNumberErrDef\"></app-error>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #countryOfIssuanceTpl>\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-countryOfIssuance' : 'countryOfIssuance'\">{{'alien.doc.countryOfIssuance' | translate}}<span *ngIf=\"isOptional(countryOfIssuance)\" class=\"optional-label\"> ({{'common.optional' | translate}})</span></label><br />\r\n <p-autoComplete [id]=\"inputId ? inputId + '-countryOfIssuance' : 'countryOfIssuance'\"\r\n [formControl]=\"countryOfIssuance\"\r\n [suggestions]=\"filteredCountries\"\r\n (completeMethod)=\"filterCountry($event)\"\r\n (onSelect)=\"onCountrySelect($event)\"\r\n (onClear)=\"onCountryClear()\"\r\n (onKeyUp)=\"onCountryKeyUp($event)\"\r\n field=\"value\"\r\n [dropdown]=\"false\"\r\n [maxlength]=\"3\"\r\n [forceSelection]=\"true\"\r\n [placeholder]=\"isOptional(countryOfIssuance) ? ('common.optional' | translate) : ('alien.doc.countryOfIssuance.placeholder' | translate)\"\r\n [style]=\"{'width': '100%'}\"\r\n [inputStyle]=\"{'text-transform': 'uppercase'}\"\r\n styleClass=\"country-autocomplete\"\r\n appendTo=\"body\">\r\n </p-autoComplete>\r\n <app-error [field]='countryOfIssuance' [form]=\"alienDocTypeFormDirective\" [errDef]=\"{\r\n required: 'alien.doc.error.required' | translate\r\n }\"></app-error>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #visaNumberTpl>\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-visaNumber' : 'visaNumber'\">{{'alien.doc.visaNumber' | translate}}<span *ngIf=\"isOptional(visaNumber)\" class=\"optional-label\"> ({{'common.optional' | translate}})</span></label><br />\r\n <input [id]=\"inputId ? inputId + '-visaNumber' : 'visaNumber'\" type=\"input\" pInputText [formControl]=\"visaNumber\"\r\n maxlength=\"10\"\r\n oninput=\"this.value = this.value.replace(/[^a-zA-Z0-9]/g, '').toUpperCase()\"\r\n [placeholder]=\"isOptional(visaNumber) ? ('common.optional' | translate) : ''\"\r\n (input)=\"setVisaValidator()\" />\r\n <app-error [field]='visaNumber' [form]=\"alienDocTypeFormDirective\" [errDef]=\"visaNumberErrDef\"></app-error>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #naturalizationNumberTpl>\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-naturalizationNumber' : 'naturalizationNumber'\">{{'alien.doc.naturalizationNumber' | translate}}<span *ngIf=\"isOptional(naturalizationNumber)\" class=\"optional-label\"> ({{'common.optional' | translate}})</span></label><br />\r\n <input [id]=\"inputId ? inputId + '-naturalizationNumber' : 'naturalizationNumber'\" type=\"input\" pInputText [formControl]=\"naturalizationNumber\"\r\n minlength=\"6\" maxlength=\"12\"\r\n oninput=\"this.value = this.value.replace(/[^a-zA-Z0-9]/g, '').toUpperCase()\"\r\n [placeholder]=\"isOptional(naturalizationNumber) ? ('common.optional' | translate) : ''\"\r\n (input)=\"setNaturalizationNumberValidator()\" />\r\n <app-error [field]='naturalizationNumber' [form]=\"alienDocTypeFormDirective\" [errDef]=\"naturalizationNumberErrDef\"></app-error>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n<ng-template #citizenshipNumberTpl>\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-citizenshipNumber' : 'citizenshipNumber'\">{{'alien.doc.citizenshipNumber' | translate}}<span *ngIf=\"isOptional(citizenshipNumber)\" class=\"optional-label\"> ({{'common.optional' | translate}})</span></label><br />\r\n <input [id]=\"inputId ? inputId + '-citizenshipNumber' : 'citizenshipNumber'\" type=\"input\" pInputText [formControl]=\"citizenshipNumber\"\r\n minlength=\"6\" maxlength=\"12\"\r\n oninput=\"this.value = this.value.replace(/[^a-zA-Z0-9]/g, '')\"\r\n [placeholder]=\"isOptional(citizenshipNumber) ? ('common.optional' | translate) : ''\"\r\n (input)=\"setCitizenshipNumberValidator()\" />\r\n <app-error [field]='citizenshipNumber' [form]=\"alienDocTypeFormDirective\" [errDef]=\"citizenshipNumberErrDef\"></app-error>\r\n </div>\r\n</ng-template>\r\n", styles: [".col{padding-top:0;padding-bottom:0}.form-lbl{padding-bottom:6px}.optional-label{font-style:italic;color:#6c757d;font-size:.85em}.inline-flex{display:inline-flex}ion-col{padding-left:0}.app-col{margin-left:27px;padding-right:0}ion-row{align-items:flex-start!important;margin-bottom:10px;flex-wrap:nowrap}ion-col.col-fit-content{flex:1 1 0;min-width:0;padding-right:10px}.field{margin-bottom:5px;max-width:100%;overflow:hidden}.field input{width:100%;box-sizing:border-box}:host ::ng-deep .field p-autoComplete{display:block;width:100%}:host ::ng-deep .field p-autoComplete .p-autocomplete{width:100%}:host ::ng-deep .field p-autoComplete .p-autocomplete input{width:100%}:host ::ng-deep .country-autocomplete .p-autocomplete{width:100%}:host ::ng-deep .country-autocomplete input::placeholder{text-transform:none}:host ::ng-deep .field app-error{display:block;white-space:normal;word-wrap:break-word;overflow-wrap:break-word;margin-top:4px;max-width:100%}@media (max-width: 767px){ion-row{flex-direction:column}ion-col,.col-fit-content{max-width:100%!important;width:100%!important;flex:0 0 100%!important}.field input{width:100%}:host ::ng-deep p-calendar{width:100%}:host ::ng-deep p-calendar .p-calendar{width:100%}ion-col{padding-bottom:5px!important}}\n"] }]
1523
1578
  }], () => [{ type: i1.UntypedFormBuilder }, { type: i2.UtilService }, { type: i3.QuestionnaireService }, { type: i4.TranslateService }], { alienDocTypeFormDirective: [{
1524
1579
  type: ViewChild,
1525
1580
  args: ['alienDocTypeFormDirective', { static: false }]
@@ -1539,4 +1594,4 @@ export class AlienDoctypeComponent {
1539
1594
  type: Output
1540
1595
  }] }); })();
1541
1596
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AlienDoctypeComponent, { className: "AlienDoctypeComponent", filePath: "lib\\components\\alien-doctype\\alien-doctype.component.ts", lineNumber: 31 }); })();
1542
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpZW4tZG9jdHlwZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvYWxpZW4tZG9jdHlwZS9hbGllbi1kb2N0eXBlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9hbGllbi1kb2N0eXBlL2FsaWVuLWRvY3R5cGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFhLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBQ2hJLE9BQU8sRUFBb0csYUFBYSxFQUFFLGlCQUFpQixFQUFhLFVBQVUsRUFBZSxNQUFNLGdCQUFnQixDQUFDO0FBSXhNLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVqRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDV3hDLHdCQUFnRTs7O0lBR2hFLHdCQUE0RDs7O0lBTnhFLDJCQUFrQixjQUFBLGlCQUFBO0lBR04sc0dBQWdFO0lBQ3BFLGlCQUFVO0lBQ1Ysa0NBQTRGO0lBQ3hGLHNHQUE0RDtJQUNoRSxpQkFBVSxFQUFBLEVBQUE7Ozs7O0lBTEQsZUFBcUQ7SUFBckQsMkVBQXFEO0lBQzNDLGVBQWdDO0lBQWhDLHNDQUFnQztJQUUxQyxlQUFxRDtJQUFyRCwyRUFBcUQ7SUFDM0MsZUFBNEI7SUFBNUIsc0NBQTRCOzs7SUFTM0Msd0JBQWdFOzs7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QW1DO1lBQ3pGLGVBQStCO1lBQS9CLGlEQUErQixpQ0FBQSwyQkFBQSx5RUFBQTtZQUVsQyxlQUFzQjtZQUF0Qix3Q0FBc0IsYUFBQSx1Q0FBQTtZQU92QyxlQUFpQjtZQUFqQixzQ0FBaUI7OztpRkRlbEIscUJBQXFCO2NBakJqQyxTQUFTOzJCQUNFLG1CQUFtQixhQUdsQixDQUFDO3dCQUNWLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsdUJBQXVCO3dCQUNsQyxLQUFLLEVBQUUsSUFBSTtxQkFDWjtvQkFDRDt3QkFDRSxPQUFPLEVBQUUsYUFBYTt3QkFDdEIsS0FBSyxFQUFFLElBQUk7d0JBQ1gsV0FBVyx1QkFBdUI7cUJBQ25DO2lCQUNBOytJQVVNLHlCQUF5QjtrQkFEL0IsU0FBUzttQkFBQywyQkFBMkIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFFaEMsVUFBVTtrQkFBbEMsU0FBUzttQkFBQyxZQUFZO1lBQ0ksZUFBZTtrQkFBekMsU0FBUzttQkFBQyxjQUFjO1lBQ2hCLE9BQU87a0JBQWYsS0FBSztZQUNHLFNBQVM7a0JBQWpCLEtBQUs7WUFDRyxjQUFjO2tCQUF0QixLQUFLO1lBRUksWUFBWTtrQkFBckIsTUFBTTs7a0ZBZEkscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3ksIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFVudHlwZWRGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wgLFVudHlwZWRGb3JtR3JvdXAsIE5nRm9ybSwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IsIFZhbGlkYXRvciwgVmFsaWRhdG9ycywgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbC91dGlsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBPYnNlcnZhYmxlLCBvZiwgdGFwLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFF1ZXN0aW9ubmFpcmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcXVlc3Rpb25uYWlyZS9xdWVzdGlvbm5haXJlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBbGllbkRvY0NvbXBvbmVudE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvQWxpZW5Eb2NDb21wb25lbnRNb2RlbCc7XHJcbmltcG9ydCB7IEFsaWVuQ29uc3RhbnRzIH0gZnJvbSAnLi4vcXVlc3Rpb25uYWlyZS9BbGllbkNvbnN0YW50cyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBcHBSZWdleCB9IGZyb20gJy4uLy4uL3ZhbGlkYXRpb25zL0FwcFJlZ2V4JztcclxuaW1wb3J0IHsgQXBwVmFsaWRhdG9ycyB9IGZyb20gJy4uLy4uL3ZhbGlkYXRpb25zL0FwcFZhbGlkYXRvcnMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1hbGllbi1kb2N0eXBlJywgIFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hbGllbi1kb2N0eXBlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hbGllbi1kb2N0eXBlLmNvbXBvbmVudC5jc3MnXSxcclxuICBwcm92aWRlcnM6IFt7XHJcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgIHVzZUV4aXN0aW5nOiBBbGllbkRvY3R5cGVDb21wb25lbnQsXHJcbiAgICBtdWx0aTogdHJ1ZVxyXG4gIH0sXHJcbiAge1xyXG4gICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcclxuICAgIG11bHRpOiB0cnVlLFxyXG4gICAgdXNlRXhpc3Rpbmc6IEFsaWVuRG9jdHlwZUNvbXBvbmVudFxyXG4gIH1cclxuICBdLFxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEFsaWVuRG9jdHlwZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSwgVmFsaWRhdG9yeyAgXHJcbiAgY2FsZW5kYXJQaWNrZXJBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTsgXHJcbiAgcHVibGljIGFsaWVuRG9jVHlwZU9wdGlvbnM6IGFueSA9IFtdO1xyXG4gIHB1YmxpYyBjb3VudHJ5T3B0aW9uczogYW55ID0gW107XHJcbiAgcHVibGljIGZpbHRlcmVkQ291bnRyaWVzOiBhbnkgPSBbXTtcclxuICBwdWJsaWMgYWxpZW5Eb2NUeXBlRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcclxuICBAVmlld0NoaWxkKCdhbGllbkRvY1R5cGVGb3JtRGlyZWN0aXZlJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcHVibGljIGFsaWVuRG9jVHlwZUZvcm1EaXJlY3RpdmU6IE5nRm9ybTtcclxuICBAVmlld0NoaWxkKCdleHBEYXRlQ2FsJykgZXhwRGF0ZUNhbDogYW55O1xyXG4gIEBWaWV3Q2hpbGQoJ2V4cERhdGVJbnB1dCcpIGV4cERhdGVJbnB1dFJlZjogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICBASW5wdXQoKSBpbnB1dElkOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZnJvbVBvcHVwOiBCb29sZWFuO1xyXG4gIEBJbnB1dCgpIHNraXBWYWxpZGF0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGFsaWVuRG9jRGF0YTogQWxpZW5Eb2NDb21wb25lbnRNb2RlbCA9IG5ldyBBbGllbkRvY0NvbXBvbmVudE1vZGVsKCk7XHJcbiAgQE91dHB1dCgpIGFsaWVuZG9jVHlwZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTsgIFxyXG4gIHNlbGVjdGVkS2V5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBvdGhlckRvY1R5cGU6Ym9vbGVhbj1mYWxzZTtcclxuICBJMzI3OmJvb2xlYW49ZmFsc2U7XHJcbiAgSTU1MTpib29sZWFuPWZhbHNlO1xyXG4gIERTMjAxOURvY1R5cGU6IGJvb2xlYW49ZmFsc2U7XHJcbiAgQ0VDSTogYm9vbGVhbj10cnVlO1xyXG4gIENFQ0g6IGJvb2xlYW49dHJ1ZTtcclxuICBNUklWOiBib29sZWFuPXRydWU7XHJcbiAgVDU1MTogYm9vbGVhbj10cnVlO1xyXG4gIEk5NDogYm9vbGVhbj1mYWxzZTtcclxuICBJOTRVOiBib29sZWFuPWZhbHNlO1xyXG4gIEkyMDpib29sZWFuPWZhbHNlO1xyXG5cclxuICAvLyBFcnJvciBkZWZpbml0aW9uIG9iamVjdHNcclxuICBhbGllbk51bWJlckVyckRlZjogYW55ID0ge307XHJcbiAgY2FyZE51bWJlckVyckRlZjogYW55ID0ge307XHJcbiAgaTk0TnVtYmVyRXJyRGVmOiBhbnkgPSB7fTtcclxuICBzZXZpc0lkRXJyRGVmOiBhbnkgPSB7fTtcclxuICB2aXNhTnVtYmVyRXJyRGVmOiBhbnkgPSB7fTtcclxuICBuYXR1cmFsaXphdGlvbk51bWJlckVyckRlZjogYW55ID0ge307XHJcbiAgY2l0aXplbnNoaXBOdW1iZXJFcnJEZWY6IGFueSA9IHt9O1xyXG4gIGV4cERhdGVSZXF1aXJlZEVyckRlZjogYW55ID0ge307XHJcbiAgcGFzc3BvcnROdW1iZXJFcnJEZWY6IGFueSA9IHt9O1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsIHB1YmxpYyB1dGlsOiBVdGlsU2VydmljZSwgcHVibGljIHF1ZXN0aW9ubmFpcmVTZXJ2aWNlOiBRdWVzdGlvbm5haXJlU2VydmljZSwgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7ICBcclxuICAgIHRoaXMuaW5pdEVyckRlZnMoKTtcclxuICAgIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAnYWxpZW5Eb2NUeXBlJzogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLCAgICAgICBcclxuICAgICAgJ2FsaWVuTnVtYmVyJzogW251bGwsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5wYXR0ZXJuKEFwcFJlZ2V4LkFMSUVOX19ET0NfTlVNQkVSX1JFR0VYKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoOSksIFZhbGlkYXRvcnMubWluKDkpXSldLFxyXG4gICAgICAnYWxpZW5Eb2NOdW1iZXJJOTQnIDpbbnVsbF0sICAgXHJcbiAgICAgICdhbGllbkRvY1Bhc3Nwb3J0TnVtYmVyJyA6W251bGxdLCAgXHJcbiAgICAgICdhbGllbkRvY1N2c0lkJyA6W251bGxdLCAgXHJcbiAgICAgICdhbGllbkRvY0V4cERhdGUnIDpbbnVsbF0sICBcclxuICAgICAgJ2FsaWVuRG9jRGVzY3JpcHRpb24nIDpbbnVsbF0sICAgXHJcbiAgICAgICdjYXJkTnVtYmVyJyA6W251bGxdICAsXHJcbiAgICAgICd2aXNhTnVtYmVyJyAgOltudWxsXSAsXHJcbiAgICAgICduYXR1cmFsaXphdGlvbk51bWJlcicgIDpbbnVsbF0gLFxyXG4gICAgICAnY2l0aXplbnNoaXBOdW1iZXInICA6W251bGxdICxcclxuICAgICAgJ2NvdW50cnlPZklzc3VhbmNlJyAgOltudWxsXVxyXG4gICAgICBcclxuICAgIH0pOyAgIFxyXG5cclxuICAgdGhpcy5nZXRBbGxEb2N1bWVudExpc3QoKTsgXHJcbiAgIHRoaXMuZ2V0QWxsQ291dHJpZXNDb2RlcygpO1xyXG4gICB0aGlzLmFsaWVuRG9jVHlwZS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKGFsaWVuRG9jVHlwZSA9PiB7XHJcbiAgICB0aGlzLm9uQWxpZW5Eb2NUeXBlQ2hhbmdlKGFsaWVuRG9jVHlwZSk7XHJcbiAgfSk7IFxyXG4gICB0aGlzLmFsaWVuRG9jUGFzc3BvcnROdW1iZXIudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWwgPT4ge1xyXG4gICAgaWYgKHZhbCAmJiB2YWwudHJpbSgpLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5jb3VudHJ5T2ZJc3N1YW5jZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5jb3VudHJ5T2ZJc3N1YW5jZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uVmFsaWRhdG9yQ2hhbmdlKCk7XHJcbiAgfSk7XHJcblxyXG4gICB0aGlzLmFsaWVuRG9jVHlwZUZvcm0uc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgdGhpcy5vblZhbGlkYXRvckNoYW5nZSgpO1xyXG4gIH0pO1xyXG4gIH1cclxuXHJcbiAgb25BbGllbkRvY1R5cGVDaGFuZ2UoYWxpZW5Eb2NUeXBlOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRLZXkgPSBhbGllbkRvY1R5cGUudmFsdWU7XHJcbiAgICBpZiAodGhpcy5hbGllbkRvY1R5cGVGb3JtRGlyZWN0aXZlKSB7XHJcbiAgICAgIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybURpcmVjdGl2ZS5mb3JtLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICAgIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybURpcmVjdGl2ZS5mb3JtLm1hcmtBc1VudG91Y2hlZCgpO1xyXG4gICAgICAodGhpcy5hbGllbkRvY1R5cGVGb3JtRGlyZWN0aXZlIGFzIGFueSkuc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLmV4cERhdGVEaXNwbGF5VmFsdWUgPSAnJztcclxuICAgIGlmICh0aGlzLmV4cERhdGVJbnB1dFJlZikge1xyXG4gICAgICB0aGlzLmV4cERhdGVJbnB1dFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLnNlbGVjdGVkS2V5PT09QWxpZW5Db25zdGFudHMuSTMyNyB8fCB0aGlzLnNlbGVjdGVkS2V5PT09QWxpZW5Db25zdGFudHMuSTU3MSApe1xyXG4gICAgICAgICAgdGhpcy5jbGVhcnZhbGlkYXRpb24oKTtcclxuICAgICAgICAgIHRoaXMuSTMyNz10cnVlOyAgICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy5hbGllbkRvY051bWJlckk5NC5zZXRWYWx1ZShudWxsKTsgXHJcbiAgICAgICAgICB0aGlzLmFsaWVuRG9jUGFzc3BvcnROdW1iZXIuc2V0VmFsdWUobnVsbCk7IFxyXG4gICAgICAgICAgdGhpcy5hbGllbkRvY1N2c0lkLnNldFZhbHVlKG51bGwpOyAgICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLmFsaWVuRG9jRGVzY3JpcHRpb24uc2V0VmFsdWUobnVsbCk7IFxyXG4gICAgICAgICAgdGhpcy5jYXJkTnVtYmVyLnNldFZhbHVlKG51bGwpOyBcclxuICAgICAgICAgIHRoaXMubmF0dXJhbGl6YXRpb25OdW1iZXIuc2V0VmFsdWUobnVsbCk7IFxyXG4gICAgICAgICAgdGhpcy52aXNhTnVtYmVyLnNldFZhbHVlKG51bGwpOyBcclxuICAgICAgICAgIHRoaXMuY2l0aXplbnNoaXBOdW1iZXIuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLmFsaWVuRG9jRXhwRGF0ZS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgIHRoaXMuYWxpZW5OdW1iZXIuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLmNvdW50cnlPZklzc3VhbmNlLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5hbGllbk51bWJlciwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybihBcHBSZWdleC5BTElFTl9fRE9DX05VTUJFUl9SRUdFWCksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDkpLCBWYWxpZGF0b3JzLm1pbig5KV0pO1xyXG4gICAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5hbGllbkRvY0V4cERhdGUsIFtBcHBWYWxpZGF0b3JzLmRhdGVGb3JtYXRdKTtcclxuICAgIH0gZWxzZSBpZih0aGlzLnNlbGVjdGVkS2V5PT09QWxpZW5Db25zdGFudHMuSTU1MSB8fCB0aGlzLnNlbGVjdGVkS2V5PT09QWxpZW5Db25zdGFudHMuSTc2NiApeyAgICAgXHJcbiAgICAgICAgICB0aGlzLmNsZWFydmFsaWRhdGlvbigpO1xyXG4gICAgICAgICAgdGhpcy5JNTUxPXRydWU7ICAgXHJcbiAgICAgICAgICB0aGlzLmFsaWVuRG9jTnVtYmVySTk0LnNldFZhbHVlKG51bGwpOyBcclxuICAgICAgICAgIHRoaXMuYWxpZW5Eb2NQYXNzcG9ydE51bWJlci5zZXRWYWx1ZShudWxsKTsgXHJcbiAgICAgICAgICB0aGlzLmFsaWVuRG9jU3ZzSWQuc2V0VmFsdWUobnVsbCk7ICAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMuYWxpZW5Eb2NEZXNjcmlwdGlvbi5zZXRWYWx1ZShudWxsKTsgICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLm5hdHVyYWxpemF0aW9uTnVtYmVyLnNldFZhbHVlKG51bGwpOyBcclxuICAgICAgICAgIHRoaXMudmlzYU51bWJlci5zZXRWYWx1ZShudWxsKTsgICAgXHJcbiAgICAgICAgICB0aGlzLmNpdGl6ZW5zaGlwTnVtYmVyLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5hbGllbkRvY0V4cERhdGUuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLmFsaWVuTnVtYmVyLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5jYXJkTnVtYmVyLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5jb3VudHJ5T2ZJc3N1YW5jZS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMuYWxpZW5OdW1iZXIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oQXBwUmVnZXguQUxJRU5fX0RPQ19OVU1CRVJfUkVHRVgpLCBWYWxpZGF0b3JzLm1heExlbmd0aCg5KSwgVmFsaWRhdG9ycy5taW4oOSldKTtcclxuICAgICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMuY2FyZE51bWJlciwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybihBcHBSZWdleC5JNTUxX1JFR0VYKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTMpLCBWYWxpZGF0b3JzLm1pbigxMyldKTtcclxuICAgICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMuYWxpZW5Eb2NFeHBEYXRlLCBbQXBwVmFsaWRhdG9ycy5kYXRlRm9ybWF0XSk7XHJcbiAgICAgICAgICBpZih0aGlzLnNlbGVjdGVkS2V5PT09QWxpZW5Db25zdGFudHMuSTc2Nil7XHJcbiAgICAgICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMuYWxpZW5Eb2NFeHBEYXRlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgQXBwVmFsaWRhdG9ycy5kYXRlRm9ybWF0XSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfWVsc2UgaWYodGhpcy5zZWxlY3RlZEtleT09PUFsaWVuQ29uc3RhbnRzLkNFQ0kgXHJcbiAgICAgICAgICB8fCB0aGlzLnNlbGVjdGVkS2V5PT09QWxpZW5Db25zdGFudHMuQ0VDSFxyXG4gICAgICAgICAgfHwgdGhpcy5zZWxlY3RlZEtleT09PUFsaWVuQ29uc3RhbnRzLk5BVEMpeyAgICAgXHJcbiAgICAgICAgICB0aGlzLmNsZWFydmFsaWRhdGlvbigpO1xyXG4gICAgICAgICAgdGhpcy5DRUNJPXRydWU7ICAgXHJcbiAgICAgICAgICB0aGlzLmFsaWVuRG9jTnVtYmVySTk0LnNldFZhbHVlKG51bGwpOyBcclxuICAgICAgICAgIHRoaXMuYWxpZW5Eb2NQYXNzcG9ydE51bWJlci5zZXRWYWx1ZShudWxsKTsgXHJcbiAgICAgICAgICB0aGlzLmFsaWVuRG9jU3ZzSWQuc2V0VmFsdWUobnVsbCk7ICAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMuYWxpZW5Eb2NEZXNjcmlwdGlvbi5zZXRWYWx1ZShudWxsKTsgXHJcbiAgICAgICAgICB0aGlzLmNhcmROdW1iZXIuc2V0VmFsdWUobnVsbCk7ICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLnZpc2FOdW1iZXIuc2V0VmFsdWUobnVsbCk7ICAgXHJcbiAgICAgICAgICB0aGlzLmFsaWVuRG9jRXhwRGF0ZS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgIHRoaXMuY2l0aXplbnNoaXBOdW1iZXIuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLmFsaWVuTnVtYmVyLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5uYXR1cmFsaXphdGlvbk51bWJlci5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgIHRoaXMuY291bnRyeU9mSXNzdWFuY2Uuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgIGlmKHRoaXMuc2VsZWN0ZWRLZXk9PT1BbGllbkNvbnN0YW50cy5DRUNJfHwgdGhpcy5zZWxlY3RlZEtleT09PUFsaWVuQ29uc3RhbnRzLk5BVEMpe1xyXG4gICAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5hbGllbk51bWJlciwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsVmFsaWRhdG9ycy5wYXR0ZXJuKEFwcFJlZ2V4LkFMSUVOX19ET0NfTlVNQkVSX1JFR0VYKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoOSksIFZhbGlkYXRvcnMubWluKDkpXSk7XHJcbiAgICAgICAgfSBpZih0aGlzLnNlbGVjdGVkS2V5PT09QWxpZW5Db25zdGFudHMuQ0VDSHx8IHRoaXMuc2VsZWN0ZWRLZXk9PT1BbGllbkNvbnN0YW50cy5OQVRDKXtcclxuICAgICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMubmF0dXJhbGl6YXRpb25OdW1iZXIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oQXBwUmVnZXguTkFUVVJBTElaQVRJT05fTlVNQkVSX1JFR0VYKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTIpLCBWYWxpZGF0b3JzLm1pbig2KV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZih0aGlzLnNlbGVjdGVkS2V5PT09QWxpZW5Db25zdGFudHMuQ0VDSCl7XHJcbiAgICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLmFsaWVuTnVtYmVyLCBbVmFsaWRhdG9ycy5wYXR0ZXJuKEFwcFJlZ2V4LkFMSUVOX19ET0NfTlVNQkVSX1JFR0VYKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoOSksIFZhbGlkYXRvcnMubWluKDkpXSk7XHJcbiAgICAgICAgfSBpZih0aGlzLnNlbGVjdGVkS2V5PT09QWxpZW5Db25zdGFudHMuQ0VDSSl7XHJcbiAgICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLmNpdGl6ZW5zaGlwTnVtYmVyLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5wYXR0ZXJuKEFwcFJlZ2V4Lk5BVFVSQUxJWkFUSU9OX05VTUJFUl9SRUdFWCksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEyKSwgVmFsaWRhdG9ycy5taW4oNildKTtcclxuICAgICAgICB9ICAgICAgICAgIFxyXG4gICAgICAgIH0gZWxzZSBpZih0aGlzLnNlbGVjdGVkS2V5PT09QWxpZW5Db25zdGFudHMuTVJJViB8fCB0aGlzLnNlbGVjdGVkS2V5PT09QWxpZW5Db25zdGFudHMuVDU1MSl7ICAgICBcclxuICAgICAgICAgIHRoaXMuY2xlYXJ2YWxpZGF0aW9uKCk7ICAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMuVDU1MT10cnVlO1xyXG4gICAgICAgICAgdGhpcy5hbGllbkRvY051bWJlckk5NC5zZXRWYWx1ZShudWxsKTsgICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy5hbGllbkRvY1N2c0lkLnNldFZhbHVlKG51bGwpOyAgICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLmFsaWVuRG9jRGVzY3JpcHRpb24uc2V0VmFsdWUobnVsbCk7ICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMuY2l0aXplbnNoaXBOdW1iZXIuc2V0VmFsdWUobnVsbCk7ICBcclxuICAgICAgICAgIHRoaXMubmF0dXJhbGl6YXRpb25OdW1iZXIuc2V0VmFsdWUobnVsbCk7IFxyXG4gICAgICAgICAgdGhpcy5jYXJkTnVtYmVyLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5hbGllbkRvY0V4cERhdGUuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLmFsaWVuTnVtYmVyLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5hbGllbkRvY1Bhc3Nwb3J0TnVtYmVyLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgdGhpcy52aXNhTnVtYmVyLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5jb3VudHJ5T2ZJc3N1YW5jZS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgIGlmKHRoaXMuc2VsZWN0ZWRLZXk9PT1BbGllbkNvbnN0YW50cy5NUklWKXtcclxuICAgICAgICAgICAgdGhpcy5NUklWPXRydWU7IFxyXG4gICAgICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLnZpc2FOdW1iZXIsIFtWYWxpZGF0b3JzLnBhdHRlcm4oQXBwUmVnZXguTkFUVVJBTElaQVRJT05fTlVNQkVSX1JFR0VYKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTIpLCBWYWxpZGF0b3JzLm1pbig2KV0pO1xyXG4gICAgICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLmFsaWVuRG9jUGFzc3BvcnROdW1iZXIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oQXBwUmVnZXguUEFTU1BPUlRfTlVNQkVSX1JFR0VYKV0pO1xyXG4gICAgICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLmNvdW50cnlPZklzc3VhbmNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5hbGllbkRvY1Bhc3Nwb3J0TnVtYmVyLCBbVmFsaWRhdG9ycy5wYXR0ZXJuKEFwcFJlZ2V4LlBBU1NQT1JUX05VTUJFUl9SRUdFWCldKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMuYWxpZW5OdW1iZXIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLFZhbGlkYXRvcnMucGF0dGVybihBcHBSZWdleC5BTElFTl9fRE9DX05VTUJFUl9SRUdFWCksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDkpLCBWYWxpZGF0b3JzLm1pbig5KV0pO1xyXG4gICAgICAgIH0gZWxzZSBpZih0aGlzLnNlbGVjdGVkS2V5PT09QWxpZW5Db25zdGFudHMuSTk0ICl7ICAgICBcclxuICAgICAgICAgIHRoaXMuY2xlYXJ2YWxpZGF0aW9uKCk7XHJcbiAgICAgICAgICB0aGlzLkk5ND10cnVlOyAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy5hbGllbkRvY0Rlc2NyaXB0aW9uLnNldFZhbHVlKG51bGwpOyAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMubmF0dXJhbGl6YXRpb25OdW1iZXIuc2V0VmFsdWUobnVsbCk7IFxyXG4gICAgICAgICAgdGhpcy52aXNhTnVtYmVyLnNldFZhbHVlKG51bGwpOyAgICBcclxuICAgICAgICAgIHRoaXMuYWxpZW5OdW1iZXIuc2V0VmFsdWUobnVsbCk7ICAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMuY2l0aXplbnNoaXBOdW1iZXIuc2V0VmFsdWUobnVsbCk7ICAgICAgICBcclxuICAgICAgICAgIHRoaXMuYWxpZW5Eb2NQYXNzcG9ydE51bWJlci5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgIHRoaXMuY2FyZE51bWJlci5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgIHRoaXMuYWxpZW5Eb2NFeHBEYXRlLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5hbGllbkRvY051bWJlckk5NC5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgIHRoaXMuYWxpZW5Eb2NTdnNJZC5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgIHRoaXMuY291bnRyeU9mSXNzdWFuY2Uuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLmFsaWVuRG9jTnVtYmVySTk0LCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5wYXR0ZXJuKEFwcFJlZ2V4Lkk5NF9ET0NfTlVNQkVSX1JFR0VYKV0pO1xyXG4gICAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5hbGllbkRvY1N2c0lkLCBbVmFsaWRhdG9ycy5wYXR0ZXJuKEFwcFJlZ2V4LlNWSVNfSURfTlVNQkVSX1JFR0VYKV0pO1xyXG4gICAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5hbGllbkRvY0V4cERhdGUsIFtBcHBWYWxpZGF0b3JzLmRhdGVGb3JtYXRdKTtcclxuICAgICAgICB9ICBlbHNlIGlmKHRoaXMuc2VsZWN0ZWRLZXk9PT1BbGllbkNvbnN0YW50cy5JOTRVICl7ICAgICBcclxuICAgICAgICAgIHRoaXMuY2xlYXJ2YWxpZGF0aW9uKCk7XHJcbiAgICAgICAgICB0aGlzLkk5NFU9dHJ1ZTsgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMuYWxpZW5Eb2NEZXNjcmlwdGlvbi5zZXRWYWx1ZShudWxsKTsgICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLm5hdHVyYWxpemF0aW9uTnVtYmVyLnNldFZhbHVlKG51bGwpOyBcclxuICAgICAgICAgIHRoaXMudmlzYU51bWJlci5zZXRWYWx1ZShudWxsKTsgICAgXHJcbiAgICAgICAgICB0aGlzLmFsaWVuTnVtYmVyLnNldFZhbHVlKG51bGwpOyAgICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLmNpdGl6ZW5zaGlwTnVtYmVyLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5jYXJkTnVtYmVyLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5hbGllbkRvY0V4cERhdGUuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLmFsaWVuRG9jTnVtYmVySTk0LnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5hbGllbkRvY1N2c0lkLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5hbGllbkRvY1Bhc3Nwb3J0TnVtYmVyLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5jb3VudHJ5T2ZJc3N1YW5jZS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMuYWxpZW5Eb2NOdW1iZXJJOTQsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLFZhbGlkYXRvcnMucGF0dGVybihBcHBSZWdleC5JOTRfRE9DX05VTUJFUl9SRUdFWCldKTsgICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLmFsaWVuRG9jU3ZzSWQsIFtWYWxpZGF0b3JzLnBhdHRlcm4oQXBwUmVnZXguU1ZJU19JRF9OVU1CRVJfUkVHRVgpXSk7IFxyXG4gICAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5hbGllbkRvY1Bhc3Nwb3J0TnVtYmVyLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxWYWxpZGF0b3JzLnBhdHRlcm4oQXBwUmVnZXguUEFTU1BPUlRfTlVNQkVSX1JFR0VYKV0pOyAgIFxyXG4gICAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5hbGllbkRvY0V4cERhdGUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBBcHBWYWxpZGF0b3JzLmRhdGVGb3JtYXRdKTtcclxuICAgICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMudmlzYU51bWJlciwgW1ZhbGlkYXRvcnMucGF0dGVybihBcHBSZWdleC5OQVRVUkFMSVpBVElPTl9OVU1CRVJfUkVHRVgpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxMiksIFZhbGlkYXRvcnMubWluKDYpXSk7XHJcbiAgICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLmNvdW50cnlPZklzc3VhbmNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xyXG4gICAgICAgIH1lbHNlIGlmKHRoaXMuc2VsZWN0ZWRLZXk9PT1BbGllbkNvbnN0YW50cy5PVEhSKXtcclxuICAgICAgICB0aGlzLmNsZWFydmFsaWRhdGlvbigpO1xyXG4gICAgICAgICB0aGlzLm90aGVyRG9jVHlwZT10cnVlO1xyXG4gICAgICAgICB0aGlzLmFsaWVuRG9jTnVtYmVySTk0LnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICB0aGlzLmFsaWVuRG9jU3ZzSWQuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgIHRoaXMuYWxpZW5Eb2NQYXNzcG9ydE51bWJlci5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgdGhpcy5hbGllbkRvY0V4cERhdGUuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgIHRoaXMuYWxpZW5OdW1iZXIuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgIHRoaXMuY2FyZE51bWJlci5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgdGhpcy5uYXR1cmFsaXphdGlvbk51bWJlci5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgdGhpcy52aXNhTnVtYmVyLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICB0aGlzLmNpdGl6ZW5zaGlwTnVtYmVyLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICB0aGlzLmFsaWVuRG9jRGVzY3JpcHRpb24uc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgIHRoaXMuY291bnRyeU9mSXNzdWFuY2Uuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMuYWxpZW5OdW1iZXIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oQXBwUmVnZXguQUxJRU5fX0RPQ19OVU1CRVJfUkVHRVgpLCBWYWxpZGF0b3JzLm1heExlbmd0aCg5KSwgVmFsaWRhdG9ycy5taW4oOSldKTtcclxuICAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5hbGllbkRvY051bWJlckk5NCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybihBcHBSZWdleC5JOTRfRE9DX05VTUJFUl9SRUdFWCldKTtcclxuICAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5hbGllbkRvY1Bhc3Nwb3J0TnVtYmVyLCBbVmFsaWRhdG9ycy5wYXR0ZXJuKEFwcFJlZ2V4LlBBU1NQT1JUX05VTUJFUl9SRUdFWCldKTtcclxuICAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5hbGllbkRvY1N2c0lkLCBbVmFsaWRhdG9ycy5wYXR0ZXJuKEFwcFJlZ2V4LlNWSVNfSURfTlVNQkVSX1JFR0VYKV0pO1xyXG4gICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLmFsaWVuRG9jRGVzY3JpcHRpb24sIFtWYWxpZGF0b3JzLnJlcXVpcmVkLFZhbGlkYXRvcnMubWF4TGVuZ3RoKDM1KV0pO1xyXG4gICAgICAgIH0gZWxzZSAgaWYodGhpcy5zZWxlY3RlZEtleT09PUFsaWVuQ29uc3RhbnRzLkNFRVYgfHwgdGhpcy5zZWxlY3RlZEtleT09PUFsaWVuQ29uc3RhbnRzLkkyMCB8fCAgdGhpcy5zZWxlY3RlZEtleT09PUFsaWVuQ29uc3RhbnRzLlVORlApe1xyXG4gICAgICAgICB0aGlzLmNsZWFydmFsaWRhdGlvbigpO1xyXG4gICAgICAgICB0aGlzLkRTMjAxOURvY1R5cGU9dHJ1ZTsgICAgICAgXHJcbiAgICAgICAgIHRoaXMuYWxpZW5Eb2NOdW1iZXJJOTQuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgIHRoaXMuYWxpZW5Eb2NTdnNJZC5zZXRWYWx1ZShudWxsKTsgICAgICAgICAgICAgIFxyXG4gICAgICAgICB0aGlzLmFsaWVuRG9jRXhwRGF0ZS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgdGhpcy5hbGllbkRvY1Bhc3Nwb3J0TnVtYmVyLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICB0aGlzLmFsaWVuTnVtYmVyLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICB0aGlzLmNhcmROdW1iZXIuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgIHRoaXMubmF0dXJhbGl6YXRpb25OdW1iZXIuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgIHRoaXMudmlzYU51bWJlci5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgdGhpcy5jaXRpemVuc2hpcE51bWJlci5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgdGhpcy5hbGllbkRvY0Rlc2NyaXB0aW9uLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICB0aGlzLmNvdW50cnlPZklzc3VhbmNlLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLmFsaWVuRG9jTnVtYmVySTk0LCBbVmFsaWRhdG9ycy5wYXR0ZXJuKEFwcFJlZ2V4Lkk5NF9ET0NfTlVNQkVSX1JFR0VYKV0pOyAgICAgICAgXHJcbiAgICAgICAgIGlmKHRoaXMuc2VsZWN0ZWRLZXk9PT1BbGllbkNvbnN0YW50cy5VTkZQKVxyXG4gICAgICAgICB7XHJcbiAgICAgICAgICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMuYWxpZW5Eb2NTdnNJZCwgW1ZhbGlkYXRvcnMucGF0dGVybihBcHBSZWdleC5TVklTX0lEX05VTUJFUl9SRUdFWCldKTtcclxuICAgICAgICAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5hbGllbkRvY1Bhc3Nwb3J0TnVtYmVyLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxWYWxpZGF0b3JzLnBhdHRlcm4oQXBwUmVnZXguUEFTU1BPUlRfTlVNQkVSX1JFR0VYKV0pO1xyXG4gICAgICAgICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLmFsaWVuRG9jRXhwRGF0ZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIEFwcFZhbGlkYXRvcnMuZGF0ZUZvcm1hdF0pO1xyXG4gICAgICAgICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLmNvdW50cnlPZklzc3VhbmNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMuYWxpZW5Eb2NTdnNJZCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybihBcHBSZWdleC5TVklTX0lEX05VTUJFUl9SRUdFWCldKTtcclxuICAgICAgICAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5hbGllbkRvY1Bhc3Nwb3J0TnVtYmVyLCBbVmFsaWRhdG9ycy5wYXR0ZXJuKEFwcFJlZ2V4LlBBU1NQT1JUX05VTUJFUl9SRUdFWCldKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICB9XHJcbiAgY2xlYXJ2YWxpZGF0aW9uKCl7XHJcbiAgICB0aGlzLm90aGVyRG9jVHlwZT1mYWxzZTtcclxuICAgIHRoaXMuRFMyMDE5RG9jVHlwZT1mYWxzZTtcclxuICAgIHRoaXMuSTU1MT1mYWxzZTtcclxuICAgIHRoaXMuSTMyNz1mYWxzZTsgIFxyXG4gICAgdGhpcy5DRUNJPWZhbHNlOyBcclxuICAgIHRoaXMuQ0VDSD1mYWxzZTsgXHJcbiAgICB0aGlzLk1SSVY9ZmFsc2U7IFxyXG4gICAgdGhpcy5UNTUxPWZhbHNlO1xyXG4gICAgdGhpcy5JOTQ9ZmFsc2U7ICAgXHJcbiAgICB0aGlzLkk5NFU9ZmFsc2U7IFxyXG5cclxuICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5hbGllbk51bWJlcik7XHJcbiAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuYWxpZW5Eb2NOdW1iZXJJOTQpO1xyXG4gICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmFsaWVuRG9jUGFzc3BvcnROdW1iZXIpO1xyXG4gICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmFsaWVuRG9jU3ZzSWQpO1xyXG4gICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmFsaWVuRG9jRXhwRGF0ZSk7XHJcbiAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuYWxpZW5Eb2NEZXNjcmlwdGlvbik7XHJcbiAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuY2FyZE51bWJlcik7XHJcbiAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMudmlzYU51bWJlcik7ICBcclxuICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5uYXR1cmFsaXphdGlvbk51bWJlcik7IFxyXG4gICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmNpdGl6ZW5zaGlwTnVtYmVyKTtcclxuICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5jb3VudHJ5T2ZJc3N1YW5jZSk7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxEb2N1bWVudExpc3QoKXtcclxuICAgIHRoaXMucXVlc3Rpb25uYWlyZVNlcnZpY2UuZ2V0QWxpZW5Eb2MoKS5zdWJzY3JpYmUoXHJcbiAgICAgIHJlcyA9PiB7ICAgICAgXHJcbiAgICAgICAgdGhpcy5hbGllbkRvY1R5cGVPcHRpb25zID0gcmVzWydjaG9pY2VzJ107XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsQ291dHJpZXNDb2Rlcygpe1xyXG4gICAgdGhpcy5xdWVzdGlvbm5haXJlU2VydmljZS5nZXRmZXRjaENvdW50cnlPZklzc3VhbmNlQ29kZSgpLnN1YnNjcmliZShcclxuICAgICAgcmVzID0+IHsgICAgICBcclxuICAgICAgICB0aGlzLmNvdW50cnlPcHRpb25zID0gcmVzWydjaG9pY2VzJ107XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZmlsdGVyQ291bnRyeShldmVudDogYW55KSB7XHJcbiAgICBjb25zdCBxdWVyeSA9IGV2ZW50LnF1ZXJ5ID8gZXZlbnQucXVlcnkucmVwbGFjZSgvW15BLVphLXpdL2csICcnKS50b1VwcGVyQ2FzZSgpLnN1YnN0cmluZygwLCAzKSA6ICcnO1xyXG4gICAgaWYgKHF1ZXJ5KSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRDb3VudHJpZXMgPSB0aGlzLmNvdW50cnlPcHRpb25zLmZpbHRlcihjb3VudHJ5ID0+XHJcbiAgICAgICAgY291bnRyeS52YWx1ZS50b1VwcGVyQ2FzZSgpLnN0YXJ0c1dpdGgocXVlcnkpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpbHRlcmVkQ291bnRyaWVzID0gWy4uLnRoaXMuY291bnRyeU9wdGlvbnNdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Db3VudHJ5U2VsZWN0KGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudCAmJiBldmVudC52YWx1ZSkge1xyXG4gICAgICB0aGlzLmNvdW50cnlPZklzc3VhbmNlLnNldFZhbHVlKGV2ZW50LnZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ291bnRyeUNsZWFyKCkge1xyXG4gICAgdGhpcy5jb3VudHJ5T2ZJc3N1YW5jZS5zZXRWYWx1ZShudWxsKTtcclxuICB9XHJcblxyXG4gIG9uQ291bnRyeUtleVVwKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0O1xyXG4gICAgaWYgKGlucHV0ICYmIGlucHV0LnZhbHVlKSB7XHJcbiAgICAgIGlucHV0LnZhbHVlID0gaW5wdXQudmFsdWUucmVwbGFjZSgvW15BLVphLXpdL2csICcnKS50b1VwcGVyQ2FzZSgpLnN1YnN0cmluZygwLCAzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuXHJcbiAgb25DaGFuZ2U6IEZ1bmN0aW9uID0gKCkgPT4ge307XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6IGFueSkge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IG9uQ2hhbmdlO1xyXG4gICAgY29uc3Qgc3ViID0gdGhpcy5hbGllbkRvY1R5cGVGb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4gb25DaGFuZ2UodGhpcy5hbGllbkRvY1R5cGVGb3JtLmdldFJhd1ZhbHVlKCkpKTtcclxuICAgIHRoaXMub25DaGFuZ2VTdWJzLnB1c2goc3ViKTtcclxuICB9XHJcbiAgXHJcbiAgc2V0V2lkdGhTdHlsZSgpOiBvYmplY3Qge1xyXG4gICAgaWYgKHRoaXMuZnJvbVBvcHVwKSB7XHJcbiAgICAgIGxldCBzdHlsZU9iaiA9IHtcclxuICAgICAgICAnbWF4LXdpZHRoJzogJ2luaXRpYWwnXHJcbiAgICAgIH07XHJcbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHN0eWxlT2JqKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBzdHlsZU9iaiA9IHtcclxuICAgICAgICAnbWF4LXdpZHRoJzogJ2ZpdC1jb250ZW50J1xyXG4gICAgICB9O1xyXG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihzdHlsZU9iaik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgYWxpZW5Eb2NUeXBlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5jb250cm9sc1snYWxpZW5Eb2NUeXBlJ107XHJcbiAgfVxyXG5cclxuICBnZXQgYWxpZW5OdW1iZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hbGllbkRvY1R5cGVGb3JtLmNvbnRyb2xzWydhbGllbk51bWJlciddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFsaWVuRG9jTnVtYmVySTk0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5jb250cm9sc1snYWxpZW5Eb2NOdW1iZXJJOTQnXTtcclxuICB9XHJcblxyXG4gIGdldCBhbGllbkRvY1Bhc3Nwb3J0TnVtYmVyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5jb250cm9sc1snYWxpZW5Eb2NQYXNzcG9ydE51bWJlciddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFsaWVuRG9jU3ZzSWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hbGllbkRvY1R5cGVGb3JtLmNvbnRyb2xzWydhbGllbkRvY1N2c0lkJ107XHJcbiAgfVxyXG5cclxuICBnZXQgYWxpZW5Eb2NFeHBEYXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5jb250cm9sc1snYWxpZW5Eb2NFeHBEYXRlJ107XHJcbiAgfVxyXG5cclxuICBnZXQgYWxpZW5Eb2NEZXNjcmlwdGlvbigpIHtcclxuICAgIHJldHVybiB0aGlzLmFsaWVuRG9jVHlwZUZvcm0uY29udHJvbHNbJ2FsaWVuRG9jRGVzY3JpcHRpb24nXTtcclxuICB9XHJcblxyXG4gIGdldCBjYXJkTnVtYmVyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5jb250cm9sc1snY2FyZE51bWJlciddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG5hdHVyYWxpemF0aW9uTnVtYmVyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5jb250cm9sc1snbmF0dXJhbGl6YXRpb25OdW1iZXInXTtcclxuICB9XHJcblxyXG4gIGdldCB2aXNhTnVtYmVyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5jb250cm9sc1sndmlzYU51bWJlciddO1xyXG4gIH1cclxuICBnZXQgY2l0aXplbnNoaXBOdW1iZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hbGllbkRvY1R5cGVGb3JtLmNvbnRyb2xzWydjaXRpemVuc2hpcE51bWJlciddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNvdW50cnlPZklzc3VhbmNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5jb250cm9sc1snY291bnRyeU9mSXNzdWFuY2UnXTtcclxuICB9XHJcblxyXG4gXHJcbiAgb25Ub3VjaGVkOiBGdW5jdGlvbiA9ICgpID0+IHsgfTtcclxuICBvbkNoYW5nZVN1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgb25WYWxpZGF0b3JDaGFuZ2U6IEZ1bmN0aW9uID0gKCkgPT4geyB9O1xyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoZWQ6IEZ1bmN0aW9uKSB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IG9uVG91Y2hlZDtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRoaXMub25WYWxpZGF0b3JDaGFuZ2UgPSBmbjtcclxuICB9IFxyXG5cclxuICBpbml0RXJyRGVmcygpIHtcclxuICAgIHRoaXMuYWxpZW5OdW1iZXJFcnJEZWYgPSB7XHJcbiAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnYWxpZW4uZG9jLmVycm9yLnJlcXVpcmVkJyksXHJcbiAgICAgIHBhdHRlcm46IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdhbGllbi5kb2MuZXJyb3IucGF0dGVybicpLFxyXG4gICAgICBpbnZhbGlkRG9jTnVtYmVyOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnYWxpZW4uZG9jLmVycm9yLmludmFsaWREb2NOdW1iZXInKVxyXG4gICAgfTtcclxuICAgIHRoaXMuY2FyZE51bWJlckVyckRlZiA9IHtcclxuICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdhbGllbi5kb2MuZXJyb3IucmVxdWlyZWQnKSxcclxuICAgICAgaW52YWxpZGFjYXJkTnVtYmVyOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnYWxpZW4uZG9jLmVycm9yLmludmFsaWRDYXJkTnVtYmVyJylcclxuICAgIH07XHJcbiAgICB0aGlzLmk5NE51bWJlckVyckRlZiA9IHtcclxuICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdhbGllbi5kb2MuZXJyb3IucmVxdWlyZWQnKSxcclxuICAgICAgaW52YWxpZERhbGllbkRvY051bWJlckk5NDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2FsaWVuLmRvYy5lcnJvci5pbnZhbGlkSTk0TnVtYmVyJylcclxuICAgIH07XHJcbiAgICB0aGlzLnNldmlzSWRFcnJEZWYgPSB7XHJcbiAgICAgIGludmFsaWRhU2V2aXNJZE51bWJlcjogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2FsaWVuLmRvYy5lcnJvci5pbnZhbGlkU2V2aXNJZCcpXHJcbiAgICB9O1xyXG4gICAgdGhpcy52aXNhTnVtYmVyRXJyRGVmID0ge1xyXG4gICAgICBpbnZhbGlkYVZpc2FWYWxpZGF0b3I6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdhbGllbi5kb2MuZXJyb3IuaW52YWxpZFZpc2FOdW1iZXInKVxyXG4gICAgfTtcclxuICAgIHRoaXMubmF0dXJhbGl6YXRpb25OdW1iZXJFcnJEZWYgPSB7XHJcbiAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnYWxpZW4uZG9jLmVycm9yLnJlcXVpcmVkJyksXHJcbiAgICAgIGludmFsaWRuYXR1cmFsaXphdGlvbk51bWJlcjogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2FsaWVuLmRvYy5lcnJvci5pbnZhbGlkTmF0dXJhbGl6YXRpb25OdW1iZXInKVxyXG4gICAgfTtcclxuICAgIHRoaXMuY2l0aXplbnNoaXBOdW1iZXJFcnJEZWYgPSB7XHJcbiAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnYWxpZW4uZG9jLmVycm9yLnJlcXVpcmVkJyksXHJcbiAgICAgIGludmFsaWRDaXRpemVuc2hpcE51bWJlcjogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2FsaWVuLmRvYy5lcnJvci5pbnZhbGlkQ2l0aXplbnNoaXBOdW1iZXInKVxyXG4gICAgfTtcclxuICAgIHRoaXMuZXhwRGF0ZVJlcXVpcmVkRXJyRGVmID0ge1xyXG4gICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2FsaWVuLmRvYy5lcnJvci5yZXF1aXJlZCcpLFxyXG4gICAgICBpbnZhbGlkRGF0ZUZvcm1hdDogJ0RhdGUgZm9ybWF0IHNob3VsZCBiZSBtbS9kZC95eXl5J1xyXG4gICAgfTtcclxuICAgIHRoaXMucGFzc3BvcnROdW1iZXJFcnJEZWYgPSB7XHJcbiAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnYWxpZW4uZG9jLmVycm9yLnJlcXVpcmVkJyksXHJcbiAgICAgIGludmFsaWRhUGFzc3BvcnROdW1iZXI6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdhbGllbi5kb2MuZXJyb3IuaW52YWxpZFBhc3Nwb3J0TnVtYmVyJylcclxuICAgIH07XHJcbiAgICAgICAgXHJcbiAgfSBcclxuICBcclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICBmb3IgKGxldCBzdWIgb2YgdGhpcy5vbkNoYW5nZVN1YnMpIHtcclxuICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuLyogIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5zZXRWYWx1ZSh2YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfVxyXG4gIH0qL1xyXG5cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBmb3JtVmFsdWUgOiBBbGllbkRvY0NvbXBvbmVudE1vZGVsO1xyXG4gICAgaWYodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKXtcclxuICAgICAgZm9ybVZhbHVlID0gSlNPTi5wYXJzZSh2YWx1ZS50b1N0cmluZygpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZvcm1WYWx1ZSA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChmb3JtVmFsdWU/LmFsaWVuRG9jVHlwZSkge1xyXG4gICAgICB0aGlzLnNldEFsaWVuRG9jVHlwZShmb3JtVmFsdWUuYWxpZW5Eb2NUeXBlLCBmb3JtVmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hbGllbkRvY1R5cGVGb3JtLnBhdGNoVmFsdWUoZm9ybVZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB9IFxyXG4gIH1cclxuXHJcblxyXG5cclxuICBzZXRBbGllbkRvY1R5cGUoYWxpZW5Eb2NUeXBlLCBmb3JtVmFsdWU/OiBhbnkpe1xyXG4gICAgdGhpcy5xdWVzdGlvbm5haXJlU2VydmljZS5nZXRBbGllbkRvYygpLnN1YnNjcmliZShcclxuICAgICAgcmVzID0+IHtcclxuICAgICAgICB0aGlzLmFsaWVuRG9jVHlwZU9wdGlvbnMgPSByZXNbJ2Nob2ljZXMnXTtcclxuICAgICAgICBsZXQgc2VsZWN0ZWRhbGllbkRvY1R5cGUgPSB0aGlzLmFsaWVuRG9jVHlwZU9wdGlvbnMuZmlsdGVyKGMgPT4ge1xyXG4gICAgICAgICAgaWYodHlwZW9mIGFsaWVuRG9jVHlwZS52YWx1ZSA9PSAndW5kZWZpbmVkJyl7XHJcbiAgICAgICAgICAgIHJldHVybiBjLnZhbHVlID09IGFsaWVuRG9jVHlwZTtcclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICByZXR1cm4gYy52YWx1ZSA9PSBhbGllbkRvY1R5cGUudmFsdWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlbMF07XHJcbiAgICAgICAgdGhpcy5hbGllbkRvY1R5cGUucGF0Y2hWYWx1ZShzZWxlY3RlZGFsaWVuRG9jVHlwZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgIHRoaXMub25BbGllbkRvY1R5cGVDaGFuZ2Uoc2VsZWN0ZWRhbGllbkRvY1R5cGUpO1xyXG4gICAgICAgIGlmIChmb3JtVmFsdWUpIHtcclxuICAgICAgICAgIGNvbnN0IHsgYWxpZW5Eb2NUeXBlOiBfLCAuLi5yZXN0IH0gPSBmb3JtVmFsdWU7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdXNlclR5cGVkRGF0ZSA9IHRoaXMuZXhwRGF0ZURpc3BsYXlWYWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5hbGllbkRvY1R5cGVGb3JtLnBhdGNoVmFsdWUocmVzdCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICBjb25zdCBkYXRlVG9TaG93ID0gdXNlclR5cGVkRGF0ZSB8fCByZXN0LmFsaWVuRG9jRXhwRGF0ZTtcclxuICAgICAgICAgICAgaWYgKGRhdGVUb1Nob3cgJiYgdGhpcy5leHBEYXRlSW5wdXRSZWYpIHtcclxuICAgICAgICAgICAgICB0aGlzLmV4cERhdGVJbnB1dFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlID0gZGF0ZVRvU2hvdztcclxuICAgICAgICAgICAgICB0aGlzLmV4cERhdGVEaXNwbGF5VmFsdWUgPSBkYXRlVG9TaG93O1xyXG4gICAgICAgICAgICAgIHRoaXMuYWxpZW5Eb2NFeHBEYXRlLnNldFZhbHVlKGRhdGVUb1Nob3csIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5nZXRSYXdWYWx1ZSgpKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdWJtaXQoKXtcclxuICAgIGNvbnN0IGV4cFZhbCA9IHRoaXMuYWxpZW5Eb2NFeHBEYXRlLnZhbHVlO1xyXG4gICAgaWYgKGV4cFZhbCAmJiAhL15cXGR7Mn1cXC9cXGR7Mn1cXC9cXGR7NH0kLy50ZXN0KGV4cFZhbCkpIHtcclxuICAgICAgdGhpcy5hbGllbkRvY0V4cERhdGUuc2V0RXJyb3JzKHsgaW52YWxpZERhdGVGb3JtYXQ6IHRydWUgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFsaWVuRG9jVHlwZUZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgT2JqZWN0LnZhbHVlcyh0aGlzLmFsaWVuRG9jVHlwZUZvcm0uY29udHJvbHMpLmZvckVhY2goYyA9PiBjLm1hcmtBc0RpcnR5KCkpO1xyXG4gICAgaWYgKHRoaXMuYWxpZW5Eb2NUeXBlRm9ybURpcmVjdGl2ZSkge1xyXG4gICAgICAodGhpcy5hbGllbkRvY1R5cGVGb3JtRGlyZWN0aXZlIGFzIGFueSkuc3VibWl0dGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hbGllbkRvY1R5cGVGb3JtRGlyZWN0aXZlLm9uU3VibWl0KHVuZGVmaW5lZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBcclxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcclxuICAgIGlmICh0aGlzLnNraXBWYWxpZGF0aW9uKSByZXR1cm4gbnVsbDtcclxuICAgIGlmICghdGhpcy5hbGllbkRvY1R5cGUudmFsdWUpIHJldHVybiBudWxsO1xyXG4gICAgY29uc3QgZXhwVmFsID0gdGhpcy5hbGllbkRvY0V4cERhdGUudmFsdWU7XHJcbiAgICBjb25zdCBoYXNEYXRlRXJyb3IgPSBleHBWYWwgJiYgIS9eXFxkezJ9XFwvXFxkezJ9XFwvXFxkezR9JC8udGVzdChleHBWYWwpO1xyXG4gICAgaWYgKGhhc0RhdGVFcnJvcikge1xyXG4gICAgICB0aGlzLmFsaWVuRG9jRXhwRGF0ZS5zZXRFcnJvcnMoeyBpbnZhbGlkRGF0ZUZvcm1hdDogdHJ1ZSB9KTtcclxuICAgICAgdGhpcy5hbGllbkRvY0V4cERhdGUubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICB0aGlzLmFsaWVuRG9jRXhwRGF0ZS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICBpZiAodGhpcy5hbGllbkRvY1R5cGVGb3JtRGlyZWN0aXZlKSB7XHJcbiAgICAgICAgdGhpcy5hbGllbkRvY1R5cGVGb3JtRGlyZWN0aXZlLm9uU3VibWl0KHVuZGVmaW5lZCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHsgZG9jVHlwZVZhbGlkYXRpb25GbGFnOiB0cnVlIH07XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuYWxpZW5Eb2NUeXBlRm9ybS52YWxpZCkge1xyXG4gICAgICByZXR1cm4geyBkb2NUeXBlVmFsaWRhdGlvbkZsYWc6IHRydWUgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuICBzZXRhbGllbk51bWJlclZhbGlkYXRvcigpIHtcclxuICAgIHRoaXMuYWxpZW5OdW1iZXIudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWwgPT4geyAgICAgIFxyXG4gICAgICBpZighdGhpcy5hbGllbk51bWJlci52YWx1ZSkge1xyXG4gICAgICAgIGlmKHRoaXMuaXNPcHRpb25hbCh0aGlzLmFsaWVuTnVtYmVyKSkge1xyXG4gICAgICAgICAgdGhpcy5hbGllbkRvY1R5cGVGb3JtLmNvbnRyb2xzWydhbGllbk51bWJlciddLnNldEVycm9ycyhudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHZhbGlkMSA9IEFwcFJlZ2V4LkFMSUVOX19ET0NfTlVNQkVSX1JFR0VYLnRlc3QodGhpcy5hbGllbk51bWJlci52YWx1ZSk7IFxyXG4gICAgICBpZiAoIXZhbGlkMSkge1xyXG4gICAgICAgICAgICAgdGhpcy5hbGllbkRvY1R5cGVGb3JtLmNvbnRyb2xzWydhbGllbk51bWJlciddLnNldEVycm9ycyh7aW52YWxpZERvY051bWJlcjogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgdGhpcy5hbGllbkRvY1R5cGVGb3JtLmludmFsaWQ7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGludmFsaWREb2NOdW1iZXI6IHRydWUgfTtcclxuICAgICAgICAgIH0gICAgICAgICBcclxuICAgICAgfSk7XHJcbiAgfSAgXHJcbiAgc2V0STk0TnVtYmVyVmFsaWRhdG9yKCkge1xyXG4gICAgdGhpcy5hbGllbkRvY051bWJlckk5NC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbCA9PiB7ICAgICAgXHJcbiAgICAgIGlmKCF0aGlzLmFsaWVuRG9jTnVtYmVySTk0LnZhbHVlKSB7XHJcbiAgICAgICAgaWYodGhpcy5pc09wdGlvbmFsKHRoaXMuYWxpZW5Eb2NOdW1iZXJJOTQpKSB7XHJcbiAgICAgICAgICB0aGlzLmFsaWVuRG9jVHlwZUZvcm0uY29udHJvbHNbJ2FsaWVuRG9jTnVtYmVySTk0J10uc2V0RXJyb3JzKG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdmFsaWQxID0gQXBwUmVnZXguSTk0X0RPQ19OVU1CRVJfUkVHRVgudGVzdCh0aGlzLmFsaWVuRG9jTnVtYmVySTk0LnZhbHVlKTtcclxuICAgICAgICBpZiAoIXZhbGlkMSkge1xyXG4gICAgICAgICAgICAgdGhpcy5hbGllbkRvY1R5cGVGb3JtLmNvbnRyb2xzWydhbGllbkRvY051bWJlckk5NCddLnNldEVycm9ycyh7aW52YWxpZERhbGllbkRvY051bWJlckk5NDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgdGhpcy5hbGllbkRvY1R5cGVGb3JtLmludmFsaWQ7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGludmFsaWREYWxpZW5Eb2NOdW1iZXJJOTQ6IHRydWUgfTtcclxuICAgICAgICAgIH0gICAgICAgICBcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXREb2N1bWVudERlc2NyaXB0aW9uVmFsaWRhdG9yKCkgeyBcclxuICAgIHRoaXMuYWxpZW5Eb2NEZXNjcmlwdGlvbi52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbCA9PiB7ICAgICAgXHJcbiAgIC8vICAgY29uc3QgdmFsaWQxID0gQXBwUmVnZXguSTk0X0RPQ19OVU1CRVJfUkVHRVgudGVzdCh0aGlzLmFsaWVuRG9jRGVzY3JpcHRpb24udmFsdWUpO1xyXG4gICAgICAgIGlmICh0aGlzLmFsaWVuRG9jRGVzY3JpcHRpb24udmFsdWUubGVuZ3RoPjM1KSB7ICAgICAgICBcclxuICAgICAgICAgICAgIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5jb250cm9sc1snYWxpZW5Eb2NEZXNjcmlwdGlvbiddLnNldEVycm9ycyh7aW5hdmxpZERvY0Rlc2NyaXB0aW9uOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmFsaWVuRG9jVHlwZUZvcm0uaW52YWxpZDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgaW5hdmxpZERvY0Rlc2NyaXB0aW9uOiB0cnVlIH07XHJcbiAgICAgICAgICB9ICAgICAgICAgXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBzZXRQYXNzcG9ydE51bWJlclZhbGlkYXRvcigpIHtcclxuICAgIHRoaXMuYWxpZW5Eb2NQYXNzcG9ydE51bWJlci52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbCA9PiB7ICAgICAgXHJcbiAgICAgIGlmKCF0aGlzLmFsaWVuRG9jUGFzc3BvcnROdW1iZXIudmFsdWUpIHtcclxuICAgICAgICBpZih0aGlzLmlzT3B0aW9uYWwodGhpcy5hbGllbkRvY1Bhc3Nwb3J0TnVtYmVyKSkge1xyXG4gICAgICAgICAgdGhpcy5hbGllbkRvY1R5cGVGb3JtLmNvbnRyb2xzWydhbGllbkRvY1Bhc3Nwb3J0TnVtYmVyJ10uc2V0RXJyb3JzKG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdmFsaWQxID0gQXBwUmVnZXguUEFTU1BPUlRfTlVNQkVSX1JFR0VYLnRlc3QodGhpcy5hbGllbkRvY1Bhc3Nwb3J0TnVtYmVyLnZhbHVlKTsgICAgICBcclxuICAgICAgaWYgKCF2YWxpZDEpIHtcclxuICAgICAgICAgICAgIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5jb250cm9sc1snYWxpZW5Eb2NQYXNzcG9ydE51bWJlciddLnNldEVycm9ycyh7aW52YWxpZGFQYXNzcG9ydE51bWJlcjogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgdGhpcy5hbGllbkRvY1R5cGVGb3JtLmludmFsaWQ7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGludmFsaWRhUGFzc3BvcnROdW1iZXI6IHRydWUgfTtcclxuICAgICAgICAgIH0gICAgICAgICBcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRTVklTSWRWYWxpZGF0b3IoKSB7XHJcbiAgICB0aGlzLmFsaWVuRG9jU3ZzSWQudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWwgPT4geyAgICAgIFxyXG4gICAgICBpZighdGhpcy5hbGllbkRvY1N2c0lkLnZhbHVlKSB7XHJcbiAgICAgICAgaWYodGhpcy5pc09wdGlvbmFsKHRoaXMuYWxpZW5Eb2NTdnNJZCkpIHtcclxuICAgICAgICAgIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5jb250cm9sc1snYWxpZW5Eb2NTdnNJZCddLnNldEVycm9ycyhudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHZhbGlkMSA9IEFwcFJlZ2V4LlNWSVNfSURfTlVNQkVSX1JFR0VYLnRlc3QodGhpcy5hbGllbkRvY1N2c0lkLnZhbHVlKTsgICAgICBcclxuICAgICAgaWYgKCF2YWxpZDEpIHtcclxuICAgICAgICAgICAgIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5jb250cm9sc1snYWxpZW5Eb2NTdnNJZCddLnNldEVycm9ycyh7aW52YWxpZGFTZXZpc0lkTnVtYmVyOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmFsaWVuRG9jVHlwZUZvcm0uaW52YWxpZDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgaW52YWxpZGFTZXZpc0lkTnVtYmVyOiB0cnVlIH07XHJcbiAgICAgICAgICB9ICAgICAgICAgXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0Y2FyZE51bWJlclZhbGlkYXRvcigpe1xyXG4gICAgdGhpcy5jYXJkTnVtYmVyLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHsgICAgICBcclxuICAgICAgaWYoIXRoaXMuY2FyZE51bWJlci52YWx1ZSkge1xyXG4gICAgICAgIGlmKHRoaXMuaXNPcHRpb25hbCh0aGlzLmNhcmROdW1iZXIpKSB7XHJcbiAgICAgICAgICB0aGlzLmFsaWVuRG9jVHlwZUZvcm0uY29udHJvbHNbJ2NhcmROdW1iZXInXS5zZXRFcnJvcnMobnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB2YWxpZDEgPSBBcHBSZWdleC5JNTUxX1JFR0VYLnRlc3QodGhpcy5jYXJkTnVtYmVyLnZhbHVlKTsgICAgICBcclxuICAgICAgaWYgKCF2YWxpZDEpIHtcclxuICAgICAgICAgICAgIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5jb250cm9sc1snY2FyZE51bWJlciddLnNldEVycm9ycyh7aW52YWxpZGFjYXJkTnVtYmVyOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmFsaWVuRG9jVHlwZUZvcm0uaW52YWxpZDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgaW52YWxpZGFjYXJkTnVtYmVyOiB0cnVlIH07XHJcbiAgICAgICAgICB9ICAgICAgICAgXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0TmF0dXJhbGl6YXRpb25OdW1iZXJWYWxpZGF0b3IoKXtcclxuICAgIHRoaXMubmF0dXJhbGl6YXRpb25OdW1iZXIudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWwgPT4geyAgICAgIFxyXG4gICAgICBpZighdGhpcy5uYXR1cmFsaXphdGlvbk51bWJlci52YWx1ZSkge1xyXG4gICAgICAgIGlmKHRoaXMuaXNPcHRpb25hbCh0aGlzLm5hdHVyYWxpemF0aW9uTnVtYmVyKSkge1xyXG4gICAgICAgICAgdGhpcy5hbGllbkRvY1R5cGVGb3JtLmNvbnRyb2xzWyduYXR1cmFsaXphdGlvbk51bWJlciddLnNldEVycm9ycyhudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHZhbGlkMSA9IEFwcFJlZ2V4Lk5BVFVSQUxJWkFUSU9OX05VTUJFUl9SRUdFWC50ZXN0KHRoaXMubmF0dXJhbGl6YXRpb25OdW1iZXIudmFsdWUpOyAgICAgIFxyXG4gICAgICBpZiAoIXZhbGlkMSkge1xyXG4gICAgICAgICAgICAgdGhpcy5hbGllbkRvY1R5cGVGb3JtLmNvbnRyb2xzWyduYXR1cmFsaXphdGlvbk51bWJlciddLnNldEVycm9ycyh7aW52YWxpZG5hdHVyYWxpemF0aW9uTnVtYmVyOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmFsaWVuRG9jVHlwZUZvcm0uaW52YWxpZDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgaW52YWxpZG5hdHVyYWxpemF0aW9uTnVtYmVyOiB0cnVlIH07XHJcbiAgICAgICAgICB9ICAgICAgICAgXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0Q2l0aXplbnNoaXBOdW1iZXJWYWxpZGF0b3IoKXtcclxuICAgIHRoaXMuY2l0aXplbnNoaXBOdW1iZXIudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWwgPT4geyAgICAgIFxyXG4gICAgICBpZighdGhpcy5jaXRpemVuc2hpcE51bWJlci52YWx1ZSkge1xyXG4gICAgICAgIGlmKHRoaXMuaXNPcHRpb25hbCh0aGlzLmNpdGl6ZW5zaGlwTnVtYmVyKSkge1xyXG4gICAgICAgICAgdGhpcy5hbGllbkRvY1R5cGVGb3JtLmNvbnRyb2xzWydjaXRpemVuc2hpcE51bWJlciddLnNldEVycm9ycyhudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHZhbGlkMSA9IEFwcFJlZ2V4Lk5BVFVSQUxJWkFUSU9OX05VTUJFUl9SRUdFWC50ZXN0KHRoaXMuY2l0aXplbnNoaXBOdW1iZXIudmFsdWUpOyAgICAgIFxyXG4gICAgICBpZiAoIXZhbGlkMSkge1xyXG4gICAgICAgICAgICAgdGhpcy5hbGllbkRvY1R5cGVGb3JtLmNvbnRyb2xzWydjaXRpemVuc2hpcE51bWJlciddLnNldEVycm9ycyh7aW52YWxpZENpdGl6ZW5zaGlwTnVtYmVyOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmFsaWVuRG9jVHlwZUZvcm0uaW52YWxpZDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgaW52YWxpZENpdGl6ZW5zaGlwTnVtYmVyOiB0cnVlIH07XHJcbiAgICAgICAgICB9ICAgICAgICAgXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0VmlzYVZhbGlkYXRvcigpe1xyXG4gICAgdGhpcy52aXNhTnVtYmVyLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHsgICAgICBcclxuICAgICAgaWYoIXRoaXMudmlzYU51bWJlci52YWx1ZSkge1xyXG4gICAgICAgIGlmKHRoaXMuaXNPcHRpb25hbCh0aGlzLnZpc2FOdW1iZXIpKSB7XHJcbiAgICAgICAgICB0aGlzLmFsaWVuRG9jVHlwZUZvcm0uY29udHJvbHNbJ3Zpc2FOdW1iZXInXS5zZXRFcnJvcnMobnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB2YWxpZDEgPSBBcHBSZWdleC5WSVNBX05VTUJFUl9SRUdFWC50ZXN0KHRoaXMudmlzYU51bWJlci52YWx1ZSk7ICAgICAgXHJcbiAgICAgIGlmICghdmFsaWQxKSB7XHJcbiAgICAgICAgICAgICB0aGlzLmFsaWVuRG9jVHlwZUZvcm0uY29udHJvbHNbJ3Zpc2FOdW1iZXInXS5zZXRFcnJvcnMoe2ludmFsaWRhVmlzYVZhbGlkYXRvcjogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgdGhpcy5hbGllbkRvY1R5cGVGb3JtLmludmFsaWQ7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGludmFsaWRhVmlzYVZhbGlkYXRvcjogdHJ1ZSB9O1xyXG4gICAgICAgICAgfSAgICAgICAgIFxyXG4gICAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBleHBEYXRlRGlzcGxheVZhbHVlOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgb25FeHBEYXRlS2V5RG93bihlOiBLZXlib2FyZEV2ZW50LCBpbnB1dEVsOiBIVE1MSW5wdXRFbGVtZW50KSB7XHJcbiAgICBpZiAoZS5rZXkgPT09ICdCYWNrc3BhY2UnKSB7XHJcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgbGV0IHZhbCA9IGlucHV0RWwudmFsdWU7XHJcbiAgICAgIGlmICh2YWwuZW5kc1dpdGgoJy8nKSkge1xyXG4gICAgICAgIHZhbCA9IHZhbC5zbGljZSgwLCAtMik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdmFsID0gdmFsLnNsaWNlKDAsIC0xKTtcclxuICAgICAgfVxyXG4gICAgICBpbnB1dEVsLnZhbHVlID0gdmFsO1xyXG4gICAgICB0aGlzLmV4cERhdGVEaXNwbGF5VmFsdWUgPSB2YWw7XHJcbiAgICAgIHRoaXMuYWxpZW5Eb2NFeHBEYXRlLnNldFZhbHVlKHZhbCB8fCBudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIGlmICghdmFsIHx8IC9eXFxkezJ9XFwvXFxkezJ9XFwvXFxkezR9JC8udGVzdCh2YWwpKSB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLmFsaWVuRG9jVHlwZUZvcm0uZ2V0UmF3VmFsdWUoKSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoIVsnRGVsZXRlJywgJ0Fycm93TGVmdCcsICdBcnJvd1JpZ2h0JywgJ1RhYicsICdFbnRlciddLmluY2x1ZGVzKGUua2V5KSAmJiAhL15cXGQkLy50ZXN0KGUua2V5KSkge1xyXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkV4cERhdGVJbnB1dChlOiBFdmVudCkge1xyXG4gICAgY29uc3QgaW5wdXQgPSBlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgbGV0IHZhbCA9IGlucHV0LnZhbHVlLnJlcGxhY2UoL1xcRC9nLCAnJyk7XHJcbiAgICBpZiAodmFsLmxlbmd0aCA+IDgpIHZhbCA9IHZhbC5zdWJzdHJpbmcoMCwgOCk7XHJcbiAgICBsZXQgZm9ybWF0dGVkID0gdmFsO1xyXG4gICAgaWYgKHZhbC5sZW5ndGggPiA0KSB7XHJcbiAgICAgIGZvcm1hdHRlZCA9IHZhbC5zdWJzdHJpbmcoMCwgMikgKyAnLycgKyB2YWwuc3Vic3RyaW5nKDIsIDQpICsgJy8nICsgdmFsLnN1YnN0cmluZyg0KTtcclxuICAgIH0gZWxzZSBpZiAodmFsLmxlbmd0aCA9PT0gNCkge1xyXG4gICAgICBmb3JtYXR0ZWQgPSB2YWwuc3Vic3RyaW5nKDAsIDIpICsgJy8nICsgdmFsLnN1YnN0cmluZygyKSArICcvJztcclxuICAgIH0gZWxzZSBpZiAodmFsLmxlbmd0aCA+IDIpIHtcclxuICAgICAgZm9ybWF0dGVkID0gdmFsLnN1YnN0cmluZygwLCAyKSArICcvJyArIHZhbC5zdWJzdHJpbmcoMik7XHJcbiAgICB9IGVsc2UgaWYgKHZhbC5sZW5ndGggPT09IDIpIHtcclxuICAgICAgZm9ybWF0dGVkID0gdmFsICsgJy8nO1xyXG4gICAgfVxyXG4gICAgaW5wdXQudmFsdWUgPSBmb3JtYXR0ZWQ7XHJcbiAgICB0aGlzLmV4cERhdGVEaXNwbGF5VmFsdWUgPSBmb3JtYXR0ZWQ7XHJcbiAgICB0aGlzLmFsaWVuRG9jRXhwRGF0ZS5zZXRWYWx1ZShmb3JtYXR0ZWQgfHwgbnVsbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgaWYgKC9eXFxkezJ9XFwvXFxkezJ9XFwvXFxkezR9JC8udGVzdChmb3JtYXR0ZWQpKSB7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5hbGllbkRvY1R5cGVGb3JtLmdldFJhd1ZhbHVlKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25FeHBEYXRlUGlja2VyU2VsZWN0KGRhdGU6IGFueSwgb3ZlcmxheTogYW55LCBpbnB1dEVsOiBIVE1MSW5wdXRFbGVtZW50KSB7XHJcbiAgICBpZiAoIShkYXRlIGluc3RhbmNlb2YgRGF0ZSkpIHJldHVybjtcclxuICAgIGNvbnN0IG1tID0gU3RyaW5nKGRhdGUuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICBjb25zdCBkZCA9IFN0cmluZyhkYXRlLmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgIGNvbnN0IHl5eXkgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICBjb25zdCBmb3JtYXR0ZWQgPSBgJHttbX0vJHtkZH0vJHt5eXl5fWA7XHJcbiAgICBpbnB1dEVsLnZhbHVlID0gZm9ybWF0dGVkO1xyXG4gICAgdGhpcy5leHBEYXRlRGlzcGxheVZhbHVlID0gZm9ybWF0dGVkO1xyXG4gICAgdGhpcy5hbGllbkRvY0V4cERhdGUuc2V0VmFsdWUoZm9ybWF0dGVkLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB0aGlzLmFsaWVuRG9jRXhwRGF0ZS5zZXRFcnJvcnMobnVsbCk7XHJcbiAgICB0aGlzLmFsaWVuRG9jRXhwRGF0ZS5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5nZXRSYXdWYWx1ZSgpKTtcclxuICAgIG92ZXJsYXkuaGlkZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge31cclxuXHJcbiAgaXNPcHRpb25hbChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBib29sZWFuIHtcclxuICAgIGlmICghY29udHJvbCB8fCAhY29udHJvbC52YWxpZGF0b3IpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBjb25zdCB2YWxpZGF0b3IgPSBjb250cm9sLnZhbGlkYXRvcih7fSBhcyBBYnN0cmFjdENvbnRyb2wpO1xyXG4gICAgcmV0dXJuICF2YWxpZGF0b3IgfHwgIXZhbGlkYXRvclsncmVxdWlyZWQnXTtcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGUoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcclxuICAgIGlmIChkaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmFsaWVuRG9jVHlwZUZvcm0uZGlzYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5lbmFibGUoKTtcclxuICAgIH1cclxuICB9XHJcbiBcclxuXHJcblxyXG59XHJcblxyXG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImFsaWVuRG9jVHlwZUZvcm1cIiAjYWxpZW5Eb2NUeXBlRm9ybURpcmVjdGl2ZT1cIm5nRm9ybVwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMHB4OyBtYXJnaW4tbGVmdDogMHB4O1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cInAtZm9ybWdyaWRcIiBbaWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgOiAnYWxpZW5Eb2MtZGl2J1wiPlxyXG4gICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMHB4OyBwYWRkaW5nLWJvdHRvbTogMTBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJpbnB1dElkID8gaW5wdXRJZCArICctYWxpZW5Eb2NUeXBlJyA6ICdhbGllbkRvY1R5cGUnXCI+e3snYWxpZW4uZG9jLmhlYWRpbmcnIHwgdHJhbnNsYXRlfX08L2xhYmVsPjxiciAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtZHJvcGRvd24gW29wdGlvbnNdPVwiYWxpZW5Eb2NUeXBlT3B0aW9uc1wiIFtmb3JtQ29udHJvbF09XCJhbGllbkRvY1R5cGVcIiBvcHRpb25MYWJlbD1cInRleHRcIiBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthdXRvRGlzcGxheUZpcnN0XT1cImZhbHNlXCIgW2lucHV0SWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLWFsaWVuRG9jVHlwZScgOiAnYWxpZW5Eb2NUeXBlJ1wiPjwvYXBwLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2ZpZWxkXT0nYWxpZW5Eb2NUeXBlJyBbZm9ybV09XCJhbGllbkRvY1R5cGVGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnUmVxdWlyZWQnXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICA8L2lvbi1yb3c+XHJcblxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZEtleVwiPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBJLTMyNyAoUmVlbnRyeSBQZXJtaXQpLCBJLTU3MSAoUmVmdWdlZSBUcmF2ZWwgRG9jdW1lbnQpIC0tPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiSTMyN1wiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhbGllbk51bWJlclRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImV4cERhdGVUcGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBJLTU1MSAoUGVybWFuZW50IFJlc2lkZW50IENhcmQpLCBJLTc2NiAoRW1wbG95bWVudCBBdXRob3JpemF0aW9uIENhcmQpIC0tPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiSTU1MVwiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhbGllbk51bWJlclRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNhcmROdW1iZXJUcGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJleHBEYXRlVHBsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gQ0VDSSwgQ0VDSCwgTkFUQyAtIENlcnRpZmljYXRlIG9mIENpdGl6ZW5zaGlwIC8gQ2VydGlmaWNhdGUgQ2hlY2sgLyBOYXR1cmFsaXphdGlvbiBDZXJ0aWZpY2F0ZSAtLT5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIkNFQ0lcIj5cclxuICAgICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWxpZW5OdW1iZXJUcGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgKm5nSWY9XCJzZWxlY3RlZEtleT09PSdDRUNIJyB8fCBzZWxlY3RlZEtleT09PSdOQVRDJ1wiIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibmF0dXJhbGl6YXRpb25OdW1iZXJUcGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgKm5nSWY9XCJzZWxlY3RlZEtleT09PSdDRUNJJ1wiIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2l0aXplbnNoaXBOdW1iZXJUcGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUNTUxIC8gTVJJViAtLT5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIlQ1NTFcIj5cclxuICAgICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWxpZW5OdW1iZXJUcGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwYXNzcG9ydE51bWJlclRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCAqbmdJZj1cIk1SSVZcIiBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvdW50cnlPZklzc3VhbmNlVHBsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIk1SSVZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidmlzYU51bWJlclRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgKm5nSWY9XCIhTVJJVlwiIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY291bnRyeU9mSXNzdWFuY2VUcGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJleHBEYXRlVHBsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gSS05NCAtLT5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIkk5NFwiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpOTROdW1iZXJUcGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZXZpc0lkVHBsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZXhwRGF0ZVRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIEktOTQgVW5leHBpcmVkIC0tPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiSTk0VVwiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpOTROdW1iZXJUcGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ2aXNhTnVtYmVyVHBsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFzc3BvcnROdW1iZXJUcGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvdW50cnlPZklzc3VhbmNlVHBsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2V2aXNJZFRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImV4cERhdGVUcGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gIEktMjAgb3IgRFMtMjAxOSAtLT5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIkRTMjAxOURvY1R5cGVcIj5cclxuICAgICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaTk0TnVtYmVyVHBsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFzc3BvcnROdW1iZXJUcGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb3VudHJ5T2ZJc3N1YW5jZVRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2V2aXNJZFRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImV4cERhdGVUcGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPC9kaXY+XHJcbjwvZm9ybT5cclxuXHJcbjwhLS0gUmV1c2FibGUgVGVtcGxhdGVzIC0tPlxyXG5cclxuPG5nLXRlbXBsYXRlICNhbGllbk51bWJlclRwbD5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgIDxsYWJlbCBbZm9yXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1hbGllbk51bWJlcicgOiAnYWxpZW5OdW1iZXInXCI+e3snYWxpZW4uZG9jLm51bWJlcicgfCB0cmFuc2xhdGV9fTxzcGFuICpuZ0lmPVwiaXNPcHRpb25hbChhbGllbk51bWJlcilcIiBjbGFzcz1cIm9wdGlvbmFsLWxhYmVsXCI+IChPcHRpb25hbCk8L3NwYW4+PC9sYWJlbD48YnIgLz5cclxuICAgICAgICA8aW5wdXQgW2lkXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1hbGllbk51bWJlcicgOiAnYWxpZW5OdW1iZXInXCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwiYWxpZW5OdW1iZXJcIlxyXG4gICAgICAgIG1heGxlbmd0aD1cIjlcIlxyXG4gICAgICAgIG9uaW5wdXQ9XCJ0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS5yZXBsYWNlKC9cXEQrL2csICcnKVwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImlzT3B0aW9uYWwoYWxpZW5OdW1iZXIpID8gJ09wdGlvbmFsJyA6ICcnXCJcclxuICAgICAgICAoaW5wdXQpPVwic2V0YWxpZW5OdW1iZXJWYWxpZGF0b3IoKVwiIC8+XHJcbiAgICAgICAgPGFwcC1lcnJvciBbZmllbGRdPSdhbGllbk51bWJlcicgW2Zvcm1dPVwiYWxpZW5Eb2NUeXBlRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwiYWxpZW5OdW1iZXJFcnJEZWZcIj48L2FwcC1lcnJvcj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNleHBEYXRlVHBsPlxyXG4gICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgPGxhYmVsPnt7J2FsaWVuLmRvYy5hbGllbkRvY0V4cERhdGUnIHwgdHJhbnNsYXRlfX08c3BhbiAqbmdJZj1cImlzT3B0aW9uYWwoYWxpZW5Eb2NFeHBEYXRlKVwiIGNsYXNzPVwib3B0aW9uYWwtbGFiZWxcIj4gKE9wdGlvbmFsKTwvc3Bhbj48L2xhYmVsPjxiciAvPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLWlucHV0Z3JvdXBcIj5cclxuICAgICAgICAgICAgPGlucHV0ICNleHBEYXRlSW5wdXQgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0XHJcbiAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25FeHBEYXRlSW5wdXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbkV4cERhdGVLZXlEb3duKCRldmVudCwgZXhwRGF0ZUlucHV0KVwiIC8+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHBCdXR0b24gaWNvbj1cInBpIHBpLWNhbGVuZGFyXCIgY2xhc3M9XCJwLWJ1dHRvbi1zZWNvbmRhcnlcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImV4cERhdGVPdmVybGF5LnRvZ2dsZSgkZXZlbnQpXCI+PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHAtb3ZlcmxheVBhbmVsICNleHBEYXRlT3ZlcmxheSBhcHBlbmRUbz1cImJvZHlcIj5cclxuICAgICAgICAgICAgPHAtY2FsZW5kYXIgW2lubGluZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFt5ZWFyTmF2aWdhdG9yXT1cInRydWVcIiB5ZWFyUmFuZ2U9XCIxOTAxOjIwNTBcIiBkYXRlRm9ybWF0PVwibW0vZGQveXlcIlxyXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU9XCJkYXRlXCJcclxuICAgICAgICAgICAgICAgIChvbk1vbnRoQ2hhbmdlKT1cImNhbGVuZGFyUGlja2VyQWN0aXZlID0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAob25ZZWFyQ2hhbmdlKT1cImNhbGVuZGFyUGlja2VyQWN0aXZlID0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAob25TZWxlY3QpPVwiY2FsZW5kYXJQaWNrZXJBY3RpdmUgPSB0cnVlOyBvbkV4cERhdGVQaWNrZXJTZWxlY3QoJGV2ZW50LCBleHBEYXRlT3ZlcmxheSwgZXhwRGF0ZUlucHV0KVwiPlxyXG4gICAgICAgICAgICA8L3AtY2FsZW5kYXI+XHJcbiAgICAgICAgPC9wLW92ZXJsYXlQYW5lbD5cclxuICAgICAgICA8YXBwLWVycm9yIFtmaWVsZF09J2FsaWVuRG9jRXhwRGF0ZScgW2Zvcm1dPVwiYWxpZW5Eb2NUeXBlRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwiZXhwRGF0ZVJlcXVpcmVkRXJyRGVmXCI+PC9hcHAtZXJyb3I+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcblxyXG48bmctdGVtcGxhdGUgI2NhcmROdW1iZXJUcGw+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDBweDtcIj5cclxuICAgICAgICA8bGFiZWwgW2Zvcl09XCJpbnB1dElkID8gaW5wdXRJZCArICctY2FyZE51bWJlcicgOiAnY2FyZE51bWJlcidcIj57eydhbGllbi5kb2MuY2FyZE51bWJlcicgfCB0cmFuc2xhdGV9fTxzcGFuICpuZ0lmPVwiaXNPcHRpb25hbChjYXJkTnVtYmVyKVwiIGNsYXNzPVwib3B0aW9uYWwtbGFiZWxcIj4gKE9wdGlvbmFsKTwvc3Bhbj48L2xhYmVsPjxiciAvPlxyXG4gICAgICAgIDxpbnB1dCBbaWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLWNhcmROdW1iZXInIDogJ2NhcmROdW1iZXInXCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwiY2FyZE51bWJlclwiXHJcbiAgICAgICAgbWF4bGVuZ3RoPVwiMTNcIlxyXG4gICAgICAgIG9uaW5wdXQ9XCJ0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS5yZXBsYWNlKC9bXmEtekEtWjAtOV0vZywgJycpLnRvVXBwZXJDYXNlKClcIlxyXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJpc09wdGlvbmFsKGNhcmROdW1iZXIpID8gJ09wdGlvbmFsJyA6ICcnXCJcclxuICAgICAgICAoaW5wdXQpPVwic2V0Y2FyZE51bWJlclZhbGlkYXRvcigpXCIgLz5cclxuICAgICAgICA8YXBwLWVycm9yIFtmaWVsZF09J2NhcmROdW1iZXInIFtmb3JtXT1cImFsaWVuRG9jVHlwZUZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cImNhcmROdW1iZXJFcnJEZWZcIj48L2FwcC1lcnJvcj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNpOTROdW1iZXJUcGw+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDBweDtcIj5cclxuICAgICAgICA8bGFiZWwgW2Zvcl09XCJpbnB1dElkID8gaW5wdXRJZCArICctYWxpZW5Eb2NOdW1iZXJJOTQnIDogJ2FsaWVuRG9jTnVtYmVySTk0J1wiPnt7J2FsaWVuLmRvYy5hbGllbkRvY051bWJlckk5NCcgfCB0cmFuc2xhdGV9fTxzcGFuICpuZ0lmPVwiaXNPcHRpb25hbChhbGllbkRvY051bWJlckk5NClcIiBjbGFzcz1cIm9wdGlvbmFsLWxhYmVsXCI+IChPcHRpb25hbCk8L3NwYW4+PC9sYWJlbD48YnIgLz5cclxuICAgICAgICA8aW5wdXQgW2lkXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1hbGllbkRvY051bWJlckk5NCcgOiAnYWxpZW5Eb2NOdW1iZXJJOTQnXCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwiYWxpZW5Eb2NOdW1iZXJJOTRcIlxyXG4gICAgICAgIG1heGxlbmd0aD1cIjExXCJcclxuICAgICAgICBvbmlucHV0PVwidGhpcy52YWx1ZSA9IHRoaXMudmFsdWUucmVwbGFjZSgvW15hLXpBLVowLTldL2csICcnKS50b1VwcGVyQ2FzZSgpXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaXNPcHRpb25hbChhbGllbkRvY051bWJlckk5NCkgPyAnT3B0aW9uYWwnIDogJydcIlxyXG4gICAgICAgIChpbnB1dCk9XCJzZXRJOTROdW1iZXJWYWxpZGF0b3IoKVwiIC8+XHJcbiAgICAgICAgPGFwcC1lcnJvciBbZmllbGRdPSdhbGllbkRvY051bWJlckk5NCcgW2Zvcm1dPVwiYWxpZW5Eb2NUeXBlRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwiaTk0TnVtYmVyRXJyRGVmXCI+PC9hcHAtZXJyb3I+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjc2V2aXNJZFRwbD5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgIDxsYWJlbCBbZm9yXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1hbGllbkRvY1N2c0lkJyA6ICdhbGllbkRvY1N2c0lkJ1wiPnt7J2FsaWVuLmRvYy5hbGllbkRvY1N2c0lkJyB8IHRyYW5zbGF0ZX19PHNwYW4gKm5nSWY9XCJpc09wdGlvbmFsKGFsaWVuRG9jU3ZzSWQpXCIgY2xhc3M9XCJvcHRpb25hbC1sYWJlbFwiPiAoT3B0aW9uYWwpPC9zcGFuPjwvbGFiZWw+PGJyIC8+XHJcbiAgICAgICAgPGlucHV0IFtpZF09XCJpbnB1dElkID8gaW5wdXRJZCArICctYWxpZW5Eb2NTdnNJZCcgOiAnYWxpZW5Eb2NTdnNJZCdcIiB0eXBlPVwiaW5wdXRcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbF09XCJhbGllbkRvY1N2c0lkXCJcclxuICAgICAgICAgbWF4bGVuZ3RoPVwiMTBcIlxyXG4gICAgICAgIG9uaW5wdXQ9XCJ0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS5yZXBsYWNlKC9cXEQrL2csICcnKVwiXHJcbiAgICAgICAgKGlucHV0KT1cInNldFNWSVNJZFZhbGlkYXRvcigpXCIgW3BsYWNlaG9sZGVyXT1cImlzT3B0aW9uYWwoYWxpZW5Eb2NTdnNJZCkgPyAnT3B0aW9uYWwnIDogJydcIiAvPlxyXG4gICAgICAgIDxhcHAtZXJyb3IgW2ZpZWxkXT0nYWxpZW5Eb2NTdnNJZCcgW2Zvcm1dPVwiYWxpZW5Eb2NUeXBlRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwic2V2aXNJZEVyckRlZlwiPjwvYXBwLWVycm9yPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3Bhc3Nwb3J0TnVtYmVyVHBsPlxyXG4gICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgPGxhYmVsIFtmb3JdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLWFsaWVuRG9jUGFzc3BvcnROdW1iZXInIDogJ2FsaWVuRG9jUGFzc3BvcnROdW1iZXInXCI+e3snYWxpZW4uZG9jLmFsaWVuRG9jUGFzc3BvcnROdW1iZXInIHwgdHJhbnNsYXRlfX08c3BhbiAqbmdJZj1cImlzT3B0aW9uYWwoYWxpZW5Eb2NQYXNzcG9ydE51bWJlcilcIiBjbGFzcz1cIm9wdGlvbmFsLWxhYmVsXCI+IChPcHRpb25hbCk8L3NwYW4+PC9sYWJlbD48YnIgLz5cclxuICAgICAgICA8aW5wdXQgW2lkXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1hbGllbkRvY1Bhc3Nwb3J0TnVtYmVyJyA6ICdhbGllbkRvY1Bhc3Nwb3J0TnVtYmVyJ1wiXHJcbiAgICAgICAgKGlucHV0KT1cInNldFBhc3Nwb3J0TnVtYmVyVmFsaWRhdG9yKClcIlxyXG4gICAgICAgIG9uaW5wdXQ9XCJ0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS5yZXBsYWNlKC9bXmEtekEtWjAtOV0vZywgJycpLnRvVXBwZXJDYXNlKClcIlxyXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJpc09wdGlvbmFsKGFsaWVuRG9jUGFzc3BvcnROdW1iZXIpID8gJ09wdGlvbmFsJyA6ICcnXCJcclxuICAgICAgICB0eXBlPVwiaW5wdXRcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbF09XCJhbGllbkRvY1Bhc3Nwb3J0TnVtYmVyXCIgLz5cclxuICAgICAgICA8YXBwLWVycm9yIFtmaWVsZF09J2FsaWVuRG9jUGFzc3BvcnROdW1iZXInIFtmb3JtXT1cImFsaWVuRG9jVHlwZUZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInBhc3Nwb3J0TnVtYmVyRXJyRGVmXCI+PC9hcHAtZXJyb3I+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY291bnRyeU9mSXNzdWFuY2VUcGw+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDBweDtcIj5cclxuICAgICAgICA8bGFiZWwgW2Zvcl09XCJpbnB1dElkID8gaW5wdXRJZCArICctY291bnRyeU9mSXNzdWFuY2UnIDogJ2NvdW50cnlPZklzc3VhbmNlJ1wiPkNvdW50cnkgb2YgSXNzdWFuY2U8c3BhbiAqbmdJZj1cImlzT3B0aW9uYWwoY291bnRyeU9mSXNzdWFuY2UpXCIgY2xhc3M9XCJvcHRpb25hbC1sYWJlbFwiPiAoT3B0aW9uYWwpPC9zcGFuPjwvbGFiZWw+PGJyIC8+XHJcbiAgICAgICAgPHAtYXV0b0NvbXBsZXRlIFtpZF09XCJpbnB1dElkID8gaW5wdXRJZCArICctY291bnRyeU9mSXNzdWFuY2UnIDogJ2NvdW50cnlPZklzc3VhbmNlJ1wiXHJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJjb3VudHJ5T2ZJc3N1YW5jZVwiXHJcbiAgICAgICAgICAgIFtzdWdnZXN0aW9uc109XCJmaWx0ZXJlZENvdW50cmllc1wiXHJcbiAgICAgICAgICAgIChjb21wbGV0ZU1ldGhvZCk9XCJmaWx0ZXJDb3VudHJ5KCRldmVudClcIlxyXG4gICAgICAgICAgICAob25TZWxlY3QpPVwib25Db3VudHJ5U2VsZWN0KCRldmVudClcIlxyXG4gICAgICAgICAgICAob25DbGVhcik9XCJvbkNvdW50cnlDbGVhcigpXCJcclxuICAgICAgICAgICAgKG9uS2V5VXApPVwib25Db3VudHJ5S2V5VXAoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIGZpZWxkPVwidmFsdWVcIlxyXG4gICAgICAgICAgICBbZHJvcGRvd25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBbbWF4bGVuZ3RoXT1cIjNcIlxyXG4gICAgICAgICAgICBbZm9yY2VTZWxlY3Rpb25dPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJpc09wdGlvbmFsKGNvdW50cnlPZklzc3VhbmNlKSA/ICdPcHRpb25hbCcgOiAnU3RhcnQuLi4gVHlwaW5nIENvdW50cnkgQ29kZSdcIlxyXG4gICAgICAgICAgICBbc3R5bGVdPVwieyd3aWR0aCc6ICcxMDAlJ31cIlxyXG4gICAgICAgICAgICBbaW5wdXRTdHlsZV09XCJ7J3RleHQtdHJhbnNmb3JtJzogJ3VwcGVyY2FzZSd9XCJcclxuICAgICAgICAgICAgc3R5bGVDbGFzcz1cImNvdW50cnktYXV0b2NvbXBsZXRlXCJcclxuICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCI+XHJcbiAgICAgICAgPC9wLWF1dG9Db21wbGV0ZT5cclxuICAgICAgICA8YXBwLWVycm9yIFtmaWVsZF09J2NvdW50cnlPZklzc3VhbmNlJyBbZm9ybV09XCJhbGllbkRvY1R5cGVGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7XHJcbiAgICAgICAgICAgIHJlcXVpcmVkOiAnUmVxdWlyZWQnXHJcbiAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3Zpc2FOdW1iZXJUcGw+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDBweDtcIj5cclxuICAgICAgICA8bGFiZWwgW2Zvcl09XCJpbnB1dElkID8gaW5wdXRJZCArICctdmlzYU51bWJlcicgOiAndmlzYU51bWJlcidcIj57eydhbGllbi5kb2MudmlzYU51bWJlcicgfCB0cmFuc2xhdGV9fTxzcGFuICpuZ0lmPVwiaXNPcHRpb25hbCh2aXNhTnVtYmVyKVwiIGNsYXNzPVwib3B0aW9uYWwtbGFiZWxcIj4gKE9wdGlvbmFsKTwvc3Bhbj48L2xhYmVsPjxiciAvPlxyXG4gICAgICAgIDxpbnB1dCBbaWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLXZpc2FOdW1iZXInIDogJ3Zpc2FOdW1iZXInXCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwidmlzYU51bWJlclwiXHJcbiAgICAgICAgbWF4bGVuZ3RoPVwiMTBcIlxyXG4gICAgICAgIG9uaW5wdXQ9XCJ0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS5yZXBsYWNlKC9bXmEtekEtWjAtOV0vZywgJycpLnRvVXBwZXJDYXNlKClcIlxyXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJpc09wdGlvbmFsKHZpc2FOdW1iZXIpID8gJ09wdGlvbmFsJyA6ICcnXCJcclxuICAgICAgICAoaW5wdXQpPVwic2V0VmlzYVZhbGlkYXRvcigpXCIgLz5cclxuICAgICAgICA8YXBwLWVycm9yIFtmaWVsZF09J3Zpc2FOdW1iZXInIFtmb3JtXT1cImFsaWVuRG9jVHlwZUZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInZpc2FOdW1iZXJFcnJEZWZcIj48L2FwcC1lcnJvcj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNuYXR1cmFsaXphdGlvbk51bWJlclRwbD5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgIDxsYWJlbCBbZm9yXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1uYXR1cmFsaXphdGlvbk51bWJlcicgOiAnbmF0dXJhbGl6YXRpb25OdW1iZXInXCI+e3snYWxpZW4uZG9jLm5hdHVyYWxpemF0aW9uTnVtYmVyJyB8IHRyYW5zbGF0ZX19PHNwYW4gKm5nSWY9XCJpc09wdGlvbmFsKG5hdHVyYWxpemF0aW9uTnVtYmVyKVwiIGNsYXNzPVwib3B0aW9uYWwtbGFiZWxcIj4gKE9wdGlvbmFsKTwvc3Bhbj48L2xhYmVsPjxiciAvPlxyXG4gICAgICAgIDxpbnB1dCBbaWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLW5hdHVyYWxpemF0aW9uTnVtYmVyJyA6ICduYXR1cmFsaXphdGlvbk51bWJlcidcIiB0eXBlPVwiaW5wdXRcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbF09XCJuYXR1cmFsaXphdGlvbk51bWJlclwiXHJcbiAgICAgICAgbWlubGVuZ3RoPVwiNlwiIG1heGxlbmd0aD1cIjEyXCJcclxuICAgICAgICBvbmlucHV0PVwidGhpcy52YWx1ZSA9IHRoaXMudmFsdWUucmVwbGFjZSgvW15hLXpBLVowLTldL2csICcnKS50b1VwcGVyQ2FzZSgpXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaXNPcHRpb25hbChuYXR1cmFsaXphdGlvbk51bWJlcikgPyAnT3B0aW9uYWwnIDogJydcIlxyXG4gICAgICAgIChpbnB1dCk9XCJzZXROYXR1cmFsaXphdGlvbk51bWJlclZhbGlkYXRvcigpXCIgLz5cclxuICAgICAgICA8YXBwLWVycm9yIFtmaWVsZF09J25hdHVyYWxpemF0aW9uTnVtYmVyJyBbZm9ybV09XCJhbGllbkRvY1R5cGVGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJuYXR1cmFsaXphdGlvbk51bWJlckVyckRlZlwiPjwvYXBwLWVycm9yPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuPG5nLXRlbXBsYXRlICNjaXRpemVuc2hpcE51bWJlclRwbD5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgIDxsYWJlbCBbZm9yXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1jaXRpemVuc2hpcE51bWJlcicgOiAnY2l0aXplbnNoaXBOdW1iZXInXCI+e3snYWxpZW4uZG9jLmNpdGl6ZW5zaGlwTnVtYmVyJyB8IHRyYW5zbGF0ZX19PHNwYW4gKm5nSWY9XCJpc09wdGlvbmFsKGNpdGl6ZW5zaGlwTnVtYmVyKVwiIGNsYXNzPVwib3B0aW9uYWwtbGFiZWxcIj4gKE9wdGlvbmFsKTwvc3Bhbj48L2xhYmVsPjxiciAvPlxyXG4gICAgICAgIDxpbnB1dCBbaWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLWNpdGl6ZW5zaGlwTnVtYmVyJyA6ICdjaXRpemVuc2hpcE51bWJlcidcIiB0eXBlPVwiaW5wdXRcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbF09XCJjaXRpemVuc2hpcE51bWJlclwiXHJcbiAgICAgICAgbWlubGVuZ3RoPVwiNlwiIG1heGxlbmd0aD1cIjEyXCJcclxuICAgICAgICBvbmlucHV0PVwidGhpcy52YWx1ZSA9IHRoaXMudmFsdWUucmVwbGFjZSgvW15hLXpBLVowLTldL2csICcnKVwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImlzT3B0aW9uYWwoY2l0aXplbnNoaXBOdW1iZXIpID8gJ09wdGlvbmFsJyA6ICcnXCJcclxuICAgICAgICAoaW5wdXQpPVwic2V0Q2l0aXplbnNoaXBOdW1iZXJWYWxpZGF0b3IoKVwiIC8+XHJcbiAgICAgICAgPGFwcC1lcnJvciBbZmllbGRdPSdjaXRpemVuc2hpcE51bWJlcicgW2Zvcm1dPVwiYWxpZW5Eb2NUeXBlRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwiY2l0aXplbnNoaXBOdW1iZXJFcnJEZWZcIj48L2FwcC1lcnJvcj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
1597
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpZW4tZG9jdHlwZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvYWxpZW4tZG9jdHlwZS9hbGllbi1kb2N0eXBlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9hbGllbi1kb2N0eXBlL2FsaWVuLWRvY3R5cGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFhLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBQ2hJLE9BQU8sRUFBb0csYUFBYSxFQUFFLGlCQUFpQixFQUFhLFVBQVUsRUFBZSxNQUFNLGdCQUFnQixDQUFDO0FBSXhNLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVqRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDV3hDLHdCQUFnRTs7O0lBR2hFLHdCQUE0RDs7O0lBTnhFLDJCQUFrQixjQUFBLGlCQUFBO0lBR04sc0dBQWdFO0lBQ3BFLGlCQUFVO0lBQ1Ysa0NBQTRGO0lBQ3hGLHNHQUE0RDtJQUNoRSxpQkFBVSxFQUFBLEVBQUE7Ozs7O0lBTEQsZUFBcUQ7SUFBckQsMkVBQXFEO0lBQzNDLGVBQWdDO0lBQWhDLHNDQUFnQztJQUUxQyxlQUFxRDtJQUFyRCwyRUFBcUQ7SUFDM0MsZUFBNEI7SUFBNUIsc0NBQTRCOzs7SUFTM0Msd0JBQWdFOzs7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bnRlbnQiOlsiXHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3ksIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFVudHlwZWRGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wgLFVudHlwZWRGb3JtR3JvdXAsIE5nRm9ybSwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IsIFZhbGlkYXRvciwgVmFsaWRhdG9ycywgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbC91dGlsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBPYnNlcnZhYmxlLCBvZiwgdGFwLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFF1ZXN0aW9ubmFpcmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcXVlc3Rpb25uYWlyZS9xdWVzdGlvbm5haXJlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBbGllbkRvY0NvbXBvbmVudE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvQWxpZW5Eb2NDb21wb25lbnRNb2RlbCc7XHJcbmltcG9ydCB7IEFsaWVuQ29uc3RhbnRzIH0gZnJvbSAnLi4vcXVlc3Rpb25uYWlyZS9BbGllbkNvbnN0YW50cyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBcHBSZWdleCB9IGZyb20gJy4uLy4uL3ZhbGlkYXRpb25zL0FwcFJlZ2V4JztcclxuaW1wb3J0IHsgQXBwVmFsaWRhdG9ycyB9IGZyb20gJy4uLy4uL3ZhbGlkYXRpb25zL0FwcFZhbGlkYXRvcnMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1hbGllbi1kb2N0eXBlJywgIFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hbGllbi1kb2N0eXBlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hbGllbi1kb2N0eXBlLmNvbXBvbmVudC5jc3MnXSxcclxuICBwcm92aWRlcnM6IFt7XHJcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgIHVzZUV4aXN0aW5nOiBBbGllbkRvY3R5cGVDb21wb25lbnQsXHJcbiAgICBtdWx0aTogdHJ1ZVxyXG4gIH0sXHJcbiAge1xyXG4gICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcclxuICAgIG11bHRpOiB0cnVlLFxyXG4gICAgdXNlRXhpc3Rpbmc6IEFsaWVuRG9jdHlwZUNvbXBvbmVudFxyXG4gIH1cclxuICBdLFxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEFsaWVuRG9jdHlwZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSwgVmFsaWRhdG9yeyAgICBcclxuICBjYWxlbmRhclBpY2tlckFjdGl2ZTogQm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBhbGllbkRvY1R5cGVPcHRpb25zOiBhbnkgPSBbXTtcclxuICBwdWJsaWMgY291bnRyeU9wdGlvbnM6IGFueSA9IFtdO1xyXG4gIHB1YmxpYyBmaWx0ZXJlZENvdW50cmllczogYW55ID0gW107XHJcbiAgcHVibGljIGFsaWVuRG9jVHlwZUZvcm06IFVudHlwZWRGb3JtR3JvdXA7XHJcbiAgQFZpZXdDaGlsZCgnYWxpZW5Eb2NUeXBlRm9ybURpcmVjdGl2ZScsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHB1YmxpYyBhbGllbkRvY1R5cGVGb3JtRGlyZWN0aXZlOiBOZ0Zvcm07XHJcbiAgQFZpZXdDaGlsZCgnZXhwRGF0ZUNhbCcpIGV4cERhdGVDYWw6IGFueTtcclxuICBAVmlld0NoaWxkKCdleHBEYXRlSW5wdXQnKSBleHBEYXRlSW5wdXRSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XHJcbiAgQElucHV0KCkgaW5wdXRJZDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGZyb21Qb3B1cDogQm9vbGVhbjtcclxuICBASW5wdXQoKSBza2lwVmFsaWRhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBhbGllbkRvY0RhdGE6IEFsaWVuRG9jQ29tcG9uZW50TW9kZWwgPSBuZXcgQWxpZW5Eb2NDb21wb25lbnRNb2RlbCgpO1xyXG4gIEBPdXRwdXQoKSBhbGllbmRvY1R5cGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7ICBcclxuICBzZWxlY3RlZEtleTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgb3RoZXJEb2NUeXBlOmJvb2xlYW49ZmFsc2U7XHJcbiAgSTMyNzpib29sZWFuPWZhbHNlO1xyXG4gIEk1NTE6Ym9vbGVhbj1mYWxzZTtcclxuICBEUzIwMTlEb2NUeXBlOiBib29sZWFuPWZhbHNlO1xyXG4gIENFQ0k6IGJvb2xlYW49dHJ1ZTtcclxuICBDRUNIOiBib29sZWFuPXRydWU7XHJcbiAgTVJJVjogYm9vbGVhbj10cnVlO1xyXG4gIFQ1NTE6IGJvb2xlYW49dHJ1ZTtcclxuICBJOTQ6IGJvb2xlYW49ZmFsc2U7XHJcbiAgSTk0VTogYm9vbGVhbj1mYWxzZTtcclxuICBJMjA6Ym9vbGVhbj1mYWxzZTtcclxuXHJcbiAgLy8gRXJyb3IgZGVmaW5pdGlvbiBvYmplY3RzXHJcbiAgYWxpZW5OdW1iZXJFcnJEZWY6IGFueSA9IHt9O1xyXG4gIGNhcmROdW1iZXJFcnJEZWY6IGFueSA9IHt9O1xyXG4gIGk5NE51bWJlckVyckRlZjogYW55ID0ge307XHJcbiAgc2V2aXNJZEVyckRlZjogYW55ID0ge307XHJcbiAgdmlzYU51bWJlckVyckRlZjogYW55ID0ge307XHJcbiAgbmF0dXJhbGl6YXRpb25OdW1iZXJFcnJEZWY6IGFueSA9IHt9O1xyXG4gIGNpdGl6ZW5zaGlwTnVtYmVyRXJyRGVmOiBhbnkgPSB7fTtcclxuICBleHBEYXRlUmVxdWlyZWRFcnJEZWY6IGFueSA9IHt9O1xyXG4gIHBhc3Nwb3J0TnVtYmVyRXJyRGVmOiBhbnkgPSB7fTtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLCBwdWJsaWMgdXRpbDogVXRpbFNlcnZpY2UsIHB1YmxpYyBxdWVzdGlvbm5haXJlU2VydmljZTogUXVlc3Rpb25uYWlyZVNlcnZpY2UsIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQgeyAgXHJcbiAgICB0aGlzLmluaXRFcnJEZWZzKCk7XHJcbiAgICB0aGlzLmFsaWVuRG9jVHlwZUZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgJ2FsaWVuRG9jVHlwZSc6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSwgICAgICAgXHJcbiAgICAgICdhbGllbk51bWJlcic6IFtudWxsLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybihBcHBSZWdleC5BTElFTl9fRE9DX05VTUJFUl9SRUdFWCksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDkpLCBWYWxpZGF0b3JzLm1pbig5KV0pXSxcclxuICAgICAgJ2FsaWVuRG9jTnVtYmVySTk0JyA6W251bGxdLCAgIFxyXG4gICAgICAnYWxpZW5Eb2NQYXNzcG9ydE51bWJlcicgOltudWxsXSwgIFxyXG4gICAgICAnYWxpZW5Eb2NTdnNJZCcgOltudWxsXSwgIFxyXG4gICAgICAnYWxpZW5Eb2NFeHBEYXRlJyA6W251bGxdLCAgXHJcbiAgICAgICdhbGllbkRvY0Rlc2NyaXB0aW9uJyA6W251bGxdLCAgIFxyXG4gICAgICAnY2FyZE51bWJlcicgOltudWxsXSAgLFxyXG4gICAgICAndmlzYU51bWJlcicgIDpbbnVsbF0gLFxyXG4gICAgICAnbmF0dXJhbGl6YXRpb25OdW1iZXInICA6W251bGxdICxcclxuICAgICAgJ2NpdGl6ZW5zaGlwTnVtYmVyJyAgOltudWxsXSAsXHJcbiAgICAgICdjb3VudHJ5T2ZJc3N1YW5jZScgIDpbbnVsbF1cclxuICAgICAgXHJcbiAgICB9KTsgICBcclxuXHJcbiAgIHRoaXMuZ2V0QWxsRG9jdW1lbnRMaXN0KCk7IFxyXG4gICB0aGlzLmdldEFsbENvdXRyaWVzQ29kZXMoKTtcclxuICAgdGhpcy5hbGllbkRvY1R5cGUudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShhbGllbkRvY1R5cGUgPT4ge1xyXG4gICAgdGhpcy5vbkFsaWVuRG9jVHlwZUNoYW5nZShhbGllbkRvY1R5cGUpO1xyXG4gIH0pOyBcclxuICAgdGhpcy5hbGllbkRvY1Bhc3Nwb3J0TnVtYmVyLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHtcclxuICAgIGlmICh2YWwgJiYgdmFsLnRyaW0oKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMuY291bnRyeU9mSXNzdWFuY2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuY291bnRyeU9mSXNzdWFuY2UpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vblZhbGlkYXRvckNoYW5nZSgpO1xyXG4gIH0pO1xyXG5cclxuICAgdGhpcy5hbGllbkRvY1R5cGVGb3JtLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgIHRoaXMub25WYWxpZGF0b3JDaGFuZ2UoKTtcclxuICB9KTtcclxuICB9XHJcblxyXG4gIG9uQWxpZW5Eb2NUeXBlQ2hhbmdlKGFsaWVuRG9jVHlwZTogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkS2V5ID0gYWxpZW5Eb2NUeXBlLnZhbHVlO1xyXG4gICAgaWYgKHRoaXMuYWxpZW5Eb2NUeXBlRm9ybURpcmVjdGl2ZSkge1xyXG4gICAgICB0aGlzLmFsaWVuRG9jVHlwZUZvcm1EaXJlY3RpdmUuZm9ybS5tYXJrQXNQcmlzdGluZSgpO1xyXG4gICAgICB0aGlzLmFsaWVuRG9jVHlwZUZvcm1EaXJlY3RpdmUuZm9ybS5tYXJrQXNVbnRvdWNoZWQoKTtcclxuICAgICAgKHRoaXMuYWxpZW5Eb2NUeXBlRm9ybURpcmVjdGl2ZSBhcyBhbnkpLnN1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5leHBEYXRlRGlzcGxheVZhbHVlID0gJyc7XHJcbiAgICBpZiAodGhpcy5leHBEYXRlSW5wdXRSZWYpIHtcclxuICAgICAgdGhpcy5leHBEYXRlSW5wdXRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5zZWxlY3RlZEtleT09PUFsaWVuQ29uc3RhbnRzLkkzMjcgfHwgdGhpcy5zZWxlY3RlZEtleT09PUFsaWVuQ29uc3RhbnRzLkk1NzEgKXtcclxuICAgICAgICAgIHRoaXMuY2xlYXJ2YWxpZGF0aW9uKCk7XHJcbiAgICAgICAgICB0aGlzLkkzMjc9dHJ1ZTsgICAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMuYWxpZW5Eb2NOdW1iZXJJOTQuc2V0VmFsdWUobnVsbCk7IFxyXG4gICAgICAgICAgdGhpcy5hbGllbkRvY1Bhc3Nwb3J0TnVtYmVyLnNldFZhbHVlKG51bGwpOyBcclxuICAgICAgICAgIHRoaXMuYWxpZW5Eb2NTdnNJZC5zZXRWYWx1ZShudWxsKTsgICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy5hbGllbkRvY0Rlc2NyaXB0aW9uLnNldFZhbHVlKG51bGwpOyBcclxuICAgICAgICAgIHRoaXMuY2FyZE51bWJlci5zZXRWYWx1ZShudWxsKTsgXHJcbiAgICAgICAgICB0aGlzLm5hdHVyYWxpemF0aW9uTnVtYmVyLnNldFZhbHVlKG51bGwpOyBcclxuICAgICAgICAgIHRoaXMudmlzYU51bWJlci5zZXRWYWx1ZShudWxsKTsgXHJcbiAgICAgICAgICB0aGlzLmNpdGl6ZW5zaGlwTnVtYmVyLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5hbGllbkRvY0V4cERhdGUuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLmFsaWVuTnVtYmVyLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5jb3VudHJ5T2ZJc3N1YW5jZS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMuYWxpZW5OdW1iZXIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oQXBwUmVnZXguQUxJRU5fX0RPQ19OVU1CRVJfUkVHRVgpLCBWYWxpZGF0b3JzLm1heExlbmd0aCg5KSwgVmFsaWRhdG9ycy5taW4oOSldKTtcclxuICAgICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMuYWxpZW5Eb2NFeHBEYXRlLCBbQXBwVmFsaWRhdG9ycy5kYXRlRm9ybWF0XSk7XHJcbiAgICB9IGVsc2UgaWYodGhpcy5zZWxlY3RlZEtleT09PUFsaWVuQ29uc3RhbnRzLkk1NTEgfHwgdGhpcy5zZWxlY3RlZEtleT09PUFsaWVuQ29uc3RhbnRzLkk3NjYgKXsgICAgIFxyXG4gICAgICAgICAgdGhpcy5jbGVhcnZhbGlkYXRpb24oKTtcclxuICAgICAgICAgIHRoaXMuSTU1MT10cnVlOyAgIFxyXG4gICAgICAgICAgdGhpcy5hbGllbkRvY051bWJlckk5NC5zZXRWYWx1ZShudWxsKTsgXHJcbiAgICAgICAgICB0aGlzLmFsaWVuRG9jUGFzc3BvcnROdW1iZXIuc2V0VmFsdWUobnVsbCk7IFxyXG4gICAgICAgICAgdGhpcy5hbGllbkRvY1N2c0lkLnNldFZhbHVlKG51bGwpOyAgICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLmFsaWVuRG9jRGVzY3JpcHRpb24uc2V0VmFsdWUobnVsbCk7ICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy5uYXR1cmFsaXphdGlvbk51bWJlci5zZXRWYWx1ZShudWxsKTsgXHJcbiAgICAgICAgICB0aGlzLnZpc2FOdW1iZXIuc2V0VmFsdWUobnVsbCk7ICAgIFxyXG4gICAgICAgICAgdGhpcy5jaXRpemVuc2hpcE51bWJlci5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgIHRoaXMuYWxpZW5Eb2NFeHBEYXRlLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5hbGllbk51bWJlci5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgIHRoaXMuY2FyZE51bWJlci5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgIHRoaXMuY291bnRyeU9mSXNzdWFuY2Uuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLmFsaWVuTnVtYmVyLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5wYXR0ZXJuKEFwcFJlZ2V4LkFMSUVOX19ET0NfTlVNQkVSX1JFR0VYKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoOSksIFZhbGlkYXRvcnMubWluKDkpXSk7XHJcbiAgICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLmNhcmROdW1iZXIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oQXBwUmVnZXguSTU1MV9SRUdFWCksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEzKSwgVmFsaWRhdG9ycy5taW4oMTMpXSk7XHJcbiAgICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLmFsaWVuRG9jRXhwRGF0ZSwgW0FwcFZhbGlkYXRvcnMuZGF0ZUZvcm1hdF0pO1xyXG4gICAgICAgICAgaWYodGhpcy5zZWxlY3RlZEtleT09PUFsaWVuQ29uc3RhbnRzLkk3NjYpe1xyXG4gICAgICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLmFsaWVuRG9jRXhwRGF0ZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIEFwcFZhbGlkYXRvcnMuZGF0ZUZvcm1hdF0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1lbHNlIGlmKHRoaXMuc2VsZWN0ZWRLZXk9PT1BbGllbkNvbnN0YW50cy5DRUNJIFxyXG4gICAgICAgICAgfHwgdGhpcy5zZWxlY3RlZEtleT09PUFsaWVuQ29uc3RhbnRzLkNFQ0hcclxuICAgICAgICAgIHx8IHRoaXMuc2VsZWN0ZWRLZXk9PT1BbGllbkNvbnN0YW50cy5OQVRDKXsgICAgIFxyXG4gICAgICAgICAgdGhpcy5jbGVhcnZhbGlkYXRpb24oKTtcclxuICAgICAgICAgIHRoaXMuQ0VDST10cnVlOyAgIFxyXG4gICAgICAgICAgdGhpcy5hbGllbkRvY051bWJlckk5NC5zZXRWYWx1ZShudWxsKTsgXHJcbiAgICAgICAgICB0aGlzLmFsaWVuRG9jUGFzc3BvcnROdW1iZXIuc2V0VmFsdWUobnVsbCk7IFxyXG4gICAgICAgICAgdGhpcy5hbGllbkRvY1N2c0lkLnNldFZhbHVlKG51bGwpOyAgICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLmFsaWVuRG9jRGVzY3JpcHRpb24uc2V0VmFsdWUobnVsbCk7IFxyXG4gICAgICAgICAgdGhpcy5jYXJkTnVtYmVyLnNldFZhbHVlKG51bGwpOyAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy52aXNhTnVtYmVyLnNldFZhbHVlKG51bGwpOyAgIFxyXG4gICAgICAgICAgdGhpcy5hbGllbkRvY0V4cERhdGUuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLmNpdGl6ZW5zaGlwTnVtYmVyLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5hbGllbk51bWJlci5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgIHRoaXMubmF0dXJhbGl6YXRpb25OdW1iZXIuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLmNvdW50cnlPZklzc3VhbmNlLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICBpZih0aGlzLnNlbGVjdGVkS2V5PT09QWxpZW5Db25zdGFudHMuQ0VDSXx8IHRoaXMuc2VsZWN0ZWRLZXk9PT1BbGllbkNvbnN0YW50cy5OQVRDKXtcclxuICAgICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMuYWxpZW5OdW1iZXIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLFZhbGlkYXRvcnMucGF0dGVybihBcHBSZWdleC5BTElFTl9fRE9DX05VTUJFUl9SRUdFWCksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDkpLCBWYWxpZGF0b3JzLm1pbig5KV0pO1xyXG4gICAgICAgIH0gaWYodGhpcy5zZWxlY3RlZEtleT09PUFsaWVuQ29uc3RhbnRzLkNFQ0h8fCB0aGlzLnNlbGVjdGVkS2V5PT09QWxpZW5Db25zdGFudHMuTkFUQyl7XHJcbiAgICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLm5hdHVyYWxpemF0aW9uTnVtYmVyLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5wYXR0ZXJuKEFwcFJlZ2V4Lk5BVFVSQUxJWkFUSU9OX05VTUJFUl9SRUdFWCksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEyKSwgVmFsaWRhdG9ycy5taW4oNildKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYodGhpcy5zZWxlY3RlZEtleT09PUFsaWVuQ29uc3RhbnRzLkNFQ0gpe1xyXG4gICAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5hbGllbk51bWJlciwgW1ZhbGlkYXRvcnMucGF0dGVybihBcHBSZWdleC5BTElFTl9fRE9DX05VTUJFUl9SRUdFWCksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDkpLCBWYWxpZGF0b3JzLm1pbig5KV0pO1xyXG4gICAgICAgIH0gaWYodGhpcy5zZWxlY3RlZEtleT09PUFsaWVuQ29uc3RhbnRzLkNFQ0kpe1xyXG4gICAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5jaXRpemVuc2hpcE51bWJlciwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybihBcHBSZWdleC5OQVRVUkFMSVpBVElPTl9OVU1CRVJfUkVHRVgpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxMiksIFZhbGlkYXRvcnMubWluKDYpXSk7XHJcbiAgICAgICAgfSAgICAgICAgICBcclxuICAgICAgICB9IGVsc2UgaWYodGhpcy5zZWxlY3RlZEtleT09PUFsaWVuQ29uc3RhbnRzLk1SSVYgfHwgdGhpcy5zZWxlY3RlZEtleT09PUFsaWVuQ29uc3RhbnRzLlQ1NTEpeyAgICAgXHJcbiAgICAgICAgICB0aGlzLmNsZWFydmFsaWRhdGlvbigpOyAgICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLlQ1NTE9dHJ1ZTtcclxuICAgICAgICAgIHRoaXMuYWxpZW5Eb2NOdW1iZXJJOTQuc2V0VmFsdWUobnVsbCk7ICAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMuYWxpZW5Eb2NTdnNJZC5zZXRWYWx1ZShudWxsKTsgICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy5hbGllbkRvY0Rlc2NyaXB0aW9uLnNldFZhbHVlKG51bGwpOyAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLmNpdGl6ZW5zaGlwTnVtYmVyLnNldFZhbHVlKG51bGwpOyAgXHJcbiAgICAgICAgICB0aGlzLm5hdHVyYWxpemF0aW9uTnVtYmVyLnNldFZhbHVlKG51bGwpOyBcclxuICAgICAgICAgIHRoaXMuY2FyZE51bWJlci5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgIHRoaXMuYWxpZW5Eb2NFeHBEYXRlLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5hbGllbk51bWJlci5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgIHRoaXMuYWxpZW5Eb2NQYXNzcG9ydE51bWJlci5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgIHRoaXMudmlzYU51bWJlci5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgIHRoaXMuY291bnRyeU9mSXNzdWFuY2Uuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgICBpZih0aGlzLnNlbGVjdGVkS2V5PT09QWxpZW5Db25zdGFudHMuTVJJVil7XHJcbiAgICAgICAgICAgIHRoaXMuTVJJVj10cnVlOyBcclxuICAgICAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy52aXNhTnVtYmVyLCBbVmFsaWRhdG9ycy5wYXR0ZXJuKEFwcFJlZ2V4Lk5BVFVSQUxJWkFUSU9OX05VTUJFUl9SRUdFWCksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEyKSwgVmFsaWRhdG9ycy5taW4oNildKTtcclxuICAgICAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5hbGllbkRvY1Bhc3Nwb3J0TnVtYmVyLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5wYXR0ZXJuKEFwcFJlZ2V4LlBBU1NQT1JUX05VTUJFUl9SRUdFWCldKTtcclxuICAgICAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5jb3VudHJ5T2ZJc3N1YW5jZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMuYWxpZW5Eb2NQYXNzcG9ydE51bWJlciwgW1ZhbGlkYXRvcnMucGF0dGVybihBcHBSZWdleC5QQVNTUE9SVF9OVU1CRVJfUkVHRVgpXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLmFsaWVuTnVtYmVyLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxWYWxpZGF0b3JzLnBhdHRlcm4oQXBwUmVnZXguQUxJRU5fX0RPQ19OVU1CRVJfUkVHRVgpLCBWYWxpZGF0b3JzLm1heExlbmd0aCg5KSwgVmFsaWRhdG9ycy5taW4oOSldKTtcclxuICAgICAgICB9IGVsc2UgaWYodGhpcy5zZWxlY3RlZEtleT09PUFsaWVuQ29uc3RhbnRzLkk5NCApeyAgICAgXHJcbiAgICAgICAgICB0aGlzLmNsZWFydmFsaWRhdGlvbigpO1xyXG4gICAgICAgICAgdGhpcy5JOTQ9dHJ1ZTsgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMuYWxpZW5Eb2NEZXNjcmlwdGlvbi5zZXRWYWx1ZShudWxsKTsgICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLm5hdHVyYWxpemF0aW9uTnVtYmVyLnNldFZhbHVlKG51bGwpOyBcclxuICAgICAgICAgIHRoaXMudmlzYU51bWJlci5zZXRWYWx1ZShudWxsKTsgICAgXHJcbiAgICAgICAgICB0aGlzLmFsaWVuTnVtYmVyLnNldFZhbHVlKG51bGwpOyAgICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLmNpdGl6ZW5zaGlwTnVtYmVyLnNldFZhbHVlKG51bGwpOyAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLmFsaWVuRG9jUGFzc3BvcnROdW1iZXIuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLmNhcmROdW1iZXIuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLmFsaWVuRG9jRXhwRGF0ZS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgIHRoaXMuYWxpZW5Eb2NOdW1iZXJJOTQuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLmFsaWVuRG9jU3ZzSWQuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLmNvdW50cnlPZklzc3VhbmNlLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5hbGllbkRvY051bWJlckk5NCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybihBcHBSZWdleC5JOTRfRE9DX05VTUJFUl9SRUdFWCldKTtcclxuICAgICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMuYWxpZW5Eb2NTdnNJZCwgW1ZhbGlkYXRvcnMucGF0dGVybihBcHBSZWdleC5TVklTX0lEX05VTUJFUl9SRUdFWCldKTtcclxuICAgICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMuYWxpZW5Eb2NFeHBEYXRlLCBbQXBwVmFsaWRhdG9ycy5kYXRlRm9ybWF0XSk7XHJcbiAgICAgICAgfSAgZWxzZSBpZih0aGlzLnNlbGVjdGVkS2V5PT09QWxpZW5Db25zdGFudHMuSTk0VSApeyAgICAgXHJcbiAgICAgICAgICB0aGlzLmNsZWFydmFsaWRhdGlvbigpO1xyXG4gICAgICAgICAgdGhpcy5JOTRVPXRydWU7ICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLmFsaWVuRG9jRGVzY3JpcHRpb24uc2V0VmFsdWUobnVsbCk7ICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy5uYXR1cmFsaXphdGlvbk51bWJlci5zZXRWYWx1ZShudWxsKTsgXHJcbiAgICAgICAgICB0aGlzLnZpc2FOdW1iZXIuc2V0VmFsdWUobnVsbCk7ICAgIFxyXG4gICAgICAgICAgdGhpcy5hbGllbk51bWJlci5zZXRWYWx1ZShudWxsKTsgICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy5jaXRpemVuc2hpcE51bWJlci5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgIHRoaXMuY2FyZE51bWJlci5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgIHRoaXMuYWxpZW5Eb2NFeHBEYXRlLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5hbGllbkRvY051bWJlckk5NC5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgIHRoaXMuYWxpZW5Eb2NTdnNJZC5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgIHRoaXMuYWxpZW5Eb2NQYXNzcG9ydE51bWJlci5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgIHRoaXMuY291bnRyeU9mSXNzdWFuY2Uuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLmFsaWVuRG9jTnVtYmVySTk0LCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxWYWxpZGF0b3JzLnBhdHRlcm4oQXBwUmVnZXguSTk0X0RPQ19OVU1CRVJfUkVHRVgpXSk7ICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5hbGllbkRvY1N2c0lkLCBbVmFsaWRhdG9ycy5wYXR0ZXJuKEFwcFJlZ2V4LlNWSVNfSURfTlVNQkVSX1JFR0VYKV0pOyBcclxuICAgICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMuYWxpZW5Eb2NQYXNzcG9ydE51bWJlciwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsVmFsaWRhdG9ycy5wYXR0ZXJuKEFwcFJlZ2V4LlBBU1NQT1JUX05VTUJFUl9SRUdFWCldKTsgICBcclxuICAgICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMuYWxpZW5Eb2NFeHBEYXRlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgQXBwVmFsaWRhdG9ycy5kYXRlRm9ybWF0XSk7XHJcbiAgICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLnZpc2FOdW1iZXIsIFtWYWxpZGF0b3JzLnBhdHRlcm4oQXBwUmVnZXguTkFUVVJBTElaQVRJT05fTlVNQkVSX1JFR0VYKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTIpLCBWYWxpZGF0b3JzLm1pbig2KV0pO1xyXG4gICAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5jb3VudHJ5T2ZJc3N1YW5jZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuICAgICAgICB9ZWxzZSBpZih0aGlzLnNlbGVjdGVkS2V5PT09QWxpZW5Db25zdGFudHMuT1RIUil7XHJcbiAgICAgICAgdGhpcy5jbGVhcnZhbGlkYXRpb24oKTtcclxuICAgICAgICAgdGhpcy5vdGhlckRvY1R5cGU9dHJ1ZTtcclxuICAgICAgICAgdGhpcy5hbGllbkRvY051bWJlckk5NC5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgdGhpcy5hbGllbkRvY1N2c0lkLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICB0aGlzLmFsaWVuRG9jUGFzc3BvcnROdW1iZXIuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgIHRoaXMuYWxpZW5Eb2NFeHBEYXRlLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICB0aGlzLmFsaWVuTnVtYmVyLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICB0aGlzLmNhcmROdW1iZXIuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgIHRoaXMubmF0dXJhbGl6YXRpb25OdW1iZXIuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgIHRoaXMudmlzYU51bWJlci5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgdGhpcy5jaXRpemVuc2hpcE51bWJlci5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgdGhpcy5hbGllbkRvY0Rlc2NyaXB0aW9uLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICB0aGlzLmNvdW50cnlPZklzc3VhbmNlLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLmFsaWVuTnVtYmVyLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5wYXR0ZXJuKEFwcFJlZ2V4LkFMSUVOX19ET0NfTlVNQkVSX1JFR0VYKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoOSksIFZhbGlkYXRvcnMubWluKDkpXSk7XHJcbiAgICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMuYWxpZW5Eb2NOdW1iZXJJOTQsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oQXBwUmVnZXguSTk0X0RPQ19OVU1CRVJfUkVHRVgpXSk7XHJcbiAgICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMuYWxpZW5Eb2NQYXNzcG9ydE51bWJlciwgW1ZhbGlkYXRvcnMucGF0dGVybihBcHBSZWdleC5QQVNTUE9SVF9OVU1CRVJfUkVHRVgpXSk7XHJcbiAgICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMuYWxpZW5Eb2NTdnNJZCwgW1ZhbGlkYXRvcnMucGF0dGVybihBcHBSZWdleC5TVklTX0lEX05VTUJFUl9SRUdFWCldKTtcclxuICAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5hbGllbkRvY0Rlc2NyaXB0aW9uLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxWYWxpZGF0b3JzLm1heExlbmd0aCgzNSldKTtcclxuICAgICAgICB9IGVsc2UgIGlmKHRoaXMuc2VsZWN0ZWRLZXk9PT1BbGllbkNvbnN0YW50cy5DRUVWIHx8IHRoaXMuc2VsZWN0ZWRLZXk9PT1BbGllbkNvbnN0YW50cy5JMjAgfHwgIHRoaXMuc2VsZWN0ZWRLZXk9PT1BbGllbkNvbnN0YW50cy5VTkZQKXtcclxuICAgICAgICAgdGhpcy5jbGVhcnZhbGlkYXRpb24oKTtcclxuICAgICAgICAgdGhpcy5EUzIwMTlEb2NUeXBlPXRydWU7ICAgICAgIFxyXG4gICAgICAgICB0aGlzLmFsaWVuRG9jTnVtYmVySTk0LnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICB0aGlzLmFsaWVuRG9jU3ZzSWQuc2V0VmFsdWUobnVsbCk7ICAgICAgICAgICAgICBcclxuICAgICAgICAgdGhpcy5hbGllbkRvY0V4cERhdGUuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgIHRoaXMuYWxpZW5Eb2NQYXNzcG9ydE51bWJlci5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgdGhpcy5hbGllbk51bWJlci5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgdGhpcy5jYXJkTnVtYmVyLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICB0aGlzLm5hdHVyYWxpemF0aW9uTnVtYmVyLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICB0aGlzLnZpc2FOdW1iZXIuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgIHRoaXMuY2l0aXplbnNoaXBOdW1iZXIuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgIHRoaXMuYWxpZW5Eb2NEZXNjcmlwdGlvbi5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgdGhpcy5jb3VudHJ5T2ZJc3N1YW5jZS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5hbGllbkRvY051bWJlckk5NCwgW1ZhbGlkYXRvcnMucGF0dGVybihBcHBSZWdleC5JOTRfRE9DX05VTUJFUl9SRUdFWCldKTsgICAgICAgIFxyXG4gICAgICAgICBpZih0aGlzLnNlbGVjdGVkS2V5PT09QWxpZW5Db25zdGFudHMuVU5GUClcclxuICAgICAgICAge1xyXG4gICAgICAgICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLmFsaWVuRG9jU3ZzSWQsIFtWYWxpZGF0b3JzLnBhdHRlcm4oQXBwUmVnZXguU1ZJU19JRF9OVU1CRVJfUkVHRVgpXSk7XHJcbiAgICAgICAgICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMuYWxpZW5Eb2NQYXNzcG9ydE51bWJlciwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsVmFsaWRhdG9ycy5wYXR0ZXJuKEFwcFJlZ2V4LlBBU1NQT1JUX05VTUJFUl9SRUdFWCldKTtcclxuICAgICAgICAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5hbGllbkRvY0V4cERhdGUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBBcHBWYWxpZGF0b3JzLmRhdGVGb3JtYXRdKTtcclxuICAgICAgICAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5jb3VudHJ5T2ZJc3N1YW5jZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLmFsaWVuRG9jU3ZzSWQsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oQXBwUmVnZXguU1ZJU19JRF9OVU1CRVJfUkVHRVgpXSk7XHJcbiAgICAgICAgICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMuYWxpZW5Eb2NQYXNzcG9ydE51bWJlciwgW1ZhbGlkYXRvcnMucGF0dGVybihBcHBSZWdleC5QQVNTUE9SVF9OVU1CRVJfUkVHRVgpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgfVxyXG4gIGNsZWFydmFsaWRhdGlvbigpe1xyXG4gICAgdGhpcy5vdGhlckRvY1R5cGU9ZmFsc2U7XHJcbiAgICB0aGlzLkRTMjAxOURvY1R5cGU9ZmFsc2U7XHJcbiAgICB0aGlzLkk1NTE9ZmFsc2U7XHJcbiAgICB0aGlzLkkzMjc9ZmFsc2U7ICBcclxuICAgIHRoaXMuQ0VDST1mYWxzZTsgXHJcbiAgICB0aGlzLkNFQ0g9ZmFsc2U7IFxyXG4gICAgdGhpcy5NUklWPWZhbHNlOyBcclxuICAgIHRoaXMuVDU1MT1mYWxzZTtcclxuICAgIHRoaXMuSTk0PWZhbHNlOyAgIFxyXG4gICAgdGhpcy5JOTRVPWZhbHNlOyBcclxuXHJcbiAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuYWxpZW5OdW1iZXIpO1xyXG4gICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmFsaWVuRG9jTnVtYmVySTk0KTtcclxuICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5hbGllbkRvY1Bhc3Nwb3J0TnVtYmVyKTtcclxuICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5hbGllbkRvY1N2c0lkKTtcclxuICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5hbGllbkRvY0V4cERhdGUpO1xyXG4gICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmFsaWVuRG9jRGVzY3JpcHRpb24pO1xyXG4gICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmNhcmROdW1iZXIpO1xyXG4gICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnZpc2FOdW1iZXIpOyAgXHJcbiAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMubmF0dXJhbGl6YXRpb25OdW1iZXIpOyBcclxuICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5jaXRpemVuc2hpcE51bWJlcik7XHJcbiAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuY291bnRyeU9mSXNzdWFuY2UpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsRG9jdW1lbnRMaXN0KCl7XHJcbiAgICB0aGlzLnF1ZXN0aW9ubmFpcmVTZXJ2aWNlLmdldEFsaWVuRG9jKCkuc3Vic2NyaWJlKFxyXG4gICAgICByZXMgPT4geyAgICAgIFxyXG4gICAgICAgIHRoaXMuYWxpZW5Eb2NUeXBlT3B0aW9ucyA9IHJlc1snY2hvaWNlcyddO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldEFsbENvdXRyaWVzQ29kZXMoKXtcclxuICAgIHRoaXMucXVlc3Rpb25uYWlyZVNlcnZpY2UuZ2V0ZmV0Y2hDb3VudHJ5T2ZJc3N1YW5jZUNvZGUoKS5zdWJzY3JpYmUoXHJcbiAgICAgIHJlcyA9PiB7ICAgICAgXHJcbiAgICAgICAgdGhpcy5jb3VudHJ5T3B0aW9ucyA9IHJlc1snY2hvaWNlcyddO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGZpbHRlckNvdW50cnkoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgcXVlcnkgPSBldmVudC5xdWVyeSA/IGV2ZW50LnF1ZXJ5LnJlcGxhY2UoL1teQS1aYS16XS9nLCAnJykudG9VcHBlckNhc2UoKS5zdWJzdHJpbmcoMCwgMykgOiAnJztcclxuICAgIGlmIChxdWVyeSkge1xyXG4gICAgICB0aGlzLmZpbHRlcmVkQ291bnRyaWVzID0gdGhpcy5jb3VudHJ5T3B0aW9ucy5maWx0ZXIoY291bnRyeSA9PlxyXG4gICAgICAgIGNvdW50cnkudmFsdWUudG9VcHBlckNhc2UoKS5zdGFydHNXaXRoKHF1ZXJ5KVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maWx0ZXJlZENvdW50cmllcyA9IFsuLi50aGlzLmNvdW50cnlPcHRpb25zXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ291bnRyeVNlbGVjdChldmVudDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQudmFsdWUpIHtcclxuICAgICAgdGhpcy5jb3VudHJ5T2ZJc3N1YW5jZS5zZXRWYWx1ZShldmVudC52YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNvdW50cnlDbGVhcigpIHtcclxuICAgIHRoaXMuY291bnRyeU9mSXNzdWFuY2Uuc2V0VmFsdWUobnVsbCk7XHJcbiAgfVxyXG5cclxuICBvbkNvdW50cnlLZXlVcChldmVudDogYW55KSB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldDtcclxuICAgIGlmIChpbnB1dCAmJiBpbnB1dC52YWx1ZSkge1xyXG4gICAgICBpbnB1dC52YWx1ZSA9IGlucHV0LnZhbHVlLnJlcGxhY2UoL1teQS1aYS16XS9nLCAnJykudG9VcHBlckNhc2UoKS5zdWJzdHJpbmcoMCwgMyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIG9uQ2hhbmdlOiBGdW5jdGlvbiA9ICgpID0+IHt9O1xyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKG9uQ2hhbmdlOiBhbnkpIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBvbkNoYW5nZTtcclxuICAgIGNvbnN0IHN1YiA9IHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IG9uQ2hhbmdlKHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5nZXRSYXdWYWx1ZSgpKSk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlU3Vicy5wdXNoKHN1Yik7XHJcbiAgfVxyXG4gIFxyXG4gIHNldFdpZHRoU3R5bGUoKTogb2JqZWN0IHtcclxuICAgIGlmICh0aGlzLmZyb21Qb3B1cCkge1xyXG4gICAgICBsZXQgc3R5bGVPYmogPSB7XHJcbiAgICAgICAgJ21heC13aWR0aCc6ICdpbml0aWFsJ1xyXG4gICAgICB9O1xyXG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihzdHlsZU9iaik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgc3R5bGVPYmogPSB7XHJcbiAgICAgICAgJ21heC13aWR0aCc6ICdmaXQtY29udGVudCdcclxuICAgICAgfTtcclxuICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oc3R5bGVPYmopO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGFsaWVuRG9jVHlwZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmFsaWVuRG9jVHlwZUZvcm0uY29udHJvbHNbJ2FsaWVuRG9jVHlwZSddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFsaWVuTnVtYmVyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5jb250cm9sc1snYWxpZW5OdW1iZXInXTtcclxuICB9XHJcblxyXG4gIGdldCBhbGllbkRvY051bWJlckk5NCgpIHtcclxuICAgIHJldHVybiB0aGlzLmFsaWVuRG9jVHlwZUZvcm0uY29udHJvbHNbJ2FsaWVuRG9jTnVtYmVySTk0J107XHJcbiAgfVxyXG5cclxuICBnZXQgYWxpZW5Eb2NQYXNzcG9ydE51bWJlcigpIHtcclxuICAgIHJldHVybiB0aGlzLmFsaWVuRG9jVHlwZUZvcm0uY29udHJvbHNbJ2FsaWVuRG9jUGFzc3BvcnROdW1iZXInXTtcclxuICB9XHJcblxyXG4gIGdldCBhbGllbkRvY1N2c0lkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5jb250cm9sc1snYWxpZW5Eb2NTdnNJZCddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFsaWVuRG9jRXhwRGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmFsaWVuRG9jVHlwZUZvcm0uY29udHJvbHNbJ2FsaWVuRG9jRXhwRGF0ZSddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFsaWVuRG9jRGVzY3JpcHRpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hbGllbkRvY1R5cGVGb3JtLmNvbnRyb2xzWydhbGllbkRvY0Rlc2NyaXB0aW9uJ107XHJcbiAgfVxyXG5cclxuICBnZXQgY2FyZE51bWJlcigpIHtcclxuICAgIHJldHVybiB0aGlzLmFsaWVuRG9jVHlwZUZvcm0uY29udHJvbHNbJ2NhcmROdW1iZXInXTtcclxuICB9XHJcblxyXG4gIGdldCBuYXR1cmFsaXphdGlvbk51bWJlcigpIHtcclxuICAgIHJldHVybiB0aGlzLmFsaWVuRG9jVHlwZUZvcm0uY29udHJvbHNbJ25hdHVyYWxpemF0aW9uTnVtYmVyJ107XHJcbiAgfVxyXG5cclxuICBnZXQgdmlzYU51bWJlcigpIHtcclxuICAgIHJldHVybiB0aGlzLmFsaWVuRG9jVHlwZUZvcm0uY29udHJvbHNbJ3Zpc2FOdW1iZXInXTtcclxuICB9XHJcbiAgZ2V0IGNpdGl6ZW5zaGlwTnVtYmVyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5jb250cm9sc1snY2l0aXplbnNoaXBOdW1iZXInXTtcclxuICB9XHJcblxyXG4gIGdldCBjb3VudHJ5T2ZJc3N1YW5jZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmFsaWVuRG9jVHlwZUZvcm0uY29udHJvbHNbJ2NvdW50cnlPZklzc3VhbmNlJ107XHJcbiAgfVxyXG5cclxuIFxyXG4gIG9uVG91Y2hlZDogRnVuY3Rpb24gPSAoKSA9PiB7IH07XHJcbiAgb25DaGFuZ2VTdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIG9uVmFsaWRhdG9yQ2hhbmdlOiBGdW5jdGlvbiA9ICgpID0+IHsgfTtcclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiBGdW5jdGlvbikge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBvblRvdWNoZWQ7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVmFsaWRhdG9yQ2hhbmdlID0gZm47XHJcbiAgfSBcclxuXHJcbiAgaW5pdEVyckRlZnMoKSB7XHJcbiAgICB0aGlzLmFsaWVuTnVtYmVyRXJyRGVmID0ge1xyXG4gICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2FsaWVuLmRvYy5lcnJvci5yZXF1aXJlZCcpLFxyXG4gICAgICBwYXR0ZXJuOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnYWxpZW4uZG9jLmVycm9yLnBhdHRlcm4nKSxcclxuICAgICAgaW52YWxpZERvY051bWJlcjogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2FsaWVuLmRvYy5lcnJvci5pbnZhbGlkRG9jTnVtYmVyJylcclxuICAgIH07XHJcbiAgICB0aGlzLmNhcmROdW1iZXJFcnJEZWYgPSB7XHJcbiAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnYWxpZW4uZG9jLmVycm9yLnJlcXVpcmVkJyksXHJcbiAgICAgIGludmFsaWRhY2FyZE51bWJlcjogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2FsaWVuLmRvYy5lcnJvci5pbnZhbGlkQ2FyZE51bWJlcicpXHJcbiAgICB9O1xyXG4gICAgdGhpcy5pOTROdW1iZXJFcnJEZWYgPSB7XHJcbiAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnYWxpZW4uZG9jLmVycm9yLnJlcXVpcmVkJyksXHJcbiAgICAgIGludmFsaWREYWxpZW5Eb2NOdW1iZXJJOTQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdhbGllbi5kb2MuZXJyb3IuaW52YWxpZEk5NE51bWJlcicpXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zZXZpc0lkRXJyRGVmID0ge1xyXG4gICAgICBpbnZhbGlkYVNldmlzSWROdW1iZXI6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdhbGllbi5kb2MuZXJyb3IuaW52YWxpZFNldmlzSWQnKVxyXG4gICAgfTtcclxuICAgIHRoaXMudmlzYU51bWJlckVyckRlZiA9IHtcclxuICAgICAgaW52YWxpZGFWaXNhVmFsaWRhdG9yOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnYWxpZW4uZG9jLmVycm9yLmludmFsaWRWaXNhTnVtYmVyJylcclxuICAgIH07XHJcbiAgICB0aGlzLm5hdHVyYWxpemF0aW9uTnVtYmVyRXJyRGVmID0ge1xyXG4gICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2FsaWVuLmRvYy5lcnJvci5yZXF1aXJlZCcpLFxyXG4gICAgICBpbnZhbGlkbmF0dXJhbGl6YXRpb25OdW1iZXI6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdhbGllbi5kb2MuZXJyb3IuaW52YWxpZE5hdHVyYWxpemF0aW9uTnVtYmVyJylcclxuICAgIH07XHJcbiAgICB0aGlzLmNpdGl6ZW5zaGlwTnVtYmVyRXJyRGVmID0ge1xyXG4gICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2FsaWVuLmRvYy5lcnJvci5yZXF1aXJlZCcpLFxyXG4gICAgICBpbnZhbGlkQ2l0aXplbnNoaXBOdW1iZXI6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdhbGllbi5kb2MuZXJyb3IuaW52YWxpZENpdGl6ZW5zaGlwTnVtYmVyJylcclxuICAgIH07XHJcbiAgICB0aGlzLmV4cERhdGVSZXF1aXJlZEVyckRlZiA9IHtcclxuICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdhbGllbi5kb2MuZXJyb3IucmVxdWlyZWQnKSxcclxuICAgICAgaW52YWxpZERhdGVGb3JtYXQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdhbGllbi5kb2MuZXJyb3IuaW52YWxpZERhdGVGb3JtYXQnKVxyXG4gICAgfTtcclxuICAgIHRoaXMucGFzc3BvcnROdW1iZXJFcnJEZWYgPSB7XHJcbiAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnYWxpZW4uZG9jLmVycm9yLnJlcXVpcmVkJyksXHJcbiAgICAgIGludmFsaWRhUGFzc3BvcnROdW1iZXI6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdhbGllbi5kb2MuZXJyb3IuaW52YWxpZFBhc3Nwb3J0TnVtYmVyJylcclxuICAgIH07XHJcblxyXG4gIH0gXHJcbiAgXHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgZm9yIChsZXQgc3ViIG9mIHRoaXMub25DaGFuZ2VTdWJzKSB7XHJcbiAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbi8qICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLmFsaWVuRG9jVHlwZUZvcm0uc2V0VmFsdWUodmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIH1cclxuICB9Ki9cclxuXHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgZm9ybVZhbHVlIDogQWxpZW5Eb2NDb21wb25lbnRNb2RlbDtcclxuICAgIGlmKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyl7XHJcbiAgICAgIGZvcm1WYWx1ZSA9IEpTT04ucGFyc2UodmFsdWUudG9TdHJpbmcoKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3JtVmFsdWUgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZm9ybVZhbHVlPy5hbGllbkRvY1R5cGUpIHtcclxuICAgICAgdGhpcy5zZXRBbGllbkRvY1R5cGUoZm9ybVZhbHVlLmFsaWVuRG9jVHlwZSwgZm9ybVZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5wYXRjaFZhbHVlKGZvcm1WYWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfSBcclxuICB9XHJcblxyXG5cclxuXHJcbiAgc2V0QWxpZW5Eb2NUeXBlKGFsaWVuRG9jVHlwZSwgZm9ybVZhbHVlPzogYW55KXtcclxuICAgIHRoaXMucXVlc3Rpb25uYWlyZVNlcnZpY2UuZ2V0QWxpZW5Eb2MoKS5zdWJzY3JpYmUoXHJcbiAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgdGhpcy5hbGllbkRvY1R5cGVPcHRpb25zID0gcmVzWydjaG9pY2VzJ107XHJcbiAgICAgICAgbGV0IHNlbGVjdGVkYWxpZW5Eb2NUeXBlID0gdGhpcy5hbGllbkRvY1R5cGVPcHRpb25zLmZpbHRlcihjID0+IHtcclxuICAgICAgICAgIGlmKHR5cGVvZiBhbGllbkRvY1R5cGUudmFsdWUgPT0gJ3VuZGVmaW5lZCcpe1xyXG4gICAgICAgICAgICByZXR1cm4gYy52YWx1ZSA9PSBhbGllbkRvY1R5cGU7XHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgcmV0dXJuIGMudmFsdWUgPT0gYWxpZW5Eb2NUeXBlLnZhbHVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pWzBdO1xyXG4gICAgICAgIHRoaXMuYWxpZW5Eb2NUeXBlLnBhdGNoVmFsdWUoc2VsZWN0ZWRhbGllbkRvY1R5cGUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICB0aGlzLm9uQWxpZW5Eb2NUeXBlQ2hhbmdlKHNlbGVjdGVkYWxpZW5Eb2NUeXBlKTtcclxuICAgICAgICBpZiAoZm9ybVZhbHVlKSB7XHJcbiAgICAgICAgICBjb25zdCB7IGFsaWVuRG9jVHlwZTogXywgLi4ucmVzdCB9ID0gZm9ybVZhbHVlO1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHVzZXJUeXBlZERhdGUgPSB0aGlzLmV4cERhdGVEaXNwbGF5VmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5wYXRjaFZhbHVlKHJlc3QsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgY29uc3QgZGF0ZVRvU2hvdyA9IHVzZXJUeXBlZERhdGUgfHwgcmVzdC5hbGllbkRvY0V4cERhdGU7XHJcbiAgICAgICAgICAgIGlmIChkYXRlVG9TaG93ICYmIHRoaXMuZXhwRGF0ZUlucHV0UmVmKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5leHBEYXRlSW5wdXRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA9IGRhdGVUb1Nob3c7XHJcbiAgICAgICAgICAgICAgdGhpcy5leHBEYXRlRGlzcGxheVZhbHVlID0gZGF0ZVRvU2hvdztcclxuICAgICAgICAgICAgICB0aGlzLmFsaWVuRG9jRXhwRGF0ZS5zZXRWYWx1ZShkYXRlVG9TaG93LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLmFsaWVuRG9jVHlwZUZvcm0uZ2V0UmF3VmFsdWUoKSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc3VibWl0KCl7XHJcbiAgICBjb25zdCBleHBWYWwgPSB0aGlzLmFsaWVuRG9jRXhwRGF0ZS52YWx1ZTtcclxuICAgIGlmIChleHBWYWwgJiYgIS9eXFxkezJ9XFwvXFxkezJ9XFwvXFxkezR9JC8udGVzdChleHBWYWwpKSB7XHJcbiAgICAgIHRoaXMuYWxpZW5Eb2NFeHBEYXRlLnNldEVycm9ycyh7IGludmFsaWREYXRlRm9ybWF0OiB0cnVlIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hbGllbkRvY1R5cGVGb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgIE9iamVjdC52YWx1ZXModGhpcy5hbGllbkRvY1R5cGVGb3JtLmNvbnRyb2xzKS5mb3JFYWNoKGMgPT4gYy5tYXJrQXNEaXJ0eSgpKTtcclxuICAgIGlmICh0aGlzLmFsaWVuRG9jVHlwZUZvcm1EaXJlY3RpdmUpIHtcclxuICAgICAgKHRoaXMuYWxpZW5Eb2NUeXBlRm9ybURpcmVjdGl2ZSBhcyBhbnkpLnN1Ym1pdHRlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybURpcmVjdGl2ZS5vblN1Ym1pdCh1bmRlZmluZWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgXHJcbiAgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XHJcbiAgICBpZiAodGhpcy5za2lwVmFsaWRhdGlvbikgcmV0dXJuIG51bGw7XHJcbiAgICBpZiAoIXRoaXMuYWxpZW5Eb2NUeXBlLnZhbHVlKSByZXR1cm4gbnVsbDtcclxuICAgIGNvbnN0IGV4cFZhbCA9IHRoaXMuYWxpZW5Eb2NFeHBEYXRlLnZhbHVlO1xyXG4gICAgY29uc3QgaGFzRGF0ZUVycm9yID0gZXhwVmFsICYmICEvXlxcZHsyfVxcL1xcZHsyfVxcL1xcZHs0fSQvLnRlc3QoZXhwVmFsKTtcclxuICAgIGlmIChoYXNEYXRlRXJyb3IpIHtcclxuICAgICAgdGhpcy5hbGllbkRvY0V4cERhdGUuc2V0RXJyb3JzKHsgaW52YWxpZERhdGVGb3JtYXQ6IHRydWUgfSk7XHJcbiAgICAgIHRoaXMuYWxpZW5Eb2NFeHBEYXRlLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgdGhpcy5hbGllbkRvY0V4cERhdGUubWFya0FzRGlydHkoKTtcclxuICAgICAgaWYgKHRoaXMuYWxpZW5Eb2NUeXBlRm9ybURpcmVjdGl2ZSkge1xyXG4gICAgICAgIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybURpcmVjdGl2ZS5vblN1Ym1pdCh1bmRlZmluZWQpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB7IGRvY1R5cGVWYWxpZGF0aW9uRmxhZzogdHJ1ZSB9O1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmFsaWVuRG9jVHlwZUZvcm0udmFsaWQpIHtcclxuICAgICAgcmV0dXJuIHsgZG9jVHlwZVZhbGlkYXRpb25GbGFnOiB0cnVlIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbiAgc2V0YWxpZW5OdW1iZXJWYWxpZGF0b3IoKSB7XHJcbiAgICB0aGlzLmFsaWVuTnVtYmVyLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHsgICAgICBcclxuICAgICAgaWYoIXRoaXMuYWxpZW5OdW1iZXIudmFsdWUpIHtcclxuICAgICAgICBpZih0aGlzLmlzT3B0aW9uYWwodGhpcy5hbGllbk51bWJlcikpIHtcclxuICAgICAgICAgIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5jb250cm9sc1snYWxpZW5OdW1iZXInXS5zZXRFcnJvcnMobnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB2YWxpZDEgPSBBcHBSZWdleC5BTElFTl9fRE9DX05VTUJFUl9SRUdFWC50ZXN0KHRoaXMuYWxpZW5OdW1iZXIudmFsdWUpOyBcclxuICAgICAgaWYgKCF2YWxpZDEpIHtcclxuICAgICAgICAgICAgIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5jb250cm9sc1snYWxpZW5OdW1iZXInXS5zZXRFcnJvcnMoe2ludmFsaWREb2NOdW1iZXI6IHRydWUgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5pbnZhbGlkO1xyXG4gICAgICAgICAgICByZXR1cm4geyBpbnZhbGlkRG9jTnVtYmVyOiB0cnVlIH07XHJcbiAgICAgICAgICB9ICAgICAgICAgXHJcbiAgICAgIH0pO1xyXG4gIH0gIFxyXG4gIHNldEk5NE51bWJlclZhbGlkYXRvcigpIHtcclxuICAgIHRoaXMuYWxpZW5Eb2NOdW1iZXJJOTQudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWwgPT4geyAgICAgIFxyXG4gICAgICBpZighdGhpcy5hbGllbkRvY051bWJlckk5NC52YWx1ZSkge1xyXG4gICAgICAgIGlmKHRoaXMuaXNPcHRpb25hbCh0aGlzLmFsaWVuRG9jTnVtYmVySTk0KSkge1xyXG4gICAgICAgICAgdGhpcy5hbGllbkRvY1R5cGVGb3JtLmNvbnRyb2xzWydhbGllbkRvY051bWJlckk5NCddLnNldEVycm9ycyhudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHZhbGlkMSA9IEFwcFJlZ2V4Lkk5NF9ET0NfTlVNQkVSX1JFR0VYLnRlc3QodGhpcy5hbGllbkRvY051bWJlckk5NC52YWx1ZSk7XHJcbiAgICAgICAgaWYgKCF2YWxpZDEpIHtcclxuICAgICAgICAgICAgIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5jb250cm9sc1snYWxpZW5Eb2NOdW1iZXJJOTQnXS5zZXRFcnJvcnMoe2ludmFsaWREYWxpZW5Eb2NOdW1iZXJJOTQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5pbnZhbGlkO1xyXG4gICAgICAgICAgICByZXR1cm4geyBpbnZhbGlkRGFsaWVuRG9jTnVtYmVySTk0OiB0cnVlIH07XHJcbiAgICAgICAgICB9ICAgICAgICAgXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0RG9jdW1lbnREZXNjcmlwdGlvblZhbGlkYXRvcigpIHsgXHJcbiAgICB0aGlzLmFsaWVuRG9jRGVzY3JpcHRpb24udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWwgPT4geyAgICAgIFxyXG4gICAvLyAgIGNvbnN0IHZhbGlkMSA9IEFwcFJlZ2V4Lkk5NF9ET0NfTlVNQkVSX1JFR0VYLnRlc3QodGhpcy5hbGllbkRvY0Rlc2NyaXB0aW9uLnZhbHVlKTtcclxuICAgICAgICBpZiAodGhpcy5hbGllbkRvY0Rlc2NyaXB0aW9uLnZhbHVlLmxlbmd0aD4zNSkgeyAgICAgICAgXHJcbiAgICAgICAgICAgICB0aGlzLmFsaWVuRG9jVHlwZUZvcm0uY29udHJvbHNbJ2FsaWVuRG9jRGVzY3JpcHRpb24nXS5zZXRFcnJvcnMoe2luYXZsaWREb2NEZXNjcmlwdGlvbjogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgdGhpcy5hbGllbkRvY1R5cGVGb3JtLmludmFsaWQ7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGluYXZsaWREb2NEZXNjcmlwdGlvbjogdHJ1ZSB9O1xyXG4gICAgICAgICAgfSAgICAgICAgIFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgc2V0UGFzc3BvcnROdW1iZXJWYWxpZGF0b3IoKSB7XHJcbiAgICB0aGlzLmFsaWVuRG9jUGFzc3BvcnROdW1iZXIudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWwgPT4geyAgICAgIFxyXG4gICAgICBpZighdGhpcy5hbGllbkRvY1Bhc3Nwb3J0TnVtYmVyLnZhbHVlKSB7XHJcbiAgICAgICAgaWYodGhpcy5pc09wdGlvbmFsKHRoaXMuYWxpZW5Eb2NQYXNzcG9ydE51bWJlcikpIHtcclxuICAgICAgICAgIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5jb250cm9sc1snYWxpZW5Eb2NQYXNzcG9ydE51bWJlciddLnNldEVycm9ycyhudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHZhbGlkMSA9IEFwcFJlZ2V4LlBBU1NQT1JUX05VTUJFUl9SRUdFWC50ZXN0KHRoaXMuYWxpZW5Eb2NQYXNzcG9ydE51bWJlci52YWx1ZSk7ICAgICAgXHJcbiAgICAgIGlmICghdmFsaWQxKSB7XHJcbiAgICAgICAgICAgICB0aGlzLmFsaWVuRG9jVHlwZUZvcm0uY29udHJvbHNbJ2FsaWVuRG9jUGFzc3BvcnROdW1iZXInXS5zZXRFcnJvcnMoe2ludmFsaWRhUGFzc3BvcnROdW1iZXI6IHRydWUgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5pbnZhbGlkO1xyXG4gICAgICAgICAgICByZXR1cm4geyBpbnZhbGlkYVBhc3Nwb3J0TnVtYmVyOiB0cnVlIH07XHJcbiAgICAgICAgICB9ICAgICAgICAgXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0U1ZJU0lkVmFsaWRhdG9yKCkge1xyXG4gICAgdGhpcy5hbGllbkRvY1N2c0lkLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHsgICAgICBcclxuICAgICAgaWYoIXRoaXMuYWxpZW5Eb2NTdnNJZC52YWx1ZSkge1xyXG4gICAgICAgIGlmKHRoaXMuaXNPcHRpb25hbCh0aGlzLmFsaWVuRG9jU3ZzSWQpKSB7XHJcbiAgICAgICAgICB0aGlzLmFsaWVuRG9jVHlwZUZvcm0uY29udHJvbHNbJ2FsaWVuRG9jU3ZzSWQnXS5zZXRFcnJvcnMobnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB2YWxpZDEgPSBBcHBSZWdleC5TVklTX0lEX05VTUJFUl9SRUdFWC50ZXN0KHRoaXMuYWxpZW5Eb2NTdnNJZC52YWx1ZSk7ICAgICAgXHJcbiAgICAgIGlmICghdmFsaWQxKSB7XHJcbiAgICAgICAgICAgICB0aGlzLmFsaWVuRG9jVHlwZUZvcm0uY29udHJvbHNbJ2FsaWVuRG9jU3ZzSWQnXS5zZXRFcnJvcnMoe2ludmFsaWRhU2V2aXNJZE51bWJlcjogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgdGhpcy5hbGllbkRvY1R5cGVGb3JtLmludmFsaWQ7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGludmFsaWRhU2V2aXNJZE51bWJlcjogdHJ1ZSB9O1xyXG4gICAgICAgICAgfSAgICAgICAgIFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldGNhcmROdW1iZXJWYWxpZGF0b3IoKXtcclxuICAgIHRoaXMuY2FyZE51bWJlci52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbCA9PiB7ICAgICAgXHJcbiAgICAgIGlmKCF0aGlzLmNhcmROdW1iZXIudmFsdWUpIHtcclxuICAgICAgICBpZih0aGlzLmlzT3B0aW9uYWwodGhpcy5jYXJkTnVtYmVyKSkge1xyXG4gICAgICAgICAgdGhpcy5hbGllbkRvY1R5cGVGb3JtLmNvbnRyb2xzWydjYXJkTnVtYmVyJ10uc2V0RXJyb3JzKG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdmFsaWQxID0gQXBwUmVnZXguSTU1MV9SRUdFWC50ZXN0KHRoaXMuY2FyZE51bWJlci52YWx1ZSk7ICAgICAgXHJcbiAgICAgIGlmICghdmFsaWQxKSB7XHJcbiAgICAgICAgICAgICB0aGlzLmFsaWVuRG9jVHlwZUZvcm0uY29udHJvbHNbJ2NhcmROdW1iZXInXS5zZXRFcnJvcnMoe2ludmFsaWRhY2FyZE51bWJlcjogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgdGhpcy5hbGllbkRvY1R5cGVGb3JtLmludmFsaWQ7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGludmFsaWRhY2FyZE51bWJlcjogdHJ1ZSB9O1xyXG4gICAgICAgICAgfSAgICAgICAgIFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldE5hdHVyYWxpemF0aW9uTnVtYmVyVmFsaWRhdG9yKCl7XHJcbiAgICB0aGlzLm5hdHVyYWxpemF0aW9uTnVtYmVyLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHsgICAgICBcclxuICAgICAgaWYoIXRoaXMubmF0dXJhbGl6YXRpb25OdW1iZXIudmFsdWUpIHtcclxuICAgICAgICBpZih0aGlzLmlzT3B0aW9uYWwodGhpcy5uYXR1cmFsaXphdGlvbk51bWJlcikpIHtcclxuICAgICAgICAgIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5jb250cm9sc1snbmF0dXJhbGl6YXRpb25OdW1iZXInXS5zZXRFcnJvcnMobnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB2YWxpZDEgPSBBcHBSZWdleC5OQVRVUkFMSVpBVElPTl9OVU1CRVJfUkVHRVgudGVzdCh0aGlzLm5hdHVyYWxpemF0aW9uTnVtYmVyLnZhbHVlKTsgICAgICBcclxuICAgICAgaWYgKCF2YWxpZDEpIHtcclxuICAgICAgICAgICAgIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5jb250cm9sc1snbmF0dXJhbGl6YXRpb25OdW1iZXInXS5zZXRFcnJvcnMoe2ludmFsaWRuYXR1cmFsaXphdGlvbk51bWJlcjogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgdGhpcy5hbGllbkRvY1R5cGVGb3JtLmludmFsaWQ7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGludmFsaWRuYXR1cmFsaXphdGlvbk51bWJlcjogdHJ1ZSB9O1xyXG4gICAgICAgICAgfSAgICAgICAgIFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldENpdGl6ZW5zaGlwTnVtYmVyVmFsaWRhdG9yKCl7XHJcbiAgICB0aGlzLmNpdGl6ZW5zaGlwTnVtYmVyLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHsgICAgICBcclxuICAgICAgaWYoIXRoaXMuY2l0aXplbnNoaXBOdW1iZXIudmFsdWUpIHtcclxuICAgICAgICBpZih0aGlzLmlzT3B0aW9uYWwodGhpcy5jaXRpemVuc2hpcE51bWJlcikpIHtcclxuICAgICAgICAgIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5jb250cm9sc1snY2l0aXplbnNoaXBOdW1iZXInXS5zZXRFcnJvcnMobnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB2YWxpZDEgPSBBcHBSZWdleC5OQVRVUkFMSVpBVElPTl9OVU1CRVJfUkVHRVgudGVzdCh0aGlzLmNpdGl6ZW5zaGlwTnVtYmVyLnZhbHVlKTsgICAgICBcclxuICAgICAgaWYgKCF2YWxpZDEpIHtcclxuICAgICAgICAgICAgIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5jb250cm9sc1snY2l0aXplbnNoaXBOdW1iZXInXS5zZXRFcnJvcnMoe2ludmFsaWRDaXRpemVuc2hpcE51bWJlcjogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgdGhpcy5hbGllbkRvY1R5cGVGb3JtLmludmFsaWQ7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGludmFsaWRDaXRpemVuc2hpcE51bWJlcjogdHJ1ZSB9O1xyXG4gICAgICAgICAgfSAgICAgICAgIFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFZpc2FWYWxpZGF0b3IoKXtcclxuICAgIHRoaXMudmlzYU51bWJlci52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbCA9PiB7ICAgICAgXHJcbiAgICAgIGlmKCF0aGlzLnZpc2FOdW1iZXIudmFsdWUpIHtcclxuICAgICAgICBpZih0aGlzLmlzT3B0aW9uYWwodGhpcy52aXNhTnVtYmVyKSkge1xyXG4gICAgICAgICAgdGhpcy5hbGllbkRvY1R5cGVGb3JtLmNvbnRyb2xzWyd2aXNhTnVtYmVyJ10uc2V0RXJyb3JzKG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdmFsaWQxID0gQXBwUmVnZXguVklTQV9OVU1CRVJfUkVHRVgudGVzdCh0aGlzLnZpc2FOdW1iZXIudmFsdWUpOyAgICAgIFxyXG4gICAgICBpZiAoIXZhbGlkMSkge1xyXG4gICAgICAgICAgICAgdGhpcy5hbGllbkRvY1R5cGVGb3JtLmNvbnRyb2xzWyd2aXNhTnVtYmVyJ10uc2V0RXJyb3JzKHtpbnZhbGlkYVZpc2FWYWxpZGF0b3I6IHRydWUgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5pbnZhbGlkO1xyXG4gICAgICAgICAgICByZXR1cm4geyBpbnZhbGlkYVZpc2FWYWxpZGF0b3I6IHRydWUgfTtcclxuICAgICAgICAgIH0gICAgICAgICBcclxuICAgICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgZXhwRGF0ZURpc3BsYXlWYWx1ZTogc3RyaW5nID0gJyc7XHJcblxyXG4gIG9uRXhwRGF0ZUtleURvd24oZTogS2V5Ym9hcmRFdmVudCwgaW5wdXRFbDogSFRNTElucHV0RWxlbWVudCkge1xyXG4gICAgaWYgKGUua2V5ID09PSAnQmFja3NwYWNlJykge1xyXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIGxldCB2YWwgPSBpbnB1dEVsLnZhbHVlO1xyXG4gICAgICBpZiAodmFsLmVuZHNXaXRoKCcvJykpIHtcclxuICAgICAgICB2YWwgPSB2YWwuc2xpY2UoMCwgLTIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhbCA9IHZhbC5zbGljZSgwLCAtMSk7XHJcbiAgICAgIH1cclxuICAgICAgaW5wdXRFbC52YWx1ZSA9IHZhbDtcclxuICAgICAgdGhpcy5leHBEYXRlRGlzcGxheVZhbHVlID0gdmFsO1xyXG4gICAgICB0aGlzLmFsaWVuRG9jRXhwRGF0ZS5zZXRWYWx1ZSh2YWwgfHwgbnVsbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICBpZiAoIXZhbCB8fCAvXlxcZHsyfVxcL1xcZHsyfVxcL1xcZHs0fSQvLnRlc3QodmFsKSkge1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5hbGllbkRvY1R5cGVGb3JtLmdldFJhd1ZhbHVlKCkpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKCFbJ0RlbGV0ZScsICdBcnJvd0xlZnQnLCAnQXJyb3dSaWdodCcsICdUYWInLCAnRW50ZXInXS5pbmNsdWRlcyhlLmtleSkgJiYgIS9eXFxkJC8udGVzdChlLmtleSkpIHtcclxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25FeHBEYXRlSW5wdXQoZTogRXZlbnQpIHtcclxuICAgIGNvbnN0IGlucHV0ID0gZS50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGxldCB2YWwgPSBpbnB1dC52YWx1ZS5yZXBsYWNlKC9cXEQvZywgJycpO1xyXG4gICAgaWYgKHZhbC5sZW5ndGggPiA4KSB2YWwgPSB2YWwuc3Vic3RyaW5nKDAsIDgpO1xyXG4gICAgbGV0IGZvcm1hdHRlZCA9IHZhbDtcclxuICAgIGlmICh2YWwubGVuZ3RoID4gNCkge1xyXG4gICAgICBmb3JtYXR0ZWQgPSB2YWwuc3Vic3RyaW5nKDAsIDIpICsgJy8nICsgdmFsLnN1YnN0cmluZygyLCA0KSArICcvJyArIHZhbC5zdWJzdHJpbmcoNCk7XHJcbiAgICB9IGVsc2UgaWYgKHZhbC5sZW5ndGggPT09IDQpIHtcclxuICAgICAgZm9ybWF0dGVkID0gdmFsLnN1YnN0cmluZygwLCAyKSArICcvJyArIHZhbC5zdWJzdHJpbmcoMikgKyAnLyc7XHJcbiAgICB9IGVsc2UgaWYgKHZhbC5sZW5ndGggPiAyKSB7XHJcbiAgICAgIGZvcm1hdHRlZCA9IHZhbC5zdWJzdHJpbmcoMCwgMikgKyAnLycgKyB2YWwuc3Vic3RyaW5nKDIpO1xyXG4gICAgfSBlbHNlIGlmICh2YWwubGVuZ3RoID09PSAyKSB7XHJcbiAgICAgIGZvcm1hdHRlZCA9IHZhbCArICcvJztcclxuICAgIH1cclxuICAgIGlucHV0LnZhbHVlID0gZm9ybWF0dGVkO1xyXG4gICAgdGhpcy5leHBEYXRlRGlzcGxheVZhbHVlID0gZm9ybWF0dGVkO1xyXG4gICAgdGhpcy5hbGllbkRvY0V4cERhdGUuc2V0VmFsdWUoZm9ybWF0dGVkIHx8IG51bGwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIGlmICgvXlxcZHsyfVxcL1xcZHsyfVxcL1xcZHs0fSQvLnRlc3QoZm9ybWF0dGVkKSkge1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuYWxpZW5Eb2NUeXBlRm9ybS5nZXRSYXdWYWx1ZSgpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRXhwRGF0ZVBpY2tlclNlbGVjdChkYXRlOiBhbnksIG92ZXJsYXk6IGFueSwgaW5wdXRFbDogSFRNTElucHV0RWxlbWVudCkge1xyXG4gICAgaWYgKCEoZGF0ZSBpbnN0YW5jZW9mIERhdGUpKSByZXR1cm47XHJcbiAgICBjb25zdCBtbSA9IFN0cmluZyhkYXRlLmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgY29uc3QgZGQgPSBTdHJpbmcoZGF0ZS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICBjb25zdCB5eXl5ID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgY29uc3QgZm9ybWF0dGVkID0gYCR7bW19LyR7ZGR9LyR7eXl5eX1gO1xyXG4gICAgaW5wdXRFbC52YWx1ZSA9IGZvcm1hdHRlZDtcclxuICAgIHRoaXMuZXhwRGF0ZURpc3BsYXlWYWx1ZSA9IGZvcm1hdHRlZDtcclxuICAgIHRoaXMuYWxpZW5Eb2NFeHBEYXRlLnNldFZhbHVlKGZvcm1hdHRlZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgdGhpcy5hbGllbkRvY0V4cERhdGUuc2V0RXJyb3JzKG51bGwpO1xyXG4gICAgdGhpcy5hbGllbkRvY0V4cERhdGUubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLmFsaWVuRG9jVHlwZUZvcm0uZ2V0UmF3VmFsdWUoKSk7XHJcbiAgICBvdmVybGF5LmhpZGUoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHt9XHJcblxyXG4gIGlzT3B0aW9uYWwoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIWNvbnRyb2wgfHwgIWNvbnRyb2wudmFsaWRhdG9yKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdmFsaWRhdG9yID0gY29udHJvbC52YWxpZGF0b3Ioe30gYXMgQWJzdHJhY3RDb250cm9sKTtcclxuICAgIHJldHVybiAhdmFsaWRhdG9yIHx8ICF2YWxpZGF0b3JbJ3JlcXVpcmVkJ107XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKSB7XHJcbiAgICBpZiAoZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5hbGllbkRvY1R5cGVGb3JtLmRpc2FibGUoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmFsaWVuRG9jVHlwZUZvcm0uZW5hYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gXHJcblxyXG5cclxufVxyXG5cclxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJhbGllbkRvY1R5cGVGb3JtXCIgI2FsaWVuRG9jVHlwZUZvcm1EaXJlY3RpdmU9XCJuZ0Zvcm1cIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDBweDsgbWFyZ2luLWxlZnQ6IDBweDtcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJwLWZvcm1ncmlkXCIgW2lkXT1cImlucHV0SWQgPyBpbnB1dElkIDogJ2FsaWVuRG9jLWRpdidcIj5cclxuICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDBweDsgcGFkZGluZy1ib3R0b206IDEwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLWFsaWVuRG9jVHlwZScgOiAnYWxpZW5Eb2NUeXBlJ1wiPnt7J2FsaWVuLmRvYy5oZWFkaW5nJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD48YnIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLWRyb3Bkb3duIFtvcHRpb25zXT1cImFsaWVuRG9jVHlwZU9wdGlvbnNcIiBbZm9ybUNvbnRyb2xdPVwiYWxpZW5Eb2NUeXBlXCIgb3B0aW9uTGFiZWw9XCJ0ZXh0XCIgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICBbYXV0b0Rpc3BsYXlGaXJzdF09XCJmYWxzZVwiIFtpbnB1dElkXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1hbGllbkRvY1R5cGUnIDogJ2FsaWVuRG9jVHlwZSdcIj48L2FwcC1kcm9wZG93bj5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtmaWVsZF09J2FsaWVuRG9jVHlwZScgW2Zvcm1dPVwiYWxpZW5Eb2NUeXBlRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ2FsaWVuLmRvYy5lcnJvci5yZXF1aXJlZCcgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgIDwvaW9uLXJvdz5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkS2V5XCI+XHJcblxyXG4gICAgICAgICAgICA8IS0tIEktMzI3IChSZWVudHJ5IFBlcm1pdCksIEktNTcxIChSZWZ1Z2VlIFRyYXZlbCBEb2N1bWVudCkgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJJMzI3XCI+XHJcbiAgICAgICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFsaWVuTnVtYmVyVHBsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZXhwRGF0ZVRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIEktNTUxIChQZXJtYW5lbnQgUmVzaWRlbnQgQ2FyZCksIEktNzY2IChFbXBsb3ltZW50IEF1dGhvcml6YXRpb24gQ2FyZCkgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJJNTUxXCI+XHJcbiAgICAgICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFsaWVuTnVtYmVyVHBsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2FyZE51bWJlclRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImV4cERhdGVUcGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBDRUNJLCBDRUNILCBOQVRDIC0gQ2VydGlmaWNhdGUgb2YgQ2l0aXplbnNoaXAgLyBDZXJ0aWZpY2F0ZSBDaGVjayAvIE5hdHVyYWxpemF0aW9uIENlcnRpZmljYXRlIC0tPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiQ0VDSVwiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhbGllbk51bWJlclRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCAqbmdJZj1cInNlbGVjdGVkS2V5PT09J0NFQ0gnIHx8IHNlbGVjdGVkS2V5PT09J05BVEMnXCIgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJuYXR1cmFsaXphdGlvbk51bWJlclRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCAqbmdJZj1cInNlbGVjdGVkS2V5PT09J0NFQ0knXCIgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjaXRpemVuc2hpcE51bWJlclRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFQ1NTEgLyBNUklWIC0tPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiVDU1MVwiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhbGllbk51bWJlclRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBhc3Nwb3J0TnVtYmVyVHBsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sICpuZ0lmPVwiTVJJVlwiIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY291bnRyeU9mSXNzdWFuY2VUcGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiTVJJVlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ2aXNhTnVtYmVyVHBsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCAqbmdJZj1cIiFNUklWXCIgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb3VudHJ5T2ZJc3N1YW5jZVRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImV4cERhdGVUcGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBJLTk0IC0tPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiSTk0XCI+XHJcbiAgICAgICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImk5NE51bWJlclRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNldmlzSWRUcGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJleHBEYXRlVHBsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gSS05NCBVbmV4cGlyZWQgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJJOTRVXCI+XHJcbiAgICAgICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImk5NE51bWJlclRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInZpc2FOdW1iZXJUcGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwYXNzcG9ydE51bWJlclRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY291bnRyeU9mSXNzdWFuY2VUcGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZXZpc0lkVHBsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZXhwRGF0ZVRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgPCEtLSAgSS0yMCBvciBEUy0yMDE5IC0tPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiRFMyMDE5RG9jVHlwZVwiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpOTROdW1iZXJUcGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwYXNzcG9ydE51bWJlclRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvdW50cnlPZklzc3VhbmNlVHBsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZXZpc0lkVHBsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZXhwRGF0ZVRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICA8L2Rpdj5cclxuPC9mb3JtPlxyXG5cclxuPCEtLSBSZXVzYWJsZSBUZW1wbGF0ZXMgLS0+XHJcblxyXG48bmctdGVtcGxhdGUgI2FsaWVuTnVtYmVyVHBsPlxyXG4gICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgPGxhYmVsIFtmb3JdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLWFsaWVuTnVtYmVyJyA6ICdhbGllbk51bWJlcidcIj57eydhbGllbi5kb2MubnVtYmVyJyB8IHRyYW5zbGF0ZX19PHNwYW4gKm5nSWY9XCJpc09wdGlvbmFsKGFsaWVuTnVtYmVyKVwiIGNsYXNzPVwib3B0aW9uYWwtbGFiZWxcIj4gKHt7J2NvbW1vbi5vcHRpb25hbCcgfCB0cmFuc2xhdGV9fSk8L3NwYW4+PC9sYWJlbD48YnIgLz5cclxuICAgICAgICA8aW5wdXQgW2lkXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1hbGllbk51bWJlcicgOiAnYWxpZW5OdW1iZXInXCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwiYWxpZW5OdW1iZXJcIlxyXG4gICAgICAgIG1heGxlbmd0aD1cIjlcIlxyXG4gICAgICAgIG9uaW5wdXQ9XCJ0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS5yZXBsYWNlKC9cXEQrL2csICcnKVwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImlzT3B0aW9uYWwoYWxpZW5OdW1iZXIpID8gKCdjb21tb24ub3B0aW9uYWwnIHwgdHJhbnNsYXRlKSA6ICcnXCJcclxuICAgICAgICAoaW5wdXQpPVwic2V0YWxpZW5OdW1iZXJWYWxpZGF0b3IoKVwiIC8+XHJcbiAgICAgICAgPGFwcC1lcnJvciBbZmllbGRdPSdhbGllbk51bWJlcicgW2Zvcm1dPVwiYWxpZW5Eb2NUeXBlRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwiYWxpZW5OdW1iZXJFcnJEZWZcIj48L2FwcC1lcnJvcj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNleHBEYXRlVHBsPlxyXG4gICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgPGxhYmVsPnt7J2FsaWVuLmRvYy5hbGllbkRvY0V4cERhdGUnIHwgdHJhbnNsYXRlfX08c3BhbiAqbmdJZj1cImlzT3B0aW9uYWwoYWxpZW5Eb2NFeHBEYXRlKVwiIGNsYXNzPVwib3B0aW9uYWwtbGFiZWxcIj4gKHt7J2NvbW1vbi5vcHRpb25hbCcgfCB0cmFuc2xhdGV9fSk8L3NwYW4+PC9sYWJlbD48YnIgLz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicC1pbnB1dGdyb3VwXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCAjZXhwRGF0ZUlucHV0IHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dFxyXG4gICAgICAgICAgICAgICAgKGlucHV0KT1cIm9uRXhwRGF0ZUlucHV0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25FeHBEYXRlS2V5RG93bigkZXZlbnQsIGV4cERhdGVJbnB1dClcIiAvPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIGljb249XCJwaSBwaS1jYWxlbmRhclwiIGNsYXNzPVwicC1idXR0b24tc2Vjb25kYXJ5XCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJleHBEYXRlT3ZlcmxheS50b2dnbGUoJGV2ZW50KVwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxwLW92ZXJsYXlQYW5lbCAjZXhwRGF0ZU92ZXJsYXkgYXBwZW5kVG89XCJib2R5XCI+XHJcbiAgICAgICAgICAgIDxwLWNhbGVuZGFyIFtpbmxpbmVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbeWVhck5hdmlnYXRvcl09XCJ0cnVlXCIgeWVhclJhbmdlPVwiMTkwMToyMDUwXCIgZGF0ZUZvcm1hdD1cIm1tL2RkL3l5XCJcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlPVwiZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAob25Nb250aENoYW5nZSk9XCJjYWxlbmRhclBpY2tlckFjdGl2ZSA9IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgKG9uWWVhckNoYW5nZSk9XCJjYWxlbmRhclBpY2tlckFjdGl2ZSA9IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgKG9uU2VsZWN0KT1cImNhbGVuZGFyUGlja2VyQWN0aXZlID0gdHJ1ZTsgb25FeHBEYXRlUGlja2VyU2VsZWN0KCRldmVudCwgZXhwRGF0ZU92ZXJsYXksIGV4cERhdGVJbnB1dClcIj5cclxuICAgICAgICAgICAgPC9wLWNhbGVuZGFyPlxyXG4gICAgICAgIDwvcC1vdmVybGF5UGFuZWw+XHJcbiAgICAgICAgPGFwcC1lcnJvciBbZmllbGRdPSdhbGllbkRvY0V4cERhdGUnIFtmb3JtXT1cImFsaWVuRG9jVHlwZUZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cImV4cERhdGVSZXF1aXJlZEVyckRlZlwiPjwvYXBwLWVycm9yPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuPG5nLXRlbXBsYXRlICNjYXJkTnVtYmVyVHBsPlxyXG4gICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgPGxhYmVsIFtmb3JdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLWNhcmROdW1iZXInIDogJ2NhcmROdW1iZXInXCI+e3snYWxpZW4uZG9jLmNhcmROdW1iZXInIHwgdHJhbnNsYXRlfX08c3BhbiAqbmdJZj1cImlzT3B0aW9uYWwoY2FyZE51bWJlcilcIiBjbGFzcz1cIm9wdGlvbmFsLWxhYmVsXCI+ICh7eydjb21tb24ub3B0aW9uYWwnIHwgdHJhbnNsYXRlfX0pPC9zcGFuPjwvbGFiZWw+PGJyIC8+XHJcbiAgICAgICAgPGlucHV0IFtpZF09XCJpbnB1dElkID8gaW5wdXRJZCArICctY2FyZE51bWJlcicgOiAnY2FyZE51bWJlcidcIiB0eXBlPVwiaW5wdXRcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbF09XCJjYXJkTnVtYmVyXCJcclxuICAgICAgICBtYXhsZW5ndGg9XCIxM1wiXHJcbiAgICAgICAgb25pbnB1dD1cInRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLnJlcGxhY2UoL1teYS16QS1aMC05XS9nLCAnJykudG9VcHBlckNhc2UoKVwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImlzT3B0aW9uYWwoY2FyZE51bWJlcikgPyAoJ2NvbW1vbi5vcHRpb25hbCcgfCB0cmFuc2xhdGUpIDogJydcIlxyXG4gICAgICAgIChpbnB1dCk9XCJzZXRjYXJkTnVtYmVyVmFsaWRhdG9yKClcIiAvPlxyXG4gICAgICAgIDxhcHAtZXJyb3IgW2ZpZWxkXT0nY2FyZE51bWJlcicgW2Zvcm1dPVwiYWxpZW5Eb2NUeXBlRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwiY2FyZE51bWJlckVyckRlZlwiPjwvYXBwLWVycm9yPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2k5NE51bWJlclRwbD5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgIDxsYWJlbCBbZm9yXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1hbGllbkRvY051bWJlckk5NCcgOiAnYWxpZW5Eb2NOdW1iZXJJOTQnXCI+e3snYWxpZW4uZG9jLmFsaWVuRG9jTnVtYmVySTk0JyB8IHRyYW5zbGF0ZX19PHNwYW4gKm5nSWY9XCJpc09wdGlvbmFsKGFsaWVuRG9jTnVtYmVySTk0KVwiIGNsYXNzPVwib3B0aW9uYWwtbGFiZWxcIj4gKHt7J2NvbW1vbi5vcHRpb25hbCcgfCB0cmFuc2xhdGV9fSk8L3NwYW4+PC9sYWJlbD48YnIgLz5cclxuICAgICAgICA8aW5wdXQgW2lkXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1hbGllbkRvY051bWJlckk5NCcgOiAnYWxpZW5Eb2NOdW1iZXJJOTQnXCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwiYWxpZW5Eb2NOdW1iZXJJOTRcIlxyXG4gICAgICAgIG1heGxlbmd0aD1cIjExXCJcclxuICAgICAgICBvbmlucHV0PVwidGhpcy52YWx1ZSA9IHRoaXMudmFsdWUucmVwbGFjZSgvW15hLXpBLVowLTldL2csICcnKS50b1VwcGVyQ2FzZSgpXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaXNPcHRpb25hbChhbGllbkRvY051bWJlckk5NCkgPyAoJ2NvbW1vbi5vcHRpb25hbCcgfCB0cmFuc2xhdGUpIDogJydcIlxyXG4gICAgICAgIChpbnB1dCk9XCJzZXRJOTROdW1iZXJWYWxpZGF0b3IoKVwiIC8+XHJcbiAgICAgICAgPGFwcC1lcnJvciBbZmllbGRdPSdhbGllbkRvY051bWJlckk5NCcgW2Zvcm1dPVwiYWxpZW5Eb2NUeXBlRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwiaTk0TnVtYmVyRXJyRGVmXCI+PC9hcHAtZXJyb3I+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjc2V2aXNJZFRwbD5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgIDxsYWJlbCBbZm9yXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1hbGllbkRvY1N2c0lkJyA6ICdhbGllbkRvY1N2c0lkJ1wiPnt7J2FsaWVuLmRvYy5hbGllbkRvY1N2c0lkJyB8IHRyYW5zbGF0ZX19PHNwYW4gKm5nSWY9XCJpc09wdGlvbmFsKGFsaWVuRG9jU3ZzSWQpXCIgY2xhc3M9XCJvcHRpb25hbC1sYWJlbFwiPiAoe3snY29tbW9uLm9wdGlvbmFsJyB8IHRyYW5zbGF0ZX19KTwvc3Bhbj48L2xhYmVsPjxiciAvPlxyXG4gICAgICAgIDxpbnB1dCBbaWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLWFsaWVuRG9jU3ZzSWQnIDogJ2FsaWVuRG9jU3ZzSWQnXCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwiYWxpZW5Eb2NTdnNJZFwiXHJcbiAgICAgICAgIG1heGxlbmd0aD1cIjEwXCJcclxuICAgICAgICBvbmlucHV0PVwidGhpcy52YWx1ZSA9IHRoaXMudmFsdWUucmVwbGFjZSgvXFxEKy9nLCAnJylcIlxyXG4gICAgICAgIChpbnB1dCk9XCJzZXRTVklTSWRWYWxpZGF0b3IoKVwiIFtwbGFjZWhvbGRlcl09XCJpc09wdGlvbmFsKGFsaWVuRG9jU3ZzSWQpID8gKCdjb21tb24ub3B0aW9uYWwnIHwgdHJhbnNsYXRlKSA6ICcnXCIgLz5cclxuICAgICAgICA8YXBwLWVycm9yIFtmaWVsZF09J2FsaWVuRG9jU3ZzSWQnIFtmb3JtXT1cImFsaWVuRG9jVHlwZUZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInNldmlzSWRFcnJEZWZcIj48L2FwcC1lcnJvcj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNwYXNzcG9ydE51bWJlclRwbD5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgIDxsYWJlbCBbZm9yXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1hbGllbkRvY1Bhc3Nwb3J0TnVtYmVyJyA6ICdhbGllbkRvY1Bhc3Nwb3J0TnVtYmVyJ1wiPnt7J2FsaWVuLmRvYy5hbGllbkRvY1Bhc3Nwb3J0TnVtYmVyJyB8IHRyYW5zbGF0ZX19PHNwYW4gKm5nSWY9XCJpc09wdGlvbmFsKGFsaWVuRG9jUGFzc3BvcnROdW1iZXIpXCIgY2xhc3M9XCJvcHRpb25hbC1sYWJlbFwiPiAoe3snY29tbW9uLm9wdGlvbmFsJyB8IHRyYW5zbGF0ZX19KTwvc3Bhbj48L2xhYmVsPjxiciAvPlxyXG4gICAgICAgIDxpbnB1dCBbaWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLWFsaWVuRG9jUGFzc3BvcnROdW1iZXInIDogJ2FsaWVuRG9jUGFzc3BvcnROdW1iZXInXCJcclxuICAgICAgICAoaW5wdXQpPVwic2V0UGFzc3BvcnROdW1iZXJWYWxpZGF0b3IoKVwiXHJcbiAgICAgICAgb25pbnB1dD1cInRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLnJlcGxhY2UoL1teYS16QS1aMC05XS9nLCAnJykudG9VcHBlckNhc2UoKVwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImlzT3B0aW9uYWwoYWxpZW5Eb2NQYXNzcG9ydE51bWJlcikgPyAoJ2NvbW1vbi5vcHRpb25hbCcgfCB0cmFuc2xhdGUpIDogJydcIlxyXG4gICAgICAgIHR5cGU9XCJpbnB1dFwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sXT1cImFsaWVuRG9jUGFzc3BvcnROdW1iZXJcIiAvPlxyXG4gICAgICAgIDxhcHAtZXJyb3IgW2ZpZWxkXT0nYWxpZW5Eb2NQYXNzcG9ydE51bWJlcicgW2Zvcm1dPVwiYWxpZW5Eb2NUeXBlRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwicGFzc3BvcnROdW1iZXJFcnJEZWZcIj48L2FwcC1lcnJvcj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjb3VudHJ5T2ZJc3N1YW5jZVRwbD5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgIDxsYWJlbCBbZm9yXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1jb3VudHJ5T2ZJc3N1YW5jZScgOiAnY291bnRyeU9mSXNzdWFuY2UnXCI+e3snYWxpZW4uZG9jLmNvdW50cnlPZklzc3VhbmNlJyB8IHRyYW5zbGF0ZX19PHNwYW4gKm5nSWY9XCJpc09wdGlvbmFsKGNvdW50cnlPZklzc3VhbmNlKVwiIGNsYXNzPVwib3B0aW9uYWwtbGFiZWxcIj4gKHt7J2NvbW1vbi5vcHRpb25hbCcgfCB0cmFuc2xhdGV9fSk8L3NwYW4+PC9sYWJlbD48YnIgLz5cclxuICAgICAgICA8cC1hdXRvQ29tcGxldGUgW2lkXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1jb3VudHJ5T2ZJc3N1YW5jZScgOiAnY291bnRyeU9mSXNzdWFuY2UnXCJcclxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvdW50cnlPZklzc3VhbmNlXCJcclxuICAgICAgICAgICAgW3N1Z2dlc3Rpb25zXT1cImZpbHRlcmVkQ291bnRyaWVzXCJcclxuICAgICAgICAgICAgKGNvbXBsZXRlTWV0aG9kKT1cImZpbHRlckNvdW50cnkoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChvblNlbGVjdCk9XCJvbkNvdW50cnlTZWxlY3QoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChvbkNsZWFyKT1cIm9uQ291bnRyeUNsZWFyKClcIlxyXG4gICAgICAgICAgICAob25LZXlVcCk9XCJvbkNvdW50cnlLZXlVcCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgZmllbGQ9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgIFtkcm9wZG93bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIFttYXhsZW5ndGhdPVwiM1wiXHJcbiAgICAgICAgICAgIFtmb3JjZVNlbGVjdGlvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImlzT3B0aW9uYWwoY291bnRyeU9mSXNzdWFuY2UpID8gKCdjb21tb24ub3B0aW9uYWwnIHwgdHJhbnNsYXRlKSA6ICgnYWxpZW4uZG9jLmNvdW50cnlPZklzc3VhbmNlLnBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZSlcIlxyXG4gICAgICAgICAgICBbc3R5bGVdPVwieyd3aWR0aCc6ICcxMDAlJ31cIlxyXG4gICAgICAgICAgICBbaW5wdXRTdHlsZV09XCJ7J3RleHQtdHJhbnNmb3JtJzogJ3VwcGVyY2FzZSd9XCJcclxuICAgICAgICAgICAgc3R5bGVDbGFzcz1cImNvdW50cnktYXV0b2NvbXBsZXRlXCJcclxuICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCI+XHJcbiAgICAgICAgPC9wLWF1dG9Db21wbGV0ZT5cclxuICAgICAgICA8YXBwLWVycm9yIFtmaWVsZF09J2NvdW50cnlPZklzc3VhbmNlJyBbZm9ybV09XCJhbGllbkRvY1R5cGVGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7XHJcbiAgICAgICAgICAgIHJlcXVpcmVkOiAnYWxpZW4uZG9jLmVycm9yLnJlcXVpcmVkJyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICN2aXNhTnVtYmVyVHBsPlxyXG4gICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgPGxhYmVsIFtmb3JdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLXZpc2FOdW1iZXInIDogJ3Zpc2FOdW1iZXInXCI+e3snYWxpZW4uZG9jLnZpc2FOdW1iZXInIHwgdHJhbnNsYXRlfX08c3BhbiAqbmdJZj1cImlzT3B0aW9uYWwodmlzYU51bWJlcilcIiBjbGFzcz1cIm9wdGlvbmFsLWxhYmVsXCI+ICh7eydjb21tb24ub3B0aW9uYWwnIHwgdHJhbnNsYXRlfX0pPC9zcGFuPjwvbGFiZWw+PGJyIC8+XHJcbiAgICAgICAgPGlucHV0IFtpZF09XCJpbnB1dElkID8gaW5wdXRJZCArICctdmlzYU51bWJlcicgOiAndmlzYU51bWJlcidcIiB0eXBlPVwiaW5wdXRcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbF09XCJ2aXNhTnVtYmVyXCJcclxuICAgICAgICBtYXhsZW5ndGg9XCIxMFwiXHJcbiAgICAgICAgb25pbnB1dD1cInRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLnJlcGxhY2UoL1teYS16QS1aMC05XS9nLCAnJykudG9VcHBlckNhc2UoKVwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImlzT3B0aW9uYWwodmlzYU51bWJlcikgPyAoJ2NvbW1vbi5vcHRpb25hbCcgfCB0cmFuc2xhdGUpIDogJydcIlxyXG4gICAgICAgIChpbnB1dCk9XCJzZXRWaXNhVmFsaWRhdG9yKClcIiAvPlxyXG4gICAgICAgIDxhcHAtZXJyb3IgW2ZpZWxkXT0ndmlzYU51bWJlcicgW2Zvcm1dPVwiYWxpZW5Eb2NUeXBlRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwidmlzYU51bWJlckVyckRlZlwiPjwvYXBwLWVycm9yPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI25hdHVyYWxpemF0aW9uTnVtYmVyVHBsPlxyXG4gICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgPGxhYmVsIFtmb3JdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLW5hdHVyYWxpemF0aW9uTnVtYmVyJyA6ICduYXR1cmFsaXphdGlvbk51bWJlcidcIj57eydhbGllbi5kb2MubmF0dXJhbGl6YXRpb25OdW1iZXInIHwgdHJhbnNsYXRlfX08c3BhbiAqbmdJZj1cImlzT3B0aW9uYWwobmF0dXJhbGl6YXRpb25OdW1iZXIpXCIgY2xhc3M9XCJvcHRpb25hbC1sYWJlbFwiPiAoe3snY29tbW9uLm9wdGlvbmFsJyB8IHRyYW5zbGF0ZX19KTwvc3Bhbj48L2xhYmVsPjxiciAvPlxyXG4gICAgICAgIDxpbnB1dCBbaWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLW5hdHVyYWxpemF0aW9uTnVtYmVyJyA6ICduYXR1cmFsaXphdGlvbk51bWJlcidcIiB0eXBlPVwiaW5wdXRcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbF09XCJuYXR1cmFsaXphdGlvbk51bWJlclwiXHJcbiAgICAgICAgbWlubGVuZ3RoPVwiNlwiIG1heGxlbmd0aD1cIjEyXCJcclxuICAgICAgICBvbmlucHV0PVwidGhpcy52YWx1ZSA9IHRoaXMudmFsdWUucmVwbGFjZSgvW15hLXpBLVowLTldL2csICcnKS50b1VwcGVyQ2FzZSgpXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaXNPcHRpb25hbChuYXR1cmFsaXphdGlvbk51bWJlcikgPyAoJ2NvbW1vbi5vcHRpb25hbCcgfCB0cmFuc2xhdGUpIDogJydcIlxyXG4gICAgICAgIChpbnB1dCk9XCJzZXROYXR1cmFsaXphdGlvbk51bWJlclZhbGlkYXRvcigpXCIgLz5cclxuICAgICAgICA8YXBwLWVycm9yIFtmaWVsZF09J25hdHVyYWxpemF0aW9uTnVtYmVyJyBbZm9ybV09XCJhbGllbkRvY1R5cGVGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJuYXR1cmFsaXphdGlvbk51bWJlckVyckRlZlwiPjwvYXBwLWVycm9yPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuPG5nLXRlbXBsYXRlICNjaXRpemVuc2hpcE51bWJlclRwbD5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgIDxsYWJlbCBbZm9yXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1jaXRpemVuc2hpcE51bWJlcicgOiAnY2l0aXplbnNoaXBOdW1iZXInXCI+e3snYWxpZW4uZG9jLmNpdGl6ZW5zaGlwTnVtYmVyJyB8IHRyYW5zbGF0ZX19PHNwYW4gKm5nSWY9XCJpc09wdGlvbmFsKGNpdGl6ZW5zaGlwTnVtYmVyKVwiIGNsYXNzPVwib3B0aW9uYWwtbGFiZWxcIj4gKHt7J2NvbW1vbi5vcHRpb25hbCcgfCB0cmFuc2xhdGV9fSk8L3NwYW4+PC9sYWJlbD48YnIgLz5cclxuICAgICAgICA8aW5wdXQgW2lkXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1jaXRpemVuc2hpcE51bWJlcicgOiAnY2l0aXplbnNoaXBOdW1iZXInXCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwiY2l0aXplbnNoaXBOdW1iZXJcIlxyXG4gICAgICAgIG1pbmxlbmd0aD1cIjZcIiBtYXhsZW5ndGg9XCIxMlwiXHJcbiAgICAgICAgb25pbnB1dD1cInRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLnJlcGxhY2UoL1teYS16QS1aMC05XS9nLCAnJylcIlxyXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJpc09wdGlvbmFsKGNpdGl6ZW5zaGlwTnVtYmVyKSA/ICgnY29tbW9uLm9wdGlvbmFsJyB8IHRyYW5zbGF0ZSkgOiAnJ1wiXHJcbiAgICAgICAgKGlucHV0KT1cInNldENpdGl6ZW5zaGlwTnVtYmVyVmFsaWRhdG9yKClcIiAvPlxyXG4gICAgICAgIDxhcHAtZXJyb3IgW2ZpZWxkXT0nY2l0aXplbnNoaXBOdW1iZXInIFtmb3JtXT1cImFsaWVuRG9jVHlwZUZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cImNpdGl6ZW5zaGlwTnVtYmVyRXJyRGVmXCI+PC9hcHAtZXJyb3I+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19