dcdx 1.3.0-next.2 → 1.3.0-next.21

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.
@@ -67,564 +67,564 @@ const ActionHandler = async (program, { action, errorHandler }, options) => {
67
67
 
68
68
  var jira = [
69
69
  "latest",
70
- "10.3.0-EAP01-jdk17",
71
- "10.3.0-EAP01",
72
- "10.3.0-EAP01-ubuntu-jdk17",
73
- "10.3.0-EAP01-ubi9",
74
- "10.3.0-EAP01-ubi9-jdk17",
75
- "10.2-jdk17",
76
- "10.2.0",
70
+ "9.15.2",
71
+ "9.15-jdk17",
72
+ "9.15.2-jdk17",
73
+ "10.0.0",
74
+ "10.0.0-ubuntu-jdk17",
75
+ "10.0.0-jdk17",
76
+ "9.15.1",
77
+ "9.15.1-ubuntu-jdk17",
78
+ "9.15.1-jdk17",
79
+ "10.0.1",
80
+ "10.0-ubuntu-jdk17",
81
+ "10.0.1-jdk17",
82
+ "10.0.1-ubuntu-jdk17",
83
+ "10.0-jdk17",
84
+ "10.0",
85
+ "9.15-ubuntu-jdk17",
86
+ "9.15",
87
+ "9.15.2-ubuntu-jdk17",
88
+ "9.12.5-jdk17",
89
+ "9.12.5",
90
+ "9.12.5-ubuntu-jdk17",
91
+ "9.12.1-jdk17",
92
+ "9.12.1",
93
+ "9.12.1-ubuntu-jdk17",
94
+ "10.1.1-jdk17",
95
+ "10.1.1",
96
+ "10.1.1-ubuntu-jdk17",
97
+ "9.16.0",
98
+ "9.16.0-jdk17",
99
+ "9.16.0-ubuntu-jdk17",
100
+ "9.12.10-jdk17",
101
+ "9.7.1",
102
+ "9.7.1-ubuntu-jdk11",
103
+ "9.12.6-jdk17",
104
+ "9.4.12-ubuntu-jdk11",
105
+ "9.12.10",
106
+ "9.12.6-ubuntu-jdk17",
107
+ "9.12.6",
108
+ "9.12.10-ubuntu-jdk17",
109
+ "9.12.8-jdk17",
110
+ "9.12.8",
111
+ "9.12.12",
112
+ "9.12.11-ubuntu-jdk17",
113
+ "9.7.1-jdk11",
114
+ "9.12.11",
115
+ "9.12.11-jdk17",
116
+ "9.12.12-ubuntu-jdk17",
117
+ "9.12.12-jdk17",
118
+ "9.4.12",
119
+ "9.12.8-ubuntu-jdk17",
120
+ "9.17.0-jdk11",
121
+ "9.12.9-jdk17",
122
+ "9.16.1",
123
+ "10.1-jdk17",
124
+ "9.17.0-ubuntu-jdk11",
125
+ "10.1.2-jdk17",
77
126
  "10.2",
78
- "10-jdk17",
127
+ "10.1-ubuntu-jdk17",
128
+ "9.16-jdk17",
129
+ "9.16-ubuntu-jdk17",
130
+ "9.16",
131
+ "10.1.2-ubuntu-jdk17",
132
+ "9.12.7",
133
+ "9.4.12-jdk11",
134
+ "10.1.2",
79
135
  "ubuntu-jdk17",
136
+ "10.1",
137
+ "9.7-ubuntu-jdk11",
138
+ "9.14-jdk11",
139
+ "9.15.0-jdk11",
140
+ "9.16.1-ubuntu-jdk17",
141
+ "10.2-ubuntu-jdk17",
80
142
  "10.2.0-jdk17",
81
- "jdk17",
143
+ "9.4.7-ubuntu-jdk11",
82
144
  "10-ubuntu-jdk17",
83
- "10.2-ubuntu-jdk17",
84
145
  "10",
85
- "10.2.0-ubuntu-jdk17",
86
- "10.2.0-ubi9-jdk17",
87
- "10.2.0-ubi9",
88
- "ubi9",
89
- "ubi9-jdk17",
90
- "10.2.0-RC",
91
- "10.2.0-RC-ubuntu-jdk17",
92
- "10.2.0-RC-jdk17",
93
- "10.2.0-RC-ubi9",
94
- "10.2.0-RC-ubi9-jdk17",
95
- "9-ubuntu-jdk17",
96
- "9.9.0",
97
- "9-ubuntu-jdk11",
98
- "9-jdk17",
99
- "9-jdk11",
100
- "9.9-ubuntu-jdk17",
101
- "9.9-ubuntu-jdk11",
102
- "9.9.2-ubuntu-jdk17",
103
- "9.9-jdk17",
104
- "9.9-jdk11",
105
- "9.9.2-ubi9-jdk17",
106
- "9.9.2-ubuntu-jdk11",
107
- "9.9.2-ubi9",
108
- "9.9.2-jdk17",
109
- "9.9.2",
110
- "9.9.2-jdk11",
111
- "9.9.1-ubuntu-jdk17",
112
- "9.9.1-ubuntu-jdk11",
113
- "9.9.1-ubi9-jdk17",
114
- "9.9.1-ubi9",
115
- "9.9.1-jdk17",
116
- "9.9.1-jdk11",
117
- "9.9.0-ubuntu-jdk17",
118
- "9.9.1",
119
- "9.5.0-ubi9-jdk17",
120
- "9.8-jdk17",
121
- "9.9.0-ubuntu-jdk11",
122
- "9.9.0-ubi9-jdk17",
123
- "9.9.0-ubi9",
124
- "9.9.0-jdk17",
125
- "9.9.0-jdk11",
126
- "9.9",
127
- "9.8-ubuntu-jdk17",
128
- "9.8-ubuntu-jdk11",
129
- "9.8-jdk11",
130
- "9.8.2-ubuntu-jdk17",
131
- "9.8.2-ubuntu-jdk11",
132
- "9.8.2-ubi9-jdk17",
133
- "9.8.2-ubi9",
134
- "9.8.2-jdk17",
135
- "9.8.2-jdk11",
136
- "9.8.1-ubuntu-jdk17",
137
- "9.8.2",
146
+ "9.16.1-jdk17",
147
+ "9.4.7-jdk11",
148
+ "9.12.7-ubuntu-jdk17",
149
+ "9.8.0-jdk11",
150
+ "9.12.7-jdk11",
151
+ "9.10.0-ubuntu-jdk11",
152
+ "9.4.7",
153
+ "9.15.0-ubuntu-jdk11",
154
+ "9.12.13-ubuntu-jdk17",
155
+ "9.7.2-jdk11",
156
+ "9.12.9",
157
+ "9.12.7-jdk17",
138
158
  "9.8.1-ubuntu-jdk11",
139
- "9.8.1-ubi9-jdk17",
140
- "9.8.1-ubi9",
159
+ "9.4.26",
160
+ "9.14-ubuntu-jdk11",
161
+ "9.7.2",
162
+ "9.7.2-ubuntu-jdk11",
163
+ "9.7.2-ubi9-jdk17",
141
164
  "9.8.1-jdk11",
142
- "9.8.1-jdk17",
165
+ "9.12.13",
166
+ "9.4.8-jdk11",
167
+ "9.7",
168
+ "9.14.1-ubuntu-jdk11",
169
+ "9.10.0-jdk11",
170
+ "9.12.9-ubuntu-jdk17",
171
+ "9.12-jdk11",
172
+ "9.7-jdk11",
173
+ "9.10.0",
174
+ "10.2.0",
175
+ "9.12.15-jdk11",
176
+ "10.2-jdk17",
177
+ "9.7.2-ubi9",
178
+ "10-jdk17",
179
+ "9.4.2-jdk11",
180
+ "9.12.13-jdk17",
181
+ "9.4.8",
182
+ "9.4.8-ubuntu-jdk11",
183
+ "9.14.1-jdk11",
184
+ "9.4.2",
185
+ "10.2.0-ubuntu-jdk17",
186
+ "jdk17",
187
+ "9.15.2-ubi9",
188
+ "9.4.2-ubuntu-jdk11",
189
+ "9.15.2-ubi9-jdk17",
190
+ "9.17.0",
191
+ "9.10.1-jdk11",
192
+ "9.4.26-ubuntu-jdk11",
193
+ "9.4.27-ubuntu-jdk11",
194
+ "9.4.20",
195
+ "9.4.27-jdk11",
196
+ "9.4.27",
197
+ "9.17.0-ubuntu-jdk17",
198
+ "9.17.0-jdk17",
199
+ "9.17.4-ubi9-jdk17",
200
+ "9.17.1-jdk17",
201
+ "9.12.15-ubuntu-jdk11",
202
+ "9.11.0",
203
+ "9.13.0-jdk17",
204
+ "9.13.0-ubuntu-jdk17",
205
+ "9.17.1",
206
+ "9.12.14-jdk17",
143
207
  "9.8.1",
144
- "9.8.0-ubuntu-jdk17",
208
+ "9.12.7-ubuntu-jdk11",
145
209
  "9.8.0-ubuntu-jdk11",
210
+ "9.8.0",
211
+ "9.12.14-ubuntu-jdk17",
212
+ "9.4.26-jdk11",
213
+ "9.13.0",
214
+ "9.10.1",
215
+ "9.17.5-ubi9-jdk17",
216
+ "9.11.0-ubuntu-jdk17",
217
+ "9.12.9-ubi9-jdk17",
218
+ "9.17.1-ubuntu-jdk11",
219
+ "9.10-jdk11",
220
+ "9.11.0-jdk17",
221
+ "9.4.14",
222
+ "9.12.1-ubi9",
223
+ "9.4.14-ubuntu-jdk11",
224
+ "9.17.1-jdk11",
225
+ "9.10.2",
226
+ "9.12.9-ubi9",
227
+ "9.12.14",
228
+ "9.4.20-jdk11",
229
+ "9.16.0-ubi9-jdk17",
230
+ "9.12.8-ubuntu-jdk11",
231
+ "9.15.1-ubuntu-jdk11",
232
+ "9.15.1-jdk11",
233
+ "9.12.1-jdk11",
234
+ "9.17.5-ubi9",
235
+ "9.4.14-jdk11",
236
+ "9.17.4-ubi9",
237
+ "9.10.2-ubi9-jdk17",
238
+ "9.10.1-ubi9",
239
+ "9.17.1-ubuntu-jdk17",
240
+ "9.12.10-jdk11",
241
+ "9.10.2-jdk11",
242
+ "9.4.20-ubuntu-jdk11",
243
+ "9.12-ubuntu-jdk11",
244
+ "9.10.2-ubi9",
245
+ "9.10.1-ubi9-jdk17",
246
+ "9.10.1-ubuntu-jdk11",
247
+ "9.17.2",
248
+ "9.4.9",
249
+ "9.10-ubuntu-jdk11",
250
+ "9.10",
251
+ "9.4.9-jdk11",
252
+ "9.11.1-jdk17",
253
+ "9.16.0-ubi9",
254
+ "9.11.1",
255
+ "9.10.2-ubuntu-jdk11",
256
+ "9.12.8-jdk11",
257
+ "9.17.2-ubuntu-jdk17",
258
+ "9.12.1-ubuntu-jdk11",
259
+ "9.17.2-jdk17",
260
+ "9.7.1-jdk17",
261
+ "9.7.1-ubuntu-jdk17",
262
+ "10.0.0-ubi9-jdk17",
146
263
  "9.8.0-ubi9-jdk17",
147
- "9.8.0-jdk17",
264
+ "9.13-ubuntu-jdk17",
265
+ "9.4.15-ubuntu-jdk11",
148
266
  "9.8.0-ubi9",
149
- "9.8.0-jdk11",
150
- "9.8.0",
267
+ "9.12.2-ubi9",
268
+ "9.11.1-ubuntu-jdk17",
269
+ "9.13.1",
270
+ "9.12.9-jdk11",
271
+ "9.4-jdk11",
272
+ "9.4.28-jdk11",
273
+ "9.12.1-ubi9-jdk17",
274
+ "9.4",
275
+ "9.4.28",
276
+ "9.4-ubuntu-jdk11",
277
+ "9.16.1-ubi9",
278
+ "9.11.0-ubuntu-jdk11",
279
+ "9.5.0-ubuntu-jdk11",
280
+ "10.0.0-ubi9",
281
+ "9.16.1-ubi9-jdk17",
282
+ "9.13.0-ubi9",
283
+ "9.12.10-ubuntu-jdk11",
284
+ "9.4.9-ubuntu-jdk11",
285
+ "9.5.0-jdk11",
151
286
  "9.8",
152
- "9.7-ubuntu-jdk17",
153
- "9.7-ubuntu-jdk11",
287
+ "9.12",
288
+ "9.8-ubuntu-jdk11",
289
+ "9.13.1-ubuntu-jdk17",
290
+ "9.5.0",
291
+ "9.4.28-ubuntu-jdk11",
292
+ "9.8-ubuntu-jdk17",
293
+ "9.10.0-ubuntu-jdk17",
294
+ "9.12.2-ubi9-jdk17",
154
295
  "9.7-jdk17",
155
- "9.7-jdk11",
156
- "9.7.2-ubuntu-jdk17",
157
- "9.7.2-ubuntu-jdk11",
158
- "9.7.2-ubi9-jdk17",
159
- "9.7.2-ubi9",
296
+ "9.8.2-ubuntu-jdk17",
297
+ "9.12.9-ubuntu-jdk11",
298
+ "9.13",
299
+ "9.13.0-jdk11",
300
+ "9.8.2-jdk11",
301
+ "9.5.0-jdk17",
302
+ "9.8-jdk11",
303
+ "9.17.2-jdk11",
304
+ "9.8.2-ubuntu-jdk11",
160
305
  "9.7.2-jdk17",
161
- "9.7.2-jdk11",
162
- "9.7.1-ubuntu-jdk17",
163
- "9.7.2",
164
- "9.7.1-ubuntu-jdk11",
165
- "9.7.1-ubi9-jdk17",
166
- "9.7.1-ubi9",
167
- "9.7.1-jdk17",
168
- "9.7.1-jdk11",
169
- "9.7.1",
170
- "9.7.0-ubuntu-jdk17",
171
- "9.7.0-ubuntu-jdk11",
172
- "9.7.0-ubi9-jdk17",
173
- "9.7.0-ubi9",
174
- "9.7.0-jdk17",
175
- "9.7.0-jdk11",
176
- "9.7.0",
177
- "9.7",
178
- "9.6-ubuntu-jdk17",
179
- "9.6-ubuntu-jdk11",
180
- "9.6-jdk11",
181
- "9.6-jdk17",
182
- "9.6.0-ubuntu-jdk17",
183
- "9.6.0-ubi9-jdk17",
184
- "9.6.0-ubuntu-jdk11",
185
- "9.6.0-ubi9",
186
- "9.6.0-jdk17",
187
- "9.6.0-jdk11",
188
- "9.6.0",
189
- "9.6",
190
- "9.5-ubuntu-jdk17",
191
- "9.5-ubuntu-jdk11",
306
+ "9.12-ubuntu-jdk17",
307
+ "9.4.15",
308
+ "9.8.2",
309
+ "9.4.15-jdk11",
310
+ "9.13.1-ubi9-jdk17",
311
+ "9.12.15",
312
+ "9.12-jdk17",
313
+ "9.12.15-jdk17",
314
+ "9.15.2-ubuntu-jdk11",
315
+ "9.13.0-ubi9-jdk17",
316
+ "9.12.15-ubuntu-jdk17",
317
+ "9.12.2-jdk11",
318
+ "9.8.2-jdk17",
319
+ "9.5.0-ubuntu-jdk17",
320
+ "9.13.1-jdk17",
321
+ "9.13-jdk17",
322
+ "9.17.2-ubuntu-jdk11",
323
+ "9.12.10-ubi9-jdk17",
324
+ "9.11.2-jdk17",
325
+ "9.4.21-ubuntu-jdk11",
326
+ "9.15-ubuntu-jdk11",
327
+ "9.15.2-jdk11",
328
+ "9.11.0-jdk11",
329
+ "9.8-jdk17",
330
+ "9.15-jdk11",
331
+ "9.12.2-ubuntu-jdk11",
332
+ "9.10.0-jdk17",
333
+ "9.11.2-ubuntu-jdk17",
192
334
  "9.5-jdk17",
193
- "9.5-jdk11",
335
+ "9.5.1-jdk17",
336
+ "9.17.3-jdk17",
337
+ "9.4.21-jdk11",
338
+ "9.4.21",
339
+ "9.17.3-ubuntu-jdk17",
340
+ "9.17.3",
194
341
  "9.5.1-ubuntu-jdk17",
342
+ "9.7.2-ubuntu-jdk17",
343
+ "9.11.2",
344
+ "9.7-ubuntu-jdk17",
345
+ "9.13.0-ubuntu-jdk11",
346
+ "9.11.0-ubi9",
347
+ "9.13.1-ubi9",
348
+ "9.4.16-jdk11",
349
+ "9.5-ubuntu-jdk11",
350
+ "9.11.0-ubi9-jdk17",
195
351
  "9.5.1-ubuntu-jdk11",
196
- "9.5.1-ubi9-jdk17",
197
- "9.5.1-ubi9",
198
- "9.5.1-jdk17",
199
- "9.5.1-jdk11",
352
+ "9.12.10-ubi9",
353
+ "10.0.1-ubi9-jdk17",
354
+ "10.0.1-ubi9",
355
+ "9.4.0",
356
+ "9.14.0-jdk17",
357
+ "9.4.16",
358
+ "9.5-ubuntu-jdk17",
359
+ "9.4.16-ubuntu-jdk11",
360
+ "9.5-jdk11",
361
+ "9.8.1-ubi9",
200
362
  "9.5.1",
201
- "9.5.0-ubuntu-jdk17",
202
- "9.5.0-ubuntu-jdk11",
203
- "9.5.0-ubi9",
204
- "9.5.0-jdk17",
205
- "9.5.0-jdk11",
206
- "9.5.0",
207
- "9.5",
208
- "9.4-jdk11",
209
- "9.4-ubuntu-jdk11",
210
- "9.4.9-ubuntu-jdk11",
211
- "9.4.9-jdk11",
212
- "9.4.9",
213
- "9.4.8-ubuntu-jdk11",
214
- "9.4.8",
215
- "9.4.8-jdk11",
216
- "9.4.7-ubuntu-jdk11",
217
- "9.4.7-jdk11",
218
- "9.4.7",
219
- "9.4.6-ubuntu-jdk11",
220
- "9.4.6-jdk11",
221
- "9.4.6",
222
- "9.4.5-ubuntu-jdk11",
223
- "9.4.5-jdk11",
224
- "9.4.5",
225
- "9.4.4-ubuntu-jdk11",
226
- "9.4.4-jdk11",
227
- "9.4.4",
228
- "9.4.3-ubuntu-jdk11",
229
- "9.4.3-jdk11",
363
+ "9.14.0",
364
+ "9.4.22",
365
+ "9.17.3-ubuntu-jdk11",
366
+ "9.9.0-jdk11",
367
+ "9.5.1-jdk11",
368
+ "9.12.3-jdk11",
230
369
  "9.4.3",
231
- "9.4.2-ubuntu-jdk11",
232
- "9.4.28-ubuntu-jdk11",
233
- "9.4.2-jdk11",
234
- "9.4.28-jdk11",
235
- "9.4.28",
236
- "9.4.27-ubuntu-jdk11",
237
- "9.4.27-jdk11",
238
- "9.4.27",
239
- "9.4.26-ubuntu-jdk11",
240
- "9.4.26-jdk11",
241
- "9.4.26",
242
- "9.4.25-ubuntu-jdk11",
243
- "9.4.25-jdk11",
244
- "9.4.25",
245
- "9.4.24-ubuntu-jdk11",
246
- "9.4.24-jdk11",
247
- "9.4.24",
248
- "9.4.23-jdk11",
249
- "9.4.23-ubuntu-jdk11",
250
- "9.4.23",
370
+ "9.5",
371
+ "9.11.1-jdk11",
372
+ "9.8.1-ubi9-jdk17",
251
373
  "9.4.22-ubuntu-jdk11",
374
+ "9.12.11-ubi9-jdk17",
375
+ "9.4.0-jdk11",
376
+ "9.9.0-ubuntu-jdk11",
377
+ "9.12.11-ubuntu-jdk11",
378
+ "9.4.0-ubuntu-jdk11",
379
+ "9.4.3-ubuntu-jdk11",
252
380
  "9.4.22-jdk11",
253
- "9.4.22",
254
- "9.4.21-ubuntu-jdk11",
255
- "9.4.21-jdk11",
256
- "9.4.21",
257
- "9.4.20-ubuntu-jdk11",
258
- "9.4.20-jdk11",
259
- "9.4.20",
260
- "9.4.2",
261
- "9.4.1-ubuntu-jdk11",
262
- "9.4.1-jdk11",
263
- "9.4.19-ubuntu-jdk11",
264
- "9.4.19-jdk11",
265
- "9.4.19",
266
- "9.4.18-ubuntu-jdk11",
267
- "9.4.12-jdk11",
268
- "9.4.18-jdk11",
269
- "9.4.18",
381
+ "9.11.1-ubuntu-jdk11",
382
+ "9.17.3-jdk11",
383
+ "9.5.0-ubi9-jdk17",
384
+ "9.12.3-ubi9-jdk17",
385
+ "9.12.3-ubi9",
386
+ "9.5.0-ubi9",
387
+ "9.9.0-ubuntu-jdk17",
388
+ "9.12.11-jdk11",
389
+ "9.11.2-jdk11",
390
+ "9.9.0",
391
+ "9.11.1-ubi9-jdk17",
392
+ "9.4.3-jdk11",
393
+ "9.17.4-ubuntu-jdk17",
394
+ "9.12.3-ubuntu-jdk11",
395
+ "9.11.1-ubi9",
396
+ "9.17.4-jdk17",
397
+ "9.14.0-ubuntu-jdk17",
398
+ "9.9.0-jdk17",
399
+ "9.12.4-ubuntu-jdk11",
400
+ "9.17.4",
401
+ "9.12.2",
402
+ "9.16.0-jdk11",
403
+ "9.11.2-ubuntu-jdk11",
404
+ "9.12.2-jdk17",
270
405
  "9.4.17-ubuntu-jdk11",
271
- "9.4.17-jdk11",
272
406
  "9.4.17",
273
- "9.4.16-jdk11",
274
- "9.4.16-ubuntu-jdk11",
275
- "9.4.16",
276
- "9.4.15-jdk11",
277
- "9.4.15-ubuntu-jdk11",
278
- "9.4.15",
279
- "9.4.14-ubuntu-jdk11",
280
- "9.4.14-jdk11",
281
- "9.4.14",
282
- "9.4.12-ubuntu-jdk11",
283
- "9.4.12",
284
- "9.4.11-ubuntu-jdk11",
285
- "9.4.11-jdk11",
286
- "9.4.11",
287
- "9.4.10-ubuntu-jdk11",
288
- "9.4.10-jdk11",
289
- "9.4.1",
290
- "9.4.10",
291
- "9.4.0-ubuntu-jdk11",
292
- "9.4.0-jdk11",
293
- "9.4.0",
294
- "9.4",
295
- "9.17-ubuntu-jdk17",
296
- "9.17-ubuntu-jdk11",
407
+ "9.12.11-ubi9",
408
+ "9.4.17-jdk11",
409
+ "9.13-ubuntu-jdk11",
410
+ "9.8.2-ubi9-jdk17",
411
+ "9.13.1-ubuntu-jdk11",
412
+ "9.11.3-jdk17",
413
+ "9.12.12-ubuntu-jdk11",
414
+ "9.13.1-jdk11",
415
+ "9.12.12-jdk11",
416
+ "9.12.4-ubi9-jdk17",
417
+ "9.11",
418
+ "9.12.4-jdk11",
419
+ "9.4.4-ubuntu-jdk11",
420
+ "9.8.2-ubi9",
421
+ "9.13-jdk11",
422
+ "9.12.4-ubi9",
423
+ "9.11.3",
424
+ "9.6-ubuntu-jdk17",
425
+ "9.6.0-jdk17",
426
+ "9.16.0-ubuntu-jdk11",
427
+ "9.6.0-ubuntu-jdk17",
428
+ "9.12.2-ubuntu-jdk17",
429
+ "9.4.23-jdk11",
430
+ "9.11-ubuntu-jdk17",
431
+ "9.11.3-ubuntu-jdk17",
432
+ "9.4.23",
433
+ "9.6-jdk17",
434
+ "9.4.4",
435
+ "9.11-jdk17",
436
+ "9.4.23-ubuntu-jdk11",
437
+ "9.9.1",
438
+ "9.5.1-ubi9-jdk17",
439
+ "9.4.4-jdk11",
440
+ "9.4.1-ubuntu-jdk11",
441
+ "9.17.4-ubuntu-jdk11",
442
+ "9.5.1-ubi9",
443
+ "9.14-ubuntu-jdk17",
444
+ "9.10.1-ubuntu-jdk17",
445
+ "10.1.1-ubi9",
446
+ "10.1.1-ubi9-jdk17",
447
+ "9.17.4-jdk11",
448
+ "9.9.1-ubuntu-jdk17",
449
+ "9.4.1-jdk11",
450
+ "9.14.1",
451
+ "9.4.1",
452
+ "9.8.0-jdk17",
453
+ "9.8.0-ubuntu-jdk17",
454
+ "9.12.12-ubi9-jdk17",
455
+ "9.6.0-jdk11",
456
+ "9.14.1-jdk17",
457
+ "9.10.1-jdk17",
458
+ "9.14",
459
+ "9.14-jdk17",
460
+ "9.9.1-jdk17",
461
+ "9.14.1-ubuntu-jdk17",
462
+ "9.12.12-ubi9",
463
+ "9.9.1-ubuntu-jdk11",
464
+ "9.9.1-jdk11",
465
+ "9.6.0-ubuntu-jdk11",
466
+ "9.6-jdk11",
467
+ "9.6",
468
+ "9.6-ubuntu-jdk11",
469
+ "9.6.0",
470
+ "9.4.24",
471
+ "9-jdk17",
472
+ "9.14.0-ubi9",
473
+ "9.14.0-ubi9-jdk17",
474
+ "9.11.3-ubuntu-jdk11",
475
+ "9.12.5-ubi9",
297
476
  "9.17-jdk17",
298
- "9.17.5-ubuntu-jdk11",
299
- "9.17-jdk11",
300
- "9.17.5-ubuntu-jdk17",
477
+ "9.11-jdk11",
301
478
  "9.17.5-jdk17",
302
- "9.17.5-ubi9",
303
- "9.17.5-ubi9-jdk17",
304
- "9.17.5-jdk11",
479
+ "9.12.5-jdk11",
480
+ "10.1.2-ubi9-jdk17",
481
+ "9.4.24-ubuntu-jdk11",
482
+ "9.12.5-ubuntu-jdk11",
483
+ "9.11-ubuntu-jdk11",
484
+ "9.11.2-ubi9",
305
485
  "9.17.5",
306
- "9.17.4-ubuntu-jdk11",
307
- "9.17.4-ubuntu-jdk17",
308
- "9.17.4-ubi9-jdk17",
309
- "9.17.4-jdk17",
310
- "9.17.4-ubi9",
311
- "9.17.4-jdk11",
312
- "9.17.4",
313
- "9.17.3-ubuntu-jdk11",
314
- "9.17.3-ubuntu-jdk17",
315
- "9.17.3-ubi9-jdk17",
316
- "9.17.3-ubi9",
317
- "9.17.3-jdk17",
318
- "9.17.3",
319
- "9.17.3-jdk11",
320
- "9.17.2-ubuntu-jdk17",
321
- "9.16.0-ubuntu-jdk11",
322
- "9.17.2-ubuntu-jdk11",
323
- "9.17.2-ubi9-jdk17",
324
- "9.17.2-ubi9",
325
- "9.17.2-jdk17",
326
- "9.17.2-jdk11",
327
- "9.17.2",
328
- "9.17.1-ubuntu-jdk17",
329
- "9.17.1-ubuntu-jdk11",
330
- "9.17.1-ubi9-jdk17",
331
- "9.17.1-ubi9",
332
- "9.17.1-jdk17",
333
- "9.17.1-jdk11",
334
- "9.17.0-ubuntu-jdk17",
335
- "9.17.1",
336
- "9.17.0-ubuntu-jdk11",
486
+ "9-ubuntu-jdk11",
487
+ "9.12.5-ubi9-jdk17",
337
488
  "9.17.0-ubi9-jdk17",
338
489
  "9.17.0-ubi9",
339
- "9.17.0-jdk17",
340
- "9.17.0-jdk11",
490
+ "9.4.24-jdk11",
491
+ "9.17-ubuntu-jdk17",
492
+ "9.12.13-ubuntu-jdk11",
493
+ "9.11.2-ubi9-jdk17",
494
+ "9-ubuntu-jdk17",
495
+ "9.12.3-ubuntu-jdk17",
496
+ "9.12.3-jdk17",
341
497
  "9.17",
342
- "9.17.0",
343
- "9.16-ubuntu-jdk17",
344
- "9.16-ubuntu-jdk11",
345
- "9.16-jdk17",
498
+ "9.12.3",
499
+ "9.11.3-jdk11",
500
+ "9-jdk11",
501
+ "9",
502
+ "9.4.18-jdk11",
503
+ "9.17.5-ubuntu-jdk17",
504
+ "9.4.18-ubuntu-jdk11",
505
+ "9.4.10-jdk11",
346
506
  "9.16-jdk11",
347
- "9.16.1-ubuntu-jdk17",
348
- "9.16.1-ubuntu-jdk11",
349
- "9.16.1-ubi9-jdk17",
350
- "9.16.1-ubi9",
351
- "9.16.1-jdk17",
507
+ "9.4.18",
508
+ "9.4.5-jdk11",
509
+ "9.17.5-jdk11",
510
+ "9.12.13-jdk11",
511
+ "9.17.5-ubuntu-jdk11",
512
+ "9.17-jdk11",
513
+ "9.17-ubuntu-jdk11",
514
+ "9.9.2-ubuntu-jdk11",
515
+ "9.9-ubuntu-jdk11",
516
+ "9.10.2-ubuntu-jdk17",
517
+ "10.1.2-ubi9",
518
+ "9.9-jdk17",
519
+ "9.4.10",
520
+ "9.9-ubuntu-jdk17",
521
+ "9.6.0-ubi9",
522
+ "9.10-ubuntu-jdk17",
352
523
  "9.16.1-jdk11",
353
- "9.16.1",
354
- "9.16.0-ubuntu-jdk17",
355
- "9.16.0-ubi9-jdk17",
356
- "9.16.0-ubi9",
357
- "9.16.0-jdk11",
358
- "9.16.0-jdk17",
359
- "9.16.0",
360
- "9.15-ubuntu-jdk11",
361
- "9.16",
362
- "9.15-ubuntu-jdk17",
363
- "9.15-jdk17",
364
- "9.15-jdk11",
365
- "9.15.2-ubuntu-jdk17",
366
- "9.15.2-ubuntu-jdk11",
367
- "9.15.2-ubi9-jdk17",
368
- "9.15.2-ubi9",
369
- "9.15.2-jdk17",
370
- "9.15.2-jdk11",
371
- "9.15.2",
372
- "9.15.1-ubuntu-jdk17",
373
- "9.15.1-ubuntu-jdk11",
374
- "9.15.1-ubi9-jdk17",
375
- "9.15.1-ubi9",
376
- "9.15.1-jdk17",
377
- "9.15.1-jdk11",
378
- "9.15.1",
524
+ "9.16.1-ubuntu-jdk11",
525
+ "9.16-ubuntu-jdk11",
526
+ "9.4.10-ubuntu-jdk11",
527
+ "9.9.0-ubi9-jdk17",
528
+ "9.10.2-jdk17",
529
+ "9.10-jdk17",
530
+ "9.4.5-ubuntu-jdk11",
531
+ "9.4.5",
532
+ "9.6.0-ubi9-jdk17",
533
+ "9.9.2",
534
+ "9.9.2-jdk11",
535
+ "9.14.1-ubi9-jdk17",
536
+ "9.9-jdk11",
537
+ "9.9.2-jdk17",
538
+ "9.9.0-ubi9",
539
+ "9.8.1-jdk17",
540
+ "9.9",
541
+ "9.9.2-ubuntu-jdk17",
542
+ "9.8.1-ubuntu-jdk17",
543
+ "9.14.1-ubi9",
544
+ "9.12.13-ubi9",
545
+ "9.12.13-ubi9-jdk17",
546
+ "9.17.1-ubi9-jdk17",
379
547
  "9.15.0-ubuntu-jdk17",
380
- "9.15.0-ubi9-jdk17",
381
- "9.15.0-ubuntu-jdk11",
382
- "9.15.0-ubi9",
548
+ "9.17.1-ubi9",
549
+ "9.12.14-ubuntu-jdk11",
383
550
  "9.15.0-jdk17",
384
- "9.15.0",
385
- "9.15.0-jdk11",
386
- "9.15",
387
- "9.14-ubuntu-jdk17",
388
- "9.14-ubuntu-jdk11",
389
- "9.14-jdk17",
390
- "9.14.1-ubuntu-jdk17",
391
- "9.14-jdk11",
392
- "9.14.1-ubuntu-jdk11",
393
- "9.14.1-ubi9",
394
- "9.14.1-ubi9-jdk17",
395
- "9.14.1-jdk17",
396
- "9.14.1",
397
- "9.14.1-jdk11",
398
- "9.14.0-ubuntu-jdk17",
399
551
  "9.14.0-ubuntu-jdk11",
400
- "9.14.0-ubi9-jdk17",
401
- "9.14.0-ubi9",
402
- "9.14.0-jdk17",
552
+ "9.12.4-ubuntu-jdk17",
553
+ "9.7.0-ubuntu-jdk17",
554
+ "9.4.19-jdk11",
555
+ "9.12.0-ubuntu-jdk17",
556
+ "9.4.19-ubuntu-jdk11",
557
+ "9.12.0",
558
+ "9.12.6-ubi9",
559
+ "9.12.6-jdk11",
560
+ "9.12.0-jdk17",
561
+ "9.4.25-jdk11",
562
+ "9.9.1-ubi9-jdk17",
563
+ "9.9.1-ubi9",
564
+ "9.12.6-ubi9-jdk17",
565
+ "9.12.14-jdk11",
566
+ "9.12.4-jdk17",
567
+ "9.12.4",
568
+ "9.4.6-ubuntu-jdk11",
569
+ "9.4.25-ubuntu-jdk11",
570
+ "9.4.19",
403
571
  "9.14.0-jdk11",
404
- "9.14.0",
405
- "9.14",
406
- "9.13-ubuntu-jdk17",
407
- "9.13-ubuntu-jdk11",
408
- "9.13-jdk11",
409
- "9.13-jdk17",
410
- "9.13.1-ubuntu-jdk17",
411
- "9.13.1-ubi9-jdk17",
412
- "9.13.1-ubuntu-jdk11",
413
- "9.13.1-ubi9",
414
- "9.13.1-jdk17",
415
- "9.13.1-jdk11",
416
- "9.13.1",
417
- "9.13.0-ubuntu-jdk17",
418
- "9.13.0-ubuntu-jdk11",
419
- "9.13.0-ubi9-jdk17",
420
- "9.13.0-ubi9",
421
- "9.13.0-jdk17",
422
- "9.13.0-jdk11",
423
- "9.13.0",
424
- "9.13",
425
- "9.12-ubuntu-jdk17",
426
- "9.12-ubuntu-jdk11",
427
- "9.12-jdk17",
428
- "9.12.9-ubuntu-jdk17",
429
- "9.12-jdk11",
430
- "9.12.9-ubuntu-jdk11",
431
- "9.12.9-ubi9-jdk17",
432
- "9.12.9-ubi9",
433
- "9.12.9-jdk17",
434
- "9.12.9",
435
- "9.12.9-jdk11",
436
- "9.12.8-ubuntu-jdk17",
437
- "9.12.8-ubuntu-jdk11",
438
- "9.12.8-ubi9-jdk17",
439
- "9.12.8-ubi9",
440
- "9.12.8-jdk17",
441
- "9.12.8-jdk11",
442
- "9.12.5-ubuntu-jdk17",
443
- "9.12.8",
444
- "9.12.7-ubuntu-jdk17",
445
- "9.12.7-ubuntu-jdk11",
446
- "9.12.7-ubi9-jdk17",
447
- "9.12.7-ubi9",
448
- "9.12.7-jdk17",
449
- "9.12.7-jdk11",
450
- "9.12.7",
451
- "9.12.6-ubuntu-jdk17",
572
+ "9.7.0-jdk17",
452
573
  "9.12.6-ubuntu-jdk11",
453
- "9.12.6-ubi9-jdk17",
454
- "9.12.6-ubi9",
455
- "9.12.6-jdk17",
456
- "9.12.6-jdk11",
457
- "9.12.6",
458
- "9.12.5-ubuntu-jdk11",
459
- "9.12.5-ubi9-jdk17",
460
- "9.12.5-ubi9",
461
- "9.12.5-jdk17",
462
- "9.12.5-jdk11",
463
- "9.12.5",
464
- "9.12.4-ubuntu-jdk17",
465
- "9.12.4-ubuntu-jdk11",
466
- "9.12.4-ubi9-jdk17",
467
- "9.12.4-ubi9",
468
- "9.12.4-jdk11",
469
- "9.12.4-jdk17",
470
- "9.12.4",
471
- "9.12.3-ubuntu-jdk17",
472
- "9.12.3-ubuntu-jdk11",
473
- "9.12.3-ubi9-jdk17",
474
- "9.12.3-ubi9",
475
- "9.12.3-jdk17",
476
- "9.12.3-jdk11",
477
- "9.12.3",
478
- "9.12.2-ubuntu-jdk17",
479
- "9.12.2-ubuntu-jdk11",
480
- "9.12.2-ubi9-jdk17",
481
- "9.12.2-ubi9",
482
- "9.12.2-jdk17",
483
- "9.12.2-jdk11",
484
- "9.12.2",
485
- "9.12.1-ubuntu-jdk17",
486
- "9.12.1-ubuntu-jdk11",
487
- "9.12.1-ubi9",
488
- "9.12.1-ubi9-jdk17",
489
- "9.12.1-jdk17",
490
- "9.12.15-ubuntu-jdk17",
491
- "9.12.1-jdk11",
492
- "9.12.15-ubuntu-jdk11",
493
- "9.12.15-ubi9",
494
- "9.12.15-ubi9-jdk17",
495
- "9.12.15-jdk17",
496
- "9.12.15-jdk11",
497
- "9.12.15",
498
- "9.12.14-ubuntu-jdk17",
499
- "9.12.14-ubuntu-jdk11",
500
- "9.12.14-ubi9-jdk17",
501
- "9.12.14-ubi9",
502
- "9.12.14-jdk11",
503
- "9.12.14-jdk17",
504
- "9.12.14",
505
- "9.12.13-ubuntu-jdk11",
506
- "9.12.13-ubuntu-jdk17",
507
- "9.12.13-ubi9-jdk17",
508
- "9.12.13-ubi9",
509
- "9.12.13-jdk17",
510
- "9.12.13-jdk11",
511
- "9.12.13",
512
- "9.12.12-ubuntu-jdk17",
513
- "9.12.12-ubuntu-jdk11",
514
- "9.12.12-ubi9-jdk17",
515
- "9.12.12-ubi9",
516
- "9.12.12-jdk17",
517
- "9.12.12-jdk11",
518
- "9.12.12",
519
- "9.12.11-ubuntu-jdk17",
520
- "9.12.11-ubuntu-jdk11",
521
- "9.12.11-ubi9-jdk17",
522
- "9.12.11-ubi9",
523
- "9.12.11-jdk11",
524
- "9.12.11-jdk17",
525
- "9.12.10-ubuntu-jdk17",
526
- "9.12.11",
527
- "9.12.10-ubi9-jdk17",
528
- "9.12.10-ubuntu-jdk11",
529
- "9.12.10-ubi9",
530
- "9.12.10-jdk17",
531
- "9.12.10-jdk11",
532
- "9.12.10",
533
- "9.12.1",
534
- "9.12.0-ubuntu-jdk17",
535
- "9.12.0-ubuntu-jdk11",
536
- "9.12.0-jdk17",
574
+ "9.4.25",
575
+ "9.4.6",
576
+ "9.15.0",
577
+ "9.11.3-ubi9",
578
+ "9.7.0-jdk11",
537
579
  "9.12.0-jdk11",
538
- "9.12.0",
539
- "9.12",
540
- "9.11-ubuntu-jdk17",
541
- "9.11-ubuntu-jdk11",
542
- "9.11-jdk17",
543
- "9.11-jdk11",
544
- "9.11.3-ubuntu-jdk17",
545
- "9.11.3-ubuntu-jdk11",
580
+ "9.7.0-ubuntu-jdk11",
581
+ "9.12.14-ubi9",
546
582
  "9.11.3-ubi9-jdk17",
547
- "9.11.3-ubi9",
548
- "9.11.3-jdk17",
549
- "9.11.3-jdk11",
550
- "9.11.3",
551
- "9.11.2-ubuntu-jdk17",
552
- "9.11.2-ubuntu-jdk11",
553
- "9.11.2-ubi9-jdk17",
554
- "9.11.2-ubi9",
555
- "9.11.2-jdk17",
556
- "9.11.2-jdk11",
557
- "9.11.2",
558
- "9.11.1-ubuntu-jdk17",
559
- "9.11.1-ubuntu-jdk11",
560
- "9.11.1-ubi9-jdk17",
561
- "9.11.1-ubi9",
562
- "9.11.1-jdk17",
563
- "9.11.1-jdk11",
564
- "9.11.1",
565
- "9.11.0-ubuntu-jdk17",
566
- "9.11.0-ubi9-jdk17",
567
- "9.11.0-ubuntu-jdk11",
568
- "9.11.0-ubi9",
569
- "9.11.0-jdk17",
570
- "9.11.0-jdk11",
571
- "9.11.0",
572
- "9.11",
573
- "9.10-ubuntu-jdk17",
574
- "9.10-ubuntu-jdk11",
575
- "9.10-jdk17",
576
- "9.10-jdk11",
577
- "9.10.2-ubuntu-jdk17",
578
- "9.10.2-ubuntu-jdk11",
579
- "9.10.2-ubi9-jdk17",
580
- "9.10.2-ubi9",
581
- "9.10.2-jdk17",
582
- "9.10.2-jdk11",
583
- "9.10.2",
584
- "9.10.1-ubuntu-jdk17",
585
- "9.10.1-ubuntu-jdk11",
586
- "9.10.1-ubi9-jdk17",
587
- "9.10.1-ubi9",
588
- "9.10.1-jdk17",
589
- "9.10.1-jdk11",
590
- "9.10.1",
591
- "9.10.0-ubuntu-jdk17",
592
- "9.10.0-ubuntu-jdk11",
583
+ "9.7.0",
584
+ "10.2.0-ubi9-jdk17",
585
+ "9.12.14-ubi9-jdk17",
586
+ "10.2.0-ubi9",
587
+ "ubi9-jdk17",
588
+ "ubi9",
589
+ "9.12.0-ubuntu-jdk11",
590
+ "9.12.7-ubi9",
591
+ "9.4.11-ubuntu-jdk11",
592
+ "9.4.11-jdk11",
593
+ "9.4.11",
594
+ "9.17.2-ubi9-jdk17",
595
+ "9.4.6-jdk11",
596
+ "9.15.0-ubi9",
597
+ "9.17.2-ubi9",
598
+ "9.12.7-ubi9-jdk17",
599
+ "9.15.0-ubi9-jdk17",
600
+ "9.7.0-ubi9-jdk17",
601
+ "9.7.0-ubi9",
602
+ "9.9.2-ubi9",
603
+ "9.9.2-ubi9-jdk17",
604
+ "9.12.15-ubi9",
605
+ "9.12.15-ubi9-jdk17",
606
+ "9.12.0-ubi9",
607
+ "9.17.3-ubi9",
608
+ "9.12.8-ubi9",
609
+ "9.12.0-ubi9-jdk17",
610
+ "9.12.8-ubi9-jdk17",
611
+ "9.17.3-ubi9-jdk17",
612
+ "9.15.1-ubi9-jdk17",
613
+ "9.15.1-ubi9",
614
+ "9.7.1-ubi9",
615
+ "9.7.1-ubi9-jdk17",
593
616
  "9.10.0-ubi9-jdk17",
594
617
  "9.10.0-ubi9",
595
- "9.10.0-jdk17",
596
- "9.10.0-jdk11",
597
- "9.10.0",
598
- "9.10",
599
- "9",
600
- "10.1-ubuntu-jdk17",
601
- "10.1-jdk17",
602
- "10.1.2-ubuntu-jdk17",
603
- "10.1.2-ubi9-jdk17",
604
- "10.1.2-ubi9",
605
- "10.1.2-jdk17",
606
- "10.1.2",
607
- "10.1.1-ubuntu-jdk17",
608
- "10.1.1-ubi9-jdk17",
609
- "10.1.1-ubi9",
610
- "10.1.1-jdk17",
611
- "10.1.1",
612
- "10.1",
613
- "10.0-ubuntu-jdk17",
614
- "10.0-jdk17",
615
- "10.0.1-ubuntu-jdk17",
616
- "10.0.1-ubi9-jdk17",
617
- "10.0.1-ubi9",
618
- "10.0.1-jdk17",
619
- "10.0.1",
620
- "10.0.0-ubuntu-jdk17",
621
- "10.0.0-ubi9-jdk17",
622
- "10.0.0-ubi9",
623
- "10.0.0-jdk17",
624
- "10.0.0",
625
- "10.0",
626
- "9.12.0-ubi9-jdk17",
627
- "9.12.0-ubi9",
618
+ "10.3.0-EAP01-jdk17",
619
+ "10.3.0-EAP01",
620
+ "10.3.0-EAP01-ubuntu-jdk17",
621
+ "10.3.0-EAP01-ubi9",
622
+ "10.3.0-EAP01-ubi9-jdk17",
623
+ "10.2.0-RC",
624
+ "10.2.0-RC-ubuntu-jdk17",
625
+ "10.2.0-RC-jdk17",
626
+ "10.2.0-RC-ubi9",
627
+ "10.2.0-RC-ubi9-jdk17",
628
628
  "10.2.0-EAP02-jdk17",
629
629
  "10.2.0-EAP02",
630
630
  "10.2.0-EAP02-ubuntu-jdk17",
@@ -2058,582 +2058,590 @@ var jira = [
2058
2058
  "8.8.0-RC02"
2059
2059
  ];
2060
2060
  var confluence = [
2061
- "eap-ubuntu-jdk17",
2062
- "eap-jdk17",
2063
- "9.2.0-beta2-ubuntu-jdk21",
2064
- "9.2.0-beta2-jdk21",
2065
- "9.2.0-beta2-jdk17",
2066
- "9.2.0-beta2",
2067
- "eap",
2068
- "9.2.0-beta2-ubuntu-jdk17",
2069
- "9.2.0-beta2-ubi9-jdk17",
2070
- "9.2.0-beta2-ubi9-jdk21",
2071
- "9.2.0-beta2-ubi9",
2072
- "9.1.1-jdk21",
2073
- "9.1.1-jdk17",
2074
- "9.1.1",
2075
- "9.1.0-ubuntu-jdk21",
2076
- "9.1.0-ubi9-jdk21",
2077
- "9.1.0-ubuntu-jdk17",
2078
- "9.1.0-ubi9-jdk17",
2079
- "9.1.0-ubi9",
2080
- "9.1.0-jdk21",
2081
- "9.1.0-jdk17",
2082
- "9.1",
2083
- "9.1.0",
2084
- "9.0-ubuntu-jdk21",
2085
- "9.0-jdk21",
2086
- "9.0-ubuntu-jdk17",
2087
- "9.0-jdk17",
2088
- "9.0.3-ubuntu-jdk21",
2089
- "9.0.3-ubuntu-jdk17",
2090
- "9.0.3-ubi9-jdk21",
2091
- "9.0.3-ubi9-jdk17",
2092
- "9.0.3-ubi9",
2093
- "9.0.3-jdk21",
2094
- "9.0.3-jdk17",
2095
- "9.0.3",
2096
- "9.0.2-ubuntu-jdk21",
2097
- "9.0.2-ubi9-jdk21",
2098
- "9.0.2-ubuntu-jdk17",
2099
- "9.0.2-ubi9-jdk17",
2100
- "9.0.2-jdk21",
2101
- "9.0.2-ubi9",
2102
- "9.0.2-jdk17",
2103
- "9.0.2",
2104
- "9.0.1-ubuntu-jdk21",
2105
- "9.0.1-ubuntu-jdk17",
2106
- "9.0.1-ubi9-jdk21",
2107
- "9.0.1-ubi9",
2108
- "9.0.1-jdk21",
2109
- "9.0.1",
2110
- "9.0",
2111
- "9.0.1-jdk17",
2112
- "8-ubuntu-jdk17",
2113
- "9",
2114
- "8-jdk17",
2115
- "8-ubuntu-jdk11",
2116
- "8-jdk11",
2117
- "8.9-ubuntu-jdk17",
2118
- "8.9-ubuntu-jdk11",
2119
- "8.9-jdk17",
2120
- "8.9.8-ubuntu-jdk11",
2121
- "8.9-jdk11",
2122
- "8.9.8-ubuntu-jdk17",
2123
- "8.9.8-ubi9",
2124
- "8.9.8-ubi9-jdk17",
2125
- "8.9.8-jdk17",
2126
- "8.9.8-jdk11",
2127
- "8.9.8",
2128
- "8.9.7-ubuntu-jdk17",
2129
- "8.9.7-ubuntu-jdk11",
2130
- "8.9.7-ubi9-jdk17",
2131
- "8.9.7-jdk11",
2132
- "8.9.7-jdk17",
2133
- "8.9.7-ubi9",
2134
2061
  "8.9.7",
2135
- "8.9.6-ubuntu-jdk17",
2136
- "8.9.6-ubi9-jdk17",
2137
- "8.9.6-ubuntu-jdk11",
2138
- "8.9.6-ubi9",
2139
- "8.9.6-jdk17",
2140
- "8.9.5-ubuntu-jdk11",
2141
- "8.9.6",
2142
- "8.9.6-jdk11",
2143
- "8.9.5-ubuntu-jdk17",
2144
- "8.9.5-jdk17",
2145
- "8.9.5-jdk11",
2146
- "8.9.5",
2147
- "8.9.4-ubuntu-jdk17",
2148
- "8.9.4-ubuntu-jdk11",
2149
- "8.9.4-ubi9-jdk17",
2150
- "8.9.4-ubi9",
2151
- "8.9.4-jdk17",
2152
- "8.9.4-jdk11",
2153
- "8.9.4",
2154
- "8.9.3-ubuntu-jdk11",
2155
- "8.9.3-ubuntu-jdk17",
2156
- "8.9.3-ubi9-jdk17",
2157
- "8.9.3-ubi9",
2158
- "8.9.3-jdk17",
2159
- "8.9.3-jdk11",
2160
- "8.9.3",
2161
- "8.9.2-ubuntu-jdk17",
2162
- "8.9.2-ubuntu-jdk11",
2163
- "8.9.2-ubi9-jdk17",
2164
- "8.9.2-jdk11",
2165
- "8.9.2-jdk17",
2166
- "8.9.2-ubi9",
2167
- "8.9.1-ubuntu-jdk17",
2168
- "8.9.2",
2169
- "8.9.1-ubuntu-jdk11",
2170
- "8.9.1-jdk11",
2171
- "8.9.1-jdk17",
2172
- "8.9.1",
2173
- "8.9.0-ubuntu-jdk17",
2174
- "8.9.0-ubuntu-jdk11",
2175
- "8.9.0-ubi9-jdk17",
2176
- "8.9.0-ubi9",
2177
- "8.9.0-jdk17",
2178
- "8.9.0",
2179
- "8.9.0-jdk11",
2062
+ "8.9.7-jdk17",
2063
+ "8.9.7-ubuntu-jdk17",
2064
+ "8.9.8-jdk17",
2065
+ "8.9.8",
2066
+ "8.9-ubuntu-jdk17",
2180
2067
  "8.9",
2181
- "8.8-ubuntu-jdk17",
2182
- "8.8-ubuntu-jdk11",
2183
- "8.8-jdk17",
2184
- "8.8-jdk11",
2185
- "8.8.1-ubuntu-jdk11",
2186
- "8.8.1-ubuntu-jdk17",
2187
- "8.8.1-ubi9",
2188
- "8.8.1-ubi9-jdk17",
2189
- "8.8.1-jdk17",
2190
- "8.8.1",
2191
- "8.8.1-jdk11",
2192
- "8.8.0-ubuntu-jdk17",
2193
- "8.8.0-ubuntu-jdk11",
2194
- "8.8.0-ubi9-jdk17",
2195
- "8.8.0-jdk11",
2196
- "8.8.0-ubi9",
2197
- "8.8.0",
2198
- "8.8.0-jdk17",
2199
- "8.8",
2200
- "8.7-ubuntu-jdk17",
2201
- "8.7-jdk17",
2202
- "8.7-ubuntu-jdk11",
2203
- "8.7-jdk11",
2204
- "8.7.2-ubuntu-jdk17",
2068
+ "8",
2069
+ "8.9.8-ubuntu-jdk17",
2070
+ "8-ubuntu-jdk17",
2071
+ "8-jdk17",
2072
+ "8.9-jdk17",
2205
2073
  "8.7.2-ubuntu-jdk11",
2206
- "8.7.2-jdk11",
2207
- "8.7.2-jdk17",
2208
- "8.7.2",
2209
- "8.7.1-ubuntu-jdk17",
2210
- "8.7.1-ubuntu-jdk11",
2211
- "8.7.1-ubi9-jdk17",
2212
- "8.7.1-ubi9",
2213
- "8.7.1-jdk11",
2214
- "8.7.1-jdk17",
2215
- "8.7.1",
2216
- "8.7",
2217
2074
  "8.6-ubuntu-jdk17",
2218
- "8.6-ubuntu-jdk11",
2075
+ "8.9.4-ubuntu-jdk11",
2076
+ "8.1.3-ubuntu-jdk11",
2077
+ "8.6",
2078
+ "7.19.9-ubuntu-jdk11",
2079
+ "9.0.1",
2219
2080
  "8.6-jdk17",
2220
- "8.6-jdk11",
2221
- "8.6.2-ubuntu-jdk11",
2081
+ "8.5.14-ubuntu-jdk11",
2082
+ "7.19.24-ubuntu-jdk11",
2083
+ "7.19.26-jdk11",
2084
+ "8.5.2-ubuntu-jdk11",
2222
2085
  "8.6.2-ubuntu-jdk17",
2223
- "8.6.2-ubi9-jdk17",
2224
- "8.6.2-jdk17",
2225
- "8.6.2-ubi9",
2226
- "8.6.2-jdk11",
2227
- "8.6.1-ubuntu-jdk17",
2228
2086
  "8.6.2",
2229
- "8.6.1-ubi9-jdk17",
2230
- "8.6.1-ubuntu-jdk11",
2231
- "8.6.1-ubi9",
2232
- "8.6.1-jdk17",
2233
- "8.6.1",
2234
- "8.6.1-jdk11",
2235
- "8.6.0-ubuntu-jdk11",
2236
- "8.6.0-ubuntu-jdk17",
2237
- "8.6.0",
2238
- "8.6.0-jdk11",
2239
- "8.6.0-jdk17",
2240
- "8.6",
2087
+ "8.6.2-jdk17",
2088
+ "8.5.8-jdk11",
2089
+ "8.9.3-jdk11",
2090
+ "8.7.2-jdk11",
2091
+ "8.5.12-jdk11",
2092
+ "8.9.3-ubuntu-jdk11",
2093
+ "8.7-jdk11",
2094
+ "8.5.10-ubuntu-jdk17",
2095
+ "8.5.12-ubuntu-jdk11",
2096
+ "8.4.1",
2097
+ "8.5.16-jdk17",
2098
+ "7.19.9",
2099
+ "8.1.4-ubuntu-jdk11",
2100
+ "8.5.14-jdk11",
2101
+ "8.5.10",
2102
+ "8.5.2-jdk11",
2103
+ "8.5.16",
2104
+ "8.5.16-ubuntu-jdk17",
2105
+ "7.19.25",
2106
+ "8.1.4-jdk11",
2107
+ "7.19.24",
2108
+ "8.1-ubuntu-jdk11",
2109
+ "8.1.4",
2110
+ "8.3.1-jdk17",
2111
+ "8.7-ubuntu-jdk11",
2112
+ "8.1",
2113
+ "7.19.9-jdk11",
2114
+ "8.4.1-ubuntu-jdk17",
2115
+ "8.4.3-jdk17",
2116
+ "7.19.24-jdk11",
2117
+ "8.5.1-jdk17",
2118
+ "7.19.4-jdk11",
2119
+ "7.19.19-jdk11",
2120
+ "7.19.25-ubuntu-jdk11",
2121
+ "8.1.3-jdk11",
2122
+ "7.20.0-ubuntu-jdk11",
2123
+ "8.1.3",
2124
+ "7.19.26-ubuntu-jdk11",
2125
+ "7.19.19-ubuntu-jdk11",
2126
+ "8.3.1",
2127
+ "7.20.0-jdk11",
2128
+ "8.5.1",
2129
+ "8.9.1-ubuntu-jdk17",
2130
+ "8.4.1-jdk17",
2131
+ "8.5.8-ubuntu-jdk11",
2132
+ "8.3.0-ubuntu-jdk17",
2133
+ "8.1-jdk11",
2134
+ "8.4.0-jdk11",
2135
+ "8.4.2",
2136
+ "8.9.5-jdk11",
2137
+ "8.7.1",
2138
+ "8.9.4-jdk11",
2139
+ "8.5.10-jdk17",
2140
+ "8.3.0",
2141
+ "8.0.1",
2142
+ "8.7.1-jdk17",
2143
+ "8.5.17-ubuntu-jdk17",
2144
+ "8.5.6",
2145
+ "7.19.25-jdk11",
2146
+ "8.3.1-ubuntu-jdk17",
2147
+ "8.5.6-ubuntu-jdk17",
2148
+ "8.5.1-ubuntu-jdk17",
2149
+ "8.5",
2150
+ "8.9.1-jdk17",
2151
+ "8.4-ubuntu-jdk11",
2152
+ "7.19.3",
2153
+ "8.4.5-jdk11",
2154
+ "8.0.2-ubuntu-jdk11",
2155
+ "9.0.1-jdk17",
2156
+ "8.0.1-jdk11",
2157
+ "8.0.3-ubuntu-jdk11",
2158
+ "9.0.2-jdk17",
2159
+ "7.20.0",
2160
+ "7.19.19",
2161
+ "9.0.1-ubuntu-jdk17",
2162
+ "8.4.0-ubuntu-jdk11",
2163
+ "8.5.6-jdk17",
2164
+ "8.5.17-jdk17",
2241
2165
  "8.5-ubuntu-jdk17",
2242
- "8.5-jdk17",
2243
- "8.5-ubuntu-jdk11",
2244
- "8.5-jdk11",
2245
- "8.5.9-ubuntu-jdk17",
2166
+ "8.4.2-jdk17",
2167
+ "8.3.0-jdk17",
2168
+ "8.0.1-ubuntu-jdk11",
2169
+ "7.19.4-ubuntu-jdk11",
2170
+ "7.19.3-jdk11",
2171
+ "8.5.7-jdk17",
2172
+ "8.8.0-jdk11",
2173
+ "8.4.2-ubuntu-jdk17",
2174
+ "8.9.5-ubuntu-jdk11",
2175
+ "8.4.5-ubuntu-jdk11",
2176
+ "7.19.26",
2177
+ "8.9.1",
2178
+ "8.7.1-ubuntu-jdk17",
2179
+ "7.19.14-ubuntu-jdk11",
2180
+ "8.8.0-ubuntu-jdk11",
2181
+ "7.19.14-jdk11",
2182
+ "8.9.2-jdk17",
2183
+ "8.7.2-ubuntu-jdk17",
2184
+ "7.19.2-ubuntu-jdk11",
2185
+ "8.7",
2246
2186
  "8.5.9-ubuntu-jdk11",
2247
- "8.5.9-ubi9-jdk17",
2248
- "8.5.9-ubi9",
2249
- "8.5.9-jdk17",
2187
+ "8.7.2-jdk17",
2188
+ "8.5.17",
2189
+ "7.19.0",
2190
+ "8.3.0-ubuntu-jdk11",
2191
+ "7.19.14",
2192
+ "9.0.2",
2193
+ "7.19.0-jdk11",
2194
+ "8.9.2-ubuntu-jdk17",
2195
+ "7.19.0-ubuntu-jdk11",
2196
+ "8.5-jdk17",
2197
+ "8.7.2",
2198
+ "7.19.3-ubuntu-jdk11",
2199
+ "7.19.4",
2200
+ "7.19.2",
2201
+ "8.9.2",
2202
+ "8.3.1-jdk11",
2203
+ "8.5.7",
2204
+ "8.5.7-ubuntu-jdk17",
2205
+ "8.8-jdk11",
2250
2206
  "8.5.9-jdk11",
2251
- "8.5.9",
2252
- "8.5.8-ubuntu-jdk17",
2253
- "8.5.8-ubuntu-jdk11",
2254
- "8.5.8-ubi9-jdk17",
2255
- "8.5.8-ubi9",
2256
- "8.5.8-jdk17",
2257
- "8.5.8-jdk11",
2207
+ "8.3.1-ubuntu-jdk11",
2208
+ "8.4.3-ubuntu-jdk17",
2209
+ "8.4.3",
2210
+ "8.3.0-jdk11",
2211
+ "7.19.2-jdk11",
2212
+ "8.4-jdk11",
2213
+ "8.0.2",
2214
+ "8.5.11-ubuntu-jdk17",
2215
+ "8.8-ubuntu-jdk11",
2216
+ "8.7-jdk17",
2217
+ "8.7-ubuntu-jdk17",
2218
+ "8.8.1-ubuntu-jdk11",
2219
+ "8.0.3",
2220
+ "8.5.3-jdk11",
2221
+ "8.0.2-jdk11",
2222
+ "8.5.11",
2223
+ "9.0.2-ubuntu-jdk17",
2224
+ "8.0.3-jdk11",
2225
+ "8.8.1-jdk11",
2226
+ "8.6.0-jdk11",
2227
+ "8.6.0-ubuntu-jdk11",
2228
+ "8.5.11-jdk17",
2229
+ "8.2.0-jdk11",
2230
+ "8.9.3-ubuntu-jdk17",
2258
2231
  "8.5.8",
2259
- "8.5.7-ubuntu-jdk11",
2260
- "8.5.7-ubuntu-jdk17",
2261
- "8.5.7-ubi9-jdk17",
2262
- "8.5.7-ubi9",
2263
- "8.5.7-jdk11",
2264
- "8.5.7-jdk17",
2265
- "8.5.6-ubuntu-jdk11",
2266
- "8.5.7",
2267
- "8.5.6-ubuntu-jdk17",
2268
- "8.5.6-ubi9-jdk17",
2269
- "8.5.6-ubi9",
2270
- "8.5.6-jdk17",
2271
- "8.5.6-jdk11",
2272
- "8.5.6",
2273
- "8.5.5-jdk11",
2274
- "8.5.5-ubuntu-jdk17",
2275
- "8.5.5-jdk17",
2276
- "8.5.5-ubuntu-jdk11",
2232
+ "8.4.1-jdk11",
2233
+ "8.5.8-ubuntu-jdk17",
2234
+ "8.2.0",
2277
2235
  "8.5.3-ubuntu-jdk11",
2278
- "8.5.5",
2279
- "8.5.4-ubuntu-jdk17",
2280
- "8.5.4-ubuntu-jdk11",
2281
- "8.5.4-jdk17",
2282
- "8.5.4",
2236
+ "8.9.6-ubuntu-jdk11",
2237
+ "8.4.1-ubuntu-jdk11",
2238
+ "9.0-jdk17",
2239
+ "7.19.15-ubuntu-jdk11",
2283
2240
  "8.5.4-jdk11",
2284
- "8.5.3-ubuntu-jdk17",
2285
- "8.5.3-jdk17",
2286
- "8.5.3-jdk11",
2287
- "8.5.3",
2288
- "8.5.2-jdk17",
2289
- "8.5.2-ubuntu-jdk11",
2290
- "8.5.2-ubuntu-jdk17",
2291
- "8.5.2-jdk11",
2241
+ "9.0.3",
2242
+ "8.3.2-ubuntu-jdk17",
2243
+ "8.2.0-ubuntu-jdk11",
2244
+ "7.19.15-jdk11",
2245
+ "9.0.1-jdk21",
2246
+ "8.5.4-ubuntu-jdk11",
2247
+ "7.19.15",
2248
+ "8.5.8-jdk17",
2249
+ "9.0.2-ubi9",
2250
+ "8.2.1",
2251
+ "7.19.20",
2252
+ "8.3.3-ubuntu-jdk17",
2253
+ "7.20.1",
2292
2254
  "8.5.2",
2293
- "8.5.1-ubuntu-jdk17",
2294
- "8.5.1-ubuntu-jdk11",
2295
- "8.5.17-ubi9-jdk17",
2296
- "8.5.1-jdk17",
2297
- "8.5.1-jdk11",
2298
- "8.5.17-ubi9",
2299
- "8.5.17-ubuntu-jdk17",
2300
- "8.5.17-ubuntu-jdk11",
2301
- "8.5.17-jdk17",
2302
- "8.5.17-jdk11",
2303
- "8.5.16-ubuntu-jdk17",
2304
- "8.5.17",
2305
- "8.5.16-ubuntu-jdk11",
2306
- "8.5.16-jdk17",
2307
- "8.5.16-ubi9-jdk17",
2308
- "8.5.16-ubi9",
2309
- "8.5.16-jdk11",
2310
- "8.5.16",
2311
- "8.5.15-ubuntu-jdk17",
2312
- "8.5.15-ubi9-jdk17",
2255
+ "9.0",
2256
+ "7.19.1-jdk11",
2257
+ "9.0.3-jdk17",
2258
+ "8.5.2-ubuntu-jdk17",
2259
+ "9.0.1-ubuntu-jdk21",
2260
+ "7.20.1-ubuntu-jdk11",
2261
+ "7.19.1",
2262
+ "8.9.6-jdk11",
2263
+ "9.0.3-ubuntu-jdk17",
2264
+ "8.3.2",
2265
+ "8.5.2-jdk17",
2266
+ "7.19.1-ubuntu-jdk11",
2267
+ "8.5.0-jdk11",
2268
+ "8.3.2-jdk17",
2269
+ "7.19.20-ubuntu-jdk11",
2270
+ "9.0-ubuntu-jdk17",
2313
2271
  "8.5.15-ubuntu-jdk11",
2314
- "8.5.15-jdk17",
2315
- "8.5.15-jdk11",
2316
- "8.5.15-ubi9",
2317
- "8.5.15",
2318
- "8.5.14-ubuntu-jdk17",
2319
- "8.5.14-ubuntu-jdk11",
2320
- "8.5.14-jdk17",
2321
- "8.5.14-jdk11",
2322
- "8.5.14",
2323
- "8.5.12-ubuntu-jdk17",
2324
- "8.5.12-ubuntu-jdk11",
2325
- "8.5.12-ubi9-jdk17",
2326
- "8.5.12-ubi9",
2327
- "8.5.12-jdk17",
2328
- "8.5.12-jdk11",
2329
- "8.2.3-ubuntu-jdk11",
2330
- "8.5.11-ubuntu-jdk17",
2331
- "8.4.3-jdk11",
2332
- "8.5.11-ubi9",
2333
2272
  "8.5.12",
2334
- "8.5.11-ubuntu-jdk11",
2335
- "8.5.11-ubi9-jdk17",
2336
- "8.5.11-jdk17",
2337
- "8.5.11-jdk11",
2338
- "8.5.10-ubi9",
2339
- "8.5.10-ubi9-jdk17",
2340
- "8.5.10-ubuntu-jdk11",
2341
- "8.5.11",
2342
- "8.5.10-ubuntu-jdk17",
2343
- "8.5.10-jdk17",
2344
- "8.5.10",
2345
- "8.5.10-jdk11",
2346
- "8.5.1",
2347
- "8.5.0-ubuntu-jdk17",
2273
+ "8.9.0-jdk11",
2274
+ "8.5.1-ubuntu-jdk11",
2275
+ "8.9.2-ubi9",
2276
+ "8.5.3-jdk17",
2277
+ "8.9.6-ubi9",
2278
+ "7.20.1-jdk11",
2279
+ "8.6.1-ubuntu-jdk11",
2280
+ "7.20.2-jdk11",
2348
2281
  "8.5.0-ubuntu-jdk11",
2349
- "8.5.0-jdk17",
2350
- "8.5.0",
2351
- "8.5",
2352
- "8.5.0-jdk11",
2353
- "8.4-ubuntu-jdk17",
2354
- "8.4-ubuntu-jdk11",
2355
- "8.4-jdk17",
2356
- "8.4-jdk11",
2357
- "8.4.5-ubuntu-jdk17",
2358
- "8.4.5-ubuntu-jdk11",
2359
- "8.4.5-jdk17",
2360
- "8.4.5",
2361
- "8.4.5-jdk11",
2362
2282
  "8.4.4-ubuntu-jdk17",
2363
- "8.4.4-ubuntu-jdk11",
2364
- "8.4.4-jdk17",
2365
- "8.4.4-jdk11",
2366
- "8.4.3-ubuntu-jdk17",
2283
+ "8.9.2-ubi9-jdk17",
2284
+ "8.9.3",
2285
+ "7.19.5-jdk11",
2286
+ "7.19.5-ubuntu-jdk11",
2287
+ "7.19.27",
2288
+ "7.19.5",
2289
+ "8.5.10-ubi9-jdk17",
2290
+ "7.19.20-jdk11",
2291
+ "8.8.0-jdk17",
2292
+ "8.5.15-jdk11",
2293
+ "8.8.0",
2294
+ "8.2.1-jdk11",
2295
+ "7.19.27-ubuntu-jdk11",
2296
+ "8.8.0-ubi9-jdk17",
2297
+ "8.0",
2298
+ "8.6.1-jdk11",
2299
+ "7.19.27-jdk11",
2300
+ "7.20.2",
2301
+ "8.9.3-jdk17",
2302
+ "8.3.2-jdk11",
2303
+ "8.8.0-ubi9",
2304
+ "9.0.2-ubi9-jdk17",
2305
+ "8.2.1-ubuntu-jdk11",
2306
+ "8.3.2-ubuntu-jdk11",
2307
+ "8.8.0-ubuntu-jdk17",
2367
2308
  "8.4.4",
2368
- "8.4.3-ubuntu-jdk11",
2369
- "8.4.3-jdk17",
2370
- "8.4.2-ubuntu-jdk17",
2371
- "8.4.3",
2309
+ "8.3.3",
2310
+ "8.0-jdk11",
2311
+ "8.3.3-jdk17",
2312
+ "8.6.1-ubi9-jdk17",
2313
+ "8.0.4-jdk11",
2314
+ "8.5.9-jdk17",
2315
+ "8.0.4",
2316
+ "8.4.4-jdk17",
2317
+ "7.19.6",
2318
+ "7.19.6-jdk11",
2319
+ "7.20.2-ubuntu-jdk11",
2320
+ "9.0.3-ubi9",
2321
+ "8.5.12-jdk17",
2322
+ "8.5.12-ubuntu-jdk17",
2323
+ "8.8.1-ubuntu-jdk17",
2324
+ "8.0-ubuntu-jdk11",
2325
+ "8.8-jdk17",
2326
+ "8.9.6-ubi9-jdk17",
2327
+ "8.9.0-ubuntu-jdk11",
2328
+ "8.5.9",
2329
+ "8.0.4-ubuntu-jdk11",
2330
+ "8.5.1-jdk11",
2331
+ "8.5.15-ubi9",
2332
+ "8.5.15-ubi9-jdk17",
2333
+ "8.2.2-ubuntu-jdk11",
2334
+ "7.19.21-ubuntu-jdk11",
2335
+ "7.19.10",
2336
+ "8.6.1-ubi9",
2337
+ "7.19.16-ubuntu-jdk11",
2372
2338
  "8.4.2-ubuntu-jdk11",
2373
- "8.4.2-jdk17",
2374
- "8.4.1-ubuntu-jdk17",
2375
- "8.4.2",
2339
+ "8.5.10-ubi9",
2340
+ "8.5.3-ubuntu-jdk17",
2341
+ "8.5.5-jdk11",
2376
2342
  "8.4.2-jdk11",
2377
- "8.4.1-jdk17",
2378
- "8.4.1-ubuntu-jdk11",
2379
- "8.4.1-jdk11",
2380
- "8.4.1",
2381
- "8.4.0-jdk17",
2382
- "8.4.0-ubuntu-jdk17",
2383
- "8.4.0-ubuntu-jdk11",
2384
- "8.4.0-jdk11",
2385
- "8.4.0",
2386
- "8.3-ubuntu-jdk11",
2387
- "8.4",
2388
- "8.3-jdk17",
2389
- "8.3-ubuntu-jdk17",
2390
- "8.3-jdk11",
2391
- "8.3.4-ubuntu-jdk17",
2392
- "8.3.4-ubuntu-jdk11",
2393
- "8.3.4-jdk17",
2394
- "8.3.4",
2395
- "8.3.4-jdk11",
2396
- "8.3.3-ubuntu-jdk17",
2343
+ "8.5.9-ubuntu-jdk17",
2344
+ "8.6-ubuntu-jdk11",
2345
+ "9.1.0-jdk17",
2397
2346
  "8.3.3-jdk11",
2398
- "8.3.3-ubuntu-jdk11",
2399
- "8.3.3-jdk17",
2400
- "8.3.3",
2401
- "8.3.2-ubuntu-jdk17",
2402
- "8.3.2-jdk11",
2403
- "8.3.2-ubuntu-jdk11",
2404
- "8.3.2-jdk17",
2405
- "8.3.2",
2406
- "8.3.1-ubuntu-jdk17",
2407
- "8.3.1-ubuntu-jdk11",
2408
- "8.3.1-jdk17",
2409
- "8.3.1-jdk11",
2410
- "8.3.0-ubuntu-jdk17",
2411
- "8.3.1",
2412
- "8.3.0-ubuntu-jdk11",
2413
- "8.3.0-jdk17",
2414
- "8.3.0-jdk11",
2415
- "8.2-ubuntu-jdk17",
2416
- "8.3",
2417
- "8.3.0",
2418
- "8.2-ubuntu-jdk11",
2419
- "8.2-jdk17",
2420
- "8.2-jdk11",
2421
- "8.2.3-ubuntu-jdk17",
2422
- "8.2.3-jdk17",
2423
- "8.2.3-jdk11",
2424
- "8.2.3",
2347
+ "7.19.16",
2348
+ "7.19.16-jdk11",
2349
+ "7.19.10-ubuntu-jdk11",
2350
+ "8.5.5-ubuntu-jdk11",
2425
2351
  "8.2.2-ubuntu-jdk17",
2426
- "8.2.2-ubuntu-jdk11",
2352
+ "8.5.3",
2353
+ "7.19.10-jdk11",
2427
2354
  "8.2.2-jdk17",
2355
+ "7.19.21",
2356
+ "8.9.7-jdk11",
2357
+ "7.19.21-jdk11",
2358
+ "8.5.7-ubi9",
2359
+ "9.1.0-ubuntu-jdk17",
2360
+ "9.1.0",
2361
+ "8.9.7-ubuntu-jdk11",
2362
+ "9.0.3-ubi9-jdk17",
2363
+ "8.9.4-jdk17",
2364
+ "8.0.3-jdk17",
2365
+ "8.1.3-jdk17",
2366
+ "8.9.4-ubuntu-jdk17",
2367
+ "8.9.4",
2368
+ "8.5.14-jdk17",
2369
+ "7.19.6-ubuntu-jdk11",
2370
+ "9.0.3-ubi9-jdk21",
2371
+ "8.0.3-ubuntu-jdk17",
2372
+ "8.8.1",
2373
+ "8.1.3-ubuntu-jdk17",
2374
+ "8.5.16-jdk11",
2375
+ "9.0.2-jdk21",
2376
+ "8.8-ubuntu-jdk17",
2377
+ "7.19.28-jdk11",
2378
+ "8.4.3-jdk11",
2379
+ "8.3.3-ubuntu-jdk11",
2380
+ "7.19.28-ubuntu-jdk11",
2381
+ "8.8",
2382
+ "8.6.2-ubuntu-jdk11",
2383
+ "8.9.3-ubi9",
2384
+ "8.5.7-ubi9-jdk17",
2385
+ "8.9.3-ubi9-jdk17",
2428
2386
  "8.2.2-jdk11",
2429
- "8.2.2",
2430
- "8.2.1-ubuntu-jdk17",
2431
- "8.2.1-jdk17",
2432
- "8.2.1-ubuntu-jdk11",
2433
- "8.2.1-jdk11",
2434
- "8.2.1",
2435
- "8.2.0-ubuntu-jdk17",
2436
- "8.2.0-ubuntu-jdk11",
2387
+ "9.0.2-ubuntu-jdk21",
2388
+ "8.6-jdk11",
2437
2389
  "8.2.0-jdk17",
2438
- "8.2.0",
2439
- "8.2.0-jdk11",
2440
- "8.2",
2441
- "8.1-ubuntu-jdk17",
2442
- "8.1-ubuntu-jdk11",
2443
- "8.0.4",
2444
- "8.1-jdk17",
2445
- "8.1-jdk11",
2446
- "8.1.4-ubuntu-jdk17",
2447
- "8.1.4-ubuntu-jdk11",
2448
- "8.1.4-jdk17",
2449
- "8.1.4-jdk11",
2450
- "8.1.3-ubuntu-jdk17",
2451
- "8.1.4",
2452
- "8.1.3-ubuntu-jdk11",
2453
- "8.1.3-jdk17",
2454
- "8.1.3-jdk11",
2455
- "8.1.1-ubuntu-jdk17",
2456
- "8.1.3",
2457
- "8.1.1-ubuntu-jdk11",
2458
- "8.1.1-jdk17",
2459
- "8.1.1-jdk11",
2460
- "8.1.1",
2461
- "8.1.0-ubuntu-jdk17",
2462
- "8.1.0-ubuntu-jdk11",
2390
+ "8.4.3-ubuntu-jdk11",
2391
+ "8.8.1-jdk17",
2392
+ "8.5.16-ubuntu-jdk11",
2463
2393
  "8.1.0-jdk17",
2464
- "8.0-ubuntu-jdk17",
2465
- "8.1.0",
2466
- "8.1.0-jdk11",
2467
- "8.1",
2468
- "8.0-jdk17",
2469
- "8.0-jdk11",
2470
- "8.0-ubuntu-jdk11",
2471
- "8.0.4-ubuntu-jdk17",
2472
- "8.0.4-ubuntu-jdk11",
2473
- "8.0.4-jdk17",
2474
- "8.0.4-jdk11",
2475
- "8.0.3-jdk17",
2476
- "8.0.3-ubuntu-jdk17",
2477
- "8.0.3-ubuntu-jdk11",
2478
- "8.0.2-ubuntu-jdk11",
2479
- "8.0.2-ubuntu-jdk17",
2480
- "8.0.3-jdk11",
2481
- "8.0.3",
2482
- "8.0.2-jdk17",
2483
- "8.0.2-jdk11",
2484
- "8.0.2",
2485
- "8.0.1-ubuntu-jdk17",
2486
- "8.0.1-ubuntu-jdk11",
2487
- "8.0.1-jdk17",
2488
- "8.0.0-ubuntu-jdk17",
2489
- "8.0.1-jdk11",
2490
- "8.0.1",
2491
- "8.0.0-ubuntu-jdk11",
2492
- "8.0.0-jdk11",
2493
- "8.0.0-jdk17",
2494
- "7-jdk11",
2495
- "8.0.0",
2496
- "8.0",
2394
+ "8.4.5",
2395
+ "8.4-ubuntu-jdk17",
2396
+ "8.4",
2397
+ "8.2.2",
2398
+ "7.19.28",
2399
+ "8.4-jdk17",
2400
+ "8.9.1-jdk11",
2401
+ "8.3.4",
2402
+ "8.9.5-ubuntu-jdk17",
2403
+ "8.8.1-ubi9-jdk17",
2404
+ "8.3.4-jdk17",
2405
+ "8.5.16-ubi9-jdk17",
2406
+ "8.6.2-jdk11",
2407
+ "8.8.1-ubi9",
2408
+ "8.5.16-ubi9",
2409
+ "8.3-ubuntu-jdk17",
2410
+ "8.4.5-ubuntu-jdk17",
2411
+ "8.3.4-ubuntu-jdk17",
2412
+ "8.6.0",
2413
+ "7.19.11",
2414
+ "7.19.17",
2415
+ "8.4.5-jdk17",
2416
+ "8.6.0-ubuntu-jdk17",
2417
+ "8.6.2-ubi9-jdk17",
2497
2418
  "7-ubuntu-jdk11",
2498
- "8",
2499
- "7.20-ubuntu-jdk11",
2500
- "7.20-jdk11",
2419
+ "7.20",
2420
+ "7-jdk11",
2501
2421
  "7.20.3-ubuntu-jdk11",
2422
+ "8.5.10-jdk11",
2423
+ "7.20-jdk11",
2424
+ "8.3",
2425
+ "8.9.7-ubi9-jdk17",
2426
+ "8.9.5",
2427
+ "8.3-jdk17",
2428
+ "8.6.0-jdk17",
2502
2429
  "7.20.3-jdk11",
2503
- "7.20.3",
2504
- "7.20.2-jdk11",
2505
- "7.20.2-ubuntu-jdk11",
2506
- "7.20.1-ubuntu-jdk11",
2507
- "7.20.2",
2508
- "7.20.1-jdk11",
2509
- "7.20.1",
2510
- "7.20.0-ubuntu-jdk11",
2511
- "7.20.0-jdk11",
2512
- "7.19-ubuntu-jdk11",
2513
- "7.20.0",
2514
- "7.20",
2515
- "7.19-jdk11",
2516
- "7.19.9-ubuntu-jdk11",
2517
- "7.19.9-jdk11",
2518
- "7.19.8",
2519
- "7.19.8-ubuntu-jdk11",
2520
- "7.19.8-jdk11",
2521
- "7.19.9",
2430
+ "8.5.10-ubuntu-jdk11",
2431
+ "8.2.0-ubuntu-jdk17",
2432
+ "8.5.14",
2433
+ "8.6.2-ubi9",
2522
2434
  "7.19.7-jdk11",
2523
- "7.19.7-ubuntu-jdk11",
2435
+ "7",
2436
+ "7.20.3",
2437
+ "7.19.17-ubuntu-jdk11",
2438
+ "7.19.17-jdk11",
2439
+ "8.5.4-jdk17",
2440
+ "8.5.4-ubuntu-jdk17",
2441
+ "7.19.11-jdk11",
2442
+ "8.1.0-ubuntu-jdk17",
2443
+ "7.20-ubuntu-jdk11",
2444
+ "8.9.1-ubuntu-jdk11",
2445
+ "8.1.0-jdk11",
2446
+ "8.5.14-ubuntu-jdk17",
2447
+ "7.19.22-ubuntu-jdk11",
2448
+ "8.9.7-ubi9",
2449
+ "7.19.22-jdk11",
2450
+ "7.19.22",
2451
+ "7.19.11-ubuntu-jdk11",
2452
+ "8.5-ubuntu-jdk11",
2524
2453
  "7.19.7",
2525
- "7.19.6-ubuntu-jdk11",
2526
- "7.19.6-jdk11",
2527
- "7.19.6",
2528
- "7.19.5-ubuntu-jdk11",
2529
- "7.19.5-jdk11",
2530
- "7.19.5",
2531
- "7.19.4-ubuntu-jdk11",
2532
- "7.19.4-jdk11",
2533
- "7.19.4",
2534
- "7.19.3-ubuntu-jdk11",
2535
- "7.19.3-jdk11",
2536
- "7.19.3",
2537
- "7.19.2-ubuntu-jdk11",
2538
- "7.19.2-jdk11",
2539
- "7.19.29-ubuntu-jdk11",
2454
+ "8.5.6-jdk11",
2455
+ "8.5.4",
2456
+ "8.5.6-ubuntu-jdk11",
2457
+ "8.3.4-jdk11",
2458
+ "ubuntu-jdk21",
2459
+ "8.1.0-ubuntu-jdk11",
2460
+ "8.5.11-ubi9",
2461
+ "latest",
2462
+ "8.1.0",
2463
+ "7.19.7-ubuntu-jdk11",
2464
+ "8.3.4-ubuntu-jdk11",
2465
+ "9",
2466
+ "9.0.3-jdk21",
2467
+ "8.9.5-jdk17",
2468
+ "8.2.3",
2469
+ "8.5.11-ubi9-jdk17",
2470
+ "8.9-jdk11",
2471
+ "8-ubuntu-jdk11",
2472
+ "8-jdk11",
2473
+ "7.19-jdk11",
2474
+ "8.9-ubuntu-jdk11",
2475
+ "8.5.8-ubi9-jdk17",
2476
+ "jdk17",
2477
+ "9.1.1-ubuntu-jdk17",
2478
+ "8.5.17-jdk11",
2479
+ "8.9.8-ubuntu-jdk11",
2480
+ "8.2.3-ubuntu-jdk17",
2481
+ "8.2.3-ubuntu-jdk11",
2482
+ "8.1.4-ubuntu-jdk17",
2483
+ "8.1.4-jdk17",
2484
+ "8.9.8-jdk11",
2485
+ "8.2.3-jdk17",
2540
2486
  "7.19.29-jdk11",
2487
+ "9-jdk17",
2488
+ "9.1-ubuntu-jdk21",
2489
+ "8.0-jdk17",
2490
+ "9.1-ubuntu-jdk17",
2491
+ "8.5-jdk11",
2492
+ "8.5.17-ubuntu-jdk11",
2493
+ "9.1.1-jdk21",
2494
+ "8.3-ubuntu-jdk11",
2495
+ "9-jdk21",
2541
2496
  "7.19.29",
2542
- "7.19.28-ubuntu-jdk11",
2543
- "7.19.28-jdk11",
2544
- "7.19.28",
2545
- "7.19.27-ubuntu-jdk11",
2546
- "7.19.27-jdk11",
2547
- "7.19.27",
2548
- "7.19.26-ubuntu-jdk11",
2549
- "7.19.26-jdk11",
2550
- "7.19.25-jdk11",
2551
- "7.19.26",
2552
- "7.19.25-ubuntu-jdk11",
2553
- "7.19.25",
2554
- "7.19.24-ubuntu-jdk11",
2555
- "7.19.24-jdk11",
2556
- "7.19.24",
2497
+ "9-ubuntu-jdk21",
2498
+ "9.1",
2499
+ "jdk21",
2500
+ "7.19-ubuntu-jdk11",
2501
+ "8.9.0",
2502
+ "9.0-ubuntu-jdk21",
2503
+ "7.19",
2504
+ "9.1-jdk21",
2505
+ "8.2.3-jdk11",
2506
+ "8.2-jdk17",
2507
+ "8.2-jdk11",
2508
+ "9.1.1-ubuntu-jdk21",
2509
+ "9.0-jdk21",
2510
+ "8.2-ubuntu-jdk11",
2511
+ "8.3-jdk11",
2512
+ "ubuntu-jdk17",
2513
+ "9-ubuntu-jdk17",
2514
+ "7.19.29-ubuntu-jdk11",
2515
+ "8.2",
2516
+ "9.1-jdk17",
2517
+ "9.1.1-jdk17",
2518
+ "8.0.4-ubuntu-jdk17",
2519
+ "9.1.1",
2520
+ "9.0.3-ubuntu-jdk21",
2521
+ "8.5.8-ubi9",
2522
+ "8.0-ubuntu-jdk17",
2523
+ "8.9.2-jdk11",
2524
+ "8.2-ubuntu-jdk17",
2525
+ "8.9.0-jdk17",
2526
+ "8.1-jdk17",
2527
+ "8.0.4-jdk17",
2528
+ "8.6.1-jdk17",
2529
+ "8.1-ubuntu-jdk17",
2530
+ "8.6.1",
2531
+ "8.5.11-jdk11",
2532
+ "9.1.0-ubuntu-jdk21",
2533
+ "8.6.1-ubuntu-jdk17",
2534
+ "8.5.15",
2535
+ "8.9.4-ubi9",
2536
+ "8.5.17-ubi9-jdk17",
2537
+ "9.1.0-ubi9-jdk17",
2538
+ "9.0.1-ubi9",
2557
2539
  "7.19.23-ubuntu-jdk11",
2558
- "7.19.14",
2559
- "7.19.23-jdk11",
2560
- "7.19.23",
2561
- "latest",
2562
- "7.19.22-jdk11",
2563
- "7.19.22-ubuntu-jdk11",
2564
- "7.19.22",
2565
- "7.19.21-ubuntu-jdk11",
2566
- "7.19.21-jdk11",
2567
- "7.19.21",
2568
- "7.19.20",
2569
- "7.19.20-ubuntu-jdk11",
2570
- "7.19.20-jdk11",
2571
- "7.19.15-jdk11",
2572
- "7.19.2",
2573
- "7.19.1-ubuntu-jdk11",
2574
- "7.19.19-jdk11",
2575
- "7.19.19-ubuntu-jdk11",
2576
- "7.19.1-jdk11",
2577
- "7.19.19",
2540
+ "8.0.0-jdk11",
2541
+ "8.7.1-jdk11",
2542
+ "8.9.4-ubi9-jdk17",
2543
+ "8.7.1-ubuntu-jdk11",
2544
+ "8.1.1",
2578
2545
  "7.19.18-ubuntu-jdk11",
2579
- "7.19.18-jdk11",
2580
2546
  "7.19.18",
2581
- "7.19.17-ubuntu-jdk11",
2582
- "7.19.17",
2583
- "7.19.17-jdk11",
2584
- "7.19.16-ubuntu-jdk11",
2585
- "7.19.16-jdk11",
2586
- "7.19.16",
2587
- "7.19.14-ubuntu-jdk11",
2588
- "7.19.14-jdk11",
2589
- "7.19.15-ubuntu-jdk11",
2590
- "7.19.15",
2591
- "7.19.12-ubuntu-jdk11",
2592
- "7.19.12-jdk11",
2593
- "7.19.11-ubuntu-jdk11",
2594
- "7.19.11-jdk11",
2595
- "7.19.11",
2596
- "7.19.10-jdk11",
2547
+ "9.1.0-ubi9-jdk21",
2548
+ "8.5.17-ubi9",
2549
+ "8.1.1-ubuntu-jdk11",
2550
+ "7.19.23-jdk11",
2597
2551
  "7.19.12",
2598
- "7.19.10-ubuntu-jdk11",
2599
- "7.19",
2600
- "7.19.10",
2601
- "7.19.0-ubuntu-jdk11",
2602
- "7",
2603
- "7.19.0",
2604
- "7.19.0-jdk11",
2605
- "7.19.1",
2606
- "jdk21",
2607
- "9.1-jdk21",
2608
- "ubuntu-jdk21",
2609
- "9.1.1-ubuntu-jdk21",
2610
- "9.1-ubuntu-jdk21",
2611
- "9-ubuntu-jdk21",
2612
- "9-jdk21",
2552
+ "8.1.1-jdk11",
2553
+ "7.19.23",
2554
+ "8.0.1-jdk17",
2555
+ "8.5.15-ubuntu-jdk17",
2556
+ "8.9.2-ubuntu-jdk11",
2557
+ "8.5.0",
2558
+ "9.1.0-ubi9",
2559
+ "8.5.15-jdk17",
2560
+ "9.1.0-jdk21",
2561
+ "8.9.0-ubuntu-jdk17",
2562
+ "8.4.4-jdk11",
2563
+ "7.19.8",
2564
+ "8.0.1-ubuntu-jdk17",
2565
+ "7.19.12-jdk11",
2566
+ "7.19.12-ubuntu-jdk11",
2567
+ "8.2.1-jdk17",
2568
+ "8.5.11-ubuntu-jdk11",
2569
+ "8.2.1-ubuntu-jdk17",
2570
+ "8.0.0-ubuntu-jdk11",
2571
+ "8.9.8-ubi9-jdk17",
2572
+ "9.0.1-ubi9-jdk21",
2573
+ "8.0.0-ubuntu-jdk17",
2574
+ "8.5.7-ubuntu-jdk11",
2575
+ "8.0.0",
2576
+ "8.4.4-ubuntu-jdk11",
2577
+ "8.5.0-ubuntu-jdk17",
2578
+ "8.9.0-ubi9-jdk17",
2579
+ "7.19.18-jdk11",
2580
+ "8.4.0-jdk17",
2581
+ "8.5.5-jdk17",
2582
+ "8.4.0",
2583
+ "8.5.0-jdk17",
2584
+ "8.5.5-ubuntu-jdk17",
2585
+ "8.7.1-ubi9-jdk17",
2586
+ "8.0.2-ubuntu-jdk17",
2587
+ "8.0.2-jdk17",
2588
+ "8.0.0-jdk17",
2589
+ "7.19.8-ubuntu-jdk11",
2590
+ "8.5.7-jdk11",
2591
+ "8.1.1-jdk17",
2592
+ "8.4.0-ubuntu-jdk17",
2593
+ "7.19.8-jdk11",
2594
+ "8.5.12-ubi9-jdk17",
2595
+ "8.1.1-ubuntu-jdk17",
2596
+ "8.5.5",
2597
+ "8.5.12-ubi9",
2598
+ "8.9.6-ubuntu-jdk17",
2599
+ "8.9.8-ubi9",
2600
+ "8.5.9-ubi9",
2601
+ "9.1.1-ubi9-jdk17",
2602
+ "8.9.6",
2603
+ "9.1.1-ubi9-jdk21",
2613
2604
  "9.1.1-ubi9",
2614
- "ubi9",
2605
+ "8.7.1-ubi9",
2606
+ "8.9.6-jdk17",
2607
+ "8.9.0-ubi9",
2615
2608
  "ubi9-jdk21",
2616
- "9.1.1-ubi9-jdk21",
2617
- "9.1-jdk17",
2618
- "jdk17",
2619
- "ubuntu-jdk17",
2620
- "9-jdk17",
2621
- "9.1.1-ubuntu-jdk17",
2622
- "9-ubuntu-jdk17",
2623
- "9.1-ubuntu-jdk17",
2609
+ "8.9.5-ubi9",
2610
+ "8.5.9-ubi9-jdk17",
2611
+ "9.0.2-ubi9-jdk21",
2612
+ "8.7.2-ubi9",
2613
+ "8.9.5-ubi9-jdk17",
2614
+ "ubi9",
2624
2615
  "ubi9-jdk17",
2625
- "9.1.1-ubi9-jdk17",
2616
+ "8.5.6-ubi9-jdk17",
2617
+ "8.7.2-ubi9-jdk17",
2618
+ "8.5.14-ubi9",
2619
+ "8.5.14-ubi9-jdk17",
2620
+ "8.6.0-ubi9-jdk17",
2626
2621
  "9.0.1-ubi9-jdk17",
2627
- "8.9.5-ubi9-jdk17",
2628
- "8.9.5-ubi9",
2629
2622
  "8.9.1-ubi9-jdk17",
2630
2623
  "8.9.1-ubi9",
2631
- "8.7.2-ubi9-jdk17",
2632
- "8.7.2-ubi9",
2633
- "8.6.0-ubi9-jdk17",
2624
+ "8.5.6-ubi9",
2634
2625
  "8.6.0-ubi9",
2635
- "8.5.14-ubi9-jdk17",
2636
- "8.5.14-ubi9",
2626
+ "9.2.0-beta3-ubuntu-jdk17",
2627
+ "9.2.0-beta3-jdk17",
2628
+ "eap-ubuntu-jdk17",
2629
+ "eap",
2630
+ "9.2.0-beta3",
2631
+ "eap-jdk17",
2632
+ "9.2.0-beta3-jdk21",
2633
+ "9.2.0-beta3-ubuntu-jdk21",
2634
+ "9.2.0-beta3-ubi9",
2635
+ "9.2.0-beta3-ubi9-jdk21",
2636
+ "9.2.0-beta3-ubi9-jdk17",
2637
+ "9.2.0-beta2-ubuntu-jdk21",
2638
+ "9.2.0-beta2-jdk21",
2639
+ "9.2.0-beta2-jdk17",
2640
+ "9.2.0-beta2",
2641
+ "9.2.0-beta2-ubuntu-jdk17",
2642
+ "9.2.0-beta2-ubi9-jdk17",
2643
+ "9.2.0-beta2-ubi9-jdk21",
2644
+ "9.2.0-beta2-ubi9",
2637
2645
  "9.2.0-m07-ubuntu-jdk21",
2638
2646
  "9.2.0-m07-jdk17",
2639
2647
  "9.2.0-m07",
@@ -7711,83 +7719,119 @@ var mysql = [
7711
7719
  ];
7712
7720
  var postgresql = [
7713
7721
  "latest",
7714
- "12.21-bookworm",
7715
- "12.21",
7722
+ "12.22-bookworm",
7723
+ "12.22",
7716
7724
  "12-bookworm",
7717
7725
  "12",
7726
+ "15.10-bookworm",
7727
+ "15.10",
7728
+ "15-bookworm",
7729
+ "15",
7730
+ "14.15-bookworm",
7731
+ "14.15-alpine3.20",
7732
+ "14.15-alpine",
7733
+ "14.15",
7734
+ "14-bookworm",
7735
+ "14-alpine3.20",
7736
+ "14-alpine",
7737
+ "14",
7738
+ "13.18-bullseye",
7739
+ "13.18-bookworm",
7740
+ "13.18-alpine3.20",
7741
+ "13.18-alpine3.19",
7742
+ "13.18-alpine",
7743
+ "13.18",
7744
+ "13-bullseye",
7745
+ "13-bookworm",
7746
+ "13-alpine3.20",
7747
+ "13-alpine3.19",
7748
+ "13-alpine",
7749
+ "13",
7750
+ "12.22-bullseye",
7751
+ "12.22-alpine3.20",
7752
+ "12.22-alpine3.19",
7753
+ "12.22-alpine",
7754
+ "12-bullseye",
7755
+ "12-alpine3.20",
7756
+ "12-alpine3.19",
7757
+ "12-alpine",
7758
+ "bullseye",
7759
+ "bookworm",
7760
+ "alpine3.20",
7761
+ "alpine3.19",
7762
+ "alpine",
7763
+ "17.2-bullseye",
7764
+ "17.2-bookworm",
7765
+ "17.2-alpine3.20",
7766
+ "17.2-alpine3.19",
7767
+ "17.2-alpine",
7768
+ "17.2",
7769
+ "17-bullseye",
7770
+ "17-bookworm",
7771
+ "17-alpine3.20",
7772
+ "17-alpine3.19",
7773
+ "17-alpine",
7774
+ "17",
7775
+ "16.6-bullseye",
7776
+ "16.6-bookworm",
7777
+ "16.6-alpine3.20",
7778
+ "16.6-alpine3.19",
7779
+ "16.6-alpine",
7780
+ "16.6",
7781
+ "16-bullseye",
7782
+ "16-bookworm",
7783
+ "16-alpine3.20",
7784
+ "16-alpine3.19",
7785
+ "16-alpine",
7786
+ "16",
7787
+ "15.10-bullseye",
7788
+ "15.10-alpine3.20",
7789
+ "15.10-alpine3.19",
7790
+ "15.10-alpine",
7791
+ "15-bullseye",
7792
+ "15-alpine3.20",
7793
+ "15-alpine3.19",
7794
+ "15-alpine",
7795
+ "14.15-bullseye",
7796
+ "14.15-alpine3.19",
7797
+ "14-bullseye",
7798
+ "14-alpine3.19",
7799
+ "12.21-bookworm",
7800
+ "12.21",
7718
7801
  "15.9-bullseye",
7719
7802
  "15.9-bookworm",
7720
7803
  "15.9-alpine3.20",
7721
7804
  "15.9-alpine3.19",
7722
7805
  "15.9-alpine",
7723
7806
  "15.9",
7724
- "15-bullseye",
7725
- "15-bookworm",
7726
- "15-alpine3.20",
7727
- "15-alpine3.19",
7728
- "15-alpine",
7729
- "15",
7730
7807
  "14.14-bullseye",
7731
7808
  "14.14-bookworm",
7732
7809
  "14.14-alpine3.20",
7733
7810
  "14.14-alpine3.19",
7734
7811
  "14.14-alpine",
7735
7812
  "14.14",
7736
- "14-bullseye",
7737
- "14-bookworm",
7738
- "14-alpine3.20",
7739
- "14-alpine3.19",
7740
- "14-alpine",
7741
- "14",
7742
7813
  "13.17-bullseye",
7743
7814
  "13.17-bookworm",
7744
7815
  "13.17-alpine3.20",
7745
7816
  "13.17-alpine3.19",
7746
7817
  "13.17-alpine",
7747
7818
  "13.17",
7748
- "13-bullseye",
7749
- "13-bookworm",
7750
- "13-alpine3.20",
7751
- "13-alpine3.19",
7752
- "13-alpine",
7753
- "13",
7754
7819
  "12.21-bullseye",
7755
7820
  "12.21-alpine3.20",
7756
7821
  "12.21-alpine3.19",
7757
7822
  "12.21-alpine",
7758
- "12-bullseye",
7759
- "12-alpine3.20",
7760
- "12-alpine3.19",
7761
- "12-alpine",
7762
- "bullseye",
7763
- "bookworm",
7764
- "alpine3.20",
7765
- "alpine3.19",
7766
- "alpine",
7767
7823
  "17.1-bullseye",
7768
7824
  "17.1-bookworm",
7769
7825
  "17.1-alpine3.20",
7770
7826
  "17.1-alpine3.19",
7771
7827
  "17.1-alpine",
7772
7828
  "17.1",
7773
- "17-bullseye",
7774
- "17-bookworm",
7775
- "17-alpine3.20",
7776
- "17-alpine3.19",
7777
- "17-alpine",
7778
- "17",
7779
7829
  "16.5-bullseye",
7780
7830
  "16.5-bookworm",
7781
7831
  "16.5-alpine3.20",
7782
7832
  "16.5-alpine3.19",
7783
7833
  "16.5-alpine",
7784
7834
  "16.5",
7785
- "16-bullseye",
7786
- "16-bookworm",
7787
- "16-alpine3.20",
7788
- "16-alpine3.19",
7789
- "16-alpine",
7790
- "16",
7791
7835
  "14.13-alpine3.20",
7792
7836
  "14.13-alpine",
7793
7837
  "13.16-alpine3.20",
@@ -9336,7 +9380,8 @@ let Base$1 = class Base {
9336
9380
  log: false
9337
9381
  });
9338
9382
  return result.data.services.find(item => {
9339
- const [, service] = item.name.split('-');
9383
+ const parts = item.name.split('-');
9384
+ const service = parts[parts.length - 2];
9340
9385
  return service === this.options.name;
9341
9386
  });
9342
9387
  }
@@ -9625,7 +9670,8 @@ class Base {
9625
9670
  log: false
9626
9671
  });
9627
9672
  return result.data.services.find(item => {
9628
- const [, service] = item.name.split('-');
9673
+ const parts = item.name.split('-');
9674
+ const service = parts[parts.length - 2];
9629
9675
  return service === this.name;
9630
9676
  });
9631
9677
  }
@@ -10113,4 +10159,4 @@ process.on('SIGINT', () => {
10113
10159
  console.log(`Received term signal, trying to stop gracefully 💪`);
10114
10160
  gracefulExit();
10115
10161
  });
10116
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzZXQuanMiLCJzb3VyY2VzIjpbIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvQWN0aW9uSGFuZGxlci5qcyIsIi4uLy4uL2Rpc3Qvc3JjL3R5cGVzL0RhdGFiYXNlLmpzIiwiLi4vLi4vZGlzdC9zcmMvdHlwZXMvQXBwbGljYXRpb24uanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2FtcHMuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2xpY2VuY2VzLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy90b0Fic29sdXRlUGF0aC5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvbmV0d29yay5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2RhdGFiYXNlcy9iYXNlLmpzIiwiLi4vLi4vZGlzdC9zcmMvZGF0YWJhc2VzL21zc3FsLmpzIiwiLi4vLi4vZGlzdC9zcmMvZGF0YWJhc2VzL215c3FsLmpzIiwiLi4vLi4vZGlzdC9zcmMvZGF0YWJhc2VzL3Bvc3RncmVzLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9nZXREYXRhYmFzZUVuZ2luZS5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvZ2V0Wm9kRGVmYXVsdHMuanMiLCIuLi8uLi9kaXN0L3NyYy9hcHBsaWNhdGlvbnMvYmFzZS5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2FwcGxpY2F0aW9ucy9iYW1ib28uanMiLCIuLi8uLi9kaXN0L3NyYy9hcHBsaWNhdGlvbnMvYml0YnVja2V0LmpzIiwiLi4vLi4vZGlzdC9zcmMvYXBwbGljYXRpb25zL2NvbmZsdWVuY2UuanMiLCIuLi8uLi9kaXN0L3NyYy9hcHBsaWNhdGlvbnMvamlyYS5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvZ2V0QXBwbGljYXRpb24uanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2dldFZlcnNpb25zLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9zaG93SGVscFdpdGhEZWZhdWx0Q29tbWFuZE9wdGlvbnMuanMiLCIuLi8uLi9kaXN0L3NyYy9jb21tYW5kcy9yZXNldC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3luY0V4aXRIb29rLCBncmFjZWZ1bEV4aXQgfSBmcm9tICdleGl0LWhvb2snO1xuaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5leHBvcnQgY29uc3QgQWN0aW9uSGFuZGxlciA9IGFzeW5jIChwcm9ncmFtLCB7IGFjdGlvbiwgZXJyb3JIYW5kbGVyIH0sIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBvcHMgPSBvcHRpb25zIHx8IHByb2dyYW0ub3B0cygpO1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHtcbiAgICAgICAgbGV0IGVycm9yTWVzc2FnZSA9ICcnO1xuICAgICAgICBhc3luY0V4aXRIb29rKGFzeW5jIChjb2RlKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChjb2RlICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGVycm9ySGFuZGxlcihvcHMpLmNhdGNoKCgpID0+IG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2UudHJpbSgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdlIGFyZSByZWplY3RpbmcgdGhlIHByb21pc2UgdG8gYXZvaWQgdGhlXG4gICAgICAgICAgICAgICAgICAgIC8vIFwiQ2FsbGluZyBwcm9jZXNzLmV4aXRcIiBsb2cgbWVzc2FnZSBmcm9tIGV4aXQtaG9va1xuICAgICAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogZXJyO1xuICAgICAgICAgICAgICAgIHJlamVjdChtZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgd2FpdDogNjAgKiAxICogMTAwMFxuICAgICAgICB9KTtcbiAgICAgICAgYWN0aW9uKG9wcykuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiB6LlpvZEVycm9yKSB7XG4gICAgICAgICAgICAgICAgZXJyLmlzc3Vlcy5mb3JFYWNoKGlzc3VlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlICs9IGBVbmFibGUgdG8gcGFyc2Ugb3B0aW9uICR7aXNzdWUucGF0aC5qb2luKCcsJyl9OiAke2lzc3VlLm1lc3NhZ2V9XFxuYDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yIHx8IHR5cGVvZiBlcnIgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gZXJyLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBncmFjZWZ1bEV4aXQoMSk7XG4gICAgICAgIH0pO1xuICAgIH0pLmNhdGNoKG1lc3NhZ2UgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcHJvZ3JhbS5lcnJvcihtZXNzYWdlKTtcbiAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGVycm9yIG1lc3NhZ2UsXG4gICAgICAgICAgICAvLyB3ZSBjYW4gYXNzdW1lIGEgY2xlYW4gZXhpdFxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuIiwiaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5pbXBvcnQgdmVyc2lvbnMgZnJvbSAnLi4vLi4vYXNzZXRzL3ZlcnNpb25zLmpzb24nO1xuZXhwb3J0IGNvbnN0IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyA9IHouZW51bShbXG4gICAgJ3Bvc3RncmVzcWwnLFxuICAgICdteXNxbCcsXG4gICAgJ21zc3FsJ1xuXSk7XG5leHBvcnQgY29uc3QgU3VwcG9ydGVkTVNTUUxFZGl0aW9ucyA9IHouZW51bShbXG4gICAgJ0RldmVsb3BlcicsXG4gICAgJ0V4cHJlc3MnLFxuICAgICdTdGFuZGFyZCcsXG4gICAgJ0VudGVycHJpc2UnLFxuICAgICdFbnRlcnByaXNlQ29yZSdcbl0pO1xuZXhwb3J0IGNvbnN0IERhdGFiYXNlT3B0aW9ucyA9IHoub2JqZWN0KHtcbiAgICBuYW1lOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMsXG4gICAgcG9ydDogei5udW1iZXIoKS5vcih6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkpLFxuICAgIGRhdGFiYXNlOiB6LnN0cmluZygpLmRlZmF1bHQoJ2RjZHgnKSxcbiAgICB1c2VybmFtZTogei5zdHJpbmcoKS5kZWZhdWx0KCdkY2R4JyksXG4gICAgcGFzc3dvcmQ6IHouc3RyaW5nKCkuZGVmYXVsdCgnZGNkeCcpLFxuICAgIGNsZWFuOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBwcnVuZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgdmVyYm9zZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgZHJpdmVyOiB6LnN0cmluZygpXG59KTtcbmV4cG9ydCBjb25zdCBQb3N0Z3JlU1FMT3B0aW9ucyA9IERhdGFiYXNlT3B0aW9ucy5leHRlbmQoe1xuICAgIG5hbWU6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLnBvc3RncmVzcWwpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKSxcbiAgICB0YWc6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gdmVyc2lvbnNbU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsXS5pbmNsdWRlcyhpdGVtKSkuZGVmYXVsdCgnbGF0ZXN0JyksXG4gICAgcG9ydDogei5udW1iZXIoKS5vcih6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkpLmRlZmF1bHQoNTQzMiksXG4gICAgZHJpdmVyOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IGl0ZW0gPT09ICdvcmcucG9zdGdyZXNxbC5Ecml2ZXInKS5kZWZhdWx0KCdvcmcucG9zdGdyZXNxbC5Ecml2ZXInKVxufSk7XG5leHBvcnQgY29uc3QgTXlTUUxPcHRpb25zID0gRGF0YWJhc2VPcHRpb25zLmV4dGVuZCh7XG4gICAgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLnJlZmluZShpdGVtID0+IGl0ZW0gPT09IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWwpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5teXNxbCksXG4gICAgdGFnOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IHZlcnNpb25zW1N1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWxdLmluY2x1ZGVzKGl0ZW0pKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBwb3J0OiB6Lm51bWJlcigpLm9yKHouc3RyaW5nKCkudHJhbnNmb3JtKE51bWJlcikucmVmaW5lKGl0ZW0gPT4gIWlzTmFOKGl0ZW0pKSkuZGVmYXVsdCgzMzA2KSxcbiAgICBkcml2ZXI6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gJ2NvbS5teXNxbC5qZGJjLkRyaXZlcicpLmRlZmF1bHQoJ2NvbS5teXNxbC5qZGJjLkRyaXZlcicpXG59KTtcbmV4cG9ydCBjb25zdCBNU1NRTE9wdGlvbnMgPSBEYXRhYmFzZU9wdGlvbnMuZXh0ZW5kKHtcbiAgICBuYW1lOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbCkuZGVmYXVsdChTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm1zc3FsKSxcbiAgICB0YWc6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gdmVyc2lvbnNbU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbF0uaW5jbHVkZXMoaXRlbSkpLmRlZmF1bHQoJ2xhdGVzdCcpLFxuICAgIGVkaXRpb246IFN1cHBvcnRlZE1TU1FMRWRpdGlvbnMuZGVmYXVsdCgnRGV2ZWxvcGVyJyksXG4gICAgcG9ydDogei5udW1iZXIoKS5vcih6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkpLmRlZmF1bHQoMTQzMyksXG4gICAgdXNlcm5hbWU6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gJ3NhJykuZGVmYXVsdCgnc2EnKSxcbiAgICBwYXNzd29yZDogei5zdHJpbmcoKS5kZWZhdWx0KCdEYXRhQ2VudGVyRFghJyksXG4gICAgZHJpdmVyOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IGl0ZW0gPT09ICdjb20ubWljcm9zb2Z0LnNxbHNlcnZlci5qZGJjLlNRTFNlcnZlckRyaXZlcicpLmRlZmF1bHQoJ2NvbS5taWNyb3NvZnQuc3Fsc2VydmVyLmpkYmMuU1FMU2VydmVyRHJpdmVyJylcbn0pO1xuIiwiaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5pbXBvcnQgeyBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMgfSBmcm9tICcuL0RhdGFiYXNlJztcbmV4cG9ydCBjb25zdCBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgPSB6LmVudW0oW1xuICAgICdqaXJhJyxcbiAgICAnY29uZmx1ZW5jZScsXG4gICAgJ2JpdGJ1Y2tldCcsXG4gICAgJ2JhbWJvbydcbl0pO1xuZXhwb3J0IGNvbnN0IEFwcGxpY2F0aW9uT3B0aW9ucyA9IHoub2JqZWN0KHtcbiAgICBuYW1lOiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMsXG4gICAgdGFnOiB6LnN0cmluZygpLmRlZmF1bHQoJ2xhdGVzdCcpLFxuICAgIGRhdGFiYXNlOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuZGVmYXVsdCgncG9zdGdyZXNxbCcpLFxuICAgIGRhdGFiYXNlVGFnOiB6LnN0cmluZygpLmRlZmF1bHQoJ2xhdGVzdCcpLFxuICAgIHBvcnQ6IHouc3RyaW5nKCkudHJhbnNmb3JtKE51bWJlcikucmVmaW5lKGl0ZW0gPT4gIWlzTmFOKGl0ZW0pKS5kZWZhdWx0KCc4MCcpLFxuICAgIGNvbnRleHRQYXRoOiB6LnN0cmluZygpLFxuICAgIHhtczogei5zdHJpbmcoKS5kZWZhdWx0KCcxMDI0bScpLFxuICAgIHhteDogei5zdHJpbmcoKS5kZWZhdWx0KCcxMDI0bScpLFxuICAgIHdhdGNoOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBleHQ6IHouYXJyYXkoei5zdHJpbmcoKSksXG4gICAgaW5zdGFsbDogei5ib29sZWFuKCksXG4gICAgb3V0cHV0RGlyZWN0b3J5OiB6LnN0cmluZygpLFxuICAgIGFjdGl2YXRlUHJvZmlsZXM6IHouc3RyaW5nKCksXG4gICAgY2xlYW46IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIHBydW5lOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBkZWJ1Zzogei5ib29sZWFuKCkuZGVmYXVsdCh0cnVlKSxcbiAgICBjd2Q6IHouc3RyaW5nKClcbn0pLnBhcnRpYWwoe1xuICAgIGNvbnRleHRQYXRoOiB0cnVlLFxuICAgIGV4dDogdHJ1ZSxcbiAgICBpbnN0YWxsOiB0cnVlLFxuICAgIG91dHB1dERpcmVjdG9yeTogdHJ1ZSxcbiAgICBhY3RpdmF0ZVByb2ZpbGVzOiB0cnVlLFxuICAgIGN3ZDogdHJ1ZVxufSk7XG4iLCJpbXBvcnQgeyBET01QYXJzZXIsIFhNTFNlcmlhbGl6ZXIgfSBmcm9tICdAeG1sZG9tL3htbGRvbSc7XG5pbXBvcnQgeyBzcGF3biB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgWE1MUGFyc2VyIH0gZnJvbSAnZmFzdC14bWwtcGFyc2VyJztcbmltcG9ydCB7IGV4aXN0c1N5bmMsIHJlYWRGaWxlU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdwYXRoJztcbmltcG9ydCB7IGN3ZCB9IGZyb20gJ3Byb2Nlc3MnO1xuaW1wb3J0IHhwYXRoIGZyb20gJ3hwYXRoJztcbmltcG9ydCB7IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0FwcGxpY2F0aW9uJztcbmV4cG9ydCBjbGFzcyBBTVBTIHtcbiAgICBvcHRpb25zO1xuICAgIG1hdmVuID0gbnVsbDtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0ge1xuICAgICAgICBwcm9maWxlczogW11cbiAgICB9KSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQdWJsaWMgTWV0aG9kc1xuICAgIHN0b3AoKSB7XG4gICAgICAgIGlmICh0aGlzLm1hdmVuKSB7XG4gICAgICAgICAgICBjb25zdCBraWxsZWQgPSB0aGlzLm1hdmVuLmtpbGwoMCk7XG4gICAgICAgICAgICBpZiAoIWtpbGxlZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHRlcm1pbmF0ZSBleGlzdGluZyBNYXZlbiBwcm9jZXNzJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgYnVpbGQoYXJncykge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMubWF2ZW4pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBraWxsZWQgPSB0aGlzLm1hdmVuLmtpbGwoMCk7XG4gICAgICAgICAgICAgICAgaWYgKCFraWxsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignRmFpbGVkIHRvIHRlcm1pbmF0ZSBleGlzdGluZyBNYXZlbiBwcm9jZXNzJykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubWF2ZW4gPSBzcGF3bignbXZuJywgWydwYWNrYWdlJywgLi4uYXJnc10sIHsgY3dkOiB0aGlzLm9wdGlvbnM/LmN3ZCB8fCBjd2QoKSwgc3RkaW86ICdpbmhlcml0JyB9KTtcbiAgICAgICAgICAgIHRoaXMubWF2ZW4ub24oJ2V4aXQnLCAoY29kZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubWF2ZW4gPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChjb2RlID09PSAwIHx8IGNvZGUgPT09IDEzMCkge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBNYXZlbiBleGl0ZWQgd2l0aCBjb2RlICR7Y29kZX1gKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpc0F0bGFzc2lhblBsdWdpbiA9ICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy5nZXROb2RlcygnLy8qW2xvY2FsLW5hbWUoKT1cXCdwYWNrYWdpbmdcXCddJyk7XG4gICAgICAgICAgICByZXR1cm4gbm9kZXMuc29tZShpdGVtID0+IGl0ZW0udGV4dENvbnRlbnQgPT09ICdhdGxhc3NpYW4tcGx1Z2luJyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBnZXRBcHBsaWNhdGlvblZlcnNpb24oKSB7XG4gICAgICAgIGNvbnN0IGFwcGxpY2F0aW9ucyA9IHRoaXMuZ2V0QXBwbGljYXRpb25zKCk7XG4gICAgICAgIGlmIChhcHBsaWNhdGlvbnMuc2l6ZSA9PT0gMSkge1xuICAgICAgICAgICAgY29uc3QgWywgdmVyc2lvbl0gPSBBcnJheS5mcm9tKGFwcGxpY2F0aW9ucylbMF07XG4gICAgICAgICAgICByZXR1cm4gdmVyc2lvbjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChhcHBsaWNhdGlvbnMuc2l6ZSA+IDEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIEF0bGFzc2lhbiBQbHVnaW4gcHJvamVjdCBjb250YWlucyBtdWx0aXBsZSBBTVBTIGNvbmZpZ3VyYXRpb24sIHVuYWJsZSB0byBkZWNpZGUgd2hpY2ggcHJvZHVjdCB0byB1c2Ug8J+YsCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGdldEFwcGxpY2F0aW9uKCkge1xuICAgICAgICBjb25zdCBhcHBsaWNhdGlvbnMgPSB0aGlzLmdldEFwcGxpY2F0aW9ucygpO1xuICAgICAgICBpZiAoYXBwbGljYXRpb25zLnNpemUgPT09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IFtuYW1lXSA9IEFycmF5LmZyb20oYXBwbGljYXRpb25zKVswXTtcbiAgICAgICAgICAgIHJldHVybiBuYW1lO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGFwcGxpY2F0aW9ucy5zaXplID4gMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgQXRsYXNzaWFuIFBsdWdpbiBwcm9qZWN0IGNvbnRhaW5zIG11bHRpcGxlIEFNUFMgY29uZmlndXJhdGlvbiwgdW5hYmxlIHRvIGRlY2lkZSB3aGljaCBwcm9kdWN0IHRvIHVzZSDwn5iwJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGdldEFwcGxpY2F0aW9ucygpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IE1hcCgpO1xuICAgICAgICBjb25zdCBub2RlcyA9IHRoaXMuZ2V0Tm9kZXMoJy8vKltsb2NhbC1uYW1lKCk9XFwnZ3JvdXBJZFxcJyBhbmQgdGV4dCgpPVxcJ2NvbS5hdGxhc3NpYW4ubWF2ZW4ucGx1Z2luc1xcJ10nKTtcbiAgICAgICAgY29uc3Qgbm9kZXNXaXRoQWN0aXZlUHJvZmlsZSA9IG5vZGVzLmZpbHRlcihub2RlID0+IHRoaXMuaXNBY3RpdmF0ZWRQcm9maWxlKG5vZGUpKTtcbiAgICAgICAgbm9kZXNXaXRoQWN0aXZlUHJvZmlsZS5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICAgICAgICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBwbHVnaW4gfSA9IHRoaXMudG9PYmplY3QocGFyZW50Tm9kZSk7XG4gICAgICAgICAgICAgICAgaWYgKCdhbXBzLW1hdmVuLXBsdWdpbicgPT09IHBsdWdpbj8uYXJ0aWZhY3RJZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGNvbmZpZ3VyYXRpb24gfSA9IHBsdWdpbiB8fCB7fTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjb25maWd1cmF0aW9uPy5wcm9kdWN0cykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLnByb2R1Y3RzLmZvckVhY2goKHByb2R1Y3QpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3VwcG9ydGVkQXBwbGljYXRpb24gPSB0aGlzLmdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHByb2R1Y3QuaWQpIHx8IHRoaXMuZ2V0U3VwcG9ydGVkQXBwbGljYXRpb24ocHJvZHVjdC5pbnN0YW5jZUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRlZEFwcGxpY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5kb1Byb3BlcnR5UmVwbGFjZW1lbnQocHJvZHVjdC52ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldChzdXBwb3J0ZWRBcHBsaWNhdGlvbiwgdmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcHJvZHVjdCB9ID0gY29uZmlndXJhdGlvbj8ucHJvZHVjdHMgfHwge307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb2R1Y3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3VwcG9ydGVkQXBwbGljYXRpb24gPSB0aGlzLmdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHByb2R1Y3QuaWQpIHx8IHRoaXMuZ2V0U3VwcG9ydGVkQXBwbGljYXRpb24ocHJvZHVjdC5pbnN0YW5jZUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRlZEFwcGxpY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5kb1Byb3BlcnR5UmVwbGFjZW1lbnQocHJvZHVjdC52ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldChzdXBwb3J0ZWRBcHBsaWNhdGlvbiwgdmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1cHBvcnRlZEFwcGxpY2F0aW9uID0gdGhpcy5nZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbihwbHVnaW4/LmFydGlmYWN0SWQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5nZXRWZXJzaW9uKG5vZGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3VwcG9ydGVkQXBwbGljYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQoc3VwcG9ydGVkQXBwbGljYXRpb24sIHZlcnNpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZhdGUgTWV0aG9kc1xuICAgIGdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZT8uaW5jbHVkZXMoU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5qaXJhKSkge1xuICAgICAgICAgICAgcmV0dXJuIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuamlyYTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWx1ZT8uaW5jbHVkZXMoU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5jb25mbHVlbmNlKSkge1xuICAgICAgICAgICAgcmV0dXJuIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuY29uZmx1ZW5jZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWx1ZT8uaW5jbHVkZXMoU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iYW1ib28pKSB7XG4gICAgICAgICAgICByZXR1cm4gU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iYW1ib287XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsdWU/LmluY2x1ZGVzKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYml0YnVja2V0KSkge1xuICAgICAgICAgICAgcmV0dXJuIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYml0YnVja2V0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBnZXRWZXJzaW9uKG5vZGUpIHtcbiAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICAgICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgcGx1Z2luIH0gPSB0aGlzLnRvT2JqZWN0KHBhcmVudE5vZGUpO1xuICAgICAgICAgICAgY29uc3QgeyBjb25maWd1cmF0aW9uIH0gPSBwbHVnaW4gfHwge307XG4gICAgICAgICAgICBpZiAoY29uZmlndXJhdGlvbj8ucHJvZHVjdFZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb1Byb3BlcnR5UmVwbGFjZW1lbnQocGx1Z2luLmNvbmZpZ3VyYXRpb24ucHJvZHVjdFZlcnNpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY29uZmlndXJhdGlvbj8ucHJvZHVjdHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9kdWN0ID0gQXJyYXkuaXNBcnJheShjb25maWd1cmF0aW9uPy5wcm9kdWN0cykgPyBjb25maWd1cmF0aW9uPy5wcm9kdWN0c1swXSA6IGNvbmZpZ3VyYXRpb24ucHJvZHVjdHMucHJvZHVjdDtcbiAgICAgICAgICAgICAgICBpZiAocHJvZHVjdCAmJiBwcm9kdWN0LnZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHByb2R1Y3QudmVyc2lvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGRvUHJvcGVydHlSZXBsYWNlbWVudCh2YWx1ZSkge1xuICAgICAgICBsZXQgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgIC8vIElmIHRoZXJlIGlzIGEgcHJvZmlsZSwgcmVwbGFjZSBwcm9maWxlIHByb3BlcnRpZXMgZmlyc3QgYXMgdGhleSB0YWtlIHByZWNlZGVuY2VcbiAgICAgICAgY29uc3QgcHJvZmlsZVByb3BlcnRpZXMgPSB0aGlzLmdldFByb3BlcnRpZXMoKTtcbiAgICAgICAgT2JqZWN0LmVudHJpZXMocHJvZmlsZVByb3BlcnRpZXMpLmZvckVhY2goKFtwcm9wZXJ0eUtleSwgcHJvcGVydHlWYWx1ZV0pID0+IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlQWxsKGAkXFx7JHtwcm9wZXJ0eUtleX19YCwgcHJvcGVydHlWYWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5nZXRQcm9wZXJ0aWVzKCk7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHByb3BlcnRpZXMpLmZvckVhY2goKFtwcm9wZXJ0eUtleSwgcHJvcGVydHlWYWx1ZV0pID0+IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlQWxsKGAkXFx7JHtwcm9wZXJ0eUtleX19YCwgcHJvcGVydHlWYWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBnZXRQcm9wZXJ0aWVzKCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSB0aGlzLmdldE5vZGVzKCcvLypbbG9jYWwtbmFtZSgpPVxcJ3Byb3BlcnRpZXNcXCddJyk7XG4gICAgICAgIGNvbnN0IG5vZGVzV2l0aEFjdGl2ZVByb2ZpbGUgPSBub2Rlcy5maWx0ZXIobm9kZSA9PiB0aGlzLmlzQWN0aXZhdGVkUHJvZmlsZShub2RlKSk7XG4gICAgICAgIG5vZGVzV2l0aEFjdGl2ZVByb2ZpbGUuZm9yRWFjaChub2RlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgcHJvcGVydGllcyB9ID0gdGhpcy50b09iamVjdChub2RlKTtcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHByb3BlcnRpZXMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4gcmVzdWx0W2tleV0gPSB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBnZXROb2RlcyhleHByZXNzaW9uLCBzaW5nbGUpIHtcbiAgICAgICAgY29uc3QgcG9tRmlsZVBhdGggPSBqb2luKHRoaXMub3B0aW9ucz8uY3dkIHx8IGN3ZCgpLCAnLi9wb20ueG1sJyk7XG4gICAgICAgIGNvbnN0IGhhc1BvbUZpbGUgPSBleGlzdHNTeW5jKHBvbUZpbGVQYXRoKTtcbiAgICAgICAgaWYgKGhhc1BvbUZpbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHhtbCA9IHJlYWRGaWxlU3luYyhwb21GaWxlUGF0aCwgJ3V0ZjgnKTtcbiAgICAgICAgICAgIGNvbnN0IGRvYyA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoeG1sLCAndGV4dC94bWwnKTtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gc2luZ2xlID8geHBhdGguc2VsZWN0KGV4cHJlc3Npb24sIGRvYywgdHJ1ZSkgOiB4cGF0aC5zZWxlY3QoZXhwcmVzc2lvbiwgZG9jLCBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShub2RlcykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChzaW5nbGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICB0b09iamVjdChub2RlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZXIgPSBuZXcgWE1MUGFyc2VyKCk7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VyLnBhcnNlKG5ldyBYTUxTZXJpYWxpemVyKCkuc2VyaWFsaXplVG9TdHJpbmcobm9kZSkpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZpbmRQYXJlbnROb2RlQnlUYWdOYW1lKHRhZ05hbWUsIG5vZGUpIHtcbiAgICAgICAgY29uc3QgeyBwYXJlbnROb2RlIH0gPSBub2RlO1xuICAgICAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgaWYgKHBhcmVudE5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gdGFnTmFtZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudE5vZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5maW5kUGFyZW50Tm9kZUJ5VGFnTmFtZSh0YWdOYW1lLCBwYXJlbnROb2RlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaXNBY3RpdmF0ZWRQcm9maWxlKG5vZGUpIHtcbiAgICAgICAgY29uc3QgcHJvZmlsZVBhcmVudE5vZGUgPSB0aGlzLmZpbmRQYXJlbnROb2RlQnlUYWdOYW1lKCdwcm9maWxlJywgbm9kZSk7XG4gICAgICAgIGNvbnN0IHByb2ZpbGVOb2RlID0gcHJvZmlsZVBhcmVudE5vZGUgPyB0aGlzLnRvT2JqZWN0KHByb2ZpbGVQYXJlbnROb2RlKSA6IG51bGw7XG4gICAgICAgIGlmICghcHJvZmlsZU5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHByb2ZpbGVOb2RlICYmIChwcm9maWxlTm9kZS5hY3RpdmVCeURlZmF1bHQgPT09ICd0cnVlJyB8fCB0aGlzLm9wdGlvbnMucHJvZmlsZXMuaW5jbHVkZXMocHJvZmlsZU5vZGUucHJvZmlsZS5pZCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsImV4cG9ydCBjb25zdCB0aW1lYm9tYiA9IHtcbiAgICAnamlyYSc6ICdBQUFDQkEwT0RBb1BlTnA5a2wxdjJqQVVodS96SzQ2ME95UUhTTHVWSWtVYVRid05WQktVaEVuYnVnc1REdUEyc1NQYmdiRmZQeE9DMWkrNHlFWE81K3ZuUFIreUdpR1NXL0N1b1hjN3ZCb012VDRFTkFPdjUvV2N0VUlVRzFsVnFOeDducVBRU0pmY2NDbDhHbVUwbVNYamxEcFJYUzVReGF1NVJxVjkwbmNDS1F6TFRjUks5RXU5NDRJcC9jUS9NMU13clRrVGJpNUxaMWFyZk1NMGhzeWc3L1g2QTlMdkU4OXoyajNadnNKbVFCQlBwelFKeHFQN1U0citxYmphTjMyekcrL2JhUjJkTWw2YzM1ZWkycUlhaC80ZHZhSGtPdnpwa1UveDVJWjh2Ym9kT0k5Y01iZFNjbG5ueGozOEVDMVhac2NVdW5ZeTM2SnZWSTNPeEdabWJaWGR6d0lVNWxWSldpOTBybmpWUUdvaTcwQjg3M0dOaFBPUU81MU9GR2ZrUzV5UVdSS0g4eUFieHhHWnA5UW0vRUNocGJHRXhSN01CcUdkQWxUa2Nva0s3TU1lTVRmd2EyTk05VERzZHRmU2ZRR25XeHc3Q0I0N2Zyc1FTaERTd0pKcm8vaWlObWduY3cxR1FsNXJJMHRydGV0WTRzS2dZQ0ovWTRxVkZTUjBsTkdRM1AwNGFEeHJUS3ZXT2pNWFQwTHV4Q1UzM3R4YVNpUGZmdVJqcjNmc08vbUM2b2cvVm1zbXVHWU4wSWo5M1RGWWNWWHVuUWFhRGI0K3dKYkZkN3ZnME9JNUlmNTNORU50b0syQWxWUXdHU2NqU0Z0NWxyamRXeW11OFdFSWdTd3RwcHl6QXNMZ3hSazhQNWhHOVBNQTNiS2lQc3Bkc1VMakpSd1g3dWtmNS9OWDdUQXRBaFVBaFFTSHo5RGd5Y09YN3djd0VSTUpiM1RMR2I0Q0ZHa0IveFVXU1JLM0JaTHJQRjlSbjZabXJVcUpYMDJvYycsXG4gICAgJ2NvbmZsdWVuY2UnOiAnQUFBQ3pnME9EQW9QZU5wOVZPOXYyakFRL1o2L3d0SytJWVdHc0VLSEZHbVFtSmF1L0dnSW05aVlKaE1PWXByWWtlMUE0YStmU2NoR0t0cVBQdnZldlh2M3pwLzZncUxITEViMkhiS3NUdk56cDlsQzk4TUEyWmJkTktZZ2RpQUdudFBEUTJ6Njg4SGNkSC9hTTdQNW8ya1pUelFFSmlFNHBEQWlDVGdCbmdhRDBiMFJDcjVmMVM5dUhmY1VXWFNRQnp1SWVRckNDRGxiMTBtbzZBNGNKVExRU1ZsSWx6RlVnZ3BJOGlja01iQVZFYkkreXBJbGlQRzZSNUlsNXo0a1hFRjNBMHhKcDFHeXdhOHBGUWVQS0hBbURkdDYrQTljSlZRRUs1eVdtaE1WOEhHWkxSV2t3ckY4UFpNZ3BHUGZHaDdJVU5CVVVjNmNBS1JDY1ZFWXJibEFhWnh0S0VPcnNxajhWL1VTODV6eFhkK2ZVR3dENzBpY2tSd3lmN0FSQUN6aXFVWW8rOElybXQvalVZRDlpVCtZWW1OSUtGUEFDQXV2eUhJYVFFVVNIWWd6MEc4cm9yZ0M4cnA1cXZhRVpWcDNwdDB1OHN2ZTNUaVRDc1NJcjBBNmxsR3IxVndmZHdQc21iMjVQampiVndxMkVjWmNtNm5TNkRLWCtJM2lUMXlQL0N5NDJUQmU0RkFLMFdoWlZ0dTZhelliWmVabEIwVTJ3cnBua1FvcXE0MFV5c3Q2N1JxQjl6VThrNjRvbFllcUtuR21OQ3pXaXNlT1VvS3doTExvSzFFeGtaSVNWZzk1Y3IzWk4vWXFkdWVTWVc2NDkvbWRyZkpBWk9RTTNiM2I5NkRSdWhWazMyNjFra0Z2ZXh3ZTQxVVF0Sk4xMnU1R3o2R2NQVDdQbjcxSDcwdDY5Q1BjYngvYTlyY2ozckR1d2xrNHhwcktDQTVWTitvSmpzYUIyUi83NXNRZmV6TTNHSXhINW15S1Q2UE4vUUVydER3Z0ZRRTZFOVZEQ0xVWnROOEYzMEtvMEs5SXFYVFJ1Ym5aOEhwRmxadHpBeVlVR2IvcnlPT0ljWVZXVkNwQmw1a0NqVXdsVWh5RjJtWTgwV2FvWHhkekVoT1dlMllzTm9SUldXeE10NnhYL2hINlA1dXhGOGIzckxKSWx6MUxwUVc5NXBRUHZxZkxxMGttd29oSWVMczJsOVBNemZRNDhMdnZXVGJmTVkxQVhEZzlLSkRMQ1YyQzlIVU1IK0NhSmZPZnVkaS92MGtJR1Zzd0xBSVVFTVE5WDc3Z3FHQmRmSDBISXpCYVY4TmFkUFVDRkJuK1JpVUE0RCtJcVZRcFRUb3VMVlk2NmFDR1gwMjEyMScsXG4gICAgJ2JpdGJ1Y2tldCc6ICdBQUFCbWcwT0RBb1BlTnA5VWwxdjB6QVVmYyt2c01SYkphZEp0akdwVWlTMkpKUk9OT2xhQjRTQUI5ZTlXMHhUdTdKdkN2MzNlSW1ET29SNHZlZmU0L1BoTjU5aFI1YmNrUGlXUk5lektKNUZDWmt2R1VtaUpBNHlyWkFMTFBrQlVySFhvdEVudTVlQlJXNmI4S01Vb0N5dzh4SDZCVlpzMktLY2UzVEpwVUpRWEFrb2ZoMmxPZWNjSVYxZGZSaEpDN2ZSWHJKdXdKekFMUEwwL3FGK3BJOVhHYVB6K3VHR3NwdmJrZFJ4OEF3Y3IwblJkT0NubFhubVNscU9VcXYwRGx0dXJlVEtnNnZPaUlaYjZKOVBvdmlhUm05cEhIczBNOUNmL1J2MUR2L1NQNWxNeW9yUjk5V2FydFpWWG1kc1VaVzAzaFFPU0h0Q0YrbjJUTEFCNGhsSW9ZVGVnU0ZIbzMrQVFQSzFRVHgrbTAybnp6cmtvK0pRNk1PMEhTNG9EQmZmUTVKcm9qU1NuYlJvNUxaRGNNelNFdFJFZEJiMUFZd05SenNYZmYwSmdqQ3dMakcvNG1CNWdpRStKemhiRjNlc3lPbjlseGYxRjIxNDVhNk9XdTJWL3FtQy8yZFZkb2N0bU9xcHRrNVBHaWQrWEp4NDJ3M05QUEhXUXVEOWZYSmJMOFBrdGZMaFUyQXYrTjJyWU1ZNnVVRUZwbmNZL0FZQ2dmRkFNQ3dDRkh6a0Jsa0dIL3ZSZFRlZUJTZlVNelVEYjRXMkFoUXlNODkzV1BnMlE4b1FBWVJkQlN5S2VWVWRvZz09WDAyanInLFxuICAgICdiYW1ib28nOiAnQUFBQjN3ME9EQW9QZU5wOVVsdHIyekFZZmZldkVPd3RvTVIxMHFZTEdKYllXc25vN0dBN2c5MGVaUGxyb3RXV2pDU256WDc5RkY4SVlXa2ZEUEozT2Vkd3p2Y2gyemRvV1N2a3pwRjd2NWpkTHJ3cENraWFJYy8xUE9lUk14QWFzbU1ORWEzQXoyeG5IVDA0Z1FKcXVCUWhOZUI3N3ZRR3V6UHMzams1clhJcHg1UVpmZ0RmcUFhR1V0UlVPYWo0YWRYK1BrcEd5K1VPaE5FK3ZuR0c1bGFEYWdzOUwzbXR1VG9PSkY1UGtqYTVab3JYSndFWEhHK3BKUWRhTnZTL2NZdExBeXNCVkZmdTE5ZWh2eFhQUXI0SUp3VjFBR1VMS3pJbmVCYis4UEJkL0dXT0g2WWY3NTFObzlpZWF1amxlWU1IS1lsOCsrRmIxM1ZHbzFFVVovaHpuT0JORW9mYklGdkhFZDZteERiODFrUW9VSDVFWmcrb3AwZEVNRm1BUXJXU2Y0QVo5SE52VFAxck1abnNyTEdtcEZwektzWk1WcE95MjhEUWJmd2VvMUFpSVEwcXVEYUs1NDBCaTh3MU1oS3hSaHRaV1h2SFRnaG4rekxRQnZVNDZFbGExckxaY1lFS09FQXBhenZ2ZktYY2VpU29ZRy9rY1RYaFRVbEZHK1hWYmdLVk5IQStnRjdCTjh0M1V1VTVzZHBSd1hVWEdubWxWVjBDQ21SVlUzRzhFdmY1TUtVdzl2cUlGVjM2dFg3bW9OamZvN0NQVHhmZW5aSUpFckxNU0loWDMwOXB2RGQ4U1VnSzNzbUtNcEpza25WS0J0cjI2dDREK2dkM0FDNXFNQ3dDRkhPYVRXZkZ2TENMSlBmdDNxa3RWbzNGYWZtWkFoUm9qYjlJQXhqOEtFcVBEUXkwc3RvczM5NFNRUT09WDAybXEnXG59O1xuZXhwb3J0IGNvbnN0IGFwcDNob3VyID0gJ0FBQUJDQTBPREFvUGVOcGRqMDFQd2tBVVJmZnpLeVp4WjFJeVV6QVJrbGxRMjRnUmFRTXRHbmFQOFZFbXRqUE5mRlQ1OXlKVkZ5emZ1YmtuNzk2VXgwQno2U21iVU01bmJEemo5N1JJU3hvekhwTVVuYlNxODhwb1VhTHp0RkVTdFVONk1KWjJUYWlWcHUvWVkyTTZ0STZzUXJ0SG14OHFkNzRFWitUQkl2eVVVL0FvWXM3amlFMGp6a25XUXhNdWlmQTJJQmxVYm5RN0F1bFZqd045QWFVOWF0QVNzNjlPMmRORlU0d1hKTGMxYU9VR3c5dzM0SndDVFRab2U3UlBxVWdlcDJYMFZtMG4wZk51dDRnU3hsL0pjbmo5bkZiNlE1dFAvVWV1M0wrMFBIVzRnaFpGbW0yelpWNWs2Lzk1Q2JSN1k5YllHby96R3JWM0lyNGpSYkR5Q0E2dnQzNERPOHAzU0RBc0FoUW5KakxENWs5RnIzdWFJemtYS2Y4M281dkRkUUlVZTRYZXF1TkNDM0QrOWh0OVpZaE5aRkttbmhjPVgwMmRoJztcbiIsImltcG9ydCB7IHJlYWxwYXRoU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4gfSBmcm9tICdwYXRoJztcbmV4cG9ydCBjb25zdCB0b0Fic29sdXRlUGF0aCA9IChyZWxhdGl2ZVBhdGgpID0+IHtcbiAgICBjb25zdCBbLCBmaWxlUGF0aF0gPSBwcm9jZXNzLmFyZ3Y7XG4gICAgY29uc3QgZXhlY3V0YWJsZUZpbGVEaXIgPSBkaXJuYW1lKHJlYWxwYXRoU3luYyhmaWxlUGF0aCkpO1xuICAgIGNvbnN0IGJhc2VkaXIgPSBleGVjdXRhYmxlRmlsZURpci5zdWJzdHJpbmcoMCwgZXhlY3V0YWJsZUZpbGVEaXIuaW5kZXhPZignZGNkeCcpICsgNCk7XG4gICAgcmV0dXJuIGpvaW4oYmFzZWRpciwgcmVsYXRpdmVQYXRoLnJlcGxhY2VBbGwoJy4uLycsICcnKSk7XG59O1xuIiwiZXhwb3J0IGNvbnN0IG5ldHdvcmsgPSB7XG4gICAgbmFtZTogJ3NoYXJlZCcsXG4gICAgZHJpdmVyOiAnYnJpZGdlJ1xufTtcbiIsImltcG9ydCB7IHNwYXduIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgeyBkb3duQWxsLCBwcywgc3RvcCwgdXBBbGwgfSBmcm9tICdkb2NrZXItY29tcG9zZS9kaXN0L3YyLmpzJztcbmltcG9ydCB7IGdyYWNlZnVsRXhpdCB9IGZyb20gJ2V4aXQtaG9vayc7XG5pbXBvcnQgeyBkdW1wIH0gZnJvbSAnanMteWFtbCc7XG5pbXBvcnQgeyBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmltcG9ydCB7IENvbm5lY3Rpb25BY3F1aXJlVGltZW91dEVycm9yLCBDb25uZWN0aW9uRXJyb3IsIENvbm5lY3Rpb25SZWZ1c2VkRXJyb3IsIENvbm5lY3Rpb25UaW1lZE91dEVycm9yLCBTZXF1ZWxpemUsIFRpbWVvdXRFcnJvciB9IGZyb20gJ3NlcXVlbGl6ZSc7XG5pbXBvcnQgeyBuZXR3b3JrIH0gZnJvbSAnLi4vaGVscGVycy9uZXR3b3JrJztcbmV4cG9ydCBjbGFzcyBCYXNlIHtcbiAgICBvcHRpb25zO1xuICAgIHNlcXVlbGl6ZTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgIC8vIFdlIG5lZWQgdG8gdXNlICdtYXN0ZXInIGZvciBtc3NxbCBiZWNhdXNlIGl0IGRvZXMgbm90IGluaXRpYWxpemUgdGhlIGRhdGFiYXNlIG9uIHN0YXJ0XG4gICAgICAgIGNvbnN0IGRhdGFiYXNlID0gdGhpcy5vcHRpb25zLm5hbWUgPT09ICdtc3NxbCcgPyAnbWFzdGVyJyA6IHRoaXMub3B0aW9ucy5kYXRhYmFzZTtcbiAgICAgICAgdGhpcy5zZXF1ZWxpemUgPSBuZXcgU2VxdWVsaXplKGRhdGFiYXNlLCB0aGlzLm9wdGlvbnMudXNlcm5hbWUsIHRoaXMub3B0aW9ucy5wYXNzd29yZCwge1xuICAgICAgICAgICAgaG9zdDogJ2xvY2FsaG9zdCcsXG4gICAgICAgICAgICBwb3J0OiB0aGlzLm9wdGlvbnMucG9ydCxcbiAgICAgICAgICAgIGRpYWxlY3Q6IHRoaXMub3B0aW9ucy5uYW1lLnJlcGxhY2UoJ3Bvc3RncmVzcWwnLCAncG9zdGdyZXMnKSxcbiAgICAgICAgICAgIHJldHJ5OiB7XG4gICAgICAgICAgICAgICAgbWF4OiAzMCxcbiAgICAgICAgICAgICAgICBtYXRjaDogW0Nvbm5lY3Rpb25FcnJvciwgVGltZW91dEVycm9yLCBDb25uZWN0aW9uVGltZWRPdXRFcnJvciwgQ29ubmVjdGlvblJlZnVzZWRFcnJvciwgQ29ubmVjdGlvbkFjcXVpcmVUaW1lb3V0RXJyb3JdLFxuICAgICAgICAgICAgICAgIGJhY2tvZmZCYXNlOiAxMDAwLFxuICAgICAgICAgICAgICAgIGJhY2tvZmZFeHBvbmVudDogMVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxvZ2dpbmc6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHVibGljIE1ldGhvZHNcbiAgICBhc3luYyBydW4oc3FsLCBsb2dnaW5nKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNlcXVlbGl6ZS5xdWVyeShzcWwsIHsgbG9nZ2luZyB9KTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSB0cnlpbmcgdG8gcnVuIHRoZSBmb2xsb3dpbmcgU1FMIHF1ZXJ5OicsIHNxbCwgZXJyKTtcbiAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBzdGFydChjbGVhbiA9IHRoaXMub3B0aW9ucy5jbGVhbikge1xuICAgICAgICBjb25zb2xlLmxvZyhgU3RhcnRpbmcgaW5zdGFuY2Ugb2YgJHt0aGlzLm9wdGlvbnMubmFtZX0uLi4g8J+Sg2ApO1xuICAgICAgICBpZiAoY2xlYW4pIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZG93bigpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMudXAoKTtcbiAgICAgICAgY29uc3QgaXNBdmFpbGFibGUgPSBhd2FpdCB0aGlzLndhaXRVbnRpbFJlYWR5KCk7XG4gICAgICAgIGlmICghaXNBdmFpbGFibGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBGYWlsZWQgdG8gdmVyaWZ5IHN0YXR1cyBvZiAke3RoaXMub3B0aW9ucy5uYW1lfSDim5RgKTtcbiAgICAgICAgICAgIGdyYWNlZnVsRXhpdCgxKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBEYXRhYmFzZSBpcyByZWFkeSBhbmQgYWNjZXB0aW5nIGNvbm5lY3Rpb25zIG9uIGxvY2FsaG9zdDoke3RoaXMub3B0aW9ucy5wb3J0fSDwn5eE77iPYCk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMub25EYXRhYmFzZVJlYWR5KCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlcnZpY2UgPSBhd2FpdCB0aGlzLmdldFNlcnZpY2VTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VydmljZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zaG93RG9ja2VyTG9ncyhzZXJ2aWNlLm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGdyYWNlZnVsRXhpdCgxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBzdG9wKHBydW5lID0gdGhpcy5vcHRpb25zLnBydW5lKSB7XG4gICAgICAgIGlmIChwcnVuZSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5kb3duKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAodGhpcy5nZXREb2NrZXJDb21wb3NlQ29uZmlnKCkpO1xuICAgICAgICAgICAgYXdhaXQgc3RvcCh7XG4gICAgICAgICAgICAgICAgY3dkOiBjd2QoKSxcbiAgICAgICAgICAgICAgICBjb25maWdBc1N0cmluZyxcbiAgICAgICAgICAgICAgICBsb2c6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIG9uRGF0YWJhc2VSZWFkeSgpIHsgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcml2YXRlIE1ldGhvZHNcbiAgICBnZXREb2NrZXJDb21wb3NlQ29uZmlnKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2VydmljZXM6IHtcbiAgICAgICAgICAgICAgICAnZGInOiB0aGlzLmdldFNlcnZpY2UoKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldHdvcmtzOiB7XG4gICAgICAgICAgICAgICAgJ3NoYXJlZCc6IG5ldHdvcmtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG4gICAgYXN5bmMgdXAoKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ0FzU3RyaW5nID0gZHVtcCh0aGlzLmdldERvY2tlckNvbXBvc2VDb25maWcoKSk7XG4gICAgICAgIHJldHVybiB1cEFsbCh7XG4gICAgICAgICAgICBjd2Q6IGN3ZCgpLFxuICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICBsb2c6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIGRvd24oKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ0FzU3RyaW5nID0gZHVtcCh0aGlzLmdldERvY2tlckNvbXBvc2VDb25maWcoKSk7XG4gICAgICAgIHJldHVybiBkb3duQWxsKHtcbiAgICAgICAgICAgIGN3ZDogY3dkKCksXG4gICAgICAgICAgICBjb25maWdBc1N0cmluZyxcbiAgICAgICAgICAgIGNvbW1hbmRPcHRpb25zOiBbJy12JywgJy0tcmVtb3ZlLW9ycGhhbnMnLCAnLS1ybWknLCAnbG9jYWwnXSxcbiAgICAgICAgICAgIGxvZzogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgd2FpdFVudGlsUmVhZHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlcXVlbGl6ZS5hdXRoZW50aWNhdGUoKS50aGVuKCgpID0+IHRydWUpLmNhdGNoKCgpID0+IGZhbHNlKTtcbiAgICB9XG4gICAgYXN5bmMgZ2V0U2VydmljZVN0YXRlKCkge1xuICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAodGhpcy5nZXREb2NrZXJDb21wb3NlQ29uZmlnKCkpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwcyh7XG4gICAgICAgICAgICBjd2Q6IGN3ZCgpLFxuICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICBjb21tYW5kT3B0aW9uczogWyctLWFsbCddLFxuICAgICAgICAgICAgbG9nOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhLnNlcnZpY2VzLmZpbmQoaXRlbSA9PiB7XG4gICAgICAgICAgICBjb25zdCBbLCBzZXJ2aWNlXSA9IGl0ZW0ubmFtZS5zcGxpdCgnLScpO1xuICAgICAgICAgICAgcmV0dXJuIHNlcnZpY2UgPT09IHRoaXMub3B0aW9ucy5uYW1lO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgc2hvd0RvY2tlckxvZ3Moc2VydmljZSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZG9ja2VyID0gc3Bhd24oJ2RvY2tlcicsIFsnbG9ncycsICctZicsICctbicsICc1MDAwJywgc2VydmljZV0sIHsgc3RkaW86ICdpbmhlcml0JyB9KTtcbiAgICAgICAgICAgIGRvY2tlci5vbignZXhpdCcsIChjb2RlKSA9PiAoY29kZSA9PT0gMCkgPyByZXNvbHZlKCkgOiByZWplY3QobmV3IEVycm9yKGBEb2NrZXIgZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCkpKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiaW1wb3J0IHsgTVNTUUxPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMvRGF0YWJhc2UnO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgY2xhc3MgTVNTUUwgZXh0ZW5kcyBCYXNlIHtcbiAgICBvcHRpb25zO1xuICAgIGdldCB1cmwoKSB7XG4gICAgICAgIHJldHVybiBgamRiYzpzcWxzZXJ2ZXI6Ly9kYjoke3RoaXMub3B0aW9ucy5wb3J0fTtkYXRhYmFzZU5hbWU9JHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9O3RydXN0U2VydmVyQ2VydGlmaWNhdGU9dHJ1ZWA7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSBNU1NRTE9wdGlvbnMucGFyc2Uoe30pKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvdGVjdGVkIE1ldGhvZHNcbiAgICBhc3luYyBvbkRhdGFiYXNlUmVhZHkoKSB7XG4gICAgICAgIGF3YWl0IHRoaXMucnVuKGBDUkVBVEUgREFUQUJBU0UgJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9YCk7XG4gICAgICAgIGF3YWl0IHRoaXMucnVuKGBBTFRFUiBEQVRBQkFTRSAke3RoaXMub3B0aW9ucy5kYXRhYmFzZX0gQ09MTEFURSBTUUxfTGF0aW4xX0dlbmVyYWxfQ1AxX0NTX0FTYCk7XG4gICAgICAgIGF3YWl0IHRoaXMucnVuKGBBTFRFUiBEQVRBQkFTRSAke3RoaXMub3B0aW9ucy5kYXRhYmFzZX0gU0VUIFJFQURfQ09NTUlUVEVEX1NOQVBTSE9UIE9OIFdJVEggUk9MTEJBQ0sgSU1NRURJQVRFO2ApO1xuICAgIH1cbiAgICBnZXRTZXJ2aWNlID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW1hZ2U6IGBtY3IubWljcm9zb2Z0LmNvbS9tc3NxbC9zZXJ2ZXI6JHt0aGlzLm9wdGlvbnMudGFnfWAsXG4gICAgICAgICAgICBwb3J0czogW2Ake3RoaXMub3B0aW9ucy5wb3J0IHx8IDE0MzN9OjE0MzNgXSxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICAgICAgQUNDRVBUX0VVTEE6ICd5JyxcbiAgICAgICAgICAgICAgICBNU1NRTF9TQV9QQVNTV09SRDogdGhpcy5vcHRpb25zLnBhc3N3b3JkIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBNU1NRTF9QSUQ6IHRoaXMub3B0aW9ucy5lZGl0aW9uXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV0d29ya3M6IHtcbiAgICAgICAgICAgICAgICAnc2hhcmVkJzoge1xuICAgICAgICAgICAgICAgICAgICBhbGlhc2VzOiBbJ2RiJywgJ2RhdGFiYXNlJ11cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcbn1cbiIsImltcG9ydCB7IE15U1FMT3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0RhdGFiYXNlJztcbmltcG9ydCB7IEJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0IGNsYXNzIE15U1FMIGV4dGVuZHMgQmFzZSB7XG4gICAgb3B0aW9ucztcbiAgICBnZXQgdXJsKCkge1xuICAgICAgICByZXR1cm4gYGpkYmM6bXlzcWw6Ly9kYjoke3RoaXMub3B0aW9ucy5wb3J0fS8ke3RoaXMub3B0aW9ucy5kYXRhYmFzZX0/c2Vzc2lvblZhcmlhYmxlcz10cmFuc2FjdGlvbl9pc29sYXRpb249J1JFQUQtQ09NTUlUVEVEJ2A7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSBNeVNRTE9wdGlvbnMucGFyc2Uoe30pKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvdGVjdGVkIE1ldGhvZHNcbiAgICBhc3luYyBvbkRhdGFiYXNlUmVhZHkoKSB7XG4gICAgICAgIGF3YWl0IHRoaXMucnVuKGBBTFRFUiBEQVRBQkFTRSAke3RoaXMub3B0aW9ucy5kYXRhYmFzZX0gQ0hBUkFDVEVSIFNFVCAndXRmOG1iNCcgQ09MTEFURSB1dGY4bWI0X2JpbmApO1xuICAgIH1cbiAgICBnZXRTZXJ2aWNlID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW1hZ2U6IGBteXNxbDoke3RoaXMub3B0aW9ucy50YWd9YCxcbiAgICAgICAgICAgIHBvcnRzOiBbYCR7dGhpcy5vcHRpb25zLnBvcnQgfHwgMzMwNn06MzMwNmBdLFxuICAgICAgICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICAgICAgICBNWVNRTF9ST09UX1BBU1NXT1JEOiB0aGlzLm9wdGlvbnMucGFzc3dvcmQgfHwgJ2RjZHgnLFxuICAgICAgICAgICAgICAgIE1ZU1FMX1VTRVI6IHRoaXMub3B0aW9ucy51c2VybmFtZSB8fCAnZGNkeCcsXG4gICAgICAgICAgICAgICAgTVlTUUxfUEFTU1dPUkQ6IHRoaXMub3B0aW9ucy5wYXNzd29yZCB8fCAnZGNkeCcsXG4gICAgICAgICAgICAgICAgTVlTUUxfREFUQUJBU0U6IHRoaXMub3B0aW9ucy5kYXRhYmFzZSB8fCAnZGNkeCdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb21tYW5kOiBbJy0tbG9nX2Jpbl90cnVzdF9mdW5jdGlvbl9jcmVhdG9ycz0xJ10sXG4gICAgICAgICAgICBuZXR3b3Jrczoge1xuICAgICAgICAgICAgICAgICdzaGFyZWQnOiB7XG4gICAgICAgICAgICAgICAgICAgIGFsaWFzZXM6IFsnZGInLCAnZGF0YWJhc2UnXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xufVxuIiwiaW1wb3J0IHsgUG9zdGdyZVNRTE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy9EYXRhYmFzZSc7XG5pbXBvcnQgeyBCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmV4cG9ydCBjbGFzcyBQb3N0Z3JlcyBleHRlbmRzIEJhc2Uge1xuICAgIG9wdGlvbnM7XG4gICAgZ2V0IHVybCgpIHtcbiAgICAgICAgcmV0dXJuIGBqZGJjOnBvc3RncmVzcWw6Ly9kYjoke3RoaXMub3B0aW9ucy5wb3J0fS8ke3RoaXMub3B0aW9ucy5kYXRhYmFzZX1gO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0gUG9zdGdyZVNRTE9wdGlvbnMucGFyc2Uoe30pKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvdGVjdGVkIE1ldGhvZHNcbiAgICBnZXRTZXJ2aWNlID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW1hZ2U6IGBwb3N0Z3Jlczoke3RoaXMub3B0aW9ucy50YWd9YCxcbiAgICAgICAgICAgIHBvcnRzOiBbYCR7dGhpcy5vcHRpb25zLnBvcnQgfHwgNTQzMn06NTQzMmBdLFxuICAgICAgICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19VU0VSOiB0aGlzLm9wdGlvbnMudXNlcm5hbWUgfHwgJ2RjZHgnLFxuICAgICAgICAgICAgICAgIFBPU1RHUkVTX1BBU1NXT1JEOiB0aGlzLm9wdGlvbnMucGFzc3dvcmQgfHwgJ2RjZHgnLFxuICAgICAgICAgICAgICAgIFBPU1RHUkVTX0RCOiB0aGlzLm9wdGlvbnMuZGF0YWJhc2UgfHwgJ2RjZHgnLFxuICAgICAgICAgICAgICAgIFBPU1RHUkVTX0hPU1RfQVVUSF9NRVRIT0Q6ICdtZDUnLFxuICAgICAgICAgICAgICAgIFBPU1RHUkVTX0lOSVREQl9BUkdTOiAnLS1lbmNvZGluZz1VVEYtOCAtLWxjLWNvbGxhdGU9QyAtLWxjLWN0eXBlPUMnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV0d29ya3M6IHtcbiAgICAgICAgICAgICAgICAnc2hhcmVkJzoge1xuICAgICAgICAgICAgICAgICAgICBhbGlhc2VzOiBbJ2RiJywgJ2RhdGFiYXNlJ11cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcbn1cbiIsImltcG9ydCB7IE1TU1FMIH0gZnJvbSAnLi4vZGF0YWJhc2VzL21zc3FsJztcbmltcG9ydCB7IE15U1FMIH0gZnJvbSAnLi4vZGF0YWJhc2VzL215c3FsJztcbmltcG9ydCB7IFBvc3RncmVzIH0gZnJvbSAnLi4vZGF0YWJhc2VzL3Bvc3RncmVzJztcbmltcG9ydCB7IE1TU1FMT3B0aW9ucywgTXlTUUxPcHRpb25zLCBQb3N0Z3JlU1FMT3B0aW9ucywgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzIH0gZnJvbSAnLi4vdHlwZXMvRGF0YWJhc2UnO1xuZXhwb3J0IGNvbnN0IGdldERhdGFiYXNlRW5naW5lID0gKG9wdGlvbnMsIHRhZykgPT4ge1xuICAgIHN3aXRjaCAob3B0aW9ucy5uYW1lKSB7XG4gICAgICAgIGNhc2UgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsOlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQb3N0Z3JlcyhQb3N0Z3JlU1FMT3B0aW9ucy5wYXJzZSh7IC4uLm9wdGlvbnMsIHRhZyB9KSk7XG4gICAgICAgIGNhc2UgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5teXNxbDpcbiAgICAgICAgICAgIHJldHVybiBuZXcgTXlTUUwoTXlTUUxPcHRpb25zLnBhcnNlKHsgLi4ub3B0aW9ucywgdGFnIH0pKTtcbiAgICAgICAgY2FzZSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm1zc3FsOlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBNU1NRTChNU1NRTE9wdGlvbnMucGFyc2UoeyAuLi5vcHRpb25zLCB0YWcgfSkpO1xuICAgIH1cbn07XG4iLCJpbXBvcnQgeyB6IH0gZnJvbSAnem9kJztcbmV4cG9ydCBjb25zdCBnZXRab2REZWZhdWx0ID0gKHNjaGVtYSwga2V5KSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdHMgPSBnZXRab2REZWZhdWx0cyhzY2hlbWEpO1xuICAgIHJldHVybiBkZWZhdWx0c1trZXldO1xufTtcbi8vIENvZGUgc25pcHBldCBieSBKYWNvYiBXZWlzZW5idXJnZXIgKGh0dHBzOi8vZ2l0aHViLmNvbS9KYWNvYldlaXNlbmJ1cmdlcilcbi8vIFRha2VuIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2NvbGluaGFja3Mvem9kL2Rpc2N1c3Npb25zLzE5NTMjZGlzY3Vzc2lvbmNvbW1lbnQtNDgxMTU4OFxuZXhwb3J0IGNvbnN0IGdldFpvZERlZmF1bHRzID0gKHNjaGVtYSkgPT4ge1xuICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoc2NoZW1hLnNoYXBlKS5maWx0ZXIoKFssIHZhbHVlXSkgPT4ge1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiB6LlpvZERlZmF1bHQpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IHZhbHVlLl9kZWYuZGVmYXVsdFZhbHVlKCk7XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlICE9PSBudWxsICYmIHR5cGVvZiBkZWZhdWx0VmFsdWUgIT09ICd1bmRlZmluZWQnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKFtrZXksIHZhbHVlLl9kZWYuZGVmYXVsdFZhbHVlKCldKSkpO1xufTtcbiIsImltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBzcGF3biB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgZG93bkFsbCwgbG9ncywgcHMsIHN0b3AsIHVwQWxsIH0gZnJvbSAnZG9ja2VyLWNvbXBvc2UvZGlzdC92Mi5qcyc7XG5pbXBvcnQgeyBncmFjZWZ1bEV4aXQgfSBmcm9tICdleGl0LWhvb2snO1xuaW1wb3J0IHsgZXhpc3RzU3luYywgbWtkaXJTeW5jIH0gZnJvbSAnZnMnO1xuaW1wb3J0IHsgZHVtcCB9IGZyb20gJ2pzLXlhbWwnO1xuaW1wb3J0IHsgaG9tZWRpciB9IGZyb20gJ29zJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdwYXRoJztcbmltcG9ydCB7IGFyY2gsIGN3ZCB9IGZyb20gJ3Byb2Nlc3MnO1xuaW1wb3J0IHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IHNpbXBsZUdpdCBmcm9tICdzaW1wbGUtZ2l0JztcbmltcG9ydCB7IGdldERhdGFiYXNlRW5naW5lIH0gZnJvbSAnLi4vaGVscGVycy9nZXREYXRhYmFzZUVuZ2luZSc7XG5pbXBvcnQgeyBnZXRab2REZWZhdWx0cyB9IGZyb20gJy4uL2hlbHBlcnMvZ2V0Wm9kRGVmYXVsdHMnO1xuaW1wb3J0IHsgbmV0d29yayB9IGZyb20gJy4uL2hlbHBlcnMvbmV0d29yayc7XG5pbXBvcnQgeyBEYXRhYmFzZU9wdGlvbnMsIE1TU1FMT3B0aW9ucywgTXlTUUxPcHRpb25zLCBQb3N0Z3JlU1FMT3B0aW9ucywgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzIH0gZnJvbSAnLi4vdHlwZXMvRGF0YWJhc2UnO1xuY29uc3QgYmFzZWRpciA9IGpvaW4oaG9tZWRpcigpLCAnLmRjZHgnKTtcbmV4cG9ydCBjbGFzcyBCYXNlIHtcbiAgICBvcHRpb25zO1xuICAgIGRhdGFiYXNlO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgdGhpcy5kYXRhYmFzZSA9IHRoaXMuZ2V0RGF0YWJhc2VFbmdpbmUob3B0aW9ucy5kYXRhYmFzZSwgb3B0aW9ucy5kYXRhYmFzZVRhZyk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm9wZXJ0aWVzXG4gICAgZ2V0IGJhc2VVcmwoKSB7XG4gICAgICAgIGxldCBiYXNlVXJsID0gYGh0dHA6Ly9sb2NhbGhvc3RgO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnBvcnQpIHtcbiAgICAgICAgICAgIGJhc2VVcmwgKz0gYDoke3RoaXMub3B0aW9ucy5wb3J0fWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5jb250ZXh0UGF0aCA/IGAke2Jhc2VVcmx9LyR7dGhpcy5vcHRpb25zLmNvbnRleHRQYXRofWAgOiBiYXNlVXJsO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHVibGljIE1ldGhvZHNcbiAgICBhc3luYyBzdGFydCgpIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5jbGVhbikge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5kb3duKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNCdWlkUmVxdWlyZWQoKSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5idWlsZCh0aGlzLm9wdGlvbnMudGFnKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLmRhdGFiYXNlLnN0YXJ0KHRoaXMub3B0aW9ucy5jbGVhbik7XG4gICAgICAgIGF3YWl0IHRoaXMudXAoKTtcbiAgICB9XG4gICAgYXN5bmMgc3RvcCgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5kYXRhYmFzZS5zdG9wKHRoaXMub3B0aW9ucy5wcnVuZSk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucHJ1bmUpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZG93bigpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpKTtcbiAgICAgICAgICAgIGF3YWl0IHN0b3Aoe1xuICAgICAgICAgICAgICAgIGN3ZDogdGhpcy5vcHRpb25zLmN3ZCB8fCBjd2QoKSxcbiAgICAgICAgICAgICAgICBjb25maWdBc1N0cmluZyxcbiAgICAgICAgICAgICAgICBsb2c6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIHJlc2V0KCkge1xuICAgICAgICBhd2FpdCB0aGlzLmRhdGFiYXNlLnN0b3AodHJ1ZSk7XG4gICAgICAgIGF3YWl0IHRoaXMuZG93bigpO1xuICAgIH1cbiAgICBnZXRKVk1BcmdzKCkge1xuICAgICAgICBjb25zdCBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTID0gW107XG4gICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLUR1cG0ucGx1Z2luLnVwbG9hZC5lbmFibGVkPXRydWUnKTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kZWJ1Zykge1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctRGppcmEuZGV2Lm1vZGU9dHJ1ZScpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctRGF0bGFzc2lhbi5kZXYubW9kZT10cnVlJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy53YXRjaCkge1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctRHF1aWNrcmVsb2FkLmRpcnM9L29wdC9xdWlja3JlbG9hZCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTO1xuICAgIH1cbiAgICBhc3luYyBpc0FwcGxpY2F0aW9uUmVhZHkoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLmdldChgJHt0aGlzLmJhc2VVcmx9L3N0YXR1c2AsIHsgdmFsaWRhdGVTdGF0dXM6ICgpID0+IHRydWUgfSk7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhIH0gPSByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc3RhdGUgPT09ICdGSVJTVF9SVU4nIHx8IGRhdGEuc3RhdGUgPT09ICdSVU5OSU5HJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFRoZSBhcHBsaWNhdGlvbiAke3RoaXMubmFtZX0gaXMgcmVhZHkgb24gJHt0aGlzLmJhc2VVcmx9IPCfjolgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXREYXRhYmFzZUVuZ2luZShuYW1lLCB0YWcpIHtcbiAgICAgICAgcmV0dXJuIGdldERhdGFiYXNlRW5naW5lKERhdGFiYXNlT3B0aW9ucy5wYXJzZSh7XG4gICAgICAgICAgICAuLi50aGlzLmdldERlZmF1bHRPcHRpb25zKG5hbWUpLFxuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIGN3ZDogdGhpcy5vcHRpb25zLmN3ZFxuICAgICAgICB9KSwgdGFnKTtcbiAgICB9XG4gICAgZ2V0RG9ja2VyQmFzZVRhZygpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNCdWlkUmVxdWlyZWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGBkY2R4LyR7dGhpcy5uYW1lfToke3RoaXMub3B0aW9ucy50YWd9YDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLm5hbWUgPT09ICdqaXJhJykge1xuICAgICAgICAgICAgcmV0dXJuIGBhdGxhc3NpYW4vamlyYS1zb2Z0d2FyZToke3RoaXMub3B0aW9ucy50YWd9YDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBgYXRsYXNzaWFuLyR7dGhpcy5uYW1lfToke3RoaXMub3B0aW9ucy50YWd9YDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJpdmF0ZSBNZXRob2RzXG4gICAgZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNlcnZpY2VzOiB7XG4gICAgICAgICAgICAgICAgW3RoaXMubmFtZV06IHRoaXMuZ2V0U2VydmljZSgpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV0d29ya3M6IHtcbiAgICAgICAgICAgICAgICAnc2hhcmVkJzogbmV0d29ya1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cbiAgICBhc3luYyB1cCgpIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5nZXREb2NrZXJDb21wb3NlQ29uZmlnKCk7XG4gICAgICAgIGNvbnN0IGNvbmZpZ0FzU3RyaW5nID0gZHVtcChjb25maWcpO1xuICAgICAgICBhd2FpdCB1cEFsbCh7XG4gICAgICAgICAgICBjd2Q6IHRoaXMub3B0aW9ucy5jd2QgfHwgY3dkKCksXG4gICAgICAgICAgICBjb25maWdBc1N0cmluZyxcbiAgICAgICAgICAgIGxvZzogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGlzQXZhaWxhYmxlID0gYXdhaXQgdGhpcy53YWl0VW50aWxSZWFkeSgpO1xuICAgICAgICBpZiAoIWlzQXZhaWxhYmxlKSB7XG4gICAgICAgICAgICBjb25zdCBzZXJ2aWNlID0gYXdhaXQgdGhpcy5nZXRTZXJ2aWNlU3RhdGUoKTtcbiAgICAgICAgICAgIGNvbnN0IGlzUnVubmluZyA9IHNlcnZpY2UgJiYgc2VydmljZS5zdGF0ZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ3VwJyk7XG4gICAgICAgICAgICBpZiAoIWlzUnVubmluZykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBGYWlsZWQgdG8gc3RhcnQgJHt0aGlzLm5hbWV9IOKblGApO1xuICAgICAgICAgICAgICAgIGF3YWl0IGxvZ3MoT2JqZWN0LmtleXMoY29uZmlnLnNlcnZpY2VzKSwge1xuICAgICAgICAgICAgICAgICAgICBjd2Q6IHRoaXMub3B0aW9ucy5jd2QgfHwgY3dkKCksXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ0FzU3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICBsb2c6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBDb3VsZCBub3QgY29uZmlybSBzdGF0ZSBvZiAke3RoaXMubmFtZX0sIGJ1dCB0aGUgY29udGFpbmVyIGlzIHJ1bm5pbmcuIFBsZWFzZSBjb25zdWx0IHRoZSBhcHBsaWNhdGlvbiBsb2dzIPCfkYdgKTtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnRhaWxBcHBsaWNhdGlvbkxvZ3MoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMudGFpbEFwcGxpY2F0aW9uTG9ncygpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFdlIGFyZSBleGl0aW5nIHdpdGggYW4gZXJyb3IgY29kZVxuICAgICAgICAvLyBUaGlzIGlzIHRvIHRyaWdnZXIgYSBncmFjZWZ1bCBzaHV0IGRvd24gb2YgdGhlIGFwcGxpY2F0aW9uXG4gICAgICAgIGdyYWNlZnVsRXhpdCgxKTtcbiAgICB9XG4gICAgYXN5bmMgZG93bigpIHtcbiAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpKTtcbiAgICAgICAgYXdhaXQgZG93bkFsbCh7XG4gICAgICAgICAgICBjd2Q6IHRoaXMub3B0aW9ucy5jd2QgfHwgY3dkKCksXG4gICAgICAgICAgICBjb25maWdBc1N0cmluZyxcbiAgICAgICAgICAgIGNvbW1hbmRPcHRpb25zOiBbJy12JywgJy0tcmVtb3ZlLW9ycGhhbnMnLCAnLS1ybWknLCAnbG9jYWwnXSxcbiAgICAgICAgICAgIGxvZzogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgZ2V0U2VydmljZVN0YXRlKCkge1xuICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAodGhpcy5nZXREb2NrZXJDb21wb3NlQ29uZmlnKCkpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwcyh7XG4gICAgICAgICAgICBjd2Q6IHRoaXMub3B0aW9ucy5jd2QgfHwgY3dkKCksXG4gICAgICAgICAgICBjb25maWdBc1N0cmluZyxcbiAgICAgICAgICAgIGNvbW1hbmRPcHRpb25zOiBbJy0tYWxsJ10sXG4gICAgICAgICAgICBsb2c6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0LmRhdGEuc2VydmljZXMuZmluZChpdGVtID0+IHtcbiAgICAgICAgICAgIGNvbnN0IFssIHNlcnZpY2VdID0gaXRlbS5uYW1lLnNwbGl0KCctJyk7XG4gICAgICAgICAgICByZXR1cm4gc2VydmljZSA9PT0gdGhpcy5uYW1lO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgd2FpdFVudGlsUmVhZHkoY291bnQgPSAwKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBXYWl0aW5nIGZvciAke3RoaXMubmFtZX0gdG8gYmVjb21lIGF2YWlsYWJsZS4uLiAke2NvdW50fXNgKTtcbiAgICAgICAgY29uc3Qgc2VydmljZSA9IGF3YWl0IHRoaXMuZ2V0U2VydmljZVN0YXRlKCk7XG4gICAgICAgIGlmIChzZXJ2aWNlKSB7XG4gICAgICAgICAgICBjb25zdCBpc1J1bm5pbmcgPSBzZXJ2aWNlICYmIHNlcnZpY2Uuc3RhdGUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCd1cCcpO1xuICAgICAgICAgICAgY29uc3QgaXNSZWFkeSA9IGlzUnVubmluZyAmJiBhd2FpdCB0aGlzLmlzQXBwbGljYXRpb25SZWFkeSgpO1xuICAgICAgICAgICAgaWYgKGlzUmVhZHkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNvdW50ID49IDEyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAxMDAwKSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy53YWl0VW50aWxSZWFkeShjb3VudCArIDEpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNvdW50IDwgMTApIHtcbiAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAxMDAwKSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy53YWl0VW50aWxSZWFkeShjb3VudCArIDEpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlzQnVpZFJlcXVpcmVkKCkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnRhZy50b0xvd2VyQ2FzZSgpID09PSAnbGF0ZXN0Jykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhcmNoID09PSAnYXJtJyB8fCBhcmNoID09PSAnYXJtNjQnKSB7XG4gICAgICAgICAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5vcHRpb25zLnRhZy5pbmNsdWRlcygnLScpXG4gICAgICAgICAgICAgICAgPyB0aGlzLm9wdGlvbnMudGFnLnNsaWNlKDAsIHRoaXMub3B0aW9ucy50YWcuaW5kZXhPZignLScpKVxuICAgICAgICAgICAgICAgIDogdGhpcy5vcHRpb25zLnRhZztcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VtVmVyVmVyc2lvbiA9IHNlbXZlci5jb2VyY2UodmVyc2lvbik7XG4gICAgICAgICAgICAgICAgaWYgKHNlbVZlclZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubmFtZSA9PT0gJ2ppcmEnIHx8IHRoaXMubmFtZSA9PT0gJ2JhbWJvbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZW12ZXIubHQoc2VtVmVyVmVyc2lvbiwgJzkuMC4wJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5uYW1lID09PSAnY29uZmx1ZW5jZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZW12ZXIubHQoc2VtVmVyVmVyc2lvbiwgJzguMC4wJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5uYW1lID09PSAnYml0YnVja2V0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbXZlci5sdChzZW1WZXJWZXJzaW9uLCAnOC4yLjAnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgYXN5bmMgYnVpbGQodmVyc2lvbikge1xuICAgICAgICBjb25zdCByZXBvc2l0b3J5VXJsID0gdGhpcy5nZXREb2NrZXJSZXBvc2l0b3J5VXJsKCk7XG4gICAgICAgIGNvbnN0IGNoZWNrb3V0UGF0aCA9IGpvaW4oYmFzZWRpciwgdGhpcy5uYW1lLCAnc291cmNlJyk7XG4gICAgICAgIGlmICghZXhpc3RzU3luYyhjaGVja291dFBhdGgpKSB7XG4gICAgICAgICAgICBta2RpclN5bmMoam9pbihiYXNlZGlyLCB0aGlzLm5hbWUpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgIGF3YWl0IHNpbXBsZUdpdCgpLmNsb25lKHJlcG9zaXRvcnlVcmwsIGNoZWNrb3V0UGF0aCwgeyAnLS1yZWN1cnNlLXN1Ym1vZHVsZSc6IG51bGwgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhd2FpdCBzaW1wbGVHaXQoeyBiYXNlRGlyOiBjaGVja291dFBhdGggfSkucHVsbCh7ICctLXJlY3Vyc2Utc3VibW9kdWxlJzogbnVsbCB9KTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkb2NrZXIgPSBzcGF3bignZG9ja2VyJywgWydidWlsZCcsICctdCcsIGBkY2R4LyR7dGhpcy5uYW1lfToke3ZlcnNpb259YCwgJy0tYnVpbGQtYXJnJywgYCR7dGhpcy5uYW1lLnRvVXBwZXJDYXNlKCl9X1ZFUlNJT049JHt2ZXJzaW9ufWAsICcuJ10sIHsgY3dkOiBjaGVja291dFBhdGgsIHN0ZGlvOiAnaW5oZXJpdCcgfSk7XG4gICAgICAgICAgICBkb2NrZXIub24oJ2V4aXQnLCAoY29kZSkgPT4gKGNvZGUgPT09IDApID8gcmVzb2x2ZSgpIDogcmVqZWN0KG5ldyBFcnJvcihgRG9ja2VyIGV4aXRlZCB3aXRoIGNvZGUgJHtjb2RlfWApKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXREb2NrZXJSZXBvc2l0b3J5VXJsKCkge1xuICAgICAgICBjb25zdCBzdWZmaXggPSB0aGlzLm5hbWUgPT09ICdqaXJhJ1xuICAgICAgICAgICAgPyAnYXRsYXNzaWFuLWppcmEnXG4gICAgICAgICAgICA6IHRoaXMubmFtZSA9PT0gJ2JhbWJvbydcbiAgICAgICAgICAgICAgICA/IGAke3RoaXMubmFtZX0tc2VydmVyYFxuICAgICAgICAgICAgICAgIDogYGF0bGFzc2lhbi0ke3RoaXMubmFtZX0tc2VydmVyYDtcbiAgICAgICAgcmV0dXJuIGBodHRwczovL2JpdGJ1Y2tldC5vcmcvYXRsYXNzaWFuLWRvY2tlci9kb2NrZXItJHtzdWZmaXh9LmdpdGA7XG4gICAgfVxuICAgIGFzeW5jIHRhaWxBcHBsaWNhdGlvbkxvZ3MoKSB7XG4gICAgICAgIGNvbnN0IHNlcnZpY2UgPSBhd2FpdCB0aGlzLmdldFNlcnZpY2VTdGF0ZSgpO1xuICAgICAgICBjb25zdCBpc1J1bm5pbmcgPSBzZXJ2aWNlICYmIHNlcnZpY2Uuc3RhdGUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCd1cCcpO1xuICAgICAgICBpZiAoaXNSdW5uaW5nKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNob3dBcHBsaWNhdGlvbkxvZ3Moc2VydmljZS5uYW1lKS5jYXRjaCgoKSA9PiBudWxsKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBzaG93QXBwbGljYXRpb25Mb2dzKHNlcnZpY2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRvY2tlciA9IHNwYXduKCdkb2NrZXInLCBbJ2V4ZWMnLCAnLWknLCBzZXJ2aWNlLCBgdGFpbGAsIGAtRmAsIGAtbmAsIGA1MDAwYCwgdGhpcy5sb2dGaWxlUGF0aF0sIHsgY3dkOiB0aGlzLm9wdGlvbnMuY3dkIHx8IGN3ZCgpLCBzdGRpbzogJ2luaGVyaXQnIH0pO1xuICAgICAgICAgICAgZG9ja2VyLm9uKCdleGl0JywgKGNvZGUpID0+IChjb2RlID09PSAwKSA/IHJlc29sdmUoKSA6IHJlamVjdChuZXcgRXJyb3IoYERvY2tlciBleGl0ZWQgd2l0aCBjb2RlICR7Y29kZX1gKSkpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0RGVmYXVsdE9wdGlvbnMobmFtZSkge1xuICAgICAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgICAgICAgIGNhc2UgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsOlxuICAgICAgICAgICAgICAgIHJldHVybiBnZXRab2REZWZhdWx0cyhQb3N0Z3JlU1FMT3B0aW9ucyk7XG4gICAgICAgICAgICBjYXNlIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldFpvZERlZmF1bHRzKE15U1FMT3B0aW9ucyk7XG4gICAgICAgICAgICBjYXNlIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXNzcWw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldFpvZERlZmF1bHRzKE1TU1FMT3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgdGltZWJvbWIgfSBmcm9tICcuLi9oZWxwZXJzL2xpY2VuY2VzJztcbmltcG9ydCB7IHRvQWJzb2x1dGVQYXRoIH0gZnJvbSAnLi4vaGVscGVycy90b0Fic29sdXRlUGF0aCc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmV4cG9ydCBjbGFzcyBCYW1ib28gZXh0ZW5kcyBCYXNlIHtcbiAgICBuYW1lID0gU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iYW1ib287XG4gICAgbG9nRmlsZVBhdGggPSAnL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iYW1ib28vbG9ncy9hdGxhc3NpYW4tYmFtYm9vLmxvZyc7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgZ2V0U2VydmljZSgpIHtcbiAgICAgICAgY29uc3QgZW52aXJvbm1lbnQgPSB0aGlzLmdldEVudmlyb25tZW50VmFyaWFibGVzKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidWlsZDoge1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRvQWJzb2x1dGVQYXRoKCcuLi8uLi9hc3NldHMnKSxcbiAgICAgICAgICAgICAgICBkb2NrZXJmaWxlX2lubGluZTogYFxuRlJPTSAke3RoaXMuZ2V0RG9ja2VyQmFzZVRhZygpfVxuQ09QWSAuL215c3FsLWNvbm5lY3Rvci1qLTguMy4wLmphciAvb3B0L2F0bGFzc2lhbi9iYW1ib28vbGliL215c3FsLWNvbm5lY3Rvci1qLTguMy4wLmphclxuQ09QWSAuL3F1aWNrcmVsb2FkLTUuMC40LmphciAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JhbWJvby9zaGFyZWQvcGx1Z2lucy9xdWlja3JlbG9hZC01LjAuNC5qYXJcblJVTiBlY2hvIFwiL29wdC9xdWlja3JlbG9hZFwiID4gL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iYW1ib28vcXVpY2tyZWxvYWQucHJvcGVydGllczsgXFxcbiAgICBta2RpciAtcCAvb3B0L3F1aWNrcmVsb2FkOyBcXFxuICAgIGNob3duIC1SIGJhbWJvbzpiYW1ib28gL29wdC9xdWlja3JlbG9hZDtcblxuUlVOIGNob3duIC1SIGJhbWJvbzpiYW1ib28gL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iYW1ib29gXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcG9ydHM6IFtcbiAgICAgICAgICAgICAgICBgJHt0aGlzLm9wdGlvbnMucG9ydCB8fCA4MH06ODA4NWAsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLmRlYnVnID8gWyc1MDA1OjUwMDUnXSA6IFtdLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGVudmlyb25tZW50LFxuICAgICAgICAgICAgbmV0d29ya3M6IFsnc2hhcmVkJ11cbiAgICAgICAgfTtcbiAgICB9XG4gICAgZ2V0SlZNQXJncygpIHtcbiAgICAgICAgY29uc3QgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUyA9IHN1cGVyLmdldEpWTUFyZ3MoKTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kZWJ1Zykge1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctWGRlYnVnJyk7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1hZ2VudGxpYjpqZHdwPXRyYW5zcG9ydD1kdF9zb2NrZXQsc2VydmVyPXksc3VzcGVuZD1uLGFkZHJlc3M9NTAwNScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTO1xuICAgIH1cbiAgICBhc3luYyBpc0FwcGxpY2F0aW9uUmVhZHkoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLmdldChgJHt0aGlzLmJhc2VVcmx9L3NldHVwL3NldHVwR2VuZXJhbENvbmZpZ3VyYXRpb24uYWN0aW9uYCwgeyB2YWxpZGF0ZVN0YXR1czogKCkgPT4gdHJ1ZSB9KTtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZT8uc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgVGhlIGFwcGxpY2F0aW9uICR7dGhpcy5uYW1lfSBpcyByZWFkeSBvbiAke3RoaXMuYmFzZVVybH0g8J+OiWApO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJpdmF0ZSBNZXRob2RzXG4gICAgZ2V0RW52aXJvbm1lbnRWYXJpYWJsZXMoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMuY29udGV4dFBhdGggPyB7ICdBVExfVE9NQ0FUX0NPTlRFWFRQQVRIJzogdGhpcy5vcHRpb25zLmNvbnRleHRQYXRoIH0gOiAnJyxcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy54bXMgPyB7ICdKVk1fTUlOSU1VTV9NRU1PUlknOiB0aGlzLm9wdGlvbnMueG1zIH0gOiAnJyxcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy54bXggPyB7ICdKVk1fTUFYSU1VTV9NRU1PUlknOiB0aGlzLm9wdGlvbnMueG14IH0gOiAnJyxcbiAgICAgICAgICAgICdKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTJzogdGhpcy5nZXRKVk1BcmdzKCkuam9pbignICcpLFxuICAgICAgICAgICAgJ0FUTF9CQU1CT09fRU5BQkxFX1VOQVRURU5ERURfU0VUVVAnOiAndHJ1ZScsXG4gICAgICAgICAgICAnQVRMX0xJQ0VOU0UnOiB0aW1lYm9tYi5iYW1ib28sXG4gICAgICAgICAgICAnQVRMX0pEQkNfVVJMJzogdGhpcy5kYXRhYmFzZS51cmwsXG4gICAgICAgICAgICAnQVRMX0pEQkNfVVNFUic6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy51c2VybmFtZSxcbiAgICAgICAgICAgICdBVExfSkRCQ19QQVNTV09SRCc6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy5wYXNzd29yZCxcbiAgICAgICAgICAgICdBVExfREJfVFlQRSc6IGAke3RoaXMuZGF0YWJhc2Uub3B0aW9ucy5uYW1lfWAsXG4gICAgICAgIH07XG4gICAgfVxuICAgIDtcbn1cbiIsImltcG9ydCB7IHRpbWVib21iIH0gZnJvbSAnLi4vaGVscGVycy9saWNlbmNlcyc7XG5pbXBvcnQgeyB0b0Fic29sdXRlUGF0aCB9IGZyb20gJy4uL2hlbHBlcnMvdG9BYnNvbHV0ZVBhdGgnO1xuaW1wb3J0IHsgU3VwcG9ydGVkQXBwbGljYXRpb25zIH0gZnJvbSAnLi4vdHlwZXMvQXBwbGljYXRpb24nO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgY2xhc3MgQml0YnVja2V0IGV4dGVuZHMgQmFzZSB7XG4gICAgbmFtZSA9IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYml0YnVja2V0O1xuICAgIGxvZ0ZpbGVQYXRoID0gJy92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYml0YnVja2V0L2xvZy9hdGxhc3NpYW4tYml0YnVja2V0LmxvZyc7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgZ2V0U2VydmljZSgpIHtcbiAgICAgICAgY29uc3QgZW52aXJvbm1lbnQgPSB0aGlzLmdldEVudmlyb25tZW50VmFyaWFibGVzKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidWlsZDoge1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRvQWJzb2x1dGVQYXRoKCcuLi8uLi9hc3NldHMnKSxcbiAgICAgICAgICAgICAgICBkb2NrZXJmaWxlX2lubGluZTogYFxuRlJPTSAke3RoaXMuZ2V0RG9ja2VyQmFzZVRhZygpfVxuQ09QWSAuL3F1aWNrcmVsb2FkLTUuMC40LmphciAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JpdGJ1Y2tldC9wbHVnaW5zL2luc3RhbGxlZC1wbHVnaW5zL3F1aWNrcmVsb2FkLTUuMC40LmphclxuQ09QWSAuL215c3FsLWNvbm5lY3Rvci1qLTguMy4wLmphciAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JpdGJ1Y2tldC9saWIvbXlzcWwtY29ubmVjdG9yLWotOC4zLjAuamFyXG5SVU4gZWNobyBcIi9vcHQvcXVpY2tyZWxvYWRcIiA+IC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYml0YnVja2V0L3F1aWNrcmVsb2FkLnByb3BlcnRpZXM7IFxcXG4gICAgbWtkaXIgLXAgL29wdC9xdWlja3JlbG9hZDsgXFxcbiAgICBjaG93biAtUiBiaXRidWNrZXQ6Yml0YnVja2V0IC9vcHQvcXVpY2tyZWxvYWQ7XG5cblJVTiBta2RpciAtcCAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JpdGJ1Y2tldC9zaGFyZWQ7IFxcXG4gICAgdG91Y2ggL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iaXRidWNrZXQvc2hhcmVkL2JpdGJ1Y2tldC5wcm9wZXJ0aWVzOyBcXFxuICAgIGVjaG8gXCJzZXR1cC5saWNlbnNlPSR7dGltZWJvbWIuYml0YnVja2V0fVwiID4+IC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYml0YnVja2V0L3NoYXJlZC9iaXRidWNrZXQucHJvcGVydGllcztcblxuUlVOIGNob3duIC1SIGJpdGJ1Y2tldDpiaXRidWNrZXQgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iaXRidWNrZXRgXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcG9ydHM6IFtcbiAgICAgICAgICAgICAgICBgJHt0aGlzLm9wdGlvbnMucG9ydCB8fCA4MH06Nzk5MGAsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLmRlYnVnID8gWyc1MDA1OjUwMDUnXSA6IFtdLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGVudmlyb25tZW50LFxuICAgICAgICAgICAgbmV0d29ya3M6IFsnc2hhcmVkJ11cbiAgICAgICAgfTtcbiAgICB9XG4gICAgZ2V0SlZNQXJncygpIHtcbiAgICAgICAgY29uc3QgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUyA9IHN1cGVyLmdldEpWTUFyZ3MoKTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kZWJ1Zykge1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctWGRlYnVnJyk7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1hZ2VudGxpYjpqZHdwPXRyYW5zcG9ydD1kdF9zb2NrZXQsc2VydmVyPXksc3VzcGVuZD1uLGFkZHJlc3M9NTAwNScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJpdmF0ZSBNZXRob2RzXG4gICAgZ2V0RW52aXJvbm1lbnRWYXJpYWJsZXMoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMueG1zID8geyAnSlZNX01JTklNVU1fTUVNT1JZJzogdGhpcy5vcHRpb25zLnhtcyB9IDogJycsXG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMueG14ID8geyAnSlZNX01BWElNVU1fTUVNT1JZJzogdGhpcy5vcHRpb25zLnhteCB9IDogJycsXG4gICAgICAgICAgICAnSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUyc6IHRoaXMuZ2V0SlZNQXJncygpLmpvaW4oJyAnKSxcbiAgICAgICAgICAgICdKREJDX1VSTCc6IHRoaXMuZGF0YWJhc2UudXJsLFxuICAgICAgICAgICAgJ0pEQkNfVVNFUic6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy51c2VybmFtZSxcbiAgICAgICAgICAgICdKREJDX1BBU1NXT1JEJzogdGhpcy5kYXRhYmFzZS5vcHRpb25zLnBhc3N3b3JkLFxuICAgICAgICAgICAgJ0pEQkNfRFJJVkVSJzogYCR7dGhpcy5kYXRhYmFzZS5vcHRpb25zLmRyaXZlcn1gLFxuICAgICAgICB9O1xuICAgIH1cbiAgICA7XG59XG4iLCJpbXBvcnQgeyB0aW1lYm9tYiB9IGZyb20gJy4uL2hlbHBlcnMvbGljZW5jZXMnO1xuaW1wb3J0IHsgdG9BYnNvbHV0ZVBhdGggfSBmcm9tICcuLi9oZWxwZXJzL3RvQWJzb2x1dGVQYXRoJztcbmltcG9ydCB7IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0FwcGxpY2F0aW9uJztcbmltcG9ydCB7IEJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0IGNsYXNzIENvbmZsdWVuY2UgZXh0ZW5kcyBCYXNlIHtcbiAgICBuYW1lID0gU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5jb25mbHVlbmNlO1xuICAgIGxvZ0ZpbGVQYXRoID0gJy92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvY29uZmx1ZW5jZS9sb2dzL2F0bGFzc2lhbi1jb25mbHVlbmNlLmxvZyc7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgZ2V0U2VydmljZSgpIHtcbiAgICAgICAgY29uc3QgZW52aXJvbm1lbnQgPSB0aGlzLmdldEVudmlyb25tZW50VmFyaWFibGVzKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidWlsZDoge1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRvQWJzb2x1dGVQYXRoKCcuLi8uLi9hc3NldHMnKSxcbiAgICAgICAgICAgICAgICBkb2NrZXJmaWxlX2lubGluZTogYFxuRlJPTSAke3RoaXMuZ2V0RG9ja2VyQmFzZVRhZygpfVxuQ09QWSAuL215c3FsLWNvbm5lY3Rvci1qLTguMy4wLmphciAvb3B0L2F0bGFzc2lhbi9jb25mbHVlbmNlL2NvbmZsdWVuY2UvV0VCLUlORi9saWIvbXlzcWwtY29ubmVjdG9yLWotOC4zLjAuamFyXG5DT1BZIC4vcXVpY2tyZWxvYWQtNS4wLjQuamFyIC9vcHQvYXRsYXNzaWFuL2NvbmZsdWVuY2UvY29uZmx1ZW5jZS9XRUItSU5GL2F0bGFzc2lhbi1idW5kbGVkLXBsdWdpbnMvcXVpY2tyZWxvYWQtNS4wLjQuamFyXG5SVU4gZWNobyBcIi9vcHQvcXVpY2tyZWxvYWRcIiA+IC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvY29uZmx1ZW5jZS9xdWlja3JlbG9hZC5wcm9wZXJ0aWVzOyBcXFxuICAgIG1rZGlyIC1wIC9vcHQvcXVpY2tyZWxvYWQ7IFxcXG4gICAgY2hvd24gLVIgY29uZmx1ZW5jZTpjb25mbHVlbmNlIC9vcHQvcXVpY2tyZWxvYWQ7XG5cblJVTiBjaG93biAtUiBjb25mbHVlbmNlOmNvbmZsdWVuY2UgL29wdC9hdGxhc3NpYW4vY29uZmx1ZW5jZWBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwb3J0czogW1xuICAgICAgICAgICAgICAgIGAke3RoaXMub3B0aW9ucy5wb3J0IHx8IDgwfTo4MDkwYCxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMuZGVidWcgPyBbJzUwMDU6NTAwNSddIDogW10sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgZW52aXJvbm1lbnQsXG4gICAgICAgICAgICBuZXR3b3JrczogWydzaGFyZWQnXVxuICAgICAgICB9O1xuICAgIH1cbiAgICBnZXRKVk1BcmdzKCkge1xuICAgICAgICBjb25zdCBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTID0gc3VwZXIuZ2V0SlZNQXJncygpO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmRlYnVnKSB7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1YZGVidWcnKTtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLVhydW5qZHdwOnRyYW5zcG9ydD1kdF9zb2NrZXQsYWRkcmVzcz0qOjUwMDUsc2VydmVyPXksc3VzcGVuZD1uJyk7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1EY29tLnN1bi5tYW5hZ2VtZW50LmpteHJlbW90ZS5wb3J0PTk5OTknKTtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLURjb20uc3VuLm1hbmFnZW1lbnQuam14cmVtb3RlLnJtaS5wb3J0PTk5OTgnKTtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLURjb20uc3VuLm1hbmFnZW1lbnQuam14cmVtb3RlLmF1dGhlbnRpY2F0ZT1mYWxzZScpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctRGNvbS5zdW4ubWFuYWdlbWVudC5qbXhyZW1vdGUuc3NsPWZhbHNlJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1M7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcml2YXRlIE1ldGhvZHNcbiAgICBnZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5jb250ZXh0UGF0aCA/IHsgJ0FUTF9UT01DQVRfQ09OVEVYVFBBVEgnOiB0aGlzLm9wdGlvbnMuY29udGV4dFBhdGggfSA6ICcnLFxuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhtcyA/IHsgJ0pWTV9NSU5JTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXMgfSA6ICcnLFxuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhteCA/IHsgJ0pWTV9NQVhJTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXggfSA6ICcnLFxuICAgICAgICAgICAgJ0pWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MnOiB0aGlzLmdldEpWTUFyZ3MoKS5qb2luKCcgJyksXG4gICAgICAgICAgICAnQVRMX0xJQ0VOU0VfS0VZJzogdGltZWJvbWIuY29uZmx1ZW5jZSxcbiAgICAgICAgICAgICdBVExfSkRCQ19VUkwnOiB0aGlzLmRhdGFiYXNlLnVybCxcbiAgICAgICAgICAgICdBVExfSkRCQ19VU0VSJzogdGhpcy5kYXRhYmFzZS5vcHRpb25zLnVzZXJuYW1lLFxuICAgICAgICAgICAgJ0FUTF9KREJDX1BBU1NXT1JEJzogdGhpcy5kYXRhYmFzZS5vcHRpb25zLnBhc3N3b3JkLFxuICAgICAgICAgICAgJ0FUTF9EQl9UWVBFJzogYCR7dGhpcy5kYXRhYmFzZS5vcHRpb25zLm5hbWV9YCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgO1xufVxuIiwiaW1wb3J0IHsgdGltZWJvbWIgfSBmcm9tICcuLi9oZWxwZXJzL2xpY2VuY2VzJztcbmltcG9ydCB7IHRvQWJzb2x1dGVQYXRoIH0gZnJvbSAnLi4vaGVscGVycy90b0Fic29sdXRlUGF0aCc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmV4cG9ydCBjbGFzcyBKaXJhIGV4dGVuZHMgQmFzZSB7XG4gICAgbmFtZSA9IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuamlyYTtcbiAgICBsb2dGaWxlUGF0aCA9ICcvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2ppcmEvbG9nL2F0bGFzc2lhbi1qaXJhLmxvZyc7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgZ2V0U2VydmljZSgpIHtcbiAgICAgICAgY29uc3QgZW52aXJvbm1lbnQgPSB0aGlzLmdldEVudmlyb25tZW50VmFyaWFibGVzKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidWlsZDoge1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRvQWJzb2x1dGVQYXRoKCcuLi8uLi9hc3NldHMnKSxcbiAgICAgICAgICAgICAgICBkb2NrZXJmaWxlX2lubGluZTogYFxuRlJPTSAke3RoaXMuZ2V0RG9ja2VyQmFzZVRhZygpfVxuQ09QWSAuL2ppcmEtZGF0YS1nZW5lcmF0b3ItNS4wLjAuamFyIC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvamlyYS9wbHVnaW5zL2luc3RhbGxlZC1wbHVnaW5zL2ppcmEtZGF0YS1nZW5lcmF0b3ItNS4wLjAuamFyXG5DT1BZIC4vbXlzcWwtY29ubmVjdG9yLWotOC4zLjAuamFyIC9vcHQvYXRsYXNzaWFuL2ppcmEvbGliL215c3FsLWNvbm5lY3Rvci1qLTguMy4wLmphclxuQ09QWSAuL3F1aWNrcmVsb2FkLTUuMC40LmphciAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2ppcmEvcGx1Z2lucy9pbnN0YWxsZWQtcGx1Z2lucy9xdWlja3JlbG9hZC01LjAuNC5qYXJcblJVTiBlY2hvIFwiL29wdC9xdWlja3JlbG9hZFwiID4gL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9qaXJhL3F1aWNrcmVsb2FkLnByb3BlcnRpZXM7IFxcXG4gICAgbWtkaXIgLXAgL29wdC9xdWlja3JlbG9hZDsgXFxcbiAgICBjaG93biAtUiBqaXJhOmppcmEgL29wdC9xdWlja3JlbG9hZDtcblxuUlVOIGNob3duIC1SIGppcmE6amlyYSAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2ppcmFgXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcG9ydHM6IFtcbiAgICAgICAgICAgICAgICBgJHt0aGlzLm9wdGlvbnMucG9ydH06ODA4MGAsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLmRlYnVnID8gWyc1MDA1OjUwMDUnXSA6IFtdLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGVudmlyb25tZW50LFxuICAgICAgICAgICAgbmV0d29ya3M6IFsnc2hhcmVkJ11cbiAgICAgICAgfTtcbiAgICB9XG4gICAgZ2V0SlZNQXJncygpIHtcbiAgICAgICAgY29uc3QgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUyA9IHN1cGVyLmdldEpWTUFyZ3MoKTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kZWJ1Zykge1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctWGRlYnVnJyk7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1hZ2VudGxpYjpqZHdwPXRyYW5zcG9ydD1kdF9zb2NrZXQsc2VydmVyPXksc3VzcGVuZD1uLGFkZHJlc3M9Kjo1MDA1Jyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1M7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcml2YXRlIE1ldGhvZHNcbiAgICBnZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpIHtcbiAgICAgICAgLy8gRm9yIHNvbWUgcmVhc29uLCBKaXJhIHVzZXMgYSBkaWZmZXJlbnQgdHlwZSBmb3IgcG9zdGdyZXNcbiAgICAgICAgY29uc3QgZGJUeXBlID0gdGhpcy5kYXRhYmFzZS5vcHRpb25zLm5hbWUgPT09ICdwb3N0Z3Jlc3FsJyA/ICdwb3N0Z3JlczcyJyA6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy5uYW1lO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLmNvbnRleHRQYXRoID8geyAnQVRMX1RPTUNBVF9DT05URVhUUEFUSCc6IHRoaXMub3B0aW9ucy5jb250ZXh0UGF0aCB9IDogJycsXG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMueG1zID8geyAnSlZNX01JTklNVU1fTUVNT1JZJzogdGhpcy5vcHRpb25zLnhtcyB9IDogJycsXG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMueG14ID8geyAnSlZNX01BWElNVU1fTUVNT1JZJzogdGhpcy5vcHRpb25zLnhteCB9IDogJycsXG4gICAgICAgICAgICAnSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUyc6IHRoaXMuZ2V0SlZNQXJncygpLmpvaW4oJyAnKSxcbiAgICAgICAgICAgICdBVExfTElDRU5TRV9LRVknOiB0aW1lYm9tYi5jb25mbHVlbmNlLFxuICAgICAgICAgICAgJ0FUTF9KREJDX1VSTCc6IHRoaXMuZGF0YWJhc2UudXJsLFxuICAgICAgICAgICAgJ0FUTF9KREJDX1VTRVInOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMudXNlcm5hbWUsXG4gICAgICAgICAgICAnQVRMX0pEQkNfUEFTU1dPUkQnOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMucGFzc3dvcmQsXG4gICAgICAgICAgICAnQVRMX0RCX0RSSVZFUic6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy5kcml2ZXIsXG4gICAgICAgICAgICAnQVRMX0RCX1RZUEUnOiBkYlR5cGUsXG4gICAgICAgICAgICAnSklSQV9TRVRVUF9MSUNFTlNFJzogdGltZWJvbWIuamlyYVxuICAgICAgICB9O1xuICAgIH1cbiAgICA7XG59XG4iLCJpbXBvcnQgeyBCYW1ib28gfSBmcm9tICcuLi9hcHBsaWNhdGlvbnMvYmFtYm9vJztcbmltcG9ydCB7IEJpdGJ1Y2tldCB9IGZyb20gJy4uL2FwcGxpY2F0aW9ucy9iaXRidWNrZXQnO1xuaW1wb3J0IHsgQ29uZmx1ZW5jZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9ucy9jb25mbHVlbmNlJztcbmltcG9ydCB7IEppcmEgfSBmcm9tICcuLi9hcHBsaWNhdGlvbnMvamlyYSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbk9wdGlvbnMsIFN1cHBvcnRlZEFwcGxpY2F0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0FwcGxpY2F0aW9uJztcbmV4cG9ydCBjb25zdCBnZXRBcHBsaWNhdGlvbiA9IChvcHRpb25zKSA9PiB7XG4gICAgc3dpdGNoIChvcHRpb25zLm5hbWUpIHtcbiAgICAgICAgY2FzZSBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmppcmE6IHJldHVybiBuZXcgSmlyYShBcHBsaWNhdGlvbk9wdGlvbnMucGFyc2Uob3B0aW9ucykpO1xuICAgICAgICBjYXNlIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuY29uZmx1ZW5jZTogcmV0dXJuIG5ldyBDb25mbHVlbmNlKEFwcGxpY2F0aW9uT3B0aW9ucy5wYXJzZShvcHRpb25zKSk7XG4gICAgICAgIGNhc2UgU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iYW1ib286IHJldHVybiBuZXcgQmFtYm9vKEFwcGxpY2F0aW9uT3B0aW9ucy5wYXJzZShvcHRpb25zKSk7XG4gICAgICAgIGNhc2UgU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iaXRidWNrZXQ6IHJldHVybiBuZXcgQml0YnVja2V0KEFwcGxpY2F0aW9uT3B0aW9ucy5wYXJzZShvcHRpb25zKSk7XG4gICAgfVxufTtcbiIsImltcG9ydCB7IHJlYWRGaWxlU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IHRvQWJzb2x1dGVQYXRoIH0gZnJvbSAnLi90b0Fic29sdXRlUGF0aCc7XG5leHBvcnQgY29uc3QgZ2V0VmVyc2lvbnMgPSAoKSA9PiB7XG4gICAgY29uc3QgY29udGVudCA9IHJlYWRGaWxlU3luYyh0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzL3ZlcnNpb25zLmpzb24nKSwgJ3V0Zi04Jyk7XG4gICAgY29uc3QgdmVyc2lvbnMgPSBKU09OLnBhcnNlKGNvbnRlbnQpO1xuICAgIHJldHVybiB2ZXJzaW9ucztcbn07XG4iLCJleHBvcnQgY29uc3Qgc2hvd0hlbHBXaXRoRGVmYXVsdENvbW1hbmRPcHRpb25zID0ge1xuICAgIHZpc2libGVPcHRpb25zOiAoY21kKSA9PiB7XG4gICAgICAgIGxldCBvcHRpb25zID0gY21kLm9wdGlvbnM7XG4gICAgICAgIGlmICghY21kLnBhcmVudCAmJiBvcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdENvbW1hbmROYW1lID0gY21kLl9kZWZhdWx0Q29tbWFuZE5hbWU7XG4gICAgICAgICAgICBpZiAoZGVmYXVsdENvbW1hbmROYW1lKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdENvbW1hbmQgPSBjbWQuY29tbWFuZHMuZmluZChpdGVtID0+IGl0ZW0uX25hbWUgPT09IGRlZmF1bHRDb21tYW5kTmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKGRlZmF1bHRDb21tYW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBkZWZhdWx0Q29tbWFuZC5vcHRpb25zO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShvcHRpb25zKTtcbiAgICB9XG59O1xuIiwiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0IHsgQ29tbWFuZCBhcyBDb21tYW5kZXIsIEludmFsaWRPcHRpb25Bcmd1bWVudEVycm9yLCBPcHRpb24gfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgZ3JhY2VmdWxFeGl0IH0gZnJvbSAnZXhpdC1ob29rJztcbmltcG9ydCB7IEFjdGlvbkhhbmRsZXIgfSBmcm9tICcuLi9oZWxwZXJzL0FjdGlvbkhhbmRsZXInO1xuaW1wb3J0IHsgQU1QUyB9IGZyb20gJy4uL2hlbHBlcnMvYW1wcyc7XG5pbXBvcnQgeyBnZXRBcHBsaWNhdGlvbiB9IGZyb20gJy4uL2hlbHBlcnMvZ2V0QXBwbGljYXRpb24nO1xuaW1wb3J0IHsgZ2V0VmVyc2lvbnMgfSBmcm9tICcuLi9oZWxwZXJzL2dldFZlcnNpb25zJztcbmltcG9ydCB7IHNob3dIZWxwV2l0aERlZmF1bHRDb21tYW5kT3B0aW9ucyB9IGZyb20gJy4uL2hlbHBlcnMvc2hvd0hlbHBXaXRoRGVmYXVsdENvbW1hbmRPcHRpb25zJztcbmltcG9ydCB7IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0FwcGxpY2F0aW9uJztcbmltcG9ydCB7IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyB9IGZyb20gJy4uL3R5cGVzL0RhdGFiYXNlJztcbmNvbnN0IHByb2dyYW0gPSBuZXcgQ29tbWFuZGVyKCk7XG5jb25zdCB2ZXJzaW9ucyA9IGdldFZlcnNpb25zKCk7XG5jb25zdCBDb21tYW5kID0gKCkgPT4ge1xuICAgIGxldCBpbnN0YW5jZSA9IG51bGw7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgYWN0aW9uOiBhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgYW1wcyA9IG5ldyBBTVBTKHtcbiAgICAgICAgICAgICAgICBjd2Q6IG9wdGlvbnMuY3dkLFxuICAgICAgICAgICAgICAgIHByb2ZpbGVzOiBvcHRpb25zLmFjdGl2YXRlUHJvZmlsZXM/LnNwbGl0KCcsJykgfHwgW11cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubmFtZSAmJiBvcHRpb25zLnRhZyAmJiBvcHRpb25zLmFjdGl2YXRlUHJvZmlsZXMpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wdGlvbkFyZ3VtZW50RXJyb3IoJ0ludmFsaWQgYXJndW1lbnQgXCItLWFjdGl2YXRlLXByb2ZpbGVzXCInKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKG9wdGlvbnMubmFtZSAmJiBvcHRpb25zLnRhZyAmJiBvcHRpb25zLmN3ZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3B0aW9uQXJndW1lbnRFcnJvcignSW52YWxpZCBhcmd1bWVudCBcIi0tY3dkXCInKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghb3B0aW9ucy5uYW1lICYmICFhbXBzLmlzQXRsYXNzaWFuUGx1Z2luKCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBmaW5kIGFuIEF0bGFzc2lhbiBQbHVnaW4gcHJvamVjdCBpbiB0aGUgY3VycmVudCBkaXJlY3Rvcnkg8J+klCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3B0aW9ucy5uYW1lID0gb3B0aW9ucy5uYW1lIHx8IGFtcHMuZ2V0QXBwbGljYXRpb24oKTtcbiAgICAgICAgICAgIGlmICghb3B0aW9ucy5uYW1lKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgQXRsYXNzaWFuIFBsdWdpbiBwcm9qZWN0IGRvZXMgbm90IGNvbnRhaW4gYW4gQU1QUyBjb25maWd1cmF0aW9uLCB1bmFibGUgdG8gZGV0ZWN0IHByb2R1Y3Qg8J+YsCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFvcHRpb25zLnRhZykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZlcnNpb24gPSBhbXBzLmdldEFwcGxpY2F0aW9uVmVyc2lvbigpO1xuICAgICAgICAgICAgICAgIGlmICghdmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBkZXRlcm1pbmUgdmVyc2lvbiBmcm9tIEFNUFMgYW5kIG5vIHByb2R1Y3QgdmVyc2lvbiBwcm92aWRlZCAoLS10YWcpJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnRhZyA9IHZlcnNpb247XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF2ZXJzaW9uc1tvcHRpb25zLm5hbWVdLmluY2x1ZGVzKG9wdGlvbnMudGFnKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvZHVjdCB2ZXJzaW9uICcke29wdGlvbnMudGFnfScgaXMgaW52YWxpZC4gQWxsb3dlZCBjaG9pY2VzIGFyZSAke3ZlcnNpb25zW29wdGlvbnMubmFtZV0uam9pbignLCAnKX0uYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpbnN0YW5jZSA9IGdldEFwcGxpY2F0aW9uKG9wdGlvbnMpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coYFJlbW92aW5nICR7b3B0aW9ucy5uYW1lfSBhbmQgZGVsZXRpbmcgYWxsIGRhdGEuLi4g8J+SlGApO1xuICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlLnJlc2V0KCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFJlbW92ZWQgJHtvcHRpb25zLm5hbWV9IGFuZCBkZWxldGVkIGFsbCBkYXRhIPCfkqpgKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvckhhbmRsZXI6IGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBpZiAoaW5zdGFuY2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgUmVtb3ZpbmcgJHtvcHRpb25zLm5hbWV9IGFuZCBkZWxldGluZyBhbGwgZGF0YS4uLiDwn5KUYCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgaW5zdGFuY2UucmVzZXQoKS5jYXRjaCgoKSA9PiBudWxsKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgUmVtb3ZlZCAke29wdGlvbnMubmFtZX0gYW5kIGRlbGV0ZWQgYWxsIGRhdGEg8J+SqmApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbn07XG5wcm9ncmFtXG4gICAgLm5hbWUoJ2RjZHggcmVzZXQnKVxuICAgIC5kZXNjcmlwdGlvbihgUmVzZXQgdGhlIGhvc3QgYXBwbGljYXRpb24gYmFzZWQgb24gdGhlIEF0bGFzc2lhbiBNYXZlbiBQbHVnaW4gU3VpdGUgKEFNUFMpIGNvbmZpZ3VyYXRpb24uXG5JZiB5b3Ugd2lzaCB0byByZXNldCBhIHNwZWNpZmljIGhvc3QgYXBwbGljYXRpb24gcnVubmluZyBzdGFuZGFsb25lLCBjYWxsIHRoaXMgY29tbWFuZCB3aXRoICdkY2R4IHJlc2V0IDxuYW1lPidcblxuSU1QT1JUQU5UOiBUaGlzIHdpbGwgcmVtb3ZlIGFsbCBkYXRhIGZyb20gaG9zdCBhcHBsaWNhdGlvbiBhbmQgZGF0YWJhc2UhXG5JZiB5b3Ugd2lzaCB0byBwcmVzZXJ2ZSB0aGUgZGF0YSwgcGxlYXNlIHVzZSB0aGUgJ2RjZHggc3RvcCcgY29tbWFuZCBpbnN0ZWFkYClcbiAgICAuYWRkSGVscFRleHQoJ2FmdGVyQWxsJywgJ+KAiycpIC8vIHRoZXJlIGlzIGEgbm9uLXplcm8gd2hpdGUgc3BhY2UgYmVjYXVzZSB0aGUgb25seSByZWFzb24gdG8gaGF2ZSB0aGlzIGlzIHRvIGZvcmNlIGEgbGluZSBicmVha1xuICAgIC5jb25maWd1cmVIZWxwKHNob3dIZWxwV2l0aERlZmF1bHRDb21tYW5kT3B0aW9ucylcbiAgICAuYWxsb3dVbmtub3duT3B0aW9uKGZhbHNlKVxuICAgIC5hbGxvd0V4Y2Vzc0FyZ3VtZW50cyhmYWxzZSlcbiAgICAuc2hvd0hlbHBBZnRlckVycm9yKHRydWUpO1xucHJvZ3JhbVxuICAgIC5jb21tYW5kKCdmcm9tQU1QUycsIHsgaXNEZWZhdWx0OiB0cnVlLCBoaWRkZW46IHRydWUgfSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1kLCAtLWRhdGFiYXNlIDxuYW1lPicsICdUaGUgZGF0YWJhc2UgZW5naW5lIHRvIHJlc2V0JykuY2hvaWNlcyhPYmplY3QudmFsdWVzKFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMpKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctUCwgLS1hY3RpdmF0ZS1wcm9maWxlcyA8YXJnPicsICdDb21tYS1kZWxpbWl0ZWQgbGlzdCBvZiBwcm9maWxlcyB0byBhY3RpdmF0ZScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1jd2QgPGRpcmVjdG9yeT4nLCAnU3BlY2lmeSB0aGUgd29ya2luZyBkaXJlY3RvcnknKSlcbiAgICAuYWN0aW9uKG9wdGlvbnMgPT4gQWN0aW9uSGFuZGxlcihwcm9ncmFtLCBDb21tYW5kKCksIG9wdGlvbnMpKTtcbnByb2dyYW1cbiAgICAuY29tbWFuZCgnYmFtYm9vJylcbiAgICAuZGVzY3JpcHRpb24oJ1Jlc2V0IEF0bGFzc2lhbiBCYW1ib28gKHN0YW5kYWxvbmUpJylcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy10LCAtLXRhZyA8dGFnPicsICdUaGUgRG9ja2VyIHRhZyBvZiBBdGxhc3NpYW4gQmFtYm9vJykuY2hvaWNlcyh2ZXJzaW9uc1tTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJhbWJvb10pLmRlZmF1bHQoJ2xhdGVzdCcpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLWQsIC0tZGF0YWJhc2UgPG5hbWU+JywgJ1RoZSBkYXRhYmFzZSBlbmdpbmUgdG8gcmVzZXQnKS5jaG9pY2VzKE9iamVjdC52YWx1ZXMoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcykpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1QLCAtLWFjdGl2YXRlLXByb2ZpbGVzIDxhcmc+JywgJ0NvbW1hLWRlbGltaXRlZCBsaXN0IG9mIHByb2ZpbGVzIHRvIGFjdGl2YXRlIChvbmx5IGF2YWlsYWJsZSB3aXRob3V0IC0tdGFnKScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1jd2QgPGRpcmVjdG9yeT4nLCAnU3BlY2lmeSB0aGUgd29ya2luZyBkaXJlY3RvcnkgKG9ubHkgYXZhaWxhYmxlIHdpdGhvdXQgLS10YWcpJykpXG4gICAgLmFjdGlvbihvcHRpb25zID0+IEFjdGlvbkhhbmRsZXIocHJvZ3JhbSwgQ29tbWFuZCgpLCB7IC4uLm9wdGlvbnMsIG5hbWU6IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vIH0pKTtcbnByb2dyYW1cbiAgICAuY29tbWFuZCgnYml0YnVja2V0JylcbiAgICAuZGVzY3JpcHRpb24oJ1Jlc2V0IEF0bGFzc2lhbiBCaXRidWNrZXQgKHN0YW5kYWxvbmUpJylcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy10LCAtLXRhZyA8dGFnPicsICdUaGUgRG9ja2VyIHRhZyBvZiBBdGxhc3NpYW4gQml0YnVja2V0JykuY2hvaWNlcyh2ZXJzaW9uc1tTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldF0pLmRlZmF1bHQoJ2xhdGVzdCcpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLWQsIC0tZGF0YWJhc2UgPG5hbWU+JywgJ1RoZSBkYXRhYmFzZSBlbmdpbmUgdG8gcmVzZXQnKS5jaG9pY2VzKE9iamVjdC52YWx1ZXMoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcykpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1QLCAtLWFjdGl2YXRlLXByb2ZpbGVzIDxhcmc+JywgJ0NvbW1hLWRlbGltaXRlZCBsaXN0IG9mIHByb2ZpbGVzIHRvIGFjdGl2YXRlIChvbmx5IGF2YWlsYWJsZSB3aXRob3V0IC0tdGFnKScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1jd2QgPGRpcmVjdG9yeT4nLCAnU3BlY2lmeSB0aGUgd29ya2luZyBkaXJlY3RvcnkgKG9ubHkgYXZhaWxhYmxlIHdpdGhvdXQgLS10YWcpJykpXG4gICAgLmFjdGlvbihvcHRpb25zID0+IEFjdGlvbkhhbmRsZXIocHJvZ3JhbSwgQ29tbWFuZCgpLCB7IC4uLm9wdGlvbnMsIG5hbWU6IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYml0YnVja2V0IH0pKTtcbnByb2dyYW1cbiAgICAuY29tbWFuZCgnY29uZmx1ZW5jZScpXG4gICAgLmRlc2NyaXB0aW9uKCdSZXNldCBBdGxhc3NpYW4gQ29uZmx1ZW5jZSAoc3RhbmRhbG9uZSknKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLXQsIC0tdGFnIDx0YWc+JywgJ1RoZSBEb2NrZXIgdGFnIG9mIEF0bGFzc2lhbiBDb25mbHVlbmNlJykuY2hvaWNlcyh2ZXJzaW9uc1tTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2VdKS5kZWZhdWx0KCdsYXRlc3QnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1kLCAtLWRhdGFiYXNlIDxuYW1lPicsICdUaGUgZGF0YWJhc2UgZW5naW5lIHRvIHJlc2V0JykuY2hvaWNlcyhPYmplY3QudmFsdWVzKFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMpKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctUCwgLS1hY3RpdmF0ZS1wcm9maWxlcyA8YXJnPicsICdDb21tYS1kZWxpbWl0ZWQgbGlzdCBvZiBwcm9maWxlcyB0byBhY3RpdmF0ZSAob25seSBhdmFpbGFibGUgd2l0aG91dCAtLXRhZyknKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tY3dkIDxkaXJlY3Rvcnk+JywgJ1NwZWNpZnkgdGhlIHdvcmtpbmcgZGlyZWN0b3IgKG9ubHkgYXZhaWxhYmxlIHdpdGhvdXQgLS10YWcpJykpXG4gICAgLmFjdGlvbihvcHRpb25zID0+IEFjdGlvbkhhbmRsZXIocHJvZ3JhbSwgQ29tbWFuZCgpLCB7IC4uLm9wdGlvbnMsIG5hbWU6IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuY29uZmx1ZW5jZSB9KSk7XG5wcm9ncmFtXG4gICAgLmNvbW1hbmQoJ2ppcmEnKVxuICAgIC5kZXNjcmlwdGlvbignUmVzZXQgQXRsYXNzaWFuIEppcmEgKHN0YW5kYWxvbmUpJylcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy10LCAtLXRhZyA8dGFnPicsICdUaGUgRG9ja2VyIHRhZyBvZiBBdGxhc3NpYW4gSmlyYScpLmNob2ljZXModmVyc2lvbnNbU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5qaXJhXSkuZGVmYXVsdCgnbGF0ZXN0JykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctZCwgLS1kYXRhYmFzZSA8bmFtZT4nLCAnVGhlIGRhdGFiYXNlIGVuZ2luZSB0byByZXNldCcpLmNob2ljZXMoT2JqZWN0LnZhbHVlcyhTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzKSkuZGVmYXVsdChTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLnBvc3RncmVzcWwpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLVAsIC0tYWN0aXZhdGUtcHJvZmlsZXMgPGFyZz4nLCAnQ29tbWEtZGVsaW1pdGVkIGxpc3Qgb2YgcHJvZmlsZXMgdG8gYWN0aXZhdGUgKG9ubHkgYXZhaWxhYmxlIHdpdGhvdXQgLS10YWcpJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWN3ZCA8ZGlyZWN0b3J5PicsICdTcGVjaWZ5IHRoZSB3b3JraW5nIGRpcmVjdG9yeSAob25seSBhdmFpbGFibGUgd2l0aG91dCAtLXRhZyknKSlcbiAgICAuYWN0aW9uKG9wdGlvbnMgPT4gQWN0aW9uSGFuZGxlcihwcm9ncmFtLCBDb21tYW5kKCksIHsgLi4ub3B0aW9ucywgbmFtZTogU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5qaXJhIH0pKTtcbnByb2dyYW0ucGFyc2VBc3luYyhwcm9jZXNzLmFyZ3YpLmNhdGNoKCgpID0+IGdyYWNlZnVsRXhpdCgxKSk7XG5wcm9jZXNzLm9uKCdTSUdJTlQnLCAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYFJlY2VpdmVkIHRlcm0gc2lnbmFsLCB0cnlpbmcgdG8gc3RvcCBncmFjZWZ1bGx5IPCfkqpgKTtcbiAgICBncmFjZWZ1bEV4aXQoKTtcbn0pO1xuIl0sIm5hbWVzIjpbInZlcnNpb25zIiwiQmFzZSIsIkNvbW1hbmRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVPLE1BQU0sYUFBYSxHQUFHLE9BQU8sT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxFQUFFLE9BQU8sS0FBSztBQUNuRixJQUFJLE1BQU0sR0FBRyxHQUFHLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDMUMsSUFBSSxNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sS0FBSztBQUNyQyxRQUFRLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUM5QixRQUFRLGFBQWEsQ0FBQyxPQUFPLElBQUksS0FBSztBQUN0QyxZQUFZLElBQUk7QUFDaEIsZ0JBQWdCLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRTtBQUNoQyxvQkFBb0IsTUFBTSxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7QUFDOUQsaUJBQWlCO0FBQ2pCLGdCQUFnQixJQUFJLFlBQVksRUFBRTtBQUNsQyxvQkFBb0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUN6RCxpQkFBaUI7QUFDakIscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxvQkFBb0IsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pDLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsWUFBWSxPQUFPLEdBQUcsRUFBRTtBQUN4QixnQkFBZ0IsTUFBTSxPQUFPLEdBQUcsR0FBRyxZQUFZLEtBQUssR0FBRyxHQUFHLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztBQUN6RSxnQkFBZ0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2hDLGFBQWE7QUFDYixTQUFTLEVBQUU7QUFDWCxZQUFZLElBQUksRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUk7QUFDL0IsU0FBUyxDQUFDLENBQUM7QUFDWCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJO0FBQ2pDLFlBQVksSUFBSSxHQUFHLFlBQVksQ0FBQyxDQUFDLFFBQVEsRUFBRTtBQUMzQyxnQkFBZ0IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJO0FBQzVDLG9CQUFvQixZQUFZLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN6RyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ25CLGFBQWE7QUFDYixpQkFBaUIsSUFBSSxHQUFHLFlBQVksS0FBSyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtBQUN0RSxnQkFBZ0IsWUFBWSxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUM5QyxhQUFhO0FBQ2IsWUFBWSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsU0FBUyxDQUFDLENBQUM7QUFDWCxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJO0FBQ3hCLFFBQVEsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFO0FBQzlCLFlBQVksT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNuQztBQUNBO0FBQ0EsU0FBUztBQUNULGFBQWE7QUFDYixZQUFZLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsU0FBUztBQUNULEtBQUssQ0FBQyxDQUFDO0FBQ1AsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUlBLFVBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztBQUN6SCxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztBQUNoRyxJQUFJLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLEtBQUssdUJBQXVCLENBQUMsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUM7QUFDeEcsQ0FBQyxDQUFDLENBQUM7QUFDSSxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDO0FBQ25ELElBQUksSUFBSSxFQUFFLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxLQUFLLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUNoSixJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSUEsVUFBUSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0FBQ3BILElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQ2hHLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksS0FBSyx1QkFBdUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQztBQUN4RyxDQUFDLENBQUMsQ0FBQztBQUNJLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUM7QUFDbkQsSUFBSSxJQUFJLEVBQUUsd0JBQXdCLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLEtBQUssd0JBQXdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0FBQ2hKLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJQSxVQUFRLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7QUFDcEgsSUFBSSxPQUFPLEVBQUUsc0JBQXNCLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztBQUN4RCxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztBQUNoRyxJQUFJLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztBQUNwRSxJQUFJLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztBQUNqRCxJQUFJLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLEtBQUssOENBQThDLENBQUMsQ0FBQyxPQUFPLENBQUMsOENBQThDLENBQUM7QUFDdEosQ0FBQyxDQUFDOztBQzNDSyxNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDNUMsSUFBSSxNQUFNO0FBQ1YsSUFBSSxZQUFZO0FBQ2hCLElBQUksV0FBVztBQUNmLElBQUksUUFBUTtBQUNaLENBQUMsQ0FBQyxDQUFDO0FBQ0ksTUFBTSxrQkFBa0IsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQzNDLElBQUksSUFBSSxFQUFFLHFCQUFxQjtBQUMvQixJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztBQUNyQyxJQUFJLFFBQVEsRUFBRSx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO0FBQzVELElBQUksV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0FBQzdDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDakYsSUFBSSxXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtBQUMzQixJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztBQUNwQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztBQUNwQyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztBQUNyQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUM1QixJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0FBQ3hCLElBQUksZUFBZSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7QUFDL0IsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0FBQ2hDLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0FBQ3JDLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0FBQ3JDLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQ3BDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7QUFDbkIsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0FBQ1gsSUFBSSxXQUFXLEVBQUUsSUFBSTtBQUNyQixJQUFJLEdBQUcsRUFBRSxJQUFJO0FBQ2IsSUFBSSxPQUFPLEVBQUUsSUFBSTtBQUNqQixJQUFJLGVBQWUsRUFBRSxJQUFJO0FBQ3pCLElBQUksZ0JBQWdCLEVBQUUsSUFBSTtBQUMxQixJQUFJLEdBQUcsRUFBRSxJQUFJO0FBQ2IsQ0FBQyxDQUFDOztBQ3pCSyxNQUFNLElBQUksQ0FBQztBQUNsQixJQUFJLE9BQU8sQ0FBQztBQUNaLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztBQUNqQjtBQUNBLElBQUksV0FBVyxDQUFDLE9BQU8sR0FBRztBQUMxQixRQUFRLFFBQVEsRUFBRSxFQUFFO0FBQ3BCLEtBQUssRUFBRTtBQUNQLFFBQVEsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7QUFDL0IsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLEdBQUc7QUFDWCxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtBQUN4QixZQUFZLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlDLFlBQVksSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUN6QixnQkFBZ0IsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO0FBQzlFLGFBQWE7QUFDYixTQUFTO0FBQ1QsS0FBSztBQUNMLElBQUksTUFBTSxLQUFLLENBQUMsSUFBSSxFQUFFO0FBQ3RCLFFBQVEsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEtBQUs7QUFDaEQsWUFBWSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7QUFDNUIsZ0JBQWdCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xELGdCQUFnQixJQUFJLENBQUMsTUFBTSxFQUFFO0FBQzdCLG9CQUFvQixNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQyxDQUFDO0FBQ3BGLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsWUFBWSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztBQUNuSCxZQUFZLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksS0FBSztBQUM1QyxnQkFBZ0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDbEMsZ0JBQWdCLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssR0FBRyxFQUFFO0FBQ2hELG9CQUFvQixPQUFPLEVBQUUsQ0FBQztBQUM5QixpQkFBaUI7QUFDakIscUJBQXFCO0FBQ3JCLG9CQUFvQixNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RSxpQkFBaUI7QUFDakIsYUFBYSxDQUFDLENBQUM7QUFDZixTQUFTLENBQUMsQ0FBQztBQUNYLEtBQUs7QUFDTCxJQUFJLGlCQUFpQixHQUFHLE1BQU07QUFDOUIsUUFBUSxJQUFJO0FBQ1osWUFBWSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7QUFDM0UsWUFBWSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssa0JBQWtCLENBQUMsQ0FBQztBQUMvRSxTQUFTO0FBQ1QsUUFBUSxPQUFPLEdBQUcsRUFBRTtBQUNwQixZQUFZLE9BQU8sS0FBSyxDQUFDO0FBQ3pCLFNBQVM7QUFDVCxLQUFLLENBQUM7QUFDTixJQUFJLHFCQUFxQixHQUFHO0FBQzVCLFFBQVEsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0FBQ3BELFFBQVEsSUFBSSxZQUFZLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtBQUNyQyxZQUFZLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVELFlBQVksT0FBTyxPQUFPLENBQUM7QUFDM0IsU0FBUztBQUNULGFBQWEsSUFBSSxZQUFZLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRTtBQUN4QyxZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsNkdBQTZHLENBQUMsQ0FBQztBQUMzSSxTQUFTO0FBQ1QsUUFBUSxPQUFPLFNBQVMsQ0FBQztBQUN6QixLQUFLO0FBQ0wsSUFBSSxjQUFjLEdBQUc7QUFDckIsUUFBUSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7QUFDcEQsUUFBUSxJQUFJLFlBQVksQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFO0FBQ3JDLFlBQVksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkQsWUFBWSxPQUFPLElBQUksQ0FBQztBQUN4QixTQUFTO0FBQ1QsYUFBYSxJQUFJLFlBQVksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFO0FBQ3hDLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyw2R0FBNkcsQ0FBQyxDQUFDO0FBQzNJLFNBQVM7QUFDVCxRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLEtBQUs7QUFDTCxJQUFJLGVBQWUsR0FBRztBQUN0QixRQUFRLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDakMsUUFBUSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLDBFQUEwRSxDQUFDLENBQUM7QUFDaEgsUUFBUSxNQUFNLHNCQUFzQixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzNGLFFBQVEsc0JBQXNCLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSTtBQUMvQyxZQUFZLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7QUFDL0MsWUFBWSxJQUFJLFVBQVUsRUFBRTtBQUM1QixnQkFBZ0IsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDN0QsZ0JBQWdCLElBQUksbUJBQW1CLEtBQUssTUFBTSxFQUFFLFVBQVUsRUFBRTtBQUNoRSxvQkFBb0IsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLE1BQU0sSUFBSSxFQUFFLENBQUM7QUFDM0Qsb0JBQW9CLElBQUksYUFBYSxFQUFFLFFBQVEsRUFBRTtBQUNqRCx3QkFBd0IsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsRUFBRTtBQUNwRSw0QkFBNEIsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEtBQUs7QUFDeEUsZ0NBQWdDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzFKLGdDQUFnQyxJQUFJLG9CQUFvQixFQUFFO0FBQzFELG9DQUFvQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2hHLG9DQUFvQyxJQUFJLE9BQU8sRUFBRTtBQUNqRCx3Q0FBd0MsTUFBTSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNsRixxQ0FBcUM7QUFDckMsaUNBQWlDO0FBQ2pDLDZCQUE2QixDQUFDLENBQUM7QUFDL0IseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3Qiw0QkFBNEIsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLGFBQWEsRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDO0FBQzlFLDRCQUE0QixJQUFJLE9BQU8sRUFBRTtBQUN6QyxnQ0FBZ0MsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDMUosZ0NBQWdDLElBQUksb0JBQW9CLEVBQUU7QUFDMUQsb0NBQW9DLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDaEcsb0NBQW9DLElBQUksT0FBTyxFQUFFO0FBQ2pELHdDQUF3QyxNQUFNLENBQUMsR0FBRyxDQUFDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2xGLHFDQUFxQztBQUNyQyxpQ0FBaUM7QUFDakMsNkJBQTZCO0FBQzdCLHlCQUF5QjtBQUN6QixxQkFBcUI7QUFDckIsaUJBQWlCO0FBQ2pCLHFCQUFxQjtBQUNyQixvQkFBb0IsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ2xHLG9CQUFvQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFELG9CQUFvQixJQUFJLG9CQUFvQixFQUFFO0FBQzlDLHdCQUF3QixNQUFNLENBQUMsR0FBRyxDQUFDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2xFLHFCQUFxQjtBQUNyQixpQkFBaUI7QUFDakIsYUFBYTtBQUNiLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsUUFBUSxPQUFPLE1BQU0sQ0FBQztBQUN0QixLQUFLO0FBQ0w7QUFDQSxJQUFJLHVCQUF1QixDQUFDLEtBQUssRUFBRTtBQUNuQyxRQUFRLElBQUksS0FBSyxFQUFFLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDaEUsWUFBWSxPQUFPLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDckQsU0FBUztBQUNULGFBQWEsSUFBSSxLQUFLLEVBQUUsUUFBUSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRTtBQUMzRSxZQUFZLE9BQU8scUJBQXFCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztBQUMzRCxTQUFTO0FBQ1QsYUFBYSxJQUFJLEtBQUssRUFBRSxRQUFRLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFO0FBQ3ZFLFlBQVksT0FBTyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ3ZELFNBQVM7QUFDVCxhQUFhLElBQUksS0FBSyxFQUFFLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUU7QUFDMUUsWUFBWSxPQUFPLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7QUFDMUQsU0FBUztBQUNULFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsS0FBSztBQUNMLElBQUksVUFBVSxDQUFDLElBQUksRUFBRTtBQUNyQixRQUFRLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7QUFDM0MsUUFBUSxJQUFJLFVBQVUsRUFBRTtBQUN4QixZQUFZLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3pELFlBQVksTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLE1BQU0sSUFBSSxFQUFFLENBQUM7QUFDbkQsWUFBWSxJQUFJLGFBQWEsRUFBRSxjQUFjLEVBQUU7QUFDL0MsZ0JBQWdCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDdkYsYUFBYTtBQUNiLGlCQUFpQixJQUFJLGFBQWEsRUFBRSxRQUFRLEVBQUU7QUFDOUMsZ0JBQWdCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxHQUFHLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7QUFDckksZ0JBQWdCLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUU7QUFDaEQsb0JBQW9CLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2RSxpQkFBaUI7QUFDakIsYUFBYTtBQUNiLFNBQVM7QUFDVCxRQUFRLE9BQU8sU0FBUyxDQUFDO0FBQ3pCLEtBQUs7QUFDTCxJQUFJLHFCQUFxQixDQUFDLEtBQUssRUFBRTtBQUNqQyxRQUFRLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztBQUMzQjtBQUNBLFFBQVEsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7QUFDdkQsUUFBUSxNQUFNLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLEtBQUs7QUFDcEYsWUFBWSxNQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDNUUsU0FBUyxDQUFDLENBQUM7QUFDWCxRQUFRLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztBQUNoRCxRQUFRLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLEtBQUs7QUFDN0UsWUFBWSxNQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDNUUsU0FBUyxDQUFDLENBQUM7QUFDWCxRQUFRLE9BQU8sTUFBTSxDQUFDO0FBQ3RCLEtBQUs7QUFDTCxJQUFJLGFBQWEsR0FBRztBQUNwQixRQUFRLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUMxQixRQUFRLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsa0NBQWtDLENBQUMsQ0FBQztBQUN4RSxRQUFRLE1BQU0sc0JBQXNCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDM0YsUUFBUSxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJO0FBQy9DLFlBQVksTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkQsWUFBWSxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxLQUFLLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUN0RixTQUFTLENBQUMsQ0FBQztBQUNYLFFBQVEsT0FBTyxNQUFNLENBQUM7QUFDdEIsS0FBSztBQUNMLElBQUksUUFBUSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUU7QUFDakMsUUFBUSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDMUUsUUFBUSxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDbkQsUUFBUSxJQUFJLFVBQVUsRUFBRTtBQUN4QixZQUFZLE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDMUQsWUFBWSxNQUFNLEdBQUcsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDekUsWUFBWSxNQUFNLEtBQUssR0FBRyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM5RyxZQUFZLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUN0QyxnQkFBZ0IsT0FBTyxLQUFLLENBQUM7QUFDN0IsYUFBYTtBQUNiLGlCQUFpQixJQUFJLE1BQU0sRUFBRTtBQUM3QixnQkFBZ0IsT0FBTyxLQUFLLENBQUM7QUFDN0IsYUFBYTtBQUNiLGlCQUFpQjtBQUNqQixnQkFBZ0IsT0FBTyxFQUFFLENBQUM7QUFDMUIsYUFBYTtBQUNiLFNBQVM7QUFDVCxRQUFRLE9BQU8sRUFBRSxDQUFDO0FBQ2xCLEtBQUs7QUFDTCxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUU7QUFDbkIsUUFBUSxJQUFJO0FBQ1osWUFBWSxNQUFNLE1BQU0sR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO0FBQzNDLFlBQVksT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksYUFBYSxFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM3RSxTQUFTO0FBQ1QsUUFBUSxPQUFPLEdBQUcsRUFBRTtBQUNwQixZQUFZLE9BQU8sSUFBSSxDQUFDO0FBQ3hCLFNBQVM7QUFDVCxLQUFLO0FBQ0wsSUFBSSx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFO0FBQzNDLFFBQVEsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQztBQUNwQyxRQUFRLElBQUksVUFBVSxFQUFFO0FBQ3hCLFlBQVksSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRTtBQUM3RSxnQkFBZ0IsT0FBTyxVQUFVLENBQUM7QUFDbEMsYUFBYTtBQUNiLFlBQVksT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ3JFLFNBQVM7QUFDVCxRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLEtBQUs7QUFDTCxJQUFJLGtCQUFrQixDQUFDLElBQUksRUFBRTtBQUM3QixRQUFRLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNoRixRQUFRLE1BQU0sV0FBVyxHQUFHLGlCQUFpQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDeEYsUUFBUSxJQUFJLENBQUMsV0FBVyxFQUFFO0FBQzFCLFlBQVksT0FBTyxJQUFJLENBQUM7QUFDeEIsU0FBUztBQUNULGFBQWEsSUFBSSxXQUFXLEtBQUssV0FBVyxDQUFDLGVBQWUsS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtBQUNwSSxZQUFZLE9BQU8sSUFBSSxDQUFDO0FBQ3hCLFNBQVM7QUFDVCxhQUFhO0FBQ2IsWUFBWSxPQUFPLEtBQUssQ0FBQztBQUN6QixTQUFTO0FBQ1QsS0FBSztBQUNMOztBQ3ZPTyxNQUFNLFFBQVEsR0FBRztBQUN4QixJQUFJLE1BQU0sRUFBRSwydkJBQTJ2QjtBQUN2d0IsSUFBSSxZQUFZLEVBQUUsd2dDQUF3Z0M7QUFDMWhDLElBQUksV0FBVyxFQUFFLCttQkFBK21CO0FBQ2hvQixJQUFJLFFBQVEsRUFBRSwyc0JBQTJzQjtBQUN6dEIsQ0FBQzs7QUNITSxNQUFNLGNBQWMsR0FBRyxDQUFDLFlBQVksS0FBSztBQUNoRCxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQ3RDLElBQUksTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDOUQsSUFBSSxNQUFNLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMxRixJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdELENBQUM7O0FDUE0sTUFBTSxPQUFPLEdBQUc7QUFDdkIsSUFBSSxJQUFJLEVBQUUsUUFBUTtBQUNsQixJQUFJLE1BQU0sRUFBRSxRQUFRO0FBQ3BCLENBQUM7O2FDSU0sTUFBTSxJQUFJLENBQUM7QUFDbEIsSUFBSSxPQUFPLENBQUM7QUFDWixJQUFJLFNBQVMsQ0FBQztBQUNkO0FBQ0EsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFO0FBQ3pCLFFBQVEsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7QUFDL0I7QUFDQSxRQUFRLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLE9BQU8sR0FBRyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7QUFDMUYsUUFBUSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTtBQUMvRixZQUFZLElBQUksRUFBRSxXQUFXO0FBQzdCLFlBQVksSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSTtBQUNuQyxZQUFZLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQztBQUN4RSxZQUFZLEtBQUssRUFBRTtBQUNuQixnQkFBZ0IsR0FBRyxFQUFFLEVBQUU7QUFDdkIsZ0JBQWdCLEtBQUssRUFBRSxDQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUUsdUJBQXVCLEVBQUUsc0JBQXNCLEVBQUUsNkJBQTZCLENBQUM7QUFDdEksZ0JBQWdCLFdBQVcsRUFBRSxJQUFJO0FBQ2pDLGdCQUFnQixlQUFlLEVBQUUsQ0FBQztBQUNsQyxhQUFhO0FBQ2IsWUFBWSxPQUFPLEVBQUUsS0FBSztBQUMxQixTQUFTLENBQUMsQ0FBQztBQUNYLEtBQUs7QUFDTDtBQUNBLElBQUksTUFBTSxHQUFHLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRTtBQUM1QixRQUFRLElBQUk7QUFDWixZQUFZLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUN6RCxTQUFTO0FBQ1QsUUFBUSxPQUFPLEdBQUcsRUFBRTtBQUNwQixZQUFZLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0VBQWdFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3RHLFlBQVksTUFBTSxHQUFHLENBQUM7QUFDdEIsU0FBUztBQUNULEtBQUs7QUFDTCxJQUFJLE1BQU0sS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtBQUM1QyxRQUFRLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFLFFBQVEsSUFBSSxLQUFLLEVBQUU7QUFDbkIsWUFBWSxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUM5QixTQUFTO0FBQ1QsUUFBUSxNQUFNLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUN4QixRQUFRLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3hELFFBQVEsSUFBSSxDQUFDLFdBQVcsRUFBRTtBQUMxQixZQUFZLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQywyQkFBMkIsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdFLFlBQVksWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCLFNBQVM7QUFDVCxhQUFhO0FBQ2IsWUFBWSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMseURBQXlELEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM3RyxZQUFZLElBQUk7QUFDaEIsZ0JBQWdCLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0FBQzdDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO0FBQzFDLG9CQUFvQixNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztBQUNqRSxvQkFBb0IsSUFBSSxPQUFPLEVBQUU7QUFDakMsd0JBQXdCLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDaEUscUJBQXFCO0FBQ3JCLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsWUFBWSxPQUFPLEdBQUcsRUFBRTtBQUN4QixnQkFBZ0IsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLGFBQWE7QUFDYixTQUFTO0FBQ1QsS0FBSztBQUNMLElBQUksTUFBTSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO0FBQzNDLFFBQVEsSUFBSSxLQUFLLEVBQUU7QUFDbkIsWUFBWSxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUM5QixTQUFTO0FBQ1QsYUFBYTtBQUNiLFlBQVksTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7QUFDdkUsWUFBWSxNQUFNLElBQUksQ0FBQztBQUN2QixnQkFBZ0IsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUMxQixnQkFBZ0IsY0FBYztBQUM5QixnQkFBZ0IsR0FBRyxFQUFFLElBQUk7QUFDekIsYUFBYSxDQUFDLENBQUM7QUFDZixTQUFTO0FBQ1QsS0FBSztBQUNMLElBQUksTUFBTSxlQUFlLEdBQUcsR0FBRztBQUMvQjtBQUNBLElBQUksc0JBQXNCLEdBQUc7QUFDN0IsUUFBUSxPQUFPO0FBQ2YsWUFBWSxRQUFRLEVBQUU7QUFDdEIsZ0JBQWdCLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFO0FBQ3ZDLGFBQWE7QUFDYixZQUFZLFFBQVEsRUFBRTtBQUN0QixnQkFBZ0IsUUFBUSxFQUFFLE9BQU87QUFDakMsYUFBYTtBQUNiLFNBQVMsQ0FBQztBQUNWLEtBQUs7QUFDTCxJQUFJLE1BQU0sRUFBRSxHQUFHO0FBQ2YsUUFBUSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztBQUNuRSxRQUFRLE9BQU8sS0FBSyxDQUFDO0FBQ3JCLFlBQVksR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUN0QixZQUFZLGNBQWM7QUFDMUIsWUFBWSxHQUFHLEVBQUUsSUFBSTtBQUNyQixTQUFTLENBQUMsQ0FBQztBQUNYLEtBQUs7QUFDTCxJQUFJLE1BQU0sSUFBSSxHQUFHO0FBQ2pCLFFBQVEsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7QUFDbkUsUUFBUSxPQUFPLE9BQU8sQ0FBQztBQUN2QixZQUFZLEdBQUcsRUFBRSxHQUFHLEVBQUU7QUFDdEIsWUFBWSxjQUFjO0FBQzFCLFlBQVksY0FBYyxFQUFFLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUM7QUFDeEUsWUFBWSxHQUFHLEVBQUUsSUFBSTtBQUNyQixTQUFTLENBQUMsQ0FBQztBQUNYLEtBQUs7QUFDTCxJQUFJLE1BQU0sY0FBYyxHQUFHO0FBQzNCLFFBQVEsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0FBQ2pGLEtBQUs7QUFDTCxJQUFJLE1BQU0sZUFBZSxHQUFHO0FBQzVCLFFBQVEsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7QUFDbkUsUUFBUSxNQUFNLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQztBQUNoQyxZQUFZLEdBQUcsRUFBRSxHQUFHLEVBQUU7QUFDdEIsWUFBWSxjQUFjO0FBQzFCLFlBQVksY0FBYyxFQUFFLENBQUMsT0FBTyxDQUFDO0FBQ3JDLFlBQVksR0FBRyxFQUFFLEtBQUs7QUFDdEIsU0FBUyxDQUFDLENBQUM7QUFDWCxRQUFRLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSTtBQUNqRCxZQUFZLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyRCxZQUFZLE9BQU8sT0FBTyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQ2pELFNBQVMsQ0FBQyxDQUFDO0FBQ1gsS0FBSztBQUNMLElBQUksTUFBTSxjQUFjLENBQUMsT0FBTyxFQUFFO0FBQ2xDLFFBQVEsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEtBQUs7QUFDaEQsWUFBWSxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7QUFDeEcsWUFBWSxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksT0FBTyxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6SCxTQUFTLENBQUMsQ0FBQztBQUNYLEtBQUs7QUFDTDs7QUMvSE8sTUFBTSxLQUFLLFNBQVNDLE1BQUksQ0FBQztBQUNoQyxJQUFJLE9BQU8sQ0FBQztBQUNaLElBQUksSUFBSSxHQUFHLEdBQUc7QUFDZCxRQUFRLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsNEJBQTRCLENBQUMsQ0FBQztBQUM1SCxLQUFLO0FBQ0w7QUFDQSxJQUFJLFdBQVcsQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNsRCxRQUFRLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2QixRQUFRLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQy9CLEtBQUs7QUFDTDtBQUNBLElBQUksTUFBTSxlQUFlLEdBQUc7QUFDNUIsUUFBUSxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRSxRQUFRLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUM7QUFDdkcsUUFBUSxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsd0RBQXdELENBQUMsQ0FBQyxDQUFDO0FBQzFILEtBQUs7QUFDTCxJQUFJLFVBQVUsR0FBRyxNQUFNO0FBQ3ZCLFFBQVEsT0FBTztBQUNmLFlBQVksS0FBSyxFQUFFLENBQUMsK0JBQStCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2RSxZQUFZLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEQsWUFBWSxXQUFXLEVBQUU7QUFDekIsZ0JBQWdCLFdBQVcsRUFBRSxHQUFHO0FBQ2hDLGdCQUFnQixpQkFBaUIsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxNQUFNO0FBQ2xFLGdCQUFnQixTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPO0FBQy9DLGFBQWE7QUFDYixZQUFZLFFBQVEsRUFBRTtBQUN0QixnQkFBZ0IsUUFBUSxFQUFFO0FBQzFCLG9CQUFvQixPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDO0FBQy9DLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsU0FBUyxDQUFDO0FBQ1YsS0FBSyxDQUFDO0FBQ047O0FDaENPLE1BQU0sS0FBSyxTQUFTQSxNQUFJLENBQUM7QUFDaEMsSUFBSSxPQUFPLENBQUM7QUFDWixJQUFJLElBQUksR0FBRyxHQUFHO0FBQ2QsUUFBUSxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLHdEQUF3RCxDQUFDLENBQUM7QUFDdkksS0FBSztBQUNMO0FBQ0EsSUFBSSxXQUFXLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDbEQsUUFBUSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdkIsUUFBUSxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztBQUMvQixLQUFLO0FBQ0w7QUFDQSxJQUFJLE1BQU0sZUFBZSxHQUFHO0FBQzVCLFFBQVEsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLDRDQUE0QyxDQUFDLENBQUMsQ0FBQztBQUM5RyxLQUFLO0FBQ0wsSUFBSSxVQUFVLEdBQUcsTUFBTTtBQUN2QixRQUFRLE9BQU87QUFDZixZQUFZLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlDLFlBQVksS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4RCxZQUFZLFdBQVcsRUFBRTtBQUN6QixnQkFBZ0IsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksTUFBTTtBQUNwRSxnQkFBZ0IsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLE1BQU07QUFDM0QsZ0JBQWdCLGNBQWMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxNQUFNO0FBQy9ELGdCQUFnQixjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksTUFBTTtBQUMvRCxhQUFhO0FBQ2IsWUFBWSxPQUFPLEVBQUUsQ0FBQyxxQ0FBcUMsQ0FBQztBQUM1RCxZQUFZLFFBQVEsRUFBRTtBQUN0QixnQkFBZ0IsUUFBUSxFQUFFO0FBQzFCLG9CQUFvQixPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDO0FBQy9DLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsU0FBUyxDQUFDO0FBQ1YsS0FBSyxDQUFDO0FBQ047O0FDaENPLE1BQU0sUUFBUSxTQUFTQSxNQUFJLENBQUM7QUFDbkMsSUFBSSxPQUFPLENBQUM7QUFDWixJQUFJLElBQUksR0FBRyxHQUFHO0FBQ2QsUUFBUSxPQUFPLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUNwRixLQUFLO0FBQ0w7QUFDQSxJQUFJLFdBQVcsQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3ZELFFBQVEsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZCLFFBQVEsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7QUFDL0IsS0FBSztBQUNMO0FBQ0EsSUFBSSxVQUFVLEdBQUcsTUFBTTtBQUN2QixRQUFRLE9BQU87QUFDZixZQUFZLEtBQUssRUFBRSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pELFlBQVksS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4RCxZQUFZLFdBQVcsRUFBRTtBQUN6QixnQkFBZ0IsYUFBYSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLE1BQU07QUFDOUQsZ0JBQWdCLGlCQUFpQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLE1BQU07QUFDbEUsZ0JBQWdCLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxNQUFNO0FBQzVELGdCQUFnQix5QkFBeUIsRUFBRSxLQUFLO0FBQ2hELGdCQUFnQixvQkFBb0IsRUFBRSw4Q0FBOEM7QUFDcEYsYUFBYTtBQUNiLFlBQVksUUFBUSxFQUFFO0FBQ3RCLGdCQUFnQixRQUFRLEVBQUU7QUFDMUIsb0JBQW9CLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUM7QUFDL0MsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYixTQUFTLENBQUM7QUFDVixLQUFLLENBQUM7QUFDTjs7QUMzQk8sTUFBTSxpQkFBaUIsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLEtBQUs7QUFDbkQsSUFBSSxRQUFRLE9BQU8sQ0FBQyxJQUFJO0FBQ3hCLFFBQVEsS0FBSyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsVUFBVTtBQUN2RCxZQUFZLE9BQU8sSUFBSSxRQUFRLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzlFLFFBQVEsS0FBSyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsS0FBSztBQUNsRCxZQUFZLE9BQU8sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN0RSxRQUFRLEtBQUssd0JBQXdCLENBQUMsTUFBTSxDQUFDLEtBQUs7QUFDbEQsWUFBWSxPQUFPLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdEUsS0FBSztBQUNMLENBQUM7O0FDUkQ7QUFDQTtBQUNPLE1BQU0sY0FBYyxHQUFHLENBQUMsTUFBTSxLQUFLO0FBQzFDLElBQUksT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUs7QUFDakYsUUFBUSxJQUFJLEtBQUssWUFBWSxDQUFDLENBQUMsVUFBVSxFQUFFO0FBQzNDLFlBQVksTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztBQUMzRCxZQUFZLE9BQU8sWUFBWSxLQUFLLElBQUksSUFBSSxPQUFPLFlBQVksS0FBSyxXQUFXLENBQUM7QUFDaEYsU0FBUztBQUNULFFBQVEsT0FBTyxLQUFLLENBQUM7QUFDckIsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xFLENBQUM7O0FDQUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2xDLE1BQU0sSUFBSSxDQUFDO0FBQ2xCLElBQUksT0FBTyxDQUFDO0FBQ1osSUFBSSxRQUFRLENBQUM7QUFDYjtBQUNBLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRTtBQUN6QixRQUFRLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQy9CLFFBQVEsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDdEYsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLE9BQU8sR0FBRztBQUNsQixRQUFRLElBQUksT0FBTyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUN6QyxRQUFRLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7QUFDL0IsWUFBWSxPQUFPLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQy9DLFNBQVM7QUFDVCxRQUFRLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQztBQUM3RixLQUFLO0FBQ0w7QUFDQSxJQUFJLE1BQU0sS0FBSyxHQUFHO0FBQ2xCLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtBQUNoQyxZQUFZLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzlCLFNBQVM7QUFDVCxRQUFRLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFO0FBQ25DLFlBQVksTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0MsU0FBUztBQUNULFFBQVEsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RELFFBQVEsTUFBTSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDeEIsS0FBSztBQUNMLElBQUksTUFBTSxJQUFJLEdBQUc7QUFDakIsUUFBUSxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckQsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO0FBQ2hDLFlBQVksTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDOUIsU0FBUztBQUNULGFBQWE7QUFDYixZQUFZLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZFLFlBQVksTUFBTSxJQUFJLENBQUM7QUFDdkIsZ0JBQWdCLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQUU7QUFDOUMsZ0JBQWdCLGNBQWM7QUFDOUIsZ0JBQWdCLEdBQUcsRUFBRSxJQUFJO0FBQ3pCLGFBQWEsQ0FBQyxDQUFDO0FBQ2YsU0FBUztBQUNULEtBQUs7QUFDTCxJQUFJLE1BQU0sS0FBSyxHQUFHO0FBQ2xCLFFBQVEsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QyxRQUFRLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzFCLEtBQUs7QUFDTCxJQUFJLFVBQVUsR0FBRztBQUNqQixRQUFRLE1BQU0sNEJBQTRCLEdBQUcsRUFBRSxDQUFDO0FBQ2hELFFBQVEsNEJBQTRCLENBQUMsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7QUFDOUUsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO0FBQ2hDLFlBQVksNEJBQTRCLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7QUFDdEUsWUFBWSw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQUMzRSxTQUFTO0FBQ1QsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO0FBQ2hDLFlBQVksNEJBQTRCLENBQUMsSUFBSSxDQUFDLHFDQUFxQyxDQUFDLENBQUM7QUFDckYsU0FBUztBQUNULFFBQVEsT0FBTyw0QkFBNEIsQ0FBQztBQUM1QyxLQUFLO0FBQ0wsSUFBSSxNQUFNLGtCQUFrQixHQUFHO0FBQy9CLFFBQVEsSUFBSTtBQUNaLFlBQVksTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsY0FBYyxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQztBQUN2RyxZQUFZLElBQUksUUFBUSxFQUFFO0FBQzFCLGdCQUFnQixJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFO0FBQzdDLG9CQUFvQixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDO0FBQzlDLG9CQUFvQixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFO0FBQ2hGLHdCQUF3QixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25HLHdCQUF3QixPQUFPLElBQUksQ0FBQztBQUNwQyxxQkFBcUI7QUFDckIsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYixZQUFZLE9BQU8sS0FBSyxDQUFDO0FBQ3pCLFNBQVM7QUFDVCxRQUFRLE9BQU8sR0FBRyxFQUFFO0FBQ3BCLFlBQVksT0FBTyxLQUFLLENBQUM7QUFDekIsU0FBUztBQUNULEtBQUs7QUFDTCxJQUFJLGlCQUFpQixDQUFDLElBQUksRUFBRSxHQUFHLEVBQUU7QUFDakMsUUFBUSxPQUFPLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUM7QUFDdkQsWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7QUFDM0MsWUFBWSxJQUFJO0FBQ2hCLFlBQVksR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRztBQUNqQyxTQUFTLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNqQixLQUFLO0FBQ0wsSUFBSSxnQkFBZ0IsR0FBRztBQUN2QixRQUFRLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFO0FBQ25DLFlBQVksT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDM0QsU0FBUztBQUNULGFBQWEsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtBQUN2QyxZQUFZLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDakUsU0FBUztBQUNULGFBQWE7QUFDYixZQUFZLE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2hFLFNBQVM7QUFDVCxLQUFLO0FBQ0w7QUFDQSxJQUFJLHNCQUFzQixHQUFHO0FBQzdCLFFBQVEsT0FBTztBQUNmLFlBQVksUUFBUSxFQUFFO0FBQ3RCLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRTtBQUM5QyxhQUFhO0FBQ2IsWUFBWSxRQUFRLEVBQUU7QUFDdEIsZ0JBQWdCLFFBQVEsRUFBRSxPQUFPO0FBQ2pDLGFBQWE7QUFDYixTQUFTLENBQUM7QUFDVixLQUFLO0FBQ0wsSUFBSSxNQUFNLEVBQUUsR0FBRztBQUNmLFFBQVEsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7QUFDckQsUUFBUSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUMsUUFBUSxNQUFNLEtBQUssQ0FBQztBQUNwQixZQUFZLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQUU7QUFDMUMsWUFBWSxjQUFjO0FBQzFCLFlBQVksR0FBRyxFQUFFLElBQUk7QUFDckIsU0FBUyxDQUFDLENBQUM7QUFDWCxRQUFRLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3hELFFBQVEsSUFBSSxDQUFDLFdBQVcsRUFBRTtBQUMxQixZQUFZLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0FBQ3pELFlBQVksTUFBTSxTQUFTLEdBQUcsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RGLFlBQVksSUFBSSxDQUFDLFNBQVMsRUFBRTtBQUM1QixnQkFBZ0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5RCxnQkFBZ0IsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDekQsb0JBQW9CLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQUU7QUFDbEQsb0JBQW9CLGNBQWM7QUFDbEMsb0JBQW9CLEdBQUcsRUFBRSxJQUFJO0FBQzdCLGlCQUFpQixDQUFDLENBQUM7QUFDbkIsYUFBYTtBQUNiLGlCQUFpQjtBQUNqQixnQkFBZ0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLDJCQUEyQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsc0VBQXNFLENBQUMsQ0FBQyxDQUFDO0FBQzdJLGdCQUFnQixNQUFNLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0FBQ2pELGFBQWE7QUFDYixTQUFTO0FBQ1QsYUFBYTtBQUNiLFlBQVksTUFBTSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztBQUM3QyxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFFBQVEsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hCLEtBQUs7QUFDTCxJQUFJLE1BQU0sSUFBSSxHQUFHO0FBQ2pCLFFBQVEsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7QUFDbkUsUUFBUSxNQUFNLE9BQU8sQ0FBQztBQUN0QixZQUFZLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQUU7QUFDMUMsWUFBWSxjQUFjO0FBQzFCLFlBQVksY0FBYyxFQUFFLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUM7QUFDeEUsWUFBWSxHQUFHLEVBQUUsSUFBSTtBQUNyQixTQUFTLENBQUMsQ0FBQztBQUNYLEtBQUs7QUFDTCxJQUFJLE1BQU0sZUFBZSxHQUFHO0FBQzVCLFFBQVEsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7QUFDbkUsUUFBUSxNQUFNLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQztBQUNoQyxZQUFZLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQUU7QUFDMUMsWUFBWSxjQUFjO0FBQzFCLFlBQVksY0FBYyxFQUFFLENBQUMsT0FBTyxDQUFDO0FBQ3JDLFlBQVksR0FBRyxFQUFFLEtBQUs7QUFDdEIsU0FBUyxDQUFDLENBQUM7QUFDWCxRQUFRLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSTtBQUNqRCxZQUFZLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyRCxZQUFZLE9BQU8sT0FBTyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDekMsU0FBUyxDQUFDLENBQUM7QUFDWCxLQUFLO0FBQ0wsSUFBSSxNQUFNLGNBQWMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFO0FBQ3BDLFFBQVEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pGLFFBQVEsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7QUFDckQsUUFBUSxJQUFJLE9BQU8sRUFBRTtBQUNyQixZQUFZLE1BQU0sU0FBUyxHQUFHLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0RixZQUFZLE1BQU0sT0FBTyxHQUFHLFNBQVMsSUFBSSxNQUFNLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0FBQ3pFLFlBQVksSUFBSSxPQUFPLEVBQUU7QUFDekIsZ0JBQWdCLE9BQU8sSUFBSSxDQUFDO0FBQzVCLGFBQWE7QUFDYixpQkFBaUIsSUFBSSxLQUFLLElBQUksR0FBRyxFQUFFO0FBQ25DLGdCQUFnQixPQUFPLEtBQUssQ0FBQztBQUM3QixhQUFhO0FBQ2IsWUFBWSxNQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDcEUsWUFBWSxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xELFNBQVM7QUFDVCxhQUFhLElBQUksS0FBSyxHQUFHLEVBQUUsRUFBRTtBQUM3QixZQUFZLE1BQU0sSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNwRSxZQUFZLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbEQsU0FBUztBQUNULGFBQWE7QUFDYixZQUFZLE9BQU8sS0FBSyxDQUFDO0FBQ3pCLFNBQVM7QUFDVCxLQUFLO0FBQ0wsSUFBSSxjQUFjLEdBQUc7QUFDckIsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxLQUFLLFFBQVEsRUFBRTtBQUN6RCxZQUFZLE9BQU8sS0FBSyxDQUFDO0FBQ3pCLFNBQVM7QUFDVCxRQUFRLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssT0FBTyxFQUFFO0FBQ2hELFlBQVksTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztBQUMxRCxrQkFBa0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUUsa0JBQWtCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO0FBQ25DLFlBQVksSUFBSTtBQUNoQixnQkFBZ0IsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM3RCxnQkFBZ0IsSUFBSSxhQUFhLEVBQUU7QUFDbkMsb0JBQW9CLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7QUFDeEUsd0JBQXdCLE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDakUscUJBQXFCO0FBQ3JCLHlCQUF5QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssWUFBWSxFQUFFO0FBQ3pELHdCQUF3QixPQUFPLE1BQU0sQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2pFLHFCQUFxQjtBQUNyQix5QkFBeUIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRTtBQUN4RCx3QkFBd0IsT0FBTyxNQUFNLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNqRSxxQkFBcUI7QUFDckIsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYixZQUFZLE9BQU8sR0FBRyxFQUFFO0FBQ3hCLGdCQUFnQixPQUFPLElBQUksQ0FBQztBQUM1QixhQUFhO0FBQ2IsU0FBUztBQUNULFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsS0FBSztBQUNMLElBQUksTUFBTSxLQUFLLENBQUMsT0FBTyxFQUFFO0FBQ3pCLFFBQVEsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7QUFDNUQsUUFBUSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDaEUsUUFBUSxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFO0FBQ3ZDLFlBQVksU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDckUsWUFBWSxNQUFNLFNBQVMsRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsWUFBWSxFQUFFLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNsRyxTQUFTO0FBQ1QsYUFBYTtBQUNiLFlBQVksTUFBTSxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxxQkFBcUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzdGLFNBQVM7QUFDVCxRQUFRLE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxLQUFLO0FBQy9DLFlBQVksTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBQzFNLFlBQVksTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekgsU0FBUyxDQUFDLENBQUM7QUFDWCxLQUFLO0FBQ0wsSUFBSSxzQkFBc0IsR0FBRztBQUM3QixRQUFRLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTTtBQUMzQyxjQUFjLGdCQUFnQjtBQUM5QixjQUFjLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUTtBQUNwQyxrQkFBa0IsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3ZDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2xELFFBQVEsT0FBTyxDQUFDLDhDQUE4QyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3RSxLQUFLO0FBQ0wsSUFBSSxNQUFNLG1CQUFtQixHQUFHO0FBQ2hDLFFBQVEsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7QUFDckQsUUFBUSxNQUFNLFNBQVMsR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEYsUUFBUSxJQUFJLFNBQVMsRUFBRTtBQUN2QixZQUFZLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztBQUMzRSxTQUFTO0FBQ1QsS0FBSztBQUNMLElBQUksTUFBTSxtQkFBbUIsQ0FBQyxPQUFPLEVBQUU7QUFDdkMsUUFBUSxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sS0FBSztBQUNoRCxZQUFZLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztBQUN4SyxZQUFZLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxPQUFPLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pILFNBQVMsQ0FBQyxDQUFDO0FBQ1gsS0FBSztBQUNMLElBQUksaUJBQWlCLENBQUMsSUFBSSxFQUFFO0FBQzVCLFFBQVEsUUFBUSxJQUFJO0FBQ3BCLFlBQVksS0FBSyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsVUFBVTtBQUMzRCxnQkFBZ0IsT0FBTyxjQUFjLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUN6RCxZQUFZLEtBQUssd0JBQXdCLENBQUMsTUFBTSxDQUFDLEtBQUs7QUFDdEQsZ0JBQWdCLE9BQU8sY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ3BELFlBQVksS0FBSyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsS0FBSztBQUN0RCxnQkFBZ0IsT0FBTyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDcEQsU0FBUztBQUNULEtBQUs7QUFDTDs7QUMxUU8sTUFBTSxNQUFNLFNBQVMsSUFBSSxDQUFDO0FBQ2pDLElBQUksSUFBSSxHQUFHLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDL0MsSUFBSSxXQUFXLEdBQUcsa0VBQWtFLENBQUM7QUFDckY7QUFDQSxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUU7QUFDekIsUUFBUSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdkIsS0FBSztBQUNMO0FBQ0EsSUFBSSxVQUFVLEdBQUc7QUFDakIsUUFBUSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztBQUMzRCxRQUFRLE9BQU87QUFDZixZQUFZLEtBQUssRUFBRTtBQUNuQixnQkFBZ0IsT0FBTyxFQUFFLGNBQWMsQ0FBQyxjQUFjLENBQUM7QUFDdkQsZ0JBQWdCLGlCQUFpQixFQUFFLENBQUM7QUFDcEMsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlFQUFpRSxDQUFDO0FBQ2xFLGFBQWE7QUFDYixZQUFZLEtBQUssRUFBRTtBQUNuQixnQkFBZ0IsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUM7QUFDakQsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFO0FBQzFELGFBQWE7QUFDYixZQUFZLFdBQVc7QUFDdkIsWUFBWSxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUM7QUFDaEMsU0FBUyxDQUFDO0FBQ1YsS0FBSztBQUNMLElBQUksVUFBVSxHQUFHO0FBQ2pCLFFBQVEsTUFBTSw0QkFBNEIsR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDaEUsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO0FBQ2hDLFlBQVksNEJBQTRCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3pELFlBQVksNEJBQTRCLENBQUMsSUFBSSxDQUFDLG9FQUFvRSxDQUFDLENBQUM7QUFDcEgsU0FBUztBQUNULFFBQVEsT0FBTyw0QkFBNEIsQ0FBQztBQUM1QyxLQUFLO0FBQ0wsSUFBSSxNQUFNLGtCQUFrQixHQUFHO0FBQy9CLFFBQVEsSUFBSTtBQUNaLFlBQVksTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLHVDQUF1QyxDQUFDLEVBQUUsRUFBRSxjQUFjLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZJLFlBQVksSUFBSSxRQUFRLEVBQUUsTUFBTSxLQUFLLEdBQUcsRUFBRTtBQUMxQyxnQkFBZ0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMzRixnQkFBZ0IsT0FBTyxJQUFJLENBQUM7QUFDNUIsYUFBYTtBQUNiLFlBQVksT0FBTyxLQUFLLENBQUM7QUFDekIsU0FBUztBQUNULFFBQVEsT0FBTyxHQUFHLEVBQUU7QUFDcEIsWUFBWSxPQUFPLEtBQUssQ0FBQztBQUN6QixTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0EsSUFBSSx1QkFBdUIsR0FBRztBQUM5QixRQUFRLE9BQU87QUFDZixZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsRUFBRSx3QkFBd0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUU7QUFDckcsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFO0FBQ2pGLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxFQUFFLG9CQUFvQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUNqRixZQUFZLDhCQUE4QixFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3ZFLFlBQVksb0NBQW9DLEVBQUUsTUFBTTtBQUN4RCxZQUFZLGFBQWEsRUFBRSxRQUFRLENBQUMsTUFBTTtBQUMxQyxZQUFZLGNBQWMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUc7QUFDN0MsWUFBWSxlQUFlLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUTtBQUMzRCxZQUFZLG1CQUFtQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVE7QUFDL0QsWUFBWSxhQUFhLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFELFNBQVMsQ0FBQztBQUNWLEtBQUs7QUFDTDtBQUNBOztBQ3JFTyxNQUFNLFNBQVMsU0FBUyxJQUFJLENBQUM7QUFDcEMsSUFBSSxJQUFJLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztBQUNsRCxJQUFJLFdBQVcsR0FBRyx1RUFBdUUsQ0FBQztBQUMxRjtBQUNBLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRTtBQUN6QixRQUFRLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2QixLQUFLO0FBQ0w7QUFDQSxJQUFJLFVBQVUsR0FBRztBQUNqQixRQUFRLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0FBQzNELFFBQVEsT0FBTztBQUNmLFlBQVksS0FBSyxFQUFFO0FBQ25CLGdCQUFnQixPQUFPLEVBQUUsY0FBYyxDQUFDLGNBQWMsQ0FBQztBQUN2RCxnQkFBZ0IsaUJBQWlCLEVBQUUsQ0FBQztBQUNwQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUM7QUFDN0M7QUFDQSwwRUFBMEUsQ0FBQztBQUMzRSxhQUFhO0FBQ2IsWUFBWSxLQUFLLEVBQUU7QUFDbkIsZ0JBQWdCLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDO0FBQ2pELGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRTtBQUMxRCxhQUFhO0FBQ2IsWUFBWSxXQUFXO0FBQ3ZCLFlBQVksUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDO0FBQ2hDLFNBQVMsQ0FBQztBQUNWLEtBQUs7QUFDTCxJQUFJLFVBQVUsR0FBRztBQUNqQixRQUFRLE1BQU0sNEJBQTRCLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ2hFLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtBQUNoQyxZQUFZLDRCQUE0QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6RCxZQUFZLDRCQUE0QixDQUFDLElBQUksQ0FBQyxvRUFBb0UsQ0FBQyxDQUFDO0FBQ3BILFNBQVM7QUFDVCxRQUFRLE9BQU8sNEJBQTRCLENBQUM7QUFDNUMsS0FBSztBQUNMO0FBQ0EsSUFBSSx1QkFBdUIsR0FBRztBQUM5QixRQUFRLE9BQU87QUFDZixZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsRUFBRSxvQkFBb0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7QUFDakYsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFO0FBQ2pGLFlBQVksOEJBQThCLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7QUFDdkUsWUFBWSxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHO0FBQ3pDLFlBQVksV0FBVyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVE7QUFDdkQsWUFBWSxlQUFlLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUTtBQUMzRCxZQUFZLGFBQWEsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUQsU0FBUyxDQUFDO0FBQ1YsS0FBSztBQUNMO0FBQ0E7O0FDeERPLE1BQU0sVUFBVSxTQUFTLElBQUksQ0FBQztBQUNyQyxJQUFJLElBQUksR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO0FBQ25ELElBQUksV0FBVyxHQUFHLDBFQUEwRSxDQUFDO0FBQzdGO0FBQ0EsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFO0FBQ3pCLFFBQVEsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBLElBQUksVUFBVSxHQUFHO0FBQ2pCLFFBQVEsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7QUFDM0QsUUFBUSxPQUFPO0FBQ2YsWUFBWSxLQUFLLEVBQUU7QUFDbkIsZ0JBQWdCLE9BQU8sRUFBRSxjQUFjLENBQUMsY0FBYyxDQUFDO0FBQ3ZELGdCQUFnQixpQkFBaUIsRUFBRSxDQUFDO0FBQ3BDLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0REFBNEQsQ0FBQztBQUM3RCxhQUFhO0FBQ2IsWUFBWSxLQUFLLEVBQUU7QUFDbkIsZ0JBQWdCLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDO0FBQ2pELGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRTtBQUMxRCxhQUFhO0FBQ2IsWUFBWSxXQUFXO0FBQ3ZCLFlBQVksUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDO0FBQ2hDLFNBQVMsQ0FBQztBQUNWLEtBQUs7QUFDTCxJQUFJLFVBQVUsR0FBRztBQUNqQixRQUFRLE1BQU0sNEJBQTRCLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ2hFLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtBQUNoQyxZQUFZLDRCQUE0QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6RCxZQUFZLDRCQUE0QixDQUFDLElBQUksQ0FBQyxpRUFBaUUsQ0FBQyxDQUFDO0FBQ2pILFlBQVksNEJBQTRCLENBQUMsSUFBSSxDQUFDLDBDQUEwQyxDQUFDLENBQUM7QUFDMUYsWUFBWSw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsOENBQThDLENBQUMsQ0FBQztBQUM5RixZQUFZLDRCQUE0QixDQUFDLElBQUksQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO0FBQ25HLFlBQVksNEJBQTRCLENBQUMsSUFBSSxDQUFDLDBDQUEwQyxDQUFDLENBQUM7QUFDMUYsU0FBUztBQUNULFFBQVEsT0FBTyw0QkFBNEIsQ0FBQztBQUM1QyxLQUFLO0FBQ0w7QUFDQSxJQUFJLHVCQUF1QixHQUFHO0FBQzlCLFFBQVEsT0FBTztBQUNmLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxFQUFFLHdCQUF3QixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEdBQUcsRUFBRTtBQUNyRyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsRUFBRSxvQkFBb0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7QUFDakYsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFO0FBQ2pGLFlBQVksOEJBQThCLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7QUFDdkUsWUFBWSxpQkFBaUIsRUFBRSxRQUFRLENBQUMsVUFBVTtBQUNsRCxZQUFZLGNBQWMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUc7QUFDN0MsWUFBWSxlQUFlLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUTtBQUMzRCxZQUFZLG1CQUFtQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVE7QUFDL0QsWUFBWSxhQUFhLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFELFNBQVMsQ0FBQztBQUNWLEtBQUs7QUFDTDtBQUNBOztBQzFETyxNQUFNLElBQUksU0FBUyxJQUFJLENBQUM7QUFDL0IsSUFBSSxJQUFJLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztBQUM3QyxJQUFJLFdBQVcsR0FBRyw2REFBNkQsQ0FBQztBQUNoRjtBQUNBLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRTtBQUN6QixRQUFRLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2QixLQUFLO0FBQ0w7QUFDQSxJQUFJLFVBQVUsR0FBRztBQUNqQixRQUFRLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0FBQzNELFFBQVEsT0FBTztBQUNmLFlBQVksS0FBSyxFQUFFO0FBQ25CLGdCQUFnQixPQUFPLEVBQUUsY0FBYyxDQUFDLGNBQWMsQ0FBQztBQUN2RCxnQkFBZ0IsaUJBQWlCLEVBQUUsQ0FBQztBQUNwQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyREFBMkQsQ0FBQztBQUM1RCxhQUFhO0FBQ2IsWUFBWSxLQUFLLEVBQUU7QUFDbkIsZ0JBQWdCLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDM0MsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFO0FBQzFELGFBQWE7QUFDYixZQUFZLFdBQVc7QUFDdkIsWUFBWSxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUM7QUFDaEMsU0FBUyxDQUFDO0FBQ1YsS0FBSztBQUNMLElBQUksVUFBVSxHQUFHO0FBQ2pCLFFBQVEsTUFBTSw0QkFBNEIsR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDaEUsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO0FBQ2hDLFlBQVksNEJBQTRCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3pELFlBQVksNEJBQTRCLENBQUMsSUFBSSxDQUFDLHNFQUFzRSxDQUFDLENBQUM7QUFDdEgsU0FBUztBQUNULFFBQVEsT0FBTyw0QkFBNEIsQ0FBQztBQUM1QyxLQUFLO0FBQ0w7QUFDQSxJQUFJLHVCQUF1QixHQUFHO0FBQzlCO0FBQ0EsUUFBUSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssWUFBWSxHQUFHLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDL0csUUFBUSxPQUFPO0FBQ2YsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLEVBQUUsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFO0FBQ3JHLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxFQUFFLG9CQUFvQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUNqRixZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsRUFBRSxvQkFBb0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7QUFDakYsWUFBWSw4QkFBOEIsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUN2RSxZQUFZLGlCQUFpQixFQUFFLFFBQVEsQ0FBQyxVQUFVO0FBQ2xELFlBQVksY0FBYyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRztBQUM3QyxZQUFZLGVBQWUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRO0FBQzNELFlBQVksbUJBQW1CLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUTtBQUMvRCxZQUFZLGVBQWUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNO0FBQ3pELFlBQVksYUFBYSxFQUFFLE1BQU07QUFDakMsWUFBWSxvQkFBb0IsRUFBRSxRQUFRLENBQUMsSUFBSTtBQUMvQyxTQUFTLENBQUM7QUFDVixLQUFLO0FBQ0w7QUFDQTs7QUMxRE8sTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFPLEtBQUs7QUFDM0MsSUFBSSxRQUFRLE9BQU8sQ0FBQyxJQUFJO0FBQ3hCLFFBQVEsS0FBSyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDbkcsUUFBUSxLQUFLLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsT0FBTyxJQUFJLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUMvRyxRQUFRLEtBQUsscUJBQXFCLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxPQUFPLElBQUksTUFBTSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3ZHLFFBQVEsS0FBSyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE9BQU8sSUFBSSxTQUFTLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDN0csS0FBSztBQUNMLENBQUM7O0FDVk0sTUFBTSxXQUFXLEdBQUcsTUFBTTtBQUNqQyxJQUFJLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxjQUFjLENBQUMsNEJBQTRCLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN4RixJQUFJLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDekMsSUFBSSxPQUFPLFFBQVEsQ0FBQztBQUNwQixDQUFDOztBQ05NLE1BQU0saUNBQWlDLEdBQUc7QUFDakQsSUFBSSxjQUFjLEVBQUUsQ0FBQyxHQUFHLEtBQUs7QUFDN0IsUUFBUSxJQUFJLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO0FBQ2xDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7QUFDakQsWUFBWSxNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQztBQUMvRCxZQUFZLElBQUksa0JBQWtCLEVBQUU7QUFDcEMsZ0JBQWdCLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLGtCQUFrQixDQUFDLENBQUM7QUFDcEcsZ0JBQWdCLElBQUksY0FBYyxFQUFFO0FBQ3BDLG9CQUFvQixPQUFPLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQztBQUNyRCxpQkFBaUI7QUFDakIsYUFBYTtBQUNiLFNBQVM7QUFDVCxRQUFRLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNuQyxLQUFLO0FBQ0wsQ0FBQzs7QUNKRCxNQUFNLE9BQU8sR0FBRyxJQUFJQyxTQUFTLEVBQUUsQ0FBQztBQUNoQyxNQUFNLFFBQVEsR0FBRyxXQUFXLEVBQUUsQ0FBQztBQUMvQixNQUFNLE9BQU8sR0FBRyxNQUFNO0FBQ3RCLElBQUksSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLElBQUksT0FBTztBQUNYLFFBQVEsTUFBTSxFQUFFLE9BQU8sT0FBTyxLQUFLO0FBQ25DLFlBQVksTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUM7QUFDbEMsZ0JBQWdCLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRztBQUNoQyxnQkFBZ0IsUUFBUSxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRTtBQUNwRSxhQUFhLENBQUMsQ0FBQztBQUNmLFlBQVksSUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLGdCQUFnQixFQUFFO0FBQ3pFLGdCQUFnQixNQUFNLElBQUksMEJBQTBCLENBQUMsd0NBQXdDLENBQUMsQ0FBQztBQUMvRixhQUFhO0FBQ2IsaUJBQWlCLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUU7QUFDakUsZ0JBQWdCLE1BQU0sSUFBSSwwQkFBMEIsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0FBQ2pGLGFBQWE7QUFDYixZQUFZLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUU7QUFDNUQsZ0JBQWdCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0VBQXdFLENBQUMsQ0FBQztBQUMxRyxhQUFhO0FBQ2IsWUFBWSxPQUFPLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ2pFLFlBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7QUFDL0IsZ0JBQWdCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0dBQWtHLENBQUMsQ0FBQztBQUNwSSxhQUFhO0FBQ2IsWUFBWSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUM5QixnQkFBZ0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7QUFDN0QsZ0JBQWdCLElBQUksQ0FBQyxPQUFPLEVBQUU7QUFDOUIsb0JBQW9CLE1BQU0sSUFBSSxLQUFLLENBQUMsK0VBQStFLENBQUMsQ0FBQztBQUNySCxpQkFBaUI7QUFDakIscUJBQXFCO0FBQ3JCLG9CQUFvQixPQUFPLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQztBQUMxQyxpQkFBaUI7QUFDakIsYUFBYTtBQUNiLFlBQVksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUMvRCxnQkFBZ0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQWtDLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxSSxhQUFhO0FBQ2IsWUFBWSxRQUFRLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQy9DLFlBQVksT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQztBQUNoRixZQUFZLE9BQU8sUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNO0FBQy9DLGdCQUFnQixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO0FBQy9FLGFBQWEsQ0FBQyxDQUFDO0FBQ2YsU0FBUztBQUNULFFBQVEsWUFBWSxFQUFFLE9BQU8sT0FBTyxLQUFLO0FBQ3pDLFlBQVksSUFBSSxRQUFRLEVBQUU7QUFDMUIsZ0JBQWdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUM7QUFDcEYsZ0JBQWdCLE1BQU0sUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO0FBQ3pELGdCQUFnQixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO0FBQy9FLGFBQWE7QUFDYixTQUFTO0FBQ1QsS0FBSyxDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBQ0YsT0FBTztBQUNQLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQztBQUN2QixLQUFLLFdBQVcsQ0FBQyxDQUFDO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLDRFQUE0RSxDQUFDLENBQUM7QUFDOUUsS0FBSyxXQUFXLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQztBQUNqQyxLQUFLLGFBQWEsQ0FBQyxpQ0FBaUMsQ0FBQztBQUNyRCxLQUFLLGtCQUFrQixDQUFDLEtBQUssQ0FBQztBQUM5QixLQUFLLG9CQUFvQixDQUFDLEtBQUssQ0FBQztBQUNoQyxLQUFLLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlCLE9BQU87QUFDUCxLQUFLLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUMzRCxLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSw4QkFBOEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMvTCxLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQywrQkFBK0IsRUFBRSw4Q0FBOEMsQ0FBQyxDQUFDO0FBQzNHLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLG1CQUFtQixFQUFFLCtCQUErQixDQUFDLENBQUM7QUFDaEYsS0FBSyxNQUFNLENBQUMsT0FBTyxJQUFJLGFBQWEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNuRSxPQUFPO0FBQ1AsS0FBSyxPQUFPLENBQUMsUUFBUSxDQUFDO0FBQ3RCLEtBQUssV0FBVyxDQUFDLHFDQUFxQyxDQUFDO0FBQ3ZELEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLGlCQUFpQixFQUFFLG9DQUFvQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDNUosS0FBSyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsdUJBQXVCLEVBQUUsOEJBQThCLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDL0wsS0FBSyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsK0JBQStCLEVBQUUsNkVBQTZFLENBQUMsQ0FBQztBQUMxSSxLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSw4REFBOEQsQ0FBQyxDQUFDO0FBQy9HLEtBQUssTUFBTSxDQUFDLE9BQU8sSUFBSSxhQUFhLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDckgsT0FBTztBQUNQLEtBQUssT0FBTyxDQUFDLFdBQVcsQ0FBQztBQUN6QixLQUFLLFdBQVcsQ0FBQyx3Q0FBd0MsQ0FBQztBQUMxRCxLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSx1Q0FBdUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2xLLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHVCQUF1QixFQUFFLDhCQUE4QixDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQy9MLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLCtCQUErQixFQUFFLDZFQUE2RSxDQUFDLENBQUM7QUFDMUksS0FBSyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsbUJBQW1CLEVBQUUsOERBQThELENBQUMsQ0FBQztBQUMvRyxLQUFLLE1BQU0sQ0FBQyxPQUFPLElBQUksYUFBYSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3hILE9BQU87QUFDUCxLQUFLLE9BQU8sQ0FBQyxZQUFZLENBQUM7QUFDMUIsS0FBSyxXQUFXLENBQUMseUNBQXlDLENBQUM7QUFDM0QsS0FBSyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsaUJBQWlCLEVBQUUsd0NBQXdDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNwSyxLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSw4QkFBOEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMvTCxLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQywrQkFBK0IsRUFBRSw2RUFBNkUsQ0FBQyxDQUFDO0FBQzFJLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLG1CQUFtQixFQUFFLDZEQUE2RCxDQUFDLENBQUM7QUFDOUcsS0FBSyxNQUFNLENBQUMsT0FBTyxJQUFJLGFBQWEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUscUJBQXFCLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN6SCxPQUFPO0FBQ1AsS0FBSyxPQUFPLENBQUMsTUFBTSxDQUFDO0FBQ3BCLEtBQUssV0FBVyxDQUFDLG1DQUFtQyxDQUFDO0FBQ3JELEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLGlCQUFpQixFQUFFLGtDQUFrQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDeEosS0FBSyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsdUJBQXVCLEVBQUUsOEJBQThCLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDL0wsS0FBSyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsK0JBQStCLEVBQUUsNkVBQTZFLENBQUMsQ0FBQztBQUMxSSxLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSw4REFBOEQsQ0FBQyxDQUFDO0FBQy9HLEtBQUssTUFBTSxDQUFDLE9BQU8sSUFBSSxhQUFhLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbkgsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUQsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTTtBQUMzQixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxrREFBa0QsQ0FBQyxDQUFDLENBQUM7QUFDdEUsSUFBSSxZQUFZLEVBQUUsQ0FBQztBQUNuQixDQUFDLENBQUMifQ==
10162
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzZXQuanMiLCJzb3VyY2VzIjpbIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvQWN0aW9uSGFuZGxlci5qcyIsIi4uLy4uL2Rpc3Qvc3JjL3R5cGVzL0RhdGFiYXNlLmpzIiwiLi4vLi4vZGlzdC9zcmMvdHlwZXMvQXBwbGljYXRpb24uanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2FtcHMuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2xpY2VuY2VzLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy90b0Fic29sdXRlUGF0aC5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvbmV0d29yay5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2RhdGFiYXNlcy9iYXNlLmpzIiwiLi4vLi4vZGlzdC9zcmMvZGF0YWJhc2VzL21zc3FsLmpzIiwiLi4vLi4vZGlzdC9zcmMvZGF0YWJhc2VzL215c3FsLmpzIiwiLi4vLi4vZGlzdC9zcmMvZGF0YWJhc2VzL3Bvc3RncmVzLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9nZXREYXRhYmFzZUVuZ2luZS5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvZ2V0Wm9kRGVmYXVsdHMuanMiLCIuLi8uLi9kaXN0L3NyYy9hcHBsaWNhdGlvbnMvYmFzZS5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2FwcGxpY2F0aW9ucy9iYW1ib28uanMiLCIuLi8uLi9kaXN0L3NyYy9hcHBsaWNhdGlvbnMvYml0YnVja2V0LmpzIiwiLi4vLi4vZGlzdC9zcmMvYXBwbGljYXRpb25zL2NvbmZsdWVuY2UuanMiLCIuLi8uLi9kaXN0L3NyYy9hcHBsaWNhdGlvbnMvamlyYS5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvZ2V0QXBwbGljYXRpb24uanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2dldFZlcnNpb25zLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9zaG93SGVscFdpdGhEZWZhdWx0Q29tbWFuZE9wdGlvbnMuanMiLCIuLi8uLi9kaXN0L3NyYy9jb21tYW5kcy9yZXNldC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3luY0V4aXRIb29rLCBncmFjZWZ1bEV4aXQgfSBmcm9tICdleGl0LWhvb2snO1xuaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5leHBvcnQgY29uc3QgQWN0aW9uSGFuZGxlciA9IGFzeW5jIChwcm9ncmFtLCB7IGFjdGlvbiwgZXJyb3JIYW5kbGVyIH0sIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBvcHMgPSBvcHRpb25zIHx8IHByb2dyYW0ub3B0cygpO1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHtcbiAgICAgICAgbGV0IGVycm9yTWVzc2FnZSA9ICcnO1xuICAgICAgICBhc3luY0V4aXRIb29rKGFzeW5jIChjb2RlKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChjb2RlICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGVycm9ySGFuZGxlcihvcHMpLmNhdGNoKCgpID0+IG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2UudHJpbSgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdlIGFyZSByZWplY3RpbmcgdGhlIHByb21pc2UgdG8gYXZvaWQgdGhlXG4gICAgICAgICAgICAgICAgICAgIC8vIFwiQ2FsbGluZyBwcm9jZXNzLmV4aXRcIiBsb2cgbWVzc2FnZSBmcm9tIGV4aXQtaG9va1xuICAgICAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogZXJyO1xuICAgICAgICAgICAgICAgIHJlamVjdChtZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgd2FpdDogNjAgKiAxICogMTAwMFxuICAgICAgICB9KTtcbiAgICAgICAgYWN0aW9uKG9wcykuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiB6LlpvZEVycm9yKSB7XG4gICAgICAgICAgICAgICAgZXJyLmlzc3Vlcy5mb3JFYWNoKGlzc3VlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlICs9IGBVbmFibGUgdG8gcGFyc2Ugb3B0aW9uICR7aXNzdWUucGF0aC5qb2luKCcsJyl9OiAke2lzc3VlLm1lc3NhZ2V9XFxuYDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yIHx8IHR5cGVvZiBlcnIgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gZXJyLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBncmFjZWZ1bEV4aXQoMSk7XG4gICAgICAgIH0pO1xuICAgIH0pLmNhdGNoKG1lc3NhZ2UgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcHJvZ3JhbS5lcnJvcihtZXNzYWdlKTtcbiAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGVycm9yIG1lc3NhZ2UsXG4gICAgICAgICAgICAvLyB3ZSBjYW4gYXNzdW1lIGEgY2xlYW4gZXhpdFxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuIiwiaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5pbXBvcnQgdmVyc2lvbnMgZnJvbSAnLi4vLi4vYXNzZXRzL3ZlcnNpb25zLmpzb24nO1xuZXhwb3J0IGNvbnN0IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyA9IHouZW51bShbXG4gICAgJ3Bvc3RncmVzcWwnLFxuICAgICdteXNxbCcsXG4gICAgJ21zc3FsJ1xuXSk7XG5leHBvcnQgY29uc3QgU3VwcG9ydGVkTVNTUUxFZGl0aW9ucyA9IHouZW51bShbXG4gICAgJ0RldmVsb3BlcicsXG4gICAgJ0V4cHJlc3MnLFxuICAgICdTdGFuZGFyZCcsXG4gICAgJ0VudGVycHJpc2UnLFxuICAgICdFbnRlcnByaXNlQ29yZSdcbl0pO1xuZXhwb3J0IGNvbnN0IERhdGFiYXNlT3B0aW9ucyA9IHoub2JqZWN0KHtcbiAgICBuYW1lOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMsXG4gICAgcG9ydDogei5udW1iZXIoKS5vcih6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkpLFxuICAgIGRhdGFiYXNlOiB6LnN0cmluZygpLmRlZmF1bHQoJ2RjZHgnKSxcbiAgICB1c2VybmFtZTogei5zdHJpbmcoKS5kZWZhdWx0KCdkY2R4JyksXG4gICAgcGFzc3dvcmQ6IHouc3RyaW5nKCkuZGVmYXVsdCgnZGNkeCcpLFxuICAgIGNsZWFuOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBwcnVuZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgdmVyYm9zZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgZHJpdmVyOiB6LnN0cmluZygpXG59KTtcbmV4cG9ydCBjb25zdCBQb3N0Z3JlU1FMT3B0aW9ucyA9IERhdGFiYXNlT3B0aW9ucy5leHRlbmQoe1xuICAgIG5hbWU6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLnBvc3RncmVzcWwpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKSxcbiAgICB0YWc6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gdmVyc2lvbnNbU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsXS5pbmNsdWRlcyhpdGVtKSkuZGVmYXVsdCgnbGF0ZXN0JyksXG4gICAgcG9ydDogei5udW1iZXIoKS5vcih6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkpLmRlZmF1bHQoNTQzMiksXG4gICAgZHJpdmVyOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IGl0ZW0gPT09ICdvcmcucG9zdGdyZXNxbC5Ecml2ZXInKS5kZWZhdWx0KCdvcmcucG9zdGdyZXNxbC5Ecml2ZXInKVxufSk7XG5leHBvcnQgY29uc3QgTXlTUUxPcHRpb25zID0gRGF0YWJhc2VPcHRpb25zLmV4dGVuZCh7XG4gICAgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLnJlZmluZShpdGVtID0+IGl0ZW0gPT09IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWwpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5teXNxbCksXG4gICAgdGFnOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IHZlcnNpb25zW1N1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWxdLmluY2x1ZGVzKGl0ZW0pKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBwb3J0OiB6Lm51bWJlcigpLm9yKHouc3RyaW5nKCkudHJhbnNmb3JtKE51bWJlcikucmVmaW5lKGl0ZW0gPT4gIWlzTmFOKGl0ZW0pKSkuZGVmYXVsdCgzMzA2KSxcbiAgICBkcml2ZXI6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gJ2NvbS5teXNxbC5qZGJjLkRyaXZlcicpLmRlZmF1bHQoJ2NvbS5teXNxbC5qZGJjLkRyaXZlcicpXG59KTtcbmV4cG9ydCBjb25zdCBNU1NRTE9wdGlvbnMgPSBEYXRhYmFzZU9wdGlvbnMuZXh0ZW5kKHtcbiAgICBuYW1lOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbCkuZGVmYXVsdChTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm1zc3FsKSxcbiAgICB0YWc6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gdmVyc2lvbnNbU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbF0uaW5jbHVkZXMoaXRlbSkpLmRlZmF1bHQoJ2xhdGVzdCcpLFxuICAgIGVkaXRpb246IFN1cHBvcnRlZE1TU1FMRWRpdGlvbnMuZGVmYXVsdCgnRGV2ZWxvcGVyJyksXG4gICAgcG9ydDogei5udW1iZXIoKS5vcih6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkpLmRlZmF1bHQoMTQzMyksXG4gICAgdXNlcm5hbWU6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gJ3NhJykuZGVmYXVsdCgnc2EnKSxcbiAgICBwYXNzd29yZDogei5zdHJpbmcoKS5kZWZhdWx0KCdEYXRhQ2VudGVyRFghJyksXG4gICAgZHJpdmVyOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IGl0ZW0gPT09ICdjb20ubWljcm9zb2Z0LnNxbHNlcnZlci5qZGJjLlNRTFNlcnZlckRyaXZlcicpLmRlZmF1bHQoJ2NvbS5taWNyb3NvZnQuc3Fsc2VydmVyLmpkYmMuU1FMU2VydmVyRHJpdmVyJylcbn0pO1xuIiwiaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5pbXBvcnQgeyBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMgfSBmcm9tICcuL0RhdGFiYXNlJztcbmV4cG9ydCBjb25zdCBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgPSB6LmVudW0oW1xuICAgICdqaXJhJyxcbiAgICAnY29uZmx1ZW5jZScsXG4gICAgJ2JpdGJ1Y2tldCcsXG4gICAgJ2JhbWJvbydcbl0pO1xuZXhwb3J0IGNvbnN0IEFwcGxpY2F0aW9uT3B0aW9ucyA9IHoub2JqZWN0KHtcbiAgICBuYW1lOiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMsXG4gICAgdGFnOiB6LnN0cmluZygpLmRlZmF1bHQoJ2xhdGVzdCcpLFxuICAgIGRhdGFiYXNlOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuZGVmYXVsdCgncG9zdGdyZXNxbCcpLFxuICAgIGRhdGFiYXNlVGFnOiB6LnN0cmluZygpLmRlZmF1bHQoJ2xhdGVzdCcpLFxuICAgIHBvcnQ6IHouc3RyaW5nKCkudHJhbnNmb3JtKE51bWJlcikucmVmaW5lKGl0ZW0gPT4gIWlzTmFOKGl0ZW0pKS5kZWZhdWx0KCc4MCcpLFxuICAgIGNvbnRleHRQYXRoOiB6LnN0cmluZygpLFxuICAgIHhtczogei5zdHJpbmcoKS5kZWZhdWx0KCcxMDI0bScpLFxuICAgIHhteDogei5zdHJpbmcoKS5kZWZhdWx0KCcxMDI0bScpLFxuICAgIHdhdGNoOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBleHQ6IHouYXJyYXkoei5zdHJpbmcoKSksXG4gICAgaW5zdGFsbDogei5ib29sZWFuKCksXG4gICAgb3V0cHV0RGlyZWN0b3J5OiB6LnN0cmluZygpLFxuICAgIGFjdGl2YXRlUHJvZmlsZXM6IHouc3RyaW5nKCksXG4gICAgY2xlYW46IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIHBydW5lOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBkZWJ1Zzogei5ib29sZWFuKCkuZGVmYXVsdCh0cnVlKSxcbiAgICBjd2Q6IHouc3RyaW5nKClcbn0pLnBhcnRpYWwoe1xuICAgIGNvbnRleHRQYXRoOiB0cnVlLFxuICAgIGV4dDogdHJ1ZSxcbiAgICBpbnN0YWxsOiB0cnVlLFxuICAgIG91dHB1dERpcmVjdG9yeTogdHJ1ZSxcbiAgICBhY3RpdmF0ZVByb2ZpbGVzOiB0cnVlLFxuICAgIGN3ZDogdHJ1ZVxufSk7XG4iLCJpbXBvcnQgeyBET01QYXJzZXIsIFhNTFNlcmlhbGl6ZXIgfSBmcm9tICdAeG1sZG9tL3htbGRvbSc7XG5pbXBvcnQgeyBzcGF3biB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgWE1MUGFyc2VyIH0gZnJvbSAnZmFzdC14bWwtcGFyc2VyJztcbmltcG9ydCB7IGV4aXN0c1N5bmMsIHJlYWRGaWxlU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdwYXRoJztcbmltcG9ydCB7IGN3ZCB9IGZyb20gJ3Byb2Nlc3MnO1xuaW1wb3J0IHhwYXRoIGZyb20gJ3hwYXRoJztcbmltcG9ydCB7IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0FwcGxpY2F0aW9uJztcbmV4cG9ydCBjbGFzcyBBTVBTIHtcbiAgICBvcHRpb25zO1xuICAgIG1hdmVuID0gbnVsbDtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0ge1xuICAgICAgICBwcm9maWxlczogW11cbiAgICB9KSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQdWJsaWMgTWV0aG9kc1xuICAgIHN0b3AoKSB7XG4gICAgICAgIGlmICh0aGlzLm1hdmVuKSB7XG4gICAgICAgICAgICBjb25zdCBraWxsZWQgPSB0aGlzLm1hdmVuLmtpbGwoMCk7XG4gICAgICAgICAgICBpZiAoIWtpbGxlZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHRlcm1pbmF0ZSBleGlzdGluZyBNYXZlbiBwcm9jZXNzJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgYnVpbGQoYXJncykge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMubWF2ZW4pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBraWxsZWQgPSB0aGlzLm1hdmVuLmtpbGwoMCk7XG4gICAgICAgICAgICAgICAgaWYgKCFraWxsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignRmFpbGVkIHRvIHRlcm1pbmF0ZSBleGlzdGluZyBNYXZlbiBwcm9jZXNzJykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubWF2ZW4gPSBzcGF3bignbXZuJywgWydwYWNrYWdlJywgLi4uYXJnc10sIHsgY3dkOiB0aGlzLm9wdGlvbnM/LmN3ZCB8fCBjd2QoKSwgc3RkaW86ICdpbmhlcml0JyB9KTtcbiAgICAgICAgICAgIHRoaXMubWF2ZW4ub24oJ2V4aXQnLCAoY29kZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubWF2ZW4gPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChjb2RlID09PSAwIHx8IGNvZGUgPT09IDEzMCkge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBNYXZlbiBleGl0ZWQgd2l0aCBjb2RlICR7Y29kZX1gKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpc0F0bGFzc2lhblBsdWdpbiA9ICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy5nZXROb2RlcygnLy8qW2xvY2FsLW5hbWUoKT1cXCdwYWNrYWdpbmdcXCddJyk7XG4gICAgICAgICAgICByZXR1cm4gbm9kZXMuc29tZShpdGVtID0+IGl0ZW0udGV4dENvbnRlbnQgPT09ICdhdGxhc3NpYW4tcGx1Z2luJyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBnZXRBcHBsaWNhdGlvblZlcnNpb24oKSB7XG4gICAgICAgIGNvbnN0IGFwcGxpY2F0aW9ucyA9IHRoaXMuZ2V0QXBwbGljYXRpb25zKCk7XG4gICAgICAgIGlmIChhcHBsaWNhdGlvbnMuc2l6ZSA9PT0gMSkge1xuICAgICAgICAgICAgY29uc3QgWywgdmVyc2lvbl0gPSBBcnJheS5mcm9tKGFwcGxpY2F0aW9ucylbMF07XG4gICAgICAgICAgICByZXR1cm4gdmVyc2lvbjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChhcHBsaWNhdGlvbnMuc2l6ZSA+IDEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIEF0bGFzc2lhbiBQbHVnaW4gcHJvamVjdCBjb250YWlucyBtdWx0aXBsZSBBTVBTIGNvbmZpZ3VyYXRpb24sIHVuYWJsZSB0byBkZWNpZGUgd2hpY2ggcHJvZHVjdCB0byB1c2Ug8J+YsCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGdldEFwcGxpY2F0aW9uKCkge1xuICAgICAgICBjb25zdCBhcHBsaWNhdGlvbnMgPSB0aGlzLmdldEFwcGxpY2F0aW9ucygpO1xuICAgICAgICBpZiAoYXBwbGljYXRpb25zLnNpemUgPT09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IFtuYW1lXSA9IEFycmF5LmZyb20oYXBwbGljYXRpb25zKVswXTtcbiAgICAgICAgICAgIHJldHVybiBuYW1lO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGFwcGxpY2F0aW9ucy5zaXplID4gMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgQXRsYXNzaWFuIFBsdWdpbiBwcm9qZWN0IGNvbnRhaW5zIG11bHRpcGxlIEFNUFMgY29uZmlndXJhdGlvbiwgdW5hYmxlIHRvIGRlY2lkZSB3aGljaCBwcm9kdWN0IHRvIHVzZSDwn5iwJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGdldEFwcGxpY2F0aW9ucygpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IE1hcCgpO1xuICAgICAgICBjb25zdCBub2RlcyA9IHRoaXMuZ2V0Tm9kZXMoJy8vKltsb2NhbC1uYW1lKCk9XFwnZ3JvdXBJZFxcJyBhbmQgdGV4dCgpPVxcJ2NvbS5hdGxhc3NpYW4ubWF2ZW4ucGx1Z2luc1xcJ10nKTtcbiAgICAgICAgY29uc3Qgbm9kZXNXaXRoQWN0aXZlUHJvZmlsZSA9IG5vZGVzLmZpbHRlcihub2RlID0+IHRoaXMuaXNBY3RpdmF0ZWRQcm9maWxlKG5vZGUpKTtcbiAgICAgICAgbm9kZXNXaXRoQWN0aXZlUHJvZmlsZS5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICAgICAgICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBwbHVnaW4gfSA9IHRoaXMudG9PYmplY3QocGFyZW50Tm9kZSk7XG4gICAgICAgICAgICAgICAgaWYgKCdhbXBzLW1hdmVuLXBsdWdpbicgPT09IHBsdWdpbj8uYXJ0aWZhY3RJZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGNvbmZpZ3VyYXRpb24gfSA9IHBsdWdpbiB8fCB7fTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjb25maWd1cmF0aW9uPy5wcm9kdWN0cykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLnByb2R1Y3RzLmZvckVhY2goKHByb2R1Y3QpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3VwcG9ydGVkQXBwbGljYXRpb24gPSB0aGlzLmdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHByb2R1Y3QuaWQpIHx8IHRoaXMuZ2V0U3VwcG9ydGVkQXBwbGljYXRpb24ocHJvZHVjdC5pbnN0YW5jZUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRlZEFwcGxpY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5kb1Byb3BlcnR5UmVwbGFjZW1lbnQocHJvZHVjdC52ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldChzdXBwb3J0ZWRBcHBsaWNhdGlvbiwgdmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcHJvZHVjdCB9ID0gY29uZmlndXJhdGlvbj8ucHJvZHVjdHMgfHwge307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb2R1Y3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3VwcG9ydGVkQXBwbGljYXRpb24gPSB0aGlzLmdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHByb2R1Y3QuaWQpIHx8IHRoaXMuZ2V0U3VwcG9ydGVkQXBwbGljYXRpb24ocHJvZHVjdC5pbnN0YW5jZUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRlZEFwcGxpY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5kb1Byb3BlcnR5UmVwbGFjZW1lbnQocHJvZHVjdC52ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldChzdXBwb3J0ZWRBcHBsaWNhdGlvbiwgdmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1cHBvcnRlZEFwcGxpY2F0aW9uID0gdGhpcy5nZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbihwbHVnaW4/LmFydGlmYWN0SWQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5nZXRWZXJzaW9uKG5vZGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3VwcG9ydGVkQXBwbGljYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQoc3VwcG9ydGVkQXBwbGljYXRpb24sIHZlcnNpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZhdGUgTWV0aG9kc1xuICAgIGdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZT8uaW5jbHVkZXMoU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5qaXJhKSkge1xuICAgICAgICAgICAgcmV0dXJuIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuamlyYTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWx1ZT8uaW5jbHVkZXMoU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5jb25mbHVlbmNlKSkge1xuICAgICAgICAgICAgcmV0dXJuIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuY29uZmx1ZW5jZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWx1ZT8uaW5jbHVkZXMoU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iYW1ib28pKSB7XG4gICAgICAgICAgICByZXR1cm4gU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iYW1ib287XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsdWU/LmluY2x1ZGVzKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYml0YnVja2V0KSkge1xuICAgICAgICAgICAgcmV0dXJuIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYml0YnVja2V0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBnZXRWZXJzaW9uKG5vZGUpIHtcbiAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICAgICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgcGx1Z2luIH0gPSB0aGlzLnRvT2JqZWN0KHBhcmVudE5vZGUpO1xuICAgICAgICAgICAgY29uc3QgeyBjb25maWd1cmF0aW9uIH0gPSBwbHVnaW4gfHwge307XG4gICAgICAgICAgICBpZiAoY29uZmlndXJhdGlvbj8ucHJvZHVjdFZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb1Byb3BlcnR5UmVwbGFjZW1lbnQocGx1Z2luLmNvbmZpZ3VyYXRpb24ucHJvZHVjdFZlcnNpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY29uZmlndXJhdGlvbj8ucHJvZHVjdHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9kdWN0ID0gQXJyYXkuaXNBcnJheShjb25maWd1cmF0aW9uPy5wcm9kdWN0cykgPyBjb25maWd1cmF0aW9uPy5wcm9kdWN0c1swXSA6IGNvbmZpZ3VyYXRpb24ucHJvZHVjdHMucHJvZHVjdDtcbiAgICAgICAgICAgICAgICBpZiAocHJvZHVjdCAmJiBwcm9kdWN0LnZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHByb2R1Y3QudmVyc2lvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGRvUHJvcGVydHlSZXBsYWNlbWVudCh2YWx1ZSkge1xuICAgICAgICBsZXQgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgIC8vIElmIHRoZXJlIGlzIGEgcHJvZmlsZSwgcmVwbGFjZSBwcm9maWxlIHByb3BlcnRpZXMgZmlyc3QgYXMgdGhleSB0YWtlIHByZWNlZGVuY2VcbiAgICAgICAgY29uc3QgcHJvZmlsZVByb3BlcnRpZXMgPSB0aGlzLmdldFByb3BlcnRpZXMoKTtcbiAgICAgICAgT2JqZWN0LmVudHJpZXMocHJvZmlsZVByb3BlcnRpZXMpLmZvckVhY2goKFtwcm9wZXJ0eUtleSwgcHJvcGVydHlWYWx1ZV0pID0+IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlQWxsKGAkXFx7JHtwcm9wZXJ0eUtleX19YCwgcHJvcGVydHlWYWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5nZXRQcm9wZXJ0aWVzKCk7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHByb3BlcnRpZXMpLmZvckVhY2goKFtwcm9wZXJ0eUtleSwgcHJvcGVydHlWYWx1ZV0pID0+IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlQWxsKGAkXFx7JHtwcm9wZXJ0eUtleX19YCwgcHJvcGVydHlWYWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBnZXRQcm9wZXJ0aWVzKCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSB0aGlzLmdldE5vZGVzKCcvLypbbG9jYWwtbmFtZSgpPVxcJ3Byb3BlcnRpZXNcXCddJyk7XG4gICAgICAgIGNvbnN0IG5vZGVzV2l0aEFjdGl2ZVByb2ZpbGUgPSBub2Rlcy5maWx0ZXIobm9kZSA9PiB0aGlzLmlzQWN0aXZhdGVkUHJvZmlsZShub2RlKSk7XG4gICAgICAgIG5vZGVzV2l0aEFjdGl2ZVByb2ZpbGUuZm9yRWFjaChub2RlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgcHJvcGVydGllcyB9ID0gdGhpcy50b09iamVjdChub2RlKTtcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHByb3BlcnRpZXMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4gcmVzdWx0W2tleV0gPSB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBnZXROb2RlcyhleHByZXNzaW9uLCBzaW5nbGUpIHtcbiAgICAgICAgY29uc3QgcG9tRmlsZVBhdGggPSBqb2luKHRoaXMub3B0aW9ucz8uY3dkIHx8IGN3ZCgpLCAnLi9wb20ueG1sJyk7XG4gICAgICAgIGNvbnN0IGhhc1BvbUZpbGUgPSBleGlzdHNTeW5jKHBvbUZpbGVQYXRoKTtcbiAgICAgICAgaWYgKGhhc1BvbUZpbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHhtbCA9IHJlYWRGaWxlU3luYyhwb21GaWxlUGF0aCwgJ3V0ZjgnKTtcbiAgICAgICAgICAgIGNvbnN0IGRvYyA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoeG1sLCAndGV4dC94bWwnKTtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gc2luZ2xlID8geHBhdGguc2VsZWN0KGV4cHJlc3Npb24sIGRvYywgdHJ1ZSkgOiB4cGF0aC5zZWxlY3QoZXhwcmVzc2lvbiwgZG9jLCBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShub2RlcykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChzaW5nbGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICB0b09iamVjdChub2RlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZXIgPSBuZXcgWE1MUGFyc2VyKCk7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VyLnBhcnNlKG5ldyBYTUxTZXJpYWxpemVyKCkuc2VyaWFsaXplVG9TdHJpbmcobm9kZSkpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZpbmRQYXJlbnROb2RlQnlUYWdOYW1lKHRhZ05hbWUsIG5vZGUpIHtcbiAgICAgICAgY29uc3QgeyBwYXJlbnROb2RlIH0gPSBub2RlO1xuICAgICAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgaWYgKHBhcmVudE5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gdGFnTmFtZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudE5vZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5maW5kUGFyZW50Tm9kZUJ5VGFnTmFtZSh0YWdOYW1lLCBwYXJlbnROb2RlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaXNBY3RpdmF0ZWRQcm9maWxlKG5vZGUpIHtcbiAgICAgICAgY29uc3QgcHJvZmlsZVBhcmVudE5vZGUgPSB0aGlzLmZpbmRQYXJlbnROb2RlQnlUYWdOYW1lKCdwcm9maWxlJywgbm9kZSk7XG4gICAgICAgIGNvbnN0IHByb2ZpbGVOb2RlID0gcHJvZmlsZVBhcmVudE5vZGUgPyB0aGlzLnRvT2JqZWN0KHByb2ZpbGVQYXJlbnROb2RlKSA6IG51bGw7XG4gICAgICAgIGlmICghcHJvZmlsZU5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHByb2ZpbGVOb2RlICYmIChwcm9maWxlTm9kZS5hY3RpdmVCeURlZmF1bHQgPT09ICd0cnVlJyB8fCB0aGlzLm9wdGlvbnMucHJvZmlsZXMuaW5jbHVkZXMocHJvZmlsZU5vZGUucHJvZmlsZS5pZCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsImV4cG9ydCBjb25zdCB0aW1lYm9tYiA9IHtcbiAgICAnamlyYSc6ICdBQUFDQkEwT0RBb1BlTnA5a2wxdjJqQVVodS96SzQ2ME95UUhTTHVWSWtVYVRid05WQktVaEVuYnVnc1REdUEyc1NQYmdiRmZQeE9DMWkrNHlFWE81K3ZuUFIreUdpR1NXL0N1b1hjN3ZCb012VDRFTkFPdjUvV2N0VUlVRzFsVnFOeDducVBRU0pmY2NDbDhHbVUwbVNYamxEcFJYUzVReGF1NVJxVjkwbmNDS1F6TFRjUks5RXU5NDRJcC9jUS9NMU13clRrVGJpNUxaMWFyZk1NMGhzeWc3L1g2QTlMdkU4OXoyajNadnNKbVFCQlBwelFKeHFQN1U0citxYmphTjMyekcrL2JhUjJkTWw2YzM1ZWkycUlhaC80ZHZhSGtPdnpwa1UveDVJWjh2Ym9kT0k5Y01iZFNjbG5ueGozOEVDMVhac2NVdW5ZeTM2SnZWSTNPeEdabWJaWGR6d0lVNWxWSldpOTBybmpWUUdvaTcwQjg3M0dOaFBPUU81MU9GR2ZrUzV5UVdSS0g4eUFieHhHWnA5UW0vRUNocGJHRXhSN01CcUdkQWxUa2Nva0s3TU1lTVRmd2EyTk05VERzZHRmU2ZRR25XeHc3Q0I0N2Zyc1FTaERTd0pKcm8vaWlObWduY3cxR1FsNXJJMHRydGV0WTRzS2dZQ0ovWTRxVkZTUjBsTkdRM1AwNGFEeHJUS3ZXT2pNWFQwTHV4Q1UzM3R4YVNpUGZmdVJqcjNmc08vbUM2b2cvVm1zbXVHWU4wSWo5M1RGWWNWWHVuUWFhRGI0K3dKYkZkN3ZnME9JNUlmNTNORU50b0syQWxWUXdHU2NqU0Z0NWxyamRXeW11OFdFSWdTd3RwcHl6QXNMZ3hSazhQNWhHOVBNQTNiS2lQc3Bkc1VMakpSd1g3dWtmNS9OWDdUQXRBaFVBaFFTSHo5RGd5Y09YN3djd0VSTUpiM1RMR2I0Q0ZHa0IveFVXU1JLM0JaTHJQRjlSbjZabXJVcUpYMDJvYycsXG4gICAgJ2NvbmZsdWVuY2UnOiAnQUFBQ3pnME9EQW9QZU5wOVZPOXYyakFRL1o2L3d0SytJWVdHc0VLSEZHbVFtSmF1L0dnSW05aVlKaE1PWXByWWtlMUE0YStmU2NoR0t0cVBQdnZldlh2M3pwLzZncUxITEViMkhiS3NUdk56cDlsQzk4TUEyWmJkTktZZ2RpQUdudFBEUTJ6Njg4SGNkSC9hTTdQNW8ya1pUelFFSmlFNHBEQWlDVGdCbmdhRDBiMFJDcjVmMVM5dUhmY1VXWFNRQnp1SWVRckNDRGxiMTBtbzZBNGNKVExRU1ZsSWx6RlVnZ3BJOGlja01iQVZFYkkreXBJbGlQRzZSNUlsNXo0a1hFRjNBMHhKcDFHeXdhOHBGUWVQS0hBbURkdDYrQTljSlZRRUs1eVdtaE1WOEhHWkxSV2t3ckY4UFpNZ3BHUGZHaDdJVU5CVVVjNmNBS1JDY1ZFWXJibEFhWnh0S0VPcnNxajhWL1VTODV6eFhkK2ZVR3dENzBpY2tSd3lmN0FSQUN6aXFVWW8rOElybXQvalVZRDlpVCtZWW1OSUtGUEFDQXV2eUhJYVFFVVNIWWd6MEc4cm9yZ0M4cnA1cXZhRVpWcDNwdDB1OHN2ZTNUaVRDc1NJcjBBNmxsR3IxVndmZHdQc21iMjVQampiVndxMkVjWmNtNm5TNkRLWCtJM2lUMXlQL0N5NDJUQmU0RkFLMFdoWlZ0dTZhelliWmVabEIwVTJ3cnBua1FvcXE0MFV5c3Q2N1JxQjl6VThrNjRvbFllcUtuR21OQ3pXaXNlT1VvS3doTExvSzFFeGtaSVNWZzk1Y3IzWk4vWXFkdWVTWVc2NDkvbWRyZkpBWk9RTTNiM2I5NkRSdWhWazMyNjFra0Z2ZXh3ZTQxVVF0Sk4xMnU1R3o2R2NQVDdQbjcxSDcwdDY5Q1BjYngvYTlyY2ozckR1d2xrNHhwcktDQTVWTitvSmpzYUIyUi83NXNRZmV6TTNHSXhINW15S1Q2UE4vUUVydER3Z0ZRRTZFOVZEQ0xVWnROOEYzMEtvMEs5SXFYVFJ1Ym5aOEhwRmxadHpBeVlVR2IvcnlPT0ljWVZXVkNwQmw1a0NqVXdsVWh5RjJtWTgwV2FvWHhkekVoT1dlMllzTm9SUldXeE10NnhYL2hINlA1dXhGOGIzckxKSWx6MUxwUVc5NXBRUHZxZkxxMGttd29oSWVMczJsOVBNemZRNDhMdnZXVGJmTVkxQVhEZzlLSkRMQ1YyQzlIVU1IK0NhSmZPZnVkaS92MGtJR1Zzd0xBSVVFTVE5WDc3Z3FHQmRmSDBISXpCYVY4TmFkUFVDRkJuK1JpVUE0RCtJcVZRcFRUb3VMVlk2NmFDR1gwMjEyMScsXG4gICAgJ2JpdGJ1Y2tldCc6ICdBQUFCbWcwT0RBb1BlTnA5VWwxdjB6QVVmYyt2c01SYkphZEp0akdwVWlTMkpKUk9OT2xhQjRTQUI5ZTlXMHhUdTdKdkN2MzNlSW1ET29SNHZlZmU0L1BoTjU5aFI1YmNrUGlXUk5lektKNUZDWmt2R1VtaUpBNHlyWkFMTFBrQlVySFhvdEVudTVlQlJXNmI4S01Vb0N5dzh4SDZCVlpzMktLY2UzVEpwVUpRWEFrb2ZoMmxPZWNjSVYxZGZSaEpDN2ZSWHJKdXdKekFMUEwwL3FGK3BJOVhHYVB6K3VHR3NwdmJrZFJ4OEF3Y3IwblJkT0NubFhubVNscU9VcXYwRGx0dXJlVEtnNnZPaUlaYjZKOVBvdmlhUm05cEhIczBNOUNmL1J2MUR2L1NQNWxNeW9yUjk5V2FydFpWWG1kc1VaVzAzaFFPU0h0Q0YrbjJUTEFCNGhsSW9ZVGVnU0ZIbzMrQVFQSzFRVHgrbTAybnp6cmtvK0pRNk1PMEhTNG9EQmZmUTVKcm9qU1NuYlJvNUxaRGNNelNFdFJFZEJiMUFZd05SenNYZmYwSmdqQ3dMakcvNG1CNWdpRStKemhiRjNlc3lPbjlseGYxRjIxNDVhNk9XdTJWL3FtQy8yZFZkb2N0bU9xcHRrNVBHaWQrWEp4NDJ3M05QUEhXUXVEOWZYSmJMOFBrdGZMaFUyQXYrTjJyWU1ZNnVVRUZwbmNZL0FZQ2dmRkFNQ3dDRkh6a0Jsa0dIL3ZSZFRlZUJTZlVNelVEYjRXMkFoUXlNODkzV1BnMlE4b1FBWVJkQlN5S2VWVWRvZz09WDAyanInLFxuICAgICdiYW1ib28nOiAnQUFBQjN3ME9EQW9QZU5wOVVsdHIyekFZZmZldkVPd3RvTVIxMHFZTEdKYllXc25vN0dBN2c5MGVaUGxyb3RXV2pDU256WDc5RkY4SVlXa2ZEUEozT2Vkd3p2Y2gyemRvV1N2a3pwRjd2NWpkTHJ3cENraWFJYy8xUE9lUk14QWFzbU1ORWEzQXoyeG5IVDA0Z1FKcXVCUWhOZUI3N3ZRR3V6UHMzams1clhJcHg1UVpmZ0RmcUFhR1V0UlVPYWo0YWRYK1BrcEd5K1VPaE5FK3ZuR0c1bGFEYWdzOUwzbXR1VG9PSkY1UGtqYTVab3JYSndFWEhHK3BKUWRhTnZTL2NZdExBeXNCVkZmdTE5ZWh2eFhQUXI0SUp3VjFBR1VMS3pJbmVCYis4UEJkL0dXT0g2WWY3NTFObzlpZWF1amxlWU1IS1lsOCsrRmIxM1ZHbzFFVVovaHpuT0JORW9mYklGdkhFZDZteERiODFrUW9VSDVFWmcrb3AwZEVNRm1BUXJXU2Y0QVo5SE52VFAxck1abnNyTEdtcEZwektzWk1WcE95MjhEUWJmd2VvMUFpSVEwcXVEYUs1NDBCaTh3MU1oS3hSaHRaV1h2SFRnaG4rekxRQnZVNDZFbGExckxaY1lFS09FQXBhenZ2ZktYY2VpU29ZRy9rY1RYaFRVbEZHK1hWYmdLVk5IQStnRjdCTjh0M1V1VTVzZHBSd1hVWEdubWxWVjBDQ21SVlUzRzhFdmY1TUtVdzl2cUlGVjM2dFg3bW9OamZvN0NQVHhmZW5aSUpFckxNU0loWDMwOXB2RGQ4U1VnSzNzbUtNcEpza25WS0J0cjI2dDREK2dkM0FDNXFNQ3dDRkhPYVRXZkZ2TENMSlBmdDNxa3RWbzNGYWZtWkFoUm9qYjlJQXhqOEtFcVBEUXkwc3RvczM5NFNRUT09WDAybXEnXG59O1xuZXhwb3J0IGNvbnN0IGFwcDNob3VyID0gJ0FBQUJDQTBPREFvUGVOcGRqMDFQd2tBVVJmZnpLeVp4WjFJeVV6QVJrbGxRMjRnUmFRTXRHbmFQOFZFbXRqUE5mRlQ1OXlKVkZ5emZ1YmtuNzk2VXgwQno2U21iVU01bmJEemo5N1JJU3hvekhwTVVuYlNxODhwb1VhTHp0RkVTdFVONk1KWjJUYWlWcHUvWVkyTTZ0STZzUXJ0SG14OHFkNzRFWitUQkl2eVVVL0FvWXM3amlFMGp6a25XUXhNdWlmQTJJQmxVYm5RN0F1bFZqd045QWFVOWF0QVNzNjlPMmRORlU0d1hKTGMxYU9VR3c5dzM0SndDVFRab2U3UlBxVWdlcDJYMFZtMG4wZk51dDRnU3hsL0pjbmo5bkZiNlE1dFAvVWV1M0wrMFBIVzRnaFpGbW0yelpWNWs2Lzk1Q2JSN1k5YllHby96R3JWM0lyNGpSYkR5Q0E2dnQzNERPOHAzU0RBc0FoUW5KakxENWs5RnIzdWFJemtYS2Y4M281dkRkUUlVZTRYZXF1TkNDM0QrOWh0OVpZaE5aRkttbmhjPVgwMmRoJztcbiIsImltcG9ydCB7IHJlYWxwYXRoU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4gfSBmcm9tICdwYXRoJztcbmV4cG9ydCBjb25zdCB0b0Fic29sdXRlUGF0aCA9IChyZWxhdGl2ZVBhdGgpID0+IHtcbiAgICBjb25zdCBbLCBmaWxlUGF0aF0gPSBwcm9jZXNzLmFyZ3Y7XG4gICAgY29uc3QgZXhlY3V0YWJsZUZpbGVEaXIgPSBkaXJuYW1lKHJlYWxwYXRoU3luYyhmaWxlUGF0aCkpO1xuICAgIGNvbnN0IGJhc2VkaXIgPSBleGVjdXRhYmxlRmlsZURpci5zdWJzdHJpbmcoMCwgZXhlY3V0YWJsZUZpbGVEaXIuaW5kZXhPZignZGNkeCcpICsgNCk7XG4gICAgcmV0dXJuIGpvaW4oYmFzZWRpciwgcmVsYXRpdmVQYXRoLnJlcGxhY2VBbGwoJy4uLycsICcnKSk7XG59O1xuIiwiZXhwb3J0IGNvbnN0IG5ldHdvcmsgPSB7XG4gICAgbmFtZTogJ3NoYXJlZCcsXG4gICAgZHJpdmVyOiAnYnJpZGdlJ1xufTtcbiIsImltcG9ydCB7IHNwYXduIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgeyBkb3duQWxsLCBwcywgc3RvcCwgdXBBbGwgfSBmcm9tICdkb2NrZXItY29tcG9zZS9kaXN0L3YyLmpzJztcbmltcG9ydCB7IGdyYWNlZnVsRXhpdCB9IGZyb20gJ2V4aXQtaG9vayc7XG5pbXBvcnQgeyBkdW1wIH0gZnJvbSAnanMteWFtbCc7XG5pbXBvcnQgeyBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmltcG9ydCB7IENvbm5lY3Rpb25BY3F1aXJlVGltZW91dEVycm9yLCBDb25uZWN0aW9uRXJyb3IsIENvbm5lY3Rpb25SZWZ1c2VkRXJyb3IsIENvbm5lY3Rpb25UaW1lZE91dEVycm9yLCBTZXF1ZWxpemUsIFRpbWVvdXRFcnJvciB9IGZyb20gJ3NlcXVlbGl6ZSc7XG5pbXBvcnQgeyBuZXR3b3JrIH0gZnJvbSAnLi4vaGVscGVycy9uZXR3b3JrJztcbmV4cG9ydCBjbGFzcyBCYXNlIHtcbiAgICBvcHRpb25zO1xuICAgIHNlcXVlbGl6ZTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgIC8vIFdlIG5lZWQgdG8gdXNlICdtYXN0ZXInIGZvciBtc3NxbCBiZWNhdXNlIGl0IGRvZXMgbm90IGluaXRpYWxpemUgdGhlIGRhdGFiYXNlIG9uIHN0YXJ0XG4gICAgICAgIGNvbnN0IGRhdGFiYXNlID0gdGhpcy5vcHRpb25zLm5hbWUgPT09ICdtc3NxbCcgPyAnbWFzdGVyJyA6IHRoaXMub3B0aW9ucy5kYXRhYmFzZTtcbiAgICAgICAgdGhpcy5zZXF1ZWxpemUgPSBuZXcgU2VxdWVsaXplKGRhdGFiYXNlLCB0aGlzLm9wdGlvbnMudXNlcm5hbWUsIHRoaXMub3B0aW9ucy5wYXNzd29yZCwge1xuICAgICAgICAgICAgaG9zdDogJ2xvY2FsaG9zdCcsXG4gICAgICAgICAgICBwb3J0OiB0aGlzLm9wdGlvbnMucG9ydCxcbiAgICAgICAgICAgIGRpYWxlY3Q6IHRoaXMub3B0aW9ucy5uYW1lLnJlcGxhY2UoJ3Bvc3RncmVzcWwnLCAncG9zdGdyZXMnKSxcbiAgICAgICAgICAgIHJldHJ5OiB7XG4gICAgICAgICAgICAgICAgbWF4OiAzMCxcbiAgICAgICAgICAgICAgICBtYXRjaDogW0Nvbm5lY3Rpb25FcnJvciwgVGltZW91dEVycm9yLCBDb25uZWN0aW9uVGltZWRPdXRFcnJvciwgQ29ubmVjdGlvblJlZnVzZWRFcnJvciwgQ29ubmVjdGlvbkFjcXVpcmVUaW1lb3V0RXJyb3JdLFxuICAgICAgICAgICAgICAgIGJhY2tvZmZCYXNlOiAxMDAwLFxuICAgICAgICAgICAgICAgIGJhY2tvZmZFeHBvbmVudDogMVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxvZ2dpbmc6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHVibGljIE1ldGhvZHNcbiAgICBhc3luYyBydW4oc3FsLCBsb2dnaW5nKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNlcXVlbGl6ZS5xdWVyeShzcWwsIHsgbG9nZ2luZyB9KTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSB0cnlpbmcgdG8gcnVuIHRoZSBmb2xsb3dpbmcgU1FMIHF1ZXJ5OicsIHNxbCwgZXJyKTtcbiAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBzdGFydChjbGVhbiA9IHRoaXMub3B0aW9ucy5jbGVhbikge1xuICAgICAgICBjb25zb2xlLmxvZyhgU3RhcnRpbmcgaW5zdGFuY2Ugb2YgJHt0aGlzLm9wdGlvbnMubmFtZX0uLi4g8J+Sg2ApO1xuICAgICAgICBpZiAoY2xlYW4pIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZG93bigpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMudXAoKTtcbiAgICAgICAgY29uc3QgaXNBdmFpbGFibGUgPSBhd2FpdCB0aGlzLndhaXRVbnRpbFJlYWR5KCk7XG4gICAgICAgIGlmICghaXNBdmFpbGFibGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBGYWlsZWQgdG8gdmVyaWZ5IHN0YXR1cyBvZiAke3RoaXMub3B0aW9ucy5uYW1lfSDim5RgKTtcbiAgICAgICAgICAgIGdyYWNlZnVsRXhpdCgxKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBEYXRhYmFzZSBpcyByZWFkeSBhbmQgYWNjZXB0aW5nIGNvbm5lY3Rpb25zIG9uIGxvY2FsaG9zdDoke3RoaXMub3B0aW9ucy5wb3J0fSDwn5eE77iPYCk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMub25EYXRhYmFzZVJlYWR5KCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlcnZpY2UgPSBhd2FpdCB0aGlzLmdldFNlcnZpY2VTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VydmljZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zaG93RG9ja2VyTG9ncyhzZXJ2aWNlLm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGdyYWNlZnVsRXhpdCgxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBzdG9wKHBydW5lID0gdGhpcy5vcHRpb25zLnBydW5lKSB7XG4gICAgICAgIGlmIChwcnVuZSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5kb3duKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAodGhpcy5nZXREb2NrZXJDb21wb3NlQ29uZmlnKCkpO1xuICAgICAgICAgICAgYXdhaXQgc3RvcCh7XG4gICAgICAgICAgICAgICAgY3dkOiBjd2QoKSxcbiAgICAgICAgICAgICAgICBjb25maWdBc1N0cmluZyxcbiAgICAgICAgICAgICAgICBsb2c6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIG9uRGF0YWJhc2VSZWFkeSgpIHsgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcml2YXRlIE1ldGhvZHNcbiAgICBnZXREb2NrZXJDb21wb3NlQ29uZmlnKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2VydmljZXM6IHtcbiAgICAgICAgICAgICAgICAnZGInOiB0aGlzLmdldFNlcnZpY2UoKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldHdvcmtzOiB7XG4gICAgICAgICAgICAgICAgJ3NoYXJlZCc6IG5ldHdvcmtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG4gICAgYXN5bmMgdXAoKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ0FzU3RyaW5nID0gZHVtcCh0aGlzLmdldERvY2tlckNvbXBvc2VDb25maWcoKSk7XG4gICAgICAgIHJldHVybiB1cEFsbCh7XG4gICAgICAgICAgICBjd2Q6IGN3ZCgpLFxuICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICBsb2c6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIGRvd24oKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ0FzU3RyaW5nID0gZHVtcCh0aGlzLmdldERvY2tlckNvbXBvc2VDb25maWcoKSk7XG4gICAgICAgIHJldHVybiBkb3duQWxsKHtcbiAgICAgICAgICAgIGN3ZDogY3dkKCksXG4gICAgICAgICAgICBjb25maWdBc1N0cmluZyxcbiAgICAgICAgICAgIGNvbW1hbmRPcHRpb25zOiBbJy12JywgJy0tcmVtb3ZlLW9ycGhhbnMnLCAnLS1ybWknLCAnbG9jYWwnXSxcbiAgICAgICAgICAgIGxvZzogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgd2FpdFVudGlsUmVhZHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlcXVlbGl6ZS5hdXRoZW50aWNhdGUoKS50aGVuKCgpID0+IHRydWUpLmNhdGNoKCgpID0+IGZhbHNlKTtcbiAgICB9XG4gICAgYXN5bmMgZ2V0U2VydmljZVN0YXRlKCkge1xuICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAodGhpcy5nZXREb2NrZXJDb21wb3NlQ29uZmlnKCkpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwcyh7XG4gICAgICAgICAgICBjd2Q6IGN3ZCgpLFxuICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICBjb21tYW5kT3B0aW9uczogWyctLWFsbCddLFxuICAgICAgICAgICAgbG9nOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhLnNlcnZpY2VzLmZpbmQoaXRlbSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJ0cyA9IGl0ZW0ubmFtZS5zcGxpdCgnLScpO1xuICAgICAgICAgICAgY29uc3Qgc2VydmljZSA9IHBhcnRzW3BhcnRzLmxlbmd0aCAtIDJdO1xuICAgICAgICAgICAgcmV0dXJuIHNlcnZpY2UgPT09IHRoaXMub3B0aW9ucy5uYW1lO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgc2hvd0RvY2tlckxvZ3Moc2VydmljZSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZG9ja2VyID0gc3Bhd24oJ2RvY2tlcicsIFsnbG9ncycsICctZicsICctbicsICc1MDAwJywgc2VydmljZV0sIHsgc3RkaW86ICdpbmhlcml0JyB9KTtcbiAgICAgICAgICAgIGRvY2tlci5vbignZXhpdCcsIChjb2RlKSA9PiAoY29kZSA9PT0gMCkgPyByZXNvbHZlKCkgOiByZWplY3QobmV3IEVycm9yKGBEb2NrZXIgZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCkpKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiaW1wb3J0IHsgTVNTUUxPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMvRGF0YWJhc2UnO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgY2xhc3MgTVNTUUwgZXh0ZW5kcyBCYXNlIHtcbiAgICBvcHRpb25zO1xuICAgIGdldCB1cmwoKSB7XG4gICAgICAgIHJldHVybiBgamRiYzpzcWxzZXJ2ZXI6Ly9kYjoke3RoaXMub3B0aW9ucy5wb3J0fTtkYXRhYmFzZU5hbWU9JHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9O3RydXN0U2VydmVyQ2VydGlmaWNhdGU9dHJ1ZWA7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSBNU1NRTE9wdGlvbnMucGFyc2Uoe30pKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvdGVjdGVkIE1ldGhvZHNcbiAgICBhc3luYyBvbkRhdGFiYXNlUmVhZHkoKSB7XG4gICAgICAgIGF3YWl0IHRoaXMucnVuKGBDUkVBVEUgREFUQUJBU0UgJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9YCk7XG4gICAgICAgIGF3YWl0IHRoaXMucnVuKGBBTFRFUiBEQVRBQkFTRSAke3RoaXMub3B0aW9ucy5kYXRhYmFzZX0gQ09MTEFURSBTUUxfTGF0aW4xX0dlbmVyYWxfQ1AxX0NTX0FTYCk7XG4gICAgICAgIGF3YWl0IHRoaXMucnVuKGBBTFRFUiBEQVRBQkFTRSAke3RoaXMub3B0aW9ucy5kYXRhYmFzZX0gU0VUIFJFQURfQ09NTUlUVEVEX1NOQVBTSE9UIE9OIFdJVEggUk9MTEJBQ0sgSU1NRURJQVRFO2ApO1xuICAgIH1cbiAgICBnZXRTZXJ2aWNlID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW1hZ2U6IGBtY3IubWljcm9zb2Z0LmNvbS9tc3NxbC9zZXJ2ZXI6JHt0aGlzLm9wdGlvbnMudGFnfWAsXG4gICAgICAgICAgICBwb3J0czogW2Ake3RoaXMub3B0aW9ucy5wb3J0IHx8IDE0MzN9OjE0MzNgXSxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICAgICAgQUNDRVBUX0VVTEE6ICd5JyxcbiAgICAgICAgICAgICAgICBNU1NRTF9TQV9QQVNTV09SRDogdGhpcy5vcHRpb25zLnBhc3N3b3JkIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBNU1NRTF9QSUQ6IHRoaXMub3B0aW9ucy5lZGl0aW9uXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV0d29ya3M6IHtcbiAgICAgICAgICAgICAgICAnc2hhcmVkJzoge1xuICAgICAgICAgICAgICAgICAgICBhbGlhc2VzOiBbJ2RiJywgJ2RhdGFiYXNlJ11cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcbn1cbiIsImltcG9ydCB7IE15U1FMT3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0RhdGFiYXNlJztcbmltcG9ydCB7IEJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0IGNsYXNzIE15U1FMIGV4dGVuZHMgQmFzZSB7XG4gICAgb3B0aW9ucztcbiAgICBnZXQgdXJsKCkge1xuICAgICAgICByZXR1cm4gYGpkYmM6bXlzcWw6Ly9kYjoke3RoaXMub3B0aW9ucy5wb3J0fS8ke3RoaXMub3B0aW9ucy5kYXRhYmFzZX0/c2Vzc2lvblZhcmlhYmxlcz10cmFuc2FjdGlvbl9pc29sYXRpb249J1JFQUQtQ09NTUlUVEVEJ2A7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSBNeVNRTE9wdGlvbnMucGFyc2Uoe30pKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvdGVjdGVkIE1ldGhvZHNcbiAgICBhc3luYyBvbkRhdGFiYXNlUmVhZHkoKSB7XG4gICAgICAgIGF3YWl0IHRoaXMucnVuKGBBTFRFUiBEQVRBQkFTRSAke3RoaXMub3B0aW9ucy5kYXRhYmFzZX0gQ0hBUkFDVEVSIFNFVCAndXRmOG1iNCcgQ09MTEFURSB1dGY4bWI0X2JpbmApO1xuICAgIH1cbiAgICBnZXRTZXJ2aWNlID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW1hZ2U6IGBteXNxbDoke3RoaXMub3B0aW9ucy50YWd9YCxcbiAgICAgICAgICAgIHBvcnRzOiBbYCR7dGhpcy5vcHRpb25zLnBvcnQgfHwgMzMwNn06MzMwNmBdLFxuICAgICAgICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICAgICAgICBNWVNRTF9ST09UX1BBU1NXT1JEOiB0aGlzLm9wdGlvbnMucGFzc3dvcmQgfHwgJ2RjZHgnLFxuICAgICAgICAgICAgICAgIE1ZU1FMX1VTRVI6IHRoaXMub3B0aW9ucy51c2VybmFtZSB8fCAnZGNkeCcsXG4gICAgICAgICAgICAgICAgTVlTUUxfUEFTU1dPUkQ6IHRoaXMub3B0aW9ucy5wYXNzd29yZCB8fCAnZGNkeCcsXG4gICAgICAgICAgICAgICAgTVlTUUxfREFUQUJBU0U6IHRoaXMub3B0aW9ucy5kYXRhYmFzZSB8fCAnZGNkeCdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb21tYW5kOiBbJy0tbG9nX2Jpbl90cnVzdF9mdW5jdGlvbl9jcmVhdG9ycz0xJ10sXG4gICAgICAgICAgICBuZXR3b3Jrczoge1xuICAgICAgICAgICAgICAgICdzaGFyZWQnOiB7XG4gICAgICAgICAgICAgICAgICAgIGFsaWFzZXM6IFsnZGInLCAnZGF0YWJhc2UnXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xufVxuIiwiaW1wb3J0IHsgUG9zdGdyZVNRTE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy9EYXRhYmFzZSc7XG5pbXBvcnQgeyBCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmV4cG9ydCBjbGFzcyBQb3N0Z3JlcyBleHRlbmRzIEJhc2Uge1xuICAgIG9wdGlvbnM7XG4gICAgZ2V0IHVybCgpIHtcbiAgICAgICAgcmV0dXJuIGBqZGJjOnBvc3RncmVzcWw6Ly9kYjoke3RoaXMub3B0aW9ucy5wb3J0fS8ke3RoaXMub3B0aW9ucy5kYXRhYmFzZX1gO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0gUG9zdGdyZVNRTE9wdGlvbnMucGFyc2Uoe30pKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvdGVjdGVkIE1ldGhvZHNcbiAgICBnZXRTZXJ2aWNlID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW1hZ2U6IGBwb3N0Z3Jlczoke3RoaXMub3B0aW9ucy50YWd9YCxcbiAgICAgICAgICAgIHBvcnRzOiBbYCR7dGhpcy5vcHRpb25zLnBvcnQgfHwgNTQzMn06NTQzMmBdLFxuICAgICAgICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19VU0VSOiB0aGlzLm9wdGlvbnMudXNlcm5hbWUgfHwgJ2RjZHgnLFxuICAgICAgICAgICAgICAgIFBPU1RHUkVTX1BBU1NXT1JEOiB0aGlzLm9wdGlvbnMucGFzc3dvcmQgfHwgJ2RjZHgnLFxuICAgICAgICAgICAgICAgIFBPU1RHUkVTX0RCOiB0aGlzLm9wdGlvbnMuZGF0YWJhc2UgfHwgJ2RjZHgnLFxuICAgICAgICAgICAgICAgIFBPU1RHUkVTX0hPU1RfQVVUSF9NRVRIT0Q6ICdtZDUnLFxuICAgICAgICAgICAgICAgIFBPU1RHUkVTX0lOSVREQl9BUkdTOiAnLS1lbmNvZGluZz1VVEYtOCAtLWxjLWNvbGxhdGU9QyAtLWxjLWN0eXBlPUMnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV0d29ya3M6IHtcbiAgICAgICAgICAgICAgICAnc2hhcmVkJzoge1xuICAgICAgICAgICAgICAgICAgICBhbGlhc2VzOiBbJ2RiJywgJ2RhdGFiYXNlJ11cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcbn1cbiIsImltcG9ydCB7IE1TU1FMIH0gZnJvbSAnLi4vZGF0YWJhc2VzL21zc3FsJztcbmltcG9ydCB7IE15U1FMIH0gZnJvbSAnLi4vZGF0YWJhc2VzL215c3FsJztcbmltcG9ydCB7IFBvc3RncmVzIH0gZnJvbSAnLi4vZGF0YWJhc2VzL3Bvc3RncmVzJztcbmltcG9ydCB7IE1TU1FMT3B0aW9ucywgTXlTUUxPcHRpb25zLCBQb3N0Z3JlU1FMT3B0aW9ucywgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzIH0gZnJvbSAnLi4vdHlwZXMvRGF0YWJhc2UnO1xuZXhwb3J0IGNvbnN0IGdldERhdGFiYXNlRW5naW5lID0gKG9wdGlvbnMsIHRhZykgPT4ge1xuICAgIHN3aXRjaCAob3B0aW9ucy5uYW1lKSB7XG4gICAgICAgIGNhc2UgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsOlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQb3N0Z3JlcyhQb3N0Z3JlU1FMT3B0aW9ucy5wYXJzZSh7IC4uLm9wdGlvbnMsIHRhZyB9KSk7XG4gICAgICAgIGNhc2UgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5teXNxbDpcbiAgICAgICAgICAgIHJldHVybiBuZXcgTXlTUUwoTXlTUUxPcHRpb25zLnBhcnNlKHsgLi4ub3B0aW9ucywgdGFnIH0pKTtcbiAgICAgICAgY2FzZSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm1zc3FsOlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBNU1NRTChNU1NRTE9wdGlvbnMucGFyc2UoeyAuLi5vcHRpb25zLCB0YWcgfSkpO1xuICAgIH1cbn07XG4iLCJpbXBvcnQgeyB6IH0gZnJvbSAnem9kJztcbmV4cG9ydCBjb25zdCBnZXRab2REZWZhdWx0ID0gKHNjaGVtYSwga2V5KSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdHMgPSBnZXRab2REZWZhdWx0cyhzY2hlbWEpO1xuICAgIHJldHVybiBkZWZhdWx0c1trZXldO1xufTtcbi8vIENvZGUgc25pcHBldCBieSBKYWNvYiBXZWlzZW5idXJnZXIgKGh0dHBzOi8vZ2l0aHViLmNvbS9KYWNvYldlaXNlbmJ1cmdlcilcbi8vIFRha2VuIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2NvbGluaGFja3Mvem9kL2Rpc2N1c3Npb25zLzE5NTMjZGlzY3Vzc2lvbmNvbW1lbnQtNDgxMTU4OFxuZXhwb3J0IGNvbnN0IGdldFpvZERlZmF1bHRzID0gKHNjaGVtYSkgPT4ge1xuICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoc2NoZW1hLnNoYXBlKS5maWx0ZXIoKFssIHZhbHVlXSkgPT4ge1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiB6LlpvZERlZmF1bHQpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IHZhbHVlLl9kZWYuZGVmYXVsdFZhbHVlKCk7XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlICE9PSBudWxsICYmIHR5cGVvZiBkZWZhdWx0VmFsdWUgIT09ICd1bmRlZmluZWQnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKFtrZXksIHZhbHVlLl9kZWYuZGVmYXVsdFZhbHVlKCldKSkpO1xufTtcbiIsImltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBzcGF3biB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgZG93bkFsbCwgbG9ncywgcHMsIHN0b3AsIHVwQWxsIH0gZnJvbSAnZG9ja2VyLWNvbXBvc2UvZGlzdC92Mi5qcyc7XG5pbXBvcnQgeyBncmFjZWZ1bEV4aXQgfSBmcm9tICdleGl0LWhvb2snO1xuaW1wb3J0IHsgZXhpc3RzU3luYywgbWtkaXJTeW5jIH0gZnJvbSAnZnMnO1xuaW1wb3J0IHsgZHVtcCB9IGZyb20gJ2pzLXlhbWwnO1xuaW1wb3J0IHsgaG9tZWRpciB9IGZyb20gJ29zJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdwYXRoJztcbmltcG9ydCB7IGFyY2gsIGN3ZCB9IGZyb20gJ3Byb2Nlc3MnO1xuaW1wb3J0IHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IHNpbXBsZUdpdCBmcm9tICdzaW1wbGUtZ2l0JztcbmltcG9ydCB7IGdldERhdGFiYXNlRW5naW5lIH0gZnJvbSAnLi4vaGVscGVycy9nZXREYXRhYmFzZUVuZ2luZSc7XG5pbXBvcnQgeyBnZXRab2REZWZhdWx0cyB9IGZyb20gJy4uL2hlbHBlcnMvZ2V0Wm9kRGVmYXVsdHMnO1xuaW1wb3J0IHsgbmV0d29yayB9IGZyb20gJy4uL2hlbHBlcnMvbmV0d29yayc7XG5pbXBvcnQgeyBEYXRhYmFzZU9wdGlvbnMsIE1TU1FMT3B0aW9ucywgTXlTUUxPcHRpb25zLCBQb3N0Z3JlU1FMT3B0aW9ucywgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzIH0gZnJvbSAnLi4vdHlwZXMvRGF0YWJhc2UnO1xuY29uc3QgYmFzZWRpciA9IGpvaW4oaG9tZWRpcigpLCAnLmRjZHgnKTtcbmV4cG9ydCBjbGFzcyBCYXNlIHtcbiAgICBvcHRpb25zO1xuICAgIGRhdGFiYXNlO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgdGhpcy5kYXRhYmFzZSA9IHRoaXMuZ2V0RGF0YWJhc2VFbmdpbmUob3B0aW9ucy5kYXRhYmFzZSwgb3B0aW9ucy5kYXRhYmFzZVRhZyk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm9wZXJ0aWVzXG4gICAgZ2V0IGJhc2VVcmwoKSB7XG4gICAgICAgIGxldCBiYXNlVXJsID0gYGh0dHA6Ly9sb2NhbGhvc3RgO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnBvcnQpIHtcbiAgICAgICAgICAgIGJhc2VVcmwgKz0gYDoke3RoaXMub3B0aW9ucy5wb3J0fWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5jb250ZXh0UGF0aCA/IGAke2Jhc2VVcmx9LyR7dGhpcy5vcHRpb25zLmNvbnRleHRQYXRofWAgOiBiYXNlVXJsO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHVibGljIE1ldGhvZHNcbiAgICBhc3luYyBzdGFydCgpIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5jbGVhbikge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5kb3duKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNCdWlkUmVxdWlyZWQoKSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5idWlsZCh0aGlzLm9wdGlvbnMudGFnKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLmRhdGFiYXNlLnN0YXJ0KHRoaXMub3B0aW9ucy5jbGVhbik7XG4gICAgICAgIGF3YWl0IHRoaXMudXAoKTtcbiAgICB9XG4gICAgYXN5bmMgc3RvcCgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5kYXRhYmFzZS5zdG9wKHRoaXMub3B0aW9ucy5wcnVuZSk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucHJ1bmUpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZG93bigpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpKTtcbiAgICAgICAgICAgIGF3YWl0IHN0b3Aoe1xuICAgICAgICAgICAgICAgIGN3ZDogdGhpcy5vcHRpb25zLmN3ZCB8fCBjd2QoKSxcbiAgICAgICAgICAgICAgICBjb25maWdBc1N0cmluZyxcbiAgICAgICAgICAgICAgICBsb2c6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIHJlc2V0KCkge1xuICAgICAgICBhd2FpdCB0aGlzLmRhdGFiYXNlLnN0b3AodHJ1ZSk7XG4gICAgICAgIGF3YWl0IHRoaXMuZG93bigpO1xuICAgIH1cbiAgICBnZXRKVk1BcmdzKCkge1xuICAgICAgICBjb25zdCBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTID0gW107XG4gICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLUR1cG0ucGx1Z2luLnVwbG9hZC5lbmFibGVkPXRydWUnKTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kZWJ1Zykge1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctRGppcmEuZGV2Lm1vZGU9dHJ1ZScpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctRGF0bGFzc2lhbi5kZXYubW9kZT10cnVlJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy53YXRjaCkge1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctRHF1aWNrcmVsb2FkLmRpcnM9L29wdC9xdWlja3JlbG9hZCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTO1xuICAgIH1cbiAgICBhc3luYyBpc0FwcGxpY2F0aW9uUmVhZHkoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLmdldChgJHt0aGlzLmJhc2VVcmx9L3N0YXR1c2AsIHsgdmFsaWRhdGVTdGF0dXM6ICgpID0+IHRydWUgfSk7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhIH0gPSByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc3RhdGUgPT09ICdGSVJTVF9SVU4nIHx8IGRhdGEuc3RhdGUgPT09ICdSVU5OSU5HJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFRoZSBhcHBsaWNhdGlvbiAke3RoaXMubmFtZX0gaXMgcmVhZHkgb24gJHt0aGlzLmJhc2VVcmx9IPCfjolgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXREYXRhYmFzZUVuZ2luZShuYW1lLCB0YWcpIHtcbiAgICAgICAgcmV0dXJuIGdldERhdGFiYXNlRW5naW5lKERhdGFiYXNlT3B0aW9ucy5wYXJzZSh7XG4gICAgICAgICAgICAuLi50aGlzLmdldERlZmF1bHRPcHRpb25zKG5hbWUpLFxuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIGN3ZDogdGhpcy5vcHRpb25zLmN3ZFxuICAgICAgICB9KSwgdGFnKTtcbiAgICB9XG4gICAgZ2V0RG9ja2VyQmFzZVRhZygpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNCdWlkUmVxdWlyZWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGBkY2R4LyR7dGhpcy5uYW1lfToke3RoaXMub3B0aW9ucy50YWd9YDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLm5hbWUgPT09ICdqaXJhJykge1xuICAgICAgICAgICAgcmV0dXJuIGBhdGxhc3NpYW4vamlyYS1zb2Z0d2FyZToke3RoaXMub3B0aW9ucy50YWd9YDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBgYXRsYXNzaWFuLyR7dGhpcy5uYW1lfToke3RoaXMub3B0aW9ucy50YWd9YDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJpdmF0ZSBNZXRob2RzXG4gICAgZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNlcnZpY2VzOiB7XG4gICAgICAgICAgICAgICAgW3RoaXMubmFtZV06IHRoaXMuZ2V0U2VydmljZSgpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV0d29ya3M6IHtcbiAgICAgICAgICAgICAgICAnc2hhcmVkJzogbmV0d29ya1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cbiAgICBhc3luYyB1cCgpIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5nZXREb2NrZXJDb21wb3NlQ29uZmlnKCk7XG4gICAgICAgIGNvbnN0IGNvbmZpZ0FzU3RyaW5nID0gZHVtcChjb25maWcpO1xuICAgICAgICBhd2FpdCB1cEFsbCh7XG4gICAgICAgICAgICBjd2Q6IHRoaXMub3B0aW9ucy5jd2QgfHwgY3dkKCksXG4gICAgICAgICAgICBjb25maWdBc1N0cmluZyxcbiAgICAgICAgICAgIGxvZzogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGlzQXZhaWxhYmxlID0gYXdhaXQgdGhpcy53YWl0VW50aWxSZWFkeSgpO1xuICAgICAgICBpZiAoIWlzQXZhaWxhYmxlKSB7XG4gICAgICAgICAgICBjb25zdCBzZXJ2aWNlID0gYXdhaXQgdGhpcy5nZXRTZXJ2aWNlU3RhdGUoKTtcbiAgICAgICAgICAgIGNvbnN0IGlzUnVubmluZyA9IHNlcnZpY2UgJiYgc2VydmljZS5zdGF0ZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ3VwJyk7XG4gICAgICAgICAgICBpZiAoIWlzUnVubmluZykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBGYWlsZWQgdG8gc3RhcnQgJHt0aGlzLm5hbWV9IOKblGApO1xuICAgICAgICAgICAgICAgIGF3YWl0IGxvZ3MoT2JqZWN0LmtleXMoY29uZmlnLnNlcnZpY2VzKSwge1xuICAgICAgICAgICAgICAgICAgICBjd2Q6IHRoaXMub3B0aW9ucy5jd2QgfHwgY3dkKCksXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ0FzU3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICBsb2c6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBDb3VsZCBub3QgY29uZmlybSBzdGF0ZSBvZiAke3RoaXMubmFtZX0sIGJ1dCB0aGUgY29udGFpbmVyIGlzIHJ1bm5pbmcuIFBsZWFzZSBjb25zdWx0IHRoZSBhcHBsaWNhdGlvbiBsb2dzIPCfkYdgKTtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnRhaWxBcHBsaWNhdGlvbkxvZ3MoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMudGFpbEFwcGxpY2F0aW9uTG9ncygpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFdlIGFyZSBleGl0aW5nIHdpdGggYW4gZXJyb3IgY29kZVxuICAgICAgICAvLyBUaGlzIGlzIHRvIHRyaWdnZXIgYSBncmFjZWZ1bCBzaHV0IGRvd24gb2YgdGhlIGFwcGxpY2F0aW9uXG4gICAgICAgIGdyYWNlZnVsRXhpdCgxKTtcbiAgICB9XG4gICAgYXN5bmMgZG93bigpIHtcbiAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpKTtcbiAgICAgICAgYXdhaXQgZG93bkFsbCh7XG4gICAgICAgICAgICBjd2Q6IHRoaXMub3B0aW9ucy5jd2QgfHwgY3dkKCksXG4gICAgICAgICAgICBjb25maWdBc1N0cmluZyxcbiAgICAgICAgICAgIGNvbW1hbmRPcHRpb25zOiBbJy12JywgJy0tcmVtb3ZlLW9ycGhhbnMnLCAnLS1ybWknLCAnbG9jYWwnXSxcbiAgICAgICAgICAgIGxvZzogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgZ2V0U2VydmljZVN0YXRlKCkge1xuICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAodGhpcy5nZXREb2NrZXJDb21wb3NlQ29uZmlnKCkpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwcyh7XG4gICAgICAgICAgICBjd2Q6IHRoaXMub3B0aW9ucy5jd2QgfHwgY3dkKCksXG4gICAgICAgICAgICBjb25maWdBc1N0cmluZyxcbiAgICAgICAgICAgIGNvbW1hbmRPcHRpb25zOiBbJy0tYWxsJ10sXG4gICAgICAgICAgICBsb2c6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0LmRhdGEuc2VydmljZXMuZmluZChpdGVtID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gaXRlbS5uYW1lLnNwbGl0KCctJyk7XG4gICAgICAgICAgICBjb25zdCBzZXJ2aWNlID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMl07XG4gICAgICAgICAgICByZXR1cm4gc2VydmljZSA9PT0gdGhpcy5uYW1lO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgd2FpdFVudGlsUmVhZHkoY291bnQgPSAwKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBXYWl0aW5nIGZvciAke3RoaXMubmFtZX0gdG8gYmVjb21lIGF2YWlsYWJsZS4uLiAke2NvdW50fXNgKTtcbiAgICAgICAgY29uc3Qgc2VydmljZSA9IGF3YWl0IHRoaXMuZ2V0U2VydmljZVN0YXRlKCk7XG4gICAgICAgIGlmIChzZXJ2aWNlKSB7XG4gICAgICAgICAgICBjb25zdCBpc1J1bm5pbmcgPSBzZXJ2aWNlICYmIHNlcnZpY2Uuc3RhdGUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCd1cCcpO1xuICAgICAgICAgICAgY29uc3QgaXNSZWFkeSA9IGlzUnVubmluZyAmJiBhd2FpdCB0aGlzLmlzQXBwbGljYXRpb25SZWFkeSgpO1xuICAgICAgICAgICAgaWYgKGlzUmVhZHkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNvdW50ID49IDEyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAxMDAwKSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy53YWl0VW50aWxSZWFkeShjb3VudCArIDEpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNvdW50IDwgMTApIHtcbiAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAxMDAwKSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy53YWl0VW50aWxSZWFkeShjb3VudCArIDEpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlzQnVpZFJlcXVpcmVkKCkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnRhZy50b0xvd2VyQ2FzZSgpID09PSAnbGF0ZXN0Jykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhcmNoID09PSAnYXJtJyB8fCBhcmNoID09PSAnYXJtNjQnKSB7XG4gICAgICAgICAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5vcHRpb25zLnRhZy5pbmNsdWRlcygnLScpXG4gICAgICAgICAgICAgICAgPyB0aGlzLm9wdGlvbnMudGFnLnNsaWNlKDAsIHRoaXMub3B0aW9ucy50YWcuaW5kZXhPZignLScpKVxuICAgICAgICAgICAgICAgIDogdGhpcy5vcHRpb25zLnRhZztcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VtVmVyVmVyc2lvbiA9IHNlbXZlci5jb2VyY2UodmVyc2lvbik7XG4gICAgICAgICAgICAgICAgaWYgKHNlbVZlclZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubmFtZSA9PT0gJ2ppcmEnIHx8IHRoaXMubmFtZSA9PT0gJ2JhbWJvbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZW12ZXIubHQoc2VtVmVyVmVyc2lvbiwgJzkuMC4wJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5uYW1lID09PSAnY29uZmx1ZW5jZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZW12ZXIubHQoc2VtVmVyVmVyc2lvbiwgJzguMC4wJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5uYW1lID09PSAnYml0YnVja2V0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbXZlci5sdChzZW1WZXJWZXJzaW9uLCAnOC4yLjAnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgYXN5bmMgYnVpbGQodmVyc2lvbikge1xuICAgICAgICBjb25zdCByZXBvc2l0b3J5VXJsID0gdGhpcy5nZXREb2NrZXJSZXBvc2l0b3J5VXJsKCk7XG4gICAgICAgIGNvbnN0IGNoZWNrb3V0UGF0aCA9IGpvaW4oYmFzZWRpciwgdGhpcy5uYW1lLCAnc291cmNlJyk7XG4gICAgICAgIGlmICghZXhpc3RzU3luYyhjaGVja291dFBhdGgpKSB7XG4gICAgICAgICAgICBta2RpclN5bmMoam9pbihiYXNlZGlyLCB0aGlzLm5hbWUpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgIGF3YWl0IHNpbXBsZUdpdCgpLmNsb25lKHJlcG9zaXRvcnlVcmwsIGNoZWNrb3V0UGF0aCwgeyAnLS1yZWN1cnNlLXN1Ym1vZHVsZSc6IG51bGwgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhd2FpdCBzaW1wbGVHaXQoeyBiYXNlRGlyOiBjaGVja291dFBhdGggfSkucHVsbCh7ICctLXJlY3Vyc2Utc3VibW9kdWxlJzogbnVsbCB9KTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkb2NrZXIgPSBzcGF3bignZG9ja2VyJywgWydidWlsZCcsICctdCcsIGBkY2R4LyR7dGhpcy5uYW1lfToke3ZlcnNpb259YCwgJy0tYnVpbGQtYXJnJywgYCR7dGhpcy5uYW1lLnRvVXBwZXJDYXNlKCl9X1ZFUlNJT049JHt2ZXJzaW9ufWAsICcuJ10sIHsgY3dkOiBjaGVja291dFBhdGgsIHN0ZGlvOiAnaW5oZXJpdCcgfSk7XG4gICAgICAgICAgICBkb2NrZXIub24oJ2V4aXQnLCAoY29kZSkgPT4gKGNvZGUgPT09IDApID8gcmVzb2x2ZSgpIDogcmVqZWN0KG5ldyBFcnJvcihgRG9ja2VyIGV4aXRlZCB3aXRoIGNvZGUgJHtjb2RlfWApKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXREb2NrZXJSZXBvc2l0b3J5VXJsKCkge1xuICAgICAgICBjb25zdCBzdWZmaXggPSB0aGlzLm5hbWUgPT09ICdqaXJhJ1xuICAgICAgICAgICAgPyAnYXRsYXNzaWFuLWppcmEnXG4gICAgICAgICAgICA6IHRoaXMubmFtZSA9PT0gJ2JhbWJvbydcbiAgICAgICAgICAgICAgICA/IGAke3RoaXMubmFtZX0tc2VydmVyYFxuICAgICAgICAgICAgICAgIDogYGF0bGFzc2lhbi0ke3RoaXMubmFtZX0tc2VydmVyYDtcbiAgICAgICAgcmV0dXJuIGBodHRwczovL2JpdGJ1Y2tldC5vcmcvYXRsYXNzaWFuLWRvY2tlci9kb2NrZXItJHtzdWZmaXh9LmdpdGA7XG4gICAgfVxuICAgIGFzeW5jIHRhaWxBcHBsaWNhdGlvbkxvZ3MoKSB7XG4gICAgICAgIGNvbnN0IHNlcnZpY2UgPSBhd2FpdCB0aGlzLmdldFNlcnZpY2VTdGF0ZSgpO1xuICAgICAgICBjb25zdCBpc1J1bm5pbmcgPSBzZXJ2aWNlICYmIHNlcnZpY2Uuc3RhdGUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCd1cCcpO1xuICAgICAgICBpZiAoaXNSdW5uaW5nKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNob3dBcHBsaWNhdGlvbkxvZ3Moc2VydmljZS5uYW1lKS5jYXRjaCgoKSA9PiBudWxsKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBzaG93QXBwbGljYXRpb25Mb2dzKHNlcnZpY2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRvY2tlciA9IHNwYXduKCdkb2NrZXInLCBbJ2V4ZWMnLCAnLWknLCBzZXJ2aWNlLCBgdGFpbGAsIGAtRmAsIGAtbmAsIGA1MDAwYCwgdGhpcy5sb2dGaWxlUGF0aF0sIHsgY3dkOiB0aGlzLm9wdGlvbnMuY3dkIHx8IGN3ZCgpLCBzdGRpbzogJ2luaGVyaXQnIH0pO1xuICAgICAgICAgICAgZG9ja2VyLm9uKCdleGl0JywgKGNvZGUpID0+IChjb2RlID09PSAwKSA/IHJlc29sdmUoKSA6IHJlamVjdChuZXcgRXJyb3IoYERvY2tlciBleGl0ZWQgd2l0aCBjb2RlICR7Y29kZX1gKSkpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0RGVmYXVsdE9wdGlvbnMobmFtZSkge1xuICAgICAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgICAgICAgIGNhc2UgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsOlxuICAgICAgICAgICAgICAgIHJldHVybiBnZXRab2REZWZhdWx0cyhQb3N0Z3JlU1FMT3B0aW9ucyk7XG4gICAgICAgICAgICBjYXNlIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldFpvZERlZmF1bHRzKE15U1FMT3B0aW9ucyk7XG4gICAgICAgICAgICBjYXNlIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXNzcWw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldFpvZERlZmF1bHRzKE1TU1FMT3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgdGltZWJvbWIgfSBmcm9tICcuLi9oZWxwZXJzL2xpY2VuY2VzJztcbmltcG9ydCB7IHRvQWJzb2x1dGVQYXRoIH0gZnJvbSAnLi4vaGVscGVycy90b0Fic29sdXRlUGF0aCc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmV4cG9ydCBjbGFzcyBCYW1ib28gZXh0ZW5kcyBCYXNlIHtcbiAgICBuYW1lID0gU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iYW1ib287XG4gICAgbG9nRmlsZVBhdGggPSAnL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iYW1ib28vbG9ncy9hdGxhc3NpYW4tYmFtYm9vLmxvZyc7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgZ2V0U2VydmljZSgpIHtcbiAgICAgICAgY29uc3QgZW52aXJvbm1lbnQgPSB0aGlzLmdldEVudmlyb25tZW50VmFyaWFibGVzKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidWlsZDoge1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRvQWJzb2x1dGVQYXRoKCcuLi8uLi9hc3NldHMnKSxcbiAgICAgICAgICAgICAgICBkb2NrZXJmaWxlX2lubGluZTogYFxuRlJPTSAke3RoaXMuZ2V0RG9ja2VyQmFzZVRhZygpfVxuQ09QWSAuL215c3FsLWNvbm5lY3Rvci1qLTguMy4wLmphciAvb3B0L2F0bGFzc2lhbi9iYW1ib28vbGliL215c3FsLWNvbm5lY3Rvci1qLTguMy4wLmphclxuQ09QWSAuL3F1aWNrcmVsb2FkLTUuMC40LmphciAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JhbWJvby9zaGFyZWQvcGx1Z2lucy9xdWlja3JlbG9hZC01LjAuNC5qYXJcblJVTiBlY2hvIFwiL29wdC9xdWlja3JlbG9hZFwiID4gL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iYW1ib28vcXVpY2tyZWxvYWQucHJvcGVydGllczsgXFxcbiAgICBta2RpciAtcCAvb3B0L3F1aWNrcmVsb2FkOyBcXFxuICAgIGNob3duIC1SIGJhbWJvbzpiYW1ib28gL29wdC9xdWlja3JlbG9hZDtcblxuUlVOIGNob3duIC1SIGJhbWJvbzpiYW1ib28gL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iYW1ib29gXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcG9ydHM6IFtcbiAgICAgICAgICAgICAgICBgJHt0aGlzLm9wdGlvbnMucG9ydCB8fCA4MH06ODA4NWAsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLmRlYnVnID8gWyc1MDA1OjUwMDUnXSA6IFtdLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGVudmlyb25tZW50LFxuICAgICAgICAgICAgbmV0d29ya3M6IFsnc2hhcmVkJ11cbiAgICAgICAgfTtcbiAgICB9XG4gICAgZ2V0SlZNQXJncygpIHtcbiAgICAgICAgY29uc3QgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUyA9IHN1cGVyLmdldEpWTUFyZ3MoKTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kZWJ1Zykge1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctWGRlYnVnJyk7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1hZ2VudGxpYjpqZHdwPXRyYW5zcG9ydD1kdF9zb2NrZXQsc2VydmVyPXksc3VzcGVuZD1uLGFkZHJlc3M9NTAwNScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTO1xuICAgIH1cbiAgICBhc3luYyBpc0FwcGxpY2F0aW9uUmVhZHkoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLmdldChgJHt0aGlzLmJhc2VVcmx9L3NldHVwL3NldHVwR2VuZXJhbENvbmZpZ3VyYXRpb24uYWN0aW9uYCwgeyB2YWxpZGF0ZVN0YXR1czogKCkgPT4gdHJ1ZSB9KTtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZT8uc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgVGhlIGFwcGxpY2F0aW9uICR7dGhpcy5uYW1lfSBpcyByZWFkeSBvbiAke3RoaXMuYmFzZVVybH0g8J+OiWApO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJpdmF0ZSBNZXRob2RzXG4gICAgZ2V0RW52aXJvbm1lbnRWYXJpYWJsZXMoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMuY29udGV4dFBhdGggPyB7ICdBVExfVE9NQ0FUX0NPTlRFWFRQQVRIJzogdGhpcy5vcHRpb25zLmNvbnRleHRQYXRoIH0gOiAnJyxcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy54bXMgPyB7ICdKVk1fTUlOSU1VTV9NRU1PUlknOiB0aGlzLm9wdGlvbnMueG1zIH0gOiAnJyxcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy54bXggPyB7ICdKVk1fTUFYSU1VTV9NRU1PUlknOiB0aGlzLm9wdGlvbnMueG14IH0gOiAnJyxcbiAgICAgICAgICAgICdKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTJzogdGhpcy5nZXRKVk1BcmdzKCkuam9pbignICcpLFxuICAgICAgICAgICAgJ0FUTF9CQU1CT09fRU5BQkxFX1VOQVRURU5ERURfU0VUVVAnOiAndHJ1ZScsXG4gICAgICAgICAgICAnQVRMX0xJQ0VOU0UnOiB0aW1lYm9tYi5iYW1ib28sXG4gICAgICAgICAgICAnQVRMX0pEQkNfVVJMJzogdGhpcy5kYXRhYmFzZS51cmwsXG4gICAgICAgICAgICAnQVRMX0pEQkNfVVNFUic6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy51c2VybmFtZSxcbiAgICAgICAgICAgICdBVExfSkRCQ19QQVNTV09SRCc6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy5wYXNzd29yZCxcbiAgICAgICAgICAgICdBVExfREJfVFlQRSc6IGAke3RoaXMuZGF0YWJhc2Uub3B0aW9ucy5uYW1lfWAsXG4gICAgICAgIH07XG4gICAgfVxuICAgIDtcbn1cbiIsImltcG9ydCB7IHRpbWVib21iIH0gZnJvbSAnLi4vaGVscGVycy9saWNlbmNlcyc7XG5pbXBvcnQgeyB0b0Fic29sdXRlUGF0aCB9IGZyb20gJy4uL2hlbHBlcnMvdG9BYnNvbHV0ZVBhdGgnO1xuaW1wb3J0IHsgU3VwcG9ydGVkQXBwbGljYXRpb25zIH0gZnJvbSAnLi4vdHlwZXMvQXBwbGljYXRpb24nO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgY2xhc3MgQml0YnVja2V0IGV4dGVuZHMgQmFzZSB7XG4gICAgbmFtZSA9IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYml0YnVja2V0O1xuICAgIGxvZ0ZpbGVQYXRoID0gJy92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYml0YnVja2V0L2xvZy9hdGxhc3NpYW4tYml0YnVja2V0LmxvZyc7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgZ2V0U2VydmljZSgpIHtcbiAgICAgICAgY29uc3QgZW52aXJvbm1lbnQgPSB0aGlzLmdldEVudmlyb25tZW50VmFyaWFibGVzKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidWlsZDoge1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRvQWJzb2x1dGVQYXRoKCcuLi8uLi9hc3NldHMnKSxcbiAgICAgICAgICAgICAgICBkb2NrZXJmaWxlX2lubGluZTogYFxuRlJPTSAke3RoaXMuZ2V0RG9ja2VyQmFzZVRhZygpfVxuQ09QWSAuL3F1aWNrcmVsb2FkLTUuMC40LmphciAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JpdGJ1Y2tldC9wbHVnaW5zL2luc3RhbGxlZC1wbHVnaW5zL3F1aWNrcmVsb2FkLTUuMC40LmphclxuQ09QWSAuL215c3FsLWNvbm5lY3Rvci1qLTguMy4wLmphciAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JpdGJ1Y2tldC9saWIvbXlzcWwtY29ubmVjdG9yLWotOC4zLjAuamFyXG5SVU4gZWNobyBcIi9vcHQvcXVpY2tyZWxvYWRcIiA+IC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYml0YnVja2V0L3F1aWNrcmVsb2FkLnByb3BlcnRpZXM7IFxcXG4gICAgbWtkaXIgLXAgL29wdC9xdWlja3JlbG9hZDsgXFxcbiAgICBjaG93biAtUiBiaXRidWNrZXQ6Yml0YnVja2V0IC9vcHQvcXVpY2tyZWxvYWQ7XG5cblJVTiBta2RpciAtcCAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JpdGJ1Y2tldC9zaGFyZWQ7IFxcXG4gICAgdG91Y2ggL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iaXRidWNrZXQvc2hhcmVkL2JpdGJ1Y2tldC5wcm9wZXJ0aWVzOyBcXFxuICAgIGVjaG8gXCJzZXR1cC5saWNlbnNlPSR7dGltZWJvbWIuYml0YnVja2V0fVwiID4+IC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYml0YnVja2V0L3NoYXJlZC9iaXRidWNrZXQucHJvcGVydGllcztcblxuUlVOIGNob3duIC1SIGJpdGJ1Y2tldDpiaXRidWNrZXQgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iaXRidWNrZXRgXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcG9ydHM6IFtcbiAgICAgICAgICAgICAgICBgJHt0aGlzLm9wdGlvbnMucG9ydCB8fCA4MH06Nzk5MGAsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLmRlYnVnID8gWyc1MDA1OjUwMDUnXSA6IFtdLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGVudmlyb25tZW50LFxuICAgICAgICAgICAgbmV0d29ya3M6IFsnc2hhcmVkJ11cbiAgICAgICAgfTtcbiAgICB9XG4gICAgZ2V0SlZNQXJncygpIHtcbiAgICAgICAgY29uc3QgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUyA9IHN1cGVyLmdldEpWTUFyZ3MoKTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kZWJ1Zykge1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctWGRlYnVnJyk7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1hZ2VudGxpYjpqZHdwPXRyYW5zcG9ydD1kdF9zb2NrZXQsc2VydmVyPXksc3VzcGVuZD1uLGFkZHJlc3M9NTAwNScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJpdmF0ZSBNZXRob2RzXG4gICAgZ2V0RW52aXJvbm1lbnRWYXJpYWJsZXMoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMueG1zID8geyAnSlZNX01JTklNVU1fTUVNT1JZJzogdGhpcy5vcHRpb25zLnhtcyB9IDogJycsXG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMueG14ID8geyAnSlZNX01BWElNVU1fTUVNT1JZJzogdGhpcy5vcHRpb25zLnhteCB9IDogJycsXG4gICAgICAgICAgICAnSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUyc6IHRoaXMuZ2V0SlZNQXJncygpLmpvaW4oJyAnKSxcbiAgICAgICAgICAgICdKREJDX1VSTCc6IHRoaXMuZGF0YWJhc2UudXJsLFxuICAgICAgICAgICAgJ0pEQkNfVVNFUic6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy51c2VybmFtZSxcbiAgICAgICAgICAgICdKREJDX1BBU1NXT1JEJzogdGhpcy5kYXRhYmFzZS5vcHRpb25zLnBhc3N3b3JkLFxuICAgICAgICAgICAgJ0pEQkNfRFJJVkVSJzogYCR7dGhpcy5kYXRhYmFzZS5vcHRpb25zLmRyaXZlcn1gLFxuICAgICAgICB9O1xuICAgIH1cbiAgICA7XG59XG4iLCJpbXBvcnQgeyB0aW1lYm9tYiB9IGZyb20gJy4uL2hlbHBlcnMvbGljZW5jZXMnO1xuaW1wb3J0IHsgdG9BYnNvbHV0ZVBhdGggfSBmcm9tICcuLi9oZWxwZXJzL3RvQWJzb2x1dGVQYXRoJztcbmltcG9ydCB7IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0FwcGxpY2F0aW9uJztcbmltcG9ydCB7IEJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0IGNsYXNzIENvbmZsdWVuY2UgZXh0ZW5kcyBCYXNlIHtcbiAgICBuYW1lID0gU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5jb25mbHVlbmNlO1xuICAgIGxvZ0ZpbGVQYXRoID0gJy92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvY29uZmx1ZW5jZS9sb2dzL2F0bGFzc2lhbi1jb25mbHVlbmNlLmxvZyc7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgZ2V0U2VydmljZSgpIHtcbiAgICAgICAgY29uc3QgZW52aXJvbm1lbnQgPSB0aGlzLmdldEVudmlyb25tZW50VmFyaWFibGVzKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidWlsZDoge1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRvQWJzb2x1dGVQYXRoKCcuLi8uLi9hc3NldHMnKSxcbiAgICAgICAgICAgICAgICBkb2NrZXJmaWxlX2lubGluZTogYFxuRlJPTSAke3RoaXMuZ2V0RG9ja2VyQmFzZVRhZygpfVxuQ09QWSAuL215c3FsLWNvbm5lY3Rvci1qLTguMy4wLmphciAvb3B0L2F0bGFzc2lhbi9jb25mbHVlbmNlL2NvbmZsdWVuY2UvV0VCLUlORi9saWIvbXlzcWwtY29ubmVjdG9yLWotOC4zLjAuamFyXG5DT1BZIC4vcXVpY2tyZWxvYWQtNS4wLjQuamFyIC9vcHQvYXRsYXNzaWFuL2NvbmZsdWVuY2UvY29uZmx1ZW5jZS9XRUItSU5GL2F0bGFzc2lhbi1idW5kbGVkLXBsdWdpbnMvcXVpY2tyZWxvYWQtNS4wLjQuamFyXG5SVU4gZWNobyBcIi9vcHQvcXVpY2tyZWxvYWRcIiA+IC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvY29uZmx1ZW5jZS9xdWlja3JlbG9hZC5wcm9wZXJ0aWVzOyBcXFxuICAgIG1rZGlyIC1wIC9vcHQvcXVpY2tyZWxvYWQ7IFxcXG4gICAgY2hvd24gLVIgY29uZmx1ZW5jZTpjb25mbHVlbmNlIC9vcHQvcXVpY2tyZWxvYWQ7XG5cblJVTiBjaG93biAtUiBjb25mbHVlbmNlOmNvbmZsdWVuY2UgL29wdC9hdGxhc3NpYW4vY29uZmx1ZW5jZWBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwb3J0czogW1xuICAgICAgICAgICAgICAgIGAke3RoaXMub3B0aW9ucy5wb3J0IHx8IDgwfTo4MDkwYCxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMuZGVidWcgPyBbJzUwMDU6NTAwNSddIDogW10sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgZW52aXJvbm1lbnQsXG4gICAgICAgICAgICBuZXR3b3JrczogWydzaGFyZWQnXVxuICAgICAgICB9O1xuICAgIH1cbiAgICBnZXRKVk1BcmdzKCkge1xuICAgICAgICBjb25zdCBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTID0gc3VwZXIuZ2V0SlZNQXJncygpO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmRlYnVnKSB7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1YZGVidWcnKTtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLVhydW5qZHdwOnRyYW5zcG9ydD1kdF9zb2NrZXQsYWRkcmVzcz0qOjUwMDUsc2VydmVyPXksc3VzcGVuZD1uJyk7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1EY29tLnN1bi5tYW5hZ2VtZW50LmpteHJlbW90ZS5wb3J0PTk5OTknKTtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLURjb20uc3VuLm1hbmFnZW1lbnQuam14cmVtb3RlLnJtaS5wb3J0PTk5OTgnKTtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLURjb20uc3VuLm1hbmFnZW1lbnQuam14cmVtb3RlLmF1dGhlbnRpY2F0ZT1mYWxzZScpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctRGNvbS5zdW4ubWFuYWdlbWVudC5qbXhyZW1vdGUuc3NsPWZhbHNlJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1M7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcml2YXRlIE1ldGhvZHNcbiAgICBnZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5jb250ZXh0UGF0aCA/IHsgJ0FUTF9UT01DQVRfQ09OVEVYVFBBVEgnOiB0aGlzLm9wdGlvbnMuY29udGV4dFBhdGggfSA6ICcnLFxuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhtcyA/IHsgJ0pWTV9NSU5JTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXMgfSA6ICcnLFxuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhteCA/IHsgJ0pWTV9NQVhJTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXggfSA6ICcnLFxuICAgICAgICAgICAgJ0pWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MnOiB0aGlzLmdldEpWTUFyZ3MoKS5qb2luKCcgJyksXG4gICAgICAgICAgICAnQVRMX0xJQ0VOU0VfS0VZJzogdGltZWJvbWIuY29uZmx1ZW5jZSxcbiAgICAgICAgICAgICdBVExfSkRCQ19VUkwnOiB0aGlzLmRhdGFiYXNlLnVybCxcbiAgICAgICAgICAgICdBVExfSkRCQ19VU0VSJzogdGhpcy5kYXRhYmFzZS5vcHRpb25zLnVzZXJuYW1lLFxuICAgICAgICAgICAgJ0FUTF9KREJDX1BBU1NXT1JEJzogdGhpcy5kYXRhYmFzZS5vcHRpb25zLnBhc3N3b3JkLFxuICAgICAgICAgICAgJ0FUTF9EQl9UWVBFJzogYCR7dGhpcy5kYXRhYmFzZS5vcHRpb25zLm5hbWV9YCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgO1xufVxuIiwiaW1wb3J0IHsgdGltZWJvbWIgfSBmcm9tICcuLi9oZWxwZXJzL2xpY2VuY2VzJztcbmltcG9ydCB7IHRvQWJzb2x1dGVQYXRoIH0gZnJvbSAnLi4vaGVscGVycy90b0Fic29sdXRlUGF0aCc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmV4cG9ydCBjbGFzcyBKaXJhIGV4dGVuZHMgQmFzZSB7XG4gICAgbmFtZSA9IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuamlyYTtcbiAgICBsb2dGaWxlUGF0aCA9ICcvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2ppcmEvbG9nL2F0bGFzc2lhbi1qaXJhLmxvZyc7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgZ2V0U2VydmljZSgpIHtcbiAgICAgICAgY29uc3QgZW52aXJvbm1lbnQgPSB0aGlzLmdldEVudmlyb25tZW50VmFyaWFibGVzKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidWlsZDoge1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRvQWJzb2x1dGVQYXRoKCcuLi8uLi9hc3NldHMnKSxcbiAgICAgICAgICAgICAgICBkb2NrZXJmaWxlX2lubGluZTogYFxuRlJPTSAke3RoaXMuZ2V0RG9ja2VyQmFzZVRhZygpfVxuQ09QWSAuL2ppcmEtZGF0YS1nZW5lcmF0b3ItNS4wLjAuamFyIC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvamlyYS9wbHVnaW5zL2luc3RhbGxlZC1wbHVnaW5zL2ppcmEtZGF0YS1nZW5lcmF0b3ItNS4wLjAuamFyXG5DT1BZIC4vbXlzcWwtY29ubmVjdG9yLWotOC4zLjAuamFyIC9vcHQvYXRsYXNzaWFuL2ppcmEvbGliL215c3FsLWNvbm5lY3Rvci1qLTguMy4wLmphclxuQ09QWSAuL3F1aWNrcmVsb2FkLTUuMC40LmphciAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2ppcmEvcGx1Z2lucy9pbnN0YWxsZWQtcGx1Z2lucy9xdWlja3JlbG9hZC01LjAuNC5qYXJcblJVTiBlY2hvIFwiL29wdC9xdWlja3JlbG9hZFwiID4gL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9qaXJhL3F1aWNrcmVsb2FkLnByb3BlcnRpZXM7IFxcXG4gICAgbWtkaXIgLXAgL29wdC9xdWlja3JlbG9hZDsgXFxcbiAgICBjaG93biAtUiBqaXJhOmppcmEgL29wdC9xdWlja3JlbG9hZDtcblxuUlVOIGNob3duIC1SIGppcmE6amlyYSAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2ppcmFgXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcG9ydHM6IFtcbiAgICAgICAgICAgICAgICBgJHt0aGlzLm9wdGlvbnMucG9ydH06ODA4MGAsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLmRlYnVnID8gWyc1MDA1OjUwMDUnXSA6IFtdLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGVudmlyb25tZW50LFxuICAgICAgICAgICAgbmV0d29ya3M6IFsnc2hhcmVkJ11cbiAgICAgICAgfTtcbiAgICB9XG4gICAgZ2V0SlZNQXJncygpIHtcbiAgICAgICAgY29uc3QgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUyA9IHN1cGVyLmdldEpWTUFyZ3MoKTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kZWJ1Zykge1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctWGRlYnVnJyk7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1hZ2VudGxpYjpqZHdwPXRyYW5zcG9ydD1kdF9zb2NrZXQsc2VydmVyPXksc3VzcGVuZD1uLGFkZHJlc3M9Kjo1MDA1Jyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1M7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcml2YXRlIE1ldGhvZHNcbiAgICBnZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpIHtcbiAgICAgICAgLy8gRm9yIHNvbWUgcmVhc29uLCBKaXJhIHVzZXMgYSBkaWZmZXJlbnQgdHlwZSBmb3IgcG9zdGdyZXNcbiAgICAgICAgY29uc3QgZGJUeXBlID0gdGhpcy5kYXRhYmFzZS5vcHRpb25zLm5hbWUgPT09ICdwb3N0Z3Jlc3FsJyA/ICdwb3N0Z3JlczcyJyA6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy5uYW1lO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLmNvbnRleHRQYXRoID8geyAnQVRMX1RPTUNBVF9DT05URVhUUEFUSCc6IHRoaXMub3B0aW9ucy5jb250ZXh0UGF0aCB9IDogJycsXG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMueG1zID8geyAnSlZNX01JTklNVU1fTUVNT1JZJzogdGhpcy5vcHRpb25zLnhtcyB9IDogJycsXG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMueG14ID8geyAnSlZNX01BWElNVU1fTUVNT1JZJzogdGhpcy5vcHRpb25zLnhteCB9IDogJycsXG4gICAgICAgICAgICAnSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUyc6IHRoaXMuZ2V0SlZNQXJncygpLmpvaW4oJyAnKSxcbiAgICAgICAgICAgICdBVExfTElDRU5TRV9LRVknOiB0aW1lYm9tYi5jb25mbHVlbmNlLFxuICAgICAgICAgICAgJ0FUTF9KREJDX1VSTCc6IHRoaXMuZGF0YWJhc2UudXJsLFxuICAgICAgICAgICAgJ0FUTF9KREJDX1VTRVInOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMudXNlcm5hbWUsXG4gICAgICAgICAgICAnQVRMX0pEQkNfUEFTU1dPUkQnOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMucGFzc3dvcmQsXG4gICAgICAgICAgICAnQVRMX0RCX0RSSVZFUic6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy5kcml2ZXIsXG4gICAgICAgICAgICAnQVRMX0RCX1RZUEUnOiBkYlR5cGUsXG4gICAgICAgICAgICAnSklSQV9TRVRVUF9MSUNFTlNFJzogdGltZWJvbWIuamlyYVxuICAgICAgICB9O1xuICAgIH1cbiAgICA7XG59XG4iLCJpbXBvcnQgeyBCYW1ib28gfSBmcm9tICcuLi9hcHBsaWNhdGlvbnMvYmFtYm9vJztcbmltcG9ydCB7IEJpdGJ1Y2tldCB9IGZyb20gJy4uL2FwcGxpY2F0aW9ucy9iaXRidWNrZXQnO1xuaW1wb3J0IHsgQ29uZmx1ZW5jZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9ucy9jb25mbHVlbmNlJztcbmltcG9ydCB7IEppcmEgfSBmcm9tICcuLi9hcHBsaWNhdGlvbnMvamlyYSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbk9wdGlvbnMsIFN1cHBvcnRlZEFwcGxpY2F0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0FwcGxpY2F0aW9uJztcbmV4cG9ydCBjb25zdCBnZXRBcHBsaWNhdGlvbiA9IChvcHRpb25zKSA9PiB7XG4gICAgc3dpdGNoIChvcHRpb25zLm5hbWUpIHtcbiAgICAgICAgY2FzZSBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmppcmE6IHJldHVybiBuZXcgSmlyYShBcHBsaWNhdGlvbk9wdGlvbnMucGFyc2Uob3B0aW9ucykpO1xuICAgICAgICBjYXNlIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuY29uZmx1ZW5jZTogcmV0dXJuIG5ldyBDb25mbHVlbmNlKEFwcGxpY2F0aW9uT3B0aW9ucy5wYXJzZShvcHRpb25zKSk7XG4gICAgICAgIGNhc2UgU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iYW1ib286IHJldHVybiBuZXcgQmFtYm9vKEFwcGxpY2F0aW9uT3B0aW9ucy5wYXJzZShvcHRpb25zKSk7XG4gICAgICAgIGNhc2UgU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iaXRidWNrZXQ6IHJldHVybiBuZXcgQml0YnVja2V0KEFwcGxpY2F0aW9uT3B0aW9ucy5wYXJzZShvcHRpb25zKSk7XG4gICAgfVxufTtcbiIsImltcG9ydCB7IHJlYWRGaWxlU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IHRvQWJzb2x1dGVQYXRoIH0gZnJvbSAnLi90b0Fic29sdXRlUGF0aCc7XG5leHBvcnQgY29uc3QgZ2V0VmVyc2lvbnMgPSAoKSA9PiB7XG4gICAgY29uc3QgY29udGVudCA9IHJlYWRGaWxlU3luYyh0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzL3ZlcnNpb25zLmpzb24nKSwgJ3V0Zi04Jyk7XG4gICAgY29uc3QgdmVyc2lvbnMgPSBKU09OLnBhcnNlKGNvbnRlbnQpO1xuICAgIHJldHVybiB2ZXJzaW9ucztcbn07XG4iLCJleHBvcnQgY29uc3Qgc2hvd0hlbHBXaXRoRGVmYXVsdENvbW1hbmRPcHRpb25zID0ge1xuICAgIHZpc2libGVPcHRpb25zOiAoY21kKSA9PiB7XG4gICAgICAgIGxldCBvcHRpb25zID0gY21kLm9wdGlvbnM7XG4gICAgICAgIGlmICghY21kLnBhcmVudCAmJiBvcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdENvbW1hbmROYW1lID0gY21kLl9kZWZhdWx0Q29tbWFuZE5hbWU7XG4gICAgICAgICAgICBpZiAoZGVmYXVsdENvbW1hbmROYW1lKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdENvbW1hbmQgPSBjbWQuY29tbWFuZHMuZmluZChpdGVtID0+IGl0ZW0uX25hbWUgPT09IGRlZmF1bHRDb21tYW5kTmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKGRlZmF1bHRDb21tYW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBkZWZhdWx0Q29tbWFuZC5vcHRpb25zO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShvcHRpb25zKTtcbiAgICB9XG59O1xuIiwiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0IHsgQ29tbWFuZCBhcyBDb21tYW5kZXIsIEludmFsaWRPcHRpb25Bcmd1bWVudEVycm9yLCBPcHRpb24gfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgZ3JhY2VmdWxFeGl0IH0gZnJvbSAnZXhpdC1ob29rJztcbmltcG9ydCB7IEFjdGlvbkhhbmRsZXIgfSBmcm9tICcuLi9oZWxwZXJzL0FjdGlvbkhhbmRsZXInO1xuaW1wb3J0IHsgQU1QUyB9IGZyb20gJy4uL2hlbHBlcnMvYW1wcyc7XG5pbXBvcnQgeyBnZXRBcHBsaWNhdGlvbiB9IGZyb20gJy4uL2hlbHBlcnMvZ2V0QXBwbGljYXRpb24nO1xuaW1wb3J0IHsgZ2V0VmVyc2lvbnMgfSBmcm9tICcuLi9oZWxwZXJzL2dldFZlcnNpb25zJztcbmltcG9ydCB7IHNob3dIZWxwV2l0aERlZmF1bHRDb21tYW5kT3B0aW9ucyB9IGZyb20gJy4uL2hlbHBlcnMvc2hvd0hlbHBXaXRoRGVmYXVsdENvbW1hbmRPcHRpb25zJztcbmltcG9ydCB7IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0FwcGxpY2F0aW9uJztcbmltcG9ydCB7IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyB9IGZyb20gJy4uL3R5cGVzL0RhdGFiYXNlJztcbmNvbnN0IHByb2dyYW0gPSBuZXcgQ29tbWFuZGVyKCk7XG5jb25zdCB2ZXJzaW9ucyA9IGdldFZlcnNpb25zKCk7XG5jb25zdCBDb21tYW5kID0gKCkgPT4ge1xuICAgIGxldCBpbnN0YW5jZSA9IG51bGw7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgYWN0aW9uOiBhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgYW1wcyA9IG5ldyBBTVBTKHtcbiAgICAgICAgICAgICAgICBjd2Q6IG9wdGlvbnMuY3dkLFxuICAgICAgICAgICAgICAgIHByb2ZpbGVzOiBvcHRpb25zLmFjdGl2YXRlUHJvZmlsZXM/LnNwbGl0KCcsJykgfHwgW11cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubmFtZSAmJiBvcHRpb25zLnRhZyAmJiBvcHRpb25zLmFjdGl2YXRlUHJvZmlsZXMpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wdGlvbkFyZ3VtZW50RXJyb3IoJ0ludmFsaWQgYXJndW1lbnQgXCItLWFjdGl2YXRlLXByb2ZpbGVzXCInKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKG9wdGlvbnMubmFtZSAmJiBvcHRpb25zLnRhZyAmJiBvcHRpb25zLmN3ZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3B0aW9uQXJndW1lbnRFcnJvcignSW52YWxpZCBhcmd1bWVudCBcIi0tY3dkXCInKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghb3B0aW9ucy5uYW1lICYmICFhbXBzLmlzQXRsYXNzaWFuUGx1Z2luKCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBmaW5kIGFuIEF0bGFzc2lhbiBQbHVnaW4gcHJvamVjdCBpbiB0aGUgY3VycmVudCBkaXJlY3Rvcnkg8J+klCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3B0aW9ucy5uYW1lID0gb3B0aW9ucy5uYW1lIHx8IGFtcHMuZ2V0QXBwbGljYXRpb24oKTtcbiAgICAgICAgICAgIGlmICghb3B0aW9ucy5uYW1lKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgQXRsYXNzaWFuIFBsdWdpbiBwcm9qZWN0IGRvZXMgbm90IGNvbnRhaW4gYW4gQU1QUyBjb25maWd1cmF0aW9uLCB1bmFibGUgdG8gZGV0ZWN0IHByb2R1Y3Qg8J+YsCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFvcHRpb25zLnRhZykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZlcnNpb24gPSBhbXBzLmdldEFwcGxpY2F0aW9uVmVyc2lvbigpO1xuICAgICAgICAgICAgICAgIGlmICghdmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBkZXRlcm1pbmUgdmVyc2lvbiBmcm9tIEFNUFMgYW5kIG5vIHByb2R1Y3QgdmVyc2lvbiBwcm92aWRlZCAoLS10YWcpJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnRhZyA9IHZlcnNpb247XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF2ZXJzaW9uc1tvcHRpb25zLm5hbWVdLmluY2x1ZGVzKG9wdGlvbnMudGFnKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvZHVjdCB2ZXJzaW9uICcke29wdGlvbnMudGFnfScgaXMgaW52YWxpZC4gQWxsb3dlZCBjaG9pY2VzIGFyZSAke3ZlcnNpb25zW29wdGlvbnMubmFtZV0uam9pbignLCAnKX0uYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpbnN0YW5jZSA9IGdldEFwcGxpY2F0aW9uKG9wdGlvbnMpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coYFJlbW92aW5nICR7b3B0aW9ucy5uYW1lfSBhbmQgZGVsZXRpbmcgYWxsIGRhdGEuLi4g8J+SlGApO1xuICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlLnJlc2V0KCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFJlbW92ZWQgJHtvcHRpb25zLm5hbWV9IGFuZCBkZWxldGVkIGFsbCBkYXRhIPCfkqpgKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvckhhbmRsZXI6IGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBpZiAoaW5zdGFuY2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgUmVtb3ZpbmcgJHtvcHRpb25zLm5hbWV9IGFuZCBkZWxldGluZyBhbGwgZGF0YS4uLiDwn5KUYCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgaW5zdGFuY2UucmVzZXQoKS5jYXRjaCgoKSA9PiBudWxsKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgUmVtb3ZlZCAke29wdGlvbnMubmFtZX0gYW5kIGRlbGV0ZWQgYWxsIGRhdGEg8J+SqmApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbn07XG5wcm9ncmFtXG4gICAgLm5hbWUoJ2RjZHggcmVzZXQnKVxuICAgIC5kZXNjcmlwdGlvbihgUmVzZXQgdGhlIGhvc3QgYXBwbGljYXRpb24gYmFzZWQgb24gdGhlIEF0bGFzc2lhbiBNYXZlbiBQbHVnaW4gU3VpdGUgKEFNUFMpIGNvbmZpZ3VyYXRpb24uXG5JZiB5b3Ugd2lzaCB0byByZXNldCBhIHNwZWNpZmljIGhvc3QgYXBwbGljYXRpb24gcnVubmluZyBzdGFuZGFsb25lLCBjYWxsIHRoaXMgY29tbWFuZCB3aXRoICdkY2R4IHJlc2V0IDxuYW1lPidcblxuSU1QT1JUQU5UOiBUaGlzIHdpbGwgcmVtb3ZlIGFsbCBkYXRhIGZyb20gaG9zdCBhcHBsaWNhdGlvbiBhbmQgZGF0YWJhc2UhXG5JZiB5b3Ugd2lzaCB0byBwcmVzZXJ2ZSB0aGUgZGF0YSwgcGxlYXNlIHVzZSB0aGUgJ2RjZHggc3RvcCcgY29tbWFuZCBpbnN0ZWFkYClcbiAgICAuYWRkSGVscFRleHQoJ2FmdGVyQWxsJywgJ+KAiycpIC8vIHRoZXJlIGlzIGEgbm9uLXplcm8gd2hpdGUgc3BhY2UgYmVjYXVzZSB0aGUgb25seSByZWFzb24gdG8gaGF2ZSB0aGlzIGlzIHRvIGZvcmNlIGEgbGluZSBicmVha1xuICAgIC5jb25maWd1cmVIZWxwKHNob3dIZWxwV2l0aERlZmF1bHRDb21tYW5kT3B0aW9ucylcbiAgICAuYWxsb3dVbmtub3duT3B0aW9uKGZhbHNlKVxuICAgIC5hbGxvd0V4Y2Vzc0FyZ3VtZW50cyhmYWxzZSlcbiAgICAuc2hvd0hlbHBBZnRlckVycm9yKHRydWUpO1xucHJvZ3JhbVxuICAgIC5jb21tYW5kKCdmcm9tQU1QUycsIHsgaXNEZWZhdWx0OiB0cnVlLCBoaWRkZW46IHRydWUgfSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1kLCAtLWRhdGFiYXNlIDxuYW1lPicsICdUaGUgZGF0YWJhc2UgZW5naW5lIHRvIHJlc2V0JykuY2hvaWNlcyhPYmplY3QudmFsdWVzKFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMpKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctUCwgLS1hY3RpdmF0ZS1wcm9maWxlcyA8YXJnPicsICdDb21tYS1kZWxpbWl0ZWQgbGlzdCBvZiBwcm9maWxlcyB0byBhY3RpdmF0ZScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1jd2QgPGRpcmVjdG9yeT4nLCAnU3BlY2lmeSB0aGUgd29ya2luZyBkaXJlY3RvcnknKSlcbiAgICAuYWN0aW9uKG9wdGlvbnMgPT4gQWN0aW9uSGFuZGxlcihwcm9ncmFtLCBDb21tYW5kKCksIG9wdGlvbnMpKTtcbnByb2dyYW1cbiAgICAuY29tbWFuZCgnYmFtYm9vJylcbiAgICAuZGVzY3JpcHRpb24oJ1Jlc2V0IEF0bGFzc2lhbiBCYW1ib28gKHN0YW5kYWxvbmUpJylcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy10LCAtLXRhZyA8dGFnPicsICdUaGUgRG9ja2VyIHRhZyBvZiBBdGxhc3NpYW4gQmFtYm9vJykuY2hvaWNlcyh2ZXJzaW9uc1tTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJhbWJvb10pLmRlZmF1bHQoJ2xhdGVzdCcpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLWQsIC0tZGF0YWJhc2UgPG5hbWU+JywgJ1RoZSBkYXRhYmFzZSBlbmdpbmUgdG8gcmVzZXQnKS5jaG9pY2VzKE9iamVjdC52YWx1ZXMoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcykpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1QLCAtLWFjdGl2YXRlLXByb2ZpbGVzIDxhcmc+JywgJ0NvbW1hLWRlbGltaXRlZCBsaXN0IG9mIHByb2ZpbGVzIHRvIGFjdGl2YXRlIChvbmx5IGF2YWlsYWJsZSB3aXRob3V0IC0tdGFnKScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1jd2QgPGRpcmVjdG9yeT4nLCAnU3BlY2lmeSB0aGUgd29ya2luZyBkaXJlY3RvcnkgKG9ubHkgYXZhaWxhYmxlIHdpdGhvdXQgLS10YWcpJykpXG4gICAgLmFjdGlvbihvcHRpb25zID0+IEFjdGlvbkhhbmRsZXIocHJvZ3JhbSwgQ29tbWFuZCgpLCB7IC4uLm9wdGlvbnMsIG5hbWU6IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vIH0pKTtcbnByb2dyYW1cbiAgICAuY29tbWFuZCgnYml0YnVja2V0JylcbiAgICAuZGVzY3JpcHRpb24oJ1Jlc2V0IEF0bGFzc2lhbiBCaXRidWNrZXQgKHN0YW5kYWxvbmUpJylcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy10LCAtLXRhZyA8dGFnPicsICdUaGUgRG9ja2VyIHRhZyBvZiBBdGxhc3NpYW4gQml0YnVja2V0JykuY2hvaWNlcyh2ZXJzaW9uc1tTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldF0pLmRlZmF1bHQoJ2xhdGVzdCcpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLWQsIC0tZGF0YWJhc2UgPG5hbWU+JywgJ1RoZSBkYXRhYmFzZSBlbmdpbmUgdG8gcmVzZXQnKS5jaG9pY2VzKE9iamVjdC52YWx1ZXMoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcykpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1QLCAtLWFjdGl2YXRlLXByb2ZpbGVzIDxhcmc+JywgJ0NvbW1hLWRlbGltaXRlZCBsaXN0IG9mIHByb2ZpbGVzIHRvIGFjdGl2YXRlIChvbmx5IGF2YWlsYWJsZSB3aXRob3V0IC0tdGFnKScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1jd2QgPGRpcmVjdG9yeT4nLCAnU3BlY2lmeSB0aGUgd29ya2luZyBkaXJlY3RvcnkgKG9ubHkgYXZhaWxhYmxlIHdpdGhvdXQgLS10YWcpJykpXG4gICAgLmFjdGlvbihvcHRpb25zID0+IEFjdGlvbkhhbmRsZXIocHJvZ3JhbSwgQ29tbWFuZCgpLCB7IC4uLm9wdGlvbnMsIG5hbWU6IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYml0YnVja2V0IH0pKTtcbnByb2dyYW1cbiAgICAuY29tbWFuZCgnY29uZmx1ZW5jZScpXG4gICAgLmRlc2NyaXB0aW9uKCdSZXNldCBBdGxhc3NpYW4gQ29uZmx1ZW5jZSAoc3RhbmRhbG9uZSknKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLXQsIC0tdGFnIDx0YWc+JywgJ1RoZSBEb2NrZXIgdGFnIG9mIEF0bGFzc2lhbiBDb25mbHVlbmNlJykuY2hvaWNlcyh2ZXJzaW9uc1tTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2VdKS5kZWZhdWx0KCdsYXRlc3QnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1kLCAtLWRhdGFiYXNlIDxuYW1lPicsICdUaGUgZGF0YWJhc2UgZW5naW5lIHRvIHJlc2V0JykuY2hvaWNlcyhPYmplY3QudmFsdWVzKFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMpKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctUCwgLS1hY3RpdmF0ZS1wcm9maWxlcyA8YXJnPicsICdDb21tYS1kZWxpbWl0ZWQgbGlzdCBvZiBwcm9maWxlcyB0byBhY3RpdmF0ZSAob25seSBhdmFpbGFibGUgd2l0aG91dCAtLXRhZyknKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tY3dkIDxkaXJlY3Rvcnk+JywgJ1NwZWNpZnkgdGhlIHdvcmtpbmcgZGlyZWN0b3IgKG9ubHkgYXZhaWxhYmxlIHdpdGhvdXQgLS10YWcpJykpXG4gICAgLmFjdGlvbihvcHRpb25zID0+IEFjdGlvbkhhbmRsZXIocHJvZ3JhbSwgQ29tbWFuZCgpLCB7IC4uLm9wdGlvbnMsIG5hbWU6IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuY29uZmx1ZW5jZSB9KSk7XG5wcm9ncmFtXG4gICAgLmNvbW1hbmQoJ2ppcmEnKVxuICAgIC5kZXNjcmlwdGlvbignUmVzZXQgQXRsYXNzaWFuIEppcmEgKHN0YW5kYWxvbmUpJylcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy10LCAtLXRhZyA8dGFnPicsICdUaGUgRG9ja2VyIHRhZyBvZiBBdGxhc3NpYW4gSmlyYScpLmNob2ljZXModmVyc2lvbnNbU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5qaXJhXSkuZGVmYXVsdCgnbGF0ZXN0JykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctZCwgLS1kYXRhYmFzZSA8bmFtZT4nLCAnVGhlIGRhdGFiYXNlIGVuZ2luZSB0byByZXNldCcpLmNob2ljZXMoT2JqZWN0LnZhbHVlcyhTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzKSkuZGVmYXVsdChTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLnBvc3RncmVzcWwpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLVAsIC0tYWN0aXZhdGUtcHJvZmlsZXMgPGFyZz4nLCAnQ29tbWEtZGVsaW1pdGVkIGxpc3Qgb2YgcHJvZmlsZXMgdG8gYWN0aXZhdGUgKG9ubHkgYXZhaWxhYmxlIHdpdGhvdXQgLS10YWcpJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWN3ZCA8ZGlyZWN0b3J5PicsICdTcGVjaWZ5IHRoZSB3b3JraW5nIGRpcmVjdG9yeSAob25seSBhdmFpbGFibGUgd2l0aG91dCAtLXRhZyknKSlcbiAgICAuYWN0aW9uKG9wdGlvbnMgPT4gQWN0aW9uSGFuZGxlcihwcm9ncmFtLCBDb21tYW5kKCksIHsgLi4ub3B0aW9ucywgbmFtZTogU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5qaXJhIH0pKTtcbnByb2dyYW0ucGFyc2VBc3luYyhwcm9jZXNzLmFyZ3YpLmNhdGNoKCgpID0+IGdyYWNlZnVsRXhpdCgxKSk7XG5wcm9jZXNzLm9uKCdTSUdJTlQnLCAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYFJlY2VpdmVkIHRlcm0gc2lnbmFsLCB0cnlpbmcgdG8gc3RvcCBncmFjZWZ1bGx5IPCfkqpgKTtcbiAgICBncmFjZWZ1bEV4aXQoKTtcbn0pO1xuIl0sIm5hbWVzIjpbInZlcnNpb25zIiwiQmFzZSIsIkNvbW1hbmRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVPLE1BQU0sYUFBYSxHQUFHLE9BQU8sT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxFQUFFLE9BQU8sS0FBSztBQUNuRixJQUFJLE1BQU0sR0FBRyxHQUFHLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDMUMsSUFBSSxNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sS0FBSztBQUNyQyxRQUFRLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUM5QixRQUFRLGFBQWEsQ0FBQyxPQUFPLElBQUksS0FBSztBQUN0QyxZQUFZLElBQUk7QUFDaEIsZ0JBQWdCLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRTtBQUNoQyxvQkFBb0IsTUFBTSxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7QUFDOUQsaUJBQWlCO0FBQ2pCLGdCQUFnQixJQUFJLFlBQVksRUFBRTtBQUNsQyxvQkFBb0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUN6RCxpQkFBaUI7QUFDakIscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxvQkFBb0IsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pDLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsWUFBWSxPQUFPLEdBQUcsRUFBRTtBQUN4QixnQkFBZ0IsTUFBTSxPQUFPLEdBQUcsR0FBRyxZQUFZLEtBQUssR0FBRyxHQUFHLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztBQUN6RSxnQkFBZ0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2hDLGFBQWE7QUFDYixTQUFTLEVBQUU7QUFDWCxZQUFZLElBQUksRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUk7QUFDL0IsU0FBUyxDQUFDLENBQUM7QUFDWCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJO0FBQ2pDLFlBQVksSUFBSSxHQUFHLFlBQVksQ0FBQyxDQUFDLFFBQVEsRUFBRTtBQUMzQyxnQkFBZ0IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJO0FBQzVDLG9CQUFvQixZQUFZLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN6RyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ25CLGFBQWE7QUFDYixpQkFBaUIsSUFBSSxHQUFHLFlBQVksS0FBSyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtBQUN0RSxnQkFBZ0IsWUFBWSxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUM5QyxhQUFhO0FBQ2IsWUFBWSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsU0FBUyxDQUFDLENBQUM7QUFDWCxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJO0FBQ3hCLFFBQVEsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFO0FBQzlCLFlBQVksT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNuQztBQUNBO0FBQ0EsU0FBUztBQUNULGFBQWE7QUFDYixZQUFZLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsU0FBUztBQUNULEtBQUssQ0FBQyxDQUFDO0FBQ1AsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDOUNNLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUMvQyxJQUFJLFlBQVk7QUFDaEIsSUFBSSxPQUFPO0FBQ1gsSUFBSSxPQUFPO0FBQ1gsQ0FBQyxDQUFDLENB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