-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy path02_Spatial_Data.html
executable file
·468 lines (364 loc) · 965 KB
/
02_Spatial_Data.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
<!DOCTYPE html>
<html>
<head>
<title>Spatial Data</title>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="apple-mobile-web-app-capable" content="yes">
<base target="_blank">
<script type="text/javascript">
var SLIDE_CONFIG = {
// Slide settings
settings: {
title: 'Spatial Data',
useBuilds: true,
usePrettify: true,
enableSlideAreas: true,
enableTouch: true,
},
// Author information
presenters: [
{
name: 'Freie Universität Berlin – M.Sc. Landschaftsarchäologie <br> Modellieren in der Landschaftsarchäologie <br> Dr. Daniel Knitter (CAU Kiel) <br>' ,
company: '',
gplus: '',
twitter: '',
www: '',
github: ''
},
]
};
</script>
<style type="text/css">
b, strong {
font-weight: bold;
}
em {
font-style: italic;
}
slides > slide {
-webkit-transition: all 0.4s ease-in-out;
-moz-transition: all 0.4s ease-in-out;
-o-transition: all 0.4s ease-in-out;
transition: all 0.4s ease-in-out;
}
.auto-fadein {
-webkit-transition: opacity 0.6s ease-in;
-webkit-transition-delay: 0.4s;
-moz-transition: opacity 0.6s ease-in 0.4s;
-o-transition: opacity 0.6s ease-in 0.4s;
transition: opacity 0.6s ease-in 0.4s;
opacity: 0;
}
</style>
<link href="data:text/css;charset=utf-8,%40font%2Dface%20%7B%0Afont%2Dfamily%3A%20%27Open%20Sans%27%3B%0Afont%2Dstyle%3A%20normal%3B%0Afont%2Dweight%3A%20400%3B%0Asrc%3A%20url%28data%3Aapplication%2Fx%2Dfont%2Dtruetype%3Bbase64%2CAAEAAAAQAQAABAAARkZUTVyseR0AAI5wAAAAHE9TLzKhPb8OAAABiAAAAGBjbWFwjOjcmQAABUAAAAGyY3Z0IA9NGKQAAA%2B0AAAAomZwZ21%2BYbYRAAAG9AAAB7RnYXNwABUAIwAAjmAAAAAQZ2x5ZqzBrbUAABIIAABRVGhlYWT5NhTaAAABDAAAADZoaGVhDrcE%2BgAAAUQAAAAkaG10eJh3VwIAAAHoAAADWGtlcm4Mlg8JAABjXAAAIwRsb2NhdpdjTAAAEFgAAAGubWF4cAJdAUoAAAFoAAAAIG5hbWXeiHLCAACGYAAABglwb3N0gnjp1QAAjGwAAAHycHJlcEO3lqQAAA6oAAABCQABAAAAARmaMibrIV8PPPUAHwgAAAAAAMnt2GAAAAAAye3YYP55%2FhAHrgdzAAAACAACAAAAAAAAAAEAAAiN%2FagAAAgA%2Fnn%2BeweuAAEAAAAAAAAAAAAAAAAAAADWAAEAAADWAEIABQA9AAQAAgAQAC8AXAAAAQ4AmQADAAEAAwROAZAABQAIBZoFMwAAAR8FmgUzAAAD0QBmAfEIAgILBgYDBQQCAgTgAALvQAAgWwAAACgAAAAAMUFTQwBAACAgrAYf%2FhQAhAiNAlggAAGfAAAAAARIBbYAAAAgAAEIAAAAAAAAAAQUAAACFAAAAiMAmAM1AIUFKwAzBJMAgwaWAGgF1wBxAcUAhQJeAFICXgA9BGoAVgSTAGgB9gA%2FApMAVAIhAJgC8AAUBJMAZgSTALwEkwBkBJMAXgSTACsEkwCFBJMAdQSTAF4EkwBoBJMAagIhAJgCIQA%2FBJMAaASTAHcEkwBoA28AGwcxAHkFEAAABS8AyQUMAH0F1QDJBHMAyQQhAMkF0wB9BecAyQI7AMkCI%2F9gBOkAyQQnAMkHOQDJBggAyQY7AH0E0QDJBjsAfQTyAMkEZABqBG0AEgXTALoEwwAAB2gAGwSeAAgEewAABJEAUgKiAKYC8AAXAqIAMwRWADEDlv%2F8BJ4BiQRzAF4E5wCwA88AcwTnAHMEfQBzArYAHQRiACcE6QCwAgYAogIG%2F5EEMwCwAgYAsAdxALAE6QCwBNUAcwTnALAE5wBzA0QAsAPRAGoC0wAfBOkApAQCAAAGOQAXBDEAJwQIAAIDvgBSAwgAPQRoAe4DCABIBJMAaAIUAAACIwCYBJMAvgSTAD8EkwB7BJMAHwRoAe4EIQB7BJ4BNQaoAGQC1QBGA%2FoAUgSTAGgCkwBUBqgAZAQA%2F%2FoDbQB%2FBJMAaALHADECxwAhBJ4BiQT0ALAFPQBxAiEAmAHRACUCxwBMAwAAQgP6AFAGPQBLBj0ALgY9ABoDbwAzBRAAAAUQAAAFEAAABRAAAAUQAAAFEAAABvz%2F%2FgUMAH0EcwDJBHMAyQRzAMkEcwDJAjsABQI7ALMCO%2F%2FHAjsABQXHAC8GCADJBjsAfQY7AH0GOwB9BjsAfQY7AH0EkwCFBjsAfQXTALoF0wC6BdMAugXTALoEewAABOMAyQT6ALAEcwBeBHMAXgRzAF4EcwBeBHMAXgRzAF4G3QBeA88AcwR9AHMEfQBzBH0AcwR9AHMCBv%2FaAgYAqQIG%2F7MCBv%2FsBMUAcQTpALAE1QBzBNUAcwTVAHME1QBzBNUAcwSTAGgE1QBzBOkApATpAKQE6QCkBOkApAQIAAIE5wCwBAgAAgIGALAHYgB9B4kAcQS8AQwEngFvBLwBCAQAAFIIAABSAVwAGQFcABkB9gA%2FAs0AGQLNABkDPQAZAwIApAJvAFICbwBQAQr%2BeQLHABQEuAA%2FAAAAAwAAAAMAAAAcAAEAAAAAAKwAAwABAAAAHAAEAJAAAAAgACAABAAAAH4A%2FwExAVMCxgLaAtwgFCAaIB4gIiA6IEQgdCCs%2F%2F8AAAAgAKABMQFSAsYC2gLcIBMgGCAcICIgOSBEIHQgrP%2F%2F%2F%2BP%2Fwv%2BR%2F3H9%2F%2F3s%2FevgteCy4LHgruCY4I%2FgYOApAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQYAAAEAAAAAAAAAAQIAAAACAAAAAAAAAAAAAAAAAAAAAQAAAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0%2BP0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGEAhoeJi5OYnqOipKalp6mrqqytr66wsbO1tLa4t7y7vb4AcmRladB4oXBrAHZqAIiaAHMAAGd3AAAAAABsfACouoFjbgAAAABtfQBigoWXw8TIyc3Oysu5AMEA09XR0gAAAHnMzwCEjIONio%2BQkY6VlgCUnJ2bwsXHcQAAxnoAAAAAAEBHW1pZWFVUU1JRUE9OTUxLSklIR0ZFRENCQUA%2FPj08Ozo5ODc2NTEwLy4tLCgnJiUkIyIhHxgUERAPDg0LCgkIBwYFBAMCAQAsILABYEWwAyUgEUZhI0UjYUgtLCBFGGhELSxFI0ZgsCBhILBGYLAEJiNISC0sRSNGI2GwIGAgsCZhsCBhsAQmI0hILSxFI0ZgsEBhILBmYLAEJiNISC0sRSNGI2GwQGAgsCZhsEBhsAQmI0hILSwBECA8ADwtLCBFIyCwzUQjILgBWlFYIyCwjUQjWSCw7VFYIyCwTUQjWSCwBCZRWCMgsA1EI1khIS0sICBFGGhEILABYCBFsEZ2aIpFYEQtLAGxCwpDI0NlCi0sALEKC0MjQwstLACwKCNwsQEoPgGwKCNwsQIoRTqxAgAIDS0sIEWwAyVFYWSwUFFYRUQbISFZLSxJsA4jRC0sIEWwAENgRC0sAbAGQ7AHQ2UKLSwgabBAYbAAiyCxLMCKjLgQAGJgKwxkI2RhXFiwA2FZLSyKA0WKioewESuwKSNEsCl65BgtLEVlsCwjREWwKyNELSxLUlhFRBshIVktLEtRWEVEGyEhWS0sAbAFJRAjIIr1ALABYCPt7C0sAbAFJRAjIIr1ALABYSPt7C0sAbAGJRD1AO3sLSywAkOwAVJYISEhISEbRiNGYIqKRiMgRopgimG4%2F4BiIyAQI4qxDAyKcEVgILAAUFiwAWG4%2F7qLG7BGjFmwEGBoATpZLSwgRbADJUZSS7ATUVtYsAIlRiBoYbADJbADJT8jITgbIRFZLSwgRbADJUZQWLACJUYgaGGwAyWwAyU%2FIyE4GyERWS0sALAHQ7AGQwstLCEhDGQjZIu4QABiLSwhsIBRWAxkI2SLuCAAYhuyAEAvK1mwAmAtLCGwwFFYDGQjZIu4FVViG7IAgC8rWbACYC0sDGQjZIu4QABiYCMhLSxLU1iKsAQlSWQjRWmwQIthsIBisCBharAOI0QjELAO9hshI4oSESA5L1ktLEtTWCCwAyVJZGkgsAUmsAYlSWQjYbCAYrAgYWqwDiNEsAQmELAO9ooQsA4jRLAO9rAOI0SwDu0birAEJhESIDkjIDkvL1ktLEUjRWAjRWAjRWAjdmgYsIBiIC0ssEgrLSwgRbAAVFiwQEQgRbBAYUQbISFZLSxFsTAvRSNFYWCwAWBpRC0sS1FYsC8jcLAUI0IbISFZLSxLUVggsAMlRWlTWEQbISFZGyEhWS0sRbAUQ7AAYGOwAWBpRC0ssC9FRC0sRSMgRYpgRC0sRSNFYEQtLEsjUVi5ADP%2F4LE0IBuzMwA0AFlERC0ssBZDWLADJkWKWGRmsB9gG2SwIGBmIFgbIbBAWbABYVkjWGVZsCkjRCMQsCngGyEhISEhWS0ssAJDVFhLUyNLUVpYOBshIVkbISEhIVktLLAWQ1iwBCVFZLAgYGYgWBshsEBZsAFhI1gbZVmwKSNEsAUlsAglCCBYAhsDWbAEJRCwBSUgRrAEJSNCPLAEJbAHJQiwByUQsAYlIEawBCWwAWAjQjwgWAEbAFmwBCUQsAUlsCngsCkgRWVEsAclELAGJbAp4LAFJbAIJQggWAIbA1mwBSWwAyVDSLAEJbAHJQiwBiWwAyWwAWBDSBshWSEhISEhISEtLAKwBCUgIEawBCUjQrAFJQiwAyVFSCEhISEtLAKwAyUgsAQlCLACJUNIISEhLSxFIyBFGCCwAFAgWCNlI1kjaCCwQFBYIbBAWSNYZVmKYEQtLEtTI0tRWlggRYpgRBshIVktLEtUWCBFimBEGyEhWS0sS1MjS1FaWDgbISFZLSywACFLVFg4GyEhWS0ssAJDVFiwRisbISEhIVktLLACQ1RYsEcrGyEhIVktLLACQ1RYsEgrGyEhISFZLSywAkNUWLBJKxshISFZLSwgiggjS1OKS1FaWCM4GyEhWS0sALACJUmwAFNYILBAOBEbIVktLAFGI0ZgI0ZhIyAQIEaKYbj%2FgGKKsUBAinBFYGg6LSwgiiNJZIojU1g8GyFZLSxLUlh9G3pZLSywEgBLAUtUQi0ssQIAQrEjAYhRsUABiFNaWLkQAAAgiFRYsgIBAkNgQlmxJAGIUVi5IAAAQIhUWLICAgJDYEKxJAGIVFiyAiACQ2BCAEsBS1JYsgIIAkNgQlkbuUAAAICIVFiyAgQCQ2BCWblAAACAY7gBAIhUWLICCAJDYEJZuUAAAQBjuAIAiFRYsgIQAkNgQlmxJgGIUVi5QAACAGO4BACIVFiyAkACQ2BCWblAAAQAY7gIAIhUWLICgAJDYEJZWVlZWVmxAAJDVFhACgVACEAJQAwCDQIbsQECQ1RYsgVACLoBAAAJAQCzDAENARuxgAJDUliyBUAIuAGAsQlAG7IFQAi6AYAACQFAWblAAACAiFW5QAACAGO4BACIVVpYswwADQEbswwADQFZWVlCQkJCQi0sRRhoI0tRWCMgRSBksEBQWHxZaIpgWUQtLLAAFrACJbACJQGwASM%2BALACIz6xAQIGDLAKI2VCsAsjQgGwASM%2FALACIz%2BxAQIGDLAGI2VCsAcjQrABFgEtLLCAsAJDULABsAJDVFtYISMQsCAayRuKEO1ZLSywWSstLIoQ5S1AmQkhSCBVIAEeVR9IA1UfHgEPHj8erx4DTUsmH0xLMx9LRiUfJjQQVSUzJFUZE%2F8fBwT%2FHwYD%2Fx9KSTMfSUYlHxMzElUFAQNVBDMDVR8DAQ8DPwOvAwNHRhkf60YBIzMiVRwzG1UWMxVVEQEPVRAzD1UPD08PAh8Pzw8CDw%2F%2FDwIGAgEAVQEzAFVvAH8ArwDvAAQQAAGAFgEFAbgBkLFUUysrS7gH%2F1JLsAlQW7ABiLAlU7ABiLBAUVqwBoiwAFVaW1ixAQGOWYWNjQBCHUuwMlNYsCAdWUuwZFNYsBAdsRYAQllzcysrXnN0dSsrKysrdCtzdCsrKysrKysrKysrKytzdCsrKxheAAAABhQAFwBOBbYAFwB1BbYFzQAAAAAAAAAAAAAAAAAABEgAFACRAAD%2F7AAAAAD%2F7AAAAAD%2F7AAA%2FhT%2F7AAABbYAE%2FyU%2F%2B3%2Bhf%2Fq%2Fqn%2F7AAY%2FrwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAiwCBAN0AmACPAI4AmQCIAIEBDwCKAAAAAAAAAAAAAAAAADIAWADgAVwBzgJMAmYCkgK%2BAvoDJgNEA1oDfAOWA9gEAgREBKIE5AUwBY4FsAYgBn4GtAboBwgHMgdSB6oIMghyCM4JDAlICX4JrAn8Ci4KRApsCpwKugr4CzALdgu0DAgMVgyqDM4NAg0qDW4Nng3GDfIOFg4wDlQOdg6MDqwPCA9eD5oP7hA8EHwREBFOEXwRuhH4EhASaBKiEuQTOhOOE8IUFBRUFJIUuhUGFTYVcBWcFd4V9hY8FnYWdhaoFvQXRheUF%2BgYDhiKGMAZPBmKGcYZ5BnsGnYajBrEGuIbHBtsG4wbzBv8HB4cUBx4HLIc6h0AHRYdLB2KHZwdrh3AHdId5B3wHj4eSh5cHm4egB6SHqQeth7IHtofMh9EH1YfaB96H4wfnh%2FMIDggSiBcIG4ggCCSINQhPCFMIVwhbCF8IY4hoCIsIjgiSCJYImgieiKMIp4isCLCIyojOiNKI1ojaiN6I4wj0iQ4JEgkWCRoJHokiiTiJPQlDCVwJeomFCZKJoQmmiawJs4m7Cb0JyQnVidwJ5AntCfYJ%2FIoNCiqAAAAAgCY%2F%2BMBiQW2AAMADgArQBQDCQkCBAQPEAEBDAIMBk9ZDBYCAwA%2FPysREgA5GC8REgE5ETMzETMxMAEjAzMDNDMyFhUUBiMiJgFGaTPP4Xg6P0A5NEQBkwQj%2BrSIRkJARz8AAAIAhQOmArAFtgADAAcAH0ANAAMHBAMECAkGAgcDAwA%2FM80yERIBOTkRMxEzMTABAyMDIQMjAwE%2FKGkpAispaCkFtv3wAhD98AIQAAACADMAAAT2BbYAGwAfAJlAVQgfHBUEFAkRDAwJEg8OCwQKExMUFh0eBwQGFwQBABkEGAUFBhQGCiEDGhcDGAoYICEIBAwNDE5ZHAENHwAQERBOWRkVEU8NAU8RAQ0RDREFFxMDCgUALzM%2FMxI5OS8vXV0RMzMrEQAzMxEzMysRADMzERIBOTkRFzMREjk5ETMREhc5ERIXOREzERIXOTIyETMREhc5MTABAyEVIQMjEyEDIxMhNSETITUhEzMDIRMzAyEVASETIQPVQgEb%2Fs1UiVT%2B0VKIUP76AR9E%2FusBK1KLUgExVIZUAQj85QEvQv7RA4P%2BrIH%2BUgGu%2FlIBroEBVH8BtP5MAbT%2BTH%2F%2BrAFUAAMAg%2F%2BJBAwGEgAgACYALQBmQDUnESUdFwQEKhQNBSEAABkFEQkFLi8lDQYNTVkDBiQOKg5MWR0qKxwUHE1ZFyoUBhQGFAUWBQAvLxI5OS8vEjkyKxEAMxEzKxEAMxEzKxEAMxESARc5ETMRMzMzMxEzMzMRMzEwARQGBxUjNSImJzUeATMRLgE1NDY3NTMVFhcHJicRHgIHNCYnETYBFBYXEQ4BBAzMt4Fw0kNT2VnNpcungbirNJWanZxKqlmA2f3dWm9jZgHBiLEX6N8jH5wlLwG4QayIg6gStrQFRYM7C%2F5OMl97ZUhZLP57HgMHTFwpAYMQXQAABQBo%2F%2BwGLQXLAAkAFQAhAC0AMQBFQCQAEAUKFigcIiIuKAowEAYyMwMNHysNKw0rMDEGMBgZJRkHEwcAPzM%2FMz8%2FEjk5Ly8RMxEzERIBFzkRMxEzETMRMzEwExQWMzIRECMiBgUUBiMiJjU0NjMyFgEUFjMyNjU0JiMiBgUUBiMiJjU0NjMyFgkBIwHySlOkpFNKAcqZlIyblZKRnAGmSlRUUFBUVEoBy5mUjpmVko6f%2Fv781ZMDKwQCqqoBVAFSqKrk6e7f4%2Bbu%2FNurqaetq6Wlq%2BPp7t7j5usDIPpKBbYAAAAAAwBx%2F%2BwF0wXNAAsAFQA1AFFAMBMWAB0GIyorListIw4mGR0WCTY3MwxJWTMTDyctDjAFLwMZJgMqKiAvEiAJSlkgBAA%2FKwAYPxI5Lxc5Ehc5PysREgEXOREzETMRMxEzMTABFBYXPgE1NCYjIgYTMjcBDgIVFBYlNDY3LgI1NDYzMhYVFAYHAT4BNzMCBwEjJw4BIyImAZ5IV4FlZ1ZZb5vxn%2F5Lb1wsm%2F65i7RVPSTEr6K6iJ0BlzhDF6hEiQEr5bl29JbX7QSTRX1YS39TTWFg%2B52aAahEWWZBdYn6gshmX2JqOZaop5VrtV3%2BeT6nY%2F7ilP7dsmpc1AAAAQCFA6YBPwW2AAMAFLcAAwMEBQIDAwA%2FzRESATkRMzEwAQMjAwE%2FKGkpBbb98AIQAAAAAAEAUv68AiEFtgANABxADAcACgQABA4PCycDAwA%2FPxESATk5ETMRMzEwExASNzMGAhUUEhcjJgJSm5KikJGUi6CTmgIxAQkBzq7B%2FjL08P42vaoBxgAAAAABAD3%2BvAIMBbYADQAcQAwECgcACgAODwoDBCcAPz8REgE5OREzETMxMAEQAgcjNhI1NAInMxYSAgybkqCLlJGQopOaAjH%2B%2Bf46qLwBy%2FD0Ac7Br%2F4xAAAAAQBWAn8EDgYUAA4AMEAbAwUEAQcNCgkLCQ8QBAoBDQIMDA0KBwQGCA4AAD%2FEMhc5ETMRMxEzERIBFzkxMAEDJRcFEwcLAScTJTcFAwKRKwGOGv6D%2BKywoLDy%2FocdAYcrBhT%2BdW%2B2H%2F66XgFq%2FpZeAUYftm8BiwAAAQBoAOMEKQTDAAsAKEATAAQECQUFDA0DBwgHUFkADwgBCAAvXTMrEQAzERIBOREzMxEzMTABIRUhESMRITUhETMCjQGc%2FmSL%2FmYBmosDF4r%2BVgGqigGsAAEAP%2F74AW0A7gAIABG1BQAJCgUAAC%2FNERIBOTkxMCUXBgIHIzYSNwFeDxpiNX0bQQ3uF2T%2B93JoATJcAAEAVAHZAj8CcQADABG1AgAFBAABAC8zERIBOTkxMBM1IRVUAesB2ZiYAAAAAQCY%2F%2BMBiQDyAAsAGEALBgAADA0JA09ZCRYAPysREgE5ETMxMDc0NjMyFhUUBiMiJpg9OTpBQjkzQ2pDRUVDQUY%2FAAABABQAAALbBbYAAwATtwIABAUDAwISAD8%2FERIBOTkxMAkBIwEC2%2F3fpgIhBbb6SgW2AAAAAgBm%2F%2BwELQXNAAsAFwAoQBQSAAwGAAYZGAkVS1kJBwMPS1kDGQA%2FKwAYPysREgE5OREzETMxMAEQAiMiAhEQEjMyEgEQEjMyEhEQAiMiAgQt7%2Fbs9u707vf84ZakppWVpqSWAt3%2Bhf6KAX8BcgF%2BAXL%2Bfv6S%2FsH%2B3QEnATsBOwEl%2Ft8AAQC8AAACywW2AAoAJEAQCQABCAELDAQJBwcBCQYBGAA%2FPxI5LxI5ERIBOTkRMzMxMCEjETQ3DgEHJwEzAsuiCBU01FgBg4wEEoJ0FS6scgErAAAAAQBkAAAEJQXLABkAK0AXGAEHEwATDgEEGhsQCktZEAcBGExZARgAPysAGD8rERIBFzkRMxEzMTApATUBPgI1NCYjIgYHJzYzMhYVFAIHARUhBCX8PwGBsHA4jn5bo2RYyu7O6pzW%2FsAC8I8Bg7KYkFN1iTxPcajTsov%2B8ND%2BxwgAAAAAAQBe%2F%2BwEGwXLACcAQ0AkGwATBwcAAxYiDQYoKQMXFhcWS1kXFwolJR5LWSUHChFLWQoZAD8rABg%2FKxESADkYLysREgA5ERIBFzkRMxEzMTABFAYHFR4BFRQEISImJzUeATMgERAhIzUzMjY1NCYjIgYHJz4BMzIWA%2B6dkLCq%2Ft7%2B9XTBW1%2FXYAF7%2Fl6QkqvIk35gqm1UWuuC1ewEXoyyHggWtJLR4SMsni8xASkBCo%2BXhmt6NEZwR1HDAAACACsAAARqBb4ACgASADxAHhIFCQICCwcDAAMFAxMUAQUSBUxZCQ8HEhIDBwYDGAA%2FPxI5LxI5MysRADMREgEXOREzMzMRMxEzMTABIxEjESE1ATMRMyERNDcjBgcBBGrZn%2F05Araw2f6ICggwKv43AVD%2BsAFQkQPd%2FCkB5o%2B0YD%2F9dgABAIX%2F7AQdBbYAGgA6QB8PAxkUCBQXAwQcGwARS1kAAAYVFRhMWRUGBgxLWQYZAD8rABg%2FKxESADkYLysREgEXOREzETMxMAEyBBUUACMiJzUeATMyNjUQISIHJxMhFSEDNgIt5wEJ%2Ft%2F%2B94JG0GWww%2F6JX59WNwLX%2FbclcwN95cfj%2Fv5PoC0zpp0BMh03AqyZ%2FkkXAAAAAAIAdf%2FsBC8FywAWACQAREAjGhELISEAAAYRAyYlDAsOHU1ZCw4OFAMUF0tZFBkDCE1ZAwcAPysAGD8rERIAORgvOSsRADMREgEXOREzETMRMzEwExAAITIXFSYjIgIDMzYzMhYVFAIjIgAFMjY1NCYjIg4BFRQeAXUBTwFIcUFNY%2Bv4DAxu7sXj%2BdTj%2FvYB646dkpFalllQkwJxAa8BqxOPGf7b%2Fsas7szk%2FvsBVcizqZGmSoJGZ7JoAAAAAQBeAAAEKwW2AAYAH0AQAQUFAAIDBwgDAkxZAwYAGAA%2FPysREgEXOREzMTAhASE1IRUBAR0CXvzjA839qgUdmYX6zwADAGj%2F7AQpBcsAFgAiAC4ATUApFw8mFCwDHQkJAwYRFA8GLzAGESkgKSBLWSkpDAAMGk1ZDBkAI01ZAAcAPysAGD8rERIAORgvKxESADk5ERIBFzkRMxEzETMRMzEwATIWFRQGBx4BFRQGIyImNTQlLgE1NDYDFBYzMjY1NCYnDgEBIgYVFBYXPgE1NCYCSMjqhpOylv7d6vwBMop463enl5WmnMKVhgE6fY52n493kQXLuqRssklVu3u22c28%2B4xOtXCfvfumeIaMemGXR0CbA2d4ZFyEQjyKXGV3AAAAAAIAav%2FsBCUFywAXACUAQUAiGxEiCgoAAAQRAyYnDh5NWQsUDg4CFBQYS1kUBwIHTVkCGQA%2FKwAYPysREgA5GC8SOSsREgEXOREzETMRMzEwARAhIic1FjMyEhMjDgEjIiY1NAAzMhYSASIGFRQWMzI%2BATU0LgEEJf1odERQZvD1Cww3tnLC5AD%2F0JXfeP4Uj5yQk1uZWFKTA0b8phSPGgEpATNTV%2BjQ5AEImf7bATC4pJClSoBGabJmAAAAAgCY%2F%2BMBiQRkAAsAFQAoQBQQBgYMAAAWFw4TT1kOEAkDT1kJFgA%2FKwAYPysREgE5ETMzETMxMDc0NjMyFhUUBiMiJhE0MzIVFAYjIiaYPTk6QUI5M0N2e0I5M0NqQ0VFQ0FGPwO7h4dBRj8AAgA%2F%2FvgBhQRkAAgAEgAiQBABDQ0FCQkUEwsQT1kLEAUAAC%2FNPysREgE5ETMzETMxMCUXBgIHIzYSNwM0MzIVFAYjIiYBXg8aYjV9G0ENFXd7Qjk6Pe4XZP73cmgBMlwC74eHQUZGAAABAGgA8gQpBNkABgAVQAkEAAUBBAcIAwAALy8REgEXOTEwJQE1ARUJAQQp%2FD8DwfzyAw7yAaZiAd%2BV%2Fo3%2BuAAAAgB3AcEEGQPjAAMABwAqQBUHAgQAAgAJCAQFUFkEAQBQWQ8BAQEAL10rABgvKxESATk5ETMRMzEwEzUhFQE1IRV3A6L8XgOiA1qJif5niYkAAAAAAQBoAPIEKQTZAAYAFUAJBQECAAQHCAYDAC8vERIBFzkxMBMJATUBFQFoAw%2F88QPB%2FD8BiQFGAXWV%2FiFi%2FloAAAIAG%2F%2FjAzkFywAbACYAOUAdIRwbAAcTEwAcDgQnKAAAJBAkHk9ZJBYQCklZEAQAPysAGD8rERIAORgvERIBFzkRMxEzETMxMAE1NDY3PgE1NCYjIgYHJzYzMhYVFA4BBw4BHQEDNDMyFhUUBiMiJgEhSGKIR4N7T5ZhO73Ov9QnTH5lQbJ4Oj9AOTREAZM2dZdUc3RSZm8lMYdjvKtJb2NuVnJfIf7XiEZCQEc%2FAAAAAgB5%2F0YGuAW0ADUAPwBFQCIjLjYOOwcUGwAAKRQOLgVAQRg4OAQ9CBELEQsRKx8yAyYrAC8zPzMSOTkvLxI5MjMzETMREgEXOREzETMzETMRMzEwARQOASMiJicjDgEjIiY1NBIzMhYXAxUUMzI2NTQCJCMiBAIVEAAhMjcVBiMgABEQEiQhMgQSARQzMhsBJiMiBga4WKBoVnYLCCiVZpap7MBErEUZhVtylP7vsd%2F%2Btq4BQgEv0uLA9P6V%2Fm%2FWAYwBANcBT7f79sPPEg5IVYKTAtmO7IJoUVdizbDMAP8ZFv4qFrLXrLUBEJO5%2Fqnh%2Fs%2F%2BuFaFVAGPAWYBBAGW37X%2Bs%2F6k%2FgE5AQUUtAAAAAACAAAAAAUQBbwABwAOADlAHgIOCwgBBQADAAcDBAcEEA8OAklZCwUODgQFAwAEEgA%2FMz8SOS8SOSsREgE5OREzETMREhc5MTAhAyEDIwEzCQEDJicGBwMEYLb9trSsAkKPAj%2F%2BZaohIxYprAHR%2Fi8FvPpEAmoBxVZ9YHP%2BOwAAAAMAyQAABL4FtgAOABcAIABJQCYTBB0KDxkZDgoEBw4EISIIDxgPGEpZDw8OAA4ZSlkOEgAXSlkAAwA%2FKwAYPysREgA5GC8rERIAORESARc5ETMRMxEzETMxMBMhIAQVFAYHFQQRFAQjIRMhMjY1NCYrARkBITI2NTQmI8kBnQEjAQSRiwFN%2Fvfu%2FgKqARi0nrDA%2BgExsbO3uwW2rryCqRkKOf7bxNwDRHGGe239kf3diZKIgAAAAAABAH3%2F7ATPBcsAFgAmQBQDDhQJDgMXGBIASVkSBAsGSVkLEwA%2FKwAYPysREgEXOREzMTABIgAREAAzMjcVBiMgABE0EiQzMhcHJgM78f7pAQ35mcSY3%2F69%2FqGpAT%2FY5qxIpgUz%2Fr%2F%2B6f7h%2Fsc3lTkBiAFp4gFUuFSSTgAAAgDJAAAFWAW2AAgAEQAoQBQOBAkABAASEwUNSlkFAwQOSlkEEgA%2FKwAYPysREgE5OREzETMxMAEQACkBESEgAAMQACEjETMgAAVY%2Fnf%2Bj%2F5rAcABVQF6tP7h%2FuX3zwEwATIC6f6W%2FoEFtv6G%2FqcBHgEi%2B3ABKwAAAQDJAAAD%2BAW2AAsAOkAfBgoKAQQACAEEDA0GCUlZBgYBAgIFSVkCAwEKSVkBEgA%2FKwAYPysREgA5GC8rERIBFzkRMxEzMTApAREhFSERIRUhESED%2BPzRAy%2F9ewJe%2FaIChQW2l%2F4plv3mAAAAAQDJAAAD%2BAW2AAkAMkAaBgAAAQMIAQMKCwYJSVkGBgECAgVJWQIDARIAPz8rERIAORgvKxESARc5ETMRMzEwISMRIRUhESEVIQFzqgMv%2FXsCXv2iBbaX%2FemXAAABAH3%2F7AU9BcsAGwA6QB8UCBkCAg4bCAQcHQAbSVkAAAUMDBFJWQwEBRdJWQUTAD8rABg%2FKxESADkYLysREgEXOREzETMxMAEhEQ4BIyAAETQSJDMyFwcmIyAAERAAITI3ESEDTAHxdPCe%2FrT%2BjrcBWOfqykLGt%2F71%2FtQBIQEYmJH%2BuQL%2B%2FTklJgGLAWTkAVe1VpZU%2FsL%2B5v7Y%2Fs4jAcIAAQDJAAAFHwW2AAsAM0AZCQEBAAgEBAUABQ0MCANJWQgIBQoGAwEFEgA%2FMz8zEjkvKxESATk5ETMRMxEzETMxMCEjESERIxEzESERMwUfqvz%2BqqoDAqoCsP1QBbb9kgJuAAAAAAEAyQAAAXMFtgADABG2AAQFAQMAEgA%2FPxESATkxMDMRMxHJqgW2%2BkoAAAAAAf9g%2Fn8BaAW2AA0AHUANCwgIDg8JAwAFSVkAIgA%2FKwAYPxESATkRMzEwAyInNRYzMjY1ETMRFAYMXjZHTWNnqsD%2BfxuRFHhxBbb6WL7RAAABAMkAAATpBbYACwAqQBUIBAQFBQILCgAFDQwCCAUJBgMBBRIAPzM%2FMxI5ORESARc5ETMRMzEwISMBBxEjETMRATMBBOnI%2FeuZqqoCl8n9tALFiP3DBbb9KwLV%2FYUAAAABAMkAAAP4BbYABQAfQA4DAAAEBgcBAwADSVkAEgA%2FKwAYPxESATk5ETMxMDMRMxEhFcmqAoUFtvrkmgABAMkAAAZxBbYAEwAyQBgIBQUGCw4ODQYNFBUBChEDBgsHAw4ABhIAPzMzPzMSFzkREgE5OREzETMRMxEzMTAhASMWFREjESEBMwEzESMRNDcjAQNQ%2FhAIDp0BAAHPCAHT%2FqoOCP4MBRCa1PxeBbb7SgS2%2BkoDrqK%2B%2BvIAAQDJAAAFPwW2ABAALkAVCQYGBwEPDwAHABESCwMHDwgDAQcSAD8zPzMSOTkREgE5OREzETMRMxEzMTAhIwEjFhURIxEzATMmAjcRMwU%2FwvzhCBCdwAMdCAIOAp8Ey9i0%2FMEFtvs6GwElPwNHAAAAAAIAff%2FsBb4FzQALABcAKEAUEgAMBgAGGRgJFUlZCQQDD0lZAxMAPysAGD8rERIBOTkRMxEzMTABEAAhIAAREAAhIAABEBIzMhIREAIjIgIFvv6d%2FsT%2Bvf6hAWABRAE7AWL7c%2F3x8%2Fj38vP9At3%2Bof5uAYsBaAFlAYn%2BcP6g%2Ftf%2BzQEyASoBJwEx%2Fs0AAgDJAAAEaAW2AAkAEgA0QBoKBQUGDgAGABMUCgRKWQoKBgcHEkpZBwMGEgA%2FPysREgA5GC8rERIBOTkRMxEzETMxMAEUBCEjESMRISABMzI2NTQmKwEEaP7R%2FuasqgF7AiT9C5niyr7JvgQM3u%2F9wQW2%2FRuSoZGOAAAAAAIAff6kBb4FzQAPABsANEAbEAoWAAAEAwoEHB0DDQcNGUlZDQQHE0lZBQcTAD%2FGKwAYPysREgA5ERIBFzkRMxEzMTABEAIHASMBByAAERAAISAAARASMzISERACIyICBb7izgFc9%2F7jN%2F69%2FqEBYAFEATsBYvtz%2FfHz%2BPfy8%2F0C3f7n%2FoxC%2FpYBSgIBiwFoAWUBif5w%2FqD%2B1%2F7NATIBKgEnATH%2BzQAAAAIAyQAABM8FtgAMABUASEAlDQEBAgwJEQcLCgoHCQIEFhcJDQANAEpZDQ0CAwMVSVkDAwsCEgA%2FMz8rERIAORgvKxESADkREgEXOREzETMRMxEzETMxMAERIxEhIAQVEAUBIwElMzI2NTQmKwEBc6oBkQENAQH%2B2gGNyf6e%2Fs%2FptKirvd0CYP2gBbbOz%2F7eZv1vAmCSj4%2BRgAAAAAEAav%2FsBAIFywAkADRAGx4TDAAAGBMFBCUmDB4DFhYbSVkWBAMJSVkDEwA%2FKwAYPysREgA5ORESARc5ETMRMzEwARQEIyAnNR4BMzI2NTQuAScuATU0NjMyFwcmIyIGFRQeARceAQQC%2Fujw%2FvyMWtRoqqw9j5LMr%2F7R2rc1tauHmDiFieatAYXB2EOkJiyBc0xhUjRJyKGpyFCUTHRnTGFRMVK8AAAAAAEAEgAABFoFtgAHACRAEgABBQEDAwgJBwMEA0lZBAMBEgA%2FPysRADMREgEXOREzMTAhIxEhNSEVIQKLqv4xBEj%2BMQUfl5cAAAEAuv%2FsBRkFtgARACVAERABCgcBBxMSEQgDBA1JWQQTAD8rABg%2FMxESATk5ETMRMzEwAREUACEgADURMxEUFjMyNjURBRn%2B0v74%2Fvj%2B36rIwrnIBbb8Tvr%2B4gEg%2FAOu%2FEa3xMW4A7gAAQAAAAAEwwW2AAoAGkALAQQMCwgDAAQDAxIAPz8zEjkREgE5OTEwATMBIwEzARYXNjcEDLf98aj99LQBUDoiJDoFtvpKBbb8TqOaoqEAAAABABsAAAdMBbYAGQAkQBAZChsaFQ4OBQkYEQoDAQkSAD8zPzMzEjk5ETMREgE5OTEwISMBLgEnBgcBIwEzExYXNjcBMwEWFzY3EzMFxaj%2B2RU0ARYw%2FuKo%2Fnu05zAWGzUBBrQBEzAhEzXmtAPTQcYUhJ38MwW2%2FHm%2BmrevA3n8f5vDjswDhQAAAQAIAAAElgW2AAsAI0ASBAYFCwoABg0MAggECQYDAQQSAD8zPzMSOTkREgEXOTEwISMJASMJATMJATMBBJbB%2Fnf%2BcLQB5v47vAFrAW61%2FjsCg%2F19AvwCuv29AkP9TAAAAQAAAAAEewW2AAgAIEAPBAUCBQcDCQoABQEHAwUSAD8%2FMxI5ERIBFzkRMzEwCQEzAREjEQEzAj0Bhrj%2BGKz%2BGboC2wLb%2FIH9yQIvA4cAAAABAFIAAAQ%2FBbYACQArQBcIAQMHAAcEAQQKCwUESVkFAwEISVkBEgA%2FKwAYPysREgEXOREzETMxMCkBNQEhNSEVASEEP%2FwTAwj9EAO%2F%2FPgDHoUEmJmF%2B2kAAQCm%2FrwCbwW2AAcAIEAOBgEEAAEACAkFAgMGAScAPzM%2FMxESATk5ETMRMzEwASERIRUhESECb%2F43Acn%2B3wEh%2FrwG%2Bo36IQAAAQAXAAAC3QW2AAMAE7cDAQQFAwMCEgA%2FPxESATk5MTATASMBugIjpv3gBbb6SgW2AAAAAAEAM%2F68AfwFtgAHACBADgMAAQYABggJAAcnAwQDAD8zPzMREgE5OREzETMxMBchESE1IREhMwEh%2Ft8Byf43tgXfjfkGAAAAAAEAMQInBCMFwQAGABhACQADBwgFAgAEAgAvLzMSORESATk5MTATATMBIwkBMQGyYwHdmP6M%2FrICJwOa%2FGYC6f0XAAAAAf%2F8%2FsUDmv9IAAMAEbUABQEEAQIALzMRATMRMzEwASE1IQOa%2FGIDnv7FgwABAYkE2QMSBiEACQATtgAECwoGgAEALxrNERIBOTkxMAEjLgEnNTMeARcDEm5BsijLIHIsBNk0wD8VRbU1AAAAAgBe%2F%2BwDzQRaABkAJABHQCUiCAseHhkZEggDJSYBAgseR1kCCwsAFRUPRlkVEAUaRlkFFgAVAD8%2FKwAYPysREgA5GC85KxEAMxESARc5ETMRMxEzMTAhJyMOASMiJjUQJTc1NCYjIgcnPgEzMhYVESUyNj0BBw4BFRQWA1IhCFKjeqO5AhO6b3qJrTNRwWHEvf4Om7Gmxq9tnGdJqJsBTBAGRIF7VH8sMq7A%2FRR1qpljBwdtc1peAAIAsP%2FsBHUGFAATAB8AREAiChcXDw8MHQMMAyAhDQAMFRIRChEGAAYaRlkGFgAURlkAEAA%2FKwAYPysREgA5OREzGD8%2FERIBOTkRMxEzETMRMzEwATISERACIyImJyMHIxEzERQHMzYXIgYVFBYzMjY1NCYCrtjv8dZrsTwMI3emCAh0zKqWmqqZlpYEWv7Z%2FvL%2B8v7VT1KNBhT%2Bhn9lpIvD5%2BfH39HW0gAAAAABAHP%2F7AOLBFwAFgAmQBQPAwMVCQMYFwYNRlkGEAASRlkAFgA%2FKwAYPysREgEXOREzMTAFIgAREAAzMhYXBy4BIyARFBYzMjcVBgJm7v77AQn1T54tMzeCMv6yo6CJkG4UASUBDAETASwiF40WHf5Wytg7kzkAAAACAHP%2F7AQ3BhQAEgAfAEJAIR0GFwAODhEGESAhEhUPAAABAQwDCQkaRlkJEAMTRlkDFgA%2FKwAYPysREgA5OREzGD8%2FERIBOTkRMxEzMxEzMTAlIwYjIgIREBIzMhczLwERMxEjJTI2PQE0JiMiBhUUFgOaCXPl1%2B%2Fw1t93DQcEpof%2BnqqZm6qSm5qTpwEmAQ8BDwEsok9NAb757He5ziPpx%2BPP0tYAAAACAHP%2F7AQSBFwAEwAaADtAHxgKFwsDAxEKAxwbFwtGWRcXAAYGFEZZBhAADkZZABYAPysAGD8rERIAORgvKxESARc5ETMzETMxMAUiABEQADMyEh0BIR4BMzI3FQ4BAyIGByE0JgJ%2F8%2F7nAQXczvD9DQW5qLGtWJ2chJ0OAj2MFAEoAQcBCQE4%2FvHeacHISpQmIQPlrJidpwAAAAABAB0AAAMOBh8AFAA5QB0UDAwTAgIHAwUDFRYKD0ZZCgABBQcFRlkTBw8DFQA%2FPzMrEQAzGD8rERIBOTkRMzMRMzMSOTEwASERIxEjNTc1ECEyFwcmIyIGHQEhAp7%2B6abExAFhV3UrYEReWgEXA8f8OQPHSzw9AZQjhR99ikcAAAMAJ%2F4UBDEEXAAqADcAQQBuQD4rGTglDB89BTETARMFAioiHB8lGQpCQxwPNQ81RlkIO0dZCiIIKg8IDwgWKioCR1kqDyg%2FR1koEBYuR1kWGwA%2FKwAYPysAGD8rERIAOTkYLy8REjk5KysREgA5ERIBFzkRMxEzETMRMxEzMTABFQceARUUBiMiJwYVFBY7ATIWFRQEISImNTQ2Ny4BNTQ2Ny4BNTQ2MzIXARQWMzI2NTQmKwEiBhMUFjMyNTQjIgYEMcscLNzAMStqSlrCsr%2F%2B3P7o1%2BmAdCo5QEVVa9jGVkX%2BEZaM0clumMdxflqCdPP2dX4ESGkYI3FHocAIOFUtK5aPtr%2BgkmSSGhNQNTxaKiOobLTDFPsAWVx9a1lFbAM8c3bs934AAQCwAAAERAYUABYAM0AZDgwICAkAFgkWFxgOCRISBEZZEhAKAAAJFQA%2FMz8%2FKxESADkREgE5OREzETMRMzMxMCERNCYjIgYVESMRMxEUBzM%2BATMyFhURA556gq2fpqYICjG1dMnJAsWGhLzW%2FcMGFP4pVThPW7%2FQ%2FTUAAAIAogAAAWYF3wADAA8AI0ARCgAABAEBEBENB0hZDQIPARUAPz%2FOKxESATkRMzMRMzEwISMRMwM0NjMyFhUUBiMiJgFWpqa0OCooOjooKjgESAEpOTU2ODg3NwAAAv%2BR%2FhQBZgXfAAwAGAAsQBYTCwsNCAgZGhYQSFkWQAkPAAVGWQAbAD8rABg%2FGs4rERIBOREzMxEzMTATIic1FjMyNjURMxEQAzQ2MzIWFRQGIyImK187RUNOSaa0OCooOjooKjj%2BFBmHFFVXBPz7EP68B105NTY4ODc3AAEAsAAABB0GFAAQADZAGxAOCgoLCwgGBAUIBBESDAAAEBAICAMHCxUDDwA%2FPzMSOS85ETM%2FERIBFzkROREzETMzMTABNjcBMwkBIwEHESMRMxEUBwFUK1gBYsX%2BRAHbyf59faSkCAIxPWMBd%2F4t%2FYsCBmz%2BZgYU%2FMc3cwABALAAAAFWBhQAAwAWQAkAAQEEBQIAARUAPz8REgE5ETMxMCEjETMBVqamBhQAAAABALAAAAbLBFwAIwBGQCMVERESCAkAIwkSIwMkJRwWFRUSGQQNGQ1GWR8ZEBMPCQASFQA%2FMzM%2FPzMrEQAzERI5GC8zMxESARc5ETMRMxEzETMxMCERNCYjIgYVESMRNCYjIgYVESMRMxczPgEzIBczPgEzMhYVEQYlcHablKZwd5yRpocbCC%2BragEBTwgxune6uQLJg4Oyuf2cAsmDg7vV%2FcEESJZQWrpWZL%2FS%2FTUAAAEAsAAABEQEXAAUADFAGAAUDAgICRQJFhUMCRAQBEZZEBAKDwAJFQA%2FMz8%2FKxESADkREgE5OREzETMRMzEwIRE0JiMiBhURIxEzFzM%2BATMyFhURA556gqygpocbCDO4ccbIAsWGhLrW%2FcEESJZRWb%2FS%2FTUAAgBz%2F%2BwEYgRcAAwAGAAoQBQTAA0HAAcaGQoWRlkKEAMQRlkDFgA%2FKwAYPysREgE5OREzETMxMAEQACMiJgI1EAAzMgABFBYzMjY1NCYjIgYEYv7y7pPkfAEM7uYBD%2Fy9qKOjqamlo6YCJf70%2FtOKAQKtAQwBK%2F7O%2FvvS3NvT0dnWAAAAAgCw%2FhQEdQRcABQAIQA%2FQCAZCwQHBwgfEggSIiMECwAPDxVGWQ8QCQ8IGwAcRlkAFgA%2FKwAYPz8%2FKxESADk5ERIBOTkRMxEzETMzMzEwBSImJyMWFREjETMXMz4BMzISERACAyIGBxUUFjMyNjU0JgKua7E8DAymhxcIQKpu2u3x7qiWApqqjqGhFE9SYFb%2BPQY0llpQ%2Ftb%2B8%2F7y%2FtUD47rLJefH5srN2wAAAAIAc%2F4UBDcEXAAMAB8AREAiChAdFgMaGhkQGSAhGhsXDx0eHhYNExMHRlkTEA0ARlkNFgA%2FKwAYPysREgA5OREzGD8%2FERIBOTkRMxEzMzMRMzEwJTI2NzU0JiMiBhUUFhciAhEQEjMyFzM3MxEjETQ3IwYCTqaYBZypkpuZfdTu8NbheQkYg6YLDXN3stMl5srjz8%2FZiwEqAQsBDQEuqpb5zAHVZEanAAEAsAAAAycEXAAQACpAFA0JCQoKAhESCw8NAAoVAAVGWQAQAD8rABg%2FEjk%2FERIBOTkRMxEzMTABMhcHJiMiBhURIxEzFzM%2BAQKkSToXRDSFvaaJEwg9rARcDJoP2KH9tARIy2t0AAAAAQBq%2F%2BwDcwRcACQANkAcHhMMAAAYBRMEJSYMHgMWFhtGWRYQBgMJRlkDFgA%2FKwAYLz8rERIAOTkREgEXOREzETMxMAEUBiMiJzUeATMyNjU0JicuAjU0NjMyFwcmIyIGFRQeARceAQNz5M7aek%2B1VIKMb6GZgT%2FavrGpO6WGdngtZI7DiQErmaZFmiguU1VAWz45VWxLhptIh0RKQSw%2BODVHkAABAB%2F%2F7AKoBUYAFgA0QBsQFBQJCwkSAwQYFwoTEBNHWQ5AEA8HAEZZBxYAPysAGD8azSsRADMREgEXOREzETMxMCUyNjcVDgEjIBkBIzU%2FATMVIRUhERQWAhIsUhgbaSr%2Bwp2dRmABPv7CXnUNB38NEQFPAoxQRer%2Bgf17Y2oAAAEApP%2FsBDkESAAUADRAGQETBwwMChMKFRYMDQ0QCBQPEARGWRAWCxUAPz8rABg%2FMxI5ETMREgE5OREzETMRMzEwAREUFjMyNjURMxEjJyMOASMiJjURAUx6gqyfpokYCTO1dMjHBEj9OYaEvNUCQPu4k1FWvtECzQAAAAABAAAAAAQCBEgACwAYQAoBCgwNBQkBDwAVAD8%2FMzkREgE5OTEwIQEzExYXMzYSEzMBAaD%2BYLLsUA4IC3XMsv5gBEj9duRENQFNAjD7uAAAAAEAFwAABiMESAAcACxAFAkbHR4XFg4NAwQNBAgaEgkPAAgVAD8zPzMzEjk5ETMRMzMzERIBOTkxMCEDJicjBgcDIwEzGgEXMz4BNxMzExYXMz4BEzMBBC%2FJEzQIKB7PwP7VrmpvCAgLMRLJtMQ4FAgEI7%2Bs%2FtECgzvRr1%2F9fwRI%2FmP%2BUEs5tTUCdf2LrHUklgLc%2B7gAAAAAAQAnAAAECARIAAsAIkARBwUGAAEFDA0JAwEICxUEAQ8APzM%2FMxI5ORESARc5MTAJATMJATMJASMJASMBuP6DvQEhASC7%2FoMBkbz%2Bzf7KvAIxAhf%2BXAGk%2Fen9zwG8%2FkQAAQAC%2FhQEBgRIABUAJEASCQ8AAxYXBA0ADRJGWQ0bCAAPAD8yPysREgA5ERIBFzkxMBMzExYXMz4BEzMBDgEjIic1FjMyPwECsvBPEwgNU%2Bay%2FilGu4hMSjdEq0k9BEj9j9ZfM%2FcCfPsguZsRhQzAnAAAAAABAFIAAANtBEgACQArQBcIAQMHAAcEAQQKCwUER1kFDwEIR1kBFQA%2FKwAYPysREgEXOREzETMxMCkBNQEhNSEVASEDbfzlAlb9zwLn%2FbICXXEDVoGB%2FLoAAQA9%2FrwCwQW2ABwALEAVGRoaCxcAAA8HFAMDBwsDHR4TAwQnAD8%2FERIBFzkRMxEzMxEzETMRMzEwJRQWFxUuATURNCYjNT4BNRE0NjMVBhURFAcVFhUB23VxvtB%2BeIJ02Lbm398MZlwCjAKqmgEvaFmNAlxgATKbrIsGwf7Z1ycMJ9cAAQHu%2FhACewYUAAMAFkAJAgMDBAUDGwAAAD8%2FERIBOREzMTABMxEjAe6NjQYU9%2FwAAQBI%2FrwCywW2AB0ALEAVFQUKEhICGQAdHQ4OGQUDHh8VJwYDAD8%2FERIBFzkRMxEzETMzETMRMzEwASY1ETQnNTIWFREUFhcVIgYVERQGBzU%2BATURNDY3Agrf47jTdoJ6fs2%2Bb3RucQI%2FJ9cBJ8EGi66Z%2Fs5hWwKNWWj%2B0ZmrAowCXGYBKXJ4FAAAAAABAGgCUAQpA1QAFwAkQBEDDxgZEgxQWQMSDwYGAFBZBgAvKwAQGMQvxCsREgE5OTEwASIGBzU2MzIWFx4BMzI2NxUGIyImJy4BAVI1fzZkkERxWUJiLzaANmaOSH5IS1oCyUM2l20cJhwbQDmWbiEgIBgAAAIAmP6LAYkEXgADAA4AK0AUAgQEAwkJDxAAAAMMDAZPWQwQAyIAPz8rERIAORgvERIBOREzMxEzMTATMxMjExQjIiY1NDYzMhbbaTPP4Xk8PD85M0YCrPvfBUyHR0A%2FSEAAAAABAL7%2F7APbBcsAGwA%2BQB4WCA0DAwoEABAQBAgDHB0ZBQITCg0CDQINBAsHBBkAPz8SOTkvLxEzMxEzMxESARc5ETMRMzMRMxEzMTAlBgcVIzUmAjUQJTUzFR4BFwcmIyIGFRQWMzI3A8tpk4XLwQGMh0uOMTGFbayin6eNjvA2BsjOIAER%2BgH8PqykAyEXjDPT2dTLOwAAAAEAPwAABEQFyQAdAEhAJhgTCQ0NGhYRAgsWEwUeHwwYGRhOWQkZGRMAExBMWRMYAAVLWQAHAD8rABg%2FKxESADkYLzMrEQAzERIBFzkRMzMRMxEzMTABMhcHJiMiBhURIRUhFRQGByEVITU2PQEjNTMRNDYCqr6qPZqPe30Bpv5aQUoDG%2Fv7zcbG4AXJVIVNfIz%2B2X%2FdZIgsmo0v9N9%2FATyyzQAAAgB7AQYEFwSgABsAJwAgQA0cACIOAA4oKR8VFSUHAC8zMy8zERIBOTkRMxEzMTATNDcnNxc2MzIXNxcHFhUUBxcHJwYjIicHJzcmNxQWMzI2NTQmIyIGuEqHXodogn9miV%2BGSkqDXIlmf4Zkh1yFSoGddHSeoHJ0nQLTemuMXIVJSYVcinF2g2eHXIVHSYVciGt8cKCfcXKipAAAAQAfAAAEcQW2ABYAVkAuEg4HCwsQDAUJAgkDDBQOFQcXGAoODgcPBhISAwATFQ8THxMCDxMPEwwBFQYMGAA%2FPzMSOTkvL10REjkyMhEzETMzETMREgEXOREzETMzETMRMzEwCQEzASEVIRUhFSERIxEhNSE1ITUhATMCSAF7rv5gAQb%2BwwE9%2FsOk%2FsQBPP7EAQD%2BZbIC3wLX%2FP5%2Fqn%2F%2B9AEMf6p%2FAwIAAgHu%2FhACewYUAAMABwAkQBACBgYDBwcICQQDBAMHGwAAAD8%2FOTkvLxESATkRMzMRMzEwATMRIxEzESMB7o2NjY0GFPz4%2Fg389wAAAAIAe%2F%2F4A5YGHQAxAD0AQ0AmMgATBioeOBkZHgwGACMGPj8VAzs2HC0GIQkhJ0dZIRUJEEdZCQAAPysAGD8rERIAFzkREgEXOREzETMRMxEzMTATNDY3LgE1NDYzMhYXBy4BIyIGFRQWFx4BFRQGBxYVFAYjIic1HgEzMjY1NC4BJy4CNxQWHwE2NTQmJw4Bi1ZOSlTPxV6fYTVih0x0dHuaupZSSpnq1NqATsJSho0wbHOOhkKShKcxiZO5RFUDKVaJJShvVXmLHSeDJxs7QDxUN0SXa1qNKVGSjJlBlCUtTEcuOjorNFpyYk1pPRNQb1NwORNkAAAAAgE1BQ4DaAXTAAsAFwAeQAwGAAwSABIYGQ8DFQkALzPNMhESATk5ETMRMzEwATQ2MzIWFRQGIyImJTQ2MzIWFRQGIyImATU1JSY3NyYlNQF9NSUlNzclJTUFcTQuLjQyMTEyNC4uNDIxMQAAAwBk%2F%2BwGRAXLABYAJgA2AEZAJycXAw8vHx8UCQ8XBTc4BgwAEg8MHwwCABIQEgIMEgwSGysjEzMbBAA%2FMz8zEjk5Ly9dXREzETMREgEXOREzETMRMzEwASIGFRQWMzI3FQ4BIyImNTQ2MzIXByYBNBIkMzIEEhUUAgQjIiQCNxQSBDMyJBI1NAIkIyIEAgN9fYd%2Fg1Z9MGVGwtDdv4B2Omz8l8gBXsrIAV7Kwv6i0M%2F%2BosNprgEtrK4BKq%2Bu%2Ftewrv7WrwQjrpqooi18FBzx2NH2PHYz%2FrjIAV7KyP6iysX%2BptDPAVrGrf7Tra4BKbCuASqvrv7XAAACAEYDFAJxBccAFgAfADdAHBcGGwoBARYWEAYDICEcCgoSGRYAAxADAgMNEh8APzPUXcQzEjkvMxESARc5ETMRMzMRMzEwAScGIyImNTQ2PwE1NCMiByc2MzIWFRElFDMyPQEHDgECFBhcjF9vmqV1lGRoK3KFgon%2BUHDJYnBnAyFUYWNmZmkGBCeFM2A4aXn%2BPLxktDEEBDkAAAACAFIAdQOqA74ABgANAClAEwMGCg0CBAsJCQQNBgQODwwFCAEALzMvMxESARc5ETMRMxEzETMxMBMBFwkBBwElARcJAQcBUgFWd%2F7fASF3%2FqoBiwFYdf7hAR91%2FqgCJwGXRf6i%2FqFHAZcbAZdF%2FqL%2BoUcBlwAAAAABAGgBCAQpAxcABQAbQAwCAQQBBgcFBFBZBQIALy8rERIBOTkRMzEwAREjESE1BCmJ%2FMgDF%2F3xAYWKAP%2F%2FAFQB2QI%2FAnESBgAQAAAABABk%2F%2BwGRAXLAAgAFgAmADYAXUAzJxcAERESBAkvHx8NCQwSFwY3OAwQEAAADhMOEggTDxIfEgIAExATAhITEhMbKyMTMxsEAD8zPzMSOTkvL11dETMRMxESOS8zETMREgEXOREzETMRMxEzETMxMAEzMjY1NCYrAQUUBgcTIwMjESMRITIWATQSJDMyBBIVFAIEIyIkAjcUEgQzMiQSNTQCJCMiBAIC02xQYVZdagGyVU3uqM%2BHlAEFppv738gBXsrIAV7Kwv6i0M%2F%2BosNprgEtrK4BKq%2Bu%2Ftewrv7WrwL6U0BLQYhQex7%2BdQFi%2Fp4De4L%2BxcgBXsrI%2FqLKxf6m0M8BWsat%2FtOtrgEpsK4BKq%2Bu%2FtcAAf%2F6BhQEBgaTAAMAEbUABQEEAQIALzMRATMRMzEwASE1IQQG%2B%2FQEDAYUfwACAH8DXALuBcsADAAYACFADg0AEwYABhkaEArAFgMEAD8zGswyERIBOTkRMxEzMTATNDYzMhYVFA4BIyImNxQWMzI2NTQmIyIGf7WCgrZSklSCtXN1UVBzcVJTcwSTgra1g1SPVLSDUnJxU1RxcgAAAgBoAAEEKQTDAAMADwAANzUhFQEhFSERIxEhNSERM2gDwf5kAZz%2BZIv%2BZgGaiwGKigMWiv5WAaqKAawAAQAxAkoCjQXJABgAI0ARBxMXAQEOEwAEGhkKEB8XASAAPzM%2FMxESARc5ETMRMzEwASE1Nz4CNTQmIyIGByc2MzIWFRQGDwEhAo39pOxZUiFQPzRiRUKDmISTWZOuAbgCSmjmVmFMNkRFJjJYb4JwUJeKpQABACECOQKNBckAIwA5QCIPBQUAAxIeCgYkJRJdE20TAkwTAQsTGxMCExMIGiEfDQghAD8zPzMSOS9dXV0zERIBFzkRMzEwARQGBxYVFAYjIic1FjMyNTQrATUzMjY1NCYjIgYHJz4BMzIWAnNSRLC4qJh0k3vT53V3Z2NQQ0JwOEU%2FjF6InQTnUGcXL6KAjzh7RKKRa09EPUQrI1otNncAAQGJBNkDEgYhAAkAE7YJBAoLBIAJAC8azRESATk5MTABPgE3MxUOAQcjAYkwbyDKLK5AbwTyPrBBFUG%2BNAAAAAEAsP4UBEQESAAWADVAGgUKCggQABMTFAgUGBcGFQ8UGw0CRlkNFgkVAD8%2FKwAYPz8zERIBOTkRMxEzMxEzETMxMAEQMzI2NREzESMnIwYjIicjFhURIxEzAVb%2Bq5%2BmiBoKb%2BWWWAoKpqYBff76vdQCQPu4k6dcVKD%2BwAY0AAAAAQBx%2FvwEYAYUAA8AJ0ASBAUBAAAFCwMQEQgIBQMPBQEFAC8zPzMSOS8REgEXOREzETMxMAEjESMRIxEGIyImNRA2MyEEYHLVcz5U2Mva6AIt%2FvwGsPlQAzMS%2BvsBBP4AAQCYAkwBiQNaAAsAF0AKBgAADQwDCU9ZAwAvKxESATkRMzEwEzQ2MzIWFRQGIyImmD44OkFCOTNDAtNCRUVCQUY%2FAAABACX%2BFAG0AAAAEgAkQBARDgsAAA4FAxMUDhERCAMQAC%2FMMjkvMxESARc5ETMRMzEwARQGIyInNRYzMjY1NCYnNzMHFgG0mZYzLS07T1FPbVhuN7T%2B32FqCWoIKDYrNRGycycAAQBMAkoB4QW2AAoAIEAOAgADAwoMCwkJAyAGAB4APzI%2FOS8REgE5OREzMzEwATMRIxE0Nw4BBycBUo%2BFBhY2h0MFtvyUAkNbWhYtX2AAAAACAEIDFAK%2BBccACwAXACVAEgwGEgAGABgZDwADEAMCAxUJHwA%2FM8RdMhESATk5ETMRMzEwARQGIyImNTQ2MzIWBRQWMzI2NTQmIyIGAr6rlpKpqJeYpf3%2BW2hpXFxpZ1wEb6S3uqGjtbaienp6ent2dgAAAAIAUAB1A6gDvgAGAA0AI0ARCwkEAgADBwIKCQYODwwFCAEALzMvMxESARc5ETMRMzEwCQEnCQE3AQUBJwkBNwEDqP6odQEf%2FuF1AVj%2Bdf6odQEf%2FuF1AVgCDP5pRwFfAV5F%2Fmkb%2FmlHAV8BXkX%2Baf%2F%2FAEsAAAXRBbYQJwDTAoMAABAmAHv%2FABEHANQDHf23AAmzAwISGAA%2FNTUA%2F%2F8ALgAABdsFthAnANMCPwAAECYAe%2BIAEQcAdANO%2FbcAB7ICEBgAPzUAAAD%2F%2FwAaAAAGIQXJECYAdfkAECcA0wLfAAARBwDUA239twAJswMCKxgAPzU1AAACADP%2BdwNUBF4AHQAoAEFAIggUHiMBHA8cIxQEKSoAHQEMAx0dESYmIE9ZJhARC0lZESMAPysAGD8rERIAORgvX15dERIBFzkRMxEzETMxMAEVFAYHDgIVFBYzMjY3FwYjIiY1ND4CNz4BPQETFCMiJjU0NjMyFgJOS2F5PRmEelCWYjvFxr7YI0BZNmVBtHk7PkI3M0YCrDN6lFRqS004ZHEmMIdguqpGaVlSL1h0XR8BK4dFQkBHQAAA%2F%2F8AAAAABRAHcxImACQAABEHAEP%2FwgFSAAizAhAFJgArNQAA%2F%2F8AAAAABRAHcxImACQAABEHAHYAhQFSAAizAhgFJgArNQAA%2F%2F8AAAAABRAHcxImACQAABEHAMUAIwFSAAizAh0FJgArNQAA%2F%2F8AAAAABRAHLxImACQAABEHAMcABAFSAAizAhgFJgArNQAA%2F%2F8AAAAABRAHJRImACQAABEHAGoANwFSAAq0AwIkBSYAKzU1%2F%2F8AAAAABRAHBhImACQAABAHAMYAOQCBAAL%2F%2FgAABoEFtgAPABMATkAsCg4OEQEACAwBEAUFFQUUCRMGE0lZEANJWQoNSVkQChAKAQYDBRIBDklZARIAPysAGD8%2FEjk5Ly8rKysRADMRATMREhc5ETMzETMxMCkBESEDIwEhFSERIRUhESEBIREjBoH9Ev3%2B47ACugPJ%2FbwCHf3jAkT7VAG%2BdgHR%2Fi8Ftpf%2BKZb95gHSArUA%2F%2F8Aff4UBM8FyxImACYAABAHAHoCAgAA%2F%2F8AyQAAA%2FgHcxImACgAABEHAEP%2FtwFSAAizAQ0FJgArNQAA%2F%2F8AyQAAA%2FgHcxImACgAABEHAHYAPwFSAAizARUFJgArNQAA%2F%2F8AyQAAA%2FgHcxImACgAABEHAMX%2F%2BwFSAAizARoFJgArNQAA%2F%2F8AyQAAA%2FgHJRImACgAABEHAGoAEgFSAAq0AgEhBSYAKzU1%2F%2F8ABQAAAY4HcxImACwAABEHAEP%2BfAFSAAizAQUFJgArNQAA%2F%2F8AswAAAjwHcxImACwAABEHAHb%2FKgFSAAizAQ0FJgArNQAA%2F%2F%2F%2FxwAAAmkHcxImACwAABEHAMX%2BuwFSAAizARIFJgArNQAA%2F%2F8ABQAAAjgHJRImACwAABEHAGr%2B0AFSAAq0AgEZBSYAKzU1AAIALwAABUgFtgAMABcAV0AyERUVCAQNAAATBAYEGBkUBgcGSVkRDwc%2FB68HzwffBwULAwcHBAkJEEpZCQMEFUpZBBIAPysAGD8rERIAORgvX15dMysRADMREgEXOREzETMzETMxMAEQACkBESM1MxEhIAADECEjESEVIREzIAVI%2Fnf%2Bj%2F57mpoBsgFRAXy1%2FcfnAXv%2Bhb4CYgLp%2Fpb%2BgQKJlgKX%2Fon%2BpAJA%2FfyW%2Fgr%2F%2FwDJAAAFPwcvEiYAMQAAEQcAxwCTAVIACLMBGgUmACs1AAD%2F%2FwB9%2F%2BwFvgdzEiYAMgAAEQcAQwB5AVIACLMCGQUmACs1AAD%2F%2FwB9%2F%2BwFvgdzEiYAMgAAEQcAdgEKAVIACLMCIQUmACs1AAD%2F%2FwB9%2F%2BwFvgdzEiYAMgAAEQcAxQC0AVIACLMCJgUmACs1AAD%2F%2FwB9%2F%2BwFvgcvEiYAMgAAEQcAxwCaAVIACLMCIQUmACs1AAD%2F%2FwB9%2F%2BwFvgclEiYAMgAAEQcAagDVAVIACrQDAi0FJgArNTUAAQCFARAEDASYAAsAGUAJBwkDAQkBDA0IABkvERIBOTkRMxEzMTABFwkBBwkBJwkBNwEDrGD%2BoAFeYP6e%2FqRlAV7%2BoGQBYQSYY%2F6e%2FqBjAV%2F%2BoWMBYAFgZf6dAAADAH3%2FwwW%2BBfYAEwAbACMATkAsFh8XHgQcFBwKFAAAEg8FCAoGJCUWHiEZDSFJWQ8SCAUEAxANBAMZSVkGAxMAP8YrABg%2FxhIXOSsREgA5ORESARc5ETMRMxESFzkxMAEQACEiJwcnNyYREAAhMhc3FwcWAxAnARYzMhIBEBcBJiMiAgW%2B%2Fp3%2BxOuUZXhssgFgAUTRnWF4asC0bv1gc7Dz%2BPwnZQKdaqjz%2FQLd%2FqH%2BbmSNT5rGAW0BZQGJXodQlMr%2BlQEQmvxMUgEyASr%2B%2BpoDr0n%2BzQAAAP%2F%2FALr%2F7AUZB3MSJgA4AAARBwBDAEYBUgAIswETBSYAKzUAAP%2F%2FALr%2F7AUZB3MSJgA4AAARBwB2AM8BUgAIswEbBSYAKzUAAP%2F%2FALr%2F7AUZB3MSJgA4AAARBwDFAH0BUgAIswEgBSYAKzUAAP%2F%2FALr%2F7AUZByUSJgA4AAARBwBqAJgBUgAKtAIBJwUmACs1Nf%2F%2FAAAAAAR7B3MSJgA8AAARBwB2ADEBUgAIswESBSYAKzUAAAACAMkAAAR5BbYADAAVADZAHA0JBQUGEQAGABYXDQRKWQkVSlkNCQ0JBgcDBhIAPz8SOTkvLysrERIBOTkRMxEzETMzMTABFAQhIxEjETMRMyAEATMyNjU0JisBBHn%2B0f7huKqq1wEZARb8%2Bqjiyr7KzAMQ4%2B7%2BwQW2%2FwDP%2FeqPpJWKAAABALD%2F7AScBh8AMABBQCIpKgUdIwAXDAwAHREqBTEyEhIqLi4mRlkuACoVDxVGWQ8WAD8rABg%2FPysREgA5GC8REgEXOREzETMRMxEzMTABFAcOARUUHgEXHgEVFAYjIic1HgEzMjU0JicuATU0Njc%2BATU0JiMgFREjETQ2MzIWBBmPWDgbR06MZsKzvGs%2FnEjXU25%2FYEVHS0CIf%2F7sptzezuEE8odzRkMhICo5M1%2BdZaCrRZonL7ZLa0ZSe1Q%2FajU5WjVQVd%2F7TASysrudAAD%2F%2FwBe%2F%2BwDzQYhEiYARAAAEQYAQ44AAAizAiYRJgArNf%2F%2FAF7%2F7APNBiESJgBEAAARBgB2KwAACLMCLhEmACs1%2F%2F8AXv%2FsA80GIRImAEQAABEGAMXYAAAIswIzESYAKzX%2F%2FwBe%2F%2BwDzQXdEiYARAAAEQYAx70AAAizAi4RJgArNf%2F%2FAF7%2F7APNBdMSJgBEAAARBgBq4gAACrQDAjoRJgArNTUAAP%2F%2FAF7%2F7APNBoUSJgBEAAARBgDG9wAACrQDAigRJgArNTUAAAADAF7%2F7AZzBFwAKQA0ADsAYUAzKgAkETA4GRkEMDkYGB8wCwAFPD0bLSctRlkZMQQxR1k4JCcRBAQOIicWNQgOCEZZFA4QAD8zKxEAMxg%2FMxI5LzkSOTMrEQAzKxEAMxESARc5ETMRMzMRMxI5OREzMTATNDY%2FATU0JiMiByc%2BATMyFhc%2BATMyEh0BIRIhMjY3FQ4BIyAnDgEjIiY3FBYzMjY9AQcOAQEiBgchNCZe%2BP64dHeQozRKx2KCpSk1q27A6P1DCAE6W51UVpVl%2Ft99UcWGo7mua1iRqJ66pAO9eYsLAgeAAS%2BhswgGRIF7VH8pNVdfWGD%2B9d5r%2FnUjJ5QmIel%2FaqqXX1mpmmMHCG0CMqaenKgAAAD%2F%2FwBz%2FhQDiwRcEiYARgAAEAcAegFGAAD%2F%2FwBz%2F%2BwEEgYhEiYASAAAEQYAQ7UAAAizAhwRJgArNf%2F%2FAHP%2F7AQSBiESJgBIAAARBgB2TgAACLMCJBEmACs1%2F%2F8Ac%2F%2FsBBIGIRImAEgAABEGAMX3AAAIswIpESYAKzX%2F%2FwBz%2F%2BwEEgXTEiYASAAAEQYAagoAAAq0AwIwESYAKzU1AAD%2F%2F%2F%2FaAAABYwYhEiYAwgAAEQcAQ%2F5RAAAACLMBBREmACs1AAD%2F%2FwCpAAACMgYhEiYAwgAAEQcAdv8gAAAACLMBDREmACs1AAD%2F%2F%2F%2BzAAACVQYhEiYAwgAAEQcAxf6nAAAACLMBEhEmACs1AAD%2F%2F%2F%2FsAAACHwXTEiYAwgAAEQcAav63AAAACrQCARkRJgArNTUAAgBx%2F%2BwEYgYhABsAJgBKQCshBgwcHAAAGBkWDhETEAYJJygJH0ZZCwMWERkODwUUCQkDFxQBAyRGWQMWAD8rABg%2FMxI5LxIXORI5KxESARc5ETMRMxEzMTABEAAjIgA1NAAzMhc3JicFJzcmJzcWFzcXBxYSAzQmIyARFBYzMjYEYv77997%2B6QEH3OJkCDnN%2FvFJ6VxeRZxm7kzPmKWotJz%2Br6%2Bir6ECM%2F7n%2FtIBDeLmAQZ5BNa%2Fm2yFPjF1SUuKa3eP%2FnL%2B6JOq%2Fpint8kA%2F%2F8AsAAABEQF3RImAFEAABEGAMcOAAAIswEeESYAKzX%2F%2FwBz%2F%2BwEYgYhEiYAUgAAEQYAQ9QAAAizAhoRJgArNf%2F%2FAHP%2F7ARiBiESJgBSAAARBgB2VgAACLMCIhEmACs1%2F%2F8Ac%2F%2FsBGIGIRImAFIAABEGAMUOAAAIswInESYAKzX%2F%2FwBz%2F%2BwEYgXdEiYAUgAAEQYAx%2FEAAAizAiIRJgArNf%2F%2FAHP%2F7ARiBdMSJgBSAAARBgBqGwAACrQDAi4RJgArNTUAAAADAGgA%2FAQpBKgAAwAPABsAM0AYFgoKEAQCBAEDHB0ZExMBBw0NAQEAUFkBAC8rEQAzGC8zETMvMxESARc5ETMzETMxMBM1IRUBNDYzMhYVFAYjIiYRNDYzMhYVFAYjIiZoA8H9rjs2NDo7MzQ9OzY0OjszND0CjYqK%2Fug8PT86OUA%2FAvQ8PT86OUA%2FAAMAc%2F%2B8BGIEhwATABsAIwBLQCkXHxwUFAocAAASDwUICgYkJRYeIRkNGUZZDxIIBQQDEA0QAyFGWQYDFgA%2FxisAGD%2FGEhc5KxESADk5ERIBFzkRMxEzERI5OTEwARAAIyInByc3JhEQADMyFzcXBxYFFBcBJiMiBgU0JwEWMzI2BGL%2B8u6acFRyXoEBDO6adFR1YX%2F8vTUB0Utyo6YClzP%2BL0dxo6kCJf70%2FtNFdU6DmAEAAQwBK0x3TIWY%2BatmAoY11tSkZP19M9sA%2F%2F8ApP%2FsBDkGIRImAFgAABEGAEPEAAAIswEWESYAKzX%2F%2FwCk%2F%2BwEOQYhEiYAWAAAEQYAdnEAAAizAR4RJgArNf%2F%2FAKT%2F7AQ5BiESJgBYAAARBgDFEgAACLMBIxEmACs1%2F%2F8ApP%2FsBDkF0xImAFgAABEGAGohAAAKtAIBKhEmACs1NQAA%2F%2F8AAv4UBAYGIRImAFwAABEGAHYSAAAIswEfESYAKzUAAgCw%2FhQEdQYUABYAIgA%2BQB8gBhsUEBARBhEkIxIAERsMFgkDCR5GWQkWAxdGWQMQAD8rABg%2FKxESADk5GD8%2FERIBOTkRMxEzMxEzMTABPgEzMhIREAIjIicjFxYVESMRMxEUByUiBgcVFBYzIBE0JgFYQqpq1%2FDx1t56DAQIpqYGAUiomAKaqgEvlAO0WU%2F%2B1P71%2FvT%2B06EiTT%2F%2BNQgA%2Fi40Whu4ySnnxwGw19EAAP%2F%2FAAL%2BFAQGBdMSJgBcAAARBgBqtQAACrQCASsRJgArNTUAAAABALAAAAFWBEgAAwAWQAkAAQEFBAIPARUAPz8REgE5ETMxMCEjETMBVqamBEgAAAACAH3%2F7AbnBc0AFAAfAFNALhgGDxMTHQANER0GBSAhDxJJWQ8PAAsLDklZCwMJFUlZCQQDG0lZAxIAE0lZABIAPysAGD8rABg%2FKwAYPysREgA5GC8rERIBFzkRMxEzETMxMCkBBiMgABEQACEyFyEVIREhFSERIQEiABEQADMyNxEmBuf9AGZc%2Frn%2BnwFcAUBmWgMO%2FbMCJ%2F3ZAk38RPn%2B%2FwEB93BXVxQBiQFqAWgBhheX%2FimW%2FeYEnf7P%2Ftn%2B1%2F7NIQR1HgAAAAMAcf%2FsBx8EWgAeACoAMQBVQC0fCA4CFhYlLxUVHCUIBDIzKygLKEZZLhZGWQIFDgsuLgURCxAYIgUiRlkABRYAPzMrEQAzGD8zEjkvEjkSOSsrEQAzERIBFzkRMxEzEjk5ETMxMAUgJw4BIyIAERAAMzIWFz4BMzISHQEhEiEyNjcVDgEBFBYzMjY1NCYjIgYlIgYHITQmBZb%2B230%2B0Ynf%2FvQBBuuDzT46wH7J7v0nCAFKXqFXWJj7IZino5mbpaaVBEd%2FkQwCIIQU63R3ATEBCAEJASx3cnB5%2Fvfiaf53IyeUJyACOdPb1dHd1djYpJ6epAABAQwE2QOuBiEADgAYQAkHABAPCwSADgkALzMazTIREgE5OTEwAT4BNzMeARcVIyYnBgcjAQx%2FZhemFm19d1iFiFNzBPCIgCkqhYIXN4OGNAAAAAACAW8E2QMtBoUACwAXAB5ADBIGDAAGABgZDwkVAwAvM8wyERIBOTkRMxEzMTABFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYDLXtmZXh5ZGV8bEIzM0I8OTRBBbJid3ViYnN3Xjg9PTg4PT0AAAABAQgE2QPwBd0AFwAkQA8JFRgZEQAFDAAMAAwVgAkALxrMOTkvLxEzETMREgE5OTEwASIuAiMiBgcjPgEzMh4CMzI2NzMOAQMUK1JPSSIyMw5iDXNbLlZOSCAxMA9jDXEE2yUtJTw9eYklLSU7PnmJAAAAAAEAUgHZA64CcQADABG1AAIEBQABAC8zERIBOTkxMBM1IRVSA1wB2ZiYAAAAAQBSAdkHrgJxAAMAEbUAAgQFAAEALzMREgE5OTEwEzUhFVIHXAHZmJgAAAABABkDwQFEBbYABwAStgEFCAkABAMAP80REgE5OTEwEyc2EjczBgclDBZiOHtCJQPBFloBDHn%2B9wAAAAABABkDwQFEBbYABwAStgUBCAkFBwMAP8YREgE5OTEwARcGAgcjEjcBNQ8aYjV6RiAFthZk%2FvdyAR3YAP%2F%2FAD%2F%2B%2BAFtAO4SBgAPAAAAAgAZA8ECtAW2AAcADwAaQAwEAQ0JBBARAAgDDAMAPzPNMhESARc5MTABJzYTMwYCByEnNhI3MwYHAZYPOHp7HjsN%2FdcMFmI4e0IlA8EW1wEIc%2F7fYRZaAQx5%2FvcAAAAAAgAZA8ECtAW2AAcAEAAaQAwJDQEFBBESDQUQBwMAPzPGMhESARc5MTABFwYCByMSNyEXBgIHIzYSNwE1DxpiNXpGIAInDhhgOH0aQg0FthZk%2FvdyAR3YFlv%2B9npkATRdAAAA%2F%2F8AGf75ArQA7hEHAM4AAPs4ACC3AQAHQA0NSAe4%2F8CzDAxIB7j%2FwLMJCUgHABErKys1NQABAKQB9AJeA%2BMACwATtgYAAAwNCQMAL80REgE5ETMxMBM0NjMyFhUUBiMiJqRxbGl0c2prcgLseX58e3eBgwAAAQBSAHUCHwO%2BAAYAGkAKBAIDBgIGCAcFAQAvLxESATk5ETMRMzEwEwEXCQEHAVIBVnf%2B3wEhd%2F6qAicBl0X%2Bov6hRwGXAAAAAQBQAHUCHQO%2BAAYAGkAKAwAEAgACCAcFAQAvLxESATk5ETMRMzEwCQEnCQE3AQId%2Fqh1AR%2F%2B4XUBWAIM%2FmlHAV8BXkX%2BaQAAAf55AAACjwW2AAMAE7cABQIEAwMCEgA%2FPxEBMxEzMTAJASMBAo%2F8eY8DhwW2%2BkoFtgAAAAIAFAJKArQFvAAKABQAPEAfFAULBwMDCQIAAgUDFRYBBQUJDxQfFAIUFAMOBx8DIAA%2FPzMSOS9dMzMRMxESARc5ETMzETMzETMxMAEjFSM1ITUBMxEzITU0Nw4DDwECtH2R%2Fm4BmIt9%2FvIGBRgeHguoAxTKymUCQ%2F3Nw4ZLDCctLRH2AAEAP%2F%2FsBIkFywAmAHFAPx0XHxYWGgsCBwcaJBEEChoXBicoCxcYF05ZCBgFHR4dTlkCHg8eHx4vHgMJAxgeGB4TIiIATFkiBxMOTFkTGQA%2FKwAYPysREgA5ORgvL19eXREzKxEAMxEzKxEAMxESARc5ETMRMzMRMxEzETMxMAEgAyEVIQcVFyEVIR4BMzI3FQYjIgADIzUzJzU3IzUzEgAzMhcHJgMb%2FsFPAf799AICAc%2F%2BQSXLqpyZkqvt%2Ft8uppgCApikJwEk7cmlR6YFNf5tgTlALYG0xUKWQQENAQGBKixQgQEFASRhi1YAAAABAAAjAAABBdMYAAAKCvIABQAk%2F3EABQA3ACkABQA5ACkABQA6ACkABQA8ABQABQBE%2F64ABQBG%2F4UABQBH%2F4UABQBI%2F4UABQBK%2F8MABQBQ%2F8MABQBR%2F8MABQBS%2F4UABQBT%2F8MABQBU%2F4UABQBV%2F8MABQBW%2F8MABQBY%2F8MABQCC%2F3EABQCD%2F3EABQCE%2F3EABQCF%2F3EABQCG%2F3EABQCH%2F3EABQCfABQABQCi%2F4UABQCj%2F64ABQCk%2F64ABQCl%2F64ABQCm%2F64ABQCn%2F64ABQCo%2F64ABQCp%2F4UABQCq%2F4UABQCr%2F4UABQCs%2F4UABQCt%2F4UABQC0%2F4UABQC1%2F4UABQC2%2F4UABQC3%2F4UABQC4%2F4UABQC6%2F4UABQC7%2F8MABQC8%2F8MABQC9%2F8MABQC%2B%2F8MABQDE%2F4UACgAk%2F3EACgA3ACkACgA5ACkACgA6ACkACgA8ABQACgBE%2F64ACgBG%2F4UACgBH%2F4UACgBI%2F4UACgBK%2F8MACgBQ%2F8MACgBR%2F8MACgBS%2F4UACgBT%2F8MACgBU%2F4UACgBV%2F8MACgBW%2F8MACgBY%2F8MACgCC%2F3EACgCD%2F3EACgCE%2F3EACgCF%2F3EACgCG%2F3EACgCH%2F3EACgCfABQACgCi%2F4UACgCj%2F64ACgCk%2F64ACgCl%2F64ACgCm%2F64ACgCn%2F64ACgCo%2F64ACgCp%2F4UACgCq%2F4UACgCr%2F4UACgCs%2F4UACgCt%2F4UACgC0%2F4UACgC1%2F4UACgC2%2F4UACgC3%2F4UACgC4%2F4UACgC6%2F4UACgC7%2F8MACgC8%2F8MACgC9%2F8MACgC%2B%2F8MACgDE%2F4UACwAtALgADwAm%2F5oADwAq%2F5oADwAy%2F5oADwA0%2F5oADwA3%2F3EADwA4%2F9cADwA5%2F4UADwA6%2F4UADwA8%2F4UADwCJ%2F5oADwCU%2F5oADwCV%2F5oADwCW%2F5oADwCX%2F5oADwCY%2F5oADwCa%2F5oADwCb%2F9cADwCc%2F9cADwCd%2F9cADwCe%2F9cADwCf%2F4UADwDD%2F5oAEAA3%2F64AEQAm%2F5oAEQAq%2F5oAEQAy%2F5oAEQA0%2F5oAEQA3%2F3EAEQA4%2F9cAEQA5%2F4UAEQA6%2F4UAEQA8%2F4UAEQCJ%2F5oAEQCU%2F5oAEQCV%2F5oAEQCW%2F5oAEQCX%2F5oAEQCY%2F5oAEQCa%2F5oAEQCb%2F9cAEQCc%2F9cAEQCd%2F9cAEQCe%2F9cAEQCf%2F4UAEQDD%2F5oAJAAF%2F3EAJAAK%2F3EAJAAm%2F9cAJAAq%2F9cAJAAtAQoAJAAy%2F9cAJAA0%2F9cAJAA3%2F3EAJAA5%2F64AJAA6%2F64AJAA8%2F4UAJACJ%2F9cAJACU%2F9cAJACV%2F9cAJACW%2F9cAJACX%2F9cAJACY%2F9cAJACa%2F9cAJACf%2F4UAJADD%2F9cAJADL%2F3EAJADO%2F3EAJQAP%2F64AJQAR%2F64AJQAk%2F9cAJQA3%2F8MAJQA5%2F%2BwAJQA6%2F%2BwAJQA7%2F9cAJQA8%2F%2BwAJQA9%2F%2BwAJQCC%2F9cAJQCD%2F9cAJQCE%2F9cAJQCF%2F9cAJQCG%2F9cAJQCH%2F9cAJQCf%2F%2BwAJQDM%2F64AJQDP%2F64AJgAm%2F9cAJgAq%2F9cAJgAy%2F9cAJgA0%2F9cAJgCJ%2F9cAJgCU%2F9cAJgCV%2F9cAJgCW%2F9cAJgCX%2F9cAJgCY%2F9cAJgCa%2F9cAJgDD%2F9cAJwAP%2F64AJwAR%2F64AJwAk%2F9cAJwA3%2F8MAJwA5%2F%2BwAJwA6%2F%2BwAJwA7%2F9cAJwA8%2F%2BwAJwA9%2F%2BwAJwCC%2F9cAJwCD%2F9cAJwCE%2F9cAJwCF%2F9cAJwCG%2F9cAJwCH%2F9cAJwCf%2F%2BwAJwDM%2F64AJwDP%2F64AKAAtAHsAKQAP%2F4UAKQAR%2F4UAKQAiACkAKQAk%2F9cAKQCC%2F9cAKQCD%2F9cAKQCE%2F9cAKQCF%2F9cAKQCG%2F9cAKQCH%2F9cAKQDM%2F4UAKQDP%2F4UALgAm%2F9cALgAq%2F9cALgAy%2F9cALgA0%2F9cALgCJ%2F9cALgCU%2F9cALgCV%2F9cALgCW%2F9cALgCX%2F9cALgCY%2F9cALgCa%2F9cALgDD%2F9cALwAF%2F1wALwAK%2F1wALwAm%2F9cALwAq%2F9cALwAy%2F9cALwA0%2F9cALwA3%2F9cALwA4%2F%2BwALwA5%2F9cALwA6%2F9cALwA8%2F8MALwCJ%2F9cALwCU%2F9cALwCV%2F9cALwCW%2F9cALwCX%2F9cALwCY%2F9cALwCa%2F9cALwCb%2F%2BwALwCc%2F%2BwALwCd%2F%2BwALwCe%2F%2BwALwCf%2F8MALwDD%2F9cALwDL%2F1wALwDO%2F1wAMgAP%2F64AMgAR%2F64AMgAk%2F9cAMgA3%2F8MAMgA5%2F%2BwAMgA6%2F%2BwAMgA7%2F9cAMgA8%2F%2BwAMgA9%2F%2BwAMgCC%2F9cAMgCD%2F9cAMgCE%2F9cAMgCF%2F9cAMgCG%2F9cAMgCH%2F9cAMgCf%2F%2BwAMgDM%2F64AMgDP%2F64AMwAP%2FvYAMwAR%2FvYAMwAk%2F5oAMwA7%2F9cAMwA9%2F%2BwAMwCC%2F5oAMwCD%2F5oAMwCE%2F5oAMwCF%2F5oAMwCG%2F5oAMwCH%2F5oAMwDM%2FvYAMwDP%2FvYANAAP%2F64ANAAR%2F64ANAAk%2F9cANAA3%2F8MANAA5%2F%2BwANAA6%2F%2BwANAA7%2F9cANAA8%2F%2BwANAA9%2F%2BwANACC%2F9cANACD%2F9cANACE%2F9cANACF%2F9cANACG%2F9cANACH%2F9cANACf%2F%2BwANADM%2F64ANADP%2F64ANwAP%2F4UANwAQ%2F64ANwAR%2F4UANwAiACkANwAk%2F3EANwAm%2F9cANwAq%2F9cANwAy%2F9cANwA0%2F9cANwA3ACkANwBE%2F1wANwBG%2F3EANwBH%2F3EANwBI%2F3EANwBK%2F3EANwBQ%2F5oANwBR%2F5oANwBS%2F3EANwBT%2F5oANwBU%2F3EANwBV%2F5oANwBW%2F4UANwBY%2F5oANwBZ%2F9cANwBa%2F9cANwBb%2F9cANwBc%2F9cANwBd%2F64ANwCC%2F3EANwCD%2F3EANwCE%2F3EANwCF%2F3EANwCG%2F3EANwCH%2F3EANwCJ%2F9cANwCU%2F9cANwCV%2F9cANwCW%2F9cANwCX%2F9cANwCY%2F9cANwCa%2F9cANwCi%2F3EANwCj%2F1wANwCk%2F1wANwCl%2F1wANwCm%2F1wANwCn%2F1wANwCo%2F1wANwCp%2F3EANwCq%2F3EANwCr%2F3EANwCs%2F3EANwCt%2F3EANwC0%2F3EANwC1%2F3EANwC2%2F3EANwC3%2F3EANwC4%2F3EANwC6%2F3EANwC7%2F5oANwC8%2F5oANwC9%2F5oANwC%2B%2F5oANwC%2F%2F9cANwDD%2F9cANwDE%2F3EANwDI%2F64ANwDJ%2F64ANwDM%2F4UANwDP%2F4UAOAAP%2F9cAOAAR%2F9cAOAAk%2F%2BwAOACC%2F%2BwAOACD%2F%2BwAOACE%2F%2BwAOACF%2F%2BwAOACG%2F%2BwAOACH%2F%2BwAOADM%2F9cAOADP%2F9cAOQAP%2F5oAOQAR%2F5oAOQAiACkAOQAk%2F64AOQAm%2F%2BwAOQAq%2F%2BwAOQAy%2F%2BwAOQA0%2F%2BwAOQBE%2F9cAOQBG%2F9cAOQBH%2F9cAOQBI%2F9cAOQBK%2F%2BwAOQBQ%2F%2BwAOQBR%2F%2BwAOQBS%2F9cAOQBT%2F%2BwAOQBU%2F9cAOQBV%2F%2BwAOQBW%2F%2BwAOQBY%2F%2BwAOQCC%2F64AOQCD%2F64AOQCE%2F64AOQCF%2F64AOQCG%2F64AOQCH%2F64AOQCJ%2F%2BwAOQCU%2F%2BwAOQCV%2F%2BwAOQCW%2F%2BwAOQCX%2F%2BwAOQCY%2F%2BwAOQCa%2F%2BwAOQCi%2F9cAOQCj%2F9cAOQCk%2F9cAOQCl%2F9cAOQCm%2F9cAOQCn%2F9cAOQCo%2F9cAOQCp%2F9cAOQCq%2F9cAOQCr%2F9cAOQCs%2F9cAOQCt%2F9cAOQC0%2F9cAOQC1%2F9cAOQC2%2F9cAOQC3%2F9cAOQC4%2F9cAOQC6%2F9cAOQC7%2F%2BwAOQC8%2F%2BwAOQC9%2F%2BwAOQC%2B%2F%2BwAOQDD%2F%2BwAOQDE%2F9cAOQDM%2F5oAOQDP%2F5oAOgAP%2F5oAOgAR%2F5oAOgAiACkAOgAk%2F64AOgAm%2F%2BwAOgAq%2F%2BwAOgAy%2F%2BwAOgA0%2F%2BwAOgBE%2F9cAOgBG%2F9cAOgBH%2F9cAOgBI%2F9cAOgBK%2F%2BwAOgBQ%2F%2BwAOgBR%2F%2BwAOgBS%2F9cAOgBT%2F%2BwAOgBU%2F9cAOgBV%2F%2BwAOgBW%2F%2BwAOgBY%2F%2BwAOgCC%2F64AOgCD%2F64AOgCE%2F64AOgCF%2F64AOgCG%2F64AOgCH%2F64AOgCJ%2F%2BwAOgCU%2F%2BwAOgCV%2F%2BwAOgCW%2F%2BwAOgCX%2F%2BwAOgCY%2F%2BwAOgCa%2F%2BwAOgCi%2F9cAOgCj%2F9cAOgCk%2F9cAOgCl%2F9cAOgCm%2F9cAOgCn%2F9cAOgCo%2F9cAOgCp%2F9cAOgCq%2F9cAOgCr%2F9cAOgCs%2F9cAOgCt%2F9cAOgC0%2F9cAOgC1%2F9cAOgC2%2F9cAOgC3%2F9cAOgC4%2F9cAOgC6%2F9cAOgC7%2F%2BwAOgC8%2F%2BwAOgC9%2F%2BwAOgC%2B%2F%2BwAOgDD%2F%2BwAOgDE%2F9cAOgDM%2F5oAOgDP%2F5oAOwAm%2F9cAOwAq%2F9cAOwAy%2F9cAOwA0%2F9cAOwCJ%2F9cAOwCU%2F9cAOwCV%2F9cAOwCW%2F9cAOwCX%2F9cAOwCY%2F9cAOwCa%2F9cAOwDD%2F9cAPAAP%2F4UAPAAR%2F4UAPAAiACkAPAAk%2F4UAPAAm%2F9cAPAAq%2F9cAPAAy%2F9cAPAA0%2F9cAPABE%2F5oAPABG%2F5oAPABH%2F5oAPABI%2F5oAPABK%2F9cAPABQ%2F8MAPABR%2F8MAPABS%2F5oAPABT%2F8MAPABU%2F5oAPABV%2F8MAPABW%2F64APABY%2F8MAPABd%2F9cAPACC%2F4UAPACD%2F4UAPACE%2F4UAPACF%2F4UAPACG%2F4UAPACH%2F4UAPACJ%2F9cAPACU%2F9cAPACV%2F9cAPACW%2F9cAPACX%2F9cAPACY%2F9cAPACa%2F9cAPACi%2F5oAPACj%2F5oAPACk%2F5oAPACl%2F5oAPACm%2F5oAPACn%2F5oAPACo%2F5oAPACp%2F5oAPACq%2F5oAPACr%2F5oAPACs%2F5oAPACt%2F5oAPAC0%2F5oAPAC1%2F5oAPAC2%2F5oAPAC3%2F5oAPAC4%2F5oAPAC6%2F5oAPAC7%2F8MAPAC8%2F8MAPAC9%2F8MAPAC%2B%2F8MAPADD%2F9cAPADE%2F5oAPADM%2F4UAPADP%2F4UAPQAm%2F%2BwAPQAq%2F%2BwAPQAy%2F%2BwAPQA0%2F%2BwAPQCJ%2F%2BwAPQCU%2F%2BwAPQCV%2F%2BwAPQCW%2F%2BwAPQCX%2F%2BwAPQCY%2F%2BwAPQCa%2F%2BwAPQDD%2F%2BwAPgAtALgARAAF%2F%2BwARAAK%2F%2BwARADL%2F%2BwARADO%2F%2BwARQAF%2F%2BwARQAK%2F%2BwARQBZ%2F9cARQBa%2F9cARQBb%2F9cARQBc%2F9cARQBd%2F%2BwARQC%2F%2F9cARQDL%2F%2BwARQDO%2F%2BwARgAFACkARgAKACkARgDLACkARgDOACkASAAF%2F%2BwASAAK%2F%2BwASABZ%2F9cASABa%2F9cASABb%2F9cASABc%2F9cASABd%2F%2BwASAC%2F%2F9cASADL%2F%2BwASADO%2F%2BwASQAFAHsASQAKAHsASQDLAHsASQDOAHsASwAF%2F%2BwASwAK%2F%2BwASwDL%2F%2BwASwDO%2F%2BwATgBG%2F9cATgBH%2F9cATgBI%2F9cATgBS%2F9cATgBU%2F9cATgCi%2F9cATgCp%2F9cATgCq%2F9cATgCr%2F9cATgCs%2F9cATgCt%2F9cATgC0%2F9cATgC1%2F9cATgC2%2F9cATgC3%2F9cATgC4%2F9cATgC6%2F9cATgDE%2F9cAUAAF%2F%2BwAUAAK%2F%2BwAUADL%2F%2BwAUADO%2F%2BwAUQAF%2F%2BwAUQAK%2F%2BwAUQDL%2F%2BwAUQDO%2F%2BwAUgAF%2F%2BwAUgAK%2F%2BwAUgBZ%2F9cAUgBa%2F9cAUgBb%2F9cAUgBc%2F9cAUgBd%2F%2BwAUgC%2F%2F9cAUgDL%2F%2BwAUgDO%2F%2BwAUwAF%2F%2BwAUwAK%2F%2BwAUwBZ%2F9cAUwBa%2F9cAUwBb%2F9cAUwBc%2F9cAUwBd%2F%2BwAUwC%2F%2F9cAUwDL%2F%2BwAUwDO%2F%2BwAVQAFAFIAVQAKAFIAVQBE%2F9cAVQBG%2F9cAVQBH%2F9cAVQBI%2F9cAVQBK%2F%2BwAVQBS%2F9cAVQBU%2F9cAVQCi%2F9cAVQCj%2F9cAVQCk%2F9cAVQCl%2F9cAVQCm%2F9cAVQCn%2F9cAVQCo%2F9cAVQCp%2F9cAVQCq%2F9cAVQCr%2F9cAVQCs%2F9cAVQCt%2F9cAVQC0%2F9cAVQC1%2F9cAVQC2%2F9cAVQC3%2F9cAVQC4%2F9cAVQC6%2F9cAVQDE%2F9cAVQDLAFIAVQDOAFIAVwAFACkAVwAKACkAVwDLACkAVwDOACkAWQAFAFIAWQAKAFIAWQAP%2F64AWQAR%2F64AWQAiACkAWQDLAFIAWQDM%2F64AWQDOAFIAWQDP%2F64AWgAFAFIAWgAKAFIAWgAP%2F64AWgAR%2F64AWgAiACkAWgDLAFIAWgDM%2F64AWgDOAFIAWgDP%2F64AWwBG%2F9cAWwBH%2F9cAWwBI%2F9cAWwBS%2F9cAWwBU%2F9cAWwCi%2F9cAWwCp%2F9cAWwCq%2F9cAWwCr%2F9cAWwCs%2F9cAWwCt%2F9cAWwC0%2F9cAWwC1%2F9cAWwC2%2F9cAWwC3%2F9cAWwC4%2F9cAWwC6%2F9cAWwDE%2F9cAXAAFAFIAXAAKAFIAXAAP%2F64AXAAR%2F64AXAAiACkAXADLAFIAXADM%2F64AXADOAFIAXADP%2F64AXgAtALgAggAF%2F3EAggAK%2F3EAggAm%2F9cAggAq%2F9cAggAtAQoAggAy%2F9cAggA0%2F9cAggA3%2F3EAggA5%2F64AggA6%2F64AggA8%2F4UAggCJ%2F9cAggCU%2F9cAggCV%2F9cAggCW%2F9cAggCX%2F9cAggCY%2F9cAggCa%2F9cAggCf%2F4UAggDD%2F9cAggDL%2F3EAggDO%2F3EAgwAF%2F3EAgwAK%2F3EAgwAm%2F9cAgwAq%2F9cAgwAtAQoAgwAy%2F9cAgwA0%2F9cAgwA3%2F3EAgwA5%2F64AgwA6%2F64AgwA8%2F4UAgwCJ%2F9cAgwCU%2F9cAgwCV%2F9cAgwCW%2F9cAgwCX%2F9cAgwCY%2F9cAgwCa%2F9cAgwCf%2F4UAgwDD%2F9cAgwDL%2F3EAgwDO%2F3EAhAAF%2F3EAhAAK%2F3EAhAAm%2F9cAhAAq%2F9cAhAAtAQoAhAAy%2F9cAhAA0%2F9cAhAA3%2F3EAhAA5%2F64AhAA6%2F64AhAA8%2F4UAhACJ%2F9cAhACU%2F9cAhACV%2F9cAhACW%2F9cAhACX%2F9cAhACY%2F9cAhACa%2F9cAhACf%2F4UAhADD%2F9cAhADL%2F3EAhADO%2F3EAhQAF%2F3EAhQAK%2F3EAhQAm%2F9cAhQAq%2F9cAhQAtAQoAhQAy%2F9cAhQA0%2F9cAhQA3%2F3EAhQA5%2F64AhQA6%2F64AhQA8%2F4UAhQCJ%2F9cAhQCU%2F9cAhQCV%2F9cAhQCW%2F9cAhQCX%2F9cAhQCY%2F9cAhQCa%2F9cAhQCf%2F4UAhQDD%2F9cAhQDL%2F3EAhQDO%2F3EAhgAF%2F3EAhgAK%2F3EAhgAm%2F9cAhgAq%2F9cAhgAtAQoAhgAy%2F9cAhgA0%2F9cAhgA3%2F3EAhgA5%2F64AhgA6%2F64AhgA8%2F4UAhgCJ%2F9cAhgCU%2F9cAhgCV%2F9cAhgCW%2F9cAhgCX%2F9cAhgCY%2F9cAhgCa%2F9cAhgCf%2F4UAhgDD%2F9cAhgDL%2F3EAhgDO%2F3EAhwAF%2F3EAhwAK%2F3EAhwAm%2F9cAhwAq%2F9cAhwAtAQoAhwAy%2F9cAhwA0%2F9cAhwA3%2F3EAhwA5%2F64AhwA6%2F64AhwA8%2F4UAhwCJ%2F9cAhwCU%2F9cAhwCV%2F9cAhwCW%2F9cAhwCX%2F9cAhwCY%2F9cAhwCa%2F9cAhwCf%2F4UAhwDD%2F9cAhwDL%2F3EAhwDO%2F3EAiAAtAHsAiQAm%2F9cAiQAq%2F9cAiQAy%2F9cAiQA0%2F9cAiQCJ%2F9cAiQCU%2F9cAiQCV%2F9cAiQCW%2F9cAiQCX%2F9cAiQCY%2F9cAiQCa%2F9cAiQDD%2F9cAigAtAHsAiwAtAHsAjAAtAHsAjQAtAHsAkgAP%2F64AkgAR%2F64AkgAk%2F9cAkgA3%2F8MAkgA5%2F%2BwAkgA6%2F%2BwAkgA7%2F9cAkgA8%2F%2BwAkgA9%2F%2BwAkgCC%2F9cAkgCD%2F9cAkgCE%2F9cAkgCF%2F9cAkgCG%2F9cAkgCH%2F9cAkgCf%2F%2BwAkgDM%2F64AkgDP%2F64AlAAP%2F64AlAAR%2F64AlAAk%2F9cAlAA3%2F8MAlAA5%2F%2BwAlAA6%2F%2BwAlAA7%2F9cAlAA8%2F%2BwAlAA9%2F%2BwAlACC%2F9cAlACD%2F9cAlACE%2F9cAlACF%2F9cAlACG%2F9cAlACH%2F9cAlACf%2F%2BwAlADM%2F64AlADP%2F64AlQAP%2F64AlQAR%2F64AlQAk%2F9cAlQA3%2F8MAlQA5%2F%2BwAlQA6%2F%2BwAlQA7%2F9cAlQA8%2F%2BwAlQA9%2F%2BwAlQCC%2F9cAlQCD%2F9cAlQCE%2F9cAlQCF%2F9cAlQCG%2F9cAlQCH%2F9cAlQCf%2F%2BwAlQDM%2F64AlQDP%2F64AlgAP%2F64AlgAR%2F64AlgAk%2F9cAlgA3%2F8MAlgA5%2F%2BwAlgA6%2F%2BwAlgA7%2F9cAlgA8%2F%2BwAlgA9%2F%2BwAlgCC%2F9cAlgCD%2F9cAlgCE%2F9cAlgCF%2F9cAlgCG%2F9cAlgCH%2F9cAlgCf%2F%2BwAlgDM%2F64AlgDP%2F64AlwAP%2F64AlwAR%2F64AlwAk%2F9cAlwA3%2F8MAlwA5%2F%2BwAlwA6%2F%2BwAlwA7%2F9cAlwA8%2F%2BwAlwA9%2F%2BwAlwCC%2F9cAlwCD%2F9cAlwCE%2F9cAlwCF%2F9cAlwCG%2F9cAlwCH%2F9cAlwCf%2F%2BwAlwDM%2F64AlwDP%2F64AmAAP%2F64AmAAR%2F64AmAAk%2F9cAmAA3%2F8MAmAA5%2F%2BwAmAA6%2F%2BwAmAA7%2F9cAmAA8%2F%2BwAmAA9%2F%2BwAmACC%2F9cAmACD%2F9cAmACE%2F9cAmACF%2F9cAmACG%2F9cAmACH%2F9cAmACf%2F%2BwAmADM%2F64AmADP%2F64AmgAP%2F64AmgAR%2F64AmgAk%2F9cAmgA3%2F8MAmgA5%2F%2BwAmgA6%2F%2BwAmgA7%2F9cAmgA8%2F%2BwAmgA9%2F%2BwAmgCC%2F9cAmgCD%2F9cAmgCE%2F9cAmgCF%2F9cAmgCG%2F9cAmgCH%2F9cAmgCf%2F%2BwAmgDM%2F64AmgDP%2F64AmwAP%2F9cAmwAR%2F9cAmwAk%2F%2BwAmwCC%2F%2BwAmwCD%2F%2BwAmwCE%2F%2BwAmwCF%2F%2BwAmwCG%2F%2BwAmwCH%2F%2BwAmwDM%2F9cAmwDP%2F9cAnAAP%2F9cAnAAR%2F9cAnAAk%2F%2BwAnACC%2F%2BwAnACD%2F%2BwAnACE%2F%2BwAnACF%2F%2BwAnACG%2F%2BwAnACH%2F%2BwAnADM%2F9cAnADP%2F9cAnQAP%2F9cAnQAR%2F9cAnQAk%2F%2BwAnQCC%2F%2BwAnQCD%2F%2BwAnQCE%2F%2BwAnQCF%2F%2BwAnQCG%2F%2BwAnQCH%2F%2BwAnQDM%2F9cAnQDP%2F9cAngAP%2F9cAngAR%2F9cAngAk%2F%2BwAngCC%2F%2BwAngCD%2F%2BwAngCE%2F%2BwAngCF%2F%2BwAngCG%2F%2BwAngCH%2F%2BwAngDM%2F9cAngDP%2F9cAnwAP%2F4UAnwAR%2F4UAnwAiACkAnwAk%2F4UAnwAm%2F9cAnwAq%2F9cAnwAy%2F9cAnwA0%2F9cAnwBE%2F5oAnwBG%2F5oAnwBH%2F5oAnwBI%2F5oAnwBK%2F9cAnwBQ%2F8MAnwBR%2F8MAnwBS%2F5oAnwBT%2F8MAnwBU%2F5oAnwBV%2F8MAnwBW%2F64AnwBY%2F8MAnwBd%2F9cAnwCC%2F4UAnwCD%2F4UAnwCE%2F4UAnwCF%2F4UAnwCG%2F4UAnwCH%2F4UAnwCJ%2F9cAnwCU%2F9cAnwCV%2F9cAnwCW%2F9cAnwCX%2F9cAnwCY%2F9cAnwCa%2F9cAnwCi%2F5oAnwCj%2F5oAnwCk%2F5oAnwCl%2F5oAnwCm%2F5oAnwCn%2F5oAnwCo%2F5oAnwCp%2F5oAnwCq%2F5oAnwCr%2F5oAnwCs%2F5oAnwCt%2F5oAnwC0%2F5oAnwC1%2F5oAnwC2%2F5oAnwC3%2F5oAnwC4%2F5oAnwC6%2F5oAnwC7%2F8MAnwC8%2F8MAnwC9%2F8MAnwC%2B%2F8MAnwDD%2F9cAnwDE%2F5oAnwDM%2F4UAnwDP%2F4UAoAAP%2FvYAoAAR%2FvYAoAAk%2F5oAoAA7%2F9cAoAA9%2F%2BwAoACC%2F5oAoACD%2F5oAoACE%2F5oAoACF%2F5oAoACG%2F5oAoACH%2F5oAoADM%2FvYAoADP%2FvYAogAF%2F%2BwAogAK%2F%2BwAogDL%2F%2BwAogDO%2F%2BwAowAF%2F%2BwAowAK%2F%2BwAowDL%2F%2BwAowDO%2F%2BwApAAF%2F%2BwApAAK%2F%2BwApADL%2F%2BwApADO%2F%2BwApQAF%2F%2BwApQAK%2F%2BwApQDL%2F%2BwApQDO%2F%2BwApgAF%2F%2BwApgAK%2F%2BwApgDL%2F%2BwApgDO%2F%2BwApwAF%2F%2BwApwAK%2F%2BwApwDL%2F%2BwApwDO%2F%2BwAqgAF%2F%2BwAqgAK%2F%2BwAqgBZ%2F9cAqgBa%2F9cAqgBb%2F9cAqgBc%2F9cAqgBd%2F%2BwAqgC%2F%2F9cAqgDL%2F%2BwAqgDO%2F%2BwAqwAF%2F%2BwAqwAK%2F%2BwAqwBZ%2F9cAqwBa%2F9cAqwBb%2F9cAqwBc%2F9cAqwBd%2F%2BwAqwC%2F%2F9cAqwDL%2F%2BwAqwDO%2F%2BwArAAF%2F%2BwArAAK%2F%2BwArABZ%2F9cArABa%2F9cArABb%2F9cArABc%2F9cArABd%2F%2BwArAC%2F%2F9cArADL%2F%2BwArADO%2F%2BwArQAF%2F%2BwArQAK%2F%2BwArQBZ%2F9cArQBa%2F9cArQBb%2F9cArQBc%2F9cArQBd%2F%2BwArQC%2F%2F9cArQDL%2F%2BwArQDO%2F%2BwAsgAF%2F%2BwAsgAK%2F%2BwAsgBZ%2F9cAsgBa%2F9cAsgBb%2F9cAsgBc%2F9cAsgBd%2F%2BwAsgC%2F%2F9cAsgDL%2F%2BwAsgDO%2F%2BwAtAAF%2F%2BwAtAAK%2F%2BwAtABZ%2F9cAtABa%2F9cAtABb%2F9cAtABc%2F9cAtABd%2F%2BwAtAC%2F%2F9cAtADL%2F%2BwAtADO%2F%2BwAtQAF%2F%2BwAtQAK%2F%2BwAtQBZ%2F9cAtQBa%2F9cAtQBb%2F9cAtQBc%2F9cAtQBd%2F%2BwAtQC%2F%2F9cAtQDL%2F%2BwAtQDO%2F%2BwAtgAF%2F%2BwAtgAK%2F%2BwAtgBZ%2F9cAtgBa%2F9cAtgBb%2F9cAtgBc%2F9cAtgBd%2F%2BwAtgC%2F%2F9cAtgDL%2F%2BwAtgDO%2F%2BwAuAAF%2F9cAuAAK%2F9cAuADL%2F9cAuADO%2F9cAugAF%2F%2BwAugAK%2F%2BwAugBZ%2F9cAugBa%2F9cAugBb%2F9cAugBc%2F9cAugBd%2F%2BwAugC%2F%2F9cAugDL%2F%2BwAugDO%2F%2BwAvwAFAFIAvwAKAFIAvwAP%2F64AvwAR%2F64AvwAiACkAvwDLAFIAvwDM%2F64AvwDOAFIAvwDP%2F64AwAAF%2F%2BwAwAAK%2F%2BwAwABZ%2F9cAwABa%2F9cAwABb%2F9cAwABc%2F9cAwABd%2F%2BwAwAC%2F%2F9cAwADL%2F%2BwAwADO%2F%2BwAwQAFAFIAwQAKAFIAwQAP%2F64AwQAR%2F64AwQAiACkAwQDLAFIAwQDM%2F64AwQDOAFIAwQDP%2F64AwwAtAHsAyAA3%2F64AyQA3%2F64AygAk%2F3EAygA3ACkAygA5ACkAygA6ACkAygA8ABQAygBE%2F64AygBG%2F4UAygBH%2F4UAygBI%2F4UAygBK%2F8MAygBQ%2F8MAygBR%2F8MAygBS%2F4UAygBT%2F8MAygBU%2F4UAygBV%2F8MAygBW%2F8MAygBY%2F8MAygCC%2F3EAygCD%2F3EAygCE%2F3EAygCF%2F3EAygCG%2F3EAygCH%2F3EAygCfABQAygCi%2F4UAygCj%2F64AygCk%2F64AygCl%2F64AygCm%2F64AygCn%2F64AygCo%2F64AygCp%2F4UAygCq%2F4UAygCr%2F4UAygCs%2F4UAygCt%2F4UAygC0%2F4UAygC1%2F4UAygC2%2F4UAygC3%2F4UAygC4%2F4UAygC6%2F4UAygC7%2F8MAygC8%2F8MAygC9%2F8MAygC%2B%2F8MAygDE%2F4UAywAk%2F3EAywA3ACkAywA5ACkAywA6ACkAywA8ABQAywBE%2F64AywBG%2F4UAywBH%2F4UAywBI%2F4UAywBK%2F8MAywBQ%2F8MAywBR%2F8MAywBS%2F4UAywBT%2F8MAywBU%2F4UAywBV%2F8MAywBW%2F8MAywBY%2F8MAywCC%2F3EAywCD%2F3EAywCE%2F3EAywCF%2F3EAywCG%2F3EAywCH%2F3EAywCfABQAywCi%2F4UAywCj%2F64AywCk%2F64AywCl%2F64AywCm%2F64AywCn%2F64AywCo%2F64AywCp%2F4UAywCq%2F4UAywCr%2F4UAywCs%2F4UAywCt%2F4UAywC0%2F4UAywC1%2F4UAywC2%2F4UAywC3%2F4UAywC4%2F4UAywC6%2F4UAywC7%2F8MAywC8%2F8MAywC9%2F8MAywC%2B%2F8MAywDE%2F4UAzAAm%2F5oAzAAq%2F5oAzAAy%2F5oAzAA0%2F5oAzAA3%2F3EAzAA4%2F9cAzAA5%2F4UAzAA6%2F4UAzAA8%2F4UAzACJ%2F5oAzACU%2F5oAzACV%2F5oAzACW%2F5oAzACX%2F5oAzACY%2F5oAzACa%2F5oAzACb%2F9cAzACc%2F9cAzACd%2F9cAzACe%2F9cAzACf%2F4UAzADD%2F5oAzQAk%2F3EAzQA3ACkAzQA5ACkAzQA6ACkAzQA8ABQAzQBE%2F64AzQBG%2F4UAzQBH%2F4UAzQBI%2F4UAzQBK%2F8MAzQBQ%2F8MAzQBR%2F8MAzQBS%2F4UAzQBT%2F8MAzQBU%2F4UAzQBV%2F8MAzQBW%2F8MAzQBY%2F8MAzQCC%2F3EAzQCD%2F3EAzQCE%2F3EAzQCF%2F3EAzQCG%2F3EAzQCH%2F3EAzQCfABQAzQCi%2F4UAzQCj%2F64AzQCk%2F64AzQCl%2F64AzQCm%2F64AzQCn%2F64AzQCo%2F64AzQCp%2F4UAzQCq%2F4UAzQCr%2F4UAzQCs%2F4UAzQCt%2F4UAzQC0%2F4UAzQC1%2F4UAzQC2%2F4UAzQC3%2F4UAzQC4%2F4UAzQC6%2F4UAzQC7%2F8MAzQC8%2F8MAzQC9%2F8MAzQC%2B%2F8MAzQDE%2F4UAzwAm%2F5oAzwAq%2F5oAzwAy%2F5oAzwA0%2F5oAzwA3%2F3EAzwA4%2F9cAzwA5%2F4UAzwA6%2F4UAzwA8%2F4UAzwCJ%2F5oAzwCU%2F5oAzwCV%2F5oAzwCW%2F5oAzwCX%2F5oAzwCY%2F5oAzwCa%2F5oAzwCb%2F9cAzwCc%2F9cAzwCd%2F9cAzwCe%2F9cAzwCf%2F4UAzwDD%2F5oAAAAaAT4AAQAAAAAAAAA5AHQAAQAAAAAAAQAJAMIAAQAAAAAAAgAHANwAAQAAAAAAAwAeASIAAQAAAAAABAAJAVUAAQAAAAAABQAMAXkAAQAAAAAABgAIAZgAAQAAAAAABwBSAkcAAQAAAAAACAAUAsQAAQAAAAAACwAcAxMAAQAAAAAADAAuA44AAQAAAAAADQAuBBsAAQAAAAAADgAqBKAAAwABBAkAAAByAAAAAwABBAkAAQASAK4AAwABBAkAAgAOAMwAAwABBAkAAwA8AOQAAwABBAkABAASAUEAAwABBAkABQAYAV8AAwABBAkABgAQAYYAAwABBAkABwCkAaEAAwABBAkACAAoApoAAwABBAkACwA4AtkAAwABBAkADABcAzAAAwABBAkADQBcA70AAwABBAkADgBUBEoARABpAGcAaQB0AGkAegBlAGQAIABkAGEAdABhACAAYwBvAHAAeQByAGkAZwBoAHQAIACpACAAMgAwADEAMAAtADIAMAAxADEALAAgAEcAbwBvAGcAbABlACAAQwBvAHIAcABvAHIAYQB0AGkAbwBuAC4AAERpZ2l0aXplZCBkYXRhIGNvcHlyaWdodCCpIDIwMTAtMjAxMSwgR29vZ2xlIENvcnBvcmF0aW9uLgAATwBwAGUAbgAgAFMAYQBuAHMAAE9wZW4gU2FucwAAUgBlAGcAdQBsAGEAcgAAUmVndWxhcgAAQQBzAGMAZQBuAGQAZQByACAALQAgAE8AcABlAG4AIABTAGEAbgBzACAAQgB1AGkAbABkACAAMQAwADAAAEFzY2VuZGVyIC0gT3BlbiBTYW5zIEJ1aWxkIDEwMAAATwBwAGUAbgAgAFMAYQBuAHMAAE9wZW4gU2FucwAAVgBlAHIAcwBpAG8AbgAgADEALgAxADAAAFZlcnNpb24gMS4xMAAATwBwAGUAbgBTAGEAbgBzAABPcGVuU2FucwAATwBwAGUAbgAgAFMAYQBuAHMAIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABHAG8AbwBnAGwAZQAgAGEAbgBkACAAbQBhAHkAIABiAGUAIAByAGUAZwBpAHMAdABlAHIAZQBkACAAaQBuACAAYwBlAHIAdABhAGkAbgAgAGoAdQByAGkAcwBkAGkAYwB0AGkAbwBuAHMALgAAT3BlbiBTYW5zIGlzIGEgdHJhZGVtYXJrIG9mIEdvb2dsZSBhbmQgbWF5IGJlIHJlZ2lzdGVyZWQgaW4gY2VydGFpbiBqdXJpc2RpY3Rpb25zLgAAQQBzAGMAZQBuAGQAZQByACAAQwBvAHIAcABvAHIAYQB0AGkAbwBuAABBc2NlbmRlciBDb3Jwb3JhdGlvbgAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGEAcwBjAGUAbgBkAGUAcgBjAG8AcgBwAC4AYwBvAG0ALwAAaHR0cDovL3d3dy5hc2NlbmRlcmNvcnAuY29tLwAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGEAcwBjAGUAbgBkAGUAcgBjAG8AcgBwAC4AYwBvAG0ALwB0AHkAcABlAGQAZQBzAGkAZwBuAGUAcgBzAC4AaAB0AG0AbAAAaHR0cDovL3d3dy5hc2NlbmRlcmNvcnAuY29tL3R5cGVkZXNpZ25lcnMuaHRtbAAATABpAGMAZQBuAHMAZQBkACAAdQBuAGQAZQByACAAdABoAGUAIABBAHAAYQBjAGgAZQAgAEwAaQBjAGUAbgBzAGUALAAgAFYAZQByAHMAaQBvAG4AIAAyAC4AMAAATGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMAAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGEAcABhAGMAaABlAC4AbwByAGcALwBsAGkAYwBlAG4AcwBlAHMALwBMAEkAQwBFAE4AUwBFAC0AMgAuADAAAGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAAAAAAAAgAAAAAAAP9mAGYAAAAAAAAAAAAAAAAAAAAAAAAAAADWAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA%2BAD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQCsAKMAhACFAL0AlgDoAIYAjgCLAJ0AqQCkAQIAigEDAIMAkwDyAPMAjQCXAIgAwwDeAPEAngCqAPUA9AD2AKIArQDJAMcArgBiAGMAkABkAMsAZQDIAMoAzwDMAM0AzgDpAGYA0wDQANEArwBnAPAAkQDWANQA1QBoAOsA7QCJAGoAaQBrAG0AbABuAKAAbwBxAHAAcgBzAHUAdAB2AHcA6gB4AHoAeQB7AH0AfAC4AKEAfwB%2BAIAAgQDsAO4AugDXALAAsQDYAN0A2QCyALMAtgC3AMQAtAC1AMUAhwC%2BAL8AvAEEAQUHdW5pMDBBRAlvdmVyc2NvcmUMZm91cnN1cGVyaW9yBEV1cm8AAAABAAMACAAKAA0AB%2F%2F%2FAA8AAAABAAAAAMmJbzEAAAAAyTUxiwAAAADJ7dhg%29%20format%28%27truetype%27%29%3B%0A%7D%0A%40font%2Dface%20%7B%0Afont%2Dfamily%3A%20%27Open%20Sans%27%3B%0Afont%2Dstyle%3A%20normal%3B%0Afont%2Dweight%3A%20600%3B%0Asrc%3A%20url%28data%3Aapplication%2Fx%2Dfont%2Dtruetype%3Bbase64%2CAAEAAAAQAQAABAAARkZUTVzEMhEAAJKkAAAAHE9TLzKiDbgUAAABiAAAAGBjbWFwjOjcmQAABUAAAAGyY3Z0IBCRGjQAAA%2FAAAAApmZwZ21%2BYbYRAAAG9AAAB7RnYXNwAAgAGwAAkpgAAAAMZ2x5ZhQyYgAAABIYAABUuGhlYWT5NRTiAAABDAAAADZoaGVhDrUE%2BgAAAUQAAAAkaG10eLHEUI0AAAHoAAADWGtlcm4Mlg8JAABm0AAAIwRsb2Nh0PO82gAAEGgAAAGubWF4cAJSAT8AAAFoAAAAIG5hbWUEDhKHAACJ1AAABs9wb3N0gnjp1QAAkKQAAAHycHJlcHism24AAA6oAAABGAABAAAAARmawtwUTF8PPPUAHwgAAAAAAMnt2GIAAAAAye3YYv53%2FhQHrgdzAAEACAACAAAAAAAAAAEAAAiN%2FagAAAgA%2Fnf%2BeweuAAEAAAAAAAAAAAAAAAAAAADWAAEAAADWAEQABQA%2FAAQAAgAQAC8AXAAAAQMAigADAAEAAwRsAlgABQAIBZoFMwAAAR8FmgUzAAAD0QBmAfYAAAILBwYDCAQCAgTgAALvQAAgWwAAACgAAAAAMUFTQwAgACAgrAYf%2FhQAhAiNAlggAAGfAAAAAARSBbYAAAAgAAEIAAAAAAAAAAQUAAACFAAAAjUAhQN9AIUFKwAvBJEAbwblAFQF7ABgAfIAhQKJAFICiQA9BGIASgSRAGACIwA%2FApMASAIzAIUDHwAQBJEAWASRAJoEkQBaBJEAVgSRACcEkQB1BJEAXgSRAEoEkQBYBJEAVgIzAIUCOQA%2FBJEAYASRAGYEkQBgA6AAEAcvAG8FSgAABUgAwQUSAHkF3wDBBHcAwQRCAMEFzwB5BgIAwQJxAMECZP9kBR0AwQRWAMEHYgDBBkQAwQZMAHkE7ADBBkwAeQUdAMEEZgBkBIcAHQXwALQE%2BgAAB5EADAT6AAQEvAAABJoAQgKkAJoDHwAQAqQAMwRMAB0Db%2F%2F8BLwBagSkAFoE%2FACoA%2FYAZgT8AGYEnABmAucAIwRzABcFFACoAjsAmgI7%2F4cEkwCoAjsAqAemAKgFFACoBOMAZgT8AKgE%2FABmA3MAqAPlAGIDJQAnBRQAngRIAAAGiQAUBGgAGQRKAAAD0wBEAxcALQRoAdkC%2BAAtBJEAYAIUAAACNQCFBJEApgSRAEgEkQB1BJEAEgRoAdkEAgBzBLwBJQaoAGQC8gA5BHMAUgSRAGACkwBIBqgAZAQA%2F%2FoDbQBtBJEAYALnADMC5wAtBLwBagUdAKgFPQBxAjMAhQG6AAAC5wBUAwwAPQRzAFAGpAA8BqQALgakADcDoAA3BUoAAAVKAAAFSgAABUoAAAVKAAAFSgAAB0z%2F%2FgUSAHkEdwDBBHcAwQR3AMEEdwDBAnH%2F%2BgJxALMCcf%2B1AnEAAQXZAC8GRADBBkwAeQZMAHkGTAB5BkwAeQZMAHkEkQCDBkwAeQXwALQF8AC0BfAAtAXwALQEvAAABPQAwQVUAKgEpABaBKQAWgSkAFoEpABaBKQAWgSkAFoHGQBaA%2FYAZgScAGYEnABmBJwAZgScAGYCO%2F%2B7AjsAnAI7%2F5wCO%2F%2FnBNsAZgUUAKgE4wBmBOMAZgTjAGYE4wBmBOMAZgSRAGAE4wBmBRQAngUUAJ4FFACeBRQAngRKAAAE%2FACoBEoAAAI7AKgHlgB5B64AZgTLAOMEngFgBMsA7AQAAFIIAABSAYsAGQGLABkCJQA%2FAy0AGQMtABkDsAArAwIAgwKwAFICsABQAQr%2BdwLnABAEpAA%2FAAAAAwAAAAMAAAAcAAEAAAAAAKwAAwABAAAAHAAEAJAAAAAgACAABAAAAH4A%2FwExAVMCxgLaAtwgFCAaIB4gIiA6IEQgdCCs%2F%2F8AAAAgAKABMQFSAsYC2gLcIBMgGCAcICIgOSBEIHQgrP%2F%2F%2F%2BP%2Fwv%2BR%2F3H9%2F%2F3s%2FevgteCy4LHgruCY4I%2FgYOApAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQYAAAEAAAAAAAAAAQIAAAACAAAAAAAAAAAAAAAAAAAAAQAAAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0%2BP0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGEAhoeJi5OYnqOipKalp6mrqqytr66wsbO1tLa4t7y7vb4AcmRladB4oXBrAHZqAIiaAHMAAGd3AAAAAABsfACouoFjbgAAAABtfQBigoWXw8TIyc3Oysu5AMEA09XR0gAAAHnMzwCEjIONio%2BQkY6VlgCUnJ2bwsXHcQAAxnoAAAAAAEBHW1pZWFVUU1JRUE9OTUxLSklIR0ZFRENCQUA%2FPj08Ozo5ODc2NTEwLy4tLCgnJiUkIyIhHxgUERAPDg0LCgkIBwYFBAMCAQAsILABYEWwAyUgEUZhI0UjYUgtLCBFGGhELSxFI0ZgsCBhILBGYLAEJiNISC0sRSNGI2GwIGAgsCZhsCBhsAQmI0hILSxFI0ZgsEBhILBmYLAEJiNISC0sRSNGI2GwQGAgsCZhsEBhsAQmI0hILSwBECA8ADwtLCBFIyCwzUQjILgBWlFYIyCwjUQjWSCw7VFYIyCwTUQjWSCwBCZRWCMgsA1EI1khIS0sICBFGGhEILABYCBFsEZ2aIpFYEQtLAGxCwpDI0NlCi0sALEKC0MjQwstLACwKCNwsQEoPgGwKCNwsQIoRTqxAgAIDS0sIEWwAyVFYWSwUFFYRUQbISFZLSxJsA4jRC0sIEWwAENgRC0sAbAGQ7AHQ2UKLSwgabBAYbAAiyCxLMCKjLgQAGJgKwxkI2RhXFiwA2FZLSyKA0WKioewESuwKSNEsCl65BgtLEVlsCwjREWwKyNELSxLUlhFRBshIVktLEtRWEVEGyEhWS0sAbAFJRAjIIr1ALABYCPt7C0sAbAFJRAjIIr1ALABYSPt7C0sAbAGJRD1AO3sLSywAkOwAVJYISEhISEbRiNGYIqKRiMgRopgimG4%2F4BiIyAQI4qxDAyKcEVgILAAUFiwAWG4%2F7qLG7BGjFmwEGBoATpZLSwgRbADJUZSS7ATUVtYsAIlRiBoYbADJbADJT8jITgbIRFZLSwgRbADJUZQWLACJUYgaGGwAyWwAyU%2FIyE4GyERWS0sALAHQ7AGQwstLCEhDGQjZIu4QABiLSwhsIBRWAxkI2SLuCAAYhuyAEAvK1mwAmAtLCGwwFFYDGQjZIu4FVViG7IAgC8rWbACYC0sDGQjZIu4QABiYCMhLSxLU1iKsAQlSWQjRWmwQIthsIBisCBharAOI0QjELAO9hshI4oSESA5L1ktLEtTWCCwAyVJZGkgsAUmsAYlSWQjYbCAYrAgYWqwDiNEsAQmELAO9ooQsA4jRLAO9rAOI0SwDu0birAEJhESIDkjIDkvL1ktLEUjRWAjRWAjRWAjdmgYsIBiIC0ssEgrLSwgRbAAVFiwQEQgRbBAYUQbISFZLSxFsTAvRSNFYWCwAWBpRC0sS1FYsC8jcLAUI0IbISFZLSxLUVggsAMlRWlTWEQbISFZGyEhWS0sRbAUQ7AAYGOwAWBpRC0ssC9FRC0sRSMgRYpgRC0sRSNFYEQtLEsjUVi5ADP%2F4LE0IBuzMwA0AFlERC0ssBZDWLADJkWKWGRmsB9gG2SwIGBmIFgbIbBAWbABYVkjWGVZsCkjRCMQsCngGyEhISEhWS0ssAJDVFhLUyNLUVpYOBshIVkbISEhIVktLLAWQ1iwBCVFZLAgYGYgWBshsEBZsAFhI1gbZVmwKSNEsAUlsAglCCBYAhsDWbAEJRCwBSUgRrAEJSNCPLAEJbAHJQiwByUQsAYlIEawBCWwAWAjQjwgWAEbAFmwBCUQsAUlsCngsCkgRWVEsAclELAGJbAp4LAFJbAIJQggWAIbA1mwBSWwAyVDSLAEJbAHJQiwBiWwAyWwAWBDSBshWSEhISEhISEtLAKwBCUgIEawBCUjQrAFJQiwAyVFSCEhISEtLAKwAyUgsAQlCLACJUNIISEhLSxFIyBFGCCwAFAgWCNlI1kjaCCwQFBYIbBAWSNYZVmKYEQtLEtTI0tRWlggRYpgRBshIVktLEtUWCBFimBEGyEhWS0sS1MjS1FaWDgbISFZLSywACFLVFg4GyEhWS0ssAJDVFiwRisbISEhIVktLLACQ1RYsEcrGyEhIVktLLACQ1RYsEgrGyEhISFZLSywAkNUWLBJKxshISFZLSwgiggjS1OKS1FaWCM4GyEhWS0sALACJUmwAFNYILBAOBEbIVktLAFGI0ZgI0ZhIyAQIEaKYbj%2FgGKKsUBAinBFYGg6LSwgiiNJZIojU1g8GyFZLSxLUlh9G3pZLSywEgBLAUtUQi0ssQIAQrEjAYhRsUABiFNaWLkQAAAgiFRYsgIBAkNgQlmxJAGIUVi5IAAAQIhUWLICAgJDYEKxJAGIVFiyAiACQ2BCAEsBS1JYsgIIAkNgQlkbuUAAAICIVFiyAgQCQ2BCWblAAACAY7gBAIhUWLICCAJDYEJZuUAAAQBjuAIAiFRYsgIQAkNgQlmxJgGIUVi5QAACAGO4BACIVFiyAkACQ2BCWblAAAQAY7gIAIhUWLICgAJDYEJZWVlZWVmxAAJDVFhACgVACEAJQAwCDQIbsQECQ1RYsgVACLoBAAAJAQCzDAENARuxgAJDUliyBUAIuAGAsQlAG7IFQAi6AYAACQFAWblAAACAiFW5QAACAGO4BACIVVpYswwADQEbswwADQFZWVlCQkJCQi0sRRhoI0tRWCMgRSBksEBQWHxZaIpgWUQtLLAAFrACJbACJQGwASM%2BALACIz6xAQIGDLAKI2VCsAsjQgGwASM%2FALACIz%2BxAQIGDLAGI2VCsAcjQrABFgEtLLCAsAJDULABsAJDVFtYISMQsCAayRuKEO1ZLSywWSstLIoQ5S1ApQkhSCBVIAEeVR9IHlUfHgEPHj8erx4DT0YcH05NGx9NRhofJjQQVSUkSB8ZE%2F8fBwT%2FHwYD%2Fx9MSxwfS0YbHxMzElUFAQNVBDMDVR8DAQ8DPwOvAwPLSttK60oDy0kBSEYSH0dGEh9JRgEjSCJVHDMbVRYzFVURAQ9VEDMPVc8PAR8PAQ8P3w%2F%2FDwMGAgEAVQEzAFVvAH8ArwDvAAQQAAGAFgEFAbgBkLFUUysrS7gH%2F1JLsAlQW7ABiLAlU7ABiLBAUVqwBoiwAFVaW1ixAQGOWYWNjQBCHUuwMlNYsCAdWUuwZFNYsBAdsRYAQllzcysrXnN0dCsrKysrdCsrc3NzdCsrKysrKysrKysrKytzdCsrKxheBhQAFwBOBbYAFwB1BbYFzQAAAAAAAAAAAAAAAAAABFIAFACGAAD%2F7AAAAAD%2F7AAAAAD%2F7AAA%2FhT%2F7AAABbYAGfyU%2F%2B3%2Be%2F%2Fy%2Fqj%2BngAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAwAC4ALAAowCUAMAAzQDFAM8AugCaATEAsgAAAAAAAAAAAAAAAAA0AFoA2AFWAc4CTAJmApICwALyAyADQgNaA3wDmgPcBAQESgSmBO4FPAWYBb4GJgaGBr4G%2BAcgB0oHcgfOCFgImAjyCTIJagmiCdQKIgpUCmoKkgrMCuoLMgtuC7QL8gxKDJYM6A0MDUANcg3IDgQOMg5mDooOqA7KDvQPCg8qD4oP3hAYEGoQwBECEZwR2hISElwSnBK0EwwTRhOGE9oULhReFKwU8BUqFVoVshXsFiwWYBawFsgXGhdgF2AXkhfkGDwYmBjuGRQZjhnEGkAakhrOGvAa%2BBuCG5gb0BwMHEYclhy2HPwdMB1SHYgdsh3sHiYePB5SHmgeyB7aHuwe%2Fh8QHyIfNB%2BOH5ofrB%2B%2BH9Af4h%2F0IAYgGCAqIHwgjiCgILIgxCDWIOghGCGCIZQhpiG4Icoh3CImIpIioiKyIsIi0iLkIvYjhCOQI6AjsCPAI9Ij5CP2JAgkGiSGJJYkpiS2JMYk1iToJTAlmCWoJbolyiXcJewmRCZWJm4m0idYJ4YnwCf%2BKBQoKihKKGoojCi%2BKO4pIilCKWQpiCmmKeYqXAAAAAIAhf%2FjAa4FtgADAA8AKUATCgMEAwICERABAQ0CAw0HUVkNEwA%2FKwAYPxI5LxESATkRMzMRMzEwASMDIQE0NjMyFhUUBiMiJgFzrjQBFf7fTkhHTE1GR08BvAP6%2BsdKTVBHR1NQAAAAAgCFA6YC%2BAW2AAMABwAfQA0HBAADBAMJCAYCBwMDAD8zzTIREgE5OREzETMxMAEDIwMhAyMDAW0plikCcymWKQW2%2FfACEP3wAhAAAAIALwAABPoFtAAbAB8AikBKCB8cFQQUCREMDAkSDw4LBAoTExQWHR4HBAYXBAEAGQQYBQUGFAYKIQMaFwMYChggIQgEDAwcAQ0fABAQGRURDRENEQUXEwMKBRIAPzM%2FMxI5OS8vETMzMxEzMxEzMzMRMzMREgE5OREXMxESOTkRMxESFzkREhc5ETMREhc5MjIRMxESFzkxMAEDIRUhAyMTIwMjEyM1IRMhNSETMwMzEzMDMxUBMxMjA903AQ7%2B0VCyUPhQrkz6ARs5%2FvgBJVC0UPxQrlD8%2FQD6OfoDZv7kqP5eAaL%2BXgGiqAEcqAGm%2FloBpv5aqP7kARwAAAMAb%2F%2BJBCcGEgAgACYALQBnQDkMFBcdJSoGBAQFIQAnEQAFCBEZBS8uBQYWQA8SSBYXQB0NJAMqKgYXJQwGDE9ZAwYrHBQXFxxPWRcALysRADMRMxgvMysRADMREjkRFzMaGBDNKxDNERIBFzkRMxEzETMSFzkxMAEUBgcVIzUmJzUeARcRJy4BNTQ2NzUzFRYXByYnERceAQc0JicRNgEUFhcRDgEEJ9TIhfifVuZbVKSX17iFy7ZJnZtMvpLsUV%2Bw%2FidHXVBUAcWRvBbZ0wRI0yo5AQF2Hz%2BvgYqyE6ilB0u3Pgz%2BlB1JooQ6SyP%2BwRsC4zlMJQE3DEoAAAUAVP%2FsBpEFywAJABQAHgApAC0AV0AwLSorLBofFSUFCgAQChAfJSosBi8uHKAnAScnLQNgDQGvDQENDSwtAywSBxIEGCITAD8zPzM%2FPxI5L11xMxE5L10zERIBFzkRMxEzETMRMxEzETMxMAEUFjMyERAjIgYFFAYjIiY1ECEyFgEUFjMyERAjIgYFFAYjIiY1ECEyFgkBIwEBFzpChIRCOgHCpaGYpwE%2FnakB9jtCg4NCOwHCpp%2BYqAFAmqv%2B1%2FzVwgMrBACVkgEnASeSk%2Bbn794Bye382pWUASkBJZCV5ubt3wHJ7AMh%2BkoFtgAAAAMAYP%2FsBekFywALABQAMgBUQC4sKxIVJygGIQAbKxUbISgFNDMlDi0qBCwnAyQYAw8nHiwSHglLWR4EMAxMWTATAD8rABg%2FKwAYPxI5ERc5ERIXORESARc5ETMRMxEzETMRMzEwARQWFz4BNTQmIyIGEzI3AQ4BFRQWJTQ2Ny4BNTQ2MzIWFRQGBwE2NzMCBwEhJw4BIyIkAcNDPHFbV0hPXZW3gv6BalCL%2Fn2Ap19F2bexyoeeAVpRNvJGmgEt%2FtGVZueM5v76BHs%2FcD9Ab0VBTlH792sBeUR3TGJ7zYPDYG%2BZUpiwq5Fyul3%2BsmvP%2FuSz%2Ft2RUlPaAAAAAAEAhQOmAW0FtgADABS3AAMDBQQCAwMAP80REgE5ETMxMAEDIwMBbSmWKQW2%2FfACEAAAAAABAFL%2BvAJMBbYADQAfQA4DBAsDCgcACgAPDgsDAwA%2FLxESATk5ETMRFzMxMBMQEjczBgIVFBIXIyYCUpuSzYuUlInLk5oCMQEJAc6uvP4t9PT%2BNrmqAcYAAQA9%2FrwCNwW2AA0AH0AOAwoLAwQHAAQADw4ECgMAPy8REgE5OREzERczMTABEAIHIzYSNTQCJzMWEgI3m5LLipOUi82TmgIx%2Fvn%2BOqi7Acj09QHRva%2F%2BMQAAAAABAEoCagQUBhQADgAbQA8DBQQBBw0KCQsJDxAIDgAAP8QREgEXOTEwAQMlFwUTBwsBJxMlNwUDAqApAYEc%2Fpjsx6aVzef%2BmiMBeCkGFP6CbNkd%2FslrAVL%2BrmsBNx3ZbAF%2BAAAAAQBgAOMEMQTDAAsALEAWBgMKCgsLAQgDDQwJAQIBUlkGLwIBAgAvXTMrEQAzERIBFzkRMxI5OTEwASE1IREzESEVIREjAe7%2BcgGOtAGP%2FnG0AnmyAZj%2BaLL%2BagABAD%2F%2B%2BAGcAO4ABgAeQA8ABQMFCAcDQAZQBtAGAwYAL13NERIBOTkRMzEwJQYDIxI3MwGcMICtRSLn17r%2B2wEO6AAAAAEASAHBAkoCiQADABVACQMABQQBAE1ZAQAvKxESATk5MTATNSEVSAICAcHIyAAAAAEAhf%2FjAa4BFAALABhACwYAAA0MCQNRWQkTAD8rERIBOREzMTA3NDYzMhYVFAYjIiaFTEhJTE1ISEx9SU5RRkdTUgAAAQAQAAADDgW2AAMAHEAMAwABAgIABQQDAwISAD8%2FERIBOTkRMxEzMTAJASMBAw794N4CIQW2%2BkoFtgAAAgBY%2F%2BwEOQXNAAsAFwAoQBQSAAwGBgAZGAkVTVkJBwMPTVkDGQA%2FKwAYPysREgE5OREzETMxMAEQAiMiAhEQEjMyEgEQEjMyEhEQAiMiAgQ59fz0%2FPX79fz9DXuHh319h4d7Atv%2Bg%2F6OAX4BcQGDAW%2F%2BgP6O%2FtX%2FAAEEAScBJgEH%2Fv4AAQCaAAADDAW2AAoAIUAQAAQICQQBAQwLBAcBCQYBGAA%2FPxI5ORESATkRFzMxMCEjETQ3DgEHJwEzAwzrCBdDv3YBrsQDsKljGDqblQFSAAABAFoAAAQ5BcsAGwAxQBoHFBoCAg4UGwQdHBEKTVkRBwIaAQEaTlkBGAA%2FKxESADkYPysREgEXOREzETMxMCkBNQE%2BAjU0JiMiBgcnPgEzMhYVFA4BDwEVIQQ5%2FCEBeadtMndpVJ1nf3rmgsz2R5Or%2FgK2sgF7q49%2BSGNyPlGbZ1bVtGOyvaH2CgAAAAEAVv%2FsBC0FywAmAENAJBMHGwAABAcNFyIGKCcDFxgYF09ZGBgKJCQeTVkkBwoQTVkKGQA%2FKwAYPysREgA5GC8rERIAORESARc5ETMRMzEwARQGBxUeARUUBCEiJzUeATMyNjU0JisBNTMgNTQmIyIGByc2ITIWBAKik7Cw%2Ftb%2B7fOnXdBgqqi6x3%2BBAV56d1OaaXPJAQrd%2BARmi7kgCBavkdPlT9EuMn6EdW6%2F8l5mL0SklL4AAAACACcAAARtBboACgASAEhAJwkBAQ4LBwQSBQUEAAMUEwEFEgVNWQkGUBIBDxIfEgISEgMPBwYDGAA%2FPzMSOS9dXTMzKxEAMxESARc5ETMRMzMzMxEzMTABIxEjESE1ATMRMyERNDcjBgcBBG3F5f1kApzlxf5WCggcPP6VAT%2F%2BwQE%2FtQPG%2FEgBb8R9Ql798AABAHX%2F7AQpBbYAHAA6QB8PAxoVAwgVGAQeHQARTVkAAAYWFhlOWRYGBgxNWQYZAD8rABg%2FKxESADkYLysREgEXOREzETMxMAEyBBUUACEiJzUeATMyNjUQISIGBycTIRUhAz4BAkrdAQL%2B2%2F7y9YxR0lqfpv6yL4o0aTgC%2BP3XISNlA5Hqyur%2B%2BU%2FVLjKOiQEGEww%2BAsrR%2FpYGEAACAF7%2F7AQ%2FBckAFwAkAERAIxsRIgoKAAAFEQMmJQoUDg4eT1kODhQCAgdPWQIHFBhNWRQZAD8rABg%2FKxESADkYLysREgA5ERIBFzkRMxEzETMxMBMQITIXFSYjIgYDMz4BMzIWFRQAIyImAgUyNjU0JiMiDgEVFBZeArtuTExk6%2BwKDC%2Bqc8fe%2Fv%2Feneh9Af55g3t7TIBKmQJvA1oRxBb8%2FupRWfTR5v71lwEh9pyRfpBBcTuNwQAAAQBKAAAEPQW0AAYAJUASBgABBQACBQMIBwAYAwJOWQMGAD8rABg%2FERIBFzkRMxEzMTAhASE1IRUBAQACQv0IA%2FP9wQTlz6T68AAAAAMAWP%2FsBDkFyQAWACMAMAA3QB0DCA4UKyEGMjEFESEhKysLAAAkT1kABwsaT1kLGQA%2FKwAYPysREgA5GC8zEjk5ERIBFzkxMAEyFhUUBR4BFRQEIyIkNTQ2Ny4BNTQ2AxQWMzI2NTQmLwEOAQEiBhUUHgEXPgE1NCYCSNDy%2FvKskf724%2B7%2B%2BomchnL6RpJ9gY%2BEhh2EdAENZHosVGR4Y3sFyb%2Bg4YVWvnW12sy7esNMULJvn737smhzd2ZRhjkNOosDP2NVNFJDLzV1TlVjAAACAFb%2F7AQ3BckAGAAlAERAIyIMDAAcEgAGEgMnJgwPFQ8fT1kPDwMVFRlNWRUHAwhPWQMZAD8rABg%2FKxESADkYLysREgA5ERIBFzkRMxEzETMxMAEQACEiJzUWMzISEyMOASMiJjU0ADMyFhIlIgYVFBYzMjY1NC4BBDf%2BpP6ihTpZWu7qCww7p3DC3gEB3pzofv4CeoJ5e3eiRXwDRv5Q%2FlYQxRkBAAESWlDy0%2BUBD5j%2B3%2FafkH2Pjl9Zm1oAAAACAIX%2F4wGuBGoACwAWAChAFBEMBgYAABgXDhRRWQ4QCQNRWQkTAD8rABg%2FKxESATkRMxI5OTEwNzQ2MzIWFRQGIyImETQzMhYVFAYjIiaFTEhJTE1ISEyUS0pNSEhMfUlOUUZHU1IDnpdQR0dTUgAAAgA%2F%2FvgBrARqAAYAEQAyQBsMBwEGBgQHAxMSBAAGEAaQBgMNAwYJD1FZCRAAPysAGC9fXl3GERIBFzkRMxEzMTAlFwYDIxI3AzQzMhYVFAYjIiYBjQ8wgK1FIiOUS0pNSEhM7he6%2FtsBDugC5ZdQR0dTUgABAGAA3QQxBOwABgAmQBYFAQABBAMIBwAPAwE%2FA28DjwPvAwQDAC9dccYREgEXOREzMTAlATUBFQkBBDH8LwPR%2FSMC3d0BrnkB6MP%2BqP7RAAIAZgGwBCkD8gADAAcALUAbBAcAAwQJCAQFUlkEAQEAUlkPAS8BTwFvAQQBAC9dKwAYEMYrERIBFzkxMBM1IRUBNSEVZgPD%2FD0DwwM%2Fs7P%2BcbKyAAEAYADdBDEE7AAGACZAFgEFAgUGAwgHBg8DAT8DbwOPA%2B8DBAMAL11xxhESARc5ETMxMBMJATUBFQFgAt39IwPR%2FC8BogEvAVjD%2Fhh5%2FlIAAgAQ%2F%2BMDbQXLABsAJgBBQCEhHBsABxMADhMcBCgnBBcXEAAAJBAQCktZEAQkHlFZJBMAPysAGD8rERIAORgvEjkRMxESARc5ETMRMxEzMTABNTQ2Nz4BNTQmIyIGByc2MzIWFRQOAQcOAR0BAzQzMhYVFAYjIiYBG1Bkd0VwaV%2BiTVTL6MTmLFltXT%2Ftk0hMTUdHTAG8QG6STl5oSFRaNiawccCpS3VqVUlgUS3%2BwZdPSEdTUQAAAAIAb%2F9WBr4FvgA1AD8ATEAmGwA7FDoHFjYOIy4ADhQWKC4GQUAICz0RETIYODgECwsrHzIDJisALzM%2FMxI5LzMzETMROS8zEjkREgEXOREzETMRMzMRMxEzMTABFA4BIyImJyMOASMiJjU0EjMyFhcDFRQzMjY1NAIkIyIEAhUQACEyNxUGIyAAERASJDMyBBIBFDMyEzcmIyIGBr5ao2tPdBQMMZBao7v40Uy5SBZoT12M%2Fv6n1f7FpgE2ASLd8NL3%2Fo7%2BYuABjfvZAVO7%2B%2Fy3wRIMP0iAjwLjj%2B2EVEhOTtKzzgEBGxj%2BLxigzJ6rAQOMsP652P7e%2FshapFYBjwFlAQUBl9i0%2FrP%2Bp%2BkBJe8RqgAAAAIAAAAABUoFvAAHAA8AN0AeBgUMAAcDBAECBAcIDA8HERAPAkxZDw8FAAQSDAUDAD8zPzMSOS8rERIBFzkRMxEzETMzMTAhAyEDIwEhCQEDLgEnBgcDBEyS%2FdGP%2FAIjAQQCI%2F4xiQ81Chs0hAGW%2FmoFvPpEAmQBjiisKHuS%2FoMAAwDBAAAE2QW2AA8AGAAhAElAJhQEHgsQGhoPBAgLDwQjIggZEBAZS1kQEA8AABhMWQADDxpMWQ8SAD8rABg%2FKxESADkYLysREgA5ERIBFzkRMxEzETMRMzEwEyEgBBUUBgcVHgEVFAQjIRMzMjY1NCYrARkBMzI2NTQmI8EBsgEuAQ2EfJqR%2Fu31%2FfDv5paKlaLP%2FpaZnJ8FtrC%2BgKoWCh2rksXfA1pfcmdc%2Far%2BMXN8cm4AAQB5%2F%2BwEzwXLABgAJkAUAw8JDxUDGhkTAExZEwQMBkxZDBMAPysAGD8rERIBFzkRMzEwASICERASMzI2NxUGIyAAETQSJDMyFwcuAQMvzuzj112uXqza%2Fr%2F%2BqKcBPNXgvlZKpQT%2B%2Ftz%2B%2F%2F7z%2FuwlHc1BAYUBauQBVrZexyM1AAACAMEAAAVmBbYACAAPAChAFA0ECQAEABARBQxMWQUDBA1MWQQSAD8rABg%2FKxESATk5ETMRMzEwARAAKQERISAAAxAhIxEzIAVm%2Fm7%2Bhv5nAcQBXQGE%2FP4Vz6oCEALp%2Fpb%2BgQW2%2Foj%2BowIN%2B9sAAAAAAQDBAAAD%2FAW2AAsAPUAgBAAGCgoBAAEIAw0MBglMWQYGAQICBUxZAgMBCkxZARIAPysAGD8rERIAORgvKxESARc5ETMRMxEzMTApAREhFSERIRUhESED%2FPzFAzv9tAIn%2FdkCTAW2yv5yyP41AAAAAAEAwQAAA%2FoFtgAJADhAHgYAAAEEBwEDCgsGCUxZDwYBCwMGBgIBEgIFTFkCAwA%2FKwAYPxI5L19eXSsREgEXOREzETMxMCEjESEVIREhFSEBru0DOf20Aif92QW2yv43ywAAAAABAHn%2F7AUxBcsAGgA6QB8YAhMIAggaDQQcGwAaTFkAAAULCxBMWQsEBRZMWQUTAD8rABg%2FKxESADkYLysREgEXOREzETMxMAEhEQ4BIyAAERAAITIXByYjIgAVEBIzMjcRIQMXAhqE843%2BtP6YAZYBZOXNVLKy6v7w9eZ0hP7RAxn9IiskAYkBZgFhAY9Yx1L%2B2v%2F%2B9P7pHQF5AAABAMEAAAVCBbYACwAzQBkIBAQFCQEBAAUADA0IA0xZCAgFCgYDAQUSAD8zPzMSOS8rERIBOTkRMxEzETMRMzEwISMRIREjETMRIREzBULw%2FV7v7wKi8AKT%2FW0Ftv2qAlYAAAAAAQDBAAABsAW2AAMAEbYABQQBAwASAD8%2FERIBOTEwMxEzEcHvBbb6SgAAAAAB%2F2T%2BaAGqBbYADAAfQA4KAwcHDg0IAwAFTFkAIwA%2FKwAYPxESATkRMzMxMBMiJzUWMzI1ETMRFAYIYkJUPsTw1f5oGckV%2BAWJ%2Bn%2Fg7QAAAAEAwQAABR0FtgAOADVAHAsMAQAIBAQFAAIFDA4FEA8CDgMIBAULBgMBBRIAPzM%2FMxIXORESARc5ETMRMxEzETMxMCkBAQcRIxEzETY3ASEABwUd%2Fuv%2BNY3v72JhAYsBEP6BpgKWc%2F3dBbb9RnhvAdP%2BPr8AAQDBAAAEGwW2AAUAH0AOAwAFAAcGAQMAA0xZABIAPysAGD8REgE5OREzMTAzETMRIRXB7wJrBbb7F80AAQDBAAAGogW2ABQAPkAfEgsODg0UAAkCCAUFBgYJDQMWFQISCQMGCwcDAA4GEgA%2FMzM%2FMxIXORESARc5ETMRMzMRMzMRMxEzMzEwIQEjEhURIxEhATMBIREjETQSNyMBAzn%2BWAgR2QFRAZYGAaIBUuYLBAj%2BSQTF%2FvDu%2FTkFtvt1BIv6SgLTbQFeJfs9AAAAAQDBAAAFgwW2ABEAMkAXDAEQEAADCgcHCAgAExIDDAgQCQMBCBIAPzM%2FMxI5ORESATk5ETMRMzMRMxEzMzEwKQEBIxcWFREjESEBMyYCNREzBYP%2B2%2F0xCAUO2QEiAs0GAgzbBI1Bupr9CAW2%2B3kXASFRAv4AAAAAAgB5%2F%2BwF0wXNAAsAFwAoQBQMBhIABgAYGQkVTFkJBAMPTFkDEwA%2FKwAYPysREgE5OREzETMxMAEQACEgABEQACEgAAEQEjMyEhEQAiMiAgXT%2Fpv%2Buf61%2Fp0BZQFLAUYBZPuk2tbV2dfV19sC3f6b%2FnQBiQFqAWoBhP52%2Fpr%2B8v7pARQBEQENARb%2B6gACAMEAAASJBbYACgATADJAGQ8ACwUFBgYAFRQLBExZCwsHBhIHE0xZBwMAPysAGD8SOS8rERIBOTkRMxEzETMxMAEUBCEjESMRISAEATMyNjU0JisBBIn%2B1P7rmO8BpQESARH9J3%2B4rJqjpgP85fT93QW24P4WgIh%2BfAAAAgB5%2FqQF0wXNAA8AGwA7QB8FBAMGFgAQCgAEBgoEHRwNGUxZDQQFBwMHBxNMWQcTAD8rEQAzGBDGPysREgEXOREzETMRMxEzMTABEAIHASEBIyAAERAAISAAARASMzISERACIyICBdPLwgFe%2Fr7%2B7Cf%2Btf6dAWUBSwFGAWT7pNrW1dnX1dfbAt3%2B9v6USv6HAUgBiQFqAWoBhP52%2Fpr%2B8v7pARQBEQENARb%2B6gAAAAACAMEAAAUKBbYACAAVAERAIxIVBBAUEwAKCgsLEBMVBBcWEgkACUtZAAAMFAsSDAhMWQwDAD8rABg%2FMxI5LysRADMREgEXOREzETMRMxEzETMxMAEzMjY1NCYrARkBIxEhIAQVEAUBIQEBsKanlqKjnu8BnQEbARD%2B5AGd%2FvD%2BogMOfHp8bP1c%2FbgFttTW%2Fu90%2FXkCSAAAAAEAZP%2FsBAwFywAkADRAGwwAHRIFEhcABCYlDB0DFRUaTFkVBAMJTFkDEwA%2FKwAYPysREgA5ORESARc5ETMRMzEwARQEIyInNR4BMzI2NTQmJy4BNTQkMzIXByYjIgYVFB4BFx4CBAz%2B5vj4nmThYY6HfMLIpAEE29LQTMOZdHgwbo%2BhlkYBjcPeTeIvNmxbUnJOUdCSt9Jcw1JlUzlRSDtDdJIAAQAdAAAEaAW2AAcAJUASAAEBAwYDCQgBEgcDBANMWQQDAD8rEQAzGD8REgEXOREzMTAhIxEhNSEVIQK67%2F5SBEv%2BUgTpzc0AAQC0%2F%2BwFOwW2ABEAJUAREAELCAgBExIRCQMFDkxZBRMAPysAGD8zERIBOTkRMxEzMTABERQGBCMgADURMxEUFjMgGQEFO4v%2B%2Bbf%2B8P7S8KiuAVIFtvxOovODASD8A678Y7WsAWMDmwABAAAAAAT6BbYADAAqQBQDAgkAAQUEAQQJAw4NCQMABAMDEgA%2FPzMSORESARc5ETMRMxEzMzEwATMBIwEzAR4BFz4BNwQC%2BP4A%2FP4C9gExGDYIDTYRBbb6SgW2%2FHNBzTJMyDAAAQAMAAAHgwW2ABwAQEAhAQAYCgkQFRQFGxwNDAUMEBgcBR4dEAUYAwobFAwDAQoSAD8zPzMzEhc5ERIBFzkRMxEzETMzETMzETMzMTApAQMuAScOAQcDIQsBMxMWFz4BNxMzExYXNjcTMwYG%2Fvz4EDAFCi0P8v78vcD00TEVCywS7u30IycPOdDyA2g51ypAzDL8nALcAtr8rM2dVdJBA1b8pnftj90DUgAAAAEABAAABPYFtgALADVAHAEACQoHBgMEBAACBQYICgsIDQwCCAQJBgMBBBIAPzM%2FMxI5ORESARc5ETMRMxEzETMxMCkBCQEhCQEhCQEhAQT2%2Fu3%2Bkv6P%2FwAB5f46AQoBUgFSAQL%2BNwJW%2FaoC9gLA%2FdcCKf08AAAAAAEAAAAABLwFtgAIACxAFQECCAcABAQFAgUHAwoJAAUBBwMFEgA%2FPzMSORESARc5ETMSOREzETMxMAkBIQERIxEBIQJeAVoBBP4Z8P4bAQQDGwKb%2FIH9yQIvA4cAAQBCAAAEWAW2AAkAOEAdAwcIAgACBAcECwoHBAUFBExZBQMCCAEBCExZARIAPysREgA5GD8rERIAORESARc5ETMRMzEwKQE1ASE1IRUBIQRY%2B%2BoC4f0zA%2B79HAL4pgRDzaj7vwAAAAABAJr%2BvAJxBbYABwAfQA0EAAYBAQAJCAYBBQIDAD8zLzMREgE5OREzETMxMAEhESEVIREhAnH%2BKQHX%2FwABAP68Bvqw%2BmcAAAABABAAAAMOBbYAAwAcQAwCAQADAwEFBAMDAhIAPz8REgE5OREzETMxMBMBIwHuAiDd%2Fd8FtvpKBbYAAAABADP%2BvAIIBbYABwAfQA0DAAEGBgAJCAAHAwQDAD8zLzMREgE5OREzETMxMBchESE1IREhMwEA%2FwAB1f4rkwWZsPkGAAEAHQIXBC8FvgAGACdAEgIBBQQDBgAAAwUDCAcFAAQCAwA%2FzTI5ERIBFzkRMxEzETMzMTATATMBIwkBHQG0eQHlwv6j%2Fs0CFwOn%2FFkCtv1KAAAAAAH%2F%2FP7BA3P%2FSAADABG1AwUCBAECAC8zEQEzETMxMAEhNSEDc%2FyJA3f%2BwYcAAQFqBNkDUAYhAAkAE7YIAwsKBYAAAC8azRESATk5MTABLgEnNSEeARcVArJF0zABESaDLATZNMU6FUa2MxkAAAIAWv%2FsBAQEZgAbACYASUAmDAEfHxskCAgUGwMoJwIFFwwgSlkMDAUXABUXEEhZFxAFHEhZBRYAPysAGD8rABg%2FERI5LysREgA5ERIBFzkRMxEzETMzMTAhJyMOASMiJjU0NiU3NTQmIyIGByc%2BATMyFhURJTI2PQEHDgEVFBYDXC8IUKJ%2Fo7f%2BAQS%2FY2hVnEhMWtZf09f9%2BoCbjqaXWJplSbChq64IBjtqaTIiqC8xuMX9F6CPgWAGBmNmSlEAAAIAqP%2FsBJMGFAATAB8AQEAhCRgRAw0eAw0LCwMhIAgRBgAMAAsVABRGWQAQBhtGWQYWAD8rABg%2FKwAYPz8REjk5ERIBOTkRMxEzERczMTABMhIREAIjIicjByMRMxEUBgczNhciBgcVFBYzMjY1EALdz%2Bfq0NJ0ECuw6wgCCnCdjn0CgJF9gQRm%2FtT%2B8f7w%2FtGXgwYU%2Fo4pohalwKfEEMq1xrsBeQAAAAEAZv%2FsA7QEZgAVACZAFA0DAwgSAxcWBgtGWQYQABBGWQAWAD8rABg%2FKxESARc5ETMxMAUiABEQACEyFwcmIyARFBYzMjcVDgECZvv%2B%2BwERAQKvjEeVYf7hj4qdjD%2BPFAElARIBFwEsQb06%2FoO6u07NJSAAAgBm%2F%2BwEVAYUABIAHwBAQCEQFwkDDAwOHQMOAyEgCREABgwADxUGGkZZBhAAE0ZZABYAPysAGD8rABg%2FPxESOTkREgE5OREzETMRFzMxMAUiAhEQEjMyFzMmNREzESMnIwYnMjY3NTQmIyIGFRQWAh3P6OvQ2nIMEey4KQtxm5GEAoiRfIaCFAEsAQ8BEAEvoXdFAZP57JGlvqO3IdGwybq4wQACAGb%2F7AQ5BGYAFAAbAEdAJxkKGAsLAwMKEQMdHBgLSFkMGBwYAhADGBgABgYVSFkGEAAOR1kAFgA%2FKwAYPysREgA5GC9fXl0rERIBFzkRMxEzETMxMAUgABEQADMyEh0BIR4BMzI2NxUOAQMiBgchLgECi%2F7%2B%2Ft0BDuzb%2Fv0fBaSVYqlhVrCccIcNAfYCgBQBLQEIAQ8BNv726X%2BhrSUrvykiA8iOiImNAAAAAQAjAAADQgYfABUAO0AeDRQUBwICAwADBQMXFgMVCxBGWQsABQEUAUhZBxQPAD8zKxEAMxg%2FKwAYPxESARc5ETMSOTkRMzEwASERIxEjNTc1NDYzMhcHJiMiBh0BIQLT%2FvLstra4vXx4PldPUEkBDgOg%2FGADoG5ISMS9KbIcY2NIAAAAAwAX%2FhQETgRmACsAOABDAHJAPSsCJT4FOSUMHzITLBkABRMZHyUGRUQiCAg8SlkICBYoHDYPDzZGWQ8PFigoQUpZKBArAklZKw8WL0lZFhsAPysAGD8rABg%2FKxESADkYLysREgA5ERI5GC8rEQAzERIBFzkRMxEzETMRMxEzEjk5MTABFQceARUUBiMiJwYVFBY7ATIWFRQEISImNTQ2Ny4BNTQ2Ny4BNTQ2MzIWFwEUFjMyNjU0JisBIgYTFBYzMjU0JiMiBgROvRoi7M81K0xHX8G3vv7K%2Ftvi7oF0Lz1GRVZr49IvZxr%2BGol8wLxnjLJld2VrZMxlZ2ZpBFKBIyNmOavECC8%2FJiack7zMoJRmixsUWTE%2BViolp3C0xg0H%2BwJMUm5bSD1fA0docNpsdXQAAAABAKgAAAR1BhQAFQAzQBkBAA8NCQkKAAoXFg8KExMFRlkTEAsAAQoVAD8zPz8rERIAORESATk5ETMRMzMRMzEwISMRNCYjIgYVESMRMxEUBzM%2BATMgEQR17GdwlIvr6wwPMKtyAZICqIB%2BsdD92wYU%2FnVfbFBY%2FmsAAAAAAgCaAAABogX6AAMADwA2QCIKAAQAAQEREA0fBy8HAl8Hbwd%2FB58HrwffB%2B8HBwcCDwEVAD8%2FL11xzRESATkRMzMRMzEwISMRMwM0NjMyFhUUBiMiJgGT6%2Bv5RUA%2BRUU%2BQEUEUgElP0REPzxFRQAAAAL%2Fh%2F4UAaIF%2BgAMABgAQ0AqEwoKDQMDBwcaGRZADxAfEC8QTxBfEI8QnxDPEN8QCQ4DEAgPAAVGWQAbAD8rABg%2FL19eXRrNERIBOREXMxEzMTATIic1FjMyNREzERQGAzQ2MzIWFRQGIyImN2pGREeW67NGRUA%2BRUU%2BQEX%2BFBm6EqoE0%2Fsdq7AHYz9ERD88RUUAAAABAKgAAASJBhQADgA6QB8CAwYFDgwJCQoDBAUHCgUQDw4IBwQECgILAAIPBgoVAD8zPz8REhc5ERIBFzkRMxEzMxEzETMxMAE3ASEJASEBBxEjETMRBwGLhQFOAQ%2F%2BQwHZ%2Fuz%2BnYHp6QwCSKYBZP4l%2FYkB5Wr%2BhQYU%2FQnVAAAAAAEAqAAAAZMGFAADABZACQABAQUEAgABFQA%2FPxESATkRMzEwISMRMwGT6%2BsGFAAAAAEAqAAABwYEZgAjAEZAIxwbEwAAAQ0JCQoBChsDJSQUDQoRCw8cAQoVIAURBUZZFxEQAD8zKxEAMxg%2FMzM%2FERI5ORESARc5ETMRMxEzEjkRMzEwISMRNCYjIgYVESMRMxczPgEzIBczPgEzMhYVESMRNCYjIgYVBEzsYGaIf%2Bu4IQwur2kA%2F1MQMbJzxrXrYWaJfwKqf32xzv3ZBFKRT1auUlzIzf0vAqp%2FfauxAAAAAQCoAAAEdQRmABMAMUAYDQkJCgEACgAUFQ0KEREFRlkREAsPAQoVAD8zPz8rERIAORESATk5ETMRMxEzMTAhIxE0JiMiBhURIxEzFzM%2BATMgEQR17GdwlYrruCEMMrhwAY4CqIB%2BsM%2F92QRSkU9W%2FmsAAAACAGb%2F7AR9BGYADAAVAChAFA0HEQAHABYXChNGWQoQAw9GWQMWAD8rABg%2FKxESATk5ETMRMzEwARAAIyImAjUQADMyAAEQISARECEiBgR9%2Fur4m%2B6AART78AEY%2FNsBGwEY%2FuaUhQIr%2FvH%2B0IwBBq0BDQEu%2Fsv%2B%2Bv6BAX8Be8QAAAIAqP4UBJMEZgATACAAP0AgGAsDBgYHHhEHESEiAwsADg4URlkOEAgPBxsAG0ZZABYAPysAGD8%2FPysREgA5ORESATk5ETMRMxEzMzMxMAUiJyMWFREjETMWFzM2MzISERACASIGHQEUFjMyNjU0JgLZ0nQODuu%2BCBkMbtzP5%2Bv%2B%2BIyBgJF6hIMUl4we%2FjsGPh91qP7U%2FvH%2B8f7QA7qktCPKtci5ur8AAAIAZv4UBFQEZgALACAAQEAgHhYDGhoZCg8ZDyIhGhsXDx8WDBISB0ZZEhAMAEZZDBYAPysAGD8rERIAOTkYPz8REgE5OREzETMRMzMzMTAlMjY9ATQmIyIGFRAXIgIREBIzMhYXMzczESMRNDY3IwYCXpSBhZR%2BhMPN6OzPaKVBCBrD7AgDDWioq60lzbTIu%2F6FvAEtAQ4BDgExTViR%2BcIB1SxiGqUAAAEAqAAAA04EZgAQACNAEA0JCQoCChIRCw8NChUFABAAPzI%2FOT8REgE5OREzETMxMAEyFwcmIyIGFREjETMXMz4BAtlHLhcyNo2v67gfDDexBGYK2wy4k%2F2%2BBFLDY3QAAAEAYv%2FsA48EZgAhADRAGwoAGxEABhEWBCMiChsDFBQZR1kUEAMISFkDFgA%2FKwAYPysREgA5ORESARc5ETMRMzEwARQGIyInNRYzMjU0LgEnLgE1NDYzMhcHJiMiFRQWFx4CA4%2Fs3N2Gw6jZMG5iv4flxcOuTLN6umGjiXw8ATuirUPLWoMqODwmSpR2jp1PsUpqNEg%2FNVhzAAAAAAEAJ%2F%2FsAvAFSAAVAD1AHw8MExMIAggKEQQXFg0PQAkSDA8PEkhZDw8GAEZZBhYAPysAGD8rEQAzETMaGBDNERIBFzkRMxI5OTEwJTI3FQ4BIyAZASM1PwEzFSEVIREUFgJEVlYne0L%2BspeiUJEBO%2F7FVaobsREXAWACVGhW6vay%2FbBVUQAAAAABAJ7%2F7ARtBFIAFAAwQBcBEREUCwgUCBYVAgUSCQ8AFQUORlkFFgA%2FKwAYPz8zEjkREgE5OREzETMRMzEwIScjDgEjIiY1ETMRFBYzMjY1ETMRA7QhDDG1dMnG7WhvlIvskU1YyMsC0%2F1Wf3%2Bx0AIn%2B64AAAEAAAAABEgEUgALAChAEwkKAgELAAUBCgUDDQwJAQ8FABUAPzI%2FMxESARc5ETMzETMRMzEwIQEzExYXMzY3EzMBAaT%2BXPjhOgwICT3h%2Bv5aBFL9faJkSL4Cg%2FuuAAAAAAEAFAAABnMEUgAdAD5AIR0AFxMSBAgHDhscCgkECQ4XHAUfHgANFwMIFQkbBAMSDwA%2FFzM%2FFzMREgEXOREzETMRMzMRMzMRMzMxMCEDJgMjAgcDIQEzExYXMz4BNxMhEx4BFzM2NxMzAQQzjxpECToik%2F78%2FsrwjTAUBgopD6gBAqMPLQQIDzeP7P7IAgRSASv%2B8nH9%2FgRS%2Fd%2FKkEm9LwJG%2Fboxyjh73QIh%2B64AAAAAAQAZAAAETgRSAAsAM0AaCAcEBQIBCgsAAQUGBwsGDQwJAwsEAQ8ICxUAPzM%2FMxI5ORESARc5ETMRMxEzETMxMAkBIRsBIQkBIQkBIQGe%2Fo0BDPz%2BAQr%2BjAGH%2Fvb%2B7%2F7w%2FvYCNQId%2Fn0Bg%2F3j%2FcsBnv5iAAABAAD%2BFARKBFIAFAAzQBoUCgQICQEAAAQJDwQWFQQUFQgADwwRRlkMGwA%2FKwAYPzM%2FMxESARc5ETMRMxEzMzEwESETFhczPgETMwECISInNRYzMj8BAQDhMxEICTDm%2Fv4ngf7TTko1RKpFKQRS%2FY2GdjedApv7G%2F6nEboMxWgAAAEARAAAA4sEUgAJADhAHQMHCAICBAcJBAsKBwQFBQRIWQUPAggBAQhIWQEVAD8rERIAORg%2FKxESADkREgEXOREzETMxMCkBNQEhNSEVASEDi%2Fy5Ai%2F98wMV%2Fd0CM5EDDbSk%2FQYAAAAAAQAt%2FrwC6QW2ABwARUAnCxgSAg4HFRUcAhgcAx4dEQICDwN%2FA48DrwO%2FA88DBgMDChgZCwoDAD8zLzMSOS9dMxI5ERIBFzkRMxI5ORE5ETMxMAE0ITUyNjURNDYzFQ4BFREUBxUWFREUFhcVLgE1ATf%2B9oeD2dlyZ%2BXlZnPnywEfur9bXQE3nJO2BVNS%2FtfHJwwkyf7VUlQCtwKZqwAAAAEB2f4fAo0GEAADABS3AgMDBQQDAAAAPy8REgE5ETMxMAEzESMB2bS0BhD4DwAAAAEALf68AssFtgAeAEVAJwsbEgQXDgcHAAAEGwMgHwwbGw8afxqPGq8avxrPGgYaGhMEAxITAwA%2FMy8zEjkvXTMSORESARc5ETMSOTkRMxE5MTAFFAYHNT4BNRE0Njc1JjURNCYnNTIWFREUFjMVIgYVAc%2FH219qanvlW27fw399e4EUnJICtwFLXAEGeYQVDCfHASlSUwW2ma7%2B4WRUv1VlAAAAAQBgAjsEMQNoABUAQEAkDwMXFg4GAxERC1JZABEQEQIJAxEGQAYAUlkPBh8GPwZvBgQGAC9dKwAaGBDNX15dKwAQGMQQxhESATk5MTABIgYHNTYzMhYXFjMyNjcVBiMiJicmAUoyez1jl0J2WINZNH06aZFBfVR%2FArQ8Pb9sGiU3Pjq%2Bbx8jNwAAAAACAIX%2BjQGuBF4AAwAPAChAEgQCCgIDAxEQAAANAw0HUVkNEAA%2FKwAYLxI5LxESATkRMzMRMzEwEzMTIQEUBiMiJjU0NjMyFsGuM%2F7rASFLSkhMTEhITQKF%2FAgFOEpOT0lFVFEAAQCm%2F%2BwD9gXLABwASkApDgILAgUWCAUIEBwEHh0FAgIZTVkAAhACAhADAgQZDhNNWQuQDgEODAcAP81dMisAGD%2FFX15dKxEAMxESARc5ETMRMzMRMzEwJQYHFSM1JgI1NBI3NTMVFhcHJiMiBhUUFjMyNjcD23eLnM%2FIyc6emINGkmiSjJCKS4dX7jsFwsgfARj6%2FgEeIKqiBT28O77BwrIeJQABAEgAAARWBckAHQBVQC4aCAsLFw8TAgkQExcYBh8eCxgZGE9ZCA8ZAQsDGRkSAAAFTVkABxMPEg9OWRIYAD8rEQAzGD8rERIAORgvX15dMysRADMREgEXOREzETMSOTkxMAEyFwcmIyIdASEVIRUUBgchFSE1PgE9ASM1MxE0NgKywrVMonrNAY3%2Bc0JQAvT78mJevLzjBclStkfb9Ky2W4Atz8MehHC4rAEAvNQAAAIAdQECBBsEpAAbACcAOkAlIg4cAAACBQkMDhATFxoKKSgJDBATFxoCBQgfFSUPBx8HbwcDBwAvXTPEMhc5ERIBFzkRMxEzMTATNDcnNxc2MzIXNxcHFhUUBxcHJwYjIicHJzcmNxQWMzI2NTQmIyIGukCFeYNkc3NihXmDPz%2BBd4Vjcn5Zg3eDQKiIXmGIiGFdiQLTbWiFd4E%2FQYN1hWRzd2KBd4E9PX93gWN0YoWFYmGIiAAAAAABABIAAAR9BbYAFgBbQDMABxADCwsMAgUJDA4SFQcYFwYSExJQWQADDxMfEwIJAxMTDBUKDg8OUFkHDw8MARUGDBgAPz8zEjkvMysRADMREjkYL19eXTMzKxEAMxESARc5ETMSFzkxMAkBMwEzFSEVIRUhFSM1ITUhNSE1MwEzAkgBQfT%2BceP%2B5wEZ%2Fufh%2FuUBG%2F7l4P529gMdApn9CJeamfT0mZqXAvgAAAAAAgHZ%2Fh8CjQYQAAMABwAkQBADAgUFBAQJCAMEAwQHGwAAAD8%2FOTkvLxESATkRMxI5OTEwATMRIxEzESMB2bS0tLQGEPzm%2FkX85AAAAAIAc%2F%2FyA4kGIwAtADkATUAsNBcmGy4AEQUyGTcDAAMFCxcZGyEIOzoDGTcUMioGHggID0lZCAEeJElZHhYAPysAGD8rERIAFzkREgEXOREzETMRMxEzETMRMzEwEzQ2NyY1NDYzMhYXBy4BIyIVFBYXHgEVFAcWFRQGIyInNR4BMzI1NC4BJy4CNxQeARc2NTQmJw4BgU1Jktu5W6ZjRHR4PcJuiK%2BWi4vs0NSGTcBR6ypkYY2CPbgwbYxtfJ82RQMnUIMrU5iBkiIqojIabTZPM0SdbbFZUI%2BOpUezKDODKzY2JjdddWEtRkQ4QWdLZzUQWwACASUFAgOWBewACwAXAB5ADAwSBgASABkYDwMVCQAvM80yERIBOTkRMxEzMTABNDYzMhYVFAYjIiYlNDYzMhYVFAYjIiYBJUMwNT9ANDBDAYlDMDVAQjMwQwV3Pjc%2BNzVAOjs%2BNz43Nj86AAADAGT%2F7AZEBcsAFgAmADYARkAoAw8vHycXCQ8UFx8FODcAABIQEgISEhsGDwwfDJ8MAwwMIzMbBCsjEwA%2FMz8zEjkvXTMROS9dMxESARc5ETMRMxEzMTABIgYVFBYzMjY3FQYjIiY1NDYzMhcHJgE0EiQzMgQSFRQCBCMiJAI3FBIEMzIkEjU0AiQjIgQCA31veGx7N34uc3jF2dzEiohBavyGyAFeysgBXsrC%2FqLQz%2F6iw3upASSoqgEkp6n%2B26eo%2Ft%2BsBAqhjpOeHhWeM%2FHe1vdGjzf%2B0cgBXsrI%2FqLKxf6m0M8BWsaq%2Ft2oqwEhqagBJaim%2FtwAAAIAOQMCApMFxwAXACEAOUAdCwEhIRcbBwcRFwMjIiELCxMdAQAABBAEAgQOEwQAPzPUXcQzMxI5LzMREgEXOREzETMRMzMxMAEnDgEjIiY1NDY%2FATQmIyIHJzYzMhYVEQEOARUUMzI2PQECIx0udkdxcaioa0VFWng2kI2Kiv7%2BR21gW1wDDmE3NmlqaG8GBEhIOHNGfX3%2BQQE8AkAxWFJSKwAAAgBSAGgEIQPhAAYADQApQBMDBgoNAgQLCQkEDQYEDg8MBQgBAC8zxDIREgEXOREzETMRMxEzMTATARcJAQcBJQEXCQEHAVIBZKj%2B5gEaqP6cAcIBZaj%2B5QEbqP6bAjEBsF7%2Bov6kYQGvGgGwXv6i%2FqRhAa8AAAAAAQBgAQAEMQMrAAUAI0AQAQADAAcGAQQEA1JZLwQBBAAvXSsAGBDEERIBOTkRMzEwASMRITUhBDGy%2FOED0QEAAXmyAP%2F%2FAEgBwQJKAokSBgAQAAAABABk%2F%2BwGRAXLAAgAFQAlADUAXUAzBAkLDg0MABAQES4eJhYJDA4RFh4GNzYPAAASDQ8RHxECEREaCAASEBICEhIiMhoEKiITAD8zPzMSOS9dMxE5L10zEjkvMxESARc5ETMRMxEzETMRMxEzETMxMAEzMjY1NCYrAQUUBxMjAyMRIxEhMhYBNBIkMzIEEhUUAgQjIiQCNxQSBDMyJBI1NAIkIyIEAgLsRUpMSU9DAZmZ7dPAWr0BBq6i%2B9%2FIAV7KyAFeysL%2BotDP%2FqLDe6kBJKiqASSnqf7bp6j%2B36wDAkZBSDl9qz7%2BcwFa%2FqYDh4j%2BxcgBXsrI%2FqLKxf6m0M8BWsaq%2Ft2oqwEhqagBJaim%2FtwAAAAAAf%2F6BhQEBga4AAMAEbUABQEEAQIALzMRATMRMzEwASE1IQQG%2B%2FQEDAYUpAACAG0DOQL%2BBcsADAAYAB9ADRMGDQAGABoZEAkWAwQAPzPEMhESATk5ETMRMzEwEzQ2MzIWFRQGIyIuATcUFjMyNjU0JiMiBm2%2Bi4q%2BwIhYmViZZkpKZmhISGgEgYfDwIqLvVeYWUZoZ0dMZmgAAAAAAgBgAAAEMQThAAsADwA3QB4GAwoKCwwPAQgLBREQDA1SWQwSCQECAVJZBp8CAQIAL10zKxEAMxg%2FKxESARc5ETMSOTkxMAEhNSERMxEhFSERIwE1IRUB7v5yAY60AY%2F%2BcbT%2BcgPRApiyAZf%2BabL%2Bav7%2BsrIAAAAAAQAzAkoCpgXJABYAJ0ATBhEVAgIMERYEGBcJDh8CFRUBIAA%2FMxI5PzMREgEXOREzETMxMAEhNTc%2BATU0JiMiByc2MzIWFRQGDwEhAqb9jeZ1QUAzXWxei6qIl1yJiwGNAkqH4XBqOzQ2WHl3hHJTl3%2BBAAABAC0COQKiBckAIwA5QB8XABAGAAYLEx4DBiUkAxMTHxQBHxQBFBQJGiEfDgkhAD8zPzMSOS9dcTMSORESARc5ETMRMzEwARQGBx4BFRQGIyInNRYzMjU0KwE1MzI1NCYjIgYHJz4BMzIWAoVRT15fuq2UepF9s8dzabhFODlhOVQ9kmKGnQTjS18nFW5Nf4o%2BnU%2BHfYWBNDgoJXIuO3sAAQFqBNkDUAYhAAkAE7YFAAsKBYAAAC8azRESATk5MTABNT4BNyEVDgEHAWo5eSMBETTPRwTZGUasPRU9wTUAAAEAqP4UBHUEUgAYADtAHQoFBQgRABUVFhYIGhkRCw4GFw8JFRYbDgJGWQ4WAD8rABg%2FPz8zEjk5ERIBOTkRMxEzMxEzETMxMAEUMzI2NREzESMnIw4BIyInIx4BFREjETMBk9qSiuy3Ig0wj2iMTwQDB%2BvrAab8sdACJ%2Fuuk1NUWhyyJP7ABj4AAAAAAQBx%2FvwEdwYUAA8ALUAVAQAEBQAFCwMREAEFCAgOBQ4DS1kOAC8rABgvEjkvETMREgEXOREzETMxMAEjESMRIxEGIyImNRA2MyEEd4m%2FiT5U2Mva6AJE%2FvwGf%2FmBAzMS%2BvsBBP4AAAABAIUCOQGuA2oACwAXQAoGAAANDAMJUVkDAC8rERIBOREzMTATNDYzMhYVFAYjIiaFTEhJTE1ISEwC00lOUUZHU1IAAAEAAP4UAaoAAAARAC1AFw8MCgAABQwDExIMD0ALDkgPDw4HAhsOAC8%2FMxI5LyszERIBFzkRMxEzMTABFCEiJzUWMzI2NTQnNzMHHgEBqv7PQjc2RTY%2Fs1SYKVBa%2FvLeD4kOIS1VGaZYFV8AAAEAVAJKAhQFtgAKACJAEAAECQMBCAEMCwcJASAECR4APzM%2FEjkREgE5OREXMzEwASMRPwEOAQcnJTMCFLoDBREvdlgBGacCSgIAZ1sSLFlw0QAAAAIAPQMCAs8FxwALABcAJUASEgAMBgAGGRgPAAMQAwIDFQkEAD8zxF0yERIBOTkRMxEzMTABFAYjIiY1NDYzMhYFFBYzMjY1NCYjIgYCz6%2BdlrCxmZiw%2FhBOWFhOTlhYTgRkpL6%2Fo6m6vaZvbm5vcW1tAAAAAgBQAGgEIQPhAAYADQAlQBILCQQCAAMHAgoJBg4PCAEBDAUALzPELzIREgEXOREzETMxMAkBJwkBNwEFAScJATcBBCH%2BmagBG%2F7lqAFn%2Fj3%2BmqgBGv7mqAFmAhf%2BUWEBXAFeXv5QGv5RYQFcAV5e%2FlAAAP%2F%2FADwAAAYxBbYQJwDTAqYAABAmAHvoABEHANQDXP23AAmzAwIRGAA%2FNTUA%2F%2F8ALgAABkgFthAnANMCgwAAECYAe9oAEQcAdAOi%2FbcAB7ICEBgAPzUAAAD%2F%2FwA3AAAGaAXJECcA0wL4AAAQJwDUA5P9txEGAHUKAAAJswIBBxgAPzU1AAACADf%2BdwOWBF4AGwAnAEhAJhwiABsHExMbIgMpKAQXFwAbEBsCCwMbGxAlJR9RWSUQEApLWRAiAD8rABg%2FKxESADkYL19eXTkRMxESARc5ETMRMxEzMTABFRQGBw4BFRQWMzI2NxcGIyImNTQ%2BATc%2BAT0BExQGIyImNTQ2MzIWAotSZnw%2BbGtaqFJS3MzP6CpWcl4%2B70tKSExMSEhNAoU%2FapZQYmJLTl43JrNuv6lJcmhaTGFPLQFASk5PSUVUUf%2F%2FAAAAAAVKB3MSJgAkAAARBwBD%2F%2BQBUgAIswIZBSYAKzUAAP%2F%2FAAAAAAVKB3MSJgAkAAARBwB2AKoBUgAIswIZBSYAKzUAAP%2F%2FAAAAAAVKB3MSJgAkAAARBwDFADsBUgAIswIcBSYAKzUAAP%2F%2FAAAAAAVKB0gSJgAkAAARBwDHAC0BUgAIswIYBSYAKzUAAP%2F%2FAAAAAAVKBz4SJgAkAAARBwBqAEYBUgAKtAMCJQUmACs1Nf%2F%2FAAAAAAVKBwkSJgAkAAARBgDGVm0ACbMDAiQDAD81NQAAAAAC%2F%2F4AAAbTBbYADwATAGVANgYTExERCg4OAQgABAUFAAEMEBIFFRQKDUxZCgoBBhADTFkQEAEGBRIJEwYTTFkGAwEOTFkBEgA%2FKwAYPysRADMYPxESOS8rERIAORgvKxESARc5MxEzETMRMxI5OREzETMxMCkBESEDIwEhFSERIRUhESEBIREjBtP81f4IvPYCpgQv%2FcUCFP3sAjv7NwGeewGW%2FmoFtsr%2Bcsj%2BNQGZAoEAAP%2F%2FAHn%2BFATPBcsSJgAmAAAQBwB6Ag4AAP%2F%2FAMEAAAP8B3MSJgAoAAARBwBD%2F7cBUgAIswEVBSYAKzUAAP%2F%2FAMEAAAP8B3MSJgAoAAARBwB2AE4BUgAIswEVBSYAKzUAAP%2F%2FAMEAAAP8B3MSJgAoAAARBwDF%2F%2FkBUgAIswEYBSYAKzUAAP%2F%2FAMEAAAP8Bz4SJgAoAAARBwBqAAQBUgAKtAIBIQUmACs1Nf%2F%2F%2F%2FoAAAHgB3MSJgAsAAARBwBD%2FpABUgAIswENBSYAKzUAAP%2F%2FALMAAAKZB3MSJgAsAAARBwB2%2F0kBUgAIswENBSYAKzUAAP%2F%2F%2F7UAAAK3B3MSJgAsAAARBwDF%2FtIBUgAIswEQBSYAKzUAAP%2F%2FAAEAAAJyBz4SJgAsAAARBwBq%2FtwBUgAKtAIBGQUmACs1NQACAC8AAAVeBbYADAAYAEdAJQ0AEggWFgQABAYUBBoZFQYHBkxZEgcHBAkJEUxZCQMEFkxZBBIAPysAGD8rERIAORgvMysRADMREgEXOREzEjk5ETMxMAEQACkBESM1MxEhIAADEAIrAREhFSERMyAFXv5u%2Fob%2Bb5KSAb4BWwGE%2FPn0xQEz%2Fs2gAhIC6f6Y%2Fn8Cb8gCf%2F6H%2FqQBBAEJ%2FknI%2FloA%2F%2F8AwQAABYMHSBImADEAABEHAMcAsgFSAAizARoFJgArNQAA%2F%2F8Aef%2FsBdMHcxImADIAABEHAEMAdwFSAAizAiEFJgArNQAA%2F%2F8Aef%2FsBdMHcxImADIAABEHAHYBJwFSAAizAiEFJgArNQAA%2F%2F8Aef%2FsBdMHcxImADIAABEHAMUAugFSAAizAiQFJgArNQAA%2F%2F8Aef%2FsBdMHSBImADIAABEHAMcArgFSAAizAiAFJgArNQAA%2F%2F8Aef%2FsBdMHPhImADIAABEHAGoAywFSAAq0AwItBSYAKzU1AAEAgwEOBA4EmAALABxADwEDBQcJCwYNDC8AXwACAAAZL10REgEXOTEwCQE3CQEXCQEHCQEnAcn%2Bun0BSAFJff63AUV7%2Frf%2BvH0C0wFGf%2F66AUZ7%2Frb%2BuH0BRv66fQAAAAMAef%2B0BdMF%2FAATABsAIwBOQC0WFx4fBBQcFAAcCgAFCAoPBSUkFx4WHwQhGQ8SCAUEAw0NIUxZDQQDGUxZAxMAPysAGD8rERIAFzkREhc5ERIBFzkRMxEzERIXOTEwARAAISInByc3JhEQACEyFzcXBxYDNCcBFjMyEgEUFwEmIyICBdP%2Bm%2F651ZRejWK8AWUBS8ebWo5jw%2F5Q%2FbZhi9XZ%2FKJOAktci9fbAt3%2Bm%2F50UYlekMQBeQFqAYRSgVyMx%2F6Q4Yj8rjwBFAER54MDUjv%2B6gD%2F%2FwC0%2F%2BwFOwdzEiYAOAAAEQcAQwA3AVIACLMBGwUmACs1AAD%2F%2FwC0%2F%2BwFOwdzEiYAOAAAEQcAdgDuAVIACLMBGwUmACs1AAD%2F%2FwC0%2F%2BwFOwdzEiYAOAAAEQcAxQCLAVIACLMBHgUmACs1AAD%2F%2FwC0%2F%2BwFOwc%2BEiYAOAAAEQcAagCYAVIACrQCAScFJgArNTX%2F%2FwAAAAAEvAdzEiYAPAAAEQcAdgBYAVIACLMBEgUmACs1AAAAAgDBAAAEkQW2AAwAFQBGQCURAA0JBQUGBgAXFgkVTFkACRAJAgwDCQkGBw0ETFkNDQYHAwYSAD8%2FEjkvKxESADkYL19eXSsREgE5OREzETMzETMxMAEUBCEjESMRMxUzIAQBMzI2NTQmKwEEkf7c%2Fuuo7%2B%2FFAQwBEP0fhbusnKykAwjj9P7PBbbz4P4Vfox%2FewAAAAEAqP%2FsBQIGHwAzAEFAIiUABh8ZDiwtAA4UHy0FNTQZJRExLRUxKEZZMQARF0hZERYAPysAGD8rABg%2FERI5ORESARc5ETMRMxEzETMxMAEUBgcOARUUFh8BHgIVFAYjIic1HgEzMjU0JicuATU0Njc%2BATU0JiMiBhURIxE0JDMyBAR9TUJaNi05X1xXLNbMvm06okPARXl3aERHS0CGb3%2BG6wEB7%2BEBBATlSoUzRTocHjMmQD5fcEelrEHHJTGXPVhKSXxUP2k1N1UzSFFsaftzBJHBzagA%2F%2F8AWv%2FsBAQGIRImAEQAABEGAEOZAAAIswIwESYAKzX%2F%2FwBa%2F%2BwEBAYhEiYARAAAEQYAdkwAAAizAjARJgArNf%2F%2FAFr%2F7AQEBiESJgBEAAARBgDF6AAACLMCMxEmACs1%2F%2F8AWv%2FsBAQF9hImAEQAABEGAMfkAAAIswIvESYAKzX%2F%2FwBa%2F%2BwEBAXsEiYARAAAEQYAavUAAAq0AwI8ESYAKzU1AAD%2F%2FwBa%2F%2BwEBAacEiYARAAAEQYAxg4AAAq0AwIqESYAKzU1AAAAAwBa%2F%2BwGuARmACYAMAA3AHNAPyEPFgQtNBYWLTUVJwAAChUaLQU5OA8hJA0ELUpZBAQkDTQWSVk0NCQNETFIWQ0HSFkRDRAeGEdZJClIWR4kFgA%2FMysrABg%2FMysrERIAORgvKxESADkYLysREgA5ORESARc5ETMRMxEzETMRMxI5OTEwEzQ2PwE1NCMiByc%2BATMyFzYzMhIdASESITI3FQ4BIyImJw4BIyImNxQzMjY9AQcOAQEiBgchNCZa8%2Fm8yY2mSljRY%2FFjeOLO9P04CgEjuKxWq26M2UNewZGlu%2FSmfJCHm5ADpHCDCQHZdQE9rK0IBkzCUqYvMZub%2FvPkf%2F6wUL8pIm1ufV60m5uRf2AGBmECEYuLgpQAAP%2F%2FAGb%2BFAO0BGYSJgBGAAAQBwB6AWQAAP%2F%2FAGb%2F7AQ5BiESJgBIAAARBgBDrwAACLMCJREmACs1%2F%2F8AZv%2FsBDkGIRImAEgAABEGAHZgAAAIswIlESYAKzX%2F%2FwBm%2F%2BwEOQYhEiYASAAAEQYAxQAAAAizAigRJgArNf%2F%2FAGb%2F7AQ5BewSJgBIAAARBgBqDgAACrQDAjERJgArNTUAAP%2F%2F%2F7sAAAGhBiESJgDCAAARBwBD%2FlEAAAAIswENESYAKzUAAP%2F%2FAJwAAAKCBiESJgDCAAARBwB2%2FzIAAAAIswENESYAKzUAAP%2F%2F%2F5wAAAKeBiESJgDCAAARBwDF%2FrkAAAAIswEQESYAKzUAAP%2F%2F%2F%2BcAAAJYBewSJgDCAAARBwBq%2FsIAAAAKtAIBGREmACs1NQACAGb%2F7AR9BiEAGwAnAFBAKwwcHAAiBgAGEBMYBSkoFhkRDhAFFw8PFAwDCQkfR1kJCQMXFAEDJUdZAxYAPysAGD%2FGEjkvKxESADkSORgvEhc5ERIBFzkRMxEzETMxMAEQACMiADU0ADMyFzcmJwcnNyYnNxYXNxcHFhIDNCYjIgYVFBYzMjYEff7t%2B%2Bv%2B4gEG3NZXCD6l%2BljMVlFUjHbnWLyYn%2FCXg5eGlImUhgI3%2Fun%2BzAEQ5ecBDW8EvZyWhXc7K5I%2FUYqBcYz%2BhP7pf5aknpmitgAAAP%2F%2FAKgAAAR1BfYSJgBRAAARBgDHIQAACLMBHBEmACs1%2F%2F8AZv%2FsBH0GIRImAFIAABEGAEO7AAAIswIfESYAKzX%2F%2FwBm%2F%2BwEfQYhEiYAUgAAEQYAdm8AAAizAh8RJgArNf%2F%2FAGb%2F7AR9BiESJgBSAAARBgDFDAAACLMCIhEmACs1%2F%2F8AZv%2FsBH0F9hImAFIAABEGAMf%2FAAAIswIeESYAKzX%2F%2FwBm%2F%2BwEfQXsEiYAUgAAEQYAahIAAAq0AwIrESYAKzU1AAAAAwBgAOwEMQS2AAMADwAbADRAGhYQCgQAAwQQBB0cBw0ZEw0TAQEAUlkvAQEBAC9dKxEAMzMYLzMvMxESARc5ETMRMzEwEzUhFQE0NjMyFhUUBiMiJhE0NjMyFhUUBiMiJmAD0f2YP0A9QEQ5PEM%2FQD1ARDk8QwJ5srL%2B%2FEBHSD8%2FSkcC%2FEBHSD8%2FSkcAAAAAAwBm%2F7gEfQSLABMAGwAiAE9ALhYXHh8EHBQcABQKAAUICg8SBiQjFx4WHwQhGQ8SCAUEAw0NGUZZDRADIUZZAxYAPysAGD8rERIAFzkREhc5ERIBFzkRMxEzERIXOTEwARAAIyInByc3JhEQADMyFzcXBxYBFBcBJiMiBgU0JwEWMyAEff7q%2BJBqTIdSjgEU%2B5ByRYhOh%2FzbJQGHPFeUhQIzIf59NlYBGAIr%2FvH%2B0DltWnWbAQkBDQEuP2RcbJj%2FAIdUAi8nxLd5Uv3XIQAA%2F%2F8Anv%2FsBG0GIRImAFgAABEGAEO3AAAIswEeESYAKzX%2F%2FwCe%2F%2BwEbQYhEiYAWAAAEQcAdgCLAAAACLMBHhEmACs1AAD%2F%2FwCe%2F%2BwEbQYhEiYAWAAAEQYAxSEAAAizASERJgArNf%2F%2FAJ7%2F7ARtBewSJgBYAAARBgBqJwAACrQCASoRJgArNTUAAP%2F%2FAAD%2BFARKBiESJgBcAAARBgB2JwAACLMBHhEmACs1AAIAqP4UBJMGFAAVACEAQUAiHwYMEhUaBA8PEBAGIyIMFQkDEQAQGwMWRlkDEAkdRlkJFgA%2FKwAYPysAGD8%2FERI5ORESATk5ETMRFzMRMzEwAT4BMzISERACIyInIx8BESMRMxEPAQUiBh0BFBYzMhE0JgGTPaNqzujpzdtvDggG6%2BsHAwEZjoGAkf57A8FWT%2F7S%2FvP%2B8P7RlUhc%2FjcIAP5SihsbpLIlyrUBgb67AAD%2F%2FwAA%2FhQESgXsEiYAXAAAEQYAasoAAAq0AgEqESYAKzU1AAAAAQCoAAABkwRSAAMAFkAJAAEBBQQCDwEVAD8%2FERIBOREzMTAhIxEzAZPr6wRSAAAAAgB5%2F%2BwHGwXNABQAHwBWQC8NAA8TEx0YBgAGER0EISAPEkxZDw8BCwsOTFkLAwkVTFkJBAETTFkBEwMbTFkDEgA%2FKwAYPysAGD8rABg%2FKxESADkYLysREgEXOREzETMRMxEzMTApAQYjIAAREAAhMhchFSERIRUhESEBIgIREBIzMjcRJgcb%2FMxmbf7A%2FqUBWAE%2Fc14DOv3AAhv95QJA%2B%2F7Q1tTQgVRQFAGJAWoBaAGGF8r%2Bcsj%2BNQQ1%2Fur%2B8%2F7z%2FugjBAAlAAADAGb%2F7AdMBGYAHQApADAAb0A9DQIkLRQUJC4THgcHExokBDIxDQIECi0USFkMLRwtAhADLS0ECg8qSFkPCgonRlkKEAAXR1kABAQhRlkEFgA%2FKxEAMysAGD8rEQAzKxESADkYL19eXSsREgA5ORESARc5ETMRMxEzETMSOTkxMAUgJwYhIgAREAAzMhYXNjMyAB0BIR4BMzI2NxUOAQEUFjMyNjU0JiMiBiUiBgchNCYFnv7ni4T%2B9Oz%2B6AES9XnMQoP43QEA%2FR4LlZpmqmBUr%2FtHg5KNg4SRj4EEGW6HCwHxfhTCwgE2AQkBEAErYmDC%2FvXof6SqJSu%2FKCMCP73Cv7zAv77Mi4uGkAAAAQDjBNkD5QYhAAwAKEASCQgCAAwEBQIFDAMODQIJgAUAAC8yGs0yERIBFzkRMxEzETMzMTABJicGByM1NjchFhcVA0Z7aWd6nr8%2FAQQ%2FwQTZSWtnTRnGaW7BGQACAWAE1wM7BpwACwAWACpAFgwAEgYGABgXD3AJAQ8JHwkvCQMJFAMALzPEXV0yERIBOTkRMxEzMTABFAYjIiY1NDYzMhYHNCYjIgYVFDMyNgM7g2xsgH9taIeFPC4vPGsuPAW8Zn99ZmV9fGYyOTkyajcAAAEA7ATXA%2F4F9gAVADJAGBITBwgTCBcWEAAFCwALAAt%2FE48TAhOACAAvGsxdOTkvLxEzETMREgE5OREzETMxMAEiLgIjIgcjPgEzMh4CMzI3Mw4BAwgqUU5KIlEcegyDZitSTkkiTxt9DIIE2SMrI3OLkiMrI3OGlwAAAAABAFIBxwOuAoUAAwARtQMABQQAAQAvMxESATk5MTATNSEVUgNcAce%2BvgAAAAEAUgHHB64ChQADABG1AwAFBAABAC8zERIBOTkxMBM1IRVSB1wBx76%2BAAAAAQAZA8EBcwW2AAcAF0AJAQcHBQkIAAQDAD%2FNERIBOTkRMzEwEyc2EjczAgclDBRmNqpAJQPBFlMBGnL%2FAPUAAAEAGQPBAXMFtgAGABdACQEGBgQIBwQGAwA%2FxhESATk5ETMxMAEXBgMjEjcBZA81e6pFHwW2FtH%2B8gEh1AAAAAABAD%2F%2B%2BAGcAO4ABgAeQA8ABQUDCAcDQAZQBtAGAwYAL13NERIBOTkRMzEwJQYDIxI3MwGcMICtRSLn17r%2B2wEO6AAAAAIAGQPBAxQFtgAGAA4AIkAQBw0ABQMFCw0EEA8GDgIKAwA%2FM80yERIBFzkRMxEzMTABNhMzAgcjJTYSNzMCByMBuDV9qkUf6f5SFGY2qkAl6QPXywEU%2FtjNFlMBGnL%2FAPUAAAACABkDwQMUBbYABgANACJAEAcMAAUDBQoMBA8OCgMMBQMAPzPGMhESARc5ETMRMzEwAQYDIxI3MwUGAyMSNzMBczV7qkUf5wGwNXusRSLnBaDR%2FvIBIdQW0f7yAQ%2FmAAACACv%2B%2BAMpAO4ABgANAClAFgcMAAUDBQoMBA8OCgMMQAZQBtAGAwYAL10zzTIREgEXOREzETMxMCUGAyMSNzMFBgMjEjczAYc3eaxCJOgBsDCArEIk6NfW%2FvcBBPIXuv7bAQTyAAAAAAEAgwHRAn8EBgALABO2BgAADQwJAwAvzRESATkRMzEwEzQ2MzIWFRQGIyImg4R6eYWGeHiGAuyKkJGJh5SRAAABAFIAaAJeA%2BEABgAYQAoDBgIEBgMIBwUBAC%2FEERIBFzkRMzEwEwEXCQEHAVIBZKj%2B5gEaqP6cAjEBsF7%2Bov6kYQGvAAEAUABoAl4D4QAGABhACgMAAAIEAwgHAQUAL8QREgEXOREzMTAJAScJATcBAl7%2BmqgBGv7mqAFmAhf%2BUWEBXAFeXv5QAAAAAAH%2BdwAAAo8FtgADABpACwMABQECAgQDAwISAD8%2FEQEzETMRMzIxMAkBIwECj%2FyowANaBbb6SgW2AAAAAAIAEAJKAtUFvAAKABEAPkAgCQEBCwcEEQYABAYDExIBBQUGCQ8RHxECEREHAyAOBx4APzM%2FEjkvXTMzMxEzERIBFzkRMxEzMzMRMzEwASMVIzUhNQEzETMhNTQ3Bg8BAtV9wP54AYy8ff7DBjQklAL6sLB%2FAkP9zbJhZGg22QAAAQA%2F%2F%2BwEhQXFACYAcUBCDAMICBYfAxsFChEYGx0kBygnBh0eHVBZAw8eHx4vHr8eBAkDHhcJGBcYUFkMAxcBFAMXFxMiIgBNWSIHEw5NWRMZAD8rABg%2FKxESADkYL19eXTMrEQAzGBDGX15dMisRADMREgEXOREXMxEzMzEwASIGByEVIQcVFyEVIRIhMjcVBiMiACcjNTMnNTcjNTM2ADMyFwcmAx%2BNsx4ByP4pAgIBmP55QAEsj5aDrvH%2B0y6YiAICiJYmATLyyJ5UmgT%2BqKqaLTcnmf7IPss9AQj6mSUlQZr7AR5Yu0wAAAAAAAEAACMAAAEF0xgAAAoK8gAFACT%2FcQAFADcAKQAFADkAKQAFADoAKQAFADwAFAAFAET%2FrgAFAEb%2FhQAFAEf%2FhQAFAEj%2FhQAFAEr%2FwwAFAFD%2FwwAFAFH%2FwwAFAFL%2FhQAFAFP%2FwwAFAFT%2FhQAFAFX%2FwwAFAFb%2FwwAFAFj%2FwwAFAIL%2FcQAFAIP%2FcQAFAIT%2FcQAFAIX%2FcQAFAIb%2FcQAFAIf%2FcQAFAJ8AFAAFAKL%2FhQAFAKP%2FrgAFAKT%2FrgAFAKX%2FrgAFAKb%2FrgAFAKf%2FrgAFAKj%2FrgAFAKn%2FhQAFAKr%2FhQAFAKv%2FhQAFAKz%2FhQAFAK3%2FhQAFALT%2FhQAFALX%2FhQAFALb%2FhQAFALf%2FhQAFALj%2FhQAFALr%2FhQAFALv%2FwwAFALz%2FwwAFAL3%2FwwAFAL7%2FwwAFAMT%2FhQAKACT%2FcQAKADcAKQAKADkAKQAKADoAKQAKADwAFAAKAET%2FrgAKAEb%2FhQAKAEf%2FhQAKAEj%2FhQAKAEr%2FwwAKAFD%2FwwAKAFH%2FwwAKAFL%2FhQAKAFP%2FwwAKAFT%2FhQAKAFX%2FwwAKAFb%2FwwAKAFj%2FwwAKAIL%2FcQAKAIP%2FcQAKAIT%2FcQAKAIX%2FcQAKAIb%2FcQAKAIf%2FcQAKAJ8AFAAKAKL%2FhQAKAKP%2FrgAKAKT%2FrgAKAKX%2FrgAKAKb%2FrgAKAKf%2FrgAKAKj%2FrgAKAKn%2FhQAKAKr%2FhQAKAKv%2FhQAKAKz%2FhQAKAK3%2FhQAKALT%2FhQAKALX%2FhQAKALb%2FhQAKALf%2FhQAKALj%2FhQAKALr%2FhQAKALv%2FwwAKALz%2FwwAKAL3%2FwwAKAL7%2FwwAKAMT%2FhQALAC0AuAAPACb%2FmgAPACr%2FmgAPADL%2FmgAPADT%2FmgAPADf%2FcQAPADj%2F1wAPADn%2FhQAPADr%2FhQAPADz%2FhQAPAIn%2FmgAPAJT%2FmgAPAJX%2FmgAPAJb%2FmgAPAJf%2FmgAPAJj%2FmgAPAJr%2FmgAPAJv%2F1wAPAJz%2F1wAPAJ3%2F1wAPAJ7%2F1wAPAJ%2F%2FhQAPAMP%2FmgAQADf%2FrgARACb%2FmgARACr%2FmgARADL%2FmgARADT%2FmgARADf%2FcQARADj%2F1wARADn%2FhQARADr%2FhQARADz%2FhQARAIn%2FmgARAJT%2FmgARAJX%2FmgARAJb%2FmgARAJf%2FmgARAJj%2FmgARAJr%2FmgARAJv%2F1wARAJz%2F1wARAJ3%2F1wARAJ7%2F1wARAJ%2F%2FhQARAMP%2FmgAkAAX%2FcQAkAAr%2FcQAkACb%2F1wAkACr%2F1wAkAC0BCgAkADL%2F1wAkADT%2F1wAkADf%2FcQAkADn%2FrgAkADr%2FrgAkADz%2FhQAkAIn%2F1wAkAJT%2F1wAkAJX%2F1wAkAJb%2F1wAkAJf%2F1wAkAJj%2F1wAkAJr%2F1wAkAJ%2F%2FhQAkAMP%2F1wAkAMv%2FcQAkAM7%2FcQAlAA%2F%2FrgAlABH%2FrgAlACT%2F1wAlADf%2FwwAlADn%2F7AAlADr%2F7AAlADv%2F1wAlADz%2F7AAlAD3%2F7AAlAIL%2F1wAlAIP%2F1wAlAIT%2F1wAlAIX%2F1wAlAIb%2F1wAlAIf%2F1wAlAJ%2F%2F7AAlAMz%2FrgAlAM%2F%2FrgAmACb%2F1wAmACr%2F1wAmADL%2F1wAmADT%2F1wAmAIn%2F1wAmAJT%2F1wAmAJX%2F1wAmAJb%2F1wAmAJf%2F1wAmAJj%2F1wAmAJr%2F1wAmAMP%2F1wAnAA%2F%2FrgAnABH%2FrgAnACT%2F1wAnADf%2FwwAnADn%2F7AAnADr%2F7AAnADv%2F1wAnADz%2F7AAnAD3%2F7AAnAIL%2F1wAnAIP%2F1wAnAIT%2F1wAnAIX%2F1wAnAIb%2F1wAnAIf%2F1wAnAJ%2F%2F7AAnAMz%2FrgAnAM%2F%2FrgAoAC0AewApAA%2F%2FhQApABH%2FhQApACIAKQApACT%2F1wApAIL%2F1wApAIP%2F1wApAIT%2F1wApAIX%2F1wApAIb%2F1wApAIf%2F1wApAMz%2FhQApAM%2F%2FhQAuACb%2F1wAuACr%2F1wAuADL%2F1wAuADT%2F1wAuAIn%2F1wAuAJT%2F1wAuAJX%2F1wAuAJb%2F1wAuAJf%2F1wAuAJj%2F1wAuAJr%2F1wAuAMP%2F1wAvAAX%2FXAAvAAr%2FXAAvACb%2F1wAvACr%2F1wAvADL%2F1wAvADT%2F1wAvADf%2F1wAvADj%2F7AAvADn%2F1wAvADr%2F1wAvADz%2FwwAvAIn%2F1wAvAJT%2F1wAvAJX%2F1wAvAJb%2F1wAvAJf%2F1wAvAJj%2F1wAvAJr%2F1wAvAJv%2F7AAvAJz%2F7AAvAJ3%2F7AAvAJ7%2F7AAvAJ%2F%2FwwAvAMP%2F1wAvAMv%2FXAAvAM7%2FXAAyAA%2F%2FrgAyABH%2FrgAyACT%2F1wAyADf%2FwwAyADn%2F7AAyADr%2F7AAyADv%2F1wAyADz%2F7AAyAD3%2F7AAyAIL%2F1wAyAIP%2F1wAyAIT%2F1wAyAIX%2F1wAyAIb%2F1wAyAIf%2F1wAyAJ%2F%2F7AAyAMz%2FrgAyAM%2F%2FrgAzAA%2F%2B9gAzABH%2B9gAzACT%2FmgAzADv%2F1wAzAD3%2F7AAzAIL%2FmgAzAIP%2FmgAzAIT%2FmgAzAIX%2FmgAzAIb%2FmgAzAIf%2FmgAzAMz%2B9gAzAM%2F%2B9gA0AA%2F%2FrgA0ABH%2FrgA0ACT%2F1wA0ADf%2FwwA0ADn%2F7AA0ADr%2F7AA0ADv%2F1wA0ADz%2F7AA0AD3%2F7AA0AIL%2F1wA0AIP%2F1wA0AIT%2F1wA0AIX%2F1wA0AIb%2F1wA0AIf%2F1wA0AJ%2F%2F7AA0AMz%2FrgA0AM%2F%2FrgA3AA%2F%2FhQA3ABD%2FrgA3ABH%2FhQA3ACIAKQA3ACT%2FcQA3ACb%2F1wA3ACr%2F1wA3ADL%2F1wA3ADT%2F1wA3ADcAKQA3AET%2FXAA3AEb%2FcQA3AEf%2FcQA3AEj%2FcQA3AEr%2FcQA3AFD%2FmgA3AFH%2FmgA3AFL%2FcQA3AFP%2FmgA3AFT%2FcQA3AFX%2FmgA3AFb%2FhQA3AFj%2FmgA3AFn%2F1wA3AFr%2F1wA3AFv%2F1wA3AFz%2F1wA3AF3%2FrgA3AIL%2FcQA3AIP%2FcQA3AIT%2FcQA3AIX%2FcQA3AIb%2FcQA3AIf%2FcQA3AIn%2F1wA3AJT%2F1wA3AJX%2F1wA3AJb%2F1wA3AJf%2F1wA3AJj%2F1wA3AJr%2F1wA3AKL%2FcQA3AKP%2FXAA3AKT%2FXAA3AKX%2FXAA3AKb%2FXAA3AKf%2FXAA3AKj%2FXAA3AKn%2FcQA3AKr%2FcQA3AKv%2FcQA3AKz%2FcQA3AK3%2FcQA3ALT%2FcQA3ALX%2FcQA3ALb%2FcQA3ALf%2FcQA3ALj%2FcQA3ALr%2FcQA3ALv%2FmgA3ALz%2FmgA3AL3%2FmgA3AL7%2FmgA3AL%2F%2F1wA3AMP%2F1wA3AMT%2FcQA3AMj%2FrgA3AMn%2FrgA3AMz%2FhQA3AM%2F%2FhQA4AA%2F%2F1wA4ABH%2F1wA4ACT%2F7AA4AIL%2F7AA4AIP%2F7AA4AIT%2F7AA4AIX%2F7AA4AIb%2F7AA4AIf%2F7AA4AMz%2F1wA4AM%2F%2F1wA5AA%2F%2FmgA5ABH%2FmgA5ACIAKQA5ACT%2FrgA5ACb%2F7AA5ACr%2F7AA5ADL%2F7AA5ADT%2F7AA5AET%2F1wA5AEb%2F1wA5AEf%2F1wA5AEj%2F1wA5AEr%2F7AA5AFD%2F7AA5AFH%2F7AA5AFL%2F1wA5AFP%2F7AA5AFT%2F1wA5AFX%2F7AA5AFb%2F7AA5AFj%2F7AA5AIL%2FrgA5AIP%2FrgA5AIT%2FrgA5AIX%2FrgA5AIb%2FrgA5AIf%2FrgA5AIn%2F7AA5AJT%2F7AA5AJX%2F7AA5AJb%2F7AA5AJf%2F7AA5AJj%2F7AA5AJr%2F7AA5AKL%2F1wA5AKP%2F1wA5AKT%2F1wA5AKX%2F1wA5AKb%2F1wA5AKf%2F1wA5AKj%2F1wA5AKn%2F1wA5AKr%2F1wA5AKv%2F1wA5AKz%2F1wA5AK3%2F1wA5ALT%2F1wA5ALX%2F1wA5ALb%2F1wA5ALf%2F1wA5ALj%2F1wA5ALr%2F1wA5ALv%2F7AA5ALz%2F7AA5AL3%2F7AA5AL7%2F7AA5AMP%2F7AA5AMT%2F1wA5AMz%2FmgA5AM%2F%2FmgA6AA%2F%2FmgA6ABH%2FmgA6ACIAKQA6ACT%2FrgA6ACb%2F7AA6ACr%2F7AA6ADL%2F7AA6ADT%2F7AA6AET%2F1wA6AEb%2F1wA6AEf%2F1wA6AEj%2F1wA6AEr%2F7AA6AFD%2F7AA6AFH%2F7AA6AFL%2F1wA6AFP%2F7AA6AFT%2F1wA6AFX%2F7AA6AFb%2F7AA6AFj%2F7AA6AIL%2FrgA6AIP%2FrgA6AIT%2FrgA6AIX%2FrgA6AIb%2FrgA6AIf%2FrgA6AIn%2F7AA6AJT%2F7AA6AJX%2F7AA6AJb%2F7AA6AJf%2F7AA6AJj%2F7AA6AJr%2F7AA6AKL%2F1wA6AKP%2F1wA6AKT%2F1wA6AKX%2F1wA6AKb%2F1wA6AKf%2F1wA6AKj%2F1wA6AKn%2F1wA6AKr%2F1wA6AKv%2F1wA6AKz%2F1wA6AK3%2F1wA6ALT%2F1wA6ALX%2F1wA6ALb%2F1wA6ALf%2F1wA6ALj%2F1wA6ALr%2F1wA6ALv%2F7AA6ALz%2F7AA6AL3%2F7AA6AL7%2F7AA6AMP%2F7AA6AMT%2F1wA6AMz%2FmgA6AM%2F%2FmgA7ACb%2F1wA7ACr%2F1wA7ADL%2F1wA7ADT%2F1wA7AIn%2F1wA7AJT%2F1wA7AJX%2F1wA7AJb%2F1wA7AJf%2F1wA7AJj%2F1wA7AJr%2F1wA7AMP%2F1wA8AA%2F%2FhQA8ABH%2FhQA8ACIAKQA8ACT%2FhQA8ACb%2F1wA8ACr%2F1wA8ADL%2F1wA8ADT%2F1wA8AET%2FmgA8AEb%2FmgA8AEf%2FmgA8AEj%2FmgA8AEr%2F1wA8AFD%2FwwA8AFH%2FwwA8AFL%2FmgA8AFP%2FwwA8AFT%2FmgA8AFX%2FwwA8AFb%2FrgA8AFj%2FwwA8AF3%2F1wA8AIL%2FhQA8AIP%2FhQA8AIT%2FhQA8AIX%2FhQA8AIb%2FhQA8AIf%2FhQA8AIn%2F1wA8AJT%2F1wA8AJX%2F1wA8AJb%2F1wA8AJf%2F1wA8AJj%2F1wA8AJr%2F1wA8AKL%2FmgA8AKP%2FmgA8AKT%2FmgA8AKX%2FmgA8AKb%2FmgA8AKf%2FmgA8AKj%2FmgA8AKn%2FmgA8AKr%2FmgA8AKv%2FmgA8AKz%2FmgA8AK3%2FmgA8ALT%2FmgA8ALX%2FmgA8ALb%2FmgA8ALf%2FmgA8ALj%2FmgA8ALr%2FmgA8ALv%2FwwA8ALz%2FwwA8AL3%2FwwA8AL7%2FwwA8AMP%2F1wA8AMT%2FmgA8AMz%2FhQA8AM%2F%2FhQA9ACb%2F7AA9ACr%2F7AA9ADL%2F7AA9ADT%2F7AA9AIn%2F7AA9AJT%2F7AA9AJX%2F7AA9AJb%2F7AA9AJf%2F7AA9AJj%2F7AA9AJr%2F7AA9AMP%2F7AA%2BAC0AuABEAAX%2F7ABEAAr%2F7ABEAMv%2F7ABEAM7%2F7ABFAAX%2F7ABFAAr%2F7ABFAFn%2F1wBFAFr%2F1wBFAFv%2F1wBFAFz%2F1wBFAF3%2F7ABFAL%2F%2F1wBFAMv%2F7ABFAM7%2F7ABGAAUAKQBGAAoAKQBGAMsAKQBGAM4AKQBIAAX%2F7ABIAAr%2F7ABIAFn%2F1wBIAFr%2F1wBIAFv%2F1wBIAFz%2F1wBIAF3%2F7ABIAL%2F%2F1wBIAMv%2F7ABIAM7%2F7ABJAAUAewBJAAoAewBJAMsAewBJAM4AewBLAAX%2F7ABLAAr%2F7ABLAMv%2F7ABLAM7%2F7ABOAEb%2F1wBOAEf%2F1wBOAEj%2F1wBOAFL%2F1wBOAFT%2F1wBOAKL%2F1wBOAKn%2F1wBOAKr%2F1wBOAKv%2F1wBOAKz%2F1wBOAK3%2F1wBOALT%2F1wBOALX%2F1wBOALb%2F1wBOALf%2F1wBOALj%2F1wBOALr%2F1wBOAMT%2F1wBQAAX%2F7ABQAAr%2F7ABQAMv%2F7ABQAM7%2F7ABRAAX%2F7ABRAAr%2F7ABRAMv%2F7ABRAM7%2F7ABSAAX%2F7ABSAAr%2F7ABSAFn%2F1wBSAFr%2F1wBSAFv%2F1wBSAFz%2F1wBSAF3%2F7ABSAL%2F%2F1wBSAMv%2F7ABSAM7%2F7ABTAAX%2F7ABTAAr%2F7ABTAFn%2F1wBTAFr%2F1wBTAFv%2F1wBTAFz%2F1wBTAF3%2F7ABTAL%2F%2F1wBTAMv%2F7ABTAM7%2F7ABVAAUAUgBVAAoAUgBVAET%2F1wBVAEb%2F1wBVAEf%2F1wBVAEj%2F1wBVAEr%2F7ABVAFL%2F1wBVAFT%2F1wBVAKL%2F1wBVAKP%2F1wBVAKT%2F1wBVAKX%2F1wBVAKb%2F1wBVAKf%2F1wBVAKj%2F1wBVAKn%2F1wBVAKr%2F1wBVAKv%2F1wBVAKz%2F1wBVAK3%2F1wBVALT%2F1wBVALX%2F1wBVALb%2F1wBVALf%2F1wBVALj%2F1wBVALr%2F1wBVAMT%2F1wBVAMsAUgBVAM4AUgBXAAUAKQBXAAoAKQBXAMsAKQBXAM4AKQBZAAUAUgBZAAoAUgBZAA%2F%2FrgBZABH%2FrgBZACIAKQBZAMsAUgBZAMz%2FrgBZAM4AUgBZAM%2F%2FrgBaAAUAUgBaAAoAUgBaAA%2F%2FrgBaABH%2FrgBaACIAKQBaAMsAUgBaAMz%2FrgBaAM4AUgBaAM%2F%2FrgBbAEb%2F1wBbAEf%2F1wBbAEj%2F1wBbAFL%2F1wBbAFT%2F1wBbAKL%2F1wBbAKn%2F1wBbAKr%2F1wBbAKv%2F1wBbAKz%2F1wBbAK3%2F1wBbALT%2F1wBbALX%2F1wBbALb%2F1wBbALf%2F1wBbALj%2F1wBbALr%2F1wBbAMT%2F1wBcAAUAUgBcAAoAUgBcAA%2F%2FrgBcABH%2FrgBcACIAKQBcAMsAUgBcAMz%2FrgBcAM4AUgBcAM%2F%2FrgBeAC0AuACCAAX%2FcQCCAAr%2FcQCCACb%2F1wCCACr%2F1wCCAC0BCgCCADL%2F1wCCADT%2F1wCCADf%2FcQCCADn%2FrgCCADr%2FrgCCADz%2FhQCCAIn%2F1wCCAJT%2F1wCCAJX%2F1wCCAJb%2F1wCCAJf%2F1wCCAJj%2F1wCCAJr%2F1wCCAJ%2F%2FhQCCAMP%2F1wCCAMv%2FcQCCAM7%2FcQCDAAX%2FcQCDAAr%2FcQCDACb%2F1wCDACr%2F1wCDAC0BCgCDADL%2F1wCDADT%2F1wCDADf%2FcQCDADn%2FrgCDADr%2FrgCDADz%2FhQCDAIn%2F1wCDAJT%2F1wCDAJX%2F1wCDAJb%2F1wCDAJf%2F1wCDAJj%2F1wCDAJr%2F1wCDAJ%2F%2FhQCDAMP%2F1wCDAMv%2FcQCDAM7%2FcQCEAAX%2FcQCEAAr%2FcQCEACb%2F1wCEACr%2F1wCEAC0BCgCEADL%2F1wCEADT%2F1wCEADf%2FcQCEADn%2FrgCEADr%2FrgCEADz%2FhQCEAIn%2F1wCEAJT%2F1wCEAJX%2F1wCEAJb%2F1wCEAJf%2F1wCEAJj%2F1wCEAJr%2F1wCEAJ%2F%2FhQCEAMP%2F1wCEAMv%2FcQCEAM7%2FcQCFAAX%2FcQCFAAr%2FcQCFACb%2F1wCFACr%2F1wCFAC0BCgCFADL%2F1wCFADT%2F1wCFADf%2FcQCFADn%2FrgCFADr%2FrgCFADz%2FhQCFAIn%2F1wCFAJT%2F1wCFAJX%2F1wCFAJb%2F1wCFAJf%2F1wCFAJj%2F1wCFAJr%2F1wCFAJ%2F%2FhQCFAMP%2F1wCFAMv%2FcQCFAM7%2FcQCGAAX%2FcQCGAAr%2FcQCGACb%2F1wCGACr%2F1wCGAC0BCgCGADL%2F1wCGADT%2F1wCGADf%2FcQCGADn%2FrgCGADr%2FrgCGADz%2FhQCGAIn%2F1wCGAJT%2F1wCGAJX%2F1wCGAJb%2F1wCGAJf%2F1wCGAJj%2F1wCGAJr%2F1wCGAJ%2F%2FhQCGAMP%2F1wCGAMv%2FcQCGAM7%2FcQCHAAX%2FcQCHAAr%2FcQCHACb%2F1wCHACr%2F1wCHAC0BCgCHADL%2F1wCHADT%2F1wCHADf%2FcQCHADn%2FrgCHADr%2FrgCHADz%2FhQCHAIn%2F1wCHAJT%2F1wCHAJX%2F1wCHAJb%2F1wCHAJf%2F1wCHAJj%2F1wCHAJr%2F1wCHAJ%2F%2FhQCHAMP%2F1wCHAMv%2FcQCHAM7%2FcQCIAC0AewCJACb%2F1wCJACr%2F1wCJADL%2F1wCJADT%2F1wCJAIn%2F1wCJAJT%2F1wCJAJX%2F1wCJAJb%2F1wCJAJf%2F1wCJAJj%2F1wCJAJr%2F1wCJAMP%2F1wCKAC0AewCLAC0AewCMAC0AewCNAC0AewCSAA%2F%2FrgCSABH%2FrgCSACT%2F1wCSADf%2FwwCSADn%2F7ACSADr%2F7ACSADv%2F1wCSADz%2F7ACSAD3%2F7ACSAIL%2F1wCSAIP%2F1wCSAIT%2F1wCSAIX%2F1wCSAIb%2F1wCSAIf%2F1wCSAJ%2F%2F7ACSAMz%2FrgCSAM%2F%2FrgCUAA%2F%2FrgCUABH%2FrgCUACT%2F1wCUADf%2FwwCUADn%2F7ACUADr%2F7ACUADv%2F1wCUADz%2F7ACUAD3%2F7ACUAIL%2F1wCUAIP%2F1wCUAIT%2F1wCUAIX%2F1wCUAIb%2F1wCUAIf%2F1wCUAJ%2F%2F7ACUAMz%2FrgCUAM%2F%2FrgCVAA%2F%2FrgCVABH%2FrgCVACT%2F1wCVADf%2FwwCVADn%2F7ACVADr%2F7ACVADv%2F1wCVADz%2F7ACVAD3%2F7ACVAIL%2F1wCVAIP%2F1wCVAIT%2F1wCVAIX%2F1wCVAIb%2F1wCVAIf%2F1wCVAJ%2F%2F7ACVAMz%2FrgCVAM%2F%2FrgCWAA%2F%2FrgCWABH%2FrgCWACT%2F1wCWADf%2FwwCWADn%2F7ACWADr%2F7ACWADv%2F1wCWADz%2F7ACWAD3%2F7ACWAIL%2F1wCWAIP%2F1wCWAIT%2F1wCWAIX%2F1wCWAIb%2F1wCWAIf%2F1wCWAJ%2F%2F7ACWAMz%2FrgCWAM%2F%2FrgCXAA%2F%2FrgCXABH%2FrgCXACT%2F1wCXADf%2FwwCXADn%2F7ACXADr%2F7ACXADv%2F1wCXADz%2F7ACXAD3%2F7ACXAIL%2F1wCXAIP%2F1wCXAIT%2F1wCXAIX%2F1wCXAIb%2F1wCXAIf%2F1wCXAJ%2F%2F7ACXAMz%2FrgCXAM%2F%2FrgCYAA%2F%2FrgCYABH%2FrgCYACT%2F1wCYADf%2FwwCYADn%2F7ACYADr%2F7ACYADv%2F1wCYADz%2F7ACYAD3%2F7ACYAIL%2F1wCYAIP%2F1wCYAIT%2F1wCYAIX%2F1wCYAIb%2F1wCYAIf%2F1wCYAJ%2F%2F7ACYAMz%2FrgCYAM%2F%2FrgCaAA%2F%2FrgCaABH%2FrgCaACT%2F1wCaADf%2FwwCaADn%2F7ACaADr%2F7ACaADv%2F1wCaADz%2F7ACaAD3%2F7ACaAIL%2F1wCaAIP%2F1wCaAIT%2F1wCaAIX%2F1wCaAIb%2F1wCaAIf%2F1wCaAJ%2F%2F7ACaAMz%2FrgCaAM%2F%2FrgCbAA%2F%2F1wCbABH%2F1wCbACT%2F7ACbAIL%2F7ACbAIP%2F7ACbAIT%2F7ACbAIX%2F7ACbAIb%2F7ACbAIf%2F7ACbAMz%2F1wCbAM%2F%2F1wCcAA%2F%2F1wCcABH%2F1wCcACT%2F7ACcAIL%2F7ACcAIP%2F7ACcAIT%2F7ACcAIX%2F7ACcAIb%2F7ACcAIf%2F7ACcAMz%2F1wCcAM%2F%2F1wCdAA%2F%2F1wCdABH%2F1wCdACT%2F7ACdAIL%2F7ACdAIP%2F7ACdAIT%2F7ACdAIX%2F7ACdAIb%2F7ACdAIf%2F7ACdAMz%2F1wCdAM%2F%2F1wCeAA%2F%2F1wCeABH%2F1wCeACT%2F7ACeAIL%2F7ACeAIP%2F7ACeAIT%2F7ACeAIX%2F7ACeAIb%2F7ACeAIf%2F7ACeAMz%2F1wCeAM%2F%2F1wCfAA%2F%2FhQCfABH%2FhQCfACIAKQCfACT%2FhQCfACb%2F1wCfACr%2F1wCfADL%2F1wCfADT%2F1wCfAET%2FmgCfAEb%2FmgCfAEf%2FmgCfAEj%2FmgCfAEr%2F1wCfAFD%2FwwCfAFH%2FwwCfAFL%2FmgCfAFP%2FwwCfAFT%2FmgCfAFX%2FwwCfAFb%2FrgCfAFj%2FwwCfAF3%2F1wCfAIL%2FhQCfAIP%2FhQCfAIT%2FhQCfAIX%2FhQCfAIb%2FhQCfAIf%2FhQCfAIn%2F1wCfAJT%2F1wCfAJX%2F1wCfAJb%2F1wCfAJf%2F1wCfAJj%2F1wCfAJr%2F1wCfAKL%2FmgCfAKP%2FmgCfAKT%2FmgCfAKX%2FmgCfAKb%2FmgCfAKf%2FmgCfAKj%2FmgCfAKn%2FmgCfAKr%2FmgCfAKv%2FmgCfAKz%2FmgCfAK3%2FmgCfALT%2FmgCfALX%2FmgCfALb%2FmgCfALf%2FmgCfALj%2FmgCfALr%2FmgCfALv%2FwwCfALz%2FwwCfAL3%2FwwCfAL7%2FwwCfAMP%2F1wCfAMT%2FmgCfAMz%2FhQCfAM%2F%2FhQCgAA%2F%2B9gCgABH%2B9gCgACT%2FmgCgADv%2F1wCgAD3%2F7ACgAIL%2FmgCgAIP%2FmgCgAIT%2FmgCgAIX%2FmgCgAIb%2FmgCgAIf%2FmgCgAMz%2B9gCgAM%2F%2B9gCiAAX%2F7ACiAAr%2F7ACiAMv%2F7ACiAM7%2F7ACjAAX%2F7ACjAAr%2F7ACjAMv%2F7ACjAM7%2F7ACkAAX%2F7ACkAAr%2F7ACkAMv%2F7ACkAM7%2F7AClAAX%2F7AClAAr%2F7AClAMv%2F7AClAM7%2F7ACmAAX%2F7ACmAAr%2F7ACmAMv%2F7ACmAM7%2F7ACnAAX%2F7ACnAAr%2F7ACnAMv%2F7ACnAM7%2F7ACqAAX%2F7ACqAAr%2F7ACqAFn%2F1wCqAFr%2F1wCqAFv%2F1wCqAFz%2F1wCqAF3%2F7ACqAL%2F%2F1wCqAMv%2F7ACqAM7%2F7ACrAAX%2F7ACrAAr%2F7ACrAFn%2F1wCrAFr%2F1wCrAFv%2F1wCrAFz%2F1wCrAF3%2F7ACrAL%2F%2F1wCrAMv%2F7ACrAM7%2F7ACsAAX%2F7ACsAAr%2F7ACsAFn%2F1wCsAFr%2F1wCsAFv%2F1wCsAFz%2F1wCsAF3%2F7ACsAL%2F%2F1wCsAMv%2F7ACsAM7%2F7ACtAAX%2F7ACtAAr%2F7ACtAFn%2F1wCtAFr%2F1wCtAFv%2F1wCtAFz%2F1wCtAF3%2F7ACtAL%2F%2F1wCtAMv%2F7ACtAM7%2F7ACyAAX%2F7ACyAAr%2F7ACyAFn%2F1wCyAFr%2F1wCyAFv%2F1wCyAFz%2F1wCyAF3%2F7ACyAL%2F%2F1wCyAMv%2F7ACyAM7%2F7AC0AAX%2F7AC0AAr%2F7AC0AFn%2F1wC0AFr%2F1wC0AFv%2F1wC0AFz%2F1wC0AF3%2F7AC0AL%2F%2F1wC0AMv%2F7AC0AM7%2F7AC1AAX%2F7AC1AAr%2F7AC1AFn%2F1wC1AFr%2F1wC1AFv%2F1wC1AFz%2F1wC1AF3%2F7AC1AL%2F%2F1wC1AMv%2F7AC1AM7%2F7AC2AAX%2F7AC2AAr%2F7AC2AFn%2F1wC2AFr%2F1wC2AFv%2F1wC2AFz%2F1wC2AF3%2F7AC2AL%2F%2F1wC2AMv%2F7AC2AM7%2F7AC4AAX%2F1wC4AAr%2F1wC4AMv%2F1wC4AM7%2F1wC6AAX%2F7AC6AAr%2F7AC6AFn%2F1wC6AFr%2F1wC6AFv%2F1wC6AFz%2F1wC6AF3%2F7AC6AL%2F%2F1wC6AMv%2F7AC6AM7%2F7AC%2FAAUAUgC%2FAAoAUgC%2FAA%2F%2FrgC%2FABH%2FrgC%2FACIAKQC%2FAMsAUgC%2FAMz%2FrgC%2FAM4AUgC%2FAM%2F%2FrgDAAAX%2F7ADAAAr%2F7ADAAFn%2F1wDAAFr%2F1wDAAFv%2F1wDAAFz%2F1wDAAF3%2F7ADAAL%2F%2F1wDAAMv%2F7ADAAM7%2F7ADBAAUAUgDBAAoAUgDBAA%2F%2FrgDBABH%2FrgDBACIAKQDBAMsAUgDBAMz%2FrgDBAM4AUgDBAM%2F%2FrgDDAC0AewDIADf%2FrgDJADf%2FrgDKACT%2FcQDKADcAKQDKADkAKQDKADoAKQDKADwAFADKAET%2FrgDKAEb%2FhQDKAEf%2FhQDKAEj%2FhQDKAEr%2FwwDKAFD%2FwwDKAFH%2FwwDKAFL%2FhQDKAFP%2FwwDKAFT%2FhQDKAFX%2FwwDKAFb%2FwwDKAFj%2FwwDKAIL%2FcQDKAIP%2FcQDKAIT%2FcQDKAIX%2FcQDKAIb%2FcQDKAIf%2FcQDKAJ8AFADKAKL%2FhQDKAKP%2FrgDKAKT%2FrgDKAKX%2FrgDKAKb%2FrgDKAKf%2FrgDKAKj%2FrgDKAKn%2FhQDKAKr%2FhQDKAKv%2FhQDKAKz%2FhQDKAK3%2FhQDKALT%2FhQDKALX%2FhQDKALb%2FhQDKALf%2FhQDKALj%2FhQDKALr%2FhQDKALv%2FwwDKALz%2FwwDKAL3%2FwwDKAL7%2FwwDKAMT%2FhQDLACT%2FcQDLADcAKQDLADkAKQDLADoAKQDLADwAFADLAET%2FrgDLAEb%2FhQDLAEf%2FhQDLAEj%2FhQDLAEr%2FwwDLAFD%2FwwDLAFH%2FwwDLAFL%2FhQDLAFP%2FwwDLAFT%2FhQDLAFX%2FwwDLAFb%2FwwDLAFj%2FwwDLAIL%2FcQDLAIP%2FcQDLAIT%2FcQDLAIX%2FcQDLAIb%2FcQDLAIf%2FcQDLAJ8AFADLAKL%2FhQDLAKP%2FrgDLAKT%2FrgDLAKX%2FrgDLAKb%2FrgDLAKf%2FrgDLAKj%2FrgDLAKn%2FhQDLAKr%2FhQDLAKv%2FhQDLAKz%2FhQDLAK3%2FhQDLALT%2FhQDLALX%2FhQDLALb%2FhQDLALf%2FhQDLALj%2FhQDLALr%2FhQDLALv%2FwwDLALz%2FwwDLAL3%2FwwDLAL7%2FwwDLAMT%2FhQDMACb%2FmgDMACr%2FmgDMADL%2FmgDMADT%2FmgDMADf%2FcQDMADj%2F1wDMADn%2FhQDMADr%2FhQDMADz%2FhQDMAIn%2FmgDMAJT%2FmgDMAJX%2FmgDMAJb%2FmgDMAJf%2FmgDMAJj%2FmgDMAJr%2FmgDMAJv%2F1wDMAJz%2F1wDMAJ3%2F1wDMAJ7%2F1wDMAJ%2F%2FhQDMAMP%2FmgDNACT%2FcQDNADcAKQDNADkAKQDNADoAKQDNADwAFADNAET%2FrgDNAEb%2FhQDNAEf%2FhQDNAEj%2FhQDNAEr%2FwwDNAFD%2FwwDNAFH%2FwwDNAFL%2FhQDNAFP%2FwwDNAFT%2FhQDNAFX%2FwwDNAFb%2FwwDNAFj%2FwwDNAIL%2FcQDNAIP%2FcQDNAIT%2FcQDNAIX%2FcQDNAIb%2FcQDNAIf%2FcQDNAJ8AFADNAKL%2FhQDNAKP%2FrgDNAKT%2FrgDNAKX%2FrgDNAKb%2FrgDNAKf%2FrgDNAKj%2FrgDNAKn%2FhQDNAKr%2FhQDNAKv%2FhQDNAKz%2FhQDNAK3%2FhQDNALT%2FhQDNALX%2FhQDNALb%2FhQDNALf%2FhQDNALj%2FhQDNALr%2FhQDNALv%2FwwDNALz%2FwwDNAL3%2FwwDNAL7%2FwwDNAMT%2FhQDPACb%2FmgDPACr%2FmgDPADL%2FmgDPADT%2FmgDPADf%2FcQDPADj%2F1wDPADn%2FhQDPADr%2FhQDPADz%2FhQDPAIn%2FmgDPAJT%2FmgDPAJX%2FmgDPAJb%2FmgDPAJf%2FmgDPAJj%2FmgDPAJr%2FmgDPAJv%2F1wDPAJz%2F1wDPAJ3%2F1wDPAJ7%2F1wDPAJ%2F%2FhQDPAMP%2FmgAAAB4BbgABAAAAAAAAADQAagABAAAAAAABABIAxQABAAAAAAACAAcA6AABAAAAAAADACcBQAABAAAAAAAEABIBjgABAAAAAAAFAAwBuwABAAAAAAAGABEB7AABAAAAAAAHAFICpAABAAAAAAAIABQDIQABAAAAAAALABwDcAABAAAAAAAMAC4D6wABAAAAAAANAC4EeAABAAAAAAAOACoE%2FQABAAAAAAAQAAkFPAABAAAAAAARAAgFWAADAAEECQAAAGgAAAADAAEECQABACQAnwADAAEECQACAA4A2AADAAEECQADAE4A8AADAAEECQAEACQBaAADAAEECQAFABgBoQADAAEECQAGACIByAADAAEECQAHAKQB%2FgADAAEECQAIACgC9wADAAEECQALADgDNgADAAEECQAMAFwDjQADAAEECQANAFwEGgADAAEECQAOAFQEpwADAAEECQAQABIFKAADAAEECQARABAFRgBEAGkAZwBpAHQAaQB6AGUAZAAgAGQAYQB0AGEAIABjAG8AcAB5AHIAaQBnAGgAdAAgAKkAIAAyADAAMQAxACwAIABHAG8AbwBnAGwAZQAgAEMAbwByAHAAbwByAGEAdABpAG8AbgAuAABEaWdpdGl6ZWQgZGF0YSBjb3B5cmlnaHQgqSAyMDExLCBHb29nbGUgQ29ycG9yYXRpb24uAABPAHAAZQBuACAAUwBhAG4AcwAgAFMAZQBtAGkAYgBvAGwAZAAAT3BlbiBTYW5zIFNlbWlib2xkAABSAGUAZwB1AGwAYQByAABSZWd1bGFyAABBAHMAYwBlAG4AZABlAHIAIAAtACAATwBwAGUAbgAgAFMAYQBuAHMAIABTAGUAbQBpAGIAbwBsAGQAIABCAHUAaQBsAGQAIAAxADAAMAAAQXNjZW5kZXIgLSBPcGVuIFNhbnMgU2VtaWJvbGQgQnVpbGQgMTAwAABPAHAAZQBuACAAUwBhAG4AcwAgAFMAZQBtAGkAYgBvAGwAZAAAT3BlbiBTYW5zIFNlbWlib2xkAABWAGUAcgBzAGkAbwBuACAAMQAuADEAMAAAVmVyc2lvbiAxLjEwAABPAHAAZQBuAFMAYQBuAHMALQBTAGUAbQBpAGIAbwBsAGQAAE9wZW5TYW5zLVNlbWlib2xkAABPAHAAZQBuACAAUwBhAG4AcwAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAEcAbwBvAGcAbABlACAAYQBuAGQAIABtAGEAeQAgAGIAZQAgAHIAZQBnAGkAcwB0AGUAcgBlAGQAIABpAG4AIABjAGUAcgB0AGEAaQBuACAAagB1AHIAaQBzAGQAaQBjAHQAaQBvAG4AcwAuAABPcGVuIFNhbnMgaXMgYSB0cmFkZW1hcmsgb2YgR29vZ2xlIGFuZCBtYXkgYmUgcmVnaXN0ZXJlZCBpbiBjZXJ0YWluIGp1cmlzZGljdGlvbnMuAABBAHMAYwBlAG4AZABlAHIAIABDAG8AcgBwAG8AcgBhAHQAaQBvAG4AAEFzY2VuZGVyIENvcnBvcmF0aW9uAABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBzAGMAZQBuAGQAZQByAGMAbwByAHAALgBjAG8AbQAvAABodHRwOi8vd3d3LmFzY2VuZGVyY29ycC5jb20vAABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBzAGMAZQBuAGQAZQByAGMAbwByAHAALgBjAG8AbQAvAHQAeQBwAGUAZABlAHMAaQBnAG4AZQByAHMALgBoAHQAbQBsAABodHRwOi8vd3d3LmFzY2VuZGVyY29ycC5jb20vdHlwZWRlc2lnbmVycy5odG1sAABMAGkAYwBlAG4AcwBlAGQAIAB1AG4AZABlAHIAIAB0AGgAZQAgAEEAcABhAGMAaABlACAATABpAGMAZQBuAHMAZQAsACAAVgBlAHIAcwBpAG8AbgAgADIALgAwAABMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wAABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBwAGEAYwBoAGUALgBvAHIAZwAvAGwAaQBjAGUAbgBzAGUAcwAvAEwASQBDAEUATgBTAEUALQAyAC4AMAAAaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wAABPAHAAZQBuACAAUwBhAG4AcwAAT3BlbiBTYW5zAABTAGUAbQBpAGIAbwBsAGQAAFNlbWlib2xkAAAAAgAAAAAAAP9mAGYAAAAAAAAAAAAAAAAAAAAAAAAAAADWAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA%2BAD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQCsAKMAhACFAL0AlgDoAIYAjgCLAJ0AqQCkAQIAigEDAIMAkwDyAPMAjQCXAIgAwwDeAPEAngCqAPUA9AD2AKIArQDJAMcArgBiAGMAkABkAMsAZQDIAMoAzwDMAM0AzgDpAGYA0wDQANEArwBnAPAAkQDWANQA1QBoAOsA7QCJAGoAaQBrAG0AbABuAKAAbwBxAHAAcgBzAHUAdAB2AHcA6gB4AHoAeQB7AH0AfAC4AKEAfwB%2BAIAAgQDsAO4AugDXALAAsQDYAN0A2QCyALMAtgC3AMQAtAC1AMUAhwC%2BAL8AvAEEAQUHdW5pMDBBRAlvdmVyc2NvcmUMZm91cnN1cGVyaW9yBEV1cm8AAAABAAIACAAK%2F%2F8ADwAAAAEAAAAAyYlvMQAAAADJTOp9AAAAAMnt2GI%3D%29%20format%28%27truetype%27%29%3B%0A%7D%0A%40font%2Dface%20%7B%0Afont%2Dfamily%3A%20%27Open%20Sans%27%3B%0Afont%2Dstyle%3A%20italic%3B%0Afont%2Dweight%3A%20400%3B%0Asrc%3A%20url%28data%3Aapplication%2Fx%2Dfont%2Dtruetype%3Bbase64%2CAAEAAAAQAQAABAAARkZUTVzakEwAAIZUAAAAHE9TLzKhTLaOAAABiAAAAGBjbWFwjOjcmQAABUAAAAGyY3Z0IA7AFxkAAA%2B0AAAAoGZwZ21%2BYbYRAAAG9AAAB7RnYXNwABUAIwAAhkQAAAAQZ2x5Zr%2FLVRcAABIEAABJAGhlYWT4qxTOAAABDAAAADZoaGVhDj8E%2FgAAAUQAAAAkaG10eGTdQjIAAAHoAAADWGtlcm4Mlg8JAABbBAAAIwRsb2NhW7BKSgAAEFQAAAGubWF4cAJdAPoAAAFoAAAAIG5hbWVqCPoKAAB%2BCAAABkVwb3N0gmzp1QAAhFAAAAHycHJlcFSBlpMAAA6oAAABCQABAAAAARmacz8BIV8PPPUAHwgAAAAAAMnt2FoAAAAAye3YWv4Z%2FhAHgQdzAAIACAACAAAAAAAAAAEAAAiN%2FagAAAgA%2Fhn%2BHAeBAGQAFQAAAAAAAAAAAAAAAADWAAEAAADWAEQABQA5AAQAAgAQAC8AXAAAAQ4ASwADAAEAAwQPAZAABQAIBZoFMwAAAR8FmgUzAAAD0QBmAgAAAAILBgYDBQQCAgTgAALvQAAgWwAAACgAAAAAMUFTQwABACAgrAYf%2FhQAhAiNAlggAAGfAAAAAARIBbYAAAAgAAEIAAAAAAAAAAQUAAACFAAAAhIAKwMXAOEFKwA%2FBGgASAZYAKgFXABCAbwA4QJIAFICSP9gBGoA1wRoAH8B7P%2BcAn8ANwIGACsCzf%2BiBGgAeQRoAS8EaAAMBGgALwRoABAEaABQBGgAhQRoAK4EaABgBGgAYgIGACsCBv%2BcBGgAeQRoAH8EaAB5A2oAngbHAG8Ecf%2BLBMkAVgSuAJYFVABWBBcAVgPHAFYFagCWBW0AVgIvAFYCI%2F7BBHUAVgPLAFYGsgBUBZ4AVAXDAJYEhwBWBcMAlgSNAFYEBAAnA%2FwAugVoAKQEYgC8BtEA3wQn%2F5gEBgC8BD%2F%2F8AJK%2F%2FACzQDdAkr%2FagQjADUDJ%2F9EBG8CPwSFAGIEngA7A5oAYgSeAGID8gBiAoH%2FGwQC%2F4EEngA7AggAOwII%2Fv4D5wA5AggAOQb6ADsEngA7BH0AYgSe%2F9UEngBiAysAOwNtAAgCmABaBJ4AcQOyAGIFvAB1A9P%2FtgOy%2FzsDjf%2FjAssAGwRoAh0Cy%2F%2B2BGgAcwIUAAACEv%2FyBGgA4QRo%2F%2BkEaACoBGgAfwRoAh0D4wA7BG8ByQaoAIsCrgCqA74AWARoAH8CfwA3BqgAiwMOAOMDbQDXBGgAfwLNAGACzQB3BG8CFASq%2F9UFPQDHAgYAqgGk%2F1YCzQECArAAqAO%2BABcF7gB7Be4AQgYdAFcDav%2F8BHH%2FiwRx%2F4sEcf%2BLBHH%2FiwRx%2F4sEcf%2BLBon%2FiQSuAJYEFwBWBBcAVgQXAFYEFwBWAi8AVgIvAFYCLwBWAi8AVgVUAEgFngBUBcMAlgXDAJYFwwCWBcMAlgXDAJYEaACoBcMAdwVoAKQFaACkBWgApAVoAKQEBgC8BIcAVgSe%2FwAEhQBiBIUAYgSFAGIEhQBiBIUAYgSFAGIGhQBiA5oAYgPyAGID8gBiA%2FIAYgPyAGICCAA7AggAOwIIADsCCAA7BI0AWgSeADsEfQBiBH0AYgR9AGIEfQBiBH0AYgRoAH8EfQA9BJ4AcQSeAHEEngBxBJ4AcQOy%2FzsEnv%2FVA7L%2FOwIIADsG1wCWBukAYgRvAY8EngInBG8BUAPXADcHrgA3AVwAewFcAH0B7P%2BcAs8AewLPAH0DWv%2BcAwYAxwJEAFgCRAAXAQz%2BGQLNAFwEaAA%2FAAAAAwAAAAMAAAAcAAEAAAAAAKwAAwABAAAAHAAEAJAAAAAgACAABAAAAH4A%2FwExAVMCxgLaAtwgFCAaIB4gIiA6IEQgdCCs%2F%2F8AAAAgAKABMQFSAsYC2gLcIBMgGCAcICIgOSBEIHQgrP%2F%2F%2F%2BP%2Fwv%2BR%2F3H9%2F%2F3s%2FevgteCy4LHgruCY4I%2FgYOApAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQYAAAEAAAAAAAAAAQIAAAACAAAAAAAAAAAAAAAAAAAAAQAAAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0%2BP0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGEAhoeJi5OYnqOipKalp6mrqqytr66wsbO1tLa4t7y7vb4AcmRladB4oXBrAHZqAIiaAHMAAGd3AAAAAABsfACouoFjbgAAAABtfQBigoWXw8TIyc3Oysu5AMEA09XR0gAAAHnMzwCEjIONio%2BQkY6VlgCUnJ2bwsXHcQAAxnoAAAAAAEBHW1pZWFVUU1JRUE9OTUxLSklIR0ZFRENCQUA%2FPj08Ozo5ODc2NTEwLy4tLCgnJiUkIyIhHxgUERAPDg0LCgkIBwYFBAMCAQAsILABYEWwAyUgEUZhI0UjYUgtLCBFGGhELSxFI0ZgsCBhILBGYLAEJiNISC0sRSNGI2GwIGAgsCZhsCBhsAQmI0hILSxFI0ZgsEBhILBmYLAEJiNISC0sRSNGI2GwQGAgsCZhsEBhsAQmI0hILSwBECA8ADwtLCBFIyCwzUQjILgBWlFYIyCwjUQjWSCw7VFYIyCwTUQjWSCwBCZRWCMgsA1EI1khIS0sICBFGGhEILABYCBFsEZ2aIpFYEQtLAGxCwpDI0NlCi0sALEKC0MjQwstLACwKCNwsQEoPgGwKCNwsQIoRTqxAgAIDS0sIEWwAyVFYWSwUFFYRUQbISFZLSxJsA4jRC0sIEWwAENgRC0sAbAGQ7AHQ2UKLSwgabBAYbAAiyCxLMCKjLgQAGJgKwxkI2RhXFiwA2FZLSyKA0WKioewESuwKSNEsCl65BgtLEVlsCwjREWwKyNELSxLUlhFRBshIVktLEtRWEVEGyEhWS0sAbAFJRAjIIr1ALABYCPt7C0sAbAFJRAjIIr1ALABYSPt7C0sAbAGJRD1AO3sLSywAkOwAVJYISEhISEbRiNGYIqKRiMgRopgimG4%2F4BiIyAQI4qxDAyKcEVgILAAUFiwAWG4%2F7qLG7BGjFmwEGBoATpZLSwgRbADJUZSS7ATUVtYsAIlRiBoYbADJbADJT8jITgbIRFZLSwgRbADJUZQWLACJUYgaGGwAyWwAyU%2FIyE4GyERWS0sALAHQ7AGQwstLCEhDGQjZIu4QABiLSwhsIBRWAxkI2SLuCAAYhuyAEAvK1mwAmAtLCGwwFFYDGQjZIu4FVViG7IAgC8rWbACYC0sDGQjZIu4QABiYCMhLSxLU1iKsAQlSWQjRWmwQIthsIBisCBharAOI0QjELAO9hshI4oSESA5L1ktLEtTWCCwAyVJZGkgsAUmsAYlSWQjYbCAYrAgYWqwDiNEsAQmELAO9ooQsA4jRLAO9rAOI0SwDu0birAEJhESIDkjIDkvL1ktLEUjRWAjRWAjRWAjdmgYsIBiIC0ssEgrLSwgRbAAVFiwQEQgRbBAYUQbISFZLSxFsTAvRSNFYWCwAWBpRC0sS1FYsC8jcLAUI0IbISFZLSxLUVggsAMlRWlTWEQbISFZGyEhWS0sRbAUQ7AAYGOwAWBpRC0ssC9FRC0sRSMgRYpgRC0sRSNFYEQtLEsjUVi5ADP%2F4LE0IBuzMwA0AFlERC0ssBZDWLADJkWKWGRmsB9gG2SwIGBmIFgbIbBAWbABYVkjWGVZsCkjRCMQsCngGyEhISEhWS0ssAJDVFhLUyNLUVpYOBshIVkbISEhIVktLLAWQ1iwBCVFZLAgYGYgWBshsEBZsAFhI1gbZVmwKSNEsAUlsAglCCBYAhsDWbAEJRCwBSUgRrAEJSNCPLAEJbAHJQiwByUQsAYlIEawBCWwAWAjQjwgWAEbAFmwBCUQsAUlsCngsCkgRWVEsAclELAGJbAp4LAFJbAIJQggWAIbA1mwBSWwAyVDSLAEJbAHJQiwBiWwAyWwAWBDSBshWSEhISEhISEtLAKwBCUgIEawBCUjQrAFJQiwAyVFSCEhISEtLAKwAyUgsAQlCLACJUNIISEhLSxFIyBFGCCwAFAgWCNlI1kjaCCwQFBYIbBAWSNYZVmKYEQtLEtTI0tRWlggRYpgRBshIVktLEtUWCBFimBEGyEhWS0sS1MjS1FaWDgbISFZLSywACFLVFg4GyEhWS0ssAJDVFiwRisbISEhIVktLLACQ1RYsEcrGyEhIVktLLACQ1RYsEgrGyEhISFZLSywAkNUWLBJKxshISFZLSwgiggjS1OKS1FaWCM4GyEhWS0sALACJUmwAFNYILBAOBEbIVktLAFGI0ZgI0ZhIyAQIEaKYbj%2FgGKKsUBAinBFYGg6LSwgiiNJZIojU1g8GyFZLSxLUlh9G3pZLSywEgBLAUtUQi0ssQIAQrEjAYhRsUABiFNaWLkQAAAgiFRYsgIBAkNgQlmxJAGIUVi5IAAAQIhUWLICAgJDYEKxJAGIVFiyAiACQ2BCAEsBS1JYsgIIAkNgQlkbuUAAAICIVFiyAgQCQ2BCWblAAACAY7gBAIhUWLICCAJDYEJZuUAAAQBjuAIAiFRYsgIQAkNgQlmxJgGIUVi5QAACAGO4BACIVFiyAkACQ2BCWblAAAQAY7gIAIhUWLICgAJDYEJZWVlZWVmxAAJDVFhACgVACEAJQAwCDQIbsQECQ1RYsgVACLoBAAAJAQCzDAENARuxgAJDUliyBUAIuAGAsQlAG7IFQAi6AYAACQFAWblAAACAiFW5QAACAGO4BACIVVpYswwADQEbswwADQFZWVlCQkJCQi0sRRhoI0tRWCMgRSBksEBQWHxZaIpgWUQtLLAAFrACJbACJQGwASM%2BALACIz6xAQIGDLAKI2VCsAsjQgGwASM%2FALACIz%2BxAQIGDLAGI2VCsAcjQrABFgEtLLCAsAJDULABsAJDVFtYISMQsCAayRuKEO1ZLSywWSstLIoQ5S1AmQkhSCBVIAEeVR9IA1UfHgEPHj8erx4DTUsmH0xLMx9LRiUfJjQQVSUzJFUZE%2F8fBwT%2FHwYD%2Fx9KSTMfSUYlHxMzElUFAQNVBDMDVR8DAQ8DPwOvAwNHRhkf60YBIyIzHxwzG1UWMxVVEQEPVRAzD1UPD08PAh8Pzw8CDw%2F%2FDwIGAgEAVQEzAFVvAH8ArwDvAAQQAAGAFgEFAbgBkLFUUysrS7gH%2F1JLsAlQW7ABiLAlU7ABiLBAUVqwBoiwAFVaW1ixAQGOWYWNjQBCHUuwMlNYsCAdWUuwZFNYsBAdsRYAQllzcysrXnN0dSsrKysrdCtzdCsrKysrKysrKysrKytzdCsrKxheAAAABhQAFwBOBbYAFwB1BbYFzQAAAAAAAAAAAAAAAAAABEgAFACRAAD%2F7AAAAAD%2F7AAAAAD%2F7AAA%2FhT%2F7AAABbYAF%2FyU%2F%2Bv%2Bhf5e%2Fqj%2F6wAW%2FrwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAiwCBAN0AmACPAI4AmQCIAIEBDwAAAAAAAAAAAAAALgBMAKQBDAF6AeYB%2BgIcAjwCZgKGApwCrgLKAuADHAM%2BA3oDzAQIBE4EpgTEBSgFfgWuBdoF%2FAYaBj4GjgcKBzoHiAfAB%2FYIJAhKCJIIugjOCPIJHAk2CW4JmgnaCg4KWgqYCuQLBAs2C1oLmgvCC%2BIMCgwmDDoMVgxyDIQMnAzmDTINZg2yDfwORg7ODw4PMA9mD5YPqBAAEDoQdhDCERARQBGIEcgSABIiEmYSjhLGEu4TOBNKE5QTxhPGE%2FAUNhSAFNAVGhU6FaQVzhY%2BFnwWshbIFtAXQBdSF4AXsBfiGCIYPBh6GKQYrhjSGPIZIBlUGWoZgBmWGeQZ9hoIGhoaLBpAGloapBqwGsIa1BrmGvobDBseGzAbRBuQG6IbtBvGG9gb6hv%2BHCochhyYHKocvBzQHOIdHh2QHaIdtB3GHdgd6h38HoAejB6eHrAewh7UHuYe%2BB8KHx4fgh%2BUH6YfuB%2FKH9wf7iAgIH4gkCCiILQgxiDYISghOiFMIaQiGCI8Im4inCKuIsAi2CLyIwgjLiNWI3ojlCOyI9Ij6CQcJIAAAAACACv%2F4wIrBbYABAAQABhACwICDgQDDghPWQ4WAD8rABg%2FEjkvMTAJASMSEwE0NjMyFhUUBiMiJgIr%2Fu5tMX%2F%2Bz09ELThOQjE3Bbb73QEzAvD6mExYNzZEXjgAAAIA4QOmA0IFtgADAAcADbQGAgcDAwA%2FM80yMTABAyMTIQMjEwHlmWtIAhmaa0gFtv3wAhD98AIQAAAAAAIAPwAABTsFtgAbAB8AM0AYAB8QEBkVERETBAgMDAEcDQ0KFxMDBgoSAD8zPzMSOS8zMzMRMzMROS8zMzMRMzMxMAEDIQchAyMTIQMjEyE3IRMhNyETMwMhEzMDIQcBIRMhBAxiAR0N%2Fst9i4H%2B0X%2BFef77DQEcZf7rDQEte4t9ATF%2FhX0BCAz8xQEvYP7RA4P%2BrIH%2BUgGu%2FlIBroEBVH8BtP5MAbT%2BTH%2F%2BrAFUAAAAAwBI%2F4kELwYQAB4AJQAsADpAHx8MAykiLBwNJQYGEwYMS1kbJhMmS1kWEwYTBhMVBRUALy8SOTkvLxEzKxEAMysREgAXOTIRMzEwARQGDwEjNyYnNR4BMxMuATU0Nj8BMwcWFwcmJwMeAQE%2BATU0JicDDgEVFBYXA67hxTGFMcN4UrtJYot92L8nhSeffD95f16Vf%2F53a35CUQhsdkVJAeyiyhbh3w46miktAcQxlXKfwBGwsgxAhz8J%2Fkg3jP6iDXxcNlQgAkoLdGI1WRoAAAUAqP%2FsBfwFywADAA8AHgArADoAJUASBBwcAyUxMQIDBgIYHzgHChUZAD8zPzM%2FPxI5LzMROS8zMTAJASMBAyIOARUUMzI2EjU0FxQCDgEjIiY1NBI2MzIWASIOARUUMzI%2BAjU0FxQCDgEjIiY1NBI2MzIWBbz7w5gEPiFDaT9qQWhFiz9ljVZuemWscnR4%2FCNCakBrNFQ%2FJoxAZYxXbXplrHJ0eAW2%2BkoFtv1Ogfh0rYIBC2eml2v%2B%2FrFjlZGmATGYjwJcfvl3rE%2BVyUemmGz%2B%2FbBilpGmATGYkAADAEL%2F7AUfBc0ACwAWADUAMEAbKioaBRAnBA8oMC0EHy8SHwBKWR8EMwxKWTMTAD8rABg%2FKwAYPxIXORc5OS8xMAEiBhUUFz4CNTQmATI2NwEOAhUUFiU0NjcmNTQ2MzIWFRQOAgcBNjczBgcTIycOASMiJgLhaXRSi2g%2BVf6lV6Jy%2Fs6AcDuF%2Fti01WfUr5WvQW6RUQEWf0ioZbbLyXV43ImoygVEeG54c0dOXDpNWfszQlsBsUNidUlqgd%2BU22alkKTJnoVOdmJSKv57brnssP7ypmRWwAABAOEDpgHlBbYAAwAJsgIDAwA%2FzTEwAQMjEwHlmWtIBbb98AIQAAAAAQBS%2FrwC5wW2AAsACrMDAwonAD8%2FMTATEBIBMwoBERATIwJS8AEInfb7coOTARABUwJAARP%2B8v2o%2FsL%2Brf79AQoAAAAB%2F2D%2BvAH0BbYACgAKswgDBCcAPz8xMAEQAgEjABEQAzMSAfTz%2FvucAfBxg5IDYP6r%2Fb%2F%2B8gInAn0BVQEB%2FvMAAQDXAmoEgQYbAA4AC7MGBg4AAD8zLzEwAQMlByUTBwMBJwElNwUTA1Z7AaYI%2Fne0pnH%2B%2FnQBNf6LNwFzKQX4%2FoESnS%2F%2BgTQBlv6oeQEcbZq5AZAAAQB%2FAQgEFwSgAAsADrQJAQEGAgAvMzMRMzEwASE1IREzESEVIREjAgT%2BewGFjQGG%2FnqNAouOAYf%2BeY7%2BfQAAAAH%2FnP74ASsA7gAGAAixBAAAL80xMCUXBgcjEjcBIwhxnYF%2BTu4X6%2FQBHtgAAQA3AdUCOQJzAAMACLEAAQAvMzEwEzchBzcjAd8iAdWengAAAQAr%2F%2BMBIwDyAAsADLUJA09ZCRYAPysxMDc0NjMyFhUUBiMiJitRRys1UEQuNkpNWzQ1R180AAAB%2F6IAAAN9BbYAAwAKswMDAhIAPz8xMAkBIwEDffzTrgMtBbb6SgW2AAAAAAIAef%2FsBEQFzQAMABkAF0AMCw1LWQsHBBRLWQQZAD8rABg%2FKzEwARACBCMiAjUQEiQzIAUiBgIVFBYzMjYSNRAERJ3%2B8bOwvKQBDa0Bbf6JccB3ZG9zvHED9v7Z%2Fhj7AP%2FyAQ4B6fmQ5%2F5h2Ky45AGs7wFDAAAAAAEBLwAAA4UFtgAKABC2BAcBCQYBGAA%2FPxI5OTEwISMTEjcGDwEnATMCTKzEOx0yWbJQAcGVA5EBBWI1Om5%2FARwAAAAAAQAMAAAENwXLABsAHEAOAhoRC0tZEQcBGkxZARgAPysAGD8rEQAzMTApATcBPgM1NCYjIgYHJzYzMhYVFA4BBwEVIQOP%2FH0fAdFmlWEveGdNk1lSv96wzU%2B3y%2F6gAqaTAaRdjX17S2N0OURzmrGbb7rQsf7NCAAAAQAv%2F%2BwEMQXLACgALUAXAxgZGRhLWRkZCyYmIEtZJgcLEUtZCxkAPysAGD8rERIAORgvKxESADkxMAEUBgcVHgEVFA4BIyInNR4BMzI2NTQmKwE3MzI2NTQmIyIGByc2MzIWBDHKs3yOfO6k0q9e0lWitJ6Ngx%2BLpdp0Y1CaYlDD5bPEBIec2SAJF6d9hctyT6QxNZ%2BKg4eProxcbDZCdpCuAAACABAAAARMBb4ACgATACVAEgYTDwcBBRMFTFkJExMDBwYDGAA%2FPxI5LzMrEQAzETMRMzEwASMDIxMhNwEzAzMhNhITIw4BBwEEK%2BlIpEr9cB0DQsTP6P51LkBUCBFjF%2F3rAU7%2BsgFOngPS%2FCncATIBJB2HHf2PAAABAFD%2F7ARIBbYAHAAtQBcbBwAAEk1ZAAAHFxcaTFkXBgcMS1kHGQA%2FKwAYPysREgA5GC8rERIAOTEwATIWFRQGBCMiJzUWMzI2NTQmIyIGBycTIQchAzYCVrbXkv76scGJpKq%2F1pODMGJaSsUCnCH99n9XA33RsqH0eU%2BkZsCsfpMNGDkCrJn%2BSRcAAAIAhf%2FsBFoFywAaACgALUAXDRgFESFNWRERGAUFCktZBQcYG0tZGBkAPysAGD8rERIAORgvKxESADkxMBM0GgEkMzIXByYjIgADMz4BMzIWFRQCBiMiJgUyPgE1NCMiDgIVFBaFec4BHrhvSSNEZtT%2B30QIO69qmrSF5JO2xwGPXpNR3UJ8YDB5AajRAZwBI5MXkRb%2B1v7aT17FrKH%2B9Y3mWWy%2Bcfg5X3JiiZ4AAAAAAQCuAAAEeQW2AAYAFkAKBQIAGAMCTFkDBgA%2FKwAYPxEzMTAzASE3IQcBrgMA%2FTEfA3sb%2FQQFIZWL%2BtUAAwBg%2F%2BwEVgXNABkAJQAxADJAGxMGKSMEDQAsGktZLCwNAAAmS1kABw0gS1kNGQA%2FKwAYPysREgA5GC8rERIAFzkxMAEyFhUUBgceARUUDgEjIiY1NDY3LgE1ND4BAw4BFRQWMzI2NTQmEyIGFRQWFz4BNTQmAuWuw5y8f2p44Zi%2B2L7JX1Ftxgq5mYpwi6ZoCHKITlihhnMFza2VgcBQTq5zer9mxamU2ExFl2Bvr2H87zynd2t%2BlHpjlgK9g25SfDY8j2ZaagACAGL%2F7AQrBcsAGgAoAC1AFw4FGCERTVkhIQUYGBtLWRgHBQpLWQUZAD8rABg%2FKxESADkYLysREgA5MTABFAoBBCMiJzUWMzISEyMOASMiJjU0EjYzMhYlIgYVFBYzMj4CNTQmBCtwt%2F78rIhqhnDK%2BkAKM6NjqbiB55C0x%2F5%2FlrZtbEyAWSl2BArC%2Flf%2B2Ywini8BGgEsS1fFvpkA%2F4%2FlV%2BKxfIQ5anpag5kAAgAr%2F%2BMBwwRkAAsAFgAXQAwPFE9ZDxAJA09ZCRYAPysAGD8rMTA3NDYzMhYVFAYjIiYTNDYzMhUUBiMiJitRRys1UEQuNqBQR2FTQS42Sk1bNDVHXzQDpU1baEldNQAAAv%2Bc%2FvgBwwRkAAYAEQAVQAkEQAYKD09ZChAAPysAGC8azjEwJRcGByMSNxM0NjMyFRQGIyImASMIcZ2Bfk5jUEdhU0EuNu4X6%2FQBHtgCzk1baEldNQAAAAEAeQDyBBAE2QAGABdACQECBQUGBAMAAwAvLxEzMjkRMzMxMCUBNQEVCQEEEPxpA5f9FQLr8gGmYgHflf6N%2FrgAAAAAAgB%2FAbwEFwPlAAMABwAStwUABAEEBAABAC8zMy9dMzEwEzUhFQE1IRV%2FA5j8aAOYA1qLi%2F5ijo4AAAAAAQB5APIEEATZAAYAG0ALBQQBAQMABgIDBgMALy8RMxEzEjkRMzMxMBMJATUBFQF5Aun9FwOX%2FGkBiQFIAXOV%2FiFi%2FloAAAAAAgCe%2F%2BMDmgXLABoAJgAlQBIHEQAAJBEkHk9ZJBYRCklZEQQAPysAGD8rERIAORgvEjkxMAE%2BATc%2BAjU0JiMiBgcnPgEzMhYVFAYHDgEHAzQ2MzIWFRQGIyImAQQWZXOAUC5nYFGUQj1cyFKnuIOgfVgX7VBHLDVTQS42AZOCp1tkWGQ%2BXWUzH4EzMqiae894W3Fo%2FrdNWzQ1SV00AAAAAAIAb%2F9GBo8FtAA1AEEAKkATJisHCTYQGD09BAkQCRAJKx8yAwA%2FM8Q5OS8vETMzETMRMxI5ETMxMAEUAgYjIicjBiMiJjU0PgEzMhYXDgEXFDMyPgE1NAAjIgQCFRAAITI3FQYjIAAREBIkITIEEgUiDgEVFBYzMhsBJgaPbsh6xRAIb7Rzg4jxjEF9WEBEA2ZOf0r%2FAPLk%2FpvFAR8BCsXf2%2BD%2Bxv6X%2FQGyAQ2%2FARSR%2FUpeoFxCQbtVRj8DVLP%2B3qS4uJeGnf6QGCTy%2FC51hul%2F7wEA1v6H5P7y%2FtdWf1oBcQFBAQUBwfaX%2FuxfbsRyXVMBOwECFwAAAv%2BLAAAEEAW2AAcADgAdQA4LBA4BSVkODgMEAwcDEgA%2FMz8SOS8rEQAzMTABIQMjATMTIwsBJicOAQMDLf4Q9b0DH664qksjGAUlV84B0f4vBbb6SgJtASuzq1iu%2Fn0AAwBWAAAEsgW2AA4AFwAgAC1AFwUgDw8gSlkPDw0ODhdKWQ4DDRhKWQ0SAD8rABg%2FKxESADkYLysREgA5MTABIBEUBgcVHgEVFAQjIQETMzI2NTQmKwEDITI2NTQmKwEDAgGwrp5ze%2F7Q%2F%2F4xATUn%2BJy6hY%2FT%2BgEKtcKVjOwFtv6wjcIdCiCdbtTxBbb9jpJ%2BaGf7bqGTdHsAAAAAAQCW%2F%2BwFCgXLABgAF0AMFABJWRQEDQdJWQ0TAD8rABg%2FKzEwASIEAhUUFjMyNxUOASMiABEQEiQzMhcHJgOurv7tocOri7dWnG7y%2FuzTAWThxZdFigUzwv6J3bvfOZUfHAErAQIBBQHB7FCNRQAAAAIAVgAABRQFtgAJABMAF0AMBhJKWQYDBRNKWQUSAD8rABg%2FKzEwARACBCkBASEgAAEyJBI1NCYrAQMFFNL%2Bev76%2FqABNQFWARQBH%2FytygEyo87HsvoDbf77%2FnDYBbb%2B1fwItwFO19fd%2B3AAAAEAVgAABGoFtgALACZAFAYJSVkGBgECAgVJWQIDAQpJWQESAD8rABg%2FKxESADkYLysxMCkBASEHIQMhByEDIQM1%2FSEBNQLfIP3KYgIPHf3vcgI1BbaZ%2FiuY%2FegAAQBWAAAEagW2AAkAHUAPBglJWQYGAgESAgVJWQIDAD8rABg%2FEjkvKzEwISMBIQchAyEHIQECrAE1At8e%2FchuAhAg%2Fe8Ftpn965kAAAEAlv%2FsBU4FywAdACZAFAAdSVkAAAQLCxJJWQsEBBlJWQQTAD8rABg%2FKxESADkYLysxMAEhAwYjIAAREBIkMzIWFwcuASMiBAIVFBYzMjcTIQM1Acua2Mv%2B%2BP7bywFo23XNaEJNsWqp%2FuuazbiaamD%2B3wL%2B%2FTlLASEBAwENAbn1KCyYIjLL%2FpThvtonAbwAAAEAVgAABXMFtgALABpADQgDSVkICAUKBgMBBRIAPzM%2FMxI5LysxMCEjEyEDIwEzAyETMwQ9p4%2F9bJGqATWqgwKUhagCsP1QBbb9kgJuAAAAAQBWAAACNQW2AAMACrMBAwASAD8%2FMTAzATMBVgE3qP7JBbb6SgAAAAH%2Bwf5%2FAjUFtgAMABG3CQMABUlZACIAPysAGD8xMAMiJzcWMzI2NwEzAQKmaTAGRUxkgxkBM6r%2By0%2F%2BfxmTFH14Bar6RP6FAAEAVgAABSsFtgANABVACQoEBwsIAwEHEgA%2FMz8zEjk5MTAhIyYCJwcDIwEzAwEzAQQKukiVSK59qgE1qpcCvNH9gbUBZbeD%2FbIFtv06Asb9gwAAAAEAVgAAA1YFtgAFABG3AQMAA0lZABIAPysAGD8xMDMBMwEhB1YBNar%2B7AI1IQW2%2BuSaAAABAFQAAAa4BbYAFAAZQAwKAhMDBwwIAwAPBxIAPzMzPzMSFzkxMCEDIw4BBwMjATMTMwEhASMaATcjAQKkpggHKxC%2BogE19JUJApMBCv7Rrn6GGwb9MwUQSPtK%2FH0FtvtMBLT6SgJOAndN%2Bu4AAAAAAQBUAAAFqAW2AA8AFUAJAwsHDggDAQcSAD8zPzMSOTkxMCEjASMGBwMjATMBMzY3EzMEc7X%2BNAYgKqyiATW0AcsGHiqupATH3cX82wW2%2BzzgtQMvAAAAAAIAlv%2FsBYMFzQANABsAF0AMCw5JWQsEBBVJWQQTAD8rABg%2FKzEwARACBCMgABEQEiQzMgAlIgYCFRQWMzI2EjU0JgWDsP641%2F8A%2FuLAAU%2FS9AEY%2Feed%2BInEqJjxjLwDi%2F7z%2FlfpASsBDgEIAbTs%2Fsycyv6Y2sffwwFs3cffAAAAAgBWAAAEhwW2AAoAEwAdQA8LBEpZCwsHBhIHE0pZBwMAPysAGD8SOS8rMTABFAAhIwMjASEyFgEzMjY1NCYrAQSH%2Frj%2Bw4d7qgE1AUrW3P0Thdjgi5CjBD34%2Fvr9wQW2vf3YtrB9bwACAJb%2BpAWDBc0ADQAfACNAER8QHRAHFwBJWRcEEAdJWRATAD8rABg%2FKxESADkYEMYxMAEiBgIVFBYzMjYSNTQmAQcjIAAREBIkMzIAERAABwEjA2qd%2BInEqJ7yhbz%2BxBEQ%2FwD%2B4sABT9L0ARj%2B6uwBEtsFNcr%2BmNrH38gBadvH3%2Fq5AgErAQ4BCAG07P7M%2FvL%2Bs%2F4aTv6aAAIAVgAABIkFtgALABUAJkATCAAODgBKWQ4OAwoCEgMMSVkDAwA%2FKwAYPzMSOS8rERIAOTEwAQMjASEgERAFEyMLAQIHMzI2NTQmIwGBgaoBNQFAAb7%2BkO%2B60WlmDqjB0IeYAmD9oAW2%2FpL%2BpGX9eQJgAsH%2BEkGqn3ltAAABACf%2F7AQjBcsAJgAgQBAfDBUDFRxJWRUEAwlJWQMTAD8rABg%2FKxESADk5MTABFAQjIiYnNRYzMjY1NCYnLgE1NCQzMhYXBy4BIyIGFRQeARceAgOR%2Fuf%2FaqFHorKivmmPl3UBCNdjq19CQqRFhqMiSmmTZzUBqNPpHSKqVJeETndRVap0u%2BsmLpYmLIt3Nk1EPVhkeQAAAAEAugAABLQFtgAHABZACgESBwMEA0lZBAMAPysRADMYPzEwISMBITchByEB56wBFf5qIQPZHv5oBR%2BXlwAAAAABAKT%2F7AV%2FBbYAFQAUQAkVCgMEEUlZBBMAPysAGD8zMTABAwIEIyImNTQ3EzMDBhUUFjMyNjcTBX%2FNN%2F7j9ubeGL2qvxaSkay%2FLM0Ftvw6%2Fvn90MNReANu%2FIVqUnWHr8oDugAAAQC8AAAFHwW2AAsAELYLBgMHAwYSAD8%2FMxEzMTAlNjcBMwEjAzMTFhUB3z1lAd%2B%2F%2FPO0oqphFMWQwgOf%2BkoFtvxexIsAAAAAAQDfAAAHgQW2AB0AGUAMBA8YAwkcEwoDAQkSAD8zPzMzEhc5MTAhIwMmNSMOAQEjAzMTFxQHMzY3ATMTFhUHMzY3ATME6aoxCAYZSP4srj6qHwIKBllDAZWyKwkBCUs4AYO2A8WIkkil%2FA4Ftvx7WGKg84wDYPykmZdT4IIDfQAB%2F5gAAATRBbYACwAVQAkIAgQJBgMBBBIAPzM%2FMxI5OTEwISMDASMJATMTATMBA7y01f4fugJU%2FvmsywG7uv3VAoH9fwMIAq79zQIz%2FUoAAAEAvAAABMMFtgAIABC2AAUBBwMFEgA%2FPzMSOTEwCQEzAQMjEwMzAhkB6cH9jXGsd%2B6qAssC6%2Fxn%2FeMCJQORAAAB%2F%2FAAAASTBbYACQAgQBAHBAIIBQRJWQUDAQhJWQESAD8rABg%2FKxEAMxEzMTApATcBITchBwEhA3X8exwDnP1xIANaGvxkArmJBJKbi%2FtvAAH%2F8P68AvAFtgAHAA61BQIDBgEnAD8zPzMxMAEhASEHIwEzAXP%2BfQF9AYMf4%2F7C4%2F68BvqN%2BiEAAQDdAAACUAW2AAMACrMDAwISAD8%2FMTABEyMDAXfZmtkFtvpKBbYAAAH%2Fav68AmoFtgAHAA61AwQDAAcnAD8zPzMxMAczASM3IQEhd%2BEBQOMeAYX%2BhP58tgXfjfkGAAAAAQA1AikEAgXBAAYADrQFAQAEAgAvLzMRMzEwEwEzASMDATUCVm0BCpHJ%2Fi0CKQOY%2FGgC6%2F0VAAAB%2F0T%2BvAKN%2F0gAAwAIsQECAC8zMTABITchAm%2F81R4DK%2F68jAABAj8E2QOHBiEACAAIsQYBAC%2FNMTABIy4BJzUzFhcDh2g9hxy1K2gE2T26PBWIpwACAGL%2F7ARgBFwAEgAgACdAFAoEDAAFDwgVABpGWQAQDBNGWQwWAD8rABg%2FKwAYPz8REjk5MTABMhYXMzczAyM3IwYjIiY1NBI2AzI2EjU0JiMiBgIVFBYCf1yQKAtDf%2BmFGgizxouejvopYcB4cFtos2ZeBFxjXaz7uNHlxqzQAWTK%2FBu5ASmVZ3qs%2FtqjcnEAAAAAAgA7%2F%2BwEOQYUABUAIgAnQBQLBAAPBwAGFQ8WRlkPEAAdRlkAFgA%2FKwAYPysAGD8%2FERI5OTEwBSImJyMHIwEzBgIHMz4BMzIWFRQCBhMiBgIVFBYzMjYSNTQCIWGTJQpGfQFKqDM3MAldtWCNnon1IGDHdW9pY6toFGZYqgYU8v7%2FrHZvxq3R%2Fp3HA%2BO%2B%2FuCXbnWiASuo4wABAGL%2F7AOqBFwAGAAXQAwHDEZZBxAAE0ZZABYAPysAGD8rMTAFIiY1NBIkMzIXByYjIgYCFRQWMzI2NxUGAfrC1pQBBaOJgy94Y3C5aYV1SIA%2BfBTWw8gBUr0zjTOZ%2Fu%2BggI4oG48%2FAAIAYv%2FsBMMGFAAUACEAJ0AUAwsOAAYACRUAHEZZABAOFUZZDhYAPysAGD8rABg%2FPxESOTkxMAEyFzM2NxMzASM3Iw4BIyImNTQSNgMyNhI1NCYjIgYCFRQCf8JXChEcTqb%2BtosWCGWwXouckPUmXsh1bGdlrWkEWr6bdwFm%2BezRfWjErtYBZML8HbsBI5dvdKX%2B1aXjAAAAAgBi%2F%2BwDtARcABgAIgAmQBQcDkZZHBwABwcZRlkHEAASRlkAFgA%2FKwAYPysREgA5GC8rMTAFIiY1NBI2MzIWFRQEISMHFBYzMjY3FQ4BEyIGBzMyNjU0JgHsuNKV9pSZmv60%2FsshBHuBP4VjXpA0Z7UwDOTzSRTawbwBWcCFd7TNUIOTJDCSLCMD4bynd3E1RgAAAAH%2FG%2F4UA4MGHwAgACpAFgwaCR0QFkZZEAAaHUdZGg8ABUZZABsAPysAGD8rABg%2FKxEAMxEzMTADIic1FjMyNjcTIz8CPgEzMhYXByYjIgYPATMHIwMOAWhFOEAwTFIZ48ENzhcuo6AodCArTD1XXR0Z7hnt6Cei%2FhQVjRZ8cwQ6Q0JkyKUXDoEdYYFsf%2Fu2va4AAAAD%2F4H%2BFARMBFwAKAA1AEMASEAoGzMzDkZZBzlHWQQgCQMHJjMHMwcVKCZAR1kmECgCR1koDxUsR1kVGwA%2FKwAYPysAGD8rERIAOTkYLy8REhc5KysRADMxMAEPARYVFAYjIicGFRQWHwEeARUUBCEiJjU0NjcmNTQ2Ny4BNTQ2MzIXARQWMzI2NTQmLwEOAQEUFjMyPgE1NCYjIg4BBEwZ0ynpwzcdi0I%2FdbWj%2Ftz%2B98LckKFOZls%2FUO%2B6Tkz9SoKAts1sgp94gAEWWlBPdj9YUk51QQRIaxg%2BYL%2FjCDVOKRsIDhaEgLjKk4ZpmjYpUEVjKyB9U8L4FPr1TVp%2FdD5IDhAZfgMSVVlUk1ZSVlGRAAEAOwAABCkGFAAdAB1ADhILFgwAAAsVFgVGWRYQAD8rABg%2FMz8REjkxMCETNjU0IyIOAQcDIwEzDgMHMz4BMzIWFRQHBgMC2ZQSk1mpgSFlqAFKqBIhIykbC163ZIOPFydqArReKZR24Z%2F%2BJwYUUpqfrmZ7apCEPmjB%2FiEAAAAAAgA7AAACHwXfAAMADgAOtQwHAg8BFQA%2FP8QyMTAzIxMzAzQ2MzIVFAYjIibjqOqoeUAzWEMsKDQESAEYOEdaN0wxAAAC%2Fv7%2BFAIdBd8ADAAXABZAChUQCA8ABUZZABsAPysAGD%2FEMjEwAyInNRYzMjcBMwEOAQE0NjMyFRQGIyImh0U2PTp9KwEIpv72JJ0BVEAzVkMsJjT%2BFBWNFs0E2%2FsWq58HTDhHWjdMMQAAAAABADkAAAQhBhQADgAYQAsGDgkBCgABDwUJFQA%2FMz8%2FERI5OTEwCQEzCQEjAwcDIwEzCgEHAUoCDsn%2BKwEnu%2BuYUqoBSqpIci0CLwIZ%2Fi39iwIMe%2F5vBhT%2BsP3sgQAAAAABADkAAAItBhQAAwAKswIAARUAPz8xMDMjATPhqAFMqAYUAAABADsAAAaHBFwALAAnQBMWDwwTDQ8AIQwVJwYTBkZZGhMQAD8zKxEAMxg%2FMzM%2FERI5OTEwIRM2NTQmIyIOAQcDIxMzBzM%2BATMyFhczPgEzMhYVFAcDIxM2NTQmIyIOAQcDAriUEj5LVJ95IWWo6osWCletXHF6CwhWwmN%2FixaQqpQURUpRnncfawK0XilGTnjfnf4lBEjLd2iCdH15iIJEbv1gArRoKj5LdNWS%2FgwAAAEAOwAABCkEXAAZAB1ADg8MEw0PAAwVEwZGWRMQAD8rABg%2FMz8REjkxMCETNjU0JiMiDgEHAyMTMwczPgEzMhYVFAcDAtmUFEdOWamBIWWo6osWCmCzYH%2BTF48CtGgoP0x43p7%2BJQRIy3pli31PZf1gAAAAAgBi%2F%2FAEHQRWAA0AGwAXQAwAEUZZABAHGEZZBxYAPysAGD8rMTABMhYVFAIGIyImNTQSNgE0JiMiBgIVFBYzMjYSAoO%2B3JD2m8DakvgBg31rba1ff3dopl0EVuHFvP6ytuLEvgFPs%2F5xc4%2BU%2Fvmhg4%2BSAQ0AAAAAAv%2FV%2FhQEOQRaABUAIgAnQBQEDAAPCg8JGw8WRlkPEAAdRlkAFgA%2FKwAYPysAGD8%2FERI5OTEwBSImJyMHDgEDIwEzBzM2MzIWFRQCBhMiBgIVFBYzMjYSNTQCIWGSKAoEAw9rpgFQixoIs8GJnor0IGDHdW9pY6toFGRaJhla%2FgMGNNHjw7DU%2Fp7FA%2BO%2B%2FuCXbnWiASuo4wACAGL%2BFARgBFwAFQAiACdAFAQLAA8FDwgbAB1GWQAQDxZGWQ8WAD8rABg%2FKwAYPz8REjk5MTABMhYXMzczASMTNjcjDgEjIiY1NBI2AzI2EjU0JiMiBgIVFAKBXo8lDUN9%2FrCmZQkwCF%2B0YIyfkfcpXMR5bWJlsGgEXGVbrPnMAeAtsHlsw6%2FUAWjC%2FBu4ASKbaXqp%2Ftej4wAAAAABADsAAANoBFwAEgAbQA0OCwAMDwsVAAVGWQAQAD8rABg%2FPxESOTEwATIXByYjIg4BBwMjEzMHMz4CAvBFMyQ1NFufdxxrqOqLFgpIXmcEXA6WDXjVgv4KBEjLX1MtAAABAAj%2F7ANEBFwAJAAgQBAMHgMVFRtGWRUQAwlGWQMWAD8rABg%2FKxESADk5MTABFAYjIic1HgEzMjY1NCYnLgE1NDYzMhcHJyYjIgYVFBYXHgIC393JqYhGokV%2BgEZ0gmzKpaufNjhld11qR29rXS4BN5yvRZ4qLmROOU5ESYxgiqlKiRkrV0U4UD88VmMAAAABAFr%2F7ALbBUQAGgAnQBMQEkAMFQ8SEhVHWRIPBgBGWQYWAD8rABg%2FKxEAMxEzGhgQzTEwJTI3FQ4BIyImNTQ3EyM%2FAjMHIQchAwYVFBYBizdZImQefYUSf6wOuX1iNwESGv7vgRI6dRqBDhR3dkJUAlpJTuT8f%2F2kVy04PAAAAAEAcf%2FsBF4ESAAYABtADQ8SChgPDRUSBUZZEhYAPysAGD8%2FMxI5MTABAwYVFDMyPgE3EzMDIzcjDgEjIiY1NDcTAcOWEpNYqoIiZKbnixYMYrJfgJIWkgRI%2FUlZMo944J4B2%2Fu4y31ii4E%2BbgKkAAABAGIAAAQSBEgACwAOtQkBDwUAFQA%2FMj8zMTAzAzMTEhUzEjcBMwHffahAGAZ%2FNAFFsv2xBEj9m%2F7%2BaAETYAJc%2B7gAAAEAdQAABgYESAAfABlADAUPGQMJHRMKDwAJFQA%2FMz8zMxIXOTEwIQMmPQEjDwEBIwMzExUUBzM2NwEzExYdAQczNhIBMwEDPyAECTJT%2Ft3KK6QSCAYvWgEntiUGAgYcbgEMsv4GAlpeTpx2vf2RBEj9rliTenzGAnX9rqheNSpWAQkCWPu4AAAB%2F7YAAAQGBEgACwAVQAkGAAIHBA8LAhUAPzM%2FMxI5OTEwCQEjAQMzEwEzARMjAdP%2BpsMB2%2B%2BqrgFKwv45%2FKgBsv5OAjUCE%2F5kAZz95f3TAAH%2FO%2F4UBBIESAAYABhACwUPCgAPDxRGWQ8bAD8rABg%2FMxI5MTATMxMWEhUzPgE3ATMBDgEjIic1FjMyNj8BYqhKChMGI2gZAUWy%2FUhdtoBIRD9EUnU3TARI%2Fd9F%2FvNSV%2BIrAmH6%2FqyGFYcSZWOIAAAB%2F%2BMAAAN9BEgACQAgQBAHBAIIBQRHWQUPAQhHWQEVAD8rABg%2FKxEAMxEzMTApATcBITchBwEhArL9MRcCtv4hGwKRHf1YAhN1A1Z9jPzBAAEAG%2F68Ay8FtgAnABlACxsKCgsLJhQSAwAnAD8%2FMzI5LzMSOTEwASImNTQ3PgEnNCM3MjY3Ez4BOwEHIgYHAw4BBxUWFRQPAQYVFBYzFQG6jZcUISUE0SB2jxZEIqerIR9pXBRHHH5olxIvD0lT%2FrxpdzRZkqMVj49XaAFGoICNSVf%2Bv3t6EQUprDtI0zooNTGOAAABAh3%2BEAKoBhQAAwAKswAAAxsAPz8xMAEzESMCHYuLBhT3%2FAAB%2F7b%2BvALBBbYAJwAbQAwcCwsKChQTJgADEycAPz8yETM5LzMSOTEwATIWFRQPAQYVFDMHIgYHAw4BKwE1MjY3Ez4BNzUmNTQ%2FATY1NCYjNwEdkJkVMRDRIXeOFkMkprUNc2gTSBl%2Ba5YSMg5RYxwFtml2MF3bRCuPkFZo%2FrqkfY5IVwFCdX0SBiqpO0jVQSI1MY0AAQBzAlAEMwNUABcAErYPAAaADAMSAC8zMxrNMjIxMAEiBgc1NjMyFhceATMyNjcVBiMiJicuAQFcNoEyYpFFdFZAYTI3gTNkkEh%2BSEtaAslFNJdtHSUbHEI3lm4hICAYAAAAAAL%2F8v6LAfIEXgADAA8AGEALAAAHAyIHDU9ZBxAAPysAGD8SOS8xMAEzAyMBNDYzMhYVFAYjIiYBBG2wzwEIUUYsNVFBMDYCrPvfBStMXDQ2R10zAAEA4f%2FsBCkFywAeAChAFQIeDAkJEU1ZHhhLWR4JHgkBCgcBGQA%2FPxI5OS8vKysRADMRMzEwBSM3LgE1NBI2PwEzBxYXByYjIgYCFRQWMzI2NxUGBwJGfSuEj3%2FmkSN7JXdiL21ucLlphHZIgD57oxTXIs%2BauQE%2BxxWqqAkojjSZ%2Fu%2BgfZIoHI8%2BBAAAAf%2FpAAAEmgXJABsAMUAZCxcYF05ZCBgYEgAABUtZAAcTDxIPTFkSGAA%2FKxEAMxg%2FKxESADkYLzMrEQAzMTABMhcHJiMiBwMhByEHDgEHIQchNzY%2FASM3MxMSA0q4mEKShNUyRQFyGv6NLxZYUALVIfxHG801L8gayUxLBclWhU%2Ft%2Frp%2F22KJK5qNLvPdfwFeAWEAAAIAqAEhBBAEhwAbACcAJEATBQIaFxMQDAkIBxIYFQoEHxUlBwAvM8QyzjIQzjISFzkxMBM0Nyc3FzYzMhc3FwcWFRQHFwcnBiMiJwcnNyY3FBYzMjY1NCYjIgblRIFcf2dycmWBXIFGRn9agWJ1d2J%2FWn9EgY9naJKSaGaQAtN1YoFcgUZGgVqBaHF3Yn9af0RGf1p%2FYHdnj49naJKRAAABAH8AAATsBbYAFgA9QCEKDg8OTVkHDwYSExJNWQMAExUPEx8TAg8TDxMMARUGDBgAPz8zEjk5Ly9dERI5MisRADMRMysRADMxMAkBMwEzByEHIQchAyMTITchNyE3MwMzAkYB67v96%2Bcc%2FtchASkd%2Ftk5mjj%2B3R0BIiH%2B3R3hyqMCywLr%2FP6FoIX%2B9gEKhaCFAwIAAgId%2FhACqAYUAAMABwAXQAoDAwcEBAcAAAcbAD8%2FETkvETkvMTABMxEjETMRIwIdi4uLiwYU%2FPj%2BDfz3AAAAAAIAO%2F%2F4A%2BUGHQAsADgALUAZGTMCLQ8tNjAzJwYeBx4kR1keFQcMR1kHAAA%2FKwAYPysREgAXOREzETMxMBM0NyY1NDYzMhcHJiMiBhUUFhceAhUUBgcWFRQGIyInNR4BMzI2NTQmJy4BAQ4BFRQWFz4BNTQmru53z7C9hDWUdmZ5THxkYjR6b3LkzLB3OKFMhY5lZopwAVRSamWUUF9jAwLJakaFf55EezxRRTFFOCxPZEBhpjhHdpirPZQiLFlVMFIuPYsBURp7RkZeQCx%2BRDxbAAAAAgHJBQ4D6QXTAAoAFQAMsw4DEwgALzPNMjEwATQ2MzIVFAYjIiYlNDYzMhUUBiMiJgHJOC5OOycjLwFsOC9NOycjLwViLkNQMUQsKC5DUDFELAAAAwCL%2F%2BwGagXLABYAJgA2AC1AGQYMABIPDB8MAgASEBICDBIMEhsrIxMzGwQAPzM%2FMxI5OS8vXV0RMxEzMTABIgYVFBYzMjcVDgEjIiY1NDYzMhcHJgE0EiQzMgQSFRQCBCMiJAI3FBIEMzIkEjU0AiQjIgQCA6B9hYKAUoFCXjnA0ty%2BgnY8avyXyAFeysUBWtDJ%2FqfNz%2F6iw2muAS2srgEqr67%2B17Cu%2FtavBCOumqmhK3ocFO%2Fc0PU8eDX%2BuMgBXsrC%2FqLQzP6nys8BWsat%2FtOtrgEpsK4BKq%2Bu%2FtcAAAACAKoDFAMMBccAEgAeABtADAkDAAcTDAAEHhoAHwA%2FMj8Q1DLEEjk5MTABMhczNzMDIzcjDgEjIiY1ND4BAzI%2BATU0JiMiBhUUAfJyJwYlVotcDgQoZElNY1OWFj1nRTk5XH0Fx2da%2FWd1OEp4an%2FXe%2F20YrFPPkXOjIsAAgBYAHEDqAO%2BAAYADQAhQA4NBwoGAAMKAwUIAQwFAQAvLzMRMxI5OREzMxEzMzEwEwEXARMHAwUBFwETBwNYAYdO%2FtescecBiwFvVv7lnnHXAkgBdlH%2BuP59MQG6DgGVRf6T%2FqIxAY0AAAAAAQB%2FAQgEFwMZAAUACrICBAUALzMvMTABESMRITUEF4z89AMZ%2Fe8Bg44AAP%2F%2FADcB1QI5AnMSBgAQAAAABACL%2F%2BwGagXLAA8AHwAtADUALUAVJSkpBDUqKgwEIycnLi4MHAQEFAwTAD8zPzMSOS8zEjkREjkvMxE5LzMxMBM0EiQzMgQSFRQCBCMiJAI3FBIEMzIkEjU0AiQjIgQCJRQGBxMjAyMRIxEzMhYBMzI1NCYrAYvIAV7KxQFa0Mn%2Bp83P%2FqLDaa4BLayuASqvrv7XsK7%2B1q8Dtl9V45XPcX%2Flo53%2BWlzDX2ZaAtvIAV7Kwv6i0Mz%2Bp8rPAVrGrf7Tra4BKbCuASqvrv7XCE5%2BI%2F5%2FAWD%2BoANwfv7llUw%2BAAABAOMGFAQXBpgAAwAIsQECAC8zMTABITchA%2FT87yEDEwYUhAACANcDXgNGBcsADAAYAAyzEAoWAwAvMy8zMTATNDYzMh4BFRQGIyImNxQWMzI2NTQmIyIG17WCU5FUtYODtHF0UlNyc1JQdgSTgLhTkVSAtbWAUHR1T1J1dQAAAAIAfwAABBcEmAALAA8AIUAOCQEBBgILAgsCDQUNDAUALy8zERI5OS8vETMzETMxMAEhNSERMxEhFSERIwE1IRUCBP57AYWNAYb%2Beo3%2BewOYAoONAYj%2BeI3%2Bff8AjY0AAAEAYAJKAvYFyQAXABK3Cg8fAhYWASAAPzMRMz8zMTABITclPgI1NCYjIgcnNjMyFhUUBg8BIQKR%2Fc8XAQhzVyg%2BO1ppO32VbX1pkd0BiwJKauRkY1cvNUBQWmVxXmOhfbsAAAABAHcCOQL0BckAIgAbQAwiEBAREQYYHR8LBiEAPzM%2FMxI5LzMSOTEwAR4BFRQGIyInNRYzMjU0KwE3MzI2NTQmIyIHJzYzMhYVFAcCJUVOtqJ9bH1yzbJaFl9hdEU7Zl43bZ9ygM8EDBFmRYSTOH9IqolrUkc8PURdWHBftDYAAAECFATZA7oGIQAJAAixBAkAL80xMAE%2BATczFQ4BByMCFDiLJb4mzEtpBPQ8tzoVMcw2AAAB%2F9X%2BFARqBEgAGgAgQBASDA8HFw8KFRYbDwJGWQ8WAD8rABg%2FPz8zEjk5MTABFDMyPgE3EzMDIzcjDgEjIicjDgEDIwEzAwYBJ5NZpoMiaaPpixgMXbRicDMJCxdIpAFQqJQSAQqTduCdAd77uM15aGBOjP6iBjT9SVwAAQDH%2FvwEtgYUAA8AGkALBggIDgUBDgNJWQ4ALysAGC8zEjkvOTEwASMRIxEjEQYjIiY1EDYzIQS2ctVzPlTYy9roAi3%2B%2FAZ9%2BYMDMxL6%2BwEE%2FgD%2F%2FwCqAksBogNaEAcAEQB%2FAmgAAAAB%2F1b%2BFADTAAAAEQAMswgDEA8ALzPMMjEwExQGIyInNRYzMjU0Jic3MwcW06KFKS0mHq5OPGVqPYP%2B7GJ2CWQGbi4rCLZ5JgABAQICSgKPBbYACgAOtQkGAyAAHgA%2FPzk5MTABMwMjEzY3DgEHJwIZdrqHcBkhGTJ4MwW2%2FJQCDmd6GStPWgAAAgCoAxQC6QXHAAwAFwANtBMDDQofAD8zxDIxMAEUBiMiJjU0PgEzMhYnIgYVFBYzMjY1NALpsZhxh1SXY3V%2B9WZ1TEVedQTDv%2FCOfXXFboYfr45VVbGQpgAAAAACABcAcwNoA8EABgANAB9ADQAGAwcNCgoDBQgBDAUALzMvMxI5OREzMxEzMzEwCQEnAQM3EyUBJwEDNxMDaP53TgEprHHp%2FnX%2BkFYBGp5x2QHl%2Fo5SAUMBhzL%2BQQ7%2Bb0YBaAFiMv5u%2F%2F8AewAABVIFthAnANMCYgAAECYAe8oAEQcA1AJm%2FbcACbMDAhIYAD81NQD%2F%2FwBCAAAFpAW2ECYAe5IAECcA0wIpAAARBwB0Aq79twAHsgIQGAA%2FNQAAAP%2F%2FAFcAAAXoBckQJgB14AAQJwDTAvgAABEHANQC%2FP23AAmzAwIqGAA%2FNTUAAAL%2F%2FP5xAvgEWAAZACUAI0ARBhkZECMjHU9ZIxAQCUlZECMAPysAGD8rERIAORgvOTEwAQ4BDwEGFRQWMzI2NxcOASMiJjU0Njc%2BATcTFAYjIiY1NDYzMhYCkRZkc1%2BfZ2BQlEI%2BWsZXqLaEn4RRFu5RRys1UEMvNgKogqRdS3%2BUXWYzH4EwNKeafNB3Ym1kAUpNWzQ0R18zAAAA%2F%2F%2F%2FiwAABBAHcxImACQAABEHAEP%2F2AFSAAq0AhAQBSYAKxE1%2F%2F%2F%2FiwAABE0HcxImACQAABEHAHYAkwFSAAq0AhgYBSYAKxE1%2F%2F%2F%2FiwAABDgHcxImACQAABEHAMUAQgFSAAq0AhUVBSYAKxE1%2F%2F%2F%2FiwAABI8HLxImACQAABEHAMcAYAFSAAq0AhgYBSYAKxE1%2F%2F%2F%2FiwAABCsHJRImACQAABEHAGoAQgFSAAy1AwIiIgUmACsRNTUAAP%2F%2F%2F4sAAAQQBwISJgAkAAARBwDGAAIAgQAZQA8DAu8YAd8YAW8YAQ8YARgAEV1dXV01NQAAAv%2BJAAAG3QW2AA8AEwA8QCAKDUlZCgoBBhMDSVkTEwEGBRIJEgYSSVkGAwEOSVkBEgA%2FKwAYPysRADMYPxESOS8rERIAORgvKzEwKQETIQEjASEHIQMhByEDIQETIwEFqP0fYv5K%2FtvFA6oDqiH9y2QCEBz973MCNv1%2Fk1T%2BTgHR%2Fi8Ftpn%2BK5b95gHVArD9UAAA%2F%2F8Alv4UBQoFyxImACYAABAHAHoCIwAA%2F%2F8AVgAABGoHcxImACgAABEHAEP%2F%2BwFSAAq0AQ0NBSYAKxE1%2F%2F8AVgAABGoHcxImACgAABEHAHYAfQFSAAq0ARUVBSYAKxE1%2F%2F8AVgAABGoHcxImACgAABEHAMUARgFSAAq0ARISBSYAKxE1%2F%2F8AVgAABGoHJRImACgAABEHAGoAQgFSAAy1AgEfHwUmACsRNTUAAP%2F%2FAFYAAAJRB3MSJgAsAAARBwBD%2FsoBUgAKtAEFBQUmACsRNf%2F%2FAFYAAANCB3MSJgAsAAARBwB2%2F4gBUgAKtAENDQUmACsRNf%2F%2FAFYAAAMoB3MSJgAsAAARBwDF%2FzIBUgAKtAEKCgUmACsRNf%2F%2FAFYAAAMpByUSJgAsAAARBwBq%2F0ABUgAMtQIBFxcFJgArETU1AAAAAgBIAAAFFAW2AA0AGwAtQBcaBwgHSVkXCAgFCgoWSlkKAwUbSlkFEgA%2FKwAYPysREgA5GC8zKxEAMzEwARACBCkBEyM3MxMhIAABMiQSNTQmKwEDIQchAwUU0v56%2Fvr%2BoIeVIJaNAVYBFAEf%2FK3KATKjzseybwFKIf62agNt%2Fvv%2BcNgCiZYCl%2F7V%2FAi3AU7X1939%2FJb%2BCv%2F%2FAFQAAAWoBy8SJgAxAAARBwDHAQgBUgAKtAEZGQUmACsRNf%2F%2FAJb%2F7AWDB3MSJgAyAAARBwBDAGgBUgAKtAIdHQUmACsRNf%2F%2FAJb%2F7AWDB3MSJgAyAAARBwB2ASEBUgAKtAIlJQUmACsRNf%2F%2FAJb%2F7AWDB3MSJgAyAAARBwDFANUBUgAKtAIiIgUmACsRNf%2F%2FAJb%2F7AWDBy8SJgAyAAARBwDHAOUBUgAKtAIlJQUmACsRNf%2F%2FAJb%2F7AWDByUSJgAyAAARBwBqAM8BUgAMtQMCLy8FJgArETU1AAAAAQCoATED8AR3AAsAFkAKAwYACQQCCggEAgAvMy8zEhc5MTAJATcJARcJAQcJAScB5%2F7BYgFAAUNj%2FrwBQmH%2Bvf7AYALTAUFj%2FsABQGD%2BvP6%2BYAFA%2FsJgAAMAd%2F%2BsBbYGBAAXACAAKQAjQBMfIx4kBCYYDxhJWQ8EBCZJWQQTAD8rABg%2FKxESABc5MTABEAIEIyInByc3JjUQEiQzMhYXNxcHHgEBIgYCFRQXASYTNCcBFjMyNhIFg7D%2BuNfIhIFwiWrAAU%2FSY59Ig3KVMDL95534iSkC4VrRIf0jW46Y8YwDi%2F7z%2FlfpYKBcqojrAQgBtOw2OaZcuD68AT%2FK%2Fpjah1wDl1j%2BWnZX%2FHFKwwFsAP%2F%2FAKT%2F7AV%2FB3MSJgA4AAARBwBDAFgBUgAKtAEXFwUmACsRNf%2F%2FAKT%2F7AV%2FB3MSJgA4AAARBwB2ASMBUgAKtAEfHwUmACsRNf%2F%2FAKT%2F7AV%2FB3MSJgA4AAARBwDFAMsBUgAKtAEcHAUmACsRNf%2F%2FAKT%2F7AV%2FByUSJgA4AAARBwBqALoBUgAMtQIBKSkFJgArETU1AAD%2F%2FwC8AAAEwwdzEiYAPAAAEQcAdgBUAVIACrQBEhIFJgArETUAAgBWAAAEUgW2AAwAFQAlQBMJFUpZCQkGBw0ESlkNDQYHAwYSAD8%2FEjkvKxESADkYLysxMAEUACEjAyMBMwMzMhYBMzI2NTQmKwEEUv64%2FsGFRqoBNao1oNXd%2FRCH1%2BKMkaYDPfj%2B%2Bv7BBbb%2FAL792bawfm4AAAAAAf8A%2FhQEWAYfAD8ALEAYNhUnAx4MDDlGWQwAHiRGWR4WAAVGWQAbAD8rABg%2FKwAYPysREgAXOTEwAyInNRYzMjY3AT4BMzIWFRQOAQcGFRQXHgIVFAYjIic1HgEzMjY1NC4BJy4BNTQ%2BATc%2BAjU0JiMiBgcBDgGFRTY9MkFUFwEYK%2BLCorQqUYpuXy9sM9m4r10zhz5xiBUuQlhFJT5dUD4iaVl3hhz%2B7iii%2FhQVjxZfbgUiyMaOfTljW2lTRDhCImtxQ6%2FHR6ApM3RlKD44N0VuPDVWR0U4P0MlQEl9gPrpva7%2F%2FwBi%2F%2BwEYAYhEiYARAAAEQYAQ7EAAAq0AiIiESYAKxE1AAD%2F%2FwBi%2F%2BwEYAYhEiYARAAAEQYAdkQAAAq0AioqESYAKxE1AAD%2F%2FwBi%2F%2BwEYAYhEiYARAAAEQYAxfcAAAq0AicnESYAKxE1AAD%2F%2FwBi%2F%2BwEYAXdEiYARAAAEQYAxxIAAAq0AioqESYAKxE1AAD%2F%2FwBi%2F%2BwEYAXTEiYARAAAEQYAav0AAAy1AwI0NBEmACsRNTX%2F%2FwBi%2F%2BwEYAaBEiYARAAAEQYAxtoAAAy1AwIkJBEmACsRNTUAAwBi%2F%2BwGWARcACoAOABCAEJAJBUYAwYEChE8IUZZPDwFFg8FFTkyETJGWRoRECUrCitGWQAKFgA%2FMysRADMYPzMrEQAzGD8%2FEjkvKxESABc5MTAFIiYnByM3Iw4BIyImNTQSNjMyFhczNzMHNjMyFhUUBCEjBxQWMzI2NxUGJTI2EjU0JiMiBgIVFBYBIgYHMzI2NTQmBI1soygfchoIbaVfeoqN8o5SficLQ20fe9F3k%2F6z%2Fs4nBH2DN3t1pPxrX7t3W01jsGRKA9V1vC8O4vVGFE9Qi9GEYcaqzgFmzGFfrJKmiHS2y1CDkyEzlkuLtwEqlmd6rf7epHJzA1a9pnVvPUIAAAD%2F%2FwBi%2FhQDqgRcEiYARgAAEAcAegF9AAD%2F%2FwBi%2F%2BwDtAYhEiYASAAAEQYAQ4IAAAq0AiQkESYAKxE1AAD%2F%2FwBi%2F%2BwD7wYhEiYASAAAEQYAdjUAAAq0AiwsESYAKxE1AAD%2F%2FwBi%2F%2BwDxgYhEiYASAAAEQYAxdAAAAq0AikpESYAKxE1AAD%2F%2FwBi%2F%2BwDvQXTEiYASAAAEQYAatQAAAy1AwI2NhEmACsRNTX%2F%2FwA7AAAB7AYhEiYAwgAAEQcAQ%2F5lAAAACrQBBQURJgArETX%2F%2FwA7AAAC6gYhEiYAwgAAEQcAdv8wAAAACrQBDQ0RJgArETX%2F%2FwA7AAACxAYhEiYAwgAAEQcAxf7OAAAACrQBCgoRJgArETX%2F%2FwA7AAACwQXTEiYAwgAAEQcAav7YAAAADLUCARcXESYAKxE1NQAAAAIAWv%2FsBHEGJQAgAC4ANEAcGQ8WHgAIBQQDHxYoRlkWFg8fDwYDAQ8hRlkPFgA%2FKwAYPzM%2FEjkvKxESABc5ERI5MTABJic3FhclFwceARUUAgQjIiY1NBI2MzIWFzc1NCYnBScTMj4BNTQmIyIOARUUFgKkQlBfdkYBBEDwV0%2BP%2Fvm0ts2H75RpmSMGSUr%2B8jgxa6Zmg3FtoFdzBT86N3VURpJphXP7kP3%2BfMTQuaABFJ5bTwIRiNBdlWz7vXDgcnaKc8%2BAfoL%2F%2FwA7AAAEUAXdEiYAUQAAEQYAxyEAAAq0ASMjESYAKxE1AAD%2F%2FwBi%2F%2FAEHQYhEiYAUgAAEQYAQ5cAAAq0Ah0dESYAKxE1AAD%2F%2FwBi%2F%2FAEHQYhEiYAUgAAEQYAdjkAAAq0AiUlESYAKxE1AAD%2F%2FwBi%2F%2FAEHQYhEiYAUgAAEQYAxe8AAAq0AiIiESYAKxE1AAD%2F%2FwBi%2F%2FAENQXdEiYAUgAAEQYAxwYAAAq0AiUlESYAKxE1AAD%2F%2FwBi%2F%2FAEHQXTEiYAUgAAEQYAaugAAAy1AwIvLxEmACsRNTUAAwB%2FAPwEFwSoAAMADgAZABC1AAEBEQwRAC8vEjkvMzEwEzUhFQE0MzIWFRQGIyImETQzMhYVFAYjIiZ%2FA5j9xG81Ozw0NDtvNTs8NDQ7AouOjv7qeT08Oj8%2BAvV5PTw6Pz4AAAMAPf%2B0BFAEkwAVAB4AJwAwQBsSDwcEBgkiHB0hERQIDwQPFkZZDxAEJEZZBBYAPysAGD8rERIAFzkYEMYQxjEwARQCBiMiJwcnNyY1NBI2MzIXNxcHFiUiBgIVFBcBJhM0JwEWMzI2EgQXi%2FSakmRiaW1Ek%2FSWkmpoaXc%2B%2FnBsr2QRAgY2jA39%2FjllZ6tfAsG9%2Fqq%2BQX1Sh2eiwgFOsESBT4FhaZL%2B%2FpdcLQKFL%2F7lVCP9fy2PAQIAAAD%2F%2FwBx%2F%2BwEXgYhEiYAWAAAEQYAQ5kAAAq0ARoaESYAKxE1AAD%2F%2FwBx%2F%2BwEXgYhEiYAWAAAEQYAdmgAAAq0ASIiESYAKxE1AAD%2F%2FwBx%2F%2BwEXgYhEiYAWAAAEQYAxQoAAAq0AR8fESYAKxE1AAD%2F%2FwBx%2F%2BwEXgXTEiYAWAAAEQYAagAAAAy1AgEsLBEmACsRNTX%2F%2F%2F87%2FhQEEgYhEiYAXAAAEQYAduAAAAq0ASIiESYAKxE1AAAAAv%2FV%2FhQEOQYUABcAJAAnQBQEDQARCQAIGxEYRlkREAAfRlkAFgA%2FKwAYPysAGD8%2FERI5OTEwBSImJyMGBwMjATMCBgczPgEzMhYVFAIGEyIGAhUUFjMyNhI1NAIhYpQnCggRZqYBsKhfKBMJZbBfi56K9CBgx3VvaWOraBRmWGhI%2FhoIAP5HokR9aMOw1P6exQPjvv7gl251ogErqOMA%2F%2F%2F%2FO%2F4UBBIF0xImAFwAABEGAGqGAAAMtQIBLCwRJgArETU1AAEAOwAAAc0ESAADAAqzAg8BFQA%2FPzEwMyMTM%2BOo6qgESAAAAAIAlv%2FsBykFzQAVACEAOUAgEBNJWRAQAQwMD0lZDAMKG0lZCgQDFklZAxIBEgEUSVkrABg%2FPysAGD8rABg%2FKxESADkYLysxMCkBBiMgABEQEiQzMhchByEDIQchAyEFMjcTJiMiBgIVFBYF9P1eTlD%2FAP7iwAFP0phVAsUf%2FctkAhAf%2FfBzAjX8pEU29kxznfiJxBQBKwEOAQgBtOwXmf4rlv3mFRMEiRbK%2Fpjax98AAwBi%2F%2BwGrARcACEALgA4ADtAHgIOBQwyGEZZMjIFDC8iDCJGWREMEBwpBSlGWQAFFgA%2FMysRADMYPzMrEQAzERI5GC8rERIAOTkxMAUgJw4BIyImNTQSNjMgFz4BMzIWFRQEISMHFBYzMjY3FQYBIgYCFRQWMzISETQmJSIGBzMyNjU0JgTj%2FvJWRc17uNiW%2FJsBDllLzXeLnP63%2FtApBHuBS4xQov0Cba5gfG6xyncCiX2%2FLBLn8EAU4Wty5MLBAU6x4W16g3m3ylCDkzEjlksD3ZL%2B%2FpuNkgFBAQt8hgS9pnp0MEUAAAEBjwTZA%2FYGIQAOAAyzAwsGAQAvM80yMTABIyYnBgcjNT4BNzMWHwED9mc5aIZsbZF3F54lWyoE2TCNd0YbhYEnY4hCAAAAAAICJwTZA90GgQALABcAFUALDx8JLwk%2FCQMJFQMALzPMXTIxMAEUBiMiJjU0NjMyFgc0JiMiBhUUFjMyNgPdeGNldnxfZXZoQDMxQjs4M0AFsGN0c2JedXJhNT4%2BNTY9PQAAAAABAVAE2QQvBd0AFQAStgUTC4AQAAkAL8QyGt3GMzEwASIuAiMiBgcjEjMyHgIzMjY3MwIDRihLR0MgLDMWZDqtLE9HPhssMxpkQgTbIysjOToBAiQrJDY%2F%2Fv4AAAEANwHVA5ECdQADAAixAAEALzMxMBM3IQc3IwM3IgHVoKAAAAEANwHVB2gCdQADAAixAAEALzMxMBM3IQc3IwcOIgHVoKAAAAEAewPBAggFtgAGAAmyAAMDAD%2FNMTATJzYTMwIHgQZirH%2BTOAPBFtMBDP6nnAAAAAEAfQPBAgwFtgAHAAmyBQcDAD%2FGMTABFw4BByMSNwIECCiOWIGGRQW2Flv%2FhQEqywAAAAAB%2F5z%2B%2BAErAO4ABgAIsQQAAC%2FNMTAlFwYHIxI3ASMIcZ2Bfk7uF%2Bv0AR7YAAIAewPBA3sFtgAGAA0ADbQABwMKAwA%2FM80yMTABJzYTMwIHISc2EzMCBwH0CFDAf6Ip%2FdEGYqx%2FkzgDwRa1ASr%2BhXoW0wEM%2FqecAAACAH0DwQN%2FBbYABwAPAA20DAUPBwMAPzPGMjEwARcOAQcjEjchFwYDIzYSNwIECCiOWIGGRQItCl60fzl1HAW2Flv%2FhQEqyxbO%2Fu9%2BASVSAAL%2FnP74ApwA7gAGAA0ADLMLDQQAAC%2FNMzIxMCUXBgcjEjchFwYDIxI3ASMIcZ2Bfk4CKwlfsIGMP%2B4X6%2FQBHtgXzf7uATy6AAEAxwHsApED6QALAAixCQMAL80xMBM0NjMyFhUUBiMiJseTfVxelIBZXQKskaxiXI2yYwABAFgAcQItA74ABgAStgYAAwMBBQEALy8SOREzMzEwEwEXARMHA1gBh07%2B16xx5wJCAXxR%2FrL%2BgzEBtAABABcAcwHsA8EABgAStgAGAwMFAQUALy8SOREzMzEwCQEnAQM3EwHs%2FnhNASiscegB8P6DUgFNAX0y%2FksAAAAAAf4ZAAAC8AW2AAMACrMDAwISAD8%2FMTAJASMBAvD7wpkEPQW2%2BkoFtgAAAAACAFwCSgLfBbwACgAQACFADw0HBhABBQUJEBADBx4DIAA%2FPxI5LzMzETMRMxEzMTABIwcjNyE3ATMDMyMSNwYPAQLJgSt%2FK%2F6TFwHhhXl%2F%2FkUVFFrNAxTKymUCQ%2F3NAUJJJHH2AAAAAAEAP%2F%2FsBNcFyQAmAEtAKQsXGBdOWQgYBhwdHE1ZAx0PHR8dAgkDGB0YHRIhIQBMWSEHEg1MWRIZAD8rABg%2FKxESADk5GC8vX15dETMrEQAzETMrEQAzMTABIgYHIQchBgchByEQITI3FQYjIgI9ASM3MzY3IzczEgAzMhYXByYDoIzkSwGqGv5HFQsBfR3%2BlwEpe4V%2Fl9TpqhuaCBaXG59hAUXPWY5GUHEFMcbHhUFjg%2F6LN5M7AQv1DINQVIUBCwEaKzGKTgAAAAABAAAjAAABBdMYAAAKCvIABQAk%2F3EABQA3ACkABQA5ACkABQA6ACkABQA8ABQABQBE%2F64ABQBG%2F4UABQBH%2F4UABQBI%2F4UABQBK%2F8MABQBQ%2F8MABQBR%2F8MABQBS%2F4UABQBT%2F8MABQBU%2F4UABQBV%2F8MABQBW%2F8MABQBY%2F8MABQCC%2F3EABQCD%2F3EABQCE%2F3EABQCF%2F3EABQCG%2F3EABQCH%2F3EABQCfABQABQCi%2F4UABQCj%2F64ABQCk%2F64ABQCl%2F64ABQCm%2F64ABQCn%2F64ABQCo%2F64ABQCp%2F4UABQCq%2F4UABQCr%2F4UABQCs%2F4UABQCt%2F4UABQC0%2F4UABQC1%2F4UABQC2%2F4UABQC3%2F4UABQC4%2F4UABQC6%2F4UABQC7%2F8MABQC8%2F8MABQC9%2F8MABQC%2B%2F8MABQDE%2F4UACgAk%2F3EACgA3ACkACgA5ACkACgA6ACkACgA8ABQACgBE%2F64ACgBG%2F4UACgBH%2F4UACgBI%2F4UACgBK%2F8MACgBQ%2F8MACgBR%2F8MACgBS%2F4UACgBT%2F8MACgBU%2F4UACgBV%2F8MACgBW%2F8MACgBY%2F8MACgCC%2F3EACgCD%2F3EACgCE%2F3EACgCF%2F3EACgCG%2F3EACgCH%2F3EACgCfABQACgCi%2F4UACgCj%2F64ACgCk%2F64ACgCl%2F64ACgCm%2F64ACgCn%2F64ACgCo%2F64ACgCp%2F4UACgCq%2F4UACgCr%2F4UACgCs%2F4UACgCt%2F4UACgC0%2F4UACgC1%2F4UACgC2%2F4UACgC3%2F4UACgC4%2F4UACgC6%2F4UACgC7%2F8MACgC8%2F8MACgC9%2F8MACgC%2B%2F8MACgDE%2F4UACwAtALgADwAm%2F5oADwAq%2F5oADwAy%2F5oADwA0%2F5oADwA3%2F3EADwA4%2F9cADwA5%2F4UADwA6%2F4UADwA8%2F4UADwCJ%2F5oADwCU%2F5oADwCV%2F5oADwCW%2F5oADwCX%2F5oADwCY%2F5oADwCa%2F5oADwCb%2F9cADwCc%2F9cADwCd%2F9cADwCe%2F9cADwCf%2F4UADwDD%2F5oAEAA3%2F64AEQAm%2F5oAEQAq%2F5oAEQAy%2F5oAEQA0%2F5oAEQA3%2F3EAEQA4%2F9cAEQA5%2F4UAEQA6%2F4UAEQA8%2F4UAEQCJ%2F5oAEQCU%2F5oAEQCV%2F5oAEQCW%2F5oAEQCX%2F5oAEQCY%2F5oAEQCa%2F5oAEQCb%2F9cAEQCc%2F9cAEQCd%2F9cAEQCe%2F9cAEQCf%2F4UAEQDD%2F5oAJAAF%2F3EAJAAK%2F3EAJAAm%2F9cAJAAq%2F9cAJAAtAQoAJAAy%2F9cAJAA0%2F9cAJAA3%2F3EAJAA5%2F64AJAA6%2F64AJAA8%2F4UAJACJ%2F9cAJACU%2F9cAJACV%2F9cAJACW%2F9cAJACX%2F9cAJACY%2F9cAJACa%2F9cAJACf%2F4UAJADD%2F9cAJADL%2F3EAJADO%2F3EAJQAP%2F64AJQAR%2F64AJQAk%2F9cAJQA3%2F8MAJQA5%2F%2BwAJQA6%2F%2BwAJQA7%2F9cAJQA8%2F%2BwAJQA9%2F%2BwAJQCC%2F9cAJQCD%2F9cAJQCE%2F9cAJQCF%2F9cAJQCG%2F9cAJQCH%2F9cAJQCf%2F%2BwAJQDM%2F64AJQDP%2F64AJgAm%2F9cAJgAq%2F9cAJgAy%2F9cAJgA0%2F9cAJgCJ%2F9cAJgCU%2F9cAJgCV%2F9cAJgCW%2F9cAJgCX%2F9cAJgCY%2F9cAJgCa%2F9cAJgDD%2F9cAJwAP%2F64AJwAR%2F64AJwAk%2F9cAJwA3%2F8MAJwA5%2F%2BwAJwA6%2F%2BwAJwA7%2F9cAJwA8%2F%2BwAJwA9%2F%2BwAJwCC%2F9cAJwCD%2F9cAJwCE%2F9cAJwCF%2F9cAJwCG%2F9cAJwCH%2F9cAJwCf%2F%2BwAJwDM%2F64AJwDP%2F64AKAAtAHsAKQAP%2F4UAKQAR%2F4UAKQAiACkAKQAk%2F9cAKQCC%2F9cAKQCD%2F9cAKQCE%2F9cAKQCF%2F9cAKQCG%2F9cAKQCH%2F9cAKQDM%2F4UAKQDP%2F4UALgAm%2F9cALgAq%2F9cALgAy%2F9cALgA0%2F9cALgCJ%2F9cALgCU%2F9cALgCV%2F9cALgCW%2F9cALgCX%2F9cALgCY%2F9cALgCa%2F9cALgDD%2F9cALwAF%2F1wALwAK%2F1wALwAm%2F9cALwAq%2F9cALwAy%2F9cALwA0%2F9cALwA3%2F9cALwA4%2F%2BwALwA5%2F9cALwA6%2F9cALwA8%2F8MALwCJ%2F9cALwCU%2F9cALwCV%2F9cALwCW%2F9cALwCX%2F9cALwCY%2F9cALwCa%2F9cALwCb%2F%2BwALwCc%2F%2BwALwCd%2F%2BwALwCe%2F%2BwALwCf%2F8MALwDD%2F9cALwDL%2F1wALwDO%2F1wAMgAP%2F64AMgAR%2F64AMgAk%2F9cAMgA3%2F8MAMgA5%2F%2BwAMgA6%2F%2BwAMgA7%2F9cAMgA8%2F%2BwAMgA9%2F%2BwAMgCC%2F9cAMgCD%2F9cAMgCE%2F9cAMgCF%2F9cAMgCG%2F9cAMgCH%2F9cAMgCf%2F%2BwAMgDM%2F64AMgDP%2F64AMwAP%2FvYAMwAR%2FvYAMwAk%2F5oAMwA7%2F9cAMwA9%2F%2BwAMwCC%2F5oAMwCD%2F5oAMwCE%2F5oAMwCF%2F5oAMwCG%2F5oAMwCH%2F5oAMwDM%2FvYAMwDP%2FvYANAAP%2F64ANAAR%2F64ANAAk%2F9cANAA3%2F8MANAA5%2F%2BwANAA6%2F%2BwANAA7%2F9cANAA8%2F%2BwANAA9%2F%2BwANACC%2F9cANACD%2F9cANACE%2F9cANACF%2F9cANACG%2F9cANACH%2F9cANACf%2F%2BwANADM%2F64ANADP%2F64ANwAP%2F4UANwAQ%2F64ANwAR%2F4UANwAiACkANwAk%2F3EANwAm%2F9cANwAq%2F9cANwAy%2F9cANwA0%2F9cANwA3ACkANwBE%2F1wANwBG%2F3EANwBH%2F3EANwBI%2F3EANwBK%2F3EANwBQ%2F5oANwBR%2F5oANwBS%2F3EANwBT%2F5oANwBU%2F3EANwBV%2F5oANwBW%2F4UANwBY%2F5oANwBZ%2F9cANwBa%2F9cANwBb%2F9cANwBc%2F9cANwBd%2F64ANwCC%2F3EANwCD%2F3EANwCE%2F3EANwCF%2F3EANwCG%2F3EANwCH%2F3EANwCJ%2F9cANwCU%2F9cANwCV%2F9cANwCW%2F9cANwCX%2F9cANwCY%2F9cANwCa%2F9cANwCi%2F3EANwCj%2F1wANwCk%2F1wANwCl%2F1wANwCm%2F1wANwCn%2F1wANwCo%2F1wANwCp%2F3EANwCq%2F3EANwCr%2F3EANwCs%2F3EANwCt%2F3EANwC0%2F3EANwC1%2F3EANwC2%2F3EANwC3%2F3EANwC4%2F3EANwC6%2F3EANwC7%2F5oANwC8%2F5oANwC9%2F5oANwC%2B%2F5oANwC%2F%2F9cANwDD%2F9cANwDE%2F3EANwDI%2F64ANwDJ%2F64ANwDM%2F4UANwDP%2F4UAOAAP%2F9cAOAAR%2F9cAOAAk%2F%2BwAOACC%2F%2BwAOACD%2F%2BwAOACE%2F%2BwAOACF%2F%2BwAOACG%2F%2BwAOACH%2F%2BwAOADM%2F9cAOADP%2F9cAOQAP%2F5oAOQAR%2F5oAOQAiACkAOQAk%2F64AOQAm%2F%2BwAOQAq%2F%2BwAOQAy%2F%2BwAOQA0%2F%2BwAOQBE%2F9cAOQBG%2F9cAOQBH%2F9cAOQBI%2F9cAOQBK%2F%2BwAOQBQ%2F%2BwAOQBR%2F%2BwAOQBS%2F9cAOQBT%2F%2BwAOQBU%2F9cAOQBV%2F%2BwAOQBW%2F%2BwAOQBY%2F%2BwAOQCC%2F64AOQCD%2F64AOQCE%2F64AOQCF%2F64AOQCG%2F64AOQCH%2F64AOQCJ%2F%2BwAOQCU%2F%2BwAOQCV%2F%2BwAOQCW%2F%2BwAOQCX%2F%2BwAOQCY%2F%2BwAOQCa%2F%2BwAOQCi%2F9cAOQCj%2F9cAOQCk%2F9cAOQCl%2F9cAOQCm%2F9cAOQCn%2F9cAOQCo%2F9cAOQCp%2F9cAOQCq%2F9cAOQCr%2F9cAOQCs%2F9cAOQCt%2F9cAOQC0%2F9cAOQC1%2F9cAOQC2%2F9cAOQC3%2F9cAOQC4%2F9cAOQC6%2F9cAOQC7%2F%2BwAOQC8%2F%2BwAOQC9%2F%2BwAOQC%2B%2F%2BwAOQDD%2F%2BwAOQDE%2F9cAOQDM%2F5oAOQDP%2F5oAOgAP%2F5oAOgAR%2F5oAOgAiACkAOgAk%2F64AOgAm%2F%2BwAOgAq%2F%2BwAOgAy%2F%2BwAOgA0%2F%2BwAOgBE%2F9cAOgBG%2F9cAOgBH%2F9cAOgBI%2F9cAOgBK%2F%2BwAOgBQ%2F%2BwAOgBR%2F%2BwAOgBS%2F9cAOgBT%2F%2BwAOgBU%2F9cAOgBV%2F%2BwAOgBW%2F%2BwAOgBY%2F%2BwAOgCC%2F64AOgCD%2F64AOgCE%2F64AOgCF%2F64AOgCG%2F64AOgCH%2F64AOgCJ%2F%2BwAOgCU%2F%2BwAOgCV%2F%2BwAOgCW%2F%2BwAOgCX%2F%2BwAOgCY%2F%2BwAOgCa%2F%2BwAOgCi%2F9cAOgCj%2F9cAOgCk%2F9cAOgCl%2F9cAOgCm%2F9cAOgCn%2F9cAOgCo%2F9cAOgCp%2F9cAOgCq%2F9cAOgCr%2F9cAOgCs%2F9cAOgCt%2F9cAOgC0%2F9cAOgC1%2F9cAOgC2%2F9cAOgC3%2F9cAOgC4%2F9cAOgC6%2F9cAOgC7%2F%2BwAOgC8%2F%2BwAOgC9%2F%2BwAOgC%2B%2F%2BwAOgDD%2F%2BwAOgDE%2F9cAOgDM%2F5oAOgDP%2F5oAOwAm%2F9cAOwAq%2F9cAOwAy%2F9cAOwA0%2F9cAOwCJ%2F9cAOwCU%2F9cAOwCV%2F9cAOwCW%2F9cAOwCX%2F9cAOwCY%2F9cAOwCa%2F9cAOwDD%2F9cAPAAP%2F4UAPAAR%2F4UAPAAiACkAPAAk%2F4UAPAAm%2F9cAPAAq%2F9cAPAAy%2F9cAPAA0%2F9cAPABE%2F5oAPABG%2F5oAPABH%2F5oAPABI%2F5oAPABK%2F9cAPABQ%2F8MAPABR%2F8MAPABS%2F5oAPABT%2F8MAPABU%2F5oAPABV%2F8MAPABW%2F64APABY%2F8MAPABd%2F9cAPACC%2F4UAPACD%2F4UAPACE%2F4UAPACF%2F4UAPACG%2F4UAPACH%2F4UAPACJ%2F9cAPACU%2F9cAPACV%2F9cAPACW%2F9cAPACX%2F9cAPACY%2F9cAPACa%2F9cAPACi%2F5oAPACj%2F5oAPACk%2F5oAPACl%2F5oAPACm%2F5oAPACn%2F5oAPACo%2F5oAPACp%2F5oAPACq%2F5oAPACr%2F5oAPACs%2F5oAPACt%2F5oAPAC0%2F5oAPAC1%2F5oAPAC2%2F5oAPAC3%2F5oAPAC4%2F5oAPAC6%2F5oAPAC7%2F8MAPAC8%2F8MAPAC9%2F8MAPAC%2B%2F8MAPADD%2F9cAPADE%2F5oAPADM%2F4UAPADP%2F4UAPQAm%2F%2BwAPQAq%2F%2BwAPQAy%2F%2BwAPQA0%2F%2BwAPQCJ%2F%2BwAPQCU%2F%2BwAPQCV%2F%2BwAPQCW%2F%2BwAPQCX%2F%2BwAPQCY%2F%2BwAPQCa%2F%2BwAPQDD%2F%2BwAPgAtALgARAAF%2F%2BwARAAK%2F%2BwARADL%2F%2BwARADO%2F%2BwARQAF%2F%2BwARQAK%2F%2BwARQBZ%2F9cARQBa%2F9cARQBb%2F9cARQBc%2F9cARQBd%2F%2BwARQC%2F%2F9cARQDL%2F%2BwARQDO%2F%2BwARgAFACkARgAKACkARgDLACkARgDOACkASAAF%2F%2BwASAAK%2F%2BwASABZ%2F9cASABa%2F9cASABb%2F9cASABc%2F9cASABd%2F%2BwASAC%2F%2F9cASADL%2F%2BwASADO%2F%2BwASQAFAHsASQAKAHsASQDLAHsASQDOAHsASwAF%2F%2BwASwAK%2F%2BwASwDL%2F%2BwASwDO%2F%2BwATgBG%2F9cATgBH%2F9cATgBI%2F9cATgBS%2F9cATgBU%2F9cATgCi%2F9cATgCp%2F9cATgCq%2F9cATgCr%2F9cATgCs%2F9cATgCt%2F9cATgC0%2F9cATgC1%2F9cATgC2%2F9cATgC3%2F9cATgC4%2F9cATgC6%2F9cATgDE%2F9cAUAAF%2F%2BwAUAAK%2F%2BwAUADL%2F%2BwAUADO%2F%2BwAUQAF%2F%2BwAUQAK%2F%2BwAUQDL%2F%2BwAUQDO%2F%2BwAUgAF%2F%2BwAUgAK%2F%2BwAUgBZ%2F9cAUgBa%2F9cAUgBb%2F9cAUgBc%2F9cAUgBd%2F%2BwAUgC%2F%2F9cAUgDL%2F%2BwAUgDO%2F%2BwAUwAF%2F%2BwAUwAK%2F%2BwAUwBZ%2F9cAUwBa%2F9cAUwBb%2F9cAUwBc%2F9cAUwBd%2F%2BwAUwC%2F%2F9cAUwDL%2F%2BwAUwDO%2F%2BwAVQAFAFIAVQAKAFIAVQBE%2F9cAVQBG%2F9cAVQBH%2F9cAVQBI%2F9cAVQBK%2F%2BwAVQBS%2F9cAVQBU%2F9cAVQCi%2F9cAVQCj%2F9cAVQCk%2F9cAVQCl%2F9cAVQCm%2F9cAVQCn%2F9cAVQCo%2F9cAVQCp%2F9cAVQCq%2F9cAVQCr%2F9cAVQCs%2F9cAVQCt%2F9cAVQC0%2F9cAVQC1%2F9cAVQC2%2F9cAVQC3%2F9cAVQC4%2F9cAVQC6%2F9cAVQDE%2F9cAVQDLAFIAVQDOAFIAVwAFACkAVwAKACkAVwDLACkAVwDOACkAWQAFAFIAWQAKAFIAWQAP%2F64AWQAR%2F64AWQAiACkAWQDLAFIAWQDM%2F64AWQDOAFIAWQDP%2F64AWgAFAFIAWgAKAFIAWgAP%2F64AWgAR%2F64AWgAiACkAWgDLAFIAWgDM%2F64AWgDOAFIAWgDP%2F64AWwBG%2F9cAWwBH%2F9cAWwBI%2F9cAWwBS%2F9cAWwBU%2F9cAWwCi%2F9cAWwCp%2F9cAWwCq%2F9cAWwCr%2F9cAWwCs%2F9cAWwCt%2F9cAWwC0%2F9cAWwC1%2F9cAWwC2%2F9cAWwC3%2F9cAWwC4%2F9cAWwC6%2F9cAWwDE%2F9cAXAAFAFIAXAAKAFIAXAAP%2F64AXAAR%2F64AXAAiACkAXADLAFIAXADM%2F64AXADOAFIAXADP%2F64AXgAtALgAggAF%2F3EAggAK%2F3EAggAm%2F9cAggAq%2F9cAggAtAQoAggAy%2F9cAggA0%2F9cAggA3%2F3EAggA5%2F64AggA6%2F64AggA8%2F4UAggCJ%2F9cAggCU%2F9cAggCV%2F9cAggCW%2F9cAggCX%2F9cAggCY%2F9cAggCa%2F9cAggCf%2F4UAggDD%2F9cAggDL%2F3EAggDO%2F3EAgwAF%2F3EAgwAK%2F3EAgwAm%2F9cAgwAq%2F9cAgwAtAQoAgwAy%2F9cAgwA0%2F9cAgwA3%2F3EAgwA5%2F64AgwA6%2F64AgwA8%2F4UAgwCJ%2F9cAgwCU%2F9cAgwCV%2F9cAgwCW%2F9cAgwCX%2F9cAgwCY%2F9cAgwCa%2F9cAgwCf%2F4UAgwDD%2F9cAgwDL%2F3EAgwDO%2F3EAhAAF%2F3EAhAAK%2F3EAhAAm%2F9cAhAAq%2F9cAhAAtAQoAhAAy%2F9cAhAA0%2F9cAhAA3%2F3EAhAA5%2F64AhAA6%2F64AhAA8%2F4UAhACJ%2F9cAhACU%2F9cAhACV%2F9cAhACW%2F9cAhACX%2F9cAhACY%2F9cAhACa%2F9cAhACf%2F4UAhADD%2F9cAhADL%2F3EAhADO%2F3EAhQAF%2F3EAhQAK%2F3EAhQAm%2F9cAhQAq%2F9cAhQAtAQoAhQAy%2F9cAhQA0%2F9cAhQA3%2F3EAhQA5%2F64AhQA6%2F64AhQA8%2F4UAhQCJ%2F9cAhQCU%2F9cAhQCV%2F9cAhQCW%2F9cAhQCX%2F9cAhQCY%2F9cAhQCa%2F9cAhQCf%2F4UAhQDD%2F9cAhQDL%2F3EAhQDO%2F3EAhgAF%2F3EAhgAK%2F3EAhgAm%2F9cAhgAq%2F9cAhgAtAQoAhgAy%2F9cAhgA0%2F9cAhgA3%2F3EAhgA5%2F64AhgA6%2F64AhgA8%2F4UAhgCJ%2F9cAhgCU%2F9cAhgCV%2F9cAhgCW%2F9cAhgCX%2F9cAhgCY%2F9cAhgCa%2F9cAhgCf%2F4UAhgDD%2F9cAhgDL%2F3EAhgDO%2F3EAhwAF%2F3EAhwAK%2F3EAhwAm%2F9cAhwAq%2F9cAhwAtAQoAhwAy%2F9cAhwA0%2F9cAhwA3%2F3EAhwA5%2F64AhwA6%2F64AhwA8%2F4UAhwCJ%2F9cAhwCU%2F9cAhwCV%2F9cAhwCW%2F9cAhwCX%2F9cAhwCY%2F9cAhwCa%2F9cAhwCf%2F4UAhwDD%2F9cAhwDL%2F3EAhwDO%2F3EAiAAtAHsAiQAm%2F9cAiQAq%2F9cAiQAy%2F9cAiQA0%2F9cAiQCJ%2F9cAiQCU%2F9cAiQCV%2F9cAiQCW%2F9cAiQCX%2F9cAiQCY%2F9cAiQCa%2F9cAiQDD%2F9cAigAtAHsAiwAtAHsAjAAtAHsAjQAtAHsAkgAP%2F64AkgAR%2F64AkgAk%2F9cAkgA3%2F8MAkgA5%2F%2BwAkgA6%2F%2BwAkgA7%2F9cAkgA8%2F%2BwAkgA9%2F%2BwAkgCC%2F9cAkgCD%2F9cAkgCE%2F9cAkgCF%2F9cAkgCG%2F9cAkgCH%2F9cAkgCf%2F%2BwAkgDM%2F64AkgDP%2F64AlAAP%2F64AlAAR%2F64AlAAk%2F9cAlAA3%2F8MAlAA5%2F%2BwAlAA6%2F%2BwAlAA7%2F9cAlAA8%2F%2BwAlAA9%2F%2BwAlACC%2F9cAlACD%2F9cAlACE%2F9cAlACF%2F9cAlACG%2F9cAlACH%2F9cAlACf%2F%2BwAlADM%2F64AlADP%2F64AlQAP%2F64AlQAR%2F64AlQAk%2F9cAlQA3%2F8MAlQA5%2F%2BwAlQA6%2F%2BwAlQA7%2F9cAlQA8%2F%2BwAlQA9%2F%2BwAlQCC%2F9cAlQCD%2F9cAlQCE%2F9cAlQCF%2F9cAlQCG%2F9cAlQCH%2F9cAlQCf%2F%2BwAlQDM%2F64AlQDP%2F64AlgAP%2F64AlgAR%2F64AlgAk%2F9cAlgA3%2F8MAlgA5%2F%2BwAlgA6%2F%2BwAlgA7%2F9cAlgA8%2F%2BwAlgA9%2F%2BwAlgCC%2F9cAlgCD%2F9cAlgCE%2F9cAlgCF%2F9cAlgCG%2F9cAlgCH%2F9cAlgCf%2F%2BwAlgDM%2F64AlgDP%2F64AlwAP%2F64AlwAR%2F64AlwAk%2F9cAlwA3%2F8MAlwA5%2F%2BwAlwA6%2F%2BwAlwA7%2F9cAlwA8%2F%2BwAlwA9%2F%2BwAlwCC%2F9cAlwCD%2F9cAlwCE%2F9cAlwCF%2F9cAlwCG%2F9cAlwCH%2F9cAlwCf%2F%2BwAlwDM%2F64AlwDP%2F64AmAAP%2F64AmAAR%2F64AmAAk%2F9cAmAA3%2F8MAmAA5%2F%2BwAmAA6%2F%2BwAmAA7%2F9cAmAA8%2F%2BwAmAA9%2F%2BwAmACC%2F9cAmACD%2F9cAmACE%2F9cAmACF%2F9cAmACG%2F9cAmACH%2F9cAmACf%2F%2BwAmADM%2F64AmADP%2F64AmgAP%2F64AmgAR%2F64AmgAk%2F9cAmgA3%2F8MAmgA5%2F%2BwAmgA6%2F%2BwAmgA7%2F9cAmgA8%2F%2BwAmgA9%2F%2BwAmgCC%2F9cAmgCD%2F9cAmgCE%2F9cAmgCF%2F9cAmgCG%2F9cAmgCH%2F9cAmgCf%2F%2BwAmgDM%2F64AmgDP%2F64AmwAP%2F9cAmwAR%2F9cAmwAk%2F%2BwAmwCC%2F%2BwAmwCD%2F%2BwAmwCE%2F%2BwAmwCF%2F%2BwAmwCG%2F%2BwAmwCH%2F%2BwAmwDM%2F9cAmwDP%2F9cAnAAP%2F9cAnAAR%2F9cAnAAk%2F%2BwAnACC%2F%2BwAnACD%2F%2BwAnACE%2F%2BwAnACF%2F%2BwAnACG%2F%2BwAnACH%2F%2BwAnADM%2F9cAnADP%2F9cAnQAP%2F9cAnQAR%2F9cAnQAk%2F%2BwAnQCC%2F%2BwAnQCD%2F%2BwAnQCE%2F%2BwAnQCF%2F%2BwAnQCG%2F%2BwAnQCH%2F%2BwAnQDM%2F9cAnQDP%2F9cAngAP%2F9cAngAR%2F9cAngAk%2F%2BwAngCC%2F%2BwAngCD%2F%2BwAngCE%2F%2BwAngCF%2F%2BwAngCG%2F%2BwAngCH%2F%2BwAngDM%2F9cAngDP%2F9cAnwAP%2F4UAnwAR%2F4UAnwAiACkAnwAk%2F4UAnwAm%2F9cAnwAq%2F9cAnwAy%2F9cAnwA0%2F9cAnwBE%2F5oAnwBG%2F5oAnwBH%2F5oAnwBI%2F5oAnwBK%2F9cAnwBQ%2F8MAnwBR%2F8MAnwBS%2F5oAnwBT%2F8MAnwBU%2F5oAnwBV%2F8MAnwBW%2F64AnwBY%2F8MAnwBd%2F9cAnwCC%2F4UAnwCD%2F4UAnwCE%2F4UAnwCF%2F4UAnwCG%2F4UAnwCH%2F4UAnwCJ%2F9cAnwCU%2F9cAnwCV%2F9cAnwCW%2F9cAnwCX%2F9cAnwCY%2F9cAnwCa%2F9cAnwCi%2F5oAnwCj%2F5oAnwCk%2F5oAnwCl%2F5oAnwCm%2F5oAnwCn%2F5oAnwCo%2F5oAnwCp%2F5oAnwCq%2F5oAnwCr%2F5oAnwCs%2F5oAnwCt%2F5oAnwC0%2F5oAnwC1%2F5oAnwC2%2F5oAnwC3%2F5oAnwC4%2F5oAnwC6%2F5oAnwC7%2F8MAnwC8%2F8MAnwC9%2F8MAnwC%2B%2F8MAnwDD%2F9cAnwDE%2F5oAnwDM%2F4UAnwDP%2F4UAoAAP%2FvYAoAAR%2FvYAoAAk%2F5oAoAA7%2F9cAoAA9%2F%2BwAoACC%2F5oAoACD%2F5oAoACE%2F5oAoACF%2F5oAoACG%2F5oAoACH%2F5oAoADM%2FvYAoADP%2FvYAogAF%2F%2BwAogAK%2F%2BwAogDL%2F%2BwAogDO%2F%2BwAowAF%2F%2BwAowAK%2F%2BwAowDL%2F%2BwAowDO%2F%2BwApAAF%2F%2BwApAAK%2F%2BwApADL%2F%2BwApADO%2F%2BwApQAF%2F%2BwApQAK%2F%2BwApQDL%2F%2BwApQDO%2F%2BwApgAF%2F%2BwApgAK%2F%2BwApgDL%2F%2BwApgDO%2F%2BwApwAF%2F%2BwApwAK%2F%2BwApwDL%2F%2BwApwDO%2F%2BwAqgAF%2F%2BwAqgAK%2F%2BwAqgBZ%2F9cAqgBa%2F9cAqgBb%2F9cAqgBc%2F9cAqgBd%2F%2BwAqgC%2F%2F9cAqgDL%2F%2BwAqgDO%2F%2BwAqwAF%2F%2BwAqwAK%2F%2BwAqwBZ%2F9cAqwBa%2F9cAqwBb%2F9cAqwBc%2F9cAqwBd%2F%2BwAqwC%2F%2F9cAqwDL%2F%2BwAqwDO%2F%2BwArAAF%2F%2BwArAAK%2F%2BwArABZ%2F9cArABa%2F9cArABb%2F9cArABc%2F9cArABd%2F%2BwArAC%2F%2F9cArADL%2F%2BwArADO%2F%2BwArQAF%2F%2BwArQAK%2F%2BwArQBZ%2F9cArQBa%2F9cArQBb%2F9cArQBc%2F9cArQBd%2F%2BwArQC%2F%2F9cArQDL%2F%2BwArQDO%2F%2BwAsgAF%2F%2BwAsgAK%2F%2BwAsgBZ%2F9cAsgBa%2F9cAsgBb%2F9cAsgBc%2F9cAsgBd%2F%2BwAsgC%2F%2F9cAsgDL%2F%2BwAsgDO%2F%2BwAtAAF%2F%2BwAtAAK%2F%2BwAtABZ%2F9cAtABa%2F9cAtABb%2F9cAtABc%2F9cAtABd%2F%2BwAtAC%2F%2F9cAtADL%2F%2BwAtADO%2F%2BwAtQAF%2F%2BwAtQAK%2F%2BwAtQBZ%2F9cAtQBa%2F9cAtQBb%2F9cAtQBc%2F9cAtQBd%2F%2BwAtQC%2F%2F9cAtQDL%2F%2BwAtQDO%2F%2BwAtgAF%2F%2BwAtgAK%2F%2BwAtgBZ%2F9cAtgBa%2F9cAtgBb%2F9cAtgBc%2F9cAtgBd%2F%2BwAtgC%2F%2F9cAtgDL%2F%2BwAtgDO%2F%2BwAuAAF%2F9cAuAAK%2F9cAuADL%2F9cAuADO%2F9cAugAF%2F%2BwAugAK%2F%2BwAugBZ%2F9cAugBa%2F9cAugBb%2F9cAugBc%2F9cAugBd%2F%2BwAugC%2F%2F9cAugDL%2F%2BwAugDO%2F%2BwAvwAFAFIAvwAKAFIAvwAP%2F64AvwAR%2F64AvwAiACkAvwDLAFIAvwDM%2F64AvwDOAFIAvwDP%2F64AwAAF%2F%2BwAwAAK%2F%2BwAwABZ%2F9cAwABa%2F9cAwABb%2F9cAwABc%2F9cAwABd%2F%2BwAwAC%2F%2F9cAwADL%2F%2BwAwADO%2F%2BwAwQAFAFIAwQAKAFIAwQAP%2F64AwQAR%2F64AwQAiACkAwQDLAFIAwQDM%2F64AwQDOAFIAwQDP%2F64AwwAtAHsAyAA3%2F64AyQA3%2F64AygAk%2F3EAygA3ACkAygA5ACkAygA6ACkAygA8ABQAygBE%2F64AygBG%2F4UAygBH%2F4UAygBI%2F4UAygBK%2F8MAygBQ%2F8MAygBR%2F8MAygBS%2F4UAygBT%2F8MAygBU%2F4UAygBV%2F8MAygBW%2F8MAygBY%2F8MAygCC%2F3EAygCD%2F3EAygCE%2F3EAygCF%2F3EAygCG%2F3EAygCH%2F3EAygCfABQAygCi%2F4UAygCj%2F64AygCk%2F64AygCl%2F64AygCm%2F64AygCn%2F64AygCo%2F64AygCp%2F4UAygCq%2F4UAygCr%2F4UAygCs%2F4UAygCt%2F4UAygC0%2F4UAygC1%2F4UAygC2%2F4UAygC3%2F4UAygC4%2F4UAygC6%2F4UAygC7%2F8MAygC8%2F8MAygC9%2F8MAygC%2B%2F8MAygDE%2F4UAywAk%2F3EAywA3ACkAywA5ACkAywA6ACkAywA8ABQAywBE%2F64AywBG%2F4UAywBH%2F4UAywBI%2F4UAywBK%2F8MAywBQ%2F8MAywBR%2F8MAywBS%2F4UAywBT%2F8MAywBU%2F4UAywBV%2F8MAywBW%2F8MAywBY%2F8MAywCC%2F3EAywCD%2F3EAywCE%2F3EAywCF%2F3EAywCG%2F3EAywCH%2F3EAywCfABQAywCi%2F4UAywCj%2F64AywCk%2F64AywCl%2F64AywCm%2F64AywCn%2F64AywCo%2F64AywCp%2F4UAywCq%2F4UAywCr%2F4UAywCs%2F4UAywCt%2F4UAywC0%2F4UAywC1%2F4UAywC2%2F4UAywC3%2F4UAywC4%2F4UAywC6%2F4UAywC7%2F8MAywC8%2F8MAywC9%2F8MAywC%2B%2F8MAywDE%2F4UAzAAm%2F5oAzAAq%2F5oAzAAy%2F5oAzAA0%2F5oAzAA3%2F3EAzAA4%2F9cAzAA5%2F4UAzAA6%2F4UAzAA8%2F4UAzACJ%2F5oAzACU%2F5oAzACV%2F5oAzACW%2F5oAzACX%2F5oAzACY%2F5oAzACa%2F5oAzACb%2F9cAzACc%2F9cAzACd%2F9cAzACe%2F9cAzACf%2F4UAzADD%2F5oAzQAk%2F3EAzQA3ACkAzQA5ACkAzQA6ACkAzQA8ABQAzQBE%2F64AzQBG%2F4UAzQBH%2F4UAzQBI%2F4UAzQBK%2F8MAzQBQ%2F8MAzQBR%2F8MAzQBS%2F4UAzQBT%2F8MAzQBU%2F4UAzQBV%2F8MAzQBW%2F8MAzQBY%2F8MAzQCC%2F3EAzQCD%2F3EAzQCE%2F3EAzQCF%2F3EAzQCG%2F3EAzQCH%2F3EAzQCfABQAzQCi%2F4UAzQCj%2F64AzQCk%2F64AzQCl%2F64AzQCm%2F64AzQCn%2F64AzQCo%2F64AzQCp%2F4UAzQCq%2F4UAzQCr%2F4UAzQCs%2F4UAzQCt%2F4UAzQC0%2F4UAzQC1%2F4UAzQC2%2F4UAzQC3%2F4UAzQC4%2F4UAzQC6%2F4UAzQC7%2F8MAzQC8%2F8MAzQC9%2F8MAzQC%2B%2F8MAzQDE%2F4UAzwAm%2F5oAzwAq%2F5oAzwAy%2F5oAzwA0%2F5oAzwA3%2F3EAzwA4%2F9cAzwA5%2F4UAzwA6%2F4UAzwA8%2F4UAzwCJ%2F5oAzwCU%2F5oAzwCV%2F5oAzwCW%2F5oAzwCX%2F5oAzwCY%2F5oAzwCa%2F5oAzwCb%2F9cAzwCc%2F9cAzwCd%2F9cAzwCe%2F9cAzwCf%2F4UAzwDD%2F5oAAAAaAT4AAQAAAAAAAAA5AHQAAQAAAAAAAQAJAMIAAQAAAAAAAgAGANoAAQAAAAAAAwAlAS0AAQAAAAAABAAQAXUAAQAAAAAABQAMAaAAAQAAAAAABgAPAc0AAQAAAAAABwBSAoMAAQAAAAAACAAUAwAAAQAAAAAACwAcA08AAQAAAAAADAAuA8oAAQAAAAAADQAuBFcAAQAAAAAADgAqBNwAAwABBAkAAAByAAAAAwABBAkAAQASAK4AAwABBAkAAgAMAMwAAwABBAkAAwBKAOEAAwABBAkABAAgAVMAAwABBAkABQAYAYYAAwABBAkABgAeAa0AAwABBAkABwCkAd0AAwABBAkACAAoAtYAAwABBAkACwA4AxUAAwABBAkADABcA2wAAwABBAkADQBcA%2FkAAwABBAkADgBUBIYARABpAGcAaQB0AGkAegBlAGQAIABkAGEAdABhACAAYwBvAHAAeQByAGkAZwBoAHQAIACpACAAMgAwADEAMAAtADIAMAAxADEALAAgAEcAbwBvAGcAbABlACAAQwBvAHIAcABvAHIAYQB0AGkAbwBuAC4AAERpZ2l0aXplZCBkYXRhIGNvcHlyaWdodCCpIDIwMTAtMjAxMSwgR29vZ2xlIENvcnBvcmF0aW9uLgAATwBwAGUAbgAgAFMAYQBuAHMAAE9wZW4gU2FucwAASQB0AGEAbABpAGMAAEl0YWxpYwAAQQBzAGMAZQBuAGQAZQByACAALQAgAE8AcABlAG4AIABTAGEAbgBzACAASQB0AGEAbABpAGMAIABCAHUAaQBsAGQAIAAxADAAMAAAQXNjZW5kZXIgLSBPcGVuIFNhbnMgSXRhbGljIEJ1aWxkIDEwMAAATwBwAGUAbgAgAFMAYQBuAHMAIABJAHQAYQBsAGkAYwAAT3BlbiBTYW5zIEl0YWxpYwAAVgBlAHIAcwBpAG8AbgAgADEALgAxADAAAFZlcnNpb24gMS4xMAAATwBwAGUAbgBTAGEAbgBzAC0ASQB0AGEAbABpAGMAAE9wZW5TYW5zLUl0YWxpYwAATwBwAGUAbgAgAFMAYQBuAHMAIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABHAG8AbwBnAGwAZQAgAGEAbgBkACAAbQBhAHkAIABiAGUAIAByAGUAZwBpAHMAdABlAHIAZQBkACAAaQBuACAAYwBlAHIAdABhAGkAbgAgAGoAdQByAGkAcwBkAGkAYwB0AGkAbwBuAHMALgAAT3BlbiBTYW5zIGlzIGEgdHJhZGVtYXJrIG9mIEdvb2dsZSBhbmQgbWF5IGJlIHJlZ2lzdGVyZWQgaW4gY2VydGFpbiBqdXJpc2RpY3Rpb25zLgAAQQBzAGMAZQBuAGQAZQByACAAQwBvAHIAcABvAHIAYQB0AGkAbwBuAABBc2NlbmRlciBDb3Jwb3JhdGlvbgAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGEAcwBjAGUAbgBkAGUAcgBjAG8AcgBwAC4AYwBvAG0ALwAAaHR0cDovL3d3dy5hc2NlbmRlcmNvcnAuY29tLwAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGEAcwBjAGUAbgBkAGUAcgBjAG8AcgBwAC4AYwBvAG0ALwB0AHkAcABlAGQAZQBzAGkAZwBuAGUAcgBzAC4AaAB0AG0AbAAAaHR0cDovL3d3dy5hc2NlbmRlcmNvcnAuY29tL3R5cGVkZXNpZ25lcnMuaHRtbAAATABpAGMAZQBuAHMAZQBkACAAdQBuAGQAZQByACAAdABoAGUAIABBAHAAYQBjAGgAZQAgAEwAaQBjAGUAbgBzAGUALAAgAFYAZQByAHMAaQBvAG4AIAAyAC4AMAAATGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMAAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGEAcABhAGMAaABlAC4AbwByAGcALwBsAGkAYwBlAG4AcwBlAHMALwBMAEkAQwBFAE4AUwBFAC0AMgAuADAAAGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAAAAAAAAgAA%2F%2FQAAP9mAGYAAAAAAAAAAAAAAAAAAAAAAAAAAADWAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA%2BAD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQCsAKMAhACFAL0AlgDoAIYAjgCLAJ0AqQCkAQIAigEDAIMAkwDyAPMAjQCXAIgAwwDeAPEAngCqAPUA9AD2AKIArQDJAMcArgBiAGMAkABkAMsAZQDIAMoAzwDMAM0AzgDpAGYA0wDQANEArwBnAPAAkQDWANQA1QBoAOsA7QCJAGoAaQBrAG0AbABuAKAAbwBxAHAAcgBzAHUAdAB2AHcA6gB4AHoAeQB7AH0AfAC4AKEAfwB%2BAIAAgQDsAO4AugDXALAAsQDYAN0A2QCyALMAtgC3AMQAtAC1AMUAhwC%2BAL8AvAEEAQUHdW5pMDBBRAlvdmVyc2NvcmUMZm91cnN1cGVyaW9yBEV1cm8AAAABAAMACAAKAA0AB%2F%2F%2FAA8AAAABAAAAAMmJbzEAAAAAyWNIwAAAAADJ7dha%29%20format%28%27truetype%27%29%3B%0A%7D%0A%40font%2Dface%20%7B%0Afont%2Dfamily%3A%20%27Open%20Sans%27%3B%0Afont%2Dstyle%3A%20italic%3B%0Afont%2Dweight%3A%20600%3B%0Asrc%3A%20url%28data%3Aapplication%2Fx%2Dfont%2Dtruetype%3Bbase64%2CAAEAAAAQAQAABAAARkZUTVzakCwAAIdAAAAAHE9TLzKiF7fYAAABiAAAAGBjbWFwjOjcmQAABUAAAAGyY3Z0IBCQGPYAAA%2FAAAAApmZwZ21%2BYbYRAAAG9AAAB7RnYXNwAAgAGwAAhzQAAAAMZ2x5ZlP99RUAABIYAABI%2BGhlYWT4yBTmAAABDAAAADZoaGVhDlsE5gAAAUQAAAAkaG10eH8IOQoAAAHoAAADWGtlcm4Mlg8JAABbEAAAIwRsb2NhVbZEUAAAEGgAAAGubWF4cAJpAQYAAAFoAAAAIG5hbWUVGrLBAAB%2BFAAAByxwb3N0gmzp1QAAhUAAAAHycHJlcHisnCUAAA6oAAABGAABAAAAARmaflhYuV8PPPUAHwgAAAAAAMnt2GQAAAAAye3YZP4C%2FhQHtAdzAAMACAACAAAAAAAAAAEAAAiN%2FagAAAgA%2FgL%2BBAe0AGQAFQAAAAAAAAAAAAAAAADWAAEAAADWAEUABQA8AAQAAgAQAC8AXAAAARoAUwADAAEAAwQvAlgABQAIBZoFMwAAAR8FmgUzAAAD0QBmAgAAAAILBwYDCAQCAgTgAALvQAAgWwAAACgAAAAAMUFTQwAhACAgrAYf%2FhQAhAiNAlggAAGfAAAAAARSBbYAAAAgAAEIAAAAAAAAAAQUAAACFAAAAi0AIQNaANUFKwAzBGgAPQaYAI0FgwBCAeMA1QJ%2FAE4Cf%2F9mBGIAwQRoAHUCEv%2BaAokALwInACEDFP%2BkBGgAXARoAPIEaP%2FuBGgAHwRo%2F%2FwEaAA1BGgAbwRoAH0EaABMBGgAXAInACECJ%2F%2BcBGgAcwRoAHUEaABzA4sAogbPAGQEuv%2BHBN8ARgTJAIcFXgBGBDUARgQCAEYFdwCHBYMARgJgAEYCZP6%2BBK4ARgP4AEYG3QBEBdMARAXNAIcElgBGBc0AhwS2AEYEIQAnBB0AsAV3AJgEjQC6BvwAywR%2F%2F5EERAC6BET%2F2QJ3%2F%2BUDFADdAnf%2FcQQtACUDLf9EBG8CHQSiAF4EsAAvA7oAXgSuAF4EMwBeAr7%2FHwQr%2F4cEuAAvAjMALwIz%2FvoEOQAvAjMALwcbAC8EuAAvBJYAXgSw%2F8kErgBeA0QALwOaAA4C8ABcBLgAbwPlAGQGBAB5BAj%2FqgPs%2F1YDmP%2FZAtEACARoAfIC0f%2BoBGgAbwIUAAACLf%2FTBGgAwwRo%2F%2B4EaACNBGgAagRoAfID4wAnBG8BqgaoAIMC2QCgBB8AUARoAHUCiQAvBqgAgwOHAG8DbQC8BGgAdQLpAE4C6QBoBG8B%2FATF%2F8kFPQCsAicAlgGk%2F0QC6QDBAtEApAQfAAoGfQCVBn0AeQaTAGwDi%2F%2FdBLr%2FhwS6%2F4cEuv%2BHBLr%2FhwS6%2F4cEuv%2BHBtn%2FhwTJAIcENQBGBDUARgQ1AEYENQBGAmAARgJgAEYCYABGAmAARgVeADUF0wBEBc0AhwXNAIcFzQCHBc0AhwXNAIcEaACTBc0AbQV3AJgFdwCYBXcAmAV3AJgERAC6BJYARgTy%2Fv4EogBeBKIAXgSiAF4EogBeBKIAXgSiAF4GvgBeA7oAXgQzAF4EMwBeBDMAXgQzAF4CMwAvAjMALwIzAC8CMwAvBJYAUAS4AC8ElgBeBJYAXgSWAF4ElgBeBJYAXgRoAHUElgAzBLgAbwS4AG8EuABvBLgAbwPs%2F1YEsP%2FJA%2Bz%2FVgIzAC8HBgCHBvwAXgRvAWIEngIdBG8BRgPXAC8HrgAvAYkAdwGJAHMCEv%2BaAyMAdwMjAHMDqv%2BaAvQAmAJtAFACbQAKAQb%2BAgLpAEYEaAAzAAAAAwAAAAMAAAAcAAEAAAAAAKwAAwABAAAAHAAEAJAAAAAgACAABAAAAH4A%2FwExAVMCxgLaAtwgFCAaIB4gIiA6IEQgdCCs%2F%2F8AAAAgAKABMQFSAsYC2gLcIBMgGCAcICIgOSBEIHQgrP%2F%2F%2F%2BP%2Fwv%2BR%2F3H9%2F%2F3s%2FevgteCy4LHgruCY4I%2FgYOApAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQYAAAEAAAAAAAAAAQIAAAACAAAAAAAAAAAAAAAAAAAAAQAAAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0%2BP0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGEAhoeJi5OYnqOipKalp6mrqqytr66wsbO1tLa4t7y7vb4AcmRladB4oXBrAHZqAIiaAHMAAGd3AAAAAABsfACouoFjbgAAAABtfQBigoWXw8TIyc3Oysu5AMEA09XR0gAAAHnMzwCEjIONio%2BQkY6VlgCUnJ2bwsXHcQAAxnoAAAAAAEBHW1pZWFVUU1JRUE9OTUxLSklIR0ZFRENCQUA%2FPj08Ozo5ODc2NTEwLy4tLCgnJiUkIyIhHxgUERAPDg0LCgkIBwYFBAMCAQAsILABYEWwAyUgEUZhI0UjYUgtLCBFGGhELSxFI0ZgsCBhILBGYLAEJiNISC0sRSNGI2GwIGAgsCZhsCBhsAQmI0hILSxFI0ZgsEBhILBmYLAEJiNISC0sRSNGI2GwQGAgsCZhsEBhsAQmI0hILSwBECA8ADwtLCBFIyCwzUQjILgBWlFYIyCwjUQjWSCw7VFYIyCwTUQjWSCwBCZRWCMgsA1EI1khIS0sICBFGGhEILABYCBFsEZ2aIpFYEQtLAGxCwpDI0NlCi0sALEKC0MjQwstLACwKCNwsQEoPgGwKCNwsQIoRTqxAgAIDS0sIEWwAyVFYWSwUFFYRUQbISFZLSxJsA4jRC0sIEWwAENgRC0sAbAGQ7AHQ2UKLSwgabBAYbAAiyCxLMCKjLgQAGJgKwxkI2RhXFiwA2FZLSyKA0WKioewESuwKSNEsCl65BgtLEVlsCwjREWwKyNELSxLUlhFRBshIVktLEtRWEVEGyEhWS0sAbAFJRAjIIr1ALABYCPt7C0sAbAFJRAjIIr1ALABYSPt7C0sAbAGJRD1AO3sLSywAkOwAVJYISEhISEbRiNGYIqKRiMgRopgimG4%2F4BiIyAQI4qxDAyKcEVgILAAUFiwAWG4%2F7qLG7BGjFmwEGBoATpZLSwgRbADJUZSS7ATUVtYsAIlRiBoYbADJbADJT8jITgbIRFZLSwgRbADJUZQWLACJUYgaGGwAyWwAyU%2FIyE4GyERWS0sALAHQ7AGQwstLCEhDGQjZIu4QABiLSwhsIBRWAxkI2SLuCAAYhuyAEAvK1mwAmAtLCGwwFFYDGQjZIu4FVViG7IAgC8rWbACYC0sDGQjZIu4QABiYCMhLSxLU1iKsAQlSWQjRWmwQIthsIBisCBharAOI0QjELAO9hshI4oSESA5L1ktLEtTWCCwAyVJZGkgsAUmsAYlSWQjYbCAYrAgYWqwDiNEsAQmELAO9ooQsA4jRLAO9rAOI0SwDu0birAEJhESIDkjIDkvL1ktLEUjRWAjRWAjRWAjdmgYsIBiIC0ssEgrLSwgRbAAVFiwQEQgRbBAYUQbISFZLSxFsTAvRSNFYWCwAWBpRC0sS1FYsC8jcLAUI0IbISFZLSxLUVggsAMlRWlTWEQbISFZGyEhWS0sRbAUQ7AAYGOwAWBpRC0ssC9FRC0sRSMgRYpgRC0sRSNFYEQtLEsjUVi5ADP%2F4LE0IBuzMwA0AFlERC0ssBZDWLADJkWKWGRmsB9gG2SwIGBmIFgbIbBAWbABYVkjWGVZsCkjRCMQsCngGyEhISEhWS0ssAJDVFhLUyNLUVpYOBshIVkbISEhIVktLLAWQ1iwBCVFZLAgYGYgWBshsEBZsAFhI1gbZVmwKSNEsAUlsAglCCBYAhsDWbAEJRCwBSUgRrAEJSNCPLAEJbAHJQiwByUQsAYlIEawBCWwAWAjQjwgWAEbAFmwBCUQsAUlsCngsCkgRWVEsAclELAGJbAp4LAFJbAIJQggWAIbA1mwBSWwAyVDSLAEJbAHJQiwBiWwAyWwAWBDSBshWSEhISEhISEtLAKwBCUgIEawBCUjQrAFJQiwAyVFSCEhISEtLAKwAyUgsAQlCLACJUNIISEhLSxFIyBFGCCwAFAgWCNlI1kjaCCwQFBYIbBAWSNYZVmKYEQtLEtTI0tRWlggRYpgRBshIVktLEtUWCBFimBEGyEhWS0sS1MjS1FaWDgbISFZLSywACFLVFg4GyEhWS0ssAJDVFiwRisbISEhIVktLLACQ1RYsEcrGyEhIVktLLACQ1RYsEgrGyEhISFZLSywAkNUWLBJKxshISFZLSwgiggjS1OKS1FaWCM4GyEhWS0sALACJUmwAFNYILBAOBEbIVktLAFGI0ZgI0ZhIyAQIEaKYbj%2FgGKKsUBAinBFYGg6LSwgiiNJZIojU1g8GyFZLSxLUlh9G3pZLSywEgBLAUtUQi0ssQIAQrEjAYhRsUABiFNaWLkQAAAgiFRYsgIBAkNgQlmxJAGIUVi5IAAAQIhUWLICAgJDYEKxJAGIVFiyAiACQ2BCAEsBS1JYsgIIAkNgQlkbuUAAAICIVFiyAgQCQ2BCWblAAACAY7gBAIhUWLICCAJDYEJZuUAAAQBjuAIAiFRYsgIQAkNgQlmxJgGIUVi5QAACAGO4BACIVFiyAkACQ2BCWblAAAQAY7gIAIhUWLICgAJDYEJZWVlZWVmxAAJDVFhACgVACEAJQAwCDQIbsQECQ1RYsgVACLoBAAAJAQCzDAENARuxgAJDUliyBUAIuAGAsQlAG7IFQAi6AYAACQFAWblAAACAiFW5QAACAGO4BACIVVpYswwADQEbswwADQFZWVlCQkJCQi0sRRhoI0tRWCMgRSBksEBQWHxZaIpgWUQtLLAAFrACJbACJQGwASM%2BALACIz6xAQIGDLAKI2VCsAsjQgGwASM%2FALACIz%2BxAQIGDLAGI2VCsAcjQrABFgEtLLCAsAJDULABsAJDVFtYISMQsCAayRuKEO1ZLSywWSstLIoQ5S1ApQkhSCBVIAEeVR9IHlUfHgEPHj8erx4DT0YcH05NGx9NRhofJjQQVSUk%2Fx8ZE%2F8fBwT%2FHwYD%2Fx9MSxwfS0YbHxMzElUFAQNVBDMDVR8DAQ8DPwOvAwPLSttK60oDy0kBSEYSH0dGEh9JRgEjSCJVHDMbVRYzFVURAQ9VEDMPVc8PAR8PAQ8P3w%2F%2FDwMGAgEAVQEzAFVvAH8ArwDvAAQQAAGAFgEFAbgBkLFUUysrS7gH%2F1JLsAlQW7ABiLAlU7ABiLBAUVqwBoiwAFVaW1ixAQGOWYWNjQBCHUuwMlNYsCAdWUuwZFNYsBAdsRYAQllzcysrXnN0dCsrKysrdCsrc3NzdCsrKysrKysrKysrKytzdCsrKxheBhQAFwBOBbYAFwB1BbYFzQAAAAAAAAAAAAAAAAAABFIAFACGAAD%2F7AAAAAD%2F7AAAAAD%2F7AAA%2FhT%2F7AAABbYAFfyU%2F%2Bv%2Bef%2F0%2Fqj%2BqAAX%2FrwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAwAC4ALAAowCUAMAAzQDFAM8AugCaATEAsgAAAAAAAAAAAAAAAAAsAEoAngEIAXIB3AHwAhACMAJaAnwClAKoAsQC2gMWAzYDdAPIBAQERgSeBL4FHAVwBaIF0AXqBg4GKAZ2BvYHJgdyB6oH4AgOCDQIfAikCLgI3AkGCSAJVgmGCcYJ%2BgpGCoIKygrqCxwLQguEC64Lzgv2DBIMJgxCDF4McAyKDNINIA1UDaQN8A42DroO9g8mD2oPmA%2BqD%2FoQMhBsELYRBBEuEXIRsBHqEgwSThJ4Eq4S2BMmEzgThBO8E7wT5hQqFHYUwBUKFSgVjhW8FiwWbBaWFrAWuBcsFz4XbBeeF9IYGhg0GHIYmBiiGNAY8BkiGU4ZZBl6GZAZ4hn0GgYaGBoqGj4aUBqaGqYauBrKGtwa8BsCGxQbJhs6G4YbmBuqG7wbzhvgG%2FQcIBx%2BHJAcohy0HMgc2h0SHXwdjh2gHbIdxB3WHegeaB50HoYemB6qHrwezh7gHvIfBh9oH3ofjB%2BeH7Afwh%2FUIBAgaiB8II4goCCyIMQhFCEmITghkiIGIigiXCKSIqQitiLQIuwjAiMqI1QjeCOSI6wjxiPcJBIkfAAAAAIAIf%2FlAlgFtgADAA8AGEALAQENAgMNB1FZDRMAPysAGD8SOS8xMAEjEyEBNDYzMhYVFAYjIiYBULCoARD9yVtVOUReTD5FAbwD%2BvqqUGRBPU9iQwAAAAACANUDpgN9BbYAAwAHAA20BgIHAwMAPzPNMjEwAQMjEyEDIxMCBJeYSAJgmJlKBbb98AIQ%2FfACEAAAAAACADMAAAU3BbYAGwAfADNAGAAfEBAZFREECAwMARwNEQ0RChcTAwYKEgA%2FMz8zEjk5Ly8zMzMRMzMRMzMzETMzMTABAyEHIQMjEyMDIxMjNyETITchEzMDMxMzAzMHATMTIwQMVAEPD%2F7RebR7%2BHmudfoRARhU%2FvgQASd5snn8ea55%2FA785fpS%2BgNo%2FuKo%2Fl4Bov5eAaKoAR6oAab%2BWgGm%2Flqo%2FuIBHgADAD3%2FiQRIBhIAHwAlACsAQUAiFUAPEkgcJQ0DKysTBAZAIAwGDE9ZAwYVE0AbJhMmTVkWEwAvMysRADMaGBDNLzMrEQAzGhgQzRI5ERczKzEwARQGDwEjNyYnNR4BFxMuATU0Nj8BMwcWFwcmJwMeAgE%2BATU0JwMOARUUFwPb79othy3FiU7LXFSch%2B3OJYcjoYBWhm5QgHU4%2FmBWZXMOWVluAe6s0hTT0w1D0So4AgGDOKV1p8kRo6UQQrlCCP6NM1hy%2FuELYk1lLAJEC11MYikAAAUAjf%2FsBkYFywALABkAHQApADcAJ0ATHjUGEDUQNRAcHQMcEgAXByQuEwA%2FMz8zPz8SOTkvLxEzETMxMAEiDgEVFDMyPgE1NBcUAgYjIiY1NBI2MzIWJQEjARMiDgEVFDMyPgE1NBcUAgYjIiY1NBI2MzIWAhI3WDVQNFc7wW%2B2c3yEarN3f4UCwvvDwwQ%2BDDRXOVE0WDvBb7Zxf4Vqs3Z%2FiAUjeuBnh3TrZoOBoP7Nmp6VpgEnlpiD%2BkoFtv0lc%2BNshnXoaIN%2Fof7LmpmSqwEqlZYAAwBC%2F%2BwFWgXNAAoAFAAxADRAHQUYIw8ELx0kDiksBCYmHSsSHQBLWR0ELwtLWS8TAD8rABg%2FKwAYPxI5Ehc5ERIXOTEwASIGFRQXPgE1NCYBMjY3AQ4BFRQWJTQ2NyY1NDYzMhYVFAYHEzY3MwIHEyEnDgEjIiYC7FdePpNpSP7TTYxK%2FviFYXD%2BoavJWOG5oLizzOttSOlxuM3%2B615q0ny%2B0wUSbFhtXEt1REJH%2B542NwF9SodWVm2uk9Zil4S01aKJgcpb%2Frpwt%2F7yuP7pg1BHwwABANUDpgIEBbYAAwAJsgIDAwA%2FzTEwAQMjEwIEl5hIBbb98AIQAAAAAQBO%2FrwDFwW2AAoACrMJJwMDAD8%2FMTATEBIBMwAREBMjAk75AP%2FR%2Fg5zt5MBFAFXAkMBCP3c%2FX7%2Bt%2F71AQUAAAH%2FZv68Ai8FtgAKAAqzBCcIAwA%2FPzEwARACASMAERADMxICL%2Fb%2B%2FtEB8nO3kwNc%2Fqr9wf71AiQCggFHAQ3%2B9wABAMECVgSDBh8ADgAJsgYOAAA%2FzTEwAQMlByUTBwsBJwElNwUTA2R0AZMM%2FpGqzWbjogEl%2FqJHAWIlBfT%2BkRfNLf6XPQFz%2FsiQAQpkw7IBfwAAAAABAHUBAAQdBKgACwAStwkBAgFSWQYCAC8zKxEAMzEwASE1IREzESEVIREjAfD%2BhQF7tAF5%2Foe0Ane0AX3%2Bg7T%2BiQAAAAH%2Fmv74AVYA7gAGAAixBAAAL80xMCUXAgcjNhMBTgh9jbJpX%2B4X%2Fvzb7gEIAAAAAAEALwG%2BAlICiQADAAu0AQBMWQEALysxMBM3IQcvLQH2LQG%2By8sAAAABACH%2F4wFOARQACwAMtQkDUVkJEwA%2FKzEwNzQ2MzIWFRQGIyImIV5UOENfTUI%2FXlNjPz1OZ0cAAAH%2FpAAAA7gFtgADAAqzAwMCEgA%2FPzEwCQEjAQO4%2FNXpAysFtvpKBbYAAAAAAgBc%2F%2BwETAXNAA0AGgAXQAwLDk1ZCwcEFU1ZBBkAPysAGD8rMTABEAIEIyICNRASJDMyFiUiBgIVFBYzMjYSNRAETJ7%2B6LnCv6YBF7a7wv5wYaZrTlpkpWMD9P7O%2Fh%2F1AP%2FsARwB5PbtKOD%2Bb8KPluMBltMBDAAAAQDyAAADtAW2AAoAELYHBAEJBgEYAD8%2FEjk5MTAhIxM2NwYPAScBMwJ97r0cNjlOu2oB%2FMYDZpauNy91qgE9AAH%2F7gAABD8FywAbAB1ADxEKTVkRBwIaAQEaTlkBGAA%2FKxESADkYPysxMCkBNwE%2BAjU0JiMiBgcnPgEzMhYVFA4BBwEVIQOP%2FF8kAdewfThjWkaKZXN43nW11k6oyP7JAm60AaafkHtGVWM8T6BhU7qebLrDq%2F74CAAAAAABAB%2F%2F7AQ%2FBcsAKAAtQBcDFxgYF09ZGBgLJiYfTVkmBwsRTVkLGQA%2FKwAYPysREgA5GC8rERIAOTEwARQGBxUeARUUBgQjIic1HgEzMjY1NCEjNzMyNjU0JiMiBgcnPgEzMhYEP8aqf4uI%2Fv%2Bw4aBUy16dsP7qhSVqpM9jWkiVWGh403m3zgSBntQfBxike4XPck%2FXMTWPfdu3lX1PWzM7oVFBsQAAAAAC%2F%2FwAAARCBboACgASAClAFwEFEgVNWQkPEh8SAlASARISAw8HBgMYAD8%2FMxI5L11dMysRADMxMAEjAyMTITcBMwMzIRM2NyMGBwEEF8lE5UX9kiUDI%2F7Jyf5RRB9FCDNU%2FloBPf7DAT3FA7j8SAE1iPFWZP4MAAABADX%2F7ARYBbYAGwAmQBQAEk9ZAAAHFhYZTlkWBgcMTVkHGQA%2FKwAYPysREgA5GC8rMTABMhYVFAYEIyInNRYzMjY1NCYjIgcnEyEHIQM2AmK114z%2B9L7WjaevrcJ8fl%2BCWMgCyS3%2BBmpdA4vPtqH0hU%2FZZKaTaX8jRALE0f6UEgAAAAACAG%2F%2F7ARtBcsAGQAoAC1AFw0XEBAgT1kQEBcFBQpNWQUHFxpNWRcZAD8rABg%2FKxESADkYLysREgA5MTATNBoBJDMyFwcmIyIAAzM2MzIWFRQCBiMiJgUyPgE1NCMiDgMXFBZvedEBJcR1VitIbc3%2B%2BEEGfcmcr4nqmcLRAaNRfESyM1lFMB4CYwG%2BzQGSARySGcIW%2Fv3%2B%2BarGraL%2B6o%2FwLmGsZsgmOkddQ26GAAAAAAEAfQAABJwFtgAGABhACwAYBQIDAwJOWQMGAD8rERIAORg%2FMTAzASE3IQcBfQLy%2FV4rA6Qh%2FQoE6c2o%2BvIAAAADAEz%2F7AReBc0AFwAjAC8AKUAUBhIYGCoqDQAAJE9ZAAcNHk9ZDRkAPysAGD8rERIAORgvMxI5OTEwATIWFRQGBx4BFRQOASMiJjUQJS4BNTQ2Ew4BFRQWMzI2NTQmEyIGFRQWFz4BNTQmAtuz0J6peGl75J3L5QFwW0%2F%2BQpWGdmNzi2EaXXJOQXN9YAXNspaEw0JOr3J5v2nIqAEph0aWV7Pb%2FNM2kWhdcIBnW4UCqXBcU2wnK3xfUVsAAAIAXP%2FsBDcFywAZACYALUAXDhAXECFPWRAQBRcXGk1ZFwcFCk1ZBRkAPysAGD8rERIAORgvKxESADkxMAEUCgEEIyInNRYzMjYTIwYjIiY1NBI2MzIWJSIOARUUFjMyNjU0JgQ3dL3%2B%2BbOFa3lzvOw7BnHApbWG75vAzf5hUn9EXFh1omAD%2Bs3%2BXf7phyDPK%2FYBCqDMupwBCo%2FvLF6mYGluvJJsgQAAAAIAIf%2FjAfoEagALABcAF0AMAwlRWQMQFQ9RWRUWAD8rABg%2FKzEwEzQ2MzIWFRQGIyImAzQ2MzIWFRQGIyImzV5UOENhTUI9rF5UOENfTUI%2FA7RTYz89T2ZH%2FN5TYz89TmdHAAAC%2F5z%2B%2BAH6BGoABgASABVACQRABgoQUVkKEAA%2FKwAYLxrOMTAlFwIHIzYbATQ2MzIWFRQGIyImAU4IfY2wX2drXlQ4Q2FNQj3uF%2F7829YBIALGU2M%2FPU9mRwAAAAEAcwDdBBsE7AAGAAixAAMAL8YxMCUBNQEVCQEEG%2FxYA6j9RwK53QGueQHow%2F6o%2FtEAAAACAHUBrgQdA%2FIAAwAHAB9AEQQFUlkEAQEAUlkPAQGQAQEBAC9dXSsAGBDGKzEwEzUhFQE1IRV1A6j8WAOoAz%2Bzs%2F5vtLQAAAABAHMA3QQbBOwABgAIsQYDAC%2FGMTATCQE1ARUBcwK2%2FUoDqPxYAaIBLwFYw%2F4Yef5SAAAAAgCi%2F%2BUDwwXLABkAJQAlQBIHEAAAIxAjHVFZIxYQCk1ZEAQAPysAGD8rERIAORgvEjkxMAE%2BATc%2BAjU0JiMiBgcnNjMyFhUUBgcOAQcBNDYzMhYVFAYjIiYBBBJre2tPJVVRTZJOTs%2FLq8R%2FqGhcD%2F7ZXlQ4Q2JMQj0BvIWvWk1QUTBGWDclsHGrnXjDd0p2Vf6iU2M%2FPU9kRQAAAgBk%2F0YGqgW0ADgARAAsQBQHCjkRESg1BAoaPz8KCi0hNQMoLQAvMz8zEjkvMxEzETMREjkvMxI5MTABFAIGIyImJyMGIyImNTQSNjMyHgEXAwYVFDMyPgE1NCQjIgQCFRAAMzI3FQYjIiQCNRASJCEyBBIFIg4BFRQzMjY%2FASYGqnfWhGJpDAZlsHuFh%2FGPNFVKXGUeT0h8R%2F7%2F69b%2Bqr8BGfvI5tvr0v7GqfUBuQERyAEkm%2F0zVpFScFJ3KUA1A06w%2FtumXEqmnYyXAQGVChAf%2FnhyLVyF2Hrk78f%2BlOD%2B%2Ff7kVptapwE40QEOAbb6lf7odmu1Z52QlPAQAAAAAAL%2FhwAABE4FuAAHAA4AGkANDgFMWQ4OBAcDEgsEAwA%2FMz8zEjkvKzEwASEDIwEhEyMDAiY1BgcDAzv%2BG9H%2BAw8BEqbqOSgLN1esAZb%2BagW4%2BkgCZgGgrzSLqP6wAAAAAAMARgAABMsFtgAPABcAIAAtQBcGIBAQIEtZEBAODw8XTFkPAw4YTFkOEgA%2FKwAYPysREgA5GC8rERIAOTEwATIWFRQGBxUeARUUBCkBARMzMjY1NCsBAzMyNjU0JisBAwre462ZbHf%2B1P71%2FhUBNW7Hi5jftePfk6d4dMgFtqikksIeCByXbNn4Bbb9pHlvrPvbiH5iZwAAAQCH%2F%2BwFIQXLABgAF0AMEwBMWRMEDAdMWQwTAD8rABg%2FKzEwASIGAhUUFjMyNxUGIyIAERASJDMyFwcuAQOcmvKRpaGNvLTC%2BP7n0wFg4tmsXj%2BOBP6y%2FqvMtL9EzUMBKQEMAQQBvuhcwyIwAAAAAAIARgAABR8FtgAJABMAF0AMBhJMWQYDBRNMWQUSAD8rABg%2FKzEwARACBCkBASEgAAEyJBI1NCYrAQMFH8j%2Bgv7%2B%2Fm8BNQFxAQ8BJPzEsQEIjbCokuMDff7x%2FmzaBbb%2B3vw1rAE4yLjB%2B9sAAAEARgAABIMFtgALACZAFAYJTFkGBgECAgVMWQIDAQpMWQESAD8rABg%2FKxESADkYLysxMCkBASEHIQMhByEDIQNO%2FPgBNQMIK%2F3lVAH2Kf4IYAIbBbbN%2FnXL%2FjgAAQBGAAAEgQW2AAkAHUAPBglMWQYGAgESAgVMWQIDAD8rABg%2FEjkvKzEwISMBIQchAyEHIQEz7QE1AwYr%2FedgAfYt%2FgwFts3%2BOssAAAEAh%2F%2FsBVwFywAdACZAFAAdTFkAAAUMDBJMWQwEBRlMWQUTAD8rABg%2FKxESADkYLysxMAEhAw4BIyAAERASJDMyFhcHJiMiBAIVFBYzMjcTIQMSAgCdcNWE%2Fvv%2B4M0Bd%2B9vzGdarqCe%2Fv6VsqRtalD%2B6wMZ%2FSAoJQEkAQsBCAG28ikxy1a1%2FrHNt7whAXMAAAEARgAABYsFtgALABpADQgDTFkICAUKBgMBBRIAPzM%2FMxI5LysxMCEjEyEDIwEzAyETMwRW7oz9yovtATXtfwI2f%2B0Ck%2F1tBbb9qgJWAAAAAQBGAAACaAW2AAMACrMBAwASAD8%2FMTAzATMBRgE36%2F7JBbb6SgAAAAH%2Bvv5oAnMFtgAMABG3CAMABUxZACMAPysAGD8xMAMiJzcWMzI3ATMBDgGYaEIFVEXJNQEr7v7PLuf%2BaBnJFfoFh%2Fpa2c8AAAEARgAABWYFtgAMABVACQgCBQoGAwEFEgA%2FMz8zEjk5MTApAQMHAyMBMwM3ASEBBD%2F%2B%2BvyVde0BNe2XjQHsARz9mAKPZP3VBbb9PqYCHP1jAAAAAAEARgAAA3kFtgAFABG3AQMAA0xZABIAPysAGD8xMDMBMwEhB0YBNe3%2B9gIbKwW2%2BxfNAAABAEQAAAblBbYAEwAbQAwRAgIJBgsHAwAOBhIAPzMzPzMSOTkRMzEwIQMjBgcDIwEhEzMBIQEjEzY3IwECh3MGCS642wE1AUNtBgJeAVj%2Bz%2BO2Jy8G%2FX0Evnbe%2FJYFtvuDBH36SgNoupz7QgABAEQAAAXdBbYAEQAVQAkDCwgQCQMBCBIAPzM%2FMxI5OTEwKQEBIwcOAQMjASEBMzYSNxMzBKj%2B%2FP5mBgoYF6zbATUBDAGPBwYyD6DbBItFlX%2F8zgW2%2B4M2ARVBAvEAAAACAIf%2F7AWNBc0ADQAbABdADAsOTFkLBAQVTFkEEwA%2FKwAYPysxMAEQAgQjIAAREBIkMzIAJSIGAhUUFjMyNhI1NCYFjb7%2Bs9z%2B%2Ff7kxQFW2fsBF%2F3biuB%2Fo5KK3XueA5r%2B6f5M4wErAQgBCwG56v7WXcD%2Bq8qtvL8BU86qvgAAAAIARgAABJYFtgAIABMAHUAPDQBMWQ0NEA8SEAhMWRADAD8rABg%2FEjkvKzEwATMyNjU0JisBBRQAISMDIwEhMhYB0V6yw3V5dwJX%2Fq3%2B0W5z7QE1AU7l6ALsn5JtZMn4%2Fvb93QW2yQAAAgCH%2FqQFjQXNABAAHgAjQBEFBw4RTFkOBAMYBwcYTFkHEwA%2FKxESADkYPysAGBDGMTABEAAHASEDIyAAERASJDMyACUiBgIVFBYzMjYSNTQmBY3%2B%2FOEBCP7fyh%2F%2B%2Ff7kxQFW2fsBF%2F3biuB%2Fo5KK3XueA5r%2Bvv4eW%2F6JAUgBKwEIAQsBuer%2B1l3A%2FqvKrby8AVPRqr4AAAACAEYAAASaBbYADQAWACZAEwoADg4AS1kODgMMAhIDFkxZAwMAPysAGD8zEjkvKxESADkxMAEDIwEhMhYVFAYHEyEDJzMyNjU0JisBAa577QE1AVLf7q2r%2Bf78z497qqh2fHcCSP24Bba9xKXjNP2HAkjGloNpXAABACf%2F7AQ7BcsAJAAgQBALHgMWFhtMWRYEAwhMWQMTAD8rABg%2FKxESADk5MTABFAQjIic1FjMyNjU0JicuAjU0PgEzMhcHJiMiBhUUHgEXHgEDov7f%2FtKKrbGJnlKDaWQ1e%2BGNzbBWoYZthB4%2FZ5t2AazS7kvgYXVoRWtTQ26DT4DGbFy%2FTnVeL0c9QWG1AAABALAAAATDBbYABwAWQAoBEgcDBANMWQQDAD8rEQAzGD8xMCEjASE3IQchAhDtAQj%2BhS0D5iv%2BgwTpzc0AAAAAAQCY%2F%2BwFiwW2ABUAFEAJFQoDBBFMWQQTAD8rABg%2FMzEwAQMCACMiJjU0NxMzAwYVFBYzMjY3EwWLyjj%2B0PvZ7RTB7cAVd3mRqifHBbb8RP71%2Fv3Ux1NXA4X8d1hGZnGhtQOoAAEAugAABUgFtgAMABC2DAYDBwMGEgA%2FPzMSOTEwJTY3ATMBIQMzExYXBwH6RkMBx%2F79BP7%2BkOhKCQIB%2BLKDA4n6SgW2%2FHdngkwAAAABAMsAAAe0BbYAHAAbQAwXDgUOCRsSCgMBCRIAPzM%2FMzMSOTkRMzEwKQEDJzcjBgcBIQMzExQHMzY3ATMTFwczPgE3ATMFJf7%2BJQYEBi9G%2Fn%2F%2FADXlEw0GUzsBg%2BEfAwMIHFQTAWb2A0q5apCT%2FLYFtvyuiNLdhgNJ%2FLmpvFjbKwNOAAAB%2F5EAAAUlBbYACwAVQAkCCAQJBgMBBBIAPzM%2FMxI5OTEwKQEDASEBAzMTASEBBBD%2FAMD%2BSv73Akr69rIBkgEK%2FdkCUP2wAwICtP3kAhz9OgAAAAABALoAAAUABbYACAAQtgAFAQcDBRIAPz8zEjkxMAkBIQEDIxMDMwJGAbABCv2Rcu537vIDGQKd%2FG%2F92wIpA40AAf%2FZAAAEogW2AAkAIEAQBwQFBExZBQMCCAEITFkBEgA%2FKxEAMxg%2FKxEAMzEwKQE3ASE3IQcBIQOF%2FFQhA1L9qisDgSP8rAKFqAQ%2Fz6z7wwAB%2F%2BX%2BvAMQBbYABwAOtQUCAwYBJwA%2FMz8zMTABIQEhByMBMwGT%2FlIBfQGuJ93%2B0d3%2BvAb6sPpnAAEA3QAAAocFtgADAAqzAwMCEgA%2FPzEwARMjAwGs29HZBbb6SgW2AAAB%2F3H%2BvAKaBbYABwAOtQMEAwAHJwA%2FMz8zMTAHMwEjNyEBIWrbATHdJwGu%2FoP%2BVJMFmbD5BgAAAAEAJQIZBBQFvgAGAA60BQIABAIALy8zEjkxMBMBMwEjAwElAmB%2FARC4vP5OAhkDpfxbArL9TgAAAf9E%2FrwCk%2F9IAAMACLEBAgAvMzEwASE3IQJ1%2FM8eAzH%2BvIwAAQIdBNkDlgYhAAgACrIGgAEALxrNMTABIy4BJzUzFhcDlpBBhiL1L1UE2T%2BxQxWalQAAAAIAXv%2FsBH8EZgASACAAJ0AUCxEABwwPBxpGWQcQDxUAE0ZZABYAPysAGD8%2FKwAYPxESOTkxMAUiJjU0EjYzMhYXMzczAyM3IwYnMjYSNTQmIyIGAhUUFgGPjaSL9JJhjCcKPrTsthUGnmlSnmZeTFWWWlEUy7jKAWDNW1ee%2B66wxL6bAQSaWGua%2FveOZmUAAAIAL%2F%2FsBFAGFAAWACMAJ0AUBAwAEAcABhUQF0ZZEBAAHkZZABYAPysAGD8rABg%2FPxESOTkxMAUiJicjByMBMwMOAQczPgEzMhYVFAIGAyIGAhUUFjMyNhI1NAJCYo0oCkCyAUrrRw0yDwhallaRoovyDFGiY11VVZRWFFpWnAYU%2FrM%2Fuy9xV8%2B2yv6dyAO6oP77jGBrnQEHj8kAAAEAXv%2FsA80EZgAXABdADAcMRlkHEAASRlkAFgA%2FKwAYPysxMAUiJjU0EiQzMhcHJiMiAhUUFjMyNjcVBgH6xNiTAQqppIVGemOWyHBjSoFBjBTUxc8BU789uDX%2BzeJveCwgw0cAAAAAAgBe%2F%2BwE3QYUABQAIQAuQBgDCw4ABgAAHEZZABAJCkhZCRUOFUZZDhYAPysAGD8rABg%2FKwAYPxESOTkxMAEyFzM2NxMzASM3Iw4BIyImNTQSNhMyNhI1NCYjIgYCFRQCb7NZCA0YTOn%2BtrgTB1ikXI%2Bij%2FAMUqFhV1lVlFgEZrKSaAFm%2BeywalrLus0BZMT8RKQBCIdbbpr%2B9IvLAAAAAAIAXv%2FsA%2FoEZgAJACMAJkAUAxhIWQMDChERAEhZERAKHUdZChYAPysAGD8rERIAORgvKzEwASIGBzMyNjU0JgMiJjU0EiQzMhYVFAQhIwcVFBYzMjY3FQ4BAphgqSUdvNRA18XdmwEJpKGz%2FrP%2BzCsCcXBIjmFgoQOyrI1rYjM5%2FDrex8YBVbqRhbbNHx1vfiYuuywlAAAAAf8f%2FhQDrgYfAB4AKUAWDxRGWQ8ACBsLGBgbSFkYDwAFRlkAGwA%2FKwAYPysRADMRMxg%2FKzEwAyInNRYzMjcTIz8CPgEzMhcHJiMiBg8BMwcjAw4BTFo7QDKGK9mzFcIVLLWmc2A9Sj5FUxYS5SXl3yi2%2FhQXvhTNA%2F5qTFzGpyuwHFZiVrL7472yAAAD%2F4f%2BFAR3BGYAJwA0AEEASEAoGygoDkZZBzxKWQQgCQMHJSgHKAcVJScCSFknDyU1SVklEBUuSVkVGwA%2FKwAYPysAGD8rERIAOTkYLy8REhc5KysRADMxMAEPARYVFAYjIicGFRQWHwEeARUUBCEiJjU0NjcmNTQ2NyY1NDYzMhcBDgEVFBYzMjY1NCYnEyIOARUUFjMyPgE1NAR3H8Ac7sg0KG8%2FPH%2BwmP7S%2FurL34uaTF1kh%2FXJUFD%2BTHB4b3KjuFpxhUFiNkdCQV81BFKJITpPweMIKEAmHAgQFoN6xNaWg2eWNC1SRWUvUavE8BT7wBJqTkFNbGUzOgwDxU2FT0dNTohRjgABAC8AAARKBhQAGgAcQA4QChQUBUZZFBALAAAKFQA%2FMz8%2FKxESADkxMCETNjU0IyIGBwMjATMDBg8BMz4BMzIWFRQHAwK%2BjhKBcMMtYuwBSus5Gy4TCFSpXYiRF4sCoFolh%2FrZ%2Fi0GFP76fqdLal6bkExi%2FXMAAAACAC8AAAJWBfoACwAPACVAGgkfAy8DAl8DbwN%2FA58DrwPfA%2B8DBwMODw0VAD8%2FL11xzTEwATQ2MzIWFRQGIyImAyMTMwFKTkc1QlBBNUYv7OzrBWJEVDU2R1I0%2BtYEUgAC%2Fvr%2BFAJWBfoADAAYADBAIBZADxAfEC8QTxBfEI8QnxDPEN8QCQ4DEAgPAAVGWQAbAD8rABg%2FL19eXRrNMTADIic1FjMyNwEzAQ4BATQ2MzIWFRQGIyImcVo7QDWDJwEE6f72JrMBKUxHNkFQQTVE%2FhQXvhS6BMP7IbWqB05EVDU2R1IzAAAAAQAvAAAEhwYUAA4AGUANAg0FBgQICQAADwQIFQA%2FMz8%2FERc5MTABIQkBIQMHAyMBMwIGBzMDdwEQ%2Fh0BI%2F760YhN7AFK64cxIwQEUv4b%2FZMB12D%2BiQYU%2FY3NfAABAC8AAAJkBhQAAwAKswIAARUAPz8xMCEjATMBGeoBSusGFAABAC8AAAauBGYAJgAlQBIDJAAXDSEVEhwAHEZZBgAQIg8APz8yKxEAMxg%2FMzMSOTkxMAEyFzM%2BATMyFhUUBwMjEzY1NCMiBgcDIxM2NTQjIgYHAyMTMwczNgMn3CIIS79nhYsWjOuPE3lsuytl648RdW67LWLs7LgVCZQEZut0d5mLQHX9cwKgXyaB%2BM3%2BHwKgUi2H%2FtP%2BKwRSzeEAAAAAAQAvAAAESgRmABgAHEAODgsSEgVGWRIQDA8ACxUAPzM%2FPysREgA5MTAhEzY1NCMiDgEHAyMTMwczPgEzMhYVFAcDAr6OEoFIjHAcYuzsuBUJU7BnhpMXiQKgWimDcteI%2FisEUs12a5iMRXD9cwAAAAIAXv%2FuBDcEZAANABsAF0AMGQNGWRkQEgpGWRIWAD8rABg%2FKzEwATQmIyIOARUUFjMyPgE3FAIGIyImNTQSJDMyFgNKYltdk1FjYVqQUO2S%2F6bA4o8BAqnD3AK%2Ba3mP9Ytvdoj1icr%2BtbHlxccBTLnoAAAAAv%2FJ%2FhQEUARmABMAIAAmQBQDCgANDRRGWQ0QCA8HGwAbRlkAFgA%2FKwAYPz8%2FKxESADk5MTAFIicjBgcDIwEzBzM2MzIWFRQCBgMiBgIVFBYzMjYSNTQCQrVYCgcSYOkBUrgVCZ27j6KM8QxRoGVdVVWUVhSwYVj%2BMQY%2BvNDOt8z%2BncYDup%2F%2B%2Boxga50BB4%2FJAAAAAAIAXv4UBH8EZgAVACIAJ0AUDAMPAAQPBxsAHUZZABAPFkZZDxYAPysAGD8rABg%2FPxESOTkxMAEyFzM3MwEjEz4BNyMOASMiJjU0EjYTMjYSNTQmIyIGAhUUAnG3WwpAsv6s6UsMPwcIVKBai6CS7w1QnmFbUVaUWQRmsp75wgFdOPgRbFrNttABZsH8RKIBCIlea5v%2B%2BI7LAAAAAAEALwAAA4kEZgAQABRACQUNCgAQChULDwA%2FPz8ROTIxMAEyFwcmIyIGBwMjEzMHMz4BAx0%2BLjM2MH7GJ2rs7LgVCVOmBGYM2w7it%2F4MBFLNeGkAAAEADv%2FsA3EEZgAiACBAEAscAxQUGUdZFBADCEhZAxYAPysAGD8rERIAOTkxMAEUBiMiJzUWMzI2NTQmJy4BNTQ2MzIXByYjIgYVFBYXHgIDDuzSvoSZn2F4RWt9Z9a2xJZMjH5JW0JmaVguAVStu0PLWlBFM0k9Q4tfm7BUsExCOy1GNztUYwABAFz%2F7AMlBUgAGQAnQBMPEUALFA4RERRIWREPBgBGWQYWAD8rABg%2FKxEAMxEzGhgQzTEwJTI3FQ4BIyA1NDcTIz8CMwchByEDBhUUFgHHRFMjeDz%2B7hB5ohW%2BgZI0ARcn%2Fut6DTKqH7IRGvc5SgI6blLo9rL9xDclKzMAAQBv%2F%2BwEhwRSABkAG0ANDxIKGQ8NFRIFRlkSFgA%2FKwAYPz8zEjkxMAEDBhUUMzI%2BATcTMwMjNyMOASMiJjU0NjcTAfqBH39Ijm4eY%2BnpuRUIUrJnhpIYDHsEUv2ejTSFctOOAdX7rs10bZiOP3s%2BAkgAAAABAGQAAARQBFIADAAOtQUKAQ8AFQA%2FPzMyMTAzAzMTFhUzPgE3ATMB54PoNw4HHFQXATf6%2FaoEUv2qn4pKtikCVvuuAAEAeQAABl4EUgAbAB1ADRQMAwwHEBAZCA8ABxUAPzM%2FMzMREjk5ETMxMCEDJzcOAQEhAzMTBgczNjcBMxMXBzM%2BAhMzAQNMEwEDGTX%2Bwf76L90NAgkGQisBFv4TAQMGEVAv5PT9%2BgJzRsg%2Bfv07BFL9eleesGACa%2F2kNeoy2W4CAvuuAAH%2FqgAABFQEUgALABVACQAGAgcEDwsCFQA%2FMz8zEjk5MTAJASEBAzMTASEBEyMB6f7P%2FvIB2%2Bf1kAEfARL%2BM%2Fj2AYP%2BfQI5Ahn%2BiwF1%2Fdv90wAAAAH%2FVv4UBFIEUgAXABhACwUOCQAPDhNGWQ4bAD8rABg%2FMxI5MTATMxMeARUzNjcBMwEOASMiJzUWMzI2PwFk6D8JDgZWMQEl%2Fv1QWtSPTENLMkp4QDMEUv3tPuFF12ICPvsApZkTvBBXcFwAAAH%2F2QAAA6IEUgAJACRAEgcEBQUESFkFDwIIAQEISFkBFQA%2FKxESADkYPysREgA5MTApATcBITchBwEhAs%2F9Ch0Ce%2F5JJwLBJf2RAeaTAw2yqv0KAAEACP68A0oFtgAnACBAEBsJCa8KvwoCCgoTJicUEwMAPzMvMxI5L10zEjkxMAEgNTQ%2FATY1NCM3MjY3Ez4COwEHIgYHAw4BBxUWFRQPAQYVFBYzFQHJ%2FsQRLQ7RJ3iPFjscWpZ7PClgVxJGGH50oBArC0FN%2FrzsPUjJQSGNu1VlAROGhzy4RFL%2By2x9EQYtqiZTwjAaMy%2B5AAAAAAEB8v4fAqQGEAADAAmyAAADAC8%2FMTABMxEjAfKysgYQ%2BA8AAAH%2FqP68AtEFtgAmACBAEBoKCq8JvwkCCQkmExIlJgMAPzMvMxI5L10zEjkxMAEgFRQPAQYVFDMHIgYHAw4BKwE1PgE3Ez4BNzUmNTQ%2FATY1NCYjNwEOAT4RLQ7RJ3mOFj8is7Qdal0SRhh%2BdJ4RKwpWTiMFtus9SMtBIY66VGT%2BzqWGtwJFUAE1bXoRBjCnN0LFLB46KLgAAQBvAjsEKwNoABcAH0AODwYDEhIMUlkSBgBSWQYALysAGC8rABAYxBDGMTABIgYHNTYzMhYXHgEzMjY3FQYjIiYnLgEBWDN6PGSVQG1cRloxMn06Z5M%2Fek1MVwK0Pju%2FbBgnHhk%2BOr5vISEgFwAAAAL%2F0%2F6LAgoEXgADAA8AF0AKAAANAw0HUVkNEAA%2FKwAYLxI5LzEwEzMDIQEUBiMiJjU0NjMyFt2upv7uAjdeUDtEYk5BPAKF%2FAYFVlBkPzxSZEcAAAEAw%2F%2FsBDEFywAeACRAEgIeHhhNWR4BGQkMDBFPWQwKBgA%2FzSsRADMYP8UrEQAzMTAFIzcuATU0EjY%2FATMHFhcHJiMiDgEVFBYzMjY3FQYHAkKcLYSMf%2BWTI5wlfGFFfWFjollwY0qBQYWgFNUiyZ6%2BAULHFqSkDC25NY%2F2j294KyDCRQUAAAAB%2F%2B4AAAS4BcsAHAAxQBkLFxgXT1kIGBgSAAAFTVkABxMPEg9OWRIYAD8rEQAzGD8rERIAORgvMysRADMxMAEyFwcmIyIHAyEHIQcOAQchByE3Nj8BIzczEz4BA1i8pFiPc7kqOQFNIv6wIRVfUwKyLfw0JsgyI8QkxT0m5gXLVrdKzf7qrJhihirPwS3npKwBK7nCAAAAAAIAjQEOBBkEmAAbACcAGEANCQwQExcaAgUIHxUlBwAvM8QyFzkxMBM0Nyc3FzYzMhc3FwcWFRQHFwcnBiMiJwcnNyY3FBYzMjY1NCYjIgbRPYF3f2ZpbGN%2FeYE9PX93f19weFd%2FdX89qH1cW4KCW1x9AtNuX4F3fz0%2FgXWBY2xyX313fzs7fXd9X3BbfnxdXX6AAAABAGoAAAT6BbYAFgA9QCEKDg8OUFkHDwYSExJQWQMAExUPEx8TAg8TDxMMARUGDBgAPz8zEjk5Ly9dERI5MisRADMRMysRADMxMAkBMwEzByEHIQchByM3ITchNyE3MwMzAlIBsPj9%2Btkj%2Fu4fARIh%2FvA13TP%2B7yEBER7%2B8CPTx%2BgDGQKd%2FQiblJv09JuUmwL4AAAAAgHy%2Fh8CpAYQAAMABwATtwMEAwQHAAAHAC8%2FETk5Ly8xMAEzESMRMxEjAfKysrKyBhD85v5F%2FOQAAAAAAgAn%2F%2FID9AYjACwAOAAlQBUCLRQzGikGHwgIDklZCAEfJElZHxYAPysAGD8rERIAFzkxMBM0Ny4BNTQ2MzIXBy4BIyIGFRQWFx4BFRQGBxYVFAYjIic1FjMyNjU0JicuAQEOARUUFhc%2BATU0JqLbLz7fubKaRD6HTVZhSXB%2Fd2lsZvbPvH%2BYp3R0TmaCdgFcRVNdfz5LYwL8vHcgZEGKpU6eHStFPCtDMjiPYFyePUx1nbBDu11RRytJMDyPAUEaaj49VzkkbTw8WQAAAgGqBQIEFwXsAAsAFwAMsw8DFQkALzPNMjEwATQ2MzIWFRQGIyImJTQ2MzIWFRQGIyImAapGPzA5RzovPgF%2FRj8wOUc6Lz4FZDxMLzBBSi8zPEwvMEFKLwAAAAADAIP%2F7AZiBcsAFQAlADUAL0AbBQsPCx8LnwsDABEAERARAgsRCxEiMhoEKiITAD8zPzMSOTkvL10RM10RMzEwASIGFRAzMjY3FQYjIiY1NDYzMhcHJgE0EiQzMgQSFRQCBCMiJAI3FBIEMzIkEjU0AiQjIgQCA6Jxfe4vgix1e8XU48eKgERq%2FIfIAV7KxwFdy8X%2BpM7P%2FqLDe6YBJKutASWipP7draj%2B26gECpib%2FtMgE54z99TY%2BUKTN%2F7RyAFeysb%2Bn8nH%2FqTMzwFaxqj%2B36yuASGmpQEjran%2B2wAAAAIAoAMCAzsFxwASAB0AH0AQBwgDEwAMEAwCDAAEHhkAHwA%2FMj8Q1F0yOTnEMTABMhczNzMDIzcjDgEjIiY1ND4BEzI%2BATU0IyIGFRQB8nE1Bid2k3sKBDJgPVtpXpcHMl87ZlJxBcdnWv1UaT43hHKA3XL9umCfT3fDhX0AAAAAAgBQAGQEEgPjAAYADQAMswwFCAEALzPEMjEwEwEXARMHAyUBFwETBwNQAYuH%2FuCZstkBuAGBif7ok7TRAj8BpHb%2BtP6PTAHFAgGycP6h%2FqJMAa4AAQB1AQAEHQMrAAUAEbYCBQUEUlkFAC8rABgQxDEwAREjESE1BB2z%2FQsDK%2F3VAXe0AAAA%2F%2F8ALwG%2BAlICiRIGABAAAAAEAIP%2F7AZiBcsADwAfACwANQAzQB0lKQ8pHykCNSoAKhAqAictKSoqKS0DDBwEBBQMEwA%2FMz8zEhc5Ly8vM10RM10RMzEwEzQSJDMyBBIVFAIEIyIkAjcUEgQzMiQSNTQCJCMiBAIlFAYHEyMDIxEjESEgATMyNjU0JisBg8gBXsrHAV3Lxf6kzs%2F%2BosN7pgEkq60BJaKk%2Ft2tqP7bqAPAW1XTyKxbsgENAVH%2BVEhUWltTSALbyAFeysb%2Bn8nH%2FqTMzwFaxqj%2B36yuASGmpQEjran%2B2wlTfCT%2BiwFF%2FrsDbv5nSD9JOAAAAQBvBhQEJQa6AAMACLEBAgAvMzEwASE3IQP8%2FHMnA48GFKYAAgC8AzsDTgXLAAwAGAAMsxAJFgMALzPEMjEwEzQ2MzIWFRQGIyIuATcUFjMyNjU0JiMiBrzCiIjAwIhYmliYaEpIaGdJSmgEgYjCwoiJvViWWEZoaEZKaGcAAAACAHUAAAQdBMMACwAPACRAFAwNUlkMQgkBAgFSWQYQAgFwAgECAC9dcTMrEQAzGD8rMTABITUhETMRIRUhESMBNSEVAfD%2BhQF7tAF5%2Foe0%2FoUDqAKRtQF9%2FoO1%2For%2B5bS0AAAAAQBOAkoDEAXJABkAErcKEB8CGBgBIAA%2FMxI5PzMxMAEhNyU%2BAjU0JiMiByc%2BATMyFhUUDgEPASECqv2kHAENb0sjODBbZFBElV5ziS9ldq4BcwJKh99fUkgmLjRQezY3eF9Fb25bjgABAGgCOQMQBckAIwAnQBYDFRUPFh8WAg8WHxYCFhYKHCEfDwohAD8zPzMSOS9dcTMSOTEwARQGBxUeARUUBiMiJzUWMzI2NTQrATczMjY1NCMiByc2MzIWAxBtaE5Kx6qKcH56WmOSbBxdWWt1XGBEfqV8igT4WnYaBBJiQoGaOJ9HSkVxhURBZEF5Wm8AAAABAfwE2QPlBiEACAAKsgOACAAvGs0xMAE2NyEVDgEHIwH8YYABCDbQR5wE8mzDE0K%2FNAAAAf%2FJ%2FhQEkwRSABoAIEAQEgwKBxcPFhsKFQ8DRlkPFgA%2FKwAYPz8%2FMxI5OTEwARQWMzI2NxMzAyM3Iw4BIyInIwYHAyMBMwMGAWZCP3HBLWbn67gWCkucV2wvCAkeQukBUuuNEwEzQUj71AHZ%2B66%2Bb2NRSaL%2BwgY%2B%2FWJUAAEArP78BLQGFAAPABO3CAgBAw4ABQEALzM%2FMxI5LzEwASMRIxEjEQYjIiY1EDYzIQS0i7yMPlPYzNrpAkX%2B%2FAZm%2BZoDMxL6%2BwEE%2Fv%2F%2FAJYCOQHDA2oQBwARAHUCVgAAAAH%2FRP4UAOwAAAASABpADQ0QQAsOSBAQDwgDGw8ALz8zEjkvKzMxMBMUBiMiJzUWMzI1NCYnNzMHHgHspI5ANi8xiUZFYpIySED%2B%2BGp6D4cOYCgrCahgGVQAAAAAAQDBAkoCtgW2AAoADrUJAyAGAB4APzI%2FOTEwATMDIxM2Nw4BBycCFKK6v2MRKBU5fU0FtvyUAc1PihQuUIEAAAIApAMCAwgFxwANABcAFEAKEwAEEAQCBA4LHwA%2FM8RdMjEwARQOASMiJjU0PgEzMhYlIgYVFDMyNjU0AwhUnm56ilija3yC%2FvZRZ3BNZQS2fsZwkoN6x2%2BPCq%2BBja%2BEigAAAAACAAoAXAPPA9sABgANAA60CAEBDAUALzPELzIxMAkBJwEDNxMFAScBAzcTA8%2F%2Bc4YBH5m02f5I%2Fn%2BMARmSs9MB%2Fv5edwFKAXJM%2FjkC%2FlBxAVwBYEz%2BUAD%2F%2FwCVAAAFxQW2ECcA0wKTAAAQJgB71gARBwDUAsH9twAJswMCERgAPzU1AP%2F%2FAHkAAAYeBbYQJwDTAncAABAmAHu5ABEHAHQDDv23AAeyAhAYAD81AAAA%2F%2F8AbAAABi8FyRAnANMDIQAAECcA1AMr%2FbcRBgB1BAAACbMCAQYYAD81NQAAAv%2Fd%2FnUC%2FgRaABkAJQAtQBgHABkQGQILAxkZECMjHVFZIxAQCk1ZECIAPysAGD8rERIAORgvX15dOTEwAQ4BBw4CFRQWMzI2NxcGIyImNTQ2Nz4BNwEUBiMiJjU0NjMyFgKcGW10a00lVFFMk09Lzcyuv4CnXWAWASdgUjhDXU9CPwKDkqpTT05QMEdXNyaxcKuceMZ1QHVfAV5VY0E8TmZEAP%2F%2F%2F4cAAAROB3MSJgAkAAARBwBD%2F%2F0BUgAKtAIQEAUmACsRNf%2F%2F%2F4cAAASsB3MSJgAkAAARBwB2AMcBUgAKtAIXFwUmACsRNf%2F%2F%2F4cAAASFB3MSJgAkAAARBwDFAFoBUgAKtAIVFQUmACsRNf%2F%2F%2F4cAAATLB0gSJgAkAAARBwDHAHMBUgAKtAIYGAUmACsRNf%2F%2F%2F4cAAARzBz4SJgAkAAARBwBqAFwBUgAMtQMCJCQFJgArETU1AAD%2F%2F%2F%2BHAAAETgcHEiYAJAAAEQYAxhttAAmzAwIkAwA%2FNTUAAAAAAv%2BHAAAHJQW2AA8AEwA8QCAKDUxZCgoBBhMDTFkTEwEGBRIJEgYSTFkGAwEOTFkBEgA%2FKwAYPysRADMYPxESOS8rERIAORgvKzEwKQETIQEhASEHIQMhByEDIQETIwEF8Pz3Vv5Q%2FwD%2B%2BgOiA%2Fwr%2FeVUAfgr%2FgpiAhv9TYpS%2FnABlv5qBbbN%2FnXI%2FjUBmwKD%2FX0A%2F%2F8Ah%2F4UBSEFyxImACYAABAHAHoCKwAA%2F%2F8ARgAABIMHcxImACgAABEHAEP%2F8QFSAAq0AQ0NBSYAKxE1%2F%2F8ARgAABIMHcxImACgAABEHAHYAfQFSAAq0ARQUBSYAKxE1%2F%2F8ARgAABIMHcxImACgAABEHAMUAPwFSAAq0ARISBSYAKxE1%2F%2F8ARgAABIMHPhImACgAABEHAGoANQFSAAy1AgEhIQUmACsRNTUAAP%2F%2FAEYAAAJ2B3MSJgAsAAARBwBD%2FuABUgAKtAEFBQUmACsRNf%2F%2FAEYAAAOIB3MSJgAsAAARBwB2%2F6MBUgAKtAEMDAUmACsRNf%2F%2FAEYAAANpB3MSJgAsAAARBwDF%2Fz4BUgAKtAEKCgUmACsRNf%2F%2FAEYAAANgBz4SJgAsAAARBwBq%2F0kBUgAMtQIBGRkFJgArETU1AAAAAgA1AAAFHwW2AA0AGwAtQBcaBwgHTFkXCAgFCgoWTFkKAwUbTFkFEgA%2FKwAYPysREgA5GC8zKxEAMzEwARACBCkBEyM3MxMhIAABMiQSNTQmKwEDIQchAwUfyP6C%2Fv7%2Bb4GSLZCJAXEBDwEk%2FMSxAQiNsKiSXgEdLf7lWgN9%2FvH%2BbNoCb8gCf%2F7e%2FDWsATjIuMH%2BScj%2BWv%2F%2FAEQAAAXdB0gSJgAxAAARBwDHAQABUgAKtAEbGwUmACsRNf%2F%2FAIf%2F7AWNB3MSJgAyAAARBwBDAG8BUgAKtAIdHQUmACsRNf%2F%2FAIf%2F7AWNB3MSJgAyAAARBwB2ARcBUgAKtAIkJAUmACsRNf%2F%2FAIf%2F7AWNB3MSJgAyAAARBwDFAMkBUgAKtAIiIgUmACsRNf%2F%2FAIf%2F7AWNB0gSJgAyAAARBwDHANkBUgAKtAIlJQUmACsRNf%2F%2FAIf%2F7AWNBz4SJgAyAAARBwBqAMUBUgAMtQMCMTEFJgArETU1AAAAAQCTAR8EAASHAAsAFkAKAwAGCQQCCggEAgAvMy8zEhc5MTAJATcJARcJAQcJAScByf7KfQE4ATl%2F%2FsUBN3v%2Bx%2F7IegLTATd9%2FssBNXv%2Bx%2F7HewE1%2Fs17AAMAbf%2BqBbQGBAAVAB4AJwAuQBodIRwiBCQWERQJBgQEDw8WTFkPBAQkTFkEEwA%2FKwAYPysREgAXORESFzkxMAEQAgQjIicHJzcmNRASJDMyFzcXBxYlIgYCFRQXASYTNCcBFjMyNhIFjb7%2Bs9zBfXaFgWfFAVbZvYB3hYVe%2FduN4IIYApxQvxP9a0t3i998A5r%2B6f5M41OVaKCK4wELAbnqXpVopoKOuv6oz1hMA0RB%2FpZYN%2FzHOL8BUgD%2F%2FwCY%2F%2BwFiwdzEiYAOAAAEQcAQwBOAVIACrQBFxcFJgArETX%2F%2FwCY%2F%2BwFiwdzEiYAOAAAEQcAdgEbAVIACrQBHh4FJgArETX%2F%2FwCY%2F%2BwFiwdzEiYAOAAAEQcAxQC2AVIACrQBHBwFJgArETX%2F%2FwCY%2F%2BwFiwc%2BEiYAOAAAEQcAagCwAVIADLUCASsrBSYAKxE1NQAA%2F%2F8AugAABQAHcxImADwAABEHAHYAZgFSAAq0ARERBSYAKxE1AAIARgAABGQFtgAMABUAH0ARCRVMWQ0ETFkJDQkNBgcDBhIAPz8SOTkvLysrMTABFAAhIwMjATMHMzIWATMyNjU0JisBBGT%2Bs%2F7KbELtATXtM2Hj6%2F06YLDFd3l5AzHz%2FvP%2BzwW288r%2BAZ2UbWIAAAAB%2Fv7%2BFAS2BhsAOQAsQBgxFCUDHQwMNEdZDAAdIkhZHRYABUZZABsAPysAGD8rABg%2FKxESABc5MTADIic1FjMyNjcBPgEzMhYVFAcOARUUFx4CFRQGIyInNRYzMjY1NCYnLgE1NDY3PgE1NCYjIgcBDgF1RUg9NEFTFgEGMPrgvNGzdj1Ka0gm6Ma2ZX5%2BaXYvWFJOWVtiUV5V0jT%2B%2BCq5%2FhQXwRVXaATS58ygh6mCV0EjLDlUVmM8rMhByVZYUDBKRkBzRUuAPEJcNEFI7%2FsUxa4A%2F%2F8AXv%2FsBH8GIRImAEQAABEGAEO5AAAKtAIiIhEmACsRNQAA%2F%2F8AXv%2FsBH8GIRImAEQAABEGAHZaAAAKtAIpKREmACsRNQAA%2F%2F8AXv%2FsBH8GIRImAEQAABEGAMX9AAAKtAInJxEmACsRNQAA%2F%2F8AXv%2FsBH8F9hImAEQAABEGAMcSAAAKtAIqKhEmACsRNQAA%2F%2F8AXv%2FsBH8F7BImAEQAABEGAGr%2FAAAMtQMCNjYRJgArETU1%2F%2F8AXv%2FsBH8GmhImAEQAABEGAMboAAAMtQMCJCQRJgArETU1AAMAXv%2FsBo8EZgApADcAQQA%2FQCM7IUhZOzsGAhQXBAkQFQ84MRAxRlkaEBAEFSUqCSpGWQAJFgA%2FMysRADMYPz8zKxEAMxg%2FERIXOTkvKzEwBSInByM3Iw4BIyImNTQSNjMyFhczNzMHPgEzMhYVFAQhIwcUFjMyNxUGJTI2EjU0JiMiBgIVFBYBIgYHMzI2NTQmBKLeUxeXFAhVoV6Gl4rvjViALAk%2FlBkzoGSMof6z%2FswtBHlzfbSv%2FIZVm2BNS1WVU0oDn2erJR%2B71EQUiXWwalrOtckBYsxXW551P0qZfbbNPHV4VL1PvqEBDoRbbqD%2B%2BotpYgMIrI1rYDo0AP%2F%2FAF7%2BFAPNBGYSJgBGAAAQBwB6AYEAAP%2F%2FAF7%2F7AP6BiESJgBIAAARBgBDlwAACrQCJSURJgArETUAAP%2F%2FAF7%2F7AQWBiESJgBIAAARBgB2MQAACrQCLCwRJgArETUAAP%2F%2FAF7%2F7AQJBiESJgBIAAARBgDF3gAACrQCKioRJgArETUAAP%2F%2FAF7%2F7AP6BewSJgBIAAARBgBq2gAADLUDAjk5ESYAKxE1Nf%2F%2FAC8AAAIYBiESJgDCAAARBwBD%2FoIAAAAKtAEFBREmACsRNf%2F%2FAC8AAAMdBiESJgDCAAARBwB2%2FzgAAAAKtAEMDBEmACsRNf%2F%2FAC8AAAMJBiESJgDCAAARBwDF%2Ft4AAAAKtAEKChEmACsRNf%2F%2FAC8AAAL7BewSJgDCAAARBwBq%2FuQAAAAMtQIBGRkRJgArETU1AAAAAgBQ%2F%2BwEewYlAB0AKwA2QBwFCAAbBAYcHAMZDhUVJUdZFRUOBgMBDh5HWQ4WAD8rABg%2FMxI5LysREgA5EjkYLxIXOTEwASYnNxYXNxcHFhEUAgQjIiY1NBI2MzIWFzMmJwcnEzI%2BATU0JiMiDgEVFBYChyxbaoFQ%2BkbZm5L%2B%2BrXF24Puk2CQKQYKe%2FpIUFyLTmhcW4tKYgUtKTeYSEqKf3nN%2Fs3%2F%2FoW%2F1sOiARKcTUbzjI6B%2B%2B53x2phdHDDc2hvAAAA%2F%2F8ALwAABH0F9hImAFEAABEGAMclAAAKtAEiIhEmACsRNQAA%2F%2F8AXv%2FuBDcGIRImAFIAABEGAEOfAAAKtAIdHREmACsRNQAA%2F%2F8AXv%2FuBDcGIRImAFIAABEGAHZIAAAKtAIkJBEmACsRNQAA%2F%2F8AXv%2FuBDcGIRImAFIAABEGAMXzAAAKtAIiIhEmACsRNQAA%2F%2F8AXv%2FuBFoF9hImAFIAABEGAMcCAAAKtAIlJREmACsRNQAA%2F%2F8AXv%2FuBDcF7BImAFIAABEGAGrvAAAMtQMCMTERJgArETU1AAMAdQDsBB0EtgADAA8AGwAcQAwHDRkTDRMBAQBSWQEALysRADMzGC8zLzMxMBM1IRUBNDYzMhYVFAYjIiYRNDYzMhYVFAYjIiZ1A6j9rj8%2BPkFFOjpDPz4%2BQUU6OkMCd7S0%2Fv5AR0g%2FQElHAvxAR0g%2FQElHAAAAAAMAM%2F%2BmBFoEkwAVAB0AJgAuQBocJBslBB4WERQJBgQEDw8WR1kPEAQeR1kEFgA%2FKwAYPysREgAXORESFzkxMAEUAgYjIicHJzcmNTQSJDMyFzcXBxYlIgIVFBcBJgMyPgE1NCcBFgQ1lP2iiWJpe3NGjQECqYhnVn1kP%2F5YjbwIAbotyVmUVQb%2BTCkCvND%2BsK47g2CNaJ3IAUq6PWxgdWRO%2Ft3bJyMCJSP9AIXrjC0W%2FeIh%2F%2F8Ab%2F%2FsBIcGIRImAFgAABEGAEOhAAAKtAEbGxEmACsRNQAA%2F%2F8Ab%2F%2FsBIcGIRImAFgAABEGAHZzAAAKtAEiIhEmACsRNQAA%2F%2F8Ab%2F%2FsBIcGIRImAFgAABEGAMUQAAAKtAEgIBEmACsRNQAA%2F%2F8Ab%2F%2FsBIcF7BImAFgAABEGAGoGAAAMtQIBLy8RJgArETU1%2F%2F%2F%2FVv4UBFIGIRImAFwAABEGAHb5AAAKtAEgIBEmACsRNQAAAAL%2Fyf4UBFAGFAAWACQAJ0AUBA0AEAkACBsQF0ZZEBAAHkZZABYAPysAGD8rABg%2FPxESOTkxMAUiJicjBgcDIwEzDgEHMzYzMhYVFAIGAyIGAhUUFjMyNhI1NCYCSl6OKwgHEmDpAbDrMDIzCJutkKGI6RxUnmBcVlaTVlIUW1VbXv4xCADf6K%2FIzLnM%2Fp3GA7qi%2FveGYmmaAQiRZGUAAP%2F%2F%2F1b%2BFARSBewSJgBcAAARBgBqmQAADLUCAS0tESYAKxE1NQABAC8AAAIGBFIAAwAKswIPARUAPz8xMCEjEzMBG%2Bzs6wRSAAACAIf%2F7AdSBc0AFQAhADpAIBATTFkQEAEMDA9MWQwDChtMWQoEARRMWQESAxZMWQMTAD8rABg%2FKwAYPysAGD8rERIAORgvKzEwKQEGIyAAERASJDMyFyEHIQMhByEDIQUyNxMmIyIGAhUUFgYd%2FTNUVv79%2FuTFAVbZkU4C%2BCv95VQB%2BCv%2BCGACG%2FxsSkHeRHGK4H%2BjFAErAQgBCwG56hfN%2FnXI%2FjUTGwQOH8D%2Bq8qtvAAAAAADAF7%2F7AbDBGYAIgAvADkAO0AeDgMFDDMYSFkzMwUMMCMMI0ZZEQwQHCoFKkZZAAUWAD8zKxEAMxg%2FMysRADMREjkYLysREgA5OTEwBSImJwYjIiY1NBIkMzIXPgEzMhYVFAQhIwcUFjMyNjcVDgEBIg4BFRQWMzISNTQmJSIGBzMyNjU0JgTJeLkwie262pMA%2F6btYknKfZ%2Bv%2FrX%2Bzi8DcXFFg29bqP1dV41XYVuPrWMCiWmuIh%2B90jwUXFy258XOAU2vwFtnlYG3zDxvfiMxvSskA7aA9ZF0egEl6291EKuObGUwOAAAAQFiBNkEKwYhAA0ADrQDC4AGAQAvMxrNMjEwASMmJwYHIzU%2BATczFhcEK5hMVYNppIp%2BG%2FgmiATZP3NuRBmAhyhjzAACAh0E1wP0BpoACwAXABlADg8PCR8JLwkDcAkBCRUDAC8zzF1dMjEwARQGIyImNTQ2MzIWBzQmIyIGFRQWMzI2A%2FSEamp%2FgmdohoM8Ly07NTMvPAW6aHt6Z2d7eWkyOTkyMTc3AAAAAAEBRgTXBFgF9gAVACFAEBAABQsACwALfxSPFAIUgAkALxrMXTk5Ly8RMxEzMTABIi4CIyIGByMSMzIeAjMyNjczAgNULUtEPyAmMhKJOccuTkM8HSgyF4lCBNkiKSI3OAEdIykjNTz%2B4wAAAAEALwHFA6AChwADAAixAAEALzMxMBM3IQcvKwNGKwHFwsIAAAEALwHFB3cChwADAAixAAEALzMxMBM3IQcvKwcdKwHFwsIAAAEAdwPBAjEFtgAHAAmyAAQDAD%2FNMTATJzYSNzMCB30GIpFXsHpNA8EWTAEKif7i1wAAAAABAHMDwQIvBbYACAAJsgUIAwA%2FzjEwARcGAgcjNhI3AicIJZNSsit%2BHQW2FlP%2B839fAUBWAAAAAAH%2Fmv74AVYA7gAGAAixBAAAL80xMCUXBgcjNhMBTghsnrJpX%2B4X6fbuAQgAAgB3A8EDyQW2AAYADgANtAAHAwsDAD8zzTIxMAEnNhMzAgchJzYSNzMCBwIXCVS3sHpN%2FXsGIpFXsHpNA8EWvgEh%2FuLXFkwBCon%2B4tcAAAACAHMDwQPHBbYACAAQAA20DQUQCAMAPzPOMjEwARcGAgcjNhI3IRcGAyM2EjcCJwglk1KyK34dAoUJYquwM3QgBbYWU%2F7zf18BQFYW3P79cgEmXQAC%2F5r%2B%2BALuAO4ABgANAAyzCwQNAAAvMs0yMTAlFwYHIzYTIRcGAyMSNwFOCGyesmlfAoMJXK%2BweE%2FuF%2Bn27gEIF87%2B7wEZ3QABAJgBzQKkBAgACwAIsQkDAC8vMTATNDYzMhYVFAYjIiaYp4xkdaSRZnECrJzAbXKcwHMAAQBQAGQCYgPjAAYACLEFAQAvxDEwEwEXARMHA1ABi4f%2B4Jmy2QI9AaZ2%2FrL%2BkUwBwQAAAAEACgBcAh0D2wAGAAixAQUAL8QxMAkBJwEDNxMCHf50hwEhmrPZAgL%2BWncBTgFuTP5AAAAB%2FgIAAAMCBbYAAwAKswMDAhIAPz8xMAkBIwEDAvvFxQQ9Bbb6SgW2AAAAAAIARgJKAwQFvAAKABAAJUAUDQcBBQkFBgMPEB8QAhAQAwceAyAAPz8SOS9dFzMRMxEzMTABIwcjNyE3ATMDMyE%2FAQYPAQLneie3J%2F6QGgHdxXl7%2Fs80IiBCuwL6sLCJAjn9zd2BM1DbAAAAAAEAM%2F%2FsBNkFywAnAFNALwYcHRxQWQMdCxcYF1BZCBgPHR8dAgkAGHAYAgsDHRgdGBMhIQBNWSEHEw5OWRMZAD8rABg%2FKxESADk5GC8vX15dXl0RMysRADMRMysRADMxMAEiBgchByEGByEHIRQWMzI3FQYjIgI1IzczNjcjNzMSADMyFhcHLgEDkXbBQQGDIf5uEgoBVCH%2BwXmHeIqBsdjkoiGLDwyJIJRcAUfQWJlQZjZqBQKuqJpDSJuhkzzLPQEE%2FJtfLJoBBAEbLDe0IiwAAAAAAAABAAAjAAABBdMYAAAKCvIABQAk%2F3EABQA3ACkABQA5ACkABQA6ACkABQA8ABQABQBE%2F64ABQBG%2F4UABQBH%2F4UABQBI%2F4UABQBK%2F8MABQBQ%2F8MABQBR%2F8MABQBS%2F4UABQBT%2F8MABQBU%2F4UABQBV%2F8MABQBW%2F8MABQBY%2F8MABQCC%2F3EABQCD%2F3EABQCE%2F3EABQCF%2F3EABQCG%2F3EABQCH%2F3EABQCfABQABQCi%2F4UABQCj%2F64ABQCk%2F64ABQCl%2F64ABQCm%2F64ABQCn%2F64ABQCo%2F64ABQCp%2F4UABQCq%2F4UABQCr%2F4UABQCs%2F4UABQCt%2F4UABQC0%2F4UABQC1%2F4UABQC2%2F4UABQC3%2F4UABQC4%2F4UABQC6%2F4UABQC7%2F8MABQC8%2F8MABQC9%2F8MABQC%2B%2F8MABQDE%2F4UACgAk%2F3EACgA3ACkACgA5ACkACgA6ACkACgA8ABQACgBE%2F64ACgBG%2F4UACgBH%2F4UACgBI%2F4UACgBK%2F8MACgBQ%2F8MACgBR%2F8MACgBS%2F4UACgBT%2F8MACgBU%2F4UACgBV%2F8MACgBW%2F8MACgBY%2F8MACgCC%2F3EACgCD%2F3EACgCE%2F3EACgCF%2F3EACgCG%2F3EACgCH%2F3EACgCfABQACgCi%2F4UACgCj%2F64ACgCk%2F64ACgCl%2F64ACgCm%2F64ACgCn%2F64ACgCo%2F64ACgCp%2F4UACgCq%2F4UACgCr%2F4UACgCs%2F4UACgCt%2F4UACgC0%2F4UACgC1%2F4UACgC2%2F4UACgC3%2F4UACgC4%2F4UACgC6%2F4UACgC7%2F8MACgC8%2F8MACgC9%2F8MACgC%2B%2F8MACgDE%2F4UACwAtALgADwAm%2F5oADwAq%2F5oADwAy%2F5oADwA0%2F5oADwA3%2F3EADwA4%2F9cADwA5%2F4UADwA6%2F4UADwA8%2F4UADwCJ%2F5oADwCU%2F5oADwCV%2F5oADwCW%2F5oADwCX%2F5oADwCY%2F5oADwCa%2F5oADwCb%2F9cADwCc%2F9cADwCd%2F9cADwCe%2F9cADwCf%2F4UADwDD%2F5oAEAA3%2F64AEQAm%2F5oAEQAq%2F5oAEQAy%2F5oAEQA0%2F5oAEQA3%2F3EAEQA4%2F9cAEQA5%2F4UAEQA6%2F4UAEQA8%2F4UAEQCJ%2F5oAEQCU%2F5oAEQCV%2F5oAEQCW%2F5oAEQCX%2F5oAEQCY%2F5oAEQCa%2F5oAEQCb%2F9cAEQCc%2F9cAEQCd%2F9cAEQCe%2F9cAEQCf%2F4UAEQDD%2F5oAJAAF%2F3EAJAAK%2F3EAJAAm%2F9cAJAAq%2F9cAJAAtAQoAJAAy%2F9cAJAA0%2F9cAJAA3%2F3EAJAA5%2F64AJAA6%2F64AJAA8%2F4UAJACJ%2F9cAJACU%2F9cAJACV%2F9cAJACW%2F9cAJACX%2F9cAJACY%2F9cAJACa%2F9cAJACf%2F4UAJADD%2F9cAJADL%2F3EAJADO%2F3EAJQAP%2F64AJQAR%2F64AJQAk%2F9cAJQA3%2F8MAJQA5%2F%2BwAJQA6%2F%2BwAJQA7%2F9cAJQA8%2F%2BwAJQA9%2F%2BwAJQCC%2F9cAJQCD%2F9cAJQCE%2F9cAJQCF%2F9cAJQCG%2F9cAJQCH%2F9cAJQCf%2F%2BwAJQDM%2F64AJQDP%2F64AJgAm%2F9cAJgAq%2F9cAJgAy%2F9cAJgA0%2F9cAJgCJ%2F9cAJgCU%2F9cAJgCV%2F9cAJgCW%2F9cAJgCX%2F9cAJgCY%2F9cAJgCa%2F9cAJgDD%2F9cAJwAP%2F64AJwAR%2F64AJwAk%2F9cAJwA3%2F8MAJwA5%2F%2BwAJwA6%2F%2BwAJwA7%2F9cAJwA8%2F%2BwAJwA9%2F%2BwAJwCC%2F9cAJwCD%2F9cAJwCE%2F9cAJwCF%2F9cAJwCG%2F9cAJwCH%2F9cAJwCf%2F%2BwAJwDM%2F64AJwDP%2F64AKAAtAHsAKQAP%2F4UAKQAR%2F4UAKQAiACkAKQAk%2F9cAKQCC%2F9cAKQCD%2F9cAKQCE%2F9cAKQCF%2F9cAKQCG%2F9cAKQCH%2F9cAKQDM%2F4UAKQDP%2F4UALgAm%2F9cALgAq%2F9cALgAy%2F9cALgA0%2F9cALgCJ%2F9cALgCU%2F9cALgCV%2F9cALgCW%2F9cALgCX%2F9cALgCY%2F9cALgCa%2F9cALgDD%2F9cALwAF%2F1wALwAK%2F1wALwAm%2F9cALwAq%2F9cALwAy%2F9cALwA0%2F9cALwA3%2F9cALwA4%2F%2BwALwA5%2F9cALwA6%2F9cALwA8%2F8MALwCJ%2F9cALwCU%2F9cALwCV%2F9cALwCW%2F9cALwCX%2F9cALwCY%2F9cALwCa%2F9cALwCb%2F%2BwALwCc%2F%2BwALwCd%2F%2BwALwCe%2F%2BwALwCf%2F8MALwDD%2F9cALwDL%2F1wALwDO%2F1wAMgAP%2F64AMgAR%2F64AMgAk%2F9cAMgA3%2F8MAMgA5%2F%2BwAMgA6%2F%2BwAMgA7%2F9cAMgA8%2F%2BwAMgA9%2F%2BwAMgCC%2F9cAMgCD%2F9cAMgCE%2F9cAMgCF%2F9cAMgCG%2F9cAMgCH%2F9cAMgCf%2F%2BwAMgDM%2F64AMgDP%2F64AMwAP%2FvYAMwAR%2FvYAMwAk%2F5oAMwA7%2F9cAMwA9%2F%2BwAMwCC%2F5oAMwCD%2F5oAMwCE%2F5oAMwCF%2F5oAMwCG%2F5oAMwCH%2F5oAMwDM%2FvYAMwDP%2FvYANAAP%2F64ANAAR%2F64ANAAk%2F9cANAA3%2F8MANAA5%2F%2BwANAA6%2F%2BwANAA7%2F9cANAA8%2F%2BwANAA9%2F%2BwANACC%2F9cANACD%2F9cANACE%2F9cANACF%2F9cANACG%2F9cANACH%2F9cANACf%2F%2BwANADM%2F64ANADP%2F64ANwAP%2F4UANwAQ%2F64ANwAR%2F4UANwAiACkANwAk%2F3EANwAm%2F9cANwAq%2F9cANwAy%2F9cANwA0%2F9cANwA3ACkANwBE%2F1wANwBG%2F3EANwBH%2F3EANwBI%2F3EANwBK%2F3EANwBQ%2F5oANwBR%2F5oANwBS%2F3EANwBT%2F5oANwBU%2F3EANwBV%2F5oANwBW%2F4UANwBY%2F5oANwBZ%2F9cANwBa%2F9cANwBb%2F9cANwBc%2F9cANwBd%2F64ANwCC%2F3EANwCD%2F3EANwCE%2F3EANwCF%2F3EANwCG%2F3EANwCH%2F3EANwCJ%2F9cANwCU%2F9cANwCV%2F9cANwCW%2F9cANwCX%2F9cANwCY%2F9cANwCa%2F9cANwCi%2F3EANwCj%2F1wANwCk%2F1wANwCl%2F1wANwCm%2F1wANwCn%2F1wANwCo%2F1wANwCp%2F3EANwCq%2F3EANwCr%2F3EANwCs%2F3EANwCt%2F3EANwC0%2F3EANwC1%2F3EANwC2%2F3EANwC3%2F3EANwC4%2F3EANwC6%2F3EANwC7%2F5oANwC8%2F5oANwC9%2F5oANwC%2B%2F5oANwC%2F%2F9cANwDD%2F9cANwDE%2F3EANwDI%2F64ANwDJ%2F64ANwDM%2F4UANwDP%2F4UAOAAP%2F9cAOAAR%2F9cAOAAk%2F%2BwAOACC%2F%2BwAOACD%2F%2BwAOACE%2F%2BwAOACF%2F%2BwAOACG%2F%2BwAOACH%2F%2BwAOADM%2F9cAOADP%2F9cAOQAP%2F5oAOQAR%2F5oAOQAiACkAOQAk%2F64AOQAm%2F%2BwAOQAq%2F%2BwAOQAy%2F%2BwAOQA0%2F%2BwAOQBE%2F9cAOQBG%2F9cAOQBH%2F9cAOQBI%2F9cAOQBK%2F%2BwAOQBQ%2F%2BwAOQBR%2F%2BwAOQBS%2F9cAOQBT%2F%2BwAOQBU%2F9cAOQBV%2F%2BwAOQBW%2F%2BwAOQBY%2F%2BwAOQCC%2F64AOQCD%2F64AOQCE%2F64AOQCF%2F64AOQCG%2F64AOQCH%2F64AOQCJ%2F%2BwAOQCU%2F%2BwAOQCV%2F%2BwAOQCW%2F%2BwAOQCX%2F%2BwAOQCY%2F%2BwAOQCa%2F%2BwAOQCi%2F9cAOQCj%2F9cAOQCk%2F9cAOQCl%2F9cAOQCm%2F9cAOQCn%2F9cAOQCo%2F9cAOQCp%2F9cAOQCq%2F9cAOQCr%2F9cAOQCs%2F9cAOQCt%2F9cAOQC0%2F9cAOQC1%2F9cAOQC2%2F9cAOQC3%2F9cAOQC4%2F9cAOQC6%2F9cAOQC7%2F%2BwAOQC8%2F%2BwAOQC9%2F%2BwAOQC%2B%2F%2BwAOQDD%2F%2BwAOQDE%2F9cAOQDM%2F5oAOQDP%2F5oAOgAP%2F5oAOgAR%2F5oAOgAiACkAOgAk%2F64AOgAm%2F%2BwAOgAq%2F%2BwAOgAy%2F%2BwAOgA0%2F%2BwAOgBE%2F9cAOgBG%2F9cAOgBH%2F9cAOgBI%2F9cAOgBK%2F%2BwAOgBQ%2F%2BwAOgBR%2F%2BwAOgBS%2F9cAOgBT%2F%2BwAOgBU%2F9cAOgBV%2F%2BwAOgBW%2F%2BwAOgBY%2F%2BwAOgCC%2F64AOgCD%2F64AOgCE%2F64AOgCF%2F64AOgCG%2F64AOgCH%2F64AOgCJ%2F%2BwAOgCU%2F%2BwAOgCV%2F%2BwAOgCW%2F%2BwAOgCX%2F%2BwAOgCY%2F%2BwAOgCa%2F%2BwAOgCi%2F9cAOgCj%2F9cAOgCk%2F9cAOgCl%2F9cAOgCm%2F9cAOgCn%2F9cAOgCo%2F9cAOgCp%2F9cAOgCq%2F9cAOgCr%2F9cAOgCs%2F9cAOgCt%2F9cAOgC0%2F9cAOgC1%2F9cAOgC2%2F9cAOgC3%2F9cAOgC4%2F9cAOgC6%2F9cAOgC7%2F%2BwAOgC8%2F%2BwAOgC9%2F%2BwAOgC%2B%2F%2BwAOgDD%2F%2BwAOgDE%2F9cAOgDM%2F5oAOgDP%2F5oAOwAm%2F9cAOwAq%2F9cAOwAy%2F9cAOwA0%2F9cAOwCJ%2F9cAOwCU%2F9cAOwCV%2F9cAOwCW%2F9cAOwCX%2F9cAOwCY%2F9cAOwCa%2F9cAOwDD%2F9cAPAAP%2F4UAPAAR%2F4UAPAAiACkAPAAk%2F4UAPAAm%2F9cAPAAq%2F9cAPAAy%2F9cAPAA0%2F9cAPABE%2F5oAPABG%2F5oAPABH%2F5oAPABI%2F5oAPABK%2F9cAPABQ%2F8MAPABR%2F8MAPABS%2F5oAPABT%2F8MAPABU%2F5oAPABV%2F8MAPABW%2F64APABY%2F8MAPABd%2F9cAPACC%2F4UAPACD%2F4UAPACE%2F4UAPACF%2F4UAPACG%2F4UAPACH%2F4UAPACJ%2F9cAPACU%2F9cAPACV%2F9cAPACW%2F9cAPACX%2F9cAPACY%2F9cAPACa%2F9cAPACi%2F5oAPACj%2F5oAPACk%2F5oAPACl%2F5oAPACm%2F5oAPACn%2F5oAPACo%2F5oAPACp%2F5oAPACq%2F5oAPACr%2F5oAPACs%2F5oAPACt%2F5oAPAC0%2F5oAPAC1%2F5oAPAC2%2F5oAPAC3%2F5oAPAC4%2F5oAPAC6%2F5oAPAC7%2F8MAPAC8%2F8MAPAC9%2F8MAPAC%2B%2F8MAPADD%2F9cAPADE%2F5oAPADM%2F4UAPADP%2F4UAPQAm%2F%2BwAPQAq%2F%2BwAPQAy%2F%2BwAPQA0%2F%2BwAPQCJ%2F%2BwAPQCU%2F%2BwAPQCV%2F%2BwAPQCW%2F%2BwAPQCX%2F%2BwAPQCY%2F%2BwAPQCa%2F%2BwAPQDD%2F%2BwAPgAtALgARAAF%2F%2BwARAAK%2F%2BwARADL%2F%2BwARADO%2F%2BwARQAF%2F%2BwARQAK%2F%2BwARQBZ%2F9cARQBa%2F9cARQBb%2F9cARQBc%2F9cARQBd%2F%2BwARQC%2F%2F9cARQDL%2F%2BwARQDO%2F%2BwARgAFACkARgAKACkARgDLACkARgDOACkASAAF%2F%2BwASAAK%2F%2BwASABZ%2F9cASABa%2F9cASABb%2F9cASABc%2F9cASABd%2F%2BwASAC%2F%2F9cASADL%2F%2BwASADO%2F%2BwASQAFAHsASQAKAHsASQDLAHsASQDOAHsASwAF%2F%2BwASwAK%2F%2BwASwDL%2F%2BwASwDO%2F%2BwATgBG%2F9cATgBH%2F9cATgBI%2F9cATgBS%2F9cATgBU%2F9cATgCi%2F9cATgCp%2F9cATgCq%2F9cATgCr%2F9cATgCs%2F9cATgCt%2F9cATgC0%2F9cATgC1%2F9cATgC2%2F9cATgC3%2F9cATgC4%2F9cATgC6%2F9cATgDE%2F9cAUAAF%2F%2BwAUAAK%2F%2BwAUADL%2F%2BwAUADO%2F%2BwAUQAF%2F%2BwAUQAK%2F%2BwAUQDL%2F%2BwAUQDO%2F%2BwAUgAF%2F%2BwAUgAK%2F%2BwAUgBZ%2F9cAUgBa%2F9cAUgBb%2F9cAUgBc%2F9cAUgBd%2F%2BwAUgC%2F%2F9cAUgDL%2F%2BwAUgDO%2F%2BwAUwAF%2F%2BwAUwAK%2F%2BwAUwBZ%2F9cAUwBa%2F9cAUwBb%2F9cAUwBc%2F9cAUwBd%2F%2BwAUwC%2F%2F9cAUwDL%2F%2BwAUwDO%2F%2BwAVQAFAFIAVQAKAFIAVQBE%2F9cAVQBG%2F9cAVQBH%2F9cAVQBI%2F9cAVQBK%2F%2BwAVQBS%2F9cAVQBU%2F9cAVQCi%2F9cAVQCj%2F9cAVQCk%2F9cAVQCl%2F9cAVQCm%2F9cAVQCn%2F9cAVQCo%2F9cAVQCp%2F9cAVQCq%2F9cAVQCr%2F9cAVQCs%2F9cAVQCt%2F9cAVQC0%2F9cAVQC1%2F9cAVQC2%2F9cAVQC3%2F9cAVQC4%2F9cAVQC6%2F9cAVQDE%2F9cAVQDLAFIAVQDOAFIAVwAFACkAVwAKACkAVwDLACkAVwDOACkAWQAFAFIAWQAKAFIAWQAP%2F64AWQAR%2F64AWQAiACkAWQDLAFIAWQDM%2F64AWQDOAFIAWQDP%2F64AWgAFAFIAWgAKAFIAWgAP%2F64AWgAR%2F64AWgAiACkAWgDLAFIAWgDM%2F64AWgDOAFIAWgDP%2F64AWwBG%2F9cAWwBH%2F9cAWwBI%2F9cAWwBS%2F9cAWwBU%2F9cAWwCi%2F9cAWwCp%2F9cAWwCq%2F9cAWwCr%2F9cAWwCs%2F9cAWwCt%2F9cAWwC0%2F9cAWwC1%2F9cAWwC2%2F9cAWwC3%2F9cAWwC4%2F9cAWwC6%2F9cAWwDE%2F9cAXAAFAFIAXAAKAFIAXAAP%2F64AXAAR%2F64AXAAiACkAXADLAFIAXADM%2F64AXADOAFIAXADP%2F64AXgAtALgAggAF%2F3EAggAK%2F3EAggAm%2F9cAggAq%2F9cAggAtAQoAggAy%2F9cAggA0%2F9cAggA3%2F3EAggA5%2F64AggA6%2F64AggA8%2F4UAggCJ%2F9cAggCU%2F9cAggCV%2F9cAggCW%2F9cAggCX%2F9cAggCY%2F9cAggCa%2F9cAggCf%2F4UAggDD%2F9cAggDL%2F3EAggDO%2F3EAgwAF%2F3EAgwAK%2F3EAgwAm%2F9cAgwAq%2F9cAgwAtAQoAgwAy%2F9cAgwA0%2F9cAgwA3%2F3EAgwA5%2F64AgwA6%2F64AgwA8%2F4UAgwCJ%2F9cAgwCU%2F9cAgwCV%2F9cAgwCW%2F9cAgwCX%2F9cAgwCY%2F9cAgwCa%2F9cAgwCf%2F4UAgwDD%2F9cAgwDL%2F3EAgwDO%2F3EAhAAF%2F3EAhAAK%2F3EAhAAm%2F9cAhAAq%2F9cAhAAtAQoAhAAy%2F9cAhAA0%2F9cAhAA3%2F3EAhAA5%2F64AhAA6%2F64AhAA8%2F4UAhACJ%2F9cAhACU%2F9cAhACV%2F9cAhACW%2F9cAhACX%2F9cAhACY%2F9cAhACa%2F9cAhACf%2F4UAhADD%2F9cAhADL%2F3EAhADO%2F3EAhQAF%2F3EAhQAK%2F3EAhQAm%2F9cAhQAq%2F9cAhQAtAQoAhQAy%2F9cAhQA0%2F9cAhQA3%2F3EAhQA5%2F64AhQA6%2F64AhQA8%2F4UAhQCJ%2F9cAhQCU%2F9cAhQCV%2F9cAhQCW%2F9cAhQCX%2F9cAhQCY%2F9cAhQCa%2F9cAhQCf%2F4UAhQDD%2F9cAhQDL%2F3EAhQDO%2F3EAhgAF%2F3EAhgAK%2F3EAhgAm%2F9cAhgAq%2F9cAhgAtAQoAhgAy%2F9cAhgA0%2F9cAhgA3%2F3EAhgA5%2F64AhgA6%2F64AhgA8%2F4UAhgCJ%2F9cAhgCU%2F9cAhgCV%2F9cAhgCW%2F9cAhgCX%2F9cAhgCY%2F9cAhgCa%2F9cAhgCf%2F4UAhgDD%2F9cAhgDL%2F3EAhgDO%2F3EAhwAF%2F3EAhwAK%2F3EAhwAm%2F9cAhwAq%2F9cAhwAtAQoAhwAy%2F9cAhwA0%2F9cAhwA3%2F3EAhwA5%2F64AhwA6%2F64AhwA8%2F4UAhwCJ%2F9cAhwCU%2F9cAhwCV%2F9cAhwCW%2F9cAhwCX%2F9cAhwCY%2F9cAhwCa%2F9cAhwCf%2F4UAhwDD%2F9cAhwDL%2F3EAhwDO%2F3EAiAAtAHsAiQAm%2F9cAiQAq%2F9cAiQAy%2F9cAiQA0%2F9cAiQCJ%2F9cAiQCU%2F9cAiQCV%2F9cAiQCW%2F9cAiQCX%2F9cAiQCY%2F9cAiQCa%2F9cAiQDD%2F9cAigAtAHsAiwAtAHsAjAAtAHsAjQAtAHsAkgAP%2F64AkgAR%2F64AkgAk%2F9cAkgA3%2F8MAkgA5%2F%2BwAkgA6%2F%2BwAkgA7%2F9cAkgA8%2F%2BwAkgA9%2F%2BwAkgCC%2F9cAkgCD%2F9cAkgCE%2F9cAkgCF%2F9cAkgCG%2F9cAkgCH%2F9cAkgCf%2F%2BwAkgDM%2F64AkgDP%2F64AlAAP%2F64AlAAR%2F64AlAAk%2F9cAlAA3%2F8MAlAA5%2F%2BwAlAA6%2F%2BwAlAA7%2F9cAlAA8%2F%2BwAlAA9%2F%2BwAlACC%2F9cAlACD%2F9cAlACE%2F9cAlACF%2F9cAlACG%2F9cAlACH%2F9cAlACf%2F%2BwAlADM%2F64AlADP%2F64AlQAP%2F64AlQAR%2F64AlQAk%2F9cAlQA3%2F8MAlQA5%2F%2BwAlQA6%2F%2BwAlQA7%2F9cAlQA8%2F%2BwAlQA9%2F%2BwAlQCC%2F9cAlQCD%2F9cAlQCE%2F9cAlQCF%2F9cAlQCG%2F9cAlQCH%2F9cAlQCf%2F%2BwAlQDM%2F64AlQDP%2F64AlgAP%2F64AlgAR%2F64AlgAk%2F9cAlgA3%2F8MAlgA5%2F%2BwAlgA6%2F%2BwAlgA7%2F9cAlgA8%2F%2BwAlgA9%2F%2BwAlgCC%2F9cAlgCD%2F9cAlgCE%2F9cAlgCF%2F9cAlgCG%2F9cAlgCH%2F9cAlgCf%2F%2BwAlgDM%2F64AlgDP%2F64AlwAP%2F64AlwAR%2F64AlwAk%2F9cAlwA3%2F8MAlwA5%2F%2BwAlwA6%2F%2BwAlwA7%2F9cAlwA8%2F%2BwAlwA9%2F%2BwAlwCC%2F9cAlwCD%2F9cAlwCE%2F9cAlwCF%2F9cAlwCG%2F9cAlwCH%2F9cAlwCf%2F%2BwAlwDM%2F64AlwDP%2F64AmAAP%2F64AmAAR%2F64AmAAk%2F9cAmAA3%2F8MAmAA5%2F%2BwAmAA6%2F%2BwAmAA7%2F9cAmAA8%2F%2BwAmAA9%2F%2BwAmACC%2F9cAmACD%2F9cAmACE%2F9cAmACF%2F9cAmACG%2F9cAmACH%2F9cAmACf%2F%2BwAmADM%2F64AmADP%2F64AmgAP%2F64AmgAR%2F64AmgAk%2F9cAmgA3%2F8MAmgA5%2F%2BwAmgA6%2F%2BwAmgA7%2F9cAmgA8%2F%2BwAmgA9%2F%2BwAmgCC%2F9cAmgCD%2F9cAmgCE%2F9cAmgCF%2F9cAmgCG%2F9cAmgCH%2F9cAmgCf%2F%2BwAmgDM%2F64AmgDP%2F64AmwAP%2F9cAmwAR%2F9cAmwAk%2F%2BwAmwCC%2F%2BwAmwCD%2F%2BwAmwCE%2F%2BwAmwCF%2F%2BwAmwCG%2F%2BwAmwCH%2F%2BwAmwDM%2F9cAmwDP%2F9cAnAAP%2F9cAnAAR%2F9cAnAAk%2F%2BwAnACC%2F%2BwAnACD%2F%2BwAnACE%2F%2BwAnACF%2F%2BwAnACG%2F%2BwAnACH%2F%2BwAnADM%2F9cAnADP%2F9cAnQAP%2F9cAnQAR%2F9cAnQAk%2F%2BwAnQCC%2F%2BwAnQCD%2F%2BwAnQCE%2F%2BwAnQCF%2F%2BwAnQCG%2F%2BwAnQCH%2F%2BwAnQDM%2F9cAnQDP%2F9cAngAP%2F9cAngAR%2F9cAngAk%2F%2BwAngCC%2F%2BwAngCD%2F%2BwAngCE%2F%2BwAngCF%2F%2BwAngCG%2F%2BwAngCH%2F%2BwAngDM%2F9cAngDP%2F9cAnwAP%2F4UAnwAR%2F4UAnwAiACkAnwAk%2F4UAnwAm%2F9cAnwAq%2F9cAnwAy%2F9cAnwA0%2F9cAnwBE%2F5oAnwBG%2F5oAnwBH%2F5oAnwBI%2F5oAnwBK%2F9cAnwBQ%2F8MAnwBR%2F8MAnwBS%2F5oAnwBT%2F8MAnwBU%2F5oAnwBV%2F8MAnwBW%2F64AnwBY%2F8MAnwBd%2F9cAnwCC%2F4UAnwCD%2F4UAnwCE%2F4UAnwCF%2F4UAnwCG%2F4UAnwCH%2F4UAnwCJ%2F9cAnwCU%2F9cAnwCV%2F9cAnwCW%2F9cAnwCX%2F9cAnwCY%2F9cAnwCa%2F9cAnwCi%2F5oAnwCj%2F5oAnwCk%2F5oAnwCl%2F5oAnwCm%2F5oAnwCn%2F5oAnwCo%2F5oAnwCp%2F5oAnwCq%2F5oAnwCr%2F5oAnwCs%2F5oAnwCt%2F5oAnwC0%2F5oAnwC1%2F5oAnwC2%2F5oAnwC3%2F5oAnwC4%2F5oAnwC6%2F5oAnwC7%2F8MAnwC8%2F8MAnwC9%2F8MAnwC%2B%2F8MAnwDD%2F9cAnwDE%2F5oAnwDM%2F4UAnwDP%2F4UAoAAP%2FvYAoAAR%2FvYAoAAk%2F5oAoAA7%2F9cAoAA9%2F%2BwAoACC%2F5oAoACD%2F5oAoACE%2F5oAoACF%2F5oAoACG%2F5oAoACH%2F5oAoADM%2FvYAoADP%2FvYAogAF%2F%2BwAogAK%2F%2BwAogDL%2F%2BwAogDO%2F%2BwAowAF%2F%2BwAowAK%2F%2BwAowDL%2F%2BwAowDO%2F%2BwApAAF%2F%2BwApAAK%2F%2BwApADL%2F%2BwApADO%2F%2BwApQAF%2F%2BwApQAK%2F%2BwApQDL%2F%2BwApQDO%2F%2BwApgAF%2F%2BwApgAK%2F%2BwApgDL%2F%2BwApgDO%2F%2BwApwAF%2F%2BwApwAK%2F%2BwApwDL%2F%2BwApwDO%2F%2BwAqgAF%2F%2BwAqgAK%2F%2BwAqgBZ%2F9cAqgBa%2F9cAqgBb%2F9cAqgBc%2F9cAqgBd%2F%2BwAqgC%2F%2F9cAqgDL%2F%2BwAqgDO%2F%2BwAqwAF%2F%2BwAqwAK%2F%2BwAqwBZ%2F9cAqwBa%2F9cAqwBb%2F9cAqwBc%2F9cAqwBd%2F%2BwAqwC%2F%2F9cAqwDL%2F%2BwAqwDO%2F%2BwArAAF%2F%2BwArAAK%2F%2BwArABZ%2F9cArABa%2F9cArABb%2F9cArABc%2F9cArABd%2F%2BwArAC%2F%2F9cArADL%2F%2BwArADO%2F%2BwArQAF%2F%2BwArQAK%2F%2BwArQBZ%2F9cArQBa%2F9cArQBb%2F9cArQBc%2F9cArQBd%2F%2BwArQC%2F%2F9cArQDL%2F%2BwArQDO%2F%2BwAsgAF%2F%2BwAsgAK%2F%2BwAsgBZ%2F9cAsgBa%2F9cAsgBb%2F9cAsgBc%2F9cAsgBd%2F%2BwAsgC%2F%2F9cAsgDL%2F%2BwAsgDO%2F%2BwAtAAF%2F%2BwAtAAK%2F%2BwAtABZ%2F9cAtABa%2F9cAtABb%2F9cAtABc%2F9cAtABd%2F%2BwAtAC%2F%2F9cAtADL%2F%2BwAtADO%2F%2BwAtQAF%2F%2BwAtQAK%2F%2BwAtQBZ%2F9cAtQBa%2F9cAtQBb%2F9cAtQBc%2F9cAtQBd%2F%2BwAtQC%2F%2F9cAtQDL%2F%2BwAtQDO%2F%2BwAtgAF%2F%2BwAtgAK%2F%2BwAtgBZ%2F9cAtgBa%2F9cAtgBb%2F9cAtgBc%2F9cAtgBd%2F%2BwAtgC%2F%2F9cAtgDL%2F%2BwAtgDO%2F%2BwAuAAF%2F9cAuAAK%2F9cAuADL%2F9cAuADO%2F9cAugAF%2F%2BwAugAK%2F%2BwAugBZ%2F9cAugBa%2F9cAugBb%2F9cAugBc%2F9cAugBd%2F%2BwAugC%2F%2F9cAugDL%2F%2BwAugDO%2F%2BwAvwAFAFIAvwAKAFIAvwAP%2F64AvwAR%2F64AvwAiACkAvwDLAFIAvwDM%2F64AvwDOAFIAvwDP%2F64AwAAF%2F%2BwAwAAK%2F%2BwAwABZ%2F9cAwABa%2F9cAwABb%2F9cAwABc%2F9cAwABd%2F%2BwAwAC%2F%2F9cAwADL%2F%2BwAwADO%2F%2BwAwQAFAFIAwQAKAFIAwQAP%2F64AwQAR%2F64AwQAiACkAwQDLAFIAwQDM%2F64AwQDOAFIAwQDP%2F64AwwAtAHsAyAA3%2F64AyQA3%2F64AygAk%2F3EAygA3ACkAygA5ACkAygA6ACkAygA8ABQAygBE%2F64AygBG%2F4UAygBH%2F4UAygBI%2F4UAygBK%2F8MAygBQ%2F8MAygBR%2F8MAygBS%2F4UAygBT%2F8MAygBU%2F4UAygBV%2F8MAygBW%2F8MAygBY%2F8MAygCC%2F3EAygCD%2F3EAygCE%2F3EAygCF%2F3EAygCG%2F3EAygCH%2F3EAygCfABQAygCi%2F4UAygCj%2F64AygCk%2F64AygCl%2F64AygCm%2F64AygCn%2F64AygCo%2F64AygCp%2F4UAygCq%2F4UAygCr%2F4UAygCs%2F4UAygCt%2F4UAygC0%2F4UAygC1%2F4UAygC2%2F4UAygC3%2F4UAygC4%2F4UAygC6%2F4UAygC7%2F8MAygC8%2F8MAygC9%2F8MAygC%2B%2F8MAygDE%2F4UAywAk%2F3EAywA3ACkAywA5ACkAywA6ACkAywA8ABQAywBE%2F64AywBG%2F4UAywBH%2F4UAywBI%2F4UAywBK%2F8MAywBQ%2F8MAywBR%2F8MAywBS%2F4UAywBT%2F8MAywBU%2F4UAywBV%2F8MAywBW%2F8MAywBY%2F8MAywCC%2F3EAywCD%2F3EAywCE%2F3EAywCF%2F3EAywCG%2F3EAywCH%2F3EAywCfABQAywCi%2F4UAywCj%2F64AywCk%2F64AywCl%2F64AywCm%2F64AywCn%2F64AywCo%2F64AywCp%2F4UAywCq%2F4UAywCr%2F4UAywCs%2F4UAywCt%2F4UAywC0%2F4UAywC1%2F4UAywC2%2F4UAywC3%2F4UAywC4%2F4UAywC6%2F4UAywC7%2F8MAywC8%2F8MAywC9%2F8MAywC%2B%2F8MAywDE%2F4UAzAAm%2F5oAzAAq%2F5oAzAAy%2F5oAzAA0%2F5oAzAA3%2F3EAzAA4%2F9cAzAA5%2F4UAzAA6%2F4UAzAA8%2F4UAzACJ%2F5oAzACU%2F5oAzACV%2F5oAzACW%2F5oAzACX%2F5oAzACY%2F5oAzACa%2F5oAzACb%2F9cAzACc%2F9cAzACd%2F9cAzACe%2F9cAzACf%2F4UAzADD%2F5oAzQAk%2F3EAzQA3ACkAzQA5ACkAzQA6ACkAzQA8ABQAzQBE%2F64AzQBG%2F4UAzQBH%2F4UAzQBI%2F4UAzQBK%2F8MAzQBQ%2F8MAzQBR%2F8MAzQBS%2F4UAzQBT%2F8MAzQBU%2F4UAzQBV%2F8MAzQBW%2F8MAzQBY%2F8MAzQCC%2F3EAzQCD%2F3EAzQCE%2F3EAzQCF%2F3EAzQCG%2F3EAzQCH%2F3EAzQCfABQAzQCi%2F4UAzQCj%2F64AzQCk%2F64AzQCl%2F64AzQCm%2F64AzQCn%2F64AzQCo%2F64AzQCp%2F4UAzQCq%2F4UAzQCr%2F4UAzQCs%2F4UAzQCt%2F4UAzQC0%2F4UAzQC1%2F4UAzQC2%2F4UAzQC3%2F4UAzQC4%2F4UAzQC6%2F4UAzQC7%2F8MAzQC8%2F8MAzQC9%2F8MAzQC%2B%2F8MAzQDE%2F4UAzwAm%2F5oAzwAq%2F5oAzwAy%2F5oAzwA0%2F5oAzwA3%2F3EAzwA4%2F9cAzwA5%2F4UAzwA6%2F4UAzwA8%2F4UAzwCJ%2F5oAzwCU%2F5oAzwCV%2F5oAzwCW%2F5oAzwCX%2F5oAzwCY%2F5oAzwCa%2F5oAzwCb%2F9cAzwCc%2F9cAzwCd%2F9cAzwCe%2F9cAzwCf%2F4UAzwDD%2F5oAAAAeAW4AAQAAAAAAAAA5AHQAAQAAAAAAAQASANQAAQAAAAAAAgAGAPUAAQAAAAAAAwAuAVoAAQAAAAAABAAZAb0AAQAAAAAABQAMAfEAAQAAAAAABgAXAi4AAQAAAAAABwBSAuwAAQAAAAAACAAUA2kAAQAAAAAACwAcA7gAAQAAAAAADAAuBDMAAQAAAAAADQAuBMAAAQAAAAAADgAqBUUAAQAAAAAAEAAJBYQAAQAAAAAAEQAPBa4AAwABBAkAAAByAAAAAwABBAkAAQAkAK4AAwABBAkAAgAMAOcAAwABBAkAAwBcAPwAAwABBAkABAAyAYkAAwABBAkABQAYAdcAAwABBAkABgAuAf4AAwABBAkABwCkAkYAAwABBAkACAAoAz8AAwABBAkACwA4A34AAwABBAkADABcA9UAAwABBAkADQBcBGIAAwABBAkADgBUBO8AAwABBAkAEAASBXAAAwABBAkAEQAeBY4ARABpAGcAaQB0AGkAegBlAGQAIABkAGEAdABhACAAYwBvAHAAeQByAGkAZwBoAHQAIACpACAAMgAwADEAMAAtADIAMAAxADEALAAgAEcAbwBvAGcAbABlACAAQwBvAHIAcABvAHIAYQB0AGkAbwBuAC4AAERpZ2l0aXplZCBkYXRhIGNvcHlyaWdodCCpIDIwMTAtMjAxMSwgR29vZ2xlIENvcnBvcmF0aW9uLgAATwBwAGUAbgAgAFMAYQBuAHMAIABTAGUAbQBpAGIAbwBsAGQAAE9wZW4gU2FucyBTZW1pYm9sZAAASQB0AGEAbABpAGMAAEl0YWxpYwAAQQBzAGMAZQBuAGQAZQByACAALQAgAE8AcABlAG4AIABTAGEAbgBzACAAUwBlAG0AaQBiAG8AbABkACAASQB0AGEAbABpAGMAIABCAHUAaQBsAGQAIAAxADAAMAAAQXNjZW5kZXIgLSBPcGVuIFNhbnMgU2VtaWJvbGQgSXRhbGljIEJ1aWxkIDEwMAAATwBwAGUAbgAgAFMAYQBuAHMAIABTAGUAbQBpAGIAbwBsAGQAIABJAHQAYQBsAGkAYwAAT3BlbiBTYW5zIFNlbWlib2xkIEl0YWxpYwAAVgBlAHIAcwBpAG8AbgAgADEALgAxADAAAFZlcnNpb24gMS4xMAAATwBwAGUAbgBTAGEAbgBzAC0AUwBlAG0AaQBiAG8AbABkAEkAdABhAGwAaQBjAABPcGVuU2Fucy1TZW1pYm9sZEl0YWxpYwAATwBwAGUAbgAgAFMAYQBuAHMAIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABHAG8AbwBnAGwAZQAgAGEAbgBkACAAbQBhAHkAIABiAGUAIAByAGUAZwBpAHMAdABlAHIAZQBkACAAaQBuACAAYwBlAHIAdABhAGkAbgAgAGoAdQByAGkAcwBkAGkAYwB0AGkAbwBuAHMALgAAT3BlbiBTYW5zIGlzIGEgdHJhZGVtYXJrIG9mIEdvb2dsZSBhbmQgbWF5IGJlIHJlZ2lzdGVyZWQgaW4gY2VydGFpbiBqdXJpc2RpY3Rpb25zLgAAQQBzAGMAZQBuAGQAZQByACAAQwBvAHIAcABvAHIAYQB0AGkAbwBuAABBc2NlbmRlciBDb3Jwb3JhdGlvbgAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGEAcwBjAGUAbgBkAGUAcgBjAG8AcgBwAC4AYwBvAG0ALwAAaHR0cDovL3d3dy5hc2NlbmRlcmNvcnAuY29tLwAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGEAcwBjAGUAbgBkAGUAcgBjAG8AcgBwAC4AYwBvAG0ALwB0AHkAcABlAGQAZQBzAGkAZwBuAGUAcgBzAC4AaAB0AG0AbAAAaHR0cDovL3d3dy5hc2NlbmRlcmNvcnAuY29tL3R5cGVkZXNpZ25lcnMuaHRtbAAATABpAGMAZQBuAHMAZQBkACAAdQBuAGQAZQByACAAdABoAGUAIABBAHAAYQBjAGgAZQAgAEwAaQBjAGUAbgBzAGUALAAgAFYAZQByAHMAaQBvAG4AIAAyAC4AMAAATGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMAAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGEAcABhAGMAaABlAC4AbwByAGcALwBsAGkAYwBlAG4AcwBlAHMALwBMAEkAQwBFAE4AUwBFAC0AMgAuADAAAGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAAATwBwAGUAbgAgAFMAYQBuAHMAAE9wZW4gU2FucwAAUwBlAG0AaQBiAG8AbABkACAASQB0AGEAbABpAGMAAFNlbWlib2xkIEl0YWxpYwAAAgAA%2F%2FQAAP9mAGYAAAAAAAAAAAAAAAAAAAAAAAAAAADWAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA%2BAD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQCsAKMAhACFAL0AlgDoAIYAjgCLAJ0AqQCkAQIAigEDAIMAkwDyAPMAjQCXAIgAwwDeAPEAngCqAPUA9AD2AKIArQDJAMcArgBiAGMAkABkAMsAZQDIAMoAzwDMAM0AzgDpAGYA0wDQANEArwBnAPAAkQDWANQA1QBoAOsA7QCJAGoAaQBrAG0AbABuAKAAbwBxAHAAcgBzAHUAdAB2AHcA6gB4AHoAeQB7AH0AfAC4AKEAfwB%2BAIAAgQDsAO4AugDXALAAsQDYAN0A2QCyALMAtgC3AMQAtAC1AMUAhwC%2BAL8AvAEEAQUHdW5pMDBBRAlvdmVyc2NvcmUMZm91cnN1cGVyaW9yBEV1cm8AAAABAAIACAAK%2F%2F8ADwAAAAEAAAAAyYlvMQAAAADJY0iWAAAAAMnt2GQ%3D%29%20format%28%27truetype%27%29%3B%0A%7D%0A%40font%2Dface%20%7B%0Afont%2Dfamily%3A%20%27Source%20Code%20Pro%27%3B%0Afont%2Dstyle%3A%20normal%3B%0Afont%2Dweight%3A%20400%3B%0Asrc%3A%20url%28data%3Aapplication%2Fx%2Dfont%2Dtruetype%3Bbase64%2CAAEAAAAPAIAAAwBwRkZUTWaiaLcAAKVwAAAAHE9TLzJyvPgMAAABeAAAAGBjbWFwVIOo9QAAA8QAAAICY3Z0IAC%2FC3EAAAeAAAAAImZwZ20GWZw3AAAFyAAAAXNnYXNw%2F%2F8AAwAApWgAAAAIZ2x5ZrbD8a4AAAmIAABdUGhlYWT7xXV0AAAA%2FAAAADZoaGVhBi4C3QAAATQAAAAkaG10eDZGLdMAAAHYAAAB6mxvY2F%2FBGjeAAAHpAAAAeJtYXhwAwgBUgAAAVgAAAAgbmFtZXFCsfwAAGbYAAA7ZHBvc3QKYvRKAACiPAAAAylwcmVwJrMjsAAABzwAAABBAAEAAAABBFos1IC0Xw889QAfA%2BgAAAAAzR8W4gAAAADNHxbi%2F%2F%2F%2FBgJVA2sAAAAIAAIAAAAAAAAAAQAAA9j%2B7wAAA%2Bj%2F%2FwAAAlUAAQAAAAAAAAAAAAAAAAAAAAUAAQAAAPAAVgAEAEgABgABAAAAAAAKAAACAACyAAMAAQADAlgBkAAFAAACigJYAAAASwKKAlgAAAFeADIBIAAAAgsFCQMEAwICBCAAAAcAABgBAAAAAAAAAABBREJFAEAADSIVAu7%2FBgAAA9gBEWAAAZMAAAAAAeYCkAAAACAAAQPoAAAAAAAAAU0AAAAAAAACWAAAAAAA4wCDAFcAVQAcACoA9QDQAHoAVABVAMUAVQDbAGMARwBiAEUAOQAnADgATQBGAEQAQwDbAMUAeABVAGsAbQAxACAAZwBCAFUAcwCHADUATwBfAFEAYgCGAFEAUwAwAGYAMQBkAEMAKgBPACsACgA2ACYAQQDiAGMAYwBvADwAuQBRAF0AUAA8AEUAZwBIAF0AWgA3AGoAUQA8AF0APABdADwAkgBIAEUATQAzAAgAQAAxAEcAeAEHAGMATAAAAOMAcQBNADoANQEHAFsAlgAeAKcAUwBVAFUAcACxAK8AVQCuAKwA6wBNAEgA2wDdANAAjgBhABwAHAAnAHsAIAAgACAAIAAgACD%2F%2FwBCAHMAcwBzAHMAXwBfAF8AXwAQAFMAMAAwADAAMAAwAGYALQBPAE8ATwBPACYAZQBYAFEAUQBRAFEAUQBRABEAUABFAEUARQBFAFoAWgBaAFoAPABdADwAPAA8ADwAPABVADwATQBNAE0ATQAxAF0AMQBaACEACwCoAM8AngC5AOsAqACeALEAlgDPANcApwCOAFAAFADRANkA2QBfAGcAZwCXAMUA0wAcAKwAOgBVABwAoQDQAK0ArACsAKkA%2BQCkAJsApQDPANIAAAAAAAMAAAADAAAAHAABAAAAAAD8AAMAAQAAABwABADgAAAANAAgAAQAFAAAAA0AfgD%2FATEBUwLGAtoC3AMEAwgDCgMnHUMdUiAUIBogHiAiIDogRCB0IKwiEiIV%2F%2F8AAAAAAA0AIACgATEBUgLGAtoC3AMAAwgDCgMnHUMdUiATIBggHCAiIDkgRCB0IKwiEiIV%2F%2F8AA%2F%2F3%2F%2BX%2FxP%2BT%2F3P%2BAf3u%2Fe39yv3H%2Fcb9quOP44HgweC%2B4L3guuCk4JvgbOA13tDezgABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQYAAAMAAAAAAAAAAQIAAAAEAAAAAAAAAAAAAAAAAAAAAQAABQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmMAiImLjZWaoKWkpqinqautrK6vsbCys7W3tri6ub69v8AAdGZna9x6o3JtAHhsAIqcAHUAAGl5AAAAAABufgCqvINlcAAAAABvfwBkhIeZxcbU1dna1te7AMMA3%2BHd3gAAAHvY2wCGjoWPjJGSk5CXmACWnp%2BdxMfJcwAAyHwAAAAAALgAACxLuAAJUFixAQGOWbgB%2F4W4AEQduQAJAANfXi24AAEsICBFaUSwAWAtuAACLLgAASohLbgAAywgRrADJUZSWCNZIIogiklkiiBGIGhhZLAEJUYgaGFkUlgjZYpZLyCwAFNYaSCwAFRYIbBAWRtpILAAVFghsEBlWVk6LbgABCwgRrAEJUZSWCOKWSBGIGphZLAEJUYgamFkUlgjilkv%2FS24AAUsSyCwAyZQWFFYsIBEG7BARFkbISEgRbDAUFiwwEQbIVlZLbgABiwgIEVpRLABYCAgRX1pGESwAWAtuAAHLLgABiotuAAILEsgsAMmU1iwQBuwAFmKiiCwAyZTWCMhsICKihuKI1kgsAMmU1gjIbgAwIqKG4ojWSCwAyZTWCMhuAEAioobiiNZILADJlNYIyG4AUCKihuKI1kguAADJlNYsAMlRbgBgFBYIyG4AYAjIRuwAyVFIyEjIVkbIVlELbgACSxLU1hFRBshIVktALAAKwCyAQECKwGyAgECKwG3AkA2KiEUAAgrALcBTUAyJBcACCsAsgMHByuwACBFfWkYREuwYFJYsAEbsABZsAGOAAAAABQARABWAAAADP8zAAwB5gAMAj4ADAJ%2BAAwCkAAMAsgADAAAAAAAAAAAAAAAAAAAAAAAOABEALoBJAE0AeYB%2FAIeAj4CdAKYAr4CxgLoAwIDZAOcA%2B4EYASyBRgFjAXCBkgGvAbIBtQHBgcSB0QHlggMCFAItAkECUIJgAm2ChYKUgqICsQLFAs6C5AL4Aw0DH4M8A1EDbIN3g4gDlgOuA8UD1IPiA%2BmD8AP3hAIEBwQJBCqESYRdhHuEkwSnBNqE8IUABRWFKYU3hViFboWDhaIFwAXTBeyGAIYVhiQGQIZYBm%2BGfQaVhpqGswbChsKGzgbohwKHGQcxhzkHXAdeB4AHggeFB4qHjIeqh6yHu4fLB82H0AfSB%2B%2BH%2FAf%2BiACIAwgFCAgIDAgQCBQIKAgrCC4IMQg0CDcIOghQiFOIVohZiFyIX4hiiGWIaIhriH%2BIgoiFiIiIi4iOiJGInQi%2FCMIIxQjICMsIzgjfCP4JAQkECQcJCgkNCRAJPglBCUQJRwlKCU0JUAlTCVYJWQl8CX8JggmFCYgJiwmOCZ4JwAnDCcYJyQnMCc8J7YnwifqKDwo5CjsKPQo%2FCkOKSIpQil6KY4pwin0KiIqdiqyKsYq2isAKyQrLis6K0YrVCt6K5IrqivGK9AsTixiLGospCzGLQQtWC2SLaQtuC3YLhQuSC56LqgAAAACAOP%2F9AF1Ap4ABQARAC0AuAAARVi4AAEvG7kAAQANPlm4AABFWLgADy8buQAPAAM%2BWbgACdy4AAXcMDEBJzMHAyMHNDYzMhYVFAYjIiYBBgJQAgo4LSseHisrHh4rAkBeXv6opiMpKSMkKioAAAD%2F%2FwCDAWAB1gKvEiYADI4AEAYADHMAAAAAAgBXAAACBwKKABsAHwCLALgAAEVYuAAILxu5AAgACz5ZuAAARVi4AAwvG7kADAALPlm4AABFWLgAGy8buQAbAAM%2BWbgAAEVYuAAXLxu5ABcAAz5ZuwACAAEAAQAEK7sABgABAAUABCu4AAYQuAAK0LgADtC4AAUQuAAe0LgAEdC4AAIQuAAf0LgAEtC4AAEQuAAZ0LgAFdAwMTcjNTM3IzUzNzMHMzczBzMVIwczFSMHIzcjByMTNyMHpk9WE1VbGDUXhBg1F1FXE1ZdGDYZhRg22ROFEsw5lDq3t7e3OpQ5zMzMAQWUlAAAAAABAFX%2FkgIAAuwAMQBHALgAFi%2B4ACwvuAAr3LkABQAB9LgAFhC4ABfcugAIABcAKxESObgAFNC4ABcQuQAeAAH0ugAhACsAFxESObgAKxC4AC7QMDEBLgMjIgYVFB4EFRQOAgcVIzUuASc3HgEzMjY1NC4ENTQ2NzUzFR4BFwHDER8iKBkzOy9HUkcvGS9BJzw4ZCMnJls5PD0vRlNGL1lJPDdKHgHtDRUPCC0mHCQeHio8LiA3KRsEkpEFLB05GykxJh8pIB4pOSw%2FUAiEgwUqHQAA%2F%2F8AHP%2F0Aj0CihInAOT%2FewFNECYA3wAAEAcA5ACGAAAAAwAq%2F%2FQCQQKcAA0AGwBHAJAAuAAARVi4ADMvG7kAMwANPlm4AABFWLgAIS8buQAhAAM%2BWbgAAEVYuAAcLxu5ABwAAz5ZuAAhELkABQAB9LoACAAhADMREjm6ABEAMwAhERI5uAARELgAK9C4AAvQuAAzELkAGQAB9LgACBC4AB7QuAARELkAOwAB9LgAHhC4AEXQuAA%2B0LgAHBC4AEfQMDE3FB4CMzI2Ny4BJw4BExQWFz4DNTQmIyIGASYnDgEjIi4CNTQ%2BAjcuATU0PgIzMhYVFA4CBx4BFz4BNzMOAQcWF3oUIi4aHzoaMFUiICpGEA4VJR0QGyEjJgFqQUgkVzgsSDMdFCMsGBUXFSU1IT1CGSgyGiBTLRwpDkwSNCQ8Na8bLSARHBgqZDYcPQEtGzoeDx8hJRYdKzb9yRQ3IygbMEMoIDYtJxIpTyMhOCoYSDogNC8pFDNeJyhfOUF2NC4RAAABAPUBYAFjAq8ABQALALoAAgAEAAMrMDETJzMPASP3Am4CGTgCQW5u4QAAAAEA0P9QAd4C3AAOAAsAugAGAAAAAyswMQUuATU0NjcXDgEVFBYXBwGxaHl5aC1lX19lLbBR5JGR5FEqVch%2Ff8hVKgAAAQB6%2F1ABiALcAA0ACwC6AAcADQADKzAxFz4BNTQmJzceARUUBgd6ZV9fZS1oeXlohlXIf3%2FIVSpR5JGR5FEAAAEAVABvAgQCLAAOAC8AuAAOL7oAAQAOAAUREjm4AAEQuQAEAAH0uAAH0LgAARC4AArQuAAOELgADNAwMT8BJzcXNzMXNxcHFwcnB4psohCnCTAJpxCibCp4eI2lRi43vb03LkalHp%2BfAAAAAAEAVQBoAgMCLAALAB0AuwACAAEAAQAEK7gAAhC4AAbQuAABELgACdAwMQEjNTM1MxUzFSMVIwELtrZCtrZCASs%2Bw8M%2BwwAAAAEAxf8rAYwAmwASAAsAugAMAAYAAyswMRc%2BATcOASMiJjU0NjMyFhUUBgfFPj4CBQkFIC4wIC0tXVOhHE88AQElJiUnRTtYeR8AAP%2F%2FAFUBKwIDAWkSBgDiAAAAAQDb%2F%2FQBfQCdAAsAGAC4AABFWLgACS8buQAJAAM%2BWbgAA9wwMTc0NjMyFhUUBiMiJtsvIiIvLyIiL0gmLy8mJi4uAAABAGP%2FYAH1AsYAAwAYALgAAEVYuAACLxu5AAIADz5ZuAAA3DAxFyMBM61KAUhKoANmAAAAAwBH%2F%2FQCEQKKAAsAGwAnAEsAuAAARVi4AAYvG7kABgALPlm4AABFWLgAAC8buQAAAAM%2BWbgABhC5AAwAAfS4AAAQuQAUAAH0ugAcABQADBESObgAHC%2B4ACLcMDEFIiY1NDYzMhYVFAYDIg4CFRQWMzI2NTQuAgMiJjU0NjMyFhUUBgEsa3p6a2t6emshOCkWVUNDVRYpOCEZJSUZGSUlDK2goaiooaCtAlQeQWNFiYKCiUVjQR7%2BvSMgHyMjHyAjAAAAAAEAYgAAAhACfgAMAD0AuAAARVi4AAovG7kACgALPlm4AABFWLgAAi8buQACAAM%2BWbkAAwAB9LgAANC4AAoQuAAF0LkABwAB9DAxJRUhNTMRIzU%2BATczEQIQ%2FlK1iDNMHj1EREQB1jUIFxD9xgAAAAABAEUAAAIKAooAHwBDALgAAEVYuAAPLxu5AA8ACz5ZuAAARVi4AB4vG7kAHgADPlm5ABwAAfS4AADQugAFAA8AHhESObgADxC5AAgAAfQwMTc%2BAzU0JiMiBgcnPgEzMh4CFRQOAgc%2BATsBFSFJUX1VLERHLU0fLytjRDBNNh0rTmxBHT0d0v4%2FMUh0YVQoN0YtIC8sNRsxRiotW2FpOwIERwAAAAEAOf%2F0AgYCigAzAFMAuAAARVi4AB0vG7kAHQALPlm4AABFWLgAMC8buQAwAAM%2BWbkAAwAB9LoADQAdADAREjm4AA0vuQAOAAH0uAAdELkAFgAB9LoAJgANAA4REjkwMTceATMyPgI1NC4CIzUyPgI1NCYjIgYHJz4BMzIeAhUUBgcVHgMVFA4CIyImJ2MgWT4hOCkXGThYPzlPMhdHOy1QICwoZj4tTTkgTDwgOSwZJD9UMFNwI4QeLhEeKxscLyISPxIgLBkvNiQdNCMtFik8JzpKFAQHGyk2ISpELxk3IwAAAAIAJwAAAiECfgAJABQAWQC4AABFWLgAES8buQARAAs%2BWbgAAEVYuAANLxu5AA0AAz5ZuwAOAAEAAAAEK7gAERC5AAQAAfS4AAAQuAAJ0LgADhC4AAvQuAAJELgAENC4AAAQuAAT0DAxJTU%2BATcjDgEPAQUjFSM1ITUBMxEzAXABAgIFDyIQrQGfY07%2BtwE%2FWGPyxho9GhcvF9pCsLA3AZf%2BdAAAAQA4%2F%2FQCCgJ%2BACgAVQC4AABFWLgAEi8buQASAAs%2BWbgAAEVYuAAjLxu5ACMAAz5ZuwAZAAEADQAEK7gAIxC5AAUAAfS6ABYAIwASERI5uAAWELgAEdC4ABIQuQAUAAH0MDE3HgMzMj4CNTQmIyIGBycTIRUhBz4BMzIeAhUUDgIjIi4CJ2EQJCs1ICI7LBlVSCg4IiwVAWn%2B4BEcNSUuUDsiJ0JVLitFNy0SgQ4bFAwVJjYhQkoUExwBM0e9DA4YMUs0NFA3HQ8YHxEAAgBN%2F%2FQCFgKKAA0AMABXALgAAEVYuAAtLxu5AC0ACz5ZuAAARVi4ACMvG7kAIwADPlm7AAgAAQAZAAQruAAjELkAAAAB9LoAFgAjAC0REjm4ABYQuQALAAH0uAAtELkAEQAB9DAxJTI%2BAjU0JiMiBgceARMuASMiDgIHPgEzMh4CFRQOAiMiLgI1ND4CMzIWFwFBHDIkFUZCJlQpCVXhGUIkJkY1IQEmXzAsSTUdIzpNKzRZQiUsSmE0O1cgNRQlMyBCRScvXWAB3hcbHEBpTSYtGTFKMS5LNh4mTXNNYIdVJycdAAAAAAEARgAAAhQCfgAPADMAuAAARVi4AAcvG7kABwALPlm4AABFWLgAAC8buQAAAAM%2BWbgABxC5AAUAAfS4AAnQMDEzPgM3ITUhFQ4DByPiBBoyTTf%2BkAHOP1IyFgNWW5WGfkNHM0iEiZheAAAAAAMARP%2F0AhMCigANABoAQABXALgAAEVYuAApLxu5ACkACz5ZuAAARVi4ADwvG7kAPAADPlm5AAMAAfS4ACkQuQATAAH0ugALAAMAExESObgACy%2B4ADHQuAAxL7gADty4AAsQuAAg3DAxNxQWMzI2NTQuAicOATc2NTQmIyIGFRQeAgc0PgI3NS4BNTQ%2BAjMyHgIVFAYHFR4DFRQOAiMiLgKPV0pITB82SSovPtFQQj82QhouPfgYJjEaKDkdNUgrL0kzGzkoGi4iEx86VTc2VzwhqzZEPjIhLSAZDhpBgTpGMEE4Lx0pIBnEITQqHwwEGUkzJTwrGBktPyUtTxwEDR4mMyIkPi4aGi9AAAACAEP%2F9AIMAooADQAwAFcAuAAARVi4ACMvG7kAIwALPlm4AABFWLgALS8buQAtAAM%2BWbsAAAABABkABCu6ABYALQAjERI5uAAWELkAAwAB9LgAIxC5AAYAAfS4AC0QuQARAAH0MDEBMjY3LgEjIg4CFRQWBx4BMzI%2BAjcOASMiLgI1ND4CMzIeAhUUDgIjIiYnARklVCoKU0cdMSQVRVkYQiUmRTUgAiddMSxJNB0iO00qNFpCJS1KYDQ7VyABNicuXmAUJTQfQkXLFxwcQWhNJiwZMUoxLks2HiZNc01gh1UnJh0AAAD%2F%2FwDb%2F%2FQBfQIDEicAEwAAAWYQBgATAAD%2F%2FwDF%2FysBjAIDEicAEwAAAWYQBgARAAAAAQB4ADAB7QJoAAcAOwC7AAAAAQAHAAQruAAAELgAAtC4AAIvuQABAAH0ugAEAAAABxESObgABxC4AAXQuAAFL7kABgAB9DAxEyUVBRUFFSV4AXX%2B0wEt%2FosBa%2F1PywTLT%2F0A%2F%2F8AVQDBAgMB1BImAOIAaxAGAOIAlgAAAAEAawAwAeACaAAHADsAuwAHAAEAAAAEK7gAABC4AALQuAACL7kAAQAB9LoABAAHAAAREjm4AAcQuAAF0LgABS%2B5AAYAAfQwMQEFNSU1JTUFAeD%2BiwEt%2FtMBdQEt%2FU%2FLBMtP%2FQACAG3%2F9AHfAqoAHQApACoAuAAARVi4ACcvG7kAJwADPlm7ABEAAQAKAAQruAAnELgAIdy4AADcMDE3Jj4ENTQmIyIGByc%2BATMyHgIVFA4EFwc0NjMyFhUUBiMiJvIGEiMsJxo3NyZBGzEiXDoqRDEbGyctJRUFZiseHisrHh4r6CQ4LignKhoqNx8bLSMuFik5JCEzKygsMyCmIykpIyQqKgAAAAIAMf9wAiICewA0AD0APwC7AB4AAQAlAAQruwAvAAEAFAAEK7sAOAABAAYABCu7ADsAAQAOAAQrugACAAYALxESObgAAhC5ADoAAfQwMSUjJyMOASMiLgI1NDY3NTQuAiMiDgIVFB4CMzI2NxcOASMiLgI1ND4CMzIeAhUFFBYzMjc1DgECIjIHBBZHJxsvIxSIgBEkOSctUj8lJD5UMS1DHRwnUjI7alAvLVBrPjRMMhn%2FACslODhoWGQ6HCoSIjEeTU4QDiRAMBwqU31TUH1WLRcWLRscM2OUYGCQYDEkQFczsCMoQH4ONwAAAgAgAAACOAKQAAkAEQBBALgAAEVYuAAOLxu5AA4ADT5ZuAAARVi4AA0vG7kADQADPlm7AAoAAQAJAAQruAAOELkABQAB9LgADRC4ABHQMDEBJy4BJyMOAQ8BFyMHIxMzEyMBjR8RIBAEECARH9nuP1XdXt1YAQtkN205OW03ZEPIApD9cAAAAAMAZwAAAiECkAATABwAJQBXALgAAEVYuAAALxu5AAAADT5ZuAAARVi4ABMvG7kAEwADPlm6ACQAEwAAERI5uAAkL7kAHAAB9LoACgAkABwREjm4AAAQuQAbAAH0uAATELkAJQAB9DAxEzMyHgIVFAYHFR4BFRQOAisBEzI2NTQmKwEVEzI2NTQmKwEVZ7QyUzshOTpIUCRBWzfDplRJTUxWY1VcWldjApASJj0rMU8PBAtORDBIMBgBeDo3Ni%2FW%2Fso%2FQz05%2BAAAAQBC%2F%2FQCKgKcACEAOQC4AABFWLgABS8buQAFAA0%2BWbgAAEVYuAAdLxu5AB0AAz5ZuAAFELkADAAB9LgAHRC5ABYAAfQwMRM0PgIzMhYXBy4BIyIOAhUUHgIzMjY3Fw4BIyIuAkIrTmxAPFodLxpAKi9NNh0dNk0vLUYgMCdiPz5pTSwBSE9%2BWC8wIDUbISVFYj0%2BY0YmJiMzLTIuV38AAAIAVQAAAiUCkAAKABMAOQC4AABFWLgAAC8buQAAAA0%2BWbgAAEVYuAAKLxu5AAoAAz5ZuAAAELkAEgAB9LgAChC5ABMAAfQwMRMzMhYVFA4CKwE3MjY1NCYrARFVoJWbJ0xwSaSbcG9vcEgCkKidTntVLUSKfX2E%2FfgAAAABAHMAAAISApAACwBNALgAAEVYuAAALxu5AAAADT5ZuAAARVi4AAsvG7kACwADPlm4AAAQuQADAAH0ugAHAAsAABESObgABy%2B5AAQAAfS4AAsQuQAIAAH0MDETIRUhFSEVIRUhFSFzAZX%2BvwEP%2FvEBS%2F5hApBGzkfuRwAAAQCHAAACGAKQAAkAQwC4AABFWLgAAC8buQAAAA0%2BWbgAAEVYuAAJLxu5AAkAAz5ZuAAAELkAAwAB9LoABwAJAAAREjm4AAcvuQAEAAH0MDETIRUhFSEVIREjhwGR%2FsIBDf7zUwKQRt5G%2FtoAAQA1%2F%2FQCFQKcACcATQC4AABFWLgABS8buQAFAA0%2BWbgAAEVYuAAjLxu5ACMAAz5ZuAAFELkADgAB9LgAIxC5ABgAAfS6AB0AIwAFERI5uAAdL7kAHgAB9DAxEzQ%2BAjMyHgIXBy4BIyIOAhUUHgIzMjY3NSM1MxEOASMiLgI1K01rQCE2LSMOLxg%2BMC5LNh0bM0wwIzwTg9AgZEA%2BaEwqAUhPf1cvDhccDzUaIiVFYj0%2BY0YmFRKrRf7sICwuV38AAQBPAAACCQKQAAsASQC4AABFWLgAAC8buQAAAA0%2BWbgAAEVYuAALLxu5AAsAAz5ZugAJAAsAABESObgACS%2B5AAIAAfS4AAAQuAAE0LgACxC4AAfQMDETMxEhETMRIxEhESNPVAESVFT%2B7lQCkP7tARP9cAE1%2FssAAQBfAAAB%2BQKQAAsAQQC4AABFWLgABC8buQAEAA0%2BWbgAAEVYuAALLxu5AAsAAz5ZuQAAAAH0uAAEELkAAwAB9LgABtC4AAAQuAAJ0DAxNzMRIzUhFSMRMxUhX6OjAZqjo%2F5mRwIDRkb9%2FUcAAQBR%2F%2FQB7QKRABMANQC4AABFWLgACS8buQAJAA0%2BWbgAAEVYuAAQLxu5ABAAAz5ZuQADAAH0uAAJELkABwAB9DAxNx4BMzI2NREhNSERFA4CIyImJ4cdSCZHQf7tAWYWM1M9OGkikywqS1EBckb%2BQS5RPCM0OQAAAQBiAAACQwKQAAwAawC4AABFWLgAAC8buQAAAA0%2BWbgAAEVYuAAELxu5AAQADT5ZuAAARVi4AAsvG7kACwADPlm4AABFWLgACC8buQAIAAM%2BWboAAwAHAAAREjm6AAkABwAAERI5uAAJELgABtC4AAMQuAAK0DAxEzMRMwEzBxMjAwcVI2JUAwEUXs%2FnXb5yVAKQ%2FrcBSfr%2BagFVhdAAAAEAhgAAAh0CkAAFACsAuAAARVi4AAAvG7kAAAANPlm4AABFWLgABS8buQAFAAM%2BWbkAAgAB9DAxEzMRIRUhhlIBRf5pApD9t0cAAAABAFEAAAIHApAAHQBNALgAAEVYuAAALxu5AAAADT5ZuAAARVi4AB0vG7kAHQADPlm7ABIAAQAEAAQruAAAELgABtC4AB0QuAAJ0LgAABC5ABYAAfS4ABDQMDETMxMXMzcTMxEjETQ%2BAjcjDwEjLwEjHgMVESNRXF0hBCBcXEcCAwMCAytaLVosAwEEBAJGApD%2B6WpqARf9cAFxFDY3NRSM%2Ff2MFDU3NhT%2BjwAAAQBTAAACBQKQABMAWQC4AABFWLgAAS8buQABAA0%2BWbgAAEVYuAALLxu5AAsAAz5ZugACAAEACxESObkABAAB9LgAARC4AAjQugAMAAsAARESObgAARC5AA0AAfS4AAsQuAAS0DAxEzMTFzMuATURMxEjAycjHgEVESNTVdVCAgIJT1XVQgICCU8CkP5ihjFrNAFU%2FXABnoYzZzP%2BqQAAAAIAMP%2F0AigCnAATACcANQC4AABFWLgACi8buQAKAA0%2BWbgAAEVYuAAALxu5AAAAAz5ZuQAUAAH0uAAKELkAHgAB9DAxBSIuAjU0PgIzMh4CFRQOAicyPgI1NC4CIyIOAhUUHgIBLDhcQyUlQ1w4N11DJSVDXTclPisYGCs%2BJSY9KxgYKz0MMFl%2FT099Vy4vV31OT39ZMEkmR2M%2BPWJEJSVEYj0%2BY0cmAAIAZgAAAiECkAAOABcARwC4AABFWLgAAC8buQAAAA0%2BWbgAAEVYuAAOLxu5AA4AAz5ZugAMAA4AABESObgADC%2B4AAAQuQAWAAH0uAAMELkAFwAB9DAxEzMyHgIVFA4CKwERIxMyNjU0JisBEWbJNlo%2FIyNAWTZ2U75XU1VVawKQFC1KNjRMMhn%2B%2FAFIQUZHN%2F77AAACADH%2FXQIpAp0AEwA0AEsAuAAARVi4ACQvG7kAJAANPlm4AABFWLgAGi8buQAaAAM%2BWbsAMQABABcABCu4ABoQuQAFAAH0uAAkELkADwAB9LgAGhC4AC7QMDETFB4CMzI%2BAjU0LgIjIg4CAQ4BIyImJy4DNTQ%2BAjMyHgIVFA4CBx4BMzI2N4YXKz0mJT0rFxcrPSUmPSsXAaMQJBZXbRkvTTceJEJcODdcQiQdNEstEUozDxkJAUs9ZEcnJ0dkPT1jRSUlRWP94wYIWEMIN1d2R099Vy8vV35ORnRXOAkqKwYEAAACAGQAAAIpApAACAAYAFMAuAAARVi4AA4vG7kADgANPlm4AABFWLgADS8buQANAAM%2BWboACwANAA4REjm4AAsvuQAAAAH0uAAOELkACAAB9LgADRC4AAnQuAALELgAF9AwMRMzMjY1NCYrAQEDIxEjETMyHgIVFAYHE7dtTVFRTW0BE551U8wyVD0iUEOnAVk%2FQEE0%2FbMBFf7rApATLEYzTVwR%2FuIAAAABAEP%2F9AIZApwAMwBJALgAAEVYuAAWLxu5ABYADT5ZuAAARVi4ADAvG7kAMAADPlm5AAMAAfS6AAYAMAAWERI5uAAWELkAHQAB9LoAIAAWADAREjkwMTceATMyNjU0LgIvAS4DNTQ%2BAjMyFhcHLgEjIgYVFB4CHwEeAxUUDgIjIiYndSViNkZMEiArGV4ZMikaIDlPLz5oJCwgTTE8RhUhKhVcHjUnFyA8VjZIeS2PJS07MBkjGRQLKQocKDckJUAvGi0kNh0hMy0YIRkSCSgMHyk3JCdEMx00LQAAAQAqAAACLgKQAAcAMwC4AABFWLgAAi8buQACAA0%2BWbgAAEVYuAAHLxu5AAcAAz5ZuAACELkAAQAB9LgABdAwMQEjNSEVIxEjAQLYAgTYVAJKRkb9tgAAAAEAT%2F%2F0AgkCkAAZADMAuAAARVi4AAAvG7kAAAANPlm4AABFWLgAFC8buQAUAAM%2BWbkABwAB9LgAABC4AA3QMDETMxEUHgIzMj4CNREzERQOAiMiLgI1T1QVJTIeHjImFVEhOlEwMFI7IQKQ%2FmYzRysUFCtHMwGa%2FmhHYj8cHD9iRwAAAAEAKwAAAi0CkAAPADMAuAAARVi4AAAvG7kAAAANPlm4AABFWLgADy8buQAPAAM%2BWbkABQAB9LgAABC4AAzQMDETMxMeARczPgM3EzMDIytYahEcEgQJEA8PCGlV0GECkP6eO2Q6HTU0Nh0BYv1wAAABAAoAAAJOApEAIQBNALgAAEVYuAABLxu5AAEADT5ZuAAARVi4ACAvG7kAIAADPlm7ABwAAQAKAAQruAAgELkABgAB9LgAD9C4AAEQuAAU0LgAIBC4ABfQMDETMxMeARczPgE%2FATMXHgEXMz4BNxMzAyMDLgEnIw4BBwMjClM1AgkDAwsVCkU7RQkVCwQDCAMyT2FcSwcMBQMGDAhIWgKR%2FmQqTykpUCny8ihRKSlQKQGc%2FW8BEx08HR08Hf7tAAABADYAAAIiApAAGQBdALgAAEVYuAACLxu5AAIADT5ZuAAARVi4ABgvG7kAGAADPlm6AAAAGAACERI5ugAGABgAAhESObgAAhC4AAvQugANABgAAhESObgAGBC4AA%2FQugAUABgAAhESOTAxEwMzFx4BFzM%2BAT8BMwMTIycuAScjDgEPASP6t1xcDRgQBA4VDFpYt8RcYw4bEQQOGg1iWAFTAT2oFysdHSsXqP6%2F%2FrGxGDMeHjMYsQAAAQAmAAACMgKQAA8AQAC4AABFWLgAAS8buQABAA0%2BWbgAAEVYuAALLxu5AAsADT5ZuAAARVi4AA4vG7kADgADPlm6AAcADgABERI5MDElAzMXHgEXMz4BPwEzAxUjAQLcWGMTJBQEFCYTX1bcVOoBpsMmSygoTCbC%2FlrqAAEAQQAAAhsCkQAJAD0AuAAARVi4AAMvG7kAAwANPlm4AABFWLgACC8buQAIAAM%2BWbkABgAB9LgAANC4AAMQuQABAAH0uAAF0DAxNwEhNSEVASEVIUEBb%2F6xAbX%2BkAF1%2FiYyAhlGMv3oRwAAAAEA4v9oAfYCxAAHABcAuwAFAAEABgAEK7sAAQABAAIABCswMRMhFSMRMxUh4gEU09P%2B7ALEMP0EMAAAAAEAY%2F9gAfUCxgADABgAuAAARVi4AAAvG7kAAAAPPlm4AALcMDETMwEjY0oBSEoCxvyaAAABAGP%2FaAF3AsQABwAXALsAAAABAAUABCu7AAQAAQABAAQrMDEFESM1IREhNQE10gEU%2FuxoAvww%2FKQwAAABAG8BHAHpAp4ACQAmALgAAEVYuAAALxu5AAAADT5ZuAAC3LoABQAAAAIREjm4AAnQMDEBMxMjLwEjDwEjAQhImUhCMQQxQkgCnv5%2BsIWFsAAAAAABADz%2FdAIc%2F7sAAwANALsAAAABAAEABCswMQUVITUCHP4gRUdHAAD%2F%2FwC5Aj0BbQLREgYAygAAAAIAUf%2F0AgMB8gAhAC8AgAC4AABFWLgAEy8buQATAAc%2BWbgAAEVYuAAdLxu5AB0AAz5ZuAAARVi4ABcvG7kAFwADPlm6AAUAEwAXERI5uAAFL7gAExC5AAoAAfS4AB0QuQAnAAH0ugANAAoAJxESOboAGQAXABMREjm4ABkQuQAqAAH0uAAFELkAKwAB9DAxNzQ%2BAjcuAyMiBgcnPgMzMhYVESMnIw4BIyIuAjcUHgIzMjY3NQ4DUSdVhl4BDh4xIzBYIiASMTc%2BIGRhQwcDKWM0IjwtGlASHScVKlEqTmk%2FGn4pPSwcCBksIRQlFTgMGRQNbVv%2B1kIgLhMjMycVHRMJJSOABhYfJwAAAAACAF3%2F9AIcAsgAFgAnAIMAuAAARVi4AAYvG7kABgAHPlm4AABFWLgAAC8buQAAAA8%2BWbgAAEVYuAAQLxu5ABAAAz5ZuAAARVi4ABYvG7kAFgADPlm6AAMABgAQERI5ugAUABAABhESObgAFBC5ABcAAfS4ABAQuQAaAAH0uAAGELkAJAAB9LgAAxC5ACcAAfQwMRMzFQc%2BATMyHgIVFA4CIyImJyMHIzceATMyPgI1NC4CIyIGB11SAiNXKzFMMxokPVArI1EjAwdCUiNHGiA2KBYQITQkIEkmAsjCXiIoI0FbOD5iRCMjHzZyHxobMUgtKEIvGiMmAAEAUP%2F0AhsB8gAhADkAuAAARVi4AAUvG7kABQAHPlm4AABFWLgAHS8buQAdAAM%2BWbgABRC5AAwAAfS4AB0QuQAWAAH0MDE3ND4CMzIWFwcuASMiDgIVFB4CMzI2NxcOASMiLgJQK0pjNzxXHikeQSYqRjEcGzFFKi1LHyQoYzY5YUgo8j1fQiIqHTUaHhsyRSoqRDEbIxo1JCgiQV8AAAACADz%2F9AH7AsgAFgAkAIMAuAAARVi4AAUvG7kABQAHPlm4AABFWLgACi8buQAKAA8%2BWbgAAEVYuAASLxu5ABIAAz5ZuAAARVi4AAwvG7kADAADPlm6AAgABQASERI5ugAOABIABRESObgAEhC5ABoAAfS4AA4QuQAcAAH0uAAIELkAHQAB9LgABRC5ACAAAfQwMTc0PgIzMhYXJzUzESMnIw4BIyIuAjcUFjMyNzUuASMiDgI8JT1QKy1EIgNSRAcDHlMtME04HlVLREhBIT8gIDcpGPI7X0IkIh1au%2F04QB8tIkFePlhiSfIfGhsxRAACAEX%2F9AIZAfIAHgAnAEMAuAAARVi4AAUvG7kABQAHPlm4AABFWLgAGi8buQAaAAM%2BWbsAJwABAA0ABCu4ABoQuQATAAH0uAAFELkAIgAB9DAxNzQ%2BAjMyHgIVFAYHIR4DMzI2NxcOASMiLgIlNCYjIg4CB0UqRVkvNFI5HgEC%2FoQBHTFDKCtHIh0kXDs2X0cpAYhMRB43LB4F8jxfQiMhPFQzDRkJJz4sGBgVNhciI0FeZElOFCc4JAAAAAEAZwAAAkIC1AAWAFYAuAAARVi4ABQvG7kAFAAPPlm4AABFWLgAEC8buQAQAAc%2BWbgAAEVYuAAMLxu5AAwAAz5ZuAAUELkAAwAB9LgAEBC4AAfQuAAQELkADQAB9LgACtAwMQEuASMiBh0BMxUjESMRIzU3NTQ2MzIXAi8eMyBCOczMUYuLX2VIRAJ6DglDPCxD%2Fl0Boz4FKVlsHAAAAAADAEj%2FIAI2AfIAEQBFAFUAsgC4AABFWLgAJS8buQAlAAc%2BWbgAAEVYuAAoLxu5ACgABz5ZuAAARVi4ACcvG7kAJwAHPlm4AABFWLgAQy8buQBDAAU%2BWbgAAEVYuAAMLxu5AAwAAz5ZuABDELkAAwAB9LgADBC4AA%2FQuAAV0LgADBC5ADoAAfS4ADLcuQBGAAH0ugA1AEYAMhESObgANRC4ABzQuAAoELkAKQAB9LgAJxC5ACoAAfS4ACUQuQBOAAH0MDEXFBYzMj4CNTQmKwEiJicOAQc0Njc1LgE1NDY3NS4BNTQ%2BAjMyFzMVIx4BFRQOAiMiJicGFRQWOwEyFhUUDgIjIiYTMjY1NC4CIyIOAhUUFo9RTipEMBk3OF8VJRAjG0cpJxQeHhwZIx80RScoIMmCERwdM0UnEysUJjUwbV5bJkZkPmt12y9BEh4pFxcpHhJCUSYwERwkEyMYAwUTKR0dOBcECyYfFzETBBM%2FLChALRkMPxI0ICc%2BKxcJCRggHRs0PiI%2BLhxGAWs%2BNRkqHhERHioZNT4AAAAAAQBdAAACCwLIABYAZQC4AABFWLgAAC8buQAAAA8%2BWbgAAEVYuAAGLxu5AAYABz5ZuAAARVi4ABYvG7kAFgADPlm4AABFWLgACy8buQALAAM%2BWboAAwAGAAsREjm4AAYQuQAPAAH0uAADELkAFAAB9DAxEzMVBz4BMzIWFREjETQmIyIOAgcRI11SBCdYOVdRUjQ8FiUkJhVSAsjCcyk2Y2H%2B0gEjRUMLFiEW%2Fq0AAAACAFoAAAGeAskABQARADsAuAAARVi4AAAvG7kAAAAHPlm4AABFWLgAAi8buQACAAM%2BWbgAABC5AAQAAfS4AAAQuAAG3LgADNwwMRMhESMRIyUiJjU0NjMyFhUUBloBNFLiAQIdJSUdHCYmAeb%2BGgGjpyIdHSMjHR0iAAAAAgA3%2FycBngLJABUAIQBBALgAAEVYuAAALxu5AAAABz5ZuAAARVi4AAcvG7kABwAFPlm5AA4AAfS4AAAQuQAUAAH0uAAAELgAFty4ABzcMDETIREUDgIjIiYnNx4BMzI%2BAjURIyUiJjU0NjMyFhUUBloBNBQvTjsmSB0bGjkcJDAcC%2BIBAh0lJR0cJiYB5v4OLUs3HhMOPQ0OEiIxHwG1pyIdHSMjHR0iAAAAAAEAagAAAj4CyAAMAG0AuAAARVi4AAQvG7kABAAHPlm4AABFWLgAAC8buQAAAA8%2BWbgAAEVYuAAMLxu5AAwAAz5ZuAAARVi4AAgvG7kACAADPlm6AAIAAAAMERI5ugAJAAAACBESObgACRC4AAbQuAACELkACgAB9DAxEzMRMwEzBxMjJwcVI2pSBAEGXsLcXLNzUgLI%2Fh4BAMH%2B2%2FNvhAABAFH%2F9AIZAsgAEAA1ALgAAEVYuAAALxu5AAAADz5ZuAAARVi4AAsvG7kACwADPlm5AAUAAfS4AAAQuQAQAAH0MDETMxEUFjMyNxcOASMiJjURI1H4MywoNBUhOihOUaYCyP3VNi8XPgwRWFcB4gAAAQA8AAACLAHyACAAowC4AABFWLgABi8buQAGAAc%2BWbgAAEVYuAALLxu5AAsABz5ZuAAARVi4AAAvG7kAAAAHPlm4AABFWLgAIC8buQAgAAM%2BWbgAAEVYuAAYLxu5ABgAAz5ZuAAARVi4ABAvG7kAEAADPlm6AAIAIAAAERI5uAACELgACNC4AAsQuQATAAH0uAAIELkAFgAB9LgABhC5ABsAAfS4AAIQuQAeAAH0MDETMxczPgEzMhc%2BATMyFhURIxE0IyIGBxEjETQjIgYHESM8QAcDEjEqShIWNCkzN081GiYTQjcaJBNPAeZAIipUJi5NSf6kAVVWJSb%2BoAFVViUm%2FqAAAAAAAQBdAAACCwHyABYAZQC4AABFWLgABi8buQAGAAc%2BWbgAAEVYuAAALxu5AAAABz5ZuAAARVi4ABYvG7kAFgADPlm4AABFWLgACy8buQALAAM%2BWboAAgAGABYREjm4AAYQuQAPAAH0uAACELkAFAAB9DAxEzMXMz4BMzIWFREjETQmIyIOAgcRI11EBwQmWDlXUVI0PBYlJCYVUgHmUyk2Y2H%2B0gEjRUMLFiEW%2Fq0AAAACADz%2F9AIcAfIAEwAnADUAuAAARVi4AAUvG7kABQAHPlm4AABFWLgADy8buQAPAAM%2BWbkAGQAB9LgABRC5ACMAAfQwMTc0PgIzMh4CFRQOAiMiLgI3FB4CMzI%2BAjU0LgIjIg4CPCdCVzAwV0InJ0JXMDBXQidVFik5IyM5KRYWKTkjIzkpFvI9X0IiIkJfPTxfQSIiQV88KkQxGxsxRCoqRTIbGzJFAAACAF3%2FMwIcAfIAFgAlAIMAuAAARVi4AAkvG7kACQAHPlm4AABFWLgAAy8buQADAAc%2BWbgAAEVYuAATLxu5ABMAAz5ZuAAARVi4AAIvG7kAAgAFPlm6AAUACQATERI5ugAWABMACRESObgAFhC5ABcAAfS4ABMQuQAaAAH0uAAJELkAIgAB9LgABRC5ACUAAfQwMRcVIxEzFzM%2BATMyHgIVFA4CIyImJzceATMyNjU0LgIjIgYHr1JEBwMiWS0xSzMaJD1QLCJPIQIjRhlCVBAhNCQgSSYppAKzPiAqI0FbOT5hRCMhHj8fGmZbKEIvGiMmAAAAAgA8%2FzMB%2BwHyABYAJACDALgAAEVYuAAFLxu5AAUABz5ZuAAARVi4AAsvG7kACwAHPlm4AABFWLgAEi8buQASAAM%2BWbgAAEVYuAANLxu5AA0ABT5ZugAIAAUAEhESOboADwASAAUREjm4ABIQuQAaAAH0uAAPELkAHAAB9LgACBC5AB0AAfS4AAUQuQAgAAH0MDE3ND4CMzIWFzM3MxEjNTcOASMiLgI3FBYzMjc1LgEjIg4CPCU9UCstRiMDB0JSBCBRLTBNOB5VS0RIQSE%2FICA3KRjyO19CJCIgNv1Ns1gfKyJBXj5YYknyHxobMUQAAQCSAAACGQHyABIAVAC4AABFWLgAAC8buQAAAAc%2BWbgAAEVYuAAGLxu5AAYABz5ZuAAARVi4ABEvG7kAEQADPlm6AAIAEQAAERI5uAAGELkADQAB9LgAAhC5ABAAAfQwMRMzFzM%2BATMyFhcHLgEjIgYHESOSRAcDJm9EGy4XExojHTdlLFIB5nM7RAkLRwkIP0z%2B4wAAAAABAEj%2F9AIOAfIALQBJALgAAEVYuAATLxu5ABMABz5ZuAAARVi4ACovG7kAKgADPlm5AAMAAfS6AAYAKgATERI5uAATELkAGgAB9LoAHwATACoREjkwMTceATMyNjU0JicuAzU0PgIzMhYXBy4BIyIOAhUUFhceARUUDgIjIiYncCleQkJARVkmQzIeGjNNMjdoJCggTi0iLhwMUkJjXxw3UTRIeS12HiQsIBwsFgkaIyoaHTMlFSUZNRccCxMaDh4nERlAOB40KBctHwABAEX%2F9AIiAm4AGwBNALgABS%2B4AABFWLgAAy8buQADAAc%2BWbgAAEVYuAAWLxu5ABYAAz5ZuAADELkAAQAB9LgAAxC4AAfQuAABELgACNC4ABYQuQAPAAH0MDETIzU%2FATMVMxUjFRQeAjMyNjcXDgEjIi4CNc6JjAtE7%2B8MHDAjIzgaEiFQKDVIKxMBoz4FiIhD5yExIhEMCjwMER01Si0AAQBN%2F%2FQB%2BQHmABQAZQC4AABFWLgACi8buQAKAAc%2BWbgAAEVYuAATLxu5ABMABz5ZuAAARVi4AAYvG7kABgADPlm4AABFWLgAAC8buQAAAAM%2BWboAAgAGABMREjm4AAYQuQAPAAH0uAACELkAEgAB9DAxISMnIw4BIyImNREzERQWMzI2NxEzAflDBwQlVzlYUVMzPSpEKVJVKzZjYQEu%2Ft1FQysvAVEAAQAzAAACJQHmAA0APAC4AABFWLgAAC8buQAAAAc%2BWbgAAEVYuAAKLxu5AAoABz5ZuAAARVi4AA0vG7kADQADPlm5AAUAAfQwMRMzEx4BFzM%2BATcTMwMjM1NwDxsNBA0ZD3BPyVwB5v7sJUcjI0clART%2BGgABAAgAAAJQAeYAIQB0ALgAAEVYuAAALxu5AAAABz5ZuAAARVi4AAovG7kACgAHPlm4AABFWLgAFC8buQAUAAc%2BWbgAAEVYuAAhLxu5ACEAAz5ZuAAARVi4ABcvG7kAFwADPlm6AAYAAAAhERI5uAAGELgAD9C6ABwAAAAXERI5MDETMxMeARczPgE%2FATMXHgEXMz4BNxMzAyMnLgEnIw4BDwEjCFQ7BwwFBAcOCDtGPAgOCAQHCwY7TmpjOgcMCAQGDAk4YgHm%2FucjQiIiQyL8%2FCNCIiJCIwEZ%2Fhr2I0UlIEQq9QABAEAAAAIXAeYAGQBlALgAAEVYuAABLxu5AAEABz5ZuAAARVi4AAsvG7kACwAHPlm4AABFWLgAGS8buQAZAAM%2BWbgAAEVYuAAPLxu5AA8AAz5ZugATAAEAGRESObgAExC4AADQuAATELgADdC4AAfQMDE3JzMXHgEXMz4BPwEzBxcjJy4BJyMOAQ8BI%2FmrW00NHQ8EDhwNSVetulpVDyEQBA8eD1BY%2FOprFCoUFCwUafH1cBUuFRYrF3AAAAEAMf8vAicB5gAcAFsAuAAARVi4AAgvG7kACAAHPlm4AABFWLgAEi8buQASAAc%2BWbgAAEVYuAAZLxu5ABkABT5ZuAAARVi4AAcvG7kABwADPlm4ABkQuQADAAH0ugAOAAgABxESOTAxFx4BMzI2PwEDMxMeARczPgE3EzMDDgMjIic3VAoXCzNAEg%2FjU3cOHw8EDRsMak7WDiQyQSkkHBGGAwQ7LSQB5%2F7zIEojI0khAQ398iQ%2BLRoKQQAAAQBHAAACFAHmAAkAPQC4AABFWLgAAy8buQADAAc%2BWbgAAEVYuAAILxu5AAgAAz5ZuQAGAAH0uAAA0LgAAxC5AAEAAfS4AAXQMDE3ASE1IRUBIRUhRwFN%2FtgBnv6yAVj%2BMywBd0Ms%2FolDAAAAAQB4%2F2gB9gLEADkAKwC7ADMAAQA0AAQruwAZAAEAGgAEK7sACwABAAoABCu6ACcACgALERI5MDEFND4CNTQuAiM1Mj4CNTQmNTQ%2BAjsBFSMiDgIVFBYVFAYHFR4BFRQGFRQeAjsBFSMiLgIBAAMDAwwgOSwsOSAMCRYuRi89NCYxGwoGJzQ0JwYKGzEmND0vRi4WExsxLi4ZDxsWDjQOFhsPMF00JzMeDTAKFSMYK1svMTMJBAkzMTNULhgjFQowDR4zAAEBB%2F8GAVEC7gADAAsAugABAAIAAyswMQEzESMBB0pKAu78GAAAAAABAGP%2FaAHgAsQAOQArALsAAAABADcABCu7ABoAAQAXAAQruwAnAAEAKAAEK7oADAAoACcREjkwMRcyPgI1NCY1NDY3NS4BNTQ2NTQuAisBNTMyHgIVFAYVFB4CMxUiDgIVFB4CFRQOAisBNZYmMRwKBiY0NCYGChwxJjM9L0UuFgkMIDksLDkgDAMDAxYuRS89aAoVIxguVDMxMwkECTMxL1srGCMVCjANHjMnNF0wDxsWDjQOFhsPGS4uMRsnMx4NMAAAAQBMAP8CDAGVABkAJwC7AAMAAQAWAAQruwARAAEACAAEK7gAAxC4AA3QuAARELgAGdAwMRM%2BATMyHgIzMj4CNxcOASMiLgIjIgYHTBpIJh4vKScVDBUVEgk1GkgmHi8pJxUXKREBFkY3GiAaBxMiGhhGNhogGiI0AAAAAAIA4%2F9IAXUB8gAFABEAHAC4AABFWLgADy8buQAPAAc%2BWbgACdy4AATcMDEFFyM3EzM3FAYjIiY1NDYzMhYBUgJQAgo4LSseHisrHh4rWl5eAVinJCkpJCMqKgAAAgBx%2F98B%2BgKNAAYAJQBcALgAAEVYuAAYLxu5ABgACz5ZuwAiAAEACgAEK7sAGgABACEABCu4ACEQuAAA0LgAAC%2B4ACIQuAAG0LgABi%2B4AAoQuAAN0LgADS%2B4AAzcuAAaELgAF9C4ABcvMDEBDgEVFBYfAQ4BBxUjNS4DNTQ%2BAjc1MxUeARcHLgEnET4BNwE6OEA%2FOcAeSCczLUo1HR82SiozLEAXKBQtGiA0FQHdDVhCQ1gNCRoiA2doBSQ9VDU0UzwkBmpnAiIWNBIWAv6oAhsSAAABAE0AAAITAooAKQBXALgAAEVYuAATLxu5ABMACz5ZuAAARVi4AAEvG7kAAQADPlm7AAgAAQALAAQruAABELkAAAAB9LgAA9C4ABMQuQAaAAH0uAALELgAINC4AAgQuAAj0DAxJRUhNT4BNTQnIzU3LgE1ND4CMzIWFwcuASMiBhUUFhczFSMWFRQGBxUCE%2F47Pz0IdWMLFR43TTA%2BVR0wFzsqQkUTC72tBiUmR0cyHF85Gh00BCA9ICpEMBorIC8XHkE0IDsgOBsdNUYfBAAAAgA6AFMCHgJBACAANAAXALsAJgABAB0ABCu7AAwAAQAwAAQrMDE%2FAS4BNTQ2Nyc3FzYzMhc3FwceARUUBgcXBycOASMiJwc3FB4CMzI%2BAjU0LgIjIg4COlQRExIRUyxXMD8%2BMVcsVBETExFULFgXOR4%2BMVdQEyArGBgrIBMTICsYGCsgE4BVFzojIzsXVi1aJSVaLVYXOyMjOhdVLVkTEyZZ9h4xJBMTJDEeHjEkExMkMQAAAQA1AAACIwJ%2BAB0AbAC4AABFWLgAAC8buQAAAAs%2BWbgAAEVYuAAJLxu5AAkACz5ZuAAARVi4ABMvG7kAEwADPlm6AAUAEwAJERI5uAAFELgAC9C5AA4AAfS4ABnQuAAY3LgAD9C5ABIAAfS4ABXQuAALELgAHNAwMRMXHgEXMz4BPwEzAzMVIxUzFSMVIzUjNTM1IzUzA4pcESETBBIiElxSuqK3t7dStbW1obkCfqshQyMjQyGr%2FsAvQTCenjBBLwFAAAIBB%2F8GAVEC7gADAAcAEwC6AAEABQADK7oAAwAHAAMrMDEBMxEjFxEjEQEHSkpKSgLu%2FjVN%2FjAB0AAAAAIAW%2F%2FAAf0CrAAPAEcATwC7AC8AAQAoAAQruwBEAAEAEwAEK7oAMgAoABMREjm6ABYARAAvERI5ugAgADIAFhESObgAIBC4AADQugA8ABYAMhESObgAPBC4AAjQMDElPgE1NC4CJw4BFRQeAhMuASMiBhUUHgQVFAYHHgEVFA4CIyImJzceATMyNjU0LgQ1NDY3LgE1ND4CMzIWFwFzICMpPkkgHyUpP0lUGjgjKiYqP0k%2FKjEpDg8YKjskN1wgMho9KiktKj5KPiozKA4REyY4JjJRHsAOJiIiLCEdEhApHyErIRwBaxQaJRobJB4eKz0uMDwWECcaHjIkFSYhLRgcKB0cJh4dKj0uLUAVECcaGi8kFSIXAP%2F%2FAJYCTAHCAroSBgDPAAAAAwAe%2F%2FUCOgKNABMAJwBFAE0AuAAARVi4AAUvG7kABQALPlm4AABFWLgADy8buQAPAAM%2BWbkAGQAB9LgABRC5ACMAAfS4AC3QuQA0AAH0uAAZELgAQdC5ADoAAfQwMRM0PgIzMh4CFRQOAiMiLgI3FB4CMzI%2BAjU0LgIjIg4CFzQ%2BAjMyFhcHLgEjIgYVFBYzMjY3Fw4BIyIuAh4pSWM5OWNJKSlJYzk5Y0kpLiA7UzIyUzsgIDtTMjJTOyBGGy47ISMxFCIQHxQuODUtGiYRHhc0JiI7LBkBQ0x7VS4uVXtMTXtXLy9Xe01Ca00qKk1rQkJqTCkpTGpCK0YyGhsUJw4RSztCTRQOKhQbGzNJAP%2F%2FAKcA%2FAG6Ak4SBgDSAAD%2F%2FwBTADQB%2BAHEEiYA3Y4AEAYA3XMAAAAAAQBVAGgCAwFpAAUADQC7AAEAAQAEAAQrMDETIREjNSFVAa5C%2FpQBaf7%2Fw%2F%2F%2FAFUBKwIDAWkSBgDiAAAABABwAT8B6ALJABMAJwA1AD4APQC7ABQAAQAAAAQruwAKAAEAHgAEK7sANgABADIABCu4AB4QuAAp0LgAMhC4AC%2FQuAAUELgANNC4ADHQMDEBIi4CNTQ%2BAjMyHgIVFA4CJzI%2BAjU0LgIjIg4CFRQeAgMzMhYVFAYHFyMnIxUjNzI2NTQmKwEVASwnRTMdHTNFJydEMx4eM0QnHzcnFxcnNx8gNigXFyg2KUwgLxURLi4jKSlDFBgTFxwBPx00SCwsSDQdHTRILCxINB0lFyo7JCM7KxgYKzsjJDsqFwEIHSQSHwZTRkZmEREPEkMAAAD%2F%2FwCxAlkBpwKSEgYAzgAAAAIArwGtAaoCrQATAB8AFwC7AAoAAQAaAAQruwAUAAEAAAAEKzAxASIuAjU0PgIzMh4CFRQOAicyNjU0JiMiBhUUFgEsGS0jFBQjLRkZLiIVFSIuGSIqKiIhKioBrRIhLx0eLyISEiIvHh0vIRIuLiMlLi4lIy4AAAIAVQAAAgMCLAALAA8ARAC4AABFWLgADi8buQAOAAM%2BWbsAAwABAAAABCu4AAMQuAAE3LgAAxC4AAbQuAAAELgACNC4AA4QuQAMAAH0uAAL3DAxASM1MzUzFTMVIxUjByEVIQELtrZCtrZCtgGu%2FlIBMD6%2Bvj6xQT4AAP%2F%2FAK4BuAGnAvUSBwDmAAEBuAAA%2F%2F8ArAGsAaQC9RIHAOcAAAG4AAD%2F%2FwDrAj0BnwLREgYAywAAAAEATf9FAi4B5gAoAHMAuAAoL7gAAEVYuAAALxu5AAAABz5ZuAAARVi4AAsvG7kACwAHPlm4AABFWLgAHy8buQAfAAM%2BWbgAAEVYuAAYLxu5ABgAAz5ZuAAfELkABQAB9LoAHAALAB8REjm4ABwQuQAKAAH0uAAYELkAEgAB9DAxEzMRFBYzMj4CNxEzDgEVFBYzOgE3FwYjIiYnIw4BIyImJxwBHgEXI01TNDkTJiYnFFMCAxALBAcHDBMdJiQFAyBRLyM7FAICAlMB5v7dQ0UJGCsjATxjz1gUEAI%2BCDU6ODUVICY7NDMeAAAAAgBI%2F7AB5QKQAAMAEAAlALgAAEVYuAAALxu5AAAADT5ZuAAARVi4AA8vG7kADwANPlkwMQEzESMDIyIuAjU0PgI7AQGUUVE2IDVaQiUkP1YyKwKQ%2FSABMhk1Ujk7UTMWAAAA%2F%2F8A2wEHAX0BsBIHABMAAAETAAD%2F%2FwDd%2FysBdgADEgYA0QYA%2F%2F8A0AG4AWEC6RIHAOUAAAG4AAD%2F%2FwCOAPwBygJOEgYA0wAA%2F%2F8AYQA0AgYBxBImAN6OABAGAN5zAAAA%2F%2F8AHAAAAj8CfhInAOX%2FewFNECYA3wAAEAcA6ACGAAD%2F%2FwAcAAACPAJ%2BEicA5f97AU0QJgDfAAAQBwDmAIcAAP%2F%2FACcAAAJVAooSJwDn%2F3sBTRAmAN8ZABAHAOgAhgAAAAIAe%2F88AewB8gAbACcAKgC4AABFWLgAJS8buQAlAAc%2BWbsACgABABEABCu4ACUQuAAf3LgAG9wwMSUWDgQVFBYzMjY3Fw4BIyImNTQ%2BBCc3FAYjIiY1NDYzMhYBZwYSIywnGjg3JkEbMCFdOlRlGyctJBQEZyweHisrHh4s%2FiQ4LignKxkqNh4bLSMuVEghMysoLDIhpyQpKSQjKioAAP%2F%2FACAAAAI4AzISJgAmAAAQBgDpAAAAAP%2F%2FACAAAAI4AzISJgAmAAAQBgDqAAAAAP%2F%2FACAAAAI4AzISJgAmAAAQBgDrAAAAAP%2F%2FACAAAAI4AzMSJgAmAAAQBgDsAAAAAP%2F%2FACAAAAI4Ay0SJgAmAAAQBgDtAAAAAP%2F%2FACAAAAI4A2sSJgAmAAAQBgDuAAAAAAAC%2F%2F8AAAJPApAABgAWAGYAuAAARVi4AA4vG7kADgANPlm4AABFWLgACC8buQAIAAM%2BWbgAAEVYuAAMLxu5AAwAAz5ZuwAAAAEACgAEK7sAEwABABQABCu4AA4QuQABAAH0uAAIELkABwAB9LgAARC4ABHQMDEBESMOAQ8BBRUhNSMHIwEhFSMVMxUjFQE9AxQrFC4Blv7unklXAQQBQ72TkwECAUw2aTZ3u0e%2FvwKQRs1H7%2F%2F%2FAEL%2FKwIqApwSJgAoAAAQBgDvLwAAAP%2F%2FAHMAAAISAzISJgAqAAAQBgDpHwAAAP%2F%2FAHMAAAISAzISJgAqAAAQBgDqHwAAAP%2F%2FAHMAAAISAzISJgAqAAAQBgDrHwAAAP%2F%2FAHMAAAISAy0SJgAqAAAQBgDtHwAAAP%2F%2FAF8AAAH5AzISJgAuAAAQBgDpAAAAAP%2F%2FAF8AAAH5AzISJgAuAAAQBgDqAAAAAP%2F%2FAF8AAAH5AzISJgAuAAAQBgDrAAAAAP%2F%2FAF8AAAH5Ay0SJgAuAAAQBgDtAAAAAAACABAAAAIrApAADAAZAFMAuAAARVi4AAQvG7kABAANPlm4AABFWLgACy8buQALAAM%2BWbsAAwABAAAABCu4AAsQuQANAAH0uAAEELkAEwAB9LgAAxC4ABXQuAAAELgAF9AwMRMjNTcRMzIWFRQGKwE3MjY1NCYrARUzFSMVW0tLoZSbm5Gkm3Bvb3BIj48BQSoFASConZ2uRIp9fYTcL%2F3%2F%2FwBTAAACBQMzEiYAMwAAEAYA7AYAAAD%2F%2FwAw%2F%2FQCKAMyEiYANAAAEAYA6QAAAAD%2F%2FwAw%2F%2FQCKAMyEiYANAAAEAYA6gAAAAD%2F%2FwAw%2F%2FQCKAMyEiYANAAAEAYA6wAAAAD%2F%2FwAw%2F%2FQCKAMzEiYANAAAEAYA7AAAAAD%2F%2FwAw%2F%2FQCKAMtEiYANAAAEAYA7QAAAAAAAQBmAH4B8gIVAAsAKQC6AAUACQADK7oACgAJAAUREjm4AAoQuAAB0LgAChC4AAfQuAAE0DAxPwEnNxc3FwcXBycHZpqaLJqaLJqaLJqaq5%2BeLZ%2BfLZ6fLaCgAAADAC3%2F4gIsAq4ACgAVAC8AfQC4AABFWLgAKy8buQArAA0%2BWbgAAEVYuAAeLxu5AB4AAz5ZugAVAB4AKxESObgAFRC4AADQuAAeELkAAwAB9LoACgAeACsREjm4AAoQuAAL0LgAKxC5AA4AAfS4AAoQuAAW0LgAABC4ACDQuAAVELgAI9C4AAsQuAAt0DAxNx4BMzI%2BAjU0LwEuASMiDgIVFBcBHgEVFA4CIyInByc3LgE1ND4CMzIXNxfAFTcgJT4rGBkfFTghJj0rGBsBTB0eJUNdN1pANTA%2FHR8lQ1w4XD82L3QaHSZHYz5ZQDgaHSVEYj1fQAGFK3NIT39ZMD1PIF0tdklPfVcuPU8gAAAA%2F%2F8AT%2F%2F0AgkDMhImADoAABAGAOkAAAAA%2F%2F8AT%2F%2F0AgkDMhImADoAABAGAOoAAAAA%2F%2F8AT%2F%2F0AgkDMhImADoAABAGAOsAAAAA%2F%2F8AT%2F%2F0AgkDLRImADoAABAGAO0AAAAA%2F%2F8AJgAAAjIDMhImAD4AABAGAOoAAAAAAAIAZQAAAiECkAAQABkAOQC4AABFWLgAAC8buQAAAA0%2BWbgAAEVYuAAPLxu5AA8AAz5ZuwARAAEADQAEK7sAAwABABcABCswMRMzFTMyHgIVFA4CKwEVIzcyNjU0JisBEWVUdjZaPyMjQFk2dlS%2FV1NVVWsCkG4ULkk2NE0yGJbaQEdHNv78AAABAFj%2F9AI0AtQAOQBaALgAAEVYuAAFLxu5AAUADz5ZuAAARVi4ADkvG7kAOQADPlm4AABFWLgAGy8buQAbAAM%2BWbkAIgAB9LoADwAFACIREjm4AAUQuQA0AAH0ugAlABsANBESOTAxEzQ%2BAjMyHgIVFA4CFRQeBBUUDgIjIiYnNx4BMzI2NTQuBDU0PgI1NCYjIgYVESNYHDRKLyg9KhUcIhweLDUsHhcrPCUqRiAhHDQdKi0eLTQtHhwiHCwqNz9SAgcuTDYdGCk1HiY1LCkaGCAbGiQ1JyA2KBcYFToUEy8fHSYdGSEtIyIxLS8gJTFLS%2F4FAAAA%2F%2F8AUf%2F0AgMC0RImAEYAABAGAMoOAAAA%2F%2F8AUf%2F0AgMC0RImAEYAABAGAMsOAAAA%2F%2F8AUf%2F0AgMC0RImAEYAABAGAMwOAAAA%2F%2F8AUf%2F0AgMCsBImAEYAABAGAM0OAAAA%2F%2F8AUf%2F0AgMCuhImAEYAABAGAM8OAAAA%2F%2F8AUf%2F0AgMC1xImAEYAABAGANAOAAAAAAMAEf%2F0AlUB8gAuADcARAClALgAAEVYuAANLxu5AA0ABz5ZuAAARVi4ABMvG7kAEwAHPlm4AABFWLgAJi8buQAmAAM%2BWbgAAEVYuAAsLxu5ACwAAz5ZuwAvAAEAGwAEK7oAAwANACwREjm4AAMvuAANELkABgAB9LoAEAAmAA0REjm4ACYQuQAfAAH0ugApACYADRESObgAExC5ADQAAfS4ACwQuQA7AAH0uAADELkAQgAB9DAxNzQ2Ny4BIyIGByc%2BATMyFhc%2BATMyHgIVFAYHIR4BMzI2NxcOASMiJicOASMiJiU0LgIjIgYPARQWMzI2Ny4BLwEOARF8fAEnLxpBFx8eUC0wOw4YRTAlNyUSAgL%2B%2FgM8OxwvFR0ZQSY1SBgpTyY8RgH%2FCBQhGC85BfEoIho%2BGggHAQFcT4FJVxM2RRkQOBQgOCovMyQ9UC0OGg1MXRINNhEaMCstLkvXHzgrGVJJkScoJCMWNR0ZEDr%2F%2FwBQ%2FysCGwHyEiYASAAAEAYA0SoAAAD%2F%2FwBF%2F%2FQCGQLREiYASgAAEAYAyg8AAAD%2F%2FwBF%2F%2FQCGQLREiYASgAAEAYAyw8AAAD%2F%2FwBF%2F%2FQCGQLREiYASgAAEAYAzA8AAAD%2F%2FwBF%2F%2FQCGQK6EiYASgAAEAYAzw8AAAD%2F%2FwBaAAABnQLREiYAxAAAEAYAyjAAAAD%2F%2FwBaAAABzwLREiYAxAAAEAYAyzAAAAD%2F%2FwBaAAAB4ALREiYAxAAAEAYAzDAAAAD%2F%2FwBaAAAB8gK6EiYAxAAAEAYAzzAAAAAAAgA8%2F%2FQCGALaABQAOQBrALgAAEVYuAA0Lxu5ADQADz5ZuAAARVi4AB0vG7kAHQADPlm7ACcAAQALAAQruAAdELkAAAAB9LoAKgA0AB0REjm4ACoQuQAIAAH0ugAVADQAHRESObgAFRC4AC3QuAAVELgAN9C4ADDQMDElMj4CNTwBJy4BIyIOAhUUHgITHgEVFA4CIyIuAjU0PgIzMhYXLgEnByc3LgEnNx4BFzcXASwoOycTASNSJyg9KRUaLDx7QlAhPlg3L1ZCJyI9UzIvVBwOPS6WF4QaPCImKEoihxc4HTVILAsWCy8mGCw7IiY9KxgCKj2reTxjRycgPVc2M1M7IComRWUoTSlEEyERNBMqGkUpAAAA%2F%2F8AXQAAAgsCsBImAFMAABAGAM0SAAAA%2F%2F8APP%2F0AhwC0RImAFQAABAGAMoAAAAA%2F%2F8APP%2F0AhwC0RImAFQAABAGAMsAAAAA%2F%2F8APP%2F0AhwC0RImAFQAABAGAMwAAAAA%2F%2F8APP%2F0AhwCsBImAFQAABAGAM0AAAAA%2F%2F8APP%2F0AhwCuhImAFQAABAGAM8AAAAAAAMAVQBgAgMCMwALABcAGwAlALsAGQABABoABCu4ABkQuAAA3LgABty4ABoQuAAP3LgAFdwwMQEiJjU0NjMyFhUUBgM0NjMyFhUUBiMiJichFSEBLBcfHxcXHx9NHxcXHx8XFx%2BhAa7%2BUgHIHhgXHh4XGB7%2BzhceHhcYHh7rPgAAAwA8%2F%2BkCHAH9AAoAFgAwAH0AuAAARVi4ACwvG7kALAAHPlm4AABFWLgAHy8buQAfAAM%2BWboAFgAfACwREjm4ABYQuAAA0LgAHxC5AAIAAfS6AAoALAAfERI5uAAKELgAC9C4ACwQuQAOAAH0uAAKELgAF9C4AAAQuAAh0LgAFhC4ACTQuAALELgALtAwMTcWMzI%2BAjU0Ji8BLgEjIg4CFRQWFwEeARUUDgIjIicHJzcuATU0PgIzMhc3F8kpOiM5KRYODR4TMh0jOSkWDg0BNRsgJ0JXMFM%2FMyU1GyAnQlcwUz8zJVwmHDFFKiE6FyYSFBwyRiohOBcBICBZNzxfQSIwOx0%2BIFg2PV9CIjA7Hf%2F%2FAE3%2F9AH5AtESJgBaAAAQBgDK%2FAAAAP%2F%2FAE3%2F9AH5AtESJgBaAAAQBgDL%2FAAAAP%2F%2FAE3%2F9AH5AtESJgBaAAAQBgDM%2FAAAAP%2F%2FAE3%2F9AH5AroSJgBaAAAQBgDP%2FAAAAP%2F%2FADH%2FLwInAtESJgBeAAAQBgDLBAAAAAACAF3%2FMwIcAsgAFgAlAIMAuAAARVi4AAIvG7kAAgAPPlm4AABFWLgACC8buQAIAAc%2BWbgAAEVYuAABLxu5AAEABT5ZuAAARVi4ABIvG7kAEgADPlm6AAUACAASERI5ugAVABIACBESObgAFRC5ABcAAfS4ABIQuQAaAAH0uAAIELkAIgAB9LgABRC5ACUAAfQwMRcjETMVBz4BMzIeAhUUDgIjIiYnFzUeATMyPgI1NCYjIgYHr1JSAiNWKzFMMxslPVArJEwhASNFGiA3KBdBSSBIJs0DlclXIigjQVs5PmFEIyIdXJsfGhsxSC1QYyMmAAD%2F%2FwAx%2Fy8CJwK6EiYAXgAAEAYAzwQAAAAAAQBaAAABjgHmAAUALwC4AABFWLgAAC8buQAAAAc%2BWbgAAEVYuAACLxu5AAIAAz5ZuAAAELkABAAB9DAxEyERIxEjWgE0UuIB5v4aAaMAAAACACEAAAJPApEAEgAbAE8AuAAARVi4AAMvG7kAAwANPlm4AABFWLgADS8buQANAAM%2BWbsACAABAAkABCu4AAMQuQAGAAH0uAANELkACwAB9LgAFtC4AAYQuAAY0DAxEzQ2MyEVIxUzFSMVMxUhIi4CNxQWOwERIyIGIY19ARrClJTM%2Ftk%2BYUQkVlRWFRVWVAFLnqhGz0fuRy1Ve05%2BiQIIgwAAAAMAC%2F%2F0AlQB8gATADsARACNALgAAEVYuAAZLxu5ABkABz5ZuAAARVi4AB8vG7kAHwAHPlm4AABFWLgAMi8buQAyAAM%2BWbgAAEVYuAA3Lxu5ADcAAz5ZuwA8AAEAJwAEK7gANxC5AAUAAfS4ABkQuQAPAAH0ugAcADIAGRESObgAMhC5ACsAAfS6ADUAMgAZERI5uAAfELkAQQAB9DAxNxQeAjMyPgI1NC4CIyIOAgc0PgIzMhYXPgEzMh4CFRQGByMeATMyNjcXDgEjIiYnBiMiLgIlNC4CIyIGB1gNGiYaFiUaDg4aJRYaJhoNTRswQCUvRRQUQTAiNSMSAQLxBDo2GicUHRc7IzBIFitdJkAvGwIFCBIeFi0wBvMqRTEcHDFFKipEMhsbMkQqPV9BIj04Nz4kPFEtDhcQTF0RDjYRGjk3cCJBX2AfOCsZU0gA%2F%2F8AqAI9AbAC0RIGAMwAAP%2F%2FAM8CHgGJAtcSBgDQAAD%2F%2FwCeAkMBugKwEgYAzQAAAAEAuQI9AW0C0QADAAsAugABAAMAAyswMRMzFyO5Wlo%2FAtGUAAEA6wI9AZ8C0QADAAsAugACAAAAAyswMQEjNzMBKj9aWgI9lAAAAAABAKgCPQGwAtEABwAZALsAAQABAAQABCu4AAQQuAAD3LgABtAwMQEzFyMnIwcjAQlGYT9DBEM%2FAtGUY2MAAAAAAQCeAkMBugKwABYAJwC7AAgAAQAOAAQruAAOELgAE9y5AAMAAfS4AArQuAAOELgAFdAwMRM%2BATMyHgIzMjczDgEjIi4CIyIHI54FKygSHhkYDB8JLwUrKBIeGRgMHwkvAkMwPREUETYvPhEVETcAAAEAsQJZAacCkgADAA0AuwABAAEAAgAEKzAxEzMVI7H29gKSOQAAAAACAJYCTAHCAroACwAXAB0AuwAAAAEABgAEK7gAABC4AAzQuAAGELgAEtAwMRMiJjU0NjMyFhUUBjMiJjU0NjMyFhUUBswYHh4YFx8fqRcfHxcYHh4CTCAXFyAgFxcgIBcXICAXFyAAAAIAzwIeAYkC1wALABcAFwC6AAwAAAADK7gADBC4ABLcuAAG3DAxASImNTQ2MzIWFRQGJzI2NTQmIyIGFRQWASwpNDQpKTQ0KRQcHBQUHBwCHjMqKjIyKiozJR4aGR4eGRoeAAABANf%2FKwFwAAMAEQAdALoAAQACAAMruAACELgAEdC4AAvcuQAKAAH0MDElMwceARUUDgIHJz4BNTQmJwEZNRkYIxgoNRwIKDEhHgM1CCAfFiAWDQMpBRcUFBUIAAIApwD8AboCTgAZACMAOQC4ABIvuwAdAAEAFwAEK7sADQABAAYABCu7AAMAAQAhAAQrugATAA0AFxESObgAExC5ACAAAfQwMRM0NjcuASMiBgcnPgEzMhYdASMnIw4BIyImNxQWMzI2NzUOAadmbQEeJx00FhkaSCg%2FPTQFAhg5ICs8PyIZFysXUUMBWTU4Cx4sFQ0rDxtIP8MlExoyLxgXFRNSCSUAAAIAjgD8AcoCTgATAB8AFwC7ABcAAQAPAAQruwAFAAEAHQAEKzAxEzQ%2BAjMyHgIVFA4CIyIuAjcUFjMyNjU0JiMiBo4aKzkgIDksGRksOSAgOSsaQjErKzExKysxAaUoPysXFys%2FKCg%2FKxcXKz8oNUBANTRBQQAAAAEAUADYAggBIAADAA0AuwABAAEAAgAEKzAxEyEVIVABuP5IASBIAAABABQA2AJEASAAAwANALsAAQABAAIABCswMRMhFSEUAjD90AEgSAAAAQDRAV4BfAK7ABEACwC6AAUACwADKzAxAQ4BBzYzMhYVFAYjIiY1NDY3AXwvNQMMDh8nKiAnM0xEAosbTzQGKCAjKj85S3cjAAAAAAEA2QFeAYQCuwARAAsAugAFAAsAAyswMRM%2BATcGIyImNTQ2MzIWFRQGB9kwNQMMDiAnKiAoMkxDAY4aTzUGJyAjK0A5S3Yj%2F%2F8A2f8fAYQAfBIHANcAAP3BAAD%2F%2FwBfAV4B7wK7EiYA1o4AEAYA1nMAAAD%2F%2FwBnAV4B9wK7EiYA144AEAYA13MAAAD%2F%2FwBn%2Fx8B9wB8EicA1%2F%2BO%2FcEQBwDXAHP9wQAAAAEAlwBzAcEBmQATAAsAugAKAAAAAyswMSUiLgI1ND4CMzIeAhUUDgIBLB42KRgYKTYeHjYpGBgpNnMVJzYhITYnFRUnNiEhNicVAAABAMUANAGFAcQABgALALoAAgAGAAMrMDE3NTcXBxcHxZknf38n1FCgI6WmIgAAAAABANMANAGTAcQABgALALoAAgAFAAMrMDElJzcXFQcnAVJ%2FJ5mZJ%2FylI6BQoCIAAAACABwAIAI8AnAAAwAHAAsAugAHAAMAAyswMT8BFwcBByc3HLchpwHvtyGnTbweywIjvB7LAAAA%2F%2F8ArAG4AbkC6RIHAOgAAAG4AAAAAQA6%2F%2FQCNgKKADEAbQC4AABFWLgAFS8buQAVAAs%2BWbgAAEVYuAADLxu5AAMAAz5ZugAoACIAAyu4ACgQuQArAAH0uAAG0LgAKBC4AAnQuAAiELgAD9C4ACIQuQAfAAH0uAAS0LgAFRC5ABwAAfS4AAMQuQAuAAH0MDElDgEjIiYnIzU3JjQ1PAE3IzU3PgEzMhYXBy4BIyIGByEVIQYUFRwBFyEVIx4BMzI2NwI2Jlw%2BYocTQDsBATtAE41qM1geMRo7JkpaDgEm%2FtUBAQED%2FQ5YRStBHlEsMYF2KwQJEgkIEAgsBXaFLSEvGiFiVzEHDggKEwkwVWAkIwAAAQBVASsCAwFpAAMADQC7AAEAAQACAAQrMDETIRUhVQGu%2FlIBaT4A%2F%2F8AHAAgAjwCcBIGAN8AAAACAKH%2F9AG3AT0ACwAXACgAuAAARVi4AAAvG7kAAAADPlm7AAYAAQASAAQruAAAELkADAAB9DAxBSImNTQ2MzIWFRQGJzI2NTQmIyIGFRQWASw9Tk49PU5OPSAuLiAgLi4MWE9OVFROT1gyOTw8NTU8PDkAAAEA0AAAAWEBMQAIAB4AuAAARVi4AAgvG7kACAADPlm7AAUAAQAAAAQrMDElIzU%2BATczESMBIlIhKRUyP%2BYqBRAM%2Fs8AAQCtAAABpgE9ABgALAC4AABFWLgAFy8buQAXAAM%2BWbsADQABAAYABCu4ABcQuQAVAAH0uAAA0DAxNz4BNTQmIyIGByc%2BATMyFhUUDgIHMxUjt05THx0UJg4nFzskNj4TISwZiO8kO04hGyAXEyEaIzUyFCcnKRY1AAAAAAEArP%2F0AaQBPQAkADwAuAAARVi4ACEvG7kAIQADPlm7ABYAAQAPAAQruwAJAAEACAAEK7gAIRC5AAMAAfS6ABsACAAJERI5MDE3HgEzMjY1NCM1MjY1NCYjIgYHJz4BMzIWFRQHHgEVFAYjIiYnzA8xGxsjYConGh0SKA8eEz0jLzs4ICdGMyNDGVESGRYZMyYcFxQXEw8mFBksKDcUCCYfLTAcGgAAAAIArAAAAbkBMQAFABAAOAC4AABFWLgACS8buQAJAAM%2BWbsAEAABAAYABCu7AAIAAQANAAQruAAQELgAANC4AAYQuAAK0DAxJTU3Iw8BFyMVIzUjNTczFTMBTgQDLTbNMjmilEcydDhSQUkrSUkfyb0AAAAAAQCpAsIBXwMyAAMACwC6AAEAAwADKzAxEzMXI6leWEUDMnAAAQD5AsIBrwMyAAMACwC6AAIAAAADKzAxASM3MwE%2BRVheAsJwAAAAAAEApALCAbQDMgAHABkAuwACAAEABQAEK7gABRC4AATcuAAH0DAxEzczFyMnIwekYFBgQ0MEQwLCcHBERAAAAAABAJsCxwG9AzMAFwArALsAEQABAAAABCu4AAAQuAAF3LgAABC4AAjQuAAFELkADAAB9LgAFNAwMQEiLgIjIgYHIz4BMzIeAjMyNjczDgEBaBQgGxoODhYELgUsJBQgGxoODhYELgUsAscQFBAaGi89EBQQGxkuPgACAKUCywGzAy0ACwAXAB0AuwAGAAEAAAAEK7gAABC4AAzQuAAGELgAEtAwMRMiJjU0NjMyFhUUBjMiJjU0NjMyFhUUBtYWGxsWFRwclxUcHBUWGxsCyxwVFhsbFhUcHBUWGxsWFRwAAAIAzwK7AYkDawALABcAFwC6AAwAAAADK7gADBC4ABLcuAAG3DAxASImNTQ2MzIWFRQGJzI2NTQmIyIGFRQWASwpNDQpKDU1KBMcHBMUHBwCuy8pKDAwKCkvJBsZFxwcFxkbAAABANL%2FKwFrAAMAEQAdALoAAQACAAMruAACELgAEdC4AAvcuQAKAAH0MDElMwceARUUDgIHJz4BNTQmJwETNhkYIxgoNRwIKDEhHwM1CCAfFiAWDQMpBRcUFBUIAAAAGgE%2BAAEAAAAAAAAAFgAuAAEAAAAAAAEADwBlAAEAAAAAAAIABwCFAAEAAAAAAAMAJgDbAAEAAAAAAAQADwEiAAEAAAAAAAUAQQG2AAEAAAAAAAYAFQIkAAEAAAAAAAcAYAL8AAEAAAAAAAgAGgOTAAEAAAAAAAkADAPIAAEAAAAAAAsAGQQJAAEAAAAAAA0R2yfbAAEAAAAAAA4AJDoBAAMAAQQJAAAALAAAAAMAAQQJAAEAHgBFAAMAAQQJAAIADgB1AAMAAQQJAAMATACNAAMAAQQJAAQAHgECAAMAAQQJAAUAggEyAAMAAQQJAAYAKgH4AAMAAQQJAAcAwAI6AAMAAQQJAAgANANdAAMAAQQJAAkAGAOuAAMAAQQJAAsAMgPVAAMAAQQJAA0jtgQjAAMAAQQJAA4ASDm3AFQAeQBwAG8AZwByAGEAcABoAGkAYwAgAGEAbAB0AGUAcgBuAGEAdABlAHMAAFR5cG9ncmFwaGljIGFsdGVybmF0ZXMAAFMAbwB1AHIAYwBlACAAQwBvAGQAZQAgAFAAcgBvAABTb3VyY2UgQ29kZSBQcm8AAFIAZQBnAHUAbABhAHIAAFJlZ3VsYXIAADEALgAwADEANwA7AEEARABCAEUAOwBTAG8AdQByAGMAZQBDAG8AZABlAFAAcgBvAC0AUgBlAGcAdQBsAGEAcgA7AEEARABPAEIARQAAMS4wMTc7QURCRTtTb3VyY2VDb2RlUHJvLVJlZ3VsYXI7QURPQkUAAFMAbwB1AHIAYwBlACAAQwBvAGQAZQAgAFAAcgBvAABTb3VyY2UgQ29kZSBQcm8AAFYAZQByAHMAaQBvAG4AIAAxAC4AMAAxADcAOwBQAFMAIABWAGUAcgBzAGkAbwBuACAAMQAuADAAMAAwADsAaABvAHQAYwBvAG4AdgAgADEALgAwAC4ANwAwADsAbQBhAGsAZQBvAHQAZgAuAGwAaQBiADIALgA1AC4ANQA5ADAAMAAAVmVyc2lvbiAxLjAxNztQUyBWZXJzaW9uIDEuMDAwO2hvdGNvbnYgMS4wLjcwO21ha2VvdGYubGliMi41LjU5MDAAAFMAbwB1AHIAYwBlAEMAbwBkAGUAUAByAG8ALQBSAGUAZwB1AGwAYQByAABTb3VyY2VDb2RlUHJvLVJlZ3VsYXIAAFMAbwB1AHIAYwBlACAAaQBzACAAYQAgAHQAcgBhAGQAZQBtAGEAcgBrACAAbwBmACAAQQBkAG8AYgBlACAAUwB5AHMAdABlAG0AcwAgAEkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkACAAaQBuACAAdABoAGUAIABVAG4AaQB0AGUAZAAgAFMAdABhAHQAZQBzACAAYQBuAGQALwBvAHIAIABvAHQAaABlAHIAIABjAG8AdQBuAHQAcgBpAGUAcwAuAABTb3VyY2UgaXMgYSB0cmFkZW1hcmsgb2YgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQgaW4gdGhlIFVuaXRlZCBTdGF0ZXMgYW5kL29yIG90aGVyIGNvdW50cmllcy4AAEEAZABvAGIAZQAgAFMAeQBzAHQAZQBtAHMAIABJAG4AYwBvAHIAcABvAHIAYQB0AGUAZAAAQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQAAFAAYQB1AGwAIABEAC4AIABIAHUAbgB0AABQYXVsIEQuIEh1bnQAAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBhAGQAbwBiAGUALgBjAG8AbQAvAHQAeQBwAGUAAGh0dHA6Ly93d3cuYWRvYmUuY29tL3R5cGUAAEMAbwBwAHkAcgBpAGcAaAB0ACAAMgAwADEAMAAsACAAMgAwADEAMgAgAEEAZABvAGIAZQAgAFMAeQBzAHQAZQBtAHMAIABJAG4AYwBvAHIAcABvAHIAYQB0AGUAZAAgACgAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGEAZABvAGIAZQAuAGMAbwBtAC8AKQAsACAAdwBpAHQAaAAgAFIAZQBzAGUAcgB2AGUAZAAgAEYAbwBuAHQAIABOAGEAbQBlACAAJwBTAG8AdQByAGMAZQAnAC4AIABBAGwAbAAgAFIAaQBnAGgAdABzACAAUgBlAHMAZQByAHYAZQBkAC4AIABTAG8AdQByAGMAZQAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAEEAZABvAGIAZQAgAFMAeQBzAHQAZQBtAHMAIABJAG4AYwBvAHIAcABvAHIAYQB0AGUAZAAgAGkAbgAgAHQAaABlACAAVQBuAGkAdABlAGQAIABTAHQAYQB0AGUAcwAgAGEAbgBkAC8AbwByACAAbwB0AGgAZQByACAAYwBvAHUAbgB0AHIAaQBlAHMALgANAAoADQAKAFQAaABpAHMAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlACAAaQBzACAAbABpAGMAZQBuAHMAZQBkACAAdQBuAGQAZQByACAAdABoAGUAIABTAEkATAAgAE8AcABlAG4AIABGAG8AbgB0ACAATABpAGMAZQBuAHMAZQAsACAAVgBlAHIAcwBpAG8AbgAgADEALgAxAC4ADQAKAA0ACgBUAGgAaQBzACAAbABpAGMAZQBuAHMAZQAgAGkAcwAgAGMAbwBwAGkAZQBkACAAYgBlAGwAbwB3ACwAIABhAG4AZAAgAGkAcwAgAGEAbABzAG8AIABhAHYAYQBpAGwAYQBiAGwAZQAgAHcAaQB0AGgAIABhACAARgBBAFEAIABhAHQAOgAgAGgAdAB0AHAAOgAvAC8AcwBjAHIAaQBwAHQAcwAuAHMAaQBsAC4AbwByAGcALwBPAEYATAANAAoADQAKAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQANAAoAUwBJAEwAIABPAFAARQBOACAARgBPAE4AVAAgAEwASQBDAEUATgBTAEUAIABWAGUAcgBzAGkAbwBuACAAMQAuADEAIAAtACAAMgA2ACAARgBlAGIAcgB1AGEAcgB5ACAAMgAwADAANwANAAoALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAA0ACgANAAoAUABSAEUAQQBNAEIATABFAA0ACgBUAGgAZQAgAGcAbwBhAGwAcwAgAG8AZgAgAHQAaABlACAATwBwAGUAbgAgAEYAbwBuAHQAIABMAGkAYwBlAG4AcwBlACAAKABPAEYATAApACAAYQByAGUAIAB0AG8AIABzAHQAaQBtAHUAbABhAHQAZQAgAHcAbwByAGwAZAB3AGkAZABlACAAZABlAHYAZQBsAG8AcABtAGUAbgB0ACAAbwBmACAAYwBvAGwAbABhAGIAbwByAGEAdABpAHYAZQAgAGYAbwBuAHQAIABwAHIAbwBqAGUAYwB0AHMALAAgAHQAbwAgAHMAdQBwAHAAbwByAHQAIAB0AGgAZQAgAGYAbwBuAHQAIABjAHIAZQBhAHQAaQBvAG4AIABlAGYAZgBvAHIAdABzACAAbwBmACAAYQBjAGEAZABlAG0AaQBjACAAYQBuAGQAIABsAGkAbgBnAHUAaQBzAHQAaQBjACAAYwBvAG0AbQB1AG4AaQB0AGkAZQBzACwAIABhAG4AZAAgAHQAbwAgAHAAcgBvAHYAaQBkAGUAIABhACAAZgByAGUAZQAgAGEAbgBkACAAbwBwAGUAbgAgAGYAcgBhAG0AZQB3AG8AcgBrACAAaQBuACAAdwBoAGkAYwBoACAAZgBvAG4AdABzACAAbQBhAHkAIABiAGUAIABzAGgAYQByAGUAZAAgAGEAbgBkACAAaQBtAHAAcgBvAHYAZQBkACAAaQBuACAAcABhAHIAdABuAGUAcgBzAGgAaQBwACAAdwBpAHQAaAAgAG8AdABoAGUAcgBzAC4ADQAKAA0ACgBUAGgAZQAgAE8ARgBMACAAYQBsAGwAbwB3AHMAIAB0AGgAZQAgAGwAaQBjAGUAbgBzAGUAZAAgAGYAbwBuAHQAcwAgAHQAbwAgAGIAZQAgAHUAcwBlAGQALAAgAHMAdAB1AGQAaQBlAGQALAAgAG0AbwBkAGkAZgBpAGUAZAAgAGEAbgBkACAAcgBlAGQAaQBzAHQAcgBpAGIAdQB0AGUAZAAgAGYAcgBlAGUAbAB5ACAAYQBzACAAbABvAG4AZwAgAGEAcwAgAHQAaABlAHkAIABhAHIAZQAgAG4AbwB0ACAAcwBvAGwAZAAgAGIAeQAgAHQAaABlAG0AcwBlAGwAdgBlAHMALgAgAFQAaABlACAAZgBvAG4AdABzACwAIABpAG4AYwBsAHUAZABpAG4AZwAgAGEAbgB5ACAAZABlAHIAaQB2AGEAdABpAHYAZQAgAHcAbwByAGsAcwAsACAAYwBhAG4AIABiAGUAIABiAHUAbgBkAGwAZQBkACwAIABlAG0AYgBlAGQAZABlAGQALAAgAHIAZQBkAGkAcwB0AHIAaQBiAHUAdABlAGQAIABhAG4AZAAvAG8AcgAgAHMAbwBsAGQAIAB3AGkAdABoACAAYQBuAHkAIABzAG8AZgB0AHcAYQByAGUAIABwAHIAbwB2AGkAZABlAGQAIAB0AGgAYQB0ACAAYQBuAHkAIAByAGUAcwBlAHIAdgBlAGQAIABuAGEAbQBlAHMAIABhAHIAZQAgAG4AbwB0ACAAdQBzAGUAZAAgAGIAeQAgAGQAZQByAGkAdgBhAHQAaQB2AGUAIAB3AG8AcgBrAHMALgAgAFQAaABlACAAZgBvAG4AdABzACAAYQBuAGQAIABkAGUAcgBpAHYAYQB0AGkAdgBlAHMALAAgAGgAbwB3AGUAdgBlAHIALAAgAGMAYQBuAG4AbwB0ACAAYgBlACAAcgBlAGwAZQBhAHMAZQBkACAAdQBuAGQAZQByACAAYQBuAHkAIABvAHQAaABlAHIAIAB0AHkAcABlACAAbwBmACAAbABpAGMAZQBuAHMAZQAuACAAVABoAGUAIAByAGUAcQB1AGkAcgBlAG0AZQBuAHQAIABmAG8AcgAgAGYAbwBuAHQAcwAgAHQAbwAgAHIAZQBtAGEAaQBuACAAdQBuAGQAZQByACAAdABoAGkAcwAgAGwAaQBjAGUAbgBzAGUAIABkAG8AZQBzACAAbgBvAHQAIABhAHAAcABsAHkAIAB0AG8AIABhAG4AeQAgAGQAbwBjAHUAbQBlAG4AdAAgAGMAcgBlAGEAdABlAGQAIAB1AHMAaQBuAGcAIAB0AGgAZQAgAGYAbwBuAHQAcwAgAG8AcgAgAHQAaABlAGkAcgAgAGQAZQByAGkAdgBhAHQAaQB2AGUAcwAuAA0ACgANAAoARABFAEYASQBOAEkAVABJAE8ATgBTAA0ACgAiAEYAbwBuAHQAIABTAG8AZgB0AHcAYQByAGUAIgAgAHIAZQBmAGUAcgBzACAAdABvACAAdABoAGUAIABzAGUAdAAgAG8AZgAgAGYAaQBsAGUAcwAgAHIAZQBsAGUAYQBzAGUAZAAgAGIAeQAgAHQAaABlACAAQwBvAHAAeQByAGkAZwBoAHQAIABIAG8AbABkAGUAcgAoAHMAKQAgAHUAbgBkAGUAcgAgAHQAaABpAHMAIABsAGkAYwBlAG4AcwBlACAAYQBuAGQAIABjAGwAZQBhAHIAbAB5ACAAbQBhAHIAawBlAGQAIABhAHMAIABzAHUAYwBoAC4AIABUAGgAaQBzACAAbQBhAHkAIABpAG4AYwBsAHUAZABlACAAcwBvAHUAcgBjAGUAIABmAGkAbABlAHMALAAgAGIAdQBpAGwAZAAgAHMAYwByAGkAcAB0AHMAIABhAG4AZAAgAGQAbwBjAHUAbQBlAG4AdABhAHQAaQBvAG4ALgANAAoADQAKACIAUgBlAHMAZQByAHYAZQBkACAARgBvAG4AdAAgAE4AYQBtAGUAIgAgAHIAZQBmAGUAcgBzACAAdABvACAAYQBuAHkAIABuAGEAbQBlAHMAIABzAHAAZQBjAGkAZgBpAGUAZAAgAGEAcwAgAHMAdQBjAGgAIABhAGYAdABlAHIAIAB0AGgAZQAgAGMAbwBwAHkAcgBpAGcAaAB0ACAAcwB0AGEAdABlAG0AZQBuAHQAKABzACkALgANAAoADQAKACIATwByAGkAZwBpAG4AYQBsACAAVgBlAHIAcwBpAG8AbgAiACAAcgBlAGYAZQByAHMAIAB0AG8AIAB0AGgAZQAgAGMAbwBsAGwAZQBjAHQAaQBvAG4AIABvAGYAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlACAAYwBvAG0AcABvAG4AZQBuAHQAcwAgAGEAcwAgAGQAaQBzAHQAcgBpAGIAdQB0AGUAZAAgAGIAeQAgAHQAaABlACAAQwBvAHAAeQByAGkAZwBoAHQAIABIAG8AbABkAGUAcgAoAHMAKQAuAA0ACgANAAoAIgBNAG8AZABpAGYAaQBlAGQAIABWAGUAcgBzAGkAbwBuACIAIAByAGUAZgBlAHIAcwAgAHQAbwAgAGEAbgB5ACAAZABlAHIAaQB2AGEAdABpAHYAZQAgAG0AYQBkAGUAIABiAHkAIABhAGQAZABpAG4AZwAgAHQAbwAsACAAZABlAGwAZQB0AGkAbgBnACwAIABvAHIAIABzAHUAYgBzAHQAaQB0AHUAdABpAG4AZwAgAC0ALQAgAGkAbgAgAHAAYQByAHQAIABvAHIAIABpAG4AIAB3AGgAbwBsAGUAIAAtAC0AIABhAG4AeQAgAG8AZgAgAHQAaABlACAAYwBvAG0AcABvAG4AZQBuAHQAcwAgAG8AZgAgAHQAaABlACAATwByAGkAZwBpAG4AYQBsACAAVgBlAHIAcwBpAG8AbgAsACAAYgB5ACAAYwBoAGEAbgBnAGkAbgBnACAAZgBvAHIAbQBhAHQAcwAgAG8AcgAgAGIAeQAgAHAAbwByAHQAaQBuAGcAIAB0AGgAZQAgAEYAbwBuAHQAIABTAG8AZgB0AHcAYQByAGUAIAB0AG8AIABhACAAbgBlAHcAIABlAG4AdgBpAHIAbwBuAG0AZQBuAHQALgANAAoADQAKACIAQQB1AHQAaABvAHIAIgAgAHIAZQBmAGUAcgBzACAAdABvACAAYQBuAHkAIABkAGUAcwBpAGcAbgBlAHIALAAgAGUAbgBnAGkAbgBlAGUAcgAsACAAcAByAG8AZwByAGEAbQBtAGUAcgAsACAAdABlAGMAaABuAGkAYwBhAGwAIAB3AHIAaQB0AGUAcgAgAG8AcgAgAG8AdABoAGUAcgAgAHAAZQByAHMAbwBuACAAdwBoAG8AIABjAG8AbgB0AHIAaQBiAHUAdABlAGQAIAB0AG8AIAB0AGgAZQAgAEYAbwBuAHQAIABTAG8AZgB0AHcAYQByAGUALgANAAoADQAKAFAARQBSAE0ASQBTAFMASQBPAE4AIAAmACAAQwBPAE4ARABJAFQASQBPAE4AUwANAAoAUABlAHIAbQBpAHMAcwBpAG8AbgAgAGkAcwAgAGgAZQByAGUAYgB5ACAAZwByAGEAbgB0AGUAZAAsACAAZgByAGUAZQAgAG8AZgAgAGMAaABhAHIAZwBlACwAIAB0AG8AIABhAG4AeQAgAHAAZQByAHMAbwBuACAAbwBiAHQAYQBpAG4AaQBuAGcAIABhACAAYwBvAHAAeQAgAG8AZgAgAHQAaABlACAARgBvAG4AdAAgAFMAbwBmAHQAdwBhAHIAZQAsACAAdABvACAAdQBzAGUALAAgAHMAdAB1AGQAeQAsACAAYwBvAHAAeQAsACAAbQBlAHIAZwBlACwAIABlAG0AYgBlAGQALAAgAG0AbwBkAGkAZgB5ACwAIAByAGUAZABpAHMAdAByAGkAYgB1AHQAZQAsACAAYQBuAGQAIABzAGUAbABsACAAbQBvAGQAaQBmAGkAZQBkACAAYQBuAGQAIAB1AG4AbQBvAGQAaQBmAGkAZQBkACAAYwBvAHAAaQBlAHMAIABvAGYAIAB0AGgAZQAgAEYAbwBuAHQAIABTAG8AZgB0AHcAYQByAGUALAAgAHMAdQBiAGoAZQBjAHQAIAB0AG8AIAB0AGgAZQAgAGYAbwBsAGwAbwB3AGkAbgBnACAAYwBvAG4AZABpAHQAaQBvAG4AcwA6AA0ACgANAAoAMQApACAATgBlAGkAdABoAGUAcgAgAHQAaABlACAARgBvAG4AdAAgAFMAbwBmAHQAdwBhAHIAZQAgAG4AbwByACAAYQBuAHkAIABvAGYAIABpAHQAcwAgAGkAbgBkAGkAdgBpAGQAdQBhAGwAIABjAG8AbQBwAG8AbgBlAG4AdABzACwAIABpAG4AIABPAHIAaQBnAGkAbgBhAGwAIABvAHIAIABNAG8AZABpAGYAaQBlAGQAIABWAGUAcgBzAGkAbwBuAHMALAAgAG0AYQB5ACAAYgBlACAAcwBvAGwAZAAgAGIAeQAgAGkAdABzAGUAbABmAC4ADQAKAA0ACgAyACkAIABPAHIAaQBnAGkAbgBhAGwAIABvAHIAIABNAG8AZABpAGYAaQBlAGQAIABWAGUAcgBzAGkAbwBuAHMAIABvAGYAIAB0AGgAZQAgAEYAbwBuAHQAIABTAG8AZgB0AHcAYQByAGUAIABtAGEAeQAgAGIAZQAgAGIAdQBuAGQAbABlAGQALAAgAHIAZQBkAGkAcwB0AHIAaQBiAHUAdABlAGQAIABhAG4AZAAvAG8AcgAgAHMAbwBsAGQAIAB3AGkAdABoACAAYQBuAHkAIABzAG8AZgB0AHcAYQByAGUALAAgAHAAcgBvAHYAaQBkAGUAZAAgAHQAaABhAHQAIABlAGEAYwBoACAAYwBvAHAAeQAgAGMAbwBuAHQAYQBpAG4AcwAgAHQAaABlACAAYQBiAG8AdgBlACAAYwBvAHAAeQByAGkAZwBoAHQAIABuAG8AdABpAGMAZQAgAGEAbgBkACAAdABoAGkAcwAgAGwAaQBjAGUAbgBzAGUALgAgAFQAaABlAHMAZQAgAGMAYQBuACAAYgBlACAAaQBuAGMAbAB1AGQAZQBkACAAZQBpAHQAaABlAHIAIABhAHMAIABzAHQAYQBuAGQALQBhAGwAbwBuAGUAIAB0AGUAeAB0ACAAZgBpAGwAZQBzACwAIABoAHUAbQBhAG4ALQByAGUAYQBkAGEAYgBsAGUAIABoAGUAYQBkAGUAcgBzACAAbwByACAAaQBuACAAdABoAGUAIABhAHAAcAByAG8AcAByAGkAYQB0AGUAIABtAGEAYwBoAGkAbgBlAC0AcgBlAGEAZABhAGIAbABlACAAbQBlAHQAYQBkAGEAdABhACAAZgBpAGUAbABkAHMAIAB3AGkAdABoAGkAbgAgAHQAZQB4AHQAIABvAHIAIABiAGkAbgBhAHIAeQAgAGYAaQBsAGUAcwAgAGEAcwAgAGwAbwBuAGcAIABhAHMAIAB0AGgAbwBzAGUAIABmAGkAZQBsAGQAcwAgAGMAYQBuACAAYgBlACAAZQBhAHMAaQBsAHkAIAB2AGkAZQB3AGUAZAAgAGIAeQAgAHQAaABlACAAdQBzAGUAcgAuAA0ACgANAAoAMwApACAATgBvACAATQBvAGQAaQBmAGkAZQBkACAAVgBlAHIAcwBpAG8AbgAgAG8AZgAgAHQAaABlACAARgBvAG4AdAAgAFMAbwBmAHQAdwBhAHIAZQAgAG0AYQB5ACAAdQBzAGUAIAB0AGgAZQAgAFIAZQBzAGUAcgB2AGUAZAAgAEYAbwBuAHQAIABOAGEAbQBlACgAcwApACAAdQBuAGwAZQBzAHMAIABlAHgAcABsAGkAYwBpAHQAIAB3AHIAaQB0AHQAZQBuACAAcABlAHIAbQBpAHMAcwBpAG8AbgAgAGkAcwAgAGcAcgBhAG4AdABlAGQAIABiAHkAIAB0AGgAZQAgAGMAbwByAHIAZQBzAHAAbwBuAGQAaQBuAGcAIABDAG8AcAB5AHIAaQBnAGgAdAAgAEgAbwBsAGQAZQByAC4AIABUAGgAaQBzACAAcgBlAHMAdAByAGkAYwB0AGkAbwBuACAAbwBuAGwAeQAgAGEAcABwAGwAaQBlAHMAIAB0AG8AIAB0AGgAZQAgAHAAcgBpAG0AYQByAHkAIABmAG8AbgB0ACAAbgBhAG0AZQAgAGEAcwAgAHAAcgBlAHMAZQBuAHQAZQBkACAAdABvACAAdABoAGUAIAB1AHMAZQByAHMALgANAAoADQAKADQAKQAgAFQAaABlACAAbgBhAG0AZQAoAHMAKQAgAG8AZgAgAHQAaABlACAAQwBvAHAAeQByAGkAZwBoAHQAIABIAG8AbABkAGUAcgAoAHMAKQAgAG8AcgAgAHQAaABlACAAQQB1AHQAaABvAHIAKABzACkAIABvAGYAIAB0AGgAZQAgAEYAbwBuAHQAIABTAG8AZgB0AHcAYQByAGUAIABzAGgAYQBsAGwAIABuAG8AdAAgAGIAZQAgAHUAcwBlAGQAIAB0AG8AIABwAHIAbwBtAG8AdABlACwAIABlAG4AZABvAHIAcwBlACAAbwByACAAYQBkAHYAZQByAHQAaQBzAGUAIABhAG4AeQAgAE0AbwBkAGkAZgBpAGUAZAAgAFYAZQByAHMAaQBvAG4ALAAgAGUAeABjAGUAcAB0ACAAdABvACAAYQBjAGsAbgBvAHcAbABlAGQAZwBlACAAdABoAGUAIABjAG8AbgB0AHIAaQBiAHUAdABpAG8AbgAoAHMAKQAgAG8AZgAgAHQAaABlACAAQwBvAHAAeQByAGkAZwBoAHQAIABIAG8AbABkAGUAcgAoAHMAKQAgAGEAbgBkACAAdABoAGUAIABBAHUAdABoAG8AcgAoAHMAKQAgAG8AcgAgAHcAaQB0AGgAIAB0AGgAZQBpAHIAIABlAHgAcABsAGkAYwBpAHQAIAB3AHIAaQB0AHQAZQBuACAAcABlAHIAbQBpAHMAcwBpAG8AbgAuAA0ACgANAAoANQApACAAVABoAGUAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlACwAIABtAG8AZABpAGYAaQBlAGQAIABvAHIAIAB1AG4AbQBvAGQAaQBmAGkAZQBkACwAIABpAG4AIABwAGEAcgB0ACAAbwByACAAaQBuACAAdwBoAG8AbABlACwAIABtAHUAcwB0ACAAYgBlACAAZABpAHMAdAByAGkAYgB1AHQAZQBkACAAZQBuAHQAaQByAGUAbAB5ACAAdQBuAGQAZQByACAAdABoAGkAcwAgAGwAaQBjAGUAbgBzAGUALAAgAGEAbgBkACAAbQB1AHMAdAAgAG4AbwB0ACAAYgBlACAAZABpAHMAdAByAGkAYgB1AHQAZQBkACAAdQBuAGQAZQByACAAYQBuAHkAIABvAHQAaABlAHIAIABsAGkAYwBlAG4AcwBlAC4AIABUAGgAZQAgAHIAZQBxAHUAaQByAGUAbQBlAG4AdAAgAGYAbwByACAAZgBvAG4AdABzACAAdABvACAAcgBlAG0AYQBpAG4AIAB1AG4AZABlAHIAIAB0AGgAaQBzACAAbABpAGMAZQBuAHMAZQAgAGQAbwBlAHMAIABuAG8AdAAgAGEAcABwAGwAeQAgAHQAbwAgAGEAbgB5ACAAZABvAGMAdQBtAGUAbgB0ACAAYwByAGUAYQB0AGUAZAAgAHUAcwBpAG4AZwAgAHQAaABlACAARgBvAG4AdAAgAFMAbwBmAHQAdwBhAHIAZQAuAA0ACgANAAoAVABFAFIATQBJAE4AQQBUAEkATwBOAA0ACgBUAGgAaQBzACAAbABpAGMAZQBuAHMAZQAgAGIAZQBjAG8AbQBlAHMAIABuAHUAbABsACAAYQBuAGQAIAB2AG8AaQBkACAAaQBmACAAYQBuAHkAIABvAGYAIAB0AGgAZQAgAGEAYgBvAHYAZQAgAGMAbwBuAGQAaQB0AGkAbwBuAHMAIABhAHIAZQAgAG4AbwB0ACAAbQBlAHQALgANAAoADQAKAEQASQBTAEMATABBAEkATQBFAFIADQAKAFQASABFACAARgBPAE4AVAAgAFMATwBGAFQAVwBBAFIARQAgAEkAUwAgAFAAUgBPAFYASQBEAEUARAAgACIAQQBTACAASQBTACIALAAgAFcASQBUAEgATwBVAFQAIABXAEEAUgBSAEEATgBUAFkAIABPAEYAIABBAE4AWQAgAEsASQBOAEQALAAgAEUAWABQAFIARQBTAFMAIABPAFIAIABJAE0AUABMAEkARQBEACwAIABJAE4AQwBMAFUARABJAE4ARwAgAEIAVQBUACAATgBPAFQAIABMAEkATQBJAFQARQBEACAAVABPACAAQQBOAFkAIABXAEEAUgBSAEEATgBUAEkARQBTACAATwBGACAATQBFAFIAQwBIAEEATgBUAEEAQgBJAEwASQBUAFkALAAgAEYASQBUAE4ARQBTAFMAIABGAE8AUgAgAEEAIABQAEEAUgBUAEkAQwBVAEwAQQBSACAAUABVAFIAUABPAFMARQAgAEEATgBEACAATgBPAE4ASQBOAEYAUgBJAE4ARwBFAE0ARQBOAFQAIABPAEYAIABDAE8AUABZAFIASQBHAEgAVAAsACAAUABBAFQARQBOAFQALAAgAFQAUgBBAEQARQBNAEEAUgBLACwAIABPAFIAIABPAFQASABFAFIAIABSAEkARwBIAFQALgAgAEkATgAgAE4ATwAgAEUAVgBFAE4AVAAgAFMASABBAEwATAAgAFQASABFACAAQwBPAFAAWQBSAEkARwBIAFQAIABIAE8ATABEAEUAUgAgAEIARQAgAEwASQBBAEIATABFACAARgBPAFIAIABBAE4AWQAgAEMATABBAEkATQAsACAARABBAE0AQQBHAEUAUwAgAE8AUgAgAE8AVABIAEUAUgAgAEwASQBBAEIASQBMAEkAVABZACwAIABJAE4AQwBMAFUARABJAE4ARwAgAEEATgBZACAARwBFAE4ARQBSAEEATAAsACAAUwBQAEUAQwBJAEEATAAsACAASQBOAEQASQBSAEUAQwBUACwAIABJAE4AQwBJAEQARQBOAFQAQQBMACwAIABPAFIAIABDAE8ATgBTAEUAUQBVAEUATgBUAEkAQQBMACAARABBAE0AQQBHAEUAUwAsACAAVwBIAEUAVABIAEUAUgAgAEkATgAgAEEATgAgAEEAQwBUAEkATwBOACAATwBGACAAQwBPAE4AVABSAEEAQwBUACwAIABUAE8AUgBUACAATwBSACAATwBUAEgARQBSAFcASQBTAEUALAAgAEEAUgBJAFMASQBOAEcAIABGAFIATwBNACwAIABPAFUAVAAgAE8ARgAgAFQASABFACAAVQBTAEUAIABPAFIAIABJAE4AQQBCAEkATABJAFQAWQAgAFQATwAgAFUAUwBFACAAVABIAEUAIABGAE8ATgBUACAAUwBPAEYAVABXAEEAUgBFACAATwBSACAARgBSAE8ATQAgAE8AVABIAEUAUgAgAEQARQBBAEwASQBOAEcAUwAgAEkATgAgAFQASABFACAARgBPAE4AVAAgAFMATwBGAFQAVwBBAFIARQAuAA0ACgAAQ29weXJpZ2h0IDIwMTAsIDIwMTIgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQgKGh0dHA6Ly93d3cuYWRvYmUuY29tLyksIHdpdGggUmVzZXJ2ZWQgRm9udCBOYW1lICdTb3VyY2UnLiBBbGwgUmlnaHRzIFJlc2VydmVkLiBTb3VyY2UgaXMgYSB0cmFkZW1hcmsgb2YgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQgaW4gdGhlIFVuaXRlZCBTdGF0ZXMgYW5kL29yIG90aGVyIGNvdW50cmllcy4NCg0KVGhpcyBGb250IFNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBTSUwgT3BlbiBGb250IExpY2Vuc2UsIFZlcnNpb24gMS4xLg0KDQpUaGlzIGxpY2Vuc2UgaXMgY29waWVkIGJlbG93LCBhbmQgaXMgYWxzbyBhdmFpbGFibGUgd2l0aCBhIEZBUSBhdDogaHR0cDovL3NjcmlwdHMuc2lsLm9yZy9PRkwNCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NClNJTCBPUEVOIEZPTlQgTElDRU5TRSBWZXJzaW9uIDEuMSAtIDI2IEZlYnJ1YXJ5IDIwMDcNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNClBSRUFNQkxFDQpUaGUgZ29hbHMgb2YgdGhlIE9wZW4gRm9udCBMaWNlbnNlIChPRkwpIGFyZSB0byBzdGltdWxhdGUgd29ybGR3aWRlIGRldmVsb3BtZW50IG9mIGNvbGxhYm9yYXRpdmUgZm9udCBwcm9qZWN0cywgdG8gc3VwcG9ydCB0aGUgZm9udCBjcmVhdGlvbiBlZmZvcnRzIG9mIGFjYWRlbWljIGFuZCBsaW5ndWlzdGljIGNvbW11bml0aWVzLCBhbmQgdG8gcHJvdmlkZSBhIGZyZWUgYW5kIG9wZW4gZnJhbWV3b3JrIGluIHdoaWNoIGZvbnRzIG1heSBiZSBzaGFyZWQgYW5kIGltcHJvdmVkIGluIHBhcnRuZXJzaGlwIHdpdGggb3RoZXJzLg0KDQpUaGUgT0ZMIGFsbG93cyB0aGUgbGljZW5zZWQgZm9udHMgdG8gYmUgdXNlZCwgc3R1ZGllZCwgbW9kaWZpZWQgYW5kIHJlZGlzdHJpYnV0ZWQgZnJlZWx5IGFzIGxvbmcgYXMgdGhleSBhcmUgbm90IHNvbGQgYnkgdGhlbXNlbHZlcy4gVGhlIGZvbnRzLCBpbmNsdWRpbmcgYW55IGRlcml2YXRpdmUgd29ya3MsIGNhbiBiZSBidW5kbGVkLCBlbWJlZGRlZCwgcmVkaXN0cmlidXRlZCBhbmQvb3Igc29sZCB3aXRoIGFueSBzb2Z0d2FyZSBwcm92aWRlZCB0aGF0IGFueSByZXNlcnZlZCBuYW1lcyBhcmUgbm90IHVzZWQgYnkgZGVyaXZhdGl2ZSB3b3Jrcy4gVGhlIGZvbnRzIGFuZCBkZXJpdmF0aXZlcywgaG93ZXZlciwgY2Fubm90IGJlIHJlbGVhc2VkIHVuZGVyIGFueSBvdGhlciB0eXBlIG9mIGxpY2Vuc2UuIFRoZSByZXF1aXJlbWVudCBmb3IgZm9udHMgdG8gcmVtYWluIHVuZGVyIHRoaXMgbGljZW5zZSBkb2VzIG5vdCBhcHBseSB0byBhbnkgZG9jdW1lbnQgY3JlYXRlZCB1c2luZyB0aGUgZm9udHMgb3IgdGhlaXIgZGVyaXZhdGl2ZXMuDQoNCkRFRklOSVRJT05TDQoiRm9udCBTb2Z0d2FyZSIgcmVmZXJzIHRvIHRoZSBzZXQgb2YgZmlsZXMgcmVsZWFzZWQgYnkgdGhlIENvcHlyaWdodCBIb2xkZXIocykgdW5kZXIgdGhpcyBsaWNlbnNlIGFuZCBjbGVhcmx5IG1hcmtlZCBhcyBzdWNoLiBUaGlzIG1heSBpbmNsdWRlIHNvdXJjZSBmaWxlcywgYnVpbGQgc2NyaXB0cyBhbmQgZG9jdW1lbnRhdGlvbi4NCg0KIlJlc2VydmVkIEZvbnQgTmFtZSIgcmVmZXJzIHRvIGFueSBuYW1lcyBzcGVjaWZpZWQgYXMgc3VjaCBhZnRlciB0aGUgY29weXJpZ2h0IHN0YXRlbWVudChzKS4NCg0KIk9yaWdpbmFsIFZlcnNpb24iIHJlZmVycyB0byB0aGUgY29sbGVjdGlvbiBvZiBGb250IFNvZnR3YXJlIGNvbXBvbmVudHMgYXMgZGlzdHJpYnV0ZWQgYnkgdGhlIENvcHlyaWdodCBIb2xkZXIocykuDQoNCiJNb2RpZmllZCBWZXJzaW9uIiByZWZlcnMgdG8gYW55IGRlcml2YXRpdmUgbWFkZSBieSBhZGRpbmcgdG8sIGRlbGV0aW5nLCBvciBzdWJzdGl0dXRpbmcgLS0gaW4gcGFydCBvciBpbiB3aG9sZSAtLSBhbnkgb2YgdGhlIGNvbXBvbmVudHMgb2YgdGhlIE9yaWdpbmFsIFZlcnNpb24sIGJ5IGNoYW5naW5nIGZvcm1hdHMgb3IgYnkgcG9ydGluZyB0aGUgRm9udCBTb2Z0d2FyZSB0byBhIG5ldyBlbnZpcm9ubWVudC4NCg0KIkF1dGhvciIgcmVmZXJzIHRvIGFueSBkZXNpZ25lciwgZW5naW5lZXIsIHByb2dyYW1tZXIsIHRlY2huaWNhbCB3cml0ZXIgb3Igb3RoZXIgcGVyc29uIHdobyBjb250cmlidXRlZCB0byB0aGUgRm9udCBTb2Z0d2FyZS4NCg0KUEVSTUlTU0lPTiAmIENPTkRJVElPTlMNClBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YgdGhlIEZvbnQgU29mdHdhcmUsIHRvIHVzZSwgc3R1ZHksIGNvcHksIG1lcmdlLCBlbWJlZCwgbW9kaWZ5LCByZWRpc3RyaWJ1dGUsIGFuZCBzZWxsIG1vZGlmaWVkIGFuZCB1bm1vZGlmaWVkIGNvcGllcyBvZiB0aGUgRm9udCBTb2Z0d2FyZSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQoNCjEpIE5laXRoZXIgdGhlIEZvbnQgU29mdHdhcmUgbm9yIGFueSBvZiBpdHMgaW5kaXZpZHVhbCBjb21wb25lbnRzLCBpbiBPcmlnaW5hbCBvciBNb2RpZmllZCBWZXJzaW9ucywgbWF5IGJlIHNvbGQgYnkgaXRzZWxmLg0KDQoyKSBPcmlnaW5hbCBvciBNb2RpZmllZCBWZXJzaW9ucyBvZiB0aGUgRm9udCBTb2Z0d2FyZSBtYXkgYmUgYnVuZGxlZCwgcmVkaXN0cmlidXRlZCBhbmQvb3Igc29sZCB3aXRoIGFueSBzb2Z0d2FyZSwgcHJvdmlkZWQgdGhhdCBlYWNoIGNvcHkgY29udGFpbnMgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgbGljZW5zZS4gVGhlc2UgY2FuIGJlIGluY2x1ZGVkIGVpdGhlciBhcyBzdGFuZC1hbG9uZSB0ZXh0IGZpbGVzLCBodW1hbi1yZWFkYWJsZSBoZWFkZXJzIG9yIGluIHRoZSBhcHByb3ByaWF0ZSBtYWNoaW5lLXJlYWRhYmxlIG1ldGFkYXRhIGZpZWxkcyB3aXRoaW4gdGV4dCBvciBiaW5hcnkgZmlsZXMgYXMgbG9uZyBhcyB0aG9zZSBmaWVsZHMgY2FuIGJlIGVhc2lseSB2aWV3ZWQgYnkgdGhlIHVzZXIuDQoNCjMpIE5vIE1vZGlmaWVkIFZlcnNpb24gb2YgdGhlIEZvbnQgU29mdHdhcmUgbWF5IHVzZSB0aGUgUmVzZXJ2ZWQgRm9udCBOYW1lKHMpIHVubGVzcyBleHBsaWNpdCB3cml0dGVuIHBlcm1pc3Npb24gaXMgZ3JhbnRlZCBieSB0aGUgY29ycmVzcG9uZGluZyBDb3B5cmlnaHQgSG9sZGVyLiBUaGlzIHJlc3RyaWN0aW9uIG9ubHkgYXBwbGllcyB0byB0aGUgcHJpbWFyeSBmb250IG5hbWUgYXMgcHJlc2VudGVkIHRvIHRoZSB1c2Vycy4NCg0KNCkgVGhlIG5hbWUocykgb2YgdGhlIENvcHlyaWdodCBIb2xkZXIocykgb3IgdGhlIEF1dGhvcihzKSBvZiB0aGUgRm9udCBTb2Z0d2FyZSBzaGFsbCBub3QgYmUgdXNlZCB0byBwcm9tb3RlLCBlbmRvcnNlIG9yIGFkdmVydGlzZSBhbnkgTW9kaWZpZWQgVmVyc2lvbiwgZXhjZXB0IHRvIGFja25vd2xlZGdlIHRoZSBjb250cmlidXRpb24ocykgb2YgdGhlIENvcHlyaWdodCBIb2xkZXIocykgYW5kIHRoZSBBdXRob3Iocykgb3Igd2l0aCB0aGVpciBleHBsaWNpdCB3cml0dGVuIHBlcm1pc3Npb24uDQoNCjUpIFRoZSBGb250IFNvZnR3YXJlLCBtb2RpZmllZCBvciB1bm1vZGlmaWVkLCBpbiBwYXJ0IG9yIGluIHdob2xlLCBtdXN0IGJlIGRpc3RyaWJ1dGVkIGVudGlyZWx5IHVuZGVyIHRoaXMgbGljZW5zZSwgYW5kIG11c3Qgbm90IGJlIGRpc3RyaWJ1dGVkIHVuZGVyIGFueSBvdGhlciBsaWNlbnNlLiBUaGUgcmVxdWlyZW1lbnQgZm9yIGZvbnRzIHRvIHJlbWFpbiB1bmRlciB0aGlzIGxpY2Vuc2UgZG9lcyBub3QgYXBwbHkgdG8gYW55IGRvY3VtZW50IGNyZWF0ZWQgdXNpbmcgdGhlIEZvbnQgU29mdHdhcmUuDQoNClRFUk1JTkFUSU9ODQpUaGlzIGxpY2Vuc2UgYmVjb21lcyBudWxsIGFuZCB2b2lkIGlmIGFueSBvZiB0aGUgYWJvdmUgY29uZGl0aW9ucyBhcmUgbm90IG1ldC4NCg0KRElTQ0xBSU1FUg0KVEhFIEZPTlQgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIEFOWSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVCBPRiBDT1BZUklHSFQsIFBBVEVOVCwgVFJBREVNQVJLLCBPUiBPVEhFUiBSSUdIVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBJTkNMVURJTkcgQU5ZIEdFTkVSQUwsIFNQRUNJQUwsIElORElSRUNULCBJTkNJREVOVEFMLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgVEhFIFVTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRIRSBGT05UIFNPRlRXQVJFIE9SIEZST00gT1RIRVIgREVBTElOR1MgSU4gVEhFIEZPTlQgU09GVFdBUkUuDQoAAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBhAGQAbwBiAGUALgBjAG8AbQAvAHQAeQBwAGUALwBsAGUAZwBhAGwALgBoAHQAbQBsAABodHRwOi8vd3d3LmFkb2JlLmNvbS90eXBlL2xlZ2FsLmh0bWwAAAIAAAAAAAD%2FtQAyAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAEAAgECAQMAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAQQAowCEAIUAvQCWAOgAhgCOAIsAnQCpAKQBBQCKANoAgwCTAQYBBwCNAQgAiADDAN4BCQCeAKoA9QD0APYAogCtAMkAxwCuAGIAYwCQAGQAywBlAMgAygDPAMwAzQDOAOkAZgDTANAA0QCvAGcA8ACRANYA1ADVAGgA6wDtAIkAagBpAGsAbQBsAG4AoABvAHEAcAByAHMAdQB0AHYAdwDqAHgAegB5AHsAfQB8ALgAoQB%2FAH4AgACBAOwA7gC6ANcAsACxANgA3QDZAQoBCwEMAQ0BDgEPARABEQESARMAsgCzALYAtwDEALQAtQDFAIcAvgC%2FALwBFAEVAO8BFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgROVUxMAkNSB3VuaTAwQTAHdW5pMDBBRAh0d28uc3Vwcwp0aHJlZS5zdXBzB3VuaTAwQjUIb25lLnN1cHMHdW5pMDMwMAd1bmkwMzAxB3VuaTAzMDIHdW5pMDMwMwd1bmkwMzA0B3VuaTAzMDgHdW5pMDMwQQd1bmkwMzI3BmEuc3VwcwZvLnN1cHMJZm91ci5zdXBzBEV1cm8HdW5pMjIxNQl6ZXJvLmRub20Ib25lLmRub20IdHdvLmRub20KdGhyZWUuZG5vbQlmb3VyLmRub20LdW5pMDMwMC5jYXALdW5pMDMwMS5jYXALdW5pMDMwMi5jYXALdW5pMDMwMy5jYXALdW5pMDMwOC5jYXALdW5pMDMwQS5jYXALdW5pMDMyNy5jYXAAAAAAAAAB%2F%2F8AAgAAAAEAAAAAzG2xVQAAAADNFaB%2FAAAAAM0fFuI%3D%29%20format%28%27truetype%27%29%3B%0A%7D%0A" rel="stylesheet" />
<link href="data:text/css;charset=utf-8,%40charset%20%22UTF%2D8%22%3B%0A%0Ahtml%2C%20body%2C%20div%2C%20span%2C%20applet%2C%20object%2C%20iframe%2C%0Ah1%2C%20h2%2C%20h3%2C%20h4%2C%20h5%2C%20h6%2C%20p%2C%20blockquote%2C%20pre%2C%0Aa%2C%20abbr%2C%20acronym%2C%20address%2C%20big%2C%20cite%2C%20code%2C%0Adel%2C%20dfn%2C%20em%2C%20img%2C%20ins%2C%20kbd%2C%20q%2C%20s%2C%20samp%2C%0Asmall%2C%20strike%2C%20strong%2C%20tt%2C%20var%2C%0Ab%2C%20u%2C%20i%2C%20center%2C%0Adl%2C%20dt%2C%20dd%2C%20ol%2C%20ul%2C%20li%2C%0Afieldset%2C%20form%2C%20label%2C%20legend%2C%0Atable%2C%20caption%2C%20tbody%2C%20tfoot%2C%20thead%2C%20tr%2C%20th%2C%20td%2C%0Aarticle%2C%20aside%2C%20canvas%2C%20details%2C%20embed%2C%0Afigure%2C%20figcaption%2C%20footer%2C%20header%2C%20hgroup%2C%0Amenu%2C%20nav%2C%20output%2C%20ruby%2C%20section%2C%20summary%2C%0Atime%2C%20mark%2C%20audio%2C%20video%20%7B%0Amargin%3A%200%3B%0Apadding%3A%200%3B%0Aborder%3A%200%3B%0Afont%3A%20inherit%3B%0Afont%2Dsize%3A%20100%25%3B%0Avertical%2Dalign%3A%20baseline%3B%0A%7D%0A%0Ahtml%20%7B%0Aline%2Dheight%3A%201%2E2%3B%0A%7D%0A%0Aul%20%7B%0Alist%2Dstyle%3A%20none%3B%0A%7D%0A%0Atable%20%7B%0Aborder%2Dcollapse%3A%20collapse%3B%0Aborder%2Dspacing%3A%200%3B%0A%7D%0A%0Acaption%2C%20th%2C%20td%20%7B%0Afont%2Dweight%3A%20normal%3B%0Avertical%2Dalign%3A%20middle%3B%0A%7D%0A%0Aq%2C%20blockquote%20%7B%0Aquotes%3A%20none%3B%0A%7D%0A%0Aq%3Abefore%2C%20q%3Aafter%2C%20blockquote%3Abefore%2C%20blockquote%3Aafter%20%7B%0Acontent%3A%20%22%22%3B%0Acontent%3A%20none%3B%0A%7D%0A%0Aa%20img%20%7B%0Aborder%3A%20none%3B%0A%7D%0A%0Aarticle%2C%20aside%2C%20details%2C%20figcaption%2C%20figure%2C%20footer%2C%20header%2C%20hgroup%2C%20menu%2C%20nav%2C%20section%2C%20summary%20%7B%0Adisplay%3A%20block%3B%0A%7D%0A%0A%0Ahtml%20%7B%0Aheight%3A%20100%25%3B%0Aoverflow%3A%20hidden%3B%0A%7D%0A%0Abody%20%7B%0Amargin%3A%200%3B%0Apadding%3A%200%3B%0Aopacity%3A%200%3B%0Aheight%3A%20100%25%3B%0Amin%2Dheight%3A%20740px%3B%0Awidth%3A%20100%25%3B%0Aoverflow%3A%20hidden%3B%0Acolor%3A%20%23fff%3B%0A%2Dwebkit%2Dfont%2Dsmoothing%3A%20antialiased%3B%0A%2Dmoz%2Dfont%2Dsmoothing%3A%20antialiased%3B%0A%2Dms%2Dfont%2Dsmoothing%3A%20antialiased%3B%0A%2Do%2Dfont%2Dsmoothing%3A%20antialiased%3B%0A%2Dwebkit%2Dtransition%3A%20opacity%20250ms%20ease%2Din%3B%0A%2Dwebkit%2Dtransition%2Ddelay%3A%20100ms%3B%0A%2Dmoz%2Dtransition%3A%20opacity%20250ms%20ease%2Din%20100ms%3B%0A%2Do%2Dtransition%3A%20opacity%20250ms%20ease%2Din%20100ms%3B%0Atransition%3A%20opacity%20250ms%20ease%2Din%20100ms%3B%0A%7D%0A%0Abody%2Eloaded%20%7B%0Aopacity%3A%201%20%21important%3B%0A%7D%0A%0Ainput%2C%20button%20%7B%0Avertical%2Dalign%3A%20middle%3B%0A%7D%0A%0Aslides%20%3E%20slide%5Bhidden%5D%20%7B%0Adisplay%3A%20none%20%21important%3B%0A%7D%0A%0Aslides%20%7B%0Awidth%3A%20100%25%3B%0Aheight%3A%20100%25%3B%0Aposition%3A%20absolute%3B%0Aleft%3A%200%3B%0Atop%3A%200%3B%0A%2Dwebkit%2Dtransform%3A%20translate3d%280%2C%200%2C%200%29%3B%0A%2Dmoz%2Dtransform%3A%20translate3d%280%2C%200%2C%200%29%3B%0A%2Dms%2Dtransform%3A%20translate3d%280%2C%200%2C%200%29%3B%0A%2Do%2Dtransform%3A%20translate3d%280%2C%200%2C%200%29%3B%0Atransform%3A%20translate3d%280%2C%200%2C%200%29%3B%0A%2Dwebkit%2Dperspective%3A%201000%3B%0A%2Dmoz%2Dperspective%3A%201000%3B%0A%2Dms%2Dperspective%3A%201000%3B%0A%2Do%2Dperspective%3A%201000%3B%0Aperspective%3A%201000%3B%0A%2Dwebkit%2Dtransform%2Dstyle%3A%20preserve%2D3d%3B%0A%2Dmoz%2Dtransform%2Dstyle%3A%20preserve%2D3d%3B%0A%2Dms%2Dtransform%2Dstyle%3A%20preserve%2D3d%3B%0A%2Do%2Dtransform%2Dstyle%3A%20preserve%2D3d%3B%0Atransform%2Dstyle%3A%20preserve%2D3d%3B%0A%2Dwebkit%2Dtransition%3A%20opacity%20250ms%20ease%2Din%3B%0A%2Dwebkit%2Dtransition%2Ddelay%3A%20100ms%3B%0A%2Dmoz%2Dtransition%3A%20opacity%20250ms%20ease%2Din%20100ms%3B%0A%2Do%2Dtransition%3A%20opacity%20250ms%20ease%2Din%20100ms%3B%0Atransition%3A%20opacity%20250ms%20ease%2Din%20100ms%3B%0A%7D%0A%0Aslides%20%3E%20slide%20%7B%0Adisplay%3A%20block%3B%0Aposition%3A%20absolute%3B%0Aoverflow%3A%20hidden%3B%0Aleft%3A%2050%25%3B%0Atop%3A%2050%25%3B%0A%2Dwebkit%2Dbox%2Dsizing%3A%20border%2Dbox%3B%0A%2Dmoz%2Dbox%2Dsizing%3A%20border%2Dbox%3B%0Abox%2Dsizing%3A%20border%2Dbox%3B%0A%7D%0A%0A%0A%0A%0A%3A%3Aselection%20%7B%0Acolor%3A%20white%3B%0Abackground%2Dcolor%3A%20%23ffd14d%3B%0Atext%2Dshadow%3A%20none%3B%0A%7D%0A%0A%3A%3A%2Dwebkit%2Dscrollbar%20%7B%0Aheight%3A%2016px%3B%0Aoverflow%3A%20visible%3B%0Awidth%3A%2016px%3B%0A%7D%0A%0A%3A%3A%2Dwebkit%2Dscrollbar%2Dthumb%20%7B%0Abackground%2Dcolor%3A%20rgba%280%2C%200%2C%200%2C%200%2E1%29%3B%0Abackground%2Dclip%3A%20padding%2Dbox%3B%0Aborder%3A%20solid%20transparent%3B%0Amin%2Dheight%3A%2028px%3B%0Apadding%3A%20100px%200%200%3B%0A%2Dwebkit%2Dbox%2Dshadow%3A%20inset%201px%201px%200%20rgba%280%2C%200%2C%200%2C%200%2E1%29%2C%20inset%200%20%2D1px%200%20rgba%280%2C%200%2C%200%2C%200%2E07%29%3B%0A%2Dmoz%2Dbox%2Dshadow%3A%20inset%201px%201px%200%20rgba%280%2C%200%2C%200%2C%200%2E1%29%2C%20inset%200%20%2D1px%200%20rgba%280%2C%200%2C%200%2C%200%2E07%29%3B%0Abox%2Dshadow%3A%20inset%201px%201px%200%20rgba%280%2C%200%2C%200%2C%200%2E1%29%2C%20inset%200%20%2D1px%200%20rgba%280%2C%200%2C%200%2C%200%2E07%29%3B%0Aborder%2Dwidth%3A%201px%201px%201px%206px%3B%0A%7D%0A%0A%3A%3A%2Dwebkit%2Dscrollbar%2Dthumb%3Ahover%20%7B%0Abackground%2Dcolor%3A%20rgba%280%2C%200%2C%200%2C%200%2E5%29%3B%0A%7D%0A%0A%3A%3A%2Dwebkit%2Dscrollbar%2Dbutton%20%7B%0Aheight%3A%200%3B%0Awidth%3A%200%3B%0A%7D%0A%0A%3A%3A%2Dwebkit%2Dscrollbar%2Dtrack%20%7B%0Abackground%2Dclip%3A%20padding%2Dbox%3B%0Aborder%3A%20solid%20transparent%3B%0Aborder%2Dwidth%3A%200%200%200%204px%3B%0A%7D%0A%0A%3A%3A%2Dwebkit%2Dscrollbar%2Dcorner%20%7B%0Abackground%3A%20transparent%3B%0A%7D%0A%0Abody%20%7B%0Abackground%3A%20black%3B%0A%7D%0A%0Aslides%20%3E%20slide%20%7B%0Adisplay%3A%20none%3B%0Afont%2Dfamily%3A%20%27Open%20Sans%27%2C%20Arial%2C%20sans%2Dserif%3B%0Afont%2Dsize%3A%2026px%3B%0Acolor%3A%20%23797979%3B%0Awidth%3A%20900px%3B%0Aheight%3A%20700px%3B%0Amargin%2Dleft%3A%20%2D450px%3B%0Amargin%2Dtop%3A%20%2D350px%3B%0Apadding%3A%2040px%2060px%3B%0A%2Dwebkit%2Dborder%2Dradius%3A%205px%3B%0A%2Dmoz%2Dborder%2Dradius%3A%205px%3B%0A%2Dms%2Dborder%2Dradius%3A%205px%3B%0A%2Do%2Dborder%2Dradius%3A%205px%3B%0Aborder%2Dradius%3A%205px%3B%0A%2Dwebkit%2Dtransition%3A%20all%200%2E6s%20ease%2Din%2Dout%3B%0A%2Dmoz%2Dtransition%3A%20all%200%2E6s%20ease%2Din%2Dout%3B%0A%2Do%2Dtransition%3A%20all%200%2E6s%20ease%2Din%2Dout%3B%0Atransition%3A%20all%200%2E6s%20ease%2Din%2Dout%3B%0A%7D%0A%0Aslides%20%3E%20slide%2Efar%2Dpast%20%7B%0Adisplay%3A%20none%3B%0A%7D%0A%0Aslides%20%3E%20slide%2Epast%20%7B%0Adisplay%3A%20block%3B%0Aopacity%3A%200%3B%0A%7D%0A%0Aslides%20%3E%20slide%2Ecurrent%20%7B%0Adisplay%3A%20block%3B%0Aopacity%3A%201%3B%0A%7D%0A%0Aslides%20%3E%20slide%2Ecurrent%20%2Eauto%2Dfadein%20%7B%0Aopacity%3A%201%3B%0A%7D%0A%0Aslides%20%3E%20slide%2Ecurrent%20%2Egdbar%20%7B%0A%2Dwebkit%2Dbackground%2Dsize%3A%20100%25%20100%25%3B%0A%2Dmoz%2Dbackground%2Dsize%3A%20100%25%20100%25%3B%0A%2Do%2Dbackground%2Dsize%3A%20100%25%20100%25%3B%0Abackground%2Dsize%3A%20100%25%20100%25%3B%0A%7D%0A%0Aslides%20%3E%20slide%2Enext%20%7B%0Adisplay%3A%20block%3B%0Aopacity%3A%200%3B%0Apointer%2Devents%3A%20none%3B%0A%7D%0A%0Aslides%20%3E%20slide%2Efar%2Dnext%20%7B%0Adisplay%3A%20none%3B%0A%7D%0A%0Aslides%20%3E%20slide%2Edark%20%7B%0Abackground%3A%20%23515151%20%21important%3B%0A%7D%0A%0Aslides%20%3E%20slide%3Anot%28%2Enobackground%29%3Aafter%20%7B%0Afont%2Dsize%3A%2012pt%3B%0Acontent%3A%20attr%28data%2Dslide%2Dnum%29%20%22%2F%22%20attr%28data%2Dtotal%2Dslides%29%3B%0Aposition%3A%20absolute%3B%0Abottom%3A%2020px%3B%0Aright%3A%2060px%3B%0Aline%2Dheight%3A%201%2E9%3B%0A%7D%0A%0Aslides%20%3E%20slide%2Etitle%2Dslide%3Aafter%20%7B%0Acontent%3A%20%27%27%3B%0Aposition%3A%20absolute%3B%0Abottom%3A%2040px%3B%0Aright%3A%2040px%3B%0Awidth%3A%20100%25%3B%0Aheight%3A%2060px%3B%0A%7D%0A%0Aslides%20%3E%20slide%2Ebackdrop%20%7B%0Az%2Dindex%3A%20%2D10%3B%0Adisplay%3A%20block%20%21important%3B%0Abackground%3A%20%2Dwebkit%2Dgradient%28linear%2C%2050%25%200%25%2C%2050%25%20100%25%2C%20color%2Dstop%280%25%2C%20%23ffffff%29%2C%20color%2Dstop%2885%25%2C%20%23ffffff%29%2C%20color%2Dstop%28100%25%2C%20%23e6e6e6%29%29%3B%0Abackground%3A%20%2Dwebkit%2Dlinear%2Dgradient%28%23ffffff%2C%20%23ffffff%2085%25%2C%20%23e6e6e6%29%3B%0Abackground%3A%20%2Dmoz%2Dlinear%2Dgradient%28%23ffffff%2C%20%23ffffff%2085%25%2C%20%23e6e6e6%29%3B%0Abackground%3A%20%2Do%2Dlinear%2Dgradient%28%23ffffff%2C%20%23ffffff%2085%25%2C%20%23e6e6e6%29%3B%0Abackground%3A%20linear%2Dgradient%28%23ffffff%2C%20%23ffffff%2085%25%2C%20%23e6e6e6%29%3B%0Abackground%2Dcolor%3A%20white%3B%0A%7D%0A%0Aslides%20%3E%20slide%2Ebackdrop%3Aafter%2C%20slides%20%3E%20slide%2Ebackdrop%3Abefore%20%7B%0Adisplay%3A%20none%3B%0A%7D%0A%0Aslides%20%3E%20slide%20%3E%20hgroup%20%2B%20article%20%7B%0Amargin%2Dtop%3A%2045px%3B%0A%7D%0A%0Aslides%20%3E%20slide%20%3E%20hgroup%20%2B%20article%2Eflexbox%2Evcenter%2C%20slides%20%3E%20slide%20%3E%20hgroup%20%2B%20article%2Eflexbox%2Evleft%2C%20slides%20%3E%20slide%20%3E%20hgroup%20%2B%20article%2Eflexbox%2Evright%20%7B%0Aheight%3A%2080%25%3B%0A%7D%0A%0Aslides%20%3E%20slide%20%3E%20hgroup%20%2B%20article%20p%20%7B%0Amargin%2Dbottom%3A%201em%3B%0A%7D%0A%0Aslides%20%3E%20slide%20%3E%20article%3Aonly%2Dchild%20%7B%0Aheight%3A%20100%25%3B%0A%7D%0A%0Aslides%20%3E%20slide%20%3E%20article%3Aonly%2Dchild%20%3E%20iframe%20%7B%0Aheight%3A%2095%25%3B%0A%7D%0A%0Aslides%2Elayout%2Dfaux%2Dwidescreen%20%3E%20slide%20%7B%0Apadding%3A%2040px%20160px%3B%0A%7D%0A%0Aslides%2Elayout%2Dwidescreen%20%3E%20slide%2C%0Aslides%2Elayout%2Dfaux%2Dwidescreen%20%3E%20slide%20%7B%0Amargin%2Dleft%3A%20%2D550px%3B%0Awidth%3A%201100px%3B%0A%7D%0A%0Aslides%2Elayout%2Dwidescreen%20%3E%20slide%2Efar%2Dpast%2C%0Aslides%2Elayout%2Dfaux%2Dwidescreen%20%3E%20slide%2Efar%2Dpast%20%7B%0Adisplay%3A%20block%3B%0Adisplay%3A%20none%3B%0A%2Dwebkit%2Dtransform%3A%20translate%28%2D2260px%29%3B%0A%2Dmoz%2Dtransform%3A%20translate%28%2D2260px%29%3B%0A%2Dms%2Dtransform%3A%20translate%28%2D2260px%29%3B%0A%2Do%2Dtransform%3A%20translate%28%2D2260px%29%3B%0Atransform%3A%20translate%28%2D2260px%29%3B%0A%2Dwebkit%2Dtransform%3A%20translate3d%28%2D2260px%2C%200%2C%200%29%3B%0A%2Dmoz%2Dtransform%3A%20translate3d%28%2D2260px%2C%200%2C%200%29%3B%0A%2Dms%2Dtransform%3A%20translate3d%28%2D2260px%2C%200%2C%200%29%3B%0A%2Do%2Dtransform%3A%20translate3d%28%2D2260px%2C%200%2C%200%29%3B%0Atransform%3A%20translate3d%28%2D2260px%2C%200%2C%200%29%3B%0A%7D%0A%0Aslides%2Elayout%2Dwidescreen%20%3E%20slide%2Epast%2C%0Aslides%2Elayout%2Dfaux%2Dwidescreen%20%3E%20slide%2Epast%20%7B%0Adisplay%3A%20block%3B%0Aopacity%3A%200%3B%0A%7D%0A%0Aslides%2Elayout%2Dwidescreen%20%3E%20slide%2Ecurrent%2C%0Aslides%2Elayout%2Dfaux%2Dwidescreen%20%3E%20slide%2Ecurrent%20%7B%0Adisplay%3A%20block%3B%0Aopacity%3A%201%3B%0A%7D%0A%0Aslides%2Elayout%2Dwidescreen%20%3E%20slide%2Enext%2C%0Aslides%2Elayout%2Dfaux%2Dwidescreen%20%3E%20slide%2Enext%20%7B%0Adisplay%3A%20block%3B%0Aopacity%3A%200%3B%0Apointer%2Devents%3A%20none%3B%0A%7D%0A%0Aslides%2Elayout%2Dwidescreen%20%3E%20slide%2Efar%2Dnext%2C%0Aslides%2Elayout%2Dfaux%2Dwidescreen%20%3E%20slide%2Efar%2Dnext%20%7B%0Adisplay%3A%20block%3B%0Adisplay%3A%20none%3B%0A%2Dwebkit%2Dtransform%3A%20translate%282260px%29%3B%0A%2Dmoz%2Dtransform%3A%20translate%282260px%29%3B%0A%2Dms%2Dtransform%3A%20translate%282260px%29%3B%0A%2Do%2Dtransform%3A%20translate%282260px%29%3B%0Atransform%3A%20translate%282260px%29%3B%0A%2Dwebkit%2Dtransform%3A%20translate3d%282260px%2C%200%2C%200%29%3B%0A%2Dmoz%2Dtransform%3A%20translate3d%282260px%2C%200%2C%200%29%3B%0A%2Dms%2Dtransform%3A%20translate3d%282260px%2C%200%2C%200%29%3B%0A%2Do%2Dtransform%3A%20translate3d%282260px%2C%200%2C%200%29%3B%0Atransform%3A%20translate3d%282260px%2C%200%2C%200%29%3B%0A%7D%0A%0Aslides%2Elayout%2Dwidescreen%20%23prev%2Dslide%2Darea%2C%0Aslides%2Elayout%2Dfaux%2Dwidescreen%20%23prev%2Dslide%2Darea%20%7B%0Amargin%2Dleft%3A%20%2D650px%3B%0A%7D%0A%0Aslides%2Elayout%2Dwidescreen%20%23next%2Dslide%2Darea%2C%0Aslides%2Elayout%2Dfaux%2Dwidescreen%20%23next%2Dslide%2Darea%20%7B%0Amargin%2Dleft%3A%20550px%3B%0A%7D%0A%0Ab%20%7B%0Afont%2Dweight%3A%20600%3B%0A%7D%0A%0Aa%20%7B%0Acolor%3A%20%232a7cdf%3B%0Atext%2Ddecoration%3A%20none%3B%0Aborder%2Dbottom%3A%201px%20solid%20rgba%2842%2C%20124%2C%20223%2C%200%2E5%29%3B%0A%7D%0A%0Aa%3Ahover%20%7B%0Acolor%3A%20black%20%21important%3B%0A%7D%0A%0Ah1%2C%20h2%2C%20h3%20%7B%0Afont%2Dweight%3A%20600%3B%0A%7D%0A%0Ah2%20%7B%0Afont%2Dsize%3A%2045px%3B%0Aline%2Dheight%3A%2065px%3B%0Aletter%2Dspacing%3A%20%2D2px%3B%0Acolor%3A%20%23515151%3B%0A%7D%0A%0Ah3%20%7B%0Afont%2Dsize%3A%2030px%3B%0Aletter%2Dspacing%3A%20%2D1px%3B%0Aline%2Dheight%3A%202%3B%0Afont%2Dweight%3A%20inherit%3B%0Acolor%3A%20%23797979%3B%0A%7D%0A%0Aol%2C%20ul%20%7B%0Amargin%2Dleft%3A%201%2E2em%3B%0Amargin%2Dbottom%3A%201em%3B%0Aposition%3A%20relative%3B%0A%7D%0Aol%20%7B%0Amargin%2Dleft%3A%201%2E4em%3B%0A%7D%0A%0Aol%20li%2C%0Aul%20li%20%7B%0Amargin%2Dbottom%3A%200%2E5em%3B%0A%7D%0A%0Aul%20li%20ul%20%7B%0Amargin%2Dleft%3A%202em%3B%0Amargin%2Dbottom%3A%200%3B%0A%7D%0A%0Aul%20li%20ul%20li%3Abefore%20%7B%0Acontent%3A%20%27%2D%27%3B%0Afont%2Dweight%3A%20600%3B%0A%7D%0A%0Aul%20%3E%20li%3Abefore%20%7B%0Acontent%3A%20%27%5C00B7%27%3B%0Amargin%2Dleft%3A%20%2D1em%3B%0Aposition%3A%20absolute%3B%0Afont%2Dweight%3A%20600%3B%0A%7D%0A%0Aul%20ul%2C%0Aol%20ul%20%7B%0Amargin%2Dtop%3A%20%2E5em%3B%0A%7D%0Aol%20ul%2C%0Aol%20ol%20%7B%0Amargin%2Dtop%3A%20%2E5em%3B%0A%7D%0A%0A%2Ehighlight%2Dcode%20slide%2Ecurrent%20pre%20%3E%20%2A%20%7B%0Aopacity%3A%200%2E25%3B%0A%2Dwebkit%2Dtransition%3A%20opacity%200%2E5s%20ease%2Din%3B%0A%2Dmoz%2Dtransition%3A%20opacity%200%2E5s%20ease%2Din%3B%0A%2Do%2Dtransition%3A%20opacity%200%2E5s%20ease%2Din%3B%0Atransition%3A%20opacity%200%2E5s%20ease%2Din%3B%0A%7D%0A%0A%2Ehighlight%2Dcode%20slide%2Ecurrent%20b%20%7B%0Aopacity%3A%201%3B%0A%7D%0A%0Apre%20%7B%0Afont%2Dfamily%3A%20%27Source%20Code%20Pro%27%2C%20%27Courier%20New%27%2C%20monospace%3B%0Afont%2Dsize%3A%2020px%3B%0Aline%2Dheight%3A%2028px%3B%0Apadding%3A%2010px%200%2010px%2060px%3B%0Aletter%2Dspacing%3A%20%2D1px%3B%0Amargin%2Dbottom%3A%2020px%3B%0Awidth%3A%20106%25%3B%0Aleft%3A%20%2D60px%3B%0Aposition%3A%20relative%3B%0A%2Dwebkit%2Dbox%2Dsizing%3A%20border%2Dbox%3B%0A%2Dmoz%2Dbox%2Dsizing%3A%20border%2Dbox%3B%0Abox%2Dsizing%3A%20border%2Dbox%3B%0A%0A%7D%0A%2Eprettyprint%20%7B%0Abackground%2Dcolor%3A%20%23e6e6e6%3B%0A%7D%0A%0Apre%5Bdata%2Dlang%5D%3Aafter%20%7B%0Acontent%3A%20attr%28data%2Dlang%29%3B%0Abackground%2Dcolor%3A%20darkgrey%3B%0Aright%3A%200%3B%0Atop%3A%200%3B%0Aposition%3A%20absolute%3B%0Afont%2Dsize%3A%2016pt%3B%0Acolor%3A%20white%3B%0Apadding%3A%202px%2025px%3B%0Atext%2Dtransform%3A%20uppercase%3B%0A%7D%0A%0Apre%5Bdata%2Dlang%3D%22go%22%5D%20%7B%0Acolor%3A%20%23333%3B%0A%7D%0A%0Acode%20%7B%0Afont%2Dsize%3A%2095%25%3B%0Afont%2Dfamily%3A%20%27Source%20Code%20Pro%27%2C%20%27Courier%20New%27%2C%20monospace%3B%0Acolor%3A%20black%3B%0A%7D%0A%0Aiframe%20%7B%0Awidth%3A%20100%25%3B%0Aheight%3A%20510px%3B%0Abackground%3A%20white%3B%0Aborder%3A%201px%20solid%20%23e6e6e6%3B%0A%2Dwebkit%2Dbox%2Dsizing%3A%20border%2Dbox%3B%0A%2Dmoz%2Dbox%2Dsizing%3A%20border%2Dbox%3B%0Abox%2Dsizing%3A%20border%2Dbox%3B%0A%7D%0A%0Adt%20%7B%0Afont%2Dweight%3A%20bold%3B%0A%7D%0A%0Abutton%20%7B%0Adisplay%3A%20inline%2Dblock%3B%0Abackground%3A%20%2Dwebkit%2Dgradient%28linear%2C%2050%25%200%25%2C%2050%25%20100%25%2C%20color%2Dstop%2840%25%2C%20%23f9f9f9%29%2C%20color%2Dstop%2870%25%2C%20%23e3e3e3%29%29%3B%0Abackground%3A%20%2Dwebkit%2Dlinear%2Dgradient%28%23f9f9f9%2040%25%2C%20%23e3e3e3%2070%25%29%3B%0Abackground%3A%20%2Dmoz%2Dlinear%2Dgradient%28%23f9f9f9%2040%25%2C%20%23e3e3e3%2070%25%29%3B%0Abackground%3A%20%2Do%2Dlinear%2Dgradient%28%23f9f9f9%2040%25%2C%20%23e3e3e3%2070%25%29%3B%0Abackground%3A%20linear%2Dgradient%28%23f9f9f9%2040%25%2C%20%23e3e3e3%2070%25%29%3B%0Aborder%3A%201px%20solid%20darkgrey%3B%0A%2Dwebkit%2Dborder%2Dradius%3A%203px%3B%0A%2Dmoz%2Dborder%2Dradius%3A%203px%3B%0A%2Dms%2Dborder%2Dradius%3A%203px%3B%0A%2Do%2Dborder%2Dradius%3A%203px%3B%0Aborder%2Dradius%3A%203px%3B%0Apadding%3A%205px%208px%3B%0Aoutline%3A%20none%3B%0Awhite%2Dspace%3A%20nowrap%3B%0A%2Dwebkit%2Duser%2Dselect%3A%20none%3B%0A%2Dmoz%2Duser%2Dselect%3A%20none%3B%0Auser%2Dselect%3A%20none%3B%0Acursor%3A%20pointer%3B%0Atext%2Dshadow%3A%201px%201px%20white%3B%0Afont%2Dsize%3A%2010pt%3B%0A%7D%0A%0Abutton%3Anot%28%3Adisabled%29%3Ahover%20%7B%0Aborder%2Dcolor%3A%20%23515151%3B%0A%7D%0A%0Abutton%3Anot%28%3Adisabled%29%3Aactive%20%7B%0Abackground%3A%20%2Dwebkit%2Dgradient%28linear%2C%2050%25%200%25%2C%2050%25%20100%25%2C%20color%2Dstop%2840%25%2C%20%23e3e3e3%29%2C%20color%2Dstop%2870%25%2C%20%23f9f9f9%29%29%3B%0Abackground%3A%20%2Dwebkit%2Dlinear%2Dgradient%28%23e3e3e3%2040%25%2C%20%23f9f9f9%2070%25%29%3B%0Abackground%3A%20%2Dmoz%2Dlinear%2Dgradient%28%23e3e3e3%2040%25%2C%20%23f9f9f9%2070%25%29%3B%0Abackground%3A%20%2Do%2Dlinear%2Dgradient%28%23e3e3e3%2040%25%2C%20%23f9f9f9%2070%25%29%3B%0Abackground%3A%20linear%2Dgradient%28%23e3e3e3%2040%25%2C%20%23f9f9f9%2070%25%29%3B%0A%7D%0A%0A%3Adisabled%20%7B%0Acolor%3A%20darkgrey%3B%0A%7D%0A%0A%2Eblue%20%7B%0Acolor%3A%20%234387fd%3B%0A%7D%0A%0A%2Eblue2%20%7B%0Acolor%3A%20%233c8ef3%3B%0A%7D%0A%0A%2Eblue3%20%7B%0Acolor%3A%20%232a7cdf%3B%0A%7D%0A%0A%2Eyellow%20%7B%0Acolor%3A%20%23ffd14d%3B%0A%7D%0A%0A%2Eyellow2%20%7B%0Acolor%3A%20%23f9cc46%3B%0A%7D%0A%0A%2Eyellow3%20%7B%0Acolor%3A%20%23f6c000%3B%0A%7D%0A%0A%2Egreen%20%7B%0Acolor%3A%20%230da861%3B%0A%7D%0A%0A%2Egreen2%20%7B%0Acolor%3A%20%2300a86d%3B%0A%7D%0A%0A%2Egreen3%20%7B%0Acolor%3A%20%23009f5d%3B%0A%7D%0A%0A%2Ered%20%7B%0Acolor%3A%20%23f44a3f%3B%0A%7D%0A%0A%2Ered2%20%7B%0Acolor%3A%20%23e0543e%3B%0A%7D%0A%0A%2Ered3%20%7B%0Acolor%3A%20%23d94d3a%3B%0A%7D%0A%0A%2Egray%20%7B%0Acolor%3A%20%23e6e6e6%3B%0A%7D%0A%0A%2Egray2%20%7B%0Acolor%3A%20darkgrey%3B%0A%7D%0A%0A%2Egray3%20%7B%0Acolor%3A%20%23797979%3B%0A%7D%0A%0A%2Egray4%20%7B%0Acolor%3A%20%23515151%3B%0A%7D%0A%0A%2Ewhite%20%7B%0Acolor%3A%20white%20%21important%3B%0A%7D%0A%0A%2Eblack%20%7B%0Acolor%3A%20black%20%21important%3B%0A%7D%0A%0A%2Ecolumns%2D2%20%7B%0A%2Dwebkit%2Dcolumn%2Dcount%3A%202%3B%0A%2Dmoz%2Dcolumn%2Dcount%3A%202%3B%0A%2Dms%2Dcolumn%2Dcount%3A%202%3B%0A%2Do%2Dcolumn%2Dcount%3A%202%3B%0Acolumn%2Dcount%3A%202%3B%0A%7D%0A%0A%2Ecolumns%2D2%20ul%2C%20%2Ecolumns%2D2%20ol%20%7B%0A%2Dwebkit%2Dtransform%3A%20translate3d%280%2C%200%2C%200%29%3B%0A%7D%0A%0Atable%2Ermdtable%20%7B%0Awidth%3A%20100%25%3B%0Aborder%2Dcollapse%3A%20%2Dmoz%2Dinitial%3B%0Aborder%2Dcollapse%3A%20initial%3B%0Aborder%2Dspacing%3A%202px%3B%0Aborder%2Dbottom%3A%201px%20solid%20%23797979%3B%0A%7D%0A%0Atable%2Ermdtable%20tr%20%3E%20td%3Afirst%2Dchild%2C%20table%20th%20%7B%0Afont%2Dweight%3A%20600%3B%0Acolor%3A%20%23515151%3B%0A%7D%0A%0Atable%2Ermdtable%20tr%3Anth%2Dchild%28odd%29%20%7B%0Abackground%2Dcolor%3A%20%23e6e6e6%3B%0A%7D%0A%0Atable%2Ermdtable%20th%20%7B%0Acolor%3A%20white%3B%0Afont%2Dsize%3A%2018px%3B%0Abackground%3A%20%2Dwebkit%2Dgradient%28linear%2C%2050%25%200%25%2C%2050%25%20100%25%2C%20color%2Dstop%2840%25%2C%20%234387fd%29%2C%20color%2Dstop%2880%25%2C%20%232a7cdf%29%29%20no%2Drepeat%3B%0Abackground%3A%20%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%234387fd%2040%25%2C%20%232a7cdf%2080%25%29%20no%2Drepeat%3B%0Abackground%3A%20%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%234387fd%2040%25%2C%20%232a7cdf%2080%25%29%20no%2Drepeat%3B%0Abackground%3A%20%2Do%2Dlinear%2Dgradient%28top%2C%20%234387fd%2040%25%2C%20%232a7cdf%2080%25%29%20no%2Drepeat%3B%0Abackground%3A%20linear%2Dgradient%28top%2C%20%234387fd%2040%25%2C%20%232a7cdf%2080%25%29%20no%2Drepeat%3B%0A%7D%0A%0Atable%2Ermdtable%20td%2C%20table%20th%20%7B%0Afont%2Dsize%3A%2018px%3B%0Apadding%3A%201em%200%2E5em%3B%0A%7D%0A%0Atable%2Ermdtable%20td%2Ehighlight%20%7B%0Acolor%3A%20%23515151%3B%0Abackground%3A%20%2Dwebkit%2Dgradient%28linear%2C%2050%25%200%25%2C%2050%25%20100%25%2C%20color%2Dstop%2840%25%2C%20%23ffd14d%29%2C%20color%2Dstop%2880%25%2C%20%23f6c000%29%29%20no%2Drepeat%3B%0Abackground%3A%20%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%23ffd14d%2040%25%2C%20%23f6c000%2080%25%29%20no%2Drepeat%3B%0Abackground%3A%20%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%23ffd14d%2040%25%2C%20%23f6c000%2080%25%29%20no%2Drepeat%3B%0Abackground%3A%20%2Do%2Dlinear%2Dgradient%28top%2C%20%23ffd14d%2040%25%2C%20%23f6c000%2080%25%29%20no%2Drepeat%3B%0Abackground%3A%20linear%2Dgradient%28top%2C%20%23ffd14d%2040%25%2C%20%23f6c000%2080%25%29%20no%2Drepeat%3B%0A%7D%0A%0Atable%2Ermdtable%2Erows%20%7B%0Aborder%2Dbottom%3A%20none%3B%0Aborder%2Dright%3A%201px%20solid%20%23797979%3B%0A%7D%0A%0Aq%20%7B%0Afont%2Dsize%3A%2045px%3B%0Aline%2Dheight%3A%2072px%3B%0A%7D%0A%0Aq%3Abefore%20%7B%0Acontent%3A%20%27%5C201C%27%3B%0Aposition%3A%20absolute%3B%0Amargin%2Dleft%3A%20%2D0%2E5em%3B%0A%7D%0A%0Aq%3Aafter%20%7B%0Acontent%3A%20%27%5C201D%27%3B%0Aposition%3A%20absolute%3B%0Amargin%2Dleft%3A%200%2E1em%3B%0A%7D%0A%0Aslide%2Efill%20%7B%0Abackground%2Drepeat%3A%20no%2Drepeat%3B%0A%2Dwebkit%2Dborder%2Dradius%3A%205px%3B%0A%2Dmoz%2Dborder%2Dradius%3A%205px%3B%0A%2Dms%2Dborder%2Dradius%3A%205px%3B%0A%2Do%2Dborder%2Dradius%3A%205px%3B%0Aborder%2Dradius%3A%205px%3B%0A%2Dwebkit%2Dbackground%2Dsize%3A%20cover%3B%0A%2Dmoz%2Dbackground%2Dsize%3A%20cover%3B%0A%2Do%2Dbackground%2Dsize%3A%20cover%3B%0Abackground%2Dsize%3A%20cover%3B%0A%7D%0A%0A%0Aarticle%2Esmaller%20p%2C%20article%2Esmaller%20ul%2C%20article%2Esmaller%20ol%20%7B%0Afont%2Dsize%3A%2020px%3B%0Aline%2Dheight%3A%2024px%3B%0Aletter%2Dspacing%3A%200%3B%0A%7D%0A%0Aarticle%2Esmaller%20table%20td%2C%20article%2Esmaller%20table%20th%20%7B%0Afont%2Dsize%3A%2014px%3B%0A%7D%0A%0Aarticle%2Esmaller%20pre%20%7B%0Afont%2Dsize%3A%2015px%3B%0Aline%2Dheight%3A%2020px%3B%0Aletter%2Dspacing%3A%200%3B%0A%7D%0A%0Aarticle%2Esmaller%20q%20%7B%0Afont%2Dsize%3A%2040px%3B%0Aline%2Dheight%3A%2048px%3B%0A%7D%0A%0Aarticle%2Esmaller%20q%3Abefore%2C%20article%2Esmaller%20q%3Aafter%20%7B%0Afont%2Dsize%3A%2060px%3B%0A%7D%0A%0A%0A%2Ebuild%20%3E%20%2A%20%7B%0A%2Dwebkit%2Dtransition%3A%20opacity%200%2E5s%20ease%2Din%2Dout%3B%0A%2Dwebkit%2Dtransition%2Ddelay%3A%200%2E2s%3B%0A%2Dmoz%2Dtransition%3A%20opacity%200%2E5s%20ease%2Din%2Dout%200%2E2s%3B%0A%2Do%2Dtransition%3A%20opacity%200%2E5s%20ease%2Din%2Dout%200%2E2s%3B%0Atransition%3A%20opacity%200%2E5s%20ease%2Din%2Dout%200%2E2s%3B%0A%7D%0A%0A%2Ebuild%20%2Eto%2Dbuild%20%7B%0Aopacity%3A%200%3B%0A%7D%0A%0A%2Ebuild%20%2Ebuild%2Dfade%20%7B%0Aopacity%3A%200%2E3%3B%0A%7D%0A%0A%2Ebuild%20%2Ebuild%2Dfade%3Ahover%20%7B%0Aopacity%3A%201%2E0%3B%0A%7D%0A%0A%2Epopup%20%2Enext%20%2Ebuild%20%2Eto%2Dbuild%20%7B%0Aopacity%3A%201%3B%0A%7D%0A%0A%2Epopup%20%2Enext%20%2Ebuild%20%2Ebuild%2Dfade%20%7B%0Aopacity%3A%201%3B%0A%7D%0A%0A%0A%2Eprettyprint%20%2Estr%2C%0A%2Eprettyprint%20%2Eatv%20%7B%0A%0Acolor%3A%20%23009f5d%3B%0A%7D%0A%0A%2Eprettyprint%20%2Ekwd%2C%0A%2Eprettyprint%20%2Etag%20%7B%0A%0Acolor%3A%20%230066cc%3B%0A%7D%0A%0A%2Eprettyprint%20%2Ecom%20%7B%0A%0Acolor%3A%20%23797979%3B%0Afont%2Dstyle%3A%20italic%3B%0A%7D%0A%0A%2Eprettyprint%20%2Elit%20%7B%0A%0Acolor%3A%20%237f0000%3B%0A%7D%0A%0A%2Eprettyprint%20%2Epun%2C%0A%2Eprettyprint%20%2Eopn%2C%0A%2Eprettyprint%20%2Eclo%20%7B%0Acolor%3A%20%23515151%3B%0A%7D%0A%0A%2Eprettyprint%20%2Etyp%2C%0A%2Eprettyprint%20%2Eatn%2C%0A%2Eprettyprint%20%2Edec%2C%0A%2Eprettyprint%20%2Evar%20%7B%0A%0Acolor%3A%20%23d94d3a%3B%0A%7D%0A%0A%2Eprettyprint%20%2Epln%20%7B%0Acolor%3A%20%23515151%3B%0A%7D%0A%0A%2Enote%20%7B%0Aposition%3A%20absolute%3B%0Az%2Dindex%3A%20100%3B%0Awidth%3A%20100%25%3B%0Aheight%3A%20100%25%3B%0Atop%3A%200%3B%0Aleft%3A%200%3B%0Apadding%3A%201em%3B%0Abackground%3A%20rgba%280%2C%200%2C%200%2C%200%2E3%29%3B%0Aopacity%3A%200%3B%0Apointer%2Devents%3A%20none%3B%0Adisplay%3A%20%2Dwebkit%2Dbox%20%21important%3B%0Adisplay%3A%20%2Dmoz%2Dbox%20%21important%3B%0Adisplay%3A%20%2Dms%2Dbox%20%21important%3B%0Adisplay%3A%20%2Do%2Dbox%20%21important%3B%0Adisplay%3A%20box%20%21important%3B%0A%2Dwebkit%2Dbox%2Dorient%3A%20vertical%3B%0A%2Dmoz%2Dbox%2Dorient%3A%20vertical%3B%0A%2Dms%2Dbox%2Dorient%3A%20vertical%3B%0Abox%2Dorient%3A%20vertical%3B%0A%2Dwebkit%2Dbox%2Dalign%3A%20center%3B%0A%2Dmoz%2Dbox%2Dalign%3A%20center%3B%0A%2Dms%2Dbox%2Dalign%3A%20center%3B%0Abox%2Dalign%3A%20center%3B%0A%2Dwebkit%2Dbox%2Dpack%3A%20center%3B%0A%2Dmoz%2Dbox%2Dpack%3A%20center%3B%0A%2Dms%2Dbox%2Dpack%3A%20center%3B%0Abox%2Dpack%3A%20center%3B%0A%2Dwebkit%2Dborder%2Dradius%3A%205px%3B%0A%2Dmoz%2Dborder%2Dradius%3A%205px%3B%0A%2Dms%2Dborder%2Dradius%3A%205px%3B%0A%2Do%2Dborder%2Dradius%3A%205px%3B%0Aborder%2Dradius%3A%205px%3B%0A%2Dwebkit%2Dbox%2Dsizing%3A%20border%2Dbox%3B%0A%2Dmoz%2Dbox%2Dsizing%3A%20border%2Dbox%3B%0Abox%2Dsizing%3A%20border%2Dbox%3B%0A%2Dwebkit%2Dtransform%3A%20translateY%28350px%29%3B%0A%2Dmoz%2Dtransform%3A%20translateY%28350px%29%3B%0A%2Dms%2Dtransform%3A%20translateY%28350px%29%3B%0A%2Do%2Dtransform%3A%20translateY%28350px%29%3B%0Atransform%3A%20translateY%28350px%29%3B%0A%2Dwebkit%2Dtransition%3A%20all%200%2E4s%20ease%2Din%2Dout%3B%0A%2Dmoz%2Dtransition%3A%20all%200%2E4s%20ease%2Din%2Dout%3B%0A%2Do%2Dtransition%3A%20all%200%2E4s%20ease%2Din%2Dout%3B%0Atransition%3A%20all%200%2E4s%20ease%2Din%2Dout%3B%0A%7D%0A%0A%2Enote%20%3E%20section%20%7B%0Abackground%3A%20%23fff%3B%0A%2Dwebkit%2Dborder%2Dradius%3A%205px%3B%0A%2Dmoz%2Dborder%2Dradius%3A%205px%3B%0A%2Dms%2Dborder%2Dradius%3A%205px%3B%0A%2Do%2Dborder%2Dradius%3A%205px%3B%0Aborder%2Dradius%3A%205px%3B%0A%2Dwebkit%2Dbox%2Dshadow%3A%200%200%2010px%20%23797979%3B%0A%2Dmoz%2Dbox%2Dshadow%3A%200%200%2010px%20%23797979%3B%0Abox%2Dshadow%3A%200%200%2010px%20%23797979%3B%0Awidth%3A%2060%25%3B%0Apadding%3A%202em%3B%0A%7D%0A%0A%2Ewith%2Dnotes%2Epopup%20slides%2Elayout%2Dwidescreen%20slide%2Enext%2C%0A%2Ewith%2Dnotes%2Epopup%20slides%2Elayout%2Dfaux%2Dwidescreen%20slide%2Enext%20%7B%0A%2Dwebkit%2Dtransform%3A%20translate3d%28690px%2C%2080px%2C%200%29%20scale%280%2E35%29%3B%0A%2Dmoz%2Dtransform%3A%20translate3d%28690px%2C%2080px%2C%200%29%20scale%280%2E35%29%3B%0A%2Dms%2Dtransform%3A%20translate3d%28690px%2C%2080px%2C%200%29%20scale%280%2E35%29%3B%0A%2Do%2Dtransform%3A%20translate3d%28690px%2C%2080px%2C%200%29%20scale%280%2E35%29%3B%0Atransform%3A%20translate3d%28690px%2C%2080px%2C%200%29%20scale%280%2E35%29%3B%0A%7D%0A%0A%2Ewith%2Dnotes%2Epopup%20slides%2Elayout%2Dwidescreen%20slide%20%2Enote%2C%0A%2Ewith%2Dnotes%2Epopup%20slides%2Elayout%2Dfaux%2Dwidescreen%20slide%20%2Enote%20%7B%0A%2Dwebkit%2Dtransform%3A%20translate3d%28300px%2C%20800px%2C%200%29%20scale%281%2E5%29%3B%0A%2Dmoz%2Dtransform%3A%20translate3d%28300px%2C%20800px%2C%200%29%20scale%281%2E5%29%3B%0A%2Dms%2Dtransform%3A%20translate3d%28300px%2C%20800px%2C%200%29%20scale%281%2E5%29%3B%0A%2Do%2Dtransform%3A%20translate3d%28300px%2C%20800px%2C%200%29%20scale%281%2E5%29%3B%0Atransform%3A%20translate3d%28300px%2C%20800px%2C%200%29%20scale%281%2E5%29%3B%0A%7D%0A%0A%2Ewith%2Dnotes%2Epopup%20slide%20%7B%0Aoverflow%3A%20visible%3B%0Abackground%3A%20white%3B%0A%2Dwebkit%2Dtransition%3A%20none%3B%0A%2Dmoz%2Dtransition%3A%20none%3B%0A%2Do%2Dtransition%3A%20none%3B%0Atransition%3A%20none%3B%0Apointer%2Devents%3A%20none%3B%0A%2Dwebkit%2Dtransform%2Dorigin%3A%200%200%3B%0A%2Dmoz%2Dtransform%2Dorigin%3A%200%200%3B%0A%2Dms%2Dtransform%2Dorigin%3A%200%200%3B%0A%2Do%2Dtransform%2Dorigin%3A%200%200%3B%0Atransform%2Dorigin%3A%200%200%3B%0A%7D%0A%0A%2Ewith%2Dnotes%2Epopup%20slide%3Anot%28%2Ebackdrop%29%20%7B%0A%2Dwebkit%2Dtransform%3A%20scale%280%2E6%29%20translate3d%280%2E5em%2C%200%2E5em%2C%200%29%3B%0A%2Dmoz%2Dtransform%3A%20scale%280%2E6%29%20translate3d%280%2E5em%2C%200%2E5em%2C%200%29%3B%0A%2Dms%2Dtransform%3A%20scale%280%2E6%29%20translate3d%280%2E5em%2C%200%2E5em%2C%200%29%3B%0A%2Do%2Dtransform%3A%20scale%280%2E6%29%20translate3d%280%2E5em%2C%200%2E5em%2C%200%29%3B%0Atransform%3A%20scale%280%2E6%29%20translate3d%280%2E5em%2C%200%2E5em%2C%200%29%3B%0A%2Dwebkit%2Dbox%2Dshadow%3A%200%200%2010px%20%23797979%3B%0A%2Dmoz%2Dbox%2Dshadow%3A%200%200%2010px%20%23797979%3B%0Abox%2Dshadow%3A%200%200%2010px%20%23797979%3B%0A%7D%0A%0A%2Ewith%2Dnotes%2Epopup%20slide%2Ebackdrop%20%7B%0Abackground%2Dimage%3A%20%2Dwebkit%2Dgradient%28radial%2C%2050%25%2050%25%2C%200%2C%2050%25%2050%25%2C%20600%2C%20color%2Dstop%280%25%2C%20%23b1dfff%29%2C%20color%2Dstop%28100%25%2C%20%234387fd%29%29%3B%0Abackground%2Dimage%3A%20%2Dwebkit%2Dradial%2Dgradient%2850%25%2050%25%2C%20%23b1dfff%200%25%2C%20%234387fd%20600px%29%3B%0Abackground%2Dimage%3A%20%2Dmoz%2Dradial%2Dgradient%2850%25%2050%25%2C%20%23b1dfff%200%25%2C%20%234387fd%20600px%29%3B%0Abackground%2Dimage%3A%20%2Do%2Dradial%2Dgradient%2850%25%2050%25%2C%20%23b1dfff%200%25%2C%20%234387fd%20600px%29%3B%0Abackground%2Dimage%3A%20radial%2Dgradient%2850%25%2050%25%2C%20%23b1dfff%200%25%2C%20%234387fd%20600px%29%3B%0A%7D%0A%0A%2Ewith%2Dnotes%2Epopup%20slide%2Enext%20%7B%0A%2Dwebkit%2Dtransform%3A%20translate3d%28570px%2C%2080px%2C%200%29%20scale%280%2E35%29%3B%0A%2Dmoz%2Dtransform%3A%20translate3d%28570px%2C%2080px%2C%200%29%20scale%280%2E35%29%3B%0A%2Dms%2Dtransform%3A%20translate3d%28570px%2C%2080px%2C%200%29%20scale%280%2E35%29%3B%0A%2Do%2Dtransform%3A%20translate3d%28570px%2C%2080px%2C%200%29%20scale%280%2E35%29%3B%0Atransform%3A%20translate3d%28570px%2C%2080px%2C%200%29%20scale%280%2E35%29%3B%0Aopacity%3A%201%20%21important%3B%0A%7D%0A%0A%2Ewith%2Dnotes%2Epopup%20slide%2Enext%20%2Enote%20%7B%0Adisplay%3A%20none%20%21important%3B%0A%7D%0A%0A%2Ewith%2Dnotes%2Epopup%20%2Enote%20%7B%0Awidth%3A%20109%25%3B%0Aheight%3A%20260px%3B%0Abackground%3A%20%23e6e6e6%3B%0Apadding%3A%200%3B%0A%2Dwebkit%2Dbox%2Dshadow%3A%200%200%2010px%20%23797979%3B%0A%2Dmoz%2Dbox%2Dshadow%3A%200%200%2010px%20%23797979%3B%0Abox%2Dshadow%3A%200%200%2010px%20%23797979%3B%0A%2Dwebkit%2Dtransform%3A%20translate3d%28250px%2C%20800px%2C%200%29%20scale%281%2E5%29%3B%0A%2Dmoz%2Dtransform%3A%20translate3d%28250px%2C%20800px%2C%200%29%20scale%281%2E5%29%3B%0A%2Dms%2Dtransform%3A%20translate3d%28250px%2C%20800px%2C%200%29%20scale%281%2E5%29%3B%0A%2Do%2Dtransform%3A%20translate3d%28250px%2C%20800px%2C%200%29%20scale%281%2E5%29%3B%0Atransform%3A%20translate3d%28250px%2C%20800px%2C%200%29%20scale%281%2E5%29%3B%0A%2Dwebkit%2Dtransition%3A%20opacity%20400ms%20ease%2Din%2Dout%3B%0A%2Dmoz%2Dtransition%3A%20opacity%20400ms%20ease%2Din%2Dout%3B%0A%2Do%2Dtransition%3A%20opacity%20400ms%20ease%2Din%2Dout%3B%0Atransition%3A%20opacity%20400ms%20ease%2Din%2Dout%3B%0A%7D%0A%0A%2Ewith%2Dnotes%2Epopup%20%2Enote%20%3E%20section%20%7B%0Abackground%3A%20%23fff%3B%0A%2Dwebkit%2Dborder%2Dradius%3A%205px%3B%0A%2Dmoz%2Dborder%2Dradius%3A%205px%3B%0A%2Dms%2Dborder%2Dradius%3A%205px%3B%0A%2Do%2Dborder%2Dradius%3A%205px%3B%0Aborder%2Dradius%3A%205px%3B%0Aheight%3A%20100%25%3B%0Awidth%3A%20100%25%3B%0A%2Dwebkit%2Dbox%2Dsizing%3A%20border%2Dbox%3B%0A%2Dmoz%2Dbox%2Dsizing%3A%20border%2Dbox%3B%0Abox%2Dsizing%3A%20border%2Dbox%3B%0A%2Dwebkit%2Dbox%2Dshadow%3A%20none%3B%0A%2Dmoz%2Dbox%2Dshadow%3A%20none%3B%0Abox%2Dshadow%3A%20none%3B%0Aoverflow%3A%20auto%3B%0Apadding%3A%201em%3B%0A%7D%0A%0A%2Ewith%2Dnotes%20%2Enote%20%7B%0Aopacity%3A%201%3B%0A%2Dwebkit%2Dtransform%3A%20translateY%280%29%3B%0A%2Dmoz%2Dtransform%3A%20translateY%280%29%3B%0A%2Dms%2Dtransform%3A%20translateY%280%29%3B%0A%2Do%2Dtransform%3A%20translateY%280%29%3B%0Atransform%3A%20translateY%280%29%3B%0Apointer%2Devents%3A%20auto%3B%0A%7D%0A%0A%2Esource%20%7B%0Afont%2Dsize%3A%2014px%3B%0Acolor%3A%20darkgrey%3B%0Aposition%3A%20absolute%3B%0Abottom%3A%2070px%3B%0Aleft%3A%2060px%3B%0A%7D%0A%0A%2Ecentered%20%7B%0Atext%2Dalign%3A%20center%3B%0A%7D%0A%0A%2Ereflect%20%7B%0A%2Dwebkit%2Dbox%2Dreflect%3A%20below%203px%20%2Dwebkit%2Dlinear%2Dgradient%28rgba%28255%2C%20255%2C%20255%2C%200%29%2085%25%2C%20white%20150%25%29%3B%0A%2Dmoz%2Dbox%2Dreflect%3A%20below%203px%20%2Dmoz%2Dlinear%2Dgradient%28rgba%28255%2C%20255%2C%20255%2C%200%29%2085%25%2C%20white%20150%25%29%3B%0A%2Do%2Dbox%2Dreflect%3A%20below%203px%20%2Do%2Dlinear%2Dgradient%28rgba%28255%2C%20255%2C%20255%2C%200%29%2085%25%2C%20white%20150%25%29%3B%0A%2Dms%2Dbox%2Dreflect%3A%20below%203px%20%2Dms%2Dlinear%2Dgradient%28rgba%28255%2C%20255%2C%20255%2C%200%29%2085%25%2C%20white%20150%25%29%3B%0Abox%2Dreflect%3A%20below%203px%20linear%2Dgradient%28rgba%28255%2C%20255%2C%20255%2C%200%29%2085%25%2C%20%23ffffff%20150%25%29%3B%0A%7D%0A%0A%2Eflexbox%20%7B%0Adisplay%3A%20%2Dwebkit%2Dbox%20%21important%3B%0Adisplay%3A%20%2Dmoz%2Dbox%20%21important%3B%0Adisplay%3A%20%2Dms%2Dbox%20%21important%3B%0Adisplay%3A%20%2Do%2Dbox%20%21important%3B%0Adisplay%3A%20box%20%21important%3B%0A%7D%0A%0A%2Eflexbox%2Evcenter%20%7B%0A%2Dwebkit%2Dbox%2Dorient%3A%20vertical%3B%0A%2Dmoz%2Dbox%2Dorient%3A%20vertical%3B%0A%2Dms%2Dbox%2Dorient%3A%20vertical%3B%0Abox%2Dorient%3A%20vertical%3B%0A%2Dwebkit%2Dbox%2Dalign%3A%20center%3B%0A%2Dmoz%2Dbox%2Dalign%3A%20center%3B%0A%2Dms%2Dbox%2Dalign%3A%20center%3B%0Abox%2Dalign%3A%20center%3B%0A%2Dwebkit%2Dbox%2Dpack%3A%20center%3B%0A%2Dmoz%2Dbox%2Dpack%3A%20center%3B%0A%2Dms%2Dbox%2Dpack%3A%20center%3B%0Abox%2Dpack%3A%20center%3B%0Aheight%3A%20100%25%3B%0Awidth%3A%20100%25%3B%0A%7D%0A%0A%2Eflexbox%2Evleft%20%7B%0A%2Dwebkit%2Dbox%2Dorient%3A%20vertical%3B%0A%2Dmoz%2Dbox%2Dorient%3A%20vertical%3B%0A%2Dms%2Dbox%2Dorient%3A%20vertical%3B%0Abox%2Dorient%3A%20vertical%3B%0A%2Dwebkit%2Dbox%2Dalign%3A%20left%3B%0A%2Dmoz%2Dbox%2Dalign%3A%20left%3B%0A%2Dms%2Dbox%2Dalign%3A%20left%3B%0Abox%2Dalign%3A%20left%3B%0A%2Dwebkit%2Dbox%2Dpack%3A%20center%3B%0A%2Dmoz%2Dbox%2Dpack%3A%20center%3B%0A%2Dms%2Dbox%2Dpack%3A%20center%3B%0Abox%2Dpack%3A%20center%3B%0Aheight%3A%20100%25%3B%0Awidth%3A%20100%25%3B%0A%7D%0A%0A%2Eflexbox%2Evright%20%7B%0A%2Dwebkit%2Dbox%2Dorient%3A%20vertical%3B%0A%2Dmoz%2Dbox%2Dorient%3A%20vertical%3B%0A%2Dms%2Dbox%2Dorient%3A%20vertical%3B%0Abox%2Dorient%3A%20vertical%3B%0A%2Dwebkit%2Dbox%2Dalign%3A%20end%3B%0A%2Dmoz%2Dbox%2Dalign%3A%20end%3B%0A%2Dms%2Dbox%2Dalign%3A%20end%3B%0Abox%2Dalign%3A%20end%3B%0A%2Dwebkit%2Dbox%2Dpack%3A%20center%3B%0A%2Dmoz%2Dbox%2Dpack%3A%20center%3B%0A%2Dms%2Dbox%2Dpack%3A%20center%3B%0Abox%2Dpack%3A%20center%3B%0Aheight%3A%20100%25%3B%0Awidth%3A%20100%25%3B%0A%7D%0A%0A%2Eauto%2Dfadein%20%7B%0A%2Dwebkit%2Dtransition%3A%20opacity%200%2E6s%20ease%2Din%3B%0A%2Dwebkit%2Dtransition%2Ddelay%3A%200%2E6s%3B%0A%2Dmoz%2Dtransition%3A%20opacity%200%2E6s%20ease%2Din%200%2E6s%3B%0A%2Do%2Dtransition%3A%20opacity%200%2E6s%20ease%2Din%200%2E6s%3B%0Atransition%3A%20opacity%200%2E6s%20ease%2Din%200%2E6s%3B%0Aopacity%3A%200%3B%0A%7D%0A%0A%0A%2Eslide%2Darea%20%7B%0Az%2Dindex%3A%201000%3B%0Aposition%3A%20absolute%3B%0Aleft%3A%200%3B%0Atop%3A%200%3B%0Awidth%3A%20100px%3B%0Aheight%3A%20700px%3B%0Aleft%3A%2050%25%3B%0Atop%3A%2050%25%3B%0Acursor%3A%20pointer%3B%0Amargin%2Dtop%3A%20%2D350px%3B%0A%7D%0A%0A%23prev%2Dslide%2Darea%20%7B%0Amargin%2Dleft%3A%20%2D550px%3B%0A%7D%0A%0A%23next%2Dslide%2Darea%20%7B%0Amargin%2Dleft%3A%20450px%3B%0A%7D%0A%0A%0A%2Elogoslide%20img%20%7B%0Awidth%3A%20383px%3B%0Aheight%3A%2092px%3B%0A%7D%0A%0A%2Esegue%20%7B%0Apadding%3A%2060px%20120px%3B%0A%7D%0A%0A%2Esegue%20h2%20%7B%0Acolor%3A%20%23e6e6e6%3B%0Afont%2Dsize%3A%2060px%3B%0A%7D%0A%0A%2Esegue%20h3%20%7B%0Acolor%3A%20%23e6e6e6%3B%0Aline%2Dheight%3A%202%2E8%3B%0A%7D%0A%0A%2Esegue%20hgroup%20%7B%0Aposition%3A%20absolute%3B%0Abottom%3A%20225px%3B%0A%7D%0A%0A%2Ethank%2Dyou%2Dslide%20%7B%0Abackground%3A%20%234387fd%20%21important%3B%0Acolor%3A%20white%3B%0A%7D%0A%0A%2Ethank%2Dyou%2Dslide%20h2%20%7B%0Afont%2Dsize%3A%2060px%3B%0Acolor%3A%20inherit%3B%0A%7D%0A%0A%2Ethank%2Dyou%2Dslide%20article%20%3E%20p%20%7B%0Amargin%2Dtop%3A%202em%3B%0Afont%2Dsize%3A%2020pt%3B%0A%7D%0A%0A%2Ethank%2Dyou%2Dslide%20%3E%20p%20%7B%0Aposition%3A%20absolute%3B%0Abottom%3A%2080px%3B%0Afont%2Dsize%3A%2024pt%3B%0Aline%2Dheight%3A%201%2E3%3B%0A%7D%0A%0Aaside%2Egdbar%20%7B%0Aheight%3A%2097px%3B%0Awidth%3A%20215px%3B%0Aposition%3A%20absolute%3B%0Aleft%3A%20%2D1px%3B%0Atop%3A%20125px%3B%0A%2Dwebkit%2Dborder%2Dradius%3A%200%2010px%2010px%200%3B%0A%2Dmoz%2Dborder%2Dradius%3A%200%2010px%2010px%200%3B%0A%2Dms%2Dborder%2Dradius%3A%200%2010px%2010px%200%3B%0A%2Do%2Dborder%2Dradius%3A%200%2010px%2010px%200%3B%0Aborder%2Dradius%3A%200%2010px%2010px%200%3B%0Abackground%3A%20%2Dwebkit%2Dgradient%28linear%2C%200%25%2050%25%2C%20100%25%2050%25%2C%20color%2Dstop%280%25%2C%20%23e6e6e6%29%2C%20color%2Dstop%28100%25%2C%20%23e6e6e6%29%29%20no%2Drepeat%3B%0Abackground%3A%20%2Dwebkit%2Dlinear%2Dgradient%28left%2C%20%23e6e6e6%2C%20%23e6e6e6%29%20no%2Drepeat%3B%0Abackground%3A%20%2Dmoz%2Dlinear%2Dgradient%28left%2C%20%23e6e6e6%2C%20%23e6e6e6%29%20no%2Drepeat%3B%0Abackground%3A%20%2Do%2Dlinear%2Dgradient%28left%2C%20%23e6e6e6%2C%20%23e6e6e6%29%20no%2Drepeat%3B%0Abackground%3A%20linear%2Dgradient%28left%2C%20%23e6e6e6%2C%20%23e6e6e6%29%20no%2Drepeat%3B%0A%2Dwebkit%2Dbackground%2Dsize%3A%200%25%20100%25%3B%0A%2Dmoz%2Dbackground%2Dsize%3A%200%25%20100%25%3B%0A%2Do%2Dbackground%2Dsize%3A%200%25%20100%25%3B%0Abackground%2Dsize%3A%200%25%20100%25%3B%0A%2Dwebkit%2Dtransition%3A%20all%200%2E5s%20ease%2Dout%3B%0A%2Dwebkit%2Dtransition%2Ddelay%3A%200%2E5s%3B%0A%2Dmoz%2Dtransition%3A%20all%200%2E5s%20ease%2Dout%200%2E5s%3B%0A%2Do%2Dtransition%3A%20all%200%2E5s%20ease%2Dout%200%2E5s%3B%0Atransition%3A%20all%200%2E5s%20ease%2Dout%200%2E5s%3B%0A%0A%7D%0A%0Aaside%2Egdbar%2Eright%20%7B%0Aright%3A%200%3B%0Aleft%3A%20%2Dmoz%2Dinitial%3B%0Aleft%3A%20initial%3B%0Atop%3A%20254px%3B%0A%0A%2Dwebkit%2Dtransform%3A%20rotateZ%28180deg%29%3B%0A%2Dmoz%2Dtransform%3A%20rotateZ%28180deg%29%3B%0A%2Dms%2Dtransform%3A%20rotateZ%28180deg%29%3B%0A%2Do%2Dtransform%3A%20rotateZ%28180deg%29%3B%0Atransform%3A%20rotateZ%28180deg%29%3B%0A%7D%0A%0Aaside%2Egdbar%2Eright%20img%20%7B%0A%2Dwebkit%2Dtransform%3A%20rotateZ%28180deg%29%3B%0A%2Dmoz%2Dtransform%3A%20rotateZ%28180deg%29%3B%0A%2Dms%2Dtransform%3A%20rotateZ%28180deg%29%3B%0A%2Do%2Dtransform%3A%20rotateZ%28180deg%29%3B%0Atransform%3A%20rotateZ%28180deg%29%3B%0A%7D%0A%0Aaside%2Egdbar%2Ebottom%20%7B%0Atop%3A%20%2Dmoz%2Dinitial%3B%0Atop%3A%20initial%3B%0Abottom%3A%2060px%3B%0A%7D%0A%0Aaside%2Egdbar%20img%20%7B%0Awidth%3A%2085px%3B%0Aheight%3A%2085px%3B%0Aposition%3A%20absolute%3B%0Aright%3A%200%3B%0Amargin%3A%208px%2015px%3B%0A%7D%0A%0A%2Etitle%2Dslide%20hgroup%20%7B%0Abottom%3A%20100px%3B%0A%7D%0A%0A%2Etitle%2Dslide%20hgroup%20h1%20%7B%0Afont%2Dsize%3A%2065px%3B%0Aline%2Dheight%3A%201%2E4%3B%0Aletter%2Dspacing%3A%20%2D3px%3B%0Acolor%3A%20%23515151%3B%0A%7D%0A%0A%2Etitle%2Dslide%20hgroup%20h2%20%7B%0Afont%2Dsize%3A%2034px%3B%0Acolor%3A%20darkgrey%3B%0Afont%2Dweight%3A%20inherit%3B%0A%7D%0A%0A%2Etitle%2Dslide%20hgroup%20p%20%7B%0Afont%2Dsize%3A%2020px%3B%0Acolor%3A%20%23797979%3B%0Aline%2Dheight%3A%201%2E3%3B%0Amargin%2Dtop%3A%202em%3B%0A%7D%0A%0A%2Equote%20%7B%0Acolor%3A%20%23e6e6e6%3B%0A%7D%0A%0A%2Equote%20%2Eauthor%20%7B%0Afont%2Dsize%3A%2024px%3B%0Aposition%3A%20absolute%3B%0Abottom%3A%2080px%3B%0Aline%2Dheight%3A%201%2E4%3B%0A%7D%0A%0A%5Bdata%2Dconfig%2Dcontact%5D%20a%20%7B%0Acolor%3A%20white%3B%0Aborder%2Dbottom%3A%20none%3B%0A%7D%0A%0A%5Bdata%2Dconfig%2Dcontact%5D%20span%20%7B%0Awidth%3A%20115px%3B%0Adisplay%3A%20inline%2Dblock%3B%0A%7D%0A%0A%2Eoverview%2Epopup%20%2Enote%20%7B%0Adisplay%3A%20none%20%21important%3B%0A%7D%0A%0A%2Eoverview%20slides%20slide%20%7B%0Adisplay%3A%20block%3B%0Acursor%3A%20pointer%3B%0Aopacity%3A%200%2E5%3B%0Apointer%2Devents%3A%20auto%20%21important%3B%0Abackground%3A%20%2Dwebkit%2Dgradient%28linear%2C%2050%25%200%25%2C%2050%25%20100%25%2C%20color%2Dstop%280%25%2C%20%23ffffff%29%2C%20color%2Dstop%2885%25%2C%20%23ffffff%29%2C%20color%2Dstop%28100%25%2C%20%23e6e6e6%29%29%3B%0Abackground%3A%20%2Dwebkit%2Dlinear%2Dgradient%28%23ffffff%2C%20%23ffffff%2085%25%2C%20%23e6e6e6%29%3B%0Abackground%3A%20%2Dmoz%2Dlinear%2Dgradient%28%23ffffff%2C%20%23ffffff%2085%25%2C%20%23e6e6e6%29%3B%0Abackground%3A%20%2Do%2Dlinear%2Dgradient%28%23ffffff%2C%20%23ffffff%2085%25%2C%20%23e6e6e6%29%3B%0Abackground%3A%20linear%2Dgradient%28%23ffffff%2C%20%23ffffff%2085%25%2C%20%23e6e6e6%29%3B%0Abackground%2Dcolor%3A%20white%3B%0A%7D%0A%0A%2Eoverview%20slides%20slide%2Ebackdrop%20%7B%0Adisplay%3A%20none%20%21important%3B%0A%7D%0A%0A%2Eoverview%20slides%20slide%2Efar%2Dpast%2C%20%2Eoverview%20slides%20slide%2Epast%2C%20%2Eoverview%20slides%20slide%2Enext%2C%20%2Eoverview%20slides%20slide%2Efar%2Dnext%2C%20%2Eoverview%20slides%20slide%2Efar%2Dpast%20%7B%0Aopacity%3A%200%2E5%3B%0Adisplay%3A%20block%3B%0A%7D%0A%0A%2Eoverview%20slides%20slide%2Ecurrent%20%7B%0Aopacity%3A%201%3B%0A%7D%0A%0A%2Eoverview%20%2Eslide%2Darea%20%7B%0Adisplay%3A%20none%3B%0A%7D%0A%40media%20print%20%7B%0A%0Aslides%20slide%20%7B%0Adisplay%3A%20block%20%21important%3B%0Aposition%3A%20relative%3B%0Abackground%3A%20%2Dwebkit%2Dgradient%28linear%2C%2050%25%200%25%2C%2050%25%20100%25%2C%20color%2Dstop%280%25%2C%20%23ffffff%29%2C%20color%2Dstop%2885%25%2C%20%23ffffff%29%2C%20color%2Dstop%28100%25%2C%20%23e6e6e6%29%29%3B%0Abackground%3A%20%2Dwebkit%2Dlinear%2Dgradient%28%23ffffff%2C%20%23ffffff%2085%25%2C%20%23e6e6e6%29%3B%0Abackground%3A%20%2Dmoz%2Dlinear%2Dgradient%28%23ffffff%2C%20%23ffffff%2085%25%2C%20%23e6e6e6%29%3B%0Abackground%3A%20%2Do%2Dlinear%2Dgradient%28%23ffffff%2C%20%23ffffff%2085%25%2C%20%23e6e6e6%29%3B%0Abackground%3A%20linear%2Dgradient%28%23ffffff%2C%20%23ffffff%2085%25%2C%20%23e6e6e6%29%3B%0Abackground%2Dcolor%3A%20white%3B%0A%2Dwebkit%2Dtransform%3A%20none%20%21important%3B%0A%2Dmoz%2Dtransform%3A%20none%20%21important%3B%0A%2Dms%2Dtransform%3A%20none%20%21important%3B%0A%2Do%2Dtransform%3A%20none%20%21important%3B%0Atransform%3A%20none%20%21important%3B%0Awidth%3A%20100%25%3B%0Aheight%3A%20100%25%3B%0Apage%2Dbreak%2Dafter%3A%20always%3B%0Atop%3A%20auto%20%21important%3B%0Aleft%3A%20auto%20%21important%3B%0Amargin%2Dtop%3A%200%20%21important%3B%0Amargin%2Dleft%3A%200%20%21important%3B%0Aopacity%3A%201%20%21important%3B%0Acolor%3A%20%23555%3B%0A%7D%0A%0Aslides%20slide%2Efar%2Dpast%2C%20slides%20slide%2Epast%2C%20slides%20slide%2Enext%2C%20slides%20slide%2Efar%2Dnext%2C%20slides%20slide%2Efar%2Dpast%2C%20slides%20slide%2Ecurrent%20%7B%0Aopacity%3A%201%20%21important%3B%0Adisplay%3A%20block%20%21important%3B%0A%7D%0A%0Aslides%20slide%20%2Ebuild%20%3E%20%2A%20%7B%0A%2Dwebkit%2Dtransition%3A%20none%3B%0A%2Dmoz%2Dtransition%3A%20none%3B%0A%2Do%2Dtransition%3A%20none%3B%0Atransition%3A%20none%3B%0A%7D%0A%0Aslides%20slide%20%2Ebuild%20%2Eto%2Dbuild%2C%0Aslides%20slide%20%2Ebuild%20%2Ebuild%2Dfade%20%7B%0Aopacity%3A%201%3B%0A%7D%0A%0Aslides%20slide%20%2Eauto%2Dfadein%20%7B%0Aopacity%3A%201%20%21important%3B%0A%7D%0A%0Aslides%20slide%2Ebackdrop%20%7B%0Adisplay%3A%20none%20%21important%3B%0A%7D%0A%0Aslides%20slide%20table%2Erows%20%7B%0Aborder%2Dright%3A%200%3B%0A%7D%0A%0Aslides%20slide%5Bhidden%5D%20%7B%0Adisplay%3A%20none%20%21important%3B%0A%7D%0A%0A%2Eslide%2Darea%20%7B%0Adisplay%3A%20none%3B%0A%7D%0A%0A%2Ereflect%20%7B%0A%2Dwebkit%2Dbox%2Dreflect%3A%20none%3B%0A%2Dmoz%2Dbox%2Dreflect%3A%20none%3B%0A%2Do%2Dbox%2Dreflect%3A%20none%3B%0A%2Dms%2Dbox%2Dreflect%3A%20none%3B%0Abox%2Dreflect%3A%20none%3B%0A%7D%0A%0Apre%2C%20code%20%7B%0Afont%2Dfamily%3A%20monospace%20%21important%3B%0A%7D%0A%7D%0A%0Alabel%20%7B%0Adisplay%3A%20block%3B%0Amargin%2Dbottom%3A%204px%3B%0A%7D%0Alabel%2C%20input%20%7B%0Afont%2Dsize%3A%2016px%3B%0Acolor%3A%20%23333%3B%0A%7D%0Ainput%20%7B%0Awidth%3A%20220px%3B%0A%7D%0A%2Ejslider%20%7B%0Amargin%2Dtop%3A%208px%3B%0A%7D%0A%0A%2EdataTables%5Finfo%2C%20%2EdataTables%5Fpaginate%20%7B%0Afont%2Dsize%3A%2014px%3B%0A%7D%0A" rel="stylesheet" />
<link href="data:text/css;charset=utf-8,%0A%40media%20only%20screen%20and%20%28max%2Ddevice%2Dwidth%3A%20480px%29%20%7B%0Aslides%3Eslide%7B%2Dwebkit%2Dtransition%3Anone%20%21important%3B%2Dwebkit%2Dtransition%3Anone%20%21important%3B%2Dmoz%2Dtransition%3Anone%20%21important%3B%2Do%2Dtransition%3Anone%20%21important%3Btransition%3Anone%20%21important%7D%0A%7D%0A" rel="stylesheet" />
<script src="data:application/x-javascript;base64,LyogTW9kZXJuaXpyIDIuNS4zIChDdXN0b20gQnVpbGQpIHwgTUlUICYgQlNECiAqIEJ1aWxkOiBodHRwOi8vd3d3Lm1vZGVybml6ci5jb20vZG93bmxvYWQvIy1mb250ZmFjZS1iYWNrZ3JvdW5kc2l6ZS1ib3JkZXJpbWFnZS1ib3JkZXJyYWRpdXMtYm94c2hhZG93LWZsZXhib3gtZmxleGJveF9sZWdhY3ktaHNsYS1tdWx0aXBsZWJncy1vcGFjaXR5LXJnYmEtdGV4dHNoYWRvdy1jc3NhbmltYXRpb25zLWNzc2NvbHVtbnMtZ2VuZXJhdGVkY29udGVudC1jc3NncmFkaWVudHMtY3NzcmVmbGVjdGlvbnMtY3NzdHJhbnNmb3Jtcy1jc3N0cmFuc2Zvcm1zM2QtY3NzdHJhbnNpdGlvbnMtYXBwbGljYXRpb25jYWNoZS1jYW52YXMtY2FudmFzdGV4dC1kcmFnYW5kZHJvcC1oYXNoY2hhbmdlLWhpc3RvcnktYXVkaW8tdmlkZW8taW5kZXhlZGRiLWlucHV0LWlucHV0dHlwZXMtbG9jYWxzdG9yYWdlLXBvc3RtZXNzYWdlLXNlc3Npb25zdG9yYWdlLXdlYnNvY2tldHMtd2Vic3FsZGF0YWJhc2Utd2Vid29ya2Vycy1nZW9sb2NhdGlvbi1pbmxpbmVzdmctc21pbC1zdmctc3ZnY2xpcHBhdGhzLXRvdWNoLXdlYmdsLW1xLXByZWZpeGVkLXRlc3RzdHlsZXMtdGVzdHByb3AtdGVzdGFsbHByb3BzLWhhc2V2ZW50LXByZWZpeGVzLWRvbXByZWZpeGVzLWxvYWQKICovCjt3aW5kb3cuTW9kZXJuaXpyPWZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBDKGEpe2kuY3NzVGV4dD1hfWZ1bmN0aW9uIEQoYSxiKXtyZXR1cm4gQyhtLmpvaW4oYSsiOyIpKyhifHwiIikpfWZ1bmN0aW9uIEUoYSxiKXtyZXR1cm4gdHlwZW9mIGE9PT1ifWZ1bmN0aW9uIEYoYSxiKXtyZXR1cm4hIX4oIiIrYSkuaW5kZXhPZihiKX1mdW5jdGlvbiBHKGEsYil7Zm9yKHZhciBkIGluIGEpaWYoaVthW2RdXSE9PWMpcmV0dXJuIGI9PSJwZngiP2FbZF06ITA7cmV0dXJuITF9ZnVuY3Rpb24gSChhLGIsZCl7Zm9yKHZhciBlIGluIGEpe3ZhciBmPWJbYVtlXV07aWYoZiE9PWMpcmV0dXJuIGQ9PT0hMT9hW2VdOkUoZiwiZnVuY3Rpb24iKT9mLmJpbmQoZHx8Yik6Zn1yZXR1cm4hMX1mdW5jdGlvbiBJKGEsYixjKXt2YXIgZD1hLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Euc3Vic3RyKDEpLGU9KGErIiAiK28uam9pbihkKyIgIikrZCkuc3BsaXQoIiAiKTtyZXR1cm4gRShiLCJzdHJpbmciKXx8RShiLCJ1bmRlZmluZWQiKT9HKGUsYik6KGU9KGErIiAiK3Auam9pbihkKyIgIikrZCkuc3BsaXQoIiAiKSxIKGUsYixjKSl9ZnVuY3Rpb24gSygpe2UuaW5wdXQ9ZnVuY3Rpb24oYyl7Zm9yKHZhciBkPTAsZT1jLmxlbmd0aDtkPGU7ZCsrKXRbY1tkXV09Y1tkXWluIGo7cmV0dXJuIHQubGlzdCYmKHQubGlzdD0hIWIuY3JlYXRlRWxlbWVudCgiZGF0YWxpc3QiKSYmISFhLkhUTUxEYXRhTGlzdEVsZW1lbnQpLHR9KCJhdXRvY29tcGxldGUgYXV0b2ZvY3VzIGxpc3QgcGxhY2Vob2xkZXIgbWF4IG1pbiBtdWx0aXBsZSBwYXR0ZXJuIHJlcXVpcmVkIHN0ZXAiLnNwbGl0KCIgIikpLGUuaW5wdXR0eXBlcz1mdW5jdGlvbihhKXtmb3IodmFyIGQ9MCxlLGcsaCxpPWEubGVuZ3RoO2Q8aTtkKyspai5zZXRBdHRyaWJ1dGUoInR5cGUiLGc9YVtkXSksZT1qLnR5cGUhPT0idGV4dCIsZSYmKGoudmFsdWU9ayxqLnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOmFic29sdXRlO3Zpc2liaWxpdHk6aGlkZGVuOyIsL15yYW5nZSQvLnRlc3QoZykmJmouc3R5bGUuV2Via2l0QXBwZWFyYW5jZSE9PWM/KGYuYXBwZW5kQ2hpbGQoaiksaD1iLmRlZmF1bHRWaWV3LGU9aC5nZXRDb21wdXRlZFN0eWxlJiZoLmdldENvbXB1dGVkU3R5bGUoaixudWxsKS5XZWJraXRBcHBlYXJhbmNlIT09InRleHRmaWVsZCImJmoub2Zmc2V0SGVpZ2h0IT09MCxmLnJlbW92ZUNoaWxkKGopKTovXihzZWFyY2h8dGVsKSQvLnRlc3QoZyl8fCgvXih1cmx8ZW1haWwpJC8udGVzdChnKT9lPWouY2hlY2tWYWxpZGl0eSYmai5jaGVja1ZhbGlkaXR5KCk9PT0hMTovXmNvbG9yJC8udGVzdChnKT8oZi5hcHBlbmRDaGlsZChqKSxmLm9mZnNldFdpZHRoLGU9ai52YWx1ZSE9ayxmLnJlbW92ZUNoaWxkKGopKTplPWoudmFsdWUhPWspKSxzW2FbZF1dPSEhZTtyZXR1cm4gc30oInNlYXJjaCB0ZWwgdXJsIGVtYWlsIGRhdGV0aW1lIGRhdGUgbW9udGggd2VlayB0aW1lIGRhdGV0aW1lLWxvY2FsIG51bWJlciByYW5nZSBjb2xvciIuc3BsaXQoIiAiKSl9dmFyIGQ9IjIuNS4zIixlPXt9LGY9Yi5kb2N1bWVudEVsZW1lbnQsZz0ibW9kZXJuaXpyIixoPWIuY3JlYXRlRWxlbWVudChnKSxpPWguc3R5bGUsaj1iLmNyZWF0ZUVsZW1lbnQoImlucHV0Iiksaz0iOikiLGw9e30udG9TdHJpbmcsbT0iIC13ZWJraXQtIC1tb3otIC1vLSAtbXMtICIuc3BsaXQoIiAiKSxuPSJXZWJraXQgTW96IE8gbXMiLG89bi5zcGxpdCgiICIpLHA9bi50b0xvd2VyQ2FzZSgpLnNwbGl0KCIgIikscT17c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9LHI9e30scz17fSx0PXt9LHU9W10sdj11LnNsaWNlLHcseD1mdW5jdGlvbihhLGMsZCxlKXt2YXIgaCxpLGosaz1iLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGw9Yi5ib2R5LG09bD9sOmIuY3JlYXRlRWxlbWVudCgiYm9keSIpO2lmKHBhcnNlSW50KGQsMTApKXdoaWxlKGQtLSlqPWIuY3JlYXRlRWxlbWVudCgiZGl2Iiksai5pZD1lP2VbZF06ZysoZCsxKSxrLmFwcGVuZENoaWxkKGopO3JldHVybiBoPVsiJiMxNzM7IiwiPHN0eWxlPiIsYSwiPC9zdHlsZT4iXS5qb2luKCIiKSxrLmlkPWcsKGw/azptKS5pbm5lckhUTUwrPWgsbS5hcHBlbmRDaGlsZChrKSxsfHwobS5zdHlsZS5iYWNrZ3JvdW5kPSIiLGYuYXBwZW5kQ2hpbGQobSkpLGk9YyhrLGEpLGw/ay5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGspOm0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChtKSwhIWl9LHk9ZnVuY3Rpb24oYil7dmFyIGM9YS5tYXRjaE1lZGlhfHxhLm1zTWF0Y2hNZWRpYTtpZihjKXJldHVybiBjKGIpLm1hdGNoZXM7dmFyIGQ7cmV0dXJuIHgoIkBtZWRpYSAiK2IrIiB7ICMiK2crIiB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgfSB9IixmdW5jdGlvbihiKXtkPShhLmdldENvbXB1dGVkU3R5bGU/Z2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpOmIuY3VycmVudFN0eWxlKVsicG9zaXRpb24iXT09ImFic29sdXRlIn0pLGR9LHo9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGQsZSl7ZT1lfHxiLmNyZWF0ZUVsZW1lbnQoYVtkXXx8ImRpdiIpLGQ9Im9uIitkO3ZhciBmPWQgaW4gZTtyZXR1cm4gZnx8KGUuc2V0QXR0cmlidXRlfHwoZT1iLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxlLnNldEF0dHJpYnV0ZSYmZS5yZW1vdmVBdHRyaWJ1dGUmJihlLnNldEF0dHJpYnV0ZShkLCIiKSxmPUUoZVtkXSwiZnVuY3Rpb24iKSxFKGVbZF0sInVuZGVmaW5lZCIpfHwoZVtkXT1jKSxlLnJlbW92ZUF0dHJpYnV0ZShkKSkpLGU9bnVsbCxmfXZhciBhPXtzZWxlY3Q6ImlucHV0IixjaGFuZ2U6ImlucHV0IixzdWJtaXQ6ImZvcm0iLHJlc2V0OiJmb3JtIixlcnJvcjoiaW1nIixsb2FkOiJpbWciLGFib3J0OiJpbWcifTtyZXR1cm4gZH0oKSxBPXt9Lmhhc093blByb3BlcnR5LEI7IUUoQSwidW5kZWZpbmVkIikmJiFFKEEuY2FsbCwidW5kZWZpbmVkIik/Qj1mdW5jdGlvbihhLGIpe3JldHVybiBBLmNhbGwoYSxiKX06Qj1mdW5jdGlvbihhLGIpe3JldHVybiBiIGluIGEmJkUoYS5jb25zdHJ1Y3Rvci5wcm90b3R5cGVbYl0sInVuZGVmaW5lZCIpfSxGdW5jdGlvbi5wcm90b3R5cGUuYmluZHx8KEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKGIpe3ZhciBjPXRoaXM7aWYodHlwZW9mIGMhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcjt2YXIgZD12LmNhbGwoYXJndW1lbnRzLDEpLGU9ZnVuY3Rpb24oKXtpZih0aGlzIGluc3RhbmNlb2YgZSl7dmFyIGE9ZnVuY3Rpb24oKXt9O2EucHJvdG90eXBlPWMucHJvdG90eXBlO3ZhciBmPW5ldyBhLGc9Yy5hcHBseShmLGQuY29uY2F0KHYuY2FsbChhcmd1bWVudHMpKSk7cmV0dXJuIE9iamVjdChnKT09PWc/ZzpmfXJldHVybiBjLmFwcGx5KGIsZC5jb25jYXQodi5jYWxsKGFyZ3VtZW50cykpKX07cmV0dXJuIGV9KTt2YXIgSj1mdW5jdGlvbihjLGQpe3ZhciBmPWMuam9pbigiIiksZz1kLmxlbmd0aDt4KGYsZnVuY3Rpb24oYyxkKXt2YXIgZj1iLnN0eWxlU2hlZXRzW2Iuc3R5bGVTaGVldHMubGVuZ3RoLTFdLGg9Zj9mLmNzc1J1bGVzJiZmLmNzc1J1bGVzWzBdP2YuY3NzUnVsZXNbMF0uY3NzVGV4dDpmLmNzc1RleHR8fCIiOiIiLGk9Yy5jaGlsZE5vZGVzLGo9e307d2hpbGUoZy0tKWpbaVtnXS5pZF09aVtnXTtlLnRvdWNoPSJvbnRvdWNoc3RhcnQiaW4gYXx8YS5Eb2N1bWVudFRvdWNoJiZiIGluc3RhbmNlb2YgRG9jdW1lbnRUb3VjaHx8KGoudG91Y2gmJmoudG91Y2gub2Zmc2V0VG9wKT09PTksZS5jc3N0cmFuc2Zvcm1zM2Q9KGouY3NzdHJhbnNmb3JtczNkJiZqLmNzc3RyYW5zZm9ybXMzZC5vZmZzZXRMZWZ0KT09PTkmJmouY3NzdHJhbnNmb3JtczNkLm9mZnNldEhlaWdodD09PTMsZS5nZW5lcmF0ZWRjb250ZW50PShqLmdlbmVyYXRlZGNvbnRlbnQmJmouZ2VuZXJhdGVkY29udGVudC5vZmZzZXRIZWlnaHQpPj0xLGUuZm9udGZhY2U9L3NyYy9pLnRlc3QoaCkmJmguaW5kZXhPZihkLnNwbGl0KCIgIilbMF0pPT09MH0sZyxkKX0oWydAZm9udC1mYWNlIHtmb250LWZhbWlseToiZm9udCI7c3JjOnVybCgiaHR0cHM6Ly8iKX0nLFsiQG1lZGlhICgiLG0uam9pbigidG91Y2gtZW5hYmxlZCksKCIpLGcsIikiLCJ7I3RvdWNoe3RvcDo5cHg7cG9zaXRpb246YWJzb2x1dGV9fSJdLmpvaW4oIiIpLFsiQG1lZGlhICgiLG0uam9pbigidHJhbnNmb3JtLTNkKSwoIiksZywiKSIsInsjY3NzdHJhbnNmb3JtczNke2xlZnQ6OXB4O3Bvc2l0aW9uOmFic29sdXRlO2hlaWdodDozcHg7fX0iXS5qb2luKCIiKSxbJyNnZW5lcmF0ZWRjb250ZW50OmFmdGVye2NvbnRlbnQ6IicsaywnIjt2aXNpYmlsaXR5OmhpZGRlbn0nXS5qb2luKCIiKV0sWyJmb250ZmFjZSIsInRvdWNoIiwiY3NzdHJhbnNmb3JtczNkIiwiZ2VuZXJhdGVkY29udGVudCJdKTtyLmZsZXhib3g9ZnVuY3Rpb24oKXtyZXR1cm4gSSgiZmxleE9yZGVyIil9LHJbImZsZXhib3gtbGVnYWN5Il09ZnVuY3Rpb24oKXtyZXR1cm4gSSgiYm94RGlyZWN0aW9uIil9LHIuY2FudmFzPWZ1bmN0aW9uKCl7dmFyIGE9Yi5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtyZXR1cm4hIWEuZ2V0Q29udGV4dCYmISFhLmdldENvbnRleHQoIjJkIil9LHIuY2FudmFzdGV4dD1mdW5jdGlvbigpe3JldHVybiEhZS5jYW52YXMmJiEhRShiLmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLmdldENvbnRleHQoIjJkIikuZmlsbFRleHQsImZ1bmN0aW9uIil9LHIud2ViZ2w9ZnVuY3Rpb24oKXt0cnl7dmFyIGQ9Yi5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSxlO2U9ISghYS5XZWJHTFJlbmRlcmluZ0NvbnRleHR8fCFkLmdldENvbnRleHQoImV4cGVyaW1lbnRhbC13ZWJnbCIpJiYhZC5nZXRDb250ZXh0KCJ3ZWJnbCIpKSxkPWN9Y2F0Y2goZil7ZT0hMX1yZXR1cm4gZX0sci50b3VjaD1mdW5jdGlvbigpe3JldHVybiBlLnRvdWNofSxyLmdlb2xvY2F0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuISFuYXZpZ2F0b3IuZ2VvbG9jYXRpb259LHIucG9zdG1lc3NhZ2U9ZnVuY3Rpb24oKXtyZXR1cm4hIWEucG9zdE1lc3NhZ2V9LHIud2Vic3FsZGF0YWJhc2U9ZnVuY3Rpb24oKXtyZXR1cm4hIWEub3BlbkRhdGFiYXNlfSxyLmluZGV4ZWREQj1mdW5jdGlvbigpe3JldHVybiEhSSgiaW5kZXhlZERCIixhKX0sci5oYXNoY2hhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuIHooImhhc2hjaGFuZ2UiLGEpJiYoYi5kb2N1bWVudE1vZGU9PT1jfHxiLmRvY3VtZW50TW9kZT43KX0sci5oaXN0b3J5PWZ1bmN0aW9uKCl7cmV0dXJuISFhLmhpc3RvcnkmJiEhaGlzdG9yeS5wdXNoU3RhdGV9LHIuZHJhZ2FuZGRyb3A9ZnVuY3Rpb24oKXt2YXIgYT1iLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiJkcmFnZ2FibGUiaW4gYXx8Im9uZHJhZ3N0YXJ0ImluIGEmJiJvbmRyb3AiaW4gYX0sci53ZWJzb2NrZXRzPWZ1bmN0aW9uKCl7Zm9yKHZhciBiPS0xLGM9by5sZW5ndGg7KytiPGM7KWlmKGFbb1tiXSsiV2ViU29ja2V0Il0pcmV0dXJuITA7cmV0dXJuIldlYlNvY2tldCJpbiBhfSxyLnJnYmE9ZnVuY3Rpb24oKXtyZXR1cm4gQygiYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDE1MCwyNTUsMTUwLC41KSIpLEYoaS5iYWNrZ3JvdW5kQ29sb3IsInJnYmEiKX0sci5oc2xhPWZ1bmN0aW9uKCl7cmV0dXJuIEMoImJhY2tncm91bmQtY29sb3I6aHNsYSgxMjAsNDAlLDEwMCUsLjUpIiksRihpLmJhY2tncm91bmRDb2xvciwicmdiYSIpfHxGKGkuYmFja2dyb3VuZENvbG9yLCJoc2xhIil9LHIubXVsdGlwbGViZ3M9ZnVuY3Rpb24oKXtyZXR1cm4gQygiYmFja2dyb3VuZDp1cmwoaHR0cHM6Ly8pLHVybChodHRwczovLykscmVkIHVybChodHRwczovLykiKSwvKHVybFxzKlwoLio/KXszfS8udGVzdChpLmJhY2tncm91bmQpfSxyLmJhY2tncm91bmRzaXplPWZ1bmN0aW9uKCl7cmV0dXJuIEkoImJhY2tncm91bmRTaXplIil9LHIuYm9yZGVyaW1hZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gSSgiYm9yZGVySW1hZ2UiKX0sci5ib3JkZXJyYWRpdXM9ZnVuY3Rpb24oKXtyZXR1cm4gSSgiYm9yZGVyUmFkaXVzIil9LHIuYm94c2hhZG93PWZ1bmN0aW9uKCl7cmV0dXJuIEkoImJveFNoYWRvdyIpfSxyLnRleHRzaGFkb3c9ZnVuY3Rpb24oKXtyZXR1cm4gYi5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZS50ZXh0U2hhZG93PT09IiJ9LHIub3BhY2l0eT1mdW5jdGlvbigpe3JldHVybiBEKCJvcGFjaXR5Oi41NSIpLC9eMC41NSQvLnRlc3QoaS5vcGFjaXR5KX0sci5jc3NhbmltYXRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIEkoImFuaW1hdGlvbk5hbWUiKX0sci5jc3Njb2x1bW5zPWZ1bmN0aW9uKCl7cmV0dXJuIEkoImNvbHVtbkNvdW50Iil9LHIuY3NzZ3JhZGllbnRzPWZ1bmN0aW9uKCl7dmFyIGE9ImJhY2tncm91bmQtaW1hZ2U6IixiPSJncmFkaWVudChsaW5lYXIsbGVmdCB0b3AscmlnaHQgYm90dG9tLGZyb20oIzlmOSksdG8od2hpdGUpKTsiLGM9ImxpbmVhci1ncmFkaWVudChsZWZ0IHRvcCwjOWY5LCB3aGl0ZSk7IjtyZXR1cm4gQygoYSsiLXdlYmtpdC0gIi5zcGxpdCgiICIpLmpvaW4oYithKSttLmpvaW4oYythKSkuc2xpY2UoMCwtYS5sZW5ndGgpKSxGKGkuYmFja2dyb3VuZEltYWdlLCJncmFkaWVudCIpfSxyLmNzc3JlZmxlY3Rpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIEkoImJveFJlZmxlY3QiKX0sci5jc3N0cmFuc2Zvcm1zPWZ1bmN0aW9uKCl7cmV0dXJuISFJKCJ0cmFuc2Zvcm0iKX0sci5jc3N0cmFuc2Zvcm1zM2Q9ZnVuY3Rpb24oKXt2YXIgYT0hIUkoInBlcnNwZWN0aXZlIik7cmV0dXJuIGEmJiJ3ZWJraXRQZXJzcGVjdGl2ZSJpbiBmLnN0eWxlJiYoYT1lLmNzc3RyYW5zZm9ybXMzZCksYX0sci5jc3N0cmFuc2l0aW9ucz1mdW5jdGlvbigpe3JldHVybiBJKCJ0cmFuc2l0aW9uIil9LHIuZm9udGZhY2U9ZnVuY3Rpb24oKXtyZXR1cm4gZS5mb250ZmFjZX0sci5nZW5lcmF0ZWRjb250ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGUuZ2VuZXJhdGVkY29udGVudH0sci52aWRlbz1mdW5jdGlvbigpe3ZhciBhPWIuY3JlYXRlRWxlbWVudCgidmlkZW8iKSxjPSExO3RyeXtpZihjPSEhYS5jYW5QbGF5VHlwZSljPW5ldyBCb29sZWFuKGMpLGMub2dnPWEuY2FuUGxheVR5cGUoJ3ZpZGVvL29nZzsgY29kZWNzPSJ0aGVvcmEiJykucmVwbGFjZSgvXm5vJC8sIiIpLGMuaDI2ND1hLmNhblBsYXlUeXBlKCd2aWRlby9tcDQ7IGNvZGVjcz0iYXZjMS40MkUwMUUiJykucmVwbGFjZSgvXm5vJC8sIiIpLGMud2VibT1hLmNhblBsYXlUeXBlKCd2aWRlby93ZWJtOyBjb2RlY3M9InZwOCwgdm9yYmlzIicpLnJlcGxhY2UoL15ubyQvLCIiKX1jYXRjaChkKXt9cmV0dXJuIGN9LHIuYXVkaW89ZnVuY3Rpb24oKXt2YXIgYT1iLmNyZWF0ZUVsZW1lbnQoImF1ZGlvIiksYz0hMTt0cnl7aWYoYz0hIWEuY2FuUGxheVR5cGUpYz1uZXcgQm9vbGVhbihjKSxjLm9nZz1hLmNhblBsYXlUeXBlKCdhdWRpby9vZ2c7IGNvZGVjcz0idm9yYmlzIicpLnJlcGxhY2UoL15ubyQvLCIiKSxjLm1wMz1hLmNhblBsYXlUeXBlKCJhdWRpby9tcGVnOyIpLnJlcGxhY2UoL15ubyQvLCIiKSxjLndhdj1hLmNhblBsYXlUeXBlKCdhdWRpby93YXY7IGNvZGVjcz0iMSInKS5yZXBsYWNlKC9ebm8kLywiIiksYy5tNGE9KGEuY2FuUGxheVR5cGUoImF1ZGlvL3gtbTRhOyIpfHxhLmNhblBsYXlUeXBlKCJhdWRpby9hYWM7IikpLnJlcGxhY2UoL15ubyQvLCIiKX1jYXRjaChkKXt9cmV0dXJuIGN9LHIubG9jYWxzdG9yYWdlPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShnLGcpLGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGcpLCEwfWNhdGNoKGEpe3JldHVybiExfX0sci5zZXNzaW9uc3RvcmFnZT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShnLGcpLHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oZyksITB9Y2F0Y2goYSl7cmV0dXJuITF9fSxyLndlYndvcmtlcnM9ZnVuY3Rpb24oKXtyZXR1cm4hIWEuV29ya2VyfSxyLmFwcGxpY2F0aW9uY2FjaGU9ZnVuY3Rpb24oKXtyZXR1cm4hIWEuYXBwbGljYXRpb25DYWNoZX0sci5zdmc9ZnVuY3Rpb24oKXtyZXR1cm4hIWIuY3JlYXRlRWxlbWVudE5TJiYhIWIuY3JlYXRlRWxlbWVudE5TKHEuc3ZnLCJzdmciKS5jcmVhdGVTVkdSZWN0fSxyLmlubGluZXN2Zz1mdW5jdGlvbigpe3ZhciBhPWIuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIGEuaW5uZXJIVE1MPSI8c3ZnLz4iLChhLmZpcnN0Q2hpbGQmJmEuZmlyc3RDaGlsZC5uYW1lc3BhY2VVUkkpPT1xLnN2Z30sci5zbWlsPWZ1bmN0aW9uKCl7cmV0dXJuISFiLmNyZWF0ZUVsZW1lbnROUyYmL1NWR0FuaW1hdGUvLnRlc3QobC5jYWxsKGIuY3JlYXRlRWxlbWVudE5TKHEuc3ZnLCJhbmltYXRlIikpKX0sci5zdmdjbGlwcGF0aHM9ZnVuY3Rpb24oKXtyZXR1cm4hIWIuY3JlYXRlRWxlbWVudE5TJiYvU1ZHQ2xpcFBhdGgvLnRlc3QobC5jYWxsKGIuY3JlYXRlRWxlbWVudE5TKHEuc3ZnLCJjbGlwUGF0aCIpKSl9O2Zvcih2YXIgTCBpbiByKUIocixMKSYmKHc9TC50b0xvd2VyQ2FzZSgpLGVbd109cltMXSgpLHUucHVzaCgoZVt3XT8iIjoibm8tIikrdykpO3JldHVybiBlLmlucHV0fHxLKCksQygiIiksaD1qPW51bGwsZS5fdmVyc2lvbj1kLGUuX3ByZWZpeGVzPW0sZS5fZG9tUHJlZml4ZXM9cCxlLl9jc3NvbVByZWZpeGVzPW8sZS5tcT15LGUuaGFzRXZlbnQ9eixlLnRlc3RQcm9wPWZ1bmN0aW9uKGEpe3JldHVybiBHKFthXSl9LGUudGVzdEFsbFByb3BzPUksZS50ZXN0U3R5bGVzPXgsZS5wcmVmaXhlZD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGI/SShhLGIsYyk6SShhLCJwZngiKX0sZX0odGhpcyx0aGlzLmRvY3VtZW50KSxmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZChhKXtyZXR1cm4gby5jYWxsKGEpPT0iW29iamVjdCBGdW5jdGlvbl0ifWZ1bmN0aW9uIGUoYSl7cmV0dXJuIHR5cGVvZiBhPT0ic3RyaW5nIn1mdW5jdGlvbiBmKCl7fWZ1bmN0aW9uIGcoYSl7cmV0dXJuIWF8fGE9PSJsb2FkZWQifHxhPT0iY29tcGxldGUifHxhPT0idW5pbml0aWFsaXplZCJ9ZnVuY3Rpb24gaCgpe3ZhciBhPXAuc2hpZnQoKTtxPTEsYT9hLnQ/bShmdW5jdGlvbigpeyhhLnQ9PSJjIj9CLmluamVjdENzczpCLmluamVjdEpzKShhLnMsMCxhLmEsYS54LGEuZSwxKX0sMCk6KGEoKSxoKCkpOnE9MH1mdW5jdGlvbiBpKGEsYyxkLGUsZixpLGope2Z1bmN0aW9uIGsoYil7aWYoIW8mJmcobC5yZWFkeVN0YXRlKSYmKHUucj1vPTEsIXEmJmgoKSxsLm9ubG9hZD1sLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGIpKXthIT0iaW1nIiYmbShmdW5jdGlvbigpe3QucmVtb3ZlQ2hpbGQobCl9LDUwKTtmb3IodmFyIGQgaW4geVtjXSl5W2NdLmhhc093blByb3BlcnR5KGQpJiZ5W2NdW2RdLm9ubG9hZCgpfX12YXIgaj1qfHxCLmVycm9yVGltZW91dCxsPXt9LG89MCxyPTAsdT17dDpkLHM6YyxlOmYsYTppLHg6an07eVtjXT09PTEmJihyPTEseVtjXT1bXSxsPWIuY3JlYXRlRWxlbWVudChhKSksYT09Im9iamVjdCI/bC5kYXRhPWM6KGwuc3JjPWMsbC50eXBlPWEpLGwud2lkdGg9bC5oZWlnaHQ9IjAiLGwub25lcnJvcj1sLm9ubG9hZD1sLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2suY2FsbCh0aGlzLHIpfSxwLnNwbGljZShlLDAsdSksYSE9ImltZyImJihyfHx5W2NdPT09Mj8odC5pbnNlcnRCZWZvcmUobCxzP251bGw6biksbShrLGopKTp5W2NdLnB1c2gobCkpfWZ1bmN0aW9uIGooYSxiLGMsZCxmKXtyZXR1cm4gcT0wLGI9Ynx8ImoiLGUoYSk/aShiPT0iYyI/djp1LGEsYix0aGlzLmkrKyxjLGQsZik6KHAuc3BsaWNlKHRoaXMuaSsrLDAsYSkscC5sZW5ndGg9PTEmJmgoKSksdGhpc31mdW5jdGlvbiBrKCl7dmFyIGE9QjtyZXR1cm4gYS5sb2FkZXI9e2xvYWQ6aixpOjB9LGF9dmFyIGw9Yi5kb2N1bWVudEVsZW1lbnQsbT1hLnNldFRpbWVvdXQsbj1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKVswXSxvPXt9LnRvU3RyaW5nLHA9W10scT0wLHI9Ik1vekFwcGVhcmFuY2UiaW4gbC5zdHlsZSxzPXImJiEhYi5jcmVhdGVSYW5nZSgpLmNvbXBhcmVOb2RlLHQ9cz9sOm4ucGFyZW50Tm9kZSxsPWEub3BlcmEmJm8uY2FsbChhLm9wZXJhKT09IltvYmplY3QgT3BlcmFdIixsPSEhYi5hdHRhY2hFdmVudCYmIWwsdT1yPyJvYmplY3QiOmw/InNjcmlwdCI6ImltZyIsdj1sPyJzY3JpcHQiOnUsdz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihhKXtyZXR1cm4gby5jYWxsKGEpPT0iW29iamVjdCBBcnJheV0ifSx4PVtdLHk9e30sej17dGltZW91dDpmdW5jdGlvbihhLGIpe3JldHVybiBiLmxlbmd0aCYmKGEudGltZW91dD1iWzBdKSxhfX0sQSxCO0I9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihhKXt2YXIgYT1hLnNwbGl0KCIhIiksYj14Lmxlbmd0aCxjPWEucG9wKCksZD1hLmxlbmd0aCxjPXt1cmw6YyxvcmlnVXJsOmMscHJlZml4ZXM6YX0sZSxmLGc7Zm9yKGY9MDtmPGQ7ZisrKWc9YVtmXS5zcGxpdCgiPSIpLChlPXpbZy5zaGlmdCgpXSkmJihjPWUoYyxnKSk7Zm9yKGY9MDtmPGI7ZisrKWM9eFtmXShjKTtyZXR1cm4gY31mdW5jdGlvbiBnKGEsZSxmLGcsaSl7dmFyIGo9YihhKSxsPWouYXV0b0NhbGxiYWNrO2oudXJsLnNwbGl0KCIuIikucG9wKCkuc3BsaXQoIj8iKS5zaGlmdCgpLGouYnlwYXNzfHwoZSYmKGU9ZChlKT9lOmVbYV18fGVbZ118fGVbYS5zcGxpdCgiLyIpLnBvcCgpLnNwbGl0KCI/IilbMF1dfHxoKSxqLmluc3RlYWQ/ai5pbnN0ZWFkKGEsZSxmLGcsaSk6KHlbai51cmxdP2oubm9leGVjPSEwOnlbai51cmxdPTEsZi5sb2FkKGoudXJsLGouZm9yY2VDU1N8fCFqLmZvcmNlSlMmJiJjc3MiPT1qLnVybC5zcGxpdCgiLiIpLnBvcCgpLnNwbGl0KCI/Iikuc2hpZnQoKT8iYyI6YyxqLm5vZXhlYyxqLmF0dHJzLGoudGltZW91dCksKGQoZSl8fGQobCkpJiZmLmxvYWQoZnVuY3Rpb24oKXtrKCksZSYmZShqLm9yaWdVcmwsaSxnKSxsJiZsKGoub3JpZ1VybCxpLGcpLHlbai51cmxdPTJ9KSkpfWZ1bmN0aW9uIGkoYSxiKXtmdW5jdGlvbiBjKGEsYyl7aWYoYSl7aWYoZShhKSljfHwoaj1mdW5jdGlvbigpe3ZhciBhPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtrLmFwcGx5KHRoaXMsYSksbCgpfSksZyhhLGosYiwwLGgpO2Vsc2UgaWYoT2JqZWN0KGEpPT09YSlmb3IobiBpbiBtPWZ1bmN0aW9uKCl7dmFyIGI9MCxjO2ZvcihjIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShjKSYmYisrO3JldHVybiBifSgpLGEpYS5oYXNPd25Qcm9wZXJ0eShuKSYmKCFjJiYhLS1tJiYoZChqKT9qPWZ1bmN0aW9uKCl7dmFyIGE9W10uc2xpY2UuY2FsbChhcmd1bWVudHMpO2suYXBwbHkodGhpcyxhKSxsKCl9Ompbbl09ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGI9W10uc2xpY2UuY2FsbChhcmd1bWVudHMpO2EmJmEuYXBwbHkodGhpcyxiKSxsKCl9fShrW25dKSksZyhhW25dLGosYixuLGgpKX1lbHNlIWMmJmwoKX12YXIgaD0hIWEudGVzdCxpPWEubG9hZHx8YS5ib3RoLGo9YS5jYWxsYmFja3x8ZixrPWosbD1hLmNvbXBsZXRlfHxmLG0sbjtjKGg/YS55ZXA6YS5ub3BlLCEhaSksaSYmYyhpKX12YXIgaixsLG09dGhpcy55ZXBub3BlLmxvYWRlcjtpZihlKGEpKWcoYSwwLG0sMCk7ZWxzZSBpZih3KGEpKWZvcihqPTA7ajxhLmxlbmd0aDtqKyspbD1hW2pdLGUobCk/ZyhsLDAsbSwwKTp3KGwpP0IobCk6T2JqZWN0KGwpPT09bCYmaShsLG0pO2Vsc2UgT2JqZWN0KGEpPT09YSYmaShhLG0pfSxCLmFkZFByZWZpeD1mdW5jdGlvbihhLGIpe3pbYV09Yn0sQi5hZGRGaWx0ZXI9ZnVuY3Rpb24oYSl7eC5wdXNoKGEpfSxCLmVycm9yVGltZW91dD0xZTQsYi5yZWFkeVN0YXRlPT1udWxsJiZiLmFkZEV2ZW50TGlzdGVuZXImJihiLnJlYWR5U3RhdGU9ImxvYWRpbmciLGIuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQT1mdW5jdGlvbigpe2IucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQSwwKSxiLnJlYWR5U3RhdGU9ImNvbXBsZXRlIn0sMCkpLGEueWVwbm9wZT1rKCksYS55ZXBub3BlLmV4ZWN1dGVTdGFjaz1oLGEueWVwbm9wZS5pbmplY3RKcz1mdW5jdGlvbihhLGMsZCxlLGksail7dmFyIGs9Yi5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxsLG8sZT1lfHxCLmVycm9yVGltZW91dDtrLnNyYz1hO2ZvcihvIGluIGQpay5zZXRBdHRyaWJ1dGUobyxkW29dKTtjPWo/aDpjfHxmLGsub25yZWFkeXN0YXRlY2hhbmdlPWsub25sb2FkPWZ1bmN0aW9uKCl7IWwmJmcoay5yZWFkeVN0YXRlKSYmKGw9MSxjKCksay5vbmxvYWQ9ay5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCl9LG0oZnVuY3Rpb24oKXtsfHwobD0xLGMoMSkpfSxlKSxpP2sub25sb2FkKCk6bi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShrLG4pfSxhLnllcG5vcGUuaW5qZWN0Q3NzPWZ1bmN0aW9uKGEsYyxkLGUsZyxpKXt2YXIgZT1iLmNyZWF0ZUVsZW1lbnQoImxpbmsiKSxqLGM9aT9oOmN8fGY7ZS5ocmVmPWEsZS5yZWw9InN0eWxlc2hlZXQiLGUudHlwZT0idGV4dC9jc3MiO2ZvcihqIGluIGQpZS5zZXRBdHRyaWJ1dGUoaixkW2pdKTtnfHwobi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLG4pLG0oYywwKSl9fSh0aGlzLGRvY3VtZW50KSxNb2Rlcm5penIubG9hZD1mdW5jdGlvbigpe3llcG5vcGUuYXBwbHkod2luZG93LFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApKX07"></script>
<script src="data:application/x-javascript;base64,dmFyIHE9bnVsbDt3aW5kb3cuUFJfU0hPVUxEX1VTRV9DT05USU5VQVRJT049ITA7CihmdW5jdGlvbigpe2Z1bmN0aW9uIEwoYSl7ZnVuY3Rpb24gbShhKXt2YXIgZj1hLmNoYXJDb2RlQXQoMCk7aWYoZiE9PTkyKXJldHVybiBmO3ZhciBiPWEuY2hhckF0KDEpO3JldHVybihmPXJbYl0pP2Y6IjAiPD1iJiZiPD0iNyI/cGFyc2VJbnQoYS5zdWJzdHJpbmcoMSksOCk6Yj09PSJ1Inx8Yj09PSJ4Ij9wYXJzZUludChhLnN1YnN0cmluZygyKSwxNik6YS5jaGFyQ29kZUF0KDEpfWZ1bmN0aW9uIGUoYSl7aWYoYTwzMilyZXR1cm4oYTwxNj8iXFx4MCI6IlxceCIpK2EudG9TdHJpbmcoMTYpO2E9U3RyaW5nLmZyb21DaGFyQ29kZShhKTtpZihhPT09IlxcInx8YT09PSItInx8YT09PSJbInx8YT09PSJdIilhPSJcXCIrYTtyZXR1cm4gYX1mdW5jdGlvbiBoKGEpe2Zvcih2YXIgZj1hLnN1YnN0cmluZygxLGEubGVuZ3RoLTEpLm1hdGNoKC9cXHVbXGRBLUZhLWZdezR9fFxceFtcZEEtRmEtZl17Mn18XFxbMC0zXVswLTddezAsMn18XFxbMC03XXsxLDJ9fFxcW1xTXHNdfFteXFxdL2cpLGE9CltdLGI9W10sbz1mWzBdPT09Il4iLGM9bz8xOjAsaT1mLmxlbmd0aDtjPGk7KytjKXt2YXIgaj1mW2NdO2lmKC9cXFtiZHN3XS9pLnRlc3QoaikpYS5wdXNoKGopO2Vsc2V7dmFyIGo9bShqKSxkO2MrMjxpJiYiLSI9PT1mW2MrMV0/KGQ9bShmW2MrMl0pLGMrPTIpOmQ9ajtiLnB1c2goW2osZF0pO2Q8NjV8fGo+MTIyfHwoZDw2NXx8aj45MHx8Yi5wdXNoKFtNYXRoLm1heCg2NSxqKXwzMixNYXRoLm1pbihkLDkwKXwzMl0pLGQ8OTd8fGo+MTIyfHxiLnB1c2goW01hdGgubWF4KDk3LGopJi0zMyxNYXRoLm1pbihkLDEyMikmLTMzXSkpfX1iLnNvcnQoZnVuY3Rpb24oYSxmKXtyZXR1cm4gYVswXS1mWzBdfHxmWzFdLWFbMV19KTtmPVtdO2o9W05hTixOYU5dO2ZvcihjPTA7YzxiLmxlbmd0aDsrK2MpaT1iW2NdLGlbMF08PWpbMV0rMT9qWzFdPU1hdGgubWF4KGpbMV0saVsxXSk6Zi5wdXNoKGo9aSk7Yj1bIlsiXTtvJiZiLnB1c2goIl4iKTtiLnB1c2guYXBwbHkoYixhKTtmb3IoYz0wO2M8CmYubGVuZ3RoOysrYylpPWZbY10sYi5wdXNoKGUoaVswXSkpLGlbMV0+aVswXSYmKGlbMV0rMT5pWzBdJiZiLnB1c2goIi0iKSxiLnB1c2goZShpWzFdKSkpO2IucHVzaCgiXSIpO3JldHVybiBiLmpvaW4oIiIpfWZ1bmN0aW9uIHkoYSl7Zm9yKHZhciBmPWEuc291cmNlLm1hdGNoKC9cWyg/OlteXFxcXV18XFxbXFNcc10pKl18XFx1W1xkQS1GYS1mXXs0fXxcXHhbXGRBLUZhLWZdezJ9fFxcXGQrfFxcW15cZHV4XXxcKFw/WyE6PV18WygpXl18W14oKVtcXF5dKy9nKSxiPWYubGVuZ3RoLGQ9W10sYz0wLGk9MDtjPGI7KytjKXt2YXIgaj1mW2NdO2o9PT0iKCI/KytpOiJcXCI9PT1qLmNoYXJBdCgwKSYmKGo9K2ouc3Vic3RyaW5nKDEpKSYmajw9aSYmKGRbal09LTEpfWZvcihjPTE7YzxkLmxlbmd0aDsrK2MpLTE9PT1kW2NdJiYoZFtjXT0rK3QpO2ZvcihpPWM9MDtjPGI7KytjKWo9ZltjXSxqPT09IigiPygrK2ksZFtpXT09PXZvaWQgMCYmKGZbY109Iig/OiIpKToiXFwiPT09ai5jaGFyQXQoMCkmJgooaj0rai5zdWJzdHJpbmcoMSkpJiZqPD1pJiYoZltjXT0iXFwiK2RbaV0pO2ZvcihpPWM9MDtjPGI7KytjKSJeIj09PWZbY10mJiJeIiE9PWZbYysxXSYmKGZbY109IiIpO2lmKGEuaWdub3JlQ2FzZSYmcylmb3IoYz0wO2M8YjsrK2Mpaj1mW2NdLGE9ai5jaGFyQXQoMCksai5sZW5ndGg+PTImJmE9PT0iWyI/ZltjXT1oKGopOmEhPT0iXFwiJiYoZltjXT1qLnJlcGxhY2UoL1tBLVphLXpdL2csZnVuY3Rpb24oYSl7YT1hLmNoYXJDb2RlQXQoMCk7cmV0dXJuIlsiK1N0cmluZy5mcm9tQ2hhckNvZGUoYSYtMzMsYXwzMikrIl0ifSkpO3JldHVybiBmLmpvaW4oIiIpfWZvcih2YXIgdD0wLHM9ITEsbD0hMSxwPTAsZD1hLmxlbmd0aDtwPGQ7KytwKXt2YXIgZz1hW3BdO2lmKGcuaWdub3JlQ2FzZSlsPSEwO2Vsc2UgaWYoL1thLXpdL2kudGVzdChnLnNvdXJjZS5yZXBsYWNlKC9cXHVbXGRhLWZdezR9fFxceFtcZGEtZl17Mn18XFxbXlVYdXhdL2dpLCIiKSkpe3M9ITA7bD0hMTticmVha319Zm9yKHZhciByPQp7Yjo4LHQ6OSxuOjEwLHY6MTEsZjoxMixyOjEzfSxuPVtdLHA9MCxkPWEubGVuZ3RoO3A8ZDsrK3Ape2c9YVtwXTtpZihnLmdsb2JhbHx8Zy5tdWx0aWxpbmUpdGhyb3cgRXJyb3IoIiIrZyk7bi5wdXNoKCIoPzoiK3koZykrIikiKX1yZXR1cm4gUmVnRXhwKG4uam9pbigifCIpLGw/ImdpIjoiZyIpfWZ1bmN0aW9uIE0oYSl7ZnVuY3Rpb24gbShhKXtzd2l0Y2goYS5ub2RlVHlwZSl7Y2FzZSAxOmlmKGUudGVzdChhLmNsYXNzTmFtZSkpYnJlYWs7Zm9yKHZhciBnPWEuZmlyc3RDaGlsZDtnO2c9Zy5uZXh0U2libGluZyltKGcpO2c9YS5ub2RlTmFtZTtpZigiQlIiPT09Z3x8IkxJIj09PWcpaFtzXT0iXG4iLHRbczw8MV09eSsrLHRbcysrPDwxfDFdPWE7YnJlYWs7Y2FzZSAzOmNhc2UgNDpnPWEubm9kZVZhbHVlLGcubGVuZ3RoJiYoZz1wP2cucmVwbGFjZSgvXHJcbj8vZywiXG4iKTpnLnJlcGxhY2UoL1tcdFxuXHIgXSsvZywiICIpLGhbc109Zyx0W3M8PDFdPXkseSs9Zy5sZW5ndGgsCnRbcysrPDwxfDFdPWEpfX12YXIgZT0vKD86Xnxccylub2NvZGUoPzpcc3wkKS8saD1bXSx5PTAsdD1bXSxzPTAsbDthLmN1cnJlbnRTdHlsZT9sPWEuY3VycmVudFN0eWxlLndoaXRlU3BhY2U6d2luZG93LmdldENvbXB1dGVkU3R5bGUmJihsPWRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoYSxxKS5nZXRQcm9wZXJ0eVZhbHVlKCJ3aGl0ZS1zcGFjZSIpKTt2YXIgcD1sJiYicHJlIj09PWwuc3Vic3RyaW5nKDAsMyk7bShhKTtyZXR1cm57YTpoLmpvaW4oIiIpLnJlcGxhY2UoL1xuJC8sIiIpLGM6dH19ZnVuY3Rpb24gQihhLG0sZSxoKXttJiYoYT17YTptLGQ6YX0sZShhKSxoLnB1c2guYXBwbHkoaCxhLmUpKX1mdW5jdGlvbiB4KGEsbSl7ZnVuY3Rpb24gZShhKXtmb3IodmFyIGw9YS5kLHA9W2wsInBsbiJdLGQ9MCxnPWEuYS5tYXRjaCh5KXx8W10scj17fSxuPTAsej1nLmxlbmd0aDtuPHo7KytuKXt2YXIgZj1nW25dLGI9cltmXSxvPXZvaWQgMCxjO2lmKHR5cGVvZiBiPT09CiJzdHJpbmciKWM9ITE7ZWxzZXt2YXIgaT1oW2YuY2hhckF0KDApXTtpZihpKW89Zi5tYXRjaChpWzFdKSxiPWlbMF07ZWxzZXtmb3IoYz0wO2M8dDsrK2MpaWYoaT1tW2NdLG89Zi5tYXRjaChpWzFdKSl7Yj1pWzBdO2JyZWFrfW98fChiPSJwbG4iKX1pZigoYz1iLmxlbmd0aD49NSYmImxhbmctIj09PWIuc3Vic3RyaW5nKDAsNSkpJiYhKG8mJnR5cGVvZiBvWzFdPT09InN0cmluZyIpKWM9ITEsYj0ic3JjIjtjfHwocltmXT1iKX1pPWQ7ZCs9Zi5sZW5ndGg7aWYoYyl7Yz1vWzFdO3ZhciBqPWYuaW5kZXhPZihjKSxrPWorYy5sZW5ndGg7b1syXSYmKGs9Zi5sZW5ndGgtb1syXS5sZW5ndGgsaj1rLWMubGVuZ3RoKTtiPWIuc3Vic3RyaW5nKDUpO0IobCtpLGYuc3Vic3RyaW5nKDAsaiksZSxwKTtCKGwraStqLGMsQyhiLGMpLHApO0IobCtpK2ssZi5zdWJzdHJpbmcoayksZSxwKX1lbHNlIHAucHVzaChsK2ksYil9YS5lPXB9dmFyIGg9e30seTsoZnVuY3Rpb24oKXtmb3IodmFyIGU9YS5jb25jYXQobSksCmw9W10scD17fSxkPTAsZz1lLmxlbmd0aDtkPGc7KytkKXt2YXIgcj1lW2RdLG49clszXTtpZihuKWZvcih2YXIgaz1uLmxlbmd0aDstLWs+PTA7KWhbbi5jaGFyQXQoayldPXI7cj1yWzFdO249IiIrcjtwLmhhc093blByb3BlcnR5KG4pfHwobC5wdXNoKHIpLHBbbl09cSl9bC5wdXNoKC9bXFNcc10vKTt5PUwobCl9KSgpO3ZhciB0PW0ubGVuZ3RoO3JldHVybiBlfWZ1bmN0aW9uIHUoYSl7dmFyIG09W10sZT1bXTthLnRyaXBsZVF1b3RlZFN0cmluZ3M/bS5wdXNoKFsic3RyIiwvXig/OicnJyg/OlteJ1xcXXxcXFtcU1xzXXwnJz8oPz1bXiddKSkqKD86JycnfCQpfCIiIig/OlteIlxcXXxcXFtcU1xzXXwiIj8oPz1bXiJdKSkqKD86IiIifCQpfCcoPzpbXidcXF18XFxbXFNcc10pKig/Oid8JCl8Iig/OlteIlxcXXxcXFtcU1xzXSkqKD86InwkKSkvLHEsIidcIiJdKTphLm11bHRpTGluZVN0cmluZ3M/bS5wdXNoKFsic3RyIiwvXig/OicoPzpbXidcXF18XFxbXFNcc10pKig/Oid8JCl8Iig/OlteIlxcXXxcXFtcU1xzXSkqKD86InwkKXxgKD86W15cXGBdfFxcW1xTXHNdKSooPzpgfCQpKS8sCnEsIidcImAiXSk6bS5wdXNoKFsic3RyIiwvXig/OicoPzpbXlxuXHInXFxdfFxcLikqKD86J3wkKXwiKD86W15cblxyIlxcXXxcXC4pKig/OiJ8JCkpLyxxLCJcIiciXSk7YS52ZXJiYXRpbVN0cmluZ3MmJmUucHVzaChbInN0ciIsL15AIig/OlteIl18IiIpKig/OiJ8JCkvLHFdKTt2YXIgaD1hLmhhc2hDb21tZW50cztoJiYoYS5jU3R5bGVDb21tZW50cz8oaD4xP20ucHVzaChbImNvbSIsL14jKD86IyMoPzpbXiNdfCMoPyEjIykpKig/OiMjI3wkKXwuKikvLHEsIiMiXSk6bS5wdXNoKFsiY29tIiwvXiMoPzooPzpkZWZpbmV8ZWxpZnxlbHNlfGVuZGlmfGVycm9yfGlmZGVmfGluY2x1ZGV8aWZuZGVmfGxpbmV8cHJhZ21hfHVuZGVmfHdhcm5pbmcpXGJ8W15cblxyXSopLyxxLCIjIl0pLGUucHVzaChbInN0ciIsL148KD86KD86KD86XC5cLlwvKSp8XC8/KSg/Oltcdy1dKyg/OlwvW1x3LV0rKSspP1tcdy1dK1wuaHxbYS16XVx3Kik+LyxxXSkpOm0ucHVzaChbImNvbSIsL14jW15cblxyXSovLApxLCIjIl0pKTthLmNTdHlsZUNvbW1lbnRzJiYoZS5wdXNoKFsiY29tIiwvXlwvXC9bXlxuXHJdKi8scV0pLGUucHVzaChbImNvbSIsL15cL1wqW1xTXHNdKj8oPzpcKlwvfCQpLyxxXSkpO2EucmVnZXhMaXRlcmFscyYmZS5wdXNoKFsibGFuZy1yZWdleCIsL14oPzpeXlwuP3xbISstXXwhPXwhPT18I3wlfCU9fCZ8JiZ8JiY9fCY9fFwofFwqfFwqPXxcKz18LHwtPXwtPnxcL3xcLz18Onw6Onw7fDx8PDx8PDw9fDw9fD18PT18PT09fD58Pj18Pj58Pj49fD4+Pnw+Pj49fFs/QFteXXxcXj18XF5cXnxcXlxePXx7fFx8fFx8PXxcfFx8fFx8XHw9fH58YnJlYWt8Y2FzZXxjb250aW51ZXxkZWxldGV8ZG98ZWxzZXxmaW5hbGx5fGluc3RhbmNlb2Z8cmV0dXJufHRocm93fHRyeXx0eXBlb2YpXHMqKFwvKD89W14qL10pKD86W14vW1xcXXxcXFtcU1xzXXxcWyg/OlteXFxcXV18XFxbXFNcc10pKig/Ol18JCkpK1wvKS9dKTsoaD1hLnR5cGVzKSYmZS5wdXNoKFsidHlwIixoXSk7YT0oIiIrYS5rZXl3b3JkcykucmVwbGFjZSgvXiB8ICQvZywKIiIpO2EubGVuZ3RoJiZlLnB1c2goWyJrd2QiLFJlZ0V4cCgiXig/OiIrYS5yZXBsYWNlKC9bXHMsXSsvZywifCIpKyIpXFxiIikscV0pO20ucHVzaChbInBsbiIsL15ccysvLHEsIiBcclxuXHRceGEwIl0pO2UucHVzaChbImxpdCIsL15AWyRfYS16XVtcdyRAXSovaSxxXSxbInR5cCIsL14oPzpbQF9dP1tBLVpdK1thLXpdW1x3JEBdKnxcdytfdFxiKS8scV0sWyJwbG4iLC9eWyRfYS16XVtcdyRAXSovaSxxXSxbImxpdCIsL14oPzoweFtcZGEtZl0rfCg/OlxkKD86X1xkKykqXGQqKD86XC5cZCopP3xcLlxkXCspKD86ZVsrLV0/XGQrKT8pW2Etel0qL2kscSwiMDEyMzQ1Njc4OSJdLFsicGxuIiwvXlxcW1xTXHNdPy8scV0sWyJwdW4iLC9eLlteXHNcdyItJCcuL0BcXGBdKi8scV0pO3JldHVybiB4KG0sZSl9ZnVuY3Rpb24gRChhLG0pe2Z1bmN0aW9uIGUoYSl7c3dpdGNoKGEubm9kZVR5cGUpe2Nhc2UgMTppZihrLnRlc3QoYS5jbGFzc05hbWUpKWJyZWFrO2lmKCJCUiI9PT1hLm5vZGVOYW1lKWgoYSksCmEucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGEpO2Vsc2UgZm9yKGE9YS5maXJzdENoaWxkO2E7YT1hLm5leHRTaWJsaW5nKWUoYSk7YnJlYWs7Y2FzZSAzOmNhc2UgNDppZihwKXt2YXIgYj1hLm5vZGVWYWx1ZSxkPWIubWF0Y2godCk7aWYoZCl7dmFyIGM9Yi5zdWJzdHJpbmcoMCxkLmluZGV4KTthLm5vZGVWYWx1ZT1jOyhiPWIuc3Vic3RyaW5nKGQuaW5kZXgrZFswXS5sZW5ndGgpKSYmYS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShzLmNyZWF0ZVRleHROb2RlKGIpLGEubmV4dFNpYmxpbmcpO2goYSk7Y3x8YS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGEpfX19fWZ1bmN0aW9uIGgoYSl7ZnVuY3Rpb24gYihhLGQpe3ZhciBlPWQ/YS5jbG9uZU5vZGUoITEpOmEsZj1hLnBhcmVudE5vZGU7aWYoZil7dmFyIGY9YihmLDEpLGc9YS5uZXh0U2libGluZztmLmFwcGVuZENoaWxkKGUpO2Zvcih2YXIgaD1nO2g7aD1nKWc9aC5uZXh0U2libGluZyxmLmFwcGVuZENoaWxkKGgpfXJldHVybiBlfQpmb3IoOyFhLm5leHRTaWJsaW5nOylpZihhPWEucGFyZW50Tm9kZSwhYSlyZXR1cm47Zm9yKHZhciBhPWIoYS5uZXh0U2libGluZywwKSxlOyhlPWEucGFyZW50Tm9kZSkmJmUubm9kZVR5cGU9PT0xOylhPWU7ZC5wdXNoKGEpfXZhciBrPS8oPzpefFxzKW5vY29kZSg/OlxzfCQpLyx0PS9cclxuP3xcbi8scz1hLm93bmVyRG9jdW1lbnQsbDthLmN1cnJlbnRTdHlsZT9sPWEuY3VycmVudFN0eWxlLndoaXRlU3BhY2U6d2luZG93LmdldENvbXB1dGVkU3R5bGUmJihsPXMuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShhLHEpLmdldFByb3BlcnR5VmFsdWUoIndoaXRlLXNwYWNlIikpO3ZhciBwPWwmJiJwcmUiPT09bC5zdWJzdHJpbmcoMCwzKTtmb3IobD1zLmNyZWF0ZUVsZW1lbnQoIkxJIik7YS5maXJzdENoaWxkOylsLmFwcGVuZENoaWxkKGEuZmlyc3RDaGlsZCk7Zm9yKHZhciBkPVtsXSxnPTA7ZzxkLmxlbmd0aDsrK2cpZShkW2ddKTttPT09KG18MCkmJmRbMF0uc2V0QXR0cmlidXRlKCJ2YWx1ZSIsCm0pO3ZhciByPXMuY3JlYXRlRWxlbWVudCgiT0wiKTtyLmNsYXNzTmFtZT0ibGluZW51bXMiO2Zvcih2YXIgbj1NYXRoLm1heCgwLG0tMXwwKXx8MCxnPTAsej1kLmxlbmd0aDtnPHo7KytnKWw9ZFtnXSxsLmNsYXNzTmFtZT0iTCIrKGcrbiklMTAsbC5maXJzdENoaWxkfHxsLmFwcGVuZENoaWxkKHMuY3JlYXRlVGV4dE5vZGUoIlx4YTAiKSksci5hcHBlbmRDaGlsZChsKTthLmFwcGVuZENoaWxkKHIpfWZ1bmN0aW9uIGsoYSxtKXtmb3IodmFyIGU9bS5sZW5ndGg7LS1lPj0wOyl7dmFyIGg9bVtlXTtBLmhhc093blByb3BlcnR5KGgpP3dpbmRvdy5jb25zb2xlJiZjb25zb2xlLndhcm4oImNhbm5vdCBvdmVycmlkZSBsYW5ndWFnZSBoYW5kbGVyICVzIixoKTpBW2hdPWF9fWZ1bmN0aW9uIEMoYSxtKXtpZighYXx8IUEuaGFzT3duUHJvcGVydHkoYSkpYT0vXlxzKjwvLnRlc3QobSk/ImRlZmF1bHQtbWFya3VwIjoiZGVmYXVsdC1jb2RlIjtyZXR1cm4gQVthXX1mdW5jdGlvbiBFKGEpe3ZhciBtPQphLmc7dHJ5e3ZhciBlPU0oYS5oKSxoPWUuYTthLmE9aDthLmM9ZS5jO2EuZD0wO0MobSxoKShhKTt2YXIgaz0vXGJNU0lFXGIvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCksbT0vXG4vZyx0PWEuYSxzPXQubGVuZ3RoLGU9MCxsPWEuYyxwPWwubGVuZ3RoLGg9MCxkPWEuZSxnPWQubGVuZ3RoLGE9MDtkW2ddPXM7dmFyIHIsbjtmb3Iobj1yPTA7bjxnOylkW25dIT09ZFtuKzJdPyhkW3IrK109ZFtuKytdLGRbcisrXT1kW24rK10pOm4rPTI7Zz1yO2ZvcihuPXI9MDtuPGc7KXtmb3IodmFyIHo9ZFtuXSxmPWRbbisxXSxiPW4rMjtiKzI8PWcmJmRbYisxXT09PWY7KWIrPTI7ZFtyKytdPXo7ZFtyKytdPWY7bj1ifWZvcihkLmxlbmd0aD1yO2g8cDspe3ZhciBvPWxbaCsyXXx8cyxjPWRbYSsyXXx8cyxiPU1hdGgubWluKG8sYyksaT1sW2grMV0sajtpZihpLm5vZGVUeXBlIT09MSYmKGo9dC5zdWJzdHJpbmcoZSxiKSkpe2smJihqPWoucmVwbGFjZShtLCJcciIpKTtpLm5vZGVWYWx1ZT0Kajt2YXIgdT1pLm93bmVyRG9jdW1lbnQsdj11LmNyZWF0ZUVsZW1lbnQoIlNQQU4iKTt2LmNsYXNzTmFtZT1kW2ErMV07dmFyIHg9aS5wYXJlbnROb2RlO3gucmVwbGFjZUNoaWxkKHYsaSk7di5hcHBlbmRDaGlsZChpKTtlPG8mJihsW2grMV09aT11LmNyZWF0ZVRleHROb2RlKHQuc3Vic3RyaW5nKGIsbykpLHguaW5zZXJ0QmVmb3JlKGksdi5uZXh0U2libGluZykpfWU9YjtlPj1vJiYoaCs9Mik7ZT49YyYmKGErPTIpfX1jYXRjaCh3KXsiY29uc29sZSJpbiB3aW5kb3cmJmNvbnNvbGUubG9nKHcmJncuc3RhY2s/dy5zdGFjazp3KX19dmFyIHY9WyJicmVhayxjb250aW51ZSxkbyxlbHNlLGZvcixpZixyZXR1cm4sd2hpbGUiXSx3PVtbdiwiYXV0byxjYXNlLGNoYXIsY29uc3QsZGVmYXVsdCxkb3VibGUsZW51bSxleHRlcm4sZmxvYXQsZ290byxpbnQsbG9uZyxyZWdpc3RlcixzaG9ydCxzaWduZWQsc2l6ZW9mLHN0YXRpYyxzdHJ1Y3Qsc3dpdGNoLHR5cGVkZWYsdW5pb24sdW5zaWduZWQsdm9pZCx2b2xhdGlsZSJdLAoiY2F0Y2gsY2xhc3MsZGVsZXRlLGZhbHNlLGltcG9ydCxuZXcsb3BlcmF0b3IscHJpdmF0ZSxwcm90ZWN0ZWQscHVibGljLHRoaXMsdGhyb3csdHJ1ZSx0cnksdHlwZW9mIl0sRj1bdywiYWxpZ25vZixhbGlnbl91bmlvbixhc20sYXhpb20sYm9vbCxjb25jZXB0LGNvbmNlcHRfbWFwLGNvbnN0X2Nhc3QsY29uc3RleHByLGRlY2x0eXBlLGR5bmFtaWNfY2FzdCxleHBsaWNpdCxleHBvcnQsZnJpZW5kLGlubGluZSxsYXRlX2NoZWNrLG11dGFibGUsbmFtZXNwYWNlLG51bGxwdHIscmVpbnRlcnByZXRfY2FzdCxzdGF0aWNfYXNzZXJ0LHN0YXRpY19jYXN0LHRlbXBsYXRlLHR5cGVpZCx0eXBlbmFtZSx1c2luZyx2aXJ0dWFsLHdoZXJlIl0sRz1bdywiYWJzdHJhY3QsYm9vbGVhbixieXRlLGV4dGVuZHMsZmluYWwsZmluYWxseSxpbXBsZW1lbnRzLGltcG9ydCxpbnN0YW5jZW9mLG51bGwsbmF0aXZlLHBhY2thZ2Usc3RyaWN0ZnAsc3VwZXIsc3luY2hyb25pemVkLHRocm93cyx0cmFuc2llbnQiXSwKSD1bRywiYXMsYmFzZSxieSxjaGVja2VkLGRlY2ltYWwsZGVsZWdhdGUsZGVzY2VuZGluZyxkeW5hbWljLGV2ZW50LGZpeGVkLGZvcmVhY2gsZnJvbSxncm91cCxpbXBsaWNpdCxpbixpbnRlcmZhY2UsaW50ZXJuYWwsaW50byxpcyxsb2NrLG9iamVjdCxvdXQsb3ZlcnJpZGUsb3JkZXJieSxwYXJhbXMscGFydGlhbCxyZWFkb25seSxyZWYsc2J5dGUsc2VhbGVkLHN0YWNrYWxsb2Msc3RyaW5nLHNlbGVjdCx1aW50LHVsb25nLHVuY2hlY2tlZCx1bnNhZmUsdXNob3J0LHZhciJdLHc9W3csImRlYnVnZ2VyLGV2YWwsZXhwb3J0LGZ1bmN0aW9uLGdldCxudWxsLHNldCx1bmRlZmluZWQsdmFyLHdpdGgsSW5maW5pdHksTmFOIl0sST1bdiwiYW5kLGFzLGFzc2VydCxjbGFzcyxkZWYsZGVsLGVsaWYsZXhjZXB0LGV4ZWMsZmluYWxseSxmcm9tLGdsb2JhbCxpbXBvcnQsaW4saXMsbGFtYmRhLG5vbmxvY2FsLG5vdCxvcixwYXNzLHByaW50LHJhaXNlLHRyeSx3aXRoLHlpZWxkLEZhbHNlLFRydWUsTm9uZSJdLApKPVt2LCJhbGlhcyxhbmQsYmVnaW4sY2FzZSxjbGFzcyxkZWYsZGVmaW5lZCxlbHNpZixlbmQsZW5zdXJlLGZhbHNlLGluLG1vZHVsZSxuZXh0LG5pbCxub3Qsb3IscmVkbyxyZXNjdWUscmV0cnksc2VsZixzdXBlcix0aGVuLHRydWUsdW5kZWYsdW5sZXNzLHVudGlsLHdoZW4seWllbGQsQkVHSU4sRU5EIl0sdj1bdiwiY2FzZSxkb25lLGVsaWYsZXNhYyxldmFsLGZpLGZ1bmN0aW9uLGluLGxvY2FsLHNldCx0aGVuLHVudGlsIl0sSz0vXihESVJ8RklMRXx2ZWN0b3J8KGRlfHByaW9yaXR5Xyk/cXVldWV8bGlzdHxzdGFja3woY29uc3RfKT9pdGVyYXRvcnwobXVsdGkpPyhzZXR8bWFwKXxiaXRzZXR8dT8oaW50fGZsb2F0KVxkKikvLE49L1xTLyxPPXUoe2tleXdvcmRzOltGLEgsdywiY2FsbGVyLGRlbGV0ZSxkaWUsZG8sZHVtcCxlbHNpZixldmFsLGV4aXQsZm9yZWFjaCxmb3IsZ290byxpZixpbXBvcnQsbGFzdCxsb2NhbCxteSxuZXh0LG5vLG91cixwcmludCxwYWNrYWdlLHJlZG8scmVxdWlyZSxzdWIsdW5kZWYsdW5sZXNzLHVudGlsLHVzZSx3YW50YXJyYXksd2hpbGUsQkVHSU4sRU5EIisKSSxKLHZdLGhhc2hDb21tZW50czohMCxjU3R5bGVDb21tZW50czohMCxtdWx0aUxpbmVTdHJpbmdzOiEwLHJlZ2V4TGl0ZXJhbHM6ITB9KSxBPXt9O2soTyxbImRlZmF1bHQtY29kZSJdKTtrKHgoW10sW1sicGxuIiwvXltePD9dKy9dLFsiZGVjIiwvXjwhXHdbXj5dKig/Oj58JCkvXSxbImNvbSIsL148XCEtLVtcU1xzXSo/KD86LS1cPnwkKS9dLFsibGFuZy0iLC9ePFw/KFtcU1xzXSs/KSg/Olw/PnwkKS9dLFsibGFuZy0iLC9ePCUoW1xTXHNdKz8pKD86JT58JCkvXSxbInB1biIsL14oPzo8WyU/XXxbJT9dPikvXSxbImxhbmctIiwvXjx4bXBcYltePl0qPihbXFNcc10rPyk8XC94bXBcYltePl0qPi9pXSxbImxhbmctanMiLC9ePHNjcmlwdFxiW14+XSo+KFtcU1xzXSo/KSg8XC9zY3JpcHRcYltePl0qPikvaV0sWyJsYW5nLWNzcyIsL148c3R5bGVcYltePl0qPihbXFNcc10qPykoPFwvc3R5bGVcYltePl0qPikvaV0sWyJsYW5nLWluLnRhZyIsL14oPFwvP1thLXpdW148Pl0qPikvaV1dKSwKWyJkZWZhdWx0LW1hcmt1cCIsImh0bSIsImh0bWwiLCJteG1sIiwieGh0bWwiLCJ4bWwiLCJ4c2wiXSk7ayh4KFtbInBsbiIsL15ccysvLHEsIiBcdFxyXG4iXSxbImF0diIsL14oPzoiW14iXSoiP3wnW14nXSonPykvLHEsIlwiJyJdXSxbWyJ0YWciLC9eXjxcLz9bYS16XSg/Oltcdy0uOl0qXHcpP3xcLz8+JC9pXSxbImF0biIsL14oPyFzdHlsZVtccz1dfG9uKVthLXpdKD86W1x3Oi1dKlx3KT8vaV0sWyJsYW5nLXVxLnZhbCIsL149XHMqKFteXHMiJz5dKig/OlteXHMiJy8+XXxcLyg/PVxzKSkpL10sWyJwdW4iLC9eWy88LT5dKy9dLFsibGFuZy1qcyIsL15vblx3K1xzKj1ccyoiKFteIl0rKSIvaV0sWyJsYW5nLWpzIiwvXm9uXHcrXHMqPVxzKicoW14nXSspJy9pXSxbImxhbmctanMiLC9eb25cdytccyo9XHMqKFteXHMiJz5dKykvaV0sWyJsYW5nLWNzcyIsL15zdHlsZVxzKj1ccyoiKFteIl0rKSIvaV0sWyJsYW5nLWNzcyIsL15zdHlsZVxzKj1ccyonKFteJ10rKScvaV0sWyJsYW5nLWNzcyIsCi9ec3R5bGVccyo9XHMqKFteXHMiJz5dKykvaV1dKSxbImluLnRhZyJdKTtrKHgoW10sW1siYXR2IiwvXltcU1xzXSsvXV0pLFsidXEudmFsIl0pO2sodSh7a2V5d29yZHM6RixoYXNoQ29tbWVudHM6ITAsY1N0eWxlQ29tbWVudHM6ITAsdHlwZXM6S30pLFsiYyIsImNjIiwiY3BwIiwiY3h4IiwiY3ljIiwibSJdKTtrKHUoe2tleXdvcmRzOiJudWxsLHRydWUsZmFsc2UifSksWyJqc29uIl0pO2sodSh7a2V5d29yZHM6SCxoYXNoQ29tbWVudHM6ITAsY1N0eWxlQ29tbWVudHM6ITAsdmVyYmF0aW1TdHJpbmdzOiEwLHR5cGVzOkt9KSxbImNzIl0pO2sodSh7a2V5d29yZHM6RyxjU3R5bGVDb21tZW50czohMH0pLFsiamF2YSJdKTtrKHUoe2tleXdvcmRzOnYsaGFzaENvbW1lbnRzOiEwLG11bHRpTGluZVN0cmluZ3M6ITB9KSxbImJzaCIsImNzaCIsInNoIl0pO2sodSh7a2V5d29yZHM6SSxoYXNoQ29tbWVudHM6ITAsbXVsdGlMaW5lU3RyaW5nczohMCx0cmlwbGVRdW90ZWRTdHJpbmdzOiEwfSksClsiY3YiLCJweSJdKTtrKHUoe2tleXdvcmRzOiJjYWxsZXIsZGVsZXRlLGRpZSxkbyxkdW1wLGVsc2lmLGV2YWwsZXhpdCxmb3JlYWNoLGZvcixnb3RvLGlmLGltcG9ydCxsYXN0LGxvY2FsLG15LG5leHQsbm8sb3VyLHByaW50LHBhY2thZ2UscmVkbyxyZXF1aXJlLHN1Yix1bmRlZix1bmxlc3MsdW50aWwsdXNlLHdhbnRhcnJheSx3aGlsZSxCRUdJTixFTkQiLGhhc2hDb21tZW50czohMCxtdWx0aUxpbmVTdHJpbmdzOiEwLHJlZ2V4TGl0ZXJhbHM6ITB9KSxbInBlcmwiLCJwbCIsInBtIl0pO2sodSh7a2V5d29yZHM6SixoYXNoQ29tbWVudHM6ITAsbXVsdGlMaW5lU3RyaW5nczohMCxyZWdleExpdGVyYWxzOiEwfSksWyJyYiJdKTtrKHUoe2tleXdvcmRzOncsY1N0eWxlQ29tbWVudHM6ITAscmVnZXhMaXRlcmFsczohMH0pLFsianMiXSk7ayh1KHtrZXl3b3JkczoiYWxsLGFuZCxieSxjYXRjaCxjbGFzcyxlbHNlLGV4dGVuZHMsZmFsc2UsZmluYWxseSxmb3IsaWYsaW4saXMsaXNudCxsb29wLG5ldyxubyxub3QsbnVsbCxvZixvZmYsb24sb3IscmV0dXJuLHN1cGVyLHRoZW4sdHJ1ZSx0cnksdW5sZXNzLHVudGlsLHdoZW4sd2hpbGUseWVzIiwKaGFzaENvbW1lbnRzOjMsY1N0eWxlQ29tbWVudHM6ITAsbXVsdGlsaW5lU3RyaW5nczohMCx0cmlwbGVRdW90ZWRTdHJpbmdzOiEwLHJlZ2V4TGl0ZXJhbHM6ITB9KSxbImNvZmZlZSJdKTtrKHgoW10sW1sic3RyIiwvXltcU1xzXSsvXV0pLFsicmVnZXgiXSk7d2luZG93LnByZXR0eVByaW50T25lPWZ1bmN0aW9uKGEsbSxlKXt2YXIgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJQUkUiKTtoLmlubmVySFRNTD1hO2UmJkQoaCxlKTtFKHtnOm0saTplLGg6aH0pO3JldHVybiBoLmlubmVySFRNTH07d2luZG93LnByZXR0eVByaW50PWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIG0oKXtmb3IodmFyIGU9d2luZG93LlBSX1NIT1VMRF9VU0VfQ09OVElOVUFUSU9OP2wubm93KCkrMjUwOkluZmluaXR5O3A8aC5sZW5ndGgmJmwubm93KCk8ZTtwKyspe3ZhciBuPWhbcF0saz1uLmNsYXNzTmFtZTtpZihrLmluZGV4T2YoInByZXR0eXByaW50Iik+PTApe3ZhciBrPWsubWF0Y2goZyksZixiO2lmKGI9CiFrKXtiPW47Zm9yKHZhciBvPXZvaWQgMCxjPWIuZmlyc3RDaGlsZDtjO2M9Yy5uZXh0U2libGluZyl2YXIgaT1jLm5vZGVUeXBlLG89aT09PTE/bz9iOmM6aT09PTM/Ti50ZXN0KGMubm9kZVZhbHVlKT9iOm86bztiPShmPW89PT1iP3ZvaWQgMDpvKSYmIkNPREUiPT09Zi50YWdOYW1lfWImJihrPWYuY2xhc3NOYW1lLm1hdGNoKGcpKTtrJiYoaz1rWzFdKTtiPSExO2ZvcihvPW4ucGFyZW50Tm9kZTtvO289by5wYXJlbnROb2RlKWlmKChvLnRhZ05hbWU9PT0icHJlInx8by50YWdOYW1lPT09ImNvZGUifHxvLnRhZ05hbWU9PT0ieG1wIikmJm8uY2xhc3NOYW1lJiZvLmNsYXNzTmFtZS5pbmRleE9mKCJwcmV0dHlwcmludCIpPj0wKXtiPSEwO2JyZWFrfWJ8fCgoYj0oYj1uLmNsYXNzTmFtZS5tYXRjaCgvXGJsaW5lbnVtc1xiKD86OihcZCspKT8vKSk/YlsxXSYmYlsxXS5sZW5ndGg/K2JbMV06ITA6ITEpJiZEKG4sYiksZD17ZzprLGg6bixpOmJ9LEUoZCkpfX1wPGgubGVuZ3RoP3NldFRpbWVvdXQobSwKMjUwKTphJiZhKCl9Zm9yKHZhciBlPVtkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgicHJlIiksZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImNvZGUiKSxkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgieG1wIildLGg9W10saz0wO2s8ZS5sZW5ndGg7KytrKWZvcih2YXIgdD0wLHM9ZVtrXS5sZW5ndGg7dDxzOysrdCloLnB1c2goZVtrXVt0XSk7dmFyIGU9cSxsPURhdGU7bC5ub3d8fChsPXtub3c6ZnVuY3Rpb24oKXtyZXR1cm4rbmV3IERhdGV9fSk7dmFyIHA9MCxkLGc9L1xibGFuZyg/OnVhZ2UpPy0oW1x3Ll0rKSg/IVxTKS87bSgpfTt3aW5kb3cuUFI9e2NyZWF0ZVNpbXBsZUxleGVyOngscmVnaXN0ZXJMYW5nSGFuZGxlcjprLHNvdXJjZURlY29yYXRvcjp1LFBSX0FUVFJJQl9OQU1FOiJhdG4iLFBSX0FUVFJJQl9WQUxVRToiYXR2IixQUl9DT01NRU5UOiJjb20iLFBSX0RFQ0xBUkFUSU9OOiJkZWMiLFBSX0tFWVdPUkQ6Imt3ZCIsUFJfTElURVJBTDoibGl0IiwKUFJfTk9DT0RFOiJub2NvZGUiLFBSX1BMQUlOOiJwbG4iLFBSX1BVTkNUVUFUSU9OOiJwdW4iLFBSX1NPVVJDRToic3JjIixQUl9TVFJJTkc6InN0ciIsUFJfVEFHOiJ0YWciLFBSX1RZUEU6InR5cCJ9fSkoKTsK"></script>
<script src="data:application/x-javascript;base64,Ly8gQ29weXJpZ2h0IChDKSAyMDEyIEplZmZyZXkgQi4gQXJub2xkCi8vCi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwovLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAovLwovLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAovLwovLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgovLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKCi8qKgogKiBAZmlsZW92ZXJ2aWV3CiAqIFJlZ2lzdGVycyBhIGxhbmd1YWdlIGhhbmRsZXIgZm9yIFMsIFMtcGx1cywgYW5kIFIgc291cmNlIGNvZGUuCiAqCiAqCiAqIFRvIHVzZSwgaW5jbHVkZSBwcmV0dGlmeS5qcyBhbmQgdGhpcyBmaWxlIGluIHlvdXIgSFRNTCBwYWdlLgogKiBUaGVuIHB1dCB5b3VyIGNvZGUgaW4gYW4gSFRNTCB0YWcgbGlrZQogKiAgICAgIDxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctciI+IGNvZGUgPC9wcmU+CiAqCiAqIExhbmd1YWdlIGRlZmluaXRpb24gZnJvbQogKiBodHRwOi8vY3Jhbi5yLXByb2plY3Qub3JnL2RvYy9tYW51YWxzL1ItbGFuZy5odG1sLgogKiBNYW55IG9mIHRoZSByZWdleGVzIGFyZSBzaGFyZWQgIHdpdGggdGhlIHB5Z21lbnRzIFNMZXhlciwKICogaHR0cDovL3B5Z21lbnRzLm9yZy8uCiAqCiAqIE9yaWdpbmFsOiBodHRwczovL3Jhdy5naXRodWIuY29tL2pybm9sZC9wcmV0dGlmeS1sYW5nLXItYnVncy9tYXN0ZXIvbGFuZy1yLmpzCiAqCiAqIEBhdXRob3IgamVmZnJleS5hcm5vbGRAZ21haWwuY29tCiAqLwpQUlsncmVnaXN0ZXJMYW5nSGFuZGxlciddKAogICAgUFJbJ2NyZWF0ZVNpbXBsZUxleGVyJ10oCiAgICAgICAgWwogICAgICAgICAgICBbUFJbJ1BSX1BMQUlOJ10sICAgICAgIC9eW1x0XG5cciBceEEwXSsvLCBudWxsLCAnXHRcblxyIFx4QTAnXSwKCSAgICBbUFJbJ1BSX1NUUklORyddLCAgICAgIC9eXCIoPzpbXlwiXFxdfFxcW1xzXFNdKSooPzpcInwkKS8sIG51bGwsICciJ10sCgkgICAgW1BSWydQUl9TVFJJTkcnXSwgICAgICAvXlwnKD86W15cJ1xcXXxcXFtcc1xTXSkqKD86XCd8JCkvLCBudWxsLCAiJyJdCiAgICAgICAgXSwKICAgICAgICBbCiAgICAgICAgICAgIFtQUlsnUFJfQ09NTUVOVCddLCAgICAgL14jLiovXSwKCSAgICBbUFJbJ1BSX0tFWVdPUkQnXSwgICAgIC9eKD86aWZ8ZWxzZXxmb3J8d2hpbGV8cmVwZWF0fGlufG5leHR8YnJlYWt8cmV0dXJufHN3aXRjaHxmdW5jdGlvbikoPyFbQS1aYS16MC05Xy5dKS9dLAoJICAgIC8vIGhleCBudW1iZXMKCSAgICBbUFJbJ1BSX0xJVEVSQUwnXSwgL14wW3hYXVthLWZBLUYwLTldKyhbcFBdWzAtOV0rKT9bTGldPy9dLAoJICAgIC8vIERlY2ltYWwgbnVtYmVycwogICAgICAgICAgICBbUFJbJ1BSX0xJVEVSQUwnXSwgL15bKy1dPyhbMC05XSsoXC5bMC05XSspP3xcLlswLTldKykoW2VFXVsrLV0/WzAtOV0rKT9bTGldPy9dLAoJICAgIC8vIGJ1aWx0aW4gc3ltYm9scwoJICAgIFtQUlsnUFJfTElURVJBTCddLCAvXig/Ok5VTEx8TkEoPzpfKD86aW50ZWdlcnxyZWFsfGNvbXBsZXh8Y2hhcmFjdGVyKV8pP3xJbmZ8VFJVRXxGQUxTRXxOYU58XC5cLig/OlwufFswLTldKykpKD8hW0EtWmEtejAtOV8uXSkvXSwKCSAgICAvLyBhc3NpZ25tZW50LCBvcGVyYXRvcnMsIGFuZCBwYXJlbnMsIGV0Yy4KCSAgICBbUFJbJ1BSX1BVTkNUVUFUSU9OJ10sIC9eKD86PDw/LXwtPj4/fC18PT18PD18Pj18PHw+fCYmP3whPXxcfFx8P3xcKnxcK3xcXnxcL3whfCUuKj8lfD18fnxcJHxAfDp7MSwzfXxbXFtcXSgpe307LD9dKS9dLAoJICAgIC8vIHZhbGlkIHZhcmlhYmxlIG5hbWVzCgkgICAgW1BSWydQUl9QTEFJTiddLCAvXig/OltBLVphLXpdK1tBLVphLXowLTlfLl0qfFwuW2EtekEtWl9dWzAtOWEtekEtWlwuX10qKSg/IVtBLVphLXowLTlfLl0pL10sCgkgICAgLy8gc3RyaW5nIGJhY2t0aWNrCgkgICAgW1BSWydQUl9TVFJJTkcnXSwgL15gLitgL10KICAgICAgICBdKSwKICAgIFsncicsICdzJywgJ1InLCAnUycsICdTcGx1cyddKTsK"></script>
<script src="data:application/x-javascript;base64,dmFyIGE9bnVsbDsKUFIucmVnaXN0ZXJMYW5nSGFuZGxlcihQUi5jcmVhdGVTaW1wbGVMZXhlcihbWyJwdW4iLC9eWzo+P3xdKy8sYSwiOnw+PyJdLFsiZGVjIiwvXiUoPzpZQU1MfFRBRylbXlxuXHIjXSsvLGEsIiUiXSxbInR5cCIsL14mXFMrLyxhLCImIl0sWyJ0eXAiLC9eIVxTKi8sYSwiISJdLFsic3RyIiwvXiIoPzpbXiJcXF18XFwuKSooPzoifCQpLyxhLCciJ10sWyJzdHIiLC9eJyg/OlteJ118JycpKig/Oid8JCkvLGEsIiciXSxbImNvbSIsL14jW15cblxyXSovLGEsIiMiXSxbInBsbiIsL15ccysvLGEsIiBcdFxyXG4iXV0sW1siZGVjIiwvXig/Oi0tLXxcLlwuXC4pKD86W1xuXHJdfCQpL10sWyJwdW4iLC9eLS9dLFsia3dkIiwvXlx3KzpbXG5cciBdL10sWyJwbG4iLC9eXHcrL11dKSxbInlhbWwiLCJ5bWwiXSk7Cg=="></script>
<script src="data:application/x-javascript;base64,LyoKICogSGFtbWVyLkpTCiAqIHZlcnNpb24gMC40CiAqIGF1dGhvcjogRWlnaHQgTWVkaWEKICogaHR0cHM6Ly9naXRodWIuY29tL0VpZ2h0TWVkaWEvaGFtbWVyLmpzCiAqLwpmdW5jdGlvbiBIYW1tZXIoZWxlbWVudCwgb3B0aW9ucywgdW5kZWZpbmVkKQp7CiAgICB2YXIgc2VsZiA9IHRoaXM7CgogICAgdmFyIGRlZmF1bHRzID0gewogICAgICAgIC8vIHByZXZlbnQgdGhlIGRlZmF1bHQgZXZlbnQgb3Igbm90Li4uIG1pZ2h0IGJlIGJ1Z2d5IHdoZW4gZmFsc2UKICAgICAgICBwcmV2ZW50X2RlZmF1bHQgICAgOiBmYWxzZSwKICAgICAgICBjc3NfaGFja3MgICAgICAgICAgOiB0cnVlLAoKICAgICAgICBkcmFnICAgICAgICAgICAgICAgOiB0cnVlLAogICAgICAgIGRyYWdfdmVydGljYWwgICAgICA6IHRydWUsCiAgICAgICAgZHJhZ19ob3Jpem9udGFsICAgIDogdHJ1ZSwKICAgICAgICAvLyBtaW5pbXVtIGRpc3RhbmNlIGJlZm9yZSB0aGUgZHJhZyBldmVudCBzdGFydHMKICAgICAgICBkcmFnX21pbl9kaXN0YW5jZSAgOiAyMCwgLy8gcGl4ZWxzCgogICAgICAgIC8vIHBpbmNoIHpvb20gYW5kIHJvdGF0aW9uCiAgICAgICAgdHJhbnNmb3JtICAgICAgICAgIDogdHJ1ZSwKICAgICAgICBzY2FsZV90cmVzaG9sZCAgICAgOiAwLjEsCiAgICAgICAgcm90YXRpb25fdHJlc2hvbGQgIDogMTUsIC8vIGRlZ3JlZXMKCiAgICAgICAgdGFwICAgICAgICAgICAgICAgIDogdHJ1ZSwKICAgICAgICB0YXBfZG91YmxlICAgICAgICAgOiB0cnVlLAogICAgICAgIHRhcF9tYXhfaW50ZXJ2YWwgICA6IDMwMCwKICAgICAgICB0YXBfZG91YmxlX2Rpc3RhbmNlOiAyMCwKCiAgICAgICAgaG9sZCAgICAgICAgICAgICAgIDogdHJ1ZSwKICAgICAgICBob2xkX3RpbWVvdXQgICAgICAgOiA1MDAKICAgIH07CiAgICBvcHRpb25zID0gbWVyZ2VPYmplY3QoZGVmYXVsdHMsIG9wdGlvbnMpOwoKICAgIC8vIHNvbWUgY3NzIGhhY2tzCiAgICAoZnVuY3Rpb24oKSB7CiAgICAgICAgaWYoIW9wdGlvbnMuY3NzX2hhY2tzKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHZhciB2ZW5kb3JzID0gWyd3ZWJraXQnLCdtb3onLCdtcycsJ28nLCcnXTsKICAgICAgICB2YXIgY3NzX3Byb3BzID0gewogICAgICAgICAgICAidXNlclNlbGVjdCI6ICJub25lIiwKICAgICAgICAgICAgInRvdWNoQ2FsbG91dCI6ICJub25lIiwKICAgICAgICAgICAgInVzZXJEcmFnIjogIm5vbmUiLAogICAgICAgICAgICAidGFwSGlnaGxpZ2h0Q29sb3IiOiAicmdiYSgwLDAsMCwwKSIKICAgICAgICB9OwoKICAgICAgICB2YXIgcHJvcCA9ICcnOwogICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCB2ZW5kb3JzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGZvcih2YXIgcCBpbiBjc3NfcHJvcHMpIHsKICAgICAgICAgICAgICAgIHByb3AgPSBwOwogICAgICAgICAgICAgICAgaWYodmVuZG9yc1tpXSkgewogICAgICAgICAgICAgICAgICAgIHByb3AgPSB2ZW5kb3JzW2ldICsgcHJvcC5zdWJzdHJpbmcoMCwgMSkudG9VcHBlckNhc2UoKSArIHByb3Auc3Vic3RyaW5nKDEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZVsgcHJvcCBdID0gY3NzX3Byb3BzW3BdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSkoKTsKCiAgICAvLyBob2xkcyB0aGUgZGlzdGFuY2UgdGhhdCBoYXMgYmVlbiBtb3ZlZAogICAgdmFyIF9kaXN0YW5jZSA9IDA7CgogICAgLy8gaG9sZHMgdGhlIGV4YWN0IGFuZ2xlIHRoYXQgaGFzIGJlZW4gbW92ZWQKICAgIHZhciBfYW5nbGUgPSAwOwoKICAgIC8vIGhvbGRzIHRoZSBkaXJhY3Rpb24gdGhhdCBoYXMgYmVlbiBtb3ZlZAogICAgdmFyIF9kaXJlY3Rpb24gPSAwOwoKICAgIC8vIGhvbGRzIHBvc2l0aW9uIG1vdmVtZW50IGZvciBzbGlkaW5nCiAgICB2YXIgX3BvcyA9IHsgfTsKCiAgICAvLyBob3cgbWFueSBmaW5nZXJzIGFyZSBvbiB0aGUgc2NyZWVuCiAgICB2YXIgX2ZpbmdlcnMgPSAwOwoKICAgIHZhciBfZmlyc3QgPSBmYWxzZTsKCiAgICB2YXIgX2dlc3R1cmUgPSBudWxsOwogICAgdmFyIF9wcmV2X2dlc3R1cmUgPSBudWxsOwoKICAgIHZhciBfdG91Y2hfc3RhcnRfdGltZSA9IG51bGw7CiAgICB2YXIgX3ByZXZfdGFwX3BvcyA9IHt4OiAwLCB5OiAwfTsKICAgIHZhciBfcHJldl90YXBfZW5kX3RpbWUgPSBudWxsOwoKICAgIHZhciBfaG9sZF90aW1lciA9IG51bGw7CgogICAgdmFyIF9vZmZzZXQgPSB7fTsKCiAgICAvLyBrZWVwIHRyYWNrIG9mIHRoZSBtb3VzZSBzdGF0dXMKICAgIHZhciBfbW91c2Vkb3duID0gZmFsc2U7CgogICAgdmFyIF9ldmVudF9zdGFydDsKICAgIHZhciBfZXZlbnRfbW92ZTsKICAgIHZhciBfZXZlbnRfZW5kOwoKCiAgICAvKioKICAgICAqIGFuZ2xlIHRvIGRpcmVjdGlvbiBkZWZpbmUKICAgICAqIEBwYXJhbSAgZmxvYXQgICAgYW5nbGUKICAgICAqIEByZXR1cm4gc3RyaW5nICAgZGlyZWN0aW9uCiAgICAgKi8KICAgIHRoaXMuZ2V0RGlyZWN0aW9uRnJvbUFuZ2xlID0gZnVuY3Rpb24oIGFuZ2xlICkKICAgIHsKICAgICAgICB2YXIgZGlyZWN0aW9ucyA9IHsKICAgICAgICAgICAgZG93bjogYW5nbGUgPj0gNDUgJiYgYW5nbGUgPCAxMzUsIC8vOTAKICAgICAgICAgICAgbGVmdDogYW5nbGUgPj0gMTM1IHx8IGFuZ2xlIDw9IC0xMzUsIC8vMTgwCiAgICAgICAgICAgIHVwOiBhbmdsZSA8IC00NSAmJiBhbmdsZSA+IC0xMzUsIC8vMjcwCiAgICAgICAgICAgIHJpZ2h0OiBhbmdsZSA+PSAtNDUgJiYgYW5nbGUgPD0gNDUgLy8wCiAgICAgICAgfTsKCiAgICAgICAgdmFyIGRpcmVjdGlvbiwga2V5OwogICAgICAgIGZvcihrZXkgaW4gZGlyZWN0aW9ucyl7CiAgICAgICAgICAgIGlmKGRpcmVjdGlvbnNba2V5XSl7CiAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSBrZXk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gZGlyZWN0aW9uOwogICAgfTsKCgogICAgLyoqCiAgICAgKiBjb3VudCB0aGUgbnVtYmVyIG9mIGZpbmdlcnMgaW4gdGhlIGV2ZW50CiAgICAgKiB3aGVuIG5vIGZpbmdlcnMgYXJlIGRldGVjdGVkLCBvbmUgZmluZ2VyIGlzIHJldHVybmVkIChtb3VzZSBwb2ludGVyKQogICAgICogQHBhcmFtICBldmVudAogICAgICogQHJldHVybiBpbnQgIGZpbmdlcnMKICAgICAqLwogICAgZnVuY3Rpb24gY291bnRGaW5nZXJzKCBldmVudCApCiAgICB7CiAgICAgICAgLy8gdGhlcmUgaXMgYSBidWcgb24gYW5kcm9pZCAodW50aWwgdjQ/KSB0aGF0IHRvdWNoZXMgaXMgYWx3YXlzIDEsCiAgICAgICAgLy8gc28gbm8gbXVsdGl0b3VjaCBpcyBzdXBwb3J0ZWQsIGUuZy4gbm8sIHpvb20gYW5kIHJvdGF0aW9uLi4uCiAgICAgICAgcmV0dXJuIGV2ZW50LnRvdWNoZXMgPyBldmVudC50b3VjaGVzLmxlbmd0aCA6IDE7CiAgICB9CgoKICAgIC8qKgogICAgICogZ2V0IHRoZSB4IGFuZCB5IHBvc2l0aW9ucyBmcm9tIHRoZSBldmVudCBvYmplY3QKICAgICAqIEBwYXJhbSAgZXZlbnQKICAgICAqIEByZXR1cm4gYXJyYXkgIFt7IHg6IGludCwgeTogaW50IH1dCiAgICAgKi8KICAgIGZ1bmN0aW9uIGdldFhZZnJvbUV2ZW50KCBldmVudCApCiAgICB7CiAgICAgICAgZXZlbnQgPSBldmVudCB8fCB3aW5kb3cuZXZlbnQ7CgogICAgICAgIC8vIG5vIHRvdWNoZXMsIHVzZSB0aGUgZXZlbnQgcGFnZVggYW5kIHBhZ2VZCiAgICAgICAgaWYoIWV2ZW50LnRvdWNoZXMpIHsKICAgICAgICAgICAgdmFyIGRvYyA9IGRvY3VtZW50LAogICAgICAgICAgICAgICAgYm9keSA9IGRvYy5ib2R5OwoKICAgICAgICAgICAgcmV0dXJuIFt7CiAgICAgICAgICAgICAgICB4OiBldmVudC5wYWdlWCB8fCBldmVudC5jbGllbnRYICsgKCBkb2MgJiYgZG9jLnNjcm9sbExlZnQgfHwgYm9keSAmJiBib2R5LnNjcm9sbExlZnQgfHwgMCApIC0gKCBkb2MgJiYgZG9jLmNsaWVudExlZnQgfHwgYm9keSAmJiBkb2MuY2xpZW50TGVmdCB8fCAwICksCiAgICAgICAgICAgICAgICB5OiBldmVudC5wYWdlWSB8fCBldmVudC5jbGllbnRZICsgKCBkb2MgJiYgZG9jLnNjcm9sbFRvcCB8fCBib2R5ICYmIGJvZHkuc2Nyb2xsVG9wIHx8IDAgKSAtICggZG9jICYmIGRvYy5jbGllbnRUb3AgfHwgYm9keSAmJiBkb2MuY2xpZW50VG9wIHx8IDAgKQogICAgICAgICAgICB9XTsKICAgICAgICB9CiAgICAgICAgLy8gbXVsdGl0b3VjaCwgcmV0dXJuIGFycmF5IHdpdGggcG9zaXRpb25zCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHZhciBwb3MgPSBbXSwgc3JjOwogICAgICAgICAgICBmb3IodmFyIHQ9MCwgbGVuPWV2ZW50LnRvdWNoZXMubGVuZ3RoOyB0PGxlbjsgdCsrKSB7CiAgICAgICAgICAgICAgICBzcmMgPSBldmVudC50b3VjaGVzW3RdOwogICAgICAgICAgICAgICAgcG9zLnB1c2goeyB4OiBzcmMucGFnZVgsIHk6IHNyYy5wYWdlWSB9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcG9zOwogICAgICAgIH0KICAgIH0KCgogICAgLyoqCiAgICAgKiBjYWxjdWxhdGUgdGhlIGFuZ2xlIGJldHdlZW4gdHdvIHBvaW50cwogICAgICogQHBhcmFtIG9iamVjdCBwb3MxIHsgeDogaW50LCB5OiBpbnQgfQogICAgICogQHBhcmFtIG9iamVjdCBwb3MyIHsgeDogaW50LCB5OiBpbnQgfQogICAgICovCiAgICBmdW5jdGlvbiBnZXRBbmdsZSggcG9zMSwgcG9zMiApCiAgICB7CiAgICAgICAgcmV0dXJuIE1hdGguYXRhbjIocG9zMi55IC0gcG9zMS55LCBwb3MyLnggLSBwb3MxLngpICogMTgwIC8gTWF0aC5QSTsKICAgIH0KCiAgICAvKioKICAgICAqIHRyaWdnZXIgYW4gZXZlbnQvY2FsbGJhY2sgYnkgbmFtZSB3aXRoIHBhcmFtcwogICAgICogQHBhcmFtIHN0cmluZyBuYW1lCiAgICAgKiBAcGFyYW0gYXJyYXkgIHBhcmFtcwogICAgICovCiAgICBmdW5jdGlvbiB0cmlnZ2VyRXZlbnQoIGV2ZW50TmFtZSwgcGFyYW1zICkKICAgIHsKICAgICAgICAvLyByZXR1cm4gdG91Y2hlcyBvYmplY3QKICAgICAgICBwYXJhbXMudG91Y2hlcyA9IGdldFhZZnJvbUV2ZW50KHBhcmFtcy5vcmlnaW5hbEV2ZW50KTsKICAgICAgICBwYXJhbXMudHlwZSA9IGV2ZW50TmFtZTsKCiAgICAgICAgLy8gdHJpZ2dlciBjYWxsYmFjawogICAgICAgIGlmKGlzRnVuY3Rpb24oc2VsZlsib24iKyBldmVudE5hbWVdKSkgewogICAgICAgICAgICBzZWxmWyJvbiIrIGV2ZW50TmFtZV0uY2FsbChzZWxmLCBwYXJhbXMpOwogICAgICAgIH0KICAgIH0KCgogICAgLyoqCiAgICAgKiBjYW5jZWwgZXZlbnQKICAgICAqIEBwYXJhbSAgIG9iamVjdCAgZXZlbnQKICAgICAqIEByZXR1cm4gIHZvaWQKICAgICAqLwoKICAgIGZ1bmN0aW9uIGNhbmNlbEV2ZW50KGV2ZW50KXsKICAgICAgICBldmVudCA9IGV2ZW50IHx8IHdpbmRvdy5ldmVudDsKICAgICAgICBpZihldmVudC5wcmV2ZW50RGVmYXVsdCl7CiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgfWVsc2V7CiAgICAgICAgICAgIGV2ZW50LnJldHVyblZhbHVlID0gZmFsc2U7CiAgICAgICAgICAgIGV2ZW50LmNhbmNlbEJ1YmJsZSA9IHRydWU7CiAgICAgICAgfQogICAgfQoKCiAgICAvKioKICAgICAqIHJlc2V0IHRoZSBpbnRlcm5hbCB2YXJzIHRvIHRoZSBzdGFydCB2YWx1ZXMKICAgICAqLwogICAgZnVuY3Rpb24gcmVzZXQoKQogICAgewogICAgICAgIF9wb3MgPSB7fTsKICAgICAgICBfZmlyc3QgPSBmYWxzZTsKICAgICAgICBfZmluZ2VycyA9IDA7CiAgICAgICAgX2Rpc3RhbmNlID0gMDsKICAgICAgICBfYW5nbGUgPSAwOwogICAgICAgIF9nZXN0dXJlID0gbnVsbDsKICAgIH0KCgogICAgdmFyIGdlc3R1cmVzID0gewogICAgICAgIC8vIGhvbGQgZ2VzdHVyZQogICAgICAgIC8vIGZpcmVkIG9uIHRvdWNoc3RhcnQKICAgICAgICBob2xkIDogZnVuY3Rpb24oZXZlbnQpCiAgICAgICAgewogICAgICAgICAgICAvLyBvbmx5IHdoZW4gb25lIGZpbmdlciBpcyBvbiB0aGUgc2NyZWVuCiAgICAgICAgICAgIGlmKG9wdGlvbnMuaG9sZCkgewogICAgICAgICAgICAgICAgX2dlc3R1cmUgPSAnaG9sZCc7CiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoX2hvbGRfdGltZXIpOwoKICAgICAgICAgICAgICAgIF9ob2xkX3RpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBpZihfZ2VzdHVyZSA9PSAnaG9sZCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlckV2ZW50KCJob2xkIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudCAgIDogZXZlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiAgICAgICAgOiBfcG9zLnN0YXJ0CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIG9wdGlvbnMuaG9sZF90aW1lb3V0KTsKICAgICAgICAgICAgfQogICAgICAgIH0sCgoKICAgICAgICAvLyBkcmFnIGdlc3R1cmUKICAgICAgICAvLyBmaXJlZCBvbiBtb3VzZW1vdmUKICAgICAgICBkcmFnIDogZnVuY3Rpb24oZXZlbnQpCiAgICAgICAgewogICAgICAgICAgICAvLyBnZXQgdGhlIGRpc3RhbmNlIHdlIG1vdmVkCiAgICAgICAgICAgIHZhciBfZGlzdGFuY2VfeCA9IF9wb3MubW92ZVswXS54IC0gX3Bvcy5zdGFydFswXS54OwogICAgICAgICAgICB2YXIgX2Rpc3RhbmNlX3kgPSBfcG9zLm1vdmVbMF0ueSAtIF9wb3Muc3RhcnRbMF0ueTsKICAgICAgICAgICAgX2Rpc3RhbmNlID0gTWF0aC5zcXJ0KF9kaXN0YW5jZV94ICogX2Rpc3RhbmNlX3ggKyBfZGlzdGFuY2VfeSAqIF9kaXN0YW5jZV95KTsKCiAgICAgICAgICAgIC8vIGRyYWcKICAgICAgICAgICAgLy8gbWluaW1hbCBtb3ZlbWVudCByZXF1aXJlZAogICAgICAgICAgICBpZihvcHRpb25zLmRyYWcgJiYgKF9kaXN0YW5jZSA+IG9wdGlvbnMuZHJhZ19taW5fZGlzdGFuY2UpIHx8IF9nZXN0dXJlID09ICdkcmFnJykgewogICAgICAgICAgICAgICAgLy8gY2FsY3VsYXRlIHRoZSBhbmdsZQogICAgICAgICAgICAgICAgX2FuZ2xlID0gZ2V0QW5nbGUoX3Bvcy5zdGFydFswXSwgX3Bvcy5tb3ZlWzBdKTsKICAgICAgICAgICAgICAgIF9kaXJlY3Rpb24gPSBzZWxmLmdldERpcmVjdGlvbkZyb21BbmdsZShfYW5nbGUpOwoKICAgICAgICAgICAgICAgIC8vIGNoZWNrIHRoZSBtb3ZlbWVudCBhbmQgc3RvcCBpZiB3ZSBnbyBpbiB0aGUgd3JvbmcgZGlyZWN0aW9uCiAgICAgICAgICAgICAgICB2YXIgaXNfdmVydGljYWwgPSAoX2RpcmVjdGlvbiA9PSAndXAnIHx8IF9kaXJlY3Rpb24gPT0gJ2Rvd24nKTsKICAgICAgICAgICAgICAgIGlmKCgoaXNfdmVydGljYWwgJiYgIW9wdGlvbnMuZHJhZ192ZXJ0aWNhbCkgfHwgKCFpc192ZXJ0aWNhbCAmJiAhb3B0aW9ucy5kcmFnX2hvcml6b250YWwpKQogICAgICAgICAgICAgICAgICAgICYmIChfZGlzdGFuY2UgPiBvcHRpb25zLmRyYWdfbWluX2Rpc3RhbmNlKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBfZ2VzdHVyZSA9ICdkcmFnJzsKCiAgICAgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7IHg6IF9wb3MubW92ZVswXS54IC0gX29mZnNldC5sZWZ0LAogICAgICAgICAgICAgICAgICAgIHk6IF9wb3MubW92ZVswXS55IC0gX29mZnNldC50b3AgfTsKCiAgICAgICAgICAgICAgICB2YXIgZXZlbnRfb2JqID0gewogICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQgICA6IGV2ZW50LAogICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uICAgICAgICA6IHBvc2l0aW9uLAogICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbiAgICAgICA6IF9kaXJlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2UgICAgICAgIDogX2Rpc3RhbmNlLAogICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlWCAgICAgICA6IF9kaXN0YW5jZV94LAogICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlWSAgICAgICA6IF9kaXN0YW5jZV95LAogICAgICAgICAgICAgICAgICAgIGFuZ2xlICAgICAgICAgICA6IF9hbmdsZQogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAvLyBvbiB0aGUgZmlyc3QgdGltZSB0cmlnZ2VyIHRoZSBzdGFydCBldmVudAogICAgICAgICAgICAgICAgaWYoX2ZpcnN0KSB7CiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlckV2ZW50KCJkcmFnc3RhcnQiLCBldmVudF9vYmopOwoKICAgICAgICAgICAgICAgICAgICBfZmlyc3QgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBub3JtYWwgc2xpZGUgZXZlbnQKICAgICAgICAgICAgICAgIHRyaWdnZXJFdmVudCgiZHJhZyIsIGV2ZW50X29iaik7CgogICAgICAgICAgICAgICAgY2FuY2VsRXZlbnQoZXZlbnQpOwogICAgICAgICAgICB9CiAgICAgICAgfSwKCgogICAgICAgIC8vIHRyYW5zZm9ybSBnZXN0dXJlCiAgICAgICAgLy8gZmlyZWQgb24gdG91Y2htb3ZlCiAgICAgICAgdHJhbnNmb3JtIDogZnVuY3Rpb24oZXZlbnQpCiAgICAgICAgewogICAgICAgICAgICBpZihvcHRpb25zLnRyYW5zZm9ybSkgewogICAgICAgICAgICAgICAgdmFyIHNjYWxlID0gZXZlbnQuc2NhbGUgfHwgMTsKICAgICAgICAgICAgICAgIHZhciByb3RhdGlvbiA9IGV2ZW50LnJvdGF0aW9uIHx8IDA7CgogICAgICAgICAgICAgICAgaWYoY291bnRGaW5nZXJzKGV2ZW50KSAhPSAyKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmKF9nZXN0dXJlICE9ICdkcmFnJyAmJgogICAgICAgICAgICAgICAgICAgIChfZ2VzdHVyZSA9PSAndHJhbnNmb3JtJyB8fCBNYXRoLmFicygxLXNjYWxlKSA+IG9wdGlvbnMuc2NhbGVfdHJlc2hvbGQKICAgICAgICAgICAgICAgICAgICAgICAgfHwgTWF0aC5hYnMocm90YXRpb24pID4gb3B0aW9ucy5yb3RhdGlvbl90cmVzaG9sZCkpIHsKICAgICAgICAgICAgICAgICAgICBfZ2VzdHVyZSA9ICd0cmFuc2Zvcm0nOwoKICAgICAgICAgICAgICAgICAgICBfcG9zLmNlbnRlciA9IHsgIHg6ICgoX3Bvcy5tb3ZlWzBdLnggKyBfcG9zLm1vdmVbMV0ueCkgLyAyKSAtIF9vZmZzZXQubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgeTogKChfcG9zLm1vdmVbMF0ueSArIF9wb3MubW92ZVsxXS55KSAvIDIpIC0gX29mZnNldC50b3AgfTsKCiAgICAgICAgICAgICAgICAgICAgdmFyIGV2ZW50X29iaiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudCAgIDogZXZlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uICAgICAgICA6IF9wb3MuY2VudGVyLAogICAgICAgICAgICAgICAgICAgICAgICBzY2FsZSAgICAgICAgICAgOiBzY2FsZSwKICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb24gICAgICAgIDogcm90YXRpb24KICAgICAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgICAgICAvLyBvbiB0aGUgZmlyc3QgdGltZSB0cmlnZ2VyIHRoZSBzdGFydCBldmVudAogICAgICAgICAgICAgICAgICAgIGlmKF9maXJzdCkgewogICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyRXZlbnQoInRyYW5zZm9ybXN0YXJ0IiwgZXZlbnRfb2JqKTsKICAgICAgICAgICAgICAgICAgICAgICAgX2ZpcnN0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyRXZlbnQoInRyYW5zZm9ybSIsIGV2ZW50X29iaik7CgogICAgICAgICAgICAgICAgICAgIGNhbmNlbEV2ZW50KGV2ZW50KTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9LAoKCiAgICAgICAgLy8gdGFwIGFuZCBkb3VibGUgdGFwIGdlc3R1cmUKICAgICAgICAvLyBmaXJlZCBvbiB0b3VjaGVuZAogICAgICAgIHRhcCA6IGZ1bmN0aW9uKGV2ZW50KQogICAgICAgIHsKICAgICAgICAgICAgLy8gY29tcGFyZSB0aGUga2luZCBvZiBnZXN0dXJlIGJ5IHRpbWUKICAgICAgICAgICAgdmFyIG5vdyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOwogICAgICAgICAgICB2YXIgdG91Y2hfdGltZSA9IG5vdyAtIF90b3VjaF9zdGFydF90aW1lOwoKICAgICAgICAgICAgLy8gZG9udCBmaXJlIHdoZW4gaG9sZCBpcyBmaXJlZAogICAgICAgICAgICBpZihvcHRpb25zLmhvbGQgJiYgIShvcHRpb25zLmhvbGQgJiYgb3B0aW9ucy5ob2xkX3RpbWVvdXQgPiB0b3VjaF90aW1lKSkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyB3aGVuIHByZXZpb3VzIGV2ZW50IHdhcyB0YXAgYW5kIHRoZSB0YXAgd2FzIG1heF9pbnRlcnZhbCBtcyBhZ28KICAgICAgICAgICAgdmFyIGlzX2RvdWJsZV90YXAgPSAoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgIGlmIChfcHJldl90YXBfcG9zICYmIG9wdGlvbnMudGFwX2RvdWJsZSAmJiBfcHJldl9nZXN0dXJlID09ICd0YXAnICYmIChfdG91Y2hfc3RhcnRfdGltZSAtIF9wcmV2X3RhcF9lbmRfdGltZSkgPCBvcHRpb25zLnRhcF9tYXhfaW50ZXJ2YWwpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgeF9kaXN0YW5jZSA9IE1hdGguYWJzKF9wcmV2X3RhcF9wb3NbMF0ueCAtIF9wb3Muc3RhcnRbMF0ueCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHlfZGlzdGFuY2UgPSBNYXRoLmFicyhfcHJldl90YXBfcG9zWzBdLnkgLSBfcG9zLnN0YXJ0WzBdLnkpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAoX3ByZXZfdGFwX3BvcyAmJiBfcG9zLnN0YXJ0ICYmIE1hdGgubWF4KHhfZGlzdGFuY2UsIHlfZGlzdGFuY2UpIDwgb3B0aW9ucy50YXBfZG91YmxlX2Rpc3RhbmNlKTsKCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0pKCk7CgogICAgICAgICAgICBpZihpc19kb3VibGVfdGFwKSB7CiAgICAgICAgICAgICAgICBfZ2VzdHVyZSA9ICdkb3VibGVfdGFwJzsKICAgICAgICAgICAgICAgIF9wcmV2X3RhcF9lbmRfdGltZSA9IG51bGw7CgogICAgICAgICAgICAgICAgdHJpZ2dlckV2ZW50KCJkb3VibGV0YXAiLCB7CiAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudCAgIDogZXZlbnQsCiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gICAgICAgIDogX3Bvcy5zdGFydAogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBjYW5jZWxFdmVudChldmVudCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIHNpbmdsZSB0YXAgaXMgc2luZ2xlIHRvdWNoCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgX2dlc3R1cmUgPSAndGFwJzsKICAgICAgICAgICAgICAgIF9wcmV2X3RhcF9lbmRfdGltZSA9IG5vdzsKICAgICAgICAgICAgICAgIF9wcmV2X3RhcF9wb3MgPSBfcG9zLnN0YXJ0OwoKICAgICAgICAgICAgICAgIGlmKG9wdGlvbnMudGFwKSB7CiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlckV2ZW50KCJ0YXAiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQgICA6IGV2ZW50LAogICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiAgICAgICAgOiBfcG9zLnN0YXJ0CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgY2FuY2VsRXZlbnQoZXZlbnQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICB9OwoKCiAgICBmdW5jdGlvbiBoYW5kbGVFdmVudHMoZXZlbnQpCiAgICB7CiAgICAgICAgc3dpdGNoKGV2ZW50LnR5cGUpCiAgICAgICAgewogICAgICAgICAgICBjYXNlICdtb3VzZWRvd24nOgogICAgICAgICAgICBjYXNlICd0b3VjaHN0YXJ0JzoKICAgICAgICAgICAgICAgIF9wb3Muc3RhcnQgPSBnZXRYWWZyb21FdmVudChldmVudCk7CiAgICAgICAgICAgICAgICBfdG91Y2hfc3RhcnRfdGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOwogICAgICAgICAgICAgICAgX2ZpbmdlcnMgPSBjb3VudEZpbmdlcnMoZXZlbnQpOwogICAgICAgICAgICAgICAgX2ZpcnN0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgIF9ldmVudF9zdGFydCA9IGV2ZW50OwoKICAgICAgICAgICAgICAgIC8vIGJvcnJvd2VkIGZyb20ganF1ZXJ5IG9mZnNldCBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L2pxdWVyeS9ibG9iL21hc3Rlci9zcmMvb2Zmc2V0LmpzCiAgICAgICAgICAgICAgICB2YXIgYm94ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICAgICAgICAgIHZhciBjbGllbnRUb3AgID0gZWxlbWVudC5jbGllbnRUb3AgIHx8IGRvY3VtZW50LmJvZHkuY2xpZW50VG9wICB8fCAwOwogICAgICAgICAgICAgICAgdmFyIGNsaWVudExlZnQgPSBlbGVtZW50LmNsaWVudExlZnQgfHwgZG9jdW1lbnQuYm9keS5jbGllbnRMZWZ0IHx8IDA7CiAgICAgICAgICAgICAgICB2YXIgc2Nyb2xsVG9wICA9IHdpbmRvdy5wYWdlWU9mZnNldCB8fCBlbGVtZW50LnNjcm9sbFRvcCAgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A7CiAgICAgICAgICAgICAgICB2YXIgc2Nyb2xsTGVmdCA9IHdpbmRvdy5wYWdlWE9mZnNldCB8fCBlbGVtZW50LnNjcm9sbExlZnQgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0OwoKICAgICAgICAgICAgICAgIF9vZmZzZXQgPSB7CiAgICAgICAgICAgICAgICAgICAgdG9wOiBib3gudG9wICsgc2Nyb2xsVG9wIC0gY2xpZW50VG9wLAogICAgICAgICAgICAgICAgICAgIGxlZnQ6IGJveC5sZWZ0ICsgc2Nyb2xsTGVmdCAtIGNsaWVudExlZnQKICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgX21vdXNlZG93biA9IHRydWU7CgogICAgICAgICAgICAgICAgLy8gaG9sZCBnZXN0dXJlCiAgICAgICAgICAgICAgICBnZXN0dXJlcy5ob2xkKGV2ZW50KTsKCiAgICAgICAgICAgICAgICBpZihvcHRpb25zLnByZXZlbnRfZGVmYXVsdCkgewogICAgICAgICAgICAgICAgICAgIGNhbmNlbEV2ZW50KGV2ZW50KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAnbW91c2Vtb3ZlJzoKICAgICAgICAgICAgY2FzZSAndG91Y2htb3ZlJzoKICAgICAgICAgICAgICAgIGlmKCFfbW91c2Vkb3duKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2V2ZW50X21vdmUgPSBldmVudDsKICAgICAgICAgICAgICAgIF9wb3MubW92ZSA9IGdldFhZZnJvbUV2ZW50KGV2ZW50KTsKCiAgICAgICAgICAgICAgICBpZighZ2VzdHVyZXMudHJhbnNmb3JtKGV2ZW50KSkgewogICAgICAgICAgICAgICAgICAgIGdlc3R1cmVzLmRyYWcoZXZlbnQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlICdtb3VzZXVwJzoKICAgICAgICAgICAgY2FzZSAnbW91c2VvdXQnOgogICAgICAgICAgICBjYXNlICd0b3VjaGNhbmNlbCc6CiAgICAgICAgICAgIGNhc2UgJ3RvdWNoZW5kJzoKICAgICAgICAgICAgICAgIGlmKCFfbW91c2Vkb3duIHx8IChfZ2VzdHVyZSAhPSAndHJhbnNmb3JtJyAmJiBldmVudC50b3VjaGVzICYmIGV2ZW50LnRvdWNoZXMubGVuZ3RoID4gMCkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgX21vdXNlZG93biA9IGZhbHNlOwogICAgICAgICAgICAgICAgX2V2ZW50X2VuZCA9IGV2ZW50OwoKICAgICAgICAgICAgICAgIC8vIGRyYWcgZ2VzdHVyZQogICAgICAgICAgICAgICAgLy8gZHJhZ3N0YXJ0IGlzIHRyaWdnZXJlZCwgc28gZHJhZ2VuZCBpcyBwb3NzaWJsZQogICAgICAgICAgICAgICAgaWYoX2dlc3R1cmUgPT0gJ2RyYWcnKSB7CiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlckV2ZW50KCJkcmFnZW5kIiwgewogICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50ICAgOiBldmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uICAgICAgIDogX2RpcmVjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2UgICAgICAgIDogX2Rpc3RhbmNlLAogICAgICAgICAgICAgICAgICAgICAgICBhbmdsZSAgICAgICAgICAgOiBfYW5nbGUKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyB0cmFuc2Zvcm0KICAgICAgICAgICAgICAgIC8vIHRyYW5zZm9ybXN0YXJ0IGlzIHRyaWdnZXJlZCwgc28gdHJhbnNmb3JtZWQgaXMgcG9zc2libGUKICAgICAgICAgICAgICAgIGVsc2UgaWYoX2dlc3R1cmUgPT0gJ3RyYW5zZm9ybScpIHsKICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyRXZlbnQoInRyYW5zZm9ybWVuZCIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudCAgIDogZXZlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uICAgICAgICA6IF9wb3MuY2VudGVyLAogICAgICAgICAgICAgICAgICAgICAgICBzY2FsZSAgICAgICAgICAgOiBldmVudC5zY2FsZSwKICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb24gICAgICAgIDogZXZlbnQucm90YXRpb24KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGdlc3R1cmVzLnRhcChfZXZlbnRfc3RhcnQpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIF9wcmV2X2dlc3R1cmUgPSBfZ2VzdHVyZTsKCiAgICAgICAgICAgICAgICAvLyByZXNldCB2YXJzCiAgICAgICAgICAgICAgICByZXNldCgpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQoKCiAgICAvLyBiaW5kIGV2ZW50cyBmb3IgdG91Y2ggZGV2aWNlcwogICAgLy8gZXhjZXB0IGZvciB3aW5kb3dzIHBob25lIDcuNSwgaXQgZG9lc250IHN1cHBvcnQgdG91Y2ggZXZlbnRzLi4hCiAgICBpZignb250b3VjaHN0YXJ0JyBpbiB3aW5kb3cpIHsKICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLCBoYW5kbGVFdmVudHMsIGZhbHNlKTsKICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsIGhhbmRsZUV2ZW50cywgZmFsc2UpOwogICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLCBoYW5kbGVFdmVudHMsIGZhbHNlKTsKICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoY2FuY2VsIiwgaGFuZGxlRXZlbnRzLCBmYWxzZSk7CiAgICB9CiAgICAvLyBmb3Igbm9uLXRvdWNoCiAgICBlbHNlIHsKCiAgICAgICAgaWYoZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKXsgLy8gcHJldmVudCBvbGQgSUUgZXJyb3JzCiAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLCBmdW5jdGlvbihldmVudCkgewogICAgICAgICAgICAgICAgaWYoIWlzSW5zaWRlSGFtbWVyKGVsZW1lbnQsIGV2ZW50LnJlbGF0ZWRUYXJnZXQpKSB7CiAgICAgICAgICAgICAgICAgICAgaGFuZGxlRXZlbnRzKGV2ZW50KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgZmFsc2UpOwogICAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCBoYW5kbGVFdmVudHMsIGZhbHNlKTsKICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCBoYW5kbGVFdmVudHMsIGZhbHNlKTsKICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCBoYW5kbGVFdmVudHMsIGZhbHNlKTsKCiAgICAgICAgICAgIC8vIGV2ZW50cyBmb3Igb2xkZXIgSUUKICAgICAgICB9ZWxzZSBpZihkb2N1bWVudC5hdHRhY2hFdmVudCl7CiAgICAgICAgICAgIGVsZW1lbnQuYXR0YWNoRXZlbnQoIm9ubW91c2VvdXQiLCBmdW5jdGlvbihldmVudCkgewogICAgICAgICAgICAgICAgaWYoIWlzSW5zaWRlSGFtbWVyKGVsZW1lbnQsIGV2ZW50LnJlbGF0ZWRUYXJnZXQpKSB7CiAgICAgICAgICAgICAgICAgICAgaGFuZGxlRXZlbnRzKGV2ZW50KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgZmFsc2UpOwogICAgICAgICAgICBlbGVtZW50LmF0dGFjaEV2ZW50KCJvbm1vdXNldXAiLCBoYW5kbGVFdmVudHMpOwogICAgICAgICAgICBlbGVtZW50LmF0dGFjaEV2ZW50KCJvbm1vdXNlZG93biIsIGhhbmRsZUV2ZW50cyk7CiAgICAgICAgICAgIGVsZW1lbnQuYXR0YWNoRXZlbnQoIm9ubW91c2Vtb3ZlIiwgaGFuZGxlRXZlbnRzKTsKICAgICAgICB9CiAgICB9CgoKICAgIC8qKgogICAgICogZmluZCBpZiBlbGVtZW50IGlzIChpbnNpZGUpIGdpdmVuIHBhcmVudCBlbGVtZW50CiAgICAgKiBAcGFyYW0gICBvYmplY3QgIGVsZW1lbnQKICAgICAqIEBwYXJhbSAgIG9iamVjdCAgcGFyZW50CiAgICAgKiBAcmV0dXJuICBib29sICAgIGluc2lkZQogICAgICovCiAgICBmdW5jdGlvbiBpc0luc2lkZUhhbW1lcihwYXJlbnQsIGNoaWxkKSB7CiAgICAgICAgLy8gZ2V0IHJlbGF0ZWQgdGFyZ2V0IGZvciBJRQogICAgICAgIGlmKCFjaGlsZCAmJiB3aW5kb3cuZXZlbnQgJiYgd2luZG93LmV2ZW50LnRvRWxlbWVudCl7CiAgICAgICAgICAgIGNoaWxkID0gd2luZG93LmV2ZW50LnRvRWxlbWVudDsKICAgICAgICB9CgogICAgICAgIGlmKHBhcmVudCA9PT0gY2hpbGQpewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIC8vIGxvb3Agb3ZlciBwYXJlbnROb2RlcyBvZiBjaGlsZCB1bnRpbCB3ZSBmaW5kIGhhbW1lciBlbGVtZW50CiAgICAgICAgaWYoY2hpbGQpewogICAgICAgICAgICB2YXIgbm9kZSA9IGNoaWxkLnBhcmVudE5vZGU7CiAgICAgICAgICAgIHdoaWxlKG5vZGUgIT09IG51bGwpewogICAgICAgICAgICAgICAgaWYobm9kZSA9PT0gcGFyZW50KXsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCgogICAgLyoqCiAgICAgKiBtZXJnZSAyIG9iamVjdHMgaW50byBhIG5ldyBvYmplY3QKICAgICAqIEBwYXJhbSAgIG9iamVjdCAgb2JqMQogICAgICogQHBhcmFtICAgb2JqZWN0ICBvYmoyCiAgICAgKiBAcmV0dXJuICBvYmplY3QgIG1lcmdlZCBvYmplY3QKICAgICAqLwogICAgZnVuY3Rpb24gbWVyZ2VPYmplY3Qob2JqMSwgb2JqMikgewogICAgICAgIHZhciBvdXRwdXQgPSB7fTsKCiAgICAgICAgaWYoIW9iajIpIHsKICAgICAgICAgICAgcmV0dXJuIG9iajE7CiAgICAgICAgfQoKICAgICAgICBmb3IgKHZhciBwcm9wIGluIG9iajEpIHsKICAgICAgICAgICAgaWYgKHByb3AgaW4gb2JqMikgewogICAgICAgICAgICAgICAgb3V0cHV0W3Byb3BdID0gb2JqMltwcm9wXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIG91dHB1dFtwcm9wXSA9IG9iajFbcHJvcF07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIG91dHB1dDsKICAgIH0KCiAgICBmdW5jdGlvbiBpc0Z1bmN0aW9uKCBvYmogKXsKICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKCBvYmogKSA9PSAiW29iamVjdCBGdW5jdGlvbl0iOwogICAgfQp9"></script>
<script src="data:application/x-javascript;base64,KGZ1bmN0aW9uKHdpbmRvdykgewoKdmFyIE9SSUdJTl8gPSBsb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyBsb2NhdGlvbi5ob3N0OwoKLy8gY2hlY2sgZm9yIGxvY2FsIHN0b3JhZ2UKdmFyIGhhdmVMb2NhbFN0b3JhZ2UgPSAoZnVuY3Rpb24oKSB7CiAgdmFyIG1vZCA9ICdtb2QnOwogIHRyeSB7CiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShtb2QsIG1vZCk7CiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShtb2QpOwogICAgcmV0dXJuIHRydWU7CiAgfSBjYXRjaChlKSB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQp9KCkpOwoKZnVuY3Rpb24gU2xpZGVDb250cm9sbGVyKCkgewogIHRoaXMucG9wdXAgPSBudWxsOwogIHRoaXMuaXNQb3B1cCA9IHdpbmRvdy5vcGVuZXI7CgogIGlmICh0aGlzLnNldHVwRG9uZSgpKSB7CiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMub25NZXNzYWdlXy5iaW5kKHRoaXMpLCBmYWxzZSk7CgogICAgLy8gQ2xvc2UgcG9wdXBzIGlmIHdlIHJlbG9hZCB0aGUgbWFpbiB3aW5kb3cuCiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgZnVuY3Rpb24oZSkgewogICAgICBpZiAodGhpcy5wb3B1cCkgewogICAgICAgIHRoaXMucG9wdXAuY2xvc2UoKTsKICAgICAgfQogICAgfS5iaW5kKHRoaXMpLCBmYWxzZSk7CiAgfQp9CgpTbGlkZUNvbnRyb2xsZXIuUFJFU0VOVEVSX01PREVfUEFSQU0gPSAncHJlc2VudG1lJzsKClNsaWRlQ29udHJvbGxlci5wcm90b3R5cGUuc2V0dXBEb25lID0gZnVuY3Rpb24oKSB7CiAgdmFyIHBhcmFtcyA9IGxvY2F0aW9uLnNlYXJjaC5zdWJzdHJpbmcoMSkuc3BsaXQoJyYnKS5tYXAoZnVuY3Rpb24oZWwpIHsKICAgIHJldHVybiBlbC5zcGxpdCgnPScpOwogIH0pOwoKICB2YXIgcHJlc2VudE1lID0gbnVsbDsKICBmb3IgKHZhciBpID0gMCwgcGFyYW07IHBhcmFtID0gcGFyYW1zW2ldOyArK2kpIHsKICAgIGlmIChwYXJhbVswXS50b0xvd2VyQ2FzZSgpID09IFNsaWRlQ29udHJvbGxlci5QUkVTRU5URVJfTU9ERV9QQVJBTSkgewogICAgICBwcmVzZW50TWUgPSBwYXJhbVsxXSA9PSAndHJ1ZSc7CiAgICAgIGJyZWFrOwogICAgfQogIH0KCiAgaWYgKHByZXNlbnRNZSAhPT0gbnVsbCkgewogICAgaWYgKGhhdmVMb2NhbFN0b3JhZ2UpCiAgICAgIGxvY2FsU3RvcmFnZS5FTkFCTEVfUFJFU0VOVE9SX01PREUgPSBwcmVzZW50TWU7CiAgICAvLyBUT0RPOiB1c2Ugd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlIHRvIHVwZGF0ZSBVUkwgaW5zdGVhZCBvZiB0aGUgcmVkaXJlY3QuCiAgICBpZiAod2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKSB7CiAgICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSh7fSwgJycsIGxvY2F0aW9uLnBhdGhuYW1lKTsKICAgIH0gZWxzZSB7CiAgICAgIGxvY2F0aW9uLnJlcGxhY2UobG9jYXRpb24ucGF0aG5hbWUpOwogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgfQoKICB2YXIgZW5hYmxlUHJlc2VudGVyTW9kZSA9IGhhdmVMb2NhbFN0b3JhZ2UgJiYgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0VOQUJMRV9QUkVTRU5UT1JfTU9ERScpOwogIGlmIChlbmFibGVQcmVzZW50ZXJNb2RlICYmIEpTT04ucGFyc2UoZW5hYmxlUHJlc2VudGVyTW9kZSkpIHsKICAgIC8vIE9ubHkgb3BlbiBwb3B1cCBmcm9tIG1haW4gZGVjay4gRG9uJ3Qgd2FudCByZWN1cnNpdmUgcG9wdXAgb3BlbmluZyEKICAgIGlmICghdGhpcy5pc1BvcHVwKSB7CiAgICAgIHZhciBvcHRzID0gJ21lbnViYXI9bm8sbG9jYXRpb249eWVzLHJlc2l6YWJsZT15ZXMsc2Nyb2xsYmFycz1ubyxzdGF0dXM9bm8nOwogICAgICB0aGlzLnBvcHVwID0gd2luZG93Lm9wZW4obG9jYXRpb24uaHJlZiwgJ215d2luZG93Jywgb3B0cyk7CgogICAgICAvLyBMb2FkaW5nIGluIHRoZSBwb3B1cD8gVHJpZ2dlciB0aGUgaG90a2V5IGZvciB0dXJuaW5nIHByZXNlbnRlciBtb2RlIG9uLgogICAgICB0aGlzLnBvcHVwLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbihlKSB7CiAgICAgICAgdmFyIGV2dCA9IHRoaXMucG9wdXAuZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7CiAgICAgICAgZXZ0LmluaXRFdmVudCgna2V5ZG93bicsIHRydWUsIHRydWUpOwogICAgICAgIGV2dC5rZXlDb2RlID0gJ1AnLmNoYXJDb2RlQXQoMCk7CiAgICAgICAgdGhpcy5wb3B1cC5kb2N1bWVudC5kaXNwYXRjaEV2ZW50KGV2dCk7CiAgICAgICAgLy8gdGhpcy5wb3B1cC5kb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ3dpdGgtbm90ZXMnKTsKICAgICAgICAvLyBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ3BvcHVwJyk7CiAgICAgIH0uYmluZCh0aGlzKSwgZmFsc2UpOwogICAgfQogIH0KCiAgcmV0dXJuIHRydWU7Cn0KClNsaWRlQ29udHJvbGxlci5wcm90b3R5cGUub25NZXNzYWdlXyA9IGZ1bmN0aW9uKGUpIHsKICB2YXIgZGF0YSA9IGUuZGF0YTsKCiAgLy8gUmVzdHJpY3QgbWVzc2FnZXMgdG8gYmVpbmcgZnJvbSB0aGlzIG9yaWdpbi4gQWxsb3cgbG9jYWwgZGV2ZWxvcG1ldAogIC8vIGZyb20gZmlsZTovLyB0aG91Z2guCiAgLy8gVE9ETzogSXQgd291bGQgYmUgZG9wZSBpZiBGRiBpbXBsZW1lbnRlZCBsb2NhdGlvbi5vcmlnaW4hCiAgaWYgKGUub3JpZ2luICE9IE9SSUdJTl8gJiYgT1JJR0lOXy5pbmRleE9mKCdmaWxlOi8vJykgIT0gMCkgewogICAgLy8gSWdub3JlIG1lc3NhZ2VzIGZyb20gdW5yZWNvZ25pemVkIG9yaWdpbnMKICAgIHJldHVybjsKICB9CgogIC8vIGlmIChlLnNvdXJjZS5sb2NhdGlvbi5ob3N0bmFtZSAhPSAnbG9jYWxob3N0JykgewogIC8vICAgYWxlcnQoJ1NvbWVvbmUgdHJpZWQgdG8gcG9zdE1lc3NhZ2UgZnJvbSBhbiB1bmtub3duIG9yaWdpbicpOwogIC8vICAgcmV0dXJuOwogIC8vIH0KCiAgaWYgKCdrZXlDb2RlJyBpbiBkYXRhKSB7CiAgICB2YXIgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7CiAgICBldnQuaW5pdEV2ZW50KCdrZXlkb3duJywgdHJ1ZSwgdHJ1ZSk7CiAgICBldnQua2V5Q29kZSA9IGRhdGEua2V5Q29kZTsKICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoZXZ0KTsKICB9Cn07CgpTbGlkZUNvbnRyb2xsZXIucHJvdG90eXBlLnNlbmRNc2cgPSBmdW5jdGlvbihtc2cpIHsKICAvLyAvLyBTZW5kIG1lc3NhZ2UgdG8gcG9wdXAgd2luZG93LgogIC8vIGlmICh0aGlzLnBvcHVwKSB7CiAgLy8gICB0aGlzLnBvcHVwLnBvc3RNZXNzYWdlKG1zZywgT1JJR0lOXyk7CiAgLy8gfQoKICAvLyBTZW5kIG1lc3NhZ2UgdG8gbWFpbiB3aW5kb3cuCiAgaWYgKHRoaXMuaXNQb3B1cCkgewogICAgLy8gVE9ETzogSXQgd291bGQgYmUgZG9wZSBpZiBGRiBpbXBsZW1lbnRlZCBsb2NhdGlvbi5vcmlnaW4uCiAgICB3aW5kb3cub3BlbmVyLnBvc3RNZXNzYWdlKG1zZywgJyonKTsKICB9Cn07Cgp3aW5kb3cuU2xpZGVDb250cm9sbGVyID0gU2xpZGVDb250cm9sbGVyOwoKfSkod2luZG93KTsKCg=="></script>
<script src="data:application/x-javascript;base64,LyoqCiAqIEBhdXRob3JzIEx1a2UgTWFoZQogKiBAYXV0aG9ycyBFcmljIEJpZGVsbWFuCiAqIEBmaWxlb3ZlcnZpZXcgVE9ETwogKi8KZG9jdW1lbnQuY2FuY2VsRnVsbFNjcmVlbiA9IGRvY3VtZW50LndlYmtpdENhbmNlbEZ1bGxTY3JlZW4gfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50Lm1vekNhbmNlbEZ1bGxTY3JlZW47CgovKioKICogQGNvbnN0cnVjdG9yCiAqLwpmdW5jdGlvbiBTbGlkZURlY2soZWwpIHsKICB0aGlzLmN1clNsaWRlXyA9IDA7CiAgdGhpcy5wcmV2U2xpZGVfID0gMDsKICB0aGlzLmNvbmZpZ18gPSBudWxsOwogIHRoaXMuY29udGFpbmVyID0gZWwgfHwgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcignc2xpZGVzJyk7CiAgdGhpcy5zbGlkZXMgPSBbXTsKICB0aGlzLmNvbnRyb2xsZXIgPSBudWxsOwoKICB0aGlzLmdldEN1cnJlbnRTbGlkZUZyb21IYXNoXygpOwoKICAvLyBDYWxsIHRoaXMgZXhwbGljaXRseS4gTW9kZXJuaXpyLmxvYWQgd29uJ3QgYmUgZG9uZSB1bnRpbCBhZnRlciBET00gbG9hZC4KICB0aGlzLm9uRG9tTG9hZGVkXy5iaW5kKHRoaXMpKCk7Cn0KCi8qKgogKiBAY29uc3QKICogQHByaXZhdGUKICovClNsaWRlRGVjay5wcm90b3R5cGUuU0xJREVfQ0xBU1NFU18gPSBbCiAgJ2Zhci1wYXN0JywgJ3Bhc3QnLCAnY3VycmVudCcsICduZXh0JywgJ2Zhci1uZXh0J107CgovKioKICogQGNvbnN0CiAqIEBwcml2YXRlCiAqLwpTbGlkZURlY2sucHJvdG90eXBlLkNTU19ESVJfID0gJ3RoZW1lL2Nzcy8nOwoKLyoqCiAqIEBwcml2YXRlCiAqLwpTbGlkZURlY2sucHJvdG90eXBlLmdldEN1cnJlbnRTbGlkZUZyb21IYXNoXyA9IGZ1bmN0aW9uKCkgewogIHZhciBzbGlkZU5vID0gcGFyc2VJbnQoZG9jdW1lbnQubG9jYXRpb24uaGFzaC5zdWJzdHIoMSkpOwoKICBpZiAoc2xpZGVObykgewogICAgdGhpcy5jdXJTbGlkZV8gPSBzbGlkZU5vIC0gMTsKICB9IGVsc2UgewogICAgdGhpcy5jdXJTbGlkZV8gPSAwOwogIH0KfTsKCi8qKgogKiBAcGFyYW0ge251bWJlcn0gc2xpZGVObwogKi8KU2xpZGVEZWNrLnByb3RvdHlwZS5sb2FkU2xpZGUgPSBmdW5jdGlvbihzbGlkZU5vKSB7CiAgaWYgKHNsaWRlTm8pIHsKICAgIHRoaXMuY3VyU2xpZGVfID0gc2xpZGVObyAtIDE7CiAgICB0aGlzLnVwZGF0ZVNsaWRlc18oKTsKICB9Cn07CgovKioKICogQHByaXZhdGUKICovClNsaWRlRGVjay5wcm90b3R5cGUub25Eb21Mb2FkZWRfID0gZnVuY3Rpb24oZSkgewogIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnbG9hZGVkJyk7IC8vIEFkZCBsb2FkZWQgY2xhc3MgZm9yIHRlbXBsYXRlcyB0byB1c2UuCgogIHRoaXMuc2xpZGVzID0gdGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgnc2xpZGU6bm90KFtoaWRkZW5dKTpub3QoLmhpZGRlbik6bm90KC5iYWNrZHJvcCknKTsKCiAgLy8gSWYgd2UncmUgb24gYSBzbWFydHBob25lLCBhcHBseSBzcGVjaWFsIHNhdWNlLgogIGlmIChNb2Rlcm5penIubXEoJ29ubHkgc2NyZWVuIGFuZCAobWF4LWRldmljZS13aWR0aDogNDgwcHgpJykpIHsKICAgIC8vIHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTsKICAgIC8vIHN0eWxlLnJlbCA9ICdzdHlsZXNoZWV0JzsKICAgIC8vIHN0eWxlLnR5cGUgPSAndGV4dC9jc3MnOwogICAgLy8gc3R5bGUuaHJlZiA9IHRoaXMuQ1NTX0RJUl8gKyAncGhvbmUuY3NzJzsKICAgIC8vIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKS5hcHBlbmRDaGlsZChzdHlsZSk7CgogICAgLy8gTm8gbmVlZCBmb3Igd2lkZXNjcmVlbiBsYXlvdXQgb24gYSBwaG9uZS4KICAgIHRoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoJ2xheW91dC13aWRlc2NyZWVuJyk7CiAgfQoKICB0aGlzLmxvYWRDb25maWdfKFNMSURFX0NPTkZJRyk7CiAgdGhpcy5hZGRFdmVudExpc3RlbmVyc18oKTsKICB0aGlzLnVwZGF0ZVNsaWRlc18oKTsKCiAgLy8gQWRkIHNsaWRlIG51bWJlcnMgYW5kIHRvdGFsIHNsaWRlIGNvdW50IG1ldGFkYXRhIHRvIGVhY2ggc2xpZGUuCiAgdmFyIHRoYXQgPSB0aGlzOwogIGZvciAodmFyIGkgPSAwLCBzbGlkZTsgc2xpZGUgPSB0aGlzLnNsaWRlc1tpXTsgKytpKSB7CiAgICBzbGlkZS5kYXRhc2V0LnNsaWRlTnVtID0gaSArIDE7CiAgICBzbGlkZS5kYXRhc2V0LnRvdGFsU2xpZGVzID0gdGhpcy5zbGlkZXMubGVuZ3RoOwoKICAgIHNsaWRlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICBpZiAoZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoJ292ZXJ2aWV3JykpIHsKICAgICAgICB0aGF0LmxvYWRTbGlkZSh0aGlzLmRhdGFzZXQuc2xpZGVOdW0pOwogICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgIHRoYXQudG9nZ2xlT3ZlcnZpZXcoKTsKICAgICAgICB9LCA1MDApOwogICAgICB9CiAgICB9LCBmYWxzZSk7CiAgfQoKICAvLyBOb3RlOiB0aGlzIG5lZWRzIHRvIGNvbWUgYWZ0ZXIgYWRkRXZlbnRMaXN0ZW5lcnNfKCksIHdoaWNoIGFkZHMgYQogIC8vICdrZXlkb3duJyBsaXN0ZW5lciB0aGF0IHRoaXMgY29udHJvbGxlciByZWxpZXMgb24uCgogIC8vIE1vZGVybml6ci50b3VjaCBpc24ndCBhIHN1ZmZpY2llbnQgY2hlY2sgZm9yIGRldmljZXMgdGhhdCBzdXBwb3J0IGJvdGgKICAvLyB0b3VjaCBhbmQgbW91c2UuIENyZWF0ZSB0aGUgY29udHJvbGxlciBpbiBhbGwgY2FzZXMuCiAgLy8gLy8gQWxzbywgbm8gbmVlZCB0byBzZXQgdGhpcyB1cCBpZiB3ZSdyZSBvbiBtb2JpbGUuCiAgLy8gaWYgKCFNb2Rlcm5penIudG91Y2gpIHsKICAgIHRoaXMuY29udHJvbGxlciA9IG5ldyBTbGlkZUNvbnRyb2xsZXIodGhpcyk7CiAgICBpZiAodGhpcy5jb250cm9sbGVyLmlzUG9wdXApIHsKICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdwb3B1cCcpOwogICAgfQogIC8vfQp9OwoKLyoqCiAqIEBwcml2YXRlCiAqLwpTbGlkZURlY2sucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXJzXyA9IGZ1bmN0aW9uKCkgewogIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLm9uQm9keUtleURvd25fLmJpbmQodGhpcyksIHRydWUpOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwb3BzdGF0ZScsIHRoaXMub25Qb3BTdGF0ZV8uYmluZCh0aGlzKSwgZmFsc2UpOwoKICAvLyB2YXIgdHJhbnNFbmRFdmVudE5hbWVzID0gewogIC8vICAgJ1dlYmtpdFRyYW5zaXRpb24nOiAnd2Via2l0VHJhbnNpdGlvbkVuZCcsCiAgLy8gICAnTW96VHJhbnNpdGlvbic6ICd0cmFuc2l0aW9uZW5kJywKICAvLyAgICdPVHJhbnNpdGlvbic6ICdvVHJhbnNpdGlvbkVuZCcsCiAgLy8gICAnbXNUcmFuc2l0aW9uJzogJ01TVHJhbnNpdGlvbkVuZCcsCiAgLy8gICAndHJhbnNpdGlvbic6ICd0cmFuc2l0aW9uZW5kJwogIC8vIH07CiAgLy8KICAvLyAvLyBGaW5kIHRoZSBjb3JyZWN0IHRyYW5zaXRpb25FbmQgdmVuZG9yIHByZWZpeC4KICAvLyB3aW5kb3cudHJhbnNFbmRFdmVudE5hbWUgPSB0cmFuc0VuZEV2ZW50TmFtZXNbCiAgLy8gICAgIE1vZGVybml6ci5wcmVmaXhlZCgndHJhbnNpdGlvbicpXTsKICAvLwogIC8vIC8vIFdoZW4gc2xpZGVzIGFyZSBkb25lIHRyYW5zaXRpb25pbmcsIGtpY2tvZmYgbG9hZGluZyBpZnJhbWVzLgogIC8vIC8vIE5vdGU6IHdlJ3JlIG9ubHkgbG9va2luZyBhdCBhIHNpbmdsZSB0cmFuc2l0aW9uIChvbiB0aGUgc2xpZGUpLiBUaGlzCiAgLy8gLy8gZG9lc24ndCBpbmNsdWRlIGF1dG9idWlsZHMgdGhlIHNsaWRlcyBtYXkgaGF2ZS4gQWxzbywgaWYgdGhlIHNsaWRlCiAgLy8gLy8gdHJhbnNpdGlvbnMgb24gbXVsdGlwbGUgcHJvcGVydGllcyAoZS5nLiBub3QganVzdCAnYWxsJyksIHRoaXMgZG9lc24ndAogIC8vIC8vIGhhbmRsZSB0aGF0IGNhc2UuCiAgLy8gdGhpcy5jb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcih0cmFuc0VuZEV2ZW50TmFtZSwgZnVuY3Rpb24oZSkgewogIC8vICAgICB0aGlzLmVuYWJsZVNsaWRlRnJhbWVzXyh0aGlzLmN1clNsaWRlXyk7CiAgLy8gfS5iaW5kKHRoaXMpLCBmYWxzZSk7CgogIC8vIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3NsaWRlZW50ZXInLCBmdW5jdGlvbihlKSB7CiAgLy8gICB2YXIgc2xpZGUgPSBlLnRhcmdldDsKICAvLyAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogIC8vICAgICB0aGlzLmVuYWJsZVNsaWRlRnJhbWVzXyhlLnNsaWRlTnVtYmVyKTsKICAvLyAgICAgdGhpcy5lbmFibGVTbGlkZUZyYW1lc18oZS5zbGlkZU51bWJlciArIDEpOwogIC8vICAgfS5iaW5kKHRoaXMpLCAzMDApOwogIC8vIH0uYmluZCh0aGlzKSwgZmFsc2UpOwp9OwoKLyoqCiAqIEBwcml2YXRlCiAqIEBwYXJhbSB7RXZlbnR9IGUgVGhlIHBvcCBldmVudC4KICovClNsaWRlRGVjay5wcm90b3R5cGUub25Qb3BTdGF0ZV8gPSBmdW5jdGlvbihlKSB7CiAgaWYgKGUuc3RhdGUgIT0gbnVsbCkgewogICAgdGhpcy5jdXJTbGlkZV8gPSBlLnN0YXRlOwogICAgdGhpcy51cGRhdGVTbGlkZXNfKHRydWUpOwogIH0KfTsKCi8qKgogKiBAcGFyYW0ge0V2ZW50fSBlCiAqLwpTbGlkZURlY2sucHJvdG90eXBlLm9uQm9keUtleURvd25fID0gZnVuY3Rpb24oZSkgewoKICAvLyBEb24ndCBoYW5kbGUga2V5cyBpZiBhbiBpbnB1dCBvciB0ZXh0IGFyZWEgaXMgYWN0aXZlLiBEbyBzcGVjaWFsIGhhbmRsaW5nCiAgLy8gZm9yIHNlbGVjdGl6ZSBiZWNhdXNlIGl0IGtlZXBzIGZvY3VzIHdpdGhpbiBhbiBvZmZzY3JlZW4gdGV4dGJveCBldmVuCiAgLy8gd2hlbiBqdXN0IHRoZSBzZWxlY3QgY29udHJvbCBpcyBzaG93aW5nIC0tIGZvciBzZWxlY3RpemUgd2UgcmVmcmFpbiBmcm9tCiAgLy8gaGFuZGxpbmcga2V5cyBvbmx5IHdoZW4gdGhlIHRleHQgaW5wdXQgaXMgYWN0aXZlIG9yIHdoZW4gdGhlIHVwIG9yIGRvd24KICAvLyBhcnJvdyBrZXkgaXMgcHJlc3NlZCAod2hpY2ggaXMgdXNlZCB0byBvcGVuIHRoZSBsaXN0IGZyb20gdGhlIGtleWJvYXJkKQogIHZhciBwYXJlbnROb2RlID0gZS50YXJnZXQucGFyZW50Tm9kZSB8fCBlLnRhcmdldDsgLy8gaGFuZGxlIG5vIHBhcmVudAogIGlmIChwYXJlbnROb2RlLmNsYXNzTGlzdCAmJiBwYXJlbnROb2RlLmNsYXNzTGlzdC5jb250YWlucygnc2VsZWN0aXplLWlucHV0JykpIHsKICAgIGlmIChwYXJlbnROb2RlLmNsYXNzTGlzdC5jb250YWlucygnaW5wdXQtYWN0aXZlJykgfHwgIC8vIHRleHQgaW5wdXQgaXMgYWN0aXZlCiAgICAgICAoZS5rZXlDb2RlID09IDM4KSB8fCAoZS5rZXlDb2RlID09IDQwKSkgICAgICAgICAgICAvLyB1cCBvciBkb3duIGFycm93CiAgICAgIHJldHVybjsKICB9IGVsc2UgaWYgKC9eKGlucHV0fHRleHRhcmVhKSQvaS50ZXN0KGUudGFyZ2V0Lm5vZGVOYW1lKSB8fAogICAgICBlLnRhcmdldC5pc0NvbnRlbnRFZGl0YWJsZSkgewogICAgcmV0dXJuOwogIH0KCiAgLy8gRm9yd2FyZCBrZXlkb3ducyB0byB0aGUgbWFpbiBzbGlkZXMgaWYgd2UncmUgdGhlIHBvcHVwLgogIGlmICh0aGlzLmNvbnRyb2xsZXIgJiYgdGhpcy5jb250cm9sbGVyLmlzUG9wdXApIHsKICAgIHRoaXMuY29udHJvbGxlci5zZW5kTXNnKHtrZXlDb2RlOiBlLmtleUNvZGV9KTsKICB9CgogIHN3aXRjaCAoZS5rZXlDb2RlKSB7CiAgICBjYXNlIDEzOiAvLyBFbnRlcgogICAgICBpZiAoZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoJ292ZXJ2aWV3JykpIHsKICAgICAgICB0aGlzLnRvZ2dsZU92ZXJ2aWV3KCk7CiAgICAgIH0KICAgICAgYnJlYWs7CgogICAgY2FzZSAzOTogLy8gcmlnaHQgYXJyb3cKICAgIGNhc2UgMzI6IC8vIHNwYWNlCiAgICBjYXNlIDM0OiAvLyBQZ0RuCiAgICAgIHRoaXMubmV4dFNsaWRlKCk7CiAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSAzNzogLy8gbGVmdCBhcnJvdwogICAgY2FzZSA4OiAvLyBCYWNrc3BhY2UKICAgIGNhc2UgMzM6IC8vIFBnVXAKICAgICAgdGhpcy5wcmV2U2xpZGUoKTsKICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICBicmVhazsKCiAgICBjYXNlIDQwOiAvLyBkb3duIGFycm93CiAgICAgIHRoaXMubmV4dFNsaWRlKCk7CiAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSAzODogLy8gdXAgYXJyb3cKICAgICAgdGhpcy5wcmV2U2xpZGUoKTsKICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICBicmVhazsKCiAgICBjYXNlIDcyOiAvLyBIOiBUb2dnbGUgY29kZSBoaWdobGlnaHRpbmcKICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdoaWdobGlnaHQtY29kZScpOwogICAgICBicmVhazsKCiAgICBjYXNlIDc5OiAvLyBPOiBUb2dnbGUgb3ZlcnZpZXcKICAgICAgdGhpcy50b2dnbGVPdmVydmlldygpOwogICAgICBicmVhazsKCiAgICBjYXNlIDgwOiAvLyBQCiAgICAgIGlmICh0aGlzLmNvbnRyb2xsZXIgJiYgdGhpcy5jb250cm9sbGVyLmlzUG9wdXApIHsKICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ3dpdGgtbm90ZXMnKTsKICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbnRyb2xsZXIgJiYgIXRoaXMuY29udHJvbGxlci5wb3B1cCkgewogICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnd2l0aC1ub3RlcycpOwogICAgICB9CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgODI6IC8vIFIKICAgICAgLy8gVE9ETzogaW1wbGVtZW50IHJlZnJlc2ggb24gbWFpbiBzbGlkZXMgd2hlbiBwb3B1cCBpcyByZWZyZXNoZWQuCiAgICAgIGJyZWFrOwoKICAgIGNhc2UgMjc6IC8vIEVTQzogSGlkZSBub3RlcyBhbmQgaGlnaGxpZ2h0aW5nCiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnd2l0aC1ub3RlcycpOwogICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ2hpZ2hsaWdodC1jb2RlJyk7CgogICAgICBpZiAoZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoJ292ZXJ2aWV3JykpIHsKICAgICAgICB0aGlzLnRvZ2dsZU92ZXJ2aWV3KCk7CiAgICAgIH0KICAgICAgYnJlYWs7CgogICAgY2FzZSA3MDogLy8gRjogVG9nZ2xlIGZ1bGxzY3JlZW4KICAgICAgIC8vIE9ubHkgcmVzcGVjdCAnZicgb24gYm9keS4gRG9uJ3Qgd2FudCB0byBjYXB0dXJlIGtleXMgZnJvbSBhbiA8aW5wdXQ+LgogICAgICAgLy8gQWxzbywgaWdub3JlIGJyb3dzZXIncyBmdWxsc2NyZWVuIHNob3J0Y3V0IChjbWQrc2hpZnQrZikgc28gd2UgZG9uJ3QKICAgICAgIC8vIGdldCB0cmFwcGVkIGluIGZ1bGxzY3JlZW4hCiAgICAgIGlmIChkb2N1bWVudC5jYW5jZWxGdWxsU2NyZWVuICE9PSB1bmRlZmluZWQgJiYgZS50YXJnZXQgPT0gZG9jdW1lbnQuYm9keSAmJiAhKGUuc2hpZnRLZXkgJiYgZS5tZXRhS2V5KSkgewogICAgICAgIGlmIChkb2N1bWVudC5tb3pGdWxsU2NyZWVuICE9PSB1bmRlZmluZWQgJiYgIWRvY3VtZW50Lm1vekZ1bGxTY3JlZW4pIHsKICAgICAgICAgIGRvY3VtZW50LmJvZHkubW96UmVxdWVzdEZ1bGxTY3JlZW4oRWxlbWVudC5BTExPV19LRVlCT0FSRF9JTlBVVCk7CiAgICAgICAgfSBlbHNlIGlmIChkb2N1bWVudC53ZWJraXRJc0Z1bGxTY3JlZW4gIT09IHVuZGVmaW5lZCAmJiAhZG9jdW1lbnQud2Via2l0SXNGdWxsU2NyZWVuKSB7CiAgICAgICAgICBkb2N1bWVudC5ib2R5LndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKEVsZW1lbnQuQUxMT1dfS0VZQk9BUkRfSU5QVVQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBkb2N1bWVudC5jYW5jZWxGdWxsU2NyZWVuKCk7CiAgICAgICAgfQogICAgICB9CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgODc6IC8vIFc6IFRvZ2dsZSB3aWRlc2NyZWVuCiAgICAgIC8vIE9ubHkgcmVzcGVjdCAndycgb24gYm9keS4gRG9uJ3Qgd2FudCB0byBjYXB0dXJlIGtleXMgZnJvbSBhbiA8aW5wdXQ+LgogICAgICBpZiAoZS50YXJnZXQgPT0gZG9jdW1lbnQuYm9keSAmJiAhKGUuc2hpZnRLZXkgJiYgZS5tZXRhS2V5KSkgewogICAgICAgIHRoaXMuY29udGFpbmVyLmNsYXNzTGlzdC50b2dnbGUoJ2xheW91dC13aWRlc2NyZWVuJyk7CiAgICAgIH0KICAgICAgYnJlYWs7CiAgfQp9OwoKLyoqCiAqCiAqLwpTbGlkZURlY2sucHJvdG90eXBlLmZvY3VzT3ZlcnZpZXdfID0gZnVuY3Rpb24oKSB7CiAgdmFyIG92ZXJ2aWV3ID0gZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoJ292ZXJ2aWV3Jyk7CgogIGZvciAodmFyIGkgPSAwLCBzbGlkZTsgc2xpZGUgPSB0aGlzLnNsaWRlc1tpXTsgaSsrKSB7CiAgICBzbGlkZS5zdHlsZVtNb2Rlcm5penIucHJlZml4ZWQoJ3RyYW5zZm9ybScpXSA9IG92ZXJ2aWV3ID8KICAgICAgICAndHJhbnNsYXRlWigtMjUwMHB4KSB0cmFuc2xhdGUoJyArICgoIGkgLSB0aGlzLmN1clNsaWRlXyApICogMTA1KSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICclLCAwJSknIDogJyc7CiAgfQp9OwoKLyoqCiAqLwpTbGlkZURlY2sucHJvdG90eXBlLnRvZ2dsZU92ZXJ2aWV3ID0gZnVuY3Rpb24oKSB7CiAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdvdmVydmlldycpOwoKICB0aGlzLmZvY3VzT3ZlcnZpZXdfKCk7Cn07CgovKioKICogQHByaXZhdGUKICovClNsaWRlRGVjay5wcm90b3R5cGUubG9hZENvbmZpZ18gPSBmdW5jdGlvbihjb25maWcpIHsKICBpZiAoIWNvbmZpZykgewogICAgcmV0dXJuOwogIH0KCiAgdGhpcy5jb25maWdfID0gY29uZmlnOwoKICB2YXIgc2V0dGluZ3MgPSB0aGlzLmNvbmZpZ18uc2V0dGluZ3M7CgogIHRoaXMubG9hZFRoZW1lXyhzZXR0aW5ncy50aGVtZSB8fCBbXSk7CgogIGlmIChzZXR0aW5ncy5mYXZJY29uKSB7CiAgICB0aGlzLmFkZEZhdkljb25fKHNldHRpbmdzLmZhdkljb24pOwogIH0KCiAgLy8gUHJldHR5cHJpbnQuIERlZmF1bHQgdG8gb24uCiAgaWYgKCEhISgndXNlUHJldHRpZnknIGluIHNldHRpbmdzKSB8fCBzZXR0aW5ncy51c2VQcmV0dGlmeSkgewogICAgcHJldHR5UHJpbnQoKTsKICB9CgogIGlmIChzZXR0aW5ncy5hbmFseXRpY3MpIHsKICAgIHRoaXMubG9hZEFuYWx5dGljc18oKTsKICB9CgogIGlmIChzZXR0aW5ncy5mb250cykgewogICAgdGhpcy5hZGRGb250c18oc2V0dGluZ3MuZm9udHMpOwogIH0KCiAgLy8gQnVpbGRzLiBEZWZhdWx0IHRvIG9uLgogIGlmICghISEoJ3VzZUJ1aWxkcycgaW4gc2V0dGluZ3MpIHx8IHNldHRpbmdzLnVzZUJ1aWxkcykgewogICAgdGhpcy5tYWtlQnVpbGRMaXN0c18oKTsKICB9CgogIGlmIChzZXR0aW5ncy50aXRsZSkgewogICAgZG9jdW1lbnQudGl0bGUgPSBzZXR0aW5ncy50aXRsZS5yZXBsYWNlKC88YnJcLz8+LywgJyAnKTsKICAgIGlmIChzZXR0aW5ncy5ldmVudEluZm8gJiYgc2V0dGluZ3MuZXZlbnRJbmZvLnRpdGxlKSB7CiAgICAgIGRvY3VtZW50LnRpdGxlICs9ICAnIC0gJyArIHNldHRpbmdzLmV2ZW50SW5mby50aXRsZTsKICAgIH0KICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWNvbmZpZy10aXRsZV0nKS5pbm5lckhUTUwgPSBzZXR0aW5ncy50aXRsZTsKICB9CgogIGlmIChzZXR0aW5ncy5zdWJ0aXRsZSkgewogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtY29uZmlnLXN1YnRpdGxlXScpLmlubmVySFRNTCA9IHNldHRpbmdzLnN1YnRpdGxlOwogIH0KCiAgaWYgKHRoaXMuY29uZmlnXy5wcmVzZW50ZXJzKSB7CiAgICB2YXIgcHJlc2VudGVycyA9IHRoaXMuY29uZmlnXy5wcmVzZW50ZXJzOwogICAgdmFyIGRhdGFDb25maWdDb250YWN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtY29uZmlnLWNvbnRhY3RdJyk7CgogICAgdmFyIGh0bWwgPSBbXTsKICAgIGlmIChwcmVzZW50ZXJzLmxlbmd0aCA9PSAxKSB7CiAgICAgIHZhciBwID0gcHJlc2VudGVyc1swXTsKCiAgICAgIHZhciBwcmVzZW50ZXJUaXRsZSA9IFtwLm5hbWVdOwogICAgICBpZiAocC5jb21wYW55KSB7CiAgICAgICAgcHJlc2VudGVyVGl0bGUucHVzaChwLmNvbXBhbnkpOwogICAgICB9CiAgICAgIGh0bWwgPSBwcmVzZW50ZXJUaXRsZS5qb2luKCcgLSAnKSArICc8YnI+JzsKCiAgICAgIHZhciBncGx1cyA9IHAuZ3BsdXMgPyAnPHNwYW4+Zys8L3NwYW4+PGEgaHJlZj0iJyArIHAuZ3BsdXMgKwogICAgICAgICAgJyI+JyArIHAuZ3BsdXMucmVwbGFjZSgvaHR0cHM/OlwvXC8vLCAnJykgKyAnPC9hPicgOiAnJzsKCiAgICAgIHZhciB0d2l0dGVyID0gcC50d2l0dGVyID8gJzxzcGFuPnR3aXR0ZXI8L3NwYW4+JyArCiAgICAgICAgICAnPGEgaHJlZj0iaHR0cDovL3R3aXR0ZXIuY29tLycgKyBwLnR3aXR0ZXIgKyAnIj4nICsKICAgICAgICAgIHAudHdpdHRlciArICc8L2E+JyA6ICcnOwoKICAgICAgdmFyIHd3dyA9IHAud3d3ID8gJzxzcGFuPnd3dzwvc3Bhbj48YSBocmVmPSInICsgcC53d3cgKwogICAgICAgICAgICAgICAgICAgICAgICAnIj4nICsgcC53d3cucmVwbGFjZSgvaHR0cHM/OlwvXC8vLCAnJykgKyAnPC9hPicgOiAnJzsKCiAgICAgIHZhciBnaXRodWIgPSBwLmdpdGh1YiA/ICc8c3Bhbj5naXRodWI8L3NwYW4+PGEgaHJlZj0iJyArIHAuZ2l0aHViICsKICAgICAgICAgICciPicgKyBwLmdpdGh1Yi5yZXBsYWNlKC9odHRwcz86XC9cLy8sICcnKSArICc8L2E+JyA6ICcnOwoKICAgICAgdmFyIGh0bWwyID0gW2dwbHVzLCB0d2l0dGVyLCB3d3csIGdpdGh1Yl0uam9pbignPGJyPicpOwoKICAgICAgaWYgKGRhdGFDb25maWdDb250YWN0KSB7CiAgICAgICAgZGF0YUNvbmZpZ0NvbnRhY3QuaW5uZXJIVE1MID0gaHRtbDI7CiAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgIGZvciAodmFyIGkgPSAwLCBwOyBwID0gcHJlc2VudGVyc1tpXTsgKytpKSB7CiAgICAgICAgaHRtbC5wdXNoKHAubmFtZSArICcgLSAnICsgcC5jb21wYW55KTsKICAgICAgfQogICAgICBodG1sID0gaHRtbC5qb2luKCc8YnI+Jyk7CiAgICAgIGlmIChkYXRhQ29uZmlnQ29udGFjdCkgewogICAgICAgIGRhdGFDb25maWdDb250YWN0LmlubmVySFRNTCA9IGh0bWw7CiAgICAgIH0KICAgIH0KCiAgICB2YXIgZGF0YUNvbmZpZ1ByZXNlbnRlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWNvbmZpZy1wcmVzZW50ZXJdJyk7CiAgICBpZiAoZGF0YUNvbmZpZ1ByZXNlbnRlcikgewogICAgICBkYXRhQ29uZmlnUHJlc2VudGVyLmlubmVySFRNTCA9IGh0bWw7CiAgICAgIGlmIChzZXR0aW5ncy5ldmVudEluZm8pIHsKICAgICAgICB2YXIgZGF0ZSA9IHNldHRpbmdzLmV2ZW50SW5mby5kYXRlOwogICAgICAgIHZhciBkYXRlSW5mbyA9IGRhdGUgPyAnIC0gPHRpbWU+JyArIGRhdGUgKyAnPC90aW1lPicgOiAnJzsKICAgICAgICBkYXRhQ29uZmlnUHJlc2VudGVyLmlubmVySFRNTCArPSBzZXR0aW5ncy5ldmVudEluZm8udGl0bGUgKyBkYXRlSW5mbzsKICAgICAgfQogICAgfQogIH0KCiAgLyogTGVmdC9SaWdodCB0YXAgYXJlYXMuIERlZmF1bHQgdG8gaW5jbHVkaW5nLiAqLwogIGlmICghISEoJ2VuYWJsZVNsaWRlQXJlYXMnIGluIHNldHRpbmdzKSB8fCBzZXR0aW5ncy5lbmFibGVTbGlkZUFyZWFzKSB7CiAgICB2YXIgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIGVsLmNsYXNzTGlzdC5hZGQoJ3NsaWRlLWFyZWEnKTsKICAgIGVsLmlkID0gJ3ByZXYtc2xpZGUtYXJlYSc7CiAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMucHJldlNsaWRlLmJpbmQodGhpcyksIGZhbHNlKTsKICAgIHRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKGVsKTsKCiAgICB2YXIgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIGVsLmNsYXNzTGlzdC5hZGQoJ3NsaWRlLWFyZWEnKTsKICAgIGVsLmlkID0gJ25leHQtc2xpZGUtYXJlYSc7CiAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMubmV4dFNsaWRlLmJpbmQodGhpcyksIGZhbHNlKTsKICAgIHRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKGVsKTsKICB9CgogIGlmIChNb2Rlcm5penIudG91Y2ggJiYgKCEhISgnZW5hYmxlVG91Y2gnIGluIHNldHRpbmdzKSB8fAogICAgICBzZXR0aW5ncy5lbmFibGVUb3VjaCkpIHsKICAgIHZhciBzZWxmID0gdGhpczsKCiAgICAvLyBOb3RlOiB0aGlzIHByZXZlbnRzIG1vYmlsZSB6b29tIGluL291dCBidXQgcHJldmVudHMgaU9TIGZyb20gZG9pbmcKICAgIC8vIGl0J3MgY3Jhenkgc2Nyb2xsIG92ZXIgZWZmZWN0IGFuZCBkaXNhbGlnbmluZyB0aGUgc2xpZGVzLgogICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBmdW5jdGlvbihlKSB7CiAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgIH0sIGZhbHNlKTsKCiAgICB2YXIgaGFtbWVyID0gbmV3IEhhbW1lcih0aGlzLmNvbnRhaW5lcik7CiAgICBoYW1tZXIub25kcmFnZW5kID0gZnVuY3Rpb24oZSkgewogICAgICBpZiAoZS5kaXJlY3Rpb24gPT0gJ3JpZ2h0JyB8fCBlLmRpcmVjdGlvbiA9PSAnZG93bicpIHsKICAgICAgICBzZWxmLnByZXZTbGlkZSgpOwogICAgICB9IGVsc2UgaWYgKGUuZGlyZWN0aW9uID09ICdsZWZ0JyB8fCBlLmRpcmVjdGlvbiA9PSAndXAnKSB7CiAgICAgICAgc2VsZi5uZXh0U2xpZGUoKTsKICAgICAgfQogICAgfTsKICB9Cn07CgovKioKICogQHByaXZhdGUKICogQHBhcmFtIHtBcnJheS48c3RyaW5nPn0gZm9udHMKICovClNsaWRlRGVjay5wcm90b3R5cGUuYWRkRm9udHNfID0gZnVuY3Rpb24oZm9udHMpIHsKICB2YXIgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJyk7CiAgZWwucmVsID0gJ3N0eWxlc2hlZXQnOwogIGVsLmhyZWYgPSAoJ2h0dHBzOicgPT0gZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wgPyAnaHR0cHMnIDogJ2h0dHAnKSArCiAgICAgICc6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PScgKyBmb250cy5qb2luKCd8JykgKyAnJnYyJzsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoZWFkJykuYXBwZW5kQ2hpbGQoZWwpOwp9OwoKLyoqCiAqIEBwcml2YXRlCiAqLwpTbGlkZURlY2sucHJvdG90eXBlLmJ1aWxkTmV4dEl0ZW1fID0gZnVuY3Rpb24oKSB7CiAgdmFyIHNsaWRlID0gdGhpcy5zbGlkZXNbdGhpcy5jdXJTbGlkZV9dOwogIHZhciB0b0J1aWxkID0gc2xpZGUucXVlcnlTZWxlY3RvcignLnRvLWJ1aWxkJyk7CiAgdmFyIGJ1aWx0ID0gc2xpZGUucXVlcnlTZWxlY3RvcignLmJ1aWxkLWN1cnJlbnQnKTsKCiAgaWYgKGJ1aWx0KSB7CiAgICBidWlsdC5jbGFzc0xpc3QucmVtb3ZlKCdidWlsZC1jdXJyZW50Jyk7CiAgICBpZiAoYnVpbHQuY2xhc3NMaXN0LmNvbnRhaW5zKCdmYWRlJykpIHsKICAgICAgYnVpbHQuY2xhc3NMaXN0LmFkZCgnYnVpbGQtZmFkZScpOwogICAgfQogIH0KCiAgaWYgKCF0b0J1aWxkKSB7CiAgICB2YXIgaXRlbXMgPSBzbGlkZS5xdWVyeVNlbGVjdG9yQWxsKCcuYnVpbGQtZmFkZScpOwogICAgZm9yICh2YXIgaiA9IDAsIGl0ZW07IGl0ZW0gPSBpdGVtc1tqXTsgaisrKSB7CiAgICAgIGl0ZW0uY2xhc3NMaXN0LnJlbW92ZSgnYnVpbGQtZmFkZScpOwogICAgfQogICAgcmV0dXJuIGZhbHNlOwogIH0KCiAgdG9CdWlsZC5jbGFzc0xpc3QucmVtb3ZlKCd0by1idWlsZCcpOwogIHRvQnVpbGQuY2xhc3NMaXN0LmFkZCgnYnVpbGQtY3VycmVudCcpOwoKICByZXR1cm4gdHJ1ZTsKfTsKCi8qKgogKiBAcGFyYW0ge2Jvb2xlYW49fSBvcHRfZG9udFB1c2gKICovClNsaWRlRGVjay5wcm90b3R5cGUucHJldlNsaWRlID0gZnVuY3Rpb24ob3B0X2RvbnRQdXNoKSB7CiAgaWYgKHRoaXMuY3VyU2xpZGVfID4gMCkgewogICAgdmFyIGJvZHlDbGFzc0xpc3QgPSBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdDsKICAgIGJvZHlDbGFzc0xpc3QucmVtb3ZlKCdoaWdobGlnaHQtY29kZScpOwoKICAgIC8vIFRvZ2dsZSBvZmYgc3BlYWtlciBub3RlcyBpZiB0aGV5J3JlIHNob3dpbmcgd2hlbiB3ZSBtb3ZlIGJhY2t3YXJkcyBvbiB0aGUKICAgIC8vIG1haW4gc2xpZGVzLiBJZiB3ZSdyZSB0aGUgc3BlYWtlciBub3RlcyBwb3B1cCwgbGVhdmUgdGhlbSB1cC4KICAgIGlmICh0aGlzLmNvbnRyb2xsZXIgJiYgIXRoaXMuY29udHJvbGxlci5pc1BvcHVwKSB7CiAgICAgIGJvZHlDbGFzc0xpc3QucmVtb3ZlKCd3aXRoLW5vdGVzJyk7CiAgICB9IGVsc2UgaWYgKCF0aGlzLmNvbnRyb2xsZXIpIHsKICAgICAgYm9keUNsYXNzTGlzdC5yZW1vdmUoJ3dpdGgtbm90ZXMnKTsKICAgIH0KCiAgICB0aGlzLnByZXZTbGlkZV8gPSB0aGlzLmN1clNsaWRlXy0tOwoKICAgIHRoaXMudXBkYXRlU2xpZGVzXyhvcHRfZG9udFB1c2gpOwogIH0KfTsKCi8qKgogKiBAcGFyYW0ge2Jvb2xlYW49fSBvcHRfZG9udFB1c2gKICovClNsaWRlRGVjay5wcm90b3R5cGUubmV4dFNsaWRlID0gZnVuY3Rpb24ob3B0X2RvbnRQdXNoKSB7CiAgaWYgKCFkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygnb3ZlcnZpZXcnKSAmJiB0aGlzLmJ1aWxkTmV4dEl0ZW1fKCkpIHsKICAgIHJldHVybjsKICB9CgogIGlmICh0aGlzLmN1clNsaWRlXyA8IHRoaXMuc2xpZGVzLmxlbmd0aCAtIDEpIHsKICAgIHZhciBib2R5Q2xhc3NMaXN0ID0gZG9jdW1lbnQuYm9keS5jbGFzc0xpc3Q7CiAgICBib2R5Q2xhc3NMaXN0LnJlbW92ZSgnaGlnaGxpZ2h0LWNvZGUnKTsKCiAgICAvLyBUb2dnbGUgb2ZmIHNwZWFrZXIgbm90ZXMgaWYgdGhleSdyZSBzaG93aW5nIHdoZW4gd2UgYWR2YW5jZWQgb24gdGhlIG1haW4KICAgIC8vIHNsaWRlcy4gSWYgd2UncmUgdGhlIHNwZWFrZXIgbm90ZXMgcG9wdXAsIGxlYXZlIHRoZW0gdXAuCiAgICBpZiAodGhpcy5jb250cm9sbGVyICYmICF0aGlzLmNvbnRyb2xsZXIuaXNQb3B1cCkgewogICAgICBib2R5Q2xhc3NMaXN0LnJlbW92ZSgnd2l0aC1ub3RlcycpOwogICAgfSBlbHNlIGlmICghdGhpcy5jb250cm9sbGVyKSB7CiAgICAgIGJvZHlDbGFzc0xpc3QucmVtb3ZlKCd3aXRoLW5vdGVzJyk7CiAgICB9CgogICAgdGhpcy5wcmV2U2xpZGVfID0gdGhpcy5jdXJTbGlkZV8rKzsKCiAgICB0aGlzLnVwZGF0ZVNsaWRlc18ob3B0X2RvbnRQdXNoKTsKICB9Cn07CgovKiBTbGlkZSBldmVudHMgKi8KCi8qKgogKiBUcmlnZ2VyZWQgd2hlbiBhIHNsaWRlIGVudGVyL2xlYXZlIGV2ZW50IHNob3VsZCBiZSBkaXNwYXRjaGVkLgogKgogKiBAcGFyYW0ge3N0cmluZ30gdHlwZSBUaGUgdHlwZSBvZiBldmVudCB0byB0cmlnZ2VyCiAqICAgICAoZS5nLiAnc2xpZGVlbnRlcicsICdzbGlkZWxlYXZlJykuCiAqIEBwYXJhbSB7bnVtYmVyfSBzbGlkZU5vIFRoZSBpbmRleCBvZiB0aGUgc2xpZGUgdGhhdCBpcyBiZWluZyBsZWZ0LgogKi8KU2xpZGVEZWNrLnByb3RvdHlwZS50cmlnZ2VyU2xpZGVFdmVudCA9IGZ1bmN0aW9uKHR5cGUsIHNsaWRlTm8pIHsKICB2YXIgZWwgPSB0aGlzLmdldFNsaWRlRWxfKHNsaWRlTm8pOwogIGlmICghZWwpIHsKICAgIHJldHVybjsKICB9CgogIC8vIENhbGwgb25zbGlkZWVudGVyL29uc2xpZGVsZWF2ZSBpZiB0aGUgYXR0cmlidXRlIGlzIGRlZmluZWQgb24gdGhpcyBzbGlkZS4KICB2YXIgZnVuYyA9IGVsLmdldEF0dHJpYnV0ZSh0eXBlKTsKICBpZiAoZnVuYykgewogICAgbmV3IEZ1bmN0aW9uKGZ1bmMpLmNhbGwoZWwpOyAvLyBUT0RPOiBEb24ndCB1c2UgbmV3IEZ1bmN0aW9uKCkgOigKICB9CgogIC8vIERpc3BhdGNoIGV2ZW50IHRvIGxpc3RlbmVycyBzZXR1cCB1c2luZyBhZGRFdmVudExpc3RlbmVyLgogIHZhciBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTsKICBldnQuaW5pdEV2ZW50KHR5cGUsIHRydWUsIHRydWUpOwogIGV2dC5zbGlkZU51bWJlciA9IHNsaWRlTm8gKyAxOyAvLyBNYWtlIGl0IHJlYWRhYmxlCiAgZXZ0LnNsaWRlID0gZWw7CgogIGVsLmRpc3BhdGNoRXZlbnQoZXZ0KTsKfTsKCi8qKgogKiBAcHJpdmF0ZQogKi8KU2xpZGVEZWNrLnByb3RvdHlwZS51cGRhdGVTbGlkZXNfID0gZnVuY3Rpb24ob3B0X2RvbnRQdXNoKSB7CiAgdmFyIGRvbnRQdXNoID0gb3B0X2RvbnRQdXNoIHx8IGZhbHNlOwoKICB2YXIgY3VyU2xpZGUgPSB0aGlzLmN1clNsaWRlXzsKICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc2xpZGVzLmxlbmd0aDsgKytpKSB7CiAgICBzd2l0Y2ggKGkpIHsKICAgICAgY2FzZSBjdXJTbGlkZSAtIDI6CiAgICAgICAgdGhpcy51cGRhdGVTbGlkZUNsYXNzXyhpLCAnZmFyLXBhc3QnKTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSBjdXJTbGlkZSAtIDE6CiAgICAgICAgdGhpcy51cGRhdGVTbGlkZUNsYXNzXyhpLCAncGFzdCcpOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIGN1clNsaWRlOgogICAgICAgIHRoaXMudXBkYXRlU2xpZGVDbGFzc18oaSwgJ2N1cnJlbnQnKTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSBjdXJTbGlkZSArIDE6CiAgICAgICAgdGhpcy51cGRhdGVTbGlkZUNsYXNzXyhpLCAnbmV4dCcpOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIGN1clNsaWRlICsgMjoKICAgICAgICB0aGlzLnVwZGF0ZVNsaWRlQ2xhc3NfKGksICdmYXItbmV4dCcpOwogICAgICAgIGJyZWFrOwogICAgICBkZWZhdWx0OgogICAgICAgIHRoaXMudXBkYXRlU2xpZGVDbGFzc18oaSk7CiAgICAgICAgYnJlYWs7CiAgICB9CiAgfTsKCiAgdGhpcy50cmlnZ2VyU2xpZGVFdmVudCgnc2xpZGVsZWF2ZScsIHRoaXMucHJldlNsaWRlXyk7CiAgdGhpcy50cmlnZ2VyU2xpZGVFdmVudCgnc2xpZGVlbnRlcicsIGN1clNsaWRlKTsKCi8vIHdpbmRvdy5zZXRUaW1lb3V0KHRoaXMuZGlzYWJsZVNsaWRlRnJhbWVzXy5iaW5kKHRoaXMsIGN1clNsaWRlIC0gMiksIDMwMSk7Ci8vCi8vIHRoaXMuZW5hYmxlU2xpZGVGcmFtZXNfKGN1clNsaWRlIC0gMSk7IC8vIFByZXZpb3VzIHNsaWRlLgovLyB0aGlzLmVuYWJsZVNsaWRlRnJhbWVzXyhjdXJTbGlkZSArIDEpOyAvLyBDdXJyZW50IHNsaWRlLgovLyB0aGlzLmVuYWJsZVNsaWRlRnJhbWVzXyhjdXJTbGlkZSArIDIpOyAvLyBOZXh0IHNsaWRlLgoKICAgLy8gRW5hYmxlIGN1cnJlbnQgc2xpZGUncyBpZnJhbWVzIChuZWVkZWQgZm9yIHBhZ2UgbG9hdCBhdCBjdXJyZW50IHNsaWRlKS4KICAgdGhpcy5lbmFibGVTbGlkZUZyYW1lc18oY3VyU2xpZGUgKyAxKTsKCiAgIC8vIE5vIHdheSB0byB0ZWxsIHdoZW4gYWxsIHNsaWRlIHRyYW5zaXRpb25zICsgYXV0byBidWlsZHMgYXJlIGRvbmUuCiAgIC8vIEdpdmUgb3Vyc2VsdmVzIGEgZ29vZCBidWZmZXIgdG8gcHJlbG9hZCB0aGUgbmV4dCBzbGlkZSdzIGlmcmFtZXMuCiAgIHdpbmRvdy5zZXRUaW1lb3V0KHRoaXMuZW5hYmxlU2xpZGVGcmFtZXNfLmJpbmQodGhpcywgY3VyU2xpZGUgKyAyKSwgMTAwMCk7CgogIHRoaXMudXBkYXRlSGFzaF8oZG9udFB1c2gpOwoKICBpZiAoZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoJ292ZXJ2aWV3JykpIHsKICAgIHRoaXMuZm9jdXNPdmVydmlld18oKTsKICAgIHJldHVybjsKICB9Cgp9OwoKLyoqCiAqIEBwcml2YXRlCiAqIEBwYXJhbSB7bnVtYmVyfSBzbGlkZU5vCiAqLwpTbGlkZURlY2sucHJvdG90eXBlLmVuYWJsZVNsaWRlRnJhbWVzXyA9IGZ1bmN0aW9uKHNsaWRlTm8pIHsKICB2YXIgZWwgPSB0aGlzLnNsaWRlc1tzbGlkZU5vIC0gMV07CiAgaWYgKCFlbCkgewogICAgcmV0dXJuOwogIH0KCiAgdmFyIGZyYW1lcyA9IGVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ2lmcmFtZScpOwogIGZvciAodmFyIGkgPSAwLCBmcmFtZTsgZnJhbWUgPSBmcmFtZXNbaV07IGkrKykgewogICAgdGhpcy5lbmFibGVGcmFtZV8oZnJhbWUpOwogIH0KfTsKCi8qKgogKiBAcHJpdmF0ZQogKiBAcGFyYW0ge251bWJlcn0gc2xpZGVObwogKi8KU2xpZGVEZWNrLnByb3RvdHlwZS5lbmFibGVGcmFtZV8gPSBmdW5jdGlvbihmcmFtZSkgewogIHZhciBzcmMgPSBmcmFtZS5kYXRhc2V0LnNyYzsKICBpZiAoc3JjICYmIGZyYW1lLnNyYyAhPSBzcmMpIHsKICAgIGZyYW1lLnNyYyA9IHNyYzsKICB9Cn07CgovKioKICogQHByaXZhdGUKICogQHBhcmFtIHtudW1iZXJ9IHNsaWRlTm8KICovClNsaWRlRGVjay5wcm90b3R5cGUuZGlzYWJsZVNsaWRlRnJhbWVzXyA9IGZ1bmN0aW9uKHNsaWRlTm8pIHsKICB2YXIgZWwgPSB0aGlzLnNsaWRlc1tzbGlkZU5vIC0gMV07CiAgaWYgKCFlbCkgewogICAgcmV0dXJuOwogIH0KCiAgdmFyIGZyYW1lcyA9IGVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ2lmcmFtZScpOwogIGZvciAodmFyIGkgPSAwLCBmcmFtZTsgZnJhbWUgPSBmcmFtZXNbaV07IGkrKykgewogICAgdGhpcy5kaXNhYmxlRnJhbWVfKGZyYW1lKTsKICB9Cn07CgovKioKICogQHByaXZhdGUKICogQHBhcmFtIHtOb2RlfSBmcmFtZQogKi8KU2xpZGVEZWNrLnByb3RvdHlwZS5kaXNhYmxlRnJhbWVfID0gZnVuY3Rpb24oZnJhbWUpIHsKICBmcmFtZS5zcmMgPSAnYWJvdXQ6YmxhbmsnOwp9OwoKLyoqCiAqIEBwcml2YXRlCiAqIEBwYXJhbSB7bnVtYmVyfSBzbGlkZU5vCiAqLwpTbGlkZURlY2sucHJvdG90eXBlLmdldFNsaWRlRWxfID0gZnVuY3Rpb24obm8pIHsKICBpZiAoKG5vIDwgMCkgfHwgKG5vID49IHRoaXMuc2xpZGVzLmxlbmd0aCkpIHsKICAgIHJldHVybiBudWxsOwogIH0gZWxzZSB7CiAgICByZXR1cm4gdGhpcy5zbGlkZXNbbm9dOwogIH0KfTsKCi8qKgogKiBAcHJpdmF0ZQogKiBAcGFyYW0ge251bWJlcn0gc2xpZGVObwogKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lCiAqLwpTbGlkZURlY2sucHJvdG90eXBlLnVwZGF0ZVNsaWRlQ2xhc3NfID0gZnVuY3Rpb24oc2xpZGVObywgY2xhc3NOYW1lKSB7CiAgdmFyIGVsID0gdGhpcy5nZXRTbGlkZUVsXyhzbGlkZU5vKTsKCiAgaWYgKCFlbCkgewogICAgcmV0dXJuOwogIH0KCiAgaWYgKGNsYXNzTmFtZSkgewogICAgZWwuY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpOwogIH0KCiAgZm9yICh2YXIgaSA9IDAsIHNsaWRlQ2xhc3M7IHNsaWRlQ2xhc3MgPSB0aGlzLlNMSURFX0NMQVNTRVNfW2ldOyArK2kpIHsKICAgIGlmIChjbGFzc05hbWUgIT0gc2xpZGVDbGFzcykgewogICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKHNsaWRlQ2xhc3MpOwogICAgfQogIH0KfTsKCi8qKgogKiBAcHJpdmF0ZQogKi8KU2xpZGVEZWNrLnByb3RvdHlwZS5tYWtlQnVpbGRMaXN0c18gPSBmdW5jdGlvbiAoKSB7CiAgZm9yICh2YXIgaSA9IHRoaXMuY3VyU2xpZGVfLCBzbGlkZTsgc2xpZGUgPSB0aGlzLnNsaWRlc1tpXTsgKytpKSB7CiAgICB2YXIgaXRlbXMgPSBzbGlkZS5xdWVyeVNlbGVjdG9yQWxsKCcuYnVpbGQgPiAqJyk7CiAgICBmb3IgKHZhciBqID0gMCwgaXRlbTsgaXRlbSA9IGl0ZW1zW2pdOyArK2opIHsKICAgICAgaWYgKGl0ZW0uY2xhc3NMaXN0KSB7CiAgICAgICAgaXRlbS5jbGFzc0xpc3QuYWRkKCd0by1idWlsZCcpOwogICAgICAgIGlmIChpdGVtLnBhcmVudE5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKCdmYWRlJykpIHsKICAgICAgICAgIGl0ZW0uY2xhc3NMaXN0LmFkZCgnZmFkZScpOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KfTsKCi8qKgogKiBAcHJpdmF0ZQogKiBAcGFyYW0ge2Jvb2xlYW59IGRvbnRQdXNoCiAqLwpTbGlkZURlY2sucHJvdG90eXBlLnVwZGF0ZUhhc2hfID0gZnVuY3Rpb24oZG9udFB1c2gpIHsKICBpZiAoIWRvbnRQdXNoKSB7CiAgICB2YXIgc2xpZGVObyA9IHRoaXMuY3VyU2xpZGVfICsgMTsKICAgIC8vIEFkZCBldmVyeXRoaW5nIGV4Y2VwdCB0aGUgaGFzaC4KICAgIHZhciBsb2MgPSBsb2NhdGlvbi5wcm90b2NvbCsnLy8nK2xvY2F0aW9uLmhvc3QrbG9jYXRpb24ucGF0aG5hbWUrKGxvY2F0aW9uLnNlYXJjaD9sb2NhdGlvbi5zZWFyY2g6IiIpOwogICAgdmFyIGhhc2ggPSAnIycgKyBzbGlkZU5vOwogICAgaWYgKHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSAmJiAobG9jYXRpb24ucHJvdG9jb2wgIT09ICJmaWxlOiIpKSB7CiAgICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSh0aGlzLmN1clNsaWRlXywgJ1NsaWRlICcgKyBzbGlkZU5vLCBsb2MgKyBoYXNoKTsKICAgIH0gZWxzZSB7CiAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKGxvYyArIGhhc2gpOwogICAgfQoKICAgIC8vIFJlY29yZCBHQSBoaXQgb24gdGhpcyBzbGlkZS4KICAgIGlmKHR5cGVvZiB3aW5kb3cuZ2EgPT09ICdmdW5jdGlvbicpIHsKICAgICAgZ2EoJ3NldCcsICdwYWdlJywgaGFzaCkKICAgICAgZ2EoJ3NlbmQnLCAncGFnZXZpZXcnKTsKICAgIH0KICB9Cn07CgoKLyoqCiAqIEBwcml2YXRlCiAqIEBwYXJhbSB7c3RyaW5nfSBmYXZJY29uCiAqLwpTbGlkZURlY2sucHJvdG90eXBlLmFkZEZhdkljb25fID0gZnVuY3Rpb24oZmF2SWNvbikgewogIHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTsKICBlbC5yZWwgPSAnaWNvbic7CiAgZWwudHlwZSA9ICdpbWFnZS9wbmcnOwogIGVsLmhyZWYgPSBmYXZJY29uOwogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKS5hcHBlbmRDaGlsZChlbCk7Cn07CgovKioKICogQHByaXZhdGUKICogQHBhcmFtIHtzdHJpbmd9IHRoZW1lCiAqLwpTbGlkZURlY2sucHJvdG90eXBlLmxvYWRUaGVtZV8gPSBmdW5jdGlvbih0aGVtZSkgewogIHZhciBzdHlsZXMgPSBbXTsKICBpZiAodGhlbWUuY29uc3RydWN0b3IubmFtZSA9PT0gJ1N0cmluZycpIHsKICAgIHN0eWxlcy5wdXNoKHRoZW1lKTsKICB9IGVsc2UgewogICAgc3R5bGVzID0gdGhlbWU7CiAgfQoKICBmb3IgKHZhciBpID0gMCwgc3R5bGU7IHRoZW1lVXJsID0gc3R5bGVzW2ldOyBpKyspIHsKICAgIHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTsKICAgIHN0eWxlLnJlbCA9ICdzdHlsZXNoZWV0JzsKICAgIHN0eWxlLnR5cGUgPSAndGV4dC9jc3MnOwogICAgaWYgKHRoZW1lVXJsLmluZGV4T2YoJ2h0dHAnKSA9PSAtMSkgewogICAgICBzdHlsZS5ocmVmID0gdGhpcy5DU1NfRElSXyArIHRoZW1lVXJsICsgJy5jc3MnOwogICAgfSBlbHNlIHsKICAgICAgc3R5bGUuaHJlZiA9IHRoZW1lVXJsOwogICAgfQogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaGVhZCcpLmFwcGVuZENoaWxkKHN0eWxlKTsKICB9Cn07CgovKioKICogQHByaXZhdGUKICovClNsaWRlRGVjay5wcm90b3R5cGUubG9hZEFuYWx5dGljc18gPSBmdW5jdGlvbigpIHsKICAoZnVuY3Rpb24oaSxzLG8sZyxyLGEsbSl7aVsnR29vZ2xlQW5hbHl0aWNzT2JqZWN0J109cjtpW3JdPWlbcl18fGZ1bmN0aW9uKCl7CiAgICAoaVtyXS5xPWlbcl0ucXx8W10pLnB1c2goYXJndW1lbnRzKX0saVtyXS5sPTEqbmV3IERhdGUoKTthPXMuY3JlYXRlRWxlbWVudChvKSwKICAgIG09cy5nZXRFbGVtZW50c0J5VGFnTmFtZShvKVswXTthLmFzeW5jPTE7YS5zcmM9ZzttLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsbSkKICB9KSh3aW5kb3csZG9jdW1lbnQsJ3NjcmlwdCcsJy8vd3d3Lmdvb2dsZS1hbmFseXRpY3MuY29tL2FuYWx5dGljcy5qcycsJ2dhJyk7CgogIGdhKCdjcmVhdGUnLCB0aGlzLmNvbmZpZ18uc2V0dGluZ3MuYW5hbHl0aWNzLCAnYXV0bycpOwogIGdhKCdzZW5kJywgJ3BhZ2V2aWV3Jyk7Cn07CgoKdmFyIGxvYWREZWNrID0gZnVuY3Rpb24oZXZlbnQpIHsKICAvLyBQb2x5ZmlsbCBtaXNzaW5nIEFQSXMgKGlmIHdlIG5lZWQgdG8pLCB0aGVuIGNyZWF0ZSB0aGUgc2xpZGUgZGVjay4KICAvLyBpT1MgPCA1IG5lZWRzIGNsYXNzTGlzdCwgZGF0YXNldCwgYW5kIHdpbmRvdy5tYXRjaE1lZGlhLiBNb2Rlcm5penIgY29udGFpbnMKICAvLyB0aGUgbGFzdCBvbmUuCiAgTW9kZXJuaXpyLmxvYWQoewogICAgY29tcGxldGU6IGZ1bmN0aW9uKCkgewogICAgICB3aW5kb3cuc2xpZGVkZWNrID0gbmV3IFNsaWRlRGVjaygpOwogICAgfQogIH0pOwp9OwoKaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgIT09ICJsb2FkaW5nIiAmJgogICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcignc2xpZGVzJykgPT09IG51bGwpIHsgCiAgLy8gaWYgdGhlIGRvY3VtZW50IGlzIGRvbmUgbG9hZGluZyBidXQgb3VyIGVsZW1lbnQgaGFzbid0IHlldCBhcHBlYXJlZCwgZGVmZXIKICAvLyBsb2FkaW5nIG9mIHRoZSBkZWNrCiAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICBsb2FkRGVjayhudWxsKTsKICB9LCAwKTsKfSBlbHNlIHsKICAvLyBzdGlsbCBsb2FkaW5nIHRoZSBET00sIHNvIHdhaXQgdW50aWwgaXQncyBmaW5pc2hlZAogIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBsb2FkRGVjayk7Cn0KCgoK"></script>
<script src="data:application/x-javascript;base64,KGZ1bmN0aW9uKCkgewogIC8vIElmIHdpbmRvdy5IVE1MV2lkZ2V0cyBpcyBhbHJlYWR5IGRlZmluZWQsIHRoZW4gdXNlIGl0OyBvdGhlcndpc2UgY3JlYXRlIGEKICAvLyBuZXcgb2JqZWN0LiBUaGlzIGFsbG93cyBwcmVjZWRpbmcgY29kZSB0byBzZXQgb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUKICAvLyBpbml0aWFsaXphdGlvbiBwcm9jZXNzICh0aG91Z2ggbm9uZSBjdXJyZW50bHkgZXhpc3QpLgogIHdpbmRvdy5IVE1MV2lkZ2V0cyA9IHdpbmRvdy5IVE1MV2lkZ2V0cyB8fCB7fTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSB2aWV3ZXIgcGFuZS4gSWYgbm90LCB3ZSdyZSBpbiBhIHdlYiBicm93c2VyLgogIHZhciB2aWV3ZXJNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnZpZXdlck1vZGUgPQogICAgICAvXGJ2aWV3ZXJfcGFuZT0xXGIvLnRlc3Qod2luZG93LmxvY2F0aW9uKTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gU2hpbnkgbW9kZS4gSWYgbm90LCBpdCdzIGEgc3RhdGljIGRvY3VtZW50LgogIC8vIE5vdGUgdGhhdCBzdGF0aWMgd2lkZ2V0cyBjYW4gYXBwZWFyIGluIGJvdGggU2hpbnkgYW5kIHN0YXRpYyBtb2RlcywgYnV0CiAgLy8gb2J2aW91c2x5LCBTaGlueSB3aWRnZXRzIGNhbiBvbmx5IGFwcGVhciBpbiBTaGlueSBhcHBzL2RvY3VtZW50cy4KICB2YXIgc2hpbnlNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnNoaW55TW9kZSA9CiAgICAgIHR5cGVvZih3aW5kb3cuU2hpbnkpICE9PSAidW5kZWZpbmVkIiAmJiAhIXdpbmRvdy5TaGlueS5vdXRwdXRCaW5kaW5nczsKCiAgLy8gV2UgY2FuJ3QgY291bnQgb24galF1ZXJ5IGJlaW5nIGF2YWlsYWJsZSwgc28gd2UgaW1wbGVtZW50IG91ciBvd24KICAvLyB2ZXJzaW9uIGlmIG5lY2Vzc2FyeS4KICBmdW5jdGlvbiBxdWVyeVNlbGVjdG9yQWxsKHNjb3BlLCBzZWxlY3RvcikgewogICAgaWYgKHR5cGVvZihqUXVlcnkpICE9PSAidW5kZWZpbmVkIiAmJiBzY29wZSBpbnN0YW5jZW9mIGpRdWVyeSkgewogICAgICByZXR1cm4gc2NvcGUuZmluZChzZWxlY3Rvcik7CiAgICB9CiAgICBpZiAoc2NvcGUucXVlcnlTZWxlY3RvckFsbCkgewogICAgICByZXR1cm4gc2NvcGUucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBhc0FycmF5KHZhbHVlKSB7CiAgICBpZiAodmFsdWUgPT09IG51bGwpCiAgICAgIHJldHVybiBbXTsKICAgIGlmICgkLmlzQXJyYXkodmFsdWUpKQogICAgICByZXR1cm4gdmFsdWU7CiAgICByZXR1cm4gW3ZhbHVlXTsKICB9CgogIC8vIEltcGxlbWVudCBqUXVlcnkncyBleHRlbmQKICBmdW5jdGlvbiBleHRlbmQodGFyZ2V0IC8qLCAuLi4gKi8pIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHsKICAgICAgcmV0dXJuIHRhcmdldDsKICAgIH0KICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07CiAgICAgIGZvciAodmFyIHByb3AgaW4gc291cmNlKSB7CiAgICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkgewogICAgICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmV0dXJuIHRhcmdldDsKICB9CgogIC8vIElFOCBkb2Vzbid0IHN1cHBvcnQgQXJyYXkuZm9yRWFjaC4KICBmdW5jdGlvbiBmb3JFYWNoKHZhbHVlcywgY2FsbGJhY2ssIHRoaXNBcmcpIHsKICAgIGlmICh2YWx1ZXMuZm9yRWFjaCkgewogICAgICB2YWx1ZXMuZm9yRWFjaChjYWxsYmFjaywgdGhpc0FyZyk7CiAgICB9IGVsc2UgewogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykgewogICAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdmFsdWVzW2ldLCBpLCB2YWx1ZXMpOwogICAgICB9CiAgICB9CiAgfQoKICAvLyBSZXBsYWNlcyB0aGUgc3BlY2lmaWVkIG1ldGhvZCB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgZnVuY1NvdXJjZS4KICAvLwogIC8vIE5vdGUgdGhhdCBmdW5jU291cmNlIHNob3VsZCBub3QgQkUgdGhlIG5ldyBtZXRob2QsIGl0IHNob3VsZCBiZSBhIGZ1bmN0aW9uCiAgLy8gdGhhdCBSRVRVUk5TIHRoZSBuZXcgbWV0aG9kLiBmdW5jU291cmNlIHJlY2VpdmVzIGEgc2luZ2xlIGFyZ3VtZW50IHRoYXQgaXMKICAvLyB0aGUgb3ZlcnJpZGRlbiBtZXRob2QsIGl0IGNhbiBiZSBjYWxsZWQgZnJvbSB0aGUgbmV3IG1ldGhvZC4gVGhlIG92ZXJyaWRkZW4KICAvLyBtZXRob2QgY2FuIGJlIGNhbGxlZCBsaWtlIGEgcmVndWxhciBmdW5jdGlvbiwgaXQgaGFzIHRoZSB0YXJnZXQgcGVybWFuZW50bHkKICAvLyBib3VuZCB0byBpdCBzbyAidGhpcyIgd2lsbCB3b3JrIGNvcnJlY3RseS4KICBmdW5jdGlvbiBvdmVycmlkZU1ldGhvZCh0YXJnZXQsIG1ldGhvZE5hbWUsIGZ1bmNTb3VyY2UpIHsKICAgIHZhciBzdXBlckZ1bmMgPSB0YXJnZXRbbWV0aG9kTmFtZV0gfHwgZnVuY3Rpb24oKSB7fTsKICAgIHZhciBzdXBlckZ1bmNCb3VuZCA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gc3VwZXJGdW5jLmFwcGx5KHRhcmdldCwgYXJndW1lbnRzKTsKICAgIH07CiAgICB0YXJnZXRbbWV0aG9kTmFtZV0gPSBmdW5jU291cmNlKHN1cGVyRnVuY0JvdW5kKTsKICB9CgogIC8vIEFkZCBhIG1ldGhvZCB0byBkZWxlZ2F0b3IgdGhhdCwgd2hlbiBpbnZva2VkLCBjYWxscwogIC8vIGRlbGVnYXRlZS5tZXRob2ROYW1lLiBJZiB0aGVyZSBpcyBubyBzdWNoIG1ldGhvZCBvbgogIC8vIHRoZSBkZWxlZ2F0ZWUsIGJ1dCB0aGVyZSB3YXMgb25lIG9uIGRlbGVnYXRvciBiZWZvcmUKICAvLyBkZWxlZ2F0ZU1ldGhvZCB3YXMgY2FsbGVkLCB0aGVuIHRoZSBvcmlnaW5hbCB2ZXJzaW9uCiAgLy8gaXMgaW52b2tlZCBpbnN0ZWFkLgogIC8vIEZvciBleGFtcGxlOgogIC8vCiAgLy8gdmFyIGEgPSB7CiAgLy8gICBtZXRob2QxOiBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2ExJyk7IH0KICAvLyAgIG1ldGhvZDI6IGZ1bmN0aW9uKCkgeyBjb25zb2xlLmxvZygnYTInKTsgfQogIC8vIH07CiAgLy8gdmFyIGIgPSB7CiAgLy8gICBtZXRob2QxOiBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2IxJyk7IH0KICAvLyB9OwogIC8vIGRlbGVnYXRlTWV0aG9kKGEsIGIsICJtZXRob2QxIik7CiAgLy8gZGVsZWdhdGVNZXRob2QoYSwgYiwgIm1ldGhvZDIiKTsKICAvLyBhLm1ldGhvZDEoKTsKICAvLyBhLm1ldGhvZDIoKTsKICAvLwogIC8vIFRoZSBvdXRwdXQgd291bGQgYmUgImIxIiwgImEyIi4KICBmdW5jdGlvbiBkZWxlZ2F0ZU1ldGhvZChkZWxlZ2F0b3IsIGRlbGVnYXRlZSwgbWV0aG9kTmFtZSkgewogICAgdmFyIGluaGVyaXRlZCA9IGRlbGVnYXRvclttZXRob2ROYW1lXTsKICAgIGRlbGVnYXRvclttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgdGFyZ2V0ID0gZGVsZWdhdGVlOwogICAgICB2YXIgbWV0aG9kID0gZGVsZWdhdGVlW21ldGhvZE5hbWVdOwoKICAgICAgLy8gVGhlIG1ldGhvZCBkb2Vzbid0IGV4aXN0IG9uIHRoZSBkZWxlZ2F0ZWUuIEluc3RlYWQsCiAgICAgIC8vIGNhbGwgdGhlIG1ldGhvZCBvbiB0aGUgZGVsZWdhdG9yLCBpZiBpdCBleGlzdHMuCiAgICAgIGlmICghbWV0aG9kKSB7CiAgICAgICAgdGFyZ2V0ID0gZGVsZWdhdG9yOwogICAgICAgIG1ldGhvZCA9IGluaGVyaXRlZDsKICAgICAgfQoKICAgICAgaWYgKG1ldGhvZCkgewogICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGFyZ2V0LCBhcmd1bWVudHMpOwogICAgICB9CiAgICB9OwogIH0KCiAgLy8gSW1wbGVtZW50IGEgdmFndWUgZmFjc2ltaWxpZSBvZiBqUXVlcnkncyBkYXRhIG1ldGhvZAogIGZ1bmN0aW9uIGVsZW1lbnREYXRhKGVsLCBuYW1lLCB2YWx1ZSkgewogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMikgewogICAgICByZXR1cm4gZWxbImh0bWx3aWRnZXRfZGF0YV8iICsgbmFtZV07CiAgICB9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMykgewogICAgICBlbFsiaHRtbHdpZGdldF9kYXRhXyIgKyBuYW1lXSA9IHZhbHVlOwogICAgICByZXR1cm4gZWw7CiAgICB9IGVsc2UgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGVsZW1lbnREYXRhOiAiICsKICAgICAgICBhcmd1bWVudHMubGVuZ3RoKTsKICAgIH0KICB9CgogIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzQ0NjE3MC9lc2NhcGUtc3RyaW5nLWZvci11c2UtaW4tamF2YXNjcmlwdC1yZWdleAogIGZ1bmN0aW9uIGVzY2FwZVJlZ0V4cChzdHIpIHsKICAgIHJldHVybiBzdHIucmVwbGFjZSgvW1wtXFtcXVwvXHtcfVwoXClcKlwrXD9cLlxcXF5cJFx8XS9nLCAiXFwkJiIpOwogIH0KCiAgZnVuY3Rpb24gaGFzQ2xhc3MoZWwsIGNsYXNzTmFtZSkgewogICAgdmFyIHJlID0gbmV3IFJlZ0V4cCgiXFxiIiArIGVzY2FwZVJlZ0V4cChjbGFzc05hbWUpICsgIlxcYiIpOwogICAgcmV0dXJuIHJlLnRlc3QoZWwuY2xhc3NOYW1lKTsKICB9CgogIC8vIGVsZW1lbnRzIC0gYXJyYXkgKG9yIGFycmF5LWxpa2Ugb2JqZWN0KSBvZiBIVE1MIGVsZW1lbnRzCiAgLy8gY2xhc3NOYW1lIC0gY2xhc3MgbmFtZSB0byB0ZXN0IGZvcgogIC8vIGluY2x1ZGUgLSBpZiB0cnVlLCBvbmx5IHJldHVybiBlbGVtZW50cyB3aXRoIGdpdmVuIGNsYXNzTmFtZTsKICAvLyAgIGlmIGZhbHNlLCBvbmx5IHJldHVybiBlbGVtZW50cyAqd2l0aG91dCogZ2l2ZW4gY2xhc3NOYW1lCiAgZnVuY3Rpb24gZmlsdGVyQnlDbGFzcyhlbGVtZW50cywgY2xhc3NOYW1lLCBpbmNsdWRlKSB7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAgICBpZiAoaGFzQ2xhc3MoZWxlbWVudHNbaV0sIGNsYXNzTmFtZSkgPT0gaW5jbHVkZSkKICAgICAgICByZXN1bHRzLnB1c2goZWxlbWVudHNbaV0pOwogICAgfQogICAgcmV0dXJuIHJlc3VsdHM7CiAgfQoKICBmdW5jdGlvbiBvbihvYmosIGV2ZW50TmFtZSwgZnVuYykgewogICAgaWYgKG9iai5hZGRFdmVudExpc3RlbmVyKSB7CiAgICAgIG9iai5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgZnVuYywgZmFsc2UpOwogICAgfSBlbHNlIGlmIChvYmouYXR0YWNoRXZlbnQpIHsKICAgICAgb2JqLmF0dGFjaEV2ZW50KGV2ZW50TmFtZSwgZnVuYyk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBvZmYob2JqLCBldmVudE5hbWUsIGZ1bmMpIHsKICAgIGlmIChvYmoucmVtb3ZlRXZlbnRMaXN0ZW5lcikKICAgICAgb2JqLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBmdW5jLCBmYWxzZSk7CiAgICBlbHNlIGlmIChvYmouZGV0YWNoRXZlbnQpIHsKICAgICAgb2JqLmRldGFjaEV2ZW50KGV2ZW50TmFtZSwgZnVuYyk7CiAgICB9CiAgfQoKICAvLyBUcmFuc2xhdGUgYXJyYXkgb2YgdmFsdWVzIHRvIHRvcC9yaWdodC9ib3R0b20vbGVmdCwgYXMgdXN1YWwgd2l0aAogIC8vIHRoZSAicGFkZGluZyIgQ1NTIHByb3BlcnR5CiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3BhZGRpbmcKICBmdW5jdGlvbiB1bnBhY2tQYWRkaW5nKHZhbHVlKSB7CiAgICBpZiAodHlwZW9mKHZhbHVlKSA9PT0gIm51bWJlciIpCiAgICAgIHZhbHVlID0gW3ZhbHVlXTsKICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDEpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMF0sIGJvdHRvbTogdmFsdWVbMF0sIGxlZnQ6IHZhbHVlWzBdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDIpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMF0sIGxlZnQ6IHZhbHVlWzFdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDMpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMl0sIGxlZnQ6IHZhbHVlWzFdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDQpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMl0sIGxlZnQ6IHZhbHVlWzNdfTsKICAgIH0KICB9CgogIC8vIENvbnZlcnQgYW4gdW5wYWNrZWQgcGFkZGluZyBvYmplY3QgdG8gYSBDU1MgdmFsdWUKICBmdW5jdGlvbiBwYWRkaW5nVG9Dc3MocGFkZGluZ09iaikgewogICAgcmV0dXJuIHBhZGRpbmdPYmoudG9wICsgInB4ICIgKyBwYWRkaW5nT2JqLnJpZ2h0ICsgInB4ICIgKyBwYWRkaW5nT2JqLmJvdHRvbSArICJweCAiICsgcGFkZGluZ09iai5sZWZ0ICsgInB4IjsKICB9CgogIC8vIE1ha2VzIGEgbnVtYmVyIHN1aXRhYmxlIGZvciBDU1MKICBmdW5jdGlvbiBweCh4KSB7CiAgICBpZiAodHlwZW9mKHgpID09PSAibnVtYmVyIikKICAgICAgcmV0dXJuIHggKyAicHgiOwogICAgZWxzZQogICAgICByZXR1cm4geDsKICB9CgogIC8vIFJldHJpZXZlcyBydW50aW1lIHdpZGdldCBzaXppbmcgaW5mb3JtYXRpb24gZm9yIGFuIGVsZW1lbnQuCiAgLy8gVGhlIHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgbnVsbCwgb3IgYW4gb2JqZWN0IHdpdGggZmlsbCwgcGFkZGluZywKICAvLyBkZWZhdWx0V2lkdGgsIGRlZmF1bHRIZWlnaHQgZmllbGRzLgogIGZ1bmN0aW9uIHNpemluZ1BvbGljeShlbCkgewogICAgdmFyIHNpemluZ0VsID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2NyaXB0W2RhdGEtZm9yPSciICsgZWwuaWQgKyAiJ11bdHlwZT0nYXBwbGljYXRpb24vaHRtbHdpZGdldC1zaXppbmcnXSIpOwogICAgaWYgKCFzaXppbmdFbCkKICAgICAgcmV0dXJuIG51bGw7CiAgICB2YXIgc3AgPSBKU09OLnBhcnNlKHNpemluZ0VsLnRleHRDb250ZW50IHx8IHNpemluZ0VsLnRleHQgfHwgInt9Iik7CiAgICBpZiAodmlld2VyTW9kZSkgewogICAgICByZXR1cm4gc3Audmlld2VyOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIHNwLmJyb3dzZXI7CiAgICB9CiAgfQoKICAvLyBAcGFyYW0gdGFza3MgQXJyYXkgb2Ygc3RyaW5ncyAob3IgZmFsc3kgdmFsdWUsIGluIHdoaWNoIGNhc2Ugbm8tb3ApLgogIC8vICAgRWFjaCBlbGVtZW50IG11c3QgYmUgYSB2YWxpZCBKYXZhU2NyaXB0IGV4cHJlc3Npb24gdGhhdCB5aWVsZHMgYQogIC8vICAgZnVuY3Rpb24uIE9yLCBjYW4gYmUgYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoICJjb2RlIiBhbmQgImRhdGEiCiAgLy8gICBwcm9wZXJ0aWVzOyBpbiB0aGlzIGNhc2UsIHRoZSAiY29kZSIgcHJvcGVydHkgc2hvdWxkIGJlIGEgc3RyaW5nCiAgLy8gICBvZiBKUyB0aGF0J3MgYW4gZXhwciB0aGF0IHlpZWxkcyBhIGZ1bmN0aW9uLCBhbmQgImRhdGEiIHNob3VsZCBiZQogIC8vICAgYW4gb2JqZWN0IHRoYXQgd2lsbCBiZSBhZGRlZCBhcyBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IHdoZW4gdGhhdAogIC8vICAgZnVuY3Rpb24gaXMgY2FsbGVkLgogIC8vIEBwYXJhbSB0YXJnZXQgVGhlIG9iamVjdCB0aGF0IHdpbGwgYmUgInRoaXMiIGZvciBlYWNoIGZ1bmN0aW9uCiAgLy8gICBleGVjdXRpb24uCiAgLy8gQHBhcmFtIGFyZ3MgQXJyYXkgb2YgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgZnVuY3Rpb25zLiAoVGhlCiAgLy8gICBzYW1lIGFyZ3VtZW50cyB3aWxsIGJlIHBhc3NlZCB0byBhbGwgZnVuY3Rpb25zLikKICBmdW5jdGlvbiBldmFsQW5kUnVuKHRhc2tzLCB0YXJnZXQsIGFyZ3MpIHsKICAgIGlmICh0YXNrcykgewogICAgICBmb3JFYWNoKHRhc2tzLCBmdW5jdGlvbih0YXNrKSB7CiAgICAgICAgdmFyIHRoZXNlQXJncyA9IGFyZ3M7CiAgICAgICAgaWYgKHR5cGVvZih0YXNrKSA9PT0gIm9iamVjdCIpIHsKICAgICAgICAgIHRoZXNlQXJncyA9IHRoZXNlQXJncy5jb25jYXQoW3Rhc2suZGF0YV0pOwogICAgICAgICAgdGFzayA9IHRhc2suY29kZTsKICAgICAgICB9CiAgICAgICAgdmFyIHRhc2tGdW5jID0gZXZhbCgiKCIgKyB0YXNrICsgIikiKTsKICAgICAgICBpZiAodHlwZW9mKHRhc2tGdW5jKSAhPT0gImZ1bmN0aW9uIikgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUYXNrIG11c3QgYmUgYSBmdW5jdGlvbiEgU291cmNlOlxuIiArIHRhc2spOwogICAgICAgIH0KICAgICAgICB0YXNrRnVuYy5hcHBseSh0YXJnZXQsIHRoZXNlQXJncyk7CiAgICAgIH0pOwogICAgfQogIH0KCiAgZnVuY3Rpb24gaW5pdFNpemluZyhlbCkgewogICAgdmFyIHNpemluZyA9IHNpemluZ1BvbGljeShlbCk7CiAgICBpZiAoIXNpemluZykKICAgICAgcmV0dXJuOwoKICAgIHZhciBjZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaHRtbHdpZGdldF9jb250YWluZXIiKTsKICAgIGlmICghY2VsKQogICAgICByZXR1cm47CgogICAgaWYgKHR5cGVvZihzaXppbmcucGFkZGluZykgIT09ICJ1bmRlZmluZWQiKSB7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luID0gIjAiOwogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmcgPSBwYWRkaW5nVG9Dc3ModW5wYWNrUGFkZGluZyhzaXppbmcucGFkZGluZykpOwogICAgfQoKICAgIGlmIChzaXppbmcuZmlsbCkgewogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gImhpZGRlbiI7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOwogICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5oZWlnaHQgPSAiMTAwJSI7CiAgICAgIGlmIChjZWwpIHsKICAgICAgICBjZWwuc3R5bGUucG9zaXRpb24gPSAiYWJzb2x1dGUiOwogICAgICAgIHZhciBwYWQgPSB1bnBhY2tQYWRkaW5nKHNpemluZy5wYWRkaW5nKTsKICAgICAgICBjZWwuc3R5bGUudG9wID0gcGFkLnRvcCArICJweCI7CiAgICAgICAgY2VsLnN0eWxlLnJpZ2h0ID0gcGFkLnJpZ2h0ICsgInB4IjsKICAgICAgICBjZWwuc3R5bGUuYm90dG9tID0gcGFkLmJvdHRvbSArICJweCI7CiAgICAgICAgY2VsLnN0eWxlLmxlZnQgPSBwYWQubGVmdCArICJweCI7CiAgICAgICAgZWwuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOwogICAgICB9CgogICAgICByZXR1cm4gewogICAgICAgIGdldFdpZHRoOiBmdW5jdGlvbigpIHsgcmV0dXJuIGNlbC5vZmZzZXRXaWR0aDsgfSwKICAgICAgICBnZXRIZWlnaHQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gY2VsLm9mZnNldEhlaWdodDsgfQogICAgICB9OwoKICAgIH0gZWxzZSB7CiAgICAgIGVsLnN0eWxlLndpZHRoID0gcHgoc2l6aW5nLndpZHRoKTsKICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gcHgoc2l6aW5nLmhlaWdodCk7CgogICAgICByZXR1cm4gewogICAgICAgIGdldFdpZHRoOiBmdW5jdGlvbigpIHsgcmV0dXJuIGVsLm9mZnNldFdpZHRoOyB9LAogICAgICAgIGdldEhlaWdodDogZnVuY3Rpb24oKSB7IHJldHVybiBlbC5vZmZzZXRIZWlnaHQ7IH0KICAgICAgfTsKICAgIH0KICB9CgogIC8vIERlZmF1bHQgaW1wbGVtZW50YXRpb25zIGZvciBtZXRob2RzCiAgdmFyIGRlZmF1bHRzID0gewogICAgZmluZDogZnVuY3Rpb24oc2NvcGUpIHsKICAgICAgcmV0dXJuIHF1ZXJ5U2VsZWN0b3JBbGwoc2NvcGUsICIuIiArIHRoaXMubmFtZSk7CiAgICB9LAogICAgcmVuZGVyRXJyb3I6IGZ1bmN0aW9uKGVsLCBlcnIpIHsKICAgICAgdmFyICRlbCA9ICQoZWwpOwoKICAgICAgdGhpcy5jbGVhckVycm9yKGVsKTsKCiAgICAgIC8vIEFkZCBhbGwgdGhlc2UgZXJyb3IgY2xhc3NlcywgYXMgU2hpbnkgZG9lcwogICAgICB2YXIgZXJyQ2xhc3MgPSAic2hpbnktb3V0cHV0LWVycm9yIjsKICAgICAgaWYgKGVyci50eXBlICE9PSBudWxsKSB7CiAgICAgICAgLy8gdXNlIHRoZSBjbGFzc2VzIG9mIHRoZSBlcnJvciBjb25kaXRpb24gYXMgQ1NTIGNsYXNzIG5hbWVzCiAgICAgICAgZXJyQ2xhc3MgPSBlcnJDbGFzcyArICIgIiArICQubWFwKGFzQXJyYXkoZXJyLnR5cGUpLCBmdW5jdGlvbih0eXBlKSB7CiAgICAgICAgICByZXR1cm4gZXJyQ2xhc3MgKyAiLSIgKyB0eXBlOwogICAgICAgIH0pLmpvaW4oIiAiKTsKICAgICAgfQogICAgICBlcnJDbGFzcyA9IGVyckNsYXNzICsgIiBodG1sd2lkZ2V0cy1lcnJvciI7CgogICAgICAvLyBJcyBlbCBpbmxpbmUgb3IgYmxvY2s/IElmIGlubGluZSBvciBpbmxpbmUtYmxvY2ssIGp1c3QgZGlzcGxheTpub25lIGl0CiAgICAgIC8vIGFuZCBhZGQgYW4gaW5saW5lIGVycm9yLgogICAgICB2YXIgZGlzcGxheSA9ICRlbC5jc3MoImRpc3BsYXkiKTsKICAgICAgJGVsLmRhdGEoInJlc3RvcmUtZGlzcGxheS1tb2RlIiwgZGlzcGxheSk7CgogICAgICBpZiAoZGlzcGxheSA9PT0gImlubGluZSIgfHwgZGlzcGxheSA9PT0gImlubGluZS1ibG9jayIpIHsKICAgICAgICAkZWwuaGlkZSgpOwogICAgICAgIGlmIChlcnIubWVzc2FnZSAhPT0gIiIpIHsKICAgICAgICAgIHZhciBlcnJvclNwYW4gPSAkKCI8c3Bhbj4iKS5hZGRDbGFzcyhlcnJDbGFzcyk7CiAgICAgICAgICBlcnJvclNwYW4udGV4dChlcnIubWVzc2FnZSk7CiAgICAgICAgICAkZWwuYWZ0ZXIoZXJyb3JTcGFuKTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAoZGlzcGxheSA9PT0gImJsb2NrIikgewogICAgICAgIC8vIElmIGJsb2NrLCBhZGQgYW4gZXJyb3IganVzdCBhZnRlciB0aGUgZWwsIHNldCB2aXNpYmlsaXR5Om5vbmUgb24gdGhlCiAgICAgICAgLy8gZWwsIGFuZCBwb3NpdGlvbiB0aGUgZXJyb3IgdG8gYmUgb24gdG9wIG9mIHRoZSBlbC4KICAgICAgICAvLyBNYXJrIGl0IHdpdGggYSB1bmlxdWUgSUQgYW5kIENTUyBjbGFzcyBzbyB3ZSBjYW4gcmVtb3ZlIGl0IGxhdGVyLgogICAgICAgICRlbC5jc3MoInZpc2liaWxpdHkiLCAiaGlkZGVuIik7CiAgICAgICAgaWYgKGVyci5tZXNzYWdlICE9PSAiIikgewogICAgICAgICAgdmFyIGVycm9yRGl2ID0gJCgiPGRpdj4iKS5hZGRDbGFzcyhlcnJDbGFzcykuY3NzKCJwb3NpdGlvbiIsICJhYnNvbHV0ZSIpCiAgICAgICAgICAgIC5jc3MoInRvcCIsIGVsLm9mZnNldFRvcCkKICAgICAgICAgICAgLmNzcygibGVmdCIsIGVsLm9mZnNldExlZnQpCiAgICAgICAgICAgIC8vIHNldHRpbmcgd2lkdGggY2FuIHB1c2ggb3V0IHRoZSBwYWdlIHNpemUsIGZvcmNpbmcgb3RoZXJ3aXNlCiAgICAgICAgICAgIC8vIHVubmVjZXNzYXJ5IHNjcm9sbGJhcnMgdG8gYXBwZWFyIGFuZCBtYWtpbmcgaXQgaW1wb3NzaWJsZSBmb3IKICAgICAgICAgICAgLy8gdGhlIGVsZW1lbnQgdG8gc2hyaW5rOyBzbyB1c2UgbWF4LXdpZHRoIGluc3RlYWQKICAgICAgICAgICAgLmNzcygibWF4V2lkdGgiLCBlbC5vZmZzZXRXaWR0aCkKICAgICAgICAgICAgLmNzcygiaGVpZ2h0IiwgZWwub2Zmc2V0SGVpZ2h0KTsKICAgICAgICAgIGVycm9yRGl2LnRleHQoZXJyLm1lc3NhZ2UpOwogICAgICAgICAgJGVsLmFmdGVyKGVycm9yRGl2KTsKCiAgICAgICAgICAvLyBSZWFsbHkgZHVtYiB3YXkgdG8ga2VlcCB0aGUgc2l6ZS9wb3NpdGlvbiBvZiB0aGUgZXJyb3IgaW4gc3luYyB3aXRoCiAgICAgICAgICAvLyB0aGUgcGFyZW50IGVsZW1lbnQgYXMgdGhlIHdpbmRvdyBpcyByZXNpemVkIG9yIHdoYXRldmVyLgogICAgICAgICAgdmFyIGludElkID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICghZXJyb3JEaXZbMF0ucGFyZW50RWxlbWVudCkgewogICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50SWQpOwogICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlcnJvckRpdgogICAgICAgICAgICAgIC5jc3MoInRvcCIsIGVsLm9mZnNldFRvcCkKICAgICAgICAgICAgICAuY3NzKCJsZWZ0IiwgZWwub2Zmc2V0TGVmdCkKICAgICAgICAgICAgICAuY3NzKCJtYXhXaWR0aCIsIGVsLm9mZnNldFdpZHRoKQogICAgICAgICAgICAgIC5jc3MoImhlaWdodCIsIGVsLm9mZnNldEhlaWdodCk7CiAgICAgICAgICB9LCA1MDApOwogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIGNsZWFyRXJyb3I6IGZ1bmN0aW9uKGVsKSB7CiAgICAgIHZhciAkZWwgPSAkKGVsKTsKICAgICAgdmFyIGRpc3BsYXkgPSAkZWwuZGF0YSgicmVzdG9yZS1kaXNwbGF5LW1vZGUiKTsKICAgICAgJGVsLmRhdGEoInJlc3RvcmUtZGlzcGxheS1tb2RlIiwgbnVsbCk7CgogICAgICBpZiAoZGlzcGxheSA9PT0gImlubGluZSIgfHwgZGlzcGxheSA9PT0gImlubGluZS1ibG9jayIpIHsKICAgICAgICBpZiAoZGlzcGxheSkKICAgICAgICAgICRlbC5jc3MoImRpc3BsYXkiLCBkaXNwbGF5KTsKICAgICAgICAkKGVsLm5leHRTaWJsaW5nKS5maWx0ZXIoIi5odG1sd2lkZ2V0cy1lcnJvciIpLnJlbW92ZSgpOwogICAgICB9IGVsc2UgaWYgKGRpc3BsYXkgPT09ICJibG9jayIpewogICAgICAgICRlbC5jc3MoInZpc2liaWxpdHkiLCAiaW5oZXJpdCIpOwogICAgICAgICQoZWwubmV4dFNpYmxpbmcpLmZpbHRlcigiLmh0bWx3aWRnZXRzLWVycm9yIikucmVtb3ZlKCk7CiAgICAgIH0KICAgIH0sCiAgICBzaXppbmc6IHt9CiAgfTsKCiAgLy8gQ2FsbGVkIGJ5IHdpZGdldCBiaW5kaW5ncyB0byByZWdpc3RlciBhIG5ldyB0eXBlIG9mIHdpZGdldC4gVGhlIGRlZmluaXRpb24KICAvLyBvYmplY3QgY2FuIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgogIC8vIC0gbmFtZSAocmVxdWlyZWQpIC0gQSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgYmluZGluZyBuYW1lLCB3aGljaCB3aWxsIGJlCiAgLy8gICB1c2VkIGJ5IGRlZmF1bHQgYXMgdGhlIENTUyBjbGFzc25hbWUgdG8gbG9vayBmb3IuCiAgLy8gLSBpbml0aWFsaXplIChvcHRpb25hbCkgLSBBIGZ1bmN0aW9uKGVsKSB0aGF0IHdpbGwgYmUgY2FsbGVkIG9uY2UgcGVyCiAgLy8gICB3aWRnZXQgZWxlbWVudDsgaWYgYSB2YWx1ZSBpcyByZXR1cm5lZCwgaXQgd2lsbCBiZSBwYXNzZWQgYXMgdGhlIHRoaXJkCiAgLy8gICB2YWx1ZSB0byByZW5kZXJWYWx1ZS4KICAvLyAtIHJlbmRlclZhbHVlIChyZXF1aXJlZCkgLSBBIGZ1bmN0aW9uKGVsLCBkYXRhLCBpbml0VmFsdWUpIHRoYXQgd2lsbCBiZQogIC8vICAgY2FsbGVkIHdpdGggZGF0YS4gU3RhdGljIGNvbnRleHRzIHdpbGwgY2F1c2UgdGhpcyB0byBiZSBjYWxsZWQgb25jZSBwZXIKICAvLyAgIGVsZW1lbnQ7IFNoaW55IGFwcHMgd2lsbCBjYXVzZSB0aGlzIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBwZXIKICAvLyAgIGVsZW1lbnQsIGFzIHRoZSBkYXRhIGNoYW5nZXMuCiAgd2luZG93LkhUTUxXaWRnZXRzLndpZGdldCA9IGZ1bmN0aW9uKGRlZmluaXRpb24pIHsKICAgIGlmICghZGVmaW5pdGlvbi5uYW1lKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiV2lkZ2V0IG11c3QgaGF2ZSBhIG5hbWUiKTsKICAgIH0KICAgIGlmICghZGVmaW5pdGlvbi50eXBlKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiV2lkZ2V0IG11c3QgaGF2ZSBhIHR5cGUiKTsKICAgIH0KICAgIC8vIEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgb3V0cHV0IHdpZGdldHMKICAgIGlmIChkZWZpbml0aW9uLnR5cGUgIT09ICJvdXRwdXQiKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHdpZGdldCB0eXBlICciICsgZGVmaW5pdGlvbi50eXBlICsgIiciKTsKICAgIH0KICAgIC8vIFRPRE86IFZlcmlmeSB0aGF0IC5uYW1lIGlzIGEgdmFsaWQgQ1NTIGNsYXNzbmFtZQoKICAgIC8vIFN1cHBvcnQgbmV3LXN0eWxlIGluc3RhbmNlLWJvdW5kIGRlZmluaXRpb25zLiBPbGQtc3R5bGUgY2xhc3MtYm91bmQKICAgIC8vIGRlZmluaXRpb25zIGhhdmUgb25lIHdpZGdldCAib2JqZWN0IiBwZXIgd2lkZ2V0IHBlciB0eXBlL2NsYXNzIG9mCiAgICAvLyB3aWRnZXQ7IHRoZSByZW5kZXJWYWx1ZSBhbmQgcmVzaXplIG1ldGhvZHMgb24gc3VjaCB3aWRnZXQgb2JqZWN0cwogICAgLy8gdGFrZSBlbCBhbmQgaW5zdGFuY2UgYXJndW1lbnRzLCBiZWNhdXNlIHRoZSB3aWRnZXQgb2JqZWN0IGNhbid0CiAgICAvLyBzdG9yZSB0aGVtLiBOZXctc3R5bGUgaW5zdGFuY2UtYm91bmQgZGVmaW5pdGlvbnMgaGF2ZSBvbmUgd2lkZ2V0CiAgICAvLyBvYmplY3QgcGVyIHdpZGdldCBpbnN0YW5jZTsgdGhlIGRlZmluaXRpb24gdGhhdCdzIHBhc3NlZCBpbiBkb2Vzbid0CiAgICAvLyBwcm92aWRlIHJlbmRlclZhbHVlIG9yIHJlc2l6ZSBtZXRob2RzIGF0IGFsbCwganVzdCB0aGUgc2luZ2xlIG1ldGhvZAogICAgLy8gICBmYWN0b3J5KGVsLCB3aWR0aCwgaGVpZ2h0KQogICAgLy8gd2hpY2ggcmV0dXJucyBhbiBvYmplY3QgdGhhdCBoYXMgcmVuZGVyVmFsdWUoeCkgYW5kIHJlc2l6ZSh3LCBoKS4KICAgIC8vIFRoaXMgZW5hYmxlcyBhIGZhciBtb3JlIG5hdHVyYWwgcHJvZ3JhbW1pbmcgc3R5bGUgZm9yIHRoZSB3aWRnZXQKICAgIC8vIGF1dGhvciwgd2hvIGNhbiBzdG9yZSBwZXItaW5zdGFuY2Ugc3RhdGUgdXNpbmcgZWl0aGVyIE9PLXN0eWxlCiAgICAvLyBpbnN0YW5jZSBmaWVsZHMgb3IgZnVuY3Rpb25hbC1zdHlsZSBjbG9zdXJlIHZhcmlhYmxlcyAoSSBndWVzcyB0aGlzCiAgICAvLyBpcyBpbiBjb250cmFzdCB0byB3aGF0IGNhbiBvbmx5IGJlIGNhbGxlZCBDLXN0eWxlIHBzZXVkby1PTyB3aGljaCBpcwogICAgLy8gd2hhdCB3ZSByZXF1aXJlZCBiZWZvcmUpLgogICAgaWYgKGRlZmluaXRpb24uZmFjdG9yeSkgewogICAgICBkZWZpbml0aW9uID0gY3JlYXRlTGVnYWN5RGVmaW5pdGlvbkFkYXB0ZXIoZGVmaW5pdGlvbik7CiAgICB9CgogICAgaWYgKCFkZWZpbml0aW9uLnJlbmRlclZhbHVlKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiV2lkZ2V0IG11c3QgaGF2ZSBhIHJlbmRlclZhbHVlIGZ1bmN0aW9uIik7CiAgICB9CgogICAgLy8gRm9yIHN0YXRpYyByZW5kZXJpbmcgKG5vbi1TaGlueSksIHVzZSBhIHNpbXBsZSB3aWRnZXQgcmVnaXN0cmF0aW9uCiAgICAvLyBzY2hlbWUuIFdlIGFsc28gdXNlIHRoaXMgc2NoZW1lIGZvciBTaGlueSBhcHBzL2RvY3VtZW50cyB0aGF0IGFsc28KICAgIC8vIGNvbnRhaW4gc3RhdGljIHdpZGdldHMuCiAgICB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cyA9IHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXRzIHx8IFtdOwogICAgLy8gTWVyZ2UgZGVmYXVsdHMgaW50byB0aGUgZGVmaW5pdGlvbjsgZG9uJ3QgbXV0YXRlIHRoZSBvcmlnaW5hbCBkZWZpbml0aW9uLgogICAgdmFyIHN0YXRpY0JpbmRpbmcgPSBleHRlbmQoe30sIGRlZmF1bHRzLCBkZWZpbml0aW9uKTsKICAgIG92ZXJyaWRlTWV0aG9kKHN0YXRpY0JpbmRpbmcsICJmaW5kIiwgZnVuY3Rpb24oc3VwZXJmdW5jKSB7CiAgICAgIHJldHVybiBmdW5jdGlvbihzY29wZSkgewogICAgICAgIHZhciByZXN1bHRzID0gc3VwZXJmdW5jKHNjb3BlKTsKICAgICAgICAvLyBGaWx0ZXIgb3V0IFNoaW55IG91dHB1dHMsIHdlIG9ubHkgd2FudCB0aGUgc3RhdGljIGtpbmQKICAgICAgICByZXR1cm4gZmlsdGVyQnlDbGFzcyhyZXN1bHRzLCAiaHRtbC13aWRnZXQtb3V0cHV0IiwgZmFsc2UpOwogICAgICB9OwogICAgfSk7CiAgICB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cy5wdXNoKHN0YXRpY0JpbmRpbmcpOwoKICAgIGlmIChzaGlueU1vZGUpIHsKICAgICAgLy8gU2hpbnkgaXMgcnVubmluZy4gUmVnaXN0ZXIgdGhlIGRlZmluaXRpb24gd2l0aCBhbiBvdXRwdXQgYmluZGluZy4KICAgICAgLy8gVGhlIGRlZmluaXRpb24gaXRzZWxmIHdpbGwgbm90IGJlIHRoZSBvdXRwdXQgYmluZGluZywgaW5zdGVhZAogICAgICAvLyB3ZSB3aWxsIG1ha2UgYW4gb3V0cHV0IGJpbmRpbmcgb2JqZWN0IHRoYXQgZGVsZWdhdGVzIHRvIHRoZQogICAgICAvLyBkZWZpbml0aW9uLiBUaGlzIGlzIGJlY2F1c2Ugd2UgZm9vbGlzaGx5IHVzZWQgdGhlIHNhbWUgbWV0aG9kCiAgICAgIC8vIG5hbWUgKHJlbmRlclZhbHVlKSBmb3IgaHRtbHdpZGdldHMgZGVmaW5pdGlvbiBhbmQgU2hpbnkgYmluZGluZ3MKICAgICAgLy8gYnV0IHRoZXkgYWN0dWFsbHkgaGF2ZSBxdWl0ZSBkaWZmZXJlbnQgc2VtYW50aWNzICh0aGUgU2hpbnkKICAgICAgLy8gYmluZGluZ3MgcmVjZWl2ZSBkYXRhIHRoYXQgaW5jbHVkZXMgbG90cyBvZiBtZXRhZGF0YSB0aGF0IGl0CiAgICAgIC8vIHN0cmlwcyBvZmYgYmVmb3JlIGNhbGxpbmcgaHRtbHdpZGdldHMgcmVuZGVyVmFsdWUpLiBXZSBjYW4ndAogICAgICAvLyBqdXN0IGlnbm9yZSB0aGUgZGlmZmVyZW5jZSBiZWNhdXNlIGluIHNvbWUgd2lkZ2V0cyBpdCdzIGhlbHBmdWwKICAgICAgLy8gdG8gY2FsbCB0aGlzLnJlbmRlclZhbHVlKCkgZnJvbSBpbnNpZGUgb2YgcmVzaXplKCksIGFuZCBpZgogICAgICAvLyB3ZSdyZSBub3QgZGVsZWdhdGluZywgdGhlbiB0aGF0IGNhbGwgd2lsbCBnbyB0byB0aGUgU2hpbnkKICAgICAgLy8gdmVyc2lvbiBpbnN0ZWFkIG9mIHRoZSBodG1sd2lkZ2V0cyB2ZXJzaW9uLgoKICAgICAgLy8gTWVyZ2UgZGVmYXVsdHMgd2l0aCBkZWZpbml0aW9uLCB3aXRob3V0IG11dGF0aW5nIGVpdGhlci4KICAgICAgdmFyIGJpbmRpbmdEZWYgPSBleHRlbmQoe30sIGRlZmF1bHRzLCBkZWZpbml0aW9uKTsKCiAgICAgIC8vIFRoaXMgb2JqZWN0IHdpbGwgYmUgb3VyIGFjdHVhbCBTaGlueSBiaW5kaW5nLgogICAgICB2YXIgc2hpbnlCaW5kaW5nID0gbmV3IFNoaW55Lk91dHB1dEJpbmRpbmcoKTsKCiAgICAgIC8vIFdpdGggYSBmZXcgZXhjZXB0aW9ucywgd2UnbGwgd2FudCB0byBzaW1wbHkgdXNlIHRoZSBiaW5kaW5nRGVmJ3MKICAgICAgLy8gdmVyc2lvbiBvZiBtZXRob2RzIGlmIHRoZXkgYXJlIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGZhbGwgYmFjayB0bwogICAgICAvLyBTaGlueSdzIGRlZmF1bHRzLiBOT1RFOiBJZiBTaGlueSdzIG91dHB1dCBiaW5kaW5ncyBnYWluIGFkZGl0aW9uYWwKICAgICAgLy8gbWV0aG9kcyBpbiB0aGUgZnV0dXJlLCBhbmQgd2Ugd2FudCB0aGVtIHRvIGJlIG92ZXJyaWRlYWJsZSBieQogICAgICAvLyBIVE1MV2lkZ2V0IGJpbmRpbmcgZGVmaW5pdGlvbnMsIHRoZW4gd2UnbGwgbmVlZCB0byBhZGQgdGhlbSB0byB0aGlzCiAgICAgIC8vIGxpc3QuCiAgICAgIGRlbGVnYXRlTWV0aG9kKHNoaW55QmluZGluZywgYmluZGluZ0RlZiwgImdldElkIik7CiAgICAgIGRlbGVnYXRlTWV0aG9kKHNoaW55QmluZGluZywgYmluZGluZ0RlZiwgIm9uVmFsdWVDaGFuZ2UiKTsKICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAib25WYWx1ZUVycm9yIik7CiAgICAgIGRlbGVnYXRlTWV0aG9kKHNoaW55QmluZGluZywgYmluZGluZ0RlZiwgInJlbmRlckVycm9yIik7CiAgICAgIGRlbGVnYXRlTWV0aG9kKHNoaW55QmluZGluZywgYmluZGluZ0RlZiwgImNsZWFyRXJyb3IiKTsKICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAic2hvd1Byb2dyZXNzIik7CgogICAgICAvLyBUaGUgZmluZCwgcmVuZGVyVmFsdWUsIGFuZCByZXNpemUgYXJlIGhhbmRsZWQgZGlmZmVyZW50bHksIGJlY2F1c2Ugd2UKICAgICAgLy8gd2FudCB0byBhY3R1YWxseSBkZWNvcmF0ZSB0aGUgYmVoYXZpb3Igb2YgdGhlIGJpbmRpbmdEZWYgbWV0aG9kcy4KCiAgICAgIHNoaW55QmluZGluZy5maW5kID0gZnVuY3Rpb24oc2NvcGUpIHsKICAgICAgICB2YXIgcmVzdWx0cyA9IGJpbmRpbmdEZWYuZmluZChzY29wZSk7CgogICAgICAgIC8vIE9ubHkgcmV0dXJuIGVsZW1lbnRzIHRoYXQgYXJlIFNoaW55IG91dHB1dHMsIG5vdCBzdGF0aWMgb25lcwogICAgICAgIHZhciBkeW5hbWljUmVzdWx0cyA9IHJlc3VsdHMuZmlsdGVyKCIuaHRtbC13aWRnZXQtb3V0cHV0Iik7CgogICAgICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB3aGF0ZXZlciBjYXVzZWQgU2hpbnkgdG8gdGhpbmsgdGhlcmUgbWlnaHQgYmUKICAgICAgICAvLyBuZXcgZHluYW1pYyBvdXRwdXRzLCBhbHNvIGNhdXNlZCB0aGVyZSB0byBiZSBuZXcgc3RhdGljIG91dHB1dHMuCiAgICAgICAgLy8gU2luY2UgdGhlcmUgbWlnaHQgYmUgbG90cyBvZiBkaWZmZXJlbnQgaHRtbHdpZGdldHMgYmluZGluZ3MsIHdlCiAgICAgICAgLy8gc2NoZWR1bGUgZXhlY3V0aW9uIGZvciBsYXRlci0tbm8gbmVlZCB0byBzdGF0aWNSZW5kZXIgbXVsdGlwbGUKICAgICAgICAvLyB0aW1lcy4KICAgICAgICBpZiAocmVzdWx0cy5sZW5ndGggIT09IGR5bmFtaWNSZXN1bHRzLmxlbmd0aCkKICAgICAgICAgIHNjaGVkdWxlU3RhdGljUmVuZGVyKCk7CgogICAgICAgIHJldHVybiBkeW5hbWljUmVzdWx0czsKICAgICAgfTsKCiAgICAgIC8vIFdyYXAgcmVuZGVyVmFsdWUgdG8gaGFuZGxlIGluaXRpYWxpemF0aW9uLCB3aGljaCB1bmZvcnR1bmF0ZWx5IGlzbid0CiAgICAgIC8vIHN1cHBvcnRlZCBuYXRpdmVseSBieSBTaGlueSBhdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcuCgogICAgICBzaGlueUJpbmRpbmcucmVuZGVyVmFsdWUgPSBmdW5jdGlvbihlbCwgZGF0YSkgewogICAgICAgIC8vIFJlc29sdmUgc3RyaW5ncyBtYXJrZWQgYXMgamF2YXNjcmlwdCBsaXRlcmFscyB0byBvYmplY3RzCiAgICAgICAgaWYgKCEoZGF0YS5ldmFscyBpbnN0YW5jZW9mIEFycmF5KSkgZGF0YS5ldmFscyA9IFtkYXRhLmV2YWxzXTsKICAgICAgICBmb3IgKHZhciBpID0gMDsgZGF0YS5ldmFscyAmJiBpIDwgZGF0YS5ldmFscy5sZW5ndGg7IGkrKykgewogICAgICAgICAgd2luZG93LkhUTUxXaWRnZXRzLmV2YWx1YXRlU3RyaW5nTWVtYmVyKGRhdGEueCwgZGF0YS5ldmFsc1tpXSk7CiAgICAgICAgfQogICAgICAgIGlmICghYmluZGluZ0RlZi5yZW5kZXJPbk51bGxWYWx1ZSkgewogICAgICAgICAgaWYgKGRhdGEueCA9PT0gbnVsbCkgewogICAgICAgICAgICBlbC5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGVsLnN0eWxlLnZpc2liaWxpdHkgPSAiaW5oZXJpdCI7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghZWxlbWVudERhdGEoZWwsICJpbml0aWFsaXplZCIpKSB7CiAgICAgICAgICBpbml0U2l6aW5nKGVsKTsKCiAgICAgICAgICBlbGVtZW50RGF0YShlbCwgImluaXRpYWxpemVkIiwgdHJ1ZSk7CiAgICAgICAgICBpZiAoYmluZGluZ0RlZi5pbml0aWFsaXplKSB7CiAgICAgICAgICAgIHZhciByZXN1bHQgPSBiaW5kaW5nRGVmLmluaXRpYWxpemUoZWwsIGVsLm9mZnNldFdpZHRoLAogICAgICAgICAgICAgIGVsLm9mZnNldEhlaWdodCk7CiAgICAgICAgICAgIGVsZW1lbnREYXRhKGVsLCAiaW5pdF9yZXN1bHQiLCByZXN1bHQpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBTaGlueS5yZW5kZXJEZXBlbmRlbmNpZXMoZGF0YS5kZXBzKTsKICAgICAgICBiaW5kaW5nRGVmLnJlbmRlclZhbHVlKGVsLCBkYXRhLngsIGVsZW1lbnREYXRhKGVsLCAiaW5pdF9yZXN1bHQiKSk7CiAgICAgICAgZXZhbEFuZFJ1bihkYXRhLmpzSG9va3MucmVuZGVyLCBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IiksIFtlbCwgZGF0YS54XSk7CiAgICAgIH07CgogICAgICAvLyBPbmx5IG92ZXJyaWRlIHJlc2l6ZSBpZiBiaW5kaW5nRGVmIGltcGxlbWVudHMgaXQKICAgICAgaWYgKGJpbmRpbmdEZWYucmVzaXplKSB7CiAgICAgICAgc2hpbnlCaW5kaW5nLnJlc2l6ZSA9IGZ1bmN0aW9uKGVsLCB3aWR0aCwgaGVpZ2h0KSB7CiAgICAgICAgICAvLyBTaGlueSBjYW4gY2FsbCByZXNpemUgYmVmb3JlIGluaXRpYWxpemUvcmVuZGVyVmFsdWUgaGF2ZSBiZWVuCiAgICAgICAgICAvLyBjYWxsZWQsIHdoaWNoIGRvZXNuJ3QgbWFrZSBzZW5zZSBmb3Igd2lkZ2V0cy4KICAgICAgICAgIGlmIChlbGVtZW50RGF0YShlbCwgImluaXRpYWxpemVkIikpIHsKICAgICAgICAgICAgYmluZGluZ0RlZi5yZXNpemUoZWwsIHdpZHRoLCBoZWlnaHQsIGVsZW1lbnREYXRhKGVsLCAiaW5pdF9yZXN1bHQiKSk7CiAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgfQoKICAgICAgU2hpbnkub3V0cHV0QmluZGluZ3MucmVnaXN0ZXIoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLm5hbWUpOwogICAgfQogIH07CgogIHZhciBzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQgPSBudWxsOwogIGZ1bmN0aW9uIHNjaGVkdWxlU3RhdGljUmVuZGVyKCkgewogICAgaWYgKCFzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQpIHsKICAgICAgc2NoZWR1bGVTdGF0aWNSZW5kZXJUaW1lcklkID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICBzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQgPSBudWxsOwogICAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIoKTsKICAgICAgfSwgMSk7CiAgICB9CiAgfQoKICAvLyBSZW5kZXIgc3RhdGljIHdpZGdldHMgYWZ0ZXIgdGhlIGRvY3VtZW50IGZpbmlzaGVzIGxvYWRpbmcKICAvLyBTdGF0aWNhbGx5IHJlbmRlciBhbGwgZWxlbWVudHMgdGhhdCBhcmUgb2YgdGhpcyB3aWRnZXQncyBjbGFzcwogIHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIgPSBmdW5jdGlvbigpIHsKICAgIHZhciBiaW5kaW5ncyA9IHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXRzIHx8IFtdOwogICAgZm9yRWFjaChiaW5kaW5ncywgZnVuY3Rpb24oYmluZGluZykgewogICAgICB2YXIgbWF0Y2hlcyA9IGJpbmRpbmcuZmluZChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOwogICAgICBmb3JFYWNoKG1hdGNoZXMsIGZ1bmN0aW9uKGVsKSB7CiAgICAgICAgdmFyIHNpemVPYmogPSBpbml0U2l6aW5nKGVsLCBiaW5kaW5nKTsKCiAgICAgICAgaWYgKGhhc0NsYXNzKGVsLCAiaHRtbC13aWRnZXQtc3RhdGljLWJvdW5kIikpCiAgICAgICAgICByZXR1cm47CiAgICAgICAgZWwuY2xhc3NOYW1lID0gZWwuY2xhc3NOYW1lICsgIiBodG1sLXdpZGdldC1zdGF0aWMtYm91bmQiOwoKICAgICAgICB2YXIgaW5pdFJlc3VsdDsKICAgICAgICBpZiAoYmluZGluZy5pbml0aWFsaXplKSB7CiAgICAgICAgICBpbml0UmVzdWx0ID0gYmluZGluZy5pbml0aWFsaXplKGVsLAogICAgICAgICAgICBzaXplT2JqID8gc2l6ZU9iai5nZXRXaWR0aCgpIDogZWwub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgIHNpemVPYmogPyBzaXplT2JqLmdldEhlaWdodCgpIDogZWwub2Zmc2V0SGVpZ2h0CiAgICAgICAgICApOwogICAgICAgICAgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIsIGluaXRSZXN1bHQpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGJpbmRpbmcucmVzaXplKSB7CiAgICAgICAgICB2YXIgbGFzdFNpemUgPSB7fTsKICAgICAgICAgIHZhciByZXNpemVIYW5kbGVyID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgc2l6ZSA9IHsKICAgICAgICAgICAgICB3OiBzaXplT2JqID8gc2l6ZU9iai5nZXRXaWR0aCgpIDogZWwub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgICAgaDogc2l6ZU9iaiA/IHNpemVPYmouZ2V0SGVpZ2h0KCkgOiBlbC5vZmZzZXRIZWlnaHQKICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKHNpemUudyA9PT0gMCAmJiBzaXplLmggPT09IDApCiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICBpZiAoc2l6ZS53ID09PSBsYXN0U2l6ZS53ICYmIHNpemUuaCA9PT0gbGFzdFNpemUuaCkKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIGxhc3RTaXplID0gc2l6ZTsKICAgICAgICAgICAgYmluZGluZy5yZXNpemUoZWwsIHNpemUudywgc2l6ZS5oLCBpbml0UmVzdWx0KTsKICAgICAgICAgIH07CgogICAgICAgICAgb24od2luZG93LCAicmVzaXplIiwgcmVzaXplSGFuZGxlcik7CgogICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgZm9yIGNhc2VzIHdoZXJlIHdlJ3JlIHJ1bm5pbmcgaW4gYSBTaGlueQogICAgICAgICAgLy8gYXBwLCBidXQgdGhlIHdpZGdldCBpdHNlbGYgaXMgbm90IGEgU2hpbnkgb3V0cHV0LCBidXQKICAgICAgICAgIC8vIHJhdGhlciBhIHNpbXBsZSBzdGF0aWMgd2lkZ2V0LiBPbmUgZXhhbXBsZSBvZiB0aGlzIGlzCiAgICAgICAgICAvLyBhbiBybWFya2Rvd24gZG9jdW1lbnQgdGhhdCBoYXMgcnVudGltZTpzaGlueSBhbmQgd2lkZ2V0CiAgICAgICAgICAvLyB0aGF0IGlzbid0IGluIGEgcmVuZGVyIGZ1bmN0aW9uLiBTaGlueSBvbmx5IGtub3dzIHRvCiAgICAgICAgICAvLyBjYWxsIHJlc2l6ZSBoYW5kbGVycyBmb3IgU2hpbnkgb3V0cHV0cywgbm90IGZvciBzdGF0aWMKICAgICAgICAgIC8vIHdpZGdldHMsIHNvIHdlIGRvIGl0IG91cnNlbHZlcy4KICAgICAgICAgIGlmICh3aW5kb3cualF1ZXJ5KSB7CiAgICAgICAgICAgIHdpbmRvdy5qUXVlcnkoZG9jdW1lbnQpLm9uKAogICAgICAgICAgICAgICJzaG93bi5odG1sd2lkZ2V0cyBzaG93bi5icy50YWIuaHRtbHdpZGdldHMgc2hvd24uYnMuY29sbGFwc2UuaHRtbHdpZGdldHMiLAogICAgICAgICAgICAgIHJlc2l6ZUhhbmRsZXIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgd2luZG93LmpRdWVyeShkb2N1bWVudCkub24oCiAgICAgICAgICAgICAgImhpZGRlbi5odG1sd2lkZ2V0cyBoaWRkZW4uYnMudGFiLmh0bWx3aWRnZXRzIGhpZGRlbi5icy5jb2xsYXBzZS5odG1sd2lkZ2V0cyIsCiAgICAgICAgICAgICAgcmVzaXplSGFuZGxlcgogICAgICAgICAgICApOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIGZvciB0aGUgc3BlY2lmaWMgY2FzZSBvZiBpb3NsaWRlcywgd2hpY2gKICAgICAgICAgIC8vIGZsaXBzIHNsaWRlcyBiZXR3ZWVuIGRpc3BsYXk6bm9uZSBhbmQgZGlzcGxheTpibG9jay4KICAgICAgICAgIC8vIElkZWFsbHkgd2Ugd291bGQgbm90IGhhdmUgdG8gaGF2ZSBpb3NsaWRlLXNwZWNpZmljIGNvZGUKICAgICAgICAgIC8vIGhlcmUsIGJ1dCByYXRoZXIgaGF2ZSBpb3NsaWRlcyByYWlzZSBhIGdlbmVyaWMgZXZlbnQsCiAgICAgICAgICAvLyBidXQgdGhlIHJtYXJrZG93biBwYWNrYWdlIGp1c3Qgd2VudCB0byBDUkFOIHNvIHRoZQogICAgICAgICAgLy8gd2luZG93IHRvIGdldHRpbmcgdGhhdCBmaXhlZCBtYXkgYmUgbG9uZy4KICAgICAgICAgIGlmICh3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcikgewogICAgICAgICAgICAvLyBJdCdzIE9LIHRvIGxpbWl0IHRoaXMgdG8gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIKICAgICAgICAgICAgLy8gYnJvd3NlcnMgYmVjYXVzZSBpb3NsaWRlcyBpdHNlbGYgb25seSBzdXBwb3J0cwogICAgICAgICAgICAvLyBzdWNoIGJyb3dzZXJzLgogICAgICAgICAgICBvbihkb2N1bWVudCwgInNsaWRlZW50ZXIiLCByZXNpemVIYW5kbGVyKTsKICAgICAgICAgICAgb24oZG9jdW1lbnQsICJzbGlkZWxlYXZlIiwgcmVzaXplSGFuZGxlcik7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB2YXIgc2NyaXB0RGF0YSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNjcmlwdFtkYXRhLWZvcj0nIiArIGVsLmlkICsgIiddW3R5cGU9J2FwcGxpY2F0aW9uL2pzb24nXSIpOwogICAgICAgIGlmIChzY3JpcHREYXRhKSB7CiAgICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc2NyaXB0RGF0YS50ZXh0Q29udGVudCB8fCBzY3JpcHREYXRhLnRleHQpOwogICAgICAgICAgLy8gUmVzb2x2ZSBzdHJpbmdzIG1hcmtlZCBhcyBqYXZhc2NyaXB0IGxpdGVyYWxzIHRvIG9iamVjdHMKICAgICAgICAgIGlmICghKGRhdGEuZXZhbHMgaW5zdGFuY2VvZiBBcnJheSkpIGRhdGEuZXZhbHMgPSBbZGF0YS5ldmFsc107CiAgICAgICAgICBmb3IgKHZhciBrID0gMDsgZGF0YS5ldmFscyAmJiBrIDwgZGF0YS5ldmFscy5sZW5ndGg7IGsrKykgewogICAgICAgICAgICB3aW5kb3cuSFRNTFdpZGdldHMuZXZhbHVhdGVTdHJpbmdNZW1iZXIoZGF0YS54LCBkYXRhLmV2YWxzW2tdKTsKICAgICAgICAgIH0KICAgICAgICAgIGJpbmRpbmcucmVuZGVyVmFsdWUoZWwsIGRhdGEueCwgaW5pdFJlc3VsdCk7CiAgICAgICAgICBldmFsQW5kUnVuKGRhdGEuanNIb29rcy5yZW5kZXIsIGluaXRSZXN1bHQsIFtlbCwgZGF0YS54XSk7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0pOwoKICAgIGludm9rZVBvc3RSZW5kZXJIYW5kbGVycygpOwogIH0KCiAgLy8gV2FpdCB1bnRpbCBhZnRlciB0aGUgZG9jdW1lbnQgaGFzIGxvYWRlZCB0byByZW5kZXIgdGhlIHdpZGdldHMuCiAgaWYgKGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIpIHsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBmdW5jdGlvbigpIHsKICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGFyZ3VtZW50cy5jYWxsZWUsIGZhbHNlKTsKICAgICAgd2luZG93LkhUTUxXaWRnZXRzLnN0YXRpY1JlbmRlcigpOwogICAgfSwgZmFsc2UpOwogIH0gZWxzZSBpZiAoZG9jdW1lbnQuYXR0YWNoRXZlbnQpIHsKICAgIGRvY3VtZW50LmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCBmdW5jdGlvbigpIHsKICAgICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICJjb21wbGV0ZSIpIHsKICAgICAgICBkb2N1bWVudC5kZXRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIiwgYXJndW1lbnRzLmNhbGxlZSk7CiAgICAgICAgd2luZG93LkhUTUxXaWRnZXRzLnN0YXRpY1JlbmRlcigpOwogICAgICB9CiAgICB9KTsKICB9CgoKICB3aW5kb3cuSFRNTFdpZGdldHMuZ2V0QXR0YWNobWVudFVybCA9IGZ1bmN0aW9uKGRlcG5hbWUsIGtleSkgewogICAgLy8gSWYgbm8ga2V5LCBkZWZhdWx0IHRvIHRoZSBmaXJzdCBpdGVtCiAgICBpZiAodHlwZW9mKGtleSkgPT09ICJ1bmRlZmluZWQiKQogICAgICBrZXkgPSAxOwoKICAgIHZhciBsaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGVwbmFtZSArICItIiArIGtleSArICItYXR0YWNobWVudCIpOwogICAgaWYgKCFsaW5rKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiQXR0YWNobWVudCAiICsgZGVwbmFtZSArICIvIiArIGtleSArICIgbm90IGZvdW5kIGluIGRvY3VtZW50Iik7CiAgICB9CiAgICByZXR1cm4gbGluay5nZXRBdHRyaWJ1dGUoImhyZWYiKTsKICB9OwoKICB3aW5kb3cuSFRNTFdpZGdldHMuZGF0YWZyYW1lVG9EMyA9IGZ1bmN0aW9uKGRmKSB7CiAgICB2YXIgbmFtZXMgPSBbXTsKICAgIHZhciBsZW5ndGg7CiAgICBmb3IgKHZhciBuYW1lIGluIGRmKSB7CiAgICAgICAgaWYgKGRmLmhhc093blByb3BlcnR5KG5hbWUpKQogICAgICAgICAgICBuYW1lcy5wdXNoKG5hbWUpOwogICAgICAgIGlmICh0eXBlb2YoZGZbbmFtZV0pICE9PSAib2JqZWN0IiB8fCB0eXBlb2YoZGZbbmFtZV0ubGVuZ3RoKSA9PT0gInVuZGVmaW5lZCIpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJBbGwgZmllbGRzIG11c3QgYmUgYXJyYXlzIik7CiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YobGVuZ3RoKSAhPT0gInVuZGVmaW5lZCIgJiYgbGVuZ3RoICE9PSBkZltuYW1lXS5sZW5ndGgpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJBbGwgZmllbGRzIG11c3QgYmUgYXJyYXlzIG9mIHRoZSBzYW1lIGxlbmd0aCIpOwogICAgICAgIH0KICAgICAgICBsZW5ndGggPSBkZltuYW1lXS5sZW5ndGg7CiAgICB9CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgdmFyIGl0ZW07CiAgICBmb3IgKHZhciByb3cgPSAwOyByb3cgPCBsZW5ndGg7IHJvdysrKSB7CiAgICAgICAgaXRlbSA9IHt9OwogICAgICAgIGZvciAodmFyIGNvbCA9IDA7IGNvbCA8IG5hbWVzLmxlbmd0aDsgY29sKyspIHsKICAgICAgICAgICAgaXRlbVtuYW1lc1tjb2xdXSA9IGRmW25hbWVzW2NvbF1dW3Jvd107CiAgICAgICAgfQogICAgICAgIHJlc3VsdHMucHVzaChpdGVtKTsKICAgIH0KICAgIHJldHVybiByZXN1bHRzOwogIH07CgogIHdpbmRvdy5IVE1MV2lkZ2V0cy50cmFuc3Bvc2VBcnJheTJEID0gZnVuY3Rpb24oYXJyYXkpIHsKICAgICAgaWYgKGFycmF5Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIGFycmF5OwogICAgICB2YXIgbmV3QXJyYXkgPSBhcnJheVswXS5tYXAoZnVuY3Rpb24oY29sLCBpKSB7CiAgICAgICAgICByZXR1cm4gYXJyYXkubWFwKGZ1bmN0aW9uKHJvdykgewogICAgICAgICAgICAgIHJldHVybiByb3dbaV0KICAgICAgICAgIH0pCiAgICAgIH0pOwogICAgICByZXR1cm4gbmV3QXJyYXk7CiAgfTsKICAvLyBTcGxpdCB2YWx1ZSBhdCBzcGxpdENoYXIsIGJ1dCBhbGxvdyBzcGxpdENoYXIgdG8gYmUgZXNjYXBlZAogIC8vIHVzaW5nIGVzY2FwZUNoYXIuIEFueSBvdGhlciBjaGFyYWN0ZXJzIGVzY2FwZWQgYnkgZXNjYXBlQ2hhcgogIC8vIHdpbGwgYmUgaW5jbHVkZWQgYXMgdXN1YWwgKGluY2x1ZGluZyBlc2NhcGVDaGFyIGl0c2VsZikuCiAgZnVuY3Rpb24gc3BsaXRXaXRoRXNjYXBlKHZhbHVlLCBzcGxpdENoYXIsIGVzY2FwZUNoYXIpIHsKICAgIHZhciByZXN1bHRzID0gW107CiAgICB2YXIgZXNjYXBlTW9kZSA9IGZhbHNlOwogICAgdmFyIGN1cnJlbnRSZXN1bHQgPSAiIjsKICAgIGZvciAodmFyIHBvcyA9IDA7IHBvcyA8IHZhbHVlLmxlbmd0aDsgcG9zKyspIHsKICAgICAgaWYgKCFlc2NhcGVNb2RlKSB7CiAgICAgICAgaWYgKHZhbHVlW3Bvc10gPT09IHNwbGl0Q2hhcikgewogICAgICAgICAgcmVzdWx0cy5wdXNoKGN1cnJlbnRSZXN1bHQpOwogICAgICAgICAgY3VycmVudFJlc3VsdCA9ICIiOwogICAgICAgIH0gZWxzZSBpZiAodmFsdWVbcG9zXSA9PT0gZXNjYXBlQ2hhcikgewogICAgICAgICAgZXNjYXBlTW9kZSA9IHRydWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGN1cnJlbnRSZXN1bHQgKz0gdmFsdWVbcG9zXTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY3VycmVudFJlc3VsdCArPSB2YWx1ZVtwb3NdOwogICAgICAgIGVzY2FwZU1vZGUgPSBmYWxzZTsKICAgICAgfQogICAgfQogICAgaWYgKGN1cnJlbnRSZXN1bHQgIT09ICIiKSB7CiAgICAgIHJlc3VsdHMucHVzaChjdXJyZW50UmVzdWx0KTsKICAgIH0KICAgIHJldHVybiByZXN1bHRzOwogIH0KICAvLyBGdW5jdGlvbiBhdXRob3JlZCBieSBZaWh1aS9KSiBBbGxhaXJlCiAgd2luZG93LkhUTUxXaWRnZXRzLmV2YWx1YXRlU3RyaW5nTWVtYmVyID0gZnVuY3Rpb24obywgbWVtYmVyKSB7CiAgICB2YXIgcGFydHMgPSBzcGxpdFdpdGhFc2NhcGUobWVtYmVyLCAnLicsICdcXCcpOwogICAgZm9yICh2YXIgaSA9IDAsIGwgPSBwYXJ0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKICAgICAgdmFyIHBhcnQgPSBwYXJ0c1tpXTsKICAgICAgLy8gcGFydCBtYXkgYmUgYSBjaGFyYWN0ZXIgb3IgJ251bWVyaWMnIG1lbWJlciBuYW1lCiAgICAgIGlmIChvICE9PSBudWxsICYmIHR5cGVvZiBvID09PSAib2JqZWN0IiAmJiBwYXJ0IGluIG8pIHsKICAgICAgICBpZiAoaSA9PSAobCAtIDEpKSB7IC8vIGlmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lIHRoZW4gZXZhbHVsYXRlCiAgICAgICAgICBpZiAodHlwZW9mIG9bcGFydF0gPT09ICJzdHJpbmciKQogICAgICAgICAgICBvW3BhcnRdID0gZXZhbCgiKCIgKyBvW3BhcnRdICsgIikiKTsKICAgICAgICB9IGVsc2UgeyAvLyBvdGhlcndpc2UgY29udGludWUgdG8gbmV4dCBlbWJlZGRlZCBvYmplY3QKICAgICAgICAgIG8gPSBvW3BhcnRdOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH07CgogIC8vIFJldHJpZXZlIHRoZSBIVE1MV2lkZ2V0IGluc3RhbmNlIChpLmUuIHRoZSByZXR1cm4gdmFsdWUgb2YgYW4KICAvLyBIVE1MV2lkZ2V0IGJpbmRpbmcncyBpbml0aWFsaXplKCkgb3IgZmFjdG9yeSgpIGZ1bmN0aW9uKQogIC8vIGFzc29jaWF0ZWQgd2l0aCBhbiBlbGVtZW50LCBvciBudWxsIGlmIG5vbmUuCiAgd2luZG93LkhUTUxXaWRnZXRzLmdldEluc3RhbmNlID0gZnVuY3Rpb24oZWwpIHsKICAgIHJldHVybiBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0Iik7CiAgfTsKCiAgLy8gRmluZHMgdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIHNjb3BlIHRoYXQgbWF0Y2hlcyB0aGUgc2VsZWN0b3IsCiAgLy8gYW5kIHJldHVybnMgdGhlIEhUTUxXaWRnZXQgaW5zdGFuY2UgKGkuZS4gdGhlIHJldHVybiB2YWx1ZSBvZgogIC8vIGFuIEhUTUxXaWRnZXQgYmluZGluZydzIGluaXRpYWxpemUoKSBvciBmYWN0b3J5KCkgZnVuY3Rpb24pCiAgLy8gYXNzb2NpYXRlZCB3aXRoIHRoYXQgZWxlbWVudCwgaWYgYW55LiBJZiBubyBlbGVtZW50IG1hdGNoZXMgdGhlCiAgLy8gc2VsZWN0b3IsIG9yIHRoZSBmaXJzdCBtYXRjaGluZyBlbGVtZW50IGhhcyBubyBIVE1MV2lkZ2V0CiAgLy8gaW5zdGFuY2UgYXNzb2NpYXRlZCB3aXRoIGl0LCB0aGVuIG51bGwgaXMgcmV0dXJuZWQuCiAgLy8KICAvLyBUaGUgc2NvcGUgYXJndW1lbnQgaXMgb3B0aW9uYWwsIGFuZCBkZWZhdWx0cyB0byB3aW5kb3cuZG9jdW1lbnQuCiAgd2luZG93LkhUTUxXaWRnZXRzLmZpbmQgPSBmdW5jdGlvbihzY29wZSwgc2VsZWN0b3IpIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHsKICAgICAgc2VsZWN0b3IgPSBzY29wZTsKICAgICAgc2NvcGUgPSBkb2N1bWVudDsKICAgIH0KCiAgICB2YXIgZWwgPSBzY29wZS5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsKICAgIGlmIChlbCA9PT0gbnVsbCkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiB3aW5kb3cuSFRNTFdpZGdldHMuZ2V0SW5zdGFuY2UoZWwpOwogICAgfQogIH07CgogIC8vIEZpbmRzIGFsbCBlbGVtZW50cyBpbiB0aGUgc2NvcGUgdGhhdCBtYXRjaCB0aGUgc2VsZWN0b3IsIGFuZAogIC8vIHJldHVybnMgdGhlIEhUTUxXaWRnZXQgaW5zdGFuY2VzIChpLmUuIHRoZSByZXR1cm4gdmFsdWVzIG9mCiAgLy8gYW4gSFRNTFdpZGdldCBiaW5kaW5nJ3MgaW5pdGlhbGl6ZSgpIG9yIGZhY3RvcnkoKSBmdW5jdGlvbikKICAvLyBhc3NvY2lhdGVkIHdpdGggdGhlIGVsZW1lbnRzLCBpbiBhbiBhcnJheS4gSWYgZWxlbWVudHMgdGhhdAogIC8vIG1hdGNoIHRoZSBzZWxlY3RvciBkb24ndCBoYXZlIGFuIGFzc29jaWF0ZWQgSFRNTFdpZGdldAogIC8vIGluc3RhbmNlLCB0aGUgcmV0dXJuZWQgYXJyYXkgd2lsbCBjb250YWluIG51bGxzLgogIC8vCiAgLy8gVGhlIHNjb3BlIGFyZ3VtZW50IGlzIG9wdGlvbmFsLCBhbmQgZGVmYXVsdHMgdG8gd2luZG93LmRvY3VtZW50LgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5maW5kQWxsID0gZnVuY3Rpb24oc2NvcGUsIHNlbGVjdG9yKSB7CiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSB7CiAgICAgIHNlbGVjdG9yID0gc2NvcGU7CiAgICAgIHNjb3BlID0gZG9jdW1lbnQ7CiAgICB9CgogICAgdmFyIG5vZGVzID0gc2NvcGUucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykgewogICAgICByZXN1bHRzLnB1c2god2luZG93LkhUTUxXaWRnZXRzLmdldEluc3RhbmNlKG5vZGVzW2ldKSk7CiAgICB9CiAgICByZXR1cm4gcmVzdWx0czsKICB9OwoKICB2YXIgcG9zdFJlbmRlckhhbmRsZXJzID0gW107CiAgZnVuY3Rpb24gaW52b2tlUG9zdFJlbmRlckhhbmRsZXJzKCkgewogICAgd2hpbGUgKHBvc3RSZW5kZXJIYW5kbGVycy5sZW5ndGgpIHsKICAgICAgdmFyIGhhbmRsZXIgPSBwb3N0UmVuZGVySGFuZGxlcnMuc2hpZnQoKTsKICAgICAgaWYgKGhhbmRsZXIpIHsKICAgICAgICBoYW5kbGVyKCk7CiAgICAgIH0KICAgIH0KICB9CgogIC8vIFJlZ2lzdGVyIHRoZSBnaXZlbiBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBpbnZva2VkIGFmdGVyIHRoZQogIC8vIG5leHQgdGltZSBzdGF0aWMgd2lkZ2V0cyBhcmUgcmVuZGVyZWQuCiAgd2luZG93LkhUTUxXaWRnZXRzLmFkZFBvc3RSZW5kZXJIYW5kbGVyID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgIHBvc3RSZW5kZXJIYW5kbGVycy5wdXNoKGNhbGxiYWNrKTsKICB9OwoKICAvLyBUYWtlcyBhIG5ldy1zdHlsZSBpbnN0YW5jZS1ib3VuZCBkZWZpbml0aW9uLCBhbmQgcmV0dXJucyBhbgogIC8vIG9sZC1zdHlsZSBjbGFzcy1ib3VuZCBkZWZpbml0aW9uLiBUaGlzIHNhdmVzIHVzIGZyb20gaGF2aW5nCiAgLy8gdG8gcmV3cml0ZSBhbGwgdGhlIGxvZ2ljIGluIHRoaXMgZmlsZSB0byBhY2NvbW9kYXRlIGJvdGgKICAvLyB0eXBlcyBvZiBkZWZpbml0aW9ucy4KICBmdW5jdGlvbiBjcmVhdGVMZWdhY3lEZWZpbml0aW9uQWRhcHRlcihkZWZuKSB7CiAgICB2YXIgcmVzdWx0ID0gewogICAgICBuYW1lOiBkZWZuLm5hbWUsCiAgICAgIHR5cGU6IGRlZm4udHlwZSwKICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQpIHsKICAgICAgICByZXR1cm4gZGVmbi5mYWN0b3J5KGVsLCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgfSwKICAgICAgcmVuZGVyVmFsdWU6IGZ1bmN0aW9uKGVsLCB4LCBpbnN0YW5jZSkgewogICAgICAgIHJldHVybiBpbnN0YW5jZS5yZW5kZXJWYWx1ZSh4KTsKICAgICAgfSwKICAgICAgcmVzaXplOiBmdW5jdGlvbihlbCwgd2lkdGgsIGhlaWdodCwgaW5zdGFuY2UpIHsKICAgICAgICByZXR1cm4gaW5zdGFuY2UucmVzaXplKHdpZHRoLCBoZWlnaHQpOwogICAgICB9CiAgICB9OwoKICAgIGlmIChkZWZuLmZpbmQpCiAgICAgIHJlc3VsdC5maW5kID0gZGVmbi5maW5kOwogICAgaWYgKGRlZm4ucmVuZGVyRXJyb3IpCiAgICAgIHJlc3VsdC5yZW5kZXJFcnJvciA9IGRlZm4ucmVuZGVyRXJyb3I7CiAgICBpZiAoZGVmbi5jbGVhckVycm9yKQogICAgICByZXN1bHQuY2xlYXJFcnJvciA9IGRlZm4uY2xlYXJFcnJvcjsKCiAgICByZXR1cm4gcmVzdWx0OwogIH0KfSkoKTsKCg=="></script>
<script src="data:application/x-javascript;base64,LyohIGpRdWVyeSB2MS4xMS4xIHwgKGMpIDIwMDUsIDIwMTQgalF1ZXJ5IEZvdW5kYXRpb24sIEluYy4gfCBqcXVlcnkub3JnL2xpY2Vuc2UgKi8KIWZ1bmN0aW9uKGEsYil7Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9YS5kb2N1bWVudD9iKGEsITApOmZ1bmN0aW9uKGEpe2lmKCFhLmRvY3VtZW50KXRocm93IG5ldyBFcnJvcigialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudCIpO3JldHVybiBiKGEpfTpiKGEpfSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQ9Yy5zbGljZSxlPWMuY29uY2F0LGY9Yy5wdXNoLGc9Yy5pbmRleE9mLGg9e30saT1oLnRvU3RyaW5nLGo9aC5oYXNPd25Qcm9wZXJ0eSxrPXt9LGw9IjEuMTEuMSIsbT1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgbS5mbi5pbml0KGEsYil9LG49L15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLG89L14tbXMtLyxwPS8tKFtcZGEtel0pL2dpLHE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi50b1VwcGVyQ2FzZSgpfTttLmZuPW0ucHJvdG90eXBlPXtqcXVlcnk6bCxjb25zdHJ1Y3RvcjptLHNlbGVjdG9yOiIiLGxlbmd0aDowLHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gZC5jYWxsKHRoaXMpfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWE/MD5hP3RoaXNbYSt0aGlzLmxlbmd0aF06dGhpc1thXTpkLmNhbGwodGhpcyl9LHB1c2hTdGFjazpmdW5jdGlvbihhKXt2YXIgYj1tLm1lcmdlKHRoaXMuY29uc3RydWN0b3IoKSxhKTtyZXR1cm4gYi5wcmV2T2JqZWN0PXRoaXMsYi5jb250ZXh0PXRoaXMuY29udGV4dCxifSxlYWNoOmZ1bmN0aW9uKGEsYil7cmV0dXJuIG0uZWFjaCh0aGlzLGEsYil9LG1hcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sobS5tYXAodGhpcyxmdW5jdGlvbihiLGMpe3JldHVybiBhLmNhbGwoYixjLGIpfSkpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhkLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgtMSl9LGVxOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMubGVuZ3RoLGM9K2ErKDA+YT9iOjApO3JldHVybiB0aGlzLnB1c2hTdGFjayhjPj0wJiZiPmM/W3RoaXNbY11dOltdKX0sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJldk9iamVjdHx8dGhpcy5jb25zdHJ1Y3RvcihudWxsKX0scHVzaDpmLHNvcnQ6Yy5zb3J0LHNwbGljZTpjLnNwbGljZX0sbS5leHRlbmQ9bS5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZCxlLGYsZz1hcmd1bWVudHNbMF18fHt9LGg9MSxpPWFyZ3VtZW50cy5sZW5ndGgsaj0hMTtmb3IoImJvb2xlYW4iPT10eXBlb2YgZyYmKGo9ZyxnPWFyZ3VtZW50c1toXXx8e30saCsrKSwib2JqZWN0Ij09dHlwZW9mIGd8fG0uaXNGdW5jdGlvbihnKXx8KGc9e30pLGg9PT1pJiYoZz10aGlzLGgtLSk7aT5oO2grKylpZihudWxsIT0oZT1hcmd1bWVudHNbaF0pKWZvcihkIGluIGUpYT1nW2RdLGM9ZVtkXSxnIT09YyYmKGomJmMmJihtLmlzUGxhaW5PYmplY3QoYyl8fChiPW0uaXNBcnJheShjKSkpPyhiPyhiPSExLGY9YSYmbS5pc0FycmF5KGEpP2E6W10pOmY9YSYmbS5pc1BsYWluT2JqZWN0KGEpP2E6e30sZ1tkXT1tLmV4dGVuZChqLGYsYykpOnZvaWQgMCE9PWMmJihnW2RdPWMpKTtyZXR1cm4gZ30sbS5leHRlbmQoe2V4cGFuZG86ImpRdWVyeSIrKGwrTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywiIiksaXNSZWFkeTohMCxlcnJvcjpmdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoYSl9LG5vb3A6ZnVuY3Rpb24oKXt9LGlzRnVuY3Rpb246ZnVuY3Rpb24oYSl7cmV0dXJuImZ1bmN0aW9uIj09PW0udHlwZShhKX0saXNBcnJheTpBcnJheS5pc0FycmF5fHxmdW5jdGlvbihhKXtyZXR1cm4iYXJyYXkiPT09bS50eXBlKGEpfSxpc1dpbmRvdzpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YSYmYT09YS53aW5kb3d9LGlzTnVtZXJpYzpmdW5jdGlvbihhKXtyZXR1cm4hbS5pc0FycmF5KGEpJiZhLXBhcnNlRmxvYXQoYSk+PTB9LGlzRW1wdHlPYmplY3Q6ZnVuY3Rpb24oYSl7dmFyIGI7Zm9yKGIgaW4gYSlyZXR1cm4hMTtyZXR1cm4hMH0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihhKXt2YXIgYjtpZighYXx8Im9iamVjdCIhPT1tLnR5cGUoYSl8fGEubm9kZVR5cGV8fG0uaXNXaW5kb3coYSkpcmV0dXJuITE7dHJ5e2lmKGEuY29uc3RydWN0b3ImJiFqLmNhbGwoYSwiY29uc3RydWN0b3IiKSYmIWouY2FsbChhLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwiaXNQcm90b3R5cGVPZiIpKXJldHVybiExfWNhdGNoKGMpe3JldHVybiExfWlmKGsub3duTGFzdClmb3IoYiBpbiBhKXJldHVybiBqLmNhbGwoYSxiKTtmb3IoYiBpbiBhKTtyZXR1cm4gdm9pZCAwPT09Ynx8ai5jYWxsKGEsYil9LHR5cGU6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/YSsiIjoib2JqZWN0Ij09dHlwZW9mIGF8fCJmdW5jdGlvbiI9PXR5cGVvZiBhP2hbaS5jYWxsKGEpXXx8Im9iamVjdCI6dHlwZW9mIGF9LGdsb2JhbEV2YWw6ZnVuY3Rpb24oYil7YiYmbS50cmltKGIpJiYoYS5leGVjU2NyaXB0fHxmdW5jdGlvbihiKXthLmV2YWwuY2FsbChhLGIpfSkoYil9LGNhbWVsQ2FzZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKG8sIm1zLSIpLnJlcGxhY2UocCxxKX0sbm9kZU5hbWU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yi50b0xvd2VyQ2FzZSgpfSxlYWNoOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlPTAsZj1hLmxlbmd0aCxnPXIoYSk7aWYoYyl7aWYoZyl7Zm9yKDtmPmU7ZSsrKWlmKGQ9Yi5hcHBseShhW2VdLGMpLGQ9PT0hMSlicmVha31lbHNlIGZvcihlIGluIGEpaWYoZD1iLmFwcGx5KGFbZV0sYyksZD09PSExKWJyZWFrfWVsc2UgaWYoZyl7Zm9yKDtmPmU7ZSsrKWlmKGQ9Yi5jYWxsKGFbZV0sZSxhW2VdKSxkPT09ITEpYnJlYWt9ZWxzZSBmb3IoZSBpbiBhKWlmKGQ9Yi5jYWxsKGFbZV0sZSxhW2VdKSxkPT09ITEpYnJlYWs7cmV0dXJuIGF9LHRyaW06ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6KGErIiIpLnJlcGxhY2UobiwiIil9LG1ha2VBcnJheTpmdW5jdGlvbihhLGIpe3ZhciBjPWJ8fFtdO3JldHVybiBudWxsIT1hJiYocihPYmplY3QoYSkpP20ubWVyZ2UoYywic3RyaW5nIj09dHlwZW9mIGE/W2FdOmEpOmYuY2FsbChjLGEpKSxjfSxpbkFycmF5OmZ1bmN0aW9uKGEsYixjKXt2YXIgZDtpZihiKXtpZihnKXJldHVybiBnLmNhbGwoYixhLGMpO2ZvcihkPWIubGVuZ3RoLGM9Yz8wPmM/TWF0aC5tYXgoMCxkK2MpOmM6MDtkPmM7YysrKWlmKGMgaW4gYiYmYltjXT09PWEpcmV0dXJuIGN9cmV0dXJuLTF9LG1lcmdlOmZ1bmN0aW9uKGEsYil7dmFyIGM9K2IubGVuZ3RoLGQ9MCxlPWEubGVuZ3RoO3doaWxlKGM+ZClhW2UrK109YltkKytdO2lmKGMhPT1jKXdoaWxlKHZvaWQgMCE9PWJbZF0pYVtlKytdPWJbZCsrXTtyZXR1cm4gYS5sZW5ndGg9ZSxhfSxncmVwOmZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQsZT1bXSxmPTAsZz1hLmxlbmd0aCxoPSFjO2c+ZjtmKyspZD0hYihhW2ZdLGYpLGQhPT1oJiZlLnB1c2goYVtmXSk7cmV0dXJuIGV9LG1hcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZj0wLGc9YS5sZW5ndGgsaD1yKGEpLGk9W107aWYoaClmb3IoO2c+ZjtmKyspZD1iKGFbZl0sZixjKSxudWxsIT1kJiZpLnB1c2goZCk7ZWxzZSBmb3IoZiBpbiBhKWQ9YihhW2ZdLGYsYyksbnVsbCE9ZCYmaS5wdXNoKGQpO3JldHVybiBlLmFwcGx5KFtdLGkpfSxndWlkOjEscHJveHk6ZnVuY3Rpb24oYSxiKXt2YXIgYyxlLGY7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBiJiYoZj1hW2JdLGI9YSxhPWYpLG0uaXNGdW5jdGlvbihhKT8oYz1kLmNhbGwoYXJndW1lbnRzLDIpLGU9ZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShifHx0aGlzLGMuY29uY2F0KGQuY2FsbChhcmd1bWVudHMpKSl9LGUuZ3VpZD1hLmd1aWQ9YS5ndWlkfHxtLmd1aWQrKyxlKTp2b2lkIDB9LG5vdzpmdW5jdGlvbigpe3JldHVybituZXcgRGF0ZX0sc3VwcG9ydDprfSksbS5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7aFsiW29iamVjdCAiK2IrIl0iXT1iLnRvTG93ZXJDYXNlKCl9KTtmdW5jdGlvbiByKGEpe3ZhciBiPWEubGVuZ3RoLGM9bS50eXBlKGEpO3JldHVybiJmdW5jdGlvbiI9PT1jfHxtLmlzV2luZG93KGEpPyExOjE9PT1hLm5vZGVUeXBlJiZiPyEwOiJhcnJheSI9PT1jfHwwPT09Ynx8Im51bWJlciI9PXR5cGVvZiBiJiZiPjAmJmItMSBpbiBhfXZhciBzPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHU9InNpenpsZSIrLW5ldyBEYXRlLHY9YS5kb2N1bWVudCx3PTAseD0wLHk9Z2IoKSx6PWdiKCksQT1nYigpLEI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT09PWImJihsPSEwKSwwfSxDPSJ1bmRlZmluZWQiLEQ9MTw8MzEsRT17fS5oYXNPd25Qcm9wZXJ0eSxGPVtdLEc9Ri5wb3AsSD1GLnB1c2gsST1GLnB1c2gsSj1GLnNsaWNlLEs9Ri5pbmRleE9mfHxmdW5jdGlvbihhKXtmb3IodmFyIGI9MCxjPXRoaXMubGVuZ3RoO2M+YjtiKyspaWYodGhpc1tiXT09PWEpcmV0dXJuIGI7cmV0dXJuLTF9LEw9ImNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkIixNPSJbXFx4MjBcXHRcXHJcXG5cXGZdIixOPSIoPzpcXFxcLnxbXFx3LV18W15cXHgwMC1cXHhhMF0pKyIsTz1OLnJlcGxhY2UoInciLCJ3IyIpLFA9IlxcWyIrTSsiKigiK04rIikoPzoiK00rIiooWypeJHwhfl0/PSkiK00rIiooPzonKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcInwoIitPKyIpKXwpIitNKyIqXFxdIixRPSI6KCIrTisiKSg/OlxcKCgoJygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCIpfCgoPzpcXFxcLnxbXlxcXFwoKVtcXF1dfCIrUCsiKSopfC4qKVxcKXwpIixSPW5ldyBSZWdFeHAoIl4iK00rIit8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIrTSsiKyQiLCJnIiksUz1uZXcgUmVnRXhwKCJeIitNKyIqLCIrTSsiKiIpLFQ9bmV3IFJlZ0V4cCgiXiIrTSsiKihbPit+XXwiK00rIikiK00rIioiKSxVPW5ldyBSZWdFeHAoIj0iK00rIiooW15cXF0nXCJdKj8pIitNKyIqXFxdIiwiZyIpLFY9bmV3IFJlZ0V4cChRKSxXPW5ldyBSZWdFeHAoIl4iK08rIiQiKSxYPXtJRDpuZXcgUmVnRXhwKCJeIygiK04rIikiKSxDTEFTUzpuZXcgUmVnRXhwKCJeXFwuKCIrTisiKSIpLFRBRzpuZXcgUmVnRXhwKCJeKCIrTi5yZXBsYWNlKCJ3IiwidyoiKSsiKSIpLEFUVFI6bmV3IFJlZ0V4cCgiXiIrUCksUFNFVURPOm5ldyBSZWdFeHAoIl4iK1EpLENISUxEOm5ldyBSZWdFeHAoIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcKCIrTSsiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIrTSsiKig/OihbKy1dfCkiK00rIiooXFxkKyl8KSkiK00rIipcXCl8KSIsImkiKSxib29sOm5ldyBSZWdFeHAoIl4oPzoiK0wrIikkIiwiaSIpLG5lZWRzQ29udGV4dDpuZXcgUmVnRXhwKCJeIitNKyIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiK00rIiooKD86LVxcZCk/XFxkKikiK00rIipcXCl8KSg/PVteLV18JCkiLCJpIil9LFk9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxaPS9eaFxkJC9pLCQ9L15bXntdK1x7XHMqXFtuYXRpdmUgXHcvLF89L14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLyxhYj0vWyt+XS8sYmI9Lyd8XFwvZyxjYj1uZXcgUmVnRXhwKCJcXFxcKFtcXGRhLWZdezEsNn0iK00rIj98KCIrTSsiKXwuKSIsImlnIiksZGI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSIweCIrYi02NTUzNjtyZXR1cm4gZCE9PWR8fGM/YjowPmQ/U3RyaW5nLmZyb21DaGFyQ29kZShkKzY1NTM2KTpTdHJpbmcuZnJvbUNoYXJDb2RlKGQ+PjEwfDU1Mjk2LDEwMjMmZHw1NjMyMCl9O3RyeXtJLmFwcGx5KEY9Si5jYWxsKHYuY2hpbGROb2Rlcyksdi5jaGlsZE5vZGVzKSxGW3YuY2hpbGROb2Rlcy5sZW5ndGhdLm5vZGVUeXBlfWNhdGNoKGViKXtJPXthcHBseTpGLmxlbmd0aD9mdW5jdGlvbihhLGIpe0guYXBwbHkoYSxKLmNhbGwoYikpfTpmdW5jdGlvbihhLGIpe3ZhciBjPWEubGVuZ3RoLGQ9MDt3aGlsZShhW2MrK109YltkKytdKTthLmxlbmd0aD1jLTF9fX1mdW5jdGlvbiBmYihhLGIsZCxlKXt2YXIgZixoLGosayxsLG8scixzLHcseDtpZigoYj9iLm93bmVyRG9jdW1lbnR8fGI6dikhPT1uJiZtKGIpLGI9Ynx8bixkPWR8fFtdLCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIGQ7aWYoMSE9PShrPWIubm9kZVR5cGUpJiY5IT09aylyZXR1cm5bXTtpZihwJiYhZSl7aWYoZj1fLmV4ZWMoYSkpaWYoaj1mWzFdKXtpZig5PT09ayl7aWYoaD1iLmdldEVsZW1lbnRCeUlkKGopLCFofHwhaC5wYXJlbnROb2RlKXJldHVybiBkO2lmKGguaWQ9PT1qKXJldHVybiBkLnB1c2goaCksZH1lbHNlIGlmKGIub3duZXJEb2N1bWVudCYmKGg9Yi5vd25lckRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGopKSYmdChiLGgpJiZoLmlkPT09ailyZXR1cm4gZC5wdXNoKGgpLGR9ZWxzZXtpZihmWzJdKXJldHVybiBJLmFwcGx5KGQsYi5nZXRFbGVtZW50c0J5VGFnTmFtZShhKSksZDtpZigoaj1mWzNdKSYmYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIEkuYXBwbHkoZCxiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoaikpLGR9aWYoYy5xc2EmJighcXx8IXEudGVzdChhKSkpe2lmKHM9cj11LHc9Yix4PTk9PT1rJiZhLDE9PT1rJiYib2JqZWN0IiE9PWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7bz1nKGEpLChyPWIuZ2V0QXR0cmlidXRlKCJpZCIpKT9zPXIucmVwbGFjZShiYiwiXFwkJiIpOmIuc2V0QXR0cmlidXRlKCJpZCIscykscz0iW2lkPSciK3MrIiddICIsbD1vLmxlbmd0aDt3aGlsZShsLS0pb1tsXT1zK3FiKG9bbF0pO3c9YWIudGVzdChhKSYmb2IoYi5wYXJlbnROb2RlKXx8Yix4PW8uam9pbigiLCIpfWlmKHgpdHJ5e3JldHVybiBJLmFwcGx5KGQsdy5xdWVyeVNlbGVjdG9yQWxsKHgpKSxkfWNhdGNoKHkpe31maW5hbGx5e3J8fGIucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIGkoYS5yZXBsYWNlKFIsIiQxIiksYixkLGUpfWZ1bmN0aW9uIGdiKCl7dmFyIGE9W107ZnVuY3Rpb24gYihjLGUpe3JldHVybiBhLnB1c2goYysiICIpPmQuY2FjaGVMZW5ndGgmJmRlbGV0ZSBiW2Euc2hpZnQoKV0sYltjKyIgIl09ZX1yZXR1cm4gYn1mdW5jdGlvbiBoYihhKXtyZXR1cm4gYVt1XT0hMCxhfWZ1bmN0aW9uIGliKGEpe3ZhciBiPW4uY3JlYXRlRWxlbWVudCgiZGl2Iik7dHJ5e3JldHVybiEhYShiKX1jYXRjaChjKXtyZXR1cm4hMX1maW5hbGx5e2IucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbH19ZnVuY3Rpb24gamIoYSxiKXt2YXIgYz1hLnNwbGl0KCJ8IiksZT1hLmxlbmd0aDt3aGlsZShlLS0pZC5hdHRySGFuZGxlW2NbZV1dPWJ9ZnVuY3Rpb24ga2IoYSxiKXt2YXIgYz1iJiZhLGQ9YyYmMT09PWEubm9kZVR5cGUmJjE9PT1iLm5vZGVUeXBlJiYofmIuc291cmNlSW5kZXh8fEQpLSh+YS5zb3VyY2VJbmRleHx8RCk7aWYoZClyZXR1cm4gZDtpZihjKXdoaWxlKGM9Yy5uZXh0U2libGluZylpZihjPT09YilyZXR1cm4tMTtyZXR1cm4gYT8xOi0xfWZ1bmN0aW9uIGxiKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWMmJmIudHlwZT09PWF9fWZ1bmN0aW9uIG1iKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKCJpbnB1dCI9PT1jfHwiYnV0dG9uIj09PWMpJiZiLnR5cGU9PT1hfX1mdW5jdGlvbiBuYihhKXtyZXR1cm4gaGIoZnVuY3Rpb24oYil7cmV0dXJuIGI9K2IsaGIoZnVuY3Rpb24oYyxkKXt2YXIgZSxmPWEoW10sYy5sZW5ndGgsYiksZz1mLmxlbmd0aDt3aGlsZShnLS0pY1tlPWZbZ11dJiYoY1tlXT0hKGRbZV09Y1tlXSkpfSl9KX1mdW5jdGlvbiBvYihhKXtyZXR1cm4gYSYmdHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUhPT1DJiZhfWM9ZmIuc3VwcG9ydD17fSxmPWZiLmlzWE1MPWZ1bmN0aW9uKGEpe3ZhciBiPWEmJihhLm93bmVyRG9jdW1lbnR8fGEpLmRvY3VtZW50RWxlbWVudDtyZXR1cm4gYj8iSFRNTCIhPT1iLm5vZGVOYW1lOiExfSxtPWZiLnNldERvY3VtZW50PWZ1bmN0aW9uKGEpe3ZhciBiLGU9YT9hLm93bmVyRG9jdW1lbnR8fGE6dixnPWUuZGVmYXVsdFZpZXc7cmV0dXJuIGUhPT1uJiY5PT09ZS5ub2RlVHlwZSYmZS5kb2N1bWVudEVsZW1lbnQ/KG49ZSxvPWUuZG9jdW1lbnRFbGVtZW50LHA9IWYoZSksZyYmZyE9PWcudG9wJiYoZy5hZGRFdmVudExpc3RlbmVyP2cuYWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIixmdW5jdGlvbigpe20oKX0sITEpOmcuYXR0YWNoRXZlbnQmJmcuYXR0YWNoRXZlbnQoIm9udW5sb2FkIixmdW5jdGlvbigpe20oKX0pKSxjLmF0dHJpYnV0ZXM9aWIoZnVuY3Rpb24oYSl7cmV0dXJuIGEuY2xhc3NOYW1lPSJpIiwhYS5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpfSksYy5nZXRFbGVtZW50c0J5VGFnTmFtZT1pYihmdW5jdGlvbihhKXtyZXR1cm4gYS5hcHBlbmRDaGlsZChlLmNyZWF0ZUNvbW1lbnQoIiIpKSwhYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aH0pLGMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT0kLnRlc3QoZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSYmaWIoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8ZGl2IGNsYXNzPSdhJz48L2Rpdj48ZGl2IGNsYXNzPSdhIGknPjwvZGl2PiIsYS5maXJzdENoaWxkLmNsYXNzTmFtZT0iaSIsMj09PWEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiaSIpLmxlbmd0aH0pLGMuZ2V0QnlJZD1pYihmdW5jdGlvbihhKXtyZXR1cm4gby5hcHBlbmRDaGlsZChhKS5pZD11LCFlLmdldEVsZW1lbnRzQnlOYW1lfHwhZS5nZXRFbGVtZW50c0J5TmFtZSh1KS5sZW5ndGh9KSxjLmdldEJ5SWQ/KGQuZmluZC5JRD1mdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRCeUlkIT09QyYmcCl7dmFyIGM9Yi5nZXRFbGVtZW50QnlJZChhKTtyZXR1cm4gYyYmYy5wYXJlbnROb2RlP1tjXTpbXX19LGQuZmlsdGVyLklEPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShjYixkYik7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgiaWQiKT09PWJ9fSk6KGRlbGV0ZSBkLmZpbmQuSUQsZC5maWx0ZXIuSUQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKGNiLGRiKTtyZXR1cm4gZnVuY3Rpb24oYSl7dmFyIGM9dHlwZW9mIGEuZ2V0QXR0cmlidXRlTm9kZSE9PUMmJmEuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gYyYmYy52YWx1ZT09PWJ9fSksZC5maW5kLlRBRz1jLmdldEVsZW1lbnRzQnlUYWdOYW1lP2Z1bmN0aW9uKGEsYil7cmV0dXJuIHR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdOYW1lIT09Qz9iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpOnZvaWQgMH06ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9MCxmPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYSk7aWYoIioiPT09YSl7d2hpbGUoYz1mW2UrK10pMT09PWMubm9kZVR5cGUmJmQucHVzaChjKTtyZXR1cm4gZH1yZXR1cm4gZn0sZC5maW5kLkNMQVNTPWMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZnVuY3Rpb24oYSxiKXtyZXR1cm4gdHlwZW9mIGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSE9PUMmJnA/Yi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGEpOnZvaWQgMH0scj1bXSxxPVtdLChjLnFzYT0kLnRlc3QoZS5xdWVyeVNlbGVjdG9yQWxsKSkmJihpYihmdW5jdGlvbihhKXthLmlubmVySFRNTD0iPHNlbGVjdCBtc2FsbG93Y2xpcD0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiIsYS5xdWVyeVNlbGVjdG9yQWxsKCJbbXNhbGxvd2NsaXBePScnXSIpLmxlbmd0aCYmcS5wdXNoKCJbKl4kXT0iK00rIiooPzonJ3xcIlwiKSIpLGEucXVlcnlTZWxlY3RvckFsbCgiW3NlbGVjdGVkXSIpLmxlbmd0aHx8cS5wdXNoKCJcXFsiK00rIiooPzp2YWx1ZXwiK0wrIikiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVja2VkIikubGVuZ3RofHxxLnB1c2goIjpjaGVja2VkIil9KSxpYihmdW5jdGlvbihhKXt2YXIgYj1lLmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Yi5zZXRBdHRyaWJ1dGUoInR5cGUiLCJoaWRkZW4iKSxhLmFwcGVuZENoaWxkKGIpLnNldEF0dHJpYnV0ZSgibmFtZSIsIkQiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIltuYW1lPWRdIikubGVuZ3RoJiZxLnB1c2goIm5hbWUiK00rIipbKl4kfCF+XT89IiksYS5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxlbmd0aHx8cS5wdXNoKCI6ZW5hYmxlZCIsIjpkaXNhYmxlZCIpLGEucXVlcnlTZWxlY3RvckFsbCgiKiw6eCIpLHEucHVzaCgiLC4qOiIpfSkpLChjLm1hdGNoZXNTZWxlY3Rvcj0kLnRlc3Qocz1vLm1hdGNoZXN8fG8ud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxvLm1vek1hdGNoZXNTZWxlY3Rvcnx8by5vTWF0Y2hlc1NlbGVjdG9yfHxvLm1zTWF0Y2hlc1NlbGVjdG9yKSkmJmliKGZ1bmN0aW9uKGEpe2MuZGlzY29ubmVjdGVkTWF0Y2g9cy5jYWxsKGEsImRpdiIpLHMuY2FsbChhLCJbcyE9JyddOngiKSxyLnB1c2goIiE9IixRKX0pLHE9cS5sZW5ndGgmJm5ldyBSZWdFeHAocS5qb2luKCJ8IikpLHI9ci5sZW5ndGgmJm5ldyBSZWdFeHAoci5qb2luKCJ8IikpLGI9JC50ZXN0KG8uY29tcGFyZURvY3VtZW50UG9zaXRpb24pLHQ9Ynx8JC50ZXN0KG8uY29udGFpbnMpP2Z1bmN0aW9uKGEsYil7dmFyIGM9OT09PWEubm9kZVR5cGU/YS5kb2N1bWVudEVsZW1lbnQ6YSxkPWImJmIucGFyZW50Tm9kZTtyZXR1cm4gYT09PWR8fCEoIWR8fDEhPT1kLm5vZGVUeXBlfHwhKGMuY29udGFpbnM/Yy5jb250YWlucyhkKTphLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYxNiZhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGQpKSl9OmZ1bmN0aW9uKGEsYil7aWYoYil3aGlsZShiPWIucGFyZW50Tm9kZSlpZihiPT09YSlyZXR1cm4hMDtyZXR1cm4hMX0sQj1iP2Z1bmN0aW9uKGEsYil7aWYoYT09PWIpcmV0dXJuIGw9ITAsMDt2YXIgZD0hYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbi0hYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtyZXR1cm4gZD9kOihkPShhLm93bmVyRG9jdW1lbnR8fGEpPT09KGIub3duZXJEb2N1bWVudHx8Yik/YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKToxLDEmZHx8IWMuc29ydERldGFjaGVkJiZiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGEpPT09ZD9hPT09ZXx8YS5vd25lckRvY3VtZW50PT09diYmdCh2LGEpPy0xOmI9PT1lfHxiLm93bmVyRG9jdW1lbnQ9PT12JiZ0KHYsYik/MTprP0suY2FsbChrLGEpLUsuY2FsbChrLGIpOjA6NCZkPy0xOjEpfTpmdW5jdGlvbihhLGIpe2lmKGE9PT1iKXJldHVybiBsPSEwLDA7dmFyIGMsZD0wLGY9YS5wYXJlbnROb2RlLGc9Yi5wYXJlbnROb2RlLGg9W2FdLGk9W2JdO2lmKCFmfHwhZylyZXR1cm4gYT09PWU/LTE6Yj09PWU/MTpmPy0xOmc/MTprP0suY2FsbChrLGEpLUsuY2FsbChrLGIpOjA7aWYoZj09PWcpcmV0dXJuIGtiKGEsYik7Yz1hO3doaWxlKGM9Yy5wYXJlbnROb2RlKWgudW5zaGlmdChjKTtjPWI7d2hpbGUoYz1jLnBhcmVudE5vZGUpaS51bnNoaWZ0KGMpO3doaWxlKGhbZF09PT1pW2RdKWQrKztyZXR1cm4gZD9rYihoW2RdLGlbZF0pOmhbZF09PT12Py0xOmlbZF09PT12PzE6MH0sZSk6bn0sZmIubWF0Y2hlcz1mdW5jdGlvbihhLGIpe3JldHVybiBmYihhLG51bGwsbnVsbCxiKX0sZmIubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGEsYil7aWYoKGEub3duZXJEb2N1bWVudHx8YSkhPT1uJiZtKGEpLGI9Yi5yZXBsYWNlKFUsIj0nJDEnXSIpLCEoIWMubWF0Y2hlc1NlbGVjdG9yfHwhcHx8ciYmci50ZXN0KGIpfHxxJiZxLnRlc3QoYikpKXRyeXt2YXIgZD1zLmNhbGwoYSxiKTtpZihkfHxjLmRpc2Nvbm5lY3RlZE1hdGNofHxhLmRvY3VtZW50JiYxMSE9PWEuZG9jdW1lbnQubm9kZVR5cGUpcmV0dXJuIGR9Y2F0Y2goZSl7fXJldHVybiBmYihiLG4sbnVsbCxbYV0pLmxlbmd0aD4wfSxmYi5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybihhLm93bmVyRG9jdW1lbnR8fGEpIT09biYmbShhKSx0KGEsYil9LGZiLmF0dHI9ZnVuY3Rpb24oYSxiKXsoYS5vd25lckRvY3VtZW50fHxhKSE9PW4mJm0oYSk7dmFyIGU9ZC5hdHRySGFuZGxlW2IudG9Mb3dlckNhc2UoKV0sZj1lJiZFLmNhbGwoZC5hdHRySGFuZGxlLGIudG9Mb3dlckNhc2UoKSk/ZShhLGIsIXApOnZvaWQgMDtyZXR1cm4gdm9pZCAwIT09Zj9mOmMuYXR0cmlidXRlc3x8IXA/YS5nZXRBdHRyaWJ1dGUoYik6KGY9YS5nZXRBdHRyaWJ1dGVOb2RlKGIpKSYmZi5zcGVjaWZpZWQ/Zi52YWx1ZTpudWxsfSxmYi5lcnJvcj1mdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrYSl9LGZiLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oYSl7dmFyIGIsZD1bXSxlPTAsZj0wO2lmKGw9IWMuZGV0ZWN0RHVwbGljYXRlcyxrPSFjLnNvcnRTdGFibGUmJmEuc2xpY2UoMCksYS5zb3J0KEIpLGwpe3doaWxlKGI9YVtmKytdKWI9PT1hW2ZdJiYoZT1kLnB1c2goZikpO3doaWxlKGUtLSlhLnNwbGljZShkW2VdLDEpfXJldHVybiBrPW51bGwsYX0sZT1mYi5nZXRUZXh0PWZ1bmN0aW9uKGEpe3ZhciBiLGM9IiIsZD0wLGY9YS5ub2RlVHlwZTtpZihmKXtpZigxPT09Znx8OT09PWZ8fDExPT09Zil7aWYoInN0cmluZyI9PXR5cGVvZiBhLnRleHRDb250ZW50KXJldHVybiBhLnRleHRDb250ZW50O2ZvcihhPWEuZmlyc3RDaGlsZDthO2E9YS5uZXh0U2libGluZyljKz1lKGEpfWVsc2UgaWYoMz09PWZ8fDQ9PT1mKXJldHVybiBhLm5vZGVWYWx1ZX1lbHNlIHdoaWxlKGI9YVtkKytdKWMrPWUoYik7cmV0dXJuIGN9LGQ9ZmIuc2VsZWN0b3JzPXtjYWNoZUxlbmd0aDo1MCxjcmVhdGVQc2V1ZG86aGIsbWF0Y2g6WCxhdHRySGFuZGxlOnt9LGZpbmQ6e30scmVsYXRpdmU6eyI+Ijp7ZGlyOiJwYXJlbnROb2RlIixmaXJzdDohMH0sIiAiOntkaXI6InBhcmVudE5vZGUifSwiKyI6e2RpcjoicHJldmlvdXNTaWJsaW5nIixmaXJzdDohMH0sIn4iOntkaXI6InByZXZpb3VzU2libGluZyJ9fSxwcmVGaWx0ZXI6e0FUVFI6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbMV09YVsxXS5yZXBsYWNlKGNiLGRiKSxhWzNdPShhWzNdfHxhWzRdfHxhWzVdfHwiIikucmVwbGFjZShjYixkYiksIn49Ij09PWFbMl0mJihhWzNdPSIgIithWzNdKyIgIiksYS5zbGljZSgwLDQpfSxDSElMRDpmdW5jdGlvbihhKXtyZXR1cm4gYVsxXT1hWzFdLnRvTG93ZXJDYXNlKCksIm50aCI9PT1hWzFdLnNsaWNlKDAsMyk/KGFbM118fGZiLmVycm9yKGFbMF0pLGFbNF09KyhhWzRdP2FbNV0rKGFbNl18fDEpOjIqKCJldmVuIj09PWFbM118fCJvZGQiPT09YVszXSkpLGFbNV09KyhhWzddK2FbOF18fCJvZGQiPT09YVszXSkpOmFbM10mJmZiLmVycm9yKGFbMF0pLGF9LFBTRVVETzpmdW5jdGlvbihhKXt2YXIgYixjPSFhWzZdJiZhWzJdO3JldHVybiBYLkNISUxELnRlc3QoYVswXSk/bnVsbDooYVszXT9hWzJdPWFbNF18fGFbNV18fCIiOmMmJlYudGVzdChjKSYmKGI9ZyhjLCEwKSkmJihiPWMuaW5kZXhPZigiKSIsYy5sZW5ndGgtYiktYy5sZW5ndGgpJiYoYVswXT1hWzBdLnNsaWNlKDAsYiksYVsyXT1jLnNsaWNlKDAsYikpLGEuc2xpY2UoMCwzKSl9fSxmaWx0ZXI6e1RBRzpmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UoY2IsZGIpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIioiPT09YT9mdW5jdGlvbigpe3JldHVybiEwfTpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yn19LENMQVNTOmZ1bmN0aW9uKGEpe3ZhciBiPXlbYSsiICJdO3JldHVybiBifHwoYj1uZXcgUmVnRXhwKCIoXnwiK00rIikiK2ErIigiK00rInwkKSIpKSYmeShhLGZ1bmN0aW9uKGEpe3JldHVybiBiLnRlc3QoInN0cmluZyI9PXR5cGVvZiBhLmNsYXNzTmFtZSYmYS5jbGFzc05hbWV8fHR5cGVvZiBhLmdldEF0dHJpYnV0ZSE9PUMmJmEuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9KX0sQVRUUjpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGZ1bmN0aW9uKGQpe3ZhciBlPWZiLmF0dHIoZCxhKTtyZXR1cm4gbnVsbD09ZT8iIT0iPT09YjpiPyhlKz0iIiwiPSI9PT1iP2U9PT1jOiIhPSI9PT1iP2UhPT1jOiJePSI9PT1iP2MmJjA9PT1lLmluZGV4T2YoYyk6Iio9Ij09PWI/YyYmZS5pbmRleE9mKGMpPi0xOiIkPSI9PT1iP2MmJmUuc2xpY2UoLWMubGVuZ3RoKT09PWM6In49Ij09PWI/KCIgIitlKyIgIikuaW5kZXhPZihjKT4tMToifD0iPT09Yj9lPT09Y3x8ZS5zbGljZSgwLGMubGVuZ3RoKzEpPT09YysiLSI6ITEpOiEwfX0sQ0hJTEQ6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj0ibnRoIiE9PWEuc2xpY2UoMCwzKSxnPSJsYXN0IiE9PWEuc2xpY2UoLTQpLGg9Im9mLXR5cGUiPT09YjtyZXR1cm4gMT09PWQmJjA9PT1lP2Z1bmN0aW9uKGEpe3JldHVybiEhYS5wYXJlbnROb2RlfTpmdW5jdGlvbihiLGMsaSl7dmFyIGosayxsLG0sbixvLHA9ZiE9PWc/Im5leHRTaWJsaW5nIjoicHJldmlvdXNTaWJsaW5nIixxPWIucGFyZW50Tm9kZSxyPWgmJmIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxzPSFpJiYhaDtpZihxKXtpZihmKXt3aGlsZShwKXtsPWI7d2hpbGUobD1sW3BdKWlmKGg/bC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09cjoxPT09bC5ub2RlVHlwZSlyZXR1cm4hMTtvPXA9Im9ubHkiPT09YSYmIW8mJiJuZXh0U2libGluZyJ9cmV0dXJuITB9aWYobz1bZz9xLmZpcnN0Q2hpbGQ6cS5sYXN0Q2hpbGRdLGcmJnMpe2s9cVt1XXx8KHFbdV09e30pLGo9a1thXXx8W10sbj1qWzBdPT09dyYmalsxXSxtPWpbMF09PT13JiZqWzJdLGw9biYmcS5jaGlsZE5vZGVzW25dO3doaWxlKGw9KytuJiZsJiZsW3BdfHwobT1uPTApfHxvLnBvcCgpKWlmKDE9PT1sLm5vZGVUeXBlJiYrK20mJmw9PT1iKXtrW2FdPVt3LG4sbV07YnJlYWt9fWVsc2UgaWYocyYmKGo9KGJbdV18fChiW3VdPXt9KSlbYV0pJiZqWzBdPT09dyltPWpbMV07ZWxzZSB3aGlsZShsPSsrbiYmbCYmbFtwXXx8KG09bj0wKXx8by5wb3AoKSlpZigoaD9sLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1yOjE9PT1sLm5vZGVUeXBlKSYmKyttJiYocyYmKChsW3VdfHwobFt1XT17fSkpW2FdPVt3LG1dKSxsPT09YikpYnJlYWs7cmV0dXJuIG0tPWUsbT09PWR8fG0lZD09PTAmJm0vZD49MH19fSxQU0VVRE86ZnVuY3Rpb24oYSxiKXt2YXIgYyxlPWQucHNldWRvc1thXXx8ZC5zZXRGaWx0ZXJzW2EudG9Mb3dlckNhc2UoKV18fGZiLmVycm9yKCJ1bnN1cHBvcnRlZCBwc2V1ZG86ICIrYSk7cmV0dXJuIGVbdV0/ZShiKTplLmxlbmd0aD4xPyhjPVthLGEsIiIsYl0sZC5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KGEudG9Mb3dlckNhc2UoKSk/aGIoZnVuY3Rpb24oYSxjKXt2YXIgZCxmPWUoYSxiKSxnPWYubGVuZ3RoO3doaWxlKGctLSlkPUsuY2FsbChhLGZbZ10pLGFbZF09IShjW2RdPWZbZ10pfSk6ZnVuY3Rpb24oYSl7cmV0dXJuIGUoYSwwLGMpfSk6ZX19LHBzZXVkb3M6e25vdDpoYihmdW5jdGlvbihhKXt2YXIgYj1bXSxjPVtdLGQ9aChhLnJlcGxhY2UoUiwiJDEiKSk7cmV0dXJuIGRbdV0/aGIoZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGYsZz1kKGEsbnVsbCxlLFtdKSxoPWEubGVuZ3RoO3doaWxlKGgtLSkoZj1nW2hdKSYmKGFbaF09IShiW2hdPWYpKX0pOmZ1bmN0aW9uKGEsZSxmKXtyZXR1cm4gYlswXT1hLGQoYixudWxsLGYsYyksIWMucG9wKCl9fSksaGFzOmhiKGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4gZmIoYSxiKS5sZW5ndGg+MH19KSxjb250YWluczpoYihmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuKGIudGV4dENvbnRlbnR8fGIuaW5uZXJUZXh0fHxlKGIpKS5pbmRleE9mKGEpPi0xfX0pLGxhbmc6aGIoZnVuY3Rpb24oYSl7cmV0dXJuIFcudGVzdChhfHwiIil8fGZiLmVycm9yKCJ1bnN1cHBvcnRlZCBsYW5nOiAiK2EpLGE9YS5yZXBsYWNlKGNiLGRiKS50b0xvd2VyQ2FzZSgpLGZ1bmN0aW9uKGIpe3ZhciBjO2RvIGlmKGM9cD9iLmxhbmc6Yi5nZXRBdHRyaWJ1dGUoInhtbDpsYW5nIil8fGIuZ2V0QXR0cmlidXRlKCJsYW5nIikpcmV0dXJuIGM9Yy50b0xvd2VyQ2FzZSgpLGM9PT1hfHwwPT09Yy5pbmRleE9mKGErIi0iKTt3aGlsZSgoYj1iLnBhcmVudE5vZGUpJiYxPT09Yi5ub2RlVHlwZSk7cmV0dXJuITF9fSksdGFyZ2V0OmZ1bmN0aW9uKGIpe3ZhciBjPWEubG9jYXRpb24mJmEubG9jYXRpb24uaGFzaDtyZXR1cm4gYyYmYy5zbGljZSgxKT09PWIuaWR9LHJvb3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1vfSxmb2N1czpmdW5jdGlvbihhKXtyZXR1cm4gYT09PW4uYWN0aXZlRWxlbWVudCYmKCFuLmhhc0ZvY3VzfHxuLmhhc0ZvY3VzKCkpJiYhIShhLnR5cGV8fGEuaHJlZnx8fmEudGFiSW5kZXgpfSxlbmFibGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmRpc2FibGVkPT09ITF9LGRpc2FibGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmRpc2FibGVkPT09ITB9LGNoZWNrZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT1iJiYhIWEuY2hlY2tlZHx8Im9wdGlvbiI9PT1iJiYhIWEuc2VsZWN0ZWR9LHNlbGVjdGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LGEuc2VsZWN0ZWQ9PT0hMH0sZW1wdHk6ZnVuY3Rpb24oYSl7Zm9yKGE9YS5maXJzdENoaWxkO2E7YT1hLm5leHRTaWJsaW5nKWlmKGEubm9kZVR5cGU8NilyZXR1cm4hMTtyZXR1cm4hMH0scGFyZW50OmZ1bmN0aW9uKGEpe3JldHVybiFkLnBzZXVkb3MuZW1wdHkoYSl9LGhlYWRlcjpmdW5jdGlvbihhKXtyZXR1cm4gWi50ZXN0KGEubm9kZU5hbWUpfSxpbnB1dDpmdW5jdGlvbihhKXtyZXR1cm4gWS50ZXN0KGEubm9kZU5hbWUpfSxidXR0b246ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT1iJiYiYnV0dG9uIj09PWEudHlwZXx8ImJ1dHRvbiI9PT1ifSx0ZXh0OmZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybiJpbnB1dCI9PT1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJiJ0ZXh0Ij09PWEudHlwZSYmKG51bGw9PShiPWEuZ2V0QXR0cmlidXRlKCJ0eXBlIikpfHwidGV4dCI9PT1iLnRvTG93ZXJDYXNlKCkpfSxmaXJzdDpuYihmdW5jdGlvbigpe3JldHVyblswXX0pLGxhc3Q6bmIoZnVuY3Rpb24oYSxiKXtyZXR1cm5bYi0xXX0pLGVxOm5iKGZ1bmN0aW9uKGEsYixjKXtyZXR1cm5bMD5jP2MrYjpjXX0pLGV2ZW46bmIoZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MDtiPmM7Yys9MilhLnB1c2goYyk7cmV0dXJuIGF9KSxvZGQ6bmIoZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MTtiPmM7Yys9MilhLnB1c2goYyk7cmV0dXJuIGF9KSxsdDpuYihmdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPTA+Yz9jK2I6YzstLWQ+PTA7KWEucHVzaChkKTtyZXR1cm4gYX0pLGd0Om5iKGZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9MD5jP2MrYjpjOysrZDxiOylhLnB1c2goZCk7cmV0dXJuIGF9KX19LGQucHNldWRvcy5udGg9ZC5wc2V1ZG9zLmVxO2ZvcihiIGlue3JhZGlvOiEwLGNoZWNrYm94OiEwLGZpbGU6ITAscGFzc3dvcmQ6ITAsaW1hZ2U6ITB9KWQucHNldWRvc1tiXT1sYihiKTtmb3IoYiBpbntzdWJtaXQ6ITAscmVzZXQ6ITB9KWQucHNldWRvc1tiXT1tYihiKTtmdW5jdGlvbiBwYigpe31wYi5wcm90b3R5cGU9ZC5maWx0ZXJzPWQucHNldWRvcyxkLnNldEZpbHRlcnM9bmV3IHBiLGc9ZmIudG9rZW5pemU9ZnVuY3Rpb24oYSxiKXt2YXIgYyxlLGYsZyxoLGksaixrPXpbYSsiICJdO2lmKGspcmV0dXJuIGI/MDprLnNsaWNlKDApO2g9YSxpPVtdLGo9ZC5wcmVGaWx0ZXI7d2hpbGUoaCl7KCFjfHwoZT1TLmV4ZWMoaCkpKSYmKGUmJihoPWguc2xpY2UoZVswXS5sZW5ndGgpfHxoKSxpLnB1c2goZj1bXSkpLGM9ITEsKGU9VC5leGVjKGgpKSYmKGM9ZS5zaGlmdCgpLGYucHVzaCh7dmFsdWU6Yyx0eXBlOmVbMF0ucmVwbGFjZShSLCIgIil9KSxoPWguc2xpY2UoYy5sZW5ndGgpKTtmb3IoZyBpbiBkLmZpbHRlcikhKGU9WFtnXS5leGVjKGgpKXx8altnXSYmIShlPWpbZ10oZSkpfHwoYz1lLnNoaWZ0KCksZi5wdXNoKHt2YWx1ZTpjLHR5cGU6ZyxtYXRjaGVzOmV9KSxoPWguc2xpY2UoYy5sZW5ndGgpKTtpZighYylicmVha31yZXR1cm4gYj9oLmxlbmd0aDpoP2ZiLmVycm9yKGEpOnooYSxpKS5zbGljZSgwKX07ZnVuY3Rpb24gcWIoYSl7Zm9yKHZhciBiPTAsYz1hLmxlbmd0aCxkPSIiO2M+YjtiKyspZCs9YVtiXS52YWx1ZTtyZXR1cm4gZH1mdW5jdGlvbiByYihhLGIsYyl7dmFyIGQ9Yi5kaXIsZT1jJiYicGFyZW50Tm9kZSI9PT1kLGY9eCsrO3JldHVybiBiLmZpcnN0P2Z1bmN0aW9uKGIsYyxmKXt3aGlsZShiPWJbZF0paWYoMT09PWIubm9kZVR5cGV8fGUpcmV0dXJuIGEoYixjLGYpfTpmdW5jdGlvbihiLGMsZyl7dmFyIGgsaSxqPVt3LGZdO2lmKGcpe3doaWxlKGI9YltkXSlpZigoMT09PWIubm9kZVR5cGV8fGUpJiZhKGIsYyxnKSlyZXR1cm4hMH1lbHNlIHdoaWxlKGI9YltkXSlpZigxPT09Yi5ub2RlVHlwZXx8ZSl7aWYoaT1iW3VdfHwoYlt1XT17fSksKGg9aVtkXSkmJmhbMF09PT13JiZoWzFdPT09ZilyZXR1cm4galsyXT1oWzJdO2lmKGlbZF09aixqWzJdPWEoYixjLGcpKXJldHVybiEwfX19ZnVuY3Rpb24gc2IoYSl7cmV0dXJuIGEubGVuZ3RoPjE/ZnVuY3Rpb24oYixjLGQpe3ZhciBlPWEubGVuZ3RoO3doaWxlKGUtLSlpZighYVtlXShiLGMsZCkpcmV0dXJuITE7cmV0dXJuITB9OmFbMF19ZnVuY3Rpb24gdGIoYSxiLGMpe2Zvcih2YXIgZD0wLGU9Yi5sZW5ndGg7ZT5kO2QrKylmYihhLGJbZF0sYyk7cmV0dXJuIGN9ZnVuY3Rpb24gdWIoYSxiLGMsZCxlKXtmb3IodmFyIGYsZz1bXSxoPTAsaT1hLmxlbmd0aCxqPW51bGwhPWI7aT5oO2grKykoZj1hW2hdKSYmKCFjfHxjKGYsZCxlKSkmJihnLnB1c2goZiksaiYmYi5wdXNoKGgpKTtyZXR1cm4gZ31mdW5jdGlvbiB2YihhLGIsYyxkLGUsZil7cmV0dXJuIGQmJiFkW3VdJiYoZD12YihkKSksZSYmIWVbdV0mJihlPXZiKGUsZikpLGhiKGZ1bmN0aW9uKGYsZyxoLGkpe3ZhciBqLGssbCxtPVtdLG49W10sbz1nLmxlbmd0aCxwPWZ8fHRiKGJ8fCIqIixoLm5vZGVUeXBlP1toXTpoLFtdKSxxPSFhfHwhZiYmYj9wOnViKHAsbSxhLGgsaSkscj1jP2V8fChmP2E6b3x8ZCk/W106ZzpxO2lmKGMmJmMocSxyLGgsaSksZCl7aj11YihyLG4pLGQoaixbXSxoLGkpLGs9ai5sZW5ndGg7d2hpbGUoay0tKShsPWpba10pJiYocltuW2tdXT0hKHFbbltrXV09bCkpfWlmKGYpe2lmKGV8fGEpe2lmKGUpe2o9W10saz1yLmxlbmd0aDt3aGlsZShrLS0pKGw9cltrXSkmJmoucHVzaChxW2tdPWwpO2UobnVsbCxyPVtdLGosaSl9az1yLmxlbmd0aDt3aGlsZShrLS0pKGw9cltrXSkmJihqPWU/Sy5jYWxsKGYsbCk6bVtrXSk+LTEmJihmW2pdPSEoZ1tqXT1sKSl9fWVsc2Ugcj11YihyPT09Zz9yLnNwbGljZShvLHIubGVuZ3RoKTpyKSxlP2UobnVsbCxnLHIsaSk6SS5hcHBseShnLHIpfSl9ZnVuY3Rpb24gd2IoYSl7Zm9yKHZhciBiLGMsZSxmPWEubGVuZ3RoLGc9ZC5yZWxhdGl2ZVthWzBdLnR5cGVdLGg9Z3x8ZC5yZWxhdGl2ZVsiICJdLGk9Zz8xOjAsaz1yYihmdW5jdGlvbihhKXtyZXR1cm4gYT09PWJ9LGgsITApLGw9cmIoZnVuY3Rpb24oYSl7cmV0dXJuIEsuY2FsbChiLGEpPi0xfSxoLCEwKSxtPVtmdW5jdGlvbihhLGMsZCl7cmV0dXJuIWcmJihkfHxjIT09ail8fCgoYj1jKS5ub2RlVHlwZT9rKGEsYyxkKTpsKGEsYyxkKSl9XTtmPmk7aSsrKWlmKGM9ZC5yZWxhdGl2ZVthW2ldLnR5cGVdKW09W3JiKHNiKG0pLGMpXTtlbHNle2lmKGM9ZC5maWx0ZXJbYVtpXS50eXBlXS5hcHBseShudWxsLGFbaV0ubWF0Y2hlcyksY1t1XSl7Zm9yKGU9KytpO2Y+ZTtlKyspaWYoZC5yZWxhdGl2ZVthW2VdLnR5cGVdKWJyZWFrO3JldHVybiB2YihpPjEmJnNiKG0pLGk+MSYmcWIoYS5zbGljZSgwLGktMSkuY29uY2F0KHt2YWx1ZToiICI9PT1hW2ktMl0udHlwZT8iKiI6IiJ9KSkucmVwbGFjZShSLCIkMSIpLGMsZT5pJiZ3YihhLnNsaWNlKGksZSkpLGY+ZSYmd2IoYT1hLnNsaWNlKGUpKSxmPmUmJnFiKGEpKX1tLnB1c2goYyl9cmV0dXJuIHNiKG0pfWZ1bmN0aW9uIHhiKGEsYil7dmFyIGM9Yi5sZW5ndGg+MCxlPWEubGVuZ3RoPjAsZj1mdW5jdGlvbihmLGcsaCxpLGspe3ZhciBsLG0sbyxwPTAscT0iMCIscj1mJiZbXSxzPVtdLHQ9aix1PWZ8fGUmJmQuZmluZC5UQUcoIioiLGspLHY9dys9bnVsbD09dD8xOk1hdGgucmFuZG9tKCl8fC4xLHg9dS5sZW5ndGg7Zm9yKGsmJihqPWchPT1uJiZnKTtxIT09eCYmbnVsbCE9KGw9dVtxXSk7cSsrKXtpZihlJiZsKXttPTA7d2hpbGUobz1hW20rK10paWYobyhsLGcsaCkpe2kucHVzaChsKTticmVha31rJiYodz12KX1jJiYoKGw9IW8mJmwpJiZwLS0sZiYmci5wdXNoKGwpKX1pZihwKz1xLGMmJnEhPT1wKXttPTA7d2hpbGUobz1iW20rK10pbyhyLHMsZyxoKTtpZihmKXtpZihwPjApd2hpbGUocS0tKXJbcV18fHNbcV18fChzW3FdPUcuY2FsbChpKSk7cz11YihzKX1JLmFwcGx5KGkscyksayYmIWYmJnMubGVuZ3RoPjAmJnArYi5sZW5ndGg+MSYmZmIudW5pcXVlU29ydChpKX1yZXR1cm4gayYmKHc9dixqPXQpLHJ9O3JldHVybiBjP2hiKGYpOmZ9cmV0dXJuIGg9ZmIuY29tcGlsZT1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT1bXSxmPUFbYSsiICJdO2lmKCFmKXtifHwoYj1nKGEpKSxjPWIubGVuZ3RoO3doaWxlKGMtLSlmPXdiKGJbY10pLGZbdV0/ZC5wdXNoKGYpOmUucHVzaChmKTtmPUEoYSx4YihlLGQpKSxmLnNlbGVjdG9yPWF9cmV0dXJuIGZ9LGk9ZmIuc2VsZWN0PWZ1bmN0aW9uKGEsYixlLGYpe3ZhciBpLGosayxsLG0sbj0iZnVuY3Rpb24iPT10eXBlb2YgYSYmYSxvPSFmJiZnKGE9bi5zZWxlY3Rvcnx8YSk7aWYoZT1lfHxbXSwxPT09by5sZW5ndGgpe2lmKGo9b1swXT1vWzBdLnNsaWNlKDApLGoubGVuZ3RoPjImJiJJRCI9PT0oaz1qWzBdKS50eXBlJiZjLmdldEJ5SWQmJjk9PT1iLm5vZGVUeXBlJiZwJiZkLnJlbGF0aXZlW2pbMV0udHlwZV0pe2lmKGI9KGQuZmluZC5JRChrLm1hdGNoZXNbMF0ucmVwbGFjZShjYixkYiksYil8fFtdKVswXSwhYilyZXR1cm4gZTtuJiYoYj1iLnBhcmVudE5vZGUpLGE9YS5zbGljZShqLnNoaWZ0KCkudmFsdWUubGVuZ3RoKX1pPVgubmVlZHNDb250ZXh0LnRlc3QoYSk/MDpqLmxlbmd0aDt3aGlsZShpLS0pe2lmKGs9altpXSxkLnJlbGF0aXZlW2w9ay50eXBlXSlicmVhaztpZigobT1kLmZpbmRbbF0pJiYoZj1tKGsubWF0Y2hlc1swXS5yZXBsYWNlKGNiLGRiKSxhYi50ZXN0KGpbMF0udHlwZSkmJm9iKGIucGFyZW50Tm9kZSl8fGIpKSl7aWYoai5zcGxpY2UoaSwxKSxhPWYubGVuZ3RoJiZxYihqKSwhYSlyZXR1cm4gSS5hcHBseShlLGYpLGU7YnJlYWt9fX1yZXR1cm4obnx8aChhLG8pKShmLGIsIXAsZSxhYi50ZXN0KGEpJiZvYihiLnBhcmVudE5vZGUpfHxiKSxlfSxjLnNvcnRTdGFibGU9dS5zcGxpdCgiIikuc29ydChCKS5qb2luKCIiKT09PXUsYy5kZXRlY3REdXBsaWNhdGVzPSEhbCxtKCksYy5zb3J0RGV0YWNoZWQ9aWIoZnVuY3Rpb24oYSl7cmV0dXJuIDEmYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihuLmNyZWF0ZUVsZW1lbnQoImRpdiIpKX0pLGliKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iPGEgaHJlZj0nIyc+PC9hPiIsIiMiPT09YS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSl8fGpiKCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoIixmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGM/dm9pZCAwOmEuZ2V0QXR0cmlidXRlKGIsInR5cGUiPT09Yi50b0xvd2VyQ2FzZSgpPzE6Mil9KSxjLmF0dHJpYnV0ZXMmJmliKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iPGlucHV0Lz4iLGEuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoInZhbHVlIiwiIiksIiI9PT1hLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpfSl8fGpiKCJ2YWx1ZSIsZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjfHwiaW5wdXQiIT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpP3ZvaWQgMDphLmRlZmF1bHRWYWx1ZX0pLGliKGZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKX0pfHxqYihMLGZ1bmN0aW9uKGEsYixjKXt2YXIgZDtyZXR1cm4gYz92b2lkIDA6YVtiXT09PSEwP2IudG9Mb3dlckNhc2UoKTooZD1hLmdldEF0dHJpYnV0ZU5vZGUoYikpJiZkLnNwZWNpZmllZD9kLnZhbHVlOm51bGx9KSxmYn0oYSk7bS5maW5kPXMsbS5leHByPXMuc2VsZWN0b3JzLG0uZXhwclsiOiJdPW0uZXhwci5wc2V1ZG9zLG0udW5pcXVlPXMudW5pcXVlU29ydCxtLnRleHQ9cy5nZXRUZXh0LG0uaXNYTUxEb2M9cy5pc1hNTCxtLmNvbnRhaW5zPXMuY29udGFpbnM7dmFyIHQ9bS5leHByLm1hdGNoLm5lZWRzQ29udGV4dCx1PS9ePChcdyspXHMqXC8/Pig/OjxcL1wxPnwpJC8sdj0vXi5bXjojXFtcLixdKiQvO2Z1bmN0aW9uIHcoYSxiLGMpe2lmKG0uaXNGdW5jdGlvbihiKSlyZXR1cm4gbS5ncmVwKGEsZnVuY3Rpb24oYSxkKXtyZXR1cm4hIWIuY2FsbChhLGQsYSkhPT1jfSk7aWYoYi5ub2RlVHlwZSlyZXR1cm4gbS5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1iIT09Y30pO2lmKCJzdHJpbmciPT10eXBlb2YgYil7aWYodi50ZXN0KGIpKXJldHVybiBtLmZpbHRlcihiLGEsYyk7Yj1tLmZpbHRlcihiLGEpfXJldHVybiBtLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gbS5pbkFycmF5KGEsYik+PTAhPT1jfSl9bS5maWx0ZXI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWJbMF07cmV0dXJuIGMmJihhPSI6bm90KCIrYSsiKSIpLDE9PT1iLmxlbmd0aCYmMT09PWQubm9kZVR5cGU/bS5maW5kLm1hdGNoZXNTZWxlY3RvcihkLGEpP1tkXTpbXTptLmZpbmQubWF0Y2hlcyhhLG0uZ3JlcChiLGZ1bmN0aW9uKGEpe3JldHVybiAxPT09YS5ub2RlVHlwZX0pKX0sbS5mbi5leHRlbmQoe2ZpbmQ6ZnVuY3Rpb24oYSl7dmFyIGIsYz1bXSxkPXRoaXMsZT1kLmxlbmd0aDtpZigic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIHRoaXMucHVzaFN0YWNrKG0oYSkuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKGI9MDtlPmI7YisrKWlmKG0uY29udGFpbnMoZFtiXSx0aGlzKSlyZXR1cm4hMH0pKTtmb3IoYj0wO2U+YjtiKyspbS5maW5kKGEsZFtiXSxjKTtyZXR1cm4gYz10aGlzLnB1c2hTdGFjayhlPjE/bS51bmlxdWUoYyk6YyksYy5zZWxlY3Rvcj10aGlzLnNlbGVjdG9yP3RoaXMuc2VsZWN0b3IrIiAiK2E6YSxjfSxmaWx0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHcodGhpcyxhfHxbXSwhMSkpfSxub3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHcodGhpcyxhfHxbXSwhMCkpfSxpczpmdW5jdGlvbihhKXtyZXR1cm4hIXcodGhpcywic3RyaW5nIj09dHlwZW9mIGEmJnQudGVzdChhKT9tKGEpOmF8fFtdLCExKS5sZW5ndGh9fSk7dmFyIHgseT1hLmRvY3VtZW50LHo9L14oPzpccyooPFtcd1xXXSs+KVtePl0qfCMoW1x3LV0qKSkkLyxBPW0uZm4uaW5pdD1mdW5jdGlvbihhLGIpe3ZhciBjLGQ7aWYoIWEpcmV0dXJuIHRoaXM7aWYoInN0cmluZyI9PXR5cGVvZiBhKXtpZihjPSI8Ij09PWEuY2hhckF0KDApJiYiPiI9PT1hLmNoYXJBdChhLmxlbmd0aC0xKSYmYS5sZW5ndGg+PTM/W251bGwsYSxudWxsXTp6LmV4ZWMoYSksIWN8fCFjWzFdJiZiKXJldHVybiFifHxiLmpxdWVyeT8oYnx8eCkuZmluZChhKTp0aGlzLmNvbnN0cnVjdG9yKGIpLmZpbmQoYSk7aWYoY1sxXSl7aWYoYj1iIGluc3RhbmNlb2YgbT9iWzBdOmIsbS5tZXJnZSh0aGlzLG0ucGFyc2VIVE1MKGNbMV0sYiYmYi5ub2RlVHlwZT9iLm93bmVyRG9jdW1lbnR8fGI6eSwhMCkpLHUudGVzdChjWzFdKSYmbS5pc1BsYWluT2JqZWN0KGIpKWZvcihjIGluIGIpbS5pc0Z1bmN0aW9uKHRoaXNbY10pP3RoaXNbY10oYltjXSk6dGhpcy5hdHRyKGMsYltjXSk7cmV0dXJuIHRoaXN9aWYoZD15LmdldEVsZW1lbnRCeUlkKGNbMl0pLGQmJmQucGFyZW50Tm9kZSl7aWYoZC5pZCE9PWNbMl0pcmV0dXJuIHguZmluZChhKTt0aGlzLmxlbmd0aD0xLHRoaXNbMF09ZH1yZXR1cm4gdGhpcy5jb250ZXh0PXksdGhpcy5zZWxlY3Rvcj1hLHRoaXN9cmV0dXJuIGEubm9kZVR5cGU/KHRoaXMuY29udGV4dD10aGlzWzBdPWEsdGhpcy5sZW5ndGg9MSx0aGlzKTptLmlzRnVuY3Rpb24oYSk/InVuZGVmaW5lZCIhPXR5cGVvZiB4LnJlYWR5P3gucmVhZHkoYSk6YShtKToodm9pZCAwIT09YS5zZWxlY3RvciYmKHRoaXMuc2VsZWN0b3I9YS5zZWxlY3Rvcix0aGlzLmNvbnRleHQ9YS5jb250ZXh0KSxtLm1ha2VBcnJheShhLHRoaXMpKX07QS5wcm90b3R5cGU9bS5mbix4PW0oeSk7dmFyIEI9L14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sQz17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTttLmV4dGVuZCh7ZGlyOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlPWFbYl07d2hpbGUoZSYmOSE9PWUubm9kZVR5cGUmJih2b2lkIDA9PT1jfHwxIT09ZS5ub2RlVHlwZXx8IW0oZSkuaXMoYykpKTE9PT1lLm5vZGVUeXBlJiZkLnB1c2goZSksZT1lW2JdO3JldHVybiBkfSxzaWJsaW5nOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPVtdO2E7YT1hLm5leHRTaWJsaW5nKTE9PT1hLm5vZGVUeXBlJiZhIT09YiYmYy5wdXNoKGEpO3JldHVybiBjfX0pLG0uZm4uZXh0ZW5kKHtoYXM6ZnVuY3Rpb24oYSl7dmFyIGIsYz1tKGEsdGhpcyksZD1jLmxlbmd0aDtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYj0wO2Q+YjtiKyspaWYobS5jb250YWlucyh0aGlzLGNbYl0pKXJldHVybiEwfSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGMsZD0wLGU9dGhpcy5sZW5ndGgsZj1bXSxnPXQudGVzdChhKXx8InN0cmluZyIhPXR5cGVvZiBhP20oYSxifHx0aGlzLmNvbnRleHQpOjA7ZT5kO2QrKylmb3IoYz10aGlzW2RdO2MmJmMhPT1iO2M9Yy5wYXJlbnROb2RlKWlmKGMubm9kZVR5cGU8MTEmJihnP2cuaW5kZXgoYyk+LTE6MT09PWMubm9kZVR5cGUmJm0uZmluZC5tYXRjaGVzU2VsZWN0b3IoYyxhKSkpe2YucHVzaChjKTticmVha31yZXR1cm4gdGhpcy5wdXNoU3RhY2soZi5sZW5ndGg+MT9tLnVuaXF1ZShmKTpmKX0saW5kZXg6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/InN0cmluZyI9PXR5cGVvZiBhP20uaW5BcnJheSh0aGlzWzBdLG0oYSkpOm0uaW5BcnJheShhLmpxdWVyeT9hWzBdOmEsdGhpcyk6dGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlP3RoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoOi0xfSxhZGQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sobS51bmlxdWUobS5tZXJnZSh0aGlzLmdldCgpLG0oYSxiKSkpKX0sYWRkQmFjazpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hZGQobnVsbD09YT90aGlzLnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihhKSl9fSk7ZnVuY3Rpb24gRChhLGIpe2RvIGE9YVtiXTt3aGlsZShhJiYxIT09YS5ub2RlVHlwZSk7cmV0dXJuIGF9bS5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO3JldHVybiBiJiYxMSE9PWIubm9kZVR5cGU/YjpudWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBtLmRpcihhLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG0uZGlyKGEsInBhcmVudE5vZGUiLGMpfSxuZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBEKGEsIm5leHRTaWJsaW5nIil9LHByZXY6ZnVuY3Rpb24oYSl7cmV0dXJuIEQoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIG0uZGlyKGEsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIG0uZGlyKGEsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBtLmRpcihhLCJuZXh0U2libGluZyIsYyl9LHByZXZVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG0uZGlyKGEsInByZXZpb3VzU2libGluZyIsYyl9LHNpYmxpbmdzOmZ1bmN0aW9uKGEpe3JldHVybiBtLnNpYmxpbmcoKGEucGFyZW50Tm9kZXx8e30pLmZpcnN0Q2hpbGQsYSl9LGNoaWxkcmVuOmZ1bmN0aW9uKGEpe3JldHVybiBtLnNpYmxpbmcoYS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIG0ubm9kZU5hbWUoYSwiaWZyYW1lIik/YS5jb250ZW50RG9jdW1lbnR8fGEuY29udGVudFdpbmRvdy5kb2N1bWVudDptLm1lcmdlKFtdLGEuY2hpbGROb2Rlcyl9fSxmdW5jdGlvbihhLGIpe20uZm5bYV09ZnVuY3Rpb24oYyxkKXt2YXIgZT1tLm1hcCh0aGlzLGIsYyk7cmV0dXJuIlVudGlsIiE9PWEuc2xpY2UoLTUpJiYoZD1jKSxkJiYic3RyaW5nIj09dHlwZW9mIGQmJihlPW0uZmlsdGVyKGQsZSkpLHRoaXMubGVuZ3RoPjEmJihDW2FdfHwoZT1tLnVuaXF1ZShlKSksQi50ZXN0KGEpJiYoZT1lLnJldmVyc2UoKSkpLHRoaXMucHVzaFN0YWNrKGUpfX0pO3ZhciBFPS9cUysvZyxGPXt9O2Z1bmN0aW9uIEcoYSl7dmFyIGI9RlthXT17fTtyZXR1cm4gbS5lYWNoKGEubWF0Y2goRSl8fFtdLGZ1bmN0aW9uKGEsYyl7YltjXT0hMH0pLGJ9bS5DYWxsYmFja3M9ZnVuY3Rpb24oYSl7YT0ic3RyaW5nIj09dHlwZW9mIGE/RlthXXx8RyhhKTptLmV4dGVuZCh7fSxhKTt2YXIgYixjLGQsZSxmLGcsaD1bXSxpPSFhLm9uY2UmJltdLGo9ZnVuY3Rpb24obCl7Zm9yKGM9YS5tZW1vcnkmJmwsZD0hMCxmPWd8fDAsZz0wLGU9aC5sZW5ndGgsYj0hMDtoJiZlPmY7ZisrKWlmKGhbZl0uYXBwbHkobFswXSxsWzFdKT09PSExJiZhLnN0b3BPbkZhbHNlKXtjPSExO2JyZWFrfWI9ITEsaCYmKGk/aS5sZW5ndGgmJmooaS5zaGlmdCgpKTpjP2g9W106ay5kaXNhYmxlKCkpfSxrPXthZGQ6ZnVuY3Rpb24oKXtpZihoKXt2YXIgZD1oLmxlbmd0aDshZnVuY3Rpb24gZihiKXttLmVhY2goYixmdW5jdGlvbihiLGMpe3ZhciBkPW0udHlwZShjKTsiZnVuY3Rpb24iPT09ZD9hLnVuaXF1ZSYmay5oYXMoYyl8fGgucHVzaChjKTpjJiZjLmxlbmd0aCYmInN0cmluZyIhPT1kJiZmKGMpfSl9KGFyZ3VtZW50cyksYj9lPWgubGVuZ3RoOmMmJihnPWQsaihjKSl9cmV0dXJuIHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiBoJiZtLmVhY2goYXJndW1lbnRzLGZ1bmN0aW9uKGEsYyl7dmFyIGQ7d2hpbGUoKGQ9bS5pbkFycmF5KGMsaCxkKSk+LTEpaC5zcGxpY2UoZCwxKSxiJiYoZT49ZCYmZS0tLGY+PWQmJmYtLSl9KSx0aGlzfSxoYXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/bS5pbkFycmF5KGEsaCk+LTE6ISghaHx8IWgubGVuZ3RoKX0sZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gaD1bXSxlPTAsdGhpc30sZGlzYWJsZTpmdW5jdGlvbigpe3JldHVybiBoPWk9Yz12b2lkIDAsdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4haH0sbG9jazpmdW5jdGlvbigpe3JldHVybiBpPXZvaWQgMCxjfHxrLmRpc2FibGUoKSx0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4haX0sZmlyZVdpdGg6ZnVuY3Rpb24oYSxjKXtyZXR1cm4haHx8ZCYmIWl8fChjPWN8fFtdLGM9W2EsYy5zbGljZT9jLnNsaWNlKCk6Y10sYj9pLnB1c2goYyk6aihjKSksdGhpc30sZmlyZTpmdW5jdGlvbigpe3JldHVybiBrLmZpcmVXaXRoKHRoaXMsYXJndW1lbnRzKSx0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhZH19O3JldHVybiBrfSxtLmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9W1sicmVzb2x2ZSIsImRvbmUiLG0uQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCJyZXNvbHZlZCJdLFsicmVqZWN0IiwiZmFpbCIsbS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksInJlamVjdGVkIl0sWyJub3RpZnkiLCJwcm9ncmVzcyIsbS5DYWxsYmFja3MoIm1lbW9yeSIpXV0sYz0icGVuZGluZyIsZD17c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gY30sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIGUuZG9uZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSx0aGlzfSx0aGVuOmZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzO3JldHVybiBtLkRlZmVycmVkKGZ1bmN0aW9uKGMpe20uZWFjaChiLGZ1bmN0aW9uKGIsZil7dmFyIGc9bS5pc0Z1bmN0aW9uKGFbYl0pJiZhW2JdO2VbZlsxXV0oZnVuY3Rpb24oKXt2YXIgYT1nJiZnLmFwcGx5KHRoaXMsYXJndW1lbnRzKTthJiZtLmlzRnVuY3Rpb24oYS5wcm9taXNlKT9hLnByb21pc2UoKS5kb25lKGMucmVzb2x2ZSkuZmFpbChjLnJlamVjdCkucHJvZ3Jlc3MoYy5ub3RpZnkpOmNbZlswXSsiV2l0aCJdKHRoaXM9PT1kP2MucHJvbWlzZSgpOnRoaXMsZz9bYV06YXJndW1lbnRzKX0pfSksYT1udWxsfSkucHJvbWlzZSgpfSxwcm9taXNlOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hP20uZXh0ZW5kKGEsZCk6ZH19LGU9e307cmV0dXJuIGQucGlwZT1kLnRoZW4sbS5lYWNoKGIsZnVuY3Rpb24oYSxmKXt2YXIgZz1mWzJdLGg9ZlszXTtkW2ZbMV1dPWcuYWRkLGgmJmcuYWRkKGZ1bmN0aW9uKCl7Yz1ofSxiWzFeYV1bMl0uZGlzYWJsZSxiWzJdWzJdLmxvY2spLGVbZlswXV09ZnVuY3Rpb24oKXtyZXR1cm4gZVtmWzBdKyJXaXRoIl0odGhpcz09PWU/ZDp0aGlzLGFyZ3VtZW50cyksdGhpc30sZVtmWzBdKyJXaXRoIl09Zy5maXJlV2l0aH0pLGQucHJvbWlzZShlKSxhJiZhLmNhbGwoZSxlKSxlfSx3aGVuOmZ1bmN0aW9uKGEpe3ZhciBiPTAsYz1kLmNhbGwoYXJndW1lbnRzKSxlPWMubGVuZ3RoLGY9MSE9PWV8fGEmJm0uaXNGdW5jdGlvbihhLnByb21pc2UpP2U6MCxnPTE9PT1mP2E6bS5EZWZlcnJlZCgpLGg9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmdW5jdGlvbihlKXtiW2FdPXRoaXMsY1thXT1hcmd1bWVudHMubGVuZ3RoPjE/ZC5jYWxsKGFyZ3VtZW50cyk6ZSxjPT09aT9nLm5vdGlmeVdpdGgoYixjKTotLWZ8fGcucmVzb2x2ZVdpdGgoYixjKX19LGksaixrO2lmKGU+MSlmb3IoaT1uZXcgQXJyYXkoZSksaj1uZXcgQXJyYXkoZSksaz1uZXcgQXJyYXkoZSk7ZT5iO2IrKyljW2JdJiZtLmlzRnVuY3Rpb24oY1tiXS5wcm9taXNlKT9jW2JdLnByb21pc2UoKS5kb25lKGgoYixrLGMpKS5mYWlsKGcucmVqZWN0KS5wcm9ncmVzcyhoKGIsaixpKSk6LS1mO3JldHVybiBmfHxnLnJlc29sdmVXaXRoKGssYyksZy5wcm9taXNlKCl9fSk7dmFyIEg7bS5mbi5yZWFkeT1mdW5jdGlvbihhKXtyZXR1cm4gbS5yZWFkeS5wcm9taXNlKCkuZG9uZShhKSx0aGlzfSxtLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxob2xkUmVhZHk6ZnVuY3Rpb24oYSl7YT9tLnJlYWR5V2FpdCsrOm0ucmVhZHkoITApfSxyZWFkeTpmdW5jdGlvbihhKXtpZihhPT09ITA/IS0tbS5yZWFkeVdhaXQ6IW0uaXNSZWFkeSl7aWYoIXkuYm9keSlyZXR1cm4gc2V0VGltZW91dChtLnJlYWR5KTttLmlzUmVhZHk9ITAsYSE9PSEwJiYtLW0ucmVhZHlXYWl0PjB8fChILnJlc29sdmVXaXRoKHksW21dKSxtLmZuLnRyaWdnZXJIYW5kbGVyJiYobSh5KS50cmlnZ2VySGFuZGxlcigicmVhZHkiKSxtKHkpLm9mZigicmVhZHkiKSkpfX19KTtmdW5jdGlvbiBJKCl7eS5hZGRFdmVudExpc3RlbmVyPyh5LnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLEosITEpLGEucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsSiwhMSkpOih5LmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLEopLGEuZGV0YWNoRXZlbnQoIm9ubG9hZCIsSikpfWZ1bmN0aW9uIEooKXsoeS5hZGRFdmVudExpc3RlbmVyfHwibG9hZCI9PT1ldmVudC50eXBlfHwiY29tcGxldGUiPT09eS5yZWFkeVN0YXRlKSYmKEkoKSxtLnJlYWR5KCkpfW0ucmVhZHkucHJvbWlzZT1mdW5jdGlvbihiKXtpZighSClpZihIPW0uRGVmZXJyZWQoKSwiY29tcGxldGUiPT09eS5yZWFkeVN0YXRlKXNldFRpbWVvdXQobS5yZWFkeSk7ZWxzZSBpZih5LmFkZEV2ZW50TGlzdGVuZXIpeS5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixKLCExKSxhLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLEosITEpO2Vsc2V7eS5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixKKSxhLmF0dGFjaEV2ZW50KCJvbmxvYWQiLEopO3ZhciBjPSExO3RyeXtjPW51bGw9PWEuZnJhbWVFbGVtZW50JiZ5LmRvY3VtZW50RWxlbWVudH1jYXRjaChkKXt9YyYmYy5kb1Njcm9sbCYmIWZ1bmN0aW9uIGUoKXtpZighbS5pc1JlYWR5KXt0cnl7Yy5kb1Njcm9sbCgibGVmdCIpfWNhdGNoKGEpe3JldHVybiBzZXRUaW1lb3V0KGUsNTApfUkoKSxtLnJlYWR5KCl9fSgpfXJldHVybiBILnByb21pc2UoYil9O3ZhciBLPSJ1bmRlZmluZWQiLEw7Zm9yKEwgaW4gbShrKSlicmVhaztrLm93bkxhc3Q9IjAiIT09TCxrLmlubGluZUJsb2NrTmVlZHNMYXlvdXQ9ITEsbShmdW5jdGlvbigpe3ZhciBhLGIsYyxkO2M9eS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdLGMmJmMuc3R5bGUmJihiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksZD15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOjA7d2lkdGg6MDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHgiLGMuYXBwZW5kQ2hpbGQoZCkuYXBwZW5kQ2hpbGQoYiksdHlwZW9mIGIuc3R5bGUuem9vbSE9PUsmJihiLnN0eWxlLmNzc1RleHQ9ImRpc3BsYXk6aW5saW5lO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MXB4O3dpZHRoOjFweDt6b29tOjEiLGsuaW5saW5lQmxvY2tOZWVkc0xheW91dD1hPTM9PT1iLm9mZnNldFdpZHRoLGEmJihjLnN0eWxlLnpvb209MSkpLGMucmVtb3ZlQ2hpbGQoZCkpfSksZnVuY3Rpb24oKXt2YXIgYT15LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2lmKG51bGw9PWsuZGVsZXRlRXhwYW5kbyl7ay5kZWxldGVFeHBhbmRvPSEwO3RyeXtkZWxldGUgYS50ZXN0fWNhdGNoKGIpe2suZGVsZXRlRXhwYW5kbz0hMX19YT1udWxsfSgpLG0uYWNjZXB0RGF0YT1mdW5jdGlvbihhKXt2YXIgYj1tLm5vRGF0YVsoYS5ub2RlTmFtZSsiICIpLnRvTG93ZXJDYXNlKCldLGM9K2Eubm9kZVR5cGV8fDE7cmV0dXJuIDEhPT1jJiY5IT09Yz8hMTohYnx8YiE9PSEwJiZhLmdldEF0dHJpYnV0ZSgiY2xhc3NpZCIpPT09Yn07dmFyIE09L14oPzpce1tcd1xXXSpcfXxcW1tcd1xXXSpcXSkkLyxOPS8oW0EtWl0pL2c7ZnVuY3Rpb24gTyhhLGIsYyl7aWYodm9pZCAwPT09YyYmMT09PWEubm9kZVR5cGUpe3ZhciBkPSJkYXRhLSIrYi5yZXBsYWNlKE4sIi0kMSIpLnRvTG93ZXJDYXNlKCk7aWYoYz1hLmdldEF0dHJpYnV0ZShkKSwic3RyaW5nIj09dHlwZW9mIGMpe3RyeXtjPSJ0cnVlIj09PWM/ITA6ImZhbHNlIj09PWM/ITE6Im51bGwiPT09Yz9udWxsOitjKyIiPT09Yz8rYzpNLnRlc3QoYyk/bS5wYXJzZUpTT04oYyk6Y31jYXRjaChlKXt9bS5kYXRhKGEsYixjKX1lbHNlIGM9dm9pZCAwfXJldHVybiBjfWZ1bmN0aW9uIFAoYSl7dmFyIGI7Zm9yKGIgaW4gYSlpZigoImRhdGEiIT09Ynx8IW0uaXNFbXB0eU9iamVjdChhW2JdKSkmJiJ0b0pTT04iIT09YilyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBRKGEsYixkLGUpe2lmKG0uYWNjZXB0RGF0YShhKSl7dmFyIGYsZyxoPW0uZXhwYW5kbyxpPWEubm9kZVR5cGUsaj1pP20uY2FjaGU6YSxrPWk/YVtoXTphW2hdJiZoOwppZihrJiZqW2tdJiYoZXx8altrXS5kYXRhKXx8dm9pZCAwIT09ZHx8InN0cmluZyIhPXR5cGVvZiBiKXJldHVybiBrfHwoaz1pP2FbaF09Yy5wb3AoKXx8bS5ndWlkKys6aCksaltrXXx8KGpba109aT97fTp7dG9KU09OOm0ubm9vcH0pLCgib2JqZWN0Ij09dHlwZW9mIGJ8fCJmdW5jdGlvbiI9PXR5cGVvZiBiKSYmKGU/altrXT1tLmV4dGVuZChqW2tdLGIpOmpba10uZGF0YT1tLmV4dGVuZChqW2tdLmRhdGEsYikpLGc9altrXSxlfHwoZy5kYXRhfHwoZy5kYXRhPXt9KSxnPWcuZGF0YSksdm9pZCAwIT09ZCYmKGdbbS5jYW1lbENhc2UoYildPWQpLCJzdHJpbmciPT10eXBlb2YgYj8oZj1nW2JdLG51bGw9PWYmJihmPWdbbS5jYW1lbENhc2UoYildKSk6Zj1nLGZ9fWZ1bmN0aW9uIFIoYSxiLGMpe2lmKG0uYWNjZXB0RGF0YShhKSl7dmFyIGQsZSxmPWEubm9kZVR5cGUsZz1mP20uY2FjaGU6YSxoPWY/YVttLmV4cGFuZG9dOm0uZXhwYW5kbztpZihnW2hdKXtpZihiJiYoZD1jP2dbaF06Z1toXS5kYXRhKSl7bS5pc0FycmF5KGIpP2I9Yi5jb25jYXQobS5tYXAoYixtLmNhbWVsQ2FzZSkpOmIgaW4gZD9iPVtiXTooYj1tLmNhbWVsQ2FzZShiKSxiPWIgaW4gZD9bYl06Yi5zcGxpdCgiICIpKSxlPWIubGVuZ3RoO3doaWxlKGUtLSlkZWxldGUgZFtiW2VdXTtpZihjPyFQKGQpOiFtLmlzRW1wdHlPYmplY3QoZCkpcmV0dXJufShjfHwoZGVsZXRlIGdbaF0uZGF0YSxQKGdbaF0pKSkmJihmP20uY2xlYW5EYXRhKFthXSwhMCk6ay5kZWxldGVFeHBhbmRvfHxnIT1nLndpbmRvdz9kZWxldGUgZ1toXTpnW2hdPW51bGwpfX19bS5leHRlbmQoe2NhY2hlOnt9LG5vRGF0YTp7ImFwcGxldCAiOiEwLCJlbWJlZCAiOiEwLCJvYmplY3QgIjoiY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIn0saGFzRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gYT1hLm5vZGVUeXBlP20uY2FjaGVbYVttLmV4cGFuZG9dXTphW20uZXhwYW5kb10sISFhJiYhUChhKX0sZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIFEoYSxiLGMpfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFIoYSxiKX0sX2RhdGE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBRKGEsYixjLCEwKX0sX3JlbW92ZURhdGE6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gUihhLGIsITApfX0pLG0uZm4uZXh0ZW5kKHtkYXRhOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9dGhpc1swXSxnPWYmJmYuYXR0cmlidXRlcztpZih2b2lkIDA9PT1hKXtpZih0aGlzLmxlbmd0aCYmKGU9bS5kYXRhKGYpLDE9PT1mLm5vZGVUeXBlJiYhbS5fZGF0YShmLCJwYXJzZWRBdHRycyIpKSl7Yz1nLmxlbmd0aDt3aGlsZShjLS0pZ1tjXSYmKGQ9Z1tjXS5uYW1lLDA9PT1kLmluZGV4T2YoImRhdGEtIikmJihkPW0uY2FtZWxDYXNlKGQuc2xpY2UoNSkpLE8oZixkLGVbZF0pKSk7bS5fZGF0YShmLCJwYXJzZWRBdHRycyIsITApfXJldHVybiBlfXJldHVybiJvYmplY3QiPT10eXBlb2YgYT90aGlzLmVhY2goZnVuY3Rpb24oKXttLmRhdGEodGhpcyxhKX0pOmFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goZnVuY3Rpb24oKXttLmRhdGEodGhpcyxhLGIpfSk6Zj9PKGYsYSxtLmRhdGEoZixhKSk6dm9pZCAwfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXttLnJlbW92ZURhdGEodGhpcyxhKX0pfX0pLG0uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGE/KGI9KGJ8fCJmeCIpKyJxdWV1ZSIsZD1tLl9kYXRhKGEsYiksYyYmKCFkfHxtLmlzQXJyYXkoYyk/ZD1tLl9kYXRhKGEsYixtLm1ha2VBcnJheShjKSk6ZC5wdXNoKGMpKSxkfHxbXSk6dm9pZCAwfSxkZXF1ZXVlOmZ1bmN0aW9uKGEsYil7Yj1ifHwiZngiO3ZhciBjPW0ucXVldWUoYSxiKSxkPWMubGVuZ3RoLGU9Yy5zaGlmdCgpLGY9bS5fcXVldWVIb29rcyhhLGIpLGc9ZnVuY3Rpb24oKXttLmRlcXVldWUoYSxiKX07ImlucHJvZ3Jlc3MiPT09ZSYmKGU9Yy5zaGlmdCgpLGQtLSksZSYmKCJmeCI9PT1iJiZjLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxkZWxldGUgZi5zdG9wLGUuY2FsbChhLGcsZikpLCFkJiZmJiZmLmVtcHR5LmZpcmUoKX0sX3F1ZXVlSG9va3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iKyJxdWV1ZUhvb2tzIjtyZXR1cm4gbS5fZGF0YShhLGMpfHxtLl9kYXRhKGEsYyx7ZW1wdHk6bS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7bS5fcmVtb3ZlRGF0YShhLGIrInF1ZXVlIiksbS5fcmVtb3ZlRGF0YShhLGMpfSl9KX19KSxtLmZuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oYSxiKXt2YXIgYz0yO3JldHVybiJzdHJpbmciIT10eXBlb2YgYSYmKGI9YSxhPSJmeCIsYy0tKSxhcmd1bWVudHMubGVuZ3RoPGM/bS5xdWV1ZSh0aGlzWzBdLGEpOnZvaWQgMD09PWI/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1tLnF1ZXVlKHRoaXMsYSxiKTttLl9xdWV1ZUhvb2tzKHRoaXMsYSksImZ4Ij09PWEmJiJpbnByb2dyZXNzIiE9PWNbMF0mJm0uZGVxdWV1ZSh0aGlzLGEpfSl9LGRlcXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe20uZGVxdWV1ZSh0aGlzLGEpfSl9LGNsZWFyUXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucXVldWUoYXx8ImZ4IixbXSl9LHByb21pc2U6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPTEsZT1tLkRlZmVycmVkKCksZj10aGlzLGc9dGhpcy5sZW5ndGgsaD1mdW5jdGlvbigpey0tZHx8ZS5yZXNvbHZlV2l0aChmLFtmXSl9OyJzdHJpbmciIT10eXBlb2YgYSYmKGI9YSxhPXZvaWQgMCksYT1hfHwiZngiO3doaWxlKGctLSljPW0uX2RhdGEoZltnXSxhKyJxdWV1ZUhvb2tzIiksYyYmYy5lbXB0eSYmKGQrKyxjLmVtcHR5LmFkZChoKSk7cmV0dXJuIGgoKSxlLnByb21pc2UoYil9fSk7dmFyIFM9L1srLV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsVD1bIlRvcCIsIlJpZ2h0IiwiQm90dG9tIiwiTGVmdCJdLFU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1ifHxhLCJub25lIj09PW0uY3NzKGEsImRpc3BsYXkiKXx8IW0uY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpfSxWPW0uYWNjZXNzPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3ZhciBoPTAsaT1hLmxlbmd0aCxqPW51bGw9PWM7aWYoIm9iamVjdCI9PT1tLnR5cGUoYykpe2U9ITA7Zm9yKGggaW4gYyltLmFjY2VzcyhhLGIsaCxjW2hdLCEwLGYsZyl9ZWxzZSBpZih2b2lkIDAhPT1kJiYoZT0hMCxtLmlzRnVuY3Rpb24oZCl8fChnPSEwKSxqJiYoZz8oYi5jYWxsKGEsZCksYj1udWxsKTooaj1iLGI9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBqLmNhbGwobShhKSxjKX0pKSxiKSlmb3IoO2k+aDtoKyspYihhW2hdLGMsZz9kOmQuY2FsbChhW2hdLGgsYihhW2hdLGMpKSk7cmV0dXJuIGU/YTpqP2IuY2FsbChhKTppP2IoYVswXSxjKTpmfSxXPS9eKD86Y2hlY2tib3h8cmFkaW8pJC9pOyFmdW5jdGlvbigpe3ZhciBhPXkuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksYz15LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihiLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixrLmxlYWRpbmdXaGl0ZXNwYWNlPTM9PT1iLmZpcnN0Q2hpbGQubm9kZVR5cGUsay50Ym9keT0hYi5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKS5sZW5ndGgsay5odG1sU2VyaWFsaXplPSEhYi5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCxrLmh0bWw1Q2xvbmU9Ijw6bmF2PjwvOm5hdj4iIT09eS5jcmVhdGVFbGVtZW50KCJuYXYiKS5jbG9uZU5vZGUoITApLm91dGVySFRNTCxhLnR5cGU9ImNoZWNrYm94IixhLmNoZWNrZWQ9ITAsYy5hcHBlbmRDaGlsZChhKSxrLmFwcGVuZENoZWNrZWQ9YS5jaGVja2VkLGIuaW5uZXJIVE1MPSI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+IixrLm5vQ2xvbmVDaGVja2VkPSEhYi5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdWUsYy5hcHBlbmRDaGlsZChiKSxiLmlubmVySFRNTD0iPGlucHV0IHR5cGU9J3JhZGlvJyBjaGVja2VkPSdjaGVja2VkJyBuYW1lPSd0Jy8+IixrLmNoZWNrQ2xvbmU9Yi5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsay5ub0Nsb25lRXZlbnQ9ITAsYi5hdHRhY2hFdmVudCYmKGIuYXR0YWNoRXZlbnQoIm9uY2xpY2siLGZ1bmN0aW9uKCl7ay5ub0Nsb25lRXZlbnQ9ITF9KSxiLmNsb25lTm9kZSghMCkuY2xpY2soKSksbnVsbD09ay5kZWxldGVFeHBhbmRvKXtrLmRlbGV0ZUV4cGFuZG89ITA7dHJ5e2RlbGV0ZSBiLnRlc3R9Y2F0Y2goZCl7ay5kZWxldGVFeHBhbmRvPSExfX19KCksZnVuY3Rpb24oKXt2YXIgYixjLGQ9eS5jcmVhdGVFbGVtZW50KCJkaXYiKTtmb3IoYiBpbntzdWJtaXQ6ITAsY2hhbmdlOiEwLGZvY3VzaW46ITB9KWM9Im9uIitiLChrW2IrIkJ1YmJsZXMiXT1jIGluIGEpfHwoZC5zZXRBdHRyaWJ1dGUoYywidCIpLGtbYisiQnViYmxlcyJdPWQuYXR0cmlidXRlc1tjXS5leHBhbmRvPT09ITEpO2Q9bnVsbH0oKTt2YXIgWD0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYSkkL2ksWT0vXmtleS8sWj0vXig/Om1vdXNlfHBvaW50ZXJ8Y29udGV4dG1lbnUpfGNsaWNrLywkPS9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLyxfPS9eKFteLl0qKSg/OlwuKC4rKXwpJC87ZnVuY3Rpb24gYWIoKXtyZXR1cm4hMH1mdW5jdGlvbiBiYigpe3JldHVybiExfWZ1bmN0aW9uIGNiKCl7dHJ5e3JldHVybiB5LmFjdGl2ZUVsZW1lbnR9Y2F0Y2goYSl7fX1tLmV2ZW50PXtnbG9iYWw6e30sYWRkOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbixvLHAscSxyPW0uX2RhdGEoYSk7aWYocil7Yy5oYW5kbGVyJiYoaT1jLGM9aS5oYW5kbGVyLGU9aS5zZWxlY3RvciksYy5ndWlkfHwoYy5ndWlkPW0uZ3VpZCsrKSwoZz1yLmV2ZW50cyl8fChnPXIuZXZlbnRzPXt9KSwoaz1yLmhhbmRsZSl8fChrPXIuaGFuZGxlPWZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgbT09PUt8fGEmJm0uZXZlbnQudHJpZ2dlcmVkPT09YS50eXBlP3ZvaWQgMDptLmV2ZW50LmRpc3BhdGNoLmFwcGx5KGsuZWxlbSxhcmd1bWVudHMpfSxrLmVsZW09YSksYj0oYnx8IiIpLm1hdGNoKEUpfHxbIiJdLGg9Yi5sZW5ndGg7d2hpbGUoaC0tKWY9Xy5leGVjKGJbaF0pfHxbXSxvPXE9ZlsxXSxwPShmWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksbyYmKGo9bS5ldmVudC5zcGVjaWFsW29dfHx7fSxvPShlP2ouZGVsZWdhdGVUeXBlOmouYmluZFR5cGUpfHxvLGo9bS5ldmVudC5zcGVjaWFsW29dfHx7fSxsPW0uZXh0ZW5kKHt0eXBlOm8sb3JpZ1R5cGU6cSxkYXRhOmQsaGFuZGxlcjpjLGd1aWQ6Yy5ndWlkLHNlbGVjdG9yOmUsbmVlZHNDb250ZXh0OmUmJm0uZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdChlKSxuYW1lc3BhY2U6cC5qb2luKCIuIil9LGkpLChuPWdbb10pfHwobj1nW29dPVtdLG4uZGVsZWdhdGVDb3VudD0wLGouc2V0dXAmJmouc2V0dXAuY2FsbChhLGQscCxrKSE9PSExfHwoYS5hZGRFdmVudExpc3RlbmVyP2EuYWRkRXZlbnRMaXN0ZW5lcihvLGssITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9uIitvLGspKSksai5hZGQmJihqLmFkZC5jYWxsKGEsbCksbC5oYW5kbGVyLmd1aWR8fChsLmhhbmRsZXIuZ3VpZD1jLmd1aWQpKSxlP24uc3BsaWNlKG4uZGVsZWdhdGVDb3VudCsrLDAsbCk6bi5wdXNoKGwpLG0uZXZlbnQuZ2xvYmFsW29dPSEwKTthPW51bGx9fSxyZW1vdmU6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZixnLGgsaSxqLGssbCxuLG8scCxxLHI9bS5oYXNEYXRhKGEpJiZtLl9kYXRhKGEpO2lmKHImJihrPXIuZXZlbnRzKSl7Yj0oYnx8IiIpLm1hdGNoKEUpfHxbIiJdLGo9Yi5sZW5ndGg7d2hpbGUoai0tKWlmKGg9Xy5leGVjKGJbal0pfHxbXSxvPXE9aFsxXSxwPShoWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksbyl7bD1tLmV2ZW50LnNwZWNpYWxbb118fHt9LG89KGQ/bC5kZWxlZ2F0ZVR5cGU6bC5iaW5kVHlwZSl8fG8sbj1rW29dfHxbXSxoPWhbMl0mJm5ldyBSZWdFeHAoIihefFxcLikiK3Auam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksaT1mPW4ubGVuZ3RoO3doaWxlKGYtLSlnPW5bZl0sIWUmJnEhPT1nLm9yaWdUeXBlfHxjJiZjLmd1aWQhPT1nLmd1aWR8fGgmJiFoLnRlc3QoZy5uYW1lc3BhY2UpfHxkJiZkIT09Zy5zZWxlY3RvciYmKCIqKiIhPT1kfHwhZy5zZWxlY3Rvcil8fChuLnNwbGljZShmLDEpLGcuc2VsZWN0b3ImJm4uZGVsZWdhdGVDb3VudC0tLGwucmVtb3ZlJiZsLnJlbW92ZS5jYWxsKGEsZykpO2kmJiFuLmxlbmd0aCYmKGwudGVhcmRvd24mJmwudGVhcmRvd24uY2FsbChhLHAsci5oYW5kbGUpIT09ITF8fG0ucmVtb3ZlRXZlbnQoYSxvLHIuaGFuZGxlKSxkZWxldGUga1tvXSl9ZWxzZSBmb3IobyBpbiBrKW0uZXZlbnQucmVtb3ZlKGEsbytiW2pdLGMsZCwhMCk7bS5pc0VtcHR5T2JqZWN0KGspJiYoZGVsZXRlIHIuaGFuZGxlLG0uX3JlbW92ZURhdGEoYSwiZXZlbnRzIikpfX0sdHJpZ2dlcjpmdW5jdGlvbihiLGMsZCxlKXt2YXIgZixnLGgsaSxrLGwsbixvPVtkfHx5XSxwPWouY2FsbChiLCJ0eXBlIik/Yi50eXBlOmIscT1qLmNhbGwoYiwibmFtZXNwYWNlIik/Yi5uYW1lc3BhY2Uuc3BsaXQoIi4iKTpbXTtpZihoPWw9ZD1kfHx5LDMhPT1kLm5vZGVUeXBlJiY4IT09ZC5ub2RlVHlwZSYmISQudGVzdChwK20uZXZlbnQudHJpZ2dlcmVkKSYmKHAuaW5kZXhPZigiLiIpPj0wJiYocT1wLnNwbGl0KCIuIikscD1xLnNoaWZ0KCkscS5zb3J0KCkpLGc9cC5pbmRleE9mKCI6Iik8MCYmIm9uIitwLGI9YlttLmV4cGFuZG9dP2I6bmV3IG0uRXZlbnQocCwib2JqZWN0Ij09dHlwZW9mIGImJmIpLGIuaXNUcmlnZ2VyPWU/MjozLGIubmFtZXNwYWNlPXEuam9pbigiLiIpLGIubmFtZXNwYWNlX3JlPWIubmFtZXNwYWNlP25ldyBSZWdFeHAoIihefFxcLikiK3Euam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik6bnVsbCxiLnJlc3VsdD12b2lkIDAsYi50YXJnZXR8fChiLnRhcmdldD1kKSxjPW51bGw9PWM/W2JdOm0ubWFrZUFycmF5KGMsW2JdKSxrPW0uZXZlbnQuc3BlY2lhbFtwXXx8e30sZXx8IWsudHJpZ2dlcnx8ay50cmlnZ2VyLmFwcGx5KGQsYykhPT0hMSkpe2lmKCFlJiYhay5ub0J1YmJsZSYmIW0uaXNXaW5kb3coZCkpe2ZvcihpPWsuZGVsZWdhdGVUeXBlfHxwLCQudGVzdChpK3ApfHwoaD1oLnBhcmVudE5vZGUpO2g7aD1oLnBhcmVudE5vZGUpby5wdXNoKGgpLGw9aDtsPT09KGQub3duZXJEb2N1bWVudHx8eSkmJm8ucHVzaChsLmRlZmF1bHRWaWV3fHxsLnBhcmVudFdpbmRvd3x8YSl9bj0wO3doaWxlKChoPW9bbisrXSkmJiFiLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpYi50eXBlPW4+MT9pOmsuYmluZFR5cGV8fHAsZj0obS5fZGF0YShoLCJldmVudHMiKXx8e30pW2IudHlwZV0mJm0uX2RhdGEoaCwiaGFuZGxlIiksZiYmZi5hcHBseShoLGMpLGY9ZyYmaFtnXSxmJiZmLmFwcGx5JiZtLmFjY2VwdERhdGEoaCkmJihiLnJlc3VsdD1mLmFwcGx5KGgsYyksYi5yZXN1bHQ9PT0hMSYmYi5wcmV2ZW50RGVmYXVsdCgpKTtpZihiLnR5cGU9cCwhZSYmIWIuaXNEZWZhdWx0UHJldmVudGVkKCkmJighay5fZGVmYXVsdHx8ay5fZGVmYXVsdC5hcHBseShvLnBvcCgpLGMpPT09ITEpJiZtLmFjY2VwdERhdGEoZCkmJmcmJmRbcF0mJiFtLmlzV2luZG93KGQpKXtsPWRbZ10sbCYmKGRbZ109bnVsbCksbS5ldmVudC50cmlnZ2VyZWQ9cDt0cnl7ZFtwXSgpfWNhdGNoKHIpe31tLmV2ZW50LnRyaWdnZXJlZD12b2lkIDAsbCYmKGRbZ109bCl9cmV0dXJuIGIucmVzdWx0fX0sZGlzcGF0Y2g6ZnVuY3Rpb24oYSl7YT1tLmV2ZW50LmZpeChhKTt2YXIgYixjLGUsZixnLGg9W10saT1kLmNhbGwoYXJndW1lbnRzKSxqPShtLl9kYXRhKHRoaXMsImV2ZW50cyIpfHx7fSlbYS50eXBlXXx8W10saz1tLmV2ZW50LnNwZWNpYWxbYS50eXBlXXx8e307aWYoaVswXT1hLGEuZGVsZWdhdGVUYXJnZXQ9dGhpcywhay5wcmVEaXNwYXRjaHx8ay5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsYSkhPT0hMSl7aD1tLmV2ZW50LmhhbmRsZXJzLmNhbGwodGhpcyxhLGopLGI9MDt3aGlsZSgoZj1oW2IrK10pJiYhYS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKXthLmN1cnJlbnRUYXJnZXQ9Zi5lbGVtLGc9MDt3aGlsZSgoZT1mLmhhbmRsZXJzW2crK10pJiYhYS5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpKSghYS5uYW1lc3BhY2VfcmV8fGEubmFtZXNwYWNlX3JlLnRlc3QoZS5uYW1lc3BhY2UpKSYmKGEuaGFuZGxlT2JqPWUsYS5kYXRhPWUuZGF0YSxjPSgobS5ldmVudC5zcGVjaWFsW2Uub3JpZ1R5cGVdfHx7fSkuaGFuZGxlfHxlLmhhbmRsZXIpLmFwcGx5KGYuZWxlbSxpKSx2b2lkIDAhPT1jJiYoYS5yZXN1bHQ9Yyk9PT0hMSYmKGEucHJldmVudERlZmF1bHQoKSxhLnN0b3BQcm9wYWdhdGlvbigpKSl9cmV0dXJuIGsucG9zdERpc3BhdGNoJiZrLnBvc3REaXNwYXRjaC5jYWxsKHRoaXMsYSksYS5yZXN1bHR9fSxoYW5kbGVyczpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmLGc9W10saD1iLmRlbGVnYXRlQ291bnQsaT1hLnRhcmdldDtpZihoJiZpLm5vZGVUeXBlJiYoIWEuYnV0dG9ufHwiY2xpY2siIT09YS50eXBlKSlmb3IoO2khPXRoaXM7aT1pLnBhcmVudE5vZGV8fHRoaXMpaWYoMT09PWkubm9kZVR5cGUmJihpLmRpc2FibGVkIT09ITB8fCJjbGljayIhPT1hLnR5cGUpKXtmb3IoZT1bXSxmPTA7aD5mO2YrKylkPWJbZl0sYz1kLnNlbGVjdG9yKyIgIix2b2lkIDA9PT1lW2NdJiYoZVtjXT1kLm5lZWRzQ29udGV4dD9tKGMsdGhpcykuaW5kZXgoaSk+PTA6bS5maW5kKGMsdGhpcyxudWxsLFtpXSkubGVuZ3RoKSxlW2NdJiZlLnB1c2goZCk7ZS5sZW5ndGgmJmcucHVzaCh7ZWxlbTppLGhhbmRsZXJzOmV9KX1yZXR1cm4gaDxiLmxlbmd0aCYmZy5wdXNoKHtlbGVtOnRoaXMsaGFuZGxlcnM6Yi5zbGljZShoKX0pLGd9LGZpeDpmdW5jdGlvbihhKXtpZihhW20uZXhwYW5kb10pcmV0dXJuIGE7dmFyIGIsYyxkLGU9YS50eXBlLGY9YSxnPXRoaXMuZml4SG9va3NbZV07Z3x8KHRoaXMuZml4SG9va3NbZV09Zz1aLnRlc3QoZSk/dGhpcy5tb3VzZUhvb2tzOlkudGVzdChlKT90aGlzLmtleUhvb2tzOnt9KSxkPWcucHJvcHM/dGhpcy5wcm9wcy5jb25jYXQoZy5wcm9wcyk6dGhpcy5wcm9wcyxhPW5ldyBtLkV2ZW50KGYpLGI9ZC5sZW5ndGg7d2hpbGUoYi0tKWM9ZFtiXSxhW2NdPWZbY107cmV0dXJuIGEudGFyZ2V0fHwoYS50YXJnZXQ9Zi5zcmNFbGVtZW50fHx5KSwzPT09YS50YXJnZXQubm9kZVR5cGUmJihhLnRhcmdldD1hLnRhcmdldC5wYXJlbnROb2RlKSxhLm1ldGFLZXk9ISFhLm1ldGFLZXksZy5maWx0ZXI/Zy5maWx0ZXIoYSxmKTphfSxwcm9wczoiYWx0S2V5IGJ1YmJsZXMgY2FuY2VsYWJsZSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZXZlbnRQaGFzZSBtZXRhS2V5IHJlbGF0ZWRUYXJnZXQgc2hpZnRLZXkgdGFyZ2V0IHRpbWVTdGFtcCB2aWV3IHdoaWNoIi5zcGxpdCgiICIpLGZpeEhvb2tzOnt9LGtleUhvb2tzOntwcm9wczoiY2hhciBjaGFyQ29kZSBrZXkga2V5Q29kZSIuc3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbnVsbD09YS53aGljaCYmKGEud2hpY2g9bnVsbCE9Yi5jaGFyQ29kZT9iLmNoYXJDb2RlOmIua2V5Q29kZSksYX19LG1vdXNlSG9va3M6e3Byb3BzOiJidXR0b24gYnV0dG9ucyBjbGllbnRYIGNsaWVudFkgZnJvbUVsZW1lbnQgb2Zmc2V0WCBvZmZzZXRZIHBhZ2VYIHBhZ2VZIHNjcmVlblggc2NyZWVuWSB0b0VsZW1lbnQiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9Yi5idXR0b24sZz1iLmZyb21FbGVtZW50O3JldHVybiBudWxsPT1hLnBhZ2VYJiZudWxsIT1iLmNsaWVudFgmJihkPWEudGFyZ2V0Lm93bmVyRG9jdW1lbnR8fHksZT1kLmRvY3VtZW50RWxlbWVudCxjPWQuYm9keSxhLnBhZ2VYPWIuY2xpZW50WCsoZSYmZS5zY3JvbGxMZWZ0fHxjJiZjLnNjcm9sbExlZnR8fDApLShlJiZlLmNsaWVudExlZnR8fGMmJmMuY2xpZW50TGVmdHx8MCksYS5wYWdlWT1iLmNsaWVudFkrKGUmJmUuc2Nyb2xsVG9wfHxjJiZjLnNjcm9sbFRvcHx8MCktKGUmJmUuY2xpZW50VG9wfHxjJiZjLmNsaWVudFRvcHx8MCkpLCFhLnJlbGF0ZWRUYXJnZXQmJmcmJihhLnJlbGF0ZWRUYXJnZXQ9Zz09PWEudGFyZ2V0P2IudG9FbGVtZW50OmcpLGEud2hpY2h8fHZvaWQgMD09PWZ8fChhLndoaWNoPTEmZj8xOjImZj8zOjQmZj8yOjApLGF9fSxzcGVjaWFsOntsb2FkOntub0J1YmJsZTohMH0sZm9jdXM6e3RyaWdnZXI6ZnVuY3Rpb24oKXtpZih0aGlzIT09Y2IoKSYmdGhpcy5mb2N1cyl0cnl7cmV0dXJuIHRoaXMuZm9jdXMoKSwhMX1jYXRjaChhKXt9fSxkZWxlZ2F0ZVR5cGU6ImZvY3VzaW4ifSxibHVyOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXM9PT1jYigpJiZ0aGlzLmJsdXI/KHRoaXMuYmx1cigpLCExKTp2b2lkIDB9LGRlbGVnYXRlVHlwZToiZm9jdXNvdXQifSxjbGljazp7dHJpZ2dlcjpmdW5jdGlvbigpe3JldHVybiBtLm5vZGVOYW1lKHRoaXMsImlucHV0IikmJiJjaGVja2JveCI9PT10aGlzLnR5cGUmJnRoaXMuY2xpY2s/KHRoaXMuY2xpY2soKSwhMSk6dm9pZCAwfSxfZGVmYXVsdDpmdW5jdGlvbihhKXtyZXR1cm4gbS5ub2RlTmFtZShhLnRhcmdldCwiYSIpfX0sYmVmb3JldW5sb2FkOntwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oYSl7dm9pZCAwIT09YS5yZXN1bHQmJmEub3JpZ2luYWxFdmVudCYmKGEub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1hLnJlc3VsdCl9fX0sc2ltdWxhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9bS5leHRlbmQobmV3IG0uRXZlbnQsYyx7dHlwZTphLGlzU2ltdWxhdGVkOiEwLG9yaWdpbmFsRXZlbnQ6e319KTtkP20uZXZlbnQudHJpZ2dlcihlLG51bGwsYik6bS5ldmVudC5kaXNwYXRjaC5jYWxsKGIsZSksZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmYy5wcmV2ZW50RGVmYXVsdCgpfX0sbS5yZW1vdmVFdmVudD15LnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYywhMSl9OmZ1bmN0aW9uKGEsYixjKXt2YXIgZD0ib24iK2I7YS5kZXRhY2hFdmVudCYmKHR5cGVvZiBhW2RdPT09SyYmKGFbZF09bnVsbCksYS5kZXRhY2hFdmVudChkLGMpKX0sbS5FdmVudD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgbS5FdmVudD8oYSYmYS50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9YSx0aGlzLnR5cGU9YS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEuZGVmYXVsdFByZXZlbnRlZHx8dm9pZCAwPT09YS5kZWZhdWx0UHJldmVudGVkJiZhLnJldHVyblZhbHVlPT09ITE/YWI6YmIpOnRoaXMudHlwZT1hLGImJm0uZXh0ZW5kKHRoaXMsYiksdGhpcy50aW1lU3RhbXA9YSYmYS50aW1lU3RhbXB8fG0ubm93KCksdm9pZCh0aGlzW20uZXhwYW5kb109ITApKTpuZXcgbS5FdmVudChhLGIpfSxtLkV2ZW50LnByb3RvdHlwZT17aXNEZWZhdWx0UHJldmVudGVkOmJiLGlzUHJvcGFnYXRpb25TdG9wcGVkOmJiLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOmJiLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPWFiLGEmJihhLnByZXZlbnREZWZhdWx0P2EucHJldmVudERlZmF1bHQoKTphLnJldHVyblZhbHVlPSExKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9YWIsYSYmKGEuc3RvcFByb3BhZ2F0aW9uJiZhLnN0b3BQcm9wYWdhdGlvbigpLGEuY2FuY2VsQnViYmxlPSEwKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9YWIsYSYmYS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24mJmEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksdGhpcy5zdG9wUHJvcGFnYXRpb24oKX19LG0uZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCIscG9pbnRlcmVudGVyOiJwb2ludGVyb3ZlciIscG9pbnRlcmxlYXZlOiJwb2ludGVyb3V0In0sZnVuY3Rpb24oYSxiKXttLmV2ZW50LnNwZWNpYWxbYV09e2RlbGVnYXRlVHlwZTpiLGJpbmRUeXBlOmIsaGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBjLGQ9dGhpcyxlPWEucmVsYXRlZFRhcmdldCxmPWEuaGFuZGxlT2JqO3JldHVybighZXx8ZSE9PWQmJiFtLmNvbnRhaW5zKGQsZSkpJiYoYS50eXBlPWYub3JpZ1R5cGUsYz1mLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGEudHlwZT1iKSxjfX19KSxrLnN1Ym1pdEJ1YmJsZXN8fChtLmV2ZW50LnNwZWNpYWwuc3VibWl0PXtzZXR1cDpmdW5jdGlvbigpe3JldHVybiBtLm5vZGVOYW1lKHRoaXMsImZvcm0iKT8hMTp2b2lkIG0uZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9zdWJtaXQga2V5cHJlc3MuX3N1Ym1pdCIsZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQsYz1tLm5vZGVOYW1lKGIsImlucHV0Iil8fG0ubm9kZU5hbWUoYiwiYnV0dG9uIik/Yi5mb3JtOnZvaWQgMDtjJiYhbS5fZGF0YShjLCJzdWJtaXRCdWJibGVzIikmJihtLmV2ZW50LmFkZChjLCJzdWJtaXQuX3N1Ym1pdCIsZnVuY3Rpb24oYSl7YS5fc3VibWl0X2J1YmJsZT0hMH0pLG0uX2RhdGEoYywic3VibWl0QnViYmxlcyIsITApKX0pfSxwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oYSl7YS5fc3VibWl0X2J1YmJsZSYmKGRlbGV0ZSBhLl9zdWJtaXRfYnViYmxlLHRoaXMucGFyZW50Tm9kZSYmIWEuaXNUcmlnZ2VyJiZtLmV2ZW50LnNpbXVsYXRlKCJzdWJtaXQiLHRoaXMucGFyZW50Tm9kZSxhLCEwKSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7cmV0dXJuIG0ubm9kZU5hbWUodGhpcywiZm9ybSIpPyExOnZvaWQgbS5ldmVudC5yZW1vdmUodGhpcywiLl9zdWJtaXQiKX19KSxrLmNoYW5nZUJ1YmJsZXN8fChtLmV2ZW50LnNwZWNpYWwuY2hhbmdlPXtzZXR1cDpmdW5jdGlvbigpe3JldHVybiBYLnRlc3QodGhpcy5ub2RlTmFtZSk/KCgiY2hlY2tib3giPT09dGhpcy50eXBlfHwicmFkaW8iPT09dGhpcy50eXBlKSYmKG0uZXZlbnQuYWRkKHRoaXMsInByb3BlcnR5Y2hhbmdlLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpeyJjaGVja2VkIj09PWEub3JpZ2luYWxFdmVudC5wcm9wZXJ0eU5hbWUmJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITApfSksbS5ldmVudC5hZGQodGhpcywiY2xpY2suX2NoYW5nZSIsZnVuY3Rpb24oYSl7dGhpcy5fanVzdF9jaGFuZ2VkJiYhYS5pc1RyaWdnZXImJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITEpLG0uZXZlbnQuc2ltdWxhdGUoImNoYW5nZSIsdGhpcyxhLCEwKX0pKSwhMSk6dm9pZCBtLmV2ZW50LmFkZCh0aGlzLCJiZWZvcmVhY3RpdmF0ZS5fY2hhbmdlIixmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldDtYLnRlc3QoYi5ub2RlTmFtZSkmJiFtLl9kYXRhKGIsImNoYW5nZUJ1YmJsZXMiKSYmKG0uZXZlbnQuYWRkKGIsImNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihhKXshdGhpcy5wYXJlbnROb2RlfHxhLmlzU2ltdWxhdGVkfHxhLmlzVHJpZ2dlcnx8bS5ldmVudC5zaW11bGF0ZSgiY2hhbmdlIix0aGlzLnBhcmVudE5vZGUsYSwhMCl9KSxtLl9kYXRhKGIsImNoYW5nZUJ1YmJsZXMiLCEwKSl9KX0saGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBiPWEudGFyZ2V0O3JldHVybiB0aGlzIT09Ynx8YS5pc1NpbXVsYXRlZHx8YS5pc1RyaWdnZXJ8fCJyYWRpbyIhPT1iLnR5cGUmJiJjaGVja2JveCIhPT1iLnR5cGU/YS5oYW5kbGVPYmouaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dm9pZCAwfSx0ZWFyZG93bjpmdW5jdGlvbigpe3JldHVybiBtLmV2ZW50LnJlbW92ZSh0aGlzLCIuX2NoYW5nZSIpLCFYLnRlc3QodGhpcy5ub2RlTmFtZSl9fSksay5mb2N1c2luQnViYmxlc3x8bS5lYWNoKHtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPWZ1bmN0aW9uKGEpe20uZXZlbnQuc2ltdWxhdGUoYixhLnRhcmdldCxtLmV2ZW50LmZpeChhKSwhMCl9O20uZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsZT1tLl9kYXRhKGQsYik7ZXx8ZC5hZGRFdmVudExpc3RlbmVyKGEsYywhMCksbS5fZGF0YShkLGIsKGV8fDApKzEpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3ZhciBkPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcyxlPW0uX2RhdGEoZCxiKS0xO2U/bS5fZGF0YShkLGIsZSk6KGQucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGMsITApLG0uX3JlbW92ZURhdGEoZCxiKSl9fX0pLG0uZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmLGc7aWYoIm9iamVjdCI9PXR5cGVvZiBhKXsic3RyaW5nIiE9dHlwZW9mIGImJihjPWN8fGIsYj12b2lkIDApO2ZvcihmIGluIGEpdGhpcy5vbihmLGIsYyxhW2ZdLGUpO3JldHVybiB0aGlzfWlmKG51bGw9PWMmJm51bGw9PWQ/KGQ9YixjPWI9dm9pZCAwKTpudWxsPT1kJiYoInN0cmluZyI9PXR5cGVvZiBiPyhkPWMsYz12b2lkIDApOihkPWMsYz1iLGI9dm9pZCAwKSksZD09PSExKWQ9YmI7ZWxzZSBpZighZClyZXR1cm4gdGhpcztyZXR1cm4gMT09PWUmJihnPWQsZD1mdW5jdGlvbihhKXtyZXR1cm4gbSgpLm9mZihhKSxnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZC5ndWlkPWcuZ3VpZHx8KGcuZ3VpZD1tLmd1aWQrKykpLHRoaXMuZWFjaChmdW5jdGlvbigpe20uZXZlbnQuYWRkKHRoaXMsYSxkLGMsYil9KX0sb25lOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGEsYixjLGQsMSl9LG9mZjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZTtpZihhJiZhLnByZXZlbnREZWZhdWx0JiZhLmhhbmRsZU9iailyZXR1cm4gZD1hLmhhbmRsZU9iaixtKGEuZGVsZWdhdGVUYXJnZXQpLm9mZihkLm5hbWVzcGFjZT9kLm9yaWdUeXBlKyIuIitkLm5hbWVzcGFjZTpkLm9yaWdUeXBlLGQuc2VsZWN0b3IsZC5oYW5kbGVyKSx0aGlzO2lmKCJvYmplY3QiPT10eXBlb2YgYSl7Zm9yKGUgaW4gYSl0aGlzLm9mZihlLGIsYVtlXSk7cmV0dXJuIHRoaXN9cmV0dXJuKGI9PT0hMXx8ImZ1bmN0aW9uIj09dHlwZW9mIGIpJiYoYz1iLGI9dm9pZCAwKSxjPT09ITEmJihjPWJiKSx0aGlzLmVhY2goZnVuY3Rpb24oKXttLmV2ZW50LnJlbW92ZSh0aGlzLGEsYyxiKX0pfSx0cmlnZ2VyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe20uZXZlbnQudHJpZ2dlcihhLGIsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzWzBdO3JldHVybiBjP20uZXZlbnQudHJpZ2dlcihhLGIsYywhMCk6dm9pZCAwfX0pO2Z1bmN0aW9uIGRiKGEpe3ZhciBiPWViLnNwbGl0KCJ8IiksYz1hLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihjLmNyZWF0ZUVsZW1lbnQpd2hpbGUoYi5sZW5ndGgpYy5jcmVhdGVFbGVtZW50KGIucG9wKCkpO3JldHVybiBjfXZhciBlYj0iYWJicnxhcnRpY2xlfGFzaWRlfGF1ZGlvfGJkaXxjYW52YXN8ZGF0YXxkYXRhbGlzdHxkZXRhaWxzfGZpZ2NhcHRpb258ZmlndXJlfGZvb3RlcnxoZWFkZXJ8aGdyb3VwfG1hcmt8bWV0ZXJ8bmF2fG91dHB1dHxwcm9ncmVzc3xzZWN0aW9ufHN1bW1hcnl8dGltZXx2aWRlbyIsZmI9LyBqUXVlcnlcZCs9Iig/Om51bGx8XGQrKSIvZyxnYj1uZXcgUmVnRXhwKCI8KD86IitlYisiKVtcXHMvPl0iLCJpIiksaGI9L15ccysvLGliPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcdzpdKylbXj5dKilcLz4vZ2ksamI9LzwoW1x3Ol0rKS8sa2I9Lzx0Ym9keS9pLGxiPS88fCYjP1x3KzsvLG1iPS88KD86c2NyaXB0fHN0eWxlfGxpbmspL2ksbmI9L2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksb2I9L14kfFwvKD86amF2YXxlY21hKXNjcmlwdC9pLHBiPS9edHJ1ZVwvKC4qKS8scWI9L15ccyo8ISg/OlxbQ0RBVEFcW3wtLSl8KD86XF1cXXwtLSk+XHMqJC9nLHJiPXtvcHRpb246WzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXSxsZWdlbmQ6WzEsIjxmaWVsZHNldD4iLCI8L2ZpZWxkc2V0PiJdLGFyZWE6WzEsIjxtYXA+IiwiPC9tYXA+Il0scGFyYW06WzEsIjxvYmplY3Q+IiwiPC9vYmplY3Q+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSxjb2w6WzIsIjx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLHRkOlszLCI8dGFibGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSxfZGVmYXVsdDprLmh0bWxTZXJpYWxpemU/WzAsIiIsIiJdOlsxLCJYPGRpdj4iLCI8L2Rpdj4iXX0sc2I9ZGIoeSksdGI9c2IuYXBwZW5kQ2hpbGQoeS5jcmVhdGVFbGVtZW50KCJkaXYiKSk7cmIub3B0Z3JvdXA9cmIub3B0aW9uLHJiLnRib2R5PXJiLnRmb290PXJiLmNvbGdyb3VwPXJiLmNhcHRpb249cmIudGhlYWQscmIudGg9cmIudGQ7ZnVuY3Rpb24gdWIoYSxiKXt2YXIgYyxkLGU9MCxmPXR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdOYW1lIT09Sz9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKGJ8fCIqIik6dHlwZW9mIGEucXVlcnlTZWxlY3RvckFsbCE9PUs/YS5xdWVyeVNlbGVjdG9yQWxsKGJ8fCIqIik6dm9pZCAwO2lmKCFmKWZvcihmPVtdLGM9YS5jaGlsZE5vZGVzfHxhO251bGwhPShkPWNbZV0pO2UrKykhYnx8bS5ub2RlTmFtZShkLGIpP2YucHVzaChkKTptLm1lcmdlKGYsdWIoZCxiKSk7cmV0dXJuIHZvaWQgMD09PWJ8fGImJm0ubm9kZU5hbWUoYSxiKT9tLm1lcmdlKFthXSxmKTpmfWZ1bmN0aW9uIHZiKGEpe1cudGVzdChhLnR5cGUpJiYoYS5kZWZhdWx0Q2hlY2tlZD1hLmNoZWNrZWQpfWZ1bmN0aW9uIHdiKGEsYil7cmV0dXJuIG0ubm9kZU5hbWUoYSwidGFibGUiKSYmbS5ub2RlTmFtZSgxMSE9PWIubm9kZVR5cGU/YjpiLmZpcnN0Q2hpbGQsInRyIik/YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKVswXXx8YS5hcHBlbmRDaGlsZChhLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGJvZHkiKSk6YX1mdW5jdGlvbiB4YihhKXtyZXR1cm4gYS50eXBlPShudWxsIT09bS5maW5kLmF0dHIoYSwidHlwZSIpKSsiLyIrYS50eXBlLGF9ZnVuY3Rpb24geWIoYSl7dmFyIGI9cGIuZXhlYyhhLnR5cGUpO3JldHVybiBiP2EudHlwZT1iWzFdOmEucmVtb3ZlQXR0cmlidXRlKCJ0eXBlIiksYX1mdW5jdGlvbiB6YihhLGIpe2Zvcih2YXIgYyxkPTA7bnVsbCE9KGM9YVtkXSk7ZCsrKW0uX2RhdGEoYywiZ2xvYmFsRXZhbCIsIWJ8fG0uX2RhdGEoYltkXSwiZ2xvYmFsRXZhbCIpKX1mdW5jdGlvbiBBYihhLGIpe2lmKDE9PT1iLm5vZGVUeXBlJiZtLmhhc0RhdGEoYSkpe3ZhciBjLGQsZSxmPW0uX2RhdGEoYSksZz1tLl9kYXRhKGIsZiksaD1mLmV2ZW50cztpZihoKXtkZWxldGUgZy5oYW5kbGUsZy5ldmVudHM9e307Zm9yKGMgaW4gaClmb3IoZD0wLGU9aFtjXS5sZW5ndGg7ZT5kO2QrKyltLmV2ZW50LmFkZChiLGMsaFtjXVtkXSl9Zy5kYXRhJiYoZy5kYXRhPW0uZXh0ZW5kKHt9LGcuZGF0YSkpfX1mdW5jdGlvbiBCYihhLGIpe3ZhciBjLGQsZTtpZigxPT09Yi5ub2RlVHlwZSl7aWYoYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksIWsubm9DbG9uZUV2ZW50JiZiW20uZXhwYW5kb10pe2U9bS5fZGF0YShiKTtmb3IoZCBpbiBlLmV2ZW50cyltLnJlbW92ZUV2ZW50KGIsZCxlLmhhbmRsZSk7Yi5yZW1vdmVBdHRyaWJ1dGUobS5leHBhbmRvKX0ic2NyaXB0Ij09PWMmJmIudGV4dCE9PWEudGV4dD8oeGIoYikudGV4dD1hLnRleHQseWIoYikpOiJvYmplY3QiPT09Yz8oYi5wYXJlbnROb2RlJiYoYi5vdXRlckhUTUw9YS5vdXRlckhUTUwpLGsuaHRtbDVDbG9uZSYmYS5pbm5lckhUTUwmJiFtLnRyaW0oYi5pbm5lckhUTUwpJiYoYi5pbm5lckhUTUw9YS5pbm5lckhUTUwpKToiaW5wdXQiPT09YyYmVy50ZXN0KGEudHlwZSk/KGIuZGVmYXVsdENoZWNrZWQ9Yi5jaGVja2VkPWEuY2hlY2tlZCxiLnZhbHVlIT09YS52YWx1ZSYmKGIudmFsdWU9YS52YWx1ZSkpOiJvcHRpb24iPT09Yz9iLmRlZmF1bHRTZWxlY3RlZD1iLnNlbGVjdGVkPWEuZGVmYXVsdFNlbGVjdGVkOigiaW5wdXQiPT09Y3x8InRleHRhcmVhIj09PWMpJiYoYi5kZWZhdWx0VmFsdWU9YS5kZWZhdWx0VmFsdWUpfX1tLmV4dGVuZCh7Y2xvbmU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGgsaT1tLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKTtpZihrLmh0bWw1Q2xvbmV8fG0uaXNYTUxEb2MoYSl8fCFnYi50ZXN0KCI8IithLm5vZGVOYW1lKyI+Iik/Zj1hLmNsb25lTm9kZSghMCk6KHRiLmlubmVySFRNTD1hLm91dGVySFRNTCx0Yi5yZW1vdmVDaGlsZChmPXRiLmZpcnN0Q2hpbGQpKSwhKGsubm9DbG9uZUV2ZW50JiZrLm5vQ2xvbmVDaGVja2VkfHwxIT09YS5ub2RlVHlwZSYmMTEhPT1hLm5vZGVUeXBlfHxtLmlzWE1MRG9jKGEpKSlmb3IoZD11YihmKSxoPXViKGEpLGc9MDtudWxsIT0oZT1oW2ddKTsrK2cpZFtnXSYmQmIoZSxkW2ddKTtpZihiKWlmKGMpZm9yKGg9aHx8dWIoYSksZD1kfHx1YihmKSxnPTA7bnVsbCE9KGU9aFtnXSk7ZysrKUFiKGUsZFtnXSk7ZWxzZSBBYihhLGYpO3JldHVybiBkPXViKGYsInNjcmlwdCIpLGQubGVuZ3RoPjAmJnpiKGQsIWkmJnViKGEsInNjcmlwdCIpKSxkPWg9ZT1udWxsLGZ9LGJ1aWxkRnJhZ21lbnQ6ZnVuY3Rpb24oYSxiLGMsZCl7Zm9yKHZhciBlLGYsZyxoLGksaixsLG49YS5sZW5ndGgsbz1kYihiKSxwPVtdLHE9MDtuPnE7cSsrKWlmKGY9YVtxXSxmfHwwPT09ZilpZigib2JqZWN0Ij09PW0udHlwZShmKSltLm1lcmdlKHAsZi5ub2RlVHlwZT9bZl06Zik7ZWxzZSBpZihsYi50ZXN0KGYpKXtoPWh8fG8uYXBwZW5kQ2hpbGQoYi5jcmVhdGVFbGVtZW50KCJkaXYiKSksaT0oamIuZXhlYyhmKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKSxsPXJiW2ldfHxyYi5fZGVmYXVsdCxoLmlubmVySFRNTD1sWzFdK2YucmVwbGFjZShpYiwiPCQxPjwvJDI+IikrbFsyXSxlPWxbMF07d2hpbGUoZS0tKWg9aC5sYXN0Q2hpbGQ7aWYoIWsubGVhZGluZ1doaXRlc3BhY2UmJmhiLnRlc3QoZikmJnAucHVzaChiLmNyZWF0ZVRleHROb2RlKGhiLmV4ZWMoZilbMF0pKSwhay50Ym9keSl7Zj0idGFibGUiIT09aXx8a2IudGVzdChmKT8iPHRhYmxlPiIhPT1sWzFdfHxrYi50ZXN0KGYpPzA6aDpoLmZpcnN0Q2hpbGQsZT1mJiZmLmNoaWxkTm9kZXMubGVuZ3RoO3doaWxlKGUtLSltLm5vZGVOYW1lKGo9Zi5jaGlsZE5vZGVzW2VdLCJ0Ym9keSIpJiYhai5jaGlsZE5vZGVzLmxlbmd0aCYmZi5yZW1vdmVDaGlsZChqKX1tLm1lcmdlKHAsaC5jaGlsZE5vZGVzKSxoLnRleHRDb250ZW50PSIiO3doaWxlKGguZmlyc3RDaGlsZCloLnJlbW92ZUNoaWxkKGguZmlyc3RDaGlsZCk7aD1vLmxhc3RDaGlsZH1lbHNlIHAucHVzaChiLmNyZWF0ZVRleHROb2RlKGYpKTtoJiZvLnJlbW92ZUNoaWxkKGgpLGsuYXBwZW5kQ2hlY2tlZHx8bS5ncmVwKHViKHAsImlucHV0IiksdmIpLHE9MDt3aGlsZShmPXBbcSsrXSlpZigoIWR8fC0xPT09bS5pbkFycmF5KGYsZCkpJiYoZz1tLmNvbnRhaW5zKGYub3duZXJEb2N1bWVudCxmKSxoPXViKG8uYXBwZW5kQ2hpbGQoZiksInNjcmlwdCIpLGcmJnpiKGgpLGMpKXtlPTA7d2hpbGUoZj1oW2UrK10pb2IudGVzdChmLnR5cGV8fCIiKSYmYy5wdXNoKGYpfXJldHVybiBoPW51bGwsb30sY2xlYW5EYXRhOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBkLGUsZixnLGg9MCxpPW0uZXhwYW5kbyxqPW0uY2FjaGUsbD1rLmRlbGV0ZUV4cGFuZG8sbj1tLmV2ZW50LnNwZWNpYWw7bnVsbCE9KGQ9YVtoXSk7aCsrKWlmKChifHxtLmFjY2VwdERhdGEoZCkpJiYoZj1kW2ldLGc9ZiYmaltmXSkpe2lmKGcuZXZlbnRzKWZvcihlIGluIGcuZXZlbnRzKW5bZV0/bS5ldmVudC5yZW1vdmUoZCxlKTptLnJlbW92ZUV2ZW50KGQsZSxnLmhhbmRsZSk7altmXSYmKGRlbGV0ZSBqW2ZdLGw/ZGVsZXRlIGRbaV06dHlwZW9mIGQucmVtb3ZlQXR0cmlidXRlIT09Sz9kLnJlbW92ZUF0dHJpYnV0ZShpKTpkW2ldPW51bGwsYy5wdXNoKGYpKX19fSksbS5mbi5leHRlbmQoe3RleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFYodGhpcyxmdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwPT09YT9tLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmFwcGVuZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50fHx5KS5jcmVhdGVUZXh0Tm9kZShhKSl9LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGEpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIgYj13Yih0aGlzLGEpO2IuYXBwZW5kQ2hpbGQoYSl9fSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpe3ZhciBiPXdiKHRoaXMsYSk7Yi5pbnNlcnRCZWZvcmUoYSxiLmZpcnN0Q2hpbGQpfX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcy5uZXh0U2libGluZyl9KX0scmVtb3ZlOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjLGQ9YT9tLmZpbHRlcihhLHRoaXMpOnRoaXMsZT0wO251bGwhPShjPWRbZV0pO2UrKylifHwxIT09Yy5ub2RlVHlwZXx8bS5jbGVhbkRhdGEodWIoYykpLGMucGFyZW50Tm9kZSYmKGImJm0uY29udGFpbnMoYy5vd25lckRvY3VtZW50LGMpJiZ6Yih1YihjLCJzY3JpcHQiKSksYy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGMpKTtyZXR1cm4gdGhpc30sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGEsYj0wO251bGwhPShhPXRoaXNbYl0pO2IrKyl7MT09PWEubm9kZVR5cGUmJm0uY2xlYW5EYXRhKHViKGEsITEpKTt3aGlsZShhLmZpcnN0Q2hpbGQpYS5yZW1vdmVDaGlsZChhLmZpcnN0Q2hpbGQpO2Eub3B0aW9ucyYmbS5ub2RlTmFtZShhLCJzZWxlY3QiKSYmKGEub3B0aW9ucy5sZW5ndGg9MCl9cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9bnVsbD09YT8hMTphLGI9bnVsbD09Yj9hOmIsdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gbS5jbG9uZSh0aGlzLGEsYil9KX0saHRtbDpmdW5jdGlvbihhKXtyZXR1cm4gVih0aGlzLGZ1bmN0aW9uKGEpe3ZhciBiPXRoaXNbMF18fHt9LGM9MCxkPXRoaXMubGVuZ3RoO2lmKHZvaWQgMD09PWEpcmV0dXJuIDE9PT1iLm5vZGVUeXBlP2IuaW5uZXJIVE1MLnJlcGxhY2UoZmIsIiIpOnZvaWQgMDtpZighKCJzdHJpbmciIT10eXBlb2YgYXx8bWIudGVzdChhKXx8IWsuaHRtbFNlcmlhbGl6ZSYmZ2IudGVzdChhKXx8IWsubGVhZGluZ1doaXRlc3BhY2UmJmhiLnRlc3QoYSl8fHJiWyhqYi5leGVjKGEpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSkpe2E9YS5yZXBsYWNlKGliLCI8JDE+PC8kMj4iKTt0cnl7Zm9yKDtkPmM7YysrKWI9dGhpc1tjXXx8e30sMT09PWIubm9kZVR5cGUmJihtLmNsZWFuRGF0YSh1YihiLCExKSksYi5pbm5lckhUTUw9YSk7Yj0wfWNhdGNoKGUpe319YiYmdGhpcy5lbXB0eSgpLmFwcGVuZChhKX0sbnVsbCxhLGFyZ3VtZW50cy5sZW5ndGgpfSxyZXBsYWNlV2l0aDpmdW5jdGlvbigpe3ZhciBhPWFyZ3VtZW50c1swXTtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYil7YT10aGlzLnBhcmVudE5vZGUsbS5jbGVhbkRhdGEodWIodGhpcykpLGEmJmEucmVwbGFjZUNoaWxkKGIsdGhpcyl9KSxhJiYoYS5sZW5ndGh8fGEubm9kZVR5cGUpP3RoaXM6dGhpcy5yZW1vdmUoKX0sZGV0YWNoOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnJlbW92ZShhLCEwKX0sZG9tTWFuaXA6ZnVuY3Rpb24oYSxiKXthPWUuYXBwbHkoW10sYSk7dmFyIGMsZCxmLGcsaCxpLGo9MCxsPXRoaXMubGVuZ3RoLG49dGhpcyxvPWwtMSxwPWFbMF0scT1tLmlzRnVuY3Rpb24ocCk7aWYocXx8bD4xJiYic3RyaW5nIj09dHlwZW9mIHAmJiFrLmNoZWNrQ2xvbmUmJm5iLnRlc3QocCkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXt2YXIgZD1uLmVxKGMpO3EmJihhWzBdPXAuY2FsbCh0aGlzLGMsZC5odG1sKCkpKSxkLmRvbU1hbmlwKGEsYil9KTtpZihsJiYoaT1tLmJ1aWxkRnJhZ21lbnQoYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQsITEsdGhpcyksYz1pLmZpcnN0Q2hpbGQsMT09PWkuY2hpbGROb2Rlcy5sZW5ndGgmJihpPWMpLGMpKXtmb3IoZz1tLm1hcCh1YihpLCJzY3JpcHQiKSx4YiksZj1nLmxlbmd0aDtsPmo7aisrKWQ9aSxqIT09byYmKGQ9bS5jbG9uZShkLCEwLCEwKSxmJiZtLm1lcmdlKGcsdWIoZCwic2NyaXB0IikpKSxiLmNhbGwodGhpc1tqXSxkLGopO2lmKGYpZm9yKGg9Z1tnLmxlbmd0aC0xXS5vd25lckRvY3VtZW50LG0ubWFwKGcseWIpLGo9MDtmPmo7aisrKWQ9Z1tqXSxvYi50ZXN0KGQudHlwZXx8IiIpJiYhbS5fZGF0YShkLCJnbG9iYWxFdmFsIikmJm0uY29udGFpbnMoaCxkKSYmKGQuc3JjP20uX2V2YWxVcmwmJm0uX2V2YWxVcmwoZC5zcmMpOm0uZ2xvYmFsRXZhbCgoZC50ZXh0fHxkLnRleHRDb250ZW50fHxkLmlubmVySFRNTHx8IiIpLnJlcGxhY2UocWIsIiIpKSk7aT1jPW51bGx9cmV0dXJuIHRoaXN9fSksbS5lYWNoKHthcHBlbmRUbzoiYXBwZW5kIixwcmVwZW5kVG86InByZXBlbmQiLGluc2VydEJlZm9yZToiYmVmb3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIiLHJlcGxhY2VBbGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rpb24oYSxiKXttLmZuW2FdPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYyxkPTAsZT1bXSxnPW0oYSksaD1nLmxlbmd0aC0xO2g+PWQ7ZCsrKWM9ZD09PWg/dGhpczp0aGlzLmNsb25lKCEwKSxtKGdbZF0pW2JdKGMpLGYuYXBwbHkoZSxjLmdldCgpKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZSl9fSk7dmFyIENiLERiPXt9O2Z1bmN0aW9uIEViKGIsYyl7dmFyIGQsZT1tKGMuY3JlYXRlRWxlbWVudChiKSkuYXBwZW5kVG8oYy5ib2R5KSxmPWEuZ2V0RGVmYXVsdENvbXB1dGVkU3R5bGUmJihkPWEuZ2V0RGVmYXVsdENvbXB1dGVkU3R5bGUoZVswXSkpP2QuZGlzcGxheTptLmNzcyhlWzBdLCJkaXNwbGF5Iik7cmV0dXJuIGUuZGV0YWNoKCksZn1mdW5jdGlvbiBGYihhKXt2YXIgYj15LGM9RGJbYV07cmV0dXJuIGN8fChjPUViKGEsYiksIm5vbmUiIT09YyYmY3x8KENiPShDYnx8bSgiPGlmcmFtZSBmcmFtZWJvcmRlcj0nMCcgd2lkdGg9JzAnIGhlaWdodD0nMCcvPiIpKS5hcHBlbmRUbyhiLmRvY3VtZW50RWxlbWVudCksYj0oQ2JbMF0uY29udGVudFdpbmRvd3x8Q2JbMF0uY29udGVudERvY3VtZW50KS5kb2N1bWVudCxiLndyaXRlKCksYi5jbG9zZSgpLGM9RWIoYSxiKSxDYi5kZXRhY2goKSksRGJbYV09YyksY30hZnVuY3Rpb24oKXt2YXIgYTtrLnNocmlua1dyYXBCbG9ja3M9ZnVuY3Rpb24oKXtpZihudWxsIT1hKXJldHVybiBhO2E9ITE7dmFyIGIsYyxkO3JldHVybiBjPXkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSxjJiZjLnN0eWxlPyhiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksZD15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOjA7d2lkdGg6MDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHgiLGMuYXBwZW5kQ2hpbGQoZCkuYXBwZW5kQ2hpbGQoYiksdHlwZW9mIGIuc3R5bGUuem9vbSE9PUsmJihiLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MXB4O3dpZHRoOjFweDt6b29tOjEiLGIuYXBwZW5kQ2hpbGQoeS5jcmVhdGVFbGVtZW50KCJkaXYiKSkuc3R5bGUud2lkdGg9IjVweCIsYT0zIT09Yi5vZmZzZXRXaWR0aCksYy5yZW1vdmVDaGlsZChkKSxhKTp2b2lkIDB9fSgpO3ZhciBHYj0vXm1hcmdpbi8sSGI9bmV3IFJlZ0V4cCgiXigiK1MrIikoPyFweClbYS16JV0rJCIsImkiKSxJYixKYixLYj0vXih0b3B8cmlnaHR8Ym90dG9tfGxlZnQpJC87YS5nZXRDb21wdXRlZFN0eWxlPyhJYj1mdW5jdGlvbihhKXtyZXR1cm4gYS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoYSxudWxsKX0sSmI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5zdHlsZTtyZXR1cm4gYz1jfHxJYihhKSxnPWM/Yy5nZXRQcm9wZXJ0eVZhbHVlKGIpfHxjW2JdOnZvaWQgMCxjJiYoIiIhPT1nfHxtLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKXx8KGc9bS5zdHlsZShhLGIpKSxIYi50ZXN0KGcpJiZHYi50ZXN0KGIpJiYoZD1oLndpZHRoLGU9aC5taW5XaWR0aCxmPWgubWF4V2lkdGgsaC5taW5XaWR0aD1oLm1heFdpZHRoPWgud2lkdGg9ZyxnPWMud2lkdGgsaC53aWR0aD1kLGgubWluV2lkdGg9ZSxoLm1heFdpZHRoPWYpKSx2b2lkIDA9PT1nP2c6ZysiIn0pOnkuZG9jdW1lbnRFbGVtZW50LmN1cnJlbnRTdHlsZSYmKEliPWZ1bmN0aW9uKGEpe3JldHVybiBhLmN1cnJlbnRTdHlsZX0sSmI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5zdHlsZTtyZXR1cm4gYz1jfHxJYihhKSxnPWM/Y1tiXTp2b2lkIDAsbnVsbD09ZyYmaCYmaFtiXSYmKGc9aFtiXSksSGIudGVzdChnKSYmIUtiLnRlc3QoYikmJihkPWgubGVmdCxlPWEucnVudGltZVN0eWxlLGY9ZSYmZS5sZWZ0LGYmJihlLmxlZnQ9YS5jdXJyZW50U3R5bGUubGVmdCksaC5sZWZ0PSJmb250U2l6ZSI9PT1iPyIxZW0iOmcsZz1oLnBpeGVsTGVmdCsicHgiLGgubGVmdD1kLGYmJihlLmxlZnQ9ZikpLHZvaWQgMD09PWc/ZzpnKyIifHwiYXV0byJ9KTtmdW5jdGlvbiBMYihhLGIpe3JldHVybntnZXQ6ZnVuY3Rpb24oKXt2YXIgYz1hKCk7aWYobnVsbCE9YylyZXR1cm4gYz92b2lkIGRlbGV0ZSB0aGlzLmdldDoodGhpcy5nZXQ9YikuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19IWZ1bmN0aW9uKCl7dmFyIGIsYyxkLGUsZixnLGg7aWYoYj15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGIuaW5uZXJIVE1MPSIgIDxsaW5rLz48dGFibGU+PC90YWJsZT48YSBocmVmPScvYSc+YTwvYT48aW5wdXQgdHlwZT0nY2hlY2tib3gnLz4iLGQ9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpWzBdLGM9ZCYmZC5zdHlsZSl7Yy5jc3NUZXh0PSJmbG9hdDpsZWZ0O29wYWNpdHk6LjUiLGsub3BhY2l0eT0iMC41Ij09PWMub3BhY2l0eSxrLmNzc0Zsb2F0PSEhYy5jc3NGbG9hdCxiLnN0eWxlLmJhY2tncm91bmRDbGlwPSJjb250ZW50LWJveCIsYi5jbG9uZU5vZGUoITApLnN0eWxlLmJhY2tncm91bmRDbGlwPSIiLGsuY2xlYXJDbG9uZVN0eWxlPSJjb250ZW50LWJveCI9PT1iLnN0eWxlLmJhY2tncm91bmRDbGlwLGsuYm94U2l6aW5nPSIiPT09Yy5ib3hTaXppbmd8fCIiPT09Yy5Nb3pCb3hTaXppbmd8fCIiPT09Yy5XZWJraXRCb3hTaXppbmcsbS5leHRlbmQoayx7cmVsaWFibGVIaWRkZW5PZmZzZXRzOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWcmJmkoKSxnfSxib3hTaXppbmdSZWxpYWJsZTpmdW5jdGlvbigpe3JldHVybiBudWxsPT1mJiZpKCksZn0scGl4ZWxQb3NpdGlvbjpmdW5jdGlvbigpe3JldHVybiBudWxsPT1lJiZpKCksZX0scmVsaWFibGVNYXJnaW5SaWdodDpmdW5jdGlvbigpe3JldHVybiBudWxsPT1oJiZpKCksaH19KTtmdW5jdGlvbiBpKCl7dmFyIGIsYyxkLGk7Yz15LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0sYyYmYy5zdHlsZSYmKGI9eS5jcmVhdGVFbGVtZW50KCJkaXYiKSxkPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksZC5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweCIsYy5hcHBlbmRDaGlsZChkKS5hcHBlbmRDaGlsZChiKSxiLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6MSU7dG9wOjElO2JvcmRlcjoxcHg7cGFkZGluZzoxcHg7d2lkdGg6NHB4O3Bvc2l0aW9uOmFic29sdXRlIixlPWY9ITEsaD0hMCxhLmdldENvbXB1dGVkU3R5bGUmJihlPSIxJSIhPT0oYS5nZXRDb21wdXRlZFN0eWxlKGIsbnVsbCl8fHt9KS50b3AsZj0iNHB4Ij09PShhLmdldENvbXB1dGVkU3R5bGUoYixudWxsKXx8e3dpZHRoOiI0cHgifSkud2lkdGgsaT1iLmFwcGVuZENoaWxkKHkuY3JlYXRlRWxlbWVudCgiZGl2IikpLGkuc3R5bGUuY3NzVGV4dD1iLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MCIsaS5zdHlsZS5tYXJnaW5SaWdodD1pLnN0eWxlLndpZHRoPSIwIixiLnN0eWxlLndpZHRoPSIxcHgiLGg9IXBhcnNlRmxvYXQoKGEuZ2V0Q29tcHV0ZWRTdHlsZShpLG51bGwpfHx7fSkubWFyZ2luUmlnaHQpKSxiLmlubmVySFRNTD0iPHRhYmxlPjx0cj48dGQ+PC90ZD48dGQ+dDwvdGQ+PC90cj48L3RhYmxlPiIsaT1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpLGlbMF0uc3R5bGUuY3NzVGV4dD0ibWFyZ2luOjA7Ym9yZGVyOjA7cGFkZGluZzowO2Rpc3BsYXk6bm9uZSIsZz0wPT09aVswXS5vZmZzZXRIZWlnaHQsZyYmKGlbMF0uc3R5bGUuZGlzcGxheT0iIixpWzFdLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGc9MD09PWlbMF0ub2Zmc2V0SGVpZ2h0KSxjLnJlbW92ZUNoaWxkKGQpKX19fSgpLG0uc3dhcD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZSxmLGc9e307Zm9yKGYgaW4gYilnW2ZdPWEuc3R5bGVbZl0sYS5zdHlsZVtmXT1iW2ZdO2U9Yy5hcHBseShhLGR8fFtdKTtmb3IoZiBpbiBiKWEuc3R5bGVbZl09Z1tmXTtyZXR1cm4gZX07dmFyIE1iPS9hbHBoYVwoW14pXSpcKS9pLE5iPS9vcGFjaXR5XHMqPVxzKihbXildKikvLE9iPS9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyxQYj1uZXcgUmVnRXhwKCJeKCIrUysiKSguKikkIiwiaSIpLFFiPW5ldyBSZWdFeHAoIl4oWystXSk9KCIrUysiKSIsImkiKSxSYj17cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3BsYXk6ImJsb2NrIn0sU2I9e2xldHRlclNwYWNpbmc6IjAiLGZvbnRXZWlnaHQ6IjQwMCJ9LFRiPVsiV2Via2l0IiwiTyIsIk1veiIsIm1zIl07ZnVuY3Rpb24gVWIoYSxiKXtpZihiIGluIGEpcmV0dXJuIGI7dmFyIGM9Yi5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStiLnNsaWNlKDEpLGQ9YixlPVRiLmxlbmd0aDt3aGlsZShlLS0paWYoYj1UYltlXStjLGIgaW4gYSlyZXR1cm4gYjtyZXR1cm4gZH1mdW5jdGlvbiBWYihhLGIpe2Zvcih2YXIgYyxkLGUsZj1bXSxnPTAsaD1hLmxlbmd0aDtoPmc7ZysrKWQ9YVtnXSxkLnN0eWxlJiYoZltnXT1tLl9kYXRhKGQsIm9sZGRpc3BsYXkiKSxjPWQuc3R5bGUuZGlzcGxheSxiPyhmW2ddfHwibm9uZSIhPT1jfHwoZC5zdHlsZS5kaXNwbGF5PSIiKSwiIj09PWQuc3R5bGUuZGlzcGxheSYmVShkKSYmKGZbZ109bS5fZGF0YShkLCJvbGRkaXNwbGF5IixGYihkLm5vZGVOYW1lKSkpKTooZT1VKGQpLChjJiYibm9uZSIhPT1jfHwhZSkmJm0uX2RhdGEoZCwib2xkZGlzcGxheSIsZT9jOm0uY3NzKGQsImRpc3BsYXkiKSkpKTtmb3IoZz0wO2g+ZztnKyspZD1hW2ddLGQuc3R5bGUmJihiJiYibm9uZSIhPT1kLnN0eWxlLmRpc3BsYXkmJiIiIT09ZC5zdHlsZS5kaXNwbGF5fHwoZC5zdHlsZS5kaXNwbGF5PWI/ZltnXXx8IiI6Im5vbmUiKSk7cmV0dXJuIGF9ZnVuY3Rpb24gV2IoYSxiLGMpe3ZhciBkPVBiLmV4ZWMoYik7cmV0dXJuIGQ/TWF0aC5tYXgoMCxkWzFdLShjfHwwKSkrKGRbMl18fCJweCIpOmJ9ZnVuY3Rpb24gWGIoYSxiLGMsZCxlKXtmb3IodmFyIGY9Yz09PShkPyJib3JkZXIiOiJjb250ZW50Iik/NDoid2lkdGgiPT09Yj8xOjAsZz0wOzQ+ZjtmKz0yKSJtYXJnaW4iPT09YyYmKGcrPW0uY3NzKGEsYytUW2ZdLCEwLGUpKSxkPygiY29udGVudCI9PT1jJiYoZy09bS5jc3MoYSwicGFkZGluZyIrVFtmXSwhMCxlKSksIm1hcmdpbiIhPT1jJiYoZy09bS5jc3MoYSwiYm9yZGVyIitUW2ZdKyJXaWR0aCIsITAsZSkpKTooZys9bS5jc3MoYSwicGFkZGluZyIrVFtmXSwhMCxlKSwicGFkZGluZyIhPT1jJiYoZys9bS5jc3MoYSwiYm9yZGVyIitUW2ZdKyJXaWR0aCIsITAsZSkpKTtyZXR1cm4gZ31mdW5jdGlvbiBZYihhLGIsYyl7dmFyIGQ9ITAsZT0id2lkdGgiPT09Yj9hLm9mZnNldFdpZHRoOmEub2Zmc2V0SGVpZ2h0LGY9SWIoYSksZz1rLmJveFNpemluZyYmImJvcmRlci1ib3giPT09bS5jc3MoYSwiYm94U2l6aW5nIiwhMSxmKTtpZigwPj1lfHxudWxsPT1lKXtpZihlPUpiKGEsYixmKSwoMD5lfHxudWxsPT1lKSYmKGU9YS5zdHlsZVtiXSksSGIudGVzdChlKSlyZXR1cm4gZTtkPWcmJihrLmJveFNpemluZ1JlbGlhYmxlKCl8fGU9PT1hLnN0eWxlW2JdKSxlPXBhcnNlRmxvYXQoZSl8fDB9cmV0dXJuIGUrWGIoYSxiLGN8fChnPyJib3JkZXIiOiJjb250ZW50IiksZCxmKSsicHgifW0uZXh0ZW5kKHtjc3NIb29rczp7b3BhY2l0eTp7Z2V0OmZ1bmN0aW9uKGEsYil7aWYoYil7dmFyIGM9SmIoYSwib3BhY2l0eSIpO3JldHVybiIiPT09Yz8iMSI6Y319fX0sY3NzTnVtYmVyOntjb2x1bW5Db3VudDohMCxmaWxsT3BhY2l0eTohMCxmbGV4R3JvdzohMCxmbGV4U2hyaW5rOiEwLGZvbnRXZWlnaHQ6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwfSxjc3NQcm9wczp7ImZsb2F0IjprLmNzc0Zsb2F0PyJjc3NGbG9hdCI6InN0eWxlRmxvYXQifSxzdHlsZTpmdW5jdGlvbihhLGIsYyxkKXtpZihhJiYzIT09YS5ub2RlVHlwZSYmOCE9PWEubm9kZVR5cGUmJmEuc3R5bGUpe3ZhciBlLGYsZyxoPW0uY2FtZWxDYXNlKGIpLGk9YS5zdHlsZTtpZihiPW0uY3NzUHJvcHNbaF18fChtLmNzc1Byb3BzW2hdPVViKGksaCkpLGc9bS5jc3NIb29rc1tiXXx8bS5jc3NIb29rc1toXSx2b2lkIDA9PT1jKXJldHVybiBnJiYiZ2V0ImluIGcmJnZvaWQgMCE9PShlPWcuZ2V0KGEsITEsZCkpP2U6aVtiXTtpZihmPXR5cGVvZiBjLCJzdHJpbmciPT09ZiYmKGU9UWIuZXhlYyhjKSkmJihjPShlWzFdKzEpKmVbMl0rcGFyc2VGbG9hdChtLmNzcyhhLGIpKSxmPSJudW1iZXIiKSxudWxsIT1jJiZjPT09YyYmKCJudW1iZXIiIT09Znx8bS5jc3NOdW1iZXJbaF18fChjKz0icHgiKSxrLmNsZWFyQ2xvbmVTdHlsZXx8IiIhPT1jfHwwIT09Yi5pbmRleE9mKCJiYWNrZ3JvdW5kIil8fChpW2JdPSJpbmhlcml0IiksIShnJiYic2V0ImluIGcmJnZvaWQgMD09PShjPWcuc2V0KGEsYyxkKSkpKSl0cnl7aVtiXT1jfWNhdGNoKGope319fSxjc3M6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZixnLGg9bS5jYW1lbENhc2UoYik7cmV0dXJuIGI9bS5jc3NQcm9wc1toXXx8KG0uY3NzUHJvcHNbaF09VWIoYS5zdHlsZSxoKSksZz1tLmNzc0hvb2tzW2JdfHxtLmNzc0hvb2tzW2hdLGcmJiJnZXQiaW4gZyYmKGY9Zy5nZXQoYSwhMCxjKSksdm9pZCAwPT09ZiYmKGY9SmIoYSxiLGQpKSwibm9ybWFsIj09PWYmJmIgaW4gU2ImJihmPVNiW2JdKSwiIj09PWN8fGM/KGU9cGFyc2VGbG9hdChmKSxjPT09ITB8fG0uaXNOdW1lcmljKGUpP2V8fDA6Zik6Zn19KSxtLmVhY2goWyJoZWlnaHQiLCJ3aWR0aCJdLGZ1bmN0aW9uKGEsYil7bS5jc3NIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gYz9PYi50ZXN0KG0uY3NzKGEsImRpc3BsYXkiKSkmJjA9PT1hLm9mZnNldFdpZHRoP20uc3dhcChhLFJiLGZ1bmN0aW9uKCl7cmV0dXJuIFliKGEsYixkKX0pOlliKGEsYixkKTp2b2lkIDB9LHNldDpmdW5jdGlvbihhLGMsZCl7dmFyIGU9ZCYmSWIoYSk7cmV0dXJuIFdiKGEsYyxkP1hiKGEsYixkLGsuYm94U2l6aW5nJiYiYm9yZGVyLWJveCI9PT1tLmNzcyhhLCJib3hTaXppbmciLCExLGUpLGUpOjApfX19KSxrLm9wYWNpdHl8fChtLmNzc0hvb2tzLm9wYWNpdHk9e2dldDpmdW5jdGlvbihhLGIpe3JldHVybiBOYi50ZXN0KChiJiZhLmN1cnJlbnRTdHlsZT9hLmN1cnJlbnRTdHlsZS5maWx0ZXI6YS5zdHlsZS5maWx0ZXIpfHwiIik/LjAxKnBhcnNlRmxvYXQoUmVnRXhwLiQxKSsiIjpiPyIxIjoiIn0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM9YS5zdHlsZSxkPWEuY3VycmVudFN0eWxlLGU9bS5pc051bWVyaWMoYik/ImFscGhhKG9wYWNpdHk9IisxMDAqYisiKSI6IiIsZj1kJiZkLmZpbHRlcnx8Yy5maWx0ZXJ8fCIiO2Muem9vbT0xLChiPj0xfHwiIj09PWIpJiYiIj09PW0udHJpbShmLnJlcGxhY2UoTWIsIiIpKSYmYy5yZW1vdmVBdHRyaWJ1dGUmJihjLnJlbW92ZUF0dHJpYnV0ZSgiZmlsdGVyIiksIiI9PT1ifHxkJiYhZC5maWx0ZXIpfHwoYy5maWx0ZXI9TWIudGVzdChmKT9mLnJlcGxhY2UoTWIsZSk6ZisiICIrZSl9fSksbS5jc3NIb29rcy5tYXJnaW5SaWdodD1MYihrLnJlbGlhYmxlTWFyZ2luUmlnaHQsZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj9tLnN3YXAoYSx7ZGlzcGxheToiaW5saW5lLWJsb2NrIn0sSmIsW2EsIm1hcmdpblJpZ2h0Il0pOnZvaWQgMH0pLG0uZWFjaCh7bWFyZ2luOiIiLHBhZGRpbmc6IiIsYm9yZGVyOiJXaWR0aCJ9LGZ1bmN0aW9uKGEsYil7bS5jc3NIb29rc1thK2JdPXtleHBhbmQ6ZnVuY3Rpb24oYyl7Zm9yKHZhciBkPTAsZT17fSxmPSJzdHJpbmciPT10eXBlb2YgYz9jLnNwbGl0KCIgIik6W2NdOzQ+ZDtkKyspZVthK1RbZF0rYl09ZltkXXx8ZltkLTJdfHxmWzBdO3JldHVybiBlfX0sR2IudGVzdChhKXx8KG0uY3NzSG9va3NbYStiXS5zZXQ9V2IpfSksbS5mbi5leHRlbmQoe2NzczpmdW5jdGlvbihhLGIpe3JldHVybiBWKHRoaXMsZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj17fSxnPTA7aWYobS5pc0FycmF5KGIpKXtmb3IoZD1JYihhKSxlPWIubGVuZ3RoO2U+ZztnKyspZltiW2ddXT1tLmNzcyhhLGJbZ10sITEsZCk7cmV0dXJuIGZ9cmV0dXJuIHZvaWQgMCE9PWM/bS5zdHlsZShhLGIsYyk6bS5jc3MoYSxiKX0sYSxiLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHNob3c6ZnVuY3Rpb24oKXtyZXR1cm4gVmIodGhpcywhMCl9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gVmIodGhpcyl9LHRvZ2dsZTpmdW5jdGlvbihhKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBhP2E/dGhpcy5zaG93KCk6dGhpcy5oaWRlKCk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7VSh0aGlzKT9tKHRoaXMpLnNob3coKTptKHRoaXMpLmhpZGUoKX0pfX0pO2Z1bmN0aW9uIFpiKGEsYixjLGQsZSl7cmV0dXJuIG5ldyBaYi5wcm90b3R5cGUuaW5pdChhLGIsYyxkLGUpfW0uVHdlZW49WmIsWmIucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpaYixpbml0OmZ1bmN0aW9uKGEsYixjLGQsZSxmKXt0aGlzLmVsZW09YSx0aGlzLnByb3A9Yyx0aGlzLmVhc2luZz1lfHwic3dpbmciLHRoaXMub3B0aW9ucz1iLHRoaXMuc3RhcnQ9dGhpcy5ub3c9dGhpcy5jdXIoKSx0aGlzLmVuZD1kLHRoaXMudW5pdD1mfHwobS5jc3NOdW1iZXJbY10/IiI6InB4IikKfSxjdXI6ZnVuY3Rpb24oKXt2YXIgYT1aYi5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gYSYmYS5nZXQ/YS5nZXQodGhpcyk6WmIucHJvcEhvb2tzLl9kZWZhdWx0LmdldCh0aGlzKX0scnVuOmZ1bmN0aW9uKGEpe3ZhciBiLGM9WmIucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIHRoaXMucG9zPWI9dGhpcy5vcHRpb25zLmR1cmF0aW9uP20uZWFzaW5nW3RoaXMuZWFzaW5nXShhLHRoaXMub3B0aW9ucy5kdXJhdGlvbiphLDAsMSx0aGlzLm9wdGlvbnMuZHVyYXRpb24pOmEsdGhpcy5ub3c9KHRoaXMuZW5kLXRoaXMuc3RhcnQpKmIrdGhpcy5zdGFydCx0aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyksYyYmYy5zZXQ/Yy5zZXQodGhpcyk6WmIucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX0sWmIucHJvdG90eXBlLmluaXQucHJvdG90eXBlPVpiLnByb3RvdHlwZSxaYi5wcm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuIG51bGw9PWEuZWxlbVthLnByb3BdfHxhLmVsZW0uc3R5bGUmJm51bGwhPWEuZWxlbS5zdHlsZVthLnByb3BdPyhiPW0uY3NzKGEuZWxlbSxhLnByb3AsIiIpLGImJiJhdXRvIiE9PWI/YjowKTphLmVsZW1bYS5wcm9wXX0sc2V0OmZ1bmN0aW9uKGEpe20uZnguc3RlcFthLnByb3BdP20uZnguc3RlcFthLnByb3BdKGEpOmEuZWxlbS5zdHlsZSYmKG51bGwhPWEuZWxlbS5zdHlsZVttLmNzc1Byb3BzW2EucHJvcF1dfHxtLmNzc0hvb2tzW2EucHJvcF0pP20uc3R5bGUoYS5lbGVtLGEucHJvcCxhLm5vdythLnVuaXQpOmEuZWxlbVthLnByb3BdPWEubm93fX19LFpiLnByb3BIb29rcy5zY3JvbGxUb3A9WmIucHJvcEhvb2tzLnNjcm9sbExlZnQ9e3NldDpmdW5jdGlvbihhKXthLmVsZW0ubm9kZVR5cGUmJmEuZWxlbS5wYXJlbnROb2RlJiYoYS5lbGVtW2EucHJvcF09YS5ub3cpfX0sbS5lYXNpbmc9e2xpbmVhcjpmdW5jdGlvbihhKXtyZXR1cm4gYX0sc3dpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuLjUtTWF0aC5jb3MoYSpNYXRoLlBJKS8yfX0sbS5meD1aYi5wcm90b3R5cGUuaW5pdCxtLmZ4LnN0ZXA9e307dmFyICRiLF9iLGFjPS9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxiYz1uZXcgUmVnRXhwKCJeKD86KFsrLV0pPXwpKCIrUysiKShbYS16JV0qKSQiLCJpIiksY2M9L3F1ZXVlSG9va3MkLyxkYz1baWNdLGVjPXsiKiI6W2Z1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jcmVhdGVUd2VlbihhLGIpLGQ9Yy5jdXIoKSxlPWJjLmV4ZWMoYiksZj1lJiZlWzNdfHwobS5jc3NOdW1iZXJbYV0/IiI6InB4IiksZz0obS5jc3NOdW1iZXJbYV18fCJweCIhPT1mJiYrZCkmJmJjLmV4ZWMobS5jc3MoYy5lbGVtLGEpKSxoPTEsaT0yMDtpZihnJiZnWzNdIT09Zil7Zj1mfHxnWzNdLGU9ZXx8W10sZz0rZHx8MTtkbyBoPWh8fCIuNSIsZy89aCxtLnN0eWxlKGMuZWxlbSxhLGcrZik7d2hpbGUoaCE9PShoPWMuY3VyKCkvZCkmJjEhPT1oJiYtLWkpfXJldHVybiBlJiYoZz1jLnN0YXJ0PStnfHwrZHx8MCxjLnVuaXQ9ZixjLmVuZD1lWzFdP2crKGVbMV0rMSkqZVsyXTorZVsyXSksY31dfTtmdW5jdGlvbiBmYygpe3JldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7JGI9dm9pZCAwfSksJGI9bS5ub3coKX1mdW5jdGlvbiBnYyhhLGIpe3ZhciBjLGQ9e2hlaWdodDphfSxlPTA7Zm9yKGI9Yj8xOjA7ND5lO2UrPTItYiljPVRbZV0sZFsibWFyZ2luIitjXT1kWyJwYWRkaW5nIitjXT1hO3JldHVybiBiJiYoZC5vcGFjaXR5PWQud2lkdGg9YSksZH1mdW5jdGlvbiBoYyhhLGIsYyl7Zm9yKHZhciBkLGU9KGVjW2JdfHxbXSkuY29uY2F0KGVjWyIqIl0pLGY9MCxnPWUubGVuZ3RoO2c+ZjtmKyspaWYoZD1lW2ZdLmNhbGwoYyxiLGEpKXJldHVybiBkfWZ1bmN0aW9uIGljKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixsLG49dGhpcyxvPXt9LHA9YS5zdHlsZSxxPWEubm9kZVR5cGUmJlUoYSkscj1tLl9kYXRhKGEsImZ4c2hvdyIpO2MucXVldWV8fChoPW0uX3F1ZXVlSG9va3MoYSwiZngiKSxudWxsPT1oLnVucXVldWVkJiYoaC51bnF1ZXVlZD0wLGk9aC5lbXB0eS5maXJlLGguZW1wdHkuZmlyZT1mdW5jdGlvbigpe2gudW5xdWV1ZWR8fGkoKX0pLGgudW5xdWV1ZWQrKyxuLmFsd2F5cyhmdW5jdGlvbigpe24uYWx3YXlzKGZ1bmN0aW9uKCl7aC51bnF1ZXVlZC0tLG0ucXVldWUoYSwiZngiKS5sZW5ndGh8fGguZW1wdHkuZmlyZSgpfSl9KSksMT09PWEubm9kZVR5cGUmJigiaGVpZ2h0ImluIGJ8fCJ3aWR0aCJpbiBiKSYmKGMub3ZlcmZsb3c9W3Aub3ZlcmZsb3cscC5vdmVyZmxvd1gscC5vdmVyZmxvd1ldLGo9bS5jc3MoYSwiZGlzcGxheSIpLGw9Im5vbmUiPT09aj9tLl9kYXRhKGEsIm9sZGRpc3BsYXkiKXx8RmIoYS5ub2RlTmFtZSk6aiwiaW5saW5lIj09PWwmJiJub25lIj09PW0uY3NzKGEsImZsb2F0IikmJihrLmlubGluZUJsb2NrTmVlZHNMYXlvdXQmJiJpbmxpbmUiIT09RmIoYS5ub2RlTmFtZSk/cC56b29tPTE6cC5kaXNwbGF5PSJpbmxpbmUtYmxvY2siKSksYy5vdmVyZmxvdyYmKHAub3ZlcmZsb3c9ImhpZGRlbiIsay5zaHJpbmtXcmFwQmxvY2tzKCl8fG4uYWx3YXlzKGZ1bmN0aW9uKCl7cC5vdmVyZmxvdz1jLm92ZXJmbG93WzBdLHAub3ZlcmZsb3dYPWMub3ZlcmZsb3dbMV0scC5vdmVyZmxvd1k9Yy5vdmVyZmxvd1syXX0pKTtmb3IoZCBpbiBiKWlmKGU9YltkXSxhYy5leGVjKGUpKXtpZihkZWxldGUgYltkXSxmPWZ8fCJ0b2dnbGUiPT09ZSxlPT09KHE/ImhpZGUiOiJzaG93Iikpe2lmKCJzaG93IiE9PWV8fCFyfHx2b2lkIDA9PT1yW2RdKWNvbnRpbnVlO3E9ITB9b1tkXT1yJiZyW2RdfHxtLnN0eWxlKGEsZCl9ZWxzZSBqPXZvaWQgMDtpZihtLmlzRW1wdHlPYmplY3QobykpImlubGluZSI9PT0oIm5vbmUiPT09aj9GYihhLm5vZGVOYW1lKTpqKSYmKHAuZGlzcGxheT1qKTtlbHNle3I/ImhpZGRlbiJpbiByJiYocT1yLmhpZGRlbik6cj1tLl9kYXRhKGEsImZ4c2hvdyIse30pLGYmJihyLmhpZGRlbj0hcSkscT9tKGEpLnNob3coKTpuLmRvbmUoZnVuY3Rpb24oKXttKGEpLmhpZGUoKX0pLG4uZG9uZShmdW5jdGlvbigpe3ZhciBiO20uX3JlbW92ZURhdGEoYSwiZnhzaG93Iik7Zm9yKGIgaW4gbyltLnN0eWxlKGEsYixvW2JdKX0pO2ZvcihkIGluIG8pZz1oYyhxP3JbZF06MCxkLG4pLGQgaW4gcnx8KHJbZF09Zy5zdGFydCxxJiYoZy5lbmQ9Zy5zdGFydCxnLnN0YXJ0PSJ3aWR0aCI9PT1kfHwiaGVpZ2h0Ij09PWQ/MTowKSl9fWZ1bmN0aW9uIGpjKGEsYil7dmFyIGMsZCxlLGYsZztmb3IoYyBpbiBhKWlmKGQ9bS5jYW1lbENhc2UoYyksZT1iW2RdLGY9YVtjXSxtLmlzQXJyYXkoZikmJihlPWZbMV0sZj1hW2NdPWZbMF0pLGMhPT1kJiYoYVtkXT1mLGRlbGV0ZSBhW2NdKSxnPW0uY3NzSG9va3NbZF0sZyYmImV4cGFuZCJpbiBnKXtmPWcuZXhwYW5kKGYpLGRlbGV0ZSBhW2RdO2ZvcihjIGluIGYpYyBpbiBhfHwoYVtjXT1mW2NdLGJbY109ZSl9ZWxzZSBiW2RdPWV9ZnVuY3Rpb24ga2MoYSxiLGMpe3ZhciBkLGUsZj0wLGc9ZGMubGVuZ3RoLGg9bS5EZWZlcnJlZCgpLmFsd2F5cyhmdW5jdGlvbigpe2RlbGV0ZSBpLmVsZW19KSxpPWZ1bmN0aW9uKCl7aWYoZSlyZXR1cm4hMTtmb3IodmFyIGI9JGJ8fGZjKCksYz1NYXRoLm1heCgwLGouc3RhcnRUaW1lK2ouZHVyYXRpb24tYiksZD1jL2ouZHVyYXRpb258fDAsZj0xLWQsZz0wLGk9ai50d2VlbnMubGVuZ3RoO2k+ZztnKyspai50d2VlbnNbZ10ucnVuKGYpO3JldHVybiBoLm5vdGlmeVdpdGgoYSxbaixmLGNdKSwxPmYmJmk/YzooaC5yZXNvbHZlV2l0aChhLFtqXSksITEpfSxqPWgucHJvbWlzZSh7ZWxlbTphLHByb3BzOm0uZXh0ZW5kKHt9LGIpLG9wdHM6bS5leHRlbmQoITAse3NwZWNpYWxFYXNpbmc6e319LGMpLG9yaWdpbmFsUHJvcGVydGllczpiLG9yaWdpbmFsT3B0aW9uczpjLHN0YXJ0VGltZTokYnx8ZmMoKSxkdXJhdGlvbjpjLmR1cmF0aW9uLHR3ZWVuczpbXSxjcmVhdGVUd2VlbjpmdW5jdGlvbihiLGMpe3ZhciBkPW0uVHdlZW4oYSxqLm9wdHMsYixjLGoub3B0cy5zcGVjaWFsRWFzaW5nW2JdfHxqLm9wdHMuZWFzaW5nKTtyZXR1cm4gai50d2VlbnMucHVzaChkKSxkfSxzdG9wOmZ1bmN0aW9uKGIpe3ZhciBjPTAsZD1iP2oudHdlZW5zLmxlbmd0aDowO2lmKGUpcmV0dXJuIHRoaXM7Zm9yKGU9ITA7ZD5jO2MrKylqLnR3ZWVuc1tjXS5ydW4oMSk7cmV0dXJuIGI/aC5yZXNvbHZlV2l0aChhLFtqLGJdKTpoLnJlamVjdFdpdGgoYSxbaixiXSksdGhpc319KSxrPWoucHJvcHM7Zm9yKGpjKGssai5vcHRzLnNwZWNpYWxFYXNpbmcpO2c+ZjtmKyspaWYoZD1kY1tmXS5jYWxsKGosYSxrLGoub3B0cykpcmV0dXJuIGQ7cmV0dXJuIG0ubWFwKGssaGMsaiksbS5pc0Z1bmN0aW9uKGoub3B0cy5zdGFydCkmJmoub3B0cy5zdGFydC5jYWxsKGEsaiksbS5meC50aW1lcihtLmV4dGVuZChpLHtlbGVtOmEsYW5pbTpqLHF1ZXVlOmoub3B0cy5xdWV1ZX0pKSxqLnByb2dyZXNzKGoub3B0cy5wcm9ncmVzcykuZG9uZShqLm9wdHMuZG9uZSxqLm9wdHMuY29tcGxldGUpLmZhaWwoai5vcHRzLmZhaWwpLmFsd2F5cyhqLm9wdHMuYWx3YXlzKX1tLkFuaW1hdGlvbj1tLmV4dGVuZChrYyx7dHdlZW5lcjpmdW5jdGlvbihhLGIpe20uaXNGdW5jdGlvbihhKT8oYj1hLGE9WyIqIl0pOmE9YS5zcGxpdCgiICIpO2Zvcih2YXIgYyxkPTAsZT1hLmxlbmd0aDtlPmQ7ZCsrKWM9YVtkXSxlY1tjXT1lY1tjXXx8W10sZWNbY10udW5zaGlmdChiKX0scHJlZmlsdGVyOmZ1bmN0aW9uKGEsYil7Yj9kYy51bnNoaWZ0KGEpOmRjLnB1c2goYSl9fSksbS5zcGVlZD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSYmIm9iamVjdCI9PXR5cGVvZiBhP20uZXh0ZW5kKHt9LGEpOntjb21wbGV0ZTpjfHwhYyYmYnx8bS5pc0Z1bmN0aW9uKGEpJiZhLGR1cmF0aW9uOmEsZWFzaW5nOmMmJmJ8fGImJiFtLmlzRnVuY3Rpb24oYikmJmJ9O3JldHVybiBkLmR1cmF0aW9uPW0uZngub2ZmPzA6Im51bWJlciI9PXR5cGVvZiBkLmR1cmF0aW9uP2QuZHVyYXRpb246ZC5kdXJhdGlvbiBpbiBtLmZ4LnNwZWVkcz9tLmZ4LnNwZWVkc1tkLmR1cmF0aW9uXTptLmZ4LnNwZWVkcy5fZGVmYXVsdCwobnVsbD09ZC5xdWV1ZXx8ZC5xdWV1ZT09PSEwKSYmKGQucXVldWU9ImZ4IiksZC5vbGQ9ZC5jb21wbGV0ZSxkLmNvbXBsZXRlPWZ1bmN0aW9uKCl7bS5pc0Z1bmN0aW9uKGQub2xkKSYmZC5vbGQuY2FsbCh0aGlzKSxkLnF1ZXVlJiZtLmRlcXVldWUodGhpcyxkLnF1ZXVlKX0sZH0sbS5mbi5leHRlbmQoe2ZhZGVUbzpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5maWx0ZXIoVSkuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTpifSxhLGMsZCl9LGFuaW1hdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9bS5pc0VtcHR5T2JqZWN0KGEpLGY9bS5zcGVlZChiLGMsZCksZz1mdW5jdGlvbigpe3ZhciBiPWtjKHRoaXMsbS5leHRlbmQoe30sYSksZik7KGV8fG0uX2RhdGEodGhpcywiZmluaXNoIikpJiZiLnN0b3AoITApfTtyZXR1cm4gZy5maW5pc2g9ZyxlfHxmLnF1ZXVlPT09ITE/dGhpcy5lYWNoKGcpOnRoaXMucXVldWUoZi5xdWV1ZSxnKX0sc3RvcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5zdG9wO2RlbGV0ZSBhLnN0b3AsYihjKX07cmV0dXJuInN0cmluZyIhPXR5cGVvZiBhJiYoYz1iLGI9YSxhPXZvaWQgMCksYiYmYSE9PSExJiZ0aGlzLnF1ZXVlKGF8fCJmeCIsW10pLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPSEwLGU9bnVsbCE9YSYmYSsicXVldWVIb29rcyIsZj1tLnRpbWVycyxnPW0uX2RhdGEodGhpcyk7aWYoZSlnW2VdJiZnW2VdLnN0b3AmJmQoZ1tlXSk7ZWxzZSBmb3IoZSBpbiBnKWdbZV0mJmdbZV0uc3RvcCYmY2MudGVzdChlKSYmZChnW2VdKTtmb3IoZT1mLmxlbmd0aDtlLS07KWZbZV0uZWxlbSE9PXRoaXN8fG51bGwhPWEmJmZbZV0ucXVldWUhPT1hfHwoZltlXS5hbmltLnN0b3AoYyksYj0hMSxmLnNwbGljZShlLDEpKTsoYnx8IWMpJiZtLmRlcXVldWUodGhpcyxhKX0pfSxmaW5pc2g6ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPT0hMSYmKGE9YXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGIsYz1tLl9kYXRhKHRoaXMpLGQ9Y1thKyJxdWV1ZSJdLGU9Y1thKyJxdWV1ZUhvb2tzIl0sZj1tLnRpbWVycyxnPWQ/ZC5sZW5ndGg6MDtmb3IoYy5maW5pc2g9ITAsbS5xdWV1ZSh0aGlzLGEsW10pLGUmJmUuc3RvcCYmZS5zdG9wLmNhbGwodGhpcywhMCksYj1mLmxlbmd0aDtiLS07KWZbYl0uZWxlbT09PXRoaXMmJmZbYl0ucXVldWU9PT1hJiYoZltiXS5hbmltLnN0b3AoITApLGYuc3BsaWNlKGIsMSkpO2ZvcihiPTA7Zz5iO2IrKylkW2JdJiZkW2JdLmZpbmlzaCYmZFtiXS5maW5pc2guY2FsbCh0aGlzKTtkZWxldGUgYy5maW5pc2h9KX19KSxtLmVhY2goWyJ0b2dnbGUiLCJzaG93IiwiaGlkZSJdLGZ1bmN0aW9uKGEsYil7dmFyIGM9bS5mbltiXTttLmZuW2JdPWZ1bmN0aW9uKGEsZCxlKXtyZXR1cm4gbnVsbD09YXx8ImJvb2xlYW4iPT10eXBlb2YgYT9jLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0aGlzLmFuaW1hdGUoZ2MoYiwhMCksYSxkLGUpfX0pLG0uZWFjaCh7c2xpZGVEb3duOmdjKCJzaG93Iiksc2xpZGVVcDpnYygiaGlkZSIpLHNsaWRlVG9nZ2xlOmdjKCJ0b2dnbGUiKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2dsZTp7b3BhY2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGEsYil7bS5mblthXT1mdW5jdGlvbihhLGMsZCl7cmV0dXJuIHRoaXMuYW5pbWF0ZShiLGEsYyxkKX19KSxtLnRpbWVycz1bXSxtLmZ4LnRpY2s9ZnVuY3Rpb24oKXt2YXIgYSxiPW0udGltZXJzLGM9MDtmb3IoJGI9bS5ub3coKTtjPGIubGVuZ3RoO2MrKylhPWJbY10sYSgpfHxiW2NdIT09YXx8Yi5zcGxpY2UoYy0tLDEpO2IubGVuZ3RofHxtLmZ4LnN0b3AoKSwkYj12b2lkIDB9LG0uZngudGltZXI9ZnVuY3Rpb24oYSl7bS50aW1lcnMucHVzaChhKSxhKCk/bS5meC5zdGFydCgpOm0udGltZXJzLnBvcCgpfSxtLmZ4LmludGVydmFsPTEzLG0uZnguc3RhcnQ9ZnVuY3Rpb24oKXtfYnx8KF9iPXNldEludGVydmFsKG0uZngudGljayxtLmZ4LmludGVydmFsKSl9LG0uZnguc3RvcD1mdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwoX2IpLF9iPW51bGx9LG0uZnguc3BlZWRzPXtzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LG0uZm4uZGVsYXk9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1tLmZ4P20uZnguc3BlZWRzW2FdfHxhOmEsYj1ifHwiZngiLHRoaXMucXVldWUoYixmdW5jdGlvbihiLGMpe3ZhciBkPXNldFRpbWVvdXQoYixhKTtjLnN0b3A9ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoZCl9fSl9LGZ1bmN0aW9uKCl7dmFyIGEsYixjLGQsZTtiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksYi5zZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIsInQiKSxiLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixkPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXSxjPXkuY3JlYXRlRWxlbWVudCgic2VsZWN0IiksZT1jLmFwcGVuZENoaWxkKHkuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLGE9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSxkLnN0eWxlLmNzc1RleHQ9InRvcDoxcHgiLGsuZ2V0U2V0QXR0cmlidXRlPSJ0IiE9PWIuY2xhc3NOYW1lLGsuc3R5bGU9L3RvcC8udGVzdChkLmdldEF0dHJpYnV0ZSgic3R5bGUiKSksay5ocmVmTm9ybWFsaXplZD0iL2EiPT09ZC5nZXRBdHRyaWJ1dGUoImhyZWYiKSxrLmNoZWNrT249ISFhLnZhbHVlLGsub3B0U2VsZWN0ZWQ9ZS5zZWxlY3RlZCxrLmVuY3R5cGU9ISF5LmNyZWF0ZUVsZW1lbnQoImZvcm0iKS5lbmN0eXBlLGMuZGlzYWJsZWQ9ITAsay5vcHREaXNhYmxlZD0hZS5kaXNhYmxlZCxhPXkuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxhLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKSxrLmlucHV0PSIiPT09YS5nZXRBdHRyaWJ1dGUoInZhbHVlIiksYS52YWx1ZT0idCIsYS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLGsucmFkaW9WYWx1ZT0idCI9PT1hLnZhbHVlfSgpO3ZhciBsYz0vXHIvZzttLmZuLmV4dGVuZCh7dmFsOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlPXRoaXNbMF07e2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9bS5pc0Z1bmN0aW9uKGEpLHRoaXMuZWFjaChmdW5jdGlvbihjKXt2YXIgZTsxPT09dGhpcy5ub2RlVHlwZSYmKGU9ZD9hLmNhbGwodGhpcyxjLG0odGhpcykudmFsKCkpOmEsbnVsbD09ZT9lPSIiOiJudW1iZXIiPT10eXBlb2YgZT9lKz0iIjptLmlzQXJyYXkoZSkmJihlPW0ubWFwKGUsZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6YSsiIn0pKSxiPW0udmFsSG9va3NbdGhpcy50eXBlXXx8bS52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJzZXQiaW4gYiYmdm9pZCAwIT09Yi5zZXQodGhpcyxlLCJ2YWx1ZSIpfHwodGhpcy52YWx1ZT1lKSl9KTtpZihlKXJldHVybiBiPW0udmFsSG9va3NbZS50eXBlXXx8bS52YWxIb29rc1tlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJnZXQiaW4gYiYmdm9pZCAwIT09KGM9Yi5nZXQoZSwidmFsdWUiKSk/YzooYz1lLnZhbHVlLCJzdHJpbmciPT10eXBlb2YgYz9jLnJlcGxhY2UobGMsIiIpOm51bGw9PWM/IiI6Yyl9fX0pLG0uZXh0ZW5kKHt2YWxIb29rczp7b3B0aW9uOntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9bS5maW5kLmF0dHIoYSwidmFsdWUiKTtyZXR1cm4gbnVsbCE9Yj9iOm0udHJpbShtLnRleHQoYSkpfX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiLGMsZD1hLm9wdGlvbnMsZT1hLnNlbGVjdGVkSW5kZXgsZj0ic2VsZWN0LW9uZSI9PT1hLnR5cGV8fDA+ZSxnPWY/bnVsbDpbXSxoPWY/ZSsxOmQubGVuZ3RoLGk9MD5lP2g6Zj9lOjA7aD5pO2krKylpZihjPWRbaV0sISghYy5zZWxlY3RlZCYmaSE9PWV8fChrLm9wdERpc2FibGVkP2MuZGlzYWJsZWQ6bnVsbCE9PWMuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpKXx8Yy5wYXJlbnROb2RlLmRpc2FibGVkJiZtLm5vZGVOYW1lKGMucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKGI9bShjKS52YWwoKSxmKXJldHVybiBiO2cucHVzaChiKX1yZXR1cm4gZ30sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlPWEub3B0aW9ucyxmPW0ubWFrZUFycmF5KGIpLGc9ZS5sZW5ndGg7d2hpbGUoZy0tKWlmKGQ9ZVtnXSxtLmluQXJyYXkobS52YWxIb29rcy5vcHRpb24uZ2V0KGQpLGYpPj0wKXRyeXtkLnNlbGVjdGVkPWM9ITB9Y2F0Y2goaCl7ZC5zY3JvbGxIZWlnaHR9ZWxzZSBkLnNlbGVjdGVkPSExO3JldHVybiBjfHwoYS5zZWxlY3RlZEluZGV4PS0xKSxlfX19fSksbS5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7bS52YWxIb29rc1t0aGlzXT17c2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG0uaXNBcnJheShiKT9hLmNoZWNrZWQ9bS5pbkFycmF5KG0oYSkudmFsKCksYik+PTA6dm9pZCAwfX0say5jaGVja09ufHwobS52YWxIb29rc1t0aGlzXS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PT1hLmdldEF0dHJpYnV0ZSgidmFsdWUiKT8ib24iOmEudmFsdWV9KX0pO3ZhciBtYyxuYyxvYz1tLmV4cHIuYXR0ckhhbmRsZSxwYz0vXig/OmNoZWNrZWR8c2VsZWN0ZWQpJC9pLHFjPWsuZ2V0U2V0QXR0cmlidXRlLHJjPWsuaW5wdXQ7bS5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVih0aGlzLG0uYXR0cixhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bS5yZW1vdmVBdHRyKHRoaXMsYSl9KX19KSxtLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPWEubm9kZVR5cGU7aWYoYSYmMyE9PWYmJjghPT1mJiYyIT09ZilyZXR1cm4gdHlwZW9mIGEuZ2V0QXR0cmlidXRlPT09Sz9tLnByb3AoYSxiLGMpOigxPT09ZiYmbS5pc1hNTERvYyhhKXx8KGI9Yi50b0xvd2VyQ2FzZSgpLGQ9bS5hdHRySG9va3NbYl18fChtLmV4cHIubWF0Y2guYm9vbC50ZXN0KGIpP25jOm1jKSksdm9pZCAwPT09Yz9kJiYiZ2V0ImluIGQmJm51bGwhPT0oZT1kLmdldChhLGIpKT9lOihlPW0uZmluZC5hdHRyKGEsYiksbnVsbD09ZT92b2lkIDA6ZSk6bnVsbCE9PWM/ZCYmInNldCJpbiBkJiZ2b2lkIDAhPT0oZT1kLnNldChhLGMsYikpP2U6KGEuc2V0QXR0cmlidXRlKGIsYysiIiksYyk6dm9pZCBtLnJlbW92ZUF0dHIoYSxiKSl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9MCxmPWImJmIubWF0Y2goRSk7aWYoZiYmMT09PWEubm9kZVR5cGUpd2hpbGUoYz1mW2UrK10pZD1tLnByb3BGaXhbY118fGMsbS5leHByLm1hdGNoLmJvb2wudGVzdChjKT9yYyYmcWN8fCFwYy50ZXN0KGMpP2FbZF09ITE6YVttLmNhbWVsQ2FzZSgiZGVmYXVsdC0iK2MpXT1hW2RdPSExOm0uYXR0cihhLGMsIiIpLGEucmVtb3ZlQXR0cmlidXRlKHFjP2M6ZCl9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGEsYil7aWYoIWsucmFkaW9WYWx1ZSYmInJhZGlvIj09PWImJm0ubm9kZU5hbWUoYSwiaW5wdXQiKSl7dmFyIGM9YS52YWx1ZTtyZXR1cm4gYS5zZXRBdHRyaWJ1dGUoInR5cGUiLGIpLGMmJihhLnZhbHVlPWMpLGJ9fX19fSksbmM9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGI9PT0hMT9tLnJlbW92ZUF0dHIoYSxjKTpyYyYmcWN8fCFwYy50ZXN0KGMpP2Euc2V0QXR0cmlidXRlKCFxYyYmbS5wcm9wRml4W2NdfHxjLGMpOmFbbS5jYW1lbENhc2UoImRlZmF1bHQtIitjKV09YVtjXT0hMCxjfX0sbS5lYWNoKG0uZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCgvXHcrL2cpLGZ1bmN0aW9uKGEsYil7dmFyIGM9b2NbYl18fG0uZmluZC5hdHRyO29jW2JdPXJjJiZxY3x8IXBjLnRlc3QoYik/ZnVuY3Rpb24oYSxiLGQpe3ZhciBlLGY7cmV0dXJuIGR8fChmPW9jW2JdLG9jW2JdPWUsZT1udWxsIT1jKGEsYixkKT9iLnRvTG93ZXJDYXNlKCk6bnVsbCxvY1tiXT1mKSxlfTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGM/dm9pZCAwOmFbbS5jYW1lbENhc2UoImRlZmF1bHQtIitiKV0/Yi50b0xvd2VyQ2FzZSgpOm51bGx9fSkscmMmJnFjfHwobS5hdHRySG9va3MudmFsdWU9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG0ubm9kZU5hbWUoYSwiaW5wdXQiKT92b2lkKGEuZGVmYXVsdFZhbHVlPWIpOm1jJiZtYy5zZXQoYSxiLGMpfX0pLHFjfHwobWM9e3NldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRBdHRyaWJ1dGVOb2RlKGMpO3JldHVybiBkfHxhLnNldEF0dHJpYnV0ZU5vZGUoZD1hLm93bmVyRG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKGMpKSxkLnZhbHVlPWIrPSIiLCJ2YWx1ZSI9PT1jfHxiPT09YS5nZXRBdHRyaWJ1dGUoYyk/Yjp2b2lkIDB9fSxvYy5pZD1vYy5uYW1lPW9jLmNvb3Jkcz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGM/dm9pZCAwOihkPWEuZ2V0QXR0cmlidXRlTm9kZShiKSkmJiIiIT09ZC52YWx1ZT9kLnZhbHVlOm51bGx9LG0udmFsSG9va3MuYnV0dG9uPXtnZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmdldEF0dHJpYnV0ZU5vZGUoYik7cmV0dXJuIGMmJmMuc3BlY2lmaWVkP2MudmFsdWU6dm9pZCAwfSxzZXQ6bWMuc2V0fSxtLmF0dHJIb29rcy5jb250ZW50ZWRpdGFibGU9e3NldDpmdW5jdGlvbihhLGIsYyl7bWMuc2V0KGEsIiI9PT1iPyExOmIsYyl9fSxtLmVhY2goWyJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGEsYil7bS5hdHRySG9va3NbYl09e3NldDpmdW5jdGlvbihhLGMpe3JldHVybiIiPT09Yz8oYS5zZXRBdHRyaWJ1dGUoYiwiYXV0byIpLGMpOnZvaWQgMH19fSkpLGsuc3R5bGV8fChtLmF0dHJIb29rcy5zdHlsZT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnN0eWxlLmNzc1RleHR8fHZvaWQgMH0sc2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuc3R5bGUuY3NzVGV4dD1iKyIifX0pO3ZhciBzYz0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0KSQvaSx0Yz0vXig/OmF8YXJlYSkkL2k7bS5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVih0aGlzLG0ucHJvcCxhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihhKXtyZXR1cm4gYT1tLnByb3BGaXhbYV18fGEsdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dHJ5e3RoaXNbYV09dm9pZCAwLGRlbGV0ZSB0aGlzW2FdfWNhdGNoKGIpe319KX19KSxtLmV4dGVuZCh7cHJvcEZpeDp7ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSJ9LHByb3A6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnPWEubm9kZVR5cGU7aWYoYSYmMyE9PWcmJjghPT1nJiYyIT09ZylyZXR1cm4gZj0xIT09Z3x8IW0uaXNYTUxEb2MoYSksZiYmKGI9bS5wcm9wRml4W2JdfHxiLGU9bS5wcm9wSG9va3NbYl0pLHZvaWQgMCE9PWM/ZSYmInNldCJpbiBlJiZ2b2lkIDAhPT0oZD1lLnNldChhLGMsYikpP2Q6YVtiXT1jOmUmJiJnZXQiaW4gZSYmbnVsbCE9PShkPWUuZ2V0KGEsYikpP2Q6YVtiXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPW0uZmluZC5hdHRyKGEsInRhYmluZGV4Iik7cmV0dXJuIGI/cGFyc2VJbnQoYiwxMCk6c2MudGVzdChhLm5vZGVOYW1lKXx8dGMudGVzdChhLm5vZGVOYW1lKSYmYS5ocmVmPzA6LTF9fX19KSxrLmhyZWZOb3JtYWxpemVkfHxtLmVhY2goWyJocmVmIiwic3JjIl0sZnVuY3Rpb24oYSxiKXttLnByb3BIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZShiLDQpfX19KSxrLm9wdFNlbGVjdGVkfHwobS5wcm9wSG9va3Muc2VsZWN0ZWQ9e2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJihiLnNlbGVjdGVkSW5kZXgsYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCksbnVsbH19KSxtLmVhY2goWyJ0YWJJbmRleCIsInJlYWRPbmx5IiwibWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxsUGFkZGluZyIsInJvd1NwYW4iLCJjb2xTcGFuIiwidXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250ZW50RWRpdGFibGUiXSxmdW5jdGlvbigpe20ucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KSxrLmVuY3R5cGV8fChtLnByb3BGaXguZW5jdHlwZT0iZW5jb2RpbmciKTt2YXIgdWM9L1tcdFxyXG5cZl0vZzttLmZuLmV4dGVuZCh7YWRkQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGg9MCxpPXRoaXMubGVuZ3RoLGo9InN0cmluZyI9PXR5cGVvZiBhJiZhO2lmKG0uaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe20odGhpcykuYWRkQ2xhc3MoYS5jYWxsKHRoaXMsYix0aGlzLmNsYXNzTmFtZSkpfSk7aWYoailmb3IoYj0oYXx8IiIpLm1hdGNoKEUpfHxbXTtpPmg7aCsrKWlmKGM9dGhpc1toXSxkPTE9PT1jLm5vZGVUeXBlJiYoYy5jbGFzc05hbWU/KCIgIitjLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UodWMsIiAiKToiICIpKXtmPTA7d2hpbGUoZT1iW2YrK10pZC5pbmRleE9mKCIgIitlKyIgIik8MCYmKGQrPWUrIiAiKTtnPW0udHJpbShkKSxjLmNsYXNzTmFtZSE9PWcmJihjLmNsYXNzTmFtZT1nKX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGg9MCxpPXRoaXMubGVuZ3RoLGo9MD09PWFyZ3VtZW50cy5sZW5ndGh8fCJzdHJpbmciPT10eXBlb2YgYSYmYTtpZihtLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXttKHRoaXMpLnJlbW92ZUNsYXNzKGEuY2FsbCh0aGlzLGIsdGhpcy5jbGFzc05hbWUpKX0pO2lmKGopZm9yKGI9KGF8fCIiKS5tYXRjaChFKXx8W107aT5oO2grKylpZihjPXRoaXNbaF0sZD0xPT09Yy5ub2RlVHlwZSYmKGMuY2xhc3NOYW1lPygiICIrYy5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKHVjLCIgIik6IiIpKXtmPTA7d2hpbGUoZT1iW2YrK10pd2hpbGUoZC5pbmRleE9mKCIgIitlKyIgIik+PTApZD1kLnJlcGxhY2UoIiAiK2UrIiAiLCIgIik7Zz1hP20udHJpbShkKToiIixjLmNsYXNzTmFtZSE9PWcmJihjLmNsYXNzTmFtZT1nKX1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYTtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBiJiYic3RyaW5nIj09PWM/Yj90aGlzLmFkZENsYXNzKGEpOnRoaXMucmVtb3ZlQ2xhc3MoYSk6dGhpcy5lYWNoKG0uaXNGdW5jdGlvbihhKT9mdW5jdGlvbihjKXttKHRoaXMpLnRvZ2dsZUNsYXNzKGEuY2FsbCh0aGlzLGMsdGhpcy5jbGFzc05hbWUsYiksYil9OmZ1bmN0aW9uKCl7aWYoInN0cmluZyI9PT1jKXt2YXIgYixkPTAsZT1tKHRoaXMpLGY9YS5tYXRjaChFKXx8W107d2hpbGUoYj1mW2QrK10pZS5oYXNDbGFzcyhiKT9lLnJlbW92ZUNsYXNzKGIpOmUuYWRkQ2xhc3MoYil9ZWxzZShjPT09S3x8ImJvb2xlYW4iPT09YykmJih0aGlzLmNsYXNzTmFtZSYmbS5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIix0aGlzLmNsYXNzTmFtZSksdGhpcy5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWV8fGE9PT0hMT8iIjptLl9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiIpfSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0iICIrYSsiICIsYz0wLGQ9dGhpcy5sZW5ndGg7ZD5jO2MrKylpZigxPT09dGhpc1tjXS5ub2RlVHlwZSYmKCIgIit0aGlzW2NdLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UodWMsIiAiKS5pbmRleE9mKGIpPj0wKXJldHVybiEwO3JldHVybiExfX0pLG0uZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe20uZm5bYl09ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMub24oYixudWxsLGEsYyk6dGhpcy50cmlnZ2VyKGIpfX0pLG0uZm4uZXh0ZW5kKHtob3ZlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoYSkubW91c2VsZWF2ZShifHxhKX0sYmluZDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMub24oYSxudWxsLGIsYyl9LHVuYmluZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm9mZihhLG51bGwsYil9LGRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGIsYSxjLGQpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vZmYoYSwiKioiKTp0aGlzLm9mZihiLGF8fCIqKiIsYyl9fSk7dmFyIHZjPW0ubm93KCksd2M9L1w/Lyx4Yz0vKCwpfChcW3x7KXwofXxdKXwiKD86W14iXFxcclxuXXxcXFsiXFxcL2JmbnJ0XXxcXHVbXGRhLWZBLUZdezR9KSoiXHMqOj98dHJ1ZXxmYWxzZXxudWxsfC0/KD8hMFxkKVxkKyg/OlwuXGQrfCkoPzpbZUVdWystXT9cZCt8KS9nO20ucGFyc2VKU09OPWZ1bmN0aW9uKGIpe2lmKGEuSlNPTiYmYS5KU09OLnBhcnNlKXJldHVybiBhLkpTT04ucGFyc2UoYisiIik7dmFyIGMsZD1udWxsLGU9bS50cmltKGIrIiIpO3JldHVybiBlJiYhbS50cmltKGUucmVwbGFjZSh4YyxmdW5jdGlvbihhLGIsZSxmKXtyZXR1cm4gYyYmYiYmKGQ9MCksMD09PWQ/YTooYz1lfHxiLGQrPSFmLSFlLCIiKX0pKT9GdW5jdGlvbigicmV0dXJuICIrZSkoKTptLmVycm9yKCJJbnZhbGlkIEpTT046ICIrYil9LG0ucGFyc2VYTUw9ZnVuY3Rpb24oYil7dmFyIGMsZDtpZighYnx8InN0cmluZyIhPXR5cGVvZiBiKXJldHVybiBudWxsO3RyeXthLkRPTVBhcnNlcj8oZD1uZXcgRE9NUGFyc2VyLGM9ZC5wYXJzZUZyb21TdHJpbmcoYiwidGV4dC94bWwiKSk6KGM9bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxET00iKSxjLmFzeW5jPSJmYWxzZSIsYy5sb2FkWE1MKGIpKX1jYXRjaChlKXtjPXZvaWQgMH1yZXR1cm4gYyYmYy5kb2N1bWVudEVsZW1lbnQmJiFjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpLmxlbmd0aHx8bS5lcnJvcigiSW52YWxpZCBYTUw6ICIrYiksY307dmFyIHljLHpjLEFjPS8jLiokLyxCYz0vKFs/Jl0pXz1bXiZdKi8sQ2M9L14oLio/KTpbIFx0XSooW15cclxuXSopXHI/JC9nbSxEYz0vXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLyxFYz0vXig/OkdFVHxIRUFEKSQvLEZjPS9eXC9cLy8sR2M9L14oW1x3ListXSs6KSg/OlwvXC8oPzpbXlwvPyNdKkB8KShbXlwvPyM6XSopKD86OihcZCspfCl8KS8sSGM9e30sSWM9e30sSmM9IiovIi5jb25jYXQoIioiKTt0cnl7emM9bG9jYXRpb24uaHJlZn1jYXRjaChLYyl7emM9eS5jcmVhdGVFbGVtZW50KCJhIiksemMuaHJlZj0iIix6Yz16Yy5ocmVmfXljPUdjLmV4ZWMoemMudG9Mb3dlckNhc2UoKSl8fFtdO2Z1bmN0aW9uIExjKGEpe3JldHVybiBmdW5jdGlvbihiLGMpeyJzdHJpbmciIT10eXBlb2YgYiYmKGM9YixiPSIqIik7dmFyIGQsZT0wLGY9Yi50b0xvd2VyQ2FzZSgpLm1hdGNoKEUpfHxbXTtpZihtLmlzRnVuY3Rpb24oYykpd2hpbGUoZD1mW2UrK10pIisiPT09ZC5jaGFyQXQoMCk/KGQ9ZC5zbGljZSgxKXx8IioiLChhW2RdPWFbZF18fFtdKS51bnNoaWZ0KGMpKTooYVtkXT1hW2RdfHxbXSkucHVzaChjKX19ZnVuY3Rpb24gTWMoYSxiLGMsZCl7dmFyIGU9e30sZj1hPT09SWM7ZnVuY3Rpb24gZyhoKXt2YXIgaTtyZXR1cm4gZVtoXT0hMCxtLmVhY2goYVtoXXx8W10sZnVuY3Rpb24oYSxoKXt2YXIgaj1oKGIsYyxkKTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGp8fGZ8fGVbal0/Zj8hKGk9aik6dm9pZCAwOihiLmRhdGFUeXBlcy51bnNoaWZ0KGopLGcoaiksITEpfSksaX1yZXR1cm4gZyhiLmRhdGFUeXBlc1swXSl8fCFlWyIqIl0mJmcoIioiKX1mdW5jdGlvbiBOYyhhLGIpe3ZhciBjLGQsZT1tLmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9uc3x8e307Zm9yKGQgaW4gYil2b2lkIDAhPT1iW2RdJiYoKGVbZF0/YTpjfHwoYz17fSkpW2RdPWJbZF0pO3JldHVybiBjJiZtLmV4dGVuZCghMCxhLGMpLGF9ZnVuY3Rpb24gT2MoYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5jb250ZW50cyxpPWEuZGF0YVR5cGVzO3doaWxlKCIqIj09PWlbMF0paS5zaGlmdCgpLHZvaWQgMD09PWUmJihlPWEubWltZVR5cGV8fGIuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihlKWZvcihnIGluIGgpaWYoaFtnXSYmaFtnXS50ZXN0KGUpKXtpLnVuc2hpZnQoZyk7YnJlYWt9aWYoaVswXWluIGMpZj1pWzBdO2Vsc2V7Zm9yKGcgaW4gYyl7aWYoIWlbMF18fGEuY29udmVydGVyc1tnKyIgIitpWzBdXSl7Zj1nO2JyZWFrfWR8fChkPWcpfWY9Znx8ZH1yZXR1cm4gZj8oZiE9PWlbMF0mJmkudW5zaGlmdChmKSxjW2ZdKTp2b2lkIDB9ZnVuY3Rpb24gUGMoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqPXt9LGs9YS5kYXRhVHlwZXMuc2xpY2UoKTtpZihrWzFdKWZvcihnIGluIGEuY29udmVydGVycylqW2cudG9Mb3dlckNhc2UoKV09YS5jb252ZXJ0ZXJzW2ddO2Y9ay5zaGlmdCgpO3doaWxlKGYpaWYoYS5yZXNwb25zZUZpZWxkc1tmXSYmKGNbYS5yZXNwb25zZUZpZWxkc1tmXV09YiksIWkmJmQmJmEuZGF0YUZpbHRlciYmKGI9YS5kYXRhRmlsdGVyKGIsYS5kYXRhVHlwZSkpLGk9ZixmPWsuc2hpZnQoKSlpZigiKiI9PT1mKWY9aTtlbHNlIGlmKCIqIiE9PWkmJmkhPT1mKXtpZihnPWpbaSsiICIrZl18fGpbIiogIitmXSwhZylmb3IoZSBpbiBqKWlmKGg9ZS5zcGxpdCgiICIpLGhbMV09PT1mJiYoZz1qW2krIiAiK2hbMF1dfHxqWyIqICIraFswXV0pKXtnPT09ITA/Zz1qW2VdOmpbZV0hPT0hMCYmKGY9aFswXSxrLnVuc2hpZnQoaFsxXSkpO2JyZWFrfWlmKGchPT0hMClpZihnJiZhWyJ0aHJvd3MiXSliPWcoYik7ZWxzZSB0cnl7Yj1nKGIpfWNhdGNoKGwpe3JldHVybntzdGF0ZToicGFyc2VyZXJyb3IiLGVycm9yOmc/bDoiTm8gY29udmVyc2lvbiBmcm9tICIraSsiIHRvICIrZn19fXJldHVybntzdGF0ZToic3VjY2VzcyIsZGF0YTpifX1tLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6emMsdHlwZToiR0VUIixpc0xvY2FsOkRjLnRlc3QoeWNbMV0pLGdsb2JhbDohMCxwcm9jZXNzRGF0YTohMCxhc3luYzohMCxjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04IixhY2NlcHRzOnsiKiI6SmMsdGV4dDoidGV4dC9wbGFpbiIsaHRtbDoidGV4dC9odG1sIix4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGpzb246ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCJ9LGNvbnRlbnRzOnt4bWw6L3htbC8saHRtbDovaHRtbC8sanNvbjovanNvbi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQiLGpzb246InJlc3BvbnNlSlNPTiJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjptLnBhcnNlSlNPTiwidGV4dCB4bWwiOm0ucGFyc2VYTUx9LGZsYXRPcHRpb25zOnt1cmw6ITAsY29udGV4dDohMH19LGFqYXhTZXR1cDpmdW5jdGlvbihhLGIpe3JldHVybiBiP05jKE5jKGEsbS5hamF4U2V0dGluZ3MpLGIpOk5jKG0uYWpheFNldHRpbmdzLGEpfSxhamF4UHJlZmlsdGVyOkxjKEhjKSxhamF4VHJhbnNwb3J0OkxjKEljKSxhamF4OmZ1bmN0aW9uKGEsYil7Im9iamVjdCI9PXR5cGVvZiBhJiYoYj1hLGE9dm9pZCAwKSxiPWJ8fHt9O3ZhciBjLGQsZSxmLGcsaCxpLGosaz1tLmFqYXhTZXR1cCh7fSxiKSxsPWsuY29udGV4dHx8ayxuPWsuY29udGV4dCYmKGwubm9kZVR5cGV8fGwuanF1ZXJ5KT9tKGwpOm0uZXZlbnQsbz1tLkRlZmVycmVkKCkscD1tLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxxPWsuc3RhdHVzQ29kZXx8e30scj17fSxzPXt9LHQ9MCx1PSJjYW5jZWxlZCIsdj17cmVhZHlTdGF0ZTowLGdldFJlc3BvbnNlSGVhZGVyOmZ1bmN0aW9uKGEpe3ZhciBiO2lmKDI9PT10KXtpZighail7aj17fTt3aGlsZShiPUNjLmV4ZWMoZikpaltiWzFdLnRvTG93ZXJDYXNlKCldPWJbMl19Yj1qW2EudG9Mb3dlckNhc2UoKV19cmV0dXJuIG51bGw9PWI/bnVsbDpifSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXQ/ZjpudWxsfSxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKGEsYil7dmFyIGM9YS50b0xvd2VyQ2FzZSgpO3JldHVybiB0fHwoYT1zW2NdPXNbY118fGEsclthXT1iKSx0aGlzfSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKGEpe3JldHVybiB0fHwoay5taW1lVHlwZT1hKSx0aGlzfSxzdGF0dXNDb2RlOmZ1bmN0aW9uKGEpe3ZhciBiO2lmKGEpaWYoMj50KWZvcihiIGluIGEpcVtiXT1bcVtiXSxhW2JdXTtlbHNlIHYuYWx3YXlzKGFbdi5zdGF0dXNdKTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YXx8dTtyZXR1cm4gaSYmaS5hYm9ydChiKSx4KDAsYiksdGhpc319O2lmKG8ucHJvbWlzZSh2KS5jb21wbGV0ZT1wLmFkZCx2LnN1Y2Nlc3M9di5kb25lLHYuZXJyb3I9di5mYWlsLGsudXJsPSgoYXx8ay51cmx8fHpjKSsiIikucmVwbGFjZShBYywiIikucmVwbGFjZShGYyx5Y1sxXSsiLy8iKSxrLnR5cGU9Yi5tZXRob2R8fGIudHlwZXx8ay5tZXRob2R8fGsudHlwZSxrLmRhdGFUeXBlcz1tLnRyaW0oay5kYXRhVHlwZXx8IioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKEUpfHxbIiJdLG51bGw9PWsuY3Jvc3NEb21haW4mJihjPUdjLmV4ZWMoay51cmwudG9Mb3dlckNhc2UoKSksay5jcm9zc0RvbWFpbj0hKCFjfHxjWzFdPT09eWNbMV0mJmNbMl09PT15Y1syXSYmKGNbM118fCgiaHR0cDoiPT09Y1sxXT8iODAiOiI0NDMiKSk9PT0oeWNbM118fCgiaHR0cDoiPT09eWNbMV0/IjgwIjoiNDQzIikpKSksay5kYXRhJiZrLnByb2Nlc3NEYXRhJiYic3RyaW5nIiE9dHlwZW9mIGsuZGF0YSYmKGsuZGF0YT1tLnBhcmFtKGsuZGF0YSxrLnRyYWRpdGlvbmFsKSksTWMoSGMsayxiLHYpLDI9PT10KXJldHVybiB2O2g9ay5nbG9iYWwsaCYmMD09PW0uYWN0aXZlKysmJm0uZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0Iiksay50eXBlPWsudHlwZS50b1VwcGVyQ2FzZSgpLGsuaGFzQ29udGVudD0hRWMudGVzdChrLnR5cGUpLGU9ay51cmwsay5oYXNDb250ZW50fHwoay5kYXRhJiYoZT1rLnVybCs9KHdjLnRlc3QoZSk/IiYiOiI/Iikray5kYXRhLGRlbGV0ZSBrLmRhdGEpLGsuY2FjaGU9PT0hMSYmKGsudXJsPUJjLnRlc3QoZSk/ZS5yZXBsYWNlKEJjLCIkMV89Iit2YysrKTplKyh3Yy50ZXN0KGUpPyImIjoiPyIpKyJfPSIrdmMrKykpLGsuaWZNb2RpZmllZCYmKG0ubGFzdE1vZGlmaWVkW2VdJiZ2LnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIixtLmxhc3RNb2RpZmllZFtlXSksbS5ldGFnW2VdJiZ2LnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLG0uZXRhZ1tlXSkpLChrLmRhdGEmJmsuaGFzQ29udGVudCYmay5jb250ZW50VHlwZSE9PSExfHxiLmNvbnRlbnRUeXBlKSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLGsuY29udGVudFR5cGUpLHYuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IixrLmRhdGFUeXBlc1swXSYmay5hY2NlcHRzW2suZGF0YVR5cGVzWzBdXT9rLmFjY2VwdHNbay5kYXRhVHlwZXNbMF1dKygiKiIhPT1rLmRhdGFUeXBlc1swXT8iLCAiK0pjKyI7IHE9MC4wMSI6IiIpOmsuYWNjZXB0c1siKiJdKTtmb3IoZCBpbiBrLmhlYWRlcnMpdi5zZXRSZXF1ZXN0SGVhZGVyKGQsay5oZWFkZXJzW2RdKTtpZihrLmJlZm9yZVNlbmQmJihrLmJlZm9yZVNlbmQuY2FsbChsLHYsayk9PT0hMXx8Mj09PXQpKXJldHVybiB2LmFib3J0KCk7dT0iYWJvcnQiO2ZvcihkIGlue3N1Y2Nlc3M6MSxlcnJvcjoxLGNvbXBsZXRlOjF9KXZbZF0oa1tkXSk7aWYoaT1NYyhJYyxrLGIsdikpe3YucmVhZHlTdGF0ZT0xLGgmJm4udHJpZ2dlcigiYWpheFNlbmQiLFt2LGtdKSxrLmFzeW5jJiZrLnRpbWVvdXQ+MCYmKGc9c2V0VGltZW91dChmdW5jdGlvbigpe3YuYWJvcnQoInRpbWVvdXQiKX0say50aW1lb3V0KSk7dHJ5e3Q9MSxpLnNlbmQocix4KX1jYXRjaCh3KXtpZighKDI+dCkpdGhyb3cgdzt4KC0xLHcpfX1lbHNlIHgoLTEsIk5vIFRyYW5zcG9ydCIpO2Z1bmN0aW9uIHgoYSxiLGMsZCl7dmFyIGoscixzLHUsdyx4PWI7MiE9PXQmJih0PTIsZyYmY2xlYXJUaW1lb3V0KGcpLGk9dm9pZCAwLGY9ZHx8IiIsdi5yZWFkeVN0YXRlPWE+MD80OjAsaj1hPj0yMDAmJjMwMD5hfHwzMDQ9PT1hLGMmJih1PU9jKGssdixjKSksdT1QYyhrLHUsdixqKSxqPyhrLmlmTW9kaWZpZWQmJih3PXYuZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSx3JiYobS5sYXN0TW9kaWZpZWRbZV09dyksdz12LmdldFJlc3BvbnNlSGVhZGVyKCJldGFnIiksdyYmKG0uZXRhZ1tlXT13KSksMjA0PT09YXx8IkhFQUQiPT09ay50eXBlP3g9Im5vY29udGVudCI6MzA0PT09YT94PSJub3Rtb2RpZmllZCI6KHg9dS5zdGF0ZSxyPXUuZGF0YSxzPXUuZXJyb3Isaj0hcykpOihzPXgsKGF8fCF4KSYmKHg9ImVycm9yIiwwPmEmJihhPTApKSksdi5zdGF0dXM9YSx2LnN0YXR1c1RleHQ9KGJ8fHgpKyIiLGo/by5yZXNvbHZlV2l0aChsLFtyLHgsdl0pOm8ucmVqZWN0V2l0aChsLFt2LHgsc10pLHYuc3RhdHVzQ29kZShxKSxxPXZvaWQgMCxoJiZuLnRyaWdnZXIoaj8iYWpheFN1Y2Nlc3MiOiJhamF4RXJyb3IiLFt2LGssaj9yOnNdKSxwLmZpcmVXaXRoKGwsW3YseF0pLGgmJihuLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW3Ysa10pLC0tbS5hY3RpdmV8fG0uZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSkpfXJldHVybiB2fSxnZXRKU09OOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbS5nZXQoYSxiLGMsImpzb24iKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG0uZ2V0KGEsdm9pZCAwLGIsInNjcmlwdCIpfX0pLG0uZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihhLGIpe21bYl09ZnVuY3Rpb24oYSxjLGQsZSl7cmV0dXJuIG0uaXNGdW5jdGlvbihjKSYmKGU9ZXx8ZCxkPWMsYz12b2lkIDApLG0uYWpheCh7dXJsOmEsdHlwZTpiLGRhdGFUeXBlOmUsZGF0YTpjLHN1Y2Nlc3M6ZH0pfX0pLG0uZWFjaChbImFqYXhTdGFydCIsImFqYXhTdG9wIiwiYWpheENvbXBsZXRlIiwiYWpheEVycm9yIiwiYWpheFN1Y2Nlc3MiLCJhamF4U2VuZCJdLGZ1bmN0aW9uKGEsYil7bS5mbltiXT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5vbihiLGEpfX0pLG0uX2V2YWxVcmw9ZnVuY3Rpb24oYSl7cmV0dXJuIG0uYWpheCh7dXJsOmEsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0Iixhc3luYzohMSxnbG9iYWw6ITEsInRocm93cyI6ITB9KX0sbS5mbi5leHRlbmQoe3dyYXBBbGw6ZnVuY3Rpb24oYSl7aWYobS5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7bSh0aGlzKS53cmFwQWxsKGEuY2FsbCh0aGlzLGIpKX0pO2lmKHRoaXNbMF0pe3ZhciBiPW0oYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKTt0aGlzWzBdLnBhcmVudE5vZGUmJmIuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLGIubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpczt3aGlsZShhLmZpcnN0Q2hpbGQmJjE9PT1hLmZpcnN0Q2hpbGQubm9kZVR5cGUpYT1hLmZpcnN0Q2hpbGQ7cmV0dXJuIGF9KS5hcHBlbmQodGhpcyl9cmV0dXJuIHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKG0uaXNGdW5jdGlvbihhKT9mdW5jdGlvbihiKXttKHRoaXMpLndyYXBJbm5lcihhLmNhbGwodGhpcyxiKSl9OmZ1bmN0aW9uKCl7dmFyIGI9bSh0aGlzKSxjPWIuY29udGVudHMoKTtjLmxlbmd0aD9jLndyYXBBbGwoYSk6Yi5hcHBlbmQoYSl9KX0sd3JhcDpmdW5jdGlvbihhKXt2YXIgYj1tLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXttKHRoaXMpLndyYXBBbGwoYj9hLmNhbGwodGhpcyxjKTphKX0pfSx1bndyYXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7bS5ub2RlTmFtZSh0aGlzLCJib2R5Iil8fG0odGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLmVuZCgpfX0pLG0uZXhwci5maWx0ZXJzLmhpZGRlbj1mdW5jdGlvbihhKXtyZXR1cm4gYS5vZmZzZXRXaWR0aDw9MCYmYS5vZmZzZXRIZWlnaHQ8PTB8fCFrLnJlbGlhYmxlSGlkZGVuT2Zmc2V0cygpJiYibm9uZSI9PT0oYS5zdHlsZSYmYS5zdHlsZS5kaXNwbGF5fHxtLmNzcyhhLCJkaXNwbGF5IikpfSxtLmV4cHIuZmlsdGVycy52aXNpYmxlPWZ1bmN0aW9uKGEpe3JldHVybiFtLmV4cHIuZmlsdGVycy5oaWRkZW4oYSl9O3ZhciBRYz0vJTIwL2csUmM9L1xbXF0kLyxTYz0vXHI/XG4vZyxUYz0vXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksVWM9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pO2Z1bmN0aW9uIFZjKGEsYixjLGQpe3ZhciBlO2lmKG0uaXNBcnJheShiKSltLmVhY2goYixmdW5jdGlvbihiLGUpe2N8fFJjLnRlc3QoYSk/ZChhLGUpOlZjKGErIlsiKygib2JqZWN0Ij09dHlwZW9mIGU/YjoiIikrIl0iLGUsYyxkKX0pO2Vsc2UgaWYoY3x8Im9iamVjdCIhPT1tLnR5cGUoYikpZChhLGIpO2Vsc2UgZm9yKGUgaW4gYilWYyhhKyJbIitlKyJdIixiW2VdLGMsZCl9bS5wYXJhbT1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT1mdW5jdGlvbihhLGIpe2I9bS5pc0Z1bmN0aW9uKGIpP2IoKTpudWxsPT1iPyIiOmIsZFtkLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGEpKyI9IitlbmNvZGVVUklDb21wb25lbnQoYil9O2lmKHZvaWQgMD09PWImJihiPW0uYWpheFNldHRpbmdzJiZtLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCksbS5pc0FycmF5KGEpfHxhLmpxdWVyeSYmIW0uaXNQbGFpbk9iamVjdChhKSltLmVhY2goYSxmdW5jdGlvbigpe2UodGhpcy5uYW1lLHRoaXMudmFsdWUpfSk7ZWxzZSBmb3IoYyBpbiBhKVZjKGMsYVtjXSxiLGUpO3JldHVybiBkLmpvaW4oIiYiKS5yZXBsYWNlKFFjLCIrIil9LG0uZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gbS5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPW0ucHJvcCh0aGlzLCJlbGVtZW50cyIpO3JldHVybiBhP20ubWFrZUFycmF5KGEpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgYT10aGlzLnR5cGU7cmV0dXJuIHRoaXMubmFtZSYmIW0odGhpcykuaXMoIjpkaXNhYmxlZCIpJiZVYy50ZXN0KHRoaXMubm9kZU5hbWUpJiYhVGMudGVzdChhKSYmKHRoaXMuY2hlY2tlZHx8IVcudGVzdChhKSl9KS5tYXAoZnVuY3Rpb24oYSxiKXt2YXIgYz1tKHRoaXMpLnZhbCgpO3JldHVybiBudWxsPT1jP251bGw6bS5pc0FycmF5KGMpP20ubWFwKGMsZnVuY3Rpb24oYSl7cmV0dXJue25hbWU6Yi5uYW1lLHZhbHVlOmEucmVwbGFjZShTYywiXHJcbiIpfX0pOntuYW1lOmIubmFtZSx2YWx1ZTpjLnJlcGxhY2UoU2MsIlxyXG4iKX19KS5nZXQoKX19KSxtLmFqYXhTZXR0aW5ncy54aHI9dm9pZCAwIT09YS5BY3RpdmVYT2JqZWN0P2Z1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNMb2NhbCYmL14oZ2V0fHBvc3R8aGVhZHxwdXR8ZGVsZXRlfG9wdGlvbnMpJC9pLnRlc3QodGhpcy50eXBlKSYmWmMoKXx8JGMoKX06WmM7dmFyIFdjPTAsWGM9e30sWWM9bS5hamF4U2V0dGluZ3MueGhyKCk7YS5BY3RpdmVYT2JqZWN0JiZtKGEpLm9uKCJ1bmxvYWQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBhIGluIFhjKVhjW2FdKHZvaWQgMCwhMCl9KSxrLmNvcnM9ISFZYyYmIndpdGhDcmVkZW50aWFscyJpbiBZYyxZYz1rLmFqYXg9ISFZYyxZYyYmbS5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGEpe2lmKCFhLmNyb3NzRG9tYWlufHxrLmNvcnMpe3ZhciBiO3JldHVybntzZW5kOmZ1bmN0aW9uKGMsZCl7dmFyIGUsZj1hLnhocigpLGc9KytXYztpZihmLm9wZW4oYS50eXBlLGEudXJsLGEuYXN5bmMsYS51c2VybmFtZSxhLnBhc3N3b3JkKSxhLnhockZpZWxkcylmb3IoZSBpbiBhLnhockZpZWxkcylmW2VdPWEueGhyRmllbGRzW2VdO2EubWltZVR5cGUmJmYub3ZlcnJpZGVNaW1lVHlwZSYmZi5vdmVycmlkZU1pbWVUeXBlKGEubWltZVR5cGUpLGEuY3Jvc3NEb21haW58fGNbIlgtUmVxdWVzdGVkLVdpdGgiXXx8KGNbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTtmb3IoZSBpbiBjKXZvaWQgMCE9PWNbZV0mJmYuc2V0UmVxdWVzdEhlYWRlcihlLGNbZV0rIiIpO2Yuc2VuZChhLmhhc0NvbnRlbnQmJmEuZGF0YXx8bnVsbCksYj1mdW5jdGlvbihjLGUpe3ZhciBoLGksajtpZihiJiYoZXx8ND09PWYucmVhZHlTdGF0ZSkpaWYoZGVsZXRlIFhjW2ddLGI9dm9pZCAwLGYub25yZWFkeXN0YXRlY2hhbmdlPW0ubm9vcCxlKTQhPT1mLnJlYWR5U3RhdGUmJmYuYWJvcnQoKTtlbHNle2o9e30saD1mLnN0YXR1cywic3RyaW5nIj09dHlwZW9mIGYucmVzcG9uc2VUZXh0JiYoai50ZXh0PWYucmVzcG9uc2VUZXh0KTt0cnl7aT1mLnN0YXR1c1RleHR9Y2F0Y2goayl7aT0iIn1ofHwhYS5pc0xvY2FsfHxhLmNyb3NzRG9tYWluPzEyMjM9PT1oJiYoaD0yMDQpOmg9ai50ZXh0PzIwMDo0MDR9aiYmZChoLGksaixmLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKX0sYS5hc3luYz80PT09Zi5yZWFkeVN0YXRlP3NldFRpbWVvdXQoYik6Zi5vbnJlYWR5c3RhdGVjaGFuZ2U9WGNbZ109YjpiKCl9LGFib3J0OmZ1bmN0aW9uKCl7YiYmYih2b2lkIDAsITApfX19fSk7ZnVuY3Rpb24gWmMoKXt0cnl7cmV0dXJuIG5ldyBhLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKGIpe319ZnVuY3Rpb24gJGMoKXt0cnl7cmV0dXJuIG5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9Y2F0Y2goYil7fX1tLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6Lyg/OmphdmF8ZWNtYSlzY3JpcHQvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKGEpe3JldHVybiBtLmdsb2JhbEV2YWwoYSksYX19fSksbS5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEuY2FjaGUmJihhLmNhY2hlPSExKSxhLmNyb3NzRG9tYWluJiYoYS50eXBlPSJHRVQiLGEuZ2xvYmFsPSExKX0pLG0uYWpheFRyYW5zcG9ydCgic2NyaXB0IixmdW5jdGlvbihhKXtpZihhLmNyb3NzRG9tYWluKXt2YXIgYixjPXkuaGVhZHx8bSgiaGVhZCIpWzBdfHx5LmRvY3VtZW50RWxlbWVudDtyZXR1cm57c2VuZDpmdW5jdGlvbihkLGUpe2I9eS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxiLmFzeW5jPSEwLGEuc2NyaXB0Q2hhcnNldCYmKGIuY2hhcnNldD1hLnNjcmlwdENoYXJzZXQpLGIuc3JjPWEudXJsLGIub25sb2FkPWIub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKGEsYyl7KGN8fCFiLnJlYWR5U3RhdGV8fC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoYi5yZWFkeVN0YXRlKSkmJihiLm9ubG9hZD1iLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbCxjfHxlKDIwMCwic3VjY2VzcyIpKX0sYy5pbnNlcnRCZWZvcmUoYixjLmZpcnN0Q2hpbGQpfSxhYm9ydDpmdW5jdGlvbigpe2ImJmIub25sb2FkKHZvaWQgMCwhMCl9fX19KTt2YXIgX2M9W10sYWQ9Lyg9KVw/KD89JnwkKXxcP1w/LzttLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGE9X2MucG9wKCl8fG0uZXhwYW5kbysiXyIrdmMrKztyZXR1cm4gdGhpc1thXT0hMCxhfX0pLG0uYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oYixjLGQpe3ZhciBlLGYsZyxoPWIuanNvbnAhPT0hMSYmKGFkLnRlc3QoYi51cmwpPyJ1cmwiOiJzdHJpbmciPT10eXBlb2YgYi5kYXRhJiYhKGIuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmYWQudGVzdChiLmRhdGEpJiYiZGF0YSIpO3JldHVybiBofHwianNvbnAiPT09Yi5kYXRhVHlwZXNbMF0/KGU9Yi5qc29ucENhbGxiYWNrPW0uaXNGdW5jdGlvbihiLmpzb25wQ2FsbGJhY2spP2IuanNvbnBDYWxsYmFjaygpOmIuanNvbnBDYWxsYmFjayxoP2JbaF09YltoXS5yZXBsYWNlKGFkLCIkMSIrZSk6Yi5qc29ucCE9PSExJiYoYi51cmwrPSh3Yy50ZXN0KGIudXJsKT8iJiI6Ij8iKStiLmpzb25wKyI9IitlKSxiLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtyZXR1cm4gZ3x8bS5lcnJvcihlKyIgd2FzIG5vdCBjYWxsZWQiKSxnWzBdfSxiLmRhdGFUeXBlc1swXT0ianNvbiIsZj1hW2VdLGFbZV09ZnVuY3Rpb24oKXtnPWFyZ3VtZW50c30sZC5hbHdheXMoZnVuY3Rpb24oKXthW2VdPWYsYltlXSYmKGIuanNvbnBDYWxsYmFjaz1jLmpzb25wQ2FsbGJhY2ssX2MucHVzaChlKSksZyYmbS5pc0Z1bmN0aW9uKGYpJiZmKGdbMF0pLGc9Zj12b2lkIDB9KSwic2NyaXB0Iik6dm9pZCAwfSksbS5wYXJzZUhUTUw9ZnVuY3Rpb24oYSxiLGMpe2lmKCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIG51bGw7ImJvb2xlYW4iPT10eXBlb2YgYiYmKGM9YixiPSExKSxiPWJ8fHk7dmFyIGQ9dS5leGVjKGEpLGU9IWMmJltdO3JldHVybiBkP1tiLmNyZWF0ZUVsZW1lbnQoZFsxXSldOihkPW0uYnVpbGRGcmFnbWVudChbYV0sYixlKSxlJiZlLmxlbmd0aCYmbShlKS5yZW1vdmUoKSxtLm1lcmdlKFtdLGQuY2hpbGROb2RlcykpfTt2YXIgYmQ9bS5mbi5sb2FkO20uZm4ubG9hZD1mdW5jdGlvbihhLGIsYyl7aWYoInN0cmluZyIhPXR5cGVvZiBhJiZiZClyZXR1cm4gYmQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBkLGUsZixnPXRoaXMsaD1hLmluZGV4T2YoIiAiKTtyZXR1cm4gaD49MCYmKGQ9bS50cmltKGEuc2xpY2UoaCxhLmxlbmd0aCkpLGE9YS5zbGljZSgwLGgpKSxtLmlzRnVuY3Rpb24oYik/KGM9YixiPXZvaWQgMCk6YiYmIm9iamVjdCI9PXR5cGVvZiBiJiYoZj0iUE9TVCIpLGcubGVuZ3RoPjAmJm0uYWpheCh7dXJsOmEsdHlwZTpmLGRhdGFUeXBlOiJodG1sIixkYXRhOmJ9KS5kb25lKGZ1bmN0aW9uKGEpe2U9YXJndW1lbnRzLGcuaHRtbChkP20oIjxkaXY+IikuYXBwZW5kKG0ucGFyc2VIVE1MKGEpKS5maW5kKGQpOmEpfSkuY29tcGxldGUoYyYmZnVuY3Rpb24oYSxiKXtnLmVhY2goYyxlfHxbYS5yZXNwb25zZVRleHQsYixhXSl9KSx0aGlzfSxtLmV4cHIuZmlsdGVycy5hbmltYXRlZD1mdW5jdGlvbihhKXtyZXR1cm4gbS5ncmVwKG0udGltZXJzLGZ1bmN0aW9uKGIpe3JldHVybiBhPT09Yi5lbGVtfSkubGVuZ3RofTt2YXIgY2Q9YS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7ZnVuY3Rpb24gZGQoYSl7cmV0dXJuIG0uaXNXaW5kb3coYSk/YTo5PT09YS5ub2RlVHlwZT9hLmRlZmF1bHRWaWV3fHxhLnBhcmVudFdpbmRvdzohMX1tLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrPW0uY3NzKGEsInBvc2l0aW9uIiksbD1tKGEpLG49e307InN0YXRpYyI9PT1rJiYoYS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSxoPWwub2Zmc2V0KCksZj1tLmNzcyhhLCJ0b3AiKSxpPW0uY3NzKGEsImxlZnQiKSxqPSgiYWJzb2x1dGUiPT09a3x8ImZpeGVkIj09PWspJiZtLmluQXJyYXkoImF1dG8iLFtmLGldKT4tMSxqPyhkPWwucG9zaXRpb24oKSxnPWQudG9wLGU9ZC5sZWZ0KTooZz1wYXJzZUZsb2F0KGYpfHwwLGU9cGFyc2VGbG9hdChpKXx8MCksbS5pc0Z1bmN0aW9uKGIpJiYoYj1iLmNhbGwoYSxjLGgpKSxudWxsIT1iLnRvcCYmKG4udG9wPWIudG9wLWgudG9wK2cpLG51bGwhPWIubGVmdCYmKG4ubGVmdD1iLmxlZnQtaC5sZWZ0K2UpLCJ1c2luZyJpbiBiP2IudXNpbmcuY2FsbChhLG4pOmwuY3NzKG4pfX0sbS5mbi5leHRlbmQoe29mZnNldDpmdW5jdGlvbihhKXtpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT1hP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe20ub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsYil9KTt2YXIgYixjLGQ9e3RvcDowLGxlZnQ6MH0sZT10aGlzWzBdLGY9ZSYmZS5vd25lckRvY3VtZW50O2lmKGYpcmV0dXJuIGI9Zi5kb2N1bWVudEVsZW1lbnQsbS5jb250YWlucyhiLGUpPyh0eXBlb2YgZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QhPT1LJiYoZD1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSxjPWRkKGYpLHt0b3A6ZC50b3ArKGMucGFnZVlPZmZzZXR8fGIuc2Nyb2xsVG9wKS0oYi5jbGllbnRUb3B8fDApLGxlZnQ6ZC5sZWZ0KyhjLnBhZ2VYT2Zmc2V0fHxiLnNjcm9sbExlZnQpLShiLmNsaWVudExlZnR8fDApfSk6ZH0scG9zaXRpb246ZnVuY3Rpb24oKXtpZih0aGlzWzBdKXt2YXIgYSxiLGM9e3RvcDowLGxlZnQ6MH0sZD10aGlzWzBdO3JldHVybiJmaXhlZCI9PT1tLmNzcyhkLCJwb3NpdGlvbiIpP2I9ZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTooYT10aGlzLm9mZnNldFBhcmVudCgpLGI9dGhpcy5vZmZzZXQoKSxtLm5vZGVOYW1lKGFbMF0sImh0bWwiKXx8KGM9YS5vZmZzZXQoKSksYy50b3ArPW0uY3NzKGFbMF0sImJvcmRlclRvcFdpZHRoIiwhMCksYy5sZWZ0Kz1tLmNzcyhhWzBdLCJib3JkZXJMZWZ0V2lkdGgiLCEwKSkse3RvcDpiLnRvcC1jLnRvcC1tLmNzcyhkLCJtYXJnaW5Ub3AiLCEwKSxsZWZ0OmIubGVmdC1jLmxlZnQtbS5jc3MoZCwibWFyZ2luTGVmdCIsITApfX19LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPXRoaXMub2Zmc2V0UGFyZW50fHxjZDt3aGlsZShhJiYhbS5ub2RlTmFtZShhLCJodG1sIikmJiJzdGF0aWMiPT09bS5jc3MoYSwicG9zaXRpb24iKSlhPWEub2Zmc2V0UGFyZW50O3JldHVybiBhfHxjZH0pfX0pLG0uZWFjaCh7c2Nyb2xsTGVmdDoicGFnZVhPZmZzZXQiLHNjcm9sbFRvcDoicGFnZVlPZmZzZXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPS9ZLy50ZXN0KGIpO20uZm5bYV09ZnVuY3Rpb24oZCl7cmV0dXJuIFYodGhpcyxmdW5jdGlvbihhLGQsZSl7dmFyIGY9ZGQoYSk7cmV0dXJuIHZvaWQgMD09PWU/Zj9iIGluIGY/ZltiXTpmLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFtkXTphW2RdOnZvaWQoZj9mLnNjcm9sbFRvKGM/bShmKS5zY3JvbGxMZWZ0KCk6ZSxjP2U6bShmKS5zY3JvbGxUb3AoKSk6YVtkXT1lKX0sYSxkLGFyZ3VtZW50cy5sZW5ndGgsbnVsbCl9fSksbS5lYWNoKFsidG9wIiwibGVmdCJdLGZ1bmN0aW9uKGEsYil7bS5jc3NIb29rc1tiXT1MYihrLnBpeGVsUG9zaXRpb24sZnVuY3Rpb24oYSxjKXtyZXR1cm4gYz8oYz1KYihhLGIpLEhiLnRlc3QoYyk/bShhKS5wb3NpdGlvbigpW2JdKyJweCI6Yyk6dm9pZCAwfSl9KSxtLmVhY2goe0hlaWdodDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihhLGIpe20uZWFjaCh7cGFkZGluZzoiaW5uZXIiK2EsY29udGVudDpiLCIiOiJvdXRlciIrYX0sZnVuY3Rpb24oYyxkKXttLmZuW2RdPWZ1bmN0aW9uKGQsZSl7dmFyIGY9YXJndW1lbnRzLmxlbmd0aCYmKGN8fCJib29sZWFuIiE9dHlwZW9mIGQpLGc9Y3x8KGQ9PT0hMHx8ZT09PSEwPyJtYXJnaW4iOiJib3JkZXIiKTtyZXR1cm4gVih0aGlzLGZ1bmN0aW9uKGIsYyxkKXt2YXIgZTtyZXR1cm4gbS5pc1dpbmRvdyhiKT9iLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50IithXTo5PT09Yi5ub2RlVHlwZT8oZT1iLmRvY3VtZW50RWxlbWVudCxNYXRoLm1heChiLmJvZHlbInNjcm9sbCIrYV0sZVsic2Nyb2xsIithXSxiLmJvZHlbIm9mZnNldCIrYV0sZVsib2Zmc2V0IithXSxlWyJjbGllbnQiK2FdKSk6dm9pZCAwPT09ZD9tLmNzcyhiLGMsZyk6bS5zdHlsZShiLGMsZCxnKX0sYixmP2Q6dm9pZCAwLGYsbnVsbCl9fSl9KSxtLmZuLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZW5ndGh9LG0uZm4uYW5kU2VsZj1tLmZuLmFkZEJhY2ssImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5lKCJqcXVlcnkiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIG19KTt2YXIgZWQ9YS5qUXVlcnksZmQ9YS4kO3JldHVybiBtLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oYil7cmV0dXJuIGEuJD09PW0mJihhLiQ9ZmQpLGImJmEualF1ZXJ5PT09bSYmKGEualF1ZXJ5PWVkKSxtfSx0eXBlb2YgYj09PUsmJihhLmpRdWVyeT1hLiQ9bSksbX0pOwo="></script>
<link href="data:text/css;charset=utf-8,%0A%2Eleaflet%2Dmap%2Dpane%2C%0A%2Eleaflet%2Dtile%2C%0A%2Eleaflet%2Dmarker%2Dicon%2C%0A%2Eleaflet%2Dmarker%2Dshadow%2C%0A%2Eleaflet%2Dtile%2Dpane%2C%0A%2Eleaflet%2Dtile%2Dcontainer%2C%0A%2Eleaflet%2Doverlay%2Dpane%2C%0A%2Eleaflet%2Dshadow%2Dpane%2C%0A%2Eleaflet%2Dmarker%2Dpane%2C%0A%2Eleaflet%2Dpopup%2Dpane%2C%0A%2Eleaflet%2Doverlay%2Dpane%20svg%2C%0A%2Eleaflet%2Dzoom%2Dbox%2C%0A%2Eleaflet%2Dimage%2Dlayer%2C%0A%2Eleaflet%2Dlayer%20%7B%0Aposition%3A%20absolute%3B%0Aleft%3A%200%3B%0Atop%3A%200%3B%0A%7D%0A%2Eleaflet%2Dcontainer%20%7B%0Aoverflow%3A%20hidden%3B%0A%2Dms%2Dtouch%2Daction%3A%20none%3B%0A%7D%0A%2Eleaflet%2Dtile%2C%0A%2Eleaflet%2Dmarker%2Dicon%2C%0A%2Eleaflet%2Dmarker%2Dshadow%20%7B%0A%2Dwebkit%2Duser%2Dselect%3A%20none%3B%0A%2Dmoz%2Duser%2Dselect%3A%20none%3B%0Auser%2Dselect%3A%20none%3B%0A%2Dwebkit%2Duser%2Ddrag%3A%20none%3B%0A%7D%0A%2Eleaflet%2Dmarker%2Dicon%2C%0A%2Eleaflet%2Dmarker%2Dshadow%20%7B%0Adisplay%3A%20block%3B%0A%7D%0A%0A%2Eleaflet%2Dcontainer%20img%20%7B%0Amax%2Dwidth%3A%20none%20%21important%3B%0A%7D%0A%0A%2Eleaflet%2Dcontainer%20img%2Eleaflet%2Dimage%2Dlayer%20%7B%0Amax%2Dwidth%3A%2015000px%20%21important%3B%0A%7D%0A%2Eleaflet%2Dtile%20%7B%0Afilter%3A%20inherit%3B%0Avisibility%3A%20hidden%3B%0A%7D%0A%2Eleaflet%2Dtile%2Dloaded%20%7B%0Avisibility%3A%20inherit%3B%0A%7D%0A%2Eleaflet%2Dzoom%2Dbox%20%7B%0Awidth%3A%200%3B%0Aheight%3A%200%3B%0A%7D%0A%0A%2Eleaflet%2Doverlay%2Dpane%20svg%20%7B%0A%2Dmoz%2Duser%2Dselect%3A%20none%3B%0A%7D%0A%2Eleaflet%2Dtile%2Dpane%20%7B%20z%2Dindex%3A%202%3B%20%7D%0A%2Eleaflet%2Dobjects%2Dpane%20%7B%20z%2Dindex%3A%203%3B%20%7D%0A%2Eleaflet%2Doverlay%2Dpane%20%7B%20z%2Dindex%3A%204%3B%20%7D%0A%2Eleaflet%2Dshadow%2Dpane%20%7B%20z%2Dindex%3A%205%3B%20%7D%0A%2Eleaflet%2Dmarker%2Dpane%20%7B%20z%2Dindex%3A%206%3B%20%7D%0A%2Eleaflet%2Dpopup%2Dpane%20%7B%20z%2Dindex%3A%207%3B%20%7D%0A%2Eleaflet%2Dvml%2Dshape%20%7B%0Awidth%3A%201px%3B%0Aheight%3A%201px%3B%0A%7D%0A%2Elvml%20%7B%0Abehavior%3A%20url%28%23default%23VML%29%3B%0Adisplay%3A%20inline%2Dblock%3B%0Aposition%3A%20absolute%3B%0A%7D%0A%0A%2Eleaflet%2Dcontrol%20%7B%0Aposition%3A%20relative%3B%0Az%2Dindex%3A%207%3B%0Apointer%2Devents%3A%20auto%3B%0A%7D%0A%2Eleaflet%2Dtop%2C%0A%2Eleaflet%2Dbottom%20%7B%0Aposition%3A%20absolute%3B%0Az%2Dindex%3A%201000%3B%0Apointer%2Devents%3A%20none%3B%0A%7D%0A%2Eleaflet%2Dtop%20%7B%0Atop%3A%200%3B%0A%7D%0A%2Eleaflet%2Dright%20%7B%0Aright%3A%200%3B%0A%7D%0A%2Eleaflet%2Dbottom%20%7B%0Abottom%3A%200%3B%0A%7D%0A%2Eleaflet%2Dleft%20%7B%0Aleft%3A%200%3B%0A%7D%0A%2Eleaflet%2Dcontrol%20%7B%0Afloat%3A%20left%3B%0Aclear%3A%20both%3B%0A%7D%0A%2Eleaflet%2Dright%20%2Eleaflet%2Dcontrol%20%7B%0Afloat%3A%20right%3B%0A%7D%0A%2Eleaflet%2Dtop%20%2Eleaflet%2Dcontrol%20%7B%0Amargin%2Dtop%3A%2010px%3B%0A%7D%0A%2Eleaflet%2Dbottom%20%2Eleaflet%2Dcontrol%20%7B%0Amargin%2Dbottom%3A%2010px%3B%0A%7D%0A%2Eleaflet%2Dleft%20%2Eleaflet%2Dcontrol%20%7B%0Amargin%2Dleft%3A%2010px%3B%0A%7D%0A%2Eleaflet%2Dright%20%2Eleaflet%2Dcontrol%20%7B%0Amargin%2Dright%3A%2010px%3B%0A%7D%0A%0A%2Eleaflet%2Dfade%2Danim%20%2Eleaflet%2Dtile%2C%0A%2Eleaflet%2Dfade%2Danim%20%2Eleaflet%2Dpopup%20%7B%0Aopacity%3A%200%3B%0A%2Dwebkit%2Dtransition%3A%20opacity%200%2E2s%20linear%3B%0A%2Dmoz%2Dtransition%3A%20opacity%200%2E2s%20linear%3B%0A%2Do%2Dtransition%3A%20opacity%200%2E2s%20linear%3B%0Atransition%3A%20opacity%200%2E2s%20linear%3B%0A%7D%0A%2Eleaflet%2Dfade%2Danim%20%2Eleaflet%2Dtile%2Dloaded%2C%0A%2Eleaflet%2Dfade%2Danim%20%2Eleaflet%2Dmap%2Dpane%20%2Eleaflet%2Dpopup%20%7B%0Aopacity%3A%201%3B%0A%7D%0A%2Eleaflet%2Dzoom%2Danim%20%2Eleaflet%2Dzoom%2Danimated%20%7B%0A%2Dwebkit%2Dtransition%3A%20%2Dwebkit%2Dtransform%200%2E25s%20cubic%2Dbezier%280%2C0%2C0%2E25%2C1%29%3B%0A%2Dmoz%2Dtransition%3A%20%2Dmoz%2Dtransform%200%2E25s%20cubic%2Dbezier%280%2C0%2C0%2E25%2C1%29%3B%0A%2Do%2Dtransition%3A%20%2Do%2Dtransform%200%2E25s%20cubic%2Dbezier%280%2C0%2C0%2E25%2C1%29%3B%0Atransition%3A%20transform%200%2E25s%20cubic%2Dbezier%280%2C0%2C0%2E25%2C1%29%3B%0A%7D%0A%2Eleaflet%2Dzoom%2Danim%20%2Eleaflet%2Dtile%2C%0A%2Eleaflet%2Dpan%2Danim%20%2Eleaflet%2Dtile%2C%0A%2Eleaflet%2Dtouching%20%2Eleaflet%2Dzoom%2Danimated%20%7B%0A%2Dwebkit%2Dtransition%3A%20none%3B%0A%2Dmoz%2Dtransition%3A%20none%3B%0A%2Do%2Dtransition%3A%20none%3B%0Atransition%3A%20none%3B%0A%7D%0A%2Eleaflet%2Dzoom%2Danim%20%2Eleaflet%2Dzoom%2Dhide%20%7B%0Avisibility%3A%20hidden%3B%0A%7D%0A%0A%2Eleaflet%2Dclickable%20%7B%0Acursor%3A%20pointer%3B%0A%7D%0A%2Eleaflet%2Dcontainer%20%7B%0Acursor%3A%20%2Dwebkit%2Dgrab%3B%0Acursor%3A%20%2Dmoz%2Dgrab%3B%0A%7D%0A%2Eleaflet%2Dpopup%2Dpane%2C%0A%2Eleaflet%2Dcontrol%20%7B%0Acursor%3A%20auto%3B%0A%7D%0A%2Eleaflet%2Ddragging%20%2Eleaflet%2Dcontainer%2C%0A%2Eleaflet%2Ddragging%20%2Eleaflet%2Dclickable%20%7B%0Acursor%3A%20move%3B%0Acursor%3A%20%2Dwebkit%2Dgrabbing%3B%0Acursor%3A%20%2Dmoz%2Dgrabbing%3B%0A%7D%0A%0A%2Eleaflet%2Dcontainer%20%7B%0Abackground%3A%20%23ddd%3B%0Aoutline%3A%200%3B%0A%7D%0A%2Eleaflet%2Dcontainer%20a%20%7B%0Acolor%3A%20%230078A8%3B%0A%7D%0A%2Eleaflet%2Dcontainer%20a%2Eleaflet%2Dactive%20%7B%0Aoutline%3A%202px%20solid%20orange%3B%0A%7D%0A%2Eleaflet%2Dzoom%2Dbox%20%7B%0Aborder%3A%202px%20dotted%20%2338f%3B%0Abackground%3A%20rgba%28255%2C255%2C255%2C0%2E5%29%3B%0A%7D%0A%0A%2Eleaflet%2Dcontainer%20%7B%0Afont%3A%2012px%2F1%2E5%20%22Helvetica%20Neue%22%2C%20Arial%2C%20Helvetica%2C%20sans%2Dserif%3B%0A%7D%0A%0A%2Eleaflet%2Dbar%20%7B%0Abox%2Dshadow%3A%200%201px%205px%20rgba%280%2C0%2C0%2C0%2E65%29%3B%0Aborder%2Dradius%3A%204px%3B%0A%7D%0A%2Eleaflet%2Dbar%20a%2C%0A%2Eleaflet%2Dbar%20a%3Ahover%20%7B%0Abackground%2Dcolor%3A%20%23fff%3B%0Aborder%2Dbottom%3A%201px%20solid%20%23ccc%3B%0Awidth%3A%2026px%3B%0Aheight%3A%2026px%3B%0Aline%2Dheight%3A%2026px%3B%0Adisplay%3A%20block%3B%0Atext%2Dalign%3A%20center%3B%0Atext%2Ddecoration%3A%20none%3B%0Acolor%3A%20black%3B%0A%7D%0A%2Eleaflet%2Dbar%20a%2C%0A%2Eleaflet%2Dcontrol%2Dlayers%2Dtoggle%20%7B%0Abackground%2Dposition%3A%2050%25%2050%25%3B%0Abackground%2Drepeat%3A%20no%2Drepeat%3B%0Adisplay%3A%20block%3B%0A%7D%0A%2Eleaflet%2Dbar%20a%3Ahover%20%7B%0Abackground%2Dcolor%3A%20%23f4f4f4%3B%0A%7D%0A%2Eleaflet%2Dbar%20a%3Afirst%2Dchild%20%7B%0Aborder%2Dtop%2Dleft%2Dradius%3A%204px%3B%0Aborder%2Dtop%2Dright%2Dradius%3A%204px%3B%0A%7D%0A%2Eleaflet%2Dbar%20a%3Alast%2Dchild%20%7B%0Aborder%2Dbottom%2Dleft%2Dradius%3A%204px%3B%0Aborder%2Dbottom%2Dright%2Dradius%3A%204px%3B%0Aborder%2Dbottom%3A%20none%3B%0A%7D%0A%2Eleaflet%2Dbar%20a%2Eleaflet%2Ddisabled%20%7B%0Acursor%3A%20default%3B%0Abackground%2Dcolor%3A%20%23f4f4f4%3B%0Acolor%3A%20%23bbb%3B%0A%7D%0A%2Eleaflet%2Dtouch%20%2Eleaflet%2Dbar%20a%20%7B%0Awidth%3A%2030px%3B%0Aheight%3A%2030px%3B%0Aline%2Dheight%3A%2030px%3B%0A%7D%0A%0A%2Eleaflet%2Dcontrol%2Dzoom%2Din%2C%0A%2Eleaflet%2Dcontrol%2Dzoom%2Dout%20%7B%0Afont%3A%20bold%2018px%20%27Lucida%20Console%27%2C%20Monaco%2C%20monospace%3B%0Atext%2Dindent%3A%201px%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dzoom%2Dout%20%7B%0Afont%2Dsize%3A%2020px%3B%0A%7D%0A%2Eleaflet%2Dtouch%20%2Eleaflet%2Dcontrol%2Dzoom%2Din%20%7B%0Afont%2Dsize%3A%2022px%3B%0A%7D%0A%2Eleaflet%2Dtouch%20%2Eleaflet%2Dcontrol%2Dzoom%2Dout%20%7B%0Afont%2Dsize%3A%2024px%3B%0A%7D%0A%0A%2Eleaflet%2Dcontrol%2Dlayers%20%7B%0Abox%2Dshadow%3A%200%201px%205px%20rgba%280%2C0%2C0%2C0%2E4%29%3B%0Abackground%3A%20%23fff%3B%0Aborder%2Dradius%3A%205px%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dlayers%2Dtoggle%20%7B%0Abackground%2Dimage%3A%20url%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAVbSURBVEiJrZZfSFt3FMe%2Fv3tvbmLUZleNKSHE%2FLGRiNbGRovTtrA9lcFkpcOnMvawwhhjrb3soQ8djGFhXMQNRqEvY3R9kJVuPpRRWQebcdKYxkaHqcHchKJ2rVo1WhNz%2F%2Fz2UOLUadVuv9fvOedzfuec3x9CKcV%2B1qVLlwgAdHV17cuR7AfU29tb43a73wWAVCr1Q0dHx8T%2FCuru7i5ubGw843K5ms1mMwBgdXUV6XQ6HI1Gb3Z2dj7%2Fz6C%2Bvr6T1dXVp6xWa%2Bl2%2Buzs7PLk5OTP7e3tv70S6Pr1647q6uoOt9vtYRjmpcnouo5UKiVPTk72nj17dmpPIEmS%2BIaGhnaPx3O8tLSU3ahRSotyudzrAGAymf4ghGQ36svLy5osywOxWKxPFMX8jqBbt241ejyed%2Bx2e9nWjPL5fK2iKC2UUiMAEELWDAbDEM%2Fz41ttZ2Zmnsmy%2FOPp06ejm0DXrl2rqK2tPeNyuQ7zPL9pi5qmVaytrZ3Qdf3gdiVhGOYvo9H4O8uyc1sSI%2Bl0enR8fPzmuXPn5sjt27ff8nq9bwiCYNpSJsPa2lqzqqr1AF7eJEDnOG7MaDSGCSHKRmFhYSGXTCZ%2FZd1u93dOp3NJEAS9ICqK4snlcm%2Fpuu4EQHaBAADRdf2gqqo1hJBllmUXCsLjx4%2BL7t69e4Ztamqaffjw4QepVOr5oUOHDKqqvqkoShAAvwfA1sVrmlataVqlqqqzvb29lnA43KwoymeEUoqenp7XdF3vW11dPX7s2DHi9XpfgfHPSiaTuHfvHjWbzQMMw7SfP39%2BkUSj0ZOU0qsA%2FEtLSwiHwygpKUFraysOHDiwL0Amk8Hg4CBWVlbQ3NwMi8UCAHFCyIesw%2BH43uFwuAwGg9lkMsHj8SCfzyMUCkFRFNhsNux2YDVNQzQaRSgUgsvlwtGjR2EyvZitbDbL9Pf3H2YDgcD8xMREk67rCZvN5iSEkLKyMrjdbsiyjJGREVgslh13NzU1hf7%2Bfui6jra2NlitVhBCQCmlo6OjoYGBASWbzX5BKKW4cuWKhRDyk67rJ4LBIFNRUbEeaHZ2FpFIBDabDS0tLSgqKipkiqGhITx58gTBYBBWq3XdZ25uDpFIhLIsO8jzfPuFCxeekTt37rQCuAqgfmVlBfF4HOXl5Thy5Ah4%2FsXgUUoRj8chyzIaGhoAALFYDB6PB36%2FH4S8OAH5fB4PHjzA%2FPw8%2FH4%2FSkpKACAB4CPW6%2FXeqKysrOI4rpjnedjtdmSzWUSjURgMBgiCAEIIrFYrHA4HxsfHsbi4iNbWVtjt9nWILMsYGhpCeXk5ampqYDQaC3AyPDxcSy5evPg2IaTL6XTO%2B3y%2BNkIIAwCKoiCRSEBVVTQ1Ne3Yo0wmg%2BHhYXAcB5%2FPB4PBUJBoMpkclGW5lFJ6mVBKIYpiMYDLHMedCgQCnCAI%2FoL1wsICEokEHA4H6uvr1ydQ13WMjY1hamoKPp8PgiBshE%2Fev38%2FoyjKLwA%2BlyTp%2BabbWxTFOgDfCIKAQCAQ4DiutNCjdDqNp0%2BfIhAIAABGRkZQWVkJl8u1Xj5N01Zjsdjw3NwcBfCxJEl%2FFmL%2F6z0SRZEAeJ8QIvp8vsWqqqqWgpbL5RCPxwEAfr9%2F%2FawAwPT0dDgejxfput4D4FtJkjYF3vGFFUWxHMCXRqPxcDAYtBYXF1dtZ5fNZmcikcijbDY7DuBTSZLmt7Pb9c8gimIbIeQrm82Wqaura2EYxggAlFI1Ho8PTk9PmymlnZIkhV4WZ0%2B%2FIFEUOQCdDMO8V19fn2NZ1hCLxaimaTcAdEuSpO4WY1%2F%2FOlEUnQC%2BBkABfCJJ0qO9%2Bv4NmO9xnZob3WcAAAAASUVORK5CYII%3D%29%3B%0Awidth%3A%2036px%3B%0Aheight%3A%2036px%3B%0A%7D%0A%2Eleaflet%2Dretina%20%2Eleaflet%2Dcontrol%2Dlayers%2Dtoggle%20%7B%0Abackground%2Dimage%3A%20url%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAbrwAAG68BXhqRHAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAArPSURBVGiB3Zp7TFvXHce%2F916%2FeBhCDInJwDjGBhvjQHi5SclaKRL5Z1Wl%2FrEq%2FWNr11TJmkpMw900pLVrplJ1cadFarp0zdZmmpZpf3SqNrUKfSnKgwI2sQPGBmNjAsUOxCW8bGzfe8%2F%2BSEAkMfa1A5m075%2F2%2Bf3O%2BZ7X595zLkUIwf%2BT6EdRSWdnp7izs1P8KOqitnqE3n%2F%2F%2FQMajeYZAPD7%2FR8fPXr00lbWt2WGTp48qdRoNC%2Fs2bNHXVhYyALA%2FPy86Pr16wG%2F3%2F%2Fhq6%2B%2BGtqKejfdUGdnJ6XT6Q4bDIZWjUaTNLnf76fcbvdlr9d7vqura1MbsKmGTp8%2BXadWqw%2Fv3bu3UCQS8anKsixLX7t2bT4QCJw%2Ffvy4c7PasCmGTpw4Ia%2BqqnrRZDIZSkpK2ExiZ2dnRYODg%2B7R0dE%2Fv%2Fbaa4sP25aHNnT27Nkf6HS6QwaD4aF2TLfbzXu93gtHjhz5z8PkydrQqVOnKtVq9Y%2Fq6uqUubm5GY3KRopEIiKn0xkKBAJ%2FbW9v92WTI2NDnZ2dYoPB8ILRaGwoKyvjsqk0naamphiXyzXgdrs%2F7OrqSmQSm5GhM2fOHNBoNM%2FU1dVJKYoSFEgIEcVisWYAkEql%2FRRFCRpNQgjldDpjfr%2F%2F42PHjglmlyBDJ0%2BeVO7evfsndXV1FatMEaJEIqGOx%2BMHCCFyAKAoalEikVwSi8UBoTnm5%2BdFTqdzYnx8%2FC9C2JXS0CpT9Hr9gcrKypTb8HrxPJ%2B%2FsrJygOf53cn%2Bp2l6XCaTXaJpekloTp%2FPR3s8nkvp2LWhoXfffbderVYfbmhoKEjHlPVtjcVidSzLNhFCUj67URSVEIlENqlU6gQgKD%2FLsvTAwMBCIBA4%2F8orrziS5r3f0IkTJ%2BQ6ne6IyWQy7NixQ%2FCCZFm2NB6PP8Hz%2FHahMQBA0%2FR3EonkokgkCgqNmZmZEQ8ODrq9Xu%2FZ%2B9l1j6EPPvjgKZ1Od6impoYSmpzneVksFtvHcZxBaEwyMQzjlkqlPTRNrwiNGR4eJl6v98JLL73079XfKEIITp06VVlRUfHj%2Bvr6nZkwJR6P6xOJxH5CiCxTA8lEUdSKWCy%2BKpFIPEJjIpGIyOFw3JyYmDjX3t7uo86dO3fUaDQ2lJeXCzbCcdz2WCz2BM%2Fzpdk1PbVomg5KpdKLDMN8JzRmcnJS5HK5Bhi9Xv9RcXHx7V27dqUd6rtMMcfj8YOEkIKHa3bKeuQsy9bwPC9mGCZEUVTaTWNsbKzQbrc%2FRXV0dBAAMYVCcfnpp5%2BeKC4uTmrsfqY8KqVj161bt2SffPJJRTgcbgUgZVpbW3sIIQei0Wij0%2BksmZubW9DpdEsUdWdf4Hk%2BPxqNHmRZtgWA9NFZWZOU4zgdy7LFd0crDgCEEHz66aelX3zxxfcjkUg9gAmapg8zV65c8fX09PwpHo%2FzhJC22dnZ2oGBARQUFCwVFBTUxOPxQ4QQxf%2FAyD0ihBSxLFtDCCFerzdy%2Fvz5PcFg8CAhRAqgSy6XP%2Ffmm2%2BO3LNtd3R0VFEU9R6AgyKRiNfr9fS%2BffsgFj%2BS8420SiQS6Onpgcfj4VmWpQF8SQh5%2BZ133hldLSNaH%2FDss8%2BGGYYJ3Lhxg9jtdnpoaAiTk5NoampCdXX1IzewXiMjI7DZbJifn4dMJqPNZjNRqVQBjuPC68utjhA1MDDwPIDfASgG7vSGw%2BHA2NgYAEClUmH%2F%2Fv0oKip6pEbm5uZw9epV3LhxAwCg1WpRX1%2B%2FftbcAvCLhoaGjwAQyuFwGDmOOwOgNVnCcDiMvr4%2BzM3NQSaTwWg0orm5GTS9tUd6PM%2Bjv78fLpcLKysrKCoqQktLCxSKDZfzZYZhjjFarfYfKpWqmabppAslNzcXWq0WMpkMwWAQU1NTCAQCyM%2FPx7Zt27bEzMTEBD7%2F%2FHP4fD5QFIWGhgaYzWbk5uZuGMNxXPHXX39tYkwm07nh4eGZ3Nxcz%2Fbt27%2BXrDBFUVAoFNBoNIhEIggGg%2FD5fLh9%2BzaUSuWmbRqRSAQXL15EX18flpeXoVKp8OSTT0KpVGIVI8nk8%2Fn6uru7xYuLi3WrHDr07bffmvx%2Bf295eTktkUiSwlMsFkOlUqGkpAQzMzMIBoPwer0AAKVS%2BVBmHA4HvvrqK4RCIeTl5aG1tRU1NTUpO2t5eXn6s88%2BGx4fHzcDmKVp%2BjBFCMEbb7whW1xc%2FBWAXwJgKysrbS0tLY9TFCXaKBnP8xgaGoLb7QbHcSgtLcW%2BffsyNhYKhdDT04NgMAiGYWAwGFBbW5tyjRJC2L6%2Bvis%2Bn68Jd3bqt%2BVy%2BVuvv%2F76yoYcysvLi5nNZmm6Bi4sLMBmsyEUCkEsFkOv1%2BOxxx5LOw0TiQS%2B%2BeYbeDweJBIJKJVKNDU1oaAg9SNiKBRCb28vu7y8LEISDt1jqLu7ezuAt0Oh0IsjIyNUPB5HeXk5mpubIZWmfuqZmJiA3W7HysoKCgsLU7LrPqagsbERFRUVKfPHYjH09%2FdjcnISEokE1dXVUCqV%2FwLQ3tbWNvmAoe7u7ucBnMRdDrEsC6%2FXu5bAZDKhqqoq5eJMxy4BTHlAhBCMjo5icHAQqx2s0%2BkgEq2thiUAvwFwqq2tjaUuXLhQA%2BCPAL6fLOHCwgJcLhcWFxeFsADAg%2Byqra0FAAwNDQllygN55HI5jEZjqil5HcBPmerq6r%2Ft2LFjL8MwOclKSaVSlJWVQSKRIBQKwefzIRqNYufOnRsu3GTsmp6eFswUlmVht9ths9mQSCRQVVUFo9EImWzjF2OO4%2BROp1NPdXR0JAAsaLVat0ajeXzDCNyZxx6PBzdv3kROTg727t0LtVqdKgTRaBR2ux0A0NjYiJycpP22pkAggGvXrq11ml6vT7t%2Bp6en%2B10uVykhpIzq6OhoA%2FAegEqxWOxsamrKl8vllakShMNhDA8Pr1VqNpuRn5%2BfstJ0WlpaQm9v71pn1dTUpJ2S0Wh02mazTUajUTMAH4CXKUIILBaLDMAqh%2BiSkpIre%2FbsaWEYZsN5wfM8%2FH4%2FAoEAKIqCwWCAyWRKuWkkEyEEg4ODcLvdIIRArVZDo9Gk5ZDb7b4yNTW1xiEAb1mt1ns5ZLFYqnBntA5SFDVlNBqDu3btak7VoOXlZXg8HoTDYeTn56OlpUUwXEOhEPr6%2BrC0tASFQgG9Xo%2B8vLyUMeFweNDhcEg5jqsC8CWAl61Wa3IOrTP2HIDfA9iZk5PT29TUVJ6Tk7MrXeNGRkYghF0bMCWlkUQiMWe324cWFhZaAcwA%2BLnVav37%2FeU2PAq2WCyFALoAHAMQLSsrsxkMhpSPQ%2BnYJYApSeX3%2By%2BPjY3VANgG4AyATqvVOp%2BsbNrbB4vF0nw3SQPDMKP19fUxhUJhShWTjF0AMmEKAGBxcdFns9mWEolEHYABAMesVmt%2FqhhB1ykWi4UBcBzAbwHICwoKLjc2NtaKxeINX18JIZicnMTY2Bh4%2Fs6xGk3T0Gq1KC8vT7l5cBwXuX79et%2Fs7OzjAKIAfg3gtNVqTXvBltGFl8ViKQXwBwA%2FBPCdVqsd1mg0Sd90V7XKLgAZMwXAPwH8zGq1Cj7Iz%2BqO1WKxZMyudErGFKvV2p1pnqwvjbNhVzKlYko27Xroa%2F1s2LWqdEzJRpv2JUkm7BLKlGy0qZ%2FGCGFXJkzJRlvyNVYydkkkktxMmZKNtuzzsvvZBYADEEEGTMlGW%2F4B4Dp2ARkyJRv9F9vsxWD%2F43R9AAAAAElFTkSuQmCC%29%3B%0Abackground%2Dsize%3A%2026px%2026px%3B%0A%7D%0A%2Eleaflet%2Dtouch%20%2Eleaflet%2Dcontrol%2Dlayers%2Dtoggle%20%7B%0Awidth%3A%2044px%3B%0Aheight%3A%2044px%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dlayers%20%2Eleaflet%2Dcontrol%2Dlayers%2Dlist%2C%0A%2Eleaflet%2Dcontrol%2Dlayers%2Dexpanded%20%2Eleaflet%2Dcontrol%2Dlayers%2Dtoggle%20%7B%0Adisplay%3A%20none%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dlayers%2Dexpanded%20%2Eleaflet%2Dcontrol%2Dlayers%2Dlist%20%7B%0Adisplay%3A%20block%3B%0Aposition%3A%20relative%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dlayers%2Dexpanded%20%7B%0Apadding%3A%206px%2010px%206px%206px%3B%0Acolor%3A%20%23333%3B%0Abackground%3A%20%23fff%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dlayers%2Dselector%20%7B%0Amargin%2Dtop%3A%202px%3B%0Aposition%3A%20relative%3B%0Atop%3A%201px%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dlayers%20label%20%7B%0Adisplay%3A%20block%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dlayers%2Dseparator%20%7B%0Aheight%3A%200%3B%0Aborder%2Dtop%3A%201px%20solid%20%23ddd%3B%0Amargin%3A%205px%20%2D10px%205px%20%2D6px%3B%0A%7D%0A%0A%2Eleaflet%2Dcontainer%20%2Eleaflet%2Dcontrol%2Dattribution%20%7B%0Abackground%3A%20%23fff%3B%0Abackground%3A%20rgba%28255%2C%20255%2C%20255%2C%200%2E7%29%3B%0Amargin%3A%200%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dattribution%2C%0A%2Eleaflet%2Dcontrol%2Dscale%2Dline%20%7B%0Apadding%3A%200%205px%3B%0Acolor%3A%20%23333%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dattribution%20a%20%7B%0Atext%2Ddecoration%3A%20none%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dattribution%20a%3Ahover%20%7B%0Atext%2Ddecoration%3A%20underline%3B%0A%7D%0A%2Eleaflet%2Dcontainer%20%2Eleaflet%2Dcontrol%2Dattribution%2C%0A%2Eleaflet%2Dcontainer%20%2Eleaflet%2Dcontrol%2Dscale%20%7B%0Afont%2Dsize%3A%2011px%3B%0A%7D%0A%2Eleaflet%2Dleft%20%2Eleaflet%2Dcontrol%2Dscale%20%7B%0Amargin%2Dleft%3A%205px%3B%0A%7D%0A%2Eleaflet%2Dbottom%20%2Eleaflet%2Dcontrol%2Dscale%20%7B%0Amargin%2Dbottom%3A%205px%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dscale%2Dline%20%7B%0Aborder%3A%202px%20solid%20%23777%3B%0Aborder%2Dtop%3A%20none%3B%0Aline%2Dheight%3A%201%2E1%3B%0Apadding%3A%202px%205px%201px%3B%0Afont%2Dsize%3A%2011px%3B%0Awhite%2Dspace%3A%20nowrap%3B%0Aoverflow%3A%20hidden%3B%0A%2Dmoz%2Dbox%2Dsizing%3A%20content%2Dbox%3B%0Abox%2Dsizing%3A%20content%2Dbox%3B%0Abackground%3A%20%23fff%3B%0Abackground%3A%20rgba%28255%2C%20255%2C%20255%2C%200%2E5%29%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dscale%2Dline%3Anot%28%3Afirst%2Dchild%29%20%7B%0Aborder%2Dtop%3A%202px%20solid%20%23777%3B%0Aborder%2Dbottom%3A%20none%3B%0Amargin%2Dtop%3A%20%2D2px%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dscale%2Dline%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%20%7B%0Aborder%2Dbottom%3A%202px%20solid%20%23777%3B%0A%7D%0A%2Eleaflet%2Dtouch%20%2Eleaflet%2Dcontrol%2Dattribution%2C%0A%2Eleaflet%2Dtouch%20%2Eleaflet%2Dcontrol%2Dlayers%2C%0A%2Eleaflet%2Dtouch%20%2Eleaflet%2Dbar%20%7B%0Abox%2Dshadow%3A%20none%3B%0A%7D%0A%2Eleaflet%2Dtouch%20%2Eleaflet%2Dcontrol%2Dlayers%2C%0A%2Eleaflet%2Dtouch%20%2Eleaflet%2Dbar%20%7B%0Aborder%3A%202px%20solid%20rgba%280%2C0%2C0%2C0%2E2%29%3B%0Abackground%2Dclip%3A%20padding%2Dbox%3B%0A%7D%0A%0A%2Eleaflet%2Dpopup%20%7B%0Aposition%3A%20absolute%3B%0Atext%2Dalign%3A%20center%3B%0A%7D%0A%2Eleaflet%2Dpopup%2Dcontent%2Dwrapper%20%7B%0Apadding%3A%201px%3B%0Atext%2Dalign%3A%20left%3B%0Aborder%2Dradius%3A%2012px%3B%0A%7D%0A%2Eleaflet%2Dpopup%2Dcontent%20%7B%0Amargin%3A%2013px%2019px%3B%0Aline%2Dheight%3A%201%2E4%3B%0A%7D%0A%2Eleaflet%2Dpopup%2Dcontent%20p%20%7B%0Amargin%3A%2018px%200%3B%0A%7D%0A%2Eleaflet%2Dpopup%2Dtip%2Dcontainer%20%7B%0Amargin%3A%200%20auto%3B%0Awidth%3A%2040px%3B%0Aheight%3A%2020px%3B%0Aposition%3A%20relative%3B%0Aoverflow%3A%20hidden%3B%0A%7D%0A%2Eleaflet%2Dpopup%2Dtip%20%7B%0Awidth%3A%2017px%3B%0Aheight%3A%2017px%3B%0Apadding%3A%201px%3B%0Amargin%3A%20%2D10px%20auto%200%3B%0A%2Dwebkit%2Dtransform%3A%20rotate%2845deg%29%3B%0A%2Dmoz%2Dtransform%3A%20rotate%2845deg%29%3B%0A%2Dms%2Dtransform%3A%20rotate%2845deg%29%3B%0A%2Do%2Dtransform%3A%20rotate%2845deg%29%3B%0Atransform%3A%20rotate%2845deg%29%3B%0A%7D%0A%2Eleaflet%2Dpopup%2Dcontent%2Dwrapper%2C%0A%2Eleaflet%2Dpopup%2Dtip%20%7B%0Abackground%3A%20white%3B%0Abox%2Dshadow%3A%200%203px%2014px%20rgba%280%2C0%2C0%2C0%2E4%29%3B%0A%7D%0A%2Eleaflet%2Dcontainer%20a%2Eleaflet%2Dpopup%2Dclose%2Dbutton%20%7B%0Aposition%3A%20absolute%3B%0Atop%3A%200%3B%0Aright%3A%200%3B%0Apadding%3A%204px%204px%200%200%3B%0Atext%2Dalign%3A%20center%3B%0Awidth%3A%2018px%3B%0Aheight%3A%2014px%3B%0Afont%3A%2016px%2F14px%20Tahoma%2C%20Verdana%2C%20sans%2Dserif%3B%0Acolor%3A%20%23c3c3c3%3B%0Atext%2Ddecoration%3A%20none%3B%0Afont%2Dweight%3A%20bold%3B%0Abackground%3A%20transparent%3B%0A%7D%0A%2Eleaflet%2Dcontainer%20a%2Eleaflet%2Dpopup%2Dclose%2Dbutton%3Ahover%20%7B%0Acolor%3A%20%23999%3B%0A%7D%0A%2Eleaflet%2Dpopup%2Dscrolled%20%7B%0Aoverflow%3A%20auto%3B%0Aborder%2Dbottom%3A%201px%20solid%20%23ddd%3B%0Aborder%2Dtop%3A%201px%20solid%20%23ddd%3B%0A%7D%0A%2Eleaflet%2Doldie%20%2Eleaflet%2Dpopup%2Dcontent%2Dwrapper%20%7B%0Azoom%3A%201%3B%0A%7D%0A%2Eleaflet%2Doldie%20%2Eleaflet%2Dpopup%2Dtip%20%7B%0Awidth%3A%2024px%3B%0Amargin%3A%200%20auto%3B%0A%2Dms%2Dfilter%3A%20%22progid%3ADXImageTransform%2EMicrosoft%2EMatrix%28M11%3D0%2E70710678%2C%20M12%3D0%2E70710678%2C%20M21%3D%2D0%2E70710678%2C%20M22%3D0%2E70710678%29%22%3B%0Afilter%3A%20progid%3ADXImageTransform%2EMicrosoft%2EMatrix%28M11%3D0%2E70710678%2C%20M12%3D0%2E70710678%2C%20M21%3D%2D0%2E70710678%2C%20M22%3D0%2E70710678%29%3B%0A%7D%0A%2Eleaflet%2Doldie%20%2Eleaflet%2Dpopup%2Dtip%2Dcontainer%20%7B%0Amargin%2Dtop%3A%20%2D1px%3B%0A%7D%0A%2Eleaflet%2Doldie%20%2Eleaflet%2Dcontrol%2Dzoom%2C%0A%2Eleaflet%2Doldie%20%2Eleaflet%2Dcontrol%2Dlayers%2C%0A%2Eleaflet%2Doldie%20%2Eleaflet%2Dpopup%2Dcontent%2Dwrapper%2C%0A%2Eleaflet%2Doldie%20%2Eleaflet%2Dpopup%2Dtip%20%7B%0Aborder%3A%201px%20solid%20%23999%3B%0A%7D%0A%0A%2Eleaflet%2Ddiv%2Dicon%20%7B%0Abackground%3A%20%23fff%3B%0Aborder%3A%201px%20solid%20%23666%3B%0A%7D%0A" rel="stylesheet" />
<script src="data:application/x-javascript;base64,LyoKIExlYWZsZXQsIGEgSmF2YVNjcmlwdCBsaWJyYXJ5IGZvciBtb2JpbGUtZnJpZW5kbHkgaW50ZXJhY3RpdmUgbWFwcy4gaHR0cDovL2xlYWZsZXRqcy5jb20KIChjKSAyMDEwLTIwMTMsIFZsYWRpbWlyIEFnYWZvbmtpbgogKGMpIDIwMTAtMjAxMSwgQ2xvdWRNYWRlCiovCiFmdW5jdGlvbih0LGUsaSl7dmFyIG49dC5MLG89e307by52ZXJzaW9uPSIwLjcuMyIsIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9bzoiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kJiZkZWZpbmUobyksby5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHQuTD1uLHRoaXN9LHQuTD1vLG8uVXRpbD17ZXh0ZW5kOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixvLHM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO2ZvcihpPTAsbj1zLmxlbmd0aDtuPmk7aSsrKXtvPXNbaV18fHt9O2ZvcihlIGluIG8pby5oYXNPd25Qcm9wZXJ0eShlKSYmKHRbZV09b1tlXSl9cmV0dXJuIHR9LGJpbmQ6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjI/QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpOm51bGw7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkoZSxpfHxhcmd1bWVudHMpfX0sc3RhbXA6ZnVuY3Rpb24oKXt2YXIgdD0wLGU9Il9sZWFmbGV0X2lkIjtyZXR1cm4gZnVuY3Rpb24oaSl7cmV0dXJuIGlbZV09aVtlXXx8Kyt0LGlbZV19fSgpLGludm9rZUVhY2g6ZnVuY3Rpb24odCxlLGkpe3ZhciBuLG87aWYoIm9iamVjdCI9PXR5cGVvZiB0KXtvPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywzKTtmb3IobiBpbiB0KWUuYXBwbHkoaSxbbix0W25dXS5jb25jYXQobykpO3JldHVybiEwfXJldHVybiExfSxsaW1pdEV4ZWNCeUludGVydmFsOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixvO3JldHVybiBmdW5jdGlvbiBzKCl7dmFyIGE9YXJndW1lbnRzO3JldHVybiBuP3ZvaWQobz0hMCk6KG49ITAsc2V0VGltZW91dChmdW5jdGlvbigpe249ITEsbyYmKHMuYXBwbHkoaSxhKSxvPSExKX0sZSksdm9pZCB0LmFwcGx5KGksYSkpfX0sZmFsc2VGbjpmdW5jdGlvbigpe3JldHVybiExfSxmb3JtYXROdW06ZnVuY3Rpb24odCxlKXt2YXIgaT1NYXRoLnBvdygxMCxlfHw1KTtyZXR1cm4gTWF0aC5yb3VuZCh0KmkpL2l9LHRyaW06ZnVuY3Rpb24odCl7cmV0dXJuIHQudHJpbT90LnRyaW0oKTp0LnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0sc3BsaXRXb3JkczpmdW5jdGlvbih0KXtyZXR1cm4gby5VdGlsLnRyaW0odCkuc3BsaXQoL1xzKy8pfSxzZXRPcHRpb25zOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQub3B0aW9ucz1vLmV4dGVuZCh7fSx0Lm9wdGlvbnMsZSksdC5vcHRpb25zfSxnZXRQYXJhbVN0cmluZzpmdW5jdGlvbih0LGUsaSl7dmFyIG49W107Zm9yKHZhciBvIGluIHQpbi5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChpP28udG9VcHBlckNhc2UoKTpvKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KHRbb10pKTtyZXR1cm4oZSYmLTEhPT1lLmluZGV4T2YoIj8iKT8iJiI6Ij8iKStuLmpvaW4oIiYiKX0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5yZXBsYWNlKC9ceyAqKFtcd19dKykgKlx9L2csZnVuY3Rpb24odCxuKXt2YXIgbz1lW25dO2lmKG89PT1pKXRocm93IG5ldyBFcnJvcigiTm8gdmFsdWUgcHJvdmlkZWQgZm9yIHZhcmlhYmxlICIrdCk7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG8mJihvPW8oZSkpLG99KX0saXNBcnJheTpBcnJheS5pc0FycmF5fHxmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSxlbXB0eUltYWdlVXJsOiJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUFEL0FDd0FBQUFBQVFBQkFBQUNBRHM9In0sZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3ZhciBpLG4sbz1bIndlYmtpdCIsIm1veiIsIm8iLCJtcyJdO2ZvcihpPTA7aTxvLmxlbmd0aCYmIW47aSsrKW49dFtvW2ldK2VdO3JldHVybiBufWZ1bmN0aW9uIGkoZSl7dmFyIGk9K25ldyBEYXRlLG89TWF0aC5tYXgoMCwxNi0oaS1uKSk7cmV0dXJuIG49aStvLHQuc2V0VGltZW91dChlLG8pfXZhciBuPTAscz10LnJlcXVlc3RBbmltYXRpb25GcmFtZXx8ZSgiUmVxdWVzdEFuaW1hdGlvbkZyYW1lIil8fGksYT10LmNhbmNlbEFuaW1hdGlvbkZyYW1lfHxlKCJDYW5jZWxBbmltYXRpb25GcmFtZSIpfHxlKCJDYW5jZWxSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiKXx8ZnVuY3Rpb24oZSl7dC5jbGVhclRpbWVvdXQoZSl9O28uVXRpbC5yZXF1ZXN0QW5pbUZyYW1lPWZ1bmN0aW9uKGUsbixhLHIpe3JldHVybiBlPW8uYmluZChlLG4pLGEmJnM9PT1pP3ZvaWQgZSgpOnMuY2FsbCh0LGUscil9LG8uVXRpbC5jYW5jZWxBbmltRnJhbWU9ZnVuY3Rpb24oZSl7ZSYmYS5jYWxsKHQsZSl9fSgpLG8uZXh0ZW5kPW8uVXRpbC5leHRlbmQsby5iaW5kPW8uVXRpbC5iaW5kLG8uc3RhbXA9by5VdGlsLnN0YW1wLG8uc2V0T3B0aW9ucz1vLlV0aWwuc2V0T3B0aW9ucyxvLkNsYXNzPWZ1bmN0aW9uKCl7fSxvLkNsYXNzLmV4dGVuZD1mdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbigpe3RoaXMuaW5pdGlhbGl6ZSYmdGhpcy5pbml0aWFsaXplLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9pbml0SG9va3MmJnRoaXMuY2FsbEluaXRIb29rcygpfSxpPWZ1bmN0aW9uKCl7fTtpLnByb3RvdHlwZT10aGlzLnByb3RvdHlwZTt2YXIgbj1uZXcgaTtuLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGU9bjtmb3IodmFyIHMgaW4gdGhpcyl0aGlzLmhhc093blByb3BlcnR5KHMpJiYicHJvdG90eXBlIiE9PXMmJihlW3NdPXRoaXNbc10pO3Quc3RhdGljcyYmKG8uZXh0ZW5kKGUsdC5zdGF0aWNzKSxkZWxldGUgdC5zdGF0aWNzKSx0LmluY2x1ZGVzJiYoby5VdGlsLmV4dGVuZC5hcHBseShudWxsLFtuXS5jb25jYXQodC5pbmNsdWRlcykpLGRlbGV0ZSB0LmluY2x1ZGVzKSx0Lm9wdGlvbnMmJm4ub3B0aW9ucyYmKHQub3B0aW9ucz1vLmV4dGVuZCh7fSxuLm9wdGlvbnMsdC5vcHRpb25zKSksby5leHRlbmQobix0KSxuLl9pbml0SG9va3M9W107dmFyIGE9dGhpcztyZXR1cm4gZS5fX3N1cGVyX189YS5wcm90b3R5cGUsbi5jYWxsSW5pdEhvb2tzPWZ1bmN0aW9uKCl7aWYoIXRoaXMuX2luaXRIb29rc0NhbGxlZCl7YS5wcm90b3R5cGUuY2FsbEluaXRIb29rcyYmYS5wcm90b3R5cGUuY2FsbEluaXRIb29rcy5jYWxsKHRoaXMpLHRoaXMuX2luaXRIb29rc0NhbGxlZD0hMDtmb3IodmFyIHQ9MCxlPW4uX2luaXRIb29rcy5sZW5ndGg7ZT50O3QrKyluLl9pbml0SG9va3NbdF0uY2FsbCh0aGlzKX19LGV9LG8uQ2xhc3MuaW5jbHVkZT1mdW5jdGlvbih0KXtvLmV4dGVuZCh0aGlzLnByb3RvdHlwZSx0KX0sby5DbGFzcy5tZXJnZU9wdGlvbnM9ZnVuY3Rpb24odCl7by5leHRlbmQodGhpcy5wcm90b3R5cGUub3B0aW9ucyx0KX0sby5DbGFzcy5hZGRJbml0SG9vaz1mdW5jdGlvbih0KXt2YXIgZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSksaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmZ1bmN0aW9uKCl7dGhpc1t0XS5hcHBseSh0aGlzLGUpfTt0aGlzLnByb3RvdHlwZS5faW5pdEhvb2tzPXRoaXMucHJvdG90eXBlLl9pbml0SG9va3N8fFtdLHRoaXMucHJvdG90eXBlLl9pbml0SG9va3MucHVzaChpKX07dmFyIHM9Il9sZWFmbGV0X2V2ZW50cyI7by5NaXhpbj17fSxvLk1peGluLkV2ZW50cz17YWRkRXZlbnRMaXN0ZW5lcjpmdW5jdGlvbih0LGUsaSl7aWYoby5VdGlsLmludm9rZUVhY2godCx0aGlzLmFkZEV2ZW50TGlzdGVuZXIsdGhpcyxlLGkpKXJldHVybiB0aGlzO3ZhciBuLGEscixoLGwsdSxjLGQ9dGhpc1tzXT10aGlzW3NdfHx7fSxwPWkmJmkhPT10aGlzJiZvLnN0YW1wKGkpO2Zvcih0PW8uVXRpbC5zcGxpdFdvcmRzKHQpLG49MCxhPXQubGVuZ3RoO2E+bjtuKyspcj17YWN0aW9uOmUsY29udGV4dDppfHx0aGlzfSxoPXRbbl0scD8obD1oKyJfaWR4Iix1PWwrIl9sZW4iLGM9ZFtsXT1kW2xdfHx7fSxjW3BdfHwoY1twXT1bXSxkW3VdPShkW3VdfHwwKSsxKSxjW3BdLnB1c2gocikpOihkW2hdPWRbaF18fFtdLGRbaF0ucHVzaChyKSk7cmV0dXJuIHRoaXN9LGhhc0V2ZW50TGlzdGVuZXJzOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXNbc107cmV0dXJuISFlJiYodCBpbiBlJiZlW3RdLmxlbmd0aD4wfHx0KyJfaWR4ImluIGUmJmVbdCsiX2lkeF9sZW4iXT4wKX0scmVtb3ZlRXZlbnRMaXN0ZW5lcjpmdW5jdGlvbih0LGUsaSl7aWYoIXRoaXNbc10pcmV0dXJuIHRoaXM7aWYoIXQpcmV0dXJuIHRoaXMuY2xlYXJBbGxFdmVudExpc3RlbmVycygpO2lmKG8uVXRpbC5pbnZva2VFYWNoKHQsdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyLHRoaXMsZSxpKSlyZXR1cm4gdGhpczt2YXIgbixhLHIsaCxsLHUsYyxkLHAsXz10aGlzW3NdLG09aSYmaSE9PXRoaXMmJm8uc3RhbXAoaSk7Zm9yKHQ9by5VdGlsLnNwbGl0V29yZHModCksbj0wLGE9dC5sZW5ndGg7YT5uO24rKylpZihyPXRbbl0sdT1yKyJfaWR4IixjPXUrIl9sZW4iLGQ9X1t1XSxlKXtpZihoPW0mJmQ/ZFttXTpfW3JdKXtmb3IobD1oLmxlbmd0aC0xO2w+PTA7bC0tKWhbbF0uYWN0aW9uIT09ZXx8aSYmaFtsXS5jb250ZXh0IT09aXx8KHA9aC5zcGxpY2UobCwxKSxwWzBdLmFjdGlvbj1vLlV0aWwuZmFsc2VGbik7aSYmZCYmMD09PWgubGVuZ3RoJiYoZGVsZXRlIGRbbV0sX1tjXS0tKX19ZWxzZSBkZWxldGUgX1tyXSxkZWxldGUgX1t1XSxkZWxldGUgX1tjXTtyZXR1cm4gdGhpc30sY2xlYXJBbGxFdmVudExpc3RlbmVyczpmdW5jdGlvbigpe3JldHVybiBkZWxldGUgdGhpc1tzXSx0aGlzfSxmaXJlRXZlbnQ6ZnVuY3Rpb24odCxlKXtpZighdGhpcy5oYXNFdmVudExpc3RlbmVycyh0KSlyZXR1cm4gdGhpczt2YXIgaSxuLGEscixoLGw9by5VdGlsLmV4dGVuZCh7fSxlLHt0eXBlOnQsdGFyZ2V0OnRoaXN9KSx1PXRoaXNbc107aWYodVt0XSlmb3IoaT11W3RdLnNsaWNlKCksbj0wLGE9aS5sZW5ndGg7YT5uO24rKylpW25dLmFjdGlvbi5jYWxsKGlbbl0uY29udGV4dCxsKTtyPXVbdCsiX2lkeCJdO2ZvcihoIGluIHIpaWYoaT1yW2hdLnNsaWNlKCkpZm9yKG49MCxhPWkubGVuZ3RoO2E+bjtuKyspaVtuXS5hY3Rpb24uY2FsbChpW25dLmNvbnRleHQsbCk7cmV0dXJuIHRoaXN9LGFkZE9uZVRpbWVFdmVudExpc3RlbmVyOmZ1bmN0aW9uKHQsZSxpKXtpZihvLlV0aWwuaW52b2tlRWFjaCh0LHRoaXMuYWRkT25lVGltZUV2ZW50TGlzdGVuZXIsdGhpcyxlLGkpKXJldHVybiB0aGlzO3ZhciBuPW8uYmluZChmdW5jdGlvbigpe3RoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LGUsaSkucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4saSl9LHRoaXMpO3JldHVybiB0aGlzLmFkZEV2ZW50TGlzdGVuZXIodCxlLGkpLmFkZEV2ZW50TGlzdGVuZXIodCxuLGkpfX0sby5NaXhpbi5FdmVudHMub249by5NaXhpbi5FdmVudHMuYWRkRXZlbnRMaXN0ZW5lcixvLk1peGluLkV2ZW50cy5vZmY9by5NaXhpbi5FdmVudHMucmVtb3ZlRXZlbnRMaXN0ZW5lcixvLk1peGluLkV2ZW50cy5vbmNlPW8uTWl4aW4uRXZlbnRzLmFkZE9uZVRpbWVFdmVudExpc3RlbmVyLG8uTWl4aW4uRXZlbnRzLmZpcmU9by5NaXhpbi5FdmVudHMuZmlyZUV2ZW50LGZ1bmN0aW9uKCl7dmFyIG49IkFjdGl2ZVhPYmplY3QiaW4gdCxzPW4mJiFlLmFkZEV2ZW50TGlzdGVuZXIsYT1uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkscj0tMSE9PWEuaW5kZXhPZigid2Via2l0IiksaD0tMSE9PWEuaW5kZXhPZigiY2hyb21lIiksbD0tMSE9PWEuaW5kZXhPZigicGhhbnRvbSIpLHU9LTEhPT1hLmluZGV4T2YoImFuZHJvaWQiKSxjPS0xIT09YS5zZWFyY2goImFuZHJvaWQgWzIzXSIpLGQ9LTEhPT1hLmluZGV4T2YoImdlY2tvIikscD10eXBlb2Ygb3JpZW50YXRpb24hPWkrIiIsXz10Lm5hdmlnYXRvciYmdC5uYXZpZ2F0b3IubXNQb2ludGVyRW5hYmxlZCYmdC5uYXZpZ2F0b3IubXNNYXhUb3VjaFBvaW50cyYmIXQuUG9pbnRlckV2ZW50LG09dC5Qb2ludGVyRXZlbnQmJnQubmF2aWdhdG9yLnBvaW50ZXJFbmFibGVkJiZ0Lm5hdmlnYXRvci5tYXhUb3VjaFBvaW50c3x8XyxmPSJkZXZpY2VQaXhlbFJhdGlvImluIHQmJnQuZGV2aWNlUGl4ZWxSYXRpbz4xfHwibWF0Y2hNZWRpYSJpbiB0JiZ0Lm1hdGNoTWVkaWEoIihtaW4tcmVzb2x1dGlvbjoxNDRkcGkpIikmJnQubWF0Y2hNZWRpYSgiKG1pbi1yZXNvbHV0aW9uOjE0NGRwaSkiKS5tYXRjaGVzLGc9ZS5kb2N1bWVudEVsZW1lbnQsdj1uJiYidHJhbnNpdGlvbiJpbiBnLnN0eWxlLHk9IldlYktpdENTU01hdHJpeCJpbiB0JiYibTExImluIG5ldyB0LldlYktpdENTU01hdHJpeCYmIWMsUD0iTW96UGVyc3BlY3RpdmUiaW4gZy5zdHlsZSxMPSJPVHJhbnNpdGlvbiJpbiBnLnN0eWxlLHg9IXQuTF9ESVNBQkxFXzNEJiYodnx8eXx8UHx8TCkmJiFsLHc9IXQuTF9OT19UT1VDSCYmIWwmJmZ1bmN0aW9uKCl7dmFyIHQ9Im9udG91Y2hzdGFydCI7aWYobXx8dCBpbiBnKXJldHVybiEwO3ZhciBpPWUuY3JlYXRlRWxlbWVudCgiZGl2Iiksbj0hMTtyZXR1cm4gaS5zZXRBdHRyaWJ1dGU/KGkuc2V0QXR0cmlidXRlKHQsInJldHVybjsiKSwiZnVuY3Rpb24iPT10eXBlb2YgaVt0XSYmKG49ITApLGkucmVtb3ZlQXR0cmlidXRlKHQpLGk9bnVsbCxuKTohMX0oKTtvLkJyb3dzZXI9e2llOm4saWVsdDk6cyx3ZWJraXQ6cixnZWNrbzpkJiYhciYmIXQub3BlcmEmJiFuLGFuZHJvaWQ6dSxhbmRyb2lkMjM6YyxjaHJvbWU6aCxpZTNkOnYsd2Via2l0M2Q6eSxnZWNrbzNkOlAsb3BlcmEzZDpMLGFueTNkOngsbW9iaWxlOnAsbW9iaWxlV2Via2l0OnAmJnIsbW9iaWxlV2Via2l0M2Q6cCYmeSxtb2JpbGVPcGVyYTpwJiZ0Lm9wZXJhLHRvdWNoOncsbXNQb2ludGVyOl8scG9pbnRlcjptLHJldGluYTpmfX0oKSxvLlBvaW50PWZ1bmN0aW9uKHQsZSxpKXt0aGlzLng9aT9NYXRoLnJvdW5kKHQpOnQsdGhpcy55PWk/TWF0aC5yb3VuZChlKTplfSxvLlBvaW50LnByb3RvdHlwZT17Y2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG8uUG9pbnQodGhpcy54LHRoaXMueSl9LGFkZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLl9hZGQoby5wb2ludCh0KSl9LF9hZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueCs9dC54LHRoaXMueSs9dC55LHRoaXN9LHN1YnRyYWN0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuX3N1YnRyYWN0KG8ucG9pbnQodCkpfSxfc3VidHJhY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueC09dC54LHRoaXMueS09dC55LHRoaXN9LGRpdmlkZUJ5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuX2RpdmlkZUJ5KHQpfSxfZGl2aWRlQnk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueC89dCx0aGlzLnkvPXQsdGhpc30sbXVsdGlwbHlCeTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLl9tdWx0aXBseUJ5KHQpfSxfbXVsdGlwbHlCeTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54Kj10LHRoaXMueSo9dCx0aGlzfSxyb3VuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuX3JvdW5kKCl9LF9yb3VuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLng9TWF0aC5yb3VuZCh0aGlzLngpLHRoaXMueT1NYXRoLnJvdW5kKHRoaXMueSksdGhpc30sZmxvb3I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLl9mbG9vcigpfSxfZmxvb3I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54PU1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9TWF0aC5mbG9vcih0aGlzLnkpLHRoaXN9LGRpc3RhbmNlVG86ZnVuY3Rpb24odCl7dD1vLnBvaW50KHQpO3ZhciBlPXQueC10aGlzLngsaT10LnktdGhpcy55O3JldHVybiBNYXRoLnNxcnQoZSplK2kqaSl9LGVxdWFsczpmdW5jdGlvbih0KXtyZXR1cm4gdD1vLnBvaW50KHQpLHQueD09PXRoaXMueCYmdC55PT09dGhpcy55fSxjb250YWluczpmdW5jdGlvbih0KXtyZXR1cm4gdD1vLnBvaW50KHQpLE1hdGguYWJzKHQueCk8PU1hdGguYWJzKHRoaXMueCkmJk1hdGguYWJzKHQueSk8PU1hdGguYWJzKHRoaXMueSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIlBvaW50KCIrby5VdGlsLmZvcm1hdE51bSh0aGlzLngpKyIsICIrby5VdGlsLmZvcm1hdE51bSh0aGlzLnkpKyIpIn19LG8ucG9pbnQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0IGluc3RhbmNlb2Ygby5Qb2ludD90Om8uVXRpbC5pc0FycmF5KHQpP25ldyBvLlBvaW50KHRbMF0sdFsxXSk6dD09PWl8fG51bGw9PT10P3Q6bmV3IG8uUG9pbnQodCxlLG4pfSxvLkJvdW5kcz1mdW5jdGlvbih0LGUpe2lmKHQpZm9yKHZhciBpPWU/W3QsZV06dCxuPTAsbz1pLmxlbmd0aDtvPm47bisrKXRoaXMuZXh0ZW5kKGlbbl0pfSxvLkJvdW5kcy5wcm90b3R5cGU9e2V4dGVuZDpmdW5jdGlvbih0KXtyZXR1cm4gdD1vLnBvaW50KHQpLHRoaXMubWlufHx0aGlzLm1heD8odGhpcy5taW4ueD1NYXRoLm1pbih0LngsdGhpcy5taW4ueCksdGhpcy5tYXgueD1NYXRoLm1heCh0LngsdGhpcy5tYXgueCksdGhpcy5taW4ueT1NYXRoLm1pbih0LnksdGhpcy5taW4ueSksdGhpcy5tYXgueT1NYXRoLm1heCh0LnksdGhpcy5tYXgueSkpOih0aGlzLm1pbj10LmNsb25lKCksdGhpcy5tYXg9dC5jbG9uZSgpKSx0aGlzfSxnZXRDZW50ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBvLlBvaW50KCh0aGlzLm1pbi54K3RoaXMubWF4LngpLzIsKHRoaXMubWluLnkrdGhpcy5tYXgueSkvMix0KX0sZ2V0Qm90dG9tTGVmdDpmdW5jdGlvbigpe3JldHVybiBuZXcgby5Qb2ludCh0aGlzLm1pbi54LHRoaXMubWF4LnkpfSxnZXRUb3BSaWdodDpmdW5jdGlvbigpe3JldHVybiBuZXcgby5Qb2ludCh0aGlzLm1heC54LHRoaXMubWluLnkpfSxnZXRTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWF4LnN1YnRyYWN0KHRoaXMubWluKX0sY29udGFpbnM6ZnVuY3Rpb24odCl7dmFyIGUsaTtyZXR1cm4gdD0ibnVtYmVyIj09dHlwZW9mIHRbMF18fHQgaW5zdGFuY2VvZiBvLlBvaW50P28ucG9pbnQodCk6by5ib3VuZHModCksdCBpbnN0YW5jZW9mIG8uQm91bmRzPyhlPXQubWluLGk9dC5tYXgpOmU9aT10LGUueD49dGhpcy5taW4ueCYmaS54PD10aGlzLm1heC54JiZlLnk+PXRoaXMubWluLnkmJmkueTw9dGhpcy5tYXgueX0saW50ZXJzZWN0czpmdW5jdGlvbih0KXt0PW8uYm91bmRzKHQpO3ZhciBlPXRoaXMubWluLGk9dGhpcy5tYXgsbj10Lm1pbixzPXQubWF4LGE9cy54Pj1lLngmJm4ueDw9aS54LHI9cy55Pj1lLnkmJm4ueTw9aS55O3JldHVybiBhJiZyfSxpc1ZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuISghdGhpcy5taW58fCF0aGlzLm1heCl9fSxvLmJvdW5kcz1mdW5jdGlvbih0LGUpe3JldHVybiF0fHx0IGluc3RhbmNlb2Ygby5Cb3VuZHM/dDpuZXcgby5Cb3VuZHModCxlKX0sby5UcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0LGUsaSxuKXt0aGlzLl9hPXQsdGhpcy5fYj1lLHRoaXMuX2M9aSx0aGlzLl9kPW59LG8uVHJhbnNmb3JtYXRpb24ucHJvdG90eXBlPXt0cmFuc2Zvcm06ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fdHJhbnNmb3JtKHQuY2xvbmUoKSxlKX0sX3RyYW5zZm9ybTpmdW5jdGlvbih0LGUpe3JldHVybiBlPWV8fDEsdC54PWUqKHRoaXMuX2EqdC54K3RoaXMuX2IpLHQueT1lKih0aGlzLl9jKnQueSt0aGlzLl9kKSx0fSx1bnRyYW5zZm9ybTpmdW5jdGlvbih0LGUpe3JldHVybiBlPWV8fDEsbmV3IG8uUG9pbnQoKHQueC9lLXRoaXMuX2IpL3RoaXMuX2EsKHQueS9lLXRoaXMuX2QpL3RoaXMuX2MpfX0sby5Eb21VdGlsPXtnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P2UuZ2V0RWxlbWVudEJ5SWQodCk6dH0sZ2V0U3R5bGU6ZnVuY3Rpb24odCxpKXt2YXIgbj10LnN0eWxlW2ldO2lmKCFuJiZ0LmN1cnJlbnRTdHlsZSYmKG49dC5jdXJyZW50U3R5bGVbaV0pLCghbnx8ImF1dG8iPT09bikmJmUuZGVmYXVsdFZpZXcpe3ZhciBvPWUuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh0LG51bGwpO249bz9vW2ldOm51bGx9cmV0dXJuImF1dG8iPT09bj9udWxsOm59LGdldFZpZXdwb3J0T2Zmc2V0OmZ1bmN0aW9uKHQpe3ZhciBpLG49MCxzPTAsYT10LHI9ZS5ib2R5LGg9ZS5kb2N1bWVudEVsZW1lbnQ7ZG97aWYobis9YS5vZmZzZXRUb3B8fDAscys9YS5vZmZzZXRMZWZ0fHwwLG4rPXBhcnNlSW50KG8uRG9tVXRpbC5nZXRTdHlsZShhLCJib3JkZXJUb3BXaWR0aCIpLDEwKXx8MCxzKz1wYXJzZUludChvLkRvbVV0aWwuZ2V0U3R5bGUoYSwiYm9yZGVyTGVmdFdpZHRoIiksMTApfHwwLGk9by5Eb21VdGlsLmdldFN0eWxlKGEsInBvc2l0aW9uIiksYS5vZmZzZXRQYXJlbnQ9PT1yJiYiYWJzb2x1dGUiPT09aSlicmVhaztpZigiZml4ZWQiPT09aSl7bis9ci5zY3JvbGxUb3B8fGguc2Nyb2xsVG9wfHwwLHMrPXIuc2Nyb2xsTGVmdHx8aC5zY3JvbGxMZWZ0fHwwO2JyZWFrfWlmKCJyZWxhdGl2ZSI9PT1pJiYhYS5vZmZzZXRMZWZ0KXt2YXIgbD1vLkRvbVV0aWwuZ2V0U3R5bGUoYSwid2lkdGgiKSx1PW8uRG9tVXRpbC5nZXRTdHlsZShhLCJtYXgtd2lkdGgiKSxjPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7KCJub25lIiE9PWx8fCJub25lIiE9PXUpJiYocys9Yy5sZWZ0K2EuY2xpZW50TGVmdCksbis9Yy50b3ArKHIuc2Nyb2xsVG9wfHxoLnNjcm9sbFRvcHx8MCk7YnJlYWt9YT1hLm9mZnNldFBhcmVudH13aGlsZShhKTthPXQ7ZG97aWYoYT09PXIpYnJlYWs7bi09YS5zY3JvbGxUb3B8fDAscy09YS5zY3JvbGxMZWZ0fHwwLGE9YS5wYXJlbnROb2RlfXdoaWxlKGEpO3JldHVybiBuZXcgby5Qb2ludChzLG4pfSxkb2N1bWVudElzTHRyOmZ1bmN0aW9uKCl7cmV0dXJuIG8uRG9tVXRpbC5fZG9jSXNMdHJDYWNoZWR8fChvLkRvbVV0aWwuX2RvY0lzTHRyQ2FjaGVkPSEwLG8uRG9tVXRpbC5fZG9jSXNMdHI9Imx0ciI9PT1vLkRvbVV0aWwuZ2V0U3R5bGUoZS5ib2R5LCJkaXJlY3Rpb24iKSksby5Eb21VdGlsLl9kb2NJc0x0cn0sY3JlYXRlOmZ1bmN0aW9uKHQsaSxuKXt2YXIgbz1lLmNyZWF0ZUVsZW1lbnQodCk7cmV0dXJuIG8uY2xhc3NOYW1lPWksbiYmbi5hcHBlbmRDaGlsZChvKSxvfSxoYXNDbGFzczpmdW5jdGlvbih0LGUpe2lmKHQuY2xhc3NMaXN0IT09aSlyZXR1cm4gdC5jbGFzc0xpc3QuY29udGFpbnMoZSk7dmFyIG49by5Eb21VdGlsLl9nZXRDbGFzcyh0KTtyZXR1cm4gbi5sZW5ndGg+MCYmbmV3IFJlZ0V4cCgiKF58XFxzKSIrZSsiKFxcc3wkKSIpLnRlc3Qobil9LGFkZENsYXNzOmZ1bmN0aW9uKHQsZSl7aWYodC5jbGFzc0xpc3QhPT1pKWZvcih2YXIgbj1vLlV0aWwuc3BsaXRXb3JkcyhlKSxzPTAsYT1uLmxlbmd0aDthPnM7cysrKXQuY2xhc3NMaXN0LmFkZChuW3NdKTtlbHNlIGlmKCFvLkRvbVV0aWwuaGFzQ2xhc3ModCxlKSl7dmFyIHI9by5Eb21VdGlsLl9nZXRDbGFzcyh0KTtvLkRvbVV0aWwuX3NldENsYXNzKHQsKHI/cisiICI6IiIpK2UpfX0scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24odCxlKXt0LmNsYXNzTGlzdCE9PWk/dC5jbGFzc0xpc3QucmVtb3ZlKGUpOm8uRG9tVXRpbC5fc2V0Q2xhc3ModCxvLlV0aWwudHJpbSgoIiAiK28uRG9tVXRpbC5fZ2V0Q2xhc3ModCkrIiAiKS5yZXBsYWNlKCIgIitlKyIgIiwiICIpKSl9LF9zZXRDbGFzczpmdW5jdGlvbih0LGUpe3QuY2xhc3NOYW1lLmJhc2VWYWw9PT1pP3QuY2xhc3NOYW1lPWU6dC5jbGFzc05hbWUuYmFzZVZhbD1lfSxfZ2V0Q2xhc3M6ZnVuY3Rpb24odCl7cmV0dXJuIHQuY2xhc3NOYW1lLmJhc2VWYWw9PT1pP3QuY2xhc3NOYW1lOnQuY2xhc3NOYW1lLmJhc2VWYWx9LHNldE9wYWNpdHk6ZnVuY3Rpb24odCxlKXtpZigib3BhY2l0eSJpbiB0LnN0eWxlKXQuc3R5bGUub3BhY2l0eT1lO2Vsc2UgaWYoImZpbHRlciJpbiB0LnN0eWxlKXt2YXIgaT0hMSxuPSJEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYSI7dHJ5e2k9dC5maWx0ZXJzLml0ZW0obil9Y2F0Y2gobyl7aWYoMT09PWUpcmV0dXJufWU9TWF0aC5yb3VuZCgxMDAqZSksaT8oaS5FbmFibGVkPTEwMCE9PWUsaS5PcGFjaXR5PWUpOnQuc3R5bGUuZmlsdGVyKz0iIHByb2dpZDoiK24rIihvcGFjaXR5PSIrZSsiKSJ9fSx0ZXN0UHJvcDpmdW5jdGlvbih0KXtmb3IodmFyIGk9ZS5kb2N1bWVudEVsZW1lbnQuc3R5bGUsbj0wO248dC5sZW5ndGg7bisrKWlmKHRbbl1pbiBpKXJldHVybiB0W25dO3JldHVybiExfSxnZXRUcmFuc2xhdGVTdHJpbmc6ZnVuY3Rpb24odCl7dmFyIGU9by5Ccm93c2VyLndlYmtpdDNkLGk9InRyYW5zbGF0ZSIrKGU/IjNkIjoiIikrIigiLG49KGU/IiwwIjoiIikrIikiO3JldHVybiBpK3QueCsicHgsIit0LnkrInB4IitufSxnZXRTY2FsZVN0cmluZzpmdW5jdGlvbih0LGUpe3ZhciBpPW8uRG9tVXRpbC5nZXRUcmFuc2xhdGVTdHJpbmcoZS5hZGQoZS5tdWx0aXBseUJ5KC0xKnQpKSksbj0iIHNjYWxlKCIrdCsiKSAiO3JldHVybiBpK259LHNldFBvc2l0aW9uOmZ1bmN0aW9uKHQsZSxpKXt0Ll9sZWFmbGV0X3Bvcz1lLCFpJiZvLkJyb3dzZXIuYW55M2Q/dC5zdHlsZVtvLkRvbVV0aWwuVFJBTlNGT1JNXT1vLkRvbVV0aWwuZ2V0VHJhbnNsYXRlU3RyaW5nKGUpOih0LnN0eWxlLmxlZnQ9ZS54KyJweCIsdC5zdHlsZS50b3A9ZS55KyJweCIpfSxnZXRQb3NpdGlvbjpmdW5jdGlvbih0KXtyZXR1cm4gdC5fbGVhZmxldF9wb3N9fSxvLkRvbVV0aWwuVFJBTlNGT1JNPW8uRG9tVXRpbC50ZXN0UHJvcChbInRyYW5zZm9ybSIsIldlYmtpdFRyYW5zZm9ybSIsIk9UcmFuc2Zvcm0iLCJNb3pUcmFuc2Zvcm0iLCJtc1RyYW5zZm9ybSJdKSxvLkRvbVV0aWwuVFJBTlNJVElPTj1vLkRvbVV0aWwudGVzdFByb3AoWyJ3ZWJraXRUcmFuc2l0aW9uIiwidHJhbnNpdGlvbiIsIk9UcmFuc2l0aW9uIiwiTW96VHJhbnNpdGlvbiIsIm1zVHJhbnNpdGlvbiJdKSxvLkRvbVV0aWwuVFJBTlNJVElPTl9FTkQ9IndlYmtpdFRyYW5zaXRpb24iPT09by5Eb21VdGlsLlRSQU5TSVRJT058fCJPVHJhbnNpdGlvbiI9PT1vLkRvbVV0aWwuVFJBTlNJVElPTj9vLkRvbVV0aWwuVFJBTlNJVElPTisiRW5kIjoidHJhbnNpdGlvbmVuZCIsZnVuY3Rpb24oKXtpZigib25zZWxlY3RzdGFydCJpbiBlKW8uZXh0ZW5kKG8uRG9tVXRpbCx7ZGlzYWJsZVRleHRTZWxlY3Rpb246ZnVuY3Rpb24oKXtvLkRvbUV2ZW50Lm9uKHQsInNlbGVjdHN0YXJ0IixvLkRvbUV2ZW50LnByZXZlbnREZWZhdWx0KX0sZW5hYmxlVGV4dFNlbGVjdGlvbjpmdW5jdGlvbigpe28uRG9tRXZlbnQub2ZmKHQsInNlbGVjdHN0YXJ0IixvLkRvbUV2ZW50LnByZXZlbnREZWZhdWx0KX19KTtlbHNle3ZhciBpPW8uRG9tVXRpbC50ZXN0UHJvcChbInVzZXJTZWxlY3QiLCJXZWJraXRVc2VyU2VsZWN0IiwiT1VzZXJTZWxlY3QiLCJNb3pVc2VyU2VsZWN0IiwibXNVc2VyU2VsZWN0Il0pO28uZXh0ZW5kKG8uRG9tVXRpbCx7ZGlzYWJsZVRleHRTZWxlY3Rpb246ZnVuY3Rpb24oKXtpZihpKXt2YXIgdD1lLmRvY3VtZW50RWxlbWVudC5zdHlsZTt0aGlzLl91c2VyU2VsZWN0PXRbaV0sdFtpXT0ibm9uZSJ9fSxlbmFibGVUZXh0U2VsZWN0aW9uOmZ1bmN0aW9uKCl7aSYmKGUuZG9jdW1lbnRFbGVtZW50LnN0eWxlW2ldPXRoaXMuX3VzZXJTZWxlY3QsZGVsZXRlIHRoaXMuX3VzZXJTZWxlY3QpfX0pfW8uZXh0ZW5kKG8uRG9tVXRpbCx7ZGlzYWJsZUltYWdlRHJhZzpmdW5jdGlvbigpe28uRG9tRXZlbnQub24odCwiZHJhZ3N0YXJ0IixvLkRvbUV2ZW50LnByZXZlbnREZWZhdWx0KX0sZW5hYmxlSW1hZ2VEcmFnOmZ1bmN0aW9uKCl7by5Eb21FdmVudC5vZmYodCwiZHJhZ3N0YXJ0IixvLkRvbUV2ZW50LnByZXZlbnREZWZhdWx0KX19KX0oKSxvLkxhdExuZz1mdW5jdGlvbih0LGUsbil7aWYodD1wYXJzZUZsb2F0KHQpLGU9cGFyc2VGbG9hdChlKSxpc05hTih0KXx8aXNOYU4oZSkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIExhdExuZyBvYmplY3Q6ICgiK3QrIiwgIitlKyIpIik7dGhpcy5sYXQ9dCx0aGlzLmxuZz1lLG4hPT1pJiYodGhpcy5hbHQ9cGFyc2VGbG9hdChuKSl9LG8uZXh0ZW5kKG8uTGF0TG5nLHtERUdfVE9fUkFEOk1hdGguUEkvMTgwLFJBRF9UT19ERUc6MTgwL01hdGguUEksTUFYX01BUkdJTjoxZS05fSksby5MYXRMbmcucHJvdG90eXBlPXtlcXVhbHM6ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuITE7dD1vLmxhdExuZyh0KTt2YXIgZT1NYXRoLm1heChNYXRoLmFicyh0aGlzLmxhdC10LmxhdCksTWF0aC5hYnModGhpcy5sbmctdC5sbmcpKTtyZXR1cm4gZTw9by5MYXRMbmcuTUFYX01BUkdJTn0sdG9TdHJpbmc6ZnVuY3Rpb24odCl7cmV0dXJuIkxhdExuZygiK28uVXRpbC5mb3JtYXROdW0odGhpcy5sYXQsdCkrIiwgIitvLlV0aWwuZm9ybWF0TnVtKHRoaXMubG5nLHQpKyIpIn0sZGlzdGFuY2VUbzpmdW5jdGlvbih0KXt0PW8ubGF0TG5nKHQpO3ZhciBlPTYzNzgxMzcsaT1vLkxhdExuZy5ERUdfVE9fUkFELG49KHQubGF0LXRoaXMubGF0KSppLHM9KHQubG5nLXRoaXMubG5nKSppLGE9dGhpcy5sYXQqaSxyPXQubGF0KmksaD1NYXRoLnNpbihuLzIpLGw9TWF0aC5zaW4ocy8yKSx1PWgqaCtsKmwqTWF0aC5jb3MoYSkqTWF0aC5jb3Mocik7cmV0dXJuIDIqZSpNYXRoLmF0YW4yKE1hdGguc3FydCh1KSxNYXRoLnNxcnQoMS11KSl9LHdyYXA6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLmxuZztyZXR1cm4gdD10fHwtMTgwLGU9ZXx8MTgwLGk9KGkrZSklKGUtdCkrKHQ+aXx8aT09PWU/ZTp0KSxuZXcgby5MYXRMbmcodGhpcy5sYXQsaSl9fSxvLmxhdExuZz1mdW5jdGlvbih0LGUpe3JldHVybiB0IGluc3RhbmNlb2Ygby5MYXRMbmc/dDpvLlV0aWwuaXNBcnJheSh0KT8ibnVtYmVyIj09dHlwZW9mIHRbMF18fCJzdHJpbmciPT10eXBlb2YgdFswXT9uZXcgby5MYXRMbmcodFswXSx0WzFdLHRbMl0pOm51bGw6dD09PWl8fG51bGw9PT10P3Q6Im9iamVjdCI9PXR5cGVvZiB0JiYibGF0ImluIHQ/bmV3IG8uTGF0TG5nKHQubGF0LCJsbmciaW4gdD90LmxuZzp0Lmxvbik6ZT09PWk/bnVsbDpuZXcgby5MYXRMbmcodCxlKX0sby5MYXRMbmdCb3VuZHM9ZnVuY3Rpb24odCxlKXtpZih0KWZvcih2YXIgaT1lP1t0LGVdOnQsbj0wLG89aS5sZW5ndGg7bz5uO24rKyl0aGlzLmV4dGVuZChpW25dKX0sby5MYXRMbmdCb3VuZHMucHJvdG90eXBlPXtleHRlbmQ6ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuIHRoaXM7dmFyIGU9by5sYXRMbmcodCk7cmV0dXJuIHQ9bnVsbCE9PWU/ZTpvLmxhdExuZ0JvdW5kcyh0KSx0IGluc3RhbmNlb2Ygby5MYXRMbmc/dGhpcy5fc291dGhXZXN0fHx0aGlzLl9ub3J0aEVhc3Q/KHRoaXMuX3NvdXRoV2VzdC5sYXQ9TWF0aC5taW4odC5sYXQsdGhpcy5fc291dGhXZXN0LmxhdCksdGhpcy5fc291dGhXZXN0LmxuZz1NYXRoLm1pbih0LmxuZyx0aGlzLl9zb3V0aFdlc3QubG5nKSx0aGlzLl9ub3J0aEVhc3QubGF0PU1hdGgubWF4KHQubGF0LHRoaXMuX25vcnRoRWFzdC5sYXQpLHRoaXMuX25vcnRoRWFzdC5sbmc9TWF0aC5tYXgodC5sbmcsdGhpcy5fbm9ydGhFYXN0LmxuZykpOih0aGlzLl9zb3V0aFdlc3Q9bmV3IG8uTGF0TG5nKHQubGF0LHQubG5nKSx0aGlzLl9ub3J0aEVhc3Q9bmV3IG8uTGF0TG5nKHQubGF0LHQubG5nKSk6dCBpbnN0YW5jZW9mIG8uTGF0TG5nQm91bmRzJiYodGhpcy5leHRlbmQodC5fc291dGhXZXN0KSx0aGlzLmV4dGVuZCh0Ll9ub3J0aEVhc3QpKSx0aGlzfSxwYWQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fc291dGhXZXN0LGk9dGhpcy5fbm9ydGhFYXN0LG49TWF0aC5hYnMoZS5sYXQtaS5sYXQpKnQscz1NYXRoLmFicyhlLmxuZy1pLmxuZykqdDtyZXR1cm4gbmV3IG8uTGF0TG5nQm91bmRzKG5ldyBvLkxhdExuZyhlLmxhdC1uLGUubG5nLXMpLG5ldyBvLkxhdExuZyhpLmxhdCtuLGkubG5nK3MpKX0sZ2V0Q2VudGVyOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBvLkxhdExuZygodGhpcy5fc291dGhXZXN0LmxhdCt0aGlzLl9ub3J0aEVhc3QubGF0KS8yLCh0aGlzLl9zb3V0aFdlc3QubG5nK3RoaXMuX25vcnRoRWFzdC5sbmcpLzIpfSxnZXRTb3V0aFdlc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc291dGhXZXN0fSxnZXROb3J0aEVhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbm9ydGhFYXN0fSxnZXROb3J0aFdlc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG8uTGF0TG5nKHRoaXMuZ2V0Tm9ydGgoKSx0aGlzLmdldFdlc3QoKSl9LGdldFNvdXRoRWFzdDpmdW5jdGlvbigpe3JldHVybiBuZXcgby5MYXRMbmcodGhpcy5nZXRTb3V0aCgpLHRoaXMuZ2V0RWFzdCgpKX0sZ2V0V2VzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zb3V0aFdlc3QubG5nfSxnZXRTb3V0aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zb3V0aFdlc3QubGF0fSxnZXRFYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25vcnRoRWFzdC5sbmd9LGdldE5vcnRoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25vcnRoRWFzdC5sYXR9LGNvbnRhaW5zOmZ1bmN0aW9uKHQpe3Q9Im51bWJlciI9PXR5cGVvZiB0WzBdfHx0IGluc3RhbmNlb2Ygby5MYXRMbmc/by5sYXRMbmcodCk6by5sYXRMbmdCb3VuZHModCk7dmFyIGUsaSxuPXRoaXMuX3NvdXRoV2VzdCxzPXRoaXMuX25vcnRoRWFzdDtyZXR1cm4gdCBpbnN0YW5jZW9mIG8uTGF0TG5nQm91bmRzPyhlPXQuZ2V0U291dGhXZXN0KCksaT10LmdldE5vcnRoRWFzdCgpKTplPWk9dCxlLmxhdD49bi5sYXQmJmkubGF0PD1zLmxhdCYmZS5sbmc+PW4ubG5nJiZpLmxuZzw9cy5sbmd9LGludGVyc2VjdHM6ZnVuY3Rpb24odCl7dD1vLmxhdExuZ0JvdW5kcyh0KTt2YXIgZT10aGlzLl9zb3V0aFdlc3QsaT10aGlzLl9ub3J0aEVhc3Qsbj10LmdldFNvdXRoV2VzdCgpLHM9dC5nZXROb3J0aEVhc3QoKSxhPXMubGF0Pj1lLmxhdCYmbi5sYXQ8PWkubGF0LHI9cy5sbmc+PWUubG5nJiZuLmxuZzw9aS5sbmc7cmV0dXJuIGEmJnJ9LHRvQkJveFN0cmluZzpmdW5jdGlvbigpe3JldHVyblt0aGlzLmdldFdlc3QoKSx0aGlzLmdldFNvdXRoKCksdGhpcy5nZXRFYXN0KCksdGhpcy5nZXROb3J0aCgpXS5qb2luKCIsIil9LGVxdWFsczpmdW5jdGlvbih0KXtyZXR1cm4gdD8odD1vLmxhdExuZ0JvdW5kcyh0KSx0aGlzLl9zb3V0aFdlc3QuZXF1YWxzKHQuZ2V0U291dGhXZXN0KCkpJiZ0aGlzLl9ub3J0aEVhc3QuZXF1YWxzKHQuZ2V0Tm9ydGhFYXN0KCkpKTohMX0saXNWYWxpZDpmdW5jdGlvbigpe3JldHVybiEoIXRoaXMuX3NvdXRoV2VzdHx8IXRoaXMuX25vcnRoRWFzdCl9fSxvLmxhdExuZ0JvdW5kcz1mdW5jdGlvbih0LGUpe3JldHVybiF0fHx0IGluc3RhbmNlb2Ygby5MYXRMbmdCb3VuZHM/dDpuZXcgby5MYXRMbmdCb3VuZHModCxlKX0sby5Qcm9qZWN0aW9uPXt9LG8uUHJvamVjdGlvbi5TcGhlcmljYWxNZXJjYXRvcj17TUFYX0xBVElUVURFOjg1LjA1MTEyODc3OTgscHJvamVjdDpmdW5jdGlvbih0KXt2YXIgZT1vLkxhdExuZy5ERUdfVE9fUkFELGk9dGhpcy5NQVhfTEFUSVRVREUsbj1NYXRoLm1heChNYXRoLm1pbihpLHQubGF0KSwtaSkscz10LmxuZyplLGE9biplO3JldHVybiBhPU1hdGgubG9nKE1hdGgudGFuKE1hdGguUEkvNCthLzIpKSxuZXcgby5Qb2ludChzLGEpfSx1bnByb2plY3Q6ZnVuY3Rpb24odCl7dmFyIGU9by5MYXRMbmcuUkFEX1RPX0RFRyxpPXQueCplLG49KDIqTWF0aC5hdGFuKE1hdGguZXhwKHQueSkpLU1hdGguUEkvMikqZTtyZXR1cm4gbmV3IG8uTGF0TG5nKG4saSl9fSxvLlByb2plY3Rpb24uTG9uTGF0PXtwcm9qZWN0OmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgby5Qb2ludCh0LmxuZyx0LmxhdCl9LHVucHJvamVjdDpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IG8uTGF0TG5nKHQueSx0LngpfX0sby5DUlM9e2xhdExuZ1RvUG9pbnQ6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnByb2plY3Rpb24ucHJvamVjdCh0KSxuPXRoaXMuc2NhbGUoZSk7cmV0dXJuIHRoaXMudHJhbnNmb3JtYXRpb24uX3RyYW5zZm9ybShpLG4pfSxwb2ludFRvTGF0TG5nOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zY2FsZShlKSxuPXRoaXMudHJhbnNmb3JtYXRpb24udW50cmFuc2Zvcm0odCxpKTtyZXR1cm4gdGhpcy5wcm9qZWN0aW9uLnVucHJvamVjdChuKX0scHJvamVjdDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wcm9qZWN0aW9uLnByb2plY3QodCl9LHNjYWxlOmZ1bmN0aW9uKHQpe3JldHVybiAyNTYqTWF0aC5wb3coMix0KX0sZ2V0U2l6ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnNjYWxlKHQpO3JldHVybiBvLnBvaW50KGUsZSl9fSxvLkNSUy5TaW1wbGU9by5leHRlbmQoe30sby5DUlMse3Byb2plY3Rpb246by5Qcm9qZWN0aW9uLkxvbkxhdCx0cmFuc2Zvcm1hdGlvbjpuZXcgby5UcmFuc2Zvcm1hdGlvbigxLDAsLTEsMCksc2NhbGU6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucG93KDIsdCl9fSksby5DUlMuRVBTRzM4NTc9by5leHRlbmQoe30sby5DUlMse2NvZGU6IkVQU0c6Mzg1NyIscHJvamVjdGlvbjpvLlByb2plY3Rpb24uU3BoZXJpY2FsTWVyY2F0b3IsdHJhbnNmb3JtYXRpb246bmV3IG8uVHJhbnNmb3JtYXRpb24oLjUvTWF0aC5QSSwuNSwtLjUvTWF0aC5QSSwuNSkscHJvamVjdDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnByb2plY3Rpb24ucHJvamVjdCh0KSxpPTYzNzgxMzc7cmV0dXJuIGUubXVsdGlwbHlCeShpKX19KSxvLkNSUy5FUFNHOTAwOTEzPW8uZXh0ZW5kKHt9LG8uQ1JTLkVQU0czODU3LHtjb2RlOiJFUFNHOjkwMDkxMyJ9KSxvLkNSUy5FUFNHNDMyNj1vLmV4dGVuZCh7fSxvLkNSUyx7Y29kZToiRVBTRzo0MzI2Iixwcm9qZWN0aW9uOm8uUHJvamVjdGlvbi5Mb25MYXQsdHJhbnNmb3JtYXRpb246bmV3IG8uVHJhbnNmb3JtYXRpb24oMS8zNjAsLjUsLTEvMzYwLC41KX0pLG8uTWFwPW8uQ2xhc3MuZXh0ZW5kKHtpbmNsdWRlczpvLk1peGluLkV2ZW50cyxvcHRpb25zOntjcnM6by5DUlMuRVBTRzM4NTcsZmFkZUFuaW1hdGlvbjpvLkRvbVV0aWwuVFJBTlNJVElPTiYmIW8uQnJvd3Nlci5hbmRyb2lkMjMsdHJhY2tSZXNpemU6ITAsbWFya2VyWm9vbUFuaW1hdGlvbjpvLkRvbVV0aWwuVFJBTlNJVElPTiYmby5Ccm93c2VyLmFueTNkfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSl7ZT1vLnNldE9wdGlvbnModGhpcyxlKSx0aGlzLl9pbml0Q29udGFpbmVyKHQpLHRoaXMuX2luaXRMYXlvdXQoKSx0aGlzLl9vblJlc2l6ZT1vLmJpbmQodGhpcy5fb25SZXNpemUsdGhpcyksdGhpcy5faW5pdEV2ZW50cygpLGUubWF4Qm91bmRzJiZ0aGlzLnNldE1heEJvdW5kcyhlLm1heEJvdW5kcyksZS5jZW50ZXImJmUuem9vbSE9PWkmJnRoaXMuc2V0VmlldyhvLmxhdExuZyhlLmNlbnRlciksZS56b29tLHtyZXNldDohMH0pLHRoaXMuX2hhbmRsZXJzPVtdLHRoaXMuX2xheWVycz17fSx0aGlzLl96b29tQm91bmRMYXllcnM9e30sdGhpcy5fdGlsZUxheWVyc051bT0wLHRoaXMuY2FsbEluaXRIb29rcygpLHRoaXMuX2FkZExheWVycyhlLmxheWVycyl9LHNldFZpZXc6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZT1lPT09aT90aGlzLmdldFpvb20oKTplLHRoaXMuX3Jlc2V0VmlldyhvLmxhdExuZyh0KSx0aGlzLl9saW1pdFpvb20oZSkpLHRoaXN9LHNldFpvb206ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fbG9hZGVkP3RoaXMuc2V0Vmlldyh0aGlzLmdldENlbnRlcigpLHQse3pvb206ZX0pOih0aGlzLl96b29tPXRoaXMuX2xpbWl0Wm9vbSh0KSx0aGlzKX0sem9vbUluOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuc2V0Wm9vbSh0aGlzLl96b29tKyh0fHwxKSxlKX0sem9vbU91dDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnNldFpvb20odGhpcy5fem9vbS0odHx8MSksZSl9LHNldFpvb21Bcm91bmQ6ZnVuY3Rpb24odCxlLGkpe3ZhciBuPXRoaXMuZ2V0Wm9vbVNjYWxlKGUpLHM9dGhpcy5nZXRTaXplKCkuZGl2aWRlQnkoMiksYT10IGluc3RhbmNlb2Ygby5Qb2ludD90OnRoaXMubGF0TG5nVG9Db250YWluZXJQb2ludCh0KSxyPWEuc3VidHJhY3QocykubXVsdGlwbHlCeSgxLTEvbiksaD10aGlzLmNvbnRhaW5lclBvaW50VG9MYXRMbmcocy5hZGQocikpO3JldHVybiB0aGlzLnNldFZpZXcoaCxlLHt6b29tOml9KX0sZml0Qm91bmRzOmZ1bmN0aW9uKHQsZSl7ZT1lfHx7fSx0PXQuZ2V0Qm91bmRzP3QuZ2V0Qm91bmRzKCk6by5sYXRMbmdCb3VuZHModCk7dmFyIGk9by5wb2ludChlLnBhZGRpbmdUb3BMZWZ0fHxlLnBhZGRpbmd8fFswLDBdKSxuPW8ucG9pbnQoZS5wYWRkaW5nQm90dG9tUmlnaHR8fGUucGFkZGluZ3x8WzAsMF0pLHM9dGhpcy5nZXRCb3VuZHNab29tKHQsITEsaS5hZGQobikpLGE9bi5zdWJ0cmFjdChpKS5kaXZpZGVCeSgyKSxyPXRoaXMucHJvamVjdCh0LmdldFNvdXRoV2VzdCgpLHMpLGg9dGhpcy5wcm9qZWN0KHQuZ2V0Tm9ydGhFYXN0KCkscyksbD10aGlzLnVucHJvamVjdChyLmFkZChoKS5kaXZpZGVCeSgyKS5hZGQoYSkscyk7cmV0dXJuIHM9ZSYmZS5tYXhab29tP01hdGgubWluKGUubWF4Wm9vbSxzKTpzLHRoaXMuc2V0VmlldyhsLHMsZSl9LGZpdFdvcmxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmZpdEJvdW5kcyhbWy05MCwtMTgwXSxbOTAsMTgwXV0sdCl9LHBhblRvOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuc2V0Vmlldyh0LHRoaXMuX3pvb20se3BhbjplfSl9LHBhbkJ5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmZpcmUoIm1vdmVzdGFydCIpLHRoaXMuX3Jhd1BhbkJ5KG8ucG9pbnQodCkpLHRoaXMuZmlyZSgibW92ZSIpLHRoaXMuZmlyZSgibW92ZWVuZCIpfSxzZXRNYXhCb3VuZHM6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9by5sYXRMbmdCb3VuZHModCksdGhpcy5vcHRpb25zLm1heEJvdW5kcz10LHQ/KHRoaXMuX2xvYWRlZCYmdGhpcy5fcGFuSW5zaWRlTWF4Qm91bmRzKCksdGhpcy5vbigibW92ZWVuZCIsdGhpcy5fcGFuSW5zaWRlTWF4Qm91bmRzLHRoaXMpKTp0aGlzLm9mZigibW92ZWVuZCIsdGhpcy5fcGFuSW5zaWRlTWF4Qm91bmRzLHRoaXMpfSxwYW5JbnNpZGVCb3VuZHM6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLmdldENlbnRlcigpLG49dGhpcy5fbGltaXRDZW50ZXIoaSx0aGlzLl96b29tLHQpO3JldHVybiBpLmVxdWFscyhuKT90aGlzOnRoaXMucGFuVG8obixlKX0sYWRkTGF5ZXI6ZnVuY3Rpb24odCl7dmFyIGU9by5zdGFtcCh0KTtyZXR1cm4gdGhpcy5fbGF5ZXJzW2VdP3RoaXM6KHRoaXMuX2xheWVyc1tlXT10LCF0Lm9wdGlvbnN8fGlzTmFOKHQub3B0aW9ucy5tYXhab29tKSYmaXNOYU4odC5vcHRpb25zLm1pblpvb20pfHwodGhpcy5fem9vbUJvdW5kTGF5ZXJzW2VdPXQsdGhpcy5fdXBkYXRlWm9vbUxldmVscygpKSx0aGlzLm9wdGlvbnMuem9vbUFuaW1hdGlvbiYmby5UaWxlTGF5ZXImJnQgaW5zdGFuY2VvZiBvLlRpbGVMYXllciYmKHRoaXMuX3RpbGVMYXllcnNOdW0rKyx0aGlzLl90aWxlTGF5ZXJzVG9Mb2FkKyssdC5vbigibG9hZCIsdGhpcy5fb25UaWxlTGF5ZXJMb2FkLHRoaXMpKSx0aGlzLl9sb2FkZWQmJnRoaXMuX2xheWVyQWRkKHQpLHRoaXMpfSxyZW1vdmVMYXllcjpmdW5jdGlvbih0KXt2YXIgZT1vLnN0YW1wKHQpO3JldHVybiB0aGlzLl9sYXllcnNbZV0/KHRoaXMuX2xvYWRlZCYmdC5vblJlbW92ZSh0aGlzKSxkZWxldGUgdGhpcy5fbGF5ZXJzW2VdLHRoaXMuX2xvYWRlZCYmdGhpcy5maXJlKCJsYXllcnJlbW92ZSIse2xheWVyOnR9KSx0aGlzLl96b29tQm91bmRMYXllcnNbZV0mJihkZWxldGUgdGhpcy5fem9vbUJvdW5kTGF5ZXJzW2VdLHRoaXMuX3VwZGF0ZVpvb21MZXZlbHMoKSksdGhpcy5vcHRpb25zLnpvb21BbmltYXRpb24mJm8uVGlsZUxheWVyJiZ0IGluc3RhbmNlb2Ygby5UaWxlTGF5ZXImJih0aGlzLl90aWxlTGF5ZXJzTnVtLS0sdGhpcy5fdGlsZUxheWVyc1RvTG9hZC0tLHQub2ZmKCJsb2FkIix0aGlzLl9vblRpbGVMYXllckxvYWQsdGhpcykpLHRoaXMpOnRoaXN9LGhhc0xheWVyOmZ1bmN0aW9uKHQpe3JldHVybiB0P28uc3RhbXAodClpbiB0aGlzLl9sYXllcnM6ITF9LGVhY2hMYXllcjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaSBpbiB0aGlzLl9sYXllcnMpdC5jYWxsKGUsdGhpcy5fbGF5ZXJzW2ldKTtyZXR1cm4gdGhpc30saW52YWxpZGF0ZVNpemU6ZnVuY3Rpb24odCl7aWYoIXRoaXMuX2xvYWRlZClyZXR1cm4gdGhpczt0PW8uZXh0ZW5kKHthbmltYXRlOiExLHBhbjohMH0sdD09PSEwP3thbmltYXRlOiEwfTp0KTt2YXIgZT10aGlzLmdldFNpemUoKTt0aGlzLl9zaXplQ2hhbmdlZD0hMCx0aGlzLl9pbml0aWFsQ2VudGVyPW51bGw7dmFyIGk9dGhpcy5nZXRTaXplKCksbj1lLmRpdmlkZUJ5KDIpLnJvdW5kKCkscz1pLmRpdmlkZUJ5KDIpLnJvdW5kKCksYT1uLnN1YnRyYWN0KHMpO3JldHVybiBhLnh8fGEueT8odC5hbmltYXRlJiZ0LnBhbj90aGlzLnBhbkJ5KGEpOih0LnBhbiYmdGhpcy5fcmF3UGFuQnkoYSksdGhpcy5maXJlKCJtb3ZlIiksdC5kZWJvdW5jZU1vdmVlbmQ/KGNsZWFyVGltZW91dCh0aGlzLl9zaXplVGltZXIpLHRoaXMuX3NpemVUaW1lcj1zZXRUaW1lb3V0KG8uYmluZCh0aGlzLmZpcmUsdGhpcywibW92ZWVuZCIpLDIwMCkpOnRoaXMuZmlyZSgibW92ZWVuZCIpKSx0aGlzLmZpcmUoInJlc2l6ZSIse29sZFNpemU6ZSxuZXdTaXplOml9KSk6dGhpc30sYWRkSGFuZGxlcjpmdW5jdGlvbih0LGUpe2lmKCFlKXJldHVybiB0aGlzO3ZhciBpPXRoaXNbdF09bmV3IGUodGhpcyk7cmV0dXJuIHRoaXMuX2hhbmRsZXJzLnB1c2goaSksdGhpcy5vcHRpb25zW3RdJiZpLmVuYWJsZSgpLHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe3RoaXMuX2xvYWRlZCYmdGhpcy5maXJlKCJ1bmxvYWQiKSx0aGlzLl9pbml0RXZlbnRzKCJvZmYiKTt0cnl7ZGVsZXRlIHRoaXMuX2NvbnRhaW5lci5fbGVhZmxldH1jYXRjaCh0KXt0aGlzLl9jb250YWluZXIuX2xlYWZsZXQ9aX1yZXR1cm4gdGhpcy5fY2xlYXJQYW5lcygpLHRoaXMuX2NsZWFyQ29udHJvbFBvcyYmdGhpcy5fY2xlYXJDb250cm9sUG9zKCksdGhpcy5fY2xlYXJIYW5kbGVycygpLHRoaXN9LGdldENlbnRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jaGVja0lmTG9hZGVkKCksdGhpcy5faW5pdGlhbENlbnRlciYmIXRoaXMuX21vdmVkKCk/dGhpcy5faW5pdGlhbENlbnRlcjp0aGlzLmxheWVyUG9pbnRUb0xhdExuZyh0aGlzLl9nZXRDZW50ZXJMYXllclBvaW50KCkpfSxnZXRab29tOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3pvb219LGdldEJvdW5kczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0UGl4ZWxCb3VuZHMoKSxlPXRoaXMudW5wcm9qZWN0KHQuZ2V0Qm90dG9tTGVmdCgpKSxpPXRoaXMudW5wcm9qZWN0KHQuZ2V0VG9wUmlnaHQoKSk7cmV0dXJuIG5ldyBvLkxhdExuZ0JvdW5kcyhlLGkpfSxnZXRNaW5ab29tOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5taW5ab29tPT09aT90aGlzLl9sYXllcnNNaW5ab29tPT09aT8wOnRoaXMuX2xheWVyc01pblpvb206dGhpcy5vcHRpb25zLm1pblpvb219LGdldE1heFpvb206ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLm1heFpvb209PT1pP3RoaXMuX2xheWVyc01heFpvb209PT1pPzEvMDp0aGlzLl9sYXllcnNNYXhab29tOnRoaXMub3B0aW9ucy5tYXhab29tfSxnZXRCb3VuZHNab29tOmZ1bmN0aW9uKHQsZSxpKXt0PW8ubGF0TG5nQm91bmRzKHQpO3ZhciBuLHM9dGhpcy5nZXRNaW5ab29tKCktKGU/MTowKSxhPXRoaXMuZ2V0TWF4Wm9vbSgpLHI9dGhpcy5nZXRTaXplKCksaD10LmdldE5vcnRoV2VzdCgpLGw9dC5nZXRTb3V0aEVhc3QoKSx1PSEwO2k9by5wb2ludChpfHxbMCwwXSk7ZG8gcysrLG49dGhpcy5wcm9qZWN0KGwscykuc3VidHJhY3QodGhpcy5wcm9qZWN0KGgscykpLmFkZChpKSx1PWU/bi54PHIueHx8bi55PHIueTpyLmNvbnRhaW5zKG4pO3doaWxlKHUmJmE+PXMpO3JldHVybiB1JiZlP251bGw6ZT9zOnMtMX0sZ2V0U2l6ZTpmdW5jdGlvbigpe3JldHVybighdGhpcy5fc2l6ZXx8dGhpcy5fc2l6ZUNoYW5nZWQpJiYodGhpcy5fc2l6ZT1uZXcgby5Qb2ludCh0aGlzLl9jb250YWluZXIuY2xpZW50V2lkdGgsdGhpcy5fY29udGFpbmVyLmNsaWVudEhlaWdodCksdGhpcy5fc2l6ZUNoYW5nZWQ9ITEpLHRoaXMuX3NpemUuY2xvbmUoKX0sZ2V0UGl4ZWxCb3VuZHM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9nZXRUb3BMZWZ0UG9pbnQoKTtyZXR1cm4gbmV3IG8uQm91bmRzKHQsdC5hZGQodGhpcy5nZXRTaXplKCkpKX0sZ2V0UGl4ZWxPcmlnaW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2hlY2tJZkxvYWRlZCgpLHRoaXMuX2luaXRpYWxUb3BMZWZ0UG9pbnR9LGdldFBhbmVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhbmVzfSxnZXRDb250YWluZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29udGFpbmVyfSxnZXRab29tU2NhbGU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5vcHRpb25zLmNycztyZXR1cm4gZS5zY2FsZSh0KS9lLnNjYWxlKHRoaXMuX3pvb20pfSxnZXRTY2FsZVpvb206ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3pvb20rTWF0aC5sb2codCkvTWF0aC5MTjJ9LHByb2plY3Q6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZT1lPT09aT90aGlzLl96b29tOmUsdGhpcy5vcHRpb25zLmNycy5sYXRMbmdUb1BvaW50KG8ubGF0TG5nKHQpLGUpfSx1bnByb2plY3Q6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZT1lPT09aT90aGlzLl96b29tOmUsdGhpcy5vcHRpb25zLmNycy5wb2ludFRvTGF0TG5nKG8ucG9pbnQodCksZSl9LGxheWVyUG9pbnRUb0xhdExuZzpmdW5jdGlvbih0KXt2YXIgZT1vLnBvaW50KHQpLmFkZCh0aGlzLmdldFBpeGVsT3JpZ2luKCkpO3JldHVybiB0aGlzLnVucHJvamVjdChlKX0sbGF0TG5nVG9MYXllclBvaW50OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucHJvamVjdChvLmxhdExuZyh0KSkuX3JvdW5kKCk7cmV0dXJuIGUuX3N1YnRyYWN0KHRoaXMuZ2V0UGl4ZWxPcmlnaW4oKSl9LGNvbnRhaW5lclBvaW50VG9MYXllclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiBvLnBvaW50KHQpLnN1YnRyYWN0KHRoaXMuX2dldE1hcFBhbmVQb3MoKSl9LGxheWVyUG9pbnRUb0NvbnRhaW5lclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiBvLnBvaW50KHQpLmFkZCh0aGlzLl9nZXRNYXBQYW5lUG9zKCkpfSxjb250YWluZXJQb2ludFRvTGF0TG5nOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY29udGFpbmVyUG9pbnRUb0xheWVyUG9pbnQoby5wb2ludCh0KSk7cmV0dXJuIHRoaXMubGF5ZXJQb2ludFRvTGF0TG5nKGUpfSxsYXRMbmdUb0NvbnRhaW5lclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmxheWVyUG9pbnRUb0NvbnRhaW5lclBvaW50KHRoaXMubGF0TG5nVG9MYXllclBvaW50KG8ubGF0TG5nKHQpKSl9LG1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiBvLkRvbUV2ZW50LmdldE1vdXNlUG9zaXRpb24odCx0aGlzLl9jb250YWluZXIpfSxtb3VzZUV2ZW50VG9MYXllclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNvbnRhaW5lclBvaW50VG9MYXllclBvaW50KHRoaXMubW91c2VFdmVudFRvQ29udGFpbmVyUG9pbnQodCkpfSxtb3VzZUV2ZW50VG9MYXRMbmc6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGF5ZXJQb2ludFRvTGF0TG5nKHRoaXMubW91c2VFdmVudFRvTGF5ZXJQb2ludCh0KSl9LF9pbml0Q29udGFpbmVyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2NvbnRhaW5lcj1vLkRvbVV0aWwuZ2V0KHQpO2lmKCFlKXRocm93IG5ldyBFcnJvcigiTWFwIGNvbnRhaW5lciBub3QgZm91bmQuIik7aWYoZS5fbGVhZmxldCl0aHJvdyBuZXcgRXJyb3IoIk1hcCBjb250YWluZXIgaXMgYWxyZWFkeSBpbml0aWFsaXplZC4iKTtlLl9sZWFmbGV0PSEwfSxfaW5pdExheW91dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2NvbnRhaW5lcjtvLkRvbVV0aWwuYWRkQ2xhc3ModCwibGVhZmxldC1jb250YWluZXIiKyhvLkJyb3dzZXIudG91Y2g/IiBsZWFmbGV0LXRvdWNoIjoiIikrKG8uQnJvd3Nlci5yZXRpbmE/IiBsZWFmbGV0LXJldGluYSI6IiIpKyhvLkJyb3dzZXIuaWVsdDk/IiBsZWFmbGV0LW9sZGllIjoiIikrKHRoaXMub3B0aW9ucy5mYWRlQW5pbWF0aW9uPyIgbGVhZmxldC1mYWRlLWFuaW0iOiIiKSk7dmFyIGU9by5Eb21VdGlsLmdldFN0eWxlKHQsInBvc2l0aW9uIik7ImFic29sdXRlIiE9PWUmJiJyZWxhdGl2ZSIhPT1lJiYiZml4ZWQiIT09ZSYmKHQuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIiksdGhpcy5faW5pdFBhbmVzKCksdGhpcy5faW5pdENvbnRyb2xQb3MmJnRoaXMuX2luaXRDb250cm9sUG9zKCl9LF9pbml0UGFuZXM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9wYW5lcz17fTt0aGlzLl9tYXBQYW5lPXQubWFwUGFuZT10aGlzLl9jcmVhdGVQYW5lKCJsZWFmbGV0LW1hcC1wYW5lIix0aGlzLl9jb250YWluZXIpLHRoaXMuX3RpbGVQYW5lPXQudGlsZVBhbmU9dGhpcy5fY3JlYXRlUGFuZSgibGVhZmxldC10aWxlLXBhbmUiLHRoaXMuX21hcFBhbmUpLHQub2JqZWN0c1BhbmU9dGhpcy5fY3JlYXRlUGFuZSgibGVhZmxldC1vYmplY3RzLXBhbmUiLHRoaXMuX21hcFBhbmUpLHQuc2hhZG93UGFuZT10aGlzLl9jcmVhdGVQYW5lKCJsZWFmbGV0LXNoYWRvdy1wYW5lIiksdC5vdmVybGF5UGFuZT10aGlzLl9jcmVhdGVQYW5lKCJsZWFmbGV0LW92ZXJsYXktcGFuZSIpLHQubWFya2VyUGFuZT10aGlzLl9jcmVhdGVQYW5lKCJsZWFmbGV0LW1hcmtlci1wYW5lIiksdC5wb3B1cFBhbmU9dGhpcy5fY3JlYXRlUGFuZSgibGVhZmxldC1wb3B1cC1wYW5lIik7dmFyIGU9IiBsZWFmbGV0LXpvb20taGlkZSI7dGhpcy5vcHRpb25zLm1hcmtlclpvb21BbmltYXRpb258fChvLkRvbVV0aWwuYWRkQ2xhc3ModC5tYXJrZXJQYW5lLGUpLG8uRG9tVXRpbC5hZGRDbGFzcyh0LnNoYWRvd1BhbmUsZSksby5Eb21VdGlsLmFkZENsYXNzKHQucG9wdXBQYW5lLGUpKX0sX2NyZWF0ZVBhbmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gby5Eb21VdGlsLmNyZWF0ZSgiZGl2Iix0LGV8fHRoaXMuX3BhbmVzLm9iamVjdHNQYW5lKX0sX2NsZWFyUGFuZXM6ZnVuY3Rpb24oKXt0aGlzLl9jb250YWluZXIucmVtb3ZlQ2hpbGQodGhpcy5fbWFwUGFuZSl9LF9hZGRMYXllcnM6ZnVuY3Rpb24odCl7dD10P28uVXRpbC5pc0FycmF5KHQpP3Q6W3RdOltdO2Zvcih2YXIgZT0wLGk9dC5sZW5ndGg7aT5lO2UrKyl0aGlzLmFkZExheWVyKHRbZV0pfSxfcmVzZXRWaWV3OmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBzPXRoaXMuX3pvb20hPT1lO258fCh0aGlzLmZpcmUoIm1vdmVzdGFydCIpLHMmJnRoaXMuZmlyZSgiem9vbXN0YXJ0IikpLHRoaXMuX3pvb209ZSx0aGlzLl9pbml0aWFsQ2VudGVyPXQsdGhpcy5faW5pdGlhbFRvcExlZnRQb2ludD10aGlzLl9nZXROZXdUb3BMZWZ0UG9pbnQodCksaT90aGlzLl9pbml0aWFsVG9wTGVmdFBvaW50Ll9hZGQodGhpcy5fZ2V0TWFwUGFuZVBvcygpKTpvLkRvbVV0aWwuc2V0UG9zaXRpb24odGhpcy5fbWFwUGFuZSxuZXcgby5Qb2ludCgwLDApKSx0aGlzLl90aWxlTGF5ZXJzVG9Mb2FkPXRoaXMuX3RpbGVMYXllcnNOdW07dmFyIGE9IXRoaXMuX2xvYWRlZDt0aGlzLl9sb2FkZWQ9ITAsdGhpcy5maXJlKCJ2aWV3cmVzZXQiLHtoYXJkOiFpfSksYSYmKHRoaXMuZmlyZSgibG9hZCIpLHRoaXMuZWFjaExheWVyKHRoaXMuX2xheWVyQWRkLHRoaXMpKSx0aGlzLmZpcmUoIm1vdmUiKSwoc3x8bikmJnRoaXMuZmlyZSgiem9vbWVuZCIpLHRoaXMuZmlyZSgibW92ZWVuZCIse2hhcmQ6IWl9KX0sX3Jhd1BhbkJ5OmZ1bmN0aW9uKHQpe28uRG9tVXRpbC5zZXRQb3NpdGlvbih0aGlzLl9tYXBQYW5lLHRoaXMuX2dldE1hcFBhbmVQb3MoKS5zdWJ0cmFjdCh0KSl9LF9nZXRab29tU3BhbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldE1heFpvb20oKS10aGlzLmdldE1pblpvb20oKX0sX3VwZGF0ZVpvb21MZXZlbHM6ZnVuY3Rpb24oKXt2YXIgdCxlPTEvMCxuPS0xLzAsbz10aGlzLl9nZXRab29tU3BhbigpO2Zvcih0IGluIHRoaXMuX3pvb21Cb3VuZExheWVycyl7dmFyIHM9dGhpcy5fem9vbUJvdW5kTGF5ZXJzW3RdO2lzTmFOKHMub3B0aW9ucy5taW5ab29tKXx8KGU9TWF0aC5taW4oZSxzLm9wdGlvbnMubWluWm9vbSkpLGlzTmFOKHMub3B0aW9ucy5tYXhab29tKXx8KG49TWF0aC5tYXgobixzLm9wdGlvbnMubWF4Wm9vbSkpfXQ9PT1pP3RoaXMuX2xheWVyc01heFpvb209dGhpcy5fbGF5ZXJzTWluWm9vbT1pOih0aGlzLl9sYXllcnNNYXhab29tPW4sdGhpcy5fbGF5ZXJzTWluWm9vbT1lKSxvIT09dGhpcy5fZ2V0Wm9vbVNwYW4oKSYmdGhpcy5maXJlKCJ6b29tbGV2ZWxzY2hhbmdlIil9LF9wYW5JbnNpZGVNYXhCb3VuZHM6ZnVuY3Rpb24oKXt0aGlzLnBhbkluc2lkZUJvdW5kcyh0aGlzLm9wdGlvbnMubWF4Qm91bmRzKX0sX2NoZWNrSWZMb2FkZWQ6ZnVuY3Rpb24oKXtpZighdGhpcy5fbG9hZGVkKXRocm93IG5ldyBFcnJvcigiU2V0IG1hcCBjZW50ZXIgYW5kIHpvb20gZmlyc3QuIil9LF9pbml0RXZlbnRzOmZ1bmN0aW9uKGUpe2lmKG8uRG9tRXZlbnQpe2U9ZXx8Im9uIixvLkRvbUV2ZW50W2VdKHRoaXMuX2NvbnRhaW5lciwiY2xpY2siLHRoaXMuX29uTW91c2VDbGljayx0aGlzKTt2YXIgaSxuLHM9WyJkYmxjbGljayIsIm1vdXNlZG93biIsIm1vdXNldXAiLCJtb3VzZWVudGVyIiwibW91c2VsZWF2ZSIsIm1vdXNlbW92ZSIsImNvbnRleHRtZW51Il07Zm9yKGk9MCxuPXMubGVuZ3RoO24+aTtpKyspby5Eb21FdmVudFtlXSh0aGlzLl9jb250YWluZXIsc1tpXSx0aGlzLl9maXJlTW91c2VFdmVudCx0aGlzKTt0aGlzLm9wdGlvbnMudHJhY2tSZXNpemUmJm8uRG9tRXZlbnRbZV0odCwicmVzaXplIix0aGlzLl9vblJlc2l6ZSx0aGlzKX19LF9vblJlc2l6ZTpmdW5jdGlvbigpe28uVXRpbC5jYW5jZWxBbmltRnJhbWUodGhpcy5fcmVzaXplUmVxdWVzdCksdGhpcy5fcmVzaXplUmVxdWVzdD1vLlV0aWwucmVxdWVzdEFuaW1GcmFtZShmdW5jdGlvbigpe3RoaXMuaW52YWxpZGF0ZVNpemUoe2RlYm91bmNlTW92ZWVuZDohMH0pfSx0aGlzLCExLHRoaXMuX2NvbnRhaW5lcil9LF9vbk1vdXNlQ2xpY2s6ZnVuY3Rpb24odCl7IXRoaXMuX2xvYWRlZHx8IXQuX3NpbXVsYXRlZCYmKHRoaXMuZHJhZ2dpbmcmJnRoaXMuZHJhZ2dpbmcubW92ZWQoKXx8dGhpcy5ib3hab29tJiZ0aGlzLmJveFpvb20ubW92ZWQoKSl8fG8uRG9tRXZlbnQuX3NraXBwZWQodCl8fCh0aGlzLmZpcmUoInByZWNsaWNrIiksdGhpcy5fZmlyZU1vdXNlRXZlbnQodCkpfSxfZmlyZU1vdXNlRXZlbnQ6ZnVuY3Rpb24odCl7aWYodGhpcy5fbG9hZGVkJiYhby5Eb21FdmVudC5fc2tpcHBlZCh0KSl7dmFyIGU9dC50eXBlO2lmKGU9Im1vdXNlZW50ZXIiPT09ZT8ibW91c2VvdmVyIjoibW91c2VsZWF2ZSI9PT1lPyJtb3VzZW91dCI6ZSx0aGlzLmhhc0V2ZW50TGlzdGVuZXJzKGUpKXsiY29udGV4dG1lbnUiPT09ZSYmby5Eb21FdmVudC5wcmV2ZW50RGVmYXVsdCh0KTt2YXIgaT10aGlzLm1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50KHQpLG49dGhpcy5jb250YWluZXJQb2ludFRvTGF5ZXJQb2ludChpKSxzPXRoaXMubGF5ZXJQb2ludFRvTGF0TG5nKG4pO3RoaXMuZmlyZShlLHtsYXRsbmc6cyxsYXllclBvaW50Om4sY29udGFpbmVyUG9pbnQ6aSxvcmlnaW5hbEV2ZW50OnR9KX19fSxfb25UaWxlTGF5ZXJMb2FkOmZ1bmN0aW9uKCl7dGhpcy5fdGlsZUxheWVyc1RvTG9hZC0tLHRoaXMuX3RpbGVMYXllcnNOdW0mJiF0aGlzLl90aWxlTGF5ZXJzVG9Mb2FkJiZ0aGlzLmZpcmUoInRpbGVsYXllcnNsb2FkIil9LF9jbGVhckhhbmRsZXJzOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAsZT10aGlzLl9oYW5kbGVycy5sZW5ndGg7ZT50O3QrKyl0aGlzLl9oYW5kbGVyc1t0XS5kaXNhYmxlKCl9LHdoZW5SZWFkeTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9sb2FkZWQ/dC5jYWxsKGV8fHRoaXMsdGhpcyk6dGhpcy5vbigibG9hZCIsdCxlKSx0aGlzfSxfbGF5ZXJBZGQ6ZnVuY3Rpb24odCl7dC5vbkFkZCh0aGlzKSx0aGlzLmZpcmUoImxheWVyYWRkIix7bGF5ZXI6dH0pfSxfZ2V0TWFwUGFuZVBvczpmdW5jdGlvbigpe3JldHVybiBvLkRvbVV0aWwuZ2V0UG9zaXRpb24odGhpcy5fbWFwUGFuZSl9LF9tb3ZlZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2dldE1hcFBhbmVQb3MoKTtyZXR1cm4gdCYmIXQuZXF1YWxzKFswLDBdKX0sX2dldFRvcExlZnRQb2ludDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFBpeGVsT3JpZ2luKCkuc3VidHJhY3QodGhpcy5fZ2V0TWFwUGFuZVBvcygpKX0sX2dldE5ld1RvcExlZnRQb2ludDpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuZ2V0U2l6ZSgpLl9kaXZpZGVCeSgyKTtyZXR1cm4gdGhpcy5wcm9qZWN0KHQsZSkuX3N1YnRyYWN0KGkpLl9yb3VuZCgpfSxfbGF0TG5nVG9OZXdMYXllclBvaW50OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbj10aGlzLl9nZXROZXdUb3BMZWZ0UG9pbnQoaSxlKS5hZGQodGhpcy5fZ2V0TWFwUGFuZVBvcygpKTtyZXR1cm4gdGhpcy5wcm9qZWN0KHQsZSkuX3N1YnRyYWN0KG4pfSxfZ2V0Q2VudGVyTGF5ZXJQb2ludDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRhaW5lclBvaW50VG9MYXllclBvaW50KHRoaXMuZ2V0U2l6ZSgpLl9kaXZpZGVCeSgyKSl9LF9nZXRDZW50ZXJPZmZzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGF0TG5nVG9MYXllclBvaW50KHQpLnN1YnRyYWN0KHRoaXMuX2dldENlbnRlckxheWVyUG9pbnQoKSl9LF9saW1pdENlbnRlcjpmdW5jdGlvbih0LGUsaSl7aWYoIWkpcmV0dXJuIHQ7dmFyIG49dGhpcy5wcm9qZWN0KHQsZSkscz10aGlzLmdldFNpemUoKS5kaXZpZGVCeSgyKSxhPW5ldyBvLkJvdW5kcyhuLnN1YnRyYWN0KHMpLG4uYWRkKHMpKSxyPXRoaXMuX2dldEJvdW5kc09mZnNldChhLGksZSk7cmV0dXJuIHRoaXMudW5wcm9qZWN0KG4uYWRkKHIpLGUpfSxfbGltaXRPZmZzZXQ6ZnVuY3Rpb24odCxlKXtpZighZSlyZXR1cm4gdDt2YXIgaT10aGlzLmdldFBpeGVsQm91bmRzKCksbj1uZXcgby5Cb3VuZHMoaS5taW4uYWRkKHQpLGkubWF4LmFkZCh0KSk7cmV0dXJuIHQuYWRkKHRoaXMuX2dldEJvdW5kc09mZnNldChuLGUpKX0sX2dldEJvdW5kc09mZnNldDpmdW5jdGlvbih0LGUsaSl7dmFyIG49dGhpcy5wcm9qZWN0KGUuZ2V0Tm9ydGhXZXN0KCksaSkuc3VidHJhY3QodC5taW4pLHM9dGhpcy5wcm9qZWN0KGUuZ2V0U291dGhFYXN0KCksaSkuc3VidHJhY3QodC5tYXgpLGE9dGhpcy5fcmVib3VuZChuLngsLXMueCkscj10aGlzLl9yZWJvdW5kKG4ueSwtcy55KTtyZXR1cm4gbmV3IG8uUG9pbnQoYSxyKX0sX3JlYm91bmQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlPjA/TWF0aC5yb3VuZCh0LWUpLzI6TWF0aC5tYXgoMCxNYXRoLmNlaWwodCkpLU1hdGgubWF4KDAsTWF0aC5mbG9vcihlKSl9LF9saW1pdFpvb206ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRNaW5ab29tKCksaT10aGlzLmdldE1heFpvb20oKTtyZXR1cm4gTWF0aC5tYXgoZSxNYXRoLm1pbihpLHQpKX19KSxvLm1hcD1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgby5NYXAodCxlKX0sby5Qcm9qZWN0aW9uLk1lcmNhdG9yPXtNQVhfTEFUSVRVREU6ODUuMDg0MDU5MTU1NixSX01JTk9SOjYzNTY3NTIuMzE0MjQ1MTc5LFJfTUFKT1I6NjM3ODEzNyxwcm9qZWN0OmZ1bmN0aW9uKHQpe3ZhciBlPW8uTGF0TG5nLkRFR19UT19SQUQsaT10aGlzLk1BWF9MQVRJVFVERSxuPU1hdGgubWF4KE1hdGgubWluKGksdC5sYXQpLC1pKSxzPXRoaXMuUl9NQUpPUixhPXRoaXMuUl9NSU5PUixyPXQubG5nKmUqcyxoPW4qZSxsPWEvcyx1PU1hdGguc3FydCgxLWwqbCksYz11Kk1hdGguc2luKGgpO2M9TWF0aC5wb3coKDEtYykvKDErYyksLjUqdSk7dmFyIGQ9TWF0aC50YW4oLjUqKC41Kk1hdGguUEktaCkpL2M7cmV0dXJuIGg9LXMqTWF0aC5sb2coZCksbmV3IG8uUG9pbnQocixoKX0sdW5wcm9qZWN0OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPW8uTGF0TG5nLlJBRF9UT19ERUcsbj10aGlzLlJfTUFKT1Iscz10aGlzLlJfTUlOT1IsYT10LngqaS9uLHI9cy9uLGg9TWF0aC5zcXJ0KDEtcipyKSxsPU1hdGguZXhwKC10LnkvbiksdT1NYXRoLlBJLzItMipNYXRoLmF0YW4obCksYz0xNSxkPTFlLTcscD1jLF89LjE7TWF0aC5hYnMoXyk+ZCYmLS1wPjA7KWU9aCpNYXRoLnNpbih1KSxfPU1hdGguUEkvMi0yKk1hdGguYXRhbihsKk1hdGgucG93KCgxLWUpLygxK2UpLC41KmgpKS11LHUrPV87CnJldHVybiBuZXcgby5MYXRMbmcodSppLGEpfX0sby5DUlMuRVBTRzMzOTU9by5leHRlbmQoe30sby5DUlMse2NvZGU6IkVQU0c6MzM5NSIscHJvamVjdGlvbjpvLlByb2plY3Rpb24uTWVyY2F0b3IsdHJhbnNmb3JtYXRpb246ZnVuY3Rpb24oKXt2YXIgdD1vLlByb2plY3Rpb24uTWVyY2F0b3IsZT10LlJfTUFKT1IsaT0uNS8oTWF0aC5QSSplKTtyZXR1cm4gbmV3IG8uVHJhbnNmb3JtYXRpb24oaSwuNSwtaSwuNSl9KCl9KSxvLlRpbGVMYXllcj1vLkNsYXNzLmV4dGVuZCh7aW5jbHVkZXM6by5NaXhpbi5FdmVudHMsb3B0aW9uczp7bWluWm9vbTowLG1heFpvb206MTgsdGlsZVNpemU6MjU2LHN1YmRvbWFpbnM6ImFiYyIsZXJyb3JUaWxlVXJsOiIiLGF0dHJpYnV0aW9uOiIiLHpvb21PZmZzZXQ6MCxvcGFjaXR5OjEsdW5sb2FkSW52aXNpYmxlVGlsZXM6by5Ccm93c2VyLm1vYmlsZSx1cGRhdGVXaGVuSWRsZTpvLkJyb3dzZXIubW9iaWxlfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSl7ZT1vLnNldE9wdGlvbnModGhpcyxlKSxlLmRldGVjdFJldGluYSYmby5Ccm93c2VyLnJldGluYSYmZS5tYXhab29tPjAmJihlLnRpbGVTaXplPU1hdGguZmxvb3IoZS50aWxlU2l6ZS8yKSxlLnpvb21PZmZzZXQrKyxlLm1pblpvb20+MCYmZS5taW5ab29tLS0sdGhpcy5vcHRpb25zLm1heFpvb20tLSksZS5ib3VuZHMmJihlLmJvdW5kcz1vLmxhdExuZ0JvdW5kcyhlLmJvdW5kcykpLHRoaXMuX3VybD10O3ZhciBpPXRoaXMub3B0aW9ucy5zdWJkb21haW5zOyJzdHJpbmciPT10eXBlb2YgaSYmKHRoaXMub3B0aW9ucy5zdWJkb21haW5zPWkuc3BsaXQoIiIpKX0sb25BZGQ6ZnVuY3Rpb24odCl7dGhpcy5fbWFwPXQsdGhpcy5fYW5pbWF0ZWQ9dC5fem9vbUFuaW1hdGVkLHRoaXMuX2luaXRDb250YWluZXIoKSx0Lm9uKHt2aWV3cmVzZXQ6dGhpcy5fcmVzZXQsbW92ZWVuZDp0aGlzLl91cGRhdGV9LHRoaXMpLHRoaXMuX2FuaW1hdGVkJiZ0Lm9uKHt6b29tYW5pbTp0aGlzLl9hbmltYXRlWm9vbSx6b29tZW5kOnRoaXMuX2VuZFpvb21BbmltfSx0aGlzKSx0aGlzLm9wdGlvbnMudXBkYXRlV2hlbklkbGV8fCh0aGlzLl9saW1pdGVkVXBkYXRlPW8uVXRpbC5saW1pdEV4ZWNCeUludGVydmFsKHRoaXMuX3VwZGF0ZSwxNTAsdGhpcyksdC5vbigibW92ZSIsdGhpcy5fbGltaXRlZFVwZGF0ZSx0aGlzKSksdGhpcy5fcmVzZXQoKSx0aGlzLl91cGRhdGUoKX0sYWRkVG86ZnVuY3Rpb24odCl7cmV0dXJuIHQuYWRkTGF5ZXIodGhpcyksdGhpc30sb25SZW1vdmU6ZnVuY3Rpb24odCl7dGhpcy5fY29udGFpbmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5fY29udGFpbmVyKSx0Lm9mZih7dmlld3Jlc2V0OnRoaXMuX3Jlc2V0LG1vdmVlbmQ6dGhpcy5fdXBkYXRlfSx0aGlzKSx0aGlzLl9hbmltYXRlZCYmdC5vZmYoe3pvb21hbmltOnRoaXMuX2FuaW1hdGVab29tLHpvb21lbmQ6dGhpcy5fZW5kWm9vbUFuaW19LHRoaXMpLHRoaXMub3B0aW9ucy51cGRhdGVXaGVuSWRsZXx8dC5vZmYoIm1vdmUiLHRoaXMuX2xpbWl0ZWRVcGRhdGUsdGhpcyksdGhpcy5fY29udGFpbmVyPW51bGwsdGhpcy5fbWFwPW51bGx9LGJyaW5nVG9Gcm9udDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcC5fcGFuZXMudGlsZVBhbmU7cmV0dXJuIHRoaXMuX2NvbnRhaW5lciYmKHQuYXBwZW5kQ2hpbGQodGhpcy5fY29udGFpbmVyKSx0aGlzLl9zZXRBdXRvWkluZGV4KHQsTWF0aC5tYXgpKSx0aGlzfSxicmluZ1RvQmFjazpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcC5fcGFuZXMudGlsZVBhbmU7cmV0dXJuIHRoaXMuX2NvbnRhaW5lciYmKHQuaW5zZXJ0QmVmb3JlKHRoaXMuX2NvbnRhaW5lcix0LmZpcnN0Q2hpbGQpLHRoaXMuX3NldEF1dG9aSW5kZXgodCxNYXRoLm1pbikpLHRoaXN9LGdldEF0dHJpYnV0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGlvbn0sZ2V0Q29udGFpbmVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbnRhaW5lcn0sc2V0T3BhY2l0eTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRpb25zLm9wYWNpdHk9dCx0aGlzLl9tYXAmJnRoaXMuX3VwZGF0ZU9wYWNpdHkoKSx0aGlzfSxzZXRaSW5kZXg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3B0aW9ucy56SW5kZXg9dCx0aGlzLl91cGRhdGVaSW5kZXgoKSx0aGlzfSxzZXRVcmw6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fdXJsPXQsZXx8dGhpcy5yZWRyYXcoKSx0aGlzfSxyZWRyYXc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWFwJiYodGhpcy5fcmVzZXQoe2hhcmQ6ITB9KSx0aGlzLl91cGRhdGUoKSksdGhpc30sX3VwZGF0ZVpJbmRleDpmdW5jdGlvbigpe3RoaXMuX2NvbnRhaW5lciYmdGhpcy5vcHRpb25zLnpJbmRleCE9PWkmJih0aGlzLl9jb250YWluZXIuc3R5bGUuekluZGV4PXRoaXMub3B0aW9ucy56SW5kZXgpfSxfc2V0QXV0b1pJbmRleDpmdW5jdGlvbih0LGUpe3ZhciBpLG4sbyxzPXQuY2hpbGRyZW4sYT0tZSgxLzAsLTEvMCk7Zm9yKG49MCxvPXMubGVuZ3RoO28+bjtuKyspc1tuXSE9PXRoaXMuX2NvbnRhaW5lciYmKGk9cGFyc2VJbnQoc1tuXS5zdHlsZS56SW5kZXgsMTApLGlzTmFOKGkpfHwoYT1lKGEsaSkpKTt0aGlzLm9wdGlvbnMuekluZGV4PXRoaXMuX2NvbnRhaW5lci5zdHlsZS56SW5kZXg9KGlzRmluaXRlKGEpP2E6MCkrZSgxLC0xKX0sX3VwZGF0ZU9wYWNpdHk6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMuX3RpbGVzO2lmKG8uQnJvd3Nlci5pZWx0OSlmb3IodCBpbiBlKW8uRG9tVXRpbC5zZXRPcGFjaXR5KGVbdF0sdGhpcy5vcHRpb25zLm9wYWNpdHkpO2Vsc2Ugby5Eb21VdGlsLnNldE9wYWNpdHkodGhpcy5fY29udGFpbmVyLHRoaXMub3B0aW9ucy5vcGFjaXR5KX0sX2luaXRDb250YWluZXI6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXAuX3BhbmVzLnRpbGVQYW5lO2lmKCF0aGlzLl9jb250YWluZXIpe2lmKHRoaXMuX2NvbnRhaW5lcj1vLkRvbVV0aWwuY3JlYXRlKCJkaXYiLCJsZWFmbGV0LWxheWVyIiksdGhpcy5fdXBkYXRlWkluZGV4KCksdGhpcy5fYW5pbWF0ZWQpe3ZhciBlPSJsZWFmbGV0LXRpbGUtY29udGFpbmVyIjt0aGlzLl9iZ0J1ZmZlcj1vLkRvbVV0aWwuY3JlYXRlKCJkaXYiLGUsdGhpcy5fY29udGFpbmVyKSx0aGlzLl90aWxlQ29udGFpbmVyPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsZSx0aGlzLl9jb250YWluZXIpfWVsc2UgdGhpcy5fdGlsZUNvbnRhaW5lcj10aGlzLl9jb250YWluZXI7dC5hcHBlbmRDaGlsZCh0aGlzLl9jb250YWluZXIpLHRoaXMub3B0aW9ucy5vcGFjaXR5PDEmJnRoaXMuX3VwZGF0ZU9wYWNpdHkoKX19LF9yZXNldDpmdW5jdGlvbih0KXtmb3IodmFyIGUgaW4gdGhpcy5fdGlsZXMpdGhpcy5maXJlKCJ0aWxldW5sb2FkIix7dGlsZTp0aGlzLl90aWxlc1tlXX0pO3RoaXMuX3RpbGVzPXt9LHRoaXMuX3RpbGVzVG9Mb2FkPTAsdGhpcy5vcHRpb25zLnJldXNlVGlsZXMmJih0aGlzLl91bnVzZWRUaWxlcz1bXSksdGhpcy5fdGlsZUNvbnRhaW5lci5pbm5lckhUTUw9IiIsdGhpcy5fYW5pbWF0ZWQmJnQmJnQuaGFyZCYmdGhpcy5fY2xlYXJCZ0J1ZmZlcigpLHRoaXMuX2luaXRDb250YWluZXIoKX0sX2dldFRpbGVTaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWFwLGU9dC5nZXRab29tKCkrdGhpcy5vcHRpb25zLnpvb21PZmZzZXQsaT10aGlzLm9wdGlvbnMubWF4TmF0aXZlWm9vbSxuPXRoaXMub3B0aW9ucy50aWxlU2l6ZTtyZXR1cm4gaSYmZT5pJiYobj1NYXRoLnJvdW5kKHQuZ2V0Wm9vbVNjYWxlKGUpL3QuZ2V0Wm9vbVNjYWxlKGkpKm4pKSxufSxfdXBkYXRlOmZ1bmN0aW9uKCl7aWYodGhpcy5fbWFwKXt2YXIgdD10aGlzLl9tYXAsZT10LmdldFBpeGVsQm91bmRzKCksaT10LmdldFpvb20oKSxuPXRoaXMuX2dldFRpbGVTaXplKCk7aWYoIShpPnRoaXMub3B0aW9ucy5tYXhab29tfHxpPHRoaXMub3B0aW9ucy5taW5ab29tKSl7dmFyIHM9by5ib3VuZHMoZS5taW4uZGl2aWRlQnkobikuX2Zsb29yKCksZS5tYXguZGl2aWRlQnkobikuX2Zsb29yKCkpO3RoaXMuX2FkZFRpbGVzRnJvbUNlbnRlck91dChzKSwodGhpcy5vcHRpb25zLnVubG9hZEludmlzaWJsZVRpbGVzfHx0aGlzLm9wdGlvbnMucmV1c2VUaWxlcykmJnRoaXMuX3JlbW92ZU90aGVyVGlsZXMocyl9fX0sX2FkZFRpbGVzRnJvbUNlbnRlck91dDpmdW5jdGlvbih0KXt2YXIgaSxuLHMsYT1bXSxyPXQuZ2V0Q2VudGVyKCk7Zm9yKGk9dC5taW4ueTtpPD10Lm1heC55O2krKylmb3Iobj10Lm1pbi54O248PXQubWF4Lng7bisrKXM9bmV3IG8uUG9pbnQobixpKSx0aGlzLl90aWxlU2hvdWxkQmVMb2FkZWQocykmJmEucHVzaChzKTt2YXIgaD1hLmxlbmd0aDtpZigwIT09aCl7YS5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuZGlzdGFuY2VUbyhyKS1lLmRpc3RhbmNlVG8ocil9KTt2YXIgbD1lLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtmb3IodGhpcy5fdGlsZXNUb0xvYWR8fHRoaXMuZmlyZSgibG9hZGluZyIpLHRoaXMuX3RpbGVzVG9Mb2FkKz1oLG49MDtoPm47bisrKXRoaXMuX2FkZFRpbGUoYVtuXSxsKTt0aGlzLl90aWxlQ29udGFpbmVyLmFwcGVuZENoaWxkKGwpfX0sX3RpbGVTaG91bGRCZUxvYWRlZDpmdW5jdGlvbih0KXtpZih0LngrIjoiK3QueSBpbiB0aGlzLl90aWxlcylyZXR1cm4hMTt2YXIgZT10aGlzLm9wdGlvbnM7aWYoIWUuY29udGludW91c1dvcmxkKXt2YXIgaT10aGlzLl9nZXRXcmFwVGlsZU51bSgpO2lmKGUubm9XcmFwJiYodC54PDB8fHQueD49aS54KXx8dC55PDB8fHQueT49aS55KXJldHVybiExfWlmKGUuYm91bmRzKXt2YXIgbj1lLnRpbGVTaXplLG89dC5tdWx0aXBseUJ5KG4pLHM9by5hZGQoW24sbl0pLGE9dGhpcy5fbWFwLnVucHJvamVjdChvKSxyPXRoaXMuX21hcC51bnByb2plY3Qocyk7aWYoZS5jb250aW51b3VzV29ybGR8fGUubm9XcmFwfHwoYT1hLndyYXAoKSxyPXIud3JhcCgpKSwhZS5ib3VuZHMuaW50ZXJzZWN0cyhbYSxyXSkpcmV0dXJuITF9cmV0dXJuITB9LF9yZW1vdmVPdGhlclRpbGVzOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixvO2ZvcihvIGluIHRoaXMuX3RpbGVzKWU9by5zcGxpdCgiOiIpLGk9cGFyc2VJbnQoZVswXSwxMCksbj1wYXJzZUludChlWzFdLDEwKSwoaTx0Lm1pbi54fHxpPnQubWF4Lnh8fG48dC5taW4ueXx8bj50Lm1heC55KSYmdGhpcy5fcmVtb3ZlVGlsZShvKX0sX3JlbW92ZVRpbGU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdGlsZXNbdF07dGhpcy5maXJlKCJ0aWxldW5sb2FkIix7dGlsZTplLHVybDplLnNyY30pLHRoaXMub3B0aW9ucy5yZXVzZVRpbGVzPyhvLkRvbVV0aWwucmVtb3ZlQ2xhc3MoZSwibGVhZmxldC10aWxlLWxvYWRlZCIpLHRoaXMuX3VudXNlZFRpbGVzLnB1c2goZSkpOmUucGFyZW50Tm9kZT09PXRoaXMuX3RpbGVDb250YWluZXImJnRoaXMuX3RpbGVDb250YWluZXIucmVtb3ZlQ2hpbGQoZSksby5Ccm93c2VyLmFuZHJvaWR8fChlLm9ubG9hZD1udWxsLGUuc3JjPW8uVXRpbC5lbXB0eUltYWdlVXJsKSxkZWxldGUgdGhpcy5fdGlsZXNbdF19LF9hZGRUaWxlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fZ2V0VGlsZVBvcyh0KSxuPXRoaXMuX2dldFRpbGUoKTtvLkRvbVV0aWwuc2V0UG9zaXRpb24obixpLG8uQnJvd3Nlci5jaHJvbWUpLHRoaXMuX3RpbGVzW3QueCsiOiIrdC55XT1uLHRoaXMuX2xvYWRUaWxlKG4sdCksbi5wYXJlbnROb2RlIT09dGhpcy5fdGlsZUNvbnRhaW5lciYmZS5hcHBlbmRDaGlsZChuKX0sX2dldFpvb21Gb3JVcmw6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMsZT10aGlzLl9tYXAuZ2V0Wm9vbSgpO3JldHVybiB0Lnpvb21SZXZlcnNlJiYoZT10Lm1heFpvb20tZSksZSs9dC56b29tT2Zmc2V0LHQubWF4TmF0aXZlWm9vbT9NYXRoLm1pbihlLHQubWF4TmF0aXZlWm9vbSk6ZX0sX2dldFRpbGVQb3M6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbWFwLmdldFBpeGVsT3JpZ2luKCksaT10aGlzLl9nZXRUaWxlU2l6ZSgpO3JldHVybiB0Lm11bHRpcGx5QnkoaSkuc3VidHJhY3QoZSl9LGdldFRpbGVVcmw6ZnVuY3Rpb24odCl7cmV0dXJuIG8uVXRpbC50ZW1wbGF0ZSh0aGlzLl91cmwsby5leHRlbmQoe3M6dGhpcy5fZ2V0U3ViZG9tYWluKHQpLHo6dC56LHg6dC54LHk6dC55fSx0aGlzLm9wdGlvbnMpKX0sX2dldFdyYXBUaWxlTnVtOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWFwLm9wdGlvbnMuY3JzLGU9dC5nZXRTaXplKHRoaXMuX21hcC5nZXRab29tKCkpO3JldHVybiBlLmRpdmlkZUJ5KHRoaXMuX2dldFRpbGVTaXplKCkpLl9mbG9vcigpfSxfYWRqdXN0VGlsZVBvaW50OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2dldFdyYXBUaWxlTnVtKCk7dGhpcy5vcHRpb25zLmNvbnRpbnVvdXNXb3JsZHx8dGhpcy5vcHRpb25zLm5vV3JhcHx8KHQueD0odC54JWUueCtlLngpJWUueCksdGhpcy5vcHRpb25zLnRtcyYmKHQueT1lLnktdC55LTEpLHQuej10aGlzLl9nZXRab29tRm9yVXJsKCl9LF9nZXRTdWJkb21haW46ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5hYnModC54K3QueSkldGhpcy5vcHRpb25zLnN1YmRvbWFpbnMubGVuZ3RoO3JldHVybiB0aGlzLm9wdGlvbnMuc3ViZG9tYWluc1tlXX0sX2dldFRpbGU6ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMucmV1c2VUaWxlcyYmdGhpcy5fdW51c2VkVGlsZXMubGVuZ3RoPjApe3ZhciB0PXRoaXMuX3VudXNlZFRpbGVzLnBvcCgpO3JldHVybiB0aGlzLl9yZXNldFRpbGUodCksdH1yZXR1cm4gdGhpcy5fY3JlYXRlVGlsZSgpfSxfcmVzZXRUaWxlOmZ1bmN0aW9uKCl7fSxfY3JlYXRlVGlsZTpmdW5jdGlvbigpe3ZhciB0PW8uRG9tVXRpbC5jcmVhdGUoImltZyIsImxlYWZsZXQtdGlsZSIpO3JldHVybiB0LnN0eWxlLndpZHRoPXQuc3R5bGUuaGVpZ2h0PXRoaXMuX2dldFRpbGVTaXplKCkrInB4Iix0LmdhbGxlcnlpbWc9Im5vIix0Lm9uc2VsZWN0c3RhcnQ9dC5vbm1vdXNlbW92ZT1vLlV0aWwuZmFsc2VGbixvLkJyb3dzZXIuaWVsdDkmJnRoaXMub3B0aW9ucy5vcGFjaXR5IT09aSYmby5Eb21VdGlsLnNldE9wYWNpdHkodCx0aGlzLm9wdGlvbnMub3BhY2l0eSksby5Ccm93c2VyLm1vYmlsZVdlYmtpdDNkJiYodC5zdHlsZS5XZWJraXRCYWNrZmFjZVZpc2liaWxpdHk9ImhpZGRlbiIpLHR9LF9sb2FkVGlsZTpmdW5jdGlvbih0LGUpe3QuX2xheWVyPXRoaXMsdC5vbmxvYWQ9dGhpcy5fdGlsZU9uTG9hZCx0Lm9uZXJyb3I9dGhpcy5fdGlsZU9uRXJyb3IsdGhpcy5fYWRqdXN0VGlsZVBvaW50KGUpLHQuc3JjPXRoaXMuZ2V0VGlsZVVybChlKSx0aGlzLmZpcmUoInRpbGVsb2Fkc3RhcnQiLHt0aWxlOnQsdXJsOnQuc3JjfSl9LF90aWxlTG9hZGVkOmZ1bmN0aW9uKCl7dGhpcy5fdGlsZXNUb0xvYWQtLSx0aGlzLl9hbmltYXRlZCYmby5Eb21VdGlsLmFkZENsYXNzKHRoaXMuX3RpbGVDb250YWluZXIsImxlYWZsZXQtem9vbS1hbmltYXRlZCIpLHRoaXMuX3RpbGVzVG9Mb2FkfHwodGhpcy5maXJlKCJsb2FkIiksdGhpcy5fYW5pbWF0ZWQmJihjbGVhclRpbWVvdXQodGhpcy5fY2xlYXJCZ0J1ZmZlclRpbWVyKSx0aGlzLl9jbGVhckJnQnVmZmVyVGltZXI9c2V0VGltZW91dChvLmJpbmQodGhpcy5fY2xlYXJCZ0J1ZmZlcix0aGlzKSw1MDApKSl9LF90aWxlT25Mb2FkOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbGF5ZXI7dGhpcy5zcmMhPT1vLlV0aWwuZW1wdHlJbWFnZVVybCYmKG8uRG9tVXRpbC5hZGRDbGFzcyh0aGlzLCJsZWFmbGV0LXRpbGUtbG9hZGVkIiksdC5maXJlKCJ0aWxlbG9hZCIse3RpbGU6dGhpcyx1cmw6dGhpcy5zcmN9KSksdC5fdGlsZUxvYWRlZCgpfSxfdGlsZU9uRXJyb3I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9sYXllcjt0LmZpcmUoInRpbGVlcnJvciIse3RpbGU6dGhpcyx1cmw6dGhpcy5zcmN9KTt2YXIgZT10Lm9wdGlvbnMuZXJyb3JUaWxlVXJsO2UmJih0aGlzLnNyYz1lKSx0Ll90aWxlTG9hZGVkKCl9fSksby50aWxlTGF5ZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IG8uVGlsZUxheWVyKHQsZSl9LG8uVGlsZUxheWVyLldNUz1vLlRpbGVMYXllci5leHRlbmQoe2RlZmF1bHRXbXNQYXJhbXM6e3NlcnZpY2U6IldNUyIscmVxdWVzdDoiR2V0TWFwIix2ZXJzaW9uOiIxLjEuMSIsbGF5ZXJzOiIiLHN0eWxlczoiIixmb3JtYXQ6ImltYWdlL2pwZWciLHRyYW5zcGFyZW50OiExfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSl7dGhpcy5fdXJsPXQ7dmFyIGk9by5leHRlbmQoe30sdGhpcy5kZWZhdWx0V21zUGFyYW1zKSxuPWUudGlsZVNpemV8fHRoaXMub3B0aW9ucy50aWxlU2l6ZTtpLndpZHRoPWkuaGVpZ2h0PWUuZGV0ZWN0UmV0aW5hJiZvLkJyb3dzZXIucmV0aW5hPzIqbjpuO2Zvcih2YXIgcyBpbiBlKXRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShzKXx8ImNycyI9PT1zfHwoaVtzXT1lW3NdKTt0aGlzLndtc1BhcmFtcz1pLG8uc2V0T3B0aW9ucyh0aGlzLGUpfSxvbkFkZDpmdW5jdGlvbih0KXt0aGlzLl9jcnM9dGhpcy5vcHRpb25zLmNyc3x8dC5vcHRpb25zLmNycyx0aGlzLl93bXNWZXJzaW9uPXBhcnNlRmxvYXQodGhpcy53bXNQYXJhbXMudmVyc2lvbik7dmFyIGU9dGhpcy5fd21zVmVyc2lvbj49MS4zPyJjcnMiOiJzcnMiO3RoaXMud21zUGFyYW1zW2VdPXRoaXMuX2Nycy5jb2RlLG8uVGlsZUxheWVyLnByb3RvdHlwZS5vbkFkZC5jYWxsKHRoaXMsdCl9LGdldFRpbGVVcmw6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbWFwLGk9dGhpcy5vcHRpb25zLnRpbGVTaXplLG49dC5tdWx0aXBseUJ5KGkpLHM9bi5hZGQoW2ksaV0pLGE9dGhpcy5fY3JzLnByb2plY3QoZS51bnByb2plY3Qobix0LnopKSxyPXRoaXMuX2Nycy5wcm9qZWN0KGUudW5wcm9qZWN0KHMsdC56KSksaD10aGlzLl93bXNWZXJzaW9uPj0xLjMmJnRoaXMuX2Nycz09PW8uQ1JTLkVQU0c0MzI2P1tyLnksYS54LGEueSxyLnhdLmpvaW4oIiwiKTpbYS54LHIueSxyLngsYS55XS5qb2luKCIsIiksbD1vLlV0aWwudGVtcGxhdGUodGhpcy5fdXJsLHtzOnRoaXMuX2dldFN1YmRvbWFpbih0KX0pO3JldHVybiBsK28uVXRpbC5nZXRQYXJhbVN0cmluZyh0aGlzLndtc1BhcmFtcyxsLCEwKSsiJkJCT1g9IitofSxzZXRQYXJhbXM6ZnVuY3Rpb24odCxlKXtyZXR1cm4gby5leHRlbmQodGhpcy53bXNQYXJhbXMsdCksZXx8dGhpcy5yZWRyYXcoKSx0aGlzfX0pLG8udGlsZUxheWVyLndtcz1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgby5UaWxlTGF5ZXIuV01TKHQsZSl9LG8uVGlsZUxheWVyLkNhbnZhcz1vLlRpbGVMYXllci5leHRlbmQoe29wdGlvbnM6e2FzeW5jOiExfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe28uc2V0T3B0aW9ucyh0aGlzLHQpfSxyZWRyYXc6ZnVuY3Rpb24oKXt0aGlzLl9tYXAmJih0aGlzLl9yZXNldCh7aGFyZDohMH0pLHRoaXMuX3VwZGF0ZSgpKTtmb3IodmFyIHQgaW4gdGhpcy5fdGlsZXMpdGhpcy5fcmVkcmF3VGlsZSh0aGlzLl90aWxlc1t0XSk7cmV0dXJuIHRoaXN9LF9yZWRyYXdUaWxlOmZ1bmN0aW9uKHQpe3RoaXMuZHJhd1RpbGUodCx0Ll90aWxlUG9pbnQsdGhpcy5fbWFwLl96b29tKX0sX2NyZWF0ZVRpbGU6ZnVuY3Rpb24oKXt2YXIgdD1vLkRvbVV0aWwuY3JlYXRlKCJjYW52YXMiLCJsZWFmbGV0LXRpbGUiKTtyZXR1cm4gdC53aWR0aD10LmhlaWdodD10aGlzLm9wdGlvbnMudGlsZVNpemUsdC5vbnNlbGVjdHN0YXJ0PXQub25tb3VzZW1vdmU9by5VdGlsLmZhbHNlRm4sdH0sX2xvYWRUaWxlOmZ1bmN0aW9uKHQsZSl7dC5fbGF5ZXI9dGhpcyx0Ll90aWxlUG9pbnQ9ZSx0aGlzLl9yZWRyYXdUaWxlKHQpLHRoaXMub3B0aW9ucy5hc3luY3x8dGhpcy50aWxlRHJhd24odCl9LGRyYXdUaWxlOmZ1bmN0aW9uKCl7fSx0aWxlRHJhd246ZnVuY3Rpb24odCl7dGhpcy5fdGlsZU9uTG9hZC5jYWxsKHQpfX0pLG8udGlsZUxheWVyLmNhbnZhcz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IG8uVGlsZUxheWVyLkNhbnZhcyh0KX0sby5JbWFnZU92ZXJsYXk9by5DbGFzcy5leHRlbmQoe2luY2x1ZGVzOm8uTWl4aW4uRXZlbnRzLG9wdGlvbnM6e29wYWNpdHk6MX0saW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUsaSl7dGhpcy5fdXJsPXQsdGhpcy5fYm91bmRzPW8ubGF0TG5nQm91bmRzKGUpLG8uc2V0T3B0aW9ucyh0aGlzLGkpfSxvbkFkZDpmdW5jdGlvbih0KXt0aGlzLl9tYXA9dCx0aGlzLl9pbWFnZXx8dGhpcy5faW5pdEltYWdlKCksdC5fcGFuZXMub3ZlcmxheVBhbmUuYXBwZW5kQ2hpbGQodGhpcy5faW1hZ2UpLHQub24oInZpZXdyZXNldCIsdGhpcy5fcmVzZXQsdGhpcyksdC5vcHRpb25zLnpvb21BbmltYXRpb24mJm8uQnJvd3Nlci5hbnkzZCYmdC5vbigiem9vbWFuaW0iLHRoaXMuX2FuaW1hdGVab29tLHRoaXMpLHRoaXMuX3Jlc2V0KCl9LG9uUmVtb3ZlOmZ1bmN0aW9uKHQpe3QuZ2V0UGFuZXMoKS5vdmVybGF5UGFuZS5yZW1vdmVDaGlsZCh0aGlzLl9pbWFnZSksdC5vZmYoInZpZXdyZXNldCIsdGhpcy5fcmVzZXQsdGhpcyksdC5vcHRpb25zLnpvb21BbmltYXRpb24mJnQub2ZmKCJ6b29tYW5pbSIsdGhpcy5fYW5pbWF0ZVpvb20sdGhpcyl9LGFkZFRvOmZ1bmN0aW9uKHQpe3JldHVybiB0LmFkZExheWVyKHRoaXMpLHRoaXN9LHNldE9wYWNpdHk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3B0aW9ucy5vcGFjaXR5PXQsdGhpcy5fdXBkYXRlT3BhY2l0eSgpLHRoaXN9LGJyaW5nVG9Gcm9udDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9pbWFnZSYmdGhpcy5fbWFwLl9wYW5lcy5vdmVybGF5UGFuZS5hcHBlbmRDaGlsZCh0aGlzLl9pbWFnZSksdGhpc30sYnJpbmdUb0JhY2s6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXAuX3BhbmVzLm92ZXJsYXlQYW5lO3JldHVybiB0aGlzLl9pbWFnZSYmdC5pbnNlcnRCZWZvcmUodGhpcy5faW1hZ2UsdC5maXJzdENoaWxkKSx0aGlzfSxzZXRVcmw6ZnVuY3Rpb24odCl7dGhpcy5fdXJsPXQsdGhpcy5faW1hZ2Uuc3JjPXRoaXMuX3VybH0sZ2V0QXR0cmlidXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLmF0dHJpYnV0aW9ufSxfaW5pdEltYWdlOmZ1bmN0aW9uKCl7dGhpcy5faW1hZ2U9by5Eb21VdGlsLmNyZWF0ZSgiaW1nIiwibGVhZmxldC1pbWFnZS1sYXllciIpLHRoaXMuX21hcC5vcHRpb25zLnpvb21BbmltYXRpb24mJm8uQnJvd3Nlci5hbnkzZD9vLkRvbVV0aWwuYWRkQ2xhc3ModGhpcy5faW1hZ2UsImxlYWZsZXQtem9vbS1hbmltYXRlZCIpOm8uRG9tVXRpbC5hZGRDbGFzcyh0aGlzLl9pbWFnZSwibGVhZmxldC16b29tLWhpZGUiKSx0aGlzLl91cGRhdGVPcGFjaXR5KCksby5leHRlbmQodGhpcy5faW1hZ2Use2dhbGxlcnlpbWc6Im5vIixvbnNlbGVjdHN0YXJ0Om8uVXRpbC5mYWxzZUZuLG9ubW91c2Vtb3ZlOm8uVXRpbC5mYWxzZUZuLG9ubG9hZDpvLmJpbmQodGhpcy5fb25JbWFnZUxvYWQsdGhpcyksc3JjOnRoaXMuX3VybH0pfSxfYW5pbWF0ZVpvb206ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbWFwLGk9dGhpcy5faW1hZ2Usbj1lLmdldFpvb21TY2FsZSh0Lnpvb20pLHM9dGhpcy5fYm91bmRzLmdldE5vcnRoV2VzdCgpLGE9dGhpcy5fYm91bmRzLmdldFNvdXRoRWFzdCgpLHI9ZS5fbGF0TG5nVG9OZXdMYXllclBvaW50KHMsdC56b29tLHQuY2VudGVyKSxoPWUuX2xhdExuZ1RvTmV3TGF5ZXJQb2ludChhLHQuem9vbSx0LmNlbnRlcikuX3N1YnRyYWN0KHIpLGw9ci5fYWRkKGguX211bHRpcGx5QnkoLjUqKDEtMS9uKSkpO2kuc3R5bGVbby5Eb21VdGlsLlRSQU5TRk9STV09by5Eb21VdGlsLmdldFRyYW5zbGF0ZVN0cmluZyhsKSsiIHNjYWxlKCIrbisiKSAifSxfcmVzZXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9pbWFnZSxlPXRoaXMuX21hcC5sYXRMbmdUb0xheWVyUG9pbnQodGhpcy5fYm91bmRzLmdldE5vcnRoV2VzdCgpKSxpPXRoaXMuX21hcC5sYXRMbmdUb0xheWVyUG9pbnQodGhpcy5fYm91bmRzLmdldFNvdXRoRWFzdCgpKS5fc3VidHJhY3QoZSk7by5Eb21VdGlsLnNldFBvc2l0aW9uKHQsZSksdC5zdHlsZS53aWR0aD1pLngrInB4Iix0LnN0eWxlLmhlaWdodD1pLnkrInB4In0sX29uSW1hZ2VMb2FkOmZ1bmN0aW9uKCl7dGhpcy5maXJlKCJsb2FkIil9LF91cGRhdGVPcGFjaXR5OmZ1bmN0aW9uKCl7by5Eb21VdGlsLnNldE9wYWNpdHkodGhpcy5faW1hZ2UsdGhpcy5vcHRpb25zLm9wYWNpdHkpfX0pLG8uaW1hZ2VPdmVybGF5PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gbmV3IG8uSW1hZ2VPdmVybGF5KHQsZSxpKX0sby5JY29uPW8uQ2xhc3MuZXh0ZW5kKHtvcHRpb25zOntjbGFzc05hbWU6IiJ9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7by5zZXRPcHRpb25zKHRoaXMsdCl9LGNyZWF0ZUljb246ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2NyZWF0ZUljb24oImljb24iLHQpfSxjcmVhdGVTaGFkb3c6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2NyZWF0ZUljb24oInNoYWRvdyIsdCl9LF9jcmVhdGVJY29uOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fZ2V0SWNvblVybCh0KTtpZighaSl7aWYoImljb24iPT09dCl0aHJvdyBuZXcgRXJyb3IoImljb25Vcmwgbm90IHNldCBpbiBJY29uIG9wdGlvbnMgKHNlZSB0aGUgZG9jcykuIik7cmV0dXJuIG51bGx9dmFyIG47cmV0dXJuIG49ZSYmIklNRyI9PT1lLnRhZ05hbWU/dGhpcy5fY3JlYXRlSW1nKGksZSk6dGhpcy5fY3JlYXRlSW1nKGkpLHRoaXMuX3NldEljb25TdHlsZXMobix0KSxufSxfc2V0SWNvblN0eWxlczpmdW5jdGlvbih0LGUpe3ZhciBpLG49dGhpcy5vcHRpb25zLHM9by5wb2ludChuW2UrIlNpemUiXSk7aT1vLnBvaW50KCJzaGFkb3ciPT09ZT9uLnNoYWRvd0FuY2hvcnx8bi5pY29uQW5jaG9yOm4uaWNvbkFuY2hvciksIWkmJnMmJihpPXMuZGl2aWRlQnkoMiwhMCkpLHQuY2xhc3NOYW1lPSJsZWFmbGV0LW1hcmtlci0iK2UrIiAiK24uY2xhc3NOYW1lLGkmJih0LnN0eWxlLm1hcmdpbkxlZnQ9LWkueCsicHgiLHQuc3R5bGUubWFyZ2luVG9wPS1pLnkrInB4IikscyYmKHQuc3R5bGUud2lkdGg9cy54KyJweCIsdC5zdHlsZS5oZWlnaHQ9cy55KyJweCIpfSxfY3JlYXRlSW1nOmZ1bmN0aW9uKHQsaSl7cmV0dXJuIGk9aXx8ZS5jcmVhdGVFbGVtZW50KCJpbWciKSxpLnNyYz10LGl9LF9nZXRJY29uVXJsOmZ1bmN0aW9uKHQpe3JldHVybiBvLkJyb3dzZXIucmV0aW5hJiZ0aGlzLm9wdGlvbnNbdCsiUmV0aW5hVXJsIl0/dGhpcy5vcHRpb25zW3QrIlJldGluYVVybCJdOnRoaXMub3B0aW9uc1t0KyJVcmwiXX19KSxvLmljb249ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBvLkljb24odCl9LG8uSWNvbi5EZWZhdWx0PW8uSWNvbi5leHRlbmQoe29wdGlvbnM6e2ljb25TaXplOlsyNSw0MV0saWNvbkFuY2hvcjpbMTIsNDFdLHBvcHVwQW5jaG9yOlsxLC0zNF0sc2hhZG93U2l6ZTpbNDEsNDFdfSxfZ2V0SWNvblVybDpmdW5jdGlvbih0KXt2YXIgZT10KyJVcmwiO2lmKHRoaXMub3B0aW9uc1tlXSlyZXR1cm4gdGhpcy5vcHRpb25zW2VdO28uQnJvd3Nlci5yZXRpbmEmJiJpY29uIj09PXQmJih0Kz0iLTJ4Iik7dmFyIGk9by5JY29uLkRlZmF1bHQuaW1hZ2VQYXRoO2lmKCFpKXRocm93IG5ldyBFcnJvcigiQ291bGRuJ3QgYXV0b2RldGVjdCBMLkljb24uRGVmYXVsdC5pbWFnZVBhdGgsIHNldCBpdCBtYW51YWxseS4iKTtyZXR1cm4gaSsiL21hcmtlci0iK3QrIi5wbmcifX0pLG8uSWNvbi5EZWZhdWx0LmltYWdlUGF0aD1mdW5jdGlvbigpe3ZhciB0LGksbixvLHMsYT1lLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKSxyPS9bXC9eXWxlYWZsZXRbXC1cLl9dPyhbXHdcLVwuX10qKVwuanNcPz8vO2Zvcih0PTAsaT1hLmxlbmd0aDtpPnQ7dCsrKWlmKG49YVt0XS5zcmMsbz1uLm1hdGNoKHIpKXJldHVybiBzPW4uc3BsaXQocilbMF0sKHM/cysiLyI6IiIpKyJpbWFnZXMifSgpLG8uTWFya2VyPW8uQ2xhc3MuZXh0ZW5kKHtpbmNsdWRlczpvLk1peGluLkV2ZW50cyxvcHRpb25zOntpY29uOm5ldyBvLkljb24uRGVmYXVsdCx0aXRsZToiIixhbHQ6IiIsY2xpY2thYmxlOiEwLGRyYWdnYWJsZTohMSxrZXlib2FyZDohMCx6SW5kZXhPZmZzZXQ6MCxvcGFjaXR5OjEscmlzZU9uSG92ZXI6ITEscmlzZU9mZnNldDoyNTB9LGluaXRpYWxpemU6ZnVuY3Rpb24odCxlKXtvLnNldE9wdGlvbnModGhpcyxlKSx0aGlzLl9sYXRsbmc9by5sYXRMbmcodCl9LG9uQWRkOmZ1bmN0aW9uKHQpe3RoaXMuX21hcD10LHQub24oInZpZXdyZXNldCIsdGhpcy51cGRhdGUsdGhpcyksdGhpcy5faW5pdEljb24oKSx0aGlzLnVwZGF0ZSgpLHRoaXMuZmlyZSgiYWRkIiksdC5vcHRpb25zLnpvb21BbmltYXRpb24mJnQub3B0aW9ucy5tYXJrZXJab29tQW5pbWF0aW9uJiZ0Lm9uKCJ6b29tYW5pbSIsdGhpcy5fYW5pbWF0ZVpvb20sdGhpcyl9LGFkZFRvOmZ1bmN0aW9uKHQpe3JldHVybiB0LmFkZExheWVyKHRoaXMpLHRoaXN9LG9uUmVtb3ZlOmZ1bmN0aW9uKHQpe3RoaXMuZHJhZ2dpbmcmJnRoaXMuZHJhZ2dpbmcuZGlzYWJsZSgpLHRoaXMuX3JlbW92ZUljb24oKSx0aGlzLl9yZW1vdmVTaGFkb3coKSx0aGlzLmZpcmUoInJlbW92ZSIpLHQub2ZmKHt2aWV3cmVzZXQ6dGhpcy51cGRhdGUsem9vbWFuaW06dGhpcy5fYW5pbWF0ZVpvb219LHRoaXMpLHRoaXMuX21hcD1udWxsfSxnZXRMYXRMbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGF0bG5nfSxzZXRMYXRMbmc6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2xhdGxuZz1vLmxhdExuZyh0KSx0aGlzLnVwZGF0ZSgpLHRoaXMuZmlyZSgibW92ZSIse2xhdGxuZzp0aGlzLl9sYXRsbmd9KX0sc2V0WkluZGV4T2Zmc2V0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMuekluZGV4T2Zmc2V0PXQsdGhpcy51cGRhdGUoKSx0aGlzfSxzZXRJY29uOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMuaWNvbj10LHRoaXMuX21hcCYmKHRoaXMuX2luaXRJY29uKCksdGhpcy51cGRhdGUoKSksdGhpcy5fcG9wdXAmJnRoaXMuYmluZFBvcHVwKHRoaXMuX3BvcHVwKSx0aGlzfSx1cGRhdGU6ZnVuY3Rpb24oKXtpZih0aGlzLl9pY29uKXt2YXIgdD10aGlzLl9tYXAubGF0TG5nVG9MYXllclBvaW50KHRoaXMuX2xhdGxuZykucm91bmQoKTt0aGlzLl9zZXRQb3ModCl9cmV0dXJuIHRoaXN9LF9pbml0SWNvbjpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucyxlPXRoaXMuX21hcCxpPWUub3B0aW9ucy56b29tQW5pbWF0aW9uJiZlLm9wdGlvbnMubWFya2VyWm9vbUFuaW1hdGlvbixuPWk/ImxlYWZsZXQtem9vbS1hbmltYXRlZCI6ImxlYWZsZXQtem9vbS1oaWRlIixzPXQuaWNvbi5jcmVhdGVJY29uKHRoaXMuX2ljb24pLGE9ITE7cyE9PXRoaXMuX2ljb24mJih0aGlzLl9pY29uJiZ0aGlzLl9yZW1vdmVJY29uKCksYT0hMCx0LnRpdGxlJiYocy50aXRsZT10LnRpdGxlKSx0LmFsdCYmKHMuYWx0PXQuYWx0KSksby5Eb21VdGlsLmFkZENsYXNzKHMsbiksdC5rZXlib2FyZCYmKHMudGFiSW5kZXg9IjAiKSx0aGlzLl9pY29uPXMsdGhpcy5faW5pdEludGVyYWN0aW9uKCksdC5yaXNlT25Ib3ZlciYmby5Eb21FdmVudC5vbihzLCJtb3VzZW92ZXIiLHRoaXMuX2JyaW5nVG9Gcm9udCx0aGlzKS5vbihzLCJtb3VzZW91dCIsdGhpcy5fcmVzZXRaSW5kZXgsdGhpcyk7dmFyIHI9dC5pY29uLmNyZWF0ZVNoYWRvdyh0aGlzLl9zaGFkb3cpLGg9ITE7ciE9PXRoaXMuX3NoYWRvdyYmKHRoaXMuX3JlbW92ZVNoYWRvdygpLGg9ITApLHImJm8uRG9tVXRpbC5hZGRDbGFzcyhyLG4pLHRoaXMuX3NoYWRvdz1yLHQub3BhY2l0eTwxJiZ0aGlzLl91cGRhdGVPcGFjaXR5KCk7dmFyIGw9dGhpcy5fbWFwLl9wYW5lczthJiZsLm1hcmtlclBhbmUuYXBwZW5kQ2hpbGQodGhpcy5faWNvbiksciYmaCYmbC5zaGFkb3dQYW5lLmFwcGVuZENoaWxkKHRoaXMuX3NoYWRvdyl9LF9yZW1vdmVJY29uOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLnJpc2VPbkhvdmVyJiZvLkRvbUV2ZW50Lm9mZih0aGlzLl9pY29uLCJtb3VzZW92ZXIiLHRoaXMuX2JyaW5nVG9Gcm9udCkub2ZmKHRoaXMuX2ljb24sIm1vdXNlb3V0Iix0aGlzLl9yZXNldFpJbmRleCksdGhpcy5fbWFwLl9wYW5lcy5tYXJrZXJQYW5lLnJlbW92ZUNoaWxkKHRoaXMuX2ljb24pLHRoaXMuX2ljb249bnVsbH0sX3JlbW92ZVNoYWRvdzpmdW5jdGlvbigpe3RoaXMuX3NoYWRvdyYmdGhpcy5fbWFwLl9wYW5lcy5zaGFkb3dQYW5lLnJlbW92ZUNoaWxkKHRoaXMuX3NoYWRvdyksdGhpcy5fc2hhZG93PW51bGx9LF9zZXRQb3M6ZnVuY3Rpb24odCl7by5Eb21VdGlsLnNldFBvc2l0aW9uKHRoaXMuX2ljb24sdCksdGhpcy5fc2hhZG93JiZvLkRvbVV0aWwuc2V0UG9zaXRpb24odGhpcy5fc2hhZG93LHQpLHRoaXMuX3pJbmRleD10LnkrdGhpcy5vcHRpb25zLnpJbmRleE9mZnNldCx0aGlzLl9yZXNldFpJbmRleCgpfSxfdXBkYXRlWkluZGV4OmZ1bmN0aW9uKHQpe3RoaXMuX2ljb24uc3R5bGUuekluZGV4PXRoaXMuX3pJbmRleCt0fSxfYW5pbWF0ZVpvb206ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbWFwLl9sYXRMbmdUb05ld0xheWVyUG9pbnQodGhpcy5fbGF0bG5nLHQuem9vbSx0LmNlbnRlcikucm91bmQoKTt0aGlzLl9zZXRQb3MoZSl9LF9pbml0SW50ZXJhY3Rpb246ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMuY2xpY2thYmxlKXt2YXIgdD10aGlzLl9pY29uLGU9WyJkYmxjbGljayIsIm1vdXNlZG93biIsIm1vdXNlb3ZlciIsIm1vdXNlb3V0IiwiY29udGV4dG1lbnUiXTtvLkRvbVV0aWwuYWRkQ2xhc3ModCwibGVhZmxldC1jbGlja2FibGUiKSxvLkRvbUV2ZW50Lm9uKHQsImNsaWNrIix0aGlzLl9vbk1vdXNlQ2xpY2ssdGhpcyksby5Eb21FdmVudC5vbih0LCJrZXlwcmVzcyIsdGhpcy5fb25LZXlQcmVzcyx0aGlzKTtmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKylvLkRvbUV2ZW50Lm9uKHQsZVtpXSx0aGlzLl9maXJlTW91c2VFdmVudCx0aGlzKTtvLkhhbmRsZXIuTWFya2VyRHJhZyYmKHRoaXMuZHJhZ2dpbmc9bmV3IG8uSGFuZGxlci5NYXJrZXJEcmFnKHRoaXMpLHRoaXMub3B0aW9ucy5kcmFnZ2FibGUmJnRoaXMuZHJhZ2dpbmcuZW5hYmxlKCkpfX0sX29uTW91c2VDbGljazpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmRyYWdnaW5nJiZ0aGlzLmRyYWdnaW5nLm1vdmVkKCk7KHRoaXMuaGFzRXZlbnRMaXN0ZW5lcnModC50eXBlKXx8ZSkmJm8uRG9tRXZlbnQuc3RvcFByb3BhZ2F0aW9uKHQpLGV8fCh0aGlzLmRyYWdnaW5nJiZ0aGlzLmRyYWdnaW5nLl9lbmFibGVkfHwhdGhpcy5fbWFwLmRyYWdnaW5nfHwhdGhpcy5fbWFwLmRyYWdnaW5nLm1vdmVkKCkpJiZ0aGlzLmZpcmUodC50eXBlLHtvcmlnaW5hbEV2ZW50OnQsbGF0bG5nOnRoaXMuX2xhdGxuZ30pfSxfb25LZXlQcmVzczpmdW5jdGlvbih0KXsxMz09PXQua2V5Q29kZSYmdGhpcy5maXJlKCJjbGljayIse29yaWdpbmFsRXZlbnQ6dCxsYXRsbmc6dGhpcy5fbGF0bG5nfSl9LF9maXJlTW91c2VFdmVudDpmdW5jdGlvbih0KXt0aGlzLmZpcmUodC50eXBlLHtvcmlnaW5hbEV2ZW50OnQsbGF0bG5nOnRoaXMuX2xhdGxuZ30pLCJjb250ZXh0bWVudSI9PT10LnR5cGUmJnRoaXMuaGFzRXZlbnRMaXN0ZW5lcnModC50eXBlKSYmby5Eb21FdmVudC5wcmV2ZW50RGVmYXVsdCh0KSwibW91c2Vkb3duIiE9PXQudHlwZT9vLkRvbUV2ZW50LnN0b3BQcm9wYWdhdGlvbih0KTpvLkRvbUV2ZW50LnByZXZlbnREZWZhdWx0KHQpfSxzZXRPcGFjaXR5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMub3BhY2l0eT10LHRoaXMuX21hcCYmdGhpcy5fdXBkYXRlT3BhY2l0eSgpLHRoaXN9LF91cGRhdGVPcGFjaXR5OmZ1bmN0aW9uKCl7by5Eb21VdGlsLnNldE9wYWNpdHkodGhpcy5faWNvbix0aGlzLm9wdGlvbnMub3BhY2l0eSksdGhpcy5fc2hhZG93JiZvLkRvbVV0aWwuc2V0T3BhY2l0eSh0aGlzLl9zaGFkb3csdGhpcy5vcHRpb25zLm9wYWNpdHkpfSxfYnJpbmdUb0Zyb250OmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlWkluZGV4KHRoaXMub3B0aW9ucy5yaXNlT2Zmc2V0KX0sX3Jlc2V0WkluZGV4OmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlWkluZGV4KDApfX0pLG8ubWFya2VyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBvLk1hcmtlcih0LGUpfSxvLkRpdkljb249by5JY29uLmV4dGVuZCh7b3B0aW9uczp7aWNvblNpemU6WzEyLDEyXSxjbGFzc05hbWU6ImxlYWZsZXQtZGl2LWljb24iLGh0bWw6ITF9LGNyZWF0ZUljb246ZnVuY3Rpb24odCl7dmFyIGk9dCYmIkRJViI9PT10LnRhZ05hbWU/dDplLmNyZWF0ZUVsZW1lbnQoImRpdiIpLG49dGhpcy5vcHRpb25zO3JldHVybiBpLmlubmVySFRNTD1uLmh0bWwhPT0hMT9uLmh0bWw6IiIsbi5iZ1BvcyYmKGkuc3R5bGUuYmFja2dyb3VuZFBvc2l0aW9uPS1uLmJnUG9zLngrInB4ICIrLW4uYmdQb3MueSsicHgiKSx0aGlzLl9zZXRJY29uU3R5bGVzKGksImljb24iKSxpfSxjcmVhdGVTaGFkb3c6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH19KSxvLmRpdkljb249ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBvLkRpdkljb24odCl9LG8uTWFwLm1lcmdlT3B0aW9ucyh7Y2xvc2VQb3B1cE9uQ2xpY2s6ITB9KSxvLlBvcHVwPW8uQ2xhc3MuZXh0ZW5kKHtpbmNsdWRlczpvLk1peGluLkV2ZW50cyxvcHRpb25zOnttaW5XaWR0aDo1MCxtYXhXaWR0aDozMDAsYXV0b1BhbjohMCxjbG9zZUJ1dHRvbjohMCxvZmZzZXQ6WzAsN10sYXV0b1BhblBhZGRpbmc6WzUsNV0sa2VlcEluVmlldzohMSxjbGFzc05hbWU6IiIsem9vbUFuaW1hdGlvbjohMH0saW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUpe28uc2V0T3B0aW9ucyh0aGlzLHQpLHRoaXMuX3NvdXJjZT1lLHRoaXMuX2FuaW1hdGVkPW8uQnJvd3Nlci5hbnkzZCYmdGhpcy5vcHRpb25zLnpvb21BbmltYXRpb24sdGhpcy5faXNPcGVuPSExfSxvbkFkZDpmdW5jdGlvbih0KXt0aGlzLl9tYXA9dCx0aGlzLl9jb250YWluZXJ8fHRoaXMuX2luaXRMYXlvdXQoKTt2YXIgZT10Lm9wdGlvbnMuZmFkZUFuaW1hdGlvbjtlJiZvLkRvbVV0aWwuc2V0T3BhY2l0eSh0aGlzLl9jb250YWluZXIsMCksdC5fcGFuZXMucG9wdXBQYW5lLmFwcGVuZENoaWxkKHRoaXMuX2NvbnRhaW5lciksdC5vbih0aGlzLl9nZXRFdmVudHMoKSx0aGlzKSx0aGlzLnVwZGF0ZSgpLGUmJm8uRG9tVXRpbC5zZXRPcGFjaXR5KHRoaXMuX2NvbnRhaW5lciwxKSx0aGlzLmZpcmUoIm9wZW4iKSx0LmZpcmUoInBvcHVwb3BlbiIse3BvcHVwOnRoaXN9KSx0aGlzLl9zb3VyY2UmJnRoaXMuX3NvdXJjZS5maXJlKCJwb3B1cG9wZW4iLHtwb3B1cDp0aGlzfSl9LGFkZFRvOmZ1bmN0aW9uKHQpe3JldHVybiB0LmFkZExheWVyKHRoaXMpLHRoaXN9LG9wZW5PbjpmdW5jdGlvbih0KXtyZXR1cm4gdC5vcGVuUG9wdXAodGhpcyksdGhpc30sb25SZW1vdmU6ZnVuY3Rpb24odCl7dC5fcGFuZXMucG9wdXBQYW5lLnJlbW92ZUNoaWxkKHRoaXMuX2NvbnRhaW5lciksby5VdGlsLmZhbHNlRm4odGhpcy5fY29udGFpbmVyLm9mZnNldFdpZHRoKSx0Lm9mZih0aGlzLl9nZXRFdmVudHMoKSx0aGlzKSx0Lm9wdGlvbnMuZmFkZUFuaW1hdGlvbiYmby5Eb21VdGlsLnNldE9wYWNpdHkodGhpcy5fY29udGFpbmVyLDApLHRoaXMuX21hcD1udWxsLHRoaXMuZmlyZSgiY2xvc2UiKSx0LmZpcmUoInBvcHVwY2xvc2UiLHtwb3B1cDp0aGlzfSksdGhpcy5fc291cmNlJiZ0aGlzLl9zb3VyY2UuZmlyZSgicG9wdXBjbG9zZSIse3BvcHVwOnRoaXN9KX0sZ2V0TGF0TG5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xhdGxuZ30sc2V0TGF0TG5nOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9sYXRsbmc9by5sYXRMbmcodCksdGhpcy5fbWFwJiYodGhpcy5fdXBkYXRlUG9zaXRpb24oKSx0aGlzLl9hZGp1c3RQYW4oKSksdGhpc30sZ2V0Q29udGVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb250ZW50fSxzZXRDb250ZW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9jb250ZW50PXQsdGhpcy51cGRhdGUoKSx0aGlzfSx1cGRhdGU6ZnVuY3Rpb24oKXt0aGlzLl9tYXAmJih0aGlzLl9jb250YWluZXIuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIix0aGlzLl91cGRhdGVDb250ZW50KCksdGhpcy5fdXBkYXRlTGF5b3V0KCksdGhpcy5fdXBkYXRlUG9zaXRpb24oKSx0aGlzLl9jb250YWluZXIuc3R5bGUudmlzaWJpbGl0eT0iIix0aGlzLl9hZGp1c3RQYW4oKSl9LF9nZXRFdmVudHM6ZnVuY3Rpb24oKXt2YXIgdD17dmlld3Jlc2V0OnRoaXMuX3VwZGF0ZVBvc2l0aW9ufTtyZXR1cm4gdGhpcy5fYW5pbWF0ZWQmJih0Lnpvb21hbmltPXRoaXMuX3pvb21BbmltYXRpb24pLCgiY2xvc2VPbkNsaWNrImluIHRoaXMub3B0aW9ucz90aGlzLm9wdGlvbnMuY2xvc2VPbkNsaWNrOnRoaXMuX21hcC5vcHRpb25zLmNsb3NlUG9wdXBPbkNsaWNrKSYmKHQucHJlY2xpY2s9dGhpcy5fY2xvc2UpLHRoaXMub3B0aW9ucy5rZWVwSW5WaWV3JiYodC5tb3ZlZW5kPXRoaXMuX2FkanVzdFBhbiksdH0sX2Nsb3NlOmZ1bmN0aW9uKCl7dGhpcy5fbWFwJiZ0aGlzLl9tYXAuY2xvc2VQb3B1cCh0aGlzKX0sX2luaXRMYXlvdXQ6ZnVuY3Rpb24oKXt2YXIgdCxlPSJsZWFmbGV0LXBvcHVwIixpPWUrIiAiK3RoaXMub3B0aW9ucy5jbGFzc05hbWUrIiBsZWFmbGV0LXpvb20tIisodGhpcy5fYW5pbWF0ZWQ/ImFuaW1hdGVkIjoiaGlkZSIpLG49dGhpcy5fY29udGFpbmVyPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsaSk7dGhpcy5vcHRpb25zLmNsb3NlQnV0dG9uJiYodD10aGlzLl9jbG9zZUJ1dHRvbj1vLkRvbVV0aWwuY3JlYXRlKCJhIixlKyItY2xvc2UtYnV0dG9uIixuKSx0LmhyZWY9IiNjbG9zZSIsdC5pbm5lckhUTUw9IiYjMjE1OyIsby5Eb21FdmVudC5kaXNhYmxlQ2xpY2tQcm9wYWdhdGlvbih0KSxvLkRvbUV2ZW50Lm9uKHQsImNsaWNrIix0aGlzLl9vbkNsb3NlQnV0dG9uQ2xpY2ssdGhpcykpO3ZhciBzPXRoaXMuX3dyYXBwZXI9by5Eb21VdGlsLmNyZWF0ZSgiZGl2IixlKyItY29udGVudC13cmFwcGVyIixuKTtvLkRvbUV2ZW50LmRpc2FibGVDbGlja1Byb3BhZ2F0aW9uKHMpLHRoaXMuX2NvbnRlbnROb2RlPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsZSsiLWNvbnRlbnQiLHMpLG8uRG9tRXZlbnQuZGlzYWJsZVNjcm9sbFByb3BhZ2F0aW9uKHRoaXMuX2NvbnRlbnROb2RlKSxvLkRvbUV2ZW50Lm9uKHMsImNvbnRleHRtZW51IixvLkRvbUV2ZW50LnN0b3BQcm9wYWdhdGlvbiksdGhpcy5fdGlwQ29udGFpbmVyPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsZSsiLXRpcC1jb250YWluZXIiLG4pLHRoaXMuX3RpcD1vLkRvbVV0aWwuY3JlYXRlKCJkaXYiLGUrIi10aXAiLHRoaXMuX3RpcENvbnRhaW5lcil9LF91cGRhdGVDb250ZW50OmZ1bmN0aW9uKCl7aWYodGhpcy5fY29udGVudCl7aWYoInN0cmluZyI9PXR5cGVvZiB0aGlzLl9jb250ZW50KXRoaXMuX2NvbnRlbnROb2RlLmlubmVySFRNTD10aGlzLl9jb250ZW50O2Vsc2V7Zm9yKDt0aGlzLl9jb250ZW50Tm9kZS5oYXNDaGlsZE5vZGVzKCk7KXRoaXMuX2NvbnRlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuX2NvbnRlbnROb2RlLmZpcnN0Q2hpbGQpO3RoaXMuX2NvbnRlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMuX2NvbnRlbnQpfXRoaXMuZmlyZSgiY29udGVudHVwZGF0ZSIpfX0sX3VwZGF0ZUxheW91dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2NvbnRlbnROb2RlLGU9dC5zdHlsZTtlLndpZHRoPSIiLGUud2hpdGVTcGFjZT0ibm93cmFwIjt2YXIgaT10Lm9mZnNldFdpZHRoO2k9TWF0aC5taW4oaSx0aGlzLm9wdGlvbnMubWF4V2lkdGgpLGk9TWF0aC5tYXgoaSx0aGlzLm9wdGlvbnMubWluV2lkdGgpLGUud2lkdGg9aSsxKyJweCIsZS53aGl0ZVNwYWNlPSIiLGUuaGVpZ2h0PSIiO3ZhciBuPXQub2Zmc2V0SGVpZ2h0LHM9dGhpcy5vcHRpb25zLm1heEhlaWdodCxhPSJsZWFmbGV0LXBvcHVwLXNjcm9sbGVkIjtzJiZuPnM/KGUuaGVpZ2h0PXMrInB4IixvLkRvbVV0aWwuYWRkQ2xhc3ModCxhKSk6by5Eb21VdGlsLnJlbW92ZUNsYXNzKHQsYSksdGhpcy5fY29udGFpbmVyV2lkdGg9dGhpcy5fY29udGFpbmVyLm9mZnNldFdpZHRofSxfdXBkYXRlUG9zaXRpb246ZnVuY3Rpb24oKXtpZih0aGlzLl9tYXApe3ZhciB0PXRoaXMuX21hcC5sYXRMbmdUb0xheWVyUG9pbnQodGhpcy5fbGF0bG5nKSxlPXRoaXMuX2FuaW1hdGVkLGk9by5wb2ludCh0aGlzLm9wdGlvbnMub2Zmc2V0KTtlJiZvLkRvbVV0aWwuc2V0UG9zaXRpb24odGhpcy5fY29udGFpbmVyLHQpLHRoaXMuX2NvbnRhaW5lckJvdHRvbT0taS55LShlPzA6dC55KSx0aGlzLl9jb250YWluZXJMZWZ0PS1NYXRoLnJvdW5kKHRoaXMuX2NvbnRhaW5lcldpZHRoLzIpK2kueCsoZT8wOnQueCksdGhpcy5fY29udGFpbmVyLnN0eWxlLmJvdHRvbT10aGlzLl9jb250YWluZXJCb3R0b20rInB4Iix0aGlzLl9jb250YWluZXIuc3R5bGUubGVmdD10aGlzLl9jb250YWluZXJMZWZ0KyJweCJ9fSxfem9vbUFuaW1hdGlvbjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9tYXAuX2xhdExuZ1RvTmV3TGF5ZXJQb2ludCh0aGlzLl9sYXRsbmcsdC56b29tLHQuY2VudGVyKTtvLkRvbVV0aWwuc2V0UG9zaXRpb24odGhpcy5fY29udGFpbmVyLGUpfSxfYWRqdXN0UGFuOmZ1bmN0aW9uKCl7aWYodGhpcy5vcHRpb25zLmF1dG9QYW4pe3ZhciB0PXRoaXMuX21hcCxlPXRoaXMuX2NvbnRhaW5lci5vZmZzZXRIZWlnaHQsaT10aGlzLl9jb250YWluZXJXaWR0aCxuPW5ldyBvLlBvaW50KHRoaXMuX2NvbnRhaW5lckxlZnQsLWUtdGhpcy5fY29udGFpbmVyQm90dG9tKTt0aGlzLl9hbmltYXRlZCYmbi5fYWRkKG8uRG9tVXRpbC5nZXRQb3NpdGlvbih0aGlzLl9jb250YWluZXIpKTt2YXIgcz10LmxheWVyUG9pbnRUb0NvbnRhaW5lclBvaW50KG4pLGE9by5wb2ludCh0aGlzLm9wdGlvbnMuYXV0b1BhblBhZGRpbmcpLHI9by5wb2ludCh0aGlzLm9wdGlvbnMuYXV0b1BhblBhZGRpbmdUb3BMZWZ0fHxhKSxoPW8ucG9pbnQodGhpcy5vcHRpb25zLmF1dG9QYW5QYWRkaW5nQm90dG9tUmlnaHR8fGEpLGw9dC5nZXRTaXplKCksdT0wLGM9MDtzLngraStoLng+bC54JiYodT1zLngraS1sLngraC54KSxzLngtdS1yLng8MCYmKHU9cy54LXIueCkscy55K2UraC55PmwueSYmKGM9cy55K2UtbC55K2gueSkscy55LWMtci55PDAmJihjPXMueS1yLnkpLCh1fHxjKSYmdC5maXJlKCJhdXRvcGFuc3RhcnQiKS5wYW5CeShbdSxjXSl9fSxfb25DbG9zZUJ1dHRvbkNsaWNrOmZ1bmN0aW9uKHQpe3RoaXMuX2Nsb3NlKCksby5Eb21FdmVudC5zdG9wKHQpfX0pLG8ucG9wdXA9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IG8uUG9wdXAodCxlKX0sby5NYXAuaW5jbHVkZSh7b3BlblBvcHVwOmZ1bmN0aW9uKHQsZSxpKXtpZih0aGlzLmNsb3NlUG9wdXAoKSwhKHQgaW5zdGFuY2VvZiBvLlBvcHVwKSl7dmFyIG49dDt0PW5ldyBvLlBvcHVwKGkpLnNldExhdExuZyhlKS5zZXRDb250ZW50KG4pfXJldHVybiB0Ll9pc09wZW49ITAsdGhpcy5fcG9wdXA9dCx0aGlzLmFkZExheWVyKHQpfSxjbG9zZVBvcHVwOmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0IT09dGhpcy5fcG9wdXB8fCh0PXRoaXMuX3BvcHVwLHRoaXMuX3BvcHVwPW51bGwpLHQmJih0aGlzLnJlbW92ZUxheWVyKHQpLHQuX2lzT3Blbj0hMSksdGhpc319KSxvLk1hcmtlci5pbmNsdWRlKHtvcGVuUG9wdXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcG9wdXAmJnRoaXMuX21hcCYmIXRoaXMuX21hcC5oYXNMYXllcih0aGlzLl9wb3B1cCkmJih0aGlzLl9wb3B1cC5zZXRMYXRMbmcodGhpcy5fbGF0bG5nKSx0aGlzLl9tYXAub3BlblBvcHVwKHRoaXMuX3BvcHVwKSksdGhpc30sY2xvc2VQb3B1cDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wb3B1cCYmdGhpcy5fcG9wdXAuX2Nsb3NlKCksdGhpc30sdG9nZ2xlUG9wdXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcG9wdXAmJih0aGlzLl9wb3B1cC5faXNPcGVuP3RoaXMuY2xvc2VQb3B1cCgpOnRoaXMub3BlblBvcHVwKCkpLHRoaXN9LGJpbmRQb3B1cDpmdW5jdGlvbih0LGUpe3ZhciBpPW8ucG9pbnQodGhpcy5vcHRpb25zLmljb24ub3B0aW9ucy5wb3B1cEFuY2hvcnx8WzAsMF0pO3JldHVybiBpPWkuYWRkKG8uUG9wdXAucHJvdG90eXBlLm9wdGlvbnMub2Zmc2V0KSxlJiZlLm9mZnNldCYmKGk9aS5hZGQoZS5vZmZzZXQpKSxlPW8uZXh0ZW5kKHtvZmZzZXQ6aX0sZSksdGhpcy5fcG9wdXBIYW5kbGVyc0FkZGVkfHwodGhpcy5vbigiY2xpY2siLHRoaXMudG9nZ2xlUG9wdXAsdGhpcykub24oInJlbW92ZSIsdGhpcy5jbG9zZVBvcHVwLHRoaXMpLm9uKCJtb3ZlIix0aGlzLl9tb3ZlUG9wdXAsdGhpcyksdGhpcy5fcG9wdXBIYW5kbGVyc0FkZGVkPSEwKSx0IGluc3RhbmNlb2Ygby5Qb3B1cD8oby5zZXRPcHRpb25zKHQsZSksdGhpcy5fcG9wdXA9dCk6dGhpcy5fcG9wdXA9bmV3IG8uUG9wdXAoZSx0aGlzKS5zZXRDb250ZW50KHQpLHRoaXN9LHNldFBvcHVwQ29udGVudDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcG9wdXAmJnRoaXMuX3BvcHVwLnNldENvbnRlbnQodCksdGhpc30sdW5iaW5kUG9wdXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcG9wdXAmJih0aGlzLl9wb3B1cD1udWxsLHRoaXMub2ZmKCJjbGljayIsdGhpcy50b2dnbGVQb3B1cCx0aGlzKS5vZmYoInJlbW92ZSIsdGhpcy5jbG9zZVBvcHVwLHRoaXMpLm9mZigibW92ZSIsdGhpcy5fbW92ZVBvcHVwLHRoaXMpLHRoaXMuX3BvcHVwSGFuZGxlcnNBZGRlZD0hMSksdGhpc30sZ2V0UG9wdXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcG9wdXB9LF9tb3ZlUG9wdXA6ZnVuY3Rpb24odCl7dGhpcy5fcG9wdXAuc2V0TGF0TG5nKHQubGF0bG5nKX19KSxvLkxheWVyR3JvdXA9by5DbGFzcy5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5fbGF5ZXJzPXt9O3ZhciBlLGk7aWYodClmb3IoZT0wLGk9dC5sZW5ndGg7aT5lO2UrKyl0aGlzLmFkZExheWVyKHRbZV0pfSxhZGRMYXllcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldExheWVySWQodCk7cmV0dXJuIHRoaXMuX2xheWVyc1tlXT10LHRoaXMuX21hcCYmdGhpcy5fbWFwLmFkZExheWVyKHQpLHRoaXN9LHJlbW92ZUxheWVyOmZ1bmN0aW9uKHQpe3ZhciBlPXQgaW4gdGhpcy5fbGF5ZXJzP3Q6dGhpcy5nZXRMYXllcklkKHQpO3JldHVybiB0aGlzLl9tYXAmJnRoaXMuX2xheWVyc1tlXSYmdGhpcy5fbWFwLnJlbW92ZUxheWVyKHRoaXMuX2xheWVyc1tlXSksZGVsZXRlIHRoaXMuX2xheWVyc1tlXSx0aGlzfSxoYXNMYXllcjpmdW5jdGlvbih0KXtyZXR1cm4gdD90IGluIHRoaXMuX2xheWVyc3x8dGhpcy5nZXRMYXllcklkKHQpaW4gdGhpcy5fbGF5ZXJzOiExfSxjbGVhckxheWVyczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2hMYXllcih0aGlzLnJlbW92ZUxheWVyLHRoaXMpLHRoaXN9LGludm9rZTpmdW5jdGlvbih0KXt2YXIgZSxpLG49QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO2ZvcihlIGluIHRoaXMuX2xheWVycylpPXRoaXMuX2xheWVyc1tlXSxpW3RdJiZpW3RdLmFwcGx5KGksbik7cmV0dXJuIHRoaXN9LG9uQWRkOmZ1bmN0aW9uKHQpe3RoaXMuX21hcD10LHRoaXMuZWFjaExheWVyKHQuYWRkTGF5ZXIsdCl9LG9uUmVtb3ZlOmZ1bmN0aW9uKHQpe3RoaXMuZWFjaExheWVyKHQucmVtb3ZlTGF5ZXIsdCksdGhpcy5fbWFwPW51bGx9LGFkZFRvOmZ1bmN0aW9uKHQpe3JldHVybiB0LmFkZExheWVyKHRoaXMpLHRoaXN9LGVhY2hMYXllcjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaSBpbiB0aGlzLl9sYXllcnMpdC5jYWxsKGUsdGhpcy5fbGF5ZXJzW2ldKTtyZXR1cm4gdGhpc30sZ2V0TGF5ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2xheWVyc1t0XX0sZ2V0TGF5ZXJzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMuX2xheWVycyl0LnB1c2godGhpcy5fbGF5ZXJzW2VdKTtyZXR1cm4gdH0sc2V0WkluZGV4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmludm9rZSgic2V0WkluZGV4Iix0KX0sZ2V0TGF5ZXJJZDpmdW5jdGlvbih0KXtyZXR1cm4gby5zdGFtcCh0KX19KSxvLmxheWVyR3JvdXA9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBvLkxheWVyR3JvdXAodCl9LG8uRmVhdHVyZUdyb3VwPW8uTGF5ZXJHcm91cC5leHRlbmQoe2luY2x1ZGVzOm8uTWl4aW4uRXZlbnRzLHN0YXRpY3M6e0VWRU5UUzoiY2xpY2sgZGJsY2xpY2sgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlbW92ZSBjb250ZXh0bWVudSBwb3B1cG9wZW4gcG9wdXBjbG9zZSJ9LGFkZExheWVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmhhc0xheWVyKHQpP3RoaXM6KCJvbiJpbiB0JiZ0Lm9uKG8uRmVhdHVyZUdyb3VwLkVWRU5UUyx0aGlzLl9wcm9wYWdhdGVFdmVudCx0aGlzKSxvLkxheWVyR3JvdXAucHJvdG90eXBlLmFkZExheWVyLmNhbGwodGhpcyx0KSx0aGlzLl9wb3B1cENvbnRlbnQmJnQuYmluZFBvcHVwJiZ0LmJpbmRQb3B1cCh0aGlzLl9wb3B1cENvbnRlbnQsdGhpcy5fcG9wdXBPcHRpb25zKSx0aGlzLmZpcmUoImxheWVyYWRkIix7bGF5ZXI6dH0pKX0scmVtb3ZlTGF5ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaGFzTGF5ZXIodCk/KHQgaW4gdGhpcy5fbGF5ZXJzJiYodD10aGlzLl9sYXllcnNbdF0pLHQub2ZmKG8uRmVhdHVyZUdyb3VwLkVWRU5UUyx0aGlzLl9wcm9wYWdhdGVFdmVudCx0aGlzKSxvLkxheWVyR3JvdXAucHJvdG90eXBlLnJlbW92ZUxheWVyLmNhbGwodGhpcyx0KSx0aGlzLl9wb3B1cENvbnRlbnQmJnRoaXMuaW52b2tlKCJ1bmJpbmRQb3B1cCIpLHRoaXMuZmlyZSgibGF5ZXJyZW1vdmUiLHtsYXllcjp0fSkpOnRoaXN9LGJpbmRQb3B1cDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9wb3B1cENvbnRlbnQ9dCx0aGlzLl9wb3B1cE9wdGlvbnM9ZSx0aGlzLmludm9rZSgiYmluZFBvcHVwIix0LGUpfSxvcGVuUG9wdXA6ZnVuY3Rpb24odCl7Zm9yKHZhciBlIGluIHRoaXMuX2xheWVycyl7dGhpcy5fbGF5ZXJzW2VdLm9wZW5Qb3B1cCh0KTticmVha31yZXR1cm4gdGhpc30sc2V0U3R5bGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaW52b2tlKCJzZXRTdHlsZSIsdCl9LGJyaW5nVG9Gcm9udDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmludm9rZSgiYnJpbmdUb0Zyb250Iil9LGJyaW5nVG9CYWNrOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW52b2tlKCJicmluZ1RvQmFjayIpfSxnZXRCb3VuZHM6ZnVuY3Rpb24oKXt2YXIgdD1uZXcgby5MYXRMbmdCb3VuZHM7cmV0dXJuIHRoaXMuZWFjaExheWVyKGZ1bmN0aW9uKGUpe3QuZXh0ZW5kKGUgaW5zdGFuY2VvZiBvLk1hcmtlcj9lLmdldExhdExuZygpOmUuZ2V0Qm91bmRzKCkpfSksdH0sX3Byb3BhZ2F0ZUV2ZW50OmZ1bmN0aW9uKHQpe3Q9by5leHRlbmQoe2xheWVyOnQudGFyZ2V0LHRhcmdldDp0aGlzfSx0KSx0aGlzLmZpcmUodC50eXBlLHQpfX0pLG8uZmVhdHVyZUdyb3VwPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgby5GZWF0dXJlR3JvdXAodCl9LG8uUGF0aD1vLkNsYXNzLmV4dGVuZCh7aW5jbHVkZXM6W28uTWl4aW4uRXZlbnRzXSxzdGF0aWNzOntDTElQX1BBRERJTkc6ZnVuY3Rpb24oKXt2YXIgZT1vLkJyb3dzZXIubW9iaWxlPzEyODA6MmUzLGk9KGUvTWF0aC5tYXgodC5vdXRlcldpZHRoLHQub3V0ZXJIZWlnaHQpLTEpLzI7cmV0dXJuIE1hdGgubWF4KDAsTWF0aC5taW4oLjUsaSkpfSgpfSxvcHRpb25zOntzdHJva2U6ITAsY29sb3I6IiMwMDMzZmYiLGRhc2hBcnJheTpudWxsLGxpbmVDYXA6bnVsbCxsaW5lSm9pbjpudWxsLHdlaWdodDo1LG9wYWNpdHk6LjUsZmlsbDohMSxmaWxsQ29sb3I6bnVsbCxmaWxsT3BhY2l0eTouMixjbGlja2FibGU6ITB9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7by5zZXRPcHRpb25zKHRoaXMsdCl9LG9uQWRkOmZ1bmN0aW9uKHQpe3RoaXMuX21hcD10LHRoaXMuX2NvbnRhaW5lcnx8KHRoaXMuX2luaXRFbGVtZW50cygpLHRoaXMuX2luaXRFdmVudHMoKSksdGhpcy5wcm9qZWN0TGF0bG5ncygpLHRoaXMuX3VwZGF0ZVBhdGgoKSx0aGlzLl9jb250YWluZXImJnRoaXMuX21hcC5fcGF0aFJvb3QuYXBwZW5kQ2hpbGQodGhpcy5fY29udGFpbmVyKSx0aGlzLmZpcmUoImFkZCIpLHQub24oe3ZpZXdyZXNldDp0aGlzLnByb2plY3RMYXRsbmdzLG1vdmVlbmQ6dGhpcy5fdXBkYXRlUGF0aH0sdGhpcyl9LGFkZFRvOmZ1bmN0aW9uKHQpe3JldHVybiB0LmFkZExheWVyKHRoaXMpLHRoaXN9LG9uUmVtb3ZlOmZ1bmN0aW9uKHQpe3QuX3BhdGhSb290LnJlbW92ZUNoaWxkKHRoaXMuX2NvbnRhaW5lciksdGhpcy5maXJlKCJyZW1vdmUiKSx0aGlzLl9tYXA9bnVsbCxvLkJyb3dzZXIudm1sJiYodGhpcy5fY29udGFpbmVyPW51bGwsdGhpcy5fc3Ryb2tlPW51bGwsdGhpcy5fZmlsbD1udWxsKSx0Lm9mZih7dmlld3Jlc2V0OnRoaXMucHJvamVjdExhdGxuZ3MsbW92ZWVuZDp0aGlzLl91cGRhdGVQYXRofSx0aGlzKX0scHJvamVjdExhdGxuZ3M6ZnVuY3Rpb24oKXt9LHNldFN0eWxlOmZ1bmN0aW9uKHQpe3JldHVybiBvLnNldE9wdGlvbnModGhpcyx0KSx0aGlzLl9jb250YWluZXImJnRoaXMuX3VwZGF0ZVN0eWxlKCksdGhpc30scmVkcmF3OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21hcCYmKHRoaXMucHJvamVjdExhdGxuZ3MoKSx0aGlzLl91cGRhdGVQYXRoKCkpLHRoaXN9fSksby5NYXAuaW5jbHVkZSh7X3VwZGF0ZVBhdGhWaWV3cG9ydDpmdW5jdGlvbigpe3ZhciB0PW8uUGF0aC5DTElQX1BBRERJTkcsZT10aGlzLmdldFNpemUoKSxpPW8uRG9tVXRpbC5nZXRQb3NpdGlvbih0aGlzLl9tYXBQYW5lKSxuPWkubXVsdGlwbHlCeSgtMSkuX3N1YnRyYWN0KGUubXVsdGlwbHlCeSh0KS5fcm91bmQoKSkscz1uLmFkZChlLm11bHRpcGx5QnkoMSsyKnQpLl9yb3VuZCgpKTt0aGlzLl9wYXRoVmlld3BvcnQ9bmV3IG8uQm91bmRzKG4scyl9fSksby5QYXRoLlNWR19OUz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLG8uQnJvd3Nlci5zdmc9ISghZS5jcmVhdGVFbGVtZW50TlN8fCFlLmNyZWF0ZUVsZW1lbnROUyhvLlBhdGguU1ZHX05TLCJzdmciKS5jcmVhdGVTVkdSZWN0KSxvLlBhdGg9by5QYXRoLmV4dGVuZCh7c3RhdGljczp7U1ZHOm8uQnJvd3Nlci5zdmd9LGJyaW5nVG9Gcm9udDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcC5fcGF0aFJvb3QsZT10aGlzLl9jb250YWluZXI7cmV0dXJuIGUmJnQubGFzdENoaWxkIT09ZSYmdC5hcHBlbmRDaGlsZChlKSx0aGlzfSxicmluZ1RvQmFjazpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcC5fcGF0aFJvb3QsZT10aGlzLl9jb250YWluZXIsaT10LmZpcnN0Q2hpbGQ7cmV0dXJuIGUmJmkhPT1lJiZ0Lmluc2VydEJlZm9yZShlLGkpLHRoaXN9LGdldFBhdGhTdHJpbmc6ZnVuY3Rpb24oKXt9LF9jcmVhdGVFbGVtZW50OmZ1bmN0aW9uKHQpe3JldHVybiBlLmNyZWF0ZUVsZW1lbnROUyhvLlBhdGguU1ZHX05TLHQpfSxfaW5pdEVsZW1lbnRzOmZ1bmN0aW9uKCl7dGhpcy5fbWFwLl9pbml0UGF0aFJvb3QoKSx0aGlzLl9pbml0UGF0aCgpLHRoaXMuX2luaXRTdHlsZSgpfSxfaW5pdFBhdGg6ZnVuY3Rpb24oKXt0aGlzLl9jb250YWluZXI9dGhpcy5fY3JlYXRlRWxlbWVudCgiZyIpLHRoaXMuX3BhdGg9dGhpcy5fY3JlYXRlRWxlbWVudCgicGF0aCIpLHRoaXMub3B0aW9ucy5jbGFzc05hbWUmJm8uRG9tVXRpbC5hZGRDbGFzcyh0aGlzLl9wYXRoLHRoaXMub3B0aW9ucy5jbGFzc05hbWUpLHRoaXMuX2NvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl9wYXRoKX0sX2luaXRTdHlsZTpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5zdHJva2UmJih0aGlzLl9wYXRoLnNldEF0dHJpYnV0ZSgic3Ryb2tlLWxpbmVqb2luIiwicm91bmQiKSx0aGlzLl9wYXRoLnNldEF0dHJpYnV0ZSgic3Ryb2tlLWxpbmVjYXAiLCJyb3VuZCIpKSx0aGlzLm9wdGlvbnMuZmlsbCYmdGhpcy5fcGF0aC5zZXRBdHRyaWJ1dGUoImZpbGwtcnVsZSIsImV2ZW5vZGQiKSx0aGlzLm9wdGlvbnMucG9pbnRlckV2ZW50cyYmdGhpcy5fcGF0aC5zZXRBdHRyaWJ1dGUoInBvaW50ZXItZXZlbnRzIix0aGlzLm9wdGlvbnMucG9pbnRlckV2ZW50cyksdGhpcy5vcHRpb25zLmNsaWNrYWJsZXx8dGhpcy5vcHRpb25zLnBvaW50ZXJFdmVudHN8fHRoaXMuX3BhdGguc2V0QXR0cmlidXRlKCJwb2ludGVyLWV2ZW50cyIsIm5vbmUiKSx0aGlzLl91cGRhdGVTdHlsZSgpfSxfdXBkYXRlU3R5bGU6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuc3Ryb2tlPyh0aGlzLl9wYXRoLnNldEF0dHJpYnV0ZSgic3Ryb2tlIix0aGlzLm9wdGlvbnMuY29sb3IpLHRoaXMuX3BhdGguc2V0QXR0cmlidXRlKCJzdHJva2Utb3BhY2l0eSIsdGhpcy5vcHRpb25zLm9wYWNpdHkpLHRoaXMuX3BhdGguc2V0QXR0cmlidXRlKCJzdHJva2Utd2lkdGgiLHRoaXMub3B0aW9ucy53ZWlnaHQpLHRoaXMub3B0aW9ucy5kYXNoQXJyYXk/dGhpcy5fcGF0aC5zZXRBdHRyaWJ1dGUoInN0cm9rZS1kYXNoYXJyYXkiLHRoaXMub3B0aW9ucy5kYXNoQXJyYXkpOnRoaXMuX3BhdGgucmVtb3ZlQXR0cmlidXRlKCJzdHJva2UtZGFzaGFycmF5IiksdGhpcy5vcHRpb25zLmxpbmVDYXAmJnRoaXMuX3BhdGguc2V0QXR0cmlidXRlKCJzdHJva2UtbGluZWNhcCIsdGhpcy5vcHRpb25zLmxpbmVDYXApLHRoaXMub3B0aW9ucy5saW5lSm9pbiYmdGhpcy5fcGF0aC5zZXRBdHRyaWJ1dGUoInN0cm9rZS1saW5lam9pbiIsdGhpcy5vcHRpb25zLmxpbmVKb2luKSk6dGhpcy5fcGF0aC5zZXRBdHRyaWJ1dGUoInN0cm9rZSIsIm5vbmUiKSx0aGlzLm9wdGlvbnMuZmlsbD8odGhpcy5fcGF0aC5zZXRBdHRyaWJ1dGUoImZpbGwiLHRoaXMub3B0aW9ucy5maWxsQ29sb3J8fHRoaXMub3B0aW9ucy5jb2xvciksdGhpcy5fcGF0aC5zZXRBdHRyaWJ1dGUoImZpbGwtb3BhY2l0eSIsdGhpcy5vcHRpb25zLmZpbGxPcGFjaXR5KSk6dGhpcy5fcGF0aC5zZXRBdHRyaWJ1dGUoImZpbGwiLCJub25lIil9LF91cGRhdGVQYXRoOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRQYXRoU3RyaW5nKCk7dHx8KHQ9Ik0wIDAiKSx0aGlzLl9wYXRoLnNldEF0dHJpYnV0ZSgiZCIsdCl9LF9pbml0RXZlbnRzOmZ1bmN0aW9uKCl7aWYodGhpcy5vcHRpb25zLmNsaWNrYWJsZSl7KG8uQnJvd3Nlci5zdmd8fCFvLkJyb3dzZXIudm1sKSYmby5Eb21VdGlsLmFkZENsYXNzKHRoaXMuX3BhdGgsImxlYWZsZXQtY2xpY2thYmxlIiksby5Eb21FdmVudC5vbih0aGlzLl9jb250YWluZXIsImNsaWNrIix0aGlzLl9vbk1vdXNlQ2xpY2ssdGhpcyk7Zm9yKHZhciB0PVsiZGJsY2xpY2siLCJtb3VzZWRvd24iLCJtb3VzZW92ZXIiLCJtb3VzZW91dCIsIm1vdXNlbW92ZSIsImNvbnRleHRtZW51Il0sZT0wO2U8dC5sZW5ndGg7ZSsrKW8uRG9tRXZlbnQub24odGhpcy5fY29udGFpbmVyLHRbZV0sdGhpcy5fZmlyZU1vdXNlRXZlbnQsdGhpcyl9fSxfb25Nb3VzZUNsaWNrOmZ1bmN0aW9uKHQpe3RoaXMuX21hcC5kcmFnZ2luZyYmdGhpcy5fbWFwLmRyYWdnaW5nLm1vdmVkKCl8fHRoaXMuX2ZpcmVNb3VzZUV2ZW50KHQpfSxfZmlyZU1vdXNlRXZlbnQ6ZnVuY3Rpb24odCl7aWYodGhpcy5oYXNFdmVudExpc3RlbmVycyh0LnR5cGUpKXt2YXIgZT10aGlzLl9tYXAsaT1lLm1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50KHQpLG49ZS5jb250YWluZXJQb2ludFRvTGF5ZXJQb2ludChpKSxzPWUubGF5ZXJQb2ludFRvTGF0TG5nKG4pO3RoaXMuZmlyZSh0LnR5cGUse2xhdGxuZzpzLGxheWVyUG9pbnQ6bixjb250YWluZXJQb2ludDppLG9yaWdpbmFsRXZlbnQ6dH0pLCJjb250ZXh0bWVudSI9PT10LnR5cGUmJm8uRG9tRXZlbnQucHJldmVudERlZmF1bHQodCksIm1vdXNlbW92ZSIhPT10LnR5cGUmJm8uRG9tRXZlbnQuc3RvcFByb3BhZ2F0aW9uKHQpfX19KSxvLk1hcC5pbmNsdWRlKHtfaW5pdFBhdGhSb290OmZ1bmN0aW9uKCl7dGhpcy5fcGF0aFJvb3R8fCh0aGlzLl9wYXRoUm9vdD1vLlBhdGgucHJvdG90eXBlLl9jcmVhdGVFbGVtZW50KCJzdmciKSx0aGlzLl9wYW5lcy5vdmVybGF5UGFuZS5hcHBlbmRDaGlsZCh0aGlzLl9wYXRoUm9vdCksdGhpcy5vcHRpb25zLnpvb21BbmltYXRpb24mJm8uQnJvd3Nlci5hbnkzZD8oby5Eb21VdGlsLmFkZENsYXNzKHRoaXMuX3BhdGhSb290LCJsZWFmbGV0LXpvb20tYW5pbWF0ZWQiKSx0aGlzLm9uKHt6b29tYW5pbTp0aGlzLl9hbmltYXRlUGF0aFpvb20sem9vbWVuZDp0aGlzLl9lbmRQYXRoWm9vbX0pKTpvLkRvbVV0aWwuYWRkQ2xhc3ModGhpcy5fcGF0aFJvb3QsImxlYWZsZXQtem9vbS1oaWRlIiksdGhpcy5vbigibW92ZWVuZCIsdGhpcy5fdXBkYXRlU3ZnVmlld3BvcnQpLHRoaXMuX3VwZGF0ZVN2Z1ZpZXdwb3J0KCkpCn0sX2FuaW1hdGVQYXRoWm9vbTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldFpvb21TY2FsZSh0Lnpvb20pLGk9dGhpcy5fZ2V0Q2VudGVyT2Zmc2V0KHQuY2VudGVyKS5fbXVsdGlwbHlCeSgtZSkuX2FkZCh0aGlzLl9wYXRoVmlld3BvcnQubWluKTt0aGlzLl9wYXRoUm9vdC5zdHlsZVtvLkRvbVV0aWwuVFJBTlNGT1JNXT1vLkRvbVV0aWwuZ2V0VHJhbnNsYXRlU3RyaW5nKGkpKyIgc2NhbGUoIitlKyIpICIsdGhpcy5fcGF0aFpvb21pbmc9ITB9LF9lbmRQYXRoWm9vbTpmdW5jdGlvbigpe3RoaXMuX3BhdGhab29taW5nPSExfSxfdXBkYXRlU3ZnVmlld3BvcnQ6ZnVuY3Rpb24oKXtpZighdGhpcy5fcGF0aFpvb21pbmcpe3RoaXMuX3VwZGF0ZVBhdGhWaWV3cG9ydCgpO3ZhciB0PXRoaXMuX3BhdGhWaWV3cG9ydCxlPXQubWluLGk9dC5tYXgsbj1pLngtZS54LHM9aS55LWUueSxhPXRoaXMuX3BhdGhSb290LHI9dGhpcy5fcGFuZXMub3ZlcmxheVBhbmU7by5Ccm93c2VyLm1vYmlsZVdlYmtpdCYmci5yZW1vdmVDaGlsZChhKSxvLkRvbVV0aWwuc2V0UG9zaXRpb24oYSxlKSxhLnNldEF0dHJpYnV0ZSgid2lkdGgiLG4pLGEuc2V0QXR0cmlidXRlKCJoZWlnaHQiLHMpLGEuc2V0QXR0cmlidXRlKCJ2aWV3Qm94IixbZS54LGUueSxuLHNdLmpvaW4oIiAiKSksby5Ccm93c2VyLm1vYmlsZVdlYmtpdCYmci5hcHBlbmRDaGlsZChhKX19fSksby5QYXRoLmluY2x1ZGUoe2JpbmRQb3B1cDpmdW5jdGlvbih0LGUpe3JldHVybiB0IGluc3RhbmNlb2Ygby5Qb3B1cD90aGlzLl9wb3B1cD10OigoIXRoaXMuX3BvcHVwfHxlKSYmKHRoaXMuX3BvcHVwPW5ldyBvLlBvcHVwKGUsdGhpcykpLHRoaXMuX3BvcHVwLnNldENvbnRlbnQodCkpLHRoaXMuX3BvcHVwSGFuZGxlcnNBZGRlZHx8KHRoaXMub24oImNsaWNrIix0aGlzLl9vcGVuUG9wdXAsdGhpcykub24oInJlbW92ZSIsdGhpcy5jbG9zZVBvcHVwLHRoaXMpLHRoaXMuX3BvcHVwSGFuZGxlcnNBZGRlZD0hMCksdGhpc30sdW5iaW5kUG9wdXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcG9wdXAmJih0aGlzLl9wb3B1cD1udWxsLHRoaXMub2ZmKCJjbGljayIsdGhpcy5fb3BlblBvcHVwKS5vZmYoInJlbW92ZSIsdGhpcy5jbG9zZVBvcHVwKSx0aGlzLl9wb3B1cEhhbmRsZXJzQWRkZWQ9ITEpLHRoaXN9LG9wZW5Qb3B1cDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcG9wdXAmJih0PXR8fHRoaXMuX2xhdGxuZ3x8dGhpcy5fbGF0bG5nc1tNYXRoLmZsb29yKHRoaXMuX2xhdGxuZ3MubGVuZ3RoLzIpXSx0aGlzLl9vcGVuUG9wdXAoe2xhdGxuZzp0fSkpLHRoaXN9LGNsb3NlUG9wdXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcG9wdXAmJnRoaXMuX3BvcHVwLl9jbG9zZSgpLHRoaXN9LF9vcGVuUG9wdXA6ZnVuY3Rpb24odCl7dGhpcy5fcG9wdXAuc2V0TGF0TG5nKHQubGF0bG5nKSx0aGlzLl9tYXAub3BlblBvcHVwKHRoaXMuX3BvcHVwKX19KSxvLkJyb3dzZXIudm1sPSFvLkJyb3dzZXIuc3ZnJiZmdW5jdGlvbigpe3RyeXt2YXIgdD1lLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3QuaW5uZXJIVE1MPSc8djpzaGFwZSBhZGo9IjEiLz4nO3ZhciBpPXQuZmlyc3RDaGlsZDtyZXR1cm4gaS5zdHlsZS5iZWhhdmlvcj0idXJsKCNkZWZhdWx0I1ZNTCkiLGkmJiJvYmplY3QiPT10eXBlb2YgaS5hZGp9Y2F0Y2gobil7cmV0dXJuITF9fSgpLG8uUGF0aD1vLkJyb3dzZXIuc3ZnfHwhby5Ccm93c2VyLnZtbD9vLlBhdGg6by5QYXRoLmV4dGVuZCh7c3RhdGljczp7Vk1MOiEwLENMSVBfUEFERElORzouMDJ9LF9jcmVhdGVFbGVtZW50OmZ1bmN0aW9uKCl7dHJ5e3JldHVybiBlLm5hbWVzcGFjZXMuYWRkKCJsdm1sIiwidXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiKSxmdW5jdGlvbih0KXtyZXR1cm4gZS5jcmVhdGVFbGVtZW50KCI8bHZtbDoiK3QrJyBjbGFzcz0ibHZtbCI+Jyl9fWNhdGNoKHQpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5jcmVhdGVFbGVtZW50KCI8Iit0KycgeG1sbnM9InVybjpzY2hlbWFzLW1pY3Jvc29mdC5jb206dm1sIiBjbGFzcz0ibHZtbCI+Jyl9fX0oKSxfaW5pdFBhdGg6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9jb250YWluZXI9dGhpcy5fY3JlYXRlRWxlbWVudCgic2hhcGUiKTtvLkRvbVV0aWwuYWRkQ2xhc3ModCwibGVhZmxldC12bWwtc2hhcGUiKyh0aGlzLm9wdGlvbnMuY2xhc3NOYW1lPyIgIit0aGlzLm9wdGlvbnMuY2xhc3NOYW1lOiIiKSksdGhpcy5vcHRpb25zLmNsaWNrYWJsZSYmby5Eb21VdGlsLmFkZENsYXNzKHQsImxlYWZsZXQtY2xpY2thYmxlIiksdC5jb29yZHNpemU9IjEgMSIsdGhpcy5fcGF0aD10aGlzLl9jcmVhdGVFbGVtZW50KCJwYXRoIiksdC5hcHBlbmRDaGlsZCh0aGlzLl9wYXRoKSx0aGlzLl9tYXAuX3BhdGhSb290LmFwcGVuZENoaWxkKHQpfSxfaW5pdFN0eWxlOmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlU3R5bGUoKX0sX3VwZGF0ZVN0eWxlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fc3Ryb2tlLGU9dGhpcy5fZmlsbCxpPXRoaXMub3B0aW9ucyxuPXRoaXMuX2NvbnRhaW5lcjtuLnN0cm9rZWQ9aS5zdHJva2Usbi5maWxsZWQ9aS5maWxsLGkuc3Ryb2tlPyh0fHwodD10aGlzLl9zdHJva2U9dGhpcy5fY3JlYXRlRWxlbWVudCgic3Ryb2tlIiksdC5lbmRjYXA9InJvdW5kIixuLmFwcGVuZENoaWxkKHQpKSx0LndlaWdodD1pLndlaWdodCsicHgiLHQuY29sb3I9aS5jb2xvcix0Lm9wYWNpdHk9aS5vcGFjaXR5LHQuZGFzaFN0eWxlPWkuZGFzaEFycmF5P28uVXRpbC5pc0FycmF5KGkuZGFzaEFycmF5KT9pLmRhc2hBcnJheS5qb2luKCIgIik6aS5kYXNoQXJyYXkucmVwbGFjZSgvKCAqLCAqKS9nLCIgIik6IiIsaS5saW5lQ2FwJiYodC5lbmRjYXA9aS5saW5lQ2FwLnJlcGxhY2UoImJ1dHQiLCJmbGF0IikpLGkubGluZUpvaW4mJih0LmpvaW5zdHlsZT1pLmxpbmVKb2luKSk6dCYmKG4ucmVtb3ZlQ2hpbGQodCksdGhpcy5fc3Ryb2tlPW51bGwpLGkuZmlsbD8oZXx8KGU9dGhpcy5fZmlsbD10aGlzLl9jcmVhdGVFbGVtZW50KCJmaWxsIiksbi5hcHBlbmRDaGlsZChlKSksZS5jb2xvcj1pLmZpbGxDb2xvcnx8aS5jb2xvcixlLm9wYWNpdHk9aS5maWxsT3BhY2l0eSk6ZSYmKG4ucmVtb3ZlQ2hpbGQoZSksdGhpcy5fZmlsbD1udWxsKX0sX3VwZGF0ZVBhdGg6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9jb250YWluZXIuc3R5bGU7dC5kaXNwbGF5PSJub25lIix0aGlzLl9wYXRoLnY9dGhpcy5nZXRQYXRoU3RyaW5nKCkrIiAiLHQuZGlzcGxheT0iIn19KSxvLk1hcC5pbmNsdWRlKG8uQnJvd3Nlci5zdmd8fCFvLkJyb3dzZXIudm1sP3t9OntfaW5pdFBhdGhSb290OmZ1bmN0aW9uKCl7aWYoIXRoaXMuX3BhdGhSb290KXt2YXIgdD10aGlzLl9wYXRoUm9vdD1lLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3QuY2xhc3NOYW1lPSJsZWFmbGV0LXZtbC1jb250YWluZXIiLHRoaXMuX3BhbmVzLm92ZXJsYXlQYW5lLmFwcGVuZENoaWxkKHQpLHRoaXMub24oIm1vdmVlbmQiLHRoaXMuX3VwZGF0ZVBhdGhWaWV3cG9ydCksdGhpcy5fdXBkYXRlUGF0aFZpZXdwb3J0KCl9fX0pLG8uQnJvd3Nlci5jYW52YXM9ZnVuY3Rpb24oKXtyZXR1cm4hIWUuY3JlYXRlRWxlbWVudCgiY2FudmFzIikuZ2V0Q29udGV4dH0oKSxvLlBhdGg9by5QYXRoLlNWRyYmIXQuTF9QUkVGRVJfQ0FOVkFTfHwhby5Ccm93c2VyLmNhbnZhcz9vLlBhdGg6by5QYXRoLmV4dGVuZCh7c3RhdGljczp7Q0FOVkFTOiEwLFNWRzohMX0scmVkcmF3OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21hcCYmKHRoaXMucHJvamVjdExhdGxuZ3MoKSx0aGlzLl9yZXF1ZXN0VXBkYXRlKCkpLHRoaXN9LHNldFN0eWxlOmZ1bmN0aW9uKHQpe3JldHVybiBvLnNldE9wdGlvbnModGhpcyx0KSx0aGlzLl9tYXAmJih0aGlzLl91cGRhdGVTdHlsZSgpLHRoaXMuX3JlcXVlc3RVcGRhdGUoKSksdGhpc30sb25SZW1vdmU6ZnVuY3Rpb24odCl7dC5vZmYoInZpZXdyZXNldCIsdGhpcy5wcm9qZWN0TGF0bG5ncyx0aGlzKS5vZmYoIm1vdmVlbmQiLHRoaXMuX3VwZGF0ZVBhdGgsdGhpcyksdGhpcy5vcHRpb25zLmNsaWNrYWJsZSYmKHRoaXMuX21hcC5vZmYoImNsaWNrIix0aGlzLl9vbkNsaWNrLHRoaXMpLHRoaXMuX21hcC5vZmYoIm1vdXNlbW92ZSIsdGhpcy5fb25Nb3VzZU1vdmUsdGhpcykpLHRoaXMuX3JlcXVlc3RVcGRhdGUoKSx0aGlzLmZpcmUoInJlbW92ZSIpLHRoaXMuX21hcD1udWxsfSxfcmVxdWVzdFVwZGF0ZTpmdW5jdGlvbigpe3RoaXMuX21hcCYmIW8uUGF0aC5fdXBkYXRlUmVxdWVzdCYmKG8uUGF0aC5fdXBkYXRlUmVxdWVzdD1vLlV0aWwucmVxdWVzdEFuaW1GcmFtZSh0aGlzLl9maXJlTWFwTW92ZUVuZCx0aGlzLl9tYXApKX0sX2ZpcmVNYXBNb3ZlRW5kOmZ1bmN0aW9uKCl7by5QYXRoLl91cGRhdGVSZXF1ZXN0PW51bGwsdGhpcy5maXJlKCJtb3ZlZW5kIil9LF9pbml0RWxlbWVudHM6ZnVuY3Rpb24oKXt0aGlzLl9tYXAuX2luaXRQYXRoUm9vdCgpLHRoaXMuX2N0eD10aGlzLl9tYXAuX2NhbnZhc0N0eH0sX3VwZGF0ZVN0eWxlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zO3Quc3Ryb2tlJiYodGhpcy5fY3R4LmxpbmVXaWR0aD10LndlaWdodCx0aGlzLl9jdHguc3Ryb2tlU3R5bGU9dC5jb2xvciksdC5maWxsJiYodGhpcy5fY3R4LmZpbGxTdHlsZT10LmZpbGxDb2xvcnx8dC5jb2xvcil9LF9kcmF3UGF0aDpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHMsYTtmb3IodGhpcy5fY3R4LmJlZ2luUGF0aCgpLHQ9MCxpPXRoaXMuX3BhcnRzLmxlbmd0aDtpPnQ7dCsrKXtmb3IoZT0wLG49dGhpcy5fcGFydHNbdF0ubGVuZ3RoO24+ZTtlKyspcz10aGlzLl9wYXJ0c1t0XVtlXSxhPSgwPT09ZT8ibW92ZSI6ImxpbmUiKSsiVG8iLHRoaXMuX2N0eFthXShzLngscy55KTt0aGlzIGluc3RhbmNlb2Ygby5Qb2x5Z29uJiZ0aGlzLl9jdHguY2xvc2VQYXRoKCl9fSxfY2hlY2tJZkVtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuX3BhcnRzLmxlbmd0aH0sX3VwZGF0ZVBhdGg6ZnVuY3Rpb24oKXtpZighdGhpcy5fY2hlY2tJZkVtcHR5KCkpe3ZhciB0PXRoaXMuX2N0eCxlPXRoaXMub3B0aW9uczt0aGlzLl9kcmF3UGF0aCgpLHQuc2F2ZSgpLHRoaXMuX3VwZGF0ZVN0eWxlKCksZS5maWxsJiYodC5nbG9iYWxBbHBoYT1lLmZpbGxPcGFjaXR5LHQuZmlsbCgpKSxlLnN0cm9rZSYmKHQuZ2xvYmFsQWxwaGE9ZS5vcGFjaXR5LHQuc3Ryb2tlKCkpLHQucmVzdG9yZSgpfX0sX2luaXRFdmVudHM6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuY2xpY2thYmxlJiYodGhpcy5fbWFwLm9uKCJtb3VzZW1vdmUiLHRoaXMuX29uTW91c2VNb3ZlLHRoaXMpLHRoaXMuX21hcC5vbigiY2xpY2siLHRoaXMuX29uQ2xpY2ssdGhpcykpfSxfb25DbGljazpmdW5jdGlvbih0KXt0aGlzLl9jb250YWluc1BvaW50KHQubGF5ZXJQb2ludCkmJnRoaXMuZmlyZSgiY2xpY2siLHQpfSxfb25Nb3VzZU1vdmU6ZnVuY3Rpb24odCl7dGhpcy5fbWFwJiYhdGhpcy5fbWFwLl9hbmltYXRpbmdab29tJiYodGhpcy5fY29udGFpbnNQb2ludCh0LmxheWVyUG9pbnQpPyh0aGlzLl9jdHguY2FudmFzLnN0eWxlLmN1cnNvcj0icG9pbnRlciIsdGhpcy5fbW91c2VJbnNpZGU9ITAsdGhpcy5maXJlKCJtb3VzZW92ZXIiLHQpKTp0aGlzLl9tb3VzZUluc2lkZSYmKHRoaXMuX2N0eC5jYW52YXMuc3R5bGUuY3Vyc29yPSIiLHRoaXMuX21vdXNlSW5zaWRlPSExLHRoaXMuZmlyZSgibW91c2VvdXQiLHQpKSl9fSksby5NYXAuaW5jbHVkZShvLlBhdGguU1ZHJiYhdC5MX1BSRUZFUl9DQU5WQVN8fCFvLkJyb3dzZXIuY2FudmFzP3t9OntfaW5pdFBhdGhSb290OmZ1bmN0aW9uKCl7dmFyIHQsaT10aGlzLl9wYXRoUm9vdDtpfHwoaT10aGlzLl9wYXRoUm9vdD1lLmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLGkuc3R5bGUucG9zaXRpb249ImFic29sdXRlIix0PXRoaXMuX2NhbnZhc0N0eD1pLmdldENvbnRleHQoIjJkIiksdC5saW5lQ2FwPSJyb3VuZCIsdC5saW5lSm9pbj0icm91bmQiLHRoaXMuX3BhbmVzLm92ZXJsYXlQYW5lLmFwcGVuZENoaWxkKGkpLHRoaXMub3B0aW9ucy56b29tQW5pbWF0aW9uJiYodGhpcy5fcGF0aFJvb3QuY2xhc3NOYW1lPSJsZWFmbGV0LXpvb20tYW5pbWF0ZWQiLHRoaXMub24oInpvb21hbmltIix0aGlzLl9hbmltYXRlUGF0aFpvb20pLHRoaXMub24oInpvb21lbmQiLHRoaXMuX2VuZFBhdGhab29tKSksdGhpcy5vbigibW92ZWVuZCIsdGhpcy5fdXBkYXRlQ2FudmFzVmlld3BvcnQpLHRoaXMuX3VwZGF0ZUNhbnZhc1ZpZXdwb3J0KCkpfSxfdXBkYXRlQ2FudmFzVmlld3BvcnQ6ZnVuY3Rpb24oKXtpZighdGhpcy5fcGF0aFpvb21pbmcpe3RoaXMuX3VwZGF0ZVBhdGhWaWV3cG9ydCgpO3ZhciB0PXRoaXMuX3BhdGhWaWV3cG9ydCxlPXQubWluLGk9dC5tYXguc3VidHJhY3QoZSksbj10aGlzLl9wYXRoUm9vdDtvLkRvbVV0aWwuc2V0UG9zaXRpb24obixlKSxuLndpZHRoPWkueCxuLmhlaWdodD1pLnksbi5nZXRDb250ZXh0KCIyZCIpLnRyYW5zbGF0ZSgtZS54LC1lLnkpfX19KSxvLkxpbmVVdGlsPXtzaW1wbGlmeTpmdW5jdGlvbih0LGUpe2lmKCFlfHwhdC5sZW5ndGgpcmV0dXJuIHQuc2xpY2UoKTt2YXIgaT1lKmU7cmV0dXJuIHQ9dGhpcy5fcmVkdWNlUG9pbnRzKHQsaSksdD10aGlzLl9zaW1wbGlmeURQKHQsaSl9LHBvaW50VG9TZWdtZW50RGlzdGFuY2U6ZnVuY3Rpb24odCxlLGkpe3JldHVybiBNYXRoLnNxcnQodGhpcy5fc3FDbG9zZXN0UG9pbnRPblNlZ21lbnQodCxlLGksITApKX0sY2xvc2VzdFBvaW50T25TZWdtZW50OmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5fc3FDbG9zZXN0UG9pbnRPblNlZ21lbnQodCxlLGkpfSxfc2ltcGxpZnlEUDpmdW5jdGlvbih0LGUpe3ZhciBuPXQubGVuZ3RoLG89dHlwZW9mIFVpbnQ4QXJyYXkhPWkrIiI/VWludDhBcnJheTpBcnJheSxzPW5ldyBvKG4pO3NbMF09c1tuLTFdPTEsdGhpcy5fc2ltcGxpZnlEUFN0ZXAodCxzLGUsMCxuLTEpO3ZhciBhLHI9W107Zm9yKGE9MDtuPmE7YSsrKXNbYV0mJnIucHVzaCh0W2FdKTtyZXR1cm4gcn0sX3NpbXBsaWZ5RFBTdGVwOmZ1bmN0aW9uKHQsZSxpLG4sbyl7dmFyIHMsYSxyLGg9MDtmb3IoYT1uKzE7by0xPj1hO2ErKylyPXRoaXMuX3NxQ2xvc2VzdFBvaW50T25TZWdtZW50KHRbYV0sdFtuXSx0W29dLCEwKSxyPmgmJihzPWEsaD1yKTtoPmkmJihlW3NdPTEsdGhpcy5fc2ltcGxpZnlEUFN0ZXAodCxlLGksbixzKSx0aGlzLl9zaW1wbGlmeURQU3RlcCh0LGUsaSxzLG8pKX0sX3JlZHVjZVBvaW50czpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaT1bdFswXV0sbj0xLG89MCxzPXQubGVuZ3RoO3M+bjtuKyspdGhpcy5fc3FEaXN0KHRbbl0sdFtvXSk+ZSYmKGkucHVzaCh0W25dKSxvPW4pO3JldHVybiBzLTE+byYmaS5wdXNoKHRbcy0xXSksaX0sY2xpcFNlZ21lbnQ6ZnVuY3Rpb24odCxlLGksbil7dmFyIG8scyxhLHI9bj90aGlzLl9sYXN0Q29kZTp0aGlzLl9nZXRCaXRDb2RlKHQsaSksaD10aGlzLl9nZXRCaXRDb2RlKGUsaSk7Zm9yKHRoaXMuX2xhc3RDb2RlPWg7Oyl7aWYoIShyfGgpKXJldHVyblt0LGVdO2lmKHImaClyZXR1cm4hMTtvPXJ8fGgscz10aGlzLl9nZXRFZGdlSW50ZXJzZWN0aW9uKHQsZSxvLGkpLGE9dGhpcy5fZ2V0Qml0Q29kZShzLGkpLG89PT1yPyh0PXMscj1hKTooZT1zLGg9YSl9fSxfZ2V0RWRnZUludGVyc2VjdGlvbjpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcz1lLngtdC54LGE9ZS55LXQueSxyPW4ubWluLGg9bi5tYXg7cmV0dXJuIDgmaT9uZXcgby5Qb2ludCh0LngrcyooaC55LXQueSkvYSxoLnkpOjQmaT9uZXcgby5Qb2ludCh0Lngrcyooci55LXQueSkvYSxyLnkpOjImaT9uZXcgby5Qb2ludChoLngsdC55K2EqKGgueC10LngpL3MpOjEmaT9uZXcgby5Qb2ludChyLngsdC55K2EqKHIueC10LngpL3MpOnZvaWQgMH0sX2dldEJpdENvZGU6ZnVuY3Rpb24odCxlKXt2YXIgaT0wO3JldHVybiB0Lng8ZS5taW4ueD9pfD0xOnQueD5lLm1heC54JiYoaXw9MiksdC55PGUubWluLnk/aXw9NDp0Lnk+ZS5tYXgueSYmKGl8PTgpLGl9LF9zcURpc3Q6ZnVuY3Rpb24odCxlKXt2YXIgaT1lLngtdC54LG49ZS55LXQueTtyZXR1cm4gaSppK24qbn0sX3NxQ2xvc2VzdFBvaW50T25TZWdtZW50OmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBzLGE9ZS54LHI9ZS55LGg9aS54LWEsbD1pLnktcix1PWgqaCtsKmw7cmV0dXJuIHU+MCYmKHM9KCh0LngtYSkqaCsodC55LXIpKmwpL3Uscz4xPyhhPWkueCxyPWkueSk6cz4wJiYoYSs9aCpzLHIrPWwqcykpLGg9dC54LWEsbD10LnktcixuP2gqaCtsKmw6bmV3IG8uUG9pbnQoYSxyKX19LG8uUG9seWxpbmU9by5QYXRoLmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUpe28uUGF0aC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsZSksdGhpcy5fbGF0bG5ncz10aGlzLl9jb252ZXJ0TGF0TG5ncyh0KX0sb3B0aW9uczp7c21vb3RoRmFjdG9yOjEsbm9DbGlwOiExfSxwcm9qZWN0TGF0bG5nczpmdW5jdGlvbigpe3RoaXMuX29yaWdpbmFsUG9pbnRzPVtdO2Zvcih2YXIgdD0wLGU9dGhpcy5fbGF0bG5ncy5sZW5ndGg7ZT50O3QrKyl0aGlzLl9vcmlnaW5hbFBvaW50c1t0XT10aGlzLl9tYXAubGF0TG5nVG9MYXllclBvaW50KHRoaXMuX2xhdGxuZ3NbdF0pfSxnZXRQYXRoU3RyaW5nOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAsZT10aGlzLl9wYXJ0cy5sZW5ndGgsaT0iIjtlPnQ7dCsrKWkrPXRoaXMuX2dldFBhdGhQYXJ0U3RyKHRoaXMuX3BhcnRzW3RdKTtyZXR1cm4gaX0sZ2V0TGF0TG5nczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sYXRsbmdzfSxzZXRMYXRMbmdzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9sYXRsbmdzPXRoaXMuX2NvbnZlcnRMYXRMbmdzKHQpLHRoaXMucmVkcmF3KCl9LGFkZExhdExuZzpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbGF0bG5ncy5wdXNoKG8ubGF0TG5nKHQpKSx0aGlzLnJlZHJhdygpfSxzcGxpY2VMYXRMbmdzOmZ1bmN0aW9uKCl7dmFyIHQ9W10uc3BsaWNlLmFwcGx5KHRoaXMuX2xhdGxuZ3MsYXJndW1lbnRzKTtyZXR1cm4gdGhpcy5fY29udmVydExhdExuZ3ModGhpcy5fbGF0bG5ncywhMCksdGhpcy5yZWRyYXcoKSx0fSxjbG9zZXN0TGF5ZXJQb2ludDpmdW5jdGlvbih0KXtmb3IodmFyIGUsaSxuPTEvMCxzPXRoaXMuX3BhcnRzLGE9bnVsbCxyPTAsaD1zLmxlbmd0aDtoPnI7cisrKWZvcih2YXIgbD1zW3JdLHU9MSxjPWwubGVuZ3RoO2M+dTt1Kyspe2U9bFt1LTFdLGk9bFt1XTt2YXIgZD1vLkxpbmVVdGlsLl9zcUNsb3Nlc3RQb2ludE9uU2VnbWVudCh0LGUsaSwhMCk7bj5kJiYobj1kLGE9by5MaW5lVXRpbC5fc3FDbG9zZXN0UG9pbnRPblNlZ21lbnQodCxlLGkpKX1yZXR1cm4gYSYmKGEuZGlzdGFuY2U9TWF0aC5zcXJ0KG4pKSxhfSxnZXRCb3VuZHM6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG8uTGF0TG5nQm91bmRzKHRoaXMuZ2V0TGF0TG5ncygpKX0sX2NvbnZlcnRMYXRMbmdzOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixzPWU/dDpbXTtmb3IoaT0wLG49dC5sZW5ndGg7bj5pO2krKyl7aWYoby5VdGlsLmlzQXJyYXkodFtpXSkmJiJudW1iZXIiIT10eXBlb2YgdFtpXVswXSlyZXR1cm47c1tpXT1vLmxhdExuZyh0W2ldKX1yZXR1cm4gc30sX2luaXRFdmVudHM6ZnVuY3Rpb24oKXtvLlBhdGgucHJvdG90eXBlLl9pbml0RXZlbnRzLmNhbGwodGhpcyl9LF9nZXRQYXRoUGFydFN0cjpmdW5jdGlvbih0KXtmb3IodmFyIGUsaT1vLlBhdGguVk1MLG49MCxzPXQubGVuZ3RoLGE9IiI7cz5uO24rKyllPXRbbl0saSYmZS5fcm91bmQoKSxhKz0obj8iTCI6Ik0iKStlLngrIiAiK2UueTtyZXR1cm4gYX0sX2NsaXBQb2ludHM6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbj10aGlzLl9vcmlnaW5hbFBvaW50cyxzPW4ubGVuZ3RoO2lmKHRoaXMub3B0aW9ucy5ub0NsaXApcmV0dXJuIHZvaWQodGhpcy5fcGFydHM9W25dKTt0aGlzLl9wYXJ0cz1bXTt2YXIgYT10aGlzLl9wYXJ0cyxyPXRoaXMuX21hcC5fcGF0aFZpZXdwb3J0LGg9by5MaW5lVXRpbDtmb3IodD0wLGU9MDtzLTE+dDt0KyspaT1oLmNsaXBTZWdtZW50KG5bdF0sblt0KzFdLHIsdCksaSYmKGFbZV09YVtlXXx8W10sYVtlXS5wdXNoKGlbMF0pLChpWzFdIT09blt0KzFdfHx0PT09cy0yKSYmKGFbZV0ucHVzaChpWzFdKSxlKyspKX0sX3NpbXBsaWZ5UG9pbnRzOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX3BhcnRzLGU9by5MaW5lVXRpbCxpPTAsbj10Lmxlbmd0aDtuPmk7aSsrKXRbaV09ZS5zaW1wbGlmeSh0W2ldLHRoaXMub3B0aW9ucy5zbW9vdGhGYWN0b3IpfSxfdXBkYXRlUGF0aDpmdW5jdGlvbigpe3RoaXMuX21hcCYmKHRoaXMuX2NsaXBQb2ludHMoKSx0aGlzLl9zaW1wbGlmeVBvaW50cygpLG8uUGF0aC5wcm90b3R5cGUuX3VwZGF0ZVBhdGguY2FsbCh0aGlzKSl9fSksby5wb2x5bGluZT1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgby5Qb2x5bGluZSh0LGUpfSxvLlBvbHlVdGlsPXt9LG8uUG9seVV0aWwuY2xpcFBvbHlnb249ZnVuY3Rpb24odCxlKXt2YXIgaSxuLHMsYSxyLGgsbCx1LGMsZD1bMSw0LDIsOF0scD1vLkxpbmVVdGlsO2ZvcihuPTAsbD10Lmxlbmd0aDtsPm47bisrKXRbbl0uX2NvZGU9cC5fZ2V0Qml0Q29kZSh0W25dLGUpO2ZvcihhPTA7ND5hO2ErKyl7Zm9yKHU9ZFthXSxpPVtdLG49MCxsPXQubGVuZ3RoLHM9bC0xO2w+bjtzPW4rKylyPXRbbl0saD10W3NdLHIuX2NvZGUmdT9oLl9jb2RlJnV8fChjPXAuX2dldEVkZ2VJbnRlcnNlY3Rpb24oaCxyLHUsZSksYy5fY29kZT1wLl9nZXRCaXRDb2RlKGMsZSksaS5wdXNoKGMpKTooaC5fY29kZSZ1JiYoYz1wLl9nZXRFZGdlSW50ZXJzZWN0aW9uKGgscix1LGUpLGMuX2NvZGU9cC5fZ2V0Qml0Q29kZShjLGUpLGkucHVzaChjKSksaS5wdXNoKHIpKTt0PWl9cmV0dXJuIHR9LG8uUG9seWdvbj1vLlBvbHlsaW5lLmV4dGVuZCh7b3B0aW9uczp7ZmlsbDohMH0saW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUpe28uUG9seWxpbmUucHJvdG90eXBlLmluaXRpYWxpemUuY2FsbCh0aGlzLHQsZSksdGhpcy5faW5pdFdpdGhIb2xlcyh0KX0sX2luaXRXaXRoSG9sZXM6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2lmKHQmJm8uVXRpbC5pc0FycmF5KHRbMF0pJiYibnVtYmVyIiE9dHlwZW9mIHRbMF1bMF0pZm9yKHRoaXMuX2xhdGxuZ3M9dGhpcy5fY29udmVydExhdExuZ3ModFswXSksdGhpcy5faG9sZXM9dC5zbGljZSgxKSxlPTAsaT10aGlzLl9ob2xlcy5sZW5ndGg7aT5lO2UrKyluPXRoaXMuX2hvbGVzW2VdPXRoaXMuX2NvbnZlcnRMYXRMbmdzKHRoaXMuX2hvbGVzW2VdKSxuWzBdLmVxdWFscyhuW24ubGVuZ3RoLTFdKSYmbi5wb3AoKTt0PXRoaXMuX2xhdGxuZ3MsdC5sZW5ndGg+PTImJnRbMF0uZXF1YWxzKHRbdC5sZW5ndGgtMV0pJiZ0LnBvcCgpfSxwcm9qZWN0TGF0bG5nczpmdW5jdGlvbigpe2lmKG8uUG9seWxpbmUucHJvdG90eXBlLnByb2plY3RMYXRsbmdzLmNhbGwodGhpcyksdGhpcy5faG9sZVBvaW50cz1bXSx0aGlzLl9ob2xlcyl7dmFyIHQsZSxpLG47Zm9yKHQ9MCxpPXRoaXMuX2hvbGVzLmxlbmd0aDtpPnQ7dCsrKWZvcih0aGlzLl9ob2xlUG9pbnRzW3RdPVtdLGU9MCxuPXRoaXMuX2hvbGVzW3RdLmxlbmd0aDtuPmU7ZSsrKXRoaXMuX2hvbGVQb2ludHNbdF1bZV09dGhpcy5fbWFwLmxhdExuZ1RvTGF5ZXJQb2ludCh0aGlzLl9ob2xlc1t0XVtlXSl9fSxzZXRMYXRMbmdzOmZ1bmN0aW9uKHQpe3JldHVybiB0JiZvLlV0aWwuaXNBcnJheSh0WzBdKSYmIm51bWJlciIhPXR5cGVvZiB0WzBdWzBdPyh0aGlzLl9pbml0V2l0aEhvbGVzKHQpLHRoaXMucmVkcmF3KCkpOm8uUG9seWxpbmUucHJvdG90eXBlLnNldExhdExuZ3MuY2FsbCh0aGlzLHQpfSxfY2xpcFBvaW50czpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX29yaWdpbmFsUG9pbnRzLGU9W107aWYodGhpcy5fcGFydHM9W3RdLmNvbmNhdCh0aGlzLl9ob2xlUG9pbnRzKSwhdGhpcy5vcHRpb25zLm5vQ2xpcCl7Zm9yKHZhciBpPTAsbj10aGlzLl9wYXJ0cy5sZW5ndGg7bj5pO2krKyl7dmFyIHM9by5Qb2x5VXRpbC5jbGlwUG9seWdvbih0aGlzLl9wYXJ0c1tpXSx0aGlzLl9tYXAuX3BhdGhWaWV3cG9ydCk7cy5sZW5ndGgmJmUucHVzaChzKX10aGlzLl9wYXJ0cz1lfX0sX2dldFBhdGhQYXJ0U3RyOmZ1bmN0aW9uKHQpe3ZhciBlPW8uUG9seWxpbmUucHJvdG90eXBlLl9nZXRQYXRoUGFydFN0ci5jYWxsKHRoaXMsdCk7cmV0dXJuIGUrKG8uQnJvd3Nlci5zdmc/InoiOiJ4Iil9fSksby5wb2x5Z29uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBvLlBvbHlnb24odCxlKX0sZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3JldHVybiBvLkZlYXR1cmVHcm91cC5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24odCxlKXt0aGlzLl9sYXllcnM9e30sdGhpcy5fb3B0aW9ucz1lLHRoaXMuc2V0TGF0TG5ncyh0KX0sc2V0TGF0TG5nczpmdW5jdGlvbihlKXt2YXIgaT0wLG49ZS5sZW5ndGg7Zm9yKHRoaXMuZWFjaExheWVyKGZ1bmN0aW9uKHQpe24+aT90LnNldExhdExuZ3MoZVtpKytdKTp0aGlzLnJlbW92ZUxheWVyKHQpfSx0aGlzKTtuPmk7KXRoaXMuYWRkTGF5ZXIobmV3IHQoZVtpKytdLHRoaXMuX29wdGlvbnMpKTtyZXR1cm4gdGhpc30sZ2V0TGF0TG5nczpmdW5jdGlvbigpe3ZhciB0PVtdO3JldHVybiB0aGlzLmVhY2hMYXllcihmdW5jdGlvbihlKXt0LnB1c2goZS5nZXRMYXRMbmdzKCkpfSksdH19KX1vLk11bHRpUG9seWxpbmU9dChvLlBvbHlsaW5lKSxvLk11bHRpUG9seWdvbj10KG8uUG9seWdvbiksby5tdWx0aVBvbHlsaW5lPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBvLk11bHRpUG9seWxpbmUodCxlKX0sby5tdWx0aVBvbHlnb249ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IG8uTXVsdGlQb2x5Z29uKHQsZSl9fSgpLG8uUmVjdGFuZ2xlPW8uUG9seWdvbi5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24odCxlKXtvLlBvbHlnb24ucHJvdG90eXBlLmluaXRpYWxpemUuY2FsbCh0aGlzLHRoaXMuX2JvdW5kc1RvTGF0TG5ncyh0KSxlKX0sc2V0Qm91bmRzOmZ1bmN0aW9uKHQpe3RoaXMuc2V0TGF0TG5ncyh0aGlzLl9ib3VuZHNUb0xhdExuZ3ModCkpfSxfYm91bmRzVG9MYXRMbmdzOmZ1bmN0aW9uKHQpe3JldHVybiB0PW8ubGF0TG5nQm91bmRzKHQpLFt0LmdldFNvdXRoV2VzdCgpLHQuZ2V0Tm9ydGhXZXN0KCksdC5nZXROb3J0aEVhc3QoKSx0LmdldFNvdXRoRWFzdCgpXX19KSxvLnJlY3RhbmdsZT1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgby5SZWN0YW5nbGUodCxlKX0sby5DaXJjbGU9by5QYXRoLmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUsaSl7by5QYXRoLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcyxpKSx0aGlzLl9sYXRsbmc9by5sYXRMbmcodCksdGhpcy5fbVJhZGl1cz1lfSxvcHRpb25zOntmaWxsOiEwfSxzZXRMYXRMbmc6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2xhdGxuZz1vLmxhdExuZyh0KSx0aGlzLnJlZHJhdygpfSxzZXRSYWRpdXM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX21SYWRpdXM9dCx0aGlzLnJlZHJhdygpfSxwcm9qZWN0TGF0bG5nczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2dldExuZ1JhZGl1cygpLGU9dGhpcy5fbGF0bG5nLGk9dGhpcy5fbWFwLmxhdExuZ1RvTGF5ZXJQb2ludChbZS5sYXQsZS5sbmctdF0pO3RoaXMuX3BvaW50PXRoaXMuX21hcC5sYXRMbmdUb0xheWVyUG9pbnQoZSksdGhpcy5fcmFkaXVzPU1hdGgubWF4KHRoaXMuX3BvaW50LngtaS54LDEpfSxnZXRCb3VuZHM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9nZXRMbmdSYWRpdXMoKSxlPXRoaXMuX21SYWRpdXMvNDAwNzUwMTcqMzYwLGk9dGhpcy5fbGF0bG5nO3JldHVybiBuZXcgby5MYXRMbmdCb3VuZHMoW2kubGF0LWUsaS5sbmctdF0sW2kubGF0K2UsaS5sbmcrdF0pfSxnZXRMYXRMbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGF0bG5nfSxnZXRQYXRoU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fcG9pbnQsZT10aGlzLl9yYWRpdXM7cmV0dXJuIHRoaXMuX2NoZWNrSWZFbXB0eSgpPyIiOm8uQnJvd3Nlci5zdmc/Ik0iK3QueCsiLCIrKHQueS1lKSsiQSIrZSsiLCIrZSsiLDAsMSwxLCIrKHQueC0uMSkrIiwiKyh0LnktZSkrIiB6IjoodC5fcm91bmQoKSxlPU1hdGgucm91bmQoZSksIkFMICIrdC54KyIsIit0LnkrIiAiK2UrIiwiK2UrIiAwLDIzNTkyNjAwIil9LGdldFJhZGl1czpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tUmFkaXVzfSxfZ2V0TGF0UmFkaXVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21SYWRpdXMvNDAwNzUwMTcqMzYwfSxfZ2V0TG5nUmFkaXVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2dldExhdFJhZGl1cygpL01hdGguY29zKG8uTGF0TG5nLkRFR19UT19SQUQqdGhpcy5fbGF0bG5nLmxhdCl9LF9jaGVja0lmRW1wdHk6ZnVuY3Rpb24oKXtpZighdGhpcy5fbWFwKXJldHVybiExO3ZhciB0PXRoaXMuX21hcC5fcGF0aFZpZXdwb3J0LGU9dGhpcy5fcmFkaXVzLGk9dGhpcy5fcG9pbnQ7cmV0dXJuIGkueC1lPnQubWF4Lnh8fGkueS1lPnQubWF4Lnl8fGkueCtlPHQubWluLnh8fGkueStlPHQubWluLnl9fSksby5jaXJjbGU9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBuZXcgby5DaXJjbGUodCxlLGkpfSxvLkNpcmNsZU1hcmtlcj1vLkNpcmNsZS5leHRlbmQoe29wdGlvbnM6e3JhZGl1czoxMCx3ZWlnaHQ6Mn0saW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUpe28uQ2lyY2xlLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcyx0LG51bGwsZSksdGhpcy5fcmFkaXVzPXRoaXMub3B0aW9ucy5yYWRpdXN9LHByb2plY3RMYXRsbmdzOmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9dGhpcy5fbWFwLmxhdExuZ1RvTGF5ZXJQb2ludCh0aGlzLl9sYXRsbmcpfSxfdXBkYXRlU3R5bGU6ZnVuY3Rpb24oKXtvLkNpcmNsZS5wcm90b3R5cGUuX3VwZGF0ZVN0eWxlLmNhbGwodGhpcyksdGhpcy5zZXRSYWRpdXModGhpcy5vcHRpb25zLnJhZGl1cyl9LHNldExhdExuZzpmdW5jdGlvbih0KXtyZXR1cm4gby5DaXJjbGUucHJvdG90eXBlLnNldExhdExuZy5jYWxsKHRoaXMsdCksdGhpcy5fcG9wdXAmJnRoaXMuX3BvcHVwLl9pc09wZW4mJnRoaXMuX3BvcHVwLnNldExhdExuZyh0KSx0aGlzfSxzZXRSYWRpdXM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3B0aW9ucy5yYWRpdXM9dGhpcy5fcmFkaXVzPXQsdGhpcy5yZWRyYXcoKX0sZ2V0UmFkaXVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JhZGl1c319KSxvLmNpcmNsZU1hcmtlcj1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgby5DaXJjbGVNYXJrZXIodCxlKX0sby5Qb2x5bGluZS5pbmNsdWRlKG8uUGF0aC5DQU5WQVM/e19jb250YWluc1BvaW50OmZ1bmN0aW9uKHQsZSl7dmFyIGksbixzLGEscixoLGwsdT10aGlzLm9wdGlvbnMud2VpZ2h0LzI7Zm9yKG8uQnJvd3Nlci50b3VjaCYmKHUrPTEwKSxpPTAsYT10aGlzLl9wYXJ0cy5sZW5ndGg7YT5pO2krKylmb3IobD10aGlzLl9wYXJ0c1tpXSxuPTAscj1sLmxlbmd0aCxzPXItMTtyPm47cz1uKyspaWYoKGV8fDAhPT1uKSYmKGg9by5MaW5lVXRpbC5wb2ludFRvU2VnbWVudERpc3RhbmNlKHQsbFtzXSxsW25dKSx1Pj1oKSlyZXR1cm4hMDtyZXR1cm4hMX19Ont9KSxvLlBvbHlnb24uaW5jbHVkZShvLlBhdGguQ0FOVkFTP3tfY29udGFpbnNQb2ludDpmdW5jdGlvbih0KXt2YXIgZSxpLG4scyxhLHIsaCxsLHU9ITE7aWYoby5Qb2x5bGluZS5wcm90b3R5cGUuX2NvbnRhaW5zUG9pbnQuY2FsbCh0aGlzLHQsITApKXJldHVybiEwO2ZvcihzPTAsaD10aGlzLl9wYXJ0cy5sZW5ndGg7aD5zO3MrKylmb3IoZT10aGlzLl9wYXJ0c1tzXSxhPTAsbD1lLmxlbmd0aCxyPWwtMTtsPmE7cj1hKyspaT1lW2FdLG49ZVtyXSxpLnk+dC55IT1uLnk+dC55JiZ0Lng8KG4ueC1pLngpKih0LnktaS55KS8obi55LWkueSkraS54JiYodT0hdSk7cmV0dXJuIHV9fTp7fSksby5DaXJjbGUuaW5jbHVkZShvLlBhdGguQ0FOVkFTP3tfZHJhd1BhdGg6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9wb2ludDt0aGlzLl9jdHguYmVnaW5QYXRoKCksdGhpcy5fY3R4LmFyYyh0LngsdC55LHRoaXMuX3JhZGl1cywwLDIqTWF0aC5QSSwhMSl9LF9jb250YWluc1BvaW50OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3BvaW50LGk9dGhpcy5vcHRpb25zLnN0cm9rZT90aGlzLm9wdGlvbnMud2VpZ2h0LzI6MDtyZXR1cm4gdC5kaXN0YW5jZVRvKGUpPD10aGlzLl9yYWRpdXMraX19Ont9KSxvLkNpcmNsZU1hcmtlci5pbmNsdWRlKG8uUGF0aC5DQU5WQVM/e191cGRhdGVTdHlsZTpmdW5jdGlvbigpe28uUGF0aC5wcm90b3R5cGUuX3VwZGF0ZVN0eWxlLmNhbGwodGhpcyl9fTp7fSksby5HZW9KU09OPW8uRmVhdHVyZUdyb3VwLmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUpe28uc2V0T3B0aW9ucyh0aGlzLGUpLHRoaXMuX2xheWVycz17fSx0JiZ0aGlzLmFkZERhdGEodCl9LGFkZERhdGE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHM9by5VdGlsLmlzQXJyYXkodCk/dDp0LmZlYXR1cmVzO2lmKHMpe2ZvcihlPTAsaT1zLmxlbmd0aDtpPmU7ZSsrKW49c1tlXSwobi5nZW9tZXRyaWVzfHxuLmdlb21ldHJ5fHxuLmZlYXR1cmVzfHxuLmNvb3JkaW5hdGVzKSYmdGhpcy5hZGREYXRhKHNbZV0pO3JldHVybiB0aGlzfXZhciBhPXRoaXMub3B0aW9ucztpZighYS5maWx0ZXJ8fGEuZmlsdGVyKHQpKXt2YXIgcj1vLkdlb0pTT04uZ2VvbWV0cnlUb0xheWVyKHQsYS5wb2ludFRvTGF5ZXIsYS5jb29yZHNUb0xhdExuZyxhKTtyZXR1cm4gci5mZWF0dXJlPW8uR2VvSlNPTi5hc0ZlYXR1cmUodCksci5kZWZhdWx0T3B0aW9ucz1yLm9wdGlvbnMsdGhpcy5yZXNldFN0eWxlKHIpLGEub25FYWNoRmVhdHVyZSYmYS5vbkVhY2hGZWF0dXJlKHQsciksdGhpcy5hZGRMYXllcihyKX19LHJlc2V0U3R5bGU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5vcHRpb25zLnN0eWxlO2UmJihvLlV0aWwuZXh0ZW5kKHQub3B0aW9ucyx0LmRlZmF1bHRPcHRpb25zKSx0aGlzLl9zZXRMYXllclN0eWxlKHQsZSkpfSxzZXRTdHlsZTpmdW5jdGlvbih0KXt0aGlzLmVhY2hMYXllcihmdW5jdGlvbihlKXt0aGlzLl9zZXRMYXllclN0eWxlKGUsdCl9LHRoaXMpfSxfc2V0TGF5ZXJTdHlsZTpmdW5jdGlvbih0LGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBlJiYoZT1lKHQuZmVhdHVyZSkpLHQuc2V0U3R5bGUmJnQuc2V0U3R5bGUoZSl9fSksby5leHRlbmQoby5HZW9KU09OLHtnZW9tZXRyeVRvTGF5ZXI6ZnVuY3Rpb24odCxlLGksbil7dmFyIHMsYSxyLGgsbD0iRmVhdHVyZSI9PT10LnR5cGU/dC5nZW9tZXRyeTp0LHU9bC5jb29yZGluYXRlcyxjPVtdO3N3aXRjaChpPWl8fHRoaXMuY29vcmRzVG9MYXRMbmcsbC50eXBlKXtjYXNlIlBvaW50IjpyZXR1cm4gcz1pKHUpLGU/ZSh0LHMpOm5ldyBvLk1hcmtlcihzKTtjYXNlIk11bHRpUG9pbnQiOmZvcihyPTAsaD11Lmxlbmd0aDtoPnI7cisrKXM9aSh1W3JdKSxjLnB1c2goZT9lKHQscyk6bmV3IG8uTWFya2VyKHMpKTtyZXR1cm4gbmV3IG8uRmVhdHVyZUdyb3VwKGMpO2Nhc2UiTGluZVN0cmluZyI6cmV0dXJuIGE9dGhpcy5jb29yZHNUb0xhdExuZ3ModSwwLGkpLG5ldyBvLlBvbHlsaW5lKGEsbik7Y2FzZSJQb2x5Z29uIjppZigyPT09dS5sZW5ndGgmJiF1WzFdLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgR2VvSlNPTiBvYmplY3QuIik7cmV0dXJuIGE9dGhpcy5jb29yZHNUb0xhdExuZ3ModSwxLGkpLG5ldyBvLlBvbHlnb24oYSxuKTtjYXNlIk11bHRpTGluZVN0cmluZyI6cmV0dXJuIGE9dGhpcy5jb29yZHNUb0xhdExuZ3ModSwxLGkpLG5ldyBvLk11bHRpUG9seWxpbmUoYSxuKTtjYXNlIk11bHRpUG9seWdvbiI6cmV0dXJuIGE9dGhpcy5jb29yZHNUb0xhdExuZ3ModSwyLGkpLG5ldyBvLk11bHRpUG9seWdvbihhLG4pO2Nhc2UiR2VvbWV0cnlDb2xsZWN0aW9uIjpmb3Iocj0wLGg9bC5nZW9tZXRyaWVzLmxlbmd0aDtoPnI7cisrKWMucHVzaCh0aGlzLmdlb21ldHJ5VG9MYXllcih7Z2VvbWV0cnk6bC5nZW9tZXRyaWVzW3JdLHR5cGU6IkZlYXR1cmUiLHByb3BlcnRpZXM6dC5wcm9wZXJ0aWVzfSxlLGksbikpO3JldHVybiBuZXcgby5GZWF0dXJlR3JvdXAoYyk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgR2VvSlNPTiBvYmplY3QuIil9fSxjb29yZHNUb0xhdExuZzpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IG8uTGF0TG5nKHRbMV0sdFswXSx0WzJdKX0sY29vcmRzVG9MYXRMbmdzOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixvLHMsYT1bXTtmb3Iobz0wLHM9dC5sZW5ndGg7cz5vO28rKyluPWU/dGhpcy5jb29yZHNUb0xhdExuZ3ModFtvXSxlLTEsaSk6KGl8fHRoaXMuY29vcmRzVG9MYXRMbmcpKHRbb10pLGEucHVzaChuKTtyZXR1cm4gYX0sbGF0TG5nVG9Db29yZHM6ZnVuY3Rpb24odCl7dmFyIGU9W3QubG5nLHQubGF0XTtyZXR1cm4gdC5hbHQhPT1pJiZlLnB1c2godC5hbHQpLGV9LGxhdExuZ3NUb0Nvb3JkczpmdW5jdGlvbih0KXtmb3IodmFyIGU9W10saT0wLG49dC5sZW5ndGg7bj5pO2krKyllLnB1c2goby5HZW9KU09OLmxhdExuZ1RvQ29vcmRzKHRbaV0pKTtyZXR1cm4gZX0sZ2V0RmVhdHVyZTpmdW5jdGlvbih0LGUpe3JldHVybiB0LmZlYXR1cmU/by5leHRlbmQoe30sdC5mZWF0dXJlLHtnZW9tZXRyeTplfSk6by5HZW9KU09OLmFzRmVhdHVyZShlKX0sYXNGZWF0dXJlOmZ1bmN0aW9uKHQpe3JldHVybiJGZWF0dXJlIj09PXQudHlwZT90Ont0eXBlOiJGZWF0dXJlIixwcm9wZXJ0aWVzOnt9LGdlb21ldHJ5OnR9fX0pO3ZhciBhPXt0b0dlb0pTT046ZnVuY3Rpb24oKXtyZXR1cm4gby5HZW9KU09OLmdldEZlYXR1cmUodGhpcyx7dHlwZToiUG9pbnQiLGNvb3JkaW5hdGVzOm8uR2VvSlNPTi5sYXRMbmdUb0Nvb3Jkcyh0aGlzLmdldExhdExuZygpKX0pfX07by5NYXJrZXIuaW5jbHVkZShhKSxvLkNpcmNsZS5pbmNsdWRlKGEpLG8uQ2lyY2xlTWFya2VyLmluY2x1ZGUoYSksby5Qb2x5bGluZS5pbmNsdWRlKHt0b0dlb0pTT046ZnVuY3Rpb24oKXtyZXR1cm4gby5HZW9KU09OLmdldEZlYXR1cmUodGhpcyx7dHlwZToiTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6by5HZW9KU09OLmxhdExuZ3NUb0Nvb3Jkcyh0aGlzLmdldExhdExuZ3MoKSl9KX19KSxvLlBvbHlnb24uaW5jbHVkZSh7dG9HZW9KU09OOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG49W28uR2VvSlNPTi5sYXRMbmdzVG9Db29yZHModGhpcy5nZXRMYXRMbmdzKCkpXTtpZihuWzBdLnB1c2goblswXVswXSksdGhpcy5faG9sZXMpZm9yKHQ9MCxlPXRoaXMuX2hvbGVzLmxlbmd0aDtlPnQ7dCsrKWk9by5HZW9KU09OLmxhdExuZ3NUb0Nvb3Jkcyh0aGlzLl9ob2xlc1t0XSksaS5wdXNoKGlbMF0pLG4ucHVzaChpKTtyZXR1cm4gby5HZW9KU09OLmdldEZlYXR1cmUodGhpcyx7dHlwZToiUG9seWdvbiIsY29vcmRpbmF0ZXM6bn0pfX0pLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1bXTtyZXR1cm4gdGhpcy5lYWNoTGF5ZXIoZnVuY3Rpb24odCl7ZS5wdXNoKHQudG9HZW9KU09OKCkuZ2VvbWV0cnkuY29vcmRpbmF0ZXMpfSksby5HZW9KU09OLmdldEZlYXR1cmUodGhpcyx7dHlwZTp0LGNvb3JkaW5hdGVzOmV9KX19by5NdWx0aVBvbHlsaW5lLmluY2x1ZGUoe3RvR2VvSlNPTjp0KCJNdWx0aUxpbmVTdHJpbmciKX0pLG8uTXVsdGlQb2x5Z29uLmluY2x1ZGUoe3RvR2VvSlNPTjp0KCJNdWx0aVBvbHlnb24iKX0pLG8uTGF5ZXJHcm91cC5pbmNsdWRlKHt0b0dlb0pTT046ZnVuY3Rpb24oKXt2YXIgZSxpPXRoaXMuZmVhdHVyZSYmdGhpcy5mZWF0dXJlLmdlb21ldHJ5LG49W107aWYoaSYmIk11bHRpUG9pbnQiPT09aS50eXBlKXJldHVybiB0KCJNdWx0aVBvaW50IikuY2FsbCh0aGlzKTt2YXIgcz1pJiYiR2VvbWV0cnlDb2xsZWN0aW9uIj09PWkudHlwZTtyZXR1cm4gdGhpcy5lYWNoTGF5ZXIoZnVuY3Rpb24odCl7dC50b0dlb0pTT04mJihlPXQudG9HZW9KU09OKCksbi5wdXNoKHM/ZS5nZW9tZXRyeTpvLkdlb0pTT04uYXNGZWF0dXJlKGUpKSl9KSxzP28uR2VvSlNPTi5nZXRGZWF0dXJlKHRoaXMse2dlb21ldHJpZXM6bix0eXBlOiJHZW9tZXRyeUNvbGxlY3Rpb24ifSk6e3R5cGU6IkZlYXR1cmVDb2xsZWN0aW9uIixmZWF0dXJlczpufX19KX0oKSxvLmdlb0pzb249ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IG8uR2VvSlNPTih0LGUpfSxvLkRvbUV2ZW50PXthZGRMaXN0ZW5lcjpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcyxhLHIsaD1vLnN0YW1wKGkpLGw9Il9sZWFmbGV0XyIrZStoO3JldHVybiB0W2xdP3RoaXM6KHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGkuY2FsbChufHx0LGV8fG8uRG9tRXZlbnQuX2dldEV2ZW50KCkpfSxvLkJyb3dzZXIucG9pbnRlciYmMD09PWUuaW5kZXhPZigidG91Y2giKT90aGlzLmFkZFBvaW50ZXJMaXN0ZW5lcih0LGUscyxoKTooby5Ccm93c2VyLnRvdWNoJiYiZGJsY2xpY2siPT09ZSYmdGhpcy5hZGREb3VibGVUYXBMaXN0ZW5lciYmdGhpcy5hZGREb3VibGVUYXBMaXN0ZW5lcih0LHMsaCksImFkZEV2ZW50TGlzdGVuZXIiaW4gdD8ibW91c2V3aGVlbCI9PT1lPyh0LmFkZEV2ZW50TGlzdGVuZXIoIkRPTU1vdXNlU2Nyb2xsIixzLCExKSx0LmFkZEV2ZW50TGlzdGVuZXIoZSxzLCExKSk6Im1vdXNlZW50ZXIiPT09ZXx8Im1vdXNlbGVhdmUiPT09ZT8oYT1zLHI9Im1vdXNlZW50ZXIiPT09ZT8ibW91c2VvdmVyIjoibW91c2VvdXQiLHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8uRG9tRXZlbnQuX2NoZWNrTW91c2UodCxlKT9hKGUpOnZvaWQgMH0sdC5hZGRFdmVudExpc3RlbmVyKHIscywhMSkpOiJjbGljayI9PT1lJiZvLkJyb3dzZXIuYW5kcm9pZD8oYT1zLHM9ZnVuY3Rpb24odCl7cmV0dXJuIG8uRG9tRXZlbnQuX2ZpbHRlckNsaWNrKHQsYSl9LHQuYWRkRXZlbnRMaXN0ZW5lcihlLHMsITEpKTp0LmFkZEV2ZW50TGlzdGVuZXIoZSxzLCExKToiYXR0YWNoRXZlbnQiaW4gdCYmdC5hdHRhY2hFdmVudCgib24iK2UscyksdFtsXT1zLHRoaXMpKX0scmVtb3ZlTGlzdGVuZXI6ZnVuY3Rpb24odCxlLGkpe3ZhciBuPW8uc3RhbXAoaSkscz0iX2xlYWZsZXRfIitlK24sYT10W3NdO3JldHVybiBhPyhvLkJyb3dzZXIucG9pbnRlciYmMD09PWUuaW5kZXhPZigidG91Y2giKT90aGlzLnJlbW92ZVBvaW50ZXJMaXN0ZW5lcih0LGUsbik6by5Ccm93c2VyLnRvdWNoJiYiZGJsY2xpY2siPT09ZSYmdGhpcy5yZW1vdmVEb3VibGVUYXBMaXN0ZW5lcj90aGlzLnJlbW92ZURvdWJsZVRhcExpc3RlbmVyKHQsbik6InJlbW92ZUV2ZW50TGlzdGVuZXIiaW4gdD8ibW91c2V3aGVlbCI9PT1lPyh0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTU1vdXNlU2Nyb2xsIixhLCExKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZSxhLCExKSk6Im1vdXNlZW50ZXIiPT09ZXx8Im1vdXNlbGVhdmUiPT09ZT90LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZW50ZXIiPT09ZT8ibW91c2VvdmVyIjoibW91c2VvdXQiLGEsITEpOnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLGEsITEpOiJkZXRhY2hFdmVudCJpbiB0JiZ0LmRldGFjaEV2ZW50KCJvbiIrZSxhKSx0W3NdPW51bGwsdGhpcyk6dGhpc30sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKHQpe3JldHVybiB0LnN0b3BQcm9wYWdhdGlvbj90LnN0b3BQcm9wYWdhdGlvbigpOnQuY2FuY2VsQnViYmxlPSEwLG8uRG9tRXZlbnQuX3NraXBwZWQodCksdGhpc30sZGlzYWJsZVNjcm9sbFByb3BhZ2F0aW9uOmZ1bmN0aW9uKHQpe3ZhciBlPW8uRG9tRXZlbnQuc3RvcFByb3BhZ2F0aW9uO3JldHVybiBvLkRvbUV2ZW50Lm9uKHQsIm1vdXNld2hlZWwiLGUpLm9uKHQsIk1vek1vdXNlUGl4ZWxTY3JvbGwiLGUpfSxkaXNhYmxlQ2xpY2tQcm9wYWdhdGlvbjpmdW5jdGlvbih0KXtmb3IodmFyIGU9by5Eb21FdmVudC5zdG9wUHJvcGFnYXRpb24saT1vLkRyYWdnYWJsZS5TVEFSVC5sZW5ndGgtMTtpPj0wO2ktLSlvLkRvbUV2ZW50Lm9uKHQsby5EcmFnZ2FibGUuU1RBUlRbaV0sZSk7cmV0dXJuIG8uRG9tRXZlbnQub24odCwiY2xpY2siLG8uRG9tRXZlbnQuX2Zha2VTdG9wKS5vbih0LCJkYmxjbGljayIsZSl9LHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKHQpe3JldHVybiB0LnByZXZlbnREZWZhdWx0P3QucHJldmVudERlZmF1bHQoKTp0LnJldHVyblZhbHVlPSExLHRoaXN9LHN0b3A6ZnVuY3Rpb24odCl7cmV0dXJuIG8uRG9tRXZlbnQucHJldmVudERlZmF1bHQodCkuc3RvcFByb3BhZ2F0aW9uKHQpfSxnZXRNb3VzZVBvc2l0aW9uOmZ1bmN0aW9uKHQsZSl7aWYoIWUpcmV0dXJuIG5ldyBvLlBvaW50KHQuY2xpZW50WCx0LmNsaWVudFkpO3ZhciBpPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuIG5ldyBvLlBvaW50KHQuY2xpZW50WC1pLmxlZnQtZS5jbGllbnRMZWZ0LHQuY2xpZW50WS1pLnRvcC1lLmNsaWVudFRvcCl9LGdldFdoZWVsRGVsdGE6ZnVuY3Rpb24odCl7dmFyIGU9MDtyZXR1cm4gdC53aGVlbERlbHRhJiYoZT10LndoZWVsRGVsdGEvMTIwKSx0LmRldGFpbCYmKGU9LXQuZGV0YWlsLzMpLGV9LF9za2lwRXZlbnRzOnt9LF9mYWtlU3RvcDpmdW5jdGlvbih0KXtvLkRvbUV2ZW50Ll9za2lwRXZlbnRzW3QudHlwZV09ITB9LF9za2lwcGVkOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3NraXBFdmVudHNbdC50eXBlXTtyZXR1cm4gdGhpcy5fc2tpcEV2ZW50c1t0LnR5cGVdPSExLGV9LF9jaGVja01vdXNlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9ZS5yZWxhdGVkVGFyZ2V0O2lmKCFpKXJldHVybiEwO3RyeXtmb3IoO2kmJmkhPT10OylpPWkucGFyZW50Tm9kZX1jYXRjaChuKXtyZXR1cm4hMX1yZXR1cm4gaSE9PXR9LF9nZXRFdmVudDpmdW5jdGlvbigpe3ZhciBlPXQuZXZlbnQ7aWYoIWUpZm9yKHZhciBpPWFyZ3VtZW50cy5jYWxsZWUuY2FsbGVyO2kmJihlPWkuYXJndW1lbnRzWzBdLCFlfHx0LkV2ZW50IT09ZS5jb25zdHJ1Y3Rvcik7KWk9aS5jYWxsZXI7cmV0dXJuIGV9LF9maWx0ZXJDbGljazpmdW5jdGlvbih0LGUpe3ZhciBpPXQudGltZVN0YW1wfHx0Lm9yaWdpbmFsRXZlbnQudGltZVN0YW1wLG49by5Eb21FdmVudC5fbGFzdENsaWNrJiZpLW8uRG9tRXZlbnQuX2xhc3RDbGljaztyZXR1cm4gbiYmbj4xMDAmJjUwMD5ufHx0LnRhcmdldC5fc2ltdWxhdGVkQ2xpY2smJiF0Ll9zaW11bGF0ZWQ/dm9pZCBvLkRvbUV2ZW50LnN0b3AodCk6KG8uRG9tRXZlbnQuX2xhc3RDbGljaz1pLGUodCkpfX0sby5Eb21FdmVudC5vbj1vLkRvbUV2ZW50LmFkZExpc3RlbmVyLG8uRG9tRXZlbnQub2ZmPW8uRG9tRXZlbnQucmVtb3ZlTGlzdGVuZXIsby5EcmFnZ2FibGU9by5DbGFzcy5leHRlbmQoe2luY2x1ZGVzOm8uTWl4aW4uRXZlbnRzLHN0YXRpY3M6e1NUQVJUOm8uQnJvd3Nlci50b3VjaD9bInRvdWNoc3RhcnQiLCJtb3VzZWRvd24iXTpbIm1vdXNlZG93biJdLEVORDp7bW91c2Vkb3duOiJtb3VzZXVwIix0b3VjaHN0YXJ0OiJ0b3VjaGVuZCIscG9pbnRlcmRvd246InRvdWNoZW5kIixNU1BvaW50ZXJEb3duOiJ0b3VjaGVuZCJ9LE1PVkU6e21vdXNlZG93bjoibW91c2Vtb3ZlIix0b3VjaHN0YXJ0OiJ0b3VjaG1vdmUiLHBvaW50ZXJkb3duOiJ0b3VjaG1vdmUiLE1TUG9pbnRlckRvd246InRvdWNobW92ZSJ9fSxpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSl7dGhpcy5fZWxlbWVudD10LHRoaXMuX2RyYWdTdGFydFRhcmdldD1lfHx0fSxlbmFibGU6ZnVuY3Rpb24oKXtpZighdGhpcy5fZW5hYmxlZCl7Zm9yKHZhciB0PW8uRHJhZ2dhYmxlLlNUQVJULmxlbmd0aC0xO3Q+PTA7dC0tKW8uRG9tRXZlbnQub24odGhpcy5fZHJhZ1N0YXJ0VGFyZ2V0LG8uRHJhZ2dhYmxlLlNUQVJUW3RdLHRoaXMuX29uRG93bix0aGlzKTt0aGlzLl9lbmFibGVkPSEwfX0sZGlzYWJsZTpmdW5jdGlvbigpe2lmKHRoaXMuX2VuYWJsZWQpe2Zvcih2YXIgdD1vLkRyYWdnYWJsZS5TVEFSVC5sZW5ndGgtMTt0Pj0wO3QtLSlvLkRvbUV2ZW50Lm9mZih0aGlzLl9kcmFnU3RhcnRUYXJnZXQsby5EcmFnZ2FibGUuU1RBUlRbdF0sdGhpcy5fb25Eb3duLHRoaXMpO3RoaXMuX2VuYWJsZWQ9ITEsdGhpcy5fbW92ZWQ9ITF9fSxfb25Eb3duOmZ1bmN0aW9uKHQpe2lmKHRoaXMuX21vdmVkPSExLCEodC5zaGlmdEtleXx8MSE9PXQud2hpY2gmJjEhPT10LmJ1dHRvbiYmIXQudG91Y2hlc3x8KG8uRG9tRXZlbnQuc3RvcFByb3BhZ2F0aW9uKHQpLG8uRHJhZ2dhYmxlLl9kaXNhYmxlZHx8KG8uRG9tVXRpbC5kaXNhYmxlSW1hZ2VEcmFnKCksby5Eb21VdGlsLmRpc2FibGVUZXh0U2VsZWN0aW9uKCksdGhpcy5fbW92aW5nKSkpKXt2YXIgaT10LnRvdWNoZXM/dC50b3VjaGVzWzBdOnQ7dGhpcy5fc3RhcnRQb2ludD1uZXcgby5Qb2ludChpLmNsaWVudFgsaS5jbGllbnRZKSx0aGlzLl9zdGFydFBvcz10aGlzLl9uZXdQb3M9by5Eb21VdGlsLmdldFBvc2l0aW9uKHRoaXMuX2VsZW1lbnQpLG8uRG9tRXZlbnQub24oZSxvLkRyYWdnYWJsZS5NT1ZFW3QudHlwZV0sdGhpcy5fb25Nb3ZlLHRoaXMpLm9uKGUsby5EcmFnZ2FibGUuRU5EW3QudHlwZV0sdGhpcy5fb25VcCx0aGlzKX19LF9vbk1vdmU6ZnVuY3Rpb24odCl7aWYodC50b3VjaGVzJiZ0LnRvdWNoZXMubGVuZ3RoPjEpcmV0dXJuIHZvaWQodGhpcy5fbW92ZWQ9ITApO3ZhciBpPXQudG91Y2hlcyYmMT09PXQudG91Y2hlcy5sZW5ndGg/dC50b3VjaGVzWzBdOnQsbj1uZXcgby5Qb2ludChpLmNsaWVudFgsaS5jbGllbnRZKSxzPW4uc3VidHJhY3QodGhpcy5fc3RhcnRQb2ludCk7KHMueHx8cy55KSYmKG8uQnJvd3Nlci50b3VjaCYmTWF0aC5hYnMocy54KStNYXRoLmFicyhzLnkpPDN8fChvLkRvbUV2ZW50LnByZXZlbnREZWZhdWx0KHQpLHRoaXMuX21vdmVkfHwodGhpcy5maXJlKCJkcmFnc3RhcnQiKSx0aGlzLl9tb3ZlZD0hMCx0aGlzLl9zdGFydFBvcz1vLkRvbVV0aWwuZ2V0UG9zaXRpb24odGhpcy5fZWxlbWVudCkuc3VidHJhY3Qocyksby5Eb21VdGlsLmFkZENsYXNzKGUuYm9keSwibGVhZmxldC1kcmFnZ2luZyIpLHRoaXMuX2xhc3RUYXJnZXQ9dC50YXJnZXR8fHQuc3JjRWxlbWVudCxvLkRvbVV0aWwuYWRkQ2xhc3ModGhpcy5fbGFzdFRhcmdldCwibGVhZmxldC1kcmFnLXRhcmdldCIpKSx0aGlzLl9uZXdQb3M9dGhpcy5fc3RhcnRQb3MuYWRkKHMpLHRoaXMuX21vdmluZz0hMCxvLlV0aWwuY2FuY2VsQW5pbUZyYW1lKHRoaXMuX2FuaW1SZXF1ZXN0KSx0aGlzLl9hbmltUmVxdWVzdD1vLlV0aWwucmVxdWVzdEFuaW1GcmFtZSh0aGlzLl91cGRhdGVQb3NpdGlvbix0aGlzLCEwLHRoaXMuX2RyYWdTdGFydFRhcmdldCkpKX0sX3VwZGF0ZVBvc2l0aW9uOmZ1bmN0aW9uKCl7dGhpcy5maXJlKCJwcmVkcmFnIiksby5Eb21VdGlsLnNldFBvc2l0aW9uKHRoaXMuX2VsZW1lbnQsdGhpcy5fbmV3UG9zKSx0aGlzLmZpcmUoImRyYWciKX0sX29uVXA6ZnVuY3Rpb24oKXtvLkRvbVV0aWwucmVtb3ZlQ2xhc3MoZS5ib2R5LCJsZWFmbGV0LWRyYWdnaW5nIiksdGhpcy5fbGFzdFRhcmdldCYmKG8uRG9tVXRpbC5yZW1vdmVDbGFzcyh0aGlzLl9sYXN0VGFyZ2V0LCJsZWFmbGV0LWRyYWctdGFyZ2V0IiksdGhpcy5fbGFzdFRhcmdldD1udWxsKTtmb3IodmFyIHQgaW4gby5EcmFnZ2FibGUuTU9WRSlvLkRvbUV2ZW50Lm9mZihlLG8uRHJhZ2dhYmxlLk1PVkVbdF0sdGhpcy5fb25Nb3ZlKS5vZmYoZSxvLkRyYWdnYWJsZS5FTkRbdF0sdGhpcy5fb25VcCk7by5Eb21VdGlsLmVuYWJsZUltYWdlRHJhZygpLG8uRG9tVXRpbC5lbmFibGVUZXh0U2VsZWN0aW9uKCksdGhpcy5fbW92ZWQmJnRoaXMuX21vdmluZyYmKG8uVXRpbC5jYW5jZWxBbmltRnJhbWUodGhpcy5fYW5pbVJlcXVlc3QpLHRoaXMuZmlyZSgiZHJhZ2VuZCIse2Rpc3RhbmNlOnRoaXMuX25ld1Bvcy5kaXN0YW5jZVRvKHRoaXMuX3N0YXJ0UG9zKX0pKSx0aGlzLl9tb3Zpbmc9ITF9fSksby5IYW5kbGVyPW8uQ2xhc3MuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMuX21hcD10fSxlbmFibGU6ZnVuY3Rpb24oKXt0aGlzLl9lbmFibGVkfHwodGhpcy5fZW5hYmxlZD0hMCx0aGlzLmFkZEhvb2tzKCkpfSxkaXNhYmxlOmZ1bmN0aW9uKCl7dGhpcy5fZW5hYmxlZCYmKHRoaXMuX2VuYWJsZWQ9ITEsdGhpcy5yZW1vdmVIb29rcygpKX0sZW5hYmxlZDpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5fZW5hYmxlZH19KSxvLk1hcC5tZXJnZU9wdGlvbnMoe2RyYWdnaW5nOiEwLGluZXJ0aWE6IW8uQnJvd3Nlci5hbmRyb2lkMjMsaW5lcnRpYURlY2VsZXJhdGlvbjozNDAwLGluZXJ0aWFNYXhTcGVlZDoxLzAsaW5lcnRpYVRocmVzaG9sZDpvLkJyb3dzZXIudG91Y2g/MzI6MTgsZWFzZUxpbmVhcml0eTouMjUsd29ybGRDb3B5SnVtcDohMX0pLG8uTWFwLkRyYWc9by5IYW5kbGVyLmV4dGVuZCh7YWRkSG9va3M6ZnVuY3Rpb24oKXtpZighdGhpcy5fZHJhZ2dhYmxlKXt2YXIgdD10aGlzLl9tYXA7dGhpcy5fZHJhZ2dhYmxlPW5ldyBvLkRyYWdnYWJsZSh0Ll9tYXBQYW5lLHQuX2NvbnRhaW5lciksdGhpcy5fZHJhZ2dhYmxlLm9uKHtkcmFnc3RhcnQ6dGhpcy5fb25EcmFnU3RhcnQsZHJhZzp0aGlzLl9vbkRyYWcsZHJhZ2VuZDp0aGlzLl9vbkRyYWdFbmR9LHRoaXMpLHQub3B0aW9ucy53b3JsZENvcHlKdW1wJiYodGhpcy5fZHJhZ2dhYmxlLm9uKCJwcmVkcmFnIix0aGlzLl9vblByZURyYWcsdGhpcyksdC5vbigidmlld3Jlc2V0Iix0aGlzLl9vblZpZXdSZXNldCx0aGlzKSx0LndoZW5SZWFkeSh0aGlzLl9vblZpZXdSZXNldCx0aGlzKSl9dGhpcy5fZHJhZ2dhYmxlLmVuYWJsZSgpfSxyZW1vdmVIb29rczpmdW5jdGlvbigpe3RoaXMuX2RyYWdnYWJsZS5kaXNhYmxlKCl9LG1vdmVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RyYWdnYWJsZSYmdGhpcy5fZHJhZ2dhYmxlLl9tb3ZlZH0sX29uRHJhZ1N0YXJ0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWFwO3QuX3BhbkFuaW0mJnQuX3BhbkFuaW0uc3RvcCgpLHQuZmlyZSgibW92ZXN0YXJ0IikuZmlyZSgiZHJhZ3N0YXJ0IiksdC5vcHRpb25zLmluZXJ0aWEmJih0aGlzLl9wb3NpdGlvbnM9W10sdGhpcy5fdGltZXM9W10pfSxfb25EcmFnOmZ1bmN0aW9uKCl7aWYodGhpcy5fbWFwLm9wdGlvbnMuaW5lcnRpYSl7dmFyIHQ9dGhpcy5fbGFzdFRpbWU9K25ldyBEYXRlLGU9dGhpcy5fbGFzdFBvcz10aGlzLl9kcmFnZ2FibGUuX25ld1Bvczt0aGlzLl9wb3NpdGlvbnMucHVzaChlKSx0aGlzLl90aW1lcy5wdXNoKHQpLHQtdGhpcy5fdGltZXNbMF0+MjAwJiYodGhpcy5fcG9zaXRpb25zLnNoaWZ0KCksdGhpcy5fdGltZXMuc2hpZnQoKSl9dGhpcy5fbWFwLmZpcmUoIm1vdmUiKS5maXJlKCJkcmFnIil9LF9vblZpZXdSZXNldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcC5nZXRTaXplKCkuX2RpdmlkZUJ5KDIpLGU9dGhpcy5fbWFwLmxhdExuZ1RvTGF5ZXJQb2ludChbMCwwXSk7dGhpcy5faW5pdGlhbFdvcmxkT2Zmc2V0PWUuc3VidHJhY3QodCkueCx0aGlzLl93b3JsZFdpZHRoPXRoaXMuX21hcC5wcm9qZWN0KFswLDE4MF0pLnh9LF9vblByZURyYWc6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl93b3JsZFdpZHRoLGU9TWF0aC5yb3VuZCh0LzIpLGk9dGhpcy5faW5pdGlhbFdvcmxkT2Zmc2V0LG49dGhpcy5fZHJhZ2dhYmxlLl9uZXdQb3MueCxvPShuLWUraSkldCtlLWkscz0obitlK2kpJXQtZS1pLGE9TWF0aC5hYnMobytpKTxNYXRoLmFicyhzK2kpP286czt0aGlzLl9kcmFnZ2FibGUuX25ld1Bvcy54PWF9LF9vbkRyYWdFbmQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbWFwLGk9ZS5vcHRpb25zLG49K25ldyBEYXRlLXRoaXMuX2xhc3RUaW1lLHM9IWkuaW5lcnRpYXx8bj5pLmluZXJ0aWFUaHJlc2hvbGR8fCF0aGlzLl9wb3NpdGlvbnNbMF07aWYoZS5maXJlKCJkcmFnZW5kIix0KSxzKWUuZmlyZSgibW92ZWVuZCIpO2Vsc2V7dmFyIGE9dGhpcy5fbGFzdFBvcy5zdWJ0cmFjdCh0aGlzLl9wb3NpdGlvbnNbMF0pLHI9KHRoaXMuX2xhc3RUaW1lK24tdGhpcy5fdGltZXNbMF0pLzFlMyxoPWkuZWFzZUxpbmVhcml0eSxsPWEubXVsdGlwbHlCeShoL3IpLHU9bC5kaXN0YW5jZVRvKFswLDBdKSxjPU1hdGgubWluKGkuaW5lcnRpYU1heFNwZWVkLHUpLGQ9bC5tdWx0aXBseUJ5KGMvdSkscD1jLyhpLmluZXJ0aWFEZWNlbGVyYXRpb24qaCksXz1kLm11bHRpcGx5QnkoLXAvMikucm91bmQoKTtfLngmJl8ueT8oXz1lLl9saW1pdE9mZnNldChfLGUub3B0aW9ucy5tYXhCb3VuZHMpLG8uVXRpbC5yZXF1ZXN0QW5pbUZyYW1lKGZ1bmN0aW9uKCl7ZS5wYW5CeShfLHtkdXJhdGlvbjpwLGVhc2VMaW5lYXJpdHk6aCxub01vdmVTdGFydDohMH0pfSkpOmUuZmlyZSgibW92ZWVuZCIpfX19KSxvLk1hcC5hZGRJbml0SG9vaygiYWRkSGFuZGxlciIsImRyYWdnaW5nIixvLk1hcC5EcmFnKSxvLk1hcC5tZXJnZU9wdGlvbnMoe2RvdWJsZUNsaWNrWm9vbTohMH0pLG8uTWFwLkRvdWJsZUNsaWNrWm9vbT1vLkhhbmRsZXIuZXh0ZW5kKHthZGRIb29rczpmdW5jdGlvbigpe3RoaXMuX21hcC5vbigiZGJsY2xpY2siLHRoaXMuX29uRG91YmxlQ2xpY2ssdGhpcyl9LHJlbW92ZUhvb2tzOmZ1bmN0aW9uKCl7dGhpcy5fbWFwLm9mZigiZGJsY2xpY2siLHRoaXMuX29uRG91YmxlQ2xpY2ssdGhpcyl9LF9vbkRvdWJsZUNsaWNrOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX21hcCxpPWUuZ2V0Wm9vbSgpKyh0Lm9yaWdpbmFsRXZlbnQuc2hpZnRLZXk/LTE6MSk7ImNlbnRlciI9PT1lLm9wdGlvbnMuZG91YmxlQ2xpY2tab29tP2Uuc2V0Wm9vbShpKTplLnNldFpvb21Bcm91bmQodC5jb250YWluZXJQb2ludCxpKX19KSxvLk1hcC5hZGRJbml0SG9vaygiYWRkSGFuZGxlciIsImRvdWJsZUNsaWNrWm9vbSIsby5NYXAuRG91YmxlQ2xpY2tab29tKSxvLk1hcC5tZXJnZU9wdGlvbnMoe3Njcm9sbFdoZWVsWm9vbTohMH0pLG8uTWFwLlNjcm9sbFdoZWVsWm9vbT1vLkhhbmRsZXIuZXh0ZW5kKHthZGRIb29rczpmdW5jdGlvbigpe28uRG9tRXZlbnQub24odGhpcy5fbWFwLl9jb250YWluZXIsIm1vdXNld2hlZWwiLHRoaXMuX29uV2hlZWxTY3JvbGwsdGhpcyksby5Eb21FdmVudC5vbih0aGlzLl9tYXAuX2NvbnRhaW5lciwiTW96TW91c2VQaXhlbFNjcm9sbCIsby5Eb21FdmVudC5wcmV2ZW50RGVmYXVsdCksdGhpcy5fZGVsdGE9MH0scmVtb3ZlSG9va3M6ZnVuY3Rpb24oKXtvLkRvbUV2ZW50Lm9mZih0aGlzLl9tYXAuX2NvbnRhaW5lciwibW91c2V3aGVlbCIsdGhpcy5fb25XaGVlbFNjcm9sbCksby5Eb21FdmVudC5vZmYodGhpcy5fbWFwLl9jb250YWluZXIsIk1vek1vdXNlUGl4ZWxTY3JvbGwiLG8uRG9tRXZlbnQucHJldmVudERlZmF1bHQpfSxfb25XaGVlbFNjcm9sbDpmdW5jdGlvbih0KXt2YXIgZT1vLkRvbUV2ZW50LmdldFdoZWVsRGVsdGEodCk7dGhpcy5fZGVsdGErPWUsdGhpcy5fbGFzdE1vdXNlUG9zPXRoaXMuX21hcC5tb3VzZUV2ZW50VG9Db250YWluZXJQb2ludCh0KSx0aGlzLl9zdGFydFRpbWV8fCh0aGlzLl9zdGFydFRpbWU9K25ldyBEYXRlKTt2YXIgaT1NYXRoLm1heCg0MC0oK25ldyBEYXRlLXRoaXMuX3N0YXJ0VGltZSksMCk7Y2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVyKSx0aGlzLl90aW1lcj1zZXRUaW1lb3V0KG8uYmluZCh0aGlzLl9wZXJmb3JtWm9vbSx0aGlzKSxpKSxvLkRvbUV2ZW50LnByZXZlbnREZWZhdWx0KHQpLG8uRG9tRXZlbnQuc3RvcFByb3BhZ2F0aW9uKHQpfSxfcGVyZm9ybVpvb206ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXAsZT10aGlzLl9kZWx0YSxpPXQuZ2V0Wm9vbSgpO2U9ZT4wP01hdGguY2VpbChlKTpNYXRoLmZsb29yKGUpLGU9TWF0aC5tYXgoTWF0aC5taW4oZSw0KSwtNCksZT10Ll9saW1pdFpvb20oaStlKS1pLHRoaXMuX2RlbHRhPTAsdGhpcy5fc3RhcnRUaW1lPW51bGwsZSYmKCJjZW50ZXIiPT09dC5vcHRpb25zLnNjcm9sbFdoZWVsWm9vbT90LnNldFpvb20oaStlKTp0LnNldFpvb21Bcm91bmQodGhpcy5fbGFzdE1vdXNlUG9zLGkrZSkpfX0pLG8uTWFwLmFkZEluaXRIb29rKCJhZGRIYW5kbGVyIiwic2Nyb2xsV2hlZWxab29tIixvLk1hcC5TY3JvbGxXaGVlbFpvb20pLG8uZXh0ZW5kKG8uRG9tRXZlbnQse190b3VjaHN0YXJ0Om8uQnJvd3Nlci5tc1BvaW50ZXI/Ik1TUG9pbnRlckRvd24iOm8uQnJvd3Nlci5wb2ludGVyPyJwb2ludGVyZG93biI6InRvdWNoc3RhcnQiLF90b3VjaGVuZDpvLkJyb3dzZXIubXNQb2ludGVyPyJNU1BvaW50ZXJVcCI6by5Ccm93c2VyLnBvaW50ZXI/InBvaW50ZXJ1cCI6InRvdWNoZW5kIixhZGREb3VibGVUYXBMaXN0ZW5lcjpmdW5jdGlvbih0LGksbil7ZnVuY3Rpb24gcyh0KXt2YXIgZTtpZihvLkJyb3dzZXIucG9pbnRlcj8oXy5wdXNoKHQucG9pbnRlcklkKSxlPV8ubGVuZ3RoKTplPXQudG91Y2hlcy5sZW5ndGgsIShlPjEpKXt2YXIgaT1EYXRlLm5vdygpLG49aS0ocnx8aSk7aD10LnRvdWNoZXM/dC50b3VjaGVzWzBdOnQsbD1uPjAmJnU+PW4scj1pfX1mdW5jdGlvbiBhKHQpe2lmKG8uQnJvd3Nlci5wb2ludGVyKXt2YXIgZT1fLmluZGV4T2YodC5wb2ludGVySWQpO2lmKC0xPT09ZSlyZXR1cm47Xy5zcGxpY2UoZSwxKX1pZihsKXtpZihvLkJyb3dzZXIucG9pbnRlcil7dmFyIG4scz17fTtmb3IodmFyIGEgaW4gaCluPWhbYV0sc1thXT0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmJpbmQoaCk6bjtoPXN9aC50eXBlPSJkYmxjbGljayIsaShoKSxyPW51bGx9fXZhciByLGgsbD0hMSx1PTI1MCxjPSJfbGVhZmxldF8iLGQ9dGhpcy5fdG91Y2hzdGFydCxwPXRoaXMuX3RvdWNoZW5kLF89W107dFtjK2Qrbl09cyx0W2MrcCtuXT1hO3ZhciBtPW8uQnJvd3Nlci5wb2ludGVyP2UuZG9jdW1lbnRFbGVtZW50OnQ7cmV0dXJuIHQuYWRkRXZlbnRMaXN0ZW5lcihkLHMsITEpLG0uYWRkRXZlbnRMaXN0ZW5lcihwLGEsITEpLG8uQnJvd3Nlci5wb2ludGVyJiZtLmFkZEV2ZW50TGlzdGVuZXIoby5Eb21FdmVudC5QT0lOVEVSX0NBTkNFTCxhLCExKSx0aGlzfSxyZW1vdmVEb3VibGVUYXBMaXN0ZW5lcjpmdW5jdGlvbih0LGkpe3ZhciBuPSJfbGVhZmxldF8iO3JldHVybiB0LnJlbW92ZUV2ZW50TGlzdGVuZXIodGhpcy5fdG91Y2hzdGFydCx0W24rdGhpcy5fdG91Y2hzdGFydCtpXSwhMSksKG8uQnJvd3Nlci5wb2ludGVyP2UuZG9jdW1lbnRFbGVtZW50OnQpLnJlbW92ZUV2ZW50TGlzdGVuZXIodGhpcy5fdG91Y2hlbmQsdFtuK3RoaXMuX3RvdWNoZW5kK2ldLCExKSxvLkJyb3dzZXIucG9pbnRlciYmZS5kb2N1bWVudEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihvLkRvbUV2ZW50LlBPSU5URVJfQ0FOQ0VMLHRbbit0aGlzLl90b3VjaGVuZCtpXSwhMSksdGhpc319KSxvLmV4dGVuZChvLkRvbUV2ZW50LHtQT0lOVEVSX0RPV046by5Ccm93c2VyLm1zUG9pbnRlcj8iTVNQb2ludGVyRG93biI6InBvaW50ZXJkb3duIixQT0lOVEVSX01PVkU6by5Ccm93c2VyLm1zUG9pbnRlcj8iTVNQb2ludGVyTW92ZSI6InBvaW50ZXJtb3ZlIixQT0lOVEVSX1VQOm8uQnJvd3Nlci5tc1BvaW50ZXI/Ik1TUG9pbnRlclVwIjoicG9pbnRlcnVwIixQT0lOVEVSX0NBTkNFTDpvLkJyb3dzZXIubXNQb2ludGVyPyJNU1BvaW50ZXJDYW5jZWwiOiJwb2ludGVyY2FuY2VsIixfcG9pbnRlcnM6W10sX3BvaW50ZXJEb2N1bWVudExpc3RlbmVyOiExLGFkZFBvaW50ZXJMaXN0ZW5lcjpmdW5jdGlvbih0LGUsaSxuKXtzd2l0Y2goZSl7Y2FzZSJ0b3VjaHN0YXJ0IjpyZXR1cm4gdGhpcy5hZGRQb2ludGVyTGlzdGVuZXJTdGFydCh0LGUsaSxuKTtjYXNlInRvdWNoZW5kIjpyZXR1cm4gdGhpcy5hZGRQb2ludGVyTGlzdGVuZXJFbmQodCxlLGksbik7Y2FzZSJ0b3VjaG1vdmUiOnJldHVybiB0aGlzLmFkZFBvaW50ZXJMaXN0ZW5lck1vdmUodCxlLGksbik7ZGVmYXVsdDp0aHJvdyJVbmtub3duIHRvdWNoIGV2ZW50IHR5cGUifX0sYWRkUG9pbnRlckxpc3RlbmVyU3RhcnQ6ZnVuY3Rpb24odCxpLG4scyl7dmFyIGE9Il9sZWFmbGV0XyIscj10aGlzLl9wb2ludGVycyxoPWZ1bmN0aW9uKHQpe28uRG9tRXZlbnQucHJldmVudERlZmF1bHQodCk7Zm9yKHZhciBlPSExLGk9MDtpPHIubGVuZ3RoO2krKylpZihyW2ldLnBvaW50ZXJJZD09PXQucG9pbnRlcklkKXtlPSEwOwpicmVha31lfHxyLnB1c2godCksdC50b3VjaGVzPXIuc2xpY2UoKSx0LmNoYW5nZWRUb3VjaGVzPVt0XSxuKHQpfTtpZih0W2ErInRvdWNoc3RhcnQiK3NdPWgsdC5hZGRFdmVudExpc3RlbmVyKHRoaXMuUE9JTlRFUl9ET1dOLGgsITEpLCF0aGlzLl9wb2ludGVyRG9jdW1lbnRMaXN0ZW5lcil7dmFyIGw9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTxyLmxlbmd0aDtlKyspaWYocltlXS5wb2ludGVySWQ9PT10LnBvaW50ZXJJZCl7ci5zcGxpY2UoZSwxKTticmVha319O2UuZG9jdW1lbnRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIodGhpcy5QT0lOVEVSX1VQLGwsITEpLGUuZG9jdW1lbnRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIodGhpcy5QT0lOVEVSX0NBTkNFTCxsLCExKSx0aGlzLl9wb2ludGVyRG9jdW1lbnRMaXN0ZW5lcj0hMH1yZXR1cm4gdGhpc30sYWRkUG9pbnRlckxpc3RlbmVyTW92ZTpmdW5jdGlvbih0LGUsaSxuKXtmdW5jdGlvbiBvKHQpe2lmKHQucG9pbnRlclR5cGUhPT10Lk1TUE9JTlRFUl9UWVBFX01PVVNFJiYibW91c2UiIT09dC5wb2ludGVyVHlwZXx8MCE9PXQuYnV0dG9ucyl7Zm9yKHZhciBlPTA7ZTxhLmxlbmd0aDtlKyspaWYoYVtlXS5wb2ludGVySWQ9PT10LnBvaW50ZXJJZCl7YVtlXT10O2JyZWFrfXQudG91Y2hlcz1hLnNsaWNlKCksdC5jaGFuZ2VkVG91Y2hlcz1bdF0saSh0KX19dmFyIHM9Il9sZWFmbGV0XyIsYT10aGlzLl9wb2ludGVycztyZXR1cm4gdFtzKyJ0b3VjaG1vdmUiK25dPW8sdC5hZGRFdmVudExpc3RlbmVyKHRoaXMuUE9JTlRFUl9NT1ZFLG8sITEpLHRoaXN9LGFkZFBvaW50ZXJMaXN0ZW5lckVuZDpmdW5jdGlvbih0LGUsaSxuKXt2YXIgbz0iX2xlYWZsZXRfIixzPXRoaXMuX3BvaW50ZXJzLGE9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTxzLmxlbmd0aDtlKyspaWYoc1tlXS5wb2ludGVySWQ9PT10LnBvaW50ZXJJZCl7cy5zcGxpY2UoZSwxKTticmVha310LnRvdWNoZXM9cy5zbGljZSgpLHQuY2hhbmdlZFRvdWNoZXM9W3RdLGkodCl9O3JldHVybiB0W28rInRvdWNoZW5kIituXT1hLHQuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLlBPSU5URVJfVVAsYSwhMSksdC5hZGRFdmVudExpc3RlbmVyKHRoaXMuUE9JTlRFUl9DQU5DRUwsYSwhMSksdGhpc30scmVtb3ZlUG9pbnRlckxpc3RlbmVyOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbj0iX2xlYWZsZXRfIixvPXRbbitlK2ldO3N3aXRjaChlKXtjYXNlInRvdWNoc3RhcnQiOnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLlBPSU5URVJfRE9XTixvLCExKTticmVhaztjYXNlInRvdWNobW92ZSI6dC5yZW1vdmVFdmVudExpc3RlbmVyKHRoaXMuUE9JTlRFUl9NT1ZFLG8sITEpO2JyZWFrO2Nhc2UidG91Y2hlbmQiOnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLlBPSU5URVJfVVAsbywhMSksdC5yZW1vdmVFdmVudExpc3RlbmVyKHRoaXMuUE9JTlRFUl9DQU5DRUwsbywhMSl9cmV0dXJuIHRoaXN9fSksby5NYXAubWVyZ2VPcHRpb25zKHt0b3VjaFpvb206by5Ccm93c2VyLnRvdWNoJiYhby5Ccm93c2VyLmFuZHJvaWQyMyxib3VuY2VBdFpvb21MaW1pdHM6ITB9KSxvLk1hcC5Ub3VjaFpvb209by5IYW5kbGVyLmV4dGVuZCh7YWRkSG9va3M6ZnVuY3Rpb24oKXtvLkRvbUV2ZW50Lm9uKHRoaXMuX21hcC5fY29udGFpbmVyLCJ0b3VjaHN0YXJ0Iix0aGlzLl9vblRvdWNoU3RhcnQsdGhpcyl9LHJlbW92ZUhvb2tzOmZ1bmN0aW9uKCl7by5Eb21FdmVudC5vZmYodGhpcy5fbWFwLl9jb250YWluZXIsInRvdWNoc3RhcnQiLHRoaXMuX29uVG91Y2hTdGFydCx0aGlzKX0sX29uVG91Y2hTdGFydDpmdW5jdGlvbih0KXt2YXIgaT10aGlzLl9tYXA7aWYodC50b3VjaGVzJiYyPT09dC50b3VjaGVzLmxlbmd0aCYmIWkuX2FuaW1hdGluZ1pvb20mJiF0aGlzLl96b29taW5nKXt2YXIgbj1pLm1vdXNlRXZlbnRUb0xheWVyUG9pbnQodC50b3VjaGVzWzBdKSxzPWkubW91c2VFdmVudFRvTGF5ZXJQb2ludCh0LnRvdWNoZXNbMV0pLGE9aS5fZ2V0Q2VudGVyTGF5ZXJQb2ludCgpO3RoaXMuX3N0YXJ0Q2VudGVyPW4uYWRkKHMpLl9kaXZpZGVCeSgyKSx0aGlzLl9zdGFydERpc3Q9bi5kaXN0YW5jZVRvKHMpLHRoaXMuX21vdmVkPSExLHRoaXMuX3pvb21pbmc9ITAsdGhpcy5fY2VudGVyT2Zmc2V0PWEuc3VidHJhY3QodGhpcy5fc3RhcnRDZW50ZXIpLGkuX3BhbkFuaW0mJmkuX3BhbkFuaW0uc3RvcCgpLG8uRG9tRXZlbnQub24oZSwidG91Y2htb3ZlIix0aGlzLl9vblRvdWNoTW92ZSx0aGlzKS5vbihlLCJ0b3VjaGVuZCIsdGhpcy5fb25Ub3VjaEVuZCx0aGlzKSxvLkRvbUV2ZW50LnByZXZlbnREZWZhdWx0KHQpfX0sX29uVG91Y2hNb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX21hcDtpZih0LnRvdWNoZXMmJjI9PT10LnRvdWNoZXMubGVuZ3RoJiZ0aGlzLl96b29taW5nKXt2YXIgaT1lLm1vdXNlRXZlbnRUb0xheWVyUG9pbnQodC50b3VjaGVzWzBdKSxuPWUubW91c2VFdmVudFRvTGF5ZXJQb2ludCh0LnRvdWNoZXNbMV0pO3RoaXMuX3NjYWxlPWkuZGlzdGFuY2VUbyhuKS90aGlzLl9zdGFydERpc3QsdGhpcy5fZGVsdGE9aS5fYWRkKG4pLl9kaXZpZGVCeSgyKS5fc3VidHJhY3QodGhpcy5fc3RhcnRDZW50ZXIpLDEhPT10aGlzLl9zY2FsZSYmKGUub3B0aW9ucy5ib3VuY2VBdFpvb21MaW1pdHN8fCEoZS5nZXRab29tKCk9PT1lLmdldE1pblpvb20oKSYmdGhpcy5fc2NhbGU8MXx8ZS5nZXRab29tKCk9PT1lLmdldE1heFpvb20oKSYmdGhpcy5fc2NhbGU+MSkpJiYodGhpcy5fbW92ZWR8fChvLkRvbVV0aWwuYWRkQ2xhc3MoZS5fbWFwUGFuZSwibGVhZmxldC10b3VjaGluZyIpLGUuZmlyZSgibW92ZXN0YXJ0IikuZmlyZSgiem9vbXN0YXJ0IiksdGhpcy5fbW92ZWQ9ITApLG8uVXRpbC5jYW5jZWxBbmltRnJhbWUodGhpcy5fYW5pbVJlcXVlc3QpLHRoaXMuX2FuaW1SZXF1ZXN0PW8uVXRpbC5yZXF1ZXN0QW5pbUZyYW1lKHRoaXMuX3VwZGF0ZU9uTW92ZSx0aGlzLCEwLHRoaXMuX21hcC5fY29udGFpbmVyKSxvLkRvbUV2ZW50LnByZXZlbnREZWZhdWx0KHQpKX19LF91cGRhdGVPbk1vdmU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXAsZT10aGlzLl9nZXRTY2FsZU9yaWdpbigpLGk9dC5sYXllclBvaW50VG9MYXRMbmcoZSksbj10LmdldFNjYWxlWm9vbSh0aGlzLl9zY2FsZSk7dC5fYW5pbWF0ZVpvb20oaSxuLHRoaXMuX3N0YXJ0Q2VudGVyLHRoaXMuX3NjYWxlLHRoaXMuX2RlbHRhLCExLCEwKX0sX29uVG91Y2hFbmQ6ZnVuY3Rpb24oKXtpZighdGhpcy5fbW92ZWR8fCF0aGlzLl96b29taW5nKXJldHVybiB2b2lkKHRoaXMuX3pvb21pbmc9ITEpO3ZhciB0PXRoaXMuX21hcDt0aGlzLl96b29taW5nPSExLG8uRG9tVXRpbC5yZW1vdmVDbGFzcyh0Ll9tYXBQYW5lLCJsZWFmbGV0LXRvdWNoaW5nIiksby5VdGlsLmNhbmNlbEFuaW1GcmFtZSh0aGlzLl9hbmltUmVxdWVzdCksby5Eb21FdmVudC5vZmYoZSwidG91Y2htb3ZlIix0aGlzLl9vblRvdWNoTW92ZSkub2ZmKGUsInRvdWNoZW5kIix0aGlzLl9vblRvdWNoRW5kKTt2YXIgaT10aGlzLl9nZXRTY2FsZU9yaWdpbigpLG49dC5sYXllclBvaW50VG9MYXRMbmcoaSkscz10LmdldFpvb20oKSxhPXQuZ2V0U2NhbGVab29tKHRoaXMuX3NjYWxlKS1zLHI9YT4wP01hdGguY2VpbChhKTpNYXRoLmZsb29yKGEpLGg9dC5fbGltaXRab29tKHMrciksbD10LmdldFpvb21TY2FsZShoKS90aGlzLl9zY2FsZTt0Ll9hbmltYXRlWm9vbShuLGgsaSxsKX0sX2dldFNjYWxlT3JpZ2luOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fY2VudGVyT2Zmc2V0LnN1YnRyYWN0KHRoaXMuX2RlbHRhKS5kaXZpZGVCeSh0aGlzLl9zY2FsZSk7cmV0dXJuIHRoaXMuX3N0YXJ0Q2VudGVyLmFkZCh0KX19KSxvLk1hcC5hZGRJbml0SG9vaygiYWRkSGFuZGxlciIsInRvdWNoWm9vbSIsby5NYXAuVG91Y2hab29tKSxvLk1hcC5tZXJnZU9wdGlvbnMoe3RhcDohMCx0YXBUb2xlcmFuY2U6MTV9KSxvLk1hcC5UYXA9by5IYW5kbGVyLmV4dGVuZCh7YWRkSG9va3M6ZnVuY3Rpb24oKXtvLkRvbUV2ZW50Lm9uKHRoaXMuX21hcC5fY29udGFpbmVyLCJ0b3VjaHN0YXJ0Iix0aGlzLl9vbkRvd24sdGhpcyl9LHJlbW92ZUhvb2tzOmZ1bmN0aW9uKCl7by5Eb21FdmVudC5vZmYodGhpcy5fbWFwLl9jb250YWluZXIsInRvdWNoc3RhcnQiLHRoaXMuX29uRG93bix0aGlzKX0sX29uRG93bjpmdW5jdGlvbih0KXtpZih0LnRvdWNoZXMpe2lmKG8uRG9tRXZlbnQucHJldmVudERlZmF1bHQodCksdGhpcy5fZmlyZUNsaWNrPSEwLHQudG91Y2hlcy5sZW5ndGg+MSlyZXR1cm4gdGhpcy5fZmlyZUNsaWNrPSExLHZvaWQgY2xlYXJUaW1lb3V0KHRoaXMuX2hvbGRUaW1lb3V0KTt2YXIgaT10LnRvdWNoZXNbMF0sbj1pLnRhcmdldDt0aGlzLl9zdGFydFBvcz10aGlzLl9uZXdQb3M9bmV3IG8uUG9pbnQoaS5jbGllbnRYLGkuY2xpZW50WSksbi50YWdOYW1lJiYiYSI9PT1uLnRhZ05hbWUudG9Mb3dlckNhc2UoKSYmby5Eb21VdGlsLmFkZENsYXNzKG4sImxlYWZsZXQtYWN0aXZlIiksdGhpcy5faG9sZFRpbWVvdXQ9c2V0VGltZW91dChvLmJpbmQoZnVuY3Rpb24oKXt0aGlzLl9pc1RhcFZhbGlkKCkmJih0aGlzLl9maXJlQ2xpY2s9ITEsdGhpcy5fb25VcCgpLHRoaXMuX3NpbXVsYXRlRXZlbnQoImNvbnRleHRtZW51IixpKSl9LHRoaXMpLDFlMyksby5Eb21FdmVudC5vbihlLCJ0b3VjaG1vdmUiLHRoaXMuX29uTW92ZSx0aGlzKS5vbihlLCJ0b3VjaGVuZCIsdGhpcy5fb25VcCx0aGlzKX19LF9vblVwOmZ1bmN0aW9uKHQpe2lmKGNsZWFyVGltZW91dCh0aGlzLl9ob2xkVGltZW91dCksby5Eb21FdmVudC5vZmYoZSwidG91Y2htb3ZlIix0aGlzLl9vbk1vdmUsdGhpcykub2ZmKGUsInRvdWNoZW5kIix0aGlzLl9vblVwLHRoaXMpLHRoaXMuX2ZpcmVDbGljayYmdCYmdC5jaGFuZ2VkVG91Y2hlcyl7dmFyIGk9dC5jaGFuZ2VkVG91Y2hlc1swXSxuPWkudGFyZ2V0O24mJm4udGFnTmFtZSYmImEiPT09bi50YWdOYW1lLnRvTG93ZXJDYXNlKCkmJm8uRG9tVXRpbC5yZW1vdmVDbGFzcyhuLCJsZWFmbGV0LWFjdGl2ZSIpLHRoaXMuX2lzVGFwVmFsaWQoKSYmdGhpcy5fc2ltdWxhdGVFdmVudCgiY2xpY2siLGkpfX0sX2lzVGFwVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbmV3UG9zLmRpc3RhbmNlVG8odGhpcy5fc3RhcnRQb3MpPD10aGlzLl9tYXAub3B0aW9ucy50YXBUb2xlcmFuY2V9LF9vbk1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dC50b3VjaGVzWzBdO3RoaXMuX25ld1Bvcz1uZXcgby5Qb2ludChlLmNsaWVudFgsZS5jbGllbnRZKX0sX3NpbXVsYXRlRXZlbnQ6ZnVuY3Rpb24oaSxuKXt2YXIgbz1lLmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50cyIpO28uX3NpbXVsYXRlZD0hMCxuLnRhcmdldC5fc2ltdWxhdGVkQ2xpY2s9ITAsby5pbml0TW91c2VFdmVudChpLCEwLCEwLHQsMSxuLnNjcmVlblgsbi5zY3JlZW5ZLG4uY2xpZW50WCxuLmNsaWVudFksITEsITEsITEsITEsMCxudWxsKSxuLnRhcmdldC5kaXNwYXRjaEV2ZW50KG8pfX0pLG8uQnJvd3Nlci50b3VjaCYmIW8uQnJvd3Nlci5wb2ludGVyJiZvLk1hcC5hZGRJbml0SG9vaygiYWRkSGFuZGxlciIsInRhcCIsby5NYXAuVGFwKSxvLk1hcC5tZXJnZU9wdGlvbnMoe2JveFpvb206ITB9KSxvLk1hcC5Cb3hab29tPW8uSGFuZGxlci5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5fbWFwPXQsdGhpcy5fY29udGFpbmVyPXQuX2NvbnRhaW5lcix0aGlzLl9wYW5lPXQuX3BhbmVzLm92ZXJsYXlQYW5lLHRoaXMuX21vdmVkPSExfSxhZGRIb29rczpmdW5jdGlvbigpe28uRG9tRXZlbnQub24odGhpcy5fY29udGFpbmVyLCJtb3VzZWRvd24iLHRoaXMuX29uTW91c2VEb3duLHRoaXMpfSxyZW1vdmVIb29rczpmdW5jdGlvbigpe28uRG9tRXZlbnQub2ZmKHRoaXMuX2NvbnRhaW5lciwibW91c2Vkb3duIix0aGlzLl9vbk1vdXNlRG93biksdGhpcy5fbW92ZWQ9ITF9LG1vdmVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21vdmVkfSxfb25Nb3VzZURvd246ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX21vdmVkPSExLCF0LnNoaWZ0S2V5fHwxIT09dC53aGljaCYmMSE9PXQuYnV0dG9uPyExOihvLkRvbVV0aWwuZGlzYWJsZVRleHRTZWxlY3Rpb24oKSxvLkRvbVV0aWwuZGlzYWJsZUltYWdlRHJhZygpLHRoaXMuX3N0YXJ0TGF5ZXJQb2ludD10aGlzLl9tYXAubW91c2VFdmVudFRvTGF5ZXJQb2ludCh0KSx2b2lkIG8uRG9tRXZlbnQub24oZSwibW91c2Vtb3ZlIix0aGlzLl9vbk1vdXNlTW92ZSx0aGlzKS5vbihlLCJtb3VzZXVwIix0aGlzLl9vbk1vdXNlVXAsdGhpcykub24oZSwia2V5ZG93biIsdGhpcy5fb25LZXlEb3duLHRoaXMpKX0sX29uTW91c2VNb3ZlOmZ1bmN0aW9uKHQpe3RoaXMuX21vdmVkfHwodGhpcy5fYm94PW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsImxlYWZsZXQtem9vbS1ib3giLHRoaXMuX3BhbmUpLG8uRG9tVXRpbC5zZXRQb3NpdGlvbih0aGlzLl9ib3gsdGhpcy5fc3RhcnRMYXllclBvaW50KSx0aGlzLl9jb250YWluZXIuc3R5bGUuY3Vyc29yPSJjcm9zc2hhaXIiLHRoaXMuX21hcC5maXJlKCJib3h6b29tc3RhcnQiKSk7dmFyIGU9dGhpcy5fc3RhcnRMYXllclBvaW50LGk9dGhpcy5fYm94LG49dGhpcy5fbWFwLm1vdXNlRXZlbnRUb0xheWVyUG9pbnQodCkscz1uLnN1YnRyYWN0KGUpLGE9bmV3IG8uUG9pbnQoTWF0aC5taW4obi54LGUueCksTWF0aC5taW4obi55LGUueSkpO28uRG9tVXRpbC5zZXRQb3NpdGlvbihpLGEpLHRoaXMuX21vdmVkPSEwLGkuc3R5bGUud2lkdGg9TWF0aC5tYXgoMCxNYXRoLmFicyhzLngpLTQpKyJweCIsaS5zdHlsZS5oZWlnaHQ9TWF0aC5tYXgoMCxNYXRoLmFicyhzLnkpLTQpKyJweCJ9LF9maW5pc2g6ZnVuY3Rpb24oKXt0aGlzLl9tb3ZlZCYmKHRoaXMuX3BhbmUucmVtb3ZlQ2hpbGQodGhpcy5fYm94KSx0aGlzLl9jb250YWluZXIuc3R5bGUuY3Vyc29yPSIiKSxvLkRvbVV0aWwuZW5hYmxlVGV4dFNlbGVjdGlvbigpLG8uRG9tVXRpbC5lbmFibGVJbWFnZURyYWcoKSxvLkRvbUV2ZW50Lm9mZihlLCJtb3VzZW1vdmUiLHRoaXMuX29uTW91c2VNb3ZlKS5vZmYoZSwibW91c2V1cCIsdGhpcy5fb25Nb3VzZVVwKS5vZmYoZSwia2V5ZG93biIsdGhpcy5fb25LZXlEb3duKX0sX29uTW91c2VVcDpmdW5jdGlvbih0KXt0aGlzLl9maW5pc2goKTt2YXIgZT10aGlzLl9tYXAsaT1lLm1vdXNlRXZlbnRUb0xheWVyUG9pbnQodCk7aWYoIXRoaXMuX3N0YXJ0TGF5ZXJQb2ludC5lcXVhbHMoaSkpe3ZhciBuPW5ldyBvLkxhdExuZ0JvdW5kcyhlLmxheWVyUG9pbnRUb0xhdExuZyh0aGlzLl9zdGFydExheWVyUG9pbnQpLGUubGF5ZXJQb2ludFRvTGF0TG5nKGkpKTtlLmZpdEJvdW5kcyhuKSxlLmZpcmUoImJveHpvb21lbmQiLHtib3hab29tQm91bmRzOm59KX19LF9vbktleURvd246ZnVuY3Rpb24odCl7Mjc9PT10LmtleUNvZGUmJnRoaXMuX2ZpbmlzaCgpfX0pLG8uTWFwLmFkZEluaXRIb29rKCJhZGRIYW5kbGVyIiwiYm94Wm9vbSIsby5NYXAuQm94Wm9vbSksby5NYXAubWVyZ2VPcHRpb25zKHtrZXlib2FyZDohMCxrZXlib2FyZFBhbk9mZnNldDo4MCxrZXlib2FyZFpvb21PZmZzZXQ6MX0pLG8uTWFwLktleWJvYXJkPW8uSGFuZGxlci5leHRlbmQoe2tleUNvZGVzOntsZWZ0OlszN10scmlnaHQ6WzM5XSxkb3duOls0MF0sdXA6WzM4XSx6b29tSW46WzE4NywxMDcsNjEsMTcxXSx6b29tT3V0OlsxODksMTA5LDE3M119LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5fbWFwPXQsdGhpcy5fc2V0UGFuT2Zmc2V0KHQub3B0aW9ucy5rZXlib2FyZFBhbk9mZnNldCksdGhpcy5fc2V0Wm9vbU9mZnNldCh0Lm9wdGlvbnMua2V5Ym9hcmRab29tT2Zmc2V0KX0sYWRkSG9va3M6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXAuX2NvbnRhaW5lcjstMT09PXQudGFiSW5kZXgmJih0LnRhYkluZGV4PSIwIiksby5Eb21FdmVudC5vbih0LCJmb2N1cyIsdGhpcy5fb25Gb2N1cyx0aGlzKS5vbih0LCJibHVyIix0aGlzLl9vbkJsdXIsdGhpcykub24odCwibW91c2Vkb3duIix0aGlzLl9vbk1vdXNlRG93bix0aGlzKSx0aGlzLl9tYXAub24oImZvY3VzIix0aGlzLl9hZGRIb29rcyx0aGlzKS5vbigiYmx1ciIsdGhpcy5fcmVtb3ZlSG9va3MsdGhpcyl9LHJlbW92ZUhvb2tzOmZ1bmN0aW9uKCl7dGhpcy5fcmVtb3ZlSG9va3MoKTt2YXIgdD10aGlzLl9tYXAuX2NvbnRhaW5lcjtvLkRvbUV2ZW50Lm9mZih0LCJmb2N1cyIsdGhpcy5fb25Gb2N1cyx0aGlzKS5vZmYodCwiYmx1ciIsdGhpcy5fb25CbHVyLHRoaXMpLm9mZih0LCJtb3VzZWRvd24iLHRoaXMuX29uTW91c2VEb3duLHRoaXMpLHRoaXMuX21hcC5vZmYoImZvY3VzIix0aGlzLl9hZGRIb29rcyx0aGlzKS5vZmYoImJsdXIiLHRoaXMuX3JlbW92ZUhvb2tzLHRoaXMpfSxfb25Nb3VzZURvd246ZnVuY3Rpb24oKXtpZighdGhpcy5fZm9jdXNlZCl7dmFyIGk9ZS5ib2R5LG49ZS5kb2N1bWVudEVsZW1lbnQsbz1pLnNjcm9sbFRvcHx8bi5zY3JvbGxUb3Ascz1pLnNjcm9sbExlZnR8fG4uc2Nyb2xsTGVmdDt0aGlzLl9tYXAuX2NvbnRhaW5lci5mb2N1cygpLHQuc2Nyb2xsVG8ocyxvKX19LF9vbkZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5fZm9jdXNlZD0hMCx0aGlzLl9tYXAuZmlyZSgiZm9jdXMiKX0sX29uQmx1cjpmdW5jdGlvbigpe3RoaXMuX2ZvY3VzZWQ9ITEsdGhpcy5fbWFwLmZpcmUoImJsdXIiKX0sX3NldFBhbk9mZnNldDpmdW5jdGlvbih0KXt2YXIgZSxpLG49dGhpcy5fcGFuS2V5cz17fSxvPXRoaXMua2V5Q29kZXM7Zm9yKGU9MCxpPW8ubGVmdC5sZW5ndGg7aT5lO2UrKyluW28ubGVmdFtlXV09Wy0xKnQsMF07Zm9yKGU9MCxpPW8ucmlnaHQubGVuZ3RoO2k+ZTtlKyspbltvLnJpZ2h0W2VdXT1bdCwwXTtmb3IoZT0wLGk9by5kb3duLmxlbmd0aDtpPmU7ZSsrKW5bby5kb3duW2VdXT1bMCx0XTtmb3IoZT0wLGk9by51cC5sZW5ndGg7aT5lO2UrKyluW28udXBbZV1dPVswLC0xKnRdfSxfc2V0Wm9vbU9mZnNldDpmdW5jdGlvbih0KXt2YXIgZSxpLG49dGhpcy5fem9vbUtleXM9e30sbz10aGlzLmtleUNvZGVzO2ZvcihlPTAsaT1vLnpvb21Jbi5sZW5ndGg7aT5lO2UrKyluW28uem9vbUluW2VdXT10O2ZvcihlPTAsaT1vLnpvb21PdXQubGVuZ3RoO2k+ZTtlKyspbltvLnpvb21PdXRbZV1dPS10fSxfYWRkSG9va3M6ZnVuY3Rpb24oKXtvLkRvbUV2ZW50Lm9uKGUsImtleWRvd24iLHRoaXMuX29uS2V5RG93bix0aGlzKX0sX3JlbW92ZUhvb2tzOmZ1bmN0aW9uKCl7by5Eb21FdmVudC5vZmYoZSwia2V5ZG93biIsdGhpcy5fb25LZXlEb3duLHRoaXMpfSxfb25LZXlEb3duOmZ1bmN0aW9uKHQpe3ZhciBlPXQua2V5Q29kZSxpPXRoaXMuX21hcDtpZihlIGluIHRoaXMuX3BhbktleXMpe2lmKGkuX3BhbkFuaW0mJmkuX3BhbkFuaW0uX2luUHJvZ3Jlc3MpcmV0dXJuO2kucGFuQnkodGhpcy5fcGFuS2V5c1tlXSksaS5vcHRpb25zLm1heEJvdW5kcyYmaS5wYW5JbnNpZGVCb3VuZHMoaS5vcHRpb25zLm1heEJvdW5kcyl9ZWxzZXtpZighKGUgaW4gdGhpcy5fem9vbUtleXMpKXJldHVybjtpLnNldFpvb20oaS5nZXRab29tKCkrdGhpcy5fem9vbUtleXNbZV0pfW8uRG9tRXZlbnQuc3RvcCh0KX19KSxvLk1hcC5hZGRJbml0SG9vaygiYWRkSGFuZGxlciIsImtleWJvYXJkIixvLk1hcC5LZXlib2FyZCksby5IYW5kbGVyLk1hcmtlckRyYWc9by5IYW5kbGVyLmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbih0KXt0aGlzLl9tYXJrZXI9dH0sYWRkSG9va3M6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXJrZXIuX2ljb247dGhpcy5fZHJhZ2dhYmxlfHwodGhpcy5fZHJhZ2dhYmxlPW5ldyBvLkRyYWdnYWJsZSh0LHQpKSx0aGlzLl9kcmFnZ2FibGUub24oImRyYWdzdGFydCIsdGhpcy5fb25EcmFnU3RhcnQsdGhpcykub24oImRyYWciLHRoaXMuX29uRHJhZyx0aGlzKS5vbigiZHJhZ2VuZCIsdGhpcy5fb25EcmFnRW5kLHRoaXMpLHRoaXMuX2RyYWdnYWJsZS5lbmFibGUoKSxvLkRvbVV0aWwuYWRkQ2xhc3ModGhpcy5fbWFya2VyLl9pY29uLCJsZWFmbGV0LW1hcmtlci1kcmFnZ2FibGUiKX0scmVtb3ZlSG9va3M6ZnVuY3Rpb24oKXt0aGlzLl9kcmFnZ2FibGUub2ZmKCJkcmFnc3RhcnQiLHRoaXMuX29uRHJhZ1N0YXJ0LHRoaXMpLm9mZigiZHJhZyIsdGhpcy5fb25EcmFnLHRoaXMpLm9mZigiZHJhZ2VuZCIsdGhpcy5fb25EcmFnRW5kLHRoaXMpLHRoaXMuX2RyYWdnYWJsZS5kaXNhYmxlKCksby5Eb21VdGlsLnJlbW92ZUNsYXNzKHRoaXMuX21hcmtlci5faWNvbiwibGVhZmxldC1tYXJrZXItZHJhZ2dhYmxlIil9LG1vdmVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RyYWdnYWJsZSYmdGhpcy5fZHJhZ2dhYmxlLl9tb3ZlZH0sX29uRHJhZ1N0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbWFya2VyLmNsb3NlUG9wdXAoKS5maXJlKCJtb3Zlc3RhcnQiKS5maXJlKCJkcmFnc3RhcnQiKX0sX29uRHJhZzpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcmtlcixlPXQuX3NoYWRvdyxpPW8uRG9tVXRpbC5nZXRQb3NpdGlvbih0Ll9pY29uKSxuPXQuX21hcC5sYXllclBvaW50VG9MYXRMbmcoaSk7ZSYmby5Eb21VdGlsLnNldFBvc2l0aW9uKGUsaSksdC5fbGF0bG5nPW4sdC5maXJlKCJtb3ZlIix7bGF0bG5nOm59KS5maXJlKCJkcmFnIil9LF9vbkRyYWdFbmQ6ZnVuY3Rpb24odCl7dGhpcy5fbWFya2VyLmZpcmUoIm1vdmVlbmQiKS5maXJlKCJkcmFnZW5kIix0KX19KSxvLkNvbnRyb2w9by5DbGFzcy5leHRlbmQoe29wdGlvbnM6e3Bvc2l0aW9uOiJ0b3ByaWdodCJ9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7by5zZXRPcHRpb25zKHRoaXMsdCl9LGdldFBvc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5wb3NpdGlvbn0sc2V0UG9zaXRpb246ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbWFwO3JldHVybiBlJiZlLnJlbW92ZUNvbnRyb2wodGhpcyksdGhpcy5vcHRpb25zLnBvc2l0aW9uPXQsZSYmZS5hZGRDb250cm9sKHRoaXMpLHRoaXN9LGdldENvbnRhaW5lcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb250YWluZXJ9LGFkZFRvOmZ1bmN0aW9uKHQpe3RoaXMuX21hcD10O3ZhciBlPXRoaXMuX2NvbnRhaW5lcj10aGlzLm9uQWRkKHQpLGk9dGhpcy5nZXRQb3NpdGlvbigpLG49dC5fY29udHJvbENvcm5lcnNbaV07cmV0dXJuIG8uRG9tVXRpbC5hZGRDbGFzcyhlLCJsZWFmbGV0LWNvbnRyb2wiKSwtMSE9PWkuaW5kZXhPZigiYm90dG9tIik/bi5pbnNlcnRCZWZvcmUoZSxuLmZpcnN0Q2hpbGQpOm4uYXBwZW5kQ2hpbGQoZSksdGhpc30scmVtb3ZlRnJvbTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldFBvc2l0aW9uKCksaT10Ll9jb250cm9sQ29ybmVyc1tlXTtyZXR1cm4gaS5yZW1vdmVDaGlsZCh0aGlzLl9jb250YWluZXIpLHRoaXMuX21hcD1udWxsLHRoaXMub25SZW1vdmUmJnRoaXMub25SZW1vdmUodCksdGhpc30sX3JlZm9jdXNPbk1hcDpmdW5jdGlvbigpe3RoaXMuX21hcCYmdGhpcy5fbWFwLmdldENvbnRhaW5lcigpLmZvY3VzKCl9fSksby5jb250cm9sPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgby5Db250cm9sKHQpfSxvLk1hcC5pbmNsdWRlKHthZGRDb250cm9sOmZ1bmN0aW9uKHQpe3JldHVybiB0LmFkZFRvKHRoaXMpLHRoaXN9LHJlbW92ZUNvbnRyb2w6ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVtb3ZlRnJvbSh0aGlzKSx0aGlzfSxfaW5pdENvbnRyb2xQb3M6ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQscyl7dmFyIGE9aSt0KyIgIitpK3M7ZVt0K3NdPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsYSxuKX12YXIgZT10aGlzLl9jb250cm9sQ29ybmVycz17fSxpPSJsZWFmbGV0LSIsbj10aGlzLl9jb250cm9sQ29udGFpbmVyPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsaSsiY29udHJvbC1jb250YWluZXIiLHRoaXMuX2NvbnRhaW5lcik7dCgidG9wIiwibGVmdCIpLHQoInRvcCIsInJpZ2h0IiksdCgiYm90dG9tIiwibGVmdCIpLHQoImJvdHRvbSIsInJpZ2h0Iil9LF9jbGVhckNvbnRyb2xQb3M6ZnVuY3Rpb24oKXt0aGlzLl9jb250YWluZXIucmVtb3ZlQ2hpbGQodGhpcy5fY29udHJvbENvbnRhaW5lcil9fSksby5Db250cm9sLlpvb209by5Db250cm9sLmV4dGVuZCh7b3B0aW9uczp7cG9zaXRpb246InRvcGxlZnQiLHpvb21JblRleHQ6IisiLHpvb21JblRpdGxlOiJab29tIGluIix6b29tT3V0VGV4dDoiLSIsem9vbU91dFRpdGxlOiJab29tIG91dCJ9LG9uQWRkOmZ1bmN0aW9uKHQpe3ZhciBlPSJsZWFmbGV0LWNvbnRyb2wtem9vbSIsaT1vLkRvbVV0aWwuY3JlYXRlKCJkaXYiLGUrIiBsZWFmbGV0LWJhciIpO3JldHVybiB0aGlzLl9tYXA9dCx0aGlzLl96b29tSW5CdXR0b249dGhpcy5fY3JlYXRlQnV0dG9uKHRoaXMub3B0aW9ucy56b29tSW5UZXh0LHRoaXMub3B0aW9ucy56b29tSW5UaXRsZSxlKyItaW4iLGksdGhpcy5fem9vbUluLHRoaXMpLHRoaXMuX3pvb21PdXRCdXR0b249dGhpcy5fY3JlYXRlQnV0dG9uKHRoaXMub3B0aW9ucy56b29tT3V0VGV4dCx0aGlzLm9wdGlvbnMuem9vbU91dFRpdGxlLGUrIi1vdXQiLGksdGhpcy5fem9vbU91dCx0aGlzKSx0aGlzLl91cGRhdGVEaXNhYmxlZCgpLHQub24oInpvb21lbmQgem9vbWxldmVsc2NoYW5nZSIsdGhpcy5fdXBkYXRlRGlzYWJsZWQsdGhpcyksaX0sb25SZW1vdmU6ZnVuY3Rpb24odCl7dC5vZmYoInpvb21lbmQgem9vbWxldmVsc2NoYW5nZSIsdGhpcy5fdXBkYXRlRGlzYWJsZWQsdGhpcyl9LF96b29tSW46ZnVuY3Rpb24odCl7dGhpcy5fbWFwLnpvb21Jbih0LnNoaWZ0S2V5PzM6MSl9LF96b29tT3V0OmZ1bmN0aW9uKHQpe3RoaXMuX21hcC56b29tT3V0KHQuc2hpZnRLZXk/MzoxKX0sX2NyZWF0ZUJ1dHRvbjpmdW5jdGlvbih0LGUsaSxuLHMsYSl7dmFyIHI9by5Eb21VdGlsLmNyZWF0ZSgiYSIsaSxuKTtyLmlubmVySFRNTD10LHIuaHJlZj0iIyIsci50aXRsZT1lO3ZhciBoPW8uRG9tRXZlbnQuc3RvcFByb3BhZ2F0aW9uO3JldHVybiBvLkRvbUV2ZW50Lm9uKHIsImNsaWNrIixoKS5vbihyLCJtb3VzZWRvd24iLGgpLm9uKHIsImRibGNsaWNrIixoKS5vbihyLCJjbGljayIsby5Eb21FdmVudC5wcmV2ZW50RGVmYXVsdCkub24ociwiY2xpY2siLHMsYSkub24ociwiY2xpY2siLHRoaXMuX3JlZm9jdXNPbk1hcCxhKSxyfSxfdXBkYXRlRGlzYWJsZWQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXAsZT0ibGVhZmxldC1kaXNhYmxlZCI7by5Eb21VdGlsLnJlbW92ZUNsYXNzKHRoaXMuX3pvb21JbkJ1dHRvbixlKSxvLkRvbVV0aWwucmVtb3ZlQ2xhc3ModGhpcy5fem9vbU91dEJ1dHRvbixlKSx0Ll96b29tPT09dC5nZXRNaW5ab29tKCkmJm8uRG9tVXRpbC5hZGRDbGFzcyh0aGlzLl96b29tT3V0QnV0dG9uLGUpLHQuX3pvb209PT10LmdldE1heFpvb20oKSYmby5Eb21VdGlsLmFkZENsYXNzKHRoaXMuX3pvb21JbkJ1dHRvbixlKX19KSxvLk1hcC5tZXJnZU9wdGlvbnMoe3pvb21Db250cm9sOiEwfSksby5NYXAuYWRkSW5pdEhvb2soZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuem9vbUNvbnRyb2wmJih0aGlzLnpvb21Db250cm9sPW5ldyBvLkNvbnRyb2wuWm9vbSx0aGlzLmFkZENvbnRyb2wodGhpcy56b29tQ29udHJvbCkpfSksby5jb250cm9sLnpvb209ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBvLkNvbnRyb2wuWm9vbSh0KX0sby5Db250cm9sLkF0dHJpYnV0aW9uPW8uQ29udHJvbC5leHRlbmQoe29wdGlvbnM6e3Bvc2l0aW9uOiJib3R0b21yaWdodCIscHJlZml4Oic8YSBocmVmPSJodHRwOi8vbGVhZmxldGpzLmNvbSIgdGl0bGU9IkEgSlMgbGlicmFyeSBmb3IgaW50ZXJhY3RpdmUgbWFwcyI+TGVhZmxldDwvYT4nfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe28uc2V0T3B0aW9ucyh0aGlzLHQpLHRoaXMuX2F0dHJpYnV0aW9ucz17fX0sb25BZGQ6ZnVuY3Rpb24odCl7dGhpcy5fY29udGFpbmVyPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsImxlYWZsZXQtY29udHJvbC1hdHRyaWJ1dGlvbiIpLG8uRG9tRXZlbnQuZGlzYWJsZUNsaWNrUHJvcGFnYXRpb24odGhpcy5fY29udGFpbmVyKTtmb3IodmFyIGUgaW4gdC5fbGF5ZXJzKXQuX2xheWVyc1tlXS5nZXRBdHRyaWJ1dGlvbiYmdGhpcy5hZGRBdHRyaWJ1dGlvbih0Ll9sYXllcnNbZV0uZ2V0QXR0cmlidXRpb24oKSk7cmV0dXJuIHQub24oImxheWVyYWRkIix0aGlzLl9vbkxheWVyQWRkLHRoaXMpLm9uKCJsYXllcnJlbW92ZSIsdGhpcy5fb25MYXllclJlbW92ZSx0aGlzKSx0aGlzLl91cGRhdGUoKSx0aGlzLl9jb250YWluZXJ9LG9uUmVtb3ZlOmZ1bmN0aW9uKHQpe3Qub2ZmKCJsYXllcmFkZCIsdGhpcy5fb25MYXllckFkZCkub2ZmKCJsYXllcnJlbW92ZSIsdGhpcy5fb25MYXllclJlbW92ZSl9LHNldFByZWZpeDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRpb25zLnByZWZpeD10LHRoaXMuX3VwZGF0ZSgpLHRoaXN9LGFkZEF0dHJpYnV0aW9uOmZ1bmN0aW9uKHQpe3JldHVybiB0Pyh0aGlzLl9hdHRyaWJ1dGlvbnNbdF18fCh0aGlzLl9hdHRyaWJ1dGlvbnNbdF09MCksdGhpcy5fYXR0cmlidXRpb25zW3RdKyssdGhpcy5fdXBkYXRlKCksdGhpcyk6dm9pZCAwfSxyZW1vdmVBdHRyaWJ1dGlvbjpmdW5jdGlvbih0KXtyZXR1cm4gdD8odGhpcy5fYXR0cmlidXRpb25zW3RdJiYodGhpcy5fYXR0cmlidXRpb25zW3RdLS0sdGhpcy5fdXBkYXRlKCkpLHRoaXMpOnZvaWQgMH0sX3VwZGF0ZTpmdW5jdGlvbigpe2lmKHRoaXMuX21hcCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMuX2F0dHJpYnV0aW9ucyl0aGlzLl9hdHRyaWJ1dGlvbnNbZV0mJnQucHVzaChlKTt2YXIgaT1bXTt0aGlzLm9wdGlvbnMucHJlZml4JiZpLnB1c2godGhpcy5vcHRpb25zLnByZWZpeCksdC5sZW5ndGgmJmkucHVzaCh0LmpvaW4oIiwgIikpLHRoaXMuX2NvbnRhaW5lci5pbm5lckhUTUw9aS5qb2luKCIgfCAiKX19LF9vbkxheWVyQWRkOmZ1bmN0aW9uKHQpe3QubGF5ZXIuZ2V0QXR0cmlidXRpb24mJnRoaXMuYWRkQXR0cmlidXRpb24odC5sYXllci5nZXRBdHRyaWJ1dGlvbigpKX0sX29uTGF5ZXJSZW1vdmU6ZnVuY3Rpb24odCl7dC5sYXllci5nZXRBdHRyaWJ1dGlvbiYmdGhpcy5yZW1vdmVBdHRyaWJ1dGlvbih0LmxheWVyLmdldEF0dHJpYnV0aW9uKCkpfX0pLG8uTWFwLm1lcmdlT3B0aW9ucyh7YXR0cmlidXRpb25Db250cm9sOiEwfSksby5NYXAuYWRkSW5pdEhvb2soZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuYXR0cmlidXRpb25Db250cm9sJiYodGhpcy5hdHRyaWJ1dGlvbkNvbnRyb2w9KG5ldyBvLkNvbnRyb2wuQXR0cmlidXRpb24pLmFkZFRvKHRoaXMpKX0pLG8uY29udHJvbC5hdHRyaWJ1dGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IG8uQ29udHJvbC5BdHRyaWJ1dGlvbih0KX0sby5Db250cm9sLlNjYWxlPW8uQ29udHJvbC5leHRlbmQoe29wdGlvbnM6e3Bvc2l0aW9uOiJib3R0b21sZWZ0IixtYXhXaWR0aDoxMDAsbWV0cmljOiEwLGltcGVyaWFsOiEwLHVwZGF0ZVdoZW5JZGxlOiExfSxvbkFkZDpmdW5jdGlvbih0KXt0aGlzLl9tYXA9dDt2YXIgZT0ibGVhZmxldC1jb250cm9sLXNjYWxlIixpPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsZSksbj10aGlzLm9wdGlvbnM7cmV0dXJuIHRoaXMuX2FkZFNjYWxlcyhuLGUsaSksdC5vbihuLnVwZGF0ZVdoZW5JZGxlPyJtb3ZlZW5kIjoibW92ZSIsdGhpcy5fdXBkYXRlLHRoaXMpLHQud2hlblJlYWR5KHRoaXMuX3VwZGF0ZSx0aGlzKSxpfSxvblJlbW92ZTpmdW5jdGlvbih0KXt0Lm9mZih0aGlzLm9wdGlvbnMudXBkYXRlV2hlbklkbGU/Im1vdmVlbmQiOiJtb3ZlIix0aGlzLl91cGRhdGUsdGhpcyl9LF9hZGRTY2FsZXM6ZnVuY3Rpb24odCxlLGkpe3QubWV0cmljJiYodGhpcy5fbVNjYWxlPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsZSsiLWxpbmUiLGkpKSx0LmltcGVyaWFsJiYodGhpcy5faVNjYWxlPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsZSsiLWxpbmUiLGkpKX0sX3VwZGF0ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcC5nZXRCb3VuZHMoKSxlPXQuZ2V0Q2VudGVyKCkubGF0LGk9NjM3ODEzNypNYXRoLlBJKk1hdGguY29zKGUqTWF0aC5QSS8xODApLG49aSoodC5nZXROb3J0aEVhc3QoKS5sbmctdC5nZXRTb3V0aFdlc3QoKS5sbmcpLzE4MCxvPXRoaXMuX21hcC5nZXRTaXplKCkscz10aGlzLm9wdGlvbnMsYT0wO28ueD4wJiYoYT1uKihzLm1heFdpZHRoL28ueCkpLHRoaXMuX3VwZGF0ZVNjYWxlcyhzLGEpfSxfdXBkYXRlU2NhbGVzOmZ1bmN0aW9uKHQsZSl7dC5tZXRyaWMmJmUmJnRoaXMuX3VwZGF0ZU1ldHJpYyhlKSx0LmltcGVyaWFsJiZlJiZ0aGlzLl91cGRhdGVJbXBlcmlhbChlKX0sX3VwZGF0ZU1ldHJpYzpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9nZXRSb3VuZE51bSh0KTt0aGlzLl9tU2NhbGUuc3R5bGUud2lkdGg9dGhpcy5fZ2V0U2NhbGVXaWR0aChlL3QpKyJweCIsdGhpcy5fbVNjYWxlLmlubmVySFRNTD0xZTM+ZT9lKyIgbSI6ZS8xZTMrIiBrbSJ9LF91cGRhdGVJbXBlcmlhbDpmdW5jdGlvbih0KXt2YXIgZSxpLG4sbz0zLjI4MDgzOTkqdCxzPXRoaXMuX2lTY2FsZTtvPjUyODA/KGU9by81MjgwLGk9dGhpcy5fZ2V0Um91bmROdW0oZSkscy5zdHlsZS53aWR0aD10aGlzLl9nZXRTY2FsZVdpZHRoKGkvZSkrInB4IixzLmlubmVySFRNTD1pKyIgbWkiKToobj10aGlzLl9nZXRSb3VuZE51bShvKSxzLnN0eWxlLndpZHRoPXRoaXMuX2dldFNjYWxlV2lkdGgobi9vKSsicHgiLHMuaW5uZXJIVE1MPW4rIiBmdCIpfSxfZ2V0U2NhbGVXaWR0aDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0aGlzLm9wdGlvbnMubWF4V2lkdGgqdCktMTB9LF9nZXRSb3VuZE51bTpmdW5jdGlvbih0KXt2YXIgZT1NYXRoLnBvdygxMCwoTWF0aC5mbG9vcih0KSsiIikubGVuZ3RoLTEpLGk9dC9lO3JldHVybiBpPWk+PTEwPzEwOmk+PTU/NTppPj0zPzM6aT49Mj8yOjEsZSppfX0pLG8uY29udHJvbC5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IG8uQ29udHJvbC5TY2FsZSh0KX0sby5Db250cm9sLkxheWVycz1vLkNvbnRyb2wuZXh0ZW5kKHtvcHRpb25zOntjb2xsYXBzZWQ6ITAscG9zaXRpb246InRvcHJpZ2h0IixhdXRvWkluZGV4OiEwfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSxpKXtvLnNldE9wdGlvbnModGhpcyxpKSx0aGlzLl9sYXllcnM9e30sdGhpcy5fbGFzdFpJbmRleD0wLHRoaXMuX2hhbmRsaW5nQ2xpY2s9ITE7Zm9yKHZhciBuIGluIHQpdGhpcy5fYWRkTGF5ZXIodFtuXSxuKTtmb3IobiBpbiBlKXRoaXMuX2FkZExheWVyKGVbbl0sbiwhMCl9LG9uQWRkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbml0TGF5b3V0KCksdGhpcy5fdXBkYXRlKCksdC5vbigibGF5ZXJhZGQiLHRoaXMuX29uTGF5ZXJDaGFuZ2UsdGhpcykub24oImxheWVycmVtb3ZlIix0aGlzLl9vbkxheWVyQ2hhbmdlLHRoaXMpLHRoaXMuX2NvbnRhaW5lcn0sb25SZW1vdmU6ZnVuY3Rpb24odCl7dC5vZmYoImxheWVyYWRkIix0aGlzLl9vbkxheWVyQ2hhbmdlLHRoaXMpLm9mZigibGF5ZXJyZW1vdmUiLHRoaXMuX29uTGF5ZXJDaGFuZ2UsdGhpcyl9LGFkZEJhc2VMYXllcjpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9hZGRMYXllcih0LGUpLHRoaXMuX3VwZGF0ZSgpLHRoaXN9LGFkZE92ZXJsYXk6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fYWRkTGF5ZXIodCxlLCEwKSx0aGlzLl91cGRhdGUoKSx0aGlzfSxyZW1vdmVMYXllcjpmdW5jdGlvbih0KXt2YXIgZT1vLnN0YW1wKHQpO3JldHVybiBkZWxldGUgdGhpcy5fbGF5ZXJzW2VdLHRoaXMuX3VwZGF0ZSgpLHRoaXN9LF9pbml0TGF5b3V0OmZ1bmN0aW9uKCl7dmFyIHQ9ImxlYWZsZXQtY29udHJvbC1sYXllcnMiLGU9dGhpcy5fY29udGFpbmVyPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsdCk7ZS5zZXRBdHRyaWJ1dGUoImFyaWEtaGFzcG9wdXAiLCEwKSxvLkJyb3dzZXIudG91Y2g/by5Eb21FdmVudC5vbihlLCJjbGljayIsby5Eb21FdmVudC5zdG9wUHJvcGFnYXRpb24pOm8uRG9tRXZlbnQuZGlzYWJsZUNsaWNrUHJvcGFnYXRpb24oZSkuZGlzYWJsZVNjcm9sbFByb3BhZ2F0aW9uKGUpO3ZhciBpPXRoaXMuX2Zvcm09by5Eb21VdGlsLmNyZWF0ZSgiZm9ybSIsdCsiLWxpc3QiKTtpZih0aGlzLm9wdGlvbnMuY29sbGFwc2VkKXtvLkJyb3dzZXIuYW5kcm9pZHx8by5Eb21FdmVudC5vbihlLCJtb3VzZW92ZXIiLHRoaXMuX2V4cGFuZCx0aGlzKS5vbihlLCJtb3VzZW91dCIsdGhpcy5fY29sbGFwc2UsdGhpcyk7dmFyIG49dGhpcy5fbGF5ZXJzTGluaz1vLkRvbVV0aWwuY3JlYXRlKCJhIix0KyItdG9nZ2xlIixlKTtuLmhyZWY9IiMiLG4udGl0bGU9IkxheWVycyIsby5Ccm93c2VyLnRvdWNoP28uRG9tRXZlbnQub24obiwiY2xpY2siLG8uRG9tRXZlbnQuc3RvcCkub24obiwiY2xpY2siLHRoaXMuX2V4cGFuZCx0aGlzKTpvLkRvbUV2ZW50Lm9uKG4sImZvY3VzIix0aGlzLl9leHBhbmQsdGhpcyksby5Eb21FdmVudC5vbihpLCJjbGljayIsZnVuY3Rpb24oKXtzZXRUaW1lb3V0KG8uYmluZCh0aGlzLl9vbklucHV0Q2xpY2ssdGhpcyksMCl9LHRoaXMpLHRoaXMuX21hcC5vbigiY2xpY2siLHRoaXMuX2NvbGxhcHNlLHRoaXMpfWVsc2UgdGhpcy5fZXhwYW5kKCk7dGhpcy5fYmFzZUxheWVyc0xpc3Q9by5Eb21VdGlsLmNyZWF0ZSgiZGl2Iix0KyItYmFzZSIsaSksdGhpcy5fc2VwYXJhdG9yPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsdCsiLXNlcGFyYXRvciIsaSksdGhpcy5fb3ZlcmxheXNMaXN0PW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsdCsiLW92ZXJsYXlzIixpKSxlLmFwcGVuZENoaWxkKGkpfSxfYWRkTGF5ZXI6ZnVuY3Rpb24odCxlLGkpe3ZhciBuPW8uc3RhbXAodCk7dGhpcy5fbGF5ZXJzW25dPXtsYXllcjp0LG5hbWU6ZSxvdmVybGF5Oml9LHRoaXMub3B0aW9ucy5hdXRvWkluZGV4JiZ0LnNldFpJbmRleCYmKHRoaXMuX2xhc3RaSW5kZXgrKyx0LnNldFpJbmRleCh0aGlzLl9sYXN0WkluZGV4KSl9LF91cGRhdGU6ZnVuY3Rpb24oKXtpZih0aGlzLl9jb250YWluZXIpe3RoaXMuX2Jhc2VMYXllcnNMaXN0LmlubmVySFRNTD0iIix0aGlzLl9vdmVybGF5c0xpc3QuaW5uZXJIVE1MPSIiO3ZhciB0LGUsaT0hMSxuPSExO2Zvcih0IGluIHRoaXMuX2xheWVycyllPXRoaXMuX2xheWVyc1t0XSx0aGlzLl9hZGRJdGVtKGUpLG49bnx8ZS5vdmVybGF5LGk9aXx8IWUub3ZlcmxheTt0aGlzLl9zZXBhcmF0b3Iuc3R5bGUuZGlzcGxheT1uJiZpPyIiOiJub25lIn19LF9vbkxheWVyQ2hhbmdlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2xheWVyc1tvLnN0YW1wKHQubGF5ZXIpXTtpZihlKXt0aGlzLl9oYW5kbGluZ0NsaWNrfHx0aGlzLl91cGRhdGUoKTt2YXIgaT1lLm92ZXJsYXk/ImxheWVyYWRkIj09PXQudHlwZT8ib3ZlcmxheWFkZCI6Im92ZXJsYXlyZW1vdmUiOiJsYXllcmFkZCI9PT10LnR5cGU/ImJhc2VsYXllcmNoYW5nZSI6bnVsbDtpJiZ0aGlzLl9tYXAuZmlyZShpLGUpfX0sX2NyZWF0ZVJhZGlvRWxlbWVudDpmdW5jdGlvbih0LGkpe3ZhciBuPSc8aW5wdXQgdHlwZT0icmFkaW8iIGNsYXNzPSJsZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLXNlbGVjdG9yIiBuYW1lPSInK3QrJyInO2kmJihuKz0nIGNoZWNrZWQ9ImNoZWNrZWQiJyksbis9Ii8+Ijt2YXIgbz1lLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBvLmlubmVySFRNTD1uLG8uZmlyc3RDaGlsZH0sX2FkZEl0ZW06ZnVuY3Rpb24odCl7dmFyIGksbj1lLmNyZWF0ZUVsZW1lbnQoImxhYmVsIikscz10aGlzLl9tYXAuaGFzTGF5ZXIodC5sYXllcik7dC5vdmVybGF5PyhpPWUuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxpLnR5cGU9ImNoZWNrYm94IixpLmNsYXNzTmFtZT0ibGVhZmxldC1jb250cm9sLWxheWVycy1zZWxlY3RvciIsaS5kZWZhdWx0Q2hlY2tlZD1zKTppPXRoaXMuX2NyZWF0ZVJhZGlvRWxlbWVudCgibGVhZmxldC1iYXNlLWxheWVycyIscyksaS5sYXllcklkPW8uc3RhbXAodC5sYXllciksby5Eb21FdmVudC5vbihpLCJjbGljayIsdGhpcy5fb25JbnB1dENsaWNrLHRoaXMpO3ZhciBhPWUuY3JlYXRlRWxlbWVudCgic3BhbiIpO2EuaW5uZXJIVE1MPSIgIit0Lm5hbWUsbi5hcHBlbmRDaGlsZChpKSxuLmFwcGVuZENoaWxkKGEpO3ZhciByPXQub3ZlcmxheT90aGlzLl9vdmVybGF5c0xpc3Q6dGhpcy5fYmFzZUxheWVyc0xpc3Q7cmV0dXJuIHIuYXBwZW5kQ2hpbGQobiksbn0sX29uSW5wdXRDbGljazpmdW5jdGlvbigpe3ZhciB0LGUsaSxuPXRoaXMuX2Zvcm0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0Iiksbz1uLmxlbmd0aDtmb3IodGhpcy5faGFuZGxpbmdDbGljaz0hMCx0PTA7bz50O3QrKyllPW5bdF0saT10aGlzLl9sYXllcnNbZS5sYXllcklkXSxlLmNoZWNrZWQmJiF0aGlzLl9tYXAuaGFzTGF5ZXIoaS5sYXllcik/dGhpcy5fbWFwLmFkZExheWVyKGkubGF5ZXIpOiFlLmNoZWNrZWQmJnRoaXMuX21hcC5oYXNMYXllcihpLmxheWVyKSYmdGhpcy5fbWFwLnJlbW92ZUxheWVyKGkubGF5ZXIpO3RoaXMuX2hhbmRsaW5nQ2xpY2s9ITEsdGhpcy5fcmVmb2N1c09uTWFwKCl9LF9leHBhbmQ6ZnVuY3Rpb24oKXtvLkRvbVV0aWwuYWRkQ2xhc3ModGhpcy5fY29udGFpbmVyLCJsZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLWV4cGFuZGVkIil9LF9jb2xsYXBzZTpmdW5jdGlvbigpe3RoaXMuX2NvbnRhaW5lci5jbGFzc05hbWU9dGhpcy5fY29udGFpbmVyLmNsYXNzTmFtZS5yZXBsYWNlKCIgbGVhZmxldC1jb250cm9sLWxheWVycy1leHBhbmRlZCIsIiIpfX0pLG8uY29udHJvbC5sYXllcnM9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBuZXcgby5Db250cm9sLkxheWVycyh0LGUsaSl9LG8uUG9zQW5pbWF0aW9uPW8uQ2xhc3MuZXh0ZW5kKHtpbmNsdWRlczpvLk1peGluLkV2ZW50cyxydW46ZnVuY3Rpb24odCxlLGksbil7dGhpcy5zdG9wKCksdGhpcy5fZWw9dCx0aGlzLl9pblByb2dyZXNzPSEwLHRoaXMuX25ld1Bvcz1lLHRoaXMuZmlyZSgic3RhcnQiKSx0LnN0eWxlW28uRG9tVXRpbC5UUkFOU0lUSU9OXT0iYWxsICIrKGl8fC4yNSkrInMgY3ViaWMtYmV6aWVyKDAsMCwiKyhufHwuNSkrIiwxKSIsby5Eb21FdmVudC5vbih0LG8uRG9tVXRpbC5UUkFOU0lUSU9OX0VORCx0aGlzLl9vblRyYW5zaXRpb25FbmQsdGhpcyksby5Eb21VdGlsLnNldFBvc2l0aW9uKHQsZSksby5VdGlsLmZhbHNlRm4odC5vZmZzZXRXaWR0aCksdGhpcy5fc3RlcFRpbWVyPXNldEludGVydmFsKG8uYmluZCh0aGlzLl9vblN0ZXAsdGhpcyksNTApfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5faW5Qcm9ncmVzcyYmKG8uRG9tVXRpbC5zZXRQb3NpdGlvbih0aGlzLl9lbCx0aGlzLl9nZXRQb3MoKSksdGhpcy5fb25UcmFuc2l0aW9uRW5kKCksby5VdGlsLmZhbHNlRm4odGhpcy5fZWwub2Zmc2V0V2lkdGgpKX0sX29uU3RlcDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2dldFBvcygpO3JldHVybiB0Pyh0aGlzLl9lbC5fbGVhZmxldF9wb3M9dCx2b2lkIHRoaXMuZmlyZSgic3RlcCIpKTp2b2lkIHRoaXMuX29uVHJhbnNpdGlvbkVuZCgpfSxfdHJhbnNmb3JtUmU6LyhbLStdPyg/OlxkKlwuKT9cZCspXEQqLCAoWy0rXT8oPzpcZCpcLik/XGQrKVxEKlwpLyxfZ2V0UG9zOmZ1bmN0aW9uKCl7dmFyIGUsaSxuLHM9dGhpcy5fZWwsYT10LmdldENvbXB1dGVkU3R5bGUocyk7aWYoby5Ccm93c2VyLmFueTNkKXtpZihuPWFbby5Eb21VdGlsLlRSQU5TRk9STV0ubWF0Y2godGhpcy5fdHJhbnNmb3JtUmUpLCFuKXJldHVybjtlPXBhcnNlRmxvYXQoblsxXSksaT1wYXJzZUZsb2F0KG5bMl0pfWVsc2UgZT1wYXJzZUZsb2F0KGEubGVmdCksaT1wYXJzZUZsb2F0KGEudG9wKTtyZXR1cm4gbmV3IG8uUG9pbnQoZSxpLCEwKX0sX29uVHJhbnNpdGlvbkVuZDpmdW5jdGlvbigpe28uRG9tRXZlbnQub2ZmKHRoaXMuX2VsLG8uRG9tVXRpbC5UUkFOU0lUSU9OX0VORCx0aGlzLl9vblRyYW5zaXRpb25FbmQsdGhpcyksdGhpcy5faW5Qcm9ncmVzcyYmKHRoaXMuX2luUHJvZ3Jlc3M9ITEsdGhpcy5fZWwuc3R5bGVbby5Eb21VdGlsLlRSQU5TSVRJT05dPSIiLHRoaXMuX2VsLl9sZWFmbGV0X3Bvcz10aGlzLl9uZXdQb3MsY2xlYXJJbnRlcnZhbCh0aGlzLl9zdGVwVGltZXIpLHRoaXMuZmlyZSgic3RlcCIpLmZpcmUoImVuZCIpKX19KSxvLk1hcC5pbmNsdWRlKHtzZXRWaWV3OmZ1bmN0aW9uKHQsZSxuKXtpZihlPWU9PT1pP3RoaXMuX3pvb206dGhpcy5fbGltaXRab29tKGUpLHQ9dGhpcy5fbGltaXRDZW50ZXIoby5sYXRMbmcodCksZSx0aGlzLm9wdGlvbnMubWF4Qm91bmRzKSxuPW58fHt9LHRoaXMuX3BhbkFuaW0mJnRoaXMuX3BhbkFuaW0uc3RvcCgpLHRoaXMuX2xvYWRlZCYmIW4ucmVzZXQmJm4hPT0hMCl7bi5hbmltYXRlIT09aSYmKG4uem9vbT1vLmV4dGVuZCh7YW5pbWF0ZTpuLmFuaW1hdGV9LG4uem9vbSksbi5wYW49by5leHRlbmQoe2FuaW1hdGU6bi5hbmltYXRlfSxuLnBhbikpO3ZhciBzPXRoaXMuX3pvb20hPT1lP3RoaXMuX3RyeUFuaW1hdGVkWm9vbSYmdGhpcy5fdHJ5QW5pbWF0ZWRab29tKHQsZSxuLnpvb20pOnRoaXMuX3RyeUFuaW1hdGVkUGFuKHQsbi5wYW4pO2lmKHMpcmV0dXJuIGNsZWFyVGltZW91dCh0aGlzLl9zaXplVGltZXIpLHRoaXN9cmV0dXJuIHRoaXMuX3Jlc2V0Vmlldyh0LGUpLHRoaXN9LHBhbkJ5OmZ1bmN0aW9uKHQsZSl7aWYodD1vLnBvaW50KHQpLnJvdW5kKCksZT1lfHx7fSwhdC54JiYhdC55KXJldHVybiB0aGlzO2lmKHRoaXMuX3BhbkFuaW18fCh0aGlzLl9wYW5BbmltPW5ldyBvLlBvc0FuaW1hdGlvbix0aGlzLl9wYW5BbmltLm9uKHtzdGVwOnRoaXMuX29uUGFuVHJhbnNpdGlvblN0ZXAsZW5kOnRoaXMuX29uUGFuVHJhbnNpdGlvbkVuZH0sdGhpcykpLGUubm9Nb3ZlU3RhcnR8fHRoaXMuZmlyZSgibW92ZXN0YXJ0IiksZS5hbmltYXRlIT09ITEpe28uRG9tVXRpbC5hZGRDbGFzcyh0aGlzLl9tYXBQYW5lLCJsZWFmbGV0LXBhbi1hbmltIik7dmFyIGk9dGhpcy5fZ2V0TWFwUGFuZVBvcygpLnN1YnRyYWN0KHQpO3RoaXMuX3BhbkFuaW0ucnVuKHRoaXMuX21hcFBhbmUsaSxlLmR1cmF0aW9ufHwuMjUsZS5lYXNlTGluZWFyaXR5KX1lbHNlIHRoaXMuX3Jhd1BhbkJ5KHQpLHRoaXMuZmlyZSgibW92ZSIpLmZpcmUoIm1vdmVlbmQiKTtyZXR1cm4gdGhpc30sX29uUGFuVHJhbnNpdGlvblN0ZXA6ZnVuY3Rpb24oKXt0aGlzLmZpcmUoIm1vdmUiKX0sX29uUGFuVHJhbnNpdGlvbkVuZDpmdW5jdGlvbigpe28uRG9tVXRpbC5yZW1vdmVDbGFzcyh0aGlzLl9tYXBQYW5lLCJsZWFmbGV0LXBhbi1hbmltIiksdGhpcy5maXJlKCJtb3ZlZW5kIil9LF90cnlBbmltYXRlZFBhbjpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuX2dldENlbnRlck9mZnNldCh0KS5fZmxvb3IoKTtyZXR1cm4oZSYmZS5hbmltYXRlKT09PSEwfHx0aGlzLmdldFNpemUoKS5jb250YWlucyhpKT8odGhpcy5wYW5CeShpLGUpLCEwKTohMX19KSxvLlBvc0FuaW1hdGlvbj1vLkRvbVV0aWwuVFJBTlNJVElPTj9vLlBvc0FuaW1hdGlvbjpvLlBvc0FuaW1hdGlvbi5leHRlbmQoe3J1bjpmdW5jdGlvbih0LGUsaSxuKXt0aGlzLnN0b3AoKSx0aGlzLl9lbD10LHRoaXMuX2luUHJvZ3Jlc3M9ITAsdGhpcy5fZHVyYXRpb249aXx8LjI1LHRoaXMuX2Vhc2VPdXRQb3dlcj0xL01hdGgubWF4KG58fC41LC4yKSx0aGlzLl9zdGFydFBvcz1vLkRvbVV0aWwuZ2V0UG9zaXRpb24odCksdGhpcy5fb2Zmc2V0PWUuc3VidHJhY3QodGhpcy5fc3RhcnRQb3MpLHRoaXMuX3N0YXJ0VGltZT0rbmV3IERhdGUsdGhpcy5maXJlKCJzdGFydCIpLHRoaXMuX2FuaW1hdGUoKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuX2luUHJvZ3Jlc3MmJih0aGlzLl9zdGVwKCksdGhpcy5fY29tcGxldGUoKSl9LF9hbmltYXRlOmZ1bmN0aW9uKCl7dGhpcy5fYW5pbUlkPW8uVXRpbC5yZXF1ZXN0QW5pbUZyYW1lKHRoaXMuX2FuaW1hdGUsdGhpcyksdGhpcy5fc3RlcCgpfSxfc3RlcDpmdW5jdGlvbigpe3ZhciB0PStuZXcgRGF0ZS10aGlzLl9zdGFydFRpbWUsZT0xZTMqdGhpcy5fZHVyYXRpb247ZT50P3RoaXMuX3J1bkZyYW1lKHRoaXMuX2Vhc2VPdXQodC9lKSk6KHRoaXMuX3J1bkZyYW1lKDEpLHRoaXMuX2NvbXBsZXRlKCkpfSxfcnVuRnJhbWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fc3RhcnRQb3MuYWRkKHRoaXMuX29mZnNldC5tdWx0aXBseUJ5KHQpKTtvLkRvbVV0aWwuc2V0UG9zaXRpb24odGhpcy5fZWwsZSksdGhpcy5maXJlKCJzdGVwIil9LF9jb21wbGV0ZTpmdW5jdGlvbigpe28uVXRpbC5jYW5jZWxBbmltRnJhbWUodGhpcy5fYW5pbUlkKSx0aGlzLl9pblByb2dyZXNzPSExLHRoaXMuZmlyZSgiZW5kIil9LF9lYXNlT3V0OmZ1bmN0aW9uKHQpe3JldHVybiAxLU1hdGgucG93KDEtdCx0aGlzLl9lYXNlT3V0UG93ZXIpfX0pLG8uTWFwLm1lcmdlT3B0aW9ucyh7em9vbUFuaW1hdGlvbjohMCx6b29tQW5pbWF0aW9uVGhyZXNob2xkOjR9KSxvLkRvbVV0aWwuVFJBTlNJVElPTiYmby5NYXAuYWRkSW5pdEhvb2soZnVuY3Rpb24oKXt0aGlzLl96b29tQW5pbWF0ZWQ9dGhpcy5vcHRpb25zLnpvb21BbmltYXRpb24mJm8uRG9tVXRpbC5UUkFOU0lUSU9OJiZvLkJyb3dzZXIuYW55M2QmJiFvLkJyb3dzZXIuYW5kcm9pZDIzJiYhby5Ccm93c2VyLm1vYmlsZU9wZXJhLHRoaXMuX3pvb21BbmltYXRlZCYmby5Eb21FdmVudC5vbih0aGlzLl9tYXBQYW5lLG8uRG9tVXRpbC5UUkFOU0lUSU9OX0VORCx0aGlzLl9jYXRjaFRyYW5zaXRpb25FbmQsdGhpcyl9KSxvLk1hcC5pbmNsdWRlKG8uRG9tVXRpbC5UUkFOU0lUSU9OP3tfY2F0Y2hUcmFuc2l0aW9uRW5kOmZ1bmN0aW9uKHQpe3RoaXMuX2FuaW1hdGluZ1pvb20mJnQucHJvcGVydHlOYW1lLmluZGV4T2YoInRyYW5zZm9ybSIpPj0wJiZ0aGlzLl9vblpvb21UcmFuc2l0aW9uRW5kKCl9LF9ub3RoaW5nVG9BbmltYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuX2NvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJsZWFmbGV0LXpvb20tYW5pbWF0ZWQiKS5sZW5ndGh9LF90cnlBbmltYXRlZFpvb206ZnVuY3Rpb24odCxlLGkpe2lmKHRoaXMuX2FuaW1hdGluZ1pvb20pcmV0dXJuITA7aWYoaT1pfHx7fSwhdGhpcy5fem9vbUFuaW1hdGVkfHxpLmFuaW1hdGU9PT0hMXx8dGhpcy5fbm90aGluZ1RvQW5pbWF0ZSgpfHxNYXRoLmFicyhlLXRoaXMuX3pvb20pPnRoaXMub3B0aW9ucy56b29tQW5pbWF0aW9uVGhyZXNob2xkKXJldHVybiExO3ZhciBuPXRoaXMuZ2V0Wm9vbVNjYWxlKGUpLG89dGhpcy5fZ2V0Q2VudGVyT2Zmc2V0KHQpLl9kaXZpZGVCeSgxLTEvbikscz10aGlzLl9nZXRDZW50ZXJMYXllclBvaW50KCkuX2FkZChvKTtyZXR1cm4gaS5hbmltYXRlPT09ITB8fHRoaXMuZ2V0U2l6ZSgpLmNvbnRhaW5zKG8pPyh0aGlzLmZpcmUoIm1vdmVzdGFydCIpLmZpcmUoInpvb21zdGFydCIpLHRoaXMuX2FuaW1hdGVab29tKHQsZSxzLG4sbnVsbCwhMCksITApOiExfSxfYW5pbWF0ZVpvb206ZnVuY3Rpb24odCxlLGksbixzLGEscil7cnx8KHRoaXMuX2FuaW1hdGluZ1pvb209ITApLG8uRG9tVXRpbC5hZGRDbGFzcyh0aGlzLl9tYXBQYW5lLCJsZWFmbGV0LXpvb20tYW5pbSIpLHRoaXMuX2FuaW1hdGVUb0NlbnRlcj10LHRoaXMuX2FuaW1hdGVUb1pvb209ZSxvLkRyYWdnYWJsZSYmKG8uRHJhZ2dhYmxlLl9kaXNhYmxlZD0hMCksby5VdGlsLnJlcXVlc3RBbmltRnJhbWUoZnVuY3Rpb24oKXt0aGlzLmZpcmUoInpvb21hbmltIix7Y2VudGVyOnQsem9vbTplLG9yaWdpbjppLHNjYWxlOm4sZGVsdGE6cyxiYWNrd2FyZHM6YX0pfSx0aGlzKX0sX29uWm9vbVRyYW5zaXRpb25FbmQ6ZnVuY3Rpb24oKXt0aGlzLl9hbmltYXRpbmdab29tPSExLG8uRG9tVXRpbC5yZW1vdmVDbGFzcyh0aGlzLl9tYXBQYW5lLCJsZWFmbGV0LXpvb20tYW5pbSIpLHRoaXMuX3Jlc2V0Vmlldyh0aGlzLl9hbmltYXRlVG9DZW50ZXIsdGhpcy5fYW5pbWF0ZVRvWm9vbSwhMCwhMCksby5EcmFnZ2FibGUmJihvLkRyYWdnYWJsZS5fZGlzYWJsZWQ9ITEpfX06e30pLG8uVGlsZUxheWVyLmluY2x1ZGUoe19hbmltYXRlWm9vbTpmdW5jdGlvbih0KXt0aGlzLl9hbmltYXRpbmd8fCh0aGlzLl9hbmltYXRpbmc9ITAsdGhpcy5fcHJlcGFyZUJnQnVmZmVyKCkpO3ZhciBlPXRoaXMuX2JnQnVmZmVyLGk9by5Eb21VdGlsLlRSQU5TRk9STSxuPXQuZGVsdGE/by5Eb21VdGlsLmdldFRyYW5zbGF0ZVN0cmluZyh0LmRlbHRhKTplLnN0eWxlW2ldLHM9by5Eb21VdGlsLmdldFNjYWxlU3RyaW5nKHQuc2NhbGUsdC5vcmlnaW4pO2Uuc3R5bGVbaV09dC5iYWNrd2FyZHM/cysiICIrbjpuKyIgIitzfSxfZW5kWm9vbUFuaW06ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl90aWxlQ29udGFpbmVyLGU9dGhpcy5fYmdCdWZmZXI7dC5zdHlsZS52aXNpYmlsaXR5PSIiLHQucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh0KSxvLlV0aWwuZmFsc2VGbihlLm9mZnNldFdpZHRoKSx0aGlzLl9hbmltYXRpbmc9ITF9LF9jbGVhckJnQnVmZmVyOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWFwOyF0fHx0Ll9hbmltYXRpbmdab29tfHx0LnRvdWNoWm9vbS5fem9vbWluZ3x8KHRoaXMuX2JnQnVmZmVyLmlubmVySFRNTD0iIix0aGlzLl9iZ0J1ZmZlci5zdHlsZVtvLkRvbVV0aWwuVFJBTlNGT1JNXT0iIil9LF9wcmVwYXJlQmdCdWZmZXI6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl90aWxlQ29udGFpbmVyLGU9dGhpcy5fYmdCdWZmZXIsaT10aGlzLl9nZXRMb2FkZWRUaWxlc1BlcmNlbnRhZ2UoZSksbj10aGlzLl9nZXRMb2FkZWRUaWxlc1BlcmNlbnRhZ2UodCk7cmV0dXJuIGUmJmk+LjUmJi41Pm4/KHQuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIix2b2lkIHRoaXMuX3N0b3BMb2FkaW5nSW1hZ2VzKHQpKTooZS5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLGUuc3R5bGVbby5Eb21VdGlsLlRSQU5TRk9STV09IiIsdGhpcy5fdGlsZUNvbnRhaW5lcj1lLGU9dGhpcy5fYmdCdWZmZXI9dCx0aGlzLl9zdG9wTG9hZGluZ0ltYWdlcyhlKSx2b2lkIGNsZWFyVGltZW91dCh0aGlzLl9jbGVhckJnQnVmZmVyVGltZXIpKX0sX2dldExvYWRlZFRpbGVzUGVyY2VudGFnZTpmdW5jdGlvbih0KXt2YXIgZSxpLG49dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW1nIiksbz0wO2ZvcihlPTAsaT1uLmxlbmd0aDtpPmU7ZSsrKW5bZV0uY29tcGxldGUmJm8rKztyZXR1cm4gby9pfSxfc3RvcExvYWRpbmdJbWFnZXM6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW1nIikpO2ZvcihlPTAsaT1zLmxlbmd0aDtpPmU7ZSsrKW49c1tlXSxuLmNvbXBsZXRlfHwobi5vbmxvYWQ9by5VdGlsLmZhbHNlRm4sbi5vbmVycm9yPW8uVXRpbC5mYWxzZUZuLG4uc3JjPW8uVXRpbC5lbXB0eUltYWdlVXJsLG4ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKSl9fSksby5NYXAuaW5jbHVkZSh7X2RlZmF1bHRMb2NhdGVPcHRpb25zOnt3YXRjaDohMSxzZXRWaWV3OiExLG1heFpvb206MS8wLHRpbWVvdXQ6MWU0LG1heGltdW1BZ2U6MCxlbmFibGVIaWdoQWNjdXJhY3k6ITF9LGxvY2F0ZTpmdW5jdGlvbih0KXtpZih0PXRoaXMuX2xvY2F0ZU9wdGlvbnM9by5leHRlbmQodGhpcy5fZGVmYXVsdExvY2F0ZU9wdGlvbnMsdCksIW5hdmlnYXRvci5nZW9sb2NhdGlvbilyZXR1cm4gdGhpcy5faGFuZGxlR2VvbG9jYXRpb25FcnJvcih7Y29kZTowLG1lc3NhZ2U6Ikdlb2xvY2F0aW9uIG5vdCBzdXBwb3J0ZWQuIn0pLHRoaXM7dmFyIGU9by5iaW5kKHRoaXMuX2hhbmRsZUdlb2xvY2F0aW9uUmVzcG9uc2UsdGhpcyksaT1vLmJpbmQodGhpcy5faGFuZGxlR2VvbG9jYXRpb25FcnJvcix0aGlzKTtyZXR1cm4gdC53YXRjaD90aGlzLl9sb2NhdGlvbldhdGNoSWQ9bmF2aWdhdG9yLmdlb2xvY2F0aW9uLndhdGNoUG9zaXRpb24oZSxpLHQpOm5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZSxpLHQpLHRoaXN9LHN0b3BMb2NhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gbmF2aWdhdG9yLmdlb2xvY2F0aW9uJiZuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uY2xlYXJXYXRjaCh0aGlzLl9sb2NhdGlvbldhdGNoSWQpLHRoaXMuX2xvY2F0ZU9wdGlvbnMmJih0aGlzLl9sb2NhdGVPcHRpb25zLnNldFZpZXc9ITEpLHRoaXN9LF9oYW5kbGVHZW9sb2NhdGlvbkVycm9yOmZ1bmN0aW9uKHQpe3ZhciBlPXQuY29kZSxpPXQubWVzc2FnZXx8KDE9PT1lPyJwZXJtaXNzaW9uIGRlbmllZCI6Mj09PWU/InBvc2l0aW9uIHVuYXZhaWxhYmxlIjoidGltZW91dCIpO3RoaXMuX2xvY2F0ZU9wdGlvbnMuc2V0VmlldyYmIXRoaXMuX2xvYWRlZCYmdGhpcy5maXRXb3JsZCgpLHRoaXMuZmlyZSgibG9jYXRpb25lcnJvciIse2NvZGU6ZSxtZXNzYWdlOiJHZW9sb2NhdGlvbiBlcnJvcjogIitpKyIuIn0pfSxfaGFuZGxlR2VvbG9jYXRpb25SZXNwb25zZTpmdW5jdGlvbih0KXt2YXIgZT10LmNvb3Jkcy5sYXRpdHVkZSxpPXQuY29vcmRzLmxvbmdpdHVkZSxuPW5ldyBvLkxhdExuZyhlLGkpLHM9MTgwKnQuY29vcmRzLmFjY3VyYWN5LzQwMDc1MDE3LGE9cy9NYXRoLmNvcyhvLkxhdExuZy5ERUdfVE9fUkFEKmUpLHI9by5sYXRMbmdCb3VuZHMoW2UtcyxpLWFdLFtlK3MsaSthXSksaD10aGlzLl9sb2NhdGVPcHRpb25zO2lmKGguc2V0Vmlldyl7dmFyIGw9TWF0aC5taW4odGhpcy5nZXRCb3VuZHNab29tKHIpLGgubWF4Wm9vbSk7dGhpcy5zZXRWaWV3KG4sbCl9dmFyIHU9e2xhdGxuZzpuLGJvdW5kczpyLHRpbWVzdGFtcDp0LnRpbWVzdGFtcH07Zm9yKHZhciBjIGluIHQuY29vcmRzKSJudW1iZXIiPT10eXBlb2YgdC5jb29yZHNbY10mJih1W2NdPXQuY29vcmRzW2NdKTt0aGlzLmZpcmUoImxvY2F0aW9uZm91bmQiLHUpfX0pfSh3aW5kb3csZG9jdW1lbnQpOw=="></script>
<link href="data:text/css;charset=utf-8,%0Aimg%2Eleaflet%2Dtile%20%7B%0Apadding%3A%200%3B%0Amargin%3A%200%3B%0Aborder%2Dradius%3A%200%3B%0Aborder%3A%20none%3B%0A%7D%0A%2Einfo%20%7B%0Apadding%3A%206px%208px%3B%0Afont%3A%2014px%2F16px%20Arial%2C%20Helvetica%2C%20sans%2Dserif%3B%0Abackground%3A%20white%3B%0Abackground%3A%20rgba%28255%2C255%2C255%2C0%2E8%29%3B%0Abox%2Dshadow%3A%200%200%2015px%20rgba%280%2C0%2C0%2C0%2E2%29%3B%0Aborder%2Dradius%3A%205px%3B%0A%7D%0A%2Elegend%20%7B%0Aline%2Dheight%3A%2018px%3B%0Acolor%3A%20%23555%3B%0A%7D%0A%2Elegend%20svg%20text%20%7B%0Afill%3A%20%23555%3B%0A%7D%0A%2Elegend%20svg%20line%20%7B%0Astroke%3A%20%23555%3B%0A%7D%0A%2Elegend%20i%20%7B%0Awidth%3A%2018px%3B%0Aheight%3A%2018px%3B%0Afloat%3A%20left%3B%0Amargin%2Dright%3A%208px%3B%0Aopacity%3A%200%2E7%3B%0A%7D%0A" rel="stylesheet" />
<script src="data:application/x-javascript;base64,ZnVuY3Rpb24gcmVjeWNsZSh2YWx1ZXMsIGxlbmd0aCwgaW5QbGFjZSkgewogIGlmIChsZW5ndGggPT09IDAgJiYgIWluUGxhY2UpCiAgICByZXR1cm4gW107CgogIGlmICghKHZhbHVlcyBpbnN0YW5jZW9mIEFycmF5KSkgewogICAgaWYgKGluUGxhY2UpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJDYW4ndCBkbyBpbi1wbGFjZSByZWN5Y2xpbmcgb2YgYSBub24tQXJyYXkgdmFsdWUiKTsKICAgIH0KICAgIHZhbHVlcyA9IFt2YWx1ZXNdOwogIH0KICBpZiAodHlwZW9mKGxlbmd0aCkgPT09ICd1bmRlZmluZWQnKQogICAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aDsKCiAgdmFyIGRlc3QgPSBpblBsYWNlID8gdmFsdWVzIDogW107CiAgdmFyIG9yaWdMZW5ndGggPSB2YWx1ZXMubGVuZ3RoOwogIHdoaWxlIChkZXN0Lmxlbmd0aCA8IGxlbmd0aCkgewogICAgZGVzdC5wdXNoKHZhbHVlc1tkZXN0Lmxlbmd0aCAlIG9yaWdMZW5ndGhdKTsKICB9CiAgaWYgKGRlc3QubGVuZ3RoID4gbGVuZ3RoKSB7CiAgICBkZXN0LnNwbGljZShsZW5ndGgsIGRlc3QubGVuZ3RoIC0gbGVuZ3RoKTsKICB9CiAgcmV0dXJuIGRlc3Q7Cn0KCmZ1bmN0aW9uIGFzQXJyYXkodmFsdWUpIHsKICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkKICAgIHJldHVybiB2YWx1ZTsKICBlbHNlCiAgICByZXR1cm4gW3ZhbHVlXTsKfQoKdmFyIGRhdGFmcmFtZSA9IChmdW5jdGlvbigpIHsKICB2YXIgZXhwb3J0cyA9IHt9OwoKICB2YXIgRGF0YUZyYW1lID0gZnVuY3Rpb24oKSB7CiAgICB0aGlzLmNvbHVtbnMgPSBbXTsKICAgIHRoaXMuY29sbmFtZXMgPSBbXTsKICAgIHRoaXMuY29sc3RyaWN0ID0gW107CgogICAgdGhpcy5lZmZlY3RpdmVMZW5ndGggPSAwOwogICAgdGhpcy5jb2xpbmRpY2VzID0ge307CiAgfTsKCiAgRGF0YUZyYW1lLnByb3RvdHlwZS5fdXBkYXRlQ2FjaGVkUHJvcGVydGllcyA9IGZ1bmN0aW9uKCkgewogICAgdmFyIHNlbGYgPSB0aGlzOwogICAgdGhpcy5lZmZlY3RpdmVMZW5ndGggPSAwOwogICAgdGhpcy5jb2xpbmRpY2VzID0ge307CgogICAgJC5lYWNoKHRoaXMuY29sdW1ucywgZnVuY3Rpb24oaSwgY29sdW1uKSB7CiAgICAgIHNlbGYuZWZmZWN0aXZlTGVuZ3RoID0gTWF0aC5tYXgoc2VsZi5lZmZlY3RpdmVMZW5ndGgsIGNvbHVtbi5sZW5ndGgpOwogICAgICBzZWxmLmNvbGluZGljZXNbc2VsZi5jb2xuYW1lc1tpXV0gPSBpOwogICAgfSk7CiAgfTsKCiAgRGF0YUZyYW1lLnByb3RvdHlwZS5fY29sSW5kZXggPSBmdW5jdGlvbihjb2xuYW1lKSB7CiAgICB2YXIgaW5kZXggPSB0aGlzLmNvbGluZGljZXNbY29sbmFtZV07CiAgICBpZiAodHlwZW9mKGluZGV4KSA9PT0gJ3VuZGVmaW5lZCcpCiAgICAgIHJldHVybiAtMTsKICAgIHJldHVybiBpbmRleDsKICB9OwoKICBEYXRhRnJhbWUucHJvdG90eXBlLmNvbCA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlcywgc3RyaWN0KSB7CiAgICBpZiAodHlwZW9mKG5hbWUpICE9PSAnc3RyaW5nJykKICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNvbHVtbiBuYW1lICInICsgbmFtZSArICciJyk7CgogICAgdmFyIGluZGV4ID0gdGhpcy5fY29sSW5kZXgobmFtZSk7CgogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHsKICAgICAgaWYgKGluZGV4IDwgMCkKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgZWxzZQogICAgICAgIHJldHVybiByZWN5Y2xlKHRoaXMuY29sdW1uc1tpbmRleF0sIHRoaXMuZWZmZWN0aXZlTGVuZ3RoKTsKICAgIH0KCiAgICBpZiAoaW5kZXggPCAwKSB7CiAgICAgIGluZGV4ID0gdGhpcy5jb2xuYW1lcy5sZW5ndGg7CiAgICAgIHRoaXMuY29sbmFtZXMucHVzaChuYW1lKTsKICAgIH0KICAgIHRoaXMuY29sdW1uc1tpbmRleF0gPSBhc0FycmF5KHZhbHVlcyk7CiAgICB0aGlzLmNvbHN0cmljdFtpbmRleF0gPSAhIXN0cmljdDsKCiAgICAvLyBUT0RPOiBWYWxpZGF0ZSBzdHJpY3RuZXNzIChlbnN1cmUgbGVuZ3RocyBtYXRjaCB1cCB3aXRoIG90aGVyIHN0cmljdHMpCgogICAgdGhpcy5fdXBkYXRlQ2FjaGVkUHJvcGVydGllcygpOwoKICAgIHJldHVybiB0aGlzOwogIH07CgogIERhdGFGcmFtZS5wcm90b3R5cGUuY2JpbmQgPSBmdW5jdGlvbihvYmosIHN0cmljdCkgewogICAgdmFyIHNlbGYgPSB0aGlzLCBuYW1lOwogICAgJC5lYWNoKG9iaiwgZnVuY3Rpb24obmFtZSwgY29sZGF0YSkgewogICAgICBzZWxmLmNvbChuYW1lLCBjb2xkYXRhKTsKICAgIH0pOwogICAgcmV0dXJuIHRoaXM7CiAgfTsKCiAgRGF0YUZyYW1lLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihyb3csIGNvbCkgewogICAgdmFyIHNlbGYgPSB0aGlzOwoKICAgIGlmIChyb3cgPiB0aGlzLmVmZmVjdGl2ZUxlbmd0aCkKICAgICAgdGhyb3cgbmV3IEVycm9yKCdSb3cgYXJndW1lbnQgd2FzIG91dCBvZiBib3VuZHM6ICcgKyByb3cgKyAnID4gJyArIHRoaXMuZWZmZWN0aXZlTGVuZ3RoKTsKCiAgICB2YXIgY29sSW5kZXggPSAtMTsKICAgIGlmICh0eXBlb2YoY29sKSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgdmFyIHJvd0RhdGEgPSB7fTsKICAgICAgJC5lYWNoKHRoaXMuY29sbmFtZXMsIGZ1bmN0aW9uKGksIG5hbWUpIHsKICAgICAgICByb3dEYXRhW25hbWVdID0gc2VsZi5jb2x1bW5zW2ldW3JvdyAlIHNlbGYuY29sdW1uc1tpXS5sZW5ndGhdOwogICAgICB9KTsKICAgICAgcmV0dXJuIHJvd0RhdGE7CiAgICB9IGVsc2UgaWYgKHR5cGVvZihjb2wpID09PSAnc3RyaW5nJykgewogICAgICBjb2xJbmRleCA9IHRoaXMuX2NvbEluZGV4KGNvbCk7CiAgICB9IGVsc2UgaWYgKHR5cGVvZihjb2wpID09PSAnbnVtYmVyJykgewogICAgICBjb2xJbmRleCA9IGNvbDsKICAgIH0KICAgIGlmIChjb2xJbmRleCA8IDAgfHwgY29sSW5kZXggPiB0aGlzLmNvbHVtbnMubGVuZ3RoKQogICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gY29sdW1uIGluZGV4OiAnICsgY29sKTsKCiAgICByZXR1cm4gdGhpcy5jb2x1bW5zW2NvbEluZGV4XVtyb3cgJSB0aGlzLmNvbHVtbnNbY29sSW5kZXhdLmxlbmd0aF07CiAgfTsKCiAgRGF0YUZyYW1lLnByb3RvdHlwZS5ucm93ID0gZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5lZmZlY3RpdmVMZW5ndGg7CiAgfTsKCiAgZnVuY3Rpb24gdGVzdCgpIHsKICAgIHZhciBkZiA9IG5ldyBEYXRhRnJhbWUoKTsKICAgIGRmLmNvbCgic3BlZWQiLCBbNCwgNCwgNywgNywgOCwgOSwgMTAsIDEwLCAxMCwgMTEsIDExLCAxMiwgMTIsIDEyLCAxMiwgMTMsIDEzLCAxMywgMTMsIDE0LCAxNCwgMTQsIDE0LCAxNSwgMTUsIDE1LCAxNiwgMTYsIDE3LCAxNywgMTcsIDE4LCAxOCwgMTgsIDE4LCAxOSwgMTksIDE5LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIyLCAyMywgMjQsIDI0LCAyNCwgMjQsIDI1XSkKICAgICAgLmNvbCgiZGlzdCIsIFsyLCAxMCwgNCwgMjIsIDE2LCAxMCwgMTgsIDI2LCAzNCwgMTcsIDI4LCAxNCwgMjAsIDI0LCAyOCwgMjYsIDM0LCAzNCwgNDYsIDI2LCAzNiwgNjAsIDgwLCAyMCwgMjYsIDU0LCAzMiwgNDAsIDMyLCA0MCwgNTAsIDQyLCA1NiwgNzYsIDg0LCAzNiwgNDYsIDY4LCAzMiwgNDgsIDUyLCA1NiwgNjQsIDY2LCA1NCwgNzAsIDkyLCA5MywgMTIwLCA4NV0pCiAgICAgIC5jb2woImNvbG9yIiwgWyJ5ZWxsb3ciLCAicmVkIl0pCiAgICAgIC5jYmluZCh7CiAgICAgICAgIk1ha2UiIDogWyJUb3lvdGEiLCAiQ2FkaWxsYWMiLCAiQk1XIl0sCiAgICAgICAgIk1vZGVsIiA6IFsiQ29yb2xsYSIsICJDVFMiLCAiNDM1aSJdCiAgICAgIH0pCiAgICA7CiAgICBjb25zb2xlLmxvZyhkZi5nZXQoOSwgInNwZWVkIikpOwogICAgY29uc29sZS5sb2coZGYuZ2V0KDksICJkaXN0IikpOwogICAgY29uc29sZS5sb2coZGYuZ2V0KDksICJjb2xvciIpKTsKICAgIGNvbnNvbGUubG9nKGRmLmdldCg5LCAiTWFrZSIpKTsKICAgIGNvbnNvbGUubG9nKGRmLmdldCg5LCAiTW9kZWwiKSk7CiAgICBjb25zb2xlLmxvZyhkZi5nZXQoOSkpOwoKICB9CgogIHJldHVybiB7CiAgICBjcmVhdGU6IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gbmV3IERhdGFGcmFtZSgpOwogICAgfQogIH07Cgp9KSgpOwoKKGZ1bmN0aW9uKCkgewogIC8vIFRoaXMgY2xhc3Mgc2ltdWxhdGVzIGEgbWlwbWFwLCB3aGljaCBzaHJpbmtzIGltYWdlcyBieSBwb3dlcnMgb2YgdHdvLiBUaGlzCiAgLy8gc3RlcHdpc2UgcmVkdWN0aW9uIHJlc3VsdHMgaW4gInBpeGVsLXBlcmZlY3QgZG93bnNjYWxpbmciICh3aGVyZSBldmVyeQogIC8vIHBpeGVsIG9mIHRoZSBvcmlnaW5hbCBpbWFnZSBoYXMgc29tZSBjb250cmlidXRpb24gdG8gdGhlIGRvd25zY2FsZWQgaW1hZ2UpCiAgLy8gYXMgb3Bwb3NlZCB0byBhIHNpbmdsZS1zdGVwIGRvd25zY2FsaW5nIHdoaWNoIHdpbGwgZGlzY2FyZCBhIGxvdCBvZiBkYXRhCiAgLy8gKGFuZCB3aXRoIHNwYXJzZSBpbWFnZXMgYXQgc21hbGwgc2NhbGVzIGNhbiBnaXZlIHZlcnkgc3VycHJpc2luZyByZXN1bHRzKS4KICBmdW5jdGlvbiBNaXBtYXBwZXIoaW1nKSB7CiAgICB0aGlzLl9sYXllcnMgPSBbaW1nXTsKICB9CiAgLy8gVGhlIHZhcmlvdXMgZnVuY3Rpb25zIG9uIHRoaXMgY2xhc3MgdGFrZSBhIGNhbGxiYWNrIGZ1bmN0aW9uIEJVVCBNQVkgT1IgTUFZCiAgLy8gTk9UIGFjdHVhbGx5IGJlaGF2ZSBhc3luY2hyb25vdXNseS4KICBNaXBtYXBwZXIucHJvdG90eXBlLmdldEJ5U2l6ZSA9IGZ1bmN0aW9uKGRlc2lyZWRXaWR0aCwgZGVzaXJlZEhlaWdodCwgY2FsbGJhY2spIHsKICAgIHZhciBzZWxmID0gdGhpczsKICAgIHZhciBpID0gMDsKICAgIHZhciBsYXN0SW1nID0gdGhpcy5fbGF5ZXJzWzBdOwogICAgZnVuY3Rpb24gdGVzdE5leHQoKSB7CiAgICAgIHNlbGYuZ2V0QnlJbmRleChpLCBmdW5jdGlvbihpbWcpIHsKICAgICAgICAvLyBJZiBjdXJyZW50IGltYWdlIGlzIGludmFsaWQgKGkuZS4gdG9vIHNtYWxsIHRvIGJlIHJlbmRlcmVkKSBvcgogICAgICAgIC8vIGl0J3Mgc21hbGxlciB0aGFuIHdoYXQgd2Ugd2FudGVkLCByZXR1cm4gdGhlIGxhc3Qga25vd24gZ29vZCBpbWFnZS4KICAgICAgICBpZiAoIWltZyB8fCBpbWcud2lkdGggPCBkZXNpcmVkV2lkdGggfHwgaW1nLmhlaWdodCA8IGRlc2lyZWRIZWlnaHQpIHsKICAgICAgICAgIGNhbGxiYWNrKGxhc3RJbWcpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBsYXN0SW1nID0gaW1nOwogICAgICAgICAgaSsrOwogICAgICAgICAgdGVzdE5leHQoKTsKICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgIH0pOwogICAgfQogICAgdGVzdE5leHQoKTsKICB9OwogIE1pcG1hcHBlci5wcm90b3R5cGUuZ2V0QnlJbmRleCA9IGZ1bmN0aW9uKGksIGNhbGxiYWNrKSB7CiAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICBpZiAodGhpcy5fbGF5ZXJzW2ldKSB7CiAgICAgIGNhbGxiYWNrKHRoaXMuX2xheWVyc1tpXSk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB0aGlzLmdldEJ5SW5kZXgoaS0xLCBmdW5jdGlvbihwcmV2SW1nKSB7CiAgICAgIGlmICghcHJldkltZykgewogICAgICAgIC8vIHByZXZJbWcgY291bGQgbm90IGJlIGNhbGN1bGF0ZWQgKHRvbyBzbWFsbCwgcG9zc2libHkpCiAgICAgICAgY2FsbGJhY2sobnVsbCk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmIChwcmV2SW1nLndpZHRoIDwgMiB8fCBwcmV2SW1nLmhlaWdodCA8IDIpIHsKICAgICAgICAvLyBDYW4ndCByZWR1Y2UgdGhpcyBpbWFnZSBhbnkgZnVydGhlcgogICAgICAgIGNhbGxiYWNrKG51bGwpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICAvLyBJZiByZWR1Y2UgZXZlciBiZWNvbWVzIHRydWx5IGFzeW5jaHJvbm91cywgd2Ugc2hvdWxkIHN0dWZmIGEgcHJvbWlzZSBvcgogICAgICAvLyBzb21ldGhpbmcgaW50byBzZWxmLl9sYXllcnNbaV0gYmVmb3JlIGNhbGxpbmcgc2VsZi5yZWR1Y2UoKSwgdG8gcHJldmVudAogICAgICAvLyByZWR1bmRhbnQgcmVkdWNlIG9wZXJhdGlvbnMgZnJvbSBoYXBwZW5pbmcuCiAgICAgIHNlbGYucmVkdWNlKHByZXZJbWcsIGZ1bmN0aW9uKHJlZHVjZWRJbWcpIHsKICAgICAgICBzZWxmLl9sYXllcnNbaV0gPSByZWR1Y2VkSW1nOwogICAgICAgIGNhbGxiYWNrKHJlZHVjZWRJbWcpOwogICAgICAgIHJldHVybjsKICAgICAgfSk7CiAgICB9KTsKICB9OwogIE1pcG1hcHBlci5wcm90b3R5cGUucmVkdWNlID0gZnVuY3Rpb24oaW1nLCBjYWxsYmFjaykgewogICAgICB2YXIgaW1nRGF0YUNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogICAgICBpbWdEYXRhQ2FudmFzLndpZHRoID0gTWF0aC5jZWlsKGltZy53aWR0aCAvIDIpOwogICAgICBpbWdEYXRhQ2FudmFzLmhlaWdodCA9IE1hdGguY2VpbChpbWcuaGVpZ2h0IC8gMik7CiAgICAgIGltZ0RhdGFDYW52YXMuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWdEYXRhQ2FudmFzKTsKICAgICAgdHJ5IHsKICAgICAgICB2YXIgaW1nRGF0YUN0eCA9IGltZ0RhdGFDYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgICBpbWdEYXRhQ3R4LmRyYXdJbWFnZShpbWcsIDAsIDAsIGltZy53aWR0aC8yLCBpbWcuaGVpZ2h0LzIpOwogICAgICAgIGNhbGxiYWNrKGltZ0RhdGFDYW52YXMpOwogICAgICB9IGZpbmFsbHkgewogICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoaW1nRGF0YUNhbnZhcyk7CiAgICAgIH0KCiAgfTsKCiAgZnVuY3Rpb24gTGF5ZXJNYW5hZ2VyKG1hcCkgewogICAgdGhpcy5fbWFwID0gbWFwOwoKICAgIC8vIEJFR0lOIGxheWVyIGluZGljZXMKCiAgICAvLyB7PGdyb3VwbmFtZT46IHs8c3RhbXA+OiBsYXllcn19CiAgICB0aGlzLl9ieUdyb3VwID0ge307CiAgICAvLyB7PGNhdGVnb3J5TmFtZT46IHs8c3RhbXA+OiBsYXllcn19CiAgICB0aGlzLl9ieUNhdGVnb3J5ID0ge307CiAgICAvLyB7PGNhdGVnb3J5TmFtZV9sYXllcklkPjogbGF5ZXJ9CiAgICB0aGlzLl9ieUxheWVySWQgPSB7fTsKICAgIC8vIHs8c3RhbXA+OiB7CiAgICAvLyAgICAgICAgICAgICAiZ3JvdXAiOiA8Z3JvdXBuYW1lPiwKICAgIC8vICAgICAgICAgICAgICJsYXllcklkIjogPGxheWVySWQ+LAogICAgLy8gICAgICAgICAgICAgImNhdGVnb3J5IjogPGNhdGVnb3J5PiwKICAgIC8vICAgICAgICAgICAgICJjb250YWluZXIiOiA8Y29udGFpbmVyPgogICAgLy8gICAgICAgICAgIH0KICAgIC8vIH0KICAgIHRoaXMuX2J5U3RhbXAgPSB7fTsKCiAgICAvLyBFTkQgbGF5ZXIgaW5kaWNlcwoKICAgIC8vIHs8Y2F0ZWdvcnlOYW1lPjogTC5sYXllckdyb3VwfQogICAgdGhpcy5fY2F0ZWdvcnlDb250YWluZXJzID0ge307CiAgICAvLyB7PGdyb3VwTmFtZT46IEwubGF5ZXJHcm91cH0KICAgIHRoaXMuX2dyb3VwQ29udGFpbmVycyA9IHt9OwogIH0KICBMYXllck1hbmFnZXIucHJvdG90eXBlLmFkZExheWVyID0gZnVuY3Rpb24obGF5ZXIsIGNhdGVnb3J5LCBsYXllcklkLCBncm91cCkgewogICAgLy8gV2FzIGEgZ3JvdXAgcHJvdmlkZWQ/CiAgICB2YXIgaGFzSWQgPSB0eXBlb2YobGF5ZXJJZCkgPT09ICJzdHJpbmciOwogICAgdmFyIGdyb3VwZWQgPSB0eXBlb2YoZ3JvdXApID09PSAic3RyaW5nIjsKCiAgICB2YXIgc3RhbXAgPSBMLlV0aWwuc3RhbXAobGF5ZXIpOwoKICAgIC8vIFRoaXMgd2lsbCBiZSB0aGUgZGVmYXVsdCBsYXllciBncm91cCB0byBhZGQgdGhlIGxheWVyIHRvLgogICAgLy8gV2UgbWF5IG92ZXJ3cml0ZSB0aGlzIHZhciBiZWZvcmUgdXNpbmcgaXQgKGkuZS4gaWYgYSBncm91cCBpcyBhc3NpZ25lZCkuCiAgICAvLyBUaGlzIG9uZSBsaW5lciBjcmVhdGVzIHRoZSBfY2F0ZWdvcnlDb250YWluZXJzW2NhdGVnb3J5XSBlbnRyeSBpZiBpdAogICAgLy8gZG9lc24ndCBhbHJlYWR5IGV4aXN0LgogICAgdmFyIGNvbnRhaW5lciA9IHRoaXMuX2NhdGVnb3J5Q29udGFpbmVyc1tjYXRlZ29yeV0gPQogICAgICAgIHRoaXMuX2NhdGVnb3J5Q29udGFpbmVyc1tjYXRlZ29yeV0gfHwgTC5sYXllckdyb3VwKCkuYWRkVG8odGhpcy5fbWFwKTsKCiAgICB2YXIgb2xkTGF5ZXIgPSBudWxsOwogICAgaWYgKGhhc0lkKSB7CiAgICAgIC8vIEZpcnN0LCByZW1vdmUgYW55IGxheWVyIHdpdGggdGhlIHNhbWUgY2F0ZWdvcnkgYW5kIGxheWVySWQKICAgICAgdmFyIHByZWZpeGVkTGF5ZXJJZCA9IHRoaXMuX2xheWVySWRLZXkoY2F0ZWdvcnksIGxheWVySWQpOwogICAgICBvbGRMYXllciA9IHRoaXMuX2J5TGF5ZXJJZFtwcmVmaXhlZExheWVySWRdOwogICAgICBpZiAob2xkTGF5ZXIpIHsKICAgICAgICB0aGlzLl9yZW1vdmVMYXllcihvbGRMYXllcik7CiAgICAgIH0KCiAgICAgIC8vIFVwZGF0ZSBsYXllcklkIGluZGV4CiAgICAgIHRoaXMuX2J5TGF5ZXJJZFtwcmVmaXhlZExheWVySWRdID0gbGF5ZXI7CiAgICB9CgogICAgLy8gVXBkYXRlIGdyb3VwIGluZGV4CiAgICBpZiAoZ3JvdXBlZCkgewogICAgICB0aGlzLl9ieUdyb3VwW2dyb3VwXSA9IHRoaXMuX2J5R3JvdXBbZ3JvdXBdIHx8IHt9OwogICAgICB0aGlzLl9ieUdyb3VwW2dyb3VwXVtzdGFtcF0gPSBsYXllcjsKCiAgICAgIC8vIFNpbmNlIGEgZ3JvdXAgaXMgYXNzaWduZWQsIGRvbid0IGFkZCB0aGUgbGF5ZXIgdG8gdGhlIGNhdGVnb3J5J3MgbGF5ZXIKICAgICAgLy8gZ3JvdXA7IGluc3RlYWQsIHVzZSB0aGUgZ3JvdXAncyBsYXllciBncm91cC4KICAgICAgLy8gVGhpcyBvbmUgbGluZXIgY3JlYXRlcyB0aGUgX2dyb3VwQ29udGFpbmVyc1tncm91cF0gZW50cnkgaWYgaXQgZG9lc24ndAogICAgICAvLyBhbHJlYWR5IGV4aXN0LgogICAgICBjb250YWluZXIgPSB0aGlzLmdldExheWVyR3JvdXAoZ3JvdXAsIHRydWUpOwogICAgfQoKICAgIC8vIFVwZGF0ZSBjYXRlZ29yeSBpbmRleAogICAgdGhpcy5fYnlDYXRlZ29yeVtjYXRlZ29yeV0gPSB0aGlzLl9ieUNhdGVnb3J5W2NhdGVnb3J5XSB8fCB7fTsKICAgIHRoaXMuX2J5Q2F0ZWdvcnlbY2F0ZWdvcnldW3N0YW1wXSA9IGxheWVyOwoKICAgIC8vIFVwZGF0ZSBzdGFtcCBpbmRleAogICAgdGhpcy5fYnlTdGFtcFtzdGFtcF0gPSB7CiAgICAgIGxheWVyOiBsYXllciwKICAgICAgZ3JvdXA6IGdyb3VwLAogICAgICBsYXllcklkOiBsYXllcklkLAogICAgICBjYXRlZ29yeTogY2F0ZWdvcnksCiAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyCiAgICB9OwoKICAgIC8vIEFkZCB0byBjb250YWluZXIKICAgIGNvbnRhaW5lci5hZGRMYXllcihsYXllcik7CgogICAgcmV0dXJuIG9sZExheWVyOwogIH07CiAgTGF5ZXJNYW5hZ2VyLnByb3RvdHlwZS5nZXRMYXllciA9IGZ1bmN0aW9uKGNhdGVnb3J5LCBsYXllcklkKSB7CiAgICByZXR1cm4gdGhpcy5fYnlMYXllcklkW3RoaXMuX2xheWVySWRLZXkoY2F0ZWdvcnksIGxheWVySWQpXTsKICB9OwogIExheWVyTWFuYWdlci5wcm90b3R5cGUucmVtb3ZlTGF5ZXIgPSBmdW5jdGlvbihjYXRlZ29yeSwgbGF5ZXJJZCkgewogICAgLy8gRmluZCBsYXllciBpbmZvCiAgICB2YXIgbGF5ZXIgPSB0aGlzLl9ieUxheWVySWRbdGhpcy5fbGF5ZXJJZEtleShjYXRlZ29yeSwgbGF5ZXJJZCldOwogICAgaWYgKCFsYXllcikgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICB0aGlzLl9yZW1vdmVMYXllcihsYXllcik7CiAgICByZXR1cm4gdHJ1ZTsKICB9OwogIExheWVyTWFuYWdlci5wcm90b3R5cGUuY2xlYXJMYXllcnMgPSBmdW5jdGlvbihjYXRlZ29yeSkgewogICAgdmFyIHNlbGYgPSB0aGlzOwoKICAgIC8vIEZpbmQgYWxsIGxheWVycyBpbiBfYnlDYXRlZ29yeVtjYXRlZ29yeV0KICAgIHZhciBjYXRUYWJsZSA9IHRoaXMuX2J5Q2F0ZWdvcnlbY2F0ZWdvcnldOwogICAgaWYgKCFjYXRUYWJsZSkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8gUmVtb3ZlIGFsbCBsYXllcnMuIE1ha2UgY29weSBvZiBrZXlzIHRvIGF2b2lkIG11dGF0aW5nIHRoZSBjb2xsZWN0aW9uCiAgICAvLyBiZWhpbmQgdGhlIGl0ZXJhdG9yIHlvdSdyZSBhY2Nlc3NpbmcuCiAgICB2YXIgc3RhbXBzID0gW107CiAgICAkLmVhY2goY2F0VGFibGUsIGZ1bmN0aW9uKGssIHYpIHsKICAgICAgc3RhbXBzLnB1c2goayk7CiAgICB9KTsKICAgICQuZWFjaChzdGFtcHMsIGZ1bmN0aW9uKGksIHN0YW1wKSB7CiAgICAgIHNlbGYuX3JlbW92ZUxheWVyKHN0YW1wKTsKICAgIH0pOwogIH07CiAgTGF5ZXJNYW5hZ2VyLnByb3RvdHlwZS5nZXRMYXllckdyb3VwID0gZnVuY3Rpb24oZ3JvdXAsIGVuc3VyZUV4aXN0cykgewogICAgdmFyIGcgPSB0aGlzLl9ncm91cENvbnRhaW5lcnNbZ3JvdXBdOwogICAgaWYgKGVuc3VyZUV4aXN0cyAmJiAhZykgewogICAgICB0aGlzLl9ieUdyb3VwW2dyb3VwXSA9IHRoaXMuX2J5R3JvdXBbZ3JvdXBdIHx8IHt9OwogICAgICBnID0gdGhpcy5fZ3JvdXBDb250YWluZXJzW2dyb3VwXSA9IEwubGF5ZXJHcm91cCgpOwogICAgICBnLmdyb3VwbmFtZSA9IGdyb3VwOwogICAgICBnLmFkZFRvKHRoaXMuX21hcCk7CiAgICB9CiAgICByZXR1cm4gZzsKICB9OwogIExheWVyTWFuYWdlci5wcm90b3R5cGUuZ2V0R3JvdXBOYW1lRnJvbUxheWVyR3JvdXAgPSBmdW5jdGlvbihsYXllckdyb3VwKSB7CiAgICByZXR1cm4gbGF5ZXJHcm91cC5ncm91cG5hbWU7CiAgfTsKICBMYXllck1hbmFnZXIucHJvdG90eXBlLmdldFZpc2libGVHcm91cHMgPSBmdW5jdGlvbigpIHsKICAgIHZhciBzZWxmID0gdGhpczsKICAgIHZhciByZXN1bHQgPSBbXTsKICAgICQuZWFjaCh0aGlzLl9ncm91cENvbnRhaW5lcnMsIGZ1bmN0aW9uKGssIHYpIHsKICAgICAgaWYgKHNlbGYuX21hcC5oYXNMYXllcih2KSkgewogICAgICAgIHJlc3VsdC5wdXNoKGspOwogICAgICB9CiAgICB9KTsKICAgIHJldHVybiByZXN1bHQ7CiAgfTsKICBMYXllck1hbmFnZXIucHJvdG90eXBlLmNsZWFyR3JvdXAgPSBmdW5jdGlvbihncm91cCkgewogICAgdmFyIHNlbGYgPSB0aGlzOwoKICAgIC8vIEZpbmQgYWxsIGxheWVycyBpbiBfYnlHcm91cFtncm91cF0KICAgIHZhciBncm91cFRhYmxlID0gdGhpcy5fYnlHcm91cFtncm91cF07CiAgICBpZiAoIWdyb3VwVGFibGUpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vIFJlbW92ZSBhbGwgbGF5ZXJzLiBNYWtlIGNvcHkgb2Yga2V5cyB0byBhdm9pZCBtdXRhdGluZyB0aGUgY29sbGVjdGlvbgogICAgLy8gYmVoaW5kIHRoZSBpdGVyYXRvciB5b3UncmUgYWNjZXNzaW5nLgogICAgdmFyIHN0YW1wcyA9IFtdOwogICAgJC5lYWNoKGdyb3VwVGFibGUsIGZ1bmN0aW9uKGssIHYpIHsKICAgICAgc3RhbXBzLnB1c2goayk7CiAgICB9KTsKICAgICQuZWFjaChzdGFtcHMsIGZ1bmN0aW9uKGksIHN0YW1wKSB7CiAgICAgIHNlbGYuX3JlbW92ZUxheWVyKHN0YW1wKTsKICAgIH0pOwogIH07CiAgTGF5ZXJNYW5hZ2VyLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkgewogICAgZnVuY3Rpb24gY2xlYXJMYXllckdyb3VwKGtleSwgbGF5ZXJHcm91cCkgewogICAgICBsYXllckdyb3VwLmNsZWFyTGF5ZXJzKCk7CiAgICB9CiAgICAvLyBDbGVhciBhbGwgaW5kaWNlcyBhbmQgbGF5ZXJHcm91cHMKICAgIHRoaXMuX2J5R3JvdXAgPSB7fTsKICAgIHRoaXMuX2J5Q2F0ZWdvcnkgPSB7fTsKICAgIHRoaXMuX2J5TGF5ZXJJZCA9IHt9OwogICAgdGhpcy5fYnlTdGFtcCA9IHt9OwogICAgJC5lYWNoKHRoaXMuX2NhdGVnb3J5Q29udGFpbmVycywgY2xlYXJMYXllckdyb3VwKTsKICAgIHRoaXMuX2NhdGVnb3J5Q29udGFpbmVycyA9IHt9OwogICAgJC5lYWNoKHRoaXMuX2dyb3VwQ29udGFpbmVycywgY2xlYXJMYXllckdyb3VwKTsKICAgIHRoaXMuX2dyb3VwQ29udGFpbmVycyA9IHt9OwogIH07CiAgTGF5ZXJNYW5hZ2VyLnByb3RvdHlwZS5fcmVtb3ZlTGF5ZXIgPSBmdW5jdGlvbihsYXllcikgewogICAgdmFyIHN0YW1wOwogICAgaWYgKHR5cGVvZihsYXllcikgPT09ICJzdHJpbmciKSB7CiAgICAgIHN0YW1wID0gbGF5ZXI7CiAgICB9IGVsc2UgewogICAgICBzdGFtcCA9IEwuVXRpbC5zdGFtcChsYXllcik7CiAgICB9CgogICAgdmFyIGxheWVySW5mbyA9IHRoaXMuX2J5U3RhbXBbc3RhbXBdOwogICAgaWYgKCFsYXllckluZm8pIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIGxheWVySW5mby5jb250YWluZXIucmVtb3ZlTGF5ZXIoc3RhbXApOwogICAgaWYgKHR5cGVvZihsYXllckluZm8uZ3JvdXApID09PSAic3RyaW5nIikgewogICAgICBkZWxldGUgdGhpcy5fYnlHcm91cFtsYXllckluZm8uZ3JvdXBdW3N0YW1wXTsKICAgIH0KICAgIGlmICh0eXBlb2YobGF5ZXJJbmZvLmxheWVySWQpID09PSAic3RyaW5nIikgewogICAgICBkZWxldGUgdGhpcy5fYnlMYXllcklkW3RoaXMuX2xheWVySWRLZXkobGF5ZXJJbmZvLmNhdGVnb3J5LCBsYXllckluZm8ubGF5ZXJJZCldOwogICAgfQogICAgZGVsZXRlIHRoaXMuX2J5Q2F0ZWdvcnlbbGF5ZXJJbmZvLmNhdGVnb3J5XVtzdGFtcF07CiAgICBkZWxldGUgdGhpcy5fYnlTdGFtcFtzdGFtcF07CiAgfTsKICBMYXllck1hbmFnZXIucHJvdG90eXBlLl9sYXllcklkS2V5ID0gZnVuY3Rpb24oY2F0ZWdvcnksIGxheWVySWQpIHsKICAgIHJldHVybiBjYXRlZ29yeSArICJcbiIgKyBsYXllcklkOwogIH07CgogIGZ1bmN0aW9uIENvbnRyb2xTdG9yZShtYXApIHsKICAgIHRoaXMuX2NvbnRyb2xzTm9JZCA9IFtdOwogICAgdGhpcy5fY29udHJvbHNCeUlkID0ge307CiAgICB0aGlzLl9tYXAgPSBtYXAKICB9CgogIENvbnRyb2xTdG9yZS5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24oY29udHJvbCwgaWQsIGh0bWwpIHsKICAgIGlmICh0eXBlb2YoaWQpICE9PSAndW5kZWZpbmVkJyAmJiBpZCAhPT0gbnVsbCkgewogICAgICBpZiAodGhpcy5fY29udHJvbHNCeUlkW2lkXSkgewogICAgICAgIHRoaXMuX21hcC5yZW1vdmVDb250cm9sKHRoaXMuX2NvbnRyb2xzQnlJZFtpZF0pOwogICAgICB9CiAgICAgIHRoaXMuX2NvbnRyb2xzQnlJZFtpZF0gPSBjb250cm9sOwogICAgfSBlbHNlIHsKICAgICAgdGhpcy5fY29udHJvbHNOb0lkLnB1c2goY29udHJvbCkKICAgIH0KICAgIHRoaXMuX21hcC5hZGRDb250cm9sKGNvbnRyb2wpOwogIH07CgogIENvbnRyb2xTdG9yZS5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24oaWQpIHsKICAgIGlmICh0aGlzLl9jb250cm9sc0J5SWRbaWRdKSB7CiAgICAgIHZhciBjb250cm9sID0gdGhpcy5fY29udHJvbHNCeUlkW2lkXTsKICAgICAgdGhpcy5fbWFwLnJlbW92ZUNvbnRyb2woY29udHJvbCk7CiAgICAgIGRlbGV0ZSB0aGlzLl9jb250cm9sc0J5SWRbaWRdOwogICAgfQogIH07CgogIENvbnRyb2xTdG9yZS5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbigpIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fY29udHJvbHNOb0lkLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBjb250cm9sID0gdGhpcy5fY29udHJvbHNOb0lkW2ldOwogICAgICB0aGlzLl9tYXAucmVtb3ZlQ29udHJvbChjb250cm9sKTsKICAgIH07CiAgICB0aGlzLl9jb250cm9sc05vSWQgPSBbXTsKCiAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5fY29udHJvbHNCeUlkKSB7CiAgICAgIHZhciBjb250cm9sID0gdGhpcy5fY29udHJvbHNCeUlkW2tleV07CiAgICAgIHRoaXMuX21hcC5yZW1vdmVDb250cm9sKGNvbnRyb2wpCiAgICB9CiAgICB0aGlzLl9jb250cm9sc0J5SWQgPSB7fQogIH0KCiAgZnVuY3Rpb24gQ2x1c3RlckxheWVyU3RvcmUoZ3JvdXApIHsKICAgIHRoaXMuX2xheWVycyA9IHt9OwogICAgdGhpcy5fZ3JvdXAgPSBncm91cDsKICB9CgogIENsdXN0ZXJMYXllclN0b3JlLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbihsYXllciwgaWQpIHsKICAgIGlmICh0eXBlb2YoaWQpICE9PSAndW5kZWZpbmVkJyAmJiBpZCAhPT0gbnVsbCkgewogICAgICBpZiAodGhpcy5fbGF5ZXJzW2lkXSkgewogICAgICAgIHRoaXMuX2dyb3VwLnJlbW92ZUxheWVyKHRoaXMuX2xheWVyc1tpZF0pOwogICAgICB9CiAgICAgIHRoaXMuX2xheWVyc1tpZF0gPSBsYXllcjsKICAgIH0KICAgIHRoaXMuX2dyb3VwLmFkZExheWVyKGxheWVyKTsKICB9OwoKICBDbHVzdGVyTGF5ZXJTdG9yZS5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24oaWQpIHsKICAgIGlmICh0eXBlb2YoaWQpID09PSAndW5kZWZpbmVkJyB8fCBpZCA9PT0gbnVsbCkgewogICAgICByZXR1cm47CiAgICB9CgogICAgaWQgPSBhc0FycmF5KGlkKTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaWQubGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKHRoaXMuX2xheWVyc1tpZFtpXV0pIHsKICAgICAgICB0aGlzLl9ncm91cC5yZW1vdmVMYXllcih0aGlzLl9sYXllcnNbaWRbaV1dKTsKICAgICAgICBkZWxldGUgdGhpcy5fbGF5ZXJzW2lkW2ldXTsKICAgICAgfQogICAgfQogIH07CgogIENsdXN0ZXJMYXllclN0b3JlLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkgewogICAgdGhpcy5fbGF5ZXJzID0ge307CiAgICB0aGlzLl9ncm91cC5jbGVhckxheWVycygpOwogIH07CgogIGZ1bmN0aW9uIG1vdXNlSGFuZGxlcihtYXBJZCwgbGF5ZXJJZCwgZ3JvdXAsIGV2ZW50TmFtZSwgZXh0cmFJbmZvKSB7CiAgICByZXR1cm4gZnVuY3Rpb24oZSkgewogICAgICBpZiAoIUhUTUxXaWRnZXRzLnNoaW55TW9kZSkgcmV0dXJuOwoKICAgICAgdmFyIGV2ZW50SW5mbyA9ICQuZXh0ZW5kKAogICAgICAgIHsKICAgICAgICAgIGlkOiBsYXllcklkLAogICAgICAgICAgJy5ub25jZSc6IE1hdGgucmFuZG9tKCkgIC8vIGZvcmNlIHJlYWN0aXZpdHkKICAgICAgICB9LAogICAgICAgIGdyb3VwICE9PSBudWxsID8ge2dyb3VwOiBncm91cH0gOiBudWxsLAogICAgICAgIGUudGFyZ2V0LmdldExhdExuZyA/IGUudGFyZ2V0LmdldExhdExuZygpIDogZS5sYXRsbmcsCiAgICAgICAgZXh0cmFJbmZvCiAgICAgICk7CgogICAgICBTaGlueS5vbklucHV0Q2hhbmdlKG1hcElkICsgJ18nICsgZXZlbnROYW1lLCBldmVudEluZm8pOwogICAgfTsKICB9CgogIC8vIFNlbmQgdXBkYXRlZCBib3VuZHMgYmFjayB0byBhcHAuIFRha2VzIGEgbGVhZmxldCBldmVudCBvYmplY3QgYXMgaW5wdXQuCiAgZnVuY3Rpb24gdXBkYXRlQm91bmRzKG1hcCkgewogICAgdmFyIGlkID0gbWFwLmdldENvbnRhaW5lcigpLmlkOwogICAgdmFyIGJvdW5kcyA9IG1hcC5nZXRCb3VuZHMoKTsKCiAgICBTaGlueS5vbklucHV0Q2hhbmdlKGlkICsgJ19ib3VuZHMnLCB7CiAgICAgIG5vcnRoOiBib3VuZHMuZ2V0Tm9ydGhFYXN0KCkubGF0LAogICAgICBlYXN0OiBib3VuZHMuZ2V0Tm9ydGhFYXN0KCkubG5nLAogICAgICBzb3V0aDogYm91bmRzLmdldFNvdXRoV2VzdCgpLmxhdCwKICAgICAgd2VzdDogYm91bmRzLmdldFNvdXRoV2VzdCgpLmxuZwogICAgfSk7CiAgICBTaGlueS5vbklucHV0Q2hhbmdlKGlkICsgJ196b29tJywgbWFwLmdldFpvb20oKSk7CiAgfQoKICB3aW5kb3cuTGVhZmxldFdpZGdldCA9IHt9OwogIHZhciBtZXRob2RzID0gd2luZG93LkxlYWZsZXRXaWRnZXQubWV0aG9kcyA9IHt9OwoKICBtZXRob2RzLmNsZWFyR3JvdXAgPSBmdW5jdGlvbihncm91cCkgewogICAgdmFyIHNlbGYgPSB0aGlzOwogICAgJC5lYWNoKGFzQXJyYXkoZ3JvdXApLCBmdW5jdGlvbihpLCB2KSB7CiAgICAgIHNlbGYubGF5ZXJNYW5hZ2VyLmNsZWFyR3JvdXAodik7CiAgICB9KTsKICB9OwoKICBtZXRob2RzLnNldFZpZXcgPSBmdW5jdGlvbihjZW50ZXIsIHpvb20sIG9wdGlvbnMpIHsKICAgIHRoaXMuc2V0VmlldyhjZW50ZXIsIHpvb20sIG9wdGlvbnMpOwogIH07CgogIG1ldGhvZHMuZml0Qm91bmRzID0gZnVuY3Rpb24obGF0MSwgbG5nMSwgbGF0MiwgbG5nMikgewogICAgdGhpcy5maXRCb3VuZHMoWwogICAgICBbbGF0MSwgbG5nMV0sIFtsYXQyLCBsbmcyXQogICAgXSk7CiAgfTsKCiAgbWV0aG9kcy5zZXRNYXhCb3VuZHMgPSBmdW5jdGlvbihsYXQxLCBsbmcxLCBsYXQyLCBsbmcyKSB7CiAgICB0aGlzLnNldE1heEJvdW5kcyhbCiAgICAgIFtsYXQxLCBsbmcxXSwgW2xhdDIsIGxuZzJdCiAgICBdKTsKICB9OwoKICBtZXRob2RzLmFkZFBvcHVwcyA9IGZ1bmN0aW9uKGxhdCwgbG5nLCBwb3B1cCwgbGF5ZXJJZCwgZ3JvdXAsIG9wdGlvbnMpIHsKICAgIHZhciBkZiA9IGRhdGFmcmFtZS5jcmVhdGUoKQogICAgICAuY29sKCdsYXQnLCBsYXQpCiAgICAgIC5jb2woJ2xuZycsIGxuZykKICAgICAgLmNvbCgncG9wdXAnLCBwb3B1cCkKICAgICAgLmNvbCgnbGF5ZXJJZCcsIGxheWVySWQpCiAgICAgIC5jb2woJ2dyb3VwJywgZ3JvdXApCiAgICAgIC5jYmluZChvcHRpb25zKTsKCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRmLm5yb3coKTsgaSsrKSB7CiAgICAgIChmdW5jdGlvbigpIHsKICAgICAgICB2YXIgcG9wdXAgPSBMLnBvcHVwKGRmLmdldChpKSkKICAgICAgICAgICAgICAgICAgICAgLnNldExhdExuZyhbZGYuZ2V0KGksICdsYXQnKSwgZGYuZ2V0KGksICdsbmcnKV0pCiAgICAgICAgICAgICAgICAgICAgIC5zZXRDb250ZW50KGRmLmdldChpLCAncG9wdXAnKSk7CiAgICAgICAgdmFyIHRoaXNJZCA9IGRmLmdldChpLCAnbGF5ZXJJZCcpOwogICAgICAgIHZhciB0aGlzR3JvdXAgPSBkZi5nZXQoaSwgJ2dyb3VwJyk7CiAgICAgICAgdGhpcy5sYXllck1hbmFnZXIuYWRkTGF5ZXIocG9wdXAsICJwb3B1cCIsIHRoaXNJZCwgdGhpc0dyb3VwKTsKICAgICAgICBwb3B1cC5vbignY2xpY2snLCBtb3VzZUhhbmRsZXIodGhpcy5pZCwgdGhpc0lkLCB0aGlzR3JvdXAsICdwb3B1cF9jbGljaycpLCB0aGlzKTsKICAgICAgICBwb3B1cC5vbignbW91c2VvdmVyJywgbW91c2VIYW5kbGVyKHRoaXMuaWQsIHRoaXNJZCwgdGhpc0dyb3VwLCAncG9wdXBfbW91c2VvdmVyJyksIHRoaXMpOwogICAgICAgIHBvcHVwLm9uKCdtb3VzZW91dCcsIG1vdXNlSGFuZGxlcih0aGlzLmlkLCB0aGlzSWQsIHRoaXNHcm91cCwgJ3BvcHVwX21vdXNlb3V0JyksIHRoaXMpOwogICAgICB9KS5jYWxsKHRoaXMpOwogICAgfQogIH07CgogIG1ldGhvZHMucmVtb3ZlUG9wdXAgPSBmdW5jdGlvbihsYXllcklkKSB7CiAgICB0aGlzLmxheWVyTWFuYWdlci5yZW1vdmVMYXllcigicG9wdXAiLCBsYXllcklkKTsKICB9OwoKICBtZXRob2RzLmNsZWFyUG9wdXBzID0gZnVuY3Rpb24oKSB7CiAgICB0aGlzLmxheWVyTWFuYWdlci5jbGVhckxheWVycygicG9wdXAiKTsKICB9OwoKICBtZXRob2RzLmFkZFRpbGVzID0gZnVuY3Rpb24odXJsVGVtcGxhdGUsIGxheWVySWQsIGdyb3VwLCBvcHRpb25zKSB7CiAgICB0aGlzLmxheWVyTWFuYWdlci5hZGRMYXllcihMLnRpbGVMYXllcih1cmxUZW1wbGF0ZSwgb3B0aW9ucyksICJ0aWxlIiwgbGF5ZXJJZCwgZ3JvdXApOwogIH07CgogIG1ldGhvZHMucmVtb3ZlVGlsZXMgPSBmdW5jdGlvbihsYXllcklkKSB7CiAgICB0aGlzLmxheWVyTWFuYWdlci5yZW1vdmVMYXllcigidGlsZSIsIGxheWVySWQpOwogIH07CgogIG1ldGhvZHMuY2xlYXJUaWxlcyA9IGZ1bmN0aW9uKCkgewogICAgdGhpcy5sYXllck1hbmFnZXIuY2xlYXJMYXllcnMoInRpbGUiKTsKICB9OwoKICBtZXRob2RzLmFkZFdNU1RpbGVzID0gZnVuY3Rpb24oYmFzZVVybCwgbGF5ZXJJZCwgZ3JvdXAsIG9wdGlvbnMpIHsKICAgIHRoaXMubGF5ZXJNYW5hZ2VyLmFkZExheWVyKEwudGlsZUxheWVyLndtcyhiYXNlVXJsLCBvcHRpb25zKSwgInRpbGUiLCBsYXllcklkLCBncm91cCk7CiAgfTsKCiAgLy8gR2l2ZW46CiAgLy8gICB7ZGF0YTogWyJhIiwgImIiLCAiYyJdLCBpbmRleDogWzAsIDEsIDAsIDJdfQogIC8vIHJldHVybnM6CiAgLy8gICBbImEiLCAiYiIsICJhIiwgImMiXQogIGZ1bmN0aW9uIHVucGFja1N0cmluZ3MoaWNvbnNldCkgewogICAgaWYgKCFpY29uc2V0KSB7CiAgICAgIHJldHVybiBpY29uc2V0OwogICAgfQogICAgaWYgKHR5cGVvZihpY29uc2V0LmluZGV4KSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgcmV0dXJuIGljb25zZXQ7CiAgICB9CgogICAgaWNvbnNldC5kYXRhID0gYXNBcnJheShpY29uc2V0LmRhdGEpOwogICAgaWNvbnNldC5pbmRleCA9IGFzQXJyYXkoaWNvbnNldC5pbmRleCk7CgogICAgcmV0dXJuICQubWFwKGljb25zZXQuaW5kZXgsIGZ1bmN0aW9uKGUsIGkpIHsKICAgICAgcmV0dXJuIGljb25zZXQuZGF0YVtlXTsKICAgIH0pOwogIH0KCiAgZnVuY3Rpb24gYWRkTWFya2VycyhtYXAsIGRmLCBncm91cCwgY2x1c3Rlck9wdGlvbnMsIGNsdXN0ZXJJZCwgbWFya2VyRnVuYykgewogICAgKGZ1bmN0aW9uKCkgewogICAgICB2YXIgY2x1c3Rlckdyb3VwID0gdGhpcy5sYXllck1hbmFnZXIuZ2V0TGF5ZXIoImNsdXN0ZXIiLCBjbHVzdGVySWQpLAogICAgICAgICAgY2x1c3RlciA9IGNsdXN0ZXJPcHRpb25zICE9PSBudWxsOwogICAgICBpZiAoY2x1c3RlciAmJiAhY2x1c3Rlckdyb3VwKSB7CiAgICAgICAgY2x1c3Rlckdyb3VwID0gTC5tYXJrZXJDbHVzdGVyR3JvdXAoY2x1c3Rlck9wdGlvbnMpOwogICAgICAgIGNsdXN0ZXJHcm91cC5jbHVzdGVyTGF5ZXJTdG9yZSA9IG5ldyBDbHVzdGVyTGF5ZXJTdG9yZShjbHVzdGVyR3JvdXApOwogICAgICB9CiAgICAgIHZhciBleHRyYUluZm8gPSBjbHVzdGVyID8geyBjbHVzdGVySWQ6IGNsdXN0ZXJJZCB9IDoge307CgogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRmLm5yb3coKTsgaSsrKSB7CiAgICAgICAgKGZ1bmN0aW9uKCkgewogICAgICAgICAgdmFyIG1hcmtlciA9IG1hcmtlckZ1bmMoZGYsIGkpOwogICAgICAgICAgdmFyIHRoaXNJZCA9IGRmLmdldChpLCAnbGF5ZXJJZCcpOwogICAgICAgICAgdmFyIHRoaXNHcm91cCA9IGNsdXN0ZXIgPyBudWxsIDogZGYuZ2V0KGksICdncm91cCcpOwogICAgICAgICAgaWYgKGNsdXN0ZXIpIHsKICAgICAgICAgICAgY2x1c3Rlckdyb3VwLmNsdXN0ZXJMYXllclN0b3JlLmFkZChtYXJrZXIsIHRoaXNJZCk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aGlzLmxheWVyTWFuYWdlci5hZGRMYXllcihtYXJrZXIsICJtYXJrZXIiLCB0aGlzSWQsIHRoaXNHcm91cCk7CiAgICAgICAgICB9CiAgICAgICAgICB2YXIgcG9wdXAgPSBkZi5nZXQoaSwgJ3BvcHVwJyk7CiAgICAgICAgICBpZiAocG9wdXAgIT09IG51bGwpIG1hcmtlci5iaW5kUG9wdXAocG9wdXApOwogICAgICAgICAgbWFya2VyLm9uKCdjbGljaycsIG1vdXNlSGFuZGxlcih0aGlzLmlkLCB0aGlzSWQsIHRoaXNHcm91cCwgJ21hcmtlcl9jbGljaycsIGV4dHJhSW5mbyksIHRoaXMpOwogICAgICAgICAgbWFya2VyLm9uKCdtb3VzZW92ZXInLCBtb3VzZUhhbmRsZXIodGhpcy5pZCwgdGhpc0lkLCB0aGlzR3JvdXAsICdtYXJrZXJfbW91c2VvdmVyJywgZXh0cmFJbmZvKSwgdGhpcyk7CiAgICAgICAgICBtYXJrZXIub24oJ21vdXNlb3V0JywgbW91c2VIYW5kbGVyKHRoaXMuaWQsIHRoaXNJZCwgdGhpc0dyb3VwLCAnbWFya2VyX21vdXNlb3V0JywgZXh0cmFJbmZvKSwgdGhpcyk7CiAgICAgICAgfSkuY2FsbCh0aGlzKTsKICAgICAgfQoKICAgICAgaWYgKGNsdXN0ZXIpIHsKICAgICAgICB0aGlzLmxheWVyTWFuYWdlci5hZGRMYXllcihjbHVzdGVyR3JvdXAsICJjbHVzdGVyIiwgY2x1c3RlcklkLCBncm91cCk7CiAgICAgIH0KICAgIH0pLmNhbGwobWFwKTsKICB9CgogIG1ldGhvZHMuYWRkTWFya2VycyA9IGZ1bmN0aW9uKGxhdCwgbG5nLCBpY29uLCBsYXllcklkLCBncm91cCwgb3B0aW9ucywgcG9wdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2x1c3Rlck9wdGlvbnMsIGNsdXN0ZXJJZCkgewogICAgaWYgKGljb24pIHsKICAgICAgLy8gVW5wYWNrIGljb25zCiAgICAgIGljb24uaWNvblVybCAgICAgICAgID0gdW5wYWNrU3RyaW5ncyhpY29uLmljb25VcmwpOwogICAgICBpY29uLmljb25SZXRpbmFVcmwgICA9IHVucGFja1N0cmluZ3MoaWNvbi5pY29uUmV0aW5hVXJsKTsKICAgICAgaWNvbi5zaGFkb3dVcmwgICAgICAgPSB1bnBhY2tTdHJpbmdzKGljb24uc2hhZG93VXJsKTsKICAgICAgaWNvbi5zaGFkb3dSZXRpbmFVcmwgPSB1bnBhY2tTdHJpbmdzKGljb24uc2hhZG93UmV0aW5hVXJsKTsKCiAgICAgIC8vIFRoaXMgY2JpbmRzIHRoZSBpY29uIFVSTHMgYW5kIGFueSBvdGhlciBpY29uIG9wdGlvbnM7IHRoZXkncmUgYWxsCiAgICAgIC8vIHByZXNlbnQgb24gdGhlIGljb24gb2JqZWN0LgogICAgICB2YXIgaWNvbmRmID0gZGF0YWZyYW1lLmNyZWF0ZSgpLmNiaW5kKGljb24pOwoKICAgICAgLy8gQ29uc3RydWN0cyBhbiBpY29uIGZyb20gYSBzcGVjaWZpZWQgcm93IG9mIHRoZSBpY29uIGRhdGFmcmFtZS4KICAgICAgdmFyIGdldEljb24gPSBmdW5jdGlvbihpKSB7CiAgICAgICAgdmFyIG9wdHMgPSBpY29uZGYuZ2V0KGkpOwogICAgICAgIGlmICghb3B0cy5pY29uVXJsKSB7CiAgICAgICAgICByZXR1cm4gbmV3IEwuSWNvbi5EZWZhdWx0KCk7CiAgICAgICAgfQoKICAgICAgICAvLyBDb21wb3NpdGUgb3B0aW9ucyAobGlrZSBwb2ludHMgb3Igc2l6ZXMpIGFyZSBwYXNzZWQgZnJvbSBSIHdpdGggZWFjaAogICAgICAgIC8vIGluZGl2aWR1YWwgY29tcG9uZW50IGFzIGl0cyBvd24gb3B0aW9uLiBXZSBuZWVkIHRvIGNvbWJpbmUgdGhlbSBub3cKICAgICAgICAvLyBpbnRvIHRoZWlyIGNvbXBvc2l0ZSBmb3JtLgogICAgICAgIGlmIChvcHRzLmljb25XaWR0aCkgewogICAgICAgICAgb3B0cy5pY29uU2l6ZSA9IFtvcHRzLmljb25XaWR0aCwgb3B0cy5pY29uSGVpZ2h0XTsKICAgICAgICB9CiAgICAgICAgaWYgKG9wdHMuc2hhZG93V2lkdGgpIHsKICAgICAgICAgIG9wdHMuc2hhZG93U2l6ZSA9IFtvcHRzLnNoYWRvd1dpZHRoLCBvcHRzLnNoYWRvd0hlaWdodF07CiAgICAgICAgfQogICAgICAgIGlmIChvcHRzLmljb25BbmNob3JYKSB7CiAgICAgICAgICBvcHRzLmljb25BbmNob3IgPSBbb3B0cy5pY29uQW5jaG9yWCwgb3B0cy5pY29uQW5jaG9yWV07CiAgICAgICAgfQogICAgICAgIGlmIChvcHRzLnNoYWRvd0FuY2hvclgpIHsKICAgICAgICAgIG9wdHMuc2hhZG93QW5jaG9yID0gW29wdHMuc2hhZG93QW5jaG9yWCwgb3B0cy5zaGFkb3dBbmNob3JZXTsKICAgICAgICB9CiAgICAgICAgaWYgKG9wdHMucG9wdXBBbmNob3JYKSB7CiAgICAgICAgICBvcHRzLnBvcHVwQW5jaG9yID0gW29wdHMucG9wdXBBbmNob3JYLCBvcHRzLnBvcHVwQW5jaG9yWV07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IEwuSWNvbihvcHRzKTsKICAgICAgfTsKICAgIH0KCiAgICB2YXIgZGYgPSBkYXRhZnJhbWUuY3JlYXRlKCkKICAgICAgLmNvbCgnbGF0JywgbGF0KQogICAgICAuY29sKCdsbmcnLCBsbmcpCiAgICAgIC5jb2woJ2xheWVySWQnLCBsYXllcklkKQogICAgICAuY29sKCdncm91cCcsIGdyb3VwKQogICAgICAuY29sKCdwb3B1cCcsIHBvcHVwKQogICAgICAuY2JpbmQob3B0aW9ucyk7CgogICAgaWYgKGljb24pIGljb25kZi5lZmZlY3RpdmVMZW5ndGggPSBkZi5ucm93KCk7CgogICAgYWRkTWFya2Vycyh0aGlzLCBkZiwgZ3JvdXAsIGNsdXN0ZXJPcHRpb25zLCBjbHVzdGVySWQsIGZ1bmN0aW9uKGRmLCBpKSB7CiAgICAgIHZhciBvcHRpb25zID0gZGYuZ2V0KGkpOwogICAgICBpZiAoaWNvbikgb3B0aW9ucy5pY29uID0gZ2V0SWNvbihpKTsKICAgICAgcmV0dXJuIEwubWFya2VyKFtkZi5nZXQoaSwgJ2xhdCcpLCBkZi5nZXQoaSwgJ2xuZycpXSwgb3B0aW9ucyk7CiAgICB9KTsKICB9OwoKICBhZGRMYXllcnMgPSBmdW5jdGlvbihtYXAsIGNhdGVnb3J5LCBkZiwgbGF5ZXJGdW5jKSB7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRmLm5yb3coKTsgaSsrKSB7CiAgICAgIChmdW5jdGlvbigpIHsKICAgICAgICB2YXIgbGF5ZXIgPSBsYXllckZ1bmMoZGYsIGkpOwogICAgICAgIHZhciB0aGlzSWQgPSBkZi5nZXQoaSwgJ2xheWVySWQnKTsKICAgICAgICB2YXIgdGhpc0dyb3VwID0gZGYuZ2V0KGksICdncm91cCcpOwogICAgICAgIHRoaXMubGF5ZXJNYW5hZ2VyLmFkZExheWVyKGxheWVyLCBjYXRlZ29yeSwgdGhpc0lkLCB0aGlzR3JvdXApOwogICAgICAgIGlmIChsYXllci5iaW5kUG9wdXApIHsKICAgICAgICAgIHZhciBwb3B1cCA9IGRmLmdldChpLCAncG9wdXAnKTsKICAgICAgICAgIGlmIChwb3B1cCAhPT0gbnVsbCkgbGF5ZXIuYmluZFBvcHVwKHBvcHVwKTsKICAgICAgICB9CiAgICAgICAgbGF5ZXIub24oJ2NsaWNrJywgbW91c2VIYW5kbGVyKHRoaXMuaWQsIHRoaXNJZCwgdGhpc0dyb3VwLCBjYXRlZ29yeSArICdfY2xpY2snKSwgdGhpcyk7CiAgICAgICAgbGF5ZXIub24oJ21vdXNlb3ZlcicsIG1vdXNlSGFuZGxlcih0aGlzLmlkLCB0aGlzSWQsIHRoaXNHcm91cCwgY2F0ZWdvcnkgKyAnX21vdXNlb3ZlcicpLCB0aGlzKTsKICAgICAgICBsYXllci5vbignbW91c2VvdXQnLCBtb3VzZUhhbmRsZXIodGhpcy5pZCwgdGhpc0lkLCB0aGlzR3JvdXAsIGNhdGVnb3J5ICsgJ19tb3VzZW91dCcpLCB0aGlzKTsKICAgICAgfSkuY2FsbChtYXApOwogICAgfQogIH0KCiAgbWV0aG9kcy5hZGRDaXJjbGVzID0gZnVuY3Rpb24obGF0LCBsbmcsIHJhZGl1cywgbGF5ZXJJZCwgZ3JvdXAsIG9wdGlvbnMsIHBvcHVwKSB7CiAgICB2YXIgZGYgPSBkYXRhZnJhbWUuY3JlYXRlKCkKICAgICAgLmNvbCgnbGF0JywgbGF0KQogICAgICAuY29sKCdsbmcnLCBsbmcpCiAgICAgIC5jb2woJ3JhZGl1cycsIHJhZGl1cykKICAgICAgLmNvbCgnbGF5ZXJJZCcsIGxheWVySWQpCiAgICAgIC5jb2woJ2dyb3VwJywgZ3JvdXApCiAgICAgIC5jb2woJ3BvcHVwJywgcG9wdXApCiAgICAgIC5jYmluZChvcHRpb25zKTsKCiAgICBhZGRMYXllcnModGhpcywgInNoYXBlIiwgZGYsIGZ1bmN0aW9uKGRmLCBpKSB7CiAgICAgIHJldHVybiBMLmNpcmNsZShbZGYuZ2V0KGksICdsYXQnKSwgZGYuZ2V0KGksICdsbmcnKV0sIGRmLmdldChpLCAncmFkaXVzJyksIGRmLmdldChpKSk7CiAgICB9KTsKICB9OwoKICBtZXRob2RzLmFkZENpcmNsZU1hcmtlcnMgPSBmdW5jdGlvbihsYXQsIGxuZywgcmFkaXVzLCBsYXllcklkLCBncm91cCwgb3B0aW9ucywgY2x1c3Rlck9wdGlvbnMsIGNsdXN0ZXJJZCwgcG9wdXApIHsKICAgIHZhciBkZiA9IGRhdGFmcmFtZS5jcmVhdGUoKQogICAgICAuY29sKCdsYXQnLCBsYXQpCiAgICAgIC5jb2woJ2xuZycsIGxuZykKICAgICAgLmNvbCgncmFkaXVzJywgcmFkaXVzKQogICAgICAuY29sKCdsYXllcklkJywgbGF5ZXJJZCkKICAgICAgLmNvbCgnZ3JvdXAnLCBncm91cCkKICAgICAgLmNvbCgncG9wdXAnLCBwb3B1cCkKICAgICAgLmNiaW5kKG9wdGlvbnMpOwoKICAgIGFkZE1hcmtlcnModGhpcywgZGYsIGdyb3VwLCBjbHVzdGVyT3B0aW9ucywgY2x1c3RlcklkLCBmdW5jdGlvbihkZiwgaSkgewogICAgICByZXR1cm4gTC5jaXJjbGVNYXJrZXIoW2RmLmdldChpLCAnbGF0JyksIGRmLmdldChpLCAnbG5nJyldLCBkZi5nZXQoaSkpOwogICAgfSk7CiAgfTsKCiAgLyoKICAgKiBAcGFyYW0gbGF0IEFycmF5IG9mIGFycmF5cyBvZiBsYXRpdHVkZSBjb29yZGluYXRlcyBmb3IgcG9seWxpbmVzCiAgICogQHBhcmFtIGxuZyBBcnJheSBvZiBhcnJheXMgb2YgbG9uZ2l0dWRlIGNvb3JkaW5hdGVzIGZvciBwb2x5bGluZXMKICAgKi8KICBtZXRob2RzLmFkZFBvbHlsaW5lcyA9IGZ1bmN0aW9uKHBvbHlnb25zLCBsYXllcklkLCBncm91cCwgb3B0aW9ucywgcG9wdXApIHsKICAgIHZhciBkZiA9IGRhdGFmcmFtZS5jcmVhdGUoKQogICAgICAuY29sKCdzaGFwZXMnLCBwb2x5Z29ucykKICAgICAgLmNvbCgnbGF5ZXJJZCcsIGxheWVySWQpCiAgICAgIC5jb2woJ2dyb3VwJywgZ3JvdXApCiAgICAgIC5jb2woJ3BvcHVwJywgcG9wdXApCiAgICAgIC5jYmluZChvcHRpb25zKTsKCiAgICBhZGRMYXllcnModGhpcywgInNoYXBlIiwgZGYsIGZ1bmN0aW9uKGRmLCBpKSB7CiAgICAgICAgdmFyIHNoYXBlID0gZGYuZ2V0KGksICdzaGFwZXMnKVswXTsKICAgICAgICBzaGFwZSA9IEhUTUxXaWRnZXRzLmRhdGFmcmFtZVRvRDMoc2hhcGUpOwogICAgICAgIHJldHVybiBMLnBvbHlsaW5lKHNoYXBlLCBkZi5nZXQoaSkpOwogICAgfSk7CiAgfTsKCiAgbWV0aG9kcy5yZW1vdmVNYXJrZXIgPSBmdW5jdGlvbihsYXllcklkKSB7CiAgICB0aGlzLmxheWVyTWFuYWdlci5yZW1vdmVMYXllcigibWFya2VyIiwgbGF5ZXJJZCk7CiAgfTsKCiAgbWV0aG9kcy5jbGVhck1hcmtlcnMgPSBmdW5jdGlvbigpIHsKICAgIHRoaXMubGF5ZXJNYW5hZ2VyLmNsZWFyTGF5ZXJzKCJtYXJrZXIiKTsKICB9OwoKICBtZXRob2RzLnJlbW92ZU1hcmtlckNsdXN0ZXIgPSBmdW5jdGlvbihsYXllcklkKSB7CiAgICB0aGlzLmxheWVyTWFuYWdlci5yZW1vdmVMYXllcigiY2x1c3RlciIsIGxheWVySWQpOwogIH0KCiAgbWV0aG9kcy5yZW1vdmVNYXJrZXJGcm9tQ2x1c3RlciA9IGZ1bmN0aW9uKGxheWVySWQsIGNsdXN0ZXJJZCkgewogICAgdmFyIGNsdXN0ZXIgPSB0aGlzLmxheWVyTWFuYWdlci5nZXRMYXllcigiY2x1c3RlciIsIGNsdXN0ZXJJZCk7CiAgICBpZiAoIWNsdXN0ZXIpIHJldHVybjsKICAgIGNsdXN0ZXIuY2x1c3RlckxheWVyU3RvcmUucmVtb3ZlKGxheWVySWQpOwogIH0KCiAgbWV0aG9kcy5jbGVhck1hcmtlckNsdXN0ZXJzID0gZnVuY3Rpb24oKSB7CiAgICB0aGlzLmxheWVyTWFuYWdlci5jbGVhckxheWVycygiY2x1c3RlciIpOwogIH07CgogIG1ldGhvZHMucmVtb3ZlU2hhcGUgPSBmdW5jdGlvbihsYXllcklkKSB7CiAgICB0aGlzLmxheWVyTWFuYWdlci5yZW1vdmVMYXllcigic2hhcGUiLCBsYXllcklkKTsKICB9OwoKICBtZXRob2RzLmNsZWFyU2hhcGVzID0gZnVuY3Rpb24oKSB7CiAgICB0aGlzLmxheWVyTWFuYWdlci5jbGVhckxheWVycygic2hhcGUiKTsKICB9OwoKICBtZXRob2RzLmFkZFJlY3RhbmdsZXMgPSBmdW5jdGlvbihsYXQxLCBsbmcxLCBsYXQyLCBsbmcyLCBsYXllcklkLCBncm91cCwgb3B0aW9ucywgcG9wdXApIHsKICAgIHZhciBkZiA9IGRhdGFmcmFtZS5jcmVhdGUoKQogICAgICAuY29sKCdsYXQxJywgbGF0MSkKICAgICAgLmNvbCgnbG5nMScsIGxuZzEpCiAgICAgIC5jb2woJ2xhdDInLCBsYXQyKQogICAgICAuY29sKCdsbmcyJywgbG5nMikKICAgICAgLmNvbCgnbGF5ZXJJZCcsIGxheWVySWQpCiAgICAgIC5jb2woJ2dyb3VwJywgZ3JvdXApCiAgICAgIC5jb2woJ3BvcHVwJywgcG9wdXApCiAgICAgIC5jYmluZChvcHRpb25zKTsKCiAgICBhZGRMYXllcnModGhpcywgInNoYXBlIiwgZGYsIGZ1bmN0aW9uKGRmLCBpKSB7CiAgICAgIHJldHVybiBMLnJlY3RhbmdsZShbCiAgICAgICAgICBbZGYuZ2V0KGksICdsYXQxJyksIGRmLmdldChpLCAnbG5nMScpXSwKICAgICAgICAgIFtkZi5nZXQoaSwgJ2xhdDInKSwgZGYuZ2V0KGksICdsbmcyJyldCiAgICAgICAgXSwKICAgICAgICBkZi5nZXQoaSkpOwogICAgfSk7CiAgfTsKCiAgLyoKICAgKiBAcGFyYW0gbGF0IEFycmF5IG9mIGFycmF5cyBvZiBsYXRpdHVkZSBjb29yZGluYXRlcyBmb3IgcG9seWdvbnMKICAgKiBAcGFyYW0gbG5nIEFycmF5IG9mIGFycmF5cyBvZiBsb25naXR1ZGUgY29vcmRpbmF0ZXMgZm9yIHBvbHlnb25zCiAgICovCiAgbWV0aG9kcy5hZGRQb2x5Z29ucyA9IGZ1bmN0aW9uKHBvbHlnb25zLCBsYXllcklkLCBncm91cCwgb3B0aW9ucywgcG9wdXApIHsKICAgIHZhciBkZiA9IGRhdGFmcmFtZS5jcmVhdGUoKQogICAgICAuY29sKCdzaGFwZXMnLCBwb2x5Z29ucykKICAgICAgLmNvbCgnbGF5ZXJJZCcsIGxheWVySWQpCiAgICAgIC5jb2woJ2dyb3VwJywgZ3JvdXApCiAgICAgIC5jb2woJ3BvcHVwJywgcG9wdXApCiAgICAgIC5jYmluZChvcHRpb25zKTsKCiAgICBhZGRMYXllcnModGhpcywgInNoYXBlIiwgZGYsIGZ1bmN0aW9uKGRmLCBpKSB7CiAgICAgIHZhciBzaGFwZXMgPSBkZi5nZXQoaSwgJ3NoYXBlcycpOwogICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNoYXBlcy5sZW5ndGg7IGorKykgewogICAgICAgIHNoYXBlc1tqXSA9IEhUTUxXaWRnZXRzLmRhdGFmcmFtZVRvRDMoc2hhcGVzW2pdKTsKICAgICAgfQogICAgICByZXR1cm4gTC5wb2x5Z29uKHNoYXBlcywgZGYuZ2V0KGkpKTsKICAgIH0pOwogIH07CgogIG1ldGhvZHMuYWRkR2VvSlNPTiA9IGZ1bmN0aW9uKGRhdGEsIGxheWVySWQsIGdyb3VwLCBzdHlsZSkgewogICAgdmFyIHNlbGYgPSB0aGlzOwogICAgaWYgKHR5cGVvZihkYXRhKSA9PT0gInN0cmluZyIpIHsKICAgICAgZGF0YSA9IEpTT04ucGFyc2UoZGF0YSk7CiAgICB9CgogICAgdmFyIGdsb2JhbFN0eWxlID0gJC5leHRlbmQoe30sIHN0eWxlLCBkYXRhLnN0eWxlIHx8IHt9KTsKCiAgICB2YXIgZ2psYXllciA9IEwuZ2VvSnNvbihkYXRhLCB7CiAgICAgIHN0eWxlOiBmdW5jdGlvbihmZWF0dXJlKSB7CiAgICAgICAgaWYgKGZlYXR1cmUuc3R5bGUgfHwgZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlKSB7CiAgICAgICAgICByZXR1cm4gJC5leHRlbmQoe30sIGdsb2JhbFN0eWxlLCBmZWF0dXJlLnN0eWxlLCBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByZXR1cm4gZ2xvYmFsU3R5bGU7CiAgICAgICAgfQogICAgICB9LAogICAgICBvbkVhY2hGZWF0dXJlOiBmdW5jdGlvbihmZWF0dXJlLCBsYXllcikgewogICAgICAgIHZhciBleHRyYUluZm8gPSB7CiAgICAgICAgICBmZWF0dXJlSWQ6IGZlYXR1cmUuaWQsCiAgICAgICAgICBwcm9wZXJ0aWVzOiBmZWF0dXJlLnByb3BlcnRpZXMKICAgICAgICB9OwogICAgICAgIHZhciBwb3B1cCA9IGZlYXR1cmUucHJvcGVydGllcy5wb3B1cDsKICAgICAgICBpZiAodHlwZW9mIHBvcHVwICE9PSAndW5kZWZpbmVkJyAmJiBwb3B1cCAhPT0gbnVsbCkgbGF5ZXIuYmluZFBvcHVwKHBvcHVwKTsKICAgICAgICBsYXllci5vbigiY2xpY2siLCBtb3VzZUhhbmRsZXIoc2VsZi5pZCwgbGF5ZXJJZCwgZ3JvdXAsICJnZW9qc29uX2NsaWNrIiwgZXh0cmFJbmZvKSwgdGhpcyk7CiAgICAgICAgbGF5ZXIub24oIm1vdXNlb3ZlciIsIG1vdXNlSGFuZGxlcihzZWxmLmlkLCBsYXllcklkLCBncm91cCwgImdlb2pzb25fbW91c2VvdmVyIiwgZXh0cmFJbmZvKSwgdGhpcyk7CiAgICAgICAgbGF5ZXIub24oIm1vdXNlb3V0IiwgbW91c2VIYW5kbGVyKHNlbGYuaWQsIGxheWVySWQsIGdyb3VwLCAiZ2VvanNvbl9tb3VzZW91dCIsIGV4dHJhSW5mbyksIHRoaXMpOwogICAgICB9CiAgICB9KTsKICAgIHRoaXMubGF5ZXJNYW5hZ2VyLmFkZExheWVyKGdqbGF5ZXIsICJnZW9qc29uIiwgbGF5ZXJJZCwgZ3JvdXApOwogIH07CgogIG1ldGhvZHMucmVtb3ZlR2VvSlNPTiA9IGZ1bmN0aW9uKGxheWVySWQpIHsKICAgIHRoaXMubGF5ZXJNYW5hZ2VyLnJlbW92ZUxheWVyKCJnZW9qc29uIiwgbGF5ZXJJZCk7CiAgfTsKCiAgbWV0aG9kcy5jbGVhckdlb0pTT04gPSBmdW5jdGlvbigpIHsKICAgIHRoaXMubGF5ZXJNYW5hZ2VyLmNsZWFyTGF5ZXJzKCJnZW9qc29uIik7CiAgfTsKCiAgbWV0aG9kcy5hZGRUb3BvSlNPTiA9IGZ1bmN0aW9uKGRhdGEsIGxheWVySWQsIGdyb3VwLCBzdHlsZSkgewogICAgdmFyIHNlbGYgPSB0aGlzOwogICAgaWYgKHR5cGVvZihkYXRhKSA9PT0gInN0cmluZyIpIHsKICAgICAgZGF0YSA9IEpTT04ucGFyc2UoZGF0YSk7CiAgICB9CgogICAgdmFyIGdsb2JhbFN0eWxlID0gJC5leHRlbmQoe30sIHN0eWxlLCBkYXRhLnN0eWxlIHx8IHt9KTsKCiAgICB2YXIgZ2psYXllciA9IEwuZ2VvSnNvbihudWxsLCB7CiAgICAgIHN0eWxlOiBmdW5jdGlvbihmZWF0dXJlKSB7CiAgICAgICAgaWYgKGZlYXR1cmUuc3R5bGUgfHwgZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlKSB7CiAgICAgICAgICByZXR1cm4gJC5leHRlbmQoe30sIGdsb2JhbFN0eWxlLCBmZWF0dXJlLnN0eWxlLCBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByZXR1cm4gZ2xvYmFsU3R5bGU7CiAgICAgICAgfQogICAgICB9LAogICAgICBvbkVhY2hGZWF0dXJlOiBmdW5jdGlvbihmZWF0dXJlLCBsYXllcikgewogICAgICAgIHZhciBleHRyYUluZm8gPSB7CiAgICAgICAgICBmZWF0dXJlSWQ6IGZlYXR1cmUuaWQsCiAgICAgICAgICBwcm9wZXJ0aWVzOiBmZWF0dXJlLnByb3BlcnRpZXMKICAgICAgICB9OwogICAgICAgIHZhciBwb3B1cCA9IGZlYXR1cmUucHJvcGVydGllcy5wb3B1cDsKICAgICAgICBpZiAodHlwZW9mIHBvcHVwICE9PSAndW5kZWZpbmVkJyAmJiBwb3B1cCAhPT0gbnVsbCkgbGF5ZXIuYmluZFBvcHVwKHBvcHVwKTsKICAgICAgICBsYXllci5vbigiY2xpY2siLCBtb3VzZUhhbmRsZXIoc2VsZi5pZCwgbGF5ZXJJZCwgZ3JvdXAsICJ0b3BvanNvbl9jbGljayIsIGV4dHJhSW5mbyksIHRoaXMpOwogICAgICAgIGxheWVyLm9uKCJtb3VzZW92ZXIiLCBtb3VzZUhhbmRsZXIoc2VsZi5pZCwgbGF5ZXJJZCwgZ3JvdXAsICJ0b3BvanNvbl9tb3VzZW92ZXIiLCBleHRyYUluZm8pLCB0aGlzKTsKICAgICAgICBsYXllci5vbigibW91c2VvdXQiLCBtb3VzZUhhbmRsZXIoc2VsZi5pZCwgbGF5ZXJJZCwgZ3JvdXAsICJ0b3BvanNvbl9tb3VzZW91dCIsIGV4dHJhSW5mbyksIHRoaXMpOwogICAgICB9CiAgICB9KTsKICAgIG9tbml2b3JlLnRvcG9qc29uLnBhcnNlKGRhdGEsIG51bGwsIGdqbGF5ZXIpOwogICAgdGhpcy5sYXllck1hbmFnZXIuYWRkTGF5ZXIoZ2psYXllciwgInRvcG9qc29uIiwgbGF5ZXJJZCwgZ3JvdXApOwogIH07CgogIG1ldGhvZHMucmVtb3ZlVG9wb0pTT04gPSBmdW5jdGlvbihsYXllcklkKSB7CiAgICB0aGlzLmxheWVyTWFuYWdlci5yZW1vdmVMYXllcigidG9wb2pzb24iLCBsYXllcklkKTsKICB9OwoKICBtZXRob2RzLmNsZWFyVG9wb0pTT04gPSBmdW5jdGlvbigpIHsKICAgIHRoaXMubGF5ZXJNYW5hZ2VyLmNsZWFyTGF5ZXJzKCJ0b3BvanNvbiIpOwogIH07CgogIG1ldGhvZHMuYWRkQ29udHJvbCA9IGZ1bmN0aW9uKGh0bWwsIHBvc2l0aW9uLCBsYXllcklkLCBjbGFzc2VzKSB7CiAgICBmdW5jdGlvbiBvbkFkZChtYXApIHsKICAgICAgdmFyIGRpdiA9IEwuRG9tVXRpbC5jcmVhdGUoJ2RpdicsIGNsYXNzZXMpOwogICAgICBpZiAodHlwZW9mIGxheWVySWQgIT09ICd1bmRlZmluZWQnICYmIGxheWVySWQgIT09IG51bGwpIHsKICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdpZCcsIGxheWVySWQpCiAgICAgIH0KICAgICAgdGhpcy5fZGl2ID0gZGl2OwoKICAgICAgLy8gSXQncyBwb3NzaWJsZSBmb3Igd2luZG93LlNoaW55IHRvIGJlIHRydWUgYnV0IFNoaW55LmluaXRpYWxpemVJbnB1dHMgdG8KICAgICAgLy8gbm90IGJlLCB3aGVuIGEgc3RhdGljIGxlYWZsZXQgd2lkZ2V0IGlzIGluY2x1ZGVkIGFzIHBhcnQgb2YgdGhlIHNoaW55CiAgICAgIC8vIFVJIGRpcmVjdGx5IChub3QgdGhyb3VnaCBsZWFmbGV0T3V0cHV0IG9yIHVpT3V0cHV0KS4gSW4gdGhpcyBjYXNlIHdlCiAgICAgIC8vIGRvbid0IGRvIHRoZSBub3JtYWwgU2hpbnkgc3R1ZmYgYXMgdGhhdCB3aWxsIGFsbCBoYXBwZW4gd2hlbiBTaGlueQogICAgICAvLyBpdHNlbGYgbG9hZHMgYW5kIGJpbmRzIHRoZSBlbnRpcmUgZG9jLgoKICAgICAgaWYgKHdpbmRvdy5TaGlueSAmJiBTaGlueS5pbml0aWFsaXplSW5wdXRzKSB7CiAgICAgICAgU2hpbnkucmVuZGVySHRtbChodG1sLCB0aGlzLl9kaXYpOwogICAgICAgIFNoaW55LmluaXRpYWxpemVJbnB1dHModGhpcy5fZGl2KTsKICAgICAgICBTaGlueS5iaW5kQWxsKHRoaXMuX2Rpdik7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5fZGl2LmlubmVySFRNTCA9IGh0bWw7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzLl9kaXY7CiAgICB9CiAgICBmdW5jdGlvbiBvblJlbW92ZShtYXApIHsKICAgICAgaWYgKHdpbmRvdy5TaGlueSAmJiBTaGlueS51bmJpbmRBbGwpIHsKICAgICAgICBTaGlueS51bmJpbmRBbGwodGhpcy5fZGl2KTsKICAgICAgfQogICAgfQogICAgdmFyIENvbnRyb2wgPSBMLkNvbnRyb2wuZXh0ZW5kKHsKICAgICAgb3B0aW9uczoge3Bvc2l0aW9uOiBwb3NpdGlvbn0sCiAgICAgIG9uQWRkOiBvbkFkZCwKICAgICAgb25SZW1vdmU6IG9uUmVtb3ZlCiAgICB9KQogICAgdGhpcy5jb250cm9scy5hZGQobmV3IENvbnRyb2wsIGxheWVySWQsIGh0bWwpOwogIH07CgogIG1ldGhvZHMucmVtb3ZlQ29udHJvbCA9IGZ1bmN0aW9uKGxheWVySWQpIHsKICAgIHRoaXMuY29udHJvbHMucmVtb3ZlKGxheWVySWQpOwogIH07CgogIG1ldGhvZHMuY2xlYXJDb250cm9scyA9IGZ1bmN0aW9uKCkgewogICAgdGhpcy5jb250cm9scy5jbGVhcigpOwogIH07CgogIG1ldGhvZHMuYWRkTGVnZW5kID0gZnVuY3Rpb24ob3B0aW9ucykgewogICAgdmFyIGxlZ2VuZCA9IEwuY29udHJvbCh7cG9zaXRpb246IG9wdGlvbnMucG9zaXRpb259KTsKICAgIHZhciBncmFkU3BhbjsKCiAgICBsZWdlbmQub25BZGQgPSBmdW5jdGlvbiAobWFwKSB7CiAgICAgIHZhciBkaXYgPSBMLkRvbVV0aWwuY3JlYXRlKCdkaXYnLCBvcHRpb25zLmNsYXNzTmFtZSksCiAgICAgICAgICBjb2xvcnMgPSBvcHRpb25zLmNvbG9ycywKICAgICAgICAgIGxhYmVscyA9IG9wdGlvbnMubGFiZWxzLAogICAgICAgICAgbGVnZW5kSFRNTCA9ICcnOwogICAgICBpZiAob3B0aW9ucy50eXBlID09PSAnbnVtZXJpYycpIHsKICAgICAgICAvLyAjIEZvcm1hdHRpbmcgY29uc3RhbnRzLgogICAgICAgIHZhciBzaW5nbGVCaW5IZWlnaHQgPSAyMDsgIC8vIFRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRpY2sgbWFya3MsIGluIHB4CiAgICAgICAgdmFyIHZNYXJnaW4gPSA4OyAvLyBJZiAxc3QgdGljayBtYXJrIHN0YXJ0cyBhdCB0b3Agb2YgZ3JhZGllbnQsIGhvdwogICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFueSBleHRyYSBweCBhcmUgbmVlZGVkIGZvciB0aGUgdG9wIGhhbGYgb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxc3QgbGFiZWw/IChkaXR0byBmb3IgbGFzdCB0aWNrIG1hcmsvbGFiZWwpCiAgICAgICAgdmFyIHRpY2tXaWR0aCA9IDQ7ICAgICAvLyBIb3cgd2lkZSBzaG91bGQgdGljayBtYXJrcyBiZSwgaW4gcHg/CiAgICAgICAgdmFyIGxhYmVsUGFkZGluZyA9IDY7ICAvLyBIb3cgbXVjaCBkaXN0YW5jZSB0byByZXNlcnZlIGZvciB0aWNrIG1hcms/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoTXVzdCBiZSA+PSB0aWNrV2lkdGgpCgogICAgICAgIC8vICMgRGVyaXZlZCBmb3JtYXR0aW5nIHBhcmFtZXRlcnMuCgogICAgICAgIC8vIFdoYXQncyB0aGUgaGVpZ2h0IG9mIGEgc2luZ2xlIGJpbiwgaW4gcGVyY2VudGFnZSAob2YgZ3JhZGllbnQgaGVpZ2h0KT8KICAgICAgICAvLyBJdCBtaWdodCBub3QganVzdCBiZSAxLyhuLTEpLCBpZiB0aGUgZ3JhZGllbnQgZXh0ZW5kcyBwYXN0IHRoZSB0aWNrCiAgICAgICAgLy8gbWFya3MgKHdoaWNoIGNhbiBiZSB0aGUgY2FzZSBmb3IgcHJldHR5IGN1dCBwb2ludHMpLgogICAgICAgIHZhciBzaW5nbGVCaW5QY3QgPSAob3B0aW9ucy5leHRyYS5wX24gLSBvcHRpb25zLmV4dHJhLnBfMSkgLyAobGFiZWxzLmxlbmd0aCAtIDEpOwogICAgICAgIC8vIEVhY2ggYmluIGlzIGBzaW5nbGVCaW5IZWlnaHRgIGhpZ2guIEhvdyB0YWxsIGlzIHRoZSBncmFkaWVudD8KICAgICAgICB2YXIgdG90YWxIZWlnaHQgPSAoMSAvIHNpbmdsZUJpblBjdCkgKiBzaW5nbGVCaW5IZWlnaHQgKyAxOwogICAgICAgIC8vIEhvdyBmYXIgc2hvdWxkIHRoZSBmaXJzdCB0aWNrIGJlIHNoaWZ0ZWQgZG93biwgcmVsYXRpdmUgdG8gdGhlIHRvcAogICAgICAgIC8vIG9mIHRoZSBncmFkaWVudD8KICAgICAgICB2YXIgdGlja09mZnNldCA9IChzaW5nbGVCaW5IZWlnaHQgLyBzaW5nbGVCaW5QY3QpICogb3B0aW9ucy5leHRyYS5wXzE7CgogICAgICAgIGdyYWRTcGFuID0gJCgnPHNwYW4vPicpLmNzcyh7CiAgICAgICAgICAnYmFja2dyb3VuZCc6ICdsaW5lYXItZ3JhZGllbnQoJyArIGNvbG9ycyArICcpJywKICAgICAgICAgICdvcGFjaXR5Jzogb3B0aW9ucy5vcGFjaXR5LAogICAgICAgICAgJ2hlaWdodCc6IHRvdGFsSGVpZ2h0ICsgJ3B4JywKICAgICAgICAgICd3aWR0aCc6ICcxOHB4JywKICAgICAgICAgICdkaXNwbGF5JzogJ2Jsb2NrJywKICAgICAgICAgICdtYXJnaW4tdG9wJzogdk1hcmdpbiArICdweCcKICAgICAgICB9KTsKICAgICAgICB2YXIgbGVmdERpdiA9ICQoJzxkaXYvPicpLmNzcygnZmxvYXQnLCAnbGVmdCcpLAogICAgICAgICAgICByaWdodERpdiA9ICQoJzxkaXYvPicpLmNzcygnZmxvYXQnLCAnbGVmdCcpOwogICAgICAgIGxlZnREaXYuYXBwZW5kKGdyYWRTcGFuKTsKICAgICAgICAkKGRpdikuYXBwZW5kKGxlZnREaXYpLmFwcGVuZChyaWdodERpdikKICAgICAgICAgIC5hcHBlbmQoJCgiPGJyIGNsZWFyPSdib3RoJy8+IikpOwoKICAgICAgICAvLyBIYXZlIHRvIGF0dGFjaCB0aGUgZGl2IHRvIHRoZSBib2R5IGF0IHRoaXMgZWFybHkgcG9pbnQsIHNvIHRoYXQgdGhlCiAgICAgICAgLy8gc3ZnIHRleHQgZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCkgYWN0dWFsbHkgd29ya3MsIGJlbG93LgogICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKCiAgICAgICAgdmFyIG5zID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJzsKICAgICAgICB2YXIgc3ZnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG5zLCAnc3ZnJyk7CiAgICAgICAgcmlnaHREaXYuYXBwZW5kKHN2Zyk7CiAgICAgICAgdmFyIGcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobnMsICdnJyk7CiAgICAgICAgJChnKS5hdHRyKCJ0cmFuc2Zvcm0iLCAidHJhbnNsYXRlKDAsICIgKyB2TWFyZ2luICsgIikiKTsKICAgICAgICBzdmcuYXBwZW5kQ2hpbGQoZyk7CgogICAgICAgIC8vIG1heCBsYWJlbCB3aWR0aCBuZWVkZWQgdG8gc2V0IHdpZHRoIG9mIHN2ZywgYW5kIHJpZ2h0LWp1c3RpZnkgdGV4dAogICAgICAgIHZhciBtYXhMYmxXaWR0aCA9IDA7CgogICAgICAgIC8vIENyZWF0ZSB0aWNrIG1hcmtzIGFuZCBsYWJlbHMKICAgICAgICAkLmVhY2gobGFiZWxzLCBmdW5jdGlvbihpLCBsYWJlbCkgewogICAgICAgICAgdmFyIHkgPSB0aWNrT2Zmc2V0ICsgaSpzaW5nbGVCaW5IZWlnaHQgKyAwLjU7CgogICAgICAgICAgdmFyIHRoaXNMYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhucywgJ3RleHQnKTsKICAgICAgICAgICQodGhpc0xhYmVsKQogICAgICAgICAgICAudGV4dChsYWJlbHNbaV0pCiAgICAgICAgICAgIC5hdHRyKCd5JywgeSkKICAgICAgICAgICAgLmF0dHIoJ2R4JywgbGFiZWxQYWRkaW5nKQogICAgICAgICAgICAuYXR0cignZHknLCAnMC41ZXgnKTsKICAgICAgICAgIGcuYXBwZW5kQ2hpbGQodGhpc0xhYmVsKTsKICAgICAgICAgIG1heExibFdpZHRoID0gTWF0aC5tYXgobWF4TGJsV2lkdGgsIHRoaXNMYWJlbC5nZXRDb21wdXRlZFRleHRMZW5ndGgoKSk7CgogICAgICAgICAgdmFyIHRoaXNUaWNrID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG5zLCAnbGluZScpOwogICAgICAgICAgJCh0aGlzVGljaykKICAgICAgICAgICAgLmF0dHIoJ3gxJywgMCkKICAgICAgICAgICAgLmF0dHIoJ3gyJywgdGlja1dpZHRoKQogICAgICAgICAgICAuYXR0cigneTEnLCB5KQogICAgICAgICAgICAuYXR0cigneTInLCB5KQogICAgICAgICAgICAuYXR0cignc3Ryb2tlLXdpZHRoJywgMSk7CiAgICAgICAgICBnLmFwcGVuZENoaWxkKHRoaXNUaWNrKTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gTm93IHRoYXQgd2Uga25vdyB0aGUgbWF4IGxhYmVsIHdpZHRoLCB3ZSBjYW4gcmlnaHQtanVzdGlmeQogICAgICAgICQoc3ZnKS5maW5kKCd0ZXh0JykKICAgICAgICAgIC5hdHRyKCdkeCcsIGxhYmVsUGFkZGluZyArIG1heExibFdpZHRoKQogICAgICAgICAgLmF0dHIoJ3RleHQtYW5jaG9yJywgJ2VuZCcpOwogICAgICAgIC8vIEZpbmFsIHNpemUgZm9yIDxzdmc+CiAgICAgICAgJChzdmcpLmNzcyh7CiAgICAgICAgICB3aWR0aDogKG1heExibFdpZHRoICsgbGFiZWxQYWRkaW5nKSArICJweCIsCiAgICAgICAgICBoZWlnaHQ6IHRvdGFsSGVpZ2h0ICsgdk1hcmdpbioyICsgInB4IgogICAgICAgIH0pOwoKICAgICAgICBpZiAob3B0aW9ucy5uYV9jb2xvcikgewogICAgICAgICAgJChkaXYpLmFwcGVuZCgnPGRpdj48aSBzdHlsZT0iYmFja2dyb3VuZDonICsgb3B0aW9ucy5uYV9jb2xvciArCiAgICAgICAgICAgICAgICAgICAgICAgICciPjwvaT4gJyArIG9wdGlvbnMubmFfbGFiZWwgKyAnPC9kaXY+Jyk7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGlmIChvcHRpb25zLm5hX2NvbG9yKSB7CiAgICAgICAgICBjb2xvcnMucHVzaChvcHRpb25zLm5hX2NvbG9yKTsKICAgICAgICAgIGxhYmVscy5wdXNoKG9wdGlvbnMubmFfbGFiZWwpOwogICAgICAgIH0KICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbG9ycy5sZW5ndGg7IGkrKykgewogICAgICAgICAgbGVnZW5kSFRNTCArPSAnPGkgc3R5bGU9ImJhY2tncm91bmQ6JyArIGNvbG9yc1tpXSArICc7b3BhY2l0eTonICsKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5vcGFjaXR5ICsgJyI+PC9pPiAnICsgbGFiZWxzW2ldICsgJzxici8+JzsKICAgICAgICB9CiAgICAgICAgZGl2LmlubmVySFRNTCA9IGxlZ2VuZEhUTUw7CiAgICAgIH0KICAgICAgaWYgKG9wdGlvbnMudGl0bGUpCiAgICAgICAgJChkaXYpLnByZXBlbmQoJzxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206M3B4Ij48c3Ryb25nPicgKwogICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnRpdGxlICsgJzwvc3Ryb25nPjwvZGl2PicpOwogICAgICByZXR1cm4gZGl2OwogICAgfTsKCiAgICB0aGlzLmNvbnRyb2xzLmFkZChsZWdlbmQsIG9wdGlvbnMubGF5ZXJJZCk7CiAgfTsKCiAgbWV0aG9kcy5hZGRMYXllcnNDb250cm9sID0gZnVuY3Rpb24oYmFzZUdyb3Vwcywgb3ZlcmxheUdyb3Vwcywgb3B0aW9ucykgewoKICAgIHZhciBzZWxmID0gdGhpczsKCiAgICAvLyBPbmx5IGFsbG93IG9uZSBsYXllcnMgY29udHJvbCBhdCBhIHRpbWUKICAgIG1ldGhvZHMucmVtb3ZlTGF5ZXJzQ29udHJvbC5jYWxsKHRoaXMpOwoKICAgIHZhciBmaXJzdExheWVyID0gdHJ1ZTsKICAgIHZhciBiYXNlID0ge307CiAgICAkLmVhY2goYXNBcnJheShiYXNlR3JvdXBzKSwgZnVuY3Rpb24oaSwgZykgewogICAgICB2YXIgbGF5ZXIgPSBzZWxmLmxheWVyTWFuYWdlci5nZXRMYXllckdyb3VwKGcsIHRydWUpOwogICAgICBpZiAobGF5ZXIpIHsKICAgICAgICBiYXNlW2ddID0gbGF5ZXI7CgogICAgICAgIC8vIENoZWNrIGlmID4xIGJhc2UgbGF5ZXJzIGFyZSB2aXNpYmxlOyBpZiBzbywgaGlkZSBhbGwgYnV0IHRoZSBmaXJzdCBvbmUKICAgICAgICBpZiAoc2VsZi5oYXNMYXllcihsYXllcikpIHsKICAgICAgICAgIGlmIChmaXJzdExheWVyKSB7CiAgICAgICAgICAgIGZpcnN0TGF5ZXIgPSBmYWxzZTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNlbGYucmVtb3ZlTGF5ZXIobGF5ZXIpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSk7CiAgICB2YXIgb3ZlcmxheSA9IHt9OwogICAgJC5lYWNoKGFzQXJyYXkob3ZlcmxheUdyb3VwcyksIGZ1bmN0aW9uKGksIGcpIHsKICAgICAgdmFyIGxheWVyID0gc2VsZi5sYXllck1hbmFnZXIuZ2V0TGF5ZXJHcm91cChnLCB0cnVlKTsKICAgICAgaWYgKGxheWVyKSB7CiAgICAgICAgb3ZlcmxheVtnXSA9IGxheWVyOwogICAgICB9CiAgICB9KTsKCiAgICB2YXIgbGF5ZXJzQ29udHJvbCA9IEwuY29udHJvbC5sYXllcnMoYmFzZSwgb3ZlcmxheSwgb3B0aW9ucykuYWRkVG8odGhpcyk7CiAgICB0aGlzLmN1cnJlbnRMYXllcnNDb250cm9sID0gbGF5ZXJzQ29udHJvbDsKICB9OwoKICBtZXRob2RzLnJlbW92ZUxheWVyc0NvbnRyb2wgPSBmdW5jdGlvbigpIHsKICAgIGlmICh0aGlzLmN1cnJlbnRMYXllcnNDb250cm9sKSB7CiAgICAgIHRoaXMuY3VycmVudExheWVyc0NvbnRyb2wucmVtb3ZlRnJvbSh0aGlzKTsKICAgICAgdGhpcy5jdXJyZW50TGF5ZXJzQ29udHJvbCA9IG51bGw7CiAgICB9CiAgfTsKCiAgbWV0aG9kcy5oaWRlR3JvdXAgPSBmdW5jdGlvbihncm91cCkgewogICAgdmFyIHNlbGYgPSB0aGlzOwogICAgJC5lYWNoKGFzQXJyYXkoZ3JvdXApLCBmdW5jdGlvbihpLCBnKSB7CiAgICAgIHZhciBsYXllciA9IHNlbGYubGF5ZXJNYW5hZ2VyLmdldExheWVyR3JvdXAoZywgdHJ1ZSk7CiAgICAgIGlmIChsYXllcikgewogICAgICAgIHNlbGYucmVtb3ZlTGF5ZXIobGF5ZXIpOwogICAgICB9CiAgICB9KTsKICB9OwoKICBtZXRob2RzLnNob3dHcm91cCA9IGZ1bmN0aW9uKGdyb3VwKSB7CiAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAkLmVhY2goYXNBcnJheShncm91cCksIGZ1bmN0aW9uKGksIGcpIHsKICAgICAgdmFyIGxheWVyID0gc2VsZi5sYXllck1hbmFnZXIuZ2V0TGF5ZXJHcm91cChnLCB0cnVlKTsKICAgICAgaWYgKGxheWVyKSB7CiAgICAgICAgc2VsZi5hZGRMYXllcihsYXllcik7CiAgICAgIH0KICAgIH0pOwogIH07CgogIG1ldGhvZHMuYWRkUmFzdGVySW1hZ2UgPSBmdW5jdGlvbih1cmksIGJvdW5kcywgb3BhY2l0eSwgYXR0cmlidXRpb24sIGxheWVySWQsIGdyb3VwKSB7CiAgICAvLyB1cmkgaXMgYSBkYXRhIFVSSSBjb250YWluaW5nIGFuIGltYWdlLiBXZSB3YW50IHRvIHBhaW50IHRoaXMgaW1hZ2UgYXMgYQogICAgLy8gbGF5ZXIgYXQgKHRvcC1sZWZ0KSBib3VuZHNbMF0gdG8gKGJvdHRvbS1yaWdodCkgYm91bmRzWzFdLgoKICAgIC8vIFdlIGNhbid0IHNpbXBseSB1c2UgSW1hZ2VPdmVybGF5LCBhcyBpdCB1c2VzIGJpbGluZWFyIHNjYWxpbmcgd2hpY2ggbG9va3MKICAgIC8vIGF3ZnVsIGFzIHlvdSB6b29tIGluIChhbmQgc29tZXRpbWVzIHNoaWZ0cyBwb3NpdGlvbnMgb3IgZGlzYXBwZWFycykuCiAgICAvLyBJbnN0ZWFkLCB3ZSdsbCB1c2UgYSBUaWxlTGF5ZXIuQ2FudmFzIHRvIGRyYXcgcGllY2VzIG9mIHRoZSBpbWFnZS4KCiAgICAvLyBGaXJzdCwgc29tZSBoZWxwZXIgZnVuY3Rpb25zLgoKICAgIC8vIGRlZ3JlZTJ0aWxlIGNvbnZlcnRzIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFuZCB6b29tIHRvIHggYW5kIHkgdGlsZQogICAgLy8gbnVtYmVycy4gVGhlIHRpbGUgbnVtYmVycyByZXR1cm5lZCBjYW4gYmUgbm9uLWludGVncmFsLCBhcyB0aGVyZSdzIG5vCiAgICAvLyByZWFzb24gdG8gZXhwZWN0IHRoYXQgdGhlIGxhdC9sbmcgaW5wdXRzIGFyZSBleGFjdGx5IG9uIHRoZSBib3JkZXIgb2YgdHdvCiAgICAvLyB0aWxlcy4KICAgIC8vCiAgICAvLyBXZSdsbCB1c2UgdGhpcyB0byBjb252ZXJ0IHRoZSBib3VuZHMgd2UgZ290IGZyb20gdGhlIHNlcnZlciwgaW50byBjb29yZHMKICAgIC8vIGluIHRpbGUtc3BhY2UgYXQgYSBnaXZlbiB6b29tIGxldmVsLiBOb3RlIHRoYXQgb25jZSB3ZSBkbyB0aGUgY29udmVyc2lvbiwKICAgIC8vIHdlIGRvbid0IHRvIGRvIGFueSBtb3JlIHRyaWdvbm9tZXRyeSB0byBjb252ZXJ0IGJldHdlZW4gcGl4ZWwgY29vcmRpbmF0ZXMKICAgIC8vIGFuZCB0aWxlIGNvb3JkaW5hdGVzOyB0aGUgc291cmNlIGltYWdlIHBpeGVsIGNvb3JkcywgZGVzdGluYXRpb24gY2FudmFzCiAgICAvLyBwaXhlbCBjb29yZHMsIGFuZCB0aWxlIGNvb3JkcyBhbGwgY2FuIGJlIHNjYWxlZCBsaW5lYXJseS4KICAgIGZ1bmN0aW9uIGRlZ3JlZTJ0aWxlKGxhdCwgbG5nLCB6b29tKSB7CiAgICAgIC8vIFNlZSBodHRwOi8vd2lraS5vcGVuc3RyZWV0bWFwLm9yZy93aWtpL1NsaXBweV9tYXBfdGlsZW5hbWVzCiAgICAgIHZhciBsYXRSYWQgPSBsYXQgKiBNYXRoLlBJIC8gMTgwOwogICAgICB2YXIgbiA9IE1hdGgucG93KDIsIHpvb20pOwogICAgICB2YXIgeCA9IChsbmcgKyAxODApIC8gMzYwICogbgogICAgICB2YXIgeSA9ICgxIC0gTWF0aC5sb2coTWF0aC50YW4obGF0UmFkKSArICgxIC8gTWF0aC5jb3MobGF0UmFkKSkpIC8gTWF0aC5QSSkgLyAyICogbgogICAgICByZXR1cm4ge3g6IHgsIHk6IHl9OwogICAgfQoKICAgIC8vIEdpdmVuIGEgcmFuZ2UgW2Zyb20sdG8pIGFuZCBlaXRoZXIgb25lIG9yIHR3byBudW1iZXJzLCByZXR1cm5zIHRydWUgaWYKICAgIC8vIHRoZXJlIGlzIGFueSBvdmVybGFwIGJldHdlZW4gW3gseDEpIGFuZCB0aGUgcmFuZ2UtLW9yIGlmIHgxIGlzIG9taXR0ZWQsCiAgICAvLyB0aGVuIHJldHVybnMgdHJ1ZSBpZiB4IGlzIHdpdGhpbiBbZnJvbSx0bykuCiAgICBmdW5jdGlvbiBvdmVybGFwKGZyb20sIHRvLCB4LCAvKiBvcHRpb25hbCAqLyB4MSkgewogICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAzKQogICAgICAgIHgxID0geDsKICAgICAgcmV0dXJuIHggPCB0byAmJiB4MSA+PSBmcm9tOwogICAgfQoKICAgIGZ1bmN0aW9uIGdldENhbnZhc1Ntb290aGluZ1Byb3BlcnR5KGN0eCkgewogICAgICB2YXIgY2FuZGlkYXRlcyA9IFsiaW1hZ2VTbW9vdGhpbmdFbmFibGVkIiwgIm1vekltYWdlU21vb3RoaW5nRW5hYmxlZCIsCiAgICAgICAgICAid2Via2l0SW1hZ2VTbW9vdGhpbmdFbmFibGVkIiwgIm1zSW1hZ2VTbW9vdGhpbmdFbmFibGVkIl07CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FuZGlkYXRlcy5sZW5ndGg7IGkrKykgewogICAgICAgIGlmICh0eXBlb2YoY3R4W2NhbmRpZGF0ZXNbaV1dKSAhPT0gInVuZGVmaW5lZCIpIHsKICAgICAgICAgIHJldHVybiBjYW5kaWRhdGVzW2ldOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvLyBPdXIgZ2VuZXJhbCBzdHJhdGVneSBpcyB0bzoKICAgIC8vIDEuIExvYWQgdGhlIGRhdGEgVVJJIGluIGFuIEltYWdlKCkgb2JqZWN0LCBzbyB3ZSBjYW4gZ2V0IGl0cyBwaXhlbAogICAgLy8gICAgZGltZW5zaW9ucyBhbmQgdGhlIHVuZGVybHlpbmcgaW1hZ2UgZGF0YS4gKFdlIGNvdWxkIGhhdmUgZG9uZSB0aGlzCiAgICAvLyAgICBieSBub3QgZW5jb2RpbmcgYXMgUE5HIGF0IGFsbCBidXQganVzdCBzZW5kIGFuIGFycmF5IG9mIFJHQkEgdmFsdWVzCiAgICAvLyAgICBmcm9tIHRoZSBzZXJ2ZXIsIGJ1dCB0aGF0IHdvdWxkIGluZmxhdGUgdGhlIEpTT04gdG9vIG11Y2guKQogICAgLy8gMi4gQ3JlYXRlIGEgaGlkZGVuIGNhbnZhcyB0aGF0IHdlIHVzZSBqdXN0IHRvIGV4dHJhY3QgdGhlIGltYWdlIGRhdGEKICAgIC8vICAgIGZyb20gdGhlIEltYWdlICh1c2luZyBDb250ZXh0MkQuZ2V0SW1hZ2VEYXRhKCkpLgogICAgLy8gMy4gQ3JlYXRlIGEgVGlsZUxheWVyLkNhbnZhcyBhbmQgYWRkIGl0IHRvIHRoZSBtYXAuCgogICAgLy8gV2Ugd2FudCB0byBzeW5jaHJvbm91c2x5IGNyZWF0ZSBhbmQgYXR0YWNoIHRoZSBUaWxlTGF5ZXIuQ2FudmFzIChzbyBhbgogICAgLy8gaW1tZWRpYXRlIGNhbGwgdG8gY2xlYXJSYXN0ZXJzKCkgd2lsbCBiZSByZXNwZWN0ZWQsIGZvciBleGFtcGxlKSwgYnV0CiAgICAvLyBJbWFnZSBsb2FkcyBpdHMgZGF0YSBhc3luY2hyb25vdXNseS4gRm9ydHVuYXRlbHkgd2UgY2FuIHJlc29sdmUgdGhpcwogICAgLy8gYnkgcHV0dGluZyBUaWxlTGF5ZXIuQ2FudmFzIGludG8gYXN5bmMgbW9kZSwgd2hpY2ggd2lsbCBsZXQgdXMgY3JlYXRlCiAgICAvLyBhbmQgYXR0YWNoIHRoZSBsYXllciBidXQgaGF2ZSBpdCB3YWl0IHVudGlsIHRoZSBpbWFnZSBpcyBsb2FkZWQgYmVmb3JlCiAgICAvLyBpdCBhY3R1YWxseSBkcmF3cyBhbnl0aGluZy4KCiAgICAvLyBUaGVzZSBhcmUgdGhlIHZhcmlhYmxlcyB0aGF0IHdlIHdpbGwgcG9wdWxhdGUgb25jZSB0aGUgaW1hZ2UgaXMgbG9hZGVkLgogICAgdmFyIGltZ0RhdGEgPSBudWxsOyAvLyAxZCByb3ctbWFqb3IgYXJyYXksIGZvdXIgWzAtMjU1XSBpbnRlZ2VycyBwZXIgcGl4ZWwKICAgIHZhciBpbWdEYXRhTWlwTWFwcGVyID0gbnVsbDsKICAgIHZhciB3ID0gbnVsbDsgICAgICAgLy8gaW1hZ2Ugd2lkdGggaW4gcGl4ZWxzCiAgICB2YXIgaCA9IG51bGw7ICAgICAgIC8vIGltYWdlIGhlaWdodCBpbiBwaXhlbHMKCiAgICAvLyBXZSdsbCB1c2UgdGhpcyBhcnJheSB0byBzdG9yZSBjYWxsYmFja3MgdGhhdCBuZWVkIHRvIGJlIGludm9rZWQgb25jZQogICAgLy8gaW1nRGF0YSwgdywgYW5kIGggaGF2ZSBiZWVuIHJlc29sdmVkLgogICAgdmFyIGltZ0RhdGFDYWxsYmFja3MgPSBbXTsKCiAgICAvLyBDb25zdW1lcnMgb2YgaW1nRGF0YSwgdywgYW5kIGggY2FuIGNhbGwgdGhpcyB0byBiZSBub3RpZmllZCB3aGVuIGRhdGEKICAgIC8vIGlzIGF2YWlsYWJsZS4gVW5saWtlIG1vc3QgYXN5bmMvcHJvbWlzZS1iYXNlZCBBUElzLCB0aGUgY2FsbGJhY2sgd2lsbAogICAgLy8gYmUgaW52b2tlZCBpbW1lZGlhdGVseS9zeW5jaHJvbm91c2x5IGlmIHRoZSBkYXRhIGlzIGFscmVhZHkgYXZhaWxhYmxlLgogICAgZnVuY3Rpb24gZ2V0SW1hZ2VEYXRhKGNhbGxiYWNrKSB7CiAgICAgIGlmIChpbWdEYXRhICE9IG51bGwpIHsKICAgICAgICBjYWxsYmFjayhpbWdEYXRhLCB3LCBoLCBpbWdEYXRhTWlwTWFwcGVyKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBpbWdEYXRhQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spOwogICAgICB9CiAgICB9CgogICAgdmFyIGltZyA9IG5ldyBJbWFnZSgpOwogICAgaW1nLm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgICAvLyBTYXZlIHNpemUKICAgICAgdyA9IGltZy53aWR0aDsKICAgICAgaCA9IGltZy5oZWlnaHQ7CgogICAgICAvLyBDcmVhdGUgYSBkdW1teSBjYW52YXMgdG8gZXh0cmFjdCB0aGUgaW1hZ2UgZGF0YQogICAgICB2YXIgaW1nRGF0YUNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogICAgICBpbWdEYXRhQ2FudmFzLndpZHRoID0gdzsKICAgICAgaW1nRGF0YUNhbnZhcy5oZWlnaHQgPSBoOwogICAgICBpbWdEYXRhQ2FudmFzLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1nRGF0YUNhbnZhcyk7CgogICAgICB2YXIgaW1nRGF0YUN0eCA9IGltZ0RhdGFDYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgaW1nRGF0YUN0eC5kcmF3SW1hZ2UoaW1nLCAwLCAwKTsKCiAgICAgIC8vIFNhdmUgdGhlIGltYWdlIGRhdGEuCiAgICAgIGltZ0RhdGEgPSBpbWdEYXRhQ3R4LmdldEltYWdlRGF0YSgwLCAwLCB3LCBoKS5kYXRhOwogICAgICBpbWdEYXRhTWlwTWFwcGVyID0gbmV3IE1pcG1hcHBlcihpbWcpOwoKICAgICAgLy8gRG9uZSB3aXRoIHRoZSBjYW52YXMsIHJlbW92ZSBpdCBmcm9tIHRoZSBwYWdlIHNvIGl0IGNhbiBiZSBnYydkLgogICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGltZ0RhdGFDYW52YXMpOwoKICAgICAgLy8gQWxlcnQgYW55IGdldEltYWdlRGF0YSBjYWxsZXJzIHdobyBhcmUgd2FpdGluZy4KICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbWdEYXRhQ2FsbGJhY2tzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgaW1nRGF0YUNhbGxiYWNrc1tpXShpbWdEYXRhLCB3LCBoLCBpbWdEYXRhTWlwTWFwcGVyKTsKICAgICAgfQogICAgICBpbWdEYXRhQ2FsbGJhY2tzID0gW107CiAgICB9OwogICAgaW1nLnNyYyA9IHVyaTsKCiAgICB2YXIgY2FudmFzVGlsZXMgPSBMLnRpbGVMYXllci5jYW52YXMoewogICAgICBvcGFjaXR5OiBvcGFjaXR5LAogICAgICBhdHRyaWJ1dGlvbjogYXR0cmlidXRpb24sCiAgICAgIGRldGVjdFJldGluYTogdHJ1ZSwKICAgICAgYXN5bmM6IHRydWUKICAgIH0pOwoKICAgIGNhbnZhc1RpbGVzLmRyYXdUaWxlID0gZnVuY3Rpb24oY2FudmFzLCB0aWxlUG9pbnQsIHpvb20pIHsKICAgICAgZ2V0SW1hZ2VEYXRhKGZ1bmN0aW9uKGltZ0RhdGEsIHcsIGgsIG1pcG1hcHBlcikgewogICAgICAgIHRyeSB7CiAgICAgICAgICAvLyBUaGUgQ29udGV4dDJEIHdlJ2xsIGJlaW5nIGRyYXdpbmcgb250by4gSXQncyBhbHdheXMgMjU2eDI1Ni4KICAgICAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKCiAgICAgICAgICAvLyBDb252ZXJ0IG91ciBpbWFnZSBkYXRhJ3MgdG9wLWxlZnQgYW5kIGJvdHRvbS1yaWdodCBsb2NhdGlvbnMgaW50bwogICAgICAgICAgLy8geC95IHRpbGUgY29vcmRpbmF0ZXMuIFRoaXMgaXMgZXNzZW50aWFsbHkgZG9pbmcgYSBzcGhlcmljYWwgbWVyY2F0b3IKICAgICAgICAgIC8vIHByb2plY3Rpb24sIHRoZW4gbXVsdGlwbHlpbmcgYnkgMl56b29tLgogICAgICAgICAgdmFyIHRvcExlZnQgPSBkZWdyZWUydGlsZShib3VuZHNbMF1bMF0sIGJvdW5kc1swXVsxXSwgem9vbSk7CiAgICAgICAgICB2YXIgYm90dG9tUmlnaHQgPSBkZWdyZWUydGlsZShib3VuZHNbMV1bMF0sIGJvdW5kc1sxXVsxXSwgem9vbSk7CiAgICAgICAgICAvLyBUaGUgc2l6ZSBvZiB0aGUgaW1hZ2UgaW4geC95IHRpbGUgY29vcmRpbmF0ZXMuCiAgICAgICAgICB2YXIgZXh0ZW50ID0ge3g6IGJvdHRvbVJpZ2h0LnggLSB0b3BMZWZ0LngsIHk6IGJvdHRvbVJpZ2h0LnkgLSB0b3BMZWZ0Lnl9OwoKICAgICAgICAgIC8vIFNob3J0IGNpcmN1aXQgaWYgdGlsZSBpcyB0b3RhbGx5IGRpc2pvaW50IGZyb20gaW1hZ2UuCiAgICAgICAgICBpZiAoIW92ZXJsYXAodGlsZVBvaW50LngsIHRpbGVQb2ludC54ICsgMSwgdG9wTGVmdC54LCBib3R0b21SaWdodC54KSkKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgaWYgKCFvdmVybGFwKHRpbGVQb2ludC55LCB0aWxlUG9pbnQueSArIDEsIHRvcExlZnQueSwgYm90dG9tUmlnaHQueSkpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgICAvLyBUaGUgbGluZWFyIHJlc29sdXRpb24gb2YgdGhlIHRpbGUgd2UncmUgZHJhd2luZyBpcyBhbHdheXMgMjU2cHggcGVyIHRpbGUgdW5pdC4KICAgICAgICAgIC8vIElmIHRoZSBsaW5lYXIgcmVzb2x1dGlvbiAoaW4gZWl0aGVyIGRpcmVjdGlvbikgb2YgdGhlIGltYWdlIGlzIGxlc3MgdGhhbiAyNTZweAogICAgICAgICAgLy8gcGVyIHRpbGUgdW5pdCwgdGhlbiB1c2UgbmVhcmVzdCBuZWlnaGJvcjsgb3RoZXJ3aXNlLCB1c2UgdGhlIGNhbnZhcydzIGJ1aWx0LWluCiAgICAgICAgICAvLyBzY2FsaW5nLgogICAgICAgICAgdmFyIGltZ1JlcyA9IHsKICAgICAgICAgICAgeDogdyAvIGV4dGVudC54LAogICAgICAgICAgICB5OiBoIC8gZXh0ZW50LnkKICAgICAgICAgIH07CgogICAgICAgICAgLy8gV2UgY2FuIGRvIHRoZSBhY3R1YWwgZHJhd2luZyBpbiBvbmUgb2YgdGhyZWUgd2F5czoKICAgICAgICAgIC8vIC0gQ2FsbCBkcmF3SW1hZ2UoKS4gVGhpcyBpcyBlYXN5IGFuZCBmYXN0LCBhbmQgcmVzdWx0cyBpbiBzbW9vdGgKICAgICAgICAgIC8vICAgaW50ZXJwb2xhdGlvbiAoYmlsaW5lYXI/KS4gVGhpcyBpcyB3aGF0IHdlIHdhbnQgd2hlbiB3ZSBhcmUKICAgICAgICAgIC8vICAgcmVkdWNpbmcgdGhlIGltYWdlIGZyb20gaXRzIG5hdGl2ZSBzaXplLgogICAgICAgICAgLy8gLSBDYWxsIGRyYXdJbWFnZSgpIHdpdGggaW1hZ2VTbW9vdGhpbmdFbmFibGVkPWZhbHNlLiBUaGlzIGlzIGVhc3kKICAgICAgICAgIC8vICAgYW5kIGZhc3QgYW5kIGdpdmVzIHVzIG5lYXJlc3QtbmVpZ2hib3IgaW50ZXJwb2xhdGlvbiwgd2hpY2ggaXMgd2hhdAogICAgICAgICAgLy8gICB3ZSB3YW50IHdoZW4gZW5sYXJnaW5nIHRoZSBpbWFnZS4gSG93ZXZlciwgaXQncyB1bnN1cHBvcnRlZCBvbiBtYW55CiAgICAgICAgICAvLyAgIGJyb3dzZXJzIChpbmNsdWRpbmcgUXRXZWJraXQpLgogICAgICAgICAgLy8gLSBEbyBhIG1hbnVhbCBuZWFyZXN0LW5laWdoYm9yIGludGVycG9sYXRpb24uIFRoaXMgaXMgd2hhdCB3ZSdsbCBmYWxsCiAgICAgICAgICAvLyAgIGJhY2sgdG8gd2hlbiBlbmxhcmdpbmcsIGFuZCBpbWFnZVNtb290aGluZ0VuYWJsZWQgaXNuJ3Qgc3VwcG9ydGVkLgogICAgICAgICAgLy8gICBJbiB0aGVvcnkgaXQncyBzbG93ZXIsIGJ1dCBzdGlsbCBwcmV0dHkgZmFzdCBvbiBteSBtYWNoaW5lLCBhbmQgdGhlCiAgICAgICAgICAvLyAgIHJlc3VsdHMgbG9vayB0aGUgc2FtZSBBRkFJQ1QuCgogICAgICAgICAgLy8gSXMgaW1hZ2VTbW9vdGhpbmdFbmFibGVkIHN1cHBvcnRlZD8gSWYgc28sIHdlIGNhbiBsZXQgY2FudmFzIGRvCiAgICAgICAgICAvLyBuZWFyZXN0LW5laWdoYm9yIGludGVycG9sYXRpb24gZm9yIHVzLgogICAgICAgICAgdmFyIHNtb290aGluZ1Byb3BlcnR5ID0gZ2V0Q2FudmFzU21vb3RoaW5nUHJvcGVydHkoY3R4KTsKCiAgICAgICAgICBpZiAoc21vb3RoaW5nUHJvcGVydHkgfHwgaW1nUmVzLnggPj0gMjU2ICYmIGltZ1Jlcy55ID49IDI1NikgewogICAgICAgICAgICAvLyBVc2UgYnVpbHQtaW4gc2NhbGluZwoKICAgICAgICAgICAgLy8gVHVybiBvZmYgYW50aS1hbGlhc2luZyBpZiBuZWNlc3NhcnkKICAgICAgICAgICAgaWYgKHNtb290aGluZ1Byb3BlcnR5KSB7CiAgICAgICAgICAgICAgY3R4W3Ntb290aGluZ1Byb3BlcnR5XSA9IGltZ1Jlcy54ID49IDI1NiAmJiBpbWdSZXMueSA+PSAyNTY7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIERvbid0IG5lY2Vzc2FyaWx5IGRyYXcgd2l0aCB0aGUgZnVsbC1zaXplIGltYWdlOyBpZiB3ZSdyZQogICAgICAgICAgICAvLyBkb3duc2NhbGluZywgdXNlIHRoZSBtaXBtYXBwZXIgdG8gZ2V0IGEgcHJlLWRvd25zY2FsZWQgaW1hZ2UKICAgICAgICAgICAgLy8gKHNlZSBjb21tZW50cyBvbiBNaXBtYXBwZXIgY2xhc3MgZm9yIHdoeSB0aGlzIG1hdHRlcnMpLgogICAgICAgICAgICBtaXBtYXBwZXIuZ2V0QnlTaXplKGV4dGVudC54KjI1NiwgZXh0ZW50LnkqMjU2LCBmdW5jdGlvbihtaXApIHsKICAgICAgICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGltYWdlIHdpbGwgZ28gb2ZmIHRoZSBlZGdlIG9mIHRoZSBjYW52YXMtLQogICAgICAgICAgICAgIC8vIHRoYXQncyBPSywgdGhlIGNhbnZhcyBzaG91bGQgY2xpcCBhcHByb3ByaWF0ZWx5LgogICAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UobWlwLAogICAgICAgICAgICAgICAgLy8gQ29udmVydCBhYnMgdGlsZSBjb29yZHMgdG8gcmVsIHRpbGUgY29vcmRzLCB0aGVuICoyNTYgdG8gY29udmVydAogICAgICAgICAgICAgICAgLy8gdG8gcmVsIHBpeGVsIGNvb3JkcwogICAgICAgICAgICAgICAgKHRvcExlZnQueCAtIHRpbGVQb2ludC54KSAqIDI1NiwKICAgICAgICAgICAgICAgICh0b3BMZWZ0LnkgLSB0aWxlUG9pbnQueSkgKiAyNTYsCiAgICAgICAgICAgICAgICAvLyBBbHdheXMgZHJhdyB0aGUgd2hvbGUgdGhpbmcgYW5kIGxldCBjYW52YXMgY2xpcDsgc28gd2UgY2FuIGp1c3QKICAgICAgICAgICAgICAgIC8vIGNvbnZlcnQgZnJvbSBzaXplIGluIHRpbGUgY29vcmRzIHN0cmFpZ2h0IHRvIHBpeGVscwogICAgICAgICAgICAgICAgZXh0ZW50LnggKiAyNTYsCiAgICAgICAgICAgICAgICBleHRlbnQueSAqIDI1NgogICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIFVzZSBtYW51YWwgbmVhcmVzdC1uZWlnaGJvciBpbnRlcnBvbGF0aW9uCgogICAgICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHNvdXJjZSBpbWFnZSBwaXhlbCBjb29yZGluYXRlcyB0aGF0IGNvcnJlc3BvbmQgd2l0aAogICAgICAgICAgICAvLyB0aGUgdG9wLWxlZnQgYW5kIGJvdHRvbS1yaWdodCBvZiB0aGlzIHRpbGUuIChJZiB0aGUgc291cmNlIGltYWdlCiAgICAgICAgICAgIC8vIG9ubHkgcGFydGlhbGx5IG92ZXJsYXBzIHRoZSB0aWxlLCB3ZSB1c2UgbWF4L21pbiB0byBsaW1pdCB0aGUKICAgICAgICAgICAgLy8gc291cmNlU3RhcnQvRW5kIHRvIG9ubHkgcmVmbGVjdCB0aGUgb3ZlcmxhcHBpbmcgcG9ydGlvbi4pCiAgICAgICAgICAgIHZhciBzb3VyY2VTdGFydCA9IHsKICAgICAgICAgICAgICB4OiBNYXRoLm1heCgwLCBNYXRoLmZsb29yKCh0aWxlUG9pbnQueCAtIHRvcExlZnQueCkgKiBpbWdSZXMueCkpLAogICAgICAgICAgICAgIHk6IE1hdGgubWF4KDAsIE1hdGguZmxvb3IoKHRpbGVQb2ludC55IC0gdG9wTGVmdC55KSAqIGltZ1Jlcy55KSkKICAgICAgICAgICAgfTsKICAgICAgICAgICAgdmFyIHNvdXJjZUVuZCA9IHsKICAgICAgICAgICAgICB4OiBNYXRoLm1pbih3LCBNYXRoLmNlaWwoKHRpbGVQb2ludC54ICsgMSAtIHRvcExlZnQueCkgKiBpbWdSZXMueCkpLAogICAgICAgICAgICAgIHk6IE1hdGgubWluKGgsIE1hdGguY2VpbCgodGlsZVBvaW50LnkgKyAxIC0gdG9wTGVmdC55KSAqIGltZ1Jlcy55KSkKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIC8vIFRoZSBzaXplLCBpbiBkZXN0IHBpeGVscywgdGhhdCBlYWNoIHNvdXJjZSBwaXhlbCBzaG91bGQgb2NjdXB5LgogICAgICAgICAgICAvLyBUaGlzIG1pZ2h0IGJlIGdyZWF0ZXIgb3IgbGVzcyB0aGFuIDEgKGUuZy4gaWYgeCBhbmQgeSByZXNvbHV0aW9uCiAgICAgICAgICAgIC8vIGFyZSB2ZXJ5IGRpZmZlcmVudCkuCiAgICAgICAgICAgIHZhciBwaXhlbFNpemUgPSB7CiAgICAgICAgICAgICAgeDogMjU2IC8gaW1nUmVzLngsCiAgICAgICAgICAgICAgeTogMjU2IC8gaW1nUmVzLnkKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIC8vIEZvciBlYWNoIHBpeGVsIGluIHRoZSBzb3VyY2UgaW1hZ2UgdGhhdCBvdmVybGFwcyB0aGUgdGlsZS4uLgogICAgICAgICAgICBmb3IgKHZhciByb3cgPSBzb3VyY2VTdGFydC55OyByb3cgPCBzb3VyY2VFbmQueTsgcm93KyspIHsKICAgICAgICAgICAgICBmb3IgKHZhciBjb2wgPSBzb3VyY2VTdGFydC54OyBjb2wgPCBzb3VyY2VFbmQueDsgY29sKyspIHsKICAgICAgICAgICAgICAgIC8vIC4uLmV4dHJhY3QgdGhlIHBpeGVsIGRhdGEuLi4KICAgICAgICAgICAgICAgIHZhciBpID0gKChyb3cgKiB3KSArIGNvbCkgKiA0OwogICAgICAgICAgICAgICAgdmFyIHIgPSBpbWdEYXRhW2ldOwogICAgICAgICAgICAgICAgdmFyIGcgPSBpbWdEYXRhW2krMV07CiAgICAgICAgICAgICAgICB2YXIgYiA9IGltZ0RhdGFbaSsyXTsKICAgICAgICAgICAgICAgIHZhciBhID0gaW1nRGF0YVtpKzNdOwogICAgICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJyZ2JhKCIgKyBbcixnLGIsYS8yNTVdLmpvaW4oIiwiKSArICIpIjsKCiAgICAgICAgICAgICAgICAvLyAuLi5jYWxjdWxhdGUgdGhlIGNvcnJlc3BvbmRpbmcgcGl4ZWwgY29vcmQgaW4gdGhlIGRlc3QgaW1hZ2UKICAgICAgICAgICAgICAgIC8vIHdoZXJlIGl0IHNob3VsZCBiZSBkcmF3bi4uLgogICAgICAgICAgICAgICAgdmFyIHBpeGVsUG9zID0gewogICAgICAgICAgICAgICAgICB4OiAoKChjb2wgLyBpbWdSZXMueCkgKyB0b3BMZWZ0LngpIC0gdGlsZVBvaW50LngpICogMjU2LAogICAgICAgICAgICAgICAgICB5OiAoKChyb3cgLyBpbWdSZXMueSkgKyB0b3BMZWZ0LnkpIC0gdGlsZVBvaW50LnkpICogMjU2CiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgIC8vIC4uLmFuZCBkcmF3IGEgcmVjdGFuZ2xlIHRoZXJlLgogICAgICAgICAgICAgICAgY3R4LmZpbGxSZWN0KAogICAgICAgICAgICAgICAgICBNYXRoLnJvdW5kKHBpeGVsUG9zLngpLAogICAgICAgICAgICAgICAgICBNYXRoLnJvdW5kKHBpeGVsUG9zLnkpLAogICAgICAgICAgICAgICAgICAvLyBMb29rcyBjcmF6eSwgYnV0IHRoaXMgaXMgbmVjZXNzYXJ5IHRvIHByZXZlbnQgcm91bmRpbmcgZnJvbQogICAgICAgICAgICAgICAgICAvLyBjYXVzaW5nIG92ZXJsYXAgYmV0d2VlbiB0aGlzIHJlY3QgYW5kIGl0cyBuZWlnaGJvcnMuIFRoZQogICAgICAgICAgICAgICAgICAvLyBtaW51ZW5kIGlzIHRoZSBsb2NhdGlvbiBvZiB0aGUgbmV4dCBwaXhlbCwgd2hpbGUgdGhlCiAgICAgICAgICAgICAgICAgIC8vIHN1YnRyYWhlbmQgaXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBjdXJyZW50IHBpeGVsICh0byB0dXJuIGFuCiAgICAgICAgICAgICAgICAgIC8vIGFic29sdXRlIGNvb3JkaW5hdGUgdG8gYSB3aWR0aC9oZWlnaHQpLiBZZXMsIEkgaGFkIHRvIGxvb2sKICAgICAgICAgICAgICAgICAgLy8gdXAgbWludWVuZCBhbmQgc3VidHJhaGVuZC4KICAgICAgICAgICAgICAgICAgTWF0aC5yb3VuZChwaXhlbFBvcy54ICsgcGl4ZWxTaXplLngpIC0gTWF0aC5yb3VuZChwaXhlbFBvcy54KSwKICAgICAgICAgICAgICAgICAgTWF0aC5yb3VuZChwaXhlbFBvcy55ICsgcGl4ZWxTaXplLnkpIC0gTWF0aC5yb3VuZChwaXhlbFBvcy55KSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgIGNhbnZhc1RpbGVzLnRpbGVEcmF3bihjYW52YXMpOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9OwoKICAgIHRoaXMubGF5ZXJNYW5hZ2VyLmFkZExheWVyKGNhbnZhc1RpbGVzLCAiaW1hZ2UiLCBsYXllcklkLCBncm91cCk7CiAgfTsKCiAgbWV0aG9kcy5yZW1vdmVJbWFnZSA9IGZ1bmN0aW9uKGxheWVySWQpIHsKICAgIHRoaXMubGF5ZXJNYW5hZ2VyLnJlbW92ZUxheWVyKCJpbWFnZSIsIGxheWVySWQpOwogIH07CgogIG1ldGhvZHMuY2xlYXJJbWFnZXMgPSBmdW5jdGlvbigpIHsKICAgIHRoaXMubGF5ZXJNYW5hZ2VyLmNsZWFyTGF5ZXJzKCJpbWFnZSIpOwogIH07CgogIGZ1bmN0aW9uIHByZXZlbnRVbmludGVuZGVkWm9vbU9uU2Nyb2xsKG1hcCkgewogICAgLy8gUHJldmVudCB1bndhbnRlZCBzY3JvbGwgY2FwdHVyaW5nLiBTaW1pbGFyIGluIHB1cnBvc2UgdG8KICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9DbGlmZkNsb3VkL0xlYWZsZXQuU2xlZXAgYnV0IHdpdGggYQogICAgLy8gZGlmZmVyZW50IHNldCBvZiBoZXVyaXN0aWNzLgoKICAgIC8vIFRoZSBiYXNpYyBpZGVhIGlzIHRoYXQgd2hlbiBhIG1vdXNld2hlZWwvRE9NTW91c2VTY3JvbGwKICAgIC8vIGV2ZW50IGlzIHNlZW4sIHdlIGRpc2FibGUgc2Nyb2xsIHdoZWVsIHpvb21pbmcgdW50aWwgdGhlCiAgICAvLyB1c2VyIG1vdmVzIHRoZWlyIG1vdXNlIGN1cnNvciBvciBjbGlja3Mgb24gdGhlIG1hcC4gVGhpcwogICAgLy8gaXMgc2xpZ2h0bHkgdHJpY2tpZXIgdGhhbiBqdXN0IGxpc3RlbmluZyBmb3IgbW91c2Vtb3ZlLAogICAgLy8gYmVjYXVzZSBtb3VzZW1vdmUgaXMgZmlyZWQgd2hlbiB0aGUgcGFnZSBpcyBzY3JvbGxlZCwKICAgIC8vIGV2ZW4gaWYgdGhlIHVzZXIgZGlkIG5vdCBwaHlzaWNhbGx5IG1vdmUgdGhlIG1vdXNlLiBXZQogICAgLy8gaGFuZGxlIHRoaXMgYnkgZXhhbWluaW5nIHRoZSBtb3VzZW1vdmUgZXZlbnQncyBzY3JlZW5YCiAgICAvLyBhbmQgc2NyZWVuWSBwcm9wZXJ0aWVzOyBpZiB0aGV5IGNoYW5nZSwgd2Uga25vdyBpdCdzIGEKICAgIC8vICJ0cnVlIiBtb3ZlLgoKICAgIC8vIGxhc3RTY3JlZW4gY2FuIG5ldmVyIGJlIG51bGwsIGJ1dCBpdHMgeCBhbmQgeSBjYW4uCiAgICB2YXIgbGFzdFNjcmVlbiA9IHt4OiBudWxsLCB5OiBudWxsfTsKICAgICQoZG9jdW1lbnQpLm9uKCJtb3VzZXdoZWVsIERPTU1vdXNlU2Nyb2xsIiwgIioiLCBmdW5jdGlvbihlKSB7CiAgICAgIC8vIERpc2FibGUgem9vbWluZyAodW50aWwgdGhlIG1vdXNlIG1vdmVzIG9yIGNsaWNrKQogICAgICBtYXAuc2Nyb2xsV2hlZWxab29tLmRpc2FibGUoKTsKICAgICAgLy8gQW55IG1vdXNlbW92ZSBldmVudHMgYXQgdGhpcyBzY3JlZW4gcG9zaXRpb24gd2lsbCBiZSBpZ25vcmVkLgogICAgICBsYXN0U2NyZWVuID0ge3g6IGUub3JpZ2luYWxFdmVudC5zY3JlZW5YLCB5OiBlLm9yaWdpbmFsRXZlbnQuc2NyZWVuWX07CiAgICB9KTsKICAgICQoZG9jdW1lbnQpLm9uKCJtb3VzZW1vdmUiLCAiKiIsIGZ1bmN0aW9uKGUpIHsKICAgICAgLy8gRGlkIHRoZSBtb3VzZSByZWFsbHkgbW92ZT8KICAgICAgaWYgKGxhc3RTY3JlZW4ueCAhPT0gbnVsbCAmJiBlLnNjcmVlblggIT09IGxhc3RTY3JlZW4ueCB8fCBlLnNjcmVlblkgIT09IGxhc3RTY3JlZW4ueSkgewogICAgICAgIC8vIEl0IHJlYWxseSBtb3ZlZC4gRW5hYmxlIHpvb21pbmcuCiAgICAgICAgbWFwLnNjcm9sbFdoZWVsWm9vbS5lbmFibGUoKTsKICAgICAgICBsYXN0U2NyZWVuID0ge3g6IG51bGwsIHk6IG51bGx9OwogICAgICB9CiAgICB9KTsKICAgICQoZG9jdW1lbnQpLm9uKCJtb3VzZWRvd24iLCAiLmxlYWZsZXQiLCBmdW5jdGlvbihlKSB7CiAgICAgIC8vIENsaWNraW5nIGFsd2F5cyBlbmFibGVzIHpvb21pbmcuCiAgICAgIG1hcC5zY3JvbGxXaGVlbFpvb20uZW5hYmxlKCk7CiAgICAgIGxhc3RTY3JlZW4gPSB7eDogbnVsbCwgeTogbnVsbH07CiAgICB9KTsKICB9CgogIEhUTUxXaWRnZXRzLndpZGdldCh7CiAgICBuYW1lOiAibGVhZmxldCIsCiAgICB0eXBlOiAib3V0cHV0IiwKICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGVsLCB3aWR0aCwgaGVpZ2h0KSB7CiAgICAgIC8vIGhhcmQtY29kaW5nIGNlbnRlci96b29tIGhlcmUgZm9yIGEgbm9uLWVtcHR5IGluaXRpYWwgdmlldywgc2luY2UgdGhlcmUKICAgICAgLy8gaXMgbm8gd2F5IGZvciBodG1sd2lkZ2V0cyB0byBwYXNzIGluaXRpYWwgcGFyYW1zIHRvIGluaXRpYWxpemUoKQogICAgICB2YXIgbWFwID0gTC5tYXAoZWwsIHsKICAgICAgICBjZW50ZXI6IFs1MS41MDUsIC0wLjA5XSwKICAgICAgICB6b29tOiAxMwogICAgICB9KTsKCiAgICAgIHByZXZlbnRVbmludGVuZGVkWm9vbU9uU2Nyb2xsKG1hcCk7CgogICAgICAvLyBTdG9yZSBzb21lIHN0YXRlIGluIHRoZSBtYXAgb2JqZWN0CiAgICAgIG1hcC5sZWFmbGV0ciA9IHsKICAgICAgICAvLyBIYXMgdGhlIG1hcCBldmVyIHJlbmRlcmVkIHN1Y2Nlc3NmdWxseT8KICAgICAgICBoYXNSZW5kZXJlZDogZmFsc2UsCiAgICAgICAgLy8gRGF0YSB0byBiZSByZW5kZXJlZCB3aGVuIHJlc2l6ZSBpcyBjYWxsZWQgd2l0aCBhcmVhICE9IDAKICAgICAgICBwZW5kaW5nUmVuZGVyRGF0YTogbnVsbAogICAgICB9OwoKICAgICAgaWYgKCFIVE1MV2lkZ2V0cy5zaGlueU1vZGUpIHJldHVybiBtYXA7CgogICAgICAvLyBDaGVjayBpZiB0aGUgbWFwIGlzIHJlbmRlcmVkIHN0YXRpY2FsbHkgKG5vIG91dHB1dCBiaW5kaW5nKQogICAgICBpZiAoIS9cYnNoaW55LWJvdW5kLW91dHB1dFxiLy50ZXN0KGVsLmNsYXNzTmFtZSkpIHJldHVybiBtYXA7CgogICAgICBtYXAuaWQgPSBlbC5pZDsKCiAgICAgIC8vIFN0b3JlIHRoZSBtYXAgb24gdGhlIGVsZW1lbnQgc28gd2UgY2FuIGZpbmQgaXQgbGF0ZXIgYnkgSUQKICAgICAgJChlbCkuZGF0YSgibGVhZmxldC1tYXAiLCBtYXApOwoKICAgICAgLy8gV2hlbiB0aGUgbWFwIGlzIGNsaWNrZWQsIHNlbmQgdGhlIGNvb3JkaW5hdGVzIGJhY2sgdG8gdGhlIGFwcAogICAgICBtYXAub24oJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgIFNoaW55Lm9uSW5wdXRDaGFuZ2UobWFwLmlkICsgJ19jbGljaycsIHsKICAgICAgICAgIGxhdDogZS5sYXRsbmcubGF0LAogICAgICAgICAgbG5nOiBlLmxhdGxuZy5sbmcsCiAgICAgICAgICAnLm5vbmNlJzogTWF0aC5yYW5kb20oKSAvLyBGb3JjZSByZWFjdGl2aXR5IGlmIGxhdC9sbmcgaGFzbid0IGNoYW5nZWQKICAgICAgICB9KTsKICAgICAgfSk7CgogICAgICB2YXIgZ3JvdXBUaW1lcklkID0gbnVsbDsKCiAgICAgIG1hcAogICAgICAgIC5vbignbW92ZWVuZCcsIGZ1bmN0aW9uKGUpIHsgdXBkYXRlQm91bmRzKGUudGFyZ2V0KTsgfSkKICAgICAgICAub24oJ2xheWVyYWRkIGxheWVycmVtb3ZlJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgLy8gSWYgdGhlIGxheWVyIHRoYXQncyBjb21pbmcgb3IgZ29pbmcgaXMgYSBncm91cCB3ZSBjcmVhdGVkLCB0ZWxsCiAgICAgICAgICAvLyB0aGUgc2VydmVyLgogICAgICAgICAgaWYgKG1hcC5sYXllck1hbmFnZXIuZ2V0R3JvdXBOYW1lRnJvbUxheWVyR3JvdXAoZS5sYXllcikpIHsKICAgICAgICAgICAgLy8gQnV0IHRvIGF2b2lkIGNoYXR0aW5lc3MsIGNvYWxlc2NlIGV2ZW50cwogICAgICAgICAgICBpZiAoZ3JvdXBUaW1lcklkKSB7CiAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGdyb3VwVGltZXJJZCk7CiAgICAgICAgICAgICAgZ3JvdXBUaW1lcklkID0gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgICAgICBncm91cFRpbWVySWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIGdyb3VwVGltZXJJZCA9IG51bGw7CiAgICAgICAgICAgICAgU2hpbnkub25JbnB1dENoYW5nZShtYXAuaWQgKyAnX2dyb3VwcycsCiAgICAgICAgICAgICAgICBtYXAubGF5ZXJNYW5hZ2VyLmdldFZpc2libGVHcm91cHMoKSk7CiAgICAgICAgICAgIH0sIDEwMCk7CiAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICByZXR1cm4gbWFwOwogICAgfSwKICAgIHJlbmRlclZhbHVlOiBmdW5jdGlvbihlbCwgZGF0YSwgbWFwKSB7CiAgICAgIC8vIExlYWZsZXQgZG9lcyBub3QgYmVoYXZlIHdlbGwgd2hlbiB5b3Ugc2V0IHVwIGEgYnVuY2ggb2YgbGF5ZXJzIHdoZW4KICAgICAgLy8gdGhlIG1hcCBpcyBub3QgdmlzaWJsZSAod2lkdGgvaGVpZ2h0ID09IDApLiBQb3B1cHMgZ2V0IG1pc2FsaWduZWQKICAgICAgLy8gcmVsYXRpdmUgdG8gdGhlaXIgb3duaW5nIG1hcmtlcnMsIGFuZCB0aGUgZml0Qm91bmRzIGNhbGN1bGF0aW9ucwogICAgICAvLyBhcmUgb2ZmLiBUaGVyZWZvcmUgd2Ugd2FpdCB1bnRpbCB0aGUgbWFwIGlzIGFjdHVhbGx5IHNob3dpbmcgdG8KICAgICAgLy8gcmVuZGVyIHRoZSB2YWx1ZSAod2UgcmVseSBvbiB0aGUgcmVzaXplKCkgY2FsbGJhY2sgYmVpbmcgaW52b2tlZAogICAgICAvLyBhdCB0aGUgYXBwcm9wcmlhdGUgdGltZSkuCiAgICAgIC8vCiAgICAgIC8vIFRoZXJlIG1heSBiZSBhbiBpc3N1ZSB3aXRoIGxlYWZsZXRQcm94eSgpIGNhbGxzIGJlaW5nIG1hZGUgd2hpbGUKICAgICAgLy8gdGhlIG1hcCBpcyBub3QgYmVpbmcgdmlld2VkLS1ub3Qgc3VyZSB3aGF0IHRoZSByaWdodCBzb2x1dGlvbiBpcwogICAgICAvLyB0aGVyZS4KICAgICAgaWYgKGVsLm9mZnNldFdpZHRoID09PSAwIHx8IGVsLm9mZnNldEhlaWdodCA9PT0gMCkgewogICAgICAgIG1hcC5sZWFmbGV0ci5wZW5kaW5nUmVuZGVyRGF0YSA9IGRhdGE7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIG1hcC5sZWFmbGV0ci5wZW5kaW5nUmVuZGVyRGF0YSA9IG51bGw7CgogICAgICAvLyBNZXJnZSBkYXRhIG9wdGlvbnMgaW50byBkZWZhdWx0cwogICAgICB2YXIgb3B0aW9ucyA9ICQuZXh0ZW5kKHsgem9vbVRvTGltaXRzOiAiYWx3YXlzIiB9LCBkYXRhLm9wdGlvbnMpOwoKICAgICAgaWYgKCFtYXAubGF5ZXJNYW5hZ2VyKSB7CiAgICAgICAgbWFwLmNvbnRyb2xzID0gbmV3IENvbnRyb2xTdG9yZShtYXApOwogICAgICAgIG1hcC5sYXllck1hbmFnZXIgPSBuZXcgTGF5ZXJNYW5hZ2VyKG1hcCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbWFwLmNvbnRyb2xzLmNsZWFyKCk7CiAgICAgICAgbWFwLmxheWVyTWFuYWdlci5jbGVhcigpOwogICAgICB9CgogICAgICB2YXIgZXhwbGljaXRWaWV3ID0gZmFsc2U7CiAgICAgIGlmIChkYXRhLnNldFZpZXcpIHsKICAgICAgICBleHBsaWNpdFZpZXcgPSB0cnVlOwogICAgICAgIG1hcC5zZXRWaWV3LmFwcGx5KG1hcCwgZGF0YS5zZXRWaWV3KTsKICAgICAgfQogICAgICBpZiAoZGF0YS5maXRCb3VuZHMpIHsKICAgICAgICBleHBsaWNpdFZpZXcgPSB0cnVlOwogICAgICAgIG1ldGhvZHMuZml0Qm91bmRzLmFwcGx5KG1hcCwgZGF0YS5maXRCb3VuZHMpOwogICAgICB9CgogICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHpvb21Ub0xpbWl0cyBvcHRpb24gc2F5cyB0aGF0IHRoZSBtYXAgc2hvdWxkIGJlCiAgICAgIC8vIHpvb21lZCB0byBtYXAgZWxlbWVudHMuCiAgICAgIGZ1bmN0aW9uIG5lZWRzWm9vbSgpIHsKICAgICAgICByZXR1cm4gb3B0aW9ucy56b29tVG9MaW1pdHMgPT09ICJhbHdheXMiIHx8CiAgICAgICAgICAgICAgIChvcHRpb25zLnpvb21Ub0xpbWl0cyA9PT0gImZpcnN0IiAmJiAhbWFwLmxlYWZsZXRyLmhhc1JlbmRlcmVkKTsKICAgICAgfQoKICAgICAgaWYgKCFleHBsaWNpdFZpZXcgJiYgbmVlZHNab29tKCkpIHsKICAgICAgICBpZiAoZGF0YS5saW1pdHMpIHsKICAgICAgICAgIC8vIFVzZSB0aGUgbmF0dXJhbCBsaW1pdHMgb2Ygd2hhdCdzIGJlaW5nIGRyYXduIG9uIHRoZSBtYXAKICAgICAgICAgIC8vIElmIHRoZSBzaXplIG9mIHRoZSBib3VuZGluZyBib3ggaXMgMCwgbGVhZmxldCBnZXRzIGFsbCB3ZWlyZAogICAgICAgICAgdmFyIHBhZCA9IDAuMDA2OwogICAgICAgICAgaWYgKGRhdGEubGltaXRzLmxhdFswXSA9PT0gZGF0YS5saW1pdHMubGF0WzFdKSB7CiAgICAgICAgICAgIGRhdGEubGltaXRzLmxhdFswXSA9IGRhdGEubGltaXRzLmxhdFswXSAtIHBhZDsKICAgICAgICAgICAgZGF0YS5saW1pdHMubGF0WzFdID0gZGF0YS5saW1pdHMubGF0WzFdICsgcGFkOwogICAgICAgICAgfQogICAgICAgICAgaWYgKGRhdGEubGltaXRzLmxuZ1swXSA9PT0gZGF0YS5saW1pdHMubG5nWzFdKSB7CiAgICAgICAgICAgIGRhdGEubGltaXRzLmxuZ1swXSA9IGRhdGEubGltaXRzLmxuZ1swXSAtIHBhZDsKICAgICAgICAgICAgZGF0YS5saW1pdHMubG5nWzFdID0gZGF0YS5saW1pdHMubG5nWzFdICsgcGFkOwogICAgICAgICAgfQogICAgICAgICAgbWFwLmZpdEJvdW5kcyhbCiAgICAgICAgICAgIFsgZGF0YS5saW1pdHMubGF0WzBdLCBkYXRhLmxpbWl0cy5sbmdbMF0gXSwKICAgICAgICAgICAgWyBkYXRhLmxpbWl0cy5sYXRbMV0sIGRhdGEubGltaXRzLmxuZ1sxXSBdCiAgICAgICAgICBdKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgbWFwLmZpdFdvcmxkKCk7CiAgICAgICAgfQogICAgICB9CgogICAgICBmb3IgKHZhciBpID0gMDsgZGF0YS5jYWxscyAmJiBpIDwgZGF0YS5jYWxscy5sZW5ndGg7IGkrKykgewogICAgICAgIHZhciBjYWxsID0gZGF0YS5jYWxsc1tpXTsKICAgICAgICBpZiAobWV0aG9kc1tjYWxsLm1ldGhvZF0pCiAgICAgICAgICBtZXRob2RzW2NhbGwubWV0aG9kXS5hcHBseShtYXAsIGNhbGwuYXJncyk7CiAgICAgICAgZWxzZQogICAgICAgICAgY29uc29sZS5sb2coIlVua25vd24gbWV0aG9kICIgKyBjYWxsLm1ldGhvZCk7CiAgICAgIH0KCiAgICAgIG1hcC5sZWFmbGV0ci5oYXNSZW5kZXJlZCA9IHRydWU7CgogICAgICBpZiAoIUhUTUxXaWRnZXRzLnNoaW55TW9kZSkgcmV0dXJuOwoKICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgdXBkYXRlQm91bmRzKG1hcCk7IH0sIDEpOwogICAgfSwKICAgIHJlc2l6ZTogZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQsIG1hcCkgewogICAgICBtYXAuaW52YWxpZGF0ZVNpemUoKTsKICAgICAgaWYgKG1hcC5sZWFmbGV0ci5wZW5kaW5nUmVuZGVyRGF0YSkgewogICAgICAgIHRoaXMucmVuZGVyVmFsdWUoZWwsIG1hcC5sZWFmbGV0ci5wZW5kaW5nUmVuZGVyRGF0YSwgbWFwKTsKICAgICAgfQogICAgfQogIH0pOwoKICBpZiAoIUhUTUxXaWRnZXRzLnNoaW55TW9kZSkgcmV0dXJuOwoKICBTaGlueS5hZGRDdXN0b21NZXNzYWdlSGFuZGxlcignbGVhZmxldC1jYWxscycsIGZ1bmN0aW9uKGRhdGEpIHsKICAgIHZhciBpZCA9IGRhdGEuaWQ7CiAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CiAgICB2YXIgbWFwID0gZWwgPyAkKGVsKS5kYXRhKCdsZWFmbGV0LW1hcCcpIDogbnVsbDsKICAgIGlmICghbWFwKSB7CiAgICAgIGNvbnNvbGUubG9nKCJDb3VsZG4ndCBmaW5kIG1hcCB3aXRoIGlkICIgKyBpZCk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEuY2FsbHMubGVuZ3RoOyBpKyspIHsKICAgICAgdmFyIGNhbGwgPSBkYXRhLmNhbGxzW2ldOwogICAgICBpZiAoY2FsbC5kZXBlbmRlbmNpZXMpIHsKICAgICAgICBTaGlueS5yZW5kZXJEZXBlbmRlbmNpZXMoY2FsbC5kZXBlbmRlbmNpZXMpOwogICAgICB9CiAgICAgIGlmIChtZXRob2RzW2NhbGwubWV0aG9kXSkKICAgICAgICBtZXRob2RzW2NhbGwubWV0aG9kXS5hcHBseShtYXAsIGNhbGwuYXJncyk7CiAgICAgIGVsc2UKICAgICAgICBjb25zb2xlLmxvZygiVW5rbm93biBtZXRob2QgIiArIGNhbGwubWV0aG9kKTsKICAgIH0KICB9KTsKCn0pKCk7CgoKCi8vIEluIFJNYXJrZG93bidzIHNlbGYtY29udGFpbmVkIG1vZGUsIHdlIGRvbid0IGhhdmUgYSB3YXkgdG8gY2FycnkgYXJvdW5kIHRoZQovLyBpbWFnZXMgdGhhdCBMZWFmbGV0IG5lZWRzIGJ1dCBkb2Vzbid0IGxvYWQgaW50byB0aGUgcGFnZS4gSW5zdGVhZCwgd2UnbGwgc2V0Ci8vIGRhdGEgVVJJcyBmb3IgdGhlIGRlZmF1bHQgbWFya2VyLCBhbmQgbGV0IGFueSBvdGhlcnMgYmUgbG9hZGVkIHZpYSBDRE4uCmlmICh0eXBlb2YoTC5JY29uLkRlZmF1bHQuaW1hZ2VQYXRoKSA9PT0gInVuZGVmaW5lZCIpIHsKICBMLkljb24uRGVmYXVsdC5pbWFnZVBhdGggPSAiaHR0cDovL2Nkbi5sZWFmbGV0anMuY29tL2xlYWZsZXQtMC43LjMvaW1hZ2VzIjsKCiAgaWYgKEwuQnJvd3Nlci5yZXRpbmEpIHsKICAgIEwuSWNvbi5EZWZhdWx0LnByb3RvdHlwZS5vcHRpb25zLmljb25VcmwgPSAiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFESUFBQUJTQ0FZQUFBQVd5NGZyQUFBUGlFbEVRVlI0MnQxYkNWQ1U1eGttYmFidFpKSk9PK2wwbWhnVDB5UWUwV1haZ3oyNTcwTkI4STZKNlV6YVRCb09SUkZFcnVWR0RoV1VQUkFRUkZGUkVEblZ4Q3RFQlJiMjREQk5FM1dhYWF0cGttbHVvNG0rZmQ5djk5OW9sR1ZCRHUzT1BMaisvL3MrNy9XOTMvZjkvLzYvRXdBNC9UOWczQWxGT1VlZVVHUjJ1TXF6T3lKazJSMngwcXlPQW1ubWtTM1NyQ1ByWkpsSGxzcXpqeXBjczQ5T1gxSmYvL1A3S2hEODg1QTB1MTBteTJvdlFzY3Z5Ykk2d0VGOGl2STdwRm50QVY2cWt3OVBXU0JLMWJFblpSbHRtMldaN1I4aDRGYkkwVkczM0dQZ1hYZ0NBcmErQTRFSW44S1Q0SkgvRmlnb2lKL0lJejZUWmJWVktMTGFuNXUwUUVTcWxrY2tXVzNwMHN5MmJ4REFnWndPMTNURHl0b0IrTlBlOSt6aWxkMkRFRkd1QjcvTnB6RG9kcmlGNTVvMG83WElSWFhvTnhNYWlDU2o5VlUwOUM4RUVOeHlqMEM0dGh0ZXJoMkVWK3ZldXdPcjZzN0R5M3Nzb085M2szbGx6eEJFNlBUZ2tYY01PRjdFSjlLTXRxalI5SkZEUW5OVjliK1FxbHFxRUVDUVo3VEJndTFuWWRYdUlYZ1ZuZVN3WXRjZ1JGYjFRMWlGR1VMTHpSQ3NNOTBHT3JaZ2h4a2lLdnRoZWMwZ3JMcEZseEN1NmNLaDF3NmNIVVNiY3RQaHg4WWxFRWx1NCtOU1ZmTnBCQkFDdHB5R2xic0dtQk9FbFJoTUJEb2ZnazRHb2JPalFYQzVDUlppVUMvVkR0bjRxTHJCSlozQTJjTmcrbkU0UDMxUGdTREJiSW1xNVVOSmVqTVFGcWk3Y0NpY1ozaVpCVEFBUVZvVEJJNERLS0NWR0JESEg2bnJCUmxXeFdyN3NsalZJaGxUSURMVm9Sa1MxZUgvU05JUGd6eXpGUlpWOU5uRysrTHFRY3lvR1FMUWdmRkVJRllwY3VlQXpjNlNTaU1PdFRZZ0g5Q1hyK1dwVGJ4UkJlS2xxbjlVa3Raa1JvQUNaNVBsTzgxWWdmTU00Ulg5RUtBeFRTakNkdlRqRUxQWVcxN2REOHJzZGlCZkVCY2xTWTJQT3hRSUhubElrbnJvRUFKazZVMndwTUxJU0YvYU5RU2hXQVYvdFdsU0VJSzJWcUJOc3IyMDBnUnlHbUxva3lTMThjVGRGdEE3QW5GTmJjeEFBQ0dNclF0RExBanFCVCsxY1ZKQk5zazIrYkJRMXdPY1g1SzB4czEyQThHeXpYUk5hZmdlQVlGYjNtRWtyQkk0SS9tV0dVZU5RSTFseXAyUG9POWo0YURLY0g0RWJlMEU4ZzN4Z3l5bGNjNndnYmltTmpTU29GdFdLMXNUcUxSaDJCTStTT2dJZkRHTEpMOElHM1paalVYL1ZpeXZHWUxGT3dkWm4vbGpZSTd5enNlZTRUamNzVi9JUjNGcVErdGRBeEVuTlNqRnlRZUJFSzdwZ1JWb2RFblZJUGhzTnpxRVlLMFpsdUZzUm5xM1lqSDIyS0p5QTZ6NHlUbVNwWjV6bEg4UlR2V2t0MUNyQjg1UFlVcWp6eDJCdUc2c1B5ZmVlQUE4c2p0d3BoaGlDRlNid1h1YjBTN0lTUGlPQVp2TzRoMDQ4eFNmQk0rY0RwRGllQ1pPZ2dTejZKSGRCdjVGSjNDTjZMUEpSMVFNZ085MjA0aDJhQUxnZER4empscDRrdzhZYUhLeUJTSkpQaWdXYjZ3SFFpUm1ieGtLTDBRRFhraGdEOTRZeEdLc0dza1RRa3ZmeFZubElIQmNCTmZrZWd6aXdCM0hBbkhEdUd5blJYY3AvdXRYWmhyUkhpV001Q1BMamJkd0hWRFlBaEZ0M0o4clR0b1BicGt0U0RyRTRJTlo4aXcxMmtVWUVwUHM0a296ZU9XMEEzRVFJb3ZiWWNmeElUajc5OHZ3eGJmWDRPcjFIOEI0NlJPbzdmd2J2S1k5YnBOenkyaG1pU09PeU1yQkVlMlJUNXgvN3RqSHhDRksybC80WXlCSis5NUhRQUJtaWJLekVKdlJzOVJnRjRGcUU1TWxlR1MzQXVtTE4rNkQ0bFlqZkllT0QvZTVlUk9nN3N6N29FZzd3SFJrNlkzWWkvMk1Kd1Q3YkNTNzVCdkpCdUdzU3ZxSUQxZ2dhSHllYUFNZVFFUmd5YWpCZzNCRzhTZ3hEQXN2SkZ4VU9jQmtnN2QwTWwzWGpmdWhDeXZnNk9maXgxK0FsNnFCNmZwdWVvdHhzY2tGaDVBOTIrUWJ5ZEh3NHZ5bUdKeEVHK3JXaVJMM2dvSldjU3d2d2JQRUNPNWJEY01pUkdObWNoUzRhMUk5a1A2MkRoT005dFBhZDRucEVoYVVkVFBPc1BKK3U3YkpOODVQcGFxSjZZb1Q2eEtjUklsMXBRand4SXVreFhoeUlZNTdOMVN3aDdEeUFTYnJtMzhNU0hkUlVTdGMrLzRHak9VVFYzMmFjYmhsTmpOTzZwV1I3RlBUazZ4WDNsR21LMHlzMHpyaG4wWmh3aDd3SzNpYm5WeWc2d2UzTFFhN1dGUXh5R1NwaXFSYmUvbzhqUFhUZStFSzR4RGpFQ0hPeGRZUlljOCsrVWh5ZmdYSG1hNXcvWjVtSitINjNUM0NoTjNZNk8vZ3VNY3hqOE5HaWNMRGdZeVEzQ0tjbnNVYk1CdW9hN2o0OFpnRCtlcnFkY3pxYnNZVHB1bGozTFN1MlBPQmZDUTU4cG4wRUgxT3dvVGFmd3ZYMStKVjJWbUl4RXdIbEpsQnNka3dMSHkybVpqY2dqSTlrSjRZbmJoNi9YdTRsMDlZZmhQakNzU0pnN2hwSWJibmcvOTJNNU1qbjBrUGNkbEpHRi83SlFKQ1Nyc2dBc2VlSHpvcUwrNGJGblNlNUVKS3pnSHBlYVRzZzN2OXJDcnRZRnoraFNjWmR6QUdZczhIWDg0SDlKbjBLQVluUWZ5dUlRVDRZNW1vMGFraU1oUWVEaDQ0dEVndVhHY0UwaVA4NDVNdnh4ekVqUnMzUVo1VXgzaEN0blV4YnFxNlBSLzhjUmRBY3VTejFZZnpHRWhObTJCZERmamt2dzBMY1RZS29rQ0srb2FGQW9sSWppREZCWWwwMi9vdWpEbVFDMWMrWnh6QytCb0lwMnQzNUhYSFByRG5BL2xJY3VRejZTS09PQW5XVnFzUmJIc2NqaWRETmYwZ1JXRjdDTlgyTTFsM1ZUT1FibXBkNTVnRHFUMDF4RGhrbUJUaUpNaEdzQitpc2RyUGJHZTZ3clUxNVJqSXprUUV5SEIzR3FZYllDQWlTZUh3Q01CbUk3bUFZaXd0NmdyWDdRVDloNWRISGNRL1Avc0tsRW03R1lkMzdsSEdHYUx1dDJ0YmlyRDVpVDZUcmlDdUtzVkpzTHJDd3lXdWloMllqL3VuTUMyVkZsZnNncjVob2R4c1pISUVaVm9Ua1A3ODdBUHc3VFhIWnkvYWMvMjVySjNwU3BQMjR0UnJabnllVzAxMmJidFpiUzlBZWZLWitiNm1NdGpKUzZWNkdQL3pPUjN3Sytwa1FuN2J6SGJKQ0NSRHNxRmxCcHorZGpIQ1Y3YTJ3TVVyL3gweGlNKyt1Z3BycTQ1Ym5GaGJoZE5vRitNS0xPdDMyQzc1U3ZxSWI3eFVPMy9GZHIvOHVNcURMbXNxd1UzVmlwSDJRekEyazNoVHIxMUlDbnFaSE1uN0YrSENGSWZaUVE1SmZEVlV2VzFtenY3MDgvVjMxNkZWL3dGNEplOWhzZ1N2M0dPTVl6NzFKZzZia2V6UzBDTjVOMVdMaFNPdXNzVzJqUmVzcm56TlpYVUZtNVBuVzBubDJDY2lWTFFIZWJIQkpoOVUwZzFTM0dZUUQ0ZVFqSDJRV0gwQzB1dHcxNURYQUVJeWJEMG54b1VzWVBNWm16NE41OUhZRStLMFN6eUMyTW8zYklIdzR6VFQrS3QzM0VTQVgvRlpDTVdvdlV0TUlNenZIUkZLSkE5RytWQUd2SjdJUHNLR0MzSGREWUk0cW53emhKUVptUTVsMkFPRGNNU1diNm1KNmZnV24rSDRic3hiV3pYOXRtdDJsOVhsN2Z6WWNwd0pHaGw1TUk1WEVTb0w4a2FHS0I5WFd3dzh4T29ZSVhCckQzaHZPZ25LOUJiRVlkeXBIc2N0U0JjR1lMYkorRk12YnVwejJBYW5KMDF1QVBMVkphYjg4QjAzSDF4aWRLSDhXQjBUQ0NxMUtORU00WWdSRG03RlJseXMrbThMNkc2Z0pMbVBrcHVxeGhKVTBzdDhKRjhGTWVWK2R3VGlwRkw5ekRsR2V3bUIxd1lkekpoL3FSbGNjbnRIRGNxZXZCQ3Y2TkJaM3hJeitDR1A1eFlUS0lvTUlNWnpvK1VUSUFLM1dSS2dVTFVCK2VnY3JUcy83QTA2WHBRMjBUbGFpK080bW0wREtMdVNBZ1B3a1dncUljT2trQytCT0JSZFZsY0MrY2lMMGtVTkc0am9kZDN2bktNMTN5SEFLLzhVQkc2blRCckJPVWMvcGZEQlJaSjg4Y2c5RHVRYkwxcnp4ZHczeXg2MWV4UGJPVWF6aTRSZDhWcVlNaEJJd3l1bkY1eXo5Vk1DVVY2dnhRK0VDSmNIOHMwNVNsTXk0dDE0NXhpMWpBa2pmSXU3R0lFU3h6WVBTYWNDMUdma2czZmhHYkQ2ZGRNbFZ2dUNRei8wb0hBZktjbFNtaUFBSzBKTjc1emRDL095OUpNS2FuS3lUeEJ2T0dBSkpFYmQ0ZkF2VnJ4bzlVdWt4TWZad2J1NGh3V2lLRExDWENTZlROQVVUYmE5Q3M1eDFTRDRPQndJbTRxak5RT2tLRTF1QkgrYVFrc3NWWm1icVo4VUNMQXZ5UzVCbkxEZjJodmFFNlArTVpRZnBZbmdzdUJkMkExK1c3RXFCVVo0TVVNL0tYQXZNakdiSHZtMjNnQ1hhSTF5VEQ5UG83S2V6V0JKQjhFWHAwQUNEMHMrSjZOblFrR3pKR2RQbEZESEJkSSs1dC9aK2RHYVFDNGJIcHZPZ2crdXpuSmNJR2VyZWlZVXlrSWpzK1dXMjJtckJpOVdMYnFuSng5d2x1Z2tJbEhpZnZCR2NnTE5LTFBRNEVTQStwQ3pJNGpmd3kyQWpmZjhDQWR1V3p5NHJMam5uV0VHcUZkbXBmZE1DS2dhWkVPWmM1cXJ4ZzNuV00yOGNYbW9oaGV0UGNxcXNuNHZlRzAyTWN6RG1XVm1Xcys0d2ptcjE4WXZXRmZMQlZJM2JrOEh1YnhaNXNwVlJaSFR5UXpKc1Nvdm9QSHhoQUtyUWR5S3JGTmNFRC93bzhwbmp1dnpXcmdIYXlKeUlZNWJ6MklUdzF5Y0pwOVA3UjRYOExEQ0hLL0wybDBzRUg2MHRtcmNIenpqUmV0NHRNOWhWY2sreFF6S054bkdMUkRxTytLVVpaN2dxbkhkWlkxbXhvUThRVWZqbFl3STF0YUNCeTVZQktyS2N5bmQ5d1RxTnd1ZkVmaHJxcTE3S28xNndoNEZwUEZLNDVadEtETk9nbnNoWmpEZkFIOU03cjRueVBPTmpFdWEvaFpYamF2OE56VFRKdlRoVEY2VXBwSnRGK0pxd0EyTkUxNVU2ZUZaZEdnc21KdlJ5emlVZUJYSVg3UFQyaHVhelJQK2xLa2dhdnN6ZU0xOGpXMG9WY2ZCcllDcVlvUm5OM2FQR2x3MWlNTTE3YWkxR3Rxdm5kL1EvSDVTbnZ2RjdmMTJsamtjejBwc1VtV0JwU296MExuUmdLcEJ1Z3E2TDhDdXhTa1FkZTZrUGNBc1dxTjdBbzEreXphVWFjZEFzY2tJMGp3RFBKUFU1VEJtYk94aS9VVzY0cFFPcmpjKzUvMVYvZHRKZlJJYnJ3MEtXRlZXVitIdzZHTkRaRTZhSHA3ZTBPVVE1cVRybVk0OHJ3LzRzUldXM29qU3BrMzZJK1d6bzdZLzdoeWwrWkp0WFZJN1dKKzQ1aHJnYWN6MjlBMzJRVElTckNEcGlKTGJ1V3A4T2l1aDhqR1lpb2Y4ZVRIcURFdFZLa0NHbVpWWnF6STlzY3N1U0laa1pYVGZLbllIdDhOTm1MSzNGYVF4cGI5R0p6NWpWY0hNY2xXaHJEK1ZlSGZRc0pMa1dxb2hUR3JscW5GWjlMcnVrU2w5N1lJWHBVNWtWY0hNU3ZES1RwcG5oTm1ZOFdrSlhYY0ZuU01aU1k2ZTNjTzFydUt4VS83K0NHVVNuYm5DdGk0YldqSGJPQXZsR09BcGRQcko5YmVEanRFNWtoRnNhT2FxOGRIek1hVy92Qy9lNktHTVdtNGZsWU1rdTRjTm5WbXBQZWo4dWR0QTFhQnpybGw0N1JHanMvYUcrdlg3NXRVa3lpaGwxbEtWWm5ERnJJdXkrMkFhT3Y5RXZBWDBuWTdST1plRUpxNGFGK2czelB2cUhTdGVqT1l2bHZHdUExRm1OeHRDTTFQMThBY01nakFMdjlNeFlXYVg5V2NCa3RXdXV1OWVGcVBNNG1idkF6YkVFZzVoOXRIcExJT3RQK2c3SGVNbk5ITFZlRy9Ka3ZGN1lXeGMzM2pEcXF5MFpob0VLb3Z6TTFQMERQU2RqdEZ2RzVaVlhMUDB2bjE5ejNLclZUdklIRjNmWUhIZUN2cnVITi9BYmROTjNQTzY5KzE3aUxnempyUnV4OEVsL1N3SU1nME05UDNIRzlIcXNQditoVXJySlhFdmN6aitBQWJSeCtBY1g4OEYwdjFBdkJuS0FubFRHOFJsbjUvNkx1TEhXNS96b3JUK0Qwd2cxcXE4eTV4ZnU4OENTeUNuSDVoM2RXL1pHWHZlOHVPTVpSV1Awbm84Y0lGWTcrWWZzd1VSclQzNlFMMDlmZnNNcHBIWWVnVy9QN0NCV0h2bE1PR0JlNS85anRkalk3Ujh3a1RiK1I5bWVaQTZuMm9KV0FBQUFBQkpSVTVFcmtKZ2dnPT0iOwogIH0gZWxzZSB7CiAgICBMLkljb24uRGVmYXVsdC5wcm90b3R5cGUub3B0aW9ucy5pY29uVXJsID0gImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmtBQUFBcENBWUFBQURBazRMT0FBQUdta2xFUVZSWXc3VlhlVXlUWnhqdk5uZkVMRnV5SXpPYWJlcm1NWkVlUUMvT2Nsa080OUNwT0hYT0xKbC9DQVVSdVliUWkzS0xnRWhicmhaMWFEd21hb0dxS0lJNm9kQVRtSC9zY0RGYmRDN0x2RnFPQ2MrZTk1czJWRzUwWC9MTG0vZjQvWjduZVkvbmUxOGFBTkNtQXI1RS94WmYxdURPa1RjR2NXUjZobDkyNDd0VDVVN1k2U052V3NLVDYzUDU4cWJmZUxKRzhNNXFjZ1RrbnJ2dnJkRGJzVDdNbCt0djgyWDZ2VnhKRTMzYVJtZ1N5WXRjV1ZNcVg5N1l2Mkp2VzM5VWhSRTJIdXlCTCt0K2dLMTExNmx5MDZFZVdGTmxBbUh4bFFFME9NaVY2bVFDU2N1c0tSbGhTM1FMZVZKZGwxKzIzaDVkWTRGTkIzdGhyYllib3FwdEVGbHBoVEMxaFNwSm5iUnZ4UDROV2dzRTVKeXo4NlFOTmkvNXFTVVRHdUZrMWd1NTR0Tjl3dUsyd2MzbytXYzEzUkNtc29Cd0VxekdjWnN4c3ZDU3kvOXdKS2Y3VVdmMW1FWThKV2Zld2M2N1VVb0RiRGpRQytGcUs0UXFMVk1HR1I5ZDJ3dXJLenFCazNucUlULzl6THhSUmpnWjlicVFndWIrRGRvZUNDMDNROGorMFFoRmhCSFIvZVAzVS96Q2xuN1V1K2hpaEoxK2JCTmZmTEl2bWt5UDBncEJaV1lYaEt1c3NLNm1CejVIVDZNMU5xcGNwK21CQ1BYb3NZUWZyZWtHdnJqZXdkNTkvR3ZLQ0U3VGJLLzA0L1pWNVFaWVZXbUR3SDFtRjN4YTJRM3JhM0RCQzV2QlQxb1A3UFRqNEMwK0NjTDhjN0MyQ3RlanFodUNudUlRSGFLSHp2Y1JmWnBueWxGZlhzWUp4M3BOTHdoS3pSQXdBaEVxRzBTcHVzQkhmQUtreHczdzQ2MjdNUGhvQ0g3OTh6N3MwWm5CSi9NRUpiWlNiWFBoRVIyaWg3cDJvay96U2oyY0VKRGQ0Q0FlKzVXWW5CQ2dSMnVydXlFdzZ6Um9XNi9EV0ovT2VBUDhwZC9CR3R6T1pLcEc4b2tlMFNYNkdNbVJrNkdGbHlBYzU5SzMyT1RFaW5JTFJKUmNoYWg4SFF3TkQ4TjQzNVo5WjBGWTFFcXR4VWcrMFNPNlJKL21tWHo0VnVTK0RweFhDM2dYbVp3SUw3ZEJTSDR6S0U1MHdFU2Y4cXdWZ3JQMUVJbFRPNUpQOUlndTBhZXhkaDI4RjFsbUFFR0pHZmg3akU2RWx5TTVSdy9GRGNZSmpXaGJlaUJZb1lOSXBjMkZUL1NJTGl2cDBGMWlwRFdrNEJJRW8yVnVvZEVKVWlmaGJpbHRuTkJJWFBVRkNNcHRodEF5cXdzL0JQbEVGL1ZiYUl4RXJkeFBwaHNVN3JjQ3A4RG9oQytHdkJJUEpTL3RXMmp0dlRtbUFldU5POEJOT1lRZUc4Ry8yT3pDSjNxK3NvWUI1aTZOaE1hS3IxN0ZTYWw3R0lIaGV1VjN1U0NZOHFZVnVFbTFjT3pxZFdyN2t1L1IwQkRvVFQrRFQrb2hDTTYvQ0N2S0xLTzRSSStkWFBlQXVhTXFrc2FLclo3TDNGRTVGSUZia0ljZWVPWjJPY0hPNndJaFRrTm8wZmZnalJHeEVxb2dYSFlVUEhmV0FDL2xBRHB3R2NMUlkzYWVLNC9vUkdDS1ljWlhQVm9lWC9rZWxWWVk4ZFVHZjhWNUVCUmJnSlhUNVFJUGhQOWVQSmk0MjhKS09pRVloWVhGQnFvdTJHdWgrcC9tRUIxL1JmTXc2clk3Y3hjalRybmVJMUZyRHl1elVTUm05bWl3RUp4OEUvZ1VtcWx5dkhHa25laXdFclIyMUYzdE5PSzVUZjB5WGFUK083RGdDdkFMVFVCWGRNNFloQy9JYXdQVSsyUGR1cU12dWFSNmVveFN3VWs3NWdncXNZSjdWaWNzbndHSWtaQlNYS09Vd3c3M1dHWHlxUCtKMi9iOWMrZ2kxWUFnL3hwd2NrM2dKdXVjTnJoNUp2RFB2UXIwV0ZYZjBwaXl0OGY4L1dJMGhWNHBSeHhrUVpkSkRmREpOT0FtTTBBZzhqeVQ2aHowV0dYV3VQOTRZaDJqY2ZqbVhBR3ZIQ01zbFJpbURIWXVIdURzeTJRdEh1SWF2em5oYllVUnE1UjU3S3B6QkJSWktQSmk4ZVFnNDhoNGo4U0Rkb3dpZmRJckVWZFUrZ2JPNlFOdlJSdDRaQnRoVWFaaFVuamxZT2JOYWdWM2tlb2VydTNyVTdyY3VjZXFVMW1KQnh5K0JXWllsTkVCSCswZUg0dlJpQitPWXliVTJobmJsWWxUdmtIaW5NNG01NFlueFN5YVpZU0Y2UjNqd2dQN3VkS0xHSVg2ci9sYk5hOU42eTVNRnlualdEdHJIZDc1WnZUWUFQTy82UmdGMGs3Nm1RbGEzRkdxN2RPK2NIOHNLbjBWbzduRGxsd0FocXdMUGt4ckh3V21ISk9vK0FLSjRyYWI1T2dyTTdyVnU4ZVdiMlB1MERoNGVEZ1hvT2Z2cDdZN1FlcWtuUm12Y1RCRXlxOW0vSFFRU0NTejZMSHEzejB5enNOeVNSZk1TMjUzd2wyS3lSRGJjWlBjZkpLalptU0VPamN4eWkrWThkVU90c0lFSDZSMndOeWtkcXJrWUowUlY5MkgwVzU4cGtmUWs3Y0tldnNMSzEwUHk4U2RNR2ZYTlhBVFkrcFBieUpSL0VUNm45bklmenROdFpZUlY5WG5pUXU5SUEydk9WZ3k0aXI3R0NMVm1tZCt6amtIMGVBRjlQbzZLNjFwbUNYSHhVNXJITVlkMWZ0YzNvd2p3UlNWUnpMakt2cVpFdHk2Y1JVRDdqR3FpT2R1NUhHNk1kSGpOY05ZR3FmRG01WVJ6TEJCQ0NEbC8yYms4YThnZGJxY2Z3RUN1NjJGZy9IcmdnQUFBQUJKUlU1RXJrSmdnZz09IjsKICB9Cn0K"></script>
<script src="data:application/x-javascript;base64,KGZ1bmN0aW9uICgpIHsKCSd1c2Ugc3RyaWN0JzsKCglMLlRpbGVMYXllci5Qcm92aWRlciA9IEwuVGlsZUxheWVyLmV4dGVuZCh7CgkJaW5pdGlhbGl6ZTogZnVuY3Rpb24gKGFyZywgb3B0aW9ucykgewoJCQl2YXIgcHJvdmlkZXJzID0gTC5UaWxlTGF5ZXIuUHJvdmlkZXIucHJvdmlkZXJzOwoKCQkJdmFyIHBhcnRzID0gYXJnLnNwbGl0KCcuJyk7CgoJCQl2YXIgcHJvdmlkZXJOYW1lID0gcGFydHNbMF07CgkJCXZhciB2YXJpYW50TmFtZSA9IHBhcnRzWzFdOwoKCQkJaWYgKCFwcm92aWRlcnNbcHJvdmlkZXJOYW1lXSkgewoJCQkJdGhyb3cgJ05vIHN1Y2ggcHJvdmlkZXIgKCcgKyBwcm92aWRlck5hbWUgKyAnKSc7CgkJCX0KCgkJCXZhciBwcm92aWRlciA9IHsKCQkJCXVybDogcHJvdmlkZXJzW3Byb3ZpZGVyTmFtZV0udXJsLAoJCQkJb3B0aW9uczogcHJvdmlkZXJzW3Byb3ZpZGVyTmFtZV0ub3B0aW9ucwoJCQl9OwoKCQkJLy8gb3ZlcndyaXRlIHZhbHVlcyBpbiBwcm92aWRlciBmcm9tIHZhcmlhbnQuCgkJCWlmICh2YXJpYW50TmFtZSAmJiAndmFyaWFudHMnIGluIHByb3ZpZGVyc1twcm92aWRlck5hbWVdKSB7CgkJCQlpZiAoISh2YXJpYW50TmFtZSBpbiBwcm92aWRlcnNbcHJvdmlkZXJOYW1lXS52YXJpYW50cykpIHsKCQkJCQl0aHJvdyAnTm8gc3VjaCB2YXJpYW50IG9mICcgKyBwcm92aWRlck5hbWUgKyAnICgnICsgdmFyaWFudE5hbWUgKyAnKSc7CgkJCQl9CgkJCQl2YXIgdmFyaWFudCA9IHByb3ZpZGVyc1twcm92aWRlck5hbWVdLnZhcmlhbnRzW3ZhcmlhbnROYW1lXTsKCQkJCXZhciB2YXJpYW50T3B0aW9uczsKCQkJCWlmICh0eXBlb2YgdmFyaWFudCA9PT0gJ3N0cmluZycpIHsKCQkJCQl2YXJpYW50T3B0aW9ucyA9IHsKCQkJCQkJdmFyaWFudDogdmFyaWFudAoJCQkJCX07CgkJCQl9IGVsc2UgewoJCQkJCXZhcmlhbnRPcHRpb25zID0gdmFyaWFudC5vcHRpb25zOwoJCQkJfQoJCQkJcHJvdmlkZXIgPSB7CgkJCQkJdXJsOiB2YXJpYW50LnVybCB8fCBwcm92aWRlci51cmwsCgkJCQkJb3B0aW9uczogTC5VdGlsLmV4dGVuZCh7fSwgcHJvdmlkZXIub3B0aW9ucywgdmFyaWFudE9wdGlvbnMpCgkJCQl9OwoJCQl9IGVsc2UgaWYgKHR5cGVvZiBwcm92aWRlci51cmwgPT09ICdmdW5jdGlvbicpIHsKCQkJCXByb3ZpZGVyLnVybCA9IHByb3ZpZGVyLnVybChwYXJ0cy5zcGxpY2UoMSwgcGFydHMubGVuZ3RoIC0gMSkuam9pbignLicpKTsKCQkJfQoKCQkJdmFyIGZvcmNlSFRUUCA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCA9PT0gJ2ZpbGU6JyB8fCBwcm92aWRlci5vcHRpb25zLmZvcmNlSFRUUDsKCQkJaWYgKHByb3ZpZGVyLnVybC5pbmRleE9mKCcvLycpID09PSAwICYmIGZvcmNlSFRUUCkgewoJCQkJcHJvdmlkZXIudXJsID0gJ2h0dHA6JyArIHByb3ZpZGVyLnVybDsKCQkJfQoKCQkJLy8gcmVwbGFjZSBhdHRyaWJ1dGlvbiBwbGFjZWhvbGRlcnMgd2l0aCB0aGVpciB2YWx1ZXMgZnJvbSB0b3BsZXZlbCBwcm92aWRlciBhdHRyaWJ1dGlvbiwKCQkJLy8gcmVjdXJzaXZlbHkKCQkJdmFyIGF0dHJpYnV0aW9uUmVwbGFjZXIgPSBmdW5jdGlvbiAoYXR0cikgewoJCQkJaWYgKGF0dHIuaW5kZXhPZigne2F0dHJpYnV0aW9uLicpID09PSAtMSkgewoJCQkJCXJldHVybiBhdHRyOwoJCQkJfQoJCQkJcmV0dXJuIGF0dHIucmVwbGFjZSgvXHthdHRyaWJ1dGlvbi4oXHcqKVx9LywKCQkJCQlmdW5jdGlvbiAobWF0Y2gsIGF0dHJpYnV0aW9uTmFtZSkgewoJCQkJCQlyZXR1cm4gYXR0cmlidXRpb25SZXBsYWNlcihwcm92aWRlcnNbYXR0cmlidXRpb25OYW1lXS5vcHRpb25zLmF0dHJpYnV0aW9uKTsKCQkJCQl9CgkJCQkpOwoJCQl9OwoJCQlwcm92aWRlci5vcHRpb25zLmF0dHJpYnV0aW9uID0gYXR0cmlidXRpb25SZXBsYWNlcihwcm92aWRlci5vcHRpb25zLmF0dHJpYnV0aW9uKTsKCgkJCS8vIENvbXB1dGUgZmluYWwgb3B0aW9ucyBjb21iaW5pbmcgcHJvdmlkZXIgb3B0aW9ucyB3aXRoIGFueSB1c2VyIG92ZXJyaWRlcwoJCQl2YXIgbGF5ZXJPcHRzID0gTC5VdGlsLmV4dGVuZCh7fSwgcHJvdmlkZXIub3B0aW9ucywgb3B0aW9ucyk7CgkJCUwuVGlsZUxheWVyLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcywgcHJvdmlkZXIudXJsLCBsYXllck9wdHMpOwoJCX0KCX0pOwoKCS8qKgoJICogRGVmaW5pdGlvbiBvZiBwcm92aWRlcnMuCgkgKiBzZWUgaHR0cDovL2xlYWZsZXRqcy5jb20vcmVmZXJlbmNlLmh0bWwjdGlsZWxheWVyIGZvciBvcHRpb25zIGluIHRoZSBvcHRpb25zIG1hcC4KCSAqLwoKCUwuVGlsZUxheWVyLlByb3ZpZGVyLnByb3ZpZGVycyA9IHsKCQlPcGVuU3RyZWV0TWFwOiB7CgkJCXVybDogJy8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJywKCQkJb3B0aW9uczogewoJCQkJYXR0cmlidXRpb246CgkJCQkJJyZjb3B5OyA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnL2NvcHlyaWdodCI+T3BlblN0cmVldE1hcDwvYT4nCgkJCX0sCgkJCXZhcmlhbnRzOiB7CgkJCQlNYXBuaWs6IHt9LAoJCQkJQmxhY2tBbmRXaGl0ZTogewoJCQkJCXVybDogJ2h0dHA6Ly97c30udGlsZXMud21mbGFicy5vcmcvYnctbWFwbmlrL3t6fS97eH0ve3l9LnBuZycKCQkJCX0sCgkJCQlERTogewoJCQkJCXVybDogJ2h0dHA6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLmRlL3RpbGVzL29zbWRlL3t6fS97eH0ve3l9LnBuZycKCQkJCX0sCgkJCQlIT1Q6IHsKCQkJCQl1cmw6ICdodHRwOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5mci9ob3Qve3p9L3t4fS97eX0ucG5nJywKCQkJCQlvcHRpb25zOiB7CgkJCQkJCWF0dHJpYnV0aW9uOiAne2F0dHJpYnV0aW9uLk9wZW5TdHJlZXRNYXB9LCBUaWxlcyBjb3VydGVzeSBvZiA8YSBocmVmPSJodHRwOi8vaG90Lm9wZW5zdHJlZXRtYXAub3JnLyIgdGFyZ2V0PSJfYmxhbmsiPkh1bWFuaXRhcmlhbiBPcGVuU3RyZWV0TWFwIFRlYW08L2E+JwoJCQkJCX0KCQkJCX0KCQkJfQoJCX0sCgkJT3BlblNlYU1hcDogewoJCQl1cmw6ICdodHRwOi8vdGlsZXMub3BlbnNlYW1hcC5vcmcvc2VhbWFyay97en0ve3h9L3t5fS5wbmcnLAoJCQlvcHRpb25zOiB7CgkJCQlhdHRyaWJ1dGlvbjogJ01hcCBkYXRhOiAmY29weTsgPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuc2VhbWFwLm9yZyI+T3BlblNlYU1hcDwvYT4gY29udHJpYnV0b3JzJwoJCQl9CgkJfSwKCQlPcGVuVG9wb01hcDogewoJCQl1cmw6ICcvL3tzfS50aWxlLm9wZW50b3BvbWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLAoJCQlvcHRpb25zOiB7CgkJCQltYXhab29tOiAxNiwKCQkJCWF0dHJpYnV0aW9uOiAnTWFwIGRhdGE6IHthdHRyaWJ1dGlvbi5PcGVuU3RyZWV0TWFwfSwgPGEgaHJlZj0iaHR0cDovL3ZpZXdmaW5kZXJwYW5vcmFtYXMub3JnIj5TUlRNPC9hPiB8IE1hcCBzdHlsZTogJmNvcHk7IDxhIGhyZWY9Imh0dHBzOi8vb3BlbnRvcG9tYXAub3JnIj5PcGVuVG9wb01hcDwvYT4gKDxhIGhyZWY9Imh0dHBzOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS8zLjAvIj5DQy1CWS1TQTwvYT4pJwoJCQl9CgkJfSwKCQlUaHVuZGVyZm9yZXN0OiB7CgkJCXVybDogJy8ve3N9LnRpbGUudGh1bmRlcmZvcmVzdC5jb20ve3ZhcmlhbnR9L3t6fS97eH0ve3l9LnBuZycsCgkJCW9wdGlvbnM6IHsKCQkJCWF0dHJpYnV0aW9uOgoJCQkJCScmY29weTsgPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuY3ljbGVtYXAub3JnIj5PcGVuQ3ljbGVNYXA8L2E+LCB7YXR0cmlidXRpb24uT3BlblN0cmVldE1hcH0nLAoJCQkJdmFyaWFudDogJ2N5Y2xlJwoJCQl9LAoJCQl2YXJpYW50czogewoJCQkJT3BlbkN5Y2xlTWFwOiAnY3ljbGUnLAoJCQkJVHJhbnNwb3J0OiAndHJhbnNwb3J0JywKCQkJCVRyYW5zcG9ydERhcms6ICd0cmFuc3BvcnQtZGFyaycsCgkJCQlMYW5kc2NhcGU6ICdsYW5kc2NhcGUnLAoJCQkJT3V0ZG9vcnM6ICdvdXRkb29ycycKCQkJfQoJCX0sCgkJT3Blbk1hcFN1cmZlcjogewoJCQl1cmw6ICdodHRwOi8vb3Blbm1hcHN1cmZlci51bmktaGQuZGUvdGlsZXMve3ZhcmlhbnR9L3g9e3h9Jnk9e3l9Jno9e3p9JywKCQkJb3B0aW9uczogewoJCQkJbWluWm9vbTogMCwKCQkJCW1heFpvb206IDIwLAoJCQkJdmFyaWFudDogJ3JvYWRzJywKCQkJCWF0dHJpYnV0aW9uOiAnSW1hZ2VyeSBmcm9tIDxhIGhyZWY9Imh0dHA6Ly9naXNjaWVuY2UudW5pLWhkLmRlLyI+R0lTY2llbmNlIFJlc2VhcmNoIEdyb3VwIEAgVW5pdmVyc2l0eSBvZiBIZWlkZWxiZXJnPC9hPiAmbWRhc2g7IE1hcCBkYXRhIHthdHRyaWJ1dGlvbi5PcGVuU3RyZWV0TWFwfScKCQkJfSwKCQkJdmFyaWFudHM6IHsKCQkJCVJvYWRzOiAncm9hZHMnLAoJCQkJQWRtaW5Cb3VuZHM6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICdhZG1pbmInLAoJCQkJCQltYXhab29tOiAxOQoJCQkJCX0KCQkJCX0sCgkJCQlHcmF5c2NhbGU6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICdyb2Fkc2cnLAoJCQkJCQltYXhab29tOiAxOQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0sCgkJSHlkZGE6IHsKCQkJdXJsOiAnaHR0cDovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAuc2UvaHlkZGEve3ZhcmlhbnR9L3t6fS97eH0ve3l9LnBuZycsCgkJCW9wdGlvbnM6IHsKCQkJCW1pblpvb206IDAsCgkJCQltYXhab29tOiAxOCwKCQkJCXZhcmlhbnQ6ICdmdWxsJywKCQkJCWF0dHJpYnV0aW9uOiAnVGlsZXMgY291cnRlc3kgb2YgPGEgaHJlZj0iaHR0cDovL29wZW5zdHJlZXRtYXAuc2UvIiB0YXJnZXQ9Il9ibGFuayI+T3BlblN0cmVldE1hcCBTd2VkZW48L2E+ICZtZGFzaDsgTWFwIGRhdGEge2F0dHJpYnV0aW9uLk9wZW5TdHJlZXRNYXB9JwoJCQl9LAoJCQl2YXJpYW50czogewoJCQkJRnVsbDogJ2Z1bGwnLAoJCQkJQmFzZTogJ2Jhc2UnLAoJCQkJUm9hZHNBbmRMYWJlbHM6ICdyb2Fkc19hbmRfbGFiZWxzJwoJCQl9CgkJfSwKCQlNYXBRdWVzdE9wZW46IHsKCQkJLyogTWFwcXVlc3QgZG9lcyBzdXBwb3J0IGh0dHBzLCBidXQgd2l0aCBhIGRpZmZlcmVudCBzdWJkb21haW46CgkJCSAqIGh0dHBzOi8vb3RpbGV7c30tcy5tcWNkbi5jb20vdGlsZXMvMS4wLjAve3R5cGV9L3t6fS97eH0ve3l9LntleHR9CgkJCSAqIHdoaWNoIG1ha2VzIGltcGxlbWVudGluZyBwcm90b2NvbCByZWxhdGl2aXR5IGltcG9zc2libGUuCgkJCSAqLwoJCQl1cmw6ICdodHRwOi8vb3RpbGV7c30ubXFjZG4uY29tL3RpbGVzLzEuMC4wL3t0eXBlfS97en0ve3h9L3t5fS57ZXh0fScsCgkJCW9wdGlvbnM6IHsKCQkJCXR5cGU6ICdtYXAnLAoJCQkJZXh0OiAnanBnJywKCQkJCWF0dHJpYnV0aW9uOgoJCQkJCSdUaWxlcyBDb3VydGVzeSBvZiA8YSBocmVmPSJodHRwOi8vd3d3Lm1hcHF1ZXN0LmNvbS8iPk1hcFF1ZXN0PC9hPiAmbWRhc2g7ICcgKwoJCQkJCSdNYXAgZGF0YSB7YXR0cmlidXRpb24uT3BlblN0cmVldE1hcH0nLAoJCQkJc3ViZG9tYWluczogJzEyMzQnCgkJCX0sCgkJCXZhcmlhbnRzOiB7CgkJCQlPU006IHt9LAoJCQkJQWVyaWFsOiB7CgkJCQkJb3B0aW9uczogewoJCQkJCQl0eXBlOiAnc2F0JywKCQkJCQkJYXR0cmlidXRpb246CgkJCQkJCQknVGlsZXMgQ291cnRlc3kgb2YgPGEgaHJlZj0iaHR0cDovL3d3dy5tYXBxdWVzdC5jb20vIj5NYXBRdWVzdDwvYT4gJm1kYXNoOyAnICsKCQkJCQkJCSdQb3J0aW9ucyBDb3VydGVzeSBOQVNBL0pQTC1DYWx0ZWNoIGFuZCBVLlMuIERlcGFydC4gb2YgQWdyaWN1bHR1cmUsIEZhcm0gU2VydmljZSBBZ2VuY3knCgkJCQkJfQoJCQkJfSwKCQkJCUh5YnJpZE92ZXJsYXk6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXR5cGU6ICdoeWInLAoJCQkJCQlleHQ6ICdwbmcnLAoJCQkJCQlvcGFjaXR5OiAwLjkKCQkJCQl9CgkJCQl9CgkJCX0KCQl9LAoJCU1hcEJveDogewoJCQl1cmw6IGZ1bmN0aW9uIChpZCkgewoJCQkJcmV0dXJuICcvL3tzfS50aWxlcy5tYXBib3guY29tL3YzLycgKyBpZCArICcve3p9L3t4fS97eX0ucG5nJzsKCQkJfSwKCQkJb3B0aW9uczogewoJCQkJYXR0cmlidXRpb246CgkJCQkJJ0ltYWdlcnkgZnJvbSA8YSBocmVmPSJodHRwOi8vbWFwYm94LmNvbS9hYm91dC9tYXBzLyI+TWFwQm94PC9hPiAmbWRhc2g7ICcgKwoJCQkJCSdNYXAgZGF0YSB7YXR0cmlidXRpb24uT3BlblN0cmVldE1hcH0nLAoJCQkJc3ViZG9tYWluczogJ2FiY2QnCgkJCX0KCQl9LAoJCVN0YW1lbjogewoJCQl1cmw6ICdodHRwOi8ve3N9LnRpbGUuc3RhbWVuLmNvbS97dmFyaWFudH0ve3p9L3t4fS97eX0ue2V4dH0nLAoJCQlvcHRpb25zOiB7CgkJCQlhdHRyaWJ1dGlvbjoKCQkJCQknTWFwIHRpbGVzIGJ5IDxhIGhyZWY9Imh0dHA6Ly9zdGFtZW4uY29tIj5TdGFtZW4gRGVzaWduPC9hPiwgJyArCgkJCQkJJzxhIGhyZWY9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzMuMCI+Q0MgQlkgMy4wPC9hPiAmbWRhc2g7ICcgKwoJCQkJCSdNYXAgZGF0YSB7YXR0cmlidXRpb24uT3BlblN0cmVldE1hcH0nLAoJCQkJc3ViZG9tYWluczogJ2FiY2QnLAoJCQkJbWluWm9vbTogMCwKCQkJCW1heFpvb206IDIwLAoJCQkJdmFyaWFudDogJ3RvbmVyJywKCQkJCWV4dDogJ3BuZycKCQkJfSwKCQkJdmFyaWFudHM6IHsKCQkJCVRvbmVyOiAndG9uZXInLAoJCQkJVG9uZXJCYWNrZ3JvdW5kOiAndG9uZXItYmFja2dyb3VuZCcsCgkJCQlUb25lckh5YnJpZDogJ3RvbmVyLWh5YnJpZCcsCgkJCQlUb25lckxpbmVzOiAndG9uZXItbGluZXMnLAoJCQkJVG9uZXJMYWJlbHM6ICd0b25lci1sYWJlbHMnLAoJCQkJVG9uZXJMaXRlOiAndG9uZXItbGl0ZScsCgkJCQlXYXRlcmNvbG9yOiB7CgkJCQkJb3B0aW9uczogewoJCQkJCQl2YXJpYW50OiAnd2F0ZXJjb2xvcicsCgkJCQkJCW1pblpvb206IDEsCgkJCQkJCW1heFpvb206IDE2CgkJCQkJfQoJCQkJfSwKCQkJCVRlcnJhaW46IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICd0ZXJyYWluJywKCQkJCQkJbWluWm9vbTogNCwKCQkJCQkJbWF4Wm9vbTogMTgsCgkJCQkJCWJvdW5kczogW1syMiwgLTEzMl0sIFs3MCwgLTU2XV0KCQkJCQl9CgkJCQl9LAoJCQkJVGVycmFpbkJhY2tncm91bmQ6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICd0ZXJyYWluLWJhY2tncm91bmQnLAoJCQkJCQltaW5ab29tOiA0LAoJCQkJCQltYXhab29tOiAxOCwKCQkJCQkJYm91bmRzOiBbWzIyLCAtMTMyXSwgWzcwLCAtNTZdXQoJCQkJCX0KCQkJCX0sCgkJCQlUb3BPU01SZWxpZWY6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICd0b3Bvc20tY29sb3ItcmVsaWVmJywKCQkJCQkJZXh0OiAnanBnJywKCQkJCQkJYm91bmRzOiBbWzIyLCAtMTMyXSwgWzUxLCAtNTZdXQoJCQkJCX0KCQkJCX0sCgkJCQlUb3BPU01GZWF0dXJlczogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ3RvcG9zbS1mZWF0dXJlcycsCgkJCQkJCWJvdW5kczogW1syMiwgLTEzMl0sIFs1MSwgLTU2XV0sCgkJCQkJCW9wYWNpdHk6IDAuOQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0sCgkJRXNyaTogewoJCQl1cmw6ICcvL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL3t2YXJpYW50fS9NYXBTZXJ2ZXIvdGlsZS97en0ve3l9L3t4fScsCgkJCW9wdGlvbnM6IHsKCQkJCXZhcmlhbnQ6ICdXb3JsZF9TdHJlZXRfTWFwJywKCQkJCWF0dHJpYnV0aW9uOiAnVGlsZXMgJmNvcHk7IEVzcmknCgkJCX0sCgkJCXZhcmlhbnRzOiB7CgkJCQlXb3JsZFN0cmVldE1hcDogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJYXR0cmlidXRpb246CgkJCQkJCQkne2F0dHJpYnV0aW9uLkVzcml9ICZtZGFzaDsgJyArCgkJCQkJCQknU291cmNlOiBFc3JpLCBEZUxvcm1lLCBOQVZURVEsIFVTR1MsIEludGVybWFwLCBpUEMsIE5SQ0FOLCBFc3JpIEphcGFuLCBNRVRJLCBFc3JpIENoaW5hIChIb25nIEtvbmcpLCBFc3JpIChUaGFpbGFuZCksIFRvbVRvbSwgMjAxMicKCQkJCQl9CgkJCQl9LAoJCQkJRGVMb3JtZTogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ1NwZWNpYWx0eS9EZUxvcm1lX1dvcmxkX0Jhc2VfTWFwJywKCQkJCQkJbWluWm9vbTogMSwKCQkJCQkJbWF4Wm9vbTogMTEsCgkJCQkJCWF0dHJpYnV0aW9uOiAne2F0dHJpYnV0aW9uLkVzcml9ICZtZGFzaDsgQ29weXJpZ2h0OiAmY29weTsyMDEyIERlTG9ybWUnCgkJCQkJfQoJCQkJfSwKCQkJCVdvcmxkVG9wb01hcDogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ1dvcmxkX1RvcG9fTWFwJywKCQkJCQkJYXR0cmlidXRpb246CgkJCQkJCQkne2F0dHJpYnV0aW9uLkVzcml9ICZtZGFzaDsgJyArCgkJCQkJCQknRXNyaSwgRGVMb3JtZSwgTkFWVEVRLCBUb21Ub20sIEludGVybWFwLCBpUEMsIFVTR1MsIEZBTywgTlBTLCBOUkNBTiwgR2VvQmFzZSwgS2FkYXN0ZXIgTkwsIE9yZG5hbmNlIFN1cnZleSwgRXNyaSBKYXBhbiwgTUVUSSwgRXNyaSBDaGluYSAoSG9uZyBLb25nKSwgYW5kIHRoZSBHSVMgVXNlciBDb21tdW5pdHknCgkJCQkJfQoJCQkJfSwKCQkJCVdvcmxkSW1hZ2VyeTogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ1dvcmxkX0ltYWdlcnknLAoJCQkJCQlhdHRyaWJ1dGlvbjoKCQkJCQkJCSd7YXR0cmlidXRpb24uRXNyaX0gJm1kYXNoOyAnICsKCQkJCQkJCSdTb3VyY2U6IEVzcmksIGktY3ViZWQsIFVTREEsIFVTR1MsIEFFWCwgR2VvRXllLCBHZXRtYXBwaW5nLCBBZXJvZ3JpZCwgSUdOLCBJR1AsIFVQUi1FR1AsIGFuZCB0aGUgR0lTIFVzZXIgQ29tbXVuaXR5JwoJCQkJCX0KCQkJCX0sCgkJCQlXb3JsZFRlcnJhaW46IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICdXb3JsZF9UZXJyYWluX0Jhc2UnLAoJCQkJCQltYXhab29tOiAxMywKCQkJCQkJYXR0cmlidXRpb246CgkJCQkJCQkne2F0dHJpYnV0aW9uLkVzcml9ICZtZGFzaDsgJyArCgkJCQkJCQknU291cmNlOiBVU0dTLCBFc3JpLCBUQU5BLCBEZUxvcm1lLCBhbmQgTlBTJwoJCQkJCX0KCQkJCX0sCgkJCQlXb3JsZFNoYWRlZFJlbGllZjogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ1dvcmxkX1NoYWRlZF9SZWxpZWYnLAoJCQkJCQltYXhab29tOiAxMywKCQkJCQkJYXR0cmlidXRpb246ICd7YXR0cmlidXRpb24uRXNyaX0gJm1kYXNoOyBTb3VyY2U6IEVzcmknCgkJCQkJfQoJCQkJfSwKCQkJCVdvcmxkUGh5c2ljYWw6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICdXb3JsZF9QaHlzaWNhbF9NYXAnLAoJCQkJCQltYXhab29tOiA4LAoJCQkJCQlhdHRyaWJ1dGlvbjogJ3thdHRyaWJ1dGlvbi5Fc3JpfSAmbWRhc2g7IFNvdXJjZTogVVMgTmF0aW9uYWwgUGFyayBTZXJ2aWNlJwoJCQkJCX0KCQkJCX0sCgkJCQlPY2VhbkJhc2VtYXA6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICdPY2Vhbl9CYXNlbWFwJywKCQkJCQkJbWF4Wm9vbTogMTMsCgkJCQkJCWF0dHJpYnV0aW9uOiAne2F0dHJpYnV0aW9uLkVzcml9ICZtZGFzaDsgU291cmNlczogR0VCQ08sIE5PQUEsIENIUywgT1NVLCBVTkgsIENTVU1CLCBOYXRpb25hbCBHZW9ncmFwaGljLCBEZUxvcm1lLCBOQVZURVEsIGFuZCBFc3JpJwoJCQkJCX0KCQkJCX0sCgkJCQlOYXRHZW9Xb3JsZE1hcDogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ05hdEdlb19Xb3JsZF9NYXAnLAoJCQkJCQltYXhab29tOiAxNiwKCQkJCQkJYXR0cmlidXRpb246ICd7YXR0cmlidXRpb24uRXNyaX0gJm1kYXNoOyBOYXRpb25hbCBHZW9ncmFwaGljLCBFc3JpLCBEZUxvcm1lLCBOQVZURVEsIFVORVAtV0NNQywgVVNHUywgTkFTQSwgRVNBLCBNRVRJLCBOUkNBTiwgR0VCQ08sIE5PQUEsIGlQQycKCQkJCQl9CgkJCQl9LAoJCQkJV29ybGRHcmF5Q2FudmFzOiB7CgkJCQkJb3B0aW9uczogewoJCQkJCQl2YXJpYW50OiAnQ2FudmFzL1dvcmxkX0xpZ2h0X0dyYXlfQmFzZScsCgkJCQkJCW1heFpvb206IDE2LAoJCQkJCQlhdHRyaWJ1dGlvbjogJ3thdHRyaWJ1dGlvbi5Fc3JpfSAmbWRhc2g7IEVzcmksIERlTG9ybWUsIE5BVlRFUScKCQkJCQl9CgkJCQl9CgkJCX0KCQl9LAoJCU9wZW5XZWF0aGVyTWFwOiB7CgkJCXVybDogJ2h0dHA6Ly97c30udGlsZS5vcGVud2VhdGhlcm1hcC5vcmcvbWFwL3t2YXJpYW50fS97en0ve3h9L3t5fS5wbmcnLAoJCQlvcHRpb25zOiB7CgkJCQlhdHRyaWJ1dGlvbjogJ01hcCBkYXRhICZjb3B5OyA8YSBocmVmPSJodHRwOi8vb3BlbndlYXRoZXJtYXAub3JnIj5PcGVuV2VhdGhlck1hcDwvYT4nLAoJCQkJb3BhY2l0eTogMC41CgkJCX0sCgkJCXZhcmlhbnRzOiB7CgkJCQlDbG91ZHM6ICdjbG91ZHMnLAoJCQkJQ2xvdWRzQ2xhc3NpYzogJ2Nsb3Vkc19jbHMnLAoJCQkJUHJlY2lwaXRhdGlvbjogJ3ByZWNpcGl0YXRpb24nLAoJCQkJUHJlY2lwaXRhdGlvbkNsYXNzaWM6ICdwcmVjaXBpdGF0aW9uX2NscycsCgkJCQlSYWluOiAncmFpbicsCgkJCQlSYWluQ2xhc3NpYzogJ3JhaW5fY2xzJywKCQkJCVByZXNzdXJlOiAncHJlc3N1cmUnLAoJCQkJUHJlc3N1cmVDb250b3VyOiAncHJlc3N1cmVfY250cicsCgkJCQlXaW5kOiAnd2luZCcsCgkJCQlUZW1wZXJhdHVyZTogJ3RlbXAnLAoJCQkJU25vdzogJ3Nub3cnCgkJCX0KCQl9LAoJCUhFUkU6IHsKCQkJLyoKCQkJICogSEVSRSBtYXBzLCBmb3JtZXJseSBOb2tpYSBtYXBzLgoJCQkgKiBUaGVzZSBiYXNlbWFwcyBhcmUgZnJlZSwgYnV0IHlvdSBuZWVkIGFuIEFQSSBrZXkuIFBsZWFzZSBzaWduIHVwIGF0CgkJCSAqIGh0dHA6Ly9kZXZlbG9wZXIuaGVyZS5jb20vZ2V0dGluZy1zdGFydGVkCgkJCSAqCgkJCSAqIE5vdGUgdGhhdCB0aGUgYmFzZSB1cmxzIGNvbnRhaW4gJy5jaXQnIHdoaWNocyBpcyBIRVJFJ3MKCQkJICogJ0N1c3RvbWVyIEludGVncmF0aW9uIFRlc3RpbmcnIGVudmlyb25tZW50LiBQbGVhc2UgcmVtb3ZlIGZvciBwcm9kdWN0aW9uCgkJCSAqIGVudmlyaW9ubWVudHMuCgkJCSAqLwoJCQl1cmw6CgkJCQknLy97c30ue2Jhc2V9Lm1hcHMuY2l0LmFwaS5oZXJlLmNvbS9tYXB0aWxlLzIuMS8nICsKCQkJCSdtYXB0aWxlL3ttYXBJRH0ve3ZhcmlhbnR9L3t6fS97eH0ve3l9LzI1Ni9wbmc4PycgKwoJCQkJJ2FwcF9pZD17YXBwX2lkfSZhcHBfY29kZT17YXBwX2NvZGV9JywKCQkJb3B0aW9uczogewoJCQkJYXR0cmlidXRpb246CgkJCQkJJ01hcCAmY29weTsgMTk4Ny0yMDE0IDxhIGhyZWY9Imh0dHA6Ly9kZXZlbG9wZXIuaGVyZS5jb20iPkhFUkU8L2E+JywKCQkJCXN1YmRvbWFpbnM6ICcxMjM0JywKCQkJCW1hcElEOiAnbmV3ZXN0JywKCQkJCSdhcHBfaWQnOiAnPGluc2VydCB5b3VyIGFwcF9pZCBoZXJlPicsCgkJCQknYXBwX2NvZGUnOiAnPGluc2VydCB5b3VyIGFwcF9jb2RlIGhlcmU+JywKCQkJCWJhc2U6ICdiYXNlJywKCQkJCXZhcmlhbnQ6ICdub3JtYWwuZGF5JywKCQkJCW1pblpvb206IDAsCgkJCQltYXhab29tOiAyMAoJCQl9LAoJCQl2YXJpYW50czogewoJCQkJbm9ybWFsRGF5OiAnbm9ybWFsLmRheScsCgkJCQlub3JtYWxEYXlDdXN0b206ICdub3JtYWwuZGF5LmN1c3RvbScsCgkJCQlub3JtYWxEYXlHcmV5OiAnbm9ybWFsLmRheS5ncmV5JywKCQkJCW5vcm1hbERheU1vYmlsZTogJ25vcm1hbC5kYXkubW9iaWxlJywKCQkJCW5vcm1hbERheUdyZXlNb2JpbGU6ICdub3JtYWwuZGF5LmdyZXkubW9iaWxlJywKCQkJCW5vcm1hbERheVRyYW5zaXQ6ICdub3JtYWwuZGF5LnRyYW5zaXQnLAoJCQkJbm9ybWFsRGF5VHJhbnNpdE1vYmlsZTogJ25vcm1hbC5kYXkudHJhbnNpdC5tb2JpbGUnLAoJCQkJbm9ybWFsTmlnaHQ6ICdub3JtYWwubmlnaHQnLAoJCQkJbm9ybWFsTmlnaHRNb2JpbGU6ICdub3JtYWwubmlnaHQubW9iaWxlJywKCQkJCW5vcm1hbE5pZ2h0R3JleTogJ25vcm1hbC5uaWdodC5ncmV5JywKCQkJCW5vcm1hbE5pZ2h0R3JleU1vYmlsZTogJ25vcm1hbC5uaWdodC5ncmV5Lm1vYmlsZScsCgoJCQkJY2FybmF2RGF5R3JleTogJ2Nhcm5hdi5kYXkuZ3JleScsCgkJCQloeWJyaWREYXk6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCWJhc2U6ICdhZXJpYWwnLAoJCQkJCQl2YXJpYW50OiAnaHlicmlkLmRheScKCQkJCQl9CgkJCQl9LAoJCQkJaHlicmlkRGF5TW9iaWxlOiB7CgkJCQkJb3B0aW9uczogewoJCQkJCQliYXNlOiAnYWVyaWFsJywKCQkJCQkJdmFyaWFudDogJ2h5YnJpZC5kYXkubW9iaWxlJwoJCQkJCX0KCQkJCX0sCgkJCQlwZWRlc3RyaWFuRGF5OiAncGVkZXN0cmlhbi5kYXknLAoJCQkJcGVkZXN0cmlhbk5pZ2h0OiAncGVkZXN0cmlhbi5uaWdodCcsCgkJCQlzYXRlbGxpdGVEYXk6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCWJhc2U6ICdhZXJpYWwnLAoJCQkJCQl2YXJpYW50OiAnc2F0ZWxsaXRlLmRheScKCQkJCQl9CgkJCQl9LAoJCQkJdGVycmFpbkRheTogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJYmFzZTogJ2FlcmlhbCcsCgkJCQkJCXZhcmlhbnQ6ICd0ZXJyYWluLmRheScKCQkJCQl9CgkJCQl9LAoJCQkJdGVycmFpbkRheU1vYmlsZTogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJYmFzZTogJ2FlcmlhbCcsCgkJCQkJCXZhcmlhbnQ6ICd0ZXJyYWluLmRheS5tb2JpbGUnCgkJCQkJfQoJCQkJfQoJCQl9CgkJfSwKCQlBY2V0YXRlOiB7CgkJCXVybDogJ2h0dHA6Ly9he3N9LmFjZXRhdGUuZ2VvaXEuY29tL3RpbGVzL3t2YXJpYW50fS97en0ve3h9L3t5fS5wbmcnLAoJCQlvcHRpb25zOiB7CgkJCQlhdHRyaWJ1dGlvbjoKCQkJCQknJmNvcHk7MjAxMiBFc3JpICYgU3RhbWVuLCBEYXRhIGZyb20gT1NNIGFuZCBOYXR1cmFsIEVhcnRoJywKCQkJCXN1YmRvbWFpbnM6ICcwMTIzJywKCQkJCW1pblpvb206IDIsCgkJCQltYXhab29tOiAxOCwKCQkJCXZhcmlhbnQ6ICdhY2V0YXRlLWJhc2UnCgkJCX0sCgkJCXZhcmlhbnRzOiB7CgkJCQliYXNlbWFwOiAnYWNldGF0ZS1iYXNlJywKCQkJCXRlcnJhaW46ICd0ZXJyYWluJywKCQkJCWFsbDogJ2FjZXRhdGUtaGlsbHNoYWRpbmcnLAoJCQkJZm9yZWdyb3VuZDogJ2FjZXRhdGUtZmcnLAoJCQkJcm9hZHM6ICdhY2V0YXRlLXJvYWRzJywKCQkJCWxhYmVsczogJ2FjZXRhdGUtbGFiZWxzJywKCQkJCWhpbGxzaGFkaW5nOiAnaGlsbHNoYWRpbmcnCgkJCX0KCQl9LAoJCUZyZWVNYXBTSzogewoJCQl1cmw6ICdodHRwOi8ve3N9LmZyZWVtYXAuc2svVC97en0ve3h9L3t5fS5qcGVnJywKCQkJb3B0aW9uczogewoJCQkJbWluWm9vbTogOCwKCQkJCW1heFpvb206IDE2LAoJCQkJc3ViZG9tYWluczogWyd0MScsICd0MicsICd0MycsICd0NCddLAoJCQkJYXR0cmlidXRpb246CgkJCQkJJ3thdHRyaWJ1dGlvbi5PcGVuU3RyZWV0TWFwfSwgdml6dWFsaXphdGlvbiBDQy1CeS1TQSAyLjAgPGEgaHJlZj0iaHR0cDovL2ZyZWVtYXAuc2siPkZyZWVtYXAuc2s8L2E+JwoJCQl9CgkJfSwKCQlNdGJNYXA6IHsKCQkJdXJsOiAnaHR0cDovL3RpbGUubXRibWFwLmN6L210Ym1hcF90aWxlcy97en0ve3h9L3t5fS5wbmcnLAoJCQlvcHRpb25zOiB7CgkJCQlhdHRyaWJ1dGlvbjoKCQkJCQkne2F0dHJpYnV0aW9uLk9wZW5TdHJlZXRNYXB9ICZhbXA7IFVTR1MnCgkJCX0KCQl9LAoJCUNhcnRvREI6IHsKCQkJdXJsOiAnaHR0cDovL3tzfS5iYXNlbWFwcy5jYXJ0b2Nkbi5jb20ve3ZhcmlhbnR9L3t6fS97eH0ve3l9LnBuZycsCgkJCW9wdGlvbnM6IHsKCQkJCWF0dHJpYnV0aW9uOiAne2F0dHJpYnV0aW9uLk9wZW5TdHJlZXRNYXB9ICZjb3B5OyA8YSBocmVmPSJodHRwOi8vY2FydG9kYi5jb20vYXR0cmlidXRpb25zIj5DYXJ0b0RCPC9hPicsCgkJCQlzdWJkb21haW5zOiAnYWJjZCcsCgkJCQltaW5ab29tOiAwLAoJCQkJbWF4Wm9vbTogMTgsCgkJCQl2YXJpYW50OiAnbGlnaHRfYWxsJwoJCQl9LAoJCQl2YXJpYW50czogewoJCQkJUG9zaXRyb246ICdsaWdodF9hbGwnLAoJCQkJUG9zaXRyb25Ob0xhYmVsczogJ2xpZ2h0X25vbGFiZWxzJywKCQkJCURhcmtNYXR0ZXI6ICdkYXJrX2FsbCcsCgkJCQlEYXJrTWF0dGVyTm9MYWJlbHM6ICdkYXJrX25vbGFiZWxzJwoJCQl9CgkJfSwKCQlIaWtlQmlrZTogewoJCQl1cmw6ICdodHRwOi8ve3N9LnRpbGVzLndtZmxhYnMub3JnL2hpa2ViaWtlL3t6fS97eH0ve3l9LnBuZycsCgkJCW9wdGlvbnM6IHsKCQkJCWF0dHJpYnV0aW9uOiAne2F0dHJpYnV0aW9uLk9wZW5TdHJlZXRNYXB9JwoJCQl9CgkJfSwKCQlCYXNlbWFwQVQ6IHsKCQkJdXJsOiAnLy9tYXBze3N9LndpZW4uZ3YuYXQvYmFzZW1hcC97dmFyaWFudH0vbm9ybWFsL2dvb2dsZTM4NTcve3p9L3t5fS97eH0ue2Zvcm1hdH0nLAoJCQlvcHRpb25zOiB7CgkJCQlhdHRyaWJ1dGlvbjogJ0RhdGVucXVlbGxlOiA8YSBocmVmPSJ3d3cuYmFzZW1hcC5hdCI+YmFzZW1hcC5hdDwvYT4nLAoJCQkJc3ViZG9tYWluczogWycnLCAnMScsICcyJywgJzMnLCAnNCddLAoJCQkJYm91bmRzOiBbWzQ2LjM1ODc3MCwgOC43ODIzNzldLCBbNDkuMDM3ODcyLCAxNy4xODk1MzJdXQoJCQl9LAoJCQl2YXJpYW50czogewoJCQkJYmFzZW1hcDogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ2dlb2xhbmRiYXNlbWFwJywKCQkJCQkJZm9ybWF0OiAnanBlZycKCQkJCQl9CgkJCQl9LAoJCQkJaGlnaGRwaTogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ2JtYXBoaWRwaScsCgkJCQkJCWZvcm1hdDogJ2pwZWcnCgkJCQkJfQoJCQkJfSwKCQkJCWdyYXU6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICdibWFwZ3JhdScsCgkJCQkJCWZvcm1hdDogJ3BuZycKCQkJCQl9CgkJCQl9LAoJCQkJb3ZlcmxheTogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ2JtYXBvdmVybGF5JywKCQkJCQkJZm9ybWF0OiAncG5nJwoJCQkJCX0KCQkJCX0sCgkJCQlvcnRob2ZvdG86IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICdibWFwb3J0aG9mb3RvMzBjbScsCgkJCQkJCWZvcm1hdDogJ2pwZWcnCgkJCQkJfQoJCQkJfQoJCQl9CgkJfSwKCQlOQVNBR0lCUzogewoJCQl1cmw6ICcvL21hcDEudmlzLmVhcnRoZGF0YS5uYXNhLmdvdi93bXRzLXdlYm1lcmMve3ZhcmlhbnR9L2RlZmF1bHQve3RpbWV9L3t0aWxlbWF0cml4c2V0fXttYXhab29tfS97en0ve3l9L3t4fS57Zm9ybWF0fScsCgkJCW9wdGlvbnM6IHsKCQkJCWF0dHJpYnV0aW9uOgoJCQkJCSdJbWFnZXJ5IHByb3ZpZGVkIGJ5IHNlcnZpY2VzIGZyb20gdGhlIEdsb2JhbCBJbWFnZXJ5IEJyb3dzZSBTZXJ2aWNlcyAoR0lCUyksIG9wZXJhdGVkIGJ5IHRoZSBOQVNBL0dTRkMvRWFydGggU2NpZW5jZSBEYXRhIGFuZCBJbmZvcm1hdGlvbiBTeXN0ZW0gJyArCgkJCQkJJyg8YSBocmVmPSJodHRwczovL2VhcnRoZGF0YS5uYXNhLmdvdiI+RVNESVM8L2E+KSB3aXRoIGZ1bmRpbmcgcHJvdmlkZWQgYnkgTkFTQS9IUS4nLAoJCQkJYm91bmRzOiBbWy04NS4wNTExMjg3Nzc2LCAtMTc5Ljk5OTk5OTk3NV0sIFs4NS4wNTExMjg3Nzc2LCAxNzkuOTk5OTk5OTc1XV0sCgkJCQltaW5ab29tOiAxLAoJCQkJbWF4Wm9vbTogOSwKCQkJCWZvcm1hdDogJ2pwZycsCgkJCQl0aW1lOiAnJywKCQkJCXRpbGVtYXRyaXhzZXQ6ICdHb29nbGVNYXBzQ29tcGF0aWJsZV9MZXZlbCcKCQkJfSwKCQkJdmFyaWFudHM6IHsKCQkJCU1vZGlzVGVycmFUcnVlQ29sb3JDUjogJ01PRElTX1RlcnJhX0NvcnJlY3RlZFJlZmxlY3RhbmNlX1RydWVDb2xvcicsCgkJCQlNb2Rpc1RlcnJhQmFuZHMzNjdDUjogJ01PRElTX1RlcnJhX0NvcnJlY3RlZFJlZmxlY3RhbmNlX0JhbmRzMzY3JywKCQkJCVZpaXJzRWFydGhBdE5pZ2h0MjAxMjogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ1ZJSVJTX0NpdHlMaWdodHNfMjAxMicsCgkJCQkJCW1heFpvb206IDgKCQkJCQl9CgkJCQl9LAoJCQkJTW9kaXNUZXJyYUxTVERheTogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ01PRElTX1RlcnJhX0xhbmRfU3VyZmFjZV9UZW1wX0RheScsCgkJCQkJCWZvcm1hdDogJ3BuZycsCgkJCQkJCW1heFpvb206IDcsCgkJCQkJCW9wYWNpdHk6IDAuNzUKCQkJCQl9CgkJCQl9LAoJCQkJTW9kaXNUZXJyYVNub3dDb3ZlcjogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ01PRElTX1RlcnJhX1Nub3dfQ292ZXInLAoJCQkJCQlmb3JtYXQ6ICdwbmcnLAoJCQkJCQltYXhab29tOiA4LAoJCQkJCQlvcGFjaXR5OiAwLjc1CgkJCQkJfQoJCQkJfSwKCQkJCU1vZGlzVGVycmFBT0Q6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICdNT0RJU19UZXJyYV9BZXJvc29sJywKCQkJCQkJZm9ybWF0OiAncG5nJywKCQkJCQkJbWF4Wm9vbTogNiwKCQkJCQkJb3BhY2l0eTogMC43NQoJCQkJCX0KCQkJCX0sCgkJCQlNb2Rpc1RlcnJhQ2hsb3JvcGh5bGw6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICdNT0RJU19UZXJyYV9DaGxvcm9waHlsbF9BJywKCQkJCQkJZm9ybWF0OiAncG5nJywKCQkJCQkJbWF4Wm9vbTogNywKCQkJCQkJb3BhY2l0eTogMC43NQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCX07CgoJTC50aWxlTGF5ZXIucHJvdmlkZXIgPSBmdW5jdGlvbiAocHJvdmlkZXIsIG9wdGlvbnMpIHsKCQlyZXR1cm4gbmV3IEwuVGlsZUxheWVyLlByb3ZpZGVyKHByb3ZpZGVyLCBvcHRpb25zKTsKCX07Cn0oKSk7Cg=="></script>
<script src="data:application/x-javascript;base64,TGVhZmxldFdpZGdldC5tZXRob2RzLmFkZFByb3ZpZGVyVGlsZXMgPSBmdW5jdGlvbihwcm92aWRlciwgbGF5ZXJJZCwgZ3JvdXAsIG9wdGlvbnMpIHsKICB0aGlzLmxheWVyTWFuYWdlci5hZGRMYXllcihMLnRpbGVMYXllci5wcm92aWRlcihwcm92aWRlciwgb3B0aW9ucyksICJ0aWxlIiwgbGF5ZXJJZCwgZ3JvdXApOwp9Owo="></script>
</head>
<body style="opacity: 0">
<slides class="layout-widescreen">
<slide class="title-slide segue nobackground">
<!-- The content of this hgroup is replaced programmatically through the slide_config.json. -->
<hgroup class="auto-fadein">
<h1 data-config-title><!-- populated from slide_config.json --></h1>
<h2 data-config-subtitle><!-- populated from slide_config.json --></h2>
<p data-config-presenter><!-- populated from slide_config.json --></p>
<p style="margin-top: 6px; margin-left: -2px;">WS 2016/2017</p>
</hgroup>
</slide>
<slide class='segue dark nobackground level1'><hgroup class = 'auto-fadein'><h2>Prerequisites</h2></hgroup><article id="prerequisites" class="smaller ">
</article></slide><slide class=''><hgroup><h2>setwd, library, data</h2></hgroup><article id="setwd-library-data" class="smaller build">
<pre class = 'prettyprint lang-r'>setwd("YOUR-PATH")</pre>
<pre class = 'prettyprint lang-r'>raw_data <- read.table(file = "data/FS_UTM.csv",
header = TRUE,
sep = ";",
stringsAsFactors = FALSE,
quote = "")</pre>
</article></slide><slide class=''><hgroup><h2>4a. Check data structure</h2></hgroup><article id="a.-check-data-structure" class="smaller build">
<p>Do you remember the "4" issue from the previous session?! Let's check it again and solve the problem. I use a <code>(s)apply</code> way. You can chose the method you prefer.</p>
<p>First, let's check which columns have problems</p>
<pre class = 'prettyprint lang-r'>#str(raw_data)
#sapply(raw_data[,4:20], function(x){x[x>1]})
apply(X=raw_data[,4:20], MARGIN = 2, FUN=function(x){x[x>1]})</pre>
<pre >## $settlement
## [1] 4
##
## $open.settlement
## integer(0)
##
## $cave.settlement
## integer(0)
##
## $tell.settlement
## integer(0)
##
## $mound
## integer(0)
##
## $fortification
## integer(0)
##
## $court
## integer(0)
##
## $depot
## integer(0)
##
## $cult.complex
## integer(0)
##
## $mine
## integer(0)
##
## $chruch
## integer(0)
##
## $temple
## integer(0)
##
## $villa.rustica
## integer(0)
##
## $monastery
## integer(0)
##
## $cemetery
## integer(0)
##
## $necropolis
## integer(0)
##
## $tumulus
## integer(0)</pre>
</article></slide><slide class=''><hgroup><h2>4a. Check data structure</h2></hgroup><article id="a.-check-data-structure-1" class="smaller build">
<p>Now, let's solve the problem and check again</p>
<pre class = 'prettyprint lang-r'>raw_data$settlement[raw_data$settlement > 1] <- 1
sapply(raw_data[,4:20], function(x){x[x>1]})</pre>
<pre >## $settlement
## numeric(0)
##
## $open.settlement
## integer(0)
##
## $cave.settlement
## integer(0)
##
## $tell.settlement
## integer(0)
##
## $mound
## integer(0)
##
## $fortification
## integer(0)
##
## $court
## integer(0)
##
## $depot
## integer(0)
##
## $cult.complex
## integer(0)
##
## $mine
## integer(0)
##
## $chruch
## integer(0)
##
## $temple
## integer(0)
##
## $villa.rustica
## integer(0)
##
## $monastery
## integer(0)
##
## $cemetery
## integer(0)
##
## $necropolis
## integer(0)
##
## $tumulus
## integer(0)</pre>
</article></slide><slide class=''><hgroup><h2>4b. Check data structure</h2></hgroup><article id="b.-check-data-structure" class="smaller build">
<p>So, now it's time to have a look at the coordinates…</p>
<pre class = 'prettyprint lang-r'>#str(raw_data)
raw_data[c(1:6),c(2,35,36)]</pre>
<pre >## Site.Name xUTM yUTM
## 1 Beba Veche - in the ditch 443157.0 5105906
## 2 Dudestii Vechi - Dragomirs' hill 459881.7 5095991
## 3 Nerau - Hunca Mare 462115.2 5088415
## 4 Nerau - Dogans' hill 466750.8 5089685
## 5 Cenad - Habitation Area 467929.9 5109462
## 6 Nerau - The south canal 468829.2 5092020</pre>
<p><strong>Question:</strong> Is there another way to create this overview?</p>
</article></slide><slide class=''><hgroup><h2>4b. Check data structure</h2></hgroup><article id="b.-check-data-structure-1" class="smaller ">
<p>Yes.</p>
<pre class = 'prettyprint lang-r'>#str(raw_data)
head(raw_data[,c(2,35,36)])</pre>
<pre >## Site.Name xUTM yUTM
## 1 Beba Veche - in the ditch 443157.0 5105906
## 2 Dudestii Vechi - Dragomirs' hill 459881.7 5095991
## 3 Nerau - Hunca Mare 462115.2 5088415
## 4 Nerau - Dogans' hill 466750.8 5089685
## 5 Cenad - Habitation Area 467929.9 5109462
## 6 Nerau - The south canal 468829.2 5092020</pre>
</article></slide><slide class='segue dark nobackground level1'><hgroup class = 'auto-fadein'><h2>Create a spatial object</h2></hgroup><article id="create-a-spatial-object" class="smaller ">
</article></slide><slide class=''><hgroup><h2>Some useful references</h2></hgroup><article id="some-useful-references" class="smaller ">
<ul class = 'build'>
<li>THE book that covers a broad range of topics:</li>
<li>Bivand, Roger S., Edzer J. Pebesma, and Virgilio Gómez-Rubio. 2008. Applied Spatial Data Analysis with R. New York: Springer.</li>
<li>Useful tutorial-like introduction in the handling and plotting of spatial data</li>
<li>Lovelace, Robin, and James Cheshire. 2015. “Introduction to Visualising Spatial Data in R.” <a href='https://github.com/Robinlovelace/Creating-maps-in-R/raw/master/intro-spatial-rl.pdf' title=''>link</a>.</li>
</ul>
</article></slide><slide class=''><hgroup><h2>Spatial data libraries</h2></hgroup><article id="spatial-data-libraries" class="smaller ">
<pre class = 'prettyprint lang-r'>library(sp)
library(rgdal)</pre>
<ul class = 'build'>
<li>sp: Classes and Methods for Spatial Data</li>
<li><a href='https://cran.r-project.org/web/packages/sp/index.html' title=''>https://cran.r-project.org/web/packages/sp/index.html</a></li>
<li>rgdal: Bindings for the Geospatial Data Abstraction Library</li>
<li>based on GDAL "Swiss Army Knife for Geospatial Data" -> <a href='https://gdal.org' title=''>https://gdal.org</a></li>
<li><a href='https://cran.r-project.org/web/packages/rgdal/index.html' title=''>https://cran.r-project.org/web/packages/rgdal/index.html</a></li>
</ul>
</article></slide><slide class=''><hgroup><h2>Create spatial object</h2></hgroup><article id="create-spatial-object" class="smaller ">
<p>As always there are numerous ways to accomplish this. See <a href='https://cran.r-project.org/web/packages/sp/vignettes/intro_sp.pdf' title=''>https://cran.r-project.org/web/packages/sp/vignettes/intro_sp.pdf</a></p>
<p>There are some things we need to know in advance:</p>
<ol class = 'build'>
<li>What kind of spatial data do we have?</li>
<li>What are the coordinates?</li>
<li>What is the reference system?</li>
</ol>
<ul>
<li>Your best friend: <a href='https://www.epsg.io' title=''>https://www.epsg.io</a></li>
</ul>
</article></slide><slide class=''><hgroup><h2>Create spatial data</h2></hgroup><article id="create-spatial-data" class="smaller ">
<pre class = 'prettyprint lang-r'>sites <- SpatialPointsDataFrame(coords = cbind(raw_data$xUTM,raw_data$yUTM),
data = data.frame(raw_data[,2]),
proj4string = CRS("+init=epsg:32634")
)
class(sites)</pre>
<pre >## [1] "SpatialPointsDataFrame"
## attr(,"package")
## [1] "sp"</pre>
<p><strong>Exercise:</strong> Find other ways to create a spatial data object.</p>
</article></slide><slide class=''><hgroup><h2>Create spatial data</h2></hgroup><article id="create-spatial-data-1" class="smaller build">
<pre class = 'prettyprint lang-r'>sites <- raw_data
coordinates(sites) <- ~xUTM+yUTM
class(sites)</pre>
<pre >## [1] "SpatialPointsDataFrame"
## attr(,"package")
## [1] "sp"</pre>
<p><strong>Exercise:</strong> Check the <code>str</code>ucture of the <code>sites</code> object. What is missing?</p>
<pre class = 'prettyprint lang-r'>is.projected(sites)</pre>
<pre >## [1] NA</pre>
<pre class = 'prettyprint lang-r'>proj4string(sites) <- CRS("+init=epsg:32634")
is.projected(sites)</pre>
<pre >## [1] TRUE</pre>
</article></slide><slide class=''><hgroup><h2>Plot it</h2></hgroup><article id="plot-it" class="smaller ">
<pre class = 'prettyprint lang-r'>plot(sites)</pre>
<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA8AAAAJACAMAAAB1z//FAAADAFBMVEUAAAABAQECAgIDAwMEBAQFBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERESEhITExMUFBQVFRUWFhYXFxcYGBgZGRkaGhobGxscHBwdHR0eHh4fHx8gICAhISEiIiIjIyMkJCQlJSUmJiYnJycoKCgpKSkqKiorKyssLCwtLS0uLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk6Ojo7Ozs8PDw9PT0+Pj4/Pz9AQEBBQUFCQkJDQ0NERERFRUVGRkZHR0dISEhJSUlKSkpLS0tMTExNTU1OTk5PT09QUFBRUVFSUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1eXl5fX19gYGBhYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxtbW1ubm5vb29wcHBxcXFycnJzc3N0dHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/f3+AgICBgYGCgoKDg4OEhISFhYWGhoaHh4eIiIiJiYmKioqLi4uMjIyNjY2Ojo6Pj4+QkJCRkZGSkpKTk5OUlJSVlZWWlpaXl5eYmJiZmZmampqbm5ucnJydnZ2enp6fn5+goKChoaGioqKjo6OkpKSlpaWmpqanp6eoqKipqamqqqqrq6usrKytra2urq6vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3t7e4uLi5ubm6urq7u7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnKysrLy8vMzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7////isF19AAAACXBIWXMAAB2HAAAdhwGP5fFlAAAgAElEQVR4nO3dB3wUZf7H8d/upvcNJYSeUEMTiCAdkRC6KBKKoNgICOIJJ8TGqWABUU9ORYO9H7GcnKJ/jQU9Gxrb6amosSsoGBBEpGX+z/PMzGY3eWZ7svsk3/edyWSzZZbXfrIzszPPkAYAyqJIzwAABA8BAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAEDKAwBAygMAQMoDAFDANaW7Iz0LIAHBAwB6ErbIj0L4AEBQwAQcLRBwBAABBxtEDAEAAFHGwQMAUDA0QYBQwAQcLRBwODTJ2WmbFpnTr4S6bkCDgGDL9WpJPNypOcLNAQMfriqyJRK48zJs3ZHerZAQ8AQEKwDRxsEDAFAwNEGAUMAEHC0QcAQAAQcbRAwBAABRxsEDAFAwNEGAUMAEHC0QcAQAAQcbRAwBKArfR7pWQAPCBh8cRtFZ8UJf0ZuPkACATcB3815h3/b1OP9YG79gv368M4OhBECbgJuo8X823l0SzC3vp3mh3d2IIwQcBNwCy3i386jm4O5NQKOZgi4CUDAjRcCbgIQcOOFgJsABNx4IeAmAAE3Xgi4CUDAjRcCbgIQcOOFgBu7tx9BwI0YAm60vrmkhEujtpmU2pFJo8yOHY8r4Ma+7uvWjzZ3GpIo3px0Xt4A8w2BQMCN1jLpYLCGy3zdeoNNdrMFDTHjEAAErJrqH/y84va1q7lmVDSEepzD9KAh55xzVzn30kGfN/+tynAjnWFOVoU261bKMUJt0BCwaq6mzQFdvwt9HuXrwC/S2fX7AI0ZAlbNArotoOtHT8D7bt4pvfwxOiU8D9AUIWDVqBvwLRZr3gg4BAhYNeoGvJYulF6OgEOAgFWDgMENAlYNAgY3CFg1/gW8zf2UvmfTWD41riEDPnKgzkUIuB4g4Mja8aaXXx6qG4GfAR+Vn9L3gmBmMbiAJzb7rfZFCLgeIOBI+rajjR4xpqsvuVPTruru/knL8Jbvb/31aK3b+PcOfKXrlL4pND6fuvCpbsG9A2+iy4O4VSf6svZFPgKuwO4cQUDAkfQQe1dcaEzvoHaaNoz+4/brLGpvt00Y7LnfchDrwNsXf8Sndt77R1Bz+fHhIG7kO+DvKg230jj29WmawL5i1NoAIeBIepAFfK4x/SO1rhuwk6gtrWCTF8qWiB33+fEYXSIzFrvPgO+VLuSPbcBZbBQQcCT5H7D0yISY+/14jEgHvP+F8vInJuVdV15eTEXlpj3aGz1zDVmUzL5mU2JubreVkZhXlSHgSPIz4H/YJmhDzA6DWIQOy7wGyBWwdNmBZrtdVV8HfpFOiMR8qg4BR8qRp/ZqK/0LeDq1rupDb9wjDgZSLeDXJp4wujmRraCgC2VRc3E4csF49wMyEHAIEHCkPEzLWYx+Bpyd6KAl9Dd+oWoBa1r3vIlEdr4OPE26jouAQ4CAI+U2WuB/wFnsijNpGb9QuYBfJRsLmI4g4PqAgCOlyQS8gogHfAgB1wcEHAkHKysrV9GplafyzTnGp6FveAb8wHuBBVycd4P8sbrQF/XyHGSqC1yjZ9kp3ZiKQ8D1CAE3vM97ScebInvnzgnUtlOC3W6PcRClpNmJXdFO8bH8u4+A7dRW/miXjGq4nSOOdpY+MW8B7zB35HiQBrOvz1z1RWXlN8HsOdJEIeCGd538Ve6Ljbpt0SwDtvE38Foaftn5kGv0rBx615ga4y3gzdK/ZcMafMaVhYAbyOzFrsk/Hrtx4cKFI6nnwp7sxdqiX79enZmelDhjRnMaPaPopDZ2i4bP0gIJ+L4A15bDqmYdeIK3gN/L89iRIzeRstnXRQ09t+pCwA1jP6XUusTbRqy9H59H8WvWpFICUTL1y6UkdsUuNPhf5eXlZ7mfprvq/HeMKUnAV9Gl9fBM/MQCPrBqxEAmnSiDzf7Age0ok9IHTX6r9lU/SVmtmevAx9PLDT6rSkPADeN3Sq51ifet0DdS6hXxVgvTz7vu5GE6w5iKwoCHyefefpkY7rb20PIIOCgIuGGYAVf/t6Li1vZtmAxKbpPMXs/Jbdq0zWGLjctrBzxW+vJ39O8/5J/l+4y7vZ9OM6aiMOClVmsCQrdaN0DAQUHADeN3ShLfV1u+oCfXDvjQ1nTLK59u3K0s4OrNv7Kv+yIccA7/GCkpkXGQ2IgewzgoY+iISeKMLyXP17pBTcA/RWJ+VYWAQ1X9rD/nK/id6AP+vXxAfn5+n15Ma8rslcle2Jls+qrKyu+/qx2wpjkt8j1mzCbjbiUB/5xF8zTtspgKj4C33VMdnqfrr1bW773yz6VdAZe6xjgA3xBwqJ7xa8QZFvDTnpf4XAfmO3KwhdAk6tmOb8xius/glrxR06Ik4OeJijRtOm30CHgcbQ3q2QUtTR5vTknJzfI/Ja6AL6ZrGnZWlYaAQ/UIzfTjWn4GfAz9XT9edgEllZeLd+AWtFjfE4v0HTncHR5LKcZBtWztWJ/IJsqvG/BI2hLCcwyCxdKD9QH7CDgoCDhU4Qz4eumLPsYy4O/lu3TZDkQ+4F72kfqRgwXNidj/aTSb7GcR8JdlZWV/o17sa0+6/GSaJYbTfPpIw86xmhBwqEIJ+Dz2wjbfbviYWKXSHptbBqytoC7FOhsl6RMTiEZEwTvwzs/MKdeOHJr2fxYBd5U+74caal5VhoBD5S3gPxebY0OeTDTMnF4uBprkAd9Jg642PxESo1J+eJ+x/+HVlFJV9eVmslF3WmkdsGQdeIH0PTmnoQOu4UfApexfZUIMHzqzBR3fnXqLf6bT/T2PapOGgEPlLeBt0kVcxy7+u9tYe/e5Pg+qTWzE0j6nnGe+v3Fn7YB3Xr/aMJ36G1M2aqH/cpHsIRNzozpgQQyZydaBJxL2pPQfAg6V10XoV83zIzxAdJGYaE+z3ha/uo3oOd8BdzqLvReZW6G7GW/hvaRLnHH6LZ/jW6G/OIUtQg93O0CvwReha/gbsMAC7ksna783xIw1Cgg4VAGsA++IczydRgP1S1jAG3wH3E7e6vKSkm40s6RkEvXUd4twsFVl/ZY84P/aO0ZVwFfY9YDLabyPK4uAe7zmOPaQ9tvm2mPaQ10IOFT+B7x1ONGSVBqgX8IDfpqWWFzfDLjLK/zt+4yrRbcnmu/n29jvJvKtYjdRL3H1fey3LSqEW4gGXUPN6NqKfjTQNZJ7ZAPWtseIgPedvdnHlUXANIToY+0CeqIhZk9xCDhIn1QYrqFCc/KDOucymiF7/4x/jv/qrTjaUP36fvOa33ju3uAKWPy061e+N2Lss+7XEAFfTK3ED79J36jZ6nZKSopzdXl5eR+6wRyS+bUG3idrAsVqWryt5iD97bLPh9Y4JLOfsL7hZlNRCDg4G6S91FlAnCW7VoK+G/A82lBzxStpqmt6z9lFRX0phq3sjqcUvs470dGhW5fJlOtx134FLFVWH/8g1qbwHUvW1IzY/p79fMm1rpTNqe3GhptNRSHg4LxxXL4hhzLNyfw1ltfni9CJ7CW52LUI7RnwydTbNf2KNLski4DFUjIPOH7ixAmFhYX9+ST7X59CJ2WMZEbxvSmclG/sV1Ew/Zvw/TP44zq+b7abJ2mK9ZWPJ+Nv3ofaVLq7nuesMUDAofJ/HdjfgLUXy8pOp0S2rruOsvkq7yrqVvZYuTzghJQdmh5we/3y54gPhJcVto1Yj4T6hv1Ou8c8fvYR8FQ94Fu1tEgOKKIMBByqeghY4x+4sOVOYx34ln/QEE37iJ+90I0RsJ1u0kTAZz6qX84Dzg5fwEdjEoO7oSUfAZ+iBzzrpQTxzMA7BByq+glY+5hvEBMBf0W5POCbxGatGkbANrpMEwGbW4YeY4/ioARaUpYn9i4WHhsWbMBHyBHcDS15DXj9CfONVQY7AvYHAg6VdcCbE12fg3x8q43Oi2Uvy1EJ1LFUN5zctrHWCVgQAX9G7XnAa+UBE1141CPg0dI16DbhCLj8xB/9ucke7+PYygO+3dyO0NKcZTu1G/hyILPaJCHgUFkHvEq8OQpeDm/nYh7wN+AfXSfoPI6uKn94HN9U22nD268QvV1R8fpLTDG/iL0HHzulC/WYMuUkse/WjH7hCHguPeDHLfY5R3v9vTzgadJ/GOutgqBDwKHyGfCnaXavg0P5GfBNlMEu6e/jnurSP9oKeh3YPeDTyZ8zin9DHbz+Xh7wgWdWn5PAh91x+7eyO2Li4o55vaLi04BmuUlBwKHyFfC7Q+VhtexIV9Zc13fA99JEdknpmII06pMqhpqKsxy2kr8HJ6XHU0K60zlH3FPUB6yN8fZXCGvDVhBwqHwEXN3c4jX5qfeNWIJnwHP1C7NpskWzEh2N3a6iPuDf/9lP/u8U2z8/f2DE9gONegg4VD4C/jNV/rpM4VuhF9ptJhagwV6g37wi25lOdqczjewU43QmUxw/VdgpbH16wfeVlZWj6M7Kyof4XTnEkBev9BEj6jTT795OrXMzKDN3mjEvI+mV4J6el4Cn5h2S3UIe8HOJsjjNUa21F2V7Uoon8mBw891UIOBQfZxutXynL0LvensdP173mgF8hDoaEk9t2U+3l33JA54ifc0eo9/8P3GyX47kAfNfi63QL+mxUivXVugbKKaIJd3uf5q23G0b0A35u4J7el4CzqIdslvIA94sfTauv33z5PW2bJm7tqKiAgPNWkLA9cdtK7TGRzrnan0O/NNXhkLqZk5+Z97ij6qqDc9XVb1NbWlgVdWtNKuqKt9mX8kDnhJnj6HkjIwU85VOlJHR9hONB5y6jQeseQYcqOeNz7pKbyO7OVlaGELANaSL0C8Mzs+XHzrJOT4J+ok0dgi4/ngGnCsL2KXOOnD146KZf5wx50RKphZz5gyh3Dlz2D30SKNRXzeTvs5nb9myZRElPcB6bskmZ9L8LVveC2rWv7Yoqd4C5vaMy0xNiXFblbfZ+ZlWs/Pyx/wa1LNoChBw/XEL+PM7Aw243PLtiMltw7dZxcTGxpgvdbY+GSsfonJuMLN+5G/GWHnF88hmThYfE3zAr2SbY9F72xOrQvoMbNuCeQpNBAIOt41djZGac53kNCdj6Ak94IH+Brx3qWhmZo+8XIqlxLy81pSel8fuoU0i9UiWd82KjnWwb/xFzybtZI+Njf9HaE/nCNnnmwF3pePNyaVfBxbwGlpuTnoJ+DP588KB/dYQcLiVyF+Et+gBk78B13D/GIndQQFbB05nTfN3YIe514N4B46NH+yxDvxy33dDfzpH5B9P0apaAX/d0WkQm84NQ81RcfwLWNu8evUQ158jmqyP17cx9GfReCHgcDv6VaVhKS36PDmLTSx0CziHxhlXXEn/V3MrnwF/s4wKy/lydX8nTUq2qMpefO5FNQGHxRFyuDZiDaIzzck799QK+DPpUkEXcw9tEfAf6/gGOq8HM2ja+eZt47H7hh8QcP1h68AHKEHTh2o2A940+GPj10fdxz32GbCPvaldWvOAY4yhsoT3Jn4UwpPw+2OkP40Rras+pHbm5G7Xb0XAD4gBYxFwOCHg+iMNeKemHZKcnk8a8BgbHwNOD9jfnaDtZOObqJOysrKyZ4h7WUFXh/AkwvQ5sAj4DjpH0wP2clTT+ebSRTKVBzXHTQsCrj+SgG084PNsb9a5rjTglnSRZga8ZSB1LCpid5GVQB0dolSfYsR+lJfx9dWg1Q746EzXAEKx1MecLHD7nMd3wC3m0Tpx6Rc5G+pc0xVwJv0cwnw3FQi4/oiA+Ymt+SvSbrwsxY/961z3fCqoewdmwLmOU/SNWNUkNmK1sFx+7r9kDMWvuDidBqxgXhX3Et6AD2TIHth9TwtfAVfwPz5LxaUbabrrGruNLQfns9+KP3YZNLpyZwhz3jQg4PqjByx9va+ofd3DZZKj4M2A4xzybVa1nMA/L72BHzbcgRbX3Et4A9Z+MQfRrcik581J90ViXwFrbdm81gn4t3TZU4r/+m8zMLy7Nwi4/oiALZZ0/TrC1QzYT2IErLAHbItxTYdnHVjrKAv40HjzM/NcO7VPYH+xEolyTtjThrAjtDcIuP6sonlvUdzgrl35UmfLWL2yTnl90ynnVL8GV9cD3mbRq62ZTV9dZF9ajqFS/YUe7oC1hTWjOAcc8LOuwXfbUKv8/A7UnE0OaSEL2E0q7WV3Qh8l0X5Na01+DePTZCHg+rNSHl5hL5qzevXqUt+LhnrAh1r7eOdlb/LZU+hJ/TYi4Inug7eHGLCbgANeLp3fFD8CPkL0NQL2AwKuD7/yrTGfzycba8tuNaDOOz7vRg9YO4loAr/De67mx7x3Mo5ASrC7rRjbE6jtI+I2ImDN/Rwv4Qv4LHrY/UffAR9+11xJPp9Or6i4jE7i0x18BJxMz3SZdvsqDQH7AQHXgx9kB6+bppR0pZNLSkpu8fcdmAc8TL/gNHb7AquBdPSzB4uAd//bvIs351WFL+CPl/3m/qNFwHuSBnn8/Me/ysrKZtOUsrL5NJqPccsXoaeIm0oDPpBA04le0xCwPxBwPfhtKN8WkynNzPGMNpUe9+9+agV8eDxv1+qPg7FILgLuQvdU6IcgdKGC/nSseQjCXz4I59O0CFj7frfHj9KzHlFrPpqHLOAdTgdNI3q2JuCquS+Gc7YbFwRcr2rvyOGgL6qqJtN95r6GdU5nyBwfb2KLxrH2uHi+HJ54t6b9bvnGbjum0GMduBmtOE16xeIgn8fRzyQXWgVcy4czi4qK+vCzkx9LOXyMW77XdJzYDl834C0Ditk6vQj4S4cR8L+oKMjZbgIQcL3iAf89nY8mkyD9KDfmybq3kQ+iVaz99naM9DfMytfGmwFvIKcI+McN4qCDAXTOBJpiHoKwwa/iJIbS/XUv9DNgYQ0NLeosnfdc45xr+ij3i4jMgDeQEfBjdEqQs90EIOB6xQMukL5u9UPuWjxX9za/bDKJfRvmbjqOqMMNL72UbZWvzgj4wKwnRMDGnc2ih8OxDpxlrGELi9vxQSJ/1rrG7vX7DtZQrPfZN87jxA/cslFbouFF+URTi4oSadJgarvI+8kemjAEXK94wH/eP5y9KmeID4PsdN369X2peP1du33d9OizesBnbPJebkwMpeTmppD7e3n9BpxJJ2rajbZnt231/w7W0NkbZ+dRm4LmlJ8gIm3dv3//HMpe8Lx+oomX9X+QhRbPcjxb9L7gj5CfR+ODgOuV2zrwNn6kuoMfzODfRqwTfLxj2Y2dklNjecDJlGXuyJT313PqN2AnH2J+Ed0SyB249sQqpOc6Ej9W8BpNtg7MA46lwfKnHMAfjCYDAdcrt4C1Q/1bBxLwZQn650UxfCOWLdbBx8fhfwLuekAf0a6j5TJpFjmVDriDOMn3snlED5SVOflhIH3FKRYlqxuAgOuVe8CaNjOQgDXte1HqRV8VEg346lrqsWBBEtGYCRb7hfzdHAjkpaSwBPxJittx9yEHvJ5WBhjwk7cbG7EcNhobzBNoGhBwvXIFbOP7Xc2kGKryO+DjfSxDe7DVrAOPIquAj/4zgK3Qaymt5oeQAz7w8F4fAX918cL2zZrx9WM78c32qclEmc1yYhCwVwi4XrkCFoOqzqQsHpafAU/X32rFaVdIP/cKf11nZujnOEjQf+1sH0PJfd+dxAKu1j9bPo6PnDficl0vmnUCFYqx4a7ftZnO9H/WrwtrwILXgP9q9bfJjoC9QMD1qrrnEPaVLQyKYalmUjf+LYA9sZjrtF5EGQV8C+4o1mxiUpLVaYR8uVa+67EFHwFn0OX+35fhTupe3JYm8J25HTSguLi4gHKLi5ftY7/6pFeHZpkJDuPAZ3MEBEd8hp3/kFNiCvIMT40XAm4Ih/VFVz8D3v/0tZMF8VbbY7KvT1C96zWMRorX/lU/hzNgB53t/30ZPpOvvj+rbTmpj5/P5tiAH7SRQ8ANyM+A5edNkYuZfHILmlZVNYEerGojBn3UhtZaB/7uQvOQ+DoBe/tglQUsH0jvmqAD1l4vLSD6i57xSaWlpfPo2NLSh49qk3w9zW6rDb4P4WpiEHADWkD5/NuFDu8Drg+ySXe77PVsBT+LaEXFSPHjYv45cPwPmtadZmkaPx64HV3Ab1474Jo7rh3wyzG3Ws8FC1j+l6SFg9J692YP0qtll4Ev+ffMP9N37FwyvA17Hvqzcw4ffc446lpc/NevtG9nDjfw3V1sxPcmzc7i6/LXZ/Bl6V7f+vcwTRACbkD7losX4lG/R1vk+2Bdpx+NdAf1ateOrf22bdcuQawkZvBVYVvnl0MIeD2da/3YLOA9bsNfzZaveTucTmezh63vxZDn7e11Zc31qs4Wl5zC/juriGwptDKNB9xD35V7s3m1X3+QPUiThICjGQ84MzeZKCHXaiTKf5gBn1ecQr35MYOt+Dbe/vrxg3+bHkrANT+wdeBXZkyZMiVXNgu2230+kYf02ZkxvC17B06gAYPYu+vwUWtElneZBxn/ttTX3mddhul7X/dL2e/vP2Fjh4CjmY/jF7jxesBnkPxQpdFhC1if2FNVVZVBhVVVDpqziLIsj4m0spTouRz66mei4/QLrp1ysGb2ujr1vc+kJwMX9KGCWtH2AB6zUUPA0YwHfFFl5UA6tvIaKpzYki2yirMO8kVofZE2LtmZzAPeXXYi+6k9Py4vg+9NnCMO0Rtz88wAA36tXZYhlWzmZNbJ0q3QS6lVwM+oVsD79nUn18lDH6JTjYMZ+J5Y03tT+3gqmMCfa4uJhkWHxTURsAsCjmb6OrA2QqwDn6ONl74pxdGsqie1NtLf9WLrwEc/qHhj6nV8TfZaGuNaq+XLrZKAF0jvJjY8AX/pvKZWwM6sbuQaK4AH3MsV8JO30/yW9PPjsj2xELALAo5mRsALWGg8YPa6foItsp5P1JXo8lGpdClfgmWL0N3p3p78hZ/aluEDeVAan2rbcQMLeL20SX74rSTgP9euMBSwhfJRxvTWcAT82+XrabJnwN8T1QT87bEsYH0R+kxXwD84ELBXCDiaGQFrX2tmwM+zny4nyiNazdZ7+Qg5/2tJfVNpdDf+wh+2hunAx826xLiH2bTxveH53SiFD86cS05znObjbtZ8rgPH1+xsZQbclS3Bx4rTh/PhNsVJiWNjU7b49WTup3E0eYl7wM+3cg/4dqLO+0TAnR+dRHTDJTQ1k54Uu2QNrqjwOCEcAnZBwNHMDFhzBfyaJgLOIbpZm0R57CfpKUlosHEPr56xi319jYbyHwLciFU34MPyLWXWe0X/vklsorqf/clI5TtF8k+4WfcOtgJvixHj49YEzJcUnrUacpNsH7vdLQJ2QcDRjAd8oz6pB5zNz+iwiq/3OvdrE0XAZyXEp5tjVSZkMiyy9CzPsbbCFbC2YwuTSoO2bLHThOmUyX/c4mWoy5UkPmI6wypLrv1Bc26InhYBt8jPJ+rUkVrGUHNxldz8/Cl73O4WAbsg4Cjxw/qDdS8cRa3OM/ZZ0APuyidX883MXfn5F/KWva3NpZTniC4WL3RzR46vat2PR8BPdjbH7mhOaa4TEq2t/dgeAXelUnOyemMS9Vq/3kZDRlPaesMGiz0rlukLEAcrKireWk695QUv51f534JhbHJkHB8Pq0dxMVHhGcfOTKRzxCL0tlp3i4BdEHCUmE8bJZfWfMQqDbgltdc6UFJgAd8krajOns0eAX9fs/f26dKbp8qf1TJzDYC5iwpIuo+oeHO/TB63e8CHzcF4q1rSZ+bkEet/0iYBAUeHIzPpXotfXZXAx4iOIUc8W4vUJ5lkHnAzahl4wNoP5tgdK2m2OfldnfNEeATs5v6MJEdSWhpbjI8jW5ppsnzeawecR5Txq74Ri/3F4LPcjS4VRylcLlYCmsdSIVvDnzqNaGFpaWkaDzjGCPhgjvQvR6XXf9dGDwFHh7kOy4AnSt+aYo2AN6RRzBSifHFh38UMW3G+7LDnXVivAx/tlGPxHmYVsCGeNvrxMZIk4KEaC3glW8ctKhIByt95if7Cqs7gAc+y0/f89oePc5rslG5O5jbx3aIRcHToT5YBH3mBjxH95HWPbRpObTZtunLs2ERyUHpxcXtKIIuttrXORWId8E9ktTpZnwFXJltlW1sromnz67y9Yx3YBQFHBdYR3e3zWmIdWL47lsEmBuCxDxTvwHtXmuNYzKa2/NsU6l5S8lTN/bGAf6wT8I479EN/ZlMcTaMoGCoAABiuSURBVLI+pYP/Ab83SP/ouQOlsb84lJJv+VGRxXO6rUz3lutuEbALAo4KW9kLdb3Pa4mAv72jtDWlrLyxtNTyTCt2/eoPSX/Zpub+pAGfLb3VWbXnxd+AV951VmC9WnP8Yt4tAnZBwFEhgIB/WVrspAR+cJ50qB1bhwEDjI98/viHOY7FudSBf7sw4+TVq912m5IGbJzWkMmnfHNyfkXtefE34DHSFtmsJ+sf8cpH2WHv1K07dOsmDtho18rOJrt1yytwnckFAbsg4KjgT8DfL8ihtLkDpZ/EkL5SWSCWdx+qs0XZWAeuTRpwjSu8rQOn0auWAR90ndf7dDq9aOrUqb0Ceqe1dKf5AAjYBQFHBX8Clh9vJHP1x7USroeAK0o1y4DlS+FJlMjfeb2uAbePp2KifgXs71FGRob+VykljpIyuGlV5gMgYBcEHFG/6Gf2Kr+FvVDPN6bLX5Lsk8Uscug7Eov/5O/DLt08b1oPAWuadcAPmodM5GdRW/b1mA5Mx9GUR9lEIya3SeCnPnboq/B2Sk5kUsWO0dQzmdYRjSkrI/7CvFFcVj5f3x9T2+saGQsBuyDgiCqU5rfa4tp8HTid7Gd4j5dvix7peUOLgB+lFZ4BV+90/3XQAdfQP0Y6TzqXHcTXVOomfxIaP1m5R8Bj4s1t4QjYBQFH1MOF+tmtB7IXanfjTNcFU6yODjACftBONr53lt36fTh2l8cNLQKufv1Pz4AvdrhvrPIV8DP2k309Pz3g/y3iG8JGUhtyih2dudmLvXweNqyI6L7tRsA3mwH3JPOIJATsgoAjaZq5P1Eae6EmGdPZlmMfX0ADeMBaL2rOf5xImZSWIi3A6bkrVu2A9/cxB8tpTtTCnO63t8gYc0rnK2A/SHbkWGj+PMey34SiU9nXBUbA2fPpGnHy4JqAhzUPZByuRg0BR9II2cvXfonV1f+8cacZ8CkX84DtFHcHu0F3In0L1yBTrTNx1g74NXk4W6MkYN3IMv24iZQx5MgrK3vPLeADv9V+oCYLAUfQf+SLwPZdlrf4+Fs94Ay+s8bx7LqxVeR2MIPVzeosQt9rDpxzAdESc/ohTQT8+kijk/oK+DP9I6YJYpYnU4H4qHqQ+KlnMt09fpr0n8X+ox7wT9WhzlSjgoAjaLP8rSdGdoDNH3zgin3xeaki4HSyadpZfgf8Fo2w+I3nOrAIeDldMEzstbiSrgjhyQmeAU+gfkQTV0qftD4iwfGt7Pu1wxcUFQ3tQh2LjhGXxeUSpRYVLTksAt5iW+Hl8ZoeBBxJVR9u0d3OXqhLjOkPd8quejY/w/AOyopn6RoBLzECjplGVOY14IMlz1r8RhLwMhqrn9jh/fHvhfDcBPeA76Gzn7vcYnE54dgeesAv/UvTDr3P3p+voPS8LHGZw8kizuuZn2enHgNKZ9Lpoc5Uo4KAo4KvHTnWNI+j1MxMcaIgcjr45ufMzCT+bj1Zf5Hro0QnJyULGVYfRNUhDbiQulgc3xso94C/nViurWGtmhvu4ox3XnZB5rnaaUQdiUbxK46zqJzLIQTsAQFHBV8BWx41a3Gu4L7+PrBFwPwNXnd4d1BPyOAeMLfGYt/nv/KAWbgz2HVulj+ljPPZcsan/RGwJwQcFXwFLN1czcXox/okGN1S4mBumnQpXMZnwO1tHwX1jHSPZ73s8fMaulDfT/oqOnG8+PvjoOKKivcOGwHP1sz9r2qzr7qC6I0qtlo8/PQfq+T7qjVFCDgq8IBv8/L7r//SnsYVF59GiewdLLH4zAJ5zu+JcSoD4TPgOPpngHfpzVoq0Sduo5nT2Qy3Zf+ViLGtZvDzOImAjwy1+mtVI8nLSJhNCwKOCjxg7+eunkRPGRuxqIXYfu108nVgW4Y41Wicvnf0f4MKeLGzZrU02elM4IccUMv/068Q3oA/nazv6vU3eZcdH95SXl6+vnXz5hmJFJvOlyvS9N/YbLHsmaex1X+2EJ7qbPNJGGdKaQg4KvCAPVY2/9gyN+kp9wvcA35u02qybdrETwTW+SF+Kr/7hxMVEcV/ElTAM6WLrI/qVwhvwMLz92p3pVKceVyGvlUrhi9PP3yd9zfeLXwRuhX5eVbxJgEBR4XaAb8Sy17OCe7X4AEfLqZ4u9WRSFlE+YEHvIs/rmu41il0T1XVYhrFHsNcy6yHgDvQLu0+Or0T6TuQXc4vW2PjW5gfrxin7w4+KiuZ4iz29EbA7hBwVHAP+M5Lv9UGiUzNs1jvrKysPIHuqLT6FFU4lmhM4AFrK6/Wv/+HH2GQSwXFxceINVN9II736yPgbPrJI+BNPSt+489gwLo/a650L03twHfuSCc7P/aQvUcnGovQCNgdAo4K3xDFGa/eX9mC5c99RMA7taP8ffEd6/Ndu1kTXMAm6XI0dZkTG+6A//i3k0rLFtFIvptGJvuvKJcG3MYf7Dj3q91Lc/nBDLaf+MEM1Fr2TxB/fnjnTEkIODq8+E9zu+p29tLcagY82Ve26YX8o+AxrYn6E2WfFHzA2+8cLn0Ae7gDtjgFg0XAjqcoIZcsFqcXhHfOlISAo41HwAvMww0T7RQbHx8nTu9nGxyTaXUocHpJydYgH/jXh0ekU/vevVsQP0Sxt8FGD4X16WnvzEigyUUDqUM6y3Mwe6QeGZQ9zjLgc6z/eEmPcW5qEHC08QjYpa3161jOdnzAj/yjdJhL42j6sKj6Oz/wKJXGj+9DbXjAfdn9d21BeReKgN0P8jUCjvmCnPfNkz/FnPDNmLoQcLSRByxfviUvg2P1D/yht42gFeXl08V5WuwG9gjmZOzmUJ/bKq9/czIz3PYp4QE/Q5TK1oG1bdTps6vmDyKaPr8FHxxv8nxhacmVe6wfq4lAwNFGHrDrc+AziY9L4ySbNsAq6fKgH7tmTyypO33fg3ffX8pPECEfRISPV8mW/g8ZTfKAq8dScz3grsvlN/F9NovGDgFHGx8BL/YZcAjLvG67Ur5niKXV5mSd06sEZp04+dO7F7OAk+Ji9EUH4+QSNnFMRiydXlLSKf6Cksve1APWPk8/zQh4LhWNJ8eK1W34MHjzzAHr1/1ec/fP3xza7CkKAUeVL2Y3y2Av5TT9IKOMTKFFm2csA+5d+dlSorcnEa2trKx8jmhy5XfGfb3WPuD3p/PpP/W2L/RrtmR+giOLk3x7GsIP/58rbuYK+N41dL44CZzF58A96JvwzKhaEHAUeT7L4gXt2G8V8LGadjXRzzP1kxt+Qm7nH5xGfQKdgYOfavUV8AG/PszWpVZo1e3jH9b2n7pROzJ6kSvg5d4C7kKfh2VGFYOAo8S//3bJJRmWL+lPXAFPEMcAs//35ccyUIu+fbOJ+o+QBHwy9QpqTurpHfgyiinS6R8jJXopeJ12mGL4UF4jxU13Z0xEwBYQcHR42+q91+FISUvrvMsVsHwLUJok4NEe52f45TN/Z+USGl8fAe+lVGOK70q5jizPrUjJPV/UA36VBk8XYwHtOYSALSDg6HCgpfzF7BofVgR8MGf8KeLUfvFTp051Utok9m1qT6JJYyUBd2FrjzUGx1mPdenp+ysur8+APz+BvQOP1kexk38GFrdDO3uSHrCNpuq3dgu4AwJ2g4CjxO//3qBby17CF7cVL+4b765521wad3eS7NXe4yhbB94pWwfu4nHmk070pfZE76wH/ZmXnavqMeCJlu+8RItSqC098a0YQogF/CK76CT91izgdXyovXxqdzwCdoOAo43Fx0jVFoNIH3P0RVbbbO8Brz1hjJMF7JScqFsuKcWcCnvAUymZSpfqByKl8YE1B3fkw9kJ16RTJ9GhHnC5R8B7bvpF066xDRuFgN0g4GhjEfDLfeVvWo9q1b2H8J0OecA/x8oDFp9Kfakl+x3wa6+bU2ELeAc5xPeplEE/3UPE1xmSZ/MlZodraL5MO1s/aJebm2t3BTxRP1J5Ft2qT7y6bQQCdoOAo8Ij01w7BVoE/Bca2VHXvjWRg32Pp8SOHfvrZ1F4Ug9YWy8P2BZowDXS6c0gno/Ep/pi+c9sdZ0uSvCyHG0wApZ5VXb/CBgiJ0Xvj7MM+CZz8j329sW+DaBC44LdN17dnObyXZNOpT7mXkqr27sC3k16wOyN7qwtIz4NaM62PRPkUzI8aM7OIiL2dZbXExvH2/iIV+np6fwHZ/ZN7Gus22hduoypbgc9vFVqakmrzMlNTejsKwg4KiTUjEkZRMDykaRsFNtX18UImN3lWRfQugZ6TsJHvt9qreWw/6boY/vMrfkL5+6o/NPkJjRkBwKOCqEFvP2yEsMUsl441QN2u5+GcGStOWtziNjX88bxvc2mzqf+HdgztCV5fhosRn2PEcdA8R/4u7XNltByaUlJL3nA2i3FpnSaYU5e+Lv0uo0SAo4KtQPOp4Q8q4BfLjMDHljnfjZS4bSphhRKMKZGRC7gGq8bp26aSpR79FGalk/x1II9LX/JA66BdWCIHLeAd/CAVzi3/dmqhftZul3h7XG0MwNOqnM/G2nsReZbnpOSS5b9hSsSBbxbxQKevYCu2V/nZn7YN6PM95W8cQu4WPMIuJW82GQxPrWNjh0xcuTIVjTRx1GSCBgixy3g6vZE2+pewxXwdmqmB/wINatzrY3kx9Ad8cGcLGULDWJf3grilsLO8puIVsl3n5wuzvwU242oGf8YqWOa/PxJ/bw/AgKGyHELWNt5hey9zi1gmx7wdo89rXQbabxrK3RzSl3dNTExMd6ub/m1iW9sxdOR2bx5y/x7ApvDl8i+61Bci8BuVMOP06X40P1974+AgCFyEryeGYlzC5jprVkF7P45cHyH7Oxsq0MUTwxsDl9iK9H7JQvtflpfMIBIjNnekqhNQR9qmUr2/veKRWhjm5XN2DfabhN/amzppB+BeMpcphPd4+MREDBEjlXAL8w0DsEr6kJ99Qkx0iw/cZGvgHOs3suatW/fvtv9ewObwyAD/iZbNgcDy/g6cIL2zPxe7KfC4/llY9nCf7cYSqLxG8vL+RGTecZ5kb7g92PxMZIbBAwN7cXFphg63py8ssrtGlPlCWb8qPkOuDM55Ouc19W5mR+CDPgL6Qe1tljxhhvvda8O0yp+PwjYAgKOnD/kZ+e+wO0q28tME+gMfWIDu4oYPMb3O3D86KFDhw5plqJHFMM36tpjKLk50/bM4uL5HwYws0EG/I4/iQoLe7BlaztbbO4waOhQvjidSvowtw9UVlbuu8bxuo9HQsDQwKrHtjLZKM2c7CY/8t5jHdgy4Edppmva4tMZNxcGMLNBBnx4tfmp1jSi+fPnzzulNVHOwuUU49CHrvV4E7YZ+3LU0fboPl+P1FVf1m5qEHBUCHAjlmXAO4tecE13o5hcrkObFiKCND5iT1wijbmEWVtaWnpfIKMqh7gRS9M+MI4xNj4HDkwifyL9fvB2/2uLDgU/c+pCwFHBd8Bn0F8rhFvY63nVeuZaSvtnuUHywTFbbTzbmHpVRBDanlhhCNguvhsBn7iYll4QWMWx/w3+0RstBBwVfAb8kfftPYl/1L3JhbTWmAo+4F9XmEvAs9gS8FKKFdObArgHl1oBT1tG1/13svhYqU9PYgsHxzQj2+g426jRG6oq59io+4h0ihfzPbSgoHACc1mA282bBgQcFXwGvLsjtcvn+vIF4ZQ0RgxvFy8+Wy1cJrlJCf3dmAo+4Hukfy6y2Xv+1wHciyAJWPx8Mj1xHw0j2lRICdorT/GLNksftXmgj9gkIOCo4HsR+lyKiRf4ptk4c8IYt26X7ADYT842h3gXASfvDSLg/c2t3vPjfw3gbjiPgLfalkoD1lUvsVF6VqyxQat5lq7T4wE+YpOAgKOC74BPk3ck9m08lfp6va0I+HoxMMfiANeBJzidGXGxjEP/HIpPxiYPKyg467DvG3swAy5tzQLWfjpSJ+Dl5DSve670uV4a4CM2CQg4KvizFfqcTQI/tOgOPnE9f1G34b9Lc713yYmA12laDK3eGfGNWFopD5iPH18r4K01h0ceGUvrK/tRq8qn2Yy/Uqn7qgmNs+E/BBwVfAe8jNbrE5eS8THSO4EEbOfn6U6i/VrEAv6KYvUJi4CfcQuYLWc/oQ2itqx6oq+Df8wmAAFHhQQq9XGN71bt1if8DvjQpFxDa7bW3Jp9t1FObrtIBbxLHELFPEGX8G+rjKdsBNzzD/eA7z7mWwTsFwQcFQoyt/u+ks7vgPekylYkHeY7eYBCDlg7z/hUq/oNMSjd/n/ro10ZAZ+mba01wggC9gcCVo3/i9BVxspj5ZdxNJd/f+6pysr3V+4O6mFDD9hCMb32bxrLAq50TPL4xQg6AQH7hIBVE8Q6sJZCPncl9qXeAt7/jlb9/B0sYO0jzz8tM20f84AdgX5e1bQgYNVcxLLt0oPJ5QHH8Ck72QYXLPJym2gOWPiiT93zP+zbxjdd05J6eshGAgEr5tdYiz0rUg9a3ygMAf+nXgO28inR6gZ+SMUgYDXc39I4L4H8/MBEs773cuswBHzQGYmAtUIE7B0CVsPVFt3WZsuT3ToMAWsnttirjS4K+W4CdK3Pz9eaOASsiN1VhkLvBcfIbhyOgI/8GfJdBOHAM03yKF//IWDVrKa5+oHBK3mvccMZB9nHTNKdLB3PIxwBQ1RCwKpZTSX6xDcN+jESRCcErJpgAm6bhAXRRgoBqyaYgD/7oL7nCiIEAasmmICh0ULAqvEM2HGnFnLAP+4Iw2xBZCBg1XgEbCPb3lADPtqsfVhmDCIBAavGFfDP+ge/20IN+E+KD8uMQSQgYNXczUe3EiZEPODdV/8YwgNDGCBg1Rx90xxO7ikz4GaUFsIdhhDwzXRxCA8MYYCAFbbOCPiJLm+FcC8hBHw9/TWEB4YwQMAK+8AIODQIWGUIWGERCXjnJzXTCDjiELDCIhLw8NifXdMIOOIQsMIiEnA3qjngCQFHHAJW0NZh4jxn+T14wD316fzjfA0NX8sB8wDj7RRvTlb5ccwvAo4qCFhB50gP5bdXBnIf2zNk99HyN583RMBRBQErZ1s7i8E4Xg7kXnb3dJqIXJP9JecZrgUBRxUErJw3Lc71XRzk/QW8DlzxWJnhNJpsTpb9EuTDQ0gQsHq+mHey7gTe7Rh9es79wd5dwAGfIf37MSPYx4dQIGCFRWgr9OMziwzHUFdz8rQXQp0PCAYCVhg+RgIErLAGDPiQ65OmzvS2Ofk7Ao44BKywhgu4urNstTduKQKONASssAZ8B57k+qTJQWnmZPdLEHCkIWCFYR0YELDCEDAgYIWJgEMeUrI6p08gV0fAUQUBK+w7O9G80O/mYECnbUDAUQUBq+z14y9t8Md0D/gGBBxpCBgC4x7wf4duieCcgIaAIVDuAUPEIWAIDAKOKggYAvNdJU5VGkUQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwhAwgMIQMIDCEDCAwv4fWrqwIPcjx2oAAAAASUVORK5CYII=" width="480" /></p>
<p>Find further ways to plot the points.</p>
<p>A collection of examples: <a href='https://pakillo.github.io/R-GIS-tutorial/' title=''>https://pakillo.github.io/R-GIS-tutorial/</a></p>
</article></slide><slide class=''><hgroup><h2>Plot it 2.0</h2></hgroup><article id="plot-it-2.0" class="smaller columns-2 build">
<p>It's all about interaction, isn't it?</p>
<pre class = 'prettyprint lang-r'>library(magrittr)
library(leaflet)
sites <- spTransform(sites, "+init=epsg:4326")
m1 <- leaflet() %>%
addProviderTiles("Thunderforest.Landscape") %>%
addMarkers(lng=sites@coords[,1],
lat=sites@coords[,2],
popup = sites@data$Site.Name
)
m1</pre>
<div id="htmlwidget-b59a41368ca38f8f222c" style="width:480px;height:480px;" class="leaflet html-widget"></div>
<script type="application/json" data-for="htmlwidget-b59a41368ca38f8f222c">{"x":{"calls":[{"method":"addProviderTiles","args":["Thunderforest.Landscape",null,null,{"errorTileUrl":"","noWrap":false,"zIndex":null,"unloadInvisibleTiles":null,"updateWhenIdle":null,"detectRetina":false,"reuseTiles":false}]},{"method":"addMarkers","args":[[46.10436522521,46.0163171668706,45.9482573250011,45.9599286038472,46.1379801372109,45.9810388558126,45.97353895999,45.9290882852112,46.062430417336,46.06770079982,46.1763228442366,46.0704914340328,46.1804732091055,46.2082338332158,46.2097234312076,46.2110335213659,46.2082341394988,45.7210393024681,46.046872891546,46.2075248451501,46.2090250497249,46.1518858712779,46.2101567306144,45.9357638732515,45.8735439907109,46.2058368998948,46.2038770898927,46.204347190028,46.2027276712341,45.9143752149885,45.8963251171361,46.186287688614,46.1863378488273,46.1754779330934,46.1724579969463,46.173938471329,46.1271574338094,46.1770586717338,45.7960448710669,45.7018736889873,45.698544198994,45.6407638081177,45.4696519604728,45.8552160034938,45.7579951894291,45.7565950148433,45.6652045935218,45.9757675273502,45.896617682516,45.6018742752331,45.4168725067543,45.7829859707974,45.661604914415,45.6693752221746,45.7452161887314,45.3007612923791,46.131330733281,45.9768789265844,45.9768789265844,45.8841084179824,45.646045940492,45.7735468258403,45.9121592383958,45.755487701913,46.1554912299861,45.7763279186599,46.1549416364027,45.7002071372126,45.8213283586023,45.9921606402681,45.8388291247786,46.1116121808251,45.8518792794417,46.0529915831163,45.8835503467419,46.0238318409751,46.0641120882875,45.5543771244513,46.0771630183599,46.1393840240658,45.4452171276503,46.3282770569707,45.7752112649047,46.1054950717375,46.3291073495831,45.8313327365035,45.8052235508098,45.7279936130249,45.299379414252,45.8368876354937,45.7710574058461,45.6279959106278,46.0266102748493,46.3266236915856,45.8657793989327,45.4741150920492,45.4654953540755,45.4660553221351,46.009391516464,45.2552138072707,46.4557866317873,45.858000868956,45.8568912352106,45.817720814169,45.853281749993,45.796060870928,45.9802829073154,45.2788355667316,46.0018256407774,46.2047293168848,45.7458145947274,46.1556497626576,46.1471092135875,46.1626795896726,46.1753499803178,46.1739805088741,46.178060018315,45.9517978738396,46.1595404408666,46.1757903739441,45.4955925140366,45.504503091105,45.5480032748951,45.7571455672256,45.7651859903777,45.9310081915841,46.2335917248537,45.7335061608019,46.1703212505316,45.7493264906729,45.8054467936092,45.5168942468138,45.8493379351055,45.4971439829341,45.5986451124549,45.8057575434572,45.9148789227653,46.0330097178508,45.913098723286,45.5205042603898,45.9162789936789,45.7999576623062,45.621905754672,45.8672090905509,45.7938280217982,45.8496887771765,45.4957743196564,45.546935167274,45.5500550562875,45.6044158838201,45.6875871600032,45.696407332102,45.6379863621303,45.5761960270137,45.7445880684487,45.7443178726125,45.7457375923925,45.7475474752526,45.747827992475,45.7487675206215,45.7483283535414,45.7013573343463,45.745147710426,45.7478776157186,45.7469079450523,45.7421680019919,45.7454277846727,45.7607181111679,45.7637587297911,45.6128165111346,45.9138104196795,45.621016601865,45.5532660699382,45.6165966784673,45.5510265513074,45.5567162388583,45.6651472073286,45.4836153156877,45.7731788586122,45.5857167449659,45.5852971096414,45.4828154277018,45.5420366091777,45.4734459062971,46.2410846504806,45.5849969301896,45.4982765747671,45.5902271213861,45.5948274857963,45.580817217568,45.5972575926317,45.7169092743638,45.7161388860042,45.5886674095469,45.6023274226085,45.7254587263147,45.5130671456917,45.4823064689337,45.5121669746823,45.5577172416459,45.5334071168618,45.7537397691581,45.7135391216188,46.1876148382018,45.7761597990095,45.7472899107651,45.7286992504042,45.5271874839966,45.7596402172998,45.5456779670308,45.8580117264368,45.8566112613801,46.1298648292624,45.7694209434137,45.8650617187341,45.7878605933752,46.0242134840325,46.0291332206812,46.0565336852183,45.9595330481021,46.0924342093066,45.8744817150703,46.0421436141484,45.5143685688395,45.4943882358188,46.0361440487309,46.0296636530428,45.8754923723924,45.8720918925117,46.0195341624277,45.5328181905066,46.045124204579,46.0361445803879,45.7641107492089,46.0427241631334,46.0170141034692,45.8361124582466,45.6568302897873,45.4742777669989,46.0063745162063,46.0025641441416,46.0031343489226,45.4812182431862,45.8563830716542,46.0168248154434,46.0399944192868,45.5298794255481,45.9032430658778,45.5119292954402,45.6790006998523,45.5138185709734,45.6755412191965,45.6846313477541,45.6691204470314,45.8013824249618,45.6673508944918,45.6807513749556,45.4603481662307,45.5178988016865,45.7028516390445,45.4496586931772,45.4730391221631,45.7420917964059,45.7549923615709,45.7440323435957,45.6555812521185,45.8963539458102,45.8367230524045,45.687421313925,45.8306532855176,45.8323936420864,45.8602336016789,45.6478712697505,45.5486208308196,45.6273019932768,45.6641621537077,45.6245723522825,45.6217420809963,45.6338823432999,45.607672647482,45.7730844733341,45.5330045516752,45.7502713994269,45.7505503283684,45.8759993195851,45.873666330175,45.4040791836976,45.4052742039574,45.4062029636961,45.4044464726031,45.5602777723343,45.755274261562,45.7396104019812,45.7513824872775,45.7349920836831,45.7349920836831,45.7411056570403,45.5369427608129,45.882883207392,45.9205047391883,45.9173705842808,45.9197106829296,45.8430535809504,45.515550299943,45.6508249543907,45.6397161137528,45.9416572385049,45.9269348273596,45.9344359272117,45.484083278727,45.936383899182,45.9263856626138,45.9241621848269,45.8827742783865,45.8991610856388,46.0577725087396,45.3008301279964,45.2952487355222,45.296438084028,45.2948745931554,45.293204107005,45.295505000824,45.2976293248584,45.3063905323302,45.7008316973757,45.7022163136898,45.5547215184797,45.9387118793876,45.5024939196343,45.4997148291899,46.0097131075826,46.0116571151237,45.9994367136986,45.990826995398,46.0038780588639,45.5072196212356,45.5086070952506,46.1072116203136,46.1088806732604,45.765269449138,45.6655557940666,46.0299930764769,46.0349911566888,46.0216557233739,45.6426632138085,45.6302773622436,45.6333296356639,45.6566637517392,46.0472121900472,46.026381431578,46.0263765149812,45.7488814057485,45.7536072750392,46.1038789828591,45.9530320143268,45.9255479185959,45.9472117907366,45.9499939902905,45.9011002912454,45.9011007046411,45.9058287521266,45.4202759654185,45.4188910274307,45.4177723378125,45.4227747352382,45.4105513657469,45.4177740424429,45.4069403755655,45.4116690751629,45.4055545285582,45.9761156497367,45.9719363811275,45.9705515050853,45.9758219962638,45.9652680768198,45.9736046599271,45.9766608605475,45.9727679940185,45.9761064707171,45.9633257192832,45.602221492606,45.5829463313999,45.5811080095118,45.5766635507619,45.5875003247358,45.6519397942151,46.1538832068723,46.1886025061502,45.6074697817321,45.6138892814543,45.6111106443007,45.6058270404355,45.6119432731438,45.6147182723078,45.6133276031825,45.7774642607579,45.7876914964937,45.7858659081148,45.6389954267741,45.6402293617934,45.6544442194934,46.0663773623092,45.8603801758352,45.8511014574493,45.856103659461,45.854716743844,45.8772193300507,45.8811052640281,45.6061065231728,45.610277473051,45.5983276579575,45.5983280701892,45.6005485571874,45.6013820152373,45.5980526926838,46.0508298622451,46.0527672659784,46.0516574786828,46.0555521951119,46.0560995666573,46.0530466080424,46.0602748043896,46.0608220200152,46.0724953174678,46.0630441897915,45.9736006542729,46.0055471841509,45.9877887504962,46.2747101253629,45.6269790974474,45.6763860826144,45.9484299107176,46.0619392655052,46.0655492298215,46.2569325394814,45.6478359100378,45.6663831324805,45.6402763083036,45.6866618220761,45.501660497492,45.533809267653,45.5189656649369,45.5152087494209,45.5229847395518,45.5030530979223,45.5249973842626,45.5177761373017,45.5258336300693,45.518981766178,45.5177765124141,46.0023355556939,45.9967930204375,46.1099874037414,45.7963864581853,45.7583268632664,46.024030565019,45.8736141899773,45.7582505121308,46.1108268121645,45.7463808430534,45.7327721245789,45.7283309154043,45.7205517994559,45.7247052917956,45.7213808196405,45.7208256985896,45.6988862392369,45.7022157458139,45.6947148906004,45.6402694791639,45.8669843166857,45.8837909743332,45.6581196932121,45.8838790317489,45.8966586379394,45.9147160490407,45.8214164814371,45.8389477415501,45.6283269368233,45.9924943245942,45.837210238966,45.3011143277699,45.746110226233,45.9738801910113,45.9813784911877,45.9816569589342,45.960271312892,45.9485587541586,45.9477695972731,45.4122216880569,45.4172214857142,46.0472134324987,45.7763432327281,45.7737584019943,45.8177902888227,45.7963831498619,45.9361064635835,46.0627586455981,46.0680513113238,45.9770174125768,45.8858300006278,45.6463813857331,45.6697166347528,45.9294374568745,45.9308237072158,45.956658198211,45.4700018496923,45.4838862508483],[20.2645160214351,20.4817394119194,20.5111918101232,20.5709125572811,20.5847971197663,20.5975818772964,20.6100811545247,20.6242426612394,20.6253495461766,20.6556289638502,20.7322959283409,20.7395191994269,20.7661355283733,20.7661357076933,20.7719746615408,20.7800846305135,20.7808256319938,20.8442492984601,20.8489702964156,20.868885194009,20.9052258326903,20.9842372789098,21.0214069121266,21.0223046736299,21.0314759252442,21.0380363220098,21.0466872348457,21.0522367962464,21.066856312906,21.0828544414201,21.0906353396245,21.0910575873338,21.094676859889,21.1120872850667,21.1125073633245,21.1230273817384,21.1367398237663,21.1425070482575,21.1578587362943,21.1898117789936,21.1914819145578,21.198982743204,21.2100980031007,21.2170272695586,21.2237004084347,21.225359956047,21.2428624897922,21.2475831313443,21.2713261111485,21.2723150353092,21.2756497593348,21.281750186602,21.2828633715709,21.2981428043555,21.2998099741936,21.3087133075417,21.3106296756719,21.3159135497138,21.3159135497138,21.340086444012,21.3412031079085,21.3639701859783,21.3817471552506,21.3862012418522,21.3892386107138,21.3920304286186,21.396739674057,21.4014827610122,21.414529134888,21.4603540452707,21.4742482158436,21.4781314893739,21.4798087319523,21.4875829268124,21.4973080384005,21.4998034229448,21.5034120972231,21.5381469652284,21.5514625405691,21.5525805617302,21.6245400751426,21.6306246712065,21.6342510745708,21.6503619683367,21.6881254590138,21.6923102438873,21.8245305230332,21.8509230610954,21.8698257495875,22.0670311160385,22.0812037580584,22.1164871633938,22.1320264253002,22.1517384882524,22.1723108743205,22.1851027130601,22.1881520248654,22.2198215860574,22.2267477544789,22.2498289803676,22.2517344990074,22.2795316135962,22.2842516774922,22.3203730489229,22.3237017115721,22.3487036111959,22.3490378011125,22.3526082059545,22.548298456525,22.5980631016669,22.6374673580289,22.6834848977063,22.6838654290495,22.6878351732776,22.707475071365,22.7135243041838,22.7150438644019,22.7193310023674,22.7214350933031,22.7216740382171,22.7250828936351,22.7251234092472,22.7269522985009,22.7389374140145,22.7565269198261,22.7610011134069,22.7617527074753,22.7708373643603,22.7779657372022,22.780017306839,22.7806358282174,22.7870440614144,22.7889346798345,22.7970141718961,22.8043914205191,22.8113052544599,22.8148428826107,22.8150886689113,22.8302930920103,22.8314938221611,22.8351521658943,22.8426357860217,22.8427711336466,22.8469445035107,22.8480462729253,22.8480850842646,22.8537539766953,22.8557531349836,22.8590125133108,22.8650010829228,22.8685692545202,22.8710890679373,22.8760898259493,22.876792507616,22.8832581858955,22.8833776534509,22.8843973196321,22.8852270487339,22.8867175524778,22.8867273611116,22.8877577944981,22.888619094963,22.8886674405803,22.8894872102268,22.8948283701027,22.8966772142458,22.8992971057728,22.8993170834898,22.9003372211428,22.9016821661869,22.9026932008736,22.9027008870683,22.9051426569014,22.9063415326243,22.9105323121383,22.915203223829,22.9178497899964,22.9183950507829,22.918597495016,22.9386322692361,22.9403919990806,22.9458253909755,22.9561236524778,22.962086138081,22.9644140328423,22.9682927873426,22.9684754751422,22.9685218154895,22.9760319361482,22.9770232822815,22.9841925256431,22.986859544952,22.9870095503698,22.9888228524035,22.9915625000412,22.9921078979788,22.9954546153042,22.9967352089817,22.9971050518756,23.0029225862653,23.0030644916107,23.0047479958044,23.0096091991843,23.0133563049702,23.014376811585,23.0186885033132,23.0209397069456,23.0254039807687,23.0421685929774,23.043374760706,23.0487052114812,23.0546153228404,23.0573879959102,23.0662176273004,23.0687455445522,23.0725972991467,23.07276031742,23.0747403829133,23.0809599181078,23.0827921018931,23.0829597205514,23.0839549223731,23.0886600976478,23.0911346446024,23.0926255058489,23.0996009121131,23.1010714226023,23.1026244176171,23.1064351027446,23.1070503289724,23.1078353853123,23.1078903154253,23.1079299517781,23.1083572243095,23.1120602929824,23.1126013620465,23.1136370614133,23.1178415513153,23.1244466304042,23.1252209119405,23.1256315987057,23.1272020184828,23.1296863367151,23.1418054267231,23.1437308651462,23.1470607648091,23.1472954972936,23.1472946925788,23.1482960115802,23.1522616221334,23.1523150875755,23.1533808255991,23.158671301695,23.1596910561924,23.1604173177807,23.1612110332065,23.1614600542101,23.1616664806121,23.1627957881444,23.1641604902389,23.1666277956478,23.1729970833811,23.1777194896021,23.182598354977,23.1846495736691,23.1865017953228,23.1892552064581,23.1942762511438,23.2084910618589,23.211337190802,23.2116366280373,23.2175960749898,23.2189618475758,23.2359241446354,23.2653534735005,23.2720613680005,23.3042438685512,23.3089831068604,23.3162024208363,23.3285641258146,23.3590687930725,23.5150873089122,21.4078083935918,21.4080868474535,21.049345981818,21.0376518761364,21.354252912695,21.3572556150304,21.3567349948645,21.3530783441723,21.4403102534525,21.3591980885674,21.4109636431754,21.3925333094889,21.4066946071033,21.4066946071033,21.3958587813977,21.5378051647988,21.1644863059081,21.1679671782697,21.1668680668311,21.1711449030358,21.2441979339605,21.1233604015086,22.0208597894171,22.0329621592785,21.2380883870489,21.2369690853153,21.2386418204112,21.2761897616018,21.2444731156645,21.2236385583199,21.2233639477802,21.2494714108055,21.2175310031184,21.3111413023177,21.3065504645412,21.3030233644439,21.299170389986,21.2998330019863,21.2980425906629,21.2910146446711,21.304488735505,21.3061365223259,21.4055875016249,21.4075295181949,21.5397466440254,21.6086789222867,21.6228088586426,21.6314141432256,21.3364236761532,21.3361396583275,21.3617019901087,21.3483668112517,21.3580900774139,20.8389284016862,20.8411429715075,21.4728115218861,21.4703102711116,21.284468375145,21.2444725325979,21.324754537538,21.3230909447227,21.3217019235944,21.3737659857952,21.3758633544766,21.3750241458873,22.0039102216127,21.0939270449583,21.0778145971408,21.1344729176166,21.3291976384989,21.3361427900283,21.0361508380358,21.3084603980655,21.2900287992862,21.2897559828216,21.2939200499372,21.2855853845705,21.286139723805,21.2953049073354,21.2822514420582,21.2875219689291,21.2794756911944,21.300589797754,21.2839167307257,21.2864184021278,21.2819690609855,21.2872565648892,21.2836450764576,21.1786702283557,21.1789188212396,21.1716925257332,21.174751437221,21.1742007015786,21.1803144248795,21.1850258312271,21.1730895852462,21.1711416982972,21.2297510008354,21.2739131700948,21.219986669469,21.2178029727668,21.2214232866204,21.2266949954996,21.1225351942126,20.9858645806191,21.1228048089014,21.0022762821349,20.9986481830506,21.0033639855449,21.0044716417612,20.9855845379242,20.9989226347552,20.997533664095,21.3921605904986,21.4043695166249,21.4021448274631,21.434075753197,21.2009209889563,21.190031394544,21.2655920654802,21.2232848950996,21.2255893475755,21.2197486467285,21.1255894253282,21.2200277322794,21.2433568228198,20.9728122317689,20.9764268002932,20.9447511030538,20.9475347680119,20.9436410552119,20.9367044018439,20.9403072748051,20.625588276647,20.6194853653007,20.611708618398,20.6139229435971,20.6272552268759,20.6242108045562,20.6280894667116,20.6278129972471,20.6547637756624,20.6319845420359,21.2478045352725,21.3222530347029,21.3322533517234,21.6011409217507,21.3803120701091,21.9616947431543,20.5565956107355,21.3797527735837,21.3803050619126,21.2003071852527,21.3449035599135,21.2894705440797,21.3439204663291,21.3272451811968,21.7194621487015,21.6511347339879,21.6277997496594,21.6450588899578,21.6836086409296,21.6830819153787,21.6878075749785,21.6377977713406,21.6964167120462,21.6414272483161,21.6250285981727,21.2059227119073,21.2084719908071,21.5172550349024,21.1594706979942,21.2253052062113,21.4998452661407,21.0314940041527,21.3876527524795,20.5878220647079,20.8572507136132,20.847818035272,21.8525230898493,20.8547567890511,20.8530599849146,20.8458623297341,20.8467003933643,21.1930810010035,21.1914148040222,21.1916949006995,21.1975297386639,22.174002074153,21.3412018583544,21.1691576034872,21.4989219194693,21.0922575107159,21.0844719450974,21.4148001252733,21.4742942937912,22.1180729773643,21.4619721997981,22.0686275744461,21.310308307754,21.3014204541728,20.6117013509279,20.5992099730656,20.6005971066221,20.5725385585492,20.5615298146467,20.5639294288091,21.1983651910345,21.2772490812507,20.8505915191752,21.3920266770938,21.3642339509961,22.321448250249,22.3502992345001,21.0239198490568,20.6266389470651,20.6572598904013,21.3159569374811,21.5819680058273,21.3428028535895,21.299755828155,20.6258744962039,20.6811479226391,20.6372614742501,21.211699696654,21.2017003905432],null,null,null,{"clickable":true,"draggable":false,"keyboard":true,"title":"","alt":"","zIndexOffset":0,"opacity":1,"riseOnHover":false,"riseOffset":250},["Beba Veche - in the ditch","Dudestii Vechi - Dragomirs' hill","Nerau - Hunca Mare","Nerau - Dogans' hill","Cenad - Habitation Area","Nerau - The south canal","Nerau - The east canal Gigosin","Vizejdia - La Hunca","Sannicolau Mare - Viile","Archaeological site from Sannicolaul Mare - Seliste","Early medieval cemetery from Nadlac-Lutarie","Earthwall from Saravale-santul roman","Archaeological site from Nadlac - Freeway Nadlac-Arad (Km 3+483-3+935 )","Archaeological site from Nadlac - situated 3 M (Freeway Nadlac - Arad, lot 1, km. 2+020-2+200)","Archaeological site from Nadlac - situated 2 M (Freeway Nadlac - Arad, lot 1, km. 1+125 - 1+440)","Archaeological site from Nadlac - Freeway Nadlac-Arad (Km 1+285-1+510 )","Archaeological site from Nadlac - situated 1 M (Freeway Nadlac - Arad, lot 1, km. 0+000 - 0+300)","Tumulus VI-VII (Neolithic Epoch and Bronze Age) from Checea - In hotarul satului (village district)","Archaeological site from Periam - hill with ditch","Archaeological site from Nadlac - Freeway Nadlac-Arad (Km 8+225-8+560)","Medieval settlement from Nadlac - Freeway Nadlac-Arad (Km 10+660-11+120)","Archaeological site from Pecica - santul Mare (Big ditch)","Archaeological site from Pecica - Freeway Nadlac-Arad (Km 18+605-18+890)","Medieval fortress from Satchinez - Gradiste","Archaeological site from Becicherecu Mic - Satul vechi (Old village)","Archaeological site from Pecica - Freeway Nadlac-Arad (Km 21+390-21+820)","Archaeological site from Pecica - Freeway Nadlac-Arad (Km 21+820-22+155)","Medieval settlement from Pecica - Freeway Nadlac-Arad (Km 23+290-23+880)","Medieval settlement from Pecica - Freeway Nadlac-Arad (Km 22+750-23+250)","Archaeological site from Hodoni - Pusta","Archaeological site from Hodoni - La Pocioroane","Medieval settlement from Pecica - Freeway Nadlac-Arad (Km 26+820-27+235)","Archaeological site from Pecica - Freeway Nadlac-Arad (Km 27+300-27+575)","Archaeological site from Pecica - Freeway Nadlac-Arad (Km 28+575-28+900)","Medieval settlement from Pecica - Freeway Nadlac-Arad (Km 28+910-29+270)","Medieval settlement from Pecica - Freeway Nadlac-Arad (Km 29+560-29+840)","Archaeological site from Felnac - Complexul porcine","Medieval settlement from Pecica - Freeway Nadlac-Arad (Km 30+710-31+045)","Archaeological site from Timisoara - Cioreni","Roman wall from Chisoda - Valu roman (roman rampart)","Neolithic settlement from Chisoda - Livezile","Archaeological site from sag-Mlaca","Brone Age tell from Voiteg - La Vii SV","Fortress from Sanandrei La Cetatuie","Fortifications from the Timisoara fortress - Parcul Botanic (Botanic Garden)","Public fountain from Timisoara","Archaeological site from Giroc Saliste","Bronze Age settlement from Seceani Viile Vinganilor","Archaeological site from Pischia - Freeway Arad-Timisoara (Km.38+300 - 38+700)","Archaeological site from Padureni-Pusta Mica","Medieval fortification from Opatita - Calasturi","Archaeological site from Timisoara - Padurea Verde (green wood)","Archaeological site from Giroc - Mescal","Archaeological site from Unip - Dealu Cetatuica","Archaeological site from Mosnita Veche - Satul batran (Old Village)","Archaeological site from Moravita - Islaz","Archaeological site from Arad- baypass beltway from Arad - km. 12+250-11+950 (Freeway)","Medieval fortress from Seceani - La cetate (To the fortress)","Archaeological site from Stanciova - Gradiste","Archaeological site from Giarmata - Cetatuica","Archaeological site from Unip - Ocoale","Medieval monastery from Remetea Mare - fortress","Archaeological site from Pischia-Padurea Pischia sud-est","Neolithic tell from the Bucovat period - Gruniul cu cremene","Archaeological site from Vladimirescu - La cetate (To the fortress)","Archaeological site from Remetea Mare - Gomila lui Gabor","Medieval basilica from Vladimirescu - La Bisericuta (To the little church)","Fortification made from soil from Dragsina-Sighed","Medieval fortification from Ianova - cetatea Turceasca (Turkish Fortress)","Medieval fortress from Masloc - Turkish ditch ","Archaeological site from Izvin - Dupa Vii","Medieval site from Frumuseni - manastirea Bizere (Bizere monastery)","Post- Roman settlement from Herneacova-Fantana rece (Cold fountain)","Earthwall from Alios drumul Nazdravenilor (Nazdravenilor way)","Fortified settlement from Herneacova - fortress","Medieval fortress from Alios : Turkish Fortress (cetate Turceasca)","Bronze Age fortification from Alios Valley Aliosu","Medieval settlement from Duboz-nord-vest","Archaeological site from Zabrani - Dealul Pietrei (The stone hill)","Post-Roman earthwall from Sambateni - La Iarcuri","The fort belonging to the IV Legion of Flavia Felixand, the roman settlement from Berzovia","Middle Ages fortress and settlement from Covasant - Tornea","Archaeological site from Topolovatu Mare-Joamba","Archaeological site from Cladova - Dealul Carierei","Archaeological site from Pancota - Turkish Fortress (cetate Turceasca)","Archaeological site from Lucaret-CIrjna","Fortification made from soil from Targoviste-Targoviste Sud","Tumului III and IV from an unknown epoch from Checea - In hotarul satului (village district)","Medieval church from Resita - Ogasele (Cities)","The medieval ensemble from Manastiur - La manastire (The monastery)","The settlement, type Balta Sarata , from Surducu Mic-ses","Medieval fortification from Jdioara- fortress","Archaeological site from Bulci - La cetate ( To the fortress)","Archaeological site from Berindia - La cetate (To the fortress)","Medieval fortress from Faget - fortress","Roman city Municipal Tibiscum - Iaz - Traianu","Roman fort and vicus (municipal Tibiscum) from Jupa - cetate (Fortress)","Roman temple from Caransebes - Sat Batran (Old village )","Archaeological site from Savarsin - Dealul Cetatuia (Cetatuia hill)","Roman building from Bucosnita - Saliste","The cave complex from Moneasa - Hoanca Coului","Medieval fortress from Margina - Lanu Holdele Lungi","Medieval trade fair from Margina - Lanu Holdele Lungi","Palaeolithic settlement from Romanesti - Dumbravita","Palaeolithic habitation from Cosava-Dambu Ples","Archaeological site from Romanesti - Varful lui Filip (The top of Filip)","Neolithic settlement from Pojoga - Pestera Gaura Scroafei (Gaura Scroafeis´ cave)","Roman fortification from Bucosnita - Lunca","Prehistoric settlement from Bradatel- Deal","settlement soimus from Brotuna- Coasta Cremenea","Archaeological site from Runcu Mare - Pestera from Runcu Mare","Roman Age exploitation from Caraci- valea steampurilor (steampuriloes' valley)","Roman Age exploitation from Caraci- Adamul Nou","Archaeological site from tebea - Dealul Magura (Magura hill)","Cache of coins from Baia de Cris- Gura Voinii","Franciscan monastery ensemble from Baia de Cris","Bronze Age settlement from Baia de Cris- Fantana Borchii (Borchii fountain)","Dacian settlement from Bretea- Muresana-Magura Branisca","Prehistoric settlement from tebea - Rusti","Gold mine from Baia de Cris- La Ptincuri","Roman settlement from Zeicani - Saivan","Roman settlement from Zeicani - Ruini","Roman settlement from Poieni - Parau","Archaeological site from Cerisor - Pestera Cauce (Cauce cave)","Cotofeni settlement from Cave number 3 from Cerisor","Eneolithic Period settlement from Branisca- Pe hotar","Settlement in the cave from Ribicioara - Avenul Cave with incision from Gaura Cizmii","Cotofeni settlement from Cerisor- Cave numer 4","Monastary complex Vaca from Crisan","Archaeological site from Cerisor- La Parloage","Archaeological site from Dumbrava- Pestera cu Apa (Cave with water)","Colonia Ulpia Traiana Augusta Dacica Sarmizegetusa","Settlement Cotofeni from Cherghes- Pestera Magura","Roman epoch brick construction from Hobita-Gradiste - Dealul Sucionilor (Sucionilor hill)","Archaeological site from Valioara - La Caramizi","Settlement from Nandru - Pestera Curata (Clean Cave)","Archaeological site from Vetel-Micia","Archaeological site from Dealu Mare - Rusti","Roman Epoch settlement from Minita- Acetylene factory","","Neolithic settlement from Mintia - Gerhat","Neolithic settlement from Josani - Jumatati","Neolithic settlement from Livezi - Cetatuie","Fortified settlement (Latène Period) from Cozia - Varful Piatra Coziei","Roman settlement from Josani - La Caramizi","Archaeological site from Almasu Sec","Medieval court Candestilor from Rau de Mori","Villa rustica from Carnesti- Mezeinita","Medieval church from Carnesti","Archaeological site from Farcadin - Maieriste","Villa rustica from Cincis-Cerna - La Popeasca","Archaeological site from Cincis-Cerna- Motel","Villa rustica from Unirea - Dealul Mangop","Archaeological site from Totesti - Movile","Neolithic settlement from Hunedoara- Pestera Nr. 2 (Hunedoara- cave number 2)","Neolithic settlement from Hunedoara- Pestera Nr. 1 ( Hunedoara- cave number 1)","Archaeological site from Hunedoara - Dealul Sanpetru (Sanpetru hill)","Archaeological site from Hunedoara - Strada Toamnei (Toamnei street)","Neolithic settlement from Hunedoara- Pomilor street, number 4","Corvinestilor fort - Hunedoara","Archaeological site from Hunedoara - Gradina castleului (Castle garden)","Prehistoric settlement from Cincis-Cerna - Curtea scolii (School garden)","Archaeological site from Hunedoara - Elisabeta Margineanu stree","Archaeological site from Hunedoara- Reformed cemetery","The church site sfarsitul lui Nicolaie (Nicolaies' end) and the prehistoric settlements from Hunedoara","Archaeological site from Hunedoara - Chizid","Archaeological site from Hunedoara- Piata Obor (Obor marked)","Settlement Cotofeni from Hunedoara - Gara CFR (CFR rail station)","Roman settlement from Hunedoara- Triaj"," Neolithic habitation from Unirea - Obreje","Neolithic - Eneolithic settlement from soimus - Avicola","Archaeological site from Craguis- Holda lui Boldus","Archaeological site from Sanpetru - Movila","Archaeological site from Craguis- Locul Uriasilor (Giants location)","Archaeological site from Sanpetru - La Maru (The Apple)","Roman settlement from Sacel - Curtea Taur (Taur garden)","Tumulus necropole (Bronze Age) from Silvasu de Jos - Dealul tapului (tapului hill)","The romanian church site Inaltarea Domnului from Nucsoara","Archaeological site from Hunedoara- Buituri","Medieval church from Vadu - Biserica Veche (Old Church)","Archaeological site from Vadu - cimitirul (Vadu-cemetery)","Medieval fortress from Malaiesti- Sub Brazi","Archaeological site from Salasu de Sus - sasa","Orthodox church from Pestera (Cave)","Archaeological site from Buces-Vulcan- La Izvor sub Coliba Barnei","Archaeological site from Santamaria-Orlea - Gradinile Coliconilor (Coliconilors' gardens)","Romanian church site Pogorarea end of Duh from Paros","Medievale reformed church site from Santamaria-Orlea","Archaeological site from Santamaria-Orlea - Terasa Grindanu","Archaeological site from Santamaria-Orlea - Troian","Archaeological site from SuADetate - Orlea tower","Archaeological site from Strei","Archaeological site from Strei","Roman way from Bucium-Orlea - Pod","Hallstatt settlement from SuADetate - Vatra Satului","Archaeological site from Strei - Canton CFR","Roman settlement from Rau Alb - Latura Cetatii","Medieval church from Coroiesti","Neolithic settlement from Rau Alb - fortress","Settlement Cotofeni from Ciopeia- Purcaretu","Archaeological site from Baiesti- Ferma Baiesti","Archaeological site (Romanian Age) from Calan - Aquae","Roman settlement from Streisangeorgiu - Ferma","Roman settlement from Dupa Piatra - Gura Cheii","Archaeological site from Santamaria de Piatra - Gradiste","Neolithic settlement from Strei-Sacel - Pe sesuri","Medieval complex from Streisangeorgiu - Streisangeorgiu monastery","Old romanian orthodox church from Rusor","Settlement Cotofeni from Santamaria de Piatra - Hotar","Dacian observation point from Baiesti- Cetatuie","Fortified settlement from Rapoltu Mare - Magura Uroiului","Archaeological site from Rapoltu Mare - Sedi","Archaeological site from Stanija - Mina Stanija (Stanija mine)","Archaeological site from Calan- Magura Calanului","Roman settlement from Rapoltu Mare - La Vie","Archaeological site from Jeledinti - Magura","Tumulus from Galbina - Mogaita","Bronze Age settlement from Balsa- Piatra Baltii","Roman necropole from Almasu Mic de Munte","Settlement Cotofeni from Bobalna- Avenul Cepturi","Archaeological site from Techereu - Dealul Fericeu (Fericeu hill)","Neolithic settlement from Rapoltu Mare - Bagadau","Bronze Age settlement from Balsa- Dealul Ceratului","Medieval orthodox church from Pui","Archaeological site from Rau Barbat - fortress","Archaeological site from Deva - Dealul Cetatii (Cetatii hill)","Settlement (Eneolithic Period) from Balsa - Deasupra Bisericii (Over the church)","Neolithic settlement from Rapoltu Mare - Plese","Villa rustica from Bobalna- Fantana lui Parau ","Bronze Age tumulus from Balsa - Dumbraita","Roman wall from Pui - Magura","Bronze Age settlement from Balsa- Piatra Vacarului","Cave from Balsa - Dosul Dobarlesei","Roman settlement from DIncu Mare","Bronze Age settlement from Balsa- Varful Muncelului","Archaeological site from Balsa- Piatra and ncuiusului","Prehistoric settlement from Turdas - La Lunca","Dacian fortification from Bosorod - valea Stupariei (Stupariei valley)","Villa rustica from valea Lupului (Wolf valley) - La Ruine","Settlement from Mada - Pestera Zidita","Tumulus necropole from Mada - Chiciorele","Hill from Mada - Pleasa Mica","Roman settlement from Livadia - Livezea","Archaeological site from Pricaz- Sitesului valley","Archaeological site from Ardeu - Cetateaua","The cave complex from Ardeu- Cave number 4, Pestera de Jos (The cave from below), Pestera Surpata Raiu and Pestera cetate (Fortress cave)","Settlement in the cave from Ohaba Ponor - sura Mare","Bronze Age settlement from Boiu - La Magulicea","Eneolithic settlement from Ponor - Pestera lui Cocolbea","Dacian supervision tower from Costesti- Ciocuta","Settlement in the cave from Ohaba Ponor - Bordu Mare","Archaeological site (Latène) from Costesti - Cetatuia Inalta","Fort from Costesti - Gradiste","Tower from Costesti - Poiana Pertii","The mound complex (unknown epoch) from Orastie - tatele Gorganului","Dacian fortress from Costesti - Blidaru","Dacian settlement from Costesti- La Curti","Settlement Cotofeni from Baru- Blidaru","Dacian settlement from Ohaba-Ponor","Dacian settlement from Costesti- church","Church site sfarsitul lui Ilie din Baru (The end of Ilie from Baru)","Settlement Cotofeni from Baru- church","Roman settlement from Orastioara de Sus - Piatra Gradistii","Latène settlement from Bucium - Carpenis","Roman necropole from Bucium- Botes, Corabia","Archaeological site from Ocolisu Mic - Apa Gradistii","Archaeological site (Romanain Age) from Cigmau - cetatea Uriasului (Giants' fortress)","Medieval fortress from Orastie","Fort from Costesti - Prisaca","Prehistoric settlement from Orastie - Dealul Pemilor X3 ","Settlement Turdas from Orastie - Dealul Pemilor X1","Archaeological site from Orastie - Dealul Pemilor X2","Archaeological site from Gradistea de Munte - Pestera 1 din Culmea Vartoapelor (The first cave in Culmea Vartoapelor)","Roman fortification from Baru - La fantana (To the well) ","Dacian settlement from Gradistea de Munte- Dealul Muncelului (Muncelului hill)","Latène fortification from Gradistea de Munte - Varful lui Hulpe","Latène settlement from Gradistea de Munte - Fetele Albe (White faces)","Archaeological site from Gradistea de Munte - Sarmizegetusa Regia","Dacian atelier from Gradistea de Munte- Caprareata","Archaeological site from Gradistea de Munte - Tampu","Dacian settlement from Romosel - Cioaca Gradistii","Archaeological site from Baru - La Comarnicel","Bazosu Nou 1","Bazosu Nou 2","Becicherecu Mic 1","Becicherecu Mic 2","Berecuta 1","Berecuta 2","Berecuta 3","Berecuta 4","Berini ","Bucovat 1","Bucovat 2","Bucovat 3","Bucovat 4","Bucovat 5","Bucovat 6","Cadar ","Carani 1","Carani 3","Carani 4","Carani 6","Cerneteaz","Ciacova","Ciresu 1","Ciresu 2","Cornesti 2_1","Cornesti 3","Cornesti 2_4","Cornesti 2_5","Cornesti 7","Cornesti 8","Cornesti 9","Cornesti 10","Cornesti 11","Cruceni","Dejan 1","Dejan 2","Dejan 3","Dejan 4","Dejan 5","Dejan 6","Dejan 7","Dejan 8","Dragsina 1","Dragsina 2","Duboz","Ersig 1","Ersig 2","Ersig 3","Firiteaz 1","Firiteaz 2","Firiteaz 3","Firiteaz 4","Firiteaz 5","Foeni 1","Foeni 2","Frumuseni 1","Frumuseni 2","Ghiroda","Giroc 2","Hunedoara Timisana 1","Hunedoara Timisana 2","Hunedoara Timisana 3","Icloda 1","Icloda 2","Icloda 3","Maguri ","Mailat 2","Mailat 3","Manastur","Mosnita Veche 1","Mosnita Veche 2","Munar ","Murani 1","Murani 2","Murani 3","Murani 5","Murani 6","Murani 7","Murani 8","Opatita 1","Opatita 2","Opatita 3","Opatita 4","Opatita 5","Opatita 6","Opatita 7","Opatita 8","Opatita 9","Ortisoara 1","Ortisoara 3","Ortisoara 4","Ortisoara 5","Ortisoara 6","Ortisoara 7","Ortisoara 8","Ortisoara 9","Ortisoara 10","Ortisoara 11","Padureni 1","Padureni 2","Padureni 3","Padureni 4","Padureni 5","Parta 1","Pecica 1","Pecica 2","Peciu Nou 1","Peciu Nou 2","Peciu Nou 3","Peciu Nou 4","Peciu Nou 5","Peciu Nou 6","Peciu Nou 7","Remetea Mare 1","Remetea Mare 2","Remetea Mare 3","Sacosu Turcesc ","Sag 1","Sag 2","Sagu","Sanandrei 1","Sanandrei 2","Sanandrei 3","Sanandrei 4","Sanandrei 5","Sanandrei 6","Sanmartinu Sarbesc 2","Sanmartinu Sarbesc 3","Sanmartinu Sarbesc 4","Sanmartinu Sarbesc 5","Sanmartinu Sarbesc 6","Sanmartinu Sarbesc 7","Sanmartinu Sarbesc 8","Sannicolau Mare 1","Sannicolau Mare 2","Sannicolau Mare 3","Sannicolau Mare 4","Sannicolau Mare 5","Sannicolau Mare 6","Sannicolau Mare 7","Sannicolau Mare 8","Sannicolau Mare 9","Sannicolau Mare 10","Seceani 1","Seceani 3","Seceani 4","Siria ","Stamora Romana ","Tapia ","Teremia Mare","Tisa Noua 1","Tisa Noua 2","Turnu","Unip 2","Unip 3","Unip 4","Urseni 2","Valeapi","Vermes 1","Vermes 2","Vermes 3","Vermes 5","Vermes 6","Vermes 7","Vermes 8","Vermes 9","Vermes 10","Vermes 11","Vinga 1","Vinga 2","Zabrani ","Timisoara ''Cioreni''","Fortificatile cetatii Timisoara ","Alios- ''Cetatea turceasca''","Becicherecu Mic - ''Dealul Crucii''","Tell-ul de la Bucovat","Cetatea Morisena din Cenad ","Camp de tumului din Checea (1)","Camp de tumului din Checea (2)","Camp de tumului din Checea (3)","Camp de tumului din Checea (4)","Camp de tumului din Checea (5)","Camp de tumului din Checea (6)","Camp de tumului din Checea (7)","Tell-ul de la Chisoda","'Val roman'' din Chisoda 2 A","'Val roman'' din Chisoda 2 B","'Val roman'' din Chisoda 2 C","Cetatea din Faget","Cetatuica din Giarmata","Cetate din Giroc ","Asezare de la Herneacova","Situl archaeologic de la Hodoni","Asezare de la Hodoni","'Cetate turceasca''de la Ianova","Asezare din Izvin","Cetatea Jdioarei","Cetatea Masloc ","Asezare de la Manastiur ","Asezare de la Dejan","Tumuli din Mosnita Veche","Camp de tumuli din Nerau (1)","Camp de tumuli din Nerau (2)","Camp de tumuli din Nerau (3)","Camp de tumuli din Nerau (4)","Camp de tumuli din Nerau (5)","Camp de tumuli din Nerau (6)","Tumuli din Ofsenita","Fortificatia din Opatita","Necropola din Periam","'Gomila lui Gabor'' - Remetea Mare ","Manastire din Remetea Mare","Asezare din Romanesti","'Pesterea cu Apa''- Romanesti","Cetate din Satchinez","Asezare din Sannicolau Mare","Asezare din Sannicolau Mare","Cetate din Seceani","Asezare din Stanciova","Asezare din Unip","'Dealul Cetatuica'' din Unip","Vizejdia - Tumul (1)","Vizejdia - Tumul (2)","Vizejdia - Tumul (3)","Asezare de la Voiteg","Sit de la Voiteg"],null,null]}],"limits":{"lat":[45.2552138072707,46.4557866317873],"lng":[20.2645160214351,23.5150873089122]}},"evals":[],"jsHooks":[]}</script>
</article></slide><slide class=''><hgroup><h2>Plot it 2.0</h2></hgroup><article id="plot-it-2.0-1" class="smaller columns-2 build">
<p>You can also change the map tile provider for a wide range of different maps. An overview can be found here: <a href='http://leaflet-extras.github.io/leaflet-providers/preview/index.html' title=''>http://leaflet-extras.github.io/leaflet-providers/preview/index.html</a></p>
<pre class = 'prettyprint lang-r'>library(magrittr)
library(leaflet)
sites <- spTransform(sites, "+init=epsg:4326")
m2 <- leaflet() %>%
addProviderTiles("OpenStreetMap.HOT") %>%
addMarkers(lng=sites@coords[,1],
lat=sites@coords[,2],
popup = sites@data$Site.Name
)
m2</pre>
<div id="htmlwidget-cc9892c8d4fb1855b04c" style="width:480px;height:480px;" class="leaflet html-widget"></div>
<script type="application/json" data-for="htmlwidget-cc9892c8d4fb1855b04c">{"x":{"calls":[{"method":"addProviderTiles","args":["OpenStreetMap.HOT",null,null,{"errorTileUrl":"","noWrap":false,"zIndex":null,"unloadInvisibleTiles":null,"updateWhenIdle":null,"detectRetina":false,"reuseTiles":false}]},{"method":"addMarkers","args":[[46.10436522521,46.0163171668706,45.9482573250011,45.9599286038472,46.1379801372109,45.9810388558126,45.97353895999,45.9290882852112,46.062430417336,46.06770079982,46.1763228442366,46.0704914340328,46.1804732091055,46.2082338332158,46.2097234312076,46.2110335213659,46.2082341394988,45.7210393024681,46.046872891546,46.2075248451501,46.2090250497249,46.1518858712779,46.2101567306144,45.9357638732515,45.8735439907109,46.2058368998948,46.2038770898927,46.204347190028,46.2027276712341,45.9143752149885,45.8963251171361,46.186287688614,46.1863378488273,46.1754779330934,46.1724579969463,46.173938471329,46.1271574338094,46.1770586717338,45.7960448710669,45.7018736889873,45.698544198994,45.6407638081177,45.4696519604728,45.8552160034938,45.7579951894291,45.7565950148433,45.6652045935218,45.9757675273502,45.896617682516,45.6018742752331,45.4168725067543,45.7829859707974,45.661604914415,45.6693752221746,45.7452161887314,45.3007612923791,46.131330733281,45.9768789265844,45.9768789265844,45.8841084179824,45.646045940492,45.7735468258404,45.9121592383958,45.755487701913,46.1554912299861,45.7763279186599,46.1549416364027,45.7002071372126,45.8213283586023,45.9921606402681,45.8388291247786,46.1116121808251,45.8518792794417,46.0529915831163,45.8835503467419,46.0238318409751,46.0641120882875,45.5543771244513,46.0771630183599,46.1393840240658,45.4452171276503,46.3282770569707,45.7752112649047,46.1054950717375,46.3291073495831,45.8313327365035,45.8052235508098,45.7279936130249,45.299379414252,45.8368876354937,45.7710574058461,45.6279959106278,46.0266102748493,46.3266236915856,45.8657793989327,45.4741150920492,45.4654953540755,45.4660553221351,46.009391516464,45.2552138072707,46.4557866317873,45.858000868956,45.8568912352106,45.817720814169,45.853281749993,45.796060870928,45.9802829073154,45.2788355667316,46.0018256407774,46.2047293168848,45.7458145947274,46.1556497626576,46.1471092135875,46.1626795896726,46.1753499803178,46.1739805088741,46.178060018315,45.9517978738396,46.1595404408666,46.1757903739441,45.4955925140366,45.504503091105,45.5480032748951,45.7571455672256,45.7651859903777,45.9310081915841,46.2335917248537,45.7335061608019,46.1703212505316,45.7493264906729,45.8054467936092,45.5168942468138,45.8493379351055,45.4971439829341,45.5986451124549,45.8057575434572,45.9148789227653,46.0330097178508,45.913098723286,45.5205042603898,45.9162789936789,45.7999576623062,45.621905754672,45.8672090905509,45.7938280217982,45.8496887771765,45.4957743196564,45.546935167274,45.5500550562875,45.6044158838201,45.6875871600032,45.696407332102,45.6379863621303,45.5761960270137,45.7445880684487,45.7443178726125,45.7457375923925,45.7475474752526,45.747827992475,45.7487675206215,45.7483283535414,45.7013573343463,45.745147710426,45.7478776157186,45.7469079450523,45.7421680019919,45.7454277846727,45.7607181111679,45.7637587297911,45.6128165111346,45.9138104196795,45.621016601865,45.5532660699382,45.6165966784673,45.5510265513074,45.5567162388583,45.6651472073286,45.4836153156877,45.7731788586122,45.5857167449659,45.5852971096414,45.4828154277018,45.5420366091777,45.4734459062971,46.2410846504807,45.5849969301896,45.4982765747671,45.5902271213861,45.5948274857963,45.580817217568,45.5972575926317,45.7169092743638,45.7161388860042,45.5886674095469,45.6023274226085,45.7254587263147,45.5130671456917,45.4823064689337,45.5121669746823,45.5577172416459,45.5334071168618,45.7537397691581,45.7135391216188,46.1876148382018,45.7761597990095,45.7472899107651,45.7286992504042,45.5271874839966,45.7596402172998,45.5456779670308,45.8580117264368,45.8566112613801,46.1298648292624,45.7694209434137,45.8650617187341,45.7878605933752,46.0242134840325,46.0291332206812,46.0565336852183,45.9595330481021,46.0924342093066,45.8744817150703,46.0421436141484,45.5143685688395,45.4943882358188,46.0361440487309,46.0296636530428,45.8754923723924,45.8720918925117,46.0195341624277,45.5328181905066,46.045124204579,46.0361445803879,45.7641107492089,46.0427241631334,46.0170141034692,45.8361124582466,45.6568302897873,45.4742777669989,46.0063745162063,46.0025641441416,46.0031343489226,45.4812182431862,45.8563830716542,46.0168248154434,46.0399944192868,45.5298794255481,45.9032430658778,45.5119292954402,45.6790006998523,45.5138185709734,45.6755412191965,45.6846313477541,45.6691204470314,45.8013824249618,45.6673508944918,45.6807513749556,45.4603481662307,45.5178988016865,45.7028516390445,45.4496586931772,45.4730391221631,45.7420917964059,45.7549923615709,45.7440323435957,45.6555812521185,45.8963539458102,45.8367230524045,45.687421313925,45.8306532855176,45.8323936420864,45.8602336016789,45.6478712697505,45.5486208308196,45.6273019932768,45.6641621537077,45.6245723522825,45.6217420809963,45.6338823432999,45.607672647482,45.7730844733341,45.5330045516752,45.7502713994269,45.7505503283684,45.8759993195851,45.873666330175,45.4040791836976,45.4052742039574,45.4062029636961,45.4044464726031,45.5602777723343,45.755274261562,45.7396104019812,45.7513824872775,45.7349920836831,45.7349920836831,45.7411056570403,45.5369427608129,45.882883207392,45.9205047391883,45.9173705842808,45.9197106829296,45.8430535809504,45.515550299943,45.6508249543907,45.6397161137528,45.9416572385049,45.9269348273596,45.9344359272117,45.484083278727,45.936383899182,45.9263856626138,45.9241621848269,45.8827742783865,45.8991610856388,46.0577725087396,45.3008301279964,45.2952487355223,45.296438084028,45.2948745931554,45.293204107005,45.295505000824,45.2976293248584,45.3063905323302,45.7008316973757,45.7022163136898,45.5547215184797,45.9387118793876,45.5024939196343,45.4997148291899,46.0097131075826,46.0116571151237,45.9994367136986,45.990826995398,46.0038780588639,45.5072196212356,45.5086070952506,46.1072116203136,46.1088806732604,45.765269449138,45.6655557940666,46.0299930764769,46.0349911566888,46.0216557233739,45.6426632138085,45.6302773622436,45.6333296356639,45.6566637517392,46.0472121900472,46.026381431578,46.0263765149812,45.7488814057485,45.7536072750392,46.1038789828591,45.9530320143268,45.9255479185959,45.9472117907366,45.9499939902905,45.9011002912454,45.9011007046411,45.9058287521266,45.4202759654185,45.4188910274307,45.4177723378125,45.4227747352382,45.4105513657469,45.4177740424429,45.4069403755655,45.4116690751629,45.4055545285582,45.9761156497367,45.9719363811275,45.9705515050853,45.9758219962638,45.9652680768198,45.9736046599271,45.9766608605475,45.9727679940185,45.9761064707171,45.9633257192832,45.602221492606,45.5829463313999,45.5811080095118,45.5766635507619,45.5875003247358,45.6519397942151,46.1538832068723,46.1886025061502,45.6074697817321,45.6138892814543,45.6111106443007,45.6058270404355,45.6119432731438,45.6147182723078,45.6133276031825,45.7774642607579,45.7876914964937,45.7858659081148,45.6389954267741,45.6402293617934,45.6544442194934,46.0663773623092,45.8603801758352,45.8511014574493,45.856103659461,45.854716743844,45.8772193300507,45.8811052640281,45.6061065231728,45.610277473051,45.5983276579575,45.5983280701892,45.6005485571874,45.6013820152373,45.5980526926838,46.0508298622451,46.0527672659784,46.0516574786828,46.0555521951119,46.0560995666573,46.0530466080424,46.0602748043896,46.0608220200152,46.0724953174678,46.0630441897915,45.9736006542729,46.0055471841509,45.9877887504962,46.2747101253629,45.6269790974475,45.6763860826144,45.9484299107176,46.0619392655052,46.0655492298215,46.2569325394814,45.6478359100378,45.6663831324805,45.6402763083036,45.6866618220761,45.501660497492,45.533809267653,45.5189656649369,45.5152087494209,45.5229847395518,45.5030530979223,45.5249973842626,45.5177761373017,45.5258336300693,45.518981766178,45.5177765124141,46.0023355556939,45.9967930204375,46.1099874037414,45.7963864581853,45.7583268632664,46.024030565019,45.8736141899773,45.7582505121308,46.1108268121645,45.7463808430534,45.7327721245789,45.7283309154043,45.7205517994559,45.7247052917956,45.7213808196405,45.7208256985896,45.6988862392369,45.7022157458139,45.6947148906004,45.6402694791639,45.8669843166857,45.8837909743332,45.6581196932121,45.8838790317489,45.8966586379394,45.9147160490407,45.8214164814371,45.8389477415501,45.6283269368233,45.9924943245942,45.837210238966,45.3011143277699,45.746110226233,45.9738801910113,45.9813784911877,45.9816569589342,45.960271312892,45.9485587541586,45.9477695972731,45.4122216880569,45.4172214857142,46.0472134324987,45.7763432327281,45.7737584019943,45.8177902888227,45.7963831498619,45.9361064635835,46.0627586455981,46.0680513113238,45.9770174125768,45.8858300006278,45.6463813857331,45.6697166347528,45.9294374568745,45.9308237072158,45.956658198211,45.4700018496923,45.4838862508483],[20.2645160214351,20.4817394119194,20.5111918101232,20.5709125572811,20.5847971197663,20.5975818772964,20.6100811545247,20.6242426612394,20.6253495461766,20.6556289638502,20.7322959283409,20.7395191994269,20.7661355283733,20.7661357076933,20.7719746615408,20.7800846305135,20.7808256319938,20.8442492984601,20.8489702964156,20.868885194009,20.9052258326903,20.9842372789098,21.0214069121266,21.0223046736299,21.0314759252442,21.0380363220098,21.0466872348457,21.0522367962464,21.066856312906,21.0828544414201,21.0906353396245,21.0910575873338,21.094676859889,21.1120872850667,21.1125073633245,21.1230273817384,21.1367398237663,21.1425070482575,21.1578587362943,21.1898117789936,21.1914819145578,21.198982743204,21.2100980031007,21.2170272695586,21.2237004084347,21.225359956047,21.2428624897922,21.2475831313443,21.2713261111485,21.2723150353092,21.2756497593348,21.281750186602,21.2828633715709,21.2981428043555,21.2998099741936,21.3087133075417,21.3106296756719,21.3159135497138,21.3159135497138,21.340086444012,21.3412031079085,21.3639701859783,21.3817471552506,21.3862012418522,21.3892386107138,21.3920304286186,21.396739674057,21.4014827610122,21.414529134888,21.4603540452707,21.4742482158436,21.4781314893739,21.4798087319523,21.4875829268124,21.4973080384005,21.4998034229448,21.5034120972231,21.5381469652284,21.5514625405691,21.5525805617302,21.6245400751426,21.6306246712065,21.6342510745708,21.6503619683367,21.6881254590138,21.6923102438873,21.8245305230332,21.8509230610954,21.8698257495875,22.0670311160385,22.0812037580584,22.1164871633938,22.1320264253002,22.1517384882524,22.1723108743205,22.1851027130601,22.1881520248654,22.2198215860574,22.2267477544789,22.2498289803676,22.2517344990074,22.2795316135962,22.2842516774922,22.3203730489229,22.3237017115721,22.3487036111959,22.3490378011125,22.3526082059545,22.548298456525,22.5980631016669,22.6374673580289,22.6834848977063,22.6838654290495,22.6878351732776,22.707475071365,22.7135243041838,22.7150438644019,22.7193310023674,22.7214350933031,22.7216740382171,22.7250828936351,22.7251234092472,22.7269522985009,22.7389374140145,22.7565269198261,22.7610011134069,22.7617527074753,22.7708373643603,22.7779657372022,22.780017306839,22.7806358282174,22.7870440614144,22.7889346798345,22.7970141718961,22.8043914205191,22.8113052544599,22.8148428826107,22.8150886689113,22.8302930920103,22.8314938221611,22.8351521658943,22.8426357860217,22.8427711336466,22.8469445035107,22.8480462729253,22.8480850842646,22.8537539766953,22.8557531349836,22.8590125133108,22.8650010829228,22.8685692545202,22.8710890679373,22.8760898259493,22.876792507616,22.8832581858955,22.8833776534509,22.8843973196321,22.8852270487339,22.8867175524778,22.8867273611116,22.8877577944981,22.888619094963,22.8886674405803,22.8894872102268,22.8948283701027,22.8966772142458,22.8992971057728,22.8993170834898,22.9003372211428,22.9016821661869,22.9026932008736,22.9027008870683,22.9051426569014,22.9063415326243,22.9105323121383,22.915203223829,22.9178497899964,22.9183950507829,22.918597495016,22.9386322692361,22.9403919990806,22.9458253909755,22.9561236524778,22.962086138081,22.9644140328423,22.9682927873426,22.9684754751422,22.9685218154895,22.9760319361482,22.9770232822815,22.9841925256431,22.986859544952,22.9870095503698,22.9888228524035,22.9915625000412,22.9921078979788,22.9954546153042,22.9967352089817,22.9971050518756,23.0029225862653,23.0030644916107,23.0047479958044,23.0096091991843,23.0133563049702,23.014376811585,23.0186885033132,23.0209397069456,23.0254039807687,23.0421685929774,23.043374760706,23.0487052114812,23.0546153228404,23.0573879959102,23.0662176273004,23.0687455445522,23.0725972991467,23.07276031742,23.0747403829133,23.0809599181078,23.0827921018931,23.0829597205514,23.0839549223731,23.0886600976478,23.0911346446024,23.0926255058489,23.0996009121131,23.1010714226023,23.1026244176171,23.1064351027446,23.1070503289724,23.1078353853123,23.1078903154253,23.1079299517781,23.1083572243095,23.1120602929824,23.1126013620465,23.1136370614133,23.1178415513153,23.1244466304042,23.1252209119405,23.1256315987057,23.1272020184828,23.1296863367151,23.1418054267231,23.1437308651462,23.1470607648091,23.1472954972936,23.1472946925788,23.1482960115802,23.1522616221334,23.1523150875755,23.1533808255991,23.158671301695,23.1596910561924,23.1604173177807,23.1612110332065,23.1614600542101,23.1616664806121,23.1627957881444,23.1641604902389,23.1666277956478,23.1729970833811,23.1777194896021,23.182598354977,23.1846495736691,23.1865017953228,23.1892552064581,23.1942762511438,23.2084910618589,23.211337190802,23.2116366280373,23.2175960749898,23.2189618475758,23.2359241446354,23.2653534735005,23.2720613680005,23.3042438685512,23.3089831068604,23.3162024208363,23.3285641258146,23.3590687930725,23.5150873089122,21.4078083935918,21.4080868474535,21.049345981818,21.0376518761364,21.354252912695,21.3572556150304,21.3567349948645,21.3530783441723,21.4403102534525,21.3591980885674,21.4109636431754,21.3925333094889,21.4066946071033,21.4066946071033,21.3958587813977,21.5378051647988,21.1644863059081,21.1679671782697,21.1668680668311,21.1711449030358,21.2441979339605,21.1233604015086,22.0208597894171,22.0329621592785,21.2380883870489,21.2369690853153,21.2386418204112,21.2761897616018,21.2444731156645,21.2236385583199,21.2233639477802,21.2494714108055,21.2175310031184,21.3111413023177,21.3065504645412,21.3030233644439,21.299170389986,21.2998330019863,21.2980425906629,21.2910146446711,21.304488735505,21.3061365223259,21.4055875016249,21.4075295181949,21.5397466440254,21.6086789222867,21.6228088586426,21.6314141432256,21.3364236761532,21.3361396583275,21.3617019901087,21.3483668112517,21.3580900774139,20.8389284016862,20.8411429715075,21.4728115218861,21.4703102711116,21.284468375145,21.2444725325979,21.324754537538,21.3230909447227,21.3217019235944,21.3737659857952,21.3758633544766,21.3750241458873,22.0039102216127,21.0939270449583,21.0778145971408,21.1344729176166,21.3291976384989,21.3361427900283,21.0361508380358,21.3084603980655,21.2900287992862,21.2897559828216,21.2939200499372,21.2855853845705,21.286139723805,21.2953049073354,21.2822514420582,21.2875219689291,21.2794756911944,21.300589797754,21.2839167307257,21.2864184021278,21.2819690609855,21.2872565648892,21.2836450764576,21.1786702283557,21.1789188212396,21.1716925257332,21.174751437221,21.1742007015786,21.1803144248795,21.1850258312271,21.1730895852462,21.1711416982972,21.2297510008354,21.2739131700948,21.219986669469,21.2178029727668,21.2214232866204,21.2266949954996,21.1225351942126,20.9858645806191,21.1228048089014,21.0022762821349,20.9986481830506,21.0033639855449,21.0044716417612,20.9855845379242,20.9989226347552,20.997533664095,21.3921605904986,21.4043695166249,21.4021448274631,21.434075753197,21.2009209889563,21.190031394544,21.2655920654802,21.2232848950996,21.2255893475755,21.2197486467285,21.1255894253282,21.2200277322794,21.2433568228198,20.9728122317689,20.9764268002932,20.9447511030538,20.9475347680119,20.9436410552119,20.9367044018439,20.9403072748051,20.625588276647,20.6194853653007,20.611708618398,20.6139229435971,20.6272552268759,20.6242108045562,20.6280894667116,20.6278129972471,20.6547637756624,20.6319845420359,21.2478045352725,21.3222530347029,21.3322533517234,21.6011409217507,21.3803120701091,21.9616947431543,20.5565956107355,21.3797527735837,21.3803050619126,21.2003071852527,21.3449035599135,21.2894705440797,21.3439204663291,21.3272451811968,21.7194621487015,21.6511347339879,21.6277997496594,21.6450588899578,21.6836086409296,21.6830819153787,21.6878075749785,21.6377977713406,21.6964167120462,21.6414272483161,21.6250285981727,21.2059227119073,21.2084719908071,21.5172550349024,21.1594706979942,21.2253052062113,21.4998452661407,21.0314940041527,21.3876527524795,20.5878220647079,20.8572507136132,20.847818035272,21.8525230898493,20.8547567890511,20.8530599849146,20.8458623297341,20.8467003933643,21.1930810010035,21.1914148040222,21.1916949006995,21.1975297386639,22.174002074153,21.3412018583544,21.1691576034872,21.4989219194693,21.0922575107159,21.0844719450974,21.4148001252733,21.4742942937912,22.1180729773643,21.4619721997981,22.0686275744461,21.310308307754,21.3014204541728,20.6117013509279,20.5992099730656,20.6005971066221,20.5725385585492,20.5615298146467,20.5639294288091,21.1983651910345,21.2772490812507,20.8505915191752,21.3920266770938,21.3642339509961,22.321448250249,22.3502992345001,21.0239198490568,20.6266389470651,20.6572598904013,21.3159569374811,21.5819680058273,21.3428028535895,21.299755828155,20.6258744962039,20.6811479226391,20.6372614742501,21.211699696654,21.2017003905432],null,null,null,{"clickable":true,"draggable":false,"keyboard":true,"title":"","alt":"","zIndexOffset":0,"opacity":1,"riseOnHover":false,"riseOffset":250},["Beba Veche - in the ditch","Dudestii Vechi - Dragomirs' hill","Nerau - Hunca Mare","Nerau - Dogans' hill","Cenad - Habitation Area","Nerau - The south canal","Nerau - The east canal Gigosin","Vizejdia - La Hunca","Sannicolau Mare - Viile","Archaeological site from Sannicolaul Mare - Seliste","Early medieval cemetery from Nadlac-Lutarie","Earthwall from Saravale-santul roman","Archaeological site from Nadlac - Freeway Nadlac-Arad (Km 3+483-3+935 )","Archaeological site from Nadlac - situated 3 M (Freeway Nadlac - Arad, lot 1, km. 2+020-2+200)","Archaeological site from Nadlac - situated 2 M (Freeway Nadlac - Arad, lot 1, km. 1+125 - 1+440)","Archaeological site from Nadlac - Freeway Nadlac-Arad (Km 1+285-1+510 )","Archaeological site from Nadlac - situated 1 M (Freeway Nadlac - Arad, lot 1, km. 0+000 - 0+300)","Tumulus VI-VII (Neolithic Epoch and Bronze Age) from Checea - In hotarul satului (village district)","Archaeological site from Periam - hill with ditch","Archaeological site from Nadlac - Freeway Nadlac-Arad (Km 8+225-8+560)","Medieval settlement from Nadlac - Freeway Nadlac-Arad (Km 10+660-11+120)","Archaeological site from Pecica - santul Mare (Big ditch)","Archaeological site from Pecica - Freeway Nadlac-Arad (Km 18+605-18+890)","Medieval fortress from Satchinez - Gradiste","Archaeological site from Becicherecu Mic - Satul vechi (Old village)","Archaeological site from Pecica - Freeway Nadlac-Arad (Km 21+390-21+820)","Archaeological site from Pecica - Freeway Nadlac-Arad (Km 21+820-22+155)","Medieval settlement from Pecica - Freeway Nadlac-Arad (Km 23+290-23+880)","Medieval settlement from Pecica - Freeway Nadlac-Arad (Km 22+750-23+250)","Archaeological site from Hodoni - Pusta","Archaeological site from Hodoni - La Pocioroane","Medieval settlement from Pecica - Freeway Nadlac-Arad (Km 26+820-27+235)","Archaeological site from Pecica - Freeway Nadlac-Arad (Km 27+300-27+575)","Archaeological site from Pecica - Freeway Nadlac-Arad (Km 28+575-28+900)","Medieval settlement from Pecica - Freeway Nadlac-Arad (Km 28+910-29+270)","Medieval settlement from Pecica - Freeway Nadlac-Arad (Km 29+560-29+840)","Archaeological site from Felnac - Complexul porcine","Medieval settlement from Pecica - Freeway Nadlac-Arad (Km 30+710-31+045)","Archaeological site from Timisoara - Cioreni","Roman wall from Chisoda - Valu roman (roman rampart)","Neolithic settlement from Chisoda - Livezile","Archaeological site from sag-Mlaca","Brone Age tell from Voiteg - La Vii SV","Fortress from Sanandrei La Cetatuie","Fortifications from the Timisoara fortress - Parcul Botanic (Botanic Garden)","Public fountain from Timisoara","Archaeological site from Giroc Saliste","Bronze Age settlement from Seceani Viile Vinganilor","Archaeological site from Pischia - Freeway Arad-Timisoara (Km.38+300 - 38+700)","Archaeological site from Padureni-Pusta Mica","Medieval fortification from Opatita - Calasturi","Archaeological site from Timisoara - Padurea Verde (green wood)","Archaeological site from Giroc - Mescal","Archaeological site from Unip - Dealu Cetatuica","Archaeological site from Mosnita Veche - Satul batran (Old Village)","Archaeological site from Moravita - Islaz","Archaeological site from Arad- baypass beltway from Arad - km. 12+250-11+950 (Freeway)","Medieval fortress from Seceani - La cetate (To the fortress)","Archaeological site from Stanciova - Gradiste","Archaeological site from Giarmata - Cetatuica","Archaeological site from Unip - Ocoale","Medieval monastery from Remetea Mare - fortress","Archaeological site from Pischia-Padurea Pischia sud-est","Neolithic tell from the Bucovat period - Gruniul cu cremene","Archaeological site from Vladimirescu - La cetate (To the fortress)","Archaeological site from Remetea Mare - Gomila lui Gabor","Medieval basilica from Vladimirescu - La Bisericuta (To the little church)","Fortification made from soil from Dragsina-Sighed","Medieval fortification from Ianova - cetatea Turceasca (Turkish Fortress)","Medieval fortress from Masloc - Turkish ditch ","Archaeological site from Izvin - Dupa Vii","Medieval site from Frumuseni - manastirea Bizere (Bizere monastery)","Post- Roman settlement from Herneacova-Fantana rece (Cold fountain)","Earthwall from Alios drumul Nazdravenilor (Nazdravenilor way)","Fortified settlement from Herneacova - fortress","Medieval fortress from Alios : Turkish Fortress (cetate Turceasca)","Bronze Age fortification from Alios Valley Aliosu","Medieval settlement from Duboz-nord-vest","Archaeological site from Zabrani - Dealul Pietrei (The stone hill)","Post-Roman earthwall from Sambateni - La Iarcuri","The fort belonging to the IV Legion of Flavia Felixand, the roman settlement from Berzovia","Middle Ages fortress and settlement from Covasant - Tornea","Archaeological site from Topolovatu Mare-Joamba","Archaeological site from Cladova - Dealul Carierei","Archaeological site from Pancota - Turkish Fortress (cetate Turceasca)","Archaeological site from Lucaret-CIrjna","Fortification made from soil from Targoviste-Targoviste Sud","Tumului III and IV from an unknown epoch from Checea - In hotarul satului (village district)","Medieval church from Resita - Ogasele (Cities)","The medieval ensemble from Manastiur - La manastire (The monastery)","The settlement, type Balta Sarata , from Surducu Mic-ses","Medieval fortification from Jdioara- fortress","Archaeological site from Bulci - La cetate ( To the fortress)","Archaeological site from Berindia - La cetate (To the fortress)","Medieval fortress from Faget - fortress","Roman city Municipal Tibiscum - Iaz - Traianu","Roman fort and vicus (municipal Tibiscum) from Jupa - cetate (Fortress)","Roman temple from Caransebes - Sat Batran (Old village )","Archaeological site from Savarsin - Dealul Cetatuia (Cetatuia hill)","Roman building from Bucosnita - Saliste","The cave complex from Moneasa - Hoanca Coului","Medieval fortress from Margina - Lanu Holdele Lungi","Medieval trade fair from Margina - Lanu Holdele Lungi","Palaeolithic settlement from Romanesti - Dumbravita","Palaeolithic habitation from Cosava-Dambu Ples","Archaeological site from Romanesti - Varful lui Filip (The top of Filip)","Neolithic settlement from Pojoga - Pestera Gaura Scroafei (Gaura Scroafeis´ cave)","Roman fortification from Bucosnita - Lunca","Prehistoric settlement from Bradatel- Deal","settlement soimus from Brotuna- Coasta Cremenea","Archaeological site from Runcu Mare - Pestera from Runcu Mare","Roman Age exploitation from Caraci- valea steampurilor (steampuriloes' valley)","Roman Age exploitation from Caraci- Adamul Nou","Archaeological site from tebea - Dealul Magura (Magura hill)","Cache of coins from Baia de Cris- Gura Voinii","Franciscan monastery ensemble from Baia de Cris","Bronze Age settlement from Baia de Cris- Fantana Borchii (Borchii fountain)","Dacian settlement from Bretea- Muresana-Magura Branisca","Prehistoric settlement from tebea - Rusti","Gold mine from Baia de Cris- La Ptincuri","Roman settlement from Zeicani - Saivan","Roman settlement from Zeicani - Ruini","Roman settlement from Poieni - Parau","Archaeological site from Cerisor - Pestera Cauce (Cauce cave)","Cotofeni settlement from Cave number 3 from Cerisor","Eneolithic Period settlement from Branisca- Pe hotar","Settlement in the cave from Ribicioara - Avenul Cave with incision from Gaura Cizmii","Cotofeni settlement from Cerisor- Cave numer 4","Monastary complex Vaca from Crisan","Archaeological site from Cerisor- La Parloage","Archaeological site from Dumbrava- Pestera cu Apa (Cave with water)","Colonia Ulpia Traiana Augusta Dacica Sarmizegetusa","Settlement Cotofeni from Cherghes- Pestera Magura","Roman epoch brick construction from Hobita-Gradiste - Dealul Sucionilor (Sucionilor hill)","Archaeological site from Valioara - La Caramizi","Settlement from Nandru - Pestera Curata (Clean Cave)","Archaeological site from Vetel-Micia","Archaeological site from Dealu Mare - Rusti","Roman Epoch settlement from Minita- Acetylene factory","","Neolithic settlement from Mintia - Gerhat","Neolithic settlement from Josani - Jumatati","Neolithic settlement from Livezi - Cetatuie","Fortified settlement (Latène Period) from Cozia - Varful Piatra Coziei","Roman settlement from Josani - La Caramizi","Archaeological site from Almasu Sec","Medieval court Candestilor from Rau de Mori","Villa rustica from Carnesti- Mezeinita","Medieval church from Carnesti","Archaeological site from Farcadin - Maieriste","Villa rustica from Cincis-Cerna - La Popeasca","Archaeological site from Cincis-Cerna- Motel","Villa rustica from Unirea - Dealul Mangop","Archaeological site from Totesti - Movile","Neolithic settlement from Hunedoara- Pestera Nr. 2 (Hunedoara- cave number 2)","Neolithic settlement from Hunedoara- Pestera Nr. 1 ( Hunedoara- cave number 1)","Archaeological site from Hunedoara - Dealul Sanpetru (Sanpetru hill)","Archaeological site from Hunedoara - Strada Toamnei (Toamnei street)","Neolithic settlement from Hunedoara- Pomilor street, number 4","Corvinestilor fort - Hunedoara","Archaeological site from Hunedoara - Gradina castleului (Castle garden)","Prehistoric settlement from Cincis-Cerna - Curtea scolii (School garden)","Archaeological site from Hunedoara - Elisabeta Margineanu stree","Archaeological site from Hunedoara- Reformed cemetery","The church site sfarsitul lui Nicolaie (Nicolaies' end) and the prehistoric settlements from Hunedoara","Archaeological site from Hunedoara - Chizid","Archaeological site from Hunedoara- Piata Obor (Obor marked)","Settlement Cotofeni from Hunedoara - Gara CFR (CFR rail station)","Roman settlement from Hunedoara- Triaj"," Neolithic habitation from Unirea - Obreje","Neolithic - Eneolithic settlement from soimus - Avicola","Archaeological site from Craguis- Holda lui Boldus","Archaeological site from Sanpetru - Movila","Archaeological site from Craguis- Locul Uriasilor (Giants location)","Archaeological site from Sanpetru - La Maru (The Apple)","Roman settlement from Sacel - Curtea Taur (Taur garden)","Tumulus necropole (Bronze Age) from Silvasu de Jos - Dealul tapului (tapului hill)","The romanian church site Inaltarea Domnului from Nucsoara","Archaeological site from Hunedoara- Buituri","Medieval church from Vadu - Biserica Veche (Old Church)","Archaeological site from Vadu - cimitirul (Vadu-cemetery)","Medieval fortress from Malaiesti- Sub Brazi","Archaeological site from Salasu de Sus - sasa","Orthodox church from Pestera (Cave)","Archaeological site from Buces-Vulcan- La Izvor sub Coliba Barnei","Archaeological site from Santamaria-Orlea - Gradinile Coliconilor (Coliconilors' gardens)","Romanian church site Pogorarea end of Duh from Paros","Medievale reformed church site from Santamaria-Orlea","Archaeological site from Santamaria-Orlea - Terasa Grindanu","Archaeological site from Santamaria-Orlea - Troian","Archaeological site from SuADetate - Orlea tower","Archaeological site from Strei","Archaeological site from Strei","Roman way from Bucium-Orlea - Pod","Hallstatt settlement from SuADetate - Vatra Satului","Archaeological site from Strei - Canton CFR","Roman settlement from Rau Alb - Latura Cetatii","Medieval church from Coroiesti","Neolithic settlement from Rau Alb - fortress","Settlement Cotofeni from Ciopeia- Purcaretu","Archaeological site from Baiesti- Ferma Baiesti","Archaeological site (Romanian Age) from Calan - Aquae","Roman settlement from Streisangeorgiu - Ferma","Roman settlement from Dupa Piatra - Gura Cheii","Archaeological site from Santamaria de Piatra - Gradiste","Neolithic settlement from Strei-Sacel - Pe sesuri","Medieval complex from Streisangeorgiu - Streisangeorgiu monastery","Old romanian orthodox church from Rusor","Settlement Cotofeni from Santamaria de Piatra - Hotar","Dacian observation point from Baiesti- Cetatuie","Fortified settlement from Rapoltu Mare - Magura Uroiului","Archaeological site from Rapoltu Mare - Sedi","Archaeological site from Stanija - Mina Stanija (Stanija mine)","Archaeological site from Calan- Magura Calanului","Roman settlement from Rapoltu Mare - La Vie","Archaeological site from Jeledinti - Magura","Tumulus from Galbina - Mogaita","Bronze Age settlement from Balsa- Piatra Baltii","Roman necropole from Almasu Mic de Munte","Settlement Cotofeni from Bobalna- Avenul Cepturi","Archaeological site from Techereu - Dealul Fericeu (Fericeu hill)","Neolithic settlement from Rapoltu Mare - Bagadau","Bronze Age settlement from Balsa- Dealul Ceratului","Medieval orthodox church from Pui","Archaeological site from Rau Barbat - fortress","Archaeological site from Deva - Dealul Cetatii (Cetatii hill)","Settlement (Eneolithic Period) from Balsa - Deasupra Bisericii (Over the church)","Neolithic settlement from Rapoltu Mare - Plese","Villa rustica from Bobalna- Fantana lui Parau ","Bronze Age tumulus from Balsa - Dumbraita","Roman wall from Pui - Magura","Bronze Age settlement from Balsa- Piatra Vacarului","Cave from Balsa - Dosul Dobarlesei","Roman settlement from DIncu Mare","Bronze Age settlement from Balsa- Varful Muncelului","Archaeological site from Balsa- Piatra and ncuiusului","Prehistoric settlement from Turdas - La Lunca","Dacian fortification from Bosorod - valea Stupariei (Stupariei valley)","Villa rustica from valea Lupului (Wolf valley) - La Ruine","Settlement from Mada - Pestera Zidita","Tumulus necropole from Mada - Chiciorele","Hill from Mada - Pleasa Mica","Roman settlement from Livadia - Livezea","Archaeological site from Pricaz- Sitesului valley","Archaeological site from Ardeu - Cetateaua","The cave complex from Ardeu- Cave number 4, Pestera de Jos (The cave from below), Pestera Surpata Raiu and Pestera cetate (Fortress cave)","Settlement in the cave from Ohaba Ponor - sura Mare","Bronze Age settlement from Boiu - La Magulicea","Eneolithic settlement from Ponor - Pestera lui Cocolbea","Dacian supervision tower from Costesti- Ciocuta","Settlement in the cave from Ohaba Ponor - Bordu Mare","Archaeological site (Latène) from Costesti - Cetatuia Inalta","Fort from Costesti - Gradiste","Tower from Costesti - Poiana Pertii","The mound complex (unknown epoch) from Orastie - tatele Gorganului","Dacian fortress from Costesti - Blidaru","Dacian settlement from Costesti- La Curti","Settlement Cotofeni from Baru- Blidaru","Dacian settlement from Ohaba-Ponor","Dacian settlement from Costesti- church","Church site sfarsitul lui Ilie din Baru (The end of Ilie from Baru)","Settlement Cotofeni from Baru- church","Roman settlement from Orastioara de Sus - Piatra Gradistii","Latène settlement from Bucium - Carpenis","Roman necropole from Bucium- Botes, Corabia","Archaeological site from Ocolisu Mic - Apa Gradistii","Archaeological site (Romanain Age) from Cigmau - cetatea Uriasului (Giants' fortress)","Medieval fortress from Orastie","Fort from Costesti - Prisaca","Prehistoric settlement from Orastie - Dealul Pemilor X3 ","Settlement Turdas from Orastie - Dealul Pemilor X1","Archaeological site from Orastie - Dealul Pemilor X2","Archaeological site from Gradistea de Munte - Pestera 1 din Culmea Vartoapelor (The first cave in Culmea Vartoapelor)","Roman fortification from Baru - La fantana (To the well) ","Dacian settlement from Gradistea de Munte- Dealul Muncelului (Muncelului hill)","Latène fortification from Gradistea de Munte - Varful lui Hulpe","Latène settlement from Gradistea de Munte - Fetele Albe (White faces)","Archaeological site from Gradistea de Munte - Sarmizegetusa Regia","Dacian atelier from Gradistea de Munte- Caprareata","Archaeological site from Gradistea de Munte - Tampu","Dacian settlement from Romosel - Cioaca Gradistii","Archaeological site from Baru - La Comarnicel","Bazosu Nou 1","Bazosu Nou 2","Becicherecu Mic 1","Becicherecu Mic 2","Berecuta 1","Berecuta 2","Berecuta 3","Berecuta 4","Berini ","Bucovat 1","Bucovat 2","Bucovat 3","Bucovat 4","Bucovat 5","Bucovat 6","Cadar ","Carani 1","Carani 3","Carani 4","Carani 6","Cerneteaz","Ciacova","Ciresu 1","Ciresu 2","Cornesti 2_1","Cornesti 3","Cornesti 2_4","Cornesti 2_5","Cornesti 7","Cornesti 8","Cornesti 9","Cornesti 10","Cornesti 11","Cruceni","Dejan 1","Dejan 2","Dejan 3","Dejan 4","Dejan 5","Dejan 6","Dejan 7","Dejan 8","Dragsina 1","Dragsina 2","Duboz","Ersig 1","Ersig 2","Ersig 3","Firiteaz 1","Firiteaz 2","Firiteaz 3","Firiteaz 4","Firiteaz 5","Foeni 1","Foeni 2","Frumuseni 1","Frumuseni 2","Ghiroda","Giroc 2","Hunedoara Timisana 1","Hunedoara Timisana 2","Hunedoara Timisana 3","Icloda 1","Icloda 2","Icloda 3","Maguri ","Mailat 2","Mailat 3","Manastur","Mosnita Veche 1","Mosnita Veche 2","Munar ","Murani 1","Murani 2","Murani 3","Murani 5","Murani 6","Murani 7","Murani 8","Opatita 1","Opatita 2","Opatita 3","Opatita 4","Opatita 5","Opatita 6","Opatita 7","Opatita 8","Opatita 9","Ortisoara 1","Ortisoara 3","Ortisoara 4","Ortisoara 5","Ortisoara 6","Ortisoara 7","Ortisoara 8","Ortisoara 9","Ortisoara 10","Ortisoara 11","Padureni 1","Padureni 2","Padureni 3","Padureni 4","Padureni 5","Parta 1","Pecica 1","Pecica 2","Peciu Nou 1","Peciu Nou 2","Peciu Nou 3","Peciu Nou 4","Peciu Nou 5","Peciu Nou 6","Peciu Nou 7","Remetea Mare 1","Remetea Mare 2","Remetea Mare 3","Sacosu Turcesc ","Sag 1","Sag 2","Sagu","Sanandrei 1","Sanandrei 2","Sanandrei 3","Sanandrei 4","Sanandrei 5","Sanandrei 6","Sanmartinu Sarbesc 2","Sanmartinu Sarbesc 3","Sanmartinu Sarbesc 4","Sanmartinu Sarbesc 5","Sanmartinu Sarbesc 6","Sanmartinu Sarbesc 7","Sanmartinu Sarbesc 8","Sannicolau Mare 1","Sannicolau Mare 2","Sannicolau Mare 3","Sannicolau Mare 4","Sannicolau Mare 5","Sannicolau Mare 6","Sannicolau Mare 7","Sannicolau Mare 8","Sannicolau Mare 9","Sannicolau Mare 10","Seceani 1","Seceani 3","Seceani 4","Siria ","Stamora Romana ","Tapia ","Teremia Mare","Tisa Noua 1","Tisa Noua 2","Turnu","Unip 2","Unip 3","Unip 4","Urseni 2","Valeapi","Vermes 1","Vermes 2","Vermes 3","Vermes 5","Vermes 6","Vermes 7","Vermes 8","Vermes 9","Vermes 10","Vermes 11","Vinga 1","Vinga 2","Zabrani ","Timisoara ''Cioreni''","Fortificatile cetatii Timisoara ","Alios- ''Cetatea turceasca''","Becicherecu Mic - ''Dealul Crucii''","Tell-ul de la Bucovat","Cetatea Morisena din Cenad ","Camp de tumului din Checea (1)","Camp de tumului din Checea (2)","Camp de tumului din Checea (3)","Camp de tumului din Checea (4)","Camp de tumului din Checea (5)","Camp de tumului din Checea (6)","Camp de tumului din Checea (7)","Tell-ul de la Chisoda","'Val roman'' din Chisoda 2 A","'Val roman'' din Chisoda 2 B","'Val roman'' din Chisoda 2 C","Cetatea din Faget","Cetatuica din Giarmata","Cetate din Giroc ","Asezare de la Herneacova","Situl archaeologic de la Hodoni","Asezare de la Hodoni","'Cetate turceasca''de la Ianova","Asezare din Izvin","Cetatea Jdioarei","Cetatea Masloc ","Asezare de la Manastiur ","Asezare de la Dejan","Tumuli din Mosnita Veche","Camp de tumuli din Nerau (1)","Camp de tumuli din Nerau (2)","Camp de tumuli din Nerau (3)","Camp de tumuli din Nerau (4)","Camp de tumuli din Nerau (5)","Camp de tumuli din Nerau (6)","Tumuli din Ofsenita","Fortificatia din Opatita","Necropola din Periam","'Gomila lui Gabor'' - Remetea Mare ","Manastire din Remetea Mare","Asezare din Romanesti","'Pesterea cu Apa''- Romanesti","Cetate din Satchinez","Asezare din Sannicolau Mare","Asezare din Sannicolau Mare","Cetate din Seceani","Asezare din Stanciova","Asezare din Unip","'Dealul Cetatuica'' din Unip","Vizejdia - Tumul (1)","Vizejdia - Tumul (2)","Vizejdia - Tumul (3)","Asezare de la Voiteg","Sit de la Voiteg"],null,null]}],"limits":{"lat":[45.2552138072707,46.4557866317873],"lng":[20.2645160214351,23.5150873089122]}},"evals":[],"jsHooks":[]}</script>
</article></slide><slide class=''><hgroup><h2>Plot it 2.0</h2></hgroup><article id="plot-it-2.0-2" class="smaller ">
<p>Another great package for interactive visualization: <a href='http://environmentalinformatics-marburg.github.io/web-presentations/20150723_mapView.html' title=''>mapview</a></p>
<p><strong>Question:</strong> What is the drawback of these interactive mapping approaches?</p>
</article></slide><slide class=''><hgroup><h2>Export to Shapefile</h2></hgroup><article id="export-to-shapefile" class="smaller ">
<pre class = 'prettyprint lang-r'>writeOGR(obj = sites,
dsn = "data",
layer = "A_Sites",
driver = "ESRI Shapefile",
overwrite_layer = TRUE
)</pre>
<pre >## Warning in writeOGR(obj = sites, dsn = "data", layer = "A_Sites", driver =
## "ESRI Shapefile", : Field names abbreviated for ESRI Shapefile driver</pre>
<pre class = 'prettyprint lang-r'>list.files("./data")</pre>
<pre >## [1] "A_Sites.dbf" "A_Sites.prj" "A_Sites.shp" "A_Sites.shx"
## [5] "FS_UTM.csv" "FS_UTM.xlsx" "srtm_41_03.tif"</pre>
</article></slide><slide class=''><hgroup><h2>Export to graphics file</h2></hgroup><article id="export-to-graphics-file" class="smaller ">
<p>not very useful; just to show how easy it is</p>
<pre class = 'prettyprint lang-r'>png("data/A_Sites.png")
plot(sites)
dev.off()
## pdf, svg, postscript
?grDevices
?cairo</pre>
</article></slide><slide class='segue dark nobackground level1'><hgroup class = 'auto-fadein'><h2>Play.</h2></hgroup><article id="play." class="smaller unnumbered">
<div id="refs" class="references">
</div></article></slide>
<slide class="backdrop"></slide>
</slides>
<!-- dynamically load mathjax for compatibility with self-contained -->
<script>
(function () {
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML";
document.getElementsByTagName("head")[0].appendChild(script);
})();
</script>
<!-- map slide visiblity events into shiny -->
<script>
(function() {
if (window.jQuery) {
window.jQuery(document).on('slideleave', function(e) {
window.jQuery(e.target).trigger('hidden');
});
window.jQuery(document).on('slideenter', function(e) {
window.jQuery(e.target).trigger('shown');
});
}
})();
</script>
</body>
</html>