dcdx 1.3.0-next.29 → 1.3.0-next.30

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.
@@ -68,568 +68,583 @@ const ActionHandler = async (program, { action, errorHandler }, options) => {
68
68
  };
69
69
 
70
70
  var jira = [
71
- "9.4.29-ubuntu-jdk11",
72
- "9.4",
73
- "9.4-ubuntu-jdk11",
74
- "9.4.29",
75
- "9.4-jdk11",
76
- "9.4.29-jdk11",
77
- "10.3.0-RC-ubuntu-jdk17",
78
- "10.3.0-RC-jdk17",
79
- "10.3.0-RC",
80
- "10.3.0-RC-ubi9-jdk17",
81
- "10.3.0-RC-ubi9",
82
- "9.15.0",
83
- "9.15.0-ubuntu-jdk17",
84
71
  "9.15.0-jdk17",
85
- "9.15.1-ubuntu-jdk17",
72
+ "9.15.0-ubuntu-jdk17",
73
+ "10.0.0-ubuntu-jdk17",
74
+ "10.0.0",
75
+ "10.0.0-jdk17",
76
+ "9.15.0",
77
+ "10.0.1-ubuntu-jdk17",
78
+ "10.0-ubuntu-jdk17",
79
+ "10.0-jdk17",
80
+ "10.0",
81
+ "10.0.1-jdk17",
82
+ "10.0.1",
86
83
  "9.15.1-jdk17",
87
84
  "9.15.1",
88
- "10.0.0-jdk17",
89
- "10.0.0",
90
- "10.0.0-ubuntu-jdk17",
91
- "9.15-ubuntu-jdk17",
92
- "9.15-jdk17",
93
- "9.15.2-ubuntu-jdk17",
85
+ "9.15.1-ubuntu-jdk17",
86
+ "9.11",
87
+ "9.11-ubuntu-jdk17",
88
+ "9.11.3-ubuntu-jdk17",
89
+ "9.11.3",
90
+ "9.11-jdk17",
91
+ "9.11.3-jdk17",
92
+ "9.12.3",
93
+ "9.12.3-jdk17",
94
+ "9.12.3-ubuntu-jdk17",
94
95
  "9.15.2",
95
96
  "9.15",
97
+ "9.15-ubuntu-jdk17",
96
98
  "9.15.2-jdk17",
97
- "9.7.1-jdk11",
98
- "9.7.1",
99
- "9.7.1-ubuntu-jdk11",
99
+ "9.15.2-ubuntu-jdk17",
100
+ "9.15-jdk17",
100
101
  "9.12.4-jdk17",
101
102
  "9.12.4-ubuntu-jdk17",
102
103
  "9.12.4",
103
- "10.0-ubuntu-jdk17",
104
- "10.0-jdk17",
105
- "10.0.1-ubuntu-jdk17",
106
- "10.0.1-jdk17",
107
- "10.0",
108
- "10.0.1",
109
- "9.7",
110
- "9.7.2-jdk11",
111
- "9.7.2-ubuntu-jdk11",
112
- "9.7.2",
113
- "9.7-ubuntu-jdk11",
114
- "9.7-jdk11",
115
- "9.12.5",
104
+ "9.12.0",
105
+ "9.12.0-ubuntu-jdk17",
106
+ "10.1.1-ubuntu-jdk17",
107
+ "9.12.0-jdk17",
108
+ "10.1.1",
109
+ "10.1.1-jdk17",
116
110
  "9.12.5-jdk17",
111
+ "9.12.5",
117
112
  "9.12.5-ubuntu-jdk17",
118
- "9.16.0-ubuntu-jdk17",
119
113
  "9.16.0",
114
+ "9.16.0-ubuntu-jdk17",
120
115
  "9.16.0-jdk17",
121
- "10.1.1-ubuntu-jdk17",
122
- "10.1.1-jdk17",
123
- "10.1.1",
124
- "9.12.0-ubuntu-jdk17",
125
- "9.12.0",
126
- "9.12.0-jdk17",
127
- "9.12.6-ubuntu-jdk17",
116
+ "9.7.1-jdk11",
117
+ "9.7.1",
118
+ "9.7.1-ubuntu-jdk11",
119
+ "9.12.1-jdk17",
120
+ "9.12.1",
121
+ "9.12.1-ubuntu-jdk17",
122
+ "10.1.2-ubuntu-jdk17",
123
+ "10.1-jdk17",
124
+ "10.1.2",
125
+ "10.1-ubuntu-jdk17",
126
+ "10.1",
127
+ "10.1.2-jdk17",
128
128
  "9.12.6-jdk17",
129
+ "9.12.6-ubuntu-jdk17",
129
130
  "9.12.6",
130
- "9.16",
131
+ "9.4.6",
132
+ "9.4.6-jdk11",
133
+ "9.4.6-ubuntu-jdk11",
134
+ "9.7",
135
+ "9.16.1",
131
136
  "9.16-ubuntu-jdk17",
137
+ "9.7.2-ubuntu-jdk11",
138
+ "9.7-jdk11",
139
+ "9.7.2-jdk11",
140
+ "9.7.2",
141
+ "9.7-ubuntu-jdk11",
142
+ "9.12.10",
143
+ "9.12.10-ubuntu-jdk17",
144
+ "9.12.10-jdk17",
132
145
  "9.16-jdk17",
133
- "9.16.1",
134
146
  "9.16.1-ubuntu-jdk17",
147
+ "9.16",
135
148
  "9.16.1-jdk17",
136
149
  "9.14-jdk11",
150
+ "9.14.1-ubuntu-jdk11",
137
151
  "9.14-ubuntu-jdk11",
138
152
  "9.14.1-jdk11",
139
- "9.14.1-ubuntu-jdk11",
140
- "9.12.1-jdk17",
141
- "9.8.0-ubuntu-jdk11",
142
- "9.12.1-ubuntu-jdk17",
143
- "9.12.1",
144
- "9.8.0-jdk11",
145
- "9.8.0",
146
- "10.1.2-jdk17",
147
- "10.1",
148
- "10.1-jdk17",
149
- "10.1.2",
150
- "10.1-ubuntu-jdk17",
151
- "10.1.2-ubuntu-jdk17",
153
+ "9.12.7-ubuntu-jdk17",
152
154
  "9.12.7-jdk17",
153
155
  "9.12.7",
154
- "9.12.7-ubuntu-jdk17",
155
- "9.4.26",
156
- "9.4.26-ubuntu-jdk11",
157
- "9.4.26-jdk11",
158
- "9.12.10-ubuntu-jdk17",
159
- "9.12.10-jdk17",
160
- "9.12.10",
161
- "9.17.0",
162
- "9.8.1",
163
- "9.8.1-jdk11",
164
- "9.8.1-ubuntu-jdk11",
165
- "9.15.0-jdk11",
166
- "9.17.0-jdk17",
167
- "9.12.8-ubuntu-jdk17",
168
- "9.15.0-ubuntu-jdk11",
169
- "9.17.0-ubuntu-jdk17",
170
- "9.17.0-jdk11",
171
- "latest",
172
- "9.12.8",
173
- "9.12.8-jdk17",
174
- "9.17.0-ubuntu-jdk11",
175
- "9.4.27",
176
- "9.4.27-ubuntu-jdk11",
177
- "9.4.27-jdk11",
178
156
  "9.4.7-jdk11",
179
- "9.4.7-ubuntu-jdk11",
180
157
  "9.4.7",
181
- "10.2.0-jdk17",
182
- "10.2.0-ubuntu-jdk17",
183
- "10.2.0",
184
- "9.12.11",
158
+ "9.4.7-ubuntu-jdk11",
185
159
  "9.12.11-jdk17",
186
160
  "9.12.11-ubuntu-jdk17",
187
- "10.0.0-ubi9",
188
- "9.17.1-ubuntu-jdk17",
189
- "9.12.1-ubi9",
190
- "9.10.0-ubuntu-jdk11",
161
+ "9.12.11",
162
+ "10.2.0",
163
+ "10.2.0-jdk17",
164
+ "10.2.0-ubuntu-jdk17",
165
+ "9.4.26-jdk11",
191
166
  "9.10.0-jdk11",
192
- "9.8.2-ubuntu-jdk11",
193
- "9.12.9-ubuntu-jdk17",
194
- "9.12.7-ubuntu-jdk11",
195
- "9.4.28",
196
- "9.4.28-jdk11",
197
- "10.0.0-ubi9-jdk17",
198
- "9.15.1-jdk11",
199
- "9.12.1-ubi9-jdk17",
200
- "9.15.1-ubuntu-jdk11",
201
167
  "9.10.0",
202
- "9.17.1-ubuntu-jdk11",
203
- "9.17.1-jdk17",
204
- "9.17.1",
205
- "9.8.2-jdk11",
206
- "9.8-jdk11",
207
- "9.8",
208
- "9.8.2",
209
- "9.4.8",
210
- "9.8-ubuntu-jdk11",
168
+ "10.0.0-ubi9-jdk17",
169
+ "9.10.0-ubuntu-jdk11",
170
+ "10.0.0-ubi9",
171
+ "9.12.8-ubuntu-jdk17",
172
+ "9.4.26",
173
+ "9.4.26-ubuntu-jdk11",
174
+ "9.17.2-ubi9",
175
+ "9.17.2-ubi9-jdk17",
176
+ "9.8.0-ubuntu-jdk11",
177
+ "9.8.0-jdk11",
178
+ "9.12.8-jdk17",
179
+ "9.8.0",
180
+ "9.12.8",
181
+ "9.17.0-jdk17",
182
+ "9.17.0",
183
+ "9.17.0-ubuntu-jdk11",
184
+ "9.17.0-ubuntu-jdk17",
185
+ "9.17.0-jdk11",
211
186
  "9.4.8-jdk11",
187
+ "9.4.8",
212
188
  "9.4.8-ubuntu-jdk11",
213
- "9.12.9",
214
- "9.12.9-jdk17",
189
+ "9.11.0-ubuntu-jdk11",
215
190
  "9.12.7-jdk11",
216
- "9.4.28-ubuntu-jdk11",
191
+ "9.7.1-ubi9-jdk17",
192
+ "9.12.7-ubuntu-jdk11",
193
+ "9.7.1-ubi9",
194
+ "9.4.2",
195
+ "9.12.16-jdk11",
217
196
  "9.12-jdk11",
218
- "9.12.15-ubuntu-jdk11",
197
+ "9.4.2-ubuntu-jdk11",
198
+ "9.4.2-jdk11",
199
+ "9.4.12",
219
200
  "9.12-ubuntu-jdk11",
220
- "9.17.1-jdk11",
221
- "9.12.15-jdk11",
222
- "10.2.1",
223
- "ubuntu-jdk17",
224
- "10-ubuntu-jdk17",
225
- "jdk17",
226
- "10-jdk17",
227
- "10.2.1-ubuntu-jdk17",
201
+ "9.12.16-ubuntu-jdk11",
202
+ "9.4.12-jdk11",
228
203
  "9.12.12-ubuntu-jdk17",
204
+ "9.4.12-ubuntu-jdk11",
229
205
  "9.12.12",
206
+ "9.12.12-jdk17",
207
+ "9.17.3-ubi9",
208
+ "9.11.0-jdk11",
209
+ "9.17.3-ubi9-jdk17",
210
+ "9.4.27-ubuntu-jdk11",
211
+ "9.15.0-jdk11",
212
+ "9.15.0-ubuntu-jdk11",
230
213
  "10.2-jdk17",
231
- "9.5.0-jdk17",
232
- "10",
233
- "10.2-ubuntu-jdk17",
214
+ "9.15.0-ubi9",
215
+ "10.2.1-ubuntu-jdk17",
234
216
  "10.2.1-jdk17",
217
+ "10.2-ubuntu-jdk17",
218
+ "10.2.1",
219
+ "9.15.0-ubi9-jdk17",
220
+ "9.8.1",
235
221
  "10.2",
236
- "9.12.12-jdk17",
237
- "9.5.0-ubuntu-jdk17",
238
- "9.4.2",
239
- "9.4.2-ubuntu-jdk11",
240
- "9.4.2-jdk11",
241
- "9.12.9-ubi9-jdk17",
242
- "9.12.9-ubi9",
243
- "9.4.12-jdk11",
244
- "9.4.12",
245
- "9.11.0-ubuntu-jdk11",
246
- "9.11.0-jdk11",
247
- "9.4.12-ubuntu-jdk11",
248
- "9.10.1",
222
+ "9.4.27",
223
+ "10.0.1-ubi9",
224
+ "9.12.9",
249
225
  "9.10.1-ubuntu-jdk11",
250
- "9.10.1-jdk11",
251
226
  "10.0.1-ubi9-jdk17",
252
- "10.0.1-ubi9",
253
- "9.12.8-ubuntu-jdk11",
254
- "9.7.2-ubi9-jdk17",
255
- "9.17.2-jdk17",
256
- "9.17.2-ubuntu-jdk17",
257
- "9.4.9-jdk11",
258
- "9.13.0-ubuntu-jdk17",
259
- "9.13.0",
260
- "9.12.10-ubi9",
227
+ "9.10.1-jdk11",
228
+ "9.4.27-jdk11",
229
+ "9.10.1",
230
+ "9.17.1-ubuntu-jdk11",
231
+ "9.17.1",
232
+ "9.12.10-jdk11",
233
+ "9.8.1-ubuntu-jdk11",
234
+ "9.8.1-jdk11",
235
+ "9.17.1-jdk11",
236
+ "9.12.9-jdk17",
237
+ "9.7.2-ubi9-jdk17",
261
238
  "9.7.2-ubi9",
262
- "9.12.8-jdk11",
263
- "9.17.4-ubi9",
264
- "9.12.10-ubi9-jdk17",
239
+ "9.12.9-ubuntu-jdk17",
240
+ "9.12.8-ubuntu-jdk11",
241
+ "9.12.13-jdk17",
265
242
  "9.4.9",
243
+ "9.12.10-ubuntu-jdk11",
244
+ "9.15.1-jdk11",
245
+ "9.17.1-ubuntu-jdk17",
246
+ "9.17.1-jdk17",
247
+ "9.4.9-jdk11",
248
+ "9.11.1-ubuntu-jdk11",
266
249
  "9.4.9-ubuntu-jdk11",
267
- "9.17.2",
268
- "9.17.4-ubi9-jdk17",
269
- "9.13.0-jdk17",
270
- "9.15.2-ubi9-jdk17",
271
- "9.15.2-ubi9",
272
- "9.15.2-ubuntu-jdk11",
273
- "9.15.2-jdk11",
274
- "9.15-ubuntu-jdk11",
275
- "9.15-jdk11",
276
- "9.12.1-jdk11",
277
- "9.12.1-ubuntu-jdk11",
278
- "9.17.2-ubuntu-jdk11",
279
- "9.17.2-jdk11",
280
- "9.12.13-ubuntu-jdk17",
281
- "9.12.13",
282
- "9.4.20",
283
250
  "9.4.20-jdk11",
284
- "9.4.20-ubuntu-jdk11",
285
- "9.12.13-jdk17",
286
- "9.10.1-ubi9-jdk17",
287
- "9.12.2-ubi9",
288
- "9.12.2-ubi9-jdk17",
289
- "9.10.1-ubi9",
251
+ "9.4.20",
290
252
  "9.4.14",
291
- "9.5.1-ubuntu-jdk17",
292
- "9.5-jdk17",
293
- "9.5.1-jdk17",
294
- "9.10",
295
- "9.10.2-ubuntu-jdk11",
296
- "9.11.1-jdk11",
297
- "9.13.0-ubi9-jdk17",
253
+ "9.12.7-ubi9",
254
+ "9.12.7-ubi9-jdk17",
255
+ "9.12.8-jdk11",
256
+ "9.4.20-ubuntu-jdk11",
298
257
  "9.4.14-jdk11",
299
258
  "9.4.14-ubuntu-jdk11",
300
- "9.13.0-ubi9",
301
- "9.5-ubuntu-jdk17",
302
- "9.8-ubuntu-jdk17",
303
- "9.12.9-ubuntu-jdk11",
304
- "9.8-jdk17",
305
- "9.10.2",
306
- "9.9.0-jdk11",
307
- "9.10.2-jdk11",
308
- "9.17.5-ubi9-jdk17",
309
- "9.11.1-ubuntu-jdk11",
259
+ "9.11.1-jdk11",
260
+ "9.12.13",
261
+ "9.15.1-ubuntu-jdk11",
262
+ "9.12.15-ubi9-jdk17",
263
+ "9.12.13-ubuntu-jdk17",
264
+ "9.4.28",
265
+ "9.10.2-ubuntu-jdk11",
266
+ "9.12.15-ubi9",
267
+ "9.15.1-ubi9",
268
+ "9.10",
269
+ "9.15.1-ubi9-jdk17",
310
270
  "9.10-ubuntu-jdk11",
271
+ "latest",
272
+ "9.4.28-jdk11",
273
+ "9.10.2",
274
+ "9.4.28-ubuntu-jdk11",
311
275
  "9.10-jdk11",
276
+ "9.5.0-jdk11",
277
+ "9.10.2-jdk11",
278
+ "9.8.2-jdk11",
279
+ "9.8.2-ubuntu-jdk11",
280
+ "9.8-jdk11",
281
+ "9.8-ubuntu-jdk11",
282
+ "9.8.2",
283
+ "9.5.0",
284
+ "9.13.0-ubuntu-jdk17",
312
285
  "9.5.0-ubuntu-jdk11",
286
+ "9.17.2-ubuntu-jdk17",
287
+ "9.8-ubuntu-jdk17",
288
+ "9.10.0-ubi9-jdk17",
289
+ "9.17.2-jdk11",
290
+ "9.17.4-ubi9-jdk17",
291
+ "9.17.2-ubuntu-jdk11",
292
+ "9.17.4-ubi9",
313
293
  "9.8.2-jdk17",
314
- "9.5.0",
315
- "9.5.0-jdk11",
316
- "9.12.9-jdk11",
317
294
  "9.8.2-ubuntu-jdk17",
318
- "9.9.0-ubuntu-jdk11",
319
- "9.17.5-ubi9",
320
- "9.12.2-ubuntu-jdk11",
321
- "9.9.0",
322
- "9.12.2-jdk11",
323
- "9.12.10-ubuntu-jdk11",
324
- "9.12.10-jdk11",
325
- "9.13",
326
- "9.13-jdk17",
327
- "9.13.1",
328
- "9.13-ubuntu-jdk17",
329
- "9.13.1-jdk17",
330
- "9.13.1-ubuntu-jdk17",
331
- "9.17.3-ubuntu-jdk17",
332
- "9.11.0",
333
- "9.17.3-jdk17",
334
- "9.17.3",
335
- "9.12.11-ubi9-jdk17",
336
- "9.12.11-ubi9",
295
+ "9.12.8-ubi9",
296
+ "10.3",
297
+ "jdk17",
298
+ "9.13.0-jdk17",
299
+ "9.13.0",
337
300
  "9.4.21",
338
- "9.11.0-jdk17",
339
- "9.10.2-ubi9-jdk17",
340
- "9.10.2-ubi9",
341
- "9.11.0-ubuntu-jdk17",
342
- "9.4.3",
343
301
  "9.4.21-ubuntu-jdk11",
344
- "9.12.14-ubuntu-jdk17",
345
- "9.4.3-jdk11",
346
302
  "9.4.21-jdk11",
303
+ "9.8",
304
+ "10.1.1-ubi9",
305
+ "9.10.0-ubi9",
306
+ "9.12.8-ubi9-jdk17",
307
+ "9.12.11-ubuntu-jdk11",
308
+ "9.12.11-jdk11",
309
+ "ubuntu-jdk17",
310
+ "9.15.2-ubi9-jdk17",
311
+ "9.17.2-jdk17",
312
+ "9.12.14-ubuntu-jdk17",
313
+ "9.8-jdk17",
314
+ "9.5.0-jdk17",
315
+ "9.15.2-jdk11",
316
+ "9.15.2-ubuntu-jdk11",
317
+ "9.17.2",
318
+ "10",
319
+ "10-jdk17",
320
+ "10.3-jdk17",
321
+ "10.3-ubuntu-jdk17",
322
+ "9.4-jdk11",
323
+ "9.4.29-jdk11",
324
+ "9.4.15-jdk11",
325
+ "9.12.2-jdk11",
326
+ "9.12.2-ubuntu-jdk11",
327
+ "10.1.1-ubi9-jdk17",
328
+ "9.12.9-jdk11",
329
+ "9.12.9-ubuntu-jdk11",
330
+ "10.3.0-jdk17",
331
+ "10.3.0-ubuntu-jdk17",
332
+ "10.3.0",
333
+ "9.4.15",
334
+ "9.12.0-ubi9-jdk17",
335
+ "9.4.15-ubuntu-jdk11",
336
+ "9.15-ubuntu-jdk11",
337
+ "9.12.0-ubi9",
338
+ "9.11.2-ubuntu-jdk11",
339
+ "10-ubuntu-jdk17",
340
+ "9.12.14-jdk17",
341
+ "9.4-ubuntu-jdk11",
347
342
  "9.8.0-ubi9-jdk17",
348
343
  "9.12.14",
349
- "9.4.3-ubuntu-jdk11",
350
- "9.12.14-jdk17",
351
- "9.4.15",
352
- "9.17.3-jdk11",
353
- "9.16.0-ubi9-jdk17",
354
344
  "9.8.0-ubi9",
355
- "9.13.1-ubi9",
345
+ "9.11.2-jdk11",
346
+ "9.17.5-ubi9-jdk17",
347
+ "9.15.2-ubi9",
348
+ "9.4",
349
+ "9.5",
350
+ "9.5-ubuntu-jdk11",
351
+ "9.12.16-ubi9-jdk17",
352
+ "9.13-jdk17",
353
+ "9.15-jdk11",
354
+ "9.17.3-jdk11",
355
+ "9.17.3-ubuntu-jdk11",
356
+ "9.5.0-ubuntu-jdk17",
357
+ "9.12.16-ubi9",
358
+ "9.17.5-ubi9",
356
359
  "9.7.1-jdk17",
357
360
  "9.7.1-ubuntu-jdk17",
358
- "9.4.15-jdk11",
359
- "9.4.15-ubuntu-jdk11",
360
- "9.17.3-ubuntu-jdk11",
361
- "9.16.0-ubi9",
362
- "9.12.3-ubi9-jdk17",
363
- "9.12.3-ubi9",
364
- "9.5-ubuntu-jdk11",
361
+ "9.4.29-ubuntu-jdk11",
362
+ "9.4.29",
363
+ "9.12.12-jdk11",
365
364
  "9.5.1-ubuntu-jdk11",
366
- "9.5.1-jdk11",
367
- "10.1.1-ubi9",
368
- "9.13.1-ubi9-jdk17",
369
- "10.1.1-ubi9-jdk17",
365
+ "9.4.22-ubuntu-jdk11",
366
+ "9.4.22-jdk11",
367
+ "9.10.1-ubi9",
370
368
  "9.5-jdk11",
371
- "9.13.0-jdk11",
372
- "9.12.11-jdk11",
373
- "9.11.2-jdk11",
374
- "9.11.2-ubuntu-jdk11",
375
- "9.5",
369
+ "9.11.3-jdk11",
370
+ "9.13.1",
371
+ "9.13.1-jdk17",
376
372
  "9.5.1",
377
- "9.11.1",
378
- "9.12-jdk17",
379
- "9.12.15-ubuntu-jdk17",
380
- "9.12-ubuntu-jdk17",
381
- "9.13.0-ubuntu-jdk11",
382
- "9.9.1-ubuntu-jdk11",
373
+ "9.5.1-jdk11",
374
+ "9.8.1-ubi9-jdk17",
375
+ "9.11-ubuntu-jdk11",
376
+ "9.13.1-ubuntu-jdk17",
377
+ "9.4.22",
378
+ "9.9.0",
379
+ "9.9.0-ubuntu-jdk11",
380
+ "9.10.1-ubi9-jdk17",
381
+ "9.12.1-ubi9",
382
+ "9.12.9-ubi9-jdk17",
383
+ "9.13-ubuntu-jdk17",
384
+ "9.17.3",
385
+ "9.13",
383
386
  "9.12.3-ubuntu-jdk11",
387
+ "9.12.12-ubuntu-jdk11",
388
+ "9.4.0-jdk11",
389
+ "9.11.3-ubuntu-jdk11",
390
+ "9.12.9-ubi9",
391
+ "9.13.0-ubuntu-jdk11",
392
+ "9.17.3-jdk17",
384
393
  "9.12.3-jdk11",
394
+ "9.17.3-ubuntu-jdk17",
395
+ "10.1.2-ubi9-jdk17",
396
+ "10.1.2-ubi9",
397
+ "9.11-jdk11",
398
+ "9.4.16-jdk11",
399
+ "9.10.2-ubi9",
400
+ "9.9.0-jdk17",
401
+ "9.9.0-ubuntu-jdk17",
402
+ "9.8.1-ubi9",
403
+ "9.5.1-ubuntu-jdk17",
404
+ "9.12.15-ubuntu-jdk17",
405
+ "9.5-jdk17",
406
+ "9.13.0-ubi9-jdk17",
385
407
  "9.4.16",
386
- "9.10.0-ubuntu-jdk17",
387
- "9.12.11-ubuntu-jdk11",
388
- "9.10.0-jdk17",
389
- "9.16.0-ubuntu-jdk11",
390
- "9.11.1-ubuntu-jdk17",
391
- "9.11.1-jdk17",
392
- "9.16.0-jdk11",
393
- "9.4.4-ubuntu-jdk11",
394
- "9.12.15-jdk17",
395
- "9.12",
396
- "9.12.15",
397
- "9.9.1",
398
- "9.4.22-ubuntu-jdk11",
399
- "9.4.22",
400
- "9.16.1-ubi9-jdk17",
401
- "9.9.1-jdk11",
402
- "9.4.22-jdk11",
403
- "9.17.4",
404
- "9.8.1-ubi9-jdk17",
405
- "9.17.4-ubuntu-jdk17",
406
- "9.8.1-ubi9",
407
- "9.6.0-jdk17",
408
- "9.7-ubuntu-jdk17",
409
- "9.9.0-ubuntu-jdk17",
410
- "9.5.0-ubi9-jdk17",
411
- "9.4.16-jdk11",
412
408
  "9.4.16-ubuntu-jdk11",
413
- "9.17.4-jdk11",
414
- "9.17.4-ubuntu-jdk11",
415
- "10.1.2-ubi9",
416
- "10.1.2-ubi9-jdk17",
417
- "9.12.4-ubi9-jdk17",
418
- "9.14.0-ubuntu-jdk17",
419
- "9.13.1-ubuntu-jdk11",
420
- "9.14.0-jdk17",
421
- "9.11.3-jdk11",
422
- "9.16.1-ubi9",
423
- "9.17.4-jdk17",
424
- "9.9.0-jdk17",
425
- "9.4.4",
426
- "9.4.4-jdk11",
427
- "9.13-ubuntu-jdk11",
428
- "9.13-jdk11",
429
- "9.8.2-ubi9-jdk17",
430
- "9.11.0-ubi9-jdk17",
431
- "9.12.12-ubi9",
432
- "9.6.0-ubuntu-jdk17",
433
- "9.11.2-jdk17",
434
- "9.5.0-ubi9",
435
- "9.7.2-ubuntu-jdk17",
409
+ "9.13.0-jdk11",
410
+ "9.5.1-jdk17",
411
+ "9.5-ubuntu-jdk17",
412
+ "9.12.1-ubi9-jdk17",
413
+ "9.9.0-jdk11",
414
+ "9.12.15",
415
+ "9.12.15-jdk17",
416
+ "9.4.23-ubuntu-jdk11",
436
417
  "9.7.2-jdk17",
437
- "9.7-jdk17",
418
+ "9.4.17-ubuntu-jdk11",
419
+ "9.12.4-jdk11",
420
+ "9.11.0",
421
+ "9.4.17-jdk11",
422
+ "9.11.0-ubuntu-jdk17",
438
423
  "9.4.0",
439
424
  "9.4.0-ubuntu-jdk11",
440
- "9.12.12-ubi9-jdk17",
441
- "9.4.0-jdk11",
442
- "9.6-jdk17",
425
+ "9.12.13-ubuntu-jdk11",
443
426
  "9.8.2-ubi9",
444
- "9.6-ubuntu-jdk17",
445
- "9.11.0-ubi9",
446
- "9.12.12-jdk11",
447
- "9.11-jdk11",
448
- "9.11.3-ubuntu-jdk11",
449
- "9.12.4-ubi9",
450
- "9.14.0",
451
- "9.11-ubuntu-jdk11",
452
- "9.14.0-ubi9",
453
- "9.13.1-jdk11",
454
- "9.12.4-jdk11",
427
+ "9.13.1-ubuntu-jdk11",
428
+ "9.10.2-ubi9-jdk17",
429
+ "9.11.0-jdk17",
430
+ "9.13.0-ubi9",
431
+ "9.7-ubuntu-jdk17",
432
+ "9.7.2-ubuntu-jdk17",
433
+ "9.4.3-ubuntu-jdk11",
434
+ "9.4.3",
435
+ "9.7-jdk17",
436
+ "9.12.13-jdk11",
437
+ "9.10.0-jdk17",
438
+ "9.10.0-ubuntu-jdk17",
439
+ "9.14.0-ubuntu-jdk17",
455
440
  "9.12.4-ubuntu-jdk11",
456
- "9.14.0-ubi9-jdk17",
441
+ "9.4.3-jdk11",
457
442
  "9.9.1-jdk17",
458
- "9.9.1-ubuntu-jdk17",
459
- "9.11.2",
460
- "9.4.17-ubuntu-jdk11",
461
- "9.6.0-ubuntu-jdk11",
462
- "9.4.17-jdk11",
463
- "9.6.0-jdk11",
464
- "9.4.23-ubuntu-jdk11",
465
- "9.6.0",
466
- "9.11.2-ubuntu-jdk17",
467
- "9.6-jdk11",
468
- "9.12.12-ubuntu-jdk11",
469
- "9.6",
470
- "9.10.1-jdk17",
471
- "9.9.2-ubuntu-jdk11",
443
+ "9.6-ubuntu-jdk11",
444
+ "9.13-jdk11",
445
+ "9.17.4-ubuntu-jdk11",
446
+ "9.13.1-jdk11",
472
447
  "9.4.23",
473
448
  "9.4.23-jdk11",
449
+ "9.13-ubuntu-jdk11",
450
+ "9.12.16",
451
+ "9.17.4-jdk11",
452
+ "9.5.0-ubi9",
453
+ "9.5.0-ubi9-jdk17",
454
+ "9.8.2-ubi9-jdk17",
455
+ "9.16.0-jdk11",
474
456
  "9.4.17",
475
- "9.17-ubuntu-jdk17",
457
+ "9.16.0-ubuntu-jdk11",
458
+ "9.12.2-ubi9-jdk17",
459
+ "9.17.4-ubuntu-jdk17",
460
+ "9.14.0-jdk17",
461
+ "9.12.2-ubi9",
462
+ "9.17.4-jdk17",
463
+ "9.12",
464
+ "9.9.1",
465
+ "9.17.4",
466
+ "9.6.0-jdk11",
467
+ "9.14.0",
468
+ "9.4.1",
469
+ "9.9.1-ubuntu-jdk11",
470
+ "9.12.10-ubi9",
471
+ "9.12.10-ubi9-jdk17",
472
+ "9.4.1-jdk11",
473
+ "9.12.16-jdk17",
474
+ "9.4.24-ubuntu-jdk11",
475
+ "9.4.24",
476
+ "9.12.16-ubuntu-jdk17",
477
+ "9.6",
478
+ "9.12-jdk17",
479
+ "9.6-jdk11",
480
+ "9.11.1-ubuntu-jdk17",
481
+ "10.2.0-ubi9-jdk17",
482
+ "9.12.5-jdk11",
483
+ "9.4.18",
484
+ "9.9.1-jdk11",
485
+ "9.12-ubuntu-jdk17",
486
+ "9.4.1-ubuntu-jdk11",
487
+ "9.16.0-ubi9",
488
+ "9.6.0",
489
+ "9.17.5-ubuntu-jdk11",
490
+ "9.12.3-ubi9-jdk17",
491
+ "9.9.1-ubuntu-jdk17",
492
+ "9.6.0-ubuntu-jdk11",
493
+ "9.16.0-ubi9-jdk17",
476
494
  "9.10.1-ubuntu-jdk17",
477
- "9.17.5-jdk17",
478
- "9.16.1-jdk11",
479
- "9.6-ubuntu-jdk11",
480
- "9.17",
495
+ "9.6-ubuntu-jdk17",
496
+ "9.12.0-jdk11",
497
+ "9.6.0-ubuntu-jdk17",
498
+ "9.6.0-jdk17",
499
+ "9.6-jdk17",
500
+ "9.10.1-jdk17",
501
+ "9.12.5-ubuntu-jdk11",
502
+ "9.12.14-jdk11",
503
+ "9.12.0-ubuntu-jdk11",
504
+ "9.13.1-ubi9",
505
+ "9.13.1-ubi9-jdk17",
506
+ "9.12.14-ubuntu-jdk11",
481
507
  "9.9.2-jdk11",
482
- "9.16-ubuntu-jdk11",
483
- "9.12.13-ubi9",
508
+ "9.9.2-ubuntu-jdk11",
509
+ "10.2.0-ubi9",
484
510
  "9.9",
485
- "9.17.5",
486
- "9.5.1-ubi9-jdk17",
487
- "9.9-ubuntu-jdk11",
511
+ "9.4.10",
488
512
  "9.9-jdk11",
489
- "9.16.1-ubuntu-jdk11",
490
- "9.16-jdk11",
513
+ "9.17.5-jdk11",
514
+ "9.11.1",
515
+ "9.11.0-ubi9",
516
+ "9.11.1-jdk17",
517
+ "9.11.0-ubi9-jdk17",
518
+ "9.4.24-jdk11",
519
+ "9.8.0-jdk17",
520
+ "9.12.11-ubi9",
521
+ "9-ubuntu-jdk17",
522
+ "9.8.0-ubuntu-jdk17",
491
523
  "9.17-jdk17",
492
- "9.4.5-jdk11",
493
- "9.11.1-ubi9-jdk17",
494
- "9.4.5-ubuntu-jdk11",
495
- "9.4.5",
496
- "9.4.1-jdk11",
497
- "9.4.1",
498
- "9.4.1-ubuntu-jdk11",
499
- "9.14",
500
- "9.5.1-ubi9",
524
+ "9.16-jdk11",
525
+ "9.4.18-jdk11",
526
+ "9.12.3-ubi9",
527
+ "9-jdk11",
528
+ "9.17-ubuntu-jdk11",
529
+ "9.16.1-ubuntu-jdk11",
530
+ "9.16.1-jdk11",
531
+ "9.9-ubuntu-jdk11",
532
+ "9-ubuntu-jdk11",
533
+ "9.16-ubuntu-jdk11",
534
+ "9.4.18-ubuntu-jdk11",
535
+ "9.17.5-jdk17",
536
+ "9.4.4-jdk11",
537
+ "9.4.10-jdk11",
538
+ "9.17.5-ubuntu-jdk17",
501
539
  "9.9.2",
502
- "9.12.5-jdk11",
503
- "9.12.5-ubuntu-jdk11",
504
- "9.12.13-ubi9-jdk17",
505
- "9",
506
- "9-ubuntu-jdk17",
507
- "9.12.2",
508
- "9.12.5-ubi9",
509
- "9.11.1-ubi9",
510
- "9.12.5-ubi9-jdk17",
540
+ "9.16.1-ubi9-jdk17",
541
+ "9.5.1-ubi9-jdk17",
542
+ "9.4.4-ubuntu-jdk11",
543
+ "9.9-jdk17",
511
544
  "9-jdk17",
512
- "9.17.5-ubuntu-jdk17",
513
- "9.17.5-jdk11",
514
- "9.17.5-ubuntu-jdk11",
515
- "9.12.13-jdk11",
516
- "9.14.1",
517
- "9.17-ubuntu-jdk11",
518
- "9.14.1-jdk17",
519
- "9.11.3",
520
- "9.11-jdk17",
521
- "9.11.3-ubuntu-jdk17",
522
- "9.11.3-jdk17",
523
- "9.12.2-ubuntu-jdk17",
524
- "9.17.0-ubi9-jdk17",
545
+ "9.4.4",
546
+ "9.4.10-ubuntu-jdk11",
547
+ "9.5.1-ubi9",
548
+ "9.17.5",
525
549
  "9.17-jdk11",
526
- "9-ubuntu-jdk11",
527
- "9-jdk11",
528
- "9.12.13-ubuntu-jdk11",
529
- "9.14-ubuntu-jdk17",
530
- "9.14.1-ubuntu-jdk17",
531
- "9.11",
550
+ "9.17",
551
+ "9.14",
552
+ "9",
553
+ "9.16.1-ubi9",
554
+ "9.17-ubuntu-jdk17",
532
555
  "9.14-jdk17",
533
- "9.11-ubuntu-jdk17",
534
- "9.12.2-jdk17",
535
- "9.14.1-ubi9",
536
- "9.14.1-ubi9-jdk17",
537
- "9.4.24",
538
- "9.4.24-ubuntu-jdk11",
539
- "9.4.24-jdk11",
540
- "9.17.0-ubi9",
541
- "9.4.10",
542
- "9.4.18-jdk11",
543
- "10.2.0-ubi9-jdk17",
544
- "10.2.0-ubi9",
545
- "9.4.10-ubuntu-jdk11",
546
556
  "9.9.2-ubuntu-jdk17",
547
- "9.9-jdk17",
548
- "9.10-jdk17",
549
- "9.10-ubuntu-jdk17",
550
- "9.8.0-ubuntu-jdk17",
551
- "9.8.0-jdk17",
552
- "9.4.18-ubuntu-jdk11",
553
- "9.4.18",
554
- "9.11.2-ubi9-jdk17",
555
- "9.11.2-ubi9",
556
- "9.7.0-ubuntu-jdk17",
557
+ "9.14.1-ubuntu-jdk17",
558
+ "9.14.1-jdk17",
559
+ "10.2.1-ubi9",
560
+ "9.9.2-jdk17",
561
+ "9.14-ubuntu-jdk17",
562
+ "9.9-ubuntu-jdk17",
563
+ "9.14.1",
564
+ "9.12.11-ubi9-jdk17",
557
565
  "9.9.0-ubi9",
558
- "9.7.0-jdk17",
559
- "9.4.10-jdk11",
560
566
  "9.9.0-ubi9-jdk17",
561
- "9.4.6-ubuntu-jdk11",
562
- "9.4.6-jdk11",
563
- "9.9-ubuntu-jdk17",
564
567
  "9.10.2-ubuntu-jdk17",
565
- "9.9.2-jdk17",
568
+ "10.2.1-ubi9-jdk17",
566
569
  "9.10.2-jdk17",
567
- "9.4.6",
568
- "9.14.0-jdk11",
569
- "9.6.0-ubi9",
570
- "9.12.6-ubi9-jdk17",
570
+ "9.10-jdk17",
571
+ "9.11.1-ubi9",
572
+ "9.10-ubuntu-jdk17",
573
+ "9.12.2",
574
+ "9.11.1-ubi9-jdk17",
575
+ "9.11.2-jdk17",
576
+ "9.11.2",
577
+ "9.4.25-ubuntu-jdk11",
578
+ "9.4.19-jdk11",
579
+ "9.12.2-jdk17",
580
+ "9.4.25",
571
581
  "9.14.0-ubuntu-jdk11",
572
- "9.6.0-ubi9-jdk17",
573
- "9.12.0-jdk11",
574
- "9.12.0-ubuntu-jdk11",
575
- "9.12.3-jdk17",
576
- "9.12.3",
577
- "9.12.14-ubi9",
578
- "9.12.14-ubi9-jdk17",
579
- "9.12.6-jdk11",
582
+ "9.14.0-jdk11",
583
+ "9.12.15-jdk11",
584
+ "9.12.12-ubi9-jdk17",
585
+ "9.12.15-ubuntu-jdk11",
586
+ "9.12.2-ubuntu-jdk17",
587
+ "9.7.0-ubuntu-jdk17",
588
+ "9.8.1-jdk17",
589
+ "9.11.2-ubuntu-jdk17",
590
+ "9.11.2-ubi9",
580
591
  "9.4.25-jdk11",
581
- "9.12.6-ubuntu-jdk11",
582
- "9.4.25",
583
- "9.4.25-ubuntu-jdk11",
584
- "9.12.6-ubi9",
585
- "9.7.0-ubuntu-jdk11",
586
- "9.12.14-ubuntu-jdk11",
587
- "9.7.0",
588
- "9.12.3-ubuntu-jdk17",
589
- "9.17.1-ubi9",
590
- "9.8.1-ubuntu-jdk17",
592
+ "9.14.0-ubi9",
593
+ "9.12.12-ubi9",
594
+ "9.4.5-jdk11",
595
+ "9.12.4-ubi9",
596
+ "9.12.4-ubi9-jdk17",
597
+ "9.14.0-ubi9-jdk17",
598
+ "9.7.0-jdk17",
591
599
  "9.4.19-ubuntu-jdk11",
592
- "9.8.1-jdk17",
593
- "9.4.11-jdk11",
594
- "9.12.14-jdk11",
600
+ "9.4.11-ubuntu-jdk11",
601
+ "9.12.1-ubuntu-jdk11",
602
+ "9.12.6-ubuntu-jdk11",
603
+ "9.12.6-jdk11",
604
+ "9.9.1-ubi9",
605
+ "9.11.2-ubi9-jdk17",
595
606
  "9.7.0-jdk11",
607
+ "9.4.11-jdk11",
596
608
  "9.4.19",
597
- "9.4.19-jdk11",
598
609
  "9.4.11",
599
- "9.4.11-ubuntu-jdk11",
600
- "9.17.1-ubi9-jdk17",
601
- "ubi9",
602
- "9.9.1-ubi9",
610
+ "9.12.5-ubi9",
611
+ "9.12.1-jdk11",
612
+ "9.12.5-ubi9-jdk17",
613
+ "9.8.1-ubuntu-jdk17",
614
+ "9.7.0-ubuntu-jdk11",
615
+ "9.6.0-ubi9-jdk17",
616
+ "9.4.5-ubuntu-jdk11",
617
+ "9.7.0",
618
+ "9.4.5",
619
+ "9.17.0-ubi9",
620
+ "9.6.0-ubi9",
621
+ "9.17.0-ubi9-jdk17",
622
+ "9.12.13-ubi9-jdk17",
603
623
  "9.9.1-ubi9-jdk17",
604
- "10.2.1-ubi9-jdk17",
605
- "10.2.1-ubi9",
624
+ "10.3.0-ubi9",
625
+ "10.3.0-ubi9-jdk17",
626
+ "ubi9",
606
627
  "ubi9-jdk17",
607
- "9.11.3-ubi9-jdk17",
628
+ "9.14.1-ubi9-jdk17",
629
+ "9.14.1-ubi9",
630
+ "9.12.13-ubi9",
631
+ "9.9.2-ubi9-jdk17",
608
632
  "9.11.3-ubi9",
609
- "9.12.15-ubi9-jdk17",
610
- "9.12.15-ubi9",
611
- "9.12.7-ubi9-jdk17",
612
- "9.12.7-ubi9",
613
- "9.15.0-ubi9",
614
- "9.15.0-ubi9-jdk17",
615
- "9.17.2-ubi9-jdk17",
616
- "9.17.2-ubi9",
617
633
  "9.9.2-ubi9",
618
- "9.9.2-ubi9-jdk17",
619
- "9.7.0-ubi9-jdk17",
634
+ "9.11.3-ubi9-jdk17",
635
+ "9.12.6-ubi9-jdk17",
636
+ "9.17.1-ubi9",
637
+ "9.17.1-ubi9-jdk17",
638
+ "9.12.14-ubi9",
639
+ "9.12.6-ubi9",
640
+ "9.12.14-ubi9-jdk17",
620
641
  "9.7.0-ubi9",
621
- "9.12.8-ubi9",
622
- "9.15.1-ubi9-jdk17",
623
- "9.12.8-ubi9-jdk17",
624
- "9.15.1-ubi9",
625
- "9.17.3-ubi9",
626
- "9.12.0-ubi9",
627
- "9.12.0-ubi9-jdk17",
628
- "9.17.3-ubi9-jdk17",
629
- "9.10.0-ubi9",
630
- "9.10.0-ubi9-jdk17",
631
- "9.7.1-ubi9-jdk17",
632
- "9.7.1-ubi9",
642
+ "9.7.0-ubi9-jdk17",
643
+ "10.3.0-RC-ubuntu-jdk17",
644
+ "10.3.0-RC-jdk17",
645
+ "10.3.0-RC",
646
+ "10.3.0-RC-ubi9-jdk17",
647
+ "10.3.0-RC-ubi9",
633
648
  "10.3.0-EAP01-jdk17",
634
649
  "10.3.0-EAP01",
635
650
  "10.3.0-EAP01-ubuntu-jdk17",
@@ -2073,592 +2088,592 @@ var jira = [
2073
2088
  "8.8.0-RC02"
2074
2089
  ];
2075
2090
  var confluence = [
2076
- "8.5.18-jdk17",
2077
- "8.5-ubuntu-jdk17",
2078
- "8.5.18-ubuntu-jdk17",
2079
- "8.5",
2080
- "8.5-jdk17",
2081
- "8.5.18",
2082
- "8.5-jdk11",
2083
- "8.5.18-ubuntu-jdk11",
2084
- "8.5.18-jdk11",
2085
- "8.5-ubuntu-jdk11",
2086
- "7.19",
2087
- "7.19.30-ubuntu-jdk11",
2088
- "7.19-jdk11",
2089
- "7.19-ubuntu-jdk11",
2090
- "7.19.30-jdk11",
2091
- "7.19.30",
2092
- "8.5.18-ubi9-jdk17",
2093
- "8.5.18-ubi9",
2094
- "9.2.0-rc1-jdk21",
2095
- "9.2.0-rc1-ubuntu-jdk21",
2096
- "9.2.0-rc1",
2097
- "eap",
2098
- "9.2.0-rc1-jdk17",
2099
- "eap-jdk17",
2100
- "eap-ubuntu-jdk17",
2101
- "9.2.0-rc1-ubuntu-jdk17",
2102
- "9.2.0-rc1-ubi9-jdk17",
2103
- "9.2.0-rc1-ubi9",
2104
- "9.2.0-rc1-ubi9-jdk21",
2091
+ "8.9.0",
2092
+ "8.9.0-jdk17",
2093
+ "8.9.0-ubuntu-jdk17",
2094
+ "8.6.1-jdk17",
2095
+ "8.6.1",
2096
+ "8.6.1-ubuntu-jdk17",
2097
+ "8.9.7",
2105
2098
  "8.9.7-ubuntu-jdk17",
2106
2099
  "8.9.7-jdk17",
2107
- "8.9.7",
2100
+ "8.4.1",
2101
+ "8.4.1-jdk17",
2102
+ "8.4.1-ubuntu-jdk17",
2103
+ "8.5.16",
2104
+ "8.5.16-ubuntu-jdk17",
2105
+ "8.5.16-jdk17",
2106
+ "8.9.1-ubuntu-jdk17",
2107
+ "8.6",
2108
+ "8.9.1-jdk17",
2109
+ "8.6.2",
2110
+ "8.6.2-jdk17",
2111
+ "8.9.1",
2108
2112
  "8.6.2-ubuntu-jdk17",
2109
2113
  "8.6-ubuntu-jdk17",
2110
- "8.6.2-jdk17",
2111
- "8.6.2",
2112
2114
  "8.6-jdk17",
2113
- "8.6",
2115
+ "8.5.5-jdk17",
2116
+ "8.3.0-jdk17",
2117
+ "8.5.5-ubuntu-jdk17",
2118
+ "8.5.5",
2119
+ "8.3.0-ubuntu-jdk17",
2120
+ "8.3.0",
2114
2121
  "8",
2122
+ "8.9",
2123
+ "8-jdk17",
2124
+ "8.7-ubuntu-jdk11",
2125
+ "8.9.8-ubuntu-jdk17",
2115
2126
  "8.9-ubuntu-jdk17",
2127
+ "8.9.8-jdk17",
2128
+ "8.7.2-ubuntu-jdk11",
2116
2129
  "8-ubuntu-jdk17",
2117
2130
  "8.9-jdk17",
2118
- "8-jdk17",
2119
2131
  "8.9.8",
2120
- "8.9.8-jdk17",
2121
- "8.9.8-ubuntu-jdk17",
2122
- "8.9",
2123
- "8.7.1",
2124
- "8.7.1-ubuntu-jdk17",
2125
- "8.9.3-jdk11",
2126
- "8.7.1-jdk17",
2127
- "8.9.3-ubuntu-jdk11",
2128
2132
  "8.7-jdk11",
2129
2133
  "8.7.2-jdk11",
2130
- "8.7.2-ubuntu-jdk11",
2131
- "8.7-ubuntu-jdk11",
2132
- "7.19.24-ubuntu-jdk11",
2133
- "7.19.24",
2134
- "7.19.24-jdk11",
2135
- "8.5.16-ubuntu-jdk17",
2136
- "8.1.3",
2137
- "8.5.16-jdk17",
2138
- "8.5.8-jdk11",
2139
- "8.1.3-ubuntu-jdk11",
2140
- "7.19.9",
2141
- "8.9.1",
2142
- "8.9.1-ubuntu-jdk17",
2143
- "8.5.16",
2144
- "8.4.1-ubuntu-jdk17",
2145
- "8.4.1",
2146
- "8.1.3-jdk11",
2147
- "7.19.9-ubuntu-jdk11",
2148
- "9.0.1",
2149
- "8.5.8-ubuntu-jdk11",
2150
- "8.4.1-jdk17",
2151
- "7.19.9-jdk11",
2152
- "8.9.1-jdk17",
2153
- "9.0.1-ubuntu-jdk17",
2154
- "9.0.1-jdk17",
2155
2134
  "8.5.1",
2156
- "8.7.2-ubuntu-jdk17",
2157
- "8.3.0",
2158
2135
  "8.5.1-ubuntu-jdk17",
2159
- "8.7-ubuntu-jdk17",
2160
- "8.7",
2161
- "7.19.19-jdk11",
2162
- "7.19.19-ubuntu-jdk11",
2163
- "7.19.19",
2164
- "8.3.0-ubuntu-jdk17",
2165
- "8.3.0-jdk17",
2166
2136
  "8.5.1-jdk17",
2167
- "8.7.2-jdk17",
2168
- "8.7-jdk17",
2169
- "8.7.2",
2170
- "8.0.1",
2171
- "8.0.1-ubuntu-jdk11",
2172
- "8.9.4-jdk11",
2173
- "8.5.2-jdk11",
2174
- "8.9.4-ubuntu-jdk11",
2175
- "8.5.6-jdk17",
2137
+ "8.5.8-ubuntu-jdk11",
2138
+ "8.9.2",
2139
+ "8.9.3-jdk11",
2140
+ "8.4.2-jdk17",
2141
+ "8.9.3-ubuntu-jdk11",
2142
+ "8.5.17-jdk17",
2143
+ "8.4.2",
2144
+ "8.5.10-ubuntu-jdk17",
2145
+ "8.5.17-ubuntu-jdk17",
2146
+ "8.4.2-ubuntu-jdk17",
2147
+ "8.5.17",
2148
+ "8.1.3",
2149
+ "8.1.3-ubuntu-jdk11",
2150
+ "8.1.3-jdk11",
2151
+ "8.5.8-jdk11",
2152
+ "8.9.2-ubuntu-jdk17",
2153
+ "8.9.2-jdk17",
2176
2154
  "8.5.6-ubuntu-jdk17",
2177
- "8.0.1-jdk11",
2178
2155
  "8.5.6",
2156
+ "8.5.12-jdk11",
2157
+ "8.3.1-jdk17",
2158
+ "8.5.12-ubuntu-jdk11",
2159
+ "8.5.6-jdk17",
2160
+ "8.3.1-ubuntu-jdk17",
2161
+ "8.3.1",
2162
+ "7.19",
2163
+ "7.19.14-jdk11",
2164
+ "7.19.30",
2165
+ "7.19.30-jdk11",
2166
+ "7.19.30-ubuntu-jdk11",
2167
+ "7.19-ubuntu-jdk11",
2168
+ "7.19-jdk11",
2169
+ "7.19.14-ubuntu-jdk11",
2170
+ "8.5.2-jdk11",
2171
+ "7.19.14",
2179
2172
  "8.5.2-ubuntu-jdk11",
2180
- "7.19.3-jdk11",
2181
- "7.19.3-ubuntu-jdk11",
2182
- "7.19.3",
2183
- "8.4-ubuntu-jdk11",
2173
+ "8.5.10",
2184
2174
  "7.19.25-jdk11",
2185
- "8.4.5-ubuntu-jdk11",
2175
+ "8.7.1-ubuntu-jdk17",
2186
2176
  "7.19.25-ubuntu-jdk11",
2177
+ "7.19.9",
2178
+ "7.19.9-ubuntu-jdk11",
2179
+ "7.19.9-jdk11",
2180
+ "8.9.4-jdk11",
2181
+ "8.5.10-jdk17",
2182
+ "8.9.4-ubuntu-jdk11",
2183
+ "7.19.2-ubuntu-jdk11",
2184
+ "8.7.1",
2187
2185
  "7.19.25",
2188
- "8.4-jdk11",
2186
+ "8.7.1-jdk17",
2187
+ "7.19.2-jdk11",
2188
+ "7.19.2",
2189
+ "8.4.3-jdk17",
2189
2190
  "8.1-ubuntu-jdk11",
2191
+ "8.4.5-ubuntu-jdk11",
2190
2192
  "8.1",
2191
- "8.1.4-jdk11",
2193
+ "8.0.1",
2194
+ "8.0.1-jdk11",
2195
+ "8.0.1-ubuntu-jdk11",
2196
+ "9.0.1-jdk17",
2197
+ "9.0.1-ubuntu-jdk17",
2198
+ "9.0.1",
2192
2199
  "8.8.0-jdk11",
2193
- "8.1.4-ubuntu-jdk11",
2200
+ "8.8.0-ubuntu-jdk11",
2201
+ "8.3.2-ubuntu-jdk17",
2202
+ "8.5-ubuntu-jdk17",
2203
+ "8.5.18-jdk17",
2204
+ "8.4.3-ubuntu-jdk17",
2205
+ "8.5-jdk17",
2206
+ "9.0.1-ubi9",
2207
+ "8.4.3",
2208
+ "8.5.9-jdk11",
2209
+ "8.4-jdk11",
2210
+ "8.5.18-ubuntu-jdk17",
2211
+ "8.5.9-ubuntu-jdk11",
2194
2212
  "8.1.4",
2213
+ "9.0.1-ubi9-jdk17",
2195
2214
  "8.4.5-jdk11",
2215
+ "8.5.18",
2216
+ "7.19.15",
2217
+ "8.5",
2196
2218
  "8.1-jdk11",
2197
- "8.5.17",
2198
- "8.8.0-ubuntu-jdk11",
2199
- "8.5.17-ubuntu-jdk17",
2200
- "8.5.17-jdk17",
2201
- "8.5.9-ubuntu-jdk11",
2219
+ "8.4-ubuntu-jdk11",
2220
+ "8.1.4-jdk11",
2221
+ "8.1.4-ubuntu-jdk11",
2222
+ "8.9.3",
2223
+ "8.5.7-jdk17",
2224
+ "8.7.2-jdk17",
2225
+ "8.9.3-jdk17",
2226
+ "8.9.3-ubuntu-jdk17",
2202
2227
  "7.20.0-jdk11",
2203
- "7.20.0",
2204
- "8.5.9-jdk11",
2205
- "7.20.0-ubuntu-jdk11",
2206
- "8.5.12-ubuntu-jdk11",
2207
- "8.9.2",
2208
- "8.9.2-jdk17",
2209
- "8.4.2-ubuntu-jdk17",
2210
- "8.9.2-ubuntu-jdk17",
2211
- "8.4.2-jdk17",
2212
- "8.4.2",
2213
- "8.5.12-jdk11",
2214
- "9.0.2",
2215
- "9.0.2-ubuntu-jdk17",
2216
- "8.6.1-ubi9-jdk17",
2217
- "9.0.2-jdk17",
2218
- "8.3.1-ubuntu-jdk17",
2219
- "8.4.0-ubuntu-jdk11",
2220
- "8.3.1-jdk17",
2221
- "8.3.1",
2228
+ "8.3.2",
2222
2229
  "8.3.0-jdk11",
2223
- "8.4.0-jdk11",
2224
- "8.6.1-ubi9",
2225
- "8.5.10-ubuntu-jdk17",
2226
- "8.3.0-ubuntu-jdk11",
2227
- "8.5.10",
2228
- "9.0.2-ubi9-jdk17",
2229
- "9.0.2-ubi9",
2230
- "8.0.2",
2231
- "8.9.6-ubi9",
2232
- "8.0.2-jdk11",
2233
- "8.5.10-jdk17",
2234
- "8.8.0-ubi9",
2235
- "8.8.0-ubi9-jdk17",
2236
- "7.19.14-jdk11",
2237
- "8.9.6-ubi9-jdk17",
2238
- "8.0.2-ubuntu-jdk11",
2239
- "7.19.14",
2240
- "7.19.2-jdk11",
2241
- "7.19.2",
2242
- "7.19.14-ubuntu-jdk11",
2243
- "7.19.2-ubuntu-jdk11",
2244
- "8.5.3-ubuntu-jdk11",
2230
+ "8.3.2-jdk17",
2231
+ "8.5.14-ubuntu-jdk11",
2232
+ "7.19.15-ubuntu-jdk11",
2233
+ "7.19.0",
2245
2234
  "8.5.7-ubuntu-jdk17",
2246
- "8.5.3-jdk11",
2247
- "8.9.5-jdk11",
2248
2235
  "8.5.7",
2249
- "8.5.7-jdk17",
2250
- "8.9.5-ubuntu-jdk11",
2251
- "8.8.0-ubuntu-jdk17",
2252
- "8.8.0-jdk17",
2253
- "7.19.4-jdk11",
2254
- "7.19.4",
2255
- "9.0.1-ubuntu-jdk21",
2236
+ "8.5.11-jdk17",
2237
+ "7.19.20-jdk11",
2238
+ "8.5.14-jdk11",
2239
+ "7.19.15-jdk11",
2240
+ "8.3.0-ubuntu-jdk11",
2241
+ "7.19.20-ubuntu-jdk11",
2242
+ "8.5.11",
2243
+ "8.5.11-ubuntu-jdk17",
2256
2244
  "7.19.4-ubuntu-jdk11",
2257
- "9.0.1-jdk21",
2258
- "7.19.0",
2259
- "8.8.0",
2260
- "7.19.0-jdk11",
2245
+ "7.20.0-ubuntu-jdk11",
2261
2246
  "7.19.0-ubuntu-jdk11",
2262
- "7.19.26-jdk11",
2247
+ "8.7.2",
2248
+ "7.19.20",
2249
+ "8.0.2",
2250
+ "9.0.2-ubi9-jdk17",
2251
+ "8.9.5-ubuntu-jdk11",
2252
+ "7.20.0",
2253
+ "8.9.5-jdk11",
2254
+ "8.7-jdk17",
2255
+ "7.19.0-jdk11",
2256
+ "8.7.2-ubuntu-jdk17",
2263
2257
  "7.19.26-ubuntu-jdk11",
2258
+ "8.5.3-jdk11",
2264
2259
  "7.19.26",
2265
- "8.8-ubuntu-jdk11",
2260
+ "8.0.2-ubuntu-jdk11",
2261
+ "8.7",
2262
+ "8.5.3-ubuntu-jdk11",
2263
+ "7.19.26-jdk11",
2264
+ "8.7-ubuntu-jdk17",
2265
+ "8.0.2-jdk11",
2266
+ "9.0.2-jdk17",
2267
+ "8.4.4-ubuntu-jdk17",
2268
+ "9.0.2",
2269
+ "7.19.4",
2270
+ "8.6.0-ubuntu-jdk11",
2271
+ "8.7.2-ubi9-jdk17",
2266
2272
  "8.8.1-jdk11",
2267
- "8.8.1-ubuntu-jdk11",
2268
- "8.8-jdk11",
2273
+ "8.8-ubuntu-jdk11",
2274
+ "9.0.2-ubuntu-jdk17",
2275
+ "7.19.4-jdk11",
2276
+ "8.9.1-ubi9",
2277
+ "8.9.1-ubi9-jdk17",
2278
+ "8.4.0-jdk11",
2279
+ "8.4.0-ubuntu-jdk11",
2280
+ "8.4.4",
2269
2281
  "8.6.0-jdk11",
2270
- "8.4.3-ubuntu-jdk17",
2271
- "8.6.0-ubuntu-jdk11",
2272
- "8.4.3-jdk17",
2273
- "8.4.3",
2274
- "8.5.14-ubuntu-jdk11",
2275
- "8.5.14-jdk11",
2276
- "7.20.1-ubuntu-jdk11",
2277
- "7.20.1-jdk11",
2278
- "8.3.2-jdk17",
2279
- "8.9.3",
2280
- "7.20.1",
2281
- "8.2.0-jdk11",
2282
- "8.3.2",
2283
- "9.0.3",
2284
- "9.0.3-ubuntu-jdk17",
2285
- "8.3.2-ubuntu-jdk17",
2286
- "9.0-jdk17",
2287
- "9.0-ubuntu-jdk17",
2282
+ "8.5.8",
2283
+ "8.8-jdk11",
2284
+ "8.8.1-ubuntu-jdk11",
2285
+ "8.5.2-ubuntu-jdk17",
2286
+ "8.5.2-jdk17",
2288
2287
  "8.3.1-jdk11",
2289
- "8.2.0",
2290
- "8.4.1-ubuntu-jdk11",
2291
- "8.9.3-jdk17",
2292
- "8.9.3-ubuntu-jdk17",
2293
- "8.9.2-ubi9-jdk17",
2294
- "8.3.1-ubuntu-jdk11",
2288
+ "8.4.4-jdk17",
2289
+ "8.9.4",
2290
+ "7.19.21-ubuntu-jdk11",
2291
+ "8.5.2",
2292
+ "8.3.3",
2293
+ "9.0.2-ubi9",
2294
+ "8.9.4-ubuntu-jdk17",
2295
+ "8.9.4-jdk17",
2296
+ "9.0.1-ubuntu-jdk21",
2297
+ "8.5.12-ubuntu-jdk17",
2298
+ "8.5.12-jdk17",
2299
+ "8.5.15-ubuntu-jdk11",
2300
+ "8.5.12",
2301
+ "8.7.2-ubi9",
2302
+ "8.5.15-jdk11",
2303
+ "8.5.0-jdk11",
2304
+ "8.3.3-jdk17",
2295
2305
  "8.2.0-ubuntu-jdk11",
2296
- "8.4.1-jdk11",
2306
+ "8.3.3-ubuntu-jdk17",
2307
+ "8.3.1-ubuntu-jdk11",
2308
+ "8.5.8-jdk17",
2309
+ "8.2.0",
2310
+ "8.2.0-jdk11",
2311
+ "8.9.5-ubi9-jdk17",
2312
+ "7.19.16-ubuntu-jdk11",
2313
+ "7.19.21",
2314
+ "8.9.5-ubi9",
2315
+ "8.5.8-ubuntu-jdk17",
2316
+ "7.19.16",
2317
+ "7.19.16-jdk11",
2318
+ "8.5.4-ubuntu-jdk11",
2319
+ "8.5.0-ubuntu-jdk11",
2320
+ "9.0.1-jdk21",
2321
+ "7.20.1",
2322
+ "7.20.1-ubuntu-jdk11",
2323
+ "7.19.1-ubuntu-jdk11",
2324
+ "8.6.0-ubi9-jdk17",
2297
2325
  "8.0.3",
2326
+ "7.19.21-jdk11",
2298
2327
  "8.0.3-jdk11",
2328
+ "7.19.27",
2329
+ "7.20.1-jdk11",
2299
2330
  "8.0.3-ubuntu-jdk11",
2300
- "9.0",
2301
- "9.0.3-jdk17",
2302
- "8.5.11-jdk17",
2303
- "8.5.4-jdk11",
2304
- "8.5.2-jdk17",
2305
- "8.5.4-ubuntu-jdk11",
2306
- "8.5.11",
2307
- "7.19.15",
2308
- "8.5.15-ubi9-jdk17",
2309
- "7.19.15-ubuntu-jdk11",
2310
2331
  "8.5.15-ubi9",
2311
- "7.19.20",
2312
- "7.19.20-ubuntu-jdk11",
2313
- "8.5.0-jdk11",
2314
- "8.5.0-ubuntu-jdk11",
2315
- "8.9.2-ubi9",
2316
- "7.19.20-jdk11",
2317
- "8.5.2",
2318
- "8.5.8",
2319
- "8.5.11-ubuntu-jdk17",
2320
- "8.5.8-ubuntu-jdk17",
2321
- "8.5.10-ubi9",
2322
- "7.19.15-jdk11",
2323
- "8.5.7-ubi9",
2324
- "8.5.2-ubuntu-jdk17",
2325
- "8.5.7-ubi9-jdk17",
2332
+ "8.5.15-ubi9-jdk17",
2333
+ "9.0.3-ubi9-jdk21",
2334
+ "8.4.1-ubuntu-jdk11",
2335
+ "8.6.1-ubuntu-jdk11",
2336
+ "8.5.4-jdk11",
2337
+ "7.19.1",
2326
2338
  "7.19.5-ubuntu-jdk11",
2339
+ "8.8.0-jdk17",
2340
+ "7.19.27-jdk11",
2341
+ "7.19.27-ubuntu-jdk11",
2342
+ "9.0",
2343
+ "9.0.3-jdk17",
2344
+ "7.19.1-jdk11",
2345
+ "8.4.5-ubuntu-jdk17",
2327
2346
  "7.19.5",
2328
- "7.19.1",
2329
- "8.5.8-jdk17",
2330
- "8.5.10-ubi9-jdk17",
2331
- "8.9.7-ubi9-jdk17",
2347
+ "9.0-ubuntu-jdk17",
2348
+ "8.3.2-ubuntu-jdk11",
2349
+ "8.2.1",
2350
+ "9.0.3-ubuntu-jdk17",
2351
+ "8.4.1-jdk11",
2332
2352
  "8.9.6-ubuntu-jdk11",
2333
- "9.0.3-ubi9",
2334
- "7.19.1-ubuntu-jdk11",
2335
- "8.9.7-ubi9",
2336
- "9.0.2-ubuntu-jdk21",
2337
- "9.0.2-jdk21",
2338
- "8.8",
2339
- "8.8-ubuntu-jdk17",
2340
- "7.19.27",
2353
+ "9.0-jdk17",
2354
+ "9.0.3",
2355
+ "7.19.5-jdk11",
2356
+ "8.9.0-jdk11",
2357
+ "8.9.0-ubuntu-jdk11",
2358
+ "8.6.1-jdk11",
2359
+ "8.6.0-ubi9",
2360
+ "8.5.16-ubuntu-jdk11",
2361
+ "8.9.6-ubi9-jdk17",
2341
2362
  "8.9.6-jdk11",
2342
- "7.19.1-jdk11",
2363
+ "8.3.4",
2364
+ "8.5.5-jdk11",
2365
+ "8.5.10-ubi9",
2366
+ "8.4-jdk17",
2367
+ "8.2.1-jdk11",
2368
+ "8.5.10-ubi9-jdk17",
2369
+ "8.4.5",
2370
+ "8.4",
2371
+ "8.4.5-jdk17",
2372
+ "8.9.5",
2373
+ "8.0.4-jdk11",
2374
+ "8.0-ubuntu-jdk11",
2375
+ "8.8.0",
2376
+ "8.5.3-jdk17",
2377
+ "7.20.2",
2378
+ "7.19.17-ubuntu-jdk11",
2379
+ "8.5.5-ubuntu-jdk11",
2380
+ "9.0.2-ubuntu-jdk21",
2381
+ "8.9.6-ubi9",
2382
+ "8.3-ubuntu-jdk17",
2343
2383
  "9.0.3-ubi9-jdk17",
2344
- "8.4.4",
2345
- "7.19.5-jdk11",
2346
- "8.2.1-jdk11",
2347
- "8.3.3",
2348
- "8.0-ubuntu-jdk11",
2349
- "8.6.2-ubi9-jdk17",
2350
- "8.6.2-ubi9",
2351
- "8.8.1-jdk17",
2352
- "8.5.15-ubuntu-jdk11",
2353
- "8.8.1-ubuntu-jdk17",
2384
+ "8.5.6-ubi9",
2385
+ "8.8.0-ubuntu-jdk17",
2386
+ "8.4-ubuntu-jdk17",
2387
+ "8.3-jdk17",
2388
+ "8.5.6-ubi9-jdk17",
2389
+ "8.2.1-ubuntu-jdk11",
2354
2390
  "8.3.2-jdk11",
2355
- "8.8.1-ubi9",
2356
- "8.8.1-ubi9-jdk17",
2357
- "9.0.3-ubi9-jdk21",
2391
+ "latest",
2392
+ "8.3.4-ubuntu-jdk17",
2393
+ "8.5.16-jdk11",
2394
+ "8.8.0-ubi9",
2395
+ "8.3.4-jdk17",
2396
+ "7.19.6-ubuntu-jdk11",
2397
+ "8.3",
2398
+ "8.9.5-jdk17",
2399
+ "8.9.2-ubi9",
2400
+ "9.0.3-ubi9",
2401
+ "9.0.2-jdk21",
2402
+ "7.19.28-ubuntu-jdk11",
2403
+ "8.5.14-jdk17",
2404
+ "8.4.2-jdk11",
2405
+ "8.9.2-ubi9-jdk17",
2406
+ "8.6.1-ubi9-jdk17",
2407
+ "8.5.1-ubuntu-jdk11",
2408
+ "8.9.5-ubuntu-jdk17",
2358
2409
  "8.8-jdk17",
2359
- "7.19.27-ubuntu-jdk11",
2360
- "8.5.12-jdk17",
2410
+ "8.5.14-ubuntu-jdk17",
2411
+ "7.19.10",
2361
2412
  "8.5.1-jdk11",
2362
- "8.3.3-jdk17",
2363
- "8.4.4-ubuntu-jdk17",
2364
- "7.20.2-jdk11",
2365
- "8.5.15-jdk11",
2366
- "8.6.1-jdk11",
2367
- "8.8.1",
2368
- "7.20.2",
2369
- "7.20.2-ubuntu-jdk11",
2370
- "8.5.5-jdk11",
2371
- "8.3.2-ubuntu-jdk11",
2372
- "8.4.4-jdk17",
2373
- "7.19.27-jdk11",
2374
- "8.3.3-ubuntu-jdk17",
2375
- "8.6.1-ubuntu-jdk11",
2376
- "latest",
2377
- "8.5.12",
2378
- "8.9.4",
2379
- "8.0.4-ubuntu-jdk11",
2380
- "8.2.1-ubuntu-jdk11",
2381
- "8.0.4",
2382
2413
  "8.0",
2383
- "8.5.12-ubuntu-jdk17",
2384
- "8.2.1",
2385
- "7.19.21-ubuntu-jdk11",
2386
- "8.0.4-jdk11",
2387
2414
  "8.0-jdk11",
2388
- "7.19.21",
2415
+ "7.20.2-jdk11",
2416
+ "8.0.4",
2417
+ "8.0.4-ubuntu-jdk11",
2418
+ "7.20.2-ubuntu-jdk11",
2419
+ "7.19.17-jdk11",
2389
2420
  "8.4.2-ubuntu-jdk11",
2390
- "8.5.9-ubuntu-jdk17",
2391
- "8.5.5-ubuntu-jdk11",
2392
- "8.4.2-jdk11",
2393
- "8.5.1-ubuntu-jdk11",
2394
- "8.9.4-jdk17",
2395
- "8.9.4-ubuntu-jdk17",
2396
- "7.19.21-jdk11",
2421
+ "8.5.14",
2422
+ "7.19.10-jdk11",
2423
+ "8.6.1-ubi9",
2397
2424
  "7.19.6",
2398
- "7.19.10",
2425
+ "8.5.9-ubuntu-jdk17",
2426
+ "7.19.17",
2399
2427
  "8.5.9",
2400
- "8.5.16-ubi9",
2401
- "7.19.10-jdk11",
2402
- "8.9.0-jdk11",
2403
- "8.9.0-ubuntu-jdk11",
2404
- "8.9.3-ubi9-jdk17",
2405
- "8.5.3",
2406
- "8.9.3-ubi9",
2428
+ "8.5.9-jdk17",
2407
2429
  "7.19.10-ubuntu-jdk11",
2408
- "8.9.7-jdk11",
2430
+ "8.5.3",
2431
+ "7.19.22",
2432
+ "7.19.22-jdk11",
2433
+ "8.6.2-ubuntu-jdk11",
2434
+ "7.19.6-jdk11",
2435
+ "8.6-ubuntu-jdk11",
2436
+ "7.19.28-jdk11",
2437
+ "7.19.28",
2409
2438
  "8.5.16-ubi9-jdk17",
2410
- "8.5.9-jdk17",
2411
- "8.5.3-jdk17",
2412
- "7.19.16-ubuntu-jdk11",
2413
- "7.19.16",
2414
- "9.0.3-jdk21",
2415
2439
  "8.5.3-ubuntu-jdk17",
2416
- "7.19.6-ubuntu-jdk11",
2417
- "8.5.8-ubi9",
2418
- "7.19.16-jdk11",
2419
- "9-jdk21",
2440
+ "8.9.7-jdk11",
2441
+ "8.8.0-ubi9-jdk17",
2442
+ "7.19.22-ubuntu-jdk11",
2443
+ "8.5.16-ubi9",
2444
+ "8.5.11-ubi9",
2445
+ "8.6-jdk11",
2420
2446
  "8.9.7-ubuntu-jdk11",
2421
- "8.5.8-ubi9-jdk17",
2422
- "7.19.28-jdk11",
2423
- "8.4.5-ubuntu-jdk17",
2424
- "7.19.6-jdk11",
2425
- "8.4.5-jdk17",
2426
- "8.4",
2427
- "9.1.0-jdk17",
2447
+ "8.6.2-jdk11",
2448
+ "8.8.1-ubuntu-jdk17",
2449
+ "8.8-ubuntu-jdk17",
2450
+ "8.8.1",
2428
2451
  "8.5.11-ubi9-jdk17",
2429
- "7.20-ubuntu-jdk11",
2430
- "7-ubuntu-jdk11",
2431
- "7.19.28-ubuntu-jdk11",
2432
- "8.5.11-ubi9",
2433
- "7.20.3-jdk11",
2434
- "8.4-ubuntu-jdk17",
2435
- "7.19.28",
2436
- "8.4.5",
2437
- "8.6.2-ubuntu-jdk11",
2438
- "9.0-jdk21",
2439
- "9.0-ubuntu-jdk21",
2440
- "9.1.1",
2441
- "8.5.16-ubuntu-jdk11",
2442
- "jdk21",
2443
- "9",
2444
- "9.1",
2445
- "8.1.3-ubuntu-jdk17",
2446
- "8.9.8-ubi9-jdk17",
2447
- "8.2.2-ubuntu-jdk17",
2448
- "8.2.2-jdk11",
2449
- "8.5.16-jdk11",
2450
- "8.4-jdk17",
2451
- "9.0.3-ubuntu-jdk21",
2452
+ "8.8.1-jdk17",
2453
+ "8.8",
2452
2454
  "9.1.0-ubuntu-jdk17",
2453
- "9.1.0",
2455
+ "8.9.6",
2456
+ "8.9.6-ubuntu-jdk17",
2457
+ "8.1.3-ubuntu-jdk17",
2454
2458
  "9.1-jdk21",
2455
- "9.1.1-jdk21",
2456
- "9.1-ubuntu-jdk21",
2457
- "9-ubuntu-jdk21",
2458
- "ubuntu-jdk21",
2459
+ "8.5.17-jdk11",
2460
+ "8.5.7-ubi9-jdk17",
2461
+ "8.5.7-ubi9",
2462
+ "7",
2463
+ "8.5.10-ubuntu-jdk11",
2464
+ "8.2.2",
2465
+ "8.5.15-ubuntu-jdk17",
2466
+ "8.2.2-ubuntu-jdk11",
2467
+ "8.5.15-jdk17",
2459
2468
  "9.1.1-ubuntu-jdk21",
2469
+ "9-ubuntu-jdk21",
2470
+ "7-ubuntu-jdk11",
2471
+ "9.1.0-jdk17",
2472
+ "8.2.2-jdk11",
2460
2473
  "8.1.3-jdk17",
2461
- "8.6.2-jdk11",
2462
- "7-jdk11",
2463
- "8.6-jdk11",
2464
- "8.7.1-ubi9-jdk17",
2465
- "8.5.10-jdk11",
2466
- "7.20-jdk11",
2467
- "8.4.3-ubuntu-jdk11",
2468
- "8.4.3-jdk11",
2469
- "8.9.8-ubi9",
2470
- "8.7.1-ubi9",
2474
+ "8.3.3-ubuntu-jdk11",
2471
2475
  "8.9.1-jdk11",
2472
- "8.5.10-ubuntu-jdk11",
2473
- "8.2.2-ubuntu-jdk11",
2474
- "8.2.2",
2475
- "8.3.4-jdk17",
2476
+ "9",
2477
+ "8.5.17-ubuntu-jdk11",
2478
+ "8.3.3-jdk11",
2479
+ "7.19.7-jdk11",
2480
+ "9.1.1-jdk21",
2481
+ "9.1-ubuntu-jdk21",
2482
+ "jdk21",
2483
+ "9.1",
2484
+ "ubuntu-jdk21",
2485
+ "9-jdk21",
2476
2486
  "8.9.1-ubuntu-jdk11",
2477
- "8.3",
2478
- "8.3.4",
2479
- "7",
2480
- "8.9.0",
2481
- "8.9.0-ubuntu-jdk17",
2487
+ "8.0.3-jdk17",
2488
+ "8.5.15",
2489
+ "9.1.0-jdk21",
2490
+ "8.2.2-ubuntu-jdk17",
2491
+ "8.9.6-jdk17",
2492
+ "8.2.2-jdk17",
2493
+ "7.20-ubuntu-jdk11",
2494
+ "8.0.3-ubuntu-jdk17",
2495
+ "9.1.1",
2482
2496
  "7.20.3-ubuntu-jdk11",
2483
- "8.9.0-jdk17",
2484
- "8.6-ubuntu-jdk11",
2497
+ "7-jdk11",
2485
2498
  "7.20.3",
2486
- "9.1.0-ubi9-jdk17",
2499
+ "7.20-jdk11",
2500
+ "7.20.3-jdk11",
2501
+ "7.19.7",
2502
+ "8.6.0",
2503
+ "9.0-jdk21",
2487
2504
  "7.20",
2488
- "8.1.0",
2489
- "8.3.3-ubuntu-jdk11",
2505
+ "8.6.2-ubi9-jdk17",
2506
+ "9.0.3-ubuntu-jdk21",
2507
+ "9.0-ubuntu-jdk21",
2508
+ "8.5.10-jdk11",
2490
2509
  "9.1.0-ubuntu-jdk21",
2491
- "8.0.3-ubuntu-jdk17",
2492
- "8.9.5-jdk17",
2493
- "8.5.14",
2494
- "9.1.0-jdk21",
2495
- "8.5.14-ubuntu-jdk17",
2496
- "7.19.22-jdk11",
2497
- "8.1.0-ubuntu-jdk11",
2498
- "9.1.0-ubi9-jdk21",
2499
- "8.5.4-ubuntu-jdk17",
2500
- "8.3-ubuntu-jdk17",
2501
- "8.1.0-jdk11",
2502
- "8.5.6-jdk11",
2503
- "8.2.2-jdk17",
2504
- "8.3-jdk17",
2505
- "8.3.4-ubuntu-jdk17",
2506
- "9.1.0-ubi9",
2507
- "8.9.5",
2508
- "8.9.5-ubuntu-jdk17",
2509
- "7.19.17",
2510
- "7.19.17-ubuntu-jdk11",
2511
- "8.5.4",
2510
+ "9.1.0",
2511
+ "8.6.0-ubuntu-jdk17",
2512
+ "8.4.3-ubuntu-jdk11",
2513
+ "7.19.29-jdk11",
2514
+ "8.2.0-jdk17",
2515
+ "7.19.11-ubuntu-jdk11",
2516
+ "8.4.0",
2517
+ "8.5.6-jdk11",
2512
2518
  "8.5.6-ubuntu-jdk11",
2513
- "8.5.12-ubi9-jdk17",
2514
- "8.6.0-ubuntu-jdk17",
2515
- "8.9.0-ubi9-jdk17",
2516
- "8.3.3-jdk11",
2517
- "8.9.4-ubi9",
2518
- "8.9.0-ubi9",
2519
- "8.9.4-ubi9-jdk17",
2520
- "7.19.22-ubuntu-jdk11",
2521
- "8.0.3-jdk17",
2522
- "8.5.17-ubi9",
2523
- "7.19.22",
2519
+ "8.5.0-jdk17",
2520
+ "8.4.3-jdk11",
2524
2521
  "8.1.0-jdk17",
2522
+ "8.2.0-ubuntu-jdk17",
2523
+ "8.5.0-ubuntu-jdk17",
2524
+ "9.0.3-jdk21",
2525
2525
  "8.6.0-jdk17",
2526
- "8.5.17-ubi9-jdk17",
2527
- "7.19.17-jdk11",
2528
- "8.5.4-jdk17",
2529
- "8.5.9-ubi9",
2526
+ "7.19.11",
2527
+ "8.4.0-ubuntu-jdk17",
2530
2528
  "7.19.11-jdk11",
2531
- "8.5.14-jdk17",
2532
- "8.5.12-ubi9",
2533
- "8.2.0-ubuntu-jdk17",
2534
- "9.0.1-ubi9-jdk21",
2535
- "7.19.7",
2536
- "7.19.11-ubuntu-jdk11",
2537
- "7.19.7-jdk11",
2538
- "8.5.9-ubi9-jdk17",
2539
- "8.6.0",
2529
+ "8.5.4",
2530
+ "7.19.23-jdk11",
2531
+ "7.19.18-ubuntu-jdk11",
2532
+ "8.5.4-ubuntu-jdk17",
2533
+ "8.9.7-ubi9-jdk17",
2534
+ "8.4.0-jdk17",
2540
2535
  "7.19.7-ubuntu-jdk11",
2541
- "8.1.0-ubuntu-jdk17",
2542
- "7.19.11",
2543
- "9.0.1-ubi9",
2544
- "8.2.0-jdk17",
2545
- "9-jdk17",
2546
- "9.1.1-ubuntu-jdk17",
2547
- "8.9.8-ubuntu-jdk11",
2548
- "8-ubuntu-jdk11",
2549
- "ubuntu-jdk17",
2550
- "8.9.8-jdk11",
2551
- "9.1-ubuntu-jdk17",
2552
- "8.9-ubuntu-jdk11",
2553
- "9.1.1-jdk17",
2554
- "9-ubuntu-jdk17",
2555
- "9.1-jdk17",
2556
- "8.9-jdk11",
2557
- "8.1.4-ubuntu-jdk17",
2536
+ "7.19.18-jdk11",
2537
+ "7.19.23-ubuntu-jdk11",
2538
+ "8.1.0-ubuntu-jdk11",
2539
+ "8.5.0",
2540
+ "7.19.18",
2558
2541
  "8.1-jdk17",
2559
- "8.2-jdk17",
2560
- "7.19.29-jdk11",
2561
- "8.2.3-jdk11",
2562
- "8-jdk11",
2563
- "jdk17",
2564
- "8.2.3-ubuntu-jdk17",
2542
+ "8.1.0-ubuntu-jdk17",
2543
+ "8.9.3-ubi9-jdk17",
2544
+ "7.19.23",
2545
+ "9.1.0-ubi9-jdk17",
2546
+ "8.9.3-ubi9",
2547
+ "8.5.4-jdk17",
2548
+ "9.1.0-ubi9",
2549
+ "8.6.2-ubi9",
2550
+ "8.9.7-ubi9",
2551
+ "9.1.0-ubi9-jdk21",
2552
+ "8.0.0-ubuntu-jdk17",
2553
+ "8.0.0-jdk17",
2565
2554
  "7.19.29-ubuntu-jdk11",
2566
- "8.2-ubuntu-jdk17",
2555
+ "8.1.0-jdk11",
2567
2556
  "7.19.29",
2557
+ "8.1.0",
2558
+ "8.2-jdk17",
2559
+ "8.5.17-ubi9",
2568
2560
  "8.1-ubuntu-jdk17",
2561
+ "9.0.1-ubi9-jdk21",
2562
+ "8.8.1-ubi9",
2563
+ "8.9.8-jdk11",
2564
+ "8-ubuntu-jdk11",
2565
+ "8.8.1-ubi9-jdk17",
2566
+ "8.5.8-ubi9-jdk17",
2567
+ "8.2.3-ubuntu-jdk17",
2568
+ "8.1.4-ubuntu-jdk17",
2569
2569
  "8.1.4-jdk17",
2570
+ "8.5.11-ubuntu-jdk11",
2571
+ "9.1.1-ubuntu-jdk17",
2570
2572
  "8.2-ubuntu-jdk11",
2571
- "8.5.17-ubuntu-jdk11",
2572
- "7.19.23-ubuntu-jdk11",
2573
- "8.9.6",
2574
- "8.2.3-jdk17",
2573
+ "8.9-jdk11",
2574
+ "8-jdk11",
2575
+ "8.2.3-jdk11",
2575
2576
  "8.2.3",
2576
- "8.0.1-ubuntu-jdk17",
2577
- "8.2.3-ubuntu-jdk11",
2578
- "8.0-jdk17",
2579
- "8.0.4-jdk17",
2580
- "8.5.17-jdk11",
2581
2577
  "8.2",
2582
- "8.2-jdk11",
2583
- "8.3.4-ubuntu-jdk11",
2584
- "8.7.2-ubi9",
2585
- "8.7.2-ubi9-jdk17",
2586
- "8.9.6-jdk17",
2587
- "8.3-ubuntu-jdk11",
2588
- "8.3-jdk11",
2589
- "8.4.4-jdk11",
2578
+ "8.2-ubuntu-jdk17",
2579
+ "8.5-ubuntu-jdk11",
2590
2580
  "8.0-ubuntu-jdk17",
2581
+ "7.19.19-ubuntu-jdk11",
2582
+ "8.5.18-jdk11",
2583
+ "8.9.8-ubuntu-jdk11",
2584
+ "8.2.3-jdk17",
2585
+ "8.9-ubuntu-jdk11",
2586
+ "8.5.17-ubi9-jdk17",
2591
2587
  "8.0.4-ubuntu-jdk17",
2592
- "9.1.1-ubi9",
2593
- "9.1.1-ubi9-jdk21",
2594
- "8.3.4-jdk11",
2595
- "ubi9-jdk21",
2596
- "8.5.15-jdk17",
2597
- "8.5.15-ubuntu-jdk17",
2598
- "8.5.15",
2588
+ "7.19.24-jdk11",
2599
2589
  "8.4.4-ubuntu-jdk11",
2600
- "8.9.6-ubuntu-jdk17",
2601
- "8.5.0-ubuntu-jdk17",
2602
- "8.5.0",
2603
- "7.19.23-jdk11",
2604
- "8.5.7-ubuntu-jdk11",
2605
- "ubi9",
2606
- "8.1.1",
2590
+ "8.9.2-ubuntu-jdk11",
2591
+ "9.1.1-jdk17",
2592
+ "8.0.4-jdk17",
2593
+ "7.19.19-jdk11",
2594
+ "8.2.3-ubuntu-jdk11",
2595
+ "9-jdk17",
2596
+ "8.5-jdk11",
2597
+ "8.3-jdk11",
2607
2598
  "8.9.2-jdk11",
2608
- "8.5.11-ubuntu-jdk11",
2609
- "8.5.5-jdk17",
2610
- "8.5.5-ubuntu-jdk17",
2611
- "8.1.1-jdk11",
2612
- "8.5.5",
2613
- "8.1.1-ubuntu-jdk11",
2599
+ "8.0.2-ubuntu-jdk17",
2614
2600
  "8.0.1-jdk17",
2615
- "8.5.0-jdk17",
2616
- "7.19.23",
2617
- "8.5.7-jdk11",
2618
- "8.4.0",
2619
- "8.9.2-ubuntu-jdk11",
2620
- "8.0.0-ubuntu-jdk17",
2621
- "8.0.0-jdk17",
2601
+ "9-ubuntu-jdk17",
2602
+ "8.5.12-ubi9-jdk17",
2603
+ "8.7.1-jdk11",
2604
+ "9.1-ubuntu-jdk17",
2605
+ "8.5.12-ubi9",
2606
+ "7.19.12-ubuntu-jdk11",
2607
+ "7.19.24",
2608
+ "ubuntu-jdk17",
2609
+ "8.2.1-ubuntu-jdk17",
2610
+ "8.4.4-jdk11",
2611
+ "jdk17",
2612
+ "9.1-jdk17",
2613
+ "8.5.8-ubi9",
2614
+ "8.0.2-jdk17",
2622
2615
  "ubi9-jdk17",
2616
+ "8.1.1-jdk11",
2617
+ "8.3.4-ubuntu-jdk11",
2618
+ "7.19.8",
2619
+ "7.19.24-ubuntu-jdk11",
2620
+ "8.2-jdk11",
2621
+ "7.19.12",
2622
+ "8.3.4-jdk11",
2623
+ "ubi9-jdk21",
2624
+ "8.9.4-ubi9-jdk17",
2625
+ "8.5.11-jdk11",
2626
+ "8.1.1",
2627
+ "7.19.3-ubuntu-jdk11",
2628
+ "8.3-ubuntu-jdk11",
2629
+ "8.5.18-ubuntu-jdk11",
2623
2630
  "8.2.1-jdk17",
2624
- "9.1.1-ubi9-jdk17",
2625
- "8.7.1-jdk11",
2626
2631
  "8.7.1-ubuntu-jdk11",
2627
- "8.5.11-jdk11",
2628
- "8.4.0-jdk17",
2629
- "7.19.8-ubuntu-jdk11",
2630
- "8.0.0",
2631
- "8.6.1-ubuntu-jdk17",
2632
+ "8.0-jdk17",
2633
+ "7.19.19",
2634
+ "8.9.4-ubi9",
2635
+ "ubi9",
2636
+ "8.0.1-ubuntu-jdk17",
2637
+ "8.9.8-ubi9",
2632
2638
  "8.0.0-jdk11",
2633
- "8.6.1-jdk17",
2639
+ "8.1.1-ubuntu-jdk17",
2640
+ "9.1.1-ubi9",
2641
+ "8.5.7-ubuntu-jdk11",
2634
2642
  "8.0.0-ubuntu-jdk11",
2635
- "8.4.0-ubuntu-jdk17",
2636
- "8.1.1-jdk17",
2637
- "7.19.12-ubuntu-jdk11",
2638
- "8.2.1-ubuntu-jdk17",
2639
2643
  "7.19.8-jdk11",
2644
+ "8.9.8-ubi9-jdk17",
2640
2645
  "7.19.12-jdk11",
2641
- "8.0.2-jdk17",
2642
- "8.6.0-ubi9",
2643
- "7.19.18",
2644
- "8.1.1-ubuntu-jdk17",
2645
- "7.19.18-ubuntu-jdk11",
2646
- "8.9.5-ubi9",
2647
- "8.6.1",
2648
- "8.9.5-ubi9-jdk17",
2649
- "8.6.0-ubi9-jdk17",
2650
- "7.19.8",
2651
- "7.19.18-jdk11",
2652
- "7.19.12",
2646
+ "9.1.1-ubi9-jdk21",
2647
+ "9.1.1-ubi9-jdk17",
2648
+ "7.19.8-ubuntu-jdk11",
2649
+ "8.1.1-ubuntu-jdk11",
2650
+ "8.5.7-jdk11",
2651
+ "8.0.0",
2652
+ "7.19.3",
2653
+ "7.19.3-jdk11",
2654
+ "8.1.1-jdk17",
2653
2655
  "9.0.2-ubi9-jdk21",
2654
- "8.0.2-ubuntu-jdk17",
2655
- "8.5.14-ubi9",
2656
+ "8.7.1-ubi9",
2657
+ "8.7.1-ubi9-jdk17",
2658
+ "8.5.9-ubi9",
2656
2659
  "8.5.14-ubi9-jdk17",
2657
- "8.5.6-ubi9-jdk17",
2658
- "8.5.6-ubi9",
2659
- "8.9.1-ubi9",
2660
- "8.9.1-ubi9-jdk17",
2661
- "9.0.1-ubi9-jdk17",
2660
+ "8.5.9-ubi9-jdk17",
2661
+ "8.9.0-ubi9-jdk17",
2662
+ "8.9.0-ubi9",
2663
+ "8.5.14-ubi9",
2664
+ "8.5.18-ubi9",
2665
+ "8.5.18-ubi9-jdk17",
2666
+ "9.2.0-rc1-jdk21",
2667
+ "9.2.0-rc1-ubuntu-jdk21",
2668
+ "9.2.0-rc1",
2669
+ "eap",
2670
+ "9.2.0-rc1-jdk17",
2671
+ "eap-jdk17",
2672
+ "eap-ubuntu-jdk17",
2673
+ "9.2.0-rc1-ubuntu-jdk17",
2674
+ "9.2.0-rc1-ubi9-jdk17",
2675
+ "9.2.0-rc1-ubi9",
2676
+ "9.2.0-rc1-ubi9-jdk21",
2662
2677
  "9.2.0-beta3-ubuntu-jdk17",
2663
2678
  "9.2.0-beta3-jdk17",
2664
2679
  "9.2.0-beta3",
@@ -9645,4 +9660,4 @@ process.on('SIGINT', () => {
9645
9660
  console.log(`Received term signal, trying to stop gracefully 💪`);
9646
9661
  gracefulExit(1);
9647
9662
  });
9648
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VzIjpbIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvQWN0aW9uSGFuZGxlci5qcyIsIi4uLy4uL2Rpc3Qvc3JjL3R5cGVzL0RhdGFiYXNlLmpzIiwiLi4vLi4vZGlzdC9zcmMvdHlwZXMvQXBwbGljYXRpb24uanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2FtcHMuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL0N1c3RvbUJ1aWxkZXIuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2lzUmVjdXJzaXZlQnVpbGQuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL3Nob3dSZWN1cnNpdmVCdWlsZFdhcm5pbmcuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2RvY2tlci5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvdXBtLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9JbnN0YWxsZXIuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL0ZpbGVXYXRjaGVyLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy90b0Fic29sdXRlUGF0aC5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvZ2V0VmVyc2lvbnMuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2dlbmVyYXRlVmVyc2lvbkxpc3QuanMiLCIuLi8uLi9kaXN0L3NyYy9jb21tYW5kcy9idWlsZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3luY0V4aXRIb29rLCBncmFjZWZ1bEV4aXQgfSBmcm9tICdleGl0LWhvb2snO1xuaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5leHBvcnQgY29uc3QgQWN0aW9uSGFuZGxlciA9IGFzeW5jIChwcm9ncmFtLCB7IGFjdGlvbiwgZXJyb3JIYW5kbGVyIH0sIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBvcHMgPSBvcHRpb25zIHx8IHByb2dyYW0ub3B0cygpO1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHtcbiAgICAgICAgbGV0IGVycm9yTWVzc2FnZSA9ICcnO1xuICAgICAgICBhc3luY0V4aXRIb29rKGFzeW5jIChjb2RlKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChjb2RlICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGVycm9ySGFuZGxlcihvcHMpLmNhdGNoKCgpID0+IG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2UudHJpbSgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdlIGFyZSByZWplY3RpbmcgdGhlIHByb21pc2UgdG8gYXZvaWQgdGhlXG4gICAgICAgICAgICAgICAgICAgIC8vIFwiQ2FsbGluZyBwcm9jZXNzLmV4aXRcIiBsb2cgbWVzc2FnZSBmcm9tIGV4aXQtaG9va1xuICAgICAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogZXJyO1xuICAgICAgICAgICAgICAgIHJlamVjdChtZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgd2FpdDogNjAgKiAxICogMTAwMFxuICAgICAgICB9KTtcbiAgICAgICAgYWN0aW9uKG9wcykudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBncmFjZWZ1bEV4aXQoMCk7XG4gICAgICAgIH0pLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2Ygei5ab2RFcnJvcikge1xuICAgICAgICAgICAgICAgIGVyci5pc3N1ZXMuZm9yRWFjaChpc3N1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSArPSBgVW5hYmxlIHRvIHBhcnNlIG9wdGlvbiAke2lzc3VlLnBhdGguam9pbignLCcpfTogJHtpc3N1ZS5tZXNzYWdlfVxcbmA7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvciB8fCB0eXBlb2YgZXJyID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGVyci50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3JhY2VmdWxFeGl0KDEpO1xuICAgICAgICB9KTtcbiAgICB9KS5jYXRjaChtZXNzYWdlID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2UgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHByb2dyYW0uZXJyb3IobWVzc2FnZSk7XG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBlcnJvciBtZXNzYWdlLFxuICAgICAgICAgICAgLy8gd2UgY2FuIGFzc3VtZSBhIGNsZWFuIGV4aXRcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcbiIsImltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuaW1wb3J0IHZlcnNpb25zIGZyb20gJy4uLy4uL2Fzc2V0cy92ZXJzaW9ucy5qc29uJztcbmV4cG9ydCBjb25zdCBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMgPSB6LmVudW0oW1xuICAgICdwb3N0Z3Jlc3FsJyxcbiAgICAnbXlzcWwnLFxuICAgICdtc3NxbCdcbl0pO1xuZXhwb3J0IGNvbnN0IFN1cHBvcnRlZE1TU1FMRWRpdGlvbnMgPSB6LmVudW0oW1xuICAgICdEZXZlbG9wZXInLFxuICAgICdFeHByZXNzJyxcbiAgICAnU3RhbmRhcmQnLFxuICAgICdFbnRlcnByaXNlJyxcbiAgICAnRW50ZXJwcmlzZUNvcmUnXG5dKTtcbmV4cG9ydCBjb25zdCBEYXRhYmFzZU9wdGlvbnMgPSB6Lm9iamVjdCh7XG4gICAgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKSxcbiAgICBkYXRhYmFzZTogei5zdHJpbmcoKS5kZWZhdWx0KCdkY2R4JyksXG4gICAgdXNlcm5hbWU6IHouc3RyaW5nKCkuZGVmYXVsdCgnZGNkeCcpLFxuICAgIHBhc3N3b3JkOiB6LnN0cmluZygpLmRlZmF1bHQoJ2RjZHgnKSxcbiAgICBjbGVhbjogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgcHJ1bmU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIHZlcmJvc2U6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKVxufSk7XG5leHBvcnQgY29uc3QgUG9zdGdyZVNRTE9wdGlvbnMgPSBEYXRhYmFzZU9wdGlvbnMuZXh0ZW5kKHtcbiAgICBuYW1lOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCksXG4gICAgdGFnOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IHZlcnNpb25zW1N1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbF0uaW5jbHVkZXMoaXRlbSkpLmRlZmF1bHQoJ2xhdGVzdCcpLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKS5kZWZhdWx0KDU0MzIpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSAnb3JnLnBvc3RncmVzcWwuRHJpdmVyJykuZGVmYXVsdCgnb3JnLnBvc3RncmVzcWwuRHJpdmVyJylcbn0pO1xuZXhwb3J0IGNvbnN0IE15U1FMT3B0aW9ucyA9IERhdGFiYXNlT3B0aW9ucy5leHRlbmQoe1xuICAgIG5hbWU6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWwpLFxuICAgIHRhZzogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiB2ZXJzaW9uc1tTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsXS5pbmNsdWRlcyhpdGVtKSkuZGVmYXVsdCgnbGF0ZXN0JyksXG4gICAgcG9ydDogei5udW1iZXIoKS5vcih6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkpLmRlZmF1bHQoMzMwNiksXG4gICAgZHJpdmVyOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IGl0ZW0gPT09ICdjb20ubXlzcWwuamRiYy5Ecml2ZXInKS5kZWZhdWx0KCdjb20ubXlzcWwuamRiYy5Ecml2ZXInKVxufSk7XG5leHBvcnQgY29uc3QgTVNTUUxPcHRpb25zID0gRGF0YWJhc2VPcHRpb25zLmV4dGVuZCh7XG4gICAgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLnJlZmluZShpdGVtID0+IGl0ZW0gPT09IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXNzcWwpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbCksXG4gICAgdGFnOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IHZlcnNpb25zW1N1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXNzcWxdLmluY2x1ZGVzKGl0ZW0pKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBlZGl0aW9uOiBTdXBwb3J0ZWRNU1NRTEVkaXRpb25zLmRlZmF1bHQoJ0RldmVsb3BlcicpLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKS5kZWZhdWx0KDE0MzMpLFxuICAgIHVzZXJuYW1lOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IGl0ZW0gPT09ICdzYScpLmRlZmF1bHQoJ3NhJyksXG4gICAgcGFzc3dvcmQ6IHouc3RyaW5nKCkuZGVmYXVsdCgnRGF0YUNlbnRlckRYIScpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSAnY29tLm1pY3Jvc29mdC5zcWxzZXJ2ZXIuamRiYy5TUUxTZXJ2ZXJEcml2ZXInKS5kZWZhdWx0KCdjb20ubWljcm9zb2Z0LnNxbHNlcnZlci5qZGJjLlNRTFNlcnZlckRyaXZlcicpXG59KTtcbiIsImltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuaW1wb3J0IHsgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzIH0gZnJvbSAnLi9EYXRhYmFzZSc7XG5leHBvcnQgY29uc3QgU3VwcG9ydGVkQXBwbGljYXRpb25zID0gei5lbnVtKFtcbiAgICAnamlyYScsXG4gICAgJ2NvbmZsdWVuY2UnLFxuICAgICdiaXRidWNrZXQnLFxuICAgICdiYW1ib28nXG5dKTtcbmV4cG9ydCBjb25zdCBBcHBsaWNhdGlvbk9wdGlvbnMgPSB6Lm9iamVjdCh7XG4gICAgbmFtZTogU3VwcG9ydGVkQXBwbGljYXRpb25zLFxuICAgIHRhZzogei5zdHJpbmcoKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBkYXRhYmFzZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLmRlZmF1bHQoJ3Bvc3RncmVzcWwnKSxcbiAgICBkYXRhYmFzZVRhZzogei5zdHJpbmcoKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBwb3J0OiB6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkuZGVmYXVsdCgnODAnKSxcbiAgICBjb250ZXh0UGF0aDogei5zdHJpbmcoKSxcbiAgICB4bXM6IHouc3RyaW5nKCkuZGVmYXVsdCgnMTAyNG0nKSxcbiAgICB4bXg6IHouc3RyaW5nKCkuZGVmYXVsdCgnMTAyNG0nKSxcbiAgICB3YXRjaDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgZXh0OiB6LmFycmF5KHouc3RyaW5nKCkpLFxuICAgIGluc3RhbGw6IHouYm9vbGVhbigpLFxuICAgIG91dHB1dERpcmVjdG9yeTogei5zdHJpbmcoKSxcbiAgICBhY3RpdmF0ZVByb2ZpbGVzOiB6LnN0cmluZygpLFxuICAgIGNsZWFuOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBwcnVuZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgZGVidWc6IHouYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG4gICAgY3dkOiB6LnN0cmluZygpXG59KS5wYXJ0aWFsKHtcbiAgICBjb250ZXh0UGF0aDogdHJ1ZSxcbiAgICBleHQ6IHRydWUsXG4gICAgaW5zdGFsbDogdHJ1ZSxcbiAgICBvdXRwdXREaXJlY3Rvcnk6IHRydWUsXG4gICAgYWN0aXZhdGVQcm9maWxlczogdHJ1ZSxcbiAgICBjd2Q6IHRydWVcbn0pO1xuIiwiaW1wb3J0IHsgRE9NUGFyc2VyLCBYTUxTZXJpYWxpemVyIH0gZnJvbSAnQHhtbGRvbS94bWxkb20nO1xuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IFhNTFBhcnNlciB9IGZyb20gJ2Zhc3QteG1sLXBhcnNlcic7XG5pbXBvcnQgeyBleGlzdHNTeW5jLCByZWFkRmlsZVN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmltcG9ydCB4cGF0aCBmcm9tICd4cGF0aCc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5leHBvcnQgY2xhc3MgQU1QUyB7XG4gICAgb3B0aW9ucztcbiAgICBtYXZlbiA9IG51bGw7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucyA9IHtcbiAgICAgICAgcHJvZmlsZXM6IFtdXG4gICAgfSkge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHVibGljIE1ldGhvZHNcbiAgICBzdG9wKCkge1xuICAgICAgICBpZiAodGhpcy5tYXZlbikge1xuICAgICAgICAgICAgY29uc3Qga2lsbGVkID0gdGhpcy5tYXZlbi5raWxsKDApO1xuICAgICAgICAgICAgaWYgKCFraWxsZWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byB0ZXJtaW5hdGUgZXhpc3RpbmcgTWF2ZW4gcHJvY2VzcycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGJ1aWxkKGFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1hdmVuKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2lsbGVkID0gdGhpcy5tYXZlbi5raWxsKDApO1xuICAgICAgICAgICAgICAgIGlmICgha2lsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ0ZhaWxlZCB0byB0ZXJtaW5hdGUgZXhpc3RpbmcgTWF2ZW4gcHJvY2VzcycpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm1hdmVuID0gc3Bhd24oJ212bicsIFsncGFja2FnZScsIC4uLmFyZ3NdLCB7IGN3ZDogdGhpcy5vcHRpb25zPy5jd2QgfHwgY3dkKCksIHN0ZGlvOiAnaW5oZXJpdCcgfSk7XG4gICAgICAgICAgICB0aGlzLm1hdmVuLm9uKCdleGl0JywgKGNvZGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm1hdmVuID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoY29kZSA9PT0gMCB8fCBjb2RlID09PSAxMzApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgTWF2ZW4gZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaXNBdGxhc3NpYW5QbHVnaW4gPSAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBub2RlcyA9IHRoaXMuZ2V0Tm9kZXMoJy8vKltsb2NhbC1uYW1lKCk9XFwncGFja2FnaW5nXFwnXScpO1xuICAgICAgICAgICAgcmV0dXJuIG5vZGVzLnNvbWUoaXRlbSA9PiBpdGVtLnRleHRDb250ZW50ID09PSAnYXRsYXNzaWFuLXBsdWdpbicpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgZ2V0QXBwbGljYXRpb25WZXJzaW9uKCkge1xuICAgICAgICBjb25zdCBhcHBsaWNhdGlvbnMgPSB0aGlzLmdldEFwcGxpY2F0aW9ucygpO1xuICAgICAgICBpZiAoYXBwbGljYXRpb25zLnNpemUgPT09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IFssIHZlcnNpb25dID0gQXJyYXkuZnJvbShhcHBsaWNhdGlvbnMpWzBdO1xuICAgICAgICAgICAgcmV0dXJuIHZlcnNpb247XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYXBwbGljYXRpb25zLnNpemUgPiAxKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBBdGxhc3NpYW4gUGx1Z2luIHByb2plY3QgY29udGFpbnMgbXVsdGlwbGUgQU1QUyBjb25maWd1cmF0aW9uLCB1bmFibGUgdG8gZGVjaWRlIHdoaWNoIHByb2R1Y3QgdG8gdXNlIPCfmLAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBnZXRBcHBsaWNhdGlvbigpIHtcbiAgICAgICAgY29uc3QgYXBwbGljYXRpb25zID0gdGhpcy5nZXRBcHBsaWNhdGlvbnMoKTtcbiAgICAgICAgaWYgKGFwcGxpY2F0aW9ucy5zaXplID09PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBbbmFtZV0gPSBBcnJheS5mcm9tKGFwcGxpY2F0aW9ucylbMF07XG4gICAgICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChhcHBsaWNhdGlvbnMuc2l6ZSA+IDEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIEF0bGFzc2lhbiBQbHVnaW4gcHJvamVjdCBjb250YWlucyBtdWx0aXBsZSBBTVBTIGNvbmZpZ3VyYXRpb24sIHVuYWJsZSB0byBkZWNpZGUgd2hpY2ggcHJvZHVjdCB0byB1c2Ug8J+YsCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBnZXRBcHBsaWNhdGlvbnMoKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBNYXAoKTtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSB0aGlzLmdldE5vZGVzKCcvLypbbG9jYWwtbmFtZSgpPVxcJ2dyb3VwSWRcXCcgYW5kIHRleHQoKT1cXCdjb20uYXRsYXNzaWFuLm1hdmVuLnBsdWdpbnNcXCddJyk7XG4gICAgICAgIGNvbnN0IG5vZGVzV2l0aEFjdGl2ZVByb2ZpbGUgPSBub2Rlcy5maWx0ZXIobm9kZSA9PiB0aGlzLmlzQWN0aXZhdGVkUHJvZmlsZShub2RlKSk7XG4gICAgICAgIG5vZGVzV2l0aEFjdGl2ZVByb2ZpbGUuZm9yRWFjaChub2RlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgICAgICAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgcGx1Z2luIH0gPSB0aGlzLnRvT2JqZWN0KHBhcmVudE5vZGUpO1xuICAgICAgICAgICAgICAgIGlmICgnYW1wcy1tYXZlbi1wbHVnaW4nID09PSBwbHVnaW4/LmFydGlmYWN0SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBjb25maWd1cmF0aW9uIH0gPSBwbHVnaW4gfHwge307XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uPy5wcm9kdWN0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29uZmlndXJhdGlvbj8ucHJvZHVjdHMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5wcm9kdWN0cy5mb3JFYWNoKChwcm9kdWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1cHBvcnRlZEFwcGxpY2F0aW9uID0gdGhpcy5nZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbihwcm9kdWN0LmlkKSB8fCB0aGlzLmdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHByb2R1Y3QuaW5zdGFuY2VJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0ZWRBcHBsaWNhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHByb2R1Y3QudmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQoc3VwcG9ydGVkQXBwbGljYXRpb24sIHZlcnNpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByb2R1Y3QgfSA9IGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RzIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9kdWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1cHBvcnRlZEFwcGxpY2F0aW9uID0gdGhpcy5nZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbihwcm9kdWN0LmlkKSB8fCB0aGlzLmdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHByb2R1Y3QuaW5zdGFuY2VJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0ZWRBcHBsaWNhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHByb2R1Y3QudmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQoc3VwcG9ydGVkQXBwbGljYXRpb24sIHZlcnNpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdXBwb3J0ZWRBcHBsaWNhdGlvbiA9IHRoaXMuZ2V0U3VwcG9ydGVkQXBwbGljYXRpb24ocGx1Z2luPy5hcnRpZmFjdElkKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZ2V0VmVyc2lvbihub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRlZEFwcGxpY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0KHN1cHBvcnRlZEFwcGxpY2F0aW9uLCB2ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcml2YXRlIE1ldGhvZHNcbiAgICBnZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbih2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWU/LmluY2x1ZGVzKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuamlyYSkpIHtcbiAgICAgICAgICAgIHJldHVybiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmppcmE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsdWU/LmluY2x1ZGVzKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuY29uZmx1ZW5jZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2U7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsdWU/LmluY2x1ZGVzKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vKSkge1xuICAgICAgICAgICAgcmV0dXJuIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbHVlPy5pbmNsdWRlcyhTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldCkpIHtcbiAgICAgICAgICAgIHJldHVybiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZ2V0VmVyc2lvbihub2RlKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBjb25zdCB7IHBsdWdpbiB9ID0gdGhpcy50b09iamVjdChwYXJlbnROb2RlKTtcbiAgICAgICAgICAgIGNvbnN0IHsgY29uZmlndXJhdGlvbiB9ID0gcGx1Z2luIHx8IHt9O1xuICAgICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RWZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHBsdWdpbi5jb25maWd1cmF0aW9uLnByb2R1Y3RWZXJzaW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJvZHVjdCA9IEFycmF5LmlzQXJyYXkoY29uZmlndXJhdGlvbj8ucHJvZHVjdHMpID8gY29uZmlndXJhdGlvbj8ucHJvZHVjdHNbMF0gOiBjb25maWd1cmF0aW9uLnByb2R1Y3RzLnByb2R1Y3Q7XG4gICAgICAgICAgICAgICAgaWYgKHByb2R1Y3QgJiYgcHJvZHVjdC52ZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvUHJvcGVydHlSZXBsYWNlbWVudChwcm9kdWN0LnZlcnNpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBkb1Byb3BlcnR5UmVwbGFjZW1lbnQodmFsdWUpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIHByb2ZpbGUsIHJlcGxhY2UgcHJvZmlsZSBwcm9wZXJ0aWVzIGZpcnN0IGFzIHRoZXkgdGFrZSBwcmVjZWRlbmNlXG4gICAgICAgIGNvbnN0IHByb2ZpbGVQcm9wZXJ0aWVzID0gdGhpcy5nZXRQcm9wZXJ0aWVzKCk7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHByb2ZpbGVQcm9wZXJ0aWVzKS5mb3JFYWNoKChbcHJvcGVydHlLZXksIHByb3BlcnR5VmFsdWVdKSA9PiB7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZUFsbChgJFxceyR7cHJvcGVydHlLZXl9fWAsIHByb3BlcnR5VmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IHRoaXMuZ2V0UHJvcGVydGllcygpO1xuICAgICAgICBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKS5mb3JFYWNoKChbcHJvcGVydHlLZXksIHByb3BlcnR5VmFsdWVdKSA9PiB7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZUFsbChgJFxceyR7cHJvcGVydHlLZXl9fWAsIHByb3BlcnR5VmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgZ2V0UHJvcGVydGllcygpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy5nZXROb2RlcygnLy8qW2xvY2FsLW5hbWUoKT1cXCdwcm9wZXJ0aWVzXFwnXScpO1xuICAgICAgICBjb25zdCBub2Rlc1dpdGhBY3RpdmVQcm9maWxlID0gbm9kZXMuZmlsdGVyKG5vZGUgPT4gdGhpcy5pc0FjdGl2YXRlZFByb2ZpbGUobm9kZSkpO1xuICAgICAgICBub2Rlc1dpdGhBY3RpdmVQcm9maWxlLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHByb3BlcnRpZXMgfSA9IHRoaXMudG9PYmplY3Qobm9kZSk7XG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHJlc3VsdFtrZXldID0gdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgZ2V0Tm9kZXMoZXhwcmVzc2lvbiwgc2luZ2xlKSB7XG4gICAgICAgIGNvbnN0IHBvbUZpbGVQYXRoID0gam9pbih0aGlzLm9wdGlvbnM/LmN3ZCB8fCBjd2QoKSwgJy4vcG9tLnhtbCcpO1xuICAgICAgICBjb25zdCBoYXNQb21GaWxlID0gZXhpc3RzU3luYyhwb21GaWxlUGF0aCk7XG4gICAgICAgIGlmIChoYXNQb21GaWxlKSB7XG4gICAgICAgICAgICBjb25zdCB4bWwgPSByZWFkRmlsZVN5bmMocG9tRmlsZVBhdGgsICd1dGY4Jyk7XG4gICAgICAgICAgICBjb25zdCBkb2MgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKHhtbCwgJ3RleHQveG1sJyk7XG4gICAgICAgICAgICBjb25zdCBub2RlcyA9IHNpbmdsZSA/IHhwYXRoLnNlbGVjdChleHByZXNzaW9uLCBkb2MsIHRydWUpIDogeHBhdGguc2VsZWN0KGV4cHJlc3Npb24sIGRvYywgZmFsc2UpO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9kZXMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoc2luZ2xlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgdG9PYmplY3Qobm9kZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VyID0gbmV3IFhNTFBhcnNlcigpO1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlci5wYXJzZShuZXcgWE1MU2VyaWFsaXplcigpLnNlcmlhbGl6ZVRvU3RyaW5nKG5vZGUpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmaW5kUGFyZW50Tm9kZUJ5VGFnTmFtZSh0YWdOYW1lLCBub2RlKSB7XG4gICAgICAgIGNvbnN0IHsgcGFyZW50Tm9kZSB9ID0gbm9kZTtcbiAgICAgICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIGlmIChwYXJlbnROb2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHRhZ05hbWUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnROb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmluZFBhcmVudE5vZGVCeVRhZ05hbWUodGFnTmFtZSwgcGFyZW50Tm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlzQWN0aXZhdGVkUHJvZmlsZShub2RlKSB7XG4gICAgICAgIGNvbnN0IHByb2ZpbGVQYXJlbnROb2RlID0gdGhpcy5maW5kUGFyZW50Tm9kZUJ5VGFnTmFtZSgncHJvZmlsZScsIG5vZGUpO1xuICAgICAgICBjb25zdCBwcm9maWxlTm9kZSA9IHByb2ZpbGVQYXJlbnROb2RlID8gdGhpcy50b09iamVjdChwcm9maWxlUGFyZW50Tm9kZSkgOiBudWxsO1xuICAgICAgICBpZiAoIXByb2ZpbGVOb2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwcm9maWxlTm9kZSAmJiAocHJvZmlsZU5vZGUuYWN0aXZlQnlEZWZhdWx0ID09PSAndHJ1ZScgfHwgdGhpcy5vcHRpb25zLnByb2ZpbGVzLmluY2x1ZGVzKHByb2ZpbGVOb2RlLnByb2ZpbGUuaWQpKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJpbXBvcnQgeyBleGVjU3luYyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgY3dkIH0gZnJvbSAncHJvY2Vzcyc7XG5leHBvcnQgY2xhc3MgQ3VzdG9tQnVpbGRlciB7XG4gICAgb3B0aW9ucztcbiAgICBwcm9jID0gbnVsbDtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQdWJsaWMgTWV0aG9kc1xuICAgIHN0b3AoKSB7XG4gICAgICAgIGlmICh0aGlzLnByb2MpIHtcbiAgICAgICAgICAgIGNvbnN0IGtpbGxlZCA9IHRoaXMucHJvYy5raWxsKDApO1xuICAgICAgICAgICAgaWYgKCFraWxsZWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byB0ZXJtaW5hdGUgZXhpc3RpbmcgYnVpbGQgcHJvY2VzcycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGJ1aWxkKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJvYykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGtpbGxlZCA9IHRoaXMucHJvYy5raWxsKDApO1xuICAgICAgICAgICAgICAgIGlmICgha2lsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ0ZhaWxlZCB0byB0ZXJtaW5hdGUgZXhpc3RpbmcgYnVpbGQgcHJvY2VzcycpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGV4ZWNTeW5jKHRoaXMub3B0aW9ucy5jbWQsIHsgY3dkOiB0aGlzLm9wdGlvbnM/LmN3ZCB8fCBjd2QoKSwgc3RkaW86ICdpbmhlcml0JyB9KTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBzdGF0dXMgfSA9IGVycjtcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBCdWlsZCBleGl0ZWQgd2l0aCBjb2RlICR7c3RhdHVzfWApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiZXhwb3J0IGNvbnN0IGlzUmVjdXJzaXZlQnVpbGQgPSAobGFzdEJ1aWxkQ29tcGxldGVkKSA9PiBsYXN0QnVpbGRDb21wbGV0ZWQgPiAobmV3IERhdGUoKS5nZXRUaW1lKCkgLSA1ICogMTAwMCk7XG4iLCJleHBvcnQgY29uc3Qgc2hvd1JlY3Vyc2l2ZUJ1aWxkV2FybmluZyA9IChvdXRwdXREaXJlY3RvcnkpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJlY3Vyc2l2ZSBidWlsZCB0cmlnZ2VyIGRldGVjdGVkLiBUaGUgbGFzdCBidWlsZCBjb21wbGV0ZWQgbGFzdCB0aGFuIDUgc2Vjb25kcyBhZ29cblRoaXMgbWF5IGluZGljYXRlIHRoYXQgdGhlIGJ1aWxkIGNoYW5nZXMgZmlsZXMgb3V0c2lkZSBvZiB0aGUgb3V0cHV0IGRpcmVjdG9yeVxuQWx0ZXJuYXRpdmVseSwgTWF2ZW4gaXMgdXNpbmcgYSBkaWZmZXJlbnQgb3V0cHV0IGRpcmVjdG9yeSB0aGFuIGNvbmZpZ3VyZWQ6XG4nJHtvdXRwdXREaXJlY3Rvcnl9J1xuXG5QbGVhc2UgbWFrZSBzdXJlIHRvIGNoZWNrIHlvdXIgYnVpbGQgcHJvY2VzcyBhbmQvb3Igc3BlY2lmeSBhIGRpZmZlcmVudCBvdXRwdXQgZGlyZWN0b3J5IHVzaW5nIHRoZSAnLW8nIG9wdGlvblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09YCk7XG59O1xuIiwiaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBEb2NrZXJvZGUgZnJvbSAnZG9ja2Vyb2RlJztcbmltcG9ydCB7IGN3ZCB9IGZyb20gJ3Byb2Nlc3MnO1xuY29uc3QgZG9ja2VyID0gbmV3IERvY2tlcm9kZSgpO1xuZXhwb3J0IGNvbnN0IGdldFJ1bm5pbmdDb250YWluZXJJZHMgPSBhc3luYyAoYXBwbGljYXRpb24pID0+IHtcbiAgICBjb25zdCBjb250YWluZXJzID0gYXdhaXQgZG9ja2VyLmxpc3RDb250YWluZXJzKHsgZmlsdGVyczoge1xuICAgICAgICAgICAgc3RhdHVzOiBbJ3J1bm5pbmcnXSxcbiAgICAgICAgICAgIGxhYmVsOiBbYGNvbS5kb2NrZXIuY29tcG9zZS5zZXJ2aWNlPSR7YXBwbGljYXRpb259YF1cbiAgICAgICAgfSB9KTtcbiAgICByZXR1cm4gY29udGFpbmVycy5tYXAoaXRlbSA9PiBpdGVtLklkKTtcbn07XG5leHBvcnQgY29uc3QgY29weSA9IGFzeW5jIChzb3VyY2VQYXRoLCBkZXN0aW5hdGlvblBhdGgpID0+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCBkb2NrZXIgPSBzcGF3bignZG9ja2VyJywgWydjcCcsIHNvdXJjZVBhdGgsIGRlc3RpbmF0aW9uUGF0aF0sIHsgY3dkOiBjd2QoKSwgc3RkaW86ICdpbmhlcml0JyB9KTtcbiAgICAgICAgZG9ja2VyLm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICAgIGRvY2tlci5vbignZXhpdCcsIChjb2RlKSA9PiAoY29kZSA9PT0gMCkgPyByZXNvbHZlKCkgOiByZWplY3QobmV3IEVycm9yKGBEb2NrZXIgZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCkpKTtcbiAgICB9KTtcbn07XG4iLCJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IEZvcm1EYXRhIGZyb20gJ2Zvcm0tZGF0YSc7XG5pbXBvcnQgeyBjcmVhdGVSZWFkU3RyZWFtIH0gZnJvbSAnZnMnO1xuZXhwb3J0IGNvbnN0IHVwbG9hZFRvVVBNID0gYXN5bmMgKGJhc2VVcmwsIHBhdGgsIHVzZXJuYW1lLCBwYXNzd29yZCwgdmVyYm9zZSA9IHRydWUpID0+IHtcbiAgICBjb25zdCBjcmVkZW50aWFscyA9IHVzZXJuYW1lICYmIHBhc3N3b3JkID8gQnVmZmVyLmZyb20oYCR7dXNlcm5hbWV9OiR7cGFzc3dvcmR9YCkudG9TdHJpbmcoJ2Jhc2U2NCcpIDogbnVsbDtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLmdldChgJHtiYXNlVXJsfS9yZXN0L3BsdWdpbnMvMS4wLz9vc19hdXRoVHlwZT1iYXNpY2AsIGNyZWRlbnRpYWxzID8ge1xuICAgICAgICBoZWFkZXJzOiB7ICdBdXRob3JpemF0aW9uJzogYEJhc2ljICR7Y3JlZGVudGlhbHN9YCB9XG4gICAgfSA6IHVuZGVmaW5lZCkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgdmVyYm9zZSAmJiBjb25zb2xlLmxvZygnRmFpbGVkIHRvIHVwbG9hZCBwbHVnaW4gYXJjaGl2ZSBmaWxlIHRvIFVQTSwgdW5hYmxlIHRvIHJldHJpZXZlIHRva2VuJywgZXJyKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSk7XG4gICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gcmVzcG9uc2UuaGVhZGVyc1sndXBtLXRva2VuJ107XG4gICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgncGx1Z2luJywgY3JlYXRlUmVhZFN0cmVhbShwYXRoKSk7XG4gICAgICAgICAgICByZXR1cm4gYXhpb3MucG9zdChgJHtiYXNlVXJsfS9yZXN0L3BsdWdpbnMvMS4wLz90b2tlbj0ke3Rva2VufWAsIGZvcm1EYXRhLCB7IGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybURhdGEuZ2V0SGVhZGVycygpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jcmVkZW50aWFscyA/IHsgJ0F1dGhvcml6YXRpb24nOiBgQmFzaWMgJHtjcmVkZW50aWFsc31gIH0gOiB7fVxuICAgICAgICAgICAgICAgIH0gfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdmVyYm9zZSAmJiBjb25zb2xlLmxvZygnRmluaXNoZWQgdXBsb2FkaW5nIHBsdWdpbiBhcmNoaXZlIHRvIFVQTScpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2ZXJib3NlICYmIGNvbnNvbGUubG9nKCdGYWlsZWQgdG8gdXBsb2FkIHBsdWdpbiBhcmNoaXZlIGZpbGUgdG8gVVBNLCB1bmFibGUgdG8gcmV0cmlldmUgdG9rZW4gZnJvbSBoZWFkZXJzOicsIEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmhlYWRlcnMsIG51bGwsIDIpKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuZXhwb3J0IGNvbnN0IHdhaXRGb3JQbHVnaW5Ub0JlRW5hYmxlZCA9IGFzeW5jIChhcHBLZXksIGJhc2VVcmwsIHVzZXJuYW1lLCBwYXNzd29yZCwgdmVyYm9zZSA9IHRydWUpID0+IHtcbiAgICBjb25zdCBjcmVkZW50aWFscyA9IHVzZXJuYW1lICYmIHBhc3N3b3JkID8gQnVmZmVyLmZyb20oYCR7dXNlcm5hbWV9OiR7cGFzc3dvcmR9YCkudG9TdHJpbmcoJ2Jhc2U2NCcpIDogbnVsbDtcbiAgICB2ZXJib3NlICYmIGNvbnNvbGUubG9nKCdXYWl0aW5nIGZvciBwbHVnaW4gdG8gYmVjb21lIGVuYWJsZWQnKTtcbiAgICBsZXQgaXNFbmFibGVkID0gZmFsc2U7XG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICB3aGlsZSAoIWlzRW5hYmxlZCAmJiBjb3VudCA8IDEyMCkge1xuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAwMCkpO1xuICAgICAgICB2ZXJib3NlICYmIGNvbnNvbGUubG9nKGBXYWl0aW5nIGZvciBwbHVnaW4gdG8gYmVjb21lIGVuYWJsZWQuLi4gJHtjb3VudH1zYCk7XG4gICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgYXhpb3MuZ2V0KGAke2Jhc2VVcmx9L3Jlc3QvcGx1Z2lucy8xLjAvJHthcHBLZXl9LWtleWAsIGNyZWRlbnRpYWxzID8ge1xuICAgICAgICAgICAgaGVhZGVyczogeyAnQXV0aG9yaXphdGlvbic6IGBCYXNpYyAke2NyZWRlbnRpYWxzfWAgfVxuICAgICAgICB9IDogdW5kZWZpbmVkKS5jYXRjaCgoKSA9PiAoeyBkYXRhOiB7IGVuYWJsZWQ6IGZhbHNlIH0gfSkpO1xuICAgICAgICBpc0VuYWJsZWQgPSBkYXRhPy5lbmFibGVkO1xuICAgICAgICBjb3VudCsrO1xuICAgIH1cbiAgICByZXR1cm4gaXNFbmFibGVkO1xufTtcbmV4cG9ydCBjb25zdCByZWdpc3RlckxpY2Vuc2UgPSBhc3luYyAoYXBwS2V5LCBsaWNlbnNlLCBiYXNlVXJsLCB1c2VybmFtZSwgcGFzc3dvcmQsIHZlcmJvc2UgPSB0cnVlKSA9PiB7XG4gICAgY29uc3QgY3JlZGVudGlhbHMgPSB1c2VybmFtZSAmJiBwYXNzd29yZCA/IEJ1ZmZlci5mcm9tKGAke3VzZXJuYW1lfToke3Bhc3N3b3JkfWApLnRvU3RyaW5nKCdiYXNlNjQnKSA6IG51bGw7XG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBheGlvcy5nZXQoYCR7YmFzZVVybH0vcmVzdC9wbHVnaW5zLzEuMC8ke2FwcEtleX0ta2V5L2xpY2Vuc2VgLCB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICdYLUF0bGFzc2lhbi1Ub2tlbic6ICduby1jaGVjaycsXG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3ZuZC5hdGwucGx1Z2lucytqc29uJyxcbiAgICAgICAgICAgIC4uLmNyZWRlbnRpYWxzID8geyAnQXV0aG9yaXphdGlvbic6IGBCYXNpYyAke2NyZWRlbnRpYWxzfWAgfSA6IHt9XG4gICAgICAgIH1cbiAgICB9KS5jYXRjaCgoKSA9PiAoeyBkYXRhOiB7fSB9KSk7XG4gICAgY29uc3QgeyByYXdMaWNlbnNlIH0gPSBkYXRhO1xuICAgIGlmICghcmF3TGljZW5zZSB8fCByYXdMaWNlbnNlICE9PSBsaWNlbnNlKSB7XG4gICAgICAgIHJldHVybiBheGlvcy5wdXQoYCR7YmFzZVVybH0vcmVzdC9wbHVnaW5zLzEuMC8ke2FwcEtleX0ta2V5L2xpY2Vuc2VgLCBgeyBcInJhd0xpY2Vuc2VcIjogXCIke2xpY2Vuc2V9XCIgfWAsIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnWC1BdGxhc3NpYW4tVG9rZW4nOiAnbm8tY2hlY2snLFxuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vdm5kLmF0bC5wbHVnaW5zK2pzb24nLFxuICAgICAgICAgICAgICAgIC4uLmNyZWRlbnRpYWxzID8geyAnQXV0aG9yaXphdGlvbic6IGBCYXNpYyAke2NyZWRlbnRpYWxzfWAgfSA6IHt9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdmVyYm9zZSAmJiBjb25zb2xlLmxvZygnRmluaXNoZWQgdXBsb2FkaW5nIGxpY2Vuc2UgdG8gVVBNJyk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIHZlcmJvc2UgJiYgY29uc29sZS5sb2coJ0ZhaWxlZCB0byB1cGxvYWQgbGljZW5zZSB0byBVUE0nLCBlcnIpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59O1xuIiwiaW1wb3J0IHsgcmVzb2x2ZSBhcyByZXNvbHZlUGF0aCB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgY3dkIH0gZnJvbSAncHJvY2Vzcyc7XG5pbXBvcnQgKiBhcyBEb2NrZXIgZnJvbSAnLi9kb2NrZXInO1xuaW1wb3J0IHsgdXBsb2FkVG9VUE0gfSBmcm9tICcuL3VwbSc7XG5leHBvcnQgY29uc3QgSW5zdGFsbGVyID0gYXN5bmMgKG5hbWUsIHBhdGgsIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBjb250YWluZXJJZHMgPSBhd2FpdCBEb2NrZXIuZ2V0UnVubmluZ0NvbnRhaW5lcklkcyhuYW1lKTtcbiAgICBpZiAoIWNvbnRhaW5lcklkcyB8fCBjb250YWluZXJJZHMubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgY29uc29sZS5sb2coYFRoZXJlIGFyZSBubyBydW5uaW5nIGluc3RhbmNlIG9mICR7bmFtZX0sIHVuYWJsZSB0byBpbnN0YWxsIHBsdWdpbiDwn6SUYCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWxzZSBpZiAoY29udGFpbmVySWRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFRoZXJlIGFyZSBtdWx0cGxlIHJ1bm5pbmcgaW5zdGFuY2Ugb2YgJHtuYW1lfSwgdW5hYmxlIHRvIGRldGVybWluZSB3aGljaCBvbmUgdG8gdXNlIPCfpJRgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjb250YWluZXJJZCA9IGNvbnRhaW5lcklkc1swXTtcbiAgICBpZiAoY29udGFpbmVySWQpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMub2JyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRm91bmQgdXBkYXRlZCBwbHVnaW4sIHVwbG9hZGluZyBpdCB0byBVUE0gb24gcnVubmluZyBpbnN0YW5jZXMgb2YgJHtuYW1lfWApO1xuICAgICAgICAgICAgY29uc3QgaG9zdFVybCA9IG9wdGlvbnMucG9ydCA/IGBsb2NhbGhvc3Q6JHtvcHRpb25zLnBvcnR9YCA6IGBsb2NhbGhvc3RgO1xuICAgICAgICAgICAgY29uc3QgYmFzZVVybCA9IG9wdGlvbnMudXNlcm5hbWUgJiYgb3B0aW9ucy5wYXNzd29yZCA/IGBodHRwOi8vJHtvcHRpb25zLnVzZXJuYW1lfToke29wdGlvbnMucGFzc3dvcmR9QCR7aG9zdFVybH1gIDogYGh0dHA6Ly8ke2hvc3RVcmx9YDtcbiAgICAgICAgICAgIGF3YWl0IHVwbG9hZFRvVVBNKHJlc29sdmVQYXRoKG9wdGlvbnMuY3dkIHx8IGN3ZCgpLCBwYXRoKSwgYmFzZVVybCkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnRmFpbGVkIHRvIHVwbG9hZCBwbHVnaW4gYXJjaGl2ZSBmaWxlIHRvIFVQTScsIGVycik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBGb3VuZCB1cGRhdGVkIHBsdWdpbiwgdXBsb2FkaW5nIGl0IHRvIFF1aWNrUmVsb2FkIG9uIHJ1bm5pbmcgaW5zdGFuY2VzIG9mICR7bmFtZX1gKTtcbiAgICAgICAgICAgIGF3YWl0IERvY2tlci5jb3B5KHJlc29sdmVQYXRoKG9wdGlvbnMuY3dkIHx8IGN3ZCgpLCBwYXRoKSwgYCR7Y29udGFpbmVySWR9Oi9vcHQvcXVpY2tyZWxvYWQvYClcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiBjb25zb2xlLmxvZygnRmluaXNoZWQgdXBsb2FkaW5nIHBsdWdpbiBhcmNoaXZlIHRvIFF1aWNrUmVsb2FkJykpXG4gICAgICAgICAgICAgICAgLmNhdGNoKGVyciA9PiBjb25zb2xlLmxvZygnRmFpbGVkIHRvIHVwbG9hZCBwbHVnaW4gYXJjaGl2ZSBmaWxlIHRvIFF1aWNrUmVsb2FkJywgZXJyKSk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuIiwiaW1wb3J0IHsgd2F0Y2ggfSBmcm9tICdjaG9raWRhcic7XG5pbXBvcnQgeyBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmltcG9ydCB7IGlzUmVjdXJzaXZlQnVpbGQgfSBmcm9tICcuLi9oZWxwZXJzL2lzUmVjdXJzaXZlQnVpbGQnO1xuaW1wb3J0IHsgc2hvd1JlY3Vyc2l2ZUJ1aWxkV2FybmluZyB9IGZyb20gJy4uL2hlbHBlcnMvc2hvd1JlY3Vyc2l2ZUJ1aWxkV2FybmluZyc7XG5pbXBvcnQgeyBBTVBTIH0gZnJvbSAnLi9hbXBzJztcbmltcG9ydCB7IEN1c3RvbUJ1aWxkZXIgfSBmcm9tICcuL0N1c3RvbUJ1aWxkZXInO1xuaW1wb3J0IHsgSW5zdGFsbGVyIH0gZnJvbSAnLi9JbnN0YWxsZXInO1xuZXhwb3J0IGNvbnN0IEZpbGVXYXRjaGVyID0gKG5hbWUsIG9wdGlvbnMsIG1hdmVuT3B0cywgaW5zdGFsbE9ubHkgPSBmYWxzZSkgPT4ge1xuICAgIGxldCBsYXN0QnVpbGRDb21wbGV0ZWQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICBjb25zdCBvdXRwdXREaXJlY3RvcnkgPSBvcHRpb25zLm91dHB1dERpcmVjdG9yeSB8fCAndGFyZ2V0JztcbiAgICBjb25zdCBwYXR0ZXJucyA9IG9wdGlvbnMuZXh0IHx8IFsnKiovKiddO1xuICAgIGNvbnNvbGUubG9nKGBXYXRjaGluZyBmaWxlc3lzdGVtIGZvciBjaGFuZ2VzIHRvIHNvdXJjZSBmaWxlcyAoJHtwYXR0ZXJucy5qb2luKCcsICcpfSlgKTtcbiAgICBjb25zdCBhbXBzID0gbmV3IEFNUFMoe1xuICAgICAgICBjd2Q6IG9wdGlvbnMuY3dkLFxuICAgICAgICBwcm9maWxlczogb3B0aW9ucy5hY3RpdmF0ZVByb2ZpbGVzPy5zcGxpdCgnLCcpIHx8IFtdXG4gICAgfSk7XG4gICAgY29uc3QgZGVsaXZlcmFibGVFeHRlbnNpb24gPSBvcHRpb25zLm9iciA/ICcub2JyJyA6ICcuamFyJztcbiAgICByZXR1cm4gd2F0Y2gocGF0dGVybnMsIHtcbiAgICAgICAgY3dkOiBvcHRpb25zLmN3ZCB8fCBjd2QoKSxcbiAgICAgICAgdXNlUG9sbGluZzogdHJ1ZSxcbiAgICAgICAgaW50ZXJ2YWw6IDIgKiAxMDAwLFxuICAgICAgICBiaW5hcnlJbnRlcnZhbDogMiAqIDEwMDAsXG4gICAgICAgIGF3YWl0V3JpdGVGaW5pc2g6IHRydWUsXG4gICAgICAgIHBlcnNpc3RlbnQ6IHRydWUsXG4gICAgICAgIGF0b21pYzogdHJ1ZVxuICAgIH0pLm9uKCdjaGFuZ2UnLCBhc3luYyAocGF0aCkgPT4ge1xuICAgICAgICBpZiAob3B0aW9ucy5pbnN0YWxsICYmIHBhdGguc3RhcnRzV2l0aChvdXRwdXREaXJlY3RvcnkpICYmIHBhdGgudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChkZWxpdmVyYWJsZUV4dGVuc2lvbikpIHtcbiAgICAgICAgICAgIGF3YWl0IEluc3RhbGxlcihuYW1lLCBwYXRoLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghcGF0aC5zdGFydHNXaXRoKG91dHB1dERpcmVjdG9yeSkgJiYgIWluc3RhbGxPbmx5KSB7XG4gICAgICAgICAgICBpZiAoaXNSZWN1cnNpdmVCdWlsZChsYXN0QnVpbGRDb21wbGV0ZWQpKSB7XG4gICAgICAgICAgICAgICAgc2hvd1JlY3Vyc2l2ZUJ1aWxkV2FybmluZyhvdXRwdXREaXJlY3RvcnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0RldGVjdGVkIGZpbGUgY2hhbmdlLCByZWJ1aWxkaW5nIEF0bGFzaWFuIERhdGEgQ2VudGVyIHBsdWdpbicpO1xuICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5leGVjKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGFtcHMuYnVpbGQobWF2ZW5PcHRzKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBGaW5pc2hlZCBidWlsZGluZyBBdGxhc3NpYW4gRGF0YSBDZW50ZXIgcGx1Z2luIGZvciAke25hbWV9Li4uIPCfkqpgKTtcbiAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYEZhaWxlZCB0byBidWlsZCBBdGxhc3NpYW4gRGF0YSBDZW50ZXIgcGx1Z2luIGZvciAke25hbWV9Li4uIPCfmLBgKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBidWlsZGVyID0gbmV3IEN1c3RvbUJ1aWxkZXIoeyBjbWQ6IG9wdGlvbnMuZXhlYywgY3dkOiBvcHRpb25zLmN3ZCB8fCBjd2QoKSB9KTtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgYnVpbGRlci5idWlsZCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYEZpbmlzaGVkIGJ1aWxkaW5nIEF0bGFzc2lhbiBEYXRhIENlbnRlciBwbHVnaW4gZm9yICR7bmFtZX0uLi4g8J+SqmApO1xuICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIGJ1aWxkIEF0bGFzc2lhbiBEYXRhIENlbnRlciBwbHVnaW4gZm9yICR7bmFtZX0uLi4g8J+YsGApO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGFzdEJ1aWxkQ29tcGxldGVkID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG4iLCJpbXBvcnQgeyByZWFscGF0aFN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSAncGF0aCc7XG5leHBvcnQgY29uc3QgdG9BYnNvbHV0ZVBhdGggPSAocmVsYXRpdmVQYXRoKSA9PiB7XG4gICAgY29uc3QgWywgZmlsZVBhdGhdID0gcHJvY2Vzcy5hcmd2O1xuICAgIGNvbnN0IGV4ZWN1dGFibGVGaWxlRGlyID0gZGlybmFtZShyZWFscGF0aFN5bmMoZmlsZVBhdGgpKTtcbiAgICBjb25zdCBiYXNlZGlyID0gZXhlY3V0YWJsZUZpbGVEaXIuc3Vic3RyaW5nKDAsIGV4ZWN1dGFibGVGaWxlRGlyLmluZGV4T2YoJ2RjZHgnKSArIDQpO1xuICAgIHJldHVybiBqb2luKGJhc2VkaXIsIHJlbGF0aXZlUGF0aC5yZXBsYWNlQWxsKCcuLi8nLCAnJykpO1xufTtcbiIsImltcG9ydCB7IHJlYWRGaWxlU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IHRvQWJzb2x1dGVQYXRoIH0gZnJvbSAnLi90b0Fic29sdXRlUGF0aCc7XG5leHBvcnQgY29uc3QgZ2V0VmVyc2lvbnMgPSAoKSA9PiB7XG4gICAgY29uc3QgY29udGVudCA9IHJlYWRGaWxlU3luYyh0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzL3ZlcnNpb25zLmpzb24nKSwgJ3V0Zi04Jyk7XG4gICAgY29uc3QgdmVyc2lvbnMgPSBKU09OLnBhcnNlKGNvbnRlbnQpO1xuICAgIHJldHVybiB2ZXJzaW9ucztcbn07XG4iLCJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IGNvbnNvbGUgZnJvbSAnY29uc29sZSc7XG5pbXBvcnQgeyB3cml0ZUZpbGVTeW5jIH0gZnJvbSAnZnMnO1xuaW1wb3J0IHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IHsgZ2V0VmVyc2lvbnMgfSBmcm9tICcuL2dldFZlcnNpb25zJztcbmltcG9ydCB7IHRvQWJzb2x1dGVQYXRoIH0gZnJvbSAnLi90b0Fic29sdXRlUGF0aCc7XG5jb25zdCByZXBvc2l0b3JpZXMgPSBbXG4gICAgeyBuYW1lOiAnamlyYScsIHJlcG9zaXRvcnk6ICdhdGxhc3NpYW4vamlyYS1zb2Z0d2FyZScgfSxcbiAgICB7IG5hbWU6ICdjb25mbHVlbmNlJywgcmVwb3NpdG9yeTogJ2F0bGFzc2lhbi9jb25mbHVlbmNlJyB9LFxuICAgIHsgbmFtZTogJ2JhbWJvbycsIHJlcG9zaXRvcnk6ICdhdGxhc3NpYW4vYmFtYm9vLXNlcnZlcicgfSxcbiAgICB7IG5hbWU6ICdiaXRidWNrZXQnLCByZXBvc2l0b3J5OiAnYXRsYXNzaWFuL2JpdGJ1Y2tldC1zZXJ2ZXInIH0sXG4gICAgeyBuYW1lOiAnbXlzcWwnLCByZXBvc2l0b3J5OiAnbGlicmFyeS9teXNxbCcgfSxcbiAgICB7IG5hbWU6ICdwb3N0Z3Jlc3FsJywgcmVwb3NpdG9yeTogJ2xpYnJhcnkvcG9zdGdyZXMnIH0sXG5dO1xuY29uc3QgZ2V0TGlzdE9mVGFnc1BhZ2luYXRlZCA9IGFzeW5jICh1cmwpID0+IHtcbiAgICBjb25zdCB0YWdzID0gW107XG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBheGlvcy5nZXQodXJsKTtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgICB0YWdzLnB1c2goLi4uZGF0YS5yZXN1bHRzLm1hcCgoaXRlbSkgPT4gaXRlbS5uYW1lKSk7XG4gICAgICAgIGlmIChkYXRhLm5leHQpIHtcbiAgICAgICAgICAgIC8vIEFkZCBhIGJhY2tvZmYgcGVyaW9kIHRvIGF2b2lkIHJhdGUgbGltaXRpbmdcbiAgICAgICAgICAgIC8vIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAxMDApKTtcbiAgICAgICAgICAgIHRhZ3MucHVzaCguLi5hd2FpdCBnZXRMaXN0T2ZUYWdzUGFnaW5hdGVkKGRhdGEubmV4dCkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0YWdzO1xufTtcbmNvbnN0IHNvcnRCeVZlcnNpb24gPSAoYSwgYikgPT4ge1xuICAgIGEgPSBhLnNwbGl0KCctJylbMF07XG4gICAgYiA9IGIuc3BsaXQoJy0nKVswXTtcbiAgICBpZiAoaXNOYU4oTnVtYmVyKGEuY2hhckF0KDApKSkpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICBpZiAoaXNOYU4oTnVtYmVyKGIuY2hhckF0KDApKSkpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGlmIChhLnNwbGl0KCcuJykubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGEgPSBgJHthfS4wLjBgO1xuICAgIH1cbiAgICBlbHNlIGlmIChhLnNwbGl0KCcuJykubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGEgPSBgJHthfS4wYDtcbiAgICB9XG4gICAgaWYgKGIuc3BsaXQoJy4nKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgYiA9IGAke2F9LjAuMGA7XG4gICAgfVxuICAgIGVsc2UgaWYgKGEuc3BsaXQoJy4nKS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgYiA9IGAke2F9LjBgO1xuICAgIH1cbiAgICBjb25zdCBsZWZ0VmVyc2lvbiA9IHNlbXZlci5jb2VyY2UoYSk7XG4gICAgY29uc3QgcmlnaHRWZXJzaW9uID0gc2VtdmVyLmNvZXJjZShiKTtcbiAgICBpZiAoIWxlZnRWZXJzaW9uKVxuICAgICAgICByZXR1cm4gMTtcbiAgICBpZiAoIXJpZ2h0VmVyc2lvbilcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgcmV0dXJuIHNlbXZlci5sdChsZWZ0VmVyc2lvbiwgcmlnaHRWZXJzaW9uKSA/IC0xIDogc2VtdmVyLmd0KGxlZnRWZXJzaW9uLCByaWdodFZlcnNpb24pID8gMSA6IDA7XG59O1xuZXhwb3J0IGNvbnN0IGdlbmVyYXRlVmVyc2lvbkxpc3QgPSBhc3luYyAocmVwb3NpdG9yeSkgPT4ge1xuICAgIGNvbnN0IHZlcnNpb25zID0gZ2V0VmVyc2lvbnMoKTtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBmb3IgYXdhaXQgKGNvbnN0IGl0ZW0gb2YgcmVwb3NpdG9yaWVzKSB7XG4gICAgICAgIGlmIChyZXBvc2l0b3J5ICYmIGl0ZW0ubmFtZSAhPT0gcmVwb3NpdG9yeSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2coYFJldHJpZXZpbmcgbGlzdCBvZiB0YWdzIGZvciAke2l0ZW0ubmFtZX0uLi5gKTtcbiAgICAgICAgY29uc3QgdGFncyA9IGF3YWl0IGdldExpc3RPZlRhZ3NQYWdpbmF0ZWQoYGh0dHBzOi8vaHViLmRvY2tlci5jb20vdjIvcmVwb3NpdG9yaWVzLyR7aXRlbS5yZXBvc2l0b3J5fS90YWdzLz9wYWdlX3NpemU9MTAwYCk7XG4gICAgICAgIHJlc3VsdFtpdGVtLm5hbWVdID0gdGFncy5zb3J0KHNvcnRCeVZlcnNpb24pO1xuICAgIH1cbiAgICAvLyBNaWNyb3NmdCBTUUwgU2VydmVyIGhhcyBpdCdzIG93biByZWdpc3RyeSB3aXRoIGEgZGlmZmVyZW50IEFQSVxuICAgIGlmICghcmVwb3NpdG9yeSB8fCByZXBvc2l0b3J5ID09PSAnbXNzcWwnKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZXRyaWV2aW5nIGxpc3Qgb2YgdGFncyBmb3IgbXNzcWwuLi5gKTtcbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBheGlvcy5nZXQoJ2h0dHBzOi8vbWNyLm1pY3Jvc29mdC5jb20vdjIvbXNzcWwvc2VydmVyL3RhZ3MvbGlzdCcpO1xuICAgICAgICByZXN1bHRbJ21zc3FsJ10gPSBkYXRhLnRhZ3Muc29ydChzb3J0QnlWZXJzaW9uKTtcbiAgICB9XG4gICAgT2JqZWN0LmVudHJpZXMocmVzdWx0KS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHZlcnNpb25zW2tleV0gPSB2YWx1ZSk7XG4gICAgd3JpdGVGaWxlU3luYyh0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzL3ZlcnNpb25zLmpzb24nKSwgSlNPTi5zdHJpbmdpZnkodmVyc2lvbnMsIG51bGwsIDIpKTtcbiAgICByZXR1cm4gdmVyc2lvbnM7XG59O1xuIiwiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0IHsgQ29tbWFuZCBhcyBDb21tYW5kZXIsIEludmFsaWRPcHRpb25Bcmd1bWVudEVycm9yLCBPcHRpb24gfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgZ3JhY2VmdWxFeGl0IH0gZnJvbSAnZXhpdC1ob29rJztcbmltcG9ydCB7IGdsb2IgfSBmcm9tICdnbG9iJztcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tICdwYXRoJztcbmltcG9ydCB7IGN3ZCB9IGZyb20gJ3Byb2Nlc3MnO1xuaW1wb3J0IHsgQWN0aW9uSGFuZGxlciB9IGZyb20gJy4uL2hlbHBlcnMvQWN0aW9uSGFuZGxlcic7XG5pbXBvcnQgeyBBTVBTIH0gZnJvbSAnLi4vaGVscGVycy9hbXBzJztcbmltcG9ydCB7IEN1c3RvbUJ1aWxkZXIgfSBmcm9tICcuLi9oZWxwZXJzL0N1c3RvbUJ1aWxkZXInO1xuaW1wb3J0IHsgRmlsZVdhdGNoZXIgfSBmcm9tICcuLi9oZWxwZXJzL0ZpbGVXYXRjaGVyJztcbmltcG9ydCB7IGdlbmVyYXRlVmVyc2lvbkxpc3QgfSBmcm9tICcuLi9oZWxwZXJzL2dlbmVyYXRlVmVyc2lvbkxpc3QnO1xuaW1wb3J0IHsgZ2V0VmVyc2lvbnMgfSBmcm9tICcuLi9oZWxwZXJzL2dldFZlcnNpb25zJztcbmltcG9ydCB7IEluc3RhbGxlciB9IGZyb20gJy4uL2hlbHBlcnMvSW5zdGFsbGVyJztcbmNvbnN0IHByb2dyYW0gPSBuZXcgQ29tbWFuZGVyKCk7XG5jb25zdCB2ZXJzaW9ucyA9IGdldFZlcnNpb25zKCk7XG5jb25zdCBDb21tYW5kID0gKCkgPT4ge1xuICAgIGxldCBxdWlja1JlbG9hZCA9IG51bGw7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgYWN0aW9uOiBhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgYW1wcyA9IG5ldyBBTVBTKHtcbiAgICAgICAgICAgICAgICBjd2Q6IG9wdGlvbnMuY3dkLFxuICAgICAgICAgICAgICAgIHByb2ZpbGVzOiBvcHRpb25zLmFjdGl2YXRlUHJvZmlsZXM/LnNwbGl0KCcsJykgfHwgW11cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKCFhbXBzLmlzQXRsYXNzaWFuUGx1Z2luKCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBmaW5kIGFuIEF0bGFzc2lhbiBQbHVnaW4gcHJvamVjdCBpbiB0aGUgY3VycmVudCBkaXJlY3Rvcnkg8J+klCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbmFtZSA9IGFtcHMuZ2V0QXBwbGljYXRpb24oKTtcbiAgICAgICAgICAgIGlmICghbmFtZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIEF0bGFzc2lhbiBQbHVnaW4gcHJvamVjdCBkb2VzIG5vdCBjb250YWluIGFuIEFNUFMgY29uZmlndXJhdGlvbiwgdW5hYmxlIHRvIGRldGVjdCBwcm9kdWN0IPCfmLAnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHZlcnNpb24gPSBhbXBzLmdldEFwcGxpY2F0aW9uVmVyc2lvbigpO1xuICAgICAgICAgICAgaWYgKCF2ZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZGV0ZXJtaW5lIHZlcnNpb24gZnJvbSBBTVBTIGFuZCBubyBwcm9kdWN0IHZlcnNpb24gcHJvdmlkZWQgKC0tdGFnKScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIXZlcnNpb25zW25hbWVdLmluY2x1ZGVzKHZlcnNpb24pKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYENvdWxkIG5vdCBmaW5kIHNwZWNpZmllZCB2ZXJzaW9uICR7dmVyc2lvbn0sIHVwZGF0aW5nICR7bmFtZX0gdmVyc2lvbiBsaXN0YCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZFZlcnNpb25zID0gYXdhaXQgZ2VuZXJhdGVWZXJzaW9uTGlzdChuYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoIXVwZGF0ZWRWZXJzaW9uc1tuYW1lXS5pbmNsdWRlcyh2ZXJzaW9uKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFByb2R1Y3QgdmVyc2lvbiAnJHt2ZXJzaW9ufScgaXMgaW52YWxpZC4gQWxsb3dlZCBjaG9pY2VzIGFyZSAke3ZlcnNpb25zW25hbWVdLmpvaW4oJywgJyl9LmApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghb3B0aW9ucy53YXRjaCAmJiBvcHRpb25zLmV4dCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3B0aW9uQXJndW1lbnRFcnJvcignSW52YWxpZCBhcmd1bWVudCBcIi0tZXh0XCIuIFRoaXMgb3B0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIGluIGNvbWJpbmF0aW9uIHdpdGggXCItLXdhdGNoXCInKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFvcHRpb25zLmluc3RhbGwgJiYgb3B0aW9ucy5vYnIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wdGlvbkFyZ3VtZW50RXJyb3IoJ0ludmFsaWQgYXJndW1lbnQgXCItLW9iclwiLiBUaGlzIG9wdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBpbiBjb21iaW5hdGlvbiB3aXRoIFwiLS1pbnN0YWxsXCInKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFvcHRpb25zLmluc3RhbGwgJiYgb3B0aW9ucy5vdXRwdXREaXJlY3RvcnkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wdGlvbkFyZ3VtZW50RXJyb3IoJ0ludmFsaWQgYXJndW1lbnQgXCItLW91dHB1dERpcmVjdG9yeVwiLiBUaGlzIG9wdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBpbiBjb21iaW5hdGlvbiB3aXRoIFwiLS1pbnN0YWxsXCInKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKG9wdGlvbnMuZXhlYyAmJiBvcHRpb25zLmFjdGl2YXRlUHJvZmlsZXMpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wdGlvbkFyZ3VtZW50RXJyb3IoJ0ludmFsaWQgYXJndW1lbnQgXCItLWFjdGl2YXRlLXByb2ZpbGVzXCIuIFRoaXMgb3B0aW9uIGlzIG5vdCBhdmFpbGFibGUgaW4gY29tYmluYXRpb24gd2l0aCBcIi0tZXhlY1wiJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5vYnIgJiYgIW9wdGlvbnMudXNlcm5hbWUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wdGlvbkFyZ3VtZW50RXJyb3IoJ01pc3NpbmcgYXJndW1lbnQgXCItLXVzZXJuYW1lXCIsIHJlcXVpcmVkIGZvciBpbnN0YWxsaW5nIE9CUiBhcnRpZmFjdHMnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKG9wdGlvbnMub2JyICYmICFvcHRpb25zLnBhc3N3b3JkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcHRpb25Bcmd1bWVudEVycm9yKCdNaXNzaW5nIGFyZ3VtZW50IFwiLS1wYXNzd29yZFwiLCByZXF1aXJlZCBmb3IgaW5zdGFsbGluZyBPQlIgYXJ0aWZhY3RzJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBtYXZlbk9wdHMgPSBwcm9ncmFtLmFyZ3Muc2xpY2UoKTtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmFjdGl2YXRlUHJvZmlsZXMpIHtcbiAgICAgICAgICAgICAgICBtYXZlbk9wdHMucHVzaCguLi5bJy1QJywgb3B0aW9ucy5hY3RpdmF0ZVByb2ZpbGVzXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3B0aW9ucy53YXRjaCkge1xuICAgICAgICAgICAgICAgIHF1aWNrUmVsb2FkID0gRmlsZVdhdGNoZXIobmFtZSwgb3B0aW9ucywgbWF2ZW5PcHRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBCdWlsZGluZyBBdGxhc3NpYW4gRGF0YSBDZW50ZXIgcGx1Z2luIGZvciAke25hbWV9Li4uIPCfkoNgKTtcbiAgICAgICAgICAgIGlmICghb3B0aW9ucy5leGVjKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgYW1wcy5idWlsZChtYXZlbk9wdHMpLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRmluaXNoZWQgYnVpbGRpbmcgQXRsYXNzaWFuIERhdGEgQ2VudGVyIHBsdWdpbiBmb3IgJHtuYW1lfS4uLiDwn5KqYCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy53YXRjaCAmJiBvcHRpb25zLmluc3RhbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG91dHB1dERpcmVjdG9yeSA9IG9wdGlvbnMub3V0cHV0RGlyZWN0b3J5IHx8ICd0YXJnZXQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVsaXZlcmFibGVFeHRlbnNpb24gPSBvcHRpb25zLm9iciA/ICdvYnInIDogJ2phcic7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlcyA9IGF3YWl0IGdsb2IoYCR7b3V0cHV0RGlyZWN0b3J5fS8qLiR7ZGVsaXZlcmFibGVFeHRlbnNpb259YCwgeyBjd2Q6IHJlc29sdmUob3B0aW9ucy5jd2QgfHwgY3dkKCkpIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoZmlsZXMubWFwKHBhdGggPT4gSW5zdGFsbGVyKG5hbWUsIHBhdGgsIG9wdGlvbnMpKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ3VzdG9tQnVpbGRlcih7IGNtZDogb3B0aW9ucy5leGVjLCBjd2Q6IG9wdGlvbnMuY3dkIHx8IGN3ZCgpIH0pO1xuICAgICAgICAgICAgICAgIGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRmluaXNoZWQgYnVpbGRpbmcgQXRsYXNzaWFuIERhdGEgQ2VudGVyIHBsdWdpbiBmb3IgJHtuYW1lfS4uLiDwn5KqYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9ySGFuZGxlcjogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHF1aWNrUmVsb2FkKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFN0b3BwaW5nIGZpbGVzeXN0ZW0gd2F0Y2hlci4uLiDij7NgKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBxdWlja1JlbG9hZC5jbG9zZSgpLmNhdGNoKCgpID0+IG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc29sZS5sb2coYFN1Y2Nlc3NmdWxseSBzdG9wcGVkIGFsbCBydW5uaW5nIHByb2Nlc3NlcyDwn5KqYCk7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbnByb2dyYW1cbiAgICAubmFtZSgnZGNkeCBidWlsZCcpXG4gICAgLmRlc2NyaXB0aW9uKGBCdWlsZCB0aGUgQXRsYXNzaWFuIERhdGEgQ2VudGVyIHBsdWdpbiB1c2luZyB0aGUgQXRsYXNzaWFuIE1hdmVuIFBsdWdpbiBTdWl0ZSAoQU1QUykgY29uZmlndXJhdGlvbi5cbklmIHRoZXJlIGlzIGEgcnVubmluZyBpbnN0YW5jZSwgaXQgd2lsbCB0cnkgdG8gaW5zdGFsbCB0aGUgcGx1Z2luIHVzaW5nIFF1aWNrUmVsb2FkLlxuXG5Zb3UgY2FuIGFkZCBNYXZlbiBidWlsZCBhcmd1bWVudHMgYWZ0ZXIgdGhlIGNvbW1hbmQgb3B0aW9ucy5gKVxuICAgIC51c2FnZSgnW29wdGlvbnNdIFsuLi5tYXZlbl9hcmd1bWVudHNdJylcbiAgICAuYWxsb3dVbmtub3duT3B0aW9uKHRydWUpXG4gICAgLnNob3dIZWxwQWZ0ZXJFcnJvcih0cnVlKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLXcsIC0td2F0Y2gnLCAnV2F0Y2ggZm9yIGZpbGVzeXN0ZW0gY2hhbmdlcyBpbiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBhbmQgcmVidWlsZCBwbHVnaW4nKS5kZWZhdWx0KGZhbHNlKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZXh0IDxwYXR0ZXJucy4uLj4nLCAnR2xvYiBwYXR0ZXJucyB0byB1c2Ugd2hlbiB3YXRjaGluZyBmb3IgZmlsZSBjaGFuZ2VzIChvbmx5IGF2YWlsYWJsZSB3aXRoIC0td2F0Y2gsIGRlZmF1bHRzIHRvICoqLyopJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctaSwgLS1pbnN0YWxsJywgJ0luc3RhbGwgdGhlIHBsdWdpbiBpbnRvIGEgcnVubmluZyBpbnN0YW5jZSBvZiB0aGUgaG9zdCBhcHBsaWNhdGlvbiAob25seSBhdmFpbGFibGUgd2l0aCAtLXdhdGNoKScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLW8sIC0tb3V0cHV0RGlyZWN0b3J5IDxkaXJlY3Rvcnk+JywgJ091dHB1dCBkaXJlY3Rvcnkgd2hlcmUgdG8gbG9vayBmb3IgZ2VuZXJhdGVkIEpBUiBmaWxlcyAob25seSBhdmFpbGFibGUgd2l0aCAtLWluc3RhbGwsIGRlZmF1bHRzIHRvIGB0YXJnZXRgKScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1vYnInLCAnVXBsb2FkIGdlbmVyYXRlZCBPQlIgZmlsZSBpbnN0ZWFkIG9mIEpBUiBmaWxlIHdoZW4gaW5zdGFsbGluZyB0aGUgYXBwIChvbmx5IGF2YWlsYWJsZSB3aXRoIC0taW5zdGFsbCknKS5kZWZhdWx0KGZhbHNlKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tdXNlcm5hbWUgPHVzZXJuYW1lPicsICdUaGUgdXNlcm5hbWUgb2YgdGhlIGFkbWluaXN0cmF0b3IgKHJlcXVpcmVkIHdpdGggLS1vYnIpJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXBhc3N3b3JkIDxwYXNzd29yZD4nLCAnVGhlIHBhc3N3b3JkIG9mIHRoZSBhZG1pbmlzdHJhdG9yIChyZXF1aXJlZCB3aXRoIC0tb2JyKScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLVAsIC0tYWN0aXZhdGUtcHJvZmlsZXMgPGFyZz4nLCAnQ29tbWEtZGVsaW1pdGVkIGxpc3Qgb2YgcHJvZmlsZXMgdG8gYWN0aXZhdGUnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tY3dkIDxkaXJlY3Rvcnk+JywgJ1NwZWNpZnkgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IHdoZXJlIHRvIGZpbmQgdGhlIEFNUFMgY29uZmlndXJhdGlvbicpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1leGVjIDxjb21tYW5kPicsICdCdWlsZCBjb21tYW5kIHRvIHJ1biBpbnN0ZWFkIG9mIE1hdmVuJykpXG4gICAgLmFjdGlvbihvcHRpb25zID0+IEFjdGlvbkhhbmRsZXIocHJvZ3JhbSwgQ29tbWFuZCgpLCBvcHRpb25zKSk7XG5wcm9ncmFtLnBhcnNlQXN5bmMocHJvY2Vzcy5hcmd2KS5jYXRjaCgoKSA9PiBncmFjZWZ1bEV4aXQoMSkpO1xucHJvY2Vzcy5vbignU0lHSU5UJywgKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGBSZWNlaXZlZCB0ZXJtIHNpZ25hbCwgdHJ5aW5nIHRvIHN0b3AgZ3JhY2VmdWxseSDwn5KqYCk7XG4gICAgZ3JhY2VmdWxFeGl0KDEpO1xufSk7XG4iXSwibmFtZXMiOlsidmVyc2lvbnMiLCJEb2NrZXIuZ2V0UnVubmluZ0NvbnRh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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDaERNLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUMvQyxJQUFJLFlBQVk7QUFDaEIsSUFBSSxPQUFPO0FBQ1gsSUFBSSxPQUFPO0FBQ1gsQ0FBQyxDQUFDLENBQUM7QUFDSSxNQUFNLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDN0MsSUFBSSxX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
9663
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VzIjpbIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvQWN0aW9uSGFuZGxlci5qcyIsIi4uLy4uL2Rpc3Qvc3JjL3R5cGVzL0RhdGFiYXNlLmpzIiwiLi4vLi4vZGlzdC9zcmMvdHlwZXMvQXBwbGljYXRpb24uanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2FtcHMuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL0N1c3RvbUJ1aWxkZXIuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2lzUmVjdXJzaXZlQnVpbGQuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL3Nob3dSZWN1cnNpdmVCdWlsZFdhcm5pbmcuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2RvY2tlci5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvdXBtLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9JbnN0YWxsZXIuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL0ZpbGVXYXRjaGVyLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy90b0Fic29sdXRlUGF0aC5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvZ2V0VmVyc2lvbnMuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2dlbmVyYXRlVmVyc2lvbkxpc3QuanMiLCIuLi8uLi9kaXN0L3NyYy9jb21tYW5kcy9idWlsZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3luY0V4aXRIb29rLCBncmFjZWZ1bEV4aXQgfSBmcm9tICdleGl0LWhvb2snO1xuaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5leHBvcnQgY29uc3QgQWN0aW9uSGFuZGxlciA9IGFzeW5jIChwcm9ncmFtLCB7IGFjdGlvbiwgZXJyb3JIYW5kbGVyIH0sIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBvcHMgPSBvcHRpb25zIHx8IHByb2dyYW0ub3B0cygpO1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHtcbiAgICAgICAgbGV0IGVycm9yTWVzc2FnZSA9ICcnO1xuICAgICAgICBhc3luY0V4aXRIb29rKGFzeW5jIChjb2RlKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChjb2RlICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGVycm9ySGFuZGxlcihvcHMpLmNhdGNoKCgpID0+IG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2UudHJpbSgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdlIGFyZSByZWplY3RpbmcgdGhlIHByb21pc2UgdG8gYXZvaWQgdGhlXG4gICAgICAgICAgICAgICAgICAgIC8vIFwiQ2FsbGluZyBwcm9jZXNzLmV4aXRcIiBsb2cgbWVzc2FnZSBmcm9tIGV4aXQtaG9va1xuICAgICAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogZXJyO1xuICAgICAgICAgICAgICAgIHJlamVjdChtZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgd2FpdDogNjAgKiAxICogMTAwMFxuICAgICAgICB9KTtcbiAgICAgICAgYWN0aW9uKG9wcykudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBncmFjZWZ1bEV4aXQoMCk7XG4gICAgICAgIH0pLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2Ygei5ab2RFcnJvcikge1xuICAgICAgICAgICAgICAgIGVyci5pc3N1ZXMuZm9yRWFjaChpc3N1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSArPSBgVW5hYmxlIHRvIHBhcnNlIG9wdGlvbiAke2lzc3VlLnBhdGguam9pbignLCcpfTogJHtpc3N1ZS5tZXNzYWdlfVxcbmA7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvciB8fCB0eXBlb2YgZXJyID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGVyci50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3JhY2VmdWxFeGl0KDEpO1xuICAgICAgICB9KTtcbiAgICB9KS5jYXRjaChtZXNzYWdlID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2UgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHByb2dyYW0uZXJyb3IobWVzc2FnZSk7XG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBlcnJvciBtZXNzYWdlLFxuICAgICAgICAgICAgLy8gd2UgY2FuIGFzc3VtZSBhIGNsZWFuIGV4aXRcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcbiIsImltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuaW1wb3J0IHZlcnNpb25zIGZyb20gJy4uLy4uL2Fzc2V0cy92ZXJzaW9ucy5qc29uJztcbmV4cG9ydCBjb25zdCBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMgPSB6LmVudW0oW1xuICAgICdwb3N0Z3Jlc3FsJyxcbiAgICAnbXlzcWwnLFxuICAgICdtc3NxbCdcbl0pO1xuZXhwb3J0IGNvbnN0IFN1cHBvcnRlZE1TU1FMRWRpdGlvbnMgPSB6LmVudW0oW1xuICAgICdEZXZlbG9wZXInLFxuICAgICdFeHByZXNzJyxcbiAgICAnU3RhbmRhcmQnLFxuICAgICdFbnRlcnByaXNlJyxcbiAgICAnRW50ZXJwcmlzZUNvcmUnXG5dKTtcbmV4cG9ydCBjb25zdCBEYXRhYmFzZU9wdGlvbnMgPSB6Lm9iamVjdCh7XG4gICAgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKSxcbiAgICBkYXRhYmFzZTogei5zdHJpbmcoKS5kZWZhdWx0KCdkY2R4JyksXG4gICAgdXNlcm5hbWU6IHouc3RyaW5nKCkuZGVmYXVsdCgnZGNkeCcpLFxuICAgIHBhc3N3b3JkOiB6LnN0cmluZygpLmRlZmF1bHQoJ2RjZHgnKSxcbiAgICBjbGVhbjogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgcHJ1bmU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIHZlcmJvc2U6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKVxufSk7XG5leHBvcnQgY29uc3QgUG9zdGdyZVNRTE9wdGlvbnMgPSBEYXRhYmFzZU9wdGlvbnMuZXh0ZW5kKHtcbiAgICBuYW1lOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCksXG4gICAgdGFnOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IHZlcnNpb25zW1N1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbF0uaW5jbHVkZXMoaXRlbSkpLmRlZmF1bHQoJ2xhdGVzdCcpLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKS5kZWZhdWx0KDU0MzIpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSAnb3JnLnBvc3RncmVzcWwuRHJpdmVyJykuZGVmYXVsdCgnb3JnLnBvc3RncmVzcWwuRHJpdmVyJylcbn0pO1xuZXhwb3J0IGNvbnN0IE15U1FMT3B0aW9ucyA9IERhdGFiYXNlT3B0aW9ucy5leHRlbmQoe1xuICAgIG5hbWU6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWwpLFxuICAgIHRhZzogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiB2ZXJzaW9uc1tTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsXS5pbmNsdWRlcyhpdGVtKSkuZGVmYXVsdCgnbGF0ZXN0JyksXG4gICAgcG9ydDogei5udW1iZXIoKS5vcih6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkpLmRlZmF1bHQoMzMwNiksXG4gICAgZHJpdmVyOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IGl0ZW0gPT09ICdjb20ubXlzcWwuamRiYy5Ecml2ZXInKS5kZWZhdWx0KCdjb20ubXlzcWwuamRiYy5Ecml2ZXInKVxufSk7XG5leHBvcnQgY29uc3QgTVNTUUxPcHRpb25zID0gRGF0YWJhc2VPcHRpb25zLmV4dGVuZCh7XG4gICAgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLnJlZmluZShpdGVtID0+IGl0ZW0gPT09IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXNzcWwpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbCksXG4gICAgdGFnOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IHZlcnNpb25zW1N1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXNzcWxdLmluY2x1ZGVzKGl0ZW0pKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBlZGl0aW9uOiBTdXBwb3J0ZWRNU1NRTEVkaXRpb25zLmRlZmF1bHQoJ0RldmVsb3BlcicpLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKS5kZWZhdWx0KDE0MzMpLFxuICAgIHVzZXJuYW1lOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IGl0ZW0gPT09ICdzYScpLmRlZmF1bHQoJ3NhJyksXG4gICAgcGFzc3dvcmQ6IHouc3RyaW5nKCkuZGVmYXVsdCgnRGF0YUNlbnRlckRYIScpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSAnY29tLm1pY3Jvc29mdC5zcWxzZXJ2ZXIuamRiYy5TUUxTZXJ2ZXJEcml2ZXInKS5kZWZhdWx0KCdjb20ubWljcm9zb2Z0LnNxbHNlcnZlci5qZGJjLlNRTFNlcnZlckRyaXZlcicpXG59KTtcbiIsImltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuaW1wb3J0IHsgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzIH0gZnJvbSAnLi9EYXRhYmFzZSc7XG5leHBvcnQgY29uc3QgU3VwcG9ydGVkQXBwbGljYXRpb25zID0gei5lbnVtKFtcbiAgICAnamlyYScsXG4gICAgJ2NvbmZsdWVuY2UnLFxuICAgICdiaXRidWNrZXQnLFxuICAgICdiYW1ib28nXG5dKTtcbmV4cG9ydCBjb25zdCBBcHBsaWNhdGlvbk9wdGlvbnMgPSB6Lm9iamVjdCh7XG4gICAgbmFtZTogU3VwcG9ydGVkQXBwbGljYXRpb25zLFxuICAgIHRhZzogei5zdHJpbmcoKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBkYXRhYmFzZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLmRlZmF1bHQoJ3Bvc3RncmVzcWwnKSxcbiAgICBkYXRhYmFzZVRhZzogei5zdHJpbmcoKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBwb3J0OiB6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkuZGVmYXVsdCgnODAnKSxcbiAgICBjb250ZXh0UGF0aDogei5zdHJpbmcoKSxcbiAgICB4bXM6IHouc3RyaW5nKCkuZGVmYXVsdCgnMTAyNG0nKSxcbiAgICB4bXg6IHouc3RyaW5nKCkuZGVmYXVsdCgnMTAyNG0nKSxcbiAgICB3YXRjaDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgZXh0OiB6LmFycmF5KHouc3RyaW5nKCkpLFxuICAgIGluc3RhbGw6IHouYm9vbGVhbigpLFxuICAgIG91dHB1dERpcmVjdG9yeTogei5zdHJpbmcoKSxcbiAgICBhY3RpdmF0ZVByb2ZpbGVzOiB6LnN0cmluZygpLFxuICAgIGNsZWFuOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBwcnVuZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgZGVidWc6IHouYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG4gICAgY3dkOiB6LnN0cmluZygpXG59KS5wYXJ0aWFsKHtcbiAgICBjb250ZXh0UGF0aDogdHJ1ZSxcbiAgICBleHQ6IHRydWUsXG4gICAgaW5zdGFsbDogdHJ1ZSxcbiAgICBvdXRwdXREaXJlY3Rvcnk6IHRydWUsXG4gICAgYWN0aXZhdGVQcm9maWxlczogdHJ1ZSxcbiAgICBjd2Q6IHRydWVcbn0pO1xuIiwiaW1wb3J0IHsgRE9NUGFyc2VyLCBYTUxTZXJpYWxpemVyIH0gZnJvbSAnQHhtbGRvbS94bWxkb20nO1xuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IFhNTFBhcnNlciB9IGZyb20gJ2Zhc3QteG1sLXBhcnNlcic7XG5pbXBvcnQgeyBleGlzdHNTeW5jLCByZWFkRmlsZVN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmltcG9ydCB4cGF0aCBmcm9tICd4cGF0aCc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5leHBvcnQgY2xhc3MgQU1QUyB7XG4gICAgb3B0aW9ucztcbiAgICBtYXZlbiA9IG51bGw7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucyA9IHtcbiAgICAgICAgcHJvZmlsZXM6IFtdXG4gICAgfSkge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHVibGljIE1ldGhvZHNcbiAgICBzdG9wKCkge1xuICAgICAgICBpZiAodGhpcy5tYXZlbikge1xuICAgICAgICAgICAgY29uc3Qga2lsbGVkID0gdGhpcy5tYXZlbi5raWxsKDApO1xuICAgICAgICAgICAgaWYgKCFraWxsZWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byB0ZXJtaW5hdGUgZXhpc3RpbmcgTWF2ZW4gcHJvY2VzcycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGJ1aWxkKGFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1hdmVuKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2lsbGVkID0gdGhpcy5tYXZlbi5raWxsKDApO1xuICAgICAgICAgICAgICAgIGlmICgha2lsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ0ZhaWxlZCB0byB0ZXJtaW5hdGUgZXhpc3RpbmcgTWF2ZW4gcHJvY2VzcycpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm1hdmVuID0gc3Bhd24oJ212bicsIFsncGFja2FnZScsIC4uLmFyZ3NdLCB7IGN3ZDogdGhpcy5vcHRpb25zPy5jd2QgfHwgY3dkKCksIHN0ZGlvOiAnaW5oZXJpdCcgfSk7XG4gICAgICAgICAgICB0aGlzLm1hdmVuLm9uKCdleGl0JywgKGNvZGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm1hdmVuID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoY29kZSA9PT0gMCB8fCBjb2RlID09PSAxMzApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgTWF2ZW4gZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaXNBdGxhc3NpYW5QbHVnaW4gPSAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBub2RlcyA9IHRoaXMuZ2V0Tm9kZXMoJy8vKltsb2NhbC1uYW1lKCk9XFwncGFja2FnaW5nXFwnXScpO1xuICAgICAgICAgICAgcmV0dXJuIG5vZGVzLnNvbWUoaXRlbSA9PiBpdGVtLnRleHRDb250ZW50ID09PSAnYXRsYXNzaWFuLXBsdWdpbicpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgZ2V0QXBwbGljYXRpb25WZXJzaW9uKCkge1xuICAgICAgICBjb25zdCBhcHBsaWNhdGlvbnMgPSB0aGlzLmdldEFwcGxpY2F0aW9ucygpO1xuICAgICAgICBpZiAoYXBwbGljYXRpb25zLnNpemUgPT09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IFssIHZlcnNpb25dID0gQXJyYXkuZnJvbShhcHBsaWNhdGlvbnMpWzBdO1xuICAgICAgICAgICAgcmV0dXJuIHZlcnNpb247XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYXBwbGljYXRpb25zLnNpemUgPiAxKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBBdGxhc3NpYW4gUGx1Z2luIHByb2plY3QgY29udGFpbnMgbXVsdGlwbGUgQU1QUyBjb25maWd1cmF0aW9uLCB1bmFibGUgdG8gZGVjaWRlIHdoaWNoIHByb2R1Y3QgdG8gdXNlIPCfmLAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBnZXRBcHBsaWNhdGlvbigpIHtcbiAgICAgICAgY29uc3QgYXBwbGljYXRpb25zID0gdGhpcy5nZXRBcHBsaWNhdGlvbnMoKTtcbiAgICAgICAgaWYgKGFwcGxpY2F0aW9ucy5zaXplID09PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBbbmFtZV0gPSBBcnJheS5mcm9tKGFwcGxpY2F0aW9ucylbMF07XG4gICAgICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChhcHBsaWNhdGlvbnMuc2l6ZSA+IDEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIEF0bGFzc2lhbiBQbHVnaW4gcHJvamVjdCBjb250YWlucyBtdWx0aXBsZSBBTVBTIGNvbmZpZ3VyYXRpb24sIHVuYWJsZSB0byBkZWNpZGUgd2hpY2ggcHJvZHVjdCB0byB1c2Ug8J+YsCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBnZXRBcHBsaWNhdGlvbnMoKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBNYXAoKTtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSB0aGlzLmdldE5vZGVzKCcvLypbbG9jYWwtbmFtZSgpPVxcJ2dyb3VwSWRcXCcgYW5kIHRleHQoKT1cXCdjb20uYXRsYXNzaWFuLm1hdmVuLnBsdWdpbnNcXCddJyk7XG4gICAgICAgIGNvbnN0IG5vZGVzV2l0aEFjdGl2ZVByb2ZpbGUgPSBub2Rlcy5maWx0ZXIobm9kZSA9PiB0aGlzLmlzQWN0aXZhdGVkUHJvZmlsZShub2RlKSk7XG4gICAgICAgIG5vZGVzV2l0aEFjdGl2ZVByb2ZpbGUuZm9yRWFjaChub2RlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgICAgICAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgcGx1Z2luIH0gPSB0aGlzLnRvT2JqZWN0KHBhcmVudE5vZGUpO1xuICAgICAgICAgICAgICAgIGlmICgnYW1wcy1tYXZlbi1wbHVnaW4nID09PSBwbHVnaW4/LmFydGlmYWN0SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBjb25maWd1cmF0aW9uIH0gPSBwbHVnaW4gfHwge307XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uPy5wcm9kdWN0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29uZmlndXJhdGlvbj8ucHJvZHVjdHMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5wcm9kdWN0cy5mb3JFYWNoKChwcm9kdWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1cHBvcnRlZEFwcGxpY2F0aW9uID0gdGhpcy5nZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbihwcm9kdWN0LmlkKSB8fCB0aGlzLmdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHByb2R1Y3QuaW5zdGFuY2VJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0ZWRBcHBsaWNhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHByb2R1Y3QudmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQoc3VwcG9ydGVkQXBwbGljYXRpb24sIHZlcnNpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByb2R1Y3QgfSA9IGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RzIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9kdWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1cHBvcnRlZEFwcGxpY2F0aW9uID0gdGhpcy5nZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbihwcm9kdWN0LmlkKSB8fCB0aGlzLmdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHByb2R1Y3QuaW5zdGFuY2VJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0ZWRBcHBsaWNhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHByb2R1Y3QudmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQoc3VwcG9ydGVkQXBwbGljYXRpb24sIHZlcnNpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdXBwb3J0ZWRBcHBsaWNhdGlvbiA9IHRoaXMuZ2V0U3VwcG9ydGVkQXBwbGljYXRpb24ocGx1Z2luPy5hcnRpZmFjdElkKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZ2V0VmVyc2lvbihub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRlZEFwcGxpY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0KHN1cHBvcnRlZEFwcGxpY2F0aW9uLCB2ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcml2YXRlIE1ldGhvZHNcbiAgICBnZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbih2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWU/LmluY2x1ZGVzKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuamlyYSkpIHtcbiAgICAgICAgICAgIHJldHVybiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmppcmE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsdWU/LmluY2x1ZGVzKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuY29uZmx1ZW5jZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2U7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsdWU/LmluY2x1ZGVzKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vKSkge1xuICAgICAgICAgICAgcmV0dXJuIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbHVlPy5pbmNsdWRlcyhTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldCkpIHtcbiAgICAgICAgICAgIHJldHVybiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZ2V0VmVyc2lvbihub2RlKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBjb25zdCB7IHBsdWdpbiB9ID0gdGhpcy50b09iamVjdChwYXJlbnROb2RlKTtcbiAgICAgICAgICAgIGNvbnN0IHsgY29uZmlndXJhdGlvbiB9ID0gcGx1Z2luIHx8IHt9O1xuICAgICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RWZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHBsdWdpbi5jb25maWd1cmF0aW9uLnByb2R1Y3RWZXJzaW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJvZHVjdCA9IEFycmF5LmlzQXJyYXkoY29uZmlndXJhdGlvbj8ucHJvZHVjdHMpID8gY29uZmlndXJhdGlvbj8ucHJvZHVjdHNbMF0gOiBjb25maWd1cmF0aW9uLnByb2R1Y3RzLnByb2R1Y3Q7XG4gICAgICAgICAgICAgICAgaWYgKHByb2R1Y3QgJiYgcHJvZHVjdC52ZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvUHJvcGVydHlSZXBsYWNlbWVudChwcm9kdWN0LnZlcnNpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBkb1Byb3BlcnR5UmVwbGFjZW1lbnQodmFsdWUpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIHByb2ZpbGUsIHJlcGxhY2UgcHJvZmlsZSBwcm9wZXJ0aWVzIGZpcnN0IGFzIHRoZXkgdGFrZSBwcmVjZWRlbmNlXG4gICAgICAgIGNvbnN0IHByb2ZpbGVQcm9wZXJ0aWVzID0gdGhpcy5nZXRQcm9wZXJ0aWVzKCk7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHByb2ZpbGVQcm9wZXJ0aWVzKS5mb3JFYWNoKChbcHJvcGVydHlLZXksIHByb3BlcnR5VmFsdWVdKSA9PiB7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZUFsbChgJFxceyR7cHJvcGVydHlLZXl9fWAsIHByb3BlcnR5VmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IHRoaXMuZ2V0UHJvcGVydGllcygpO1xuICAgICAgICBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKS5mb3JFYWNoKChbcHJvcGVydHlLZXksIHByb3BlcnR5VmFsdWVdKSA9PiB7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZUFsbChgJFxceyR7cHJvcGVydHlLZXl9fWAsIHByb3BlcnR5VmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgZ2V0UHJvcGVydGllcygpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy5nZXROb2RlcygnLy8qW2xvY2FsLW5hbWUoKT1cXCdwcm9wZXJ0aWVzXFwnXScpO1xuICAgICAgICBjb25zdCBub2Rlc1dpdGhBY3RpdmVQcm9maWxlID0gbm9kZXMuZmlsdGVyKG5vZGUgPT4gdGhpcy5pc0FjdGl2YXRlZFByb2ZpbGUobm9kZSkpO1xuICAgICAgICBub2Rlc1dpdGhBY3RpdmVQcm9maWxlLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHByb3BlcnRpZXMgfSA9IHRoaXMudG9PYmplY3Qobm9kZSk7XG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHJlc3VsdFtrZXldID0gdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgZ2V0Tm9kZXMoZXhwcmVzc2lvbiwgc2luZ2xlKSB7XG4gICAgICAgIGNvbnN0IHBvbUZpbGVQYXRoID0gam9pbih0aGlzLm9wdGlvbnM/LmN3ZCB8fCBjd2QoKSwgJy4vcG9tLnhtbCcpO1xuICAgICAgICBjb25zdCBoYXNQb21GaWxlID0gZXhpc3RzU3luYyhwb21GaWxlUGF0aCk7XG4gICAgICAgIGlmIChoYXNQb21GaWxlKSB7XG4gICAgICAgICAgICBjb25zdCB4bWwgPSByZWFkRmlsZVN5bmMocG9tRmlsZVBhdGgsICd1dGY4Jyk7XG4gICAgICAgICAgICBjb25zdCBkb2MgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKHhtbCwgJ3RleHQveG1sJyk7XG4gICAgICAgICAgICBjb25zdCBub2RlcyA9IHNpbmdsZSA/IHhwYXRoLnNlbGVjdChleHByZXNzaW9uLCBkb2MsIHRydWUpIDogeHBhdGguc2VsZWN0KGV4cHJlc3Npb24sIGRvYywgZmFsc2UpO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9kZXMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoc2luZ2xlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgdG9PYmplY3Qobm9kZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VyID0gbmV3IFhNTFBhcnNlcigpO1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlci5wYXJzZShuZXcgWE1MU2VyaWFsaXplcigpLnNlcmlhbGl6ZVRvU3RyaW5nKG5vZGUpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmaW5kUGFyZW50Tm9kZUJ5VGFnTmFtZSh0YWdOYW1lLCBub2RlKSB7XG4gICAgICAgIGNvbnN0IHsgcGFyZW50Tm9kZSB9ID0gbm9kZTtcbiAgICAgICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIGlmIChwYXJlbnROb2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHRhZ05hbWUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnROb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmluZFBhcmVudE5vZGVCeVRhZ05hbWUodGFnTmFtZSwgcGFyZW50Tm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlzQWN0aXZhdGVkUHJvZmlsZShub2RlKSB7XG4gICAgICAgIGNvbnN0IHByb2ZpbGVQYXJlbnROb2RlID0gdGhpcy5maW5kUGFyZW50Tm9kZUJ5VGFnTmFtZSgncHJvZmlsZScsIG5vZGUpO1xuICAgICAgICBjb25zdCBwcm9maWxlTm9kZSA9IHByb2ZpbGVQYXJlbnROb2RlID8gdGhpcy50b09iamVjdChwcm9maWxlUGFyZW50Tm9kZSkgOiBudWxsO1xuICAgICAgICBpZiAoIXByb2ZpbGVOb2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwcm9maWxlTm9kZSAmJiAocHJvZmlsZU5vZGUuYWN0aXZlQnlEZWZhdWx0ID09PSAndHJ1ZScgfHwgdGhpcy5vcHRpb25zLnByb2ZpbGVzLmluY2x1ZGVzKHByb2ZpbGVOb2RlLnByb2ZpbGUuaWQpKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJpbXBvcnQgeyBleGVjU3luYyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgY3dkIH0gZnJvbSAncHJvY2Vzcyc7XG5leHBvcnQgY2xhc3MgQ3VzdG9tQnVpbGRlciB7XG4gICAgb3B0aW9ucztcbiAgICBwcm9jID0gbnVsbDtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQdWJsaWMgTWV0aG9kc1xuICAgIHN0b3AoKSB7XG4gICAgICAgIGlmICh0aGlzLnByb2MpIHtcbiAgICAgICAgICAgIGNvbnN0IGtpbGxlZCA9IHRoaXMucHJvYy5raWxsKDApO1xuICAgICAgICAgICAgaWYgKCFraWxsZWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byB0ZXJtaW5hdGUgZXhpc3RpbmcgYnVpbGQgcHJvY2VzcycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGJ1aWxkKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJvYykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGtpbGxlZCA9IHRoaXMucHJvYy5raWxsKDApO1xuICAgICAgICAgICAgICAgIGlmICgha2lsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ0ZhaWxlZCB0byB0ZXJtaW5hdGUgZXhpc3RpbmcgYnVpbGQgcHJvY2VzcycpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGV4ZWNTeW5jKHRoaXMub3B0aW9ucy5jbWQsIHsgY3dkOiB0aGlzLm9wdGlvbnM/LmN3ZCB8fCBjd2QoKSwgc3RkaW86ICdpbmhlcml0JyB9KTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBzdGF0dXMgfSA9IGVycjtcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBCdWlsZCBleGl0ZWQgd2l0aCBjb2RlICR7c3RhdHVzfWApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiZXhwb3J0IGNvbnN0IGlzUmVjdXJzaXZlQnVpbGQgPSAobGFzdEJ1aWxkQ29tcGxldGVkKSA9PiBsYXN0QnVpbGRDb21wbGV0ZWQgPiAobmV3IERhdGUoKS5nZXRUaW1lKCkgLSA1ICogMTAwMCk7XG4iLCJleHBvcnQgY29uc3Qgc2hvd1JlY3Vyc2l2ZUJ1aWxkV2FybmluZyA9IChvdXRwdXREaXJlY3RvcnkpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJlY3Vyc2l2ZSBidWlsZCB0cmlnZ2VyIGRldGVjdGVkLiBUaGUgbGFzdCBidWlsZCBjb21wbGV0ZWQgbGFzdCB0aGFuIDUgc2Vjb25kcyBhZ29cblRoaXMgbWF5IGluZGljYXRlIHRoYXQgdGhlIGJ1aWxkIGNoYW5nZXMgZmlsZXMgb3V0c2lkZSBvZiB0aGUgb3V0cHV0IGRpcmVjdG9yeVxuQWx0ZXJuYXRpdmVseSwgTWF2ZW4gaXMgdXNpbmcgYSBkaWZmZXJlbnQgb3V0cHV0IGRpcmVjdG9yeSB0aGFuIGNvbmZpZ3VyZWQ6XG4nJHtvdXRwdXREaXJlY3Rvcnl9J1xuXG5QbGVhc2UgbWFrZSBzdXJlIHRvIGNoZWNrIHlvdXIgYnVpbGQgcHJvY2VzcyBhbmQvb3Igc3BlY2lmeSBhIGRpZmZlcmVudCBvdXRwdXQgZGlyZWN0b3J5IHVzaW5nIHRoZSAnLW8nIG9wdGlvblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09YCk7XG59O1xuIiwiaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBEb2NrZXJvZGUgZnJvbSAnZG9ja2Vyb2RlJztcbmltcG9ydCB7IGN3ZCB9IGZyb20gJ3Byb2Nlc3MnO1xuY29uc3QgZG9ja2VyID0gbmV3IERvY2tlcm9kZSgpO1xuZXhwb3J0IGNvbnN0IGdldFJ1bm5pbmdDb250YWluZXJJZHMgPSBhc3luYyAoYXBwbGljYXRpb24pID0+IHtcbiAgICBjb25zdCBjb250YWluZXJzID0gYXdhaXQgZG9ja2VyLmxpc3RDb250YWluZXJzKHsgZmlsdGVyczoge1xuICAgICAgICAgICAgc3RhdHVzOiBbJ3J1bm5pbmcnXSxcbiAgICAgICAgICAgIGxhYmVsOiBbYGNvbS5kb2NrZXIuY29tcG9zZS5zZXJ2aWNlPSR7YXBwbGljYXRpb259YF1cbiAgICAgICAgfSB9KTtcbiAgICByZXR1cm4gY29udGFpbmVycy5tYXAoaXRlbSA9PiBpdGVtLklkKTtcbn07XG5leHBvcnQgY29uc3QgY29weSA9IGFzeW5jIChzb3VyY2VQYXRoLCBkZXN0aW5hdGlvblBhdGgpID0+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCBkb2NrZXIgPSBzcGF3bignZG9ja2VyJywgWydjcCcsIHNvdXJjZVBhdGgsIGRlc3RpbmF0aW9uUGF0aF0sIHsgY3dkOiBjd2QoKSwgc3RkaW86ICdpbmhlcml0JyB9KTtcbiAgICAgICAgZG9ja2VyLm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICAgIGRvY2tlci5vbignZXhpdCcsIChjb2RlKSA9PiAoY29kZSA9PT0gMCkgPyByZXNvbHZlKCkgOiByZWplY3QobmV3IEVycm9yKGBEb2NrZXIgZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCkpKTtcbiAgICB9KTtcbn07XG4iLCJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IEZvcm1EYXRhIGZyb20gJ2Zvcm0tZGF0YSc7XG5pbXBvcnQgeyBjcmVhdGVSZWFkU3RyZWFtIH0gZnJvbSAnZnMnO1xuZXhwb3J0IGNvbnN0IHVwbG9hZFRvVVBNID0gYXN5bmMgKGJhc2VVcmwsIHBhdGgsIHVzZXJuYW1lLCBwYXNzd29yZCwgdmVyYm9zZSA9IHRydWUpID0+IHtcbiAgICBjb25zdCBjcmVkZW50aWFscyA9IHVzZXJuYW1lICYmIHBhc3N3b3JkID8gQnVmZmVyLmZyb20oYCR7dXNlcm5hbWV9OiR7cGFzc3dvcmR9YCkudG9TdHJpbmcoJ2Jhc2U2NCcpIDogbnVsbDtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLmdldChgJHtiYXNlVXJsfS9yZXN0L3BsdWdpbnMvMS4wLz9vc19hdXRoVHlwZT1iYXNpY2AsIGNyZWRlbnRpYWxzID8ge1xuICAgICAgICBoZWFkZXJzOiB7ICdBdXRob3JpemF0aW9uJzogYEJhc2ljICR7Y3JlZGVudGlhbHN9YCB9XG4gICAgfSA6IHVuZGVmaW5lZCkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgdmVyYm9zZSAmJiBjb25zb2xlLmxvZygnRmFpbGVkIHRvIHVwbG9hZCBwbHVnaW4gYXJjaGl2ZSBmaWxlIHRvIFVQTSwgdW5hYmxlIHRvIHJldHJpZXZlIHRva2VuJywgZXJyKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSk7XG4gICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gcmVzcG9uc2UuaGVhZGVyc1sndXBtLXRva2VuJ107XG4gICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgncGx1Z2luJywgY3JlYXRlUmVhZFN0cmVhbShwYXRoKSk7XG4gICAgICAgICAgICByZXR1cm4gYXhpb3MucG9zdChgJHtiYXNlVXJsfS9yZXN0L3BsdWdpbnMvMS4wLz90b2tlbj0ke3Rva2VufWAsIGZvcm1EYXRhLCB7IGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybURhdGEuZ2V0SGVhZGVycygpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jcmVkZW50aWFscyA/IHsgJ0F1dGhvcml6YXRpb24nOiBgQmFzaWMgJHtjcmVkZW50aWFsc31gIH0gOiB7fVxuICAgICAgICAgICAgICAgIH0gfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdmVyYm9zZSAmJiBjb25zb2xlLmxvZygnRmluaXNoZWQgdXBsb2FkaW5nIHBsdWdpbiBhcmNoaXZlIHRvIFVQTScpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2ZXJib3NlICYmIGNvbnNvbGUubG9nKCdGYWlsZWQgdG8gdXBsb2FkIHBsdWdpbiBhcmNoaXZlIGZpbGUgdG8gVVBNLCB1bmFibGUgdG8gcmV0cmlldmUgdG9rZW4gZnJvbSBoZWFkZXJzOicsIEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmhlYWRlcnMsIG51bGwsIDIpKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuZXhwb3J0IGNvbnN0IHdhaXRGb3JQbHVnaW5Ub0JlRW5hYmxlZCA9IGFzeW5jIChhcHBLZXksIGJhc2VVcmwsIHVzZXJuYW1lLCBwYXNzd29yZCwgdmVyYm9zZSA9IHRydWUpID0+IHtcbiAgICBjb25zdCBjcmVkZW50aWFscyA9IHVzZXJuYW1lICYmIHBhc3N3b3JkID8gQnVmZmVyLmZyb20oYCR7dXNlcm5hbWV9OiR7cGFzc3dvcmR9YCkudG9TdHJpbmcoJ2Jhc2U2NCcpIDogbnVsbDtcbiAgICB2ZXJib3NlICYmIGNvbnNvbGUubG9nKCdXYWl0aW5nIGZvciBwbHVnaW4gdG8gYmVjb21lIGVuYWJsZWQnKTtcbiAgICBsZXQgaXNFbmFibGVkID0gZmFsc2U7XG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICB3aGlsZSAoIWlzRW5hYmxlZCAmJiBjb3VudCA8IDEyMCkge1xuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAwMCkpO1xuICAgICAgICB2ZXJib3NlICYmIGNvbnNvbGUubG9nKGBXYWl0aW5nIGZvciBwbHVnaW4gdG8gYmVjb21lIGVuYWJsZWQuLi4gJHtjb3VudH1zYCk7XG4gICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgYXhpb3MuZ2V0KGAke2Jhc2VVcmx9L3Jlc3QvcGx1Z2lucy8xLjAvJHthcHBLZXl9LWtleWAsIGNyZWRlbnRpYWxzID8ge1xuICAgICAgICAgICAgaGVhZGVyczogeyAnQXV0aG9yaXphdGlvbic6IGBCYXNpYyAke2NyZWRlbnRpYWxzfWAgfVxuICAgICAgICB9IDogdW5kZWZpbmVkKS5jYXRjaCgoKSA9PiAoeyBkYXRhOiB7IGVuYWJsZWQ6IGZhbHNlIH0gfSkpO1xuICAgICAgICBpc0VuYWJsZWQgPSBkYXRhPy5lbmFibGVkO1xuICAgICAgICBjb3VudCsrO1xuICAgIH1cbiAgICByZXR1cm4gaXNFbmFibGVkO1xufTtcbmV4cG9ydCBjb25zdCByZWdpc3RlckxpY2Vuc2UgPSBhc3luYyAoYXBwS2V5LCBsaWNlbnNlLCBiYXNlVXJsLCB1c2VybmFtZSwgcGFzc3dvcmQsIHZlcmJvc2UgPSB0cnVlKSA9PiB7XG4gICAgY29uc3QgY3JlZGVudGlhbHMgPSB1c2VybmFtZSAmJiBwYXNzd29yZCA/IEJ1ZmZlci5mcm9tKGAke3VzZXJuYW1lfToke3Bhc3N3b3JkfWApLnRvU3RyaW5nKCdiYXNlNjQnKSA6IG51bGw7XG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBheGlvcy5nZXQoYCR7YmFzZVVybH0vcmVzdC9wbHVnaW5zLzEuMC8ke2FwcEtleX0ta2V5L2xpY2Vuc2VgLCB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICdYLUF0bGFzc2lhbi1Ub2tlbic6ICduby1jaGVjaycsXG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3ZuZC5hdGwucGx1Z2lucytqc29uJyxcbiAgICAgICAgICAgIC4uLmNyZWRlbnRpYWxzID8geyAnQXV0aG9yaXphdGlvbic6IGBCYXNpYyAke2NyZWRlbnRpYWxzfWAgfSA6IHt9XG4gICAgICAgIH1cbiAgICB9KS5jYXRjaCgoKSA9PiAoeyBkYXRhOiB7fSB9KSk7XG4gICAgY29uc3QgeyByYXdMaWNlbnNlIH0gPSBkYXRhO1xuICAgIGlmICghcmF3TGljZW5zZSB8fCByYXdMaWNlbnNlICE9PSBsaWNlbnNlKSB7XG4gICAgICAgIHJldHVybiBheGlvcy5wdXQoYCR7YmFzZVVybH0vcmVzdC9wbHVnaW5zLzEuMC8ke2FwcEtleX0ta2V5L2xpY2Vuc2VgLCBgeyBcInJhd0xpY2Vuc2VcIjogXCIke2xpY2Vuc2V9XCIgfWAsIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnWC1BdGxhc3NpYW4tVG9rZW4nOiAnbm8tY2hlY2snLFxuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vdm5kLmF0bC5wbHVnaW5zK2pzb24nLFxuICAgICAgICAgICAgICAgIC4uLmNyZWRlbnRpYWxzID8geyAnQXV0aG9yaXphdGlvbic6IGBCYXNpYyAke2NyZWRlbnRpYWxzfWAgfSA6IHt9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdmVyYm9zZSAmJiBjb25zb2xlLmxvZygnRmluaXNoZWQgdXBsb2FkaW5nIGxpY2Vuc2UgdG8gVVBNJyk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIHZlcmJvc2UgJiYgY29uc29sZS5sb2coJ0ZhaWxlZCB0byB1cGxvYWQgbGljZW5zZSB0byBVUE0nLCBlcnIpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59O1xuIiwiaW1wb3J0IHsgcmVzb2x2ZSBhcyByZXNvbHZlUGF0aCB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgY3dkIH0gZnJvbSAncHJvY2Vzcyc7XG5pbXBvcnQgKiBhcyBEb2NrZXIgZnJvbSAnLi9kb2NrZXInO1xuaW1wb3J0IHsgdXBsb2FkVG9VUE0gfSBmcm9tICcuL3VwbSc7XG5leHBvcnQgY29uc3QgSW5zdGFsbGVyID0gYXN5bmMgKG5hbWUsIHBhdGgsIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBjb250YWluZXJJZHMgPSBhd2FpdCBEb2NrZXIuZ2V0UnVubmluZ0NvbnRhaW5lcklkcyhuYW1lKTtcbiAgICBpZiAoIWNvbnRhaW5lcklkcyB8fCBjb250YWluZXJJZHMubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgY29uc29sZS5sb2coYFRoZXJlIGFyZSBubyBydW5uaW5nIGluc3RhbmNlIG9mICR7bmFtZX0sIHVuYWJsZSB0byBpbnN0YWxsIHBsdWdpbiDwn6SUYCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWxzZSBpZiAoY29udGFpbmVySWRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFRoZXJlIGFyZSBtdWx0cGxlIHJ1bm5pbmcgaW5zdGFuY2Ugb2YgJHtuYW1lfSwgdW5hYmxlIHRvIGRldGVybWluZSB3aGljaCBvbmUgdG8gdXNlIPCfpJRgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjb250YWluZXJJZCA9IGNvbnRhaW5lcklkc1swXTtcbiAgICBpZiAoY29udGFpbmVySWQpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMub2JyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRm91bmQgdXBkYXRlZCBwbHVnaW4sIHVwbG9hZGluZyBpdCB0byBVUE0gb24gcnVubmluZyBpbnN0YW5jZXMgb2YgJHtuYW1lfWApO1xuICAgICAgICAgICAgY29uc3QgaG9zdFVybCA9IG9wdGlvbnMucG9ydCA/IGBsb2NhbGhvc3Q6JHtvcHRpb25zLnBvcnR9YCA6IGBsb2NhbGhvc3RgO1xuICAgICAgICAgICAgY29uc3QgYmFzZVVybCA9IG9wdGlvbnMudXNlcm5hbWUgJiYgb3B0aW9ucy5wYXNzd29yZCA/IGBodHRwOi8vJHtvcHRpb25zLnVzZXJuYW1lfToke29wdGlvbnMucGFzc3dvcmR9QCR7aG9zdFVybH1gIDogYGh0dHA6Ly8ke2hvc3RVcmx9YDtcbiAgICAgICAgICAgIGF3YWl0IHVwbG9hZFRvVVBNKHJlc29sdmVQYXRoKG9wdGlvbnMuY3dkIHx8IGN3ZCgpLCBwYXRoKSwgYmFzZVVybCkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnRmFpbGVkIHRvIHVwbG9hZCBwbHVnaW4gYXJjaGl2ZSBmaWxlIHRvIFVQTScsIGVycik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBGb3VuZCB1cGRhdGVkIHBsdWdpbiwgdXBsb2FkaW5nIGl0IHRvIFF1aWNrUmVsb2FkIG9uIHJ1bm5pbmcgaW5zdGFuY2VzIG9mICR7bmFtZX1gKTtcbiAgICAgICAgICAgIGF3YWl0IERvY2tlci5jb3B5KHJlc29sdmVQYXRoKG9wdGlvbnMuY3dkIHx8IGN3ZCgpLCBwYXRoKSwgYCR7Y29udGFpbmVySWR9Oi9vcHQvcXVpY2tyZWxvYWQvYClcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiBjb25zb2xlLmxvZygnRmluaXNoZWQgdXBsb2FkaW5nIHBsdWdpbiBhcmNoaXZlIHRvIFF1aWNrUmVsb2FkJykpXG4gICAgICAgICAgICAgICAgLmNhdGNoKGVyciA9PiBjb25zb2xlLmxvZygnRmFpbGVkIHRvIHVwbG9hZCBwbHVnaW4gYXJjaGl2ZSBmaWxlIHRvIFF1aWNrUmVsb2FkJywgZXJyKSk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuIiwiaW1wb3J0IHsgd2F0Y2ggfSBmcm9tICdjaG9raWRhcic7XG5pbXBvcnQgeyBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmltcG9ydCB7IGlzUmVjdXJzaXZlQnVpbGQgfSBmcm9tICcuLi9oZWxwZXJzL2lzUmVjdXJzaXZlQnVpbGQnO1xuaW1wb3J0IHsgc2hvd1JlY3Vyc2l2ZUJ1aWxkV2FybmluZyB9IGZyb20gJy4uL2hlbHBlcnMvc2hvd1JlY3Vyc2l2ZUJ1aWxkV2FybmluZyc7XG5pbXBvcnQgeyBBTVBTIH0gZnJvbSAnLi9hbXBzJztcbmltcG9ydCB7IEN1c3RvbUJ1aWxkZXIgfSBmcm9tICcuL0N1c3RvbUJ1aWxkZXInO1xuaW1wb3J0IHsgSW5zdGFsbGVyIH0gZnJvbSAnLi9JbnN0YWxsZXInO1xuZXhwb3J0IGNvbnN0IEZpbGVXYXRjaGVyID0gKG5hbWUsIG9wdGlvbnMsIG1hdmVuT3B0cywgaW5zdGFsbE9ubHkgPSBmYWxzZSkgPT4ge1xuICAgIGxldCBsYXN0QnVpbGRDb21wbGV0ZWQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICBjb25zdCBvdXRwdXREaXJlY3RvcnkgPSBvcHRpb25zLm91dHB1dERpcmVjdG9yeSB8fCAndGFyZ2V0JztcbiAgICBjb25zdCBwYXR0ZXJucyA9IG9wdGlvbnMuZXh0IHx8IFsnKiovKiddO1xuICAgIGNvbnNvbGUubG9nKGBXYXRjaGluZyBmaWxlc3lzdGVtIGZvciBjaGFuZ2VzIHRvIHNvdXJjZSBmaWxlcyAoJHtwYXR0ZXJucy5qb2luKCcsICcpfSlgKTtcbiAgICBjb25zdCBhbXBzID0gbmV3IEFNUFMoe1xuICAgICAgICBjd2Q6IG9wdGlvbnMuY3dkLFxuICAgICAgICBwcm9maWxlczogb3B0aW9ucy5hY3RpdmF0ZVByb2ZpbGVzPy5zcGxpdCgnLCcpIHx8IFtdXG4gICAgfSk7XG4gICAgY29uc3QgZGVsaXZlcmFibGVFeHRlbnNpb24gPSBvcHRpb25zLm9iciA/ICcub2JyJyA6ICcuamFyJztcbiAgICByZXR1cm4gd2F0Y2gocGF0dGVybnMsIHtcbiAgICAgICAgY3dkOiBvcHRpb25zLmN3ZCB8fCBjd2QoKSxcbiAgICAgICAgdXNlUG9sbGluZzogdHJ1ZSxcbiAgICAgICAgaW50ZXJ2YWw6IDIgKiAxMDAwLFxuICAgICAgICBiaW5hcnlJbnRlcnZhbDogMiAqIDEwMDAsXG4gICAgICAgIGF3YWl0V3JpdGVGaW5pc2g6IHRydWUsXG4gICAgICAgIHBlcnNpc3RlbnQ6IHRydWUsXG4gICAgICAgIGF0b21pYzogdHJ1ZVxuICAgIH0pLm9uKCdjaGFuZ2UnLCBhc3luYyAocGF0aCkgPT4ge1xuICAgICAgICBpZiAob3B0aW9ucy5pbnN0YWxsICYmIHBhdGguc3RhcnRzV2l0aChvdXRwdXREaXJlY3RvcnkpICYmIHBhdGgudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChkZWxpdmVyYWJsZUV4dGVuc2lvbikpIHtcbiAgICAgICAgICAgIGF3YWl0IEluc3RhbGxlcihuYW1lLCBwYXRoLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghcGF0aC5zdGFydHNXaXRoKG91dHB1dERpcmVjdG9yeSkgJiYgIWluc3RhbGxPbmx5KSB7XG4gICAgICAgICAgICBpZiAoaXNSZWN1cnNpdmVCdWlsZChsYXN0QnVpbGRDb21wbGV0ZWQpKSB7XG4gICAgICAgICAgICAgICAgc2hvd1JlY3Vyc2l2ZUJ1aWxkV2FybmluZyhvdXRwdXREaXJlY3RvcnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0RldGVjdGVkIGZpbGUgY2hhbmdlLCByZWJ1aWxkaW5nIEF0bGFzaWFuIERhdGEgQ2VudGVyIHBsdWdpbicpO1xuICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5leGVjKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGFtcHMuYnVpbGQobWF2ZW5PcHRzKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBGaW5pc2hlZCBidWlsZGluZyBBdGxhc3NpYW4gRGF0YSBDZW50ZXIgcGx1Z2luIGZvciAke25hbWV9Li4uIPCfkqpgKTtcbiAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYEZhaWxlZCB0byBidWlsZCBBdGxhc3NpYW4gRGF0YSBDZW50ZXIgcGx1Z2luIGZvciAke25hbWV9Li4uIPCfmLBgKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBidWlsZGVyID0gbmV3IEN1c3RvbUJ1aWxkZXIoeyBjbWQ6IG9wdGlvbnMuZXhlYywgY3dkOiBvcHRpb25zLmN3ZCB8fCBjd2QoKSB9KTtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgYnVpbGRlci5idWlsZCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYEZpbmlzaGVkIGJ1aWxkaW5nIEF0bGFzc2lhbiBEYXRhIENlbnRlciBwbHVnaW4gZm9yICR7bmFtZX0uLi4g8J+SqmApO1xuICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIGJ1aWxkIEF0bGFzc2lhbiBEYXRhIENlbnRlciBwbHVnaW4gZm9yICR7bmFtZX0uLi4g8J+YsGApO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGFzdEJ1aWxkQ29tcGxldGVkID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG4iLCJpbXBvcnQgeyByZWFscGF0aFN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSAncGF0aCc7XG5leHBvcnQgY29uc3QgdG9BYnNvbHV0ZVBhdGggPSAocmVsYXRpdmVQYXRoKSA9PiB7XG4gICAgY29uc3QgWywgZmlsZVBhdGhdID0gcHJvY2Vzcy5hcmd2O1xuICAgIGNvbnN0IGV4ZWN1dGFibGVGaWxlRGlyID0gZGlybmFtZShyZWFscGF0aFN5bmMoZmlsZVBhdGgpKTtcbiAgICBjb25zdCBiYXNlZGlyID0gZXhlY3V0YWJsZUZpbGVEaXIuc3Vic3RyaW5nKDAsIGV4ZWN1dGFibGVGaWxlRGlyLmluZGV4T2YoJ2RjZHgnKSArIDQpO1xuICAgIHJldHVybiBqb2luKGJhc2VkaXIsIHJlbGF0aXZlUGF0aC5yZXBsYWNlQWxsKCcuLi8nLCAnJykpO1xufTtcbiIsImltcG9ydCB7IHJlYWRGaWxlU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IHRvQWJzb2x1dGVQYXRoIH0gZnJvbSAnLi90b0Fic29sdXRlUGF0aCc7XG5leHBvcnQgY29uc3QgZ2V0VmVyc2lvbnMgPSAoKSA9PiB7XG4gICAgY29uc3QgY29udGVudCA9IHJlYWRGaWxlU3luYyh0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzL3ZlcnNpb25zLmpzb24nKSwgJ3V0Zi04Jyk7XG4gICAgY29uc3QgdmVyc2lvbnMgPSBKU09OLnBhcnNlKGNvbnRlbnQpO1xuICAgIHJldHVybiB2ZXJzaW9ucztcbn07XG4iLCJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IGNvbnNvbGUgZnJvbSAnY29uc29sZSc7XG5pbXBvcnQgeyB3cml0ZUZpbGVTeW5jIH0gZnJvbSAnZnMnO1xuaW1wb3J0IHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IHsgZ2V0VmVyc2lvbnMgfSBmcm9tICcuL2dldFZlcnNpb25zJztcbmltcG9ydCB7IHRvQWJzb2x1dGVQYXRoIH0gZnJvbSAnLi90b0Fic29sdXRlUGF0aCc7XG5jb25zdCByZXBvc2l0b3JpZXMgPSBbXG4gICAgeyBuYW1lOiAnamlyYScsIHJlcG9zaXRvcnk6ICdhdGxhc3NpYW4vamlyYS1zb2Z0d2FyZScgfSxcbiAgICB7IG5hbWU6ICdjb25mbHVlbmNlJywgcmVwb3NpdG9yeTogJ2F0bGFzc2lhbi9jb25mbHVlbmNlJyB9LFxuICAgIHsgbmFtZTogJ2JhbWJvbycsIHJlcG9zaXRvcnk6ICdhdGxhc3NpYW4vYmFtYm9vLXNlcnZlcicgfSxcbiAgICB7IG5hbWU6ICdiaXRidWNrZXQnLCByZXBvc2l0b3J5OiAnYXRsYXNzaWFuL2JpdGJ1Y2tldC1zZXJ2ZXInIH0sXG4gICAgeyBuYW1lOiAnbXlzcWwnLCByZXBvc2l0b3J5OiAnbGlicmFyeS9teXNxbCcgfSxcbiAgICB7IG5hbWU6ICdwb3N0Z3Jlc3FsJywgcmVwb3NpdG9yeTogJ2xpYnJhcnkvcG9zdGdyZXMnIH0sXG5dO1xuY29uc3QgZ2V0TGlzdE9mVGFnc1BhZ2luYXRlZCA9IGFzeW5jICh1cmwpID0+IHtcbiAgICBjb25zdCB0YWdzID0gW107XG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBheGlvcy5nZXQodXJsKTtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgICB0YWdzLnB1c2goLi4uZGF0YS5yZXN1bHRzLm1hcCgoaXRlbSkgPT4gaXRlbS5uYW1lKSk7XG4gICAgICAgIGlmIChkYXRhLm5leHQpIHtcbiAgICAgICAgICAgIC8vIEFkZCBhIGJhY2tvZmYgcGVyaW9kIHRvIGF2b2lkIHJhdGUgbGltaXRpbmdcbiAgICAgICAgICAgIC8vIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAxMDApKTtcbiAgICAgICAgICAgIHRhZ3MucHVzaCguLi5hd2FpdCBnZXRMaXN0T2ZUYWdzUGFnaW5hdGVkKGRhdGEubmV4dCkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0YWdzO1xufTtcbmNvbnN0IHNvcnRCeVZlcnNpb24gPSAoYSwgYikgPT4ge1xuICAgIGEgPSBhLnNwbGl0KCctJylbMF07XG4gICAgYiA9IGIuc3BsaXQoJy0nKVswXTtcbiAgICBpZiAoaXNOYU4oTnVtYmVyKGEuY2hhckF0KDApKSkpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICBpZiAoaXNOYU4oTnVtYmVyKGIuY2hhckF0KDApKSkpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGlmIChhLnNwbGl0KCcuJykubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGEgPSBgJHthfS4wLjBgO1xuICAgIH1cbiAgICBlbHNlIGlmIChhLnNwbGl0KCcuJykubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGEgPSBgJHthfS4wYDtcbiAgICB9XG4gICAgaWYgKGIuc3BsaXQoJy4nKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgYiA9IGAke2F9LjAuMGA7XG4gICAgfVxuICAgIGVsc2UgaWYgKGEuc3BsaXQoJy4nKS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgYiA9IGAke2F9LjBgO1xuICAgIH1cbiAgICBjb25zdCBsZWZ0VmVyc2lvbiA9IHNlbXZlci5jb2VyY2UoYSk7XG4gICAgY29uc3QgcmlnaHRWZXJzaW9uID0gc2VtdmVyLmNvZXJjZShiKTtcbiAgICBpZiAoIWxlZnRWZXJzaW9uKVxuICAgICAgICByZXR1cm4gMTtcbiAgICBpZiAoIXJpZ2h0VmVyc2lvbilcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgcmV0dXJuIHNlbXZlci5sdChsZWZ0VmVyc2lvbiwgcmlnaHRWZXJzaW9uKSA/IC0xIDogc2VtdmVyLmd0KGxlZnRWZXJzaW9uLCByaWdodFZlcnNpb24pID8gMSA6IDA7XG59O1xuZXhwb3J0IGNvbnN0IGdlbmVyYXRlVmVyc2lvbkxpc3QgPSBhc3luYyAocmVwb3NpdG9yeSkgPT4ge1xuICAgIGNvbnN0IHZlcnNpb25zID0gZ2V0VmVyc2lvbnMoKTtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBmb3IgYXdhaXQgKGNvbnN0IGl0ZW0gb2YgcmVwb3NpdG9yaWVzKSB7XG4gICAgICAgIGlmIChyZXBvc2l0b3J5ICYmIGl0ZW0ubmFtZSAhPT0gcmVwb3NpdG9yeSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2coYFJldHJpZXZpbmcgbGlzdCBvZiB0YWdzIGZvciAke2l0ZW0ubmFtZX0uLi5gKTtcbiAgICAgICAgY29uc3QgdGFncyA9IGF3YWl0IGdldExpc3RPZlRhZ3NQYWdpbmF0ZWQoYGh0dHBzOi8vaHViLmRvY2tlci5jb20vdjIvcmVwb3NpdG9yaWVzLyR7aXRlbS5yZXBvc2l0b3J5fS90YWdzLz9wYWdlX3NpemU9MTAwYCk7XG4gICAgICAgIHJlc3VsdFtpdGVtLm5hbWVdID0gdGFncy5zb3J0KHNvcnRCeVZlcnNpb24pO1xuICAgIH1cbiAgICAvLyBNaWNyb3NmdCBTUUwgU2VydmVyIGhhcyBpdCdzIG93biByZWdpc3RyeSB3aXRoIGEgZGlmZmVyZW50IEFQSVxuICAgIGlmICghcmVwb3NpdG9yeSB8fCByZXBvc2l0b3J5ID09PSAnbXNzcWwnKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZXRyaWV2aW5nIGxpc3Qgb2YgdGFncyBmb3IgbXNzcWwuLi5gKTtcbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBheGlvcy5nZXQoJ2h0dHBzOi8vbWNyLm1pY3Jvc29mdC5jb20vdjIvbXNzcWwvc2VydmVyL3RhZ3MvbGlzdCcpO1xuICAgICAgICByZXN1bHRbJ21zc3FsJ10gPSBkYXRhLnRhZ3Muc29ydChzb3J0QnlWZXJzaW9uKTtcbiAgICB9XG4gICAgT2JqZWN0LmVudHJpZXMocmVzdWx0KS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHZlcnNpb25zW2tleV0gPSB2YWx1ZSk7XG4gICAgd3JpdGVGaWxlU3luYyh0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzL3ZlcnNpb25zLmpzb24nKSwgSlNPTi5zdHJpbmdpZnkodmVyc2lvbnMsIG51bGwsIDIpKTtcbiAgICByZXR1cm4gdmVyc2lvbnM7XG59O1xuIiwiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0IHsgQ29tbWFuZCBhcyBDb21tYW5kZXIsIEludmFsaWRPcHRpb25Bcmd1bWVudEVycm9yLCBPcHRpb24gfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgZ3JhY2VmdWxFeGl0IH0gZnJvbSAnZXhpdC1ob29rJztcbmltcG9ydCB7IGdsb2IgfSBmcm9tICdnbG9iJztcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tICdwYXRoJztcbmltcG9ydCB7IGN3ZCB9IGZyb20gJ3Byb2Nlc3MnO1xuaW1wb3J0IHsgQWN0aW9uSGFuZGxlciB9IGZyb20gJy4uL2hlbHBlcnMvQWN0aW9uSGFuZGxlcic7XG5pbXBvcnQgeyBBTVBTIH0gZnJvbSAnLi4vaGVscGVycy9hbXBzJztcbmltcG9ydCB7IEN1c3RvbUJ1aWxkZXIgfSBmcm9tICcuLi9oZWxwZXJzL0N1c3RvbUJ1aWxkZXInO1xuaW1wb3J0IHsgRmlsZVdhdGNoZXIgfSBmcm9tICcuLi9oZWxwZXJzL0ZpbGVXYXRjaGVyJztcbmltcG9ydCB7IGdlbmVyYXRlVmVyc2lvbkxpc3QgfSBmcm9tICcuLi9oZWxwZXJzL2dlbmVyYXRlVmVyc2lvbkxpc3QnO1xuaW1wb3J0IHsgZ2V0VmVyc2lvbnMgfSBmcm9tICcuLi9oZWxwZXJzL2dldFZlcnNpb25zJztcbmltcG9ydCB7IEluc3RhbGxlciB9IGZyb20gJy4uL2hlbHBlcnMvSW5zdGFsbGVyJztcbmNvbnN0IHByb2dyYW0gPSBuZXcgQ29tbWFuZGVyKCk7XG5jb25zdCB2ZXJzaW9ucyA9IGdldFZlcnNpb25zKCk7XG5jb25zdCBDb21tYW5kID0gKCkgPT4ge1xuICAgIGxldCBxdWlja1JlbG9hZCA9IG51bGw7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgYWN0aW9uOiBhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgYW1wcyA9IG5ldyBBTVBTKHtcbiAgICAgICAgICAgICAgICBjd2Q6IG9wdGlvbnMuY3dkLFxuICAgICAgICAgICAgICAgIHByb2ZpbGVzOiBvcHRpb25zLmFjdGl2YXRlUHJvZmlsZXM/LnNwbGl0KCcsJykgfHwgW11cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKCFhbXBzLmlzQXRsYXNzaWFuUGx1Z2luKCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBmaW5kIGFuIEF0bGFzc2lhbiBQbHVnaW4gcHJvamVjdCBpbiB0aGUgY3VycmVudCBkaXJlY3Rvcnkg8J+klCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbmFtZSA9IGFtcHMuZ2V0QXBwbGljYXRpb24oKTtcbiAgICAgICAgICAgIGlmICghbmFtZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIEF0bGFzc2lhbiBQbHVnaW4gcHJvamVjdCBkb2VzIG5vdCBjb250YWluIGFuIEFNUFMgY29uZmlndXJhdGlvbiwgdW5hYmxlIHRvIGRldGVjdCBwcm9kdWN0IPCfmLAnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHZlcnNpb24gPSBhbXBzLmdldEFwcGxpY2F0aW9uVmVyc2lvbigpO1xuICAgICAgICAgICAgaWYgKCF2ZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZGV0ZXJtaW5lIHZlcnNpb24gZnJvbSBBTVBTIGFuZCBubyBwcm9kdWN0IHZlcnNpb24gcHJvdmlkZWQgKC0tdGFnKScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIXZlcnNpb25zW25hbWVdLmluY2x1ZGVzKHZlcnNpb24pKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYENvdWxkIG5vdCBmaW5kIHNwZWNpZmllZCB2ZXJzaW9uICR7dmVyc2lvbn0sIHVwZGF0aW5nICR7bmFtZX0gdmVyc2lvbiBsaXN0YCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZFZlcnNpb25zID0gYXdhaXQgZ2VuZXJhdGVWZXJzaW9uTGlzdChuYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoIXVwZGF0ZWRWZXJzaW9uc1tuYW1lXS5pbmNsdWRlcyh2ZXJzaW9uKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFByb2R1Y3QgdmVyc2lvbiAnJHt2ZXJzaW9ufScgaXMgaW52YWxpZC4gQWxsb3dlZCBjaG9pY2VzIGFyZSAke3ZlcnNpb25zW25hbWVdLmpvaW4oJywgJyl9LmApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghb3B0aW9ucy53YXRjaCAmJiBvcHRpb25zLmV4dCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3B0aW9uQXJndW1lbnRFcnJvcignSW52YWxpZCBhcmd1bWVudCBcIi0tZXh0XCIuIFRoaXMgb3B0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIGluIGNvbWJpbmF0aW9uIHdpdGggXCItLXdhdGNoXCInKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFvcHRpb25zLmluc3RhbGwgJiYgb3B0aW9ucy5vYnIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wdGlvbkFyZ3VtZW50RXJyb3IoJ0ludmFsaWQgYXJndW1lbnQgXCItLW9iclwiLiBUaGlzIG9wdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBpbiBjb21iaW5hdGlvbiB3aXRoIFwiLS1pbnN0YWxsXCInKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFvcHRpb25zLmluc3RhbGwgJiYgb3B0aW9ucy5vdXRwdXREaXJlY3RvcnkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wdGlvbkFyZ3VtZW50RXJyb3IoJ0ludmFsaWQgYXJndW1lbnQgXCItLW91dHB1dERpcmVjdG9yeVwiLiBUaGlzIG9wdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBpbiBjb21iaW5hdGlvbiB3aXRoIFwiLS1pbnN0YWxsXCInKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKG9wdGlvbnMuZXhlYyAmJiBvcHRpb25zLmFjdGl2YXRlUHJvZmlsZXMpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wdGlvbkFyZ3VtZW50RXJyb3IoJ0ludmFsaWQgYXJndW1lbnQgXCItLWFjdGl2YXRlLXByb2ZpbGVzXCIuIFRoaXMgb3B0aW9uIGlzIG5vdCBhdmFpbGFibGUgaW4gY29tYmluYXRpb24gd2l0aCBcIi0tZXhlY1wiJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5vYnIgJiYgIW9wdGlvbnMudXNlcm5hbWUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wdGlvbkFyZ3VtZW50RXJyb3IoJ01pc3NpbmcgYXJndW1lbnQgXCItLXVzZXJuYW1lXCIsIHJlcXVpcmVkIGZvciBpbnN0YWxsaW5nIE9CUiBhcnRpZmFjdHMnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKG9wdGlvbnMub2JyICYmICFvcHRpb25zLnBhc3N3b3JkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcHRpb25Bcmd1bWVudEVycm9yKCdNaXNzaW5nIGFyZ3VtZW50IFwiLS1wYXNzd29yZFwiLCByZXF1aXJlZCBmb3IgaW5zdGFsbGluZyBPQlIgYXJ0aWZhY3RzJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBtYXZlbk9wdHMgPSBwcm9ncmFtLmFyZ3Muc2xpY2UoKTtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmFjdGl2YXRlUHJvZmlsZXMpIHtcbiAgICAgICAgICAgICAgICBtYXZlbk9wdHMucHVzaCguLi5bJy1QJywgb3B0aW9ucy5hY3RpdmF0ZVByb2ZpbGVzXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3B0aW9ucy53YXRjaCkge1xuICAgICAgICAgICAgICAgIHF1aWNrUmVsb2FkID0gRmlsZVdhdGNoZXIobmFtZSwgb3B0aW9ucywgbWF2ZW5PcHRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBCdWlsZGluZyBBdGxhc3NpYW4gRGF0YSBDZW50ZXIgcGx1Z2luIGZvciAke25hbWV9Li4uIPCfkoNgKTtcbiAgICAgICAgICAgIGlmICghb3B0aW9ucy5leGVjKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgYW1wcy5idWlsZChtYXZlbk9wdHMpLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRmluaXNoZWQgYnVpbGRpbmcgQXRsYXNzaWFuIERhdGEgQ2VudGVyIHBsdWdpbiBmb3IgJHtuYW1lfS4uLiDwn5KqYCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy53YXRjaCAmJiBvcHRpb25zLmluc3RhbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG91dHB1dERpcmVjdG9yeSA9IG9wdGlvbnMub3V0cHV0RGlyZWN0b3J5IHx8ICd0YXJnZXQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVsaXZlcmFibGVFeHRlbnNpb24gPSBvcHRpb25zLm9iciA/ICdvYnInIDogJ2phcic7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlcyA9IGF3YWl0IGdsb2IoYCR7b3V0cHV0RGlyZWN0b3J5fS8qLiR7ZGVsaXZlcmFibGVFeHRlbnNpb259YCwgeyBjd2Q6IHJlc29sdmUob3B0aW9ucy5jd2QgfHwgY3dkKCkpIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoZmlsZXMubWFwKHBhdGggPT4gSW5zdGFsbGVyKG5hbWUsIHBhdGgsIG9wdGlvbnMpKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ3VzdG9tQnVpbGRlcih7IGNtZDogb3B0aW9ucy5leGVjLCBjd2Q6IG9wdGlvbnMuY3dkIHx8IGN3ZCgpIH0pO1xuICAgICAgICAgICAgICAgIGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRmluaXNoZWQgYnVpbGRpbmcgQXRsYXNzaWFuIERhdGEgQ2VudGVyIHBsdWdpbiBmb3IgJHtuYW1lfS4uLiDwn5KqYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9ySGFuZGxlcjogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHF1aWNrUmVsb2FkKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFN0b3BwaW5nIGZpbGVzeXN0ZW0gd2F0Y2hlci4uLiDij7NgKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBxdWlja1JlbG9hZC5jbG9zZSgpLmNhdGNoKCgpID0+IG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc29sZS5sb2coYFN1Y2Nlc3NmdWxseSBzdG9wcGVkIGFsbCBydW5uaW5nIHByb2Nlc3NlcyDwn5KqYCk7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbnByb2dyYW1cbiAgICAubmFtZSgnZGNkeCBidWlsZCcpXG4gICAgLmRlc2NyaXB0aW9uKGBCdWlsZCB0aGUgQXRsYXNzaWFuIERhdGEgQ2VudGVyIHBsdWdpbiB1c2luZyB0aGUgQXRsYXNzaWFuIE1hdmVuIFBsdWdpbiBTdWl0ZSAoQU1QUykgY29uZmlndXJhdGlvbi5cbklmIHRoZXJlIGlzIGEgcnVubmluZyBpbnN0YW5jZSwgaXQgd2lsbCB0cnkgdG8gaW5zdGFsbCB0aGUgcGx1Z2luIHVzaW5nIFF1aWNrUmVsb2FkLlxuXG5Zb3UgY2FuIGFkZCBNYXZlbiBidWlsZCBhcmd1bWVudHMgYWZ0ZXIgdGhlIGNvbW1hbmQgb3B0aW9ucy5gKVxuICAgIC51c2FnZSgnW29wdGlvbnNdIFsuLi5tYXZlbl9hcmd1bWVudHNdJylcbiAgICAuYWxsb3dVbmtub3duT3B0aW9uKHRydWUpXG4gICAgLnNob3dIZWxwQWZ0ZXJFcnJvcih0cnVlKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLXcsIC0td2F0Y2gnLCAnV2F0Y2ggZm9yIGZpbGVzeXN0ZW0gY2hhbmdlcyBpbiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBhbmQgcmVidWlsZCBwbHVnaW4nKS5kZWZhdWx0KGZhbHNlKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZXh0IDxwYXR0ZXJucy4uLj4nLCAnR2xvYiBwYXR0ZXJucyB0byB1c2Ugd2hlbiB3YXRjaGluZyBmb3IgZmlsZSBjaGFuZ2VzIChvbmx5IGF2YWlsYWJsZSB3aXRoIC0td2F0Y2gsIGRlZmF1bHRzIHRvICoqLyopJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctaSwgLS1pbnN0YWxsJywgJ0luc3RhbGwgdGhlIHBsdWdpbiBpbnRvIGEgcnVubmluZyBpbnN0YW5jZSBvZiB0aGUgaG9zdCBhcHBsaWNhdGlvbiAob25seSBhdmFpbGFibGUgd2l0aCAtLXdhdGNoKScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLW8sIC0tb3V0cHV0RGlyZWN0b3J5IDxkaXJlY3Rvcnk+JywgJ091dHB1dCBkaXJlY3Rvcnkgd2hlcmUgdG8gbG9vayBmb3IgZ2VuZXJhdGVkIEpBUiBmaWxlcyAob25seSBhdmFpbGFibGUgd2l0aCAtLWluc3RhbGwsIGRlZmF1bHRzIHRvIGB0YXJnZXRgKScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1vYnInLCAnVXBsb2FkIGdlbmVyYXRlZCBPQlIgZmlsZSBpbnN0ZWFkIG9mIEpBUiBmaWxlIHdoZW4gaW5zdGFsbGluZyB0aGUgYXBwIChvbmx5IGF2YWlsYWJsZSB3aXRoIC0taW5zdGFsbCknKS5kZWZhdWx0KGZhbHNlKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tdXNlcm5hbWUgPHVzZXJuYW1lPicsICdUaGUgdXNlcm5hbWUgb2YgdGhlIGFkbWluaXN0cmF0b3IgKHJlcXVpcmVkIHdpdGggLS1vYnIpJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXBhc3N3b3JkIDxwYXNzd29yZD4nLCAnVGhlIHBhc3N3b3JkIG9mIHRoZSBhZG1pbmlzdHJhdG9yIChyZXF1aXJlZCB3aXRoIC0tb2JyKScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLVAsIC0tYWN0aXZhdGUtcHJvZmlsZXMgPGFyZz4nLCAnQ29tbWEtZGVsaW1pdGVkIGxpc3Qgb2YgcHJvZmlsZXMgdG8gYWN0aXZhdGUnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tY3dkIDxkaXJlY3Rvcnk+JywgJ1NwZWNpZnkgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IHdoZXJlIHRvIGZpbmQgdGhlIEFNUFMgY29uZmlndXJhdGlvbicpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1leGVjIDxjb21tYW5kPicsICdCdWlsZCBjb21tYW5kIHRvIHJ1biBpbnN0ZWFkIG9mIE1hdmVuJykpXG4gICAgLmFjdGlvbihvcHRpb25zID0+IEFjdGlvbkhhbmRsZXIocHJvZ3JhbSwgQ29tbWFuZCgpLCBvcHRpb25zKSk7XG5wcm9ncmFtLnBhcnNlQXN5bmMocHJvY2Vzcy5hcmd2KS5jYXRjaCgoKSA9PiBncmFjZWZ1bEV4aXQoMSkpO1xucHJvY2Vzcy5vbignU0lHSU5UJywgKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGBSZWNlaXZlZCB0ZXJtIHNpZ25hbCwgdHJ5aW5nIHRvIHN0b3AgZ3JhY2VmdWxseSDwn5KqYCk7XG4gICAgZ3JhY2VmdWxFeGl0KDEpO1xufSk7XG4iXSwibmFtZXMiOlsidmVyc2lvbnMiLCJEb2NrZXIuZ2V0UnVubmluZ0NvbnRh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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDaERNLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUMvQyxJQUFJLFlBQVk7QUFDaEIsSUFBSSxPQUFPO0FBQ1gsSUFBSSxPQUFPO0FBQ1gsQ0FBQyxDQUFDLENBQUM7QUFDSSxNQUFNLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxJQUFJLENB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